From c7b3088254d5cea2b855888ad4555a26be3198d9 Mon Sep 17 00:00:00 2001 From: David Konsumer Date: Fri, 3 May 2024 16:01:16 -0700 Subject: [PATCH] query sub/bytes --- src/decoders.js | 4 ++++ test/query.test.js | 18 ++++++++++++++++++ 2 files changed, 22 insertions(+) diff --git a/src/decoders.js b/src/decoders.js index d385ccb..514d1ed 100644 --- a/src/decoders.js +++ b/src/decoders.js @@ -98,6 +98,10 @@ export const getValue = (field, type) => { return field.value } + if (type === 'sub') { + return new RawProto(field.value).readMessage() + } + if (type === 'string') { return string(field.value) } diff --git a/test/query.test.js b/test/query.test.js index fcc633d..89c6de2 100644 --- a/test/query.test.js +++ b/test/query.test.js @@ -82,3 +82,21 @@ test('Packed Repeated Fields', () => { const tree = new RawProto([0x32, 0x06, 0x03, 0x8e, 0x02, 0x9e, 0xa7, 0x05]).readMessage() expect(query(tree, '6:packedvarint')).toEqual([[3, 270, 86942]]) }) + +// Here are some other type-tests + +test('Submessage as bytes', () => { + /* + 3: {1: 150} + */ + const tree = new RawProto([0x1a, 0x03, 0x08, 0x96, 0x01]).readMessage() + expect(query(tree, '3:bytes')).toEqual([new Uint8Array([8, 150, 1])]) +}) + +test('Submessage as sub', () => { + /* + 3: {1: 150} + */ + const tree = new RawProto([0x1a, 0x03, 0x08, 0x96, 0x01]).readMessage() + expect(query(tree, '3:sub')).toEqual([[{ index: 1, path: '1', pos: [1, 3], renderType: 'int', value: 150, type: 0 }]]) +})