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 CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "convex-helpers",
3
- "version": "0.1.62",
3
+ "version": "0.1.63",
4
4
  "description": "A collection of useful code to complement the official convex package.",
5
5
  "type": "module",
6
6
  "bin": {
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.ZodReadonly<infer Inner> ? ConvexValidatorFromZod<Inner> : Z extends z.ZodPipeline<infer Inner, any> ? ConvexValidatorFromZod<Inner> : never;
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()`
@@ -1 +1 @@
1
- {"version":3,"file":"zod.d.ts","sourceRoot":"","sources":["zod.ts"],"names":[],"mappings":"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"}
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":
@@ -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.ZodReadonly<
587
- infer Inner
587
+ : Z extends z.ZodRecord<
588
+ infer K,
589
+ infer V
588
590
  >
589
- ? ConvexValidatorFromZod<Inner>
590
- : Z extends z.ZodPipeline<
591
- infer Inner,
592
- any
593
- > // Validate input type
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
- : // Some that are a bit unknown
596
- // : Z extends z.ZodDate ? Validator<number>
597
- // : Z extends z.ZodSymbol ? Validator<symbol>
598
- // : Z extends z.ZodNever ? Validator<never>
599
- // : Z extends z.ZodIntersection<infer T, infer U>
600
- // ? Validator<
601
- // ConvexValidatorFromZodValidator<T>["type"] &
602
- // ConvexValidatorFromZodValidator<U>["type"],
603
- // "required",
604
- // ConvexValidatorFromZodValidator<T>["fieldPaths"] |
605
- // ConvexValidatorFromZodValidator<U>["fieldPaths"]
606
- // >
607
- // Is arraybuffer a thing?
608
- // Z extends z.??? ? Validator<ArrayBuffer> :
609
- // If/when Convex supports Record:
610
- // Z extends z.ZodRecord<infer K, infer V> ? RecordValidator<ConvexValidatorFromZodValidator<K>["type"], ConvexValidatorFromZodValidator<V>["type"]> :
611
- // Note: we don't handle z.undefined() in union, nullable, etc.
612
- // ? Validator<any, "required", string>
613
- // We avoid doing this catch-all to avoid over-promising on types
614
- // : Z extends z.ZodTypeAny
615
- never;
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":