@flowlist/js-core 4.0.7-beta.0 → 4.0.9-beta.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.
Files changed (59) hide show
  1. package/dist/chunk-6WOZNOYJ.mjs +79 -0
  2. package/dist/chunk-6WOZNOYJ.mjs.map +1 -0
  3. package/dist/chunk-BTOUHSDU.mjs +91 -0
  4. package/dist/chunk-BTOUHSDU.mjs.map +1 -0
  5. package/dist/chunk-C4BWSFWU.mjs +74 -0
  6. package/dist/chunk-C4BWSFWU.mjs.map +1 -0
  7. package/dist/chunk-KIQOUUEZ.mjs +3 -0
  8. package/dist/chunk-KIQOUUEZ.mjs.map +1 -0
  9. package/dist/chunk-LF6DOBID.mjs +248 -0
  10. package/dist/chunk-LF6DOBID.mjs.map +1 -0
  11. package/dist/chunk-OKKMFSGF.mjs +253 -0
  12. package/dist/chunk-OKKMFSGF.mjs.map +1 -0
  13. package/dist/chunk-PP7QTJDR.mjs +37 -0
  14. package/dist/chunk-PP7QTJDR.mjs.map +1 -0
  15. package/dist/constants.d.mts +33 -0
  16. package/dist/constants.d.ts +33 -0
  17. package/dist/constants.js +39 -0
  18. package/dist/constants.js.map +1 -0
  19. package/dist/constants.mjs +3 -0
  20. package/dist/constants.mjs.map +1 -0
  21. package/dist/core.d.mts +19 -0
  22. package/dist/core.d.ts +19 -0
  23. package/dist/core.js +446 -0
  24. package/dist/core.js.map +1 -0
  25. package/dist/core.mjs +5 -0
  26. package/dist/core.mjs.map +1 -0
  27. package/dist/index.d.mts +6 -291
  28. package/dist/index.d.ts +6 -291
  29. package/dist/index.global.js +386 -478
  30. package/dist/index.global.js.map +1 -1
  31. package/dist/index.js +386 -478
  32. package/dist/index.js.map +1 -1
  33. package/dist/index.mjs +7 -842
  34. package/dist/index.mjs.map +1 -1
  35. package/dist/mutations/core.d.mts +10 -0
  36. package/dist/mutations/core.d.ts +10 -0
  37. package/dist/mutations/core.js +130 -0
  38. package/dist/mutations/core.js.map +1 -0
  39. package/dist/mutations/core.mjs +5 -0
  40. package/dist/mutations/core.mjs.map +1 -0
  41. package/dist/mutations/extended.d.mts +10 -0
  42. package/dist/mutations/extended.d.ts +10 -0
  43. package/dist/mutations/extended.js +172 -0
  44. package/dist/mutations/extended.js.map +1 -0
  45. package/dist/mutations/extended.mjs +5 -0
  46. package/dist/mutations/extended.mjs.map +1 -0
  47. package/dist/mutations/index.d.mts +14 -0
  48. package/dist/mutations/index.d.ts +14 -0
  49. package/dist/mutations/index.js +379 -0
  50. package/dist/mutations/index.js.map +1 -0
  51. package/dist/mutations/index.mjs +8 -0
  52. package/dist/mutations/index.mjs.map +1 -0
  53. package/dist/types.d.mts +140 -0
  54. package/dist/types.d.ts +140 -0
  55. package/dist/types.js +4 -0
  56. package/dist/types.js.map +1 -0
  57. package/dist/types.mjs +3 -0
  58. package/dist/types.mjs.map +1 -0
  59. package/package.json +67 -1
