jazz-tools 0.18.17 → 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.
Files changed (90) hide show
  1. package/.svelte-kit/__package__/jazz.class.svelte.d.ts +14 -0
  2. package/.svelte-kit/__package__/jazz.class.svelte.d.ts.map +1 -1
  3. package/.svelte-kit/__package__/jazz.class.svelte.js +37 -0
  4. package/.svelte-kit/__package__/testing.d.ts +1 -1
  5. package/.svelte-kit/__package__/testing.d.ts.map +1 -1
  6. package/.svelte-kit/__package__/testing.js +1 -1
  7. package/.svelte-kit/__package__/tests/TestConnectionStatus.svelte +8 -0
  8. package/.svelte-kit/__package__/tests/TestConnectionStatus.svelte.d.ts +27 -0
  9. package/.svelte-kit/__package__/tests/TestConnectionStatus.svelte.d.ts.map +1 -0
  10. package/.svelte-kit/__package__/tests/sync-connection-status.svelte.test.d.ts +2 -0
  11. package/.svelte-kit/__package__/tests/sync-connection-status.svelte.test.d.ts.map +1 -0
  12. package/.svelte-kit/__package__/tests/sync-connection-status.svelte.test.js +47 -0
  13. package/.turbo/turbo-build.log +47 -47
  14. package/CHANGELOG.md +16 -0
  15. package/dist/browser/BrowserContextManager.d.ts +4 -0
  16. package/dist/browser/BrowserContextManager.d.ts.map +1 -1
  17. package/dist/browser/createBrowserContext.d.ts +4 -0
  18. package/dist/browser/createBrowserContext.d.ts.map +1 -1
  19. package/dist/browser/index.js +36 -4
  20. package/dist/browser/index.js.map +1 -1
  21. package/dist/{chunk-OTWWOZMB.js → chunk-FHRKDKDY.js} +8 -3
  22. package/dist/chunk-FHRKDKDY.js.map +1 -0
  23. package/dist/index.js +1 -1
  24. package/dist/react/hooks.d.ts +1 -1
  25. package/dist/react/hooks.d.ts.map +1 -1
  26. package/dist/react/index.d.ts +1 -1
  27. package/dist/react/index.d.ts.map +1 -1
  28. package/dist/react/index.js +4 -2
  29. package/dist/react/index.js.map +1 -1
  30. package/dist/react-core/hooks.d.ts +26 -0
  31. package/dist/react-core/hooks.d.ts.map +1 -1
  32. package/dist/react-core/index.js +16 -1
  33. package/dist/react-core/index.js.map +1 -1
  34. package/dist/react-core/testing.d.ts +1 -1
  35. package/dist/react-core/testing.d.ts.map +1 -1
  36. package/dist/react-core/testing.js +3 -1
  37. package/dist/react-core/testing.js.map +1 -1
  38. package/dist/react-core/tests/useSyncConnectionStatus.test.d.ts +2 -0
  39. package/dist/react-core/tests/useSyncConnectionStatus.test.d.ts.map +1 -0
  40. package/dist/react-native-core/ReactNativeContextManager.d.ts +4 -0
  41. package/dist/react-native-core/ReactNativeContextManager.d.ts.map +1 -1
  42. package/dist/react-native-core/hooks.d.ts +1 -1
  43. package/dist/react-native-core/hooks.d.ts.map +1 -1
  44. package/dist/react-native-core/index.js +38 -6
  45. package/dist/react-native-core/index.js.map +1 -1
  46. package/dist/react-native-core/platform.d.ts +4 -0
  47. package/dist/react-native-core/platform.d.ts.map +1 -1
  48. package/dist/svelte/jazz.class.svelte.d.ts +14 -0
  49. package/dist/svelte/jazz.class.svelte.d.ts.map +1 -1
  50. package/dist/svelte/jazz.class.svelte.js +37 -0
  51. package/dist/svelte/testing.d.ts +1 -1
  52. package/dist/svelte/testing.d.ts.map +1 -1
  53. package/dist/svelte/testing.js +1 -1
  54. package/dist/svelte/tests/TestConnectionStatus.svelte +8 -0
  55. package/dist/svelte/tests/TestConnectionStatus.svelte.d.ts +27 -0
  56. package/dist/svelte/tests/TestConnectionStatus.svelte.d.ts.map +1 -0
  57. package/dist/svelte/tests/sync-connection-status.svelte.test.d.ts +2 -0
  58. package/dist/svelte/tests/sync-connection-status.svelte.test.d.ts.map +1 -0
  59. package/dist/svelte/tests/sync-connection-status.svelte.test.js +47 -0
  60. package/dist/testing.js +34 -4
  61. package/dist/testing.js.map +1 -1
  62. package/dist/tools/implementation/ContextManager.d.ts +4 -0
  63. package/dist/tools/implementation/ContextManager.d.ts.map +1 -1
  64. package/dist/tools/subscribe/SubscriptionScope.d.ts.map +1 -1
  65. package/dist/tools/testing.d.ts +8 -0
  66. package/dist/tools/testing.d.ts.map +1 -1
  67. package/dist/tools/types.d.ts +4 -0
  68. package/dist/tools/types.d.ts.map +1 -1
  69. package/package.json +4 -4
  70. package/src/browser/createBrowserContext.ts +34 -4
  71. package/src/react/hooks.tsx +1 -0
  72. package/src/react/index.ts +1 -0
  73. package/src/react-core/hooks.ts +42 -0
  74. package/src/react-core/testing.tsx +1 -0
  75. package/src/react-core/tests/useAccountWithSelector.test.ts +98 -2
  76. package/src/react-core/tests/useSyncConnectionStatus.test.ts +48 -0
  77. package/src/react-native-core/hooks.tsx +1 -0
  78. package/src/react-native-core/platform.ts +32 -4
  79. package/src/svelte/jazz.class.svelte.ts +44 -0
  80. package/src/svelte/testing.ts +1 -0
  81. package/src/svelte/tests/TestConnectionStatus.svelte +8 -0
  82. package/src/svelte/tests/sync-connection-status.svelte.test.ts +61 -0
  83. package/src/tools/implementation/ContextManager.ts +8 -0
  84. package/src/tools/subscribe/SubscriptionScope.ts +5 -1
  85. package/src/tools/testing.ts +29 -0
  86. package/src/tools/tests/ContextManager.test.ts +2 -2
  87. package/src/tools/tests/coMap.test.ts +42 -0
  88. package/src/tools/tests/subscribe.test.ts +1 -4
  89. package/src/tools/types.ts +4 -0
  90. package/dist/chunk-OTWWOZMB.js.map +0 -1
