ui: handle typings for NodeRequire

This commit is contained in:
undefined committed 2022-01-19 19:59:24 +08:00
1 parent 6bd3ee9135
commit 68d4522e49
4 files changed
+15 -4

No files matched your search

@@ -38,7 +38,7 @@ export default class UserSelectAutoComplete<Multi extends boolean> extends AutoC
<QueryClientProvider client={this.client}> <QueryClientProvider client={this.client}>
<UserSelectAutoCompleteFC <UserSelectAutoCompleteFC
ref={(ref) => { this.ref = ref; }} ref={(ref) => { this.ref = ref; }}
height={this.options.height || "34px"} height={this.options.height || '34px'}
defaultItems={value} defaultItems={value}
onChange={this.onChange} onChange={this.onChange}
multi={this.options.multi} multi={this.options.multi}
@@ -2,9 +2,10 @@ import * as monaco from 'monaco-editor/esm/vs/editor/editor.api';
const types = require.context('!!raw-loader!@types/node/', true, /\.d\.ts$/); const types = require.context('!!raw-loader!@types/node/', true, /\.d\.ts$/);
const diagnosticsOptions = { const diagnosticsOptions: monaco.languages.typescript.DiagnosticsOptions = {
noSemanticValidation: false, noSemanticValidation: false,
noSyntaxValidation: false, noSyntaxValidation: false,
noSuggestionDiagnostics: true,
}; };
const compilerOptions = { const compilerOptions = {
target: monaco.languages.typescript.ScriptTarget.ES2020, target: monaco.languages.typescript.ScriptTarget.ES2020,
@@ -22,9 +23,18 @@ const libSource = [
const libUri = 'ts:filename/basic.d.ts'; const libUri = 'ts:filename/basic.d.ts';
monaco.languages.typescript.javascriptDefaults.addExtraLib(libSource, libUri); monaco.languages.typescript.javascriptDefaults.addExtraLib(libSource, libUri);
monaco.editor.createModel(libSource, 'typescript', monaco.Uri.parse(libUri)); monaco.editor.createModel(libSource, 'typescript', monaco.Uri.parse(libUri));
const modules = [];
for (const key of types.keys()) { for (const key of types.keys()) {
const val = types(key).default; const val = types(key).default.replace('declare var require: NodeRequire;', '');
if (val.includes('declare module ')) {
modules.push(val.toString().split('declare module \'')[1].split('\'')[0]);
}
const uri = `ts:node/${key.split('./')[1]}`; const uri = `ts:node/${key.split('./')[1]}`;
monaco.languages.typescript.javascriptDefaults.addExtraLib(val, uri); monaco.languages.typescript.javascriptDefaults.addExtraLib(val, uri);
monaco.editor.createModel(val, 'typescript', monaco.Uri.parse(uri)); monaco.editor.createModel(val, 'typescript', monaco.Uri.parse(uri));
} }
let val = 'declare var require:';
for (const m of modules) val += `((id:'${m}')=>(typeof import('${m}')))&`;
val += '((id:string)=>any)';
monaco.languages.typescript.javascriptDefaults.addExtraLib(val, 'ts:node/require.d.ts');
monaco.editor.createModel(val, 'typescript', monaco.Uri.parse('ts:node/require.d.ts'));
+2 -1
View File
@@ -1,6 +1,6 @@
{ {
"name": "@hydrooj/ui-default", "name": "@hydrooj/ui-default",
"version": "4.30.0", "version": "4.30.1",
"author": "undefined <i@undefined.moe>", "author": "undefined <i@undefined.moe>",
"license": "AGPL-3.0", "license": "AGPL-3.0",
"main": "hydro.js", "main": "hydro.js",
@@ -17,6 +17,7 @@
"@types/json-schema": "^7.0.9", "@types/json-schema": "^7.0.9",
"@types/katex": "^0.11.1", "@types/katex": "^0.11.1",
"@types/qrcode": "^1.4.2", "@types/qrcode": "^1.4.2",
"@types/redux-logger": "^3.0.9",
"@types/sockjs-client": "^1.5.1", "@types/sockjs-client": "^1.5.1",
"@undefined-moe/monaco-yaml": "^2.5.0", "@undefined-moe/monaco-yaml": "^2.5.0",
"ansi_up": "^5.1.0", "ansi_up": "^5.1.0",