0.1.1 #2

Merged
Thilawyn merged 47 commits from next into master 2024-01-17 20:47:13 +01:00
Showing only changes of commit 56597350cd - Show all commits

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,12 +114,14 @@ export const newSchemableEffect = <
...[values, params]: NewSchemableArgs< ...[values, params]: NewSchemableArgs<
SchemableClassInput<Values, DefaultValues> SchemableClassInput<Values, DefaultValues>
> >
) => pipe( ) {
parseZodTypeEffect( return pipe(
class_.schema, parseZodTypeEffect(
{ ...class_.defaultValues, ...values }, class_.schema,
params, { ...class_.defaultValues, ...values },
), params,
),
Effect.map(values => new class_(values) as InstanceType<C>), Effect.map(values => new class_(values) as InstanceType<C>),
) )
}