package/dist/core.js ADDED
@@ -0,0 +1,446 @@
1
+ 'use strict';
2
+
3
+ // src/constants.ts
4
+ var FETCH_TYPE_ARRAY = ["jump", "sinceId", "page", "seenIds", "auto"];
5
+ var constants_default = {
6
+ SETTER_TYPE: {
7
+ RESET: 0,
8
+ MERGE: 1
9
+ },
10
+ FETCH_TYPE: {
11
+ PAGINATION: FETCH_TYPE_ARRAY[0],
12
+ SINCE_FIRST_OR_END_ID: FETCH_TYPE_ARRAY[1],
13
+ SCROLL_LOAD_MORE: FETCH_TYPE_ARRAY[2],
14
+ HAS_LOADED_IDS: FETCH_TYPE_ARRAY[3],
15
+ AUTO: FETCH_TYPE_ARRAY[4]
16
+ },
17
+ FIELD_DATA: {
18
+ RESULT_KEY: "result",
19
+ EXTRA_KEY: "extra"
20
+ },
21
+ DEFAULT_UNIQUE_KEY_NAME: "id"
22
+ };
23
+
24
+ // src/_internal/utils.ts
25
+ var isArray = (data) => Array.isArray(data);
26
+ var isObjectKey = (value) => typeof value === "string" || typeof value === "number";
27
+ var isKeyMap = (value) => typeof value === "object" && value !== null && !isArray(value);
28
+ var stableSerialize = (value) => {
29
+ if (value === null || typeof value !== "object") return String(value);
30
+ try {
31
+ if (isArray(value)) return JSON.stringify(value);
32
+ return JSON.stringify(
33
+ Object.fromEntries(
34
+ Object.entries(value).sort(
35
+ ([a], [b]) => a.localeCompare(b)
36
+ )
37
+ )
38
+ );
39
+ } catch {
40
+ return "[Circular]";
41
+ }
42
+ };
43
+ var getObjectDeepValue = (field, keys) => {
44
+ if (!keys || isArray(keys) && keys.length === 0) return field;
45
+ const keysArr = isArray(keys) ? keys : keys.split(".");
46
+ let cur = field;
47
+ for (let i = 0; i < keysArr.length; i++) {
48
+ if (cur == null || typeof cur !== "object") return void 0;
49
+ cur = cur[keysArr[i]];
50
+ }
51
+ return cur;
52
+ };
53
+ var extractUniqueKey = (item, uniqueKey) => {
54
+ if (!isKeyMap(item)) return void 0;
55
+ const val = item[uniqueKey];
56
+ if (isObjectKey(val)) return val;
57
+ if (uniqueKey.includes(".")) {
58
+ const deepVal = getObjectDeepValue(item, uniqueKey);
59
+ if (isObjectKey(deepVal)) return deepVal;
60
+ }
61
+ return void 0;
62
+ };
63
+ var generateDefaultField = (opts = {}) => ({
64
+ result: [],
65
+ noMore: false,
66
+ nothing: false,
67
+ loading: false,
68
+ error: null,
69
+ extra: null,
70
+ fetched: false,
71
+ page: 0,
72
+ total: 0,
73
+ ...opts
74
+ });
75
+ var computeResultLength = (data) => {
76
+ if (isArray(data)) return data.length;
77
+ return 0;
78
+ };
79
+ var setReactivityField = (field, key, value, type, insertBefore) => {
80
+ const fieldAny = field;
81
+ if (type === constants_default.FETCH_TYPE.PAGINATION) {
82
+ fieldAny[key] = value;
83
+ return;
84
+ }
85
+ if (key !== constants_default.FIELD_DATA.RESULT_KEY) {
86
+ if (isArray(value)) {
87
+ const current = isArray(fieldAny[key]) ? fieldAny[key] : [];
88
+ fieldAny[key] = insertBefore ? [...value, ...current] : [...current, ...value];
89
+ } else {
90
+ fieldAny[key] = value;
91
+ }
92
+ return;
93
+ }
94
+ if (isArray(value)) {
95
+ if (value.length === 0) return;
96
+ const current = isArray(field.result) ? field.result : [];
97
+ if (current.length === 0) {
98
+ field.result = value;
99
+ return;
100
+ }
101
+ field.result = insertBefore ? [...value, ...current] : [...current, ...value];
102
+ return;
103
+ }
104
+ const valueObj = value;
105
+ let target = field.result;
106
+ if (isArray(field.result) || typeof field.result !== "object" || field.result === null) {
107
+ target = {};
108
+ field.result = target;
109
+ }
110
+ for (const subKey of Object.keys(valueObj)) {
111
+ const existing = target[subKey];
112
+ const incoming = valueObj[subKey];
113
+ if (existing !== void 0 && isArray(existing) && isArray(incoming)) {
114
+ target[subKey] = insertBefore ? [...incoming, ...existing] : [...existing, ...incoming];
115
+ } else {
116
+ target[subKey] = incoming;
117
+ }
118
+ }
119
+ };
120
+ var getSeenIdsString = (arr, uniqueKey) => {
121
+ if (!isArray(arr)) return "";
122
+ const ids = [];
123
+ for (const item of arr) {
124
+ const id = extractUniqueKey(item, uniqueKey);
125
+ if (id !== void 0) ids.push(id);
126
+ }
127
+ return ids.join(",");
128
+ };
129
+ var generateRequestParams = ({
130
+ field,
131
+ uniqueKey = constants_default.DEFAULT_UNIQUE_KEY_NAME,
132
+ query = {},
133
+ is_up = false,
134
+ type
135
+ }) => {
136
+ const result = { ...query };
137
+ const isFetched = field.fetched;
138
+ const fieldResult = field.result;
139
+ const getSafeObjectKey = (item) => extractUniqueKey(item, uniqueKey);
140
+ if (isFetched) {
141
+ switch (type) {
142
+ case constants_default.FETCH_TYPE.AUTO:
143
+ if (isArray(fieldResult)) {
144
+ result.seen_ids = getSeenIdsString(fieldResult, uniqueKey);
145
+ result.since_id = getSafeObjectKey(
146
+ fieldResult[is_up ? 0 : fieldResult.length - 1]
147
+ );
148
+ }
149
+ result.is_up = is_up ? 1 : 0;
150
+ result.page = typeof query.page === "number" ? query.page : field.page + 1;
151
+ break;
152
+ case constants_default.FETCH_TYPE.HAS_LOADED_IDS:
153
+ if (isArray(fieldResult)) {
154
+ result.seen_ids = getSeenIdsString(fieldResult, uniqueKey);
155
+ }
156
+ break;
157
+ case constants_default.FETCH_TYPE.SINCE_FIRST_OR_END_ID:
158
+ if (isArray(fieldResult)) {
159
+ result.since_id = getSafeObjectKey(
160
+ fieldResult[is_up ? 0 : fieldResult.length - 1]
161
+ );
162
+ }
163
+ result.is_up = is_up ? 1 : 0;
164
+ break;
165
+ case constants_default.FETCH_TYPE.PAGINATION:
166
+ result.page = typeof query.page === "number" ? query.page : void 0;
167
+ break;
168
+ case constants_default.FETCH_TYPE.SCROLL_LOAD_MORE:
169
+ result.page = field.page + 1;
170
+ break;
171
+ }
172
+ } else {
173
+ switch (type) {
174
+ case constants_default.FETCH_TYPE.AUTO:
175
+ result.seen_ids = "";
176
+ result.since_id = isObjectKey(query.sinceId) ? query.sinceId : "";
177
+ result.is_up = is_up ? 1 : 0;
178
+ result.page = typeof query.page === "number" ? query.page : field.page || 1;
179
+ break;
180
+ case constants_default.FETCH_TYPE.HAS_LOADED_IDS:
181
+ result.seen_ids = "";
182
+ break;
183
+ case constants_default.FETCH_TYPE.SINCE_FIRST_OR_END_ID:
184
+ result.since_id = isObjectKey(query.sinceId) ? query.sinceId : "";
185
+ result.is_up = is_up ? 1 : 0;
186
+ break;
187
+ case constants_default.FETCH_TYPE.PAGINATION:
188
+ result.page = typeof query.page === "number" ? query.page : field.page;
189
+ break;
190
+ case constants_default.FETCH_TYPE.SCROLL_LOAD_MORE:
191
+ result.page = 1;
192
+ break;
193
+ }
194
+ }
195
+ return result;
196
+ };
197
+
198
+ // src/_internal/setters.ts
199
+ var SET_DATA = ({
200
+ getter,
201
+ setter,
202
+ data,
203
+ fieldName,
204
+ type,
205
+ page,
206
+ insertBefore
207
+ }) => {
208
+ return new Promise((resolve, reject) => {
209
+ const fieldData = getter(fieldName);
210
+ if (!fieldData) {
211
+ reject(new Error(`Field ${fieldName} not found.`));
212
+ return;
213
+ }
214
+ const field = fieldData;
215
+ let result;
216
+ let extra;
217
+ const hasResult = Object.prototype.hasOwnProperty.call(data, "result");
218
+ if (!hasResult) {
219
+ result = data;
220
+ field.nothing = false;
221
+ field.fetched = true;
222
+ field.noMore = true;
223
+ field.page = -1;
224
+ } else {
225
+ const apiResponse = data;
226
+ result = apiResponse.result;
227
+ extra = apiResponse.extra;
228
+ const isEmpty = computeResultLength(result) === 0;
229
+ field.nothing = field.fetched ? false : isEmpty;
230
+ field.fetched = true;
231
+ field.total = apiResponse.total || 0;
232
+ if (type === constants_default.FETCH_TYPE.PAGINATION) {
233
+ field.noMore = false;
234
+ field.page = +page;
235
+ } else {
236
+ field.noMore = typeof apiResponse.no_more === "undefined" ? isEmpty : apiResponse.no_more || isEmpty;
237
+ field.page = field.page + 1;
238
+ }
239
+ }
240
+ field.loading = false;
241
+ setReactivityField(
242
+ field,
243
+ constants_default.FIELD_DATA.RESULT_KEY,
244
+ result,
245
+ type,
246
+ insertBefore
247
+ );
248
+ if (extra !== void 0 && extra !== null) {
249
+ setReactivityField(
250
+ field,
251
+ constants_default.FIELD_DATA.EXTRA_KEY,
252
+ extra,
253
+ type,
254
+ insertBefore
255
+ );
256
+ }
257
+ setter({
258
+ key: fieldName,
259
+ type: constants_default.SETTER_TYPE.RESET,
260
+ value: field,
261
+ callback: () => resolve()
262
+ });
263
+ });
264
+ };
265
+ var SET_ERROR = ({ setter, fieldName, error }) => {
266
+ setter({
267
+ key: fieldName,
268
+ type: constants_default.SETTER_TYPE.MERGE,
269
+ value: { error, loading: false }
270
+ });
271
+ };
272
+
273
+ // src/core.ts
274
+ var generateFieldName = ({
275
+ func,
276
+ query
277
+ }) => {
278
+ let result = func.id;
279
+ if (!query) return result;
280
+ const queryObj = query;
281
+ const filteredKeys = Object.keys(queryObj).filter((key) => !func.paramsIgnore.includes(key)).sort();
282
+ for (const key of filteredKeys) {
283
+ const value = queryObj[key];
284
+ const safeValue = typeof value === "object" && value !== null ? stableSerialize(value) : String(value);
285
+ result += `-${key}-${encodeURIComponent(safeValue)}`;
286
+ }
287
+ return result;
288
+ };
289
+ var createApi = (options) => {
290
+ const fn = ((params) => options.fetcher(params));
291
+ const metadata = {
292
+ id: options.id,
293
+ type: options.type || constants_default.FETCH_TYPE.SCROLL_LOAD_MORE,
294
+ uniqueKey: options.uniqueKey || constants_default.DEFAULT_UNIQUE_KEY_NAME,
295
+ is_up: options.is_up || false,
296
+ paramsIgnore: [
297
+ "page",
298
+ "since_id",
299
+ "seen_ids",
300
+ "__refresh__",
301
+ "__reload__",
302
+ ...options.paramsIgnore || []
303
+ ]
304
+ };
305
+ return Object.freeze(Object.assign(fn, metadata));
306
+ };
307
+ var initState = ({
308
+ getter,
309
+ setter,
310
+ func,
311
+ query,
312
+ opts
313
+ }) => {
314
+ return new Promise((resolve) => {
315
+ const fieldName = generateFieldName({ func, query });
316
+ if (getter(fieldName)) return resolve();
317
+ setter({
318
+ key: fieldName,
319
+ type: constants_default.SETTER_TYPE.RESET,
320
+ value: generateDefaultField(opts),
321
+ callback: () => resolve()
322
+ });
323
+ });
324
+ };
325
+ var initData = ({
326
+ getter,
327
+ setter,
328
+ func,
329
+ query,
330
+ callback
331
+ }) => new Promise((resolve, reject) => {
332
+ const fieldName = generateFieldName({ func, query });
333
+ const fieldData = getter(fieldName);
334
+ const doRefresh = !!query?.__refresh__;
335
+ const needReset = !!query?.__reload__;
336
+ const directlyLoadData = doRefresh && !needReset;
337
+ if (fieldData && fieldData.error && !doRefresh) return resolve();
338
+ if (fieldData && fieldData.loading) return resolve();
339
+ if (fieldData && fieldData.fetched && !doRefresh) return resolve();
340
+ const params = generateRequestParams({
341
+ field: generateDefaultField({ ...fieldData, fetched: false }),
342
+ uniqueKey: func.uniqueKey,
343
+ type: func.type,
344
+ is_up: func.is_up,
345
+ query
346
+ });
347
+ const executeFetch = () => {
348
+ func(params).then((data) => {
349
+ const commitData = () => {
350
+ SET_DATA({
351
+ getter,
352
+ setter,
353
+ data,
354
+ fieldName,
355
+ type: func.type,
356
+ page: params.page || 0,
357
+ insertBefore: false
358
+ }).then(() => {
359
+ callback?.({ params, data, refresh: doRefresh });
360
+ resolve();
361
+ });
362
+ };
363
+ if (directlyLoadData) {
364
+ setter({
365
+ key: fieldName,
366
+ type: constants_default.SETTER_TYPE.RESET,
367
+ value: generateDefaultField(),
368
+ callback: commitData
369
+ });
370
+ } else {
371
+ commitData();
372
+ }
373
+ }).catch((error) => {
374
+ SET_ERROR({ setter, fieldName, error });
375
+ reject(error);
376
+ });
377
+ };
378
+ if (directlyLoadData) {
379
+ executeFetch();
380
+ } else {
381
+ setter({
382
+ key: fieldName,
383
+ type: constants_default.SETTER_TYPE.RESET,
384
+ value: { ...generateDefaultField(), loading: true, error: null },
385
+ callback: executeFetch
386
+ });
387
+ }
388
+ });
389
+ var loadMore = ({
390
+ getter,
391
+ setter,
392
+ query,
393
+ func,
394
+ errorRetry,
395
+ callback
396
+ }) => new Promise((resolve, reject) => {
397
+ const fieldName = generateFieldName({ func, query });
398
+ const fieldData = getter(fieldName);
399
+ if (!fieldData || fieldData.loading || fieldData.nothing) return resolve();
400
+ if (fieldData.noMore && !errorRetry) return resolve();
401
+ const type = func.type;
402
+ if (type === constants_default.FETCH_TYPE.PAGINATION && query?.page != null && Number(query.page) === fieldData.page) {
403
+ return resolve();
404
+ }
405
+ const loadingState = type === constants_default.FETCH_TYPE.PAGINATION ? { loading: true, error: null, result: [], extra: null } : { loading: true, error: null };
406
+ const params = generateRequestParams({
407
+ field: fieldData,
408
+ uniqueKey: func.uniqueKey,
409
+ type,
410
+ is_up: func.is_up,
411
+ query
412
+ });
413
+ if (fieldData.extra) params.extra = fieldData.extra;
414
+ setter({
415
+ key: fieldName,
416
+ type: constants_default.SETTER_TYPE.MERGE,
417
+ value: loadingState,
418
+ callback: () => {
419
+ func(params).then((data) => {
420
+ SET_DATA({
421
+ getter,
422
+ setter,
423
+ data,
424
+ type,
425
+ fieldName,
426
+ page: params.page || 0,
427
+ insertBefore: func.is_up
428
+ }).then(() => {
429
+ callback?.({ params, data, refresh: false });
430
+ resolve();
431
+ });
432
+ }).catch((error) => {
433
+ SET_ERROR({ setter, fieldName, error });
434
+ reject(error);
435
+ });
436
+ }
437
+ });
438
+ });
439
+
440
+ exports.createApi = createApi;
441
+ exports.generateFieldName = generateFieldName;
442
+ exports.initData = initData;
443
+ exports.initState = initState;
444
+ exports.loadMore = loadMore;
445
+ //# sourceMappingURL=core.js.map
446
+ //# sourceMappingURL=core.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/constants.ts","../src/_internal/utils.ts","../src/_internal/setters.ts","../src/core.ts"],"names":[],"mappings":"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","file":"core.js","sourcesContent":["// constants.ts\nconst FETCH_TYPE_ARRAY = ['jump', 'sinceId', 'page', 'seenIds', 'auto'] as const\n\nexport default {\n SETTER_TYPE: {\n RESET: 0,\n MERGE: 1\n } as const,\n FETCH_TYPE_ARRAY,\n FETCH_TYPE: {\n PAGINATION: FETCH_TYPE_ARRAY[0],\n SINCE_FIRST_OR_END_ID: FETCH_TYPE_ARRAY[1],\n SCROLL_LOAD_MORE: FETCH_TYPE_ARRAY[2],\n HAS_LOADED_IDS: FETCH_TYPE_ARRAY[3],\n AUTO: FETCH_TYPE_ARRAY[4]\n } as const,\n CHANGE_TYPE: {\n SEARCH_FIELD: 'search',\n RESET_FIELD: 'reset',\n RESULT_UPDATE_KV: 'update',\n RESULT_ADD_AFTER: 'push',\n RESULT_ADD_BEFORE: 'unshift',\n RESULT_REMOVE_BY_ID: 'delete',\n RESULT_INSERT_TO_BEFORE: 'insert-before',\n RESULT_INSERT_TO_AFTER: 'insert-after',\n RESULT_LIST_MERGE: 'patch',\n RESULT_ITEM_MERGE: 'merge'\n } as const,\n FIELD_DATA: {\n RESULT_KEY: 'result',\n EXTRA_KEY: 'extra'\n } as const,\n DEFAULT_UNIQUE_KEY_NAME: 'id'\n} as const\n","// _internal/utils.ts\nimport ENUM from '../constants'\nimport type {\n DefaultField,\n FetchType,\n FieldKeys,\n GenerateParamsResp,\n GenerateParamsType,\n KeyMap,\n ObjectKey\n} from '../types'\n\n// ========== 类型守卫 ==========\n\nexport const isArray = (data: unknown): data is any[] => Array.isArray(data)\n\nexport const isObjectKey = (value: unknown): value is ObjectKey =>\n typeof value === 'string' || typeof value === 'number'\n\nexport const isKeyMap = (value: unknown): value is KeyMap =>\n typeof value === 'object' && value !== null && !isArray(value)\n\nexport const isKeyMapArray = (value: unknown): value is KeyMap[] =>\n isArray(value) &&\n value.every((item) => typeof item === 'object' && item !== null)\n\nexport const isObjectKeyArray = (value: unknown): value is ObjectKey[] =>\n isArray(value) &&\n value.every((item) => typeof item === 'string' || typeof item === 'number')\n\n// ========== 序列化 ==========\n\nexport const stableSerialize = (value: unknown): string => {\n if (value === null || typeof value !== 'object') return String(value)\n try {\n if (isArray(value)) return JSON.stringify(value)\n return JSON.stringify(\n Object.fromEntries(\n Object.entries(value as Record<string, unknown>).sort(([a], [b]) =>\n a.localeCompare(b)\n )\n )\n )\n } catch {\n return '[Circular]'\n }\n}\n\n// ========== 深度访问 ==========\n\nexport const getObjectDeepValue = (\n field: unknown,\n keys: string | string[]\n): unknown => {\n if (!keys || (isArray(keys) && keys.length === 0)) return field\n const keysArr = isArray(keys) ? keys : (keys as string).split('.')\n let cur: any = field\n for (let i = 0; i < keysArr.length; i++) {\n if (cur == null || typeof cur !== 'object') return undefined\n cur = cur[keysArr[i]]\n }\n return cur\n}\n\nexport const updateObjectDeepValue = (\n field: KeyMap,\n changeKey: string,\n value: unknown\n): void => {\n const keys = changeKey.split('.')\n const lastKey = keys.pop()\n if (!lastKey) return\n\n let current: KeyMap = field\n for (const key of keys) {\n if (current[key] == null || typeof current[key] !== 'object') {\n current[key] = {}\n }\n if (!isKeyMap(current[key])) return\n current = current[key] as KeyMap\n }\n current[lastKey] = value\n}\n\n// ========== uniqueKey 提取 ==========\n\nconst extractUniqueKey = (\n item: KeyMap,\n uniqueKey: string\n): ObjectKey | undefined => {\n if (!isKeyMap(item)) return undefined\n const val = item[uniqueKey]\n if (isObjectKey(val)) return val\n if (uniqueKey.includes('.')) {\n const deepVal = getObjectDeepValue(item, uniqueKey)\n if (isObjectKey(deepVal)) return deepVal\n }\n return undefined\n}\n\n// ========== 核心工具 ==========\n\nexport const generateDefaultField = <T = any>(\n opts: Partial<DefaultField<T>> = {}\n): DefaultField<T> => ({\n result: [] as unknown as T,\n noMore: false,\n nothing: false,\n loading: false,\n error: null,\n extra: null,\n fetched: false,\n page: 0,\n total: 0,\n ...opts\n})\n\nexport const computeMatchedItemIndex = (\n itemId: ObjectKey,\n fieldArr: any[],\n changingKey: string\n): number => {\n const stringId = String(itemId)\n for (let i = 0; i < fieldArr.length; i++) {\n const item = fieldArr[i]\n if (!isKeyMap(item)) continue\n const val = getObjectDeepValue(item, changingKey)\n if (String(val) === stringId) return i\n }\n return -1\n}\n\nexport const computeResultLength = (data: unknown): number => {\n if (isArray(data)) return data.length\n return 0\n}\n\nexport const toObjectKey = (\n id: ObjectKey | ObjectKey[] | undefined\n): ObjectKey | undefined => {\n if (id === undefined) return undefined\n if (isObjectKey(id)) return id\n if (isObjectKeyArray(id) && id.length > 0) return id[0]\n return undefined\n}\n\nexport const getResultAsArray = (field: DefaultField): any[] | null => {\n const result = field[ENUM.FIELD_DATA.RESULT_KEY]\n return isArray(result) ? result : null\n}\n\nexport const updateArrayItem = (\n arr: any[],\n index: number,\n updater: (item: KeyMap) => KeyMap\n): void => {\n if (index >= 0 && index < arr.length && isKeyMap(arr[index])) {\n arr[index] = updater(arr[index])\n }\n}\n\n// ========== 搜索 ==========\n\nexport const searchValueByKey = (\n result: any[] | Record<string, any>,\n id: ObjectKey,\n key: string\n): unknown => {\n if (isArray(result)) {\n const index = computeMatchedItemIndex(id, result, key)\n return index >= 0 ? result[index] : undefined\n }\n if (isKeyMap(result)) return result[String(id)]\n return undefined\n}\n\n// ========== 批量合并 ==========\n\nexport const combineArrayData = (\n fieldArray: any[],\n value: any[] | Record<ObjectKey, KeyMap>,\n changingKey: string\n): void => {\n const indexMap = new Map<string, number>()\n for (let i = 0; i < fieldArray.length; i++) {\n const item = fieldArray[i]\n if (!isKeyMap(item)) continue\n const id = getObjectDeepValue(item, changingKey)\n if (id !== undefined) indexMap.set(String(id), i)\n }\n\n const mergeItem = (uniqueId: string, col: KeyMap) => {\n const index = indexMap.get(uniqueId)\n if (index !== undefined && isKeyMap(fieldArray[index])) {\n fieldArray[index] = { ...fieldArray[index], ...col }\n }\n }\n\n if (isArray(value)) {\n for (const col of value) {\n if (!isKeyMap(col)) continue\n mergeItem(String(getObjectDeepValue(col, changingKey)), col)\n }\n } else if (isKeyMap(value)) {\n for (const [uniqueId, col] of Object.entries(value)) {\n if (isKeyMap(col)) mergeItem(uniqueId, col)\n }\n }\n}\n\n// ========== 响应式字段设置 ==========\n\nexport const setReactivityField = (\n field: DefaultField,\n key: FieldKeys,\n value: unknown,\n type: FetchType,\n insertBefore: boolean\n): void => {\n const fieldAny = field as any\n\n // 分页模式直接赋值\n if (type === ENUM.FETCH_TYPE.PAGINATION) {\n fieldAny[key] = value\n return\n }\n\n // 非 result 字段\n if (key !== ENUM.FIELD_DATA.RESULT_KEY) {\n if (isArray(value)) {\n const current = isArray(fieldAny[key]) ? fieldAny[key] : []\n fieldAny[key] = insertBefore\n ? [...(value as any[]), ...current]\n : [...current, ...(value as any[])]\n } else {\n fieldAny[key] = value\n }\n return\n }\n\n // result 字段 — 数组\n if (isArray(value)) {\n if ((value as any[]).length === 0) return\n const current = isArray(field.result) ? (field.result as any[]) : []\n if (current.length === 0) {\n field.result = value as any\n return\n }\n field.result = (\n insertBefore\n ? [...(value as any[]), ...current]\n : [...current, ...(value as any[])]\n ) as any\n return\n }\n\n // result 字段 — 对象(按 key 分组场景)\n const valueObj = value as KeyMap\n let target = field.result as Record<string, any>\n if (\n isArray(field.result) ||\n typeof field.result !== 'object' ||\n field.result === null\n ) {\n target = {}\n field.result = target as any\n }\n\n for (const subKey of Object.keys(valueObj)) {\n const existing = target[subKey]\n const incoming = valueObj[subKey]\n if (existing !== undefined && isArray(existing) && isArray(incoming)) {\n target[subKey] = insertBefore\n ? [...incoming, ...existing]\n : [...existing, ...incoming]\n } else {\n target[subKey] = incoming\n }\n }\n}\n\n// ========== 请求参数生成 ==========\n\nconst getSeenIdsString = (arr: any[], uniqueKey: string): string => {\n if (!isArray(arr)) return ''\n const ids: ObjectKey[] = []\n for (const item of arr) {\n const id = extractUniqueKey(item, uniqueKey)\n if (id !== undefined) ids.push(id)\n }\n return ids.join(',')\n}\n\nexport const generateRequestParams = ({\n field,\n uniqueKey = ENUM.DEFAULT_UNIQUE_KEY_NAME,\n query = {},\n is_up = false,\n type\n}: GenerateParamsType): GenerateParamsResp => {\n const result: GenerateParamsResp = { ...query }\n const isFetched = field.fetched\n const fieldResult = field.result as any\n\n const getSafeObjectKey = (item: unknown): ObjectKey | undefined =>\n extractUniqueKey(item as KeyMap, uniqueKey)\n\n if (isFetched) {\n switch (type) {\n case ENUM.FETCH_TYPE.AUTO:\n if (isArray(fieldResult)) {\n result.seen_ids = getSeenIdsString(fieldResult, uniqueKey)\n result.since_id = getSafeObjectKey(\n fieldResult[is_up ? 0 : fieldResult.length - 1]\n )\n }\n result.is_up = is_up ? 1 : 0\n result.page =\n typeof query.page === 'number' ? query.page : field.page + 1\n break\n case ENUM.FETCH_TYPE.HAS_LOADED_IDS:\n if (isArray(fieldResult)) {\n result.seen_ids = getSeenIdsString(fieldResult, uniqueKey)\n }\n break\n case ENUM.FETCH_TYPE.SINCE_FIRST_OR_END_ID:\n if (isArray(fieldResult)) {\n result.since_id = getSafeObjectKey(\n fieldResult[is_up ? 0 : fieldResult.length - 1]\n )\n }\n result.is_up = is_up ? 1 : 0\n break\n case ENUM.FETCH_TYPE.PAGINATION:\n result.page = typeof query.page === 'number' ? query.page : undefined\n break\n case ENUM.FETCH_TYPE.SCROLL_LOAD_MORE:\n result.page = field.page + 1\n break\n }\n } else {\n switch (type) {\n case ENUM.FETCH_TYPE.AUTO:\n result.seen_ids = ''\n result.since_id = isObjectKey(query.sinceId) ? query.sinceId : ''\n result.is_up = is_up ? 1 : 0\n result.page =\n typeof query.page === 'number' ? query.page : field.page || 1\n break\n case ENUM.FETCH_TYPE.HAS_LOADED_IDS:\n result.seen_ids = ''\n break\n case ENUM.FETCH_TYPE.SINCE_FIRST_OR_END_ID:\n result.since_id = isObjectKey(query.sinceId) ? query.sinceId : ''\n result.is_up = is_up ? 1 : 0\n break\n case ENUM.FETCH_TYPE.PAGINATION:\n result.page = typeof query.page === 'number' ? query.page : field.page\n break\n case ENUM.FETCH_TYPE.SCROLL_LOAD_MORE:\n result.page = 1\n break\n }\n }\n\n return result\n}\n","// _internal/setters.ts\nimport ENUM from '../constants'\nimport type { BaseApiResponse, SetDataType, SetErrorType } from '../types'\nimport { computeResultLength, setReactivityField } from './utils'\n\nexport const SET_DATA = ({\n getter,\n setter,\n data,\n fieldName,\n type,\n page,\n insertBefore\n}: SetDataType): Promise<void> => {\n return new Promise((resolve, reject) => {\n const fieldData = getter(fieldName)\n if (!fieldData) {\n reject(new Error(`Field ${fieldName} not found.`))\n return\n }\n\n const field = fieldData\n let result: any\n let extra: unknown\n\n // 标准 API 响应(有 result 属性)\n const hasResult = Object.prototype.hasOwnProperty.call(data, 'result')\n if (!hasResult) {\n // 非标准:整个 data 就是 result\n result = data\n field.nothing = false\n field.fetched = true\n field.noMore = true\n field.page = -1\n } else {\n const apiResponse = data as BaseApiResponse\n result = apiResponse.result\n extra = apiResponse.extra\n const isEmpty = computeResultLength(result) === 0\n field.nothing = field.fetched ? false : isEmpty\n field.fetched = true\n field.total = apiResponse.total || 0\n\n if (type === ENUM.FETCH_TYPE.PAGINATION) {\n field.noMore = false\n field.page = +page\n } else {\n field.noMore =\n typeof apiResponse.no_more === 'undefined'\n ? isEmpty\n : apiResponse.no_more || isEmpty\n field.page = field.page + 1\n }\n }\n\n field.loading = false\n\n setReactivityField(\n field,\n ENUM.FIELD_DATA.RESULT_KEY,\n result,\n type,\n insertBefore\n )\n\n if (extra !== undefined && extra !== null) {\n setReactivityField(\n field,\n ENUM.FIELD_DATA.EXTRA_KEY,\n extra,\n type,\n insertBefore\n )\n }\n\n setter({\n key: fieldName,\n type: ENUM.SETTER_TYPE.RESET,\n value: field,\n callback: () => resolve()\n })\n })\n}\n\nexport const SET_ERROR = ({ setter, fieldName, error }: SetErrorType): void => {\n setter({\n key: fieldName,\n type: ENUM.SETTER_TYPE.MERGE,\n value: { error, loading: false }\n })\n}\n","// core.ts — createApi / initState / initData / loadMore / generateFieldName\nimport { SET_DATA, SET_ERROR } from './_internal/setters'\nimport {\n generateDefaultField,\n generateRequestParams,\n stableSerialize\n} from './_internal/utils'\nimport ENUM from './constants'\n\nimport type {\n ApiContract,\n BaseApiResponse,\n DefaultField,\n FetchType,\n InitDataType,\n InitStateType,\n KeyMap,\n LoadMoreType,\n RequestParams\n} from './types'\n\n// --- generateFieldName ---\nexport const generateFieldName = <P extends RequestParams, R>({\n func,\n query\n}: {\n func: ApiContract<P, R>\n query?: P\n}): string => {\n let result = func.id\n if (!query) return result\n\n const queryObj = query as Record<string, unknown>\n const filteredKeys = Object.keys(queryObj)\n .filter((key) => !func.paramsIgnore.includes(key))\n .sort()\n\n for (const key of filteredKeys) {\n const value = queryObj[key]\n const safeValue =\n typeof value === 'object' && value !== null\n ? stableSerialize(value)\n : String(value)\n result += `-${key}-${encodeURIComponent(safeValue)}`\n }\n return result\n}\n\n// --- createApi ---\nexport const createApi = <P extends RequestParams, R>(options: {\n id: string\n type?: FetchType\n uniqueKey?: string\n is_up?: boolean\n paramsIgnore?: string[]\n fetcher: (params: P) => Promise<BaseApiResponse<R>>\n}): ApiContract<P, R> => {\n const fn = ((params: P) => options.fetcher(params)) as ApiContract<P, R>\n\n const metadata: Partial<ApiContract<P, R>> = {\n id: options.id,\n type: options.type || (ENUM.FETCH_TYPE.SCROLL_LOAD_MORE as FetchType),\n uniqueKey: options.uniqueKey || ENUM.DEFAULT_UNIQUE_KEY_NAME,\n is_up: options.is_up || false,\n paramsIgnore: [\n 'page',\n 'since_id',\n 'seen_ids',\n '__refresh__',\n '__reload__',\n ...(options.paramsIgnore || [])\n ]\n }\n\n return Object.freeze(Object.assign(fn, metadata))\n}\n\n// --- initState ---\nexport const initState = <P extends RequestParams, R>({\n getter,\n setter,\n func,\n query,\n opts\n}: InitStateType<P, R>): Promise<void> => {\n return new Promise((resolve) => {\n const fieldName = generateFieldName({ func, query })\n if (getter(fieldName)) return resolve()\n\n setter({\n key: fieldName,\n type: ENUM.SETTER_TYPE.RESET,\n value: generateDefaultField(opts),\n callback: () => resolve()\n })\n })\n}\n\n// --- initData ---\nexport const initData = <P extends RequestParams, R>({\n getter,\n setter,\n func,\n query,\n callback\n}: InitDataType<P, R>): Promise<void> =>\n new Promise((resolve, reject) => {\n const fieldName = generateFieldName({ func, query })\n const fieldData = getter(fieldName)\n\n const doRefresh = !!query?.__refresh__\n const needReset = !!query?.__reload__\n const directlyLoadData = doRefresh && !needReset\n\n if (fieldData && fieldData.error && !doRefresh) return resolve()\n if (fieldData && fieldData.loading) return resolve()\n if (fieldData && fieldData.fetched && !doRefresh) return resolve()\n\n const params = generateRequestParams({\n field: generateDefaultField({ ...fieldData, fetched: false }),\n uniqueKey: func.uniqueKey,\n type: func.type,\n is_up: func.is_up,\n query: query as KeyMap\n })\n\n const executeFetch = () => {\n func(params as P)\n .then((data) => {\n const commitData = () => {\n SET_DATA({\n getter,\n setter,\n data: data as BaseApiResponse,\n fieldName,\n type: func.type,\n page: params.page || 0,\n insertBefore: false\n }).then(() => {\n callback?.({ params: params as P, data, refresh: doRefresh })\n resolve()\n })\n }\n\n if (directlyLoadData) {\n setter({\n key: fieldName,\n type: ENUM.SETTER_TYPE.RESET,\n value: generateDefaultField(),\n callback: commitData\n })\n } else {\n commitData()\n }\n })\n .catch((error: Error) => {\n SET_ERROR({ setter, fieldName, error })\n reject(error)\n })\n }\n\n if (directlyLoadData) {\n executeFetch()\n } else {\n setter({\n key: fieldName,\n type: ENUM.SETTER_TYPE.RESET,\n value: { ...generateDefaultField(), loading: true, error: null },\n callback: executeFetch\n })\n }\n })\n\n// --- loadMore ---\nexport const loadMore = <P extends RequestParams, R>({\n getter,\n setter,\n query,\n func,\n errorRetry,\n callback\n}: LoadMoreType<P, R>): Promise<void> =>\n new Promise((resolve, reject) => {\n const fieldName = generateFieldName({ func, query })\n const fieldData = getter(fieldName)\n if (!fieldData || fieldData.loading || fieldData.nothing) return resolve()\n if (fieldData.noMore && !errorRetry) return resolve()\n\n const type = func.type\n\n if (\n type === ENUM.FETCH_TYPE.PAGINATION &&\n query?.page != null &&\n Number(query.page) === fieldData.page\n ) {\n return resolve()\n }\n\n const loadingState: Partial<DefaultField> =\n type === ENUM.FETCH_TYPE.PAGINATION\n ? { loading: true, error: null, result: [], extra: null }\n : { loading: true, error: null }\n\n const params = generateRequestParams({\n field: fieldData,\n uniqueKey: func.uniqueKey,\n type,\n is_up: func.is_up,\n query: query as KeyMap\n })\n\n if (fieldData.extra) params.extra = fieldData.extra\n\n setter({\n key: fieldName,\n type: ENUM.SETTER_TYPE.MERGE,\n value: loadingState,\n callback: () => {\n func(params as P)\n .then((data) => {\n SET_DATA({\n getter,\n setter,\n data: data as BaseApiResponse,\n type,\n fieldName,\n page: params.page || 0,\n insertBefore: func.is_up\n }).then(() => {\n callback?.({ params: params as P, data, refresh: false })\n resolve()\n })\n })\n .catch((error: Error) => {\n SET_ERROR({ setter, fieldName, error })\n reject(error)\n })\n }\n })\n })\n"]}
package/dist/core.mjs ADDED
@@ -0,0 +1,5 @@
1
+ export { createApi, generateFieldName, initData, initState, loadMore } from './chunk-LF6DOBID.mjs';
2
+ import './chunk-OKKMFSGF.mjs';
3
+ import './chunk-PP7QTJDR.mjs';
4
+ //# sourceMappingURL=core.mjs.map
5
+ //# sourceMappingURL=core.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"core.mjs"}