@cuba-platform/front-generator
Version:
CUBA Platform front-end clients generator
36 lines • 1.37 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.createEnums = void 0;
const ts = require("typescript");
const utils_1 = require("../../../common/utils");
function createEnums(enums) {
const enDeclarations = [];
const duplicates = [];
enums
.sort((a, b) => a.fqn.localeCompare(b.fqn))
.forEach(e => {
const className = e.className;
const ed = ts.createEnumDeclaration(undefined, [ts.createToken(ts.SyntaxKind.ExportKeyword)], className, getEnumMembers(e.values));
if (enDeclarations.some(ed => ed.node.name.text === className)) {
duplicates.push(className);
}
enDeclarations.push({ fqn: e.fqn, node: ed });
});
duplicates.forEach(duplicateName => {
enDeclarations
.filter(ed => ed.node.name.text === duplicateName)
.forEach(ed => {
ed.node = ts.createEnumDeclaration(undefined, [ts.createToken(ts.SyntaxKind.ExportKeyword)], (0, utils_1.fqnToName)(ed.fqn), ed.node.members);
});
});
return enDeclarations;
}
exports.createEnums = createEnums;
function getEnumMembers(values) {
const members = [];
values.forEach(v => {
members.push(ts.createEnumMember(v.name, ts.createStringLiteral(v.name)));
});
return members;
}
//# sourceMappingURL=enums-generation.js.map