From e147b61f89a511b0cde2ebf4bc79bd50dcf599d5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julien=20Valverd=C3=A9?= Date: Tue, 9 Jan 2024 17:21:39 +0100 Subject: [PATCH] makeSchemableClass --- src/makeSchemableClass.ts | 21 +++++++++++++++++++++ src/tests.ts | 9 +++------ 2 files changed, 24 insertions(+), 6 deletions(-) diff --git a/src/makeSchemableClass.ts b/src/makeSchemableClass.ts index 1de1a62..759c80c 100644 --- a/src/makeSchemableClass.ts +++ b/src/makeSchemableClass.ts @@ -60,3 +60,24 @@ export function makeSchemableClassFrom< } ) } + + +export function makeSchemableClass< + SchemaT extends z.ZodRawShape, + SchemaUnknownKeys extends z.UnknownKeysParam, + SchemaCatchall extends z.ZodTypeAny, + SchemaValues extends {}, + DefaultValues extends Partial, +>( + schema: z.ZodObject< + SchemaT, + SchemaUnknownKeys, + SchemaCatchall, + SchemaValues, + SchemaValues + >, + + defaultValues: DefaultValues, +) { + return makeSchemableClassFrom(Object, schema, defaultValues) +} diff --git a/src/tests.ts b/src/tests.ts index b2c37a9..09d8037 100644 --- a/src/tests.ts +++ b/src/tests.ts @@ -1,5 +1,5 @@ import { z } from "zod" -import { extendSchemableClass, makeSchemableClassFrom } from "." +import { extendSchemableClass, makeSchemableClass, makeSchemableClassFrom } from "." // class Test1 { @@ -12,10 +12,7 @@ import { extendSchemableClass, makeSchemableClassFrom } from "." // prout: string = "heugneu" // } -const Test1 = makeSchemableClassFrom( - class { - randomProperty: string = "" - }, +const Test1 = makeSchemableClass( z.object({ prout: z.string() }), {}, ) @@ -30,7 +27,7 @@ const Test2 = extendSchemableClass( ) Test2.defaultValues -new Test2({ prout: "ruquier", ruquier: 69 }).randomProperty +new Test2({ prout: "ruquier", ruquier: 69 }) class Test3 extends Test2 {