jazz-tools 0.15.16 → 0.16.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 (203) 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 +44 -44
  7. package/CHANGELOG.md +34 -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-OSVAAVWQ.js → chunk-CL3ROOZM.js} +598 -598
  15. package/dist/chunk-CL3ROOZM.js.map +1 -0
  16. package/dist/index.js +8 -10
  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.map +1 -1
  21. package/dist/react-core/hooks.d.ts +2 -2
  22. package/dist/react-core/hooks.d.ts.map +1 -1
  23. package/dist/react-core/index.js +3 -3
  24. package/dist/react-core/index.js.map +1 -1
  25. package/dist/react-native-core/hooks.d.ts +2 -2
  26. package/dist/react-native-core/hooks.d.ts.map +1 -1
  27. package/dist/react-native-core/index.js.map +1 -1
  28. package/dist/svelte/jazz.class.svelte.d.ts +2 -2
  29. package/dist/svelte/jazz.class.svelte.d.ts.map +1 -1
  30. package/dist/svelte/jazz.class.svelte.js +5 -5
  31. package/dist/svelte/jazz.svelte.d.ts +2 -2
  32. package/dist/svelte/jazz.svelte.d.ts.map +1 -1
  33. package/dist/testing.js +3 -3
  34. package/dist/testing.js.map +1 -1
  35. package/dist/tools/coValues/CoValueBase.d.ts +3 -13
  36. package/dist/tools/coValues/CoValueBase.d.ts.map +1 -1
  37. package/dist/tools/coValues/account.d.ts +2 -2
  38. package/dist/tools/coValues/account.d.ts.map +1 -1
  39. package/dist/tools/coValues/coFeed.d.ts.map +1 -1
  40. package/dist/tools/coValues/coList.d.ts.map +1 -1
  41. package/dist/tools/coValues/coMap.d.ts +8 -23
  42. package/dist/tools/coValues/coMap.d.ts.map +1 -1
  43. package/dist/tools/coValues/deepLoading.d.ts +4 -1
  44. package/dist/tools/coValues/deepLoading.d.ts.map +1 -1
  45. package/dist/tools/coValues/extensions/imageDef.d.ts +4 -7
  46. package/dist/tools/coValues/extensions/imageDef.d.ts.map +1 -1
  47. package/dist/tools/coValues/inbox.d.ts +2 -2
  48. package/dist/tools/coValues/inbox.d.ts.map +1 -1
  49. package/dist/tools/coValues/interfaces.d.ts +2 -17
  50. package/dist/tools/coValues/interfaces.d.ts.map +1 -1
  51. package/dist/tools/coValues/request.d.ts +3 -3
  52. package/dist/tools/coValues/request.d.ts.map +1 -1
  53. package/dist/tools/coValues/schemaUnion.d.ts +5 -1
  54. package/dist/tools/coValues/schemaUnion.d.ts.map +1 -1
  55. package/dist/tools/exports.d.ts +3 -3
  56. package/dist/tools/exports.d.ts.map +1 -1
  57. package/dist/tools/implementation/createContext.d.ts +4 -4
  58. package/dist/tools/implementation/createContext.d.ts.map +1 -1
  59. package/dist/tools/implementation/invites.d.ts +2 -2
  60. package/dist/tools/implementation/invites.d.ts.map +1 -1
  61. package/dist/tools/implementation/schemaUtils.d.ts +8 -0
  62. package/dist/tools/implementation/schemaUtils.d.ts.map +1 -0
  63. package/dist/tools/implementation/zodSchema/coExport.d.ts +11 -1
  64. package/dist/tools/implementation/zodSchema/coExport.d.ts.map +1 -1
  65. package/dist/tools/implementation/zodSchema/runtimeConverters/coValueSchemaTransformation.d.ts +22 -0
  66. package/dist/tools/implementation/zodSchema/runtimeConverters/coValueSchemaTransformation.d.ts.map +1 -0
  67. package/dist/tools/implementation/zodSchema/runtimeConverters/schemaFieldToCoFieldDef.d.ts +10 -0
  68. package/dist/tools/implementation/zodSchema/runtimeConverters/schemaFieldToCoFieldDef.d.ts.map +1 -0
  69. package/dist/tools/implementation/zodSchema/schemaTypes/AccountSchema.d.ts +11 -11
  70. package/dist/tools/implementation/zodSchema/schemaTypes/AccountSchema.d.ts.map +1 -1
  71. package/dist/tools/implementation/zodSchema/schemaTypes/CoDiscriminatedUnionSchema.d.ts +34 -24
  72. package/dist/tools/implementation/zodSchema/schemaTypes/CoDiscriminatedUnionSchema.d.ts.map +1 -1
  73. package/dist/tools/implementation/zodSchema/schemaTypes/CoFeedSchema.d.ts +17 -14
  74. package/dist/tools/implementation/zodSchema/schemaTypes/CoFeedSchema.d.ts.map +1 -1
  75. package/dist/tools/implementation/zodSchema/schemaTypes/CoListSchema.d.ts +24 -17
  76. package/dist/tools/implementation/zodSchema/schemaTypes/CoListSchema.d.ts.map +1 -1
  77. package/dist/tools/implementation/zodSchema/schemaTypes/CoMapSchema.d.ts +31 -34
  78. package/dist/tools/implementation/zodSchema/schemaTypes/CoMapSchema.d.ts.map +1 -1
  79. package/dist/tools/implementation/zodSchema/schemaTypes/CoOptionalSchema.d.ts +20 -9
  80. package/dist/tools/implementation/zodSchema/schemaTypes/CoOptionalSchema.d.ts.map +1 -1
  81. package/dist/tools/implementation/zodSchema/schemaTypes/CoRecordSchema.d.ts +19 -12
  82. package/dist/tools/implementation/zodSchema/schemaTypes/CoRecordSchema.d.ts.map +1 -1
  83. package/dist/tools/implementation/zodSchema/schemaTypes/CoValueSchema.d.ts +18 -0
  84. package/dist/tools/implementation/zodSchema/schemaTypes/CoValueSchema.d.ts.map +1 -0
  85. package/dist/tools/implementation/zodSchema/schemaTypes/FileStreamSchema.d.ts +14 -9
  86. package/dist/tools/implementation/zodSchema/schemaTypes/FileStreamSchema.d.ts.map +1 -1
  87. package/dist/tools/implementation/zodSchema/schemaTypes/PlainTextSchema.d.ts +14 -9
  88. package/dist/tools/implementation/zodSchema/schemaTypes/PlainTextSchema.d.ts.map +1 -1
  89. package/dist/tools/implementation/zodSchema/schemaTypes/RichTextSchema.d.ts +14 -9
  90. package/dist/tools/implementation/zodSchema/schemaTypes/RichTextSchema.d.ts.map +1 -1
  91. package/dist/tools/implementation/zodSchema/typeConverters/CoFieldInit.d.ts +10 -0
  92. package/dist/tools/implementation/zodSchema/typeConverters/CoFieldInit.d.ts.map +1 -0
  93. package/dist/tools/implementation/zodSchema/typeConverters/InstanceOfSchema.d.ts +15 -13
  94. package/dist/tools/implementation/zodSchema/typeConverters/InstanceOfSchema.d.ts.map +1 -1
  95. package/dist/tools/implementation/zodSchema/typeConverters/InstanceOfSchemaCoValuesNullable.d.ts +12 -15
  96. package/dist/tools/implementation/zodSchema/typeConverters/InstanceOfSchemaCoValuesNullable.d.ts.map +1 -1
  97. package/dist/tools/implementation/zodSchema/typeConverters/InstanceOrPrimitiveOfSchema.d.ts +17 -20
  98. package/dist/tools/implementation/zodSchema/typeConverters/InstanceOrPrimitiveOfSchema.d.ts.map +1 -1
  99. package/dist/tools/implementation/zodSchema/typeConverters/InstanceOrPrimitiveOfSchemaCoValuesNullable.d.ts +17 -20
  100. package/dist/tools/implementation/zodSchema/typeConverters/InstanceOrPrimitiveOfSchemaCoValuesNullable.d.ts.map +1 -1
  101. package/dist/tools/implementation/zodSchema/unionUtils.d.ts +3 -5
  102. package/dist/tools/implementation/zodSchema/unionUtils.d.ts.map +1 -1
  103. package/dist/tools/implementation/zodSchema/zodCo.d.ts +10 -8
  104. package/dist/tools/implementation/zodSchema/zodCo.d.ts.map +1 -1
  105. package/dist/tools/implementation/zodSchema/zodReExport.d.ts +4 -8
  106. package/dist/tools/implementation/zodSchema/zodReExport.d.ts.map +1 -1
  107. package/dist/tools/implementation/zodSchema/zodSchema.d.ts +21 -30
  108. package/dist/tools/implementation/zodSchema/zodSchema.d.ts.map +1 -1
  109. package/dist/tools/internal.d.ts +3 -2
  110. package/dist/tools/internal.d.ts.map +1 -1
  111. package/dist/tools/lib/utilityTypes.d.ts +18 -0
  112. package/dist/tools/lib/utilityTypes.d.ts.map +1 -0
  113. package/dist/tools/subscribe/utils.d.ts.map +1 -1
  114. package/dist/tools/testing.d.ts +2 -2
  115. package/dist/tools/testing.d.ts.map +1 -1
  116. package/dist/worker/index.d.ts.map +1 -1
  117. package/dist/worker/index.js +2 -2
  118. package/dist/worker/index.js.map +1 -1
  119. package/package.json +5 -5
  120. package/src/browser/index.ts +2 -4
  121. package/src/browser-media-images/index.ts +1 -1
  122. package/src/react/hooks.tsx +2 -2
  123. package/src/react-core/hooks.ts +6 -6
  124. package/src/react-core/tests/useAccount.test.ts +2 -2
  125. package/src/react-core/tests/useCoState.test.ts +3 -2
  126. package/src/react-native-core/hooks.tsx +2 -2
  127. package/src/svelte/jazz.class.svelte.ts +10 -7
  128. package/src/svelte/jazz.svelte.ts +2 -2
  129. package/src/tools/coValues/CoValueBase.ts +8 -20
  130. package/src/tools/coValues/account.ts +18 -14
  131. package/src/tools/coValues/coFeed.ts +0 -4
  132. package/src/tools/coValues/coList.ts +7 -9
  133. package/src/tools/coValues/coMap.ts +5 -13
  134. package/src/tools/coValues/coPlainText.ts +4 -4
  135. package/src/tools/coValues/deepLoading.ts +4 -1
  136. package/src/tools/coValues/extensions/imageDef.ts +3 -3
  137. package/src/tools/coValues/inbox.ts +4 -4
  138. package/src/tools/coValues/interfaces.ts +4 -71
  139. package/src/tools/coValues/request.ts +17 -15
  140. package/src/tools/coValues/schemaUnion.ts +8 -4
  141. package/src/tools/exports.ts +3 -14
  142. package/src/tools/implementation/createContext.ts +9 -9
  143. package/src/tools/implementation/invites.ts +2 -2
  144. package/src/tools/implementation/schemaUtils.ts +18 -0
  145. package/src/tools/implementation/zodSchema/coExport.ts +14 -0
  146. package/src/tools/implementation/zodSchema/runtimeConverters/coValueSchemaTransformation.ts +156 -0
  147. package/src/tools/implementation/zodSchema/runtimeConverters/schemaFieldToCoFieldDef.ts +149 -0
  148. package/src/tools/implementation/zodSchema/schemaTypes/AccountSchema.ts +36 -17
  149. package/src/tools/implementation/zodSchema/schemaTypes/CoDiscriminatedUnionSchema.ts +101 -52
  150. package/src/tools/implementation/zodSchema/schemaTypes/CoFeedSchema.ts +54 -50
  151. package/src/tools/implementation/zodSchema/schemaTypes/CoListSchema.ts +54 -46
  152. package/src/tools/implementation/zodSchema/schemaTypes/CoMapSchema.ts +190 -161
  153. package/src/tools/implementation/zodSchema/schemaTypes/CoOptionalSchema.ts +29 -27
  154. package/src/tools/implementation/zodSchema/schemaTypes/CoRecordSchema.ts +28 -18
  155. package/src/tools/implementation/zodSchema/schemaTypes/CoValueSchema.ts +18 -0
  156. package/src/tools/implementation/zodSchema/schemaTypes/FileStreamSchema.ts +45 -36
  157. package/src/tools/implementation/zodSchema/schemaTypes/PlainTextSchema.ts +47 -35
  158. package/src/tools/implementation/zodSchema/schemaTypes/RichTextSchema.ts +43 -30
  159. package/src/tools/implementation/zodSchema/typeConverters/CoFieldInit.ts +13 -0
  160. package/src/tools/implementation/zodSchema/typeConverters/InstanceOfSchema.ts +30 -26
  161. package/src/tools/implementation/zodSchema/typeConverters/InstanceOfSchemaCoValuesNullable.ts +31 -28
  162. package/src/tools/implementation/zodSchema/typeConverters/InstanceOrPrimitiveOfSchema.ts +89 -80
  163. package/src/tools/implementation/zodSchema/typeConverters/InstanceOrPrimitiveOfSchemaCoValuesNullable.ts +95 -84
  164. package/src/tools/implementation/zodSchema/unionUtils.ts +47 -51
  165. package/src/tools/implementation/zodSchema/zodCo.ts +43 -76
  166. package/src/tools/implementation/zodSchema/zodReExport.ts +44 -24
  167. package/src/tools/implementation/zodSchema/zodSchema.ts +65 -103
  168. package/src/tools/internal.ts +3 -2
  169. package/src/tools/lib/utilityTypes.ts +16 -0
  170. package/src/tools/subscribe/utils.ts +4 -2
  171. package/src/tools/testing.ts +4 -4
  172. package/src/tools/tests/ContextManager.test.ts +8 -9
  173. package/src/tools/tests/account.test.ts +65 -3
  174. package/src/tools/tests/coDiscriminatedUnion.test-d.ts +38 -0
  175. package/src/tools/tests/coDiscriminatedUnion.test.ts +219 -1
  176. package/src/tools/tests/coFeed.test-d.ts +4 -3
  177. package/src/tools/tests/coFeed.test.ts +8 -6
  178. package/src/tools/tests/coList.test-d.ts +32 -3
  179. package/src/tools/tests/coList.test.ts +30 -2
  180. package/src/tools/tests/coMap.record.test-d.ts +31 -3
  181. package/src/tools/tests/coMap.record.test.ts +18 -9
  182. package/src/tools/tests/coMap.test-d.ts +36 -8
  183. package/src/tools/tests/coMap.test.ts +87 -6
  184. package/src/tools/tests/coOptional.test.ts +63 -1
  185. package/src/tools/tests/createContext.test.ts +7 -9
  186. package/src/tools/tests/deepLoading.test.ts +4 -10
  187. package/src/tools/tests/exportImport.test.ts +2 -2
  188. package/src/tools/tests/groupsAndAccounts.test.ts +5 -4
  189. package/src/tools/tests/inbox.test.ts +3 -2
  190. package/src/tools/tests/load.test.ts +3 -29
  191. package/src/tools/tests/schemaUnion.test.ts +2 -2
  192. package/src/tools/tests/subscribe.test.ts +22 -114
  193. package/src/tools/tests/testing.test.ts +6 -6
  194. package/src/tools/tests/zod.test-d.ts +27 -0
  195. package/src/tools/tests/zod.test.ts +88 -45
  196. package/src/worker/index.ts +0 -1
  197. package/dist/chunk-OSVAAVWQ.js.map +0 -1
  198. package/dist/tools/implementation/zodSchema/runtimeConverters/zodFieldToCoFieldDef.d.ts +0 -12
  199. package/dist/tools/implementation/zodSchema/runtimeConverters/zodFieldToCoFieldDef.d.ts.map +0 -1
  200. package/dist/tools/implementation/zodSchema/runtimeConverters/zodSchemaToCoSchema.d.ts +0 -9
  201. package/dist/tools/implementation/zodSchema/runtimeConverters/zodSchemaToCoSchema.d.ts.map +0 -1
  202. package/src/tools/implementation/zodSchema/runtimeConverters/zodFieldToCoFieldDef.ts +0 -172
  203. package/src/tools/implementation/zodSchema/runtimeConverters/zodSchemaToCoSchema.ts +0 -218
