openapi-alchemist
Version:
Transform OpenAPI 3 to Swagger 2 with alchemical precision
114 lines (113 loc) • 3.66 kB
JavaScript
;
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || (function () {
var ownKeys = function(o) {
ownKeys = Object.getOwnPropertyNames || function (o) {
var ar = [];
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
return ar;
};
return ownKeys(o);
};
return function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
__setModuleDefault(result, mod);
return result;
};
})();
Object.defineProperty(exports, "__esModule", { value: true });
exports.Util = void 0;
const Yaml = __importStar(require("js-yaml"));
const fs = __importStar(require("fs"));
class Util {
static joinPath(...args) {
return args.join('/').replace(/\/\/+/g, '/');
}
static parseJSON = (data) => {
try {
return Promise.resolve(JSON.parse(data));
}
catch (err) {
return Promise.reject(err);
}
};
static parseYAML = (data) => Promise.resolve(Yaml.load(data));
static resourceReaders = {
file: (filename) => {
return new Promise((resolve, reject) => {
fs.readFile(filename, 'utf8', (err, data) => {
if (err)
reject(err);
else
resolve(data);
});
});
},
object: (data) => Promise.resolve(data),
string: (data) => Promise.resolve(data),
};
static getSourceType(source) {
if (typeof source === 'object' && source !== null) {
return 'object';
}
if (typeof source !== 'string') {
return undefined;
}
try {
if (fs.existsSync(source))
return 'file';
}
catch {
}
if (source.startsWith('./') || source.startsWith('../') || !source.includes('://')) {
return 'file';
}
else {
return 'string';
}
}
static removeNonValues(obj) {
if (obj === null || typeof obj !== 'object') {
return;
}
if (Array.isArray(obj)) {
for (let i = obj.length - 1; i >= 0; i--) {
if (obj[i] === undefined) {
obj.splice(i, 1);
}
else {
this.removeNonValues(obj[i]);
}
}
}
else {
const keys = Object.keys(obj);
for (const key of keys) {
if (obj[key] === undefined) {
delete obj[key];
}
else {
this.removeNonValues(obj[key]);
}
}
}
}
}
exports.Util = Util;