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,34 +1,61 @@
1
1
  import {
2
2
  Account,
3
3
  AnonymousJazzAgent,
4
- AnyCoSchema,
4
+ InstanceOfSchema,
5
5
  InstanceOrPrimitiveOfSchemaCoValuesNullable,
6
- RefsToResolve,
7
- RefsToResolveStrict,
8
6
  Resolved,
9
7
  SchemaUnion,
8
+ SchemaUnionConcreteSubclass,
10
9
  SubscribeListenerOptions,
10
+ coOptionalDefiner,
11
11
  } from "../../../internal.js";
12
12
  import { z } from "../zodReExport.js";
13
+ import { CoOptionalSchema } from "./CoOptionalSchema.js";
14
+ import { CoreCoValueSchema } from "./CoValueSchema.js";
13
15
 
14
- export type AnyDiscriminableCoSchema = AnyCoSchema &
15
- z.core.$ZodTypeDiscriminable;
16
+ export interface DiscriminableCoValueSchemaDefinition {
17
+ discriminatorMap: z.core.$ZodDiscriminatedUnionInternals["propValues"];
18
+ }
19
+
20
+ export interface DiscriminableCoreCoValueSchema extends CoreCoValueSchema {
21
+ getDefinition: () => DiscriminableCoValueSchemaDefinition;
22
+ }
23
+
24
+ export interface CoDiscriminatedUnionSchemaDefinition<
25
+ Options extends DiscriminableCoValueSchemas,
26
+ > extends DiscriminableCoValueSchemaDefinition {
27
+ discriminator: string;
28
+ options: Options;
29
+ }
30
+
31
+ export type DiscriminableCoValueSchemas = [
32
+ DiscriminableCoreCoValueSchema,
33
+ ...DiscriminableCoreCoValueSchema[],
34
+ ];
35
+
36
+ export interface CoreCoDiscriminatedUnionSchema<
37
+ Options extends DiscriminableCoValueSchemas = DiscriminableCoValueSchemas,
38
+ > extends DiscriminableCoreCoValueSchema {
39
+ builtin: "CoDiscriminatedUnion";
40
+ getDefinition: () => CoDiscriminatedUnionSchemaDefinition<Options>;
41
+ }
42
+ export class CoDiscriminatedUnionSchema<
43
+ Options extends DiscriminableCoValueSchemas,
44
+ > implements CoreCoDiscriminatedUnionSchema<Options>
45
+ {
46
+ readonly collaborative = true as const;
47
+ readonly builtin = "CoDiscriminatedUnion" as const;
48
+ readonly getDefinition: () => CoDiscriminatedUnionSchemaDefinition<Options>;
16
49
 
17
- export type AnyCoDiscriminatedUnionSchema<
18
- Types extends readonly [
19
- AnyDiscriminableCoSchema,
20
- ...AnyDiscriminableCoSchema[],
21
- ],
22
- > = z.ZodDiscriminatedUnion<Types> & {
23
- collaborative: true;
24
- };
50
+ constructor(
51
+ coreSchema: CoreCoDiscriminatedUnionSchema<Options>,
52
+ private coValueClass: SchemaUnionConcreteSubclass<
53
+ InstanceOfSchema<Options[number]>
54
+ >,
55
+ ) {
56
+ this.getDefinition = coreSchema.getDefinition;
57
+ }
25
58
 
26
- export type CoDiscriminatedUnionSchema<
27
- Types extends readonly [
28
- AnyDiscriminableCoSchema,
29
- ...AnyDiscriminableCoSchema[],
30
- ],
31
- > = AnyCoDiscriminatedUnionSchema<Types> & {
32
59
  load(
33
60
  id: string,
34
61
  options?: {
@@ -36,55 +63,77 @@ export type CoDiscriminatedUnionSchema<
36
63
  skipRetry?: boolean;
37
64
  },
38
65
  ): Promise<Resolved<
39
- CoDiscriminatedUnionInstanceCoValuesNullable<Types> & SchemaUnion,
66
+ CoDiscriminatedUnionInstanceCoValuesNullable<Options> & SchemaUnion,
40
67
  true
41
- > | null>;
68
+ > | null> {
69
+ return this.coValueClass.load(id, options) as any;
70
+ }
42
71
 
43
72
  subscribe(
44
73
  id: string,
45
74
  options: SubscribeListenerOptions<
46
- CoDiscriminatedUnionInstanceCoValuesNullable<Types> & SchemaUnion,
75
+ CoDiscriminatedUnionInstanceCoValuesNullable<Options> & SchemaUnion,
47
76
  true
48
77
  >,
49
78
  listener: (
50
79
  value: Resolved<
51
- CoDiscriminatedUnionInstanceCoValuesNullable<Types> & SchemaUnion,
80
+ CoDiscriminatedUnionInstanceCoValuesNullable<Options> & SchemaUnion,
52
81
  true
53
82
  >,
54
83
  unsubscribe: () => void,
55
84
  ) => void,
56
- ): () => void;
85
+ ): () => void {
86
+ // @ts-expect-error
87
+ return this.coValueClass.subscribe(id, options, listener);
88
+ }
57
89
 
58
- getCoValueClass: () => typeof SchemaUnion;
59
- };
90
+ getCoValueClass(): SchemaUnionConcreteSubclass<
91
+ InstanceOfSchema<Options[number]>
92
+ > {
93
+ return this.coValueClass;
94
+ }
95
+
96
+ optional(): CoOptionalSchema<this> {
97
+ return coOptionalDefiner(this);
98
+ }
99
+ }
60
100
 
