UNPKG

openapi-metadata

Version:

Auto-Generate OpenAPI specifications from Typescript decorators

37 lines (34 loc) 1.08 kB
import { SymbolKeysNotSupportedError } from '../errors/symbol-keys-not-supported.mjs'; import { PropertyMetadataStorage } from '../metadata/property.mjs'; import { findType } from '../utils/metadata.mjs'; function ApiProperty(options) { return (prototype, propertyKey, descriptor) => { const isMethod = Boolean(descriptor?.value); if (typeof propertyKey === "symbol") { throw new SymbolKeysNotSupportedError(); } const metadata = { name: options?.name ?? propertyKey, required: true, ...options }; if (!metadata.type && !metadata.schema && !metadata.enum) { metadata.type = (context) => findType({ metadataKey: isMethod ? "design:returntype" : "design:type", prototype, propertyKey }); } PropertyMetadataStorage.mergeMetadata(prototype, { [metadata.name]: metadata }); }; } function ApiPropertyOptional(options) { return ApiProperty({ ...options, required: false }); } export { ApiProperty, ApiPropertyOptional }; //# sourceMappingURL=api-property.mjs.map