parse-openapi
Version:
OpenAPI v3 parser
39 lines (38 loc) • 1.51 kB
JavaScript
;
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;