@powerhousedao/reactor-browser 5.2.0-staging.8 → 5.3.0-staging.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +17 -3
- package/dist/src/actions/dispatch.d.ts +2 -2
- package/dist/src/actions/dispatch.d.ts.map +1 -1
- package/dist/src/actions/dispatch.js +4 -1
- package/dist/src/actions/dispatch.js.map +1 -1
- package/dist/src/actions/document.d.ts.map +1 -1
- package/dist/src/actions/document.js +23 -26
- package/dist/src/actions/document.js.map +1 -1
- package/dist/src/document-cache.d.ts +17 -0
- package/dist/src/document-cache.d.ts.map +1 -0
- package/dist/src/document-cache.js +143 -0
- package/dist/src/document-cache.js.map +1 -0
- package/dist/src/errors.js +1 -1
- package/dist/src/errors.js.map +1 -1
- package/dist/src/hooks/add-ph-event-handlers.d.ts.map +1 -1
- package/dist/src/hooks/add-ph-event-handlers.js +2 -0
- package/dist/src/hooks/add-ph-event-handlers.js.map +1 -1
- package/dist/src/hooks/dispatch.d.ts +1 -1
- package/dist/src/hooks/dispatch.d.ts.map +1 -1
- package/dist/src/hooks/dispatch.js +2 -2
- package/dist/src/hooks/dispatch.js.map +1 -1
- package/dist/src/hooks/document-by-id.d.ts +1 -1
- package/dist/src/hooks/document-by-id.d.ts.map +1 -1
- package/dist/src/hooks/document-by-id.js +3 -3
- package/dist/src/hooks/document-by-id.js.map +1 -1
- package/dist/src/hooks/document-cache.d.ts +19 -3
- package/dist/src/hooks/document-cache.d.ts.map +1 -1
- package/dist/src/hooks/document-cache.js +41 -14
- package/dist/src/hooks/document-cache.js.map +1 -1
- package/dist/src/hooks/index.d.ts +5 -4
- package/dist/src/hooks/index.d.ts.map +1 -1
- package/dist/src/hooks/index.js +5 -4
- package/dist/src/hooks/index.js.map +1 -1
- package/dist/src/hooks/selected-document.d.ts +3 -1
- package/dist/src/hooks/selected-document.d.ts.map +1 -1
- package/dist/src/hooks/selected-document.js +9 -0
- package/dist/src/hooks/selected-document.js.map +1 -1
- package/dist/src/hooks/toast.d.ts +7 -0
- package/dist/src/hooks/toast.d.ts.map +1 -0
- package/dist/src/hooks/toast.js +9 -0
- package/dist/src/hooks/toast.js.map +1 -0
- package/dist/src/hooks/vetra-packages.d.ts.map +1 -1
- package/dist/src/hooks/vetra-packages.js +3 -1
- package/dist/src/hooks/vetra-packages.js.map +1 -1
- package/dist/src/index.d.ts +2 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +2 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/pglite/drop.d.ts +1 -1
- package/dist/src/pglite/drop.d.ts.map +1 -1
- package/dist/src/pglite/drop.js +3 -2
- package/dist/src/pglite/drop.js.map +1 -1
- package/dist/src/reactor-client-document-cache.d.ts +31 -0
- package/dist/src/reactor-client-document-cache.d.ts.map +1 -0
- package/dist/src/reactor-client-document-cache.js +142 -0
- package/dist/src/reactor-client-document-cache.js.map +1 -0
- package/dist/src/reactor.d.ts +0 -3
- package/dist/src/reactor.d.ts.map +1 -1
- package/dist/src/reactor.js +0 -56
- package/dist/src/reactor.js.map +1 -1
- package/dist/src/renown/utils.d.ts.map +1 -1
- package/dist/src/renown/utils.js +1 -1
- package/dist/src/renown/utils.js.map +1 -1
- package/dist/src/types/documents.d.ts +10 -5
- package/dist/src/types/documents.d.ts.map +1 -1
- package/dist/src/types/global.d.ts +2 -0
- package/dist/src/types/global.d.ts.map +1 -1
- package/dist/src/types/index.d.ts +1 -0
- package/dist/src/types/index.d.ts.map +1 -1
- package/dist/src/types/toast.d.ts +9 -0
- package/dist/src/types/toast.d.ts.map +1 -0
- package/dist/src/types/toast.js +2 -0
- package/dist/src/types/toast.js.map +1 -0
- package/dist/test/document-cache.test.d.ts +2 -0
- package/dist/test/document-cache.test.d.ts.map +1 -0
- package/dist/test/document-cache.test.js +457 -0
- package/dist/test/document-cache.test.js.map +1 -0
- package/dist/test/drop.test.js +7 -9
- package/dist/test/drop.test.js.map +1 -1
- package/dist/test/getSwitchboardUrl.test.js +3 -1
- package/dist/test/getSwitchboardUrl.test.js.map +1 -1
- package/dist/test/hooks/document-cache.test.d.ts +2 -0
- package/dist/test/hooks/document-cache.test.d.ts.map +1 -0
- package/dist/test/hooks/document-cache.test.js +642 -0
- package/dist/test/hooks/document-cache.test.js.map +1 -0
- package/dist/test/switchboard.test.js +4 -2
- package/dist/test/switchboard.test.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- 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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"}
|
package/dist/test/drop.test.js
CHANGED
|
@@ -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
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,EACL,cAAc,EACd,oBAAoB,GAGrB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAC;AAC1D,OAAO,
|
|
1
|
+
{"version":3,"file":"drop.test.js","sourceRoot":"","sources":["../../test/drop.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -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 @@
|
|
|
1
|
+
{"version":3,"file":"document-cache.test.d.ts","sourceRoot":"","sources":["../../../test/hooks/document-cache.test.tsx"],"names":[],"mappings":""}
|