@enspirit/emb 0.8.4 → 0.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,3 +1,4 @@
1
+ import { ListrRendererValue } from 'listr2';
1
2
  import { EMBConfig } from '../config/types.js';
2
3
  import { IOperation } from '../operations/index.js';
3
4
  import { Expandable, TemplateExpander } from '../utils/index.js';
@@ -9,11 +10,12 @@ export declare class Monorepo {
9
10
  private defaultFlavor;
10
11
  private _config;
11
12
  private _store;
13
+ private _managerFactory;
12
14
  private initialized;
13
15
  constructor(config: EMBConfig, _rootDir: string, defaultFlavor?: string);
14
16
  get config(): EMBConfig;
15
17
  get defaults(): import("../config/types.js").DefaultsConfig;
16
- get flavors(): import("./types.js").ProjectFlavors;
18
+ get flavors(): import("../index.js").ProjectFlavors;
17
19
  get name(): string;
18
20
  get rootDir(): string;
19
21
  get currentFlavor(): string;
@@ -25,6 +27,8 @@ export declare class Monorepo {
25
27
  get resources(): Array<ResourceInfo>;
26
28
  resource(nameOrId: string): ResourceInfo;
27
29
  get vars(): Record<string, unknown>;
30
+ taskManager(): import("@listr2/manager").Manager<any, ListrRendererValue, "simple">;
31
+ setTaskRenderer(renderer: ListrRendererValue): void;
28
32
  expand<T extends Expandable>(toExpand: T, vars?: Record<string, unknown>, expander?: TemplateExpander): Promise<T extends string ? string : T extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: /*elided*/ any; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_1 ? T_1 extends U[K_1] ? T_1 extends string ? string : T_1 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_1 extends { readonly [K_3 in keyof T_1]: Expandable; } ? { readonly [K_4 in keyof T_1]: /*elided*/ any; } : T_1 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_1 ? T_1 extends U[K_1] ? T_1 extends string ? string : T_1 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_1 extends { readonly [K_3 in keyof T_1]: Expandable; } ? { readonly [K_4 in keyof T_1]: T_1[K_4] extends infer T_2 ? T_2 extends T_1[K_4] ? T_2 extends string ? string : T_2 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_2 extends { readonly [K_5 in keyof T_2]: Expandable; } ? { readonly [K_6 in keyof T_2]: /*elided*/ any; } : T_2 : never : never; } : T_1 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_1 ? T_1 extends U[K_1] ? T_1 extends string ? string : T_1 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_1 extends { readonly [K_3 in keyof T_1]: Expandable; } ? { readonly [K_4 in keyof T_1]: T_1[K_4] extends infer T_2 ? T_2 extends T_1[K_4] ? T_2 extends string ? string : T_2 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_2 extends { readonly [K_5 in keyof T_2]: Expandable; } ? { readonly [K_6 in keyof T_2]: T_2[K_6] extends infer T_3 ? T_3 extends T_2[K_6] ? T_3 extends string ? string : T_3 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_3 extends { readonly [K_7 in keyof T_3]: Expandable; } ? { readonly [K_8 in keyof T_3]: /*elided*/ any; } : T_3 : never : never; } : T_2 : never : never; } : T_1 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_1 ? T_1 extends U[K_1] ? T_1 extends string ? string : T_1 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_1 extends { readonly [K_3 in keyof T_1]: Expandable; } ? { readonly [K_4 in keyof T_1]: T_1[K_4] extends infer T_2 ? T_2 extends T_1[K_4] ? T_2 extends string ? string : T_2 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_2 extends { readonly [K_5 in keyof T_2]: Expandable; } ? { readonly [K_6 in keyof T_2]: T_2[K_6] extends infer T_3 ? T_3 extends T_2[K_6] ? T_3 extends string ? string : T_3 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_3 extends { readonly [K_7 in keyof T_3]: Expandable; } ? { readonly [K_8 in keyof T_3]: T_3[K_8] extends infer T_4 ? T_4 extends T_3[K_8] ? T_4 extends string ? string : T_4 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_4 extends { readonly [K_9 in keyof T_4]: Expandable; } ? { readonly [K_10 in keyof T_4]: /*elided*/ any; } : T_4 : never : never; } : T_3 : never : never; } : T_2 : never : never; } : T_1 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_1 ? T_1 extends U[K_1] ? T_1 extends string ? string : T_1 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_1 extends { readonly [K_3 in keyof T_1]: Expandable; } ? { readonly [K_4 in keyof T_1]: T_1[K_4] extends infer T_2 ? T_2 extends T_1[K_4] ? T_2 extends string ? string : T_2 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_2 extends { readonly [K_5 in keyof T_2]: Expandable; } ? { readonly [K_6 in keyof T_2]: T_2[K_6] extends infer T_3 ? T_3 extends T_2[K_6] ? T_3 extends string ? string : T_3 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_3 extends { readonly [K_7 in keyof T_3]: Expandable; } ? { readonly [K_8 in keyof T_3]: T_3[K_8] extends infer T_4 ? T_4 extends T_3[K_8] ? T_4 extends string ? string : T_4 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_4 extends { readonly [K_9 in keyof T_4]: Expandable; } ? { readonly [K_10 in keyof T_4]: T_4[K_10] extends infer T_5 ? T_5 extends T_4[K_10] ? T_5 extends string ? string : T_5 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_5 extends { readonly [K_11 in keyof T_5]: Expandable; } ? { readonly [K_12 in keyof T_5]: /*elided*/ any; } : T_5 : never : never; } : T_4 : never : never; } : T_3 : never : never; } : T_2 : never : never; } : T_1 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_1 ? T_1 extends U[K_1] ? T_1 extends string ? string : T_1 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_1 extends { readonly [K_3 in keyof T_1]: Expandable; } ? { readonly [K_4 in keyof T_1]: T_1[K_4] extends infer T_2 ? T_2 extends T_1[K_4] ? T_2 extends string ? string : T_2 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_2 extends { readonly [K_5 in keyof T_2]: Expandable; } ? { readonly [K_6 in keyof T_2]: T_2[K_6] extends infer T_3 ? T_3 extends T_2[K_6] ? T_3 extends string ? string : T_3 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_3 extends { readonly [K_7 in keyof T_3]: Expandable; } ? { readonly [K_8 in keyof T_3]: T_3[K_8] extends infer T_4 ? T_4 extends T_3[K_8] ? T_4 extends string ? string : T_4 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_4 extends { readonly [K_9 in keyof T_4]: Expandable; } ? { readonly [K_10 in keyof T_4]: T_4[K_10] extends infer T_5 ? T_5 extends T_4[K_10] ? T_5 extends string ? string : T_5 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_5 extends { readonly [K_11 in keyof T_5]: Expandable; } ? { readonly [K_12 in keyof T_5]: T_5[K_12] extends infer T_6 ? T_6 extends T_5[K_12] ? T_6 extends string ? string : T_6 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_6 extends { readonly [K_13 in keyof T_6]: Expandable; } ? { readonly [K_14 in keyof T_6]: /*elided*/ any; } : T_6 : never : never; } : T_5 : never : never; } : T_4 : never : never; } : T_3 : never : never; } : T_2 : never : never; } : T_1 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_1 ? T_1 extends U[K_1] ? T_1 extends string ? string : T_1 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_1 extends { readonly [K_3 in keyof T_1]: Expandable; } ? { readonly [K_4 in keyof T_1]: T_1[K_4] extends infer T_2 ? T_2 extends T_1[K_4] ? T_2 extends string ? string : T_2 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_2 extends { readonly [K_5 in keyof T_2]: Expandable; } ? { readonly [K_6 in keyof T_2]: T_2[K_6] extends infer T_3 ? T_3 extends T_2[K_6] ? T_3 extends string ? string : T_3 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_3 extends { readonly [K_7 in keyof T_3]: Expandable; } ? { readonly [K_8 in keyof T_3]: T_3[K_8] extends infer T_4 ? T_4 extends T_3[K_8] ? T_4 extends string ? string : T_4 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_4 extends { readonly [K_9 in keyof T_4]: Expandable; } ? { readonly [K_10 in keyof T_4]: T_4[K_10] extends infer T_5 ? T_5 extends T_4[K_10] ? T_5 extends string ? string : T_5 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_5 extends { readonly [K_11 in keyof T_5]: Expandable; } ? { readonly [K_12 in keyof T_5]: T_5[K_12] extends infer T_6 ? T_6 extends T_5[K_12] ? T_6 extends string ? string : T_6 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_6 extends { readonly [K_13 in keyof T_6]: Expandable; } ? { readonly [K_14 in keyof T_6]: T_6[K_14] extends infer T_7 ? T_7 extends T_6[K_14] ? T_7 extends string ? string : T_7 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_7 extends { readonly [K_15 in keyof T_7]: Expandable; } ? { readonly [K_16 in keyof T_7]: /*elided*/ any; } : T_7 : never : never; } : T_6 : never : never; } : T_5 : never : never; } : T_4 : never : never; } : T_3 : never : never; } : T_2 : never : never; } : T_1 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_1 ? T_1 extends U[K_1] ? T_1 extends string ? string : T_1 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_1 extends { readonly [K_3 in keyof T_1]: Expandable; } ? { readonly [K_4 in keyof T_1]: T_1[K_4] extends infer T_2 ? T_2 extends T_1[K_4] ? T_2 extends string ? string : T_2 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_2 extends { readonly [K_5 in keyof T_2]: Expandable; } ? { readonly [K_6 in keyof T_2]: T_2[K_6] extends infer T_3 ? T_3 extends T_2[K_6] ? T_3 extends string ? string : T_3 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_3 extends { readonly [K_7 in keyof T_3]: Expandable; } ? { readonly [K_8 in keyof T_3]: T_3[K_8] extends infer T_4 ? T_4 extends T_3[K_8] ? T_4 extends string ? string : T_4 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_4 extends { readonly [K_9 in keyof T_4]: Expandable; } ? { readonly [K_10 in keyof T_4]: T_4[K_10] extends infer T_5 ? T_5 extends T_4[K_10] ? T_5 extends string ? string : T_5 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_5 extends { readonly [K_11 in keyof T_5]: Expandable; } ? { readonly [K_12 in keyof T_5]: T_5[K_12] extends infer T_6 ? T_6 extends T_5[K_12] ? T_6 extends string ? string : T_6 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_6 extends { readonly [K_13 in keyof T_6]: Expandable; } ? { readonly [K_14 in keyof T_6]: T_6[K_14] extends infer T_7 ? T_7 extends T_6[K_14] ? T_7 extends string ? string : T_7 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_7 extends { readonly [K_15 in keyof T_7]: Expandable; } ? { readonly [K_16 in keyof T_7]: T_7[K_16] extends infer T_8 ? T_8 extends T_7[K_16] ? T_8 extends string ? string : T_8 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_8 extends { readonly [K_17 in keyof T_8]: Expandable; } ? { readonly [K_18 in keyof T_8]: /*elided*/ any; } : T_8 : never : never; } : T_7 : never : never; } : T_6 : never : never; } : T_5 : never : never; } : T_4 : never : never; } : T_3 : never : never; } : T_2 : never : never; } : T_1 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_1 ? T_1 extends U[K_1] ? T_1 extends string ? string : T_1 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_1 extends { readonly [K_3 in keyof T_1]: Expandable; } ? { readonly [K_4 in keyof T_1]: T_1[K_4] extends infer T_2 ? T_2 extends T_1[K_4] ? T_2 extends string ? string : T_2 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_2 extends { readonly [K_5 in keyof T_2]: Expandable; } ? { readonly [K_6 in keyof T_2]: T_2[K_6] extends infer T_3 ? T_3 extends T_2[K_6] ? T_3 extends string ? string : T_3 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_3 extends { readonly [K_7 in keyof T_3]: Expandable; } ? { readonly [K_8 in keyof T_3]: T_3[K_8] extends infer T_4 ? T_4 extends T_3[K_8] ? T_4 extends string ? string : T_4 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_4 extends { readonly [K_9 in keyof T_4]: Expandable; } ? { readonly [K_10 in keyof T_4]: T_4[K_10] extends infer T_5 ? T_5 extends T_4[K_10] ? T_5 extends string ? string : T_5 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_5 extends { readonly [K_11 in keyof T_5]: Expandable; } ? { readonly [K_12 in keyof T_5]: T_5[K_12] extends infer T_6 ? T_6 extends T_5[K_12] ? T_6 extends string ? string : T_6 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_6 extends { readonly [K_13 in keyof T_6]: Expandable; } ? { readonly [K_14 in keyof T_6]: T_6[K_14] extends infer T_7 ? T_7 extends T_6[K_14] ? T_7 extends string ? string : T_7 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_7 extends { readonly [K_15 in keyof T_7]: Expandable; } ? { readonly [K_16 in keyof T_7]: T_7[K_16] extends infer T_8 ? T_8 extends T_7[K_16] ? T_8 extends string ? string : T_8 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_8 extends { readonly [K_17 in keyof T_8]: Expandable; } ? { readonly [K_18 in keyof T_8]: T_8[K_18] extends infer T_9 ? T_9 extends T_8[K_18] ? T_9 extends string ? string : T_9 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_9 extends { readonly [K_19 in keyof T_9]: Expandable; } ? { readonly [K_20 in keyof T_9]: /*elided*/ any; } : T_9 : never : never; } : T_8 : never : never; } : T_7 : never : never; } : T_6 : never : never; } : T_5 : never : never; } : T_4 : never : never; } : T_3 : never : never; } : T_2 : never : never; } : T_1 : never : never; } : U)[] : T extends { readonly [K_2 in keyof T]: Expandable; } ? { readonly [K_3 in keyof T]: T[K_3] extends infer T_1 ? T_1 extends T[K_3] ? T_1 extends string ? string : T_1 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: /*elided*/ any; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_2 ? T_2 extends U[K_1] ? T_2 extends string ? string : T_2 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_2 extends { readonly [K_5 in keyof T_2]: Expandable; } ? { readonly [K_6 in keyof T_2]: /*elided*/ any; } : T_2 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_2 ? T_2 extends U[K_1] ? T_2 extends string ? string : T_2 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_2 extends { readonly [K_5 in keyof T_2]: Expandable; } ? { readonly [K_6 in keyof T_2]: T_2[K_6] extends infer T_3 ? T_3 extends T_2[K_6] ? T_3 extends string ? string : T_3 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_3 extends { readonly [K_7 in keyof T_3]: Expandable; } ? { readonly [K_8 in keyof T_3]: /*elided*/ any; } : T_3 : never : never; } : T_2 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_2 ? T_2 extends U[K_1] ? T_2 extends string ? string : T_2 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_2 extends { readonly [K_5 in keyof T_2]: Expandable; } ? { readonly [K_6 in keyof T_2]: T_2[K_6] extends infer T_3 ? T_3 extends T_2[K_6] ? T_3 extends string ? string : T_3 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_3 extends { readonly [K_7 in keyof T_3]: Expandable; } ? { readonly [K_8 in keyof T_3]: T_3[K_8] extends infer T_4 ? T_4 extends T_3[K_8] ? T_4 extends string ? string : T_4 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_4 extends { readonly [K_9 in keyof T_4]: Expandable; } ? { readonly [K_10 in keyof T_4]: /*elided*/ any; } : T_4 : never : never; } : T_3 : never : never; } : T_2 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_2 ? T_2 extends U[K_1] ? T_2 extends string ? string : T_2 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_2 extends { readonly [K_5 in keyof T_2]: Expandable; } ? { readonly [K_6 in keyof T_2]: T_2[K_6] extends infer T_3 ? T_3 extends T_2[K_6] ? T_3 extends string ? string : T_3 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_3 extends { readonly [K_7 in keyof T_3]: Expandable; } ? { readonly [K_8 in keyof T_3]: T_3[K_8] extends infer T_4 ? T_4 extends T_3[K_8] ? T_4 extends string ? string : T_4 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_4 extends { readonly [K_9 in keyof T_4]: Expandable; } ? { readonly [K_10 in keyof T_4]: T_4[K_10] extends infer T_5 ? T_5 extends T_4[K_10] ? T_5 extends string ? string : T_5 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_5 extends { readonly [K_11 in keyof T_5]: Expandable; } ? { readonly [K_12 in keyof T_5]: /*elided*/ any; } : T_5 : never : never; } : T_4 : never : never; } : T_3 : never : never; } : T_2 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_2 ? T_2 extends U[K_1] ? T_2 extends string ? string : T_2 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_2 extends { readonly [K_5 in keyof T_2]: Expandable; } ? { readonly [K_6 in keyof T_2]: T_2[K_6] extends infer T_3 ? T_3 extends T_2[K_6] ? T_3 extends string ? string : T_3 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_3 extends { readonly [K_7 in keyof T_3]: Expandable; } ? { readonly [K_8 in keyof T_3]: T_3[K_8] extends infer T_4 ? T_4 extends T_3[K_8] ? T_4 extends string ? string : T_4 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_4 extends { readonly [K_9 in keyof T_4]: Expandable; } ? { readonly [K_10 in keyof T_4]: T_4[K_10] extends infer T_5 ? T_5 extends T_4[K_10] ? T_5 extends string ? string : T_5 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_5 extends { readonly [K_11 in keyof T_5]: Expandable; } ? { readonly [K_12 in keyof T_5]: T_5[K_12] extends infer T_6 ? T_6 extends T_5[K_12] ? T_6 extends string ? string : T_6 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_6 extends { readonly [K_13 in keyof T_6]: Expandable; } ? { readonly [K_14 in keyof T_6]: /*elided*/ any; } : T_6 : never : never; } : T_5 : never : never; } : T_4 : never : never; } : T_3 : never : never; } : T_2 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_2 ? T_2 extends U[K_1] ? T_2 extends string ? string : T_2 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_2 extends { readonly [K_5 in keyof T_2]: Expandable; } ? { readonly [K_6 in keyof T_2]: T_2[K_6] extends infer T_3 ? T_3 extends T_2[K_6] ? T_3 extends string ? string : T_3 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_3 extends { readonly [K_7 in keyof T_3]: Expandable; } ? { readonly [K_8 in keyof T_3]: T_3[K_8] extends infer T_4 ? T_4 extends T_3[K_8] ? T_4 extends string ? string : T_4 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_4 extends { readonly [K_9 in keyof T_4]: Expandable; } ? { readonly [K_10 in keyof T_4]: T_4[K_10] extends infer T_5 ? T_5 extends T_4[K_10] ? T_5 extends string ? string : T_5 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_5 extends { readonly [K_11 in keyof T_5]: Expandable; } ? { readonly [K_12 in keyof T_5]: T_5[K_12] extends infer T_6 ? T_6 extends T_5[K_12] ? T_6 extends string ? string : T_6 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_6 extends { readonly [K_13 in keyof T_6]: Expandable; } ? { readonly [K_14 in keyof T_6]: T_6[K_14] extends infer T_7 ? T_7 extends T_6[K_14] ? T_7 extends string ? string : T_7 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_7 extends { readonly [K_15 in keyof T_7]: Expandable; } ? { readonly [K_16 in keyof T_7]: /*elided*/ any; } : T_7 : never : never; } : T_6 : never : never; } : T_5 : never : never; } : T_4 : never : never; } : T_3 : never : never; } : T_2 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_2 ? T_2 extends U[K_1] ? T_2 extends string ? string : T_2 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_2 extends { readonly [K_5 in keyof T_2]: Expandable; } ? { readonly [K_6 in keyof T_2]: T_2[K_6] extends infer T_3 ? T_3 extends T_2[K_6] ? T_3 extends string ? string : T_3 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_3 extends { readonly [K_7 in keyof T_3]: Expandable; } ? { readonly [K_8 in keyof T_3]: T_3[K_8] extends infer T_4 ? T_4 extends T_3[K_8] ? T_4 extends string ? string : T_4 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_4 extends { readonly [K_9 in keyof T_4]: Expandable; } ? { readonly [K_10 in keyof T_4]: T_4[K_10] extends infer T_5 ? T_5 extends T_4[K_10] ? T_5 extends string ? string : T_5 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_5 extends { readonly [K_11 in keyof T_5]: Expandable; } ? { readonly [K_12 in keyof T_5]: T_5[K_12] extends infer T_6 ? T_6 extends T_5[K_12] ? T_6 extends string ? string : T_6 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_6 extends { readonly [K_13 in keyof T_6]: Expandable; } ? { readonly [K_14 in keyof T_6]: T_6[K_14] extends infer T_7 ? T_7 extends T_6[K_14] ? T_7 extends string ? string : T_7 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_7 extends { readonly [K_15 in keyof T_7]: Expandable; } ? { readonly [K_16 in keyof T_7]: T_7[K_16] extends infer T_8 ? T_8 extends T_7[K_16] ? T_8 extends string ? string : T_8 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_8 extends { readonly [K_17 in keyof T_8]: Expandable; } ? { readonly [K_18 in keyof T_8]: /*elided*/ any; } : T_8 : never : never; } : T_7 : never : never; } : T_6 : never : never; } : T_5 : never : never; } : T_4 : never : never; } : T_3 : never : never; } : T_2 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_2 ? T_2 extends U[K_1] ? T_2 extends string ? string : T_2 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_2 extends { readonly [K_5 in keyof T_2]: Expandable; } ? { readonly [K_6 in keyof T_2]: T_2[K_6] extends infer T_3 ? T_3 extends T_2[K_6] ? T_3 extends string ? string : T_3 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_3 extends { readonly [K_7 in keyof T_3]: Expandable; } ? { readonly [K_8 in keyof T_3]: T_3[K_8] extends infer T_4 ? T_4 extends T_3[K_8] ? T_4 extends string ? string : T_4 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_4 extends { readonly [K_9 in keyof T_4]: Expandable; } ? { readonly [K_10 in keyof T_4]: T_4[K_10] extends infer T_5 ? T_5 extends T_4[K_10] ? T_5 extends string ? string : T_5 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_5 extends { readonly [K_11 in keyof T_5]: Expandable; } ? { readonly [K_12 in keyof T_5]: T_5[K_12] extends infer T_6 ? T_6 extends T_5[K_12] ? T_6 extends string ? string : T_6 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_6 extends { readonly [K_13 in keyof T_6]: Expandable; } ? { readonly [K_14 in keyof T_6]: T_6[K_14] extends infer T_7 ? T_7 extends T_6[K_14] ? T_7 extends string ? string : T_7 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_7 extends { readonly [K_15 in keyof T_7]: Expandable; } ? { readonly [K_16 in keyof T_7]: T_7[K_16] extends infer T_8 ? T_8 extends T_7[K_16] ? T_8 extends string ? string : T_8 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_8 extends { readonly [K_17 in keyof T_8]: Expandable; } ? { readonly [K_18 in keyof T_8]: T_8[K_18] extends infer T_9 ? T_9 extends T_8[K_18] ? T_9 extends string ? string : T_9 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_9 extends { readonly [K_19 in keyof T_9]: Expandable; } ? { readonly [K_20 in keyof T_9]: /*elided*/ any; } : T_9 : never : never; } : T_8 : never : never; } : T_7 : never : never; } : T_6 : never : never; } : T_5 : never : never; } : T_4 : never : never; } : T_3 : never : never; } : T_2 : never : never; } : U)[] : T_1 extends { readonly [K_5 in keyof T_1]: Expandable; } ? { readonly [K_6 in keyof T_1]: T_1[K_6] extends infer T_2 ? T_2 extends T_1[K_6] ? T_2 extends string ? string : T_2 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: /*elided*/ any; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_3 ? T_3 extends U[K_1] ? T_3 extends string ? string : T_3 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_3 extends { readonly [K_7 in keyof T_3]: Expandable; } ? { readonly [K_8 in keyof T_3]: /*elided*/ any; } : T_3 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_3 ? T_3 extends U[K_1] ? T_3 extends string ? string : T_3 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_3 extends { readonly [K_7 in keyof T_3]: Expandable; } ? { readonly [K_8 in keyof T_3]: T_3[K_8] extends infer T_4 ? T_4 extends T_3[K_8] ? T_4 extends string ? string : T_4 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_4 extends { readonly [K_9 in keyof T_4]: Expandable; } ? { readonly [K_10 in keyof T_4]: /*elided*/ any; } : T_4 : never : never; } : T_3 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_3 ? T_3 extends U[K_1] ? T_3 extends string ? string : T_3 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_3 extends { readonly [K_7 in keyof T_3]: Expandable; } ? { readonly [K_8 in keyof T_3]: T_3[K_8] extends infer T_4 ? T_4 extends T_3[K_8] ? T_4 extends string ? string : T_4 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_4 extends { readonly [K_9 in keyof T_4]: Expandable; } ? { readonly [K_10 in keyof T_4]: T_4[K_10] extends infer T_5 ? T_5 extends T_4[K_10] ? T_5 extends string ? string : T_5 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_5 extends { readonly [K_11 in keyof T_5]: Expandable; } ? { readonly [K_12 in keyof T_5]: /*elided*/ any; } : T_5 : never : never; } : T_4 : never : never; } : T_3 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_3 ? T_3 extends U[K_1] ? T_3 extends string ? string : T_3 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_3 extends { readonly [K_7 in keyof T_3]: Expandable; } ? { readonly [K_8 in keyof T_3]: T_3[K_8] extends infer T_4 ? T_4 extends T_3[K_8] ? T_4 extends string ? string : T_4 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_4 extends { readonly [K_9 in keyof T_4]: Expandable; } ? { readonly [K_10 in keyof T_4]: T_4[K_10] extends infer T_5 ? T_5 extends T_4[K_10] ? T_5 extends string ? string : T_5 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_5 extends { readonly [K_11 in keyof T_5]: Expandable; } ? { readonly [K_12 in keyof T_5]: T_5[K_12] extends infer T_6 ? T_6 extends T_5[K_12] ? T_6 extends string ? string : T_6 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_6 extends { readonly [K_13 in keyof T_6]: Expandable; } ? { readonly [K_14 in keyof T_6]: /*elided*/ any; } : T_6 : never : never; } : T_5 : never : never; } : T_4 : never : never; } : T_3 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_3 ? T_3 extends U[K_1] ? T_3 extends string ? string : T_3 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_3 extends { readonly [K_7 in keyof T_3]: Expandable; } ? { readonly [K_8 in keyof T_3]: T_3[K_8] extends infer T_4 ? T_4 extends T_3[K_8] ? T_4 extends string ? string : T_4 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_4 extends { readonly [K_9 in keyof T_4]: Expandable; } ? { readonly [K_10 in keyof T_4]: T_4[K_10] extends infer T_5 ? T_5 extends T_4[K_10] ? T_5 extends string ? string : T_5 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_5 extends { readonly [K_11 in keyof T_5]: Expandable; } ? { readonly [K_12 in keyof T_5]: T_5[K_12] extends infer T_6 ? T_6 extends T_5[K_12] ? T_6 extends string ? string : T_6 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_6 extends { readonly [K_13 in keyof T_6]: Expandable; } ? { readonly [K_14 in keyof T_6]: T_6[K_14] extends infer T_7 ? T_7 extends T_6[K_14] ? T_7 extends string ? string : T_7 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_7 extends { readonly [K_15 in keyof T_7]: Expandable; } ? { readonly [K_16 in keyof T_7]: /*elided*/ any; } : T_7 : never : never; } : T_6 : never : never; } : T_5 : never : never; } : T_4 : never : never; } : T_3 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_3 ? T_3 extends U[K_1] ? T_3 extends string ? string : T_3 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_3 extends { readonly [K_7 in keyof T_3]: Expandable; } ? { readonly [K_8 in keyof T_3]: T_3[K_8] extends infer T_4 ? T_4 extends T_3[K_8] ? T_4 extends string ? string : T_4 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_4 extends { readonly [K_9 in keyof T_4]: Expandable; } ? { readonly [K_10 in keyof T_4]: T_4[K_10] extends infer T_5 ? T_5 extends T_4[K_10] ? T_5 extends string ? string : T_5 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_5 extends { readonly [K_11 in keyof T_5]: Expandable; } ? { readonly [K_12 in keyof T_5]: T_5[K_12] extends infer T_6 ? T_6 extends T_5[K_12] ? T_6 extends string ? string : T_6 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_6 extends { readonly [K_13 in keyof T_6]: Expandable; } ? { readonly [K_14 in keyof T_6]: T_6[K_14] extends infer T_7 ? T_7 extends T_6[K_14] ? T_7 extends string ? string : T_7 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_7 extends { readonly [K_15 in keyof T_7]: Expandable; } ? { readonly [K_16 in keyof T_7]: T_7[K_16] extends infer T_8 ? T_8 extends T_7[K_16] ? T_8 extends string ? string : T_8 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_8 extends { readonly [K_17 in keyof T_8]: Expandable; } ? { readonly [K_18 in keyof T_8]: /*elided*/ any; } : T_8 : never : never; } : T_7 : never : never; } : T_6 : never : never; } : T_5 : never : never; } : T_4 : never : never; } : T_3 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_3 ? T_3 extends U[K_1] ? T_3 extends string ? string : T_3 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_3 extends { readonly [K_7 in keyof T_3]: Expandable; } ? { readonly [K_8 in keyof T_3]: T_3[K_8] extends infer T_4 ? T_4 extends T_3[K_8] ? T_4 extends string ? string : T_4 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_4 extends { readonly [K_9 in keyof T_4]: Expandable; } ? { readonly [K_10 in keyof T_4]: T_4[K_10] extends infer T_5 ? T_5 extends T_4[K_10] ? T_5 extends string ? string : T_5 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_5 extends { readonly [K_11 in keyof T_5]: Expandable; } ? { readonly [K_12 in keyof T_5]: T_5[K_12] extends infer T_6 ? T_6 extends T_5[K_12] ? T_6 extends string ? string : T_6 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_6 extends { readonly [K_13 in keyof T_6]: Expandable; } ? { readonly [K_14 in keyof T_6]: T_6[K_14] extends infer T_7 ? T_7 extends T_6[K_14] ? T_7 extends string ? string : T_7 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_7 extends { readonly [K_15 in keyof T_7]: Expandable; } ? { readonly [K_16 in keyof T_7]: T_7[K_16] extends infer T_8 ? T_8 extends T_7[K_16] ? T_8 extends string ? string : T_8 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_8 extends { readonly [K_17 in keyof T_8]: Expandable; } ? { readonly [K_18 in keyof T_8]: T_8[K_18] extends infer T_9 ? T_9 extends T_8[K_18] ? T_9 extends string ? string : T_9 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_9 extends { readonly [K_19 in keyof T_9]: Expandable; } ? { readonly [K_20 in keyof T_9]: /*elided*/ any; } : T_9 : never : never; } : T_8 : never : never; } : T_7 : never : never; } : T_6 : never : never; } : T_5 : never : never; } : T_4 : never : never; } : T_3 : never : never; } : U)[] : T_2 extends { readonly [K_7 in keyof T_2]: Expandable; } ? { readonly [K_8 in keyof T_2]: T_2[K_8] extends infer T_3 ? T_3 extends T_2[K_8] ? T_3 extends string ? string : T_3 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: /*elided*/ any; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_4 ? T_4 extends U[K_1] ? T_4 extends string ? string : T_4 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_4 extends { readonly [K_9 in keyof T_4]: Expandable; } ? { readonly [K_10 in keyof T_4]: /*elided*/ any; } : T_4 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_4 ? T_4 extends U[K_1] ? T_4 extends string ? string : T_4 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_4 extends { readonly [K_9 in keyof T_4]: Expandable; } ? { readonly [K_10 in keyof T_4]: T_4[K_10] extends infer T_5 ? T_5 extends T_4[K_10] ? T_5 extends string ? string : T_5 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_5 extends { readonly [K_11 in keyof T_5]: Expandable; } ? { readonly [K_12 in keyof T_5]: /*elided*/ any; } : T_5 : never : never; } : T_4 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_4 ? T_4 extends U[K_1] ? T_4 extends string ? string : T_4 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_4 extends { readonly [K_9 in keyof T_4]: Expandable; } ? { readonly [K_10 in keyof T_4]: T_4[K_10] extends infer T_5 ? T_5 extends T_4[K_10] ? T_5 extends string ? string : T_5 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_5 extends { readonly [K_11 in keyof T_5]: Expandable; } ? { readonly [K_12 in keyof T_5]: T_5[K_12] extends infer T_6 ? T_6 extends T_5[K_12] ? T_6 extends string ? string : T_6 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_6 extends { readonly [K_13 in keyof T_6]: Expandable; } ? { readonly [K_14 in keyof T_6]: /*elided*/ any; } : T_6 : never : never; } : T_5 : never : never; } : T_4 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_4 ? T_4 extends U[K_1] ? T_4 extends string ? string : T_4 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_4 extends { readonly [K_9 in keyof T_4]: Expandable; } ? { readonly [K_10 in keyof T_4]: T_4[K_10] extends infer T_5 ? T_5 extends T_4[K_10] ? T_5 extends string ? string : T_5 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_5 extends { readonly [K_11 in keyof T_5]: Expandable; } ? { readonly [K_12 in keyof T_5]: T_5[K_12] extends infer T_6 ? T_6 extends T_5[K_12] ? T_6 extends string ? string : T_6 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_6 extends { readonly [K_13 in keyof T_6]: Expandable; } ? { readonly [K_14 in keyof T_6]: T_6[K_14] extends infer T_7 ? T_7 extends T_6[K_14] ? T_7 extends string ? string : T_7 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_7 extends { readonly [K_15 in keyof T_7]: Expandable; } ? { readonly [K_16 in keyof T_7]: /*elided*/ any; } : T_7 : never : never; } : T_6 : never : never; } : T_5 : never : never; } : T_4 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_4 ? T_4 extends U[K_1] ? T_4 extends string ? string : T_4 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_4 extends { readonly [K_9 in keyof T_4]: Expandable; } ? { readonly [K_10 in keyof T_4]: T_4[K_10] extends infer T_5 ? T_5 extends T_4[K_10] ? T_5 extends string ? string : T_5 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_5 extends { readonly [K_11 in keyof T_5]: Expandable; } ? { readonly [K_12 in keyof T_5]: T_5[K_12] extends infer T_6 ? T_6 extends T_5[K_12] ? T_6 extends string ? string : T_6 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_6 extends { readonly [K_13 in keyof T_6]: Expandable; } ? { readonly [K_14 in keyof T_6]: T_6[K_14] extends infer T_7 ? T_7 extends T_6[K_14] ? T_7 extends string ? string : T_7 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_7 extends { readonly [K_15 in keyof T_7]: Expandable; } ? { readonly [K_16 in keyof T_7]: T_7[K_16] extends infer T_8 ? T_8 extends T_7[K_16] ? T_8 extends string ? string : T_8 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_8 extends { readonly [K_17 in keyof T_8]: Expandable; } ? { readonly [K_18 in keyof T_8]: /*elided*/ any; } : T_8 : never : never; } : T_7 : never : never; } : T_6 : never : never; } : T_5 : never : never; } : T_4 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_4 ? T_4 extends U[K_1] ? T_4 extends string ? string : T_4 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_4 extends { readonly [K_9 in keyof T_4]: Expandable; } ? { readonly [K_10 in keyof T_4]: T_4[K_10] extends infer T_5 ? T_5 extends T_4[K_10] ? T_5 extends string ? string : T_5 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_5 extends { readonly [K_11 in keyof T_5]: Expandable; } ? { readonly [K_12 in keyof T_5]: T_5[K_12] extends infer T_6 ? T_6 extends T_5[K_12] ? T_6 extends string ? string : T_6 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_6 extends { readonly [K_13 in keyof T_6]: Expandable; } ? { readonly [K_14 in keyof T_6]: T_6[K_14] extends infer T_7 ? T_7 extends T_6[K_14] ? T_7 extends string ? string : T_7 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_7 extends { readonly [K_15 in keyof T_7]: Expandable; } ? { readonly [K_16 in keyof T_7]: T_7[K_16] extends infer T_8 ? T_8 extends T_7[K_16] ? T_8 extends string ? string : T_8 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_8 extends { readonly [K_17 in keyof T_8]: Expandable; } ? { readonly [K_18 in keyof T_8]: T_8[K_18] extends infer T_9 ? T_9 extends T_8[K_18] ? T_9 extends string ? string : T_9 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_9 extends { readonly [K_19 in keyof T_9]: Expandable; } ? { readonly [K_20 in keyof T_9]: /*elided*/ any; } : T_9 : never : never; } : T_8 : never : never; } : T_7 : never : never; } : T_6 : never : never; } : T_5 : never : never; } : T_4 : never : never; } : U)[] : T_3 extends { readonly [K_9 in keyof T_3]: Expandable; } ? { readonly [K_10 in keyof T_3]: T_3[K_10] extends infer T_4 ? T_4 extends T_3[K_10] ? T_4 extends string ? string : T_4 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: /*elided*/ any; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_5 ? T_5 extends U[K_1] ? T_5 extends string ? string : T_5 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_5 extends { readonly [K_11 in keyof T_5]: Expandable; } ? { readonly [K_12 in keyof T_5]: /*elided*/ any; } : T_5 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_5 ? T_5 extends U[K_1] ? T_5 extends string ? string : T_5 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_5 extends { readonly [K_11 in keyof T_5]: Expandable; } ? { readonly [K_12 in keyof T_5]: T_5[K_12] extends infer T_6 ? T_6 extends T_5[K_12] ? T_6 extends string ? string : T_6 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_6 extends { readonly [K_13 in keyof T_6]: Expandable; } ? { readonly [K_14 in keyof T_6]: /*elided*/ any; } : T_6 : never : never; } : T_5 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_5 ? T_5 extends U[K_1] ? T_5 extends string ? string : T_5 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_5 extends { readonly [K_11 in keyof T_5]: Expandable; } ? { readonly [K_12 in keyof T_5]: T_5[K_12] extends infer T_6 ? T_6 extends T_5[K_12] ? T_6 extends string ? string : T_6 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_6 extends { readonly [K_13 in keyof T_6]: Expandable; } ? { readonly [K_14 in keyof T_6]: T_6[K_14] extends infer T_7 ? T_7 extends T_6[K_14] ? T_7 extends string ? string : T_7 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_7 extends { readonly [K_15 in keyof T_7]: Expandable; } ? { readonly [K_16 in keyof T_7]: /*elided*/ any; } : T_7 : never : never; } : T_6 : never : never; } : T_5 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_5 ? T_5 extends U[K_1] ? T_5 extends string ? string : T_5 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_5 extends { readonly [K_11 in keyof T_5]: Expandable; } ? { readonly [K_12 in keyof T_5]: T_5[K_12] extends infer T_6 ? T_6 extends T_5[K_12] ? T_6 extends string ? string : T_6 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_6 extends { readonly [K_13 in keyof T_6]: Expandable; } ? { readonly [K_14 in keyof T_6]: T_6[K_14] extends infer T_7 ? T_7 extends T_6[K_14] ? T_7 extends string ? string : T_7 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_7 extends { readonly [K_15 in keyof T_7]: Expandable; } ? { readonly [K_16 in keyof T_7]: T_7[K_16] extends infer T_8 ? T_8 extends T_7[K_16] ? T_8 extends string ? string : T_8 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_8 extends { readonly [K_17 in keyof T_8]: Expandable; } ? { readonly [K_18 in keyof T_8]: /*elided*/ any; } : T_8 : never : never; } : T_7 : never : never; } : T_6 : never : never; } : T_5 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_5 ? T_5 extends U[K_1] ? T_5 extends string ? string : T_5 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_5 extends { readonly [K_11 in keyof T_5]: Expandable; } ? { readonly [K_12 in keyof T_5]: T_5[K_12] extends infer T_6 ? T_6 extends T_5[K_12] ? T_6 extends string ? string : T_6 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_6 extends { readonly [K_13 in keyof T_6]: Expandable; } ? { readonly [K_14 in keyof T_6]: T_6[K_14] extends infer T_7 ? T_7 extends T_6[K_14] ? T_7 extends string ? string : T_7 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_7 extends { readonly [K_15 in keyof T_7]: Expandable; } ? { readonly [K_16 in keyof T_7]: T_7[K_16] extends infer T_8 ? T_8 extends T_7[K_16] ? T_8 extends string ? string : T_8 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_8 extends { readonly [K_17 in keyof T_8]: Expandable; } ? { readonly [K_18 in keyof T_8]: T_8[K_18] extends infer T_9 ? T_9 extends T_8[K_18] ? T_9 extends string ? string : T_9 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_9 extends { readonly [K_19 in keyof T_9]: Expandable; } ? { readonly [K_20 in keyof T_9]: /*elided*/ any; } : T_9 : never : never; } : T_8 : never : never; } : T_7 : never : never; } : T_6 : never : never; } : T_5 : never : never; } : U)[] : T_4 extends { readonly [K_11 in keyof T_4]: Expandable; } ? { readonly [K_12 in keyof T_4]: T_4[K_12] extends infer T_5 ? T_5 extends T_4[K_12] ? T_5 extends string ? string : T_5 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: /*elided*/ any; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_6 ? T_6 extends U[K_1] ? T_6 extends string ? string : T_6 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_6 extends { readonly [K_13 in keyof T_6]: Expandable; } ? { readonly [K_14 in keyof T_6]: /*elided*/ any; } : T_6 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_6 ? T_6 extends U[K_1] ? T_6 extends string ? string : T_6 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_6 extends { readonly [K_13 in keyof T_6]: Expandable; } ? { readonly [K_14 in keyof T_6]: T_6[K_14] extends infer T_7 ? T_7 extends T_6[K_14] ? T_7 extends string ? string : T_7 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_7 extends { readonly [K_15 in keyof T_7]: Expandable; } ? { readonly [K_16 in keyof T_7]: /*elided*/ any; } : T_7 : never : never; } : T_6 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_6 ? T_6 extends U[K_1] ? T_6 extends string ? string : T_6 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_6 extends { readonly [K_13 in keyof T_6]: Expandable; } ? { readonly [K_14 in keyof T_6]: T_6[K_14] extends infer T_7 ? T_7 extends T_6[K_14] ? T_7 extends string ? string : T_7 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_7 extends { readonly [K_15 in keyof T_7]: Expandable; } ? { readonly [K_16 in keyof T_7]: T_7[K_16] extends infer T_8 ? T_8 extends T_7[K_16] ? T_8 extends string ? string : T_8 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_8 extends { readonly [K_17 in keyof T_8]: Expandable; } ? { readonly [K_18 in keyof T_8]: /*elided*/ any; } : T_8 : never : never; } : T_7 : never : never; } : T_6 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_6 ? T_6 extends U[K_1] ? T_6 extends string ? string : T_6 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_6 extends { readonly [K_13 in keyof T_6]: Expandable; } ? { readonly [K_14 in keyof T_6]: T_6[K_14] extends infer T_7 ? T_7 extends T_6[K_14] ? T_7 extends string ? string : T_7 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_7 extends { readonly [K_15 in keyof T_7]: Expandable; } ? { readonly [K_16 in keyof T_7]: T_7[K_16] extends infer T_8 ? T_8 extends T_7[K_16] ? T_8 extends string ? string : T_8 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_8 extends { readonly [K_17 in keyof T_8]: Expandable; } ? { readonly [K_18 in keyof T_8]: T_8[K_18] extends infer T_9 ? T_9 extends T_8[K_18] ? T_9 extends string ? string : T_9 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_9 extends { readonly [K_19 in keyof T_9]: Expandable; } ? { readonly [K_20 in keyof T_9]: /*elided*/ any; } : T_9 : never : never; } : T_8 : never : never; } : T_7 : never : never; } : T_6 : never : never; } : U)[] : T_5 extends { readonly [K_13 in keyof T_5]: Expandable; } ? { readonly [K_14 in keyof T_5]: T_5[K_14] extends infer T_6 ? T_6 extends T_5[K_14] ? T_6 extends string ? string : T_6 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: /*elided*/ any; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_7 ? T_7 extends U[K_1] ? T_7 extends string ? string : T_7 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_7 extends { readonly [K_15 in keyof T_7]: Expandable; } ? { readonly [K_16 in keyof T_7]: /*elided*/ any; } : T_7 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_7 ? T_7 extends U[K_1] ? T_7 extends string ? string : T_7 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_7 extends { readonly [K_15 in keyof T_7]: Expandable; } ? { readonly [K_16 in keyof T_7]: T_7[K_16] extends infer T_8 ? T_8 extends T_7[K_16] ? T_8 extends string ? string : T_8 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_8 extends { readonly [K_17 in keyof T_8]: Expandable; } ? { readonly [K_18 in keyof T_8]: /*elided*/ any; } : T_8 : never : never; } : T_7 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_7 ? T_7 extends U[K_1] ? T_7 extends string ? string : T_7 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_7 extends { readonly [K_15 in keyof T_7]: Expandable; } ? { readonly [K_16 in keyof T_7]: T_7[K_16] extends infer T_8 ? T_8 extends T_7[K_16] ? T_8 extends string ? string : T_8 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_8 extends { readonly [K_17 in keyof T_8]: Expandable; } ? { readonly [K_18 in keyof T_8]: T_8[K_18] extends infer T_9 ? T_9 extends T_8[K_18] ? T_9 extends string ? string : T_9 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_9 extends { readonly [K_19 in keyof T_9]: Expandable; } ? { readonly [K_20 in keyof T_9]: /*elided*/ any; } : T_9 : never : never; } : T_8 : never : never; } : T_7 : never : never; } : U)[] : T_6 extends { readonly [K_15 in keyof T_6]: Expandable; } ? { readonly [K_16 in keyof T_6]: T_6[K_16] extends infer T_7 ? T_7 extends T_6[K_16] ? T_7 extends string ? string : T_7 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: /*elided*/ any; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_8 ? T_8 extends U[K_1] ? T_8 extends string ? string : T_8 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_8 extends { readonly [K_17 in keyof T_8]: Expandable; } ? { readonly [K_18 in keyof T_8]: /*elided*/ any; } : T_8 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_8 ? T_8 extends U[K_1] ? T_8 extends string ? string : T_8 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_8 extends { readonly [K_17 in keyof T_8]: Expandable; } ? { readonly [K_18 in keyof T_8]: T_8[K_18] extends infer T_9 ? T_9 extends T_8[K_18] ? T_9 extends string ? string : T_9 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_9 extends { readonly [K_19 in keyof T_9]: Expandable; } ? { readonly [K_20 in keyof T_9]: /*elided*/ any; } : T_9 : never : never; } : T_8 : never : never; } : U)[] : T_7 extends { readonly [K_17 in keyof T_7]: Expandable; } ? { readonly [K_18 in keyof T_7]: T_7[K_18] extends infer T_8 ? T_8 extends T_7[K_18] ? T_8 extends string ? string : T_8 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: /*elided*/ any; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_9 ? T_9 extends U[K_1] ? T_9 extends string ? string : T_9 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_9 extends { readonly [K_19 in keyof T_9]: Expandable; } ? { readonly [K_20 in keyof T_9]: /*elided*/ any; } : T_9 : never : never; } : U)[] : T_8 extends { readonly [K_19 in keyof T_8]: Expandable; } ? { readonly [K_20 in keyof T_8]: T_8[K_20] extends infer T_9 ? T_9 extends T_8[K_20] ? T_9 extends string ? string : T_9 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: /*elided*/ any; } : U)[] : T_9 extends { readonly [K_21 in keyof T_9]: Expandable; } ? { readonly [K_22 in keyof T_9]: T_9[K_22] extends infer T_10 ? T_10 extends T_9[K_22] ? T_10 extends string ? string : T_10 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_10 extends { readonly [K_23 in keyof T_10]: Expandable; } ? { readonly [K_24 in keyof T_10]: /*elided*/ any; } : T_10 : never : never; } : T_9 : never : never; } : T_8 : never : never; } : T_7 : never : never; } : T_6 : never : never; } : T_5 : never : never; } : T_4 : never : never; } : T_3 : never : never; } : T_2 : never : never; } : T_1 : never : never; } : T>;
