UNPKG

openapi-diff

Version:

A CLI tool to identify differences between Swagger/OpenAPI specs.

58 lines (57 loc) 2.58 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.toDiffCompatibleJsonSchemaMap = exports.toDiffCompatibleJsonSchema = void 0; const toDiffCompatibleJsonSchemaArray = (schemaArray) => schemaArray.map((schemaEntry) => (0, exports.toDiffCompatibleJsonSchema)(schemaEntry)); const toDiffCompatibleJsonSchemaOrArray = (schemaOrArray) => { return Array.isArray(schemaOrArray) ? toDiffCompatibleJsonSchemaArray(schemaOrArray) : (0, exports.toDiffCompatibleJsonSchema)(schemaOrArray); }; const toDiffCompatibleAdditionalProperties = (schema) => { return typeof schema === 'boolean' ? schema : (0, exports.toDiffCompatibleJsonSchema)(schema); }; const toDiffCompatibleNumberBoundary = (exclusive, boundary) => { return exclusive ? boundary : undefined; }; // tslint:disable:cyclomatic-complexity const toDiffCompatibleJsonSchemaProperties = (schema, propertyName) => { const schemaProperty = schema[propertyName]; switch (propertyName) { case 'exclusiveMaximum': return toDiffCompatibleNumberBoundary(schemaProperty, schema.maximum); case 'exclusiveMinimum': return toDiffCompatibleNumberBoundary(schemaProperty, schema.minimum); case 'items': return toDiffCompatibleJsonSchemaOrArray(schemaProperty); case 'additionalProperties': return toDiffCompatibleAdditionalProperties(schemaProperty); case 'not': return (0, exports.toDiffCompatibleJsonSchema)(schemaProperty); case 'properties': return (0, exports.toDiffCompatibleJsonSchemaMap)(schemaProperty); case 'allOf': case 'anyOf': case 'oneOf': return toDiffCompatibleJsonSchemaArray(schemaProperty); default: return schemaProperty; } }; const toDiffCompatibleJsonSchema = (schema) => { const compatibleJsonSchema = {}; for (const propertyName of Object.keys(schema)) { compatibleJsonSchema[propertyName] = toDiffCompatibleJsonSchemaProperties(schema, propertyName); } return compatibleJsonSchema; }; exports.toDiffCompatibleJsonSchema = toDiffCompatibleJsonSchema; const toDiffCompatibleJsonSchemaMap = (schemaMap) => { const compatibleJsonSchemaMap = {}; for (const propertyName of Object.keys(schemaMap)) { compatibleJsonSchemaMap[propertyName] = (0, exports.toDiffCompatibleJsonSchema)(schemaMap[propertyName]); } return compatibleJsonSchemaMap; }; exports.toDiffCompatibleJsonSchemaMap = toDiffCompatibleJsonSchemaMap;