@powerhousedao/reactor-browser 5.2.0-staging.9 → 6.0.0-dev.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.
Files changed (93) hide show
  1. package/README.md +17 -3
  2. package/dist/src/actions/dispatch.d.ts +2 -2
  3. package/dist/src/actions/dispatch.d.ts.map +1 -1
  4. package/dist/src/actions/dispatch.js +4 -1
  5. package/dist/src/actions/dispatch.js.map +1 -1
  6. package/dist/src/actions/document.d.ts.map +1 -1
  7. package/dist/src/actions/document.js +23 -26
  8. package/dist/src/actions/document.js.map +1 -1
  9. package/dist/src/document-cache.d.ts +17 -0
  10. package/dist/src/document-cache.d.ts.map +1 -0
  11. package/dist/src/document-cache.js +143 -0
  12. package/dist/src/document-cache.js.map +1 -0
  13. package/dist/src/errors.js +1 -1
  14. package/dist/src/errors.js.map +1 -1
  15. package/dist/src/hooks/add-ph-event-handlers.d.ts.map +1 -1
  16. package/dist/src/hooks/add-ph-event-handlers.js +2 -0
  17. package/dist/src/hooks/add-ph-event-handlers.js.map +1 -1
  18. package/dist/src/hooks/dispatch.d.ts +1 -1
  19. package/dist/src/hooks/dispatch.d.ts.map +1 -1
  20. package/dist/src/hooks/dispatch.js +2 -2
  21. package/dist/src/hooks/dispatch.js.map +1 -1
  22. package/dist/src/hooks/document-by-id.d.ts +1 -1
  23. package/dist/src/hooks/document-by-id.d.ts.map +1 -1
  24. package/dist/src/hooks/document-by-id.js +3 -3
  25. package/dist/src/hooks/document-by-id.js.map +1 -1
  26. package/dist/src/hooks/document-cache.d.ts +19 -3
  27. package/dist/src/hooks/document-cache.d.ts.map +1 -1
  28. package/dist/src/hooks/document-cache.js +41 -14
  29. package/dist/src/hooks/document-cache.js.map +1 -1
  30. package/dist/src/hooks/index.d.ts +5 -4
  31. package/dist/src/hooks/index.d.ts.map +1 -1
  32. package/dist/src/hooks/index.js +5 -4
  33. package/dist/src/hooks/index.js.map +1 -1
  34. package/dist/src/hooks/selected-document.d.ts +3 -1
  35. package/dist/src/hooks/selected-document.d.ts.map +1 -1
  36. package/dist/src/hooks/selected-document.js +9 -0
  37. package/dist/src/hooks/selected-document.js.map +1 -1
  38. package/dist/src/hooks/toast.d.ts +7 -0
  39. package/dist/src/hooks/toast.d.ts.map +1 -0
  40. package/dist/src/hooks/toast.js +9 -0
  41. package/dist/src/hooks/toast.js.map +1 -0
  42. package/dist/src/hooks/use-feature-flags.d.ts +0 -8
  43. package/dist/src/hooks/use-feature-flags.d.ts.map +1 -1
  44. package/dist/src/hooks/use-feature-flags.js +23 -16
  45. package/dist/src/hooks/use-feature-flags.js.map +1 -1
  46. package/dist/src/hooks/vetra-packages.d.ts.map +1 -1
  47. package/dist/src/hooks/vetra-packages.js +3 -1
  48. package/dist/src/hooks/vetra-packages.js.map +1 -1
  49. package/dist/src/index.d.ts +2 -0
  50. package/dist/src/index.d.ts.map +1 -1
  51. package/dist/src/index.js +2 -0
  52. package/dist/src/index.js.map +1 -1
  53. package/dist/src/pglite/drop.d.ts +1 -1
  54. package/dist/src/pglite/drop.d.ts.map +1 -1
  55. package/dist/src/pglite/drop.js +3 -2
  56. package/dist/src/pglite/drop.js.map +1 -1
  57. package/dist/src/reactor-client-document-cache.d.ts +31 -0
  58. package/dist/src/reactor-client-document-cache.d.ts.map +1 -0
  59. package/dist/src/reactor-client-document-cache.js +142 -0
  60. package/dist/src/reactor-client-document-cache.js.map +1 -0
  61. package/dist/src/reactor.d.ts +0 -3
  62. package/dist/src/reactor.d.ts.map +1 -1
  63. package/dist/src/reactor.js +0 -56
  64. package/dist/src/reactor.js.map +1 -1
  65. package/dist/src/renown/utils.d.ts.map +1 -1
  66. package/dist/src/renown/utils.js +1 -1
  67. package/dist/src/renown/utils.js.map +1 -1
  68. package/dist/src/types/documents.d.ts +10 -5
  69. package/dist/src/types/documents.d.ts.map +1 -1
  70. package/dist/src/types/global.d.ts +2 -0
  71. package/dist/src/types/global.d.ts.map +1 -1
  72. package/dist/src/types/index.d.ts +1 -0
  73. package/dist/src/types/index.d.ts.map +1 -1
  74. package/dist/src/types/toast.d.ts +9 -0
  75. package/dist/src/types/toast.d.ts.map +1 -0
  76. package/dist/src/types/toast.js +2 -0
  77. package/dist/src/types/toast.js.map +1 -0
  78. package/dist/test/document-cache.test.d.ts +2 -0
  79. package/dist/test/document-cache.test.d.ts.map +1 -0
  80. package/dist/test/document-cache.test.js +457 -0
  81. package/dist/test/document-cache.test.js.map +1 -0
  82. package/dist/test/drop.test.js +7 -9
  83. package/dist/test/drop.test.js.map +1 -1
  84. package/dist/test/getSwitchboardUrl.test.js +3 -1
  85. package/dist/test/getSwitchboardUrl.test.js.map +1 -1
  86. package/dist/test/hooks/document-cache.test.d.ts +2 -0
  87. package/dist/test/hooks/document-cache.test.d.ts.map +1 -0
  88. package/dist/test/hooks/document-cache.test.js +642 -0
  89. package/dist/test/hooks/document-cache.test.js.map +1 -0
  90. package/dist/test/switchboard.test.js +4 -2
  91. package/dist/test/switchboard.test.js.map +1 -1
  92. package/dist/tsconfig.tsbuildinfo +1 -1
  93. package/package.json +8 -8
