UNPKG

mongodb-dynamic-api

Version:

Auto generated CRUD API for MongoDB using NestJS

116 lines 4.5 kB
"use strict"; 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