diff --git a/zod/src/__tests__/zod-v3.ts b/zod/src/__tests__/zod-v3.ts index 8e040ba..a979f10 100644 --- a/zod/src/__tests__/zod-v3.ts +++ b/zod/src/__tests__/zod-v3.ts @@ -175,4 +175,14 @@ describe('zodResolver', () => { }> >(); }); + + it('should accept z.ZodType', () => { + // https://github.com/react-hook-form/resolvers/issues/782 + const schema: z.ZodType<{ id: number }> = z.object({ id: z.number() }); + const resolver = zodResolver(schema); + + expectTypeOf(resolver).toEqualTypeOf< + Resolver<{ id: number }, unknown, { id: number }> + >(); + }); }); diff --git a/zod/src/zod.ts b/zod/src/zod.ts index ff55dfc..0217e84 100644 --- a/zod/src/zod.ts +++ b/zod/src/zod.ts @@ -15,11 +15,7 @@ const isZod3Error = (error: any): error is z3.ZodError => { return Array.isArray(error?.issues); }; const isZod3Schema = (schema: any): schema is z3.ZodSchema => { - return ( - '_def' in schema && - typeof schema._def === 'object' && - 'typeName' in schema._def - ); + return '_def' in schema && typeof schema._def === 'object'; }; const isZod4Error = (error: any): error is z4.$ZodError => { // instanceof is safe in Zod 4 (uses Symbol.hasInstance) @@ -143,9 +139,7 @@ type NonRawResolverOptions = { interface Zod3Type { _output: O; _input: I; - _def: { - typeName: string; - }; + _def: object; } // some type magic to make versions pre-3.25.0 still work