jazz-tools 0.15.15 → 0.16.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (217) hide show
  1. package/.svelte-kit/__package__/jazz.class.svelte.d.ts +2 -2
  2. package/.svelte-kit/__package__/jazz.class.svelte.d.ts.map +1 -1
  3. package/.svelte-kit/__package__/jazz.class.svelte.js +5 -5
  4. package/.svelte-kit/__package__/jazz.svelte.d.ts +2 -2
  5. package/.svelte-kit/__package__/jazz.svelte.d.ts.map +1 -1
  6. package/.turbo/turbo-build.log +46 -50
  7. package/CHANGELOG.md +35 -0
  8. package/dist/browser/index.d.ts +2 -2
  9. package/dist/browser/index.d.ts.map +1 -1
  10. package/dist/browser/index.js.map +1 -1
  11. package/dist/browser-media-images/index.d.ts +3 -1
  12. package/dist/browser-media-images/index.d.ts.map +1 -1
  13. package/dist/browser-media-images/index.js.map +1 -1
  14. package/dist/{chunk-4CFNXQE7.js → chunk-MLCNE3TL.js} +791 -698
  15. package/dist/chunk-MLCNE3TL.js.map +1 -0
  16. package/dist/index.js +363 -11
  17. package/dist/index.js.map +1 -1
  18. package/dist/react/hooks.d.ts +2 -2
  19. package/dist/react/hooks.d.ts.map +1 -1
  20. package/dist/react/index.js +2 -0
  21. package/dist/react/index.js.map +1 -1
  22. package/dist/react/testing.js +3 -1
  23. package/dist/react/testing.js.map +1 -1
  24. package/dist/react-core/hooks.d.ts +2 -2
  25. package/dist/react-core/hooks.d.ts.map +1 -1
  26. package/dist/react-core/index.js +3 -3
  27. package/dist/react-core/index.js.map +1 -1
  28. package/dist/react-native-core/hooks.d.ts +2 -2
  29. package/dist/react-native-core/hooks.d.ts.map +1 -1
  30. package/dist/react-native-core/index.js.map +1 -1
  31. package/dist/svelte/jazz.class.svelte.d.ts +2 -2
  32. package/dist/svelte/jazz.class.svelte.d.ts.map +1 -1
  33. package/dist/svelte/jazz.class.svelte.js +5 -5
  34. package/dist/svelte/jazz.svelte.d.ts +2 -2
  35. package/dist/svelte/jazz.svelte.d.ts.map +1 -1
  36. package/dist/testing.js +3 -3
  37. package/dist/testing.js.map +1 -1
  38. package/dist/tools/coValues/CoValueBase.d.ts +3 -13
  39. package/dist/tools/coValues/CoValueBase.d.ts.map +1 -1
  40. package/dist/tools/coValues/account.d.ts +2 -2
  41. package/dist/tools/coValues/account.d.ts.map +1 -1
  42. package/dist/tools/coValues/coFeed.d.ts.map +1 -1
  43. package/dist/tools/coValues/coList.d.ts.map +1 -1
  44. package/dist/tools/coValues/coMap.d.ts +5 -18
  45. package/dist/tools/coValues/coMap.d.ts.map +1 -1
  46. package/dist/tools/coValues/deepLoading.d.ts +4 -1
  47. package/dist/tools/coValues/deepLoading.d.ts.map +1 -1
  48. package/dist/tools/coValues/extensions/imageDef.d.ts +4 -7
  49. package/dist/tools/coValues/extensions/imageDef.d.ts.map +1 -1
  50. package/dist/tools/coValues/group.d.ts +1 -0
  51. package/dist/tools/coValues/group.d.ts.map +1 -1
  52. package/dist/tools/coValues/inbox.d.ts +2 -2
  53. package/dist/tools/coValues/inbox.d.ts.map +1 -1
  54. package/dist/tools/coValues/interfaces.d.ts +58 -17
  55. package/dist/tools/coValues/interfaces.d.ts.map +1 -1
  56. package/dist/tools/coValues/request.d.ts +82 -0
  57. package/dist/tools/coValues/request.d.ts.map +1 -0
  58. package/dist/tools/coValues/schemaUnion.d.ts +5 -1
  59. package/dist/tools/coValues/schemaUnion.d.ts.map +1 -1
  60. package/dist/tools/exports.d.ts +4 -3
  61. package/dist/tools/exports.d.ts.map +1 -1
  62. package/dist/tools/implementation/createContext.d.ts +4 -4
  63. package/dist/tools/implementation/createContext.d.ts.map +1 -1
  64. package/dist/tools/implementation/invites.d.ts +2 -2
  65. package/dist/tools/implementation/invites.d.ts.map +1 -1
  66. package/dist/tools/implementation/schemaUtils.d.ts +8 -0
  67. package/dist/tools/implementation/schemaUtils.d.ts.map +1 -0
  68. package/dist/tools/implementation/zodSchema/coExport.d.ts +11 -1
  69. package/dist/tools/implementation/zodSchema/coExport.d.ts.map +1 -1
  70. package/dist/tools/implementation/zodSchema/runtimeConverters/coValueSchemaTransformation.d.ts +22 -0
  71. package/dist/tools/implementation/zodSchema/runtimeConverters/coValueSchemaTransformation.d.ts.map +1 -0
  72. package/dist/tools/implementation/zodSchema/runtimeConverters/schemaFieldToCoFieldDef.d.ts +10 -0
  73. package/dist/tools/implementation/zodSchema/runtimeConverters/schemaFieldToCoFieldDef.d.ts.map +1 -0
  74. package/dist/tools/implementation/zodSchema/schemaTypes/AccountSchema.d.ts +11 -11
  75. package/dist/tools/implementation/zodSchema/schemaTypes/AccountSchema.d.ts.map +1 -1
  76. package/dist/tools/implementation/zodSchema/schemaTypes/CoDiscriminatedUnionSchema.d.ts +34 -24
  77. package/dist/tools/implementation/zodSchema/schemaTypes/CoDiscriminatedUnionSchema.d.ts.map +1 -1
  78. package/dist/tools/implementation/zodSchema/schemaTypes/CoFeedSchema.d.ts +16 -14
  79. package/dist/tools/implementation/zodSchema/schemaTypes/CoFeedSchema.d.ts.map +1 -1
  80. package/dist/tools/implementation/zodSchema/schemaTypes/CoListSchema.d.ts +23 -17
  81. package/dist/tools/implementation/zodSchema/schemaTypes/CoListSchema.d.ts.map +1 -1
  82. package/dist/tools/implementation/zodSchema/schemaTypes/CoMapSchema.d.ts +24 -16
  83. package/dist/tools/implementation/zodSchema/schemaTypes/CoMapSchema.d.ts.map +1 -1
  84. package/dist/tools/implementation/zodSchema/schemaTypes/CoOptionalSchema.d.ts +20 -9
  85. package/dist/tools/implementation/zodSchema/schemaTypes/CoOptionalSchema.d.ts.map +1 -1
  86. package/dist/tools/implementation/zodSchema/schemaTypes/CoRecordSchema.d.ts +18 -12
  87. package/dist/tools/implementation/zodSchema/schemaTypes/CoRecordSchema.d.ts.map +1 -1
  88. package/dist/tools/implementation/zodSchema/schemaTypes/CoValueSchema.d.ts +18 -0
  89. package/dist/tools/implementation/zodSchema/schemaTypes/CoValueSchema.d.ts.map +1 -0
  90. package/dist/tools/implementation/zodSchema/schemaTypes/FileStreamSchema.d.ts +14 -9
  91. package/dist/tools/implementation/zodSchema/schemaTypes/FileStreamSchema.d.ts.map +1 -1
  92. package/dist/tools/implementation/zodSchema/schemaTypes/PlainTextSchema.d.ts +14 -9
  93. package/dist/tools/implementation/zodSchema/schemaTypes/PlainTextSchema.d.ts.map +1 -1
  94. package/dist/tools/implementation/zodSchema/schemaTypes/RichTextSchema.d.ts +14 -9
  95. package/dist/tools/implementation/zodSchema/schemaTypes/RichTextSchema.d.ts.map +1 -1
  96. package/dist/tools/implementation/zodSchema/typeConverters/InstanceOfSchema.d.ts +15 -13
  97. package/dist/tools/implementation/zodSchema/typeConverters/InstanceOfSchema.d.ts.map +1 -1
  98. package/dist/tools/implementation/zodSchema/typeConverters/InstanceOfSchemaCoValuesNullable.d.ts +12 -15
  99. package/dist/tools/implementation/zodSchema/typeConverters/InstanceOfSchemaCoValuesNullable.d.ts.map +1 -1
  100. package/dist/tools/implementation/zodSchema/typeConverters/InstanceOrPrimitiveOfSchema.d.ts +17 -20
  101. package/dist/tools/implementation/zodSchema/typeConverters/InstanceOrPrimitiveOfSchema.d.ts.map +1 -1
  102. package/dist/tools/implementation/zodSchema/typeConverters/InstanceOrPrimitiveOfSchemaCoValuesNullable.d.ts +17 -20
  103. package/dist/tools/implementation/zodSchema/typeConverters/InstanceOrPrimitiveOfSchemaCoValuesNullable.d.ts.map +1 -1
  104. package/dist/tools/implementation/zodSchema/unionUtils.d.ts +3 -5
  105. package/dist/tools/implementation/zodSchema/unionUtils.d.ts.map +1 -1
  106. package/dist/tools/implementation/zodSchema/zodCo.d.ts +10 -8
  107. package/dist/tools/implementation/zodSchema/zodCo.d.ts.map +1 -1
  108. package/dist/tools/implementation/zodSchema/zodReExport.d.ts +4 -8
  109. package/dist/tools/implementation/zodSchema/zodReExport.d.ts.map +1 -1
  110. package/dist/tools/implementation/zodSchema/zodSchema.d.ts +21 -30
  111. package/dist/tools/implementation/zodSchema/zodSchema.d.ts.map +1 -1
  112. package/dist/tools/internal.d.ts +3 -2
  113. package/dist/tools/internal.d.ts.map +1 -1
  114. package/dist/tools/lib/id.d.ts +2 -0
  115. package/dist/tools/lib/id.d.ts.map +1 -0
  116. package/dist/tools/lib/utilityTypes.d.ts +10 -0
  117. package/dist/tools/lib/utilityTypes.d.ts.map +1 -0
  118. package/dist/tools/subscribe/SubscriptionScope.d.ts +3 -2
  119. package/dist/tools/subscribe/SubscriptionScope.d.ts.map +1 -1
  120. package/dist/tools/subscribe/utils.d.ts.map +1 -1
  121. package/dist/tools/testing.d.ts +2 -2
  122. package/dist/tools/testing.d.ts.map +1 -1
  123. package/dist/tools/tests/exportImport.test.d.ts +2 -0
  124. package/dist/tools/tests/exportImport.test.d.ts.map +1 -0
  125. package/dist/tools/tests/request.test.d.ts +2 -0
  126. package/dist/tools/tests/request.test.d.ts.map +1 -0
  127. package/dist/worker/index.d.ts.map +1 -1
  128. package/dist/worker/index.js +2 -2
  129. package/dist/worker/index.js.map +1 -1
  130. package/package.json +7 -6
  131. package/src/browser/index.ts +2 -4
  132. package/src/browser-media-images/index.ts +1 -1
  133. package/src/react/hooks.tsx +2 -2
  134. package/src/react-core/hooks.ts +6 -6
  135. package/src/react-core/tests/useAccount.test.ts +2 -2
  136. package/src/react-core/tests/useCoState.test.ts +3 -2
  137. package/src/react-native-core/hooks.tsx +2 -2
  138. package/src/svelte/jazz.class.svelte.ts +10 -7
  139. package/src/svelte/jazz.svelte.ts +2 -2
  140. package/src/tools/coValues/CoValueBase.ts +8 -20
  141. package/src/tools/coValues/account.ts +18 -14
  142. package/src/tools/coValues/coFeed.ts +0 -4
  143. package/src/tools/coValues/coList.ts +7 -9
  144. package/src/tools/coValues/coMap.ts +1 -6
  145. package/src/tools/coValues/coPlainText.ts +4 -4
  146. package/src/tools/coValues/deepLoading.ts +4 -1
  147. package/src/tools/coValues/extensions/imageDef.ts +3 -3
  148. package/src/tools/coValues/group.ts +1 -0
  149. package/src/tools/coValues/inbox.ts +8 -7
  150. package/src/tools/coValues/interfaces.ts +177 -69
  151. package/src/tools/coValues/request.ts +633 -0
  152. package/src/tools/coValues/schemaUnion.ts +8 -4
  153. package/src/tools/exports.ts +11 -14
  154. package/src/tools/implementation/createContext.ts +9 -9
  155. package/src/tools/implementation/invites.ts +2 -2
  156. package/src/tools/implementation/schemaUtils.ts +18 -0
  157. package/src/tools/implementation/zodSchema/coExport.ts +14 -0
  158. package/src/tools/implementation/zodSchema/runtimeConverters/coValueSchemaTransformation.ts +156 -0
  159. package/src/tools/implementation/zodSchema/runtimeConverters/schemaFieldToCoFieldDef.ts +133 -0
  160. package/src/tools/implementation/zodSchema/schemaTypes/AccountSchema.ts +36 -17
  161. package/src/tools/implementation/zodSchema/schemaTypes/CoDiscriminatedUnionSchema.ts +101 -52
  162. package/src/tools/implementation/zodSchema/schemaTypes/CoFeedSchema.ts +54 -50
  163. package/src/tools/implementation/zodSchema/schemaTypes/CoListSchema.ts +54 -46
  164. package/src/tools/implementation/zodSchema/schemaTypes/CoMapSchema.ts +187 -137
  165. package/src/tools/implementation/zodSchema/schemaTypes/CoOptionalSchema.ts +29 -27
  166. package/src/tools/implementation/zodSchema/schemaTypes/CoRecordSchema.ts +28 -18
  167. package/src/tools/implementation/zodSchema/schemaTypes/CoValueSchema.ts +18 -0
  168. package/src/tools/implementation/zodSchema/schemaTypes/FileStreamSchema.ts +45 -36
  169. package/src/tools/implementation/zodSchema/schemaTypes/PlainTextSchema.ts +47 -35
  170. package/src/tools/implementation/zodSchema/schemaTypes/RichTextSchema.ts +43 -30
  171. package/src/tools/implementation/zodSchema/typeConverters/InstanceOfSchema.ts +28 -23
  172. package/src/tools/implementation/zodSchema/typeConverters/InstanceOfSchemaCoValuesNullable.ts +28 -25
  173. package/src/tools/implementation/zodSchema/typeConverters/InstanceOrPrimitiveOfSchema.ts +86 -78
  174. package/src/tools/implementation/zodSchema/typeConverters/InstanceOrPrimitiveOfSchemaCoValuesNullable.ts +91 -82
  175. package/src/tools/implementation/zodSchema/unionUtils.ts +47 -51
  176. package/src/tools/implementation/zodSchema/zodCo.ts +42 -75
  177. package/src/tools/implementation/zodSchema/zodReExport.ts +44 -24
  178. package/src/tools/implementation/zodSchema/zodSchema.ts +64 -102
  179. package/src/tools/internal.ts +3 -2
  180. package/src/tools/lib/id.ts +3 -0
  181. package/src/tools/lib/utilityTypes.ts +7 -0
  182. package/src/tools/subscribe/SubscriptionScope.ts +10 -1
  183. package/src/tools/subscribe/utils.ts +4 -2
  184. package/src/tools/testing.ts +4 -4
  185. package/src/tools/tests/ContextManager.test.ts +8 -9
  186. package/src/tools/tests/account.test.ts +65 -3
  187. package/src/tools/tests/coDiscriminatedUnion.test-d.ts +38 -0
  188. package/src/tools/tests/coDiscriminatedUnion.test.ts +219 -1
  189. package/src/tools/tests/coFeed.test-d.ts +4 -3
  190. package/src/tools/tests/coList.test-d.ts +32 -3
  191. package/src/tools/tests/coList.test.ts +20 -2
  192. package/src/tools/tests/coMap.record.test-d.ts +31 -3
  193. package/src/tools/tests/coMap.record.test.ts +9 -9
  194. package/src/tools/tests/coMap.test-d.ts +8 -8
  195. package/src/tools/tests/coMap.test.ts +19 -5
  196. package/src/tools/tests/coOptional.test.ts +63 -1
  197. package/src/tools/tests/createContext.test.ts +7 -9
  198. package/src/tools/tests/deepLoading.test.ts +4 -10
  199. package/src/tools/tests/exportImport.test.ts +526 -0
  200. package/src/tools/tests/groupsAndAccounts.test.ts +5 -4
  201. package/src/tools/tests/inbox.test.ts +3 -2
  202. package/src/tools/tests/load.test.ts +3 -29
  203. package/src/tools/tests/request.test.ts +951 -0
  204. package/src/tools/tests/schemaUnion.test.ts +2 -2
  205. package/src/tools/tests/subscribe.test.ts +22 -114
  206. package/src/tools/tests/testing.test.ts +6 -6
  207. package/src/tools/tests/zod.test-d.ts +27 -0
  208. package/src/tools/tests/zod.test.ts +50 -45
  209. package/src/worker/index.ts +0 -1
  210. package/tsup.config.ts +0 -2
  211. package/dist/chunk-4CFNXQE7.js.map +0 -1
  212. package/dist/tools/implementation/zodSchema/runtimeConverters/zodFieldToCoFieldDef.d.ts +0 -12
  213. package/dist/tools/implementation/zodSchema/runtimeConverters/zodFieldToCoFieldDef.d.ts.map +0 -1
  214. package/dist/tools/implementation/zodSchema/runtimeConverters/zodSchemaToCoSchema.d.ts +0 -9
  215. package/dist/tools/implementation/zodSchema/runtimeConverters/zodSchemaToCoSchema.d.ts.map +0 -1
  216. package/src/tools/implementation/zodSchema/runtimeConverters/zodFieldToCoFieldDef.ts +0 -172
  217. package/src/tools/implementation/zodSchema/runtimeConverters/zodSchemaToCoSchema.ts +0 -218
