This commit is contained in:
@@ -1,7 +1,7 @@
|
|||||||
import { AbstractClass } from "type-fest"
|
import { AbstractClass } from "type-fest"
|
||||||
import { z } from "zod"
|
import { z } from "zod"
|
||||||
import { ZodSchemaAbstractClass } from "../shapes/ZodSchemaClass"
|
import { ZodSchemaAbstractClass } from "../shapes/ZodSchemaClass"
|
||||||
import { Extend, StaticMembers } from "../util"
|
import { Extend, Override, StaticMembers } from "../util"
|
||||||
|
|
||||||
|
|
||||||
export class ZodSchemaClassExtender<Superclass extends AbstractClass<object>> {
|
export class ZodSchemaClassExtender<Superclass extends AbstractClass<object>> {
|
||||||
@@ -46,11 +46,11 @@ export class ZodSchemaClassExtender<Superclass extends AbstractClass<object>> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
return new this.constructor(
|
return new this.constructor(
|
||||||
this.superclass as unknown as AbstractClass<
|
Schemas as unknown as AbstractClass<
|
||||||
Extend<[SuperInstance, Values]>,
|
Extend<[SuperInstance, Values]>,
|
||||||
[values: Values]
|
[values: Values]
|
||||||
> &
|
> &
|
||||||
Extend<[
|
Override<[
|
||||||
StaticMembers<Super>,
|
StaticMembers<Super>,
|
||||||
StaticMembers<typeof Schemas>,
|
StaticMembers<typeof Schemas>,
|
||||||
]>
|
]>
|
||||||
|
|||||||
15
src/tests.ts
15
src/tests.ts
@@ -38,20 +38,19 @@ const inst = User.create({ id: 1n, name: "" })
|
|||||||
const jsonifiedUser = await inst.jsonifyPromise()
|
const jsonifiedUser = await inst.jsonifyPromise()
|
||||||
|
|
||||||
|
|
||||||
const extended = User.extend()
|
const AdminUserProto = User.extend()
|
||||||
.schema({
|
.schema({
|
||||||
schema: s => s.extend({
|
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() {}
|
class AdminUser extends AdminUserProto.build() {}
|
||||||
|
const subInst = await AdminUser.createPromise({ id: 2n, prout: "" })
|
||||||
const subInst = await SubTest.createPromise({ name: "", prout: "" })
|
console.log(subInst)
|
||||||
|
|
||||||
// console.log(subInst)
|
|
||||||
|
|
||||||
|
|
||||||
// class Box<T> {
|
// class Box<T> {
|
||||||
|
|||||||
Reference in New Issue
Block a user