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

This commit is contained in:
Julien Valverdé
2024-01-10 00:00:58 +01:00
parent abcc3e88e8
commit 6ae87887db

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 { StaticMembers } from "./util"
@@ -9,8 +9,9 @@ export function makeSchemableClassFrom<
SchemaT extends z.ZodRawShape,
SchemaUnknownKeys extends z.UnknownKeysParam,
SchemaCatchall extends z.ZodTypeAny,
SchemaValues extends {},
DefaultValues extends Partial<SchemaValues>,
Values extends {},
DefaultValues extends Partial<Values>,
>(
extend: C,
@@ -18,39 +19,39 @@ export function makeSchemableClassFrom<
SchemaT,
SchemaUnknownKeys,
SchemaCatchall,
SchemaValues,
SchemaValues
Values,
Values
>,
defaultValues: DefaultValues,
) {
type ClassKind<T, Arguments extends unknown[]> = (
C extends Class<any>
? Class<T, Arguments>
type Class<T, Arguments extends unknown[]> = (
C extends ConcreteClass<any>
? ConcreteClass<T, Arguments>
: AbstractClass<T, Arguments>
)
return class extends (extend as unknown as Class<any, []>) {
return class extends (extend as unknown as ConcreteClass<any, []>) {
static readonly schema = schema
readonly schema = schema
static readonly defaultValues = defaultValues
readonly defaultValues = defaultValues
constructor(values: SchemaValues) {
constructor(values: Values) {
super()
Object.assign(this, values)
}
} as unknown as (
ClassKind<
Class<
Omit<InstanceType<C>, "schema" | "defaultValues"> &
{
readonly schema: typeof schema,
readonly defaultValues: typeof defaultValues,
} &
SchemaValues,
Values,
Parameters<(values: SchemaValues) => void>
Parameters<(values: Values) => void>
> &
Omit<StaticMembers<C>, "schema" | "defaultValues"> &
@@ -66,15 +67,16 @@ export function makeSchemableClass<
SchemaT extends z.ZodRawShape,
SchemaUnknownKeys extends z.UnknownKeysParam,
SchemaCatchall extends z.ZodTypeAny,
SchemaValues extends {},
DefaultValues extends Partial<SchemaValues>,
Values extends {},
DefaultValues extends Partial<Values>,
>(
schema: z.ZodObject<
SchemaT,
SchemaUnknownKeys,
SchemaCatchall,
SchemaValues,
SchemaValues
Values,
Values
>,
defaultValues: DefaultValues,