UNPKG

@nestjs/swagger

Version:

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

36 lines (35 loc) 1.26 kB
import { clone, omit } from 'es-toolkit/compat'; import { addEnumArraySchema, addEnumSchema, isEnumArray, isEnumDefined } from '../utils/enum.utils.js'; import { createParamDecorator, getTypeIsArrayTuple } from './helpers.js'; const defaultQueryOptions = { name: '', required: true }; export function ApiQuery(options) { const apiQueryMetadata = options; const [type, isArray] = getTypeIsArrayTuple(apiQueryMetadata.type, apiQueryMetadata.isArray); const param = { name: 'name' in options ? options.name : defaultQueryOptions.name, in: 'query', ...omit(options, ['enum', 'extensions']), type }; if (isEnumArray(options)) { addEnumArraySchema(param, options); } else if (isEnumDefined(options)) { addEnumSchema(param, options); } if (isArray) { param.isArray = isArray; } const extensions = options.extensions; if (extensions && typeof extensions === 'object') { const cloned = clone(extensions); for (const [key, value] of Object.entries(cloned)) { const extKey = key.startsWith('x-') ? key : `x-${key}`; param[extKey] = value; } } return createParamDecorator(param, defaultQueryOptions); }