jazz-tools 0.18.38 → 0.19.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (304) hide show
  1. package/.svelte-kit/__package__/jazz.class.svelte.d.ts +8 -8
  2. package/.svelte-kit/__package__/jazz.class.svelte.d.ts.map +1 -1
  3. package/.svelte-kit/__package__/jazz.class.svelte.js +39 -14
  4. package/.svelte-kit/__package__/media/image.svelte +6 -5
  5. package/.svelte-kit/__package__/media/image.svelte.d.ts.map +1 -1
  6. package/.svelte-kit/__package__/tests/AccountCoState.svelte.test-d.d.ts +2 -0
  7. package/.svelte-kit/__package__/tests/AccountCoState.svelte.test-d.d.ts.map +1 -0
  8. package/.svelte-kit/__package__/tests/AccountCoState.svelte.test-d.js +19 -0
  9. package/.svelte-kit/__package__/tests/CoState.svelte.test-d.d.ts +2 -0
  10. package/.svelte-kit/__package__/tests/CoState.svelte.test-d.d.ts.map +1 -0
  11. package/.svelte-kit/__package__/tests/CoState.svelte.test-d.js +16 -0
  12. package/.svelte-kit/__package__/tests/CoState.svelte.test.d.ts +2 -0
  13. package/.svelte-kit/__package__/tests/CoState.svelte.test.d.ts.map +1 -0
  14. package/.svelte-kit/__package__/tests/CoState.svelte.test.js +42 -0
  15. package/.svelte-kit/__package__/tests/TestCoStateWrapper.svelte +23 -0
  16. package/.svelte-kit/__package__/tests/TestCoStateWrapper.svelte.d.ts +12 -0
  17. package/.svelte-kit/__package__/tests/TestCoStateWrapper.svelte.d.ts.map +1 -0
  18. package/.turbo/turbo-build.log +62 -62
  19. package/CHANGELOG.md +32 -0
  20. package/dist/better-auth/database-adapter/index.js +14 -11
  21. package/dist/better-auth/database-adapter/index.js.map +1 -1
  22. package/dist/better-auth/database-adapter/repository/generic.d.ts +1 -1
  23. package/dist/better-auth/database-adapter/repository/generic.d.ts.map +1 -1
  24. package/dist/better-auth/database-adapter/repository/user.d.ts.map +1 -1
  25. package/dist/{chunk-OSQ7S47Q.js → chunk-NCNM6UDZ.js} +563 -252
  26. package/dist/chunk-NCNM6UDZ.js.map +1 -0
  27. package/dist/index.js +14 -6
  28. package/dist/index.js.map +1 -1
  29. package/dist/media/{chunk-K6GCHLQU.js → chunk-3LKBM3G3.js} +23 -15
  30. package/dist/media/chunk-3LKBM3G3.js.map +1 -0
  31. package/dist/media/create-image/browser.d.ts +2 -2
  32. package/dist/media/create-image/react-native.d.ts +2 -2
  33. package/dist/media/create-image/server.d.ts +2 -2
  34. package/dist/media/create-image-factory.d.ts +2 -2
  35. package/dist/media/index.browser.js +1 -1
  36. package/dist/media/index.js +1 -1
  37. package/dist/media/index.native.js +1 -1
  38. package/dist/media/index.server.js +1 -1
  39. package/dist/media/utils.d.ts.map +1 -1
  40. package/dist/react/hooks.d.ts +1 -1
  41. package/dist/react/hooks.d.ts.map +1 -1
  42. package/dist/react/index.d.ts +1 -1
  43. package/dist/react/index.d.ts.map +1 -1
  44. package/dist/react/index.js +31 -15
  45. package/dist/react/index.js.map +1 -1
  46. package/dist/react/media/image.d.ts.map +1 -1
  47. package/dist/react-core/hooks.d.ts +126 -224
  48. package/dist/react-core/hooks.d.ts.map +1 -1
  49. package/dist/react-core/index.js +65 -63
  50. package/dist/react-core/index.js.map +1 -1
  51. package/dist/react-core/subscription-provider.d.ts.map +1 -1
  52. package/dist/react-core/tests/createCoValueSubscriptionContext.test.d.ts +2 -0
  53. package/dist/react-core/tests/createCoValueSubscriptionContext.test.d.ts.map +1 -0
  54. package/dist/react-core/tests/useAccount.selector.test.d.ts +2 -0
  55. package/dist/react-core/tests/useAccount.selector.test.d.ts.map +1 -0
  56. package/dist/react-core/tests/useCoState.selector.test.d.ts +2 -0
  57. package/dist/react-core/tests/useCoState.selector.test.d.ts.map +1 -0
  58. package/dist/react-native-core/hooks.d.ts +1 -1
  59. package/dist/react-native-core/hooks.d.ts.map +1 -1
  60. package/dist/react-native-core/index.js +7 -5
  61. package/dist/react-native-core/index.js.map +1 -1
  62. package/dist/react-native-core/media/image.d.ts.map +1 -1
  63. package/dist/svelte/jazz.class.svelte.d.ts +8 -8
  64. package/dist/svelte/jazz.class.svelte.d.ts.map +1 -1
  65. package/dist/svelte/jazz.class.svelte.js +39 -14
  66. package/dist/svelte/media/image.svelte +6 -5
  67. package/dist/svelte/media/image.svelte.d.ts.map +1 -1
  68. package/dist/svelte/tests/AccountCoState.svelte.test-d.d.ts +2 -0
  69. package/dist/svelte/tests/AccountCoState.svelte.test-d.d.ts.map +1 -0
  70. package/dist/svelte/tests/AccountCoState.svelte.test-d.js +19 -0
  71. package/dist/svelte/tests/CoState.svelte.test-d.d.ts +2 -0
  72. package/dist/svelte/tests/CoState.svelte.test-d.d.ts.map +1 -0
  73. package/dist/svelte/tests/CoState.svelte.test-d.js +16 -0
  74. package/dist/svelte/tests/CoState.svelte.test.d.ts +2 -0
  75. package/dist/svelte/tests/CoState.svelte.test.d.ts.map +1 -0
  76. package/dist/svelte/tests/CoState.svelte.test.js +42 -0
  77. package/dist/svelte/tests/TestCoStateWrapper.svelte +23 -0
  78. package/dist/svelte/tests/TestCoStateWrapper.svelte.d.ts +12 -0
  79. package/dist/svelte/tests/TestCoStateWrapper.svelte.d.ts.map +1 -0
  80. package/dist/testing.js +3 -1
  81. package/dist/testing.js.map +1 -1
  82. package/dist/tools/coValues/CoValueBase.d.ts +4 -1
  83. package/dist/tools/coValues/CoValueBase.d.ts.map +1 -1
  84. package/dist/tools/coValues/account.d.ts +6 -6
  85. package/dist/tools/coValues/account.d.ts.map +1 -1
  86. package/dist/tools/coValues/coFeed.d.ts +5 -5
  87. package/dist/tools/coValues/coFeed.d.ts.map +1 -1
  88. package/dist/tools/coValues/coList.d.ts +9 -8
  89. package/dist/tools/coValues/coList.d.ts.map +1 -1
  90. package/dist/tools/coValues/coMap.d.ts +17 -17
  91. package/dist/tools/coValues/coMap.d.ts.map +1 -1
  92. package/dist/tools/coValues/coPlainText.d.ts +3 -3
  93. package/dist/tools/coValues/coPlainText.d.ts.map +1 -1
  94. package/dist/tools/coValues/coVector.d.ts +3 -3
  95. package/dist/tools/coValues/coVector.d.ts.map +1 -1
  96. package/dist/tools/coValues/deepLoading.d.ts +71 -40
  97. package/dist/tools/coValues/deepLoading.d.ts.map +1 -1
  98. package/dist/tools/coValues/extensions/imageDef.d.ts +1 -1
  99. package/dist/tools/coValues/extensions/imageDef.d.ts.map +1 -1
  100. package/dist/tools/coValues/group.d.ts +2 -2
  101. package/dist/tools/coValues/group.d.ts.map +1 -1
  102. package/dist/tools/coValues/inbox.d.ts.map +1 -1
  103. package/dist/tools/coValues/interfaces.d.ts +17 -9
  104. package/dist/tools/coValues/interfaces.d.ts.map +1 -1
  105. package/dist/tools/coValues/request.d.ts.map +1 -1
  106. package/dist/tools/coValues/schemaUnion.d.ts +6 -9
  107. package/dist/tools/coValues/schemaUnion.d.ts.map +1 -1
  108. package/dist/tools/exports.d.ts +3 -3
  109. package/dist/tools/exports.d.ts.map +1 -1
  110. package/dist/tools/implementation/refs.d.ts +3 -3
  111. package/dist/tools/implementation/refs.d.ts.map +1 -1
  112. package/dist/tools/implementation/schema.d.ts +2 -2
  113. package/dist/tools/implementation/schema.d.ts.map +1 -1
  114. package/dist/tools/implementation/schemaUtils.d.ts +8 -0
  115. package/dist/tools/implementation/schemaUtils.d.ts.map +1 -1
  116. package/dist/tools/implementation/zodSchema/runtimeConverters/coValueSchemaTransformation.d.ts.map +1 -1
  117. package/dist/tools/implementation/zodSchema/schemaTypes/AccountSchema.d.ts +33 -18
  118. package/dist/tools/implementation/zodSchema/schemaTypes/AccountSchema.d.ts.map +1 -1
  119. package/dist/tools/implementation/zodSchema/schemaTypes/CoDiscriminatedUnionSchema.d.ts +19 -7
  120. package/dist/tools/implementation/zodSchema/schemaTypes/CoDiscriminatedUnionSchema.d.ts.map +1 -1
  121. package/dist/tools/implementation/zodSchema/schemaTypes/CoFeedSchema.d.ts +23 -12
  122. package/dist/tools/implementation/zodSchema/schemaTypes/CoFeedSchema.d.ts.map +1 -1
  123. package/dist/tools/implementation/zodSchema/schemaTypes/CoListSchema.d.ts +29 -18
  124. package/dist/tools/implementation/zodSchema/schemaTypes/CoListSchema.d.ts.map +1 -1
  125. package/dist/tools/implementation/zodSchema/schemaTypes/CoMapSchema.d.ts +39 -22
  126. package/dist/tools/implementation/zodSchema/schemaTypes/CoMapSchema.d.ts.map +1 -1
  127. package/dist/tools/implementation/zodSchema/schemaTypes/CoOptionalSchema.d.ts +1 -0
  128. package/dist/tools/implementation/zodSchema/schemaTypes/CoOptionalSchema.d.ts.map +1 -1
  129. package/dist/tools/implementation/zodSchema/schemaTypes/CoRecordSchema.d.ts +30 -19
  130. package/dist/tools/implementation/zodSchema/schemaTypes/CoRecordSchema.d.ts.map +1 -1
  131. package/dist/tools/implementation/zodSchema/schemaTypes/CoValueSchema.d.ts +5 -0
  132. package/dist/tools/implementation/zodSchema/schemaTypes/CoValueSchema.d.ts.map +1 -1
  133. package/dist/tools/implementation/zodSchema/schemaTypes/CoVectorSchema.d.ts +6 -5
  134. package/dist/tools/implementation/zodSchema/schemaTypes/CoVectorSchema.d.ts.map +1 -1
  135. package/dist/tools/implementation/zodSchema/schemaTypes/FileStreamSchema.d.ts +3 -2
  136. package/dist/tools/implementation/zodSchema/schemaTypes/FileStreamSchema.d.ts.map +1 -1
  137. package/dist/tools/implementation/zodSchema/schemaTypes/GroupSchema.d.ts +3 -2
  138. package/dist/tools/implementation/zodSchema/schemaTypes/GroupSchema.d.ts.map +1 -1
  139. package/dist/tools/implementation/zodSchema/schemaTypes/PlainTextSchema.d.ts +3 -2
  140. package/dist/tools/implementation/zodSchema/schemaTypes/PlainTextSchema.d.ts.map +1 -1
  141. package/dist/tools/implementation/zodSchema/schemaTypes/RichTextSchema.d.ts +3 -2
  142. package/dist/tools/implementation/zodSchema/schemaTypes/RichTextSchema.d.ts.map +1 -1
  143. package/dist/tools/implementation/zodSchema/typeConverters/InstanceOfSchema.d.ts +3 -0
  144. package/dist/tools/implementation/zodSchema/typeConverters/InstanceOfSchema.d.ts.map +1 -1
  145. package/dist/tools/implementation/zodSchema/typeConverters/InstanceOfSchemaCoValuesMaybeLoaded.d.ts +22 -0
  146. package/dist/tools/implementation/zodSchema/typeConverters/InstanceOfSchemaCoValuesMaybeLoaded.d.ts.map +1 -0
  147. package/dist/tools/implementation/zodSchema/typeConverters/InstanceOrPrimitiveOfSchema.d.ts +4 -0
  148. package/dist/tools/implementation/zodSchema/typeConverters/InstanceOrPrimitiveOfSchema.d.ts.map +1 -1
  149. package/dist/tools/implementation/zodSchema/typeConverters/InstanceOrPrimitiveOfSchemaCoValuesMaybeLoaded.d.ts +9 -0
  150. package/dist/tools/implementation/zodSchema/typeConverters/InstanceOrPrimitiveOfSchemaCoValuesMaybeLoaded.d.ts.map +1 -0
  151. package/dist/tools/implementation/zodSchema/unionUtils.d.ts.map +1 -1
  152. package/dist/tools/implementation/zodSchema/zodCo.d.ts.map +1 -1
  153. package/dist/tools/implementation/zodSchema/zodSchema.d.ts +7 -6
  154. package/dist/tools/implementation/zodSchema/zodSchema.d.ts.map +1 -1
  155. package/dist/tools/internal.d.ts +3 -3
  156. package/dist/tools/internal.d.ts.map +1 -1
  157. package/dist/tools/lib/utils.d.ts +14 -0
  158. package/dist/tools/lib/utils.d.ts.map +1 -0
  159. package/dist/tools/lib/utils.test.d.ts +2 -0
  160. package/dist/tools/lib/utils.test.d.ts.map +1 -0
  161. package/dist/tools/subscribe/CoValueCoreSubscription.d.ts +3 -2
  162. package/dist/tools/subscribe/CoValueCoreSubscription.d.ts.map +1 -1
  163. package/dist/tools/subscribe/JazzError.d.ts +4 -3
  164. package/dist/tools/subscribe/JazzError.d.ts.map +1 -1
  165. package/dist/tools/subscribe/SubscriptionScope.d.ts +7 -5
  166. package/dist/tools/subscribe/SubscriptionScope.d.ts.map +1 -1
  167. package/dist/tools/subscribe/index.d.ts.map +1 -1
  168. package/dist/tools/subscribe/types.d.ts +23 -3
  169. package/dist/tools/subscribe/types.d.ts.map +1 -1
  170. package/dist/tools/subscribe/utils.d.ts.map +1 -1
  171. package/dist/tools/testing.d.ts +3 -2
  172. package/dist/tools/testing.d.ts.map +1 -1
  173. package/dist/tools/tests/schema.resolved.test.d.ts +2 -0
  174. package/dist/tools/tests/schema.resolved.test.d.ts.map +1 -0
  175. package/dist/tools/tests/utils.d.ts +2 -1
  176. package/dist/tools/tests/utils.d.ts.map +1 -1
  177. package/package.json +4 -4
  178. package/src/better-auth/database-adapter/index.ts +2 -2
  179. package/src/better-auth/database-adapter/repository/account.ts +3 -3
  180. package/src/better-auth/database-adapter/repository/generic.ts +9 -6
  181. package/src/better-auth/database-adapter/repository/user.ts +6 -2
  182. package/src/better-auth/database-adapter/schema.ts +1 -1
  183. package/src/better-auth/database-adapter/tests/index.test.ts +3 -4
  184. package/src/inspector/tests/viewer/history-view.test.tsx +6 -2
  185. package/src/media/utils.test.ts +5 -0
  186. package/src/media/utils.ts +25 -16
  187. package/src/react/hooks.tsx +2 -2
  188. package/src/react/index.ts +2 -2
  189. package/src/react/media/image.tsx +10 -2
  190. package/src/react/tests/useAcceptInvite.test.ts +3 -1
  191. package/src/react-core/hooks.ts +226 -304
  192. package/src/react-core/subscription-provider.tsx +14 -7
  193. package/src/react-core/tests/createCoValueSubscriptionContext.test.tsx +233 -0
  194. package/src/react-core/tests/subscription.bench.tsx +32 -15
  195. package/src/react-core/tests/{useAccountWithSelector.test.ts → useAccount.selector.test.ts} +72 -24
  196. package/src/react-core/tests/useAccount.test.ts +92 -106
  197. package/src/react-core/tests/{useCoStateWithSelector.test.ts → useCoState.selector.test.ts} +23 -8
  198. package/src/react-core/tests/useCoState.test.ts +173 -49
  199. package/src/react-core/tests/useInboxSender.test.ts +3 -1
  200. package/src/react-core/tests/usePassPhraseAuth.test.ts +11 -82
  201. package/src/react-core/tests/useSubscriptionSelector.test.ts +48 -14
  202. package/src/react-native-core/hooks.tsx +2 -2
  203. package/src/react-native-core/media/image.tsx +3 -1
  204. package/src/svelte/jazz.class.svelte.ts +103 -27
  205. package/src/svelte/media/image.svelte +6 -5
  206. package/src/svelte/tests/AccountCoState.svelte.test-d.ts +23 -0
  207. package/src/svelte/tests/CoState.svelte.test-d.ts +20 -0
  208. package/src/svelte/tests/CoState.svelte.test.ts +57 -0
  209. package/src/svelte/tests/TestCoStateWrapper.svelte +23 -0
  210. package/src/tools/coValues/CoValueBase.ts +12 -0
  211. package/src/tools/coValues/account.ts +17 -12
  212. package/src/tools/coValues/coFeed.ts +38 -15
  213. package/src/tools/coValues/coList.ts +17 -12
  214. package/src/tools/coValues/coMap.ts +15 -14
  215. package/src/tools/coValues/coPlainText.ts +6 -3
  216. package/src/tools/coValues/coVector.ts +6 -5
  217. package/src/tools/coValues/deepLoading.ts +147 -86
  218. package/src/tools/coValues/group.ts +3 -2
  219. package/src/tools/coValues/inbox.ts +11 -10
  220. package/src/tools/coValues/interfaces.ts +52 -30
  221. package/src/tools/coValues/request.ts +8 -6
  222. package/src/tools/coValues/schemaUnion.ts +20 -14
  223. package/src/tools/exports.ts +11 -1
  224. package/src/tools/implementation/refs.ts +19 -13
  225. package/src/tools/implementation/schema.ts +5 -4
  226. package/src/tools/implementation/schemaUtils.ts +15 -0
  227. package/src/tools/implementation/zodSchema/runtimeConverters/coValueSchemaTransformation.ts +4 -4
  228. package/src/tools/implementation/zodSchema/schemaTypes/AccountSchema.ts +131 -95
  229. package/src/tools/implementation/zodSchema/schemaTypes/CoDiscriminatedUnionSchema.ts +86 -16
  230. package/src/tools/implementation/zodSchema/schemaTypes/CoFeedSchema.ts +73 -22
  231. package/src/tools/implementation/zodSchema/schemaTypes/CoListSchema.ts +86 -28
  232. package/src/tools/implementation/zodSchema/schemaTypes/CoMapSchema.ts +204 -148
  233. package/src/tools/implementation/zodSchema/schemaTypes/CoOptionalSchema.ts +1 -0
  234. package/src/tools/implementation/zodSchema/schemaTypes/CoRecordSchema.ts +71 -27
  235. package/src/tools/implementation/zodSchema/schemaTypes/CoValueSchema.ts +7 -0
  236. package/src/tools/implementation/zodSchema/schemaTypes/CoVectorSchema.ts +8 -6
  237. package/src/tools/implementation/zodSchema/schemaTypes/FileStreamSchema.ts +4 -1
  238. package/src/tools/implementation/zodSchema/schemaTypes/GroupSchema.ts +4 -1
  239. package/src/tools/implementation/zodSchema/schemaTypes/PlainTextSchema.ts +4 -1
  240. package/src/tools/implementation/zodSchema/schemaTypes/RichTextSchema.ts +4 -1
  241. package/src/tools/implementation/zodSchema/typeConverters/InstanceOfSchema.ts +3 -0
  242. package/src/tools/implementation/zodSchema/typeConverters/{InstanceOfSchemaCoValuesNullable.ts → InstanceOfSchemaCoValuesMaybeLoaded.ts} +47 -39
  243. package/src/tools/implementation/zodSchema/typeConverters/InstanceOrPrimitiveOfSchema.ts +4 -0
  244. package/src/tools/implementation/zodSchema/typeConverters/{InstanceOrPrimitiveOfSchemaCoValuesNullable.ts → InstanceOrPrimitiveOfSchemaCoValuesMaybeLoaded.ts} +7 -3
  245. package/src/tools/implementation/zodSchema/unionUtils.ts +35 -4
  246. package/src/tools/implementation/zodSchema/zodSchema.ts +15 -7
  247. package/src/tools/internal.ts +3 -3
  248. package/src/tools/lib/utils.test.ts +56 -0
  249. package/src/tools/lib/utils.ts +32 -0
  250. package/src/tools/subscribe/CoValueCoreSubscription.ts +13 -8
  251. package/src/tools/subscribe/JazzError.ts +8 -2
  252. package/src/tools/subscribe/SubscriptionScope.ts +57 -57
  253. package/src/tools/subscribe/index.ts +12 -4
  254. package/src/tools/subscribe/types.ts +36 -2
  255. package/src/tools/subscribe/utils.ts +2 -1
  256. package/src/tools/testing.ts +5 -0
  257. package/src/tools/tests/CoValueCoreSubscription.test.ts +10 -4
  258. package/src/tools/tests/ContextManager.test.ts +12 -5
  259. package/src/tools/tests/account.test.ts +22 -12
  260. package/src/tools/tests/coDiscriminatedUnion.test.ts +354 -8
  261. package/src/tools/tests/coFeed.branch.test.ts +48 -32
  262. package/src/tools/tests/coFeed.test-d.ts +17 -10
  263. package/src/tools/tests/coFeed.test.ts +52 -30
  264. package/src/tools/tests/coList.branch.test.ts +21 -21
  265. package/src/tools/tests/coList.test-d.ts +39 -23
  266. package/src/tools/tests/coList.test.ts +51 -25
  267. package/src/tools/tests/coList.unique.test.ts +34 -29
  268. package/src/tools/tests/coMap.branch.test.ts +20 -21
  269. package/src/tools/tests/coMap.record.test-d.ts +28 -26
  270. package/src/tools/tests/coMap.record.test.ts +30 -20
  271. package/src/tools/tests/coMap.test-d.ts +31 -29
  272. package/src/tools/tests/coMap.test.ts +67 -40
  273. package/src/tools/tests/coMap.unique.test.ts +25 -24
  274. package/src/tools/tests/coVector.test.ts +29 -15
  275. package/src/tools/tests/createContext.test.ts +5 -3
  276. package/src/tools/tests/deepLoading.test.ts +369 -176
  277. package/src/tools/tests/exportImport.test.ts +16 -15
  278. package/src/tools/tests/groupsAndAccounts.test.ts +39 -16
  279. package/src/tools/tests/inbox.test.ts +3 -1
  280. package/src/tools/tests/load.test.ts +29 -23
  281. package/src/tools/tests/patterns/quest.test.ts +3 -2
  282. package/src/tools/tests/patterns/requestToJoin.test.ts +17 -17
  283. package/src/tools/tests/request.test.ts +12 -2
  284. package/src/tools/tests/schema.resolved.test.ts +792 -0
  285. package/src/tools/tests/schemaUnion.test.ts +7 -3
  286. package/src/tools/tests/subscribe.test.ts +39 -21
  287. package/src/tools/tests/testing.test.ts +3 -2
  288. package/src/tools/tests/utils.ts +15 -2
  289. package/dist/chunk-OSQ7S47Q.js.map +0 -1
  290. package/dist/media/chunk-K6GCHLQU.js.map +0 -1
  291. package/dist/react-core/tests/useAccountWithSelector.test.d.ts +0 -2
  292. package/dist/react-core/tests/useAccountWithSelector.test.d.ts.map +0 -1
  293. package/dist/react-core/tests/useCoStateWithSelector.test.d.ts +0 -2
  294. package/dist/react-core/tests/useCoStateWithSelector.test.d.ts.map +0 -1
  295. package/dist/tools/implementation/errors.d.ts +0 -2
  296. package/dist/tools/implementation/errors.d.ts.map +0 -1
  297. package/dist/tools/implementation/zodSchema/typeConverters/InstanceOfSchemaCoValuesNullable.d.ts +0 -19
  298. package/dist/tools/implementation/zodSchema/typeConverters/InstanceOfSchemaCoValuesNullable.d.ts.map +0 -1
  299. package/dist/tools/implementation/zodSchema/typeConverters/InstanceOrPrimitiveOfSchemaCoValuesNullable.d.ts +0 -5
  300. package/dist/tools/implementation/zodSchema/typeConverters/InstanceOrPrimitiveOfSchemaCoValuesNullable.d.ts.map +0 -1
  301. package/dist/tools/lib/id.d.ts +0 -2
  302. package/dist/tools/lib/id.d.ts.map +0 -1
  303. package/src/tools/implementation/errors.ts +0 -1
  304. package/src/tools/lib/id.ts +0 -3