@@ -34,5 +34,19 @@ export declare class AccountCoState<A extends (AccountClass<Account> & CoValueFr
34
34
  get agent(): import("jazz-tools").AnonymousJazzAgent | InstanceOfSchema<A>;
35
35
  get isAuthenticated(): boolean;
36
36
  }
37
+ /**
38
+ * Class that provides the current connection status to the Jazz sync server.
39
+ *
40
+ * @returns `true` when connected to the server, `false` when disconnected
41
+ *
42
+ * @remarks
43
+ * On connection drop, this will return `false` only when Jazz detects the disconnection
44
+ * after 5 seconds of not receiving a ping from the server.
45
+ */
46
+ export declare class SyncConnectionStatus {
47
+ #private;
48
+ constructor();
49
+ get current(): boolean;
50
+ }
37
51
  export {};
38
52
  //# sourceMappingURL=jazz.class.svelte.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"jazz.class.svelte.d.ts","sourceRoot":"","sources":["../../../src/svelte/jazz.class.svelte.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,OAAO,EACP,YAAY,EACZ,gBAAgB,EAChB,gBAAgB,EAChB,oBAAoB,EACpB,cAAc,EACd,gBAAgB,EAChB,MAAM,EACN,YAAY,EACZ,kBAAkB,EACnB,MAAM,YAAY,CAAC;AAUpB,KAAK,cAAc,CAAC,CAAC,SAAS,oBAAoB,EAAE,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,IAAI;IAC/E,OAAO,CAAC,EAAE,kBAAkB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACnC;;;;;;;;;;;;;;MAcE;IACF,eAAe,CAAC,EAAE,gBAAgB,CAAA;CACnC,CAAC;AAEF,KAAK,SAAS,GAAG,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC;AAE3C,qBAAa,OAAO,CAClB,CAAC,SAAS,oBAAoB,EAC9B,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,GAAG,IAAI;;gBAU9B,MAAM,EAAE,CAAC,EACT,EAAE,EAAE,SAAS,GAAG,CAAC,MAAM,SAAS,CAAC,EACjC,OAAO,CAAC,EAAE,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,MAAM,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAgD/D,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,SAAS,GAAG,IAAI;IAM7C,IAAI,OAAO,oCAGV;CACF;AAED,qBAAa,cAAc,CACzB,CAAC,SACC,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC,GACjD,gBAAgB,EAClB,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,GAAG,IAAI;;gBAQpB,MAAM,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,MAAM,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IA8CpF,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,SAAS,GAAG,IAAI;IAM7C,MAAM,aAEJ;IAEF,IAAI,OAAO,oCAIV;IAED,IAAI,KAAK,kEAQR;IAID,IAAI,eAAe,YAElB;CACF"}
1
+ {"version":3,"file":"jazz.class.svelte.d.ts","sourceRoot":"","sources":["../../../src/svelte/jazz.class.svelte.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,OAAO,EACP,YAAY,EACZ,gBAAgB,EAChB,gBAAgB,EAChB,oBAAoB,EACpB,cAAc,EACd,gBAAgB,EAChB,MAAM,EACN,YAAY,EACZ,kBAAkB,EACnB,MAAM,YAAY,CAAC;AAUpB,KAAK,cAAc,CAAC,CAAC,SAAS,oBAAoB,EAAE,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,IAAI;IAC/E,OAAO,CAAC,EAAE,kBAAkB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACnC;;;;;;;;;;;;;;MAcE;IACF,eAAe,CAAC,EAAE,gBAAgB,CAAA;CACnC,CAAC;AAEF,KAAK,SAAS,GAAG,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC;AAE3C,qBAAa,OAAO,CAClB,CAAC,SAAS,oBAAoB,EAC9B,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,GAAG,IAAI;;gBAU9B,MAAM,EAAE,CAAC,EACT,EAAE,EAAE,SAAS,GAAG,CAAC,MAAM,SAAS,CAAC,EACjC,OAAO,CAAC,EAAE,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,MAAM,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAgD/D,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,SAAS,GAAG,IAAI;IAM7C,IAAI,OAAO,oCAGV;CACF;AAED,qBAAa,cAAc,CACzB,CAAC,SACC,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC,GACjD,gBAAgB,EAClB,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,GAAG,IAAI;;gBAQpB,MAAM,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,MAAM,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IA8CpF,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,SAAS,GAAG,IAAI;IAM7C,MAAM,aAEJ;IAEF,IAAI,OAAO,oCAIV;IAED,IAAI,KAAK,kEAQR;IAID,IAAI,eAAe,YAElB;CACF;AAED;;;;;;;;GAQG;AACH,qBAAa,oBAAoB;;;IA6B/B,IAAI,OAAO,YAGV;CACF"}
@@ -123,3 +123,40 @@ export class AccountCoState {
123
123
  return this.#isAuthenticated.current;
124
124
  }
125
125
  }
