jazz-tools 0.15.15 → 0.16.0

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 (217) hide show
  1. package/.svelte-kit/__package__/jazz.class.svelte.d.ts +2 -2
  2. package/.svelte-kit/__package__/jazz.class.svelte.d.ts.map +1 -1
  3. package/.svelte-kit/__package__/jazz.class.svelte.js +5 -5
  4. package/.svelte-kit/__package__/jazz.svelte.d.ts +2 -2
  5. package/.svelte-kit/__package__/jazz.svelte.d.ts.map +1 -1
  6. package/.turbo/turbo-build.log +46 -50
  7. package/CHANGELOG.md +35 -0
  8. package/dist/browser/index.d.ts +2 -2
  9. package/dist/browser/index.d.ts.map +1 -1
  10. package/dist/browser/index.js.map +1 -1
  11. package/dist/browser-media-images/index.d.ts +3 -1
  12. package/dist/browser-media-images/index.d.ts.map +1 -1
  13. package/dist/browser-media-images/index.js.map +1 -1
  14. package/dist/{chunk-4CFNXQE7.js → chunk-MLCNE3TL.js} +791 -698
  15. package/dist/chunk-MLCNE3TL.js.map +1 -0
  16. package/dist/index.js +363 -11
  17. package/dist/index.js.map +1 -1
  18. package/dist/react/hooks.d.ts +2 -2
  19. package/dist/react/hooks.d.ts.map +1 -1
  20. package/dist/react/index.js +2 -0
  21. package/dist/react/index.js.map +1 -1
  22. package/dist/react/testing.js +3 -1
  23. package/dist/react/testing.js.map +1 -1
  24. package/dist/react-core/hooks.d.ts +2 -2
  25. package/dist/react-core/hooks.d.ts.map +1 -1
  26. package/dist/react-core/index.js +3 -3
  27. package/dist/react-core/index.js.map +1 -1
  28. package/dist/react-native-core/hooks.d.ts +2 -2
  29. package/dist/react-native-core/hooks.d.ts.map +1 -1
  30. package/dist/react-native-core/index.js.map +1 -1
  31. package/dist/svelte/jazz.class.svelte.d.ts +2 -2
  32. package/dist/svelte/jazz.class.svelte.d.ts.map +1 -1
  33. package/dist/svelte/jazz.class.svelte.js +5 -5
  34. package/dist/svelte/jazz.svelte.d.ts +2 -2
  35. package/dist/svelte/jazz.svelte.d.ts.map +1 -1
  36. package/dist/testing.js +3 -3
  37. package/dist/testing.js.map +1 -1
  38. package/dist/tools/coValues/CoValueBase.d.ts +3 -13
  39. package/dist/tools/coValues/CoValueBase.d.ts.map +1 -1
  40. package/dist/tools/coValues/account.d.ts +2 -2
  41. package/dist/tools/coValues/account.d.ts.map +1 -1
  42. package/dist/tools/coValues/coFeed.d.ts.map +1 -1
  43. package/dist/tools/coValues/coList.d.ts.map +1 -1
  44. package/dist/tools/coValues/coMap.d.ts +5 -18
  45. package/dist/tools/coValues/coMap.d.ts.map +1 -1
  46. package/dist/tools/coValues/deepLoading.d.ts +4 -1
  47. package/dist/tools/coValues/deepLoading.d.ts.map +1 -1
  48. package/dist/tools/coValues/extensions/imageDef.d.ts +4 -7
  49. package/dist/tools/coValues/extensions/imageDef.d.ts.map +1 -1
  50. package/dist/tools/coValues/group.d.ts +1 -0
  51. package/dist/tools/coValues/group.d.ts.map +1 -1
  52. package/dist/tools/coValues/inbox.d.ts +2 -2
  53. package/dist/tools/coValues/inbox.d.ts.map +1 -1
  54. package/dist/tools/coValues/interfaces.d.ts +58 -17
  55. package/dist/tools/coValues/interfaces.d.ts.map +1 -1
  56. package/dist/tools/coValues/request.d.ts +82 -0
  57. package/dist/tools/coValues/request.d.ts.map +1 -0
  58. package/dist/tools/coValues/schemaUnion.d.ts +5 -1
  59. package/dist/tools/coValues/schemaUnion.d.ts.map +1 -1
  60. package/dist/tools/exports.d.ts +4 -3
  61. package/dist/tools/exports.d.ts.map +1 -1
  62. package/dist/tools/implementation/createContext.d.ts +4 -4
  63. package/dist/tools/implementation/createContext.d.ts.map +1 -1
  64. package/dist/tools/implementation/invites.d.ts +2 -2
  65. package/dist/tools/implementation/invites.d.ts.map +1 -1
  66. package/dist/tools/implementation/schemaUtils.d.ts +8 -0
  67. package/dist/tools/implementation/schemaUtils.d.ts.map +1 -0
  68. package/dist/tools/implementation/zodSchema/coExport.d.ts +11 -1
  69. package/dist/tools/implementation/zodSchema/coExport.d.ts.map +1 -1
  70. package/dist/tools/implementation/zodSchema/runtimeConverters/coValueSchemaTransformation.d.ts +22 -0
  71. package/dist/tools/implementation/zodSchema/runtimeConverters/coValueSchemaTransformation.d.ts.map +1 -0
  72. package/dist/tools/implementation/zodSchema/runtimeConverters/schemaFieldToCoFieldDef.d.ts +10 -0
  73. package/dist/tools/implementation/zodSchema/runtimeConverters/schemaFieldToCoFieldDef.d.ts.map +1 -0
  74. package/dist/tools/implementation/zodSchema/schemaTypes/AccountSchema.d.ts +11 -11
  75. package/dist/tools/implementation/zodSchema/schemaTypes/AccountSchema.d.ts.map +1 -1
  76. package/dist/tools/implementation/zodSchema/schemaTypes/CoDiscriminatedUnionSchema.d.ts +34 -24
  77. package/dist/tools/implementation/zodSchema/schemaTypes/CoDiscriminatedUnionSchema.d.ts.map +1 -1
  78. package/dist/tools/implementation/zodSchema/schemaTypes/CoFeedSchema.d.ts +16 -14
  79. package/dist/tools/implementation/zodSchema/schemaTypes/CoFeedSchema.d.ts.map +1 -1
  80. package/dist/tools/implementation/zodSchema/schemaTypes/CoListSchema.d.ts +23 -17
  81. package/dist/tools/implementation/zodSchema/schemaTypes/CoListSchema.d.ts.map +1 -1
  82. package/dist/tools/implementation/zodSchema/schemaTypes/CoMapSchema.d.ts +24 -16
  83. package/dist/tools/implementation/zodSchema/schemaTypes/CoMapSchema.d.ts.map +1 -1
  84. package/dist/tools/implementation/zodSchema/schemaTypes/CoOptionalSchema.d.ts +20 -9
  85. package/dist/tools/implementation/zodSchema/schemaTypes/CoOptionalSchema.d.ts.map +1 -1
  86. package/dist/tools/implementation/zodSchema/schemaTypes/CoRecordSchema.d.ts +18 -12
  87. package/dist/tools/implementation/zodSchema/schemaTypes/CoRecordSchema.d.ts.map +1 -1
  88. package/dist/tools/implementation/zodSchema/schemaTypes/CoValueSchema.d.ts +18 -0
  89. package/dist/tools/implementation/zodSchema/schemaTypes/CoValueSchema.d.ts.map +1 -0
  90. package/dist/tools/implementation/zodSchema/schemaTypes/FileStreamSchema.d.ts +14 -9
  91. package/dist/tools/implementation/zodSchema/schemaTypes/FileStreamSchema.d.ts.map +1 -1
  92. package/dist/tools/implementation/zodSchema/schemaTypes/PlainTextSchema.d.ts +14 -9
  93. package/dist/tools/implementation/zodSchema/schemaTypes/PlainTextSchema.d.ts.map +1 -1
  94. package/dist/tools/implementation/zodSchema/schemaTypes/RichTextSchema.d.ts +14 -9
  95. package/dist/tools/implementation/zodSchema/schemaTypes/RichTextSchema.d.ts.map +1 -1
  96. package/dist/tools/implementation/zodSchema/typeConverters/InstanceOfSchema.d.ts +15 -13
  97. package/dist/tools/implementation/zodSchema/typeConverters/InstanceOfSchema.d.ts.map +1 -1
  98. package/dist/tools/implementation/zodSchema/typeConverters/InstanceOfSchemaCoValuesNullable.d.ts +12 -15
  99. package/dist/tools/implementation/zodSchema/typeConverters/InstanceOfSchemaCoValuesNullable.d.ts.map +1 -1
  100. package/dist/tools/implementation/zodSchema/typeConverters/InstanceOrPrimitiveOfSchema.d.ts +17 -20
  101. package/dist/tools/implementation/zodSchema/typeConverters/InstanceOrPrimitiveOfSchema.d.ts.map +1 -1
  102. package/dist/tools/implementation/zodSchema/typeConverters/InstanceOrPrimitiveOfSchemaCoValuesNullable.d.ts +17 -20
  103. package/dist/tools/implementation/zodSchema/typeConverters/InstanceOrPrimitiveOfSchemaCoValuesNullable.d.ts.map +1 -1
  104. package/dist/tools/implementation/zodSchema/unionUtils.d.ts +3 -5
  105. package/dist/tools/implementation/zodSchema/unionUtils.d.ts.map +1 -1
  106. package/dist/tools/implementation/zodSchema/zodCo.d.ts +10 -8
  107. package/dist/tools/implementation/zodSchema/zodCo.d.ts.map +1 -1
  108. package/dist/tools/implementation/zodSchema/zodReExport.d.ts +4 -8
  109. package/dist/tools/implementation/zodSchema/zodReExport.d.ts.map +1 -1
  110. package/dist/tools/implementation/zodSchema/zodSchema.d.ts +21 -30
  111. package/dist/tools/implementation/zodSchema/zodSchema.d.ts.map +1 -1
  112. package/dist/tools/internal.d.ts +3 -2
  113. package/dist/tools/internal.d.ts.map +1 -1
  114. package/dist/tools/lib/id.d.ts +2 -0
  115. package/dist/tools/lib/id.d.ts.map +1 -0
  116. package/dist/tools/lib/utilityTypes.d.ts +10 -0
  117. package/dist/tools/lib/utilityTypes.d.ts.map +1 -0
  118. package/dist/tools/subscribe/SubscriptionScope.d.ts +3 -2
  119. package/dist/tools/subscribe/SubscriptionScope.d.ts.map +1 -1
  120. package/dist/tools/subscribe/utils.d.ts.map +1 -1
  121. package/dist/tools/testing.d.ts +2 -2
  122. package/dist/tools/testing.d.ts.map +1 -1
  123. package/dist/tools/tests/exportImport.test.d.ts +2 -0
  124. package/dist/tools/tests/exportImport.test.d.ts.map +1 -0
  125. package/dist/tools/tests/request.test.d.ts +2 -0
  126. package/dist/tools/tests/request.test.d.ts.map +1 -0
  127. package/dist/worker/index.d.ts.map +1 -1
  128. package/dist/worker/index.js +2 -2
  129. package/dist/worker/index.js.map +1 -1
  130. package/package.json +7 -6
  131. package/src/browser/index.ts +2 -4
  132. package/src/browser-media-images/index.ts +1 -1
  133. package/src/react/hooks.tsx +2 -2
  134. package/src/react-core/hooks.ts +6 -6
  135. package/src/react-core/tests/useAccount.test.ts +2 -2
  136. package/src/react-core/tests/useCoState.test.ts +3 -2
  137. package/src/react-native-core/hooks.tsx +2 -2
  138. package/src/svelte/jazz.class.svelte.ts +10 -7
  139. package/src/svelte/jazz.svelte.ts +2 -2
  140. package/src/tools/coValues/CoValueBase.ts +8 -20
  141. package/src/tools/coValues/account.ts +18 -14
  142. package/src/tools/coValues/coFeed.ts +0 -4
  143. package/src/tools/coValues/coList.ts +7 -9
  144. package/src/tools/coValues/coMap.ts +1 -6
  145. package/src/tools/coValues/coPlainText.ts +4 -4
  146. package/src/tools/coValues/deepLoading.ts +4 -1
  147. package/src/tools/coValues/extensions/imageDef.ts +3 -3
  148. package/src/tools/coValues/group.ts +1 -0
  149. package/src/tools/coValues/inbox.ts +8 -7
  150. package/src/tools/coValues/interfaces.ts +177 -69
  151. package/src/tools/coValues/request.ts +633 -0
  152. package/src/tools/coValues/schemaUnion.ts +8 -4
  153. package/src/tools/exports.ts +11 -14
  154. package/src/tools/implementation/createContext.ts +9 -9
  155. package/src/tools/implementation/invites.ts +2 -2
  156. package/src/tools/implementation/schemaUtils.ts +18 -0
  157. package/src/tools/implementation/zodSchema/coExport.ts +14 -0
  158. package/src/tools/implementation/zodSchema/runtimeConverters/coValueSchemaTransformation.ts +156 -0
  159. package/src/tools/implementation/zodSchema/runtimeConverters/schemaFieldToCoFieldDef.ts +133 -0
  160. package/src/tools/implementation/zodSchema/schemaTypes/AccountSchema.ts +36 -17
  161. package/src/tools/implementation/zodSchema/schemaTypes/CoDiscriminatedUnionSchema.ts +101 -52
  162. package/src/tools/implementation/zodSchema/schemaTypes/CoFeedSchema.ts +54 -50
  163. package/src/tools/implementation/zodSchema/schemaTypes/CoListSchema.ts +54 -46
  164. package/src/tools/implementation/zodSchema/schemaTypes/CoMapSchema.ts +187 -137
  165. package/src/tools/implementation/zodSchema/schemaTypes/CoOptionalSchema.ts +29 -27
  166. package/src/tools/implementation/zodSchema/schemaTypes/CoRecordSchema.ts +28 -18
  167. package/src/tools/implementation/zodSchema/schemaTypes/CoValueSchema.ts +18 -0
  168. package/src/tools/implementation/zodSchema/schemaTypes/FileStreamSchema.ts +45 -36
  169. package/src/tools/implementation/zodSchema/schemaTypes/PlainTextSchema.ts +47 -35
  170. package/src/tools/implementation/zodSchema/schemaTypes/RichTextSchema.ts +43 -30
  171. package/src/tools/implementation/zodSchema/typeConverters/InstanceOfSchema.ts +28 -23
  172. package/src/tools/implementation/zodSchema/typeConverters/InstanceOfSchemaCoValuesNullable.ts +28 -25
  173. package/src/tools/implementation/zodSchema/typeConverters/InstanceOrPrimitiveOfSchema.ts +86 -78
  174. package/src/tools/implementation/zodSchema/typeConverters/InstanceOrPrimitiveOfSchemaCoValuesNullable.ts +91 -82
  175. package/src/tools/implementation/zodSchema/unionUtils.ts +47 -51
  176. package/src/tools/implementation/zodSchema/zodCo.ts +42 -75
  177. package/src/tools/implementation/zodSchema/zodReExport.ts +44 -24
  178. package/src/tools/implementation/zodSchema/zodSchema.ts +64 -102
  179. package/src/tools/internal.ts +3 -2
  180. package/src/tools/lib/id.ts +3 -0
  181. package/src/tools/lib/utilityTypes.ts +7 -0
  182. package/src/tools/subscribe/SubscriptionScope.ts +10 -1
  183. package/src/tools/subscribe/utils.ts +4 -2
  184. package/src/tools/testing.ts +4 -4
  185. package/src/tools/tests/ContextManager.test.ts +8 -9
  186. package/src/tools/tests/account.test.ts +65 -3
  187. package/src/tools/tests/coDiscriminatedUnion.test-d.ts +38 -0
  188. package/src/tools/tests/coDiscriminatedUnion.test.ts +219 -1
  189. package/src/tools/tests/coFeed.test-d.ts +4 -3
  190. package/src/tools/tests/coList.test-d.ts +32 -3
  191. package/src/tools/tests/coList.test.ts +20 -2
  192. package/src/tools/tests/coMap.record.test-d.ts +31 -3
  193. package/src/tools/tests/coMap.record.test.ts +9 -9
  194. package/src/tools/tests/coMap.test-d.ts +8 -8
  195. package/src/tools/tests/coMap.test.ts +19 -5
  196. package/src/tools/tests/coOptional.test.ts +63 -1
  197. package/src/tools/tests/createContext.test.ts +7 -9
  198. package/src/tools/tests/deepLoading.test.ts +4 -10
  199. package/src/tools/tests/exportImport.test.ts +526 -0
  200. package/src/tools/tests/groupsAndAccounts.test.ts +5 -4
  201. package/src/tools/tests/inbox.test.ts +3 -2
  202. package/src/tools/tests/load.test.ts +3 -29
  203. package/src/tools/tests/request.test.ts +951 -0
  204. package/src/tools/tests/schemaUnion.test.ts +2 -2
  205. package/src/tools/tests/subscribe.test.ts +22 -114
  206. package/src/tools/tests/testing.test.ts +6 -6
  207. package/src/tools/tests/zod.test-d.ts +27 -0
  208. package/src/tools/tests/zod.test.ts +50 -45
  209. package/src/worker/index.ts +0 -1
  210. package/tsup.config.ts +0 -2
  211. package/dist/chunk-4CFNXQE7.js.map +0 -1
  212. package/dist/tools/implementation/zodSchema/runtimeConverters/zodFieldToCoFieldDef.d.ts +0 -12
  213. package/dist/tools/implementation/zodSchema/runtimeConverters/zodFieldToCoFieldDef.d.ts.map +0 -1
  214. package/dist/tools/implementation/zodSchema/runtimeConverters/zodSchemaToCoSchema.d.ts +0 -9
  215. package/dist/tools/implementation/zodSchema/runtimeConverters/zodSchemaToCoSchema.d.ts.map +0 -1
  216. package/src/tools/implementation/zodSchema/runtimeConverters/zodFieldToCoFieldDef.ts +0 -172
  217. package/src/tools/implementation/zodSchema/runtimeConverters/zodSchemaToCoSchema.ts +0 -218
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/react/provider.tsx","../../src/react/hooks.tsx","../../src/react/index.ts","../../src/react/auth/Clerk.tsx","../../src/react/auth/DemoAuth.tsx","../../src/react/auth/PasskeyAuth.tsx","../../src/react/auth/PassphraseAuth.tsx","../../src/react/auth/auth.ts","../../src/react/media.tsx"],"sourcesContent":["import {\n Account,\n AccountClass,\n AnyAccountSchema,\n CoValueFromRaw,\n InstanceOfSchema,\n JazzContextType,\n} from \"jazz-tools\";\nimport {\n JazzBrowserContextManager,\n JazzContextManagerProps,\n} from \"jazz-tools/browser\";\nimport { JazzContext, JazzContextManagerContext } from \"jazz-tools/react-core\";\nimport React, { useEffect, useRef } from \"react\";\n\nexport type JazzProviderProps<\n S extends\n | (AccountClass<Account> & CoValueFromRaw<Account>)\n | AnyAccountSchema,\n> = {\n children: React.ReactNode;\n enableSSR?: boolean;\n} & JazzContextManagerProps<S>;\n\n/** @category Context & Hooks */\nexport function JazzReactProvider<\n S extends\n | (AccountClass<Account> & CoValueFromRaw<Account>)\n | AnyAccountSchema,\n>({\n children,\n guestMode,\n sync,\n storage,\n AccountSchema,\n defaultProfileName,\n onLogOut,\n logOutReplacement,\n onAnonymousAccountDiscarded,\n enableSSR,\n}: JazzProviderProps<S>) {\n const [contextManager] = React.useState(\n () =>\n new JazzBrowserContextManager<S>({\n useAnonymousFallback: enableSSR,\n }),\n );\n\n const onLogOutRefCallback = useRefCallback(onLogOut);\n const logOutReplacementRefCallback = useRefCallback(logOutReplacement);\n const onAnonymousAccountDiscardedRefCallback = useRefCallback(\n onAnonymousAccountDiscarded,\n );\n const logoutReplacementActiveRef = useRef(false);\n logoutReplacementActiveRef.current = Boolean(logOutReplacement);\n\n const value = React.useSyncExternalStore<\n JazzContextType<InstanceOfSchema<S>> | undefined\n >(\n React.useCallback(\n (callback) => {\n const props = {\n AccountSchema,\n guestMode,\n sync,\n storage,\n defaultProfileName,\n onLogOut: onLogOutRefCallback,\n logOutReplacement: logoutReplacementActiveRef.current\n ? logOutReplacementRefCallback\n : undefined,\n onAnonymousAccountDiscarded: onAnonymousAccountDiscardedRefCallback,\n } satisfies JazzContextManagerProps<S>;\n\n if (contextManager.propsChanged(props)) {\n contextManager.createContext(props).catch((error) => {\n console.log(error.stack);\n console.error(\"Error creating Jazz browser context:\", error);\n });\n }\n\n return contextManager.subscribe(callback);\n },\n [sync, guestMode].concat(storage as any),\n ),\n () => contextManager.getCurrentValue(),\n () => contextManager.getCurrentValue(),\n );\n\n useEffect(() => {\n // In development mode we don't return a cleanup function because otherwise\n // the double effect execution would mark the context as done immediately.\n if (process.env.NODE_ENV === \"development\") return;\n\n return () => {\n contextManager.done();\n };\n }, []);\n\n return (\n <JazzContext.Provider value={value}>\n <JazzContextManagerContext.Provider value={contextManager}>\n {value && children}\n </JazzContextManagerContext.Provider>\n </JazzContext.Provider>\n );\n}\n\nfunction useRefCallback<T extends (...args: any[]) => any>(callback?: T) {\n const callbackRef = React.useRef(callback);\n callbackRef.current = callback;\n return useRef(\n (...args: Parameters<T>): ReturnType<T> => callbackRef.current?.(...args),\n ).current;\n}\n","import { consumeInviteLinkFromWindowLocation } from \"jazz-tools/browser\";\nimport { useEffect } from \"react\";\n\nimport { CoValueOrZodSchema } from \"jazz-tools\";\nimport { useJazzContext } from \"jazz-tools/react-core\";\n\nexport { useCoState, useAuthSecretStorage } from \"jazz-tools/react-core\";\n\nexport function useAcceptInvite<S extends CoValueOrZodSchema>({\n invitedObjectSchema,\n onAccept,\n forValueHint,\n}: {\n invitedObjectSchema: S;\n onAccept: (valueID: string) => void;\n forValueHint?: string;\n}): void {\n const context = useJazzContext();\n\n if (!(\"me\" in context)) {\n throw new Error(\n \"useAcceptInvite can't be used in a JazzProvider with auth === 'guest'.\",\n );\n }\n\n useEffect(() => {\n const handleInvite = () => {\n const result = consumeInviteLinkFromWindowLocation({\n as: context.me,\n invitedObjectSchema,\n forValueHint,\n });\n\n result\n .then((result) => result && onAccept(result?.valueID))\n .catch((e) => {\n console.error(\"Failed to accept invite\", e);\n });\n };\n\n handleInvite();\n\n window.addEventListener(\"hashchange\", handleInvite);\n\n return () => window.removeEventListener(\"hashchange\", handleInvite);\n }, [onAccept]);\n}\n\nexport {\n experimental_useInboxSender,\n useJazzContext,\n useAccount,\n} from \"jazz-tools/react-core\";\n","export { JazzReactProvider } from \"./provider.js\";\nexport type { JazzProviderProps } from \"./provider.js\";\nexport {\n useAccount,\n useCoState,\n useAcceptInvite,\n experimental_useInboxSender,\n useJazzContext,\n useAuthSecretStorage,\n} from \"./hooks.js\";\n\nexport { createInviteLink, parseInviteLink } from \"jazz-tools/browser\";\n\nexport * from \"./auth/auth.js\";\nexport * from \"./media.js\";\nexport { createImage } from \"jazz-tools/browser-media-images\";\n","import { JazzClerkAuth, type MinimalClerkClient } from \"jazz-tools\";\nimport {\n Account,\n AccountClass,\n AnyAccountSchema,\n CoValueFromRaw,\n InMemoryKVStore,\n KvStoreContext,\n} from \"jazz-tools\";\nimport { LocalStorageKVStore } from \"jazz-tools/browser\";\nimport { useAuthSecretStorage, useJazzContext } from \"jazz-tools/react-core\";\nimport { useEffect, useMemo, useState } from \"react\";\nimport { JazzProviderProps, JazzReactProvider } from \"../provider.js\";\n\nfunction useJazzClerkAuth(clerk: MinimalClerkClient) {\n const context = useJazzContext();\n const authSecretStorage = useAuthSecretStorage();\n\n if (\"guest\" in context) {\n throw new Error(\"Clerk auth is not supported in guest mode\");\n }\n\n const authMethod = useMemo(() => {\n return new JazzClerkAuth(context.authenticate, authSecretStorage);\n }, []);\n\n useEffect(() => {\n return authMethod.registerListener(clerk);\n }, []);\n}\n\nfunction RegisterClerkAuth(props: {\n clerk: MinimalClerkClient;\n children: React.ReactNode;\n}) {\n useJazzClerkAuth(props.clerk);\n\n return props.children;\n}\n\nexport const JazzReactProviderWithClerk = <\n S extends\n | (AccountClass<Account> & CoValueFromRaw<Account>)\n | AnyAccountSchema,\n>(\n props: { clerk: MinimalClerkClient } & JazzProviderProps<S>,\n) => {\n const [isLoaded, setIsLoaded] = useState(false);\n\n /**\n * This effect ensures that a logged-in Clerk user is authenticated before the JazzReactProvider is mounted.\n *\n * This is done to optimize the initial load.\n */\n useEffect(() => {\n setupKvStore();\n\n JazzClerkAuth.initializeAuth(props.clerk).then(() => {\n setIsLoaded(true);\n });\n }, []);\n\n if (!isLoaded) {\n return null;\n }\n\n return (\n <JazzReactProvider {...props} logOutReplacement={props.clerk.signOut}>\n <RegisterClerkAuth clerk={props.clerk}>\n {props.children}\n </RegisterClerkAuth>\n </JazzReactProvider>\n );\n};\n\nfunction setupKvStore() {\n KvStoreContext.getInstance().initialize(\n typeof window === \"undefined\"\n ? new InMemoryKVStore()\n : new LocalStorageKVStore(),\n );\n}\n","import { useDemoAuth } from \"jazz-tools/react-core\";\nimport { useState } from \"react\";\n\nexport const DemoAuthBasicUI = (props: {\n appName: string;\n children?: React.ReactNode;\n}) => {\n const auth = useDemoAuth();\n\n const [username, setUsername] = useState<string>(\"\");\n\n const darkMode =\n typeof window !== \"undefined\"\n ? window.matchMedia(\"(prefers-color-scheme: dark)\").matches\n : false;\n\n if (auth.state === \"signedIn\") return props.children ?? null;\n\n const { signUp, logIn, existingUsers } = auth;\n\n return (\n <div\n style={{\n minHeight: \"100%\",\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"center\",\n width: \"18rem\",\n maxWidth: \"calc(100vw - 2rem)\",\n gap: \"2rem\",\n margin: \"0 auto\",\n }}\n >\n <h1\n style={{\n color: darkMode ? \"#fff\" : \"#000\",\n textAlign: \"center\",\n fontSize: \"1.5rem\",\n fontWeight: \"bold\",\n }}\n >\n {props.appName}\n </h1>\n <form\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"0.5rem\",\n }}\n onSubmit={(e) => {\n e.preventDefault();\n signUp(username);\n }}\n >\n <input\n placeholder=\"Display name\"\n value={username}\n onChange={(e) => setUsername(e.target.value)}\n autoComplete=\"webauthn\"\n style={{\n border: darkMode ? \"1px solid #444\" : \"1px solid #ddd\",\n padding: \"11px 8px\",\n borderRadius: \"6px\",\n background: darkMode ? \"#000\" : \"#fff\",\n color: darkMode ? \"#fff\" : \"#000\",\n }}\n />\n <input\n type=\"submit\"\n value=\"Sign up\"\n style={{\n padding: \"13px 5px\",\n border: \"none\",\n borderRadius: \"6px\",\n cursor: \"pointer\",\n background: darkMode ? \"#444\" : \"#ddd\",\n color: darkMode ? \"#fff\" : \"#000\",\n }}\n />\n </form>\n {existingUsers.length > 0 && (\n <div\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"0.5rem\",\n }}\n >\n <p\n style={{\n color: darkMode ? \"#e2e2e2\" : \"#000\",\n textAlign: \"center\",\n paddingTop: \"0.5rem\",\n borderTop: \"1px solid\",\n borderColor: darkMode ? \"#111\" : \"#e2e2e2\",\n }}\n >\n Log in as\n </p>\n {existingUsers.map((user) => (\n <button\n key={user}\n onClick={() => logIn(user)}\n type=\"button\"\n aria-label={`Log in as ${user}`}\n style={{\n background: darkMode ? \"#0d0d0d\" : \"#eee\",\n color: darkMode ? \"#fff\" : \"#000\",\n padding: \"0.5rem\",\n border: \"none\",\n borderRadius: \"6px\",\n }}\n >\n {user}\n </button>\n ))}\n </div>\n )}\n </div>\n );\n};\n","import { BrowserPasskeyAuth } from \"jazz-tools/browser\";\nimport {\n useAuthSecretStorage,\n useIsAuthenticated,\n useJazzContext,\n} from \"jazz-tools/react-core\";\nimport { useMemo, useState } from \"react\";\n\n/**\n * `usePasskeyAuth` hook provides a `JazzAuth` object for passkey authentication.\n *\n * @example\n * ```ts\n * const auth = usePasskeyAuth({ appName, appHostname });\n * ```\n *\n * @category Auth Providers\n */\nexport function usePasskeyAuth({\n appName,\n appHostname,\n}: {\n appName: string;\n appHostname?: string;\n}) {\n const context = useJazzContext();\n const authSecretStorage = useAuthSecretStorage();\n\n if (\"guest\" in context) {\n throw new Error(\"Passkey auth is not supported in guest mode\");\n }\n\n const authMethod = useMemo(() => {\n return new BrowserPasskeyAuth(\n context.node.crypto,\n context.authenticate,\n authSecretStorage,\n appName,\n appHostname,\n );\n }, [appName, appHostname, authSecretStorage]);\n\n const isAuthenticated = useIsAuthenticated();\n\n return {\n state: isAuthenticated ? \"signedIn\" : \"anonymous\",\n logIn: authMethod.logIn,\n signUp: authMethod.signUp,\n } as const;\n}\n\nexport const PasskeyAuthBasicUI = (props: {\n appName: string;\n appHostname?: string;\n children?: React.ReactNode;\n}) => {\n const [username, setUsername] = useState<string>(\"\");\n const [error, setError] = useState<string | null>(null);\n\n const auth = usePasskeyAuth({\n appName: props.appName,\n appHostname: props.appHostname,\n });\n\n if (auth.state === \"signedIn\") {\n return props.children ?? null;\n }\n\n const { logIn, signUp } = auth;\n\n function handleError(error: Error) {\n if (error.cause instanceof Error) {\n setError(error.cause.message);\n } else {\n setError(error.message);\n }\n }\n\n return (\n <div\n style={{\n width: \"100vw\",\n height: \"100vh\",\n display: \"flex\",\n flexWrap: \"wrap\",\n justifyContent: \"center\",\n alignItems: error ? \"inherit\" : \"center\",\n }}\n >\n {error && (\n <div\n style={{\n color: \"red\",\n width: \"100%\",\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"end\",\n padding: \"1rem\",\n }}\n >\n {error}\n </div>\n )}\n <div\n style={{\n width: \"18rem\",\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"2rem\",\n }}\n >\n <form\n style={{\n width: \"18rem\",\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"0.5rem\",\n }}\n onSubmit={(e) => {\n e.preventDefault();\n setError(null);\n signUp(username).catch(handleError);\n }}\n >\n <input\n placeholder=\"Display name\"\n value={username}\n onChange={(e) => setUsername(e.target.value)}\n autoComplete=\"webauthn\"\n style={{\n border: \"2px solid #000\",\n padding: \"11px 8px\",\n borderRadius: \"6px\",\n }}\n />\n <input\n type=\"submit\"\n value=\"Sign up\"\n style={{\n background: \"#000\",\n color: \"#fff\",\n padding: \"13px 5px\",\n border: \"none\",\n borderRadius: \"6px\",\n cursor: \"pointer\",\n }}\n />\n </form>\n <button\n onClick={() => {\n setError(null);\n logIn().catch(handleError);\n }}\n style={{\n background: \"#000\",\n color: \"#fff\",\n padding: \"13px 5px\",\n border: \"none\",\n borderRadius: \"6px\",\n cursor: \"pointer\",\n }}\n >\n Log in with existing account\n </button>\n </div>\n </div>\n );\n};\n","import { usePassphraseAuth } from \"jazz-tools/react-core\";\nimport { useState } from \"react\";\n\nexport function PassphraseAuthBasicUI(props: {\n appName: string;\n wordlist: string[];\n children?: React.ReactNode;\n}) {\n const auth = usePassphraseAuth({\n wordlist: props.wordlist,\n });\n\n const [step, setStep] = useState<\"initial\" | \"create\" | \"login\">(\"initial\");\n const [loginPassphrase, setLoginPassphrase] = useState(\"\");\n const [isCopied, setIsCopied] = useState(false);\n\n if (auth.state === \"signedIn\") {\n return props.children ?? null;\n }\n\n const handleCreateAccount = async () => {\n setStep(\"create\");\n };\n\n const handleLogin = () => {\n setStep(\"login\");\n };\n\n const handleBack = () => {\n setStep(\"initial\");\n setLoginPassphrase(\"\");\n };\n\n const handleCopy = async () => {\n await navigator.clipboard.writeText(auth.passphrase);\n setIsCopied(true);\n };\n\n const handleLoginSubmit = async () => {\n await auth.logIn(loginPassphrase); // Sets the state to signed in\n\n // Reset the state in case of logout\n setStep(\"initial\");\n setLoginPassphrase(\"\");\n };\n\n const handleNext = async () => {\n await auth.signUp(); // Sets the state to signed in\n\n // Reset the state in case of logout\n setStep(\"initial\");\n setLoginPassphrase(\"\");\n };\n\n return (\n <div style={containerStyle}>\n <div style={cardStyle}>\n {step === \"initial\" && (\n <div>\n <h1 style={headingStyle}>{props.appName}</h1>\n <button onClick={handleCreateAccount} style={primaryButtonStyle}>\n Create new account\n </button>\n <button onClick={handleLogin} style={secondaryButtonStyle}>\n Log in\n </button>\n </div>\n )}\n\n {step === \"create\" && (\n <>\n <h1 style={headingStyle}>Your Passphrase</h1>\n <p\n style={{\n fontSize: \"0.875rem\",\n color: \"#4b5563\",\n textAlign: \"center\",\n marginBottom: \"1rem\",\n }}\n >\n Please copy and store this passphrase somewhere safe. You'll need\n it to log in.\n </p>\n <textarea\n readOnly\n value={auth.passphrase}\n style={textareaStyle}\n rows={5}\n />\n <div\n style={{\n display: \"flex\",\n justifyContent: \"space-between\",\n gap: \"1rem\",\n }}\n >\n <button onClick={handleBack} style={secondaryButtonStyle}>\n Back\n </button>\n <button onClick={handleCopy} style={primaryButtonStyle}>\n {isCopied ? \"Copied!\" : \"Copy Passphrase\"}\n </button>\n <button onClick={handleNext} style={primaryButtonStyle}>\n I have saved it!\n </button>\n </div>\n </>\n )}\n\n {step === \"login\" && (\n <div>\n <h1 style={headingStyle}>Log In</h1>\n <textarea\n value={loginPassphrase}\n onChange={(e) => setLoginPassphrase(e.target.value)}\n placeholder=\"Enter your passphrase\"\n style={textareaStyle}\n rows={5}\n />\n <div\n style={{\n display: \"flex\",\n justifyContent: \"space-between\",\n gap: \"1rem\",\n }}\n >\n <button onClick={handleBack} style={secondaryButtonStyle}>\n Back\n </button>\n <button onClick={handleLoginSubmit} style={primaryButtonStyle}>\n Log In\n </button>\n </div>\n </div>\n )}\n </div>\n </div>\n );\n}\n\nconst containerStyle: React.CSSProperties = {\n minHeight: \"100vh\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n backgroundColor: \"#f3f4f6\",\n};\n\nconst cardStyle: React.CSSProperties = {\n backgroundColor: \"white\",\n padding: \"2rem\",\n borderRadius: \"0.5rem\",\n boxShadow:\n \"0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06)\",\n width: \"24rem\",\n};\n\nconst buttonStyle: React.CSSProperties = {\n width: \"100%\",\n padding: \"0.5rem 1rem\",\n borderRadius: \"0.25rem\",\n fontWeight: \"bold\",\n cursor: \"pointer\",\n marginBottom: \"1rem\",\n};\n\nconst primaryButtonStyle: React.CSSProperties = {\n ...buttonStyle,\n backgroundColor: \"black\",\n color: \"white\",\n border: \"none\",\n};\n\nconst secondaryButtonStyle: React.CSSProperties = {\n ...buttonStyle,\n backgroundColor: \"white\",\n color: \"black\",\n border: \"1px solid black\",\n};\n\nconst headingStyle: React.CSSProperties = {\n color: \"black\",\n fontSize: \"1.5rem\",\n fontWeight: \"bold\",\n textAlign: \"center\",\n marginBottom: \"1rem\",\n};\n\nconst textareaStyle: React.CSSProperties = {\n width: \"100%\",\n padding: \"0.5rem\",\n border: \"1px solid #d1d5db\",\n borderRadius: \"0.25rem\",\n marginBottom: \"1rem\",\n boxSizing: \"border-box\",\n};\n","export { JazzReactProviderWithClerk } from \"./Clerk.js\";\nexport { DemoAuthBasicUI } from \"./DemoAuth.js\";\nexport { usePasskeyAuth, PasskeyAuthBasicUI } from \"./PasskeyAuth.js\";\nexport { PassphraseAuthBasicUI } from \"./PassphraseAuth.js\";\nexport {\n useIsAuthenticated,\n useDemoAuth,\n usePassphraseAuth,\n} from \"jazz-tools/react-core\";\n","import { ImageDefinition, Loaded } from \"jazz-tools\";\nimport React, { useEffect, useState } from \"react\";\n\n/** @category Media */\nexport function useProgressiveImg({\n image,\n maxWidth,\n targetWidth,\n}: {\n image: Loaded<typeof ImageDefinition> | null | undefined;\n maxWidth?: number;\n targetWidth?: number;\n}) {\n const [current, setCurrent] = useState<\n { src?: string; res?: `${number}x${number}` | \"placeholder\" } | undefined\n >(undefined);\n\n useEffect(() => {\n let lastHighestRes: string | undefined;\n if (!image) return;\n const unsub = image.subscribe({}, (update) => {\n const highestRes = ImageDefinition.highestResAvailable(update, {\n maxWidth,\n targetWidth,\n });\n if (highestRes) {\n if (highestRes.res !== lastHighestRes) {\n lastHighestRes = highestRes.res;\n const blob = highestRes.stream.toBlob();\n if (blob) {\n const blobURI = URL.createObjectURL(blob);\n setCurrent({ src: blobURI, res: highestRes.res });\n return () => {\n setTimeout(() => URL.revokeObjectURL(blobURI), 200);\n };\n }\n }\n } else {\n setCurrent({\n src: update?.placeholderDataURL,\n res: \"placeholder\",\n });\n }\n });\n\n return unsub;\n }, [image?.id, maxWidth]);\n\n return {\n src: current?.src,\n res: current?.res,\n originalSize: image?.originalSize,\n };\n}\n\n/** @category Media */\nexport function ProgressiveImg({\n children,\n image,\n maxWidth,\n targetWidth,\n}: {\n children: (result: {\n src: string | undefined;\n res: `${number}x${number}` | \"placeholder\" | undefined;\n originalSize: readonly [number, number] | undefined;\n }) => React.ReactNode;\n image: Loaded<typeof ImageDefinition> | null | undefined;\n maxWidth?: number;\n targetWidth?: number;\n}): React.ReactNode {\n const result = useProgressiveImg({ image, maxWidth, targetWidth });\n return result ? children(result) : null;\n}\n"],"mappings":"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","names":["useEffect","useJazzContext","result","useAuthSecretStorage","useJazzContext","useEffect","jsx","useJazzContext","useAuthSecretStorage","useEffect","useState","jsx","useAuthSecretStorage","useJazzContext","useMemo","useState","jsx","jsxs","error","useState","jsx","jsxs","useIsAuthenticated","useDemoAuth","usePassphraseAuth","useEffect","useState"]}
1
+ {"version":3,"sources":["../../src/react/provider.tsx","../../src/react/hooks.tsx","../../src/react/index.ts","../../src/react/auth/Clerk.tsx","../../src/react/auth/DemoAuth.tsx","../../src/react/auth/PasskeyAuth.tsx","../../src/react/auth/PassphraseAuth.tsx","../../src/react/auth/auth.ts","../../src/react/media.tsx"],"sourcesContent":["import {\n Account,\n AccountClass,\n AnyAccountSchema,\n CoValueFromRaw,\n InstanceOfSchema,\n JazzContextType,\n} from \"jazz-tools\";\nimport {\n JazzBrowserContextManager,\n JazzContextManagerProps,\n} from \"jazz-tools/browser\";\nimport { JazzContext, JazzContextManagerContext } from \"jazz-tools/react-core\";\nimport React, { useEffect, useRef } from \"react\";\n\nexport type JazzProviderProps<\n S extends\n | (AccountClass<Account> & CoValueFromRaw<Account>)\n | AnyAccountSchema,\n> = {\n children: React.ReactNode;\n enableSSR?: boolean;\n} & JazzContextManagerProps<S>;\n\n/** @category Context & Hooks */\nexport function JazzReactProvider<\n S extends\n | (AccountClass<Account> & CoValueFromRaw<Account>)\n | AnyAccountSchema,\n>({\n children,\n guestMode,\n sync,\n storage,\n AccountSchema,\n defaultProfileName,\n onLogOut,\n logOutReplacement,\n onAnonymousAccountDiscarded,\n enableSSR,\n}: JazzProviderProps<S>) {\n const [contextManager] = React.useState(\n () =>\n new JazzBrowserContextManager<S>({\n useAnonymousFallback: enableSSR,\n }),\n );\n\n const onLogOutRefCallback = useRefCallback(onLogOut);\n const logOutReplacementRefCallback = useRefCallback(logOutReplacement);\n const onAnonymousAccountDiscardedRefCallback = useRefCallback(\n onAnonymousAccountDiscarded,\n );\n const logoutReplacementActiveRef = useRef(false);\n logoutReplacementActiveRef.current = Boolean(logOutReplacement);\n\n const value = React.useSyncExternalStore<\n JazzContextType<InstanceOfSchema<S>> | undefined\n >(\n React.useCallback(\n (callback) => {\n const props = {\n AccountSchema,\n guestMode,\n sync,\n storage,\n defaultProfileName,\n onLogOut: onLogOutRefCallback,\n logOutReplacement: logoutReplacementActiveRef.current\n ? logOutReplacementRefCallback\n : undefined,\n onAnonymousAccountDiscarded: onAnonymousAccountDiscardedRefCallback,\n } satisfies JazzContextManagerProps<S>;\n\n if (contextManager.propsChanged(props)) {\n contextManager.createContext(props).catch((error) => {\n console.log(error.stack);\n console.error(\"Error creating Jazz browser context:\", error);\n });\n }\n\n return contextManager.subscribe(callback);\n },\n [sync, guestMode].concat(storage as any),\n ),\n () => contextManager.getCurrentValue(),\n () => contextManager.getCurrentValue(),\n );\n\n useEffect(() => {\n // In development mode we don't return a cleanup function because otherwise\n // the double effect execution would mark the context as done immediately.\n if (process.env.NODE_ENV === \"development\") return;\n\n return () => {\n contextManager.done();\n };\n }, []);\n\n return (\n <JazzContext.Provider value={value}>\n <JazzContextManagerContext.Provider value={contextManager}>\n {value && children}\n </JazzContextManagerContext.Provider>\n </JazzContext.Provider>\n );\n}\n\nfunction useRefCallback<T extends (...args: any[]) => any>(callback?: T) {\n const callbackRef = React.useRef(callback);\n callbackRef.current = callback;\n return useRef(\n (...args: Parameters<T>): ReturnType<T> => callbackRef.current?.(...args),\n ).current;\n}\n","import { consumeInviteLinkFromWindowLocation } from \"jazz-tools/browser\";\nimport { useEffect } from \"react\";\n\nimport { CoValueClassOrSchema } from \"jazz-tools\";\nimport { useJazzContext } from \"jazz-tools/react-core\";\n\nexport { useCoState, useAuthSecretStorage } from \"jazz-tools/react-core\";\n\nexport function useAcceptInvite<S extends CoValueClassOrSchema>({\n invitedObjectSchema,\n onAccept,\n forValueHint,\n}: {\n invitedObjectSchema: S;\n onAccept: (valueID: string) => void;\n forValueHint?: string;\n}): void {\n const context = useJazzContext();\n\n if (!(\"me\" in context)) {\n throw new Error(\n \"useAcceptInvite can't be used in a JazzProvider with auth === 'guest'.\",\n );\n }\n\n useEffect(() => {\n const handleInvite = () => {\n const result = consumeInviteLinkFromWindowLocation({\n as: context.me,\n invitedObjectSchema,\n forValueHint,\n });\n\n result\n .then((result) => result && onAccept(result?.valueID))\n .catch((e) => {\n console.error(\"Failed to accept invite\", e);\n });\n };\n\n handleInvite();\n\n window.addEventListener(\"hashchange\", handleInvite);\n\n return () => window.removeEventListener(\"hashchange\", handleInvite);\n }, [onAccept]);\n}\n\nexport {\n experimental_useInboxSender,\n useJazzContext,\n useAccount,\n} from \"jazz-tools/react-core\";\n","export { JazzReactProvider } from \"./provider.js\";\nexport type { JazzProviderProps } from \"./provider.js\";\nexport {\n useAccount,\n useCoState,\n useAcceptInvite,\n experimental_useInboxSender,\n useJazzContext,\n useAuthSecretStorage,\n} from \"./hooks.js\";\n\nexport { createInviteLink, parseInviteLink } from \"jazz-tools/browser\";\n\nexport * from \"./auth/auth.js\";\nexport * from \"./media.js\";\nexport { createImage } from \"jazz-tools/browser-media-images\";\n","import { JazzClerkAuth, type MinimalClerkClient } from \"jazz-tools\";\nimport {\n Account,\n AccountClass,\n AnyAccountSchema,\n CoValueFromRaw,\n InMemoryKVStore,\n KvStoreContext,\n} from \"jazz-tools\";\nimport { LocalStorageKVStore } from \"jazz-tools/browser\";\nimport { useAuthSecretStorage, useJazzContext } from \"jazz-tools/react-core\";\nimport { useEffect, useMemo, useState } from \"react\";\nimport { JazzProviderProps, JazzReactProvider } from \"../provider.js\";\n\nfunction useJazzClerkAuth(clerk: MinimalClerkClient) {\n const context = useJazzContext();\n const authSecretStorage = useAuthSecretStorage();\n\n if (\"guest\" in context) {\n throw new Error(\"Clerk auth is not supported in guest mode\");\n }\n\n const authMethod = useMemo(() => {\n return new JazzClerkAuth(context.authenticate, authSecretStorage);\n }, []);\n\n useEffect(() => {\n return authMethod.registerListener(clerk);\n }, []);\n}\n\nfunction RegisterClerkAuth(props: {\n clerk: MinimalClerkClient;\n children: React.ReactNode;\n}) {\n useJazzClerkAuth(props.clerk);\n\n return props.children;\n}\n\nexport const JazzReactProviderWithClerk = <\n S extends\n | (AccountClass<Account> & CoValueFromRaw<Account>)\n | AnyAccountSchema,\n>(\n props: { clerk: MinimalClerkClient } & JazzProviderProps<S>,\n) => {\n const [isLoaded, setIsLoaded] = useState(false);\n\n /**\n * This effect ensures that a logged-in Clerk user is authenticated before the JazzReactProvider is mounted.\n *\n * This is done to optimize the initial load.\n */\n useEffect(() => {\n setupKvStore();\n\n JazzClerkAuth.initializeAuth(props.clerk).then(() => {\n setIsLoaded(true);\n });\n }, []);\n\n if (!isLoaded) {\n return null;\n }\n\n return (\n <JazzReactProvider {...props} logOutReplacement={props.clerk.signOut}>\n <RegisterClerkAuth clerk={props.clerk}>\n {props.children}\n </RegisterClerkAuth>\n </JazzReactProvider>\n );\n};\n\nfunction setupKvStore() {\n KvStoreContext.getInstance().initialize(\n typeof window === \"undefined\"\n ? new InMemoryKVStore()\n : new LocalStorageKVStore(),\n );\n}\n","import { useDemoAuth } from \"jazz-tools/react-core\";\nimport { useState } from \"react\";\n\nexport const DemoAuthBasicUI = (props: {\n appName: string;\n children?: React.ReactNode;\n}) => {\n const auth = useDemoAuth();\n\n const [username, setUsername] = useState<string>(\"\");\n\n const darkMode =\n typeof window !== \"undefined\"\n ? window.matchMedia(\"(prefers-color-scheme: dark)\").matches\n : false;\n\n if (auth.state === \"signedIn\") return props.children ?? null;\n\n const { signUp, logIn, existingUsers } = auth;\n\n return (\n <div\n style={{\n minHeight: \"100%\",\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"center\",\n width: \"18rem\",\n maxWidth: \"calc(100vw - 2rem)\",\n gap: \"2rem\",\n margin: \"0 auto\",\n }}\n >\n <h1\n style={{\n color: darkMode ? \"#fff\" : \"#000\",\n textAlign: \"center\",\n fontSize: \"1.5rem\",\n fontWeight: \"bold\",\n }}\n >\n {props.appName}\n </h1>\n <form\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"0.5rem\",\n }}\n onSubmit={(e) => {\n e.preventDefault();\n signUp(username);\n }}\n >\n <input\n placeholder=\"Display name\"\n value={username}\n onChange={(e) => setUsername(e.target.value)}\n autoComplete=\"webauthn\"\n style={{\n border: darkMode ? \"1px solid #444\" : \"1px solid #ddd\",\n padding: \"11px 8px\",\n borderRadius: \"6px\",\n background: darkMode ? \"#000\" : \"#fff\",\n color: darkMode ? \"#fff\" : \"#000\",\n }}\n />\n <input\n type=\"submit\"\n value=\"Sign up\"\n style={{\n padding: \"13px 5px\",\n border: \"none\",\n borderRadius: \"6px\",\n cursor: \"pointer\",\n background: darkMode ? \"#444\" : \"#ddd\",\n color: darkMode ? \"#fff\" : \"#000\",\n }}\n />\n </form>\n {existingUsers.length > 0 && (\n <div\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"0.5rem\",\n }}\n >\n <p\n style={{\n color: darkMode ? \"#e2e2e2\" : \"#000\",\n textAlign: \"center\",\n paddingTop: \"0.5rem\",\n borderTop: \"1px solid\",\n borderColor: darkMode ? \"#111\" : \"#e2e2e2\",\n }}\n >\n Log in as\n </p>\n {existingUsers.map((user) => (\n <button\n key={user}\n onClick={() => logIn(user)}\n type=\"button\"\n aria-label={`Log in as ${user}`}\n style={{\n background: darkMode ? \"#0d0d0d\" : \"#eee\",\n color: darkMode ? \"#fff\" : \"#000\",\n padding: \"0.5rem\",\n border: \"none\",\n borderRadius: \"6px\",\n }}\n >\n {user}\n </button>\n ))}\n </div>\n )}\n </div>\n );\n};\n","import { BrowserPasskeyAuth } from \"jazz-tools/browser\";\nimport {\n useAuthSecretStorage,\n useIsAuthenticated,\n useJazzContext,\n} from \"jazz-tools/react-core\";\nimport { useMemo, useState } from \"react\";\n\n/**\n * `usePasskeyAuth` hook provides a `JazzAuth` object for passkey authentication.\n *\n * @example\n * ```ts\n * const auth = usePasskeyAuth({ appName, appHostname });\n * ```\n *\n * @category Auth Providers\n */\nexport function usePasskeyAuth({\n appName,\n appHostname,\n}: {\n appName: string;\n appHostname?: string;\n}) {\n const context = useJazzContext();\n const authSecretStorage = useAuthSecretStorage();\n\n if (\"guest\" in context) {\n throw new Error(\"Passkey auth is not supported in guest mode\");\n }\n\n const authMethod = useMemo(() => {\n return new BrowserPasskeyAuth(\n context.node.crypto,\n context.authenticate,\n authSecretStorage,\n appName,\n appHostname,\n );\n }, [appName, appHostname, authSecretStorage]);\n\n const isAuthenticated = useIsAuthenticated();\n\n return {\n state: isAuthenticated ? \"signedIn\" : \"anonymous\",\n logIn: authMethod.logIn,\n signUp: authMethod.signUp,\n } as const;\n}\n\nexport const PasskeyAuthBasicUI = (props: {\n appName: string;\n appHostname?: string;\n children?: React.ReactNode;\n}) => {\n const [username, setUsername] = useState<string>(\"\");\n const [error, setError] = useState<string | null>(null);\n\n const auth = usePasskeyAuth({\n appName: props.appName,\n appHostname: props.appHostname,\n });\n\n if (auth.state === \"signedIn\") {\n return props.children ?? null;\n }\n\n const { logIn, signUp } = auth;\n\n function handleError(error: Error) {\n if (error.cause instanceof Error) {\n setError(error.cause.message);\n } else {\n setError(error.message);\n }\n }\n\n return (\n <div\n style={{\n width: \"100vw\",\n height: \"100vh\",\n display: \"flex\",\n flexWrap: \"wrap\",\n justifyContent: \"center\",\n alignItems: error ? \"inherit\" : \"center\",\n }}\n >\n {error && (\n <div\n style={{\n color: \"red\",\n width: \"100%\",\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"end\",\n padding: \"1rem\",\n }}\n >\n {error}\n </div>\n )}\n <div\n style={{\n width: \"18rem\",\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"2rem\",\n }}\n >\n <form\n style={{\n width: \"18rem\",\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"0.5rem\",\n }}\n onSubmit={(e) => {\n e.preventDefault();\n setError(null);\n signUp(username).catch(handleError);\n }}\n >\n <input\n placeholder=\"Display name\"\n value={username}\n onChange={(e) => setUsername(e.target.value)}\n autoComplete=\"webauthn\"\n style={{\n border: \"2px solid #000\",\n padding: \"11px 8px\",\n borderRadius: \"6px\",\n }}\n />\n <input\n type=\"submit\"\n value=\"Sign up\"\n style={{\n background: \"#000\",\n color: \"#fff\",\n padding: \"13px 5px\",\n border: \"none\",\n borderRadius: \"6px\",\n cursor: \"pointer\",\n }}\n />\n </form>\n <button\n onClick={() => {\n setError(null);\n logIn().catch(handleError);\n }}\n style={{\n background: \"#000\",\n color: \"#fff\",\n padding: \"13px 5px\",\n border: \"none\",\n borderRadius: \"6px\",\n cursor: \"pointer\",\n }}\n >\n Log in with existing account\n </button>\n </div>\n </div>\n );\n};\n","import { usePassphraseAuth } from \"jazz-tools/react-core\";\nimport { useState } from \"react\";\n\nexport function PassphraseAuthBasicUI(props: {\n appName: string;\n wordlist: string[];\n children?: React.ReactNode;\n}) {\n const auth = usePassphraseAuth({\n wordlist: props.wordlist,\n });\n\n const [step, setStep] = useState<\"initial\" | \"create\" | \"login\">(\"initial\");\n const [loginPassphrase, setLoginPassphrase] = useState(\"\");\n const [isCopied, setIsCopied] = useState(false);\n\n if (auth.state === \"signedIn\") {\n return props.children ?? null;\n }\n\n const handleCreateAccount = async () => {\n setStep(\"create\");\n };\n\n const handleLogin = () => {\n setStep(\"login\");\n };\n\n const handleBack = () => {\n setStep(\"initial\");\n setLoginPassphrase(\"\");\n };\n\n const handleCopy = async () => {\n await navigator.clipboard.writeText(auth.passphrase);\n setIsCopied(true);\n };\n\n const handleLoginSubmit = async () => {\n await auth.logIn(loginPassphrase); // Sets the state to signed in\n\n // Reset the state in case of logout\n setStep(\"initial\");\n setLoginPassphrase(\"\");\n };\n\n const handleNext = async () => {\n await auth.signUp(); // Sets the state to signed in\n\n // Reset the state in case of logout\n setStep(\"initial\");\n setLoginPassphrase(\"\");\n };\n\n return (\n <div style={containerStyle}>\n <div style={cardStyle}>\n {step === \"initial\" && (\n <div>\n <h1 style={headingStyle}>{props.appName}</h1>\n <button onClick={handleCreateAccount} style={primaryButtonStyle}>\n Create new account\n </button>\n <button onClick={handleLogin} style={secondaryButtonStyle}>\n Log in\n </button>\n </div>\n )}\n\n {step === \"create\" && (\n <>\n <h1 style={headingStyle}>Your Passphrase</h1>\n <p\n style={{\n fontSize: \"0.875rem\",\n color: \"#4b5563\",\n textAlign: \"center\",\n marginBottom: \"1rem\",\n }}\n >\n Please copy and store this passphrase somewhere safe. You'll need\n it to log in.\n </p>\n <textarea\n readOnly\n value={auth.passphrase}\n style={textareaStyle}\n rows={5}\n />\n <div\n style={{\n display: \"flex\",\n justifyContent: \"space-between\",\n gap: \"1rem\",\n }}\n >\n <button onClick={handleBack} style={secondaryButtonStyle}>\n Back\n </button>\n <button onClick={handleCopy} style={primaryButtonStyle}>\n {isCopied ? \"Copied!\" : \"Copy Passphrase\"}\n </button>\n <button onClick={handleNext} style={primaryButtonStyle}>\n I have saved it!\n </button>\n </div>\n </>\n )}\n\n {step === \"login\" && (\n <div>\n <h1 style={headingStyle}>Log In</h1>\n <textarea\n value={loginPassphrase}\n onChange={(e) => setLoginPassphrase(e.target.value)}\n placeholder=\"Enter your passphrase\"\n style={textareaStyle}\n rows={5}\n />\n <div\n style={{\n display: \"flex\",\n justifyContent: \"space-between\",\n gap: \"1rem\",\n }}\n >\n <button onClick={handleBack} style={secondaryButtonStyle}>\n Back\n </button>\n <button onClick={handleLoginSubmit} style={primaryButtonStyle}>\n Log In\n </button>\n </div>\n </div>\n )}\n </div>\n </div>\n );\n}\n\nconst containerStyle: React.CSSProperties = {\n minHeight: \"100vh\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n backgroundColor: \"#f3f4f6\",\n};\n\nconst cardStyle: React.CSSProperties = {\n backgroundColor: \"white\",\n padding: \"2rem\",\n borderRadius: \"0.5rem\",\n boxShadow:\n \"0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06)\",\n width: \"24rem\",\n};\n\nconst buttonStyle: React.CSSProperties = {\n width: \"100%\",\n padding: \"0.5rem 1rem\",\n borderRadius: \"0.25rem\",\n fontWeight: \"bold\",\n cursor: \"pointer\",\n marginBottom: \"1rem\",\n};\n\nconst primaryButtonStyle: React.CSSProperties = {\n ...buttonStyle,\n backgroundColor: \"black\",\n color: \"white\",\n border: \"none\",\n};\n\nconst secondaryButtonStyle: React.CSSProperties = {\n ...buttonStyle,\n backgroundColor: \"white\",\n color: \"black\",\n border: \"1px solid black\",\n};\n\nconst headingStyle: React.CSSProperties = {\n color: \"black\",\n fontSize: \"1.5rem\",\n fontWeight: \"bold\",\n textAlign: \"center\",\n marginBottom: \"1rem\",\n};\n\nconst textareaStyle: React.CSSProperties = {\n width: \"100%\",\n padding: \"0.5rem\",\n border: \"1px solid #d1d5db\",\n borderRadius: \"0.25rem\",\n marginBottom: \"1rem\",\n boxSizing: \"border-box\",\n};\n","export { JazzReactProviderWithClerk } from \"./Clerk.js\";\nexport { DemoAuthBasicUI } from \"./DemoAuth.js\";\nexport { usePasskeyAuth, PasskeyAuthBasicUI } from \"./PasskeyAuth.js\";\nexport { PassphraseAuthBasicUI } from \"./PassphraseAuth.js\";\nexport {\n useIsAuthenticated,\n useDemoAuth,\n usePassphraseAuth,\n} from \"jazz-tools/react-core\";\n","import { ImageDefinition, Loaded } from \"jazz-tools\";\nimport React, { useEffect, useState } from \"react\";\n\n/** @category Media */\nexport function useProgressiveImg({\n image,\n maxWidth,\n targetWidth,\n}: {\n image: Loaded<typeof ImageDefinition> | null | undefined;\n maxWidth?: number;\n targetWidth?: number;\n}) {\n const [current, setCurrent] = useState<\n { src?: string; res?: `${number}x${number}` | \"placeholder\" } | undefined\n >(undefined);\n\n useEffect(() => {\n let lastHighestRes: string | undefined;\n if (!image) return;\n const unsub = image.subscribe({}, (update) => {\n const highestRes = ImageDefinition.highestResAvailable(update, {\n maxWidth,\n targetWidth,\n });\n if (highestRes) {\n if (highestRes.res !== lastHighestRes) {\n lastHighestRes = highestRes.res;\n const blob = highestRes.stream.toBlob();\n if (blob) {\n const blobURI = URL.createObjectURL(blob);\n setCurrent({ src: blobURI, res: highestRes.res });\n return () => {\n setTimeout(() => URL.revokeObjectURL(blobURI), 200);\n };\n }\n }\n } else {\n setCurrent({\n src: update?.placeholderDataURL,\n res: \"placeholder\",\n });\n }\n });\n\n return unsub;\n }, [image?.id, maxWidth]);\n\n return {\n src: current?.src,\n res: current?.res,\n originalSize: image?.originalSize,\n };\n}\n\n/** @category Media */\nexport function ProgressiveImg({\n children,\n image,\n maxWidth,\n targetWidth,\n}: {\n children: (result: {\n src: string | undefined;\n res: `${number}x${number}` | \"placeholder\" | undefined;\n originalSize: readonly [number, number] | undefined;\n }) => React.ReactNode;\n image: Loaded<typeof ImageDefinition> | null | undefined;\n maxWidth?: number;\n targetWidth?: number;\n}): React.ReactNode {\n const result = useProgressiveImg({ image, maxWidth, targetWidth });\n return result ? children(result) : null;\n}\n"],"mappings":"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","names":["useEffect","useJazzContext","result","useAuthSecretStorage","useJazzContext","useEffect","jsx","useJazzContext","useAuthSecretStorage","useEffect","useState","jsx","useAuthSecretStorage","useJazzContext","useMemo","useState","jsx","jsxs","error","useState","jsx","jsxs","useIsAuthenticated","useDemoAuth","usePassphraseAuth","useEffect","useState"]}
@@ -1,3 +1,5 @@
1
+ "use client";
2
+
1
3
  // src/react/testing.tsx
