openapi-diff
Version:
A CLI tool to identify differences between Swagger/OpenAPI specs.
25 lines (24 loc) • 1.24 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.resolveSpecFormat = void 0;
const open_api_diff_error_impl_1 = require("../../common/open-api-diff-error-impl");
const is_swagger2_content_1 = require("./swagger2/is-swagger2-content");
const detectContentFormat = (specContent) => (0, is_swagger2_content_1.isSwagger2Content)(specContent) ? 'swagger2' : 'openapi3';
const typeSafeSupportedFormats = {
openapi3: null,
swagger2: null
};
const supportedFormats = Object.keys(typeSafeSupportedFormats);
const isSpecFormat = (unverifiedFormat) => supportedFormats.indexOf(unverifiedFormat) >= 0;
const toVerifiedFormat = (spec) => {
if (!isSpecFormat(spec.unverifiedFormat)) {
throw new open_api_diff_error_impl_1.OpenApiDiffErrorImpl('OPENAPI_DIFF_PARSE_ERROR', `"${spec.location}" format "${spec.unverifiedFormat}" is not supported`);
}
return spec.unverifiedFormat;
};
const autoDetectFormat = 'auto-detect';
const isAutoDetect = (unverifiedFormat) => unverifiedFormat === autoDetectFormat;
const resolveSpecFormat = (spec) => isAutoDetect(spec.unverifiedFormat)
? detectContentFormat(spec.content)
: toVerifiedFormat(spec);
exports.resolveSpecFormat = resolveSpecFormat;