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
@@ -17,7 +17,9 @@ import {
17
17
  TypeSym,
18
18
  activeAccountContext,
19
19
  coValueClassFromCoValueClassOrSchema,
20
+ CoValueLoadingState,
20
21
  exportCoValue,
22
+ MaybeLoaded,
21
23
  } from "../internal.js";
22
24
  import {
23
25
  createJazzTestAccount,
@@ -26,7 +28,7 @@ import {
26
28
  runWithoutActiveAccount,
27
29
  setupJazzTestSync,
28
30
  } from "../testing.js";
29
- import { setupTwoNodes, waitFor } from "./utils.js";
31
+ import { assertLoaded, setupTwoNodes, waitFor } from "./utils.js";
30
32
 
31
33
  const Crypto = await WasmCrypto.create();
32
34
 
@@ -501,7 +503,7 @@ describe("CoMap", async () => {
501
503
  });
502
504
 
503
505
  expect(loadedPersonA).not.toBeNull();
504
- assert(loadedPersonA);
506
+ assertLoaded(loadedPersonA);
505
507
 
506
508
  const personB = Person.create({
507
509
  name: "Jane",
@@ -848,9 +850,11 @@ describe("CoMap", async () => {
848
850
  loadAs: clientAccount,
849
851
  });
850
852
 
851
- assert(loadedPerson);
853
+ assertLoaded(loadedPerson);
852
854
  expect(loadedPerson.$jazz.has("name")).toBe(true);
853
- expect(loadedPerson.name).toBeNull();
855
+ expect(loadedPerson.name.$jazz.loadingState).toBe(
856
+ CoValueLoadingState.LOADING,
857
+ );
854
858
  });
855
859
 
856
860
  test("should return true even if the viewer doesn't have access to the referenced CoValue", async () => {
@@ -872,9 +876,11 @@ describe("CoMap", async () => {
872
876
  loadAs: userB,
873
877
  });
874
878
 
875
- assert(loadedPerson);
879
+ assertLoaded(loadedPerson);
876
880
  expect(loadedPerson.$jazz.has("name")).toBe(true);
877
- expect(loadedPerson.name).toBeNull();
881
+ expect(loadedPerson.name.$jazz.loadingState).toBe(
882
+ CoValueLoadingState.LOADING,
883
+ );
878
884
  });
879
885
  });
880
886
 
@@ -939,7 +945,7 @@ describe("CoMap resolution", async () => {
939
945
  },
940
946
  });
941
947
 
942
- assert(loadedPerson);
948
+ assertLoaded(loadedPerson);
943
949
  expect(loadedPerson.dog.name).toEqual("Rex");
944
950
  });
945
951
 
@@ -963,8 +969,9 @@ describe("CoMap resolution", async () => {
963
969
 
964
970
  const loadedPerson = await Person.load(person.$jazz.id);
965
971
 
966
- assert(loadedPerson);
967
- expect(loadedPerson.dog?.name).toEqual("Rex");
972
+ assertLoaded(loadedPerson);
973
+ assertLoaded(loadedPerson.dog);
974
+ expect(loadedPerson.dog.name).toEqual("Rex");
968
975
  });
969
976
 
970
977
  test("loading a remotely available map with deep resolve", async () => {
@@ -1000,7 +1007,7 @@ describe("CoMap resolution", async () => {
1000
1007
  loadAs: userB,
1001
1008
  });
1002
1009
 
1003
- assert(loadedPerson);
1010
+ assertLoaded(loadedPerson);
1004
1011
  expect(loadedPerson.dog.name).toEqual("Rex");
1005
1012
  });
1006
1013
 
@@ -1033,10 +1040,11 @@ describe("CoMap resolution", async () => {
1033
1040
  loadAs: userB,
1034
1041
  });
1035
1042
 
1036
- assert(loadedPerson);
1043
+ assertLoaded(loadedPerson);
1037
1044
 
1038
1045
  await waitFor(() => {
1039
- expect(loadedPerson.dog?.name).toEqual("Rex");
1046
+ assertLoaded(loadedPerson.dog);
1047
+ expect(loadedPerson.dog.name).toEqual("Rex");
1040
1048
  });
