UNPKG

nestjs-swagger-dto

Version:
38 lines 1.32 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.IsEnum = void 0; const swagger_1 = require("@nestjs/swagger"); const class_validator_1 = require("class-validator"); const core_1 = require("../core"); /** * Usage: * ```ts * enum OneOrTwo { One = 1, Two = 2, } * IsEnum({ enum: { OneOrTwo } }) * * IsEnum({ enum: { OneOrTwo: [1, 2] } }) * ``` */ const IsEnum = ({ enum: enumOptions, ...base }) => { const { enumValues, enumName } = getEnumNameAndValues(enumOptions); let apiPropertyOptions = { type: typeof enumValues[0], enum: enumValues, enumName, }; // workaround for Nest's @Query handling if (typeof base.isArray === 'object' && base.isArray.force) { apiPropertyOptions = { type: 'array', items: { $ref: (0, swagger_1.getSchemaPath)(enumName) } }; } return (0, core_1.compose)(apiPropertyOptions, base, (0, class_validator_1.IsIn)(enumValues, { each: !!base.isArray })); }; exports.IsEnum = IsEnum; function getEnumNameAndValues(e) { const keys = Object.keys(e); if (keys.length !== 1) { throw new Error('EnumOptions object should have exactly one key'); } const [enumName] = keys; return { enumName, enumValues: Object.values(e[enumName]) }; } //# sourceMappingURL=is-enum.js.map