81 lines
2.2 KiB
TypeScript
81 lines
2.2 KiB
TypeScript
import { Effect } from "effect"
|
|
import { JsonifiableObject } from "type-fest/source/jsonifiable"
|
|
import { z } from "zod"
|
|
import { SchemableClass } from ".."
|
|
import { Class, ClassType } from "../../util"
|
|
|
|
|
|
export type JsonifiableSchemableClass<
|
|
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,
|
|
|
|
Type extends ClassType = "AbstractClass"
|
|
> = (
|
|
SchemableClass<
|
|
SchemaT,
|
|
SchemaUnknownKeys,
|
|
SchemaCatchall,
|
|
Values,
|
|
DefaultValues,
|
|
Type
|
|
> &
|
|
|
|
Class<
|
|
Type,
|
|
|
|
{
|
|
readonly jsonifySchema: z.ZodObject<
|
|
JsonifySchemaT,
|
|
JsonifySchemaUnknownKeys,
|
|
JsonifySchemaCatchall,
|
|
JsonifiedValues,
|
|
Values
|
|
>
|
|
|
|
readonly dejsonifySchema: z.ZodObject<
|
|
DejsonifySchemaT,
|
|
DejsonifySchemaUnknownKeys,
|
|
DejsonifySchemaCatchall,
|
|
Values,
|
|
JsonifiedValues
|
|
>
|
|
|
|
jsonify(): JsonifiedValues
|
|
jsonifyPromise(): Promise<JsonifiedValues>
|
|
jsonifyEffect(): Effect.Effect<never, z.ZodError<Values>, JsonifiedValues>
|
|
},
|
|
|
|
any[]
|
|
> & {
|
|
readonly jsonifySchema: z.ZodObject<
|
|
JsonifySchemaT,
|
|
JsonifySchemaUnknownKeys,
|
|
JsonifySchemaCatchall,
|
|
JsonifiedValues,
|
|
Values
|
|
>
|
|
|
|
readonly dejsonifySchema: z.ZodObject<
|
|
DejsonifySchemaT,
|
|
DejsonifySchemaUnknownKeys,
|
|
DejsonifySchemaCatchall,
|
|
Values,
|
|
JsonifiedValues
|
|
>
|
|
}
|
|
)
|