1041
1049
  });
1042
1050
 
@@ -1084,7 +1092,9 @@ describe("CoMap resolution", async () => {
1084
1092
  skipRetry: true,
1085
1093
  });
1086
1094
 
1087
- expect(loadedPerson).toBeNull();
1095
+ expect(loadedPerson.$jazz.loadingState).toBe(
1096
+ CoValueLoadingState.UNAVAILABLE,
1097
+ );
1088
1098
  });
1089
1099
 
1090
1100
  test("loading a remotely available map with skipRetry set to false", async () => {
@@ -1145,10 +1155,11 @@ describe("CoMap resolution", async () => {
1145
1155
  const loadedPerson = await promise;
1146
1156
 
1147
1157
  expect(resolved).toBe(true);
1148
- assert(loadedPerson);
1158
+ assertLoaded(loadedPerson);
1149
1159
 
1150
1160
  await waitFor(() => {
1151
- expect(loadedPerson.dog?.name).toEqual("Rex");
1161
+ assertLoaded(loadedPerson.dog);
1162
+ expect(loadedPerson.dog.name).toEqual("Rex");
1152
1163
  });
1153
1164
  });
1154
1165
 
@@ -1205,13 +1216,13 @@ describe("CoMap resolution", async () => {
1205
1216
  loadAs: userB,
1206
1217
  });
1207
1218
 
1208
- assert(loadedPerson);
1219
+ assertLoaded(loadedPerson);
1209
1220
 
1210
1221
  expect(loadedPerson.$jazz.refs.dog.id).toBe(person.dog.$jazz.id);
1211
1222
 
1212
1223
  const dog = await loadedPerson.$jazz.refs.dog.load();
1213
1224
 
1214
- assert(dog);
1225
+ assertLoaded(dog);
1215
1226
 
1216
1227
  expect(dog.name).toEqual("Rex");
1217
1228
  });
@@ -1293,13 +1304,17 @@ describe("CoMap resolution", async () => {
1293
1304
 
1294
1305
  expect(spy).toHaveBeenCalledTimes(1);
1295
1306
 
1296
- expect(updates[0]?.dog?.name).toEqual("Rex");
1307
+ assert(updates[0]);
1308
+ assertLoaded(updates[0].dog);
1309
+ expect(updates[0].dog.name).toEqual("Rex");
1297
1310
 
1298
- person.dog!.$jazz.set("name", "Fido");
1311
+ person.dog.$jazz.set("name", "Fido");
1299
1312
 
1300
1313
  await waitFor(() => expect(spy).toHaveBeenCalledTimes(2));
1301
1314
 
1302
- expect(updates[1]?.dog?.name).toEqual("Fido");
1315
+ assert(updates[1]);
1316
+ assertLoaded(updates[1].dog);
1317
+ expect(updates[1].dog.name).toEqual("Fido");
1303
1318
 
1304
1319
  expect(spy).toHaveBeenCalledTimes(2);
1305
1320
  });
@@ -1338,15 +1353,19 @@ describe("CoMap resolution", async () => {
1338
1353
  expect(spy).toHaveBeenCalled();
1339
1354
  expect(spy).toHaveBeenCalledTimes(1);
1340
1355
 
1341
- expect(updates[0]?.dog?.name).toEqual("Rex");
1356
+ assert(updates[0]);
1357
+ assertLoaded(updates[0].dog);
1358
+ expect(updates[0].dog.name).toEqual("Rex");
1342
1359
 
1343
1360
  expect(spy).toHaveBeenCalledTimes(1);
1344
1361
 
1345
- person.dog!.$jazz.set("name", "Fido");
1362
+ person.dog.$jazz.set("name", "Fido");
1346
1363
 
1347
1364
  expect(spy).toHaveBeenCalledTimes(2);
1348
1365
 
1349
- expect(updates[1]?.dog?.name).toEqual("Fido");
1366
+ assert(updates[1]);
1367
+ assertLoaded(updates[1].dog);
1368
+ expect(updates[1].dog.name).toEqual("Fido");
1350
1369
 
1351
1370
  expect(spy).toHaveBeenCalledTimes(2);
1352
1371
  });
