Scaffold: Infer types of parameters based on naming conventions (#5038)

This commit is contained in:
Abe Jellinek 2025-02-18 05:07:51 -05:00 committed by GitHub
parent 239b68e6b8
commit eb30c23a0d
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
17 changed files with 36 additions and 12 deletions

View file

@ -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);
}
}

View file

@ -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 = [

View file

@ -1 +0,0 @@
../node_modules/monaco-editor/min/vs

View file

@ -0,0 +1 @@
../../../../../../../node_modules/monaco-editor/min/vs/base/browser/ui/codicons/codicon/codicon.ttf

View file

@ -0,0 +1 @@
../../../../../node_modules/monaco-editor/min/vs/base/common/worker/simpleWorker.nls.js

View file

@ -0,0 +1 @@
../../../../node_modules/monaco-editor/min/vs/base/worker/workerMain.js

View file

@ -0,0 +1 @@
../../../../node_modules/monaco-editor/min/vs/basic-languages/javascript/javascript.js

View file

@ -0,0 +1 @@
../../../../node_modules/monaco-editor/min/vs/basic-languages/typescript/typescript.js

View file

@ -0,0 +1 @@
../../../../node_modules/monaco-editor/min/vs/basic-languages/xml/xml.js

View file

@ -0,0 +1 @@
../../../node_modules/monaco-editor/min/vs/editor/editor.main.css

View file

@ -0,0 +1 @@
../../../node_modules/monaco-editor/min/vs/editor/editor.main.js

View file

@ -0,0 +1 @@
../../../node_modules/monaco-editor/min/vs/editor/editor.main.nls.js

View file

@ -0,0 +1 @@
../../../../node_modules/monaco-editor/min/vs/language/json/jsonMode.js

View file

@ -0,0 +1 @@
../../../../node_modules/monaco-editor/min/vs/language/json/jsonWorker.js

View file

@ -0,0 +1 @@
../../../../node_modules/monaco-editor/min/vs/language/typescript/tsMode.js

View file

@ -0,0 +1 @@
../../../../node_modules/monaco-editor/dev/vs/language/typescript/tsWorker.js

1
resource/vs/loader.js Symbolic link
View file

@ -0,0 +1 @@
../../node_modules/monaco-editor/min/vs/loader.js