From a4b8166af811eba173d6d3ec8951486d90de5811 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julien=20Valverd=C3=A9?= Date: Sun, 28 Jan 2024 01:57:58 +0100 Subject: [PATCH] Inheritance logic refactoring --- src/ZodSchemaClass.ts | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) 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, + ]> ) }