@halsp/core
Version:
面向云的现代渐进式轻量 Node.js 框架
31 lines • 1.12 kB
JavaScript
import { isUndefined } from "../index.mjs";
const MIDDLEWARE_HOOK_BAG = "@halsp/core/middlewareHooksBag";
const hookMap = new WeakMap();
export class HookManager {
static getGlobalHooks(startup, type) {
if (!hookMap.has(startup)) {
hookMap.set(startup, []);
}
return hookMap
.get(startup)
.filter((h) => isUndefined(type) || h.type == type);
}
static addGlobalHook(startup, hook) {
if (!hookMap.has(startup)) {
hookMap.set(startup, []);
}
const hooks = hookMap.get(startup);
hooks.push(hook);
}
static getHooks(ctx, type) {
const globalHooks = this.getGlobalHooks(ctx.startup, type);
const hooks = (ctx.get(MIDDLEWARE_HOOK_BAG) ?? []).filter((h) => isUndefined(type) || h.type == type);
return [...globalHooks, ...hooks];
}
static addHook(ctx, hook) {
const hooks = ctx.get(MIDDLEWARE_HOOK_BAG) ?? [];
hooks.push({ hook: hook.hook, type: hook.type });
ctx.set(MIDDLEWARE_HOOK_BAG, hooks);
}
}
//# sourceMappingURL=hook.manager.js.map