UNPKG

openapi-metadata

Version:

Auto-Generate OpenAPI specifications from Typescript decorators

164 lines (149 loc) 4.43 kB
'use strict'; const extraModels = require('../shared/openapi-metadata.CegLGNUQ.cjs'); const symbolKeysNotSupported = require('../shared/openapi-metadata.CkXXOeXr.cjs'); const metadata = require('../shared/openapi-metadata.xCtn3sZr.cjs'); require('deepmerge'); require('../shared/openapi-metadata.B1TUxh8W.cjs'); function ApiBody(options) { return (target, propertyKey) => { extraModels.OperationBodyMetadataStorage.defineMetadata( target, { mediaType: "application/json", ...options }, propertyKey ); }; } function ApiCookie(options) { return (target, propertyKey) => { extraModels.OperationParameterMetadataStorage.mergeMetadata(target, [{ in: "cookie", ...options }], propertyKey); }; } function ApiExcludeController() { return (target) => { extraModels.ExcludeMetadataStorage.defineMetadata(target, true); }; } function ApiExcludeOperation() { return (target, propertyKey) => { extraModels.ExcludeMetadataStorage.defineMetadata(target, true, propertyKey); }; } function ApiExtraModels(...models) { return (target) => { extraModels.ExtraModelsMetadataStorage.mergeMetadata(target, models); }; } function ApiHeader(options) { return (target, propertyKey) => { extraModels.OperationParameterMetadataStorage.mergeMetadata(target, [{ in: "header", ...options }], propertyKey); }; } function ApiOperation(options) { return (target, propertyKey) => { extraModels.OperationMetadataStorage.defineMetadata(target, options, propertyKey); }; } function ApiParam(options) { return function(target, propertyKey) { extraModels.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 symbolKeysNotSupported.SymbolKeysNotSupportedError(); } const metadata$1 = { name: options?.name ?? propertyKey, required: true, ...options }; if (!metadata$1.type && !metadata$1.schema && !metadata$1.enum) { metadata$1.type = (context) => metadata.findType({ metadataKey: isMethod ? "design:returntype" : "design:type", prototype, propertyKey }); } extraModels.PropertyMetadataStorage.mergeMetadata(prototype, { [metadata$1.name]: metadata$1 }); }; } function ApiPropertyOptional(options) { return ApiProperty({ ...options, required: false }); } function ApiQuery(options) { return function(target, propertyKey) { extraModels.OperationParameterMetadataStorage.mergeMetadata(target, [{ in: "query", ...options }], propertyKey); }; } function ApiResponse(options) { return function(target, propertyKey) { const metadata = { status: "default", mediaType: "application/json", ...options }; extraModels.OperationResponseMetadataStorage.mergeMetadata( target, { [metadata.status.toString()]: metadata }, propertyKey ); }; } function ApiSecurity(name, ...scopes) { return (target, propertyKey) => { extraModels.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) => { extraModels.OperationMetadataStorage.mergeMetadata(target, { tags }, propertyKey); }; } exports.ApiBasicAuth = ApiBasicAuth; exports.ApiBearerAuth = ApiBearerAuth; exports.ApiBody = ApiBody; exports.ApiCookie = ApiCookie; exports.ApiCookieAuth = ApiCookieAuth; exports.ApiExcludeController = ApiExcludeController; exports.ApiExcludeOperation = ApiExcludeOperation; exports.ApiExtraModels = ApiExtraModels; exports.ApiHeader = ApiHeader; exports.ApiOauth2 = ApiOauth2; exports.ApiOperation = ApiOperation; exports.ApiParam = ApiParam; exports.ApiProperty = ApiProperty; exports.ApiPropertyOptional = ApiPropertyOptional; exports.ApiQuery = ApiQuery; exports.ApiResponse = ApiResponse; exports.ApiSecurity = ApiSecurity; exports.ApiTags = ApiTags;