Skip to content

Commit a8234c4

Browse files
committed
Bring back pre-bundled workers. Add unit tests verifiying the correct usage.
- Add an additional test configuration only for classic monaco-editor test
1 parent 518290e commit a8234c4

39 files changed

+766
-327
lines changed

package-lock.json

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

packages/client/src/workerFactory.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ export type WorkerLoader = (() => Worker) | undefined;
1111
export interface WorkerFactoryConfig {
1212
workerLoaders: Record<string, WorkerLoader>;
1313
logger?: Logger;
14+
getWorkerOverride?: (moduleId: string, label: string) => Worker;
1415
}
1516

1617
export const useWorkerFactory = (config: WorkerFactoryConfig) => {
@@ -25,5 +26,5 @@ export const useWorkerFactory = (config: WorkerFactoryConfig) => {
2526
}
2627
return workerFunc();
2728
};
28-
envEnhanced.getWorker = getWorker;
29+
envEnhanced.getWorker = config.getWorkerOverride ?? getWorker;
2930
};

packages/examples/resources/python/hello.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
# if hello2 is not resolved the file is not availale on the language server
12
from hello2 import print_hello
23

34
print_hello()

packages/examples/src/appPlayground/config.ts

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,11 +27,12 @@ import '@codingame/monaco-vscode-search-result-default-extension';
2727
import '../../resources/vsix/open-collaboration-tools.vsix';
2828

2929
import { createDefaultLocaleConfiguration } from 'monaco-languageclient/vscode/services';
30-
import { configureMonacoWorkers, createDefaultWorkspaceFile } from '../common/client/utils.js';
30+
import { defaultHtmlAugmentationInstructions, defaultViewsInit } from 'monaco-editor-wrapper/vscode/services';
31+
import { configureDefaultWorkerFactory } from 'monaco-editor-wrapper/workers/workerLoaders';
32+
import { createDefaultWorkspaceFile } from '../common/client/utils.js';
3133
import helloTsCode from '../../resources/appPlayground/hello.ts?raw';
3234
import testerTsCode from '../../resources/appPlayground/tester.ts?raw';
3335
import type { WrapperConfig } from 'monaco-editor-wrapper';
34-
import { defaultHtmlAugmentationInstructions, defaultViewsInit } from 'monaco-editor-wrapper/vscode/services';
3536

3637
export type ConfigResult = {
3738
wrapperConfig: WrapperConfig
@@ -117,7 +118,7 @@ export const configure = (htmlContainer?: HTMLElement): ConfigResult => {
117118
}
118119
}],
119120
editorAppConfig: {
120-
monacoWorkerFactory: configureMonacoWorkers
121+
monacoWorkerFactory: configureDefaultWorkerFactory
121122
}
122123
};
123124

packages/examples/src/bare/client.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,11 @@ import { LogLevel } from '@codingame/monaco-vscode-api';
99
// monaco-editor does not supply json highlighting with the json worker,
1010
// that's why we use the textmate extension from VSCode
1111
import '@codingame/monaco-vscode-json-default-extension';
12-
import { MonacoLanguageClient } from 'monaco-languageclient';
13-
import { WebSocketMessageReader, WebSocketMessageWriter, toSocket } from 'vscode-ws-jsonrpc';
1412
import { CloseAction, ErrorAction, MessageTransports } from 'vscode-languageclient/browser.js';
15-
import { configureMonacoWorkers } from '../common/client/utils.js';
13+
import { MonacoLanguageClient } from 'monaco-languageclient';
1614
import { ConsoleLogger } from 'monaco-languageclient/tools';
15+
import { WebSocketMessageReader, WebSocketMessageWriter, toSocket } from 'vscode-ws-jsonrpc';
16+
import { configureDefaultWorkerFactory } from 'monaco-editor-wrapper/workers/workerLoaders';
1717

1818
export const runClient = async () => {
1919
const logger = new ConsoleLogger(LogLevel.Debug);
@@ -37,7 +37,7 @@ export const runClient = async () => {
3737
mimetypes: ['application/json']
3838
});
3939

40-
configureMonacoWorkers(logger);
40+
configureDefaultWorkerFactory(logger);
4141

