0.1.3 #4
@@ -1,4 +1,4 @@
|
|||||||
import { ImplStatic, expression } from "@thilawyn/traitify-ts"
|
import { ImplStatic, expression, implStaticThis } from "@thilawyn/traitify-ts"
|
||||||
import { AbstractClass } from "type-fest"
|
import { AbstractClass } from "type-fest"
|
||||||
import { z } from "zod"
|
import { z } from "zod"
|
||||||
import { Extend, StaticMembers } from "../util"
|
import { Extend, StaticMembers } from "../util"
|
||||||
@@ -18,8 +18,7 @@ export const ExtendableZodSchemaObject = <
|
|||||||
.subtrait()
|
.subtrait()
|
||||||
.implement(Super => class ExtendableZodSchemaObjectImpl extends Super {
|
.implement(Super => class ExtendableZodSchemaObjectImpl extends Super {
|
||||||
static extend<
|
static extend<
|
||||||
Self extends AbstractClass<ExtendableZodSchemaObjectImpl & Values, [values: Values]>
|
Self extends AbstractClass<Values, [values: Values]>,
|
||||||
& ImplStatic<typeof ExtendableZodSchemaObjectImpl>,
|
|
||||||
|
|
||||||
ExtendedT extends z.ZodRawShape,
|
ExtendedT extends z.ZodRawShape,
|
||||||
ExtendedCatchall extends z.ZodTypeAny,
|
ExtendedCatchall extends z.ZodTypeAny,
|
||||||
@@ -29,12 +28,13 @@ export const ExtendableZodSchemaObject = <
|
|||||||
this: Self,
|
this: Self,
|
||||||
|
|
||||||
schemaWithDefaults: (
|
schemaWithDefaults: (
|
||||||
schemaWithDefaults: typeof this.schemaWithDefaults
|
schemaWithDefaults: z.ZodObject<T, "strip", Catchall, Values, PartialValues>
|
||||||
) => z.ZodObject<ExtendedT, "strip", ExtendedCatchall, ExtendedValues, ExtendedPartialValues>,
|
) => z.ZodObject<ExtendedT, "strip", ExtendedCatchall, ExtendedValues, ExtendedPartialValues>,
|
||||||
) {
|
) {
|
||||||
|
const t = implStaticThis(ExtendableZodSchemaObjectImpl, this)
|
||||||
return expression
|
return expression
|
||||||
.extends(
|
.extends(
|
||||||
this as unknown as (
|
t as unknown as (
|
||||||
AbstractClass<
|
AbstractClass<
|
||||||
Omit<
|
Omit<
|
||||||
Extend<[InstanceType<Self>, ExtendedValues]>,
|
Extend<[InstanceType<Self>, ExtendedValues]>,
|
||||||
@@ -45,7 +45,7 @@ export const ExtendableZodSchemaObject = <
|
|||||||
Omit<StaticMembers<Self>, keyof ImplStatic<typeof ExtendableZodSchemaObjectImpl>>
|
Omit<StaticMembers<Self>, keyof ImplStatic<typeof ExtendableZodSchemaObjectImpl>>
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
.expresses(ExtendableZodSchemaObject(schemaWithDefaults(this.schemaWithDefaults)))
|
.expresses(ExtendableZodSchemaObject(schemaWithDefaults(t.schemaWithDefaults)))
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
.build()
|
.build()
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { ImplStatic, TraitInstance, TraitStaticMembers, trait } from "@thilawyn/traitify-ts"
|
import { TraitInstance, TraitStaticMembers, implStaticInstantiableThis, trait } from "@thilawyn/traitify-ts"
|
||||||
import { Class, Jsonifiable } from "type-fest"
|
import { Class, Jsonifiable } from "type-fest"
|
||||||
import { z } from "zod"
|
import { z } from "zod"
|
||||||
import { parseZodSchemaEffect } from "../util"
|
import { parseZodSchemaEffect } from "../util"
|
||||||
@@ -80,45 +80,39 @@ export const JsonifiedZodSchemaObject = <
|
|||||||
static jsonify<
|
static jsonify<
|
||||||
Instance extends JsonifiedValues
|
Instance extends JsonifiedValues
|
||||||
>(
|
>(
|
||||||
this: (
|
this: Class<Instance, [values: JsonifiedValues]>,
|
||||||
Class<Instance, [values: JsonifiedValues]> &
|
|
||||||
ImplStatic<typeof JsonifiedZodSchemaObjectImpl>
|
|
||||||
),
|
|
||||||
values: Values,
|
values: Values,
|
||||||
params?: Partial<z.ParseParams>,
|
params?: Partial<z.ParseParams>,
|
||||||
) {
|
) {
|
||||||
return this
|
const t = implStaticInstantiableThis(JsonifiedZodSchemaObjectImpl, this)
|
||||||
.pipeSchemaIntoInstance(this.jsonifySchema)
|
return t
|
||||||
|
.pipeSchemaIntoInstance(t.jsonifySchema)
|
||||||
.parse(values, params)
|
.parse(values, params)
|
||||||
}
|
}
|
||||||
|
|
||||||
static jsonifyPromise<
|
static jsonifyPromise<
|
||||||
Instance extends JsonifiedValues
|
Instance extends JsonifiedValues
|
||||||
>(
|
>(
|
||||||
this: (
|
this: Class<Instance, [values: JsonifiedValues]>,
|
||||||
Class<Instance, [values: JsonifiedValues]> &
|
|
||||||
ImplStatic<typeof JsonifiedZodSchemaObjectImpl>
|
|
||||||
),
|
|
||||||
values: Values,
|
values: Values,
|
||||||
params?: Partial<z.ParseParams>,
|
params?: Partial<z.ParseParams>,
|
||||||
) {
|
) {
|
||||||
return this
|
const t = implStaticInstantiableThis(JsonifiedZodSchemaObjectImpl, this)
|
||||||
.pipeSchemaIntoInstance(this.jsonifySchema)
|
return t
|
||||||
|
.pipeSchemaIntoInstance(t.jsonifySchema)
|
||||||
.parseAsync(values, params)
|
.parseAsync(values, params)
|
||||||
}
|
}
|
||||||
|
|
||||||
static jsonifyEffect<
|
static jsonifyEffect<
|
||||||
Instance extends JsonifiedValues
|
Instance extends JsonifiedValues
|
||||||
>(
|
>(
|
||||||
this: (
|
this: Class<Instance, [values: JsonifiedValues]>,
|
||||||
Class<Instance, [values: JsonifiedValues]> &
|
|
||||||
ImplStatic<typeof JsonifiedZodSchemaObjectImpl>
|
|
||||||
),
|
|
||||||
values: Values,
|
values: Values,
|
||||||
params?: Partial<z.ParseParams>,
|
params?: Partial<z.ParseParams>,
|
||||||
) {
|
) {
|
||||||
|
const t = implStaticInstantiableThis(JsonifiedZodSchemaObjectImpl, this)
|
||||||
return parseZodSchemaEffect(
|
return parseZodSchemaEffect(
|
||||||
this.pipeSchemaIntoInstance(this.jsonifySchema),
|
t.pipeSchemaIntoInstance(t.jsonifySchema),
|
||||||
values,
|
values,
|
||||||
params,
|
params,
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { ImplStatic, trait } from "@thilawyn/traitify-ts"
|
import { implStaticInstantiableThis, trait } from "@thilawyn/traitify-ts"
|
||||||
import { Class, HasRequiredKeys } from "type-fest"
|
import { Class, HasRequiredKeys } from "type-fest"
|
||||||
import { z } from "zod"
|
import { z } from "zod"
|
||||||
import { parseZodSchemaEffect, stripZodObjectDefaults } from "../util"
|
import { parseZodSchemaEffect, stripZodObjectDefaults } from "../util"
|
||||||
@@ -59,42 +59,36 @@ export const ZodSchemaObject = <
|
|||||||
static create<
|
static create<
|
||||||
Instance extends Values
|
Instance extends Values
|
||||||
>(
|
>(
|
||||||
this: (
|
this: Class<Instance, [values: Values]>,
|
||||||
Class<Instance, [values: Values]> &
|
|
||||||
ImplStatic<typeof ZodSchemaObjectImpl>
|
|
||||||
),
|
|
||||||
...[values, params]: CreateArgs<PartialValues>
|
...[values, params]: CreateArgs<PartialValues>
|
||||||
) {
|
) {
|
||||||
return this
|
const t = implStaticInstantiableThis(ZodSchemaObjectImpl, this)
|
||||||
.pipeSchemaIntoInstance(this.schemaWithDefaults)
|
return t
|
||||||
|
.pipeSchemaIntoInstance(t.schemaWithDefaults)
|
||||||
.parse(values, params)
|
.parse(values, params)
|
||||||
}
|
}
|
||||||
|
|
||||||
static createPromise<
|
static createPromise<
|
||||||
Instance extends Values
|
Instance extends Values
|
||||||
>(
|
>(
|
||||||
this: (
|
this: Class<Instance, [values: Values]>,
|
||||||
Class<Instance, [values: Values]> &
|
|
||||||
ImplStatic<typeof ZodSchemaObjectImpl>
|
|
||||||
),
|
|
||||||
...[values, params]: CreateArgs<PartialValues>
|
...[values, params]: CreateArgs<PartialValues>
|
||||||
) {
|
) {
|
||||||
return this
|
const t = implStaticInstantiableThis(ZodSchemaObjectImpl, this)
|
||||||
.pipeSchemaIntoInstance(this.schemaWithDefaults)
|
return t
|
||||||
|
.pipeSchemaIntoInstance(t.schemaWithDefaults)
|
||||||
.parseAsync(values, params)
|
.parseAsync(values, params)
|
||||||
}
|
}
|
||||||
|
|
||||||
static createEffect<
|
static createEffect<
|
||||||
Instance extends Values
|
Instance extends Values
|
||||||
>(
|
>(
|
||||||
this: (
|
this: Class<Instance, [values: Values]>,
|
||||||
Class<Instance, [values: Values]> &
|
|
||||||
ImplStatic<typeof ZodSchemaObjectImpl>
|
|
||||||
),
|
|
||||||
...[values, params]: CreateArgs<PartialValues>
|
...[values, params]: CreateArgs<PartialValues>
|
||||||
) {
|
) {
|
||||||
|
const t = implStaticInstantiableThis(ZodSchemaObjectImpl, this)
|
||||||
return parseZodSchemaEffect(
|
return parseZodSchemaEffect(
|
||||||
this.pipeSchemaIntoInstance(this.schemaWithDefaults),
|
t.pipeSchemaIntoInstance(t.schemaWithDefaults),
|
||||||
values,
|
values,
|
||||||
params,
|
params,
|
||||||
)
|
)
|
||||||
|
|||||||
Reference in New Issue
Block a user