UNPKG

@autorest/openapi-to-cadl

Version:

Autorest plugin to scaffold a Typespec definition from an OpenAPI document

43 lines 1.65 kB
"use strict"; 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 { serializedName: name, language } = getDiscriminatorProperty(schema); 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) { throw new Error("No discriminator property found"); } for (const parent of schema.parents.immediate) { const discriminator = getDiscriminatorProperty(parent); if (discriminator) { return discriminator; } } throw new Error("No discriminator property found"); } //# sourceMappingURL=discriminator.js.map