UNPKG

@namecheap/tsoa-cli

Version:

Build swagger-compliant REST APIs using TypeScript and Node

40 lines 1.83 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.generateSpec = exports.getSwaggerOutputPath = void 0; const YAML = require("yamljs"); const metadataGenerator_1 = require("../metadataGeneration/metadataGenerator"); const specGenerator2_1 = require("../swagger/specGenerator2"); const specGenerator3_1 = require("../swagger/specGenerator3"); const fs_1 = require("../utils/fs"); const getSwaggerOutputPath = (swaggerConfig) => { const ext = swaggerConfig.yaml ? 'yaml' : 'json'; const specFileBaseName = swaggerConfig.specFileBaseName || 'swagger'; return `${swaggerConfig.outputDirectory}/${specFileBaseName}.${ext}`; }; exports.getSwaggerOutputPath = getSwaggerOutputPath; const generateSpec = async (swaggerConfig, compilerOptions, ignorePaths, /** * pass in cached metadata returned in a previous step to speed things up */ metadata) => { if (!metadata) { metadata = new metadataGenerator_1.MetadataGenerator(swaggerConfig.entryFile, compilerOptions, ignorePaths, swaggerConfig.controllerPathGlobs).Generate(); } let spec; if (swaggerConfig.specVersion && swaggerConfig.specVersion === 3) { spec = new specGenerator3_1.SpecGenerator3(metadata, swaggerConfig).GetSpec(); } else { spec = new specGenerator2_1.SpecGenerator2(metadata, swaggerConfig).GetSpec(); } await (0, fs_1.fsMkDir)(swaggerConfig.outputDirectory, { recursive: true }); let data = JSON.stringify(spec, null, '\t'); if (swaggerConfig.yaml) { data = YAML.stringify(JSON.parse(data), 10); } const outputPath = (0, exports.getSwaggerOutputPath)(swaggerConfig); await (0, fs_1.fsWriteFile)(outputPath, data, { encoding: 'utf8' }); return metadata; }; exports.generateSpec = generateSpec; //# sourceMappingURL=generate-spec.js.map