@flowlist/js-core 3.0.9 → 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 +130 -133
- package/dist/index.d.ts +130 -133
- package/dist/index.global.js +152 -94
- package/dist/index.global.js.map +1 -1
- package/dist/index.js +152 -94
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +152 -94
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -3,212 +3,209 @@
|
|
|
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>;
|
|
104
108
|
}
|
|
105
109
|
/**
|
|
106
|
-
*
|
|
110
|
+
* 初始化状态的参数对外接口
|
|
111
|
+
*/
|
|
112
|
+
interface InitStateParams {
|
|
113
|
+
readonly func: DataSource;
|
|
114
|
+
readonly type: FetchType;
|
|
115
|
+
readonly query?: KeyMap;
|
|
116
|
+
readonly opts?: Partial<DefaultField>;
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
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;
|
|
121
144
|
}
|
|
122
145
|
/**
|
|
123
|
-
*
|
|
146
|
+
* 更新状态的参数(内部使用)
|
|
124
147
|
*/
|
|
125
|
-
interface UpdateStateType {
|
|
126
|
-
getter: FieldGetter;
|
|
127
|
-
setter: FieldSetter;
|
|
128
|
-
func: DataSource;
|
|
129
|
-
type: FetchType;
|
|
130
|
-
query?: KeyMap;
|
|
131
|
-
method: string;
|
|
132
|
-
value: ResultArrayType
|
|
133
|
-
id?:
|
|
134
|
-
changeKey?: string;
|
|
135
|
-
uniqueKey?: string;
|
|
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;
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* 更新状态的参数(对外接口)
|
|
162
|
+
*/
|
|
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
|
-
|
|
176
|
-
* 判断数据是否为对象结果(即没有 result 字段)
|
|
177
|
-
* 注意:这里我们假设 "对象结果" 指的是一个普通的对象,而不是 ApiResponse。
|
|
178
|
-
*/
|
|
199
|
+
declare const isArray: (data: unknown) => data is unknown[];
|
|
179
200
|
declare const isObjectResult: (data: unknown) => data is Record<string, unknown>;
|
|
180
|
-
/**
|
|
181
|
-
* 生成默认字段
|
|
182
|
-
*/
|
|
183
201
|
declare const generateDefaultField: (opts?: Partial<DefaultField>) => DefaultField;
|
|
184
|
-
/**
|
|
185
|
-
* 根据参数生成 field 的 namespace
|
|
186
|
-
*/
|
|
187
202
|
declare const generateFieldName: ({ func, type, query }: InitDataParams) => string;
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
*/
|
|
191
|
-
declare const getObjectDeepValue: (field: unknown, keys?: string | string[]) => unknown;
|
|
192
|
-
/**
|
|
193
|
-
* 安全地更新对象的深层值
|
|
194
|
-
*/
|
|
195
|
-
declare const updateObjectDeepValue: (field: Record<string, unknown>, changeKey: string, value: unknown) => void;
|
|
196
|
-
type ResultArrayType = KeyMap[];
|
|
197
|
-
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;
|
|
198
205
|
declare const searchValueByKey: (result: ResultArrayType | ResultObjectType, id: ObjectKey, key: string) => unknown;
|
|
199
206
|
declare const computeMatchedItemIndex: (itemId: ObjectKey, fieldArr: ResultArrayType, changingKey: string) => number;
|
|
200
207
|
declare const combineArrayData: (fieldArray: ResultArrayType, value: ResultArrayType | Record<ObjectKey, KeyMap>, changingKey: string) => void;
|
|
201
|
-
/**
|
|
202
|
-
* 判断参数是否为数组
|
|
203
|
-
*/
|
|
204
|
-
declare const isArray: (data: unknown) => data is unknown[];
|
|
205
|
-
/**
|
|
206
|
-
* 设置一个响应式的数据到对象上
|
|
207
|
-
*/
|
|
208
208
|
declare const setReactivityField: (field: DefaultField, key: FieldKeys, value: unknown, type: FetchType, insertBefore: boolean) => void;
|
|
209
|
-
/**
|
|
210
|
-
* 计算一个数据列的长度
|
|
211
|
-
*/
|
|
212
209
|
declare const computeResultLength: (data: unknown) => number;
|
|
213
210
|
declare const generateRequestParams: ({ field, uniqueKey, query, type }: GenerateParamsType) => GenerateParamsResp;
|
|
214
211
|
|
|
@@ -260,4 +257,4 @@ declare const _default: {
|
|
|
260
257
|
readonly DEFAULT_UNIQUE_KEY_NAME: "id";
|
|
261
258
|
};
|
|
262
259
|
|
|
263
|
-
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 };
|