diff --git a/src/ZodSchemaClass.ts b/src/ZodSchemaClass.ts index d2dbf62..ff4569f 100644 --- a/src/ZodSchemaClass.ts +++ b/src/ZodSchemaClass.ts @@ -2,16 +2,11 @@ import { Effect, pipe } from "effect" import { AbstractClass, Class as ConcreteClass, Opaque } from "type-fest" import { z } from "zod" import { DefinedDefaultValuesTag, NewZodSchemaInstanceArgs, NewZodSchemaInstanceInput, TZodSchemaClass } from "." -import { Class, GetClassType, StaticMembers, parseZodTypeEffect } from "./util" +import { Class, GetClassType, MergeInheritanceTree, MergeInheritanceTreeWithoutOverriding, StaticMembers, parseZodTypeEffect } from "./util" -type ExtendableClass = AbstractClass & { - schema?: never - defaultValues?: never -} - export function ZodSchemaClassOf< - Parent extends ExtendableClass, + Parent extends AbstractClass, SchemaT extends z.ZodRawShape, SchemaUnknownKeys extends z.UnknownKeysParam, @@ -114,14 +109,18 @@ export function ZodSchemaClassOf< Class< GetClassType, - InstanceType & - InstanceType, + MergeInheritanceTreeWithoutOverriding<[ + InstanceType, + InstanceType, + ]> & ConstructorParameters > & - StaticMembers & - StaticMembers + MergeInheritanceTree<[ + StaticMembers, + StaticMembers, + ]> ) }