UNPKG

openapi-metadata

Version:

Auto-Generate OpenAPI specifications from Typescript decorators

145 lines (131 loc) 4.09 kB
import { O as OperationBodyMetadataStorage, a as OperationParameterMetadataStorage, e as ExcludeMetadataStorage, E as ExtraModelsMetadataStorage, d as OperationMetadataStorage, P as PropertyMetadataStorage, b as OperationResponseMetadataStorage, c as OperationSecurityMetadataStorage } from '../shared/openapi-metadata.Dc_PLA6h.mjs'; import { S as SymbolKeysNotSupportedError } from '../shared/openapi-metadata.C_T87G6t.mjs'; import { f as findType } from '../shared/openapi-metadata.C_V3A0DP.mjs'; import 'deepmerge'; import '../shared/openapi-metadata.BKn6E22y.mjs'; function ApiBody(options) { return (target, propertyKey) => { OperationBodyMetadataStorage.defineMetadata( target, { mediaType: "application/json", ...options }, propertyKey ); }; } function ApiCookie(options) { return (target, propertyKey) => { OperationParameterMetadataStorage.mergeMetadata(target, [{ in: "cookie", ...options }], propertyKey); }; } function ApiExcludeController() { return (target) => { ExcludeMetadataStorage.defineMetadata(target, true); }; } function ApiExcludeOperation() { return (target, propertyKey) => { ExcludeMetadataStorage.defineMetadata(target, true, propertyKey); }; } function ApiExtraModels(...models) { return (target) => { ExtraModelsMetadataStorage.mergeMetadata(target, models); }; } function ApiHeader(options) { return (target, propertyKey) => { OperationParameterMetadataStorage.mergeMetadata(target, [{ in: "header", ...options }], propertyKey); }; } function ApiOperation(options) { return (target, propertyKey) => { OperationMetadataStorage.defineMetadata(target, options, propertyKey); }; } function ApiParam(options) { return function(target, propertyKey) { OperationParameterMetadataStorage.mergeMetadata(target, [{ in: "path", ...options }], propertyKey); }; } 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 }); } function ApiQuery(options) { return function(target, propertyKey) { OperationParameterMetadataStorage.mergeMetadata(target, [{ in: "query", ...options }], propertyKey); }; } function ApiResponse(options) { return function(target, propertyKey) { const metadata = { status: "default", mediaType: "application/json", ...options }; OperationResponseMetadataStorage.mergeMetadata( target, { [metadata.status.toString()]: metadata }, propertyKey ); }; } function ApiSecurity(name, ...scopes) { return (target, propertyKey) => { OperationSecurityMetadataStorage.mergeMetadata( target, { [name]: scopes }, propertyKey ); }; } function ApiBasicAuth() { return ApiSecurity("basic"); } function ApiBearerAuth() { return ApiSecurity("bearer"); } function ApiCookieAuth() { return ApiSecurity("cookie"); } function ApiOauth2(...scopes) { return ApiSecurity("oauth2", ...scopes); } function ApiTags(...tags) { return (target, propertyKey) => { OperationMetadataStorage.mergeMetadata(target, { tags }, propertyKey); }; } export { ApiBasicAuth, ApiBearerAuth, ApiBody, ApiCookie, ApiCookieAuth, ApiExcludeController, ApiExcludeOperation, ApiExtraModels, ApiHeader, ApiOauth2, ApiOperation, ApiParam, ApiProperty, ApiPropertyOptional, ApiQuery, ApiResponse, ApiSecurity, ApiTags };