mongodb-dynamic-api
Version:
Auto generated CRUD API for MongoDB using NestJS
116 lines • 4.5 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.enableDynamicAPISwagger = void 0;
const swagger_1 = require("@nestjs/swagger");
const fs = require("node:fs");
const version_json_1 = require("../version.json");
function buildExtraConfig(config, swaggerConfig) {
Object.keys(swaggerConfig).forEach((key) => {
const value = swaggerConfig[key];
switch (key) {
case 'termsOfService':
config.setTermsOfService(value);
break;
case 'contact':
config.setContact(value.name, value.url, value.email);
break;
case 'license':
config.setLicense(value.name, value.url);
break;
case 'servers':
value.forEach((server) => {
config.addServer(server.url, server.description, server.variables);
});
break;
case 'externalDocs':
config.setExternalDoc(value.description, value.url);
break;
case 'basePath':
config.setBasePath(value);
break;
case 'tags':
value.forEach((tag) => {
config.addTag(tag.name, tag.description, tag.externalDocs);
});
break;
case 'extensions':
Object.keys(value).forEach((extensionKey) => {
config.addExtension(extensionKey, value[extensionKey]);
});
break;
case 'security':
Object.keys(value).forEach((securityKey) => {
config.addSecurity(securityKey, value[securityKey]);
});
break;
case 'globalParameters':
config.addGlobalParameters(...value);
break;
case 'securityRequirements':
Object.keys(value).forEach((securityKey) => {
config.addSecurityRequirements(securityKey, value[securityKey]);
});
break;
case 'bearerAuth':
if (typeof value === 'boolean' && value) {
config.addBearerAuth();
}
else {
config.addBearerAuth(value);
}
break;
case 'oAuth2':
if (typeof value === 'boolean' && value) {
config.addOAuth2();
}
else {
config.addOAuth2(value);
}
break;
case 'apiKey':
if (typeof value === 'boolean' && value) {
config.addApiKey();
}
else {
config.addApiKey(value);
}
break;
case 'basicAuth':
if (typeof value === 'boolean' && value) {
config.addBasicAuth();
}
else {
config.addBasicAuth(value);
}
break;
case 'cookieAuth':
if (typeof value === 'boolean' && value) {
config.addCookieAuth();
}
else {
config.addCookieAuth(value.cookieName, value.options, value.securityName);
}
break;
default:
break;
}
});
}
function enableDynamicAPISwagger(app, options) {
const versionFile = require('../version.json');
const { title = 'MongoDB Dynamic API', description = 'Auto generated CRUD for MongoDB', version = (version_json_1.default ?? versionFile)?.version, path = '/dynamic-api', swaggerExtraConfig, swaggerDocumentOptions, } = options ?? {};
const config = new swagger_1.DocumentBuilder()
.setTitle(title)
.setDescription(description)
.setVersion(version);
if (swaggerExtraConfig) {
buildExtraConfig(config, swaggerExtraConfig);
}
const document = swagger_1.SwaggerModule.createDocument(app, config.build(), swaggerDocumentOptions);
if (options?.jsonFilePath) {
fs.writeFileSync(options?.jsonFilePath, JSON.stringify(document, null, 2));
}
swagger_1.SwaggerModule.setup(path, app, document);
}
exports.enableDynamicAPISwagger = enableDynamicAPISwagger;
//# sourceMappingURL=swagger-config.helper.js.map