UNPKG

openapi-metadata

Version:

Auto-Generate OpenAPI specifications from Typescript decorators

32 lines (29 loc) 1.67 kB
import { OperationBodyMetadataStorage } from '../metadata/operation-body.mjs'; import { generateOperationBody } from './operation-body.mjs'; import { OperationParameterMetadataStorage } from '../metadata/operation-parameter.mjs'; import { generateOperationParameters } from './operation-parameters.mjs'; import { OperationResponseMetadataStorage } from '../metadata/operation-response.mjs'; import { generateOperationResponse } from './operation-response.mjs'; import { OperationSecurityMetadataStorage } from '../metadata/operation-security.mjs'; async function generateOperation(context, controller, propertyKey, { path, methods, ...metadata }) { const operation = { ...metadata, responses: {} }; const target = controller.prototype; const body = OperationBodyMetadataStorage.getMetadata(target, propertyKey); if (body) { operation.requestBody = await generateOperationBody(context, body); } const parameters = OperationParameterMetadataStorage.getMetadata(target, propertyKey, true); operation.parameters = []; for (const parameter of parameters) { operation.parameters.push(await generateOperationParameters(context, parameter)); } const responses = OperationResponseMetadataStorage.getMetadata(target, propertyKey, true); for (const [status, response] of Object.entries(responses)) { operation.responses[status] = await generateOperationResponse(context, response); } const security = OperationSecurityMetadataStorage.getMetadata(target, propertyKey, true); operation.security = Object.keys(security).length > 0 ? [security] : []; return operation; } export { generateOperation }; //# sourceMappingURL=operation.mjs.map