@eggjs/controller-decorator
Version:
tegg controller decorator
38 lines • 3.65 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.MethodValidator = void 0;
const tegg_metadata_1 = require("@eggjs/tegg-metadata");
const MethodInfoUtil_1 = __importDefault(require("../MethodInfoUtil"));
const ControllerInfoUtil_1 = __importDefault(require("../ControllerInfoUtil"));
class MethodValidator {
// should throw error
// 1. use method middleware but not has method decorator
// 2. use context decorator but not has method decorator
// 3. method decorator type is not same as controller decorator type
static validate(clazz, methodName) {
const methodControllerType = MethodInfoUtil_1.default.getMethodControllerType(clazz, methodName);
const methodMiddlewares = MethodInfoUtil_1.default.getMethodMiddlewares(clazz, methodName);
const contextIndex = MethodInfoUtil_1.default.getMethodContextIndex(clazz, methodName);
if (!methodControllerType) {
if (methodMiddlewares.length) {
const desc = tegg_metadata_1.ClassUtil.classDescription(clazz);
throw new Error(`${desc}:${methodName} @Middleware should use with method decorator`);
}
if (contextIndex !== undefined) {
const desc = tegg_metadata_1.ClassUtil.classDescription(clazz);
throw new Error(`${desc}:${methodName} @Context should use with method decorator`);
}
return;
}
const controllerType = ControllerInfoUtil_1.default.getControllerType(clazz);
if (methodControllerType !== controllerType) {
const desc = tegg_metadata_1.ClassUtil.classDescription(clazz);
throw new Error(`${desc}:${methodName} method decorator ${methodControllerType} can not be used with ${controllerType}`);
}
}
}
exports.MethodValidator = MethodValidator;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWV0aG9kVmFsaWRhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3V0aWwvdmFsaWRhdG9yL01ldGhvZFZhbGlkYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFDQSx3REFBaUQ7QUFDakQsdUVBQStDO0FBQy9DLCtFQUF1RDtBQUV2RCxNQUFhLGVBQWU7SUFDMUIscUJBQXFCO0lBQ3JCLHdEQUF3RDtJQUN4RCx3REFBd0Q7SUFDeEQsb0VBQW9FO0lBQ3BFLE1BQU0sQ0FBQyxRQUFRLENBQUMsS0FBd0IsRUFBRSxVQUFrQjtRQUMxRCxNQUFNLG9CQUFvQixHQUFHLHdCQUFjLENBQUMsdUJBQXVCLENBQUMsS0FBSyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQ3ZGLE1BQU0saUJBQWlCLEdBQUcsd0JBQWMsQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDakYsTUFBTSxZQUFZLEdBQUcsd0JBQWMsQ0FBQyxxQkFBcUIsQ0FBQyxLQUFLLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDN0UsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7WUFDMUIsSUFBSSxpQkFBaUIsQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDN0IsTUFBTSxJQUFJLEdBQUcseUJBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDL0MsTUFBTSxJQUFJLEtBQUssQ0FBQyxHQUFHLElBQUksSUFBSSxVQUFVLCtDQUErQyxDQUFDLENBQUM7WUFDeEYsQ0FBQztZQUNELElBQUksWUFBWSxLQUFLLFNBQVMsRUFBRSxDQUFDO2dCQUMvQixNQUFNLElBQUksR0FBRyx5QkFBUyxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUMvQyxNQUFNLElBQUksS0FBSyxDQUFDLEdBQUcsSUFBSSxJQUFJLFVBQVUsNENBQTRDLENBQUMsQ0FBQztZQUNyRixDQUFDO1lBQ0QsT0FBTztRQUNULENBQUM7UUFDRCxNQUFNLGNBQWMsR0FBRyw0QkFBa0IsQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNuRSxJQUFJLG9CQUFvQixLQUFLLGNBQWMsRUFBRSxDQUFDO1lBQzVDLE1BQU0sSUFBSSxHQUFHLHlCQUFTLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDL0MsTUFBTSxJQUFJLEtBQUssQ0FBQyxHQUFHLElBQUksSUFBSSxVQUFVLHFCQUFxQixvQkFBb0IseUJBQXlCLGNBQWMsRUFBRSxDQUFDLENBQUM7UUFDM0gsQ0FBQztJQUNILENBQUM7Q0FDRjtBQTFCRCwwQ0EwQkMifQ==