From afd703b78152c0684c6c81248079346e23bf1b0c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julien=20Valverd=C3=A9?= Date: Sun, 17 Mar 2024 16:52:26 +0100 Subject: [PATCH] pipeInstanceIntoSchema --- src/traits/ZodSchemaObject.ts | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/src/traits/ZodSchemaObject.ts b/src/traits/ZodSchemaObject.ts index b9846eb..05fb8c5 100644 --- a/src/traits/ZodSchemaObject.ts +++ b/src/traits/ZodSchemaObject.ts @@ -24,6 +24,7 @@ export const ZodSchemaObject = < static readonly schema = stripZodObjectDefaults(schemaWithDefaults) static readonly schemaWithDefaults = schemaWithDefaults + static pipeSchemaIntoInstance< Instance extends Values, @@ -39,6 +40,25 @@ export const ZodSchemaObject = < return schema.transform(values => new this(values)) } + static pipeInstanceIntoSchema< + Instance extends Values, + + SchemaT extends z.ZodRawShape, + SchemaUnknownKeys extends z.UnknownKeysParam, + SchemaCatchall extends z.ZodTypeAny, + SchemaOutput, + SchemaInput extends Values, + >( + this: ( + Class & + ImplStatic + ), + + schema: z.ZodObject, + ) { + return schema.transform(values => new this(values)) + } + static create< Instance extends Values