zodvex 0.3.2 → 0.4.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 (62) hide show
  1. package/dist/__type-tests__/infer-returns.d.ts +2 -0
  2. package/dist/__type-tests__/infer-returns.d.ts.map +1 -0
  3. package/dist/__type-tests__/zodTable-inference.d.ts +2 -0
  4. package/dist/__type-tests__/zodTable-inference.d.ts.map +1 -0
  5. package/dist/builders.d.ts +173 -0
  6. package/dist/builders.d.ts.map +1 -0
  7. package/dist/codec.d.ts +11 -0
  8. package/dist/codec.d.ts.map +1 -0
  9. package/dist/custom.d.ts +142 -0
  10. package/dist/custom.d.ts.map +1 -0
  11. package/dist/ids.d.ts +23 -0
  12. package/dist/ids.d.ts.map +1 -0
  13. package/dist/index.d.ts +10 -599
  14. package/dist/index.d.ts.map +1 -0
  15. package/dist/index.js +27 -11
  16. package/dist/index.js.map +1 -1
  17. package/dist/mapping/core.d.ts +5 -0
  18. package/dist/mapping/core.d.ts.map +1 -0
  19. package/dist/mapping/handlers/enum.d.ts +4 -0
  20. package/dist/mapping/handlers/enum.d.ts.map +1 -0
  21. package/dist/mapping/handlers/index.d.ts +5 -0
  22. package/dist/mapping/handlers/index.d.ts.map +1 -0
  23. package/dist/mapping/handlers/nullable.d.ts +7 -0
  24. package/dist/mapping/handlers/nullable.d.ts.map +1 -0
  25. package/dist/mapping/handlers/record.d.ts +4 -0
  26. package/dist/mapping/handlers/record.d.ts.map +1 -0
  27. package/dist/mapping/handlers/union.d.ts +5 -0
  28. package/dist/mapping/handlers/union.d.ts.map +1 -0
  29. package/dist/mapping/index.d.ts +4 -0
  30. package/dist/mapping/index.d.ts.map +1 -0
  31. package/dist/mapping/types.d.ts +43 -0
  32. package/dist/mapping/types.d.ts.map +1 -0
  33. package/dist/mapping/utils.d.ts +6 -0
  34. package/dist/mapping/utils.d.ts.map +1 -0
  35. package/dist/registry.d.ts +110 -0
  36. package/dist/registry.d.ts.map +1 -0
  37. package/dist/tables.d.ts +122 -0
  38. package/dist/tables.d.ts.map +1 -0
  39. package/dist/transform/index.d.ts +26 -0
  40. package/dist/transform/index.d.ts.map +1 -0
  41. package/dist/transform/index.js +442 -0
  42. package/dist/transform/index.js.map +1 -0
  43. package/dist/transform/transform.d.ts +47 -0
  44. package/dist/transform/transform.d.ts.map +1 -0
  45. package/dist/transform/traverse.d.ts +62 -0
  46. package/dist/transform/traverse.d.ts.map +1 -0
  47. package/dist/transform/types.d.ts +115 -0
  48. package/dist/transform/types.d.ts.map +1 -0
  49. package/dist/types.d.ts +29 -0
  50. package/dist/types.d.ts.map +1 -0
  51. package/dist/utils.d.ts +39 -0
  52. package/dist/utils.d.ts.map +1 -0
  53. package/dist/wrappers.d.ts +22 -0
  54. package/dist/wrappers.d.ts.map +1 -0
  55. package/package.json +13 -6
  56. package/src/__type-tests__/infer-returns.ts +24 -0
  57. package/src/custom.ts +170 -15
  58. package/src/transform/index.ts +38 -0
  59. package/src/transform/transform.ts +409 -0
  60. package/src/transform/traverse.ts +320 -0
  61. package/src/transform/types.ts +128 -0
  62. package/src/types.ts +3 -2
