From e35db63da8c829e21274b6800d7029174c17e30e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julien=20Valverd=C3=A9?= Date: Sun, 28 Jan 2024 02:33:05 +0100 Subject: [PATCH] Refactoring --- src/TZodSchemaClass.ts | 24 +++++++++++++----------- src/ZodSchemaClass.ts | 14 ++++++++------ 2 files changed, 21 insertions(+), 17 deletions(-) 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) }