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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=infer-returns.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"infer-returns.d.ts","sourceRoot":"","sources":["../../src/__type-tests__/infer-returns.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=zodTable-inference.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"zodTable-inference.d.ts","sourceRoot":"","sources":["../../src/__type-tests__/zodTable-inference.ts"],"names":[],"mappings":""}
@@ -0,0 +1,173 @@
1
+ import type { FunctionVisibility, RegisteredAction, RegisteredMutation, RegisteredQuery } from 'convex/server';
2
+ import type { PropertyValidators } from 'convex/values';
3
+ import type { Customization } from 'convex-helpers/server/customFunctions';
4
+ import { z } from 'zod';
5
+ import { type CustomBuilder } from './custom';
6
+ import type { ExtractCtx, ExtractVisibility, InferHandlerReturns, InferReturns, ZodToConvexArgs } from './types';
7
+ /**
8
+ * Creates a reusable query builder from a Convex query builder.
9
+ * Returns a builder function that accepts Convex-style config objects with args, handler, and returns.
10
+ *
11
+ * @example
12
+ * ```ts
13
+ * import { query } from './_generated/server'
14
+ * import { zQueryBuilder } from 'zodvex'
15
+ *
16
+ * // Create a reusable builder
17
+ * export const zq = zQueryBuilder(query)
18
+ *
19
+ * // Use it with Convex-style object syntax
20
+ * export const getUser = zq({
21
+ * args: { id: z.string() },
22
+ * handler: async (ctx, { id }) => {
23
+ * return ctx.db.get(id)
24
+ * }
25
+ * })
26
+ * ```
27
+ */
28
+ export declare function zQueryBuilder<Builder extends (fn: any) => any>(builder: Builder): <A extends z.ZodTypeAny | Record<string, z.ZodTypeAny>, R extends z.ZodTypeAny | undefined = undefined, Visibility extends FunctionVisibility = ExtractVisibility<Builder>>(config: {
29
+ args?: A;
30
+ handler: (ctx: ExtractCtx<Builder>, args: ZodToConvexArgs<A extends undefined ? Record<string, never> : A>) => InferHandlerReturns<R> | Promise<InferHandlerReturns<R>>;
31
+ returns?: R;
32
+ }) => RegisteredQuery<Visibility, ZodToConvexArgs<A extends undefined ? Record<string, never> : A>, Promise<InferReturns<R>>>;
33
+ /**
34
+ * Creates a reusable mutation builder from a Convex mutation builder.
35
+ * Returns a builder function that accepts Convex-style config objects with args, handler, and returns.
36
+ *
37
+ * @example
38
+ * ```ts
39
+ * import { mutation } from './_generated/server'
40
+ * import { zMutationBuilder } from 'zodvex'
41
+ *
42
+ * // Create a reusable builder
43
+ * export const zm = zMutationBuilder(mutation)
44
+ *
45
+ * // Use it with Convex-style object syntax
46
+ * export const updateUser = zm({
47
+ * args: { id: z.string(), name: z.string() },
48
+ * handler: async (ctx, { id, name }) => {
49
+ * return ctx.db.patch(id, { name })
50
+ * }
51
+ * })
52
+ * ```
53
+ */
54
+ export declare function zMutationBuilder<Builder extends (fn: any) => any>(builder: Builder): <A extends z.ZodTypeAny | Record<string, z.ZodTypeAny>, R extends z.ZodTypeAny | undefined = undefined, Visibility extends FunctionVisibility = ExtractVisibility<Builder>>(config: {
55
+ args?: A;
56
+ handler: (ctx: ExtractCtx<Builder>, args: ZodToConvexArgs<A extends undefined ? Record<string, never> : A>) => InferHandlerReturns<R> | Promise<InferHandlerReturns<R>>;
57
+ returns?: R;
58
+ }) => RegisteredMutation<Visibility, ZodToConvexArgs<A extends undefined ? Record<string, never> : A>, Promise<InferReturns<R>>>;
59
+ /**
60
+ * Creates a reusable action builder from a Convex action builder.
61
+ * Returns a builder function that accepts Convex-style config objects with args, handler, and returns.
62
+ *
63
+ * @example
64
+ * ```ts
65
+ * import { action } from './_generated/server'
66
+ * import { zActionBuilder } from 'zodvex'
67
+ *
68
+ * // Create a reusable builder
69
+ * export const za = zActionBuilder(action)
70
+ *
71
+ * // Use it with Convex-style object syntax
72
+ * export const sendEmail = za({
73
+ * args: { to: z.string().email(), subject: z.string() },
74
+ * handler: async (ctx, { to, subject }) => {
75
+ * // Send email
76
+ * }
77
+ * })
78
+ * ```
79
+ */
80
+ export declare function zActionBuilder<Builder extends (fn: any) => any>(builder: Builder): <A extends z.ZodTypeAny | Record<string, z.ZodTypeAny>, R extends z.ZodTypeAny | undefined = undefined, Visibility extends FunctionVisibility = ExtractVisibility<Builder>>(config: {
81
+ args?: A;
82
+ handler: (ctx: ExtractCtx<Builder>, args: ZodToConvexArgs<A extends undefined ? Record<string, never> : A>) => InferHandlerReturns<R> | Promise<InferHandlerReturns<R>>;
83
+ returns?: R;
84
+ }) => RegisteredAction<Visibility, ZodToConvexArgs<A extends undefined ? Record<string, never> : A>, Promise<InferReturns<R>>>;
85
+ /**
86
+ * Creates a custom query builder with context injection from a Convex query builder.
87
+ * Allows you to add custom context (like auth, permissions, etc.) to your queries.
88
+ *
89
+ * @example
90
+ * ```ts
91
+ * import { type QueryCtx, query } from './_generated/server'
92
+ * import { zCustomQueryBuilder, customCtx } from 'zodvex'
93
+ *
94
+ * // Create a builder with auth context
95
+ * export const authQuery = zCustomQueryBuilder(
96
+ * query,
97
+ * customCtx(async (ctx: QueryCtx) => {
98
+ * const user = await getUserOrThrow(ctx)
99
+ * return { user }
100
+ * })
101
+ * )
102
+ *
103
+ * // Use it with automatic user injection
104
+ * export const getMyProfile = authQuery({
105
+ * args: {},
106
+ * handler: async (ctx) => {
107
+ * // ctx.user is automatically available
108
+ * return ctx.db.get(ctx.user._id)
109
+ * }
110
+ * })
111
+ * ```
112
+ */
113
+ export declare function zCustomQueryBuilder<Builder extends (fn: any) => any, CustomArgsValidator extends PropertyValidators, CustomCtx extends Record<string, any>, CustomMadeArgs extends Record<string, any>, Visibility extends FunctionVisibility = ExtractVisibility<Builder>, ExtraArgs extends Record<string, any> = Record<string, any>>(query: Builder, customization: Customization<any, CustomArgsValidator, CustomCtx, CustomMadeArgs, ExtraArgs>): CustomBuilder<'query', CustomArgsValidator, CustomCtx, CustomMadeArgs, ExtractCtx<Builder>, Visibility, ExtraArgs>;
114
+ /**
115
+ * Creates a custom mutation builder with context injection from a Convex mutation builder.
116
+ * Allows you to add custom context (like auth, permissions, etc.) to your mutations.
117
+ *
118
+ * @example
119
+ * ```ts
120
+ * import { type MutationCtx, mutation } from './_generated/server'
121
+ * import { zCustomMutationBuilder, customCtx } from 'zodvex'
122
+ *
123
+ * // Create a builder with auth context
124
+ * export const authMutation = zCustomMutationBuilder(
125
+ * mutation,
126
+ * customCtx(async (ctx: MutationCtx) => {
127
+ * const user = await getUserOrThrow(ctx)
128
+ * return { user }
129
+ * })
130
+ * )
131
+ *
132
+ * // Use it with automatic user injection
133
+ * export const updateProfile = authMutation({
134
+ * args: { name: z.string() },
135
+ * handler: async (ctx, { name }) => {
136
+ * // ctx.user is automatically available
137
+ * await ctx.db.patch(ctx.user._id, { name })
138
+ * }
139
+ * })
140
+ * ```
141
+ */
142
+ export declare function zCustomMutationBuilder<Builder extends (fn: any) => any, CustomArgsValidator extends PropertyValidators, CustomCtx extends Record<string, any>, CustomMadeArgs extends Record<string, any>, Visibility extends FunctionVisibility = ExtractVisibility<Builder>, ExtraArgs extends Record<string, any> = Record<string, any>>(mutation: Builder, customization: Customization<any, CustomArgsValidator, CustomCtx, CustomMadeArgs, ExtraArgs>): CustomBuilder<'mutation', CustomArgsValidator, CustomCtx, CustomMadeArgs, ExtractCtx<Builder>, Visibility, ExtraArgs>;
143
+ /**
144
+ * Creates a custom action builder with context injection from a Convex action builder.
145
+ * Allows you to add custom context (like auth, permissions, etc.) to your actions.
146
+ *
147
+ * @example
148
+ * ```ts
149
+ * import { type ActionCtx, action } from './_generated/server'
150
+ * import { zCustomActionBuilder, customCtx } from 'zodvex'
151
+ *
152
+ * // Create a builder with auth context
153
+ * export const authAction = zCustomActionBuilder(
154
+ * action,
155
+ * customCtx(async (ctx: ActionCtx) => {
156
+ * const identity = await ctx.auth.getUserIdentity()
157
+ * if (!identity) throw new Error('Unauthorized')
158
+ * return { userId: identity.subject }
159
+ * })
160
+ * )
161
+ *
162
+ * // Use it with automatic auth injection
163
+ * export const sendEmail = authAction({
164
+ * args: { to: z.string().email() },
165
+ * handler: async (ctx, { to }) => {
166
+ * // ctx.userId is automatically available
167
+ * await sendEmailService(to, ctx.userId)
168
+ * }
169
+ * })
170
+ * ```
171
+ */
172
+ export declare function zCustomActionBuilder<Builder extends (fn: any) => any, CustomArgsValidator extends PropertyValidators, CustomCtx extends Record<string, any>, CustomMadeArgs extends Record<string, any>, Visibility extends FunctionVisibility = ExtractVisibility<Builder>, ExtraArgs extends Record<string, any> = Record<string, any>>(action: Builder, customization: Customization<any, CustomArgsValidator, CustomCtx, CustomMadeArgs, ExtraArgs>): CustomBuilder<'action', CustomArgsValidator, CustomCtx, CustomMadeArgs, ExtractCtx<Builder>, Visibility, ExtraArgs>;
173
+ //# sourceMappingURL=builders.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"builders.d.ts","sourceRoot":"","sources":["../src/builders.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import { z } from 'zod';
2
+ export type ConvexCodec<T> = {
3
+ validator: any;
4
+ encode: (value: T) => any;
5
+ decode: (value: any) => T;
6
+ pick: <K extends keyof T>(keys: K[]) => ConvexCodec<Pick<T, K>>;
7
+ };
8
+ export declare function convexCodec<T>(schema: z.ZodType<T>): ConvexCodec<T>;
9
+ export declare function toConvexJS(schema?: any, value?: any): any;
10
+ export declare function fromConvexJS(value: any, schema: any): any;
11
+ //# sourceMappingURL=codec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codec.d.ts","sourceRoot":"","sources":["../src/codec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AASvB,MAAM,MAAM,WAAW,CAAC,CAAC,IAAI;IAC3B,SAAS,EAAE,GAAG,CAAA;IACd,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,GAAG,CAAA;IACzB,MAAM,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,CAAC,CAAA;IACzB,IAAI,EAAE,CAAC,CAAC,SAAS,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,WAAW,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;CAChE,CAAA;AAED,wBAAgB,WAAW,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAmBnE;AAGD,wBAAgB,UAAU,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,EAAE,GAAG,GAAG,GAAG,CASzD;AAkGD,wBAAgB,YAAY,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,GAAG,GAAG,CA+EzD"}
@@ -0,0 +1,142 @@
1
+ import { type ArgsArrayToObject, type DefaultFunctionArgs, type FunctionVisibility, type GenericDataModel, type GenericQueryCtx, type QueryBuilder } from 'convex/server';
2
+ import { type PropertyValidators } from 'convex/values';
3
+ import { type Customization } from 'convex-helpers/server/customFunctions';
4
+ import { z } from 'zod';
5
+ import { type ZodValidator } from './mapping';
6
+ import type { ExtractCtx } from './types';
7
+ /**
8
+ * Hooks for observing the function execution (side effects, no return value).
9
+ */
10
+ export type CustomizationHooks = {
11
+ /** Called after successful execution with access to ctx, args, and result */
12
+ onSuccess?: (info: {
13
+ ctx: unknown;
14
+ args: Record<string, unknown>;
15
+ result: unknown;
16
+ }) => void | Promise<void>;
17
+ };
18
+ /**
19
+ * Transforms for modifying data in the function flow.
20
+ */
21
+ export type CustomizationTransforms = {
22
+ /** Transform the output after validation but before wire encoding */
23
+ output?: (result: unknown, schema: z.ZodTypeAny) => unknown | Promise<unknown>;
24
+ };
25
+ /**
26
+ * Result returned from a customization input function.
27
+ * Separates Convex concepts (ctx, args) from hooks (side effects) and transforms (data modifications).
28
+ */
29
+ export type CustomizationResult<CustomCtx extends Record<string, any> = Record<string, any>, CustomArgs extends Record<string, any> = Record<string, any>> = {
30
+ /** Custom context to merge with base context */
31
+ ctx?: CustomCtx;
32
+ /** Custom args to merge with parsed args */
33
+ args?: CustomArgs;
34
+ /** Hooks for observing execution (side effects) */
35
+ hooks?: CustomizationHooks;
36
+ /** Transforms for modifying the data flow */
37
+ transforms?: CustomizationTransforms;
38
+ };
39
+ /**
40
+ * Extended input result that includes hooks and transforms.
41
+ * This is what the input function returns internally.
42
+ */
43
+ export type CustomizationInputResult<OutCtx extends Record<string, any>, OutArgs extends Record<string, any>> = {
44
+ ctx: OutCtx;
45
+ args: OutArgs;
46
+ hooks?: CustomizationHooks;
47
+ transforms?: CustomizationTransforms;
48
+ };
49
+ /**
50
+ * Customization type that supports hooks and transforms.
51
+ * This extends convex-helpers' Customization pattern to include
52
+ * hooks (side effects) and transforms (data modifications).
53
+ *
54
+ * Use customCtxWithHooks() to create instances of this type.
55
+ */
56
+ export type CustomizationWithHooks<InCtx extends Record<string, any>, OutCtx extends Record<string, any> = Record<string, any>, OutArgs extends Record<string, any> = Record<string, any>, ExtraArgs extends Record<string, any> = Record<string, any>> = {
57
+ args: Record<string, never>;
58
+ input: (ctx: InCtx, args?: Record<string, unknown>, extra?: ExtraArgs) => Promise<CustomizationInputResult<OutCtx, OutArgs>> | CustomizationInputResult<OutCtx, OutArgs>;
59
+ };
60
+ /**
61
+ * A helper for defining a Customization with full support for hooks and transforms.
62
+ * Use this instead of customCtx when you need onSuccess, transforms.output, etc.
63
+ *
64
+ * @example
65
+ * ```ts
66
+ * const secureQuery = zCustomQueryBuilder(
67
+ * query,
68
+ * customCtxWithHooks(async (ctx: QueryCtx) => {
69
+ * const securityCtx = await getSecurityContext(ctx)
70
+ * return {
71
+ * ctx: { securityCtx },
72
+ * hooks: {
73
+ * onSuccess: ({ result }) => console.log('Query returned:', result),
74
+ * },
75
+ * transforms: {
76
+ * output: (result, schema) => transformSensitiveFields(result, securityCtx),
77
+ * },
78
+ * }
79
+ * })
80
+ * )
81
+ * ```
82
+ */
83
+ export declare function customCtxWithHooks<InCtx extends Record<string, any>, OutCtx extends Record<string, any> = Record<string, any>, OutArgs extends Record<string, any> = Record<string, any>>(fn: (ctx: InCtx) => Promise<CustomizationResult<OutCtx, OutArgs>> | CustomizationResult<OutCtx, OutArgs>): CustomizationWithHooks<InCtx, OutCtx, OutArgs>;
84
+ type OneArgArray<ArgsObject extends DefaultFunctionArgs = DefaultFunctionArgs> = [ArgsObject];
85
+ type NullToUndefinedOrNull<T> = T extends null ? T | undefined | void : T;
86
+ type Returns<T> = Promise<NullToUndefinedOrNull<T>> | NullToUndefinedOrNull<T>;
87
+ type ReturnValueInput<ReturnsValidator extends z.ZodTypeAny | ZodValidator | void> = [
88
+ ReturnsValidator
89
+ ] extends [z.ZodTypeAny] ? Returns<z.output<ReturnsValidator>> : [ReturnsValidator] extends [ZodValidator] ? Returns<z.output<z.ZodObject<ReturnsValidator>>> : any;
90
+ type ReturnValueOutput<ReturnsValidator extends z.ZodTypeAny | ZodValidator | void> = [
91
+ ReturnsValidator
92
+ ] extends [z.ZodTypeAny] ? Returns<z.output<ReturnsValidator>> : [ReturnsValidator] extends [ZodValidator] ? Returns<z.output<z.ZodObject<ReturnsValidator>>> : any;
93
+ type ArgsInput<ArgsValidator extends ZodValidator | z.ZodObject<any> | void> = [
94
+ ArgsValidator
95
+ ] extends [z.ZodObject<any>] ? [z.input<ArgsValidator>] : [ArgsValidator] extends [ZodValidator] ? [z.input<z.ZodObject<ArgsValidator>>] : OneArgArray;
96
+ type ArgsOutput<ArgsValidator extends ZodValidator | z.ZodObject<any> | void> = [
97
+ ArgsValidator
98
+ ] extends [z.ZodObject<any>] ? [z.output<ArgsValidator>] : [ArgsValidator] extends [ZodValidator] ? [z.output<z.ZodObject<ArgsValidator>>] : OneArgArray;
99
+ type Overwrite<T, U> = Omit<T, keyof U> & U;
100
+ type Expand<ObjectType extends Record<any, any>> = ObjectType extends Record<any, any> ? {
101
+ [Key in keyof ObjectType]: ObjectType[Key];
102
+ } : never;
103
+ type ArgsForHandlerType<OneOrZeroArgs extends [] | [Record<string, any>], CustomMadeArgs extends Record<string, any>> = CustomMadeArgs extends Record<string, never> ? OneOrZeroArgs : OneOrZeroArgs extends [infer A] ? [Expand<A & CustomMadeArgs>] : [CustomMadeArgs];
104
+ type Registration<FuncType extends 'query' | 'mutation' | 'action', Visibility extends FunctionVisibility, Args extends DefaultFunctionArgs, Output> = FuncType extends 'query' ? import('convex/server').RegisteredQuery<Visibility, Args, Output> : FuncType extends 'mutation' ? import('convex/server').RegisteredMutation<Visibility, Args, Output> : import('convex/server').RegisteredAction<Visibility, Args, Output>;
105
+ /**
106
+ * A builder that customizes a Convex function, whether or not it validates
107
+ * arguments. If the customization requires arguments, however, the resulting
108
+ * builder will require argument validation too.
109
+ *
110
+ * This is our own Zod-aware CustomBuilder type that properly handles Zod validators.
111
+ */
112
+ export type CustomBuilder<FuncType extends 'query' | 'mutation' | 'action', CustomArgsValidator extends PropertyValidators, CustomCtx extends Record<string, any>, CustomMadeArgs extends Record<string, any>, InputCtx, Visibility extends FunctionVisibility, ExtraArgs extends Record<string, any>> = {
113
+ <ArgsValidator extends ZodValidator | z.ZodObject<any> | void, ReturnsZodValidator extends z.ZodTypeAny | ZodValidator | void = void, ReturnValue extends ReturnValueInput<ReturnsZodValidator> = any>(func: ({
114
+ /**
115
+ * Specify the arguments to the function as a Zod validator.
116
+ */
117
+ args?: ArgsValidator;
118
+ handler: (ctx: Overwrite<InputCtx, CustomCtx>, ...args: ArgsForHandlerType<ArgsOutput<ArgsValidator>, CustomMadeArgs>) => ReturnValue;
119
+ /**
120
+ * Validates the value returned by the function.
121
+ * Note: you can't pass an object directly without wrapping it
122
+ * in `z.object()`.
123
+ */
124
+ returns?: ReturnsZodValidator;
125
+ /**
126
+ * If true, the function will not be validated by Convex,
127
+ * in case you're seeing performance issues with validating twice.
128
+ */
129
+ skipConvexValidation?: boolean;
130
+ } & {
131
+ [key in keyof ExtraArgs as key extends 'args' | 'handler' | 'skipConvexValidation' | 'returns' ? never : key]: ExtraArgs[key];
132
+ }) | {
133
+ (ctx: Overwrite<InputCtx, CustomCtx>, ...args: ArgsForHandlerType<ArgsOutput<ArgsValidator>, CustomMadeArgs>): ReturnValue;
134
+ }): Registration<FuncType, Visibility, ArgsArrayToObject<CustomArgsValidator extends Record<string, never> ? ArgsInput<ArgsValidator> : ArgsInput<ArgsValidator> extends [infer A] ? [Expand<A & import('convex/values').ObjectType<CustomArgsValidator>>] : [import('convex/values').ObjectType<CustomArgsValidator>]>, ReturnsZodValidator extends void ? ReturnValue : ReturnValueOutput<ReturnsZodValidator>>;
135
+ };
136
+ export declare function customFnBuilder<Ctx extends Record<string, any>, Builder extends (fn: any) => any, CustomArgsValidator extends PropertyValidators, CustomCtx extends Record<string, any>, CustomMadeArgs extends Record<string, any>, ExtraArgs extends Record<string, any> = Record<string, any>>(builder: Builder, customization: Customization<Ctx, CustomArgsValidator, CustomCtx, CustomMadeArgs, ExtraArgs> | CustomizationWithHooks<Ctx, CustomCtx, CustomMadeArgs, ExtraArgs>): (fn: any) => any;
137
+ export declare function zCustomQuery<CustomArgsValidator extends PropertyValidators, CustomCtx extends Record<string, any>, CustomMadeArgs extends Record<string, any>, Visibility extends FunctionVisibility, DataModel extends GenericDataModel, ExtraArgs extends Record<string, any> = Record<string, any>>(query: QueryBuilder<DataModel, Visibility>, customization: Customization<any, CustomArgsValidator, CustomCtx, CustomMadeArgs, ExtraArgs>): CustomBuilder<'query', CustomArgsValidator, CustomCtx, CustomMadeArgs, GenericQueryCtx<DataModel>, Visibility, ExtraArgs>;
138
+ export declare function zCustomQuery<CustomArgsValidator extends PropertyValidators, CustomCtx extends Record<string, any>, CustomMadeArgs extends Record<string, any>, Visibility extends FunctionVisibility, ExtraArgs extends Record<string, any> = Record<string, any>>(query: QueryBuilder<any, Visibility>, customization: Customization<any, CustomArgsValidator, CustomCtx, CustomMadeArgs, ExtraArgs>): CustomBuilder<'query', CustomArgsValidator, CustomCtx, CustomMadeArgs, any, Visibility, ExtraArgs>;
139
+ export declare function zCustomMutation<CustomArgsValidator extends PropertyValidators, CustomCtx extends Record<string, any>, CustomMadeArgs extends Record<string, any>, Builder extends (fn: any) => any, Visibility extends FunctionVisibility = 'public', ExtraArgs extends Record<string, any> = Record<string, any>>(mutation: Builder, customization: Customization<any, CustomArgsValidator, CustomCtx, CustomMadeArgs, ExtraArgs>): CustomBuilder<'mutation', CustomArgsValidator, CustomCtx, CustomMadeArgs, ExtractCtx<Builder>, Visibility, ExtraArgs>;
140
+ export declare function zCustomAction<CustomArgsValidator extends PropertyValidators, CustomCtx extends Record<string, any>, CustomMadeArgs extends Record<string, any>, Builder extends (fn: any) => any, Visibility extends FunctionVisibility = 'public', ExtraArgs extends Record<string, any> = Record<string, any>>(action: Builder, customization: Customization<any, CustomArgsValidator, CustomCtx, CustomMadeArgs, ExtraArgs>): CustomBuilder<'action', CustomArgsValidator, CustomCtx, CustomMadeArgs, ExtractCtx<Builder>, Visibility, ExtraArgs>;
141
+ export {};
142
+ //# sourceMappingURL=custom.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"custom.d.ts","sourceRoot":"","sources":["../src/custom.ts"],"names":[],"mappings":"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"}
package/dist/ids.d.ts ADDED
@@ -0,0 +1,23 @@
1
+ /**
2
+ * IDs + registry for Convex + Zod v4
3
+ */
4
+ import type { GenericId } from 'convex/values';
5
+ import { z } from 'zod';
6
+ export declare const registryHelpers: {
7
+ getMetadata: (type: z.ZodTypeAny) => any;
8
+ setMetadata: (type: z.ZodTypeAny, meta: any) => WeakMap<z.ZodType<unknown, unknown, z.core.$ZodTypeInternals<unknown, unknown>>, any>;
9
+ };
10
+ /**
11
+ * Create a Zod validator for a Convex Id
12
+ *
13
+ * Compatible with AI SDK and other tools that don't support transforms.
14
+ * Uses type-level branding instead of runtime transforms for GenericId<T> compatibility.
15
+ *
16
+ * @param tableName - The Convex table name for this ID
17
+ * @returns A Zod string validator typed as GenericId<TableName>
18
+ */
19
+ export declare function zid<TableName extends string>(tableName: TableName): z.ZodType<GenericId<TableName>> & {
20
+ _tableName: TableName;
21
+ };
22
+ export type Zid<TableName extends string> = ReturnType<typeof zid<TableName>>;
23
+ //# sourceMappingURL=ids.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ids.d.ts","sourceRoot":"","sources":["../src/ids.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AAC9C,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAKvB,eAAO,MAAM,eAAe;wBACN,CAAC,CAAC,UAAU;wBACZ,CAAC,CAAC,UAAU,QAAQ,GAAG;CAC5C,CAAA;AAED;;;;;;;;GAQG;AACH,wBAAgB,GAAG,CAAC,SAAS,SAAS,MAAM,EAC1C,SAAS,EAAE,SAAS,GACnB,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,GAAG;IAAE,UAAU,EAAE,SAAS,CAAA;CAAE,CAwB7D;AAED,MAAM,MAAM,GAAG,CAAC,SAAS,SAAS,MAAM,IAAI,UAAU,CAAC,OAAO,GAAG,CAAC,SAAS,CAAC,CAAC,CAAA"}