Socket
Socket
Sign inDemoInstall

promise-assist

Package Overview
Dependencies
Maintainers
1
Versions
13
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

promise-assist - npm Package Compare versions

Comparing version 1.2.0 to 1.2.1

8

cjs/deferred.js

@@ -11,11 +11,11 @@ "use strict";

function deferred() {
var resolve;
var reject;
var promise = new Promise(function (res, rej) {
let resolve;
let reject;
const promise = new Promise((res, rej) => {
resolve = res;
reject = rej;
});
return { promise: promise, resolve: resolve, reject: reject };
return { promise, resolve, reject };
}
exports.deferred = deferred;
//# sourceMappingURL=deferred.js.map
"use strict";
var __assign = (this && this.__assign) || function () {
__assign = Object.assign || function(t) {
for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i];
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
t[p] = s[p];
}
return t;
};
return __assign.apply(this, arguments);
};
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __generator = (this && this.__generator) || function (thisArg, body) {
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
function verb(n) { return function (v) { return step([n, v]); }; }
function step(op) {
if (f) throw new TypeError("Generator is already executing.");
while (_) try {
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
if (y = 0, t) op = [op[0] & 2, t.value];
switch (op[0]) {
case 0: case 1: t = op; break;
case 4: _.label++; return { value: op[1], done: false };
case 5: _.label++; y = op[1]; op = [0]; continue;
case 7: op = _.ops.pop(); _.trys.pop(); continue;
default:
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
if (t[2]) _.ops.pop();
_.trys.pop(); continue;
}
op = body.call(thisArg, _);
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
}
};
Object.defineProperty(exports, "__esModule", { value: true });
var sleep_1 = require("./sleep");
var defaultOptions = {
const sleep_1 = require("./sleep");
const defaultOptions = {
retries: 3,

@@ -63,71 +17,51 @@ delay: 0,

*/
function retry(action, options) {
return __awaiter(this, void 0, void 0, function () {
var _a, retries, delay, timeout, lastError, timedOut, timeoutId, timeoutPromise, maxAttempts, attemptCount, actionResult, result, e_1, _b;
return __generator(this, function (_c) {
switch (_c.label) {
case 0:
_a = __assign({}, defaultOptions, options), retries = _a.retries, delay = _a.delay, timeout = _a.timeout;
timedOut = false;
timeoutPromise = new Promise(function (_res, rej) {
if (timeout > 0) {
timeoutId = setTimeout(function () {
timedOut = true;
if (!lastError) {
lastError = new Error("timed out after " + timeout + "ms");
}
rej();
}, timeout);
}
});
maxAttempts = retries + 1;
attemptCount = 0;
_c.label = 1;
case 1:
attemptCount++;
_c.label = 2;
case 2:
_c.trys.push([2, 4, , 5]);
actionResult = action();
if (actionResult instanceof Promise) {
// make sure we always save error of original promise
// Promise.race below might loose it due to timeout
actionResult.catch(function (e) { return lastError = e || lastError; });
}
return [4 /*yield*/, Promise.race([actionResult, timeoutPromise])];
case 3:
result = _c.sent();
clearTimeout(timeoutId);
return [2 /*return*/, result];
case 4:
e_1 = _c.sent();
lastError = e_1 || lastError;
return [3 /*break*/, 5];
case 5:
if (!(delay > 0)) return [3 /*break*/, 9];
_c.label = 6;
case 6:
_c.trys.push([6, 8, , 9]);
return [4 /*yield*/, Promise.race([sleep_1.sleep(delay), timeoutPromise])];
case 7:
_c.sent();
return [3 /*break*/, 9];
case 8:
_b = _c.sent();
return [3 /*break*/, 9];
case 9:
if (!timedOut && (attemptCount < maxAttempts)) return [3 /*break*/, 1];
_c.label = 10;
case 10:
clearTimeout(timeoutId);
throw (lastError || new Error("failed after " + attemptCount + " tries"));
async function retry(action, options) {
const { retries, delay, timeout } = Object.assign({}, defaultOptions, options);
let lastError; // we expose last error if all attempts failed
let timedOut = false;
let timeoutId; // so we can cancel the timeout rejection
const timeoutPromise = new Promise((_res, rej) => {
if (timeout > 0) {
timeoutId = setTimeout(() => {
timedOut = true;
if (!lastError) {
lastError = new Error(`timed out after ${timeout}ms`);
}
rej();
}, timeout);
}
});
const maxAttempts = retries + 1;
let attemptCount = 0;
do {
attemptCount++;
try {
const actionResult = action();
if (actionResult instanceof Promise) {
// make sure we always save error of original promise
// Promise.race below might loose it due to timeout
actionResult.catch(e => lastError = e || lastError);
}
});
});
const result = await Promise.race([actionResult, timeoutPromise]);
clearTimeout(timeoutId);
return result;
}
catch (e) {
lastError = e || lastError;
}
if (delay > 0) {
try {
await Promise.race([sleep_1.sleep(delay), timeoutPromise]);
}
catch ( /* we throw lastError at the end */_a) { /* we throw lastError at the end */ }
}
} while (!timedOut && (attemptCount < maxAttempts));
clearTimeout(timeoutId);
throw (lastError || new Error(`failed after ${attemptCount} tries`));
}
exports.retry = retry;
function waitFor(action, options) {
return retry(action, __assign({ delay: 10, timeout: 500, retries: Infinity }, options));
return retry(action, Object.assign({ delay: 10, timeout: 500, retries: Infinity }, options));
}
exports.waitFor = waitFor;
//# sourceMappingURL=retry.js.map

@@ -10,5 +10,5 @@ "use strict";

function sleep(ms) {
return new Promise(function (resolve) { return setTimeout(resolve, ms); });
return new Promise(resolve => setTimeout(resolve, ms));
}
exports.sleep = sleep;
//# sourceMappingURL=sleep.js.map

@@ -13,10 +13,9 @@ "use strict";

*/
function timeout(originalPromise, ms, timeoutMessage) {
if (timeoutMessage === void 0) { timeoutMessage = "timed out after " + ms + "ms"; }
return new Promise(function (resolve, reject) {
var timerId = setTimeout(function () { return reject(new Error(timeoutMessage)); }, ms);
originalPromise.then(function (resolvedValue) {
function timeout(originalPromise, ms, timeoutMessage = `timed out after ${ms}ms`) {
return new Promise((resolve, reject) => {
const timerId = setTimeout(() => reject(new Error(timeoutMessage)), ms);
originalPromise.then(resolvedValue => {
clearTimeout(timerId);
resolve(resolvedValue);
}, function (rejectReason) {
}, rejectReason => {
clearTimeout(timerId);

@@ -23,0 +22,0 @@ reject(rejectReason);

{
"name": "promise-assist",
"description": "Several helper functions when working with native promises",
"version": "1.2.0",
"version": "1.2.1",
"main": "./cjs/index.js",

@@ -12,3 +12,3 @@ "module": "./esm/index.js",

"build:cjs": "tsc -p src --outDir cjs --module commonjs",
"build:esm": "tsc -p src --outDir esm --module esnext",
"build:esm": "tsc -p src --outDir esm --module esnext --target es5",
"lint": "run-p lint:src lint:test",

@@ -38,2 +38,5 @@ "lint:src": "tslint -p src",

],
"engines": {
"node": ">=8"
},
"sideEffects": false,

@@ -40,0 +43,0 @@ "author": "Avi Vahl <avi.vahl@wix.com>",

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc