|
1 | 1 | import { Selector } from './Selector' |
2 | | -import { MaybeSelector } from './MaybeSelector' |
3 | 2 | import { Get } from './Get' |
4 | 3 | import { Set } from './Set' |
5 | | -import { MaybeGet } from './MaybeGet' |
| 4 | +import { Composable } from "./Composable" |
| 5 | +import { Dimensionality, Structure } from "./Discriminants"; |
6 | 6 |
|
7 | | -export interface MaybeGetPropOverloads<A, B, Params extends {} = {}> { |
8 | | - <K1 extends keyof B>(key: K1): MaybeGet<A, B[K1], Params> |
9 | | - <K1 extends keyof B, K2 extends keyof B[K1]>(k1: K1, k2: K2): MaybeGet<A, B[K1][K2], Params> |
10 | | - <K1 extends keyof B, K2 extends keyof B[K1], K3 extends keyof B[K1][K2]>(k1: K1, k2: K2, k3: K3): MaybeGet<B, B[K1][K2][K3], Params> |
11 | | - <K1 extends keyof B, K2 extends keyof B[K1], K3 extends keyof B[K1][K2], K4 extends keyof B[K1][K2][K3]>(k1: K1, k2: K2, k3: K3): MaybeGet<B, B[K1][K2][K3][K4], Params> |
12 | | -} |
| 7 | +export type PropOverloads<D extends Dimensionality, S extends Structure, A, B, Params extends {}> = { |
| 8 | + <K1 extends keyof B>(key: K1) |
| 9 | + : Composable.ComposeResult<A, B[K1], Params, D, Dimensionality.Single, S, Structure.Select> |
13 | 10 |
|
14 | | -export interface GetPropOverloads<A, B, Params extends {} = {}> { |
15 | | - <K1 extends keyof B>(key: K1): Get<A, B[K1], Params> |
16 | | - <K1 extends keyof B, K2 extends keyof B[K1]>(k1: K1, k2: K2): Get<A, B[K1][K2], Params> |
17 | | - <K1 extends keyof B, K2 extends keyof B[K1], K3 extends keyof B[K1][K2]>(k1: K1, k2: K2, k3: K3): Get<B, B[K1][K2][K3], Params> |
18 | | - <K1 extends keyof B, K2 extends keyof B[K1], K3 extends keyof B[K1][K2], K4 extends keyof B[K1][K2][K3]>(k1: K1, k2: K2, k3: K3): Get<B, B[K1][K2][K3][K4], Params> |
19 | | -} |
| 11 | + <K1 extends keyof B, K2 extends keyof B[K1]>(k1: K1, k2: K2) |
| 12 | + : Composable.ComposeResult<A, B[K1][K2], Params, D, Dimensionality.Single, S, Structure.Select> |
20 | 13 |
|
21 | | -export interface SelectorPropOverloads<A, B, Params extends {} = {}> { |
22 | | - <K1 extends keyof B>(key: K1): Selector<A, B[K1], Params> |
23 | | - <K1 extends keyof B, K2 extends keyof B[K1]>(k1: K1, k2: K2): Selector<A, B[K1][K2], Params> |
24 | | - <K1 extends keyof B, K2 extends keyof B[K1], K3 extends keyof B[K1][K2]>(k1: K1, k2: K2, k3: K3): Selector<B, B[K1][K2][K3], Params> |
25 | | - <K1 extends keyof B, K2 extends keyof B[K1], K3 extends keyof B[K1][K2], K4 extends keyof B[K1][K2][K3]>(k1: K1, k2: K2, k3: K3): Selector<B, B[K1][K2][K3][K4], Params> |
26 | | -} |
| 14 | + <K1 extends keyof B, K2 extends keyof B[K1], K3 extends keyof B[K1][K2]>(k1: K1, k2: K2, k3: K3) |
| 15 | + : Composable.ComposeResult<A, B[K1][K2][K3], Params, D, Dimensionality.Single, S, Structure.Select> |
27 | 16 |
|
28 | | -export interface MaybeSelectorPropOverloads<A, B, Params extends {} = {}> { |
29 | | - <K1 extends keyof B>(key: K1): MaybeSelector<A, B[K1], Params> |
30 | | - <K1 extends keyof B, K2 extends keyof B[K1]>(k1: K1, k2: K2): MaybeSelector<A, B[K1][K2], Params> |
31 | | - <K1 extends keyof B, K2 extends keyof B[K1], K3 extends keyof B[K1][K2]>(k1: K1, k2: K2, k3: K3): MaybeSelector<B, B[K1][K2][K3], Params> |
32 | | - <K1 extends keyof B, K2 extends keyof B[K1], K3 extends keyof B[K1][K2], K4 extends keyof B[K1][K2][K3]>(k1: K1, k2: K2, k3: K3): MaybeSelector<B, B[K1][K2][K3][K4], Params> |
| 17 | + <K1 extends keyof B, K2 extends keyof B[K1], K3 extends keyof B[K1][K2], K4 extends keyof B[K1][K2][K3]>(k1: K1, k2: K2, k3: K3, k4: K4) |
| 18 | + : Composable.ComposeResult<A, B[K1][K2][K3][K4], Params, D, Dimensionality.Single, S, Structure.Select> |
33 | 19 | } |
34 | 20 |
|
35 | 21 | export namespace Prop { |
|
0 commit comments