UNPKG

@autorest/openapi-to-typespec

Version:

Autorest plugin to scaffold a Typespec definition from an OpenAPI document

55 lines 2.49 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.generateEnums = void 0; const options_1 = require("../options"); const decorators_1 = require("../utils/decorators"); const docs_1 = require("../utils/docs"); const suppressions_1 = require("../utils/suppressions"); function generateEnums(typespecEnum) { var _a; const { isFullCompatible } = (0, options_1.getOptions)(); const definitions = []; const doc = (0, docs_1.generateDocs)(typespecEnum); definitions.push(doc.length > 0 || !isFullCompatible ? doc : `${(0, suppressions_1.generateSuppressions)([(0, suppressions_1.getSuppressionWithCode)(suppressions_1.SuppressionCode.DocumentRequired)])}\n`); const isExtensible = typespecEnum.isExtensible && !["ApiVersion"].includes(typespecEnum.name); if (!isExtensible && isFullCompatible) definitions.push(`${(0, suppressions_1.generateSuppressionForNoEnum)()}\n`); for (const fixme of (_a = typespecEnum.fixMe) !== null && _a !== void 0 ? _a : []) { definitions.push(`\n${fixme}`); } const decorators = (0, decorators_1.generateDecorators)(typespecEnum.decorators); decorators && definitions.push(decorators); if (isFullCompatible && typespecEnum.suppressions) { definitions.push(...(0, suppressions_1.generateSuppressions)(typespecEnum.suppressions)); } const enumDefinition = typespecEnum.isExtensible && !["ApiVersion"].includes(typespecEnum.name) ? ` union ${typespecEnum.name} { ${typespecEnum.choiceType},\n ${typespecEnum.members .map((m) => { const doc = (0, docs_1.generateDocs)(m); const kv = `"${m.name}": ${m.value}`; if (doc.length > 0 || !isFullCompatible) return `${doc}${kv}`; else return `${(0, suppressions_1.generateSuppressions)([(0, suppressions_1.getSuppressionWithCode)(suppressions_1.SuppressionCode.DocumentRequired)])}\n${kv}`; }) .join(", ")} }\n\n` : ` enum ${typespecEnum.name} { ${typespecEnum.members .map((m) => { const kv = `"${m.name}"` !== m.value ? `"${m.name}": ${m.value}` : m.value; return `${(0, docs_1.generateDocs)(m)}${kv}`; }) .join(", ")} }\n\n`; definitions.push(enumDefinition); return definitions; } exports.generateEnums = generateEnums; //# sourceMappingURL=generate-enums.js.map