openapi-metadata
Version:
Auto-Generate OpenAPI specifications from Typescript decorators
164 lines (149 loc) • 4.43 kB
JavaScript
;
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;