UNPKG

openapi-alchemist

Version:

Transform OpenAPI 3 to Swagger 2 with alchemical precision

58 lines (57 loc) 1.82 kB
"use strict"; 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;