@snipsonian/core
Version:
Core/base reusable javascript code snippets
39 lines (38 loc) • 1.42 kB
JavaScript
;
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;