mirror of
https://gitcode.com/gh_mirrors/hy/Hydro.git
synced 2026-10-19 01:38:19 +08:00
ui: monaco: upgrade to 0.57, drop monaco-editor-webpack-plugin
- Migrate entry points to the 0.57 exports scheme (monaco-editor/editor, languages/features/typescript/register) - Wire workers via the official MonacoEnvironment.getWorker + new Worker(new URL(...)) integration; webpack emits them as shared-chunk classic workers (chrome 70 compatible), total assets -21% - Keep css/html/json language features (register.all) and route their worker labels; json is used by the cmeditor textareas - Replace removed esm/vs/nls.messages with an inline implementation in the nls shim - Drop MinChunkSizePlugin: it merged worker chunks into the main chunk and broke the runtime id module (webpack#15416) - Remove monaco-editor-webpack-plugin dependency - loadMonaco() now returns the loaded feature module exports, e.g. loadMonaco(['typescript']).typescript.javascriptDefaults
This commit is contained in:
1 parent
80638bf9ab
commit
489b2dbeec
11 files changed
+103
-42
No files matched your search
@@ -1,6 +1,6 @@
|
||||
import keyword from 'emojis-keywords';
|
||||
import list from 'emojis-list';
|
||||
import * as monaco from 'monaco-editor/esm/vs/editor/editor.api';
|
||||
import * as monaco from 'monaco-editor/editor';
|
||||
import qface from 'qface';
|
||||
import { api } from 'vj/utils';
|
||||
|
||||
|
||||
@@ -1,27 +1,31 @@
|
||||
import * as monaco from 'monaco-editor/esm/vs/editor/editor.api';
|
||||
import * as monaco from 'monaco-editor/editor';
|
||||
import type { CompilerOptions, DiagnosticsOptions } from 'monaco-editor/languages/features/typescript/register.js';
|
||||
import {
|
||||
javascriptDefaults, ModuleKind, ModuleResolutionKind, ScriptTarget,
|
||||
typescriptDefaults } from 'monaco-editor/languages/features/typescript/register.js';
|
||||
|
||||
const types = require.context('@types/node/', true, /\.d\.ts$/, 'lazy-once');
|
||||
|
||||
const diagnosticsOptions: monaco.languages.typescript.DiagnosticsOptions = {
|
||||
const diagnosticsOptions: DiagnosticsOptions = {
|
||||
noSemanticValidation: false,
|
||||
noSyntaxValidation: false,
|
||||
noSuggestionDiagnostics: true,
|
||||
};
|
||||
const compilerOptions: monaco.languages.typescript.CompilerOptions = {
|
||||
target: monaco.languages.typescript.ScriptTarget.ES2020,
|
||||
module: monaco.languages.typescript.ModuleKind.ESNext,
|
||||
const compilerOptions: CompilerOptions = {
|
||||
target: ScriptTarget.ES2020,
|
||||
module: ModuleKind.ESNext,
|
||||
allowNonTsExtensions: true,
|
||||
};
|
||||
monaco.languages.typescript.javascriptDefaults.setDiagnosticsOptions(diagnosticsOptions);
|
||||
monaco.languages.typescript.typescriptDefaults.setDiagnosticsOptions(diagnosticsOptions);
|
||||
monaco.languages.typescript.javascriptDefaults.setCompilerOptions(compilerOptions);
|
||||
monaco.languages.typescript.typescriptDefaults.setCompilerOptions(compilerOptions);
|
||||
javascriptDefaults.setDiagnosticsOptions(diagnosticsOptions);
|
||||
typescriptDefaults.setDiagnosticsOptions(diagnosticsOptions);
|
||||
javascriptDefaults.setCompilerOptions(compilerOptions);
|
||||
typescriptDefaults.setCompilerOptions(compilerOptions);
|
||||
const libSource = [
|
||||
'declare function readline(): string;',
|
||||
'declare function print(content: string): void;',
|
||||
].join('\n');
|
||||
const libUri = 'ts:filename/basic.d.ts';
|
||||
monaco.languages.typescript.javascriptDefaults.addExtraLib(libSource, libUri);
|
||||
javascriptDefaults.addExtraLib(libSource, libUri);
|
||||
monaco.editor.createModel(libSource, 'typescript', monaco.Uri.parse(libUri));
|
||||
const modules = [];
|
||||
|
||||
@@ -34,12 +38,16 @@ export async function loadTypes() {
|
||||
modules.push(val.toString().split('declare module \'')[1].split('\'')[0]);
|
||||
}
|
||||
const uri = `ts:node/${key.split('./')[1]}`;
|
||||
monaco.languages.typescript.javascriptDefaults.addExtraLib(val, uri);
|
||||
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');
|
||||
javascriptDefaults.addExtraLib(val, 'ts:node/require.d.ts');
|
||||
monaco.editor.createModel(val, 'typescript', monaco.Uri.parse('ts:node/require.d.ts'));
|
||||
}
|
||||
|
||||
export {
|
||||
javascriptDefaults, ModuleKind, ModuleResolutionKind, ScriptTarget, typescriptDefaults,
|
||||
};
|
||||
@@ -1,8 +1,8 @@
|
||||
import * as monaco from 'monaco-editor/esm/vs/editor/editor.api';
|
||||
import * as monaco from 'monaco-editor/editor';
|
||||
import { configureMonacoYaml } from 'monaco-yaml';
|
||||
import problemConfigSchema from '../schema/problemconfig';
|
||||
|
||||
configureMonacoYaml(monaco, {
|
||||
configureMonacoYaml(monaco as any, {
|
||||
validate: true,
|
||||
enableSchemaRequest: true,
|
||||
hover: true,
|
||||
|
||||
Reference in new issue
Block a user