UNPKG

@eggjs/controller-decorator

Version:

tegg controller decorator

49 lines 4.36 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.ControllerMetaBuilderFactory = void 0; const ControllerInfoUtil_1 = __importDefault(require("../util/ControllerInfoUtil")); const MethodInfoUtil_1 = __importDefault(require("../util/MethodInfoUtil")); const aop_decorator_1 = require("@eggjs/aop-decorator"); class ControllerMetaBuilderFactory { static registerControllerMetaBuilder(controllerType, controllerBuilderCreator) { this.builderCreatorMap.set(controllerType, controllerBuilderCreator); } static createControllerMetaBuilder(clazz, controllerType) { if (!controllerType) { controllerType = ControllerInfoUtil_1.default.getControllerType(clazz); } if (!controllerType) { return; } const creator = this.builderCreatorMap.get(controllerType); if (!creator) { throw new Error(`not found controller meta builder for type ${controllerType}`); } return creator(clazz); } static build(clazz, controllerType) { const builder = ControllerMetaBuilderFactory.createControllerMetaBuilder(clazz, controllerType); if (!builder) return; const metadata = builder.build(); if (!metadata) return; const controllerAopMws = ControllerInfoUtil_1.default.getControllerAopMiddlewares(clazz); for (const { name } of metadata.methods) { const methodAopMws = MethodInfoUtil_1.default.getMethodAopMiddlewares(clazz, name); if (MethodInfoUtil_1.default.shouldRegisterAopMiddlewarePointCut(clazz, name)) { for (const mw of [...methodAopMws, ...controllerAopMws].reverse()) { (0, aop_decorator_1.Pointcut)(mw)(clazz.prototype, name); } MethodInfoUtil_1.default.registerAopMiddlewarePointcut(clazz, name); } } return metadata; } } exports.ControllerMetaBuilderFactory = ControllerMetaBuilderFactory; ControllerMetaBuilderFactory.builderCreatorMap = new Map(); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29udHJvbGxlck1ldGFCdWlsZGVyRmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9idWlsZGVyL0NvbnRyb2xsZXJNZXRhQnVpbGRlckZhY3RvcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBTUEsb0ZBQTREO0FBQzVELDRFQUFvRDtBQUNwRCx3REFBZ0Q7QUFFaEQsTUFBYSw0QkFBNEI7SUFHdkMsTUFBTSxDQUFDLDZCQUE2QixDQUFDLGNBQWtDLEVBQUUsd0JBQXNEO1FBQzdILElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsY0FBYyxFQUFFLHdCQUF3QixDQUFDLENBQUM7SUFDdkUsQ0FBQztJQUVELE1BQU0sQ0FBQywyQkFBMkIsQ0FBQyxLQUF3QixFQUFFLGNBQW1DO1FBQzlGLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUNwQixjQUFjLEdBQUcsNEJBQWtCLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDL0QsQ0FBQztRQUNELElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUNwQixPQUFPO1FBQ1QsQ0FBQztRQUNELE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDM0QsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2IsTUFBTSxJQUFJLEtBQUssQ0FBQyw4Q0FBOEMsY0FBYyxFQUFFLENBQUMsQ0FBQztRQUNsRixDQUFDO1FBQ0QsT0FBTyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDeEIsQ0FBQztJQUVELE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBd0IsRUFBRSxjQUFtQztRQUN4RSxNQUFNLE9BQU8sR0FBRyw0QkFBNEIsQ0FBQywyQkFBMkIsQ0FBQyxLQUFLLEVBQUUsY0FBYyxDQUFDLENBQUM7UUFDaEcsSUFBSSxDQUFDLE9BQU87WUFBRSxPQUFPO1FBQ3JCLE1BQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNqQyxJQUFJLENBQUMsUUFBUTtZQUFFLE9BQU87UUFDdEIsTUFBTSxnQkFBZ0IsR0FBRyw0QkFBa0IsQ0FBQywyQkFBMkIsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMvRSxLQUFLLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxRQUFRLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDeEMsTUFBTSxZQUFZLEdBQUcsd0JBQWMsQ0FBQyx1QkFBdUIsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDekUsSUFBSSx3QkFBYyxDQUFDLG1DQUFtQyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDO2dCQUNwRSxLQUFLLE1BQU0sRUFBRSxJQUFJLENBQUUsR0FBRyxZQUFZLEVBQUUsR0FBRyxnQkFBZ0IsQ0FBRSxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUM7b0JBQ3BFLElBQUEsd0JBQVEsRUFBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDO2dCQUN0QyxDQUFDO2dCQUNELHdCQUFjLENBQUMsNkJBQTZCLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQzVELENBQUM7UUFDSCxDQUFDO1FBRUQsT0FBTyxRQUFRLENBQUM7SUFDbEIsQ0FBQzs7QUF0Q0gsb0VBdUNDO0FBdENnQiw4Q0FBaUIsR0FBMEQsSUFBSSxHQUFHLEVBQUUsQ0FBQyJ9