126
+ /**
127
+ * Class that provides the current connection status to the Jazz sync server.
128
+ *
129
+ * @returns `true` when connected to the server, `false` when disconnected
130
+ *
131
+ * @remarks
132
+ * On connection drop, this will return `false` only when Jazz detects the disconnection
133
+ * after 5 seconds of not receiving a ping from the server.
134
+ */
135
+ export class SyncConnectionStatus {
136
+ #ctx = getJazzContext();
137
+ #subscribe;
138
+ #update = () => { };
139
+ constructor() {
140
+ this.#subscribe = createSubscriber((update) => {
141
+ this.#update = update;
142
+ });
143
+ $effect.pre(() => {
144
+ const ctx = this.#ctx.current;
145
+ return untrack(() => {
146
+ if (!ctx) {
147
+ return;
148
+ }
149
+ const unsubscribe = ctx.addConnectionListener(() => {
150
+ this.#update();
151
+ });
152
+ return () => {
153
+ unsubscribe();
154
+ };
155
+ });
156
+ });
157
+ }
158
+ get current() {
159
+ this.#subscribe();
160
+ return this.#ctx.current?.connected() ?? false;
161
+ }
162
+ }
@@ -6,5 +6,5 @@ export declare function createJazzTestContext<Acc extends Account>(opts?: {
6
6
  };
7
7
  isAuthenticated?: boolean;
8
8
  }): Map<{} | {}, AuthSecretStorage | JazzContext<Acc>>;
9
- export { createJazzTestAccount, createJazzTestGuest, linkAccounts, setActiveAccount, setupJazzTestSync, } from "jazz-tools/testing";
9
+ export { createJazzTestAccount, createJazzTestGuest, linkAccounts, setActiveAccount, setupJazzTestSync, MockConnectionStatus, } from "jazz-tools/testing";
10
10
  //# sourceMappingURL=testing.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"testing.d.ts","sourceRoot":"","sources":["../../../src/svelte/testing.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAE5E,OAAO,EAA2B,KAAK,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE7E,wBAAgB,qBAAqB,CAAC,GAAG,SAAS,OAAO,EACvD,IAAI,GAAE;IACJ,OAAO,CAAC,EAAE,GAAG,GAAG;QAAE,KAAK,EAAE,kBAAkB,CAAA;KAAE,CAAC;IAC9C,eAAe,CAAC,EAAE,OAAO,CAAC;CACtB,sDAyBP;AAED,OAAO,EACL,qBAAqB,EACrB,mBAAmB,EACnB,YAAY,EACZ,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,oBAAoB,CAAC"}
1
+ {"version":3,"file":"testing.d.ts","sourceRoot":"","sources":["../../../src/svelte/testing.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAE5E,OAAO,EAA2B,KAAK,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE7E,wBAAgB,qBAAqB,CAAC,GAAG,SAAS,OAAO,EACvD,IAAI,GAAE;IACJ,OAAO,CAAC,EAAE,GAAG,GAAG;QAAE,KAAK,EAAE,kBAAkB,CAAA;KAAE,CAAC;IAC9C,eAAe,CAAC,EAAE,OAAO,CAAC;CACtB,sDAyBP;AAED,OAAO,EACL,qBAAqB,EACrB,mBAAmB,EACnB,YAAY,EACZ,gBAAgB,EAChB,iBAAiB,EACjB,oBAAoB,GACrB,MAAM,oBAAoB,CAAC"}
@@ -20,4 +20,4 @@ export function createJazzTestContext(opts = {}) {
20
20
  }
21
21
  return ctx;
22
22
  }
