This commit is contained in:
@@ -41,14 +41,21 @@ export type TZodSchemaClass<
|
|||||||
readonly schema: Schema
|
readonly schema: Schema
|
||||||
readonly defaultValues: DefaultValues
|
readonly defaultValues: DefaultValues
|
||||||
|
|
||||||
newPromise<Self extends ConcreteClass<any>>(
|
instantiate<Self extends ConcreteClass<any>>(
|
||||||
|
this: Self,
|
||||||
|
...[values, params]: NewZodSchemaInstanceArgs<
|
||||||
|
NewZodSchemaInstanceInput<Values, DefaultValues>
|
||||||
|
>
|
||||||
|
): InstanceType<Self>
|
||||||
|
|
||||||
|
instantiatePromise<Self extends ConcreteClass<any>>(
|
||||||
this: Self,
|
this: Self,
|
||||||
...[values, params]: NewZodSchemaInstanceArgs<
|
...[values, params]: NewZodSchemaInstanceArgs<
|
||||||
NewZodSchemaInstanceInput<Values, DefaultValues>
|
NewZodSchemaInstanceInput<Values, DefaultValues>
|
||||||
>
|
>
|
||||||
): Promise<InstanceType<Self>>
|
): Promise<InstanceType<Self>>
|
||||||
|
|
||||||
newEffect<Self extends ConcreteClass<any>>(
|
instantiateEffect<Self extends ConcreteClass<any>>(
|
||||||
this: Self,
|
this: Self,
|
||||||
...[values, params]: NewZodSchemaInstanceArgs<
|
...[values, params]: NewZodSchemaInstanceArgs<
|
||||||
NewZodSchemaInstanceInput<Values, DefaultValues>
|
NewZodSchemaInstanceInput<Values, DefaultValues>
|
||||||
|
|||||||
@@ -4,10 +4,7 @@ import { DefinedDefaultValuesTag, NewZodSchemaInstanceArgs, NewZodSchemaInstance
|
|||||||
import { StaticMembers } from "./util"
|
import { StaticMembers } from "./util"
|
||||||
|
|
||||||
|
|
||||||
type ExtendableClass = AbstractClass<{
|
type ExtendableClass = AbstractClass<any, []> & {
|
||||||
schema?: never
|
|
||||||
defaultValues?: never
|
|
||||||
}, []> & {
|
|
||||||
schema?: never
|
schema?: never
|
||||||
defaultValues?: never
|
defaultValues?: never
|
||||||
}
|
}
|
||||||
@@ -55,7 +52,17 @@ export function ZodSchemaClassOf<
|
|||||||
Object.assign(this, values)
|
Object.assign(this, values)
|
||||||
}
|
}
|
||||||
|
|
||||||
static async newPromise(
|
static async instantiate(
|
||||||
|
...[values, params]: NewZodSchemaInstanceArgs<
|
||||||
|
NewZodSchemaInstanceInput<Values, DefaultValues>
|
||||||
|
>
|
||||||
|
) {
|
||||||
|
return new this(
|
||||||
|
this.schema.parse({ ...this.defaultValues, ...values }, params)
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
static async instantiatePromise(
|
||||||
...[values, params]: NewZodSchemaInstanceArgs<
|
...[values, params]: NewZodSchemaInstanceArgs<
|
||||||
NewZodSchemaInstanceInput<Values, DefaultValues>
|
NewZodSchemaInstanceInput<Values, DefaultValues>
|
||||||
>
|
>
|
||||||
|
|||||||
12
src/tests.ts
12
src/tests.ts
@@ -2,7 +2,11 @@ import { z } from "zod"
|
|||||||
import { ZodSchemaClassOf, defineDefaultValues } from "."
|
import { ZodSchemaClassOf, defineDefaultValues } from "."
|
||||||
|
|
||||||
|
|
||||||
class Test extends ZodSchemaClassOf(Object, {
|
class Root {
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
class Test extends ZodSchemaClassOf(Root, {
|
||||||
schema: z.object({
|
schema: z.object({
|
||||||
id: z.bigint(),
|
id: z.bigint(),
|
||||||
name: z.string(),
|
name: z.string(),
|
||||||
@@ -11,11 +15,11 @@ class Test extends ZodSchemaClassOf(Object, {
|
|||||||
defaultValues: defineDefaultValues({ id: -1n }),
|
defaultValues: defineDefaultValues({ id: -1n }),
|
||||||
}) {}
|
}) {}
|
||||||
Test.defaultValues
|
Test.defaultValues
|
||||||
const inst = await Test.newPromise({ id: 1n, name: "" })
|
const inst = await Test.instantiatePromise({ id: 1n, name: "" })
|
||||||
// Test.extend()
|
// Test.extend()
|
||||||
|
|
||||||
console.log(inst)
|
console.log(inst)
|
||||||
|
|
||||||
// class ChildTest extends Test {}
|
class ChildTest extends Test {}
|
||||||
|
|
||||||
// ChildTest.newPromise()
|
ChildTest.instantiate({ name: "" })
|
||||||
|
|||||||
Reference in New Issue
Block a user