Skip to content

Commit

Permalink
update flow annotations
Browse files Browse the repository at this point in the history
  • Loading branch information
alxlu committed Jun 18, 2017
1 parent ea9c33c commit 8144736
Showing 1 changed file with 14 additions and 13 deletions.
27 changes: 14 additions & 13 deletions src/helper.js
Original file line number Diff line number Diff line change
@@ -1,33 +1,34 @@
// @flow
import invariant from 'invariant';

export const identity = (payload: any): any => payload;
export const identity = <I>(payload: I): I => payload;
const defaultName = 'payload';

type Action = {
type Action<A> = {|
type: string,
[key: string]: any,
meta?: any,
};
[key: string]: A,
meta?: mixed,
|};

const createAction = (
const createAction = <A, P: Array<*>>(
type: string,
payloadCreator: Function = identity,
{ name = defaultName, meta }: { name: string, meta: Function } = {},
) => {
payloadCreator: null | (...args: P) => A = identity,
{ name = defaultName, meta }: { name: string, meta?: Function } = {},
): ((...args: P) => Action<A>) => {
invariant(
payloadCreator instanceof Function || payloadCreator === null,
'payloadCreator should be a function',
);
return (...args: any) => {
return (...args) => {
const payload = payloadCreator === null ? identity(...args) : payloadCreator(...args);
const action: Action = {
const action: Action<*> = {
type,
[name]: payload,
};

const hasMeta = meta instanceof Function;
if (hasMeta) action.meta = meta(...args);
if (meta instanceof Function) {
action.meta = meta(...args);
}

return action;
};
Expand Down

0 comments on commit 8144736

Please sign in to comment.