UNPKG

gambit

Version:

A hyper-thin library to help building API driven redux apps

93 lines (84 loc) 2.13 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.dependableMatrix = dependableMatrix; exports.hasNotBeenCalled = hasNotBeenCalled; exports.hasNotSucceeded = hasNotSucceeded; exports.hasNotBeenCalledIn = hasNotBeenCalledIn; exports.hasNotSucceededIn = hasNotSucceededIn; function dependableMatrix() { var resettingActions = arguments.length <= 0 || arguments[0] === undefined ? [] : arguments[0]; var standardBlocker = arguments.length <= 1 || arguments[1] === undefined ? function () { return true; } : arguments[1]; return function (foundCalled, foundSucceeded, calls) { var hasResettedAction = resettingActions.some(function (actionId) { return calls.getIn(['lastCalled', actionId]) > foundSucceeded; }); if (hasResettedAction) return true; return standardBlocker(foundCalled, foundSucceeded); }; } function hasNotBeenCalled(foundCalled) { return !foundCalled; } function hasNotSucceeded(foundCalled, foundSucceeded) { return !foundSucceeded; } function hasNotBeenCalledIn(time, units) { var seconds = 0; switch (units) { case 'hours': case 'hrs': case 'hr': case 'h': seconds = 1000 * 60 * 60; break; case 'minutes': case 'mins': case 'min': case 'm': seconds = 1000 * 60; break; case 'seconds': case 'secs': case 'sec': case 's': default: seconds = time; break; } return function (foundCalled) { if (!foundCalled) return true; return Date.now() > foundCalled + seconds; }; } function hasNotSucceededIn(time, units) { var seconds = 0; switch (units) { case 'hours': case 'hrs': case 'hr': case 'h': seconds = 1000 * 60 * 60; break; case 'minutes': case 'mins': case 'min': case 'm': seconds = 1000 * 60; break; case 'seconds': case 'secs': case 'sec': case 's': default: seconds = time; break; } return function (foundCalled, foundSucceeded) { if (!foundSucceeded) return true; return Date.now() > foundSucceeded + seconds; }; }