import { addMethod, array, number, object, string } from 'yup'; import { AnyObject, Maybe, Optionals } from 'yup/lib/types'; import BaseSchema, { AnySchema } from 'yup/lib/schema'; import { Asserts, TypeOf } from 'yup/lib/util/types'; import { AssertsShape, ObjectShape, TypeOfShape } from 'yup/lib/object'; import Lazy from 'yup/lib/Lazy'; import isRequired from './isRequired'; import npi from './npi'; import phone from './phone'; export { avDate } from './date'; export { dateRange } from './dateRange'; addMethod(array, 'isRequired', isRequired); addMethod(number, 'isRequired', isRequired); addMethod(object, 'isRequired', isRequired); addMethod(string, 'isRequired', isRequired); addMethod(number, 'npi', npi); addMethod(string, 'npi', npi); addMethod(number, 'phone', phone); addMethod(string, 'phone', phone); // Add definitions to yup declare module 'yup' { interface StringSchema< TType extends Maybe = string | undefined, TContext extends AnyObject = AnyObject, TOut extends TType = TType > extends BaseSchema { isRequired(required?: boolean, errorMessage?: string): StringSchema; npi(errorMessage?: string): StringSchema; phone(errorMessage?: string): StringSchema; } interface NumberSchema< TType extends Maybe = number | undefined, TContext extends AnyObject = AnyObject, TOut extends TType = TType > extends BaseSchema { isRequired(required?: boolean, errorMessage?: string): NumberSchema; npi(errorMessage?: string): NumberSchema; phone(errorMessage?: string): NumberSchema; } interface ArraySchema< // eslint-disable-next-line @typescript-eslint/no-explicit-any T extends AnySchema | Lazy, C extends AnyObject = AnyObject, TIn extends Maybe[]> = TypeOf[] | undefined, TOut extends Maybe[]> = Asserts[] | Optionals > extends BaseSchema { isRequired(required?: boolean, errorMessage?: string): ArraySchema; } interface ObjectSchema< TShape extends ObjectShape, TContext extends AnyObject = AnyObject, TIn extends Maybe> = TypeOfShape, TOut extends Maybe> = AssertsShape | Optionals > extends BaseSchema { isRequired(required?: boolean, errorMessage?: string): ObjectSchema; } }