UNPKG

4.99 kBJavaScriptView Raw
1(function webpackUniversalModuleDefinition(root, factory) {
2 if(typeof exports === 'object' && typeof module === 'object')
3 module.exports = factory();
4 else if(typeof define === 'function' && define.amd)
5 define([], factory);
6 else if(typeof exports === 'object')
7 exports["Thunker.js"] = factory();
8 else
9 root["Thunker.js"] = factory();
10})(this, function() {
11return /******/ (function(modules) { // webpackBootstrap
12/******/ // The module cache
13/******/ var installedModules = {};
14
15/******/ // The require function
16/******/ function __webpack_require__(moduleId) {
17
18/******/ // Check if module is in cache
19/******/ if(installedModules[moduleId])
20/******/ return installedModules[moduleId].exports;
21
22/******/ // Create a new module (and put it into the cache)
23/******/ var module = installedModules[moduleId] = {
24/******/ exports: {},
25/******/ id: moduleId,
26/******/ loaded: false
27/******/ };
28
29/******/ // Execute the module function
30/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
31
32/******/ // Flag the module as loaded
33/******/ module.loaded = true;
34
35/******/ // Return the exports of the module
36/******/ return module.exports;
37/******/ }
38
39
40/******/ // expose the modules object (__webpack_modules__)
41/******/ __webpack_require__.m = modules;
42
43/******/ // expose the module cache
44/******/ __webpack_require__.c = installedModules;
45
46/******/ // __webpack_public_path__
47/******/ __webpack_require__.p = "";
48
49/******/ // Load entry module and return exports
50/******/ return __webpack_require__(0);
51/******/ })
52/************************************************************************/
53/******/ ([
54/* 0 */
55/***/ function(module, exports) {
56
57 'use strict';
58
59 Object.defineProperty(exports, "__esModule", {
60 value: true
61 });
62
63 var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }();
64
65 exports.default = {
66 create: function create() {
67 var storeQueue = [];
68 var actionQueue = [];
69
70 var waitForAction = function waitForAction(actionFn) {
71 var cb = arguments.length <= 1 || arguments[1] === undefined ? function () {} : arguments[1];
72 return new Promise(function (resolve, reject) {
73 actionQueue = actionQueue.concat([[actionFn, function (state) {
74 return resolve(state);
75 }]]);
76 }).then(cb);
77 };
78
79 return function (store) {
80 return function (next) {
81 return function (action) {
82 var dispatch = store.dispatch;
83 var getState = store.getState;
84
85
86 var state = getState();
87
88 var waitForState = function waitForState(stateFn) {
89 var cb = arguments.length <= 1 || arguments[1] === undefined ? function () {} : arguments[1];
90 var stateFailedFn = arguments.length <= 2 || arguments[2] === undefined ? function () {} : arguments[2];
91 return new Promise(function (resolve, reject) {
92 if (!stateFn(state)) {
93 storeQueue = storeQueue.concat([[stateFn, function (newState) {
94 return resolve(newState);
95 }]]);
96 stateFailedFn(state);
97 } else {
98 resolve(state);
99 }
100 }).then(cb);
101 };
102
103 if (typeof action === 'function') {
104 var result = action(dispatch, getState, { waitForState: waitForState, waitForAction: waitForAction });
105
106 if (!(result instanceof Promise)) {
107 throw new Error('Thunked actions must return promises');
108 }
109
110 return next(result);
111 }
112
113 storeQueue = storeQueue.filter(function (_ref) {
114 var _ref2 = _slicedToArray(_ref, 2);
115
116 var stateFn = _ref2[0];
117 var cb = _ref2[1];
118
119 if (stateFn(state)) {
120 cb(state);
121 return false;
122 }
123
124 return true;
125 });
126
127 actionQueue = actionQueue.filter(function (_ref3) {
128 var _ref4 = _slicedToArray(_ref3, 2);
129
130 var actionFn = _ref4[0];
131 var cb = _ref4[1];
132
133 if (actionFn(action)) {
134 cb(state);
135 return false;
136 }
137
138 return true;
139 });
140
141 return next(action);
142 };
143 };
144 };
145 }
146 };
147
148/***/ }
149/******/ ])
150});
151;
\No newline at end of file