@autorest/openapi-to-cadl
Version:
Autorest plugin to scaffold a Typespec definition from an OpenAPI document
42 lines • 1.65 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.transformEnum = void 0;
const codemodel_1 = require("@autorest/codemodel");
const data_types_1 = require("../data-types");
const decorators_1 = require("../utils/decorators");
const values_1 = require("../utils/values");
function transformEnum(schema, codeModel) {
const dataTypes = (0, data_types_1.getDataTypes)(codeModel);
let cadlEnum = dataTypes.get(schema);
if (!cadlEnum) {
cadlEnum = {
decorators: (0, decorators_1.getEnumDecorators)(schema),
doc: schema.language.default.documentation,
kind: "enum",
name: schema.language.default.name.replace(/-/g, "_"),
members: schema.choices.map((choice) => transformChoiceMember(choice)),
isExtensible: !isSealedChoiceSchema(schema),
...(hasSyntheticName(schema) && {
fixMe: [
"// FIXME: (synthetic-name) This enum has a generated name. Please rename it to something more appropriate.",
],
}),
};
}
return cadlEnum;
}
exports.transformEnum = transformEnum;
function hasSyntheticName(schema) {
return schema.language.default.name.startsWith("components·");
}
function transformChoiceMember(member) {
return {
doc: member.language.default.description,
name: member.language.default.name,
value: (0, values_1.transformValue)(member.value),
};
}
const isSealedChoiceSchema = (schema) => {
return schema.type === codemodel_1.SchemaType.SealedChoice;
};
//# sourceMappingURL=transform-choices.js.map