@edryslabs/genericprovider 1.0.4 → 1.5.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (64) hide show
  1. package/README.md +129 -5
  2. package/dist/index.d.ts +903 -60
  3. package/dist/index.d.ts.map +1 -1
  4. package/dist/index.js +2723 -428
  5. package/dist/index.js.map +1 -1
  6. package/dist/lib.d.ts +1 -0
  7. package/dist/lib.d.ts.map +1 -1
  8. package/dist/lib.js +3 -0
  9. package/dist/lib.js.map +1 -1
  10. package/dist/providers/ably/index.d.ts +203 -0
  11. package/dist/providers/ably/index.d.ts.map +1 -0
  12. package/dist/providers/ably/index.js +561 -0
  13. package/dist/providers/ably/index.js.map +1 -0
  14. package/dist/providers/chunking.d.ts +26 -0
  15. package/dist/providers/chunking.d.ts.map +1 -0
  16. package/dist/providers/chunking.js +52 -0
  17. package/dist/providers/chunking.js.map +1 -0
  18. package/dist/providers/dummy/index.d.ts +138 -2
  19. package/dist/providers/dummy/index.d.ts.map +1 -1
  20. package/dist/providers/dummy/index.js +266 -4
  21. package/dist/providers/dummy/index.js.map +1 -1
  22. package/dist/providers/gun/index.d.ts +11 -4
  23. package/dist/providers/gun/index.d.ts.map +1 -1
  24. package/dist/providers/gun/index.js +104 -22
  25. package/dist/providers/gun/index.js.map +1 -1
  26. package/dist/providers/indexeddb/index.d.ts +44 -20
  27. package/dist/providers/indexeddb/index.d.ts.map +1 -1
  28. package/dist/providers/indexeddb/index.js +85 -71
  29. package/dist/providers/indexeddb/index.js.map +1 -1
  30. package/dist/providers/matrix/index.d.ts +6 -1
  31. package/dist/providers/matrix/index.d.ts.map +1 -1
  32. package/dist/providers/matrix/index.js +44 -6
  33. package/dist/providers/matrix/index.js.map +1 -1
  34. package/dist/providers/nostr/index.d.ts +69 -5
  35. package/dist/providers/nostr/index.d.ts.map +1 -1
  36. package/dist/providers/nostr/index.js +204 -36
  37. package/dist/providers/nostr/index.js.map +1 -1
  38. package/dist/providers/peerjs/index.d.ts +11 -1
  39. package/dist/providers/peerjs/index.d.ts.map +1 -1
  40. package/dist/providers/peerjs/index.js +32 -2
  41. package/dist/providers/peerjs/index.js.map +1 -1
  42. package/dist/providers/pubnub/index.d.ts +35 -1
  43. package/dist/providers/pubnub/index.d.ts.map +1 -1
  44. package/dist/providers/pubnub/index.js +56 -35
  45. package/dist/providers/pubnub/index.js.map +1 -1
  46. package/dist/providers/simple-peer/index.d.ts +10 -15
  47. package/dist/providers/simple-peer/index.d.ts.map +1 -1
  48. package/dist/providers/simple-peer/index.js +81 -109
  49. package/dist/providers/simple-peer/index.js.map +1 -1
  50. package/dist/providers/supabase/index.d.ts +43 -1
  51. package/dist/providers/supabase/index.d.ts.map +1 -1
  52. package/dist/providers/supabase/index.js +211 -18
  53. package/dist/providers/supabase/index.js.map +1 -1
  54. package/dist/providers/trystero/index.d.ts +19 -1
  55. package/dist/providers/trystero/index.d.ts.map +1 -1
  56. package/dist/providers/trystero/index.js +37 -2
  57. package/dist/providers/trystero/index.js.map +1 -1
  58. package/dist/providers/websocket/index.d.ts +9 -1
  59. package/dist/providers/websocket/index.d.ts.map +1 -1
  60. package/dist/providers/websocket/index.js +7 -1
  61. package/dist/providers/websocket/index.js.map +1 -1
  62. package/dist/transport.d.ts +69 -16
  63. package/dist/transport.d.ts.map +1 -1
  64. package/package.json +35 -24
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chunking.js","sourceRoot":"","sources":["../../src/providers/chunking.ts"],"names":[],"mappings":"AAeA,MAAM,UAAU,OAAO,CAAC,CAAU;IAChC,OAAO,CACL,OAAO,CAAC,KAAK,QAAQ;QACrB,CAAC,KAAK,IAAI;QACT,CAAW,CAAC,OAAO,KAAK,IAAI;QAC7B,OAAQ,CAAW,CAAC,EAAE,KAAK,QAAQ;QACnC,OAAQ,CAAW,CAAC,IAAI,KAAK,QAAQ,CACtC,CAAA;AACH,CAAC;AAED,8EAA8E;AAC9E,MAAM,UAAU,WAAW,CAAC,IAAY,EAAE,QAAgB;IACxD,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAA;IACxE,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAA;IAC5D,MAAM,MAAM,GAAY,EAAE,CAAA;IAC1B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;QAC/B,MAAM,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,QAAQ,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAA;IACzG,CAAC;IACD,OAAO,MAAM,CAAA;AACf,CAAC;AAED,0EAA0E;AAC1E,MAAM,OAAO,cAAc;IAEzB,YAA6B,aAAa,EAAE;QAAf,eAAU,GAAV,UAAU,CAAK;QADpC,YAAO,GAAG,IAAI,GAAG,EAA+B,CAAA;IACT,CAAC;IAEhD,IAAI,CAAC,KAAY;QACf,IAAI,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;QACtC,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,gEAAgE;YAChE,wDAAwD;YACxD,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;gBACzC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,KAAe,CAAC,CAAA;YACjE,CAAC;YACD,KAAK,GAAG,IAAI,GAAG,EAAE,CAAA;YACjB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,CAAA;QACnC,CAAC;QACD,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,CAAA;QAClC,IAAI,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,KAAK;YAAE,OAAO,IAAI,CAAA;QACzC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;QAC7B,IAAI,GAAG,GAAG,EAAE,CAAA;QACZ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;YACrC,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;YACzB,IAAI,IAAI,KAAK,SAAS;gBAAE,OAAO,IAAI,CAAA;YACnC,GAAG,IAAI,IAAI,CAAA;QACb,CAAC;QACD,OAAO,GAAG,CAAA;IACZ,CAAC;IAED,KAAK;QACH,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAA;IACtB,CAAC;CACF"}
@@ -54,11 +54,38 @@ export declare class DummyHub {
54
54
  /**
55
55
  * Register a transport in a room.
56
56
  */
57
- join(room: string, transport: DummyTransport, callback: (data: Uint8Array) => void): void;
57
+ join(room: string, transport: DummyTransport, callback: (data: Uint8Array, from?: string) => void): void;
58
58
  /**
59
59
  * Unregister a transport from a room.
60
60
  */
61
61
  leave(room: string, transport: DummyTransport): void;
62
+ private peerConnectSubs;
63
+ private peerDisconnectSubs;
64
+ /** Register a transport's onPeerDisconnect callback (see notifyLeave). */
65
+ registerPeerDisconnect(room: string, transport: DummyTransport, callback: (peerId: string) => void): void;
66
+ unregisterPeerDisconnect(room: string, transport: DummyTransport): void;
67
+ /**
68
+ * Simulate the leave notification a mesh transport's channel close (or a
69
+ * presence service) gives every other peer: called by DummyTransport
70
+ * when it leaves a room with `simulatePeerConnect` on.
71
+ */
72
+ notifyLeave(room: string, transport: DummyTransport): void;
73
+ /**
74
+ * Register a transport's onPeerConnect callback and simulate the
75
+ * peer-discovery notifications a real mesh transport (peerjs,
76
+ * simple-peer) would fire: every OTHER already-registered transport in
77
+ * the room is notified about this new one, and this new transport is
78
+ * notified about every other one already registered - mirrors each side
79
+ * of a newly-opened data channel firing its own onPeerConnect. Test-only
80
+ * simulation: DummyTransport has no real peer-to-peer channels, this
81
+ * exists purely so GenericProvider's onPeerConnect handling (mesh-join
82
+ * burst coalescing) is exercisable via DummyTransport in benchmarks.
83
+ */
84
+ registerPeerConnect(room: string, transport: DummyTransport, callback: (peerId: string) => void): void;
85
+ /**
86
+ * Unregister a transport's onPeerConnect subscription from a room.
87
+ */
88
+ unregisterPeerConnect(room: string, transport: DummyTransport): void;
62
89
  /**
63
90
  * Broadcast a message to all clients in a room except the sender.
64
91
  */
@@ -67,6 +94,17 @@ export declare class DummyHub {
67
94
  dropRate?: number;
68
95
  jitter?: number;
69
96
  }): void;