61
- export function enrichCoDiscriminatedUnionSchema<
62
- Types extends readonly [
63
- AnyDiscriminableCoSchema,
64
- ...AnyDiscriminableCoSchema[],
65
- ],
101
+ export function createCoreCoDiscriminatedUnionSchema<
102
+ Options extends DiscriminableCoValueSchemas,
66
103
  >(
67
- schema: z.ZodDiscriminatedUnion<Types>,
68
- coValueClass: typeof SchemaUnion,
69
- ): CoDiscriminatedUnionSchema<Types> {
70
- return Object.assign(schema, {
71
- load: (...args: [any, ...any]) => {
72
- // @ts-expect-error
73
- return coValueClass.load(...args);
74
- },
75
- subscribe: (...args: [any, ...any[]]) => {
76
- // @ts-expect-error
77
- return coValueClass.subscribe(...args);
78
- },
79
- getCoValueClass: () => {
80
- return coValueClass;
81
- },
82
- }) as unknown as CoDiscriminatedUnionSchema<Types>;
104
+ discriminator: string,
105
+ schemas: Options,
106
+ ): CoreCoDiscriminatedUnionSchema<Options> {
107
+ return {
108
+ collaborative: true as const,
109
+ builtin: "CoDiscriminatedUnion" as const,
110
+ getDefinition: () => ({
111
+ discriminator,
112
+ get discriminatorMap() {
113
+ const propValues: DiscriminableCoValueSchemaDefinition["discriminatorMap"] =
114
+ {};
115
+ for (const option of schemas) {
116
+ const dm = option.getDefinition().discriminatorMap;
117
+ if (!dm || Object.keys(dm).length === 0)
118
+ throw new Error(
119
+ `Invalid discriminated union option at index "${schemas.indexOf(option)}"`,
120
+ );
121
+ for (const [k, v] of Object.entries(dm)) {
122
+ propValues[k] ??= new Set();
123
+ for (const val of v) {
124
+ propValues[k].add(val);
125
+ }
126
+ }
127
+ }
128
+ return propValues;
129
+ },
130
+ get options() {
131
+ return schemas;
132
+ },
133
+ }),
134
+ };
83
135
  }
84
136
 
85
137
  type CoDiscriminatedUnionInstanceCoValuesNullable<
86
- Types extends readonly [
87
- AnyDiscriminableCoSchema,
88
- ...AnyDiscriminableCoSchema[],
89
- ],
90
- > = NonNullable<InstanceOrPrimitiveOfSchemaCoValuesNullable<Types[number]>>;
138
+ Options extends DiscriminableCoValueSchemas,
139
+ > = NonNullable<InstanceOrPrimitiveOfSchemaCoValuesNullable<Options[number]>>;
@@ -1,36 +1,43 @@
1
1
  import {
2
2
  Account,
3
+ AnyZodOrCoValueSchema,
3
4
  CoFeed,
4
5
  Group,
6
+ NotNull,
5
7
  RefsToResolve,
6
8
  RefsToResolveStrict,
7
9
  Resolved,
10
+ Simplify,
8
11
  SubscribeListenerOptions,
12
+ coOptionalDefiner,
9
13
  } from "../../../internal.js";
10
14
  import { AnonymousJazzAgent } from "../../anonymousJazzAgent.js";
11
- import { InstanceOfSchema } from "../typeConverters/InstanceOfSchema.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<NotNull<InstanceOrPrimitiveOfSchemaCoValuesNullable<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>>;
@@ -2,28 +2,42 @@ import {
2
2
  Account,
3
3
  CoList,
4
4
  Group,
5
+ NotNull,
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
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<NotNull<InstanceOrPrimitiveOfSchemaCoValuesNullable<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>>;