@@ -1,36 +1,43 @@
1
1
  import {
2
2
  Account,
3
+ AnyZodOrCoValueSchema,
3
4
  CoFeed,
4
5
  Group,
5
6
  RefsToResolve,
6
7
  RefsToResolveStrict,
7
8
  Resolved,
9
+ Simplify,
8
10
  SubscribeListenerOptions,
11
+ coOptionalDefiner,
9
12
  } from "../../../internal.js";
10
13
  import { AnonymousJazzAgent } from "../../anonymousJazzAgent.js";
11
- import { InstanceOfSchema } from "../typeConverters/InstanceOfSchema.js";
14
+ import { CoFieldInit } from "../typeConverters/CoFieldInit.js";
12
15
  import { InstanceOrPrimitiveOfSchema } from "../typeConverters/InstanceOrPrimitiveOfSchema.js";
13
16
  import { InstanceOrPrimitiveOfSchemaCoValuesNullable } from "../typeConverters/InstanceOrPrimitiveOfSchemaCoValuesNullable.js";
14
- import { z } from "../zodReExport.js";
17
+ import { CoOptionalSchema } from "./CoOptionalSchema.js";
18
+ import { CoreCoValueSchema } from "./CoValueSchema.js";
15
19
 
16
- type CoFeedInit<T extends z.core.$ZodType> = Array<
17
- T extends z.core.$ZodOptional<any>
18
- ? InstanceOrPrimitiveOfSchemaCoValuesNullable<T>
19
- : NonNullable<InstanceOrPrimitiveOfSchemaCoValuesNullable<T>>
20
+ type CoFeedInit<T extends AnyZodOrCoValueSchema> = Simplify<
21
+ Array<CoFieldInit<T>>
20
22
  >;