23
- export { createJazzTestAccount, createJazzTestGuest, linkAccounts, setActiveAccount, setupJazzTestSync, } from "jazz-tools/testing";
23
+ export { createJazzTestAccount, createJazzTestGuest, linkAccounts, setActiveAccount, setupJazzTestSync, MockConnectionStatus, } from "jazz-tools/testing";
@@ -0,0 +1,8 @@
1
+ <script>
2
+ import { SyncConnectionStatus } from "../jazz.class.svelte";
3
+ const connectionStatus = new SyncConnectionStatus();
4
+ </script>
5
+
6
+ <div>
7
+ <div data-testid="connected">{connectionStatus.current ? "true" : "false"}</div>
8
+ </div>
@@ -0,0 +1,27 @@
1
+ export default TestConnectionStatus;
2
+ type TestConnectionStatus = SvelteComponent<{
3
+ [x: string]: never;
4
+ }, {
5
+ [evt: string]: CustomEvent<any>;
6
+ }, {}> & {
7
+ $$bindings?: string | undefined;
8
+ };
9
+ declare const TestConnectionStatus: $$__sveltets_2_IsomorphicComponent<{
10
+ [x: string]: never;
11
+ }, {
12
+ [evt: string]: CustomEvent<any>;
13
+ }, {}, {}, string>;
14
+ interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
15
+ new (options: import("svelte").ComponentConstructorOptions<Props>): import("svelte").SvelteComponent<Props, Events, Slots> & {
16
+ $$bindings?: Bindings;
17
+ } & Exports;
18
+ (internal: unknown, props: {
19
+ $$events?: Events;
20
+ $$slots?: Slots;
21
+ }): Exports & {
22
+ $set?: any;
23
+ $on?: any;
24
+ };
25
+ z_$$bindings?: Bindings;
26
+ }
27
+ //# sourceMappingURL=TestConnectionStatus.svelte.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TestConnectionStatus.svelte.d.ts","sourceRoot":"","sources":["../../../../src/svelte/tests/TestConnectionStatus.svelte.js"],"names":[],"mappings":";;;;;;;;AAyBA;;;;mBAA8H;6CATjF,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,QAAQ,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,QAAQ,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,QAAQ,OAAO,OAAO,QAAQ;IAC3L,cAAc,OAAO,QAAQ,EAAE,2BAA2B,CAAC,KAAK,CAAC,GAAG,OAAO,QAAQ,EAAE,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,GAAG;QAAE,UAAU,CAAC,EAAE,QAAQ,CAAA;KAAE,GAAG,OAAO,CAAC;IACjK,WAAW,OAAO,SAAS;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,KAAK,CAAA;KAAC,GAAG,OAAO,GAAG;QAAE,IAAI,CAAC,EAAE,GAAG,CAAC;QAAC,GAAG,CAAC,EAAE,GAAG,CAAA;KAAE,CAAC;IACtG,eAAe,QAAQ,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=sync-connection-status.svelte.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sync-connection-status.svelte.test.d.ts","sourceRoot":"","sources":["../../../../src/svelte/tests/sync-connection-status.svelte.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,47 @@
1
+ // @vitest-environment happy-dom
2
+ import { afterEach, beforeEach, describe, expect, it, vi } from "vitest";
3
+ import { createJazzTestAccount, setupJazzTestSync, MockConnectionStatus, } from "../testing";
4
+ import { render, screen, waitFor } from "./testUtils";
5
+ import TestConnectionStatus from "./TestConnectionStatus.svelte";
6
+ describe("SyncConnectionStatus", () => {
7
+ beforeEach(async () => {
8
+ await setupJazzTestSync();
9
+ await createJazzTestAccount({
10
+ isCurrentActiveAccount: true,
11
+ });
12
+ });
13
+ afterEach(() => {
14
+ vi.clearAllMocks();
15
+ });
16
+ it("should return true by default in the test environment", async () => {
17
+ const { container } = render(TestConnectionStatus, {}, {
18
+ account: await createJazzTestAccount({
19
+ isCurrentActiveAccount: true,
20
+ }),
21
+ });
22
+ await waitFor(() => {
23
+ expect(screen.getByTestId("connected").textContent).toBe("true");
24
+ });
25
+ });
26
+ it("should handle updates", async () => {
27
+ const { container } = render(TestConnectionStatus, {}, {
28
+ account: await createJazzTestAccount({
29
+ isCurrentActiveAccount: true,
30
+ }),
31
+ });
32
+ // Initially should be connected
33
+ await waitFor(() => {
34
+ expect(screen.getByTestId("connected").textContent).toBe("true");
35
+ });
36
+ // Simulate disconnection
37
+ MockConnectionStatus.setIsConnected(false);
38
+ await waitFor(() => {
39
+ expect(screen.getByTestId("connected").textContent).toBe("false");
40
+ });
41
+ // Simulate reconnection
42
+ MockConnectionStatus.setIsConnected(true);
43
+ await waitFor(() => {
44
+ expect(screen.getByTestId("connected").textContent).toBe("true");
45
+ });
46
+ });
47
+ });
@@ -1,5 +1,5 @@
1
1
 
2
- > jazz-tools@0.18.17 build /home/runner/_work/jazz/jazz/packages/jazz-tools
2
+ > jazz-tools@0.18.18 build /home/runner/_work/jazz/jazz/packages/jazz-tools
3
3
  > tsup && pnpm types && pnpm build:svelte
4
4
 
5
5
  CLI Building entry: {"index":"src/index.ts","testing":"src/testing.ts"}
@@ -116,96 +116,96 @@
116
116
  ESM Build start
117
117
  ESM dist/react/ssr.js 688.00 B
118
118
  ESM dist/react/ssr.js.map 1.12 KB
119
- ESM ⚡️ Build success in 20ms
119
+ ESM ⚡️ Build success in 28ms
120
120
  ESM dist/tiptap/index.js 564.00 B
121
121
  ESM dist/tiptap/index.js.map 1.21 KB
122
- ESM ⚡️ Build success in 15ms
122
+ ESM ⚡️ Build success in 25ms
123
123
  ESM dist/worker/index.js 3.19 KB
124
124
  ESM dist/worker/edge-wasm.js 215.00 B
125
125
  ESM dist/worker/index.js.map 6.17 KB
126
126
  ESM dist/worker/edge-wasm.js.map 434.00 B
127
- ESM ⚡️ Build success in 16ms
127
+ ESM ⚡️ Build success in 27ms
128
+ ESM dist/better-auth/auth/client.js 4.44 KB
129
+ ESM dist/better-auth/auth/server.js 8.36 KB
130
+ ESM dist/better-auth/auth/react.js 799.00 B
131
+ ESM dist/better-auth/auth/client.js.map 8.24 KB
132
+ ESM dist/better-auth/auth/server.js.map 15.29 KB
133
+ ESM dist/better-auth/auth/react.js.map 2.04 KB
134
+ ESM ⚡️ Build success in 29ms
135
+ ESM dist/react-core/index.js 11.07 KB
136
+ ESM dist/react-core/testing.js 1.22 KB
137
+ ESM dist/react-core/chunk-7DYMJ74I.js 279.00 B
138
+ ESM dist/react-core/index.js.map 35.67 KB
139
+ ESM dist/react-core/testing.js.map 1.86 KB
140
+ ESM dist/react-core/chunk-7DYMJ74I.js.map 533.00 B
141
+ ESM ⚡️ Build success in 34ms
128
142
  ESM dist/media/index.js 236.00 B