@@ -0,0 +1,457 @@
1
+ import { driveDocumentModelModule, ReactorBuilder, } from "document-drive";
2
+ import { documentModelDocumentModelModule, setName, } from "document-model";
3
+ import { describe, expect, it, vi } from "vitest";
4
+ import { addPromiseState, DocumentCache, readPromiseState, } from "../src/document-cache.js";
5
+ function createMockDocument(id, name = "Test Document") {
6
+ const document = documentModelDocumentModelModule.utils.createDocument();
7
+ document.header.id = id;
8
+ document.header.name = name;
9
+ return document;
10
+ }
11
+ async function createDocumentCache(documents = []) {
12
+ const legacyReactor = new ReactorBuilder([
13
+ driveDocumentModelModule,
14
+ documentModelDocumentModelModule,
15
+ ]).build();
16
+ for (const document of documents) {
17
+ await legacyReactor.addDocument(document);
18
+ }
19
+ return {
20
+ reactor: legacyReactor,
21
+ cache: new DocumentCache(legacyReactor),
22
+ };
23
+ }
24
+ describe("readPromiseState", () => {
25
+ it("should return pending for uninitialized promise", () => {
26
+ const promise = addPromiseState(new Promise(() => { }));
27
+ const state = readPromiseState(promise);
28
+ expect(state.status).toBe("pending");
29
+ expect(promise.status).toBe("pending");
30
+ });
31
+ it("should return fulfilled with value for resolved promise", async () => {
32
+ const promise = addPromiseState(Promise.resolve("test-value"));
33
+ // Initialize tracking
34
+ readPromiseState(promise);
35
+ // Wait for promise to settle
36
+ await promise;
37
+ const state = readPromiseState(promise);
38
+ expect(state.status).toBe("fulfilled");
39
+ expect(promise.status).toBe("fulfilled");
40
+ expect(promise.value).toBe("test-value");
41
+ if (state.status === "fulfilled") {
42
+ expect(state.value).toBe("test-value");
43
+ }
44
+ });
45
+ it("should return rejected with reason for rejected promise", async () => {
46
+ const error = new Error("test error");
47
+ let rejectFn;
48
+ const promise = addPromiseState(new Promise((_, reject) => {
49
+ rejectFn = reject;
50
+ }));
51
+ // Suppress unhandled rejection from readPromiseState's re-throw
52
+ const handler = (e) => {
53
+ if (e.reason?.message === "test error")
54
+ e.preventDefault();
55
+ };
56
+ window.addEventListener("unhandledrejection", handler);
57
+ // Attach catch handler before rejecting
58
+ const catchPromise = promise.catch(() => { });
59
+ // Initialize tracking
60
+ readPromiseState(promise);
61
+ // Reject the promise
62
+ rejectFn(error);
63
+ // Wait for promise to settle
64
+ await catchPromise;
65
+ // Wait for readPromiseState's internal handler to complete
66
+ await new Promise((resolve) => setTimeout(resolve, 0));
67
+ const state = readPromiseState(promise);
68
+ expect(state.status).toBe("rejected");
69
+ expect(promise.status).toBe("rejected");
70
+ expect(promise.reason).toBe(error);
71
+ if (state.status === "rejected") {
72
+ expect(state.reason).toBe(error);
73
+ }
74
+ // Wait for async re-throw from readPromiseState
75
+ await new Promise((resolve) => setTimeout(resolve, 10));
76
+ window.removeEventListener("unhandledrejection", handler);
77
+ });
78
+ it("should track state transition from pending to fulfilled", async () => {
79
+ let resolve;
80
+ const promise = addPromiseState(new Promise((r) => {
81
+ resolve = r;
82
+ }));
83
+ // Initially pending
84
+ const pendingState = readPromiseState(promise);
85
+ expect(pendingState.status).toBe("pending");
86
+ // Resolve the promise
87
+ resolve("resolved-value");
88
+ await promise;
89
+ // Now fulfilled
90
+ const fulfilledState = readPromiseState(promise);
91
+ expect(fulfilledState.status).toBe("fulfilled");
92
+ if (fulfilledState.status === "fulfilled") {
93
+ expect(fulfilledState.value).toBe("resolved-value");
94
+ }
95
+ });
96
+ it("should track state transition from pending to rejected", async () => {
97
+ let reject;
98
+ const promise = addPromiseState(new Promise((_, r) => {
99
+ reject = r;
100
+ }));
101
+ // Suppress unhandled rejection from readPromiseState's re-throw
102
+ const error = new Error("rejection reason");
103
+ const handler = (e) => {
104
+ if (e.reason?.message === "rejection reason")
105
+ e.preventDefault();
106
+ };
107
+ window.addEventListener("unhandledrejection", handler);
108
+ // Attach catch handler before rejecting
109
+ const catchPromise = promise.catch(() => { });
110
+ // Initially pending
111
+ const pendingState = readPromiseState(promise);
112
+ expect(pendingState.status).toBe("pending");
113
+ // Reject the promise
114
+ reject(error);
115
+ await catchPromise;
116
+ // Wait for readPromiseState's internal handler to complete
117
+ await new Promise((resolve) => setTimeout(resolve, 0));
118
+ // Now rejected
119
+ const rejectedState = readPromiseState(promise);
120
+ expect(rejectedState.status).toBe("rejected");
121
+ if (rejectedState.status === "rejected") {
122
+ expect(rejectedState.reason).toBe(error);
123
+ }
124
+ // Wait for async re-throw from readPromiseState
125
+ await new Promise((resolve) => setTimeout(resolve, 10));
126
+ window.removeEventListener("unhandledrejection", handler);
127
+ });
128
+ it("should return same state on subsequent calls for already tracked promise", async () => {
129
+ const promise = addPromiseState(Promise.resolve("value"));
130
+ readPromiseState(promise);
131
+ await promise;
132
+ const state1 = readPromiseState(promise);
133
+ const state2 = readPromiseState(promise);
134
+ expect(state1).toEqual(state2);
135
+ });
136
+ });
137
+ describe("DocumentCache class", () => {
138
+ describe("get method", () => {
139
+ it("should call reactor.getDocument when getting document", async () => {
140
+ const doc = createMockDocument("test");
141
+ const { reactor, cache } = await createDocumentCache([doc]);
142
+ const spy = vi.spyOn(reactor, "getDocument");
143
+ const documentP = cache.get("test");
144
+ expect(spy).toHaveBeenCalledWith("test");
145
+ await expect(documentP).resolves.toEqual(doc);
146
+ });
147
+ it("should deduplicate requests while promise is pending", async () => {
148
+ const doc = createMockDocument("test");
149
+ const { reactor, cache } = await createDocumentCache([doc]);
150
+ const spy = vi.spyOn(reactor, "getDocument");
151
+ const promise1 = cache.get("test");
152
+ const promise2 = cache.get("test");
153
+ const promise3 = cache.get("test");
154
+ expect(promise1).toBe(promise2);
155
+ expect(promise2).toBe(promise3);
156
+ expect(spy).toHaveBeenCalledTimes(1);
157
+ const [result1, result2, result3] = await Promise.all([
158
+ promise1,
159
+ promise2,
160
+ promise3,
161
+ ]);
162
+ expect(result1).toBe(result2);
163
+ expect(result2).toBe(result3);
164
+ });
165
+ it("should return cached fulfilled promise when refetch is false", async () => {
166
+ const doc = createMockDocument("test");
167
+ const { reactor, cache } = await createDocumentCache([doc]);
168
+ const spy = vi.spyOn(reactor, "getDocument");
169
+ const promise1 = cache.get("test");
170
+ await promise1;
171
+ const promise2 = cache.get("test", false);
172
+ expect(promise1).toBe(promise2);
173
+ expect(spy).toHaveBeenCalledTimes(1);
174
+ });
175
+ it("should refetch when refetch is true even for fulfilled promise", async () => {
176
+ const doc = createMockDocument("test");
177
+ const { reactor, cache } = await createDocumentCache([doc]);
178
+ const spy = vi.spyOn(reactor, "getDocument");
179
+ const promise1 = cache.get("test");
180
+ // Initialize state tracking before awaiting
181
+ readPromiseState(promise1);
182
+ await promise1;
183
+ // Allow microtask to update promise status to "fulfilled"
184
+ await new Promise((resolve) => setTimeout(resolve, 0));
185
+ const promise2 = cache.get("test", true);
186
+ expect(promise1).not.toBe(promise2);
187
+ expect(spy).toHaveBeenCalledTimes(2);
188
+ });
189
+ it("should handle non-existent document", async () => {
190
+ const { cache } = await createDocumentCache([]);
191
+ // Suppress unhandled rejection from readPromiseState's re-throw
192
+ const handler = (e) => {
193
+ if (e.reason?.message?.includes("non-existent"))
194
+ e.preventDefault();
195
+ };
196
+ window.addEventListener("unhandledrejection", handler);
197
+ await expect(cache.get("non-existent")).rejects.toThrow();
198
+ // Wait for async re-throw from readPromiseState
199
+ await new Promise((resolve) => setTimeout(resolve, 10));
200
+ window.removeEventListener("unhandledrejection", handler);
201
+ });
202
+ });
203
+ describe("getBatch method", () => {
204
+ it("should return a promise that resolves to an array of documents", async () => {
205
+ const doc1 = createMockDocument("doc-1", "Document 1");
206
+ const doc2 = createMockDocument("doc-2", "Document 2");
207
+ const { cache } = await createDocumentCache([doc1, doc2]);
208
+ const docs = await cache.getBatch(["doc-1", "doc-2"]);
209
+ expect(docs).toHaveLength(2);
210
+ expect(docs[0].header.name).toBe("Document 1");
211
+ expect(docs[1].header.name).toBe("Document 2");
212
+ });
213
+ it("should cache batch promises by key", async () => {
214
+ const doc1 = createMockDocument("doc-1");
215
+ const doc2 = createMockDocument("doc-2");
216
+ const { cache } = await createDocumentCache([doc1, doc2]);
217
+ const promise1 = cache.getBatch(["doc-1", "doc-2"]);
218
+ await promise1;
219
+ const promise2 = cache.getBatch(["doc-1", "doc-2"]);
220
+ expect(promise1).toBe(promise2);
221
+ });
222
+ it("should return different batch for different id order", async () => {
223
+ const doc1 = createMockDocument("doc-1");
224
+ const doc2 = createMockDocument("doc-2");
225
+ const { cache } = await createDocumentCache([doc1, doc2]);
226
+ const promise1 = cache.getBatch(["doc-1", "doc-2"]);
227
+ await promise1;
228
+ const promise2 = cache.getBatch(["doc-2", "doc-1"]);
229
+ expect(promise1).not.toBe(promise2);
230
+ });
231
+ it("should create pre-resolved batch when all promises are fulfilled", async () => {
232
+ const doc1 = createMockDocument("doc-1");
233
+ const doc2 = createMockDocument("doc-2");
234
+ const { cache } = await createDocumentCache([doc1, doc2]);
235
+ // Fetch individual documents and initialize state tracking
236
+ const p1 = cache.get("doc-1");
237
+ const p2 = cache.get("doc-2");
238
+ readPromiseState(p1);
239
+ readPromiseState(p2);
240
+ await Promise.all([p1, p2]);
241
+ // Allow microtask to update promise statuses to "fulfilled"
242
+ await new Promise((resolve) => setTimeout(resolve, 0));
243
+ const batchPromise = cache.getBatch([
244
+ "doc-1",
245
+ "doc-2",
246
+ ]);
247
+ // Should be pre-resolved (status already set)
248
+ expect(batchPromise.status).toBe("fulfilled");
249
+ expect(batchPromise.value).toBeDefined();
250
+ expect(batchPromise.value).toHaveLength(2);
251
+ });
252
+ it("should return empty batch for empty ids array", async () => {
253
+ const { cache } = await createDocumentCache([]);
254
+ const docs = await cache.getBatch([]);
255
+ expect(docs).toEqual([]);
256
+ });
257
+ it("should reject when one document does not exist", async () => {
258
+ const doc1 = createMockDocument("doc-1");
259
+ const { cache } = await createDocumentCache([doc1]);
260
+ // Suppress unhandled rejection from readPromiseState's re-throw
261
+ const handler = (e) => {
262
+ if (e.reason?.message?.includes("non-existent"))
263
+ e.preventDefault();
264
+ };
265
+ window.addEventListener("unhandledrejection", handler);
266
+ await expect(cache.getBatch(["doc-1", "non-existent"])).rejects.toThrow();
267
+ // Wait for async re-throw from readPromiseState
268
+ await new Promise((resolve) => setTimeout(resolve, 10));
269
+ window.removeEventListener("unhandledrejection", handler);
270
+ });
271
+ it("should not return stale data when a document has been deleted", async () => {
272
+ const doc1 = createMockDocument("doc-1", "Document 1");
273
+ const doc2 = createMockDocument("doc-2", "Document 2");
274
+ const { reactor, cache } = await createDocumentCache([doc1, doc2]);
275
+ // Suppress unhandled rejection from readPromiseState's re-throw
276
+ const handler = (e) => {
277
+ if (e.reason?.message?.includes("doc-2"))
278
+ e.preventDefault();
279
+ };
280
+ window.addEventListener("unhandledrejection", handler);
281
+ // Fetch batch initially to cache it
282
+ const initialBatch = await cache.getBatch(["doc-1", "doc-2"]);
283
+ expect(initialBatch).toHaveLength(2);
284
+ expect(initialBatch[0].header.name).toBe("Document 1");
285
+ expect(initialBatch[1].header.name).toBe("Document 2");
286
+ // Delete one document (this triggers documentDeleted event which removes it from cache)
287
+ await reactor.deleteDocument(doc2.header.id);
288
+ // Subsequent batch request should detect the deletion and create a new batch
289
+ // that will fail (not return stale data)
290
+ await expect(cache.getBatch(["doc-1", "doc-2"])).rejects.toThrow();
291
+ // Wait for async re-throw from readPromiseState
292
+ await new Promise((resolve) => setTimeout(resolve, 10));
293
+ window.removeEventListener("unhandledrejection", handler);
294
+ });
295
+ it("should invalidate batch cache when a document is deleted", async () => {
296
+ const doc1 = createMockDocument("doc-1", "Document 1");
297
+ const doc2 = createMockDocument("doc-2", "Document 2");
298
+ const doc3 = createMockDocument("doc-3", "Document 3");
299
+ const { reactor, cache } = await createDocumentCache([doc1, doc2, doc3]);
300
+ // Suppress unhandled rejection from readPromiseState's re-throw
301
+ const handler = (e) => {
302
+ if (e.reason?.message?.includes("doc-2"))
303
+ e.preventDefault();
304
+ };
305
+ window.addEventListener("unhandledrejection", handler);
306
+ // Fetch two different batches to cache them
307
+ const batch1 = cache.getBatch(["doc-1", "doc-2"]);
308
+ const batch2 = cache.getBatch(["doc-2", "doc-3"]);
309
+ await Promise.all([batch1, batch2]);
310
+ // Both batches should be cached (same reference on subsequent calls)
311
+ expect(cache.getBatch(["doc-1", "doc-2"])).toBe(batch1);
312
+ expect(cache.getBatch(["doc-2", "doc-3"])).toBe(batch2);
313
+ // Delete doc-2 (should invalidate both batches that contain it)
314
+ await reactor.deleteDocument(doc2.header.id);
315
+ // Batch that only contained doc-1 and doc-3 should still work
316
+ const batch3 = cache.getBatch(["doc-1", "doc-3"]);
317
+ await expect(batch3).resolves.toHaveLength(2);
318
+ // Batches containing deleted doc-2 should be invalidated (new promise, will fail)
319
+ const newBatch1 = cache.getBatch(["doc-1", "doc-2"]);
320
+ const newBatch2 = cache.getBatch(["doc-2", "doc-3"]);
321
+ expect(newBatch1).not.toBe(batch1);
322
+ expect(newBatch2).not.toBe(batch2);
323
+ await expect(newBatch1).rejects.toThrow();
324
+ await expect(newBatch2).rejects.toThrow();
325
+ // Wait for async re-throw from readPromiseState
326
+ await new Promise((resolve) => setTimeout(resolve, 10));
327
+ window.removeEventListener("unhandledrejection", handler);
328
+ });
329
+ });
330
+ describe("subscribe method", () => {
331
+ it("should add listener for single id", async () => {
332
+ const doc = createMockDocument("test");
333
+ const { cache } = await createDocumentCache([doc]);
334
+ const callback = vi.fn();
335
+ cache.subscribe("test", callback);
336
+ // Callback is not immediately called
337
+ expect(callback).not.toHaveBeenCalled();
338
+ });
339
+ it("should add listener for multiple ids", async () => {
340
+ const doc1 = createMockDocument("doc-1");
341
+ const doc2 = createMockDocument("doc-2");
342
+ const { cache } = await createDocumentCache([doc1, doc2]);
343
+ const callback = vi.fn();
344
+ cache.subscribe(["doc-1", "doc-2"], callback);
345
+ // Callback is not immediately called
346
+ expect(callback).not.toHaveBeenCalled();
347
+ });
348
+ it("should return unsubscribe function", async () => {
349
+ const doc = createMockDocument("test");
350
+ const { cache } = await createDocumentCache([doc]);
351
+ const callback = vi.fn();
352
+ const unsubscribe = cache.subscribe("test", callback);
353
+ expect(typeof unsubscribe).toBe("function");
354
+ });
355
+ it("should allow multiple subscriptions to same id", async () => {
356
+ const doc = createMockDocument("test");
357
+ const { cache } = await createDocumentCache([doc]);
358
+ const callback1 = vi.fn();
359
+ const callback2 = vi.fn();
360
+ cache.subscribe("test", callback1);
361
+ cache.subscribe("test", callback2);
362
+ // Both subscriptions should be registered without error
363
+ expect(callback1).not.toHaveBeenCalled();
364
+ expect(callback2).not.toHaveBeenCalled();
365
+ });
366
+ });
367
+ describe("event handling", () => {
368
+ it("should notify listeners when operationsAdded event is emitted", async () => {
369
+ const doc = createMockDocument("test", "Original Name");
370
+ const { reactor, cache } = await createDocumentCache([doc]);
371
+ const callback = vi.fn();
372
+ // First, get the document to add it to the cache
373
+ await cache.get("test");
374
+ // Subscribe to changes
375
+ cache.subscribe("test", callback);
376
+ // Add an operation to trigger the event
377
+ await reactor.addAction(doc.header.id, setName("Updated Name"));
378
+ // Wait for the callback to be called
379
+ await vi.waitFor(() => {
380
+ expect(callback).toHaveBeenCalled();
381
+ });
382
+ });
383
+ it("should remove document from cache when documentDeleted event is emitted", async () => {
384
+ const doc = createMockDocument("test");
385
+ const { reactor, cache } = await createDocumentCache([doc]);
386
+ // Get the document to add it to cache
387
+ await cache.get("test");
388
+ // Delete the document
389
+ await reactor.deleteDocument(doc.header.id);
390
+ // Trying to get the deleted document should fail
391
+ await expect(cache.get("test")).rejects.toThrow();
392
+ });
393
+ it("should notify listeners when documentDeleted event is emitted", async () => {
394
+ const doc = createMockDocument("test");
395
+ const { reactor, cache } = await createDocumentCache([doc]);
396
+ const callback = vi.fn();
397
+ // Get the document to add it to cache
398
+ await cache.get("test");
399
+ // Subscribe to changes
400
+ cache.subscribe("test", callback);
401
+ // Delete the document
402
+ await reactor.deleteDocument(doc.header.id);
403
+ // Callback should be called
404
+ expect(callback).toHaveBeenCalled();
405
+ });
406
+ it("should not notify listeners for documents not in cache on operationsAdded", async () => {
407
+ const doc = createMockDocument("test");
408
+ const { reactor, cache } = await createDocumentCache([doc]);
409
+ const callback = vi.fn();
410
+ // Subscribe without getting the document first
411
+ cache.subscribe("test", callback);
412
+ // Add an operation
413
+ await reactor.addAction(doc.header.id, setName("Updated Name"));
414
+ // Wait a bit to ensure no callback is triggered
415
+ await new Promise((resolve) => setTimeout(resolve, 100));
416
+ // Callback should not be called because document wasn't in cache
417
+ expect(callback).not.toHaveBeenCalled();
418
+ });
419
+ });
420
+ describe("stale-while-revalidate behavior", () => {
421
+ it("should return stale data while refetch is triggered by operationsAdded", async () => {
422
+ const doc = createMockDocument("test", "Original Name");
423
+ const { reactor, cache } = await createDocumentCache([doc]);
424
+ // Get document initially and track state
425
+ const initialPromise = cache.get("test");
426
+ readPromiseState(initialPromise);
427
+ const initialDoc = await initialPromise;
428
+ expect(initialDoc.header.name).toBe("Original Name");
429
+ // Allow microtask to update promise status to "fulfilled"
430
+ await new Promise((resolve) => setTimeout(resolve, 0));
431
+ // Trigger update which will refetch
432
+ const actionPromise = reactor.addAction(doc.header.id, setName("Updated Name"));
433
+ // While update is being processed, get() should still return the old data
434
+ expect(cache.get("test")).toBe(initialPromise);
435
+ await actionPromise;
436
+ // After operationsAdded completes, get() should return the updated data
437
+ expect(cache.get("test")).not.toBe(initialPromise);
438
+ const updatedDoc = await cache.get("test");
439
+ expect(updatedDoc.header.name).toBe("Updated Name");
440
+ });
441
+ it("should return stale batch data while refetch is in progress", async () => {
442
+ const doc1 = createMockDocument("doc-1", "Doc 1");
443
+ const doc2 = createMockDocument("doc-2", "Doc 2");
444
+ const { reactor, cache } = await createDocumentCache([doc1, doc2]);
445
+ // Get initial batch
446
+ const initialBatch = await cache.getBatch(["doc-1", "doc-2"]);
447
+ expect(initialBatch[0].header.name).toBe("Doc 1");
448
+ // Trigger update which starts a refetch
449
+ await reactor.addAction(doc1.header.id, setName("Updated Doc 1"));
450
+ // During refetch, getBatch should still return data (possibly stale)
451
+ const duringRefetchBatch = await cache.getBatch(["doc-1", "doc-2"]);
452
+ expect(duringRefetchBatch).toBeDefined();
453
+ expect(duringRefetchBatch).toHaveLength(2);
454
+ });
455
+ });
456
+ });
457
+ //# sourceMappingURL=document-cache.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"document-cache.test.js","sourceRoot":"","sources":["../../test/document-cache.test.tsx"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import { PGlite } from "@electric-sql/pglite";
2
- import { ReactorBuilder, ReactorClientBuilder, } from "@powerhousedao/reactor";
2
+ import { REACTOR_SCHEMA, ReactorBuilder, ReactorClientBuilder, } from "@powerhousedao/reactor";
3
3
  import { driveDocumentModelModule } from "document-drive";