2
4
  export * from "jazz-tools/react-core/testing";
3
- //# sourceMappingURL=testing.js.map=testing.js.map
5
+ //# sourceMappingURL=testing.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/react/testing.tsx"],"sourcesContent":["export * from \"jazz-tools/react-core/testing\";\n"],"mappings":";AAAA,cAAc;","names":[]}]}
1
+ {"version":3,"sources":["../../src/react/testing.tsx"],"sourcesContent":["export * from \"jazz-tools/react-core/testing\";\n"],"mappings":";;;AAAA,cAAc;","names":[]}
@@ -1,9 +1,9 @@
1
- import { Account, AccountClass, AnonymousJazzAgent, AnyAccountSchema, CoValue, CoValueOrZodSchema, JazzContextManager, JazzContextType, Loaded, ResolveQuery, ResolveQueryStrict } from "jazz-tools";
1
+ import { Account, AccountClass, AnonymousJazzAgent, AnyAccountSchema, CoValue, CoValueClassOrSchema, JazzContextManager, JazzContextType, Loaded, ResolveQuery, ResolveQueryStrict } from "jazz-tools";
2
2
  export declare function useJazzContext<Acc extends Account>(): JazzContextType<Acc>;
3
3
  export declare function useJazzContextManager<Acc extends Account>(): JazzContextManager<Acc, {}>;
