UNPKG

1.47 kBTypeScriptView Raw
1// Type definitions for redux-beacon
2// Project: https://github.com/rangle/redux-beacon
3
4interface 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 */
14export 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 */
25export interface EventDefinitionsMap {
26 [key: string]: EventDefinition;
27}
28
29export type Extensions = { logger(): void } | { offlineStorage: any };
30export type Target = (events: any[]) => void;
31
32/**
33 * Create Redux middleware that synchronizes actions to analytics events.
34 */
35export 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 */
44export 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 */
54export function createEvents(
55 eventDefinition: EventDefinition,
56 prevState: any,
57 action: any,
58 nextState: any
59): Array<any>;