diff --git a/src/ZodSchemaClass.ts b/src/ZodSchemaClass.ts index 07c0342..d18c100 100644 --- a/src/ZodSchemaClass.ts +++ b/src/ZodSchemaClass.ts @@ -1,5 +1,6 @@ import { Trait, TraitExpressionBuilder, expression } from "@thilawyn/traitify-ts" import { AbstractClass, Simplify } from "type-fest" +import { JsonifiableObject } from "type-fest/source/jsonifiable" import { z } from "zod" import { ExtendableZodSchemaObject } from "./traits/ExtendableZodSchemaObject" import { InstantiableZodSchemaObject } from "./traits/InstantiableZodSchemaObject" @@ -36,9 +37,12 @@ extends TraitExpressionBuilder { Values extends object, DefaultValues extends Partial, >( - this: ZodSchemaClassBuilder, - schema: z.ZodObject, - defaultValues: DefaultValues, + this: ZodSchemaClassBuilder, + + { schema, defaultValues }: { + schema: z.ZodObject + defaultValues: DefaultValues + }, ) { class Schemas extends (this.expressionSuperclass as AbstractClass) { static readonly schema = schema @@ -76,7 +80,21 @@ extends TraitExpressionBuilder { ) } - jsonifiable() { + jsonifiable< + Superclass extends AbstractClass, + + JsonifiedValues extends JsonifiableObject, + + JsonifySchemaT extends z.ZodRawShape, + JsonifySchemaUnknownKeys extends z.UnknownKeysParam, + JsonifySchemaCatchall extends z.ZodTypeAny, + + DejsonifySchemaT extends z.ZodRawShape, + DejsonifySchemaUnknownKeys extends z.UnknownKeysParam, + DejsonifySchemaCatchall extends z.ZodTypeAny, + >( + this: ZodSchemaClassBuilder, + ) { } } diff --git a/src/tests.ts b/src/tests.ts index b99ef6b..40a523c 100644 --- a/src/tests.ts +++ b/src/tests.ts @@ -1,38 +1,26 @@ import { Implements, TraitExpression } from "@thilawyn/traitify-ts" import { z } from "zod" -import { ZodSchemaClass, ZodSchemaClassBuilder } from "./ZodSchemaClass" +import { ZodSchemaClassBuilder } from "./ZodSchemaClass" import { ObservableZodSchemaObject } from "./traits/ObservableZodSchemaObject" const newTestExp = new ZodSchemaClassBuilder(TraitExpression.NullSuperclass, []) - .schema( - z.object({ + .schema({ + schema: z.object({ /** Object ID */ id: z.bigint(), name: z.string(), }), - { id: -1n }, - ) - .expresses(ObservableZodSchemaObject) - .build() - -const TestExp = ZodSchemaClass({ - schema: z.object({ - /** Object ID */ - id: z.bigint(), - name: z.string(), - }), - - defaultValues: { id: -1n }, -}) + defaultValues: { id: -1n }, + }) .expresses(ObservableZodSchemaObject) .build() @newTestExp.staticImplements class Test extends newTestExp.extends implements Implements {} -Test.schema +Test.defaultValues const inst = Test.create({ id: 1n, name: "" }) console.log(inst)