diff --git a/src/newSchemable.ts b/src/newSchemable.ts index 0166eb5..98a5498 100644 --- a/src/newSchemable.ts +++ b/src/newSchemable.ts @@ -13,7 +13,7 @@ type NewSchemableArgs = : [] | [values: Input, ...args: ParamsArgs] -export const newSchemable = < +export function newSchemable< C extends SchemableClass< SchemaT, SchemaUnknownKeys, @@ -42,13 +42,14 @@ export const newSchemable = < ...[values, params]: NewSchemableArgs< SchemableClassInput > -) => - new class_( +) { + return new class_( class_.schema.parse({ ...class_.defaultValues, ...values }, params) ) as InstanceType +} -export const newSchemablePromise = async < +export async function newSchemablePromise< C extends SchemableClass< SchemaT, SchemaUnknownKeys, @@ -77,13 +78,14 @@ export const newSchemablePromise = async < ...[values, params]: NewSchemableArgs< SchemableClassInput > -) => - new class_( +) { + return new class_( await class_.schema.parseAsync({ ...class_.defaultValues, ...values }, params) ) as InstanceType +} -export const newSchemableEffect = < +export function newSchemableEffect< C extends SchemableClass< SchemaT, SchemaUnknownKeys, @@ -112,12 +114,14 @@ export const newSchemableEffect = < ...[values, params]: NewSchemableArgs< SchemableClassInput > -) => pipe( - parseZodTypeEffect( - class_.schema, - { ...class_.defaultValues, ...values }, - params, - ), +) { + return pipe( + parseZodTypeEffect( + class_.schema, + { ...class_.defaultValues, ...values }, + params, + ), - Effect.map(values => new class_(values) as InstanceType), -) + Effect.map(values => new class_(values) as InstanceType), + ) +}