@recats/cdeebee 2.3.1 → 2.3.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/definition.ts DELETED
@@ -1,250 +0,0 @@
1
- import { Dispatch } from 'redux';
2
-
3
- export enum cdeebeeTypes {
4
- CDEEBEE_REQUESTMANAGER_SHIFT = '@@cdeebee/REQUESTMANAGER_SHIFT',
5
- CDEEBEE_REQUESTMANAGER_SET = '@@cdeebee/REQUESTMANAGER_SET',
6
- CDEEBEE_ERRORHANDLER_SET = '@@cdeebee/ERRORHANDLER_SET',
7
-
8
- CDEEBEE_ENTITY_CHANGE_FIELD = '@@cdeebee/ENTITY_CHANGE_FIELD',
9
- CDEEBEE_ENTITY_UNSAFE_UPDATE_STORE = '@@cdeebee/ENTITY_UNSAFE_UPDATE_STORE',
10
- CDEEBEE_RESET_ENTITY = '@@cdeebee/RESET_ENTITY',
11
- CDEEBEE_SET_ENTITY = '@@cdeebee/SET_ENTITY',
12
- CDEEBEEE_UPDATE = '@@cdeebee/UPDATE',
13
- CDEEBEEE_DROP = '@@cdeebee/DROP',
14
- CDEEBEEE_DROP_PATH = '@@cdeebee/DROP_PATH',
15
-
16
- CDEEBEE_INTERNAL_ERROR = '@@cdeebee/INTERNAL_ERROR',
17
- CDEEBEE_REQUEST_ABORTED = '@@cdeebee/REQUEST_ABORTED',
18
-
19
- CDEEBEEE_DROP_REQUEST_BY_API_URL = '@@cdeebee/DROP_REQUEST_BY_API_URL',
20
- CDEEBEEE_DROP_ERROR_BY_API_URL = '@@cdeebee/DROP_ERROR_BY_API_URL',
21
-
22
- CHANGE_ROUTE = '@@router/LOCATION_CHANGE',
23
- }
24
-
25
- export enum cdeebeeEntityState {
26
- NEW = 'NEW',
27
- EDITING = 'EDITING',
28
- NORMAL = 'NORMAL',
29
- }
30
-
31
- export enum cdeebeeMergeStrategy {
32
- merge = 'merge',
33
- replace = 'replace',
34
- }
35
-
36
- export type IDefaultOption = {
37
- headers?: object;
38
- files?: File[];
39
- fileKey?: string;
40
- bodyKey?: string;
41
- primaryKey?: string;
42
- responseKeyCode?: string;
43
- requestCancel?: boolean;
44
- updateStore?: boolean;
45
- mergeListStrategy?: { [key: string]: cdeebeeMergeStrategy };
46
- normalize?: (t: any) => void;
47
- preUpdate?: (payload: object) => void;
48
- postUpdate?: (payload: object) => void;
49
- preError?: (payload: object) => void;
50
- postError?: (payload: object) => void;
51
- method?: 'POST' | 'GET' | 'PUT' | 'DELETE';
52
- globalErrorHandler?: (
53
- error: object,
54
- request: object,
55
- meta: { requestStartTime: Date, requestEndTime: Date, requestID: string }
56
- )
57
- => (dispatch: Dispatch, getState: () => object)
58
- => void;
59
- };
60
-
61
- export type IResponsePropObject = {
62
- requestID: string;
63
- controller: AbortController;
64
- updateStore: boolean;
65
- data: object;
66
- requestCancel: boolean;
67
- requestApi: string;
68
- response: {
69
- [params: string]: unknown,
70
- };
71
- requestStartTime?: Date;
72
- mergeListStrategy?: { [key: string]: cdeebeeMergeStrategy };
73
- normalize?: (t: any) => void;
74
- preUpdate?: (payload: object) => void;
75
- postUpdate?: (payload: object) => void;
76
- preError?: (payload: object) => void;
77
- postError?: (payload: object) => void;
78
- }
79
-
80
- export interface IRequestOptions extends IDefaultOption {
81
- api: string;
82
- data?: object;
83
- }
84
-
85
- export interface IEntity {
86
- __entity?: { __state: cdeebeeEntityState; };
87
- }
88
-
89
- export type cdeebeeValueList = {
90
- key: (string | number)[];
91
- value: any;
92
- };
93
-
94
- export type cdeebeActiveRequest = {
95
- api: string;
96
- requestCancel: object;
97
- controller: {
98
- abort: () => void;
99
- };
100
- };
101
-
102
- export type EntityID = string | number;
103
-
104
- // tslint:disable-next-line:class-name
105
- export interface cdeebeeIActions {
106
- dropRequestByApiUrl: (api: string) => void;
107
- dropErrorsByApiUrl: (api: string) => void;
108
- dropCdeebeePath: (path: (string | number)[]) => void;
109
-
110
- setKeyValue: (
111
- entityList: string, entityID: EntityID, valueList: cdeebeeValueList[],
112
- ) => void;
113
- unsafe_updateStore: (entityList: string, entityID: EntityID, value: any) => void;
114
-
115
- commitEntity: (entityList: string, entityID: EntityID, entity: object) => void;
116
- resetEntity: (entityList: string, entityID: EntityID) => void;
117
- }
118
-
119
- export type ActionCreator<A> = (...args: any[]) => A;
120
-
121
- export class CdeebeeRequest {
122
- public requestObject: any;
123
-
124
- // @ts-expect-error okok
125
- constructor(
126
- defaultRequest: object,
127
- options: {
128
- fileKey?: string,
129
- bodyKey?: string,
130
- method?: string,
131
- primaryKey?: string,
132
- normalize?: (data: object) => object,
133
- mergeListStrategy?: { [key: string]: cdeebeeMergeStrategy },
134
- responseKeyCode?: string,
135
- header?: object,
136
- },
137
- );
138
-
139
- }
140
-
141
- export interface CDEEBEERequestManager {
142
- readonly type: cdeebeeTypes.CDEEBEE_REQUESTMANAGER_SET;
143
- readonly payload: object;
144
- }
145
-
146
- export interface CDEEBEERequestShift {
147
- readonly type: cdeebeeTypes.CDEEBEE_REQUESTMANAGER_SHIFT;
148
- readonly payload?: any;
149
- }
150
-
151
- export interface CDEEBEEUpdate {
152
- readonly type: cdeebeeTypes.CDEEBEEE_UPDATE;
153
- readonly payload: { api: string, cleanResponse: object };
154
- }
155
-
156
- export interface CDEEBEEErrorSet {
157
- readonly type: cdeebeeTypes.CDEEBEE_ERRORHANDLER_SET;
158
- readonly payload: { api: string, cleanResponse: object };
159
- }
160
-
161
- export interface CDEEBEEChangeRoute {
162
- readonly type?: any;
163
- readonly payload?: any;
164
- }
165
-
166
- export type IRequestAction =
167
- | CDEEBEERequestManager
168
- | CDEEBEERequestShift
169
- | CDEEBEEUpdate
170
- | CDEEBEEErrorSet
171
- | CDEEBEEChangeRoute
172
- ;
173
-
174
- export interface IRequestState {
175
- activeRequest: cdeebeActiveRequest[];
176
- requestByApiUrl: object;
177
- errorHandler: object;
178
- }
179
-
180
- export interface CDEEBEEUpadte {
181
- readonly type: cdeebeeTypes.CDEEBEEE_UPDATE;
182
- readonly payload: {
183
- response: object;
184
- };
185
- }
186
-
187
- export interface CDEEBEEChangeField {
188
- readonly type: cdeebeeTypes.CDEEBEE_ENTITY_CHANGE_FIELD;
189
- readonly payload: {
190
- valueList: cdeebeeValueList[],
191
- entityList: string,
192
- entityID: number | string,
193
- };
194
- }
195
-
196
- export interface CDEEBEESetEntity {
197
- readonly type: cdeebeeTypes.CDEEBEE_SET_ENTITY;
198
- readonly payload: {
199
- entityList: string,
200
- entityID: number | string,
201
- entity: any,
202
- };
203
- }
204
-
205
- export interface CDEEBEEUnsafeUpdateStore {
206
- readonly type: cdeebeeTypes.CDEEBEE_ENTITY_UNSAFE_UPDATE_STORE;
207
- readonly payload: {
208
- entityList: string,
209
- entityID: number | string,
210
- value: any;
211
- };
212
- }
213
-
214
- export interface CDEEBEEResetEntity {
215
- readonly type: cdeebeeTypes.CDEEBEE_RESET_ENTITY;
216
- readonly payload: {
217
- entityList: string,
218
- entityID: number | string,
219
- };
220
- }
221
-
222
- export interface CDEEBEEDrop {
223
- readonly type: cdeebeeTypes.CDEEBEEE_DROP;
224
- readonly payload?: any;
225
- }
226
-
227
- export interface CDEEBEEDropPath {
228
- readonly type: cdeebeeTypes.CDEEBEEE_DROP_PATH;
229
- readonly payload: { path: (string | number)[] };
230
- }
231
-
232
- export type ICdeebee =
233
- | CDEEBEEUpadte
234
- | CDEEBEEChangeField
235
- | CDEEBEESetEntity
236
- | CDEEBEEResetEntity
237
- | CDEEBEEDrop
238
- | CDEEBEEDropPath
239
- | CDEEBEEUnsafeUpdateStore
240
- ;
241
-
242
- export interface IDefaultNormalize {
243
- response: {
244
- responseStatus: string,
245
- [params: string]: any,
246
- };
247
- cdeebee: object;
248
- primaryKey: string;
249
- mergeListStrategy: { [key: string]: cdeebeeMergeStrategy };
250
- }
package/lib/helpers.ts DELETED
@@ -1,138 +0,0 @@
1
- /* tslint:disable max-line-length */
2
- import { assocPath, mergeDeepRight, omit } from 'ramda';
3
- import {
4
- cdeebeActiveRequest,
5
- cdeebeeEntityState,
6
- cdeebeeMergeStrategy,
7
- cdeebeeValueList,
8
- IDefaultNormalize,
9
- IEntity
10
- } from './definition';
11
-
12
- const omitKeys = <T>(entity: T): T & any => omit<T, any>(['__entity', '__state'], entity);
13
-
14
- export const dropRequestFromArray = (activeRequest: cdeebeActiveRequest[]): cdeebeActiveRequest[] => (
15
- activeRequest.filter(q => {
16
- if (q.requestCancel) {
17
- requestCancel(q);
18
- return false;
19
- }
20
- return true;
21
- })
22
- );
23
-
24
- export const requestCancel = (request: cdeebeActiveRequest): void => {
25
- if (request.controller && request.controller.abort instanceof Function) {
26
- request.controller.abort();
27
- }
28
- };
29
-
30
- export const checkNetworkActivity = (activeRequest: cdeebeActiveRequest[], apiUrl: string | string[]): boolean => {
31
- if (!apiUrl || activeRequest.length === 0) {
32
- return false;
33
- }
34
-
35
- const apiUrlList = apiUrl instanceof Array ? apiUrl : [apiUrl];
36
- const activeLinks: any = activeRequest.map(q => q.api);
37
- for (let i = 0; i < apiUrlList.length; i += 1) {
38
- if (activeLinks.includes(apiUrlList[i])) {
39
- return true;
40
- }
41
- }
42
-
43
- return false;
44
- };
45
-
46
- export const getSubEntity = <T>(entity: T & IEntity): { __state: cdeebeeEntityState } | (T & IEntity) => Object.prototype.hasOwnProperty.call(entity, '__entity') ? entity.__entity! : entity;
47
-
48
- export const getEntityState = <T>(entity: T & IEntity): cdeebeeEntityState => {
49
- // @ts-expect-error okok
50
- const entityState = entity?.__entity?.__state || entity?.__state;
51
- if (!entityState) {
52
- return cdeebeeEntityState.NORMAL;
53
- }
54
- return entityState;
55
- };
56
-
57
- export const insertEntity = (entity: { __state: string }) => {
58
- entity.__state = cdeebeeEntityState.NEW;
59
- return entity;
60
- };
61
-
62
- export const commitEntity = <T>(entity: T & IEntity): T => {
63
- const state = getEntityState(entity);
64
- if (state === cdeebeeEntityState.NORMAL) {
65
- // tslint:disable-next-line
66
- console.warn('commit works only in editing and new states');
67
- return entity;
68
- }
69
- return omitKeys<T>(entity);
70
- };
71
-
72
- export const resetEntity = <T>(entity: T & IEntity): T => {
73
- const state = getEntityState(entity);
74
- if (state === cdeebeeEntityState.NORMAL) {
75
- // tslint:disable-next-line
76
- console.warn('reset works only in editing and new states');
77
- return entity;
78
- }
79
- return omitKeys<T>(entity);
80
- };
81
-
82
- export const editEntity = (store: IEntity & { [key: string]: any }, list: string, id: number | string) => {
83
- const arrayList = store[list];
84
- const state = getEntityState(arrayList[id]);
85
-
86
- if (state === cdeebeeEntityState.EDITING) {
87
- return store;
88
- }
89
-
90
- const newReturnStore = assocPath([list, id, '__entity'], arrayList[id], store);
91
- return assocPath([list, id, '__entity', '__state'], cdeebeeEntityState.EDITING, newReturnStore);
92
- };
93
-
94
- export const batchingUpdate = (
95
- state: object,
96
- valueList: cdeebeeValueList[],
97
- prePath?: (string | number)[],
98
- ) => {
99
- const prePathEnity = prePath ? prePath : [];
100
-
101
- let returnState: object = state;
102
-
103
- for (let i = 0; i < valueList.length; i++) {
104
- const arr = valueList[i];
105
- returnState = assocPath([...prePathEnity, ...arr.key], arr.value, returnState);
106
- }
107
-
108
- return returnState;
109
- };
110
-
111
- export const defaultNormalize: (d: IDefaultNormalize) => object = (
112
- {
113
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
114
- response: { responseStatus, ...response },
115
- cdeebee, mergeListStrategy, primaryKey,
116
- },
117
- ) => {
118
- const keys = Object.keys(response);
119
- for (const key of keys) {
120
- const newStorageData: any = {};
121
- if (response[key] instanceof Object && Object.prototype.hasOwnProperty.call(response[key], primaryKey)) {
122
- for (const element of response[key].data) {
123
- newStorageData[element[response[key][primaryKey]]] = element;
124
- }
125
-
126
- if (mergeListStrategy[key] === cdeebeeMergeStrategy.replace) {
127
- response[key] = newStorageData;
128
- } else {
129
- // @ts-expect-error okok
130
- response[key] = mergeDeepRight(cdeebee[key], newStorageData);
131
- }
132
- } else if (response[key] === null || response[key] === undefined || typeof response[key] === 'string') {
133
- response = omit([key], response);
134
- }
135
- }
136
-
137
- return response;
138
- };
package/lib/index.ts DELETED
@@ -1,26 +0,0 @@
1
- import { cdeebee, requestManager } from './reducer';
2
- import CdeebeeRequest from './request';
3
- import * as cdeebeeHelpers from './helpers';
4
- import {
5
- cdeebeeTypes,
6
- cdeebeeMergeStrategy,
7
- cdeebeeEntityState,
8
- type cdeebeeValueList,
9
- type cdeebeActiveRequest,
10
- type cdeebeeIActions,
11
- } from './definition';
12
- import * as cdeebeeActions from './actions';
13
-
14
- export {
15
- cdeebeeValueList,
16
- cdeebee,
17
- cdeebeeHelpers,
18
- requestManager,
19
- CdeebeeRequest,
20
- cdeebeeTypes,
21
- cdeebeeEntityState,
22
- cdeebeeMergeStrategy,
23
- cdeebeeActions,
24
- cdeebeActiveRequest,
25
- cdeebeeIActions,
26
- };
package/lib/reducer.ts DELETED
@@ -1,93 +0,0 @@
1
- import {
2
- slice, assocPath, omit, dissoc,
3
- } from 'ramda';
4
-
5
- import { cdeebeeTypes } from './index';
6
-
7
- import {
8
- batchingUpdate, dropRequestFromArray, editEntity, resetEntity,
9
- } from './helpers';
10
-
11
- import { ICdeebee, IRequestAction, IRequestState, cdeebeActiveRequest } from './definition';
12
-
13
- export const INITIAL_STORAGE: any = {};
14
-
15
- export const cdeebee = (state: any = INITIAL_STORAGE, action: ICdeebee) => {
16
- const { type, payload } = action;
17
-
18
- switch (type) {
19
- case cdeebeeTypes.CDEEBEEE_UPDATE:
20
- return { ...state, ...payload.response };
21
- case cdeebeeTypes.CDEEBEE_ENTITY_CHANGE_FIELD: {
22
- const objCreate = editEntity(state, payload.entityList, payload.entityID);
23
- return batchingUpdate(objCreate, payload.valueList, [payload.entityList, payload.entityID, '__entity']);
24
- }
25
- case cdeebeeTypes.CDEEBEE_ENTITY_UNSAFE_UPDATE_STORE:
26
- return assocPath([payload.entityList, payload.entityID], payload.value, state);
27
- case cdeebeeTypes.CDEEBEE_SET_ENTITY:
28
- return assocPath([payload.entityList, payload.entityID], payload.entity, state);
29
- case cdeebeeTypes.CDEEBEE_RESET_ENTITY: {
30
- const entityList = state[payload.entityList];
31
- return assocPath(
32
- [payload.entityList, payload.entityID],
33
- resetEntity(entityList[payload.entityID]),
34
- state,
35
- );
36
- }
37
- case cdeebeeTypes.CDEEBEEE_DROP:
38
- return INITIAL_STORAGE;
39
- case cdeebeeTypes.CDEEBEEE_DROP_PATH:
40
- return omit(payload.path as string[], state);
41
- default:
42
- return state;
43
- }
44
- };
45
-
46
- const INITIAL_REQUEST: IRequestState = {
47
- activeRequest: [],
48
- requestByApiUrl: {},
49
- errorHandler: {},
50
- };
51
-
52
- export const requestManager = (state: IRequestState = INITIAL_REQUEST, action: IRequestAction) => {
53
- const { type, payload } = action;
54
- switch (type) {
55
- case cdeebeeTypes.CDEEBEE_REQUESTMANAGER_SET:
56
- return { ...state, activeRequest: [...state.activeRequest, payload] };
57
- case cdeebeeTypes.CDEEBEE_REQUESTMANAGER_SHIFT:
58
- return { ...state, activeRequest: slice(1, Infinity, state.activeRequest) };
59
- case cdeebeeTypes.CDEEBEEE_UPDATE:
60
- return {
61
- ...state,
62
- requestByApiUrl: {
63
- ...state.requestByApiUrl,
64
- [payload.api]: payload.cleanResponse,
65
- },
66
- };
67
- case cdeebeeTypes.CDEEBEEE_DROP_REQUEST_BY_API_URL:
68
- return {
69
- ...state,
70
- requestByApiUrl: dissoc<any, any>(payload.api, state.requestByApiUrl),
71
- };
72
- case cdeebeeTypes.CDEEBEEE_DROP_ERROR_BY_API_URL:
73
- return {
74
- ...state,
75
- errorHandler: dissoc<any, any>(payload.api, state.errorHandler),
76
- };
77
- case cdeebeeTypes.CDEEBEE_ERRORHANDLER_SET:
78
- return {
79
- ...state,
80
- errorHandler: {
81
- ...state.errorHandler,
82
- [payload.api]: payload.cleanResponse,
83
- },
84
- };
85
- case cdeebeeTypes.CDEEBEE_INTERNAL_ERROR:
86
- return { ...state, activeRequest: [], requestByApiUrl: {} };
87
-
88
- case cdeebeeTypes.CHANGE_ROUTE:
89
- return { ...INITIAL_REQUEST, activeRequest: dropRequestFromArray((state.activeRequest as cdeebeActiveRequest[])) };
90
- default:
91
- return state;
92
- }
93
- };
package/lib/request.ts DELETED
@@ -1,200 +0,0 @@
1
- import 'abortcontroller-polyfill/dist/abortcontroller-polyfill-only';
2
- // @ts-expect-error okok
3
- import { fetch as fetchPolyfill } from 'whatwg-fetch';
4
- import { Dispatch } from 'redux';
5
-
6
- import { mergeDeepRight } from 'ramda';
7
-
8
- import { defaultNormalize } from './helpers';
9
-
10
- import { cdeebeeTypes, IDefaultOption, IRequestOptions, IResponsePropObject } from './definition';
11
-
12
- let responsePosition: Record<string, IResponsePropObject> = {};
13
-
14
- const abortableFetch = typeof window !== 'undefined' ? (('signal' in new Request('')) ? window.fetch : fetchPolyfill) : fetch;
15
-
16
- // tslint:disable-next-line
17
- export default class requestManager {
18
- public requestObject: object;
19
- private options: IDefaultOption;
20
-
21
- constructor(requestObject: object, options: IDefaultOption) {
22
- this.requestObject = requestObject;
23
- this.options = {
24
- fileKey: 'files',
25
- bodyKey: 'body',
26
- method: 'POST',
27
- primaryKey: 'primaryKey',
28
- normalize: defaultNormalize,
29
- responseKeyCode: 'responseStatus',
30
- headers: { 'content-type': 'application/json' },
31
- ...options,
32
- };
33
- }
34
-
35
- public send = (rq: IRequestOptions) => async (dispatch: Dispatch, getState: () => any) => {
36
- const {
37
- api,
38
- preUpdate,
39
- postUpdate,
40
- preError,
41
- postError,
42
- data,
43
- files,
44
- requestCancel = true,
45
- updateStore = true,
46
- fileKey = this.options.fileKey,
47
- primaryKey = this.options.primaryKey,
48
- bodyKey = this.options.bodyKey,
49
- method = this.options.method,
50
- normalize = this.options.normalize,
51
- mergeListStrategy = this.options.mergeListStrategy,
52
- headers = this.options.headers,
53
- responseKeyCode = this.options.responseKeyCode,
54
- } = mergeDeepRight(this.requestObject, rq);
55
-
56
- const requestID = Math.random().toString(36).substr(2);
57
- const requestStartTime = new Date();
58
-
59
- try {
60
- let body: any = JSON.stringify({ ...data, requestID });
61
-
62
- const controller = new AbortController();
63
- const { signal } = controller;
64
-
65
- dispatch({
66
- type: cdeebeeTypes.CDEEBEE_REQUESTMANAGER_SET,
67
- payload: { requestID, api, controller, data, requestCancel, requestStartTime, requestEndTime: undefined },
68
- });
69
-
70
- if (files) {
71
- const formData = new FormData();
72
- for (let i = 0; i < files.length; i += 1) {
73
- if (fileKey) {
74
- formData.append(fileKey, files[i]);
75
- }
76
- }
77
-
78
- if (bodyKey) {
79
- formData.append(bodyKey, body);
80
- }
81
- body = formData;
82
- }
83
-
84
- const responseData = await (await abortableFetch(api, {
85
- method,
86
- signal,
87
- headers: { 'ui-request-id': requestID, ...headers },
88
- body,
89
- })).json();
90
-
91
- if (responseData) {
92
- responsePosition = Object.assign(
93
- {
94
- [requestID]: {
95
- requestID,
96
- response: responseData,
97
- requestApi: api,
98
- requestStartTime,
99
- preUpdate,
100
- postUpdate,
101
- normalize,
102
- preError,
103
- postError,
104
- mergeListStrategy,
105
- updateStore,
106
- data,
107
- requestCancel,
108
- controller,
109
- } as IResponsePropObject,
110
- } as Record<string, IResponsePropObject>,
111
- responsePosition,
112
- );
113
-
114
- while (responsePosition[getState().requestManager.activeRequest?.[0]?.requestID]) {
115
- const processID = getState().requestManager.activeRequest[0].requestID;
116
- const responsePropsObject: IResponsePropObject = responsePosition[processID];
117
-
118
- if (responseKeyCode && responsePropsObject.response[responseKeyCode] === 0) {
119
- if (responsePropsObject.preUpdate) {
120
- responsePropsObject.preUpdate(responsePropsObject.response);
121
- }
122
-
123
- if (responsePropsObject.updateStore) {
124
- dispatch({
125
- type: cdeebeeTypes.CDEEBEEE_UPDATE,
126
- payload: {
127
- response: responsePropsObject.normalize instanceof Function && responsePropsObject.normalize({
128
- response: responsePropsObject.response,
129
- cdeebee: getState().cdeebee,
130
- mergeListStrategy: responsePropsObject.mergeListStrategy,
131
- primaryKey,
132
- }),
133
- cleanResponse: responsePropsObject.response,
134
- api: responsePropsObject.requestApi,
135
- mergeListStrategy: responsePropsObject.mergeListStrategy,
136
- }
137
- });
138
- }
139
-
140
- if (responsePropsObject.postUpdate) {
141
- responsePropsObject.postUpdate(responsePropsObject.response);
142
- }
143
- } else {
144
- if (responsePropsObject.preError) {
145
- responsePropsObject.preError(responsePropsObject.response);
146
- }
147
-
148
- dispatch({
149
- type: cdeebeeTypes.CDEEBEE_ERRORHANDLER_SET,
150
- payload: { api: responsePropsObject.requestApi, cleanResponse: responsePropsObject.response },
151
- });
152
-
153
- if (responsePropsObject.postError) {
154
- responsePropsObject.postError(responseData);
155
- }
156
- }
157
-
158
- dispatch({
159
- type: cdeebeeTypes.CDEEBEE_REQUESTMANAGER_SHIFT,
160
- payload: {
161
- requestID: responsePropsObject.requestID,
162
- api: responsePropsObject.requestApi,
163
- controller: responsePropsObject.controller,
164
- data: responsePropsObject.data,
165
- requestCancel: responsePropsObject.requestCancel,
166
- requestStartTime: responsePropsObject.requestStartTime,
167
- requestEndTime: new Date(),
168
- }
169
- });
170
-
171
- delete responsePosition[processID];
172
- }
173
- }
174
- } catch (error: any) {
175
- if (error.name === 'AbortError') {
176
- dispatch({ type: cdeebeeTypes.CDEEBEE_REQUEST_ABORTED, payload: { requestID, api } });
177
- } else {
178
- const requestEndTime = new Date();
179
- dispatch({
180
- type: cdeebeeTypes.CDEEBEE_INTERNAL_ERROR,
181
- payload: { requestStartTime, requestEndTime, requestID, api },
182
- });
183
- // tslint:disable-next-line
184
- console.warn('@@makeRequest-error', error);
185
- // tslint:disable-next-line
186
- console.warn('@@makeRequest-object', mergeDeepRight(this.requestObject, rq));
187
- // tslint:disable-next-line
188
- console.warn('@@makeRequest-info', { requestStartTime, requestEndTime, requestID });
189
-
190
- if (Object.prototype.hasOwnProperty.call(this.options, 'globalErrorHandler') && this.options.globalErrorHandler instanceof Function) {
191
- this.options.globalErrorHandler(
192
- error,
193
- mergeDeepRight(this.requestObject, rq),
194
- { requestStartTime, requestEndTime, requestID }
195
- )(dispatch, getState);
196
- }
197
- }
198
- }
199
- };
200
- }