jazz-tools 0.20.1 → 0.20.3

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 (115) hide show
  1. package/.turbo/turbo-build.log +49 -49
  2. package/CHANGELOG.md +19 -6
  3. package/dist/{chunk-2OPP7KWV.js → chunk-Q5RNSSUM.js} +121 -22
  4. package/dist/chunk-Q5RNSSUM.js.map +1 -0
  5. package/dist/index.js +1 -1
  6. package/dist/inspector/{chunk-MCTB5ZJC.js → chunk-6JPVMI3V.js} +302 -182
  7. package/dist/inspector/chunk-6JPVMI3V.js.map +1 -0
  8. package/dist/inspector/{custom-element-5YWVZBWA.js → custom-element-WOQY2M4W.js} +1337 -206
  9. package/dist/inspector/custom-element-WOQY2M4W.js.map +1 -0
  10. package/dist/inspector/in-app.d.ts +1 -0
  11. package/dist/inspector/in-app.d.ts.map +1 -1
  12. package/dist/inspector/index.d.ts +1 -0
  13. package/dist/inspector/index.d.ts.map +1 -1
  14. package/dist/inspector/index.js +1044 -17
  15. package/dist/inspector/index.js.map +1 -1
  16. package/dist/inspector/pages/home.d.ts +4 -1
  17. package/dist/inspector/pages/home.d.ts.map +1 -1
  18. package/dist/inspector/pages/performance/PerformancePage.d.ts +7 -0
  19. package/dist/inspector/pages/performance/PerformancePage.d.ts.map +1 -0
  20. package/dist/inspector/pages/performance/SubscriptionDetailPanel.d.ts +8 -0
  21. package/dist/inspector/pages/performance/SubscriptionDetailPanel.d.ts.map +1 -0
  22. package/dist/inspector/pages/performance/SubscriptionRow.d.ts +11 -0
  23. package/dist/inspector/pages/performance/SubscriptionRow.d.ts.map +1 -0
  24. package/dist/inspector/pages/performance/Timeline.d.ts +12 -0
  25. package/dist/inspector/pages/performance/Timeline.d.ts.map +1 -0
  26. package/dist/inspector/pages/performance/helpers.d.ts +5 -0
  27. package/dist/inspector/pages/performance/helpers.d.ts.map +1 -0
  28. package/dist/inspector/pages/performance/index.d.ts +3 -0
  29. package/dist/inspector/pages/performance/index.d.ts.map +1 -0
  30. package/dist/inspector/pages/performance/types.d.ts +13 -0
  31. package/dist/inspector/pages/performance/types.d.ts.map +1 -0
  32. package/dist/inspector/pages/performance/usePerformanceEntries.d.ts +3 -0
  33. package/dist/inspector/pages/performance/usePerformanceEntries.d.ts.map +1 -0
  34. package/dist/inspector/register-custom-element.js +3 -1
  35. package/dist/inspector/register-custom-element.js.map +1 -1
  36. package/dist/inspector/standalone.js +1 -1
  37. package/dist/inspector/tests/pages/performance/PerformancePage.test.d.ts +2 -0
  38. package/dist/inspector/tests/pages/performance/PerformancePage.test.d.ts.map +1 -0
  39. package/dist/inspector/tests/pages/performance/SubscriptionDetailPanel.test.d.ts +2 -0
  40. package/dist/inspector/tests/pages/performance/SubscriptionDetailPanel.test.d.ts.map +1 -0
  41. package/dist/inspector/tests/pages/performance/SubscriptionRow.test.d.ts +2 -0
  42. package/dist/inspector/tests/pages/performance/SubscriptionRow.test.d.ts.map +1 -0
  43. package/dist/inspector/tests/pages/performance/Timeline.test.d.ts +2 -0
  44. package/dist/inspector/tests/pages/performance/Timeline.test.d.ts.map +1 -0
  45. package/dist/inspector/tests/pages/performance/helpers.test.d.ts +2 -0
  46. package/dist/inspector/tests/pages/performance/helpers.test.d.ts.map +1 -0
  47. package/dist/inspector/viewer/delete-local-data.d.ts.map +1 -1
  48. package/dist/inspector/viewer/header.d.ts +4 -2
  49. package/dist/inspector/viewer/header.d.ts.map +1 -1
  50. package/dist/inspector/viewer/page-stack.d.ts +3 -1
  51. package/dist/inspector/viewer/page-stack.d.ts.map +1 -1
  52. package/dist/react-core/hooks.d.ts +2 -2
  53. package/dist/react-core/hooks.d.ts.map +1 -1
  54. package/dist/react-core/index.js +50 -18
  55. package/dist/react-core/index.js.map +1 -1
  56. package/dist/react-core/subscription-provider.d.ts.map +1 -1
  57. package/dist/react-native-core/media/image.d.ts +1 -1
  58. package/dist/svelte/jazz.class.svelte.d.ts.map +1 -1
  59. package/dist/svelte/jazz.class.svelte.js +27 -22
  60. package/dist/testing.js +1 -1
  61. package/dist/tools/coValues/interfaces.d.ts.map +1 -1
  62. package/dist/tools/exports.d.ts +1 -1
  63. package/dist/tools/exports.d.ts.map +1 -1
  64. package/dist/tools/implementation/zodSchema/runtimeConverters/coValueSchemaTransformation.d.ts.map +1 -1
  65. package/dist/tools/subscribe/SubscriptionCache.d.ts +2 -2
  66. package/dist/tools/subscribe/SubscriptionCache.d.ts.map +1 -1
  67. package/dist/tools/subscribe/SubscriptionScope.d.ts +19 -12
  68. package/dist/tools/subscribe/SubscriptionScope.d.ts.map +1 -1
  69. package/dist/tools/subscribe/errorReporting.d.ts +6 -0
  70. package/dist/tools/subscribe/errorReporting.d.ts.map +1 -1
  71. package/dist/tools/subscribe/index.d.ts +4 -4
  72. package/dist/tools/subscribe/index.d.ts.map +1 -1
  73. package/dist/tools/subscribe/types.d.ts +48 -3
  74. package/dist/tools/subscribe/types.d.ts.map +1 -1
  75. package/dist/tools/subscribe/utils.d.ts +1 -1
  76. package/dist/tools/subscribe/utils.d.ts.map +1 -1
  77. package/dist/tools/tests/SubscriptionScope.performance.test.d.ts +2 -0
  78. package/dist/tools/tests/SubscriptionScope.performance.test.d.ts.map +1 -0
  79. package/package.json +4 -4
  80. package/src/inspector/in-app.tsx +41 -3
  81. package/src/inspector/index.tsx +5 -1
  82. package/src/inspector/pages/home.tsx +26 -3
  83. package/src/inspector/pages/performance/PerformancePage.tsx +215 -0
  84. package/src/inspector/pages/performance/SubscriptionDetailPanel.tsx +182 -0
  85. package/src/inspector/pages/performance/SubscriptionRow.tsx +242 -0
  86. package/src/inspector/pages/performance/Timeline.tsx +513 -0
  87. package/src/inspector/pages/performance/helpers.ts +70 -0
  88. package/src/inspector/pages/performance/index.ts +2 -0
  89. package/src/inspector/pages/performance/types.ts +12 -0
  90. package/src/inspector/pages/performance/usePerformanceEntries.ts +53 -0
  91. package/src/inspector/register-custom-element.ts +3 -0
  92. package/src/inspector/tests/pages/performance/PerformancePage.test.tsx +83 -0
  93. package/src/inspector/tests/pages/performance/SubscriptionDetailPanel.test.tsx +68 -0
  94. package/src/inspector/tests/pages/performance/SubscriptionRow.test.tsx +93 -0
  95. package/src/inspector/tests/pages/performance/Timeline.test.tsx +57 -0
  96. package/src/inspector/tests/pages/performance/helpers.test.ts +91 -0
  97. package/src/inspector/viewer/delete-local-data.tsx +24 -5
  98. package/src/inspector/viewer/header.tsx +96 -17
  99. package/src/inspector/viewer/page-stack.tsx +22 -18
  100. package/src/react-core/hooks.ts +34 -4
  101. package/src/react-core/subscription-provider.tsx +17 -8
  102. package/src/svelte/jazz.class.svelte.ts +51 -33
  103. package/src/tools/coValues/interfaces.ts +3 -0
  104. package/src/tools/exports.ts +1 -0
  105. package/src/tools/implementation/zodSchema/runtimeConverters/coValueSchemaTransformation.ts +13 -0
  106. package/src/tools/subscribe/SubscriptionCache.ts +6 -4
  107. package/src/tools/subscribe/SubscriptionScope.ts +141 -23
  108. package/src/tools/subscribe/errorReporting.ts +1 -1
  109. package/src/tools/subscribe/index.ts +1 -1
  110. package/src/tools/subscribe/types.ts +62 -9
  111. package/src/tools/subscribe/utils.ts +2 -2
  112. package/src/tools/tests/SubscriptionScope.performance.test.ts +149 -0
  113. package/dist/chunk-2OPP7KWV.js.map +0 -1
  114. package/dist/inspector/chunk-MCTB5ZJC.js.map +0 -1
  115. package/dist/inspector/custom-element-5YWVZBWA.js.map +0 -1
@@ -106,17 +106,18 @@ function useIsAuthenticated() {
106
106
  () => authSecretStorage.isAuthenticated
107
107
  );
108
108
  }
