openapi-metadata
Version:
Auto-Generate OpenAPI specifications from Typescript decorators
145 lines (131 loc) • 4.09 kB
JavaScript
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 };