Socket
Socket
Sign inDemoInstall

@radpack/core

Package Overview
Dependencies
10
Maintainers
3
Versions
5
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 1.0.4 to 1.0.5

6

lib/server/constants/index.js

@@ -6,3 +6,3 @@ "use strict";

});
exports.DEFAULT_TIMEOUT = exports.DEFAULT_DELAY = void 0;
exports.DEFAULT_TIMEOUT = exports.DEFAULT_RETRIES = exports.DEFAULT_DELAY = void 0;
const DEFAULT_TIMEOUT = 15000; // 15s

@@ -13,2 +13,4 @@

exports.DEFAULT_DELAY = DEFAULT_DELAY;
exports.DEFAULT_DELAY = DEFAULT_DELAY;
const DEFAULT_RETRIES = 3;
exports.DEFAULT_RETRIES = DEFAULT_RETRIES;

@@ -10,2 +10,4 @@ "use strict";

var _abortController = _interopRequireDefault(require("abort-controller"));
var _fetchFile = _interopRequireDefault(require("./fetch-file"));

@@ -22,3 +24,3 @@

timeout = _constants.DEFAULT_TIMEOUT,
retries = 0,
retries = _constants.DEFAULT_RETRIES,
...options

@@ -30,9 +32,20 @@ } = {}) => {

const retry = retries-- > 0 ? () => sleep(delay).then(() => smartFetch(url, { ...options,
let signal = options.signal;
let timeoutTimer;
if (!signal && timeout > 0) {
const controller = new _abortController.default();
signal = controller.signal;
timeoutTimer = setTimeout(() => controller.abort(), timeout);
timeoutTimer.unref();
}
const retry = retries > 0 ? () => sleep(delay).then(() => smartFetch(url, { ...options,
delay,
retries
timeout,
retries: retries - 1
})) : false;
return (0, _crossFetch.default)(url, { ...options,
timeout
}).then(res => !res.ok && res.status !== 304 && retry ? retry() : res, err => {
signal
}).finally(() => clearTimeout(timeoutTimer)).then(res => retry && !res.ok && res.status !== 304 ? retry() : res).catch(err => {
if (retry) {

@@ -39,0 +52,0 @@ return retry();

{
"name": "@radpack/core",
"version": "1.0.4",
"version": "1.0.5",
"description": "Rapid Application Development Packaging Core",

@@ -36,10 +36,11 @@ "main": "./lib/index.js",

"dependencies": {
"abort-controller": "^3.0.0",
"cross-fetch": "^3.1.5"
},
"devDependencies": {
"@babel/cli": "^7.17.6",
"@babel/cli": "^7.18.10",
"@sinonjs/fake-timers": "^9.1.2",
"rimraf": "^3.0.2"
},
"license": "MIT",
"gitHead": "bda826562880063765984d870a7365851635120e"
"license": "MIT"
}
export const DEFAULT_TIMEOUT = 15000; // 15s
export const DEFAULT_DELAY = 5000; // 5s
export const DEFAULT_RETRIES = 3;
import fetch from 'cross-fetch';
import AbortController from 'abort-controller';
import fetchFile from './fetch-file';
import { DEFAULT_DELAY, DEFAULT_TIMEOUT } from './constants';
import { DEFAULT_DELAY, DEFAULT_TIMEOUT, DEFAULT_RETRIES } from './constants';
const sleep = ms => new Promise(resolve => ms > 0 ? setTimeout(resolve, ms) : resolve());
const smartFetch = (url, { delay = DEFAULT_DELAY, timeout = DEFAULT_TIMEOUT, retries = 0, ...options } = {}) => {
const smartFetch = (url, { delay = DEFAULT_DELAY, timeout = DEFAULT_TIMEOUT, retries = DEFAULT_RETRIES, ...options } = {}) => {
if (url.startsWith('file:')) {
return fetchFile(url);
}
const retry = retries-- > 0
? () => sleep(delay).then(() => smartFetch(url, { ...options, delay, retries }))
let signal = options.signal;
let timeoutTimer;
if (!signal && timeout > 0) {
const controller = new AbortController();
signal = controller.signal;
timeoutTimer = setTimeout(() => controller.abort(), timeout);
timeoutTimer.unref();
}
const retry = retries > 0
? () => sleep(delay).then(() => smartFetch(url, { ...options, delay, timeout, retries: retries - 1 }))
: false;
return fetch(url, { ...options, timeout }).then(res => !res.ok && res.status !== 304 && retry ? retry() : res, err => {
if (retry) {
return retry();
}
throw err;
});
return fetch(url, { ...options, signal })
.finally(() => clearTimeout(timeoutTimer))
.then(res => retry && !res.ok && res.status !== 304 ? retry() : res)
.catch(err => {
if (retry) {
return retry();
}
throw err;
});
};

@@ -21,0 +33,0 @@

SocketSocket SOC 2 Logo

Product

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

Packages

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc