Skip to content

Commit e28e007

Browse files
Convert Prop
1 parent 6f8e3e7 commit e28e007

6 files changed

Lines changed: 21 additions & 35 deletions

File tree

src/Get.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import { MaybeSelector } from './MaybeSelector'
33
import { Selector } from './Selector'
44
import { MaybeConverter } from './MaybeConverter'
55
import { Converter } from './Converter'
6-
import { GetPropOverloads, Prop } from './Prop'
6+
import { PropOverloads, Prop } from './Prop'
77
import { Extension } from './Extension';
88
import { Memoize } from './Memoize';
99
import { Debug } from './Debug';
@@ -45,7 +45,7 @@ export type Get<A, B, Params extends {} = {}> = GetSignature<A, B, Params> & {
4545
choose: ChooseOverloads<Dimensionality.Single, Structure.Get, A, B, Params>
4646
ifDefined: IfDefinedOverloads<Dimensionality.Single, Structure.Get, A, B, Params>
4747
combine: GetCombine<A, B, Params>
48-
prop: GetPropOverloads<A, B, Params>
48+
prop: PropOverloads<Dimensionality.Single, Structure.Get, A, B, Params>
4949
mapParams: <P2 extends {}>(map: (p2: P2) => Params) => Get<A, B, P2>
5050
addParam: <P extends string, V = string>(p: P) => Get<A, B, Params & Property<P, V>>
5151
withParams: <P2 extends Partial<Params>>(params: P2) => Get<A, B, Subtract<Params, P2>>

src/MaybeGet.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import { MaybeSelector } from './MaybeSelector'
33
import { Selector } from './Selector'
44
import { MaybeConverter } from './MaybeConverter'
55
import { Converter } from './Converter'
6-
import { GetPropOverloads, Prop } from './Prop'
6+
import { PropOverloads, Prop } from './Prop'
77
import { Extension } from './Extension';
88
import { Memoize } from './Memoize';
99
import { Debug } from './Debug';
@@ -45,7 +45,7 @@ export type MaybeGet<A, B, Params extends {} = {}> = MaybeGetSignature<A, B, Par
4545
choose: ChooseOverloads<Dimensionality.Maybe, Structure.Get, A, B, Params>
4646
ifDefined: IfDefinedOverloads<Dimensionality.Maybe, Structure.Get, A, B, Params>
4747
combine: MaybeGetCombine<A, B, Params>
48-
prop: GetPropOverloads<A, B, Params>
48+
prop: PropOverloads<Dimensionality.Maybe, Structure.Get, A, B, Params>
4949
mapParams: <P2 extends {}>(map: (p2: P2) => Params) => MaybeGet<A, B, P2>
5050
addParam: <P extends string, V = string>(p: P) => MaybeGet<A, B, Params & Property<P, V>>
5151
withParams: <P2 extends Partial<Params>>(params: P2) => MaybeGet<A, B, Subtract<Params, P2>>

src/MaybeSelector.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import { Composable } from './Composable'
66
import { Selector } from './Selector'
77
import { MaybeConverter } from './MaybeConverter'
88
import { Converter } from './Converter'
9-
import { MaybeSelectorPropOverloads, Prop } from './Prop'
9+
import { PropOverloads, Prop } from './Prop'
1010
import { IndexBy, IndexByOverloads } from './IndexBy'
1111
import { Choose, ChooseOverloads } from './Choose';
1212
import { Extension } from './Extension';
@@ -35,7 +35,7 @@ export interface MaybeSelector<A, B, Params extends {} = {}> {
3535
set: Set<A, B, Params>
3636
modify: Modify<A, B, Params>
3737
compose: MaybeSelectorCompose<A, B, Params>
38-
prop: MaybeSelectorPropOverloads<A, B, Params>
38+
prop: PropOverloads<Dimensionality.Maybe, Structure.Select, A, B, Params>
3939
indexBy: IndexByOverloads<Dimensionality.Maybe, Structure.Select, A, B, Params>
4040
choose: ChooseOverloads<Dimensionality.Maybe, Structure.Select, A, B, Params>
4141
ifDefined: IfDefinedOverloads<Dimensionality.Maybe, Structure.Select, A, B, Params>

src/Prop.ts

Lines changed: 11 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,35 +1,21 @@
11
import { Selector } from './Selector'
2-
import { MaybeSelector } from './MaybeSelector'
32
import { Get } from './Get'
43
import { Set } from './Set'
5-
import { MaybeGet } from './MaybeGet'
4+
import { Composable } from "./Composable"
5+
import { Dimensionality, Structure } from "./Discriminants";
66

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>
1310

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>
2013

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>
2716

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>
3319
}
3420

3521
export namespace Prop {

src/Root.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { IndexBy, IndexByOverloads } from "./IndexBy";
2-
import { SelectorPropOverloads, Prop } from "./Prop";
2+
import { PropOverloads, Prop } from "./Prop";
33
import { MaybeConverter } from "./MaybeConverter";
44
import { Choose } from "./Choose";
55
import { Extension } from "./Extension";
@@ -9,7 +9,7 @@ import { Dimensionality, Structure } from './Discriminants';
99

1010
export interface Root<A> {
1111
indexBy: IndexByOverloads<Dimensionality.Single, Structure.Convert, A, A, {}>
12-
prop: SelectorPropOverloads<A, A>
12+
prop: PropOverloads<Dimensionality.Single, Structure.Convert, A, A, {}>
1313
choose<B extends A>(typeGuard: (a: A) => a is B): MaybeConverter<A, B>
1414
extend: (newExt: Extension) => Root<A>
1515
memoize: () => Root<A>

src/Selector.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import { MaybeSelector } from './MaybeSelector'
55
import { MaybeConverter } from './MaybeConverter'
66
import { Converter } from './Converter'
77
import { Composable } from './Composable'
8-
import { SelectorPropOverloads, Prop } from './Prop'
8+
import { PropOverloads, Prop } from './Prop'
99
import { IndexBy, IndexByOverloads } from './IndexBy';
1010
import { Choose, ChooseOverloads } from './Choose';
1111
import { Extension } from './Extension';
@@ -34,7 +34,7 @@ export interface Selector<A, B, Params extends {} = {}> {
3434
set: Set<A, B, Params>
3535
modify: Modify<A, B, Params>
3636
compose: SelectorCompose<A, B, Params>
37-
prop: SelectorPropOverloads<A, B, Params>
37+
prop: PropOverloads<Dimensionality.Single, Structure.Select, A, B, Params>
3838
indexBy: IndexByOverloads<Dimensionality.Single, Structure.Select, A, B, Params>
3939
choose: ChooseOverloads<Dimensionality.Single, Structure.Select, A, B, Params>
4040
ifDefined: IfDefinedOverloads<Dimensionality.Single, Structure.Select, A, B, Params>

0 commit comments

Comments
 (0)