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]
export const newSchemable = <
export function newSchemable<
C extends SchemableClass<
SchemaT,
SchemaUnknownKeys,
@@ -42,13 +42,14 @@ export const newSchemable = <
...[values, params]: NewSchemableArgs<
SchemableClassInput<Values, DefaultValues>
>
) =>
new class_(
) {
return new class_(
class_.schema.parse({ ...class_.defaultValues, ...values }, params)
) as InstanceType<C>
}
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<Values, DefaultValues>
>
) =>
new class_(
) {
return new class_(
await class_.schema.parseAsync({ ...class_.defaultValues, ...values }, params)
) as InstanceType<C>
}
export const newSchemableEffect = <
export function newSchemableEffect<
C extends SchemableClass<
SchemaT,
SchemaUnknownKeys,
@@ -112,12 +114,14 @@ export const newSchemableEffect = <
...[values, params]: NewSchemableArgs<
SchemableClassInput<Values, DefaultValues>
>
) => 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<C>),
)
Effect.map(values => new class_(values) as InstanceType<C>),
)
}