diff --git a/js-build/babel-worker.js b/js-build/babel-worker.js index 1b4920b9a7..7c9b96be9e 100644 --- a/js-build/babel-worker.js +++ b/js-build/babel-worker.js @@ -59,6 +59,23 @@ async function babelWorker(ev) { transformed = contents.replace('globalThis.Set', 'Set') .replace('globalThis.Map', 'Map'); } + // Patch Monaco's embedded TypeScript compiler + else if (sourcefile === 'resource/vs/language/typescript/tsWorker.js') { + // Infer types based on standard translator variable/parameter names + transformed = contents.replace('function getTypeOfSymbol(symbol) {', `function getTypeOfSymbol(symbol) { + switch (symbol.escapedName) { + case "doc": + return getGlobalType("Document", 0, true); + case "url": + return stringType; + case "checkOnly": + return booleanType; + } + `); + if (transformed.length === contents.length) { + return postError('Failed to patch tsWorker.js'); + } + } else if ('ignore' in options && options.ignore.some(ignoreGlob => multimatch(sourcefile, ignoreGlob).length)) { transformed = contents; @@ -90,4 +107,4 @@ module.exports = babelWorker; if (cluster.isWorker) { process.on('message', babelWorker); -} \ No newline at end of file +} diff --git a/js-build/config.js b/js-build/config.js index c89db504d9..1b21d6c4a8 100644 --- a/js-build/config.js +++ b/js-build/config.js @@ -51,16 +51,9 @@ const symlinkFiles = [ '!resource/feeds/*.idl', '!chrome/skin/default/zotero/**/*.scss', '!resource/citeproc_rs_wasm.js', - // We only need a few Monaco languages - '!resource/vs/**/*', - 'resource/vs/loader.js', - 'resource/vs/editor/editor.main.{js,css,nls.js}', - 'resource/vs/base/**/*', - 'resource/vs/basic-languages/javascript/*.js', - 'resource/vs/basic-languages/typescript/*.js', - 'resource/vs/basic-languages/xml/*.js', - 'resource/vs/language/typescript/*.js', - 'resource/vs/language/json/*.js', + 'resource/vs/**/*', + // Patched in babel-worker.js + '!resource/vs/language/typescript/tsWorker.js', 'version', ]; @@ -118,6 +111,7 @@ const jsFiles = [ 'resource/react-virtualized.js', 'resource/SingleFile/lib/single-file.js', 'resource/citeproc_rs_wasm.js', + 'resource/vs/language/typescript/tsWorker.js', ]; const scssFiles = [ diff --git a/resource/vs b/resource/vs deleted file mode 120000 index f8c8669726..0000000000 --- a/resource/vs +++ /dev/null @@ -1 +0,0 @@ -../node_modules/monaco-editor/min/vs \ No newline at end of file diff --git a/resource/vs/base/browser/ui/codicons/codicon/codicon.ttf b/resource/vs/base/browser/ui/codicons/codicon/codicon.ttf new file mode 120000 index 0000000000..62ba04b1e3 --- /dev/null +++ b/resource/vs/base/browser/ui/codicons/codicon/codicon.ttf @@ -0,0 +1 @@ +../../../../../../../node_modules/monaco-editor/min/vs/base/browser/ui/codicons/codicon/codicon.ttf \ No newline at end of file diff --git a/resource/vs/base/common/worker/simpleWorker.nls.js b/resource/vs/base/common/worker/simpleWorker.nls.js new file mode 120000 index 0000000000..0b472aa210 --- /dev/null +++ b/resource/vs/base/common/worker/simpleWorker.nls.js @@ -0,0 +1 @@ +../../../../../node_modules/monaco-editor/min/vs/base/common/worker/simpleWorker.nls.js \ No newline at end of file diff --git a/resource/vs/base/worker/workerMain.js b/resource/vs/base/worker/workerMain.js new file mode 120000 index 0000000000..ce4d0a41f9 --- /dev/null +++ b/resource/vs/base/worker/workerMain.js @@ -0,0 +1 @@ +../../../../node_modules/monaco-editor/min/vs/base/worker/workerMain.js \ No newline at end of file diff --git a/resource/vs/basic-languages/javascript/javascript.js b/resource/vs/basic-languages/javascript/javascript.js new file mode 120000 index 0000000000..5b8cf257e7 --- /dev/null +++ b/resource/vs/basic-languages/javascript/javascript.js @@ -0,0 +1 @@ +../../../../node_modules/monaco-editor/min/vs/basic-languages/javascript/javascript.js \ No newline at end of file diff --git a/resource/vs/basic-languages/typescript/typescript.js b/resource/vs/basic-languages/typescript/typescript.js new file mode 120000 index 0000000000..3874a91ec3 --- /dev/null +++ b/resource/vs/basic-languages/typescript/typescript.js @@ -0,0 +1 @@ +../../../../node_modules/monaco-editor/min/vs/basic-languages/typescript/typescript.js \ No newline at end of file diff --git a/resource/vs/basic-languages/xml/xml.js b/resource/vs/basic-languages/xml/xml.js new file mode 120000 index 0000000000..066cf9c32c --- /dev/null +++ b/resource/vs/basic-languages/xml/xml.js @@ -0,0 +1 @@ +../../../../node_modules/monaco-editor/min/vs/basic-languages/xml/xml.js \ No newline at end of file diff --git a/resource/vs/editor/editor.main.css b/resource/vs/editor/editor.main.css new file mode 120000 index 0000000000..d1e8d99309 --- /dev/null +++ b/resource/vs/editor/editor.main.css @@ -0,0 +1 @@ +../../../node_modules/monaco-editor/min/vs/editor/editor.main.css \ No newline at end of file diff --git a/resource/vs/editor/editor.main.js b/resource/vs/editor/editor.main.js new file mode 120000 index 0000000000..87406287d4 --- /dev/null +++ b/resource/vs/editor/editor.main.js @@ -0,0 +1 @@ +../../../node_modules/monaco-editor/min/vs/editor/editor.main.js \ No newline at end of file diff --git a/resource/vs/editor/editor.main.nls.js b/resource/vs/editor/editor.main.nls.js new file mode 120000 index 0000000000..d9300a7433 --- /dev/null +++ b/resource/vs/editor/editor.main.nls.js @@ -0,0 +1 @@ +../../../node_modules/monaco-editor/min/vs/editor/editor.main.nls.js \ No newline at end of file diff --git a/resource/vs/language/json/jsonMode.js b/resource/vs/language/json/jsonMode.js new file mode 120000 index 0000000000..996e855413 --- /dev/null +++ b/resource/vs/language/json/jsonMode.js @@ -0,0 +1 @@ +../../../../node_modules/monaco-editor/min/vs/language/json/jsonMode.js \ No newline at end of file diff --git a/resource/vs/language/json/jsonWorker.js b/resource/vs/language/json/jsonWorker.js new file mode 120000 index 0000000000..693c87ca53 --- /dev/null +++ b/resource/vs/language/json/jsonWorker.js @@ -0,0 +1 @@ +../../../../node_modules/monaco-editor/min/vs/language/json/jsonWorker.js \ No newline at end of file diff --git a/resource/vs/language/typescript/tsMode.js b/resource/vs/language/typescript/tsMode.js new file mode 120000 index 0000000000..0c8a92e4a2 --- /dev/null +++ b/resource/vs/language/typescript/tsMode.js @@ -0,0 +1 @@ +../../../../node_modules/monaco-editor/min/vs/language/typescript/tsMode.js \ No newline at end of file diff --git a/resource/vs/language/typescript/tsWorker.js b/resource/vs/language/typescript/tsWorker.js new file mode 120000 index 0000000000..c98531cb72 --- /dev/null +++ b/resource/vs/language/typescript/tsWorker.js @@ -0,0 +1 @@ +../../../../node_modules/monaco-editor/dev/vs/language/typescript/tsWorker.js \ No newline at end of file diff --git a/resource/vs/loader.js b/resource/vs/loader.js new file mode 120000 index 0000000000..8a685e9569 --- /dev/null +++ b/resource/vs/loader.js @@ -0,0 +1 @@ +../../node_modules/monaco-editor/min/vs/loader.js \ No newline at end of file