UNPKG

@tsclean/core

Version:

Plugin for API Rest Full development, based on Clean Architecture, IoC and Dependency Injection.

23 lines 5.45 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.createParamDecorator = createParamDecorator; const uuid_1 = require("uuid"); const helpers_1 = require("../helpers"); const utils_1 = require("../utils"); function createParamDecorator(factory, enhancers = []) { const paramType = (0, uuid_1.v4)(); return (data, ...pipes) => (target, key, index) => { const args = Reflect.getMetadata(helpers_1.ROUTE_ARGS_METADATA, target.constructor, key) || {}; const isHandler = (handler) => handler && (((0, utils_1.isFunction)(handler) && handler.prototype && (0, utils_1.isFunction)(handler.prototype.transform)) || (0, utils_1.isFunction)(handler.transform)); const hasParamData = (0, utils_1.isNil)(data) || !isHandler(data); const paramData = hasParamData ? data : undefined; const paramPipes = hasParamData ? pipes : [data, ...pipes]; Reflect.defineMetadata(helpers_1.ROUTE_ARGS_METADATA, (0, utils_1.assignCustomParameterMetadata)(args, paramType, index, factory, paramData, ...paramPipes), target.constructor, key); enhancers.forEach(fn => fn(target, key, index)); }; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLXJvdXRlLXBhcmFtLW1ldGFkYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2RlY29yYXRvcnMvY3JlYXRlLXJvdXRlLXBhcmFtLW1ldGFkYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBU0Esb0RBbUNDO0FBNUNELCtCQUFnQztBQUVoQyx3Q0FBK0M7QUFHL0Msb0NBQTBFO0FBSTFFLFNBQWdCLG9CQUFvQixDQUNoQyxPQUF3QyxFQUN4QyxZQUFzQyxFQUFFO0lBR3hDLE1BQU0sU0FBUyxHQUFHLElBQUEsU0FBSSxHQUFFLENBQUM7SUFDekIsT0FBTyxDQUFDLElBQUssRUFBRSxHQUFHLEtBQXdELEVBQXNCLEVBQUUsQ0FDOUYsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFO1FBQ25CLE1BQU0sSUFBSSxHQUFHLE9BQU8sQ0FBQyxXQUFXLENBQUMsNkJBQW1CLEVBQUUsTUFBTSxDQUFDLFdBQVcsRUFBRSxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUM7UUFFckYsTUFBTSxTQUFTLEdBQUcsQ0FBQyxPQUFZLEVBQUUsRUFBRSxDQUFDLE9BQU87WUFDdkMsQ0FBQyxDQUFDLElBQUEsa0JBQVUsRUFBQyxPQUFPLENBQUM7Z0JBQ2IsT0FBTyxDQUFDLFNBQVM7Z0JBQ2pCLElBQUEsa0JBQVUsRUFBQyxPQUFPLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDO2dCQUM1QyxJQUFBLGtCQUFVLEVBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7UUFFdkMsTUFBTSxZQUFZLEdBQUcsSUFBQSxhQUFLLEVBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDckQsTUFBTSxTQUFTLEdBQUcsWUFBWSxDQUFDLENBQUMsQ0FBRSxJQUFZLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztRQUMzRCxNQUFNLFVBQVUsR0FBRyxZQUFZLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsR0FBRyxLQUFLLENBQUMsQ0FBQztRQUUzRCxPQUFPLENBQUMsY0FBYyxDQUNsQiw2QkFBbUIsRUFDbkIsSUFBQSxxQ0FBNkIsRUFDekIsSUFBSSxFQUNKLFNBQVMsRUFDVCxLQUFLLEVBQ0wsT0FBTyxFQUNQLFNBQVMsRUFDVCxHQUFJLFVBQWlDLENBQ3hDLEVBQ0QsTUFBTSxDQUFDLFdBQVcsRUFDbEIsR0FBRyxDQUNOLENBQUM7UUFDRixTQUFTLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUNwRCxDQUFDLENBQUM7QUFDVixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHt2NCBhcyB1dWlkfSBmcm9tICd1dWlkJztcblxuaW1wb3J0IHtST1VURV9BUkdTX01FVEFEQVRBfSBmcm9tICcuLi9oZWxwZXJzJztcbmltcG9ydCB7Q3VzdG9tUGFyYW1GYWN0b3J5VHlwZX0gZnJvbSBcIi4uL3R5cGVzXCI7XG5pbXBvcnQge1R5cGUsIEhhbmRsZXJUcmFuc2Zvcm19IGZyb20gJy4uL2NvbnRyYWN0cyc7XG5pbXBvcnQge2Fzc2lnbkN1c3RvbVBhcmFtZXRlck1ldGFkYXRhLCBpc0Z1bmN0aW9uLCBpc05pbH0gZnJvbSAnLi4vdXRpbHMnO1xuXG5leHBvcnQgdHlwZSBQYXJhbURlY29yYXRvckVuaGFuY2VyID0gUGFyYW1ldGVyRGVjb3JhdG9yO1xuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlUGFyYW1EZWNvcmF0b3I8VCA9IGFueSwgSSA9IGFueSwgTyA9IGFueT4oXG4gICAgZmFjdG9yeTogQ3VzdG9tUGFyYW1GYWN0b3J5VHlwZTxULCBJLCBPPixcbiAgICBlbmhhbmNlcnM6IFBhcmFtRGVjb3JhdG9yRW5oYW5jZXJbXSA9IFtdKTogKFxuICAgIC4uLmRhdGFPclBpcGVzOiAoVHlwZTxIYW5kbGVyVHJhbnNmb3JtPiB8IEhhbmRsZXJUcmFuc2Zvcm0gfCBUKVtdXG4pID0+IFBhcmFtZXRlckRlY29yYXRvciB7XG4gICAgY29uc3QgcGFyYW1UeXBlID0gdXVpZCgpO1xuICAgIHJldHVybiAoZGF0YT8sIC4uLnBpcGVzOiAoVHlwZTxIYW5kbGVyVHJhbnNmb3JtPiB8IEhhbmRsZXJUcmFuc2Zvcm0gfCBUKVtdKTogUGFyYW1ldGVyRGVjb3JhdG9yID0+XG4gICAgICAgICh0YXJnZXQsIGtleSwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGFyZ3MgPSBSZWZsZWN0LmdldE1ldGFkYXRhKFJPVVRFX0FSR1NfTUVUQURBVEEsIHRhcmdldC5jb25zdHJ1Y3Rvciwga2V5KSB8fCB7fTtcblxuICAgICAgICAgICAgY29uc3QgaXNIYW5kbGVyID0gKGhhbmRsZXI6IGFueSkgPT4gaGFuZGxlciAmJlxuICAgICAgICAgICAgICAgICgoaXNGdW5jdGlvbihoYW5kbGVyKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlci5wcm90b3R5cGUgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzRnVuY3Rpb24oaGFuZGxlci5wcm90b3R5cGUudHJhbnNmb3JtKSkgfHxcbiAgICAgICAgICAgICAgICAgICAgaXNGdW5jdGlvbihoYW5kbGVyLnRyYW5zZm9ybSkpO1xuXG4gICAgICAgICAgICBjb25zdCBoYXNQYXJhbURhdGEgPSBpc05pbChkYXRhKSB8fCAhaXNIYW5kbGVyKGRhdGEpO1xuICAgICAgICAgICAgY29uc3QgcGFyYW1EYXRhID0gaGFzUGFyYW1EYXRhID8gKGRhdGEgYXMgYW55KSA6IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIGNvbnN0IHBhcmFtUGlwZXMgPSBoYXNQYXJhbURhdGEgPyBwaXBlcyA6IFtkYXRhLCAuLi5waXBlc107XG5cbiAgICAgICAgICAgIFJlZmxlY3QuZGVmaW5lTWV0YWRhdGEoXG4gICAgICAgICAgICAgICAgUk9VVEVfQVJHU19NRVRBREFUQSxcbiAgICAgICAgICAgICAgICBhc3NpZ25DdXN0b21QYXJhbWV0ZXJNZXRhZGF0YShcbiAgICAgICAgICAgICAgICAgICAgYXJncyxcbiAgICAgICAgICAgICAgICAgICAgcGFyYW1UeXBlLFxuICAgICAgICAgICAgICAgICAgICBpbmRleCxcbiAgICAgICAgICAgICAgICAgICAgZmFjdG9yeSxcbiAgICAgICAgICAgICAgICAgICAgcGFyYW1EYXRhLFxuICAgICAgICAgICAgICAgICAgICAuLi4ocGFyYW1QaXBlcyBhcyBIYW5kbGVyVHJhbnNmb3JtW10pLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgdGFyZ2V0LmNvbnN0cnVjdG9yLFxuICAgICAgICAgICAgICAgIGtleSxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBlbmhhbmNlcnMuZm9yRWFjaChmbiA9PiBmbih0YXJnZXQsIGtleSwgaW5kZXgpKTtcbiAgICAgICAgfTtcbn1cbiJdfQ==