97
+ /**
98
+ * Deliver a message to ONE client in a room (Transport.sendTo), with the
99
+ * same latency/jitter/drop model as broadcast(). Silently does nothing if
100
+ * the target has left. Used only by transports created with
101
+ * `unicast: true`.
102
+ */
103
+ unicast(room: string, targetId: string, data: Uint8Array, sender: DummyTransport, options?: {
104
+ latency?: number;
105
+ dropRate?: number;
106
+ jitter?: number;
107
+ }): void;
70
108
  /**
71
109
  * Get the number of clients connected to a room.
72
110
  */
@@ -124,18 +162,100 @@ export interface DummyTransportOptions {
124
162
  * @default false
125
163
  */
126
164
  autoConnect?: boolean;
165
+ /**
166
+ * Simulate onPeerConnect notifications (mesh-style peer-discovery, as a
167
+ * real peerjs/simple-peer/trystero transport would fire). DummyTransport
168
+ * otherwise models a broadcast relay (like websocket/pubnub/gun/matrix,
169
+ * none of which implement onPeerConnect) - off by default so plain
170
+ * multi-peer benchmarks/usage aren't silently shifted onto the mesh code
171
+ * path in GenericProvider.connect(). Enable only when a test specifically
172
+ * wants to exercise onPeerConnect-triggered behavior (e.g.
173
+ * test/dummy/bench-mesh-join-burst.ts).
174
+ * @default false
175
+ */
176
+ simulatePeerConnect?: boolean;
177
+ /**
178
+ * Model a transport that can address a single peer (Transport.sendTo,
179
+ * like peerjs/simple-peer/trystero): `sendTo` is present and delivers to
180
+ * one client via DummyHub.unicast(), and every delivery carries the
181
+ * sender's transport id as `from`. Off by default so plain benchmarks
182
+ * keep modelling a broadcast relay (websocket/pubnub/gun/matrix/...),
183
+ * on which GenericProvider's unicast paths never engage.
184
+ * @default false
185
+ */
186
+ unicast?: boolean;
187
+ /**
188
+ * Simulate a chunking transport's hard per-message size limit (bytes),
189
+ * mirroring how PubNub (`src/providers/pubnub/index.ts`, ~30KB) and Ably
190
+ * (`src/providers/ably/index.ts`) split any `send()` payload larger than
191
+ * their wire limit into multiple messages, reassembled on the receiving
192
+ * side. DummyTransport otherwise has no size limit at all, so this
193
+ * scenario (a large sync payload silently becoming N wire messages) is
194
+ * completely unbenchmarkable without it - see
195
+ * docs/superpowers/specs/2026-09-04-sync-optimization-round-3-ideas.md
196
+ * item 1. Off by default (`undefined`) so every existing bench script's
197
+ * message counts are unaffected.
198
+ *
199
+ * When set, EVERY `send()` call is wrapped in a small chunk header
200
+ * (chunk id + index + total), even payloads that fit in a single chunk -
201
+ * this keeps the wire format unambiguous instead of guessing whether an
202
+ * incoming message is chunked. Both sides of a room must set this
203
+ * consistently (this is a same-process test simulation, not a real
204
+ * negotiated protocol).
205
+ * @default undefined (no chunking)
206
+ */
207
+ chunkSizeLimit?: number;
127
208
  }
