This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
import { expression } from "@thilawyn/traitify-ts"
|
||||
import { ImplStatic, expression } from "@thilawyn/traitify-ts"
|
||||
import { AbstractClass } from "type-fest"
|
||||
import { z } from "zod"
|
||||
import { ZodSchemaObject } from "./ZodSchemaObject"
|
||||
|
||||
@@ -15,5 +16,23 @@ export const ExtendableZodSchemaObject = <
|
||||
.build()
|
||||
.subtrait()
|
||||
.implement(Super => class ExtendableZodSchemaObjectImpl extends Super {
|
||||
static extend<
|
||||
Self extends AbstractClass<ExtendableZodSchemaObjectImpl> & ImplStatic<typeof ExtendableZodSchemaObjectImpl>,
|
||||
|
||||
ExtendedT extends z.ZodRawShape,
|
||||
ExtendedCatchall extends z.ZodTypeAny,
|
||||
ExtendedValues extends Values,
|
||||
ExtendedPartialValues extends Partial<ExtendedValues>,
|
||||
>(
|
||||
this: Self,
|
||||
|
||||
schemaWithDefaults: (
|
||||
schemaWithDefaults: typeof this.schemaWithDefaults
|
||||
) => z.ZodObject<ExtendedT, "strip", ExtendedCatchall, ExtendedValues, ExtendedPartialValues>,
|
||||
) {
|
||||
return expression
|
||||
.extends(this)
|
||||
.expresses(ExtendableZodSchemaObject(schemaWithDefaults(this.schemaWithDefaults)))
|
||||
}
|
||||
})
|
||||
.build()
|
||||
|
||||
Reference in New Issue
Block a user