1 | import { Schema } from "normalizr";
|
2 | import { SagaIterator } from "redux-saga";
|
3 | import { Reducer } from "redux";
|
4 |
|
5 | declare module "@36node/redux-api" {
|
6 | |
7 |
|
8 |
|
9 |
|
10 | interface EpResult {
|
11 | body?: object | string;
|
12 | headers?: object;
|
13 | }
|
14 |
|
15 | interface Meta {
|
16 | append?: Boolean;
|
17 | }
|
18 |
|
19 | interface Action {
|
20 | type: string;
|
21 | payload?: object;
|
22 | key: string;
|
23 | meta: Meta;
|
24 | }
|
25 |
|
26 | interface ApiReducers {
|
27 | apis: Reducer;
|
28 | entities: Reducer;
|
29 | }
|
30 |
|
31 | interface ApiCreateOpts<T> {
|
32 | endpoint: Endpoint<T>;
|
33 | schema?: Schema;
|
34 | reduxPath?: String;
|
35 | }
|
36 |
|
37 | interface ApiState {
|
38 | result: object | [object];
|
39 | total: number;
|
40 | loading: boolean;
|
41 | meta: object;
|
42 | }
|
43 |
|
44 | interface Hooks {
|
45 | beforeRequest?: (key: String, action: Action, api: Api) => Boolean;
|
46 | afterRequest?: (key: String, action: Action, api: Api) => void;
|
47 | }
|
48 |
|
49 | interface ApiActions<T> {
|
50 | request: (payload: T, meta: Object) => Action;
|
51 | clear: (meta: Object) => Action;
|
52 | refresh: (meta: Object) => Action;
|
53 | }
|
54 |
|
55 | export type Selector = (state: Object) => ApiState;
|
56 | export type Endpoint<T> = (payload: T) => Promise<EpResult>;
|
57 |
|
58 | export const apiReducers: ApiReducers;
|
59 |
|
60 | export function apiReducer(state: Object, action: Action): void;
|
61 |
|
62 | export function entitiesReducer(state: Object, action: Action): void;
|
63 |
|
64 | export function* watchApis(): void;
|
65 |
|
66 | export function registerHooks(hooks: Hooks): void;
|
67 |
|
68 | export function createApiActions<T>(
|
69 | key: String,
|
70 | opts: ApiCreateOpts<T>
|
71 | ): ApiActions<T>;
|
72 |
|
73 | export function createApiSelector(key: String, schema?: Schema): Selector;
|
74 | export function apiSelector(key: String, schema?: Schema): Selector;
|
75 |
|
76 | export function isApi(action: Action): Boolean;
|
77 | export function isSuccess(action: Action): Boolean;
|
78 | export function isFailure(action: Action): Boolean;
|
79 | export function isClear(action: Action): Boolean;
|
80 | export function isRefresh(action: Action): Boolean;
|
81 |
|
82 | export function successOf(key: String): String;
|
83 | export function failureOf(key: String): String;
|
84 | export function requestOf(key: String): String;
|
85 | export function clearOf(key: String): String;
|
86 | export function refreshOf(key: String): String;
|
87 | }
|