0.1.1 #2
@@ -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>),
|
||||||
|
)
|
||||||
|
|||||||
@@ -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)
|
|
||||||
|
|||||||
Reference in New Issue
Block a user