refactor(monaco): wip: update to load with vite worker support

This commit is contained in:
Jack Westbrook
2025-03-03 09:07:53 +01:00
parent 4c2ca3247d
commit 9d8bcd636f
3 changed files with 18 additions and 11 deletions
@@ -4,7 +4,7 @@ import { Registry, RegistryItem } from '../utils/Registry';
* @alpha
*/
export interface MonacoLanguageRegistryItem extends RegistryItem {
init: () => Worker;
init: () => string;
}
/**
+16 -7
View File
@@ -1,32 +1,41 @@
import { monacoLanguageRegistry } from '@grafana/data';
import { CorsWorker as Worker } from 'app/core/utils/CorsWorker';
// TODO: vite - handle CORs with webworkers
// import { CorsWorker as Worker } from 'app/core/utils/CorsWorker';
export function setMonacoEnv() {
self.MonacoEnvironment = {
getWorker(_moduleId, label) {
const getWorkerModule = (moduleUrl, label) => {
return new Worker(self.MonacoEnvironment.getWorkerUrl(moduleUrl), {
name: label,
type: 'module',
});
};
const language = monacoLanguageRegistry.getIfExists(label);
if (language) {
return language.init();
const moduleUrl = language.init();
return getWorkerModule(moduleUrl, label);
}
if (label === 'json') {
return new Worker(new URL('monaco-editor/esm/vs/language/json/json.worker', import.meta.url));
return getWorkerModule('/monaco-editor/esm/vs/language/json/json.worker?worker', label);
}
if (label === 'css' || label === 'scss' || label === 'less') {
return new Worker(new URL('monaco-editor/esm/vs/language/css/css.worker', import.meta.url));
return getWorkerModule('/monaco-editor/esm/vs/language/css/css.worker?worker', label);
}
if (label === 'html' || label === 'handlebars' || label === 'razor') {
return new Worker(new URL('monaco-editor/esm/vs/language/html/html.worker', import.meta.url));
return getWorkerModule('/monaco-editor/esm/vs/language/html/html.worker?worker', label);
}
if (label === 'typescript' || label === 'javascript') {
return new Worker(new URL('monaco-editor/esm/vs/language/typescript/ts.worker', import.meta.url));
return getWorkerModule('/monaco-editor/esm/vs/language/typescript/ts.worker?worker', label);
}
return new Worker(new URL('monaco-editor/esm/vs/editor/editor.worker', import.meta.url));
return getWorkerModule('/monaco-editor/esm/vs/editor/editor.worker?worker', label);
},
};
}
+1 -3
View File
@@ -1,5 +1,3 @@
import { CorsWorker as Worker } from 'app/core/utils/CorsWorker';
export default function loadKusto() {
return new Worker(new URL('@kusto/monaco-kusto/release/esm/kusto.worker', import.meta.url));
return '@kusto/monaco-kusto/release/esm/kusto.worker?worker';
}