UNPKG

@snipsonian/core

Version:

Core/base reusable javascript code snippets

39 lines (38 loc) 1.42 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const periodsInMillis_1 = require("../time/periodsInMillis"); const currentDate_1 = require("../date/currentDate"); function extendPromise(promise) { let promiseStatus = 'pending'; let resolveTimestamp = null; const extendedPromise = promise .then((resolveData) => { promiseStatus = 'resolved'; resolveTimestamp = (0, currentDate_1.getCurrentTimestamp)(); return resolveData; }) .catch((error) => { promiseStatus = 'rejected'; throw error; }); extendedPromise.isPending = () => promiseStatus === 'pending'; extendedPromise.isRejected = () => promiseStatus === 'rejected'; extendedPromise.isResolved = () => promiseStatus === 'resolved'; extendedPromise.wasResolvedPriorTo = ({ minutesAgo }) => { if (resolveTimestamp === null) { return false; } if (resolveTimestamp < ((0, currentDate_1.getCurrentTimestamp)() - (minutesAgo * periodsInMillis_1.ONE_MINUTE_IN_MILLIS))) { return true; } return false; }; extendedPromise.getMillisSinceResolved = () => { if (resolveTimestamp === null) { return null; } return ((0, currentDate_1.getCurrentTimestamp)() - resolveTimestamp); }; return extendedPromise; } exports.default = extendPromise;