orez-lite 0.12.5 → 0.12.7

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.
@@ -1,10 +1,16 @@
1
- const DATABASE_NAME = 'orez-sync-browser-host';
2
- const DATABASE_VERSION = 1;
3
- const STORE_NAME = 'snapshots';
4
- const SNAPSHOT_FORMAT_VERSION = 1;
1
+ const LEGACY_DATABASE_NAME = 'orez-sync-browser-host';
2
+ export const BROWSER_SYNC_HOST_DATABASE_PREFIX = 'orez-sync-browser-host:';
3
+ const MIGRATION_DATABASE_NAME = 'orez-sync-browser-host-migrations';
4
+ const DATABASE_VERSION = 2;
5
+ const MANIFEST_STORE_NAME = 'snapshot-manifests';
6
+ const CHUNK_STORE_NAME = 'snapshot-chunks';
7
+ const SNAPSHOT_FORMAT_VERSION = 2;
8
+ export const SNAPSHOT_CHUNK_BYTES = 64 * 1024;
5
9
  function requestResult(request) {
6
10
  return new Promise((resolve, reject) => {
7
- request.addEventListener('success', () => resolve(request.result), { once: true });
11
+ request.addEventListener('success', () => resolve(request.result), {
12
+ once: true,
13
+ });
8
14
  request.addEventListener('error', () => reject(request.error ?? new Error('IndexedDB request failed')), { once: true });
9
15
  });
10
16
  }
@@ -15,108 +21,317 @@ function transactionDone(transaction) {
15
21
  transaction.addEventListener('error', () => reject(transaction.error ?? new Error('IndexedDB transaction failed')), { once: true });
16
22
  });
17
23
  }
