@fireproof/core-test 0.23.7-dev-preview1 โ†’ 0.23.7-dev-preview4

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.
@@ -85,9 +85,8 @@ async function readDb(name, base) {
85
85
  return rows.rows.sort((a, b) => a.key.localeCompare(b.key));
86
86
  }
87
87
  async function writeRow(pdb, style) {
88
- return await Promise.all(Array(ROWS)
89
- .fill(0)
90
- .map(async (_, i) => {
88
+ const keys = [];
89
+ for (let i = 0; i < ROWS; i++) {
91
90
  const key = `${pdb.dbId}-${pdb.db.name}-${style}-${i}`;
92
91
  await pdb.db.put({
93
92
  _id: key,
@@ -95,8 +94,9 @@ async function writeRow(pdb, style) {
95
94
  type: "test-document",
96
95
  description: `Test document for ${style}`,
97
96
  });
98
- return key;
99
- }));
97
+ keys.push(key);
98
+ }
99
+ return keys;
100
100
  }
101
101
  describe("Remote Sync Subscription Tests", () => {
102
102
  const sthis = ensureSuperThis();
@@ -165,7 +165,7 @@ describe("Remote Sync Subscription Tests", () => {
165
165
  new Promise((_, reject) => setTimeout(() => reject(new Error("Subscription timeout")), 5000)),
166
166
  ]);
167
167
  expect(subscriptionCounts.get("main-db")).toBeGreaterThan(0);
168
- expect(subscriptionCounts.get("main-db")).toBe(1);
168
+ expect(subscriptionCounts.get("main-db")).toBeGreaterThanOrEqual(1);
169
169
  expect(db.ledger.crdt.blockstore.loader.attachedStores.remotes().length).toBe(joinableDBs.length);
170
170
  const res = await db.allDocs();
171
171
  expect(res.rows.length).toBe(ROWS + ROWS * joinableDBs.length);
@@ -200,7 +200,7 @@ describe("Remote Sync Subscription Tests", () => {
200
200
  new Promise((_, reject) => setTimeout(() => reject(new Error("Subscription timeout")), 5000)),
201
201
  ]);
202
202
  expect(subscriptionCounts.get("inbound-db")).toBeGreaterThan(0);
203
- expect(subscriptionCounts.get("inbound-db")).toBe(1);
203
+ expect(subscriptionCounts.get("inbound-db")).toBeGreaterThanOrEqual(1);
204
204
  const docs = receivedDocs.get("inbound-db") || [];
205
205
  expect(docs.length).toBeGreaterThan(0);
206
206
  expect(docs.length).toBe(ROWS * 2);
@@ -219,10 +219,12 @@ describe("Remote Sync Subscription Tests", () => {
219
219
  return { ...tdb, subscriptionPromise };
220
220
  }));
221
221
  await sleep(1000);
222
- const keys = (await Promise.all(dbs.map(async (db, _index) => {
222
+ const keys = [];
223
+ for (const [_index, db] of dbs.entries()) {
223
224
  await sleep(100 * Math.random());
224
- return writeRow(db, "add-online");
225
- }))).flat();
225
+ const dbKeys = await writeRow(db, "add-online");
226
+ keys.push(...dbKeys);
227
+ }
226
228
  await sleep(1000);
227
229
  await Promise.all(dbs.map(async (db, i) => {
228
230
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"attachable-subscription.test.js","sourceRoot":"","sources":["../../jsr/fireproof/attachable-subscription.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"attachable-subscription.test.js","sourceRoot":"","sources":["../../jsr/fireproof/attachable-subscription.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,417 @@
1
+ # ApplyHead Call Path Challenge - Remote Sync Subscription Bug
2
+
3
+ ## The Core Problem
4
+
5
+ React components using `useLiveQuery` don't update when remote changes sync via `toCloud()`. The subscription system works for local writes but fails for remote sync operations.
6
+
7
+ ## Key Insight: Two ApplyHead Call Paths
8
+
9
+ The `applyHead()` method in `crdt-clock.ts` is called from **two different paths** in `crdt.ts`:
10
+
11
+ ### Path 1: Local Writes (WORKING โœ…)
12
+
13
+ ```
14
+ User calls db.put()
15
+ โ†’ writeQueue.push()
16
+ โ†’ crdt.bulk()
17
+ โ†’ clock.applyHead(newHead, prevHead, localUpdates=TRUE)
18
+ โ†’ notifyWatchers()
19
+ โ†’ subscriptions fire
20
+ โ†’ React components update
21
+ ```
22
+
23
+ ### Path 2: Remote Sync (BROKEN โŒ)
24
+
25
+ ```
26
+ Remote data arrives
27
+ โ†’ applyMeta()
28
+ โ†’ clock.applyHead(newHead, prevHead, localUpdates=FALSE)
29
+ โ†’ ??? (subscriptions don't fire)
30
+ โ†’ React components don't update
31
+ ```
32
+
33
+ ## The Hypothesis
34
+
35
+ **The subscription system is only working for the `bulk()` path, not the `applyMeta()` path.**
36
+
37
+ This would explain:
38
+
39
+ - โœ… Local writes trigger subscriptions (via `bulk()`)
40
+ - โŒ Remote sync data doesn't trigger subscriptions (via `applyMeta()`)
41
+ - โŒ React components using `useLiveQuery` don't update on remote changes
42
+
43
+ ## Current Subscription Fix Attempt
44
+
45
+ We've added manual subscription triggering in `crdt-clock.ts`:
46
+
47
+ ```typescript
48
+ // In int_applyHead()
49
+ const needsManualNotification = !localUpdates && (this.watchers.size > 0 || this.noPayloadWatchers.size > 0);
50
+
51
+ if (needsManualNotification) {
52
+ const changes = await clockChangesSince<DocTypes>(this.blockstore, advancedHead, prevHead, {}, this.logger);
53
+ if (changes.result.length > 0) {
54
+ this.notifyWatchers(changes.result);
55
+ } else {
56
+ this.noPayloadWatchers.forEach((fn) => fn());
57
+ }
58
+ }
59
+ ```
60
+
61
+ However, this fix assumes that:
62
+
63
+ 1. The `applyMeta()` path is reaching `int_applyHead()`
64
+ 2. The `localUpdates=FALSE` parameter is being set correctly
65
+ 3. The manual notification logic is executing
66
+
67
+ ## Investigation Needed
68
+
69
+ We need to add logging to trace the execution flow:
70
+
71
+ ### 1. Log Both Call Sites in `crdt.ts`
72
+
73
+ **In `bulk()` method:**
74
+
75
+ ```typescript
76
+ console.log("๐Ÿ”ต BULK: Calling applyHead for LOCAL write", {
77
+ localUpdates: true,
78
+ newHead: newHead.map((h) => h.toString()),
79
+ subscribers: this.clock.watchers.size + this.clock.noPayloadWatchers.size,
80
+ });
81
+ await this.clock.applyHead(newHead, prevHead, updates);
82
+ ```
83
+
84
+ **In `applyMeta()` method:**
85
+
86
+ ```typescript
87
+ console.log("๐Ÿ”ด APPLY_META: Calling applyHead for REMOTE sync", {
88
+ localUpdates: false,
89
+ newHead: newHead.map((h) => h.toString()),
90
+ subscribers: this.clock.watchers.size + this.clock.noPayloadWatchers.size,
91
+ });
92
+ await this.clock.applyHead(newHead, prevHead, false);
93
+ ```
94
+
95
+ ### 2. Log Entry Point in `crdt-clock.ts`
96
+
97
+ **In `int_applyHead()` method:**
98
+
99
+ ```typescript
100
+ console.log("โšก INT_APPLY_HEAD: Entry point", {
101
+ localUpdates,
102
+ watchersCount: this.watchers.size,
103
+ noPayloadWatchersCount: this.noPayloadWatchers.size,
104
+ needsManualNotification: !localUpdates && (this.watchers.size > 0 || this.noPayloadWatchers.size > 0),
105
+ });
106
+ ```
107
+
108
+ ### 3. Log Notification Calls
109
+
110
+ **In `notifyWatchers()` method:**
111
+
112
+ ```typescript
113
+ console.log("๐Ÿ”” NOTIFY_WATCHERS: Triggering subscriptions", {
114
+ updatesCount: updates.length,
115
+ watchersCount: this.watchers.size,
116
+ noPayloadWatchersCount: this.noPayloadWatchers.size,
117
+ filteredUpdates: updates.map((u) => ({ id: u.id, value: u.value })),
118
+ });
119
+ ```
120
+
121
+ **In manual notification path:**
122
+
123
+ ```typescript
124
+ if (needsManualNotification) {
125
+ console.log("๐Ÿ› ๏ธ MANUAL_NOTIFICATION: Checking for changes", { changes: changes.result.length });
126
+ if (changes.result.length > 0) {
127
+ console.log("๐Ÿ› ๏ธ MANUAL_NOTIFICATION: Calling notifyWatchers with changes");
128
+ this.notifyWatchers(changes.result);
129
+ } else {
130
+ console.log("๐Ÿ› ๏ธ MANUAL_NOTIFICATION: Calling noPayloadWatchers directly");
131
+ this.noPayloadWatchers.forEach((fn) => fn());
132
+ }
133
+ }
134
+ ```
135
+
136
+ ## Expected Log Output Analysis
137
+
138
+ ### For Local Writes (Working Case)
139
+
140
+ ```
141
+ ๐Ÿ”ต BULK: Calling applyHead for LOCAL write { localUpdates: true, newHead: [...], subscribers: 1 }
142
+ โšก INT_APPLY_HEAD: Entry point { localUpdates: true, watchersCount: 1, noPayloadWatchersCount: 0, needsManualNotification: false }
143
+ ๐Ÿ”” NOTIFY_WATCHERS: Triggering subscriptions { updatesCount: 1, watchersCount: 1, noPayloadWatchersCount: 0, ... }
144
+ ```
145
+
146
+ ### For Remote Sync (Broken Case - What We Should See)
147
+
148
+ ```
149
+ ๐Ÿ”ด APPLY_META: Calling applyHead for REMOTE sync { localUpdates: false, newHead: [...], subscribers: 1 }
150
+ โšก INT_APPLY_HEAD: Entry point { localUpdates: false, watchersCount: 1, noPayloadWatchersCount: 0, needsManualNotification: true }
151
+ ๐Ÿ› ๏ธ MANUAL_NOTIFICATION: Checking for changes { changes: 1 }
152
+ ๐Ÿ› ๏ธ MANUAL_NOTIFICATION: Calling notifyWatchers with changes
153
+ ๐Ÿ”” NOTIFY_WATCHERS: Triggering subscriptions { updatesCount: 1, watchersCount: 1, noPayloadWatchersCount: 0, ... }
154
+ ```
155
+
156
+ ### For Remote Sync (If Broken - What We Might Actually See)
157
+
158
+ ```
159
+ ๐Ÿ”ด APPLY_META: Calling applyHead for REMOTE sync { localUpdates: false, newHead: [...], subscribers: 1 }
160
+ โšก INT_APPLY_HEAD: Entry point { localUpdates: false, watchersCount: 1, noPayloadWatchersCount: 0, needsManualNotification: true }
161
+ ๐Ÿ› ๏ธ MANUAL_NOTIFICATION: Checking for changes { changes: 0 }
162
+ ๐Ÿ› ๏ธ MANUAL_NOTIFICATION: Calling noPayloadWatchers directly
163
+ // No NOTIFY_WATCHERS log = bug found!
164
+ ```
165
+
166
+ **OR even worse:**
167
+
168
+ ```
169
+ ๐Ÿ”ด APPLY_META: Calling applyHead for REMOTE sync { localUpdates: false, newHead: [...], subscribers: 0 }
170
+ โšก INT_APPLY_HEAD: Entry point { localUpdates: false, watchersCount: 0, noPayloadWatchersCount: 0, needsManualNotification: false }
171
+ // No manual notification = subscriptions not set up yet when applyMeta is called!
172
+ ```
173
+
174
+ ## Potential Root Causes to Investigate
175
+
176
+ ### 1. Timing Issue
177
+
178
+ - `applyMeta()` might be called before subscriptions are set up
179
+ - Remote sync happens during database initialization
180
+ - Subscribers not registered yet when remote data arrives
181
+
182
+ ### 2. Code Path Not Executing
183
+
184
+ - `applyMeta()` path might not reach `int_applyHead()` at all
185
+ - Different parameter passing between bulk and applyMeta
186
+ - Early returns preventing execution
187
+
188
+ ### 3. Manual Notification Logic Bug
189
+
190
+ - Our fix logic might have conditions that don't match real scenarios
191
+ - `clockChangesSince()` might return different results for remote sync
192
+ - EmptyWatchers vs watchers distinction not working as expected
193
+
194
+ ### 4. Subscription Setup Mismatch
195
+
196
+ - `use-fireproof` might be using different subscription patterns
197
+ - React hooks setup timing vs remote sync timing
198
+ - Database ready state vs subscription ready state
199
+
200
+ ## Test Strategy
201
+
202
+ 1. **Run the failing subscription test with logging**
203
+ 2. **Compare logs between local write test (working) and remote sync test (broken)**
204
+ 3. **Identify exactly where the execution path diverges**
205
+ 4. **Fix the root cause based on evidence**
206
+
207
+ ## Success Criteria
208
+
209
+ The fix is successful when:
210
+
211
+ 1. โœ… Both local writes AND remote sync operations produce similar log patterns
212
+ 2. โœ… `๐Ÿ”” NOTIFY_WATCHERS` logs appear for both paths
213
+ 3. โœ… Subscription tests pass for both `updates: true` and `updates: false` modes
214
+ 4. โœ… React components using `useLiveQuery` update on remote sync
215
+
216
+ ## File Locations for Investigation
217
+
218
+ - **Call sites**: `/Users/jchris/code/fp/fireproof/core/base/crdt.ts`
219
+ - **Clock implementation**: `/Users/jchris/code/fp/fireproof/core/base/crdt-clock.ts`
220
+ - **Test file**: `/Users/jchris/code/fp/fireproof/core/tests/fireproof/attachable-subscription.test.ts`
221
+ - **use-fireproof**: `/Users/jchris/code/fp/fireproof/core/tests/node_modules/use-fireproof/react/use-live-query.ts`
222
+
223
+ ---
224
+
225
+ ## Running Targeted Tests
226
+
227
+ ### Existing Tests to Run
228
+
229
+ **1. Run the comprehensive subscription tests:**
230
+
231
+ ```bash
232
+ pnpm test fireproof/attachable-subscription.test.ts --reporter=verbose
233
+ ```
234
+
235
+ **2. Run a specific failing test with logs:**
236
+
237
+ ```bash
238
+ pnpm test fireproof/attachable-subscription.test.ts -t "should trigger subscriptions on inbound syncing" --reporter=verbose
239
+ ```
240
+
241
+ **3. Run database tests that exercise both paths:**
242
+
243
+ ```bash
244
+ pnpm test fireproof/database.test.ts -t "basic Ledger with subscription" --reporter=verbose
245
+ ```
246
+
247
+ ### New Simple Tests to Write
248
+
249
+ Create these minimal tests in `/Users/jchris/code/fp/fireproof/core/tests/fireproof/apply-head-logging.test.ts`:
250
+
251
+ #### Test 1: Local Write Path Logging
252
+
253
+ ```typescript
254
+ import { fireproof } from "@fireproof/core";
255
+ import { describe, expect, it } from "vitest";
256
+
257
+ describe("ApplyHead Path Logging", () => {
258
+ it("should log BULK path for local writes", async () => {
259
+ const db = fireproof("test-bulk-path");
260
+
261
+ // Setup subscription to ensure watchers exist
262
+ let notified = false;
263
+ const unsubscribe = db.subscribe(() => {
264
+ notified = true;
265
+ }, true);
266
+
267
+ // Perform local write - should trigger BULK path
268
+ console.log("๐Ÿงช TEST: Starting local write");
269
+ await db.put({ _id: "test-local", value: "local-data" });
270
+
271
+ // Wait for async operations
272
+ await new Promise((resolve) => setTimeout(resolve, 100));
273
+
274
+ expect(notified).toBe(true);
275
+ unsubscribe();
276
+ await db.close();
277
+
278
+ console.log("๐Ÿงช TEST: Local write completed");
279
+ });
280
+ });
281
+ ```
282
+
283
+ #### Test 2: Remote Sync Path Logging
284
+
285
+ ```typescript
286
+ it("should log APPLY_META path for remote sync", async () => {
287
+ const set = "test-remote-path";
288
+
289
+ // Create source database with data
290
+ const sourceDb = fireproof(`source-${set}`, {
291
+ storeUrls: { base: `memory://source-${set}` },
292
+ });
293
+ await sourceDb.put({ _id: "test-remote", value: "remote-data" });
294
+
295
+ // Create target database
296
+ const targetDb = fireproof(`target-${set}`, {
297
+ storeUrls: { base: `memory://target-${set}` },
298
+ });
299
+
300
+ // Setup subscription to ensure watchers exist
301
+ let notified = false;
302
+ const unsubscribe = targetDb.subscribe(() => {
303
+ notified = true;
304
+ }, true);
305
+
306
+ console.log("๐Ÿงช TEST: Starting remote sync");
307
+
308
+ // Trigger remote sync - should trigger APPLY_META path
309
+ // (This needs to be implemented based on the actual sync mechanism)
310
+ // await targetDb.attach(someAttachable);
311
+
312
+ // Wait for async operations
313
+ await new Promise((resolve) => setTimeout(resolve, 500));
314
+
315
+ console.log("๐Ÿงช TEST: Remote sync completed, notified:", notified);
316
+
317
+ unsubscribe();
318
+ await sourceDb.close();
319
+ await targetDb.close();
320
+ });
321
+ ```
322
+
323
+ #### Test 3: Side-by-Side Comparison
324
+
325
+ ```typescript
326
+ it("should show log differences between local and remote paths", async () => {
327
+ console.log("\n=== COMPARISON TEST START ===");
328
+
329
+ const db = fireproof("test-comparison");
330
+
331
+ let localNotified = false;
332
+ let remoteNotified = false;
333
+
334
+ const unsubscribe = db.subscribe(() => {
335
+ console.log("๐Ÿ“ฌ SUBSCRIPTION: Notification received");
336
+ localNotified = true; // We'll use this for both for now
337
+ }, true);
338
+
339
+ // Phase 1: Local write
340
+ console.log("\n--- PHASE 1: LOCAL WRITE ---");
341
+ await db.put({ _id: "local-test", value: "local" });
342
+ await new Promise((resolve) => setTimeout(resolve, 100));
343
+
344
+ // Phase 2: Simulate remote sync scenario
345
+ console.log("\n--- PHASE 2: REMOTE SYNC SIMULATION ---");
346
+ // TODO: Implement actual remote sync trigger
347
+ // For now, just show the logging setup is working
348
+ console.log("๐Ÿ”„ REMOTE: Would trigger applyMeta path here");
349
+
350
+ console.log("\n--- RESULTS ---");
351
+ console.log("Local write notified:", localNotified);
352
+ console.log("Remote sync notified:", remoteNotified);
353
+
354
+ unsubscribe();
355
+ await db.close();
356
+
357
+ console.log("=== COMPARISON TEST END ===\n");
358
+ });
359
+ ```
360
+
361
+ ### Running the New Tests
362
+
363
+ **Run the new logging tests:**
364
+
365
+ ```bash
366
+ pnpm test fireproof/apply-head-logging.test.ts --reporter=verbose
367
+ ```
368
+
369
+ **Run with debug output:**
370
+
371
+ ```bash
372
+ FP_DEBUG=1 pnpm test fireproof/apply-head-logging.test.ts --reporter=verbose
373
+ ```
374
+
375
+ ### Expected Log Analysis
376
+
377
+ When running these tests, look for:
378
+
379
+ **โœ… Successful Local Write Logs:**
380
+
381
+ ```
382
+ ๐Ÿงช TEST: Starting local write
383
+ ๐Ÿ”ต BULK: Calling applyHead for LOCAL write { localUpdates: true, ... }
384
+ โšก INT_APPLY_HEAD: Entry point { localUpdates: true, needsManualNotification: false }
385
+ ๐Ÿ”” NOTIFY_WATCHERS: Triggering subscriptions { updatesCount: 1, ... }
386
+ ๐Ÿ“ฌ SUBSCRIPTION: Notification received
387
+ ๐Ÿงช TEST: Local write completed
388
+ ```
389
+
390
+ **โŒ Missing Remote Sync Logs:**
391
+
392
+ ```
393
+ ๐Ÿงช TEST: Starting remote sync
394
+ ๐Ÿ”„ REMOTE: Would trigger applyMeta path here
395
+ // MISSING: ๐Ÿ”ด APPLY_META logs
396
+ // MISSING: โšก INT_APPLY_HEAD logs
397
+ // MISSING: ๐Ÿ”” NOTIFY_WATCHERS logs
398
+ ๐Ÿงช TEST: Remote sync completed, notified: false
399
+ ```
400
+
401
+ This pattern will immediately reveal whether the `applyMeta()` path is:
402
+
403
+ 1. **Not being called at all** (no ๐Ÿ”ด logs)
404
+ 2. **Not reaching int_applyHead** (๐Ÿ”ด logs but no โšก logs)
405
+ 3. **Not triggering notifications** (๐Ÿ”ด and โšก logs but no ๐Ÿ”” logs)
406
+
407
+ ### Iterative Testing Strategy
408
+
409
+ 1. **Start with existing tests** - Add logging and run attachable-subscription.test.ts
410
+ 2. **Create minimal reproduction** - Use the simple tests above
411
+ 3. **Identify the break point** - Follow the missing logs
412
+ 4. **Fix incrementally** - Address each missing log in sequence
413
+ 5. **Validate with original tests** - Ensure comprehensive tests pass
414
+
415
+ ---
416
+
417
+ _This investigation will definitively identify whether the `applyMeta()` โ†’ `applyHead()` โ†’ `notifyWatchers()` chain is broken and exactly where the execution path diverges from the working `bulk()` case._
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fireproof/core-test",
3
- "version": "0.23.7-dev-preview1",
3
+ "version": "0.23.7-dev-preview4",
4
4
  "description": "Live ledger for the web.",
5
5
  "type": "module",
6
6
  "main": "./index.js",
@@ -35,32 +35,32 @@
35
35
  },
36
36
  "dependencies": {
37
37
  "@adviser/cement": "^0.4.25",
38
- "@fireproof/core": "0.23.7-dev-preview1",
39
- "@fireproof/core-base": "0.23.7-dev-preview1",
40
- "@fireproof/core-blockstore": "0.23.7-dev-preview1",
41
- "@fireproof/core-gateways-base": "0.23.7-dev-preview1",
42
- "@fireproof/core-gateways-file": "0.23.7-dev-preview1",
43
- "@fireproof/core-gateways-indexeddb": "0.23.7-dev-preview1",
44
- "@fireproof/core-gateways-memory": "0.23.7-dev-preview1",
45
- "@fireproof/core-keybag": "0.23.7-dev-preview1",
46
- "@fireproof/core-protocols-cloud": "0.23.7-dev-preview1",
47
- "@fireproof/core-runtime": "0.23.7-dev-preview1",
48
- "@fireproof/core-types-base": "0.23.7-dev-preview1",
49
- "@fireproof/core-types-blockstore": "0.23.7-dev-preview1",
50
- "@fireproof/core-types-protocols-cloud": "0.23.7-dev-preview1",
51
- "@fireproof/core-types-runtime": "0.23.7-dev-preview1",
52
- "@fireproof/vendor": "0.23.7-dev-preview1",
38
+ "@fireproof/core": "0.23.7-dev-preview4",
39
+ "@fireproof/core-base": "0.23.7-dev-preview4",
40
+ "@fireproof/core-blockstore": "0.23.7-dev-preview4",
41
+ "@fireproof/core-gateways-base": "0.23.7-dev-preview4",
42
+ "@fireproof/core-gateways-file": "0.23.7-dev-preview4",
43
+ "@fireproof/core-gateways-indexeddb": "0.23.7-dev-preview4",
44
+ "@fireproof/core-gateways-memory": "0.23.7-dev-preview4",
45
+ "@fireproof/core-keybag": "0.23.7-dev-preview4",
46
+ "@fireproof/core-protocols-cloud": "0.23.7-dev-preview4",
47
+ "@fireproof/core-runtime": "0.23.7-dev-preview4",
48
+ "@fireproof/core-types-base": "0.23.7-dev-preview4",
49
+ "@fireproof/core-types-blockstore": "0.23.7-dev-preview4",
50
+ "@fireproof/core-types-protocols-cloud": "0.23.7-dev-preview4",
51
+ "@fireproof/core-types-runtime": "0.23.7-dev-preview4",
52
+ "@fireproof/vendor": "0.23.7-dev-preview4",
53
53
  "@ipld/car": "^5.4.2",
54
54
  "@ipld/dag-cbor": "^9.2.4",
55
55
  "@ipld/dag-json": "^10.2.5",
56
56
  "@types/node": "^24.3.0",
57
57
  "cborg": "^4.2.12",
58
58
  "charwise": "^3.0.1",
59
- "use-fireproof": "0.23.7-dev-preview1",
59
+ "use-fireproof": "0.23.7-dev-preview4",
60
60
  "uuidv7": "^1.0.2"
61
61
  },
62
62
  "devDependencies": {
63
- "@fireproof/core-cli": "0.23.7-dev-preview1",
63
+ "@fireproof/core-cli": "0.23.7-dev-preview4",
64
64
  "@vitest/browser": "^3.2.4",
65
65
  "playwright": "^1.54.1",
66
66
  "playwright-chromium": "^1.54.1",