ui: handle typings for NodeRequire

pull/297/head
undefined 3 years ago
parent 6bd3ee9135
commit 68d4522e49

@ -38,7 +38,7 @@ export default class UserSelectAutoComplete<Multi extends boolean> extends AutoC
<QueryClientProvider client={this.client}>
<UserSelectAutoCompleteFC
ref={(ref) => { this.ref = ref; }}
height={this.options.height || "34px"}
height={this.options.height || '34px'}
defaultItems={value}
onChange={this.onChange}
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 diagnosticsOptions = {
const diagnosticsOptions: monaco.languages.typescript.DiagnosticsOptions = {
noSemanticValidation: false,
noSyntaxValidation: false,
noSuggestionDiagnostics: true,
};
const compilerOptions = {
target: monaco.languages.typescript.ScriptTarget.ES2020,
@ -22,9 +23,18 @@ const libSource = [
const libUri = 'ts:filename/basic.d.ts';
monaco.languages.typescript.javascriptDefaults.addExtraLib(libSource, libUri);
monaco.editor.createModel(libSource, 'typescript', monaco.Uri.parse(libUri));
const modules = [];
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]}`;
monaco.languages.typescript.javascriptDefaults.addExtraLib(val, 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'));

@ -1,6 +1,6 @@
{
"name": "@hydrooj/ui-default",
"version": "4.30.0",
"version": "4.30.1",
"author": "undefined <i@undefined.moe>",
"license": "AGPL-3.0",
"main": "hydro.js",
@ -17,6 +17,7 @@
"@types/json-schema": "^7.0.9",
"@types/katex": "^0.11.1",
"@types/qrcode": "^1.4.2",
"@types/redux-logger": "^3.0.9",
"@types/sockjs-client": "^1.5.1",
"@undefined-moe/monaco-yaml": "^2.5.0",
"ansi_up": "^5.1.0",

Loading…
Cancel
Save