UNPKG

@halsp/core

Version:

面向云的现代渐进式轻量 Node.js 框架

31 lines 1.12 kB
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