Skip to content

Commit bcb20be

Browse files
committed
next 16: Extension host worker and tsserver only working in vite for now. finding a solution is deferred
1 parent aee4405 commit bcb20be

File tree

12 files changed

+44
-574
lines changed

12 files changed

+44
-574
lines changed

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

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@
44
* ------------------------------------------------------------------------------------------ */
55

66
import type { IFileWriteOptions } from '@codingame/monaco-vscode-files-service-override';
7+
import type { ILogger } from '@codingame/monaco-vscode-log-service-override';
78
import type { MonacoEditorProps } from '@typefox/monaco-editor-react';
8-
import type { Logger } from 'monaco-languageclient/common';
99
import type { EditorAppConfig } from 'monaco-languageclient/editorApp';
1010
import type { LanguageClientConfig } from 'monaco-languageclient/lcwrapper';
1111
import type { MonacoVscodeApiConfig, OverallConfigType } from 'monaco-languageclient/vscodeApiWrapper';
@@ -17,7 +17,7 @@ export type ExampleAppConfig = {
1717
MonacoEditorReactComp: React.FC<MonacoEditorProps>;
1818
};
1919

20-
export const setupLangiumClientExtended = async (languageServerWorker: Worker, vscodeApiWorkerFactory: (logger?: Logger) => void): Promise<ExampleAppConfig> => {
20+
export const setupLangiumClientExtended = async (languageServerWorker: Worker, enableExtHostWorker: boolean, vscodeApiWorkerFactory: (logger?: ILogger) => void): Promise<ExampleAppConfig> => {
2121

2222
// perform all imports dynamically
2323
const getKeybindingsServiceOverride = (await import('@codingame/monaco-vscode-keybindings-service-override')).default;
@@ -95,7 +95,7 @@ takesString(0);`;
9595
$type: overallConfigType,
9696
logLevel: LogLevel.Debug,
9797
advanced: {
98-
enableExtHostWorker: false
98+
enableExtHostWorker
9999
},
100100
serviceOverrides: {
101101
...getKeybindingsServiceOverride()

verify/next/app/page.tsx

Lines changed: 11 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,9 @@
55

66
'use client';
77

8-
import dynamic from 'next/dynamic';
9-
import type { Logger } from 'monaco-languageclient/common';
8+
import type { ILogger } from '@codingame/monaco-vscode-log-service-override';
109
import type { WorkerLoader } from 'monaco-languageclient/workerFactory';
10+
import dynamic from 'next/dynamic';
1111
import './views.editorOnly.css';
1212

1313
export default function Page() {
@@ -28,18 +28,15 @@ export default function Page() {
2828
const defineWorkerLoaders: () => Partial<Record<string, WorkerLoader>> = () => {
2929
const defaultEditorWorkerService = () => new mlcWFModule.Worker(
3030
new URL('../bundle/editorWorker/editor.worker.js', import.meta.url),
31-
// new URL('@codingame/monaco-vscode-api/workers/editor.worker', import.meta.url),
3231
{ type: 'module' }
3332
);
3433
// const defaultExtensionHostWorkerMain = () => new mlcWFModule.Worker(
35-
// new URL('../bundle/extHostWorker/extensionHost.worker.js', import.meta.url),
36-
// // new URL('@codingame/monaco-vscode-api/workers/extensionHost.worker', import.meta.url),
34+
// new URL('@codingame/monaco-vscode-api/workers/extensionHost.worker', import.meta.url),
35+
// // new URL('../bundle/extHostWorker/extensionHost.worker.js', import.meta.url),
3736
// { type: 'module' }
3837
// );
3938
const defaultTextMateWorker = () => new mlcWFModule.Worker(
4039
new URL('../bundle/textmateWorker/worker.js', import.meta.url),
41-
// new URL('../node_modules/@codingame/monaco-vscode-textmate-service-override/worker', import.meta.url),
42-
// new URL('@codingame/monaco-vscode-textmate-service-override/worker', import.meta.url),
4340
{ type: 'module' }
4441
);
4542
return {
@@ -49,13 +46,13 @@ export default function Page() {
4946
};
5047
};
5148

52-
const configureWorkerFactory = (logger?: Logger) => {
49+
const configureWorkerFactory = (logger?: ILogger) => {
5350
mlcWFModule.useWorkerFactory({
5451
workerLoaders: defineWorkerLoaders(),
5552
logger
5653
});
5754
};
58-
const appConfig = await setupLangiumClientExtended(languageServerWorker, configureWorkerFactory);
55+
const appConfig = await setupLangiumClientExtended(languageServerWorker, false, configureWorkerFactory);
5956

6057
return () => <appConfig.MonacoEditorReactComp
6158
style={{ 'height': '100%' }}
@@ -65,11 +62,11 @@ export default function Page() {
6562
onVscodeApiInitDone={async () => {
6663
console.log('MonacoEditorReactComp editor started.');
6764

68-
openDocument('/workspace/langium-types.langium');
69-
openDocument('/workspace/langium-grammar.langium');
70-
openDocument('/workspace/hello.ts');
71-
// showDocument('/workspace/langium-grammar.langium');
72-
showDocument('/workspace/hello.ts');
65+
await openDocument('/workspace/langium-types.langium');
66+
await openDocument('/workspace/langium-grammar.langium');
67+
await openDocument('/workspace/hello.ts');
68+
await showDocument('/workspace/hello.ts');
69+
await showDocument('/workspace/langium-grammar.langium');
7370
}} />
7471
}, {
7572
ssr: false

verify/next/app/vite.tsx

Lines changed: 13 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -3,32 +3,27 @@
33
* Licensed under the MIT License. See LICENSE in the package root for license information.
44
* ------------------------------------------------------------------------------------------ */
55

6-
import type { Logger } from 'monaco-languageclient/common';
6+
import type { ILogger } from '@codingame/monaco-vscode-log-service-override';
77
import type { WorkerLoader } from 'monaco-languageclient/workerFactory';
88
import ReactDOM from 'react-dom/client';
99

1010
export const createDynamicEditorComponent = async () => {
11-
// await import('@codingame/monaco-vscode-typescript-basics-default-extension');
12-
// await import('@codingame/monaco-vscode-typescript-language-features-default-extension');
13-
// await import('../bundle/tsserver/index.js');
11+
await import('@codingame/monaco-vscode-typescript-basics-default-extension');
12+
await import('@codingame/monaco-vscode-typescript-language-features-default-extension');
1413

15-
// const { workerFactory, setupLangiumClientExtended, openDocument, showDocument } = await import('./langium-dsl/config/extendedConfig.js');
16-
const { workerFactory, setupLangiumClientExtended, openDocument, showDocument } = await import('../bundle/langium-dsl/config/extendedConfig.js');
14+
const { workerFactory, setupLangiumClientExtended, openDocument, showDocument } = await import('./langium-dsl/config/extendedConfig.js');
1715

1816
const defineWorkerLoaders: () => Partial<Record<string, WorkerLoader>> = () => {
1917
const defaultEditorWorkerService = () => new workerFactory.Worker(
20-
// new URL('../bundle/editorWorker/editor.worker.js', import.meta.url),
21-
new URL('@codingame/monaco-vscode-editor-api/esm/vs/editor/editor.worker.js', import.meta.url),
18+
new URL('../bundle/editorWorker/editor.worker.js', import.meta.url),
2219
{ type: 'module' }
2320
);
2421
const defaultExtensionHostWorkerMain = () => new workerFactory.Worker(
25-
new URL('../bundle/extHostWorker/extensionHost.worker.js', import.meta.url),
26-
// new URL('@codingame/monaco-vscode-api/workers/extensionHost.worker', import.meta.url),
22+
new URL('@codingame/monaco-vscode-api/workers/extensionHost.worker', import.meta.url),
2723
{ type: 'module' }
2824
);
2925
const defaultTextMateWorker = () => new workerFactory.Worker(
3026
new URL('../bundle/textmateWorker/worker.js', import.meta.url),
31-
// new URL('@codingame/monaco-vscode-textmate-service-override/worker', import.meta.url),
3227
{ type: 'module' }
3328
);
3429

@@ -39,7 +34,7 @@ export const createDynamicEditorComponent = async () => {
3934
};
4035
};
4136

42-
const configureDefaultWorkerFactory = (logger?: Logger) => {
37+
const configureDefaultWorkerFactory = (logger?: ILogger) => {
4338
workerFactory.useWorkerFactory({
4439
workerLoaders: defineWorkerLoaders(),
4540
logger
@@ -52,7 +47,7 @@ export const createDynamicEditorComponent = async () => {
5247
type: 'module',
5348
name: 'Langium LS',
5449
});
55-
const appConfig = await setupLangiumClientExtended(languageServerWorker, configureDefaultWorkerFactory);
50+
const appConfig = await setupLangiumClientExtended(languageServerWorker, true, configureDefaultWorkerFactory);
5651

5752
return () => <appConfig.MonacoEditorReactComp
5853
style={{ 'height': '100%' }}
@@ -62,11 +57,11 @@ export const createDynamicEditorComponent = async () => {
6257
onVscodeApiInitDone={async () => {
6358
console.log('MonacoEditorReactComp editor started.');
6459

65-
openDocument('/workspace/langium-types.langium');
66-
openDocument('/workspace/langium-grammar.langium');
67-
// openDocument('/workspace/hello.ts');
68-
showDocument('/workspace/langium-grammar.langium');
69-
// showDocument('/workspace/hello.ts');
60+
await openDocument('/workspace/langium-types.langium');
61+
await openDocument('/workspace/langium-grammar.langium');
62+
await openDocument('/workspace/hello.ts');
63+
await showDocument('/workspace/hello.ts');
64+
await showDocument('/workspace/langium-grammar.langium');
7065
}} />
7166
};
7267

verify/next/next-env.d.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
/// <reference types="next" />
22
/// <reference types="next/image-types/global" />
3-
/// <reference path="./.next/types/routes.d.ts" />
3+
import "./.next/dev/types/routes.d.ts";
44

55
// NOTE: This file should not be edited
66
// see https://nextjs.org/docs/app/api-reference/config/typescript for more information.

0 commit comments

Comments
 (0)