| 532 | |
| 533 | /** @internal */ |
| 534 | export const all = <const Arg extends Iterable<Config.Config<any>> | Record<string, Config.Config<any>>>( |
| 535 | arg: Arg |
| 536 | ): Config.Config< |
| 537 | [Arg] extends [ReadonlyArray<Config.Config<any>>] ? { |
| 538 | -readonly [K in keyof Arg]: [Arg[K]] extends [Config.Config<infer A>] ? A : never |
| 539 | } |
| 540 | : [Arg] extends [Iterable<Config.Config<infer A>>] ? Array<A> |
| 541 | : [Arg] extends [Record<string, Config.Config<any>>] ? { |
| 542 | -readonly [K in keyof Arg]: [Arg[K]] extends [Config.Config<infer A>] ? A : never |
| 543 | } |
| 544 | : never |
| 545 | > => { |
| 546 | if (Array.isArray(arg)) { |
| 547 | return tuple(arg) as any |
| 548 | } else if (Symbol.iterator in arg) { |
| 549 | return tuple([...(arg as Iterable<Config.Config<any>>)]) as any |
| 550 | } |
| 551 | return struct(arg) as any |
| 552 | } |
| 553 | |
| 554 | const struct = <NER extends Record<string, Config.Config<any>>>(r: NER): Config.Config< |
| 555 | { |