@halsp/core
Version:
面向云的现代渐进式轻量 Node.js 框架
35 lines • 1.26 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.HookManager = void 0;
const __1 = require("../index.cjs");
const MIDDLEWARE_HOOK_BAG = "@halsp/core/middlewareHooksBag";
const hookMap = new WeakMap();
class HookManager {
static getGlobalHooks(startup, type) {
if (!hookMap.has(startup)) {
hookMap.set(startup, []);
}
return hookMap
.get(startup)
.filter((h) => (0, __1.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) => (0, __1.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);
}
}
exports.HookManager = HookManager;
//# sourceMappingURL=hook.manager.js.map
;