UNPKG

@selfage/message

Version:

Runtime lib for generated messages to parse, copy, serialize and deserialize messages.

80 lines 8.58 kB
"use strict"; 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==