UNPKG

@eggjs/controller-decorator

Version:

tegg controller decorator

76 lines 6.05 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.Middleware = Middleware; const node_assert_1 = __importDefault(require("node:assert")); const is_type_of_1 = __importDefault(require("is-type-of")); const ControllerInfoUtil_1 = __importDefault(require("../util/ControllerInfoUtil")); const MethodInfoUtil_1 = __importDefault(require("../util/MethodInfoUtil")); const aop_decorator_1 = require("@eggjs/aop-decorator"); var MiddlewareType; (function (MiddlewareType) { MiddlewareType["AOP"] = "AOP"; MiddlewareType["MiddlewareFunc"] = "MiddlewareFunc"; })(MiddlewareType || (MiddlewareType = {})); function isAop(mw) { return is_type_of_1.default.class(mw) && aop_decorator_1.AdviceInfoUtil.isAdvice(mw); } function isAopTypeOrMiddlewareType(middlewares) { const adviceCount = middlewares.filter(t => isAop(t)).length; if (adviceCount) { if (adviceCount === middlewares.length) { return MiddlewareType.AOP; } throw new Error('AOP and MiddlewareFunc can not be mixed'); } return MiddlewareType.MiddlewareFunc; } function Middleware(...middlewares) { function functionTypeClassMiddleware(constructor) { middlewares.forEach(mid => { ControllerInfoUtil_1.default.addControllerMiddleware(mid, constructor); }); } function aopTypeClassMiddleware(constructor) { for (const aopAdvice of middlewares) { ControllerInfoUtil_1.default.addControllerAopMiddleware(aopAdvice, constructor); } } function functionTypeMethodMiddleware(target, propertyKey) { (0, node_assert_1.default)(typeof propertyKey === 'string', `[controller/${target.name}] expect method name be typeof string, but now is ${String(propertyKey)}`); const controllerClazz = target.constructor; const methodName = propertyKey; middlewares.forEach(mid => { MethodInfoUtil_1.default.addMethodMiddleware(mid, controllerClazz, methodName); }); } function aopTypeMethodMiddleware(target, propertyKey) { const controllerClazz = target.constructor; const methodName = propertyKey; for (const aopAdvice of middlewares) { MethodInfoUtil_1.default.addMethodAopMiddleware(aopAdvice, controllerClazz, methodName); } } return function (target, propertyKey) { const type = isAopTypeOrMiddlewareType(middlewares); if (propertyKey === undefined) { if (type === MiddlewareType.AOP) { aopTypeClassMiddleware(target); } else { functionTypeClassMiddleware(target); } } else { if (type === MiddlewareType.AOP) { aopTypeMethodMiddleware(target, propertyKey); } else { functionTypeMethodMiddleware(target, propertyKey); } } }; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWlkZGxld2FyZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9kZWNvcmF0b3IvTWlkZGxld2FyZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQTJCQSxnQ0ErQ0M7QUExRUQsOERBQWlDO0FBRWpDLDREQUE0QjtBQUM1QixvRkFBNEQ7QUFDNUQsNEVBQW9EO0FBQ3BELHdEQUFzRDtBQUV0RCxJQUFLLGNBR0o7QUFIRCxXQUFLLGNBQWM7SUFDakIsNkJBQVcsQ0FBQTtJQUNYLG1EQUFpQyxDQUFBO0FBQ25DLENBQUMsRUFISSxjQUFjLEtBQWQsY0FBYyxRQUdsQjtBQUVELFNBQVMsS0FBSyxDQUFDLEVBQStDO0lBQzVELE9BQU8sb0JBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksOEJBQWMsQ0FBQyxRQUFRLENBQUMsRUFBZ0MsQ0FBQyxDQUFDO0FBQ25GLENBQUM7QUFFRCxTQUFTLHlCQUF5QixDQUFDLFdBQXNFO0lBQ3ZHLE1BQU0sV0FBVyxHQUFHLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7SUFDN0QsSUFBSSxXQUFXLEVBQUUsQ0FBQztRQUNoQixJQUFJLFdBQVcsS0FBSyxXQUFXLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDdkMsT0FBTyxjQUFjLENBQUMsR0FBRyxDQUFDO1FBQzVCLENBQUM7UUFDRCxNQUFNLElBQUksS0FBSyxDQUFDLHlDQUF5QyxDQUFDLENBQUM7SUFDN0QsQ0FBQztJQUNELE9BQU8sY0FBYyxDQUFDLGNBQWMsQ0FBQztBQUN2QyxDQUFDO0FBRUQsU0FBZ0IsVUFBVSxDQUFDLEdBQUcsV0FBc0U7SUFDbEcsU0FBUywyQkFBMkIsQ0FBQyxXQUE4QjtRQUNqRSxXQUFXLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ3hCLDRCQUFrQixDQUFDLHVCQUF1QixDQUFDLEdBQUcsRUFBRSxXQUFXLENBQUMsQ0FBQztRQUMvRCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxTQUFTLHNCQUFzQixDQUFDLFdBQThCO1FBQzVELEtBQUssTUFBTSxTQUFTLElBQUksV0FBMkMsRUFBRSxDQUFDO1lBQ3BFLDRCQUFrQixDQUFDLDBCQUEwQixDQUFDLFNBQVMsRUFBRSxXQUFXLENBQUMsQ0FBQztRQUN4RSxDQUFDO0lBQ0gsQ0FBQztJQUVELFNBQVMsNEJBQTRCLENBQUMsTUFBVyxFQUFFLFdBQXdCO1FBQ3pFLElBQUEscUJBQU0sRUFBQyxPQUFPLFdBQVcsS0FBSyxRQUFRLEVBQ3BDLGVBQWUsTUFBTSxDQUFDLElBQUkscURBQXFELE1BQU0sQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDeEcsTUFBTSxlQUFlLEdBQUcsTUFBTSxDQUFDLFdBQWdDLENBQUM7UUFDaEUsTUFBTSxVQUFVLEdBQUcsV0FBcUIsQ0FBQztRQUN6QyxXQUFXLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ3hCLHdCQUFjLENBQUMsbUJBQW1CLENBQUMsR0FBRyxFQUFFLGVBQWUsRUFBRSxVQUFVLENBQUMsQ0FBQztRQUN2RSxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxTQUFTLHVCQUF1QixDQUFDLE1BQVcsRUFBRSxXQUF3QjtRQUNwRSxNQUFNLGVBQWUsR0FBRyxNQUFNLENBQUMsV0FBZ0MsQ0FBQztRQUNoRSxNQUFNLFVBQVUsR0FBRyxXQUFxQixDQUFDO1FBQ3pDLEtBQUssTUFBTSxTQUFTLElBQUksV0FBMkMsRUFBRSxDQUFDO1lBQ3BFLHdCQUFjLENBQUMsc0JBQXNCLENBQUMsU0FBUyxFQUFFLGVBQWUsRUFBRSxVQUFVLENBQUMsQ0FBQztRQUNoRixDQUFDO0lBQ0gsQ0FBQztJQUVELE9BQU8sVUFBUyxNQUFXLEVBQUUsV0FBeUI7UUFDcEQsTUFBTSxJQUFJLEdBQUcseUJBQXlCLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDcEQsSUFBSSxXQUFXLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDOUIsSUFBSSxJQUFJLEtBQUssY0FBYyxDQUFDLEdBQUcsRUFBRSxDQUFDO2dCQUNoQyxzQkFBc0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNqQyxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sMkJBQTJCLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDdEMsQ0FBQztRQUNILENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxJQUFJLEtBQUssY0FBYyxDQUFDLEdBQUcsRUFBRSxDQUFDO2dCQUNoQyx1QkFBdUIsQ0FBQyxNQUFNLEVBQUUsV0FBVyxDQUFDLENBQUM7WUFDL0MsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLDRCQUE0QixDQUFDLE1BQU0sRUFBRSxXQUFXLENBQUMsQ0FBQztZQUNwRCxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUMsQ0FBQztBQUNKLENBQUMifQ==