UNPKG

@nestjs/swagger

Version:

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

36 lines (35 loc) 1.46 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const constants_1 = require("../constants"); const enum_utils_1 = require("../utils/enum.utils"); const helpers_1 = require("./helpers"); const isEnumArray = (obj) => obj.isArray && !!obj.enum; function ApiProperty(options = {}) { const [type, isArray] = helpers_1.getTypeIsArrayTuple(options.type, options.isArray); options = Object.assign(Object.assign({}, options), { type, isArray }); if (isEnumArray(options)) { options.type = 'array'; const enumValues = enum_utils_1.getEnumValues(options.enum); options.items = { type: enum_utils_1.getEnumType(enumValues), enum: enumValues }; delete options.enum; } else if (options.enum) { const enumValues = enum_utils_1.getEnumValues(options.enum); options.enum = enumValues; options.type = enum_utils_1.getEnumType(enumValues); } return helpers_1.createPropertyDecorator(constants_1.DECORATORS.API_MODEL_PROPERTIES, options); } exports.ApiProperty = ApiProperty; function ApiPropertyOptional(options = {}) { return ApiProperty(Object.assign(Object.assign({}, options), { required: false })); } exports.ApiPropertyOptional = ApiPropertyOptional; function ApiResponseProperty(options = {}) { return ApiProperty(Object.assign({ readOnly: true }, options)); } exports.ApiResponseProperty = ApiResponseProperty;