129
- ESM dist/media/index.browser.js 2.79 KB
130
143
  ESM dist/media/index.native.js 2.90 KB
131
- ESM dist/media/index.server.js 2.95 KB
132
144
  ESM dist/media/chunk-W3S526L3.js 6.47 KB
145
+ ESM dist/media/index.server.js 2.95 KB
146
+ ESM dist/media/index.browser.js 2.79 KB
133
147
  ESM dist/media/index.js.map 71.00 B
134
- ESM dist/media/index.browser.js.map 6.15 KB
135
148
  ESM dist/media/index.native.js.map 6.09 KB
136
149
  ESM dist/media/index.server.js.map 6.37 KB
137
150
  ESM dist/media/chunk-W3S526L3.js.map 16.57 KB
138
- ESM ⚡️ Build success in 31ms
139
- ESM dist/better-auth/auth/client.js 4.44 KB
140
- ESM dist/better-auth/auth/react.js 799.00 B
141
- ESM dist/better-auth/auth/server.js 8.36 KB
142
- ESM dist/better-auth/auth/client.js.map 8.24 KB
143
- ESM dist/better-auth/auth/react.js.map 2.04 KB
144
- ESM dist/better-auth/auth/server.js.map 15.29 KB
145
- ESM ⚡️ Build success in 27ms
151
+ ESM dist/media/index.browser.js.map 6.15 KB
152
+ ESM ⚡️ Build success in 39ms
153
+ ESM dist/browser/index.js 14.13 KB
154
+ ESM dist/browser/index.js.map 30.00 KB
155
+ ESM ⚡️ Build success in 49ms
146
156
  ESM dist/react-native/index.js 2.53 KB
147
157
  ESM dist/react-native/crypto.js 161.00 B
148
158
  ESM dist/react-native/testing.js 120.00 B
149
159
  ESM dist/react-native/index.js.map 5.68 KB
150
160
  ESM dist/react-native/crypto.js.map 197.00 B
151
161
  ESM dist/react-native/testing.js.map 176.00 B
152
- ESM ⚡️ Build success in 35ms
153
- ESM dist/react-core/index.js 10.72 KB
154
- ESM dist/react-core/testing.js 1.17 KB
155
- ESM dist/react-core/chunk-7DYMJ74I.js 279.00 B
156
- ESM dist/react-core/index.js.map 33.90 KB
157
- ESM dist/react-core/testing.js.map 1.82 KB
158
- ESM dist/react-core/chunk-7DYMJ74I.js.map 533.00 B
159
- ESM ⚡️ Build success in 32ms
162
+ ESM ⚡️ Build success in 46ms
160
163
  ESM dist/expo/index.js 4.68 KB
161
164
  ESM dist/expo/testing.js 112.00 B
162
165
  ESM dist/expo/crypto.js 153.00 B
163
166
  ESM dist/expo/index.js.map 10.23 KB
164
167
  ESM dist/expo/testing.js.map 168.00 B
165
168
  ESM dist/expo/crypto.js.map 189.00 B
166
- ESM ⚡️ Build success in 44ms
167
- ESM dist/browser/index.js 13.64 KB
168
- ESM dist/browser/index.js.map 29.14 KB
169
- ESM ⚡️ Build success in 46ms
170
- ESM dist/better-auth/database-adapter/index.js 26.34 KB
171
- ESM dist/better-auth/database-adapter/index.js.map 57.62 KB
172
- ESM ⚡️ Build success in 39ms
173
- ESM dist/react-native-core/index.js 18.13 KB
174
- ESM dist/react-native-core/crypto.js 2.10 KB
169
+ ESM ⚡️ Build success in 51ms
170
+ ESM dist/react-native-core/index.js 18.65 KB
175
171
  ESM dist/react-native-core/testing.js 119.00 B
176
- ESM dist/react-native-core/index.js.map 36.96 KB
177
- ESM dist/react-native-core/crypto.js.map 4.25 KB
172
+ ESM dist/react-native-core/crypto.js 2.10 KB
173
+ ESM dist/react-native-core/index.js.map 37.83 KB
178
174
  ESM dist/react-native-core/testing.js.map 175.00 B
175
+ ESM dist/react-native-core/crypto.js.map 4.25 KB
176
+ ESM ⚡️ Build success in 48ms
177
+ ESM dist/better-auth/database-adapter/index.js 26.34 KB
178
+ ESM dist/better-auth/database-adapter/index.js.map 57.62 KB
179
179
  ESM ⚡️ Build success in 51ms
180
- ESM dist/react/index.js 24.88 KB
181
180
  ESM dist/react/testing.js 122.00 B
181
+ ESM dist/react/index.js 24.93 KB
182
182
  ESM dist/react/testing.js.map 165.00 B
183
- ESM dist/react/index.js.map 53.71 KB
184
- ESM ⚡️ Build success in 52ms
183
+ ESM dist/react/index.js.map 53.78 KB
184
+ ESM ⚡️ Build success in 55ms
185
185
  ESM dist/prosemirror/index.js 77.76 KB
186
186
  ESM dist/prosemirror/index.js.map 307.20 KB
187
- ESM ⚡️ Build success in 54ms
187
+ ESM ⚡️ Build success in 70ms
188
188
  ESM dist/inspector/index.js 69.71 KB
189
189
  ESM dist/inspector/index.js.map 121.38 KB
190
- ESM ⚡️ Build success in 64ms
191
- ESM dist/chunk-OTWWOZMB.js 176.08 KB
192
- ESM dist/testing.js 7.17 KB
190
+ ESM ⚡️ Build success in 84ms
193
191
  ESM dist/index.js 26.13 KB
