UNPKG

typescript-swagger

Version:

Generate Swagger files from a decorator library like typescript-rest or a @decorators/express.

101 lines 3.96 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getCompilerOptions = exports.validateSwaggerConfig = exports.getSwaggerConfig = exports.getPackageJsonStringValue = void 0; var fs_extra_promise_1 = require("fs-extra-promise"); var lodash_1 = require("lodash"); var path_1 = require("path"); var typescript_1 = require("typescript"); var yamljs_1 = require("yamljs"); var config_1 = require("../config"); var projectPackageJsonpath; var projectPackageJson; function getPackageJsonStringValue(workingDir, key, defaultValue) { if (defaultValue === void 0) { defaultValue = ''; } var path = path_1.join(workingDir, 'package.json'); try { if (typeof projectPackageJson === 'undefined' || typeof projectPackageJsonpath === 'undefined' || projectPackageJsonpath !== path) { projectPackageJson = require(path); } projectPackageJsonpath = path; return projectPackageJson[key] || defaultValue; } catch (e) { return defaultValue; } } exports.getPackageJsonStringValue = getPackageJsonStringValue; function getSwaggerConfig(workingDir, configPath) { if (configPath === void 0) { configPath = 'swagger.json'; } var configFile = workingDir + "/" + configPath; if (lodash_1.endsWith(configFile, '.yml') || lodash_1.endsWith(configFile, '.yaml')) { return yamljs_1.load(configFile); } else if (lodash_1.endsWith(configFile, '.js')) { return require(path_1.join(configFile)); } else { return fs_extra_promise_1.readJSONSync(configFile); } } exports.getSwaggerConfig = getSwaggerConfig; function validateSwaggerConfig(workingDir, conf) { if (!conf.outputDirectory) { throw new Error('Missing outputDirectory: configuration most contain output directory'); } if (!conf.entryFile) { throw new Error('Missing entryFile: Configuration must contain an entry point file or directory.'); } conf.version = conf.version || getPackageJsonStringValue(workingDir, 'version', '0.0.1'); conf.name = conf.name || getPackageJsonStringValue(workingDir, 'name'); conf.description = conf.description || getPackageJsonStringValue(workingDir, 'description'); conf.license = conf.license || getPackageJsonStringValue(workingDir, 'license', 'MIT'); conf.yaml = conf.yaml !== false; conf.outputFormat = conf.outputFormat ? config_1.Specification[conf.outputFormat] : config_1.Specification.Swagger_2; return conf; } exports.validateSwaggerConfig = validateSwaggerConfig; function getCompilerOptions(loadTsconfig, tsconfigPath) { if (!loadTsconfig && tsconfigPath) { loadTsconfig = true; } if (!loadTsconfig) { return {}; } var cwd = process.cwd(); var defaultTsconfigPath = path_1.join(cwd, 'tsconfig.json'); tsconfigPath = tsconfigPath ? getAbsolutePath(tsconfigPath, cwd) : defaultTsconfigPath; try { var tsConfig = require(tsconfigPath); if (!tsConfig) { throw new Error('Invalid tsconfig'); } return tsConfig.compilerOptions ? typescript_1.convertCompilerOptionsFromJson(tsConfig.compilerOptions, cwd).options : {}; } catch (err) { if (err.code === 'MODULE_NOT_FOUND') { throw Error("No tsconfig file found at '" + tsconfigPath + "'"); } else if (err.name === 'SyntaxError') { throw Error("Invalid JSON syntax in tsconfig at '" + tsconfigPath + "': " + err.message); } else { throw Error("Unhandled error encountered loading tsconfig '" + tsconfigPath + "': " + err.message); } } } exports.getCompilerOptions = getCompilerOptions; function getAbsolutePath(p, basePath) { if (path_1.isAbsolute(p)) { return p; } else { return path_1.join(basePath, p); } } //# sourceMappingURL=utils.js.map