21
23
 
22
- export type CoFeedSchema<T extends z.core.$ZodType> = z.core.$ZodCustom<
23
- CoFeed<InstanceOfSchema<T>>,
24
- unknown
25
- > & {
26
- collaborative: true;
27
- builtin: "CoFeed";
28
- element: T;
24
+ export class CoFeedSchema<T extends AnyZodOrCoValueSchema>
25
+ implements CoreCoFeedSchema<T>
26
+ {
27
+ collaborative = true as const;
28
+ builtin = "CoFeed" as const;
29
+
30
+ constructor(
31
+ public element: T,
32
+ private coValueClass: typeof CoFeed,
33
+ ) {}
29
34
 
30
35
  create(
31
36
  init: CoFeedInit<T>,
32
37
  options?: { owner: Account | Group } | Account | Group,
33
- ): CoFeedInstance<T>;
38
+ ): CoFeedInstance<T> {
39
+ return this.coValueClass.create(init, options) as CoFeedInstance<T>;
40
+ }
34
41
 
35
42
  load<const R extends RefsToResolve<CoFeedInstanceCoValuesNullable<T>> = true>(
36
43
  id: string,
@@ -38,7 +45,10 @@ export type CoFeedSchema<T extends z.core.$ZodType> = z.core.$ZodCustom<
38
45
  resolve?: RefsToResolveStrict<CoFeedInstanceCoValuesNullable<T>, R>;
39
46
  loadAs?: Account | AnonymousJazzAgent;
40
47
  },
41
- ): Promise<Resolved<CoFeedInstanceCoValuesNullable<T>, R> | null>;
48
+ ): Promise<Resolved<CoFeedInstanceCoValuesNullable<T>, R> | null> {
49
+ // @ts-expect-error
50
+ return this.coValueClass.load(id, options);
51
+ }
42
52
 