@@ -6,6 +6,7 @@ import {
6
6
  RawCoValue,
7
7
  } from "cojson";
8
8
  import type { BranchDefinition } from "./types.js";
9
+ import { CoValueLoadingState } from "./types.js";
9
10
 
10
11
  /**
11
12
  * Manages subscriptions to CoValue cores, handling both direct subscriptions
@@ -21,13 +22,17 @@ export class CoValueCoreSubscription {
21
22
  private branchName?: string;
22
23
  private source: CoValueCore;
23
24
  private localNode: LocalNode;
24
- private listener: (value: RawCoValue | "unavailable") => void;
25
+ private listener: (
26
+ value: RawCoValue | typeof CoValueLoadingState.UNAVAILABLE,
27
+ ) => void;
25
28
  private skipRetry?: boolean;
26
29
 
27
30
  constructor(
28
31
  localNode: LocalNode,
29
32
  id: string,
30
- listener: (value: RawCoValue | "unavailable") => void,
33
+ listener: (
34
+ value: RawCoValue | typeof CoValueLoadingState.UNAVAILABLE,
35
+ ) => void,
31
36
  skipRetry?: boolean,
32
37
  branch?: BranchDefinition,
33
38
  ) {
@@ -115,7 +120,7 @@ export class CoValueCoreSubscription {
115
120
  .then((value) => {
116
121
  if (this.unsubscribed) return;
117
122
 
118
- if (value !== "unavailable") {
123
+ if (value !== CoValueLoadingState.UNAVAILABLE) {
119
124
  // Branch checkout successful, subscribe to it
120
125
  this.subscribe(value);
121
126
  } else {
@@ -126,7 +131,7 @@ export class CoValueCoreSubscription {
126
131
  .catch((error) => {
127
132
  // Handle unexpected errors during branch checkout
128
133
  console.error(error);
129
- this.emit("unavailable");
134
+ this.emit(CoValueLoadingState.UNAVAILABLE);
130
135
  });
131
136
  }
132
137
 
@@ -143,7 +148,7 @@ export class CoValueCoreSubscription {
143
148
 
144
149
  // Source isn't available either, subscribe to state changes and report unavailability
145
150
  this.subscribeToUnavailableSource();
146
- this.emit("unavailable");
151
+ this.emit(CoValueLoadingState.UNAVAILABLE);
147
152
  }
148
153
 
149
154
  /**
@@ -162,13 +167,13 @@ export class CoValueCoreSubscription {
162
167
  } else {
163
168
  // Loading failed, subscribe to state changes and report unavailability
164
169
  this.subscribeToUnavailableSource();
165
- this.emit("unavailable");
170
+ this.emit(CoValueLoadingState.UNAVAILABLE);
166
171
  }
167
172
  })
168
173
  .catch((error) => {
169
174
  // Handle unexpected errors during loading
170
175
  console.error(error);
171
- this.emit("unavailable");
176
+ this.emit(CoValueLoadingState.UNAVAILABLE);
172
177
  });
173
178
  }
174
179
 
@@ -218,7 +223,7 @@ export class CoValueCoreSubscription {
218
223
  });
219
224
  }
220
225
 
221
- emit(value: RawCoValue | "unavailable"): void {
226
+ emit(value: RawCoValue | typeof CoValueLoadingState.UNAVAILABLE): void {
222
227
  if (this.unsubscribed) return;
223
228
  if (!isReadyForEmit(value)) {
224
229
  return;
@@ -1,9 +1,12 @@
1
1
  import type { CoValue, ID } from "../internal.js";
2
+ import { CoValueLoadingState } from "./types.js";
2
3
 
3
4
  export class JazzError {
4
5
  constructor(
5
6
  public id: ID<CoValue> | undefined,
6
- public type: "unavailable" | "unauthorized",
7
+ public type:
8
+ | typeof CoValueLoadingState.UNAVAILABLE
9
+ | typeof CoValueLoadingState.UNAUTHORIZED,
7
10
  public issues: JazzErrorIssue[],
8
11
  ) {}
9
12
 
@@ -41,7 +44,10 @@ export class JazzError {
41
44
  }
42
45
  }
43
46
  export type JazzErrorIssue = {
44
- code: "unavailable" | "unauthorized" | "validationError";
47
+ code:
48
+ | typeof CoValueLoadingState.UNAVAILABLE
49
+ | typeof CoValueLoadingState.UNAUTHORIZED
50
+ | "validationError";
45
51
  message: string;
46
52
  params: Record<string, any>;
47
53
  path: string[];
@@ -5,6 +5,7 @@ import {
5
5
  CoMap,
6
6
  type CoValue,
7
7
  type ID,
8
+ MaybeLoaded,
8
9
  type RefEncoded,
9
10
  type RefsToResolve,
10
11
  TypeSym,
@@ -14,7 +15,12 @@ import {
14
15
  import { applyCoValueMigrations } from "../lib/migration.js";
15
16
  import { CoValueCoreSubscription } from "./CoValueCoreSubscription.js";
16
17
  import { JazzError, type JazzErrorIssue } from "./JazzError.js";
17
- import type { BranchDefinition, SubscriptionValue, Unloaded } from "./types.js";
18
+ import type {
19
+ BranchDefinition,
20
+ SubscriptionValue,
21
+ SubscriptionValueLoading,
22
+ } from "./types.js";
23
+ import { CoValueLoadingState, NotLoadedCoValueState } from "./types.js";
18
24
  import { createCoValue, myRoleForRawValue } from "./utils.js";
19
25
 
20
26
  export class SubscriptionScope<D extends CoValue> {
@@ -31,7 +37,7 @@ export class SubscriptionScope<D extends CoValue> {
31
37
  * Autoloaded child ids that are unloaded
32
38
  */
