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

This commit is contained in:
Julien Valverdé
2024-02-09 01:15:23 +01:00
parent 0d20e7ad69
commit a4d4c87f54
4 changed files with 34 additions and 13 deletions

View File

@@ -10,7 +10,8 @@ export const ExtendableZodSchemaObject = trait(
Super => class ExtendableZodSchemaObject extends Super {
static extend<
Super extends ZodSchemaAbstractClass<SuperSchemaT, SuperSchemaUnknownKeys, SuperSchemaCatchall, SuperValues, SuperDefaultValues>,
Super extends ZodSchemaAbstractClass<SuperInstance, SuperSchemaT, SuperSchemaUnknownKeys, SuperSchemaCatchall, SuperValues, SuperDefaultValues>,
SuperInstance extends SuperValues,
SuperSchemaT extends z.ZodRawShape,
SuperSchemaUnknownKeys extends z.UnknownKeysParam,
@@ -24,7 +25,7 @@ export const ExtendableZodSchemaObject = trait(
Values extends SuperValues,
DefaultValues extends Partial<Values>,
>(
this: Super | ZodSchemaAbstractClass<SuperSchemaT, SuperSchemaUnknownKeys, SuperSchemaCatchall, SuperValues, SuperDefaultValues>,
this: Super | ZodSchemaAbstractClass<SuperInstance, SuperSchemaT, SuperSchemaUnknownKeys, SuperSchemaCatchall, SuperValues, SuperDefaultValues>,
props: {
schema: (props: {

View File

@@ -31,7 +31,7 @@ export const InstantiableZodSchemaObject = trait(
Super => class InstantiableZodSchemaObject extends Super {
static create<
Self extends ZodSchemaClass<SchemaT, SchemaUnknownKeys, SchemaCatchall, Values, DefaultValues>,
Instance extends Values,
SchemaT extends z.ZodRawShape,
SchemaUnknownKeys extends z.UnknownKeysParam,
@@ -40,7 +40,7 @@ export const InstantiableZodSchemaObject = trait(
Values extends {},
DefaultValues extends Partial<Values>,
>(
this: Self | ZodSchemaClass<SchemaT, SchemaUnknownKeys, SchemaCatchall, Values, DefaultValues>,
this: ZodSchemaClass<Instance, SchemaT, SchemaUnknownKeys, SchemaCatchall, Values, DefaultValues>,
...[values, params]: NewZodSchemaInstanceArgs<
NewZodSchemaInstanceInput<Values, DefaultValues>
@@ -48,11 +48,11 @@ export const InstantiableZodSchemaObject = trait(
) {
return new this(
this.schema.parse({ ...this.defaultValues, ...values }, params)
) as InstanceType<Self>
)
}
static async createPromise<
Self extends ZodSchemaClass<SchemaT, SchemaUnknownKeys, SchemaCatchall, Values, DefaultValues>,
Instance extends Values,
SchemaT extends z.ZodRawShape,
SchemaUnknownKeys extends z.UnknownKeysParam,
@@ -61,7 +61,7 @@ export const InstantiableZodSchemaObject = trait(
Values extends {},
DefaultValues extends Partial<Values>,
>(
this: Self | ZodSchemaClass<SchemaT, SchemaUnknownKeys, SchemaCatchall, Values, DefaultValues>,
this: ZodSchemaClass<Instance, SchemaT, SchemaUnknownKeys, SchemaCatchall, Values, DefaultValues>,
...[values, params]: NewZodSchemaInstanceArgs<
NewZodSchemaInstanceInput<Values, DefaultValues>
@@ -69,11 +69,11 @@ export const InstantiableZodSchemaObject = trait(
) {
return new this(
await this.schema.parseAsync({ ...this.defaultValues, ...values }, params)
) as InstanceType<Self>
)
}
static createEffect<
Self extends ZodSchemaClass<SchemaT, SchemaUnknownKeys, SchemaCatchall, Values, DefaultValues>,
Instance extends Values,
SchemaT extends z.ZodRawShape,
SchemaUnknownKeys extends z.UnknownKeysParam,
@@ -82,7 +82,7 @@ export const InstantiableZodSchemaObject = trait(
Values extends {},
DefaultValues extends Partial<Values>,
>(
this: Self | ZodSchemaClass<SchemaT, SchemaUnknownKeys, SchemaCatchall, Values, DefaultValues>,
this: ZodSchemaClass<Instance, SchemaT, SchemaUnknownKeys, SchemaCatchall, Values, DefaultValues>,
...[values, params]: NewZodSchemaInstanceArgs<
NewZodSchemaInstanceInput<Values, DefaultValues>
@@ -95,8 +95,12 @@ export const InstantiableZodSchemaObject = trait(
params,
),
Effect.map(values => new this(values) as InstanceType<Self>),
Effect.map(values => new this(values)),
)
}
protected static initialize() {
}
},
)

View File

@@ -0,0 +1,12 @@
import { abstract, trait } from "@thilawyn/traitify-ts"
export const ObservableZodSchemaObject = trait(
abstract(),
Super => class ObservableZodSchemaObject extends Super {
constructor(...args: any[]) {
super(...args)
}
},
)