@autorest/openapi-to-typespec
Version:
Autorest plugin to scaffold a Typespec definition from an OpenAPI document
48 lines • 1.81 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.getDiscriminator = exports.getOwnDiscriminator = void 0;
const logger_1 = require("./logger");
function getOwnDiscriminator(schema) {
var _a;
return (_a = schema.discriminator) === null || _a === void 0 ? void 0 : _a.property;
}
exports.getOwnDiscriminator = getOwnDiscriminator;
function getDiscriminator(schema) {
if (!schema.discriminatorValue) {
return undefined;
}
const discriminator = getDiscriminatorProperty(schema);
if (!discriminator) {
const logger = (0, logger_1.getLogger)("getDiscriminator");
logger.warning(`No discriminator property found for ${schema.language.default.name}`);
return undefined;
}
const { serializedName: name, language } = discriminator;
const type = `"${schema.discriminatorValue}"`;
return {
isOptional: false,
name,
type,
kind: "property",
doc: language.default.description,
};
}
exports.getDiscriminator = getDiscriminator;
function getDiscriminatorProperty(schema) {
var _a, _b;
const logger = (0, logger_1.getLogger)("getDiscriminatorProperty");
logger.info(`Getting discriminator property for ${schema.language.default.name}`);
if ((_a = schema.discriminator) === null || _a === void 0 ? void 0 : _a.property) {
return schema.discriminator.property;
}
if (!((_b = schema.parents) === null || _b === void 0 ? void 0 : _b.immediate) || schema.parents.immediate.length === 0) {
return;
}
for (const parent of schema.parents.immediate) {
const discriminator = getDiscriminatorProperty(parent);
if (discriminator) {
return discriminator;
}
}
}
//# sourceMappingURL=discriminator.js.map
;