From 68b39f4997ae4f9ecd94181a33d99f8bf7aeb4e9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julien=20Valverd=C3=A9?= Date: Thu, 22 Feb 2024 21:42:35 +0100 Subject: [PATCH] ZodSchemaClassBuilder work --- src/ZodSchemaClass.ts | 20 +++++--------------- src/tests.ts | 4 ++++ 2 files changed, 9 insertions(+), 15 deletions(-) diff --git a/src/ZodSchemaClass.ts b/src/ZodSchemaClass.ts index 4b38b2b..f8fe517 100644 --- a/src/ZodSchemaClass.ts +++ b/src/ZodSchemaClass.ts @@ -2,7 +2,7 @@ import { Trait, TraitExpressionBuilder } from "@thilawyn/traitify-ts" import { AbstractClass, Simplify } from "type-fest" import { JsonifiableObject } from "type-fest/source/jsonifiable" import { z } from "zod" -import { ZodSchemaClass } from "./shapes/ZodSchemaClass" +import { ZodSchemaAbstractClass } from "./shapes/ZodSchemaClass" import { ExtendableZodSchemaObject } from "./traits/ExtendableZodSchemaObject" import { InstantiableZodSchemaObject } from "./traits/InstantiableZodSchemaObject" import { Extend, StaticMembers } from "./util" @@ -78,7 +78,8 @@ extends TraitExpressionBuilder { } jsonifiable< - Superclass extends ZodSchemaClass, + Superclass extends ZodSchemaAbstractClass + & { jsonifySchema?: never, dejsonifySchema?: never }, Instance extends Values, SchemaT extends z.ZodRawShape, @@ -99,7 +100,7 @@ extends TraitExpressionBuilder { DejsonifySchemaCatchall extends z.ZodTypeAny, >( this: ZodSchemaClassBuilder< - Superclass | ZodSchemaClass, + Superclass | ZodSchemaAbstractClass, Traits >, @@ -130,18 +131,7 @@ extends TraitExpressionBuilder { } return new ZodSchemaClassBuilder( - JsonifiableSchemas as unknown as ( - AbstractClass< - InstanceType, - ConstructorParameters - > & - Simplify< - Extend<[ - StaticMembers, - StaticMembers, - ]> - > - ), + JsonifiableSchemas as unknown as Superclass & StaticMembers, [ ...this.expressionTraits, diff --git a/src/tests.ts b/src/tests.ts index 40a523c..3a49e24 100644 --- a/src/tests.ts +++ b/src/tests.ts @@ -14,6 +14,10 @@ const newTestExp = new ZodSchemaClassBuilder(TraitExpression.NullSuperclass, []) defaultValues: { id: -1n }, }) + .jsonifiable({ + jsonifySchema: ({ schema }) => schema.extend({}), + dejsonifySchema: ({ schema }) => schema.extend({}), + }) .expresses(ObservableZodSchemaObject) .build()