194
- ESM dist/chunk-OTWWOZMB.js.map 419.55 KB
195
- ESM dist/testing.js.map 14.10 KB
192
+ ESM dist/testing.js 8.33 KB
193
+ ESM dist/chunk-FHRKDKDY.js 176.29 KB
194
+ ESM dist/testing.js.map 15.87 KB
196
195
  ESM dist/index.js.map 52.92 KB
197
- ESM ⚡️ Build success in 82ms
196
+ ESM dist/chunk-FHRKDKDY.js.map 420.15 KB
197
+ ESM ⚡️ Build success in 104ms
198
198
  ESM dist/inspector/register-custom-element.js 218.00 B
199
199
  ESM dist/inspector/register-custom-element.js.map 314.00 B
200
200
  ESM dist/inspector/custom-element-G6SPZEBR.js 1.54 MB
201
201
  ESM dist/inspector/custom-element-G6SPZEBR.js.map 2.36 MB
202
- ESM ⚡️ Build success in 123ms
202
+ ESM ⚡️ Build success in 155ms
203
203
 
204
- > jazz-tools@0.18.17 types /home/runner/_work/jazz/jazz/packages/jazz-tools
204
+ > jazz-tools@0.18.18 types /home/runner/_work/jazz/jazz/packages/jazz-tools
205
205
  > tsc --outDir dist
206
206
 
207
207
 
208
- > jazz-tools@0.18.17 build:svelte /home/runner/_work/jazz/jazz/packages/jazz-tools
208
+ > jazz-tools@0.18.18 build:svelte /home/runner/_work/jazz/jazz/packages/jazz-tools
209
209
  > rm -rf dist/svelte && svelte-package -i src/svelte -o dist/svelte --tsconfig tsconfig.svelte.json
210
210
 
211
211
  src/svelte -> dist/svelte
package/CHANGELOG.md CHANGED
@@ -1,5 +1,21 @@
1
1
  # jazz-tools
2
2
 
3
+ ## 0.18.18
4
+
5
+ ### Patch Changes
6
+
7
+ - f2f478a: Add connection status API for React and Svelte
8
+
9
+ - **React**: Added `useSyncConnectionStatus()` hook that returns the current connection status to the Jazz sync server
10
+ - **Svelte**: Added `SyncConnectionStatus` class that provides reactive connection status monitoring
11
+
12
+ - ed7e353: Bugfix: wait for full streaming before triggering migrations on comap
13
+ - 1698d41: Add `unstable_branch` option to useAccountWithSelector
14
+ - Updated dependencies [ed7e353]
15
+ - cojson@0.18.18
16
+ - cojson-storage-indexeddb@0.18.18
17
+ - cojson-transport-ws@0.18.18
18
+
3
19
  ## 0.18.17
4
20
 
5
21
  ### Patch Changes
@@ -19,12 +19,16 @@ export declare class JazzBrowserContextManager<S extends (AccountClass<Account>
19
19
  node: import("cojson").LocalNode;
20
20
  done: () => void;
21
21
  logOut: () => Promise<void>;
22
+ addConnectionListener: (listener: (connected: boolean) => void) => () => void;
23
+ connected: () => boolean;
22
24
  } | {
23
25
  me: InstanceOfSchema<S>;
24
26
  node: import("cojson").LocalNode;
25
27
  authSecretStorage: import("jazz-tools").AuthSecretStorage;
26
28
  done: () => void;
27
29
  logOut: () => Promise<void>;
30
+ addConnectionListener: (listener: (connected: boolean) => void) => () => void;
31
+ connected: () => boolean;
28
32
  }>;
29
33
  propsChanged(props: JazzContextManagerProps<S>): boolean;
30
34
  }
