bug fixes

This commit is contained in:
undefined committed 2025-04-16 10:10:04 +08:00
1 parent b979185fd8
commit 71eceaa304
6 files changed
+20 -19

No files matched your search

+1
View File
@@ -160,6 +160,7 @@ Hydro 用户群:1085853538
- core: oauth: 改为使用 ctx.oauth.provide() 注册 - core: oauth: 改为使用 ctx.oauth.provide() 注册
- framework: 移除 ready 与 dispose 事件 (使用 ctx.effect 代替) - framework: 移除 ready 与 dispose 事件 (使用 ctx.effect 代替)
- core: 最低要求 node 22 - core: 最低要求 node 22
- core: 弃用 AdmZip
## Hydro 4.19.0 / UI 4.57.0 ## Hydro 4.19.0 / UI 4.57.0
+3 -3
View File
@@ -4,12 +4,12 @@
"license": "MIT", "license": "MIT",
"main": "base.mjs", "main": "base.mjs",
"dependencies": { "dependencies": {
"@eslint-react/eslint-plugin": "^1.47.2", "@eslint-react/eslint-plugin": "^1.47.4",
"@eslint/compat": "^1.2.8", "@eslint/compat": "^1.2.8",
"@eslint/eslintrc": "^3.3.1", "@eslint/eslintrc": "^3.3.1",
"@stylistic/eslint-plugin": "^4.2.0", "@stylistic/eslint-plugin": "^4.2.0",
"@typescript-eslint/eslint-plugin": "^8.29.1", "@typescript-eslint/eslint-plugin": "^8.30.1",
"@typescript-eslint/parser": "^8.29.1", "@typescript-eslint/parser": "^8.30.1",
"eslint-config-airbnb": "^19.0.4", "eslint-config-airbnb": "^19.0.4",
"eslint-plugin-de-morgan": "^1.2.1", "eslint-plugin-de-morgan": "^1.2.1",
"eslint-plugin-github": "^6.0.0", "eslint-plugin-github": "^6.0.0",
+1 -2
View File
@@ -16,7 +16,7 @@
"@aws-sdk/lib-storage": "3.726.1", "@aws-sdk/lib-storage": "3.726.1",
"@aws-sdk/s3-presigned-post": "3.726.1", "@aws-sdk/s3-presigned-post": "3.726.1",
"@aws-sdk/s3-request-presigner": "3.726.1", "@aws-sdk/s3-request-presigner": "3.726.1",
"@cordisjs/logger": "1.0.0-alpha.5", "@babel/code-frame": "^7.26.2",
"@cordisjs/plugin-timer": "1.1.1", "@cordisjs/plugin-timer": "1.1.1",
"@graphql-tools/schema": "^10.0.23", "@graphql-tools/schema": "^10.0.23",
"@hydrooj/common": "workspace:^", "@hydrooj/common": "workspace:^",
@@ -58,7 +58,6 @@
"ua-parser-js": "^2.0.3" "ua-parser-js": "^2.0.3"
}, },
"devDependencies": { "devDependencies": {
"@babel/code-frame": "^7.26.2",
"@types/adm-zip": "^0.5.7", "@types/adm-zip": "^0.5.7",
"@types/babel__code-frame": "^7.0.6", "@types/babel__code-frame": "^7.0.6",
"@types/fs-extra": "^11.0.4", "@types/fs-extra": "^11.0.4",
+2 -2
View File
@@ -1,4 +1,4 @@
import LoggerService from '@cordisjs/logger'; import LoggerService from '@cordisjs/plugin-logger';
import { TimerService } from '@cordisjs/plugin-timer'; import { TimerService } from '@cordisjs/plugin-timer';
import * as cordis from 'cordis'; import * as cordis from 'cordis';
import Schema from 'schemastery'; import Schema from 'schemastery';
@@ -18,7 +18,7 @@ function addScript<K>(name: string, description: string, validate: Schema<K>, ru
} }
function provideModule<T extends keyof ModuleInterfaces>(type: T, id: string, module: ModuleInterfaces[T]) { function provideModule<T extends keyof ModuleInterfaces>(type: T, id: string, module: ModuleInterfaces[T]) {
if (global.Hydro.module[type][id]) throw new Error(`duplicate script ${type}/${id} registered.`); if (global.Hydro.module[type][id]) throw new Error(`duplicate module ${type}/${id} registered.`);
global.Hydro.module[type as any][id] = module; global.Hydro.module[type as any][id] = module;
return () => delete global.Hydro.module[type][id]; return () => delete global.Hydro.module[type][id];
} }
+12 -11
View File
@@ -249,17 +249,18 @@ export function apply(ctx: Context) {
}), }),
]; ];
const zip = new Zip.ZipWriter(new Zip.BlobWriter()); const zip = new Zip.ZipWriter(new Zip.BlobWriter());
await zip.add('event-feed.ndjson', new Zip.TextReader(eventfeed.concat(submissions).concat(endState).map((i) => JSON.stringify(i)).join('\n'))); await Promise.all([
await zip.add('contest/logo.png', new Zip.BlobReader(new Blob([fs.readFileSync(findFileSync('@hydrooj/onsite-toolkit/public/logo.png'))]))); zip.add('event-feed.ndjson', new Zip.TextReader(eventfeed.concat(submissions).concat(endState).map((i) => JSON.stringify(i)).join('\n'))),
for (const i of ['teams', 'organizations']) { zip.add('contest/logo.png', new Zip.BlobReader(new Blob([fs.readFileSync(findFileSync('@hydrooj/onsite-toolkit/public/logo.png'))]))),
zip.add(`${i}/`, null, { directory: true }); zip.add('teams/', null, { directory: true }),
} zip.add('organizations/', null, { directory: true }),
for (const i of teams) { ]);
zip.add(`teams/${i.team_id}/photo.download.txt`, new Zip.TextReader(i.avatar)); await Promise.all(teams.map(async (i) => {
} await zip.add(`teams/${i.team_id}/photo.download.txt`, new Zip.TextReader(i.avatar));
for (const i of organizations) { }));
zip.add(`organizations/${orgId[i]}/photo.download.txt`, new Zip.TextReader(avatar(teams.find((j) => j.organization === i)?.avatar || 'no photo, find and download it yourself'))); await Promise.all(organizations.map(async (i) => {
} await zip.add(`organizations/${orgId[i]}/photo.download.txt`, new Zip.TextReader(avatar(teams.find((j) => j.organization === i)?.avatar || 'no photo, find and download it yourself')));
}));
this.binary(await zip.close(), `contest-${tdoc._id}-cdp.zip`); this.binary(await zip.close(), `contest-${tdoc._id}-cdp.zip`);
}, },
supportedRules: ['acm'], supportedRules: ['acm'],