@@ -1452,14 +1471,18 @@ describe("CoMap resolution", async () => {
1452
1471
  expect(spy).toHaveBeenCalledTimes(1);
1453
1472
 
1454
1473
  await waitFor(() => {
1455
- expect(updates[0]?.dog?.name).toEqual("Rex");
1474
+ assert(updates[0]);
1475
+ assertLoaded(updates[0].dog);
1476
+ expect(updates[0].dog.name).toEqual("Rex");
1456
1477
  });
1457
1478
 
1458
- person.dog!.$jazz.set("name", "Fido");
1479
+ person.dog.$jazz.set("name", "Fido");
1459
1480
 
1460
1481
  await waitFor(() => expect(spy).toHaveBeenCalledTimes(3));
1461
1482
 
1462
- expect(updates[1]?.dog?.name).toEqual("Fido");
1483
+ assert(updates[1]);
1484
+ assertLoaded(updates[1].dog);
1485
+ expect(updates[1].dog.name).toEqual("Fido");
1463
1486
 
1464
1487
  expect(spy).toHaveBeenCalledTimes(3);
1465
1488
  });
@@ -1833,7 +1856,7 @@ describe("CoMap Typescript validation", async () => {
1833
1856
 
1834
1857
  const loadedMap = await serverNode.load(map.$jazz.raw.id);
1835
1858
 
1836
- expect(loadedMap).not.toBe("unavailable");
1859
+ expect(loadedMap).not.toBe(CoValueLoadingState.UNAVAILABLE);
1837
1860
  });
1838
1861
 
