()
| 467 | return packets; |
| 468 | }; |
| 469 | function createPacketEncoderStream() { |
| 470 | return new TransformStream({ |
| 471 | transform: function transform(packet, controller) { |
| 472 | encodePacketToBinary(packet, function (encodedPacket) { |
| 473 | var payloadLength = encodedPacket.length; |
| 474 | var header; |
| 475 | // inspired by the WebSocket format: https://developer.mozilla.org/en-US/docs/Web/API/WebSockets_API/Writing_WebSocket_servers#decoding_payload_length |
| 476 | if (payloadLength < 126) { |
| 477 | header = new Uint8Array(1); |
| 478 | new DataView(header.buffer).setUint8(0, payloadLength); |
| 479 | } else if (payloadLength < 65536) { |
| 480 | header = new Uint8Array(3); |
| 481 | var view = new DataView(header.buffer); |
| 482 | view.setUint8(0, 126); |
| 483 | view.setUint16(1, payloadLength); |
| 484 | } else { |
| 485 | header = new Uint8Array(9); |
| 486 | var _view = new DataView(header.buffer); |
| 487 | _view.setUint8(0, 127); |
| 488 | _view.setBigUint64(1, BigInt(payloadLength)); |
| 489 | } |
| 490 | // first bit indicates whether the payload is plain text (0) or binary (1) |
| 491 | if (packet.data && typeof packet.data !== "string") { |
| 492 | header[0] |= 0x80; |
| 493 | } |
| 494 | controller.enqueue(header); |
| 495 | controller.enqueue(encodedPacket); |
| 496 | }); |
| 497 | } |
| 498 | }); |
| 499 | } |
| 500 | var TEXT_DECODER; |
| 501 | function totalLength(chunks) { |
| 502 | return chunks.reduce(function (acc, chunk) { |
no test coverage detected