4242
// create monaco editor
4343
monaco.editor.create(htmlContainer, {

packages/examples/src/browser/main.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import { createConverter as createCodeConverter } from 'vscode-languageclient/li
1212
import { createConverter as createProtocolConverter } from 'vscode-languageclient/lib/common/protocolConverter.js';
1313
import { LogLevel } from '@codingame/monaco-vscode-api';
1414
import { MonacoEditorLanguageClientWrapper, type WrapperConfig } from 'monaco-editor-wrapper';
15-
import { configureMonacoWorkers } from '../common/client/utils.js';
15+
import { configureDefaultWorkerFactory } from 'monaco-editor-wrapper/workers/workerLoaders';
1616

1717
export const runBrowserEditor = async () => {
1818
const codeConverter = createCodeConverter();
@@ -52,7 +52,7 @@ export const runBrowserEditor = async () => {
5252
uri: codeUri
5353
}
5454
},
55-
monacoWorkerFactory: configureMonacoWorkers
55+
monacoWorkerFactory: configureDefaultWorkerFactory
5656
}
5757
};
5858
await wrapper.init(jsonClientUserConfig);

packages/examples/src/clangd/client/config.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,9 @@ import getEnvironmentServiceOverride from '@codingame/monaco-vscode-environment-
1515
import getSecretStorageServiceOverride from '@codingame/monaco-vscode-secret-storage-service-override';
1616
import { LogLevel } from '@codingame/monaco-vscode-api';
1717
import type { WrapperConfig } from 'monaco-editor-wrapper';
18-
import { configureMonacoWorkers } from '../../common/client/utils.js';
19-
import { ClangdWorkerHandler } from './workerHandler.js';
18+
import { configureDefaultWorkerFactory } from 'monaco-editor-wrapper/workers/workerLoaders';
2019
import { defaultHtmlAugmentationInstructions, defaultViewsInit } from 'monaco-editor-wrapper/vscode/services';
20+
import { ClangdWorkerHandler } from './workerHandler.js';
2121

2222
export const createWrapperConfig = async (config: {
2323
htmlContainer: HTMLElement,
@@ -119,7 +119,7 @@ export const createWrapperConfig = async (config: {
119119
}
120120
}],
121121
editorAppConfig: {
122-
monacoWorkerFactory: configureMonacoWorkers
122+
monacoWorkerFactory: configureDefaultWorkerFactory
123123
}
124124
};
125125
};

packages/examples/src/common/client/utils.ts

Lines changed: 1 addition & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,9 @@
33
* Licensed under the MIT License. See LICENSE in the package root for license information.
44
* ------------------------------------------------------------------------------------------ */
55

6-
import { Uri } from 'vscode';
7-
import type { Logger } from 'monaco-languageclient/tools';
8-
import { useWorkerFactory, type WorkerLoader } from 'monaco-languageclient/workerFactory';
96
import { RegisteredMemoryFile } from '@codingame/monaco-vscode-files-service-override';
107
import type { IStoredWorkspace } from '@codingame/monaco-vscode-configuration-service-override';
8+
import type { Uri } from 'vscode';
119

1210
export const disableElement = (id: string, disabled: boolean) => {
1311
const button = document.getElementById(id) as HTMLButtonElement | HTMLInputElement | null;
@@ -16,32 +14,6 @@ export const disableElement = (id: string, disabled: boolean) => {
1614
}
1715
};
1816

