ExtendableZodSchemaObject
Some checks failed
continuous-integration/drone/push Build is failing

This commit is contained in:
Julien Valverdé
2024-03-17 13:12:42 +01:00
parent 9f7b7f8b42
commit d45708dc26
3 changed files with 22 additions and 23 deletions

View File

@@ -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()