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,7 +6,8 @@ import {
6
6
  setActiveAccount,
7
7
  setupJazzTestSync,
8
8
  } from "../testing.js";
9
- import { setupTwoNodes } from "./utils.js";
9
+ import { assertLoaded, setupTwoNodes } from "./utils.js";
10
+ import { CoValueLoadingState } from "../internal.js";
10
11
 
11
12
  beforeEach(async () => {
12
13
  await setupJazzTestSync();
@@ -32,7 +33,7 @@ test("waitForAllCoValuesSync should resolve when all the values are synced", asy
32
33
 
33
34
  for (const map of maps) {
34
35
  const loadedMap = await serverNode.load(map.$jazz.raw.id);
35
- expect(loadedMap).not.toBe("unavailable");
36
+ expect(loadedMap).not.toBe(CoValueLoadingState.UNAVAILABLE);
36
37
  }
37
38
  });
38
39
 
@@ -46,7 +47,7 @@ test("waitForSync should resolve when the value is uploaded", async () => {
46
47
 
47
48
  const loadedAccount = await serverNode.load(clientAccount.$jazz.raw.id);
48
49
 
49
- expect(loadedAccount).not.toBe("unavailable");
50
+ expect(loadedAccount).not.toBe(CoValueLoadingState.UNAVAILABLE);
50
51
  });
51
52
 
52
53
  test("isMe gets updated correctly when switching accounts", async () => {
@@ -86,11 +87,13 @@ test("Me gets updated correctly when creating a new account as active", async ()
86
87
 
87
88
  test("accounts should sync correctly", async () => {
88
89
  const account = await createJazzTestAccount({ isCurrentActiveAccount: true });
89
- account.profile!.$jazz.set("name", "test 1");
90
+ assertLoaded(account.profile);
91
+ account.profile.$jazz.set("name", "test 1");
90
92
  const otherAccount = await createJazzTestAccount({
91
93
  isCurrentActiveAccount: true,
92
94
  });
93
- otherAccount.profile!.$jazz.set("name", "test 2");
95
+ assertLoaded(otherAccount.profile);
96
+ otherAccount.profile.$jazz.set("name", "test 2");
94
97
 
95
98
  await linkAccounts(account, otherAccount);
96
99
 
@@ -98,8 +101,14 @@ test("accounts should sync correctly", async () => {
98
101
 
99
102
  group.addMember(otherAccount, "writer");
100
103
 
101
- expect(group.members[0]?.account.profile!.name).toBe("test 1");
102
- expect(group.members[1]?.account.profile!.name).toBe("test 2");
104
+ const accountMember = group.members[0]?.account;
105
+ assert(accountMember);
106
+ assertLoaded(accountMember.profile);
107
+ expect(accountMember.profile.name).toBe("test 1");
108
+ const otherAccountMember = group.members[1]?.account;
109
+ assert(otherAccountMember);
110
+ assertLoaded(otherAccountMember.profile);
111
+ expect(otherAccountMember.profile.name).toBe("test 2");
103
112
  });
104
113
 
105
114
  test("loading accounts should work", async () => {
@@ -118,7 +127,7 @@ test("loading accounts should work", async () => {
118
127
  },
119
128
  });
120
129
 
121
- assert(loadedAccount);
130
+ assertLoaded(loadedAccount);
122
131
  expect(loadedAccount.profile.name).toBe("test 1");
123
132
  });
124
133
 
@@ -133,8 +142,9 @@ test("loading raw accounts should work", async () => {
133
142
  loadAs: account,
134
143
  });
135
144
 
136
- assert(loadedAccount);
137
- expect(loadedAccount.profile!.name).toBe("test 1");
145
+ assertLoaded(loadedAccount);
146
+ assertLoaded(loadedAccount.profile);
147
+ expect(loadedAccount.profile.name).toBe("test 1");
138
148
  });
139
149
 
140
150
  describe("co.profile() schema", () => {
@@ -221,7 +231,7 @@ test("cannot update account profile properties directly", async () => {
221
231
  },
222
232
  });
223
233
 
224
- assert(account.profile);
234
+ assertLoaded(account.profile);
225
235
 
226
236
  // @ts-expect-error - cannot update profile properties directly
227
237
  expect(() => (account.profile.name = "test 2")).toThrow(
@@ -294,7 +304,7 @@ describe("root and profile", () => {
294
304
  },
295
305
  });
296
306
 
297
- assert(bobAccountLoadedFromAlice);
307
+ assertLoaded(bobAccountLoadedFromAlice);
298
308
 
299
309
  expect(bobAccountLoadedFromAlice.profile.name).toBe("Bob");
300
310
  expect(bobAccountLoadedFromAlice.root.name).toBe("Bob");
@@ -1,13 +1,16 @@
1
1
  import { beforeEach, describe, expect, test, vi } from "vitest";
2
- import { CoPlainText, Loaded, co, z } from "../exports.js";
2
+ import { CoPlainText, Group, Loaded, co, loadCoValue, z } from "../exports.js";
3
3
  import { createJazzTestAccount, setupJazzTestSync } from "../testing.js";
4
- import { waitFor } from "./utils.js";
4
+ import { assertLoaded, waitFor } from "./utils.js";
5
+ import type { Account } from "jazz-tools";
5
6
 
6
7
  describe("co.discriminatedUnion", () => {
8
+ let account: Account;
9
+
7
10
  beforeEach(async () => {
8
11
  await setupJazzTestSync();
9
12
 
10
- await createJazzTestAccount({
13
+ account = await createJazzTestAccount({
11
14
  isCurrentActiveAccount: true,
12
15
  creationProps: { name: "Hermes Puggington" },
13
16
  });
@@ -266,7 +269,7 @@ describe("co.discriminatedUnion", () => {
266
269
  expect(referenceItem.children[0]?.type).toEqual("note");
267
270
  });
268
271
 
269
- test("load CoValue instances using the DiscriminatedUnion schema", async () => {
272
+ test("load CoValue instances using the DiscriminatedUnion schema without resolve", async () => {
270
273
  const Dog = co.map({
271
274
  type: z.literal("dog"),
272
275
  });
@@ -277,10 +280,44 @@ describe("co.discriminatedUnion", () => {
277
280
 
278
281
  const dog = Dog.create({ type: "dog" });
279
282
  const loadedPet = await Pet.load(dog.$jazz.id);
283
+ assertLoaded(loadedPet);
284
+ expect(loadedPet.type).toEqual("dog");
285
+ });
286
+
287
+ test("load CoValue instances using the DiscriminatedUnion schema with deep resolve", async () => {
288
+ const Person = co.map({
289
+ name: z.string(),
290
+ });
291
+ const Dog = co.map({
292
+ type: z.literal("dog"),
293
+ owner: Person,
294
+ });
295
+ const Cat = co.map({
296
+ type: z.literal("cat"),
297
+ owner: Person,
298
+ });
299
+ const Pet = co.discriminatedUnion("type", [Dog, Cat]);
300
+
301
+ const dog = Dog.create({
302
+ type: "dog",
303
+ owner: Person.create({
304
+ name: "John Doe",
305
+ }),
306
+ });
307
+
308
+ const loadedPet = await Pet.load(dog.$jazz.id, {
309
+ resolve: {
310
+ owner: true,
311
+ },
312
+ });
313
+
314
+ assertLoaded(loadedPet);
315
+
280
316
  expect(loadedPet?.type).toEqual("dog");
317
+ expect(loadedPet?.owner.name).toEqual("John Doe");
281
318
  });
282
319
 
283
- test("subscribe to CoValue instances using the DiscriminatedUnion schema", async () => {
320
+ test("subscribe to CoValue instances using the DiscriminatedUnion schema without resolve", async () => {
284
321
  const Person = co.map({
285
322
  name: z.string(),
286
323
  });
@@ -318,7 +355,41 @@ describe("co.discriminatedUnion", () => {
318
355
  expect(updates[0]?.name).toEqual("Rex");
319
356
  });
320
357
 
321
- test("should work when one of the options has a dicriminated union field", async () => {
358
+ test("subscribe to CoValue instances using the DiscriminatedUnion schema with deep resolve", async () => {
359
+ const Person = co.map({
360
+ name: z.string(),
361
+ });
362
+ const Dog = co.map({
363
+ type: z.literal("dog"),
364
+ owner: Person,
365
+ });
366
+ const Cat = co.map({
367
+ type: z.literal("cat"),
368
+ owner: Person,
369
+ });
370
+ const Pet = co.discriminatedUnion("type", [Dog, Cat]);
371
+
372
+ const dog = Dog.create({
373
+ type: "dog",
374
+ owner: Person.create({
375
+ name: "John Doe",
376
+ }),
377
+ });
378
+
379
+ const spy = vi.fn();
380
+ Pet.subscribe(dog.$jazz.id, { resolve: { owner: true } }, (pet) => {
381
+ expect(pet.owner.name).toEqual("John Doe");
382
+ spy(pet);
383
+ });
384
+
385
+ expect(spy).not.toHaveBeenCalled();
386
+
387
+ await waitFor(() => expect(spy).toHaveBeenCalled());
388
+
389
+ expect(spy).toHaveBeenCalledTimes(1);
390
+ });
391
+
392
+ test("should work when one of the options has a discriminated union field", async () => {
322
393
  const Collie = co.map({
323
394
  type: z.literal("collie"),
324
395
  });
@@ -343,7 +414,9 @@ describe("co.discriminatedUnion", () => {
343
414
 
344
415
  const loadedAnimal = await Animal.load(animal.$jazz.id);
345
416
 
346
- expect(loadedAnimal?.breed?.type).toEqual("collie");
417
+ assertLoaded(loadedAnimal);
418
+ assertLoaded(loadedAnimal.breed);
419
+ expect(loadedAnimal.breed.type).toEqual("collie");
347
420
  });
348
421
 
349
422
  test("should work with a nested co.discriminatedUnion", async () => {
@@ -365,6 +438,279 @@ describe("co.discriminatedUnion", () => {
365
438
 
366
439
  const loadedAnimal = await Animal.load(animal.$jazz.id);
367
440
 
368
- expect(loadedAnimal?.type).toEqual("collie");
441
+ assertLoaded(loadedAnimal);
442
+ expect(loadedAnimal.type).toEqual("collie");
443
+ });
444
+
445
+ test("load co.discriminatedUnion with deep resolve using loadCoValue", async () => {
446
+ const Person = co.map({
447
+ name: z.string(),
448
+ });
449
+ const Dog = co.map({
450
+ type: z.literal("dog"),
451
+ owner: Person,
452
+ });
453
+ const Cat = co.map({
454
+ type: z.literal("cat"),
455
+ });
456
+
457
+ const Pet = co.discriminatedUnion("type", [Dog, Cat]);
458
+
459
+ const dog = Dog.create({
460
+ type: "dog",
461
+ owner: Person.create({ name: "John Doe" }),
462
+ });
463
+
464
+ const loadedPet = await loadCoValue(Pet.getCoValueClass(), dog.$jazz.id, {
465
+ resolve: { owner: true },
466
+ loadAs: account,
467
+ });
468
+
469
+ assertLoaded(loadedPet);
470
+
471
+ if (loadedPet.type === "dog") {
472
+ expect(loadedPet.owner.name).toEqual("John Doe");
473
+ }
474
+ });
475
+
476
+ test("load co.discriminatedUnion with non-matching deep resolve", async () => {
477
+ const Person = co.map({
478
+ name: z.string(),
479
+ });
480
+ const Dog = co.map({
481
+ type: z.literal("dog"),
482
+ owner: Person,
483
+ });
484
+ const Cat = co.map({
485
+ type: z.literal("cat"),
486
+ });
487
+ const Pet = co.discriminatedUnion("type", [Dog, Cat]);
488
+
489
+ const cat = Cat.create({
490
+ type: "cat",
491
+ });
492
+
493
+ const loadedPet = await Pet.load(cat.$jazz.id, {
494
+ resolve: { owner: true },
495
+ });
496
+
497
+ assertLoaded(loadedPet);
498
+
499
+ expect(loadedPet.type).toEqual("cat");
500
+ // @ts-expect-error - no owner on Cat
501
+ expect(loadedPet.owner).toBeUndefined();
502
+ });
503
+
504
+ test("load co.discriminatedUnion list with different schemas on deep resolved fields", async () => {
505
+ // Schema without nested CoValues
506
+ const Bird = co.map({
507
+ type: z.literal("bird"),
508
+ species: z.string(),
509
+ });
510
+ const Person = co.map({
511
+ name: z.string(),
512
+ bird: Bird,
513
+ });
514
+ // Schema with a nested CoValue
515
+ const Dog = co.map({
516
+ type: z.literal("dog"),
517
+ friend: Person,
518
+ });
519
+ // Same attribute (friend) with a completely different schema (list)
520
+ const Cat = co.map({
521
+ type: z.literal("cat"),
522
+ get friend() {
523
+ return co.list(Cat);
524
+ },
525
+ });
526
+ const Pet = co.discriminatedUnion("type", [Dog, Cat, Bird]);
527
+ const Pets = co.list(Pet);
528
+
529
+ const bird = Bird.create({
530
+ type: "bird",
531
+ species: "Parrot",
532
+ });
533
+
534
+ const dog = Dog.create({
535
+ type: "dog",
536
+ friend: Person.create({ name: "John Doe", bird }),
537
+ });
538
+
539
+ const cat = Cat.create({
540
+ type: "cat",
541
+ friend: [{ type: "cat", friend: [{ type: "cat", friend: [] }] }],
542
+ });
543
+
544
+ const pets = Pets.create([dog, cat, bird]);
545
+
546
+ const loadedPets = await Pets.load(pets.$jazz.id, {
547
+ resolve: { $each: { friend: { $each: { friend: true }, bird: true } } },
548
+ });
549
+
550
+ assertLoaded(loadedPets);
551
+
552
+ for (const pet of loadedPets) {
553
+ if (pet.type === "dog") {
554
+ expect(pet.friend.name).toEqual("John Doe");
555
+ expect(pet.friend.bird.species).toEqual("Parrot");
556
+ // @ts-expect-error - no species on Person
557
+ expect(pet.friend.species).toBeUndefined();
558
+ } else if (pet.type === "cat") {
559
+ expect(pet.friend[0]?.type).toEqual("cat");
560
+ // @ts-expect-error - no name on Bird
561
+ expect(pet.friend.name).toBeUndefined();
562
+ }
563
+ }
564
+ });
565
+
566
+ test("ensureLoaded on co.discriminatedUnion members", async () => {
567
+ const Person = co.map({
568
+ name: z.string(),
569
+ });
570
+ const Dog = co.map({
571
+ type: z.literal("dog"),
572
+ owner: Person,
573
+ });
574
+ const Cat = co.map({
575
+ type: z.literal("cat"),
576
+ friend: Person,
577
+ });
578
+ const Pet = co.discriminatedUnion("type", [Dog, Cat]);
579
+
580
+ const dog = Dog.create({
581
+ type: "dog",
582
+ owner: Person.create({ name: "John Doe" }),
583
+ });
584
+
585
+ const cat = Cat.create({
586
+ type: "cat",
587
+ friend: Person.create({ name: "Jane Doe" }),
588
+ });
589
+
590
+ const pet = await Pet.load(dog.$jazz.id);
591
+
592
+ assertLoaded(pet);
593
+
594
+ // @ts-expect-error - can't use ensureLoaded before narrowing
595
+ pet.$jazz.ensureLoaded({
596
+ resolve: { owner: true },
597
+ });
598
+
599
+ if (pet.type === "dog") {
600
+ const loadedPet = await pet.$jazz.ensureLoaded({
601
+ resolve: { owner: true },
602
+ });
603
+
604
+ expect(loadedPet.owner.name).toEqual("John Doe");
605
+ }
606
+ });
607
+
608
+ describe("Deep loading mutually exclusive nested CoMaps", async () => {
609
+ const Breed = co.map({
610
+ type: z.enum(["collie", "border-collie"]),
611
+ });
612
+ const Dog = co.map({
613
+ type: z.literal("dog"),
614
+ breed: Breed,
615
+ });
616
+
617
+ const Ocean = co.map({
618
+ name: z.enum(["atlantic", "pacific"]),
619
+ });
620
+ const Shark = co.map({
621
+ type: z.literal("shark"),
622
+ ocean: Ocean,
623
+ });
624
+
625
+ const Animal = co.discriminatedUnion("type", [Dog, Shark]);
626
+ const Species = co.list(Animal);
627
+
628
+ let species: Loaded<typeof Species>;
629
+
630
+ beforeEach(async () => {
631
+ const group = Group.create();
632
+ group.makePublic();
633
+
634
+ species = Species.create(
635
+ [
636
+ {
637
+ type: "dog",
638
+ breed: {
639
+ type: "collie",
640
+ },
641
+ },
642
+ {
643
+ type: "shark",
644
+ ocean: {
645
+ name: "atlantic",
646
+ },
647
+ },
648
+ ],
649
+ group,
650
+ );
651
+ });
652
+
653
+ test("co.discriminatedUnion should load with deeply resolved mutually exclusive nested CoMaps", async () => {
654
+ const loadedSpecies = await Species.load(species.$jazz.id, {
655
+ resolve: {
656
+ $each: {
657
+ breed: true,
658
+ ocean: true,
659
+ },
660
+ },
661
+ });
662
+
663
+ assertLoaded(loadedSpecies);
664
+
665
+ // @ts-expect-error - type needs to be narrowed
666
+ expect(loadedSpecies[0]?.breed.type).toEqual("collie");
667
+ // @ts-expect-error - type needs to be narrowed
668
+ expect(loadedSpecies[1]?.ocean.name).toEqual("atlantic");
669
+
670
+ for (const animal of loadedSpecies) {
671
+ if (animal.type === "dog") {
672
+ expect(animal.breed.type).toBeDefined();
673
+ // @ts-expect-error - no ocean property on Dog
674
+ expect(animal.ocean).toBeUndefined();
675
+ } else if (animal.type === "shark") {
676
+ expect(animal.ocean.name).toBeDefined();
677
+ // @ts-expect-error - no breed property on Shark
678
+ expect(animal.breed).toBeUndefined();
679
+ }
680
+ }
681
+ });
682
+
683
+ test("co.discriminatedUnion should load with deeply resolved nested CoMaps with another account as owner", async () => {
684
+ const alice = await createJazzTestAccount({
685
+ creationProps: { name: "Alice" },
686
+ isCurrentActiveAccount: false,
687
+ });
688
+
689
+ const loadedSpecies = await Species.load(species.$jazz.id, {
690
+ loadAs: alice,
691
+ resolve: {
692
+ $each: {
693
+ breed: true,
694
+ ocean: true,
695
+ },
696
+ },
697
+ });
698
+
699
+ console.log(loadedSpecies.$isLoaded);
700
+
701
+ assertLoaded(loadedSpecies);
702
+
703
+ for (const animal of loadedSpecies) {
704
+ if (animal.type === "dog") {
705
+ expect(animal.breed.type).toBeDefined();
706
+ // @ts-expect-error - no ocean on Dog
707
+ expect(animal.ocean).toBeUndefined();
708
+ } else if (animal.type === "shark") {
709
+ expect(animal.ocean.name).toBeDefined();
710
+ // @ts-expect-error - no breed on Shark
711
+ expect(animal.breed).toBeUndefined();
712
+ }
713
+ }
714
+ });
369
715
  });
370
716
  });