diff --git a/src/ZodSchemaClass.ts b/src/ZodSchemaClass.ts index 72d10c9..50fb98a 100644 --- a/src/ZodSchemaClass.ts +++ b/src/ZodSchemaClass.ts @@ -1,4 +1,4 @@ -import { Trait, TraitExpressionBuilder } from "@thilawyn/traitify-ts" +import { Trait, TraitExpression, TraitExpressionBuilder } from "@thilawyn/traitify-ts" import { AbstractClass } from "type-fest" import { JsonifiableObject } from "type-fest/source/jsonifiable" import { z } from "zod" @@ -15,20 +15,18 @@ export class ZodSchemaClassBuilder< const Traits extends Trait[], > extends TraitExpressionBuilder { - // extends< - // This extends ZodSchemaClassBuilder< - // typeof TraitExpression.NullSuperclass, // Ensures `extends` can only be called when the expression does not have a superclass - // Traits - // >, - // Super extends AbstractClass, - // >( - // this: This, - // superclass: Super, - // ) { - // return new ZodSchemaClassBuilder( - // this.expressionBuilder.extends(superclass) - // ) - // } + extends< + Super extends AbstractClass + >( + // \/ Ensures `extends` can only be called once at the beginning + this: ZodSchemaClassBuilder, + superclass: Super, + ) { + return new ZodSchemaClassBuilder( + superclass, + this.expressionTraits, + ) + } schema< Superclass extends AbstractClass & { schema?: never, defaultValues?: never },