29
33
  private installStore;
30
34
  private installEnv;
@@ -1,3 +1,4 @@
1
+ import { TaskManagerFactory } from '../index.js';
1
2
  import jsonpatch from 'fast-json-patch';
2
3
  import { join } from 'node:path';
3
4
  import { TemplateExpander } from '../utils/index.js';
@@ -10,6 +11,7 @@ export class Monorepo {
10
11
  defaultFlavor;
11
12
  _config;
12
13
  _store;
14
+ _managerFactory = new TaskManagerFactory();
13
15
  initialized = false;
14
16
  constructor(config, _rootDir, defaultFlavor = 'default') {
15
17
  this._rootDir = _rootDir;
@@ -95,6 +97,13 @@ export class Monorepo {
95
97
  get vars() {
96
98
  return this._config.vars;
97
99
  }
100
+ // Helper to get a listr2 task manager
101
+ taskManager() {
102
+ return this._managerFactory.factor();
103
+ }
104
+ setTaskRenderer(renderer) {
105
+ this._managerFactory.setRenderer(renderer);
106
+ }
98
107
  // Helper to expand a record of strings
99
108
  async expand(toExpand, vars, expander = new TemplateExpander()) {
100
109
  const options = {
@@ -1,6 +1,6 @@
1
1
  import { PRESET_TIMER, } from 'listr2';
2
2
  import * as z from 'zod';
3
- import { EMBCollection, findRunOrder, taskManagerFactory, } from '../../index.js';
3
+ import { EMBCollection, findRunOrder, } from '../../index.js';
4
4
  import { ResourceFactory } from '../../resources/ResourceFactory.js';
5
5
  import { AbstractOperation } from '../../../operations/index.js';
6
6
  const schema = z.object({
@@ -30,7 +30,7 @@ export class BuildResourcesOperation extends AbstractOperation {
30
30
  }
31
31
  async _run(input) {
32
32
  const { monorepo } = this.context;
33
- const manager = taskManagerFactory();
33
+ const manager = monorepo.taskManager();
34
34
  const collection = new EMBCollection(monorepo.resources, {
35
35
  idField: 'id',
36
36
  depField: 'dependencies',
@@ -1,7 +1,6 @@
1
1
  import { getContext } from '../../../index.js';
2
2
  import { input } from '@inquirer/prompts';
3
3
  import { ListrInquirerPromptAdapter } from '@listr2/prompt-adapter-inquirer';
4
- import { Listr } from 'listr2';
5
4
  import { PassThrough } from 'node:stream';
6
5
  import { ContainerExecOperation } from '../../../docker/index.js';
7
6
  import { EMBCollection, findRunOrder } from '../../index.js';
@@ -14,6 +13,7 @@ export var ExecutorType;
14
13
  export class RunTasksOperation {
15
14
  async run(params) {
16
15
  const { monorepo, compose } = getContext();
16
+ const manager = monorepo.taskManager();
17
17
  // First ensure the selection is valid (user can use task IDs or names)
18
18
  const collection = new EMBCollection(monorepo.tasks, {
19
19
  idField: 'id',
@@ -22,7 +22,7 @@ export class RunTasksOperation {
22
22
  const ordered = findRunOrder(params.tasks, collection, {
23
23
  onAmbiguous: params.allMatching ? 'runAll' : 'error',
24
24
  });
25
- const tasks = new Listr(ordered.map((task) => {
25
+ await manager.run(ordered.map((task) => {
26
26
  return {
27
27
  rendererOptions: {
28
28
  persistentOutput: true,
@@ -38,7 +38,6 @@ export class RunTasksOperation {
38
38
  ? ExecutorType.container
39
39
  : ExecutorType.local
40
40
  : ExecutorType.local);
41
- console.log(compose.isService(task.component), task.component);
42
41
  if (executor === ExecutorType.container &&
43
42
  (!task.component || !compose.isService(task.component))) {
44
43
  throw new Error('Cannot use the container executor with this task');
@@ -75,7 +74,6 @@ export class RunTasksOperation {
75
74
  title: `Running ${task.id}`,
76
75
  };
77
76
  }));
78
- await tasks.run();
79
77
  return ordered;
80
78
  }
81
79
  async runDocker(task, out) {
@@ -1,3 +1,8 @@
1
1
  import { Manager } from '@listr2/manager';
2
2
  import { ListrContext, ListrRendererValue, ListrSecondaryRendererValue } from 'listr2';
3
- export declare function taskManagerFactory<Ctx = ListrContext, FallbackRenderer extends ListrRendererValue = ListrSecondaryRendererValue>(): Manager<Ctx, ListrRendererValue, FallbackRenderer>;
3
+ export declare class TaskManagerFactory<Ctx = ListrContext, FallbackRenderer extends ListrRendererValue = ListrSecondaryRendererValue> {
4
+ private renderer;
5
+ constructor(renderer?: ListrRendererValue);
6
+ setRenderer(renderer: ListrRendererValue): void;
7
+ factor(): Manager<Ctx, ListrRendererValue, FallbackRenderer>;
8
+ }
@@ -1,20 +1,34 @@
1
1
  import { Manager } from '@listr2/manager';
2
2
  import { ListrDefaultRendererLogLevels, PRESET_TIMER, } from 'listr2';
3
- export function taskManagerFactory() {
4
- return new Manager({
5
- collectErrors: 'minimal',
6
- concurrent: false,
7
- exitOnError: true,
8
- rendererOptions: {
9
- collapseErrors: false,
10
- collapseSubtasks: false,
11
- collapseSkips: false,
12
- icon: {
13
- [ListrDefaultRendererLogLevels.SKIPPED_WITH_COLLAPSE]: '♺',
3
+ export class TaskManagerFactory {
4
+ renderer;
5
+ constructor(renderer = 'default') {
6
+ this.renderer = renderer;
7
+ }
8
+ setRenderer(renderer) {
9
+ this.renderer = renderer;
10
+ }
11
+ factor() {
12
+ if (this.renderer === 'verbose') {
13
+ return new Manager({
14
+ renderer: 'verbose',
15
+ });
16
+ }
17
+ return new Manager({
18
+ collectErrors: 'minimal',
19
+ concurrent: false,
20
+ exitOnError: true,
21
+ rendererOptions: {
22
+ collapseErrors: false,
23
+ collapseSubtasks: false,
24
+ collapseSkips: false,
25
+ icon: {
26
+ [ListrDefaultRendererLogLevels.SKIPPED_WITH_COLLAPSE]: '♺',
27
+ },
28
+ timer: {
29
+ ...PRESET_TIMER,
30
+ },
14
31
  },
15
- timer: {
16
- ...PRESET_TIMER,
17
- },
18
- },
19
- });
32
+ });
33
+ }
20
34
  }