diff --git a/src/TZodSchemaClass.ts b/src/TZodSchemaClass.ts
index 4dd40c7..3697473 100644
--- a/src/TZodSchemaClass.ts
+++ b/src/TZodSchemaClass.ts
@@ -2,7 +2,7 @@ import { Effect } from "effect"
import { AbstractClass, Class as ConcreteClass, HasRequiredKeys, Opaque } from "type-fest"
import { z } from "zod"
import { DefinedDefaultValuesTag } from "."
-import { Class, ClassType, GetClassType, StaticMembers } from "./util"
+import { Class, ClassType, ClassesInstances, ClassesStaticMembers, GetClassType, MergeInheritanceTree } from "./util"
export type NewZodSchemaInstanceInput<
@@ -25,20 +25,22 @@ export type NewZodSchemaInstanceArgs =
type ExtendZodSchemaClass<
- Parent extends AbstractClass,
- Self extends AbstractClass,
+ Super extends AbstractClass,
+ Self extends AbstractClass,
> = (
Class<
- GetClassType,
+ GetClassType,
- Omit, keyof InstanceType> &
- InstanceType,
+ MergeInheritanceTree<
+ ClassesInstances<[Super, Self]>
+ >,
ConstructorParameters
> &
- Omit &
- StaticMembers
+ MergeInheritanceTree<
+ ClassesStaticMembers<[Super, Self]>
+ >
)
@@ -82,7 +84,7 @@ export type TZodSchemaClass<
): Effect.Effect, Values>
extend<
- Parent extends AbstractClass,
+ Super extends AbstractClass,
ExtendedSchemaT extends z.ZodRawShape,
ExtendedSchemaUnknownKeys extends z.UnknownKeysParam,
@@ -91,7 +93,7 @@ export type TZodSchemaClass<
ExtendedValues extends Values,
ExtendedDefaultValues extends Partial,
>(
- this: Parent,
+ this: Super,
props: {
schema: (props: {
@@ -102,7 +104,7 @@ export type TZodSchemaClass<
defaultValues: (defaultValues: DefaultValues) => Opaque
},
): ExtendZodSchemaClass<
- Parent,
+ Super,
TZodSchemaClass<
ExtendedSchemaT,
diff --git a/src/ZodSchemaClass.ts b/src/ZodSchemaClass.ts
index ff4569f..bb1e85d 100644
--- a/src/ZodSchemaClass.ts
+++ b/src/ZodSchemaClass.ts
@@ -6,7 +6,7 @@ import { Class, GetClassType, MergeInheritanceTree, MergeInheritanceTreeWithoutO
export function ZodSchemaClassOf<
- Parent extends AbstractClass,
+ Super extends AbstractClass,
SchemaT extends z.ZodRawShape,
SchemaUnknownKeys extends z.UnknownKeysParam,
@@ -15,7 +15,7 @@ export function ZodSchemaClassOf<
Values extends {},
DefaultValues extends Partial,
>(
- of: Parent,
+ of: Super,
{ schema, defaultValues }: {
schema: z.ZodObject
@@ -107,10 +107,10 @@ export function ZodSchemaClassOf<
}
} as unknown as (
Class<
- GetClassType,
+ GetClassType,
MergeInheritanceTreeWithoutOverriding<[
- InstanceType,
+ InstanceType,
InstanceType,
]> &
@@ -118,13 +118,15 @@ export function ZodSchemaClassOf<
> &
MergeInheritanceTree<[
- StaticMembers,
+ StaticMembers,
StaticMembers,
]>
)
}
+class DefaultRoot {}
+
export function ZodSchemaClass<
SchemaT extends z.ZodRawShape,
SchemaUnknownKeys extends z.UnknownKeysParam,
@@ -138,5 +140,5 @@ export function ZodSchemaClass<
defaultValues: Opaque
},
) {
- return ZodSchemaClassOf(Object, props)
+ return ZodSchemaClassOf(DefaultRoot, props)
}