mirror of
https://github.com/microsoft/monaco-editor.git
synced 2025-12-22 11:35:40 +01:00
* Uses rollup for ESM build and d.ts bundling.
Moves monaco.languages.{typescript, json, html, css} to monaco.*.
Moves monaco.editor.createWebWorker to monaco.createWebWorker.
* Adds excluded files from dist, as they needed to be patched.
94 lines
2.7 KiB
TypeScript
94 lines
2.7 KiB
TypeScript
/// @ts-ignore
|
|
import * as require from 'require';
|
|
|
|
if (typeof (globalThis as any).require !== 'undefined' && typeof (globalThis as any).require.config === 'function') {
|
|
(globalThis as any).require.config({
|
|
ignoreDuplicateModules: [
|
|
'vscode-languageserver-types',
|
|
'vscode-languageserver-types/main',
|
|
'vscode-languageserver-textdocument',
|
|
'vscode-languageserver-textdocument/main',
|
|
'vscode-nls',
|
|
'vscode-nls/vscode-nls',
|
|
'jsonc-parser',
|
|
'jsonc-parser/main',
|
|
'vscode-uri',
|
|
'vscode-uri/index',
|
|
'vs/basic-languages/typescript/typescript'
|
|
]
|
|
});
|
|
}
|
|
|
|
self.MonacoEnvironment = {
|
|
getWorker: function (_moduleId, label) {
|
|
if (label === 'json') {
|
|
return new Worker(
|
|
getWorkerBootstrapUrl(
|
|
/// @ts-ignore
|
|
new URL('../../../src/language/json/json.worker.ts?worker', import.meta.url)
|
|
)
|
|
);
|
|
}
|
|
if (label === 'css' || label === 'scss' || label === 'less') {
|
|
return new Worker(
|
|
getWorkerBootstrapUrl(
|
|
/// @ts-ignore
|
|
new URL('../../../src/language/css/css.worker.ts?worker', import.meta.url)
|
|
)
|
|
);
|
|
}
|
|
if (label === 'html' || label === 'handlebars' || label === 'razor') {
|
|
return new Worker(
|
|
getWorkerBootstrapUrl(
|
|
/// @ts-ignore
|
|
new URL('../../../src/language/html/html.worker.ts?worker', import.meta.url)
|
|
)
|
|
);
|
|
}
|
|
if (label === 'typescript' || label === 'javascript') {
|
|
return new Worker(
|
|
getWorkerBootstrapUrl(
|
|
/// @ts-ignore
|
|
new URL('../../../src/language/typescript/ts.worker.ts?worker', import.meta.url)
|
|
)
|
|
);
|
|
}
|
|
return new Worker(
|
|
/// @ts-ignore
|
|
getWorkerBootstrapUrl(new URL('../../../src/editor/editor.worker.ts?worker', import.meta.url))
|
|
);
|
|
}
|
|
};
|
|
|
|
function getWorkerBootstrapUrl(workerScriptUrl: string | URL) {
|
|
if (typeof workerScriptUrl !== 'string') {
|
|
workerScriptUrl = workerScriptUrl.toString();
|
|
}
|
|
const blob = new Blob(
|
|
[
|
|
[
|
|
`const ttPolicy = globalThis.trustedTypes?.createPolicy('defaultWorkerFactory', { createScriptURL: value => value });`,
|
|
`globalThis.workerttPolicy = ttPolicy;`,
|
|
`importScripts(ttPolicy?.createScriptURL(${JSON.stringify(
|
|
workerScriptUrl
|
|
)}) ?? ${JSON.stringify(workerScriptUrl)});`,
|
|
`globalThis.postMessage({ type: 'vscode-worker-ready' });`
|
|
].join('')
|
|
],
|
|
{ type: 'application/javascript' }
|
|
);
|
|
return URL.createObjectURL(blob);
|
|
}
|
|
|
|
import 'vs/nls.messages-loader!';
|
|
import * as monaco from '../../../src/editor/editor.main';
|
|
export * from '../../../src/editor/editor.main';
|
|
|
|
globalThis.monaco = monaco;
|
|
|
|
const styleSheetUrl = require.toUrl('vs/editor/editor.main.css');
|
|
|
|
const link = document.createElement('link');
|
|
link.rel = 'stylesheet';
|
|
link.href = styleSheetUrl;
|
|
document.head.appendChild(link);
|