From bb288cb960ca5a01c327e0dcffacdd42f58dec7e Mon Sep 17 00:00:00 2001 From: undefined Date: Wed, 5 Oct 2022 19:10:03 +0800 Subject: [PATCH] core: add definePlugin syntax support --- packages/center/index.ts | 10 ++++++---- packages/hydrooj/src/plugin-api.ts | 7 +++++++ 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/packages/center/index.ts b/packages/center/index.ts index 58dd45a32..b211bf669 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, ForbiddenError, Handler, post, Types, yaml, + db, definePlugin, ForbiddenError, Handler, post, Types, yaml, } from 'hydrooj'; function decrypt(encrypted: string) { @@ -67,6 +67,8 @@ class DataReportHandler extends Handler { } } -export function apply(ctx: Context) { - ctx.Route('data_report', '/center/report', DataReportHandler); -} +export default definePlugin({ + apply(ctx) { + ctx.Route('data_report', '/center/report', DataReportHandler); + }, +}); diff --git a/packages/hydrooj/src/plugin-api.ts b/packages/hydrooj/src/plugin-api.ts index b79e89f11..f8611033a 100644 --- a/packages/hydrooj/src/plugin-api.ts +++ b/packages/hydrooj/src/plugin-api.ts @@ -5,6 +5,7 @@ import _ from 'lodash'; import moment from 'moment-timezone'; import Schema from 'schemastery'; import superagent from 'superagent'; +import { Context } from './context'; import db from './service/db'; export { ObjectID, ObjectId, FilterQuery } from 'mongodb'; export * from './utils'; @@ -55,3 +56,9 @@ export { EventMap } from './service/bus'; export { db, Schema, yaml, fs, AdmZip, superagent, _, moment, }; +export const definePlugin = (args: { + using?: keyof Context[]; + apply: (ctx: Context, config: T) => Promise | void; + schema?: Schema; + name?: string; +}) => args;