33
39
  pendingAutoloadedChildren: Set<string> = new Set();
34
- value: SubscriptionValue<D, any> | Unloaded;
40
+ value: SubscriptionValue<D, any> | SubscriptionValueLoading;
35
41
  childErrors: Map<string, JazzError> = new Map();
36
42
  validationErrors: Map<string, JazzError> = new Map();
37
43
  errorFromChildren: JazzError | undefined;
@@ -43,6 +49,7 @@ export class SubscriptionScope<D extends CoValue> {
43
49
  autoloadedKeys = new Set<string>();
44
50
  skipInvalidKeys = new Set<string>();
45
51
  totalValidTransactions = 0;
52
+ version = 0;
46
53
  migrated = false;
47
54
  migrating = false;
48
55
  closed = false;
@@ -59,16 +66,19 @@ export class SubscriptionScope<D extends CoValue> {
59
66
  public unstable_branch?: BranchDefinition,
60
67
  ) {
61
68
  this.resolve = resolve;
62
- this.value = { type: "unloaded", id };
69
+ this.value = { type: CoValueLoadingState.LOADING, id };
63
70
 
64
- let lastUpdate: RawCoValue | "unavailable" | undefined;
71
+ let lastUpdate:
72
+ | RawCoValue
73
+ | typeof CoValueLoadingState.UNAVAILABLE
74
+ | undefined;
65
75
  this.subscription = new CoValueCoreSubscription(
66
76
  node,
67
77
  id,
68
78
  (value) => {
69
79
  lastUpdate = value;
70
80
 
71
- if (skipRetry && value === "unavailable") {
81
+ if (skipRetry && value === CoValueLoadingState.UNAVAILABLE) {
72
82
  this.handleUpdate(value);
73
83
  return;
74
84
  }
@@ -79,7 +89,7 @@ export class SubscriptionScope<D extends CoValue> {
79
89
  // - Run the migration only once
80
90
  // - Skip all the updates until the migration is done
81
91
  // - Trigger handleUpdate only with the final value
82
- if (!this.migrated && value !== "unavailable") {
92
+ if (!this.migrated && value !== CoValueLoadingState.UNAVAILABLE) {
83
93
  if (this.migrating) {
84
94
  return;
85
95
  }
@@ -107,13 +117,13 @@ export class SubscriptionScope<D extends CoValue> {
107
117
  this.dirty = true;
108
118
  }
109
119
 
110
- handleUpdate(update: RawCoValue | "unavailable") {
111
- if (update === "unavailable") {
112
- if (this.value.type === "unloaded") {
120
+ handleUpdate(update: RawCoValue | typeof CoValueLoadingState.UNAVAILABLE) {
121
+ if (update === CoValueLoadingState.UNAVAILABLE) {
122
+ if (this.value.type === CoValueLoadingState.LOADING) {
113
123
  this.updateValue(
114
- new JazzError(this.id, "unavailable", [
124
+ new JazzError(this.id, CoValueLoadingState.UNAVAILABLE, [
115
125
  {
116
- code: "unavailable",
126
+ code: CoValueLoadingState.UNAVAILABLE,
117
127
  message: "The value is unavailable",
118
128
  params: {
119
129
  id: this.id,
@@ -135,11 +145,11 @@ export class SubscriptionScope<D extends CoValue> {
135
145
  myRoleForRawValue(update) !== undefined;
136
146
 
137
147
  if (!hasAccess) {
138
- if (this.value.type !== "unauthorized") {
148
+ if (this.value.type !== CoValueLoadingState.UNAUTHORIZED) {
139
149
  this.updateValue(
140
- new JazzError(this.id, "unauthorized", [
150
+ new JazzError(this.id, CoValueLoadingState.UNAUTHORIZED, [
141
151
  {
142
- code: "unauthorized",
152
+ code: CoValueLoadingState.UNAUTHORIZED,
143
153
  message: `The current user (${this.node.getCurrentAgent().id}) is not authorized to access this value`,
144
154
  params: {
145
155
  id: this.id,
@@ -157,15 +167,13 @@ export class SubscriptionScope<D extends CoValue> {
157
167
  // after loading all the children, not one per children
158
168
  this.silenceUpdates = true;
159
169
 
160
- if (this.value.type !== "loaded") {
170
+ if (this.value.type !== CoValueLoadingState.LOADED) {
161
171
  this.updateValue(createCoValue(this.schema, update, this));
162
172
  this.loadChildren();
163
173
  } else {
164
174
  const hasChanged =
165
175
  update.totalValidTransactions !== this.totalValidTransactions ||
166
- // Checking the identity of the raw value makes us cover the cases where the group
167
- // has been updated and the coValues that don't update the totalValidTransactions value (e.g. FileStream)
168
- this.value.value.$jazz.raw !== update;
176
+ update.version !== this.version;
169
177
 
170
178
  if (this.loadChildren()) {
171
179
  this.updateValue(createCoValue(this.schema, update, this));
@@ -175,6 +183,7 @@ export class SubscriptionScope<D extends CoValue> {
175
183
  }
176
184
 
177
185
  this.totalValidTransactions = update.totalValidTransactions;
186
+ this.version = update.version;
178
187
 
179
188
  this.silenceUpdates = false;
180
189
  this.triggerUpdate();
@@ -182,7 +191,7 @@ export class SubscriptionScope<D extends CoValue> {
182
191
 
183
192
  computeChildErrors() {
184
193
  let issues: JazzErrorIssue[] = [];
185
- let errorType: JazzError["type"] = "unavailable";
194
+ let errorType: JazzError["type"] = CoValueLoadingState.UNAVAILABLE;
186
195
 
187
196
  if (this.childErrors.size === 0 && this.validationErrors.size === 0) {
188
197
  return undefined;
@@ -228,10 +237,10 @@ export class SubscriptionScope<D extends CoValue> {
228
237
 
229
238
  handleChildUpdate = (
230
239
  id: string,
231
- value: SubscriptionValue<any, any> | Unloaded,
240
+ value: SubscriptionValue<any, any> | SubscriptionValueLoading,
232
241
  key?: string,
233
242
  ) => {
234
- if (value.type === "unloaded") {
243
+ if (value.type === CoValueLoadingState.LOADING) {
235
244
  return;
236
245
  }
237
246
 
@@ -239,7 +248,10 @@ export class SubscriptionScope<D extends CoValue> {
239
248
  this.pendingAutoloadedChildren.delete(id);
240
249
  this.childValues.set(id, value);
241
250
 
242
- if (value.type === "unavailable" || value.type === "unauthorized") {
251
+ if (
252
+ value.type === CoValueLoadingState.UNAVAILABLE ||
253
+ value.type === CoValueLoadingState.UNAUTHORIZED
254
+ ) {
243
255
  this.childErrors.set(id, value.prependPath(key ?? id));
244
256
 
245
257
  this.errorFromChildren = this.computeChildErrors();
@@ -250,7 +262,7 @@ export class SubscriptionScope<D extends CoValue> {
250
262
  }
251
263
 
252
264
  if (this.shouldSendUpdates()) {
253
- if (this.value.type === "loaded") {
265
+ if (this.value.type === CoValueLoadingState.LOADED) {
254
266
  // On child updates, we re-create the value instance to make the updates
255
267
  // seamless-immutable and so be compatible with React and the React compiler
256
268
  this.updateValue(
@@ -263,37 +275,37 @@ export class SubscriptionScope<D extends CoValue> {
263
275
  };
264
276
 
265
277
  shouldSendUpdates() {
266
- if (this.value.type === "unloaded") return false;
278
+ if (this.value.type === CoValueLoadingState.LOADING) return false;
267
279
 
268
280
  // If the value is in error, we send the update regardless of the children statuses
269
- if (this.value.type !== "loaded") return true;
281
+ if (this.value.type !== CoValueLoadingState.LOADED) return true;
270
282
 
271
283
  return this.pendingLoadedChildren.size === 0;
272
284
  }
273
285
 
274
- getCurrentValue() {
286
+ getCurrentValue(): D | NotLoadedCoValueState {
275
287
  if (
276
- this.value.type === "unauthorized" ||
277
- this.value.type === "unavailable"
288
+ this.value.type === CoValueLoadingState.UNAUTHORIZED ||
289
+ this.value.type === CoValueLoadingState.UNAVAILABLE
278
290
  ) {
279
291
  console.error(this.value.toString());
280
- return null;
292
+ return this.value.type;
281
293
  }
282
294
 
283
295
  if (!this.shouldSendUpdates()) {
284
- return undefined;
296
+ return CoValueLoadingState.LOADING;
285
297
  }
286
298
 
287
299
  if (this.errorFromChildren) {
288
300
  console.error(this.errorFromChildren.toString());
289
- return null;
301
+ return this.errorFromChildren.type;
290
302
  }
291
303
 
292
- if (this.value.type === "loaded") {
304
+ if (this.value.type === CoValueLoadingState.LOADED) {
293
305
  return this.value.value;
294
306
  }
295
307
 
296
- return undefined;
308
+ return CoValueLoadingState.LOADING;
297
309
  }
298
310
 
299
311
  triggerUpdate() {
@@ -307,7 +319,7 @@ export class SubscriptionScope<D extends CoValue> {
307
319
 
308
320
  if (error) {
309
321
  this.subscribers.forEach((listener) => listener(error));
310
- } else if (value.type !== "unloaded") {
322
+ } else if (value.type !== CoValueLoadingState.LOADING) {
311
323
  this.subscribers.forEach((listener) => listener(value));
312
324
  }
313
325
 
@@ -333,16 +345,15 @@ export class SubscriptionScope<D extends CoValue> {
333
345
  this.resolve = {};
334
346
  }
335
347
 
336
- if (!this.resolve.$each && !(key in this.resolve)) {
337
- const resolve = this.resolve as Record<string, any>;
338
-
348
+ const resolve: Record<string, any> = this.resolve;
349
+ if (!resolve.$each && !(key in resolve)) {
339
350
  // Adding the key to the resolve object to resolve the key when calling loadChildren
340
351
  resolve[key] = true;
341
352
  // Track the keys that are autoloaded to flag any id on that key as autoloaded
342
353
  this.autoloadedKeys.add(key);
343
354
  }
344
355
 
345
- if (this.value.type !== "loaded") {
356
+ if (this.value.type !== CoValueLoadingState.LOADED) {
346
357
  return;
347
358
  }
348
359
 
@@ -386,7 +397,7 @@ export class SubscriptionScope<D extends CoValue> {
386
397
  throw new Error("Cannot pull a non-closed subscription scope");
387
398
  }
388
399
 
389
- if (this.value.type === "loaded") {
400
+ if (this.value.type === CoValueLoadingState.LOADED) {
390
401
  return;
391
402
  }
392
403
 
@@ -398,9 +409,9 @@ export class SubscriptionScope<D extends CoValue> {
398
409
  const value = this.getCurrentValue();
399
410
 
400
411
  // If the value is available, trigger the listener
401
- if (value) {
412
+ if (typeof value !== "string") {
402
413
  listener({
403
- type: "loaded",
414
+ type: CoValueLoadingState.LOADED,
404
415
  value,
405
416
  id: this.id,
406
417
  });
@@ -461,7 +472,7 @@ export class SubscriptionScope<D extends CoValue> {
461
472
  loadChildren() {
462
473
  const { resolve } = this;
463
474
 
464
- if (this.value.type !== "loaded") {
475
+ if (this.value.type !== CoValueLoadingState.LOADED) {
465
476
  return false;
466
477
  }
467
478
 
@@ -536,7 +547,7 @@ export class SubscriptionScope<D extends CoValue> {
536
547
  } else if (!descriptor.optional) {
537
548
  this.validationErrors.set(
538
549
  key,
539
- new JazzError(undefined, "unavailable", [
550
+ new JazzError(undefined, CoValueLoadingState.UNAVAILABLE, [
540
551
  {
541
552
  code: "validationError",
542
553
  message: `The ref on position ${key} requested on ${stream.constructor.name} is missing`,
@@ -583,17 +594,6 @@ export class SubscriptionScope<D extends CoValue> {
583
594
  const descriptor = map.$jazz.getDescriptor(key);
584
595
 
585
596
  if (!descriptor) {
586
- this.childErrors.set(
587
- key,
588
- new JazzError(undefined, "unavailable", [
589
- {
590
- code: "validationError",
591
- message: `The ref ${key} requested on ${map.constructor.name} is not defined in the schema`,
592
- params: {},
593
- path: [key],
594
- },
595
- ]),
596
- );
597
597
  return undefined;
598
598
  }
599
599
 
@@ -606,7 +606,7 @@ export class SubscriptionScope<D extends CoValue> {
606
606
  } else if (!descriptor.optional) {
607
607
  this.validationErrors.set(
608
608
  key,
609
- new JazzError(undefined, "unavailable", [
609
+ new JazzError(undefined, CoValueLoadingState.UNAVAILABLE, [
610
610
  {
611
611
  code: "validationError",
612
612
  message: `The ref ${key} requested on ${map.constructor.name} is missing`,
@@ -645,7 +645,7 @@ export class SubscriptionScope<D extends CoValue> {
645
645
  } else if (!descriptor.optional) {
646
646
  this.validationErrors.set(
647
647
  key,
648
- new JazzError(undefined, "unavailable", [
648
+ new JazzError(undefined, CoValueLoadingState.UNAVAILABLE, [
649
649
  {
650
650
  code: "validationError",
651
651
  message: `The ref on position ${key} requested on ${list.constructor.name} is missing`,
@@ -674,7 +674,7 @@ export class SubscriptionScope<D extends CoValue> {
674
674
  this.autoloaded.add(id);
675
675
  }
676
676
 
677
- const skipInvalid = typeof query === "object" && query.$onError === null;
677
+ const skipInvalid = typeof query === "object" && query.$onError === "catch";
678
678
 
679
679
  if (skipInvalid) {
680
680
  if (key) {
@@ -1,5 +1,7 @@
1
1
  import type { CoValue, CoValueClass, RefEncoded } from "../internal.js";
2
+ import { createUnloadedCoValue } from "../internal.js";
2
3
  import { SubscriptionScope } from "./SubscriptionScope.js";
4
+ import { CoValueLoadingState } from "./types.js";
3
5
 
4
6
  export function getSubscriptionScope<D extends CoValue>(value: D) {
5
7
  const subscriptionScope = value.$jazz._subscriptionScope;
@@ -56,10 +58,13 @@ export function accessChildByKey<D extends CoValue>(
56
58
 
57
59
  const value = subscriptionScope.childValues.get(childId);
58
60
 
59
- if (value?.type === "loaded") {
61
+ if (value?.type === CoValueLoadingState.LOADED) {
60
62
  return value.value;
61
63
  } else {
62
- return null;
64
+ return createUnloadedCoValue(
65
+ childId,
66
+ value?.type ?? CoValueLoadingState.LOADING,
67
+ );
63
68
  }
64
69
  }
65
70
 
@@ -82,9 +87,12 @@ export function accessChildById<D extends CoValue>(
82
87
 
83
88
  const value = subscriptionScope.childValues.get(childId);
84
89
 
85
- if (value?.type === "loaded") {
90
+ if (value?.type === CoValueLoadingState.LOADED) {
86
91
  return value.value;
87
92
  } else {
88
- return null;
93
+ return createUnloadedCoValue(
94
+ childId,
95
+ value?.type ?? CoValueLoadingState.LOADING,
96
+ );
89
97
  }
90
98
  }
@@ -7,9 +7,43 @@ import type {
7
7
  } from "../internal.js";
8
8
  import type { JazzError } from "./JazzError.js";
9
9
 
10
+ export const CoValueLoadingState = {
11
+ /**
12
+ * The coValue is loaded.
13
+ */
14
+ LOADED: "loaded",
15
+ /**
16
+ * The coValue is being loaded.
17
+ */
18
+ LOADING: "loading",
19
+ /**
20
+ * The coValue was loaded but the account is not authorized to access it.
21
+ */
22
+ UNAUTHORIZED: "unauthorized",
23
+ /**
24
+ * Tried to load the coValue but failed.
25
+ */
26
+ UNAVAILABLE: "unavailable",
27
+ } as const;
28
+
29
+ export type CoValueLoadingState =
30
+ (typeof CoValueLoadingState)[keyof typeof CoValueLoadingState];
31
+
32
+ export type NotLoadedCoValueState =
33
+ | typeof CoValueLoadingState.LOADING
34
+ | typeof CoValueLoadingState.UNAUTHORIZED
35
+ | typeof CoValueLoadingState.UNAVAILABLE;
36
+
10
37
  export type SubscriptionValue<D extends CoValue, R extends RefsToResolve<D>> =
11
- | { type: "loaded"; value: Resolved<D, R>; id: string }
38
+ | {
39
+ type: typeof CoValueLoadingState.LOADED;
40
+ value: Resolved<D, R>;
41
+ id: string;
42
+ }
12
43
  | JazzError;
13
- export type Unloaded = { type: "unloaded"; id: string };
44
+ export type SubscriptionValueLoading = {
45
+ type: typeof CoValueLoadingState.LOADING;
46
+ id: string;
47
+ };
14
48
 
15
49
  export type BranchDefinition = { name: string; owner?: Group | Account | null };
@@ -8,6 +8,7 @@ import {
8
8
  } from "../internal.js";
9
9
  import { coValuesCache } from "../lib/cache.js";
10
10
  import { SubscriptionScope } from "./SubscriptionScope.js";
11
+ import { CoValueLoadingState } from "./types.js";
11
12
 
12
13
  export function myRoleForRawValue(raw: RawCoValue): Role | undefined {
13
14
  const rawOwner = raw.group;
@@ -36,7 +37,7 @@ export function createCoValue<D extends CoValue>(
36
37
  });
37
38
 
38
39
  return {
39
- type: "loaded" as const,
40
+ type: CoValueLoadingState.LOADED,
40
41
  value: freshValueInstance,
41
42
  id: subscriptionScope.id,
42
43
  };
@@ -16,9 +16,14 @@ import {
16
16
  coValueClassFromCoValueClassOrSchema,
17
17
  createAnonymousJazzContext,
18
18
  createJazzContext,
19
+ CoValue,
20
+ LoadedAndRequired,
21
+ MaybeLoaded,
19
22
  randomSessionProvider,
20
23
  } from "./internal.js";
21
24
 
25
+ export { assertLoaded } from "./lib/utils.js";
26
+
22
27
  const syncServer: { current: LocalNode | null; asyncPeers: boolean } = {
23
28
  current: null,
24
29
  asyncPeers: false,
@@ -1,5 +1,11 @@
1
1
  import { assert, beforeEach, describe, expect, test, vi } from "vitest";
2
- import { Group, co, exportCoValue, z } from "../exports.js";
2
+ import {
3
+ CoValueLoadingState,
4
+ Group,
5
+ co,
6
+ exportCoValue,
7
+ z,
8
+ } from "../exports.js";
3
9
  import { CoValueCoreSubscription } from "../subscribe/CoValueCoreSubscription.js";
4
10
  import {
5
11
  createJazzTestAccount,
@@ -462,7 +468,7 @@ describe("CoValueCoreSubscription", async () => {
462
468
  await waitFor(() => expect(listener).toHaveBeenCalled());
463
469
 
464
470
  // Should report unavailable when loading fails
465
- expect(lastResult).toBe("unavailable");
471
+ expect(lastResult).toBe(CoValueLoadingState.UNAVAILABLE);
466
472
 
467
473
  subscription.unsubscribe();
468
474
  });
@@ -493,7 +499,7 @@ describe("CoValueCoreSubscription", async () => {
493
499
  await waitFor(() => expect(listener).toHaveBeenCalled());
494
500
 
495
501
  // Should report unavailable when loading fails
496
- expect(lastResult).toBe("unavailable");
502
+ expect(lastResult).toBe(CoValueLoadingState.UNAVAILABLE);
497
503
 
498
504
  subscription.unsubscribe();
499
505
  });
@@ -542,7 +548,7 @@ describe("CoValueCoreSubscription", async () => {
542
548
  await waitFor(() => expect(listener).toHaveBeenCalled());
543
549
 
544
550
  // Should report unavailable when loading fails
545
- expect(lastResult).toBe("unavailable");
551
+ expect(lastResult).toBe(CoValueLoadingState.UNAVAILABLE);
546
552
 
547
553
  subscription.unsubscribe();
548
554
  });
@@ -1,6 +1,6 @@
1
1
  import { StorageAPI } from "cojson";
2
2
  import { WasmCrypto } from "cojson/crypto/WasmCrypto";
3
- import { beforeEach, describe, expect, test, vi } from "vitest";
3
+ import { assert, beforeEach, describe, expect, test, vi } from "vitest";
4
4
  import {
5
5
  Account,
6
6
  AccountClass,
@@ -28,6 +28,7 @@ import {
28
28
  coValueClassFromCoValueClassOrSchema,
29
29
  } from "../internal";
30
30
  import {
31
+ assertLoaded,
31
32
  createJazzTestAccount,
32
33
  getPeerConnectedToTestSyncServer,
33
34
  setupJazzTestSync,
@@ -101,7 +102,8 @@ describe("ContextManager", () => {
101
102
 
102
103
  const context = getCurrentValue();
103
104
 
104
- expect(context.me.profile?.name).toBe("Anonymous user");
105
+ assertLoaded(context.me.profile);
106
+ expect(context.me.profile.name).toBe("Anonymous user");
105
107
  expect(context.node).toBeDefined();
106
108
  expect(manager.getCurrentValue()).toBeDefined();
107
109
  });
@@ -113,7 +115,8 @@ describe("ContextManager", () => {
113
115
 
114
116
  const context = getCurrentValue();
115
117
 
116
- expect(context.me.profile?.name).toBe("Test User");
118
+ assertLoaded(context.me.profile);
119
+ expect(context.me.profile.name).toBe("Test User");
117
120
  expect(context.node).toBeDefined();
118
121
  expect(manager.getCurrentValue()).toBeDefined();
119
122
  });
@@ -489,7 +492,10 @@ describe("ContextManager", () => {
489
492
  },
490
493
  });
491
494
 
492
- expect(me.root.transferredRoot?.value).toBe("Hello");
495
+ const transferredRoot = me.root.transferredRoot;
496
+ assert(transferredRoot);
497
+ assertLoaded(transferredRoot);
498
+ expect(transferredRoot.value).toBe("Hello");
493
499
  });
494
500
 
495
501
  test("handles registration of new account", async () => {
@@ -501,7 +507,8 @@ describe("ContextManager", () => {
501
507
 
502
508
  expect(accountId).toBeDefined();
503
509
  const context = getCurrentValue();
504
- expect(context.me.profile?.name).toBe("Test User");
510
+ assertLoaded(context.me.profile);
511
+ expect(context.me.profile.name).toBe("Test User");
505
512
  expect(context.me.$jazz.id).toBe(accountId);
506
513
  });
507
514