@flowlist/js-core 4.0.8-beta.0 → 4.0.10-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 -314
  28. package/dist/index.d.ts +6 -314
  29. package/dist/index.global.js +385 -517
  30. package/dist/index.global.js.map +1 -1
  31. package/dist/index.js +385 -517
  32. package/dist/index.js.map +1 -1
  33. package/dist/index.mjs +7 -882
  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 +89 -1
package/dist/index.mjs CHANGED
@@ -1,884 +1,9 @@
1
- var __defProp = Object.defineProperty;
2
- var __export = (target, all) => {
3
- for (var name in all)
4
- __defProp(target, name, { get: all[name], enumerable: true });
5
- };
6
-
7
- // src/enum.ts
8
- var FETCH_TYPE_ARRAY = ["jump", "sinceId", "page", "seenIds", "auto"];
9
- var enum_default = {
10
- SETTER_TYPE: {
11
- RESET: 0,
12
- MERGE: 1
13
- },
14
- FETCH_TYPE_ARRAY,
15
- FETCH_TYPE: {
16
- PAGINATION: FETCH_TYPE_ARRAY[0],
17
- SINCE_FIRST_OR_END_ID: FETCH_TYPE_ARRAY[1],
18
- SCROLL_LOAD_MORE: FETCH_TYPE_ARRAY[2],
19
- HAS_LOADED_IDS: FETCH_TYPE_ARRAY[3],
20
- AUTO: FETCH_TYPE_ARRAY[4]
21
- },
22
- CHANGE_TYPE: {
23
- SEARCH_FIELD: "search",
24
- RESET_FIELD: "reset",
25
- RESULT_UPDATE_KV: "update",
26
- RESULT_ADD_AFTER: "push",
27
- RESULT_ADD_BEFORE: "unshift",
28
- RESULT_REMOVE_BY_ID: "delete",
29
- RESULT_INSERT_TO_BEFORE: "insert-before",
30
- RESULT_INSERT_TO_AFTER: "insert-after",
31
- RESULT_LIST_MERGE: "patch",
32
- RESULT_ITEM_MERGE: "merge"
33
- },
34
- FIELD_DATA: {
35
- RESULT_KEY: "result",
36
- EXTRA_KEY: "extra"
37
- },
38
- DEFAULT_UNIQUE_KEY_NAME: "id"
39
- };
40
-
41
- // src/utils.ts
42
- var utils_exports = {};
43
- __export(utils_exports, {
44
- combineArrayData: () => combineArrayData,
45
- computeMatchedItemIndex: () => computeMatchedItemIndex,
46
- computeResultLength: () => computeResultLength,
47
- generateDefaultField: () => generateDefaultField,
48
- generateFieldName: () => generateFieldName,
49
- generateRequestParams: () => generateRequestParams,
50
- getObjectDeepValue: () => getObjectDeepValue,
51
- getResultAsArray: () => getResultAsArray,
52
- isArray: () => isArray,
53
- isKeyMap: () => isKeyMap,
54
- isKeyMapArray: () => isKeyMapArray,
55
- isObjectKey: () => isObjectKey,
56
- isObjectKeyArray: () => isObjectKeyArray,
57
- isObjectResult: () => isObjectResult,
58
- isResultObject: () => isResultObject,
59
- searchValueByKey: () => searchValueByKey,
60
- setReactivityField: () => setReactivityField,
61
- stableSerialize: () => stableSerialize,
62
- toObjectKey: () => toObjectKey,
63
- updateArrayItem: () => updateArrayItem,
64
- updateObjectDeepValue: () => updateObjectDeepValue
65
- });
66
- var isArray = (data) => Array.isArray(data);
67
- var isResultObject = (data) => !isArray(data) && typeof data === "object" && data !== null;
68
- var isObjectKey = (value) => typeof value === "string" || typeof value === "number";
69
- var isKeyMap = (value) => typeof value === "object" && value !== null && !isArray(value);
70
- var isKeyMapArray = (value) => {
71
- if (!isArray(value)) return false;
72
- const len = value.length;
73
- for (let i = 0; i < len; i++) {
74
- const item = value[i];
75
- if (typeof item !== "object" || item === null) {
76
- return false;
77
- }
78
- }
79
- return true;
80
- };
81
- var isObjectKeyArray = (value) => {
82
- if (!isArray(value)) return false;
83
- const len = value.length;
84
- for (let i = 0; i < len; i++) {
85
- const item = value[i];
86
- const itemType = typeof item;
87
- if (itemType !== "string" && itemType !== "number") {
88
- return false;
89
- }
90
- }
91
- return true;
92
- };
93
- var stableSerialize = (value) => {
94
- if (value === null || typeof value !== "object") {
95
- return String(value);
96
- }
97
- try {
98
- if (isArray(value)) {
99
- return JSON.stringify(value);
100
- }
101
- if (isKeyMap(value)) {
102
- const keys = Object.keys(value).sort();
103
- const obj = {};
104
- const len = keys.length;
105
- for (let i = 0; i < len; i++) {
106
- const k = keys[i];
107
- obj[k] = value[k];
108
- }
109
- return JSON.stringify(obj);
110
- }
111
- return "[Unsupported Object]";
112
- } catch {
113
- return "[Circular Object/Value]";
114
- }
115
- };
116
- var extractUniqueKey = (item, uniqueKey) => {
117
- if (!isKeyMap(item)) return void 0;
118
- const val = item[uniqueKey];
119
- if (isObjectKey(val)) {
120
- return val;
121
- }
122
- if (uniqueKey.includes(".")) {
123
- const deepVal = getObjectDeepValue(item, uniqueKey);
124
- if (isObjectKey(deepVal)) {
125
- return deepVal;
126
- }
127
- }
128
- return void 0;
129
- };
130
- var isObjectResult = (data) => {
131
- if (typeof data !== "object" || data === null) {
132
- return false;
133
- }
134
- return !Object.prototype.hasOwnProperty.call(data, "result");
135
- };
136
- var generateDefaultField = (opts = {}) => ({
137
- result: [],
138
- // 默认为空数组,但强制转换为泛型 T
139
- noMore: false,
140
- nothing: false,
141
- loading: false,
142
- error: null,
143
- extra: null,
144
- fetched: false,
145
- page: 0,
146
- total: 0,
147
- ...opts
148
- });
149
- var generateFieldName = ({
150
- func,
151
- query
152
- }) => {
153
- if (!query) {
154
- return func.id;
155
- }
156
- let result = func.id;
157
- const keys = Object.keys(query);
158
- const paramsIgnore = func.paramsIgnore;
159
- const filteredKeys = [];
160
- const keysLen = keys.length;
161
- for (let i = 0; i < keysLen; i++) {
162
- const key = keys[i];
163
- if (!paramsIgnore.includes(key)) {
164
- filteredKeys.push(key);
165
- }
166
- }
167
- filteredKeys.sort();
168
- const len = filteredKeys.length;
169
- for (let i = 0; i < len; i++) {
170
- const key = filteredKeys[i];
171
- const value = query[key];
172
- let safeValue;
173
- if (typeof value === "object" && value !== null) {
174
- safeValue = stableSerialize(value);
175
- } else {
176
- safeValue = String(value);
177
- }
178
- const encoded = encodeURIComponent(safeValue);
179
- result += `-${key}-${encoded}`;
180
- }
181
- return result;
182
- };
183
- var getObjectDeepValue = (field, keys) => {
184
- if (!keys || Array.isArray(keys) && keys.length === 0)
185
- return field;
186
- const keysArr = Array.isArray(keys) ? keys : keys.split(".");
187
- let cur = field;
188
- for (let i = 0, n = keysArr.length; i < n; ++i) {
189
- if (cur == null || typeof cur !== "object") return void 0;
190
- cur = cur[keysArr[i]];
191
- }
192
- return cur;
193
- };
194
- var updateObjectDeepValue = (field, changeKey, value) => {
195
- if (!changeKey) return;
196
- const keys = changeKey.split(".");
197
- const lastKey = keys.pop();
198
- if (!lastKey) return;
199
- let current = field;
200
- const len = keys.length;
201
- for (let i = 0; i < len; i++) {
202
- const key = keys[i];
203
- const currentVal = current[key];
204
- if (currentVal == null || typeof currentVal !== "object") {
205
- current[key] = {};
206
- }
207
- const next = current[key];
208
- if (isKeyMap(next)) {
209
- current = next;
210
- } else {
211
- return;
212
- }
213
- }
214
- if (current != null && typeof current === "object") {
215
- current[lastKey] = value;
216
- }
217
- };
218
- var searchValueByKey = (result, id, key) => {
219
- if (isArray(result)) {
220
- const index = computeMatchedItemIndex(id, result, key);
221
- return index >= 0 ? result[index] : void 0;
222
- }
223
- if (isResultObject(result)) {
224
- return result[String(id)];
225
- }
226
- return void 0;
227
- };
228
- var computeMatchedItemIndex = (itemId, fieldArr, changingKey) => {
229
- const stringifiedItemId = String(itemId);
230
- const len = fieldArr.length;
231
- const isSimpleKey = !changingKey.includes(".");
232
- if (isSimpleKey) {
233
- for (let i = 0; i < len; i++) {
234
- const item = fieldArr[i];
235
- if (!isKeyMap(item)) continue;
236
- if (String(item[changingKey]) === stringifiedItemId) {
237
- return i;
238
- }
239
- }
240
- } else {
241
- for (let i = 0; i < len; i++) {
242
- const item = fieldArr[i];
243
- if (!isKeyMap(item)) continue;
244
- const itemValue = getObjectDeepValue(item, changingKey);
245
- if (String(itemValue) === stringifiedItemId) {
246
- return i;
247
- }
248
- }
249
- }
250
- return -1;
251
- };
252
- var combineArrayData = (fieldArray, value, changingKey) => {
253
- const fieldArrayMap = /* @__PURE__ */ new Map();
254
- const arrLen = fieldArray.length;
255
- for (let i = 0; i < arrLen; i++) {
256
- const item = fieldArray[i];
257
- if (!isKeyMap(item)) continue;
258
- const id = getObjectDeepValue(item, changingKey);
259
- if (id !== void 0) {
260
- fieldArrayMap.set(String(id), i);
261
- }
262
- }
263
- if (isArray(value)) {
264
- const valLen = value.length;
265
- for (let i = 0; i < valLen; i++) {
266
- const col = value[i];
267
- if (!isKeyMap(col)) continue;
268
- const stringifyId = String(getObjectDeepValue(col, changingKey));
269
- const index = fieldArrayMap.get(stringifyId);
270
- if (index !== void 0) {
271
- const existingItem = fieldArray[index];
272
- if (isKeyMap(existingItem)) {
273
- fieldArray[index] = { ...existingItem, ...col };
274
- }
275
- }
276
- }
277
- } else if (isKeyMap(value)) {
278
- const entries = Object.entries(value);
279
- const entLen = entries.length;
280
- for (let i = 0; i < entLen; i++) {
281
- const [uniqueId, col] = entries[i];
282
- if (!isKeyMap(col)) continue;
283
- const index = fieldArrayMap.get(uniqueId);
284
- if (index !== void 0) {
285
- const existingItem = fieldArray[index];
286
- if (isKeyMap(existingItem)) {
287
- fieldArray[index] = { ...existingItem, ...col };
288
- }
289
- }
290
- }
291
- }
292
- };
293
- var setReactivityField = (field, key, value, type, insertBefore) => {
294
- const fieldAny = field;
295
- if (type === enum_default.FETCH_TYPE.PAGINATION) {
296
- fieldAny[key] = value;
297
- return;
298
- }
299
- if (key !== enum_default.FIELD_DATA.RESULT_KEY) {
300
- if (isArray(value)) {
301
- const current = fieldAny[key];
302
- const currentArr = isArray(current) ? current : [];
303
- fieldAny[key] = insertBefore ? value.concat(currentArr) : currentArr.concat(value);
304
- } else {
305
- fieldAny[key] = value;
306
- }
307
- return;
308
- }
309
- const resultField = field.result;
310
- if (isArray(value)) {
311
- const valueArr = value;
312
- const valueLen = valueArr.length;
313
- if (valueLen === 0) return;
314
- const currentArr = isArray(resultField) ? resultField : [];
315
- const currentLen = currentArr.length;
316
- if (currentLen === 0) {
317
- field.result = valueArr;
318
- return;
319
- }
320
- field.result = insertBefore ? valueArr.concat(currentArr) : currentArr.concat(valueArr);
321
- return;
322
- }
323
- const valueObj = value;
324
- let target = resultField;
325
- if (isArray(resultField) || typeof resultField !== "object" || resultField === null) {
326
- target = {};
327
- field.result = target;
328
- }
329
- const keys = Object.keys(valueObj);
330
- const len = keys.length;
331
- for (let i = 0; i < len; i++) {
332
- const subKey = keys[i];
333
- const existing = target[subKey];
334
- const incoming = valueObj[subKey];
335
- if (existing !== void 0) {
336
- if (isArray(existing) && isArray(incoming)) {
337
- target[subKey] = insertBefore ? incoming.concat(existing) : existing.concat(incoming);
338
- } else {
339
- target[subKey] = incoming;
340
- }
341
- } else {
342
- target[subKey] = incoming;
343
- }
344
- }
345
- };
346
- var computeResultLength = (data) => {
347
- if (isArray(data)) {
348
- return data.length;
349
- }
350
- if (isKeyMap(data)) {
351
- let acc = 0;
352
- const values = Object.values(data);
353
- const len = values.length;
354
- for (let i = 0; i < len; i++) {
355
- const val = values[i];
356
- if (isArray(val)) {
357
- acc += val.length;
358
- }
359
- }
360
- return acc;
361
- }
362
- return 0;
363
- };
364
- var getSeenIdsString = (arr, uniqueKey) => {
365
- if (!isArray(arr)) return "";
366
- const ids = [];
367
- const len = arr.length;
368
- for (let i = 0; i < len; i++) {
369
- const id = extractUniqueKey(arr[i], uniqueKey);
370
- if (id !== void 0) {
371
- ids.push(id);
372
- }
373
- }
374
- return ids.join(",");
375
- };
376
- var generateRequestParams = ({
377
- field,
378
- uniqueKey = enum_default.DEFAULT_UNIQUE_KEY_NAME,
379
- query = {},
380
- is_up = false,
381
- type
382
- }) => {
383
- const result = { ...query };
384
- const isFetched = field.fetched;
385
- const fieldResultAny = field.result;
386
- const getSafeObjectKey = (item) => {
387
- return extractUniqueKey(item, uniqueKey);
388
- };
389
- if (isFetched) {
390
- if (type === enum_default.FETCH_TYPE.AUTO) {
391
- if (isArray(fieldResultAny)) {
392
- result.seen_ids = getSeenIdsString(fieldResultAny, uniqueKey);
393
- const targetIndex = is_up ? 0 : fieldResultAny.length - 1;
394
- const targetItem = fieldResultAny[targetIndex];
395
- result.since_id = getSafeObjectKey(targetItem);
396
- }
397
- result.is_up = is_up ? 1 : 0;
398
- result.page = typeof query.page === "number" ? query.page : field.page + 1;
399
- } else if (type === enum_default.FETCH_TYPE.HAS_LOADED_IDS) {
400
- if (isArray(fieldResultAny)) {
401
- result.seen_ids = getSeenIdsString(fieldResultAny, uniqueKey);
402
- }
403
- } else if (type === enum_default.FETCH_TYPE.SINCE_FIRST_OR_END_ID) {
404
- if (isArray(fieldResultAny)) {
405
- const targetIndex = is_up ? 0 : fieldResultAny.length - 1;
406
- const targetItem = fieldResultAny[targetIndex];
407
- result.since_id = getSafeObjectKey(targetItem);
408
- }
409
- result.is_up = is_up ? 1 : 0;
410
- } else if (type === enum_default.FETCH_TYPE.PAGINATION) {
411
- result.page = typeof query.page === "number" ? query.page : void 0;
412
- } else if (type === enum_default.FETCH_TYPE.SCROLL_LOAD_MORE) {
413
- result.page = field.page + 1;
414
- }
415
- } else {
416
- if (type === enum_default.FETCH_TYPE.AUTO) {
417
- result.seen_ids = "";
418
- result.since_id = isObjectKey(query.sinceId) ? query.sinceId : "";
419
- result.is_up = is_up ? 1 : 0;
420
- result.page = typeof query.page === "number" ? query.page : field.page || 1;
421
- } else if (type === enum_default.FETCH_TYPE.HAS_LOADED_IDS) {
422
- result.seen_ids = "";
423
- } else if (type === enum_default.FETCH_TYPE.SINCE_FIRST_OR_END_ID) {
424
- result.since_id = isObjectKey(query.sinceId) ? query.sinceId : "";
425
- result.is_up = is_up ? 1 : 0;
426
- } else if (type === enum_default.FETCH_TYPE.PAGINATION) {
427
- result.page = typeof query.page === "number" ? query.page : field.page;
428
- } else if (type === enum_default.FETCH_TYPE.SCROLL_LOAD_MORE) {
429
- result.page = 1;
430
- }
431
- }
432
- return result;
433
- };
434
- var toObjectKey = (id) => {
435
- if (id === void 0) return void 0;
436
- if (isObjectKey(id)) return id;
437
- if (isObjectKeyArray(id) && id.length > 0) return id[0];
438
- return void 0;
439
- };
440
- var getResultAsArray = (field) => {
441
- const result = field[enum_default.FIELD_DATA.RESULT_KEY];
442
- return isArray(result) ? result : null;
443
- };
444
- var updateArrayItem = (arr, index, updater) => {
445
- if (index >= 0 && index < arr.length) {
446
- const item = arr[index];
447
- if (isKeyMap(item)) {
448
- arr[index] = updater(item);
449
- }
450
- }
451
- };
452
-
453
- // src/setters.ts
454
- var SET_DATA = ({
455
- getter,
456
- setter,
457
- data,
458
- fieldName,
459
- type,
460
- page,
461
- insertBefore
462
- }) => {
463
- return new Promise((resolve, reject) => {
464
- const fieldData = getter(fieldName);
465
- if (!fieldData) {
466
- reject(new Error(`Field ${fieldName} not found.`));
467
- return;
468
- }
469
- const field = fieldData;
470
- let result;
471
- let extra;
472
- if (isObjectResult(data)) {
473
- result = data;
474
- field.nothing = false;
475
- field.fetched = true;
476
- field.noMore = true;
477
- field.page = -1;
478
- } else {
479
- const apiResponse = data;
480
- result = apiResponse.result;
481
- extra = apiResponse.extra;
482
- const isEmpty = computeResultLength(result) === 0;
483
- field.nothing = field.fetched ? false : isEmpty;
484
- field.fetched = true;
485
- field.total = apiResponse.total || 0;
486
- if (type === enum_default.FETCH_TYPE.PAGINATION) {
487
- field.noMore = false;
488
- field.page = +page;
489
- } else {
490
- field.noMore = typeof apiResponse.no_more === "undefined" ? isEmpty : apiResponse.no_more || isEmpty;
491
- field.page = field.page + 1;
492
- }
493
- }
494
- field.loading = false;
495
- setReactivityField(
496
- field,
497
- enum_default.FIELD_DATA.RESULT_KEY,
498
- result,
499
- type,
500
- insertBefore
501
- );
502
- if (extra !== void 0 && extra !== null) {
503
- setReactivityField(
504
- field,
505
- enum_default.FIELD_DATA.EXTRA_KEY,
506
- extra,
507
- type,
508
- insertBefore
509
- );
510
- }
511
- setter({
512
- key: fieldName,
513
- type: enum_default.SETTER_TYPE.RESET,
514
- value: field,
515
- callback: () => {
516
- resolve();
517
- }
518
- });
519
- });
520
- };
521
- var SET_ERROR = ({ setter, fieldName, error }) => {
522
- setter({
523
- key: fieldName,
524
- type: enum_default.SETTER_TYPE.MERGE,
525
- value: {
526
- error,
527
- loading: false
528
- }
529
- });
530
- };
531
-
532
- // src/actions.ts
533
- var generateFieldName2 = ({
534
- func,
535
- query
536
- }) => {
537
- let result = func.id;
538
- if (!query) return result;
539
- const queryObj = query;
540
- const filteredKeys = Object.keys(queryObj).filter((key) => !func.paramsIgnore.includes(key)).sort();
541
- for (const key of filteredKeys) {
542
- const value = queryObj[key];
543
- const safeValue = typeof value === "object" && value !== null ? stableSerialize(value) : String(value);
544
- result += `-${key}-${encodeURIComponent(safeValue)}`;
545
- }
546
- return result;
547
- };
548
- var createApi = (options) => {
549
- const fn = ((params) => options.fetcher(params));
550
- const metadata = {
551
- id: options.id,
552
- type: options.type || enum_default.FETCH_TYPE.SCROLL_LOAD_MORE,
553
- uniqueKey: options.uniqueKey || enum_default.DEFAULT_UNIQUE_KEY_NAME,
554
- is_up: options.is_up || false,
555
- paramsIgnore: [
556
- "page",
557
- "since_id",
558
- "seen_ids",
559
- "__refresh__",
560
- "__reload__",
561
- ...options.paramsIgnore || []
562
- ]
563
- };
564
- return Object.freeze(Object.assign(fn, metadata));
565
- };
566
- var initState = ({
567
- getter,
568
- setter,
569
- func,
570
- query,
571
- opts
572
- }) => {
573
- return new Promise((resolve) => {
574
- const fieldName = generateFieldName2({ func, query });
575
- if (getter(fieldName)) return resolve();
576
- setter({
577
- key: fieldName,
578
- type: enum_default.SETTER_TYPE.RESET,
579
- value: generateDefaultField(opts),
580
- callback: () => resolve()
581
- });
582
- });
583
- };
584
- var initData = ({
585
- getter,
586
- setter,
587
- func,
588
- query,
589
- callback
590
- }) => new Promise((resolve, reject) => {
591
- const fieldName = generateFieldName2({ func, query });
592
- const fieldData = getter(fieldName);
593
- const doRefresh = !!query?.__refresh__;
594
- const needReset = !!query?.__reload__;
595
- const directlyLoadData = doRefresh && !needReset;
596
- if (fieldData && fieldData.error && !doRefresh) return resolve();
597
- if (fieldData && fieldData.loading) return resolve();
598
- if (fieldData && fieldData.fetched && !doRefresh) return resolve();
599
- const params = generateRequestParams({
600
- field: generateDefaultField({ ...fieldData, fetched: false }),
601
- uniqueKey: func.uniqueKey,
602
- type: func.type,
603
- is_up: func.is_up,
604
- query
605
- });
606
- const executeFetch = () => {
607
- func(params).then((data) => {
608
- const commitData = () => {
609
- SET_DATA({
610
- getter,
611
- setter,
612
- data,
613
- fieldName,
614
- type: func.type,
615
- page: params.page || 0,
616
- insertBefore: false
617
- }).then(() => {
618
- callback?.({ params, data, refresh: doRefresh });
619
- resolve();
620
- });
621
- };
622
- if (directlyLoadData) {
623
- setter({
624
- key: fieldName,
625
- type: enum_default.SETTER_TYPE.RESET,
626
- value: generateDefaultField(),
627
- callback: commitData
628
- });
629
- } else {
630
- commitData();
631
- }
632
- }).catch((error) => {
633
- SET_ERROR({ setter, fieldName, error });
634
- reject(error);
635
- });
636
- };
637
- if (directlyLoadData) {
638
- executeFetch();
639
- } else {
640
- setter({
641
- key: fieldName,
642
- type: enum_default.SETTER_TYPE.RESET,
643
- value: { ...generateDefaultField(), loading: true, error: null },
644
- callback: executeFetch
645
- });
646
- }
647
- });
648
- var loadMore = ({
649
- getter,
650
- setter,
651
- query,
652
- func,
653
- errorRetry,
654
- callback
655
- }) => new Promise((resolve, reject) => {
656
- const fieldName = generateFieldName2({ func, query });
657
- const fieldData = getter(fieldName);
658
- if (!fieldData || fieldData.loading || fieldData.nothing) return resolve();
659
- if (fieldData.noMore && !errorRetry) return resolve();
660
- const type = func.type;
661
- if (type === enum_default.FETCH_TYPE.PAGINATION && query?.page != null && Number(query.page) === fieldData.page) {
662
- return resolve();
663
- }
664
- const loadingState = type === enum_default.FETCH_TYPE.PAGINATION ? { loading: true, error: null, result: [], extra: null } : { loading: true, error: null };
665
- const params = generateRequestParams({
666
- field: fieldData,
667
- uniqueKey: func.uniqueKey,
668
- type,
669
- is_up: func.is_up,
670
- query
671
- });
672
- if (fieldData.extra) params.extra = fieldData.extra;
673
- setter({
674
- key: fieldName,
675
- type: enum_default.SETTER_TYPE.MERGE,
676
- value: loadingState,
677
- callback: () => {
678
- func(params).then((data) => {
679
- SET_DATA({
680
- getter,
681
- setter,
682
- data,
683
- type,
684
- fieldName,
685
- page: params.page || 0,
686
- insertBefore: func.is_up
687
- }).then(() => {
688
- callback?.({ params, data, refresh: false });
689
- resolve();
690
- });
691
- }).catch((error) => {
692
- SET_ERROR({ setter, fieldName, error });
693
- reject(error);
694
- });
695
- }
696
- });
697
- });
698
- var updateState = ({
699
- getter,
700
- setter,
701
- func,
702
- query,
703
- method,
704
- id,
705
- value,
706
- changeKey
707
- }) => {
708
- return new Promise((resolve, reject) => {
709
- const fieldName = generateFieldName2({ func, query });
710
- const fieldData = getter(fieldName);
711
- if (!fieldData) {
712
- reject(new Error(`Field ${fieldName} not found.`));
713
- return;
714
- }
715
- if (fieldData.page === -1) {
716
- resolve(null);
717
- return;
718
- }
719
- const _id = id;
720
- const _uniqueKey = func.uniqueKey || enum_default.DEFAULT_UNIQUE_KEY_NAME;
721
- const _changeKey = changeKey || enum_default.FIELD_DATA.RESULT_KEY;
722
- const beforeLength = computeResultLength(
723
- fieldData[enum_default.FIELD_DATA.RESULT_KEY]
724
- );
725
- const newFieldData = { ...fieldData };
726
- let resultArray = getResultAsArray(fieldData);
727
- if (resultArray) {
728
- resultArray = [...resultArray];
729
- newFieldData.result = resultArray;
730
- }
731
- if (method === enum_default.CHANGE_TYPE.SEARCH_FIELD) {
732
- const objectKeyId = toObjectKey(_id);
733
- if (objectKeyId === void 0) {
734
- reject(new Error("ID is required for SEARCH_FIELD."));
735
- return;
736
- }
737
- const searchResult = resultArray ? searchValueByKey(resultArray, objectKeyId, _uniqueKey) : void 0;
738
- resolve(searchResult);
739
- return;
740
- } else if (method === enum_default.CHANGE_TYPE.RESULT_UPDATE_KV) {
741
- const objectKeyId = toObjectKey(_id);
742
- if (objectKeyId === void 0) {
743
- reject(new Error("ID is required for RESULT_UPDATE_KV."));
744
- return;
745
- }
746
- if (resultArray) {
747
- const matchedIndex = computeMatchedItemIndex(
748
- objectKeyId,
749
- resultArray,
750
- _uniqueKey
751
- );
752
- if (matchedIndex >= 0 && isKeyMap(resultArray[matchedIndex])) {
753
- const newItem = { ...resultArray[matchedIndex] };
754
- updateObjectDeepValue(newItem, _changeKey, value);
755
- resultArray[matchedIndex] = newItem;
756
- }
757
- }
758
- resolve(null);
759
- } else if (method === enum_default.CHANGE_TYPE.RESULT_ITEM_MERGE) {
760
- const objectKeyId = toObjectKey(_id);
761
- if (objectKeyId === void 0) {
762
- reject(new Error("ID is required for RESULT_ITEM_MERGE."));
763
- return;
764
- }
765
- if (resultArray && isKeyMap(value)) {
766
- const matchedIndex = computeMatchedItemIndex(
767
- objectKeyId,
768
- resultArray,
769
- _uniqueKey
770
- );
771
- updateArrayItem(resultArray, matchedIndex, (item) => ({
772
- ...item,
773
- ...value
774
- }));
775
- }
776
- resolve(null);
777
- } else if (method === enum_default.CHANGE_TYPE.RESET_FIELD) {
778
- if (_changeKey === enum_default.FIELD_DATA.RESULT_KEY && isKeyMapArray(value)) {
779
- newFieldData.result = value;
780
- } else if (_changeKey === enum_default.FIELD_DATA.EXTRA_KEY && isKeyMap(value)) {
781
- newFieldData.extra = value;
782
- }
783
- resolve(null);
784
- } else {
785
- let modifyValue;
786
- if (_changeKey === enum_default.FIELD_DATA.RESULT_KEY) {
787
- modifyValue = resultArray || newFieldData.result;
788
- } else if (_changeKey === enum_default.FIELD_DATA.EXTRA_KEY) {
789
- modifyValue = newFieldData.extra;
790
- } else {
791
- modifyValue = getObjectDeepValue(newFieldData, _changeKey);
792
- }
793
- if (modifyValue == null) {
794
- modifyValue = [];
795
- }
796
- const objectKeyId = toObjectKey(_id);
797
- const matchedIndex = objectKeyId !== void 0 && isKeyMapArray(modifyValue) ? computeMatchedItemIndex(objectKeyId, modifyValue, _uniqueKey) : -1;
798
- switch (method) {
799
- case enum_default.CHANGE_TYPE.RESULT_ADD_AFTER:
800
- if (isArray(modifyValue)) {
801
- modifyValue = isArray(value) ? [...modifyValue, ...value] : [...modifyValue, value];
802
- }
803
- break;
804
- case enum_default.CHANGE_TYPE.RESULT_ADD_BEFORE:
805
- if (isArray(modifyValue)) {
806
- modifyValue = isArray(value) ? [...value, ...modifyValue] : [value, ...modifyValue];
807
- }
808
- break;
809
- case enum_default.CHANGE_TYPE.RESULT_REMOVE_BY_ID:
810
- if (isKeyMapArray(modifyValue)) {
811
- if (matchedIndex >= 0) {
812
- const newArray = [...modifyValue];
813
- newArray.splice(matchedIndex, 1);
814
- modifyValue = newArray;
815
- } else if (isObjectKeyArray(_id)) {
816
- const idSet = new Set(_id);
817
- modifyValue = modifyValue.filter((item) => {
818
- const itemKey = getObjectDeepValue(item, _uniqueKey);
819
- return !isObjectKey(itemKey) || !idSet.has(itemKey);
820
- });
821
- }
822
- }
823
- break;
824
- case enum_default.CHANGE_TYPE.RESULT_INSERT_TO_BEFORE:
825
- if (isArray(modifyValue) && matchedIndex >= 0) {
826
- const newArray = [...modifyValue];
827
- newArray.splice(matchedIndex, 0, value);
828
- modifyValue = newArray;
829
- }
830
- break;
831
- case enum_default.CHANGE_TYPE.RESULT_INSERT_TO_AFTER:
832
- if (isArray(modifyValue) && matchedIndex >= 0) {
833
- const newArray = [...modifyValue];
834
- newArray.splice(matchedIndex + 1, 0, value);
835
- modifyValue = newArray;
836
- }
837
- break;
838
- case enum_default.CHANGE_TYPE.RESULT_LIST_MERGE:
839
- if (isKeyMapArray(modifyValue)) {
840
- const newArray = [...modifyValue];
841
- if (isKeyMapArray(value)) {
842
- combineArrayData(newArray, value, _uniqueKey);
843
- } else if (isKeyMap(value)) {
844
- const valueAsRecord = {};
845
- for (const [k, v] of Object.entries(value)) {
846
- if (isKeyMap(v)) {
847
- valueAsRecord[k] = v;
848
- }
849
- }
850
- combineArrayData(newArray, valueAsRecord, _uniqueKey);
851
- }
852
- modifyValue = newArray;
853
- }
854
- break;
855
- default:
856
- resolve(null);
857
- return;
858
- }
859
- if (_changeKey === enum_default.FIELD_DATA.RESULT_KEY && isKeyMapArray(modifyValue)) {
860
- newFieldData.result = modifyValue;
861
- } else if (_changeKey === enum_default.FIELD_DATA.EXTRA_KEY && isKeyMap(modifyValue)) {
862
- newFieldData.extra = modifyValue;
863
- }
864
- resolve(null);
865
- }
866
- const afterLength = computeResultLength(
867
- newFieldData[enum_default.FIELD_DATA.RESULT_KEY]
868
- );
869
- newFieldData.total = newFieldData.total + afterLength - beforeLength;
870
- newFieldData.nothing = afterLength === 0;
871
- setter({
872
- key: fieldName,
873
- type: enum_default.SETTER_TYPE.RESET,
874
- value: newFieldData,
875
- callback: () => {
876
- resolve(null);
877
- }
878
- });
879
- });
880
- };
881
-
882
- export { enum_default as ENUM, createApi, generateFieldName2 as generateFieldName, initData, initState, loadMore, updateState, utils_exports as utils };
1
+ import './chunk-KIQOUUEZ.mjs';
2
+ export { createUpdateState, updateState } from './chunk-BTOUHSDU.mjs';
3
+ export { createApi, generateFieldName, initData, initState, loadMore } from './chunk-LF6DOBID.mjs';
4
+ export { coreMutations } from './chunk-C4BWSFWU.mjs';
5
+ export { extendedMutations } from './chunk-6WOZNOYJ.mjs';
6
+ import './chunk-OKKMFSGF.mjs';
7
+ export { constants_default as ENUM } from './chunk-PP7QTJDR.mjs';
883
8
  //# sourceMappingURL=index.mjs.map
884
9
  //# sourceMappingURL=index.mjs.map