@foal/core
Version:
Full-featured Node.js framework, with no complexity
82 lines (81 loc) • 3.62 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.getApiComponents = void 0;
const utils_1 = require("../../routes/utils");
function getApiComponents(controllerClass, controller, propertyKey) {
const components = {};
const callbacks = (0, utils_1.getMetadata)('api:components:callbacks', controllerClass, propertyKey);
if (callbacks) {
components.callbacks = {};
for (const key in callbacks) {
const callback = callbacks[key];
components.callbacks[key] = typeof callback === 'function' ? callback(controller) : callback;
}
}
const examples = (0, utils_1.getMetadata)('api:components:examples', controllerClass, propertyKey);
if (examples) {
components.examples = {};
for (const key in examples) {
const example = examples[key];
components.examples[key] = typeof example === 'function' ? example(controller) : example;
}
}
const headers = (0, utils_1.getMetadata)('api:components:headers', controllerClass, propertyKey);
if (headers) {
components.headers = {};
for (const key in headers) {
const header = headers[key];
components.headers[key] = typeof header === 'function' ? header(controller) : header;
}
}
const links = (0, utils_1.getMetadata)('api:components:links', controllerClass, propertyKey);
if (links) {
components.links = {};
for (const key in links) {
const link = links[key];
components.links[key] = typeof link === 'function' ? link(controller) : link;
}
}
const parameters = (0, utils_1.getMetadata)('api:components:parameters', controllerClass, propertyKey);
if (parameters) {
components.parameters = {};
for (const key in parameters) {
const parameter = parameters[key];
components.parameters[key] = typeof parameter === 'function' ? parameter(controller) : parameter;
}
}
const requestBodies = (0, utils_1.getMetadata)('api:components:requestBodies', controllerClass, propertyKey);
if (requestBodies) {
components.requestBodies = {};
for (const key in requestBodies) {
const requestBody = requestBodies[key];
components.requestBodies[key] = typeof requestBody === 'function' ? requestBody(controller) : requestBody;
}
}
const responses = (0, utils_1.getMetadata)('api:components:responses', controllerClass, propertyKey);
if (responses) {
components.responses = {};
for (const key in responses) {
const response = responses[key];
components.responses[key] = typeof response === 'function' ? response(controller) : response;
}
}
const schemas = (0, utils_1.getMetadata)('api:components:schemas', controllerClass, propertyKey);
if (schemas) {
components.schemas = {};
for (const key in schemas) {
const schema = schemas[key];
components.schemas[key] = typeof schema === 'function' ? schema(controller) : schema;
}
}
const securitySchemes = (0, utils_1.getMetadata)('api:components:securitySchemes', controllerClass, propertyKey);
if (securitySchemes) {
components.securitySchemes = {};
for (const key in securitySchemes) {
const scheme = securitySchemes[key];
components.securitySchemes[key] = typeof scheme === 'function' ? scheme(controller) : scheme;
}
}
return components;
}
exports.getApiComponents = getApiComponents;