UNPKG

79.7 kBJavaScriptView Raw
1var __extends = (this && this.__extends) || (function () {
2 var extendStatics = function (d, b) {
3 extendStatics = Object.setPrototypeOf ||
4 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
5 function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
6 return extendStatics(d, b);
7 };
8 return function (d, b) {
9 if (typeof b !== "function" && b !== null)
10 throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
11 extendStatics(d, b);
12 function __() { this.constructor = d; }
13 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
14 };
15})();
16var __generator = (this && this.__generator) || function (thisArg, body) {
17 var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
18 return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
19 function verb(n) { return function (v) { return step([n, v]); }; }
20 function step(op) {
21 if (f) throw new TypeError("Generator is already executing.");
22 while (_) try {
23 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;
24 if (y = 0, t) op = [op[0] & 2, t.value];
25 switch (op[0]) {
26 case 0: case 1: t = op; break;
27 case 4: _.label++; return { value: op[1], done: false };
28 case 5: _.label++; y = op[1]; op = [0]; continue;
29 case 7: op = _.ops.pop(); _.trys.pop(); continue;
30 default:
31 if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
32 if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
33 if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
34 if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
35 if (t[2]) _.ops.pop();
36 _.trys.pop(); continue;
37 }
38 op = body.call(thisArg, _);
39 } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
40 if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
41 }
42};
43var __spreadArray = (this && this.__spreadArray) || function (to, from) {
44 for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)
45 to[j] = from[i];
46 return to;
47};
48var __create = Object.create;
49var __defProp = Object.defineProperty;
50var __defProps = Object.defineProperties;
51var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
52var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
53var __getOwnPropNames = Object.getOwnPropertyNames;
54var __getOwnPropSymbols = Object.getOwnPropertySymbols;
55var __getProtoOf = Object.getPrototypeOf;
56var __hasOwnProp = Object.prototype.hasOwnProperty;
57var __propIsEnum = Object.prototype.propertyIsEnumerable;
58var __defNormalProp = function (obj, key, value) { return key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value: value }) : obj[key] = value; };
59var __spreadValues = function (a, b) {
60 for (var prop in b || (b = {}))
61 if (__hasOwnProp.call(b, prop))
62 __defNormalProp(a, prop, b[prop]);
63 if (__getOwnPropSymbols)
64 for (var _i = 0, _c = __getOwnPropSymbols(b); _i < _c.length; _i++) {
65 var prop = _c[_i];
66 if (__propIsEnum.call(b, prop))
67 __defNormalProp(a, prop, b[prop]);
68 }
69 return a;
70};
71var __spreadProps = function (a, b) { return __defProps(a, __getOwnPropDescs(b)); };
72var __markAsModule = function (target) { return __defProp(target, "__esModule", { value: true }); };
73var __export = function (target, all) {
74 for (var name in all)
75 __defProp(target, name, { get: all[name], enumerable: true });
76};
77var __reExport = function (target, module2, desc) {
78 if (module2 && typeof module2 === "object" || typeof module2 === "function") {
79 var _loop_1 = function (key) {
80 if (!__hasOwnProp.call(target, key) && key !== "default")
81 __defProp(target, key, { get: function () { return module2[key]; }, enumerable: !(desc = __getOwnPropDesc(module2, key)) || desc.enumerable });
82 };
83 for (var _i = 0, _c = __getOwnPropNames(module2); _i < _c.length; _i++) {
84 var key = _c[_i];
85 _loop_1(key);
86 }
87 }
88 return target;
89};
90var __toModule = function (module2) {
91 return __reExport(__markAsModule(__defProp(module2 != null ? __create(__getProtoOf(module2)) : {}, "default", module2 && module2.__esModule && "default" in module2 ? { get: function () { return module2.default; }, enumerable: true } : { value: module2, enumerable: true })), module2);
92};
93var __async = function (__this, __arguments, generator) {
94 return new Promise(function (resolve, reject) {
95 var fulfilled = function (value) {
96 try {
97 step(generator.next(value));
98 }
99 catch (e) {
100 reject(e);
101 }
102 };
103 var rejected = function (value) {
104 try {
105 step(generator.throw(value));
106 }
107 catch (e) {
108 reject(e);
109 }
110 };
111 var step = function (x) { return x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected); };
112 step((generator = generator.apply(__this, __arguments)).next());
113 });
114};
115// src/index.ts
116__markAsModule(exports);
117__export(exports, {
118 MiddlewareArray: function () { return MiddlewareArray; },
119 TaskAbortError: function () { return TaskAbortError; },
120 addListener: function () { return addListener; },
121 clearAllListeners: function () { return clearAllListeners; },
122 configureStore: function () { return configureStore; },
123 createAction: function () { return createAction; },
124 createAsyncThunk: function () { return createAsyncThunk; },
125 createDraftSafeSelector: function () { return createDraftSafeSelector; },
126 createEntityAdapter: function () { return createEntityAdapter; },
127 createImmutableStateInvariantMiddleware: function () { return createImmutableStateInvariantMiddleware; },
128 createListenerMiddleware: function () { return createListenerMiddleware; },
129 createNextState: function () { return import_immer5.default; },
130 createReducer: function () { return createReducer; },
131 createSelector: function () { return import_reselect2.createSelector; },
132 createSerializableStateInvariantMiddleware: function () { return createSerializableStateInvariantMiddleware; },
133 createSlice: function () { return createSlice; },
134 current: function () { return import_immer5.current; },
135 findNonSerializableValue: function () { return findNonSerializableValue; },
136 freeze: function () { return import_immer5.freeze; },
137 getDefaultMiddleware: function () { return getDefaultMiddleware; },
138 getType: function () { return getType; },
139 isAllOf: function () { return isAllOf; },
140 isAnyOf: function () { return isAnyOf; },
141 isAsyncThunkAction: function () { return isAsyncThunkAction; },
142 isDraft: function () { return import_immer5.isDraft; },
143 isFulfilled: function () { return isFulfilled; },
144 isImmutableDefault: function () { return isImmutableDefault; },
145 isPending: function () { return isPending; },
146 isPlain: function () { return isPlain; },
147 isPlainObject: function () { return isPlainObject; },
148 isRejected: function () { return isRejected; },
149 isRejectedWithValue: function () { return isRejectedWithValue; },
150 miniSerializeError: function () { return miniSerializeError; },
151 nanoid: function () { return nanoid; },
152 original: function () { return import_immer5.original; },
153 removeListener: function () { return removeListener; },
154 unwrapResult: function () { return unwrapResult; }
155});
156var import_immer4 = __toModule(require("immer"));
157__reExport(exports, __toModule(require("redux")));
158var import_immer5 = __toModule(require("immer"));
159var import_reselect2 = __toModule(require("reselect"));
160// src/createDraftSafeSelector.ts
161var import_immer = __toModule(require("immer"));
162var import_reselect = __toModule(require("reselect"));
163var createDraftSafeSelector = function () {
164 var args = [];
165 for (var _i = 0; _i < arguments.length; _i++) {
166 args[_i] = arguments[_i];
167 }
168 var selector = (0, import_reselect.createSelector).apply(void 0, args);
169 var wrappedSelector = function (value) {
170 var rest = [];
171 for (var _i = 1; _i < arguments.length; _i++) {
172 rest[_i - 1] = arguments[_i];
173 }
174 return selector.apply(void 0, __spreadArray([(0, import_immer.isDraft)(value) ? (0, import_immer.current)(value) : value], rest));
175 };
176 return wrappedSelector;
177};
178// src/configureStore.ts
179var import_redux2 = __toModule(require("redux"));
180// src/devtoolsExtension.ts
181var import_redux = __toModule(require("redux"));
182var composeWithDevTools = typeof window !== "undefined" && window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ ? window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ : function () {
183 if (arguments.length === 0)
184 return void 0;
185 if (typeof arguments[0] === "object")
186 return import_redux.compose;
187 return import_redux.compose.apply(null, arguments);
188};
189var devToolsEnhancer = typeof window !== "undefined" && window.__REDUX_DEVTOOLS_EXTENSION__ ? window.__REDUX_DEVTOOLS_EXTENSION__ : function () {
190 return function (noop2) {
191 return noop2;
192 };
193};
194// src/isPlainObject.ts
195function isPlainObject(value) {
196 if (typeof value !== "object" || value === null)
197 return false;
198 var proto = Object.getPrototypeOf(value);
199 if (proto === null)
200 return true;
201 var baseProto = proto;
202 while (Object.getPrototypeOf(baseProto) !== null) {
203 baseProto = Object.getPrototypeOf(baseProto);
204 }
205 return proto === baseProto;
206}
207// src/getDefaultMiddleware.ts
208var import_redux_thunk = __toModule(require("redux-thunk"));
209// src/utils.ts
210function getTimeMeasureUtils(maxDelay, fnName) {
211 var elapsed = 0;
212 return {
213 measureTime: function (fn) {
214 var started = Date.now();
215 try {
216 return fn();
217 }
218 finally {
219 var finished = Date.now();
220 elapsed += finished - started;
221 }
222 },
223 warnIfExceeded: function () {
224 if (elapsed > maxDelay) {
225 console.warn(fnName + " took " + elapsed + "ms, which is more than the warning threshold of " + maxDelay + "ms. \nIf your state or actions are very large, you may want to disable the middleware as it might cause too much of a slowdown in development mode. See https://redux-toolkit.js.org/api/getDefaultMiddleware for instructions.\nIt is disabled in production builds, so you don't need to worry about that.");
226 }
227 }
228 };
229}
230var MiddlewareArray = /** @class */ (function (_super) {
231 __extends(MiddlewareArray, _super);
232 function MiddlewareArray() {
233 var args = [];
234 for (var _i = 0; _i < arguments.length; _i++) {
235 args[_i] = arguments[_i];
236 }
237 var _this = _super.apply(this, args) || this;
238 Object.setPrototypeOf(_this, MiddlewareArray.prototype);
239 return _this;
240 }
241 Object.defineProperty(MiddlewareArray, Symbol.species, {
242 get: function () {
243 return MiddlewareArray;
244 },
245 enumerable: false,
246 configurable: true
247 });
248 MiddlewareArray.prototype.concat = function () {
249 var arr = [];
250 for (var _i = 0; _i < arguments.length; _i++) {
251 arr[_i] = arguments[_i];
252 }
253 return _super.prototype.concat.apply(this, arr);
254 };
255 MiddlewareArray.prototype.prepend = function () {
256 var arr = [];
257 for (var _i = 0; _i < arguments.length; _i++) {
258 arr[_i] = arguments[_i];
259 }
260 if (arr.length === 1 && Array.isArray(arr[0])) {
261 return new (MiddlewareArray.bind.apply(MiddlewareArray, __spreadArray([void 0], arr[0].concat(this))))();
262 }
263 return new (MiddlewareArray.bind.apply(MiddlewareArray, __spreadArray([void 0], arr.concat(this))))();
264 };
265 return MiddlewareArray;
266}(Array));
267// src/immutableStateInvariantMiddleware.ts
268var isProduction = false;
269var prefix = "Invariant failed";
270function invariant(condition, message) {
271 if (condition) {
272 return;
273 }
274 if (isProduction) {
275 throw new Error(prefix);
276 }
277 throw new Error(prefix + ": " + (message || ""));
278}
279function stringify(obj, serializer, indent, decycler) {
280 return JSON.stringify(obj, getSerialize(serializer, decycler), indent);
281}
282function getSerialize(serializer, decycler) {
283 var stack = [], keys = [];
284 if (!decycler)
285 decycler = function (_, value) {
286 if (stack[0] === value)
287 return "[Circular ~]";
288 return "[Circular ~." + keys.slice(0, stack.indexOf(value)).join(".") + "]";
289 };
290 return function (key, value) {
291 if (stack.length > 0) {
292 var thisPos = stack.indexOf(this);
293 ~thisPos ? stack.splice(thisPos + 1) : stack.push(this);
294 ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key);
295 if (~stack.indexOf(value))
296 value = decycler.call(this, key, value);
297 }
298 else
299 stack.push(value);
300 return serializer == null ? value : serializer.call(this, key, value);
301 };
302}
303function isImmutableDefault(value) {
304 return typeof value !== "object" || value === null || typeof value === "undefined" || Object.isFrozen(value);
305}
306function trackForMutations(isImmutable, ignorePaths, obj) {
307 var trackedProperties = trackProperties(isImmutable, ignorePaths, obj);
308 return {
309 detectMutations: function () {
310 return detectMutations(isImmutable, ignorePaths, trackedProperties, obj);
311 }
312 };
313}
314function trackProperties(isImmutable, ignorePaths, obj, path) {
315 if (ignorePaths === void 0) { ignorePaths = []; }
316 if (path === void 0) { path = ""; }
317 var tracked = { value: obj };
318 if (!isImmutable(obj)) {
319 tracked.children = {};
320 for (var key in obj) {
321 var childPath = path ? path + "." + key : key;
322 if (ignorePaths.length && ignorePaths.indexOf(childPath) !== -1) {
323 continue;
324 }
325 tracked.children[key] = trackProperties(isImmutable, ignorePaths, obj[key], childPath);
326 }
327 }
328 return tracked;
329}
330function detectMutations(isImmutable, ignorePaths, trackedProperty, obj, sameParentRef, path) {
331 if (ignorePaths === void 0) { ignorePaths = []; }
332 if (sameParentRef === void 0) { sameParentRef = false; }
333 if (path === void 0) { path = ""; }
334 var prevObj = trackedProperty ? trackedProperty.value : void 0;
335 var sameRef = prevObj === obj;
336 if (sameParentRef && !sameRef && !Number.isNaN(obj)) {
337 return { wasMutated: true, path: path };
338 }
339 if (isImmutable(prevObj) || isImmutable(obj)) {
340 return { wasMutated: false };
341 }
342 var keysToDetect = {};
343 for (var key in trackedProperty.children) {
344 keysToDetect[key] = true;
345 }
346 for (var key in obj) {
347 keysToDetect[key] = true;
348 }
349 for (var key in keysToDetect) {
350 var childPath = path ? path + "." + key : key;
351 if (ignorePaths.length && ignorePaths.indexOf(childPath) !== -1) {
352 continue;
353 }
354 var result = detectMutations(isImmutable, ignorePaths, trackedProperty.children[key], obj[key], sameRef, childPath);
355 if (result.wasMutated) {
356 return result;
357 }
358 }
359 return { wasMutated: false };
360}
361function createImmutableStateInvariantMiddleware(options) {
362 if (options === void 0) { options = {}; }
363 if (false) {
364 return function () { return function (next) { return function (action) { return next(action); }; }; };
365 }
366 var _c = options.isImmutable, isImmutable = _c === void 0 ? isImmutableDefault : _c, ignoredPaths = options.ignoredPaths, _d = options.warnAfter, warnAfter = _d === void 0 ? 32 : _d, ignore = options.ignore;
367 ignoredPaths = ignoredPaths || ignore;
368 var track = trackForMutations.bind(null, isImmutable, ignoredPaths);
369 return function (_c) {
370 var getState = _c.getState;
371 var state = getState();
372 var tracker = track(state);
373 var result;
374 return function (next) { return function (action) {
375 var measureUtils = getTimeMeasureUtils(warnAfter, "ImmutableStateInvariantMiddleware");
376 measureUtils.measureTime(function () {
377 state = getState();
378 result = tracker.detectMutations();
379 tracker = track(state);
380 invariant(!result.wasMutated, "A state mutation was detected between dispatches, in the path '" + (result.path || "") + "'. This may cause incorrect behavior. (https://redux.js.org/style-guide/style-guide#do-not-mutate-state)");
381 });
382 var dispatchedAction = next(action);
383 measureUtils.measureTime(function () {
384 state = getState();
385 result = tracker.detectMutations();
386 tracker = track(state);
387 result.wasMutated && invariant(!result.wasMutated, "A state mutation was detected inside a dispatch, in the path: " + (result.path || "") + ". Take a look at the reducer(s) handling the action " + stringify(action) + ". (https://redux.js.org/style-guide/style-guide#do-not-mutate-state)");
388 });
389 measureUtils.warnIfExceeded();
390 return dispatchedAction;
391 }; };
392 };
393}
394// src/serializableStateInvariantMiddleware.ts
395function isPlain(val) {
396 var type = typeof val;
397 return type === "undefined" || val === null || type === "string" || type === "boolean" || type === "number" || Array.isArray(val) || isPlainObject(val);
398}
399function findNonSerializableValue(value, path, isSerializable, getEntries, ignoredPaths) {
400 if (path === void 0) { path = ""; }
401 if (isSerializable === void 0) { isSerializable = isPlain; }
402 if (ignoredPaths === void 0) { ignoredPaths = []; }
403 var foundNestedSerializable;
404 if (!isSerializable(value)) {
405 return {
406 keyPath: path || "<root>",
407 value: value
408 };
409 }
410 if (typeof value !== "object" || value === null) {
411 return false;
412 }
413 var entries = getEntries != null ? getEntries(value) : Object.entries(value);
414 var hasIgnoredPaths = ignoredPaths.length > 0;
415 for (var _i = 0, entries_1 = entries; _i < entries_1.length; _i++) {
416 var _c = entries_1[_i], key = _c[0], nestedValue = _c[1];
417 var nestedPath = path ? path + "." + key : key;
418 if (hasIgnoredPaths && ignoredPaths.indexOf(nestedPath) >= 0) {
419 continue;
420 }
421 if (!isSerializable(nestedValue)) {
422 return {
423 keyPath: nestedPath,
424 value: nestedValue
425 };
426 }
427 if (typeof nestedValue === "object") {
428 foundNestedSerializable = findNonSerializableValue(nestedValue, nestedPath, isSerializable, getEntries, ignoredPaths);
429 if (foundNestedSerializable) {
430 return foundNestedSerializable;
431 }
432 }
433 }
434 return false;
435}
436function createSerializableStateInvariantMiddleware(options) {
437 if (options === void 0) { options = {}; }
438 if (false) {
439 return function () { return function (next) { return function (action) { return next(action); }; }; };
440 }
441 var _c = options.isSerializable, isSerializable = _c === void 0 ? isPlain : _c, getEntries = options.getEntries, _d = options.ignoredActions, ignoredActions = _d === void 0 ? [] : _d, _e = options.ignoredActionPaths, ignoredActionPaths = _e === void 0 ? ["meta.arg", "meta.baseQueryMeta"] : _e, _f = options.ignoredPaths, ignoredPaths = _f === void 0 ? [] : _f, _g = options.warnAfter, warnAfter = _g === void 0 ? 32 : _g, _h = options.ignoreState, ignoreState = _h === void 0 ? false : _h, _j = options.ignoreActions, ignoreActions = _j === void 0 ? false : _j;
442 return function (storeAPI) { return function (next) { return function (action) {
443 var result = next(action);
444 var measureUtils = getTimeMeasureUtils(warnAfter, "SerializableStateInvariantMiddleware");
445 if (!ignoreActions && !(ignoredActions.length && ignoredActions.indexOf(action.type) !== -1)) {
446 measureUtils.measureTime(function () {
447 var foundActionNonSerializableValue = findNonSerializableValue(action, "", isSerializable, getEntries, ignoredActionPaths);
448 if (foundActionNonSerializableValue) {
449 var keyPath = foundActionNonSerializableValue.keyPath, value = foundActionNonSerializableValue.value;
450 console.error("A non-serializable value was detected in an action, in the path: `" + keyPath + "`. Value:", value, "\nTake a look at the logic that dispatched this action: ", action, "\n(See https://redux.js.org/faq/actions#why-should-type-be-a-string-or-at-least-serializable-why-should-my-action-types-be-constants)", "\n(To allow non-serializable values see: https://redux-toolkit.js.org/usage/usage-guide#working-with-non-serializable-data)");
451 }
452 });
453 }
454 if (!ignoreState) {
455 measureUtils.measureTime(function () {
456 var state = storeAPI.getState();
457 var foundStateNonSerializableValue = findNonSerializableValue(state, "", isSerializable, getEntries, ignoredPaths);
458 if (foundStateNonSerializableValue) {
459 var keyPath = foundStateNonSerializableValue.keyPath, value = foundStateNonSerializableValue.value;
460 console.error("A non-serializable value was detected in the state, in the path: `" + keyPath + "`. Value:", value, "\nTake a look at the reducer(s) handling this action type: " + action.type + ".\n(See https://redux.js.org/faq/organizing-state#can-i-put-functions-promises-or-other-non-serializable-items-in-my-store-state)");
461 }
462 });
463 measureUtils.warnIfExceeded();
464 }
465 return result;
466 }; }; };
467}
468// src/getDefaultMiddleware.ts
469function isBoolean(x) {
470 return typeof x === "boolean";
471}
472function curryGetDefaultMiddleware() {
473 return function curriedGetDefaultMiddleware(options) {
474 return getDefaultMiddleware(options);
475 };
476}
477function getDefaultMiddleware(options) {
478 if (options === void 0) { options = {}; }
479 var _c = options.thunk, thunk = _c === void 0 ? true : _c, _d = options.immutableCheck, immutableCheck = _d === void 0 ? true : _d, _e = options.serializableCheck, serializableCheck = _e === void 0 ? true : _e;
480 var middlewareArray = new MiddlewareArray();
481 if (thunk) {
482 if (isBoolean(thunk)) {
483 middlewareArray.push(import_redux_thunk.default);
484 }
485 else {
486 middlewareArray.push(import_redux_thunk.default.withExtraArgument(thunk.extraArgument));
487 }
488 }
489 if (true) {
490 if (immutableCheck) {
491 var immutableOptions = {};
492 if (!isBoolean(immutableCheck)) {
493 immutableOptions = immutableCheck;
494 }
495 middlewareArray.unshift(createImmutableStateInvariantMiddleware(immutableOptions));
496 }
497 if (serializableCheck) {
498 var serializableOptions = {};
499 if (!isBoolean(serializableCheck)) {
500 serializableOptions = serializableCheck;
501 }
502 middlewareArray.push(createSerializableStateInvariantMiddleware(serializableOptions));
503 }
504 }
505 return middlewareArray;
506}
507// src/configureStore.ts
508var IS_PRODUCTION = false;
509function configureStore(options) {
510 var curriedGetDefaultMiddleware = curryGetDefaultMiddleware();
511 var _c = options || {}, _d = _c.reducer, reducer = _d === void 0 ? void 0 : _d, _e = _c.middleware, middleware = _e === void 0 ? curriedGetDefaultMiddleware() : _e, _f = _c.devTools, devTools = _f === void 0 ? true : _f, _g = _c.preloadedState, preloadedState = _g === void 0 ? void 0 : _g, _h = _c.enhancers, enhancers = _h === void 0 ? void 0 : _h;
512 var rootReducer;
513 if (typeof reducer === "function") {
514 rootReducer = reducer;
515 }
516 else if (isPlainObject(reducer)) {
517 rootReducer = (0, import_redux2.combineReducers)(reducer);
518 }
519 else {
520 throw new Error('"reducer" is a required argument, and must be a function or an object of functions that can be passed to combineReducers');
521 }
522 var finalMiddleware = middleware;
523 if (typeof finalMiddleware === "function") {
524 finalMiddleware = finalMiddleware(curriedGetDefaultMiddleware);
525 if (!IS_PRODUCTION && !Array.isArray(finalMiddleware)) {
526 throw new Error("when using a middleware builder function, an array of middleware must be returned");
527 }
528 }
529 if (!IS_PRODUCTION && finalMiddleware.some(function (item) { return typeof item !== "function"; })) {
530 throw new Error("each middleware provided to configureStore must be a function");
531 }
532 var middlewareEnhancer = (0, import_redux2.applyMiddleware).apply(void 0, finalMiddleware);
533 var finalCompose = import_redux2.compose;
534 if (devTools) {
535 finalCompose = composeWithDevTools(__spreadValues({
536 trace: !IS_PRODUCTION
537 }, typeof devTools === "object" && devTools));
538 }
539 var storeEnhancers = [middlewareEnhancer];
540 if (Array.isArray(enhancers)) {
541 storeEnhancers = __spreadArray([middlewareEnhancer], enhancers);
542 }
543 else if (typeof enhancers === "function") {
544 storeEnhancers = enhancers(storeEnhancers);
545 }
546 var composedEnhancer = finalCompose.apply(void 0, storeEnhancers);
547 return (0, import_redux2.createStore)(rootReducer, preloadedState, composedEnhancer);
548}
549// src/createAction.ts
550function createAction(type, prepareAction) {
551 function actionCreator() {
552 var args = [];
553 for (var _i = 0; _i < arguments.length; _i++) {
554 args[_i] = arguments[_i];
555 }
556 if (prepareAction) {
557 var prepared = prepareAction.apply(void 0, args);
558 if (!prepared) {
559 throw new Error("prepareAction did not return an object");
560 }
561 return __spreadValues(__spreadValues({
562 type: type,
563 payload: prepared.payload
564 }, "meta" in prepared && { meta: prepared.meta }), "error" in prepared && { error: prepared.error });
565 }
566 return { type: type, payload: args[0] };
567 }
568 actionCreator.toString = function () { return "" + type; };
569 actionCreator.type = type;
570 actionCreator.match = function (action) { return action.type === type; };
571 return actionCreator;
572}
573function isFSA(action) {
574 return isPlainObject(action) && typeof action.type === "string" && Object.keys(action).every(isValidKey);
575}
576function isValidKey(key) {
577 return ["type", "payload", "error", "meta"].indexOf(key) > -1;
578}
579function getType(actionCreator) {
580 return "" + actionCreator;
581}
582// src/createReducer.ts
583var import_immer2 = __toModule(require("immer"));
584// src/mapBuilders.ts
585function executeReducerBuilderCallback(builderCallback) {
586 var actionsMap = {};
587 var actionMatchers = [];
588 var defaultCaseReducer;
589 var builder = {
590 addCase: function (typeOrActionCreator, reducer) {
591 if (true) {
592 if (actionMatchers.length > 0) {
593 throw new Error("`builder.addCase` should only be called before calling `builder.addMatcher`");
594 }
595 if (defaultCaseReducer) {
596 throw new Error("`builder.addCase` should only be called before calling `builder.addDefaultCase`");
597 }
598 }
599 var type = typeof typeOrActionCreator === "string" ? typeOrActionCreator : typeOrActionCreator.type;
600 if (type in actionsMap) {
601 throw new Error("addCase cannot be called with two reducers for the same action type");
602 }
603 actionsMap[type] = reducer;
604 return builder;
605 },
606 addMatcher: function (matcher, reducer) {
607 if (true) {
608 if (defaultCaseReducer) {
609 throw new Error("`builder.addMatcher` should only be called before calling `builder.addDefaultCase`");
610 }
611 }
612 actionMatchers.push({ matcher: matcher, reducer: reducer });
613 return builder;
614 },
615 addDefaultCase: function (reducer) {
616 if (true) {
617 if (defaultCaseReducer) {
618 throw new Error("`builder.addDefaultCase` can only be called once");
619 }
620 }
621 defaultCaseReducer = reducer;
622 return builder;
623 }
624 };
625 builderCallback(builder);
626 return [actionsMap, actionMatchers, defaultCaseReducer];
627}
628// src/createReducer.ts
629function isStateFunction(x) {
630 return typeof x === "function";
631}
632function createReducer(initialState, mapOrBuilderCallback, actionMatchers, defaultCaseReducer) {
633 if (actionMatchers === void 0) { actionMatchers = []; }
634 var _c = typeof mapOrBuilderCallback === "function" ? executeReducerBuilderCallback(mapOrBuilderCallback) : [mapOrBuilderCallback, actionMatchers, defaultCaseReducer], actionsMap = _c[0], finalActionMatchers = _c[1], finalDefaultCaseReducer = _c[2];
635 var getInitialState;
636 if (isStateFunction(initialState)) {
637 getInitialState = function () { return (0, import_immer2.default)(initialState(), function () {
638 }); };
639 }
640 else {
641 var frozenInitialState_1 = (0, import_immer2.default)(initialState, function () {
642 });
643 getInitialState = function () { return frozenInitialState_1; };
644 }
645 function reducer(state, action) {
646 if (state === void 0) { state = getInitialState(); }
647 var caseReducers = __spreadArray([
648 actionsMap[action.type]
649 ], finalActionMatchers.filter(function (_c) {
650 var matcher = _c.matcher;
651 return matcher(action);
652 }).map(function (_c) {
653 var reducer2 = _c.reducer;
654 return reducer2;
655 }));
656 if (caseReducers.filter(function (cr) { return !!cr; }).length === 0) {
657 caseReducers = [finalDefaultCaseReducer];
658 }
659 return caseReducers.reduce(function (previousState, caseReducer) {
660 if (caseReducer) {
661 if ((0, import_immer2.isDraft)(previousState)) {
662 var draft = previousState;
663 var result = caseReducer(draft, action);
664 if (typeof result === "undefined") {
665 return previousState;
666 }
667 return result;
668 }
669 else if (!(0, import_immer2.isDraftable)(previousState)) {
670 var result = caseReducer(previousState, action);
671 if (typeof result === "undefined") {
672 if (previousState === null) {
673 return previousState;
674 }
675 throw Error("A case reducer on a non-draftable value must not return undefined");
676 }
677 return result;
678 }
679 else {
680 return (0, import_immer2.default)(previousState, function (draft) {
681 return caseReducer(draft, action);
682 });
683 }
684 }
685 return previousState;
686 }, state);
687 }
688 reducer.getInitialState = getInitialState;
689 return reducer;
690}
691// src/createSlice.ts
692function getType2(slice, actionKey) {
693 return slice + "/" + actionKey;
694}
695function createSlice(options) {
696 var name = options.name;
697 if (!name) {
698 throw new Error("`name` is a required option for createSlice");
699 }
700 var initialState = typeof options.initialState == "function" ? options.initialState : (0, import_immer5.default)(options.initialState, function () {
701 });
702 var reducers = options.reducers || {};
703 var reducerNames = Object.keys(reducers);
704 var sliceCaseReducersByName = {};
705 var sliceCaseReducersByType = {};
706 var actionCreators = {};
707 reducerNames.forEach(function (reducerName) {
708 var maybeReducerWithPrepare = reducers[reducerName];
709 var type = getType2(name, reducerName);
710 var caseReducer;
711 var prepareCallback;
712 if ("reducer" in maybeReducerWithPrepare) {
713 caseReducer = maybeReducerWithPrepare.reducer;
714 prepareCallback = maybeReducerWithPrepare.prepare;
715 }
716 else {
717 caseReducer = maybeReducerWithPrepare;
718 }
719 sliceCaseReducersByName[reducerName] = caseReducer;
720 sliceCaseReducersByType[type] = caseReducer;
721 actionCreators[reducerName] = prepareCallback ? createAction(type, prepareCallback) : createAction(type);
722 });
723 function buildReducer() {
724 var _c = typeof options.extraReducers === "function" ? executeReducerBuilderCallback(options.extraReducers) : [options.extraReducers], _d = _c[0], extraReducers = _d === void 0 ? {} : _d, _e = _c[1], actionMatchers = _e === void 0 ? [] : _e, _f = _c[2], defaultCaseReducer = _f === void 0 ? void 0 : _f;
725 var finalCaseReducers = __spreadValues(__spreadValues({}, extraReducers), sliceCaseReducersByType);
726 return createReducer(initialState, finalCaseReducers, actionMatchers, defaultCaseReducer);
727 }
728 var _reducer;
729 return {
730 name: name,
731 reducer: function (state, action) {
732 if (!_reducer)
733 _reducer = buildReducer();
734 return _reducer(state, action);
735 },
736 actions: actionCreators,
737 caseReducers: sliceCaseReducersByName,
738 getInitialState: function () {
739 if (!_reducer)
740 _reducer = buildReducer();
741 return _reducer.getInitialState();
742 }
743 };
744}
745// src/entities/entity_state.ts
746function getInitialEntityState() {
747 return {
748 ids: [],
749 entities: {}
750 };
751}
752function createInitialStateFactory() {
753 function getInitialState(additionalState) {
754 if (additionalState === void 0) { additionalState = {}; }
755 return Object.assign(getInitialEntityState(), additionalState);
756 }
757 return { getInitialState: getInitialState };
758}
759// src/entities/state_selectors.ts
760function createSelectorsFactory() {
761 function getSelectors(selectState) {
762 var selectIds = function (state) { return state.ids; };
763 var selectEntities = function (state) { return state.entities; };
764 var selectAll = createDraftSafeSelector(selectIds, selectEntities, function (ids, entities) { return ids.map(function (id) { return entities[id]; }); });
765 var selectId = function (_, id) { return id; };
766 var selectById = function (entities, id) { return entities[id]; };
767 var selectTotal = createDraftSafeSelector(selectIds, function (ids) { return ids.length; });
768 if (!selectState) {
769 return {
770 selectIds: selectIds,
771 selectEntities: selectEntities,
772 selectAll: selectAll,
773 selectTotal: selectTotal,
774 selectById: createDraftSafeSelector(selectEntities, selectId, selectById)
775 };
776 }
777 var selectGlobalizedEntities = createDraftSafeSelector(selectState, selectEntities);
778 return {
779 selectIds: createDraftSafeSelector(selectState, selectIds),
780 selectEntities: selectGlobalizedEntities,
781 selectAll: createDraftSafeSelector(selectState, selectAll),
782 selectTotal: createDraftSafeSelector(selectState, selectTotal),
783 selectById: createDraftSafeSelector(selectGlobalizedEntities, selectId, selectById)
784 };
785 }
786 return { getSelectors: getSelectors };
787}
788// src/entities/state_adapter.ts
789var import_immer3 = __toModule(require("immer"));
790function createSingleArgumentStateOperator(mutator) {
791 var operator = createStateOperator(function (_, state) { return mutator(state); });
792 return function operation(state) {
793 return operator(state, void 0);
794 };
795}
796function createStateOperator(mutator) {
797 return function operation(state, arg) {
798 function isPayloadActionArgument(arg2) {
799 return isFSA(arg2);
800 }
801 var runMutator = function (draft) {
802 if (isPayloadActionArgument(arg)) {
803 mutator(arg.payload, draft);
804 }
805 else {
806 mutator(arg, draft);
807 }
808 };
809 if ((0, import_immer3.isDraft)(state)) {
810 runMutator(state);
811 return state;
812 }
813 else {
814 return (0, import_immer3.default)(state, runMutator);
815 }
816 };
817}
818// src/entities/utils.ts
819function selectIdValue(entity, selectId) {
820 var key = selectId(entity);
821 if (key === void 0) {
822 console.warn("The entity passed to the `selectId` implementation returned undefined.", "You should probably provide your own `selectId` implementation.", "The entity that was passed:", entity, "The `selectId` implementation:", selectId.toString());
823 }
824 return key;
825}
826function ensureEntitiesArray(entities) {
827 if (!Array.isArray(entities)) {
828 entities = Object.values(entities);
829 }
830 return entities;
831}
832function splitAddedUpdatedEntities(newEntities, selectId, state) {
833 newEntities = ensureEntitiesArray(newEntities);
834 var added = [];
835 var updated = [];
836 for (var _i = 0, newEntities_1 = newEntities; _i < newEntities_1.length; _i++) {
837 var entity = newEntities_1[_i];
838 var id = selectIdValue(entity, selectId);
839 if (id in state.entities) {
840 updated.push({ id: id, changes: entity });
841 }
842 else {
843 added.push(entity);
844 }
845 }
846 return [added, updated];
847}
848// src/entities/unsorted_state_adapter.ts
849function createUnsortedStateAdapter(selectId) {
850 function addOneMutably(entity, state) {
851 var key = selectIdValue(entity, selectId);
852 if (key in state.entities) {
853 return;
854 }
855 state.ids.push(key);
856 state.entities[key] = entity;
857 }
858 function addManyMutably(newEntities, state) {
859 newEntities = ensureEntitiesArray(newEntities);
860 for (var _i = 0, newEntities_2 = newEntities; _i < newEntities_2.length; _i++) {
861 var entity = newEntities_2[_i];
862 addOneMutably(entity, state);
863 }
864 }
865 function setOneMutably(entity, state) {
866 var key = selectIdValue(entity, selectId);
867 if (!(key in state.entities)) {
868 state.ids.push(key);
869 }
870 state.entities[key] = entity;
871 }
872 function setManyMutably(newEntities, state) {
873 newEntities = ensureEntitiesArray(newEntities);
874 for (var _i = 0, newEntities_3 = newEntities; _i < newEntities_3.length; _i++) {
875 var entity = newEntities_3[_i];
876 setOneMutably(entity, state);
877 }
878 }
879 function setAllMutably(newEntities, state) {
880 newEntities = ensureEntitiesArray(newEntities);
881 state.ids = [];
882 state.entities = {};
883 addManyMutably(newEntities, state);
884 }
885 function removeOneMutably(key, state) {
886 return removeManyMutably([key], state);
887 }
888 function removeManyMutably(keys, state) {
889 var didMutate = false;
890 keys.forEach(function (key) {
891 if (key in state.entities) {
892 delete state.entities[key];
893 didMutate = true;
894 }
895 });
896 if (didMutate) {
897 state.ids = state.ids.filter(function (id) { return id in state.entities; });
898 }
899 }
900 function removeAllMutably(state) {
901 Object.assign(state, {
902 ids: [],
903 entities: {}
904 });
905 }
906 function takeNewKey(keys, update, state) {
907 var original2 = state.entities[update.id];
908 var updated = Object.assign({}, original2, update.changes);
909 var newKey = selectIdValue(updated, selectId);
910 var hasNewKey = newKey !== update.id;
911 if (hasNewKey) {
912 keys[update.id] = newKey;
913 delete state.entities[update.id];
914 }
915 state.entities[newKey] = updated;
916 return hasNewKey;
917 }
918 function updateOneMutably(update, state) {
919 return updateManyMutably([update], state);
920 }
921 function updateManyMutably(updates, state) {
922 var newKeys = {};
923 var updatesPerEntity = {};
924 updates.forEach(function (update) {
925 if (update.id in state.entities) {
926 updatesPerEntity[update.id] = {
927 id: update.id,
928 changes: __spreadValues(__spreadValues({}, updatesPerEntity[update.id] ? updatesPerEntity[update.id].changes : null), update.changes)
929 };
930 }
931 });
932 updates = Object.values(updatesPerEntity);
933 var didMutateEntities = updates.length > 0;
934 if (didMutateEntities) {
935 var didMutateIds = updates.filter(function (update) { return takeNewKey(newKeys, update, state); }).length > 0;
936 if (didMutateIds) {
937 state.ids = state.ids.map(function (id) { return newKeys[id] || id; });
938 }
939 }
940 }
941 function upsertOneMutably(entity, state) {
942 return upsertManyMutably([entity], state);
943 }
944 function upsertManyMutably(newEntities, state) {
945 var _c = splitAddedUpdatedEntities(newEntities, selectId, state), added = _c[0], updated = _c[1];
946 updateManyMutably(updated, state);
947 addManyMutably(added, state);
948 }
949 return {
950 removeAll: createSingleArgumentStateOperator(removeAllMutably),
951 addOne: createStateOperator(addOneMutably),
952 addMany: createStateOperator(addManyMutably),
953 setOne: createStateOperator(setOneMutably),
954 setMany: createStateOperator(setManyMutably),
955 setAll: createStateOperator(setAllMutably),
956 updateOne: createStateOperator(updateOneMutably),
957 updateMany: createStateOperator(updateManyMutably),
958 upsertOne: createStateOperator(upsertOneMutably),
959 upsertMany: createStateOperator(upsertManyMutably),
960 removeOne: createStateOperator(removeOneMutably),
961 removeMany: createStateOperator(removeManyMutably)
962 };
963}
964// src/entities/sorted_state_adapter.ts
965function createSortedStateAdapter(selectId, sort) {
966 var _c = createUnsortedStateAdapter(selectId), removeOne = _c.removeOne, removeMany = _c.removeMany, removeAll = _c.removeAll;
967 function addOneMutably(entity, state) {
968 return addManyMutably([entity], state);
969 }
970 function addManyMutably(newEntities, state) {
971 newEntities = ensureEntitiesArray(newEntities);
972 var models = newEntities.filter(function (model) { return !(selectIdValue(model, selectId) in state.entities); });
973 if (models.length !== 0) {
974 merge(models, state);
975 }
976 }
977 function setOneMutably(entity, state) {
978 return setManyMutably([entity], state);
979 }
980 function setManyMutably(newEntities, state) {
981 newEntities = ensureEntitiesArray(newEntities);
982 if (newEntities.length !== 0) {
983 merge(newEntities, state);
984 }
985 }
986 function setAllMutably(newEntities, state) {
987 newEntities = ensureEntitiesArray(newEntities);
988 state.entities = {};
989 state.ids = [];
990 addManyMutably(newEntities, state);
991 }
992 function updateOneMutably(update, state) {
993 return updateManyMutably([update], state);
994 }
995 function takeUpdatedModel(models, update, state) {
996 if (!(update.id in state.entities)) {
997 return false;
998 }
999 var original2 = state.entities[update.id];
1000 var updated = Object.assign({}, original2, update.changes);
1001 var newKey = selectIdValue(updated, selectId);
1002 delete state.entities[update.id];
1003 models.push(updated);
1004 return newKey !== update.id;
1005 }
1006 function updateManyMutably(updates, state) {
1007 var models = [];
1008 updates.forEach(function (update) { return takeUpdatedModel(models, update, state); });
1009 if (models.length !== 0) {
1010 merge(models, state);
1011 }
1012 }
1013 function upsertOneMutably(entity, state) {
1014 return upsertManyMutably([entity], state);
1015 }
1016 function upsertManyMutably(newEntities, state) {
1017 var _c = splitAddedUpdatedEntities(newEntities, selectId, state), added = _c[0], updated = _c[1];
1018 updateManyMutably(updated, state);
1019 addManyMutably(added, state);
1020 }
1021 function areArraysEqual(a, b) {
1022 if (a.length !== b.length) {
1023 return false;
1024 }
1025 for (var i = 0; i < a.length && i < b.length; i++) {
1026 if (a[i] === b[i]) {
1027 continue;
1028 }
1029 return false;
1030 }
1031 return true;
1032 }
1033 function merge(models, state) {
1034 models.forEach(function (model) {
1035 state.entities[selectId(model)] = model;
1036 });
1037 var allEntities = Object.values(state.entities);
1038 allEntities.sort(sort);
1039 var newSortedIds = allEntities.map(selectId);
1040 var ids = state.ids;
1041 if (!areArraysEqual(ids, newSortedIds)) {
1042 state.ids = newSortedIds;
1043 }
1044 }
1045 return {
1046 removeOne: removeOne,
1047 removeMany: removeMany,
1048 removeAll: removeAll,
1049 addOne: createStateOperator(addOneMutably),
1050 updateOne: createStateOperator(updateOneMutably),
1051 upsertOne: createStateOperator(upsertOneMutably),
1052 setOne: createStateOperator(setOneMutably),
1053 setMany: createStateOperator(setManyMutably),
1054 setAll: createStateOperator(setAllMutably),
1055 addMany: createStateOperator(addManyMutably),
1056 updateMany: createStateOperator(updateManyMutably),
1057 upsertMany: createStateOperator(upsertManyMutably)
1058 };
1059}
1060// src/entities/create_adapter.ts
1061function createEntityAdapter(options) {
1062 if (options === void 0) { options = {}; }
1063 var _c = __spreadValues({
1064 sortComparer: false,
1065 selectId: function (instance) { return instance.id; }
1066 }, options), selectId = _c.selectId, sortComparer = _c.sortComparer;
1067 var stateFactory = createInitialStateFactory();
1068 var selectorsFactory = createSelectorsFactory();
1069 var stateAdapter = sortComparer ? createSortedStateAdapter(selectId, sortComparer) : createUnsortedStateAdapter(selectId);
1070 return __spreadValues(__spreadValues(__spreadValues({
1071 selectId: selectId,
1072 sortComparer: sortComparer
1073 }, stateFactory), selectorsFactory), stateAdapter);
1074}
1075// src/nanoid.ts
1076var urlAlphabet = "ModuleSymbhasOwnPr-0123456789ABCDEFGHNRVfgctiUvz_KqYTJkLxpZXIjQW";
1077var nanoid = function (size) {
1078 if (size === void 0) { size = 21; }
1079 var id = "";
1080 var i = size;
1081 while (i--) {
1082 id += urlAlphabet[Math.random() * 64 | 0];
1083 }
1084 return id;
1085};
1086// src/createAsyncThunk.ts
1087var commonProperties = [
1088 "name",
1089 "message",
1090 "stack",
1091 "code"
1092];
1093var RejectWithValue = /** @class */ (function () {
1094 function RejectWithValue(payload, meta) {
1095 this.payload = payload;
1096 this.meta = meta;
1097 }
1098 return RejectWithValue;
1099}());
1100var FulfillWithMeta = /** @class */ (function () {
1101 function FulfillWithMeta(payload, meta) {
1102 this.payload = payload;
1103 this.meta = meta;
1104 }
1105 return FulfillWithMeta;
1106}());
1107var miniSerializeError = function (value) {
1108 if (typeof value === "object" && value !== null) {
1109 var simpleError = {};
1110 for (var _i = 0, commonProperties_1 = commonProperties; _i < commonProperties_1.length; _i++) {
1111 var property = commonProperties_1[_i];
1112 if (typeof value[property] === "string") {
1113 simpleError[property] = value[property];
1114 }
1115 }
1116 return simpleError;
1117 }
1118 return { message: String(value) };
1119};
1120function createAsyncThunk(typePrefix, payloadCreator, options) {
1121 var fulfilled = createAction(typePrefix + "/fulfilled", function (payload, requestId, arg, meta) { return ({
1122 payload: payload,
1123 meta: __spreadProps(__spreadValues({}, meta || {}), {
1124 arg: arg,
1125 requestId: requestId,
1126 requestStatus: "fulfilled"
1127 })
1128 }); });
1129 var pending = createAction(typePrefix + "/pending", function (requestId, arg, meta) { return ({
1130 payload: void 0,
1131 meta: __spreadProps(__spreadValues({}, meta || {}), {
1132 arg: arg,
1133 requestId: requestId,
1134 requestStatus: "pending"
1135 })
1136 }); });
1137 var rejected = createAction(typePrefix + "/rejected", function (error, requestId, arg, payload, meta) { return ({
1138 payload: payload,
1139 error: (options && options.serializeError || miniSerializeError)(error || "Rejected"),
1140 meta: __spreadProps(__spreadValues({}, meta || {}), {
1141 arg: arg,
1142 requestId: requestId,
1143 rejectedWithValue: !!payload,
1144 requestStatus: "rejected",
1145 aborted: (error == null ? void 0 : error.name) === "AbortError",
1146 condition: (error == null ? void 0 : error.name) === "ConditionError"
1147 })
1148 }); });
1149 var displayedWarning = false;
1150 var AC = typeof AbortController !== "undefined" ? AbortController : /** @class */ (function () {
1151 function class_1() {
1152 this.signal = {
1153 aborted: false,
1154 addEventListener: function () {
1155 },
1156 dispatchEvent: function () {
1157 return false;
1158 },
1159 onabort: function () {
1160 },
1161 removeEventListener: function () {
1162 }
1163 };
1164 }
1165 class_1.prototype.abort = function () {
1166 if (true) {
1167 if (!displayedWarning) {
1168 displayedWarning = true;
1169 console.info("This platform does not implement AbortController. \nIf you want to use the AbortController to react to `abort` events, please consider importing a polyfill like 'abortcontroller-polyfill/dist/abortcontroller-polyfill-only'.");
1170 }
1171 }
1172 };
1173 return class_1;
1174 }());
1175 function actionCreator(arg) {
1176 return function (dispatch, getState, extra) {
1177 var requestId = (options == null ? void 0 : options.idGenerator) ? options.idGenerator(arg) : nanoid();
1178 var abortController = new AC();
1179 var abortReason;
1180 var abortedPromise = new Promise(function (_, reject) { return abortController.signal.addEventListener("abort", function () { return reject({ name: "AbortError", message: abortReason || "Aborted" }); }); });
1181 var started = false;
1182 function abort(reason) {
1183 if (started) {
1184 abortReason = reason;
1185 abortController.abort();
1186 }
1187 }
1188 var promise = function () {
1189 return __async(this, null, function () {
1190 var _a, _b, finalAction, conditionResult, err_1, skipDispatch;
1191 return __generator(this, function (_c) {
1192 switch (_c.label) {
1193 case 0:
1194 _c.trys.push([0, 4, , 5]);
1195 conditionResult = (_a = options == null ? void 0 : options.condition) == null ? void 0 : _a.call(options, arg, { getState: getState, extra: extra });
1196 if (!isThenable(conditionResult)) return [3 /*break*/, 2];
1197 return [4 /*yield*/, conditionResult];
1198 case 1:
1199 conditionResult = _c.sent();
1200 _c.label = 2;
1201 case 2:
1202 if (conditionResult === false) {
1203 throw {
1204 name: "ConditionError",
1205 message: "Aborted due to condition callback returning false."
1206 };
1207 }
1208 started = true;
1209 dispatch(pending(requestId, arg, (_b = options == null ? void 0 : options.getPendingMeta) == null ? void 0 : _b.call(options, { requestId: requestId, arg: arg }, { getState: getState, extra: extra })));
1210 return [4 /*yield*/, Promise.race([
1211 abortedPromise,
1212 Promise.resolve(payloadCreator(arg, {
1213 dispatch: dispatch,
1214 getState: getState,
1215 extra: extra,
1216 requestId: requestId,
1217 signal: abortController.signal,
1218 rejectWithValue: function (value, meta) {
1219 return new RejectWithValue(value, meta);
1220 },
1221 fulfillWithValue: function (value, meta) {
1222 return new FulfillWithMeta(value, meta);
1223 }
1224 })).then(function (result) {
1225 if (result instanceof RejectWithValue) {
1226 throw result;
1227 }
1228 if (result instanceof FulfillWithMeta) {
1229 return fulfilled(result.payload, requestId, arg, result.meta);
1230 }
1231 return fulfilled(result, requestId, arg);
1232 })
1233 ])];
1234 case 3:
1235 finalAction = _c.sent();
1236 return [3 /*break*/, 5];
1237 case 4:
1238 err_1 = _c.sent();
1239 finalAction = err_1 instanceof RejectWithValue ? rejected(null, requestId, arg, err_1.payload, err_1.meta) : rejected(err_1, requestId, arg);
1240 return [3 /*break*/, 5];
1241 case 5:
1242 skipDispatch = options && !options.dispatchConditionRejection && rejected.match(finalAction) && finalAction.meta.condition;
1243 if (!skipDispatch) {
1244 dispatch(finalAction);
1245 }
1246 return [2 /*return*/, finalAction];
1247 }
1248 });
1249 });
1250 }();
1251 return Object.assign(promise, {
1252 abort: abort,
1253 requestId: requestId,
1254 arg: arg,
1255 unwrap: function () {
1256 return promise.then(unwrapResult);
1257 }
1258 });
1259 };
1260 }
1261 return Object.assign(actionCreator, {
1262 pending: pending,
1263 rejected: rejected,
1264 fulfilled: fulfilled,
1265 typePrefix: typePrefix
1266 });
1267}
1268function unwrapResult(action) {
1269 if (action.meta && action.meta.rejectedWithValue) {
1270 throw action.payload;
1271 }
1272 if (action.error) {
1273 throw action.error;
1274 }
1275 return action.payload;
1276}
1277function isThenable(value) {
1278 return value !== null && typeof value === "object" && typeof value.then === "function";
1279}
1280// src/tsHelpers.ts
1281var hasMatchFunction = function (v) {
1282 return v && typeof v.match === "function";
1283};
1284// src/matchers.ts
1285var matches = function (matcher, action) {
1286 if (hasMatchFunction(matcher)) {
1287 return matcher.match(action);
1288 }
1289 else {
1290 return matcher(action);
1291 }
1292};
1293function isAnyOf() {
1294 var matchers = [];
1295 for (var _i = 0; _i < arguments.length; _i++) {
1296 matchers[_i] = arguments[_i];
1297 }
1298 return function (action) {
1299 return matchers.some(function (matcher) { return matches(matcher, action); });
1300 };
1301}
1302function isAllOf() {
1303 var matchers = [];
1304 for (var _i = 0; _i < arguments.length; _i++) {
1305 matchers[_i] = arguments[_i];
1306 }
1307 return function (action) {
1308 return matchers.every(function (matcher) { return matches(matcher, action); });
1309 };
1310}
1311function hasExpectedRequestMetadata(action, validStatus) {
1312 if (!action || !action.meta)
1313 return false;
1314 var hasValidRequestId = typeof action.meta.requestId === "string";
1315 var hasValidRequestStatus = validStatus.indexOf(action.meta.requestStatus) > -1;
1316 return hasValidRequestId && hasValidRequestStatus;
1317}
1318function isAsyncThunkArray(a) {
1319 return typeof a[0] === "function" && "pending" in a[0] && "fulfilled" in a[0] && "rejected" in a[0];
1320}
1321function isPending() {
1322 var asyncThunks = [];
1323 for (var _i = 0; _i < arguments.length; _i++) {
1324 asyncThunks[_i] = arguments[_i];
1325 }
1326 if (asyncThunks.length === 0) {
1327 return function (action) { return hasExpectedRequestMetadata(action, ["pending"]); };
1328 }
1329 if (!isAsyncThunkArray(asyncThunks)) {
1330 return isPending()(asyncThunks[0]);
1331 }
1332 return function (action) {
1333 var matchers = asyncThunks.map(function (asyncThunk) { return asyncThunk.pending; });
1334 var combinedMatcher = isAnyOf.apply(void 0, matchers);
1335 return combinedMatcher(action);
1336 };
1337}
1338function isRejected() {
1339 var asyncThunks = [];
1340 for (var _i = 0; _i < arguments.length; _i++) {
1341 asyncThunks[_i] = arguments[_i];
1342 }
1343 if (asyncThunks.length === 0) {
1344 return function (action) { return hasExpectedRequestMetadata(action, ["rejected"]); };
1345 }
1346 if (!isAsyncThunkArray(asyncThunks)) {
1347 return isRejected()(asyncThunks[0]);
1348 }
1349 return function (action) {
1350 var matchers = asyncThunks.map(function (asyncThunk) { return asyncThunk.rejected; });
1351 var combinedMatcher = isAnyOf.apply(void 0, matchers);
1352 return combinedMatcher(action);
1353 };
1354}
1355function isRejectedWithValue() {
1356 var asyncThunks = [];
1357 for (var _i = 0; _i < arguments.length; _i++) {
1358 asyncThunks[_i] = arguments[_i];
1359 }
1360 var hasFlag = function (action) {
1361 return action && action.meta && action.meta.rejectedWithValue;
1362 };
1363 if (asyncThunks.length === 0) {
1364 return function (action) {
1365 var combinedMatcher = isAllOf(isRejected.apply(void 0, asyncThunks), hasFlag);
1366 return combinedMatcher(action);
1367 };
1368 }
1369 if (!isAsyncThunkArray(asyncThunks)) {
1370 return isRejectedWithValue()(asyncThunks[0]);
1371 }
1372 return function (action) {
1373 var combinedMatcher = isAllOf(isRejected.apply(void 0, asyncThunks), hasFlag);
1374 return combinedMatcher(action);
1375 };
1376}
1377function isFulfilled() {
1378 var asyncThunks = [];
1379 for (var _i = 0; _i < arguments.length; _i++) {
1380 asyncThunks[_i] = arguments[_i];
1381 }
1382 if (asyncThunks.length === 0) {
1383 return function (action) { return hasExpectedRequestMetadata(action, ["fulfilled"]); };
1384 }
1385 if (!isAsyncThunkArray(asyncThunks)) {
1386 return isFulfilled()(asyncThunks[0]);
1387 }
1388 return function (action) {
1389 var matchers = asyncThunks.map(function (asyncThunk) { return asyncThunk.fulfilled; });
1390 var combinedMatcher = isAnyOf.apply(void 0, matchers);
1391 return combinedMatcher(action);
1392 };
1393}
1394function isAsyncThunkAction() {
1395 var asyncThunks = [];
1396 for (var _i = 0; _i < arguments.length; _i++) {
1397 asyncThunks[_i] = arguments[_i];
1398 }
1399 if (asyncThunks.length === 0) {
1400 return function (action) { return hasExpectedRequestMetadata(action, ["pending", "fulfilled", "rejected"]); };
1401 }
1402 if (!isAsyncThunkArray(asyncThunks)) {
1403 return isAsyncThunkAction()(asyncThunks[0]);
1404 }
1405 return function (action) {
1406 var matchers = [];
1407 for (var _i = 0, asyncThunks_1 = asyncThunks; _i < asyncThunks_1.length; _i++) {
1408 var asyncThunk = asyncThunks_1[_i];
1409 matchers.push(asyncThunk.pending, asyncThunk.rejected, asyncThunk.fulfilled);
1410 }
1411 var combinedMatcher = isAnyOf.apply(void 0, matchers);
1412 return combinedMatcher(action);
1413 };
1414}
1415// src/listenerMiddleware/utils.ts
1416var assertFunction = function (func, expected) {
1417 if (typeof func !== "function") {
1418 throw new TypeError(expected + " is not a function");
1419 }
1420};
1421var noop = function () {
1422};
1423var catchRejection = function (promise, onError) {
1424 if (onError === void 0) { onError = noop; }
1425 promise.catch(onError);
1426 return promise;
1427};
1428var addAbortSignalListener = function (abortSignal, callback) {
1429 abortSignal.addEventListener("abort", callback, { once: true });
1430};
1431var abortControllerWithReason = function (abortController, reason) {
1432 var signal = abortController.signal;
1433 if (signal.aborted) {
1434 return;
1435 }
1436 if (!("reason" in signal)) {
1437 Object.defineProperty(signal, "reason", {
1438 enumerable: true,
1439 value: reason,
1440 configurable: true,
1441 writable: true
1442 });
1443 }
1444 ;
1445 abortController.abort(reason);
1446};
1447// src/listenerMiddleware/exceptions.ts
1448var task = "task";
1449var listener = "listener";
1450var completed = "completed";
1451var cancelled = "cancelled";
1452var taskCancelled = "task-" + cancelled;
1453var taskCompleted = "task-" + completed;
1454var listenerCancelled = listener + "-" + cancelled;
1455var listenerCompleted = listener + "-" + completed;
1456var TaskAbortError = /** @class */ (function () {
1457 function TaskAbortError(code) {
1458 this.code = code;
1459 this.name = "TaskAbortError";
1460 this.message = task + " " + cancelled + " (reason: " + code + ")";
1461 }
1462 return TaskAbortError;
1463}());
1464// src/listenerMiddleware/task.ts
1465var validateActive = function (signal) {
1466 if (signal.aborted) {
1467 throw new TaskAbortError(signal.reason);
1468 }
1469};
1470var promisifyAbortSignal = function (signal) {
1471 return catchRejection(new Promise(function (_, reject) {
1472 var notifyRejection = function () { return reject(new TaskAbortError(signal.reason)); };
1473 if (signal.aborted) {
1474 notifyRejection();
1475 }
1476 else {
1477 addAbortSignalListener(signal, notifyRejection);
1478 }
1479 }));
1480};
1481var runTask = function (task2, cleanUp) { return __async(void 0, null, function () {
1482 var value, error_1;
1483 return __generator(this, function (_c) {
1484 switch (_c.label) {
1485 case 0:
1486 _c.trys.push([0, 3, 4, 5]);
1487 return [4 /*yield*/, Promise.resolve()];
1488 case 1:
1489 _c.sent();
1490 return [4 /*yield*/, task2()];
1491 case 2:
1492 value = _c.sent();
1493 return [2 /*return*/, {
1494 status: "ok",
1495 value: value
1496 }];
1497 case 3:
1498 error_1 = _c.sent();
1499 return [2 /*return*/, {
1500 status: error_1 instanceof TaskAbortError ? "cancelled" : "rejected",
1501 error: error_1
1502 }];
1503 case 4:
1504 cleanUp == null ? void 0 : cleanUp();
1505 return [7 /*endfinally*/];
1506 case 5: return [2 /*return*/];
1507 }
1508 });
1509}); };
1510var createPause = function (signal) {
1511 return function (promise) {
1512 return catchRejection(Promise.race([promisifyAbortSignal(signal), promise]).then(function (output) {
1513 validateActive(signal);
1514 return output;
1515 }));
1516 };
1517};
1518var createDelay = function (signal) {
1519 var pause = createPause(signal);
1520 return function (timeoutMs) {
1521 return pause(new Promise(function (resolve) { return setTimeout(resolve, timeoutMs); }));
1522 };
1523};
1524// src/listenerMiddleware/index.ts
1525var assign = Object.assign;
1526var INTERNAL_NIL_TOKEN = {};
1527var alm = "listenerMiddleware";
1528var createFork = function (parentAbortSignal) {
1529 var linkControllers = function (controller) { return addAbortSignalListener(parentAbortSignal, function () { return abortControllerWithReason(controller, parentAbortSignal.reason); }); };
1530 return function (taskExecutor) {
1531 assertFunction(taskExecutor, "taskExecutor");
1532 var childAbortController = new AbortController();
1533 linkControllers(childAbortController);
1534 var result = runTask(function () { return __async(void 0, null, function () {
1535 var result2;
1536 return __generator(this, function (_c) {
1537 switch (_c.label) {
1538 case 0:
1539 validateActive(parentAbortSignal);
1540 validateActive(childAbortController.signal);
1541 return [4 /*yield*/, taskExecutor({
1542 pause: createPause(childAbortController.signal),
1543 delay: createDelay(childAbortController.signal),
1544 signal: childAbortController.signal
1545 })];
1546 case 1:
1547 result2 = _c.sent();
1548 validateActive(childAbortController.signal);
1549 return [2 /*return*/, result2];
1550 }
1551 });
1552 }); }, function () { return abortControllerWithReason(childAbortController, taskCompleted); });
1553 return {
1554 result: createPause(parentAbortSignal)(result),
1555 cancel: function () {
1556 abortControllerWithReason(childAbortController, taskCancelled);
1557 }
1558 };
1559 };
1560};
1561var createTakePattern = function (startListening, signal) {
1562 var take = function (predicate, timeout) { return __async(void 0, null, function () {
1563 var unsubscribe, tuplePromise, promises, output;
1564 return __generator(this, function (_c) {
1565 switch (_c.label) {
1566 case 0:
1567 validateActive(signal);
1568 unsubscribe = function () {
1569 };
1570 tuplePromise = new Promise(function (resolve) {
1571 unsubscribe = startListening({
1572 predicate: predicate,
1573 effect: function (action, listenerApi) {
1574 listenerApi.unsubscribe();
1575 resolve([
1576 action,
1577 listenerApi.getState(),
1578 listenerApi.getOriginalState()
1579 ]);
1580 }
1581 });
1582 });
1583 promises = [
1584 promisifyAbortSignal(signal),
1585 tuplePromise
1586 ];
1587 if (timeout != null) {
1588 promises.push(new Promise(function (resolve) { return setTimeout(resolve, timeout, null); }));
1589 }
1590 _c.label = 1;
1591 case 1:
1592 _c.trys.push([1, , 3, 4]);
1593 return [4 /*yield*/, Promise.race(promises)];
1594 case 2:
1595 output = _c.sent();
1596 validateActive(signal);
1597 return [2 /*return*/, output];
1598 case 3:
1599 unsubscribe();
1600 return [7 /*endfinally*/];
1601 case 4: return [2 /*return*/];
1602 }
1603 });
1604 }); };
1605 return function (predicate, timeout) { return catchRejection(take(predicate, timeout)); };
1606};
1607var getListenerEntryPropsFrom = function (options) {
1608 var type = options.type, actionCreator = options.actionCreator, matcher = options.matcher, predicate = options.predicate, effect = options.effect;
1609 if (type) {
1610 predicate = createAction(type).match;
1611 }
1612 else if (actionCreator) {
1613 type = actionCreator.type;
1614 predicate = actionCreator.match;
1615 }
1616 else if (matcher) {
1617 predicate = matcher;
1618 }
1619 else if (predicate) {
1620 }
1621 else {
1622 throw new Error("Creating or removing a listener requires one of the known fields for matching an action");
1623 }
1624 assertFunction(effect, "options.listener");
1625 return { predicate: predicate, type: type, effect: effect };
1626};
1627var createListenerEntry = function (options) {
1628 var _c = getListenerEntryPropsFrom(options), type = _c.type, predicate = _c.predicate, effect = _c.effect;
1629 var id = nanoid();
1630 var entry = {
1631 id: id,
1632 effect: effect,
1633 type: type,
1634 predicate: predicate,
1635 pending: new Set(),
1636 unsubscribe: function () {
1637 throw new Error("Unsubscribe not initialized");
1638 }
1639 };
1640 return entry;
1641};
1642var createClearListenerMiddleware = function (listenerMap) {
1643 return function () {
1644 listenerMap.forEach(cancelActiveListeners);
1645 listenerMap.clear();
1646 };
1647};
1648var safelyNotifyError = function (errorHandler, errorToNotify, errorInfo) {
1649 try {
1650 errorHandler(errorToNotify, errorInfo);
1651 }
1652 catch (errorHandlerError) {
1653 setTimeout(function () {
1654 throw errorHandlerError;
1655 }, 0);
1656 }
1657};
1658var addListener = createAction(alm + "/add");
1659var clearAllListeners = createAction(alm + "/removeAll");
1660var removeListener = createAction(alm + "/remove");
1661var defaultErrorHandler = function () {
1662 var args = [];
1663 for (var _i = 0; _i < arguments.length; _i++) {
1664 args[_i] = arguments[_i];
1665 }
1666 console.error.apply(console, __spreadArray([alm + "/error"], args));
1667};
1668var cancelActiveListeners = function (entry) {
1669 entry.pending.forEach(function (controller) {
1670 abortControllerWithReason(controller, listenerCancelled);
1671 });
1672};
1673function createListenerMiddleware(middlewareOptions) {
1674 var _this = this;
1675 if (middlewareOptions === void 0) { middlewareOptions = {}; }
1676 var listenerMap = new Map();
1677 var extra = middlewareOptions.extra, _c = middlewareOptions.onError, onError = _c === void 0 ? defaultErrorHandler : _c;
1678 assertFunction(onError, "onError");
1679 var insertEntry = function (entry) {
1680 entry.unsubscribe = function () { return listenerMap.delete(entry.id); };
1681 listenerMap.set(entry.id, entry);
1682 return function (cancelOptions) {
1683 entry.unsubscribe();
1684 if (cancelOptions == null ? void 0 : cancelOptions.cancelActive) {
1685 cancelActiveListeners(entry);
1686 }
1687 };
1688 };
1689 var findListenerEntry = function (comparator) {
1690 for (var _i = 0, _c = Array.from(listenerMap.values()); _i < _c.length; _i++) {
1691 var entry = _c[_i];
1692 if (comparator(entry)) {
1693 return entry;
1694 }
1695 }
1696 return void 0;
1697 };
1698 var startListening = function (options) {
1699 var entry = findListenerEntry(function (existingEntry) { return existingEntry.effect === options.effect; });
1700 if (!entry) {
1701 entry = createListenerEntry(options);
1702 }
1703 return insertEntry(entry);
1704 };
1705 var stopListening = function (options) {
1706 var _c = getListenerEntryPropsFrom(options), type = _c.type, effect = _c.effect, predicate = _c.predicate;
1707 var entry = findListenerEntry(function (entry2) {
1708 var matchPredicateOrType = typeof type === "string" ? entry2.type === type : entry2.predicate === predicate;
1709 return matchPredicateOrType && entry2.effect === effect;
1710 });
1711 if (entry) {
1712 entry.unsubscribe();
1713 if (options.cancelActive) {
1714 cancelActiveListeners(entry);
1715 }
1716 }
1717 return !!entry;
1718 };
1719 var notifyListener = function (entry, action, api, getOriginalState) { return __async(_this, null, function () {
1720 var internalTaskController, take, listenerError_1;
1721 return __generator(this, function (_c) {
1722 switch (_c.label) {
1723 case 0:
1724 internalTaskController = new AbortController();
1725 take = createTakePattern(startListening, internalTaskController.signal);
1726 _c.label = 1;
1727 case 1:
1728 _c.trys.push([1, 3, 4, 5]);
1729 entry.pending.add(internalTaskController);
1730 return [4 /*yield*/, Promise.resolve(entry.effect(action, assign({}, api, {
1731 getOriginalState: getOriginalState,
1732 condition: function (predicate, timeout) { return take(predicate, timeout).then(Boolean); },
1733 take: take,
1734 delay: createDelay(internalTaskController.signal),
1735 pause: createPause(internalTaskController.signal),
1736 extra: extra,
1737 signal: internalTaskController.signal,
1738 fork: createFork(internalTaskController.signal),
1739 unsubscribe: entry.unsubscribe,
1740 subscribe: function () {
1741 listenerMap.set(entry.id, entry);
1742 },
1743 cancelActiveListeners: function () {
1744 entry.pending.forEach(function (controller, _, set) {
1745 if (controller !== internalTaskController) {
1746 abortControllerWithReason(controller, listenerCancelled);
1747 set.delete(controller);
1748 }
1749 });
1750 }
1751 })))];
1752 case 2:
1753 _c.sent();
1754 return [3 /*break*/, 5];
1755 case 3:
1756 listenerError_1 = _c.sent();
1757 if (!(listenerError_1 instanceof TaskAbortError)) {
1758 safelyNotifyError(onError, listenerError_1, {
1759 raisedBy: "effect"
1760 });
1761 }
1762 return [3 /*break*/, 5];
1763 case 4:
1764 abortControllerWithReason(internalTaskController, listenerCompleted);
1765 entry.pending.delete(internalTaskController);
1766 return [7 /*endfinally*/];
1767 case 5: return [2 /*return*/];
1768 }
1769 });
1770 }); };
1771 var clearListenerMiddleware = createClearListenerMiddleware(listenerMap);
1772 var middleware = function (api) { return function (next) { return function (action) {
1773 if (addListener.match(action)) {
1774 return startListening(action.payload);
1775 }
1776 if (clearAllListeners.match(action)) {
1777 clearListenerMiddleware();
1778 return;
1779 }
1780 if (removeListener.match(action)) {
1781 return stopListening(action.payload);
1782 }
1783 var originalState = api.getState();
1784 var getOriginalState = function () {
1785 if (originalState === INTERNAL_NIL_TOKEN) {
1786 throw new Error(alm + ": getOriginalState can only be called synchronously");
1787 }
1788 return originalState;
1789 };
1790 var result;
1791 try {
1792 result = next(action);
1793 if (listenerMap.size > 0) {
1794 var currentState = api.getState();
1795 var listenerEntries = Array.from(listenerMap.values());
1796 for (var _i = 0, listenerEntries_1 = listenerEntries; _i < listenerEntries_1.length; _i++) {
1797 var entry = listenerEntries_1[_i];
1798 var runListener = false;
1799 try {
1800 runListener = entry.predicate(action, currentState, originalState);
1801 }
1802 catch (predicateError) {
1803 runListener = false;
1804 safelyNotifyError(onError, predicateError, {
1805 raisedBy: "predicate"
1806 });
1807 }
1808 if (!runListener) {
1809 continue;
1810 }
1811 notifyListener(entry, action, api, getOriginalState);
1812 }
1813 }
1814 }
1815 finally {
1816 originalState = INTERNAL_NIL_TOKEN;
1817 }
1818 return result;
1819 }; }; };
1820 return {
1821 middleware: middleware,
1822 startListening: startListening,
1823 stopListening: stopListening,
1824 clearListeners: clearListenerMiddleware
1825 };
1826}
1827// src/index.ts
1828(0, import_immer4.enableES5)();
1829//# sourceMappingURL=redux-toolkit.cjs.development.js.map
\No newline at end of file