@@ -14,9 +14,14 @@ import { isCallable, FieldValidationMetaInfo } from '../../shared';
1414/**
1515 * Used internally
1616 */
17- interface FieldValidationContext {
17+ interface FieldValidationContext < TValue = unknown > {
1818 name : string ;
19- rules : GenericValidateFunction | GenericValidateFunction [ ] | YupValidator | string | Record < string , unknown > ;
19+ rules :
20+ | GenericValidateFunction < TValue >
21+ | GenericValidateFunction < TValue > [ ]
22+ | YupValidator < TValue >
23+ | string
24+ | Record < string , unknown > ;
2025 bails : boolean ;
2126 formData : Record < string , unknown > ;
2227}
@@ -30,18 +35,18 @@ interface ValidationOptions {
3035/**
3136 * Validates a value against the rules.
3237 */
33- export async function validate (
34- value : unknown ,
38+ export async function validate < TValue = unknown > (
39+ value : TValue ,
3540 rules :
3641 | string
3742 | Record < string , unknown | unknown [ ] >
38- | GenericValidateFunction
39- | GenericValidateFunction [ ]
43+ | GenericValidateFunction < TValue >
44+ | GenericValidateFunction < TValue > [ ]
4045 | YupValidator ,
4146 options : ValidationOptions = { }
4247) : Promise < ValidationResult > {
4348 const shouldBail = options ?. bails ;
44- const field : FieldValidationContext = {
49+ const field : FieldValidationContext < TValue > = {
4550 name : options ?. name || '{field}' ,
4651 rules,
4752 bails : shouldBail ?? true ,
@@ -60,7 +65,7 @@ export async function validate(
6065/**
6166 * Starts the validation process.
6267 */
63- async function _validate ( field : FieldValidationContext , value : unknown ) {
68+ async function _validate < TValue = unknown > ( field : FieldValidationContext < TValue > , value : TValue ) {
6469 if ( isYupValidator ( field . rules ) ) {
6570 return validateFieldWithYup ( value , field . rules , { bails : field . bails } ) ;
6671 }
0 commit comments