4
- import { documentModelDocumentModelModule, } from "document-model";
4
+ import { documentModelDocumentModelModule } from "document-model";
5
5
  import { Kysely, sql } from "kysely";
6
6
  import { PGliteDialect } from "kysely-pglite-dialect";
7
7
  import { afterEach, beforeEach, describe, expect, it } from "vitest";
@@ -34,20 +34,18 @@ describe("dropAllTables", () => {
34
34
  const doc = documentModelDocumentModelModule.utils.createDocument();
35
35
  await module.client.create(doc);
36
36
  const beforeCount = await sql `
37
- SELECT COUNT(*) as count FROM pg_catalog.pg_tables WHERE schemaname = 'public'
37
+ SELECT COUNT(*) as count FROM pg_catalog.pg_tables WHERE schemaname = ${REACTOR_SCHEMA}
38
38
  `.execute(db);
39
39
  expect(Number(beforeCount.rows[0]?.count)).toBeGreaterThan(0);
40
40
  await dropAllTables(pg);
41
41
  const afterCount = await sql `
42
- SELECT COUNT(*) as count FROM pg_catalog.pg_tables WHERE schemaname = 'public'
42
+ SELECT COUNT(*) as count FROM pg_catalog.pg_tables WHERE schemaname = ${REACTOR_SCHEMA}
43
43
  `.execute(db);
44
44
  expect(Number(afterCount.rows[0]?.count)).toBe(0);
45
45
  });
