From aadc8cdde1903c0c30da3533092b837fcb005ab6 Mon Sep 17 00:00:00 2001 From: undefined Date: Wed, 8 Dec 2021 23:15:27 +0800 Subject: [PATCH] ui: add node typings --- packages/hydrooj/package.json | 2 +- packages/hydrooj/src/lib/misc.ts | 5 +++-- .../components/monaco/languages/typescript.ts | 11 +++++++++++ packages/ui-default/package.json | 3 ++- 4 files changed, 17 insertions(+), 4 deletions(-) diff --git a/packages/hydrooj/package.json b/packages/hydrooj/package.json index 0cfbc721b..cba56e74c 100644 --- a/packages/hydrooj/package.json +++ b/packages/hydrooj/package.json @@ -1,6 +1,6 @@ { "name": "hydrooj", - "version": "3.2.13", + "version": "3.2.14", "bin": "bin/hydrooj.js", "main": "src/loader", "module": "src/loader", diff --git a/packages/hydrooj/src/lib/misc.ts b/packages/hydrooj/src/lib/misc.ts index a2b038bba..8e90c3625 100644 --- a/packages/hydrooj/src/lib/misc.ts +++ b/packages/hydrooj/src/lib/misc.ts @@ -7,8 +7,9 @@ export { size, formatSeconds } from '@hydrooj/utils/lib/utils'; const AU = new AnsiUp(); -export function ansiToHtml(str: string) { - return AU.ansi_to_html(str); +export function ansiToHtml(str: string, whiteToBlack = true) { + const res = AU.ansi_to_html(str); + return whiteToBlack ? res.replace(/style="color:rgb\(255,255,255\)"/g, 'style="color:black"') : res; } export function datetimeSpan(dt: Date | ObjectID, relative = true, format = 'YYYY-M-D H:mm:ss', tz = 'Asia/Shanghai') { diff --git a/packages/ui-default/components/monaco/languages/typescript.ts b/packages/ui-default/components/monaco/languages/typescript.ts index 827c05b56..a8c4d14d9 100644 --- a/packages/ui-default/components/monaco/languages/typescript.ts +++ b/packages/ui-default/components/monaco/languages/typescript.ts @@ -1,5 +1,7 @@ import * as monaco from 'monaco-editor/esm/vs/editor/editor.api'; +const types = require.context('!!raw-loader!@types/node/', true, /\.d\.ts$/); + monaco.languages.typescript.javascriptDefaults.setDiagnosticsOptions({ noSemanticValidation: false, noSyntaxValidation: false, @@ -12,6 +14,15 @@ 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); monaco.editor.createModel(libSource, 'typescript', monaco.Uri.parse(libUri)); +for (const key of types.keys()) { + const val = types(key).default; + const uri = `ts:node/${key.split('./')[1]}`; + console.log(val, uri); + monaco.languages.typescript.javascriptDefaults.addExtraLib(val, uri); + monaco.editor.createModel(val, 'typescript', monaco.Uri.parse(uri)); +} +console.log(types); diff --git a/packages/ui-default/package.json b/packages/ui-default/package.json index 29789fcb4..57e37f90b 100644 --- a/packages/ui-default/package.json +++ b/packages/ui-default/package.json @@ -1,6 +1,6 @@ { "name": "@hydrooj/ui-default", - "version": "4.27.2", + "version": "4.27.3", "author": "undefined ", "license": "AGPL-3.0", "main": "hydro.js", @@ -66,6 +66,7 @@ "prismjs": "^1.25.0", "prop-types": "^15.7.2", "qrcode": "^1.5.0", + "raw-loader": "^4.0.2", "react": "^17.0.2", "react-dom": "^17.0.2", "react-redux": "^7.2.6",