@finema/core 3.18.0 → 3.20.0
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/dist/module.json +1 -1
- package/dist/module.mjs +1 -1
- package/dist/runtime/helpers/apiBaseHelper.d.ts +10 -0
- package/dist/runtime/helpers/apiBaseHelper.js +41 -0
- package/dist/runtime/helpers/apiListHelper.js +9 -11
- package/dist/runtime/helpers/apiObjectHelper.js +9 -11
- package/dist/runtime/helpers/apiPageHelper.js +44 -55
- package/package.json +1 -1
package/dist/module.json
CHANGED
package/dist/module.mjs
CHANGED
|
@@ -13,9 +13,18 @@ export interface IRequestContext {
|
|
|
13
13
|
data?: any;
|
|
14
14
|
options: AxiosRequestConfig;
|
|
15
15
|
}
|
|
16
|
+
type StateRequestOptions = Partial<AxiosRequestConfig>;
|
|
16
17
|
export declare const checkExpiration: (timestamp: number | undefined, expire?: number) => boolean;
|
|
17
18
|
export declare const bindParamsToUrl: (urlTemplate: string, urlParams?: Record<string, any>) => string;
|
|
18
19
|
export declare const prepareRequestOptions: (baseOptions?: AxiosRequestConfig, requestOptions?: AxiosRequestConfig, params?: Record<string, any>, signal?: AbortSignal) => AxiosRequestConfig;
|
|
20
|
+
export declare const toSerializableRequestOptions: (options: AxiosRequestConfig) => StateRequestOptions;
|
|
21
|
+
export declare const prepareLoaderRequestOptions: (baseOptions?: AxiosRequestConfig, requestOptions?: AxiosRequestConfig, params?: Record<string, any>, signal?: AbortSignal) => {
|
|
22
|
+
requestOptions: AxiosRequestConfig<any>;
|
|
23
|
+
stateRequestOptions: Partial<AxiosRequestConfig<any>>;
|
|
24
|
+
};
|
|
25
|
+
export declare const createSuccessOptions: (status: number | undefined, request: StateRequestOptions) => IAPIOptions;
|
|
26
|
+
export declare const createErrorOptions: (error: any, request: StateRequestOptions) => IAPIOptions;
|
|
27
|
+
export declare const toSerializableLoaderOptions: <T extends Record<string, any>>(opts: T) => Partial<T>;
|
|
19
28
|
export declare const handleApiRequest: <T>(requestContext: IRequestContext, mockData: T | T[] | null, callbacks: {
|
|
20
29
|
onSuccess: (data: T, status?: number) => void;
|
|
21
30
|
onError: (error: any) => void;
|
|
@@ -28,3 +37,4 @@ export declare const updateLoaderState: {
|
|
|
28
37
|
setComplete: (status: IStatus) => IStatus;
|
|
29
38
|
setOptions: (options: IAPIOptions, updates: Partial<IAPIOptions>) => IAPIOptions;
|
|
30
39
|
};
|
|
40
|
+
export {};
|
|
@@ -22,6 +22,47 @@ export const prepareRequestOptions = (baseOptions, requestOptions, params, signa
|
|
|
22
22
|
});
|
|
23
23
|
return options;
|
|
24
24
|
};
|
|
25
|
+
export const toSerializableRequestOptions = (options) => {
|
|
26
|
+
const {
|
|
27
|
+
adapter: _adapter,
|
|
28
|
+
cancelToken: _cancelToken,
|
|
29
|
+
paramsSerializer: _paramsSerializer,
|
|
30
|
+
signal: _signal,
|
|
31
|
+
transformRequest: _transformRequest,
|
|
32
|
+
transformResponse: _transformResponse,
|
|
33
|
+
validateStatus: _validateStatus,
|
|
34
|
+
...serializableOptions
|
|
35
|
+
} = options;
|
|
36
|
+
return JSON.parse(JSON.stringify(serializableOptions));
|
|
37
|
+
};
|
|
38
|
+
export const prepareLoaderRequestOptions = (baseOptions, requestOptions, params, signal) => {
|
|
39
|
+
const options = prepareRequestOptions(baseOptions, requestOptions, params, signal);
|
|
40
|
+
return {
|
|
41
|
+
requestOptions: options,
|
|
42
|
+
stateRequestOptions: toSerializableRequestOptions(options)
|
|
43
|
+
};
|
|
44
|
+
};
|
|
45
|
+
export const createSuccessOptions = (status, request) => ({
|
|
46
|
+
_timestamp: Date.now(),
|
|
47
|
+
_status: status,
|
|
48
|
+
request
|
|
49
|
+
});
|
|
50
|
+
export const createErrorOptions = (error, request) => ({
|
|
51
|
+
_status: error.response?.status,
|
|
52
|
+
request
|
|
53
|
+
});
|
|
54
|
+
export const toSerializableLoaderOptions = (opts) => {
|
|
55
|
+
const {
|
|
56
|
+
request,
|
|
57
|
+
signal: _signal,
|
|
58
|
+
...rest
|
|
59
|
+
} = opts;
|
|
60
|
+
const serializableOptions = JSON.parse(JSON.stringify(rest));
|
|
61
|
+
if (request) {
|
|
62
|
+
serializableOptions.request = toSerializableRequestOptions(request);
|
|
63
|
+
}
|
|
64
|
+
return serializableOptions;
|
|
65
|
+
};
|
|
25
66
|
const createAbortError = () => ({
|
|
26
67
|
code: "ERR_CANCELED",
|
|
27
68
|
name: "AbortError",
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import { bindParamsToUrl } from "./apiBaseHelper.js";
|
|
2
2
|
import {
|
|
3
3
|
checkExpiration,
|
|
4
|
-
|
|
4
|
+
createErrorOptions,
|
|
5
|
+
createSuccessOptions,
|
|
5
6
|
handleApiRequest,
|
|
7
|
+
prepareLoaderRequestOptions,
|
|
6
8
|
updateLoaderState
|
|
7
9
|
} from "./apiBaseHelper.js";
|
|
8
10
|
export const apiListHelper = async (state, onUpdateStatus, onUpdateOptions, onUpdateItems, opts) => {
|
|
@@ -12,7 +14,10 @@ export const apiListHelper = async (state, onUpdateStatus, onUpdateOptions, onUp
|
|
|
12
14
|
}
|
|
13
15
|
onUpdateStatus(updateLoaderState.setLoading(state().status));
|
|
14
16
|
onUpdateOptions({});
|
|
15
|
-
const
|
|
17
|
+
const {
|
|
18
|
+
requestOptions,
|
|
19
|
+
stateRequestOptions
|
|
20
|
+
} = prepareLoaderRequestOptions(
|
|
16
21
|
{},
|
|
17
22
|
opts.getRequestOptions?.(opts),
|
|
18
23
|
opts.params,
|
|
@@ -30,18 +35,11 @@ export const apiListHelper = async (state, onUpdateStatus, onUpdateOptions, onUp
|
|
|
30
35
|
onSuccess: (items, status) => {
|
|
31
36
|
onUpdateItems(items);
|
|
32
37
|
onUpdateStatus(updateLoaderState.setSuccess(state().status));
|
|
33
|
-
onUpdateOptions(
|
|
34
|
-
_timestamp: Date.now(),
|
|
35
|
-
_status: status,
|
|
36
|
-
request: requestOptions
|
|
37
|
-
});
|
|
38
|
+
onUpdateOptions(createSuccessOptions(status, stateRequestOptions));
|
|
38
39
|
},
|
|
39
40
|
onError: (error) => {
|
|
40
41
|
onUpdateStatus(updateLoaderState.setError(state().status, error));
|
|
41
|
-
onUpdateOptions(
|
|
42
|
-
_status: error.response?.status,
|
|
43
|
-
request: requestOptions
|
|
44
|
-
});
|
|
42
|
+
onUpdateOptions(createErrorOptions(error, stateRequestOptions));
|
|
45
43
|
},
|
|
46
44
|
onComplete: () => {
|
|
47
45
|
onUpdateStatus(updateLoaderState.setComplete(state().status));
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import { bindParamsToUrl } from "./apiBaseHelper.js";
|
|
2
2
|
import {
|
|
3
3
|
checkExpiration,
|
|
4
|
+
createErrorOptions,
|
|
5
|
+
createSuccessOptions,
|
|
4
6
|
handleApiRequest,
|
|
5
|
-
|
|
7
|
+
prepareLoaderRequestOptions,
|
|
6
8
|
updateLoaderState
|
|
7
9
|
} from "./apiBaseHelper.js";
|
|
8
10
|
export const apiObjectHelper = async (state, onUpdateStatus, onUpdateOptions, onUpdateData, payload, opts) => {
|
|
@@ -12,7 +14,10 @@ export const apiObjectHelper = async (state, onUpdateStatus, onUpdateOptions, on
|
|
|
12
14
|
}
|
|
13
15
|
onUpdateStatus(updateLoaderState.setLoading(state().status));
|
|
14
16
|
onUpdateOptions({});
|
|
15
|
-
const
|
|
17
|
+
const {
|
|
18
|
+
requestOptions,
|
|
19
|
+
stateRequestOptions
|
|
20
|
+
} = prepareLoaderRequestOptions(
|
|
16
21
|
{},
|
|
17
22
|
opts.getRequestOptions?.(payload, opts),
|
|
18
23
|
opts.params,
|
|
@@ -31,18 +36,11 @@ export const apiObjectHelper = async (state, onUpdateStatus, onUpdateOptions, on
|
|
|
31
36
|
onSuccess: (item, status) => {
|
|
32
37
|
onUpdateData(item);
|
|
33
38
|
onUpdateStatus(updateLoaderState.setSuccess(state().status));
|
|
34
|
-
onUpdateOptions(
|
|
35
|
-
request: requestOptions,
|
|
36
|
-
_timestamp: Date.now(),
|
|
37
|
-
_status: status
|
|
38
|
-
});
|
|
39
|
+
onUpdateOptions(createSuccessOptions(status, stateRequestOptions));
|
|
39
40
|
},
|
|
40
41
|
onError: (error) => {
|
|
41
42
|
onUpdateStatus(updateLoaderState.setError(state().status, error));
|
|
42
|
-
onUpdateOptions(
|
|
43
|
-
request: requestOptions,
|
|
44
|
-
_status: error.response?.status
|
|
45
|
-
});
|
|
43
|
+
onUpdateOptions(createErrorOptions(error, stateRequestOptions));
|
|
46
44
|
},
|
|
47
45
|
onComplete: () => {
|
|
48
46
|
onUpdateStatus(updateLoaderState.setComplete(state().status));
|
|
@@ -3,15 +3,21 @@ import { _get } from "../utils/lodash.js";
|
|
|
3
3
|
import { bindParamsToUrl } from "./apiBaseHelper.js";
|
|
4
4
|
import {
|
|
5
5
|
checkExpiration,
|
|
6
|
+
createErrorOptions,
|
|
7
|
+
createSuccessOptions,
|
|
6
8
|
handleApiRequest,
|
|
7
|
-
|
|
9
|
+
prepareLoaderRequestOptions,
|
|
10
|
+
toSerializableLoaderOptions,
|
|
8
11
|
updateLoaderState
|
|
9
12
|
} from "./apiBaseHelper.js";
|
|
10
13
|
import { _findIndex, _shuffle } from "#imports";
|
|
11
14
|
export const apiAddHelper = async (state, onUpdateStatus, onUpdateOptions, onUpdateData, onUpdateItems, data, opts) => {
|
|
12
15
|
onUpdateStatus(updateLoaderState.setLoading(state().status));
|
|
13
16
|
onUpdateOptions({});
|
|
14
|
-
const
|
|
17
|
+
const {
|
|
18
|
+
requestOptions,
|
|
19
|
+
stateRequestOptions
|
|
20
|
+
} = prepareLoaderRequestOptions(
|
|
15
21
|
opts.getBaseRequestOptions?.() || {},
|
|
16
22
|
opts.add?.getRequestOptions?.(data, opts),
|
|
17
23
|
opts.params,
|
|
@@ -30,18 +36,11 @@ export const apiAddHelper = async (state, onUpdateStatus, onUpdateOptions, onUpd
|
|
|
30
36
|
onSuccess: (item, status) => {
|
|
31
37
|
onUpdateData(item);
|
|
32
38
|
onUpdateStatus(updateLoaderState.setSuccess(state().status));
|
|
33
|
-
onUpdateOptions(
|
|
34
|
-
_timestamp: Date.now(),
|
|
35
|
-
_status: status,
|
|
36
|
-
request: requestOptions
|
|
37
|
-
});
|
|
39
|
+
onUpdateOptions(createSuccessOptions(status, stateRequestOptions));
|
|
38
40
|
},
|
|
39
41
|
onError: (error) => {
|
|
40
42
|
onUpdateStatus(updateLoaderState.setError(state().status, error));
|
|
41
|
-
onUpdateOptions(
|
|
42
|
-
_status: error.response?.status,
|
|
43
|
-
request: requestOptions
|
|
44
|
-
});
|
|
43
|
+
onUpdateOptions(createErrorOptions(error, stateRequestOptions));
|
|
45
44
|
},
|
|
46
45
|
onComplete: () => {
|
|
47
46
|
onUpdateStatus(updateLoaderState.setComplete(state().status));
|
|
@@ -54,7 +53,10 @@ export const apiDeleteHelper = async (state, onUpdateStatus, onUpdateOptions, _o
|
|
|
54
53
|
const getPrimaryKey = (item) => _get(item, primaryKey, "");
|
|
55
54
|
onUpdateStatus(updateLoaderState.setLoading(state().status));
|
|
56
55
|
onUpdateOptions({});
|
|
57
|
-
const
|
|
56
|
+
const {
|
|
57
|
+
requestOptions,
|
|
58
|
+
stateRequestOptions
|
|
59
|
+
} = prepareLoaderRequestOptions(
|
|
58
60
|
opts.getBaseRequestOptions?.() || {},
|
|
59
61
|
opts.delete?.getRequestOptions?.(id, opts),
|
|
60
62
|
opts.params,
|
|
@@ -77,18 +79,11 @@ export const apiDeleteHelper = async (state, onUpdateStatus, onUpdateOptions, _o
|
|
|
77
79
|
);
|
|
78
80
|
}
|
|
79
81
|
onUpdateStatus(updateLoaderState.setSuccess(state().status));
|
|
80
|
-
onUpdateOptions(
|
|
81
|
-
_timestamp: Date.now(),
|
|
82
|
-
_status: status,
|
|
83
|
-
request: requestOptions
|
|
84
|
-
});
|
|
82
|
+
onUpdateOptions(createSuccessOptions(status, stateRequestOptions));
|
|
85
83
|
},
|
|
86
84
|
onError: (error) => {
|
|
87
85
|
onUpdateStatus(updateLoaderState.setError(state().status, error));
|
|
88
|
-
onUpdateOptions(
|
|
89
|
-
_status: error.response?.status,
|
|
90
|
-
request: requestOptions
|
|
91
|
-
});
|
|
86
|
+
onUpdateOptions(createErrorOptions(error, stateRequestOptions));
|
|
92
87
|
},
|
|
93
88
|
onComplete: () => {
|
|
94
89
|
onUpdateStatus(updateLoaderState.setComplete(state().status));
|
|
@@ -102,10 +97,12 @@ export const apiFetchHelper = async (state, onUpdateStatus, onUpdateOptions, onU
|
|
|
102
97
|
onUpdateStatus(updateLoaderState.setComplete(state().status));
|
|
103
98
|
return;
|
|
104
99
|
}
|
|
100
|
+
const loaderStateOptions = toSerializableLoaderOptions(opts);
|
|
101
|
+
const currentStateOptions = toSerializableLoaderOptions(state().options);
|
|
105
102
|
onUpdateStatus(updateLoaderState.setLoading(state().status));
|
|
106
103
|
onUpdateOptions({
|
|
107
|
-
...
|
|
108
|
-
...
|
|
104
|
+
...currentStateOptions,
|
|
105
|
+
...loaderStateOptions,
|
|
109
106
|
currentPage: page,
|
|
110
107
|
search: query,
|
|
111
108
|
primary: opts.primary ?? "id",
|
|
@@ -119,7 +116,7 @@ export const apiFetchHelper = async (state, onUpdateStatus, onUpdateOptions, onU
|
|
|
119
116
|
...more
|
|
120
117
|
} = data;
|
|
121
118
|
return {
|
|
122
|
-
...state().options,
|
|
119
|
+
...toSerializableLoaderOptions(state().options),
|
|
123
120
|
...more,
|
|
124
121
|
currentPageCount: state().items?.length || 0,
|
|
125
122
|
currentPage: page2,
|
|
@@ -134,7 +131,10 @@ export const apiFetchHelper = async (state, onUpdateStatus, onUpdateOptions, onU
|
|
|
134
131
|
...opts.fetch?.getRequestOptions?.(page, query, opts) || {}
|
|
135
132
|
};
|
|
136
133
|
const limit = Number(state().options.limit || baseRequestOptions.params?.limit || config.limit_per_page);
|
|
137
|
-
const
|
|
134
|
+
const {
|
|
135
|
+
requestOptions,
|
|
136
|
+
stateRequestOptions
|
|
137
|
+
} = prepareLoaderRequestOptions(
|
|
138
138
|
baseRequestOptions,
|
|
139
139
|
{
|
|
140
140
|
params: {
|
|
@@ -165,21 +165,18 @@ export const apiFetchHelper = async (state, onUpdateStatus, onUpdateOptions, onU
|
|
|
165
165
|
...moreOptions
|
|
166
166
|
} = response;
|
|
167
167
|
onUpdateItems(items);
|
|
168
|
-
onUpdateOptions(
|
|
168
|
+
onUpdateOptions({
|
|
169
169
|
...getOptions(moreOptions),
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
request: requestOptions
|
|
173
|
-
})));
|
|
170
|
+
...createSuccessOptions(status, stateRequestOptions)
|
|
171
|
+
});
|
|
174
172
|
onUpdateStatus(updateLoaderState.setSuccess(state().status));
|
|
175
173
|
},
|
|
176
174
|
onError: (error) => {
|
|
177
175
|
onUpdateStatus(updateLoaderState.setError(state().status, error));
|
|
178
|
-
onUpdateOptions(
|
|
179
|
-
...state().options,
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
})));
|
|
176
|
+
onUpdateOptions({
|
|
177
|
+
...toSerializableLoaderOptions(state().options),
|
|
178
|
+
...createErrorOptions(error, stateRequestOptions)
|
|
179
|
+
});
|
|
183
180
|
},
|
|
184
181
|
onComplete: () => {
|
|
185
182
|
onUpdateStatus(updateLoaderState.setComplete(state().status));
|
|
@@ -194,7 +191,10 @@ export const apiFindHelper = async (state, onUpdateStatus, onUpdateOptions, onUp
|
|
|
194
191
|
}
|
|
195
192
|
onUpdateStatus(updateLoaderState.setLoading(state().status));
|
|
196
193
|
onUpdateOptions({});
|
|
197
|
-
const
|
|
194
|
+
const {
|
|
195
|
+
requestOptions,
|
|
196
|
+
stateRequestOptions
|
|
197
|
+
} = prepareLoaderRequestOptions(
|
|
198
198
|
opts.getBaseRequestOptions?.() || {},
|
|
199
199
|
opts.find?.getRequestOptions?.(id, opts),
|
|
200
200
|
opts.params,
|
|
@@ -212,18 +212,11 @@ export const apiFindHelper = async (state, onUpdateStatus, onUpdateOptions, onUp
|
|
|
212
212
|
onSuccess: (item, status) => {
|
|
213
213
|
onUpdateData(item);
|
|
214
214
|
onUpdateStatus(updateLoaderState.setSuccess(state().status));
|
|
215
|
-
onUpdateOptions(
|
|
216
|
-
_timestamp: Date.now(),
|
|
217
|
-
_status: status,
|
|
218
|
-
request: requestOptions
|
|
219
|
-
});
|
|
215
|
+
onUpdateOptions(createSuccessOptions(status, stateRequestOptions));
|
|
220
216
|
},
|
|
221
217
|
onError: (error) => {
|
|
222
218
|
onUpdateStatus(updateLoaderState.setError(state().status, error));
|
|
223
|
-
onUpdateOptions(
|
|
224
|
-
_status: error.response?.status,
|
|
225
|
-
request: requestOptions
|
|
226
|
-
});
|
|
219
|
+
onUpdateOptions(createErrorOptions(error, stateRequestOptions));
|
|
227
220
|
},
|
|
228
221
|
onComplete: () => {
|
|
229
222
|
onUpdateStatus(updateLoaderState.setComplete(state().status));
|
|
@@ -238,7 +231,10 @@ export const updateHelper = async (state, onUpdateStatus, onUpdateOptions, onUpd
|
|
|
238
231
|
}
|
|
239
232
|
onUpdateStatus(updateLoaderState.setLoading(state().status));
|
|
240
233
|
onUpdateOptions({});
|
|
241
|
-
const
|
|
234
|
+
const {
|
|
235
|
+
requestOptions,
|
|
236
|
+
stateRequestOptions
|
|
237
|
+
} = prepareLoaderRequestOptions(
|
|
242
238
|
opts.getBaseRequestOptions?.() || {},
|
|
243
239
|
opts.update?.getRequestOptions?.(id, data, opts),
|
|
244
240
|
opts.params,
|
|
@@ -270,18 +266,11 @@ export const updateHelper = async (state, onUpdateStatus, onUpdateOptions, onUpd
|
|
|
270
266
|
}
|
|
271
267
|
}
|
|
272
268
|
onUpdateStatus(updateLoaderState.setSuccess(state().status));
|
|
273
|
-
onUpdateOptions(
|
|
274
|
-
_timestamp: Date.now(),
|
|
275
|
-
_status: status,
|
|
276
|
-
request: requestOptions
|
|
277
|
-
});
|
|
269
|
+
onUpdateOptions(createSuccessOptions(status, stateRequestOptions));
|
|
278
270
|
},
|
|
279
271
|
onError: (error) => {
|
|
280
272
|
onUpdateStatus(updateLoaderState.setError(state().status, error));
|
|
281
|
-
onUpdateOptions(
|
|
282
|
-
_status: error.response?.status,
|
|
283
|
-
request: requestOptions
|
|
284
|
-
});
|
|
273
|
+
onUpdateOptions(createErrorOptions(error, stateRequestOptions));
|
|
285
274
|
},
|
|
286
275
|
onComplete: () => {
|
|
287
276
|
onUpdateStatus(updateLoaderState.setComplete(state().status));
|