jazz-tools 0.18.16 → 0.18.18
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/.svelte-kit/__package__/jazz.class.svelte.d.ts +14 -0
- package/.svelte-kit/__package__/jazz.class.svelte.d.ts.map +1 -1
- package/.svelte-kit/__package__/jazz.class.svelte.js +37 -0
- package/.svelte-kit/__package__/media/image.svelte +104 -98
- package/.svelte-kit/__package__/media/image.svelte.d.ts.map +1 -1
- package/.svelte-kit/__package__/testing.d.ts +1 -1
- package/.svelte-kit/__package__/testing.d.ts.map +1 -1
- package/.svelte-kit/__package__/testing.js +1 -1
- package/.svelte-kit/__package__/tests/TestConnectionStatus.svelte +8 -0
- package/.svelte-kit/__package__/tests/TestConnectionStatus.svelte.d.ts +27 -0
- package/.svelte-kit/__package__/tests/TestConnectionStatus.svelte.d.ts.map +1 -0
- package/.svelte-kit/__package__/tests/media/image.svelte.test.js +16 -2
- package/.svelte-kit/__package__/tests/sync-connection-status.svelte.test.d.ts +2 -0
- package/.svelte-kit/__package__/tests/sync-connection-status.svelte.test.d.ts.map +1 -0
- package/.svelte-kit/__package__/tests/sync-connection-status.svelte.test.js +47 -0
- package/.turbo/turbo-build.log +52 -52
- package/CHANGELOG.md +27 -0
- package/dist/browser/BrowserContextManager.d.ts +4 -0
- package/dist/browser/BrowserContextManager.d.ts.map +1 -1
- package/dist/browser/createBrowserContext.d.ts +4 -0
- package/dist/browser/createBrowserContext.d.ts.map +1 -1
- package/dist/browser/index.js +36 -4
- package/dist/browser/index.js.map +1 -1
- package/dist/{chunk-GRN6OAUX.js → chunk-FHRKDKDY.js} +80 -6
- package/dist/chunk-FHRKDKDY.js.map +1 -0
- package/dist/index.js +1 -1
- package/dist/react/hooks.d.ts +1 -1
- package/dist/react/hooks.d.ts.map +1 -1
- package/dist/react/index.d.ts +1 -1
- package/dist/react/index.d.ts.map +1 -1
- package/dist/react/index.js +6 -2
- package/dist/react/index.js.map +1 -1
- package/dist/react/media/image.d.ts.map +1 -1
- package/dist/react-core/hooks.d.ts +26 -0
- package/dist/react-core/hooks.d.ts.map +1 -1
- package/dist/react-core/index.js +16 -1
- package/dist/react-core/index.js.map +1 -1
- package/dist/react-core/testing.d.ts +1 -1
- package/dist/react-core/testing.d.ts.map +1 -1
- package/dist/react-core/testing.js +3 -1
- package/dist/react-core/testing.js.map +1 -1
- package/dist/react-core/tests/useSyncConnectionStatus.test.d.ts +2 -0
- package/dist/react-core/tests/useSyncConnectionStatus.test.d.ts.map +1 -0
- package/dist/react-native-core/ReactNativeContextManager.d.ts +4 -0
- package/dist/react-native-core/ReactNativeContextManager.d.ts.map +1 -1
- package/dist/react-native-core/hooks.d.ts +1 -1
- package/dist/react-native-core/hooks.d.ts.map +1 -1
- package/dist/react-native-core/index.js +41 -7
- package/dist/react-native-core/index.js.map +1 -1
- package/dist/react-native-core/media/image.d.ts.map +1 -1
- package/dist/react-native-core/platform.d.ts +4 -0
- package/dist/react-native-core/platform.d.ts.map +1 -1
- package/dist/svelte/jazz.class.svelte.d.ts +14 -0
- package/dist/svelte/jazz.class.svelte.d.ts.map +1 -1
- package/dist/svelte/jazz.class.svelte.js +37 -0
- package/dist/svelte/media/image.svelte +104 -98
- package/dist/svelte/media/image.svelte.d.ts.map +1 -1
- package/dist/svelte/testing.d.ts +1 -1
- package/dist/svelte/testing.d.ts.map +1 -1
- package/dist/svelte/testing.js +1 -1
- package/dist/svelte/tests/TestConnectionStatus.svelte +8 -0
- package/dist/svelte/tests/TestConnectionStatus.svelte.d.ts +27 -0
- package/dist/svelte/tests/TestConnectionStatus.svelte.d.ts.map +1 -0
- package/dist/svelte/tests/media/image.svelte.test.js +16 -2
- package/dist/svelte/tests/sync-connection-status.svelte.test.d.ts +2 -0
- package/dist/svelte/tests/sync-connection-status.svelte.test.d.ts.map +1 -0
- package/dist/svelte/tests/sync-connection-status.svelte.test.js +47 -0
- package/dist/testing.js +34 -4
- package/dist/testing.js.map +1 -1
- package/dist/tools/implementation/ContextManager.d.ts +4 -0
- package/dist/tools/implementation/ContextManager.d.ts.map +1 -1
- package/dist/tools/implementation/refs.d.ts +1 -1
- package/dist/tools/implementation/refs.d.ts.map +1 -1
- package/dist/tools/subscribe/CoValueCoreSubscription.d.ts +4 -0
- package/dist/tools/subscribe/CoValueCoreSubscription.d.ts.map +1 -1
- package/dist/tools/subscribe/SubscriptionScope.d.ts +7 -0
- package/dist/tools/subscribe/SubscriptionScope.d.ts.map +1 -1
- package/dist/tools/subscribe/index.d.ts.map +1 -1
- package/dist/tools/testing.d.ts +8 -0
- package/dist/tools/testing.d.ts.map +1 -1
- package/dist/tools/types.d.ts +4 -0
- package/dist/tools/types.d.ts.map +1 -1
- package/package.json +4 -4
- package/src/browser/createBrowserContext.ts +34 -4
- package/src/react/hooks.tsx +1 -0
- package/src/react/index.ts +1 -0
- package/src/react/media/image.tsx +2 -0
- package/src/react/tests/media/image.test.tsx +20 -2
- package/src/react-core/hooks.ts +42 -0
- package/src/react-core/testing.tsx +1 -0
- package/src/react-core/tests/useAccountWithSelector.test.ts +98 -2
- package/src/react-core/tests/useSyncConnectionStatus.test.ts +48 -0
- package/src/react-native-core/hooks.tsx +1 -0
- package/src/react-native-core/media/image.tsx +4 -1
- package/src/react-native-core/platform.ts +32 -4
- package/src/svelte/jazz.class.svelte.ts +44 -0
- package/src/svelte/media/image.svelte +104 -98
- package/src/svelte/testing.ts +1 -0
- package/src/svelte/tests/TestConnectionStatus.svelte +8 -0
- package/src/svelte/tests/media/image.svelte.test.ts +18 -2
- package/src/svelte/tests/sync-connection-status.svelte.test.ts +61 -0
- package/src/tools/implementation/ContextManager.ts +8 -0
- package/src/tools/implementation/refs.ts +27 -3
- package/src/tools/subscribe/CoValueCoreSubscription.ts +14 -0
- package/src/tools/subscribe/SubscriptionScope.ts +67 -2
- package/src/tools/subscribe/index.ts +8 -0
- package/src/tools/testing.ts +29 -0
- package/src/tools/tests/ContextManager.test.ts +2 -2
- package/src/tools/tests/coMap.test.ts +42 -0
- package/src/tools/tests/subscribe.test.ts +1 -4
- package/src/tools/types.ts +4 -0
- package/dist/chunk-GRN6OAUX.js.map +0 -1
package/src/tools/testing.ts
CHANGED
@@ -193,6 +193,23 @@ export async function createJazzTestGuest() {
|
|
193
193
|
};
|
194
194
|
}
|
195
195
|
|
196
|
+
export class MockConnectionStatus {
|
197
|
+
static connected: boolean = true;
|
198
|
+
static connectionListeners = new Set<(isConnected: boolean) => void>();
|
199
|
+
static setIsConnected(isConnected: boolean) {
|
200
|
+
MockConnectionStatus.connected = isConnected;
|
201
|
+
for (const listener of MockConnectionStatus.connectionListeners) {
|
202
|
+
listener(isConnected);
|
203
|
+
}
|
204
|
+
}
|
205
|
+
static addConnectionListener(listener: (isConnected: boolean) => void) {
|
206
|
+
MockConnectionStatus.connectionListeners.add(listener);
|
207
|
+
return () => {
|
208
|
+
MockConnectionStatus.connectionListeners.delete(listener);
|
209
|
+
};
|
210
|
+
}
|
211
|
+
}
|
212
|
+
|
196
213
|
export type TestJazzContextManagerProps<Acc extends Account> =
|
197
214
|
JazzContextManagerBaseProps<Acc> & {
|
198
215
|
defaultProfileName?: string;
|
@@ -249,6 +266,10 @@ export class TestJazzContextManager<
|
|
249
266
|
await storage.clear();
|
250
267
|
node.gracefulShutdown();
|
251
268
|
},
|
269
|
+
addConnectionListener: (listener) => {
|
270
|
+
return MockConnectionStatus.addConnectionListener(listener);
|
271
|
+
},
|
272
|
+
connected: () => MockConnectionStatus.connected,
|
252
273
|
},
|
253
274
|
{
|
254
275
|
credentials,
|
@@ -274,6 +295,10 @@ export class TestJazzContextManager<
|
|
274
295
|
logOut: async () => {
|
275
296
|
node.gracefulShutdown();
|
276
297
|
},
|
298
|
+
addConnectionListener: (listener) => {
|
299
|
+
return MockConnectionStatus.addConnectionListener(listener);
|
300
|
+
},
|
301
|
+
connected: () => MockConnectionStatus.connected,
|
277
302
|
});
|
278
303
|
|
279
304
|
return context;
|
@@ -309,6 +334,10 @@ export class TestJazzContextManager<
|
|
309
334
|
logOut: () => {
|
310
335
|
return context.logOut();
|
311
336
|
},
|
337
|
+
addConnectionListener: (listener: (isConnected: boolean) => void) => {
|
338
|
+
return MockConnectionStatus.addConnectionListener(listener);
|
339
|
+
},
|
340
|
+
connected: () => MockConnectionStatus.connected,
|
312
341
|
};
|
313
342
|
}
|
314
343
|
}
|
@@ -73,6 +73,8 @@ class TestJazzContextManager<Acc extends Account> extends JazzContextManager<
|
|
73
73
|
logOut: async () => {
|
74
74
|
await context.logOut();
|
75
75
|
},
|
76
|
+
addConnectionListener: () => () => {},
|
77
|
+
connected: () => false,
|
76
78
|
};
|
77
79
|
}
|
78
80
|
}
|
@@ -80,14 +82,12 @@ class TestJazzContextManager<Acc extends Account> extends JazzContextManager<
|
|
80
82
|
describe("ContextManager", () => {
|
81
83
|
let manager: TestJazzContextManager<Account>;
|
82
84
|
let authSecretStorage: AuthSecretStorage;
|
83
|
-
let storage: StorageAPI;
|
84
85
|
|
85
86
|
function getCurrentValue() {
|
86
87
|
return manager.getCurrentValue() as JazzAuthContext<Account>;
|
87
88
|
}
|
88
89
|
|
89
90
|
beforeEach(async () => {
|
90
|
-
storage = await createAsyncStorage({});
|
91
91
|
KvStoreContext.getInstance().initialize(new InMemoryKVStore());
|
92
92
|
authSecretStorage = new AuthSecretStorage();
|
93
93
|
await authSecretStorage.clear();
|
@@ -2510,6 +2510,48 @@ describe("CoMap migration", () => {
|
|
2510
2510
|
expect(spy).toHaveBeenCalledTimes(1);
|
2511
2511
|
});
|
2512
2512
|
|
2513
|
+
test("should run only when the value is fully loaded", async () => {
|
2514
|
+
await setupJazzTestSync({
|
2515
|
+
asyncPeers: true,
|
2516
|
+
});
|
2517
|
+
await createJazzTestAccount({
|
2518
|
+
isCurrentActiveAccount: true,
|
2519
|
+
creationProps: { name: "Hermes Puggington" },
|
2520
|
+
});
|
2521
|
+
|
2522
|
+
const migration = vi.fn();
|
2523
|
+
const Person = co
|
2524
|
+
.map({
|
2525
|
+
name: z.string(),
|
2526
|
+
update: z.number(),
|
2527
|
+
})
|
2528
|
+
.withMigration((person) => {
|
2529
|
+
migration(person.update);
|
2530
|
+
});
|
2531
|
+
|
2532
|
+
const person = Person.create({
|
2533
|
+
name: "Bob",
|
2534
|
+
update: 1,
|
2535
|
+
});
|
2536
|
+
|
2537
|
+
// Pump the value to reach streaming
|
2538
|
+
for (let i = 0; i <= 300; i++) {
|
2539
|
+
person.$jazz.raw.assign({
|
2540
|
+
name: "1".repeat(1024),
|
2541
|
+
update: i,
|
2542
|
+
});
|
2543
|
+
}
|
2544
|
+
|
2545
|
+
// Upload and unmount, to force the streaming download
|
2546
|
+
await person.$jazz.waitForSync();
|
2547
|
+
person.$jazz.raw.core.unmount();
|
2548
|
+
|
2549
|
+
// Load the value and expect the migration to run only once
|
2550
|
+
await Person.load(person.$jazz.id);
|
2551
|
+
expect(migration).toHaveBeenCalledTimes(1);
|
2552
|
+
expect(migration).toHaveBeenCalledWith(300);
|
2553
|
+
});
|
2554
|
+
|
2513
2555
|
test("should not break recursive schemas", async () => {
|
2514
2556
|
const PersonV1 = co.map({
|
2515
2557
|
name: z.string(),
|
@@ -559,10 +559,7 @@ describe("subscribeToCoValue", () => {
|
|
559
559
|
assert(result);
|
560
560
|
|
561
561
|
expect(result[0]?.value).toBe("1");
|
562
|
-
|
563
|
-
// expect(updateFn).toHaveBeenCalledTimes(1);
|
564
|
-
// TODO: Getting an extra update here due to https://github.com/garden-co/jazz/issues/2117
|
565
|
-
expect(updateFn).toHaveBeenCalledTimes(2);
|
562
|
+
expect(updateFn).toHaveBeenCalledTimes(1);
|
566
563
|
});
|
567
564
|
|
568
565
|
it("should handle undefined values in lists with required refs", async () => {
|
package/src/tools/types.ts
CHANGED
@@ -26,6 +26,8 @@ export type JazzAuthContext<Acc extends Account> = {
|
|
26
26
|
logOut: () => Promise<void>;
|
27
27
|
done: () => void;
|
28
28
|
isAuthenticated?: boolean;
|
29
|
+
addConnectionListener: (listener: (connected: boolean) => void) => () => void;
|
30
|
+
connected: () => boolean;
|
29
31
|
};
|
30
32
|
|
31
33
|
export type JazzGuestContext = {
|
@@ -36,6 +38,8 @@ export type JazzGuestContext = {
|
|
36
38
|
logOut: () => void;
|
37
39
|
done: () => void;
|
38
40
|
isAuthenticated?: boolean;
|
41
|
+
addConnectionListener: (listener: (connected: boolean) => void) => () => void;
|
42
|
+
connected: () => boolean;
|
39
43
|
};
|
40
44
|
|
41
45
|
export type JazzContextType<Acc extends Account> =
|