mirror of
https://github.com/socketio/socket.io.git
synced 2026-01-10 23:48:02 -05:00
chore: bump prettier to version 3
This change is necessary to be able to write "import type { ... }".
This commit is contained in:
2
.github/workflows/ci.yml
vendored
2
.github/workflows/ci.yml
vendored
@@ -17,7 +17,7 @@ jobs:
|
||||
strategy:
|
||||
matrix:
|
||||
node-version:
|
||||
- 10
|
||||
- 14
|
||||
- 20
|
||||
|
||||
steps:
|
||||
|
||||
@@ -8,7 +8,7 @@ PACKET_TYPES["upgrade"] = "5";
|
||||
PACKET_TYPES["noop"] = "6";
|
||||
|
||||
const PACKET_TYPES_REVERSE = Object.create(null);
|
||||
Object.keys(PACKET_TYPES).forEach(key => {
|
||||
Object.keys(PACKET_TYPES).forEach((key) => {
|
||||
PACKET_TYPES_REVERSE[PACKET_TYPES[key]] = key;
|
||||
});
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@ import {
|
||||
PACKET_TYPES_REVERSE,
|
||||
Packet,
|
||||
BinaryType,
|
||||
RawData
|
||||
RawData,
|
||||
} from "./commons.js";
|
||||
import { decode } from "./contrib/base64-arraybuffer.js";
|
||||
|
||||
@@ -11,19 +11,19 @@ const withNativeArrayBuffer = typeof ArrayBuffer === "function";
|
||||
|
||||
export const decodePacket = (
|
||||
encodedPacket: RawData,
|
||||
binaryType?: BinaryType
|
||||
binaryType?: BinaryType,
|
||||
): Packet => {
|
||||
if (typeof encodedPacket !== "string") {
|
||||
return {
|
||||
type: "message",
|
||||
data: mapBinary(encodedPacket, binaryType)
|
||||
data: mapBinary(encodedPacket, binaryType),
|
||||
};
|
||||
}
|
||||
const type = encodedPacket.charAt(0);
|
||||
if (type === "b") {
|
||||
return {
|
||||
type: "message",
|
||||
data: decodeBase64Packet(encodedPacket.substring(1), binaryType)
|
||||
data: decodeBase64Packet(encodedPacket.substring(1), binaryType),
|
||||
};
|
||||
}
|
||||
const packetType = PACKET_TYPES_REVERSE[type];
|
||||
@@ -33,10 +33,10 @@ export const decodePacket = (
|
||||
return encodedPacket.length > 1
|
||||
? {
|
||||
type: PACKET_TYPES_REVERSE[type],
|
||||
data: encodedPacket.substring(1)
|
||||
data: encodedPacket.substring(1),
|
||||
}
|
||||
: {
|
||||
type: PACKET_TYPES_REVERSE[type]
|
||||
type: PACKET_TYPES_REVERSE[type],
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
@@ -3,17 +3,17 @@ import {
|
||||
PACKET_TYPES_REVERSE,
|
||||
Packet,
|
||||
BinaryType,
|
||||
RawData
|
||||
RawData,
|
||||
} from "./commons.js";
|
||||
|
||||
export const decodePacket = (
|
||||
encodedPacket: RawData,
|
||||
binaryType?: BinaryType
|
||||
binaryType?: BinaryType,
|
||||
): Packet => {
|
||||
if (typeof encodedPacket !== "string") {
|
||||
return {
|
||||
type: "message",
|
||||
data: mapBinary(encodedPacket, binaryType)
|
||||
data: mapBinary(encodedPacket, binaryType),
|
||||
};
|
||||
}
|
||||
const type = encodedPacket.charAt(0);
|
||||
@@ -21,7 +21,7 @@ export const decodePacket = (
|
||||
const buffer = Buffer.from(encodedPacket.substring(1), "base64");
|
||||
return {
|
||||
type: "message",
|
||||
data: mapBinary(buffer, binaryType)
|
||||
data: mapBinary(buffer, binaryType),
|
||||
};
|
||||
}
|
||||
if (!PACKET_TYPES_REVERSE[type]) {
|
||||
@@ -30,10 +30,10 @@ export const decodePacket = (
|
||||
return encodedPacket.length > 1
|
||||
? {
|
||||
type: PACKET_TYPES_REVERSE[type],
|
||||
data: encodedPacket.substring(1)
|
||||
data: encodedPacket.substring(1),
|
||||
}
|
||||
: {
|
||||
type: PACKET_TYPES_REVERSE[type]
|
||||
type: PACKET_TYPES_REVERSE[type],
|
||||
};
|
||||
};
|
||||
|
||||
@@ -47,7 +47,7 @@ const mapBinary = (data: RawData, binaryType?: BinaryType) => {
|
||||
// from HTTP long-polling
|
||||
return data.buffer.slice(
|
||||
data.byteOffset,
|
||||
data.byteOffset + data.byteLength
|
||||
data.byteOffset + data.byteLength,
|
||||
);
|
||||
} else {
|
||||
// from WebTransport (Uint8Array)
|
||||
|
||||
@@ -7,7 +7,7 @@ const withNativeBlob =
|
||||
const withNativeArrayBuffer = typeof ArrayBuffer === "function";
|
||||
|
||||
// ArrayBuffer.isView method is not defined in IE10
|
||||
const isView = obj => {
|
||||
const isView = (obj) => {
|
||||
return typeof ArrayBuffer.isView === "function"
|
||||
? ArrayBuffer.isView(obj)
|
||||
: obj && obj.buffer instanceof ArrayBuffer;
|
||||
@@ -16,7 +16,7 @@ const isView = obj => {
|
||||
const encodePacket = (
|
||||
{ type, data }: Packet,
|
||||
supportsBinary: boolean,
|
||||
callback: (encodedPacket: RawData) => void
|
||||
callback: (encodedPacket: RawData) => void,
|
||||
) => {
|
||||
if (withNativeBlob && data instanceof Blob) {
|
||||
if (supportsBinary) {
|
||||
@@ -40,10 +40,10 @@ const encodePacket = (
|
||||
|
||||
const encodeBlobAsBase64 = (
|
||||
data: Blob,
|
||||
callback: (encodedPacket: RawData) => void
|
||||
callback: (encodedPacket: RawData) => void,
|
||||
) => {
|
||||
const fileReader = new FileReader();
|
||||
fileReader.onload = function() {
|
||||
fileReader.onload = function () {
|
||||
const content = (fileReader.result as string).split(",")[1];
|
||||
callback("b" + (content || ""));
|
||||
};
|
||||
@@ -64,20 +64,17 @@ let TEXT_ENCODER;
|
||||
|
||||
export function encodePacketToBinary(
|
||||
packet: Packet,
|
||||
callback: (encodedPacket: RawData) => void
|
||||
callback: (encodedPacket: RawData) => void,
|
||||
) {
|
||||
if (withNativeBlob && packet.data instanceof Blob) {
|
||||
return packet.data
|
||||
.arrayBuffer()
|
||||
.then(toArray)
|
||||
.then(callback);
|
||||
return packet.data.arrayBuffer().then(toArray).then(callback);
|
||||
} else if (
|
||||
withNativeArrayBuffer &&
|
||||
(packet.data instanceof ArrayBuffer || isView(packet.data))
|
||||
) {
|
||||
return callback(toArray(packet.data));
|
||||
}
|
||||
encodePacket(packet, false, encoded => {
|
||||
encodePacket(packet, false, (encoded) => {
|
||||
if (!TEXT_ENCODER) {
|
||||
TEXT_ENCODER = new TextEncoder();
|
||||
}
|
||||
|
||||
@@ -3,11 +3,11 @@ import { PACKET_TYPES, Packet, RawData } from "./commons.js";
|
||||
export const encodePacket = (
|
||||
{ type, data }: Packet,
|
||||
supportsBinary: boolean,
|
||||
callback: (encodedPacket: RawData) => void
|
||||
callback: (encodedPacket: RawData) => void,
|
||||
) => {
|
||||
if (data instanceof ArrayBuffer || ArrayBuffer.isView(data)) {
|
||||
return callback(
|
||||
supportsBinary ? data : "b" + toBuffer(data, true).toString("base64")
|
||||
supportsBinary ? data : "b" + toBuffer(data, true).toString("base64"),
|
||||
);
|
||||
}
|
||||
// plain string
|
||||
@@ -31,12 +31,12 @@ let TEXT_ENCODER;
|
||||
|
||||
export function encodePacketToBinary(
|
||||
packet: Packet,
|
||||
callback: (encodedPacket: RawData) => void
|
||||
callback: (encodedPacket: RawData) => void,
|
||||
) {
|
||||
if (packet.data instanceof ArrayBuffer || ArrayBuffer.isView(packet.data)) {
|
||||
return callback(toBuffer(packet.data, false));
|
||||
}
|
||||
encodePacket(packet, true, encoded => {
|
||||
encodePacket(packet, true, (encoded) => {
|
||||
if (!TEXT_ENCODER) {
|
||||
// lazily created for compatibility with Node.js 10
|
||||
TEXT_ENCODER = new TextEncoder();
|
||||
|
||||
28
lib/index.ts
28
lib/index.ts
@@ -5,14 +5,14 @@ import {
|
||||
PacketType,
|
||||
RawData,
|
||||
BinaryType,
|
||||
ERROR_PACKET
|
||||
ERROR_PACKET,
|
||||
} from "./commons.js";
|
||||
|
||||
const SEPARATOR = String.fromCharCode(30); // see https://en.wikipedia.org/wiki/Delimiter#ASCII_delimited_text
|
||||
|
||||
const encodePayload = (
|
||||
packets: Packet[],
|
||||
callback: (encodedPayload: string) => void
|
||||
callback: (encodedPayload: string) => void,
|
||||
) => {
|
||||
// some packets may be added to the array while encoding, so the initial length must be saved
|
||||
const length = packets.length;
|
||||
@@ -21,7 +21,7 @@ const encodePayload = (
|
||||
|
||||
packets.forEach((packet, i) => {
|
||||
// force base64 encoding for binary packets
|
||||
encodePacket(packet, false, encodedPacket => {
|
||||
encodePacket(packet, false, (encodedPacket) => {
|
||||
encodedPackets[i] = encodedPacket;
|
||||
if (++count === length) {
|
||||
callback(encodedPackets.join(SEPARATOR));
|
||||
@@ -32,7 +32,7 @@ const encodePayload = (
|
||||
|
||||
const decodePayload = (
|
||||
encodedPayload: string,
|
||||
binaryType?: BinaryType
|
||||
binaryType?: BinaryType,
|
||||
): Packet[] => {
|
||||
const encodedPackets = encodedPayload.split(SEPARATOR);
|
||||
const packets = [];
|
||||
@@ -49,7 +49,7 @@ const decodePayload = (
|
||||
export function createPacketEncoderStream() {
|
||||
return new TransformStream({
|
||||
transform(packet: Packet, controller) {
|
||||
encodePacketToBinary(packet, encodedPacket => {
|
||||
encodePacketToBinary(packet, (encodedPacket) => {
|
||||
const payloadLength = encodedPacket.length;
|
||||
let header;
|
||||
// inspired by the WebSocket format: https://developer.mozilla.org/en-US/docs/Web/API/WebSockets_API/Writing_WebSocket_servers#decoding_payload_length
|
||||
@@ -74,7 +74,7 @@ export function createPacketEncoderStream() {
|
||||
controller.enqueue(header);
|
||||
controller.enqueue(encodedPacket);
|
||||
});
|
||||
}
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
@@ -107,12 +107,12 @@ const enum State {
|
||||
READ_HEADER,
|
||||
READ_EXTENDED_LENGTH_16,
|
||||
READ_EXTENDED_LENGTH_64,
|
||||
READ_PAYLOAD
|
||||
READ_PAYLOAD,
|
||||
}
|
||||
|
||||
export function createPacketDecoderStream(
|
||||
maxPayload: number,
|
||||
binaryType: BinaryType
|
||||
binaryType: BinaryType,
|
||||
) {
|
||||
if (!TEXT_DECODER) {
|
||||
TEXT_DECODER = new TextDecoder();
|
||||
@@ -148,7 +148,7 @@ export function createPacketDecoderStream(
|
||||
expectedLength = new DataView(
|
||||
headerArray.buffer,
|
||||
headerArray.byteOffset,
|
||||
headerArray.length
|
||||
headerArray.length,
|
||||
).getUint16(0);
|
||||
state = State.READ_PAYLOAD;
|
||||
} else if (state === State.READ_EXTENDED_LENGTH_64) {
|
||||
@@ -160,7 +160,7 @@ export function createPacketDecoderStream(
|
||||
const view = new DataView(
|
||||
headerArray.buffer,
|
||||
headerArray.byteOffset,
|
||||
headerArray.length
|
||||
headerArray.length,
|
||||
);
|
||||
|
||||
const n = view.getUint32(0);
|
||||
@@ -181,8 +181,8 @@ export function createPacketDecoderStream(
|
||||
controller.enqueue(
|
||||
decodePacket(
|
||||
isBinary ? data : TEXT_DECODER.decode(data),
|
||||
binaryType
|
||||
)
|
||||
binaryType,
|
||||
),
|
||||
);
|
||||
state = State.READ_HEADER;
|
||||
}
|
||||
@@ -192,7 +192,7 @@ export function createPacketDecoderStream(
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
@@ -205,5 +205,5 @@ export {
|
||||
Packet,
|
||||
PacketType,
|
||||
RawData,
|
||||
BinaryType
|
||||
BinaryType,
|
||||
};
|
||||
|
||||
21
package-lock.json
generated
21
package-lock.json
generated
@@ -18,7 +18,7 @@
|
||||
"expect.js": "0.3.1",
|
||||
"mocha": "^5.2.0",
|
||||
"nyc": "~15.0.1",
|
||||
"prettier": "^1.19.1",
|
||||
"prettier": "^3.2.5",
|
||||
"rimraf": "^3.0.2",
|
||||
"socket.io-browsers": "^1.0.4",
|
||||
"ts-node": "^10.2.1",
|
||||
@@ -8141,15 +8141,18 @@
|
||||
}
|
||||
},
|
||||
"node_modules/prettier": {
|
||||
"version": "1.19.1",
|
||||
"resolved": "https://registry.npmjs.org/prettier/-/prettier-1.19.1.tgz",
|
||||
"integrity": "sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew==",
|
||||
"version": "3.2.5",
|
||||
"resolved": "https://registry.npmjs.org/prettier/-/prettier-3.2.5.tgz",
|
||||
"integrity": "sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A==",
|
||||
"dev": true,
|
||||
"bin": {
|
||||
"prettier": "bin-prettier.js"
|
||||
"prettier": "bin/prettier.cjs"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=4"
|
||||
"node": ">=14"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/prettier/prettier?sponsor=1"
|
||||
}
|
||||
},
|
||||
"node_modules/private": {
|
||||
@@ -18128,9 +18131,9 @@
|
||||
"dev": true
|
||||
},
|
||||
"prettier": {
|
||||
"version": "1.19.1",
|
||||
"resolved": "https://registry.npmjs.org/prettier/-/prettier-1.19.1.tgz",
|
||||
"integrity": "sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew==",
|
||||
"version": "3.2.5",
|
||||
"resolved": "https://registry.npmjs.org/prettier/-/prettier-3.2.5.tgz",
|
||||
"integrity": "sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A==",
|
||||
"dev": true
|
||||
},
|
||||
"private": {
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
"expect.js": "0.3.1",
|
||||
"mocha": "^5.2.0",
|
||||
"nyc": "~15.0.1",
|
||||
"prettier": "^1.19.1",
|
||||
"prettier": "^3.2.5",
|
||||
"rimraf": "^3.0.2",
|
||||
"socket.io-browsers": "^1.0.4",
|
||||
"ts-node": "^10.2.1",
|
||||
|
||||
@@ -5,7 +5,7 @@ import {
|
||||
encodePayload,
|
||||
createPacketEncoderStream,
|
||||
createPacketDecoderStream,
|
||||
Packet
|
||||
Packet,
|
||||
} from "..";
|
||||
import * as expect from "expect.js";
|
||||
import { areArraysEqual, createArrayBuffer } from "./util";
|
||||
@@ -15,12 +15,12 @@ const withNativeArrayBuffer = typeof ArrayBuffer === "function";
|
||||
describe("engine.io-parser (browser only)", () => {
|
||||
describe("single packet", () => {
|
||||
if (withNativeArrayBuffer) {
|
||||
it("should encode/decode an ArrayBuffer", done => {
|
||||
it("should encode/decode an ArrayBuffer", (done) => {
|
||||
const packet: Packet = {
|
||||
type: "message",
|
||||
data: createArrayBuffer([1, 2, 3, 4])
|
||||
data: createArrayBuffer([1, 2, 3, 4]),
|
||||
};
|
||||
encodePacket(packet, true, encodedPacket => {
|
||||
encodePacket(packet, true, (encodedPacket) => {
|
||||
expect(encodedPacket).to.be.an(ArrayBuffer);
|
||||
expect(areArraysEqual(encodedPacket, packet.data)).to.be(true);
|
||||
const decodedPacket = decodePacket(encodedPacket, "arraybuffer");
|
||||
@@ -30,12 +30,12 @@ describe("engine.io-parser (browser only)", () => {
|
||||
});
|
||||
});
|
||||
|
||||
it("should encode/decode an ArrayBuffer as base64", done => {
|
||||
it("should encode/decode an ArrayBuffer as base64", (done) => {
|
||||
const packet: Packet = {
|
||||
type: "message",
|
||||
data: createArrayBuffer([1, 2, 3, 4])
|
||||
data: createArrayBuffer([1, 2, 3, 4]),
|
||||
};
|
||||
encodePacket(packet, false, encodedPacket => {
|
||||
encodePacket(packet, false, (encodedPacket) => {
|
||||
expect(encodedPacket).to.eql("bAQIDBA==");
|
||||
const decodedPacket = decodePacket(encodedPacket, "arraybuffer");
|
||||
expect(decodedPacket.type).to.eql(packet.type);
|
||||
@@ -45,10 +45,10 @@ describe("engine.io-parser (browser only)", () => {
|
||||
});
|
||||
});
|
||||
|
||||
it("should encode a typed array", done => {
|
||||
it("should encode a typed array", (done) => {
|
||||
const buffer = createArrayBuffer([1, 2, 3, 4]);
|
||||
const data = new Int8Array(buffer, 1, 2);
|
||||
encodePacket({ type: "message", data }, true, encodedPacket => {
|
||||
encodePacket({ type: "message", data }, true, (encodedPacket) => {
|
||||
expect(encodedPacket).to.eql(data); // unmodified typed array
|
||||
done();
|
||||
});
|
||||
@@ -56,12 +56,12 @@ describe("engine.io-parser (browser only)", () => {
|
||||
}
|
||||
|
||||
if (typeof Blob === "function") {
|
||||
it("should encode/decode a Blob", done => {
|
||||
it("should encode/decode a Blob", (done) => {
|
||||
const packet: Packet = {
|
||||
type: "message",
|
||||
data: new Blob(["1234", createArrayBuffer([1, 2, 3, 4])])
|
||||
data: new Blob(["1234", createArrayBuffer([1, 2, 3, 4])]),
|
||||
};
|
||||
encodePacket(packet, true, encodedPacket => {
|
||||
encodePacket(packet, true, (encodedPacket) => {
|
||||
expect(encodedPacket).to.be.a(Blob);
|
||||
const decodedPacket = decodePacket(encodedPacket, "blob");
|
||||
expect(decodedPacket.type).to.eql("message");
|
||||
@@ -70,12 +70,12 @@ describe("engine.io-parser (browser only)", () => {
|
||||
});
|
||||
});
|
||||
|
||||
it("should encode/decode a Blob as base64", done => {
|
||||
it("should encode/decode a Blob as base64", (done) => {
|
||||
const packet: Packet = {
|
||||
type: "message",
|
||||
data: new Blob(["1234", createArrayBuffer([1, 2, 3, 4])])
|
||||
data: new Blob(["1234", createArrayBuffer([1, 2, 3, 4])]),
|
||||
};
|
||||
encodePacket(packet, false, encodedPacket => {
|
||||
encodePacket(packet, false, (encodedPacket) => {
|
||||
expect(encodedPacket).to.eql("bMTIzNAECAwQ=");
|
||||
const decodedPacket = decodePacket(encodedPacket, "blob");
|
||||
expect(decodedPacket.type).to.eql("message");
|
||||
@@ -88,24 +88,24 @@ describe("engine.io-parser (browser only)", () => {
|
||||
|
||||
describe("payload", () => {
|
||||
if (withNativeArrayBuffer) {
|
||||
it("should encode/decode a string + ArrayBuffer payload", done => {
|
||||
it("should encode/decode a string + ArrayBuffer payload", (done) => {
|
||||
const packets: Packet[] = [
|
||||
{ type: "message", data: "test" },
|
||||
{ type: "message", data: createArrayBuffer([1, 2, 3, 4]) }
|
||||
{ type: "message", data: createArrayBuffer([1, 2, 3, 4]) },
|
||||
];
|
||||
encodePayload(packets, payload => {
|
||||
encodePayload(packets, (payload) => {
|
||||
expect(payload).to.eql("4test\x1ebAQIDBA==");
|
||||
expect(decodePayload(payload, "arraybuffer")).to.eql(packets);
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
it("should encode/decode a string + a 0-length ArrayBuffer payload", done => {
|
||||
it("should encode/decode a string + a 0-length ArrayBuffer payload", (done) => {
|
||||
const packets: Packet[] = [
|
||||
{ type: "message", data: "test" },
|
||||
{ type: "message", data: createArrayBuffer([]) }
|
||||
{ type: "message", data: createArrayBuffer([]) },
|
||||
];
|
||||
encodePayload(packets, payload => {
|
||||
encodePayload(packets, (payload) => {
|
||||
expect(payload).to.eql("4test\x1eb");
|
||||
expect(decodePayload(payload, "arraybuffer")).to.eql(packets);
|
||||
done();
|
||||
@@ -124,7 +124,7 @@ describe("engine.io-parser (browser only)", () => {
|
||||
|
||||
writer.write({
|
||||
type: "message",
|
||||
data: new Blob([Uint8Array.from([1, 2, 3])])
|
||||
data: new Blob([Uint8Array.from([1, 2, 3])]),
|
||||
});
|
||||
|
||||
const header = await reader.read();
|
||||
|
||||
@@ -5,7 +5,7 @@ import {
|
||||
decodePayload,
|
||||
encodePacket,
|
||||
encodePayload,
|
||||
Packet
|
||||
Packet,
|
||||
} from "..";
|
||||
import * as expect from "expect.js";
|
||||
import { areArraysEqual } from "./util";
|
||||
@@ -14,9 +14,9 @@ import "./node"; // replaced by "./browser" for the tests in the browser (see "b
|
||||
|
||||
describe("engine.io-parser", () => {
|
||||
describe("single packet", () => {
|
||||
it("should encode/decode a string", done => {
|
||||
it("should encode/decode a string", (done) => {
|
||||
const packet: Packet = { type: "message", data: "test" };
|
||||
encodePacket(packet, true, encodedPacket => {
|
||||
encodePacket(packet, true, (encodedPacket) => {
|
||||
expect(encodedPacket).to.eql("4test");
|
||||
expect(decodePacket(encodedPacket)).to.eql(packet);
|
||||
done();
|
||||
@@ -26,25 +26,25 @@ describe("engine.io-parser", () => {
|
||||
it("should fail to decode a malformed packet", () => {
|
||||
expect(decodePacket("")).to.eql({
|
||||
type: "error",
|
||||
data: "parser error"
|
||||
data: "parser error",
|
||||
});
|
||||
expect(decodePacket("a123")).to.eql({
|
||||
type: "error",
|
||||
data: "parser error"
|
||||
data: "parser error",
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
describe("payload", () => {
|
||||
it("should encode/decode all packet types", done => {
|
||||
it("should encode/decode all packet types", (done) => {
|
||||
const packets: Packet[] = [
|
||||
{ type: "open" },
|
||||
{ type: "close" },
|
||||
{ type: "ping", data: "probe" },
|
||||
{ type: "pong", data: "probe" },
|
||||
{ type: "message", data: "test" }
|
||||
{ type: "message", data: "test" },
|
||||
];
|
||||
encodePayload(packets, payload => {
|
||||
encodePayload(packets, (payload) => {
|
||||
expect(payload).to.eql("0\x1e1\x1e2probe\x1e3probe\x1e4test");
|
||||
expect(decodePayload(payload)).to.eql(packets);
|
||||
done();
|
||||
@@ -53,13 +53,13 @@ describe("engine.io-parser", () => {
|
||||
|
||||
it("should fail to decode a malformed payload", () => {
|
||||
expect(decodePayload("{")).to.eql([
|
||||
{ type: "error", data: "parser error" }
|
||||
{ type: "error", data: "parser error" },
|
||||
]);
|
||||
expect(decodePayload("{}")).to.eql([
|
||||
{ type: "error", data: "parser error" }
|
||||
{ type: "error", data: "parser error" },
|
||||
]);
|
||||
expect(decodePayload('["a123", "a456"]')).to.eql([
|
||||
{ type: "error", data: "parser error" }
|
||||
{ type: "error", data: "parser error" },
|
||||
]);
|
||||
});
|
||||
});
|
||||
@@ -75,7 +75,7 @@ describe("engine.io-parser", () => {
|
||||
|
||||
writer.write({
|
||||
type: "message",
|
||||
data: "1€"
|
||||
data: "1€",
|
||||
});
|
||||
|
||||
const header = await reader.read();
|
||||
@@ -95,7 +95,7 @@ describe("engine.io-parser", () => {
|
||||
|
||||
writer.write({
|
||||
type: "message",
|
||||
data
|
||||
data,
|
||||
});
|
||||
|
||||
const header = await reader.read();
|
||||
@@ -113,7 +113,7 @@ describe("engine.io-parser", () => {
|
||||
|
||||
writer.write({
|
||||
type: "message",
|
||||
data: Uint8Array.of(1, 2, 3).buffer
|
||||
data: Uint8Array.of(1, 2, 3).buffer,
|
||||
});
|
||||
|
||||
const header = await reader.read();
|
||||
@@ -131,7 +131,7 @@ describe("engine.io-parser", () => {
|
||||
|
||||
writer.write({
|
||||
type: "message",
|
||||
data: Uint16Array.from([1, 2, 257])
|
||||
data: Uint16Array.from([1, 2, 257]),
|
||||
});
|
||||
|
||||
const header = await reader.read();
|
||||
@@ -151,7 +151,7 @@ describe("engine.io-parser", () => {
|
||||
|
||||
writer.write({
|
||||
type: "message",
|
||||
data
|
||||
data,
|
||||
});
|
||||
|
||||
const header = await reader.read();
|
||||
@@ -171,12 +171,12 @@ describe("engine.io-parser", () => {
|
||||
|
||||
writer.write({
|
||||
type: "message",
|
||||
data
|
||||
data,
|
||||
});
|
||||
|
||||
const header = await reader.read();
|
||||
expect(header.value).to.eql(
|
||||
Uint8Array.of(255, 0, 0, 0, 0, 7, 91, 205, 21)
|
||||
Uint8Array.of(255, 0, 0, 0, 0, 7, 91, 205, 21),
|
||||
);
|
||||
|
||||
const payload = await reader.read();
|
||||
@@ -197,7 +197,7 @@ describe("engine.io-parser", () => {
|
||||
const packet = await reader.read();
|
||||
expect(packet.value).to.eql({
|
||||
type: "message",
|
||||
data: "1€"
|
||||
data: "1€",
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
46
test/node.ts
46
test/node.ts
@@ -5,43 +5,43 @@ import {
|
||||
encodePayload,
|
||||
Packet,
|
||||
createPacketDecoderStream,
|
||||
createPacketEncoderStream
|
||||
createPacketEncoderStream,
|
||||
} from "..";
|
||||
import * as expect from "expect.js";
|
||||
import { areArraysEqual } from "./util";
|
||||
|
||||
describe("engine.io-parser (node.js only)", () => {
|
||||
describe("single packet", () => {
|
||||
it("should encode/decode a Buffer", done => {
|
||||
it("should encode/decode a Buffer", (done) => {
|
||||
const packet: Packet = {
|
||||
type: "message",
|
||||
data: Buffer.from([1, 2, 3, 4])
|
||||
data: Buffer.from([1, 2, 3, 4]),
|
||||
};
|
||||
encodePacket(packet, true, encodedPacket => {
|
||||
encodePacket(packet, true, (encodedPacket) => {
|
||||
expect(encodedPacket).to.eql(packet.data); // noop
|
||||
expect(decodePacket(encodedPacket)).to.eql(packet);
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
it("should encode/decode a Buffer as base64", done => {
|
||||
it("should encode/decode a Buffer as base64", (done) => {
|
||||
const packet: Packet = {
|
||||
type: "message",
|
||||
data: Buffer.from([1, 2, 3, 4])
|
||||
data: Buffer.from([1, 2, 3, 4]),
|
||||
};
|
||||
encodePacket(packet, false, encodedPacket => {
|
||||
encodePacket(packet, false, (encodedPacket) => {
|
||||
expect(encodedPacket).to.eql("bAQIDBA==");
|
||||
expect(decodePacket(encodedPacket, "nodebuffer")).to.eql(packet);
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
it("should encode/decode an ArrayBuffer", done => {
|
||||
it("should encode/decode an ArrayBuffer", (done) => {
|
||||
const packet: Packet = {
|
||||
type: "message",
|
||||
data: Int8Array.from([1, 2, 3, 4]).buffer
|
||||
data: Int8Array.from([1, 2, 3, 4]).buffer,
|
||||
};
|
||||
encodePacket(packet, true, encodedPacket => {
|
||||
encodePacket(packet, true, (encodedPacket) => {
|
||||
expect(encodedPacket === packet.data).to.be(true);
|
||||
const decodedPacket = decodePacket(encodedPacket, "arraybuffer");
|
||||
expect(decodedPacket.type).to.eql(packet.type);
|
||||
@@ -51,12 +51,12 @@ describe("engine.io-parser (node.js only)", () => {
|
||||
});
|
||||
});
|
||||
|
||||
it("should encode/decode an ArrayBuffer as base64", done => {
|
||||
it("should encode/decode an ArrayBuffer as base64", (done) => {
|
||||
const packet: Packet = {
|
||||
type: "message",
|
||||
data: Int8Array.from([1, 2, 3, 4]).buffer
|
||||
data: Int8Array.from([1, 2, 3, 4]).buffer,
|
||||
};
|
||||
encodePacket(packet, false, encodedPacket => {
|
||||
encodePacket(packet, false, (encodedPacket) => {
|
||||
expect(encodedPacket).to.eql("bAQIDBA==");
|
||||
const decodedPacket = decodePacket(encodedPacket, "arraybuffer");
|
||||
expect(decodedPacket.type).to.eql(packet.type);
|
||||
@@ -66,21 +66,21 @@ describe("engine.io-parser (node.js only)", () => {
|
||||
});
|
||||
});
|
||||
|
||||
it("should encode a typed array", done => {
|
||||
it("should encode a typed array", (done) => {
|
||||
const packet: Packet = {
|
||||
type: "message",
|
||||
data: Int16Array.from([257, 258, 259, 260])
|
||||
data: Int16Array.from([257, 258, 259, 260]),
|
||||
};
|
||||
encodePacket(packet, true, encodedPacket => {
|
||||
encodePacket(packet, true, (encodedPacket) => {
|
||||
expect(encodedPacket === packet.data).to.be(true);
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
it("should encode a typed array (with offset and length)", done => {
|
||||
it("should encode a typed array (with offset and length)", (done) => {
|
||||
const buffer = Int8Array.from([1, 2, 3, 4]).buffer;
|
||||
const data = new Int8Array(buffer, 1, 2);
|
||||
encodePacket({ type: "message", data }, true, encodedPacket => {
|
||||
encodePacket({ type: "message", data }, true, (encodedPacket) => {
|
||||
expect(encodedPacket).to.eql(Buffer.from([2, 3]));
|
||||
done();
|
||||
});
|
||||
@@ -96,12 +96,12 @@ describe("engine.io-parser (node.js only)", () => {
|
||||
});
|
||||
|
||||
describe("payload", () => {
|
||||
it("should encode/decode a string + Buffer payload", done => {
|
||||
it("should encode/decode a string + Buffer payload", (done) => {
|
||||
const packets: Packet[] = [
|
||||
{ type: "message", data: "test" },
|
||||
{ type: "message", data: Buffer.from([1, 2, 3, 4]) }
|
||||
{ type: "message", data: Buffer.from([1, 2, 3, 4]) },
|
||||
];
|
||||
encodePayload(packets, payload => {
|
||||
encodePayload(packets, (payload) => {
|
||||
expect(payload).to.eql("4test\x1ebAQIDBA==");
|
||||
expect(decodePayload(payload, "nodebuffer")).to.eql(packets);
|
||||
done();
|
||||
@@ -109,7 +109,7 @@ describe("engine.io-parser (node.js only)", () => {
|
||||
});
|
||||
});
|
||||
|
||||
if (typeof TextEncoder === "function") {
|
||||
if (typeof TransformStream === "function") {
|
||||
describe("createPacketEncoderStream", () => {
|
||||
it("should encode a binary packet (Buffer)", async () => {
|
||||
const stream = createPacketEncoderStream();
|
||||
@@ -119,7 +119,7 @@ describe("engine.io-parser (node.js only)", () => {
|
||||
|
||||
writer.write({
|
||||
type: "message",
|
||||
data: Buffer.of(1, 2, 3)
|
||||
data: Buffer.of(1, 2, 3),
|
||||
});
|
||||
|
||||
const header = await reader.read();
|
||||
|
||||
@@ -8,7 +8,7 @@ const areArraysEqual = (x, y) => {
|
||||
return true;
|
||||
};
|
||||
|
||||
const createArrayBuffer = array => {
|
||||
const createArrayBuffer = (array) => {
|
||||
// Uint8Array.from() is not defined in IE 10/11
|
||||
const arrayBuffer = new ArrayBuffer(array.length);
|
||||
const view = new Uint8Array(arrayBuffer);
|
||||
|
||||
Reference in New Issue
Block a user