diff --git a/.changeset/ninety-turtles-taste.md b/.changeset/ninety-turtles-taste.md new file mode 100644 index 00000000..353bd895 --- /dev/null +++ b/.changeset/ninety-turtles-taste.md @@ -0,0 +1,5 @@ +--- +"partysocket": patch +--- + +fix(partysocket): avoid module-scope random default diff --git a/packages/partysocket/src/tests/module-scope.test.ts b/packages/partysocket/src/tests/module-scope.test.ts new file mode 100644 index 00000000..d565a34e --- /dev/null +++ b/packages/partysocket/src/tests/module-scope.test.ts @@ -0,0 +1,18 @@ +/** + * @vitest-environment node + */ + +import { afterEach, expect, test, vi } from "vitest"; + +afterEach(() => { + vi.restoreAllMocks(); +}); + +test("does not generate random values while importing the websocket module", async () => { + vi.resetModules(); + const random = vi.spyOn(Math, "random"); + + await import("../ws"); + + expect(random).not.toHaveBeenCalled(); +}); diff --git a/packages/partysocket/src/ws.ts b/packages/partysocket/src/ws.ts index fe57bd89..92111eaa 100644 --- a/packages/partysocket/src/ws.ts +++ b/packages/partysocket/src/ws.ts @@ -124,7 +124,7 @@ export type Options = { const DEFAULT = { maxReconnectionDelay: 10000, - minReconnectionDelay: 1000 + Math.random() * 4000, + minReconnectionDelay: 3000, minUptime: 5000, reconnectionDelayGrowFactor: 1.3, connectionTimeout: 4000,