monaco-editor-wrapper
Version:
Wrapper for monaco-vscode-editor-api and monaco-languageclient
37 lines (32 loc) • 1.57 kB
text/typescript
/* --------------------------------------------------------------------------------------------
* Copyright (c) 2024 TypeFox and others.
* Licensed under the MIT License. See LICENSE in the package root for license information.
* ------------------------------------------------------------------------------------------ */
import type { Logger } from 'monaco-languageclient/tools';
import { useWorkerFactory, type WorkerLoader } from 'monaco-languageclient/workerFactory';
export const defineDefaultWorkerLoaders: () => Record<string, WorkerLoader> = () => {
const defaultTextEditorWorker = () => new Worker(
new URL('@codingame/monaco-vscode-editor-api/esm/vs/editor/editor.worker.js', import.meta.url),
{ type: 'module' }
);
const defaultTextMateWorker = () => new Worker(
new URL('@codingame/monaco-vscode-textmate-service-override/worker', import.meta.url),
{ type: 'module' }
);
return {
// if you import monaco api as 'monaco-editor': monaco-editor/esm/vs/editor/editor.worker.js
TextEditorWorker: defaultTextEditorWorker,
TextMateWorker: defaultTextMateWorker,
// these are other possible workers not configured by default
OutputLinkDetectionWorker: undefined,
LanguageDetectionWorker: undefined,
NotebookEditorWorker: undefined,
LocalFileSearchWorker: undefined
};
};
export const configureDefaultWorkerFactory = (logger?: Logger) => {
useWorkerFactory({
workerLoaders: defineDefaultWorkerLoaders(),
logger
});
};