1839
1862
  test("complex discriminated union", () => {
@@ -2022,9 +2045,10 @@ describe("CoMap migration", () => {
2022
2045
 
2023
2046
  const loadedPerson = await Person.load(person.$jazz.id);
2024
2047
 
2025
- expect(loadedPerson?.name).toEqual("Bob");
2026
- expect(loadedPerson?.age).toEqual(20);
2027
- expect(loadedPerson?.version).toEqual(2);
2048
+ assertLoaded(loadedPerson);
2049
+ expect(loadedPerson.name).toEqual("Bob");
2050
+ expect(loadedPerson.age).toEqual(20);
2051
+ expect(loadedPerson.version).toEqual(2);
2028
2052
  });
2029
2053
 
2030
2054
  test("should handle group updates", async () => {
@@ -2051,8 +2075,9 @@ describe("CoMap migration", () => {
2051
2075
 
2052
2076
  const loadedPerson = await Person.load(person.$jazz.id);
2053
2077
 
2054
- expect(loadedPerson?.name).toEqual("Bob");
2055
- expect(loadedPerson?.version).toEqual(2);
2078
+ assertLoaded(loadedPerson);
2079
+ expect(loadedPerson.name).toEqual("Bob");
2080
+ expect(loadedPerson.version).toEqual(2);
2056
2081
 
2057
2082
  const anotherAccount = await createJazzTestAccount();
2058
2083
 
@@ -2060,7 +2085,8 @@ describe("CoMap migration", () => {
2060
2085
  loadAs: anotherAccount,
2061
2086
  });
2062
2087
 
2063
- expect(loadedPersonFromAnotherAccount?.name).toEqual("Bob");
2088
+ assertLoaded(loadedPersonFromAnotherAccount);
2089
+ expect(loadedPersonFromAnotherAccount.name).toEqual("Bob");
2064
2090
  });
2065
2091
 
2066
2092
  test("should throw an error if a migration is async", async () => {
@@ -2146,11 +2172,12 @@ describe("CoMap migration", () => {
2146
2172
  });
2147
2173
 
2148
2174
  // Migration should run on both the person and their friend
2149
- expect(loaded?.name).toEqual("Bob");
2150
- expect(loaded?.age).toEqual(20);
2151
- expect(loaded?.version).toEqual(2);
2152
- expect(loaded?.friend?.name).toEqual("Charlie");
2153
- expect(loaded?.friend?.version).toEqual(2);
2175
+ assertLoaded(loaded);
2176
+ expect(loaded.name).toEqual("Bob");
2177
+ expect(loaded.age).toEqual(20);
2178
+ expect(loaded.version).toEqual(2);
2179
+ expect(loaded.friend?.name).toEqual("Charlie");
2180
+ expect(loaded.friend?.version).toEqual(2);
2154
2181
  });
2155
2182
 
2156
2183
  test("should wait for the full streaming before running the migration", async () => {
@@ -2527,7 +2554,7 @@ describe("Updating a nested reference", () => {
2527
2554
  },
2528
2555
  });
2529
2556
 
2530
- assert(loadedGame);
2557
+ assertLoaded(loadedGame);
2531
2558
 
2532
2559
  // Create a play selection
2533
2560
  const playSelection = PlaySelection.create({ value: "rock", group }, group);
@@ -2595,7 +2622,7 @@ describe("Updating a nested reference", () => {
2595
2622
  },
2596
2623
  });
2597
2624
 
2598
- assert(loadedGame);
2625
+ assertLoaded(loadedGame);
2599
2626
 
2600
2627
  // Create a play selection
2601
2628
  const playSelection = PlaySelection.create({ value: "scissors" });
@@ -1,11 +1,13 @@
1
1
  import { cojsonInternals } from "cojson";
2
2
  import { assert, beforeEach, describe, expect, test } from "vitest";
3
3
  import {
4
+ assertLoaded,
4
5
  setupJazzTestSync,
5
6
  createJazzTestAccount,
6
7
  runWithoutActiveAccount,
7
8
  } from "../testing";
8
9
  import {
10
+ CoValueLoadingState,
9
11
  Group,
10
12
  co,
11
13
  activeAccountContext,
@@ -104,7 +106,8 @@ describe("Creating and finding unique CoMaps", async () => {
104
106
  },
105
107
  owner: group,
106
108
  });
107
- expect(alice?.name).toEqual("Alice");
109
+ assertLoaded(alice);
110
+ expect(alice.name).toEqual("Alice");
108
111
  });
109
112
 
110
113
  test("manual upserting pattern", async () => {
@@ -128,7 +131,7 @@ describe("Creating and finding unique CoMaps", async () => {
128
131
  { identifier: sourceData.identifier },
129
132
  workspace.$jazz.id,
130
133
  );
131
- if (!activeEvent) {
134
+ if (!activeEvent.$isLoaded) {
132
135
  activeEvent = Event.create(
133
136
  {
134
137
  title: sourceData.title,
@@ -215,7 +218,7 @@ describe("Creating and finding unique CoMaps", async () => {
215
218
  const workspaceOnAlice = await Group.load(workspace.$jazz.id, {
216
219
  loadAs: alice,
217
220
  });
218
- assert(workspaceOnAlice);
221
+ assertLoaded(workspaceOnAlice);
219
222
 
220
223
  const eventOnAlice = await Event.upsertUnique({
221
224
  value: {
@@ -226,7 +229,10 @@ describe("Creating and finding unique CoMaps", async () => {
226
229
  unique: sourceData.identifier,
227
230
  owner: workspaceOnAlice,
228
231
  });
229
- expect(eventOnAlice).toBeNull();
232
+ expect(eventOnAlice.$isLoaded).toBe(false);
233
+ expect(eventOnAlice.$jazz.loadingState).toBe(
234
+ CoValueLoadingState.UNAUTHORIZED,
235
+ );
230
236
  });
231
237
 
232
238
  test("upserting without an active account", async () => {
@@ -264,7 +270,7 @@ describe("Creating and finding unique CoMaps", async () => {
264
270
  external_id: sourceData._id,
265
271
  });
266
272
 
267
- assert(activeEvent);
273
+ assertLoaded(activeEvent);
268
274
 
269
275
  expect(activeEvent.$jazz.owner).toEqual(account);
270
276
  });
@@ -350,8 +356,7 @@ describe("Creating and finding unique CoMaps", async () => {
350
356
  },
351
357
  },
352
358
  });
353
- assert(myOrg);
354
- expect(myOrg).not.toBeNull();
359
+ assertLoaded(myOrg);
355
360
  expect(myOrg.name).toEqual("My organisation");
356
361
  expect(myOrg.projects.length).toBe(1);
357
362
  expect(myOrg.projects[0]).toMatchObject({
@@ -375,8 +380,7 @@ describe("Creating and finding unique CoMaps", async () => {
375
380
  unique: { unique: "First project" },
376
381
  owner: workspace,
377
382
  });
378
- assert(initialProject);
379
- expect(initialProject).not.toBeNull();
383
+ assertLoaded(initialProject);
380
384
  expect(initialProject.name).toEqual("My project");
381
385
 
382
386
  const myOrg = await Organisation.upsertUnique({
@@ -392,8 +396,7 @@ describe("Creating and finding unique CoMaps", async () => {
392
396
  },
393
397
  },
394
398
  });
395
- assert(myOrg);
396
- expect(myOrg).not.toBeNull();
399
+ assertLoaded(myOrg);
397
400
  expect(myOrg.name).toEqual("My organisation");
398
401
  expect(myOrg.projects.length).toBe(1);
399
402
  expect(myOrg.projects.at(0)?.name).toEqual("My project");
@@ -406,8 +409,7 @@ describe("Creating and finding unique CoMaps", async () => {
406
409
  owner: workspace,
407
410
  });
408
411
 
409
- assert(updatedProject);
410
- expect(updatedProject).not.toBeNull();
412
+ assertLoaded(updatedProject);
411
413
  expect(updatedProject).toEqual(initialProject);
412
414
  expect(updatedProject.name).toEqual("My updated project");
413
415
  expect(myOrg.projects.length).toBe(1);
@@ -432,8 +434,7 @@ describe("Creating and finding unique CoMaps", async () => {
432
434
  unique: { unique: "First project" },
433
435
  owner: publicAccess,
434
436
  });
435
- assert(initialProject);
436
- expect(initialProject).not.toBeNull();
437
+ assertLoaded(initialProject);
437
438
  expect(initialProject.name).toEqual("My project");
438
439
 
439
440
  const fullProjectList = co
@@ -449,12 +450,12 @@ describe("Creating and finding unique CoMaps", async () => {
449
450
  .load(fullProjectList.$jazz.id, {
450
451
  loadAs: account,
451
452
  });
452
- assert(shallowProjectList);
453
+ assertLoaded(shallowProjectList);
453
454
 
454
455
  const publicAccessAsNewAccount = await Group.load(publicAccess.$jazz.id, {
455
456
  loadAs: account,
456
457
  });
457
- assert(publicAccessAsNewAccount);
458
+ assertLoaded(publicAccessAsNewAccount);
458
459
 
459
460
  const updatedOrg = await Organisation.upsertUnique({
460
461
  value: {
@@ -470,7 +471,7 @@ describe("Creating and finding unique CoMaps", async () => {
470
471
  },
471
472
  });
472
473
 
473
- assert(updatedOrg);
474
+ assertLoaded(updatedOrg);
474
475
 
475
476
  expect(updatedOrg.projects.$jazz.id).toEqual(fullProjectList.$jazz.id);
476
477
  expect(updatedOrg.projects.length).toBe(1);
@@ -495,7 +496,7 @@ describe("Creating and finding unique CoMaps", async () => {
495
496
  unique: { unique: "First project" },
496
497
  owner: publicAccess,
497
498
  });
498
- assert(initialProject);
499
+ assertLoaded(initialProject);
499
500
 
500
501
  const myOrg = await Organisation.upsertUnique({
501
502
  value: {
@@ -510,7 +511,7 @@ describe("Creating and finding unique CoMaps", async () => {
510
511
  },
511
512
  },
512
513
  });
513
- assert(myOrg);
514
+ assertLoaded(myOrg);
514
515
 
515
516
  const fullProjectList = co
516
517
  .list(Project)
@@ -525,12 +526,12 @@ describe("Creating and finding unique CoMaps", async () => {
525
526
  .load(fullProjectList.$jazz.id, {
526
527
  loadAs: account,
527
528
  });
528
- assert(shallowProjectList);
529
+ assertLoaded(shallowProjectList);
529
530
 
530
531
  const publicAccessAsNewAccount = await Group.load(publicAccess.$jazz.id, {
531
532
  loadAs: account,
532
533
  });
533
- assert(publicAccessAsNewAccount);
534
+ assertLoaded(publicAccessAsNewAccount);
534
535
 
535
536
  const updatedOrg = await Organisation.upsertUnique({
536
537
  value: {
@@ -546,7 +547,7 @@ describe("Creating and finding unique CoMaps", async () => {
546
547
  },
547
548
  });
548
549
 
549
- assert(updatedOrg);
550
+ assertLoaded(updatedOrg);
550
551
 
551
552
  expect(updatedOrg.projects.$jazz.id).toEqual(fullProjectList.$jazz.id);
552
553
  expect(updatedOrg.projects.length).toBe(1);
@@ -572,7 +573,7 @@ describe("Creating and finding unique CoMaps", async () => {
572
573
  await Promise.all(promises);
573
574
 
574
575
  const result = await Project.loadUnique("concurrent", owner.$jazz.id);
575
- assert(result);
576
+ assertLoaded(result);
576
577
 
577
578
  expect(result.name).toBe(`Project 2`);
578
579
  });
@@ -8,7 +8,7 @@ import {
8
8
  co,
9
9
  } from "../internal.js";
10
10
  import { createJazzTestAccount, setupJazzTestSync } from "../testing.js";
11
- import { setupTwoNodes, waitFor } from "./utils.js";
11
+ import { assertLoaded, setupTwoNodes, waitFor } from "./utils.js";
12
12
 
13
13
  let me: ControlledAccount;
14
14
 
@@ -508,7 +508,7 @@ describe("CoVector loading & availability", async () => {
508
508
  loadAs: alice,
509
509
  });
510
510
 
511
- assert(loadedVector);
511
+ assertLoaded(loadedVector);
512
512
  expect(loadedVector.length).toBe(3);
513
513
  expect(loadedVector[0]).toBe(9);
514
514
  expect(loadedVector[1]).toBe(8);
@@ -541,7 +541,7 @@ describe("CoVector loading & availability", async () => {
541
541
  loadAs: alice,
542
542
  });
543
543
 
544
- assert(loadedVector);
544
+ assertLoaded(loadedVector);
545
545
  expect(loadedVector).toBeInstanceOf(CoVector);
546
546
  expect(loadedVector.length).toBe(elementsForKb(kb));
547
547
  expect(loadedVector.every((item) => item === 0.5)).toBe(true);
@@ -696,14 +696,16 @@ describe("CoVector in subscription", async () => {
696
696
 
697
697
  expect(updatesCallback).toHaveBeenCalledTimes(1);
698
698
 
699
- expect(updates[0]?.[0]?.content).toEqual(
700
- "Call GET to retrieve document",
701
- );
702
- expect(updates[0]?.[1]?.content).toEqual(
699
+ assert(updates[0]?.[0]);
700
+ assertLoaded(updates[0][0]);
701
+ assert(updates[0]?.[1]);
702
+ assertLoaded(updates[0][1]);
703
+ expect(updates[0][0].content).toEqual("Call GET to retrieve document");
704
+ expect(updates[0][1].content).toEqual(
703
705
  "Call POST to create a new document",
704
706
  );
705
- expect(updates[0]?.[0]?.embedding?.toString()).toBe("1,2,3");
706
- expect(updates[0]?.[1]?.embedding?.toString()).toBe("4,5,6");
707
+ expect(updates[0][0].embedding?.toString()).toBe("1,2,3");
708
+ expect(updates[0][1].embedding?.toString()).toBe("4,5,6");
707
709
 
708
710
  // Update the second document's embedding
709
711
  docs[1]!.$jazz.set(
@@ -713,8 +715,12 @@ describe("CoVector in subscription", async () => {
713
715
 
714
716
  await waitFor(() => expect(updatesCallback).toHaveBeenCalledTimes(2));
715
717
 
716
- expect(updates[1]?.[0]?.embedding?.toString()).toBe("1,2,3");
717
- expect(updates[1]?.[1]?.embedding?.toString()).toBe("7,8,9");
718
+ assert(updates[1]?.[0]);
719
+ assertLoaded(updates[1][0]);
720
+ assert(updates[1]?.[1]);
721
+ assertLoaded(updates[1][1]);
722
+ expect(updates[1][0].embedding?.toString()).toBe("1,2,3");
723
+ expect(updates[1][1].embedding?.toString()).toBe("7,8,9");
718
724
 
719
725
  expect(updatesCallback).toHaveBeenCalledTimes(2);
720
726
  });
@@ -838,8 +844,12 @@ describe("CoVector in subscription", async () => {
838
844
  await waitFor(() => expect(updatesCallback).toHaveBeenCalled());
839
845
 
840
846
  await waitFor(() => {
841
- expect(updates[0]?.[0]?.embedding?.toString()).toBe("1,2,3");
842
- expect(updates[0]?.[1]?.embedding?.toString()).toBe("4,5,6");
847
+ assert(updates[0]?.[0]);
848
+ assertLoaded(updates[0][0]);
849
+ assert(updates[0]?.[1]);
850
+ assertLoaded(updates[0][1]);
851
+ expect(updates[0][0].embedding?.toString()).toBe("1,2,3");
852
+ expect(updates[0][1].embedding?.toString()).toBe("4,5,6");
843
853
  });
844
854
 
845
855
  // Update the second document's embedding
@@ -850,8 +860,12 @@ describe("CoVector in subscription", async () => {
850
860
 
851
861
  await waitFor(() => expect(updatesCallback).toHaveBeenCalledTimes(7));
852
862
 
853
- expect(updates[1]?.[0]?.embedding?.toString()).toBe("1,2,3");
854
- expect(updates[1]?.[1]?.embedding?.toString()).toBe("7,8,9");
863
+ assert(updates[1]?.[0]);
864
+ assertLoaded(updates[1][0]);
865
+ assert(updates[1]?.[1]);
866
+ assertLoaded(updates[1][1]);
867
+ expect(updates[1][0].embedding?.toString()).toBe("1,2,3");
868
+ expect(updates[1][1].embedding?.toString()).toBe("7,8,9");
855
869
 
856
870
  expect(updatesCallback).toHaveBeenCalledTimes(7);
857
871
  });
@@ -23,7 +23,7 @@ import {
23
23
  getPeerConnectedToTestSyncServer,
24
24
  setupJazzTestSync,
25
25
  } from "../testing";
26
- import { loadCoValueOrFail } from "./utils";
26
+ import { assertLoaded, loadCoValueOrFail } from "./utils";
27
27
  const Crypto = await WasmCrypto.create();
28
28
 
29
29
  KvStoreContext.getInstance().initialize(new InMemoryKVStore());
@@ -190,7 +190,8 @@ describe("createContext methods", () => {
190
190
  });
191
191
 
192
192
  expect(context.account).toBeDefined();
193
- expect(context.account.profile?.name).toBe("New User");
193
+ assertLoaded(context.account.profile);
194
+ expect(context.account.profile.name).toBe("New User");
194
195
  });
195
196
 
196
197
  test("uses initial agent secret when provided", async () => {
@@ -322,7 +323,8 @@ describe("createContext methods", () => {
322
323
  sessionProvider: randomSessionProvider,
323
324
  });
324
325
 
325
- expect(context.account.profile?.name).toBe("Custom User");
326
+ assertLoaded(context.account.profile);
327
+ expect(context.account.profile.name).toBe("Custom User");
326
328
  });
327
329
 
328
330
  test("uses initial agent secret when provided", async () => {