43
53
  subscribe(
44
54
  id: string,
@@ -57,47 +67,41 @@ export type CoFeedSchema<T extends z.core.$ZodType> = z.core.$ZodCustom<
57
67
  unsubscribe: () => void,
58
68
  ) => void,
59
69
  ): () => void;
70
+ subscribe(...args: [any, ...any[]]) {
71
+ // @ts-expect-error
72
+ return this.coValueClass.subscribe(...args);
73
+ }
60
74
 
61
- getCoValueClass: () => typeof CoFeed;
62
- };
75
+ getCoValueClass(): typeof CoFeed {
76
+ return this.coValueClass;
77
+ }
63
78
 
64
- export function enrichCoFeedSchema<T extends z.core.$ZodType>(
65
- schema: AnyCoFeedSchema<T>,
66
- coValueClass: typeof CoFeed,
67
- ): CoFeedSchema<T> {
68
- return Object.assign(schema, {
69
- create: (...args: [any, ...any[]]) => {
70
- return coValueClass.create(...args);
71
- },
72
- load: (...args: [any, ...any[]]) => {
73
- // @ts-expect-error
74
- return coValueClass.load(...args);
75
- },
76
- subscribe: (...args: [any, ...any[]]) => {
77
- // @ts-expect-error
78
- return coValueClass.subscribe(...args);
79
- },
80
- withHelpers: (helpers: (Self: z.core.$ZodType) => object) => {
81
- return Object.assign(schema, helpers(schema));
82
- },
83
- getCoValueClass: () => {
84
- return coValueClass;
85
- },
86
- }) as unknown as CoFeedSchema<T>;
79
+ optional(): CoOptionalSchema<this> {
80
+ return coOptionalDefiner(this);
81
+ }
87
82
  }
