diff --git a/src/shapes/JsonifiableZodSchemaClass.ts b/src/shapes/JsonifiableZodSchemaClass.ts new file mode 100644 index 0000000..0f15bd2 --- /dev/null +++ b/src/shapes/JsonifiableZodSchemaClass.ts @@ -0,0 +1,78 @@ +import { AbstractClass, Class } from "type-fest" +import { JsonifiableObject } from "type-fest/source/jsonifiable" +import { z } from "zod" + + +export type JsonifiableZodSchemaClass< + Instance extends Values, + + Values extends object, + JsonifiedValues extends JsonifiableObject, + + JsonifySchemaT extends z.ZodRawShape, + JsonifySchemaUnknownKeys extends z.UnknownKeysParam, + JsonifySchemaCatchall extends z.ZodTypeAny, + + DejsonifySchemaT extends z.ZodRawShape, + DejsonifySchemaUnknownKeys extends z.UnknownKeysParam, + DejsonifySchemaCatchall extends z.ZodTypeAny, +> = ( + Class & + JsonifiableZodSchemaClassStatic< + Values, + JsonifiedValues, + + JsonifySchemaT, + JsonifySchemaUnknownKeys, + JsonifySchemaCatchall, + + DejsonifySchemaT, + DejsonifySchemaUnknownKeys, + DejsonifySchemaCatchall + > +) + +export type JsonifiableZodSchemaAbstractClass< + Instance extends Values, + + Values extends object, + JsonifiedValues extends JsonifiableObject, + + JsonifySchemaT extends z.ZodRawShape, + JsonifySchemaUnknownKeys extends z.UnknownKeysParam, + JsonifySchemaCatchall extends z.ZodTypeAny, + + DejsonifySchemaT extends z.ZodRawShape, + DejsonifySchemaUnknownKeys extends z.UnknownKeysParam, + DejsonifySchemaCatchall extends z.ZodTypeAny, +> = ( + AbstractClass & + JsonifiableZodSchemaClassStatic< + Values, + JsonifiedValues, + + JsonifySchemaT, + JsonifySchemaUnknownKeys, + JsonifySchemaCatchall, + + DejsonifySchemaT, + DejsonifySchemaUnknownKeys, + DejsonifySchemaCatchall + > +) + +export type JsonifiableZodSchemaClassStatic< + Values extends object, + JsonifiedValues extends JsonifiableObject, + + JsonifySchemaT extends z.ZodRawShape, + JsonifySchemaUnknownKeys extends z.UnknownKeysParam, + JsonifySchemaCatchall extends z.ZodTypeAny, + + DejsonifySchemaT extends z.ZodRawShape, + DejsonifySchemaUnknownKeys extends z.UnknownKeysParam, + DejsonifySchemaCatchall extends z.ZodTypeAny, +> = { + readonly jsonifySchema: z.ZodObject + readonly dejsonifySchema: z.ZodObject +} diff --git a/src/traits/InstantiableZodSchemaObject.ts b/src/traits/InstantiableZodSchemaObject.ts index dbb2b82..d567034 100644 --- a/src/traits/InstantiableZodSchemaObject.ts +++ b/src/traits/InstantiableZodSchemaObject.ts @@ -96,6 +96,5 @@ export const InstantiableZodSchemaObject = trait Effect.map(values => new this(values)), ) } - }) .build()