UNPKG

parse-openapi

Version:

OpenAPI v3 parser

39 lines (38 loc) 1.51 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.mapPropertyValue = exports.findOneOfParentDiscriminator = void 0; const stripNamespace_1 = require("../parser/stripNamespace"); const inverseDictionary = (map) => { const m2 = {}; for (const key in map) { m2[map[key]] = key; } return m2; }; const findOneOfParentDiscriminator = (openApi, parent) => { if (openApi.components && parent) { for (const definitionName in openApi.components.schemas) { if (openApi.components.schemas.hasOwnProperty(definitionName)) { const schema = openApi.components.schemas[definitionName]; if (schema.discriminator && schema.oneOf?.length && schema.oneOf.some((definition) => definition.$ref && (0, stripNamespace_1.stripNamespace)(definition.$ref) == parent.name)) { return schema.discriminator; } } } } return; }; exports.findOneOfParentDiscriminator = findOneOfParentDiscriminator; const mapPropertyValue = (discriminator, parent) => { if (discriminator.mapping) { const mapping = inverseDictionary(discriminator.mapping); const key = Object.keys(mapping).find(item => (0, stripNamespace_1.stripNamespace)(item) == parent.name); if (key && mapping[key]) { return mapping[key]; } } return parent.name; }; exports.mapPropertyValue = mapPropertyValue;