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