19-
export const defineDefaultWorkerLoaders: () => Record<string, WorkerLoader> = () => {
20-
return {
21-
// if you import monaco api as 'monaco-editor': monaco-editor/esm/vs/editor/editor.worker.js
22-
TextEditorWorker: () => new Worker(
23-
new URL('@codingame/monaco-vscode-editor-api/esm/vs/editor/editor.worker.js', import.meta.url),
24-
{ type: 'module' }
25-
),
26-
TextMateWorker: () => new Worker(
27-
new URL('@codingame/monaco-vscode-textmate-service-override/worker', import.meta.url),
28-
{ type: 'module' }
29-
),
30-
// these are other possible workers not configured by default
31-
OutputLinkDetectionWorker: undefined,
32-
LanguageDetectionWorker: undefined,
33-
NotebookEditorWorker: undefined,
34-
LocalFileSearchWorker: undefined
35-
};
36-
};
37-
38-
export const configureMonacoWorkers = (logger?: Logger) => {
39-
useWorkerFactory({
40-
workerLoaders: defineDefaultWorkerLoaders(),
41-
logger
42-
});
43-
};
44-
4517
export const createDefaultWorkspaceFile = (workspaceFile: Uri, workspacePath: string) => {
4618
return new RegisteredMemoryFile(
4719
workspaceFile,

packages/examples/src/eclipse.jdt.ls/client/main.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,11 @@ import getKeybindingsServiceOverride from '@codingame/monaco-vscode-keybindings-
88
import { RegisteredFileSystemProvider, RegisteredMemoryFile, registerFileSystemOverlay } from '@codingame/monaco-vscode-files-service-override';
99
// this is required syntax highlighting
1010
import '@codingame/monaco-vscode-java-default-extension';
11-
import { MonacoEditorLanguageClientWrapper, type WrapperConfig } from 'monaco-editor-wrapper';
1211
import { LogLevel } from '@codingame/monaco-vscode-api';
12+
import { MonacoEditorLanguageClientWrapper, type WrapperConfig } from 'monaco-editor-wrapper';
13+
import { configureDefaultWorkerFactory } from 'monaco-editor-wrapper/workers/workerLoaders';
1314
import { eclipseJdtLsConfig } from '../config.js';
1415
import helloJavaCode from '../../../resources/eclipse.jdt.ls/workspace/hello.java?raw';
15-
import { configureMonacoWorkers } from '../../common/client/utils.js';
1616

1717
export const runEclipseJdtLsClient = () => {
1818
const helloJavaUri = vscode.Uri.file(`${eclipseJdtLsConfig.basePath}/workspace/hello.java`);
@@ -44,7 +44,7 @@ export const runEclipseJdtLsClient = () => {
4444
uri: `${eclipseJdtLsConfig.basePath}/workspace/hello.java`
4545
}
4646
},
47-
monacoWorkerFactory: configureMonacoWorkers
47+
monacoWorkerFactory: configureDefaultWorkerFactory
4848
},
4949
languageClientConfigs: {
5050
java: {

packages/examples/src/groovy/client/main.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,8 @@ import getKeybindingsServiceOverride from '@codingame/monaco-vscode-keybindings-
88
import '@codingame/monaco-vscode-groovy-default-extension';
99
import { LogLevel } from '@codingame/monaco-vscode-api';
1010
import { MonacoEditorLanguageClientWrapper, type WrapperConfig } from 'monaco-editor-wrapper';
11+
import { configureDefaultWorkerFactory } from 'monaco-editor-wrapper/workers/workerLoaders';
1112
import { groovyConfig } from '../config.js';
12-
import { configureMonacoWorkers } from '../../common/client/utils.js';
1313

1414
const code = `package test.org;
1515
import java.io.File;
@@ -40,7 +40,7 @@ const wrapperConfig: WrapperConfig = {
4040
fileExt: 'groovy'
4141
}
4242
},
43-
monacoWorkerFactory: configureMonacoWorkers
43+
monacoWorkerFactory: configureDefaultWorkerFactory
4444
},
4545
languageClientConfigs: {
4646
groovy: {

packages/examples/src/json/client/wrapperWs.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import getKeybindingsServiceOverride from '@codingame/monaco-vscode-keybindings-
88
import '@codingame/monaco-vscode-json-default-extension';
99
import { LogLevel } from '@codingame/monaco-vscode-api';
1010
import { MonacoEditorLanguageClientWrapper, type WrapperConfig } from 'monaco-editor-wrapper';
11-
import { configureMonacoWorkers } from '../../common/client/utils.js';
11+
import { configureDefaultWorkerFactory } from 'monaco-editor-wrapper/workers/workerLoaders';
1212

1313
const text = `{
1414
"$schema": "http://json.schemastore.org/coffeelint",
@@ -41,7 +41,7 @@ export const buildJsonClientUserConfig = (htmlContainer?: HTMLElement): WrapperC
4141
fileExt: 'json'
4242
}
4343
},
44-
monacoWorkerFactory: configureMonacoWorkers
44+
monacoWorkerFactory: configureDefaultWorkerFactory
4545
},
4646
languageClientConfigs: {
4747
json: {

packages/examples/src/langium/langium-dsl/config/classicConfig.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,9 @@ import { LogLevel } from '@codingame/monaco-vscode-api';
88
import type { Logger } from 'monaco-languageclient/tools';
99
import { useWorkerFactory } from 'monaco-languageclient/workerFactory';
1010
import type { WrapperConfig } from 'monaco-editor-wrapper';
11+
import { defineDefaultWorkerLoaders } from 'monaco-editor-wrapper/workers/workerLoaders';
1112
import { LangiumMonarchContent } from './langium.monarch.js';
1213
import code from '../../../../resources/langium/langium-dsl/example.langium?raw';
13-
import { defineDefaultWorkerLoaders } from '../../../common/client/utils.js';
1414

1515
export const setupLangiumClientClassic = async (langiumWorker: Worker): Promise<WrapperConfig> => {
1616
const workerLoaders = defineDefaultWorkerLoaders();

packages/examples/src/langium/langium-dsl/config/extendedConfig.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import { LogLevel } from '@codingame/monaco-vscode-api';
88
import '../../../../resources/vsix/github-vscode-theme.vsix';
99
import { BrowserMessageReader, BrowserMessageWriter } from 'vscode-languageclient/browser.js';
1010
import type { WrapperConfig } from 'monaco-editor-wrapper';
11-
import { configureMonacoWorkers } from '../../../common/client/utils.js';
11+
import { configureDefaultWorkerFactory } from 'monaco-editor-wrapper/workers/workerLoaders';
1212
import langiumLanguageConfig from './langium.configuration.json?raw';
1313
import langiumTextmateGrammar from './langium.tmLanguage.json?raw';
1414
import text from '../../../../resources/langium/langium-dsl//example.langium?raw';
@@ -71,7 +71,7 @@ export const setupLangiumClientExtended = async (langiumWorker: Worker): Promise
7171
fileExt: 'langium'
7272
}
7373
},
74-
monacoWorkerFactory: configureMonacoWorkers
74+
monacoWorkerFactory: configureDefaultWorkerFactory
7575
},
7676
languageClientConfigs: {
7777
langium: {

packages/examples/src/langium/statemachine/config/wrapperStatemachineConfig.ts

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,13 @@ import getLifecycleServiceOverride from '@codingame/monaco-vscode-lifecycle-serv
88
import getLocalizationServiceOverride from '@codingame/monaco-vscode-localization-service-override';
99
import { createDefaultLocaleConfiguration } from 'monaco-languageclient/vscode/services';
1010
import { LogLevel } from '@codingame/monaco-vscode-api';
11+
import { MessageTransports } from 'vscode-languageclient';
1112
import type { LanguageClientConfig, WrapperConfig } from 'monaco-editor-wrapper';
13+
import { configureDefaultWorkerFactory } from 'monaco-editor-wrapper/workers/workerLoaders';
14+
1215
// cannot be imported with assert as json contains comments
1316
import statemachineLanguageConfig from './language-configuration.json?raw';
1417
import responseStatemachineTm from '../syntaxes/statemachine.tmLanguage.json?raw';
15-
import { MessageTransports } from 'vscode-languageclient';
16-
import { configureMonacoWorkers } from '../../../common/client/utils.js';
1718

1819
export const createLangiumGlobalConfig = async (params: {
1920
languageServerId: string,
@@ -99,7 +100,7 @@ export const createLangiumGlobalConfig = async (params: {
99100
codeResources: {
100101
modified
101102
},
102-
monacoWorkerFactory: configureMonacoWorkers
103+
monacoWorkerFactory: configureDefaultWorkerFactory
103104
},
104105
languageClientConfigs
105106
};

packages/examples/src/multi/twoLanguageClients.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,8 @@ import '@codingame/monaco-vscode-json-default-extension';
1010
import '@codingame/monaco-vscode-python-default-extension';
1111
import { LogLevel } from '@codingame/monaco-vscode-api';
1212
import { type CodePlusFileExt, MonacoEditorLanguageClientWrapper, type WrapperConfig } from 'monaco-editor-wrapper';
13-
import { configureMonacoWorkers, disableElement } from '../common/client/utils.js';
13+
import { configureDefaultWorkerFactory } from 'monaco-editor-wrapper/workers/workerLoaders';
14+
import { disableElement } from '../common/client/utils.js';
1415
import { createJsonLanguageClientConfig, createPythonLanguageClientConfig } from './config.js';
1516

1617
export const runMultipleLanguageClientsExample = async () => {
@@ -54,7 +55,7 @@ print("Hello Moon!")
5455
fileExt: currenFileExt
5556
}
5657
},
57-
monacoWorkerFactory: configureMonacoWorkers
58+
monacoWorkerFactory: configureDefaultWorkerFactory
5859
},
5960
languageClientConfigs: {
6061
json: createJsonLanguageClientConfig(),

packages/examples/src/python/client/config.ts

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,14 +25,15 @@ import { LogLevel } from '@codingame/monaco-vscode-api';
2525
import { MonacoLanguageClient } from 'monaco-languageclient';
2626
import { createUrl } from 'monaco-languageclient/tools';
2727
import { createDefaultLocaleConfiguration } from 'monaco-languageclient/vscode/services';
28-
import { defaultHtmlAugmentationInstructions, defaultViewsInit } from 'monaco-editor-wrapper/vscode/services';
2928
import { toSocket, WebSocketMessageReader, WebSocketMessageWriter } from 'vscode-ws-jsonrpc';
30-
import { configureMonacoWorkers, createDefaultWorkspaceFile } from '../../common/client/utils.js';
29+
import type { WrapperConfig } from 'monaco-editor-wrapper';
30+
import { defaultHtmlAugmentationInstructions, defaultViewsInit } from 'monaco-editor-wrapper/vscode/services';
31+
import { configureDefaultWorkerFactory } from 'monaco-editor-wrapper/workers/workerLoaders';
32+
import { createDefaultWorkspaceFile } from '../../common/client/utils.js';
3133
import { provideDebuggerExtensionConfig } from '../../debugger/client/debugger.js';
3234
import helloPyCode from '../../../resources/python/hello.py?raw';
3335
import hello2PyCode from '../../../resources/python/hello2.py?raw';
3436
import badPyCode from '../../../resources/python/bad.py?raw';
35-
import type { WrapperConfig } from 'monaco-editor-wrapper';
3637
import { createDebugLaunchConfigFile, type ConfigParams, type FileDefinition } from '../../debugger/common/definitions.js';
3738

3839
export const createDefaultConfigParams = (homeDir: string, htmlContainer?: HTMLElement): ConfigParams => {
@@ -203,7 +204,7 @@ export const createWrapperConfig = (): PythonAppConfig => {
203204
provideDebuggerExtensionConfig(configParams)
204205
],
205206
editorAppConfig: {
206-
monacoWorkerFactory: configureMonacoWorkers
207+
monacoWorkerFactory: configureDefaultWorkerFactory
207208
}
208209
};
209210

packages/examples/src/ts/wrapperTs.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import '@codingame/monaco-vscode-typescript-basics-default-extension';
99
import '@codingame/monaco-vscode-typescript-language-features-default-extension';
1010
import { LogLevel } from '@codingame/monaco-vscode-api';
1111
import { type CodePlusUri, MonacoEditorLanguageClientWrapper, type WrapperConfig } from 'monaco-editor-wrapper';
12-
import { configureMonacoWorkers } from '../common/client/utils.js';
12+
import { configureDefaultWorkerFactory } from 'monaco-editor-wrapper/workers/workerLoaders';
1313

1414
export const runTsWrapper = async () => {
1515
const codeUri = '/workspace/hello.ts';
@@ -55,7 +55,7 @@ export const runTsWrapper = async () => {
5555
uri: codeOriginalUri,
5656
}
5757
},
58-
monacoWorkerFactory: configureMonacoWorkers
58+
monacoWorkerFactory: configureDefaultWorkerFactory
5959
}
6060
};
6161

0 commit comments

Comments
 (0)