@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.
- package/README.md +129 -5
- package/dist/index.d.ts +903 -60
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2723 -428
- 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 +11 -4
- package/dist/providers/gun/index.d.ts.map +1 -1
- package/dist/providers/gun/index.js +104 -22
- 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 +6 -1
- package/dist/providers/matrix/index.d.ts.map +1 -1
- package/dist/providers/matrix/index.js +44 -6
- package/dist/providers/matrix/index.js.map +1 -1
- package/dist/providers/nostr/index.d.ts +69 -5
- package/dist/providers/nostr/index.d.ts.map +1 -1
- package/dist/providers/nostr/index.js +204 -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 +10 -15
- package/dist/providers/simple-peer/index.d.ts.map +1 -1
- package/dist/providers/simple-peer/index.js +81 -109
- 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 +69 -16
- package/dist/transport.d.ts.map +1 -1
- package/package.json +35 -24
|
@@ -6,12 +6,19 @@
|
|
|
6
6
|
* for persistence across browser sessions.
|
|
7
7
|
*
|
|
8
8
|
* Features:
|
|
9
|
-
* -
|
|
10
|
-
*
|
|
11
|
-
*
|
|
9
|
+
* - Persists the document's updates as they happen - and nothing else: the
|
|
10
|
+
* provider's presence, beacons and requests are not stored (round 7,
|
|
11
|
+
* item 6: stored and replayed, they resurrected the previous session as a
|
|
12
|
+
* phantom peer and cost ~10x the bytes)
|
|
13
|
+
* - Loads the stored updates as one merged update and trims the log to
|
|
14
|
+
* that one row (every load appends a full-document push otherwise)
|
|
15
|
+
* - Lossless compaction (merge), on by default
|
|
12
16
|
* - Works offline (no network required)
|
|
13
|
-
* - Automatic cleanup of old updates
|
|
14
17
|
* - Supports multiple documents/rooms
|
|
18
|
+
* - Pairs with a network provider on the same document through
|
|
19
|
+
* `connect({ waitFor })` (see ConnectionConfig.waitFor)
|
|
20
|
+
* - Not for a provider with `compressionThresholdBytes` set: the frame
|
|
21
|
+
* parser expects the plain CRC-wrapped frame
|
|
15
22
|
*
|
|
16
23
|
* @example
|
|
17
24
|
* ```typescript
|
|
@@ -31,13 +38,12 @@
|
|
|
31
38
|
*
|
|
32
39
|
* @example
|
|
33
40
|
* ```typescript
|
|
34
|
-
* //
|
|
35
|
-
* const transport = new IndexedDBTransport({
|
|
36
|
-
* compactThreshold: 100,
|
|
37
|
-
* autoCompact: true
|
|
38
|
-
* })
|
|
41
|
+
* // Compact (merge the rows into one) every 100 updates instead of 500
|
|
42
|
+
* const transport = new IndexedDBTransport({ compactThreshold: 100 })
|
|
39
43
|
* ```
|
|
40
44
|
*/
|
|
45
|
+
import * as Y from 'yjs';
|
|
46
|
+
import { extractDocUpdates, frameDocUpdate } from '../../index';
|
|
41
47
|
/**
|
|
42
48
|
* IndexedDB transport implementation.
|
|
43
49
|
* Provides local persistence for Yjs documents using browser IndexedDB.
|
|
@@ -54,7 +60,7 @@ export class IndexedDBTransport {
|
|
|
54
60
|
prefix: options.prefix ?? 'yjs',
|
|
55
61
|
version: options.version ?? 1,
|
|
56
62
|
compactThreshold: options.compactThreshold ?? 0,
|
|
57
|
-
autoCompact: options.autoCompact ??
|
|
63
|
+
autoCompact: options.autoCompact ?? true,
|
|
58
64
|
debug: options.debug ?? false,
|
|
59
65
|
maxUpdates: options.maxUpdates ?? 500,
|
|
60
66
|
storeName: options.storeName ?? 'updates',
|
|
@@ -151,7 +157,12 @@ export class IndexedDBTransport {
|
|
|
151
157
|
this.log('Disconnected');
|
|
152
158
|
}
|
|
153
159
|
/**
|
|
154
|
-
*
|
|
160
|
+
* Store what the frame carries of the document - one row per frame that
|
|
161
|
+
* carries anything. Presence, beacons and requests are the provider's
|
|
162
|
+
* conversation with the room, and this transport is not the room: stored
|
|
163
|
+
* and replayed on the next load they resurrected the previous session's
|
|
164
|
+
* clientID as a phantom peer and were answered into the store again
|
|
165
|
+
* (round 7, item 6; test/dummy/bench-persist-log.ts).
|
|
155
166
|
*/
|
|
156
167
|
send(data) {
|
|
157
168
|
if (!this.db) {
|
|
@@ -162,14 +173,14 @@ export class IndexedDBTransport {
|
|
|
162
173
|
if (this.isLoading) {
|
|
163
174
|
return;
|
|
164
175
|
}
|
|
176
|
+
const updates = extractDocUpdates(data);
|
|
177
|
+
if (updates.length === 0)
|
|
178
|
+
return;
|
|
179
|
+
const update = updates.length === 1 ? updates[0].slice() : Y.mergeUpdates(updates);
|
|
165
180
|
try {
|
|
166
181
|
const transaction = this.db.transaction([this.options.storeName], 'readwrite');
|
|
167
182
|
const store = transaction.objectStore(this.options.storeName);
|
|
168
|
-
|
|
169
|
-
const record = {
|
|
170
|
-
update: data,
|
|
171
|
-
timestamp: Date.now(),
|
|
172
|
-
};
|
|
183
|
+
const record = { update, timestamp: Date.now(), raw: true };
|
|
173
184
|
const request = store.add(record);
|
|
174
185
|
request.onsuccess = () => {
|
|
175
186
|
this.updateCount++;
|
|
@@ -205,7 +216,12 @@ export class IndexedDBTransport {
|
|
|
205
216
|
};
|
|
206
217
|
}
|
|
207
218
|
/**
|
|
208
|
-
* Load
|
|
219
|
+
* Load the stored document: every row merged into one update, handed to
|
|
220
|
+
* the provider as one SyncStep2 (`frameDocUpdate`: applied, `synced`
|
|
221
|
+
* fires, nothing is sent back) and written back as that one row. Every
|
|
222
|
+
* page load appends a full-document push (GenericProvider's connect), so
|
|
223
|
+
* without the trim the log grew by one document per load - y-indexeddb
|
|
224
|
+
* trims the same way at its PREFERRED_TRIM_SIZE.
|
|
209
225
|
*/
|
|
210
226
|
async loadUpdates() {
|
|
211
227
|
if (!this.db || !this.messageCallback) {
|
|
@@ -213,27 +229,61 @@ export class IndexedDBTransport {
|
|
|
213
229
|
}
|
|
214
230
|
this.isLoading = true;
|
|
215
231
|
this.log('Loading updates from database...');
|
|
232
|
+
let merged;
|
|
233
|
+
try {
|
|
234
|
+
merged = await this.mergeStore();
|
|
235
|
+
}
|
|
236
|
+
finally {
|
|
237
|
+
// Off before the delivery: an edit made from a `synced` handler must
|
|
238
|
+
// be stored, and the loaded state itself never comes back through
|
|
239
|
+
// send() (the provider applies it under its own origin).
|
|
240
|
+
this.isLoading = false;
|
|
241
|
+
}
|
|
242
|
+
this.log(merged === null ? 'Nothing stored' : `Loaded ${merged.length} bytes`);
|
|
243
|
+
if (merged !== null)
|
|
244
|
+
this.messageCallback?.(frameDocUpdate(merged));
|
|
245
|
+
}
|
|
246
|
+
/**
|
|
247
|
+
* The stored document as one update: every row read, merged and - when
|
|
248
|
+
* there was more than one, or one in the pre-round-7 frame format -
|
|
249
|
+
* written back as one row, all in one readwrite transaction (a
|
|
250
|
+
* concurrent send() queues behind it, so nothing added meanwhile can be
|
|
251
|
+
* cleared away). Rows that carry no document state (old presence or
|
|
252
|
+
* beacon frames) are dropped. Null for an empty store. Shared by
|
|
253
|
+
* loadUpdates() and compact().
|
|
254
|
+
*/
|
|
255
|
+
mergeStore() {
|
|
216
256
|
return new Promise((resolve, reject) => {
|
|
217
|
-
const transaction = this.db.transaction([this.options.storeName], '
|
|
257
|
+
const transaction = this.db.transaction([this.options.storeName], 'readwrite');
|
|
218
258
|
const store = transaction.objectStore(this.options.storeName);
|
|
259
|
+
let merged = null;
|
|
219
260
|
const request = store.getAll();
|
|
220
261
|
request.onsuccess = () => {
|
|
221
|
-
const
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
this.
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
262
|
+
const rows = request.result;
|
|
263
|
+
const updates = rows.flatMap((row) => row.raw ? [row.update] : extractDocUpdates(row.update));
|
|
264
|
+
if (updates.length === 0) {
|
|
265
|
+
if (rows.length > 0)
|
|
266
|
+
store.clear();
|
|
267
|
+
this.updateCount = 0;
|
|
268
|
+
return;
|
|
269
|
+
}
|
|
270
|
+
merged = updates.length === 1 ? updates[0].slice() : Y.mergeUpdates(updates);
|
|
271
|
+
if (rows.length > 1 || !rows[0].raw) {
|
|
272
|
+
store.clear();
|
|
273
|
+
const row = { update: merged, timestamp: Date.now(), raw: true };
|
|
274
|
+
store.add(row);
|
|
275
|
+
}
|
|
276
|
+
this.updateCount = 1;
|
|
230
277
|
};
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
const error = new Error(`Failed to
|
|
278
|
+
transaction.oncomplete = () => resolve(merged);
|
|
279
|
+
transaction.onerror = () => {
|
|
280
|
+
const error = new Error(`Failed to read updates: ${transaction.error?.message ?? 'unknown error'}`);
|
|
234
281
|
this.log('Error loading updates:', error);
|
|
235
282
|
reject(error);
|
|
236
283
|
};
|
|
284
|
+
transaction.onabort = () => {
|
|
285
|
+
reject(new Error('Reading updates was aborted'));
|
|
286
|
+
};
|
|
237
287
|
});
|
|
238
288
|
}
|
|
239
289
|
/**
|
|
@@ -249,52 +299,16 @@ export class IndexedDBTransport {
|
|
|
249
299
|
return this.updateCount >= this.options.maxUpdates;
|
|
250
300
|
}
|
|
251
301
|
/**
|
|
252
|
-
*
|
|
253
|
-
*
|
|
302
|
+
* Merge every stored row into one. Lossless - it used to delete the
|
|
303
|
+
* oldest 90 % of rows, i.e. the document (round 7, item 6).
|
|
254
304
|
*/
|
|
255
305
|
async compact() {
|
|
256
306
|
if (!this.db) {
|
|
257
307
|
throw new Error('Database not connected');
|
|
258
308
|
}
|
|
259
|
-
this.log('
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
// For now, we'll just clear old updates and keep recent ones
|
|
263
|
-
return new Promise((resolve, reject) => {
|
|
264
|
-
const transaction = this.db.transaction([this.options.storeName], 'readwrite');
|
|
265
|
-
const store = transaction.objectStore(this.options.storeName);
|
|
266
|
-
// Get all keys
|
|
267
|
-
const getAllKeysRequest = store.getAllKeys();
|
|
268
|
-
getAllKeysRequest.onsuccess = () => {
|
|
269
|
-
const keys = getAllKeysRequest.result;
|
|
270
|
-
if (keys.length <= 1) {
|
|
271
|
-
this.log('No compaction needed');
|
|
272
|
-
resolve();
|
|
273
|
-
return;
|
|
274
|
-
}
|
|
275
|
-
// Keep only the most recent 10% of updates
|
|
276
|
-
const keepCount = Math.max(1, Math.floor(keys.length * 0.1));
|
|
277
|
-
const deleteKeys = keys.slice(0, keys.length - keepCount);
|
|
278
|
-
this.log(`Compacting: deleting ${deleteKeys.length} old updates`);
|
|
279
|
-
let deleted = 0;
|
|
280
|
-
deleteKeys.forEach((key) => {
|
|
281
|
-
const deleteRequest = store.delete(key);
|
|
282
|
-
deleteRequest.onsuccess = () => {
|
|
283
|
-
deleted++;
|
|
284
|
-
if (deleted === deleteKeys.length) {
|
|
285
|
-
this.updateCount = keepCount;
|
|
286
|
-
this.log('Compaction complete, remaining updates:', keepCount);
|
|
287
|
-
resolve();
|
|
288
|
-
}
|
|
289
|
-
};
|
|
290
|
-
});
|
|
291
|
-
};
|
|
292
|
-
getAllKeysRequest.onerror = () => {
|
|
293
|
-
const error = new Error('Failed to get keys for compaction');
|
|
294
|
-
this.log('Compaction error:', error);
|
|
295
|
-
reject(error);
|
|
296
|
-
};
|
|
297
|
-
});
|
|
309
|
+
this.log('Compacting...');
|
|
310
|
+
await this.mergeStore();
|
|
311
|
+
this.log('Compaction complete, rows:', this.updateCount);
|
|
298
312
|
}
|
|
299
313
|
/**
|
|
300
314
|
* Clear all stored updates for the current room.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/providers/indexeddb/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/providers/indexeddb/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -48,7 +48,10 @@ export declare class MatrixTransport implements Transport {
|
|
|
48
48
|
* unlike push-style transports, there's no cheaper round trip to lose by
|
|
49
49
|
* batching. Recommends GenericProvider debounce rapid edits by default.
|
|
50
50
|
*/
|
|
51
|
-
readonly preferredBatchMs =
|
|
51
|
+
readonly preferredBatchMs = 2000;
|
|
52
|
+
readonly preferredAwarenessMs = 2000;
|
|
53
|
+
readonly preferredCompressMinBytes = 2048;
|
|
54
|
+
readonly expectedRttMs = 700;
|
|
52
55
|
private config;
|
|
53
56
|
private messageCallback?;
|
|
54
57
|
private _isConnected;
|
|
@@ -62,6 +65,7 @@ export declare class MatrixTransport implements Transport {
|
|
|
62
65
|
private txnId;
|
|
63
66
|
private messageQueue;
|
|
64
67
|
private receivedBuffer;
|
|
68
|
+
private chunks;
|
|
65
69
|
get isConnected(): boolean;
|
|
66
70
|
/**
|
|
67
71
|
* Connect to Matrix homeserver and join room
|
|
@@ -91,6 +95,7 @@ export declare class MatrixTransport implements Transport {
|
|
|
91
95
|
* Send Yjs update to Matrix room
|
|
92
96
|
*/
|
|
93
97
|
send(data: Uint8Array): void;
|
|
98
|
+
private sendEvent;
|
|
94
99
|
/**
|
|
95
100
|
* Register message callback
|
|
96
101
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/matrix/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/matrix/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AAOlE;;GAEG;AACH,MAAM,WAAW,YAAa,SAAQ,gBAAgB;IACpD,kEAAkE;IAClE,aAAa,EAAE,MAAM,CAAA;IACrB,wEAAwE;IACxE,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,+DAA+D;IAC/D,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,2BAA2B;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,2BAA2B;IAC3B,KAAK,CAAC,EAAE,OAAO,CAAA;CAChB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,qBAAa,eAAgB,YAAW,SAAS;IAC/C;;;;OAIG;IAKH,QAAQ,CAAC,gBAAgB,QAAO;IAChC,QAAQ,CAAC,oBAAoB,QAAO;IAEpC,QAAQ,CAAC,yBAAyB,QAAO;IAEzC,QAAQ,CAAC,aAAa,OAAM;IAE5B,OAAO,CAAC,MAAM,CAA4B;IAC1C,OAAO,CAAC,eAAe,CAAC,CAA4B;IACpD,OAAO,CAAC,YAAY,CAAiB;IACrC,OAAO,CAAC,KAAK,CAAiB;IAC9B,OAAO,CAAC,WAAW,CAAsB;IACzC,OAAO,CAAC,MAAM,CAAsB;IACpC,OAAO,CAAC,MAAM,CAAsB;IACpC,OAAO,CAAC,SAAS,CAAsB;IACvC,OAAO,CAAC,WAAW,CAAiB;IACpC,OAAO,CAAC,qBAAqB,CAAiB;IAC9C,OAAO,CAAC,KAAK,CAAY;IAGzB,OAAO,CAAC,YAAY,CAAmB;IACvC,OAAO,CAAC,cAAc,CAAmB;IACzC,OAAO,CAAC,MAAM,CAAuB;IAErC,IAAI,WAAW,IAAI,OAAO,CAEzB;IAED;;OAEG;IACG,OAAO,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IA0ClD;;OAEG;YACW,eAAe;IA6C7B;;OAEG;YACW,QAAQ;IA+BtB;;OAEG;YACW,SAAS;IAiBvB;;OAEG;YACW,QAAQ;IA8DtB;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAWjC;;OAEG;IACH,IAAI,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI;IAuB5B,OAAO,CAAC,SAAS;IA6BjB;;OAEG;IACH,SAAS,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,UAAU,KAAK,IAAI,GAAG,MAAM,IAAI;IAiB3D;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAYzB;;OAEG;IACH,OAAO,CAAC,aAAa;IASrB;;OAEG;IACH,OAAO,CAAC,aAAa;IASrB;;OAEG;IACH,OAAO,CAAC,GAAG;CAKZ"}
|
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
import { splitChunks, isChunk, ChunkAssembler } from '../chunking';
|
|
2
|
+
// Synapse rejects events above 65,536 bytes of canonical JSON; the body is
|
|
3
|
+
// the base64 payload, the rest of the event is a few hundred bytes.
|
|
4
|
+
const MAX_BODY_CHARS = 60000;
|
|
1
5
|
/**
|
|
2
6
|
* Matrix Transport for Yjs
|
|
3
7
|
*
|
|
@@ -33,7 +37,16 @@ export class MatrixTransport {
|
|
|
33
37
|
* unlike push-style transports, there's no cheaper round trip to lose by
|
|
34
38
|
* batching. Recommends GenericProvider debounce rapid edits by default.
|
|
35
39
|
*/
|
|
36
|
-
|
|
40
|
+
// Synapse's default rc_message is 0.2 messages/s per user with a burst of
|
|
41
|
+
// 10: at 150 ms batches and 100 ms awareness a typing peer was
|
|
42
|
+
// rate-limited within seconds. 2 s each keeps a minute of activity inside
|
|
43
|
+
// the burst; operators who raise rc_message override per call.
|
|
44
|
+
this.preferredBatchMs = 2000;
|
|
45
|
+
this.preferredAwarenessMs = 2000;
|
|
46
|
+
// A 65,536-byte canonical-JSON cap per event: compress first, chunk after.
|
|
47
|
+
this.preferredCompressMinBytes = 2048;
|
|
48
|
+
// HTTP PUT to send, long-poll to receive: several hundred ms one way.
|
|
49
|
+
this.expectedRttMs = 700;
|
|
37
50
|
this.config = null;
|
|
38
51
|
this._isConnected = false;
|
|
39
52
|
this.debug = false;
|
|
@@ -47,6 +60,7 @@ export class MatrixTransport {
|
|
|
47
60
|
// Message buffering
|
|
48
61
|
this.messageQueue = [];
|
|
49
62
|
this.receivedBuffer = [];
|
|
63
|
+
this.chunks = new ChunkAssembler();
|
|
50
64
|
}
|
|
51
65
|
get isConnected() {
|
|
52
66
|
return this._isConnected;
|
|
@@ -200,9 +214,19 @@ export class MatrixTransport {
|
|
|
200
214
|
// Ignore our own messages
|
|
201
215
|
if (event.sender === this.userId)
|
|
202
216
|
continue;
|
|
203
|
-
// Decode the Yjs update from base64
|
|
217
|
+
// Decode the Yjs update from base64 (a chunk of one above
|
|
218
|
+
// MAX_BODY_CHARS: reassemble first)
|
|
204
219
|
try {
|
|
205
|
-
|
|
220
|
+
let updateBase64 = event.content.body;
|
|
221
|
+
if (updateBase64.startsWith('{')) {
|
|
222
|
+
const parsed = JSON.parse(updateBase64);
|
|
223
|
+
if (!isChunk(parsed))
|
|
224
|
+
continue;
|
|
225
|
+
const whole = this.chunks.push(parsed);
|
|
226
|
+
if (whole === null)
|
|
227
|
+
continue;
|
|
228
|
+
updateBase64 = whole;
|
|
229
|
+
}
|
|
206
230
|
const update = this.base64ToUint8(updateBase64);
|
|
207
231
|
this.log(`📨 Received ${update.length} bytes from ${event.sender}`);
|
|
208
232
|
if (this.messageCallback) {
|
|
@@ -243,8 +267,22 @@ export class MatrixTransport {
|
|
|
243
267
|
return;
|
|
244
268
|
}
|
|
245
269
|
try {
|
|
246
|
-
// Encode update as base64 for JSON transport
|
|
270
|
+
// Encode update as base64 for JSON transport; above the event size
|
|
271
|
+
// cap, one event per chunk (each counts against rc_message - the
|
|
272
|
+
// only option Synapse leaves).
|
|
247
273
|
const base64Data = this.uint8ToBase64(data);
|
|
274
|
+
const bodies = base64Data.length > MAX_BODY_CHARS
|
|
275
|
+
? splitChunks(base64Data, MAX_BODY_CHARS).map((c) => JSON.stringify(c))
|
|
276
|
+
: [base64Data];
|
|
277
|
+
for (const body of bodies)
|
|
278
|
+
this.sendEvent(body, data.length);
|
|
279
|
+
}
|
|
280
|
+
catch (error) {
|
|
281
|
+
this.log('❌ Send error:', error);
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
sendEvent(body, byteCount) {
|
|
285
|
+
try {
|
|
248
286
|
// Send as custom message type
|
|
249
287
|
const txnId = `y${this.txnId++}_${Date.now()}`;
|
|
250
288
|
const url = `${this.config.homeserverUrl}/_matrix/client/v3/rooms/${encodeURIComponent(this.roomId)}/send/m.room.message/${txnId}`;
|
|
@@ -257,11 +295,11 @@ export class MatrixTransport {
|
|
|
257
295
|
},
|
|
258
296
|
body: JSON.stringify({
|
|
259
297
|
msgtype: 'y.update',
|
|
260
|
-
body
|
|
298
|
+
body,
|
|
261
299
|
}),
|
|
262
300
|
}).then((response) => {
|
|
263
301
|
if (response.ok) {
|
|
264
|
-
this.log(`📤 Sent ${
|
|
302
|
+
this.log(`📤 Sent ${byteCount} bytes`);
|
|
265
303
|
}
|
|
266
304
|
else {
|
|
267
305
|
this.log(`❌ Send failed: ${response.statusText}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/providers/matrix/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/providers/matrix/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,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
|
}
|
|
@@ -156,10 +197,13 @@ export declare class NostrTransport implements Transport {
|
|
|
156
197
|
* round trips.
|
|
157
198
|
*/
|
|
158
199
|
readonly preferredBatchMs = 150;
|
|
200
|
+
readonly preferredCompressMinBytes = 2048;
|
|
201
|
+
readonly expectedRttMs = 600;
|
|
159
202
|
private readonly opts;
|
|
160
203
|
private _connected;
|
|
161
204
|
private _callback?;
|
|
162
205
|
private _buffer;
|
|
206
|
+
private _chunks;
|
|
163
207
|
private pool;
|
|
164
208
|
private sub;
|
|
165
209
|
private relays;
|
|
@@ -167,11 +211,31 @@ export declare class NostrTransport implements Transport {
|
|
|
167
211
|
private pubkey;
|
|
168
212
|
private roomTag;
|
|
169
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;
|
|
170
224
|
constructor(opts: NostrTransportOptions);
|
|
171
225
|
get isConnected(): boolean;
|
|
172
226
|
connect(config: NostrConfig): Promise<void>;
|
|
173
227
|
disconnect(): void;
|
|
174
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;
|
|
175
239
|
onMessage(callback: (data: Uint8Array) => void): () => void;
|
|
176
240
|
private _deliver;
|
|
177
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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"}
|