18
- async function openSnapshotDatabase() {
19
- const request = indexedDB.open(DATABASE_NAME, DATABASE_VERSION);
20
- request.addEventListener('upgradeneeded', () => {
21
- if (!request.result.objectStoreNames.contains(STORE_NAME)) {
22
- request.result.createObjectStore(STORE_NAME, { keyPath: 'storageKey' });
24
+ async function deleteLegacySnapshotDatabases() {
25
+ const databases = await indexedDB.databases();
26
+ const obsoleteNames = databases.flatMap((database) => {
27
+ if (database.name === LEGACY_DATABASE_NAME)
28
+ return [database.name];
29
+ if (database.name === MIGRATION_DATABASE_NAME)
30
+ return [database.name];
31
+ return [];
32
+ });
33
+ await Promise.all(obsoleteNames.map((name) => deleteDatabase(name)));
34
+ }
35
+ async function openCurrentSnapshotDatabase(storageKey) {
36
+ const databaseName = snapshotDatabaseName(storageKey);
37
+ let obsolete = false;
38
+ const request = indexedDB.open(databaseName, DATABASE_VERSION);
39
+ request.addEventListener('upgradeneeded', (event) => {
40
+ if (event.oldVersion === 1) {
41
+ obsolete = true;
42
+ request.transaction?.abort();
43
+ return;
44
+ }
45
+ if (!request.result.objectStoreNames.contains(MANIFEST_STORE_NAME)) {
46
+ request.result.createObjectStore(MANIFEST_STORE_NAME, {
47
+ keyPath: 'storageKey',
48
+ });
49
+ }
50
+ if (!request.result.objectStoreNames.contains(CHUNK_STORE_NAME)) {
51
+ request.result.createObjectStore(CHUNK_STORE_NAME, { keyPath: 'key' });
23
52
  }
24
53
  });
25
- return requestResult(request);
54
+ try {
55
+ const database = await requestResult(request);
56
+ database.addEventListener('versionchange', () => database.close());
57
+ return database;
58
+ }
59
+ catch (error) {
60
+ if (obsolete)
61
+ return null;
62
+ throw error;
63
+ }
64
+ }
65
+ async function openSnapshotDatabase(storageKey) {
66
+ let database = await openCurrentSnapshotDatabase(storageKey);
67
+ if (!database) {
68
+ await deleteDatabase(snapshotDatabaseName(storageKey));
69
+ await deleteLegacySnapshotDatabases();
70
+ database = await openCurrentSnapshotDatabase(storageKey);
71
+ if (!database)
72
+ throw new Error(`could not replace obsolete snapshot ${storageKey}`);
73
+ }
74
+ const transaction = database.transaction(MANIFEST_STORE_NAME, 'readonly');
75
+ const done = transactionDone(transaction);
76
+ const manifest = await requestResult(transaction.objectStore(MANIFEST_STORE_NAME).get(storageKey));
77
+ await done;
78
+ if (manifest === undefined)
79
+ await deleteLegacySnapshotDatabases();
80
+ return database;
81
+ }
82
+ function snapshotDatabaseName(storageKey) {
83
+ return `${BROWSER_SYNC_HOST_DATABASE_PREFIX}${storageKey}`;
84
+ }
85
+ function chunkKey(path, index) {
86
+ return `${path.length}:${path}:${index}`;
87
+ }
88
+ function chunkHash(data, start, end) {
89
+ let first = 0x811c9dc5;
90
+ let second = 0x9e3779b9;
91
+ const view = new DataView(data.buffer, data.byteOffset + start, end - start);
92
+ const wordBytes = view.byteLength & ~3;
93
+ let offset = 0;
94
+ for (; offset < wordBytes; offset += 4) {
95
+ const word = view.getUint32(offset, true);
96
+ first = Math.imul(first ^ word, 0x01000193);
97
+ second = Math.imul(second ^ word, 0x27d4eb2d);
98
+ }
99
+ for (; offset < view.byteLength; offset++) {
100
+ const byte = view.getUint8(offset);
101
+ first = Math.imul(first ^ byte, 0x01000193);
102
+ second = Math.imul(second ^ byte, 0x27d4eb2d);
103
+ }
104
+ return { first: first >>> 0, second: second >>> 0 };
105
+ }
106
+ function chunkHashesEqual(left, right) {
107
+ return left.first === right.first && left.second === right.second;
108
+ }
109
+ async function deleteDatabase(name) {
110
+ const request = indexedDB.deleteDatabase(name);
111
+ await requestResult(request);
26
112
  }
27
113
  export async function deleteBrowserSyncHostSnapshot(storageKey) {
28
114
  if (!storageKey)
29
115
  throw new TypeError('storageKey must not be empty');
30
- const database = await openSnapshotDatabase();
31
- try {
32
- const transaction = database.transaction(STORE_NAME, 'readwrite');
33
- transaction.objectStore(STORE_NAME).delete(storageKey);
34
- await transactionDone(transaction);
35
- }
36
- finally {
37
- database.close();
38
- }
116
+ await navigator.locks.request(snapshotDatabaseName(storageKey), async () => {
117
+ await deleteLegacySnapshotDatabases();
118
+ await deleteDatabase(snapshotDatabaseName(storageKey));
119
+ });
39
120
  }
40
- function validateSnapshot(value, storageKey) {
121
+ function validateManifest(value, storageKey) {
41
122
  if (!value || typeof value !== 'object') {
42
- throw new Error(`invalid browser database snapshot for ${storageKey}`);
123
+ throw new Error(`invalid browser database snapshot manifest for ${storageKey}`);
43
124
  }
44
- const record = value;
45
- if (record.storageKey !== storageKey) {
46
- throw new Error(`browser database snapshot key mismatch for ${storageKey}`);
125
+ // indexeddb returns untyped structured-clone data, so validation below owns this cast.
126
+ const manifest = value;
127
+ if (manifest.storageKey !== storageKey) {
128
+ throw new Error(`browser database snapshot manifest key mismatch for ${storageKey}`);
47
129
  }
48
- if (record.formatVersion !== SNAPSHOT_FORMAT_VERSION) {
49
- throw new Error(`unsupported browser database snapshot format ${String(record.formatVersion)}`);
130
+ if (manifest.formatVersion !== SNAPSHOT_FORMAT_VERSION) {
131
+ throw new Error(`unsupported browser database snapshot format ${String(manifest.formatVersion)}`);
50
132
  }
51
- if (!Array.isArray(record.files)) {
52
- throw new Error(`browser database snapshot has no files for ${storageKey}`);
133
+ if (!Array.isArray(manifest.files)) {
134
+ throw new Error(`browser database snapshot manifest has no files for ${storageKey}`);
53
135
  }
54
136
  const paths = new Set();
55
- for (const file of record.files) {
137
+ for (const file of manifest.files) {
56
138
  if (!file ||
57
139
  typeof file.path !== 'string' ||
58
140
  !Number.isSafeInteger(file.size) ||
59
141
  file.size < 0 ||
60
- !(file.data instanceof ArrayBuffer) ||
61
- file.size > file.data.byteLength ||
142
+ !Array.isArray(file.hashes) ||
143
+ file.hashes.length !== Math.ceil(file.size / SNAPSHOT_CHUNK_BYTES) ||
144
+ file.hashes.some((hash) => !hash ||
145
+ typeof hash !== 'object' ||
146
+ !Number.isSafeInteger(Reflect.get(hash, 'first')) ||
147
+ Reflect.get(hash, 'first') < 0 ||
148
+ Reflect.get(hash, 'first') > 0xffffffff ||
149
+ !Number.isSafeInteger(Reflect.get(hash, 'second')) ||
150
+ Reflect.get(hash, 'second') < 0 ||
151
+ Reflect.get(hash, 'second') > 0xffffffff) ||
62
152
  paths.has(file.path)) {
63
- throw new Error(`invalid browser database snapshot file for ${storageKey}`);
153
+ throw new Error(`invalid browser database snapshot manifest file for ${storageKey}`);
64
154
  }
65
155
  paths.add(file.path);
66
156
  }
67
- return record;
157
+ return manifest;
158
+ }
159
+ function validateChunk(value, path, index, size) {
160
+ if (!value || typeof value !== 'object') {
161
+ throw new Error(`missing browser database snapshot chunk ${path}:${index}`);
162
+ }
163
+ // indexeddb returns untyped structured-clone data, so validation below owns this cast.
164
+ const chunk = value;
165
+ if (chunk.key !== chunkKey(path, index) ||
166
+ chunk.path !== path ||
167
+ chunk.index !== index ||
168
+ !(chunk.data instanceof ArrayBuffer) ||
169
+ chunk.data.byteLength !== size) {
170
+ throw new Error(`invalid browser database snapshot chunk ${path}:${index}`);
171
+ }
172
+ return chunk.data;
173
+ }
174
+ function manifestFor(module, storageKey) {
175
+ const files = Object.entries(module._memfs.files).map(([path, file]) => {
176
+ if (!Number.isSafeInteger(file.size) ||
177
+ file.size < 0 ||
178
+ file.size > file.data.length) {
179
+ throw new Error(`invalid Bedrock VFS file ${path}`);
180
+ }
181
+ const hashes = [];
182
+ for (let offset = 0; offset < file.size; offset += SNAPSHOT_CHUNK_BYTES) {
183
+ hashes.push(chunkHash(file.data, offset, Math.min(offset + SNAPSHOT_CHUNK_BYTES, file.size)));
184
+ }
185
+ return { path, size: file.size, hashes };
186
+ });
187
+ files.sort((left, right) => left.path.localeCompare(right.path));
188
+ return {
189
+ storageKey,
190
+ formatVersion: SNAPSHOT_FORMAT_VERSION,
191
+ files,
192
+ };
68
193
  }
69
194
  export class IndexedDbSnapshotStore {
70
195
  storageKey;
71
196
  #database;
197
+ #manifest = null;
198
+ #releaseLock = null;
72
199
  constructor(storageKey) {
73
200
  this.storageKey = storageKey;
74
201
  if (!storageKey)
75
202
  throw new TypeError('storageKey must not be empty');
76
- this.#database = openSnapshotDatabase();
203
+ const lockReleased = new Promise((resolve) => {
204
+ this.#releaseLock = resolve;
205
+ });
206
+ this.#database = new Promise((resolve, reject) => {
207
+ navigator.locks
208
+ .request(snapshotDatabaseName(storageKey), async () => {
209
+ try {
210
+ resolve(await openSnapshotDatabase(storageKey));
211
+ await lockReleased;
212
+ }
213
+ catch (error) {
214
+ reject(error);
215
+ }
216
+ })
217
+ .catch(reject);
218
+ });
77
219
  }
78
220
  async restore(module) {
79
221
  const database = await this.#database;
80
- const transaction = database.transaction(STORE_NAME, 'readonly');
81
- const value = await requestResult(transaction.objectStore(STORE_NAME).get(this.storageKey));
82
- await transactionDone(transaction);
83
- if (value === undefined)
84
- return false;
85
- const snapshot = validateSnapshot(value, this.storageKey);
86
- const files = {};
87
- for (const file of snapshot.files) {
88
- const data = new Uint8Array(file.data.slice(0));
89
- files[file.path] = { data, size: file.size };
222
+ const transaction = database.transaction([MANIFEST_STORE_NAME, CHUNK_STORE_NAME], 'readonly');
223
+ const done = transactionDone(transaction);
224
+ const [manifestValue, chunkValues] = await Promise.all([
225
+ requestResult(transaction.objectStore(MANIFEST_STORE_NAME).get(this.storageKey)),
226
+ requestResult(transaction.objectStore(CHUNK_STORE_NAME).getAll()),
227
+ ]);
228
+ await done;
229
+ if (manifestValue !== undefined) {
230
+ try {
231
+ const manifest = validateManifest(manifestValue, this.storageKey);
232
+ const chunks = new Map();
233
+ for (const value of chunkValues) {
234
+ if (value && typeof value === 'object') {
235
+ const key = Reflect.get(value, 'key');
236
+ if (typeof key === 'string')
237
+ chunks.set(key, value);
238
+ }
239
+ }
240
+ const files = {};
241
+ for (const file of manifest.files) {
242
+ const data = new Uint8Array(file.size);
243
+ for (const [index, hash] of file.hashes.entries()) {
244
+ const offset = index * SNAPSHOT_CHUNK_BYTES;
245
+ const size = Math.min(SNAPSHOT_CHUNK_BYTES, file.size - offset);
246
+ const chunk = validateChunk(chunks.get(chunkKey(file.path, index)), file.path, index, size);
247
+ const bytes = new Uint8Array(chunk);
248
+ if (!chunkHashesEqual(chunkHash(bytes, 0, bytes.byteLength), hash)) {
249
+ throw new Error(`browser database snapshot chunk hash mismatch ${file.path}:${index}`);
250
+ }
251
+ data.set(bytes, offset);
252
+ }
253
+ files[file.path] = { data, size: file.size };
254
+ }
255
+ module._memfs.files = files;
256
+ this.#manifest = manifest;
257
+ return true;
258
+ }
259
+ catch {
260
+ const discard = database.transaction([MANIFEST_STORE_NAME, CHUNK_STORE_NAME], 'readwrite');
261
+ const discarded = transactionDone(discard);
262
+ discard.objectStore(MANIFEST_STORE_NAME).clear();
263
+ discard.objectStore(CHUNK_STORE_NAME).clear();
264
+ await discarded;
265
+ this.#manifest = null;
266
+ return false;
267
+ }
90
268
  }
91
- module._memfs.files = files;
92
- return true;
269
+ return false;
93
270
  }
94
271
  async checkpoint(module) {
95
- const files = Object.entries(module._memfs.files).map(([path, file]) => {
96
- if (!Number.isSafeInteger(file.size) ||
97
- file.size < 0 ||
98
- file.size > file.data.length) {
99
- throw new Error(`invalid Bedrock VFS file ${path}`);
100
- }
101
- return {
102
- path,
103
- size: file.size,
104
- data: file.data.slice(0, file.size).buffer,
105
- };
106
- });
107
- const record = {
108
- storageKey: this.storageKey,
109
- formatVersion: SNAPSHOT_FORMAT_VERSION,
110
- files,
111
- };
272
+ const manifest = manifestFor(module, this.storageKey);
273
+ const previousFiles = new Map((this.#manifest?.files ?? []).map((file) => [file.path, file]));
274
+ let snapshotBytes = 0;
275
+ let snapshotChunks = 0;
276
+ let writtenBytes = 0;
277
+ let writtenChunks = 0;
112
278
  const database = await this.#database;
113
- const transaction = database.transaction(STORE_NAME, 'readwrite');
114
- transaction.objectStore(STORE_NAME).put(record);
115
- await transactionDone(transaction);
279
+ const transaction = database.transaction([MANIFEST_STORE_NAME, CHUNK_STORE_NAME], 'readwrite');
280
+ const done = transactionDone(transaction);
281
+ const chunkStore = transaction.objectStore(CHUNK_STORE_NAME);
282
+ // keep this diff and the manifest put synchronous; an await can auto-commit the atomic transaction early
283
+ for (const file of manifest.files) {
284
+ snapshotBytes += file.size;
285
+ snapshotChunks += file.hashes.length;
286
+ const previous = previousFiles.get(file.path);
287
+ const source = module._memfs.files[file.path];
288
+ for (let index = 0; index < file.hashes.length; index++) {
289
+ const offset = index * SNAPSHOT_CHUNK_BYTES;
290
+ const currentSize = Math.min(SNAPSHOT_CHUNK_BYTES, file.size - offset);
291
+ const previousHash = previous?.hashes[index];
292
+ const previousSize = previous
293
+ ? Math.min(SNAPSHOT_CHUNK_BYTES, previous.size - offset)
294
+ : -1;
295
+ if (previousHash &&
296
+ previousSize === currentSize &&
297
+ chunkHashesEqual(previousHash, file.hashes[index])) {
298
+ continue;
299
+ }
300
+ const data = source.data.slice(offset, offset + currentSize).buffer;
301
+ const chunk = {
302
+ key: chunkKey(file.path, index),
303
+ path: file.path,
304
+ index,
305
+ data,
306
+ };
307
+ chunkStore.put(chunk);
308
+ writtenBytes += data.byteLength;
309
+ writtenChunks++;
310
+ }
311
+ for (let index = file.hashes.length; index < (previous?.hashes.length ?? 0); index++) {
312
+ chunkStore.delete(chunkKey(file.path, index));
313
+ }
314
+ previousFiles.delete(file.path);
315
+ }
316
+ for (const previous of previousFiles.values()) {
317
+ for (let index = 0; index < previous.hashes.length; index++) {
318
+ chunkStore.delete(chunkKey(previous.path, index));
319
+ }
320
+ }
321
+ transaction.objectStore(MANIFEST_STORE_NAME).put(manifest);
322
+ await done;
323
+ this.#manifest = manifest;
324
+ return { snapshotBytes, writtenBytes, snapshotChunks, writtenChunks };
116
325
  }
117
326
  async close() {
118
- ;
119
- (await this.#database).close();
327
+ try {
328
+ ;
329
+ (await this.#database).close();
330
+ }
331
+ finally {
332
+ this.#releaseLock?.();
333
+ this.#releaseLock = null;
334
+ }
120
335
  }
121
336
  }
122
337
  //# sourceMappingURL=idb-snapshot.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"idb-snapshot.js","sourceRoot":"","sources":["../../../sync-browser-host/src/idb-snapshot.ts"],"names":[],"mappings":"AAEA,MAAM,aAAa,GAAG,wBAAwB,CAAA;AAC9C,MAAM,gBAAgB,GAAG,CAAC,CAAA;AAC1B,MAAM,UAAU,GAAG,WAAW,CAAA;AAC9B,MAAM,uBAAuB,GAAG,CAAC,CAAA;AAcjC,SAAS,aAAa,CAAQ,OAA0B;IACtD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,OAAO,CAAC,gBAAgB,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAA;QAClF,OAAO,CAAC,gBAAgB,CACtB,OAAO,EACP,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,IAAI,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC,EACpE,EAAE,IAAI,EAAE,IAAI,EAAE,CACf,CAAA;IACH,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,SAAS,eAAe,CAAC,WAA2B;IAClD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,WAAW,CAAC,gBAAgB,CAAC,UAAU,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAA;QACzE,WAAW,CAAC,gBAAgB,CAC1B,OAAO,EACP,GAAG,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,IAAI,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC,EAC7E,EAAE,IAAI,EAAE,IAAI,EAAE,CACf,CAAA;QACD,WAAW,CAAC,gBAAgB,CAC1B,OAAO,EACP,GAAG,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,IAAI,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC,EAC5E,EAAE,IAAI,EAAE,IAAI,EAAE,CACf,CAAA;IACH,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,KAAK,UAAU,oBAAoB;IACjC,MAAM,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,aAAa,EAAE,gBAAgB,CAAC,CAAA;IAC/D,OAAO,CAAC,gBAAgB,CAAC,eAAe,EAAE,GAAG,EAAE;QAC7C,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;YAC1D,OAAO,CAAC,MAAM,CAAC,iBAAiB,CAAC,UAAU,EAAE,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC,CAAA;QACzE,CAAC;IACH,CAAC,CAAC,CAAA;IACF,OAAO,aAAa,CAAC,OAAO,CAAC,CAAA;AAC/B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,6BAA6B,CAAC,UAAkB;IACpE,IAAI,CAAC,UAAU;QAAE,MAAM,IAAI,SAAS,CAAC,8BAA8B,CAAC,CAAA;IAEpE,MAAM,QAAQ,GAAG,MAAM,oBAAoB,EAAE,CAAA;IAC7C,IAAI,CAAC;QACH,MAAM,WAAW,GAAG,QAAQ,CAAC,WAAW,CAAC,UAAU,EAAE,WAAW,CAAC,CAAA;QACjE,WAAW,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;QACtD,MAAM,eAAe,CAAC,WAAW,CAAC,CAAA;IACpC,CAAC;YAAS,CAAC;QACT,QAAQ,CAAC,KAAK,EAAE,CAAA;IAClB,CAAC;AACH,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAc,EAAE,UAAkB;IAC1D,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACxC,MAAM,IAAI,KAAK,CAAC,yCAAyC,UAAU,EAAE,CAAC,CAAA;IACxE,CAAC;IACD,MAAM,MAAM,GAAG,KAAgC,CAAA;IAC/C,IAAI,MAAM,CAAC,UAAU,KAAK,UAAU,EAAE,CAAC;QACrC,MAAM,IAAI,KAAK,CAAC,8CAA8C,UAAU,EAAE,CAAC,CAAA;IAC7E,CAAC;IACD,IAAI,MAAM,CAAC,aAAa,KAAK,uBAAuB,EAAE,CAAC;QACrD,MAAM,IAAI,KAAK,CACb,gDAAgD,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,CAC/E,CAAA;IACH,CAAC;IACD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;QACjC,MAAM,IAAI,KAAK,CAAC,8CAA8C,UAAU,EAAE,CAAC,CAAA;IAC7E,CAAC;IACD,MAAM,KAAK,GAAG,IAAI,GAAG,EAAU,CAAA;IAC/B,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;QAChC,IACE,CAAC,IAAI;YACL,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ;YAC7B,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;YAChC,IAAI,CAAC,IAAI,GAAG,CAAC;YACb,CAAC,CAAC,IAAI,CAAC,IAAI,YAAY,WAAW,CAAC;YACnC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU;YAChC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EACpB,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,8CAA8C,UAAU,EAAE,CAAC,CAAA;QAC7E,CAAC;QACD,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACtB,CAAC;IACD,OAAO,MAAwB,CAAA;AACjC,CAAC;AAED,MAAM,OAAO,sBAAsB;IAGZ;IAFZ,SAAS,CAAsB;IAExC,YAAqB,UAAkB;QAAlB,eAAU,GAAV,UAAU,CAAQ;QACrC,IAAI,CAAC,UAAU;YAAE,MAAM,IAAI,SAAS,CAAC,8BAA8B,CAAC,CAAA;QACpE,IAAI,CAAC,SAAS,GAAG,oBAAoB,EAAE,CAAA;IACzC,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,MAA4B;QACxC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,SAAS,CAAA;QACrC,MAAM,WAAW,GAAG,QAAQ,CAAC,WAAW,CAAC,UAAU,EAAE,UAAU,CAAC,CAAA;QAChE,MAAM,KAAK,GAAG,MAAM,aAAa,CAC/B,WAAW,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CACzD,CAAA;QACD,MAAM,eAAe,CAAC,WAAW,CAAC,CAAA;QAClC,IAAI,KAAK,KAAK,SAAS;YAAE,OAAO,KAAK,CAAA;QAErC,MAAM,QAAQ,GAAG,gBAAgB,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,CAAA;QACzD,MAAM,KAAK,GAA4C,EAAE,CAAA;QACzD,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;YAClC,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;YAC/C,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAA;QAC9C,CAAC;QACD,MAAM,CAAC,MAAM,CAAC,KAAK,GAAG,KAAK,CAAA;QAC3B,OAAO,IAAI,CAAA;IACb,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,MAA4B;QAC3C,MAAM,KAAK,GAAmB,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,CACnE,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE;YACf,IACE,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;gBAChC,IAAI,CAAC,IAAI,GAAG,CAAC;gBACb,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAC5B,CAAC;gBACD,MAAM,IAAI,KAAK,CAAC,4BAA4B,IAAI,EAAE,CAAC,CAAA;YACrD,CAAC;YACD,OAAO;gBACL,IAAI;gBACJ,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM;aAC3C,CAAA;QACH,CAAC,CACF,CAAA;QACD,MAAM,MAAM,GAAmB;YAC7B,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,aAAa,EAAE,uBAAuB;YACtC,KAAK;SACN,CAAA;QAED,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,SAAS,CAAA;QACrC,MAAM,WAAW,GAAG,QAAQ,CAAC,WAAW,CAAC,UAAU,EAAE,WAAW,CAAC,CAAA;QACjE,WAAW,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;QAC/C,MAAM,eAAe,CAAC,WAAW,CAAC,CAAA;IACpC,CAAC;IAED,KAAK,CAAC,KAAK;QACT,CAAC;QAAA,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,CAAA;IACjC,CAAC;CACF"}
1
+ {"version":3,"file":"idb-snapshot.js","sourceRoot":"","sources":["../../../sync-browser-host/src/idb-snapshot.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  export { createBrowserSyncHost } from './host.js';
2
- export { deleteBrowserSyncHostSnapshot } from './idb-snapshot.js';
2
+ export { BROWSER_SYNC_HOST_DATABASE_PREFIX, deleteBrowserSyncHostSnapshot, } from './idb-snapshot.js';
3
3
  export { createBrowserSyncHostPortClient, serveBrowserSyncHostPort, } from './message-port.js';
4
- export { type BrowserSyncHost, type BrowserSyncHostAssets, type BrowserSyncHostConfig, type BrowserSyncHostPortClient, type SyncSql, } from './types.js';
4
+ export { type BrowserSyncHost, type BrowserSyncHostAssets, type BrowserSyncHostConfig, type BrowserSyncHostDiagnostic, type BrowserSyncHostDiagnostics, type BrowserSyncHostOperation, type BrowserSyncHostPortClient, type BrowserSyncHostTransaction, type SyncSql, } from './types.js';
5
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../sync-browser-host/src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAA;AACjD,OAAO,EAAE,6BAA6B,EAAE,MAAM,mBAAmB,CAAA;AACjE,OAAO,EACL,+BAA+B,EAC/B,wBAAwB,GACzB,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,qBAAqB,EAC1B,KAAK,qBAAqB,EAC1B,KAAK,yBAAyB,EAC9B,KAAK,OAAO,GACb,MAAM,YAAY,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../sync-browser-host/src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAA;AACjD,OAAO,EACL,iCAAiC,EACjC,6BAA6B,GAC9B,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EACL,+BAA+B,EAC/B,wBAAwB,GACzB,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,qBAAqB,EAC1B,KAAK,qBAAqB,EAC1B,KAAK,yBAAyB,EAC9B,KAAK,0BAA0B,EAC/B,KAAK,wBAAwB,EAC7B,KAAK,yBAAyB,EAC9B,KAAK,0BAA0B,EAC/B,KAAK,OAAO,GACb,MAAM,YAAY,CAAA"}
@@ -1,5 +1,5 @@
1
1
  export { createBrowserSyncHost } from './host.js';
2
- export { deleteBrowserSyncHostSnapshot } from './idb-snapshot.js';
2
+ export { BROWSER_SYNC_HOST_DATABASE_PREFIX, deleteBrowserSyncHostSnapshot, } from './idb-snapshot.js';
3
3
  export { createBrowserSyncHostPortClient, serveBrowserSyncHostPort, } from './message-port.js';
4
4
  export {} from './types.js';
5
5
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../sync-browser-host/src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAA;AACjD,OAAO,EAAE,6BAA6B,EAAE,MAAM,mBAAmB,CAAA;AACjE,OAAO,EACL,+BAA+B,EAC/B,wBAAwB,GACzB,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAMN,MAAM,YAAY,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../sync-browser-host/src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAA;AACjD,OAAO,EACL,iCAAiC,EACjC,6BAA6B,GAC9B,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EACL,+BAA+B,EAC/B,wBAAwB,GACzB,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAUN,MAAM,YAAY,CAAA"}
@@ -9,6 +9,29 @@ export type BrowserSyncHostAssets = {
9
9
  sqliteWasmUrl?: string | URL;
10
10
  syncWasmUrl?: string | URL;
11
11
  };
12
+ export type BrowserSyncHostOperation = 'executor-push' | 'executor-execute' | 'executor-transaction' | 'executor-query' | 'pull' | 'push' | 'query' | 'exec';
13
+ export type BrowserSyncHostTransaction = 'bootstrap' | 'mutation' | 'pull' | 'maintenance' | 'direct';
14
+ export type BrowserSyncHostDiagnostic = {
15
+ stage: 'operation' | 'checkpoint' | 'restore';
16
+ phase: 'queued' | 'started' | 'completed' | 'failed';
17
+ storageKey: string;
18
+ operation: BrowserSyncHostOperation | null;
19
+ operationId: number | null;
20
+ transaction: BrowserSyncHostTransaction | null;
21
+ timestamp: number;
22
+ queueDepth: number;
23
+ waitMs: number | null;
24
+ durationMs: number | null;
25
+ snapshotBytes?: number;
26
+ writtenBytes?: number;
27
+ snapshotChunks?: number;
28
+ writtenChunks?: number;
29
+ error?: string;
30
+ };
31
+ export type BrowserSyncHostDiagnostics = {
32
+ enabled(): boolean;
33
+ callback(diagnostic: BrowserSyncHostDiagnostic): void;
34
+ };
12
35
  export type BrowserSyncHostConfig<S extends Schema = Schema, A extends AuthData = AuthData> = {
13
36
  storageKey: string;
14
37
  assets?: BrowserSyncHostAssets;
@@ -27,6 +50,11 @@ export type BrowserSyncHostConfig<S extends Schema = Schema, A extends AuthData
27
50
  retainChanges?: number;
28
51
  transactionQueryBudget?: Partial<TransactionQueryBudget>;
29
52
  onDataChanged?: () => void;
53
+ /**
54
+ * Start/stop-gated operation timing. `enabled()` is checked before an event
55
+ * is allocated, and callback failures never affect database work.
56
+ */
57
+ diagnostics?: BrowserSyncHostDiagnostics;
30
58
  };
31
59
  export interface BrowserSyncHost<S extends Schema = Schema> {
32
60
  readonly executor: SyncExecutor<S>;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../sync-browser-host/src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../sync-browser-host/src/types.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import type { DurableSqlStorage } from './watermark.js';
2
2
  /** Bump whenever the generated trigger bodies or buffer shape change. */
3
- export declare const CDC_SCHEMA_VERSION = 2;
3
+ export declare const CDC_SCHEMA_VERSION = 3;
4
4
  export interface CdcTableRegistration {
5
5
  /** Physical, flattened SQLite table name. */
6
6
  physicalTableName: string;
@@ -1 +1 @@
1
- {"version":3,"file":"cdc.d.ts","sourceRoot":"","sources":["../../src/cf-do/cdc.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cdc.d.ts","sourceRoot":"","sources":["../../src/cf-do/cdc.ts"],"names":[],"mappings":"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"}
package/dist/cf-do/cdc.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import { stripPublicPrefix } from '../do-sql-tracking.js';
2
2
  /** Bump whenever the generated trigger bodies or buffer shape change. */
3
- export const CDC_SCHEMA_VERSION = 2;
3
+ export const CDC_SCHEMA_VERSION = 3;
4
4
  const CDC_TABLES = '_orez_cdc_tables';
5
5
  const CDC_BUFFER = '_orez_cdc_buffer';
6
6
  const CDC_TRIGGER_PREFIX = '_orez_cdc_';
@@ -600,7 +600,12 @@ export class TransactionalCdc {
600
600
  const logicalTable = quoteLiteral(registration.tableName);
601
601
  const [insertName, updateName, deleteName] = triggerNames(registration.physicalTableName).map(quoteIdent);
602
602
  const columns = identity.columns;
603
- const newRow = jsonObject('NEW', columns);
603
+ // rollback-only tables never enter the changefeed. Their new image is used
604
+ // only to find the row during undo, so capture its primary key instead of
605
+ // duplicating every value. The old image stays complete because UPDATE and
606
+ // DELETE rollback restore it. This keeps wide internal rows such as the
607
+ // packed ledger below Durable Object SQLite's 2 MB row limit.
608
+ const newRow = jsonObject('NEW', registration.publish ? columns : identity.keyColumns);
604
609
  const oldRow = jsonObject('OLD', columns);
605
610
  const newRowid = rowidSql('NEW', identity);
606
611
  const oldRowid = rowidSql('OLD', identity);
@@ -651,7 +656,7 @@ export class TransactionalCdc {
651
656
  this.triggersExist(physicalTableName);
652
657
  if (!unchanged) {
653
658
  this.dropTriggers(physicalTableName);
654
- this.installTriggers({ physicalTableName, tableName }, identity);
659
+ this.installTriggers({ physicalTableName, tableName, publish }, identity);
655
660
  this.sql.exec(`INSERT OR REPLACE INTO ${quoteIdent(CDC_TABLES)} ` +
656
661
  '(physical_table, table_name, columns_json, publish, schema_version) VALUES (?, ?, ?, ?, ?)', physicalTableName, tableName, JSON.stringify(capturedColumns), publish ? 1 : 0, CDC_SCHEMA_VERSION);
657
662
  this.#registrations.set(physicalTableName, {
@@ -716,17 +721,18 @@ export class TransactionalCdc {
716
721
  const registration = this.#registrations.get(physicalTableName);
717
722
  const rowJournal = parseJournalRecord(row.row_json);
718
723
  const oldJournal = parseJournalRecord(row.old_json);
724
+ const publish = registration?.publish !== false;
719
725
  return {
720
726
  physicalTableName,
721
727
  tableName,
722
728
  op: String(row.op),
723
- rowData: journalToWire(rowJournal),
724
- oldData: journalToWire(oldJournal),
729
+ rowData: publish ? journalToWire(rowJournal) : null,
730
+ oldData: publish ? journalToWire(oldJournal) : null,
725
731
  rowJournal,
726
732
  oldJournal,
727
733
  newRowid: row.new_rowid === null ? null : String(row.new_rowid),
728
734
  oldRowid: row.old_rowid === null ? null : String(row.old_rowid),
729
- ...(registration?.publish === false ? { publish: false } : null),
735
+ ...(publish ? null : { publish: false }),
730
736
  };
731
737
  });
732
738
  }