0.1.1 #2
@@ -1,4 +1,4 @@
|
|||||||
import { AbstractClass, Class } from "type-fest"
|
import { AbstractClass, Class as ConcreteClass } from "type-fest"
|
||||||
import { z } from "zod"
|
import { z } from "zod"
|
||||||
import { SchemableClass } from "."
|
import { SchemableClass } from "."
|
||||||
import { StaticMembers } from "./util"
|
import { StaticMembers } from "./util"
|
||||||
@@ -23,6 +23,7 @@ export function extendSchemableClass<
|
|||||||
SchemaUnknownKeys extends z.UnknownKeysParam,
|
SchemaUnknownKeys extends z.UnknownKeysParam,
|
||||||
SchemaCatchall extends z.ZodTypeAny,
|
SchemaCatchall extends z.ZodTypeAny,
|
||||||
SchemaValues extends ExtendSchemaValues,
|
SchemaValues extends ExtendSchemaValues,
|
||||||
|
|
||||||
DefaultValues extends Partial<SchemaValues>,
|
DefaultValues extends Partial<SchemaValues>,
|
||||||
>(
|
>(
|
||||||
extend: C | SchemableClass<
|
extend: C | SchemableClass<
|
||||||
@@ -43,9 +44,9 @@ export function extendSchemableClass<
|
|||||||
|
|
||||||
defaultValuesApplier: (defaultValues: ExtendDefaultValues) => DefaultValues,
|
defaultValuesApplier: (defaultValues: ExtendDefaultValues) => DefaultValues,
|
||||||
) {
|
) {
|
||||||
type ClassKind<T, Arguments extends unknown[]> = (
|
type Class<T, Arguments extends unknown[]> = (
|
||||||
C extends Class<any>
|
C extends ConcreteClass<any>
|
||||||
? Class<T, Arguments>
|
? ConcreteClass<T, Arguments>
|
||||||
: AbstractClass<T, Arguments>
|
: AbstractClass<T, Arguments>
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -59,7 +60,7 @@ export function extendSchemableClass<
|
|||||||
static readonly defaultValues = defaultValues
|
static readonly defaultValues = defaultValues
|
||||||
readonly defaultValues = defaultValues
|
readonly defaultValues = defaultValues
|
||||||
} as unknown as (
|
} as unknown as (
|
||||||
ClassKind<
|
Class<
|
||||||
Omit<InstanceType<C>, "schema" | "defaultValues" | keyof ExtendSchemaValues> &
|
Omit<InstanceType<C>, "schema" | "defaultValues" | keyof ExtendSchemaValues> &
|
||||||
{
|
{
|
||||||
readonly schema: typeof schema,
|
readonly schema: typeof schema,
|
||||||
|
|||||||
Reference in New Issue
Block a user