redux-routine.js 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901
  1. /******/ (function() { // webpackBootstrap
  2. /******/ "use strict";
  3. /******/ var __webpack_modules__ = ({
  4. /***/ 730:
  5. /***/ (function(__unused_webpack_module, exports, __webpack_require__) {
  6. Object.defineProperty(exports, "__esModule", ({
  7. value: true
  8. }));
  9. exports.race = exports.join = exports.fork = exports.promise = undefined;
  10. var _is = __webpack_require__(9681);
  11. var _is2 = _interopRequireDefault(_is);
  12. var _helpers = __webpack_require__(7783);
  13. var _dispatcher = __webpack_require__(2451);
  14. var _dispatcher2 = _interopRequireDefault(_dispatcher);
  15. function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
  16. var promise = exports.promise = function promise(value, next, rungen, yieldNext, raiseNext) {
  17. if (!_is2.default.promise(value)) return false;
  18. value.then(next, raiseNext);
  19. return true;
  20. };
  21. var forkedTasks = new Map();
  22. var fork = exports.fork = function fork(value, next, rungen) {
  23. if (!_is2.default.fork(value)) return false;
  24. var task = Symbol('fork');
  25. var dispatcher = (0, _dispatcher2.default)();
  26. forkedTasks.set(task, dispatcher);
  27. rungen(value.iterator.apply(null, value.args), function (result) {
  28. return dispatcher.dispatch(result);
  29. }, function (err) {
  30. return dispatcher.dispatch((0, _helpers.error)(err));
  31. });
  32. var unsubscribe = dispatcher.subscribe(function () {
  33. unsubscribe();
  34. forkedTasks.delete(task);
  35. });
  36. next(task);
  37. return true;
  38. };
  39. var join = exports.join = function join(value, next, rungen, yieldNext, raiseNext) {
  40. if (!_is2.default.join(value)) return false;
  41. var dispatcher = forkedTasks.get(value.task);
  42. if (!dispatcher) {
  43. raiseNext('join error : task not found');
  44. } else {
  45. (function () {
  46. var unsubscribe = dispatcher.subscribe(function (result) {
  47. unsubscribe();
  48. next(result);
  49. });
  50. })();
  51. }
  52. return true;
  53. };
  54. var race = exports.race = function race(value, next, rungen, yieldNext, raiseNext) {
  55. if (!_is2.default.race(value)) return false;
  56. var finished = false;
  57. var success = function success(result, k, v) {
  58. if (finished) return;
  59. finished = true;
  60. result[k] = v;
  61. next(result);
  62. };
  63. var fail = function fail(err) {
  64. if (finished) return;
  65. raiseNext(err);
  66. };
  67. if (_is2.default.array(value.competitors)) {
  68. (function () {
  69. var result = value.competitors.map(function () {
  70. return false;
  71. });
  72. value.competitors.forEach(function (competitor, index) {
  73. rungen(competitor, function (output) {
  74. return success(result, index, output);
  75. }, fail);
  76. });
  77. })();
  78. } else {
  79. (function () {
  80. var result = Object.keys(value.competitors).reduce(function (p, c) {
  81. p[c] = false;
  82. return p;
  83. }, {});
  84. Object.keys(value.competitors).forEach(function (index) {
  85. rungen(value.competitors[index], function (output) {
  86. return success(result, index, output);
  87. }, fail);
  88. });
  89. })();
  90. }
  91. return true;
  92. };
  93. var subscribe = function subscribe(value, next) {
  94. if (!_is2.default.subscribe(value)) return false;
  95. if (!_is2.default.channel(value.channel)) {
  96. throw new Error('the first argument of "subscribe" must be a valid channel');
  97. }
  98. var unsubscribe = value.channel.subscribe(function (ret) {
  99. unsubscribe && unsubscribe();
  100. next(ret);
  101. });
  102. return true;
  103. };
  104. exports["default"] = [promise, fork, join, race, subscribe];
  105. /***/ }),
  106. /***/ 7961:
  107. /***/ (function(__unused_webpack_module, exports, __webpack_require__) {
  108. Object.defineProperty(exports, "__esModule", ({
  109. value: true
  110. }));
  111. exports.iterator = exports.array = exports.object = exports.error = exports.any = undefined;
  112. var _is = __webpack_require__(9681);
  113. var _is2 = _interopRequireDefault(_is);
  114. function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
  115. var any = exports.any = function any(value, next, rungen, yieldNext) {
  116. yieldNext(value);
  117. return true;
  118. };
  119. var error = exports.error = function error(value, next, rungen, yieldNext, raiseNext) {
  120. if (!_is2.default.error(value)) return false;
  121. raiseNext(value.error);
  122. return true;
  123. };
  124. var object = exports.object = function object(value, next, rungen, yieldNext, raiseNext) {
  125. if (!_is2.default.all(value) || !_is2.default.obj(value.value)) return false;
  126. var result = {};
  127. var keys = Object.keys(value.value);
  128. var count = 0;
  129. var hasError = false;
  130. var gotResultSuccess = function gotResultSuccess(key, ret) {
  131. if (hasError) return;
  132. result[key] = ret;
  133. count++;
  134. if (count === keys.length) {
  135. yieldNext(result);
  136. }
  137. };
  138. var gotResultError = function gotResultError(key, error) {
  139. if (hasError) return;
  140. hasError = true;
  141. raiseNext(error);
  142. };
  143. keys.map(function (key) {
  144. rungen(value.value[key], function (ret) {
  145. return gotResultSuccess(key, ret);
  146. }, function (err) {
  147. return gotResultError(key, err);
  148. });
  149. });
  150. return true;
  151. };
  152. var array = exports.array = function array(value, next, rungen, yieldNext, raiseNext) {
  153. if (!_is2.default.all(value) || !_is2.default.array(value.value)) return false;
  154. var result = [];
  155. var count = 0;
  156. var hasError = false;
  157. var gotResultSuccess = function gotResultSuccess(key, ret) {
  158. if (hasError) return;
  159. result[key] = ret;
  160. count++;
  161. if (count === value.value.length) {
  162. yieldNext(result);
  163. }
  164. };
  165. var gotResultError = function gotResultError(key, error) {
  166. if (hasError) return;
  167. hasError = true;
  168. raiseNext(error);
  169. };
  170. value.value.map(function (v, key) {
  171. rungen(v, function (ret) {
  172. return gotResultSuccess(key, ret);
  173. }, function (err) {
  174. return gotResultError(key, err);
  175. });
  176. });
  177. return true;
  178. };
  179. var iterator = exports.iterator = function iterator(value, next, rungen, yieldNext, raiseNext) {
  180. if (!_is2.default.iterator(value)) return false;
  181. rungen(value, next, raiseNext);
  182. return true;
  183. };
  184. exports["default"] = [error, iterator, array, object, any];
  185. /***/ }),
  186. /***/ 2165:
  187. /***/ (function(__unused_webpack_module, exports, __webpack_require__) {
  188. Object.defineProperty(exports, "__esModule", ({
  189. value: true
  190. }));
  191. exports.cps = exports.call = undefined;
  192. var _is = __webpack_require__(9681);
  193. var _is2 = _interopRequireDefault(_is);
  194. function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
  195. function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }
  196. var call = exports.call = function call(value, next, rungen, yieldNext, raiseNext) {
  197. if (!_is2.default.call(value)) return false;
  198. try {
  199. next(value.func.apply(value.context, value.args));
  200. } catch (err) {
  201. raiseNext(err);
  202. }
  203. return true;
  204. };
  205. var cps = exports.cps = function cps(value, next, rungen, yieldNext, raiseNext) {
  206. var _value$func;
  207. if (!_is2.default.cps(value)) return false;
  208. (_value$func = value.func).call.apply(_value$func, [null].concat(_toConsumableArray(value.args), [function (err, result) {
  209. if (err) raiseNext(err);else next(result);
  210. }]));
  211. return true;
  212. };
  213. exports["default"] = [call, cps];
  214. /***/ }),
  215. /***/ 6288:
  216. /***/ (function(__unused_webpack_module, exports, __webpack_require__) {
  217. Object.defineProperty(exports, "__esModule", ({
  218. value: true
  219. }));
  220. var _builtin = __webpack_require__(7961);
  221. var _builtin2 = _interopRequireDefault(_builtin);
  222. var _is = __webpack_require__(9681);
  223. var _is2 = _interopRequireDefault(_is);
  224. function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
  225. function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }
  226. var create = function create() {
  227. var userControls = arguments.length <= 0 || arguments[0] === undefined ? [] : arguments[0];
  228. var controls = [].concat(_toConsumableArray(userControls), _toConsumableArray(_builtin2.default));
  229. var runtime = function runtime(input) {
  230. var success = arguments.length <= 1 || arguments[1] === undefined ? function () {} : arguments[1];
  231. var error = arguments.length <= 2 || arguments[2] === undefined ? function () {} : arguments[2];
  232. var iterate = function iterate(gen) {
  233. var yieldValue = function yieldValue(isError) {
  234. return function (ret) {
  235. try {
  236. var _ref = isError ? gen.throw(ret) : gen.next(ret);
  237. var value = _ref.value;
  238. var done = _ref.done;
  239. if (done) return success(value);
  240. next(value);
  241. } catch (e) {
  242. return error(e);
  243. }
  244. };
  245. };
  246. var next = function next(ret) {
  247. controls.some(function (control) {
  248. return control(ret, next, runtime, yieldValue(false), yieldValue(true));
  249. });
  250. };
  251. yieldValue(false)();
  252. };
  253. var iterator = _is2.default.iterator(input) ? input : regeneratorRuntime.mark(function _callee() {
  254. return regeneratorRuntime.wrap(function _callee$(_context) {
  255. while (1) {
  256. switch (_context.prev = _context.next) {
  257. case 0:
  258. _context.next = 2;
  259. return input;
  260. case 2:
  261. return _context.abrupt('return', _context.sent);
  262. case 3:
  263. case 'end':
  264. return _context.stop();
  265. }
  266. }
  267. }, _callee, this);
  268. })();
  269. iterate(iterator, success, error);
  270. };
  271. return runtime;
  272. };
  273. exports["default"] = create;
  274. /***/ }),
  275. /***/ 2290:
  276. /***/ (function(__unused_webpack_module, exports, __webpack_require__) {
  277. Object.defineProperty(exports, "__esModule", ({
  278. value: true
  279. }));
  280. exports.wrapControls = exports.asyncControls = exports.create = undefined;
  281. var _helpers = __webpack_require__(7783);
  282. Object.keys(_helpers).forEach(function (key) {
  283. if (key === "default") return;
  284. Object.defineProperty(exports, key, {
  285. enumerable: true,
  286. get: function get() {
  287. return _helpers[key];
  288. }
  289. });
  290. });
  291. var _create = __webpack_require__(6288);
  292. var _create2 = _interopRequireDefault(_create);
  293. var _async = __webpack_require__(730);
  294. var _async2 = _interopRequireDefault(_async);
  295. var _wrap = __webpack_require__(2165);
  296. var _wrap2 = _interopRequireDefault(_wrap);
  297. function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
  298. exports.create = _create2.default;
  299. exports.asyncControls = _async2.default;
  300. exports.wrapControls = _wrap2.default;
  301. /***/ }),
  302. /***/ 2451:
  303. /***/ (function(__unused_webpack_module, exports) {
  304. Object.defineProperty(exports, "__esModule", ({
  305. value: true
  306. }));
  307. var createDispatcher = function createDispatcher() {
  308. var listeners = [];
  309. return {
  310. subscribe: function subscribe(listener) {
  311. listeners.push(listener);
  312. return function () {
  313. listeners = listeners.filter(function (l) {
  314. return l !== listener;
  315. });
  316. };
  317. },
  318. dispatch: function dispatch(action) {
  319. listeners.slice().forEach(function (listener) {
  320. return listener(action);
  321. });
  322. }
  323. };
  324. };
  325. exports["default"] = createDispatcher;
  326. /***/ }),
  327. /***/ 7783:
  328. /***/ (function(__unused_webpack_module, exports, __webpack_require__) {
  329. Object.defineProperty(exports, "__esModule", ({
  330. value: true
  331. }));
  332. exports.createChannel = exports.subscribe = exports.cps = exports.apply = exports.call = exports.invoke = exports.delay = exports.race = exports.join = exports.fork = exports.error = exports.all = undefined;
  333. var _keys = __webpack_require__(9851);
  334. var _keys2 = _interopRequireDefault(_keys);
  335. function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
  336. var all = exports.all = function all(value) {
  337. return {
  338. type: _keys2.default.all,
  339. value: value
  340. };
  341. };
  342. var error = exports.error = function error(err) {
  343. return {
  344. type: _keys2.default.error,
  345. error: err
  346. };
  347. };
  348. var fork = exports.fork = function fork(iterator) {
  349. for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
  350. args[_key - 1] = arguments[_key];
  351. }
  352. return {
  353. type: _keys2.default.fork,
  354. iterator: iterator,
  355. args: args
  356. };
  357. };
  358. var join = exports.join = function join(task) {
  359. return {
  360. type: _keys2.default.join,
  361. task: task
  362. };
  363. };
  364. var race = exports.race = function race(competitors) {
  365. return {
  366. type: _keys2.default.race,
  367. competitors: competitors
  368. };
  369. };
  370. var delay = exports.delay = function delay(timeout) {
  371. return new Promise(function (resolve) {
  372. setTimeout(function () {
  373. return resolve(true);
  374. }, timeout);
  375. });
  376. };
  377. var invoke = exports.invoke = function invoke(func) {
  378. for (var _len2 = arguments.length, args = Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {
  379. args[_key2 - 1] = arguments[_key2];
  380. }
  381. return {
  382. type: _keys2.default.call,
  383. func: func,
  384. context: null,
  385. args: args
  386. };
  387. };
  388. var call = exports.call = function call(func, context) {
  389. for (var _len3 = arguments.length, args = Array(_len3 > 2 ? _len3 - 2 : 0), _key3 = 2; _key3 < _len3; _key3++) {
  390. args[_key3 - 2] = arguments[_key3];
  391. }
  392. return {
  393. type: _keys2.default.call,
  394. func: func,
  395. context: context,
  396. args: args
  397. };
  398. };
  399. var apply = exports.apply = function apply(func, context, args) {
  400. return {
  401. type: _keys2.default.call,
  402. func: func,
  403. context: context,
  404. args: args
  405. };
  406. };
  407. var cps = exports.cps = function cps(func) {
  408. for (var _len4 = arguments.length, args = Array(_len4 > 1 ? _len4 - 1 : 0), _key4 = 1; _key4 < _len4; _key4++) {
  409. args[_key4 - 1] = arguments[_key4];
  410. }
  411. return {
  412. type: _keys2.default.cps,
  413. func: func,
  414. args: args
  415. };
  416. };
  417. var subscribe = exports.subscribe = function subscribe(channel) {
  418. return {
  419. type: _keys2.default.subscribe,
  420. channel: channel
  421. };
  422. };
  423. var createChannel = exports.createChannel = function createChannel(callback) {
  424. var listeners = [];
  425. var subscribe = function subscribe(l) {
  426. listeners.push(l);
  427. return function () {
  428. return listeners.splice(listeners.indexOf(l), 1);
  429. };
  430. };
  431. var next = function next(val) {
  432. return listeners.forEach(function (l) {
  433. return l(val);
  434. });
  435. };
  436. callback(next);
  437. return {
  438. subscribe: subscribe
  439. };
  440. };
  441. /***/ }),
  442. /***/ 9681:
  443. /***/ (function(__unused_webpack_module, exports, __webpack_require__) {
  444. Object.defineProperty(exports, "__esModule", ({
  445. value: true
  446. }));
  447. var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol ? "symbol" : typeof obj; };
  448. var _keys = __webpack_require__(9851);
  449. var _keys2 = _interopRequireDefault(_keys);
  450. function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
  451. var is = {
  452. obj: function obj(value) {
  453. return (typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object' && !!value;
  454. },
  455. all: function all(value) {
  456. return is.obj(value) && value.type === _keys2.default.all;
  457. },
  458. error: function error(value) {
  459. return is.obj(value) && value.type === _keys2.default.error;
  460. },
  461. array: Array.isArray,
  462. func: function func(value) {
  463. return typeof value === 'function';
  464. },
  465. promise: function promise(value) {
  466. return value && is.func(value.then);
  467. },
  468. iterator: function iterator(value) {
  469. return value && is.func(value.next) && is.func(value.throw);
  470. },
  471. fork: function fork(value) {
  472. return is.obj(value) && value.type === _keys2.default.fork;
  473. },
  474. join: function join(value) {
  475. return is.obj(value) && value.type === _keys2.default.join;
  476. },
  477. race: function race(value) {
  478. return is.obj(value) && value.type === _keys2.default.race;
  479. },
  480. call: function call(value) {
  481. return is.obj(value) && value.type === _keys2.default.call;
  482. },
  483. cps: function cps(value) {
  484. return is.obj(value) && value.type === _keys2.default.cps;
  485. },
  486. subscribe: function subscribe(value) {
  487. return is.obj(value) && value.type === _keys2.default.subscribe;
  488. },
  489. channel: function channel(value) {
  490. return is.obj(value) && is.func(value.subscribe);
  491. }
  492. };
  493. exports["default"] = is;
  494. /***/ }),
  495. /***/ 9851:
  496. /***/ (function(__unused_webpack_module, exports) {
  497. Object.defineProperty(exports, "__esModule", ({
  498. value: true
  499. }));
  500. var keys = {
  501. all: Symbol('all'),
  502. error: Symbol('error'),
  503. fork: Symbol('fork'),
  504. join: Symbol('join'),
  505. race: Symbol('race'),
  506. call: Symbol('call'),
  507. cps: Symbol('cps'),
  508. subscribe: Symbol('subscribe')
  509. };
  510. exports["default"] = keys;
  511. /***/ })
  512. /******/ });
  513. /************************************************************************/
  514. /******/ // The module cache
  515. /******/ var __webpack_module_cache__ = {};
  516. /******/
  517. /******/ // The require function
  518. /******/ function __webpack_require__(moduleId) {
  519. /******/ // Check if module is in cache
  520. /******/ var cachedModule = __webpack_module_cache__[moduleId];
  521. /******/ if (cachedModule !== undefined) {
  522. /******/ return cachedModule.exports;
  523. /******/ }
  524. /******/ // Create a new module (and put it into the cache)
  525. /******/ var module = __webpack_module_cache__[moduleId] = {
  526. /******/ // no module.id needed
  527. /******/ // no module.loaded needed
  528. /******/ exports: {}
  529. /******/ };
  530. /******/
  531. /******/ // Execute the module function
  532. /******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__);
  533. /******/
  534. /******/ // Return the exports of the module
  535. /******/ return module.exports;
  536. /******/ }
  537. /******/
  538. /************************************************************************/
  539. /******/ /* webpack/runtime/define property getters */
  540. /******/ !function() {
  541. /******/ // define getter functions for harmony exports
  542. /******/ __webpack_require__.d = function(exports, definition) {
  543. /******/ for(var key in definition) {
  544. /******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
  545. /******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
  546. /******/ }
  547. /******/ }
  548. /******/ };
  549. /******/ }();
  550. /******/
  551. /******/ /* webpack/runtime/hasOwnProperty shorthand */
  552. /******/ !function() {
  553. /******/ __webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }
  554. /******/ }();
  555. /******/
  556. /************************************************************************/
  557. var __webpack_exports__ = {};
  558. // This entry need to be wrapped in an IIFE because it need to be isolated against other modules in the chunk.
  559. !function() {
  560. // EXPORTS
  561. __webpack_require__.d(__webpack_exports__, {
  562. "default": function() { return /* binding */ createMiddleware; }
  563. });
  564. ;// CONCATENATED MODULE: ./node_modules/@wordpress/redux-routine/build-module/is-generator.js
  565. /* eslint-disable jsdoc/valid-types */
  566. /**
  567. * Returns true if the given object is a generator, or false otherwise.
  568. *
  569. * @see https://www.ecma-international.org/ecma-262/6.0/#sec-generator-objects
  570. *
  571. * @param {any} object Object to test.
  572. *
  573. * @return {object is Generator} Whether object is a generator.
  574. */
  575. function isGenerator(object) {
  576. /* eslint-enable jsdoc/valid-types */
  577. // Check that iterator (next) and iterable (Symbol.iterator) interfaces are satisfied.
  578. // These checks seem to be compatible with several generator helpers as well as the native implementation.
  579. return !!object && typeof object[Symbol.iterator] === 'function' && typeof object.next === 'function';
  580. }
  581. // EXTERNAL MODULE: ./node_modules/rungen/dist/index.js
  582. var dist = __webpack_require__(2290);
  583. ;// CONCATENATED MODULE: ./node_modules/is-promise/index.mjs
  584. function isPromise(obj) {
  585. return !!obj && (typeof obj === 'object' || typeof obj === 'function') && typeof obj.then === 'function';
  586. }
  587. ;// CONCATENATED MODULE: ./node_modules/@wordpress/redux-routine/node_modules/is-plain-object/dist/is-plain-object.mjs
  588. /*!
  589. * is-plain-object <https://github.com/jonschlinkert/is-plain-object>
  590. *
  591. * Copyright (c) 2014-2017, Jon Schlinkert.
  592. * Released under the MIT License.
  593. */
  594. function isObject(o) {
  595. return Object.prototype.toString.call(o) === '[object Object]';
  596. }
  597. function isPlainObject(o) {
  598. var ctor,prot;
  599. if (isObject(o) === false) return false;
  600. // If has modified constructor
  601. ctor = o.constructor;
  602. if (ctor === undefined) return true;
  603. // If has modified prototype
  604. prot = ctor.prototype;
  605. if (isObject(prot) === false) return false;
  606. // If constructor does not have an Object-specific method
  607. if (prot.hasOwnProperty('isPrototypeOf') === false) {
  608. return false;
  609. }
  610. // Most likely a plain Object
  611. return true;
  612. }
  613. ;// CONCATENATED MODULE: ./node_modules/@wordpress/redux-routine/build-module/is-action.js
  614. /**
  615. * External dependencies
  616. */
  617. /* eslint-disable jsdoc/valid-types */
  618. /**
  619. * Returns true if the given object quacks like an action.
  620. *
  621. * @param {any} object Object to test
  622. *
  623. * @return {object is import('redux').AnyAction} Whether object is an action.
  624. */
  625. function isAction(object) {
  626. return isPlainObject(object) && typeof object.type === 'string';
  627. }
  628. /**
  629. * Returns true if the given object quacks like an action and has a specific
  630. * action type
  631. *
  632. * @param {unknown} object Object to test
  633. * @param {string} expectedType The expected type for the action.
  634. *
  635. * @return {object is import('redux').AnyAction} Whether object is an action and is of specific type.
  636. */
  637. function isActionOfType(object, expectedType) {
  638. /* eslint-enable jsdoc/valid-types */
  639. return isAction(object) && object.type === expectedType;
  640. }
  641. ;// CONCATENATED MODULE: ./node_modules/@wordpress/redux-routine/build-module/runtime.js
  642. /**
  643. * External dependencies
  644. */
  645. /**
  646. * Internal dependencies
  647. */
  648. /**
  649. * Create a co-routine runtime.
  650. *
  651. * @param controls Object of control handlers.
  652. * @param dispatch Unhandled action dispatch.
  653. */
  654. function createRuntime() {
  655. let controls = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
  656. let dispatch = arguments.length > 1 ? arguments[1] : undefined;
  657. const rungenControls = Object.entries(controls).map(_ref => {
  658. let [actionType, control] = _ref;
  659. return (value, next, iterate, yieldNext, yieldError) => {
  660. if (!isActionOfType(value, actionType)) {
  661. return false;
  662. }
  663. const routine = control(value);
  664. if (isPromise(routine)) {
  665. // Async control routine awaits resolution.
  666. routine.then(yieldNext, yieldError);
  667. } else {
  668. yieldNext(routine);
  669. }
  670. return true;
  671. };
  672. });
  673. const unhandledActionControl = (value, next) => {
  674. if (!isAction(value)) {
  675. return false;
  676. }
  677. dispatch(value);
  678. next();
  679. return true;
  680. };
  681. rungenControls.push(unhandledActionControl);
  682. const rungenRuntime = (0,dist.create)(rungenControls);
  683. return action => new Promise((resolve, reject) => rungenRuntime(action, result => {
  684. if (isAction(result)) {
  685. dispatch(result);
  686. }
  687. resolve(result);
  688. }, reject));
  689. }
  690. ;// CONCATENATED MODULE: ./node_modules/@wordpress/redux-routine/build-module/index.js
  691. /**
  692. * Internal dependencies
  693. */
  694. /**
  695. * Creates a Redux middleware, given an object of controls where each key is an
  696. * action type for which to act upon, the value a function which returns either
  697. * a promise which is to resolve when evaluation of the action should continue,
  698. * or a value. The value or resolved promise value is assigned on the return
  699. * value of the yield assignment. If the control handler returns undefined, the
  700. * execution is not continued.
  701. *
  702. * @param {Record<string, (value: import('redux').AnyAction) => Promise<boolean> | boolean>} controls Object of control handlers.
  703. *
  704. * @return {import('redux').Middleware} Co-routine runtime
  705. */
  706. function createMiddleware() {
  707. let controls = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
  708. return store => {
  709. const runtime = createRuntime(controls, store.dispatch);
  710. return next => action => {
  711. if (!isGenerator(action)) {
  712. return next(action);
  713. }
  714. return runtime(action);
  715. };
  716. };
  717. }
  718. }();
  719. (window.wp = window.wp || {}).reduxRoutine = __webpack_exports__["default"];
  720. /******/ })()
  721. ;