From b5c1f41dd28785bb62ec03f1dac8ffc7f07e184b Mon Sep 17 00:00:00 2001 From: undefined Date: Fri, 4 Sep 2020 13:47:15 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E4=B8=80=E5=A4=84=E7=B1=BB?= =?UTF-8?q?=E5=9E=8B=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .eslintrc.js | 4 +++- .vscode/settings.json | 3 ++- package.json | 18 +++++++++--------- packages/hydrojudge/package.json | 2 +- packages/hydrooj/package.json | 12 ++++++------ packages/hydrooj/src/handler/training.ts | 4 ++++ packages/hydrooj/src/interface.ts | 2 +- packages/hydrooj/src/model/discussion.ts | 12 ++++++------ packages/hydrooj/src/model/domain.ts | 2 +- packages/hydrooj/src/model/message.ts | 6 +++--- packages/hydrooj/src/model/problem.ts | 6 +++--- packages/login-with-github/package.json | 2 +- packages/login-with-google/package.json | 2 +- packages/login-with-osu/package.json | 2 +- packages/migrate-vijos/package.json | 4 ++-- 15 files changed, 44 insertions(+), 37 deletions(-) diff --git a/.eslintrc.js b/.eslintrc.js index 485cdfd9..394ebf64 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -14,8 +14,9 @@ module.exports = { parser: '@typescript-eslint/parser', plugins: ['@typescript-eslint'], rules: { - camelcase: 'off', + '@typescript-eslint/no-dupe-class-members': 'error', '@typescript-eslint/no-unused-vars': 'error', + camelcase: 'off', 'global-require': 'off', 'guard-for-in': 'off', 'implicit-arrow-linebreak': 'off', @@ -28,6 +29,7 @@ module.exports = { 'max-len': ['warn', 150], 'no-bitwise': 'off', 'no-console': 'off', + 'no-dupe-class-members': 'off', 'no-extend-native': 'off', 'no-inner-declarations': 'off', 'no-multi-assign': 'off', diff --git a/.vscode/settings.json b/.vscode/settings.json index 881d5ae8..017efb1a 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -5,5 +5,6 @@ "editor.detectIndentation": false, "editor.tabSize": 4, "editor.formatOnSave": true, - "editor.renderWhitespace": "boundary" + "editor.renderWhitespace": "boundary", + "typescript.tsdk": "node_modules/typescript/lib" } \ No newline at end of file diff --git a/package.json b/package.json index 093f7384..78f88d0e 100644 --- a/package.json +++ b/package.json @@ -15,28 +15,28 @@ "version": "1.0.0", "license": "AGPL-3.0-only", "devDependencies": { - "@shelf/jest-mongodb": "^1.2.2", + "@shelf/jest-mongodb": "^1.2.3", "@types/cross-spawn": "^6.0.2", - "@types/jest": "^26.0.10", - "@types/node": "^14.6.0", + "@types/jest": "^26.0.13", + "@types/node": "^14.6.4", "@types/semver": "^7.3.3", "@typescript-eslint/eslint-plugin": "^3.9.1", "@typescript-eslint/parser": "^3.9.1", "cross-spawn": "^7.0.3", - "eslint": "^7.7.0", + "eslint": "^7.8.1", "eslint-config-airbnb-base": "^14.2.0", - "eslint-import-resolver-typescript": "^2.2.1", + "eslint-import-resolver-typescript": "^2.3.0", "eslint-plugin-import": "^2.22.0", "globby": "^11.0.1", - "jest": "^26.4.1", + "jest": "^26.4.2", "latest-version": "^5.1.0", "ora": "^5.0.0", "semver": "^7.3.2", - "ts-jest": "^26.2.0", - "typescript": "^3.9.7" + "ts-jest": "^26.3.0", + "typescript": "^4.0.2" }, "dependencies": { "fs-extra": "^9.0.1", "yargs": "^15.4.1" } -} +} \ No newline at end of file diff --git a/packages/hydrojudge/package.json b/packages/hydrojudge/package.json index 4035ab04..fe04f4df 100644 --- a/packages/hydrojudge/package.json +++ b/packages/hydrojudge/package.json @@ -15,7 +15,7 @@ "lodash": "^4.17.20", "p-queue": "^6.6.1", "shell-quote": "^1.7.2", - "systeminformation": "^4.26.10" + "systeminformation": "^4.27.3" }, "license": "AGPL-3.0-only", "devDependencies": { diff --git a/packages/hydrooj/package.json b/packages/hydrooj/package.json index 965ad3ab..c7a3f93d 100644 --- a/packages/hydrooj/package.json +++ b/packages/hydrooj/package.json @@ -1,6 +1,6 @@ { "name": "hydrooj", - "version": "2.12.25", + "version": "2.12.26", "bin": "bin/hydrooj.js", "main": "dist/loader.js", "typings": "dist/loader.d.ts", @@ -25,13 +25,13 @@ "lodash": "^4.17.20", "lru-cache": "^6.0.0", "moment-timezone": "^0.5.31", - "mongodb": "^3.6.0", + "mongodb": "^3.6.1", "nodemailer": "^6.4.10", "ps-list": "^7.2.0", "serialize-javascript": "^4.0.0", "sockjs": "^0.3.20", - "superagent": "^6.0.0", - "systeminformation": "^4.26.10", + "superagent": "^6.1.0", + "systeminformation": "^4.27.3", "yargs": "^15.4.1" }, "devDependencies": { @@ -42,9 +42,9 @@ "@types/koa-morgan": "^1.0.4", "@types/koa-router": "^7.4.1", "@types/koa-static-cache": "^5.1.0", - "@types/lodash": "^4.14.158", + "@types/lodash": "^4.14.161", "@types/lru-cache": "^5.1.0", - "@types/mongodb": "^3.5.26", + "@types/mongodb": "^3.5.27", "@types/nodemailer": "^6.4.0", "@types/serialize-javascript": "^4.0.0", "@types/sockjs": "^0.3.32", diff --git a/packages/hydrooj/src/handler/training.ts b/packages/hydrooj/src/handler/training.ts index 1ddb8b2a..d2320366 100644 --- a/packages/hydrooj/src/handler/training.ts +++ b/packages/hydrooj/src/handler/training.ts @@ -177,6 +177,8 @@ class TrainingCreateHandler extends Handler { const pids = training.getPids({ dag }); assert(pids.length, new ValidationError('dag')); const pdocs = await problem.getMulti(domainId, { + // TODO + // @ts-ignore $or: [{ docId: { $in: pids } }, { pid: { $in: pids } }], }).sort('_id', 1).toArray(); const existPids = pdocs.map((pdoc) => pdoc.docId); @@ -238,6 +240,8 @@ class TrainingEditHandler extends Handler { const pdocs = await problem.getMulti(domainId, { $or: [ { docId: { $in: pids } }, + // TODO + // @ts-ignore { pid: { $in: pids } }, ], }).sort('_id', 1).toArray(); diff --git a/packages/hydrooj/src/interface.ts b/packages/hydrooj/src/interface.ts index 35661ce5..39241e12 100644 --- a/packages/hydrooj/src/interface.ts +++ b/packages/hydrooj/src/interface.ts @@ -274,7 +274,7 @@ export interface Ddoc { docType: number, docId: ObjectID, parentType: number, - parentId: ObjectID | number, + parentId: ObjectID | number | string, owner: number, title: string, content: string, diff --git a/packages/hydrooj/src/model/discussion.ts b/packages/hydrooj/src/model/discussion.ts index cf42cd3f..ce642389 100644 --- a/packages/hydrooj/src/model/discussion.ts +++ b/packages/hydrooj/src/model/discussion.ts @@ -1,4 +1,4 @@ -import { ObjectID } from 'mongodb'; +import { FilterQuery, ObjectID } from 'mongodb'; import * as problem from './problem'; import * as contest from './contest'; import * as training from './training'; @@ -57,11 +57,11 @@ export function del(domainId: string, did: ObjectID) { ]); } -export function count(domainId: string, query: any) { +export function count(domainId: string, query: FilterQuery) { return document.count(domainId, document.TYPE_DISCUSSION, query); } -export function getMulti(domainId: string, query: any = {}) { +export function getMulti(domainId: string, query: FilterQuery = {}) { return document.getMulti(domainId, document.TYPE_DISCUSSION, query) .sort({ pin: -1, updateAt: -1 }); } @@ -69,15 +69,15 @@ export function getMulti(domainId: string, query: any = {}) { export async function addReply( domainId: string, did: ObjectID, owner: number, content: string, ip: string, -): Promise { - const [drdoc] = await Promise.all([ +): Promise { + const [drid] = await Promise.all([ document.add( domainId, content, owner, document.TYPE_DISCUSSION_REPLY, null, document.TYPE_DISCUSSION, did, { ip }, ), document.incAndSet(domainId, document.TYPE_DISCUSSION, did, 'nReply', 1, { updateAt: new Date() }), ]); - return drdoc; + return drid; } export function getReply(domainId: string, drid: ObjectID): Promise { diff --git a/packages/hydrooj/src/model/domain.ts b/packages/hydrooj/src/model/domain.ts index 905432a2..6f14b53d 100644 --- a/packages/hydrooj/src/model/domain.ts +++ b/packages/hydrooj/src/model/domain.ts @@ -51,7 +51,7 @@ export function getMulti(query: any = {}) { return coll.find(query); } -export function edit(domainId: string, $set: any) { +export function edit(domainId: string, $set: Partial) { return coll.updateOne({ _id: domainId }, { $set }); } diff --git a/packages/hydrooj/src/model/message.ts b/packages/hydrooj/src/model/message.ts index adc4dd15..84a7b798 100644 --- a/packages/hydrooj/src/model/message.ts +++ b/packages/hydrooj/src/model/message.ts @@ -1,4 +1,4 @@ -import { ObjectID } from 'mongodb'; +import { FilterQuery, ObjectID } from 'mongodb'; import * as user from './user'; import { Mdoc } from '../interface'; import * as db from '../service/db'; @@ -35,7 +35,7 @@ export async function getByUser(uid: number): Promise { return await coll.find({ $or: [{ from: uid }, { to: uid }] }).sort('_id', 1).toArray(); } -export async function getMany(query: any, sort: any, page: number, limit: number): Promise { +export async function getMany(query: FilterQuery, sort: any, page: number, limit: number): Promise { return await coll.find(query).sort(sort) .skip((page - 1) * limit).limit(limit) .toArray(); @@ -54,7 +54,7 @@ export async function del(_id: ObjectID) { return await coll.deleteOne({ _id }); } -export function count(query: any) { +export function count(query: FilterQuery = {}) { return coll.find(query).count(); } diff --git a/packages/hydrooj/src/model/problem.ts b/packages/hydrooj/src/model/problem.ts index f8e2c9fa..571000d8 100644 --- a/packages/hydrooj/src/model/problem.ts +++ b/packages/hydrooj/src/model/problem.ts @@ -73,7 +73,7 @@ export async function get( return pdoc; } -export function getMulti(domainId: string, query: object) { +export function getMulti(domainId: string, query: FilterQuery) { return document.getMulti(domainId, document.TYPE_PROBLEM, query); } @@ -89,11 +89,11 @@ export function inc(domainId: string, _id: number, field: string, n: number): Pr return document.inc(domainId, document.TYPE_PROBLEM, _id, field, n); } -export function count(domainId: string, query: any) { +export function count(domainId: string, query: FilterQuery) { return document.count(domainId, document.TYPE_PROBLEM, query); } -export async function random(domainId: string, query: any): Promise { +export async function random(domainId: string, query: FilterQuery): Promise { const cursor = document.getMulti(domainId, document.TYPE_PROBLEM, query); const pcount = await cursor.count(); if (pcount) { diff --git a/packages/login-with-github/package.json b/packages/login-with-github/package.json index 11ba4b0e..adfb6fdb 100644 --- a/packages/login-with-github/package.json +++ b/packages/login-with-github/package.json @@ -17,7 +17,7 @@ "hydrooj": "^2.12.1" }, "dependencies": { - "superagent": "^6.0.0", + "superagent": "^6.1.0", "superagent-proxy": "^2.0.0" } } \ No newline at end of file diff --git a/packages/login-with-google/package.json b/packages/login-with-google/package.json index d4b9a704..36e02d2e 100644 --- a/packages/login-with-google/package.json +++ b/packages/login-with-google/package.json @@ -17,7 +17,7 @@ "hydrooj": "^2.12.1" }, "dependencies": { - "superagent": "^6.0.0", + "superagent": "^6.1.0", "superagent-proxy": "^2.0.0" } } \ No newline at end of file diff --git a/packages/login-with-osu/package.json b/packages/login-with-osu/package.json index 5cde9798..9c422aeb 100644 --- a/packages/login-with-osu/package.json +++ b/packages/login-with-osu/package.json @@ -17,7 +17,7 @@ "hydrooj": "^2.12.1" }, "dependencies": { - "superagent": "^6.0.0", + "superagent": "^6.1.0", "superagent-proxy": "^2.0.0" } } \ No newline at end of file diff --git a/packages/migrate-vijos/package.json b/packages/migrate-vijos/package.json index 4fa3c643..8e01cef3 100644 --- a/packages/migrate-vijos/package.json +++ b/packages/migrate-vijos/package.json @@ -11,13 +11,13 @@ }, "devDependencies": { "@types/js-yaml": "^3.12.5", - "@types/mongodb": "^3.5.26" + "@types/mongodb": "^3.5.27" }, "peerDependencies": { "hydrooj": "^2.12.3" }, "dependencies": { "js-yaml": "^3.14.0", - "mongodb": "^3.6.0" + "mongodb": "^3.6.1" } } \ No newline at end of file