UNPKG

@selfage/generator_cli

Version:

Code generation for message, service, and database.

43 lines (42 loc) 5.69 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.generateEnum = generateEnum; const output_content_builder_1 = require("./output_content_builder"); const util_1 = require("./util"); function generateEnum(modulePath, enumDefinition, contentMap) { if (!enumDefinition.name) { throw new Error(`"name" is missing on an enum.`); } let loggingPrefix = `When generating enum ${enumDefinition.name},`; let outputContentBuilder = output_content_builder_1.TsContentBuilder.get(contentMap, modulePath); let values = new Array(); let valueDescriptors = new Array(); if (!enumDefinition.values) { throw new Error(`${loggingPrefix} "values" is either missing or not an array.`); } for (let value of enumDefinition.values) { if (!value.name) { throw new Error(`${loggingPrefix} "name" is missing on a value.`); } if (!value.value) { throw new Error(`${loggingPrefix} "value" is missing on ${value.name}.`); } valueDescriptors.push(`{ name: '${value.name}', value: ${value.value}, }`); values.push(` ${value.name} = ${value.value},`); } outputContentBuilder.importFromMessageDescriptor("EnumDescriptor"); let descriptorName = (0, util_1.toUppercaseSnaked)(enumDefinition.name); outputContentBuilder.push(` export enum ${enumDefinition.name} {${values.join("")} } export let ${descriptorName}: EnumDescriptor<${enumDefinition.name}> = { name: '${enumDefinition.name}', values: [${valueDescriptors.join(", ")}] } `); } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW51bV9nZW5lcmF0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJlbnVtX2dlbmVyYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQU9BLG9DQTRDQztBQWxERCxxRUFHa0M7QUFDbEMsaUNBQTJDO0FBRTNDLFNBQWdCLFlBQVksQ0FDMUIsVUFBa0IsRUFDbEIsY0FBOEIsRUFDOUIsVUFBNkM7SUFFN0MsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN6QixNQUFNLElBQUksS0FBSyxDQUFDLCtCQUErQixDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUVELElBQUksYUFBYSxHQUFHLHdCQUF3QixjQUFjLENBQUMsSUFBSSxHQUFHLENBQUM7SUFDbkUsSUFBSSxvQkFBb0IsR0FBRyx5Q0FBZ0IsQ0FBQyxHQUFHLENBQUMsVUFBVSxFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBQ3hFLElBQUksTUFBTSxHQUFHLElBQUksS0FBSyxFQUFVLENBQUM7SUFDakMsSUFBSSxnQkFBZ0IsR0FBRyxJQUFJLEtBQUssRUFBVSxDQUFDO0lBQzNDLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDM0IsTUFBTSxJQUFJLEtBQUssQ0FDYixHQUFHLGFBQWEsOENBQThDLENBQy9ELENBQUM7SUFDSixDQUFDO0lBQ0QsS0FBSyxJQUFJLEtBQUssSUFBSSxjQUFjLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDeEMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNoQixNQUFNLElBQUksS0FBSyxDQUFDLEdBQUcsYUFBYSxnQ0FBZ0MsQ0FBQyxDQUFDO1FBQ3BFLENBQUM7UUFDRCxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ2pCLE1BQU0sSUFBSSxLQUFLLENBQUMsR0FBRyxhQUFhLDBCQUEwQixLQUFLLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQztRQUMzRSxDQUFDO1FBQ0QsZ0JBQWdCLENBQUMsSUFBSSxDQUFDO2FBQ2IsS0FBSyxDQUFDLElBQUk7YUFDVixLQUFLLENBQUMsS0FBSztJQUNwQixDQUFDLENBQUM7UUFDRixNQUFNLENBQUMsSUFBSSxDQUFDO0lBQ1osS0FBSyxDQUFDLElBQUksTUFBTSxLQUFLLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRUQsb0JBQW9CLENBQUMsMkJBQTJCLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUNuRSxJQUFJLGNBQWMsR0FBRyxJQUFBLHdCQUFpQixFQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM1RCxvQkFBb0IsQ0FBQyxJQUFJLENBQUM7Y0FDZCxjQUFjLENBQUMsSUFBSSxLQUFLLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDOzs7YUFHeEMsY0FBYyxvQkFBb0IsY0FBYyxDQUFDLElBQUk7V0FDdkQsY0FBYyxDQUFDLElBQUk7YUFDakIsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQzs7Q0FFdkMsQ0FBQyxDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVudW1EZWZpbml0aW9uIH0gZnJvbSBcIi4vZGVmaW5pdGlvblwiO1xuaW1wb3J0IHtcbiAgT3V0cHV0Q29udGVudEJ1aWxkZXIsXG4gIFRzQ29udGVudEJ1aWxkZXIsXG59IGZyb20gXCIuL291dHB1dF9jb250ZW50X2J1aWxkZXJcIjtcbmltcG9ydCB7IHRvVXBwZXJjYXNlU25ha2VkIH0gZnJvbSBcIi4vdXRpbFwiO1xuXG5leHBvcnQgZnVuY3Rpb24gZ2VuZXJhdGVFbnVtKFxuICBtb2R1bGVQYXRoOiBzdHJpbmcsXG4gIGVudW1EZWZpbml0aW9uOiBFbnVtRGVmaW5pdGlvbixcbiAgY29udGVudE1hcDogTWFwPHN0cmluZywgT3V0cHV0Q29udGVudEJ1aWxkZXI+LFxuKTogdm9pZCB7XG4gIGlmICghZW51bURlZmluaXRpb24ubmFtZSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgXCJuYW1lXCIgaXMgbWlzc2luZyBvbiBhbiBlbnVtLmApO1xuICB9XG5cbiAgbGV0IGxvZ2dpbmdQcmVmaXggPSBgV2hlbiBnZW5lcmF0aW5nIGVudW0gJHtlbnVtRGVmaW5pdGlvbi5uYW1lfSxgO1xuICBsZXQgb3V0cHV0Q29udGVudEJ1aWxkZXIgPSBUc0NvbnRlbnRCdWlsZGVyLmdldChjb250ZW50TWFwLCBtb2R1bGVQYXRoKTtcbiAgbGV0IHZhbHVlcyA9IG5ldyBBcnJheTxzdHJpbmc+KCk7XG4gIGxldCB2YWx1ZURlc2NyaXB0b3JzID0gbmV3IEFycmF5PHN0cmluZz4oKTtcbiAgaWYgKCFlbnVtRGVmaW5pdGlvbi52YWx1ZXMpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBgJHtsb2dnaW5nUHJlZml4fSBcInZhbHVlc1wiIGlzIGVpdGhlciBtaXNzaW5nIG9yIG5vdCBhbiBhcnJheS5gLFxuICAgICk7XG4gIH1cbiAgZm9yIChsZXQgdmFsdWUgb2YgZW51bURlZmluaXRpb24udmFsdWVzKSB7XG4gICAgaWYgKCF2YWx1ZS5uYW1lKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYCR7bG9nZ2luZ1ByZWZpeH0gXCJuYW1lXCIgaXMgbWlzc2luZyBvbiBhIHZhbHVlLmApO1xuICAgIH1cbiAgICBpZiAoIXZhbHVlLnZhbHVlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYCR7bG9nZ2luZ1ByZWZpeH0gXCJ2YWx1ZVwiIGlzIG1pc3Npbmcgb24gJHt2YWx1ZS5uYW1lfS5gKTtcbiAgICB9XG4gICAgdmFsdWVEZXNjcmlwdG9ycy5wdXNoKGB7XG4gICAgbmFtZTogJyR7dmFsdWUubmFtZX0nLFxuICAgIHZhbHVlOiAke3ZhbHVlLnZhbHVlfSxcbiAgfWApO1xuICAgIHZhbHVlcy5wdXNoKGBcbiAgJHt2YWx1ZS5uYW1lfSA9ICR7dmFsdWUudmFsdWV9LGApO1xuICB9XG5cbiAgb3V0cHV0Q29udGVudEJ1aWxkZXIuaW1wb3J0RnJvbU1lc3NhZ2VEZXNjcmlwdG9yKFwiRW51bURlc2NyaXB0b3JcIik7XG4gIGxldCBkZXNjcmlwdG9yTmFtZSA9IHRvVXBwZXJjYXNlU25ha2VkKGVudW1EZWZpbml0aW9uLm5hbWUpO1xuICBvdXRwdXRDb250ZW50QnVpbGRlci5wdXNoKGBcbmV4cG9ydCBlbnVtICR7ZW51bURlZmluaXRpb24ubmFtZX0geyR7dmFsdWVzLmpvaW4oXCJcIil9XG59XG5cbmV4cG9ydCBsZXQgJHtkZXNjcmlwdG9yTmFtZX06IEVudW1EZXNjcmlwdG9yPCR7ZW51bURlZmluaXRpb24ubmFtZX0+ID0ge1xuICBuYW1lOiAnJHtlbnVtRGVmaW5pdGlvbi5uYW1lfScsXG4gIHZhbHVlczogWyR7dmFsdWVEZXNjcmlwdG9ycy5qb2luKFwiLCBcIil9XVxufVxuYCk7XG59XG4iXX0=