88
83
 
89
- // less precise version to avoid circularity issues and allow matching against
90
- export type AnyCoFeedSchema<T extends z.core.$ZodType = z.core.$ZodType> =
91
- z.core.$ZodCustom<any, unknown> & {
92
- collaborative: true;
93
- builtin: "CoFeed";
94
- element: T;
84
+ export function createCoreCoFeedSchema<T extends AnyZodOrCoValueSchema>(
85
+ element: T,
86
+ ): CoreCoFeedSchema<T> {
87
+ return {
88
+ collaborative: true as const,
89
+ builtin: "CoFeed" as const,
90
+ element,
95
91
  };
92
+ }
93
+
94
+ // less precise version to avoid circularity issues and allow matching against
95
+ export interface CoreCoFeedSchema<
96
+ T extends AnyZodOrCoValueSchema = AnyZodOrCoValueSchema,
97
+ > extends CoreCoValueSchema {
98
+ builtin: "CoFeed";
99
+ element: T;
100
+ }
96
101
 
97
- export type CoFeedInstance<T extends z.core.$ZodType> = CoFeed<
102
+ export type CoFeedInstance<T extends AnyZodOrCoValueSchema> = CoFeed<
98
103
  InstanceOrPrimitiveOfSchema<T>
99
104
  >;
100
105
 
101
- export type CoFeedInstanceCoValuesNullable<T extends z.core.$ZodType> = CoFeed<
102
- InstanceOrPrimitiveOfSchemaCoValuesNullable<T>
103
- >;
106
+ export type CoFeedInstanceCoValuesNullable<T extends AnyZodOrCoValueSchema> =
107
+ CoFeed<InstanceOrPrimitiveOfSchemaCoValuesNullable<T>>;
@@ -5,25 +5,39 @@ import {
5
5
  RefsToResolve,
6
6
  RefsToResolveStrict,
7
7
  Resolved,
8
+ Simplify,
8
9
  SubscribeListenerOptions,
10
+ coOptionalDefiner,
9
11
  } from "../../../internal.js";
10
12
  import { AnonymousJazzAgent } from "../../anonymousJazzAgent.js";
13
+ import { CoFieldInit } from "../typeConverters/CoFieldInit.js";
11
14
  import { InstanceOrPrimitiveOfSchema } from "../typeConverters/InstanceOrPrimitiveOfSchema.js";
12
15
  import { InstanceOrPrimitiveOfSchemaCoValuesNullable } from "../typeConverters/InstanceOrPrimitiveOfSchemaCoValuesNullable.js";
13
- import { z } from "../zodReExport.js";
14
- import { WithHelpers } from "../zodSchema.js";
16
+ import { AnyZodOrCoValueSchema } from "../zodSchema.js";
17
+ import { CoOptionalSchema } from "./CoOptionalSchema.js";
18
+ import { CoreCoValueSchema } from "./CoValueSchema.js";
15
19
 
16
- type CoListInit<T extends z.core.$ZodType> = Array<
17
- T extends z.core.$ZodOptional<any>
18
- ? InstanceOrPrimitiveOfSchemaCoValuesNullable<T>
19
- : NonNullable<InstanceOrPrimitiveOfSchemaCoValuesNullable<T>>
20
+ type CoListInit<T extends AnyZodOrCoValueSchema> = Simplify<
21
+ Array<CoFieldInit<T>>
20
22
  >;
21
23
 
22
- export type CoListSchema<T extends z.core.$ZodType> = AnyCoListSchema<T> & {
23
- create: (
24
+ export class CoListSchema<T extends AnyZodOrCoValueSchema>
25
+ implements CoreCoListSchema<T>
26
+ {
27
+ collaborative = true as const;
28
+ builtin = "CoList" as const;
29
+
30
+ constructor(
31
+ public element: T,
32
+ private coValueClass: typeof CoList,
33
+ ) {}
34
+
35
+ create(
24
36
  items: CoListInit<T>,
25
37
  options?: { owner: Account | Group } | Account | Group,
26
- ) => CoList<InstanceOrPrimitiveOfSchema<T>>;
38
+ ): CoListInstance<T> {
39
+ return this.coValueClass.create(items, options) as CoListInstance<T>;
40
+ }
27
41
 
28
42
  load<const R extends RefsToResolve<CoListInstanceCoValuesNullable<T>> = true>(
29
43
  id: string,
@@ -31,7 +45,10 @@ export type CoListSchema<T extends z.core.$ZodType> = AnyCoListSchema<T> & {
31
45
  resolve?: RefsToResolveStrict<CoListInstanceCoValuesNullable<T>, R>;
32
46
  loadAs?: Account | AnonymousJazzAgent;
33
47
  },
34
- ): Promise<Resolved<CoListInstanceCoValuesNullable<T>, R> | null>;
48
+ ): Promise<Resolved<CoListInstanceCoValuesNullable<T>, R> | null> {
49
+ // @ts-expect-error
50
+ return this.coValueClass.load(id, options);
51
+ }
35
52
 
36
53
  subscribe<
37
54
  const R extends RefsToResolve<CoListInstanceCoValuesNullable<T>> = true,
@@ -42,49 +59,40 @@ export type CoListSchema<T extends z.core.$ZodType> = AnyCoListSchema<T> & {
42
59
  value: Resolved<CoListInstanceCoValuesNullable<T>, R>,
43
60
  unsubscribe: () => void,
44
61
  ) => void,
45
- ): () => void;
62
+ ): () => void {
63
+ return this.coValueClass.subscribe(id, options, listener);
64
+ }
46
65
 
