@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.
- package/README.md +129 -5
- package/dist/index.d.ts +1009 -42
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2936 -392
- package/dist/index.js.map +1 -1
- package/dist/lib.d.ts +1 -0
- package/dist/lib.d.ts.map +1 -1
- package/dist/lib.js +3 -0
- package/dist/lib.js.map +1 -1
- package/dist/providers/ably/index.d.ts +203 -0
- package/dist/providers/ably/index.d.ts.map +1 -0
- package/dist/providers/ably/index.js +561 -0
- package/dist/providers/ably/index.js.map +1 -0
- package/dist/providers/chunking.d.ts +26 -0
- package/dist/providers/chunking.d.ts.map +1 -0
- package/dist/providers/chunking.js +52 -0
- package/dist/providers/chunking.js.map +1 -0
- package/dist/providers/dummy/index.d.ts +138 -2
- package/dist/providers/dummy/index.d.ts.map +1 -1
- package/dist/providers/dummy/index.js +266 -4
- package/dist/providers/dummy/index.js.map +1 -1
- package/dist/providers/gun/index.d.ts +29 -4
- package/dist/providers/gun/index.d.ts.map +1 -1
- package/dist/providers/gun/index.js +165 -34
- package/dist/providers/gun/index.js.map +1 -1
- package/dist/providers/indexeddb/index.d.ts +44 -20
- package/dist/providers/indexeddb/index.d.ts.map +1 -1
- package/dist/providers/indexeddb/index.js +85 -71
- package/dist/providers/indexeddb/index.js.map +1 -1
- package/dist/providers/matrix/index.d.ts +11 -0
- package/dist/providers/matrix/index.d.ts.map +1 -1
- package/dist/providers/matrix/index.js +49 -5
- package/dist/providers/matrix/index.js.map +1 -1
- package/dist/providers/nostr/index.d.ts +76 -5
- package/dist/providers/nostr/index.d.ts.map +1 -1
- package/dist/providers/nostr/index.js +211 -36
- package/dist/providers/nostr/index.js.map +1 -1
- package/dist/providers/peerjs/index.d.ts +11 -1
- package/dist/providers/peerjs/index.d.ts.map +1 -1
- package/dist/providers/peerjs/index.js +32 -2
- package/dist/providers/peerjs/index.js.map +1 -1
- package/dist/providers/pubnub/index.d.ts +35 -1
- package/dist/providers/pubnub/index.d.ts.map +1 -1
- package/dist/providers/pubnub/index.js +56 -35
- package/dist/providers/pubnub/index.js.map +1 -1
- package/dist/providers/simple-peer/index.d.ts +8 -14
- package/dist/providers/simple-peer/index.d.ts.map +1 -1
- package/dist/providers/simple-peer/index.js +45 -68
- package/dist/providers/simple-peer/index.js.map +1 -1
- package/dist/providers/supabase/index.d.ts +43 -1
- package/dist/providers/supabase/index.d.ts.map +1 -1
- package/dist/providers/supabase/index.js +211 -18
- package/dist/providers/supabase/index.js.map +1 -1
- package/dist/providers/trystero/index.d.ts +19 -1
- package/dist/providers/trystero/index.d.ts.map +1 -1
- package/dist/providers/trystero/index.js +37 -2
- package/dist/providers/trystero/index.js.map +1 -1
- package/dist/providers/websocket/index.d.ts +9 -1
- package/dist/providers/websocket/index.d.ts.map +1 -1
- package/dist/providers/websocket/index.js +7 -1
- package/dist/providers/websocket/index.js.map +1 -1
- package/dist/transport.d.ts +80 -16
- package/dist/transport.d.ts.map +1 -1
- 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[],
|
|
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://
|
|
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
|
-
*
|
|
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":"AAAA
|
|
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
|
|
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
|
-
/**
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
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(
|
|
82
|
-
wrapped[
|
|
83
|
-
wrapped[
|
|
84
|
-
wrapped[
|
|
85
|
-
wrapped[
|
|
86
|
-
wrapped.set(data,
|
|
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://
|
|
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,
|
|
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
|
-
|
|
206
|
-
|
|
207
|
-
|
|
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
|
-
|
|
242
|
-
|
|
243
|
-
const
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
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":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/providers/nostr/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -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,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/peerjs/index.ts"],"names":[],"mappings":"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"}
|