Skip to content

Commit ae7fb46

Browse files
fix(eio): restore compatibility with Node.js 10
`Object.fromEntries()` was added in [1] (engine.io@6.6.5, Dec 2025). [1]: e08293b Related: #5527
1 parent 91dd763 commit ae7fb46

2 files changed

Lines changed: 17 additions & 1 deletion

File tree

packages/engine.io/lib/server.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import { WebTransport } from "./transports/webtransport";
2121
import { createPacketDecoderStream } from "engine.io-parser";
2222
import type { EngineRequest, Transport } from "./transport";
2323
import type { CookieSerializeOptions } from "./contrib/types.cookie";
24+
import { objectFromEntries } from "./utils/objectFromEntries";
2425

2526
const debug = debugModule("engine");
2627

@@ -763,7 +764,7 @@ export class Server extends BaseServer {
763764
// try to leverage pre-existing `req._query` (e.g: from connect)
764765
if (!req._query) {
765766
const url = new URL(req.url, "https://socket.io");
766-
req._query = Object.fromEntries(url.searchParams.entries());
767+
req._query = objectFromEntries(url.searchParams.entries());
767768
}
768769
}
769770

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
// polyfill for Node.js < 12
2+
// reference: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/fromEntries
3+
export const objectFromEntries =
4+
Object.fromEntries ||
5+
function fromEntries<T = unknown>(
6+
entries: Iterable<readonly [PropertyKey, T]>,
7+
): Record<PropertyKey, T> {
8+
const obj: Record<PropertyKey, T> = {};
9+
10+
for (const [key, value] of entries) {
11+
obj[key] = value;
12+
}
13+
14+
return obj;
15+
};

0 commit comments

Comments
 (0)