@flowlist/js-core 3.0.10 → 3.0.11
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/README.md +221 -38
- package/dist/index.d.mts +129 -107
- package/dist/index.d.ts +129 -107
- package/dist/index.global.js +69 -72
- package/dist/index.global.js.map +1 -1
- package/dist/index.js +69 -72
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +69 -72
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -3,183 +3,205 @@
|
|
|
3
3
|
*/
|
|
4
4
|
type ObjectKey = string | number;
|
|
5
5
|
/**
|
|
6
|
-
*
|
|
7
|
-
* 但在实际对象中,number 键会被转为 string。
|
|
8
|
-
* 此处使用 string 以符合 Record 的实际行为 [[3]])
|
|
6
|
+
* 通用键值对映射 - 使用 Record 以保持灵活性和性能
|
|
9
7
|
*/
|
|
10
8
|
type KeyMap = Record<string, unknown>;
|
|
11
9
|
/**
|
|
12
|
-
*
|
|
10
|
+
* 数组元素类型
|
|
13
11
|
*/
|
|
14
|
-
type
|
|
12
|
+
type ResultArrayType = KeyMap[];
|
|
15
13
|
/**
|
|
16
|
-
*
|
|
14
|
+
* 对象结果类型:键为字符串,值为 KeyMap 数组
|
|
17
15
|
*/
|
|
18
|
-
type
|
|
16
|
+
type ResultObjectType = Record<string, KeyMap[]>;
|
|
19
17
|
/**
|
|
20
|
-
*
|
|
18
|
+
* 结果类型:可以是数组或对象
|
|
21
19
|
*/
|
|
22
|
-
type
|
|
20
|
+
type ResultType = ResultArrayType | ResultObjectType;
|
|
23
21
|
/**
|
|
24
|
-
*
|
|
22
|
+
* API 函数类型
|
|
25
23
|
*/
|
|
26
|
-
type
|
|
24
|
+
type ApiFunction = (_params: KeyMap) => Promise<ApiResponse>;
|
|
27
25
|
/**
|
|
28
|
-
*
|
|
26
|
+
* 数据源类型:可以是 API 路径字符串,或返回 Promise 的函数
|
|
29
27
|
*/
|
|
30
|
-
type
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
28
|
+
type DataSource = string | ApiFunction;
|
|
29
|
+
interface DefaultField {
|
|
30
|
+
result: ResultType;
|
|
31
|
+
noMore: boolean;
|
|
32
|
+
nothing: boolean;
|
|
33
|
+
loading: boolean;
|
|
34
|
+
error: Error | null;
|
|
35
|
+
extra: KeyMap | null;
|
|
36
|
+
fetched: boolean;
|
|
37
|
+
page: number;
|
|
38
|
+
total: number;
|
|
39
|
+
}
|
|
40
|
+
type FieldKeys = keyof DefaultField;
|
|
35
41
|
/**
|
|
36
|
-
*
|
|
42
|
+
* 字段获取器:根据字段名获取状态对象
|
|
37
43
|
*/
|
|
38
|
-
type
|
|
44
|
+
type FieldGetter = (_key: string) => DefaultField | undefined;
|
|
39
45
|
/**
|
|
40
|
-
*
|
|
46
|
+
* Setter 函数的参数
|
|
41
47
|
*/
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
uniqueKey?: string;
|
|
48
|
-
callback?: FetchResultCallback;
|
|
48
|
+
interface SetterFuncParams {
|
|
49
|
+
readonly key: string;
|
|
50
|
+
readonly type: number;
|
|
51
|
+
readonly value: Partial<DefaultField> | DefaultField;
|
|
52
|
+
readonly callback?: (_obj?: KeyMap) => void;
|
|
49
53
|
}
|
|
50
54
|
/**
|
|
51
|
-
*
|
|
55
|
+
* 状态设置器函数类型
|
|
52
56
|
*/
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
}
|
|
57
|
+
type FieldSetter = (_obj: SetterFuncParams) => void;
|
|
58
|
+
/**
|
|
59
|
+
* 数据获取类型枚举
|
|
60
|
+
*/
|
|
61
|
+
type FetchType = 'jump' | 'sinceId' | 'page' | 'seenIds' | 'auto';
|
|
59
62
|
/**
|
|
60
63
|
* 生成请求参数的输出
|
|
61
64
|
*/
|
|
62
|
-
interface GenerateParamsResp {
|
|
65
|
+
interface GenerateParamsResp extends KeyMap {
|
|
63
66
|
seen_ids?: string;
|
|
64
67
|
since_id?: ObjectKey;
|
|
65
68
|
is_up?: 0 | 1;
|
|
66
69
|
page?: number;
|
|
67
70
|
}
|
|
68
71
|
/**
|
|
69
|
-
*
|
|
72
|
+
* 生成请求参数的输入
|
|
70
73
|
*/
|
|
71
|
-
interface
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
74
|
+
interface GenerateParamsType {
|
|
75
|
+
readonly field: DefaultField;
|
|
76
|
+
readonly uniqueKey?: string;
|
|
77
|
+
readonly query?: KeyMap;
|
|
78
|
+
readonly type: FetchType;
|
|
76
79
|
}
|
|
77
80
|
/**
|
|
78
|
-
*
|
|
81
|
+
* API 响应结构
|
|
79
82
|
*/
|
|
80
|
-
interface
|
|
81
|
-
result: ResultType;
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
error: null | Error;
|
|
86
|
-
extra: unknown;
|
|
87
|
-
fetched: boolean;
|
|
88
|
-
page: number;
|
|
89
|
-
total: number;
|
|
83
|
+
interface ApiResponse {
|
|
84
|
+
readonly result: ResultType;
|
|
85
|
+
readonly extra?: KeyMap;
|
|
86
|
+
readonly total?: number;
|
|
87
|
+
readonly no_more?: boolean;
|
|
90
88
|
}
|
|
91
89
|
/**
|
|
92
|
-
*
|
|
90
|
+
* 获取数据后的回调函数
|
|
93
91
|
*/
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
92
|
+
type FetchResultCallback = (_obj: {
|
|
93
|
+
params: KeyMap;
|
|
94
|
+
data: ApiResponse;
|
|
95
|
+
refresh: boolean;
|
|
96
|
+
}) => void;
|
|
97
|
+
interface CommonParams {
|
|
98
|
+
readonly func: DataSource;
|
|
99
|
+
readonly type: FetchType;
|
|
100
|
+
readonly query?: KeyMap;
|
|
101
|
+
readonly uniqueKey?: string;
|
|
102
|
+
readonly callback?: FetchResultCallback;
|
|
99
103
|
}
|
|
100
104
|
interface BaseFetchConfig extends CommonParams {
|
|
101
|
-
getter: FieldGetter;
|
|
102
|
-
setter: FieldSetter;
|
|
103
|
-
api?:
|
|
105
|
+
readonly getter: FieldGetter;
|
|
106
|
+
readonly setter: FieldSetter;
|
|
107
|
+
readonly api?: Record<string, ApiFunction>;
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* 初始化状态的参数对外接口
|
|
111
|
+
*/
|
|
112
|
+
interface InitStateParams {
|
|
113
|
+
readonly func: DataSource;
|
|
114
|
+
readonly type: FetchType;
|
|
115
|
+
readonly query?: KeyMap;
|
|
116
|
+
readonly opts?: Partial<DefaultField>;
|
|
104
117
|
}
|
|
105
118
|
/**
|
|
106
|
-
*
|
|
119
|
+
* 初始化状态的参数(内部)
|
|
107
120
|
*/
|
|
108
121
|
interface InitStateType extends InitStateParams {
|
|
109
|
-
getter: FieldGetter;
|
|
110
|
-
setter: FieldSetter;
|
|
122
|
+
readonly getter: FieldGetter;
|
|
123
|
+
readonly setter: FieldSetter;
|
|
111
124
|
}
|
|
112
125
|
/**
|
|
113
|
-
*
|
|
126
|
+
* 初始化数据的参数对外接口
|
|
127
|
+
*/
|
|
128
|
+
type InitDataParams = CommonParams;
|
|
129
|
+
/**
|
|
130
|
+
* 初始化数据的参数(内部)
|
|
114
131
|
*/
|
|
115
132
|
type InitDataType = BaseFetchConfig;
|
|
116
133
|
/**
|
|
117
|
-
*
|
|
134
|
+
* 加载更多的参数对外接口
|
|
135
|
+
*/
|
|
136
|
+
interface LoadMoreParams extends CommonParams {
|
|
137
|
+
readonly errorRetry?: boolean;
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* 加载更多的参数(内部)
|
|
118
141
|
*/
|
|
119
142
|
interface LoadMoreType extends BaseFetchConfig {
|
|
120
|
-
errorRetry?: boolean;
|
|
143
|
+
readonly errorRetry?: boolean;
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* 更新状态的参数(内部使用)
|
|
147
|
+
*/
|
|
148
|
+
interface UpdateStateType<T = KeyMap> {
|
|
149
|
+
readonly getter: FieldGetter;
|
|
150
|
+
readonly setter: FieldSetter;
|
|
151
|
+
readonly func: DataSource;
|
|
152
|
+
readonly type: FetchType;
|
|
153
|
+
readonly query?: KeyMap;
|
|
154
|
+
readonly method: string;
|
|
155
|
+
readonly value: T | ResultArrayType | ResultObjectType | KeyMap;
|
|
156
|
+
readonly id?: ObjectKey | ObjectKey[];
|
|
157
|
+
readonly changeKey?: string;
|
|
158
|
+
readonly uniqueKey?: string;
|
|
121
159
|
}
|
|
122
160
|
/**
|
|
123
|
-
*
|
|
161
|
+
* 更新状态的参数(对外接口)
|
|
124
162
|
*/
|
|
125
|
-
interface
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
changeKey?: string;
|
|
135
|
-
uniqueKey?: string;
|
|
163
|
+
interface UpdateStateParams<T = KeyMap> {
|
|
164
|
+
readonly func: DataSource;
|
|
165
|
+
readonly type: FetchType;
|
|
166
|
+
readonly query?: KeyMap;
|
|
167
|
+
readonly method: string;
|
|
168
|
+
readonly value: T | ResultArrayType | ResultObjectType | KeyMap;
|
|
169
|
+
readonly id?: ObjectKey | ObjectKey[];
|
|
170
|
+
readonly changeKey?: string;
|
|
171
|
+
readonly uniqueKey?: string;
|
|
136
172
|
}
|
|
137
173
|
/**
|
|
138
174
|
* 设置数据的参数
|
|
139
175
|
*/
|
|
140
176
|
interface SetDataType {
|
|
141
|
-
getter: FieldGetter;
|
|
142
|
-
setter: FieldSetter;
|
|
143
|
-
data: ApiResponse;
|
|
144
|
-
fieldName: string;
|
|
145
|
-
type: FetchType;
|
|
146
|
-
page: number;
|
|
147
|
-
insertBefore: boolean;
|
|
177
|
+
readonly getter: FieldGetter;
|
|
178
|
+
readonly setter: FieldSetter;
|
|
179
|
+
readonly data: ApiResponse;
|
|
180
|
+
readonly fieldName: string;
|
|
181
|
+
readonly type: FetchType;
|
|
182
|
+
readonly page: number;
|
|
183
|
+
readonly insertBefore: boolean;
|
|
148
184
|
}
|
|
149
185
|
/**
|
|
150
186
|
* 设置错误的参数
|
|
151
187
|
*/
|
|
152
188
|
interface SetErrorType {
|
|
153
|
-
setter: FieldSetter;
|
|
154
|
-
fieldName: string;
|
|
155
|
-
error:
|
|
156
|
-
}
|
|
157
|
-
type ResultArrayType$1 = KeyMap[];
|
|
158
|
-
type ResultObjectType$1 = Record<ObjectKey, KeyMap[]>;
|
|
159
|
-
type InitDataParams = CommonParams;
|
|
160
|
-
interface LoadMoreParams extends CommonParams {
|
|
161
|
-
errorRetry?: boolean;
|
|
162
|
-
}
|
|
163
|
-
interface InitStateParams {
|
|
164
|
-
func: DataSource;
|
|
165
|
-
type: FetchType;
|
|
166
|
-
query?: KeyMap;
|
|
167
|
-
opts?: Partial<DefaultField>;
|
|
189
|
+
readonly setter: FieldSetter;
|
|
190
|
+
readonly fieldName: string;
|
|
191
|
+
readonly error: Error | null;
|
|
168
192
|
}
|
|
169
193
|
|
|
170
194
|
declare const initState: ({ getter, setter, func, type, query, opts }: InitStateType) => Promise<void>;
|
|
171
195
|
declare const initData: ({ getter, setter, func, type, query, api, uniqueKey, callback }: InitDataType) => Promise<void>;
|
|
172
196
|
declare const loadMore: ({ getter, setter, query, type, func, api, uniqueKey, errorRetry, callback }: LoadMoreType) => Promise<void>;
|
|
173
|
-
declare const updateState: ({ getter, setter, func, type, query, method, value, id, uniqueKey, changeKey }: UpdateStateType) => Promise<unknown>;
|
|
197
|
+
declare const updateState: <T = KeyMap>({ getter, setter, func, type, query, method, value, id, uniqueKey, changeKey }: UpdateStateType<T>) => Promise<unknown>;
|
|
174
198
|
|
|
175
199
|
declare const isArray: (data: unknown) => data is unknown[];
|
|
176
200
|
declare const isObjectResult: (data: unknown) => data is Record<string, unknown>;
|
|
177
201
|
declare const generateDefaultField: (opts?: Partial<DefaultField>) => DefaultField;
|
|
178
202
|
declare const generateFieldName: ({ func, type, query }: InitDataParams) => string;
|
|
179
|
-
declare const getObjectDeepValue: (field: unknown, keys
|
|
180
|
-
declare const updateObjectDeepValue: (field:
|
|
181
|
-
type ResultArrayType = KeyMap[];
|
|
182
|
-
type ResultObjectType = Record<ObjectKey, KeyMap[]>;
|
|
203
|
+
declare const getObjectDeepValue: (field: unknown, keys: string | string[]) => unknown;
|
|
204
|
+
declare const updateObjectDeepValue: (field: KeyMap, changeKey: string, value: unknown) => void;
|
|
183
205
|
declare const searchValueByKey: (result: ResultArrayType | ResultObjectType, id: ObjectKey, key: string) => unknown;
|
|
184
206
|
declare const computeMatchedItemIndex: (itemId: ObjectKey, fieldArr: ResultArrayType, changingKey: string) => number;
|
|
185
207
|
declare const combineArrayData: (fieldArray: ResultArrayType, value: ResultArrayType | Record<ObjectKey, KeyMap>, changingKey: string) => void;
|
|
@@ -235,4 +257,4 @@ declare const _default: {
|
|
|
235
257
|
readonly DEFAULT_UNIQUE_KEY_NAME: "id";
|
|
236
258
|
};
|
|
237
259
|
|
|
238
|
-
export { type ApiResponse, type DefaultField, _default as ENUM, type FetchType, type FieldGetter, type FieldKeys, type FieldSetter, type GenerateParamsResp, type GenerateParamsType, type InitDataParams, type InitDataType, type InitStateParams, type InitStateType, type KeyMap, type LoadMoreParams, type LoadMoreType, type ObjectKey, type ResultArrayType
|
|
260
|
+
export { type ApiFunction, type ApiResponse, type DataSource, type DefaultField, _default as ENUM, type FetchResultCallback, type FetchType, type FieldGetter, type FieldKeys, type FieldSetter, type GenerateParamsResp, type GenerateParamsType, type InitDataParams, type InitDataType, type InitStateParams, type InitStateType, type KeyMap, type LoadMoreParams, type LoadMoreType, type ObjectKey, type ResultArrayType, type ResultObjectType, type ResultType, type SetDataType, type SetErrorType, type SetterFuncParams, type UpdateStateParams, type UpdateStateType, initData, initState, loadMore, updateState, utils };
|
package/dist/index.global.js
CHANGED
|
@@ -59,9 +59,7 @@ var FlowList = (function (exports) {
|
|
|
59
59
|
};
|
|
60
60
|
|
|
61
61
|
// src/utils.ts
|
|
62
|
-
var isArray = (data) =>
|
|
63
|
-
return Array.isArray(data);
|
|
64
|
-
};
|
|
62
|
+
var isArray = (data) => Array.isArray(data);
|
|
65
63
|
var stableSerialize = (value) => {
|
|
66
64
|
if (value === null || typeof value !== "object") {
|
|
67
65
|
return String(value);
|
|
@@ -72,7 +70,9 @@ var FlowList = (function (exports) {
|
|
|
72
70
|
}
|
|
73
71
|
const keys = Object.keys(value).sort();
|
|
74
72
|
const obj = {};
|
|
75
|
-
|
|
73
|
+
const len = keys.length;
|
|
74
|
+
for (let i = 0; i < len; i++) {
|
|
75
|
+
const k = keys[i];
|
|
76
76
|
obj[k] = value[k];
|
|
77
77
|
}
|
|
78
78
|
return JSON.stringify(obj);
|
|
@@ -82,13 +82,12 @@ var FlowList = (function (exports) {
|
|
|
82
82
|
};
|
|
83
83
|
var extractUniqueKey = (item, uniqueKey) => {
|
|
84
84
|
if (typeof item !== "object" || item === null) return void 0;
|
|
85
|
-
const
|
|
86
|
-
const val = item[changing] ?? void 0;
|
|
85
|
+
const val = item[uniqueKey];
|
|
87
86
|
if (typeof val === "string" || typeof val === "number") {
|
|
88
87
|
return val;
|
|
89
88
|
}
|
|
90
|
-
if (
|
|
91
|
-
const deepVal = getObjectDeepValue(item,
|
|
89
|
+
if (uniqueKey.includes(".")) {
|
|
90
|
+
const deepVal = getObjectDeepValue(item, uniqueKey);
|
|
92
91
|
if (typeof deepVal === "string" || typeof deepVal === "number") {
|
|
93
92
|
return deepVal;
|
|
94
93
|
}
|
|
@@ -102,17 +101,15 @@ var FlowList = (function (exports) {
|
|
|
102
101
|
return !Object.prototype.hasOwnProperty.call(data, "result");
|
|
103
102
|
};
|
|
104
103
|
var generateDefaultField = (opts = {}) => ({
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
total: 0
|
|
115
|
-
},
|
|
104
|
+
result: [],
|
|
105
|
+
noMore: false,
|
|
106
|
+
nothing: false,
|
|
107
|
+
loading: false,
|
|
108
|
+
error: null,
|
|
109
|
+
extra: null,
|
|
110
|
+
fetched: false,
|
|
111
|
+
page: 0,
|
|
112
|
+
total: 0,
|
|
116
113
|
...opts
|
|
117
114
|
});
|
|
118
115
|
var generateFieldName = ({
|
|
@@ -121,20 +118,15 @@ var FlowList = (function (exports) {
|
|
|
121
118
|
query = {}
|
|
122
119
|
}) => {
|
|
123
120
|
const funcName = typeof func === "string" ? func : (typeof func === "function" ? func.name : void 0) || `api-${Math.random().toString(36).substring(2, 8)}`;
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
"is_up",
|
|
130
|
-
"since_id",
|
|
131
|
-
"seen_ids",
|
|
132
|
-
"__refresh__",
|
|
133
|
-
"__reload__"
|
|
134
|
-
].includes(key)
|
|
135
|
-
);
|
|
121
|
+
let result = `${funcName}-${type || "auto"}`;
|
|
122
|
+
const filteredKeys = Object.keys(query).filter((key) => {
|
|
123
|
+
const value = query[key];
|
|
124
|
+
return value !== void 0 && typeof value !== "function" && key !== "page" && key !== "is_up" && key !== "since_id" && key !== "seen_ids" && key !== "__refresh__" && key !== "__reload__";
|
|
125
|
+
});
|
|
136
126
|
filteredKeys.sort();
|
|
137
|
-
const
|
|
127
|
+
const len = filteredKeys.length;
|
|
128
|
+
for (let i = 0; i < len; i++) {
|
|
129
|
+
const key = filteredKeys[i];
|
|
138
130
|
const value = query[key];
|
|
139
131
|
let safeValue;
|
|
140
132
|
if (typeof value === "object" && value !== null) {
|
|
@@ -143,22 +135,22 @@ var FlowList = (function (exports) {
|
|
|
143
135
|
safeValue = String(value);
|
|
144
136
|
}
|
|
145
137
|
const encoded = encodeURIComponent(safeValue);
|
|
146
|
-
|
|
147
|
-
}
|
|
148
|
-
result += querySuffix;
|
|
138
|
+
result += `-${key}-${encoded}`;
|
|
139
|
+
}
|
|
149
140
|
return result;
|
|
150
141
|
};
|
|
151
|
-
var getObjectDeepValue = (field, keys
|
|
142
|
+
var getObjectDeepValue = (field, keys) => {
|
|
152
143
|
if (!keys || Array.isArray(keys) && keys.length === 0) {
|
|
153
144
|
return field;
|
|
154
145
|
}
|
|
155
146
|
const keysArr = Array.isArray(keys) ? keys : keys.split(".");
|
|
156
147
|
let result = field;
|
|
157
|
-
|
|
148
|
+
const len = keysArr.length;
|
|
149
|
+
for (let i = 0; i < len; i++) {
|
|
158
150
|
if (result == null || typeof result !== "object") {
|
|
159
151
|
return void 0;
|
|
160
152
|
}
|
|
161
|
-
result = result[
|
|
153
|
+
result = result[keysArr[i]];
|
|
162
154
|
}
|
|
163
155
|
return result;
|
|
164
156
|
};
|
|
@@ -167,7 +159,9 @@ var FlowList = (function (exports) {
|
|
|
167
159
|
const keys = changeKey.split(".");
|
|
168
160
|
const lastKey = keys.pop();
|
|
169
161
|
let current = field;
|
|
170
|
-
|
|
162
|
+
const len = keys.length;
|
|
163
|
+
for (let i = 0; i < len; i++) {
|
|
164
|
+
const key = keys[i];
|
|
171
165
|
if (current[key] == null || typeof current[key] !== "object") {
|
|
172
166
|
current[key] = {};
|
|
173
167
|
}
|
|
@@ -181,14 +175,12 @@ var FlowList = (function (exports) {
|
|
|
181
175
|
if (isArray(result)) {
|
|
182
176
|
const index = computeMatchedItemIndex(id, result, key);
|
|
183
177
|
return index >= 0 ? result[index] : void 0;
|
|
184
|
-
} else {
|
|
185
|
-
return result[id];
|
|
186
178
|
}
|
|
179
|
+
return result[String(id)];
|
|
187
180
|
};
|
|
188
181
|
var computeMatchedItemIndex = (itemId, fieldArr, changingKey) => {
|
|
189
182
|
const stringifiedItemId = String(itemId);
|
|
190
|
-
const len = fieldArr
|
|
191
|
-
if (typeof len !== "number" || len <= 0) return -1;
|
|
183
|
+
const len = fieldArr.length;
|
|
192
184
|
for (let i = 0; i < len; i++) {
|
|
193
185
|
const item = fieldArr[i];
|
|
194
186
|
if (typeof item !== "object" || item === null) continue;
|
|
@@ -201,7 +193,8 @@ var FlowList = (function (exports) {
|
|
|
201
193
|
};
|
|
202
194
|
var combineArrayData = (fieldArray, value, changingKey) => {
|
|
203
195
|
const fieldArrayMap = /* @__PURE__ */ new Map();
|
|
204
|
-
|
|
196
|
+
const arrLen = fieldArray.length;
|
|
197
|
+
for (let i = 0; i < arrLen; i++) {
|
|
205
198
|
const item = fieldArray[i];
|
|
206
199
|
if (typeof item !== "object" || item === null) continue;
|
|
207
200
|
const id = getObjectDeepValue(item, changingKey);
|
|
@@ -210,20 +203,24 @@ var FlowList = (function (exports) {
|
|
|
210
203
|
}
|
|
211
204
|
}
|
|
212
205
|
if (isArray(value)) {
|
|
213
|
-
|
|
206
|
+
const valLen = value.length;
|
|
207
|
+
for (let i = 0; i < valLen; i++) {
|
|
208
|
+
const col = value[i];
|
|
214
209
|
if (typeof col !== "object" || col === null) continue;
|
|
215
210
|
const stringifyId = String(getObjectDeepValue(col, changingKey));
|
|
216
211
|
const index = fieldArrayMap.get(stringifyId);
|
|
217
|
-
if (index !== void 0
|
|
212
|
+
if (index !== void 0) {
|
|
218
213
|
fieldArray[index] = { ...fieldArray[index], ...col };
|
|
219
214
|
}
|
|
220
215
|
}
|
|
221
216
|
} else {
|
|
222
|
-
|
|
217
|
+
const entries = Object.entries(value);
|
|
218
|
+
const entLen = entries.length;
|
|
219
|
+
for (let i = 0; i < entLen; i++) {
|
|
220
|
+
const [uniqueId, col] = entries[i];
|
|
223
221
|
if (typeof col !== "object" || col === null) continue;
|
|
224
|
-
const
|
|
225
|
-
|
|
226
|
-
if (index !== void 0 && index !== -1) {
|
|
222
|
+
const index = fieldArrayMap.get(uniqueId);
|
|
223
|
+
if (index !== void 0) {
|
|
227
224
|
fieldArray[index] = { ...fieldArray[index], ...col };
|
|
228
225
|
}
|
|
229
226
|
}
|
|
@@ -261,7 +258,10 @@ var FlowList = (function (exports) {
|
|
|
261
258
|
target = {};
|
|
262
259
|
field.result = target;
|
|
263
260
|
}
|
|
264
|
-
Object.keys(valueObj)
|
|
261
|
+
const keys = Object.keys(valueObj);
|
|
262
|
+
const len = keys.length;
|
|
263
|
+
for (let i = 0; i < len; i++) {
|
|
264
|
+
const subKey = keys[i];
|
|
265
265
|
const existing = target[subKey];
|
|
266
266
|
const incoming = valueObj[subKey];
|
|
267
267
|
if (existing !== void 0) {
|
|
@@ -273,7 +273,7 @@ var FlowList = (function (exports) {
|
|
|
273
273
|
} else {
|
|
274
274
|
target[subKey] = incoming;
|
|
275
275
|
}
|
|
276
|
-
}
|
|
276
|
+
}
|
|
277
277
|
};
|
|
278
278
|
var computeResultLength = (data) => {
|
|
279
279
|
if (isArray(data)) {
|
|
@@ -281,9 +281,11 @@ var FlowList = (function (exports) {
|
|
|
281
281
|
}
|
|
282
282
|
if (data && typeof data === "object") {
|
|
283
283
|
let acc = 0;
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
284
|
+
const values = Object.values(data);
|
|
285
|
+
const len = values.length;
|
|
286
|
+
for (let i = 0; i < len; i++) {
|
|
287
|
+
if (isArray(values[i])) {
|
|
288
|
+
acc += values[i].length;
|
|
287
289
|
}
|
|
288
290
|
}
|
|
289
291
|
return acc;
|
|
@@ -293,8 +295,9 @@ var FlowList = (function (exports) {
|
|
|
293
295
|
var getSeenIdsString = (arr, uniqueKey) => {
|
|
294
296
|
if (!isArray(arr)) return "";
|
|
295
297
|
const ids = [];
|
|
296
|
-
|
|
297
|
-
|
|
298
|
+
const len = arr.length;
|
|
299
|
+
for (let i = 0; i < len; i++) {
|
|
300
|
+
const id = extractUniqueKey(arr[i], uniqueKey);
|
|
298
301
|
if (id !== void 0) {
|
|
299
302
|
ids.push(id);
|
|
300
303
|
}
|
|
@@ -303,11 +306,11 @@ var FlowList = (function (exports) {
|
|
|
303
306
|
};
|
|
304
307
|
var generateRequestParams = ({
|
|
305
308
|
field,
|
|
306
|
-
uniqueKey,
|
|
309
|
+
uniqueKey = enum_default.DEFAULT_UNIQUE_KEY_NAME,
|
|
307
310
|
query = {},
|
|
308
311
|
type
|
|
309
312
|
}) => {
|
|
310
|
-
const result = {};
|
|
313
|
+
const result = { ...query };
|
|
311
314
|
const isFetched = field.fetched;
|
|
312
315
|
const getSafeObjectKey = (item) => {
|
|
313
316
|
return extractUniqueKey(item, uniqueKey);
|
|
@@ -355,10 +358,7 @@ var FlowList = (function (exports) {
|
|
|
355
358
|
result.page = 1;
|
|
356
359
|
}
|
|
357
360
|
}
|
|
358
|
-
return
|
|
359
|
-
...query,
|
|
360
|
-
...result
|
|
361
|
-
};
|
|
361
|
+
return result;
|
|
362
362
|
};
|
|
363
363
|
|
|
364
364
|
// src/setters.ts
|
|
@@ -422,9 +422,7 @@ var FlowList = (function (exports) {
|
|
|
422
422
|
setter({
|
|
423
423
|
key: fieldName,
|
|
424
424
|
type: enum_default.SETTER_TYPE.RESET,
|
|
425
|
-
// or MUTATE if you have such type
|
|
426
425
|
value: field,
|
|
427
|
-
// same reference
|
|
428
426
|
callback: () => {
|
|
429
427
|
resolve();
|
|
430
428
|
}
|
|
@@ -572,7 +570,6 @@ var FlowList = (function (exports) {
|
|
|
572
570
|
query,
|
|
573
571
|
type,
|
|
574
572
|
func,
|
|
575
|
-
// string | function
|
|
576
573
|
api,
|
|
577
574
|
uniqueKey,
|
|
578
575
|
errorRetry,
|
|
@@ -662,7 +659,6 @@ var FlowList = (function (exports) {
|
|
|
662
659
|
getter,
|
|
663
660
|
setter,
|
|
664
661
|
func,
|
|
665
|
-
// string only
|
|
666
662
|
type,
|
|
667
663
|
query,
|
|
668
664
|
method,
|
|
@@ -775,10 +771,7 @@ var FlowList = (function (exports) {
|
|
|
775
771
|
const idSet = new Set(_id);
|
|
776
772
|
modifyValue = modifyValue.filter(
|
|
777
773
|
(item) => !idSet.has(
|
|
778
|
-
getObjectDeepValue(
|
|
779
|
-
item,
|
|
780
|
-
_uniqueKey
|
|
781
|
-
)
|
|
774
|
+
getObjectDeepValue(item, _uniqueKey)
|
|
782
775
|
)
|
|
783
776
|
);
|
|
784
777
|
}
|
|
@@ -796,7 +789,11 @@ var FlowList = (function (exports) {
|
|
|
796
789
|
break;
|
|
797
790
|
case enum_default.CHANGE_TYPE.RESULT_LIST_MERGE:
|
|
798
791
|
if (isArray(modifyValue)) {
|
|
799
|
-
combineArrayData(
|
|
792
|
+
combineArrayData(
|
|
793
|
+
modifyValue,
|
|
794
|
+
value,
|
|
795
|
+
_uniqueKey
|
|
796
|
+
);
|
|
800
797
|
}
|
|
801
798
|
break;
|
|
802
799
|
default:
|