jazz-tools 0.17.14 → 0.18.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (228) hide show
  1. package/.svelte-kit/__package__/jazz.class.svelte.js +1 -1
  2. package/.svelte-kit/__package__/media/image.svelte +3 -9
  3. package/.svelte-kit/__package__/media/image.svelte.d.ts +1 -6
  4. package/.svelte-kit/__package__/media/image.svelte.d.ts.map +1 -1
  5. package/.svelte-kit/__package__/media/image.types.d.ts +7 -0
  6. package/.svelte-kit/__package__/media/image.types.d.ts.map +1 -0
  7. package/.svelte-kit/__package__/media/image.types.js +1 -0
  8. package/.svelte-kit/__package__/tests/media/image.svelte.test.js +31 -31
  9. package/.turbo/turbo-build.log +50 -50
  10. package/CHANGELOG.md +31 -0
  11. package/dist/browser/index.js +2 -2
  12. package/dist/browser/index.js.map +1 -1
  13. package/dist/{chunk-LZOF6WP5.js → chunk-HJ3GTGY7.js} +1320 -1018
  14. package/dist/chunk-HJ3GTGY7.js.map +1 -0
  15. package/dist/index.js +18 -18
  16. package/dist/index.js.map +1 -1
  17. package/dist/inspector/{custom-element-ZSNTCECD.js → custom-element-WCY6D3QJ.js} +3 -3
  18. package/dist/inspector/{custom-element-ZSNTCECD.js.map → custom-element-WCY6D3QJ.js.map} +1 -1
  19. package/dist/inspector/index.js +1 -1
  20. package/dist/inspector/index.js.map +1 -1
  21. package/dist/inspector/register-custom-element.js +1 -1
  22. package/dist/media/{chunk-E5J3WLQW.js → chunk-KR2V6X2N.js} +14 -9
  23. package/dist/media/chunk-KR2V6X2N.js.map +1 -0
  24. package/dist/media/create-image.d.ts +6 -6
  25. package/dist/media/index.browser.d.ts +6 -6
  26. package/dist/media/index.browser.js +1 -1
  27. package/dist/media/index.d.ts +1 -1
  28. package/dist/media/index.js +1 -1
  29. package/dist/media/index.native.d.ts +6 -6
  30. package/dist/media/index.native.js +1 -1
  31. package/dist/media/utils.d.ts.map +1 -1
  32. package/dist/prosemirror/index.js +2 -2
  33. package/dist/prosemirror/index.js.map +1 -1
  34. package/dist/react/index.js +7 -5
  35. package/dist/react/index.js.map +1 -1
  36. package/dist/react-core/hooks.d.ts.map +1 -1
  37. package/dist/react-core/index.js +4658 -23
  38. package/dist/react-core/index.js.map +1 -1
  39. package/dist/react-native-core/index.js +1 -1
  40. package/dist/react-native-core/index.js.map +1 -1
  41. package/dist/svelte/jazz.class.svelte.js +1 -1
  42. package/dist/svelte/media/image.svelte +3 -9
  43. package/dist/svelte/media/image.svelte.d.ts +1 -6
  44. package/dist/svelte/media/image.svelte.d.ts.map +1 -1
  45. package/dist/svelte/media/image.types.d.ts +7 -0
  46. package/dist/svelte/media/image.types.d.ts.map +1 -0
  47. package/dist/svelte/media/image.types.js +1 -0
  48. package/dist/svelte/tests/media/image.svelte.test.js +31 -31
  49. package/dist/testing.js +18 -14
  50. package/dist/testing.js.map +1 -1
  51. package/dist/tools/coValues/CoFieldInit.d.ts +13 -0
  52. package/dist/tools/coValues/CoFieldInit.d.ts.map +1 -0
  53. package/dist/tools/coValues/CoValueBase.d.ts +18 -15
  54. package/dist/tools/coValues/CoValueBase.d.ts.map +1 -1
  55. package/dist/tools/coValues/account.d.ts +100 -46
  56. package/dist/tools/coValues/account.d.ts.map +1 -1
  57. package/dist/tools/coValues/coFeed.d.ts +78 -62
  58. package/dist/tools/coValues/coFeed.d.ts.map +1 -1
  59. package/dist/tools/coValues/coList.d.ts +212 -99
  60. package/dist/tools/coValues/coList.d.ts.map +1 -1
  61. package/dist/tools/coValues/coMap.d.ts +200 -192
  62. package/dist/tools/coValues/coMap.d.ts.map +1 -1
  63. package/dist/tools/coValues/coPlainText.d.ts +30 -22
  64. package/dist/tools/coValues/coPlainText.d.ts.map +1 -1
  65. package/dist/tools/coValues/deepLoading.d.ts +13 -13
  66. package/dist/tools/coValues/deepLoading.d.ts.map +1 -1
  67. package/dist/tools/coValues/extensions/imageDef.d.ts +1 -1
  68. package/dist/tools/coValues/group.d.ts +32 -32
  69. package/dist/tools/coValues/group.d.ts.map +1 -1
  70. package/dist/tools/coValues/inbox.d.ts.map +1 -1
  71. package/dist/tools/coValues/interfaces.d.ts +18 -17
  72. package/dist/tools/coValues/interfaces.d.ts.map +1 -1
  73. package/dist/tools/coValues/profile.d.ts +6 -5
  74. package/dist/tools/coValues/profile.d.ts.map +1 -1
  75. package/dist/tools/coValues/schemaUnion.d.ts +3 -3
  76. package/dist/tools/coValues/schemaUnion.d.ts.map +1 -1
  77. package/dist/tools/exports.d.ts +1 -1
  78. package/dist/tools/exports.d.ts.map +1 -1
  79. package/dist/tools/implementation/anonymousJazzAgent.d.ts +2 -1
  80. package/dist/tools/implementation/anonymousJazzAgent.d.ts.map +1 -1
  81. package/dist/tools/implementation/schema.d.ts +5 -5
  82. package/dist/tools/implementation/schema.d.ts.map +1 -1
  83. package/dist/tools/implementation/symbols.d.ts +2 -0
  84. package/dist/tools/implementation/symbols.d.ts.map +1 -1
  85. package/dist/tools/implementation/zodSchema/schemaTypes/AccountSchema.d.ts +2 -2
  86. package/dist/tools/implementation/zodSchema/schemaTypes/AccountSchema.d.ts.map +1 -1
  87. package/dist/tools/implementation/zodSchema/schemaTypes/CoFeedSchema.d.ts +6 -2
  88. package/dist/tools/implementation/zodSchema/schemaTypes/CoFeedSchema.d.ts.map +1 -1
  89. package/dist/tools/implementation/zodSchema/schemaTypes/CoListSchema.d.ts +8 -3
  90. package/dist/tools/implementation/zodSchema/schemaTypes/CoListSchema.d.ts.map +1 -1
  91. package/dist/tools/implementation/zodSchema/schemaTypes/CoMapSchema.d.ts +12 -7
  92. package/dist/tools/implementation/zodSchema/schemaTypes/CoMapSchema.d.ts.map +1 -1
  93. package/dist/tools/implementation/zodSchema/schemaTypes/CoRecordSchema.d.ts +13 -7
  94. package/dist/tools/implementation/zodSchema/schemaTypes/CoRecordSchema.d.ts.map +1 -1
  95. package/dist/tools/implementation/zodSchema/schemaTypes/FileStreamSchema.d.ts +11 -2
  96. package/dist/tools/implementation/zodSchema/schemaTypes/FileStreamSchema.d.ts.map +1 -1
  97. package/dist/tools/implementation/zodSchema/schemaTypes/PlainTextSchema.d.ts +4 -0
  98. package/dist/tools/implementation/zodSchema/schemaTypes/PlainTextSchema.d.ts.map +1 -1
  99. package/dist/tools/implementation/zodSchema/schemaTypes/RichTextSchema.d.ts +4 -0
  100. package/dist/tools/implementation/zodSchema/schemaTypes/RichTextSchema.d.ts.map +1 -1
  101. package/dist/tools/implementation/zodSchema/typeConverters/{CoFieldInit.d.ts → CoFieldSchemaInit.d.ts} +7 -7
  102. package/dist/tools/implementation/zodSchema/typeConverters/CoFieldSchemaInit.d.ts.map +1 -0
  103. package/dist/tools/implementation/zodSchema/typeConverters/InstanceOfSchema.d.ts +4 -4
  104. package/dist/tools/implementation/zodSchema/typeConverters/InstanceOfSchema.d.ts.map +1 -1
  105. package/dist/tools/implementation/zodSchema/typeConverters/InstanceOfSchemaCoValuesNullable.d.ts +4 -4
  106. package/dist/tools/implementation/zodSchema/typeConverters/InstanceOfSchemaCoValuesNullable.d.ts.map +1 -1
  107. package/dist/tools/implementation/zodSchema/zodCo.d.ts +2 -2
  108. package/dist/tools/implementation/zodSchema/zodCo.d.ts.map +1 -1
  109. package/dist/tools/internal.d.ts +2 -1
  110. package/dist/tools/internal.d.ts.map +1 -1
  111. package/dist/tools/lib/migration.d.ts +1 -1
  112. package/dist/tools/lib/migration.d.ts.map +1 -1
  113. package/dist/tools/subscribe/SubscriptionScope.d.ts.map +1 -1
  114. package/dist/tools/subscribe/index.d.ts +1 -1
  115. package/dist/tools/subscribe/index.d.ts.map +1 -1
  116. package/dist/tools/subscribe/utils.d.ts +2 -2
  117. package/dist/tools/subscribe/utils.d.ts.map +1 -1
  118. package/dist/tools/testing.d.ts.map +1 -1
  119. package/dist/tools/tests/utils.d.ts +2 -6
  120. package/dist/tools/tests/utils.d.ts.map +1 -1
  121. package/dist/worker/index.js +3 -3
  122. package/dist/worker/index.js.map +1 -1
  123. package/package.json +4 -4
  124. package/src/browser/auth/PasskeyAuth.ts +2 -2
  125. package/src/browser/createBrowserContext.ts +2 -2
  126. package/src/browser/tests/PasskeyAuth.test.ts +2 -2
  127. package/src/inspector/custom-element.tsx +2 -2
  128. package/src/inspector/viewer/new-app.tsx +1 -1
  129. package/src/media/create-image.test.ts +7 -7
  130. package/src/media/create-image.ts +5 -3
  131. package/src/media/index.ts +1 -1
  132. package/src/media/utils.test.ts +72 -66
  133. package/src/media/utils.ts +9 -6
  134. package/src/prosemirror/lib/plugin.ts +1 -1
  135. package/src/prosemirror/lib/sync.ts +1 -1
  136. package/src/prosemirror/tests/plugin.test.ts +4 -4
  137. package/src/react/media/image.tsx +2 -2
  138. package/src/react/tests/media/image.test.tsx +52 -32
  139. package/src/react-core/hooks.ts +11 -5
  140. package/src/react-core/tests/useAccount.test.ts +16 -22
  141. package/src/react-core/tests/useCoState.test.ts +19 -19
  142. package/src/react-core/tests/useInboxSender.test.ts +5 -2
  143. package/src/react-core/tests/usePassPhraseAuth.test.ts +6 -6
  144. package/src/react-native-core/media/image.tsx +1 -1
  145. package/src/svelte/jazz.class.svelte.ts +1 -1
  146. package/src/svelte/media/image.svelte +3 -9
  147. package/src/svelte/media/image.types.ts +7 -0
  148. package/src/svelte/tests/media/image.svelte.test.ts +34 -32
  149. package/src/tools/auth/DemoAuth.ts +2 -2
  150. package/src/tools/auth/PassphraseAuth.ts +2 -2
  151. package/src/tools/auth/clerk/index.ts +2 -2
  152. package/src/tools/auth/clerk/tests/JazzClerkAuth.test.ts +1 -1
  153. package/src/tools/coValues/CoFieldInit.ts +20 -0
  154. package/src/tools/coValues/CoValueBase.ts +40 -60
  155. package/src/tools/coValues/account.ts +306 -232
  156. package/src/tools/coValues/coFeed.ts +185 -153
  157. package/src/tools/coValues/coList.ts +507 -334
  158. package/src/tools/coValues/coMap.ts +420 -286
  159. package/src/tools/coValues/coPlainText.ts +94 -110
  160. package/src/tools/coValues/deepLoading.ts +13 -13
  161. package/src/tools/coValues/group.ts +100 -114
  162. package/src/tools/coValues/inbox.ts +16 -14
  163. package/src/tools/coValues/interfaces.ts +49 -31
  164. package/src/tools/coValues/profile.ts +8 -6
  165. package/src/tools/coValues/request.ts +9 -9
  166. package/src/tools/coValues/schemaUnion.ts +11 -5
  167. package/src/tools/exports.ts +1 -1
  168. package/src/tools/implementation/ContextManager.ts +4 -4
  169. package/src/tools/implementation/anonymousJazzAgent.ts +2 -1
  170. package/src/tools/implementation/createContext.ts +1 -1
  171. package/src/tools/implementation/devtoolsFormatters.ts +9 -9
  172. package/src/tools/implementation/invites.ts +2 -2
  173. package/src/tools/implementation/schema.ts +7 -7
  174. package/src/tools/implementation/symbols.ts +3 -0
  175. package/src/tools/implementation/zodSchema/schemaTypes/AccountSchema.ts +2 -2
  176. package/src/tools/implementation/zodSchema/schemaTypes/CoFeedSchema.ts +11 -2
  177. package/src/tools/implementation/zodSchema/schemaTypes/CoListSchema.ts +18 -7
  178. package/src/tools/implementation/zodSchema/schemaTypes/CoMapSchema.ts +17 -7
  179. package/src/tools/implementation/zodSchema/schemaTypes/CoRecordSchema.ts +20 -11
  180. package/src/tools/implementation/zodSchema/schemaTypes/FileStreamSchema.ts +19 -2
  181. package/src/tools/implementation/zodSchema/schemaTypes/PlainTextSchema.ts +6 -0
  182. package/src/tools/implementation/zodSchema/schemaTypes/RichTextSchema.ts +6 -0
  183. package/src/tools/implementation/zodSchema/typeConverters/{CoFieldInit.ts → CoFieldSchemaInit.ts} +11 -11
  184. package/src/tools/implementation/zodSchema/typeConverters/InstanceOfSchema.ts +4 -4
  185. package/src/tools/implementation/zodSchema/typeConverters/InstanceOfSchemaCoValuesNullable.ts +4 -4
  186. package/src/tools/implementation/zodSchema/zodCo.ts +2 -2
  187. package/src/tools/internal.ts +2 -1
  188. package/src/tools/lib/migration.ts +5 -5
  189. package/src/tools/subscribe/SubscriptionScope.ts +32 -24
  190. package/src/tools/subscribe/index.ts +4 -4
  191. package/src/tools/subscribe/utils.ts +11 -11
  192. package/src/tools/testing.ts +17 -13
  193. package/src/tools/tests/ContextManager.test.ts +68 -57
  194. package/src/tools/tests/PassphraseAuth.test.ts +2 -2
  195. package/src/tools/tests/account.test.ts +139 -69
  196. package/src/tools/tests/coDiscriminatedUnion.test-d.ts +12 -6
  197. package/src/tools/tests/coDiscriminatedUnion.test.ts +26 -17
  198. package/src/tools/tests/coFeed.test-d.ts +18 -17
  199. package/src/tools/tests/coFeed.test.ts +108 -97
  200. package/src/tools/tests/coList.test-d.ts +18 -23
  201. package/src/tools/tests/coList.test.ts +350 -165
  202. package/src/tools/tests/coMap.record.test-d.ts +9 -13
  203. package/src/tools/tests/coMap.record.test.ts +37 -23
  204. package/src/tools/tests/coMap.test-d.ts +43 -21
  205. package/src/tools/tests/coMap.test.ts +360 -182
  206. package/src/tools/tests/coOptional.test.ts +28 -13
  207. package/src/tools/tests/coPlainText.test.ts +15 -15
  208. package/src/tools/tests/createContext.test.ts +14 -14
  209. package/src/tools/tests/deepLoading.test.ts +95 -94
  210. package/src/tools/tests/exportImport.test.ts +61 -41
  211. package/src/tools/tests/groupsAndAccounts.test.ts +333 -116
  212. package/src/tools/tests/inbox.test.ts +22 -17
  213. package/src/tools/tests/interfaces.test.ts +12 -11
  214. package/src/tools/tests/invites.test.ts +6 -4
  215. package/src/tools/tests/load.test.ts +20 -18
  216. package/src/tools/tests/patterns/notifications.test.ts +6 -6
  217. package/src/tools/tests/patterns/quest.test.ts +3 -3
  218. package/src/tools/tests/patterns/requestToJoin.test.ts +22 -22
  219. package/src/tools/tests/request.test.ts +38 -39
  220. package/src/tools/tests/schemaUnion.test.ts +64 -10
  221. package/src/tools/tests/subscribe.test.ts +64 -64
  222. package/src/tools/tests/testing.test.ts +5 -9
  223. package/src/tools/tests/utils.ts +3 -3
  224. package/src/tools/tests/zod.test.ts +3 -3
  225. package/src/worker/index.ts +3 -3
  226. package/dist/chunk-LZOF6WP5.js.map +0 -1
  227. package/dist/media/chunk-E5J3WLQW.js.map +0 -1
  228. package/dist/tools/implementation/zodSchema/typeConverters/CoFieldInit.d.ts.map +0 -1
