JsonifiableSchemableClass
All checks were successful
continuous-integration/drone/push Build is passing
All checks were successful
continuous-integration/drone/push Build is passing
This commit is contained in:
@@ -1,20 +1,5 @@
|
|||||||
import { AbstractClass, Class as ConcreteClass } from "type-fest"
|
|
||||||
import { z } from "zod"
|
import { z } from "zod"
|
||||||
|
import { Class, ClassType } from "./util"
|
||||||
|
|
||||||
export type ClassType = "AbstractClass" | "Class"
|
|
||||||
|
|
||||||
type Class<
|
|
||||||
Type extends ClassType,
|
|
||||||
T,
|
|
||||||
Arguments extends unknown[] = any[],
|
|
||||||
> = (
|
|
||||||
Type extends "AbstractClass"
|
|
||||||
? AbstractClass<T, Arguments>
|
|
||||||
: Type extends "Class"
|
|
||||||
? ConcreteClass<T, Arguments>
|
|
||||||
: never
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
export type SchemableClass<
|
export type SchemableClass<
|
||||||
|
|||||||
43
src/jsonifiable/JsonifiableSchemableClass.ts
Normal file
43
src/jsonifiable/JsonifiableSchemableClass.ts
Normal file
@@ -0,0 +1,43 @@
|
|||||||
|
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,
|
||||||
|
|
||||||
|
{},
|
||||||
|
|
||||||
|
any[]
|
||||||
|
>
|
||||||
|
)
|
||||||
@@ -1 +1,2 @@
|
|||||||
export * from "./JsonifiableSchemable"
|
export * from "./JsonifiableSchemable"
|
||||||
|
export * from "./JsonifiableSchemableClass"
|
||||||
|
|||||||
16
src/util.ts
16
src/util.ts
@@ -1,7 +1,23 @@
|
|||||||
import { Effect, pipe } from "effect"
|
import { Effect, pipe } from "effect"
|
||||||
|
import { AbstractClass, Class as ConcreteClass } from "type-fest"
|
||||||
import { z } from "zod"
|
import { z } from "zod"
|
||||||
|
|
||||||
|
|
||||||
|
export type ClassType = "AbstractClass" | "Class"
|
||||||
|
|
||||||
|
export type Class<
|
||||||
|
Type extends ClassType,
|
||||||
|
T,
|
||||||
|
Arguments extends unknown[] = any[],
|
||||||
|
> = (
|
||||||
|
Type extends "AbstractClass"
|
||||||
|
? AbstractClass<T, Arguments>
|
||||||
|
: Type extends "Class"
|
||||||
|
? ConcreteClass<T, Arguments>
|
||||||
|
: never
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Represents the static members of a class.
|
* Represents the static members of a class.
|
||||||
* @template C - The class type.
|
* @template C - The class type.
|
||||||
|
|||||||
Reference in New Issue
Block a user