@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
|
@@ -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,11 +38,8 @@
|
|
|
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
|
*/
|
|
41
45
|
import type { Transport, ConnectionConfig } from '../../transport';
|
|
@@ -54,14 +58,15 @@ export interface IndexedDBTransportOptions {
|
|
|
54
58
|
*/
|
|
55
59
|
version?: number;
|
|
56
60
|
/**
|
|
57
|
-
*
|
|
58
|
-
*
|
|
59
|
-
* @default 0
|
|
61
|
+
* Compact (merge every row into one) when the row count reaches this
|
|
62
|
+
* threshold; 0 = use `maxUpdates`.
|
|
63
|
+
* @default 0
|
|
60
64
|
*/
|
|
61
65
|
compactThreshold?: number;
|
|
62
66
|
/**
|
|
63
|
-
*
|
|
64
|
-
*
|
|
67
|
+
* Compact automatically at the threshold. Lossless since round 7 (it used
|
|
68
|
+
* to delete the oldest 90 % of rows - the document), hence on by default.
|
|
69
|
+
* @default true
|
|
65
70
|
*/
|
|
66
71
|
autoCompact?: boolean;
|
|
67
72
|
/**
|
|
@@ -70,8 +75,7 @@ export interface IndexedDBTransportOptions {
|
|
|
70
75
|
*/
|
|
71
76
|
debug?: boolean;
|
|
72
77
|
/**
|
|
73
|
-
*
|
|
74
|
-
* Prevents unbounded growth of the update log.
|
|
78
|
+
* Row count at which auto-compaction runs when `compactThreshold` is 0.
|
|
75
79
|
* @default 500
|
|
76
80
|
*/
|
|
77
81
|
maxUpdates?: number;
|
|
@@ -120,7 +124,12 @@ export declare class IndexedDBTransport implements Transport {
|
|
|
120
124
|
*/
|
|
121
125
|
disconnect(): void;
|
|
122
126
|
/**
|
|
123
|
-
*
|
|
127
|
+
* Store what the frame carries of the document - one row per frame that
|
|
128
|
+
* carries anything. Presence, beacons and requests are the provider's
|
|
129
|
+
* conversation with the room, and this transport is not the room: stored
|
|
130
|
+
* and replayed on the next load they resurrected the previous session's
|
|
131
|
+
* clientID as a phantom peer and were answered into the store again
|
|
132
|
+
* (round 7, item 6; test/dummy/bench-persist-log.ts).
|
|
124
133
|
*/
|
|
125
134
|
send(data: Uint8Array): void;
|
|
126
135
|
/**
|
|
@@ -128,16 +137,31 @@ export declare class IndexedDBTransport implements Transport {
|
|
|
128
137
|
*/
|
|
129
138
|
onMessage(callback: (data: Uint8Array) => void): () => void;
|
|
130
139
|
/**
|
|
131
|
-
* Load
|
|
140
|
+
* Load the stored document: every row merged into one update, handed to
|
|
141
|
+
* the provider as one SyncStep2 (`frameDocUpdate`: applied, `synced`
|
|
142
|
+
* fires, nothing is sent back) and written back as that one row. Every
|
|
143
|
+
* page load appends a full-document push (GenericProvider's connect), so
|
|
144
|
+
* without the trim the log grew by one document per load - y-indexeddb
|
|
145
|
+
* trims the same way at its PREFERRED_TRIM_SIZE.
|
|
132
146
|
*/
|
|
133
147
|
private loadUpdates;
|
|
148
|
+
/**
|
|
149
|
+
* The stored document as one update: every row read, merged and - when
|
|
150
|
+
* there was more than one, or one in the pre-round-7 frame format -
|
|
151
|
+
* written back as one row, all in one readwrite transaction (a
|
|
152
|
+
* concurrent send() queues behind it, so nothing added meanwhile can be
|
|
153
|
+
* cleared away). Rows that carry no document state (old presence or
|
|
154
|
+
* beacon frames) are dropped. Null for an empty store. Shared by
|
|
155
|
+
* loadUpdates() and compact().
|
|
156
|
+
*/
|
|
157
|
+
private mergeStore;
|
|
134
158
|
/**
|
|
135
159
|
* Check if compaction should be triggered.
|
|
136
160
|
*/
|
|
137
161
|
private shouldCompact;
|
|
138
162
|
/**
|
|
139
|
-
*
|
|
140
|
-
*
|
|
163
|
+
* Merge every stored row into one. Lossless - it used to delete the
|
|
164
|
+
* oldest 90 % of rows, i.e. the document (round 7, item 6).
|
|
141
165
|
*/
|
|
142
166
|
compact(): Promise<void>;
|
|
143
167
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/indexeddb/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/indexeddb/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AAclE;;GAEG;AACH,MAAM,WAAW,yBAAyB;IACxC;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAA;IAEf;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAA;IAEhB;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAA;IAEzB;;;;OAIG;IACH,WAAW,CAAC,EAAE,OAAO,CAAA;IAErB;;;OAGG;IACH,KAAK,CAAC,EAAE,OAAO,CAAA;IAEf;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAA;IAEnB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED;;;GAGG;AACH,qBAAa,kBAAmB,YAAW,SAAS;IAClD,OAAO,CAAC,OAAO,CAAqC;IACpD,OAAO,CAAC,EAAE,CAA2B;IACrC,OAAO,CAAC,MAAM,CAAa;IAC3B,OAAO,CAAC,KAAK,CAAa;IAC1B,OAAO,CAAC,eAAe,CAAC,CAA4B;IACpD,OAAO,CAAC,YAAY,CAAiB;IACrC,OAAO,CAAC,WAAW,CAAY;IAC/B,OAAO,CAAC,SAAS,CAAiB;gBAEtB,OAAO,GAAE,yBAA8B;IAYnD;;OAEG;IACH,OAAO,CAAC,GAAG;IAMX;;OAEG;IACH,IAAI,WAAW,IAAI,OAAO,CAEzB;IAED;;OAEG;IACH,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED;;OAEG;IACG,OAAO,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAqBtD;;OAEG;IACH,OAAO,CAAC,YAAY;IA0CpB;;OAEG;IACH,UAAU,IAAI,IAAI;IAiBlB;;;;;;;OAOG;IACH,IAAI,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI;IA8C5B;;OAEG;IACH,SAAS,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,UAAU,KAAK,IAAI,GAAG,MAAM,IAAI;IAe3D;;;;;;;OAOG;YACW,WAAW;IAoBzB;;;;;;;;OAQG;IACH,OAAO,CAAC,UAAU;IA2ClB;;OAEG;IACH,OAAO,CAAC,aAAa;IAYrB;;;OAGG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAU9B;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IA6B5B;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC;QACxB,WAAW,EAAE,MAAM,CAAA;QACnB,YAAY,EAAE,MAAM,CAAA;QACpB,SAAS,EAAE,MAAM,CAAA;KAClB,CAAC;IA2BF;;;OAGG;WACU,cAAc,CACzB,IAAI,EAAE,MAAM,EACZ,MAAM,GAAE,MAAc,GACrB,OAAO,CAAC,IAAI,CAAC;CAwBjB"}
|
|
@@ -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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"}
|
|
@@ -43,6 +43,15 @@ export interface MatrixConfig extends ConnectionConfig {
|
|
|
43
43
|
* ```
|
|
44
44
|
*/
|
|
45
45
|
export declare class MatrixTransport implements Transport {
|
|
46
|
+
/**
|
|
47
|
+
* Every send() is its own HTTP PUT request with no internal coalescing —
|
|
48
|
+
* unlike push-style transports, there's no cheaper round trip to lose by
|
|
49
|
+
* batching. Recommends GenericProvider debounce rapid edits by default.
|
|
50
|
+
*/
|
|
51
|
+
readonly preferredBatchMs = 2000;
|
|
52
|
+
readonly preferredAwarenessMs = 2000;
|
|
53
|
+
readonly preferredCompressMinBytes = 2048;
|
|
54
|
+
readonly expectedRttMs = 700;
|
|
46
55
|
private config;
|
|
47
56
|
private messageCallback?;
|
|
48
57
|
private _isConnected;
|
|
@@ -56,6 +65,7 @@ export declare class MatrixTransport implements Transport {
|
|
|
56
65
|
private txnId;
|
|
57
66
|
private messageQueue;
|
|
58
67
|
private receivedBuffer;
|
|
68
|
+
private chunks;
|
|
59
69
|
get isConnected(): boolean;
|
|
60
70
|
/**
|
|
61
71
|
* Connect to Matrix homeserver and join room
|
|
@@ -85,6 +95,7 @@ export declare class MatrixTransport implements Transport {
|
|
|
85
95
|
* Send Yjs update to Matrix room
|
|
86
96
|
*/
|
|
87
97
|
send(data: Uint8Array): void;
|
|
98
|
+
private sendEvent;
|
|
88
99
|
/**
|
|
89
100
|
* Register message callback
|
|
90
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
|
*
|
|
@@ -28,6 +32,21 @@
|
|
|
28
32
|
*/
|
|
29
33
|
export class MatrixTransport {
|
|
30
34
|
constructor() {
|
|
35
|
+
/**
|
|
36
|
+
* Every send() is its own HTTP PUT request with no internal coalescing —
|
|
37
|
+
* unlike push-style transports, there's no cheaper round trip to lose by
|
|
38
|
+
* batching. Recommends GenericProvider debounce rapid edits by default.
|
|
39
|
+
*/
|
|
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;
|
|
31
50
|
this.config = null;
|
|
32
51
|
this._isConnected = false;
|
|
33
52
|
this.debug = false;
|
|
@@ -41,6 +60,7 @@ export class MatrixTransport {
|
|
|
41
60
|
// Message buffering
|
|
42
61
|
this.messageQueue = [];
|
|
43
62
|
this.receivedBuffer = [];
|
|
63
|
+
this.chunks = new ChunkAssembler();
|
|
44
64
|
}
|
|
45
65
|
get isConnected() {
|
|
46
66
|
return this._isConnected;
|
|
@@ -194,9 +214,19 @@ export class MatrixTransport {
|
|
|
194
214
|
// Ignore our own messages
|
|
195
215
|
if (event.sender === this.userId)
|
|
196
216
|
continue;
|
|
197
|
-
// Decode the Yjs update from base64
|
|
217
|
+
// Decode the Yjs update from base64 (a chunk of one above
|
|
218
|
+
// MAX_BODY_CHARS: reassemble first)
|
|
198
219
|
try {
|
|
199
|
-
|
|
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
|
+
}
|
|
200
230
|
const update = this.base64ToUint8(updateBase64);
|
|
201
231
|
this.log(`📨 Received ${update.length} bytes from ${event.sender}`);
|
|
202
232
|
if (this.messageCallback) {
|
|
@@ -237,8 +267,22 @@ export class MatrixTransport {
|
|
|
237
267
|
return;
|
|
238
268
|
}
|
|
239
269
|
try {
|
|
240
|
-
// 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).
|
|
241
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 {
|
|
242
286
|
// Send as custom message type
|
|
243
287
|
const txnId = `y${this.txnId++}_${Date.now()}`;
|
|
244
288
|
const url = `${this.config.homeserverUrl}/_matrix/client/v3/rooms/${encodeURIComponent(this.roomId)}/send/m.room.message/${txnId}`;
|
|
@@ -251,11 +295,11 @@ export class MatrixTransport {
|
|
|
251
295
|
},
|
|
252
296
|
body: JSON.stringify({
|
|
253
297
|
msgtype: 'y.update',
|
|
254
|
-
body
|
|
298
|
+
body,
|
|
255
299
|
}),
|
|
256
300
|
}).then((response) => {
|
|
257
301
|
if (response.ok) {
|
|
258
|
-
this.log(`📤 Sent ${
|
|
302
|
+
this.log(`📤 Sent ${byteCount} bytes`);
|
|
259
303
|
}
|
|
260
304
|
else {
|
|
261
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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"}
|