@@ -0,0 +1,5 @@
1
+ import { z } from 'zod';
2
+ import type { ConvexValidatorFromZod, ConvexValidatorFromZodFieldsAuto, ZodValidator } from './types';
3
+ export declare function zodToConvex<Z extends z.ZodTypeAny | ZodValidator>(zod: Z): Z extends z.ZodTypeAny ? ConvexValidatorFromZod<Z, 'required'> : Z extends ZodValidator ? ConvexValidatorFromZodFieldsAuto<Z> : never;
4
+ export declare function zodToConvexFields<Z extends z.ZodRawShape>(zod: Z): ConvexValidatorFromZodFieldsAuto<Z>;
5
+ //# sourceMappingURL=core.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../src/mapping/core.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAUvB,OAAO,KAAK,EACV,sBAAsB,EACtB,gCAAgC,EAChC,YAAY,EACb,MAAM,SAAS,CAAA;AA8RhB,wBAAgB,WAAW,CAAC,CAAC,SAAS,CAAC,CAAC,UAAU,GAAG,YAAY,EAC/D,GAAG,EAAE,CAAC,GACL,CAAC,SAAS,CAAC,CAAC,UAAU,GACrB,sBAAsB,CAAC,CAAC,EAAE,UAAU,CAAC,GACrC,CAAC,SAAS,YAAY,GACpB,gCAAgC,CAAC,CAAC,CAAC,GACnC,KAAK,CAMV;AAED,wBAAgB,iBAAiB,CAAC,CAAC,SAAS,CAAC,CAAC,WAAW,EACvD,GAAG,EAAE,CAAC,GACL,gCAAgC,CAAC,CAAC,CAAC,CAWrC"}
@@ -0,0 +1,4 @@
1
+ import type { GenericValidator } from 'convex/values';
2
+ import { z } from 'zod';
3
+ export declare function convertEnumType(actualValidator: z.ZodEnum<any>): GenericValidator;
4
+ //# sourceMappingURL=enum.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"enum.d.ts","sourceRoot":"","sources":["../../../src/mapping/handlers/enum.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAa,MAAM,eAAe,CAAA;AAEhE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB,wBAAgB,eAAe,CAAC,eAAe,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,gBAAgB,CAwBjF"}
@@ -0,0 +1,5 @@
1
+ export { convertEnumType } from './enum';
2
+ export { convertNullableType } from './nullable';
3
+ export { convertRecordType } from './record';
4
+ export { convertDiscriminatedUnionType, convertUnionType } from './union';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/mapping/handlers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAA;AACxC,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAA;AAChD,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAA;AAC5C,OAAO,EAAE,6BAA6B,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA"}
@@ -0,0 +1,7 @@
1
+ import type { GenericValidator } from 'convex/values';
2
+ import { z } from 'zod';
3
+ export declare function convertNullableType(actualValidator: z.ZodNullable<any>, visited: Set<z.ZodTypeAny>, zodToConvexInternal: (schema: z.ZodTypeAny, visited: Set<z.ZodTypeAny>) => any): {
4
+ validator: GenericValidator;
5
+ isOptional: boolean;
6
+ };
7
+ //# sourceMappingURL=nullable.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nullable.d.ts","sourceRoot":"","sources":["../../../src/mapping/handlers/nullable.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AAErD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB,wBAAgB,mBAAmB,CACjC,eAAe,EAAE,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,EACnC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,EAC1B,mBAAmB,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,UAAU,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,GAAG,GAC7E;IAAE,SAAS,EAAE,gBAAgB,CAAC;IAAC,UAAU,EAAE,OAAO,CAAA;CAAE,CAyBtD"}
@@ -0,0 +1,4 @@
1
+ import type { GenericValidator } from 'convex/values';
2
+ import { z } from 'zod';
3
+ export declare function convertRecordType(actualValidator: z.ZodRecord<any, any>, visited: Set<z.ZodTypeAny>, zodToConvexInternal: (schema: z.ZodTypeAny, visited: Set<z.ZodTypeAny>) => any): GenericValidator;
4
+ //# sourceMappingURL=record.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"record.d.ts","sourceRoot":"","sources":["../../../src/mapping/handlers/record.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AAErD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB,wBAAgB,iBAAiB,CAC/B,eAAe,EAAE,CAAC,CAAC,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC,EACtC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,EAC1B,mBAAmB,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,UAAU,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,GAAG,GAC7E,gBAAgB,CA8DlB"}
@@ -0,0 +1,5 @@
1
+ import type { GenericValidator } from 'convex/values';
2
+ import { z } from 'zod';
3
+ export declare function convertDiscriminatedUnionType(actualValidator: z.ZodDiscriminatedUnion<any, any>, visited: Set<z.ZodTypeAny>, zodToConvexInternal: (schema: z.ZodTypeAny, visited: Set<z.ZodTypeAny>) => any): GenericValidator;
4
+ export declare function convertUnionType(actualValidator: z.ZodUnion<any>, visited: Set<z.ZodTypeAny>, zodToConvexInternal: (schema: z.ZodTypeAny, visited: Set<z.ZodTypeAny>) => any): GenericValidator;
5
+ //# sourceMappingURL=union.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"union.d.ts","sourceRoot":"","sources":["../../../src/mapping/handlers/union.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAa,MAAM,eAAe,CAAA;AAEhE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB,wBAAgB,6BAA6B,CAC3C,eAAe,EAAE,CAAC,CAAC,qBAAqB,CAAC,GAAG,EAAE,GAAG,CAAC,EAClD,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,EAC1B,mBAAmB,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,UAAU,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,GAAG,GAC7E,gBAAgB,CAwBlB;AAGD,wBAAgB,gBAAgB,CAC9B,eAAe,EAAE,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,EAChC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,EAC1B,mBAAmB,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,UAAU,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,GAAG,GAC7E,gBAAgB,CA8BlB"}
@@ -0,0 +1,4 @@
1
+ export { zodToConvex, zodToConvexFields } from './core';
2
+ export type { ConvexValidatorFromZod, ConvexValidatorFromZodFieldsAuto, ZodValidator } from './types';
3
+ export { getObjectShape, makeUnion } from './utils';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/mapping/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,QAAQ,CAAA;AACvD,YAAY,EACV,sBAAsB,EACtB,gCAAgC,EAChC,YAAY,EACb,MAAM,SAAS,CAAA;AAChB,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA"}
@@ -0,0 +1,43 @@
1
+ import type { GenericId, VAny, VArray, VBoolean, VFloat64, VId, VInt64, VLiteral, VNull, VObject, VOptional, VRecord, VString, VUnion } from 'convex/values';
2
+ import { z } from 'zod';
3
+ type IsZid<T> = T extends {
4
+ _tableName: infer _TableName extends string;
5
+ } ? true : false;
6
+ type ExtractTableName<T> = T extends {
7
+ _tableName: infer TableName;
8
+ } ? TableName : never;
9
+ type EnumToLiteralsTuple<T extends readonly [string, ...string[]]> = T['length'] extends 1 ? [VLiteral<T[0], 'required'>] : T['length'] extends 2 ? [VLiteral<T[0], 'required'>, VLiteral<T[1], 'required'>] : [
10
+ VLiteral<T[0], 'required'>,
11
+ VLiteral<T[1], 'required'>,
12
+ ...{
13
+ [K in keyof T]: K extends '0' | '1' ? never : K extends keyof T ? VLiteral<T[K], 'required'> : never;
14
+ }[keyof T & number][]
15
+ ];
16
+ export type ZodValidator = Record<string, z.ZodTypeAny>;
17
+ type ConvexValidatorFromZodRequired<Z extends z.ZodTypeAny> = Z extends z.ZodOptional<infer T extends z.ZodTypeAny> ? VUnion<z.infer<T> | null, any[], 'required'> : ConvexValidatorFromZodBase<Z>;
18
+ type ConvexValidatorFromZodBase<Z extends z.ZodTypeAny> = IsZid<Z> extends true ? ExtractTableName<Z> extends infer TableName extends string ? VId<GenericId<TableName>, 'required'> : VAny<'required'> : Z extends z.ZodString ? VString<z.infer<Z>, 'required'> : Z extends z.ZodNumber ? VFloat64<z.infer<Z>, 'required'> : Z extends z.ZodDate ? VFloat64<number, 'required'> : Z extends z.ZodBigInt ? VInt64<z.infer<Z>, 'required'> : Z extends z.ZodBoolean ? VBoolean<z.infer<Z>, 'required'> : Z extends z.ZodNull ? VNull<null, 'required'> : Z extends z.ZodArray<infer T extends z.ZodTypeAny> ? VArray<z.infer<Z>, ConvexValidatorFromZodRequired<T>, 'required'> : Z extends z.ZodObject<infer T> ? VObject<z.infer<Z>, ConvexValidatorFromZodFieldsAuto<T>, 'required', string> : Z extends z.ZodUnion<infer T> ? T extends readonly [z.ZodTypeAny, z.ZodTypeAny, ...z.ZodTypeAny[]] ? VUnion<z.infer<Z>, any[], 'required'> : never : Z extends z.ZodLiteral<infer T> ? VLiteral<T, 'required'> : Z extends z.ZodEnum<infer T> ? T extends readonly [string, ...string[]] ? T['length'] extends 1 ? VLiteral<T[0], 'required'> : T['length'] extends 2 ? VUnion<T[number], [
19
+ VLiteral<T[0], 'required'>,
20
+ VLiteral<T[1], 'required'>
21
+ ], 'required', never> : VUnion<T[number], EnumToLiteralsTuple<T>, 'required', never> : T extends Record<string, string | number> ? VUnion<T[keyof T], Array<VLiteral<T[keyof T], 'required'>>, 'required', never> : VUnion<string, any[], 'required', any> : Z extends z.ZodRecord<z.ZodString, infer V extends z.ZodTypeAny> ? VRecord<Record<string, z.infer<V>>, VString<string, 'required'>, ConvexValidatorFromZodRequired<V>, 'required', string> : Z extends z.ZodNullable<infer Inner extends z.ZodTypeAny> ? Inner extends z.ZodOptional<infer InnerInner extends z.ZodTypeAny> ? VOptional<VUnion<z.infer<InnerInner> | null, [
22
+ ConvexValidatorFromZodBase<InnerInner>,
23
+ VNull<null, 'required'>
24
+ ], 'required'>> : VUnion<z.infer<Inner> | null, [
25
+ ConvexValidatorFromZodBase<Inner>,
26
+ VNull<null, 'required'>
27
+ ], 'required'> : Z extends z.ZodAny ? VAny<'required'> : Z extends z.ZodUnknown ? VAny<'required'> : VAny<'required'>;
28
+ export type ConvexValidatorFromZod<Z extends z.ZodTypeAny, Constraint extends 'required' | 'optional' = 'required'> = Z extends z.ZodAny ? VAny<'required'> : Z extends z.ZodUnknown ? VAny<'required'> : Z extends z.ZodDefault<infer T extends z.ZodTypeAny> ? ConvexValidatorFromZod<T, Constraint> : Z extends z.ZodOptional<infer T extends z.ZodTypeAny> ? T extends z.ZodNullable<infer Inner extends z.ZodTypeAny> ? VOptional<VUnion<z.infer<Inner> | null, any[], 'required'>> : Constraint extends 'required' ? VUnion<z.infer<T>, any[], 'required'> : VOptional<ConvexValidatorFromZod<T, 'required'>> : Z extends z.ZodNullable<infer T extends z.ZodTypeAny> ? VUnion<z.infer<T> | null, any[], Constraint> : IsZid<Z> extends true ? ExtractTableName<Z> extends infer TableName extends string ? VId<GenericId<TableName>, Constraint> : VAny<'required'> : Z extends z.ZodString ? VString<z.infer<Z>, Constraint> : Z extends z.ZodNumber ? VFloat64<z.infer<Z>, Constraint> : Z extends z.ZodDate ? VFloat64<number, Constraint> : Z extends z.ZodBigInt ? VInt64<z.infer<Z>, Constraint> : Z extends z.ZodBoolean ? VBoolean<z.infer<Z>, Constraint> : Z extends z.ZodNull ? VNull<null, Constraint> : Z extends z.ZodArray<infer T extends z.ZodTypeAny> ? VArray<z.infer<Z>, ConvexValidatorFromZodRequired<T>, Constraint> : Z extends z.ZodObject<infer T> ? VObject<z.infer<Z>, ConvexValidatorFromZodFields<T, 'required'>, Constraint, string> : Z extends z.ZodUnion<infer T> ? T extends readonly [z.ZodTypeAny, z.ZodTypeAny, ...z.ZodTypeAny[]] ? VUnion<z.infer<Z>, any[], Constraint> : never : Z extends z.ZodLiteral<infer T> ? VLiteral<T, Constraint> : Z extends z.ZodEnum<infer T> ? T extends readonly [string, ...string[]] ? T['length'] extends 1 ? VLiteral<T[0], Constraint> : T['length'] extends 2 ? VUnion<T[number], [
29
+ VLiteral<T[0], 'required'>,
30
+ VLiteral<T[1], 'required'>
31
+ ], Constraint, never> : VUnion<T[number], EnumToLiteralsTuple<T>, Constraint, never> : T extends Record<string, string | number> ? VUnion<T[keyof T], Array<VLiteral<T[keyof T], 'required'>>, Constraint, never> : VUnion<string, any[], Constraint, any> : Z extends z.ZodRecord<z.ZodString, infer V extends z.ZodTypeAny> ? VRecord<Record<string, z.infer<V>>, VString<string, 'required'>, ConvexValidatorFromZodRequired<V>, Constraint, string> : VAny<'required'>;
32
+ type ConvexValidatorFromZodFields<T extends {
33
+ [key: string]: any;
34
+ }, Constraint extends 'required' | 'optional' = 'required'> = {
35
+ [K in keyof T]: T[K] extends z.ZodTypeAny ? ConvexValidatorFromZod<T[K], Constraint> : VAny<'required'>;
36
+ };
37
+ export type ConvexValidatorFromZodFieldsAuto<T extends {
38
+ [key: string]: any;
39
+ }> = {
40
+ [K in keyof T]: T[K] extends z.ZodOptional<any> ? ConvexValidatorFromZod<T[K], 'optional'> : T[K] extends z.ZodDefault<any> ? ConvexValidatorFromZod<T[K], 'optional'> : T[K] extends z.ZodNullable<any> ? ConvexValidatorFromZod<T[K], 'required'> : T[K] extends z.ZodEnum<any> ? ConvexValidatorFromZod<T[K], 'required'> : T[K] extends z.ZodTypeAny ? ConvexValidatorFromZod<T[K], 'required'> : VAny<'required'>;
41
+ };
42
+ export {};
43
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/mapping/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import { z } from 'zod';
2
+ import { type Zid } from '../ids';
3
+ export declare function isZid<T extends string>(schema: z.ZodType): schema is Zid<T>;
4
+ export declare function makeUnion(members: any[]): any;
5
+ export declare function getObjectShape(obj: any): Record<string, any>;
6
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/mapping/utils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,EAAmB,KAAK,GAAG,EAAE,MAAM,QAAQ,CAAA;AAGlD,wBAAgB,KAAK,CAAC,CAAC,SAAS,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,OAAO,GAAG,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,CAM3E;AAGD,wBAAgB,SAAS,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,GAAG,CAK7C;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,GAAG,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAU5D"}
@@ -0,0 +1,110 @@
1
+ import { z } from 'zod';
2
+ type BaseCodec = {
3
+ check: (schema: any) => boolean;
4
+ toValidator: (schema: any) => any;
5
+ fromConvex: (value: any, schema: any) => any;
6
+ toConvex: (value: any, schema: any) => any;
7
+ };
8
+ export declare function registerBaseCodec(codec: BaseCodec): void;
9
+ export declare function findBaseCodec(schema: any): BaseCodec | undefined;
10
+ export declare function isDateSchema(schema: any): boolean;
11
+ /**
12
+ * Checks if a schema is a zid (Convex ID) schema by looking at its description.
13
+ * zid schemas are marked with "convexId:{tableName}" in their description.
14
+ */
15
+ export declare function isZidSchema(schema: z.ZodTypeAny): boolean;
16
+ /**
17
+ * Extracts the table name from a zid schema's description.
18
+ * Returns undefined if not a zid schema.
19
+ */
20
+ export declare function getZidTableName(schema: z.ZodTypeAny): string | undefined;
21
+ /**
22
+ * Context object passed to the JSON Schema override function.
23
+ * Uses 'any' types for compatibility with Zod's internal types.
24
+ */
25
+ export interface JSONSchemaOverrideContext {
26
+ zodSchema: any;
27
+ jsonSchema: any;
28
+ }
29
+ /**
30
+ * Override function for z.toJSONSchema that handles zodvex-managed types.
31
+ *
32
+ * Handles:
33
+ * - zid schemas: Converts to { type: "string" } with convexId format
34
+ * - z.date(): Converts to { type: "string", format: "date-time" }
35
+ *
36
+ * @example
37
+ * ```ts
38
+ * import { z } from 'zod'
39
+ * import { zid, zodvexJSONSchemaOverride } from 'zodvex'
40
+ *
41
+ * const schema = z.object({
42
+ * userId: zid('users'),
43
+ * name: z.string()
44
+ * })
45
+ *
46
+ * const jsonSchema = z.toJSONSchema(schema, {
47
+ * unrepresentable: 'any',
48
+ * override: zodvexJSONSchemaOverride
49
+ * })
50
+ * // => { type: "object", properties: { userId: { type: "string" }, name: { type: "string" } } }
51
+ * ```
52
+ */
53
+ export declare function zodvexJSONSchemaOverride(ctx: JSONSchemaOverrideContext): void;
54
+ /**
55
+ * Composes multiple JSON Schema override functions into one.
56
+ * Overrides run in order - first override runs first.
57
+ *
58
+ * @example
59
+ * ```ts
60
+ * import { composeOverrides, zodvexJSONSchemaOverride } from 'zodvex'
61
+ *
62
+ * const myOverride = (ctx) => {
63
+ * if (ctx.zodSchema.description?.startsWith('myType:')) {
64
+ * ctx.jsonSchema.type = 'string'
65
+ * ctx.jsonSchema.format = 'my-format'
66
+ * }
67
+ * }
68
+ *
69
+ * // User's override runs first, then zodvex's
70
+ * z.toJSONSchema(schema, {
71
+ * unrepresentable: 'any',
72
+ * override: composeOverrides(myOverride, zodvexJSONSchemaOverride)
73
+ * })
74
+ * ```
75
+ */
76
+ export declare function composeOverrides(...overrides: Array<((ctx: JSONSchemaOverrideContext) => void) | undefined>): (ctx: JSONSchemaOverrideContext) => void;
77
+ /**
78
+ * Options for toJSONSchema, matching Zod's interface.
79
+ */
80
+ export interface ToJSONSchemaOptions {
81
+ target?: 'draft-4' | 'draft-7' | 'draft-2020-12' | 'openapi-3.0';
82
+ unrepresentable?: 'throw' | 'any';
83
+ cycles?: 'ref' | 'throw';
84
+ reused?: 'ref' | 'inline';
85
+ io?: 'input' | 'output';
86
+ override?: (ctx: JSONSchemaOverrideContext) => void;
87
+ }
88
+ /**
89
+ * Converts a Zod schema to JSON Schema with zodvex-aware overrides.
90
+ *
91
+ * This is a convenience wrapper around z.toJSONSchema that automatically
92
+ * handles zodvex-managed types like zid and dates.
93
+ *
94
+ * @example
95
+ * ```ts
96
+ * import { zid, toJSONSchema } from 'zodvex'
97
+ *
98
+ * const schema = z.object({
99
+ * userId: zid('users'),
100
+ * createdAt: z.date(),
101
+ * name: z.string()
102
+ * })
103
+ *
104
+ * const jsonSchema = toJSONSchema(schema)
105
+ * // Works with AI SDK's generateObject, etc.
106
+ * ```
107
+ */
108
+ export declare function toJSONSchema<T extends z.ZodTypeAny>(schema: T, options?: ToJSONSchemaOptions): Record<string, any>;
109
+ export {};
110
+ //# sourceMappingURL=registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB,KAAK,SAAS,GAAG;IACf,KAAK,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,OAAO,CAAA;IAC/B,WAAW,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,GAAG,CAAA;IACjC,UAAU,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,KAAK,GAAG,CAAA;IAC5C,QAAQ,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,KAAK,GAAG,CAAA;CAC3C,CAAA;AAID,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI,CAExD;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,GAAG,GAAG,SAAS,GAAG,SAAS,CAEhE;AA0BD,wBAAgB,YAAY,CAAC,MAAM,EAAE,GAAG,GAAG,OAAO,CAYjD;AASD;;;GAGG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC,UAAU,GAAG,OAAO,CAGzD;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,CAAC,CAAC,UAAU,GAAG,MAAM,GAAG,SAAS,CAMxE;AAED;;;GAGG;AACH,MAAM,WAAW,yBAAyB;IACxC,SAAS,EAAE,GAAG,CAAA;IACd,UAAU,EAAE,GAAG,CAAA;CAChB;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,yBAAyB,GAAG,IAAI,CA0B7E;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,gBAAgB,CAC9B,GAAG,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,yBAAyB,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC,GAC1E,CAAC,GAAG,EAAE,yBAAyB,KAAK,IAAI,CAM1C;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,MAAM,CAAC,EAAE,SAAS,GAAG,SAAS,GAAG,eAAe,GAAG,aAAa,CAAA;IAChE,eAAe,CAAC,EAAE,OAAO,GAAG,KAAK,CAAA;IACjC,MAAM,CAAC,EAAE,KAAK,GAAG,OAAO,CAAA;IACxB,MAAM,CAAC,EAAE,KAAK,GAAG,QAAQ,CAAA;IACzB,EAAE,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAA;IACvB,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,yBAAyB,KAAK,IAAI,CAAA;CACpD;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,YAAY,CAAC,CAAC,SAAS,CAAC,CAAC,UAAU,EACjD,MAAM,EAAE,CAAC,EACT,OAAO,CAAC,EAAE,mBAAmB,GAC5B,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAarB"}
@@ -0,0 +1,122 @@
1
+ import { defineTable } from 'convex/server';
2
+ import type { GenericId } from 'convex/values';
3
+ import { Table } from 'convex-helpers/server';
4
+ import { z } from 'zod';
5
+ import { zid } from './ids';
6
+ import { type ConvexValidatorFromZodFieldsAuto, zodToConvex } from './mapping';
7
+ /**
8
+ * Helper type for Convex system fields added to documents
9
+ */
10
+ type SystemFields<TableName extends string> = {
11
+ _id: ReturnType<typeof zid<TableName>>;
12
+ _creationTime: z.ZodNumber;
13
+ };
14
+ /**
15
+ * Maps over union options, extending each ZodObject variant with system fields.
16
+ * Non-object variants are preserved as-is.
17
+ */
18
+ type MapSystemFields<TableName extends string, Options extends readonly z.ZodTypeAny[]> = {
19
+ [K in keyof Options]: Options[K] extends z.ZodObject<infer Shape extends z.ZodRawShape> ? z.ZodObject<Shape & SystemFields<TableName>> : Options[K];
20
+ };
21
+ /**
22
+ * Adds Convex system fields (_id, _creationTime) to a Zod schema.
23
+ *
24
+ * For object schemas: extends with system fields
25
+ * For union schemas: adds system fields to each variant
26
+ *
27
+ * @param tableName - The Convex table name
28
+ * @param schema - The Zod schema (object or union)
29
+ * @returns Schema with system fields added
30
+ */
31
+ export declare function addSystemFields<TableName extends string, Shape extends z.ZodRawShape>(tableName: TableName, schema: z.ZodObject<Shape>): z.ZodObject<Shape & SystemFields<TableName>>;
32
+ export declare function addSystemFields<TableName extends string, Options extends readonly z.ZodTypeAny[]>(tableName: TableName, schema: z.ZodUnion<Options>): z.ZodUnion<MapSystemFields<TableName, Options>>;
33
+ export declare function addSystemFields<TableName extends string, Options extends readonly z.ZodObject<z.ZodRawShape>[], Discriminator extends string>(tableName: TableName, schema: z.ZodDiscriminatedUnion<Options, Discriminator>): z.ZodDiscriminatedUnion<MapSystemFields<TableName, Options>, Discriminator>;
34
+ export declare function addSystemFields<TableName extends string, S extends z.ZodTypeAny>(tableName: TableName, schema: S): S;
35
+ export declare function zodDoc<TableName extends string, Shape extends z.ZodRawShape, Schema extends z.ZodObject<Shape>>(tableName: TableName, schema: Schema): z.ZodObject<Shape & {
36
+ _id: ReturnType<typeof zid<TableName>>;
37
+ _creationTime: z.ZodNumber;
38
+ }>;
39
+ export declare function zodDocOrNull<TableName extends string, Shape extends z.ZodRawShape, Schema extends z.ZodObject<Shape>>(tableName: TableName, schema: Schema): z.ZodUnion<readonly [z.ZodObject<Readonly<{
40
+ [k: string]: z.core.$ZodType<unknown, unknown, z.core.$ZodTypeInternals<unknown, unknown>>;
41
+ }> & {
42
+ _id: z.ZodType<GenericId<TableName>, unknown, z.core.$ZodTypeInternals<GenericId<TableName>, unknown>> & {
43
+ _tableName: TableName;
44
+ };
45
+ _creationTime: z.ZodNumber;
46
+ }, z.core.$strip>, z.ZodNull]>;
47
+ /**
48
+ * Defines a Convex table using either:
49
+ * - A raw Zod shape (an object mapping field names to Zod types)
50
+ * - A Zod union schema (for polymorphic tables)
51
+ *
52
+ * For object shapes, this function intentionally accepts a raw shape instead of a ZodObject instance.
53
+ * Accepting raw shapes allows TypeScript to infer field types more accurately and efficiently,
54
+ * leading to better type inference and performance throughout the codebase.
55
+ *
56
+ * For union schemas, this enables polymorphic tables with discriminated unions.
57
+ *
58
+ * Returns the Table definition along with Zod schemas for documents and arrays.
59
+ *
60
+ * @param name - The table name
61
+ * @param schemaOrShape - Either a raw object shape or a Zod union schema
62
+ * @returns A Table with attached helpers (shape, schema, zDoc, docArray, withSystemFields)
63
+ *
64
+ * @example Object shape
65
+ * ```ts
66
+ * const Users = zodTable('users', {
67
+ * name: z.string(),
68
+ * email: z.string().email(),
69
+ * age: z.number().optional()
70
+ * })
71
+ *
72
+ * // Use in schema
73
+ * export default defineSchema({ users: Users.table })
74
+ *
75
+ * // Use for return types
76
+ * export const getUsers = zQuery(query, {},
77
+ * async (ctx) => ctx.db.query('users').collect(),
78
+ * { returns: Users.docArray }
79
+ * )
80
+ * ```
81
+ *
82
+ * @example Union schema (polymorphic table)
83
+ * ```ts
84
+ * const shapeSchema = z.union([
85
+ * z.object({ kind: z.literal('circle'), r: z.number() }),
86
+ * z.object({ kind: z.literal('rectangle'), width: z.number() })
87
+ * ])
88
+ *
89
+ * const Shapes = zodTable('shapes', shapeSchema)
90
+ *
91
+ * // Use in schema
92
+ * export default defineSchema({ shapes: Shapes.table })
93
+ *
94
+ * // Use for return types with system fields
95
+ * export const getShapes = zQuery(query, {},
96
+ * async (ctx) => ctx.db.query('shapes').collect(),
97
+ * { returns: Shapes.docArray }
98
+ * )
99
+ * ```
100
+ */
101
+ type AddSystemFieldsResult<TableName extends string, Schema extends z.ZodTypeAny> = Schema extends z.ZodObject<infer Shape extends z.ZodRawShape> ? z.ZodObject<Shape & SystemFields<TableName>> : Schema extends z.ZodUnion<infer Options extends readonly z.ZodTypeAny[]> ? z.ZodUnion<MapSystemFields<TableName, Options>> : Schema extends z.ZodDiscriminatedUnion<infer Options extends readonly z.ZodObject<z.ZodRawShape>[], infer Disc extends string> ? z.ZodDiscriminatedUnion<MapSystemFields<TableName, Options>, Disc> : Schema;
102
+ export declare function zodTable<TableName extends string, Shape extends Record<string, z.ZodTypeAny>>(name: TableName, shape: Shape): ReturnType<typeof Table<ConvexValidatorFromZodFieldsAuto<Shape>, TableName>> & {
103
+ shape: Shape;
104
+ zDoc: z.ZodObject<Shape & {
105
+ _id: ReturnType<typeof zid<TableName>>;
106
+ _creationTime: z.ZodNumber;
107
+ }>;
108
+ docArray: z.ZodArray<z.ZodObject<Shape & {
109
+ _id: ReturnType<typeof zid<TableName>>;
110
+ _creationTime: z.ZodNumber;
111
+ }>>;
112
+ };
113
+ export declare function zodTable<TableName extends string, Schema extends z.ZodTypeAny>(name: TableName, schema: Schema): {
114
+ table: ReturnType<typeof defineTable>;
115
+ tableName: TableName;
116
+ validator: ReturnType<typeof zodToConvex<Schema>>;
117
+ schema: Schema;
118
+ docArray: z.ZodArray<AddSystemFieldsResult<TableName, Schema>>;
119
+ withSystemFields: () => AddSystemFieldsResult<TableName, Schema>;
120
+ };
121
+ export {};
122
+ //# sourceMappingURL=tables.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tables.d.ts","sourceRoot":"","sources":["../src/tables.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Transform layer - General-purpose schema traversal and value transformation utilities.
3
+ *
4
+ * This module provides primitives for:
5
+ * - Walking Zod schemas (walkSchema, findFieldsWithMeta)
6
+ * - Extracting metadata from schemas (getMetadata, hasMetadata)
7
+ * - Recursively transforming values based on schema structure (transformBySchema, transformBySchemaAsync)
8
+ *
9
+ * @example
10
+ * ```ts
11
+ * import { findFieldsWithMeta, transformBySchema } from 'zodvex/transform'
12
+ *
13
+ * // Find all fields with custom metadata
14
+ * const sensitiveFields = findFieldsWithMeta(schema, meta => meta?.sensitive === true)
15
+ *
16
+ * // Transform values based on metadata
17
+ * const masked = transformBySchema(value, schema, ctx, (val, info) => {
18
+ * if (info.meta?.pii) return '[REDACTED]'
19
+ * return val
20
+ * })
21
+ * ```
22
+ */
23
+ export { transformBySchema, transformBySchemaAsync } from './transform';
24
+ export { findFieldsWithMeta, getMetadata, hasMetadata, walkSchema } from './traverse';
25
+ export type { AsyncTransformFn, FieldInfo, SchemaVisitor, TransformContext, TransformFn, TransformOptions, WalkSchemaOptions } from './types';
26
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/transform/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAGH,OAAO,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAA;AAGvE,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAErF,YAAY,EACV,gBAAgB,EAChB,SAAS,EACT,aAAa,EACb,gBAAgB,EAChB,WAAW,EACX,gBAAgB,EAChB,iBAAiB,EAClB,MAAM,SAAS,CAAA"}