UNPKG

@selfage/message

Version:

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

42 lines 5.87 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.eqMessage = eqMessage; exports.eqMessageField = eqMessageField; const test_matcher_1 = require("@selfage/test_matcher"); function eqMessage(expected, descriptor) { return (actual) => { if (expected === undefined) { (0, test_matcher_1.assertThat)(actual, (0, test_matcher_1.eq)(undefined), "nullity"); return; } (0, test_matcher_1.assert)(Boolean(actual), `to not be null`, `null`); let expectedAny = expected; let actualAny = actual; for (let fieldDescriptor of descriptor.fields) { let fieldMatcher; if (!fieldDescriptor.isArray) { fieldMatcher = eqMessageField(expectedAny[fieldDescriptor.name], fieldDescriptor); } else { let eqElements; if (expectedAny[fieldDescriptor.name] !== undefined) { eqElements = new Array(); for (let element of expectedAny[fieldDescriptor.name]) { eqElements.push(eqMessageField(element, fieldDescriptor)); } } fieldMatcher = (0, test_matcher_1.isArray)(eqElements); } (0, test_matcher_1.assertThat)(actualAny[fieldDescriptor.name], fieldMatcher, `${fieldDescriptor.name} field`); } }; } function eqMessageField(expectedField, fieldDescriptor) { if (fieldDescriptor.primitiveType || fieldDescriptor.enumType) { return (0, test_matcher_1.eq)(expectedField); } else { return eqMessage(expectedField, fieldDescriptor.messageType); } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdF9tYXRjaGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsidGVzdF9tYXRjaGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBU0EsOEJBb0NDO0FBRUQsd0NBU0M7QUF2REQsd0RBTStCO0FBRS9CLFNBQWdCLFNBQVMsQ0FDdkIsUUFBdUIsRUFDdkIsVUFBZ0M7SUFFaEMsT0FBTyxDQUFDLE1BQU0sRUFBRSxFQUFFO1FBQ2hCLElBQUksUUFBUSxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQzNCLElBQUEseUJBQVUsRUFBQyxNQUFNLEVBQUUsSUFBQSxpQkFBRSxFQUFDLFNBQVMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFDO1lBQzdDLE9BQU87UUFDVCxDQUFDO1FBQ0QsSUFBQSxxQkFBTSxFQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUNsRCxJQUFJLFdBQVcsR0FBRyxRQUFlLENBQUM7UUFDbEMsSUFBSSxTQUFTLEdBQUcsTUFBYSxDQUFDO1FBQzlCLEtBQUssSUFBSSxlQUFlLElBQUksVUFBVSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQzlDLElBQUksWUFBMEIsQ0FBQztZQUMvQixJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sRUFBRSxDQUFDO2dCQUM3QixZQUFZLEdBQUcsY0FBYyxDQUMzQixXQUFXLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxFQUNqQyxlQUFlLENBQ2hCLENBQUM7WUFDSixDQUFDO2lCQUFNLENBQUM7Z0JBQ04sSUFBSSxVQUErQixDQUFDO2dCQUNwQyxJQUFJLFdBQVcsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEtBQUssU0FBUyxFQUFFLENBQUM7b0JBQ3BELFVBQVUsR0FBRyxJQUFJLEtBQUssRUFBZ0IsQ0FBQztvQkFDdkMsS0FBSyxJQUFJLE9BQU8sSUFBSSxXQUFXLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7d0JBQ3RELFVBQVUsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sRUFBRSxlQUFlLENBQUMsQ0FBQyxDQUFDO29CQUM1RCxDQUFDO2dCQUNILENBQUM7Z0JBQ0QsWUFBWSxHQUFHLElBQUEsc0JBQU8sRUFBQyxVQUFVLENBQUMsQ0FBQztZQUNyQyxDQUFDO1lBQ0QsSUFBQSx5QkFBVSxFQUNSLFNBQVMsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEVBQy9CLFlBQVksRUFDWixHQUFHLGVBQWUsQ0FBQyxJQUFJLFFBQVEsQ0FDaEMsQ0FBQztRQUNKLENBQUM7SUFDSCxDQUFDLENBQUM7QUFDSixDQUFDO0FBRUQsU0FBZ0IsY0FBYyxDQUM1QixhQUFrQixFQUNsQixlQUE2QjtJQUU3QixJQUFJLGVBQWUsQ0FBQyxhQUFhLElBQUksZUFBZSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQzlELE9BQU8sSUFBQSxpQkFBRSxFQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQzNCLENBQUM7U0FBTSxDQUFDO1FBQ04sT0FBTyxTQUFTLENBQUMsYUFBYSxFQUFFLGVBQWUsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUMvRCxDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1lc3NhZ2VEZXNjcmlwdG9yLCBNZXNzYWdlRmllbGQgfSBmcm9tIFwiLi9kZXNjcmlwdG9yXCI7XG5pbXBvcnQge1xuICBNYXRjaEZuLFxuICBhc3NlcnQsXG4gIGFzc2VydFRoYXQsXG4gIGVxLFxuICBpc0FycmF5LFxufSBmcm9tIFwiQHNlbGZhZ2UvdGVzdF9tYXRjaGVyXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBlcU1lc3NhZ2U8VD4oXG4gIGV4cGVjdGVkOiBUIHwgdW5kZWZpbmVkLFxuICBkZXNjcmlwdG9yOiBNZXNzYWdlRGVzY3JpcHRvcjxUPlxuKTogTWF0Y2hGbjxUPiB7XG4gIHJldHVybiAoYWN0dWFsKSA9PiB7XG4gICAgaWYgKGV4cGVjdGVkID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGFzc2VydFRoYXQoYWN0dWFsLCBlcSh1bmRlZmluZWQpLCBcIm51bGxpdHlcIik7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGFzc2VydChCb29sZWFuKGFjdHVhbCksIGB0byBub3QgYmUgbnVsbGAsIGBudWxsYCk7XG4gICAgbGV0IGV4cGVjdGVkQW55ID0gZXhwZWN0ZWQgYXMgYW55O1xuICAgIGxldCBhY3R1YWxBbnkgPSBhY3R1YWwgYXMgYW55O1xuICAgIGZvciAobGV0IGZpZWxkRGVzY3JpcHRvciBvZiBkZXNjcmlwdG9yLmZpZWxkcykge1xuICAgICAgbGV0IGZpZWxkTWF0Y2hlcjogTWF0Y2hGbjxhbnk+O1xuICAgICAgaWYgKCFmaWVsZERlc2NyaXB0b3IuaXNBcnJheSkge1xuICAgICAgICBmaWVsZE1hdGNoZXIgPSBlcU1lc3NhZ2VGaWVsZChcbiAgICAgICAgICBleHBlY3RlZEFueVtmaWVsZERlc2NyaXB0b3IubmFtZV0sXG4gICAgICAgICAgZmllbGREZXNjcmlwdG9yXG4gICAgICAgICk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBsZXQgZXFFbGVtZW50czogQXJyYXk8TWF0Y2hGbjxhbnk+PjtcbiAgICAgICAgaWYgKGV4cGVjdGVkQW55W2ZpZWxkRGVzY3JpcHRvci5uYW1lXSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgZXFFbGVtZW50cyA9IG5ldyBBcnJheTxNYXRjaEZuPGFueT4+KCk7XG4gICAgICAgICAgZm9yIChsZXQgZWxlbWVudCBvZiBleHBlY3RlZEFueVtmaWVsZERlc2NyaXB0b3IubmFtZV0pIHtcbiAgICAgICAgICAgIGVxRWxlbWVudHMucHVzaChlcU1lc3NhZ2VGaWVsZChlbGVtZW50LCBmaWVsZERlc2NyaXB0b3IpKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZmllbGRNYXRjaGVyID0gaXNBcnJheShlcUVsZW1lbnRzKTtcbiAgICAgIH1cbiAgICAgIGFzc2VydFRoYXQoXG4gICAgICAgIGFjdHVhbEFueVtmaWVsZERlc2NyaXB0b3IubmFtZV0sXG4gICAgICAgIGZpZWxkTWF0Y2hlcixcbiAgICAgICAgYCR7ZmllbGREZXNjcmlwdG9yLm5hbWV9IGZpZWxkYFxuICAgICAgKTtcbiAgICB9XG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBlcU1lc3NhZ2VGaWVsZChcbiAgZXhwZWN0ZWRGaWVsZDogYW55LFxuICBmaWVsZERlc2NyaXB0b3I6IE1lc3NhZ2VGaWVsZFxuKTogTWF0Y2hGbjxhbnk+IHtcbiAgaWYgKGZpZWxkRGVzY3JpcHRvci5wcmltaXRpdmVUeXBlIHx8IGZpZWxkRGVzY3JpcHRvci5lbnVtVHlwZSkge1xuICAgIHJldHVybiBlcShleHBlY3RlZEZpZWxkKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gZXFNZXNzYWdlKGV4cGVjdGVkRmllbGQsIGZpZWxkRGVzY3JpcHRvci5tZXNzYWdlVHlwZSk7XG4gIH1cbn1cbiJdfQ==