From ec0ba8a3942ca0f790b2e18de24f55f1ee916275 Mon Sep 17 00:00:00 2001 From: undefined Date: Sun, 29 Jan 2023 11:34:02 +0800 Subject: [PATCH] core: remove deprecated apis --- packages/hydrooj/src/handler/manage.ts | 5 ++--- packages/hydrooj/src/init.ts | 2 +- packages/hydrooj/src/interface.ts | 1 - packages/hydrooj/src/lib/i18n.ts | 8 -------- packages/hydrooj/src/loader.ts | 1 + packages/hydrooj/src/model/builtin.ts | 9 --------- packages/hydrooj/src/model/domain.ts | 6 ------ packages/hydrooj/src/service/storage.ts | 9 --------- packages/hydrooj/src/upgrade.ts | 20 ++++++++++++++++++++ 9 files changed, 24 insertions(+), 37 deletions(-) diff --git a/packages/hydrooj/src/handler/manage.ts b/packages/hydrooj/src/handler/manage.ts index 7ac3e6325..646bec10b 100644 --- a/packages/hydrooj/src/handler/manage.ts +++ b/packages/hydrooj/src/handler/manage.ts @@ -1,6 +1,7 @@ import { exec } from 'child_process'; import { inspect } from 'util'; import * as yaml from 'js-yaml'; +import { omit } from 'lodash'; import Schema from 'schemastery'; import * as check from '../check'; import { @@ -276,9 +277,7 @@ class SystemUserImportHandler extends SystemHandler { } /* eslint-enable no-await-in-loop */ -const Priv = Object.fromEntries(Object.entries(PRIV).filter( - (i) => (!i[0].endsWith('SELF') && !['PRIV_DEFAULT', 'PRIV_NEVER', 'PRIV_NONE', 'PRIV_ALL'].includes(i[0])), -)); +const Priv = omit(PRIV, ['PRIV_DEFAULT', 'PRIV_NEVER', 'PRIV_NONE', 'PRIV_ALL']); const allPriv = Math.sum(Object.values(Priv)); class SystemUserPrivHandler extends SystemHandler { diff --git a/packages/hydrooj/src/init.ts b/packages/hydrooj/src/init.ts index 81810c2a2..445873f35 100644 --- a/packages/hydrooj/src/init.ts +++ b/packages/hydrooj/src/init.ts @@ -1,5 +1,5 @@ const versionNum = +process.version.replace(/v/gim, '').split('.')[0]; -if (versionNum < 14) throw new Error('NodeJS >=14 required'); +if (versionNum < 18) throw new Error('NodeJS >=18 required'); console.log('Process', process.pid, 'running as', process.env.NODE_APP_INSTANCE === '0' ? 'master' : 'worker'); if (!global.Hydro) { diff --git a/packages/hydrooj/src/interface.ts b/packages/hydrooj/src/interface.ts index 8c2a3e245..cf73cd5a9 100644 --- a/packages/hydrooj/src/interface.ts +++ b/packages/hydrooj/src/interface.ts @@ -727,7 +727,6 @@ export type ProblemSearch = (domainId: string, q: string, options?: ProblemSearc export interface Lib extends Record { difficulty: typeof import('./lib/difficulty'); buildContent: typeof import('./lib/content').buildContent; - i18n: typeof import('./lib/i18n'); mail: typeof import('./lib/mail'); paginate: typeof import('./lib/paginate'); rank: typeof import('./lib/rank'); diff --git a/packages/hydrooj/src/lib/i18n.ts b/packages/hydrooj/src/lib/i18n.ts index a8f7f08fe..04836d30b 100644 --- a/packages/hydrooj/src/lib/i18n.ts +++ b/packages/hydrooj/src/lib/i18n.ts @@ -52,13 +52,6 @@ String.prototype.translate = function translate(...languages: string[]) { return this.toString(); }; -/** @deprecated use ctx.i18n.load instead. */ -function load(data: Record>) { - for (const i in data) app.i18n.load(i, data[i]); -} - -export = load; - function collect(lang: string) { const s = translations[lang]; if (!(s instanceof Array)) return {}; @@ -81,4 +74,3 @@ global.Hydro.locales = new Proxy(translations, { }); }, }) as any; -global.Hydro.lib.i18n = load; diff --git a/packages/hydrooj/src/loader.ts b/packages/hydrooj/src/loader.ts index 45f2d4326..b311cdd2d 100644 --- a/packages/hydrooj/src/loader.ts +++ b/packages/hydrooj/src/loader.ts @@ -11,6 +11,7 @@ import path from 'path'; import './utils'; import cac from 'cac'; import './ui'; +import './lib/i18n'; import { Logger } from './logger'; import { Context } from './context'; diff --git a/packages/hydrooj/src/model/builtin.ts b/packages/hydrooj/src/model/builtin.ts index 7f1b87930..81509011c 100644 --- a/packages/hydrooj/src/model/builtin.ts +++ b/packages/hydrooj/src/model/builtin.ts @@ -256,19 +256,10 @@ export const PRIV = { PRIV_ALL: -1, PRIV_DEFAULT: 0, PRIV_NEVER: 1 << 20, - - /** @deprecated */ - PRIV_READ_PRETEST_DATA: 1 << 5, - /** @deprecated */ - PRIV_READ_PRETEST_DATA_SELF: 1 << 6, - /** @deprecated */ - PRIV_DELETE_FILE_SELF: 1 << 19, }; PRIV.PRIV_DEFAULT = PRIV.PRIV_USER_PROFILE - + PRIV.PRIV_READ_PRETEST_DATA_SELF + PRIV.PRIV_CREATE_FILE - + PRIV.PRIV_DELETE_FILE_SELF + PRIV.PRIV_SEND_MESSAGE; // people whose rank is less than 1% will get Level 10 diff --git a/packages/hydrooj/src/model/domain.ts b/packages/hydrooj/src/model/domain.ts index fd293ab15..5cb4da807 100644 --- a/packages/hydrooj/src/model/domain.ts +++ b/packages/hydrooj/src/model/domain.ts @@ -277,12 +277,6 @@ class DomainModel { await bus.parallel('domain/delete', domainId); bus.broadcast('domain/delete-cache', domainId.toLowerCase()); } - - @ArgMethod - /** @deprecated */ - static async getUnion(domainId: string) { - return await coll.findOne({ _id: domainId }); - } } bus.on('ready', () => Promise.all([ diff --git a/packages/hydrooj/src/service/storage.ts b/packages/hydrooj/src/service/storage.ts index e43d23340..421920f35 100644 --- a/packages/hydrooj/src/service/storage.ts +++ b/packages/hydrooj/src/service/storage.ts @@ -187,11 +187,6 @@ class RemoteStorageService { })); } - /** @deprecated use StorageModel.list instead. */ - async list() { - throw new Error('listObjectsAPI was no longer supported in hydrooj@4. Please use hydrooj@3 to migrate your files first.'); - } - async getMeta(target: string) { target = convertPath(target); const res = await this.client.send(new HeadObjectCommand({ @@ -320,10 +315,6 @@ class LocalStorageService { throw new Error('Not implemented'); } - async list() { - throw new Error('deprecated'); - } - async copy(src: string, target: string) { src = resolve(this.dir, convertPath(src)); target = resolve(this.dir, convertPath(target)); diff --git a/packages/hydrooj/src/upgrade.ts b/packages/hydrooj/src/upgrade.ts index 83755fdf3..27034d60f 100644 --- a/packages/hydrooj/src/upgrade.ts +++ b/packages/hydrooj/src/upgrade.ts @@ -513,6 +513,26 @@ const scripts: UpgradeScript[] = [ await ScheduleModel.deleteMany({ subType: 'discussion.sort' }); return true; }, + async function _74_75() { + const list = { + READ_PRETEST_DATA: 1 << 5, + READ_PRETEST_DATA_SELF: 1 << 6, + DELETE_FILE_SELF: 1 << 19, + }; + let defaultPriv = system.get('default.priv') as number; + for (const key in list) { + if (defaultPriv & list[key]) defaultPriv -= list[key]; + } + await system.set('default.priv', defaultPriv); + return iterateAllUser(async (udoc) => { + if (udoc.priv < 0) return; + const old = udoc.priv; + for (const key in list) { + if (udoc.priv & list[key]) udoc.priv -= list[key]; + } + if (old !== udoc.priv) await user.setById(udoc._id, udoc); + }); + }, ]; export default scripts;