4
4
  export declare function useAuthSecretStorage(): import("jazz-tools").AuthSecretStorage;
5
5
  export declare function useIsAuthenticated(): boolean;
6
- export declare function useCoState<S extends CoValueOrZodSchema, const R extends ResolveQuery<S> = true>(Schema: S, id: string | undefined, options?: {
6
+ export declare function useCoState<S extends CoValueClassOrSchema, const R extends ResolveQuery<S> = true>(Schema: S, id: string | undefined, options?: {
7
7
  resolve?: ResolveQueryStrict<S, R>;
8
8
  }): Loaded<S, R> | undefined | null;
9
9
  export declare function useAccount<A extends AccountClass<Account> | AnyAccountSchema, R extends ResolveQuery<A> = true>(AccountSchema?: A, options?: {
@@ -1 +1 @@
1
- {"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../src/react-core/hooks.ts"],"names":[],"mappings":"AAOA,OAAO,EACL,OAAO,EACP,YAAY,EACZ,kBAAkB,EAClB,gBAAgB,EAChB,OAAO,EACP,kBAAkB,EAGlB,kBAAkB,EAClB,eAAe,EACf,MAAM,EACN,YAAY,EACZ,kBAAkB,EAGnB,MAAM,YAAY,CAAC;AAIpB,wBAAgB,cAAc,CAAC,GAAG,SAAS,OAAO,0BAUjD;AAED,wBAAgB,qBAAqB,CAAC,GAAG,SAAS,OAAO,iCAaxD;AAED,wBAAgB,oBAAoB,2CAUnC;AAED,wBAAgB,kBAAkB,YAajC;AAgED,wBAAgB,UAAU,CACxB,CAAC,SAAS,kBAAkB,EAC5B,KAAK,CAAC,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,GAAG,IAAI,EAEtC,MAAM,EAAE,CAAC,EACT,EAAE,EAAE,MAAM,GAAG,SAAS,EACtB,OAAO,CAAC,EAAE;IACR,OAAO,CAAC,EAAE,kBAAkB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;CACpC,GACA,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,SAAS,GAAG,IAAI,CAmBjC;AA4DD,wBAAgB,UAAU,CACxB,CAAC,SAAS,YAAY,CAAC,OAAO,CAAC,GAAG,gBAAgB,EAClD,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,GAAG,IAAI,EAEhC,aAAa,GAAE,CAA2B,EAC1C,OAAO,CAAC,EAAE;IACR,OAAO,CAAC,EAAE,kBAAkB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;CACpC,GACA;IACD,EAAE,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,SAAS,GAAG,IAAI,CAAC;IACpC,KAAK,EAAE,kBAAkB,GAAG,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IAC5C,MAAM,EAAE,MAAM,IAAI,CAAC;CACpB,CA0BA;AAED,wBAAgB,2BAA2B,CACzC,CAAC,SAAS,OAAO,EACjB,CAAC,SAAS,OAAO,GAAG,SAAS,EAC7B,YAAY,EAAE,MAAM,GAAG,SAAS,aAad,CAAC,qDAsBpB"}
1
+ {"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../src/react-core/hooks.ts"],"names":[],"mappings":"AAOA,OAAO,EACL,OAAO,EACP,YAAY,EACZ,kBAAkB,EAClB,gBAAgB,EAChB,OAAO,EACP,oBAAoB,EAGpB,kBAAkB,EAClB,eAAe,EACf,MAAM,EACN,YAAY,EACZ,kBAAkB,EAGnB,MAAM,YAAY,CAAC;AAIpB,wBAAgB,cAAc,CAAC,GAAG,SAAS,OAAO,0BAUjD;AAED,wBAAgB,qBAAqB,CAAC,GAAG,SAAS,OAAO,iCAaxD;AAED,wBAAgB,oBAAoB,2CAUnC;AAED,wBAAgB,kBAAkB,YAajC;AAgED,wBAAgB,UAAU,CACxB,CAAC,SAAS,oBAAoB,EAC9B,KAAK,CAAC,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,GAAG,IAAI,EAEtC,MAAM,EAAE,CAAC,EACT,EAAE,EAAE,MAAM,GAAG,SAAS,EACtB,OAAO,CAAC,EAAE;IACR,OAAO,CAAC,EAAE,kBAAkB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;CACpC,GACA,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,SAAS,GAAG,IAAI,CAmBjC;AA4DD,wBAAgB,UAAU,CACxB,CAAC,SAAS,YAAY,CAAC,OAAO,CAAC,GAAG,gBAAgB,EAClD,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,GAAG,IAAI,EAEhC,aAAa,GAAE,CAA2B,EAC1C,OAAO,CAAC,EAAE;IACR,OAAO,CAAC,EAAE,kBAAkB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;CACpC,GACA;IACD,EAAE,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,SAAS,GAAG,IAAI,CAAC;IACpC,KAAK,EAAE,kBAAkB,GAAG,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IAC5C,MAAM,EAAE,MAAM,IAAI,CAAC;CACpB,CA0BA;AAED,wBAAgB,2BAA2B,CACzC,CAAC,SAAS,OAAO,EACjB,CAAC,SAAS,OAAO,GAAG,SAAS,EAC7B,YAAY,EAAE,MAAM,GAAG,SAAS,aAad,CAAC,qDAsBpB"}
@@ -15,7 +15,7 @@ import {
15
15
  Account,
16
16
  InboxSender,
17
17
  SubscriptionScope,
18
- anySchemaToCoSchema
18
+ coValueClassFromCoValueClassOrSchema
19
19
  } from "jazz-tools";
20
20
 
21
21
  // src/react-core/utils.ts
@@ -85,7 +85,7 @@ function useCoValueSubscription(Schema, id, options) {
85
85
  options?.resolve ?? true,
86
86
  id,
87
87
  {
88
- ref: anySchemaToCoSchema(Schema),
88
+ ref: coValueClassFromCoValueClassOrSchema(Schema),
89
89
  optional: true
90
90
  }
91
91
  );
@@ -141,7 +141,7 @@ function useAccountSubscription(Schema, options) {
141
141
  const resolve = options?.resolve ?? true;
142
142
  const node = contextManager.getCurrentValue().node;
143
143
  const subscription2 = new SubscriptionScope(node, resolve, agent.id, {
144
- ref: anySchemaToCoSchema(Schema),
144
+ ref: coValueClassFromCoValueClassOrSchema(Schema),
145
145
  optional: true
146
146
  });
147
147
  return {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/react-core/hooks.ts","../../src/react-core/utils.ts","../../src/react-core/auth/DemoAuth.tsx","../../src/react-core/auth/PassphraseAuth.tsx"],"sourcesContent":["import React, {\n useCallback,\n useContext,\n useRef,\n useSyncExternalStore,\n} from \"react\";\n\nimport {\n Account,\n AccountClass,\n AnonymousJazzAgent,\n AnyAccountSchema,\n CoValue,\n CoValueOrZodSchema,\n InboxSender,\n InstanceOfSchema,\n JazzContextManager,\n JazzContextType,\n Loaded,\n ResolveQuery,\n ResolveQueryStrict,\n SubscriptionScope,\n anySchemaToCoSchema,\n} from \"jazz-tools\";\nimport { JazzContext, JazzContextManagerContext } from \"./provider.js\";\nimport { getCurrentAccountFromContextManager } from \"./utils.js\";\n\nexport function useJazzContext<Acc extends Account>() {\n const value = useContext(JazzContext) as JazzContextType<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 useJazzContextManager<Acc extends Account>() {\n const value = useContext(JazzContextManagerContext) as JazzContextManager<\n Acc,\n {}\n >;\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 useAuthSecretStorage() {\n const value = useContext(JazzContextManagerContext);\n\n if (!value) {\n throw new Error(\n \"You need to set up a JazzProvider on top of your app to use this useAuthSecretStorage.\",\n );\n }\n\n return value.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\nfunction useCoValueSubscription<\n S extends CoValueOrZodSchema,\n const R extends ResolveQuery<S>,\n>(\n Schema: S,\n id: string | undefined | null,\n options?: {\n resolve?: ResolveQueryStrict<S, R>;\n },\n) {\n const contextManager = useJazzContextManager();\n\n const createSubscription = () => {\n if (!id) {\n return {\n subscription: null,\n contextManager,\n id,\n Schema,\n };\n }\n\n const node = contextManager.getCurrentValue()!.node;\n const subscription = new SubscriptionScope<any>(\n node,\n options?.resolve ?? true,\n id,\n {\n ref: anySchemaToCoSchema(Schema),\n optional: true,\n },\n );\n\n return {\n subscription,\n contextManager,\n id,\n Schema,\n };\n };\n\n const [subscription, setSubscription] = React.useState(createSubscription);\n\n React.useLayoutEffect(() => {\n if (\n subscription.contextManager !== contextManager ||\n subscription.id !== id ||\n subscription.Schema !== Schema\n ) {\n subscription.subscription?.destroy();\n setSubscription(createSubscription());\n }\n\n return contextManager.subscribe(() => {\n subscription.subscription?.destroy();\n setSubscription(createSubscription());\n });\n }, [Schema, id, contextManager]);\n\n return subscription.subscription;\n}\n\nexport function useCoState<\n S extends CoValueOrZodSchema,\n const R extends ResolveQuery<S> = true,\n>(\n Schema: S,\n id: string | undefined,\n options?: {\n resolve?: ResolveQueryStrict<S, R>;\n },\n): Loaded<S, R> | undefined | null {\n const subscription = useCoValueSubscription(Schema, id, options);\n\n const value = React.useSyncExternalStore<Loaded<S, R> | undefined | null>(\n React.useCallback(\n (callback) => {\n if (!subscription) {\n return () => {};\n }\n\n return subscription.subscribe(callback);\n },\n [subscription],\n ),\n () => (subscription ? subscription.getCurrentValue() : null),\n () => (subscription ? subscription.getCurrentValue() : null),\n );\n\n return value;\n}\n\nfunction useAccountSubscription<\n S extends AccountClass<Account> | AnyAccountSchema,\n const R extends ResolveQuery<S>,\n>(\n Schema: S,\n options?: {\n resolve?: ResolveQueryStrict<S, R>;\n },\n) {\n const contextManager = useJazzContextManager();\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 // We don't need type validation here, since it's mostly to help users on public API\n const resolve: any = options?.resolve ?? true;\n\n const node = contextManager.getCurrentValue()!.node;\n const subscription = new SubscriptionScope<any>(node, resolve, agent.id, {\n ref: anySchemaToCoSchema(Schema),\n optional: true,\n });\n\n return {\n subscription,\n contextManager,\n Schema,\n };\n };\n\n const [subscription, setSubscription] = React.useState(createSubscription);\n\n React.useLayoutEffect(() => {\n if (\n subscription.contextManager !== contextManager ||\n subscription.Schema !== Schema\n ) {\n subscription.subscription?.destroy();\n setSubscription(createSubscription());\n }\n\n return contextManager.subscribe(() => {\n subscription.subscription?.destroy();\n setSubscription(createSubscription());\n });\n }, [Schema, contextManager]);\n\n return subscription.subscription;\n}\n\nexport function useAccount<\n A extends AccountClass<Account> | AnyAccountSchema,\n R extends ResolveQuery<A> = true,\n>(\n AccountSchema: A = Account as unknown as A,\n options?: {\n resolve?: ResolveQueryStrict<A, R>;\n },\n): {\n me: Loaded<A, R> | undefined | null;\n agent: AnonymousJazzAgent | Loaded<A, true>;\n logOut: () => void;\n} {\n const contextManager = useJazzContextManager<InstanceOfSchema<A>>();\n const subscription = useAccountSubscription(AccountSchema, options);\n\n const agent = getCurrentAccountFromContextManager(contextManager);\n\n const value = React.useSyncExternalStore<Loaded<A, R> | undefined | null>(\n React.useCallback(\n (callback) => {\n if (!subscription) {\n return () => {};\n }\n\n return subscription.subscribe(callback);\n },\n [subscription],\n ),\n () => (subscription ? subscription.getCurrentValue() : null),\n () => (subscription ? subscription.getCurrentValue() : null),\n );\n\n return {\n me: value,\n agent,\n logOut: contextManager.logOut,\n };\n}\n\nexport function experimental_useInboxSender<\n I extends CoValue,\n O extends CoValue | undefined,\n>(inboxOwnerID: string | undefined) {\n const context = useJazzContext();\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 if (inbox.owner.id !== inboxOwnerID) {\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],\n );\n\n return sendMessage;\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 { DemoAuth } from \"jazz-tools\";\nimport { useEffect, useMemo, useState } from \"react\";\nimport { useAuthSecretStorage, useJazzContext } 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 = useJazzContext();\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, useJazzContext } 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({\n wordlist,\n}: {\n wordlist: string[];\n}) {\n const context = useJazzContext();\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":["subscription","inbox","useCallback","useMemo","useSyncExternalStore","useMemo","useSyncExternalStore","useCallback"]}
1
+ {"version":3,"sources":["../../src/react-core/hooks.ts","../../src/react-core/utils.ts","../../src/react-core/auth/DemoAuth.tsx","../../src/react-core/auth/PassphraseAuth.tsx"],"sourcesContent":["import React, {\n useCallback,\n useContext,\n useRef,\n useSyncExternalStore,\n} from \"react\";\n\nimport {\n Account,\n AccountClass,\n AnonymousJazzAgent,\n AnyAccountSchema,\n CoValue,\n CoValueClassOrSchema,\n InboxSender,\n InstanceOfSchema,\n JazzContextManager,\n JazzContextType,\n Loaded,\n ResolveQuery,\n ResolveQueryStrict,\n SubscriptionScope,\n coValueClassFromCoValueClassOrSchema,\n} from \"jazz-tools\";\nimport { JazzContext, JazzContextManagerContext } from \"./provider.js\";\nimport { getCurrentAccountFromContextManager } from \"./utils.js\";\n\nexport function useJazzContext<Acc extends Account>() {\n const value = useContext(JazzContext) as JazzContextType<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 useJazzContextManager<Acc extends Account>() {\n const value = useContext(JazzContextManagerContext) as JazzContextManager<\n Acc,\n {}\n >;\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 useAuthSecretStorage() {\n const value = useContext(JazzContextManagerContext);\n\n if (!value) {\n throw new Error(\n \"You need to set up a JazzProvider on top of your app to use this useAuthSecretStorage.\",\n );\n }\n\n return value.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\nfunction useCoValueSubscription<\n S extends CoValueClassOrSchema,\n const R extends ResolveQuery<S>,\n>(\n Schema: S,\n id: string | undefined | null,\n options?: {\n resolve?: ResolveQueryStrict<S, R>;\n },\n) {\n const contextManager = useJazzContextManager();\n\n const createSubscription = () => {\n if (!id) {\n return {\n subscription: null,\n contextManager,\n id,\n Schema,\n };\n }\n\n const node = contextManager.getCurrentValue()!.node;\n const subscription = new SubscriptionScope<any>(\n node,\n options?.resolve ?? true,\n id,\n {\n ref: coValueClassFromCoValueClassOrSchema(Schema),\n optional: true,\n },\n );\n\n return {\n subscription,\n contextManager,\n id,\n Schema,\n };\n };\n\n const [subscription, setSubscription] = React.useState(createSubscription);\n\n React.useLayoutEffect(() => {\n if (\n subscription.contextManager !== contextManager ||\n subscription.id !== id ||\n subscription.Schema !== Schema\n ) {\n subscription.subscription?.destroy();\n setSubscription(createSubscription());\n }\n\n return contextManager.subscribe(() => {\n subscription.subscription?.destroy();\n setSubscription(createSubscription());\n });\n }, [Schema, id, contextManager]);\n\n return subscription.subscription;\n}\n\nexport function useCoState<\n S extends CoValueClassOrSchema,\n const R extends ResolveQuery<S> = true,\n>(\n Schema: S,\n id: string | undefined,\n options?: {\n resolve?: ResolveQueryStrict<S, R>;\n },\n): Loaded<S, R> | undefined | null {\n const subscription = useCoValueSubscription(Schema, id, options);\n\n const value = React.useSyncExternalStore<Loaded<S, R> | undefined | null>(\n React.useCallback(\n (callback) => {\n if (!subscription) {\n return () => {};\n }\n\n return subscription.subscribe(callback);\n },\n [subscription],\n ),\n () => (subscription ? subscription.getCurrentValue() : null),\n () => (subscription ? subscription.getCurrentValue() : null),\n );\n\n return value;\n}\n\nfunction useAccountSubscription<\n S extends AccountClass<Account> | AnyAccountSchema,\n const R extends ResolveQuery<S>,\n>(\n Schema: S,\n options?: {\n resolve?: ResolveQueryStrict<S, R>;\n },\n) {\n const contextManager = useJazzContextManager();\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 // We don't need type validation here, since it's mostly to help users on public API\n const resolve: any = options?.resolve ?? true;\n\n const node = contextManager.getCurrentValue()!.node;\n const subscription = new SubscriptionScope<any>(node, resolve, agent.id, {\n ref: coValueClassFromCoValueClassOrSchema(Schema),\n optional: true,\n });\n\n return {\n subscription,\n contextManager,\n Schema,\n };\n };\n\n const [subscription, setSubscription] = React.useState(createSubscription);\n\n React.useLayoutEffect(() => {\n if (\n subscription.contextManager !== contextManager ||\n subscription.Schema !== Schema\n ) {\n subscription.subscription?.destroy();\n setSubscription(createSubscription());\n }\n\n return contextManager.subscribe(() => {\n subscription.subscription?.destroy();\n setSubscription(createSubscription());\n });\n }, [Schema, contextManager]);\n\n return subscription.subscription;\n}\n\nexport function useAccount<\n A extends AccountClass<Account> | AnyAccountSchema,\n R extends ResolveQuery<A> = true,\n>(\n AccountSchema: A = Account as unknown as A,\n options?: {\n resolve?: ResolveQueryStrict<A, R>;\n },\n): {\n me: Loaded<A, R> | undefined | null;\n agent: AnonymousJazzAgent | Loaded<A, true>;\n logOut: () => void;\n} {\n const contextManager = useJazzContextManager<InstanceOfSchema<A>>();\n const subscription = useAccountSubscription(AccountSchema, options);\n\n const agent = getCurrentAccountFromContextManager(contextManager);\n\n const value = React.useSyncExternalStore<Loaded<A, R> | undefined | null>(\n React.useCallback(\n (callback) => {\n if (!subscription) {\n return () => {};\n }\n\n return subscription.subscribe(callback);\n },\n [subscription],\n ),\n () => (subscription ? subscription.getCurrentValue() : null),\n () => (subscription ? subscription.getCurrentValue() : null),\n );\n\n return {\n me: value,\n agent,\n logOut: contextManager.logOut,\n };\n}\n\nexport function experimental_useInboxSender<\n I extends CoValue,\n O extends CoValue | undefined,\n>(inboxOwnerID: string | undefined) {\n const context = useJazzContext();\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 if (inbox.owner.id !== inboxOwnerID) {\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],\n );\n\n return sendMessage;\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 { DemoAuth } from \"jazz-tools\";\nimport { useEffect, useMemo, useState } from \"react\";\nimport { useAuthSecretStorage, useJazzContext } 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 = useJazzContext();\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, useJazzContext } 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({\n wordlist,\n}: {\n wordlist: string[];\n}) {\n const context = useJazzContext();\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":["subscription","inbox","useCallback","useMemo","useSyncExternalStore","useMemo","useSyncExternalStore","useCallback"]}
@@ -1,6 +1,6 @@
1
- import { CoValueOrZodSchema } from "jazz-tools";
1
+ import { CoValueClassOrSchema } from "jazz-tools";
2
2
  export { useCoState, experimental_useInboxSender, useDemoAuth, usePassphraseAuth, useJazzContext, useAuthSecretStorage, useIsAuthenticated, useAccount, } from "jazz-tools/react-core";
3
- export declare function useAcceptInviteNative<S extends CoValueOrZodSchema>({ invitedObjectSchema, onAccept, forValueHint, }: {
3
+ export declare function useAcceptInviteNative<S extends CoValueClassOrSchema>({ invitedObjectSchema, onAccept, forValueHint, }: {
4
4
  invitedObjectSchema: S;
5
5
  onAccept: (projectID: string) => void;
6
6
  forValueHint?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../src/react-native-core/hooks.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAmB,MAAM,YAAY,CAAC;AAIjE,OAAO,EACL,UAAU,EACV,2BAA2B,EAC3B,WAAW,EACX,iBAAiB,EACjB,cAAc,EACd,oBAAoB,EACpB,kBAAkB,EAClB,UAAU,GACX,MAAM,uBAAuB,CAAC;AAE/B,wBAAgB,qBAAqB,CAAC,CAAC,SAAS,kBAAkB,EAAE,EAClE,mBAAmB,EACnB,QAAQ,EACR,YAAY,GACb,EAAE;IACD,mBAAmB,EAAE,CAAC,CAAC;IACvB,QAAQ,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,GAAG,IAAI,CAsCP"}
1
+ {"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../src/react-native-core/hooks.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,oBAAoB,EAAmB,MAAM,YAAY,CAAC;AAInE,OAAO,EACL,UAAU,EACV,2BAA2B,EAC3B,WAAW,EACX,iBAAiB,EACjB,cAAc,EACd,oBAAoB,EACpB,kBAAkB,EAClB,UAAU,GACX,MAAM,uBAAuB,CAAC;AAE/B,wBAAgB,qBAAqB,CAAC,CAAC,SAAS,oBAAoB,EAAE,EACpE,mBAAmB,EACnB,QAAQ,EACR,YAAY,GACb,EAAE;IACD,mBAAmB,EAAE,CAAC,CAAC;IACvB,QAAQ,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,GAAG,IAAI,CAsCP"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/react-native-core/storage/kv-store-context.ts","../../src/react-native-core/auth/DemoAuthUI.tsx","../../src/react-native-core/auth/auth.ts","../../src/react-native-core/hooks.tsx","../../src/react-native-core/media.tsx","../../src/react-native-core/provider.tsx","../../src/react-native-core/ReactNativeContextManager.ts","../../src/react-native-core/platform.ts","../../src/react-native-core/index.ts"],"sourcesContent":["export interface KvStore {\n get(key: string): Promise<string | null>;\n set(key: string, value: string): Promise<void>;\n delete(key: string): Promise<void>;\n clearAll(): Promise<void>;\n}\n\nexport class KvStoreContext {\n private static instance: KvStoreContext;\n private storageInstance: KvStore | null = null;\n\n private constructor() {}\n\n public static getInstance(): KvStoreContext {\n if (!KvStoreContext.instance) {\n KvStoreContext.instance = new KvStoreContext();\n }\n return KvStoreContext.instance;\n }\n\n public isInitialized(): boolean {\n return this.storageInstance !== null;\n }\n\n public initialize(store: KvStore): void {\n if (!this.storageInstance) {\n this.storageInstance = store;\n }\n }\n\n public getStorage(): KvStore {\n if (!this.storageInstance) {\n throw new Error(\"Storage instance is not initialized.\");\n }\n return this.storageInstance;\n }\n}\n\nexport default KvStoreContext;\n","import { useDemoAuth } from \"jazz-tools/react-core\";\nimport React, { useState } from \"react\";\nimport {\n StyleSheet,\n Text,\n TextInput,\n TouchableOpacity,\n View,\n useColorScheme,\n} from \"react-native\";\n\nexport const DemoAuthBasicUI = ({\n appName,\n auth,\n children,\n}: {\n appName: string;\n auth: ReturnType<typeof useDemoAuth>;\n children: React.ReactNode;\n}) => {\n const colorScheme = useColorScheme();\n const darkMode = colorScheme === \"dark\";\n const [username, setUsername] = useState<string>(\"\");\n const [errorMessage, setErrorMessage] = useState<string | null>(null);\n\n const handleSignUp = () => {\n setErrorMessage(null);\n\n auth.signUp(username).catch((error) => {\n setErrorMessage(error.message);\n });\n };\n\n const handleLogIn = (username: string) => {\n setErrorMessage(null);\n\n auth.logIn(username).catch((error) => {\n setErrorMessage(error.message);\n });\n };\n\n if (auth.state === \"signedIn\") {\n return children;\n }\n\n return (\n <View\n style={[\n styles.container,\n darkMode ? styles.darkBackground : styles.lightBackground,\n ]}\n >\n <View style={styles.formContainer}>\n <Text\n style={[\n styles.headerText,\n darkMode ? styles.darkText : styles.lightText,\n ]}\n >\n {appName}\n </Text>\n\n {errorMessage && <Text style={styles.errorText}>{errorMessage}</Text>}\n\n <TextInput\n placeholder=\"Display name\"\n value={username}\n onChangeText={setUsername}\n placeholderTextColor={darkMode ? \"#fff\" : \"#000\"}\n style={[\n styles.textInput,\n darkMode ? styles.darkInput : styles.lightInput,\n ]}\n />\n\n <TouchableOpacity\n onPress={handleSignUp}\n style={[\n styles.button,\n darkMode ? styles.darkButton : styles.lightButton,\n ]}\n >\n <Text\n style={darkMode ? styles.darkButtonText : styles.lightButtonText}\n >\n Sign Up as new account\n </Text>\n </TouchableOpacity>\n\n <View style={styles.existingUsersContainer}>\n {auth.existingUsers.map((user) => (\n <TouchableOpacity\n key={user}\n onPress={() => handleLogIn(user)}\n style={[\n styles.existingUserButton,\n darkMode ? styles.darkUserButton : styles.lightUserButton,\n ]}\n >\n <Text style={darkMode ? styles.darkText : styles.lightText}>\n Log In as \"{user}\"\n </Text>\n </TouchableOpacity>\n ))}\n </View>\n </View>\n </View>\n );\n};\n\nconst styles = StyleSheet.create({\n container: {\n flex: 1,\n justifyContent: \"center\",\n alignItems: \"center\",\n padding: 20,\n },\n formContainer: {\n width: \"80%\",\n alignItems: \"center\",\n justifyContent: \"center\",\n },\n headerText: {\n fontSize: 24,\n marginBottom: 20,\n },\n errorText: {\n color: \"red\",\n marginVertical: 5,\n textAlign: \"center\",\n },\n textInput: {\n borderWidth: 1,\n padding: 10,\n marginVertical: 10,\n width: \"100%\",\n borderRadius: 6,\n },\n darkInput: {\n borderColor: \"#444\",\n backgroundColor: \"#000\",\n color: \"#fff\",\n },\n lightInput: {\n borderColor: \"#ddd\",\n backgroundColor: \"#fff\",\n color: \"#000\",\n },\n button: {\n paddingVertical: 15,\n paddingHorizontal: 10,\n borderRadius: 6,\n width: \"100%\",\n marginVertical: 10,\n },\n darkButton: {\n backgroundColor: \"#444\",\n },\n lightButton: {\n backgroundColor: \"#ddd\",\n },\n darkButtonText: {\n color: \"#fff\",\n textAlign: \"center\",\n },\n lightButtonText: {\n color: \"#000\",\n textAlign: \"center\",\n },\n existingUsersContainer: {\n width: \"100%\",\n marginTop: 20,\n },\n existingUserButton: {\n paddingVertical: 15,\n paddingHorizontal: 10,\n borderRadius: 6,\n marginVertical: 5,\n },\n darkUserButton: {\n backgroundColor: \"#222\",\n },\n lightUserButton: {\n backgroundColor: \"#eee\",\n },\n loadingText: {\n fontSize: 18,\n color: \"#888\",\n },\n darkText: {\n color: \"#fff\",\n },\n lightText: {\n color: \"#000\",\n },\n darkBackground: {\n backgroundColor: \"#000\",\n },\n lightBackground: {\n backgroundColor: \"#fff\",\n },\n});\n","import { KvStoreContext } from \"../storage/kv-store-context.js\";\n\nexport * from \"./DemoAuthUI.js\";\n\nexport function clearUserCredentials() {\n const kvStore = KvStoreContext.getInstance().getStorage();\n\n // TODO: Migrate the Auth methods to use the same storage key/interface\n return Promise.all([\n kvStore.delete(\"demo-auth-logged-in-secret\"),\n kvStore.delete(\"jazz-clerk-auth\"),\n kvStore.delete(\"jazz-logged-in-secret\"),\n ]);\n}\n","import { useEffect } from \"react\";\n\nimport { CoValueOrZodSchema, parseInviteLink } from \"jazz-tools\";\nimport { useJazzContext } from \"jazz-tools/react-core\";\nimport { Linking } from \"react-native\";\n\nexport {\n useCoState,\n experimental_useInboxSender,\n useDemoAuth,\n usePassphraseAuth,\n useJazzContext,\n useAuthSecretStorage,\n useIsAuthenticated,\n useAccount,\n} from \"jazz-tools/react-core\";\n\nexport function useAcceptInviteNative<S extends CoValueOrZodSchema>({\n invitedObjectSchema,\n onAccept,\n forValueHint,\n}: {\n invitedObjectSchema: S;\n onAccept: (projectID: string) => void;\n forValueHint?: string;\n}): void {\n const context = useJazzContext();\n\n if (!(\"me\" in context)) {\n throw new Error(\n \"useAcceptInviteNative can't be used in a JazzProvider with auth === 'guest'.\",\n );\n }\n\n useEffect(() => {\n const handleDeepLink = ({ url }: { url: string }) => {\n const result = parseInviteLink(url);\n if (result && result.valueHint === forValueHint) {\n context.me\n .acceptInvite(\n result.valueID,\n result.inviteSecret,\n invitedObjectSchema,\n )\n .then(() => {\n onAccept(result.valueID);\n })\n .catch((e) => {\n console.error(\"Failed to accept invite\", e);\n });\n }\n };\n\n const linkingListener = Linking.addEventListener(\"url\", handleDeepLink);\n\n void Linking.getInitialURL().then((url) => {\n if (url) handleDeepLink({ url });\n });\n\n return () => {\n linkingListener.remove();\n };\n }, [context, onAccept, invitedObjectSchema, forValueHint]);\n}\n","import { ImageDefinition, Loaded } from \"jazz-tools\";\nimport React, { useEffect, useState } from \"react\";\n\n/** @category Media */\nexport function useProgressiveImgNative({\n image,\n maxWidth,\n targetWidth,\n}: {\n image: Loaded<typeof ImageDefinition> | null | undefined;\n maxWidth?: number;\n targetWidth?: number;\n}) {\n const [current, setCurrent] = useState<\n { src?: string; res?: `${number}x${number}` | \"placeholder\" } | undefined\n >(undefined);\n\n useEffect(() => {\n let lastHighestRes: string | undefined;\n if (!image) return;\n const unsub = image.subscribe({}, (update) => {\n const highestRes = ImageDefinition.highestResAvailable(update, {\n maxWidth,\n targetWidth,\n });\n if (highestRes && highestRes.res !== lastHighestRes) {\n lastHighestRes = highestRes.res;\n // use the base64 data directly\n const dataUrl = highestRes.stream.asBase64({ dataURL: true });\n if (dataUrl) {\n setCurrent({\n src: dataUrl,\n res: highestRes.res,\n });\n } else {\n // Fallback to placeholder if chunks aren't available\n console.warn(\"No chunks available for image\", image.id);\n setCurrent({\n src: update?.placeholderDataURL,\n res: \"placeholder\",\n });\n }\n } else if (!highestRes) {\n setCurrent({\n src: update?.placeholderDataURL,\n res: \"placeholder\",\n });\n }\n });\n\n return unsub;\n }, [image?.id, maxWidth]);\n\n return {\n src: current?.src,\n res: current?.res,\n originalSize: image?.originalSize,\n };\n}\n\n/** @category Media */\nexport function ProgressiveImgNative({\n children,\n image,\n maxWidth,\n targetWidth,\n}: {\n children: (result: {\n src: string | undefined;\n res: `${number}x${number}` | \"placeholder\" | undefined;\n originalSize: readonly [number, number] | undefined;\n }) => React.ReactNode;\n image: Loaded<typeof ImageDefinition> | null | undefined;\n maxWidth?: number;\n targetWidth?: number;\n}) {\n const result = useProgressiveImgNative({ image, maxWidth, targetWidth });\n return result && children(result);\n}\n","import {\n Account,\n AccountClass,\n AnyAccountSchema,\n CoValueFromRaw,\n InstanceOfSchema,\n JazzContextType,\n KvStore,\n} from \"jazz-tools\";\nimport { JazzContext, JazzContextManagerContext } from \"jazz-tools/react-core\";\nimport React, { useEffect, useRef } from \"react\";\nimport type { JazzContextManagerProps } from \"./ReactNativeContextManager.js\";\nimport { ReactNativeContextManager } from \"./ReactNativeContextManager.js\";\nimport { setupKvStore } from \"./platform.js\";\n\nexport type JazzProviderProps<\n S extends\n | (AccountClass<Account> & CoValueFromRaw<Account>)\n | AnyAccountSchema,\n> = {\n children: React.ReactNode;\n kvStore?: KvStore;\n} & JazzContextManagerProps<S>;\n\n/** @category Context & Hooks */\nexport function JazzProviderCore<\n S extends\n | (AccountClass<Account> & CoValueFromRaw<Account>)\n | AnyAccountSchema,\n>({\n children,\n guestMode,\n sync,\n storage,\n AccountSchema,\n defaultProfileName,\n onLogOut,\n logOutReplacement,\n onAnonymousAccountDiscarded,\n kvStore,\n CryptoProvider,\n}: JazzProviderProps<S>) {\n setupKvStore(kvStore);\n\n const [contextManager] = React.useState(\n () => new ReactNativeContextManager<S>(),\n );\n\n const onLogOutRefCallback = useRefCallback(onLogOut);\n const logOutReplacementRefCallback = useRefCallback(logOutReplacement);\n const onAnonymousAccountDiscardedRefCallback = useRefCallback(\n onAnonymousAccountDiscarded,\n );\n const logoutReplacementActiveRef = useRef(false);\n logoutReplacementActiveRef.current = Boolean(logOutReplacement);\n\n const value = React.useSyncExternalStore<\n JazzContextType<InstanceOfSchema<S>> | undefined\n >(\n React.useCallback(\n (callback) => {\n const props = {\n AccountSchema,\n guestMode,\n sync,\n storage,\n defaultProfileName,\n onLogOut: onLogOutRefCallback,\n logOutReplacement: logoutReplacementActiveRef.current\n ? logOutReplacementRefCallback\n : undefined,\n onAnonymousAccountDiscarded: onAnonymousAccountDiscardedRefCallback,\n CryptoProvider,\n } satisfies JazzContextManagerProps<S>;\n\n if (contextManager.propsChanged(props)) {\n contextManager.createContext(props).catch((error) => {\n console.log(error.stack);\n console.error(\"Error creating Jazz React Native context:\", error);\n });\n }\n\n return contextManager.subscribe(callback);\n },\n [sync, guestMode].concat(storage as any),\n ),\n () => contextManager.getCurrentValue(),\n () => contextManager.getCurrentValue(),\n );\n\n useEffect(() => {\n // In development mode we don't return a cleanup function because otherwise\n // the double effect execution would mark the context as done immediately.\n if (process.env.NODE_ENV === \"development\") return;\n\n return () => {\n contextManager.done();\n };\n }, []);\n\n return (\n <JazzContext.Provider value={value}>\n <JazzContextManagerContext.Provider value={contextManager}>\n {value && children}\n </JazzContextManagerContext.Provider>\n </JazzContext.Provider>\n );\n}\n\nfunction useRefCallback<T extends (...args: any[]) => any>(callback?: T) {\n const callbackRef = React.useRef(callback);\n callbackRef.current = callback;\n return useRef(\n (...args: Parameters<T>): ReturnType<T> => callbackRef.current?.(...args),\n ).current;\n}\n","import {\n Account,\n AccountClass,\n CoValueFromRaw,\n JazzContextManager,\n KvStore,\n SyncConfig,\n} from \"jazz-tools\";\nimport type {\n AnyAccountSchema,\n InstanceOfSchema,\n JazzContextManagerAuthProps,\n} from \"jazz-tools\";\nimport {\n BaseReactNativeContextOptions,\n createJazzReactNativeContext,\n createJazzReactNativeGuestContext,\n} from \"./platform.js\";\nimport { KvStoreContext } from \"./storage/kv-store-context.js\";\n\nexport type JazzContextManagerProps<\n S extends\n | (AccountClass<Account> & CoValueFromRaw<Account>)\n | AnyAccountSchema,\n> = {\n guestMode?: boolean;\n sync: SyncConfig;\n onLogOut?: () => void;\n logOutReplacement?: () => void;\n storage?: BaseReactNativeContextOptions[\"storage\"];\n AccountSchema?: S;\n defaultProfileName?: string;\n onAnonymousAccountDiscarded?: (\n anonymousAccount: InstanceOfSchema<S>,\n ) => Promise<void>;\n CryptoProvider?: BaseReactNativeContextOptions[\"CryptoProvider\"];\n};\n\nexport class ReactNativeContextManager<\n S extends\n | (AccountClass<Account> & CoValueFromRaw<Account>)\n | AnyAccountSchema,\n> extends JazzContextManager<InstanceOfSchema<S>, JazzContextManagerProps<S>> {\n async getNewContext(\n props: JazzContextManagerProps<S>,\n authProps?: JazzContextManagerAuthProps,\n ) {\n if (props.guestMode) {\n return createJazzReactNativeGuestContext({\n sync: props.sync,\n storage: props.storage,\n authSecretStorage: this.authSecretStorage,\n CryptoProvider: props.CryptoProvider,\n });\n } else {\n return createJazzReactNativeContext<S>({\n sync: props.sync,\n storage: props.storage,\n AccountSchema: props.AccountSchema,\n credentials: authProps?.credentials,\n newAccountProps: authProps?.newAccountProps,\n defaultProfileName: props.defaultProfileName,\n authSecretStorage: this.authSecretStorage,\n CryptoProvider: props.CryptoProvider,\n });\n }\n }\n\n getKvStore(): KvStore {\n return KvStoreContext.getInstance().getStorage();\n }\n\n propsChanged(props: JazzContextManagerProps<S>) {\n if (!this.props) {\n return true;\n }\n\n return (\n this.props.sync.when !== props.sync.when ||\n this.props.sync.peer !== props.sync.peer ||\n this.props.guestMode !== props.guestMode\n );\n }\n}\n","import NetInfo from \"@react-native-community/netinfo\";\nimport { LocalNode, Peer, RawAccountID, getSqliteStorageAsync } from \"cojson\";\nimport { PureJSCrypto } from \"cojson/dist/crypto/PureJSCrypto\"; // Importing from dist to not rely on the exports field\nimport {\n Account,\n AccountClass,\n AgentID,\n AnyAccountSchema,\n AuthCredentials,\n AuthSecretStorage,\n CoValue,\n CoValueFromRaw,\n CryptoProvider,\n ID,\n NewAccountProps,\n SessionID,\n SyncConfig,\n createInviteLink as baseCreateInviteLink,\n createAnonymousJazzContext,\n createJazzContext,\n} from \"jazz-tools\";\nimport { KvStore, KvStoreContext } from \"./storage/kv-store-context.js\";\n\nimport { SQLiteDatabaseDriverAsync } from \"cojson\";\nimport { WebSocketPeerWithReconnection } from \"cojson-transport-ws\";\nimport type { RNQuickCrypto } from \"jazz-tools/react-native-core/crypto\";\n\nexport type BaseReactNativeContextOptions = {\n sync: SyncConfig;\n reconnectionTimeout?: number;\n storage?: SQLiteDatabaseDriverAsync | \"disabled\";\n CryptoProvider?: typeof PureJSCrypto | typeof RNQuickCrypto;\n authSecretStorage: AuthSecretStorage;\n};\n\nclass ReactNativeWebSocketPeerWithReconnection extends WebSocketPeerWithReconnection {\n onNetworkChange(callback: (connected: boolean) => void): () => void {\n return NetInfo.addEventListener((state) =>\n callback(state.isConnected ?? false),\n );\n }\n}\n\nasync function setupPeers(options: BaseReactNativeContextOptions) {\n const CryptoProvider = options.CryptoProvider || PureJSCrypto;\n const crypto = await CryptoProvider.create();\n let node: LocalNode | undefined = undefined;\n\n const peersToLoadFrom: Peer[] = [];\n\n const storage =\n options.storage && options.storage !== \"disabled\"\n ? await getSqliteStorageAsync(options.storage)\n : undefined;\n\n if (options.sync.when === \"never\") {\n return {\n toggleNetwork: () => {},\n peersToLoadFrom,\n setNode: () => {},\n crypto,\n storage,\n };\n }\n\n const wsPeer = new ReactNativeWebSocketPeerWithReconnection({\n peer: options.sync.peer,\n reconnectionTimeout: options.reconnectionTimeout,\n addPeer: (peer) => {\n if (node) {\n node.syncManager.addPeer(peer);\n } else {\n peersToLoadFrom.push(peer);\n }\n },\n removePeer: (peer) => {\n peersToLoadFrom.splice(peersToLoadFrom.indexOf(peer), 1);\n },\n });\n\n function toggleNetwork(enabled: boolean) {\n if (enabled) {\n wsPeer.enable();\n } else {\n wsPeer.disable();\n }\n }\n\n function setNode(value: LocalNode) {\n node = value;\n }\n\n if (options.sync.when === \"always\" || !options.sync.when) {\n toggleNetwork(true);\n }\n\n return {\n toggleNetwork,\n peersToLoadFrom,\n setNode,\n crypto,\n storage,\n };\n}\n\nexport async function createJazzReactNativeGuestContext(\n options: BaseReactNativeContextOptions,\n) {\n const { toggleNetwork, peersToLoadFrom, setNode, crypto, storage } =\n await setupPeers(options);\n\n const context = createAnonymousJazzContext({\n crypto,\n peersToLoadFrom,\n storage,\n });\n\n setNode(context.agent.node);\n\n options.authSecretStorage.emitUpdate(null);\n\n return {\n guest: context.agent,\n node: context.agent.node,\n done: () => {\n // TODO: Sync all the covalues before closing the connection & context\n toggleNetwork(false);\n context.done();\n },\n logOut: () => {\n return context.logOut();\n },\n };\n}\n\nexport type ReactNativeContextOptions<\n S extends\n | (AccountClass<Account> & CoValueFromRaw<Account>)\n | AnyAccountSchema,\n> = {\n credentials?: AuthCredentials;\n AccountSchema?: S;\n newAccountProps?: NewAccountProps;\n defaultProfileName?: string;\n} & BaseReactNativeContextOptions;\n\nexport async function createJazzReactNativeContext<\n S extends\n | (AccountClass<Account> & CoValueFromRaw<Account>)\n | AnyAccountSchema,\n>(options: ReactNativeContextOptions<S>) {\n const { toggleNetwork, peersToLoadFrom, setNode, crypto, storage } =\n await setupPeers(options);\n\n let unsubscribeAuthUpdate = () => {};\n\n if (options.sync.when === \"signedUp\") {\n const authSecretStorage = options.authSecretStorage;\n const credentials = options.credentials ?? (await authSecretStorage.get());\n\n // To update the internal state with the current credentials\n authSecretStorage.emitUpdate(credentials);\n\n function handleAuthUpdate(isAuthenticated: boolean) {\n if (isAuthenticated) {\n toggleNetwork(true);\n } else {\n toggleNetwork(false);\n }\n }\n\n unsubscribeAuthUpdate = authSecretStorage.onUpdate(handleAuthUpdate);\n handleAuthUpdate(authSecretStorage.isAuthenticated);\n }\n\n const context = await createJazzContext({\n credentials: options.credentials,\n newAccountProps: options.newAccountProps,\n peersToLoadFrom,\n crypto,\n defaultProfileName: options.defaultProfileName,\n AccountSchema: options.AccountSchema,\n sessionProvider: provideLockSession,\n authSecretStorage: options.authSecretStorage,\n storage,\n });\n\n setNode(context.node);\n\n return {\n me: context.account,\n node: context.node,\n authSecretStorage: context.authSecretStorage,\n done: () => {\n // TODO: Sync all the covalues before closing the connection & context\n toggleNetwork(false);\n unsubscribeAuthUpdate();\n context.done();\n },\n logOut: () => {\n unsubscribeAuthUpdate();\n return context.logOut();\n },\n };\n}\n\n/** @category Auth Providers */\nexport type SessionProvider = (\n accountID: ID<Account> | AgentID,\n) => Promise<SessionID>;\n\nexport async function provideLockSession(\n accountID: ID<Account> | AgentID,\n crypto: CryptoProvider,\n) {\n const sessionDone = () => {};\n\n const kvStore = KvStoreContext.getInstance().getStorage();\n\n const sessionID =\n ((await kvStore.get(accountID)) as SessionID) ||\n crypto.newRandomSessionID(accountID as RawAccountID | AgentID);\n await kvStore.set(accountID, sessionID);\n\n return Promise.resolve({\n sessionID,\n sessionDone,\n });\n}\n\n/** @category Invite Links */\nexport function createInviteLink<C extends CoValue>(\n value: C,\n role: \"reader\" | \"writer\" | \"admin\",\n { baseURL, valueHint }: { baseURL?: string; valueHint?: string } = {},\n): string {\n return baseCreateInviteLink(value, role, baseURL ?? \"\", valueHint);\n}\n\nexport function setupKvStore(\n kvStore: KvStore | undefined,\n): KvStore | undefined {\n if (!kvStore) {\n return undefined;\n }\n KvStoreContext.getInstance().initialize(kvStore);\n return kvStore;\n}\n","export * from \"./auth/auth.js\";\nexport * from \"./hooks.js\";\nexport * from \"./media.js\";\nexport * from \"./provider.js\";\nexport * from \"./storage/kv-store-context.js\";\n\nexport { SQLiteDatabaseDriverAsync } from \"cojson\";\nexport { parseInviteLink } from \"jazz-tools\";\nexport { createInviteLink, setupKvStore } from \"./platform.js\";\n"],"mappings":"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","names":["username","useJazzContext","useEffect","useState","React","useEffect","CryptoProvider","handleAuthUpdate","jsx","CryptoProvider","React","useEffect","parseInviteLink"]}
1
+ {"version":3,"sources":["../../src/react-native-core/storage/kv-store-context.ts","../../src/react-native-core/auth/DemoAuthUI.tsx","../../src/react-native-core/auth/auth.ts","../../src/react-native-core/hooks.tsx","../../src/react-native-core/media.tsx","../../src/react-native-core/provider.tsx","../../src/react-native-core/ReactNativeContextManager.ts","../../src/react-native-core/platform.ts","../../src/react-native-core/index.ts"],"sourcesContent":["export interface KvStore {\n get(key: string): Promise<string | null>;\n set(key: string, value: string): Promise<void>;\n delete(key: string): Promise<void>;\n clearAll(): Promise<void>;\n}\n\nexport class KvStoreContext {\n private static instance: KvStoreContext;\n private storageInstance: KvStore | null = null;\n\n private constructor() {}\n\n public static getInstance(): KvStoreContext {\n if (!KvStoreContext.instance) {\n KvStoreContext.instance = new KvStoreContext();\n }\n return KvStoreContext.instance;\n }\n\n public isInitialized(): boolean {\n return this.storageInstance !== null;\n }\n\n public initialize(store: KvStore): void {\n if (!this.storageInstance) {\n this.storageInstance = store;\n }\n }\n\n public getStorage(): KvStore {\n if (!this.storageInstance) {\n throw new Error(\"Storage instance is not initialized.\");\n }\n return this.storageInstance;\n }\n}\n\nexport default KvStoreContext;\n","import { useDemoAuth } from \"jazz-tools/react-core\";\nimport React, { useState } from \"react\";\nimport {\n StyleSheet,\n Text,\n TextInput,\n TouchableOpacity,\n View,\n useColorScheme,\n} from \"react-native\";\n\nexport const DemoAuthBasicUI = ({\n appName,\n auth,\n children,\n}: {\n appName: string;\n auth: ReturnType<typeof useDemoAuth>;\n children: React.ReactNode;\n}) => {\n const colorScheme = useColorScheme();\n const darkMode = colorScheme === \"dark\";\n const [username, setUsername] = useState<string>(\"\");\n const [errorMessage, setErrorMessage] = useState<string | null>(null);\n\n const handleSignUp = () => {\n setErrorMessage(null);\n\n auth.signUp(username).catch((error) => {\n setErrorMessage(error.message);\n });\n };\n\n const handleLogIn = (username: string) => {\n setErrorMessage(null);\n\n auth.logIn(username).catch((error) => {\n setErrorMessage(error.message);\n });\n };\n\n if (auth.state === \"signedIn\") {\n return children;\n }\n\n return (\n <View\n style={[\n styles.container,\n darkMode ? styles.darkBackground : styles.lightBackground,\n ]}\n >\n <View style={styles.formContainer}>\n <Text\n style={[\n styles.headerText,\n darkMode ? styles.darkText : styles.lightText,\n ]}\n >\n {appName}\n </Text>\n\n {errorMessage && <Text style={styles.errorText}>{errorMessage}</Text>}\n\n <TextInput\n placeholder=\"Display name\"\n value={username}\n onChangeText={setUsername}\n placeholderTextColor={darkMode ? \"#fff\" : \"#000\"}\n style={[\n styles.textInput,\n darkMode ? styles.darkInput : styles.lightInput,\n ]}\n />\n\n <TouchableOpacity\n onPress={handleSignUp}\n style={[\n styles.button,\n darkMode ? styles.darkButton : styles.lightButton,\n ]}\n >\n <Text\n style={darkMode ? styles.darkButtonText : styles.lightButtonText}\n >\n Sign Up as new account\n </Text>\n </TouchableOpacity>\n\n <View style={styles.existingUsersContainer}>\n {auth.existingUsers.map((user) => (\n <TouchableOpacity\n key={user}\n onPress={() => handleLogIn(user)}\n style={[\n styles.existingUserButton,\n darkMode ? styles.darkUserButton : styles.lightUserButton,\n ]}\n >\n <Text style={darkMode ? styles.darkText : styles.lightText}>\n Log In as \"{user}\"\n </Text>\n </TouchableOpacity>\n ))}\n </View>\n </View>\n </View>\n );\n};\n\nconst styles = StyleSheet.create({\n container: {\n flex: 1,\n justifyContent: \"center\",\n alignItems: \"center\",\n padding: 20,\n },\n formContainer: {\n width: \"80%\",\n alignItems: \"center\",\n justifyContent: \"center\",\n },\n headerText: {\n fontSize: 24,\n marginBottom: 20,\n },\n errorText: {\n color: \"red\",\n marginVertical: 5,\n textAlign: \"center\",\n },\n textInput: {\n borderWidth: 1,\n padding: 10,\n marginVertical: 10,\n width: \"100%\",\n borderRadius: 6,\n },\n darkInput: {\n borderColor: \"#444\",\n backgroundColor: \"#000\",\n color: \"#fff\",\n },\n lightInput: {\n borderColor: \"#ddd\",\n backgroundColor: \"#fff\",\n color: \"#000\",\n },\n button: {\n paddingVertical: 15,\n paddingHorizontal: 10,\n borderRadius: 6,\n width: \"100%\",\n marginVertical: 10,\n },\n darkButton: {\n backgroundColor: \"#444\",\n },\n lightButton: {\n backgroundColor: \"#ddd\",\n },\n darkButtonText: {\n color: \"#fff\",\n textAlign: \"center\",\n },\n lightButtonText: {\n color: \"#000\",\n textAlign: \"center\",\n },\n existingUsersContainer: {\n width: \"100%\",\n marginTop: 20,\n },\n existingUserButton: {\n paddingVertical: 15,\n paddingHorizontal: 10,\n borderRadius: 6,\n marginVertical: 5,\n },\n darkUserButton: {\n backgroundColor: \"#222\",\n },\n lightUserButton: {\n backgroundColor: \"#eee\",\n },\n loadingText: {\n fontSize: 18,\n color: \"#888\",\n },\n darkText: {\n color: \"#fff\",\n },\n lightText: {\n color: \"#000\",\n },\n darkBackground: {\n backgroundColor: \"#000\",\n },\n lightBackground: {\n backgroundColor: \"#fff\",\n },\n});\n","import { KvStoreContext } from \"../storage/kv-store-context.js\";\n\nexport * from \"./DemoAuthUI.js\";\n\nexport function clearUserCredentials() {\n const kvStore = KvStoreContext.getInstance().getStorage();\n\n // TODO: Migrate the Auth methods to use the same storage key/interface\n return Promise.all([\n kvStore.delete(\"demo-auth-logged-in-secret\"),\n kvStore.delete(\"jazz-clerk-auth\"),\n kvStore.delete(\"jazz-logged-in-secret\"),\n ]);\n}\n","import { useEffect } from \"react\";\n\nimport { CoValueClassOrSchema, parseInviteLink } from \"jazz-tools\";\nimport { useJazzContext } from \"jazz-tools/react-core\";\nimport { Linking } from \"react-native\";\n\nexport {\n useCoState,\n experimental_useInboxSender,\n useDemoAuth,\n usePassphraseAuth,\n useJazzContext,\n useAuthSecretStorage,\n useIsAuthenticated,\n useAccount,\n} from \"jazz-tools/react-core\";\n\nexport function useAcceptInviteNative<S extends CoValueClassOrSchema>({\n invitedObjectSchema,\n onAccept,\n forValueHint,\n}: {\n invitedObjectSchema: S;\n onAccept: (projectID: string) => void;\n forValueHint?: string;\n}): void {\n const context = useJazzContext();\n\n if (!(\"me\" in context)) {\n throw new Error(\n \"useAcceptInviteNative can't be used in a JazzProvider with auth === 'guest'.\",\n );\n }\n\n useEffect(() => {\n const handleDeepLink = ({ url }: { url: string }) => {\n const result = parseInviteLink(url);\n if (result && result.valueHint === forValueHint) {\n context.me\n .acceptInvite(\n result.valueID,\n result.inviteSecret,\n invitedObjectSchema,\n )\n .then(() => {\n onAccept(result.valueID);\n })\n .catch((e) => {\n console.error(\"Failed to accept invite\", e);\n });\n }\n };\n\n const linkingListener = Linking.addEventListener(\"url\", handleDeepLink);\n\n void Linking.getInitialURL().then((url) => {\n if (url) handleDeepLink({ url });\n });\n\n return () => {\n linkingListener.remove();\n };\n }, [context, onAccept, invitedObjectSchema, forValueHint]);\n}\n","import { ImageDefinition, Loaded } from \"jazz-tools\";\nimport React, { useEffect, useState } from \"react\";\n\n/** @category Media */\nexport function useProgressiveImgNative({\n image,\n maxWidth,\n targetWidth,\n}: {\n image: Loaded<typeof ImageDefinition> | null | undefined;\n maxWidth?: number;\n targetWidth?: number;\n}) {\n const [current, setCurrent] = useState<\n { src?: string; res?: `${number}x${number}` | \"placeholder\" } | undefined\n >(undefined);\n\n useEffect(() => {\n let lastHighestRes: string | undefined;\n if (!image) return;\n const unsub = image.subscribe({}, (update) => {\n const highestRes = ImageDefinition.highestResAvailable(update, {\n maxWidth,\n targetWidth,\n });\n if (highestRes && highestRes.res !== lastHighestRes) {\n lastHighestRes = highestRes.res;\n // use the base64 data directly\n const dataUrl = highestRes.stream.asBase64({ dataURL: true });\n if (dataUrl) {\n setCurrent({\n src: dataUrl,\n res: highestRes.res,\n });\n } else {\n // Fallback to placeholder if chunks aren't available\n console.warn(\"No chunks available for image\", image.id);\n setCurrent({\n src: update?.placeholderDataURL,\n res: \"placeholder\",\n });\n }\n } else if (!highestRes) {\n setCurrent({\n src: update?.placeholderDataURL,\n res: \"placeholder\",\n });\n }\n });\n\n return unsub;\n }, [image?.id, maxWidth]);\n\n return {\n src: current?.src,\n res: current?.res,\n originalSize: image?.originalSize,\n };\n}\n\n/** @category Media */\nexport function ProgressiveImgNative({\n children,\n image,\n maxWidth,\n targetWidth,\n}: {\n children: (result: {\n src: string | undefined;\n res: `${number}x${number}` | \"placeholder\" | undefined;\n originalSize: readonly [number, number] | undefined;\n }) => React.ReactNode;\n image: Loaded<typeof ImageDefinition> | null | undefined;\n maxWidth?: number;\n targetWidth?: number;\n}) {\n const result = useProgressiveImgNative({ image, maxWidth, targetWidth });\n return result && children(result);\n}\n","import {\n Account,\n AccountClass,\n AnyAccountSchema,\n CoValueFromRaw,\n InstanceOfSchema,\n JazzContextType,\n KvStore,\n} from \"jazz-tools\";\nimport { JazzContext, JazzContextManagerContext } from \"jazz-tools/react-core\";\nimport React, { useEffect, useRef } from \"react\";\nimport type { JazzContextManagerProps } from \"./ReactNativeContextManager.js\";\nimport { ReactNativeContextManager } from \"./ReactNativeContextManager.js\";\nimport { setupKvStore } from \"./platform.js\";\n\nexport type JazzProviderProps<\n S extends\n | (AccountClass<Account> & CoValueFromRaw<Account>)\n | AnyAccountSchema,\n> = {\n children: React.ReactNode;\n kvStore?: KvStore;\n} & JazzContextManagerProps<S>;\n\n/** @category Context & Hooks */\nexport function JazzProviderCore<\n S extends\n | (AccountClass<Account> & CoValueFromRaw<Account>)\n | AnyAccountSchema,\n>({\n children,\n guestMode,\n sync,\n storage,\n AccountSchema,\n defaultProfileName,\n onLogOut,\n logOutReplacement,\n onAnonymousAccountDiscarded,\n kvStore,\n CryptoProvider,\n}: JazzProviderProps<S>) {\n setupKvStore(kvStore);\n\n const [contextManager] = React.useState(\n () => new ReactNativeContextManager<S>(),\n );\n\n const onLogOutRefCallback = useRefCallback(onLogOut);\n const logOutReplacementRefCallback = useRefCallback(logOutReplacement);\n const onAnonymousAccountDiscardedRefCallback = useRefCallback(\n onAnonymousAccountDiscarded,\n );\n const logoutReplacementActiveRef = useRef(false);\n logoutReplacementActiveRef.current = Boolean(logOutReplacement);\n\n const value = React.useSyncExternalStore<\n JazzContextType<InstanceOfSchema<S>> | undefined\n >(\n React.useCallback(\n (callback) => {\n const props = {\n AccountSchema,\n guestMode,\n sync,\n storage,\n defaultProfileName,\n onLogOut: onLogOutRefCallback,\n logOutReplacement: logoutReplacementActiveRef.current\n ? logOutReplacementRefCallback\n : undefined,\n onAnonymousAccountDiscarded: onAnonymousAccountDiscardedRefCallback,\n CryptoProvider,\n } satisfies JazzContextManagerProps<S>;\n\n if (contextManager.propsChanged(props)) {\n contextManager.createContext(props).catch((error) => {\n console.log(error.stack);\n console.error(\"Error creating Jazz React Native context:\", error);\n });\n }\n\n return contextManager.subscribe(callback);\n },\n [sync, guestMode].concat(storage as any),\n ),\n () => contextManager.getCurrentValue(),\n () => contextManager.getCurrentValue(),\n );\n\n useEffect(() => {\n // In development mode we don't return a cleanup function because otherwise\n // the double effect execution would mark the context as done immediately.\n if (process.env.NODE_ENV === \"development\") return;\n\n return () => {\n contextManager.done();\n };\n }, []);\n\n return (\n <JazzContext.Provider value={value}>\n <JazzContextManagerContext.Provider value={contextManager}>\n {value && children}\n </JazzContextManagerContext.Provider>\n </JazzContext.Provider>\n );\n}\n\nfunction useRefCallback<T extends (...args: any[]) => any>(callback?: T) {\n const callbackRef = React.useRef(callback);\n callbackRef.current = callback;\n return useRef(\n (...args: Parameters<T>): ReturnType<T> => callbackRef.current?.(...args),\n ).current;\n}\n","import {\n Account,\n AccountClass,\n CoValueFromRaw,\n JazzContextManager,\n KvStore,\n SyncConfig,\n} from \"jazz-tools\";\nimport type {\n AnyAccountSchema,\n InstanceOfSchema,\n JazzContextManagerAuthProps,\n} from \"jazz-tools\";\nimport {\n BaseReactNativeContextOptions,\n createJazzReactNativeContext,\n createJazzReactNativeGuestContext,\n} from \"./platform.js\";\nimport { KvStoreContext } from \"./storage/kv-store-context.js\";\n\nexport type JazzContextManagerProps<\n S extends\n | (AccountClass<Account> & CoValueFromRaw<Account>)\n | AnyAccountSchema,\n> = {\n guestMode?: boolean;\n sync: SyncConfig;\n onLogOut?: () => void;\n logOutReplacement?: () => void;\n storage?: BaseReactNativeContextOptions[\"storage\"];\n AccountSchema?: S;\n defaultProfileName?: string;\n onAnonymousAccountDiscarded?: (\n anonymousAccount: InstanceOfSchema<S>,\n ) => Promise<void>;\n CryptoProvider?: BaseReactNativeContextOptions[\"CryptoProvider\"];\n};\n\nexport class ReactNativeContextManager<\n S extends\n | (AccountClass<Account> & CoValueFromRaw<Account>)\n | AnyAccountSchema,\n> extends JazzContextManager<InstanceOfSchema<S>, JazzContextManagerProps<S>> {\n async getNewContext(\n props: JazzContextManagerProps<S>,\n authProps?: JazzContextManagerAuthProps,\n ) {\n if (props.guestMode) {\n return createJazzReactNativeGuestContext({\n sync: props.sync,\n storage: props.storage,\n authSecretStorage: this.authSecretStorage,\n CryptoProvider: props.CryptoProvider,\n });\n } else {\n return createJazzReactNativeContext<S>({\n sync: props.sync,\n storage: props.storage,\n AccountSchema: props.AccountSchema,\n credentials: authProps?.credentials,\n newAccountProps: authProps?.newAccountProps,\n defaultProfileName: props.defaultProfileName,\n authSecretStorage: this.authSecretStorage,\n CryptoProvider: props.CryptoProvider,\n });\n }\n }\n\n getKvStore(): KvStore {\n return KvStoreContext.getInstance().getStorage();\n }\n\n propsChanged(props: JazzContextManagerProps<S>) {\n if (!this.props) {\n return true;\n }\n\n return (\n this.props.sync.when !== props.sync.when ||\n this.props.sync.peer !== props.sync.peer ||\n this.props.guestMode !== props.guestMode\n );\n }\n}\n","import NetInfo from \"@react-native-community/netinfo\";\nimport { LocalNode, Peer, RawAccountID, getSqliteStorageAsync } from \"cojson\";\nimport { PureJSCrypto } from \"cojson/dist/crypto/PureJSCrypto\"; // Importing from dist to not rely on the exports field\nimport {\n Account,\n AccountClass,\n AgentID,\n AnyAccountSchema,\n AuthCredentials,\n AuthSecretStorage,\n CoValue,\n CoValueFromRaw,\n CryptoProvider,\n ID,\n NewAccountProps,\n SessionID,\n SyncConfig,\n createInviteLink as baseCreateInviteLink,\n createAnonymousJazzContext,\n createJazzContext,\n} from \"jazz-tools\";\nimport { KvStore, KvStoreContext } from \"./storage/kv-store-context.js\";\n\nimport { SQLiteDatabaseDriverAsync } from \"cojson\";\nimport { WebSocketPeerWithReconnection } from \"cojson-transport-ws\";\nimport type { RNQuickCrypto } from \"jazz-tools/react-native-core/crypto\";\n\nexport type BaseReactNativeContextOptions = {\n sync: SyncConfig;\n reconnectionTimeout?: number;\n storage?: SQLiteDatabaseDriverAsync | \"disabled\";\n CryptoProvider?: typeof PureJSCrypto | typeof RNQuickCrypto;\n authSecretStorage: AuthSecretStorage;\n};\n\nclass ReactNativeWebSocketPeerWithReconnection extends WebSocketPeerWithReconnection {\n onNetworkChange(callback: (connected: boolean) => void): () => void {\n return NetInfo.addEventListener((state) =>\n callback(state.isConnected ?? false),\n );\n }\n}\n\nasync function setupPeers(options: BaseReactNativeContextOptions) {\n const CryptoProvider = options.CryptoProvider || PureJSCrypto;\n const crypto = await CryptoProvider.create();\n let node: LocalNode | undefined = undefined;\n\n const peersToLoadFrom: Peer[] = [];\n\n const storage =\n options.storage && options.storage !== \"disabled\"\n ? await getSqliteStorageAsync(options.storage)\n : undefined;\n\n if (options.sync.when === \"never\") {\n return {\n toggleNetwork: () => {},\n peersToLoadFrom,\n setNode: () => {},\n crypto,\n storage,\n };\n }\n\n const wsPeer = new ReactNativeWebSocketPeerWithReconnection({\n peer: options.sync.peer,\n reconnectionTimeout: options.reconnectionTimeout,\n addPeer: (peer) => {\n if (node) {\n node.syncManager.addPeer(peer);\n } else {\n peersToLoadFrom.push(peer);\n }\n },\n removePeer: (peer) => {\n peersToLoadFrom.splice(peersToLoadFrom.indexOf(peer), 1);\n },\n });\n\n function toggleNetwork(enabled: boolean) {\n if (enabled) {\n wsPeer.enable();\n } else {\n wsPeer.disable();\n }\n }\n\n function setNode(value: LocalNode) {\n node = value;\n }\n\n if (options.sync.when === \"always\" || !options.sync.when) {\n toggleNetwork(true);\n }\n\n return {\n toggleNetwork,\n peersToLoadFrom,\n setNode,\n crypto,\n storage,\n };\n}\n\nexport async function createJazzReactNativeGuestContext(\n options: BaseReactNativeContextOptions,\n) {\n const { toggleNetwork, peersToLoadFrom, setNode, crypto, storage } =\n await setupPeers(options);\n\n const context = createAnonymousJazzContext({\n crypto,\n peersToLoadFrom,\n storage,\n });\n\n setNode(context.agent.node);\n\n options.authSecretStorage.emitUpdate(null);\n\n return {\n guest: context.agent,\n node: context.agent.node,\n done: () => {\n // TODO: Sync all the covalues before closing the connection & context\n toggleNetwork(false);\n context.done();\n },\n logOut: () => {\n return context.logOut();\n },\n };\n}\n\nexport type ReactNativeContextOptions<\n S extends\n | (AccountClass<Account> & CoValueFromRaw<Account>)\n | AnyAccountSchema,\n> = {\n credentials?: AuthCredentials;\n AccountSchema?: S;\n newAccountProps?: NewAccountProps;\n defaultProfileName?: string;\n} & BaseReactNativeContextOptions;\n\nexport async function createJazzReactNativeContext<\n S extends\n | (AccountClass<Account> & CoValueFromRaw<Account>)\n | AnyAccountSchema,\n>(options: ReactNativeContextOptions<S>) {\n const { toggleNetwork, peersToLoadFrom, setNode, crypto, storage } =\n await setupPeers(options);\n\n let unsubscribeAuthUpdate = () => {};\n\n if (options.sync.when === \"signedUp\") {\n const authSecretStorage = options.authSecretStorage;\n const credentials = options.credentials ?? (await authSecretStorage.get());\n\n // To update the internal state with the current credentials\n authSecretStorage.emitUpdate(credentials);\n\n function handleAuthUpdate(isAuthenticated: boolean) {\n if (isAuthenticated) {\n toggleNetwork(true);\n } else {\n toggleNetwork(false);\n }\n }\n\n unsubscribeAuthUpdate = authSecretStorage.onUpdate(handleAuthUpdate);\n handleAuthUpdate(authSecretStorage.isAuthenticated);\n }\n\n const context = await createJazzContext({\n credentials: options.credentials,\n newAccountProps: options.newAccountProps,\n peersToLoadFrom,\n crypto,\n defaultProfileName: options.defaultProfileName,\n AccountSchema: options.AccountSchema,\n sessionProvider: provideLockSession,\n authSecretStorage: options.authSecretStorage,\n storage,\n });\n\n setNode(context.node);\n\n return {\n me: context.account,\n node: context.node,\n authSecretStorage: context.authSecretStorage,\n done: () => {\n // TODO: Sync all the covalues before closing the connection & context\n toggleNetwork(false);\n unsubscribeAuthUpdate();\n context.done();\n },\n logOut: () => {\n unsubscribeAuthUpdate();\n return context.logOut();\n },\n };\n}\n\n/** @category Auth Providers */\nexport type SessionProvider = (\n accountID: ID<Account> | AgentID,\n) => Promise<SessionID>;\n\nexport async function provideLockSession(\n accountID: ID<Account> | AgentID,\n crypto: CryptoProvider,\n) {\n const sessionDone = () => {};\n\n const kvStore = KvStoreContext.getInstance().getStorage();\n\n const sessionID =\n ((await kvStore.get(accountID)) as SessionID) ||\n crypto.newRandomSessionID(accountID as RawAccountID | AgentID);\n await kvStore.set(accountID, sessionID);\n\n return Promise.resolve({\n sessionID,\n sessionDone,\n });\n}\n\n/** @category Invite Links */\nexport function createInviteLink<C extends CoValue>(\n value: C,\n role: \"reader\" | \"writer\" | \"admin\",\n { baseURL, valueHint }: { baseURL?: string; valueHint?: string } = {},\n): string {\n return baseCreateInviteLink(value, role, baseURL ?? \"\", valueHint);\n}\n\nexport function setupKvStore(\n kvStore: KvStore | undefined,\n): KvStore | undefined {\n if (!kvStore) {\n return undefined;\n }\n KvStoreContext.getInstance().initialize(kvStore);\n return kvStore;\n}\n","export * from \"./auth/auth.js\";\nexport * from \"./hooks.js\";\nexport * from \"./media.js\";\nexport * from \"./provider.js\";\nexport * from \"./storage/kv-store-context.js\";\n\nexport { SQLiteDatabaseDriverAsync } from \"cojson\";\nexport { parseInviteLink } from \"jazz-tools\";\nexport { createInviteLink, setupKvStore } from \"./platform.js\";\n"],"mappings":"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","names":["username","useJazzContext","useEffect","useState","React","useEffect","CryptoProvider","handleAuthUpdate","jsx","CryptoProvider","React","useEffect","parseInviteLink"]}
@@ -1,5 +1,5 @@
1
- import type { Account, AccountClass, AnyAccountSchema, CoValueFromRaw, CoValueOrZodSchema, InstanceOfSchema, Loaded, ResolveQuery, ResolveQueryStrict } from "jazz-tools";
2
- export declare class CoState<V extends CoValueOrZodSchema, R extends ResolveQuery<V> = true> {
1
+ import type { Account, AccountClass, AnyAccountSchema, CoValueClassOrSchema, CoValueFromRaw, InstanceOfSchema, Loaded, ResolveQuery, ResolveQueryStrict } from "jazz-tools";
2
+ export declare class CoState<V extends CoValueClassOrSchema, R extends ResolveQuery<V> = true> {
3
3
  #private;
4
4
  constructor(Schema: V, id: string | undefined | null | (() => string | undefined | null), options?: {
5
5
  resolve?: ResolveQueryStrict<V, R>;
@@ -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,cAAc,EACd,kBAAkB,EAClB,gBAAgB,EAChB,MAAM,EACN,YAAY,EACZ,kBAAkB,EACnB,MAAM,YAAY,CAAC;AAOpB,qBAAa,OAAO,CAClB,CAAC,SAAS,kBAAkB,EAC5B,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,GAAG,IAAI;;gBAS9B,MAAM,EAAE,CAAC,EACT,EAAE,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,CAAC,MAAM,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC,EACjE,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,kBAAkB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;KAAE;IA6ClD,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,SAAS,GAAG,IAAI;IAM7C,IAAI,OAAO,oCAGV;CACF;AAED,qBAAa,cAAc,CACzB,CAAC,SACG,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC,GACjD,gBAAgB,EACpB,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,GAAG,IAAI;;gBAOpB,MAAM,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,kBAAkB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;KAAE;IA0CvE,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,SAAS,GAAG,IAAI;IAM7C,MAAM,aAEJ;IAEF,IAAI,OAAO,oCAIV;IAED,IAAI,KAAK,kEAQR;IAID,IAAI,eAAe,YAElB;CACF"}
1
+ {"version":3,"file":"jazz.class.svelte.d.ts","sourceRoot":"","sources":["../../../src/svelte/jazz.class.svelte.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,OAAO,EACP,YAAY,EACZ,gBAAgB,EAChB,oBAAoB,EACpB,cAAc,EACd,gBAAgB,EAChB,MAAM,EACN,YAAY,EACZ,kBAAkB,EACnB,MAAM,YAAY,CAAC;AAUpB,qBAAa,OAAO,CAClB,CAAC,SAAS,oBAAoB,EAC9B,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,GAAG,IAAI;;gBAS9B,MAAM,EAAE,CAAC,EACT,EAAE,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,CAAC,MAAM,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC,EACjE,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,kBAAkB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;KAAE;IA6ClD,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,SAAS,GAAG,IAAI;IAM7C,IAAI,OAAO,oCAGV;CACF;AAED,qBAAa,cAAc,CACzB,CAAC,SACG,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC,GACjD,gBAAgB,EACpB,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,GAAG,IAAI;;gBAOpB,MAAM,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,kBAAkB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;KAAE;IA0CvE,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,SAAS,GAAG,IAAI;IAM7C,MAAM,aAEJ;IAEF,IAAI,OAAO,oCAIV;IAED,IAAI,KAAK,kEAQR;IAID,IAAI,eAAe,YAElB;CACF"}
@@ -1,4 +1,4 @@
1
- import { anySchemaToCoSchema, subscribeToCoValue } from "jazz-tools";
1
+ import { coValueClassFromCoValueClassOrSchema, subscribeToCoValue, } 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";
@@ -22,8 +22,8 @@ export class CoState {
22
22
  return this.update(undefined);
23
23
  }
24
24
  const agent = "me" in ctx ? ctx.me : ctx.guest;
25
- const unsubscribe = subscribeToCoValue(anySchemaToCoSchema(Schema), id, {
26
- // @ts-expect-error The resolve query type isn't compatible with the anySchemaToCoSchema conversion
25
+ const unsubscribe = subscribeToCoValue(coValueClassFromCoValueClassOrSchema(Schema), id, {
26
+ // @ts-expect-error The resolve query type isn't compatible with the coValueClassFromCoValueClassOrSchema conversion
27
27
  resolve: options?.resolve,
28
28
  loadAs: agent,
29
29
  onUnavailable: () => {
@@ -69,8 +69,8 @@ export class AccountCoState {
69
69
  return this.update(undefined);
70
70
  }
71
71
  const me = ctx.me;
72
- const unsubscribe = subscribeToCoValue(anySchemaToCoSchema(Schema), me.id, {
73
- // @ts-expect-error The resolve query type isn't compatible with the anySchemaToCoSchema conversion
72
+ const unsubscribe = subscribeToCoValue(coValueClassFromCoValueClassOrSchema(Schema), me.id, {
73
+ // @ts-expect-error The resolve query type isn't compatible with the coValueClassFromCoValueClassOrSchema conversion
74
74
  resolve: options?.resolve,
75
75
  loadAs: me,
76
76
  onUnavailable: () => {
@@ -1,4 +1,4 @@
1
- import type { AuthSecretStorage, CoValueOrZodSchema, ID, JazzContextType } from "jazz-tools";
1
+ import type { AuthSecretStorage, CoValueClassOrSchema, ID, JazzContextType } from "jazz-tools";
2
2
  import { Account } from "jazz-tools";
3
3
  import Provider from "./Provider.svelte";
4
4
  export { Provider as JazzSvelteProvider };
@@ -29,7 +29,7 @@ export declare function getAuthSecretStorage(): AuthSecretStorage;
29
29
  * @param forValueHint - Hint for the value.
30
30
  * @returns The accept invite hook.
31
31
  */
32
- export declare class InviteListener<V extends CoValueOrZodSchema> {
32
+ export declare class InviteListener<V extends CoValueClassOrSchema> {
33
33
  constructor({ invitedObjectSchema, onAccept, forValueHint, }: {
34
34
  invitedObjectSchema: V;
35
35
  onAccept: (projectID: ID<V>) => void;
@@ -1 +1 @@
1
- {"version":3,"file":"jazz.svelte.d.ts","sourceRoot":"","sources":["../../../src/svelte/jazz.svelte.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,iBAAiB,EACjB,kBAAkB,EAClB,EAAE,EAEF,eAAe,EAChB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAGrC,OAAO,QAAQ,MAAM,mBAAmB,CAAC;AAEzC,OAAO,EAAE,QAAQ,IAAI,kBAAkB,EAAE,CAAC;AAE1C;;GAEG;AACH,eAAO,MAAM,QAAQ,IAAK,CAAC;AAC3B,eAAO,MAAM,aAAa,IAAK,CAAC;AAEhC;;GAEG;AACH,MAAM,MAAM,WAAW,CAAC,GAAG,SAAS,OAAO,IAAI;IAC7C,OAAO,CAAC,EAAE,eAAe,CAAC,GAAG,CAAC,CAAC;CAChC,CAAC;AAEF;;;GAGG;AACH,wBAAgB,cAAc,CAAC,GAAG,SAAS,OAAO,KAW9B;IAChB,OAAO,EAAE,eAAe,CAAC,GAAG,CAAC,CAAC;CAC/B,CACF;AAED,wBAAgB,oBAAoB,sBAUnC;AAED;;;;;;;GAOG;AACH,qBAAa,cAAc,CAAC,CAAC,SAAS,kBAAkB;gBAC1C,EACV,mBAAmB,EACnB,QAAQ,EACR,YAAY,GACb,EAAE;QACD,mBAAmB,EAAE,CAAC,CAAC;QACvB,QAAQ,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;QACrC,YAAY,CAAC,EAAE,MAAM,CAAC;KACvB;CA+BF"}
1
+ {"version":3,"file":"jazz.svelte.d.ts","sourceRoot":"","sources":["../../../src/svelte/jazz.svelte.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,iBAAiB,EACjB,oBAAoB,EACpB,EAAE,EAEF,eAAe,EAChB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAGrC,OAAO,QAAQ,MAAM,mBAAmB,CAAC;AAEzC,OAAO,EAAE,QAAQ,IAAI,kBAAkB,EAAE,CAAC;AAE1C;;GAEG;AACH,eAAO,MAAM,QAAQ,IAAK,CAAC;AAC3B,eAAO,MAAM,aAAa,IAAK,CAAC;AAEhC;;GAEG;AACH,MAAM,MAAM,WAAW,CAAC,GAAG,SAAS,OAAO,IAAI;IAC7C,OAAO,CAAC,EAAE,eAAe,CAAC,GAAG,CAAC,CAAC;CAChC,CAAC;AAEF;;;GAGG;AACH,wBAAgB,cAAc,CAAC,GAAG,SAAS,OAAO,KAW9B;IAChB,OAAO,EAAE,eAAe,CAAC,GAAG,CAAC,CAAC;CAC/B,CACF;AAED,wBAAgB,oBAAoB,sBAUnC;AAED;;;;;;;GAOG;AACH,qBAAa,cAAc,CAAC,CAAC,SAAS,oBAAoB;gBAC5C,EACV,mBAAmB,EACnB,QAAQ,EACR,YAAY,GACb,EAAE;QACD,mBAAmB,EAAE,CAAC,CAAC;QACvB,QAAQ,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;QACrC,YAAY,CAAC,EAAE,MAAM,CAAC;KACvB;CA+BF"}