UNPKG

dinoloop-es8

Version:

A lightweight REST API Library for building scalable Node.js server-side applications powered by Typescript

146 lines 11.9 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const lib_1 = require("../lib"); const constants_1 = require("../constants"); const utility_1 = require("../utility"); const exceptions_1 = require("../builtin/exceptions"); class AttributeMetadata { /** * @Throws InvalidRouteException */ static defineHttpVerbMetadata(route, verb, target, property) { if (utility_1.DataUtility.isUndefinedOrNull(route)) { throw new exceptions_1.InvalidRouteException(route, verb, property, target.constructor.name); } lib_1.Reflector.defineMetadata(verb, route, target.constructor.prototype, property); } } // we are creating an array of parameter values and saving it to metadata /** * @Throws InvalidArgumentException */ AttributeMetadata.parse = (cb, data, isQueryParam) => { return (target, propertyKey, parameterIndex) => { let args = utility_1.FunctionUtility.getParamNames(target[propertyKey]); let parameterKey = args[parameterIndex]; if (!utility_1.DataUtility.isFunction(cb)) { throw new exceptions_1.InvalidArgumentException(cb, `Controller: ${target.constructor.name}, Action: ${propertyKey}, Key: ${parameterKey}`); } // get already added metadata let meta = lib_1.Reflector.getMetadata(constants_1.Attribute.parse, target.constructor.prototype, propertyKey); const parseAttribute = { handler: cb, key: parameterKey, controller: target, action: propertyKey, data: data, isQueryParam: isQueryParam, paramIndex: parameterIndex }; if (!utility_1.DataUtility.isUndefinedOrNull(meta)) { meta.push(parseAttribute); // rewrite metadata by adding it to existing array lib_1.Reflector.defineMetadata(constants_1.Attribute.parse, meta, target.constructor.prototype, propertyKey); } else { // must be set as array for first save lib_1.Reflector.defineMetadata(constants_1.Attribute.parse, [parseAttribute], target.constructor.prototype, propertyKey); } }; }; AttributeMetadata.sendsResponse = () => { return (target, propertyKey) => { lib_1.Reflector.defineMetadata(constants_1.Attribute.sendsResponse, 'sendsResponse', target.constructor.prototype, propertyKey); }; }; AttributeMetadata.asyncAttr = () => { return (target, propertyKey) => { lib_1.Reflector.defineMetadata(constants_1.Attribute.asyncAttr, 'asyncAttr', target.constructor.prototype, propertyKey); }; }; /** * @Throws InvalidRouteException */ AttributeMetadata.httpGet = (route) => { return (target, propertyKey) => { AttributeMetadata .defineHttpVerbMetadata(route, constants_1.Attribute.httpGet, target, propertyKey); }; }; /** * @Throws InvalidRouteException */ AttributeMetadata.httpPost = (route) => { return (target, propertyKey) => { AttributeMetadata .defineHttpVerbMetadata(route, constants_1.Attribute.httpPost, target, propertyKey); }; }; /** * @Throws InvalidRouteException */ AttributeMetadata.httpDelete = (route) => { return (target, propertyKey) => { AttributeMetadata .defineHttpVerbMetadata(route, constants_1.Attribute.httpDelete, target, propertyKey); }; }; /** * @Throws InvalidRouteException */ AttributeMetadata.httpPatch = (route) => { return (target, propertyKey) => { AttributeMetadata .defineHttpVerbMetadata(route, constants_1.Attribute.httpPatch, target, propertyKey); }; }; /** * @Throws InvalidRouteException */ AttributeMetadata.httpPut = (route) => { return (target, propertyKey) => { AttributeMetadata .defineHttpVerbMetadata(route, constants_1.Attribute.httpPut, target, propertyKey); }; }; /** * @Throws InvalidRouteException */ AttributeMetadata.httpHead = (route) => { return (target, propertyKey) => { AttributeMetadata .defineHttpVerbMetadata(route, constants_1.Attribute.httpHead, target, propertyKey); }; }; /** * @Throws InvalidRouteException */ AttributeMetadata.httpAll = (route) => { return (target, propertyKey) => { AttributeMetadata .defineHttpVerbMetadata(route, constants_1.Attribute.httpAll, target, propertyKey); }; }; // handle null/undefined values, cleanse the data and pass onto inner methods /** * @Throws InvalidRouteException */ AttributeMetadata.controller = (prefix, attr) => { return (target, propertyKey) => { let attrs = utility_1.DataUtility.isUndefinedOrNull(attr) ? {} : attr; if (utility_1.DataUtility.isUndefinedOrNull(prefix)) { throw new exceptions_1.InvalidRouteException(prefix, undefined, undefined, target.constructor.name); } let val = { prefix: prefix, middlewares: utility_1.DataUtility.isUndefinedOrNull(attrs.middlewares) ? [] : attrs.middlewares, filters: utility_1.DataUtility.isUndefinedOrNull(attrs.filters) ? [] : attrs.filters, exceptions: utility_1.DataUtility.isUndefinedOrNull(attrs.exceptions) ? [] : attrs.exceptions, result: utility_1.DataUtility.isUndefinedOrNull(attrs.result) ? [] : attrs.result, use: utility_1.DataUtility.isUndefinedOrNull(attrs.use) ? [] : attrs.use }; lib_1.Reflector.defineMetadata(constants_1.Attribute.controller, val, target.prototype); }; }; exports.AttributeMetadata = AttributeMetadata; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0cmlidXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL21vZHVsZXMvbWV0YWRhdGEvYXR0cmlidXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsZ0NBQW1DO0FBQ25DLDRDQUF5QztBQUN6Qyx3Q0FBMEQ7QUFDMUQsc0RBRytCO0FBUS9CO0lBRUk7O09BRUc7SUFDSyxNQUFNLENBQUMsc0JBQXNCLENBQ2pDLEtBQXNCLEVBQ3RCLElBQVksRUFDWixNQUFXLEVBQ1gsUUFBZ0I7UUFFaEIsSUFBSSxxQkFBVyxDQUFDLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ3RDLE1BQU0sSUFBSSxrQ0FBcUIsQ0FBQyxLQUFLLEVBQUUsSUFBSSxFQUN2QyxRQUFRLEVBQUUsTUFBTSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUMxQztRQUNELGVBQVMsQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUN6QixLQUFLLEVBQUUsTUFBTSxDQUFDLFdBQVcsQ0FBQyxTQUFTLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDdkQsQ0FBQzs7QUFFRCx5RUFBeUU7QUFDekU7O0dBRUc7QUFDSSx1QkFBSyxHQUFHLENBQUMsRUFBaUIsRUFBRSxJQUFTLEVBQUUsWUFBcUIsRUFDSSxFQUFFO0lBRXJFLE9BQU8sQ0FBQyxNQUFXLEVBQUUsV0FBbUIsRUFBRSxjQUFzQixFQUFRLEVBQUU7UUFFdEUsSUFBSSxJQUFJLEdBQUcseUJBQWUsQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7UUFDOUQsSUFBSSxZQUFZLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBRXhDLElBQUksQ0FBQyxxQkFBVyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsRUFBRTtZQUM3QixNQUFNLElBQUkscUNBQXdCLENBQUMsRUFBRSxFQUNqQyxlQUFlLE1BQU0sQ0FBQyxXQUFXLENBQUMsSUFBSSxhQUFhLFdBQVcsVUFBVSxZQUFZLEVBQUUsQ0FBQyxDQUFDO1NBQy9GO1FBRUQsNkJBQTZCO1FBQzdCLElBQUksSUFBSSxHQUFzQixlQUFTLENBQUMsV0FBVyxDQUFDLHFCQUFTLENBQUMsS0FBSyxFQUMvRCxNQUFNLENBQUMsV0FBVyxDQUFDLFNBQVMsRUFBRSxXQUFXLENBQUMsQ0FBQztRQUUvQyxNQUFNLGNBQWMsR0FBb0I7WUFDcEMsT0FBTyxFQUFFLEVBQUU7WUFDWCxHQUFHLEVBQUUsWUFBWTtZQUNqQixVQUFVLEVBQUUsTUFBTTtZQUNsQixNQUFNLEVBQUUsV0FBVztZQUNuQixJQUFJLEVBQUUsSUFBSTtZQUNWLFlBQVksRUFBRSxZQUFZO1lBQzFCLFVBQVUsRUFBRSxjQUFjO1NBQzdCLENBQUM7UUFFRixJQUFJLENBQUMscUJBQVcsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUN0QyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1lBRTFCLGtEQUFrRDtZQUNsRCxlQUFTLENBQUMsY0FBYyxDQUFDLHFCQUFTLENBQUMsS0FBSyxFQUFFLElBQUksRUFDMUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxTQUFTLEVBQUUsV0FBVyxDQUFDLENBQUM7U0FDbEQ7YUFBTTtZQUNILHNDQUFzQztZQUN0QyxlQUFTLENBQUMsY0FBYyxDQUFDLHFCQUFTLENBQUMsS0FBSyxFQUFFLENBQUMsY0FBYyxDQUFDLEVBQ3RELE1BQU0sQ0FBQyxXQUFXLENBQUMsU0FBUyxFQUFFLFdBQVcsQ0FBQyxDQUFDO1NBQ2xEO0lBQ0wsQ0FBQyxDQUFDO0FBQ04sQ0FBQyxDQUFBO0FBRU0sK0JBQWEsR0FBRyxHQUErQyxFQUFFO0lBQ3BFLE9BQU8sQ0FBQyxNQUFXLEVBQUUsV0FBbUIsRUFBUSxFQUFFO1FBQzlDLGVBQVMsQ0FBQyxjQUFjLENBQUMscUJBQVMsQ0FBQyxhQUFhLEVBQzVDLGVBQWUsRUFBRSxNQUFNLENBQUMsV0FBVyxDQUFDLFNBQVMsRUFBRSxXQUFXLENBQUMsQ0FBQztJQUNwRSxDQUFDLENBQUM7QUFDTixDQUFDLENBQUE7QUFFTSwyQkFBUyxHQUFHLEdBQStDLEVBQUU7SUFDaEUsT0FBTyxDQUFDLE1BQVcsRUFBRSxXQUFtQixFQUFRLEVBQUU7UUFDOUMsZUFBUyxDQUFDLGNBQWMsQ0FBQyxxQkFBUyxDQUFDLFNBQVMsRUFDeEMsV0FBVyxFQUFFLE1BQU0sQ0FBQyxXQUFXLENBQUMsU0FBUyxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQ2hFLENBQUMsQ0FBQztBQUNOLENBQUMsQ0FBQTtBQUVEOztHQUVHO0FBQ0kseUJBQU8sR0FBRyxDQUFDLEtBQXNCLEVBQThDLEVBQUU7SUFDcEYsT0FBTyxDQUFDLE1BQVcsRUFBRSxXQUFtQixFQUFRLEVBQUU7UUFDOUMsaUJBQWlCO2FBQ1osc0JBQXNCLENBQUMsS0FBSyxFQUFFLHFCQUFTLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxXQUFXLENBQUMsQ0FBQztJQUMvRSxDQUFDLENBQUM7QUFDTixDQUFDLENBQUE7QUFFRDs7R0FFRztBQUNJLDBCQUFRLEdBQUcsQ0FBQyxLQUFzQixFQUE4QyxFQUFFO0lBQ3JGLE9BQU8sQ0FBQyxNQUFXLEVBQUUsV0FBbUIsRUFBUSxFQUFFO1FBQzlDLGlCQUFpQjthQUNaLHNCQUFzQixDQUFDLEtBQUssRUFBRSxxQkFBUyxDQUFDLFFBQVEsRUFBRSxNQUFNLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDaEYsQ0FBQyxDQUFDO0FBQ04sQ0FBQyxDQUFBO0FBRUQ7O0dBRUc7QUFDSSw0QkFBVSxHQUFHLENBQUMsS0FBc0IsRUFBOEMsRUFBRTtJQUN2RixPQUFPLENBQUMsTUFBVyxFQUFFLFdBQW1CLEVBQVEsRUFBRTtRQUM5QyxpQkFBaUI7YUFDWixzQkFBc0IsQ0FBQyxLQUFLLEVBQUUscUJBQVMsQ0FBQyxVQUFVLEVBQUUsTUFBTSxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQ2xGLENBQUMsQ0FBQztBQUNOLENBQUMsQ0FBQTtBQUVEOztHQUVHO0FBQ0ksMkJBQVMsR0FBRyxDQUFDLEtBQXNCLEVBQThDLEVBQUU7SUFDdEYsT0FBTyxDQUFDLE1BQVcsRUFBRSxXQUFtQixFQUFRLEVBQUU7UUFDOUMsaUJBQWlCO2FBQ1osc0JBQXNCLENBQUMsS0FBSyxFQUFFLHFCQUFTLENBQUMsU0FBUyxFQUFFLE1BQU0sRUFBRSxXQUFXLENBQUMsQ0FBQztJQUNqRixDQUFDLENBQUM7QUFDTixDQUFDLENBQUE7QUFFRDs7R0FFRztBQUNJLHlCQUFPLEdBQUcsQ0FBQyxLQUFzQixFQUE4QyxFQUFFO0lBQ3BGLE9BQU8sQ0FBQyxNQUFXLEVBQUUsV0FBbUIsRUFBUSxFQUFFO1FBQzlDLGlCQUFpQjthQUNaLHNCQUFzQixDQUFDLEtBQUssRUFBRSxxQkFBUyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDL0UsQ0FBQyxDQUFDO0FBQ04sQ0FBQyxDQUFBO0FBRUQ7O0dBRUc7QUFDSSwwQkFBUSxHQUFHLENBQUMsS0FBc0IsRUFBOEMsRUFBRTtJQUNyRixPQUFPLENBQUMsTUFBVyxFQUFFLFdBQW1CLEVBQVEsRUFBRTtRQUM5QyxpQkFBaUI7YUFDWixzQkFBc0IsQ0FBQyxLQUFLLEVBQUUscUJBQVMsQ0FBQyxRQUFRLEVBQUUsTUFBTSxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQ2hGLENBQUMsQ0FBQztBQUNOLENBQUMsQ0FBQTtBQUVEOztHQUVHO0FBQ0kseUJBQU8sR0FBRyxDQUFDLEtBQXNCLEVBQThDLEVBQUU7SUFDcEYsT0FBTyxDQUFDLE1BQVcsRUFBRSxXQUFtQixFQUFRLEVBQUU7UUFDOUMsaUJBQWlCO2FBQ1osc0JBQXNCLENBQUMsS0FBSyxFQUFFLHFCQUFTLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxXQUFXLENBQUMsQ0FBQztJQUMvRSxDQUFDLENBQUM7QUFDTixDQUFDLENBQUE7QUFFRCw2RUFBNkU7QUFDN0U7O0dBRUc7QUFDSSw0QkFBVSxHQUFHLENBQUMsTUFBYyxFQUFFLElBQTJCLEVBQ2pCLEVBQUU7SUFDN0MsT0FBTyxDQUFDLE1BQVcsRUFBRSxXQUFtQixFQUFRLEVBQUU7UUFDOUMsSUFBSSxLQUFLLEdBQUcscUJBQVcsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFFNUQsSUFBSSxxQkFBVyxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ3ZDLE1BQU0sSUFBSSxrQ0FBcUIsQ0FBQyxNQUFNLEVBQUUsU0FBUyxFQUM3QyxTQUFTLEVBQUUsTUFBTSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUMzQztRQUVELElBQUksR0FBRyxHQUFpQztZQUNwQyxNQUFNLEVBQUUsTUFBTTtZQUNkLFdBQVcsRUFBRSxxQkFBVyxDQUFDLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsV0FBVztZQUN0RixPQUFPLEVBQUUscUJBQVcsQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU87WUFDMUUsVUFBVSxFQUFFLHFCQUFXLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxVQUFVO1lBQ25GLE1BQU0sRUFBRSxxQkFBVyxDQUFDLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTTtZQUN2RSxHQUFHLEVBQUUscUJBQVcsQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUc7U0FDakUsQ0FBQztRQUNGLGVBQVMsQ0FBQyxjQUFjLENBQUMscUJBQVMsQ0FBQyxVQUFVLEVBQUUsR0FBRyxFQUFFLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUMxRSxDQUFDLENBQUM7QUFDTixDQUFDLENBQUE7QUE1S0wsOENBNktDIn0=