1 | import { AnyRecord } from "./any-record";
|
2 | import { NonUndefinable } from "./non-undefinable";
|
3 | export type DeepModify<Type> =
|
4 | | (Type extends AnyRecord
|
5 | ? {
|
6 | [Key in keyof Type]?: undefined extends {
|
7 | [Key2 in keyof Type]: Key2;
|
8 | }[Key]
|
9 | ? NonUndefinable<Type[Key]> extends object
|
10 | ? true | DeepModify<NonUndefinable<Type[Key]>>
|
11 | : true
|
12 | : Type[Key] extends object
|
13 | ? true | DeepModify<Type[Key]>
|
14 | : true;
|
15 | }
|
16 | : never)
|
17 | | (Type extends Array<infer Values> ? Array<DeepModify<Values>> : never)
|
18 | | (Type extends Promise<infer Value> ? Promise<DeepModify<Value>> : never)
|
19 | | (Type extends Set<infer Values> ? Set<DeepModify<Values>> : never)
|
20 | | (Type extends ReadonlySet<infer Values> ? ReadonlySet<DeepModify<Values>> : never)
|
21 | | (Type extends WeakSet<infer Values> ? WeakSet<DeepModify<Values>> : never)
|
22 | | (Type extends Map<infer Keys, infer Values> ? Map<Keys, DeepModify<Values>> : never)
|
23 | | (Type extends ReadonlyMap<infer Keys, infer Values> ? ReadonlyMap<Keys, DeepModify<Values>> : never)
|
24 | | (Type extends WeakMap<infer Keys, infer Values> ? WeakMap<Keys, DeepModify<Values>> : never);
|