UNPKG

openapi-metadata

Version:

Auto-Generate OpenAPI specifications from Typescript decorators

34 lines (30 loc) 1.75 kB
'use strict'; const operationBody = require('../metadata/operation-body.cjs'); const operationBody$1 = require('./operation-body.cjs'); const operationParameter = require('../metadata/operation-parameter.cjs'); const operationParameters = require('./operation-parameters.cjs'); const operationResponse = require('../metadata/operation-response.cjs'); const operationResponse$1 = require('./operation-response.cjs'); const operationSecurity = require('../metadata/operation-security.cjs'); async function generateOperation(context, controller, propertyKey, { path, methods, ...metadata }) { const operation = { ...metadata, responses: {} }; const target = controller.prototype; const body = operationBody.OperationBodyMetadataStorage.getMetadata(target, propertyKey); if (body) { operation.requestBody = await operationBody$1.generateOperationBody(context, body); } const parameters = operationParameter.OperationParameterMetadataStorage.getMetadata(target, propertyKey, true); operation.parameters = []; for (const parameter of parameters) { operation.parameters.push(await operationParameters.generateOperationParameters(context, parameter)); } const responses = operationResponse.OperationResponseMetadataStorage.getMetadata(target, propertyKey, true); for (const [status, response] of Object.entries(responses)) { operation.responses[status] = await operationResponse$1.generateOperationResponse(context, response); } const security = operationSecurity.OperationSecurityMetadataStorage.getMetadata(target, propertyKey, true); operation.security = Object.keys(security).length > 0 ? [security] : []; return operation; } exports.generateOperation = generateOperation; //# sourceMappingURL=operation.cjs.map