@@ -1 +1 @@
1
- {"version":3,"file":"BrowserContextManager.d.ts","sourceRoot":"","sources":["../../src/browser/BrowserContextManager.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,OAAO,EACP,YAAY,EACZ,gBAAgB,EAChB,cAAc,EACd,eAAe,EACf,gBAAgB,EAChB,kBAAkB,EAClB,UAAU,EACX,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,2BAA2B,EAAE,MAAM,YAAY,CAAC;AACzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,EACL,yBAAyB,EAG1B,MAAM,2BAA2B,CAAC;AAEnC,MAAM,MAAM,uBAAuB,CACjC,CAAC,SACG,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC,GACjD,gBAAgB,IAClB;IACF,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,IAAI,EAAE,UAAU,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,iBAAiB,CAAC,EAAE,MAAM,IAAI,CAAC;IAC/B,2BAA2B,CAAC,EAAE,CAC5B,gBAAgB,EAAE,gBAAgB,CAAC,CAAC,CAAC,KAClC,OAAO,CAAC,IAAI,CAAC,CAAC;IACnB,OAAO,CAAC,EAAE,yBAAyB,CAAC,SAAS,CAAC,CAAC;IAC/C,aAAa,CAAC,EAAE,CAAC,CAAC;IAClB,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B,CAAC;AAEF,qBAAa,yBAAyB,CACpC,CAAC,SACG,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC,GACjD,gBAAgB,CACpB,SAAQ,kBAAkB,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,uBAAuB,CAAC,CAAC,CAAC,CAAC;IAE3E,UAAU;IASJ,aAAa,CACjB,KAAK,EAAE,uBAAuB,CAAC,CAAC,CAAC,EACjC,SAAS,CAAC,EAAE,2BAA2B;;;;;;;;;;;;IAqBzC,YAAY,CAAC,KAAK,EAAE,uBAAuB,CAAC,CAAC,CAAC;CAW/C"}
1
+ {"version":3,"file":"BrowserContextManager.d.ts","sourceRoot":"","sources":["../../src/browser/BrowserContextManager.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,OAAO,EACP,YAAY,EACZ,gBAAgB,EAChB,cAAc,EACd,eAAe,EACf,gBAAgB,EAChB,kBAAkB,EAClB,UAAU,EACX,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,2BAA2B,EAAE,MAAM,YAAY,CAAC;AACzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,EACL,yBAAyB,EAG1B,MAAM,2BAA2B,CAAC;AAEnC,MAAM,MAAM,uBAAuB,CACjC,CAAC,SACG,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC,GACjD,gBAAgB,IAClB;IACF,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,IAAI,EAAE,UAAU,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,iBAAiB,CAAC,EAAE,MAAM,IAAI,CAAC;IAC/B,2BAA2B,CAAC,EAAE,CAC5B,gBAAgB,EAAE,gBAAgB,CAAC,CAAC,CAAC,KAClC,OAAO,CAAC,IAAI,CAAC,CAAC;IACnB,OAAO,CAAC,EAAE,yBAAyB,CAAC,SAAS,CAAC,CAAC;IAC/C,aAAa,CAAC,EAAE,CAAC,CAAC;IAClB,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B,CAAC;AAEF,qBAAa,yBAAyB,CACpC,CAAC,SACG,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC,GACjD,gBAAgB,CACpB,SAAQ,kBAAkB,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,uBAAuB,CAAC,CAAC,CAAC,CAAC;IAE3E,UAAU;IASJ,aAAa,CACjB,KAAK,EAAE,uBAAuB,CAAC,CAAC,CAAC,EACjC,SAAS,CAAC,EAAE,2BAA2B;;;;;;;;;;;;;;;;IAqBzC,YAAY,CAAC,KAAK,EAAE,uBAAuB,CAAC,CAAC,CAAC;CAW/C"}
@@ -13,6 +13,8 @@ export declare function createJazzBrowserGuestContext(options: BaseBrowserContex
13
13
  node: LocalNode;
14
14
  done: () => void;
15
15
  logOut: () => Promise<void>;
16
+ addConnectionListener: (listener: (connected: boolean) => void) => () => void;
17
+ connected: () => boolean;
16
18
  }>;
17
19
  export type BrowserContextOptions<S extends (AccountClass<Account> & CoValueFromRaw<Account>) | AnyAccountSchema> = {
18
20
  credentials?: AuthCredentials;
@@ -26,6 +28,8 @@ export declare function createJazzBrowserContext<S extends (AccountClass<Account
26
28
  authSecretStorage: AuthSecretStorage;
27
29
  done: () => void;
28
30
  logOut: () => Promise<void>;
31
+ addConnectionListener: (listener: (connected: boolean) => void) => () => void;
32
+ connected: () => boolean;
29
33
  }>;
30
34
  /** @category Auth Providers */
31
35
  export type SessionProvider = (accountID: ID<Account> | AgentID) => Promise<SessionID>;
@@ -1 +1 @@
1
- {"version":3,"file":"createBrowserContext.d.ts","sourceRoot":"","sources":["../../src/browser/createBrowserContext.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAQ,YAAY,EAAE,MAAM,QAAQ,CAAC;AAIvD,OAAO,EACL,OAAO,EACP,YAAY,EACZ,OAAO,EACP,gBAAgB,EAChB,eAAe,EACf,iBAAiB,EACjB,OAAO,EACP,cAAc,EACd,cAAc,EACd,EAAE,EACF,YAAY,EACZ,eAAe,EACf,SAAS,EACT,UAAU,EAGX,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,aAAa,EAAqB,MAAM,qBAAqB,CAAC;AAKvE,MAAM,MAAM,yBAAyB,GAAG;IACtC,IAAI,EAAE,UAAU,CAAC;IACjB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,MAAM,CAAC,EAAE,cAAc,CAAC;IACxB,iBAAiB,EAAE,iBAAiB,CAAC;CACtC,CAAC;AA2EF,wBAAsB,6BAA6B,CACjD,OAAO,EAAE,yBAAyB;;;;;GA2BnC;AAED,MAAM,MAAM,qBAAqB,CAC/B,CAAC,SACG,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC,GACjD,gBAAgB,IAClB;IACF,WAAW,CAAC,EAAE,eAAe,CAAC;IAC9B,aAAa,CAAC,EAAE,CAAC,CAAC;IAClB,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B,GAAG,yBAAyB,CAAC;AAE9B,wBAAsB,wBAAwB,CAC5C,CAAC,SACG,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC,GACjD,gBAAgB,EACpB,OAAO,EAAE,qBAAqB,CAAC,CAAC,CAAC;;;;;;GAmDlC;AAED,+BAA+B;AAC/B,MAAM,MAAM,eAAe,GAAG,CAC5B,SAAS,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,OAAO,KAC7B,OAAO,CAAC,SAAS,CAAC,CAAC;AAExB,wBAAgB,yBAAyB,CACvC,SAAS,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,OAAO,EAChC,MAAM,EAAE,cAAc;;;GAwDvB;AAED,6BAA6B;AAC7B,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,OAAO,EAChD,KAAK,EAAE,CAAC,EACR,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,OAAO,GAAG,WAAW,EAEjD,EACE,OAAkD,EAClD,SAAS,GACV,GAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAO,GAC/C,MAAM,CAoBR;AAED,6BAA6B;AAC7B,wBAAgB,eAAe,CAAC,CAAC,SAAS,OAAO,EAC/C,SAAS,EAAE,MAAM,GAEf;IACE,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,YAAY,CAAC;CAC5B,GACD,SAAS,CAuBZ"}
1
+ {"version":3,"file":"createBrowserContext.d.ts","sourceRoot":"","sources":["../../src/browser/createBrowserContext.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAQ,YAAY,EAAE,MAAM,QAAQ,CAAC;AAIvD,OAAO,EACL,OAAO,EACP,YAAY,EACZ,OAAO,EACP,gBAAgB,EAChB,eAAe,EACf,iBAAiB,EACjB,OAAO,EACP,cAAc,EACd,cAAc,EACd,EAAE,EACF,YAAY,EACZ,eAAe,EACf,SAAS,EACT,UAAU,EAGX,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,aAAa,EAAqB,MAAM,qBAAqB,CAAC;AAKvE,MAAM,MAAM,yBAAyB,GAAG;IACtC,IAAI,EAAE,UAAU,CAAC;IACjB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,MAAM,CAAC,EAAE,cAAc,CAAC;IACxB,iBAAiB,EAAE,iBAAiB,CAAC;CACtC,CAAC;AAuFF,wBAAsB,6BAA6B,CACjD,OAAO,EAAE,yBAAyB;;;;;sCAlBA,CAAC,SAAS,EAAE,OAAO,KAAK,IAAI;;GAsD/D;AAED,MAAM,MAAM,qBAAqB,CAC/B,CAAC,SACG,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC,GACjD,gBAAgB,IAClB;IACF,WAAW,CAAC,EAAE,eAAe,CAAC;IAC9B,aAAa,CAAC,EAAE,CAAC,CAAC;IAClB,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B,GAAG,yBAAyB,CAAC;AAE9B,wBAAsB,wBAAwB,CAC5C,CAAC,SACG,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC,GACjD,gBAAgB,EACpB,OAAO,EAAE,qBAAqB,CAAC,CAAC,CAAC;;;;;;sCAvEC,CAAC,SAAS,EAAE,OAAO,KAAK,IAAI;;GAmI/D;AAED,+BAA+B;AAC/B,MAAM,MAAM,eAAe,GAAG,CAC5B,SAAS,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,OAAO,KAC7B,OAAO,CAAC,SAAS,CAAC,CAAC;AAExB,wBAAgB,yBAAyB,CACvC,SAAS,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,OAAO,EAChC,MAAM,EAAE,cAAc;;;GAwDvB;AAED,6BAA6B;AAC7B,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,OAAO,EAChD,KAAK,EAAE,CAAC,EACR,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,OAAO,GAAG,WAAW,EAEjD,EACE,OAAkD,EAClD,SAAS,GACV,GAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAO,GAC/C,MAAM,CAoBR;AAED,6BAA6B;AAC7B,wBAAgB,eAAe,CAAC,CAAC,SAAS,OAAO,EAC/C,SAAS,EAAE,MAAM,GAEf;IACE,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,YAAY,CAAC;CAC5B,GACD,SAAS,CAuBZ"}
@@ -219,6 +219,9 @@ async function setupPeers(options) {
219
219
  const storage = useIndexedDB ? await getIndexedDBStorage() : void 0;
220
220
  if (options.sync.when === "never") {
221
221
  return {
222
+ addConnectionListener: () => () => {
223
+ },
224
+ connected: () => false,
222
225
  toggleNetwork: () => {
223
226
  },
224
227
  peersToLoadFrom,
@@ -257,6 +260,15 @@ async function setupPeers(options) {
257
260
  }
258
261
  return {
259
262
  toggleNetwork,
263
+ addConnectionListener(listener) {
264
+ wsPeer.subscribe(listener);
265
+ return () => {
266
+ wsPeer.unsubscribe(listener);
267
+ };
268
+ },
269
+ connected() {
270
+ return wsPeer.connected;
271
+ },
260
272
  peersToLoadFrom,
261
273
  storage,
262
274
  setNode,
@@ -264,7 +276,15 @@ async function setupPeers(options) {
264
276
  };
265
277
  }
266
278
  async function createJazzBrowserGuestContext(options) {
267
- const { toggleNetwork, peersToLoadFrom, setNode, crypto, storage } = await setupPeers(options);
279
+ const {
280
+ toggleNetwork,
281
+ peersToLoadFrom,
282
+ setNode,
283
+ crypto,
284
+ storage,
285
+ addConnectionListener,
286
+ connected
287
+ } = await setupPeers(options);
268
288
  const context = await createAnonymousJazzContext({
269
289
  crypto,
270
290
  peersToLoadFrom,
@@ -281,11 +301,21 @@ async function createJazzBrowserGuestContext(options) {
281
301
  },
282
302
  logOut: () => {
283
303
  return context.logOut();
284
- }
304
+ },
305
+ addConnectionListener,
306
+ connected
285
307
  };
286
308
  }
287
309
  async function createJazzBrowserContext(options) {
288
- const { toggleNetwork, peersToLoadFrom, setNode, crypto, storage } = await setupPeers(options);
310
+ const {
311
+ toggleNetwork,
312
+ peersToLoadFrom,
313
+ setNode,
314
+ crypto,
315
+ storage,
316
+ addConnectionListener,
317
+ connected
318
+ } = await setupPeers(options);
289
319
  let unsubscribeAuthUpdate = () => {
290
320
  };
291
321
  if (options.sync.when === "signedUp") {
@@ -326,7 +356,9 @@ async function createJazzBrowserContext(options) {
326
356
  logOut: () => {
327
357
  unsubscribeAuthUpdate();
328
358
  return context.logOut();
329
- }
359
+ },
360
+ addConnectionListener,
361
+ connected
330
362
  };
331
363
  }
332
364
  function provideBrowserLockSession(accountID, crypto) {