From 8cffe19609e2c84cbf7081b502e2ad603bb6c2bd Mon Sep 17 00:00:00 2001 From: undefined Date: Tue, 4 Oct 2022 21:31:58 +0800 Subject: [PATCH] workspace: upgrade deps --- package.json | 22 ++++++------ packages/center/index.ts | 11 ++++-- packages/elastic/index.ts | 5 ++- packages/fps-importer/index.ts | 5 ++- packages/geoip/package.json | 2 +- packages/hydrojudge/package.json | 9 ++--- packages/hydrojudge/src/hosts/hydro.ts | 2 +- packages/hydrooj/package.json | 24 ++++++------- packages/hydrooj/src/interface.ts | 50 +++++++++++++------------- packages/hydrooj/src/plugin-api.ts | 4 ++- packages/hydrooj/src/service/db.ts | 6 ++-- packages/ui-default/index.ts | 2 +- packages/ui-default/package.json | 44 +++++++++++------------ packages/utils/lib/utils.ts | 9 +++-- packages/utils/package.json | 2 +- packages/vjudge/package.json | 6 ++-- packages/vjudge/src/providers/luogu.ts | 5 ++- 17 files changed, 110 insertions(+), 98 deletions(-) diff --git a/package.json b/package.json index 50c738a9..8e1e2790 100644 --- a/package.json +++ b/package.json @@ -30,39 +30,39 @@ "version": "1.0.0", "license": "AGPL-3.0-only", "devDependencies": { - "@types/autocannon": "^7.6.1", + "@types/autocannon": "^7.9.0", "@types/cross-spawn": "^6.0.2", "@types/mocha": "^9.1.1", - "@types/node": "^18.7.14", + "@types/node": "^18.8.1", "@types/semver": "^7.3.12", "@types/supertest": "^2.0.12", - "@typescript-eslint/eslint-plugin": "^5.36.1", - "@typescript-eslint/parser": "^5.36.1", - "autocannon": "^7.9.0", + "@typescript-eslint/eslint-plugin": "^5.39.0", + "@typescript-eslint/parser": "^5.39.0", + "autocannon": "^7.10.0", "cac": "^6.7.14", "cross-env": "^7.0.3", "cross-spawn": "^7.0.3", "esbuild": "0.15.2", - "eslint": "^8.23.0", + "eslint": "^8.24.0", "eslint-config-airbnb": "^19.0.4", "eslint-config-airbnb-typescript": "^17.0.0", - "eslint-import-resolver-typescript": "^3.5.0", + "eslint-import-resolver-typescript": "^3.5.1", "eslint-import-resolver-webpack": "^0.13.2", "eslint-plugin-import": "2.26.0", "eslint-plugin-jsx-a11y": "^6.6.1", - "eslint-plugin-react": "^7.31.2", + "eslint-plugin-react": "^7.31.8", "eslint-plugin-react-hooks": "^4.6.0", - "eslint-plugin-simple-import-sort": "7.0.0", + "eslint-plugin-simple-import-sort": "8.0.0", "fs-extra": "^10.1.0", "globby": "11.1.0", "latest-version": "7.0.0", "mocha": "^10.0.0", "mongodb": "^3.7.3", - "mongodb-memory-server": "^8.9.1", + "mongodb-memory-server": "^8.9.3", "nyc": "^15.1.0", "ora": "^6.1.2", "semver": "^7.3.7", - "supertest": "^6.2.4", + "supertest": "^6.3.0", "typescript": "4.7.4" }, "packageManager": "yarn@3.2.3" diff --git a/packages/center/index.ts b/packages/center/index.ts index e2e12787..58dd45a3 100644 --- a/packages/center/index.ts +++ b/packages/center/index.ts @@ -1,7 +1,7 @@ import assert from 'assert'; import crypto from 'crypto'; import { - Context, db, Handler, post, Types, yaml, + Context, db, ForbiddenError, Handler, post, Types, yaml, } from 'hydrooj'; function decrypt(encrypted: string) { @@ -16,6 +16,9 @@ declare module 'hydrooj' { interface Collections { dataReport: any; } + interface EventMap { + 'center/report': (thisArg: DataReportHandler, installId: string, old: any, payload: any) => void; + } } const coll = db.collection('dataReport'); @@ -32,7 +35,11 @@ class DataReportHandler extends Handler { } catch (e) { payload = yaml.load(_payload); } - assert(payload.url); + try { + assert(typeof payload.url === 'string'); + } catch (e) { + throw new ForbiddenError(); + } const old = await coll.findOne({ _id: installId }); await coll.updateOne({ _id: installId }, { $set: { diff --git a/packages/elastic/index.ts b/packages/elastic/index.ts index 41e5c2ee..64936faa 100644 --- a/packages/elastic/index.ts +++ b/packages/elastic/index.ts @@ -1,7 +1,6 @@ import { Client } from '@elastic/elasticsearch'; -import { omit } from 'lodash'; import { - Context, DomainModel, iterateAllProblem, iterateAllProblemInDomain, + _, Context, DomainModel, iterateAllProblem, iterateAllProblemInDomain, ProblemDoc, ProblemModel, Schema, SystemModel, } from 'hydrooj'; @@ -19,7 +18,7 @@ const processDocument = (doc: Partial) => { if (doc.pid) { doc.pid = doc.pid.replace(/([a-zA-Z]{2,})(\d+)/, '$1$2 $1 $2'); } - return omit(doc, indexOmit); + return _.omit(doc, indexOmit); }; global.Hydro.lib.problemSearch = async (domainId, q, opts) => { diff --git a/packages/fps-importer/index.ts b/packages/fps-importer/index.ts index a91beba9..7cb13cb0 100644 --- a/packages/fps-importer/index.ts +++ b/packages/fps-importer/index.ts @@ -1,9 +1,8 @@ /* eslint-disable no-await-in-loop */ import decodeHTML from 'decode-html'; -import { filter } from 'lodash'; import xml2js from 'xml2js'; import { - AdmZip, buildContent, ContentNode, Context, FileTooLargeError, fs, + _, AdmZip, buildContent, ContentNode, Context, FileTooLargeError, fs, Handler, PERM, ProblemConfigFile, ProblemModel, SolutionModel, ValidationError, } from 'hydrooj'; @@ -59,7 +58,7 @@ class FpsProblemImportHandler extends Handler { memory: p.memory_limit[0]._ + p.memory_limit[0].$.unit, }; const title = decodeHTML(p.title.join(' ')); - const tags = filter(p.source, (i: string) => i.trim()); + const tags = _.filter(p.source, (i: string) => i.trim()); const pid = await ProblemModel.add(domainId, null, title, buildContent(content, 'html'), this.user._id, tags); await ProblemModel.addTestdata(domainId, pid, 'config.yaml', Buffer.from(`time: ${config.time}\nmemory: ${config.memory}`)); if (p.test_output) { diff --git a/packages/geoip/package.json b/packages/geoip/package.json index 8b8018d5..0eb7171f 100644 --- a/packages/geoip/package.json +++ b/packages/geoip/package.json @@ -6,7 +6,7 @@ "author": "undefined ", "license": "AGPL-3.0-or-later", "dependencies": { - "maxmind": "^4.3.6" + "maxmind": "^4.3.7" }, "preferUnplugged": true, "scripts": { diff --git a/packages/hydrojudge/package.json b/packages/hydrojudge/package.json index b9d31701..ec0e1623 100644 --- a/packages/hydrojudge/package.json +++ b/packages/hydrojudge/package.json @@ -11,18 +11,19 @@ "fs-extra": "^10.1.0", "js-yaml": "^4.1.0", "lodash": "^4.17.21", + "mongodb": "^3.7.3", "p-queue": "^7.3.0", - "schemastery": "^3.5.3", + "schemastery": "^3.5.4", "shell-quote": "^1.7.3", - "superagent": "^8.0.0", - "ws": "^8.8.1" + "superagent": "^8.0.2", + "ws": "^8.9.0" }, "preferUnplugged": true, "license": "AGPL-3.0-or-later", "devDependencies": { "@types/fs-extra": "^9.0.13", "@types/js-yaml": "^4.0.5", - "@types/lodash": "^4.14.184", + "@types/lodash": "^4.14.186", "@types/shell-quote": "^1.7.1", "@types/ws": "^8.5.3" } diff --git a/packages/hydrojudge/src/hosts/hydro.ts b/packages/hydrojudge/src/hosts/hydro.ts index 99727044..cd0709df 100644 --- a/packages/hydrojudge/src/hosts/hydro.ts +++ b/packages/hydrojudge/src/hosts/hydro.ts @@ -1,7 +1,7 @@ /* eslint-disable no-await-in-loop */ import path from 'path'; -import { ObjectID } from 'bson'; import fs from 'fs-extra'; +import { ObjectID } from 'mongodb'; import PQueue from 'p-queue'; import superagent from 'superagent'; import WebSocket from 'ws'; diff --git a/packages/hydrooj/package.json b/packages/hydrooj/package.json index 7678e0c1..9fae227b 100644 --- a/packages/hydrooj/package.json +++ b/packages/hydrooj/package.json @@ -12,21 +12,21 @@ }, "preferUnplugged": true, "dependencies": { - "@aws-sdk/client-s3": "^3.178.0", - "@aws-sdk/middleware-endpoint": "^3.178.0", - "@aws-sdk/s3-presigned-post": "^3.178.0", - "@aws-sdk/s3-request-presigner": "^3.178.0", + "@aws-sdk/client-s3": "^3.183.0", + "@aws-sdk/middleware-endpoint": "^3.183.0", + "@aws-sdk/s3-presigned-post": "^3.183.0", + "@aws-sdk/s3-request-presigner": "^3.183.0", "@graphql-tools/schema": "^8.5.1", "@hydrooj/utils": "workspace:*", "adm-zip": "0.5.5", "cac": "^6.7.14", - "cordis": "^2.2.0", + "cordis": "^2.3.8", "detect-browser": "^5.3.0", - "emoji-regex": "^10.1.0", + "emoji-regex": "^10.2.1", "emojis-list": "2.1.0", "fs-extra": "^10.1.0", - "graphql": "^16.5.0", - "graphql-scalars": "1.17.0", + "graphql": "^16.6.0", + "graphql-scalars": "1.18.0", "isbinaryfile": "^5.0.0", "js-yaml": "^4.1.0", "koa": "^2.13.4", @@ -41,7 +41,7 @@ "moment-timezone": "^0.5.37", "mongodb": "^3.7.3", "nanoid": "^4.0.0", - "nodemailer": "^6.7.8", + "nodemailer": "^6.8.0", "notp": "^2.0.3", "p-queue": "^7.3.0", "path-to-regexp": "^6.2.1", @@ -50,7 +50,7 @@ "schemastery": "^3.5.4", "semver": "^7.3.7", "serialize-javascript": "^6.0.0", - "superagent": "^8.0.0", + "superagent": "^8.0.2", "thirty-two": "^1.0.2", "ws": "^8.9.0" }, @@ -62,11 +62,11 @@ "@types/koa-compress": "^4.0.3", "@types/koa-router": "^7.4.4", "@types/koa-static-cache": "^5.1.1", - "@types/lodash": "^4.14.184", + "@types/lodash": "^4.14.186", "@types/mime-types": "^2.1.1", "@types/minio": "^7.0.13", "@types/mongodb": "^3.6.20", - "@types/nodemailer": "^6.4.5", + "@types/nodemailer": "^6.4.6", "@types/notp": "^2.0.2", "@types/saslprep": "^1.0.1", "@types/semver": "^7.3.12", diff --git a/packages/hydrooj/src/interface.ts b/packages/hydrooj/src/interface.ts index e94bb479..7a972e02 100644 --- a/packages/hydrooj/src/interface.ts +++ b/packages/hydrooj/src/interface.ts @@ -594,28 +594,30 @@ export interface OauthMap { uid: number; } -export interface Collections { - 'blacklist': BlacklistDoc; - 'domain': DomainDoc; - 'domain.user': any; - 'record': RecordDoc; - 'document': any; - 'document.status': StatusDocBase; - 'user': Udoc; - 'user.preference': UserPreferenceDoc; - 'vuser': VUdoc; - 'user.group': GDoc; - 'check': System; - 'message': MessageDoc; - 'token': TokenDoc; - 'status': any; - 'oauth': OauthMap; - 'system': System; - 'task': Task; - 'storage': FileNode; - 'oplog': OplogDoc; - 'event': EventDoc; - 'opcount': OpCountDoc; +declare module './service/db' { + interface Collections { + 'blacklist': BlacklistDoc; + 'domain': DomainDoc; + 'domain.user': any; + 'record': RecordDoc; + 'document': any; + 'document.status': StatusDocBase; + 'user': Udoc; + 'user.preference': UserPreferenceDoc; + 'vuser': VUdoc; + 'user.group': GDoc; + 'check': System; + 'message': MessageDoc; + 'token': TokenDoc; + 'status': any; + 'oauth': OauthMap; + 'system': System; + 'task': Task; + 'storage': FileNode; + 'oplog': OplogDoc; + 'event': EventDoc; + 'opcount': OpCountDoc; + } } export interface Model { @@ -646,7 +648,7 @@ export interface Model { export interface HydroService { /** @deprecated */ bus: Context, - db: typeof import('./service/db'), + db: typeof import('./service/db').default, monitor: typeof import('./service/monitor'), server: typeof import('./service/server'), storage: typeof import('./service/storage').default, @@ -726,7 +728,7 @@ declare global { addons: string[], } } - var bus: any; // eslint-disable-line + var bus: typeof import('./service/bus'); // eslint-disable-line var app: Context; // eslint-disable-line var Hydro: HydroGlobal; // eslint-disable-line var addons: string[]; // eslint-disable-line diff --git a/packages/hydrooj/src/plugin-api.ts b/packages/hydrooj/src/plugin-api.ts index 255c7647..5d88860d 100644 --- a/packages/hydrooj/src/plugin-api.ts +++ b/packages/hydrooj/src/plugin-api.ts @@ -5,7 +5,7 @@ import _ from 'lodash'; import moment from 'moment-timezone'; import Schema from 'schemastery'; import superagent from 'superagent'; -import * as db from './service/db'; +import db from './service/db'; export { ObjectID, ObjectId, FilterQuery } from 'mongodb'; export * from './utils'; export * from './interface'; @@ -37,6 +37,8 @@ export { default as TaskModel } from './model/task'; export * from './model/builtin'; export * as JudgeHandler from './handler/judge'; export { postJudge } from './handler/judge'; +export { Collections } from './service/db'; +// export { Collections } from './interface'; export { Service, Context } from './context'; export { buildContent } from './lib/content'; export * as validator from './lib/validator'; diff --git a/packages/hydrooj/src/service/db.ts b/packages/hydrooj/src/service/db.ts index a165d3ee..9bcb433c 100644 --- a/packages/hydrooj/src/service/db.ts +++ b/packages/hydrooj/src/service/db.ts @@ -4,11 +4,10 @@ import { } from 'mongodb'; import { Logger } from '../logger'; import options from '../options'; -// Note: this might be re-declared so we have to use Collections here -import type { Collections } from '../plugin-api'; import * as bus from './bus'; const logger = new Logger('mongo'); +export interface Collections { } interface MongoConfig { protocol?: string, @@ -92,4 +91,5 @@ class MongoService { const service = new MongoService(); global.Hydro.service.db = service; -export = service; +export default service; +export const collection = service.collection.bind(service); diff --git a/packages/ui-default/index.ts b/packages/ui-default/index.ts index c9d82b99..81aa0b99 100644 --- a/packages/ui-default/index.ts +++ b/packages/ui-default/index.ts @@ -13,7 +13,7 @@ import { join, resolve } from 'path'; import convert from 'schemastery-jsonschema'; import markdown from './backendlib/markdown'; -declare module 'hydrooj/src/interface' { +declare module 'hydrooj' { interface UI { esbuildPlugins?: esbuild.Plugin[] } diff --git a/packages/ui-default/package.json b/packages/ui-default/package.json index b12b18a7..b6d6093c 100644 --- a/packages/ui-default/package.json +++ b/packages/ui-default/package.json @@ -10,18 +10,18 @@ "lint": "eslint" }, "devDependencies": { - "@blueprintjs/core": "^4.9.3", - "@blueprintjs/select": "^4.6.3", - "@fontsource/dm-mono": "^4.5.9", - "@fontsource/fira-code": "^4.5.11", - "@fontsource/inconsolata": "^4.5.7", - "@fontsource/jetbrains-mono": "^4.5.10", - "@fontsource/pt-mono": "^4.5.10", + "@blueprintjs/core": "^4.10.2", + "@blueprintjs/select": "^4.7.0", + "@fontsource/dm-mono": "^4.5.10", + "@fontsource/fira-code": "^4.5.12", + "@fontsource/inconsolata": "^4.5.8", + "@fontsource/jetbrains-mono": "^4.5.11", + "@fontsource/pt-mono": "^4.5.11", "@fontsource/roboto-mono": "^4.5.8", "@fontsource/source-code-pro": "^4.5.12", "@fontsource/ubuntu-mono": "^4.5.11", "@hydrooj/utils": "workspace:*", - "@svgr/webpack": "^6.3.1", + "@svgr/webpack": "^6.4.0", "@types/gulp-if": "^0.0.34", "@types/jquery": "^3.5.14", "@types/json-schema": "^7.0.11", @@ -31,25 +31,25 @@ "@types/qrcode": "^1.5.0", "@types/react-dom": "^18.0.6", "@types/redux-logger": "^3.0.9", - "@types/serviceworker": "^0.0.51", - "@types/sharedworker": "^0.0.80", + "@types/serviceworker": "^0.0.53", + "@types/sharedworker": "^0.0.82", "@types/webpack-env": "^1.18.0", "@vscode/codicons": "^0.0.32", - "autoprefixer": "^10.4.8", + "autoprefixer": "^10.4.12", "browser-update": "^3.3.40", "chalk": "^5.0.1", "chunk-progress-webpack-plugin": "^2.0.1", - "classnames": "^2.3.1", + "classnames": "^2.3.2", "clean-webpack-plugin": "^4.0.0", "clipboard": "^2.0.11", "copy-webpack-plugin": "^11.0.0", "css-loader": "^6.7.1", "diff": "^5.1.0", - "diff-dom": "^4.2.5", - "echarts": "^5.3.3", + "diff-dom": "^4.2.7", + "echarts": "^5.4.0", "emojis-keywords": "2.0.0", "emojis-list": "2.1.0", - "esbuild-loader": "^2.19.0", + "esbuild-loader": "^2.20.0", "fancy-log": "^2.0.0", "flatpickr": "^4.6.13", "friendly-errors-webpack-plugin": "^1.7.0", @@ -70,9 +70,9 @@ "monaco-editor": "^0.33.0", "monaco-editor-nls": "^2.0.0", "monaco-editor-webpack-plugin": "^7.0.1", - "monaco-graphql": "^1.1.3", + "monaco-graphql": "^1.1.2", "monaco-themes": "^0.4.2", - "monaco-yaml": "^4.0.0", + "monaco-yaml": "^4.0.2", "nanoid": "^4.0.0", "normalize.css": "^8.0.1", "nprogress": "^0.2.0", @@ -88,12 +88,12 @@ "react-dnd": "^16.0.1", "react-dnd-html5-backend": "^16.0.1", "react-dom": "^18.2.0", - "react-redux": "^8.0.2", + "react-redux": "^8.0.4", "react-split-pane": "^0.1.92", "reconnecting-websocket": "^4.4.0", "redux": "^4.2.0", "redux-logger": "^3.0.6", - "redux-promise-middleware": "^6.1.2", + "redux-promise-middleware": "^6.1.3", "redux-thunk": "^2.4.1", "rupture": "^0.7.1", "slideout": "^1.0.1", @@ -106,13 +106,13 @@ "through2": "^4.0.2", "timeago-react": "^3.0.5", "timeago.js": "^4.0.2", - "ts-loader": "^9.3.1", + "ts-loader": "^9.4.1", "vditor": "^3.8.17", "vinyl-buffer": "^1.0.1", "web-streams-polyfill": "^3.2.1", "webpack": "^5.74.0", "webpack-bundle-analyzer": "^4.6.1", - "webpack-dev-server": "^4.10.1", + "webpack-dev-server": "^4.11.1", "webpackbar": "^5.0.2" }, "dependencies": { @@ -124,7 +124,7 @@ "katex": "^0.16.2", "lodash": "^4.17.21", "markdown-it": "^13.0.1", - "markdown-it-anchor": "^8.6.4", + "markdown-it-anchor": "^8.6.5", "markdown-it-attrs": "^4.1.4", "markdown-it-footnote": "^3.0.3", "markdown-it-imsize": "^2.0.1", diff --git a/packages/utils/lib/utils.ts b/packages/utils/lib/utils.ts index a5ac266b..f51d903e 100644 --- a/packages/utils/lib/utils.ts +++ b/packages/utils/lib/utils.ts @@ -4,12 +4,17 @@ import path from 'path'; import { Duplex } from 'stream'; import { inspect } from 'util'; import fs from 'fs-extra'; -import type { Moment } from 'moment-timezone'; -import { isMoment } from 'moment-timezone'; +import { isMoment, Moment } from 'moment-timezone'; import { ObjectID } from 'mongodb'; import Logger from 'reggol'; Logger.levels.base = process.env.DEV ? 3 : 2; +Logger.targets[0].showTime = 'MM/dd hh:mm:ss'; +Logger.targets[0].label = { + align: 'right', + width: 10, + margin: 2, +}; export { Logger }; diff --git a/packages/utils/package.json b/packages/utils/package.json index d8060979..e3bb8711 100644 --- a/packages/utils/package.json +++ b/packages/utils/package.json @@ -14,7 +14,7 @@ "js-yaml": "^4.1.0", "moment-timezone": "^0.5.37", "mongodb": "^3.7.3", - "reggol": "^1.1.0", + "reggol": "^1.2.1", "source-map-support": "^0.5.21", "systeminformation": "^5.12.6" }, diff --git a/packages/vjudge/package.json b/packages/vjudge/package.json index 6140c8a8..9befc274 100644 --- a/packages/vjudge/package.json +++ b/packages/vjudge/package.json @@ -10,18 +10,16 @@ "dependencies": { "@hydrooj/utils": "workspace:*", "chrome-finder": "^1.0.7", - "jsdom": "^20.0.0", - "lodash": "^4.17.21", + "jsdom": "^20.0.1", "puppeteer-core": "^15.5.0", "puppeteer-extra": "3.3.0", "puppeteer-extra-plugin-portal": "3.1.0", "puppeteer-extra-plugin-stealth": "2.10.1", - "superagent": "^8.0.0", + "superagent": "^8.0.2", "superagent-proxy": "^3.0.0" }, "devDependencies": { "@types/jsdom": "^20.0.0", - "@types/lodash": "^4.14.184", "@types/superagent": "^4.1.15", "@types/superagent-proxy": "^3.0.0" } diff --git a/packages/vjudge/src/providers/luogu.ts b/packages/vjudge/src/providers/luogu.ts index 69f76d99..f067665d 100644 --- a/packages/vjudge/src/providers/luogu.ts +++ b/packages/vjudge/src/providers/luogu.ts @@ -1,10 +1,9 @@ /* eslint-disable no-await-in-loop */ import { JSDOM } from 'jsdom'; -import { flattenDeep } from 'lodash'; import superagent from 'superagent'; import proxy from 'superagent-proxy'; import { - Logger, SettingModel, sleep, STATUS, + _, Logger, SettingModel, sleep, STATUS, } from 'hydrooj'; import { IBasicProvider, RemoteAccount } from '../interface'; @@ -151,7 +150,7 @@ export default class LuoguProvider implements IBasicProvider { }); } logger.info('Fetched with length', JSON.stringify(body).length); - const total = flattenDeep(body.currentData.testCaseGroup).length; + const total = _.flattenDeep(body.currentData.testCaseGroup).length; // TODO sorted if (!data.detail.judgeResult?.subtasks) continue; for (const key in data.detail.judgeResult.subtasks) {