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"
|
||||
|
||||
|
||||
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
|
||||
)
|
||||
import { Class, ClassType } from "./util"
|
||||
|
||||
|
||||
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 "./JsonifiableSchemableClass"
|
||||
|
||||
16
src/util.ts
16
src/util.ts
@@ -1,7 +1,23 @@
|
||||
import { Effect, pipe } from "effect"
|
||||
import { AbstractClass, Class as ConcreteClass } from "type-fest"
|
||||
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.
|
||||
* @template C - The class type.
|
||||
|
||||
Reference in New Issue
Block a user