UNPKG

@foal/core

Version:

Full-featured Node.js framework, with no complexity

82 lines (81 loc) 4.56 kB
"use strict"; 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; }