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,7 +1,7 @@
import { expression } from "@thilawyn/traitify-ts" import { expression } from "@thilawyn/traitify-ts"
import { Class } from "type-fest" import { Class } from "type-fest"
import { z } from "zod" import { z } from "zod"
import { ZodSchemaObject } from "./lib" import { ExtendableZodSchemaObject } from "./traits/ExtendableZodSchemaObject"
export function ZodSchemaClass< export function ZodSchemaClass<
@@ -20,5 +20,5 @@ export function ZodSchemaClass<
} }
} as Class<Values, [values: Values]> } as Class<Values, [values: Values]>
) )
.expresses(ZodSchemaObject(schemaWithDefaults)) .expresses(ExtendableZodSchemaObject(schemaWithDefaults))
} }

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 { z } from "zod"
import { ZodSchemaObject } from "./ZodSchemaObject" import { ZodSchemaObject } from "./ZodSchemaObject"
@@ -15,5 +16,23 @@ export const ExtendableZodSchemaObject = <
.build() .build()
.subtrait() .subtrait()
.implement(Super => class ExtendableZodSchemaObjectImpl extends Super { .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() .build()

View File

@@ -82,26 +82,6 @@ export const ZodSchemaObject = <
params, params,
) )
} }
// static extend<
// Self extends AbstractClass<ZodSchemaObject> & ImplStatic<typeof ZodSchemaObject>,
// 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(ZodSchemaObject(schemaWithDefaults(this.schemaWithDefaults)))
// }
}) })
.build() .build()