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