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 42d5d7a92e - Show all commits

View File

@@ -1,8 +1,9 @@
import { Effect } from "effect" import { Effect } from "effect"
import { AbstractClass, Class as ConcreteClass } from "type-fest"
import { JsonifiableObject } from "type-fest/source/jsonifiable" import { JsonifiableObject } from "type-fest/source/jsonifiable"
import { z } from "zod" import { z } from "zod"
import { SchemableClass } from ".." import { SchemableClass } from ".."
import { Class, ClassType, StaticMembers, parseZodTypeEffect } from "../util" import { StaticMembers, parseZodTypeEffect } from "../util"
export type MakeJsonifiableSchemableClassProps< export type MakeJsonifiableSchemableClassProps<
@@ -66,8 +67,7 @@ export function makeJsonifiableSchemableClass<
SchemaUnknownKeys, SchemaUnknownKeys,
SchemaCatchall, SchemaCatchall,
Values, Values,
DefaultValues, DefaultValues
Type
>, >,
SchemaT extends z.ZodRawShape, SchemaT extends z.ZodRawShape,
@@ -86,16 +86,13 @@ export function makeJsonifiableSchemableClass<
DejsonifySchemaCatchall extends z.ZodTypeAny, DejsonifySchemaCatchall extends z.ZodTypeAny,
JsonifiedValues extends JsonifiableObject, JsonifiedValues extends JsonifiableObject,
Type extends ClassType = "AbstractClass",
>( >(
extend: C | SchemableClass< extend: C | SchemableClass<
SchemaT, SchemaT,
SchemaUnknownKeys, SchemaUnknownKeys,
SchemaCatchall, SchemaCatchall,
Values, Values,
DefaultValues, DefaultValues
Type
>, >,
props: MakeJsonifiableSchemableClassProps< props: MakeJsonifiableSchemableClassProps<
@@ -116,6 +113,12 @@ export function makeJsonifiableSchemableClass<
JsonifiedValues JsonifiedValues
>, >,
) { ) {
type Class<T, Arguments extends unknown[]> = (
C extends ConcreteClass<any>
? ConcreteClass<T, Arguments>
: AbstractClass<T, Arguments>
)
const jsonifySchema = props.jsonifySchema({ const jsonifySchema = props.jsonifySchema({
schema: extend.schema, schema: extend.schema,
shape: extend.schema.shape, shape: extend.schema.shape,
@@ -146,8 +149,6 @@ export function makeJsonifiableSchemableClass<
} }
} as unknown as ( } as unknown as (
Class< Class<
Type,
InstanceType<C> & { InstanceType<C> & {
readonly jsonifySchema: typeof jsonifySchema, readonly jsonifySchema: typeof jsonifySchema,
readonly dejsonifySchema: typeof dejsonifySchema, readonly dejsonifySchema: typeof dejsonifySchema,
@@ -210,19 +211,15 @@ export function pipeMakeJsonifiableSchemableClass<
SchemaUnknownKeys, SchemaUnknownKeys,
SchemaCatchall, SchemaCatchall,
Values, Values,
DefaultValues, DefaultValues
Type >
>,
Type extends ClassType = "AbstractClass",
>( >(
extend: C | SchemableClass< extend: C | SchemableClass<
SchemaT, SchemaT,
SchemaUnknownKeys, SchemaUnknownKeys,
SchemaCatchall, SchemaCatchall,
Values, Values,
DefaultValues, DefaultValues
Type
> >
) => makeJsonifiableSchemableClass(extend, props) ) => makeJsonifiableSchemableClass(extend, props)
} }