UNPKG

2.21 kBTypeScriptView Raw
1import { Schema } from "normalizr";
2import { SagaIterator } from "redux-saga";
3import { Reducer } from "redux";
4
5declare module "@36node/redux-api" {
6 /**
7 * endport result
8 * 20x or 30x result
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}