@vibes.diy/vibe-runtime 9.3.0 → 9.4.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.
@@ -1,14 +1,50 @@
1
1
  import { type DocResponse, type DocTypes, type DocWithId, type FireflyQueryDatabase, type IndexRow, type ListenerFn, type MapFnArg, type QueryOpts, type QueryResponse } from "./firefly-database.js";
2
+ export interface SyncDocMeta {
3
+ docId: string;
4
+ seq: number;
5
+ channels: string[];
6
+ }
7
+ export interface PushQueueEntry {
8
+ id: number;
9
+ docId: string;
10
+ deleted: boolean;
11
+ }
12
+ export type RemoteSyncEntry = {
13
+ op: "put";
14
+ docId: string;
15
+ seq: number;
16
+ channels: string[];
17
+ doc: DocTypes;
18
+ } | {
19
+ op: "delete";
20
+ docId: string;
21
+ seq?: number;
22
+ } | {
23
+ op: "evict";
24
+ docId: string;
25
+ channel: string;
26
+ };
27
+ export interface SnapshotEntry {
28
+ docId: string;
29
+ seq: number;
30
+ channels: string[];
31
+ doc: DocTypes;
32
+ }
2
33
  export declare class IndexedDbStore implements FireflyQueryDatabase {
3
34
  readonly name: string;
4
35
  seedDocs?: DocWithId<DocTypes>[];
5
36
  private readonly app;
6
37
  private readonly factory?;
7
38
  private readonly storage?;
39
+ private readonly persistent;
8
40
  private readonly docs;
9
41
  private readonly listeners;
10
42
  private db?;
11
43
  private readonly readyPromise;
44
+ private readonly syncMeta;
45
+ private cursors;
46
+ private pushQueue;
47
+ private pushSeq;
12
48
  constructor(args: {
13
49
  app: string;
14
50
  name: string;
@@ -18,10 +54,21 @@ export declare class IndexedDbStore implements FireflyQueryDatabase {
18
54
  persistent?: boolean;
19
55
  });
20
56
  private hydrate;
57
+ private backfillUnsyncedDocs;
21
58
  private migrateLocalStorage;
22
59
  ready(): Promise<void>;
23
60
  close(): Promise<void>;
24
61
  destroy(): Promise<void>;
62
+ applyRemote(entries: RemoteSyncEntry[]): Promise<void>;
63
+ applySnapshot(entries: SnapshotEntry[], cursors: Record<string, number> | Map<string, number>): Promise<void>;
64
+ getCursors(): Promise<Map<string, number>>;
65
+ setCursors(cursors: Record<string, number> | Map<string, number>): Promise<void>;
66
+ dropCursor(channel: string): Promise<void>;
67
+ evictChannel(channel: string): Promise<void>;
68
+ peekPushQueue(): Promise<PushQueueEntry[]>;
69
+ dequeuePush(ids: number[]): Promise<void>;
70
+ recordAccepted(docId: string, seq: number): Promise<void>;
71
+ getSyncMeta(docId: string): Promise<SyncDocMeta | undefined>;
25
72
  compact(): Promise<void>;
26
73
  resubscribe(): void;
27
74
  setOptimistic(_enabled: boolean): void;
@@ -30,6 +77,7 @@ export declare class IndexedDbStore implements FireflyQueryDatabase {
30
77
  _id?: string;
31
78
  }): Promise<DocResponse>;
32
79
  del(id: string): Promise<DocResponse>;
80
+ private writeQueueEntry;
33
81
  remove(id: string): Promise<DocResponse>;
34
82
  bulk<T extends DocTypes>(docs: (T & {
35
83
  _id?: string;
@@ -3,8 +3,12 @@ import { materializeQuery, newOptimisticId, } from "./firefly-database.js";
3
3
  import { Localfly, safeLocalStorage } from "./localfly.js";
4
4
  const DOCS = "docs";
5
5
  const META = "meta";
6
+ const SYNC_META = "syncMeta";
7
+ const CURSORS = "cursors";
8
+ const PUSH_QUEUE = "pushQueue";
6
9
  const MIGRATION_KEY = "localstorage-v1";
7
10
  const DB_PREFIX = "firefly-local-v1";
11
+ const DB_VERSION = 2;
8
12
  function requestResult(request) {
9
13
  return new Promise((resolve, reject) => {
10
14
  request.onsuccess = () => resolve(request.result);
@@ -23,15 +27,24 @@ function physicalName(app, name) {
23
27
  }
24
28
  function openDatabase(factory, app, name) {
25
29
  return new Promise((resolve, reject) => {
26
- const request = factory.open(physicalName(app, name), 1);
27
- request.onupgradeneeded = () => {
30
+ const request = factory.open(physicalName(app, name), DB_VERSION);
31
+ let upgradedFromV1 = false;
32
+ request.onupgradeneeded = (event) => {
28
33
  const db = request.result;
34
+ if (event.oldVersion === 1)
35
+ upgradedFromV1 = true;
29
36
  if (!db.objectStoreNames.contains(DOCS))
30
37
  db.createObjectStore(DOCS, { keyPath: "_id" });
31
38
  if (!db.objectStoreNames.contains(META))
32
39
  db.createObjectStore(META);
40
+ if (!db.objectStoreNames.contains(SYNC_META))
41
+ db.createObjectStore(SYNC_META, { keyPath: "docId" });
42
+ if (!db.objectStoreNames.contains(CURSORS))
43
+ db.createObjectStore(CURSORS);
44
+ if (!db.objectStoreNames.contains(PUSH_QUEUE))
45
+ db.createObjectStore(PUSH_QUEUE, { keyPath: "id" });
33
46
  };
34
- request.onsuccess = () => resolve(request.result);
47
+ request.onsuccess = () => resolve({ db: request.result, upgradedFromV1 });
35
48
  request.onerror = () => reject(request.error ?? new Error("Failed to open IndexedDB"));
36
49
  request.onblocked = () => reject(new Error("IndexedDB open was blocked"));
37
50
  });
@@ -53,16 +66,22 @@ export class IndexedDbStore {
53
66
  app;
54
67
  factory;
55
68
  storage;
69
+ persistent;
56
70
  docs = new Map();
57
71
  listeners = new Set();
58
72
  db;
59
73
  readyPromise;
74
+ syncMeta = new Map();
75
+ cursors = new Map();
76
+ pushQueue = [];
77
+ pushSeq = 0;
60
78
  constructor(args) {
61
79
  this.app = args.app;
62
80
  this.name = args.name;
63
81
  this.seedDocs = args.seedDocs;
64
82
  for (const doc of args.seedDocs ?? [])
65
83
  this.docs.set(doc._id, { ...doc });
84
+ this.persistent = args.persistent !== false;
66
85
  this.factory = args.persistent === false ? undefined : (args.indexedDB ?? globalThis.indexedDB);
67
86
  this.storage = args.storage ?? safeLocalStorage();
68
87
  this.readyPromise = this.hydrate();
@@ -70,18 +89,52 @@ export class IndexedDbStore {
70
89
  async hydrate() {
71
90
  if (this.factory === undefined)
72
91
  return;
73
- const db = await openDatabase(this.factory, this.app, this.name);
92
+ const { db, upgradedFromV1 } = await openDatabase(this.factory, this.app, this.name);
74
93
  this.db = db;
75
- const read = db.transaction([DOCS, META], "readonly");
76
- const stored = await requestResult(read.objectStore(DOCS).getAll());
77
- const migrated = await requestResult(read.objectStore(META).get(MIGRATION_KEY));
94
+ const read = db.transaction([DOCS, META, SYNC_META, CURSORS, PUSH_QUEUE], "readonly");
95
+ const docsReq = read.objectStore(DOCS).getAll();
96
+ const migReq = read.objectStore(META).get(MIGRATION_KEY);
97
+ const syncReq = read.objectStore(SYNC_META).getAll();
98
+ const queueReq = read.objectStore(PUSH_QUEUE).getAll();
99
+ const cursorKeysReq = read.objectStore(CURSORS).getAllKeys();
100
+ const cursorValsReq = read.objectStore(CURSORS).getAll();
101
+ const stored = await requestResult(docsReq);
102
+ const migrated = await requestResult(migReq);
103
+ const syncMetas = await requestResult(syncReq);
104
+ const queue = await requestResult(queueReq);
105
+ const cursorKeys = await requestResult(cursorKeysReq);
106
+ const cursorVals = await requestResult(cursorValsReq);
78
107
  await transactionDone(read);
79
108
  for (const doc of stored)
80
109
  this.docs.set(doc._id, { ...doc });
110
+ for (const meta of syncMetas)
111
+ this.syncMeta.set(meta.docId, { docId: meta.docId, seq: meta.seq, channels: [...meta.channels] });
112
+ this.pushQueue = queue.map((e) => ({ ...e })).sort((a, b) => a.id - b.id);
113
+ this.pushSeq = this.pushQueue.reduce((max, e) => (e.id > max ? e.id : max), 0);
114
+ for (let i = 0; i < cursorKeys.length; i++)
115
+ this.cursors.set(String(cursorKeys[i]), cursorVals[i]);
116
+ const backfilledCount = upgradedFromV1 ? await this.backfillUnsyncedDocs(db) : 0;
81
117
  const migratedCount = migrated === true ? 0 : await this.migrateLocalStorage(db);
82
- if (stored.length > 0 || migratedCount > 0)
118
+ if (stored.length > 0 || migratedCount > 0 || backfilledCount > 0)
83
119
  this.notify(this.snapshot());
84
120
  }
121
+ async backfillUnsyncedDocs(db) {
122
+ if (!this.persistent)
123
+ return 0;
124
+ const alreadyQueued = new Set(this.pushQueue.map((e) => e.docId));
125
+ const toEnqueue = [...this.docs.keys()].filter((id) => !this.syncMeta.has(id) && !alreadyQueued.has(id));
126
+ if (toEnqueue.length === 0)
127
+ return 0;
128
+ const tx = db.transaction(PUSH_QUEUE, "readwrite");
129
+ const queueStore = tx.objectStore(PUSH_QUEUE);
130
+ const queued = [];
131
+ for (const id of toEnqueue)
132
+ queued.push(this.writeQueueEntry(queueStore, id, false));
133
+ await transactionDone(tx);
134
+ for (const entry of queued)
135
+ this.pushQueue.push(entry);
136
+ return queued.length;
137
+ }
85
138
  async migrateLocalStorage(db) {
86
139
  const legacyDocs = new Map();
87
140
  const deletedIds = new Set();
@@ -99,18 +152,28 @@ export class IndexedDbStore {
99
152
  }
100
153
  }
101
154
  }
102
- const tx = db.transaction([DOCS, META], "readwrite");
155
+ const tx = db.transaction([DOCS, META, PUSH_QUEUE], "readwrite");
103
156
  const docsStore = tx.objectStore(DOCS);
104
- for (const doc of legacyDocs.values())
157
+ const queueStore = tx.objectStore(PUSH_QUEUE);
158
+ const queued = [];
159
+ for (const doc of legacyDocs.values()) {
105
160
  docsStore.put(doc);
106
- for (const id of deletedIds)
161
+ if (this.persistent)
162
+ queued.push(this.writeQueueEntry(queueStore, doc._id, false));
163
+ }
164
+ for (const id of deletedIds) {
107
165
  docsStore.delete(id);
166
+ if (this.persistent)
167
+ queued.push(this.writeQueueEntry(queueStore, id, true));
168
+ }
108
169
  tx.objectStore(META).put(true, MIGRATION_KEY);
109
170
  await transactionDone(tx);
110
171
  for (const doc of legacyDocs.values())
111
172
  this.docs.set(doc._id, { ...doc });
112
173
  for (const id of deletedIds)
113
174
  this.docs.delete(id);
175
+ for (const entry of queued)
176
+ this.pushQueue.push(entry);
114
177
  return legacyDocs.size + deletedIds.size;
115
178
  }
116
179
  async ready() {
@@ -125,10 +188,220 @@ export class IndexedDbStore {
125
188
  this.db?.close();
126
189
  this.db = undefined;
127
190
  this.docs.clear();
191
+ this.syncMeta.clear();
192
+ this.cursors.clear();
193
+ this.pushQueue = [];
194
+ this.pushSeq = 0;
128
195
  if (this.factory !== undefined)
129
196
  await requestResult(this.factory.deleteDatabase(physicalName(this.app, this.name)));
130
197
  this.notify([]);
131
198
  }
199
+ async applyRemote(entries) {
200
+ await this.ready();
201
+ const queuedDocIds = new Set(this.pushQueue.map((e) => e.docId));
202
+ const changed = [];
203
+ const apply = (docsStore, syncStore) => {
204
+ for (const entry of entries) {
205
+ if (entry.op === "put") {
206
+ const existing = this.syncMeta.get(entry.docId);
207
+ if (existing !== undefined && existing.seq >= entry.seq)
208
+ continue;
209
+ const meta = { docId: entry.docId, seq: entry.seq, channels: [...entry.channels] };
210
+ if (queuedDocIds.has(entry.docId)) {
211
+ this.syncMeta.set(entry.docId, meta);
212
+ syncStore?.put(meta);
213
+ continue;
214
+ }
215
+ const saved = { ...entry.doc, _id: entry.docId };
216
+ this.docs.set(entry.docId, saved);
217
+ this.syncMeta.set(entry.docId, meta);
218
+ docsStore?.put(saved);
219
+ syncStore?.put(meta);
220
+ changed.push(saved);
221
+ }
222
+ else if (entry.op === "delete") {
223
+ if (queuedDocIds.has(entry.docId)) {
224
+ this.syncMeta.delete(entry.docId);
225
+ syncStore?.delete(entry.docId);
226
+ continue;
227
+ }
228
+ if (this.docs.has(entry.docId))
229
+ changed.push({ _id: entry.docId, _deleted: true });
230
+ this.docs.delete(entry.docId);
231
+ this.syncMeta.delete(entry.docId);
232
+ docsStore?.delete(entry.docId);
233
+ syncStore?.delete(entry.docId);
234
+ }
235
+ else {
236
+ const meta = this.syncMeta.get(entry.docId);
237
+ if (meta === undefined)
238
+ continue;
239
+ const channels = meta.channels.filter((c) => c !== entry.channel);
240
+ if (channels.length === 0 && !queuedDocIds.has(entry.docId)) {
241
+ this.docs.delete(entry.docId);
242
+ this.syncMeta.delete(entry.docId);
243
+ docsStore?.delete(entry.docId);
244
+ syncStore?.delete(entry.docId);
245
+ changed.push({ _id: entry.docId, _deleted: true });
246
+ }
247
+ else {
248
+ const updated = { ...meta, channels };
249
+ this.syncMeta.set(entry.docId, updated);
250
+ syncStore?.put(updated);
251
+ }
252
+ }
253
+ }
254
+ };
255
+ if (this.db !== undefined) {
256
+ const tx = this.db.transaction([DOCS, SYNC_META], "readwrite");
257
+ apply(tx.objectStore(DOCS), tx.objectStore(SYNC_META));
258
+ await transactionDone(tx);
259
+ }
260
+ else {
261
+ apply();
262
+ }
263
+ if (changed.length > 0)
264
+ this.notify(changed);
265
+ }
266
+ async applySnapshot(entries, cursors) {
267
+ await this.ready();
268
+ const queuedDocIds = new Set(this.pushQueue.map((e) => e.docId));
269
+ const snapshotIds = new Set(entries.map((e) => e.docId));
270
+ const nextCursors = cursors instanceof Map ? new Map(cursors) : new Map(Object.entries(cursors));
271
+ const changed = [];
272
+ const run = (docsStore, syncStore, cursorStore) => {
273
+ for (const docId of [...this.docs.keys()]) {
274
+ if (snapshotIds.has(docId) || queuedDocIds.has(docId) || !this.syncMeta.has(docId))
275
+ continue;
276
+ this.docs.delete(docId);
277
+ this.syncMeta.delete(docId);
278
+ docsStore?.delete(docId);
279
+ syncStore?.delete(docId);
280
+ changed.push({ _id: docId, _deleted: true });
281
+ }
282
+ for (const entry of entries) {
283
+ const meta = { docId: entry.docId, seq: entry.seq, channels: [...entry.channels] };
284
+ if (queuedDocIds.has(entry.docId)) {
285
+ this.syncMeta.set(entry.docId, meta);
286
+ syncStore?.put(meta);
287
+ continue;
288
+ }
289
+ const saved = { ...entry.doc, _id: entry.docId };
290
+ this.docs.set(entry.docId, saved);
291
+ this.syncMeta.set(entry.docId, meta);
292
+ docsStore?.put(saved);
293
+ syncStore?.put(meta);
294
+ changed.push(saved);
295
+ }
296
+ this.cursors = nextCursors;
297
+ if (cursorStore !== undefined) {
298
+ cursorStore.clear();
299
+ for (const [channel, seq] of this.cursors)
300
+ cursorStore.put(seq, channel);
301
+ }
302
+ };
303
+ if (this.db !== undefined) {
304
+ const tx = this.db.transaction([DOCS, SYNC_META, CURSORS], "readwrite");
305
+ run(tx.objectStore(DOCS), tx.objectStore(SYNC_META), tx.objectStore(CURSORS));
306
+ await transactionDone(tx);
307
+ }
308
+ else {
309
+ run();
310
+ }
311
+ if (changed.length > 0)
312
+ this.notify(changed);
313
+ }
314
+ async getCursors() {
315
+ await this.ready();
316
+ return new Map(this.cursors);
317
+ }
318
+ async setCursors(cursors) {
319
+ await this.ready();
320
+ this.cursors = cursors instanceof Map ? new Map(cursors) : new Map(Object.entries(cursors));
321
+ if (this.db !== undefined) {
322
+ const tx = this.db.transaction(CURSORS, "readwrite");
323
+ const store = tx.objectStore(CURSORS);
324
+ store.clear();
325
+ for (const [channel, seq] of this.cursors)
326
+ store.put(seq, channel);
327
+ await transactionDone(tx);
328
+ }
329
+ }
330
+ async dropCursor(channel) {
331
+ await this.ready();
332
+ this.cursors.delete(channel);
333
+ if (this.db !== undefined) {
334
+ const tx = this.db.transaction(CURSORS, "readwrite");
335
+ tx.objectStore(CURSORS).delete(channel);
336
+ await transactionDone(tx);
337
+ }
338
+ }
339
+ async evictChannel(channel) {
340
+ await this.ready();
341
+ const queuedDocIds = new Set(this.pushQueue.map((e) => e.docId));
342
+ const changed = [];
343
+ const run = (docsStore, syncStore) => {
344
+ for (const [docId, meta] of [...this.syncMeta]) {
345
+ if (!meta.channels.includes(channel))
346
+ continue;
347
+ const channels = meta.channels.filter((c) => c !== channel);
348
+ if (channels.length === 0 && !queuedDocIds.has(docId)) {
349
+ this.docs.delete(docId);
350
+ this.syncMeta.delete(docId);
351
+ docsStore?.delete(docId);
352
+ syncStore?.delete(docId);
353
+ changed.push({ _id: docId, _deleted: true });
354
+ }
355
+ else {
356
+ const updated = { ...meta, channels };
357
+ this.syncMeta.set(docId, updated);
358
+ syncStore?.put(updated);
359
+ }
360
+ }
361
+ };
362
+ if (this.db !== undefined) {
363
+ const tx = this.db.transaction([DOCS, SYNC_META], "readwrite");
364
+ run(tx.objectStore(DOCS), tx.objectStore(SYNC_META));
365
+ await transactionDone(tx);
366
+ }
367
+ else {
368
+ run();
369
+ }
370
+ if (changed.length > 0)
371
+ this.notify(changed);
372
+ }
373
+ async peekPushQueue() {
374
+ await this.ready();
375
+ return this.pushQueue.map((e) => ({ ...e }));
376
+ }
377
+ async dequeuePush(ids) {
378
+ await this.ready();
379
+ const drop = new Set(ids);
380
+ this.pushQueue = this.pushQueue.filter((e) => !drop.has(e.id));
381
+ if (this.db !== undefined) {
382
+ const tx = this.db.transaction(PUSH_QUEUE, "readwrite");
383
+ const store = tx.objectStore(PUSH_QUEUE);
384
+ for (const id of ids)
385
+ store.delete(id);
386
+ await transactionDone(tx);
387
+ }
388
+ }
389
+ async recordAccepted(docId, seq) {
390
+ await this.ready();
391
+ const existing = this.syncMeta.get(docId);
392
+ const meta = existing !== undefined ? { ...existing, seq } : { docId, seq, channels: [] };
393
+ this.syncMeta.set(docId, meta);
394
+ if (this.db !== undefined) {
395
+ const tx = this.db.transaction(SYNC_META, "readwrite");
396
+ tx.objectStore(SYNC_META).put(meta);
397
+ await transactionDone(tx);
398
+ }
399
+ }
400
+ async getSyncMeta(docId) {
401
+ await this.ready();
402
+ const meta = this.syncMeta.get(docId);
403
+ return meta === undefined ? undefined : { docId: meta.docId, seq: meta.seq, channels: [...meta.channels] };
404
+ }
132
405
  async compact() {
133
406
  return;
134
407
  }
@@ -149,26 +422,49 @@ export class IndexedDbStore {
149
422
  await this.ready();
150
423
  const id = doc._id ?? newOptimisticId();
151
424
  const saved = { ...doc, _id: id };
425
+ let queued;
152
426
  if (this.db !== undefined) {
153
- const tx = this.db.transaction(DOCS, "readwrite");
427
+ const tx = this.db.transaction([DOCS, PUSH_QUEUE], "readwrite");
154
428
  tx.objectStore(DOCS).put(saved);
429
+ if (this.persistent)
430
+ queued = this.writeQueueEntry(tx.objectStore(PUSH_QUEUE), id, false);
155
431
  await transactionDone(tx);
156
432
  }
433
+ else if (this.persistent) {
434
+ queued = { id: ++this.pushSeq, docId: id, deleted: false };
435
+ }
157
436
  this.docs.set(id, saved);
437
+ if (queued !== undefined)
438
+ this.pushQueue.push(queued);
158
439
  this.notify([saved]);
159
440
  return { id, ok: true };
160
441
  }
161
442
  async del(id) {
162
443
  await this.ready();
444
+ let queued;
163
445
  if (this.db !== undefined) {
164
- const tx = this.db.transaction(DOCS, "readwrite");
446
+ const tx = this.db.transaction([DOCS, SYNC_META, PUSH_QUEUE], "readwrite");
165
447
  tx.objectStore(DOCS).delete(id);
448
+ tx.objectStore(SYNC_META).delete(id);
449
+ if (this.persistent)
450
+ queued = this.writeQueueEntry(tx.objectStore(PUSH_QUEUE), id, true);
166
451
  await transactionDone(tx);
167
452
  }
453
+ else if (this.persistent) {
454
+ queued = { id: ++this.pushSeq, docId: id, deleted: true };
455
+ }
168
456
  this.docs.delete(id);
457
+ this.syncMeta.delete(id);
458
+ if (queued !== undefined)
459
+ this.pushQueue.push(queued);
169
460
  this.notify([{ _id: id, _deleted: true }]);
170
461
  return { id, ok: true };
171
462
  }
463
+ writeQueueEntry(store, docId, deleted) {
464
+ const entry = { id: ++this.pushSeq, docId, deleted };
465
+ store.put(entry);
466
+ return entry;
467
+ }
172
468
  async remove(id) {
173
469
  return this.del(id);
174
470
  }
@@ -1 +1 @@
1
- {"version":3,"file":"indexeddb-store.js","sourceRoot":"","sources":["../jsr/indexeddb-store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"indexeddb-store.js","sourceRoot":"","sources":["../jsr/indexeddb-store.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vibes.diy/vibe-runtime",
3
- "version": "9.3.0",
3
+ "version": "9.4.1",
4
4
  "license": "Apache-2.0",
5
5
  "type": "module",
6
6
  "main": "./index.js",
@@ -23,8 +23,8 @@
23
23
  },
24
24
  "dependencies": {
25
25
  "@adviser/cement": "~0.5.34",
26
- "@vibes.diy/base": "9.3.0",
27
- "@vibes.diy/vibe-types": "9.3.0",
26
+ "@vibes.diy/base": "9.4.1",
27
+ "@vibes.diy/vibe-types": "9.4.1",
28
28
  "arktype": "~2.2.3",
29
29
  "charwise": "~3.0.1",
30
30
  "es-module-lexer": "~2.3.1",
@@ -1,4 +1,4 @@
1
- import { ResCallAI, ResImgGen, type ImgGenTarget, ResPutDoc, ResGetDoc, ResQueryDocs, ResDeleteDoc, ResSubscribeDocs, ResListDbNames, ResVibePutAsset, ResVibeWhoAmI, ResVibeLookupHandles, type ResVibeAccessFnSource, type ResVibeUpdateAvatarCid, type EvtVibeViewerChanged, type EvtVibeSocialChanged, type ReqVibeSocial, type ResVibeSocial, type ResVibeRequestFollowersAccess, type ResVibeSocialInvite, type ResSetDbAcl, type DbAcl, type QueryFilter } from "@vibes.diy/vibe-types";
1
+ import { ResCallAI, ResImgGen, type ImgGenTarget, ResPutDoc, ResGetDoc, ResQueryDocs, ResDeleteDoc, ResSubscribeDocs, ResSyncPull, ReqSyncPush, ResSyncPush, ResListDbNames, ResVibePutAsset, ResVibeWhoAmI, ResVibeLookupHandles, type ResVibeAccessFnSource, type ResVibeUpdateAvatarCid, type EvtVibeViewerChanged, type EvtVibeSocialChanged, type ReqVibeSocial, type ResVibeSocial, type ResVibeRequestFollowersAccess, type ResVibeSocialInvite, type ResSetDbAcl, type DbAcl, type QueryFilter } from "@vibes.diy/vibe-types";
2
2
  import { Future, Result } from "@adviser/cement";
3
3
  import { CallAIOpts } from "./call-ai.js";
4
4
  export interface VibeApp {
@@ -44,6 +44,9 @@ export declare class VibeSandboxApi {
44
44
  queryDocs(dbName?: string, filter?: QueryFilter): Promise<Result<ResQueryDocs>>;
45
45
  deleteDoc(docId: string, dbName?: string): Promise<Result<ResDeleteDoc>>;
46
46
  subscribeDocs(dbName?: string): Promise<Result<ResSubscribeDocs>>;
47
+ syncPull(cursors: Record<string, number>, dbName?: string): Promise<Result<ResSyncPull>>;
48
+ syncPush(writes: ReqSyncPush["writes"], dbName?: string): Promise<Result<ResSyncPush>>;
49
+ onSyncReconnected(fn: () => void): () => void;
47
50
  broadcastEphemeral(docId: string, doc: Record<string, unknown>, dbName?: string): void;
48
51
  notifyWriteOutcome(info: {
49
52
  outcome: "queued" | "failed" | "rejected";
@@ -1,4 +1,4 @@
1
- import { isResCallAI, isResImgGen, isEvtVibeScrollToTop, isEvtVibeSetSource, isEvtRuntimeAck, isResPutDoc, isResGetDoc, isResGetDocNotFound, isResQueryDocs, isResDeleteDoc, isResSubscribeDocs, isResListDbNames, isResVibePutAsset, isResVibeWhoAmI, isResVibeLookupHandles, isResVibeAccessFnSource, isResVibeUpdateAvatarCid, isEvtVibeViewerChanged, isEvtVibeSocialChanged, isEvtVibeSocialCleared, isResVibeSocial, isResVibeRequestFollowersAccess, isResVibeSocialInvite, isResSetDbAcl, } from "@vibes.diy/vibe-types";
1
+ import { isResCallAI, isResImgGen, isEvtVibeScrollToTop, isEvtVibeSetSource, isEvtRuntimeAck, isResPutDoc, isResGetDoc, isResGetDocNotFound, isResQueryDocs, isResDeleteDoc, isResSubscribeDocs, isResListDbNames, isResSyncPull, isResSyncPush, isEvtSyncReconnected, isResVibePutAsset, isResVibeWhoAmI, isResVibeLookupHandles, isResVibeAccessFnSource, isResVibeUpdateAvatarCid, isEvtVibeViewerChanged, isEvtVibeSocialChanged, isEvtVibeSocialCleared, isResVibeSocial, isResVibeRequestFollowersAccess, isResVibeSocialInvite, isResSetDbAcl, } from "@vibes.diy/vibe-types";
2
2
  import { exception2Result, Future, Lazy, OnFunc, OnFuncReturn, Result, timeouted } from "@adviser/cement";
3
3
  import { transform } from "sucrase";
4
4
  import { registerCallAI } from "./call-ai.js";
@@ -162,6 +162,28 @@ export class VibeSandboxApi {
162
162
  dbName,
163
163
  }, { wait: isResSubscribeDocs, timeout: 10000 });
164
164
  }
165
+ syncPull(cursors, dbName = "default") {
166
+ return this.request({
167
+ type: "vibes.diy.req-sync-pull",
168
+ ...this.svc.vibeApp,
169
+ dbName,
170
+ cursors,
171
+ }, { wait: isResSyncPull, timeout: 10000 });
172
+ }
173
+ syncPush(writes, dbName = "default") {
174
+ return this.request({
175
+ type: "vibes.diy.req-sync-push",
176
+ ...this.svc.vibeApp,
177
+ dbName,
178
+ writes,
179
+ }, { wait: isResSyncPush, timeout: 10000 });
180
+ }
181
+ onSyncReconnected(fn) {
182
+ return this.onMsg((event) => {
183
+ if (isEvtSyncReconnected(event.data))
184
+ fn();
185
+ });
186
+ }
165
187
  broadcastEphemeral(docId, doc, dbName = "default") {
166
188
  if (!this.acked)
167
189
  return;