47
- /** @deprecated Define your helper methods separately, in standalone functions. */
48
- withHelpers<S extends z.core.$ZodType, T extends object>(
49
- this: S,
50
- helpers: (Self: S) => T,
51
- ): WithHelpers<S, T>;
66
+ getCoValueClass(): typeof CoList {
67
+ return this.coValueClass;
68
+ }
52
69
 
53
- getCoValueClass: () => typeof CoList;
54
- };
70
+ optional(): CoOptionalSchema<this> {
71
+ return coOptionalDefiner(this);
72
+ }
73
+ }
55
74
 
56
- export function enrichCoListSchema<T extends z.core.$ZodType>(
57
- schema: AnyCoListSchema<T>,
58
- coValueClass: typeof CoList,
59
- ): CoListSchema<T> {
60
- return Object.assign(schema, {
61
- create: (...args: [any, ...any[]]) => {
62
- return coValueClass.create(...args);
63
- },
64
- load: (...args: [any, ...any[]]) => {
65
- return coValueClass.load(...args);
66
- },
67
- subscribe: (...args: [any, ...any[]]) => {
68
- // @ts-expect-error
69
- return coValueClass.subscribe(...args);
70
- },
71
- withHelpers: (helpers: (Self: z.core.$ZodType) => object) => {
72
- return Object.assign(schema, helpers(schema));
73
- },
74
- getCoValueClass: () => {
75
- return coValueClass;
76
- },
77
- }) as unknown as CoListSchema<T>;
75
+ export function createCoreCoListSchema<T extends AnyZodOrCoValueSchema>(
76
+ element: T,
77
+ ): CoreCoListSchema<T> {
78
+ return {
79
+ collaborative: true as const,
80
+ builtin: "CoList" as const,
81
+ element,
82
+ };
78
83
  }
79
84
 
80
85
  // less precise version to avoid circularity issues and allow matching against
81
- export type AnyCoListSchema<T extends z.core.$ZodType = z.core.$ZodType> =
82
- z.core.$ZodArray<T> & { collaborative: true };
86
+ export interface CoreCoListSchema<
87
+ T extends AnyZodOrCoValueSchema = AnyZodOrCoValueSchema,
88
+ > extends CoreCoValueSchema {
89
+ builtin: "CoList";
90
+ element: T;
91
+ }
83
92
 
84
- export type CoListInstance<T extends z.core.$ZodType> = CoList<
93
+ export type CoListInstance<T extends AnyZodOrCoValueSchema> = CoList<
85
94
  InstanceOrPrimitiveOfSchema<T>
86
95
  >;
87
96
 
88
- export type CoListInstanceCoValuesNullable<T extends z.core.$ZodType> = CoList<
89
- InstanceOrPrimitiveOfSchemaCoValuesNullable<T>
90
- >;
97
+ export type CoListInstanceCoValuesNullable<T extends AnyZodOrCoValueSchema> =
98
+ CoList<InstanceOrPrimitiveOfSchemaCoValuesNullable<T>>;