convex-helpers 0.1.62 → 0.1.63
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.
- package/package.json +1 -1
- package/server/zod.d.ts +6 -2
- package/server/zod.d.ts.map +1 -1
- package/server/zod.js +12 -1
- package/server/zod.test.ts +32 -0
- package/server/zod.ts +75 -29
package/package.json
CHANGED
package/server/zod.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ZodTypeDef, z } from "zod";
|
|
2
|
-
import { GenericId, ObjectType, PropertyValidators, VArray, VAny, VString, VId, VUnion, VFloat64, VInt64, VBoolean, VNull, VLiteral, GenericValidator, VOptional, VObject, Validator } from "convex/values";
|
|
2
|
+
import { GenericId, ObjectType, PropertyValidators, VArray, VAny, VString, VId, VUnion, VFloat64, VInt64, VBoolean, VNull, VLiteral, GenericValidator, VOptional, VObject, Validator, VRecord } from "convex/values";
|
|
3
3
|
import { FunctionVisibility, GenericDataModel, GenericActionCtx, GenericQueryCtx, MutationBuilder, QueryBuilder, GenericMutationCtx, ActionBuilder, TableNamesInDataModel, DefaultFunctionArgs, ArgsArrayToObject } from "convex/server";
|
|
4
4
|
import { Mod, Registration } from "./customFunctions.js";
|
|
5
5
|
export type ZodValidator = Record<string, z.ZodTypeAny>;
|
|
@@ -225,7 +225,11 @@ type ConvexValidatorFromZod<Z extends z.ZodTypeAny> = Z extends Zid<infer TableN
|
|
|
225
225
|
], "required", ConvexValidatorFromZod<Inner>["fieldPaths"]> : ConvexValidatorFromZod<Inner> extends Validator<infer T, "optional", infer F> ? VUnion<null | Exclude<ConvexValidatorFromZod<Inner>["type"], undefined>, [
|
|
226
226
|
Validator<T, "required", F>,
|
|
227
227
|
VNull
|
|
228
|
-
], "optional", ConvexValidatorFromZod<Inner>["fieldPaths"]> : never : Z extends z.ZodBranded<infer Inner, any> ? ConvexValidatorFromZod<Inner> : Z extends z.ZodDefault<infer Inner> ? ConvexValidatorFromZod<Inner> extends GenericValidator ? VOptional<ConvexValidatorFromZod<Inner>> : never : Z extends z.
|
|
228
|
+
], "optional", ConvexValidatorFromZod<Inner>["fieldPaths"]> : never : Z extends z.ZodBranded<infer Inner, any> ? ConvexValidatorFromZod<Inner> : Z extends z.ZodDefault<infer Inner> ? ConvexValidatorFromZod<Inner> extends GenericValidator ? VOptional<ConvexValidatorFromZod<Inner>> : never : Z extends z.ZodRecord<infer K, infer V> ? K extends z.ZodString | Zid<string> | z.ZodUnion<[
|
|
229
|
+
(z.ZodString | Zid<string>),
|
|
230
|
+
(z.ZodString | Zid<string>),
|
|
231
|
+
...(z.ZodString | Zid<string>)[]
|
|
232
|
+
]> ? VRecord<z.RecordType<ConvexValidatorFromZod<K>["type"], ConvexValidatorFromZod<V>["type"]>, ConvexValidatorFromZod<K>, ConvexValidatorFromZod<V>> : never : Z extends z.ZodReadonly<infer Inner> ? ConvexValidatorFromZod<Inner> : Z extends z.ZodPipeline<infer Inner, any> ? ConvexValidatorFromZod<Inner> : never;
|
|
229
233
|
/**
|
|
230
234
|
* Turn a Zod validator into a Convex Validator.
|
|
231
235
|
* @param zod Zod validator can be a Zod object, or a Zod type like `z.string()`
|
package/server/zod.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"zod.d.ts","sourceRoot":"","sources":["zod.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,UAAU,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAC3D,OAAO,EAGL,SAAS,EACT,UAAU,EACV,kBAAkB,EAElB,MAAM,EACN,IAAI,EACJ,OAAO,EACP,GAAG,EACH,MAAM,EACN,QAAQ,EACR,MAAM,EACN,QAAQ,EACR,KAAK,EACL,QAAQ,EACR,gBAAgB,EAChB,SAAS,EACT,OAAO,EACP,SAAS,
|
|
1
|
+
{"version":3,"file":"zod.d.ts","sourceRoot":"","sources":["zod.ts"],"names":[],"mappings":"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"}
|
package/server/zod.js
CHANGED
|
@@ -294,6 +294,18 @@ export function zodToConvex(zod) {
|
|
|
294
294
|
return withDefault;
|
|
295
295
|
}
|
|
296
296
|
return v.optional(withDefault);
|
|
297
|
+
case "ZodRecord":
|
|
298
|
+
const keyType = zodToConvex(zod._def.keyType);
|
|
299
|
+
function ensureStringOrId(v) {
|
|
300
|
+
if (v.kind === "union") {
|
|
301
|
+
v.members.map(ensureStringOrId);
|
|
302
|
+
}
|
|
303
|
+
else if (v.kind !== "string" && v.kind !== "id") {
|
|
304
|
+
throw new Error("Record keys must be strings or ids: " + v.kind);
|
|
305
|
+
}
|
|
306
|
+
}
|
|
307
|
+
ensureStringOrId(keyType);
|
|
308
|
+
return v.record(keyType, zodToConvex(zod._def.valueType));
|
|
297
309
|
case "ZodReadonly":
|
|
298
310
|
return zodToConvex(zod._def.innerType);
|
|
299
311
|
case "ZodPipeline":
|
|
@@ -307,7 +319,6 @@ export function zodToConvex(zod) {
|
|
|
307
319
|
// case "ZodNever":
|
|
308
320
|
// case "ZodVoid":
|
|
309
321
|
// case "ZodIntersection":
|
|
310
|
-
// case "ZodRecord":
|
|
311
322
|
// case "ZodMap":
|
|
312
323
|
// case "ZodSet":
|
|
313
324
|
// case "ZodFunction":
|
package/server/zod.test.ts
CHANGED
|
@@ -37,6 +37,10 @@ export const kitchenSinkValidator = {
|
|
|
37
37
|
array: z.array(z.string()),
|
|
38
38
|
object: z.object({ a: z.string(), b: z.number() }),
|
|
39
39
|
objectWithOptional: z.object({ a: z.string(), b: z.number().optional() }),
|
|
40
|
+
record: z.record(
|
|
41
|
+
z.union([z.string(), zid("users")]),
|
|
42
|
+
z.union([z.number(), z.string()]),
|
|
43
|
+
),
|
|
40
44
|
union: z.union([z.string(), z.number()]),
|
|
41
45
|
discriminatedUnion: z.discriminatedUnion("kind", [
|
|
42
46
|
z.object({ kind: z.literal("a"), a: z.string() }),
|
|
@@ -303,6 +307,7 @@ test("zod kitchen sink", async () => {
|
|
|
303
307
|
array: ["1", "2"],
|
|
304
308
|
object: { a: "1", b: 2 },
|
|
305
309
|
objectWithOptional: { a: "1" },
|
|
310
|
+
record: { a: 1 },
|
|
306
311
|
union: 1,
|
|
307
312
|
discriminatedUnion: { kind: "a" as const, a: "1" },
|
|
308
313
|
literal: "hi" as const,
|
|
@@ -397,6 +402,16 @@ test("zod kitchen sink", async () => {
|
|
|
397
402
|
},
|
|
398
403
|
optional: false,
|
|
399
404
|
},
|
|
405
|
+
objectWithOptional: {
|
|
406
|
+
fieldType: {
|
|
407
|
+
type: "object",
|
|
408
|
+
value: {
|
|
409
|
+
a: { fieldType: { type: "string" }, optional: false },
|
|
410
|
+
b: { fieldType: { type: "number" }, optional: true },
|
|
411
|
+
},
|
|
412
|
+
},
|
|
413
|
+
optional: false,
|
|
414
|
+
},
|
|
400
415
|
optional: {
|
|
401
416
|
fieldType: {
|
|
402
417
|
type: "object",
|
|
@@ -418,6 +433,21 @@ test("zod kitchen sink", async () => {
|
|
|
418
433
|
},
|
|
419
434
|
optional: false,
|
|
420
435
|
},
|
|
436
|
+
record: {
|
|
437
|
+
fieldType: {
|
|
438
|
+
keys: {
|
|
439
|
+
type: "union",
|
|
440
|
+
value: [{ type: "string" }, { tableName: "users", type: "id" }],
|
|
441
|
+
},
|
|
442
|
+
type: "record",
|
|
443
|
+
values: {
|
|
444
|
+
fieldType: {
|
|
445
|
+
type: "union",
|
|
446
|
+
value: [{ type: "number" }, { type: "string" }],
|
|
447
|
+
},
|
|
448
|
+
},
|
|
449
|
+
},
|
|
450
|
+
},
|
|
421
451
|
tuple: {
|
|
422
452
|
fieldType: {
|
|
423
453
|
type: "array",
|
|
@@ -535,6 +565,7 @@ assert(
|
|
|
535
565
|
nan: z.nan(),
|
|
536
566
|
optional: z.number().optional(),
|
|
537
567
|
optional2: z.optional(z.number()),
|
|
568
|
+
record: z.record(z.string(), z.number()),
|
|
538
569
|
default: z.number().default(0),
|
|
539
570
|
nullable: z.number().nullable(),
|
|
540
571
|
null: z.null(),
|
|
@@ -549,6 +580,7 @@ assert(
|
|
|
549
580
|
nan: v.number(),
|
|
550
581
|
optional: v.optional(v.number()),
|
|
551
582
|
optional2: v.optional(v.number()),
|
|
583
|
+
record: v.record(v.string(), v.number()),
|
|
552
584
|
default: v.optional(v.number()),
|
|
553
585
|
nullable: v.union(v.number(), v.null()),
|
|
554
586
|
null: v.null(),
|
package/server/zod.ts
CHANGED
|
@@ -20,6 +20,7 @@ import {
|
|
|
20
20
|
VOptional,
|
|
21
21
|
VObject,
|
|
22
22
|
Validator,
|
|
23
|
+
VRecord,
|
|
23
24
|
} from "convex/values";
|
|
24
25
|
import {
|
|
25
26
|
FunctionVisibility,
|
|
@@ -583,36 +584,66 @@ type ConvexValidatorFromZod<Z extends z.ZodTypeAny> =
|
|
|
583
584
|
ConvexValidatorFromZod<Inner>
|
|
584
585
|
>
|
|
585
586
|
: never
|
|
586
|
-
: Z extends z.
|
|
587
|
-
infer
|
|
587
|
+
: Z extends z.ZodRecord<
|
|
588
|
+
infer K,
|
|
589
|
+
infer V
|
|
588
590
|
>
|
|
589
|
-
?
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
591
|
+
? K extends
|
|
592
|
+
| z.ZodString
|
|
593
|
+
| Zid<string>
|
|
594
|
+
| z.ZodUnion<
|
|
595
|
+
[
|
|
596
|
+
(
|
|
597
|
+
| z.ZodString
|
|
598
|
+
| Zid<string>
|
|
599
|
+
),
|
|
600
|
+
(
|
|
601
|
+
| z.ZodString
|
|
602
|
+
| Zid<string>
|
|
603
|
+
),
|
|
604
|
+
...(
|
|
605
|
+
| z.ZodString
|
|
606
|
+
| Zid<string>
|
|
607
|
+
)[],
|
|
608
|
+
]
|
|
609
|
+
>
|
|
610
|
+
? VRecord<
|
|
611
|
+
z.RecordType<
|
|
612
|
+
ConvexValidatorFromZod<K>["type"],
|
|
613
|
+
ConvexValidatorFromZod<V>["type"]
|
|
614
|
+
>,
|
|
615
|
+
ConvexValidatorFromZod<K>,
|
|
616
|
+
ConvexValidatorFromZod<V>
|
|
617
|
+
>
|
|
618
|
+
: never
|
|
619
|
+
: Z extends z.ZodReadonly<
|
|
620
|
+
infer Inner
|
|
621
|
+
>
|
|
594
622
|
? ConvexValidatorFromZod<Inner>
|
|
595
|
-
:
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
//
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
623
|
+
: Z extends z.ZodPipeline<
|
|
624
|
+
infer Inner,
|
|
625
|
+
any
|
|
626
|
+
> // Validate input type
|
|
627
|
+
? ConvexValidatorFromZod<Inner>
|
|
628
|
+
: // Some that are a bit unknown
|
|
629
|
+
// : Z extends z.ZodDate ? Validator<number>
|
|
630
|
+
// : Z extends z.ZodSymbol ? Validator<symbol>
|
|
631
|
+
// : Z extends z.ZodNever ? Validator<never>
|
|
632
|
+
// : Z extends z.ZodIntersection<infer T, infer U>
|
|
633
|
+
// ? Validator<
|
|
634
|
+
// ConvexValidatorFromZod<T>["type"] &
|
|
635
|
+
// ConvexValidatorFromZod<U>["type"],
|
|
636
|
+
// "required",
|
|
637
|
+
// ConvexValidatorFromZod<T>["fieldPaths"] |
|
|
638
|
+
// ConvexValidatorFromZod<U>["fieldPaths"]
|
|
639
|
+
// >
|
|
640
|
+
// Is arraybuffer a thing?
|
|
641
|
+
// Z extends z.??? ? Validator<ArrayBuffer> :
|
|
642
|
+
// Note: we don't handle z.undefined() in union, nullable, etc.
|
|
643
|
+
// ? Validator<any, "required", string>
|
|
644
|
+
// We avoid doing this catch-all to avoid over-promising on types
|
|
645
|
+
// : Z extends z.ZodTypeAny
|
|
646
|
+
never;
|
|
616
647
|
|
|
617
648
|
/**
|
|
618
649
|
* Turn a Zod validator into a Convex Validator.
|
|
@@ -700,6 +731,22 @@ export function zodToConvex<Z extends z.ZodTypeAny>(
|
|
|
700
731
|
return withDefault as ConvexValidatorFromZod<Z>;
|
|
701
732
|
}
|
|
702
733
|
return v.optional(withDefault) as ConvexValidatorFromZod<Z>;
|
|
734
|
+
case "ZodRecord":
|
|
735
|
+
const keyType = zodToConvex(
|
|
736
|
+
zod._def.keyType,
|
|
737
|
+
) as ConvexValidatorFromZod<Z>;
|
|
738
|
+
function ensureStringOrId(v: GenericValidator) {
|
|
739
|
+
if (v.kind === "union") {
|
|
740
|
+
v.members.map(ensureStringOrId);
|
|
741
|
+
} else if (v.kind !== "string" && v.kind !== "id") {
|
|
742
|
+
throw new Error("Record keys must be strings or ids: " + v.kind);
|
|
743
|
+
}
|
|
744
|
+
}
|
|
745
|
+
ensureStringOrId(keyType);
|
|
746
|
+
return v.record(
|
|
747
|
+
keyType,
|
|
748
|
+
zodToConvex(zod._def.valueType) as ConvexValidatorFromZod<Z>,
|
|
749
|
+
) as unknown as ConvexValidatorFromZod<Z>;
|
|
703
750
|
case "ZodReadonly":
|
|
704
751
|
return zodToConvex(zod._def.innerType) as ConvexValidatorFromZod<Z>;
|
|
705
752
|
case "ZodPipeline":
|
|
@@ -713,7 +760,6 @@ export function zodToConvex<Z extends z.ZodTypeAny>(
|
|
|
713
760
|
// case "ZodNever":
|
|
714
761
|
// case "ZodVoid":
|
|
715
762
|
// case "ZodIntersection":
|
|
716
|
-
// case "ZodRecord":
|
|
717
763
|
// case "ZodMap":
|
|
718
764
|
// case "ZodSet":
|
|
719
765
|
// case "ZodFunction":
|