state-decorator 7.0.0-beta.9-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.
- package/README.md +42 -11
- package/development.d.ts +24 -0
- package/development.js +2 -0
- package/development.js.map +1 -0
- package/es/development.d.ts +24 -0
- package/es/development.js +2 -0
- package/es/development.js.map +1 -0
- package/es/graph.d.ts +8 -0
- package/es/helpers.js +1 -162
- package/es/helpers.js.map +1 -1
- package/es/impl.d.ts +20 -18
- package/es/impl.js +1 -963
- package/es/impl.js.map +1 -1
- package/es/index.d.ts +6 -9
- package/es/index.js +1 -1013
- package/es/index.js.map +1 -1
- package/es/middlewares.d.ts +0 -9
- package/es/middlewares.js +1 -519
- package/es/middlewares.js.map +1 -1
- package/es/test.d.ts +7 -7
- package/es/test.js +1 -349
- package/es/test.js.map +1 -1
- package/es/types.d.ts +70 -58
- package/es/v5.js +1 -301
- package/es/v5.js.map +1 -1
- package/es/v5_test.js +1 -392
- package/es/v5_test.js.map +1 -1
- package/es/v5_types.d.ts +15 -15
- package/es/v6.d.ts +5 -2
- package/es/v6.js +1 -96
- package/es/v6.js.map +1 -1
- package/graph.d.ts +8 -0
- package/helpers.js +1 -174
- package/helpers.js.map +1 -1
- package/impl.d.ts +20 -18
- package/impl.js +1 -996
- package/impl.js.map +1 -1
- package/index.d.ts +6 -9
- package/index.js +1 -1044
- package/index.js.map +1 -1
- package/middlewares.d.ts +0 -9
- package/middlewares.js +1 -526
- package/middlewares.js.map +1 -1
- package/package.json +1 -1
- package/test.d.ts +7 -7
- package/test.js +1 -358
- package/test.js.map +1 -1
- package/types.d.ts +70 -58
- package/v5.js +1 -322
- package/v5.js.map +1 -1
- package/v5_test.js +1 -416
- package/v5_test.js.map +1 -1
- package/v5_types.d.ts +15 -15
- package/v6.d.ts +5 -2
- package/v6.js +1 -120
- 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
|