@@ -1,7 +1,7 @@
1
1
  import { assert, describe, expectTypeOf, test } from "vitest";
2
2
  import { Group, co, z } from "../exports.js";
3
3
  import { Account } from "../index.js";
4
- import { CoListSchema, Loaded } from "../internal.js";
4
+ import { Loaded } from "../internal.js";
5
5
 
6
6
  describe("CoMap", async () => {
7
7
  describe("init", () => {
@@ -117,9 +117,10 @@ describe("CoMap", async () => {
117
117
  });
118
118
 
119
119
  test("CoMap create with partially loaded, reference and optional", () => {
120
+ const Breed = co.map({ type: z.literal("labrador"), value: z.string() });
120
121
  const Dog = co.map({
121
122
  name: z.string(),
122
- breed: co.map({ type: z.literal("labrador"), value: z.string() }),
123
+ breed: Breed,
123
124
  });
124
125
  type Dog = co.loaded<typeof Dog>;
125
126
 
@@ -131,7 +132,7 @@ describe("CoMap", async () => {
131
132
 
132
133
  const dog = Dog.create({
133
134
  name: "Rex",
134
- breed: Dog.def.shape.breed.create({
135
+ breed: Breed.create({
135
136
  type: "labrador",
136
137
  value: "Labrador",
137
138
  }),
@@ -158,8 +159,8 @@ describe("CoMap", async () => {
158
159
 
159
160
  test("Comap with recursive optional reference", () => {
160
161
  const Recursive = co.map({
161
- get child(): z.ZodOptional<typeof Recursive> {
162
- return co.optional(Recursive);
162
+ get child() {
163
+ return Recursive.optional();
163
164
  },
164
165
  });
165
166
 
@@ -183,8 +184,7 @@ describe("CoMap", async () => {
183
184
  const Person = co.map({
184
185
  name: z.string(),
185
186
  age: z.number(),
186
- // TODO: would be nice if this didn't need a type annotation
187
- get friend(): z.ZodOptional<typeof Person> {
187
+ get friend() {
188
188
  return co.optional(Person);
189
189
  },
190
190
  });
@@ -243,7 +243,7 @@ describe("CoMap", async () => {
243
243
  test("update a reference on a loaded value", () => {
244
244
  const Dog = co.map({
245
245
  name: z.string(),
246
- get siblings(): CoListSchema<typeof Dog> {
246
+ get siblings() {
247
247
  return co.list(Dog);
248
248
  },
249
249
  });
@@ -12,7 +12,7 @@ import {
12
12
  } from "vitest";
13
13
  import { Group, co, subscribeToCoValue, z } from "../exports.js";
14
14
  import { Account } from "../index.js";
15
- import { Loaded, anySchemaToCoSchema } from "../internal.js";
15
+ import { Loaded, coValueClassFromCoValueClassOrSchema } from "../internal.js";
16
16
  import {
17
17
  createJazzTestAccount,
18
18
  getPeerConnectedToTestSyncServer,
@@ -144,7 +144,7 @@ describe("CoMap", async () => {
144
144
  name: z.string(),
145
145
  age: z.number(),
146
146
  // TODO: would be nice if this didn't need a type annotation
147
- get friend(): z.ZodOptional<typeof Person> {
147
+ get friend(): co.Optional<typeof Person> {
148
148
  return co.optional(Person);
149
149
  },
150
150
  });
@@ -181,7 +181,7 @@ describe("CoMap", async () => {
181
181
  const Person = co.map({
182
182
  name: z.string(),
183
183
  age: z.number(),
184
- get friend(): z.ZodOptional<typeof Person> {
184
+ get friend(): co.Optional<typeof Person> {
185
185
  return co.optional(Person);
186
186
  },
187
187
  });
@@ -210,7 +210,7 @@ describe("CoMap", async () => {
210
210
  const Person = co.map({
211
211
  name: z.string(),
212
212
  age: z.number(),
213
- get friend(): z.ZodOptional<typeof Person> {
213
+ get friend(): co.Optional<typeof Person> {
214
214
  return co.optional(Person);
215
215
  },
216
216
  });
@@ -801,7 +801,7 @@ describe("CoMap resolution", async () => {
801
801
  const spy = vi.fn((person) => updates.push(person));
802
802
 
803
803
  subscribeToCoValue(
804
- anySchemaToCoSchema(Person), // TODO: we should get rid of the conversion in the future
804
+ coValueClassFromCoValueClassOrSchema(Person), // TODO: we should get rid of the conversion in the future
805
805
  person.id,
806
806
  {
807
807
  syncResolution: true,
@@ -2104,6 +2104,20 @@ describe("CoMap migration", () => {
2104
2104
  });
2105
2105
  });
2106
2106
 
2107
+ describe("co.map schema", () => {
2108
+ test("can access the inner schemas of a co.map", () => {
2109
+ const Person = co.map({
2110
+ name: co.plainText(),
2111
+ });
2112
+
2113
+ const person = Person.create({
2114
+ name: Person.shape["name"].create("John"),
2115
+ });
2116
+
2117
+ expect(person.name.toString()).toEqual("John");
2118
+ });
2119
+ });
2120
+
2107
2121
  describe("Updating a nested reference", () => {
2108
2122
  test("should assign a resolved optional reference and expect value is not null", async () => {
2109
2123
  // Define the schema similar to the server-worker-http example
@@ -1,4 +1,4 @@
1
- import { beforeEach, describe, test } from "vitest";
1
+ import { beforeEach, describe, expect, test } from "vitest";
2
2
  import { CoPlainText, co, z } from "../exports.js";
3
3
  import { createJazzTestAccount, setupJazzTestSync } from "../testing.js";
4
4
 
@@ -36,4 +36,66 @@ describe("co.optional", () => {
36
36
  preferredName: co.optional(z.string()),
37
37
  });
38
38
  });
39
+
40
+ test("can use schem.optional() on all CoValue schemas but co.optional()", () => {
41
+ const Option1 = co.map({ type: z.literal("1") });
42
+ const Option2 = co.map({ type: z.literal("2") });
43
+ const Schema = co.map({
44
+ plainText: co.plainText().optional(),
45
+ richText: co.richText().optional(),
46
+ fileStream: co.fileStream().optional(),
47
+ image: co.image().optional(),
48
+ record: co.record(z.string(), z.string()).optional(),
49
+ map: co.map({ field: z.string() }).optional(),
50
+ list: co.list(z.string()).optional(),
51
+ feed: co.feed(z.string()).optional(),
52
+ union: co.discriminatedUnion("type", [Option1, Option2]).optional(),
53
+ });
54
+
55
+ const schema = Schema.create({});
56
+
57
+ expect(schema.plainText).toBeUndefined();
58
+ expect(schema.richText).toBeUndefined();
59
+ expect(schema.fileStream).toBeUndefined();
60
+ expect(schema.image).toBeUndefined();
61
+ expect(schema.record).toBeUndefined();
62
+ expect(schema.map).toBeUndefined();
63
+ expect(schema.list).toBeUndefined();
64
+ expect(schema.feed).toBeUndefined();
65
+ expect(schema.union).toBeUndefined();
66
+
67
+ schema.plainText = Schema.shape.plainText.innerType.create("Hello");
68
+ schema.richText = Schema.shape.richText.innerType.create("Hello");
69
+ schema.fileStream = Schema.shape.fileStream.innerType.create();
70
+ schema.image = Schema.shape.image.innerType.create({
71
+ originalSize: [1920, 1080],
72
+ });
73
+ schema.record = Schema.shape.record.innerType.create({ field: "hello" });
74
+ schema.map = Schema.shape.map.innerType.create({ field: "hello" });
75
+ schema.list = Schema.shape.list.innerType.create([]);
76
+ schema.feed = Schema.shape.feed.innerType.create([]);
77
+ schema.union = Option1.create({ type: "1" });
78
+
79
+ expect(schema.plainText?.toString()).toEqual("Hello");
80
+ expect(schema.richText?.toString()).toEqual("Hello");
81
+ expect(schema.fileStream).not.toBeUndefined();
82
+ expect(schema.image?.originalSize).toEqual([1920, 1080]);
83
+ expect(schema.record?.field).toEqual("hello");
84
+ expect(schema.map?.field).toEqual("hello");
85
+ expect(schema.list).toEqual([]);
86
+ expect(schema.feed).not.toBeUndefined();
87
+ expect(schema.union?.type).toEqual("1");
88
+ });
89
+
90
+ test("can access the inner schema of a co.optional", () => {
91
+ const Person = co.map({
92
+ preferredName: co.optional(co.plainText()),
93
+ });
94
+
95
+ const person = Person.create({
96
+ preferredName: Person.shape["preferredName"].innerType.create("John"),
97
+ });
98
+
99
+ expect(person?.preferredName?.toString()).toEqual("John");
100
+ });
39
101
  });
@@ -9,15 +9,13 @@ import {
9
9
  ID,
10
10
  InMemoryKVStore,
11
11
  KvStoreContext,
12
- anySchemaToCoSchema,
13
12
  co,
13
+ coValueClassFromCoValueClassOrSchema,
14
14
  createAnonymousJazzContext,
15
15
  createJazzContext,
16
16
  createJazzContextForNewAccount,
17
17
  createJazzContextFromExistingCredentials,
18
18
  randomSessionProvider,
19
- z,
20
- zodSchemaToCoSchema,
21
19
  } from "../exports";
22
20
  import { activeAccountContext } from "../implementation/activeAccountContext";
23
21
  import {
@@ -86,12 +84,12 @@ describe("createContext methods", () => {
86
84
  credentials,
87
85
  peersToLoadFrom: [getPeerConnectedToTestSyncServer()],
88
86
  crypto: Crypto,
89
- AccountSchema: zodSchemaToCoSchema(CustomAccount),
87
+ AccountSchema: CustomAccount,
90
88
  sessionProvider: randomSessionProvider,
91
89
  });
92
90
 
93
91
  expect(context.account).toBeInstanceOf(
94
- anySchemaToCoSchema(CustomAccount),
92
+ coValueClassFromCoValueClassOrSchema(CustomAccount),
95
93
  );
96
94
  });
97
95
 
@@ -196,11 +194,11 @@ describe("createContext methods", () => {
196
194
  creationProps: { name: "New User" },
197
195
  peersToLoadFrom: [],
198
196
  crypto: Crypto,
199
- AccountSchema: zodSchemaToCoSchema(CustomAccount),
197
+ AccountSchema: CustomAccount,
200
198
  });
201
199
 
202
200
  expect(context.account).toBeInstanceOf(
203
- anySchemaToCoSchema(CustomAccount),
201
+ coValueClassFromCoValueClassOrSchema(CustomAccount),
204
202
  );
205
203
  });
206
204
 
@@ -347,11 +345,11 @@ describe("createContext methods", () => {
347
345
  crypto: Crypto,
348
346
  authSecretStorage,
349
347
  sessionProvider: randomSessionProvider,
350
- AccountSchema: zodSchemaToCoSchema(CustomAccount),
348
+ AccountSchema: CustomAccount,
351
349
  });
352
350
 
353
351
  expect(context.account).toBeInstanceOf(
354
- anySchemaToCoSchema(CustomAccount),
352
+ coValueClassFromCoValueClassOrSchema(CustomAccount),
355
353
  );
356
354
  });
357
355
  });
@@ -1,4 +1,4 @@
1
- import { Profile, cojsonInternals } from "cojson";
1
+ import { cojsonInternals } from "cojson";
2
2
  import { WasmCrypto } from "cojson/crypto/WasmCrypto";
3
3
  import { assert, describe, expect, expectTypeOf, test, vi } from "vitest";
4
4
  import {
@@ -9,13 +9,7 @@ import {
9
9
  isControlledAccount,
10
10
  z,
11
11
  } from "../index.js";
12
- import {
13
- Account,
14
- CoListSchema,
15
- Loaded,
16
- co,
17
- randomSessionProvider,
18
- } from "../internal.js";
12
+ import { Account, Loaded, co, randomSessionProvider } from "../internal.js";
19
13
  import { createJazzTestAccount, linkAccounts } from "../testing.js";
20
14
  import { waitFor } from "./utils.js";
21
15
 
@@ -794,11 +788,11 @@ describe("Deep loading with unauthorized account", async () => {
794
788
  test("unaccessible list element with $onError and $each with depth", async () => {
795
789
  const Person = co.map({
796
790
  name: z.string(),
797
- get friends(): z.ZodOptional<typeof Friends> {
791
+ get friends(): co.Optional<typeof Friends> {
798
792
  return co.optional(Friends);
799
793
  },
800
794
  });
801
- const Friends: CoListSchema<typeof Person> = co.list(Person); // TODO: annoying that we have to annotate
795
+ const Friends: co.List<typeof Person> = co.list(Person); // TODO: annoying that we have to annotate
802
796
 
803
797
  const list = Friends.create(
804
798
  [