typescript-swagger
Version:
Generate Swagger files from a decorator library like typescript-rest or a @decorators/express.
101 lines • 3.96 kB
JavaScript
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
;