1 | // Type definitions for redux-beacon
|
2 | // Project: https://github.com/rangle/redux-beacon
|
3 |
|
4 | interface Action {
|
5 | type: any;
|
6 | }
|
7 |
|
8 | /**
|
9 | * Used by Redux Beacon to generate an event or series of
|
10 | * events for a given Redux action. An event definition receives the
|
11 | * associated action object and the state of the application (before
|
12 | * and after the action).
|
13 | */
|
14 | export type EventDefinition = (
|
15 | action: Action,
|
16 | prevState: any,
|
17 | nextState: any
|
18 | ) => any | Array<any>;
|
19 |
|
20 | /**
|
21 | * A map between your actions and your analytics events. Each key
|
22 | * must be an action type. Each property must be a valid
|
23 | * EventDefinition.
|
24 | */
|
25 | export interface EventDefinitionsMap {
|
26 | [key: string]: EventDefinition;
|
27 | }
|
28 |
|
29 | export type Extensions = { logger(): void } | { offlineStorage: any };
|
30 | export type Target = (events: any[]) => void;
|
31 |
|
32 | /**
|
33 | * Create Redux middleware that synchronizes actions to analytics events.
|
34 | */
|
35 | export function createMiddleware(
|
36 | eventDefinitions: EventDefinitionsMap,
|
37 | target: Target,
|
38 | extensions?: Extensions
|
39 | ): any;
|
40 |
|
41 | /**
|
42 | * Create a meta reducer that synchronizes actions to analytics events.
|
43 | */
|
44 | export function createMetaReducer(
|
45 | eventDefinitions: EventDefinitionsMap,
|
46 | target: Target,
|
47 | extensions?: Extensions
|
48 | ): any;
|
49 |
|
50 | /**
|
51 | * Create events from an event definition.
|
52 | * Use this function for testing your event definitions.
|
53 | */
|
54 | export function createEvents(
|
55 | eventDefinition: EventDefinition,
|
56 | prevState: any,
|
57 | action: any,
|
58 | nextState: any
|
59 | ): Array<any>;
|