@whisklabs/grpc
Version:
gRPC generator and http library for typescript
38 lines • 1.56 kB
JavaScript
import { isNumber, isText } from '@whisklabs/typeguards';
import { checkSame, joinPath, safeString, toComment } from './utils';
export function enums(pack, out, items) {
for (var _i = 0, items_1 = items; _i < items_1.length; _i++) {
var msg = items_1[_i];
enu(joinPath(pack, msg.name), out, msg);
}
}
function enu(pack, out, item) {
var eName = safeString(pack);
var cID = checkSame(out, 'id');
var cName = checkSame(out, 'name');
if (isText(item.comment)) {
out.dts.push(toComment(item.comment));
}
out.js.push("export const ".concat(eName, " = {"));
out.dts.push("export const ".concat(eName, ": {"));
for (var field in item.values) {
var val = item.values[field].value;
var comment = item.values[field].comment;
if (isNumber(val) && !isNaN(val) && !isInvalidEnumField(field, val)) {
cID(val, "".concat(pack, ".").concat(field));
cName(field, "".concat(pack, ".").concat(field));
out.js.push(" ".concat(field, ": ").concat(val, ","));
if (isText(comment)) {
out.dts.push(toComment(comment));
}
out.dts.push(" readonly ".concat(field, ": ").concat(val, ","));
}
}
out.js.push('};');
out.dts.push('};');
out.dts.push("export type ".concat(eName, " = Values<typeof ").concat(eName, ">;"));
}
var isInvalidEnumField = function (field, val) {
return val === 0 && (field.endsWith('_UNSPECIFIED') || field.endsWith('_INVALID'));
};
//# sourceMappingURL=enum.js.map