@selfage/message
Version:
Runtime lib for generated messages to parse, copy, serialize and deserialize messages.
80 lines • 8.58 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.parseEnum = parseEnum;
exports.parseField = parseField;
exports.parseMessage = parseMessage;
const descriptor_1 = require("./descriptor");
function parseEnum(source, descriptor) {
let enumValueFound;
if (typeof source === "string") {
enumValueFound = descriptor.values.find((enumValue) => {
return enumValue.name === source;
});
}
else if (typeof source === "number") {
enumValueFound = descriptor.values.find((enumValue) => {
return enumValue.value === source;
});
}
return enumValueFound ? enumValueFound.value : undefined;
}
function parseField(sourceField, field) {
if (field.primitiveType) {
switch (field.primitiveType) {
case descriptor_1.PrimitiveType.NUMBER:
if (typeof sourceField === "number") {
return sourceField;
}
else {
return undefined;
}
case descriptor_1.PrimitiveType.BOOLEAN:
if (typeof sourceField === "boolean") {
return sourceField;
}
else {
return undefined;
}
case descriptor_1.PrimitiveType.STRING:
if (typeof sourceField === "string") {
return sourceField;
}
else {
return undefined;
}
default:
return undefined;
}
}
else if (field.enumType) {
return parseEnum(sourceField, field.enumType);
}
else {
// message type
return parseMessage(sourceField, field.messageType);
}
}
function parseMessage(raw, descriptor) {
if (!raw || typeof raw !== "object") {
return undefined;
}
let ret = {};
for (let field of descriptor.fields) {
if (raw[field.name] === undefined) {
continue;
}
if (!field.isArray) {
ret[field.name] = parseField(raw[field.name], field);
}
else if (Array.isArray(raw[field.name])) {
let retArrayField = [];
ret[field.name] = retArrayField;
let sourceArrayField = raw[field.name];
for (let element of sourceArrayField) {
retArrayField.push(parseField(element, field));
}
}
}
return ret;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyc2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsicGFyc2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBUUEsOEJBWUM7QUFFRCxnQ0E4QkM7QUFFRCxvQ0FzQkM7QUE1RUQsNkNBTXNCO0FBRXRCLFNBQWdCLFNBQVMsQ0FBQyxNQUFXLEVBQUUsVUFBK0I7SUFDcEUsSUFBSSxjQUF5QixDQUFDO0lBQzlCLElBQUksT0FBTyxNQUFNLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDL0IsY0FBYyxHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsU0FBUyxFQUFXLEVBQUU7WUFDN0QsT0FBTyxTQUFTLENBQUMsSUFBSSxLQUFLLE1BQU0sQ0FBQztRQUNuQyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7U0FBTSxJQUFJLE9BQU8sTUFBTSxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQ3RDLGNBQWMsR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLFNBQVMsRUFBVyxFQUFFO1lBQzdELE9BQU8sU0FBUyxDQUFDLEtBQUssS0FBSyxNQUFNLENBQUM7UUFDcEMsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBQ0QsT0FBTyxjQUFjLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztBQUMzRCxDQUFDO0FBRUQsU0FBZ0IsVUFBVSxDQUFDLFdBQWdCLEVBQUUsS0FBbUI7SUFDOUQsSUFBSSxLQUFLLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDeEIsUUFBUSxLQUFLLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDNUIsS0FBSywwQkFBYSxDQUFDLE1BQU07Z0JBQ3ZCLElBQUksT0FBTyxXQUFXLEtBQUssUUFBUSxFQUFFLENBQUM7b0JBQ3BDLE9BQU8sV0FBVyxDQUFDO2dCQUNyQixDQUFDO3FCQUFNLENBQUM7b0JBQ04sT0FBTyxTQUFTLENBQUM7Z0JBQ25CLENBQUM7WUFDSCxLQUFLLDBCQUFhLENBQUMsT0FBTztnQkFDeEIsSUFBSSxPQUFPLFdBQVcsS0FBSyxTQUFTLEVBQUUsQ0FBQztvQkFDckMsT0FBTyxXQUFXLENBQUM7Z0JBQ3JCLENBQUM7cUJBQU0sQ0FBQztvQkFDTixPQUFPLFNBQVMsQ0FBQztnQkFDbkIsQ0FBQztZQUNILEtBQUssMEJBQWEsQ0FBQyxNQUFNO2dCQUN2QixJQUFJLE9BQU8sV0FBVyxLQUFLLFFBQVEsRUFBRSxDQUFDO29CQUNwQyxPQUFPLFdBQVcsQ0FBQztnQkFDckIsQ0FBQztxQkFBTSxDQUFDO29CQUNOLE9BQU8sU0FBUyxDQUFDO2dCQUNuQixDQUFDO1lBQ0g7Z0JBQ0UsT0FBTyxTQUFTLENBQUM7UUFDckIsQ0FBQztJQUNILENBQUM7U0FBTSxJQUFJLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUMxQixPQUFPLFNBQVMsQ0FBQyxXQUFXLEVBQUUsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ2hELENBQUM7U0FBTSxDQUFDO1FBQ04sZUFBZTtRQUNmLE9BQU8sWUFBWSxDQUFDLFdBQVcsRUFBRSxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDdEQsQ0FBQztBQUNILENBQUM7QUFFRCxTQUFnQixZQUFZLENBQUksR0FBUSxFQUFFLFVBQWdDO0lBQ3hFLElBQUksQ0FBQyxHQUFHLElBQUksT0FBTyxHQUFHLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDcEMsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztJQUVELElBQUksR0FBRyxHQUFRLEVBQUUsQ0FBQztJQUNsQixLQUFLLElBQUksS0FBSyxJQUFJLFVBQVUsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNwQyxJQUFJLEdBQUcsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDbEMsU0FBUztRQUNYLENBQUM7UUFDRCxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ25CLEdBQUcsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsVUFBVSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDdkQsQ0FBQzthQUFNLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUMxQyxJQUFJLGFBQWEsR0FBUSxFQUFFLENBQUM7WUFDNUIsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxhQUFhLENBQUM7WUFDaEMsSUFBSSxnQkFBZ0IsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3ZDLEtBQUssSUFBSSxPQUFPLElBQUksZ0JBQWdCLEVBQUUsQ0FBQztnQkFDckMsYUFBYSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDakQsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBQ0QsT0FBTyxHQUFHLENBQUM7QUFDYixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgRW51bURlc2NyaXB0b3IsXG4gIEVudW1WYWx1ZSxcbiAgTWVzc2FnZURlc2NyaXB0b3IsXG4gIE1lc3NhZ2VGaWVsZCxcbiAgUHJpbWl0aXZlVHlwZSxcbn0gZnJvbSBcIi4vZGVzY3JpcHRvclwiO1xuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VFbnVtKHNvdXJjZTogYW55LCBkZXNjcmlwdG9yOiBFbnVtRGVzY3JpcHRvcjxhbnk+KTogYW55IHtcbiAgbGV0IGVudW1WYWx1ZUZvdW5kOiBFbnVtVmFsdWU7XG4gIGlmICh0eXBlb2Ygc291cmNlID09PSBcInN0cmluZ1wiKSB7XG4gICAgZW51bVZhbHVlRm91bmQgPSBkZXNjcmlwdG9yLnZhbHVlcy5maW5kKChlbnVtVmFsdWUpOiBib29sZWFuID0+IHtcbiAgICAgIHJldHVybiBlbnVtVmFsdWUubmFtZSA9PT0gc291cmNlO1xuICAgIH0pO1xuICB9IGVsc2UgaWYgKHR5cGVvZiBzb3VyY2UgPT09IFwibnVtYmVyXCIpIHtcbiAgICBlbnVtVmFsdWVGb3VuZCA9IGRlc2NyaXB0b3IudmFsdWVzLmZpbmQoKGVudW1WYWx1ZSk6IGJvb2xlYW4gPT4ge1xuICAgICAgcmV0dXJuIGVudW1WYWx1ZS52YWx1ZSA9PT0gc291cmNlO1xuICAgIH0pO1xuICB9XG4gIHJldHVybiBlbnVtVmFsdWVGb3VuZCA/IGVudW1WYWx1ZUZvdW5kLnZhbHVlIDogdW5kZWZpbmVkO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VGaWVsZChzb3VyY2VGaWVsZDogYW55LCBmaWVsZDogTWVzc2FnZUZpZWxkKTogYW55IHtcbiAgaWYgKGZpZWxkLnByaW1pdGl2ZVR5cGUpIHtcbiAgICBzd2l0Y2ggKGZpZWxkLnByaW1pdGl2ZVR5cGUpIHtcbiAgICAgIGNhc2UgUHJpbWl0aXZlVHlwZS5OVU1CRVI6XG4gICAgICAgIGlmICh0eXBlb2Ygc291cmNlRmllbGQgPT09IFwibnVtYmVyXCIpIHtcbiAgICAgICAgICByZXR1cm4gc291cmNlRmllbGQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgY2FzZSBQcmltaXRpdmVUeXBlLkJPT0xFQU46XG4gICAgICAgIGlmICh0eXBlb2Ygc291cmNlRmllbGQgPT09IFwiYm9vbGVhblwiKSB7XG4gICAgICAgICAgcmV0dXJuIHNvdXJjZUZpZWxkO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgIGNhc2UgUHJpbWl0aXZlVHlwZS5TVFJJTkc6XG4gICAgICAgIGlmICh0eXBlb2Ygc291cmNlRmllbGQgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICByZXR1cm4gc291cmNlRmllbGQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gIH0gZWxzZSBpZiAoZmllbGQuZW51bVR5cGUpIHtcbiAgICByZXR1cm4gcGFyc2VFbnVtKHNvdXJjZUZpZWxkLCBmaWVsZC5lbnVtVHlwZSk7XG4gIH0gZWxzZSB7XG4gICAgLy8gbWVzc2FnZSB0eXBlXG4gICAgcmV0dXJuIHBhcnNlTWVzc2FnZShzb3VyY2VGaWVsZCwgZmllbGQubWVzc2FnZVR5cGUpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZU1lc3NhZ2U8VD4ocmF3OiBhbnksIGRlc2NyaXB0b3I6IE1lc3NhZ2VEZXNjcmlwdG9yPFQ+KTogVCB7XG4gIGlmICghcmF3IHx8IHR5cGVvZiByYXcgIT09IFwib2JqZWN0XCIpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgbGV0IHJldDogYW55ID0ge307XG4gIGZvciAobGV0IGZpZWxkIG9mIGRlc2NyaXB0b3IuZmllbGRzKSB7XG4gICAgaWYgKHJhd1tmaWVsZC5uYW1lXSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgaWYgKCFmaWVsZC5pc0FycmF5KSB7XG4gICAgICByZXRbZmllbGQubmFtZV0gPSBwYXJzZUZpZWxkKHJhd1tmaWVsZC5uYW1lXSwgZmllbGQpO1xuICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShyYXdbZmllbGQubmFtZV0pKSB7XG4gICAgICBsZXQgcmV0QXJyYXlGaWVsZDogYW55ID0gW107XG4gICAgICByZXRbZmllbGQubmFtZV0gPSByZXRBcnJheUZpZWxkO1xuICAgICAgbGV0IHNvdXJjZUFycmF5RmllbGQgPSByYXdbZmllbGQubmFtZV07XG4gICAgICBmb3IgKGxldCBlbGVtZW50IG9mIHNvdXJjZUFycmF5RmllbGQpIHtcbiAgICAgICAgcmV0QXJyYXlGaWVsZC5wdXNoKHBhcnNlRmllbGQoZWxlbWVudCwgZmllbGQpKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJldDtcbn1cbiJdfQ==