128
209
  /**
129
210
  * Dummy transport implementation for testing and development.
130
211
  * Routes messages through a DummyHub instance.
131
212
  */
132
213
  export declare class DummyTransport implements Transport {
214
+ private static _idCounter;
215
+ /**
216
+ * Transport.expectedRttMs: a simulated transport that knows its latency
217
+ * class - twice the configured one-way latency, or undefined when no
218
+ * latency is simulated (matching push transports that leave it unset).
219
+ */
220
+ get expectedRttMs(): number | undefined;
221
+ /** Unique id for this transport instance, used by the onPeerConnect simulation. */
222
+ readonly id: string;
133
223
  private hub?;
134
224
  private explicitHub;
135
225
  private options;
136
226
  private _connected;
137
227
  private _room;
138
228
  private _callback?;
229
+ /**
230
+ * Transport.sendTo - present only when `unicast` is on (feature-detected
231
+ * by GenericProvider via `typeof transport.sendTo === 'function'`, so it
232
+ * must be genuinely absent otherwise, same pattern as onPeerConnect).
233
+ */
234
+ readonly sendTo?: (peerId: string, data: Uint8Array) => void;
235
+ private _peerConnectCallback?;
236
+ private _peerDisconnectCallback?;
237
+ /** Reassembly buffers for chunkSizeLimit mode, keyed by chunk id. */
238
+ private _chunkBuffers;
239
+ /**
240
+ * Register callback for peer-connect notifications. Test-only simulation
241
+ * of what a real mesh transport (peerjs, simple-peer) does when a new
242
+ * data channel opens - see DummyHub.registerPeerConnect(). Assigned
243
+ * conditionally in the constructor (NOT a class method - see there for
244
+ * why): present only when `simulatePeerConnect` is on, so this property
245
+ * is genuinely absent (`undefined`), not merely a no-op function, on a
246
+ * plain DummyTransport. GenericProvider feature-detects onPeerConnect via
247
+ * `if (this.transport.onPeerConnect)` (matching the optional method on
248
+ * the `Transport` interface) - a class method satisfying that interface
249
+ * is ALWAYS present on every instance regardless of any constructor
250
+ * option, which previously defeated this feature-detection for every
251
+ * DummyTransport consumer (even non-mesh ones), silently registering an
252
+ * inert onPeerConnect subscription and, since GenericProvider gained
253
+ * onPeerConnect-conditional behavior elsewhere in its periodic-sync path,
254
+ * silently suppressing periodic awareness re-announce for plain
255
+ * DummyTransport usage too - a real bug, not just untidiness.
256
+ */
257
+ readonly onPeerDisconnect?: (callback: (peerId: string) => void) => () => void;
258
+ readonly onPeerConnect?: (callback: (peerId: string) => void) => () => void;
139
259
  /**
140
260
  * Create a new DummyTransport.
141
261
  *
@@ -172,10 +292,26 @@ export declare class DummyTransport implements Transport {
172
292
  * Send data to all other clients in the room.
173
293
  */
174
294
  send(data: Uint8Array): void;
295
+ /**
296
+ * Split `data` into one or more hub-delivered chunks, each carrying a
297
+ * small [chunkId][index][total] header - mirrors (in spirit, not byte
298
+ * format) how PubNub/Ably split an oversized payload into multiple wire
299
+ * messages. Always chunks (even a payload that fits in one chunk, as a
300
+ * single total=1 "chunk") so the receiving side's framing is unambiguous
301
+ * regardless of payload size - see chunkSizeLimit's doc comment.
302
+ */
303
+ private _sendChunked;
304
+ /**
305
+ * Reassemble a chunked message. Returns the complete payload once every
306
+ * chunk for its chunkId has arrived, or `undefined` while still waiting
307
+ * on more chunks (including the single-chunk total=1 case reassembling
308
+ * immediately).
309
+ */
310
+ private _reassembleChunk;
175
311
  /**
176
312
  * Register callback for incoming messages.
177
313
  */
178
- onMessage(callback: (data: Uint8Array) => void): () => void;
314
+ onMessage(callback: (data: Uint8Array, from?: string) => void): () => void;
179
315
  /**
180
316
  * Check if connected.
181
317
  */
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/dummy/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AAElE;;;GAGG;AACH,qBAAa,QAAQ;IACnB,OAAO,CAAC,KAAK,CAMA;IAEb;;OAEG;IACH,IAAI,CACF,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,cAAc,EACzB,QAAQ,EAAE,CAAC,IAAI,EAAE,UAAU,KAAK,IAAI,GACnC,IAAI;IAOP;;OAEG;IACH,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,cAAc,GAAG,IAAI;IAepD;;OAEG;IACH,SAAS,CACP,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,UAAU,EAChB,MAAM,EAAE,cAAc,EACtB,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,GACjE,IAAI;IA6CP;;OAEG;IACH,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAIjC;;OAEG;IACH,QAAQ,IAAI,MAAM,EAAE;IAIpB;;OAEG;IACH,KAAK,IAAI,IAAI;CAGd;AAkBD;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC;;;;;;OAMG;IACH,GAAG,CAAC,EAAE,QAAQ,CAAA;IAEd;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAA;IAEhB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;IAEjB;;;;;;;;;;;;;OAaG;IACH,MAAM,CAAC,EAAE,MAAM,CAAA;IAEf;;;;OAIG;IACH,WAAW,CAAC,EAAE,OAAO,CAAA;CACtB;AAED;;;GAGG;AACH,qBAAa,cAAe,YAAW,SAAS;IAC9C,OAAO,CAAC,GAAG,CAAC,CAAU;IACtB,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,OAAO,CAAuB;IACtC,OAAO,CAAC,UAAU,CAAiB;IACnC,OAAO,CAAC,KAAK,CAAa;IAC1B,OAAO,CAAC,SAAS,CAAC,CAA4B;IAE9C;;;;;;;;;;;;;;;;;;;;;;OAsBG;gBACS,OAAO,GAAE,qBAA0B;IAW/C;;OAEG;IACG,OAAO,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAwBtD;;OAEG;IACH,UAAU,IAAI,IAAI;IASlB;;OAEG;IACH,IAAI,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI;IAiB5B;;OAEG;IACH,SAAS,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,UAAU,KAAK,IAAI,GAAG,MAAM,IAAI;IAc3D;;OAEG;IACH,IAAI,WAAW,IAAI,OAAO,CAEzB;IAED;;OAEG;IACH,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED;;OAEG;IACH,MAAM,IAAI,QAAQ,GAAG,SAAS;CAG/B;AAED;;GAEG;AAEH;;;;;;;;;;GAUG;AACH,wBAAgB,iBAAiB,IAAI;IACnC,UAAU,EAAE,MAAM,CAAA;IAClB,YAAY,EAAE,MAAM,CAAA;IACpB,KAAK,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAChD,CAWA;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,eAAe,IAAI,IAAI,CAKtC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/dummy/index.ts"],"names":[],"mappings":"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"}
@@ -51,6 +51,8 @@
51
51
  export class DummyHub {
52
52
  constructor() {
53
53
  this.rooms = new Map();
54
+ this.peerConnectSubs = new Map();
55
+ this.peerDisconnectSubs = new Map();
54
56
  }
55
57
  /**
56
58
  * Register a transport in a room.
@@ -78,6 +80,77 @@ export class DummyHub {
78
80
  }
79
81
  }
80
82
  }
83
+ /** Register a transport's onPeerDisconnect callback (see notifyLeave). */
84
+ registerPeerDisconnect(room, transport, callback) {
85
+ if (!this.peerDisconnectSubs.has(room)) {
86
+ this.peerDisconnectSubs.set(room, new Set());
87
+ }
88
+ this.peerDisconnectSubs.get(room).add({ transport, callback });
89
+ }
90
+ unregisterPeerDisconnect(room, transport) {
91
+ const subs = this.peerDisconnectSubs.get(room);
92
+ if (!subs)
93
+ return;
94
+ for (const entry of subs) {
95
+ if (entry.transport === transport) {
96
+ subs.delete(entry);
97
+ break;
98
+ }
99
+ }
100
+ }
101
+ /**
102
+ * Simulate the leave notification a mesh transport's channel close (or a
103
+ * presence service) gives every other peer: called by DummyTransport
104
+ * when it leaves a room with `simulatePeerConnect` on.
105
+ */
106
+ notifyLeave(room, transport) {
107
+ const subs = this.peerDisconnectSubs.get(room);
108
+ if (!subs)
109
+ return;
110
+ for (const entry of subs) {
111
+ if (entry.transport !== transport)
112
+ entry.callback(transport.id);
113
+ }
114
+ }
115
+ /**
116
+ * Register a transport's onPeerConnect callback and simulate the
117
+ * peer-discovery notifications a real mesh transport (peerjs,
118
+ * simple-peer) would fire: every OTHER already-registered transport in
119
+ * the room is notified about this new one, and this new transport is
120
+ * notified about every other one already registered - mirrors each side
121
+ * of a newly-opened data channel firing its own onPeerConnect. Test-only
122
+ * simulation: DummyTransport has no real peer-to-peer channels, this
123
+ * exists purely so GenericProvider's onPeerConnect handling (mesh-join
124
+ * burst coalescing) is exercisable via DummyTransport in benchmarks.
125
+ */
126
+ registerPeerConnect(room, transport, callback) {
127
+ if (!this.peerConnectSubs.has(room)) {
128
+ this.peerConnectSubs.set(room, new Set());
129
+ }
130
+ const subs = this.peerConnectSubs.get(room);
131
+ const entry = { transport, callback };
132
+ subs.add(entry);
133
+ for (const other of subs) {
134
+ if (other.transport === transport)
135
+ continue;
136
+ other.callback(transport.id);
137
+ callback(other.transport.id);
138
+ }
139
+ }
140
+ /**
141
+ * Unregister a transport's onPeerConnect subscription from a room.
142
+ */
143
+ unregisterPeerConnect(room, transport) {
144
+ const subs = this.peerConnectSubs.get(room);
145
+ if (!subs)
146
+ return;
147
+ for (const entry of subs) {
148
+ if (entry.transport === transport) {
149
+ subs.delete(entry);
150
+ break;
151
+ }
152
+ }
153
+ }
81
154
  /**
82
155
  * Broadcast a message to all clients in a room except the sender.
83
156
  */
@@ -108,7 +181,7 @@ export class DummyHub {
108
181
  if (actualDelay > 0) {
109
182
  setTimeout(() => {
110
183
  try {
111
- client.callback(data);
184
+ client.callback(data, sender.id);
112
185
  }
113
186
  catch (error) {
114
187
  console.error('Error delivering message:', error);
@@ -117,7 +190,7 @@ export class DummyHub {
117
190
  }
118
191
  else {
119
192
  try {
120
- client.callback(data);
193
+ client.callback(data, sender.id);
121
194
  }
122
195
  catch (error) {
123
196
  console.error('Error delivering message:', error);
@@ -125,6 +198,43 @@ export class DummyHub {
125
198
  }
126
199
  }
127
200
  }
201
+ /**
202
+ * Deliver a message to ONE client in a room (Transport.sendTo), with the
203
+ * same latency/jitter/drop model as broadcast(). Silently does nothing if
204
+ * the target has left. Used only by transports created with
205
+ * `unicast: true`.
206
+ */
207
+ unicast(room, targetId, data, sender, options) {
208
+ const clients = this.rooms.get(room);
209
+ if (!clients)
210
+ return;
211
+ for (const client of clients) {
212
+ if (client.transport.id !== targetId || client.transport === sender)
213
+ continue;
214
+ const dropRate = options?.dropRate ?? 0;
215
+ if (dropRate > 0 && Math.random() < dropRate)
216
+ return;
217
+ const latency = options?.latency ?? 0;
218
+ const jitter = options?.jitter ?? 0;
219
+ let actualDelay = latency;
220
+ if (latency > 0 && jitter > 0) {
221
+ actualDelay = latency * (1 - jitter) + Math.random() * (2 * latency * jitter);
222
+ }
223
+ const deliver = () => {
224
+ try {
225
+ client.callback(data, sender.id);
226
+ }
227
+ catch (error) {
228
+ console.error('Error delivering message:', error);
229
+ }
230
+ };
231
+ if (actualDelay > 0)
232
+ setTimeout(deliver, actualDelay);
233
+ else
234
+ deliver();
235
+ return;
236
+ }
237
+ }
128
238
  /**
129
239
  * Get the number of clients connected to a room.
130
240
  */
@@ -158,11 +268,22 @@ function getOrCreateHub(room) {
158
268
  }
159
269
  return globalHubs.get(room);
160
270
  }
271
+ /** Chunk header: [chunkId: uint32][index: uint16][total: uint16]. */
272
+ const CHUNK_HEADER_SIZE = 8;
161
273
  /**
162
274
  * Dummy transport implementation for testing and development.
163
275
  * Routes messages through a DummyHub instance.
164
276
  */
165
277
  export class DummyTransport {
278
+ /**
279
+ * Transport.expectedRttMs: a simulated transport that knows its latency
280
+ * class - twice the configured one-way latency, or undefined when no
281
+ * latency is simulated (matching push transports that leave it unset).
282
+ */
283
+ get expectedRttMs() {
284
+ const latency = this.options.latency ?? 0;
285
+ return latency > 0 ? 2 * latency : undefined;
286
+ }
166
287
  /**
167
288
  * Create a new DummyTransport.
168
289
  *
@@ -187,8 +308,12 @@ export class DummyTransport {
187
308
  * ```
188
309
  */
189
310
  constructor(options = {}) {
311
+ /** Unique id for this transport instance, used by the onPeerConnect simulation. */
312
+ this.id = `dummy-${DummyTransport._idCounter++}`;
190
313
  this._connected = false;
191
314
  this._room = '';
315
+ /** Reassembly buffers for chunkSizeLimit mode, keyed by chunk id. */
316
+ this._chunkBuffers = new Map();
192
317
  this.hub = options.hub;
193
318
  this.explicitHub = !!options.hub;
194
319
  this.options = {
@@ -196,7 +321,50 @@ export class DummyTransport {
196
321
  dropRate: options.dropRate ?? 0,
197
322
  jitter: options.jitter ?? 0,
198
323
  autoConnect: options.autoConnect ?? false,
324
+ simulatePeerConnect: options.simulatePeerConnect ?? false,
325
+ unicast: options.unicast ?? false,
326
+ chunkSizeLimit: options.chunkSizeLimit,
199
327
  };
328
+ if (this.options.unicast) {
329
+ this.sendTo = (peerId, data) => {
330
+ if (!this._connected || !this.hub)
331
+ return;
332
+ // Unicast is never chunked here - the chunk simulation models
333
+ // relay size limits, which is a broadcast-transport concern.
334
+ this.hub.unicast(this._room, peerId, data, this, {
335
+ latency: this.options.latency,
336
+ dropRate: this.options.dropRate,
337
+ jitter: this.options.jitter,
338
+ });
339
+ };
340
+ }
341
+ if (this.options.simulatePeerConnect) {
342
+ this.onPeerConnect = (callback) => {
343
+ this._peerConnectCallback = callback;
344
+ if (this._connected && this._room && this.hub) {
345
+ this.hub.registerPeerConnect(this._room, this, callback);
346
+ }
347
+ return () => {
348
+ this._peerConnectCallback = undefined;
349
+ if (this.hub) {
350
+ this.hub.unregisterPeerConnect(this._room, this);
351
+ }
352
+ };
353
+ };
354
+ // The counterpart: a transport that leaves the room tells every
355
+ // other subscribed transport, like a data channel closing.
356
+ this.onPeerDisconnect = (callback) => {
357
+ this._peerDisconnectCallback = callback;
358
+ if (this._connected && this._room && this.hub) {
359
+ this.hub.registerPeerDisconnect(this._room, this, callback);
360
+ }
361
+ return () => {
362
+ this._peerDisconnectCallback = undefined;
363
+ if (this.hub)
364
+ this.hub.unregisterPeerDisconnect(this._room, this);
365
+ };
366
+ };
367
+ }
200
368
  }
201
369
  /**
202
370
  * Connect to a room on the hub.
@@ -217,7 +385,21 @@ export class DummyTransport {
217
385
  this.hub.join(this._room, this, this._callback);
218
386
  }
219
387
  // Otherwise, will join when onMessage() is called
388
+ // Mark connected before registering onPeerConnect: registerPeerConnect()
389
+ // synchronously fires callbacks (including this transport's own, about
390
+ // peers already in the room), and a real mesh transport only fires
391
+ // onPeerConnect once it considers its own channel open - so any
392
+ // consumer reacting to that notification (e.g. GenericProvider calling
393
+ // syncNow()) should see isConnected as true, matching real transports.
220
394
  this._connected = true;
395
+ // Same deal for onPeerConnect - register with the hub now that the room
396
+ // is known, if a caller already subscribed before connect() resolved.
397
+ if (this._peerConnectCallback) {
398
+ this.hub.registerPeerConnect(this._room, this, this._peerConnectCallback);
399
+ }
400
+ if (this._peerDisconnectCallback) {
401
+ this.hub.registerPeerDisconnect(this._room, this, this._peerDisconnectCallback);
402
+ }
221
403
  }
222
404
  /**
223
405
  * Disconnect from the hub.
@@ -227,6 +409,10 @@ export class DummyTransport {
227
409
  return;
228
410
  if (this.hub) {
229
411
  this.hub.leave(this._room, this);
412
+ this.hub.unregisterPeerConnect(this._room, this);
413
+ if (this.options.simulatePeerConnect)
414
+ this.hub.notifyLeave(this._room, this);
415
+ this.hub.unregisterPeerDisconnect(this._room, this);
230
416
  }
231
417
  this._connected = false;
232
418
  }
@@ -241,6 +427,11 @@ export class DummyTransport {
241
427
  }
242
428
  return;
243
429
  }
430
+ const limit = this.options.chunkSizeLimit;
431
+ if (limit) {
432
+ this._sendChunked(data, limit);
433
+ return;
434
+ }
244
435
  // Broadcast through hub
245
436
  this.hub.broadcast(this._room, data, this, {
246
437
  latency: this.options.latency,
@@ -248,14 +439,84 @@ export class DummyTransport {
248
439
  jitter: this.options.jitter,
249
440
  });
250
441
  }
442
+ /**
443
+ * Split `data` into one or more hub-delivered chunks, each carrying a
444
+ * small [chunkId][index][total] header - mirrors (in spirit, not byte
445
+ * format) how PubNub/Ably split an oversized payload into multiple wire
446
+ * messages. Always chunks (even a payload that fits in one chunk, as a
447
+ * single total=1 "chunk") so the receiving side's framing is unambiguous
448
+ * regardless of payload size - see chunkSizeLimit's doc comment.
449
+ */
450
+ _sendChunked(data, limit) {
451
+ const payloadSize = Math.max(1, limit - CHUNK_HEADER_SIZE);
452
+ const total = Math.max(1, Math.ceil(data.length / payloadSize));
453
+ const chunkId = Math.floor(Math.random() * 0xffffffff);
454
+ for (let i = 0; i < total; i++) {
455
+ const slice = data.subarray(i * payloadSize, (i + 1) * payloadSize);
456
+ const packed = new Uint8Array(CHUNK_HEADER_SIZE + slice.length);
457
+ const view = new DataView(packed.buffer);
458
+ view.setUint32(0, chunkId);
459
+ view.setUint16(4, i);
460
+ view.setUint16(6, total);
461
+ packed.set(slice, CHUNK_HEADER_SIZE);
462
+ this.hub.broadcast(this._room, packed, this, {
463
+ latency: this.options.latency,
464
+ dropRate: this.options.dropRate,
465
+ jitter: this.options.jitter,
466
+ });
467
+ }
468
+ }
469
+ /**
470
+ * Reassemble a chunked message. Returns the complete payload once every
471
+ * chunk for its chunkId has arrived, or `undefined` while still waiting
472
+ * on more chunks (including the single-chunk total=1 case reassembling
473
+ * immediately).
474
+ */
475
+ _reassembleChunk(packed) {
476
+ const view = new DataView(packed.buffer, packed.byteOffset, packed.byteLength);
477
+ const chunkId = view.getUint32(0);
478
+ const index = view.getUint16(4);
479
+ const total = view.getUint16(6);
480
+ const payload = packed.subarray(CHUNK_HEADER_SIZE);
481
+ if (total === 1) {
482
+ return payload;
483
+ }
484
+ let buf = this._chunkBuffers.get(chunkId);
485
+ if (!buf) {
486
+ buf = new Map();
487
+ this._chunkBuffers.set(chunkId, buf);
488
+ }
489
+ buf.set(index, payload);
490
+ if (buf.size < total) {
491
+ return undefined;
492
+ }
493
+ this._chunkBuffers.delete(chunkId);
494
+ const totalLength = Array.from(buf.values()).reduce((sum, c) => sum + c.length, 0);
495
+ const combined = new Uint8Array(totalLength);
496
+ let offset = 0;
497
+ for (let i = 0; i < total; i++) {
498
+ const part = buf.get(i);
499
+ combined.set(part, offset);
500
+ offset += part.length;
501
+ }
502
+ return combined;
503
+ }
251
504
  /**
252
505
  * Register callback for incoming messages.
253
506
  */
254
507
  onMessage(callback) {
255
- this._callback = callback;
508
+ const limit = this.options.chunkSizeLimit;
509
+ const wrappedCallback = limit
510
+ ? (packed, from) => {
511
+ const reassembled = this._reassembleChunk(packed);
512
+ if (reassembled)
513
+ callback(reassembled, from);
514
+ }
515
+ : callback;
516
+ this._callback = wrappedCallback;
256
517
  // If already connected, register with hub now
257
518
  if (this._connected && this._room && this.hub) {
258
- this.hub.join(this._room, this, callback);
519
+ this.hub.join(this._room, this, wrappedCallback);
259
520
  }
260
521
  // Return unsubscribe function
261
522
  return () => {
@@ -281,6 +542,7 @@ export class DummyTransport {
281
542
  return this.hub;
282
543
  }
283
544
  }
545
+ DummyTransport._idCounter = 0;
284
546
  /**
285
547
  * Utility functions for debugging and testing.
286
548
  */
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/providers/dummy/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/providers/dummy/index.ts"],"names":[],"mappings":"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"}