UNPKG

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