| "use strict"; |
| Object.defineProperty(exports, "__esModule", { value: true }); |
| exports.decodePayload = exports.decodePacket = exports.encodePayload = exports.encodePacket = exports.protocol = void 0; |
| const encodePacket_js_1 = require("./encodePacket.js"); |
| exports.encodePacket = encodePacket_js_1.default; |
| const decodePacket_js_1 = require("./decodePacket.js"); |
| exports.decodePacket = decodePacket_js_1.default; |
| const SEPARATOR = String.fromCharCode(30); // see https://en.wikipedia.org/wiki/Delimiter#ASCII_delimited_text |
| const encodePayload = (packets, callback) => { |
| // some packets may be added to the array while encoding, so the initial length must be saved |
| const length = packets.length; |
| const encodedPackets = new Array(length); |
| let count = 0; |
| packets.forEach((packet, i) => { |
| // force base64 encoding for binary packets |
| (0, encodePacket_js_1.default)(packet, false, encodedPacket => { |
| encodedPackets[i] = encodedPacket; |
| if (++count === length) { |
| callback(encodedPackets.join(SEPARATOR)); |
| } |
| }); |
| }); |
| }; |
| exports.encodePayload = encodePayload; |
| const decodePayload = (encodedPayload, binaryType) => { |
| const encodedPackets = encodedPayload.split(SEPARATOR); |
| const packets = []; |
| for (let i = 0; i < encodedPackets.length; i++) { |
| const decodedPacket = (0, decodePacket_js_1.default)(encodedPackets[i], binaryType); |
| packets.push(decodedPacket); |
| if (decodedPacket.type === "error") { |
| break; |
| } |
| } |
| return packets; |
| }; |
| exports.decodePayload = decodePayload; |
| exports.protocol = 4; |