UNPKG

@nestjs/swagger

Version:

Nest - modern, fast, powerful node.js web framework (@swagger)

62 lines (61 loc) 2.62 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const lodash_1 = require("lodash"); const constants_1 = require("../constants"); function createMethodDecorator(metakey, metadata) { return (target, key, descriptor) => { Reflect.defineMetadata(metakey, metadata, descriptor.value); return descriptor; }; } exports.createMethodDecorator = createMethodDecorator; function createClassDecorator(metakey, metadata = []) { return target => { const prevValue = Reflect.getMetadata(metakey, target) || []; Reflect.defineMetadata(metakey, [...prevValue, ...metadata], target); return target; }; } exports.createClassDecorator = createClassDecorator; function createPropertyDecorator(metakey, metadata) { return (target, propertyKey) => { const properties = Reflect.getMetadata(constants_1.DECORATORS.API_MODEL_PROPERTIES_ARRAY, target) || []; Reflect.defineMetadata(constants_1.DECORATORS.API_MODEL_PROPERTIES_ARRAY, [...properties, `:${propertyKey}`], target); Reflect.defineMetadata(metakey, Object.assign({ type: Reflect.getMetadata('design:type', target, propertyKey) }, lodash_1.pickBy(metadata, lodash_1.negate(lodash_1.isUndefined))), target, propertyKey); }; } exports.createPropertyDecorator = createPropertyDecorator; function createMixedDecorator(metakey, metadata) { return (target, key, descriptor) => { if (descriptor) { Reflect.defineMetadata(metakey, metadata, descriptor.value); return descriptor; } Reflect.defineMetadata(metakey, metadata, target); return target; }; } exports.createMixedDecorator = createMixedDecorator; function createParamDecorator(metadata, initial) { return (target, key, descriptor) => { const parameters = Reflect.getMetadata(constants_1.DECORATORS.API_PARAMETERS, descriptor.value) || []; Reflect.defineMetadata(constants_1.DECORATORS.API_PARAMETERS, [ ...parameters, Object.assign(Object.assign({}, initial), lodash_1.pickBy(metadata, lodash_1.negate(lodash_1.isUndefined))) ], descriptor.value); return descriptor; }; } exports.createParamDecorator = createParamDecorator; function getTypeIsArrayTuple(input, isArrayFlag) { if (!input) { return [input, isArrayFlag]; } if (isArrayFlag) { return [input, isArrayFlag]; } const isInputArray = lodash_1.isArray(input); const type = isInputArray ? input[0] : input; return [type, isInputArray]; } exports.getTypeIsArrayTuple = getTypeIsArrayTuple;