mirror of https://github.com/certd/certd
59 lines
2.3 KiB
TypeScript
59 lines
2.3 KiB
TypeScript
import { importWorks } from "./async-import";
|
|
|
|
const WorkerBucket: any = {};
|
|
|
|
/**
|
|
* 注册自定义worker
|
|
* @param name
|
|
* @param worker
|
|
*/
|
|
export function registerWorker(name: string, worker: any) {
|
|
WorkerBucket[name] = worker;
|
|
}
|
|
|
|
export async function initWorkers() {
|
|
if (window.MonacoEnvironment) {
|
|
return;
|
|
}
|
|
|
|
// const { editorWorker, jsonWorker, cssWorker, htmlWorker, tsWorker } = await importWorks();
|
|
//
|
|
// // const editorWorker = new Worker(new URL("monaco-editor/esm/vs/editor/editor.worker.js", import.meta.url));
|
|
// // const jsonWorker = new Worker(new URL("monaco-editor/esm/vs/language/json/json.worker.js", import.meta.url));
|
|
// // const cssWorker = new Worker(new URL("monaco-editor/esm/vs/language/css/css.worker.js", import.meta.url));
|
|
// // const htmlWorker = new Worker(new URL("monaco-editor/esm/vs/language/html/html.worker.js", import.meta.url));
|
|
// // const tsWorker = new Worker(new URL("monaco-editor/esm/vs/language/typescript/ts.worker.js", import.meta.url));
|
|
// // const yamlWorker = new Worker(new URL("./yaml.worker.js", import.meta.url));
|
|
|
|
const editorWorker = await import("monaco-editor/esm/vs/editor/editor.worker?worker");
|
|
const jsonWorker = await import("monaco-editor/esm/vs/language/json/json.worker?worker");
|
|
const cssWorker = await import("monaco-editor/esm/vs/language/css/css.worker?worker");
|
|
const htmlWorker = await import("monaco-editor/esm/vs/language/html/html.worker?worker");
|
|
const tsWorker = await import("monaco-editor/esm/vs/language/typescript/ts.worker?worker");
|
|
const yamlWorker = await import("./yaml.worker?worker");
|
|
|
|
//@ts-ignore
|
|
window.MonacoEnvironment = {
|
|
//@ts-ignore
|
|
getWorker(_, label) {
|
|
const custom = WorkerBucket[label];
|
|
if (custom) {
|
|
return new custom();
|
|
}
|
|
if (label === "json") {
|
|
return new jsonWorker.default();
|
|
} else if (label === "css" || label === "scss" || label === "less") {
|
|
return new cssWorker.default();
|
|
} else if (label === "html" || label === "handlebars" || label === "razor") {
|
|
return new htmlWorker.default();
|
|
} else if (label === "typescript" || label === "javascript") {
|
|
return new tsWorker.default();
|
|
} else if (label === "yaml" || label === "yml") {
|
|
//@ts-ignore
|
|
return new yamlWorker.default();
|
|
}
|
|
return new editorWorker.default();
|
|
},
|
|
};
|
|
}
|