UNPKG

coolant

Version:

The modular build radiator

51 lines (50 loc) 2.01 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var tslib_1 = require("tslib"); var moment_1 = tslib_1.__importDefault(require("moment")); var invokeAction = function (action) { var result = action(); if (result !== undefined) { result.then(); } }; exports.periodically = function (action, intervalSeconds) { if (intervalSeconds === void 0) { intervalSeconds = 5; } invokeAction(action); return setInterval(function () { return invokeAction(action); }, intervalSeconds * 1000); // TODO: Remove this case when storybook issue resolved }; var isPromise = function (value) { return value.then !== undefined; }; exports.periodicallyWithState = function (action, initialState, intervalSeconds) { var state = initialState; return exports.periodically(function () { return tslib_1.__awaiter(void 0, void 0, void 0, function () { var result, _a; return tslib_1.__generator(this, function (_b) { switch (_b.label) { case 0: result = action(state); if (!isPromise(result)) return [3 /*break*/, 2]; return [4 /*yield*/, result]; case 1: _a = _b.sent(); return [3 /*break*/, 3]; case 2: _a = result; _b.label = 3; case 3: state = _a; return [2 /*return*/]; } }); }); }, intervalSeconds); }; exports.atTime = function (time, action) { exports.periodicallyWithState(function (_a) { var alreadyTriggered = _a.alreadyTriggered; var desiredMoment = moment_1.default(time, "hh:mm"); var isDesiredMoment = moment_1.default().isSame(desiredMoment, "minute"); if (isDesiredMoment && !alreadyTriggered) { action(); } return { alreadyTriggered: isDesiredMoment }; }, { alreadyTriggered: false }); };