@edryslabs/genericprovider 1.0.3 → 1.5.1

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 +1009 -42
  3. package/dist/index.d.ts.map +1 -1
  4. package/dist/index.js +2936 -392
  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 +29 -4
  23. package/dist/providers/gun/index.d.ts.map +1 -1
  24. package/dist/providers/gun/index.js +165 -34
  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 +11 -0
  31. package/dist/providers/matrix/index.d.ts.map +1 -1
  32. package/dist/providers/matrix/index.js +49 -5
  33. package/dist/providers/matrix/index.js.map +1 -1
  34. package/dist/providers/nostr/index.d.ts +76 -5
  35. package/dist/providers/nostr/index.d.ts.map +1 -1
  36. package/dist/providers/nostr/index.js +211 -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 +8 -14
  47. package/dist/providers/simple-peer/index.d.ts.map +1 -1
  48. package/dist/providers/simple-peer/index.js +45 -68
  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 +80 -16
  63. package/dist/transport.d.ts.map +1 -1
  64. package/package.json +35 -24
@@ -2,7 +2,7 @@
2
2
  * Nostr Transport Provider
3
3
  *
4
4
  * Serverless, decentralised synchronisation using the Nostr protocol.
5
- * Binary Yjs updates are base64-encoded and published as signed Nostr events
5
+ * Binary Yjs updates (the provider's frame, untouched) are base64-encoded and published as signed Nostr events
6
6
  * to one or more relays. Every connected client subscribes to the same room tag,
7
7
  * so updates fan out through all configured relays automatically.
8
8
  *
@@ -13,6 +13,9 @@
13
13
  * - Optional password to obfuscate the room tag (SHA-256)
14
14
  * - Configurable history window to catch up on missed updates
15
15
  * - Automatic deduplication (events from self are ignored)
16
+ * - Optional persistent mode: durable full-document snapshots via NIP-01
17
+ * addressable events, so a late joiner can catch up with no live peer
18
+ * and no relay-side history needed (see README.md)
16
19
  *
17
20
  * @example
18
21
  * ```typescript
@@ -47,6 +50,7 @@
47
50
  * })
48
51
  * ```
49
52
  */
53
+ import * as Y from 'yjs';
50
54
  import type { Transport, ConnectionConfig } from '../../transport';
51
55
  /** Shape of a signed Nostr event returned by finalizeEvent. */
52
56
  interface NostrEvent {
@@ -90,7 +94,7 @@ export interface NostrTransportOptions {
90
94
  * @example import { SimplePool } from 'nostr-tools'
91
95
  */
92
96
  SimplePool: new () => {
93
- subscribeMany(relays: string[], filters: object[], handlers: {
97
+ subscribeMany(relays: string[], filter: object, handlers: {
94
98
  onevent?: (event: NostrEvent) => void;
95
99
  oneose?: () => void;
96
100
  }): {
@@ -108,7 +112,12 @@ export interface NostrTransportOptions {
108
112
  */
109
113
  secretKey?: Uint8Array;
110
114
  /**
111
- * Custom Nostr event kind to use for Yjs update events.
115
+ * Custom Nostr event kind to use for Yjs update events. 27370 is in the
116
+ * ephemeral range: relays fan it out without storing it, which is what
117
+ * sync and presence traffic wants (and what most public relays accept;
118
+ * a few block ephemeral kinds or unknown pubkeys, see the README). Use a
119
+ * regular kind (1000-9999) if `historyWindowSecs` catch-up matters more
120
+ * than not filling relays with document history.
112
121
  * @default 27370
113
122
  */
114
123
  eventKind?: number;
@@ -123,7 +132,9 @@ export interface NostrConfig extends ConnectionConfig {
123
132
  room: string;
124
133
  /**
125
134
  * Nostr relay WebSocket URLs to connect to.
126
- * @default ['wss://relay.damus.io', 'wss://nos.lol', 'wss://relay.nostr.band']
135
+ * @default ['wss://relay.damus.io', 'wss://nos.lol', 'wss://nostr.mom'] -
136
+ * the three that accepted kind-27370 events of 50 KB fastest in the
137
+ * 2026-09-06 probe (see the README's relay table)
127
138
  */
128
139
  relays?: string[];
129
140
  /**
@@ -135,10 +146,40 @@ export interface NostrConfig extends ConnectionConfig {
135
146
  /**
136
147
  * How many seconds of stored relay events to fetch on connect.
137
148
  * Set to 0 to receive only real-time events (no catch-up).
138
- * Increase for longer-lived documents that should survive peer restarts.
149
+ * Only meaningful with a regular (stored) `eventKind`: the default kind
150
+ * 27370 is in NIP-01's ephemeral range (20000-29999), which relays do
151
+ * not store - measured against 8 public relays, none returned a stored
152
+ * event - so with the default kind this window fetches nothing and a
153
+ * late joiner gets the document from a live peer's reply instead.
139
154
  * @default 86400 (24 hours)
140
155
  */
141
156
  historyWindowSecs?: number;
157
+ /**
158
+ * Publish periodic full-document snapshots as NIP-01 addressable events
159
+ * (see `persistentKind`) so a late joiner can catch up from a relay's
160
+ * durable storage alone, even with no live peer online and even across a
161
+ * relay restart (unlike the default ephemeral live-update kind, which
162
+ * relays are not expected to store). Requires `doc`.
163
+ * @default false
164
+ */
165
+ persistent?: boolean;
166
+ /**
167
+ * The Y.Doc to snapshot. Required when `persistent` is true - the
168
+ * transport reads its state directly (`doc.on('update', ...)`) rather
169
+ * than inspecting outgoing wire frames, since compression (see
170
+ * `NostrTransport.preferredCompressMinBytes`) would shift the frame's
171
+ * message-type byte to an unpredictable offset.
172
+ */
173
+ doc?: Y.Doc;
174
+ /**
175
+ * Nostr event kind used for persistent snapshots. Must be in NIP-01's
176
+ * addressable range (30000-39999) for relay replace-on-write semantics
177
+ * to apply.
178
+ * @default 30078
179
+ */
180
+ persistentKind?: number;
181
+ /** Debounce between a document change and the next snapshot publish. */
182
+ persistDebounceMs?: number;
142
183
  /** Enable debug logging (overrides constructor option). */
143
184
  debug?: boolean;
144
185
  }
@@ -149,10 +190,20 @@ export interface NostrConfig extends ConnectionConfig {
149
190
  * to matching events from peers. Works in both browser and Node.js environments.
150
191
  */
151
192
  export declare class NostrTransport implements Transport {
193
+ /**
194
+ * Every send() signs and publishes its own event to every configured
195
+ * relay with no internal coalescing. Recommends GenericProvider debounce
196
+ * rapid edits by default to cut down on signing overhead and relay
197
+ * round trips.
198
+ */
199
+ readonly preferredBatchMs = 150;
200
+ readonly preferredCompressMinBytes = 2048;
201
+ readonly expectedRttMs = 600;
152
202
  private readonly opts;
153
203
  private _connected;
154
204
  private _callback?;
155
205
  private _buffer;
206
+ private _chunks;
156
207
  private pool;
157
208
  private sub;
158
209
  private relays;
@@ -160,11 +211,31 @@ export declare class NostrTransport implements Transport {
160
211
  private pubkey;
161
212
  private roomTag;
162
213
  private readonly eventKind;
214
+ private persistentMode;
215
+ private doc;
216
+ private persistentKind;
217
+ private persistDebounceMs;
218
+ private persistTimer?;
219
+ private isPublishingSnapshot;
220
+ private publishPending;
221
+ private snapshotSub;
222
+ private snapshotChunks;
223
+ private _onDocUpdate;
163
224
  constructor(opts: NostrTransportOptions);
164
225
  get isConnected(): boolean;
165
226
  connect(config: NostrConfig): Promise<void>;
166
227
  disconnect(): void;
167
228
  send(data: Uint8Array): Promise<void>;
229
+ private _queueSnapshotPublish;
230
+ /**
231
+ * Publish the whole doc as one snapshot, always through the chunk
232
+ * envelope (even a single part) - see README.md's "Persistent mode" for
233
+ * why: it keeps exactly one addressing scheme (`${roomTag}#${index}`)
234
+ * regardless of how many parts a given snapshot needs, so an older
235
+ * differently-sized snapshot's slots are always overwritten rather than
236
+ * left stale alongside a newer one under a different address.
237
+ */
238
+ private _publishSnapshot;
168
239
  onMessage(callback: (data: Uint8Array) => void): () => void;
169
240
  private _deliver;
170
241
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/nostr/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/nostr/index.ts"],"names":[],"mappings":"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"}
@@ -2,7 +2,7 @@
2
2
  * Nostr Transport Provider
3
3
  *
4
4
  * Serverless, decentralised synchronisation using the Nostr protocol.
5
- * Binary Yjs updates are base64-encoded and published as signed Nostr events
5
+ * Binary Yjs updates (the provider's frame, untouched) are base64-encoded and published as signed Nostr events
6
6
  * to one or more relays. Every connected client subscribes to the same room tag,
7
7
  * so updates fan out through all configured relays automatically.
8
8
  *
@@ -13,6 +13,9 @@
13
13
  * - Optional password to obfuscate the room tag (SHA-256)
14
14
  * - Configurable history window to catch up on missed updates
15
15
  * - Automatic deduplication (events from self are ignored)
16
+ * - Optional persistent mode: durable full-document snapshots via NIP-01
17
+ * addressable events, so a late joiner can catch up with no live peer
18
+ * and no relay-side history needed (see README.md)
16
19
  *
17
20
  * @example
18
21
  * ```typescript
@@ -47,13 +50,18 @@
47
50
  * })
48
51
  * ```
49
52
  */
53
+ import * as Y from 'yjs';
54
+ import * as encoding from 'lib0/encoding';
55
+ import { splitChunks, isChunk, ChunkAssembler } from '../chunking';
56
+ // Common relays (strfry default) cap an event at 64 KiB; content is the
57
+ // base64 payload, tags and signature add a few hundred bytes.
58
+ const MAX_CONTENT_CHARS = 60000;
59
+ // GenericProvider's frame type for a full-state push (see src/index.ts) -
60
+ // not exported from core, mirrored here the same way supabase/index.ts does.
61
+ const MESSAGE_SYNC_PUSH = 6;
50
62
  // ---------------------------------------------------------------------------
51
- // CRC32 translation helpers
52
- //
53
- // GenericProvider wraps every outgoing message as [CRC32 (4 bytes)][payload].
54
- // Nostr event content is plain text (base64), so we strip the CRC32 header
55
- // before encoding and re-add it after decoding so GenericProvider accepts the
56
- // incoming message.
63
+ // CRC32 helper (GenericProvider wraps every frame with a CRC32 header;
64
+ // see supabase/index.ts's identical helper)
57
65
  // ---------------------------------------------------------------------------
58
66
  const _CRC32_TABLE = (() => {
59
67
  const table = new Uint32Array(256);
@@ -71,19 +79,29 @@ function _crc32(data) {
71
79
  crc = (crc >>> 8) ^ _CRC32_TABLE[(crc ^ data[i]) & 0xff];
72
80
  return (crc ^ 0xffffffff) >>> 0;
73
81
  }
74
- /** Strip the 4-byte CRC32 header that GenericProvider prepends. */
75
- function stripCRC32Header(data) {
76
- return data.length >= 4 ? data.subarray(4) : data;
77
- }
78
- /** Add a valid CRC32 header so GenericProvider accepts the message. */
79
- function addCRC32Header(data) {
82
+ /**
83
+ * Wrap a message the way GenericProvider expects to receive one from this
84
+ * transport: a leading uncompressed(0) flag byte, then the usual CRC32
85
+ * header. The flag byte is only part of the wire format when
86
+ * compressionThresholdBytes is active on the receiving GenericProvider -
87
+ * which, for this transport, is the case by default, since
88
+ * `preferredCompressMinBytes` (declared below) becomes that default unless
89
+ * a caller explicitly passes `compressionThresholdBytes: 0`. Persistent
90
+ * mode's synthetic snapshot frame doesn't go through GenericProvider's own
91
+ * send-side encoding (unlike the live channel's frames, which arrive with
92
+ * this flag already baked in), so it has to add it by hand - this bit the
93
+ * exact bug supabase/index.ts's persistence flags too (see that file's
94
+ * comment on not setting `preferredCompressMinBytes`), just guaranteed to
95
+ * be hit here since this transport always hints compression.
96
+ */
97
+ function wrapFrame(data) {
80
98
  const crc = _crc32(data);
81
- const wrapped = new Uint8Array(4 + data.length);
82
- wrapped[0] = (crc >>> 24) & 0xff;
83
- wrapped[1] = (crc >>> 16) & 0xff;
84
- wrapped[2] = (crc >>> 8) & 0xff;
85
- wrapped[3] = crc & 0xff;
86
- wrapped.set(data, 4);
99
+ const wrapped = new Uint8Array(5 + data.length);
100
+ wrapped[1] = (crc >>> 24) & 0xff;
101
+ wrapped[2] = (crc >>> 16) & 0xff;
102
+ wrapped[3] = (crc >>> 8) & 0xff;
103
+ wrapped[4] = crc & 0xff;
104
+ wrapped.set(data, 5);
87
105
  return wrapped;
88
106
  }
89
107
  // ---------------------------------------------------------------------------
@@ -127,9 +145,24 @@ const DEFAULT_KIND = 27370;
127
145
  const DEFAULT_RELAYS = [
128
146
  'wss://relay.damus.io',
129
147
  'wss://nos.lol',
130
- 'wss://relay.nostr.band',
148
+ 'wss://nostr.mom',
131
149
  ];
132
150
  // ---------------------------------------------------------------------------
151
+ // Persistent mode: durable Yjs snapshots via NIP-01 addressable events
152
+ // (kind 30000-39999 - a relay keeps only the latest event per (kind,
153
+ // pubkey, `d` tag), unlike the ephemeral live-update kind above, which
154
+ // relays are free to drop entirely). See README.md's "Persistent mode".
155
+ // ---------------------------------------------------------------------------
156
+ // An addressable-range kind, arbitrary but documented - not reserved by any
157
+ // well-known NIP as of this writing.
158
+ const DEFAULT_PERSISTENT_KIND = 30078;
159
+ // A snapshot bigger than this many chunks is skipped (a warning is logged)
160
+ // rather than published incomplete - see README.md for the size this bounds
161
+ // (MAX_SNAPSHOT_CHUNKS * MAX_CONTENT_CHARS base64 chars) and the upgrade
162
+ // path (a two-phase fetch that learns the real total instead of guessing
163
+ // a fixed candidate range).
164
+ const MAX_SNAPSHOT_CHUNKS = 20;
165
+ // ---------------------------------------------------------------------------
133
166
  // NostrTransport
134
167
  // ---------------------------------------------------------------------------
135
168
  /**
@@ -140,13 +173,35 @@ const DEFAULT_RELAYS = [
140
173
  */
141
174
  export class NostrTransport {
142
175
  constructor(opts) {
176
+ /**
177
+ * Every send() signs and publishes its own event to every configured
178
+ * relay with no internal coalescing. Recommends GenericProvider debounce
179
+ * rapid edits by default to cut down on signing overhead and relay
180
+ * round trips.
181
+ */
182
+ this.preferredBatchMs = 150;
183
+ // 64 KiB per event on the common relays: compress first, chunk after.
184
+ this.preferredCompressMinBytes = 2048;
185
+ // Relay round trip incl. signature verification: a few hundred ms.
186
+ this.expectedRttMs = 600;
143
187
  this._connected = false;
144
188
  this._buffer = [];
189
+ this._chunks = new ChunkAssembler();
145
190
  this.pool = null;
146
191
  this.sub = null;
147
192
  this.relays = [];
148
193
  this.pubkey = '';
149
194
  this.roomTag = '';
195
+ // Persistent mode (see NostrConfig.persistent)
196
+ this.persistentMode = false;
197
+ this.doc = null;
198
+ this.persistentKind = DEFAULT_PERSISTENT_KIND;
199
+ this.persistDebounceMs = 2000;
200
+ this.isPublishingSnapshot = false;
201
+ this.publishPending = false;
202
+ this.snapshotSub = null;
203
+ this.snapshotChunks = new ChunkAssembler();
204
+ this._onDocUpdate = () => this._queueSnapshotPublish();
150
205
  this.opts = opts;
151
206
  this.eventKind = opts.eventKind ?? DEFAULT_KIND;
152
207
  // Use provided key or an initial placeholder; real key resolved on connect.
@@ -193,7 +248,7 @@ export class NostrTransport {
193
248
  }
194
249
  // Subscribe to events matching our room. The subscription delivers both
195
250
  // stored (historical) events first, then real-time new events.
196
- this.sub = this.pool.subscribeMany(this.relays, [filter], {
251
+ this.sub = this.pool.subscribeMany(this.relays, filter, {
197
252
  onevent: (event) => {
198
253
  // Ignore events published by this client to avoid echo
199
254
  if (event.pubkey === this.pubkey)
@@ -202,9 +257,21 @@ export class NostrTransport {
202
257
  console.log('[NostrTransport] Received event', event.id.substring(0, 8), 'from', event.pubkey.substring(0, 8));
203
258
  }
204
259
  try {
205
- const raw = base64ToUint8Array(event.content);
206
- const withHeader = addCRC32Header(raw);
207
- this._deliver(withHeader);
260
+ let content = event.content;
261
+ if (content.startsWith('{')) {
262
+ const parsed = JSON.parse(content);
263
+ if (!isChunk(parsed))
264
+ return;
265
+ const whole = this._chunks.push(parsed);
266
+ if (whole === null)
267
+ return;
268
+ content = whole;
269
+ }
270
+ // The frame goes through untouched (CRC32 wrapper, and the
271
+ // compression flag when compressionThresholdBytes is on): a
272
+ // transport that strips and re-adds the header cannot carry a
273
+ // compressed frame.
274
+ this._deliver(base64ToUint8Array(content));
208
275
  }
209
276
  catch (err) {
210
277
  console.warn('[NostrTransport] Failed to decode event content:', err);
@@ -217,6 +284,42 @@ export class NostrTransport {
217
284
  },
218
285
  });
219
286
  this._connected = true;
287
+ // Persistent mode: fetch the durable snapshot (if any) and start
288
+ // publishing new ones on doc changes. Additive to the live subscription
289
+ // above, never a replacement for it.
290
+ this.persistentMode = config.persistent ?? false;
291
+ if (this.persistentMode) {
292
+ if (!config.doc) {
293
+ throw new Error('NostrTransport: config.doc is required when persistent is true');
294
+ }
295
+ this.doc = config.doc;
296
+ this.persistentKind = config.persistentKind ?? DEFAULT_PERSISTENT_KIND;
297
+ this.persistDebounceMs = config.persistDebounceMs ?? 2000;
298
+ const snapshotDTags = Array.from({ length: MAX_SNAPSHOT_CHUNKS }, (_, i) => `${this.roomTag}#${i}`);
299
+ this.snapshotSub = this.pool.subscribeMany(this.relays, { kinds: [this.persistentKind], '#d': snapshotDTags }, {
300
+ onevent: (event) => {
301
+ try {
302
+ const parsed = JSON.parse(event.content);
303
+ if (!isChunk(parsed))
304
+ return;
305
+ const whole = this.snapshotChunks.push(parsed);
306
+ if (whole === null)
307
+ return;
308
+ const update = base64ToUint8Array(whole);
309
+ const enc = encoding.createEncoder();
310
+ encoding.writeVarUint(enc, MESSAGE_SYNC_PUSH);
311
+ encoding.writeVarUint8Array(enc, update);
312
+ this._deliver(wrapFrame(encoding.toUint8Array(enc)));
313
+ if (debug)
314
+ console.log('[NostrTransport] Applied persisted snapshot,', update.length, 'bytes');
315
+ }
316
+ catch (err) {
317
+ console.warn('[NostrTransport] Failed to decode snapshot event:', err);
318
+ }
319
+ },
320
+ });
321
+ this.doc.on('update', this._onDocUpdate);
322
+ }
220
323
  if (debug) {
221
324
  console.log('[NostrTransport] Connected, pubkey:', this.pubkey);
222
325
  }
@@ -226,6 +329,21 @@ export class NostrTransport {
226
329
  this.sub.close();
227
330
  this.sub = null;
228
331
  }
332
+ if (this.snapshotSub) {
333
+ this.snapshotSub.close();
334
+ this.snapshotSub = null;
335
+ }
336
+ if (this.doc) {
337
+ this.doc.off('update', this._onDocUpdate);
338
+ this.doc = null;
339
+ }
340
+ if (this.persistTimer) {
341
+ clearTimeout(this.persistTimer);
342
+ this.persistTimer = undefined;
343
+ }
344
+ this.persistentMode = false;
345
+ this.publishPending = false;
346
+ this.snapshotChunks.clear();
229
347
  if (this.pool) {
230
348
  this.pool.close(this.relays);
231
349
  this.pool = null;
@@ -238,18 +356,75 @@ export class NostrTransport {
238
356
  console.warn('[NostrTransport] Cannot send: not connected');
239
357
  return;
240
358
  }
241
- // Strip the 4-byte CRC32 header added by GenericProvider before encoding
242
- const raw = stripCRC32Header(data);
243
- const content = uint8ArrayToBase64(raw);
244
- const event = this.opts.finalizeEvent({
245
- kind: this.eventKind,
246
- created_at: Math.floor(Date.now() / 1000),
247
- // Tag `r` is used as the room/document identifier for filtering
248
- tags: [['r', this.roomTag]],
249
- content,
250
- }, this.secretKey);
251
- // Publish to all relays; ignore individual relay errors
252
- await Promise.allSettled(this.pool.publish(this.relays, event));
359
+ const base64 = uint8ArrayToBase64(data);
360
+ // Above the relays' event size cap: one event per chunk.
361
+ const contents = base64.length > MAX_CONTENT_CHARS
362
+ ? splitChunks(base64, MAX_CONTENT_CHARS).map((c) => JSON.stringify(c))
363
+ : [base64];
364
+ for (const content of contents) {
365
+ const event = this.opts.finalizeEvent({
366
+ kind: this.eventKind,
367
+ created_at: Math.floor(Date.now() / 1000),
368
+ // Tag `r` is used as the room/document identifier for filtering
369
+ tags: [['r', this.roomTag]],
370
+ content,
371
+ }, this.secretKey);
372
+ // Publish to all relays; ignore individual relay errors
373
+ await Promise.allSettled(this.pool.publish(this.relays, event));
374
+ }
375
+ }
376
+ // ---------------------------------------------------------------------------
377
+ // Persistent mode: publish the doc as one or more addressable events
378
+ // ---------------------------------------------------------------------------
379
+ _queueSnapshotPublish() {
380
+ if (this.persistTimer)
381
+ clearTimeout(this.persistTimer);
382
+ this.persistTimer = setTimeout(() => this._publishSnapshot(), this.persistDebounceMs);
383
+ }
384
+ /**
385
+ * Publish the whole doc as one snapshot, always through the chunk
386
+ * envelope (even a single part) - see README.md's "Persistent mode" for
387
+ * why: it keeps exactly one addressing scheme (`${roomTag}#${index}`)
388
+ * regardless of how many parts a given snapshot needs, so an older
389
+ * differently-sized snapshot's slots are always overwritten rather than
390
+ * left stale alongside a newer one under a different address.
391
+ */
392
+ async _publishSnapshot() {
393
+ if (!this.pool || !this.doc)
394
+ return;
395
+ if (this.isPublishingSnapshot) {
396
+ this.publishPending = true;
397
+ return;
398
+ }
399
+ this.isPublishingSnapshot = true;
400
+ this.publishPending = false;
401
+ try {
402
+ const base64 = uint8ArrayToBase64(Y.encodeStateAsUpdate(this.doc));
403
+ const parts = splitChunks(base64, MAX_CONTENT_CHARS);
404
+ if (parts.length > MAX_SNAPSHOT_CHUNKS) {
405
+ console.warn(`[NostrTransport] Snapshot needs ${parts.length} chunks, more than MAX_SNAPSHOT_CHUNKS ` +
406
+ `(${MAX_SNAPSHOT_CHUNKS}); skipping this publish. The live update channel still keeps ` +
407
+ 'connected peers in sync; the next smaller snapshot will catch late joiners up again.');
408
+ return;
409
+ }
410
+ for (const part of parts) {
411
+ const event = this.opts.finalizeEvent({
412
+ kind: this.persistentKind,
413
+ created_at: Math.floor(Date.now() / 1000),
414
+ tags: [['d', `${this.roomTag}#${part.index}`]],
415
+ content: JSON.stringify(part),
416
+ }, this.secretKey);
417
+ await Promise.allSettled(this.pool.publish(this.relays, event));
418
+ }
419
+ }
420
+ catch (err) {
421
+ console.warn('[NostrTransport] Failed to publish snapshot:', err);
422
+ }
423
+ finally {
424
+ this.isPublishingSnapshot = false;
425
+ if (this.publishPending)
426
+ this._queueSnapshotPublish();
427
+ }
253
428
  }
254
429
  onMessage(callback) {
255
430
  this._callback = callback;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/providers/nostr/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgDG;AAIH,8EAA8E;AAC9E,4BAA4B;AAC5B,EAAE;AACF,8EAA8E;AAC9E,2EAA2E;AAC3E,8EAA8E;AAC9E,oBAAoB;AACpB,8EAA8E;AAE9E,MAAM,YAAY,GAAG,CAAC,GAAG,EAAE;IACzB,MAAM,KAAK,GAAG,IAAI,WAAW,CAAC,GAAG,CAAC,CAAA;IAClC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;QAC7B,IAAI,CAAC,GAAG,CAAC,CAAA;QACT,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;YAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAA;QACxE,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;IACd,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC,CAAC,EAAE,CAAA;AAEJ,SAAS,MAAM,CAAC,IAAgB;IAC9B,IAAI,GAAG,GAAG,UAAU,CAAA;IACpB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE;QAClC,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAA;IAC1D,OAAO,CAAC,GAAG,GAAG,UAAU,CAAC,KAAK,CAAC,CAAA;AACjC,CAAC;AAED,mEAAmE;AACnE,SAAS,gBAAgB,CAAC,IAAgB;IACxC,OAAO,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;AACnD,CAAC;AAED,uEAAuE;AACvE,SAAS,cAAc,CAAC,IAAgB;IACtC,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,CAAA;IACxB,MAAM,OAAO,GAAG,IAAI,UAAU,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAA;IAC/C,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,IAAI,CAAA;IAChC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,IAAI,CAAA;IAChC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,IAAI,CAAA;IAC/B,OAAO,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,IAAI,CAAA;IACvB,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAA;IACpB,OAAO,OAAO,CAAA;AAChB,CAAC;AAED,8EAA8E;AAC9E,6CAA6C;AAC7C,8EAA8E;AAE9E,SAAS,kBAAkB,CAAC,IAAgB;IAC1C,IAAI,MAAM,GAAG,EAAE,CAAA;IACf,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,MAAM,IAAI,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;IACxC,CAAC;IACD,OAAO,IAAI,CAAC,MAAM,CAAC,CAAA;AACrB,CAAC;AAED,SAAS,kBAAkB,CAAC,MAAc;IACxC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,CAAA;IAC3B,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;IAC3C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACvC,KAAK,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAA;IACjC,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC;AAED,8EAA8E;AAC9E,0DAA0D;AAC1D,8EAA8E;AAE9E,KAAK,UAAU,YAAY,CAAC,QAAgB;IAC1C,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;IAClD,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,CAAA;IACjE,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,UAAU,CAAC,CAAC;SAC1C,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;SAC3C,IAAI,CAAC,EAAE,CAAC;SACR,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;AACrB,CAAC;AAED,8EAA8E;AAC9E,iDAAiD;AACjD,EAAE;AACF,6EAA6E;AAC7E,2EAA2E;AAC3E,sDAAsD;AACtD,8EAA8E;AAC9E,MAAM,YAAY,GAAG,KAAK,CAAA;AAE1B,0EAA0E;AAC1E,MAAM,cAAc,GAAG;IACrB,sBAAsB;IACtB,eAAe;IACf,wBAAwB;CACzB,CAAA;AAmHD,8EAA8E;AAC9E,iBAAiB;AACjB,8EAA8E;AAE9E;;;;;GAKG;AACH,MAAM,OAAO,cAAc;IAczB,YAAY,IAA2B;QAZ/B,eAAU,GAAG,KAAK,CAAA;QAElB,YAAO,GAAiB,EAAE,CAAA;QAE1B,SAAI,GAA6D,IAAI,CAAA;QACrE,QAAG,GAA6B,IAAI,CAAA;QACpC,WAAM,GAAa,EAAE,CAAA;QAErB,WAAM,GAAW,EAAE,CAAA;QACnB,YAAO,GAAW,EAAE,CAAA;QAI1B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;QAChB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,YAAY,CAAA;QAC/C,4EAA4E;QAC5E,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,IAAI,UAAU,CAAC,EAAE,CAAC,CAAA;IACvD,CAAC;IAED,IAAI,WAAW;QACb,OAAO,IAAI,CAAC,UAAU,CAAA;IACxB,CAAC;IAED,8EAA8E;IAC9E,sBAAsB;IACtB,8EAA8E;IAE9E,KAAK,CAAC,OAAO,CAAC,MAAmB;QAC/B,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAA;QACtD,CAAC;QAED,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,KAAK,CAAA;QAEtD,IAAI,CAAC,MAAM;YACT,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,cAAc,CAAA;QAE5E,sBAAsB;QACtB,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACxB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAA;QACtC,CAAC;aAAM,CAAC;YACN,yDAAyD;YACzD,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,eAAe,CAAC,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC,CAAA;QAC7D,CAAC;QACD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;QAEpD,uDAAuD;QACvD,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,QAAQ;YAC5B,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,IAAI,MAAM,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE;YACzD,CAAC,CAAC,MAAM,CAAC,IAAI,CAAA;QAEf,MAAM,iBAAiB,GAAG,MAAM,CAAC,iBAAiB,IAAI,KAAK,CAAA;QAC3D,MAAM,KAAK,GACT,iBAAiB,GAAG,CAAC;YACnB,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,iBAAiB;YACnD,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAA,CAAC,iBAAiB;QAErD,MAAM,MAAM,GAAG;YACb,KAAK,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC;YACvB,IAAI,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC;YACpB,KAAK;SACN,CAAA;QAED,IAAI,CAAC,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAA;QAEtC,IAAI,KAAK,EAAE,CAAC;YACV,OAAO,CAAC,GAAG,CACT,sCAAsC,EACtC,IAAI,CAAC,MAAM,EACX,OAAO,EACP,IAAI,CAAC,OAAO,EACZ,OAAO,EACP,IAAI,CAAC,SAAS,EACd,eAAe,EACf,KAAK,CACN,CAAA;QACH,CAAC;QAED,wEAAwE;QACxE,+DAA+D;QAC/D,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,EAAE;YACxD,OAAO,EAAE,CAAC,KAAiB,EAAE,EAAE;gBAC7B,uDAAuD;gBACvD,IAAI,KAAK,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM;oBAAE,OAAM;gBAExC,IAAI,KAAK,EAAE,CAAC;oBACV,OAAO,CAAC,GAAG,CACT,iCAAiC,EACjC,KAAK,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EACxB,MAAM,EACN,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAC7B,CAAA;gBACH,CAAC;gBAED,IAAI,CAAC;oBACH,MAAM,GAAG,GAAG,kBAAkB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;oBAC7C,MAAM,UAAU,GAAG,cAAc,CAAC,GAAG,CAAC,CAAA;oBACtC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAA;gBAC3B,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,OAAO,CAAC,IAAI,CAAC,kDAAkD,EAAE,GAAG,CAAC,CAAA;gBACvE,CAAC;YACH,CAAC;YACD,MAAM,EAAE,GAAG,EAAE;gBACX,IAAI,KAAK,EAAE,CAAC;oBACV,OAAO,CAAC,GAAG,CAAC,iDAAiD,CAAC,CAAA;gBAChE,CAAC;YACH,CAAC;SACF,CAAC,CAAA;QAEF,IAAI,CAAC,UAAU,GAAG,IAAI,CAAA;QAEtB,IAAI,KAAK,EAAE,CAAC;YACV,OAAO,CAAC,GAAG,CAAC,qCAAqC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAA;QACjE,CAAC;IACH,CAAC;IAED,UAAU;QACR,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAA;YAChB,IAAI,CAAC,GAAG,GAAG,IAAI,CAAA;QACjB,CAAC;QAED,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;YAC5B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;QAClB,CAAC;QAED,IAAI,CAAC,UAAU,GAAG,KAAK,CAAA;QACvB,IAAI,CAAC,OAAO,GAAG,EAAE,CAAA;IACnB,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,IAAgB;QACzB,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YACnC,OAAO,CAAC,IAAI,CAAC,6CAA6C,CAAC,CAAA;YAC3D,OAAM;QACR,CAAC;QAED,yEAAyE;QACzE,MAAM,GAAG,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAA;QAClC,MAAM,OAAO,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAA;QAEvC,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,CACnC;YACE,IAAI,EAAE,IAAI,CAAC,SAAS;YACpB,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;YACzC,gEAAgE;YAChE,IAAI,EAAE,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;YAC3B,OAAO;SACR,EACD,IAAI,CAAC,SAAS,CACf,CAAA;QAED,wDAAwD;QACxD,MAAM,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAA;IACjE,CAAC;IAED,SAAS,CAAC,QAAoC;QAC5C,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAA;QAEzB,gEAAgE;QAChE,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC5B,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;gBAC/B,QAAQ,CAAC,GAAG,CAAC,CAAA;YACf,CAAC;YACD,IAAI,CAAC,OAAO,GAAG,EAAE,CAAA;QACnB,CAAC;QAED,OAAO,GAAG,EAAE;YACV,IAAI,CAAC,SAAS,GAAG,SAAS,CAAA;QAC5B,CAAC,CAAA;IACH,CAAC;IAED,8EAA8E;IAC9E,kBAAkB;IAClB,8EAA8E;IAEtE,QAAQ,CAAC,IAAgB;QAC/B,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;QACtB,CAAC;aAAM,CAAC;YACN,+DAA+D;YAC/D,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACzB,CAAC;IACH,CAAC;CACF"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/providers/nostr/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmDG;AAEH,OAAO,KAAK,CAAC,MAAM,KAAK,CAAA;AACxB,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAA;AAEzC,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAElE,wEAAwE;AACxE,8DAA8D;AAC9D,MAAM,iBAAiB,GAAG,KAAK,CAAA;AAE/B,0EAA0E;AAC1E,6EAA6E;AAC7E,MAAM,iBAAiB,GAAG,CAAC,CAAA;AAE3B,8EAA8E;AAC9E,uEAAuE;AACvE,4CAA4C;AAC5C,8EAA8E;AAE9E,MAAM,YAAY,GAAG,CAAC,GAAG,EAAE;IACzB,MAAM,KAAK,GAAG,IAAI,WAAW,CAAC,GAAG,CAAC,CAAA;IAClC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;QAC7B,IAAI,CAAC,GAAG,CAAC,CAAA;QACT,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;YAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAA;QACxE,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;IACd,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC,CAAC,EAAE,CAAA;AAEJ,SAAS,MAAM,CAAC,IAAgB;IAC9B,IAAI,GAAG,GAAG,UAAU,CAAA;IACpB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE;QAAE,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAA;IAC9F,OAAO,CAAC,GAAG,GAAG,UAAU,CAAC,KAAK,CAAC,CAAA;AACjC,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,SAAS,SAAS,CAAC,IAAgB;IACjC,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,CAAA;IACxB,MAAM,OAAO,GAAG,IAAI,UAAU,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAA;IAC/C,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,IAAI,CAAA;IAChC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,IAAI,CAAA;IAChC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,IAAI,CAAA;IAC/B,OAAO,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,IAAI,CAAA;IACvB,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAA;IACpB,OAAO,OAAO,CAAA;AAChB,CAAC;AAED,8EAA8E;AAC9E,6CAA6C;AAC7C,8EAA8E;AAE9E,SAAS,kBAAkB,CAAC,IAAgB;IAC1C,IAAI,MAAM,GAAG,EAAE,CAAA;IACf,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,MAAM,IAAI,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;IACxC,CAAC;IACD,OAAO,IAAI,CAAC,MAAM,CAAC,CAAA;AACrB,CAAC;AAED,SAAS,kBAAkB,CAAC,MAAc;IACxC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,CAAA;IAC3B,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;IAC3C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACvC,KAAK,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAA;IACjC,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC;AAED,8EAA8E;AAC9E,0DAA0D;AAC1D,8EAA8E;AAE9E,KAAK,UAAU,YAAY,CAAC,QAAgB;IAC1C,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;IAClD,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,CAAA;IACjE,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,UAAU,CAAC,CAAC;SAC1C,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;SAC3C,IAAI,CAAC,EAAE,CAAC;SACR,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;AACrB,CAAC;AAED,8EAA8E;AAC9E,iDAAiD;AACjD,EAAE;AACF,6EAA6E;AAC7E,2EAA2E;AAC3E,sDAAsD;AACtD,8EAA8E;AAC9E,MAAM,YAAY,GAAG,KAAK,CAAA;AAE1B,0EAA0E;AAC1E,MAAM,cAAc,GAAG;IACrB,sBAAsB;IACtB,eAAe;IACf,iBAAiB;CAClB,CAAA;AAED,8EAA8E;AAC9E,uEAAuE;AACvE,qEAAqE;AACrE,uEAAuE;AACvE,wEAAwE;AACxE,8EAA8E;AAE9E,4EAA4E;AAC5E,qCAAqC;AACrC,MAAM,uBAAuB,GAAG,KAAK,CAAA;AAErC,2EAA2E;AAC3E,4EAA4E;AAC5E,yEAAyE;AACzE,yEAAyE;AACzE,4BAA4B;AAC5B,MAAM,mBAAmB,GAAG,EAAE,CAAA;AA+J9B,8EAA8E;AAC9E,iBAAiB;AACjB,8EAA8E;AAE9E;;;;;GAKG;AACH,MAAM,OAAO,cAAc;IAuCzB,YAAY,IAA2B;QAtCvC;;;;;WAKG;QACM,qBAAgB,GAAG,GAAG,CAAA;QAC/B,sEAAsE;QAC7D,8BAAyB,GAAG,IAAI,CAAA;QACzC,mEAAmE;QAC1D,kBAAa,GAAG,GAAG,CAAA;QAGpB,eAAU,GAAG,KAAK,CAAA;QAElB,YAAO,GAAiB,EAAE,CAAA;QAC1B,YAAO,GAAG,IAAI,cAAc,EAAE,CAAA;QAE9B,SAAI,GAA6D,IAAI,CAAA;QACrE,QAAG,GAA6B,IAAI,CAAA;QACpC,WAAM,GAAa,EAAE,CAAA;QAErB,WAAM,GAAW,EAAE,CAAA;QACnB,YAAO,GAAW,EAAE,CAAA;QAG5B,+CAA+C;QACvC,mBAAc,GAAG,KAAK,CAAA;QACtB,QAAG,GAAiB,IAAI,CAAA;QACxB,mBAAc,GAAG,uBAAuB,CAAA;QACxC,sBAAiB,GAAG,IAAI,CAAA;QAExB,yBAAoB,GAAG,KAAK,CAAA;QAC5B,mBAAc,GAAG,KAAK,CAAA;QACtB,gBAAW,GAA6B,IAAI,CAAA;QAC5C,mBAAc,GAAG,IAAI,cAAc,EAAE,CAAA;QACrC,iBAAY,GAAG,GAAS,EAAE,CAAC,IAAI,CAAC,qBAAqB,EAAE,CAAA;QAG7D,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;QAChB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,YAAY,CAAA;QAC/C,4EAA4E;QAC5E,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,IAAI,UAAU,CAAC,EAAE,CAAC,CAAA;IACvD,CAAC;IAED,IAAI,WAAW;QACb,OAAO,IAAI,CAAC,UAAU,CAAA;IACxB,CAAC;IAED,8EAA8E;IAC9E,sBAAsB;IACtB,8EAA8E;IAE9E,KAAK,CAAC,OAAO,CAAC,MAAmB;QAC/B,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAA;QACtD,CAAC;QAED,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,KAAK,CAAA;QAEtD,IAAI,CAAC,MAAM;YACT,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,cAAc,CAAA;QAE5E,sBAAsB;QACtB,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACxB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAA;QACtC,CAAC;aAAM,CAAC;YACN,yDAAyD;YACzD,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,eAAe,CAAC,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC,CAAA;QAC7D,CAAC;QACD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;QAEpD,uDAAuD;QACvD,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,QAAQ;YAC5B,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,IAAI,MAAM,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE;YACzD,CAAC,CAAC,MAAM,CAAC,IAAI,CAAA;QAEf,MAAM,iBAAiB,GAAG,MAAM,CAAC,iBAAiB,IAAI,KAAK,CAAA;QAC3D,MAAM,KAAK,GACT,iBAAiB,GAAG,CAAC;YACnB,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,iBAAiB;YACnD,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAA,CAAC,iBAAiB;QAErD,MAAM,MAAM,GAAG;YACb,KAAK,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC;YACvB,IAAI,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC;YACpB,KAAK;SACN,CAAA;QAED,IAAI,CAAC,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAA;QAEtC,IAAI,KAAK,EAAE,CAAC;YACV,OAAO,CAAC,GAAG,CACT,sCAAsC,EACtC,IAAI,CAAC,MAAM,EACX,OAAO,EACP,IAAI,CAAC,OAAO,EACZ,OAAO,EACP,IAAI,CAAC,SAAS,EACd,eAAe,EACf,KAAK,CACN,CAAA;QACH,CAAC;QAED,wEAAwE;QACxE,+DAA+D;QAC/D,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE;YACtD,OAAO,EAAE,CAAC,KAAiB,EAAE,EAAE;gBAC7B,uDAAuD;gBACvD,IAAI,KAAK,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM;oBAAE,OAAM;gBAExC,IAAI,KAAK,EAAE,CAAC;oBACV,OAAO,CAAC,GAAG,CACT,iCAAiC,EACjC,KAAK,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EACxB,MAAM,EACN,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAC7B,CAAA;gBACH,CAAC;gBAED,IAAI,CAAC;oBACH,IAAI,OAAO,GAAW,KAAK,CAAC,OAAO,CAAA;oBACnC,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;wBAC5B,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;wBAClC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;4BAAE,OAAM;wBAC5B,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;wBACvC,IAAI,KAAK,KAAK,IAAI;4BAAE,OAAM;wBAC1B,OAAO,GAAG,KAAK,CAAA;oBACjB,CAAC;oBACD,2DAA2D;oBAC3D,4DAA4D;oBAC5D,8DAA8D;oBAC9D,oBAAoB;oBACpB,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAA;gBAC5C,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,OAAO,CAAC,IAAI,CAAC,kDAAkD,EAAE,GAAG,CAAC,CAAA;gBACvE,CAAC;YACH,CAAC;YACD,MAAM,EAAE,GAAG,EAAE;gBACX,IAAI,KAAK,EAAE,CAAC;oBACV,OAAO,CAAC,GAAG,CAAC,iDAAiD,CAAC,CAAA;gBAChE,CAAC;YACH,CAAC;SACF,CAAC,CAAA;QAEF,IAAI,CAAC,UAAU,GAAG,IAAI,CAAA;QAEtB,iEAAiE;QACjE,wEAAwE;QACxE,qCAAqC;QACrC,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC,UAAU,IAAI,KAAK,CAAA;QAChD,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACxB,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;gBAChB,MAAM,IAAI,KAAK,CAAC,gEAAgE,CAAC,CAAA;YACnF,CAAC;YACD,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,CAAA;YACrB,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC,cAAc,IAAI,uBAAuB,CAAA;YACtE,IAAI,CAAC,iBAAiB,GAAG,MAAM,CAAC,iBAAiB,IAAI,IAAI,CAAA;YAEzD,MAAM,aAAa,GAAG,KAAK,CAAC,IAAI,CAC9B,EAAE,MAAM,EAAE,mBAAmB,EAAE,EAC/B,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,IAAI,CAAC,EAAE,CACjC,CAAA;YACD,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,CACxC,IAAI,CAAC,MAAM,EACX,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,EACrD;gBACE,OAAO,EAAE,CAAC,KAAiB,EAAE,EAAE;oBAC7B,IAAI,CAAC;wBACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;wBACxC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;4BAAE,OAAM;wBAC5B,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;wBAC9C,IAAI,KAAK,KAAK,IAAI;4BAAE,OAAM;wBAC1B,MAAM,MAAM,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAA;wBACxC,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,EAAE,CAAA;wBACpC,QAAQ,CAAC,YAAY,CAAC,GAAG,EAAE,iBAAiB,CAAC,CAAA;wBAC7C,QAAQ,CAAC,kBAAkB,CAAC,GAAG,EAAE,MAAM,CAAC,CAAA;wBACxC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;wBACpD,IAAI,KAAK;4BAAE,OAAO,CAAC,GAAG,CAAC,8CAA8C,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;oBAChG,CAAC;oBAAC,OAAO,GAAG,EAAE,CAAC;wBACb,OAAO,CAAC,IAAI,CAAC,mDAAmD,EAAE,GAAG,CAAC,CAAA;oBACxE,CAAC;gBACH,CAAC;aACF,CACF,CAAA;YAED,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,QAAQ,EAAE,IAAI,CAAC,YAAY,CAAC,CAAA;QAC1C,CAAC;QAED,IAAI,KAAK,EAAE,CAAC;YACV,OAAO,CAAC,GAAG,CAAC,qCAAqC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAA;QACjE,CAAC;IACH,CAAC;IAED,UAAU;QACR,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAA;YAChB,IAAI,CAAC,GAAG,GAAG,IAAI,CAAA;QACjB,CAAC;QAED,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACrB,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAA;YACxB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAA;QACzB,CAAC;QACD,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,YAAY,CAAC,CAAA;YACzC,IAAI,CAAC,GAAG,GAAG,IAAI,CAAA;QACjB,CAAC;QACD,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACtB,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;YAC/B,IAAI,CAAC,YAAY,GAAG,SAAS,CAAA;QAC/B,CAAC;QACD,IAAI,CAAC,cAAc,GAAG,KAAK,CAAA;QAC3B,IAAI,CAAC,cAAc,GAAG,KAAK,CAAA;QAC3B,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAA;QAE3B,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;YAC5B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;QAClB,CAAC;QAED,IAAI,CAAC,UAAU,GAAG,KAAK,CAAA;QACvB,IAAI,CAAC,OAAO,GAAG,EAAE,CAAA;IACnB,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,IAAgB;QACzB,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YACnC,OAAO,CAAC,IAAI,CAAC,6CAA6C,CAAC,CAAA;YAC3D,OAAM;QACR,CAAC;QAED,MAAM,MAAM,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAA;QACvC,yDAAyD;QACzD,MAAM,QAAQ,GACZ,MAAM,CAAC,MAAM,GAAG,iBAAiB;YAC/B,CAAC,CAAC,WAAW,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;YACtE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAA;QAEd,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,CACnC;gBACE,IAAI,EAAE,IAAI,CAAC,SAAS;gBACpB,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;gBACzC,gEAAgE;gBAChE,IAAI,EAAE,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;gBAC3B,OAAO;aACR,EACD,IAAI,CAAC,SAAS,CACf,CAAA;YAED,wDAAwD;YACxD,MAAM,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAA;QACjE,CAAC;IACH,CAAC;IAED,8EAA8E;IAC9E,qEAAqE;IACrE,8EAA8E;IAEtE,qBAAqB;QAC3B,IAAI,IAAI,CAAC,YAAY;YAAE,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;QACtD,IAAI,CAAC,YAAY,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,gBAAgB,EAAE,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAA;IACvF,CAAC;IAED;;;;;;;OAOG;IACK,KAAK,CAAC,gBAAgB;QAC5B,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG;YAAE,OAAM;QACnC,IAAI,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAC9B,IAAI,CAAC,cAAc,GAAG,IAAI,CAAA;YAC1B,OAAM;QACR,CAAC;QACD,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAA;QAChC,IAAI,CAAC,cAAc,GAAG,KAAK,CAAA;QAC3B,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,kBAAkB,CAAC,CAAC,CAAC,mBAAmB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA;YAClE,MAAM,KAAK,GAAG,WAAW,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAA;YACpD,IAAI,KAAK,CAAC,MAAM,GAAG,mBAAmB,EAAE,CAAC;gBACvC,OAAO,CAAC,IAAI,CACV,mCAAmC,KAAK,CAAC,MAAM,yCAAyC;oBACtF,IAAI,mBAAmB,gEAAgE;oBACvF,sFAAsF,CACzF,CAAA;gBACD,OAAM;YACR,CAAC;YACD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,CACnC;oBACE,IAAI,EAAE,IAAI,CAAC,cAAc;oBACzB,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;oBACzC,IAAI,EAAE,CAAC,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;oBAC9C,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;iBAC9B,EACD,IAAI,CAAC,SAAS,CACf,CAAA;gBACD,MAAM,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAA;YACjE,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,IAAI,CAAC,8CAA8C,EAAE,GAAG,CAAC,CAAA;QACnE,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,oBAAoB,GAAG,KAAK,CAAA;YACjC,IAAI,IAAI,CAAC,cAAc;gBAAE,IAAI,CAAC,qBAAqB,EAAE,CAAA;QACvD,CAAC;IACH,CAAC;IAED,SAAS,CAAC,QAAoC;QAC5C,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAA;QAEzB,gEAAgE;QAChE,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC5B,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;gBAC/B,QAAQ,CAAC,GAAG,CAAC,CAAA;YACf,CAAC;YACD,IAAI,CAAC,OAAO,GAAG,EAAE,CAAA;QACnB,CAAC;QAED,OAAO,GAAG,EAAE;YACV,IAAI,CAAC,SAAS,GAAG,SAAS,CAAA;QAC5B,CAAC,CAAA;IACH,CAAC;IAED,8EAA8E;IAC9E,kBAAkB;IAClB,8EAA8E;IAEtE,QAAQ,CAAC,IAAgB;QAC/B,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;QACtB,CAAC;aAAM,CAAC;YACN,+DAA+D;YAC/D,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACzB,CAAC;IACH,CAAC;CACF"}
@@ -86,6 +86,7 @@ export declare class PeerJSTransport implements Transport {
86
86
  private _room;
87
87
  private _callback?;
88
88
  private _peerConnectCallback?;
89
+ private _peerDisconnectCallback?;
89
90
  private peer;
90
91
  private peerId;
91
92
  private peers;
@@ -127,6 +128,8 @@ export declare class PeerJSTransport implements Transport {
127
128
  * Register callback for new peer data-channel connections.
128
129
  */
129
130
  onPeerConnect(callback: (peerId: string) => void): () => void;
131
+ /** Transport.onPeerDisconnect: a connection closed/errored, or the coordinator said peer-left (removePeer). */
132
+ onPeerDisconnect(callback: (peerId: string) => void): () => void;
130
133
  /**
131
134
  * Send data to all connected peers.
132
135
  */
@@ -134,7 +137,14 @@ export declare class PeerJSTransport implements Transport {
134
137
  /**
135
138
  * Register callback for incoming messages.
136
139
  */
137
- onMessage(callback: (data: Uint8Array) => void): () => void;
140
+ onMessage(callback: (data: Uint8Array, from?: string) => void): () => void;
141
+ /**
142
+ * Transport.sendTo: deliver to one connected peer (the `from` id passed
143
+ * to onMessage). GenericProvider uses it for replies, acks and presence
144
+ * responses so a join costs one delivery per responder instead of one
145
+ * per peer per responder.
146
+ */
147
+ sendTo(peerId: string, data: Uint8Array): void;
138
148
  /**
139
149
  * Check if connected.
140
150
  */
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/peerjs/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AAElE;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG,GAAG,CAAA;AAEnC;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC;;;;;;;;OAQG;IACH,IAAI,EAAE,iBAAiB,CAAA;IAEvB;;;OAGG;IACH,WAAW,CAAC,EAAE;QACZ,IAAI,CAAC,EAAE,MAAM,CAAA;QACb,IAAI,CAAC,EAAE,MAAM,CAAA;QACb,IAAI,CAAC,EAAE,MAAM,CAAA;QACb,GAAG,CAAC,EAAE,MAAM,CAAA;QACZ,MAAM,CAAC,EAAE,OAAO,CAAA;QAChB,MAAM,CAAC,EAAE,GAAG,CAAA;QACZ,KAAK,CAAC,EAAE,MAAM,CAAA;KACf,CAAA;IAED;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;IAEjB;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;IAEjB;;;OAGG;IACH,KAAK,CAAC,EAAE,OAAO,CAAA;CAChB;AAQD;;;GAGG;AACH,qBAAa,eAAgB,YAAW,SAAS;IAC/C,OAAO,CAAC,OAAO,CAAkC;IACjD,OAAO,CAAC,UAAU,CAAiB;IACnC,OAAO,CAAC,KAAK,CAAa;IAC1B,OAAO,CAAC,SAAS,CAAC,CAA4B;IAC9C,OAAO,CAAC,oBAAoB,CAAC,CAA0B;IACvD,OAAO,CAAC,IAAI,CAAY;IACxB,OAAO,CAAC,MAAM,CAAa;IAC3B,OAAO,CAAC,KAAK,CAA6C;IAC1D,OAAO,CAAC,UAAU,CAAyB;IAC3C,OAAO,CAAC,gBAAgB,CAAC,CAAkB;IAC3C,OAAO,CAAC,iBAAiB,CAAC,CAAgC;IAG1D,OAAO,CAAC,aAAa,CAAiB;IACtC,OAAO,CAAC,iBAAiB,CAAa;IACtC,OAAO,CAAC,eAAe,CAAC,CAAK;IAC7B,OAAO,CAAC,SAAS,CAAyB;IAC1C,OAAO,CAAC,oBAAoB,CAAiB;IAC7C,OAAO,CAAC,WAAW,CAAiB;IAEpC;;;;OAIG;gBACS,OAAO,EAAE,sBAAsB;IAkB3C;;OAEG;IACG,OAAO,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAwFtD;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAuDzB;;OAEG;IACH,UAAU,IAAI,IAAI;IA+ElB;;;;;OAKG;IACH,OAAO,CAAC,2BAA2B;IAyDnC;;OAEG;IACH,aAAa,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,GAAG,MAAM,IAAI;IAO7D;;OAEG;IACH,IAAI,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI;IA2B5B;;OAEG;IACH,SAAS,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,UAAU,KAAK,IAAI,GAAG,MAAM,IAAI;IAO3D;;OAEG;IACH,IAAI,WAAW,IAAI,OAAO,CAEzB;IAED;;OAEG;IACH,IAAI,cAAc,IAAI,MAAM,CAE3B;IAED;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAwC1B;;OAEG;IACH,OAAO,CAAC,YAAY;IAUpB;;;;;OAKG;YACW,0BAA0B;IA4GxC;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAsBzB;;OAEG;IACH,OAAO,CAAC,wBAAwB;IA6ChC;;OAEG;IACH,OAAO,CAAC,2BAA2B;IAmDnC;;;OAGG;IACH,OAAO,CAAC,4BAA4B;IAqCpC;;OAEG;YACW,uBAAuB;IAsFrC;;;;OAIG;IACH,OAAO,CAAC,wBAAwB;IAuDhC;;;OAGG;IACH,OAAO,CAAC,aAAa;IAuCrB;;OAEG;IACH,OAAO,CAAC,wBAAwB;IAkDhC;;OAEG;IACH,OAAO,CAAC,eAAe;IAiGvB;;OAEG;IACH,OAAO,CAAC,UAAU;IAYlB;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAW/B;;;OAGG;IACH,OAAO,CAAC,4BAA4B;IAsBpC;;OAEG;IACH,OAAO,CAAC,OAAO;IASf;;OAEG;IACH,OAAO,CAAC,OAAO;IAKf;;OAEG;IACH,OAAO,CAAC,YAAY;IAKpB;;OAEG;IACH,OAAO,CAAC,GAAG;CAKZ"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/peerjs/index.ts"],"names":[],"mappings":"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"}