From 7f7bff9613266a78d0d48320a631b81e3ff79cf0 Mon Sep 17 00:00:00 2001 From: undefined Date: Fri, 14 Nov 2025 04:57:49 +0800 Subject: [PATCH] ui: remove deprecated util global --- packages/ui-default/api.ts | 23 ++++++------------- .../autocomplete/AssignSelectAutoComplete.tsx | 2 -- .../autocomplete/CustomSelectAutoComplete.tsx | 2 -- .../autocomplete/DomainSelectAutoComplete.tsx | 2 -- .../autocomplete/FileSelectAutoComplete.tsx | 2 -- .../LanguageSelectAutoComplete.tsx | 2 -- .../ProblemSelectAutoComplete.tsx | 2 -- .../autocomplete/UserSelectAutoComplete.tsx | 2 -- .../components/autocomplete/index.tsx | 2 -- .../ui-default/components/dialog/index.tsx | 8 ------- .../ui-default/components/monaco/loader.ts | 1 - .../components/notification/index.ts | 2 -- .../components/zipDownloader/index.ts | 3 --- packages/ui-default/entry.js | 2 -- packages/ui-default/lazyload.ts | 1 - packages/ui-default/package.json | 4 ++-- packages/ui-default/utils/base.ts | 13 ----------- packages/ui-default/utils/base64.js | 1 - packages/ui-default/utils/index.ts | 8 ------- packages/ui-default/utils/loadReactRedux.ts | 2 -- packages/ui-default/utils/mediaQuery.ts | 2 -- packages/ui-default/utils/pjax.js | 1 - packages/ui-default/utils/slide.ts | 2 -- 23 files changed, 9 insertions(+), 80 deletions(-) diff --git a/packages/ui-default/api.ts b/packages/ui-default/api.ts index 23fc82f55..07ad49621 100644 --- a/packages/ui-default/api.ts +++ b/packages/ui-default/api.ts @@ -2,6 +2,7 @@ export * from './components/dialog'; export { default as loadMonaco } from './components/monaco/loader'; export { default as Notification } from './components/notification'; +export { default as selectUser } from './components/selectUser'; export { default as Socket } from './components/socket/index'; export { default as uploadFiles } from './components/upload'; export * from './components/zipDownloader'; @@ -16,11 +17,15 @@ export { AnsiUp } from 'ansi_up'; export { default as $ } from 'jquery'; export { default as _ } from 'lodash'; export { default as React } from 'react'; -export { default as ReactDOM } from 'react-dom/client'; export * as redux from 'react-redux'; export { default as jsxRuntime } from 'react/jsx-runtime'; +import ReactDOMMain from 'react-dom'; +import ReactDOMClient from 'react-dom/client'; import { load } from './lazyload'; +Object.assign(ReactDOMMain, ReactDOMClient); + +export const ReactDOM = ReactDOMMain as typeof ReactDOMMain & typeof ReactDOMClient; export default load; export interface EventMap { } @@ -51,19 +56,5 @@ declare global { // Below are old version api compat import $ from 'jquery'; -import _ from 'lodash'; -import React from 'react'; -import ReactDOM from 'react-dom/client'; -import * as redux from 'react-redux'; -const modules = { - _, $, React, redux, ReactDOM, -}; - -declare global { - interface Window { - node_modules: typeof modules; - } -} - -Object.assign(window, { node_modules: modules, $, jQuery: $ }); +Object.assign(window, { $, jQuery: $ }); diff --git a/packages/ui-default/components/autocomplete/AssignSelectAutoComplete.tsx b/packages/ui-default/components/autocomplete/AssignSelectAutoComplete.tsx index 92dea64fc..516427288 100644 --- a/packages/ui-default/components/autocomplete/AssignSelectAutoComplete.tsx +++ b/packages/ui-default/components/autocomplete/AssignSelectAutoComplete.tsx @@ -20,5 +20,3 @@ export default class AssignSelectAutoComplete extends Aut return this.ref?.getSelectedItemKeys().join(',') ?? this.$dom.val(); } } - -window.Hydro.components.AssignSelectAutoComplete = AssignSelectAutoComplete; diff --git a/packages/ui-default/components/autocomplete/CustomSelectAutoComplete.tsx b/packages/ui-default/components/autocomplete/CustomSelectAutoComplete.tsx index b0fef65d3..3e07d313f 100644 --- a/packages/ui-default/components/autocomplete/CustomSelectAutoComplete.tsx +++ b/packages/ui-default/components/autocomplete/CustomSelectAutoComplete.tsx @@ -21,5 +21,3 @@ export default class CustomSelectAutoComplete extends Aut }); } } - -window.Hydro.components.CustomSelectAutoComplete = CustomSelectAutoComplete; diff --git a/packages/ui-default/components/autocomplete/DomainSelectAutoComplete.tsx b/packages/ui-default/components/autocomplete/DomainSelectAutoComplete.tsx index 4f566c4bf..c51ed4482 100644 --- a/packages/ui-default/components/autocomplete/DomainSelectAutoComplete.tsx +++ b/packages/ui-default/components/autocomplete/DomainSelectAutoComplete.tsx @@ -16,5 +16,3 @@ export default class DomainSelectAutoComplete extends Aut }); } } - -window.Hydro.components.DomainSelectAutoComplete = DomainSelectAutoComplete; diff --git a/packages/ui-default/components/autocomplete/FileSelectAutoComplete.tsx b/packages/ui-default/components/autocomplete/FileSelectAutoComplete.tsx index 2e051279e..2878b607a 100644 --- a/packages/ui-default/components/autocomplete/FileSelectAutoComplete.tsx +++ b/packages/ui-default/components/autocomplete/FileSelectAutoComplete.tsx @@ -24,5 +24,3 @@ export default class FileSelectAutoComplete extends AutoC }); } } - -window.Hydro.components.FileSelectAutoComplete = FileSelectAutoComplete; diff --git a/packages/ui-default/components/autocomplete/LanguageSelectAutoComplete.tsx b/packages/ui-default/components/autocomplete/LanguageSelectAutoComplete.tsx index 63664c75c..c62245453 100644 --- a/packages/ui-default/components/autocomplete/LanguageSelectAutoComplete.tsx +++ b/packages/ui-default/components/autocomplete/LanguageSelectAutoComplete.tsx @@ -22,5 +22,3 @@ export default class LanguageSelectAutoComplete extends A }); } } - -window.Hydro.components.LanguageSelectAutoComplete = LanguageSelectAutoComplete; diff --git a/packages/ui-default/components/autocomplete/ProblemSelectAutoComplete.tsx b/packages/ui-default/components/autocomplete/ProblemSelectAutoComplete.tsx index 5e456537a..c26115283 100644 --- a/packages/ui-default/components/autocomplete/ProblemSelectAutoComplete.tsx +++ b/packages/ui-default/components/autocomplete/ProblemSelectAutoComplete.tsx @@ -16,5 +16,3 @@ export default class ProblemSelectAutoComplete extends AutoComplete { }); } } - -window.Hydro.components.ProblemSelectAutoComplete = ProblemSelectAutoComplete; diff --git a/packages/ui-default/components/autocomplete/UserSelectAutoComplete.tsx b/packages/ui-default/components/autocomplete/UserSelectAutoComplete.tsx index fc67d282e..ae4728f66 100644 --- a/packages/ui-default/components/autocomplete/UserSelectAutoComplete.tsx +++ b/packages/ui-default/components/autocomplete/UserSelectAutoComplete.tsx @@ -21,5 +21,3 @@ export default class UserSelectAutoComplete extends AutoC return this.ref?.getSelectedItems()[0] ?? null; } } - -window.Hydro.components.UserSelectAutoComplete = UserSelectAutoComplete; diff --git a/packages/ui-default/components/autocomplete/index.tsx b/packages/ui-default/components/autocomplete/index.tsx index 4f3a0513c..0530d1eee 100644 --- a/packages/ui-default/components/autocomplete/index.tsx +++ b/packages/ui-default/components/autocomplete/index.tsx @@ -108,5 +108,3 @@ export default class AutoComplete = object, this.ref.focus(); } } - -window.Hydro.components.autocomplete = AutoComplete; diff --git a/packages/ui-default/components/dialog/index.tsx b/packages/ui-default/components/dialog/index.tsx index a39e202ab..cc639332d 100644 --- a/packages/ui-default/components/dialog/index.tsx +++ b/packages/ui-default/components/dialog/index.tsx @@ -262,11 +262,3 @@ export async function alert(text: string) { $body: tpl.typoMsg(text), }).open(); } - -window.Hydro.components.Dialog = Dialog; -window.Hydro.components.InfoDialog = InfoDialog; -window.Hydro.components.ActionDialog = ActionDialog; -window.Hydro.components.ConfirmDialog = ConfirmDialog; -window.Hydro.components.prompt = prompt; -window.Hydro.components.confirm = confirm; -window.Hydro.components.alert = alert; diff --git a/packages/ui-default/components/monaco/loader.ts b/packages/ui-default/components/monaco/loader.ts index a7f17c9de..f52b6547b 100644 --- a/packages/ui-default/components/monaco/loader.ts +++ b/packages/ui-default/components/monaco/loader.ts @@ -94,4 +94,3 @@ export async function load(features = ['markdown']) { } export default load; -window.Hydro.components.loadMonaco = load; diff --git a/packages/ui-default/components/notification/index.ts b/packages/ui-default/components/notification/index.ts index 5f91e54cb..befd6fd4e 100644 --- a/packages/ui-default/components/notification/index.ts +++ b/packages/ui-default/components/notification/index.ts @@ -132,5 +132,3 @@ export default class Notification { }); } } - -window.Hydro.components.Notification = Notification; diff --git a/packages/ui-default/components/zipDownloader/index.ts b/packages/ui-default/components/zipDownloader/index.ts index 526bbb2cd..b749029a2 100644 --- a/packages/ui-default/components/zipDownloader/index.ts +++ b/packages/ui-default/components/zipDownloader/index.ts @@ -155,6 +155,3 @@ export async function downloadProblemSet(pids, name = 'Export') { Notification.error(`${e.message} ${e.params?.[0]}`); } } - -window.Hydro.components.downloadProblemSet = downloadProblemSet; -window.Hydro.components.download = download; diff --git a/packages/ui-default/entry.js b/packages/ui-default/entry.js index b75744a90..6a900df3a 100644 --- a/packages/ui-default/entry.js +++ b/packages/ui-default/entry.js @@ -5,8 +5,6 @@ import $ from 'jquery'; window.Hydro = { extraPages: [], components: {}, - utils: {}, - node_modules: {}, version: process.env.VERSION, }; window.externalModules = {}; diff --git a/packages/ui-default/lazyload.ts b/packages/ui-default/lazyload.ts index 0ed81fb20..ab139528f 100644 --- a/packages/ui-default/lazyload.ts +++ b/packages/ui-default/lazyload.ts @@ -1,7 +1,6 @@ const lazyModules = {}; const features: Record Promise)> = {}; export default async function load(name: string) { - if (window.node_modules[name]) return window.node_modules[name]; if (name === 'echarts') return import('echarts'); if (name === 'moment') return import('moment'); if (!window.lazyloadMetadata?.[`${name}.lazy.js`]) throw new Error(`Module ${name} not found`); diff --git a/packages/ui-default/package.json b/packages/ui-default/package.json index e17a14b5a..341a2d346 100644 --- a/packages/ui-default/package.json +++ b/packages/ui-default/package.json @@ -36,7 +36,7 @@ "@types/nunjucks": "^3.2.6", "@types/pickadate": "^3.5.35", "@types/qrcode": "^1.5.6", - "@types/react": "^19.2.3", + "@types/react": "^19.2.4", "@types/react-dom": "^19.2.3", "@types/redux-logger": "^3.0.13", "@types/uuid": "^11.0.0", @@ -130,7 +130,7 @@ "esbuild": "0.25.2", "fs-extra": "^11.3.2", "html-to-text": "^9.0.5", - "js-yaml": "^4.1.0", + "js-yaml": "^4.1.1", "jsesc": "^3.1.0", "katex": "^0.16.25", "lodash": "^4.17.21", diff --git a/packages/ui-default/utils/base.ts b/packages/ui-default/utils/base.ts index 9ee4667d6..3407b2282 100644 --- a/packages/ui-default/utils/base.ts +++ b/packages/ui-default/utils/base.ts @@ -204,16 +204,3 @@ export async function setTemporaryViewTransitionNames(entries, vtPromise: Promis export function getTheme(): 'dark' | 'light' { return ['light', 'dark'].includes(UserContext.theme) ? UserContext.theme : 'light'; } - -Object.assign(window.Hydro.utils, { - i18n, - rawHtml, - substitute, - secureRandomString, - request, - tpl, - delay, - zIndexManager, - withTransitionCallback, - setTemporaryViewTransitionNames, -}); diff --git a/packages/ui-default/utils/base64.js b/packages/ui-default/utils/base64.js index 523e470dd..54cff0a0c 100644 --- a/packages/ui-default/utils/base64.js +++ b/packages/ui-default/utils/base64.js @@ -102,4 +102,3 @@ const Base64 = { }; export default Base64; -window.Hydro.utils.base64 = Base64; diff --git a/packages/ui-default/utils/index.ts b/packages/ui-default/utils/index.ts index 2b75b0e1f..40d6ba1f6 100644 --- a/packages/ui-default/utils/index.ts +++ b/packages/ui-default/utils/index.ts @@ -71,11 +71,3 @@ export { default as loadReactRedux } from './loadReactRedux'; export * as mediaQuery from './mediaQuery'; export { default as pjax } from './pjax'; export * from './slide'; - -const zip = { createZipStream, createZipBlob }; -Object.assign(window.Hydro.utils, { - zip, - pipeStream, - mongoId, - emulateAnchorClick, -}); diff --git a/packages/ui-default/utils/loadReactRedux.ts b/packages/ui-default/utils/loadReactRedux.ts index 3236d9f5e..e6cb01015 100644 --- a/packages/ui-default/utils/loadReactRedux.ts +++ b/packages/ui-default/utils/loadReactRedux.ts @@ -30,5 +30,3 @@ export default async function loadReactRedux