From 9c2b458a41bb04ca2ee771eb440b3747208f99ba Mon Sep 17 00:00:00 2001 From: undefined Date: Wed, 5 Mar 2025 12:15:34 +0800 Subject: [PATCH] core: loader.reloadPlugin: remove first arg --- packages/hydrooj/src/entry/cli.ts | 7 ++++++- packages/hydrooj/src/entry/common.ts | 4 ++-- packages/hydrooj/src/entry/worker.ts | 4 ++-- packages/hydrooj/src/loader.ts | 4 ++-- packages/utils/lib/common.ts | 2 +- 5 files changed, 13 insertions(+), 8 deletions(-) diff --git a/packages/hydrooj/src/entry/cli.ts b/packages/hydrooj/src/entry/cli.ts index 031abd16c..70433bee5 100644 --- a/packages/hydrooj/src/entry/cli.ts +++ b/packages/hydrooj/src/entry/cli.ts @@ -123,10 +123,15 @@ export async function load(ctx: Context) { await model(pending, fail, ctx); await setting(pending, fail, require('../model/setting')); ctx.plugin(require('../service/server')); + ctx = await new Promise((resolve) => { + ctx.inject(['server'], (c) => { + resolve(c); + }); + }); await addon(pending, fail, ctx); const scriptDir = path.resolve(__dirname, '..', 'script'); for (const h of await fs.readdir(scriptDir)) { - ctx.loader.reloadPlugin(ctx, path.resolve(scriptDir, h), {}, `hydrooj/script/${h.split('.')[0]}`); + ctx.loader.reloadPlugin(path.resolve(scriptDir, h), {}, `hydrooj/script/${h.split('.')[0]}`); } await script(pending, fail, ctx); await cli(); diff --git a/packages/hydrooj/src/entry/common.ts b/packages/hydrooj/src/entry/common.ts index 5e53ab938..76d37ed91 100644 --- a/packages/hydrooj/src/entry/common.ts +++ b/packages/hydrooj/src/entry/common.ts @@ -42,7 +42,7 @@ const getLoader = (type: LoadTask, filename: string, dontLoad = false) => async try { if (dontLoad) throw new Error(`deprecated ${name} in %s will not be load: ${i}`); const m = unwrapExports(require(p)); - if (m.apply) ctx.loader.reloadPlugin(ctx, p, {}); + if (m.apply) ctx.loader.reloadPlugin(p, {}); else logger.info(`${name} init: %s`, i); } catch (e) { fail.push(i); @@ -69,7 +69,7 @@ export async function builtinModel(ctx: Context) { const models = await fs.readdir(modelDir); for (const t of models.filter((i) => i.endsWith('.ts'))) { const q = path.resolve(modelDir, t); - if ('apply' in require(q)) ctx.loader.reloadPlugin(ctx, q, {}, `hydrooj/model/${t.split('.')[0]}`); + if ('apply' in require(q)) ctx.loader.reloadPlugin(q, {}, `hydrooj/model/${t.split('.')[0]}`); } } diff --git a/packages/hydrooj/src/entry/worker.ts b/packages/hydrooj/src/entry/worker.ts index 5f757bd87..0e108738d 100644 --- a/packages/hydrooj/src/entry/worker.ts +++ b/packages/hydrooj/src/entry/worker.ts @@ -61,14 +61,14 @@ export async function apply(ctx: Context) { const handlerDir = path.resolve(__dirname, '..', 'handler'); const handlers = await fs.readdir(handlerDir); for (const h of handlers.filter((i) => i.endsWith('.ts'))) { - ctx.loader.reloadPlugin(ctx, path.resolve(handlerDir, h), {}, `hydrooj/handler/${h.split('.')[0]}`); + ctx.loader.reloadPlugin(path.resolve(handlerDir, h), {}, `hydrooj/handler/${h.split('.')[0]}`); } ctx.plugin(require('../service/migration').default); await handler(pending, fail, ctx); await addon(pending, fail, ctx); const scriptDir = path.resolve(__dirname, '..', 'script'); for (const h of await fs.readdir(scriptDir)) { - ctx.loader.reloadPlugin(ctx, path.resolve(scriptDir, h), {}, `hydrooj/script/${h.split('.')[0]}`); + ctx.loader.reloadPlugin(path.resolve(scriptDir, h), {}, `hydrooj/script/${h.split('.')[0]}`); } await script(pending, fail, ctx); await ctx.parallel('app/started'); diff --git a/packages/hydrooj/src/loader.ts b/packages/hydrooj/src/loader.ts index d49fab14a..776a382d7 100644 --- a/packages/hydrooj/src/loader.ts +++ b/packages/hydrooj/src/loader.ts @@ -103,7 +103,7 @@ export class Loader extends Service { } } - async reloadPlugin(parent: Context, key: string, config: any, asName = '') { + async reloadPlugin(key: string, config: any, asName = '') { let fork = this.state[key]; if (fork) { logger.info('reload plugin %c', key.split('node_modules').pop()); @@ -115,7 +115,7 @@ export class Loader extends Service { resolveConfig(plugin, config); if (asName) plugin.name = asName; // fork = parent.plugin(plugin, this.interpolate(config)); - fork = parent.plugin(plugin, config); + fork = this.ctx.plugin(plugin, config); if (!fork) return; this.state[key] = fork; } diff --git a/packages/utils/lib/common.ts b/packages/utils/lib/common.ts index bdf2186cd..552772258 100644 --- a/packages/utils/lib/common.ts +++ b/packages/utils/lib/common.ts @@ -211,7 +211,7 @@ export type StringKeys = { }[keyof O]; const fSortR = /[^\d]+|\d+/g; export function sortFiles(files: string[]): string[]; -export function sortFiles(files: { _id: string }[], key?: '_id'): { _id: string }[]; +export function sortFiles(files: T[], key?: '_id'): T[]; export function sortFiles>(files: T[], key: StringKeys): T[]; export function sortFiles(files: Record[] | string[], key = '_id') { if (!files?.length) return [];