core: fix eslint version

This commit is contained in:
undefined committed 2021-09-13 16:37:55 +08:00
1 parent bd7cb2e959
commit 402a58cd47
25 files changed
+79 -60

No files matched your search

+1 -1
View File
@@ -37,7 +37,7 @@
"cross-spawn": "^7.0.3", "cross-spawn": "^7.0.3",
"esbuild": "^0.12.26", "esbuild": "^0.12.26",
"eslint": "^7.32.0", "eslint": "^7.32.0",
"eslint-config-airbnb-typescript": "^14.0.0", "eslint-config-airbnb-typescript": "12.3.1",
"eslint-import-resolver-typescript": "^2.4.0", "eslint-import-resolver-typescript": "^2.4.0",
"eslint-plugin-import": "^2.24.2", "eslint-plugin-import": "^2.24.2",
"eslint-plugin-simple-import-sort": "^7.0.0", "eslint-plugin-simple-import-sort": "^7.0.0",
+1
View File
@@ -1,3 +1,4 @@
/* eslint-disable import/no-duplicates */
/* eslint-disable no-constant-condition */ /* eslint-disable no-constant-condition */
/* eslint-disable no-await-in-loop */ /* eslint-disable no-await-in-loop */
/* .. /* ..
+1
View File
@@ -1,3 +1,4 @@
/* eslint-disable import/no-dynamic-require */
/* eslint-disable no-await-in-loop */ /* eslint-disable no-await-in-loop */
import cac from 'cac'; import cac from 'cac';
import { ObjectID } from 'mongodb'; import { ObjectID } from 'mongodb';
+1
View File
@@ -1,3 +1,4 @@
/* eslint-disable import/no-dynamic-require */
/* eslint-disable no-await-in-loop */ /* eslint-disable no-await-in-loop */
import os from 'os'; import os from 'os';
import path from 'path'; import path from 'path';
+2 -2
View File
@@ -10,8 +10,8 @@ import * as oplog from '../model/oplog';
import * as system from '../model/system'; import * as system from '../model/system';
import user from '../model/user'; import user from '../model/user';
import { import {
Handler, param, Handler, param, Route, Types,
Route, Types } from '../service/server'; } from '../service/server';
export const typeMapper = { export const typeMapper = {
problem: document.TYPE_PROBLEM, problem: document.TYPE_PROBLEM,
+5 -5
View File
@@ -37,7 +37,7 @@ class HomeHandler extends Handler {
uids.forEach((uid) => this.uids.add(uid)); uids.forEach((uid) => this.uids.add(uid));
} }
async getHomework(domainId: string, limit: number = 5) { async getHomework(domainId: string, limit = 5) {
if (this.user.hasPerm(PERM.PERM_VIEW_HOMEWORK)) { if (this.user.hasPerm(PERM.PERM_VIEW_HOMEWORK)) {
const tdocs = await contest.getMulti(domainId, {}, document.TYPE_HOMEWORK) const tdocs = await contest.getMulti(domainId, {}, document.TYPE_HOMEWORK)
.limit(limit).toArray(); .limit(limit).toArray();
@@ -50,7 +50,7 @@ class HomeHandler extends Handler {
return ['homework', [], {}]; return ['homework', [], {}];
} }
async getContest(domainId: string, limit: number = 10) { async getContest(domainId: string, limit = 10) {
if (this.user.hasPerm(PERM.PERM_VIEW_CONTEST)) { if (this.user.hasPerm(PERM.PERM_VIEW_CONTEST)) {
const tdocs = await contest.getMulti(domainId) const tdocs = await contest.getMulti(domainId)
.limit(limit).toArray(); .limit(limit).toArray();
@@ -62,7 +62,7 @@ class HomeHandler extends Handler {
return ['contest', [], {}]; return ['contest', [], {}];
} }
async getTraining(domainId: string, limit: number = 10) { async getTraining(domainId: string, limit = 10) {
if (this.user.hasPerm(PERM.PERM_VIEW_TRAINING)) { if (this.user.hasPerm(PERM.PERM_VIEW_TRAINING)) {
const tdocs = await training.getMulti(domainId) const tdocs = await training.getMulti(domainId)
.sort('_id', 1).limit(limit).toArray(); .sort('_id', 1).limit(limit).toArray();
@@ -74,7 +74,7 @@ class HomeHandler extends Handler {
return ['training', [], {}]; return ['training', [], {}];
} }
async getDiscussion(domainId: string, limit: number = 20) { async getDiscussion(domainId: string, limit = 20) {
if (this.user.hasPerm(PERM.PERM_VIEW_DISCUSSION)) { if (this.user.hasPerm(PERM.PERM_VIEW_DISCUSSION)) {
const ddocs = await discussion.getMulti(domainId).limit(limit).toArray(); const ddocs = await discussion.getMulti(domainId).limit(limit).toArray();
const vndict = await discussion.getListVnodes( const vndict = await discussion.getListVnodes(
@@ -86,7 +86,7 @@ class HomeHandler extends Handler {
return ['discussion', [], {}]; return ['discussion', [], {}];
} }
async getRanking(domainId: string, limit: number = 50) { async getRanking(domainId: string, limit = 50) {
if (this.user.hasPerm(PERM.PERM_VIEW_RANKING)) { if (this.user.hasPerm(PERM.PERM_VIEW_RANKING)) {
const dudocs = await domain.getMultiUserInDomain(domainId, { uid: { $gt: 1 } }) const dudocs = await domain.getMultiUserInDomain(domainId, { uid: { $gt: 1 } })
.sort({ rp: -1 }).project({ uid: 1 }).limit(limit).toArray(); .sort({ rp: -1 }).project({ uid: 1 }).limit(limit).toArray();
+7 -7
View File
@@ -6,12 +6,12 @@ import moment from 'moment-timezone';
import { ObjectID } from 'mongodb'; import { ObjectID } from 'mongodb';
import { Time } from '@hydrooj/utils/lib/utils'; import { Time } from '@hydrooj/utils/lib/utils';
import { import {
BadRequestError, BadRequestError, HomeworkNotAttendedError, HomeworkNotLiveError,
HomeworkNotAttendedError, HomeworkNotLiveError, ProblemNotFoundError, ProblemNotFoundError, ValidationError,
ValidationError } from '../error'; } from '../error';
import { import {
DomainDoc, DomainDoc, PenaltyRules, ProblemDoc, Tdoc, User,
PenaltyRules, ProblemDoc, Tdoc, User } from '../interface'; } from '../interface';
import paginate from '../lib/paginate'; import paginate from '../lib/paginate';
import { PERM, PRIV, STATUS } from '../model/builtin'; import { PERM, PRIV, STATUS } from '../model/builtin';
import * as contest from '../model/contest'; import * as contest from '../model/contest';
@@ -25,8 +25,8 @@ import * as system from '../model/system';
import user from '../model/user'; import user from '../model/user';
import * as bus from '../service/bus'; import * as bus from '../service/bus';
import { import {
Handler, param, Handler, param, Route, Types,
Route, Types } from '../service/server'; } from '../service/server';
const validatePenaltyRules = (input: string) => yaml.load(input); const validatePenaltyRules = (input: string) => yaml.load(input);
const convertPenaltyRules = validatePenaltyRules; const convertPenaltyRules = validatePenaltyRules;
+2 -2
View File
@@ -20,8 +20,8 @@ import { PERM, PRIV } from '../model/builtin';
import problem, { ProblemDoc } from '../model/problem'; import problem, { ProblemDoc } from '../model/problem';
import TaskModel from '../model/task'; import TaskModel from '../model/task';
import { import {
Handler, post, Handler, post, Route, Types,
Route, Types } from '../service/server'; } from '../service/server';
const RE_SYZOJ = /(https?):\/\/([^/]+)\/(problem|p)\/([0-9]+)\/?/i; const RE_SYZOJ = /(https?):\/\/([^/]+)\/(problem|p)\/([0-9]+)\/?/i;
const logger = new Logger('import.syzoj'); const logger = new Logger('import.syzoj');
+1 -1
View File
@@ -14,7 +14,7 @@ import task from '../model/task';
import * as bus from '../service/bus'; import * as bus from '../service/bus';
import { updateJudge } from '../service/monitor'; import { updateJudge } from '../service/monitor';
import { import {
Connection, ConnectionHandler, Handler, post, Route, Types, Connection, ConnectionHandler, Handler, post, Route, Types,
} from '../service/server'; } from '../service/server';
import { sleep } from '../utils'; import { sleep } from '../utils';
+4 -3
View File
@@ -3,8 +3,8 @@ import * as yaml from 'js-yaml';
import * as check from '../check'; import * as check from '../check';
import { ValidationError } from '../error'; import { ValidationError } from '../error';
import { import {
isEmail, isPassword, isEmail, isPassword, isUname, validate,
isUname, validate } from '../lib/validator'; } from '../lib/validator';
import { Logger } from '../logger'; import { Logger } from '../logger';
import { PRIV, STATUS } from '../model/builtin'; import { PRIV, STATUS } from '../model/builtin';
import domain from '../model/domain'; import domain from '../model/domain';
@@ -14,7 +14,8 @@ import * as system from '../model/system';
import user from '../model/user'; import user from '../model/user';
import * as bus from '../service/bus'; import * as bus from '../service/bus';
import { import {
Connection, ConnectionHandler, Handler, param, Route, Types, Connection, ConnectionHandler, Handler,
param, Route, Types,
} from '../service/server'; } from '../service/server';
import * as judge from './judge'; import * as judge from './judge';
+2 -2
View File
@@ -9,8 +9,8 @@ import storage from '../model/storage';
import * as system from '../model/system'; import * as system from '../model/system';
import user from '../model/user'; import user from '../model/user';
import { import {
Handler, param, post, Handler, param, post, Route, Types,
Route, Types } from '../service/server'; } from '../service/server';
import { sortFiles } from '../utils'; import { sortFiles } from '../utils';
class CheckInHandler extends Handler { class CheckInHandler extends Handler {
+1 -1
View File
@@ -2,7 +2,7 @@
/* eslint-disable class-methods-use-this */ /* eslint-disable class-methods-use-this */
import { NotFoundError } from '../error'; import { NotFoundError } from '../error';
import { import {
Handler, param, Route, Types, Handler, param, Route, Types,
} from '../service/server'; } from '../service/server';
class NotFoundHandler extends Handler { class NotFoundHandler extends Handler {
+7 -7
View File
@@ -4,13 +4,13 @@ import { lookup } from 'mime-types';
import { FilterQuery, ObjectID } from 'mongodb'; import { FilterQuery, ObjectID } from 'mongodb';
import { sortFiles } from '@hydrooj/utils/lib/utils'; import { sortFiles } from '@hydrooj/utils/lib/utils';
import { import {
BadRequestError, BadRequestError, ForbiddenError, NoProblemError,
ForbiddenError, PermissionError, ProblemNotFoundError, SolutionNotFoundError,
NoProblemError, PermissionError, ProblemNotFoundError, SolutionNotFoundError, ValidationError, ValidationError,
} from '../error'; } from '../error';
import { import {
ProblemDoc, ProblemStatusDoc, ProblemDoc, ProblemStatusDoc, User,
User } from '../interface'; } from '../interface';
import difficultyAlgorithm from '../lib/difficulty'; import difficultyAlgorithm from '../lib/difficulty';
import paginate from '../lib/paginate'; import paginate from '../lib/paginate';
import { isPid, parsePid as convertPid } from '../lib/validator'; import { isPid, parsePid as convertPid } from '../lib/validator';
@@ -26,8 +26,8 @@ import * as system from '../model/system';
import user from '../model/user'; import user from '../model/user';
import * as bus from '../service/bus'; import * as bus from '../service/bus';
import { import {
Handler, param, post, query, Handler, param, post, query, Route, route, Types,
Route, route, Types } from '../service/server'; } from '../service/server';
import { registerResolver, registerValue } from './api'; import { registerResolver, registerValue } from './api';
export const parseCategory = (value: string) => flatten(value.replace(/,/g, ',').split(',')).map((e) => e.trim()); export const parseCategory = (value: string) => flatten(value.replace(/,/g, ',').split(',')).map((e) => e.trim());
+2 -2
View File
@@ -12,8 +12,8 @@ import * as training from '../model/training';
import user from '../model/user'; import user from '../model/user';
import * as bus from '../service/bus'; import * as bus from '../service/bus';
import { import {
Handler, param, Handler, param, Route, Types,
Route, Types } from '../service/server'; } from '../service/server';
async function _parseDagJson(domainId: string, _dag: string): Promise<Tdoc['dag']> { async function _parseDagJson(domainId: string, _dag: string): Promise<Tdoc['dag']> {
const parsed = []; const parsed = [];
+3 -1
View File
@@ -18,7 +18,9 @@ import * as system from '../model/system';
import task from '../model/task'; import task from '../model/task';
import token from '../model/token'; import token from '../model/token';
import user from '../model/user'; import user from '../model/user';
import { Handler, param, post, Route, Types } from '../service/server'; import {
Handler, param, post, Route, Types,
} from '../service/server';
import { registerResolver, registerValue } from './api'; import { registerResolver, registerValue } from './api';
registerValue('User', [ registerValue('User', [
+5 -5
View File
@@ -1,12 +1,12 @@
import { FilterQuery, ObjectID } from 'mongodb'; import { FilterQuery, ObjectID } from 'mongodb';
import { import {
ContestAlreadyAttendedError, ContestAlreadyAttendedError, ContestNotAttendedError, ContestNotFoundError,
ContestNotAttendedError, ContestNotFoundError, ContestScoreboardHiddenError, ContestScoreboardHiddenError, ValidationError,
ValidationError } from '../error'; } from '../error';
import { import {
ContestRule, ContestRules, ProblemDict, ContestRule, ContestRules, ProblemDict,
ProblemId, ScoreboardNode, ScoreboardRow, Tdoc, ProblemId, ScoreboardNode, ScoreboardRow,
Udict, Tdoc, Udict,
} from '../interface'; } from '../interface';
import * as misc from '../lib/misc'; import * as misc from '../lib/misc';
import ranked from '../lib/rank'; import ranked from '../lib/rank';
+1
View File
@@ -306,6 +306,7 @@ const t = Math.exp(-0.15);
async function updateSort() { async function updateSort() {
const cursor = document.coll.find({ docType: document.TYPE_DISCUSSION }); const cursor = document.coll.find({ docType: document.TYPE_DISCUSSION });
// eslint-disable-next-line no-constant-condition
while (true) { while (true) {
// eslint-disable-next-line no-await-in-loop // eslint-disable-next-line no-await-in-loop
const data = await cursor.next(); const data = await cursor.next();
+5 -4
View File
@@ -1,13 +1,14 @@
import { import {
Dictionary, escapeRegExp, flatten, groupBy, pick, escapeRegExp, flatten, groupBy, pick,
} from 'lodash'; } from 'lodash';
import { FilterQuery, ObjectID } from 'mongodb'; import { FilterQuery, ObjectID } from 'mongodb';
import type { Readable } from 'stream'; import type { Readable } from 'stream';
import { streamToBuffer } from '@hydrooj/utils/lib/utils'; import { streamToBuffer } from '@hydrooj/utils/lib/utils';
import { ProblemNotFoundError, ValidationError } from '../error'; import { ProblemNotFoundError, ValidationError } from '../error';
import type { import type {
Document, DomainDoc, Document, DomainDoc, ProblemDict,
ProblemDict, ProblemId, ProblemStatusDoc } from '../interface'; ProblemId, ProblemStatusDoc,
} from '../interface';
import { parseConfig } from '../lib/testdataConfig'; import { parseConfig } from '../lib/testdataConfig';
import * as bus from '../service/bus'; import * as bus from '../service/bus';
import { import {
@@ -309,7 +310,7 @@ export class ProblemModel {
const psdocs = await ProblemModel.getMultiStatus( const psdocs = await ProblemModel.getMultiStatus(
domainId, { uid, docId: { $in: Array.from(new Set(pids)) } }, domainId, { uid, docId: { $in: Array.from(new Set(pids)) } },
).toArray(); ).toArray();
const r: Dictionary<ProblemStatusDoc> = {}; const r: Record<string, ProblemStatusDoc> = {};
for (const psdoc of psdocs) r[psdoc.docId] = psdoc; for (const psdoc of psdocs) r[psdoc.docId] = psdoc;
return r; return r;
} }
+1
View File
@@ -209,6 +209,7 @@ SystemSetting(
Setting('setting_storage', 'installid', String.random(64), 'text', 'installid', 'Installation ID', FLAG_HIDDEN | FLAG_DISABLED), Setting('setting_storage', 'installid', String.random(64), 'text', 'installid', 'Installation ID', FLAG_HIDDEN | FLAG_DISABLED),
); );
// eslint-disable-next-line import/no-mutable-exports
export let langs = {}; export let langs = {};
bus.once('app/started', async () => { bus.once('app/started', async () => {
+4 -4
View File
@@ -6,10 +6,10 @@ import type {
import type { ProblemSolutionHandler } from '../handler/problem'; import type { ProblemSolutionHandler } from '../handler/problem';
import type { UserRegisterHandler } from '../handler/user'; import type { UserRegisterHandler } from '../handler/user';
import type { import type {
DiscussionDoc, DiscussionDoc, DomainDoc, FileInfo,
DomainDoc, FileInfo, MessageDoc, ProblemDoc, RecordDoc, MessageDoc, ProblemDoc, RecordDoc,
Tdoc, Tdoc, TrainingDoc, User,
TrainingDoc, User } from '../interface'; } from '../interface';
import { Logger } from '../logger'; import { Logger } from '../logger';
import type { DocType } from '../model/document'; import type { DocType } from '../model/document';
import type { Handler } from './server'; import type { Handler } from './server';
+10 -7
View File
@@ -1,4 +1,7 @@
import { Collection, Db, IndexSpecification, MongoClient } from 'mongodb'; /* eslint-disable no-await-in-loop */
import {
Collection, Db, IndexSpecification, MongoClient,
} from 'mongodb';
import { BaseService, Collections } from '../interface'; import { BaseService, Collections } from '../interface';
import { Logger } from '../logger'; import { Logger } from '../logger';
import * as bus from './bus'; import * as bus from './bus';
@@ -57,9 +60,9 @@ class MongoService implements BaseService {
existed = []; existed = [];
} }
for (const index of args) { for (const index of args) {
let i = existed.find(t => t.name == index.name || JSON.stringify(t.key) == JSON.stringify(index.key)); let i = existed.find((t) => t.name === index.name || JSON.stringify(t.key) === JSON.stringify(index.key));
if (!i && Object.keys(index.key).map(k => index.key[k]).includes('text')) { if (!i && Object.keys(index.key).map((k) => index.key[k]).includes('text')) {
i = existed.find(t => t.textIndexVersion); i = existed.find((t) => t.textIndexVersion);
} }
index.background = true; index.background = true;
if (!i) { if (!i) {
@@ -67,9 +70,9 @@ class MongoService implements BaseService {
await coll.createIndexes([index]); await coll.createIndexes([index]);
} else if (i.v < 2 || i.name !== index.name || JSON.stringify(i.key) !== JSON.stringify(index.key)) { } else if (i.v < 2 || i.name !== index.name || JSON.stringify(i.key) !== JSON.stringify(index.key)) {
if (i.textIndexVersion) { if (i.textIndexVersion) {
const cur = Object.keys(i.key).filter(t => !t.startsWith('_')).map(k => k + ':' + i.key[k]); const cur = Object.keys(i.key).filter((t) => !t.startsWith('_')).map((k) => `${k}:${i.key[k]}`);
for (const key of Object.keys(i.weights)) cur.push(key + ':text'); for (const key of Object.keys(i.weights)) cur.push(`${key}:text`);
const wanted = Object.keys(index.key).map(key => key + ':' + index.key[key]); const wanted = Object.keys(index.key).map((key) => `${key}:${index.key[key]}`);
if (cur.sort().join(' ') === wanted.sort().join(' ') && i.name === index.name) continue; if (cur.sort().join(' ') === wanted.sort().join(' ') && i.name === index.name) continue;
} }
logger.info('Re-Index %s.%s with key %o', coll.collectionName, index.name, index.key); logger.info('Re-Index %s.%s with key %o', coll.collectionName, index.name, index.key);
+8 -2
View File
@@ -90,8 +90,14 @@ class StorageService {
'file.pathStyle', 'file.endPointForUser', 'file.endPointForJudge', 'file.pathStyle', 'file.endPointForUser', 'file.endPointForJudge',
]); ]);
this.opts = { this.opts = {
endPoint, accessKey, secretKey, bucket, region, endPoint,
pathStyle, endPointForUser, endPointForJudge, accessKey,
secretKey,
bucket,
region,
pathStyle,
endPointForUser,
endPointForJudge,
}; };
this.client = new Client({ this.client = new Client({
...parseMainEndpointUrl(this.opts.endPoint), ...parseMainEndpointUrl(this.opts.endPoint),
+1 -1
View File
@@ -421,7 +421,7 @@ const scripts: UpgradeScript[] = [
await iterateAllProblem(['docId', 'domainId', 'config'], async (pdoc) => { await iterateAllProblem(['docId', 'domainId', 'config'], async (pdoc) => {
logger.info('%s/%s', pdoc.domainId, pdoc.docId); logger.info('%s/%s', pdoc.domainId, pdoc.docId);
if (typeof pdoc.config !== 'string') return; if (typeof pdoc.config !== 'string') return;
if (!pdoc.config?.includes('type: subjective')) return; if (!pdoc.config.includes('type: subjective')) return;
await problem.addTestdata( await problem.addTestdata(
pdoc.domainId, pdoc.docId, 'config.yaml', pdoc.domainId, pdoc.docId, 'config.yaml',
Buffer.from(pdoc.config.replace('type: subjective', 'type: objective')), Buffer.from(pdoc.config.replace('type: subjective', 'type: objective')),
+1 -1
View File
@@ -1,7 +1,7 @@
/* eslint-disable no-await-in-loop */ /* eslint-disable no-await-in-loop */
import mongodb, { Cursor, Db } from 'mongodb'; import mongodb, { Cursor, Db } from 'mongodb';
import { import {
DiscussionTailReplyDoc, MessageDoc, RecordDoc, TestCase, TrainingNode, DiscussionTailReplyDoc, MessageDoc, RecordDoc, TestCase, TrainingNode,
} from 'hydrooj'; } from 'hydrooj';
const dst = global.Hydro.service.db; const dst = global.Hydro.service.db;
+3 -2
View File
@@ -1,6 +1,7 @@
import { import {
Ingest, PushOptions, Ingest, PushOptions, QueryOptions,
QueryOptions, Search, SuggestOptions } from 'sonic-channel'; Search, SuggestOptions,
} from 'sonic-channel';
import { BaseService } from 'hydrooj'; import { BaseService } from 'hydrooj';
import { Logger } from 'hydrooj/src/logger'; import { Logger } from 'hydrooj/src/logger';
import * as system from 'hydrooj/src/model/system'; import * as system from 'hydrooj/src/model/system';