newSchemable refactoring
All checks were successful
continuous-integration/drone/push Build is passing

This commit is contained in:
Julien Valverdé
2024-01-16 14:59:33 +01:00
parent bfa359449e
commit 56597350cd

View File

@@ -13,7 +13,7 @@ type NewSchemableArgs<Input extends object> =
: [] | [values: Input, ...args: ParamsArgs] : [] | [values: Input, ...args: ParamsArgs]
export const newSchemable = < export function newSchemable<
C extends SchemableClass< C extends SchemableClass<
SchemaT, SchemaT,
SchemaUnknownKeys, SchemaUnknownKeys,
@@ -42,13 +42,14 @@ export const newSchemable = <
...[values, params]: NewSchemableArgs< ...[values, params]: NewSchemableArgs<
SchemableClassInput<Values, DefaultValues> SchemableClassInput<Values, DefaultValues>
> >
) => ) {
new class_( return new class_(
class_.schema.parse({ ...class_.defaultValues, ...values }, params) class_.schema.parse({ ...class_.defaultValues, ...values }, params)
) as InstanceType<C> ) as InstanceType<C>
}
export const newSchemablePromise = async < export async function newSchemablePromise<
C extends SchemableClass< C extends SchemableClass<
SchemaT, SchemaT,
SchemaUnknownKeys, SchemaUnknownKeys,
@@ -77,13 +78,14 @@ export const newSchemablePromise = async <
...[values, params]: NewSchemableArgs< ...[values, params]: NewSchemableArgs<
SchemableClassInput<Values, DefaultValues> SchemableClassInput<Values, DefaultValues>
> >
) => ) {
new class_( return new class_(
await class_.schema.parseAsync({ ...class_.defaultValues, ...values }, params) await class_.schema.parseAsync({ ...class_.defaultValues, ...values }, params)
) as InstanceType<C> ) as InstanceType<C>
}
export const newSchemableEffect = < export function newSchemableEffect<
C extends SchemableClass< C extends SchemableClass<
SchemaT, SchemaT,
SchemaUnknownKeys, SchemaUnknownKeys,
@@ -112,7 +114,8 @@ export const newSchemableEffect = <
...[values, params]: NewSchemableArgs< ...[values, params]: NewSchemableArgs<
SchemableClassInput<Values, DefaultValues> SchemableClassInput<Values, DefaultValues>
> >
) => pipe( ) {
return pipe(
parseZodTypeEffect( parseZodTypeEffect(
class_.schema, class_.schema,
{ ...class_.defaultValues, ...values }, { ...class_.defaultValues, ...values },
@@ -121,3 +124,4 @@ export const newSchemableEffect = <
Effect.map(values => new class_(values) as InstanceType<C>), Effect.map(values => new class_(values) as InstanceType<C>),
) )
}