Skip to content

Commit 9ea9749

Browse files
committed
Merge branch 'nextjs-16' into verify
2 parents de84f4c + bcb20be commit 9ea9749

24 files changed

+1800
-2076
lines changed

eslint.config.mjs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ export default [{
1515
'**/.chrome/**/*',
1616
'**/node_modules/**/*',
1717
'**/dist/**/*',
18+
'**/bundle/**/*',
1819
'**/lib/**/*',
1920
'**/out/**/*',
2021
'**/bin/**/*',

verify/angular/package-lock.json

Lines changed: 0 additions & 231 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

verify/next/app/langium-dsl/config/extendedConfig.ts

Lines changed: 40 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,29 @@
11
/* --------------------------------------------------------------------------------------------
2-
* Copyright (c) 2024 TypeFox and others.
2+
* Copyright (c) 2025 TypeFox and others.
33
* Licensed under the MIT License. See LICENSE in the package root for license information.
44
* ------------------------------------------------------------------------------------------ */
55

66
import type { IFileWriteOptions } from '@codingame/monaco-vscode-files-service-override';
7-
import type { ExampleAppConfig } from 'monaco-languageclient-examples';
7+
import type { ILogger } from '@codingame/monaco-vscode-log-service-override';
8+
import type { MonacoEditorProps } from '@typefox/monaco-editor-react';
89
import type { EditorAppConfig } from 'monaco-languageclient/editorApp';
910
import type { LanguageClientConfig } from 'monaco-languageclient/lcwrapper';
1011
import type { MonacoVscodeApiConfig, OverallConfigType } from 'monaco-languageclient/vscodeApiWrapper';
1112

12-
export const setupLangiumClientExtended = async (): Promise<ExampleAppConfig> => {
13+
export type ExampleAppConfig = {
14+
vscodeApiConfig: MonacoVscodeApiConfig;
15+
languageClientConfig: LanguageClientConfig;
16+
editorAppConfig: EditorAppConfig;
17+
MonacoEditorReactComp: React.FC<MonacoEditorProps>;
18+
};
19+
20+
export const setupLangiumClientExtended = async (languageServerWorker: Worker, enableExtHostWorker: boolean, vscodeApiWorkerFactory: (logger?: ILogger) => void): Promise<ExampleAppConfig> => {
1321

1422
// perform all imports dynamically
1523
const getKeybindingsServiceOverride = (await import('@codingame/monaco-vscode-keybindings-service-override')).default;
16-
const getExtensionServiceOverride = (await import('@codingame/monaco-vscode-extensions-service-override')).default;
1724
const { InMemoryFileSystemProvider, registerFileSystemOverlay } = (await import('@codingame/monaco-vscode-files-service-override'));
1825
const { LogLevel } = (await import('@codingame/monaco-vscode-api'));
1926
const { Uri } = (await import('vscode'));
20-
const { configureDefaultWorkerFactory } = (await import('monaco-languageclient/workerFactory'));
2127
const { BrowserMessageReader, BrowserMessageWriter } = (await import('vscode-languageclient/browser.js'));
2228

2329
// base configurration
@@ -40,9 +46,15 @@ export const setupLangiumClientExtended = async (): Promise<ExampleAppConfig> =>
4046
const workspaceUri = Uri.file('/workspace');
4147
const langiumGrammarLangiumUri = Uri.file('/workspace/langium-grammar.langium');
4248
const langiumTypesLangiumUri = Uri.file('/workspace/langium-types.langium');
49+
const tsCodeUri = Uri.file('/workspace/hello.ts');
4350
const fileSystemProvider = new InMemoryFileSystemProvider();
4451
const textEncoder = new TextEncoder();
4552

53+
const code = `const takesString = (x: string) => {};
54+
55+
// you should see an error marker in the next line
56+
takesString(0);`;
57+
4658
const options: IFileWriteOptions = {
4759
atomic: false,
4860
unlock: false,
@@ -52,17 +64,12 @@ export const setupLangiumClientExtended = async (): Promise<ExampleAppConfig> =>
5264
await fileSystemProvider.mkdir(workspaceUri);
5365
await fileSystemProvider.writeFile(langiumGrammarLangiumUri, textEncoder.encode(exampleLangium), options);
5466
await fileSystemProvider.writeFile(langiumTypesLangiumUri, textEncoder.encode(langiumTypesLangium), options);
67+
await fileSystemProvider.writeFile(tsCodeUri, textEncoder.encode(code), options);
5568
registerFileSystemOverlay(1, fileSystemProvider);
5669

5770
const editorAppConfig: EditorAppConfig = {};
58-
59-
const workerFile = '/workers/langium-server.js';
60-
const worker = new Worker(workerFile, {
61-
type: 'module',
62-
name: 'Langium LS',
63-
});
64-
const reader = new BrowserMessageReader(worker);
65-
const writer = new BrowserMessageWriter(worker);
71+
const reader = new BrowserMessageReader(languageServerWorker);
72+
const writer = new BrowserMessageWriter(languageServerWorker);
6673

6774
const innerHtml = `<div id="editorsDiv">
6875
<div id="editors"></div>
@@ -88,13 +95,10 @@ export const setupLangiumClientExtended = async (): Promise<ExampleAppConfig> =>
8895
$type: overallConfigType,
8996
logLevel: LogLevel.Debug,
9097
advanced: {
91-
enableExtHostWorker: true
98+
enableExtHostWorker
9299
},
93100
serviceOverrides: {
94-
...getKeybindingsServiceOverride(),
95-
...getExtensionServiceOverride({
96-
enableWorkerExtensionHost: false
97-
})
101+
...getKeybindingsServiceOverride()
98102
},
99103
viewsConfig: {
100104
$type: 'ViewsService',
@@ -115,7 +119,7 @@ export const setupLangiumClientExtended = async (): Promise<ExampleAppConfig> =>
115119
'vitest.disableWorkspaceWarning': true
116120
})
117121
},
118-
monacoWorkerFactory: configureDefaultWorkerFactory,
122+
monacoWorkerFactory: vscodeApiWorkerFactory,
119123
extensions: [{
120124
config: {
121125
name: 'langium-example',
@@ -150,15 +154,30 @@ export const setupLangiumClientExtended = async (): Promise<ExampleAppConfig> =>
150154
connection: {
151155
options: {
152156
$type: 'WorkerDirect',
153-
worker
157+
worker: languageServerWorker
154158
},
155159
messageTransports: { reader, writer }
156160
}
157161
};
158162

163+
const comp = await import('@typefox/monaco-editor-react');
164+
159165
return {
160166
editorAppConfig,
161167
vscodeApiConfig,
162-
languageClientConfig
168+
languageClientConfig,
169+
MonacoEditorReactComp: comp.MonacoEditorReactComp
163170
};
164171
};
172+
173+
export const openDocument = async (uri: string) => {
174+
const { workspace } = (await import('vscode'));
175+
await workspace.openTextDocument(uri);
176+
}
177+
178+
export const showDocument = async (uri: string) => {
179+
const { window, Uri } = (await import('vscode'));
180+
await window.showTextDocument(Uri.file(uri));
181+
}
182+
183+
export * as workerFactory from 'monaco-languageclient/workerFactory';

verify/next/app/layout.tsx

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/* --------------------------------------------------------------------------------------------
2-
* Copyright (c) 2024 TypeFox and others.
2+
* Copyright (c) 2025 TypeFox and others.
33
* Licensed under the MIT License. See LICENSE in the package root for license information.
44
* ------------------------------------------------------------------------------------------ */
55

@@ -10,7 +10,12 @@ export default function RootLayout({
1010
}) {
1111
return (
1212
<html lang="en">
13-
<body>{children}</body>
13+
<body>
14+
{/* <script type="module">
15+
import { helloWorld } from './tester.js';
16+
</script> */}
17+
{children}
18+
</body>
1419
</html>
1520
);
1621
}

0 commit comments

Comments
 (0)