@@ -23,7 +23,7 @@ async function setupAccounts() {
23
23
  const me = await createJazzTestAccount();
24
24
  const worker = await createJazzTestAccount();
25
25
 
26
- const workerPieces = await exportCoValue(Account, worker.id, {
26
+ const workerPieces = await exportCoValue(Account, worker.$jazz.id, {
27
27
  loadAs: worker,
28
28
  });
29
29
 
@@ -42,7 +42,7 @@ describe("experimental_defineRequest", () => {
42
42
 
43
43
  const userRequest = experimental_defineRequest({
44
44
  url: "https://api.example.com/api/user",
45
- workerId: worker.id,
45
+ workerId: worker.$jazz.id,
46
46
  request: {
47
47
  name: z.string(),
48
48
  email: z.string(),
@@ -56,7 +56,7 @@ describe("experimental_defineRequest", () => {
56
56
 
57
57
  let receivedUser: unknown;
58
58
  let receivedMadeBy: unknown;
59
- let requestOwner: Account | Group;
59
+ let requestOwner: Group;
60
60
 
61
61
  server.use(
62
62
  http.post("https://api.example.com/api/user", async ({ request }) => {
@@ -66,8 +66,8 @@ describe("experimental_defineRequest", () => {
66
66
  worker,
67
67
  async (user, madeBy) => {
68
68
  receivedUser = user.toJSON();
69
- requestOwner = user._owner;
70
- receivedMadeBy = madeBy.id;
69
+ requestOwner = user.$jazz.owner;
70
+ receivedMadeBy = madeBy.$jazz.id;
71
71
 
72
72
  // Return a plain object (CoMapInit) instead of a CoMap instance
73
73
  return {
@@ -99,26 +99,27 @@ describe("experimental_defineRequest", () => {
99
99
  "https://example.com/avatars/john@example.com.jpg",
100
100
  );
101
101
 
102
- expect(requestOwner!.members.map((m) => [m.account.id, m.role])).toEqual([
103
- [me.id, "admin"],
104
- [worker.id, "writer"],
102
+ expect(
103
+ requestOwner!.members.map((m) => [m.account.$jazz.id, m.role]),
104
+ ).toEqual([
105
+ [me.$jazz.id, "admin"],
106
+ [worker.$jazz.id, "writer"],
105
107
  ]);
106
108
 
107
109
  expect(
108
- response._owner.members.map((m) => [m.account.id, m.role]),
110
+ response.$jazz.owner.members.map((m) => [m.account.$jazz.id, m.role]),
109
111
  ).toEqual([
110
- [worker.id, "admin"],
111
- [me.id, "reader"],
112
+ [worker.$jazz.id, "admin"],
113
+ [me.$jazz.id, "reader"],
112
114
  ]);
113
115
 
114
116
  // Verify the server received the correct data
115
117
  expect(receivedUser).toMatchObject({
116
- _type: "CoMap",
117
118
  name: "John Doe",
118
119
  email: "john@example.com",
119
120
  age: 30,
120
121
  });
121
- expect(receivedMadeBy).toEqual(me.id);
122
+ expect(receivedMadeBy).toEqual(me.$jazz.id);
122
123
  });
123
124
 
124
125
  it("should push the response content directly to the client", async () => {
@@ -139,7 +140,7 @@ describe("experimental_defineRequest", () => {
139
140
 
140
141
  const userRequest = experimental_defineRequest({
141
142
  url: "https://api.example.com/api/user",
142
- workerId: worker.id,
143
+ workerId: worker.$jazz.id,
143
144
  request: {
144
145
  name: z.string(),
145
146
  email: z.string(),
@@ -248,7 +249,7 @@ describe("experimental_defineRequest", () => {
248
249
 
249
250
  const personRequest = experimental_defineRequest({
250
251
  url: "https://api.example.com/api/person",
251
- workerId: worker.id,
252
+ workerId: worker.$jazz.id,
252
253
  request: {
253
254
  schema: {
254
255
  person: Person,
@@ -269,9 +270,7 @@ describe("experimental_defineRequest", () => {
269
270
  request,
270
271
  worker,
271
272
  async ({ person }, madeBy) => {
272
- person.address.street._owner
273
- .castAs(Group)
274
- .addMember(madeBy, "reader");
273
+ person.address.street.$jazz.owner.addMember(madeBy, "reader");
275
274
 
276
275
  // The request should handle the error gracefully when trying to resolve
277
276
  // child covalues that the worker doesn't have access to
@@ -299,7 +298,7 @@ describe("experimental_defineRequest", () => {
299
298
 
300
299
  const userRequest = experimental_defineRequest({
301
300
  url: "https://api.example.com/api/user",
302
- workerId: worker.id,
301
+ workerId: worker.$jazz.id,
303
302
  request: {
304
303
  name: z.string(),
305
304
  email: z.string(),
@@ -319,7 +318,7 @@ describe("experimental_defineRequest", () => {
319
318
  worker,
320
319
  async (user, madeBy) => {
321
320
  receivedUser = user.toJSON();
322
- receivedMadeBy = madeBy.id;
321
+ receivedMadeBy = madeBy.$jazz.id;
323
322
  },
324
323
  );
325
324
  } catch (error) {
@@ -341,12 +340,11 @@ describe("experimental_defineRequest", () => {
341
340
 
342
341
  // Verify the server received the correct data
343
342
  expect(receivedUser).toMatchObject({
344
- _type: "CoMap",
345
343
  name: "John Doe",
346
344
  email: "john@example.com",
347
345
  age: 30,
348
346
  });
349
- expect(receivedMadeBy).toEqual(me.id);
347
+ expect(receivedMadeBy).toEqual(me.$jazz.id);
350
348
  });
351
349
 
352
350
  it("should accept group as workerId", async () => {
@@ -359,7 +357,7 @@ describe("experimental_defineRequest", () => {
359
357
 
360
358
  const userRequest = experimental_defineRequest({
361
359
  url: "https://api.example.com/api/user",
362
- workerId: workerGroup.id, // Use group ID instead of account ID
360
+ workerId: workerGroup.$jazz.id, // Use group ID instead of account ID
363
361
  request: {
364
362
  name: z.string(),
365
363
  email: z.string(),
@@ -382,7 +380,7 @@ describe("experimental_defineRequest", () => {
382
380
  worker, // The worker account handles the request
383
381
  async (user, madeBy) => {
384
382
  receivedUser = user.toJSON();
385
- receivedMadeBy = madeBy.id;
383
+ receivedMadeBy = madeBy.$jazz.id;
386
384
 
387
385
  return {
388
386
  bio: `Profile for ${user.name}`,
@@ -414,19 +412,20 @@ describe("experimental_defineRequest", () => {
414
412
  );
415
413
 
416
414
  // Verify the response owner structure - should include the worker account
417
- expect(response._owner.members.map((m) => [m.account.id, m.role])).toEqual([
418
- [worker.id, "admin"],
419
- [me.id, "reader"],
415
+ expect(
416
+ response.$jazz.owner.members.map((m) => [m.account.$jazz.id, m.role]),
417
+ ).toEqual([
418
+ [worker.$jazz.id, "admin"],
419
+ [me.$jazz.id, "reader"],
420
420
  ]);
421
421
 
422
422
  // Verify the server received the correct data
423
423
  expect(receivedUser).toMatchObject({
424
- _type: "CoMap",
425
424
  name: "John Doe",
426
425
  email: "john@example.com",
427
426
  age: 30,
428
427
  });
429
- expect(receivedMadeBy).toEqual(me.id);
428
+ expect(receivedMadeBy).toEqual(me.$jazz.id);
430
429
  });
431
430
  });
432
431
 
@@ -437,7 +436,7 @@ describe("JazzRequestError handling", () => {
437
436
 
438
437
  const userRequest = experimental_defineRequest({
439
438
  url: "https://api.example.com/api/user",
440
- workerId: worker.id,
439
+ workerId: worker.$jazz.id,
441
440
  request: {
442
441
  name: z.string(),
443
442
  email: z.string(),
@@ -497,7 +496,7 @@ describe("JazzRequestError handling", () => {
497
496
 
498
497
  const userRequest = experimental_defineRequest({
499
498
  url: "https://api.example.com/api/user",
500
- workerId: worker.id,
499
+ workerId: worker.$jazz.id,
501
500
  request: {
502
501
  name: z.string(),
503
502
  email: z.string(),
@@ -547,7 +546,7 @@ describe("JazzRequestError handling", () => {
547
546
 
548
547
  const userRequest = experimental_defineRequest({
549
548
  url: "https://api.example.com/api/user",
550
- workerId: worker.id,
549
+ workerId: worker.$jazz.id,
551
550
  request: {
552
551
  name: z.string(),
553
552
  email: z.string(),
@@ -595,7 +594,7 @@ describe("JazzRequestError handling", () => {
595
594
 
596
595
  const userRequest = experimental_defineRequest({
597
596
  url: "https://api.example.com/api/user",
598
- workerId: worker.id,
597
+ workerId: worker.$jazz.id,
599
598
  request: {
600
599
  name: z.string(),
601
600
  email: z.string(),
@@ -643,7 +642,7 @@ describe("JazzRequestError handling", () => {
643
642
 
644
643
  const userRequest = experimental_defineRequest({
645
644
  url: "https://api.example.com/api/user",
646
- workerId: worker.id,
645
+ workerId: worker.$jazz.id,
647
646
  request: {
648
647
  name: z.string(),
649
648
  email: z.string(),
@@ -695,7 +694,7 @@ describe("JazzRequestError handling", () => {
695
694
 
696
695
  const userRequest = experimental_defineRequest({
697
696
  url: "https://api.example.com/api/user",
698
- workerId: worker.id,
697
+ workerId: worker.$jazz.id,
699
698
  request: {
700
699
  schema: {
701
700
  user: User,
@@ -751,7 +750,7 @@ describe("JazzRequestError handling", () => {
751
750
 
752
751
  const userRequest = experimental_defineRequest({
753
752
  url: "https://api.example.com/api/user",
754
- workerId: worker.id,
753
+ workerId: worker.$jazz.id,
755
754
  request: {
756
755
  schema: {
757
756
  user: User,
@@ -807,7 +806,7 @@ describe("JazzRequestError handling", () => {
807
806
 
808
807
  const userRequest = experimental_defineRequest({
809
808
  url: "https://api.example.com/api/user",
810
- workerId: worker.id,
809
+ workerId: worker.$jazz.id,
811
810
  request: {
812
811
  name: z.string(),
813
812
  email: z.string(),
@@ -845,7 +844,7 @@ describe("JazzRequestError handling", () => {
845
844
 
846
845
  const userRequest = experimental_defineRequest({
847
846
  url: "https://api.example.com/api/user",
848
- workerId: worker.id,
847
+ workerId: worker.$jazz.id,
849
848
  request: {
850
849
  name: z.string(),
851
850
  email: z.string(),
@@ -877,7 +876,7 @@ describe("JazzRequestError handling", () => {
877
876
 
878
877
  const userRequest = experimental_defineRequest({
879
878
  url: "https://api.example.com/api/user",
880
- workerId: worker.id,
879
+ workerId: worker.$jazz.id,
881
880
  request: {
882
881
  name: z.string(),
883
882
  email: z.string(),
@@ -1,5 +1,5 @@
1
1
  import { WasmCrypto } from "cojson/crypto/WasmCrypto";
2
- import { assert, beforeAll, describe, expect, it } from "vitest";
2
+ import { assert, beforeAll, beforeEach, describe, expect, it } from "vitest";
3
3
  import {
4
4
  Account,
5
5
  CryptoProvider,
@@ -9,11 +9,13 @@ import {
9
9
  subscribeToCoValue,
10
10
  z,
11
11
  } from "../exports.js";
12
+ import { createJazzTestAccount } from "../testing.js";
12
13
 
13
14
  const RedButtonWidget = co.map({
14
15
  type: z.literal("button"),
15
16
  color: z.literal("red"),
16
17
  label: z.string(),
18
+ disabled: z.boolean().optional(),
17
19
  });
18
20
 
19
21
  const BlueButtonWidget = co.map({
@@ -21,6 +23,7 @@ const BlueButtonWidget = co.map({
21
23
  color: z.literal("blue"),
22
24
  label: z.string(),
23
25
  blueness: z.number(),
26
+ disabled: z.boolean().optional(),
24
27
  });
25
28
 
26
29
  const ButtonWidget = co.discriminatedUnion("type", [
@@ -51,9 +54,9 @@ describe("SchemaUnion", () => {
51
54
 
52
55
  beforeAll(async () => {
53
56
  Crypto = await WasmCrypto.create();
54
- me = await Account.create({
57
+ me = await createJazzTestAccount({
58
+ isCurrentActiveAccount: true,
55
59
  creationProps: { name: "Hermes Puggington" },
56
- crypto: Crypto,
57
60
  });
58
61
  });
59
62
 
@@ -71,15 +74,18 @@ describe("SchemaUnion", () => {
71
74
  { owner: me },
72
75
  );
73
76
 
74
- const loadedButtonWidget = await WidgetUnion.load(buttonWidget.id, {
77
+ const loadedButtonWidget = await WidgetUnion.load(buttonWidget.$jazz.id, {
75
78
  loadAs: me,
76
79
  });
77
- const loadedSliderWidget = await WidgetUnion.load(sliderWidget.id, {
78
- loadAs: me,
79
- });
80
- const loadedCheckboxWidget = await WidgetUnion.load(checkboxWidget.id, {
80
+ const loadedSliderWidget = await WidgetUnion.load(sliderWidget.$jazz.id, {
81
81
  loadAs: me,
82
82
  });
83
+ const loadedCheckboxWidget = await WidgetUnion.load(
84
+ checkboxWidget.$jazz.id,
85
+ {
86
+ loadAs: me,
87
+ },
88
+ );
83
89
 
84
90
  expect(loadedButtonWidget?.type).toBe("button");
85
91
  expect(loadedSliderWidget?.type).toBe("slider");
@@ -94,7 +100,7 @@ describe("SchemaUnion", () => {
94
100
  let currentValue = "Submit";
95
101
  const unsubscribe = subscribeToCoValue(
96
102
  coValueClassFromCoValueClassOrSchema(WidgetUnion),
97
- buttonWidget.id,
103
+ buttonWidget.$jazz.id,
98
104
  { loadAs: me, syncResolution: true },
99
105
  (value: Loaded<typeof WidgetUnion>) => {
100
106
  if (value.type === "button") {
@@ -107,7 +113,55 @@ describe("SchemaUnion", () => {
107
113
  },
108
114
  );
109
115
  currentValue = "Changed";
110
- buttonWidget.label = "Changed";
116
+ buttonWidget.$jazz.set("label", "Changed");
111
117
  unsubscribe();
112
118
  });
119
+
120
+ describe("methods available on all members of the union type are available on the union", () => {
121
+ const Buttons = co.list(ButtonWidget);
122
+ let buttons: ReturnType<typeof Buttons.create>;
123
+
124
+ beforeEach(() => {
125
+ buttons = Buttons.create([
126
+ {
127
+ type: "button",
128
+ color: "red",
129
+ label: "Delete",
130
+ disabled: true,
131
+ },
132
+ ]);
133
+ });
134
+
135
+ it("$jazz.applyDiff", () => {
136
+ assert(buttons[0]);
137
+ buttons[0].$jazz.applyDiff({ label: "Remove" });
138
+ expect(buttons[0].label).toBe("Remove");
139
+ });
140
+
141
+ it("$jazz.delete", () => {
142
+ assert(buttons[0]);
143
+
144
+ buttons[0].$jazz.delete("disabled");
145
+
146
+ expect(buttons[0].disabled).toBeUndefined();
147
+ });
148
+ });
149
+
150
+ describe("methods with constrained type parameters are not available on the union", () => {
151
+ it("$jazz.set", () => {
152
+ const Buttons = co.list(ButtonWidget);
153
+ const buttons = Buttons.create([
154
+ {
155
+ type: "button",
156
+ color: "red",
157
+ label: "Delete",
158
+ },
159
+ ]);
160
+
161
+ assert(buttons[0]);
162
+ // @ts-expect-error Typescript does not allow calling the union of methods with constrained type parameters
163
+ buttons[0].$jazz.set("label", "Remove");
164
+ expect(buttons[0].label).toBe("Remove");
165
+ });
166
+ });
113
167
  });