@autorest/openapi-to-typespec
Version:
Autorest plugin to scaffold a Typespec definition from an OpenAPI document
55 lines • 2.49 kB
JavaScript
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
;