@eggjs/tegg-aop-plugin
Version:
tegg aop plugin
48 lines • 4.01 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.AopContextHook = void 0;
const tegg_1 = require("@eggjs/tegg");
const aop_decorator_1 = require("@eggjs/aop-decorator");
const tegg_metadata_1 = require("@eggjs/tegg-metadata");
const egg_module_common_1 = require("@eggjs/egg-module-common");
class AopContextHook {
constructor(moduleHandler) {
this.requestProtoList = [];
this.moduleHandler = moduleHandler;
for (const loadUnitInstance of this.moduleHandler.loadUnitInstances) {
const iterator = loadUnitInstance.loadUnit.iterateEggPrototype();
for (const proto of iterator) {
const protoWithClazz = proto;
const clazz = protoWithClazz.clazz;
if (!clazz)
continue;
const aspects = aop_decorator_1.AspectInfoUtil.getAspectList(clazz);
for (const aspect of aspects) {
for (const advice of aspect.adviceList) {
const adviceProto = tegg_1.PrototypeUtil.getClazzProto(advice.clazz);
if (!adviceProto) {
throw tegg_metadata_1.TeggError.create(`Aop Advice(${advice.clazz.name}) not found in loadUnits`, 'advice_not_found');
}
if (adviceProto.initType === tegg_1.ObjectInitType.CONTEXT) {
this.requestProtoList.push({
name: advice.name,
proto: adviceProto,
});
}
}
}
}
}
}
async preCreate(_, ctx) {
// compatible with egg controller
// add context aspect to ctx
if (!ctx.get(egg_module_common_1.ROOT_PROTO)) {
for (const proto of this.requestProtoList) {
ctx.addProtoToCreate(proto.name, proto.proto);
}
}
}
}
exports.AopContextHook = AopContextHook;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQW9wQ29udGV4dEhvb2suanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJBb3BDb250ZXh0SG9vay50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFHQSxzQ0FBNEQ7QUFDNUQsd0RBQXNEO0FBQ3RELHdEQUErRDtBQUMvRCxnRUFBc0Q7QUFXdEQsTUFBYSxjQUFjO0lBSXpCLFlBQVksYUFBMkM7UUFGL0MscUJBQWdCLEdBQXlCLEVBQUUsQ0FBQztRQUdsRCxJQUFJLENBQUMsYUFBYSxHQUFHLGFBQWEsQ0FBQztRQUNuQyxLQUFLLE1BQU0sZ0JBQWdCLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQ3BFLE1BQU0sUUFBUSxHQUFHLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1lBQ2pFLEtBQUssTUFBTSxLQUFLLElBQUksUUFBUSxFQUFFLENBQUM7Z0JBQzdCLE1BQU0sY0FBYyxHQUFHLEtBQThCLENBQUM7Z0JBQ3RELE1BQU0sS0FBSyxHQUFHLGNBQWMsQ0FBQyxLQUFLLENBQUM7Z0JBQ25DLElBQUksQ0FBQyxLQUFLO29CQUFFLFNBQVM7Z0JBQ3JCLE1BQU0sT0FBTyxHQUFHLDhCQUFjLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUNwRCxLQUFLLE1BQU0sTUFBTSxJQUFJLE9BQU8sRUFBRSxDQUFDO29CQUM3QixLQUFLLE1BQU0sTUFBTSxJQUFJLE1BQU0sQ0FBQyxVQUFVLEVBQUUsQ0FBQzt3QkFDdkMsTUFBTSxXQUFXLEdBQUcsb0JBQWEsQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBNkIsQ0FBQzt3QkFDMUYsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDOzRCQUNqQixNQUFNLHlCQUFTLENBQUMsTUFBTSxDQUFDLGNBQWMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLDBCQUEwQixFQUFFLGtCQUFrQixDQUFDLENBQUM7d0JBQ3hHLENBQUM7d0JBQ0QsSUFBSSxXQUFXLENBQUMsUUFBUSxLQUFLLHFCQUFjLENBQUMsT0FBTyxFQUFFLENBQUM7NEJBQ3BELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUM7Z0NBQ3pCLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSTtnQ0FDakIsS0FBSyxFQUFFLFdBQVc7NkJBQ25CLENBQUMsQ0FBQzt3QkFDTCxDQUFDO29CQUNILENBQUM7Z0JBQ0gsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVELEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLEdBQWU7UUFDaEMsaUNBQWlDO1FBQ2pDLDRCQUE0QjtRQUM1QixJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyw4QkFBVSxDQUFDLEVBQUUsQ0FBQztZQUN6QixLQUFLLE1BQU0sS0FBSyxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO2dCQUMxQyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDaEQsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0NBQ0Y7QUF4Q0Qsd0NBd0NDIn0=
;