109
- function useCoValueSubscription(Schema, id, options) {
109
+ function useCoValueSubscription(Schema, id, options, source) {
110
110
  const resolve = getResolveQuery(Schema, options?.resolve);
111
111
  const subscriptions = useCoValueSubscriptions(
112
112
  Schema,
113
113
  [id],
114
114
  resolve,
115
- options?.unstable_branch
115
+ options?.unstable_branch,
116
+ source
116
117
  );
117
118
  return subscriptions[0] ?? null;
118
119
  }
119
- function useCoValueSubscriptions(schema, ids, resolve, branch) {
120
+ function useCoValueSubscriptions(schema, ids, resolve, branch, source) {
120
121
  const contextManager = useJazzContext();
121
122
  const agent = useAgent();
122
123
  const callerStack = useMemo(() => captureStack(), []);
@@ -139,6 +140,7 @@ function useCoValueSubscriptions(schema, ids, resolve, branch) {
139
140
  if (callerStack) {
140
141
  subscription.callerStack = callerStack;
141
142
  }
143
+ subscription.trackLoadingPerformance(source ?? "unknown");
142
144
  return subscription;
143
145
  });
144
146
  return {
@@ -185,12 +187,22 @@ function useGetCurrentValue(subscription) {
185
187
  }
186
188
  function useCoState(Schema, id, options) {
187
189
  useImportCoValueContent(id, options?.preloaded);
188
- const subscription = useCoValueSubscription(Schema, id, options);
190
+ const subscription = useCoValueSubscription(
191
+ Schema,
192
+ id,
193
+ options,
194
+ `useCoState`
195
+ );
189
196
  return useSubscriptionSelector(subscription, options);
190
197
  }
191
198
  function useSuspenseCoState(Schema, id, options) {
192
199
  useImportCoValueContent(id, options?.preloaded);
193
- const subscription = useCoValueSubscription(Schema, id, options);
200
+ const subscription = useCoValueSubscription(
201
+ Schema,
202
+ id,
203
+ options,
204
+ "useSuspenseCoState"
205
+ );
194
206
  if (!subscription) {
195
207
  throw new Error("Subscription not found");
196
208
  }
@@ -216,7 +228,7 @@ function useSubscriptionSelector(subscription, options) {
216
228
  options?.equalityFn ?? Object.is
217
229
  );
218
230
  }
219
- function useAccountSubscription(Schema, options) {
231
+ function useAccountSubscription(Schema, options, source) {
220
232
  const contextManager = useJazzContext();
221
233
  const callerStack = useMemo(() => captureStack(), []);
222
234
  const createSubscription = () => {
@@ -243,6 +255,7 @@ function useAccountSubscription(Schema, options) {
243
255
  if (callerStack) {
244
256
  subscription2.callerStack = callerStack;
245
257
  }
258
+ subscription2.trackLoadingPerformance(source ?? "unknown");
246
259
  return {
247
260
  subscription: subscription2,
248
261
  contextManager,
@@ -265,11 +278,19 @@ function useAccountSubscription(Schema, options) {
265
278
  return subscription.subscription;
266
279
  }
267
280
  function useAccount(AccountSchema = Account, options) {
268
- const subscription = useAccountSubscription(AccountSchema, options);
281
+ const subscription = useAccountSubscription(
282
+ AccountSchema,
283
+ options,
284
+ "useAccount"
285
+ );
269
286
  return useSubscriptionSelector(subscription, options);
270
287
  }
271
288
  function useSuspenseAccount(AccountSchema = Account, options) {
272
- const subscription = useAccountSubscription(AccountSchema, options);
289
+ const subscription = useAccountSubscription(
290
+ AccountSchema,
291
+ options,
292
+ "useSuspenseAccount"
293
+ );
273
294
  if (!subscription) {
274
295
  throw new Error(
275
296
  "Subscription not found, are you using useSuspenseAccount in guest mode?"
@@ -406,7 +427,8 @@ function useSuspenseCoStates(Schema, ids, options) {
406
427
  Schema,
407
428
  ids,
408
429
  resolve,
409
- options?.unstable_branch
430
+ options?.unstable_branch,
431
+ "useSuspenseCoStates"
410
432
  );
411
433
  useSuspendUntilLoaded(subscriptionScopes);
412
434
  return useSubscriptionsSelector(subscriptionScopes, options);
@@ -417,7 +439,8 @@ function useCoStates(Schema, ids, options) {
417
439
  Schema,
418
440
  ids,
419
441
  resolve,
420
- options?.unstable_branch
442
+ options?.unstable_branch,
443
+ "useCoStates"
421
444
  );
422
445
  return useSubscriptionsSelector(subscriptionScopes, options);
423
446
  }
@@ -438,10 +461,15 @@ function createCoValueSubscriptionContext(schema, resolve) {
438
461
  unavailableFallback,
439
462
  children
440
463
  }) => {
441
- const subscription = useCoValueSubscription(schema, id, {
442
- ...options,
443
- resolve
444
- });
464
+ const subscription = useCoValueSubscription(
465
+ schema,
466
+ id,
467
+ {
468
+ ...options,
469
+ resolve
470
+ },
471
+ "CoValueSubscriptionProvider"
472
+ );
445
473
  const loadState = useSubscriptionSelector(subscription, {
446
474
  select: (value) => value.$jazz.loadingState
447
475
  });
@@ -476,10 +504,14 @@ function createAccountSubscriptionContext(schema, resolve) {
476
504
  unavailableFallback,
477
505
  children
478
506
  }) => {
479
- const subscription = useAccountSubscription(schema, {
480
- ...options,
481
- resolve
482
- });
507
+ const subscription = useAccountSubscription(
508
+ schema,
509
+ {
510
+ ...options,
511
+ resolve
512
+ },
513
+ "AccountSubscriptionProvider"
514
+ );
483
515
  const loadState = useSubscriptionSelector(subscription, {
484
516
  select: (value) => value.$jazz.loadingState
485
517
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/react-core/hooks.ts","../../src/react-core/utils.ts","../../src/react-core/use.ts","../../src/react-core/subscription-provider.tsx","../../src/react-core/auth/DemoAuth.tsx","../../src/react-core/auth/PassphraseAuth.tsx"],"sourcesContent":["import { useSyncExternalStoreWithSelector } from \"use-sync-external-store/shim/with-selector\";\nimport React, {\n useCallback,\n useContext,\n useMemo,\n useRef,\n useSyncExternalStore,\n} from \"react\";\n\nimport {\n Account,\n AccountClass,\n AnonymousJazzAgent,\n AnyAccountSchema,\n CoValue,\n CoValueClassOrSchema,\n CoValueLoadingState,\n ExportedCoValue,\n InboxSender,\n InstanceOfSchema,\n JazzContextManager,\n Loaded,\n MaybeLoaded,\n NotLoaded,\n ResolveQuery,\n ResolveQueryStrict,\n SchemaResolveQuery,\n SubscriptionScope,\n importContentPieces,\n captureStack,\n getUnloadedCoValueWithoutId,\n type BranchDefinition,\n} from \"jazz-tools\";\nimport { JazzContext } from \"./provider.js\";\nimport { getCurrentAccountFromContextManager } from \"./utils.js\";\nimport { CoValueSubscription } from \"./types.js\";\nimport { use } from \"./use.js\";\n\nexport function useJazzContext<Acc extends Account>() {\n const value = useContext(JazzContext) as JazzContextManager<Acc, {}>;\n\n if (!value) {\n throw new Error(\n \"You need to set up a JazzProvider on top of your app to use this hook.\",\n );\n }\n\n return value;\n}\n\nexport function useJazzContextValue<Acc extends Account>() {\n const contextManager = useJazzContext<Acc>();\n\n const context = useSyncExternalStore(\n useCallback(\n (callback) => {\n return contextManager.subscribe(callback);\n },\n [contextManager],\n ),\n () => contextManager.getCurrentValue(),\n () => contextManager.getCurrentValue(),\n );\n\n if (!context) {\n throw new Error(\n \"The JazzProvider is not initialized yet. This looks like a bug, please report it.\",\n );\n }\n\n return context;\n}\n\nexport function useAuthSecretStorage() {\n return useJazzContext().getAuthSecretStorage();\n}\n\nexport function useIsAuthenticated() {\n const authSecretStorage = useAuthSecretStorage();\n\n return useSyncExternalStore(\n useCallback(\n (callback) => {\n return authSecretStorage.onUpdate(callback);\n },\n [authSecretStorage],\n ),\n () => authSecretStorage.isAuthenticated,\n () => authSecretStorage.isAuthenticated,\n );\n}\n\nexport function useCoValueSubscription<\n S extends CoValueClassOrSchema,\n // @ts-expect-error we can't statically enforce the schema's resolve query is a valid resolve query, but in practice it is\n const R extends ResolveQuery<S> = SchemaResolveQuery<S>,\n>(\n Schema: S,\n id: string | undefined | null,\n options?: {\n resolve?: ResolveQueryStrict<S, R>;\n unstable_branch?: BranchDefinition;\n },\n): CoValueSubscription<S, R> | null {\n const resolve = getResolveQuery(Schema, options?.resolve);\n const subscriptions = useCoValueSubscriptions(\n Schema,\n [id],\n resolve,\n options?.unstable_branch,\n );\n return (subscriptions[0] ?? null) as CoValueSubscription<S, R> | null;\n}\n\n/**\n * Tracked state for the entire subscriptions array.\n * If any of the dependencies change, the subscriptions are recreated.\n */\ninterface SubscriptionsState {\n subscriptions: (SubscriptionScope<CoValue> | null)[];\n schema: CoValueClassOrSchema;\n ids: readonly (string | undefined | null)[];\n resolve: ResolveQuery<any>;\n contextManager: ReturnType<typeof useJazzContext>;\n agent: AnonymousJazzAgent | Loaded<any, true>;\n branchName?: string;\n branchOwnerId?: string;\n}\n\n/**\n * Internal hook that manages an array of SubscriptionScope instances.\n *\n * - Uses a ref to track subscriptions by index\n * - Detects changes by comparing schema/ids/resolve/branch\n * - Creates new subscriptions via SubscriptionScopeCache.getOrCreate()\n * - Returns null for entries with undefined/null IDs or invalid branches\n */\nfunction useCoValueSubscriptions(\n schema: CoValueClassOrSchema,\n ids: readonly (string | undefined | null)[],\n resolve: ResolveQuery<any>,\n branch?: BranchDefinition,\n): (SubscriptionScope<CoValue> | null)[] {\n const contextManager = useJazzContext();\n const agent = useAgent();\n\n const callerStack = useMemo(() => captureStack(), []);\n\n const createAllSubscriptions = (): SubscriptionsState => {\n const node = contextManager.getCurrentValue()!.node;\n const cache = contextManager.getSubscriptionScopeCache();\n\n const subscriptions = ids.map((id) => {\n if (id === undefined || id === null) {\n return null;\n }\n\n const subscription = cache.getOrCreate(\n node,\n schema,\n id,\n resolve,\n false,\n false,\n branch,\n );\n\n if (callerStack) {\n subscription.callerStack = callerStack;\n }\n\n return subscription;\n });\n\n return {\n subscriptions,\n schema,\n ids,\n resolve,\n contextManager,\n agent,\n branchName: branch?.name,\n branchOwnerId: branch?.owner?.$jazz.id,\n };\n };\n\n const stateRef = React.useRef<SubscriptionsState | null>(null);\n const newSubscriptions = createAllSubscriptions();\n\n const state = stateRef.current;\n\n // Avoid recreating the subscriptions array if all subscriptions are already cached\n const anySubscriptionChanged =\n newSubscriptions.subscriptions.length !== state?.subscriptions.length ||\n newSubscriptions.subscriptions.some(\n (newSubscriptions, index) =>\n newSubscriptions !== state.subscriptions[index],\n );\n\n if (anySubscriptionChanged) {\n stateRef.current = newSubscriptions;\n }\n\n return stateRef.current!.subscriptions;\n}\n\nfunction useImportCoValueContent<V>(\n id: string | undefined | null,\n content?: ExportedCoValue<V>,\n) {\n const agent = useAgent();\n const preloadExecuted = useRef<typeof agent | null>(null);\n if (content && preloadExecuted.current !== agent && id) {\n if (content.id === id) {\n importContentPieces(content.contentPieces, agent);\n } else {\n console.warn(\"Preloaded value ID does not match the subscription ID\");\n }\n\n preloadExecuted.current = agent;\n }\n}\n\nfunction useGetCurrentValue<C extends CoValue>(\n subscription: SubscriptionScope<C> | null,\n) {\n return useCallback(() => {\n if (!subscription) {\n return getUnloadedCoValueWithoutId(CoValueLoadingState.UNAVAILABLE);\n }\n\n return subscription.getCurrentValue();\n }, [subscription]);\n}\n\n/**\n * React hook for subscribing to CoValues and handling loading states.\n *\n * This hook provides a convenient way to subscribe to CoValues and automatically\n * handles the subscription lifecycle (subscribe on mount, unsubscribe on unmount).\n * It also supports deep loading of nested CoValues through resolve queries.\n *\n * The {@param options.select} function allows returning only specific parts of the CoValue data,\n * which helps reduce unnecessary re-renders by narrowing down the returned data.\n * Additionally, you can provide a custom {@param options.equalityFn} to further optimize\n * performance by controlling when the component should re-render based on the selected data.\n *\n * @returns The loaded CoValue, or an {@link NotLoaded} value. Use `$isLoaded` to check whether the\n * CoValue is loaded, or use {@link MaybeLoaded.$jazz.loadingState} to get the detailed loading state.\n * If a selector function is provided, returns the result of the selector function.\n *\n * @example\n * ```tsx\n * // Select only specific fields to reduce re-renders\n * const Project = co.map({\n * name: z.string(),\n * description: z.string(),\n * tasks: co.list(Task),\n * lastModified: z.date(),\n * });\n *\n * function ProjectTitle({ projectId }: { projectId: string }) {\n * // Only re-render when the project name changes, not other fields\n * const projectName = useCoState(\n * Project,\n * projectId,\n * {\n * select: (project) => !project.$isLoading ? project.name : \"Loading...\",\n * }\n * );\n *\n * return <h1>{projectName}</h1>;\n * }\n * ```\n *\n * @example\n * ```tsx\n * // Deep loading with resolve queries\n * const Project = co.map({\n * name: z.string(),\n * tasks: co.list(Task),\n * owner: TeamMember,\n * });\n *\n * function ProjectView({ projectId }: { projectId: string }) {\n * const project = useCoState(Project, projectId, {\n * resolve: {\n * tasks: { $each: true },\n * owner: true,\n * },\n * });\n *\n * if (!project.$isLoaded) {\n * switch (project.$jazz.loadingState) {\n * case \"unauthorized\":\n * return \"Project not accessible\";\n * case \"unavailable\":\n * return \"Project not found\";\n * case \"loading\":\n * return \"Loading project...\";\n * }\n * }\n *\n * return (\n * <div>\n * <h1>{project.name}</h1>\n * <p>Owner: {project.owner.name}</p>\n * <ul>\n * {project.tasks.map((task) => (\n * <li key={task.id}>{task.title}</li>\n * ))}\n * </ul>\n * </div>\n * );\n * }\n * ```\n *\n * @example\n * ```tsx\n * // Using with optional references and error handling\n * const Task = co.map({\n * title: z.string(),\n * assignee: co.optional(TeamMember),\n * subtasks: co.list(Task),\n * });\n *\n * function TaskDetail({ taskId }: { taskId: string }) {\n * const task = useCoState(Task, taskId, {\n * resolve: {\n * assignee: true,\n * subtasks: { $each: { $onError: 'catch' } },\n * },\n * });\n *\n * if (!task.$isLoaded) {\n * switch (task.$jazz.loadingState) {\n * case \"unauthorized\":\n * return \"Task not accessible\";\n * case \"unavailable\":\n * return \"Task not found\";\n * case \"loading\":\n * return \"Loading task...\";\n * }\n * }\n *\n * return (\n * <div>\n * <h2>{task.title}</h2>\n * {task.assignee && <p>Assigned to: {task.assignee.name}</p>}\n * <ul>\n * {task.subtasks.map((subtask, index) => (\n * subtask.$isLoaded ? <li key={subtask.id}>{subtask.title}</li> : <li key={index}>Inaccessible subtask</li>\n * ))}\n * </ul>\n * </div>\n * );\n * }\n * ```\n *\n * @example\n * ```tsx\n * // Use custom equality function for complex data structures\n * const TaskList = co.list(Task);\n *\n * function TaskCount({ listId }: { listId: string }) {\n * const taskStats = useCoState(\n * TaskList,\n * listId,\n * {\n * resolve: { $each: true },\n * select: (tasks) => {\n * if (!tasks.$isLoaded) return { total: 0, completed: 0 };\n * return {\n * total: tasks.length,\n * completed: tasks.filter(task => task.completed).length,\n * };\n * },\n * // Custom equality to prevent re-renders when stats haven't changed\n * equalityFn: (a, b) => a.total === b.total && a.completed === b.completed,\n * }\n * );\n *\n * return (\n * <div>\n * {taskStats.completed} of {taskStats.total} tasks completed\n * </div>\n * );\n * }\n * ```\n *\n * For more examples, see the [subscription and deep loading](https://jazz.tools/docs/react/using-covalues/subscription-and-loading) documentation.\n */\nexport function useCoState<\n S extends CoValueClassOrSchema,\n // @ts-expect-error we can't statically enforce the schema's resolve query is a valid resolve query, but in practice it is\n const R extends ResolveQuery<S> = SchemaResolveQuery<S>,\n TSelectorReturn = MaybeLoaded<Loaded<S, R>>,\n>(\n /** The CoValue schema or class constructor */\n Schema: S,\n /** The ID of the CoValue to subscribe to. If `undefined`, returns an `unavailable` value */\n id: string | undefined,\n /** Optional configuration for the subscription */\n options?: {\n /** Resolve query to specify which nested CoValues to load */\n resolve?: ResolveQueryStrict<S, R>;\n /** Select which value to return */\n select?: (value: MaybeLoaded<Loaded<S, R>>) => TSelectorReturn;\n /** Equality function to determine if the selected value has changed, defaults to `Object.is` */\n equalityFn?: (a: TSelectorReturn, b: TSelectorReturn) => boolean;\n /**\n * Create or load a branch for isolated editing.\n *\n * Branching lets you take a snapshot of the current state and start modifying it without affecting the canonical/shared version.\n * It's a fork of your data graph: the same schema, but with diverging values.\n *\n * The checkout of the branch is applied on all the resolved values.\n *\n * @param name - A unique name for the branch. This identifies the branch\n * and can be used to switch between different branches of the same CoValue.\n * @param owner - The owner of the branch. Determines who can access and modify\n * the branch. If not provided, the branch is owned by the current user.\n *\n * For more info see the [branching](https://jazz.tools/docs/react/using-covalues/version-control) documentation.\n */\n unstable_branch?: BranchDefinition;\n preloaded?: ExportedCoValue<Loaded<S, R>>;\n },\n): TSelectorReturn {\n useImportCoValueContent(id, options?.preloaded);\n const subscription = useCoValueSubscription(Schema, id, options);\n return useSubscriptionSelector(subscription, options);\n}\n\nexport function useSuspenseCoState<\n S extends CoValueClassOrSchema,\n // @ts-expect-error we can't statically enforce the schema's resolve query is a valid resolve query, but in practice it is\n const R extends ResolveQuery<S> = SchemaResolveQuery<S>,\n TSelectorReturn = Loaded<S, R>,\n>(\n /** The CoValue schema or class constructor */\n Schema: S,\n /** The ID of the CoValue to subscribe to */\n id: string,\n /** Optional configuration for the subscription */\n options?: {\n /** Resolve query to specify which nested CoValues to load */\n resolve?: ResolveQueryStrict<S, R>;\n /** Select which value to return */\n select?: (value: Loaded<S, R>) => TSelectorReturn;\n /** Equality function to determine if the selected value has changed, defaults to `Object.is` */\n equalityFn?: (a: TSelectorReturn, b: TSelectorReturn) => boolean;\n /**\n * Create or load a branch for isolated editing.\n *\n * Branching lets you take a snapshot of the current state and start modifying it without affecting the canonical/shared version.\n * It's a fork of your data graph: the same schema, but with diverging values.\n *\n * The checkout of the branch is applied on all the resolved values.\n *\n * @param name - A unique name for the branch. This identifies the branch\n * and can be used to switch between different branches of the same CoValue.\n * @param owner - The owner of the branch. Determines who can access and modify\n * the branch. If not provided, the branch is owned by the current user.\n *\n * For more info see the [branching](https://jazz.tools/docs/react/using-covalues/version-control) documentation.\n */\n unstable_branch?: BranchDefinition;\n preloaded?: ExportedCoValue<Loaded<S, R>>;\n },\n): TSelectorReturn {\n useImportCoValueContent(id, options?.preloaded);\n\n const subscription = useCoValueSubscription(Schema, id, options);\n\n if (!subscription) {\n throw new Error(\"Subscription not found\");\n }\n\n use(subscription.getCachedPromise());\n\n return useSubscriptionSelector(subscription, options);\n}\n\n/**\n * Returns a subscription's current value.\n * Allows to optionally select a subset of the subscription's value.\n *\n * This is the single-value counterpart to {@link useSubscriptionsSelector}.\n * Keeping it separate for performance reasons.\n */\nexport function useSubscriptionSelector<\n S extends CoValueClassOrSchema,\n // @ts-expect-error we can't statically enforce the schema's resolve query is a valid resolve query, but in practice it is\n const R extends ResolveQuery<S> = SchemaResolveQuery<S>,\n // Selector input can be an already loaded or a maybe-loaded value,\n // depending on whether a suspense hook is used or not, respectively.\n TSelectorInput = MaybeLoaded<Loaded<S, R>>,\n TSelectorReturn = TSelectorInput,\n>(\n subscription: CoValueSubscription<S, R>,\n options?: {\n select?: (value: TSelectorInput) => TSelectorReturn;\n equalityFn?: (a: TSelectorReturn, b: TSelectorReturn) => boolean;\n },\n): TSelectorReturn {\n const getCurrentValue = useGetCurrentValue(subscription);\n\n return useSyncExternalStoreWithSelector(\n React.useCallback(\n (callback) => {\n if (!subscription) {\n return () => {};\n }\n\n return subscription.subscribe(callback);\n },\n [subscription],\n ),\n getCurrentValue,\n getCurrentValue,\n options?.select ?? ((value) => value as unknown as TSelectorReturn),\n options?.equalityFn ?? Object.is,\n );\n}\n\nexport function useAccountSubscription<\n S extends AccountClass<Account> | AnyAccountSchema,\n // @ts-expect-error we can't statically enforce the schema's resolve query is a valid resolve query, but in practice it is\n const R extends ResolveQuery<S> = SchemaResolveQuery<S>,\n>(\n Schema: S,\n options?: {\n resolve?: ResolveQueryStrict<S, R>;\n unstable_branch?: BranchDefinition;\n },\n) {\n const contextManager = useJazzContext();\n\n // Capture stack trace at hook call time\n const callerStack = useMemo(() => captureStack(), []);\n\n const createSubscription = () => {\n const agent = getCurrentAccountFromContextManager(contextManager);\n\n if (agent.$type$ === \"Anonymous\") {\n return {\n subscription: null,\n contextManager,\n agent,\n };\n }\n\n const resolve = getResolveQuery(Schema, options?.resolve);\n\n const node = contextManager.getCurrentValue()!.node;\n const cache = contextManager.getSubscriptionScopeCache();\n const subscription = cache.getOrCreate(\n node,\n Schema,\n agent.$jazz.id,\n resolve,\n false,\n false,\n options?.unstable_branch,\n );\n\n // Set callerStack on returned subscription after retrieval\n if (callerStack) {\n subscription.callerStack = callerStack;\n }\n\n return {\n subscription,\n contextManager,\n Schema,\n branchName: options?.unstable_branch?.name,\n branchOwnerId: options?.unstable_branch?.owner?.$jazz.id,\n };\n };\n\n const [subscription, setSubscription] = React.useState(createSubscription);\n\n const branchName = options?.unstable_branch?.name;\n const branchOwnerId = options?.unstable_branch?.owner?.$jazz.id;\n\n React.useLayoutEffect(() => {\n if (\n subscription.contextManager !== contextManager ||\n subscription.Schema !== Schema ||\n subscription.branchName !== options?.unstable_branch?.name ||\n subscription.branchOwnerId !== options?.unstable_branch?.owner?.$jazz.id\n ) {\n // No need to manually destroy - cache handles cleanup via SubscriptionScope lifecycle\n setSubscription(createSubscription());\n }\n\n return contextManager.subscribe(() => {\n // No need to manually destroy - cache handles cleanup via SubscriptionScope lifecycle\n setSubscription(createSubscription());\n });\n }, [Schema, contextManager, branchName, branchOwnerId]);\n\n return subscription.subscription as CoValueSubscription<S, R>;\n}\n\n/**\n * React hook for accessing the current user's account.\n *\n * This hook provides access to the current user's account profile and root data.\n * It automatically handles the subscription lifecycle and supports deep loading of nested\n * CoValues through resolve queries.\n *\n * The {@param options.select} function allows returning only specific parts of the account data,\n * which helps reduce unnecessary re-renders by narrowing down the returned data.\n * Additionally, you can provide a custom {@param options.equalityFn} to further optimize\n * performance by controlling when the component should re-render based on the selected data.\n *\n * @returns The account data, or an {@link NotLoaded} value. Use `$isLoaded` to check whether the\n * CoValue is loaded, or use {@link MaybeLoaded.$jazz.loadingState} to get the detailed loading state.\n * If a selector function is provided, returns the result of the selector function.\n *\n * @example\n * ```tsx\n * // Select only specific fields to reduce re-renders\n * const MyAppAccount = co.account({\n * profile: co.profile(),\n * root: co.map({\n * name: z.string(),\n * email: z.string(),\n * lastLogin: z.date(),\n * }),\n * });\n *\n * function UserProfile({ accountId }: { accountId: string }) {\n * // Only re-render when the profile name changes, not other fields\n * const profileName = useAccount(\n * MyAppAccount,\n * {\n * resolve: {\n * profile: true,\n * root: true,\n * },\n * select: (account) => account.$isLoaded ? account.profile.name : \"Loading...\",\n * }\n * );\n *\n * return <h1>{profileName}</h1>;\n * }\n * ```\n *\n * @example\n * ```tsx\n * // Deep loading with resolve queries\n * function ProjectListWithDetails() {\n * const me = useAccount(MyAppAccount, {\n * resolve: {\n * profile: true,\n * root: {\n * myProjects: {\n * $each: {\n * tasks: true,\n * },\n * },\n * },\n * },\n * });\n *\n * if (!me.$isLoaded) {\n * switch (me.$jazz.loadingState) {\n * case \"unauthorized\":\n * return \"Account not accessible\";\n * case \"unavailable\":\n * return \"Account not found\";\n * case \"loading\":\n * return \"Loading account...\";\n * }\n * }\n *\n * return (\n * <div>\n * <h1>{me.profile.name}'s projects</h1>\n * <ul>\n * {me.root.myProjects.map((project) => (\n * <li key={project.id}>\n * {project.name} ({project.tasks.length} tasks)\n * </li>\n * ))}\n * </ul>\n * </div>\n * );\n * }\n * ```\n *\n */\nexport function useAccount<\n A extends AccountClass<Account> | AnyAccountSchema,\n // @ts-expect-error we can't statically enforce the schema's resolve query is a valid resolve query, but in practice it is\n const R extends ResolveQuery<A> = SchemaResolveQuery<A>,\n TSelectorReturn = MaybeLoaded<Loaded<A, R>>,\n>(\n /** The account schema to use. Defaults to the base Account schema */\n AccountSchema: A = Account as unknown as A,\n /** Optional configuration for the subscription */\n options?: {\n /** Resolve query to specify which nested CoValues to load from the account */\n resolve?: ResolveQueryStrict<A, R>;\n /** Select which value to return from the account data */\n select?: (account: MaybeLoaded<Loaded<A, R>>) => TSelectorReturn;\n /** Equality function to determine if the selected value has changed, defaults to `Object.is` */\n equalityFn?: (a: TSelectorReturn, b: TSelectorReturn) => boolean;\n /**\n * Create or load a branch for isolated editing.\n *\n * Branching lets you take a snapshot of the current state and start modifying it without affecting the canonical/shared version.\n * It's a fork of your data graph: the same schema, but with diverging values.\n *\n * The checkout of the branch is applied on all the resolved values.\n *\n * @param name - A unique name for the branch. This identifies the branch\n * and can be used to switch between different branches of the same CoValue.\n * @param owner - The owner of the branch. Determines who can access and modify\n * the branch. If not provided, the branch is owned by the current user.\n *\n * For more info see the [branching](https://jazz.tools/docs/react/using-covalues/version-control) documentation.\n */\n unstable_branch?: BranchDefinition;\n },\n): TSelectorReturn {\n const subscription = useAccountSubscription(AccountSchema, options);\n return useSubscriptionSelector(subscription, options);\n}\n\nexport function useSuspenseAccount<\n A extends AccountClass<Account> | AnyAccountSchema,\n // @ts-expect-error we can't statically enforce the schema's resolve query is a valid resolve query, but in practice it is\n const R extends ResolveQuery<A> = SchemaResolveQuery<A>,\n TSelectorReturn = Loaded<A, R>,\n>(\n /** The account schema to use. Defaults to the base Account schema */\n AccountSchema: A = Account as unknown as A,\n /** Optional configuration for the subscription */\n options?: {\n /** Resolve query to specify which nested CoValues to load from the account */\n resolve?: ResolveQueryStrict<A, R>;\n /** Select which value to return from the account data */\n select?: (account: Loaded<A, R>) => TSelectorReturn;\n /** Equality function to determine if the selected value has changed, defaults to `Object.is` */\n equalityFn?: (a: TSelectorReturn, b: TSelectorReturn) => boolean;\n /**\n * Create or load a branch for isolated editing.\n *\n * Branching lets you take a snapshot of the current state and start modifying it without affecting the canonical/shared version.\n * It's a fork of your data graph: the same schema, but with diverging values.\n *\n * The checkout of the branch is applied on all the resolved values.\n *\n * @param name - A unique name for the branch. This identifies the branch\n * and can be used to switch between different branches of the same CoValue.\n * @param owner - The owner of the branch. Determines who can access and modify\n * the branch. If not provided, the branch is owned by the current user.\n *\n * For more info see the [branching](https://jazz.tools/docs/react/using-covalues/version-control) documentation.\n */\n unstable_branch?: BranchDefinition;\n },\n): TSelectorReturn {\n const subscription = useAccountSubscription(AccountSchema, options);\n\n if (!subscription) {\n throw new Error(\n \"Subscription not found, are you using useSuspenseAccount in guest mode?\",\n );\n }\n\n use(subscription.getCachedPromise());\n\n return useSubscriptionSelector(subscription, options);\n}\n\n/**\n * Returns a function for logging out of the current account.\n */\nexport function useLogOut(): () => void {\n const contextManager = useJazzContext();\n return contextManager.logOut;\n}\n\n/**\n * React hook for accessing the current agent. An agent can either be:\n * - an Authenticated Account, if the user is logged in\n * - an Anonymous Account, if the user didn't log in\n * - or an anonymous agent, if in guest mode\n *\n * The agent can be used as the `loadAs` parameter for load and subscribe methods.\n */\nexport function useAgent<\n A extends AccountClass<Account> | AnyAccountSchema = typeof Account,\n>(): AnonymousJazzAgent | Loaded<A, true> {\n const contextManager = useJazzContext<InstanceOfSchema<A>>();\n\n const getCurrentValue = () =>\n getCurrentAccountFromContextManager(contextManager) as\n | AnonymousJazzAgent\n | Loaded<A, true>;\n\n return React.useSyncExternalStore(\n useCallback(\n (callback) => {\n return contextManager.subscribe(callback);\n },\n [contextManager],\n ),\n getCurrentValue,\n getCurrentValue,\n );\n}\n\nexport function experimental_useInboxSender<\n I extends CoValue,\n O extends CoValue | undefined,\n>(inboxOwnerID: string | undefined) {\n const context = useJazzContextValue();\n\n if (!(\"me\" in context)) {\n throw new Error(\n \"useInboxSender can't be used in a JazzProvider with auth === 'guest'.\",\n );\n }\n\n const me = context.me;\n const inboxRef = useRef<Promise<InboxSender<I, O>> | undefined>(undefined);\n\n const sendMessage = useCallback(\n async (message: I) => {\n if (!inboxOwnerID) throw new Error(\"Inbox owner ID is required\");\n\n if (!inboxRef.current) {\n const inbox = InboxSender.load<I, O>(inboxOwnerID, me);\n inboxRef.current = inbox;\n }\n\n let inbox = await inboxRef.current;\n\n // Regenerate the InboxSender if the inbox owner or current account changes\n if (inbox.owner.id !== inboxOwnerID || inbox.currentAccount !== me) {\n const req = InboxSender.load<I, O>(inboxOwnerID, me);\n inboxRef.current = req;\n inbox = await req;\n }\n\n return inbox.sendMessage(message);\n },\n [inboxOwnerID, me.$jazz.id],\n );\n\n return sendMessage;\n}\n\n/**\n * Hook that returns the current connection status to the Jazz sync server.\n *\n * @returns `true` when connected to the server, `false` when disconnected\n *\n * @remarks\n * On connection drop, this hook will return `false` only when Jazz detects the disconnection\n * after 5 seconds of not receiving a ping from the server.\n */\nexport function useSyncConnectionStatus() {\n const context = useJazzContextValue();\n\n const connected = useSyncExternalStore(\n useCallback(\n (callback) => {\n return context.addConnectionListener(callback);\n },\n [context],\n ),\n () => context.connected(),\n () => context.connected(),\n );\n\n return connected;\n}\n\nfunction getResolveQuery(\n Schema: CoValueClassOrSchema,\n // We don't need type validation here, since this is an internal API\n resolveQuery?: ResolveQuery<any>,\n): ResolveQuery<any> {\n if (resolveQuery) {\n return resolveQuery;\n }\n // Check the schema is a CoValue schema (and not a CoValue class)\n if (\"resolveQuery\" in Schema) {\n return Schema.resolveQuery;\n }\n return true;\n}\n\n/**\n * Internal hook that suspends until all values are loaded.\n *\n * - Creates a Promise.all from individual getCachedPromise() calls\n * - Returns Promise.resolve(null) for null subscriptions (undefined/null IDs)\n * - Suspends via the use() hook until all values are loaded\n */\nfunction useSuspendUntilLoaded(\n subscriptions: (SubscriptionScope<CoValue> | null)[],\n): void {\n const combinedPromise = useMemo(() => {\n const promises = subscriptions.map((sub) => {\n if (!sub) {\n // For null subscriptions (undefined/null IDs), resolve immediately with null\n return Promise.resolve(null);\n }\n return sub.getCachedPromise();\n });\n\n return Promise.all(promises);\n }, [subscriptions]);\n\n use(combinedPromise);\n}\n\n/**\n * Internal hook that uses useSyncExternalStore to subscribe to multiple SubscriptionScopes.\n *\n * - Creates a combined subscribe function that subscribes to all scopes\n * - Returns an array of current values from each scope\n * - Maintains stable references for unchanged values\n *\n * @param subscriptions - Array of SubscriptionScope instances (or null for skipped entries)\n * @returns Array of loaded CoValues (or null for skipped entries)\n */\nfunction useSubscriptionsSelector<\n T extends CoValue[] | MaybeLoaded<CoValue>[],\n // Selector input can be an already loaded or a maybe-loaded value,\n // depending on whether a suspense hook is used or not, respectively.\n TSelectorInput = T[number],\n TSelectorReturn = TSelectorInput,\n>(\n subscriptions: SubscriptionScope<CoValue>[],\n options?: {\n select?: (value: TSelectorInput) => TSelectorReturn;\n equalityFn?: (a: TSelectorReturn, b: TSelectorReturn) => boolean;\n },\n): TSelectorReturn[] {\n // Combined subscribe function that subscribes to all scopes\n const subscribe = useCallback(\n (callback: () => void) => {\n const unsubscribes = subscriptions.map((sub) => sub.subscribe(callback));\n\n return () => {\n unsubscribes.forEach((unsub) => unsub());\n };\n },\n [subscriptions],\n );\n\n // Cache current values to avoid infinite loops\n const cachedCurrentValuesRef = useRef<T>([] as unknown as T);\n const getCurrentValues = useCallback(() => {\n const newValues = subscriptions.map((sub) => sub.getCurrentValue());\n\n // Check if values have changed by comparing each element\n const cached = cachedCurrentValuesRef.current;\n const hasChanged =\n cached.length !== newValues.length ||\n newValues.some((value, index) => value !== cached[index]);\n\n if (hasChanged) {\n cachedCurrentValuesRef.current = newValues as T;\n }\n\n return cachedCurrentValuesRef.current as unknown as TSelectorInput[];\n }, [subscriptions]);\n\n const selectFn = useMemo(() => {\n if (!options?.select) {\n return (values: TSelectorInput[]) =>\n values as unknown as TSelectorReturn[];\n }\n return (values: TSelectorInput[]) =>\n values.map((value) => options.select!(value));\n }, [options?.select]);\n\n const elementEqualityFn = useMemo(\n () => options?.equalityFn ?? Object.is,\n [options?.equalityFn],\n );\n const equalityFn = useMemo(() => {\n return (a: TSelectorReturn[], b: TSelectorReturn[]) =>\n a.length === b.length &&\n a.every((value, index) => elementEqualityFn(value, b[index]));\n }, [elementEqualityFn]);\n\n return useSyncExternalStoreWithSelector(\n subscribe,\n getCurrentValues,\n getCurrentValues,\n selectFn,\n equalityFn,\n );\n}\n\n/**\n * Subscribe to multiple CoValues with unified Suspense handling.\n *\n * This hook accepts a list of CoValue IDs and returns an array of loaded values,\n * suspending until all values are available.\n *\n * @param Schema - The CoValue schema or class constructor\n * @param ids - Array of CoValue IDs to subscribe to\n * @param options - Optional configuration, including resolve query\n * @returns An array of loaded CoValues in the same order as the input IDs\n */\nexport function useSuspenseCoStates<\n S extends CoValueClassOrSchema,\n // @ts-expect-error we can't statically enforce the schema's resolve query is a valid resolve query, but in practice it is\n const R extends ResolveQuery<S> = SchemaResolveQuery<S>,\n TSelectorReturn = Loaded<S, R>,\n>(\n Schema: S,\n ids: readonly string[],\n options?: {\n /** Resolve query to specify which nested CoValues to load */\n resolve?: ResolveQueryStrict<S, R>;\n /** Select which value to return. Applies to each element individually. */\n select?: (value: Loaded<S, R>) => TSelectorReturn;\n /** Equality function to determine if a selected value has changed, defaults to `Object.is` */\n equalityFn?: (a: TSelectorReturn, b: TSelectorReturn) => boolean;\n /**\n * Create or load a branch for isolated editing.\n *\n * Branching lets you take a snapshot of the current state and start modifying it without affecting the canonical/shared version.\n * It's a fork of your data graph: the same schema, but with diverging values.\n *\n * The checkout of the branch is applied on all the resolved values.\n *\n * @param name - A unique name for the branch. This identifies the branch\n * and can be used to switch between different branches of the same CoValue.\n * @param owner - The owner of the branch. Determines who can access and modify\n * the branch. If not provided, the branch is owned by the current user.\n *\n * For more info see the [branching](https://jazz.tools/docs/react/using-covalues/version-control) documentation.\n */\n unstable_branch?: BranchDefinition;\n },\n): TSelectorReturn[] {\n const resolve = getResolveQuery(Schema, options?.resolve);\n const subscriptionScopes = useCoValueSubscriptions(\n Schema,\n ids,\n resolve,\n options?.unstable_branch,\n ) as SubscriptionScope<CoValue>[];\n useSuspendUntilLoaded(subscriptionScopes);\n return useSubscriptionsSelector(subscriptionScopes, options);\n}\n\n/**\n * Subscribe to multiple CoValues without Suspense.\n *\n * This hook accepts a list of CoValue IDs and returns an array of maybe-loaded values.\n * Unlike `useSuspenseCoStates`, this hook does not suspend and returns loading/unavailable\n * states that can be checked via the `$isLoaded` property.\n *\n * @param Schema - The CoValue schema or class constructor\n * @param ids - Array of CoValue IDs to subscribe to\n * @param options - Optional configuration, including resolve query\n * @returns An array of MaybeLoaded CoValues in the same order as the input IDs\n *\n * @example\n * ```typescript\n * const [project1, project2] = useCoStates(\n * ProjectSchema,\n * [projectId1, projectId2],\n * { resolve: { assignee: true } }\n * );\n *\n * if (!project1.$isLoaded || !project2.$isLoaded) {\n * return <Loading />;\n * }\n * ```\n */\nexport function useCoStates<\n S extends CoValueClassOrSchema,\n // @ts-expect-error we can't statically enforce the schema's resolve query is a valid resolve query, but in practice it is\n const R extends ResolveQuery<S> = SchemaResolveQuery<S>,\n TSelectorReturn = MaybeLoaded<Loaded<S, R>>,\n>(\n Schema: S,\n ids: readonly string[],\n options?: {\n /** Resolve query to specify which nested CoValues to load */\n resolve?: ResolveQueryStrict<S, R>;\n /** Select which value to return. Applies to each element individually. */\n select?: (value: MaybeLoaded<Loaded<S, R>>) => TSelectorReturn;\n /** Equality function to determine if a selected value has changed, defaults to `Object.is` */\n equalityFn?: (a: TSelectorReturn, b: TSelectorReturn) => boolean;\n /**\n * Create or load a branch for isolated editing.\n *\n * Branching lets you take a snapshot of the current state and start modifying it without affecting the canonical/shared version.\n * It's a fork of your data graph: the same schema, but with diverging values.\n *\n * The checkout of the branch is applied on all the resolved values.\n *\n * @param name - A unique name for the branch. This identifies the branch\n * and can be used to switch between different branches of the same CoValue.\n * @param owner - The owner of the branch. Determines who can access and modify\n * the branch. If not provided, the branch is owned by the current user.\n *\n * For more info see the [branching](https://jazz.tools/docs/react/using-covalues/version-control) documentation.\n */\n unstable_branch?: BranchDefinition;\n },\n): TSelectorReturn[] {\n const resolve = getResolveQuery(Schema, options?.resolve);\n const subscriptionScopes = useCoValueSubscriptions(\n Schema,\n ids,\n resolve,\n options?.unstable_branch,\n ) as SubscriptionScope<CoValue>[];\n return useSubscriptionsSelector(subscriptionScopes, options);\n}\n","import { Account, JazzContextManager } from \"jazz-tools\";\n\nexport function getCurrentAccountFromContextManager<Acc extends Account>(\n contextManager: JazzContextManager<Acc, any>,\n) {\n const context = contextManager.getCurrentValue();\n\n if (!context) {\n throw new Error(\"No context found\");\n }\n\n return \"me\" in context ? context.me : context.guest;\n}\n\nexport function subscribeToContextManager<Acc extends Account>(\n contextManager: JazzContextManager<Acc, any>,\n callback: () => () => void,\n) {\n let unsub = () => {};\n\n const handler = () => {\n unsub();\n unsub = callback();\n };\n\n handler();\n return contextManager.subscribe(handler);\n}\n","import React from \"react\";\n\n// shim from https://github.com/pmndrs/jotai/blob/f287c5d665a807e676bc731e83174c62c1fe1fc9/src/react/useAtomValue.ts#L13C1-L56C1\nconst attachPromiseStatus = <T>(\n promise: PromiseLike<T> & {\n status?: \"pending\" | \"fulfilled\" | \"rejected\";\n value?: T;\n reason?: unknown;\n },\n) => {\n if (!promise.status) {\n promise.status = \"pending\";\n promise.then(\n (v) => {\n promise.status = \"fulfilled\";\n promise.value = v;\n },\n (e) => {\n promise.status = \"rejected\";\n promise.reason = e;\n },\n );\n }\n};\n\nexport const use =\n React.use ||\n // A shim for older React versions\n (<T>(\n promise: PromiseLike<T> & {\n status?: \"pending\" | \"fulfilled\" | \"rejected\";\n value?: T;\n reason?: unknown;\n },\n ): T => {\n if (promise.status === \"pending\") {\n throw promise;\n } else if (promise.status === \"fulfilled\") {\n return promise.value as T;\n } else if (promise.status === \"rejected\") {\n throw promise.reason;\n } else {\n attachPromiseStatus(promise);\n throw promise;\n }\n });\n","import React from \"react\";\nimport {\n Account,\n AccountClass,\n AnyAccountSchema,\n CoValueClassOrSchema,\n CoValueLoadingState,\n Loaded,\n MaybeLoaded,\n ResolveQuery,\n ResolveQueryStrict,\n} from \"jazz-tools\";\nimport {\n useAccountSubscription,\n useCoValueSubscription,\n useSubscriptionSelector,\n} from \"./hooks.js\";\nimport type { CoValueSubscription } from \"./types.js\";\n\nexport function createCoValueSubscriptionContext<\n S extends CoValueClassOrSchema,\n const R extends ResolveQuery<S> = true,\n>(schema: S, resolve?: ResolveQueryStrict<S, R>) {\n const Context = React.createContext<CoValueSubscription<S, R>>(null);\n\n return {\n Provider: ({\n id,\n options,\n loadingFallback,\n unavailableFallback,\n children,\n }: React.PropsWithChildren<{\n id: string | undefined | null;\n options?: Omit<\n Parameters<typeof useCoValueSubscription<S, R>>[2],\n \"resolve\"\n >;\n loadingFallback?: React.ReactNode;\n unavailableFallback?: React.ReactNode;\n }>) => {\n const subscription = useCoValueSubscription(schema, id, {\n ...options,\n resolve: resolve,\n });\n\n const loadState = useSubscriptionSelector(subscription, {\n select: (value) => value.$jazz.loadingState,\n });\n\n if (loadState === CoValueLoadingState.LOADING) {\n return loadingFallback ?? null;\n }\n if (\n loadState === CoValueLoadingState.UNAUTHORIZED ||\n loadState === CoValueLoadingState.UNAVAILABLE\n ) {\n return unavailableFallback ?? null;\n }\n\n return (\n <Context.Provider value={subscription}>{children}</Context.Provider>\n );\n },\n useSelector: <TSelectorReturn = Loaded<S, R>>(options?: {\n select?: (value: Loaded<S, R>) => TSelectorReturn;\n equalityFn?: (a: TSelectorReturn, b: TSelectorReturn) => boolean;\n }) => {\n const subscription = React.useContext(Context);\n\n if (!subscription) {\n throw new Error(\n \"useSelector must be used within a coValue subscription provider\",\n );\n }\n\n return useSubscriptionSelector<S, R, TSelectorReturn>(\n subscription,\n options as Parameters<\n typeof useSubscriptionSelector<S, R, TSelectorReturn>\n >[1],\n );\n },\n };\n}\n\nexport function createAccountSubscriptionContext<\n A extends AccountClass<Account> | AnyAccountSchema,\n const R extends ResolveQuery<A> = true,\n>(schema: A, resolve?: ResolveQueryStrict<A, R>) {\n const Context = React.createContext<CoValueSubscription<A, R>>(null);\n\n return {\n Provider: ({\n options,\n loadingFallback,\n unavailableFallback,\n children,\n }: React.PropsWithChildren<{\n options?: Omit<\n Parameters<typeof useAccountSubscription<A, R>>[1],\n \"resolve\"\n >;\n loadingFallback?: React.ReactNode;\n unavailableFallback?: React.ReactNode;\n }>) => {\n const subscription = useAccountSubscription(schema, {\n ...options,\n resolve: resolve,\n });\n\n const loadState = useSubscriptionSelector(subscription, {\n select: (value) => value.$jazz.loadingState,\n });\n\n if (loadState === CoValueLoadingState.LOADING) {\n return loadingFallback ?? null;\n }\n\n if (\n loadState === CoValueLoadingState.UNAUTHORIZED ||\n loadState === CoValueLoadingState.UNAVAILABLE\n ) {\n return unavailableFallback ?? null;\n }\n\n return (\n <Context.Provider value={subscription}>{children}</Context.Provider>\n );\n },\n useSelector: <TSelectorReturn = Loaded<A, R>>(options?: {\n select?: (value: Loaded<A, R>) => TSelectorReturn;\n equalityFn?: (a: TSelectorReturn, b: TSelectorReturn) => boolean;\n }) => {\n const subscription = React.useContext(Context);\n\n if (!subscription) {\n throw new Error(\n \"useSelector must be used within an account subscription provider\",\n );\n }\n\n return useSubscriptionSelector<A, R, TSelectorReturn>(\n subscription,\n options as Parameters<\n typeof useSubscriptionSelector<A, R, TSelectorReturn>\n >[1],\n );\n },\n };\n}\n","import { DemoAuth } from \"jazz-tools\";\nimport { useEffect, useMemo, useState } from \"react\";\nimport { useAuthSecretStorage, useJazzContextValue } from \"../hooks.js\";\nimport { useIsAuthenticated } from \"../hooks.js\";\n\n/**\n * `useDemoAuth` is a hook that provides a `JazzAuth` object for demo authentication.\n *\n *\n * ```ts\n * const { state, logIn, signUp, existingUsers } = useDemoAuth();\n * ```\n *\n * @category Auth Providers\n */\nexport function useDemoAuth() {\n const context = useJazzContextValue();\n const authSecretStorage = useAuthSecretStorage();\n\n if (\"guest\" in context) {\n throw new Error(\"Demo auth is not supported in guest mode\");\n }\n\n const authMethod = useMemo(() => {\n return new DemoAuth(context.authenticate, authSecretStorage);\n }, []);\n\n const isAuthenticated = useIsAuthenticated();\n const [existingUsers, setExistingUsers] = useState<string[]>([]);\n\n useEffect(() => {\n authMethod.getExistingUsers().then(setExistingUsers);\n }, [authMethod]);\n\n function handleSignUp(username: string) {\n return authMethod.signUp(username).then(() => {\n setExistingUsers(existingUsers.concat([username]));\n });\n }\n\n return {\n state: isAuthenticated ? \"signedIn\" : \"anonymous\",\n logIn: authMethod.logIn,\n signUp: handleSignUp,\n existingUsers,\n } as const;\n}\n","import { PassphraseAuth } from \"jazz-tools\";\nimport { useCallback, useMemo, useSyncExternalStore } from \"react\";\nimport { useAuthSecretStorage, useJazzContextValue } from \"../hooks.js\";\nimport { useIsAuthenticated } from \"../hooks.js\";\n\n/**\n * `usePassphraseAuth` hook provides a `JazzAuth` object for passphrase authentication.\n *\n * @example\n * ```ts\n * const auth = usePassphraseAuth({ appName, appHostname, wordlist });\n * ```\n *\n * @category Auth Providers\n */\nexport function usePassphraseAuth({ wordlist }: { wordlist: string[] }) {\n const context = useJazzContextValue();\n const authSecretStorage = useAuthSecretStorage();\n\n if (\"guest\" in context) {\n throw new Error(\"Passphrase auth is not supported in guest mode\");\n }\n\n const authMethod = useMemo(() => {\n return new PassphraseAuth(\n context.node.crypto,\n context.authenticate,\n context.register,\n authSecretStorage,\n wordlist,\n );\n }, [wordlist]);\n\n const passphrase = useSyncExternalStore(\n useCallback(\n (callback) => {\n authMethod.loadCurrentAccountPassphrase();\n return authMethod.subscribe(callback);\n },\n [authMethod],\n ),\n () => authMethod.passphrase,\n );\n\n const isAuthenticated = useIsAuthenticated();\n return {\n state: isAuthenticated ? \"signedIn\" : \"anonymous\",\n logIn: authMethod.logIn,\n signUp: authMethod.signUp,\n registerNewAccount: authMethod.registerNewAccount,\n generateRandomPassphrase: authMethod.generateRandomPassphrase,\n passphrase,\n } as const;\n}\n"],"mappings":";;;;;;AAAA,SAAS,wCAAwC;AACjD,OAAOA;AAAA,EACL;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAEP;AAAA,EACE;AAAA,EAMA;AAAA,EAEA;AAAA,EAUA;AAAA,EACA;AAAA,EACA;AAAA,OAEK;;;AC9BA,SAAS,oCACd,gBACA;AACA,QAAM,UAAU,eAAe,gBAAgB;AAE/C,MAAI,CAAC,SAAS;AACZ,UAAM,IAAI,MAAM,kBAAkB;AAAA,EACpC;AAEA,SAAO,QAAQ,UAAU,QAAQ,KAAK,QAAQ;AAChD;;;ACZA,OAAO,WAAW;AAGlB,IAAM,sBAAsB,CAC1B,YAKG;AACH,MAAI,CAAC,QAAQ,QAAQ;AACnB,YAAQ,SAAS;AACjB,YAAQ;AAAA,MACN,CAAC,MAAM;AACL,gBAAQ,SAAS;AACjB,gBAAQ,QAAQ;AAAA,MAClB;AAAA,MACA,CAAC,MAAM;AACL,gBAAQ,SAAS;AACjB,gBAAQ,SAAS;AAAA,MACnB;AAAA,IACF;AAAA,EACF;AACF;AAEO,IAAM,MACX,MAAM;AAAA,CAEL,CACC,YAKM;AACN,MAAI,QAAQ,WAAW,WAAW;AAChC,UAAM;AAAA,EACR,WAAW,QAAQ,WAAW,aAAa;AACzC,WAAO,QAAQ;AAAA,EACjB,WAAW,QAAQ,WAAW,YAAY;AACxC,UAAM,QAAQ;AAAA,EAChB,OAAO;AACL,wBAAoB,OAAO;AAC3B,UAAM;AAAA,EACR;AACF;;;AFPK,SAAS,iBAAsC;AACpD,QAAM,QAAQ,WAAW,WAAW;AAEpC,MAAI,CAAC,OAAO;AACV,UAAM,IAAI;AAAA,MACR;AAAA,IACF;AAAA,EACF;AAEA,SAAO;AACT;AAEO,SAAS,sBAA2C;AACzD,QAAM,iBAAiB,eAAoB;AAE3C,QAAM,UAAU;AAAA,IACd;AAAA,MACE,CAAC,aAAa;AACZ,eAAO,eAAe,UAAU,QAAQ;AAAA,MAC1C;AAAA,MACA,CAAC,cAAc;AAAA,IACjB;AAAA,IACA,MAAM,eAAe,gBAAgB;AAAA,IACrC,MAAM,eAAe,gBAAgB;AAAA,EACvC;AAEA,MAAI,CAAC,SAAS;AACZ,UAAM,IAAI;AAAA,MACR;AAAA,IACF;AAAA,EACF;AAEA,SAAO;AACT;AAEO,SAAS,uBAAuB;AACrC,SAAO,eAAe,EAAE,qBAAqB;AAC/C;AAEO,SAAS,qBAAqB;AACnC,QAAM,oBAAoB,qBAAqB;AAE/C,SAAO;AAAA,IACL;AAAA,MACE,CAAC,aAAa;AACZ,eAAO,kBAAkB,SAAS,QAAQ;AAAA,MAC5C;AAAA,MACA,CAAC,iBAAiB;AAAA,IACpB;AAAA,IACA,MAAM,kBAAkB;AAAA,IACxB,MAAM,kBAAkB;AAAA,EAC1B;AACF;AAEO,SAAS,uBAKd,QACA,IACA,SAIkC;AAClC,QAAM,UAAU,gBAAgB,QAAQ,SAAS,OAAO;AACxD,QAAM,gBAAgB;AAAA,IACpB;AAAA,IACA,CAAC,EAAE;AAAA,IACH;AAAA,IACA,SAAS;AAAA,EACX;AACA,SAAQ,cAAc,CAAC,KAAK;AAC9B;AAyBA,SAAS,wBACP,QACA,KACA,SACA,QACuC;AACvC,QAAM,iBAAiB,eAAe;AACtC,QAAM,QAAQ,SAAS;AAEvB,QAAM,cAAc,QAAQ,MAAM,aAAa,GAAG,CAAC,CAAC;AAEpD,QAAM,yBAAyB,MAA0B;AACvD,UAAM,OAAO,eAAe,gBAAgB,EAAG;AAC/C,UAAM,QAAQ,eAAe,0BAA0B;AAEvD,UAAM,gBAAgB,IAAI,IAAI,CAAC,OAAO;AACpC,UAAI,OAAO,UAAa,OAAO,MAAM;AACnC,eAAO;AAAA,MACT;AAEA,YAAM,eAAe,MAAM;AAAA,QACzB;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAEA,UAAI,aAAa;AACf,qBAAa,cAAc;AAAA,MAC7B;AAEA,aAAO;AAAA,IACT,CAAC;AAED,WAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,YAAY,QAAQ;AAAA,MACpB,eAAe,QAAQ,OAAO,MAAM;AAAA,IACtC;AAAA,EACF;AAEA,QAAM,WAAWC,OAAM,OAAkC,IAAI;AAC7D,QAAM,mBAAmB,uBAAuB;AAEhD,QAAM,QAAQ,SAAS;AAGvB,QAAM,yBACJ,iBAAiB,cAAc,WAAW,OAAO,cAAc,UAC/D,iBAAiB,cAAc;AAAA,IAC7B,CAACC,mBAAkB,UACjBA,sBAAqB,MAAM,cAAc,KAAK;AAAA,EAClD;AAEF,MAAI,wBAAwB;AAC1B,aAAS,UAAU;AAAA,EACrB;AAEA,SAAO,SAAS,QAAS;AAC3B;AAEA,SAAS,wBACP,IACA,SACA;AACA,QAAM,QAAQ,SAAS;AACvB,QAAM,kBAAkB,OAA4B,IAAI;AACxD,MAAI,WAAW,gBAAgB,YAAY,SAAS,IAAI;AACtD,QAAI,QAAQ,OAAO,IAAI;AACrB,0BAAoB,QAAQ,eAAe,KAAK;AAAA,IAClD,OAAO;AACL,cAAQ,KAAK,uDAAuD;AAAA,IACtE;AAEA,oBAAgB,UAAU;AAAA,EAC5B;AACF;AAEA,SAAS,mBACP,cACA;AACA,SAAO,YAAY,MAAM;AACvB,QAAI,CAAC,cAAc;AACjB,aAAO,4BAA4B,oBAAoB,WAAW;AAAA,IACpE;AAEA,WAAO,aAAa,gBAAgB;AAAA,EACtC,GAAG,CAAC,YAAY,CAAC;AACnB;AA+JO,SAAS,WAOd,QAEA,IAEA,SAyBiB;AACjB,0BAAwB,IAAI,SAAS,SAAS;AAC9C,QAAM,eAAe,uBAAuB,QAAQ,IAAI,OAAO;AAC/D,SAAO,wBAAwB,cAAc,OAAO;AACtD;AAEO,SAAS,mBAOd,QAEA,IAEA,SAyBiB;AACjB,0BAAwB,IAAI,SAAS,SAAS;AAE9C,QAAM,eAAe,uBAAuB,QAAQ,IAAI,OAAO;AAE/D,MAAI,CAAC,cAAc;AACjB,UAAM,IAAI,MAAM,wBAAwB;AAAA,EAC1C;AAEA,MAAI,aAAa,iBAAiB,CAAC;AAEnC,SAAO,wBAAwB,cAAc,OAAO;AACtD;AASO,SAAS,wBASd,cACA,SAIiB;AACjB,QAAM,kBAAkB,mBAAmB,YAAY;AAEvD,SAAO;AAAA,IACLD,OAAM;AAAA,MACJ,CAAC,aAAa;AACZ,YAAI,CAAC,cAAc;AACjB,iBAAO,MAAM;AAAA,UAAC;AAAA,QAChB;AAEA,eAAO,aAAa,UAAU,QAAQ;AAAA,MACxC;AAAA,MACA,CAAC,YAAY;AAAA,IACf;AAAA,IACA;AAAA,IACA;AAAA,IACA,SAAS,WAAW,CAAC,UAAU;AAAA,IAC/B,SAAS,cAAc,OAAO;AAAA,EAChC;AACF;AAEO,SAAS,uBAKd,QACA,SAIA;AACA,QAAM,iBAAiB,eAAe;AAGtC,QAAM,cAAc,QAAQ,MAAM,aAAa,GAAG,CAAC,CAAC;AAEpD,QAAM,qBAAqB,MAAM;AAC/B,UAAM,QAAQ,oCAAoC,cAAc;AAEhE,QAAI,MAAM,WAAW,aAAa;AAChC,aAAO;AAAA,QACL,cAAc;AAAA,QACd;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAEA,UAAM,UAAU,gBAAgB,QAAQ,SAAS,OAAO;AAExD,UAAM,OAAO,eAAe,gBAAgB,EAAG;AAC/C,UAAM,QAAQ,eAAe,0BAA0B;AACvD,UAAME,gBAAe,MAAM;AAAA,MACzB;AAAA,MACA;AAAA,MACA,MAAM,MAAM;AAAA,MACZ;AAAA,MACA;AAAA,MACA;AAAA,MACA,SAAS;AAAA,IACX;AAGA,QAAI,aAAa;AACf,MAAAA,cAAa,cAAc;AAAA,IAC7B;AAEA,WAAO;AAAA,MACL,cAAAA;AAAA,MACA;AAAA,MACA;AAAA,MACA,YAAY,SAAS,iBAAiB;AAAA,MACtC,eAAe,SAAS,iBAAiB,OAAO,MAAM;AAAA,IACxD;AAAA,EACF;AAEA,QAAM,CAAC,cAAc,eAAe,IAAIF,OAAM,SAAS,kBAAkB;AAEzE,QAAM,aAAa,SAAS,iBAAiB;AAC7C,QAAM,gBAAgB,SAAS,iBAAiB,OAAO,MAAM;AAE7D,EAAAA,OAAM,gBAAgB,MAAM;AAC1B,QACE,aAAa,mBAAmB,kBAChC,aAAa,WAAW,UACxB,aAAa,eAAe,SAAS,iBAAiB,QACtD,aAAa,kBAAkB,SAAS,iBAAiB,OAAO,MAAM,IACtE;AAEA,sBAAgB,mBAAmB,CAAC;AAAA,IACtC;AAEA,WAAO,eAAe,UAAU,MAAM;AAEpC,sBAAgB,mBAAmB,CAAC;AAAA,IACtC,CAAC;AAAA,EACH,GAAG,CAAC,QAAQ,gBAAgB,YAAY,aAAa,CAAC;AAEtD,SAAO,aAAa;AACtB;AA2FO,SAAS,WAOd,gBAAmB,SAEnB,SAwBiB;AACjB,QAAM,eAAe,uBAAuB,eAAe,OAAO;AAClE,SAAO,wBAAwB,cAAc,OAAO;AACtD;AAEO,SAAS,mBAOd,gBAAmB,SAEnB,SAwBiB;AACjB,QAAM,eAAe,uBAAuB,eAAe,OAAO;AAElE,MAAI,CAAC,cAAc;AACjB,UAAM,IAAI;AAAA,MACR;AAAA,IACF;AAAA,EACF;AAEA,MAAI,aAAa,iBAAiB,CAAC;AAEnC,SAAO,wBAAwB,cAAc,OAAO;AACtD;AAKO,SAAS,YAAwB;AACtC,QAAM,iBAAiB,eAAe;AACtC,SAAO,eAAe;AACxB;AAUO,SAAS,WAE0B;AACxC,QAAM,iBAAiB,eAAoC;AAE3D,QAAM,kBAAkB,MACtB,oCAAoC,cAAc;AAIpD,SAAOA,OAAM;AAAA,IACX;AAAA,MACE,CAAC,aAAa;AACZ,eAAO,eAAe,UAAU,QAAQ;AAAA,MAC1C;AAAA,MACA,CAAC,cAAc;AAAA,IACjB;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;AAEO,SAAS,4BAGd,cAAkC;AAClC,QAAM,UAAU,oBAAoB;AAEpC,MAAI,EAAE,QAAQ,UAAU;AACtB,UAAM,IAAI;AAAA,MACR;AAAA,IACF;AAAA,EACF;AAEA,QAAM,KAAK,QAAQ;AACnB,QAAM,WAAW,OAA+C,MAAS;AAEzE,QAAM,cAAc;AAAA,IAClB,OAAO,YAAe;AACpB,UAAI,CAAC,aAAc,OAAM,IAAI,MAAM,4BAA4B;AAE/D,UAAI,CAAC,SAAS,SAAS;AACrB,cAAMG,SAAQ,YAAY,KAAW,cAAc,EAAE;AACrD,iBAAS,UAAUA;AAAA,MACrB;AAEA,UAAI,QAAQ,MAAM,SAAS;AAG3B,UAAI,MAAM,MAAM,OAAO,gBAAgB,MAAM,mBAAmB,IAAI;AAClE,cAAM,MAAM,YAAY,KAAW,cAAc,EAAE;AACnD,iBAAS,UAAU;AACnB,gBAAQ,MAAM;AAAA,MAChB;AAEA,aAAO,MAAM,YAAY,OAAO;AAAA,IAClC;AAAA,IACA,CAAC,cAAc,GAAG,MAAM,EAAE;AAAA,EAC5B;AAEA,SAAO;AACT;AAWO,SAAS,0BAA0B;AACxC,QAAM,UAAU,oBAAoB;AAEpC,QAAM,YAAY;AAAA,IAChB;AAAA,MACE,CAAC,aAAa;AACZ,eAAO,QAAQ,sBAAsB,QAAQ;AAAA,MAC/C;AAAA,MACA,CAAC,OAAO;AAAA,IACV;AAAA,IACA,MAAM,QAAQ,UAAU;AAAA,IACxB,MAAM,QAAQ,UAAU;AAAA,EAC1B;AAEA,SAAO;AACT;AAEA,SAAS,gBACP,QAEA,cACmB;AACnB,MAAI,cAAc;AAChB,WAAO;AAAA,EACT;AAEA,MAAI,kBAAkB,QAAQ;AAC5B,WAAO,OAAO;AAAA,EAChB;AACA,SAAO;AACT;AASA,SAAS,sBACP,eACM;AACN,QAAM,kBAAkB,QAAQ,MAAM;AACpC,UAAM,WAAW,cAAc,IAAI,CAAC,QAAQ;AAC1C,UAAI,CAAC,KAAK;AAER,eAAO,QAAQ,QAAQ,IAAI;AAAA,MAC7B;AACA,aAAO,IAAI,iBAAiB;AAAA,IAC9B,CAAC;AAED,WAAO,QAAQ,IAAI,QAAQ;AAAA,EAC7B,GAAG,CAAC,aAAa,CAAC;AAElB,MAAI,eAAe;AACrB;AAYA,SAAS,yBAOP,eACA,SAImB;AAEnB,QAAM,YAAY;AAAA,IAChB,CAAC,aAAyB;AACxB,YAAM,eAAe,cAAc,IAAI,CAAC,QAAQ,IAAI,UAAU,QAAQ,CAAC;AAEvE,aAAO,MAAM;AACX,qBAAa,QAAQ,CAAC,UAAU,MAAM,CAAC;AAAA,MACzC;AAAA,IACF;AAAA,IACA,CAAC,aAAa;AAAA,EAChB;AAGA,QAAM,yBAAyB,OAAU,CAAC,CAAiB;AAC3D,QAAM,mBAAmB,YAAY,MAAM;AACzC,UAAM,YAAY,cAAc,IAAI,CAAC,QAAQ,IAAI,gBAAgB,CAAC;AAGlE,UAAM,SAAS,uBAAuB;AACtC,UAAM,aACJ,OAAO,WAAW,UAAU,UAC5B,UAAU,KAAK,CAAC,OAAO,UAAU,UAAU,OAAO,KAAK,CAAC;AAE1D,QAAI,YAAY;AACd,6BAAuB,UAAU;AAAA,IACnC;AAEA,WAAO,uBAAuB;AAAA,EAChC,GAAG,CAAC,aAAa,CAAC;AAElB,QAAM,WAAW,QAAQ,MAAM;AAC7B,QAAI,CAAC,SAAS,QAAQ;AACpB,aAAO,CAAC,WACN;AAAA,IACJ;AACA,WAAO,CAAC,WACN,OAAO,IAAI,CAAC,UAAU,QAAQ,OAAQ,KAAK,CAAC;AAAA,EAChD,GAAG,CAAC,SAAS,MAAM,CAAC;AAEpB,QAAM,oBAAoB;AAAA,IACxB,MAAM,SAAS,cAAc,OAAO;AAAA,IACpC,CAAC,SAAS,UAAU;AAAA,EACtB;AACA,QAAM,aAAa,QAAQ,MAAM;AAC/B,WAAO,CAAC,GAAsB,MAC5B,EAAE,WAAW,EAAE,UACf,EAAE,MAAM,CAAC,OAAO,UAAU,kBAAkB,OAAO,EAAE,KAAK,CAAC,CAAC;AAAA,EAChE,GAAG,CAAC,iBAAiB,CAAC;AAEtB,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;AAaO,SAAS,oBAMd,QACA,KACA,SAwBmB;AACnB,QAAM,UAAU,gBAAgB,QAAQ,SAAS,OAAO;AACxD,QAAM,qBAAqB;AAAA,IACzB;AAAA,IACA;AAAA,IACA;AAAA,IACA,SAAS;AAAA,EACX;AACA,wBAAsB,kBAAkB;AACxC,SAAO,yBAAyB,oBAAoB,OAAO;AAC7D;AA2BO,SAAS,YAMd,QACA,KACA,SAwBmB;AACnB,QAAM,UAAU,gBAAgB,QAAQ,SAAS,OAAO;AACxD,QAAM,qBAAqB;AAAA,IACzB;AAAA,IACA;AAAA,IACA;AAAA,IACA,SAAS;AAAA,EACX;AACA,SAAO,yBAAyB,oBAAoB,OAAO;AAC7D;;;AGvmCA,OAAOC,YAAW;AAClB;AAAA,EAKE,uBAAAC;AAAA,OAKK;AAkDC;AA1CD,SAAS,iCAGd,QAAW,SAAoC;AAC/C,QAAM,UAAUC,OAAM,cAAyC,IAAI;AAEnE,SAAO;AAAA,IACL,UAAU,CAAC;AAAA,MACT;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,MAQO;AACL,YAAM,eAAe,uBAAuB,QAAQ,IAAI;AAAA,QACtD,GAAG;AAAA,QACH;AAAA,MACF,CAAC;AAED,YAAM,YAAY,wBAAwB,cAAc;AAAA,QACtD,QAAQ,CAAC,UAAU,MAAM,MAAM;AAAA,MACjC,CAAC;AAED,UAAI,cAAcC,qBAAoB,SAAS;AAC7C,eAAO,mBAAmB;AAAA,MAC5B;AACA,UACE,cAAcA,qBAAoB,gBAClC,cAAcA,qBAAoB,aAClC;AACA,eAAO,uBAAuB;AAAA,MAChC;AAEA,aACE,oBAAC,QAAQ,UAAR,EAAiB,OAAO,cAAe,UAAS;AAAA,IAErD;AAAA,IACA,aAAa,CAAiC,YAGxC;AACJ,YAAM,eAAeD,OAAM,WAAW,OAAO;AAE7C,UAAI,CAAC,cAAc;AACjB,cAAM,IAAI;AAAA,UACR;AAAA,QACF;AAAA,MACF;AAEA,aAAO;AAAA,QACL;AAAA,QACA;AAAA,MAGF;AAAA,IACF;AAAA,EACF;AACF;AAEO,SAAS,iCAGd,QAAW,SAAoC;AAC/C,QAAM,UAAUA,OAAM,cAAyC,IAAI;AAEnE,SAAO;AAAA,IACL,UAAU,CAAC;AAAA,MACT;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,MAOO;AACL,YAAM,eAAe,uBAAuB,QAAQ;AAAA,QAClD,GAAG;AAAA,QACH;AAAA,MACF,CAAC;AAED,YAAM,YAAY,wBAAwB,cAAc;AAAA,QACtD,QAAQ,CAAC,UAAU,MAAM,MAAM;AAAA,MACjC,CAAC;AAED,UAAI,cAAcC,qBAAoB,SAAS;AAC7C,eAAO,mBAAmB;AAAA,MAC5B;AAEA,UACE,cAAcA,qBAAoB,gBAClC,cAAcA,qBAAoB,aAClC;AACA,eAAO,uBAAuB;AAAA,MAChC;AAEA,aACE,oBAAC,QAAQ,UAAR,EAAiB,OAAO,cAAe,UAAS;AAAA,IAErD;AAAA,IACA,aAAa,CAAiC,YAGxC;AACJ,YAAM,eAAeD,OAAM,WAAW,OAAO;AAE7C,UAAI,CAAC,cAAc;AACjB,cAAM,IAAI;AAAA,UACR;AAAA,QACF;AAAA,MACF;AAEA,aAAO;AAAA,QACL;AAAA,QACA;AAAA,MAGF;AAAA,IACF;AAAA,EACF;AACF;;;ACtJA,SAAS,gBAAgB;AACzB,SAAS,WAAW,WAAAE,UAAS,gBAAgB;AActC,SAAS,cAAc;AAC5B,QAAM,UAAU,oBAAoB;AACpC,QAAM,oBAAoB,qBAAqB;AAE/C,MAAI,WAAW,SAAS;AACtB,UAAM,IAAI,MAAM,0CAA0C;AAAA,EAC5D;AAEA,QAAM,aAAaC,SAAQ,MAAM;AAC/B,WAAO,IAAI,SAAS,QAAQ,cAAc,iBAAiB;AAAA,EAC7D,GAAG,CAAC,CAAC;AAEL,QAAM,kBAAkB,mBAAmB;AAC3C,QAAM,CAAC,eAAe,gBAAgB,IAAI,SAAmB,CAAC,CAAC;AAE/D,YAAU,MAAM;AACd,eAAW,iBAAiB,EAAE,KAAK,gBAAgB;AAAA,EACrD,GAAG,CAAC,UAAU,CAAC;AAEf,WAAS,aAAa,UAAkB;AACtC,WAAO,WAAW,OAAO,QAAQ,EAAE,KAAK,MAAM;AAC5C,uBAAiB,cAAc,OAAO,CAAC,QAAQ,CAAC,CAAC;AAAA,IACnD,CAAC;AAAA,EACH;AAEA,SAAO;AAAA,IACL,OAAO,kBAAkB,aAAa;AAAA,IACtC,OAAO,WAAW;AAAA,IAClB,QAAQ;AAAA,IACR;AAAA,EACF;AACF;;;AC9CA,SAAS,sBAAsB;AAC/B,SAAS,eAAAC,cAAa,WAAAC,UAAS,wBAAAC,6BAA4B;AAcpD,SAAS,kBAAkB,EAAE,SAAS,GAA2B;AACtE,QAAM,UAAU,oBAAoB;AACpC,QAAM,oBAAoB,qBAAqB;AAE/C,MAAI,WAAW,SAAS;AACtB,UAAM,IAAI,MAAM,gDAAgD;AAAA,EAClE;AAEA,QAAM,aAAaC,SAAQ,MAAM;AAC/B,WAAO,IAAI;AAAA,MACT,QAAQ,KAAK;AAAA,MACb,QAAQ;AAAA,MACR,QAAQ;AAAA,MACR;AAAA,MACA;AAAA,IACF;AAAA,EACF,GAAG,CAAC,QAAQ,CAAC;AAEb,QAAM,aAAaC;AAAA,IACjBC;AAAA,MACE,CAAC,aAAa;AACZ,mBAAW,6BAA6B;AACxC,eAAO,WAAW,UAAU,QAAQ;AAAA,MACtC;AAAA,MACA,CAAC,UAAU;AAAA,IACb;AAAA,IACA,MAAM,WAAW;AAAA,EACnB;AAEA,QAAM,kBAAkB,mBAAmB;AAC3C,SAAO;AAAA,IACL,OAAO,kBAAkB,aAAa;AAAA,IACtC,OAAO,WAAW;AAAA,IAClB,QAAQ,WAAW;AAAA,IACnB,oBAAoB,WAAW;AAAA,IAC/B,0BAA0B,WAAW;AAAA,IACrC;AAAA,EACF;AACF;","names":["React","React","newSubscriptions","subscription","inbox","React","CoValueLoadingState","React","CoValueLoadingState","useMemo","useMemo","useCallback","useMemo","useSyncExternalStore","useMemo","useSyncExternalStore","useCallback"]}
1
+ {"version":3,"sources":["../../src/react-core/hooks.ts","../../src/react-core/utils.ts","../../src/react-core/use.ts","../../src/react-core/subscription-provider.tsx","../../src/react-core/auth/DemoAuth.tsx","../../src/react-core/auth/PassphraseAuth.tsx"],"sourcesContent":["import { useSyncExternalStoreWithSelector } from \"use-sync-external-store/shim/with-selector\";\nimport React, {\n useCallback,\n useContext,\n useMemo,\n useRef,\n useSyncExternalStore,\n} from \"react\";\n\nimport {\n Account,\n AccountClass,\n AnonymousJazzAgent,\n AnyAccountSchema,\n CoValue,\n CoValueClassOrSchema,\n CoValueLoadingState,\n ExportedCoValue,\n InboxSender,\n InstanceOfSchema,\n JazzContextManager,\n Loaded,\n MaybeLoaded,\n NotLoaded,\n ResolveQuery,\n ResolveQueryStrict,\n SchemaResolveQuery,\n SubscriptionScope,\n importContentPieces,\n captureStack,\n getUnloadedCoValueWithoutId,\n type BranchDefinition,\n} from \"jazz-tools\";\nimport { JazzContext } from \"./provider.js\";\nimport { getCurrentAccountFromContextManager } from \"./utils.js\";\nimport { CoValueSubscription } from \"./types.js\";\nimport { use } from \"./use.js\";\n\nexport function useJazzContext<Acc extends Account>() {\n const value = useContext(JazzContext) as JazzContextManager<Acc, {}>;\n\n if (!value) {\n throw new Error(\n \"You need to set up a JazzProvider on top of your app to use this hook.\",\n );\n }\n\n return value;\n}\n\nexport function useJazzContextValue<Acc extends Account>() {\n const contextManager = useJazzContext<Acc>();\n\n const context = useSyncExternalStore(\n useCallback(\n (callback) => {\n return contextManager.subscribe(callback);\n },\n [contextManager],\n ),\n () => contextManager.getCurrentValue(),\n () => contextManager.getCurrentValue(),\n );\n\n if (!context) {\n throw new Error(\n \"The JazzProvider is not initialized yet. This looks like a bug, please report it.\",\n );\n }\n\n return context;\n}\n\nexport function useAuthSecretStorage() {\n return useJazzContext().getAuthSecretStorage();\n}\n\nexport function useIsAuthenticated() {\n const authSecretStorage = useAuthSecretStorage();\n\n return useSyncExternalStore(\n useCallback(\n (callback) => {\n return authSecretStorage.onUpdate(callback);\n },\n [authSecretStorage],\n ),\n () => authSecretStorage.isAuthenticated,\n () => authSecretStorage.isAuthenticated,\n );\n}\n\nexport function useCoValueSubscription<\n S extends CoValueClassOrSchema,\n // @ts-expect-error we can't statically enforce the schema's resolve query is a valid resolve query, but in practice it is\n const R extends ResolveQuery<S> = SchemaResolveQuery<S>,\n>(\n Schema: S,\n id: string | undefined | null,\n options?: {\n resolve?: ResolveQueryStrict<S, R>;\n unstable_branch?: BranchDefinition;\n },\n source?: string,\n): CoValueSubscription<S, R> | null {\n const resolve = getResolveQuery(Schema, options?.resolve);\n const subscriptions = useCoValueSubscriptions(\n Schema,\n [id],\n resolve,\n options?.unstable_branch,\n source,\n );\n return (subscriptions[0] ?? null) as CoValueSubscription<S, R> | null;\n}\n\n/**\n * Tracked state for the entire subscriptions array.\n * If any of the dependencies change, the subscriptions are recreated.\n */\ninterface SubscriptionsState {\n subscriptions: (SubscriptionScope<CoValue> | null)[];\n schema: CoValueClassOrSchema;\n ids: readonly (string | undefined | null)[];\n resolve: ResolveQuery<any>;\n contextManager: ReturnType<typeof useJazzContext>;\n agent: AnonymousJazzAgent | Loaded<any, true>;\n branchName?: string;\n branchOwnerId?: string;\n}\n\n/**\n * Internal hook that manages an array of SubscriptionScope instances.\n *\n * - Uses a ref to track subscriptions by index\n * - Detects changes by comparing schema/ids/resolve/branch\n * - Creates new subscriptions via SubscriptionScopeCache.getOrCreate()\n * - Returns null for entries with undefined/null IDs or invalid branches\n */\nfunction useCoValueSubscriptions(\n schema: CoValueClassOrSchema,\n ids: readonly (string | undefined | null)[],\n resolve: ResolveQuery<any>,\n branch?: BranchDefinition,\n source?: string,\n): (SubscriptionScope<CoValue> | null)[] {\n const contextManager = useJazzContext();\n const agent = useAgent();\n\n const callerStack = useMemo(() => captureStack(), []);\n\n const createAllSubscriptions = (): SubscriptionsState => {\n const node = contextManager.getCurrentValue()!.node;\n const cache = contextManager.getSubscriptionScopeCache();\n\n const subscriptions = ids.map((id) => {\n if (id === undefined || id === null) {\n return null;\n }\n\n const subscription = cache.getOrCreate(\n node,\n schema,\n id,\n resolve,\n false,\n false,\n branch,\n );\n\n if (callerStack) {\n subscription.callerStack = callerStack;\n }\n\n // Track performance for root subscriptions\n subscription.trackLoadingPerformance(source ?? \"unknown\");\n\n return subscription;\n });\n\n return {\n subscriptions,\n schema,\n ids,\n resolve,\n contextManager,\n agent,\n branchName: branch?.name,\n branchOwnerId: branch?.owner?.$jazz.id,\n };\n };\n\n const stateRef = React.useRef<SubscriptionsState | null>(null);\n const newSubscriptions = createAllSubscriptions();\n\n const state = stateRef.current;\n\n // Avoid recreating the subscriptions array if all subscriptions are already cached\n const anySubscriptionChanged =\n newSubscriptions.subscriptions.length !== state?.subscriptions.length ||\n newSubscriptions.subscriptions.some(\n (newSubscriptions, index) =>\n newSubscriptions !== state.subscriptions[index],\n );\n\n if (anySubscriptionChanged) {\n stateRef.current = newSubscriptions;\n }\n\n return stateRef.current!.subscriptions;\n}\n\nfunction useImportCoValueContent<V>(\n id: string | undefined | null,\n content?: ExportedCoValue<V>,\n) {\n const agent = useAgent();\n const preloadExecuted = useRef<typeof agent | null>(null);\n if (content && preloadExecuted.current !== agent && id) {\n if (content.id === id) {\n importContentPieces(content.contentPieces, agent);\n } else {\n console.warn(\"Preloaded value ID does not match the subscription ID\");\n }\n\n preloadExecuted.current = agent;\n }\n}\n\nfunction useGetCurrentValue<C extends CoValue>(\n subscription: SubscriptionScope<C> | null,\n) {\n return useCallback(() => {\n if (!subscription) {\n return getUnloadedCoValueWithoutId(CoValueLoadingState.UNAVAILABLE);\n }\n\n return subscription.getCurrentValue();\n }, [subscription]);\n}\n\n/**\n * React hook for subscribing to CoValues and handling loading states.\n *\n * This hook provides a convenient way to subscribe to CoValues and automatically\n * handles the subscription lifecycle (subscribe on mount, unsubscribe on unmount).\n * It also supports deep loading of nested CoValues through resolve queries.\n *\n * The {@param options.select} function allows returning only specific parts of the CoValue data,\n * which helps reduce unnecessary re-renders by narrowing down the returned data.\n * Additionally, you can provide a custom {@param options.equalityFn} to further optimize\n * performance by controlling when the component should re-render based on the selected data.\n *\n * @returns The loaded CoValue, or an {@link NotLoaded} value. Use `$isLoaded` to check whether the\n * CoValue is loaded, or use {@link MaybeLoaded.$jazz.loadingState} to get the detailed loading state.\n * If a selector function is provided, returns the result of the selector function.\n *\n * @example\n * ```tsx\n * // Select only specific fields to reduce re-renders\n * const Project = co.map({\n * name: z.string(),\n * description: z.string(),\n * tasks: co.list(Task),\n * lastModified: z.date(),\n * });\n *\n * function ProjectTitle({ projectId }: { projectId: string }) {\n * // Only re-render when the project name changes, not other fields\n * const projectName = useCoState(\n * Project,\n * projectId,\n * {\n * select: (project) => !project.$isLoading ? project.name : \"Loading...\",\n * }\n * );\n *\n * return <h1>{projectName}</h1>;\n * }\n * ```\n *\n * @example\n * ```tsx\n * // Deep loading with resolve queries\n * const Project = co.map({\n * name: z.string(),\n * tasks: co.list(Task),\n * owner: TeamMember,\n * });\n *\n * function ProjectView({ projectId }: { projectId: string }) {\n * const project = useCoState(Project, projectId, {\n * resolve: {\n * tasks: { $each: true },\n * owner: true,\n * },\n * });\n *\n * if (!project.$isLoaded) {\n * switch (project.$jazz.loadingState) {\n * case \"unauthorized\":\n * return \"Project not accessible\";\n * case \"unavailable\":\n * return \"Project not found\";\n * case \"loading\":\n * return \"Loading project...\";\n * }\n * }\n *\n * return (\n * <div>\n * <h1>{project.name}</h1>\n * <p>Owner: {project.owner.name}</p>\n * <ul>\n * {project.tasks.map((task) => (\n * <li key={task.id}>{task.title}</li>\n * ))}\n * </ul>\n * </div>\n * );\n * }\n * ```\n *\n * @example\n * ```tsx\n * // Using with optional references and error handling\n * const Task = co.map({\n * title: z.string(),\n * assignee: co.optional(TeamMember),\n * subtasks: co.list(Task),\n * });\n *\n * function TaskDetail({ taskId }: { taskId: string }) {\n * const task = useCoState(Task, taskId, {\n * resolve: {\n * assignee: true,\n * subtasks: { $each: { $onError: 'catch' } },\n * },\n * });\n *\n * if (!task.$isLoaded) {\n * switch (task.$jazz.loadingState) {\n * case \"unauthorized\":\n * return \"Task not accessible\";\n * case \"unavailable\":\n * return \"Task not found\";\n * case \"loading\":\n * return \"Loading task...\";\n * }\n * }\n *\n * return (\n * <div>\n * <h2>{task.title}</h2>\n * {task.assignee && <p>Assigned to: {task.assignee.name}</p>}\n * <ul>\n * {task.subtasks.map((subtask, index) => (\n * subtask.$isLoaded ? <li key={subtask.id}>{subtask.title}</li> : <li key={index}>Inaccessible subtask</li>\n * ))}\n * </ul>\n * </div>\n * );\n * }\n * ```\n *\n * @example\n * ```tsx\n * // Use custom equality function for complex data structures\n * const TaskList = co.list(Task);\n *\n * function TaskCount({ listId }: { listId: string }) {\n * const taskStats = useCoState(\n * TaskList,\n * listId,\n * {\n * resolve: { $each: true },\n * select: (tasks) => {\n * if (!tasks.$isLoaded) return { total: 0, completed: 0 };\n * return {\n * total: tasks.length,\n * completed: tasks.filter(task => task.completed).length,\n * };\n * },\n * // Custom equality to prevent re-renders when stats haven't changed\n * equalityFn: (a, b) => a.total === b.total && a.completed === b.completed,\n * }\n * );\n *\n * return (\n * <div>\n * {taskStats.completed} of {taskStats.total} tasks completed\n * </div>\n * );\n * }\n * ```\n *\n * For more examples, see the [subscription and deep loading](https://jazz.tools/docs/react/using-covalues/subscription-and-loading) documentation.\n */\nexport function useCoState<\n S extends CoValueClassOrSchema,\n // @ts-expect-error we can't statically enforce the schema's resolve query is a valid resolve query, but in practice it is\n const R extends ResolveQuery<S> = SchemaResolveQuery<S>,\n TSelectorReturn = MaybeLoaded<Loaded<S, R>>,\n>(\n /** The CoValue schema or class constructor */\n Schema: S,\n /** The ID of the CoValue to subscribe to. If `undefined`, returns an `unavailable` value */\n id: string | undefined,\n /** Optional configuration for the subscription */\n options?: {\n /** Resolve query to specify which nested CoValues to load */\n resolve?: ResolveQueryStrict<S, R>;\n /** Select which value to return */\n select?: (value: MaybeLoaded<Loaded<S, R>>) => TSelectorReturn;\n /** Equality function to determine if the selected value has changed, defaults to `Object.is` */\n equalityFn?: (a: TSelectorReturn, b: TSelectorReturn) => boolean;\n /**\n * Create or load a branch for isolated editing.\n *\n * Branching lets you take a snapshot of the current state and start modifying it without affecting the canonical/shared version.\n * It's a fork of your data graph: the same schema, but with diverging values.\n *\n * The checkout of the branch is applied on all the resolved values.\n *\n * @param name - A unique name for the branch. This identifies the branch\n * and can be used to switch between different branches of the same CoValue.\n * @param owner - The owner of the branch. Determines who can access and modify\n * the branch. If not provided, the branch is owned by the current user.\n *\n * For more info see the [branching](https://jazz.tools/docs/react/using-covalues/version-control) documentation.\n */\n unstable_branch?: BranchDefinition;\n preloaded?: ExportedCoValue<Loaded<S, R>>;\n },\n): TSelectorReturn {\n useImportCoValueContent(id, options?.preloaded);\n const subscription = useCoValueSubscription(\n Schema,\n id,\n options,\n `useCoState`,\n );\n return useSubscriptionSelector(subscription, options);\n}\n\nexport function useSuspenseCoState<\n S extends CoValueClassOrSchema,\n // @ts-expect-error we can't statically enforce the schema's resolve query is a valid resolve query, but in practice it is\n const R extends ResolveQuery<S> = SchemaResolveQuery<S>,\n TSelectorReturn = Loaded<S, R>,\n>(\n /** The CoValue schema or class constructor */\n Schema: S,\n /** The ID of the CoValue to subscribe to */\n id: string,\n /** Optional configuration for the subscription */\n options?: {\n /** Resolve query to specify which nested CoValues to load */\n resolve?: ResolveQueryStrict<S, R>;\n /** Select which value to return */\n select?: (value: Loaded<S, R>) => TSelectorReturn;\n /** Equality function to determine if the selected value has changed, defaults to `Object.is` */\n equalityFn?: (a: TSelectorReturn, b: TSelectorReturn) => boolean;\n /**\n * Create or load a branch for isolated editing.\n *\n * Branching lets you take a snapshot of the current state and start modifying it without affecting the canonical/shared version.\n * It's a fork of your data graph: the same schema, but with diverging values.\n *\n * The checkout of the branch is applied on all the resolved values.\n *\n * @param name - A unique name for the branch. This identifies the branch\n * and can be used to switch between different branches of the same CoValue.\n * @param owner - The owner of the branch. Determines who can access and modify\n * the branch. If not provided, the branch is owned by the current user.\n *\n * For more info see the [branching](https://jazz.tools/docs/react/using-covalues/version-control) documentation.\n */\n unstable_branch?: BranchDefinition;\n preloaded?: ExportedCoValue<Loaded<S, R>>;\n },\n): TSelectorReturn {\n useImportCoValueContent(id, options?.preloaded);\n\n const subscription = useCoValueSubscription(\n Schema,\n id,\n options,\n \"useSuspenseCoState\",\n );\n\n if (!subscription) {\n throw new Error(\"Subscription not found\");\n }\n\n use(subscription.getCachedPromise());\n\n return useSubscriptionSelector(subscription, options);\n}\n\n/**\n * Returns a subscription's current value.\n * Allows to optionally select a subset of the subscription's value.\n *\n * This is the single-value counterpart to {@link useSubscriptionsSelector}.\n * Keeping it separate for performance reasons.\n */\nexport function useSubscriptionSelector<\n S extends CoValueClassOrSchema,\n // @ts-expect-error we can't statically enforce the schema's resolve query is a valid resolve query, but in practice it is\n const R extends ResolveQuery<S> = SchemaResolveQuery<S>,\n // Selector input can be an already loaded or a maybe-loaded value,\n // depending on whether a suspense hook is used or not, respectively.\n TSelectorInput = MaybeLoaded<Loaded<S, R>>,\n TSelectorReturn = TSelectorInput,\n>(\n subscription: CoValueSubscription<S, R>,\n options?: {\n select?: (value: TSelectorInput) => TSelectorReturn;\n equalityFn?: (a: TSelectorReturn, b: TSelectorReturn) => boolean;\n },\n): TSelectorReturn {\n const getCurrentValue = useGetCurrentValue(subscription);\n\n return useSyncExternalStoreWithSelector(\n React.useCallback(\n (callback) => {\n if (!subscription) {\n return () => {};\n }\n\n return subscription.subscribe(callback);\n },\n [subscription],\n ),\n getCurrentValue,\n getCurrentValue,\n options?.select ?? ((value) => value as unknown as TSelectorReturn),\n options?.equalityFn ?? Object.is,\n );\n}\n\nexport function useAccountSubscription<\n S extends AccountClass<Account> | AnyAccountSchema,\n // @ts-expect-error we can't statically enforce the schema's resolve query is a valid resolve query, but in practice it is\n const R extends ResolveQuery<S> = SchemaResolveQuery<S>,\n>(\n Schema: S,\n options?: {\n resolve?: ResolveQueryStrict<S, R>;\n unstable_branch?: BranchDefinition;\n },\n source?: string,\n) {\n const contextManager = useJazzContext();\n\n // Capture stack trace at hook call time\n const callerStack = useMemo(() => captureStack(), []);\n\n const createSubscription = () => {\n const agent = getCurrentAccountFromContextManager(contextManager);\n\n if (agent.$type$ === \"Anonymous\") {\n return {\n subscription: null,\n contextManager,\n agent,\n };\n }\n\n const resolve = getResolveQuery(Schema, options?.resolve);\n\n const node = contextManager.getCurrentValue()!.node;\n const cache = contextManager.getSubscriptionScopeCache();\n const subscription = cache.getOrCreate(\n node,\n Schema,\n agent.$jazz.id,\n resolve,\n false,\n false,\n options?.unstable_branch,\n );\n\n // Set callerStack on returned subscription after retrieval\n if (callerStack) {\n subscription.callerStack = callerStack;\n }\n\n // Track performance for root subscriptions\n subscription.trackLoadingPerformance(source ?? \"unknown\");\n\n return {\n subscription,\n contextManager,\n Schema,\n branchName: options?.unstable_branch?.name,\n branchOwnerId: options?.unstable_branch?.owner?.$jazz.id,\n };\n };\n\n const [subscription, setSubscription] = React.useState(createSubscription);\n\n const branchName = options?.unstable_branch?.name;\n const branchOwnerId = options?.unstable_branch?.owner?.$jazz.id;\n\n React.useLayoutEffect(() => {\n if (\n subscription.contextManager !== contextManager ||\n subscription.Schema !== Schema ||\n subscription.branchName !== options?.unstable_branch?.name ||\n subscription.branchOwnerId !== options?.unstable_branch?.owner?.$jazz.id\n ) {\n // No need to manually destroy - cache handles cleanup via SubscriptionScope lifecycle\n setSubscription(createSubscription());\n }\n\n return contextManager.subscribe(() => {\n // No need to manually destroy - cache handles cleanup via SubscriptionScope lifecycle\n setSubscription(createSubscription());\n });\n }, [Schema, contextManager, branchName, branchOwnerId]);\n\n return subscription.subscription as CoValueSubscription<S, R>;\n}\n\n/**\n * React hook for accessing the current user's account.\n *\n * This hook provides access to the current user's account profile and root data.\n * It automatically handles the subscription lifecycle and supports deep loading of nested\n * CoValues through resolve queries.\n *\n * The {@param options.select} function allows returning only specific parts of the account data,\n * which helps reduce unnecessary re-renders by narrowing down the returned data.\n * Additionally, you can provide a custom {@param options.equalityFn} to further optimize\n * performance by controlling when the component should re-render based on the selected data.\n *\n * @returns The account data, or an {@link NotLoaded} value. Use `$isLoaded` to check whether the\n * CoValue is loaded, or use {@link MaybeLoaded.$jazz.loadingState} to get the detailed loading state.\n * If a selector function is provided, returns the result of the selector function.\n *\n * @example\n * ```tsx\n * // Select only specific fields to reduce re-renders\n * const MyAppAccount = co.account({\n * profile: co.profile(),\n * root: co.map({\n * name: z.string(),\n * email: z.string(),\n * lastLogin: z.date(),\n * }),\n * });\n *\n * function UserProfile({ accountId }: { accountId: string }) {\n * // Only re-render when the profile name changes, not other fields\n * const profileName = useAccount(\n * MyAppAccount,\n * {\n * resolve: {\n * profile: true,\n * root: true,\n * },\n * select: (account) => account.$isLoaded ? account.profile.name : \"Loading...\",\n * }\n * );\n *\n * return <h1>{profileName}</h1>;\n * }\n * ```\n *\n * @example\n * ```tsx\n * // Deep loading with resolve queries\n * function ProjectListWithDetails() {\n * const me = useAccount(MyAppAccount, {\n * resolve: {\n * profile: true,\n * root: {\n * myProjects: {\n * $each: {\n * tasks: true,\n * },\n * },\n * },\n * },\n * });\n *\n * if (!me.$isLoaded) {\n * switch (me.$jazz.loadingState) {\n * case \"unauthorized\":\n * return \"Account not accessible\";\n * case \"unavailable\":\n * return \"Account not found\";\n * case \"loading\":\n * return \"Loading account...\";\n * }\n * }\n *\n * return (\n * <div>\n * <h1>{me.profile.name}'s projects</h1>\n * <ul>\n * {me.root.myProjects.map((project) => (\n * <li key={project.id}>\n * {project.name} ({project.tasks.length} tasks)\n * </li>\n * ))}\n * </ul>\n * </div>\n * );\n * }\n * ```\n *\n */\nexport function useAccount<\n A extends AccountClass<Account> | AnyAccountSchema,\n // @ts-expect-error we can't statically enforce the schema's resolve query is a valid resolve query, but in practice it is\n const R extends ResolveQuery<A> = SchemaResolveQuery<A>,\n TSelectorReturn = MaybeLoaded<Loaded<A, R>>,\n>(\n /** The account schema to use. Defaults to the base Account schema */\n AccountSchema: A = Account as unknown as A,\n /** Optional configuration for the subscription */\n options?: {\n /** Resolve query to specify which nested CoValues to load from the account */\n resolve?: ResolveQueryStrict<A, R>;\n /** Select which value to return from the account data */\n select?: (account: MaybeLoaded<Loaded<A, R>>) => TSelectorReturn;\n /** Equality function to determine if the selected value has changed, defaults to `Object.is` */\n equalityFn?: (a: TSelectorReturn, b: TSelectorReturn) => boolean;\n /**\n * Create or load a branch for isolated editing.\n *\n * Branching lets you take a snapshot of the current state and start modifying it without affecting the canonical/shared version.\n * It's a fork of your data graph: the same schema, but with diverging values.\n *\n * The checkout of the branch is applied on all the resolved values.\n *\n * @param name - A unique name for the branch. This identifies the branch\n * and can be used to switch between different branches of the same CoValue.\n * @param owner - The owner of the branch. Determines who can access and modify\n * the branch. If not provided, the branch is owned by the current user.\n *\n * For more info see the [branching](https://jazz.tools/docs/react/using-covalues/version-control) documentation.\n */\n unstable_branch?: BranchDefinition;\n },\n): TSelectorReturn {\n const subscription = useAccountSubscription(\n AccountSchema,\n options,\n \"useAccount\",\n );\n return useSubscriptionSelector(subscription, options);\n}\n\nexport function useSuspenseAccount<\n A extends AccountClass<Account> | AnyAccountSchema,\n // @ts-expect-error we can't statically enforce the schema's resolve query is a valid resolve query, but in practice it is\n const R extends ResolveQuery<A> = SchemaResolveQuery<A>,\n TSelectorReturn = Loaded<A, R>,\n>(\n /** The account schema to use. Defaults to the base Account schema */\n AccountSchema: A = Account as unknown as A,\n /** Optional configuration for the subscription */\n options?: {\n /** Resolve query to specify which nested CoValues to load from the account */\n resolve?: ResolveQueryStrict<A, R>;\n /** Select which value to return from the account data */\n select?: (account: Loaded<A, R>) => TSelectorReturn;\n /** Equality function to determine if the selected value has changed, defaults to `Object.is` */\n equalityFn?: (a: TSelectorReturn, b: TSelectorReturn) => boolean;\n /**\n * Create or load a branch for isolated editing.\n *\n * Branching lets you take a snapshot of the current state and start modifying it without affecting the canonical/shared version.\n * It's a fork of your data graph: the same schema, but with diverging values.\n *\n * The checkout of the branch is applied on all the resolved values.\n *\n * @param name - A unique name for the branch. This identifies the branch\n * and can be used to switch between different branches of the same CoValue.\n * @param owner - The owner of the branch. Determines who can access and modify\n * the branch. If not provided, the branch is owned by the current user.\n *\n * For more info see the [branching](https://jazz.tools/docs/react/using-covalues/version-control) documentation.\n */\n unstable_branch?: BranchDefinition;\n },\n): TSelectorReturn {\n const subscription = useAccountSubscription(\n AccountSchema,\n options,\n \"useSuspenseAccount\",\n );\n\n if (!subscription) {\n throw new Error(\n \"Subscription not found, are you using useSuspenseAccount in guest mode?\",\n );\n }\n\n use(subscription.getCachedPromise());\n\n return useSubscriptionSelector(subscription, options);\n}\n\n/**\n * Returns a function for logging out of the current account.\n */\nexport function useLogOut(): () => void {\n const contextManager = useJazzContext();\n return contextManager.logOut;\n}\n\n/**\n * React hook for accessing the current agent. An agent can either be:\n * - an Authenticated Account, if the user is logged in\n * - an Anonymous Account, if the user didn't log in\n * - or an anonymous agent, if in guest mode\n *\n * The agent can be used as the `loadAs` parameter for load and subscribe methods.\n */\nexport function useAgent<\n A extends AccountClass<Account> | AnyAccountSchema = typeof Account,\n>(): AnonymousJazzAgent | Loaded<A, true> {\n const contextManager = useJazzContext<InstanceOfSchema<A>>();\n\n const getCurrentValue = () =>\n getCurrentAccountFromContextManager(contextManager) as\n | AnonymousJazzAgent\n | Loaded<A, true>;\n\n return React.useSyncExternalStore(\n useCallback(\n (callback) => {\n return contextManager.subscribe(callback);\n },\n [contextManager],\n ),\n getCurrentValue,\n getCurrentValue,\n );\n}\n\nexport function experimental_useInboxSender<\n I extends CoValue,\n O extends CoValue | undefined,\n>(inboxOwnerID: string | undefined) {\n const context = useJazzContextValue();\n\n if (!(\"me\" in context)) {\n throw new Error(\n \"useInboxSender can't be used in a JazzProvider with auth === 'guest'.\",\n );\n }\n\n const me = context.me;\n const inboxRef = useRef<Promise<InboxSender<I, O>> | undefined>(undefined);\n\n const sendMessage = useCallback(\n async (message: I) => {\n if (!inboxOwnerID) throw new Error(\"Inbox owner ID is required\");\n\n if (!inboxRef.current) {\n const inbox = InboxSender.load<I, O>(inboxOwnerID, me);\n inboxRef.current = inbox;\n }\n\n let inbox = await inboxRef.current;\n\n // Regenerate the InboxSender if the inbox owner or current account changes\n if (inbox.owner.id !== inboxOwnerID || inbox.currentAccount !== me) {\n const req = InboxSender.load<I, O>(inboxOwnerID, me);\n inboxRef.current = req;\n inbox = await req;\n }\n\n return inbox.sendMessage(message);\n },\n [inboxOwnerID, me.$jazz.id],\n );\n\n return sendMessage;\n}\n\n/**\n * Hook that returns the current connection status to the Jazz sync server.\n *\n * @returns `true` when connected to the server, `false` when disconnected\n *\n * @remarks\n * On connection drop, this hook will return `false` only when Jazz detects the disconnection\n * after 5 seconds of not receiving a ping from the server.\n */\nexport function useSyncConnectionStatus() {\n const context = useJazzContextValue();\n\n const connected = useSyncExternalStore(\n useCallback(\n (callback) => {\n return context.addConnectionListener(callback);\n },\n [context],\n ),\n () => context.connected(),\n () => context.connected(),\n );\n\n return connected;\n}\n\nfunction getResolveQuery(\n Schema: CoValueClassOrSchema,\n // We don't need type validation here, since this is an internal API\n resolveQuery?: ResolveQuery<any>,\n): ResolveQuery<any> {\n if (resolveQuery) {\n return resolveQuery;\n }\n // Check the schema is a CoValue schema (and not a CoValue class)\n if (\"resolveQuery\" in Schema) {\n return Schema.resolveQuery;\n }\n return true;\n}\n\n/**\n * Internal hook that suspends until all values are loaded.\n *\n * - Creates a Promise.all from individual getCachedPromise() calls\n * - Returns Promise.resolve(null) for null subscriptions (undefined/null IDs)\n * - Suspends via the use() hook until all values are loaded\n */\nfunction useSuspendUntilLoaded(\n subscriptions: (SubscriptionScope<CoValue> | null)[],\n): void {\n const combinedPromise = useMemo(() => {\n const promises = subscriptions.map((sub) => {\n if (!sub) {\n // For null subscriptions (undefined/null IDs), resolve immediately with null\n return Promise.resolve(null);\n }\n return sub.getCachedPromise();\n });\n\n return Promise.all(promises);\n }, [subscriptions]);\n\n use(combinedPromise);\n}\n\n/**\n * Internal hook that uses useSyncExternalStore to subscribe to multiple SubscriptionScopes.\n *\n * - Creates a combined subscribe function that subscribes to all scopes\n * - Returns an array of current values from each scope\n * - Maintains stable references for unchanged values\n *\n * @param subscriptions - Array of SubscriptionScope instances (or null for skipped entries)\n * @returns Array of loaded CoValues (or null for skipped entries)\n */\nfunction useSubscriptionsSelector<\n T extends CoValue[] | MaybeLoaded<CoValue>[],\n // Selector input can be an already loaded or a maybe-loaded value,\n // depending on whether a suspense hook is used or not, respectively.\n TSelectorInput = T[number],\n TSelectorReturn = TSelectorInput,\n>(\n subscriptions: SubscriptionScope<CoValue>[],\n options?: {\n select?: (value: TSelectorInput) => TSelectorReturn;\n equalityFn?: (a: TSelectorReturn, b: TSelectorReturn) => boolean;\n },\n): TSelectorReturn[] {\n // Combined subscribe function that subscribes to all scopes\n const subscribe = useCallback(\n (callback: () => void) => {\n const unsubscribes = subscriptions.map((sub) => sub.subscribe(callback));\n\n return () => {\n unsubscribes.forEach((unsub) => unsub());\n };\n },\n [subscriptions],\n );\n\n // Cache current values to avoid infinite loops\n const cachedCurrentValuesRef = useRef<T>([] as unknown as T);\n const getCurrentValues = useCallback(() => {\n const newValues = subscriptions.map((sub) => sub.getCurrentValue());\n\n // Check if values have changed by comparing each element\n const cached = cachedCurrentValuesRef.current;\n const hasChanged =\n cached.length !== newValues.length ||\n newValues.some((value, index) => value !== cached[index]);\n\n if (hasChanged) {\n cachedCurrentValuesRef.current = newValues as T;\n }\n\n return cachedCurrentValuesRef.current as unknown as TSelectorInput[];\n }, [subscriptions]);\n\n const selectFn = useMemo(() => {\n if (!options?.select) {\n return (values: TSelectorInput[]) =>\n values as unknown as TSelectorReturn[];\n }\n return (values: TSelectorInput[]) =>\n values.map((value) => options.select!(value));\n }, [options?.select]);\n\n const elementEqualityFn = useMemo(\n () => options?.equalityFn ?? Object.is,\n [options?.equalityFn],\n );\n const equalityFn = useMemo(() => {\n return (a: TSelectorReturn[], b: TSelectorReturn[]) =>\n a.length === b.length &&\n a.every((value, index) => elementEqualityFn(value, b[index]));\n }, [elementEqualityFn]);\n\n return useSyncExternalStoreWithSelector(\n subscribe,\n getCurrentValues,\n getCurrentValues,\n selectFn,\n equalityFn,\n );\n}\n\n/**\n * Subscribe to multiple CoValues with unified Suspense handling.\n *\n * This hook accepts a list of CoValue IDs and returns an array of loaded values,\n * suspending until all values are available.\n *\n * @param Schema - The CoValue schema or class constructor\n * @param ids - Array of CoValue IDs to subscribe to\n * @param options - Optional configuration, including resolve query\n * @returns An array of loaded CoValues in the same order as the input IDs\n */\nexport function useSuspenseCoStates<\n S extends CoValueClassOrSchema,\n // @ts-expect-error we can't statically enforce the schema's resolve query is a valid resolve query, but in practice it is\n const R extends ResolveQuery<S> = SchemaResolveQuery<S>,\n TSelectorReturn = Loaded<S, R>,\n>(\n Schema: S,\n ids: readonly string[],\n options?: {\n /** Resolve query to specify which nested CoValues to load */\n resolve?: ResolveQueryStrict<S, R>;\n /** Select which value to return. Applies to each element individually. */\n select?: (value: Loaded<S, R>) => TSelectorReturn;\n /** Equality function to determine if a selected value has changed, defaults to `Object.is` */\n equalityFn?: (a: TSelectorReturn, b: TSelectorReturn) => boolean;\n /**\n * Create or load a branch for isolated editing.\n *\n * Branching lets you take a snapshot of the current state and start modifying it without affecting the canonical/shared version.\n * It's a fork of your data graph: the same schema, but with diverging values.\n *\n * The checkout of the branch is applied on all the resolved values.\n *\n * @param name - A unique name for the branch. This identifies the branch\n * and can be used to switch between different branches of the same CoValue.\n * @param owner - The owner of the branch. Determines who can access and modify\n * the branch. If not provided, the branch is owned by the current user.\n *\n * For more info see the [branching](https://jazz.tools/docs/react/using-covalues/version-control) documentation.\n */\n unstable_branch?: BranchDefinition;\n },\n): TSelectorReturn[] {\n const resolve = getResolveQuery(Schema, options?.resolve);\n const subscriptionScopes = useCoValueSubscriptions(\n Schema,\n ids,\n resolve,\n options?.unstable_branch,\n \"useSuspenseCoStates\",\n ) as SubscriptionScope<CoValue>[];\n useSuspendUntilLoaded(subscriptionScopes);\n return useSubscriptionsSelector(subscriptionScopes, options);\n}\n\n/**\n * Subscribe to multiple CoValues without Suspense.\n *\n * This hook accepts a list of CoValue IDs and returns an array of maybe-loaded values.\n * Unlike `useSuspenseCoStates`, this hook does not suspend and returns loading/unavailable\n * states that can be checked via the `$isLoaded` property.\n *\n * @param Schema - The CoValue schema or class constructor\n * @param ids - Array of CoValue IDs to subscribe to\n * @param options - Optional configuration, including resolve query\n * @returns An array of MaybeLoaded CoValues in the same order as the input IDs\n *\n * @example\n * ```typescript\n * const [project1, project2] = useCoStates(\n * ProjectSchema,\n * [projectId1, projectId2],\n * { resolve: { assignee: true } }\n * );\n *\n * if (!project1.$isLoaded || !project2.$isLoaded) {\n * return <Loading />;\n * }\n * ```\n */\nexport function useCoStates<\n S extends CoValueClassOrSchema,\n // @ts-expect-error we can't statically enforce the schema's resolve query is a valid resolve query, but in practice it is\n const R extends ResolveQuery<S> = SchemaResolveQuery<S>,\n TSelectorReturn = MaybeLoaded<Loaded<S, R>>,\n>(\n Schema: S,\n ids: readonly string[],\n options?: {\n /** Resolve query to specify which nested CoValues to load */\n resolve?: ResolveQueryStrict<S, R>;\n /** Select which value to return. Applies to each element individually. */\n select?: (value: MaybeLoaded<Loaded<S, R>>) => TSelectorReturn;\n /** Equality function to determine if a selected value has changed, defaults to `Object.is` */\n equalityFn?: (a: TSelectorReturn, b: TSelectorReturn) => boolean;\n /**\n * Create or load a branch for isolated editing.\n *\n * Branching lets you take a snapshot of the current state and start modifying it without affecting the canonical/shared version.\n * It's a fork of your data graph: the same schema, but with diverging values.\n *\n * The checkout of the branch is applied on all the resolved values.\n *\n * @param name - A unique name for the branch. This identifies the branch\n * and can be used to switch between different branches of the same CoValue.\n * @param owner - The owner of the branch. Determines who can access and modify\n * the branch. If not provided, the branch is owned by the current user.\n *\n * For more info see the [branching](https://jazz.tools/docs/react/using-covalues/version-control) documentation.\n */\n unstable_branch?: BranchDefinition;\n },\n): TSelectorReturn[] {\n const resolve = getResolveQuery(Schema, options?.resolve);\n const subscriptionScopes = useCoValueSubscriptions(\n Schema,\n ids,\n resolve,\n options?.unstable_branch,\n \"useCoStates\",\n ) as SubscriptionScope<CoValue>[];\n return useSubscriptionsSelector(subscriptionScopes, options);\n}\n","import { Account, JazzContextManager } from \"jazz-tools\";\n\nexport function getCurrentAccountFromContextManager<Acc extends Account>(\n contextManager: JazzContextManager<Acc, any>,\n) {\n const context = contextManager.getCurrentValue();\n\n if (!context) {\n throw new Error(\"No context found\");\n }\n\n return \"me\" in context ? context.me : context.guest;\n}\n\nexport function subscribeToContextManager<Acc extends Account>(\n contextManager: JazzContextManager<Acc, any>,\n callback: () => () => void,\n) {\n let unsub = () => {};\n\n const handler = () => {\n unsub();\n unsub = callback();\n };\n\n handler();\n return contextManager.subscribe(handler);\n}\n","import React from \"react\";\n\n// shim from https://github.com/pmndrs/jotai/blob/f287c5d665a807e676bc731e83174c62c1fe1fc9/src/react/useAtomValue.ts#L13C1-L56C1\nconst attachPromiseStatus = <T>(\n promise: PromiseLike<T> & {\n status?: \"pending\" | \"fulfilled\" | \"rejected\";\n value?: T;\n reason?: unknown;\n },\n) => {\n if (!promise.status) {\n promise.status = \"pending\";\n promise.then(\n (v) => {\n promise.status = \"fulfilled\";\n promise.value = v;\n },\n (e) => {\n promise.status = \"rejected\";\n promise.reason = e;\n },\n );\n }\n};\n\nexport const use =\n React.use ||\n // A shim for older React versions\n (<T>(\n promise: PromiseLike<T> & {\n status?: \"pending\" | \"fulfilled\" | \"rejected\";\n value?: T;\n reason?: unknown;\n },\n ): T => {\n if (promise.status === \"pending\") {\n throw promise;\n } else if (promise.status === \"fulfilled\") {\n return promise.value as T;\n } else if (promise.status === \"rejected\") {\n throw promise.reason;\n } else {\n attachPromiseStatus(promise);\n throw promise;\n }\n });\n","import React from \"react\";\nimport {\n Account,\n AccountClass,\n AnyAccountSchema,\n CoValueClassOrSchema,\n CoValueLoadingState,\n Loaded,\n MaybeLoaded,\n ResolveQuery,\n ResolveQueryStrict,\n} from \"jazz-tools\";\nimport {\n useAccountSubscription,\n useCoValueSubscription,\n useSubscriptionSelector,\n} from \"./hooks.js\";\nimport type { CoValueSubscription } from \"./types.js\";\n\nexport function createCoValueSubscriptionContext<\n S extends CoValueClassOrSchema,\n const R extends ResolveQuery<S> = true,\n>(schema: S, resolve?: ResolveQueryStrict<S, R>) {\n const Context = React.createContext<CoValueSubscription<S, R>>(null);\n\n return {\n Provider: ({\n id,\n options,\n loadingFallback,\n unavailableFallback,\n children,\n }: React.PropsWithChildren<{\n id: string | undefined | null;\n options?: Omit<\n Parameters<typeof useCoValueSubscription<S, R>>[2],\n \"resolve\"\n >;\n loadingFallback?: React.ReactNode;\n unavailableFallback?: React.ReactNode;\n }>) => {\n const subscription = useCoValueSubscription(\n schema,\n id,\n {\n ...options,\n resolve: resolve,\n },\n \"CoValueSubscriptionProvider\",\n );\n\n const loadState = useSubscriptionSelector(subscription, {\n select: (value) => value.$jazz.loadingState,\n });\n\n if (loadState === CoValueLoadingState.LOADING) {\n return loadingFallback ?? null;\n }\n if (\n loadState === CoValueLoadingState.UNAUTHORIZED ||\n loadState === CoValueLoadingState.UNAVAILABLE\n ) {\n return unavailableFallback ?? null;\n }\n\n return (\n <Context.Provider value={subscription}>{children}</Context.Provider>\n );\n },\n useSelector: <TSelectorReturn = Loaded<S, R>>(options?: {\n select?: (value: Loaded<S, R>) => TSelectorReturn;\n equalityFn?: (a: TSelectorReturn, b: TSelectorReturn) => boolean;\n }) => {\n const subscription = React.useContext(Context);\n\n if (!subscription) {\n throw new Error(\n \"useSelector must be used within a coValue subscription provider\",\n );\n }\n\n return useSubscriptionSelector<S, R, TSelectorReturn>(\n subscription,\n options as Parameters<\n typeof useSubscriptionSelector<S, R, TSelectorReturn>\n >[1],\n );\n },\n };\n}\n\nexport function createAccountSubscriptionContext<\n A extends AccountClass<Account> | AnyAccountSchema,\n const R extends ResolveQuery<A> = true,\n>(schema: A, resolve?: ResolveQueryStrict<A, R>) {\n const Context = React.createContext<CoValueSubscription<A, R>>(null);\n\n return {\n Provider: ({\n options,\n loadingFallback,\n unavailableFallback,\n children,\n }: React.PropsWithChildren<{\n options?: Omit<\n Parameters<typeof useAccountSubscription<A, R>>[1],\n \"resolve\"\n >;\n loadingFallback?: React.ReactNode;\n unavailableFallback?: React.ReactNode;\n }>) => {\n const subscription = useAccountSubscription(\n schema,\n {\n ...options,\n resolve: resolve,\n },\n \"AccountSubscriptionProvider\",\n );\n\n const loadState = useSubscriptionSelector(subscription, {\n select: (value) => value.$jazz.loadingState,\n });\n\n if (loadState === CoValueLoadingState.LOADING) {\n return loadingFallback ?? null;\n }\n\n if (\n loadState === CoValueLoadingState.UNAUTHORIZED ||\n loadState === CoValueLoadingState.UNAVAILABLE\n ) {\n return unavailableFallback ?? null;\n }\n\n return (\n <Context.Provider value={subscription}>{children}</Context.Provider>\n );\n },\n useSelector: <TSelectorReturn = Loaded<A, R>>(options?: {\n select?: (value: Loaded<A, R>) => TSelectorReturn;\n equalityFn?: (a: TSelectorReturn, b: TSelectorReturn) => boolean;\n }) => {\n const subscription = React.useContext(Context);\n\n if (!subscription) {\n throw new Error(\n \"useSelector must be used within an account subscription provider\",\n );\n }\n\n return useSubscriptionSelector<A, R, TSelectorReturn>(\n subscription,\n options as Parameters<\n typeof useSubscriptionSelector<A, R, TSelectorReturn>\n >[1],\n );\n },\n };\n}\n","import { DemoAuth } from \"jazz-tools\";\nimport { useEffect, useMemo, useState } from \"react\";\nimport { useAuthSecretStorage, useJazzContextValue } from \"../hooks.js\";\nimport { useIsAuthenticated } from \"../hooks.js\";\n\n/**\n * `useDemoAuth` is a hook that provides a `JazzAuth` object for demo authentication.\n *\n *\n * ```ts\n * const { state, logIn, signUp, existingUsers } = useDemoAuth();\n * ```\n *\n * @category Auth Providers\n */\nexport function useDemoAuth() {\n const context = useJazzContextValue();\n const authSecretStorage = useAuthSecretStorage();\n\n if (\"guest\" in context) {\n throw new Error(\"Demo auth is not supported in guest mode\");\n }\n\n const authMethod = useMemo(() => {\n return new DemoAuth(context.authenticate, authSecretStorage);\n }, []);\n\n const isAuthenticated = useIsAuthenticated();\n const [existingUsers, setExistingUsers] = useState<string[]>([]);\n\n useEffect(() => {\n authMethod.getExistingUsers().then(setExistingUsers);\n }, [authMethod]);\n\n function handleSignUp(username: string) {\n return authMethod.signUp(username).then(() => {\n setExistingUsers(existingUsers.concat([username]));\n });\n }\n\n return {\n state: isAuthenticated ? \"signedIn\" : \"anonymous\",\n logIn: authMethod.logIn,\n signUp: handleSignUp,\n existingUsers,\n } as const;\n}\n","import { PassphraseAuth } from \"jazz-tools\";\nimport { useCallback, useMemo, useSyncExternalStore } from \"react\";\nimport { useAuthSecretStorage, useJazzContextValue } from \"../hooks.js\";\nimport { useIsAuthenticated } from \"../hooks.js\";\n\n/**\n * `usePassphraseAuth` hook provides a `JazzAuth` object for passphrase authentication.\n *\n * @example\n * ```ts\n * const auth = usePassphraseAuth({ appName, appHostname, wordlist });\n * ```\n *\n * @category Auth Providers\n */\nexport function usePassphraseAuth({ wordlist }: { wordlist: string[] }) {\n const context = useJazzContextValue();\n const authSecretStorage = useAuthSecretStorage();\n\n if (\"guest\" in context) {\n throw new Error(\"Passphrase auth is not supported in guest mode\");\n }\n\n const authMethod = useMemo(() => {\n return new PassphraseAuth(\n context.node.crypto,\n context.authenticate,\n context.register,\n authSecretStorage,\n wordlist,\n );\n }, [wordlist]);\n\n const passphrase = useSyncExternalStore(\n useCallback(\n (callback) => {\n authMethod.loadCurrentAccountPassphrase();\n return authMethod.subscribe(callback);\n },\n [authMethod],\n ),\n () => authMethod.passphrase,\n );\n\n const isAuthenticated = useIsAuthenticated();\n return {\n state: isAuthenticated ? \"signedIn\" : \"anonymous\",\n logIn: authMethod.logIn,\n signUp: authMethod.signUp,\n registerNewAccount: authMethod.registerNewAccount,\n generateRandomPassphrase: authMethod.generateRandomPassphrase,\n passphrase,\n } as const;\n}\n"],"mappings":"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","names":["React","React","newSubscriptions","subscription","inbox","React","CoValueLoadingState","React","CoValueLoadingState","useMemo","useMemo","useCallback","useMemo","useSyncExternalStore","useMemo","useSyncExternalStore","useCallback"]}
@@ -1 +1 @@
1
- {"version":3,"file":"subscription-provider.d.ts","sourceRoot":"","sources":["../../src/react-core/subscription-provider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EACL,OAAO,EACP,YAAY,EACZ,gBAAgB,EAChB,oBAAoB,EAEpB,MAAM,EAEN,YAAY,EACZ,kBAAkB,EACnB,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,sBAAsB,EACtB,sBAAsB,EAEvB,MAAM,YAAY,CAAC;AAGpB,wBAAgB,gCAAgC,CAC9C,CAAC,SAAS,oBAAoB,EAC9B,KAAK,CAAC,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,GAAG,IAAI,EACtC,MAAM,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE,kBAAkB,CAAC,CAAC,EAAE,CAAC,CAAC;iFAUxC,KAAK,CAAC,iBAAiB,CAAC;QACzB,EAAE,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC;QAC9B,OAAO,CAAC,EAAE,IAAI,CACZ,UAAU,CAAC,OAAO,sBAAsB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAClD,SAAS,CACV,CAAC;QACF,eAAe,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;QAClC,mBAAmB,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;KACvC,CAAC;kBAwBY,eAAe,2BAA2B;QACtD,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,eAAe,CAAC;QAClD,UAAU,CAAC,EAAE,CAAC,CAAC,EAAE,eAAe,EAAE,CAAC,EAAE,eAAe,KAAK,OAAO,CAAC;KAClE;EAiBJ;AAED,wBAAgB,gCAAgC,CAC9C,CAAC,SAAS,YAAY,CAAC,OAAO,CAAC,GAAG,gBAAgB,EAClD,KAAK,CAAC,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,GAAG,IAAI,EACtC,MAAM,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE,kBAAkB,CAAC,CAAC,EAAE,CAAC,CAAC;6EASxC,KAAK,CAAC,iBAAiB,CAAC;QACzB,OAAO,CAAC,EAAE,IAAI,CACZ,UAAU,CAAC,OAAO,sBAAsB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAClD,SAAS,CACV,CAAC;QACF,eAAe,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;QAClC,mBAAmB,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;KACvC,CAAC;kBAyBY,eAAe,2BAA2B;QACtD,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,eAAe,CAAC;QAClD,UAAU,CAAC,EAAE,CAAC,CAAC,EAAE,eAAe,EAAE,CAAC,EAAE,eAAe,KAAK,OAAO,CAAC;KAClE;EAiBJ"}
1
+ {"version":3,"file":"subscription-provider.d.ts","sourceRoot":"","sources":["../../src/react-core/subscription-provider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EACL,OAAO,EACP,YAAY,EACZ,gBAAgB,EAChB,oBAAoB,EAEpB,MAAM,EAEN,YAAY,EACZ,kBAAkB,EACnB,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,sBAAsB,EACtB,sBAAsB,EAEvB,MAAM,YAAY,CAAC;AAGpB,wBAAgB,gCAAgC,CAC9C,CAAC,SAAS,oBAAoB,EAC9B,KAAK,CAAC,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,GAAG,IAAI,EACtC,MAAM,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE,kBAAkB,CAAC,CAAC,EAAE,CAAC,CAAC;iFAUxC,KAAK,CAAC,iBAAiB,CAAC;QACzB,EAAE,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC;QAC9B,OAAO,CAAC,EAAE,IAAI,CACZ,UAAU,CAAC,OAAO,sBAAsB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAClD,SAAS,CACV,CAAC;QACF,eAAe,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;QAClC,mBAAmB,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;KACvC,CAAC;kBA6BY,eAAe,2BAA2B;QACtD,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,eAAe,CAAC;QAClD,UAAU,CAAC,EAAE,CAAC,CAAC,EAAE,eAAe,EAAE,CAAC,EAAE,eAAe,KAAK,OAAO,CAAC;KAClE;EAiBJ;AAED,wBAAgB,gCAAgC,CAC9C,CAAC,SAAS,YAAY,CAAC,OAAO,CAAC,GAAG,gBAAgB,EAClD,KAAK,CAAC,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,GAAG,IAAI,EACtC,MAAM,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE,kBAAkB,CAAC,CAAC,EAAE,CAAC,CAAC;6EASxC,KAAK,CAAC,iBAAiB,CAAC;QACzB,OAAO,CAAC,EAAE,IAAI,CACZ,UAAU,CAAC,OAAO,sBAAsB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAClD,SAAS,CACV,CAAC;QACF,eAAe,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;QAClC,mBAAmB,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;KACvC,CAAC;kBA6BY,eAAe,2BAA2B;QACtD,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,eAAe,CAAC;QAClD,UAAU,CAAC,EAAE,CAAC,CAAC,EAAE,eAAe,EAAE,CAAC,EAAE,eAAe,KAAK,OAAO,CAAC;KAClE;EAiBJ"}
@@ -66,7 +66,7 @@ export type ImageProps = Omit<RNImageProps, "width" | "height" | "source"> & {
66
66
  * });
67
67
  * ```
68
68
  */
69
- export declare const Image: import("react").ForwardRefExoticComponent<Omit<RNImageProps, "width" | "height" | "source"> & {
69
+ export declare const Image: import("react").ForwardRefExoticComponent<Omit<RNImageProps, "source" | "width" | "height"> & {
70
70
  /** The ID of the ImageDefinition to display */
71
71
  imageId: string;
72
72
  /**
@@ -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,EAEhB,oBAAoB,EACpB,cAAc,EACd,kBAAkB,EAElB,MAAM,EACN,WAAW,EAEX,YAAY,EACZ,kBAAkB,EACnB,MAAM,YAAY,CAAC;AAYpB,KAAK,cAAc,CACjB,CAAC,SAAS,oBAAoB,EAC9B,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,IACvB;IACF,OAAO,CAAC,EAAE,kBAAkB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACnC;;;;;;;;;;;;;;OAcG;IACH,eAAe,CAAC,EAAE,gBAAgB,CAAC;CACpC,CAAC;AAEF,KAAK,SAAS,GAAG,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC;AAE3C,qBAAa,OAAO,CAClB,CAAC,SAAS,oBAAoB,EAE9B,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,GAAG,kBAAkB,CAAC,CAAC,CAAC;;gBAY/C,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;IAkD/D,MAAM,CAAC,KAAK,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAQvC,IAAI,OAAO,8BAGV;CACF;AAED,qBAAa,cAAc,CACzB,CAAC,SACG,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC,GACjD,gBAAgB,EAEpB,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,GAAG,kBAAkB,CAAC,CAAC,CAAC;;gBAW/C,MAAM,EAAE,CAAC,EACT,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,WAAW,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAMvC,MAAM,aAEJ;IAEF,IAAI,OAAO,8BAIV;IAED,IAAI,KAAK,sDAQR;IAID,IAAI,eAAe,YAElB;CACF;AAgBD;;;;;;;;GAQG;AACH,qBAAa,oBAAoB;;;IA6B/B,IAAI,OAAO,YAGV;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,EAGhB,oBAAoB,EACpB,cAAc,EACd,kBAAkB,EAElB,MAAM,EACN,WAAW,EAEX,YAAY,EACZ,kBAAkB,EACnB,MAAM,YAAY,CAAC;AAapB,KAAK,cAAc,CACjB,CAAC,SAAS,oBAAoB,EAC9B,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,IACvB;IACF,OAAO,CAAC,EAAE,kBAAkB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACnC;;;;;;;;;;;;;;OAcG;IACH,eAAe,CAAC,EAAE,gBAAgB,CAAC;CACpC,CAAC;AAEF,KAAK,SAAS,GAAG,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC;AAE3C,qBAAa,OAAO,CAClB,CAAC,SAAS,oBAAoB,EAE9B,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,GAAG,kBAAkB,CAAC,CAAC,CAAC;;gBAY/C,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;IA0D/D,MAAM,CAAC,KAAK,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAQvC,IAAI,OAAO,8BAGV;CACF;AAED,qBAAa,cAAc,CACzB,CAAC,SACG,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC,GACjD,gBAAgB,EAEpB,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,GAAG,kBAAkB,CAAC,CAAC,CAAC;;gBAW/C,MAAM,EAAE,CAAC,EACT,OAAO,CAAC,EAAE,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,MAAM,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAwD/D,MAAM,CAAC,KAAK,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAMvC,MAAM,aAEJ;IAEF,IAAI,OAAO,8BAIV;IAED,IAAI,KAAK,sDAQR;IAID,IAAI,eAAe,YAElB;CACF;AAgBD;;;;;;;;GAQG;AACH,qBAAa,oBAAoB;;;IA6B/B,IAAI,OAAO,YAGV;CACF"}
@@ -1,4 +1,4 @@
1
- import { coValueClassFromCoValueClassOrSchema, subscribeToCoValue, CoValueLoadingState, getUnloadedCoValueWithoutId, } from "jazz-tools";
1
+ import { captureStack, coValueClassFromCoValueClassOrSchema, CoValueLoadingState, getUnloadedCoValueWithoutId, SubscriptionScope, } from "jazz-tools";
2
2
  import { untrack } from "svelte";
3
3
  import { createSubscriber } from "svelte/reactivity";
4
4
  import { useIsAuthenticated } from "./auth/useIsAuthenticated.svelte.js";
@@ -11,6 +11,7 @@ export class CoState {
11
11
  #update = () => { };
12
12
  #options;
13
13
  constructor(Schema, id, options) {
14
+ const callerStack = captureStack();
14
15
  this.#id = $derived.by(typeof id === "function" ? id : () => id);
15
16
  this.#options = $derived.by(typeof options === "function" ? options : () => options);
16
17
  this.#subscribe = createSubscriber((update) => {
@@ -25,21 +26,22 @@ export class CoState {
25
26
  return this.update(getUnloadedCoValueWithoutId(CoValueLoadingState.UNAVAILABLE));
26
27
  }
27
28
  const agent = "me" in ctx ? ctx.me : ctx.guest;
29
+ const node = "node" in agent ? agent.node : agent.$jazz.localNode;
28
30
  const resolve = getResolveQuery(Schema, options?.resolve);
29
- const unsubscribe = subscribeToCoValue(coValueClassFromCoValueClassOrSchema(Schema), id, {
30
- // @ts-expect-error The resolve query type isn't compatible with the coValueClassFromCoValueClassOrSchema conversion
31
- resolve,
32
- loadAs: agent,
33
- onError: (value) => {
34
- this.update(value);
35
- },
36
- syncResolution: true,
37
- unstable_branch: options?.unstable_branch,
38
- }, (value) => {
31
+ const cls = coValueClassFromCoValueClassOrSchema(Schema);
32
+ const subscriptionScope = new SubscriptionScope(node, resolve, id, { ref: cls, optional: false }, false, // skipRetry
33
+ false, // bestEffortResolution
34
+ options?.unstable_branch);
35
+ subscriptionScope.callerStack = callerStack;
36
+ // Track performance for Svelte subscriptions
37
+ subscriptionScope.trackLoadingPerformance("CoState");
38
+ subscriptionScope.subscribe(() => {
39
+ const value = subscriptionScope.getCurrentValue();
39
40
  this.update(value);
40
41
  });
42
+ this.update(subscriptionScope.getCurrentValue());
41
43
  return () => {
42
- unsubscribe();
44
+ subscriptionScope.destroy();
43
45
  };
44
46
  });
45
47
  });
@@ -63,6 +65,7 @@ export class AccountCoState {
63
65
  #options;
64
66
  #update = () => { };
65
67
  constructor(Schema, options) {
68
+ const callerStack = captureStack();
66
69
  this.#options = $derived.by(typeof options === "function" ? options : () => options);
67
70
  this.#subscribe = createSubscriber((update) => {
68
71
  this.#update = update;
@@ -75,20 +78,22 @@ export class AccountCoState {
75
78
  return this.update(getUnloadedCoValueWithoutId(CoValueLoadingState.UNAVAILABLE));
76
79
  }
77
80
  const me = ctx.me;
81
+ const node = me.$jazz.localNode;
78
82
  const resolve = getResolveQuery(Schema, options?.resolve);
79
- const unsubscribe = subscribeToCoValue(coValueClassFromCoValueClassOrSchema(Schema), me.$jazz.id, {
80
- resolve,
81
- loadAs: me,
82
- onError: (value) => {
83
- this.update(value);
84
- },
85
- syncResolution: true,
86
- unstable_branch: options?.unstable_branch,
87
- }, (value) => {
83
+ const cls = coValueClassFromCoValueClassOrSchema(Schema);
84
+ const subscriptionScope = new SubscriptionScope(node, resolve, me.$jazz.id, { ref: cls, optional: false }, false, // skipRetry
85
+ false, // bestEffortResolution
86
+ options?.unstable_branch);
87
+ subscriptionScope.callerStack = callerStack;
88
+ // Track performance for Svelte subscriptions
89
+ subscriptionScope.trackLoadingPerformance("AccountCoState");
90
+ subscriptionScope.subscribe(() => {
91
+ const value = subscriptionScope.getCurrentValue();
88
92
  this.update(value);
89
93
  });
94
+ this.update(subscriptionScope.getCurrentValue());
90
95
  return () => {
91
- unsubscribe();
96
+ subscriptionScope.destroy();
92
97
  };
93
98
  });
94
99
  });
package/dist/testing.js CHANGED
@@ -7,7 +7,7 @@ import {
7
7
  coValueClassFromCoValueClassOrSchema,
8
8
  createAnonymousJazzContext,
9
9
  createJazzContext
10
- } from "./chunk-2OPP7KWV.js";
10
+ } from "./chunk-Q5RNSSUM.js";
11
11
  import "./chunk-ZQWSQH6L.js";
12
12
 
13
13
  // src/tools/testing.ts
@@ -1 +1 @@
1
- {"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../../src/tools/coValues/interfaces.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../../src/tools/coValues/interfaces.ts"],"names":[],"mappings":"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"}