46
46
  it("should handle empty database without errors", async () => {
47
47
  const reactorBuilder = new ReactorBuilder()
48
- .withDocumentModels([
49
- documentModelDocumentModelModule,
50
- ])
48
+ .withDocumentModels([documentModelDocumentModelModule])
51
49
  .withKysely(db)
52
50
  .withFeatures({ legacyStorageEnabled: false });
53
51
  module = await new ReactorClientBuilder()
@@ -73,14 +71,14 @@ describe("dropAllTables", () => {
73
71
  child.header.id = "child-doc";
74
72
  await module.client.create(child, "parent-doc");
75
73
  const tablesBefore = await sql `
76
- SELECT tablename FROM pg_catalog.pg_tables WHERE schemaname = 'public'
74
+ SELECT tablename FROM pg_catalog.pg_tables WHERE schemaname = ${REACTOR_SCHEMA}
77
75
  `.execute(db);
78
76
  expect(tablesBefore.rows.length).toBeGreaterThan(0);
79
77
  expect(tablesBefore.rows.map((r) => r.tablename)).toContain("Operation");
80
78
  expect(tablesBefore.rows.map((r) => r.tablename)).toContain("Document");
81
79
  await dropAllTables(pg);
82
80
  const tablesAfter = await sql `
83
- SELECT tablename FROM pg_catalog.pg_tables WHERE schemaname = 'public'
81
+ SELECT tablename FROM pg_catalog.pg_tables WHERE schemaname = ${REACTOR_SCHEMA}
84
82
  `.execute(db);
85
83
  expect(tablesAfter.rows.length).toBe(0);
86
84
  });
@@ -1 +1 @@
1
- {"version":3,"file":"drop.test.js","sourceRoot":"","sources":["../../test/drop.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"drop.test.js","sourceRoot":"","sources":["../../test/drop.test.ts"],"names":[],"mappings":"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"}
@@ -67,7 +67,9 @@ describe("buildDocumentSubgraphQuery", () => {
67
67
  .toStrictEqual(`query getDocument($documentId: String!) {
68
68
  document(id: $documentId) {
69
69
  id
70
- lastModified
70
+ documentType
71
+ createdAtUtcIso
72
+ lastModifiedAtUtcIso
71
73
  name
72
74
  revision
73
75
  stateJSON
@@ -1 +1 @@
1
- {"version":3,"file":"getSwitchboardUrl.test.js","sourceRoot":"","sources":["../../test/getSwitchboardUrl.test.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"getSwitchboardUrl.test.js","sourceRoot":"","sources":["../../test/getSwitchboardUrl.test.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,iCAAiC,EAAE,MAAM,WAAW,CAAC;AAC9D,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC9D,OAAO,EAAE,0BAA0B,EAAE,MAAM,6BAA6B,CAAC;AAiBzE,qDAAqD;AACrD,EAAE,CAAC,IAAI,CAAC,gBAAgB,EAAE,GAAG,EAAE,CAAC,CAAC;IAC/B,gCAAgC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,0BAA0B,CAAC;CAC1E,CAAC,CAAC,CAAC;AAEJ,QAAQ,CAAC,4BAA4B,EAAE,GAAG,EAAE;IAC1C,MAAM,YAAY,GAAG,kCAAkC,CAAC;IACxD,MAAM,cAAc,GAAG,mBAAmB,CAAC;IAE3C,UAAU,CAAC,GAAG,EAAE;QACd,EAAE,CAAC,aAAa,EAAE,CAAC;IACrB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;QAC/C,MAAM,MAAM,GAAG,0BAA0B,CAAC,YAAY,EAAE,cAAc,CAAC,CAAC;QAExE,2CAA2C;QAC3C,MAAM,CAAC,OAAO,MAAM,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACrC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;QAEzC,oEAAoE;QACpE,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAC7B,iCAAiC,CAAC,MAAM,CAAC,IAAI,EAAE,CACzB,CAAC;QAEzB,MAAM,CAAC,YAAY,CAAC,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;QAChD,MAAM,CAAC,YAAY,CAAC,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;QACjD,mDAAmD;QACnD,MAAM,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;QAEnD,0DAA0D;QAC1D,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,SAAS,CAAmB,CAAC;QACvE,MAAM,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC;YACxB,UAAU,EAAE,cAAc;YAC1B,OAAO,EAAE,YAAY;SACtB,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oCAAoC,EAAE,GAAG,EAAE;QAC5C,MAAM,SAAS,GAAG,qBAAqB,CAAC;QAExC,MAAM,MAAM,GAAG,0BAA0B,CACvC,YAAY,EACZ,cAAc,EACd,SAAS,CACV,CAAC;QAEF,2CAA2C;QAC3C,MAAM,CAAC,OAAO,MAAM,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACrC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;QAEzC,iEAAiE;QACjE,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAC7B,iCAAiC,CAAC,MAAM,CAAC,IAAI,EAAE,CACzB,CAAC;QAEzB,MAAM,CAAC,YAAY,CAAC,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;QAChD,MAAM,CAAC,YAAY,CAAC,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;QACjD,MAAM,CAAC,YAAY,CAAC,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;QAE/C,uCAAuC;QACvC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAiB,CAAC;QACjE,MAAM,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC;YACtB,aAAa,EAAE,UAAU,SAAS,EAAE;SACrC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oDAAoD,EAAE,GAAG,EAAE;QAC5D,MAAM,gBAAgB,GAAG,qCAAqC,CAAC;QAE/D,MAAM,MAAM,GAAG,0BAA0B,CAAC,gBAAgB,EAAE,cAAc,CAAC,CAAC;QAE5E,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAC7B,iCAAiC,CAAC,MAAM,CAAC,IAAI,EAAE,CACzB,CAAC;QACzB,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,SAAS,CAAmB,CAAC;QAEvE,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IAClD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6CAA6C,EAAE,GAAG,EAAE;QACrD,MAAM,MAAM,GAAG,0BAA0B,CAAC,YAAY,EAAE,cAAc,EAAE,EAAE,CAAC,CAAC;QAE5E,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAC7B,iCAAiC,CAAC,MAAM,CAAC,IAAI,EAAE,CACzB,CAAC;QAEzB,oFAAoF;QACpF,MAAM,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iDAAiD,EAAE,GAAG,EAAE;QACzD,MAAM,MAAM,GAAG,0BAA0B,CAAC,YAAY,EAAE,cAAc,CAAC,CAAC;QAExE,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAC7B,iCAAiC,CAAC,MAAM,CAAC,IAAI,EAAE,CACzB,CAAC;QAEzB,gEAAgE;QAChE,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC;aAC1B,aAAa,CAAC;;;;;;;;;;IAUjB,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;QACnD,MAAM,IAAI,GAAG;YACX,mCAAmC;YACnC,kDAAkD;YAClD,mCAAmC;SACpC,CAAC;QAEF,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;YACnB,MAAM,MAAM,GAAG,0BAA0B,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;YAE/D,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAC7B,iCAAiC,CAAC,MAAM,CAAC,IAAI,EAAE,CACzB,CAAC;YACzB,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,SAAS,CAAmB,CAAC;YAEvE,MAAM,YAAY,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;YAC1C,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAC/C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mDAAmD,EAAE,GAAG,EAAE;QAC3D,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAC1B,MAAM,OAAO,GAAG,0BAA0B,CACxC,YAAY,EACZ,cAAc,EACd,YAAY,CACb,CAAC;QAEF,MAAM,OAAO,GAAG,0BAA0B,CACxC,YAAY,EACZ,cAAc,EACd,YAAY,CACb,CAAC;QAEF,8CAA8C;QAC9C,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAChC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4DAA4D,EAAE,GAAG,EAAE;QACpE,MAAM,OAAO,GAAG,0BAA0B,CACxC,YAAY,EACZ,cAAc,EACd,QAAQ,CACT,CAAC;QAEF,MAAM,OAAO,GAAG,0BAA0B,CACxC,YAAY,EACZ,cAAc,EACd,QAAQ,CACT,CAAC;QAEF,wDAAwD;QACxD,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACpC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=document-cache.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"document-cache.test.d.ts","sourceRoot":"","sources":["../../../test/hooks/document-cache.test.tsx"],"names":[],"mappings":""}