diff --git a/README.md b/README.md index cf09801f6..ff15f3d72 100644 --- a/README.md +++ b/README.md @@ -122,7 +122,16 @@ Hydro 用户群:1085853538 - core: 基于相对时间计算一血而非绝对时间 - ui&judge: 添加栈空间回显 - install: 在树莓派中自动启用 cgroup.memory +- install: 添加 shm 空间大小警告 - vjudge: 使用 vjudge.mount 表替代 domain.mount +- core: 升级到 cordis@4 +- framework: 支持同时启用多个 renderer +- core: 分离 HMR 和 Watcher 组件 +- core: i18n: 添加 interface 选项 +- judge: 添加 kattis checker 支持 +- core: 移除旧版本 bus 调用 +- migrate: 修复 hustoj 自动运行 +- core: 强制要求使用 inject 声明插件依赖 ## Hydro 4.19.0 / UI 4.57.0 diff --git a/framework/eslint-config/package.json b/framework/eslint-config/package.json index a42bfe648..fc3925b61 100644 --- a/framework/eslint-config/package.json +++ b/framework/eslint-config/package.json @@ -5,19 +5,22 @@ "main": "react.yaml", "dependencies": { "@stylistic/eslint-plugin": "^3.1.0", - "@typescript-eslint/eslint-plugin": "^8.24.1", - "@typescript-eslint/parser": "^8.24.1", + "@typescript-eslint/eslint-plugin": "^8.26.0", + "@typescript-eslint/parser": "^8.26.0", "eslint-config-airbnb": "^19.0.4", - "eslint-plugin-de-morgan": "^1.1.0", + "eslint-plugin-de-morgan": "^1.2.0", "eslint-plugin-github": "^5.1.8", "eslint-plugin-import": "2.31.0", "eslint-plugin-jsx-a11y": "^6.10.2", "eslint-plugin-react": "^7.37.4", - "eslint-plugin-react-hooks": "^5.1.0", + "eslint-plugin-react-hooks": "^5.2.0", "eslint-plugin-react-refresh": "^0.4.19", "eslint-plugin-simple-import-sort": "^12.1.1" }, "peerDependencies": { "eslint": ">= 8" + }, + "optionalDependencies": { + "typescript": "^5.8.2" } } diff --git a/framework/framework/package.json b/framework/framework/package.json index 13353f0a6..0e7420f29 100644 --- a/framework/framework/package.json +++ b/framework/framework/package.json @@ -10,7 +10,7 @@ "@hydrooj/utils": "workspace:^", "emoji-regex": "^10.4.0", "fs-extra": "^11.3.0", - "koa": "^2.15.4", + "koa": "^2.16.0", "koa-body": "^6.0.1", "koa-compress": "^5.1.1", "koa-router": "^13.0.1", @@ -20,15 +20,15 @@ "sanitize-filename": "^1.6.3", "saslprep": "^1.0.3", "shorty.js": "^1.0.1", - "ws": "^8.18.0" + "ws": "^8.18.1" }, "devDependencies": { "@types/fs-extra": "^11.0.4", "@types/koa": "^2.15.0", "@types/koa-compress": "^4.0.6", "@types/koa-router": "^7.4.8", - "@types/lodash": "^4.17.15", + "@types/lodash": "^4.17.16", "@types/saslprep": "^1.0.3", - "@types/ws": "^8.5.14" + "@types/ws": "^8.18.0" } } diff --git a/package.json b/package.json index 748bcdce8..c0486a1da 100644 --- a/package.json +++ b/package.json @@ -36,7 +36,7 @@ "@types/autocannon": "^7.12.6", "@types/chai": "^5.0.1", "@types/cross-spawn": "^6.0.6", - "@types/node": "22.13.4", + "@types/node": "22.13.8", "@types/semver": "^7.5.8", "autocannon": "^8.0.0", "cac": "^6.7.14", @@ -45,7 +45,7 @@ "cross-spawn": "^7.0.6", "esbuild": "0.25.0", "eslint": "^8.57.1", - "eslint-import-resolver-typescript": "^3.8.2", + "eslint-import-resolver-typescript": "^3.8.3", "eslint-import-resolver-webpack": "^0.13.10", "fs-extra": "^11.3.0", "globby": "~14.0.2", @@ -58,7 +58,7 @@ "simple-git": "^3.27.0", "supertest": "^7.0.0", "supports-hyperlinks": "^3.2.0", - "typescript": "5.7.3", + "typescript": "5.8.2", "wtfnode": "^0.10.0" } } diff --git a/packages/elastic/package.json b/packages/elastic/package.json index 895448400..f180a1a22 100644 --- a/packages/elastic/package.json +++ b/packages/elastic/package.json @@ -6,6 +6,6 @@ "author": "undefined ", "license": "AGPL-3.0-or-later", "dependencies": { - "@elastic/elasticsearch": "^8.17.0" + "@elastic/elasticsearch": "^8.17.1" } } diff --git a/packages/hydrojudge/package.json b/packages/hydrojudge/package.json index 114442a94..177a189b6 100644 --- a/packages/hydrojudge/package.json +++ b/packages/hydrojudge/package.json @@ -11,17 +11,17 @@ "adm-zip": "0.5.14", "cac": "^6.7.14", "p-queue": "^8.1.0", - "schemastery": "^3.16.0", + "schemastery": "^3.16.1", "semver": "^7.7.1", "shell-quote": "^1.8.2", "superagent": "^10.1.1", - "ws": "^8.18.0" + "ws": "^8.18.1" }, "preferUnplugged": true, "license": "AGPL-3.0-or-later", "devDependencies": { "@types/adm-zip": "^0.4.34", "@types/shell-quote": "^1.7.5", - "@types/ws": "^8.5.14" + "@types/ws": "^8.18.0" } } diff --git a/packages/hydrooj/package.json b/packages/hydrooj/package.json index e8e558755..7c4f7ce8e 100644 --- a/packages/hydrooj/package.json +++ b/packages/hydrooj/package.json @@ -19,13 +19,13 @@ "@cordisjs/core": "4.0.0-alpha.1", "@cordisjs/logger": "1.0.0-alpha.1", "@cordisjs/plugin-timer": "1.0.0-alpha.0", - "@graphql-tools/schema": "^10.0.18", + "@graphql-tools/schema": "^10.0.21", "@hydrooj/common": "workspace:^", "@hydrooj/framework": "workspace:^", "@hydrooj/utils": "workspace:^", "@simplewebauthn/server": "13.1.1", "@undefined-moe/require-resolve-hook": "^1.1.0", - "@yarnpkg/libzip": "^3.1.0", + "@yarnpkg/libzip": "^3.1.1", "adm-zip": "0.5.14", "cac": "^6.7.14", "csv-stringify": "^6.5.2", @@ -43,13 +43,13 @@ "moment-timezone": "^0.5.47", "mongodb": "^5.9.2", "mongodb-uri": "^0.9.7", - "nanoid": "^5.1.0", + "nanoid": "^5.1.2", "nodemailer": "^6.10.0", "notp": "^2.0.3", "p-queue": "^8.1.0", "sanitize-filename": "^1.6.3", "saslprep": "^1.0.3", - "schemastery": "^3.16.0", + "schemastery": "^3.16.1", "semver": "^7.7.1", "shorty.js": "^1.0.1", "superagent": "^10.1.1", @@ -64,7 +64,7 @@ "@types/fs-extra": "^11.0.4", "@types/js-yaml": "^4.0.9", "@types/koa-static-cache": "^5.1.4", - "@types/lodash": "^4.17.15", + "@types/lodash": "^4.17.16", "@types/mime-types": "^2.1.4", "@types/mongodb-uri": "^0.9.4", "@types/nodemailer": "^6.4.17", diff --git a/packages/hydrooj/src/entry/worker.ts b/packages/hydrooj/src/entry/worker.ts index 0e108738d..bcda013c5 100644 --- a/packages/hydrooj/src/entry/worker.ts +++ b/packages/hydrooj/src/entry/worker.ts @@ -39,7 +39,7 @@ export async function apply(ctx: Context) { await modelSystem.runConfig(); const storage = require('../service/storage'); await storage.loadStorageService(); - ctx.plugin(require('../service/hmr').default, { watch: argv.options.watch }); + await ctx.plugin(require('../service/hmr').default, { watch: argv.options.watch }); await require('../service/worker').apply(ctx); await require('../service/server').apply(ctx); ctx = await new Promise((resolve) => { diff --git a/packages/hydrooj/src/loader.ts b/packages/hydrooj/src/loader.ts index 776a382d7..09cad37b6 100644 --- a/packages/hydrooj/src/loader.ts +++ b/packages/hydrooj/src/loader.ts @@ -59,12 +59,12 @@ export class Loader extends Service { public cache: Record = Object.create(null); // public warnings: Record = Object.create(null); - constructor(private app: Context) { - super(app, 'loader'); + constructor(ctx: Context) { + super(ctx, 'loader'); } [Service.setup]() { - this.app.on('app/started', () => { + this.ctx.on('app/started', () => { this.ctx.setInterval(async () => { const pending = Object.entries(this.state).filter((v) => v[1].status === ScopeStatus.PENDING); if (pending.length) { diff --git a/packages/ui-default/package.json b/packages/ui-default/package.json index 571376621..6c5d725f6 100644 --- a/packages/ui-default/package.json +++ b/packages/ui-default/package.json @@ -14,19 +14,19 @@ "cli": false }, "devDependencies": { - "@blueprintjs/core": "^5.16.6", + "@blueprintjs/core": "^5.17.5", "@cordisjs/core": "4.0.0-alpha.1", - "@fontsource/dm-mono": "^5.1.1", - "@fontsource/fira-code": "^5.1.1", - "@fontsource/inconsolata": "^5.1.1", - "@fontsource/jetbrains-mono": "^5.1.2", - "@fontsource/pt-mono": "^5.1.1", - "@fontsource/roboto-mono": "^5.1.1", - "@fontsource/source-code-pro": "^5.1.1", - "@fontsource/ubuntu-mono": "^5.1.1", + "@fontsource/dm-mono": "^5.2.5", + "@fontsource/fira-code": "^5.2.5", + "@fontsource/inconsolata": "^5.2.5", + "@fontsource/jetbrains-mono": "^5.2.5", + "@fontsource/pt-mono": "^5.2.5", + "@fontsource/roboto-mono": "^5.2.5", + "@fontsource/source-code-pro": "^5.2.5", + "@fontsource/ubuntu-mono": "^5.2.5", "@hydrooj/utils": "workspace:^", - "@sentry/browser": "^9.1.0", - "@sentry/webpack-plugin": "^3.2.0", + "@sentry/browser": "^9.3.0", + "@sentry/webpack-plugin": "^3.2.2", "@simplewebauthn/browser": "13.1.0", "@svgr/webpack": "^8.1.0", "@types/html-to-text": "^9.0.4", @@ -53,8 +53,8 @@ "clean-webpack-plugin": "^4.0.0", "clipboard": "^2.0.11", "copy-webpack-plugin": "^12.0.2", - "core-js": "^3.40.0", - "core-js-compat": "^3.40.0", + "core-js": "^3.41.0", + "core-js-compat": "^3.41.0", "css-loader": "^6.11.0", "diff": "^7.0.0", "diff-dom": "^5.1.4", @@ -70,7 +70,7 @@ "jquery.easing": "^1.4.1", "jquery.transit": "^0.9.12", "matchmedia-polyfill": "^0.3.2", - "md-editor-rt": "^5.2.3", + "md-editor-rt": "^5.3.0", "mini-css-extract-plugin": "^2.9.2", "moment": "^2.30.1", "monaco-editor": "0.52.2", @@ -78,7 +78,7 @@ "monaco-editor-webpack-plugin": "^7.1.0", "monaco-themes": "^0.4.4", "monaco-yaml": "5.1.1", - "nanoid": "^5.1.0", + "nanoid": "^5.1.2", "normalize.css": "^8.0.1", "nprogress": "^0.2.0", "p-queue": "^8.1.0", @@ -102,17 +102,17 @@ "redux-promise-middleware": "^6.2.0", "redux-thunk": "^3.1.0", "rupture": "^0.7.1", - "schemastery": "^3.16.0", + "schemastery": "^3.16.1", "shorty.js": "^1.0.1", "slideout": "^1.0.1", "sticky-kit": "^1.1.3", "style-loader": "^4.0.0", "stylus": "^0.64.0", "stylus-loader": "7.1.2", - "svgtofont": "^6.3.0", + "svgtofont": "^6.3.1", "tether": "1.4.7", "tether-drop": "^1.4.2", - "timeago-react": "^3.0.6", + "timeago-react": "^3.0.7", "timeago.js": "^4.0.2", "ts-loader": "^9.5.2", "web-streams-polyfill": "^4.1.0",