From 732780342dc4ea1c8de654c3936d10615054886b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julien=20Valverd=C3=A9?= Date: Sat, 9 Mar 2024 01:52:17 +0100 Subject: [PATCH] ZodSchemaClassBuilder work --- src/builders/ZodSchemaClassBuilder.ts | 18 ++++-------------- src/tests.ts | 12 ++++++------ 2 files changed, 10 insertions(+), 20 deletions(-) diff --git a/src/builders/ZodSchemaClassBuilder.ts b/src/builders/ZodSchemaClassBuilder.ts index eb5dceb..6c701d2 100644 --- a/src/builders/ZodSchemaClassBuilder.ts +++ b/src/builders/ZodSchemaClassBuilder.ts @@ -4,11 +4,10 @@ import { JsonifiableObject } from "type-fest/source/jsonifiable" import { z } from "zod" import { JsonifiableZodSchemaObject } from "../traits/JsonifiableZodSchemaObject" import { ZodSchemaObject, ZodSchemaObjectTrait } from "../traits/ZodSchemaObject" -import { StaticMembers } from "../util" export class ZodSchemaClassBuilder< - Superclass extends AbstractClass, + Superclass extends AbstractClass, const Traits extends readonly Trait[], > { declare ["constructor"]: typeof ZodSchemaClassBuilder @@ -17,8 +16,6 @@ export class ZodSchemaClassBuilder< schema< - Super extends AbstractClass & { schema?: never, schemaWithDefaultValues?: never }, - SchemaT extends z.ZodRawShape, SchemaUnknownKeys extends z.UnknownKeysParam, SchemaCatchall extends z.ZodTypeAny, @@ -30,7 +27,7 @@ export class ZodSchemaClassBuilder< Values extends object, PartialValues extends Partial, >( - this: ZodSchemaClassBuilder, + this: ZodSchemaClassBuilder, { schema, schemaWithDefaultValues }: { schema: z.ZodObject @@ -40,9 +37,8 @@ export class ZodSchemaClassBuilder< ) => z.ZodObject }, ) { - class ZodSchemaObjectConstructor extends (this.expression.expressionSuperclass as AbstractClass) { + abstract class ZodSchemaObjectConstructor { constructor(values: Values) { - super() Object.assign(this, values) } } @@ -50,13 +46,7 @@ export class ZodSchemaClassBuilder< return new this.constructor( this.expression .extends( - ZodSchemaObjectConstructor as unknown as ( - AbstractClass< - InstanceType & Values, - [values: Values] - > & - StaticMembers - ) + ZodSchemaObjectConstructor as AbstractClass ) .expresses(ZodSchemaObject(schema, schemaWithDefaultValues(schema))) ) diff --git a/src/tests.ts b/src/tests.ts index 676f6c4..296e483 100644 --- a/src/tests.ts +++ b/src/tests.ts @@ -18,15 +18,15 @@ const exp = zodSchemaClass id: s.shape.id.default(-1n), }), }) - // .jsonifiable({ - // jsonifySchema: s => s.extend({ + .jsonifiable({ + jsonifySchema: s => s.extend({ - // }), + }), - // dejsonifySchema: s => s.extend({ + dejsonifySchema: s => s.extend({ - // }), - // }) + }), + }) .expression .expresses(MobXObservableZodSchemaObject) .build()