We are going to implement both the encoder and decoder utilizing transform streams. This will give us the most flexibility in terms of actually implementing the streams, and it already has a lot of the behavior that we need since we are technically transforming the data. First, we will need some generic helpers for both the encoding and decoding of our specific data types, and we will put all of these methods in a helpers.js helper file. The encoding functions will look like the following:
export const encodeString = function(str) { const buf = Buffer.from(str); const len = Buffer.alloc(4); len.writeUInt32BE(buf.byteLength); return Buffer.concat([Buffer.from([0x03]), len, buf]);}export const encodeNumber = function(num) ...