state-decorator 7.0.0-beta.8-dev → 7.0.0-rc1

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 (56) hide show
  1. package/README.md +42 -11
  2. package/development.d.ts +24 -0
  3. package/development.js +2 -0
  4. package/development.js.map +1 -0
  5. package/es/development.d.ts +24 -0
  6. package/es/development.js +2 -0
  7. package/es/development.js.map +1 -0
  8. package/es/graph.d.ts +8 -0
  9. package/es/helpers.js +1 -162
  10. package/es/helpers.js.map +1 -1
  11. package/es/impl.d.ts +20 -18
  12. package/es/impl.js +1 -963
  13. package/es/impl.js.map +1 -1
  14. package/es/index.d.ts +6 -9
  15. package/es/index.js +1 -1013
  16. package/es/index.js.map +1 -1
  17. package/es/middlewares.d.ts +0 -9
  18. package/es/middlewares.js +1 -519
  19. package/es/middlewares.js.map +1 -1
  20. package/es/test.d.ts +7 -7
  21. package/es/test.js +1 -349
  22. package/es/test.js.map +1 -1
  23. package/es/types.d.ts +70 -58
  24. package/es/v5.js +1 -301
  25. package/es/v5.js.map +1 -1
  26. package/es/v5_test.js +1 -392
  27. package/es/v5_test.js.map +1 -1
  28. package/es/v5_types.d.ts +15 -15
  29. package/es/v6.d.ts +7 -4
  30. package/es/v6.js +1 -96
  31. package/es/v6.js.map +1 -1
  32. package/graph.d.ts +8 -0
  33. package/helpers.js +1 -174
  34. package/helpers.js.map +1 -1
  35. package/impl.d.ts +20 -18
  36. package/impl.js +1 -996
  37. package/impl.js.map +1 -1
  38. package/index.d.ts +6 -9
  39. package/index.js +1 -1044
  40. package/index.js.map +1 -1
  41. package/middlewares.d.ts +0 -9
  42. package/middlewares.js +1 -526
  43. package/middlewares.js.map +1 -1
  44. package/package.json +1 -1
  45. package/test.d.ts +7 -7
  46. package/test.js +1 -358
  47. package/test.js.map +1 -1
  48. package/types.d.ts +70 -58
  49. package/v5.js +1 -322
  50. package/v5.js.map +1 -1
  51. package/v5_test.js +1 -416
  52. package/v5_test.js.map +1 -1
  53. package/v5_types.d.ts +15 -15
  54. package/v6.d.ts +7 -4
  55. package/v6.js +1 -120
  56. package/v6.js.map +1 -1
