UNPKG

@joktec/mongo

Version:

JokTec - Mongo Service

31 lines 1.41 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ArrayProps = ArrayProps; const utils_1 = require("@joktec/utils"); const lodash_1 = require("lodash"); function ArrayProps(opts, swagger) { const decorators = []; const isArrayType = (0, utils_1.toInt)(opts?.dim, 1) > 1; decorators.push((0, utils_1.IsArray)({ each: isArrayType })); if (!(0, lodash_1.isNil)(opts.minSize)) { const minSize = (0, lodash_1.isArray)(opts.minSize) ? opts.minSize : [opts.minSize, undefined]; const validatorOption = { each: isArrayType }; if (minSize[1]) validatorOption.message = minSize[1]; decorators.push((0, utils_1.ArrayMinSize)(minSize[0], validatorOption)); swagger.minItems = minSize[0]; } if (!(0, lodash_1.isNil)(opts.maxSize)) { const maxSize = (0, lodash_1.isArray)(opts.maxSize) ? opts.maxSize : [opts.maxSize, undefined]; const validatorOption = { each: isArrayType }; if (maxSize[1]) validatorOption.message = maxSize[1]; decorators.push((0, utils_1.ArrayMaxSize)(maxSize[0], validatorOption)); swagger.maxItems = maxSize[0]; } if (opts.uniqItems) { decorators.push((0, utils_1.Transform)(({ value }) => (!value ? [] : (0, lodash_1.uniq)((0, utils_1.toArray)(value))))); } return decorators; } //# sourceMappingURL=array.prop.js.map