@@ -9,6 +9,22 @@ import type { ValibotFinal, ValibotResult } from './shared/types';
99import type { ValibotPlugin } from './types' ;
1010
1111export type Resolvers = Plugin . Resolvers < {
12+ /**
13+ * Resolver for array schemas.
14+ *
15+ * Allows customization of how array types are rendered.
16+ *
17+ * Returning `undefined` will execute the default resolver logic.
18+ */
19+ array ?: ( ctx : ArrayResolverContext ) => PipeResult ;
20+ /**
21+ * Resolver for boolean schemas.
22+ *
23+ * Allows customization of how boolean types are rendered.
24+ *
25+ * Returning `undefined` will execute the default resolver logic.
26+ */
27+ boolean ?: ( ctx : BooleanResolverContext ) => PipeResult ;
1228 /**
1329 * Resolver for enum schemas.
1430 *
@@ -17,6 +33,30 @@ export type Resolvers = Plugin.Resolvers<{
1733 * Returning `undefined` will execute the default resolver logic.
1834 */
1935 enum ?: ( ctx : EnumResolverContext ) => PipeResult ;
36+ /**
37+ * Resolver for intersection schemas.
38+ *
39+ * Allows customization of how intersection types are rendered.
40+ *
41+ * Returning `undefined` will execute the default resolver logic.
42+ */
43+ intersection ?: ( ctx : IntersectionResolverContext ) => PipeResult ;
44+ /**
45+ * Resolver for never schemas.
46+ *
47+ * Allows customization of how never types are rendered.
48+ *
49+ * Returning `undefined` will execute the default resolver logic.
50+ */
51+ never ?: ( ctx : NeverResolverContext ) => PipeResult ;
52+ /**
53+ * Resolver for null schemas.
54+ *
55+ * Allows customization of how null types are rendered.
56+ *
57+ * Returning `undefined` will execute the default resolver logic.
58+ */
59+ null ?: ( ctx : NullResolverContext ) => PipeResult ;
2060 /**
2161 * Resolver for number schemas.
2262 *
@@ -41,6 +81,38 @@ export type Resolvers = Plugin.Resolvers<{
4181 * Returning `undefined` will execute the default resolver logic.
4282 */
4383 string ?: ( ctx : StringResolverContext ) => PipeResult ;
84+ /**
85+ * Resolver for tuple schemas.
86+ *
87+ * Allows customization of how tuple types are rendered.
88+ *
89+ * Returning `undefined` will execute the default resolver logic.
90+ */
91+ tuple ?: ( ctx : TupleResolverContext ) => PipeResult ;
92+ /**
93+ * Resolver for undefined schemas.
94+ *
95+ * Allows customization of how undefined types are rendered.
96+ *
97+ * Returning `undefined` will execute the default resolver logic.
98+ */
99+ undefined ?: ( ctx : UndefinedResolverContext ) => PipeResult ;
100+ /**
101+ * Resolver for union schemas.
102+ *
103+ * Allows customization of how union types are rendered.
104+ *
105+ * Returning `undefined` will execute the default resolver logic.
106+ */
107+ union ?: ( ctx : UnionResolverContext ) => PipeResult ;
108+ /**
109+ * Resolver for unknown schemas.
110+ *
111+ * Allows customization of how unknown types are rendered.
112+ *
113+ * Returning `undefined` will execute the default resolver logic.
114+ */
115+ unknown ?: ( ctx : UnknownResolverContext ) => PipeResult ;
44116 /**
45117 * Resolvers for request and response validators.
46118 *
@@ -66,6 +138,14 @@ export type Resolvers = Plugin.Resolvers<{
66138 */
67139 response ?: ValidatorResolver ;
68140 } ;
141+ /**
142+ * Resolver for void schemas.
143+ *
144+ * Allows customization of how void types are rendered.
145+ *
146+ * Returning `undefined` will execute the default resolver logic.
147+ */
148+ void ?: ( ctx : VoidResolverContext ) => PipeResult ;
69149} > ;
70150
71151type ValidatorResolver = ( ctx : ValidatorResolverContext ) => PipeResult | null | undefined ;
@@ -96,6 +176,33 @@ interface BaseContext extends DollarTsDsl {
96176 } ;
97177}
98178
179+ export interface ArrayResolverContext extends BaseContext {
180+ applyModifiers : ( result : ValibotResult , opts ?: { optional ?: boolean } ) => ValibotFinal ;
181+ /**
182+ * Nodes used to build different parts of the result.
183+ */
184+ nodes : {
185+ base : ( ctx : ArrayResolverContext ) => PipeResult ;
186+ length : ( ctx : ArrayResolverContext ) => PipeResult ;
187+ maxLength : ( ctx : ArrayResolverContext ) => PipeResult ;
188+ minLength : ( ctx : ArrayResolverContext ) => PipeResult ;
189+ } ;
190+ schema : SchemaWithType < 'array' > ;
191+ walk : Walker < ValibotResult , ValibotPlugin [ 'Instance' ] > ;
192+ walkerCtx : SchemaVisitorContext < ValibotPlugin [ 'Instance' ] > ;
193+ }
194+
195+ export interface BooleanResolverContext extends BaseContext {
196+ /**
197+ * Nodes used to build different parts of the result.
198+ */
199+ nodes : {
200+ base : ( ctx : BooleanResolverContext ) => PipeResult ;
201+ const : ( ctx : BooleanResolverContext ) => PipeResult ;
202+ } ;
203+ schema : SchemaWithType < 'boolean' > ;
204+ }
205+
99206export interface EnumResolverContext extends BaseContext {
100207 /**
101208 * Nodes used to build different parts of the result.
@@ -122,6 +229,39 @@ export interface EnumResolverContext extends BaseContext {
122229 schema : SchemaWithType < 'enum' > ;
123230}
124231
232+ export interface IntersectionResolverContext extends BaseContext {
233+ applyModifiers : ( result : ValibotResult , opts ?: { optional ?: boolean } ) => ValibotFinal ;
234+ childResults : Array < ValibotResult > ;
235+ /**
236+ * Nodes used to build different parts of the result.
237+ */
238+ nodes : {
239+ base : ( ctx : IntersectionResolverContext ) => PipeResult ;
240+ } ;
241+ parentSchema : IR . SchemaObject ;
242+ schema : IR . SchemaObject ;
243+ }
244+
245+ export interface NeverResolverContext extends BaseContext {
246+ /**
247+ * Nodes used to build different parts of the result.
248+ */
249+ nodes : {
250+ base : ( ctx : NeverResolverContext ) => PipeResult ;
251+ } ;
252+ schema : SchemaWithType < 'never' > ;
253+ }
254+
255+ export interface NullResolverContext extends BaseContext {
256+ /**
257+ * Nodes used to build different parts of the result.
258+ */
259+ nodes : {
260+ base : ( ctx : NullResolverContext ) => PipeResult ;
261+ } ;
262+ schema : SchemaWithType < 'null' > ;
263+ }
264+
125265export interface NumberResolverContext extends BaseContext {
126266 /**
127267 * Nodes used to build different parts of the result.
@@ -175,6 +315,64 @@ export interface StringResolverContext extends BaseContext {
175315 schema : SchemaWithType < 'string' > ;
176316}
177317
318+ export interface TupleResolverContext extends BaseContext {
319+ applyModifiers : ( result : ValibotResult , opts ?: { optional ?: boolean } ) => ValibotFinal ;
320+ /**
321+ * Nodes used to build different parts of the result.
322+ */
323+ nodes : {
324+ base : ( ctx : TupleResolverContext ) => PipeResult ;
325+ const : ( ctx : TupleResolverContext ) => PipeResult ;
326+ } ;
327+ schema : SchemaWithType < 'tuple' > ;
328+ walk : Walker < ValibotResult , ValibotPlugin [ 'Instance' ] > ;
329+ walkerCtx : SchemaVisitorContext < ValibotPlugin [ 'Instance' ] > ;
330+ }
331+
332+ export interface UndefinedResolverContext extends BaseContext {
333+ /**
334+ * Nodes used to build different parts of the result.
335+ */
336+ nodes : {
337+ base : ( ctx : UndefinedResolverContext ) => PipeResult ;
338+ } ;
339+ schema : SchemaWithType < 'undefined' > ;
340+ }
341+
342+ export interface UnionResolverContext extends BaseContext {
343+ applyModifiers : ( result : ValibotResult , opts ?: { optional ?: boolean } ) => ValibotFinal ;
344+ childResults : Array < ValibotResult > ;
345+ /**
346+ * Nodes used to build different parts of the result.
347+ */
348+ nodes : {
349+ base : ( ctx : UnionResolverContext ) => PipeResult ;
350+ } ;
351+ parentSchema : IR . SchemaObject ;
352+ schema : IR . SchemaObject ;
353+ schemas : ReadonlyArray < IR . SchemaObject > ;
354+ }
355+
356+ export interface UnknownResolverContext extends BaseContext {
357+ /**
358+ * Nodes used to build different parts of the result.
359+ */
360+ nodes : {
361+ base : ( ctx : UnknownResolverContext ) => PipeResult ;
362+ } ;
363+ schema : SchemaWithType < 'unknown' > ;
364+ }
365+
366+ export interface VoidResolverContext extends BaseContext {
367+ /**
368+ * Nodes used to build different parts of the result.
369+ */
370+ nodes : {
371+ base : ( ctx : VoidResolverContext ) => PipeResult ;
372+ } ;
373+ schema : SchemaWithType < 'void' > ;
374+ }
375+
178376export interface ValidatorResolverContext extends BaseContext {
179377 operation : IR . OperationObject ;
180378 /**
0 commit comments