0.1.1 #2

Merged
Thilawyn merged 47 commits from next into master 2024-01-17 20:47:13 +01:00
2 changed files with 72 additions and 28 deletions
Showing only changes of commit abcc3e88e8 - Show all commits

View File

@@ -48,31 +48,76 @@ export const newSchemable = <
) as InstanceType<C> ) as InstanceType<C>
// export const newSchemablePromise = async < export const newSchemablePromise = async <
// C extends SchemableClass<$Config>, C extends SchemableClass<
// $Config extends SchemableConfig, SchemaT,
// >( SchemaUnknownKeys,
// class_: C | SchemableClass<$Config>, SchemaCatchall,
// ...[values, params]: NewSchemableArgs<$Config["input"]> Values,
// ) => DefaultValues,
// new class_(await class_.schemaWithDefaultValues.parseAsync(values || {}, params)) as InstanceType<C> "Class"
>,
SchemaT extends z.ZodRawShape,
SchemaUnknownKeys extends z.UnknownKeysParam,
SchemaCatchall extends z.ZodTypeAny,
Values extends {},
DefaultValues extends Partial<Values>,
>(
class_: C | SchemableClass<
SchemaT,
SchemaUnknownKeys,
SchemaCatchall,
Values,
DefaultValues,
"Class"
>,
...[values, params]: NewSchemableArgs<
SchemableClassInput<Values, DefaultValues>
>
) =>
new class_(
await class_.schema.parseAsync({ ...class_.defaultValues, ...values }, params)
) as InstanceType<C>
// export const newSchemableEffect = < export const newSchemableEffect = <
// C extends SchemableClass<$Config>, C extends SchemableClass<
// $Config extends SchemableConfig, SchemaT,
// >( SchemaUnknownKeys,
// class_: C | SchemableClass<$Config>, SchemaCatchall,
// ...[values, params]: NewSchemableArgs<$Config["input"]> Values,
// ) => pipe( DefaultValues,
// parseZodTypeEffect< "Class"
// z.output<typeof class_.schemaWithDefaultValues>, >,
// z.input<typeof class_.schemaWithDefaultValues>
// >(
// class_.schemaWithDefaultValues,
// values || {},
// params,
// ),
// Effect.map(values => new class_(values) as InstanceType<C>), SchemaT extends z.ZodRawShape,
// ) SchemaUnknownKeys extends z.UnknownKeysParam,
SchemaCatchall extends z.ZodTypeAny,
Values extends {},
DefaultValues extends Partial<Values>,
>(
class_: C | SchemableClass<
SchemaT,
SchemaUnknownKeys,
SchemaCatchall,
Values,
DefaultValues,
"Class"
>,
...[values, params]: NewSchemableArgs<
SchemableClassInput<Values, DefaultValues>
>
) => pipe(
parseZodTypeEffect(
class_.schema,
{ ...class_.defaultValues, ...values },
params,
),
Effect.map(values => new class_(values) as InstanceType<C>),
)

View File

@@ -1,5 +1,5 @@
import { z } from "zod" import { z } from "zod"
import { SchemableClassInput, extendSchemableClass, makeSchemableClass, makeSchemableClassFrom, newSchemable } from "." import { SchemableClassInput, extendSchemableClass, makeSchemableClass, newSchemableEffect } from "."
// class Test1 { // class Test1 {
@@ -36,5 +36,4 @@ class Test3 extends Test2 {
type Test = SchemableClassInput<z.output<typeof Test3.schema>, typeof Test3.defaultValues> type Test = SchemableClassInput<z.output<typeof Test3.schema>, typeof Test3.defaultValues>
const test3inst = newSchemable(Test3, { ruquier: 48 }) const test3inst = newSchemableEffect(Test3, { ruquier: 48 })
console.log(test3inst)