Fixed extendSchemableClass
All checks were successful
continuous-integration/drone/push Build is passing

This commit is contained in:
Julien Valverdé
2024-01-10 00:05:28 +01:00
parent 6ae87887db
commit c423e998bf

View File

@@ -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,