@eggjs/tegg-eventbus-runtime
Version:
tegg eventbus runtime
61 lines • 4.94 kB
JavaScript
;
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.EventHandlerFactory = void 0;
const eventbus_decorator_1 = require("@eggjs/eventbus-decorator");
const tegg_runtime_1 = require("@eggjs/tegg-runtime");
const tegg_types_1 = require("@eggjs/tegg-types");
const tegg_common_util_1 = require("@eggjs/tegg-common-util");
const core_decorator_1 = require("@eggjs/core-decorator");
let EventHandlerFactory = class EventHandlerFactory {
constructor() {
this.handlerProtoMap = new Map();
}
registerHandler(event, proto) {
const protos = tegg_common_util_1.MapUtil.getOrStore(this.handlerProtoMap, event, []);
protos.push(proto);
}
hasListeners(event) {
return this.handlerProtoMap.has(event);
}
getHandlerProtos(event) {
const handlerProtos = this.handlerProtoMap.get(event) || [];
return handlerProtos;
}
async getHandler(proto) {
const eggObj = await tegg_runtime_1.EggContainerFactory.getOrCreateEggObject(proto, proto.name);
return eggObj.obj;
}
async getHandlers(event) {
const handlerProtos = this.getHandlerProtos(event);
return await Promise.all(handlerProtos.map(proto => {
return this.getHandler(proto);
}));
}
async handle(eventName, proto, args) {
var _a;
const handler = await this.getHandler(proto);
const enableInjectCtx = (_a = proto.getMetaData(eventbus_decorator_1.EVENT_CONTEXT_INJECT)) !== null && _a !== void 0 ? _a : false;
if (enableInjectCtx) {
const ctx = {
eventName,
};
await Reflect.apply(handler.handle, handler, [ctx, ...args]);
}
else {
await Reflect.apply(handler.handle, handler, args);
}
}
};
exports.EventHandlerFactory = EventHandlerFactory;
exports.EventHandlerFactory = EventHandlerFactory = __decorate([
(0, core_decorator_1.SingletonProto)({
accessLevel: tegg_types_1.AccessLevel.PUBLIC,
})
], EventHandlerFactory);
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRXZlbnRIYW5kbGVyRmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9FdmVudEhhbmRsZXJGYWN0b3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBLGtFQUE2RztBQUM3RyxzREFBMEQ7QUFDMUQsa0RBQWdEO0FBRWhELDhEQUFrRDtBQUNsRCwwREFBdUQ7QUFLaEQsSUFBTSxtQkFBbUIsR0FBekIsTUFBTSxtQkFBbUI7SUFBekI7UUFDRyxvQkFBZSxHQUF3QyxJQUFJLEdBQUcsRUFBRSxDQUFDO0lBd0MzRSxDQUFDO0lBdENDLGVBQWUsQ0FBQyxLQUFnQixFQUFFLEtBQW1CO1FBQ25ELE1BQU0sTUFBTSxHQUFHLDBCQUFPLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ25FLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDckIsQ0FBQztJQUVELFlBQVksQ0FBQyxLQUFnQjtRQUMzQixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxLQUFnQjtRQUMvQixNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDNUQsT0FBTyxhQUFhLENBQUM7SUFDdkIsQ0FBQztJQUVELEtBQUssQ0FBQyxVQUFVLENBQUMsS0FBbUI7UUFDbEMsTUFBTSxNQUFNLEdBQUcsTUFBTSxrQ0FBbUIsQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2pGLE9BQU8sTUFBTSxDQUFDLEdBQWlDLENBQUM7SUFDbEQsQ0FBQztJQUVELEtBQUssQ0FBQyxXQUFXLENBQUMsS0FBZ0I7UUFDaEMsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ25ELE9BQU8sTUFBTSxPQUFPLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDakQsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2hDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDTixDQUFDO0lBRUQsS0FBSyxDQUFDLE1BQU0sQ0FBQyxTQUFvQixFQUFFLEtBQW1CLEVBQUUsSUFBb0I7O1FBQzFFLE1BQU0sT0FBTyxHQUFHLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM3QyxNQUFNLGVBQWUsR0FBRyxNQUFBLEtBQUssQ0FBQyxXQUFXLENBQVUseUNBQW9CLENBQUMsbUNBQUksS0FBSyxDQUFDO1FBQ2xGLElBQUksZUFBZSxFQUFFLENBQUM7WUFDcEIsTUFBTSxHQUFHLEdBQUc7Z0JBQ1YsU0FBUzthQUNWLENBQUM7WUFDRixNQUFNLE9BQU8sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxPQUFPLEVBQUUsQ0FBRSxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUUsQ0FBQyxDQUFDO1FBQ2pFLENBQUM7YUFBTSxDQUFDO1lBQ04sTUFBTSxPQUFPLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3JELENBQUM7SUFDSCxDQUFDO0NBQ0YsQ0FBQTtBQXpDWSxrREFBbUI7OEJBQW5CLG1CQUFtQjtJQUgvQixJQUFBLCtCQUFjLEVBQUM7UUFDZCxXQUFXLEVBQUUsd0JBQVcsQ0FBQyxNQUFNO0tBQ2hDLENBQUM7R0FDVyxtQkFBbUIsQ0F5Qy9CIn0=