Skip to content

Commit d501cbe

Browse files
committed
ofActionPayload helper is provided
1 parent de4e071 commit d501cbe

File tree

6 files changed

+224
-110
lines changed

6 files changed

+224
-110
lines changed

README.md

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ import { combineReducers } from 'redux';
2828

2929
//for epics
3030
import { delay, map, tap, ignoreElements } from 'rxjs/operators';
31-
import { ofAction } from 'typescript-fsa-redux-observable'; // <-- here
31+
import { ofAction, ofActionPayload } from 'typescript-fsa-redux-observable'; // <-- here
3232
import { combineEpics, Epic, createEpicMiddleware } from 'redux-observable';
3333

3434
//reducer
@@ -59,21 +59,21 @@ const rootReducer = combineReducers({
5959
const counterIncrementEpic: Epic<AnyAction, Action<Success<undefined, undefined>>, State> =
6060
action$ =>
6161
action$.pipe(
62-
ofAction(actions.increment.started),
62+
ofActionPayload(actions.increment.started),
6363
delay(300),
64-
map(action => actions.increment.done({
65-
params: action.payload,
64+
map(payload => actions.increment.done({
65+
params: payload,
6666
result: undefined
6767
}))
6868
);
6969

7070
const counterDecrementEpic: Epic<AnyAction, Action<Success<undefined, undefined>>, State> =
7171
action$ =>
7272
action$.pipe(
73-
ofAction(actions.decrement.started),
73+
ofActionPayload(actions.decrement.started),
7474
delay(300),
75-
map(action => actions.decrement.done({
76-
params: action.payload,
75+
map(payload => actions.decrement.done({
76+
params: payload,
7777
result: undefined
7878
}))
7979
);

package-lock.json

Lines changed: 30 additions & 11 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/index.ts

Lines changed: 2 additions & 85 deletions
Original file line numberDiff line numberDiff line change
@@ -1,85 +1,2 @@
1-
import {ActionCreator, Action, AnyAction} from 'typescript-fsa';
2-
3-
import {Observable, OperatorFunction} from 'rxjs';
4-
import {filter} from 'rxjs/operators';
5-
6-
export function ofAction<A>(
7-
ac1: ActionCreator<A>,
8-
): OperatorFunction<AnyAction, Action<A>>
9-
10-
export function ofAction<A, B>(
11-
ac1: ActionCreator<A>,
12-
ac2: ActionCreator<B>,
13-
): OperatorFunction<AnyAction, Action<A | B>>
14-
15-
export function ofAction<A, B, C>(
16-
ac1: ActionCreator<A>,
17-
ac2: ActionCreator<B>,
18-
ac3: ActionCreator<C>,
19-
): OperatorFunction<AnyAction, Action<A | B | C>>
20-
21-
export function ofAction<A, B, C, D>(
22-
ac1: ActionCreator<A>,
23-
ac2: ActionCreator<B>,
24-
ac3: ActionCreator<C>,
25-
ac4: ActionCreator<D>,
26-
): OperatorFunction<AnyAction, Action<A | B | C | D>>
27-
28-
export function ofAction<A, B, C, D, E>(
29-
ac1: ActionCreator<A>,
30-
ac2: ActionCreator<B>,
31-
ac3: ActionCreator<C>,
32-
ac4: ActionCreator<D>,
33-
ac5: ActionCreator<E>,
34-
): OperatorFunction<AnyAction, Action<A | B | C | D | E>>
35-
36-
export function ofAction<A, B, C, D, E, F>(
37-
ac1: ActionCreator<A>,
38-
ac2: ActionCreator<B>,
39-
ac3: ActionCreator<C>,
40-
ac4: ActionCreator<D>,
41-
ac5: ActionCreator<E>,
42-
ac6: ActionCreator<F>,
43-
): OperatorFunction<AnyAction, Action<A | B | C | D | E | F>>
44-
45-
export function ofAction<A, B, C, D, E, F, G>(
46-
ac1: ActionCreator<A>,
47-
ac2: ActionCreator<B>,
48-
ac3: ActionCreator<C>,
49-
ac4: ActionCreator<D>,
50-
ac5: ActionCreator<E>,
51-
ac6: ActionCreator<F>,
52-
ac7: ActionCreator<G>,
53-
): OperatorFunction<AnyAction, Action<A | B | C | D | E | F | G>>
54-
55-
export function ofAction<A, B, C, D, E, F, G, H>(
56-
ac1: ActionCreator<A>,
57-
ac2: ActionCreator<B>,
58-
ac3: ActionCreator<C>,
59-
ac4: ActionCreator<D>,
60-
ac5: ActionCreator<E>,
61-
ac6: ActionCreator<F>,
62-
ac7: ActionCreator<G>,
63-
ac8: ActionCreator<H>,
64-
): OperatorFunction<AnyAction, Action<A | B | C | D | E | F | G | H>>
65-
66-
export function ofAction<A, B, C, D, E, F, G, H, I>(
67-
ac1: ActionCreator<A>,
68-
ac2: ActionCreator<B>,
69-
ac3: ActionCreator<C>,
70-
ac4: ActionCreator<D>,
71-
ac5: ActionCreator<E>,
72-
ac6: ActionCreator<F>,
73-
ac7: ActionCreator<G>,
74-
ac8: ActionCreator<H>,
75-
ac9: ActionCreator<I>,
76-
): OperatorFunction<AnyAction, Action<A | B | C | D | E | F | G | H | I>>
77-
78-
export function ofAction(...actionCreators: ActionCreator<any>[]) {
79-
return (actions$: Observable<AnyAction>) =>
80-
actions$.pipe(
81-
filter(
82-
action => actionCreators.some(actionCreator => actionCreator.match(action))
83-
)
84-
)
85-
}
1+
export {ofAction} from './ofAction';
2+
export {ofActionPayload} from './ofActionPayload';

src/ofAction.ts

Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,89 @@
1+
import {ActionCreator, Action, AnyAction} from 'typescript-fsa';
2+
3+
import {Observable, OperatorFunction} from 'rxjs';
4+
import {filter} from 'rxjs/operators';
5+
6+
export function ofAction<A>(
7+
ac1: ActionCreator<A>,
8+
): OperatorFunction<AnyAction, Action<A>>
9+
10+
export function ofAction<A, B>(
11+
ac1: ActionCreator<A>,
12+
ac2: ActionCreator<B>,
13+
): OperatorFunction<AnyAction, Action<A | B>>
14+
15+
export function ofAction<A, B, C>(
16+
ac1: ActionCreator<A>,
17+
ac2: ActionCreator<B>,
18+
ac3: ActionCreator<C>,
19+
): OperatorFunction<AnyAction, Action<A | B | C>>
20+
21+
export function ofAction<A, B, C, D>(
22+
ac1: ActionCreator<A>,
23+
ac2: ActionCreator<B>,
24+
ac3: ActionCreator<C>,
25+
ac4: ActionCreator<D>,
26+
): OperatorFunction<AnyAction, Action<A | B | C | D>>
27+
28+
export function ofAction<A, B, C, D, E>(
29+
ac1: ActionCreator<A>,
30+
ac2: ActionCreator<B>,
31+
ac3: ActionCreator<C>,
32+
ac4: ActionCreator<D>,
33+
ac5: ActionCreator<E>,
34+
): OperatorFunction<AnyAction, Action<A | B | C | D | E>>
35+
36+
export function ofAction<A, B, C, D, E, F>(
37+
ac1: ActionCreator<A>,
38+
ac2: ActionCreator<B>,
39+
ac3: ActionCreator<C>,
40+
ac4: ActionCreator<D>,
41+
ac5: ActionCreator<E>,
42+
ac6: ActionCreator<F>,
43+
): OperatorFunction<AnyAction, Action<A | B | C | D | E | F>>
44+
45+
export function ofAction<A, B, C, D, E, F, G>(
46+
ac1: ActionCreator<A>,
47+
ac2: ActionCreator<B>,
48+
ac3: ActionCreator<C>,
49+
ac4: ActionCreator<D>,
50+
ac5: ActionCreator<E>,
51+
ac6: ActionCreator<F>,
52+
ac7: ActionCreator<G>,
53+
): OperatorFunction<AnyAction, Action<A | B | C | D | E | F | G>>
54+
55+
export function ofAction<A, B, C, D, E, F, G, H>(
56+
ac1: ActionCreator<A>,
57+
ac2: ActionCreator<B>,
58+
ac3: ActionCreator<C>,
59+
ac4: ActionCreator<D>,
60+
ac5: ActionCreator<E>,
61+
ac6: ActionCreator<F>,
62+
ac7: ActionCreator<G>,
63+
ac8: ActionCreator<H>,
64+
): OperatorFunction<AnyAction, Action<A | B | C | D | E | F | G | H>>
65+
66+
export function ofAction<A, B, C, D, E, F, G, H, I>(
67+
ac1: ActionCreator<A>,
68+
ac2: ActionCreator<B>,
69+
ac3: ActionCreator<C>,
70+
ac4: ActionCreator<D>,
71+
ac5: ActionCreator<E>,
72+
ac6: ActionCreator<F>,
73+
ac7: ActionCreator<G>,
74+
ac8: ActionCreator<H>,
75+
ac9: ActionCreator<I>,
76+
): OperatorFunction<AnyAction, Action<A | B | C | D | E | F | G | H | I>>
77+
78+
export function ofAction<P>(
79+
...acs: ActionCreator<P>[]
80+
): OperatorFunction<AnyAction, Action<P>>
81+
82+
export function ofAction(...actionCreators: ActionCreator<any>[]) {
83+
return (actions$: Observable<AnyAction>) =>
84+
actions$.pipe(
85+
filter(
86+
action => actionCreators.some(actionCreator => actionCreator.match(action))
87+
)
88+
)
89+
}

0 commit comments

Comments
 (0)