From 1c220ddbf45ea4b44bc8dbf6f9ae245f672ba1b9 Mon Sep 17 00:00:00 2001 From: Damien Arrachequesne Date: Fri, 15 Jan 2021 01:38:03 +0100 Subject: [PATCH] fix: allow integers as event names This commit restores the possibility to use integers as event names, which was possible in Socket.IO v2. --- lib/index.ts | 2 +- test/parser.js | 11 +++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/lib/index.ts b/lib/index.ts index 587dd54..636df23 100644 --- a/lib/index.ts +++ b/lib/index.ts @@ -245,7 +245,7 @@ export class Decoder extends Emitter { return typeof payload === "string" || typeof payload === "object"; case PacketType.EVENT: case PacketType.BINARY_EVENT: - return Array.isArray(payload) && typeof payload[0] === "string"; + return Array.isArray(payload) && payload.length > 0; case PacketType.ACK: case PacketType.BINARY_ACK: return Array.isArray(payload); diff --git a/test/parser.js b/test/parser.js index 0554d93..426e77c 100644 --- a/test/parser.js +++ b/test/parser.js @@ -47,6 +47,17 @@ describe("parser", () => { ); }); + it("encodes an event (with an integer as event name)", (done) => { + helpers.test( + { + type: PacketType.EVENT, + data: [1, "a", {}], + nsp: "/", + }, + done + ); + }); + it("encodes an event (with ack)", (done) => { helpers.test( {