openapi-alchemist
Version:
Transform OpenAPI 3 to Swagger 2 with alchemical precision
58 lines (57 loc) • 1.82 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.Swagger2 = void 0;
const types_1 = require("../../types");
const util_1 = require("../util");
class Swagger2 extends types_1.BaseFormat {
formatName = 'swagger';
supportedVersions = ['2.0'];
constructor(spec) {
super(spec);
this.format = 'swagger_2';
}
getFormatVersion() {
return this.spec.swagger;
}
fixSpec() {
const swagger = this.spec;
const version = swagger.info?.version;
if (typeof version === 'number') {
swagger.info.version = version % 1 ? version.toString() : version.toFixed(1);
}
util_1.Util.removeNonValues(swagger);
const basePath = swagger.basePath;
if (typeof basePath === 'string') {
swagger.basePath = basePath.replace(/\/+/g, '/').replace(/\/$/, '') || '/';
}
Object.values(swagger.definitions || {}).forEach((schema) => {
if (schema.id !== undefined) {
delete schema.id;
}
});
}
fillMissing(dummyData) {
dummyData = dummyData || {
info: {
title: '< An API title here >',
version: '< An API version here >'
}
};
this.spec = Object.assign({}, dummyData, this.spec);
}
parsers = {
'JSON': util_1.Util.parseJSON,
'YAML': util_1.Util.parseYAML
};
checkFormat(spec) {
return spec.swagger !== undefined;
}
validate(callback) {
const result = Promise.resolve({ errors: null, warnings: null });
if (callback) {
result.then(result => callback(null, result)).catch(err => callback(err, null));
}
return result;
}
}
exports.Swagger2 = Swagger2;