UNPKG

@autorest/openapi-to-typespec

Version:

Autorest plugin to scaffold a Typespec definition from an OpenAPI document

48 lines 1.81 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 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