Skip to content

Commit

Permalink
Add Lazy within object and array schema generics (#1170)
Browse files Browse the repository at this point in the history
  • Loading branch information
chasecaleb committed Jan 11, 2021
1 parent be3d1b4 commit 3b67dc0
Showing 1 changed file with 6 additions and 6 deletions.
12 changes: 6 additions & 6 deletions src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -40,19 +40,19 @@ function addMethod(schemaType: any, name: string, fn: any) {
type ObjectSchemaOf<T extends AnyObject> = ObjectSchema<
{
[k in keyof T]-?: T[k] extends Array<infer E>
? ArraySchema<SchemaOf<E>>
? ArraySchema<SchemaOf<E> | Lazy<SchemaOf<E>>>
: T[k] extends AnyObject
? // we can't use ObjectSchema<{ []: SchemaOf<T[k]> }> b/c TS produces a union of two schema
ObjectSchemaOf<T[k]>
ObjectSchemaOf<T[k]> | ObjectSchemaOf<Lazy<T[k]>>
: BaseSchema<Maybe<T[k]>, AnyObject, T[k]>;
}
>;

type SchemaOf<T> = T extends Array<infer E>
? ArraySchema<SchemaOf<E> | Lazy<SchemaOf<E>>>
: T extends AnyObject
? ObjectSchemaOf<T>
: BaseSchema<Maybe<T>, AnyObject, T>;
? ArraySchema<SchemaOf<E> | Lazy<SchemaOf<E>>>
: T extends AnyObject
? ObjectSchemaOf<T>
: BaseSchema<Maybe<T>, AnyObject, T>;

export type AnyObjectSchema = ObjectSchema<any, any, any, any>;

Expand Down

0 comments on commit 3b67dc0

Please sign in to comment.