MCPcopy
hub / github.com/socketio/socket.io / transform

Function transform

packages/engine.io-parser/lib/index.ts:51–77  ·  view source on GitHub ↗
(packet: Packet, controller)

Source from the content-addressed store, hash-verified

49export function createPacketEncoderStream(): any {
50 return new TransformStream({
51 transform(packet: Packet, controller) {
52 encodePacketToBinary(packet, (encodedPacket) => {
53 const payloadLength = encodedPacket.length;
54 let header;
55 // inspired by the WebSocket format: https://developer.mozilla.org/en-US/docs/Web/API/WebSockets_API/Writing_WebSocket_servers#decoding_payload_length
56 if (payloadLength < 126) {
57 header = new Uint8Array(1);
58 new DataView(header.buffer).setUint8(0, payloadLength);
59 } else if (payloadLength < 65536) {
60 header = new Uint8Array(3);
61 const view = new DataView(header.buffer);
62 view.setUint8(0, 126);
63 view.setUint16(1, payloadLength);
64 } else {
65 header = new Uint8Array(9);
66 const view = new DataView(header.buffer);
67 view.setUint8(0, 127);
68 view.setBigUint64(1, BigInt(payloadLength));
69 }
70 // first bit indicates whether the payload is plain text (0) or binary (1)
71 if (packet.data && typeof packet.data !== "string") {
72 header[0] |= 0x80;
73 }
74 controller.enqueue(header);
75 controller.enqueue(encodedPacket);
76 });
77 },
78 });
79}
80

Callers

nothing calls this directly

Calls 4

encodePacketToBinaryFunction · 0.90
decodePacketFunction · 0.90
totalLengthFunction · 0.70
concatChunksFunction · 0.70

Tested by

no test coverage detected