@foal/core
Version:
Full-featured Node.js framework, with no complexity
82 lines (81 loc) • 4.56 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.getApiCompleteOperation = getApiCompleteOperation;
const get_api_callbacks_1 = require("./get-api-callbacks");
const get_api_deprecated_1 = require("./get-api-deprecated");
const get_api_external_docs_1 = require("./get-api-external-docs");
const get_api_operation_1 = require("./get-api-operation");
const get_api_operation_description_1 = require("./get-api-operation-description");
const get_api_operation_id_1 = require("./get-api-operation-id");
const get_api_operation_summary_1 = require("./get-api-operation-summary");
const get_api_parameters_1 = require("./get-api-parameters");
const get_api_request_body_1 = require("./get-api-request-body");
const get_api_responses_1 = require("./get-api-responses");
const get_api_security_1 = require("./get-api-security");
const get_api_servers_1 = require("./get-api-servers");
const get_api_used_tags_1 = require("./get-api-used-tags");
function getApiCompleteOperation(controllerClass, controller, propertyKey) {
const operation = (0, get_api_operation_1.getApiOperation)(controllerClass, propertyKey);
const completeOperation = (typeof operation === 'function' ? operation(controller) : operation) || {
responses: {},
};
const description = (0, get_api_operation_description_1.getApiOperationDescription)(controllerClass, propertyKey);
if (description !== undefined) {
completeOperation.description = typeof description === 'function' ? description(controller) : description;
}
const operationId = (0, get_api_operation_id_1.getApiOperationId)(controllerClass, propertyKey);
if (operationId !== undefined) {
completeOperation.operationId = typeof operationId === 'function' ? operationId(controller) : operationId;
}
const summary = (0, get_api_operation_summary_1.getApiOperationSummary)(controllerClass, propertyKey);
if (summary !== undefined) {
completeOperation.summary = typeof summary === 'function' ? summary(controller) : summary;
}
const tags = (0, get_api_used_tags_1.getApiUsedTags)(controllerClass, propertyKey);
if (tags) {
completeOperation.tags = tags.map(tag => typeof tag === 'function' ? tag(controller) : tag);
}
const externalDocs = (0, get_api_external_docs_1.getApiExternalDocs)(controllerClass, propertyKey);
if (externalDocs) {
completeOperation.externalDocs = typeof externalDocs === 'function' ? externalDocs(controller) : externalDocs;
}
const parameters = (0, get_api_parameters_1.getApiParameters)(controllerClass, propertyKey);
if (parameters) {
completeOperation.parameters = parameters.map(param => typeof param === 'function' ? param(controller) : param);
}
const requestBody = (0, get_api_request_body_1.getApiRequestBody)(controllerClass, propertyKey);
if (requestBody) {
completeOperation.requestBody = typeof requestBody === 'function' ? requestBody(controller) : requestBody;
}
const responses = (0, get_api_responses_1.getApiResponses)(controllerClass, propertyKey);
if (responses) {
completeOperation.responses = {};
for (const key in responses) {
const response = responses[key];
completeOperation.responses[key] = typeof response === 'function' ? response(controller) : response;
}
}
const callbacks = (0, get_api_callbacks_1.getApiCallbacks)(controllerClass, propertyKey);
if (callbacks) {
completeOperation.callbacks = {};
for (const key in callbacks) {
const callback = callbacks[key];
completeOperation.callbacks[key] = typeof callback === 'function' ? callback(controller) : callback;
}
}
const deprecated = (0, get_api_deprecated_1.getApiDeprecated)(controllerClass, propertyKey);
if (deprecated !== undefined) {
completeOperation.deprecated = typeof deprecated === 'function' ? deprecated(controller) : deprecated;
}
const security = (0, get_api_security_1.getApiSecurity)(controllerClass, propertyKey);
if (security) {
completeOperation.security = security.map(requirement => {
return typeof requirement === 'function' ? requirement(controller) : requirement;
});
}
const servers = (0, get_api_servers_1.getApiServers)(controllerClass, propertyKey);
if (servers) {
completeOperation.servers = servers.map(server => typeof server === 'function' ? server(controller) : server);
}
return completeOperation;
}