From 93edcde25815004462d874d089d146825e62860e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julien=20Valverd=C3=A9?= Date: Sun, 25 Feb 2024 05:38:27 +0100 Subject: [PATCH] Extend fix --- src/builders/ZodSchemaClassExtender.ts | 6 +++--- src/tests.ts | 15 +++++++-------- 2 files changed, 10 insertions(+), 11 deletions(-) diff --git a/src/builders/ZodSchemaClassExtender.ts b/src/builders/ZodSchemaClassExtender.ts index f2233bf..1922c2d 100644 --- a/src/builders/ZodSchemaClassExtender.ts +++ b/src/builders/ZodSchemaClassExtender.ts @@ -1,7 +1,7 @@ import { AbstractClass } from "type-fest" import { z } from "zod" import { ZodSchemaAbstractClass } from "../shapes/ZodSchemaClass" -import { Extend, StaticMembers } from "../util" +import { Extend, Override, StaticMembers } from "../util" export class ZodSchemaClassExtender> { @@ -46,11 +46,11 @@ export class ZodSchemaClassExtender> { } return new this.constructor( - this.superclass as unknown as AbstractClass< + Schemas as unknown as AbstractClass< Extend<[SuperInstance, Values]>, [values: Values] > & - Extend<[ + Override<[ StaticMembers, StaticMembers, ]> diff --git a/src/tests.ts b/src/tests.ts index 9498792..63a6827 100644 --- a/src/tests.ts +++ b/src/tests.ts @@ -38,20 +38,19 @@ const inst = User.create({ id: 1n, name: "" }) const jsonifiedUser = await inst.jsonifyPromise() -const extended = User.extend() +const AdminUserProto = User.extend() .schema({ schema: s => s.extend({ - prout: z.string() + name: z.literal("Admin"), + prout: z.string(), }), - defaultValues: v => v, + defaultValues: v => ({ ...v, name: "Admin" as const }), }) -class SubTest extends extended.build() {} - -const subInst = await SubTest.createPromise({ name: "", prout: "" }) - -// console.log(subInst) +class AdminUser extends AdminUserProto.build() {} +const subInst = await AdminUser.createPromise({ id: 2n, prout: "" }) +console.log(subInst) // class Box {