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 629b61c545 - Show all commits

View File

@@ -5,13 +5,69 @@ import { SchemableClass } from ".."
import { Class, ClassType, StaticMembers, parseZodTypeEffect } from "../util" import { Class, ClassType, StaticMembers, parseZodTypeEffect } from "../util"
export type MakeJsonifiableSchemableClassProps<
SchemaT extends z.ZodRawShape,
SchemaUnknownKeys extends z.UnknownKeysParam,
SchemaCatchall extends z.ZodTypeAny,
Values extends {},
JsonifySchemaT extends z.ZodRawShape,
JsonifySchemaUnknownKeys extends z.UnknownKeysParam,
JsonifySchemaCatchall extends z.ZodTypeAny,
DejsonifySchemaT extends z.ZodRawShape,
DejsonifySchemaUnknownKeys extends z.UnknownKeysParam,
DejsonifySchemaCatchall extends z.ZodTypeAny,
JsonifiedValues extends JsonifiableObject,
> = {
jsonifySchema: (props: {
schema: z.ZodObject<
SchemaT,
SchemaUnknownKeys,
SchemaCatchall,
Values,
Values
>
shape: SchemaT
}) => z.ZodObject<
JsonifySchemaT,
JsonifySchemaUnknownKeys,
JsonifySchemaCatchall,
JsonifiedValues,
Values
>
dejsonifySchema: (props: {
schema: z.ZodObject<
SchemaT,
SchemaUnknownKeys,
SchemaCatchall,
Values,
Values
>
shape: SchemaT
}) => z.ZodObject<
DejsonifySchemaT,
DejsonifySchemaUnknownKeys,
DejsonifySchemaCatchall,
Values,
JsonifiedValues
>
}
export function makeJsonifiableSchemableClass< export function makeJsonifiableSchemableClass<
C extends SchemableClass< C extends SchemableClass<
SchemaT, SchemaT,
SchemaUnknownKeys, SchemaUnknownKeys,
SchemaCatchall, SchemaCatchall,
Values, Values,
DefaultValues DefaultValues,
Type
>, >,
SchemaT extends z.ZodRawShape, SchemaT extends z.ZodRawShape,
@@ -31,7 +87,7 @@ export function makeJsonifiableSchemableClass<
JsonifiedValues extends JsonifiableObject, JsonifiedValues extends JsonifiableObject,
Type extends ClassType = "AbstractClass" Type extends ClassType = "AbstractClass",
>( >(
extend: C | SchemableClass< extend: C | SchemableClass<
SchemaT, SchemaT,
@@ -42,29 +98,23 @@ export function makeJsonifiableSchemableClass<
Type Type
>, >,
props: { props: MakeJsonifiableSchemableClassProps<
jsonifySchema: (props: { SchemaT,
schema: C["schema"] SchemaUnknownKeys,
shape: C["schema"]["shape"] SchemaCatchall,
}) => z.ZodObject<
JsonifySchemaT,
JsonifySchemaUnknownKeys,
JsonifySchemaCatchall,
JsonifiedValues,
Values
>
dejsonifySchema: (props: { Values,
schema: C["schema"]
shape: C["schema"]["shape"] JsonifySchemaT,
}) => z.ZodObject< JsonifySchemaUnknownKeys,
DejsonifySchemaT, JsonifySchemaCatchall,
DejsonifySchemaUnknownKeys,
DejsonifySchemaCatchall, DejsonifySchemaT,
Values, DejsonifySchemaUnknownKeys,
JsonifiedValues DejsonifySchemaCatchall,
>
}, JsonifiedValues
>,
) { ) {
const jsonifySchema = props.jsonifySchema({ const jsonifySchema = props.jsonifySchema({
schema: extend.schema, schema: extend.schema,
@@ -116,3 +166,63 @@ export function makeJsonifiableSchemableClass<
} }
) )
} }
export function pipeMakeJsonifiableSchemableClass<
SchemaT extends z.ZodRawShape,
SchemaUnknownKeys extends z.UnknownKeysParam,
SchemaCatchall extends z.ZodTypeAny,
Values extends {},
DefaultValues extends Partial<Values>,
JsonifySchemaT extends z.ZodRawShape,
JsonifySchemaUnknownKeys extends z.UnknownKeysParam,
JsonifySchemaCatchall extends z.ZodTypeAny,
DejsonifySchemaT extends z.ZodRawShape,
DejsonifySchemaUnknownKeys extends z.UnknownKeysParam,
DejsonifySchemaCatchall extends z.ZodTypeAny,
JsonifiedValues extends JsonifiableObject,
>(
props: MakeJsonifiableSchemableClassProps<
SchemaT,
SchemaUnknownKeys,
SchemaCatchall,
Values,
JsonifySchemaT,
JsonifySchemaUnknownKeys,
JsonifySchemaCatchall,
DejsonifySchemaT,
DejsonifySchemaUnknownKeys,
DejsonifySchemaCatchall,
JsonifiedValues
>
) {
return <
C extends SchemableClass<
SchemaT,
SchemaUnknownKeys,
SchemaCatchall,
Values,
DefaultValues,
Type
>,
Type extends ClassType = "AbstractClass",
>(
extend: C | SchemableClass<
SchemaT,
SchemaUnknownKeys,
SchemaCatchall,
Values,
DefaultValues,
Type
>
) => makeJsonifiableSchemableClass(extend, props)
}