package/impl.js CHANGED
@@ -1,997 +1,2 @@
1
- 'use strict';
2
-
3
- Object.defineProperty(exports, '__esModule', { value: true });
4
-
5
- /*! *****************************************************************************
6
- Copyright (c) Microsoft Corporation.
7
-
8
- Permission to use, copy, modify, and/or distribute this software for any
9
- purpose with or without fee is hereby granted.
10
-
11
- THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
12
- REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
13
- AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
14
- INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
15
- LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
16
- OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
17
- PERFORMANCE OF THIS SOFTWARE.
18
- ***************************************************************************** */
19
- /* global Reflect, Promise */
20
-
21
- var extendStatics = function(d, b) {
22
- extendStatics = Object.setPrototypeOf ||
23
- ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
24
- function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
25
- return extendStatics(d, b);
26
- };
27
-
28
- function __extends(d, b) {
29
- if (typeof b !== "function" && b !== null)
30
- throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
31
- extendStatics(d, b);
32
- function __() { this.constructor = d; }
33
- d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
34
- }
35
-
36
- var __assign = function() {
37
- __assign = Object.assign || function __assign(t) {
38
- for (var s, i = 1, n = arguments.length; i < n; i++) {
39
- s = arguments[i];
40
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
41
- }
42
- return t;
43
- };
44
- return __assign.apply(this, arguments);
45
- };
46
-
47
- function __awaiter(thisArg, _arguments, P, generator) {
48
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
49
- return new (P || (P = Promise))(function (resolve, reject) {
50
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
51
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
52
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
53
- step((generator = generator.apply(thisArg, _arguments || [])).next());
54
- });
55
- }
56
-
57
- function __generator(thisArg, body) {
58
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
59
- return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
60
- function verb(n) { return function (v) { return step([n, v]); }; }
61
- function step(op) {
62
- if (f) throw new TypeError("Generator is already executing.");
63
- while (_) try {
64
- if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
65
- if (y = 0, t) op = [op[0] & 2, t.value];
66
- switch (op[0]) {
67
- case 0: case 1: t = op; break;
68
- case 4: _.label++; return { value: op[1], done: false };
69
- case 5: _.label++; y = op[1]; op = [0]; continue;
70
- case 7: op = _.ops.pop(); _.trys.pop(); continue;
71
- default:
72
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
73
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
74
- if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
75
- if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
76
- if (t[2]) _.ops.pop();
77
- _.trys.pop(); continue;
78
- }
79
- op = body.call(thisArg, _);
80
- } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
81
- if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
82
- }
83
- }
84
-
85
- function __spreadArray(to, from, pack) {
86
- if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
87
- if (ar || !(i in from)) {
88
- if (!ar) ar = Array.prototype.slice.call(from, 0, i);
89
- ar[i] = from[i];
90
- }
91
- }
92
- return to.concat(ar || Array.prototype.slice.call(from));
93
- }
94
-
95
- /*! *****************************************************************************
96
- Copyright (c) GlobalSport SAS.
97
-
98
- Permission to use, copy, modify, and/or distribute this software for any
99
- purpose with or without fee is hereby granted.
100
-
101
- THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
102
- REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
103
- AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
104
- INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
105
- LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
106
- OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
107
- PERFORMANCE OF THIS SOFTWARE.
108
- ***************************************************************************** */
109
- // @ts-nocheck
110
- // SOURCE https://github.com/pmndrs/zustand/blob/master/src/shallow.ts
111
- function shallow(objA, objB) {
112
- if (Object.is(objA, objB)) {
113
- return true;
114
- }
115
- if (typeof objA !== 'object' || objA === null || typeof objB !== 'object' || objB === null) {
116
- return false;
117
- }
118
- if (objA instanceof Set || objB instanceof Set) {
119
- // if they are equal, first condition is true
120
- return false;
121
- }
122
- var keysA = Object.keys(objA);
123
- var keysB = Object.keys(objB);
124
- if (keysA.length !== keysB.length) {
125
- return false;
126
- }
127
- for (var i = 0; i < keysA.length; i++) {
128
- if (!Object.prototype.hasOwnProperty.call(objB, keysA[i]) ||
129
- !Object.is(objA[keysA[i]], objB[keysA[i]])) {
130
- return false;
131
- }
132
- }
133
- return true;
134
- }
135
-
136
- /*! *****************************************************************************
137
- Copyright (c) GlobalSport SAS.
138
-
139
- Permission to use, copy, modify, and/or distribute this software for any
140
- purpose with or without fee is hereby granted.
141
-
142
- THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
143
- REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
144
- AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
145
- INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
146
- LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
147
- OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
148
- PERFORMANCE OF THIS SOFTWARE.
149
- ***************************************************************************** */
150
- /**
151
- * The State decorator can manage only one asynchronous action of same name at a time.
152
- * This enum is enumertaing all the policies in such case.
153
- */
154
- var ConflictPolicy;
155
- (function (ConflictPolicy) {
156
- /**
157
- * Reject the promise.
158
- */
159
- ConflictPolicy["REJECT"] = "reject";
160
- /**
161
- * Return a resolved promise with no result.
162
- */
163
- ConflictPolicy["IGNORE"] = "ignore";
164
- /**
165
- * Execute only the last call that conflicts after the one ongoing.
166
- */
167
- ConflictPolicy["KEEP_LAST"] = "keepLast";
168
- /**
169
- * Execute all calls one after another.
170
- */
171
- ConflictPolicy["KEEP_ALL"] = "keepAll";
172
- /**
173
- * Execute all calls one after another.
174
- * @see getPromiseId
175
- */
176
- ConflictPolicy["PARALLEL"] = "parallel";
177
- /**
178
- * Reuse the ongoing promise if any and if possible (same arguments). Only for GET requests!
179
- */
180
- ConflictPolicy["REUSE"] = "reuse";
181
- })(ConflictPolicy || (ConflictPolicy = {}));
182
-
183
- /*! *****************************************************************************
184
- Copyright (c) GlobalSport SAS.
185
-
186
- Permission to use, copy, modify, and/or distribute this software for any
187
- purpose with or without fee is hereby granted.
188
-
189
- THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
190
- REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
191
- AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
192
- INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
193
- LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
194
- OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
195
- PERFORMANCE OF THIS SOFTWARE.
196
- ***************************************************************************** */
197
- var EffectError = /** @class */ (function (_super) {
198
- __extends(EffectError, _super);
199
- function EffectError(source, initialError) {
200
- var _this = _super.call(this, source.message) || this;
201
- _this.source = source;
202
- _this.initialError = initialError;
203
- Object.setPrototypeOf(_this, EffectError.prototype);
204
- return _this;
205
- }
206
- return EffectError;
207
- }(Error));
208
- /** @internal */
209
- var globalConfig = {
210
- clone: defaultCloneFunc,
211
- comparator: shallow,
212
- asyncErrorHandler: function () { },
213
- retryOnErrorFunction: function (error) { return error instanceof TypeError; },
214
- notifySuccess: undefined,
215
- notifyError: undefined,
216
- notifyWarning: undefined,
217
- getErrorMessage: undefined,
218
- defaultMiddlewares: [],
219
- };
220
- function setGlobalConfig(overrideConfig) {
221
- var keys = Object.keys(overrideConfig);
222
- keys.forEach(function (k) {
223
- if (overrideConfig[k] != null) {
224
- globalConfig[k] = overrideConfig[k];
225
- }
226
- });
227
- }
228
- function defaultCloneFunc(src) {
229
- return JSON.parse(JSON.stringify(src));
230
- }
231
- function clone(obj) {
232
- try {
233
- return globalConfig.clone(obj);
234
- }
235
- catch (e) {
236
- var msg = 'StateDecorator: Cannot clone object. Set setCloneFunction on global global with another implementation like lodash/cloneDeep.';
237
- if (process.env.NODE_ENV === 'development') {
238
- console.error(msg);
239
- console.error(e.toString());
240
- }
241
- throw new Error(msg);
242
- }
243
- }
244
- // ----------------------------
245
- //
246
- // TYPE GUARDS
247
- //
248
- // -----------------------------
249
- /**
250
- * Type guard function to test if an action is a asynchronous action.
251
- */
252
- function isAsyncAction(action) {
253
- return (!(action instanceof Function) && (action.hasOwnProperty('getPromise') || action.hasOwnProperty('getGetPromise')));
254
- }
255
- /**
256
- * Type guard function to test if an action is a synchronous action.
257
- */
258
- function isSimpleSyncAction(action) {
259
- return typeof action === 'function';
260
- }
261
- /**
262
- * Type guard function to test if an action is a synchronous action.
263
- */
264
- function isSyncAction(action) {
265
- return (typeof action !== 'function' && !action.hasOwnProperty('getPromise') && !action.hasOwnProperty('getGetPromise'));
266
- }
267
- function isAsyncGetPromiseAction(action) {
268
- return typeof action !== 'function' && action.hasOwnProperty('getPromise') && !action.hasOwnProperty('getGetPromise');
269
- }
270
- function isAsyncGetPromiseGetAction(action) {
271
- return typeof action !== 'function' && !action.hasOwnProperty('getPromise') && action.hasOwnProperty('getGetPromise');
272
- }
273
- /** @internal */
274
- function computeAsyncActionInput(action) {
275
- if (isAsyncGetPromiseGetAction(action)) {
276
- return __assign(__assign({}, action), { getPromise: action.getGetPromise, retryCount: 3, conflictPolicy: ConflictPolicy.REUSE });
277
- }
278
- return action;
279
- }
280
- /** @internal */
281
- function buildLoadingMap(source, actionName, promiseId, loading) {
282
- var _a, _b, _c, _d;
283
- if (loading) {
284
- return __assign(__assign({}, source), (_a = {}, _a[actionName] = __assign(__assign({}, (source[actionName] || {})), (_b = {}, _b[promiseId] = loading, _b)), _a));
285
- }
286
- var res = __assign(__assign({}, source), (_c = {}, _c[actionName] = __assign(__assign({}, source[actionName]), (_d = {}, _d[promiseId] = false, _d)), _c));
287
- return res;
288
- }
289
- /** @internal */
290
- function updateErrorMap(source, actionName, promiseId, error) {
291
- var _a, _b, _c, _d;
292
- if (error) {
293
- return __assign(__assign({}, source), (_a = {}, _a[actionName] = __assign(__assign({}, (source[actionName] || {})), (_b = {}, _b[promiseId] = error, _b)), _a));
294
- }
295
- var res = __assign(__assign({}, source), (_c = {}, _c[actionName] = __assign(__assign({}, source[actionName]), (_d = {}, _d[promiseId] = undefined, _d)), _c));
296
- return res;
297
- }
298
- var ParallelActionError = /** @class */ (function (_super) {
299
- __extends(ParallelActionError, _super);
300
- function ParallelActionError(promiseIds) {
301
- var _this = _super.call(this, 'Error') || this;
302
- _this.promiseIds = promiseIds;
303
- Object.setPrototypeOf(_this, ParallelActionError.prototype);
304
- return _this;
305
- }
306
- return ParallelActionError;
307
- }(Error));
308
- function buildErrorMap(map) {
309
- var keys = Object.keys(map);
310
- return keys.reduce(function (acc, actionName) {
311
- var subMap = map[actionName];
312
- // DEFAULT_PROMISE_ID is set internally
313
- // if defines it means that action is NOT run in parallel
314
- if (subMap[DEFAULT_PROMISE_ID] == null) ;
315
- else if (subMap[DEFAULT_PROMISE_ID]) {
316
- acc[actionName] = subMap[DEFAULT_PROMISE_ID];
317
- }
318
- else {
319
- var res = Object.keys(subMap).reduce(function (acc, promiseId) {
320
- if (subMap[promiseId] != null) {
321
- acc.hasErr = true;
322
- acc.map[promiseId] = subMap[promiseId];
323
- }
324
- return acc;
325
- }, { hasErr: false, map: {} });
326
- if (res.hasErr) {
327
- acc[actionName] = new ParallelActionError(res.map);
328
- }
329
- }
330
- return acc;
331
- }, {});
332
- }
333
- /** @internal */
334
- function retryPromiseDecorator(promiseProvider, maxCalls, delay, isRetryError) {
335
- if (maxCalls === void 0) { maxCalls = 1; }
336
- if (delay === void 0) { delay = 1000; }
337
- if (isRetryError === void 0) { isRetryError = function () { return true; }; }
338
- if (maxCalls === 1) {
339
- return promiseProvider;
340
- }
341
- return function (ctx) {
342
- function call(callCount, p) {
343
- return __awaiter(this, void 0, void 0, function () {
344
- return __generator(this, function (_a) {
345
- if (p === null) {
346
- return [2 /*return*/, null];
347
- }
348
- return [2 /*return*/, p.catch(function (e) {
349
- if (isRetryError(e)) {
350
- if (callCount === maxCalls) {
351
- return Promise.reject(e);
352
- }
353
- return new Promise(function (resolve, reject) {
354
- setTimeout(function () {
355
- var p = promiseProvider(ctx);
356
- call(callCount + 1, p)
357
- .then(resolve)
358
- .catch(reject);
359
- }, delay * callCount);
360
- });
361
- }
362
- return Promise.reject(e);
363
- })];
364
- });
365
- });
366
- }
367
- var initialPromise = promiseProvider(ctx);
368
- if (initialPromise === null) {
369
- return null;
370
- }
371
- return call(1, initialPromise);
372
- };
373
- }
374
- /** @internal */
375
- function createRef(init) {
376
- if (init === void 0) { init = null; }
377
- return {
378
- current: init,
379
- };
380
- }
381
- // =============================
382
- //
383
- // ACTION DECORATORS
384
- //
385
- // =============================
386
- /** @internal */
387
- function buildInvocationContextBase(stateRef, derivedStateRef, propsRef) {
388
- var _a, _b;
389
- return {
390
- state: stateRef.current,
391
- s: stateRef.current,
392
- ds: (_a = derivedStateRef === null || derivedStateRef === void 0 ? void 0 : derivedStateRef.current) === null || _a === void 0 ? void 0 : _a.state,
393
- derived: (_b = derivedStateRef === null || derivedStateRef === void 0 ? void 0 : derivedStateRef.current) === null || _b === void 0 ? void 0 : _b.state,
394
- props: propsRef.current,
395
- p: propsRef.current,
396
- };
397
- }
398
- /** @internal */
399
- function buildOnMountInvocationContext(stateRef, derivedStateRef, propsRef, actionsRef) {
400
- return addContextActions(buildInvocationContextBase(stateRef, derivedStateRef, propsRef), actionsRef);
401
- }
402
- /** @internal */
403
- function buildOnUnMountInvocationContext(stateRef, derivedStateRef, propsRef, abortedActions) {
404
- return __assign(__assign({}, buildInvocationContextBase(stateRef, derivedStateRef, propsRef)), { abortedActions: abortedActions });
405
- }
406
- /** @internal */
407
- function buildOnPropChangeEffects(stateRef, derivedStateRef, propsRef, indices, index, isInit, getInitialState) {
408
- var res = buildInvocationContextBase(stateRef, derivedStateRef, propsRef);
409
- res.indices = indices;
410
- res.index = index;
411
- res.isInit = isInit;
412
- res.getInitialState =
413
- typeof getInitialState === 'function' ? getInitialState : function () { return getInitialState; };
414
- return res;
415
- }
416
- /** @internal */
417
- function buildInvocationContext(stateRef, derivedStateRef, propsRef, args, promiseId) {
418
- var res = buildInvocationContextBase(stateRef, derivedStateRef, propsRef);
419
- res.args = args;
420
- if (promiseId) {
421
- res.promiseId = promiseId;
422
- }
423
- return res;
424
- }
425
- /** @internal */
426
- function buildEffectsInvocationContext(stateRef, derivedStateRef, propsRef, args, result, promiseId) {
427
- var res = buildInvocationContext(stateRef, derivedStateRef, propsRef, args, promiseId);
428
- res.result = result;
429
- res.res = result;
430
- return res;
431
- }
432
- /** @internal */
433
- function buildErrorEffectsInvocationContext(stateRef, derivedStateRef, propsRef, args, error, promiseId) {
434
- var res = buildInvocationContext(stateRef, derivedStateRef, propsRef, args, promiseId);
435
- res.error = error;
436
- res.err = error;
437
- return res;
438
- }
439
- /** @internal */
440
- function buildPromiseActionContext(stateRef, derivedStateRef, propsRef, args, actionsRef, abortSignal, promiseId) {
441
- var res = addContextActions(buildInvocationContext(stateRef, derivedStateRef, propsRef, args, promiseId), actionsRef);
442
- res.abortSignal = abortSignal;
443
- return res;
444
- }
445
- /** @internal */
446
- function addStateToContext(ctx, stateRef) {
447
- var newCtx = ctx;
448
- newCtx.state = stateRef.current;
449
- newCtx.s = stateRef.current;
450
- return newCtx;
451
- }
452
- /** @internal */
453
- function addContextActions(ctx, actionsRef) {
454
- var newCtx = ctx;
455
- newCtx.actions = actionsRef.current;
456
- newCtx.a = actionsRef.current;
457
- return newCtx;
458
- }
459
- /** @internal */
460
- function addSideEffectsContext(ctx, stateRef, derivedStateRef, actionsRef, notifyWarning, clearError) {
461
- var _a;
462
- var res = addContextActions(ctx, actionsRef);
463
- addStateToContext(ctx, stateRef);
464
- var ds = (_a = derivedStateRef === null || derivedStateRef === void 0 ? void 0 : derivedStateRef.current) === null || _a === void 0 ? void 0 : _a.state;
465
- res.derived = ds;
466
- res.ds = ds;
467
- res.notifyWarning = notifyWarning;
468
- res.clearError = clearError;
469
- return res;
470
- }
471
- function notInitWarning(actionName) {
472
- if (process.env.NODE_ENV === 'development') {
473
- console.warn("[state-decorator] ".concat(actionName, " action was called while store is not initialized or destroyed, this is probably a leak"));
474
- }
475
- }
476
- function mergeState(stateRef, newState) {
477
- return newState == null ? null : __assign(__assign({}, stateRef.current), newState);
478
- }
479
- /** @internal */
480
- function decorateSimpleSyncAction(actionName, action, stateRef, derivedStateRef, propsRef, initializedRef, setState) {
481
- return function () {
482
- var args = [];
483
- for (var _i = 0; _i < arguments.length; _i++) {
484
- args[_i] = arguments[_i];
485
- }
486
- // store was destroyed
487
- if (!initializedRef.current) {
488
- notInitWarning(actionName);
489
- return;
490
- }
491
- var ctx = buildInvocationContext(stateRef, derivedStateRef, propsRef, args);
492
- var newState = mergeState(stateRef, action(ctx));
493
- setState(newState, null, actionName, 'effects', false, ctx, false);
494
- };
495
- }
496
- /** @internal */
497
- function executeSyncActionImpl(actionName, action, stateRef, derivedStateRef, propsRef, actionsRef, timeoutMap, options, setState, clearError, args) {
498
- var _a;
499
- var ctx = buildEffectsInvocationContext(stateRef, derivedStateRef, propsRef, args, undefined);
500
- var actionDropped = false;
501
- if (action.effects != null) {
502
- var newState = mergeState(stateRef, action.effects(ctx));
503
- if (newState === null) {
504
- actionDropped = true;
505
- }
506
- else {
507
- setState(newState, undefined, actionName, 'effects', false, ctx, false);
508
- }
509
- }
510
- if (!actionDropped) {
511
- if (action.debounceSideEffectsTimeout > 0) {
512
- var timeout = timeoutMap.current[actionName];
513
- if (timeout) {
514
- clearTimeout(timeout);
515
- }
516
- timeoutMap.current[actionName] = setTimeout(function () {
517
- var _a;
518
- (_a = action.sideEffects) === null || _a === void 0 ? void 0 : _a.call(action, addSideEffectsContext(ctx, stateRef, derivedStateRef, actionsRef, options.notifyWarning, clearError));
519
- delete timeoutMap.current[actionName];
520
- }, action.debounceSideEffectsTimeout);
521
- }
522
- else {
523
- (_a = action.sideEffects) === null || _a === void 0 ? void 0 : _a.call(action, addSideEffectsContext(ctx, stateRef, derivedStateRef, actionsRef, options.notifyWarning, clearError));
524
- }
525
- }
526
- }
527
- /** @internal */
528
- function decorateSyncAction(actionName, action, stateRef, derivedStateRef, propsRef, actionsRef, initializedRef, timeoutMap, options, setState, clearError) {
529
- return function () {
530
- var args = [];
531
- for (var _i = 0; _i < arguments.length; _i++) {
532
- args[_i] = arguments[_i];
533
- }
534
- // store was destroyed
535
- if (!initializedRef.current) {
536
- notInitWarning(actionName);
537
- return;
538
- }
539
- if (action.debounceTimeout) {
540
- var timeout = timeoutMap.current[actionName];
541
- if (timeout) {
542
- clearTimeout(timeout);
543
- }
544
- timeoutMap.current[actionName] = setTimeout(function () {
545
- delete timeoutMap.current[actionName];
546
- executeSyncActionImpl(actionName, action, stateRef, derivedStateRef, propsRef, actionsRef, timeoutMap, options, setState, clearError, args);
547
- }, action.debounceTimeout);
548
- }
549
- else {
550
- executeSyncActionImpl(actionName, action, stateRef, derivedStateRef, propsRef, actionsRef, timeoutMap, options, setState, clearError, args);
551
- }
552
- };
553
- }
554
- function processPromiseSuccess(context, promiseId, promiseResult, args) {
555
- var action = context.action, stateRef = context.stateRef, derivedStateRef = context.derivedStateRef, propsRef = context.propsRef, promisesRef = context.promisesRef, actionsRef = context.actionsRef, loadingMapRef = context.loadingParallelMapRef, conflictActionsRef = context.conflictActionsRef, actionName = context.actionName, options = context.options, setState = context.setState, clearError = context.clearError;
556
- // store was destroyed
557
- if (!context.initializedRef.current) {
558
- return void 0;
559
- }
560
- var newState = null;
561
- var ctx = buildEffectsInvocationContext(stateRef, derivedStateRef, propsRef, args, promiseResult, promiseId);
562
- if (action.effects) {
563
- try {
564
- newState = mergeState(stateRef, action.effects(ctx));
565
- }
566
- catch (e) {
567
- return Promise.reject(new EffectError(e));
568
- }
569
- }
570
- setState(newState, buildLoadingMap(loadingMapRef.current, actionName, promiseId, false), actionName, 'effects', true, ctx, false);
571
- var notifySuccess = options.notifySuccess || globalConfig.notifySuccess;
572
- if (notifySuccess) {
573
- var msg = void 0;
574
- if (action.getSuccessMessage) {
575
- msg = action.getSuccessMessage(ctx);
576
- }
577
- if (msg) {
578
- notifySuccess(msg);
579
- }
580
- }
581
- delete promisesRef.current[actionName][promiseId];
582
- if (action.sideEffects) {
583
- action.sideEffects(addSideEffectsContext(ctx, stateRef, derivedStateRef, actionsRef, globalConfig.notifyWarning, clearError));
584
- }
585
- processNextConflictAction(actionName, actionsRef.current, conflictActionsRef.current);
586
- return promiseResult;
587
- }
588
- function processPromiseFailed(context, promiseId, err, args) {
589
- var action = context.action, stateRef = context.stateRef, derivedStateRef = context.derivedStateRef, propsRef = context.propsRef, actionsRef = context.actionsRef, loadingMapRef = context.loadingParallelMapRef, errorMapRef = context.errorMapRef, promisesRef = context.promisesRef, conflictActionsRef = context.conflictActionsRef, actionName = context.actionName, options = context.options, clearError = context.clearError, setState = context.setState;
590
- // store was killed;
591
- if (!context.initializedRef.current) {
592
- return void 0;
593
- }
594
- var newState = null;
595
- var error = err;
596
- var ctx = buildErrorEffectsInvocationContext(stateRef, derivedStateRef, propsRef, args, error, promiseId);
597
- if (action.errorEffects) {
598
- try {
599
- newState = mergeState(stateRef, action.errorEffects(ctx));
600
- }
601
- catch (e) {
602
- error = new EffectError(e, err);
603
- }
604
- }
605
- // do not trigger a setState by itself because loading state will trigger a set anyway...
606
- errorMapRef.current = updateErrorMap(errorMapRef.current, actionName, promiseId, error);
607
- setState(newState, buildLoadingMap(loadingMapRef.current, actionName, promiseId, false), actionName, 'errorEffects', true, ctx, false);
608
- var errorHandled = false;
609
- if (newState != null || action.errorSideEffects || action.isErrorManaged || options.isErrorManaged) {
610
- errorHandled = true;
611
- }
612
- var notifyError = options.notifyError || globalConfig.notifyError;
613
- if (notifyError) {
614
- var msg = void 0;
615
- if (action.getErrorMessage) {
616
- msg = action.getErrorMessage(ctx);
617
- }
618
- // do not trigger a default error message if the error is already managed by error effects
619
- if (msg === undefined && !errorHandled && globalConfig.getErrorMessage) {
620
- msg = globalConfig.getErrorMessage(error);
621
- }
622
- if (msg) {
623
- errorHandled = true;
624
- notifyError(msg);
625
- }
626
- }
627
- globalConfig.asyncErrorHandler(error, errorHandled || action.rejectPromiseOnError, stateRef.current, propsRef.current, actionName, args);
628
- delete promisesRef.current[actionName][promiseId];
629
- if (action.errorSideEffects) {
630
- action.errorSideEffects(addSideEffectsContext(ctx, stateRef, derivedStateRef, actionsRef, globalConfig.notifyWarning, clearError));
631
- }
632
- processNextConflictAction(actionName, actionsRef.current, conflictActionsRef.current);
633
- var result = !errorHandled || action.rejectPromiseOnError ? Promise.reject(error) : Promise.resolve();
634
- return result;
635
- }
636
- /** @internal */
637
- function decorateAsyncAction(context) {
638
- var action = context.action, stateRef = context.stateRef, derivedStateRef = context.derivedStateRef, propsRef = context.propsRef, actionsRef = context.actionsRef, promisesRef = context.promisesRef, loadingMapRef = context.loadingParallelMapRef, errorMapRef = context.errorMapRef, initializedRef = context.initializedRef, conflictActionsRef = context.conflictActionsRef, actionName = context.actionName, setState = context.setState;
639
- return function () {
640
- var _a;
641
- var _b, _c;
642
- var args = [];
643
- for (var _i = 0; _i < arguments.length; _i++) {
644
- args[_i] = arguments[_i];
645
- }
646
- if (!initializedRef.current) {
647
- notInitWarning(actionName);
648
- return null;
649
- }
650
- var promises = promisesRef.current;
651
- var _d = action.conflictPolicy, conflictPolicy = _d === void 0 ? ConflictPolicy.KEEP_ALL : _d;
652
- var isParallel = conflictPolicy === ConflictPolicy.PARALLEL;
653
- var promiseId = null;
654
- if (isParallel) {
655
- if (!action.getPromiseId) {
656
- throw new Error('If conflict policy is set to ConflictPolicy.PARALLEL, getPromiseId must be set and return a string.');
657
- }
658
- promiseId = action.getPromiseId.apply(action, args);
659
- }
660
- else {
661
- promiseId = DEFAULT_PROMISE_ID;
662
- }
663
- if (!isParallel && ((_b = promises[actionName]) === null || _b === void 0 ? void 0 : _b[promiseId])) {
664
- return handleConflictingAction(promises, conflictActionsRef.current, actionName, conflictPolicy, args);
665
- }
666
- var newState = null;
667
- var hasChanged = false;
668
- var ctx = buildInvocationContext(stateRef, derivedStateRef, propsRef, args, promiseId);
669
- if (action.preEffects) {
670
- try {
671
- newState = mergeState(stateRef, action.preEffects(ctx));
672
- }
673
- catch (error) {
674
- globalConfig.asyncErrorHandler(new EffectError(error), false, stateRef.current, propsRef.current, actionName, args);
675
- return Promise.reject(new EffectError(error));
676
- }
677
- // apply internal state change for calls to other actions in the getPromise
678
- if (newState) {
679
- hasChanged = true;
680
- stateRef.current = newState;
681
- }
682
- }
683
- var abortable = action.abortable, retryCount = action.retryCount, retryDelaySeed = action.retryDelaySeed, isTriggerRetryError = action.isTriggerRetryError;
684
- var abortController = abortable && window.AbortController ? new AbortController() : null;
685
- var promiseProvider = retryPromiseDecorator(action.getPromise, retryCount ? 1 + retryCount : 1, retryDelaySeed, isTriggerRetryError || globalConfig.retryOnErrorFunction);
686
- var p = (_c = promiseProvider(buildPromiseActionContext(stateRef, derivedStateRef, propsRef, args, actionsRef, abortController === null || abortController === void 0 ? void 0 : abortController.signal))) === null || _c === void 0 ? void 0 : _c.then(function (promiseResult) { return processPromiseSuccess(context, promiseId, promiseResult, args); }).catch(function (error) { return processPromiseFailed(context, promiseId, error, args); });
687
- if (p != null) {
688
- promises[actionName] = __assign(__assign({}, (promises[actionName] || {})), (_a = {}, _a[promiseId || DEFAULT_PROMISE_ID] = {
689
- abortController: abortController,
690
- promise: p,
691
- refArgs: conflictPolicy === ConflictPolicy.REUSE && args.length > 0 ? __spreadArray([], args, true) : [],
692
- }, _a));
693
- }
694
- errorMapRef.current = updateErrorMap(errorMapRef.current, actionName, promiseId, null);
695
- setState(p == null && !hasChanged ? undefined : stateRef.current, p == null ? undefined : buildLoadingMap(loadingMapRef.current, actionName, promiseId, true), actionName, 'preEffects', true, ctx, false);
696
- return p;
697
- };
698
- }
699
- /** @internal */
700
- function isLoadingImpl(loadingMap) {
701
- var props = [];
702
- for (var _i = 1; _i < arguments.length; _i++) {
703
- props[_i - 1] = arguments[_i];
704
- }
705
- return props.some(function (propIn) {
706
- var _a;
707
- var actionName = null;
708
- var promiseId = DEFAULT_PROMISE_ID;
709
- if (Array.isArray(propIn)) {
710
- actionName = propIn[0], _a = propIn[1], promiseId = _a === void 0 ? DEFAULT_PROMISE_ID : _a;
711
- }
712
- else {
713
- actionName = propIn;
714
- }
715
- var res = loadingMap[actionName];
716
- if (res == null) {
717
- return false;
718
- }
719
- if (res[promiseId] != null) {
720
- return res[promiseId];
721
- }
722
- return false;
723
- });
724
- }
725
- // ------------------------------
726
- //
727
- // Conflict management
728
- //
729
- // ------------------------------
730
- var DEFAULT_PROMISE_ID = '__def__';
731
- /** @internal */
732
- function areSameArgs(args1, args2) {
733
- if (args1.length !== args2.length) {
734
- return false;
735
- }
736
- return args1.findIndex(function (value, index) { return args2[index] !== value; }) === -1;
737
- }
738
- /**
739
- * Handles a conflicting action depending on the action conflict policy.
740
- */
741
- /** @internal */
742
- function handleConflictingAction(promises, conflictActions, actionName, conflictPolicy, args) {
743
- var policy = conflictPolicy;
744
- if (policy === ConflictPolicy.REUSE) {
745
- // use default because action cannot be parallel
746
- if (areSameArgs(promises[actionName][DEFAULT_PROMISE_ID].refArgs, args)) {
747
- return promises[actionName][DEFAULT_PROMISE_ID].promise;
748
- } // else
749
- policy = ConflictPolicy.KEEP_ALL;
750
- }
751
- return new Promise(function (resolve, reject) {
752
- var futureAction = {
753
- resolve: resolve,
754
- reject: reject,
755
- args: clone(args),
756
- timestamp: Date.now(),
757
- };
758
- switch (policy) {
759
- case ConflictPolicy.IGNORE:
760
- resolve(void 0);
761
- break;
762
- case ConflictPolicy.REJECT:
763
- reject(new Error("An asynchronous action ".concat(actionName, " is already ongoing.")));
764
- break;
765
- case ConflictPolicy.KEEP_LAST: {
766
- conflictActions[actionName] = [futureAction];
767
- break;
768
- }
769
- case ConflictPolicy.KEEP_ALL: {
770
- var stack = conflictActions[actionName];
771
- if (!stack) {
772
- conflictActions[actionName] = stack = [];
773
- }
774
- stack.push(futureAction);
775
- break;
776
- }
777
- case ConflictPolicy.PARALLEL:
778
- case ConflictPolicy.REUSE:
779
- // no-op
780
- break;
781
- }
782
- });
783
- }
784
- /**
785
- * Processes next conflicting action (see ConflictPolicy) in the queue.
786
- */
787
- function processNextConflictAction(actionName, actions, conflictActions) {
788
- var futureActions = conflictActions[actionName];
789
- if (futureActions && futureActions.length > 0) {
790
- var futureAction_1 = conflictActions[actionName].shift();
791
- if (futureAction_1) {
792
- var p = actions[actionName].apply(actions, futureAction_1.args);
793
- if (p == null) {
794
- processNextConflictAction(actionName, actions, conflictActions);
795
- }
796
- else {
797
- p.then(function (res) {
798
- if (res === null) {
799
- // promise was aborted
800
- processNextConflictAction(actionName, actions, conflictActions);
801
- }
802
- futureAction_1.resolve(res);
803
- }).catch(function (e) { return futureAction_1.reject(e); });
804
- } // else aborted
805
- }
806
- }
807
- }
808
- /** @internal */
809
- function computeDerivedValues(s, p, derivedStateRef, options) {
810
- if ((options === null || options === void 0 ? void 0 : options.derivedState) == null) {
811
- return false;
812
- }
813
- var hasChanged = false;
814
- var compare = globalConfig.comparator;
815
- var depsMap = derivedStateRef.current.deps;
816
- var ctx = buildInvocationContextBase(s, null, p);
817
- var keys = Object.keys(options.derivedState);
818
- derivedStateRef.current.state = keys.reduce(function (acc, propName) {
819
- var compute = false;
820
- var previousDeps = depsMap[propName];
821
- var deps = options.derivedState[propName].getDeps(ctx);
822
- if (previousDeps == null) {
823
- compute = true;
824
- }
825
- else {
826
- compute =
827
- deps.find(function (dep, index) { return (previousDeps.length < index ? true : !compare(previousDeps[index], dep)); }) != null;
828
- }
829
- hasChanged = hasChanged || compute;
830
- // update cache of previous deps
831
- depsMap[propName] = deps;
832
- if (compute) {
833
- acc[propName] = options.derivedState[propName].get(ctx);
834
- }
835
- else {
836
- acc[propName] = derivedStateRef.current.state[propName];
837
- }
838
- return acc;
839
- }, {});
840
- return hasChanged;
841
- }
842
- // --------------------------------------
843
- //
844
- // Props change
845
- //
846
- // --------------------------------------
847
- /** @internal */
848
- function onPropChange(stateRef, derivedStateRef, propsRef, oldProps, actionsRef, options, getInitialState, setState, isInit, isDeferred) {
849
- var hasDerivedState = (options === null || options === void 0 ? void 0 : options.derivedState) != null;
850
- if (options.onPropsChange == null) {
851
- if ((options === null || options === void 0 ? void 0 : options.derivedState) != null) {
852
- // derived values must be updated from props
853
- setState(undefined, undefined, 'onPropsChange', 'effects', false, null, true);
854
- }
855
- return;
856
- }
857
- var onPropsChanges;
858
- if (Array.isArray(options.onPropsChange)) {
859
- onPropsChanges = options.onPropsChange;
860
- }
861
- else {
862
- onPropsChanges = [options.onPropsChange];
863
- }
864
- var stateChanged = false;
865
- var newStateRef = createRef(stateRef.current);
866
- var sideEffects = [];
867
- var compare = globalConfig.comparator;
868
- onPropsChanges.forEach(function (propsChange, index) {
869
- var _a;
870
- var getDeps = propsChange.getDeps;
871
- if (getDeps) {
872
- var propChanged_1 = false;
873
- var indices_1 = [];
874
- if (isInit) {
875
- if ((!isDeferred && propsChange.onMount) || (isDeferred && propsChange.onMountDeferred)) {
876
- propChanged_1 = true;
877
- }
878
- else {
879
- // skip this onPropsChange
880
- return;
881
- }
882
- }
883
- else {
884
- var oldValues = getDeps(oldProps);
885
- var newValues_1 = getDeps(propsRef.current);
886
- if (oldValues.length !== newValues_1.length) {
887
- console.warn('options.onPropsChange.getDeps returned array must be stable (same length)');
888
- propChanged_1 = true;
889
- }
890
- else {
891
- oldValues.forEach(function (v, i) {
892
- if (!compare(v, newValues_1[i])) {
893
- propChanged_1 = true;
894
- indices_1.push(i);
895
- }
896
- });
897
- }
898
- }
899
- if (propChanged_1) {
900
- var ctx = buildOnPropChangeEffects(newStateRef, derivedStateRef, propsRef, indices_1, index, isInit, getInitialState);
901
- var newState = mergeState(stateRef, (_a = propsChange.effects) === null || _a === void 0 ? void 0 : _a.call(propsChange, ctx));
902
- if (newState != null) {
903
- stateChanged = true;
904
- newStateRef.current = newState;
905
- setState(newStateRef.current, undefined, 'onPropsChange', 'effects', false, ctx, true, isInit);
906
- }
907
- if (propsChange.sideEffects) {
908
- sideEffects.push({ index: index, indices: indices_1, ctx: ctx });
909
- }
910
- }
911
- }
912
- });
913
- if (!stateChanged && hasDerivedState) {
914
- // derived values must be updated from props
915
- setState(undefined, undefined, 'onPropsChange', 'effects', false, null, true);
916
- }
917
- if (sideEffects.length > 0) {
918
- sideEffects.forEach(function (sideEffectInfo) {
919
- var onPropChange = onPropsChanges[sideEffectInfo.index];
920
- onPropChange.sideEffects(__assign(__assign({}, addStateToContext(addContextActions(sideEffectInfo.ctx, actionsRef), newStateRef)), { indices: sideEffectInfo.indices }));
921
- });
922
- }
923
- }
924
- // ------------------
925
- //
926
- // Middlewares
927
- //
928
- // ------------------
929
- /** @internal */
930
- function runMiddlewares(middlewares, oldState, newState, loading, actionName, actionType, isAsync, actionCtx) {
931
- // onPropChange to compute derived state but not state change
932
- if (actionName === 'onPropsChange' && newState === undefined) {
933
- return {
934
- newState: null,
935
- newLoading: false,
936
- };
937
- }
938
- if (middlewares && middlewares.length > 0) {
939
- var res = middlewares.reduce(function (acc, middleware) {
940
- var res = middleware.effects({
941
- isAsync: isAsync,
942
- name: actionName,
943
- type: actionType,
944
- context: actionCtx,
945
- }, acc.oldState, acc.newState, loading);
946
- return {
947
- newState: (res === null || res === void 0 ? void 0 : res.state) || acc.newState,
948
- oldState: (res === null || res === void 0 ? void 0 : res.state) ? acc.newState : acc.oldState,
949
- loading: (res === null || res === void 0 ? void 0 : res.loading) == null ? acc.loading : res.loading,
950
- };
951
- }, {
952
- oldState: oldState,
953
- newState: newState,
954
- loading: loading,
955
- });
956
- return {
957
- newLoading: res.loading,
958
- newState: res.newState,
959
- };
960
- }
961
- return {
962
- newState: newState,
963
- newLoading: loading,
964
- };
965
- }
966
-
967
- exports.DEFAULT_PROMISE_ID = DEFAULT_PROMISE_ID;
968
- exports.EffectError = EffectError;
969
- exports.ParallelActionError = ParallelActionError;
970
- exports.addContextActions = addContextActions;
971
- exports.addStateToContext = addStateToContext;
972
- exports.areSameArgs = areSameArgs;
973
- exports.buildErrorMap = buildErrorMap;
974
- exports.buildInvocationContextBase = buildInvocationContextBase;
975
- exports.buildLoadingMap = buildLoadingMap;
976
- exports.buildOnMountInvocationContext = buildOnMountInvocationContext;
977
- exports.buildOnPropChangeEffects = buildOnPropChangeEffects;
978
- exports.buildOnUnMountInvocationContext = buildOnUnMountInvocationContext;
979
- exports.computeAsyncActionInput = computeAsyncActionInput;
980
- exports.computeDerivedValues = computeDerivedValues;
981
- exports.createRef = createRef;
982
- exports.decorateAsyncAction = decorateAsyncAction;
983
- exports.decorateSimpleSyncAction = decorateSimpleSyncAction;
984
- exports.decorateSyncAction = decorateSyncAction;
985
- exports.globalConfig = globalConfig;
986
- exports.isAsyncAction = isAsyncAction;
987
- exports.isAsyncGetPromiseAction = isAsyncGetPromiseAction;
988
- exports.isAsyncGetPromiseGetAction = isAsyncGetPromiseGetAction;
989
- exports.isLoadingImpl = isLoadingImpl;
990
- exports.isSimpleSyncAction = isSimpleSyncAction;
991
- exports.isSyncAction = isSyncAction;
992
- exports.onPropChange = onPropChange;
993
- exports.retryPromiseDecorator = retryPromiseDecorator;
994
- exports.runMiddlewares = runMiddlewares;
995
- exports.setGlobalConfig = setGlobalConfig;
996
- exports.updateErrorMap = updateErrorMap;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=function(r,t){return(e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,r){e.__proto__=r}||function(e,r){for(var t in r)Object.prototype.hasOwnProperty.call(r,t)&&(e[t]=r[t])})(r,t)};function r(r,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function n(){this.constructor=r}e(r,t),r.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}var t=function(){return(t=Object.assign||function(e){for(var r,t=1,n=arguments.length;t<n;t++)for(var o in r=arguments[t])Object.prototype.hasOwnProperty.call(r,o)&&(e[o]=r[o]);return e}).apply(this,arguments)};function n(e,r,t,n){return new(t||(t=Promise))((function(o,i){function c(e){try{u(n.next(e))}catch(e){i(e)}}function a(e){try{u(n.throw(e))}catch(e){i(e)}}function u(e){var r;e.done?o(e.value):(r=e.value,r instanceof t?r:new t((function(e){e(r)}))).then(c,a)}u((n=n.apply(e,r||[])).next())}))}function o(e,r){var t,n,o,i,c={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:a(0),throw:a(1),return:a(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function a(i){return function(a){return function(i){if(t)throw new TypeError("Generator is already executing.");for(;c;)try{if(t=1,n&&(o=2&i[0]?n.return:i[0]?n.throw||((o=n.return)&&o.call(n),0):n.next)&&!(o=o.call(n,i[1])).done)return o;switch(n=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return c.label++,{value:i[1],done:!1};case 5:c.label++,n=i[1],i=[0];continue;case 7:i=c.ops.pop(),c.trys.pop();continue;default:if(!(o=c.trys,(o=o.length>0&&o[o.length-1])||6!==i[0]&&2!==i[0])){c=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]<o[3])){c.label=i[1];break}if(6===i[0]&&c.label<o[1]){c.label=o[1],o=i;break}if(o&&c.label<o[2]){c.label=o[2],c.ops.push(i);break}o[2]&&c.ops.pop(),c.trys.pop();continue}i=r.call(e,c)}catch(e){i=[6,e],n=0}finally{t=o=0}if(5&i[0])throw i[1];return{value:i[0]?i[1]:void 0,done:!0}}([i,a])}}}function i(e,r,t){if(t||2===arguments.length)for(var n,o=0,i=r.length;o<i;o++)!n&&o in r||(n||(n=Array.prototype.slice.call(r,0,o)),n[o]=r[o]);return e.concat(n||Array.prototype.slice.call(r))}var c,a=function(){function e(e){this.keys=e,this.adj={}}return e.prototype.isCyclicUtil=function(e,r,t){var n;if(t.has(e))return!0;if(r.has(e))return!1;r.add(e),t.add(e);for(var o=0,i=null!==(n=this.adj[e])&&void 0!==n?n:[];o<i.length;o++){var c=i[o];if(this.isCyclicUtil(c,r,t))return!0}return t.delete(e),!1},e.prototype.setEdges=function(e,r){this.adj[e]=r},e.prototype.isCyclic=function(){for(var e=new Set,r=new Set,t=0,n=this.keys;t<n.length;t++){var o=n[t];if(this.isCyclicUtil(o,e,r))return!0}return!1},e}();!function(e){e.REJECT="reject",e.IGNORE="ignore",e.KEEP_LAST="keepLast",e.KEEP_ALL="keepAll",e.PARALLEL="parallel",e.REUSE="reuse"}(c||(c={}));var u=function(e){function t(r,n){var o=e.call(this,r.message)||this;return o.source=r,o.initialError=n,Object.setPrototypeOf(o,t.prototype),o}return r(t,e),t}(Error),s={clone:function(e){return JSON.parse(JSON.stringify(e))},comparator:function(e,r){if(Object.is(e,r))return!0;if("object"!=typeof e||null===e||"object"!=typeof r||null===r)return!1;if(e instanceof Set||r instanceof Set)return!1;var t=Object.keys(e),n=Object.keys(r);if(t.length!==n.length)return!1;for(var o=0;o<t.length;o++)if(!Object.prototype.hasOwnProperty.call(r,t[o])||!Object.is(e[t[o]],r[t[o]]))return!1;return!0},asyncErrorHandler:function(){},retryOnErrorFunction:function(e){return e instanceof TypeError},notifySuccess:void 0,notifyError:void 0,notifyWarning:void 0,getErrorMessage:void 0,defaultMiddlewares:[]};function l(e){try{return s.clone(e)}catch(e){var r="StateDecorator: Cannot clone object. Set setCloneFunction on global global with another implementation like lodash/cloneDeep.";throw"development"===process.env.NODE_ENV&&(console.error(r),console.error(e.toString())),new Error(r)}}function f(e){return"function"!=typeof e&&!e.hasOwnProperty("getPromise")&&e.hasOwnProperty("getGetPromise")}function d(e,r,n,o){var i,c,a,u;return t(t({},e),o?((i={})[r]=t(t({},e[r]||{}),((c={})[n]=o,c)),i):((a={})[r]=t(t({},e[r]),((u={})[n]=!1,u)),a))}function p(e,r,n,o){var i,c,a,u;return t(t({},e),o?((i={})[r]=t(t({},e[r]||{}),((c={})[n]=o,c)),i):((a={})[r]=t(t({},e[r]),((u={})[n]=void 0,u)),a))}var v=function(e){function t(r){var n=e.call(this,"Error")||this;return n.promiseIds=r,Object.setPrototypeOf(n,t.prototype),n}return r(t,e),t}(Error);function g(e,r,t,i){return void 0===r&&(r=1),void 0===t&&(t=1e3),void 0===i&&(i=function(){return!0}),1===r?e:function(c){var a=e(c);return null===a?null:function a(u,s){return n(this,void 0,void 0,(function(){return o(this,(function(n){return null===s?[2,null]:[2,s.catch((function(n){return i(n)?u===r?Promise.reject(n):new Promise((function(r,n){setTimeout((function(){var t=e(c);a(u+1,t).then(r).catch(n)}),t*u)})):Promise.reject(n)}))]}))}))}(1,a)}}function h(e){return void 0===e&&(e=null),{current:e}}function y(e,r,t){var n,o;return{state:e.current,s:e.current,ds:null===(n=null==r?void 0:r.current)||void 0===n?void 0:n.state,derived:null===(o=null==r?void 0:r.current)||void 0===o?void 0:o.state,props:t.current,p:t.current}}function E(e,r,t,n,o,i,c){var a=y(e,r,t);return a.indices=n,a.index=o,a.isInit=i,a.getInitialState=c,a}function m(e,r,t,n,o){var i=y(e,r,t);return i.args=n,o&&(i.promiseId=o),i}function S(e,r,t,n,o,i){var c=m(e,r,t,n,i);return c.result=o,c.res=o,c}function P(e,r,t,n,o,i,c){var a=b(m(e,r,t,n,c),o);return a.abortSignal=i,a}function w(e,r){var t=e;return t.state=r.current,t.s=r.current,t}function b(e,r){var t=e;return t.actions=r.current,t.a=r.current,t}function x(e,r,t,n,o,i){var c,a=b(e,n);w(e,r);var u=null===(c=null==t?void 0:t.current)||void 0===c?void 0:c.state;return a.derived=u,a.ds=u,a.notifyWarning=o,a.clearError=i,a}function A(e){"development"===process.env.NODE_ENV&&console.warn("[state-decorator] ".concat(e," action was called while store is not initialized or destroyed, this is probably a leak"))}function O(e,r,n){return(null==n?void 0:n.fullStateEffects)?r:null==r?null:t(t({},e.current),r)}function R(e,r,t,n,o,i,c,a,u,s,l){var f,d=S(t,n,o,l,void 0),p=!1;if(null!=r.effects){var v=O(t,r.effects(d),a);null===v?p=!0:u(v,void 0,e,"effects",!1,d,!1)}if(!p)if(r.debounceSideEffectsTimeout>0){var g=c.current[e];g&&clearTimeout(g),c.current[e]=setTimeout((function(){var o;null===(o=r.sideEffects)||void 0===o||o.call(r,x(d,t,n,i,a.notifyWarning,s)),delete c.current[e]}),r.debounceSideEffectsTimeout)}else null===(f=r.sideEffects)||void 0===f||f.call(r,x(d,t,n,i,a.notifyWarning,s))}function j(e,r,t,n){var o=e.action,i=e.stateRef,c=e.derivedStateRef,a=e.propsRef,l=e.promisesRef,f=e.actionsRef,p=e.loadingParallelMapRef,v=e.conflictActionsRef,g=e.actionName,h=e.options,y=e.setState,E=e.clearError;if(e.initializedRef.current){var m=null,P=S(i,c,a,n,t,r);if(o.effects)try{m=O(i,o.effects(P),h)}catch(e){return Promise.reject(new u(e))}y(m,d(p.current,g,r,!1),g,"effects",!0,P,!1);var w=h.notifySuccess||s.notifySuccess;if(w){var b=void 0;o.getSuccessMessage&&(b=o.getSuccessMessage(P)),b&&w(b)}return delete l.current[g][r],o.sideEffects&&o.sideEffects(x(P,i,c,f,s.notifyWarning,E)),k(g,f.current,v.current),t}}function C(e,r,t,n){var o=e.action,i=e.stateRef,c=e.derivedStateRef,a=e.propsRef,l=e.actionsRef,f=e.loadingParallelMapRef,v=e.errorMapRef,g=e.promisesRef,h=e.conflictActionsRef,y=e.actionName,E=e.options,S=e.clearError,P=e.setState;if(e.initializedRef.current){var w=null,b=t,A=function(e,r,t,n,o,i){var c=m(e,r,t,n,i);return c.error=o,c.err=o,c}(i,c,a,n,b,r);if(o.errorEffects)try{w=O(i,o.errorEffects(A),E)}catch(e){b=new u(e,t)}v.current=p(v.current,y,r,b),P(w,d(f.current,y,r,!1),y,"errorEffects",!0,A,!1);var R=!1;(null!=w||o.errorSideEffects||o.isErrorManaged||E.isErrorManaged)&&(R=!0);var j=E.notifyError||s.notifyError;if(j){var C=void 0;o.getErrorMessage&&(C=o.getErrorMessage(A)),void 0===C&&!R&&s.getErrorMessage&&(C=s.getErrorMessage(b)),C&&(R=!0,j(C))}return s.asyncErrorHandler(b,R||o.rejectPromiseOnError,i.current,a.current,y,n),delete g.current[y][r],o.errorSideEffects&&o.errorSideEffects(x(A,i,c,l,s.notifyWarning,S)),k(y,l.current,h.current),!R||o.rejectPromiseOnError?Promise.reject(b):Promise.resolve()}}var L="__def__";function M(e,r){return e.length===r.length&&-1===e.findIndex((function(e,t){return r[t]!==e}))}function _(e,r,t,n,o){var i=n;if(i===c.REUSE){if(M(e[t][L].refArgs,o))return e[t][L].promise;i=c.KEEP_ALL}return new Promise((function(e,n){var a={resolve:e,reject:n,args:l(o),timestamp:Date.now()};switch(i){case c.IGNORE:e(void 0);break;case c.REJECT:n(new Error("An asynchronous action ".concat(t," is already ongoing.")));break;case c.KEEP_LAST:r[t]=[a];break;case c.KEEP_ALL:var u=r[t];u||(r[t]=u=[]),u.push(a);break;case c.PARALLEL:case c.REUSE:}}))}function k(e,r,t){var n=t[e];if(n&&n.length>0){var o=t[e].shift();if(o){var i=r[e].apply(r,o.args);null==i?k(e,r,t):i.then((function(n){null===n&&k(e,r,t),o.resolve(n)})).catch((function(e){return o.reject(e)}))}}}exports.DEFAULT_PROMISE_ID=L,exports.EffectError=u,exports.ParallelActionError=v,exports.addContextActions=b,exports.addStateToContext=w,exports.areSameArgs=M,exports.buildErrorMap=function(e){return Object.keys(e).reduce((function(r,t){var n=e[t];if(null==n[L]);else if(n[L])r[t]=n[L];else{var o=Object.keys(n).reduce((function(e,r){return null!=n[r]&&(e.hasErr=!0,e.map[r]=n[r]),e}),{hasErr:!1,map:{}});o.hasErr&&(r[t]=new v(o.map))}return r}),{})},exports.buildInvocationContextBase=y,exports.buildLoadingMap=d,exports.buildOnMountInvocationContext=function(e,r,t,n){return b(y(e,r,t),n)},exports.buildOnPropChangeEffects=E,exports.buildOnUnMountInvocationContext=function(e,r,n,o){return t(t({},y(e,r,n)),{abortedActions:o})},exports.computeAsyncActionInput=function(e){return f(e)?t(t({},e),{getPromise:e.getGetPromise,retryCount:3,conflictPolicy:c.REUSE}):e},exports.computeDerivedValues=function(e,r,n,o){if(null==(null==o?void 0:o.derivedState))return!1;var i=!1,c=s.comparator,a=n.current.deps,u=y(e,null,r),l=Object.keys(o.derivedState);return n.current.state=l.reduce((function(e,r){var s,l,f=!1,d=o.derivedState[r],p=a[r],v=null!==(l=null===(s=d.getDeps)||void 0===s?void 0:s.call(d,u))&&void 0!==l?l:[];return d.derivedDeps&&d.derivedDeps.forEach((function(r){var t,o,i;return v.push(null!==(t=e[r])&&void 0!==t?t:null===(i=null===(o=n.current)||void 0===o?void 0:o.state)||void 0===i?void 0:i[r])})),f=null==p||null!=v.find((function(e,r){return p.length<r||!c(p[r],e)})),i=i||f,a[r]=v,e[r]=f?o.derivedState[r].get(function(e,r){return t(t({},e),{ds:r,derived:r})}(u,e)):n.current.state[r],e}),{}),i},exports.createRef=h,exports.decorateAsyncAction=function(e){var r=e.action,n=e.stateRef,o=e.derivedStateRef,a=e.propsRef,l=e.actionsRef,f=e.promisesRef,v=e.loadingParallelMapRef,h=e.errorMapRef,y=e.initializedRef,E=e.conflictActionsRef,S=e.actionName,w=e.setState,b=e.options;return function(){for(var x,R,M,k=[],D=0;D<arguments.length;D++)k[D]=arguments[D];if(!y.current)return A(S),null;var T=f.current,I=r.conflictPolicy,G=void 0===I?c.KEEP_ALL:I,N=G===c.PARALLEL,U=null;if(N){if(!r.getPromiseId)throw new Error("If conflict policy is set to ConflictPolicy.PARALLEL, getPromiseId must be set and return a string.");U=r.getPromiseId.apply(r,k)}else U=L;if(!N&&(null===(R=T[S])||void 0===R?void 0:R[U]))return _(T,E.current,S,G,k);var K=null,W=!1,z=m(n,o,a,k,U);if(r.preEffects){try{K=O(n,r.preEffects(z),b)}catch(e){return s.asyncErrorHandler(new u(e),!1,n.current,a.current,S,k),Promise.reject(new u(e))}K&&(W=!0,n.current=K)}var F=r.abortable,J=r.retryCount,H=r.retryDelaySeed,V=r.isTriggerRetryError,B=F&&window.AbortController?new AbortController:null,q=g(r.getPromise,J?1+J:1,H,V||s.retryOnErrorFunction),Q=null===(M=q(P(n,o,a,k,l,null==B?void 0:B.signal)))||void 0===M?void 0:M.then((function(r){return j(e,U,r,k)})).catch((function(r){return C(e,U,r,k)}));return null!=Q&&(T[S]=t(t({},T[S]||{}),((x={})[U||L]={abortController:B,promise:Q,refArgs:G===c.REUSE&&k.length>0?i([],k,!0):[]},x))),h.current=p(h.current,S,U,null),w(null!=Q||W?n.current:void 0,null==Q?void 0:d(v.current,S,U,!0),S,"preEffects",!0,z,!1),Q}},exports.decorateSimpleSyncAction=function(e,r,t,n,o,i,c,a){return function(){for(var u=[],s=0;s<arguments.length;s++)u[s]=arguments[s];if(i.current){var l=m(t,n,o,u),f=O(t,r(l),c);a(f,null,e,"effects",!1,l,!1)}else A(e)}},exports.decorateSyncAction=function(e,r,t,n,o,i,c,a,u,s,l){return function(){for(var f=[],d=0;d<arguments.length;d++)f[d]=arguments[d];if(c.current)if(r.debounceTimeout){var p=a.current[e];p&&clearTimeout(p),a.current[e]=setTimeout((function(){delete a.current[e],R(e,r,t,n,o,i,a,u,s,l,f)}),r.debounceTimeout)}else R(e,r,t,n,o,i,a,u,s,l,f);else A(e)}},exports.fixDerivedDeps=function(e){var r,t=Object.keys(e.derivedState),n=new a(t);if(t.forEach((function(r){n.setEdges(r,e.derivedState[r].derivedDeps)})),n.isCyclic())throw new Error("There are cycles in the derived state dependencies");for(var o=!1,i={},c=0,u=t;c<u.length;c++){var s=u[c],l=null!==(r=e.derivedState[s].derivedDeps)&&void 0!==r?r:[];o=o||l.length>0,i[s]=l.concat()}if(o){t.sort((function(e,r){return i[e].length-i[r].length}));for(var f=[],d=new Set,p=t.length;d.size!==p;){var v=t.pop();if(!d.has(v))i[v]=i[v].filter((function(e){return!d.has(e)})),0===i[v].length?(f.push(v),d.add(v)):t.splice(0,0,v)}for(var g={},h=0,y=f;h<y.length;h++){g[v=y[h]]=e.derivedState[v]}e.derivedState=g}},exports.globalConfig=s,exports.isAsyncAction=function(e){return!(e instanceof Function)&&(e.hasOwnProperty("getPromise")||e.hasOwnProperty("getGetPromise"))},exports.isAsyncGetPromiseAction=function(e){return"function"!=typeof e&&e.hasOwnProperty("getPromise")&&!e.hasOwnProperty("getGetPromise")},exports.isAsyncGetPromiseGetAction=f,exports.isLoadingImpl=function(e){for(var r=[],t=1;t<arguments.length;t++)r[t-1]=arguments[t];return r.some((function(r){var t,n=null,o=L;Array.isArray(r)?(n=r[0],o=void 0===(t=r[1])?L:t):n=r;var i=e[n];return null!=i&&(null!=i[o]&&i[o])}))},exports.isSimpleSyncAction=function(e){return"function"==typeof e},exports.isSyncAction=function(e){return"function"!=typeof e&&!e.hasOwnProperty("getPromise")&&!e.hasOwnProperty("getGetPromise")},exports.onPropChange=function(e,r,n,o,i,c,a,u,l,f){var d=null!=(null==c?void 0:c.derivedState);if(null!=c.onPropsChange){var p;p=Array.isArray(c.onPropsChange)?c.onPropsChange:[c.onPropsChange];var v=!1,g=h(e.current),y=[],m=s.comparator;p.forEach((function(t,i){var s,d=t.getDeps;if(d){var p=!1,h=[];if(l){if(!(!f&&t.onMount||f&&t.onMountDeferred))return;p=!0}else{var S=d(o),P=d(n.current);S.length!==P.length?(console.warn("options.onPropsChange.getDeps returned array must be stable (same length)"),p=!0):S.forEach((function(e,r){m(e,P[r])||(p=!0,h.push(r))}))}if(p){var w=E(g,r,n,h,i,l,a),b=O(e,null===(s=t.effects)||void 0===s?void 0:s.call(t,w),c);null!=b&&(v=!0,g.current=b,u(g.current,void 0,"onPropsChange","effects",!1,w,!0,l)),t.sideEffects&&y.push({index:i,indices:h,ctx:w})}}})),!v&&d&&u(void 0,void 0,"onPropsChange","effects",!1,null,!0),y.length>0&&y.forEach((function(e){p[e.index].sideEffects(t(t({},w(b(e.ctx,i),g)),{indices:e.indices}))}))}else null!=(null==c?void 0:c.derivedState)&&u(void 0,void 0,"onPropsChange","effects",!1,null,!0)},exports.retryPromiseDecorator=g,exports.runMiddlewares=function(e,r,t,n,o,i,c,a){if("onPropsChange"===o&&void 0===t)return{newState:null,newLoading:!1};if(e&&e.length>0){var u=e.reduce((function(e,r){var t=r.effects({isAsync:c,name:o,type:i,context:a},e.oldState,e.newState,n);return{newState:(null==t?void 0:t.state)||e.newState,oldState:(null==t?void 0:t.state)?e.newState:e.oldState,loading:null==(null==t?void 0:t.loading)?e.loading:t.loading}}),{oldState:r,newState:t,loading:n});return{newLoading:u.loading,newState:u.newState}}return{newState:t,newLoading:n}},exports.setGlobalConfig=function(e){Object.keys(e).forEach((function(r){null!=e[r]&&(s[r]=e[r])}))},exports.updateErrorMap=p;
997
2
  //# sourceMappingURL=impl.js.map