vigor-fetch 1.0.17 → 1.0.19

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -76,7 +76,7 @@ declare class VigorFetch<T = any> {
76
76
  headers(obj: object): VigorFetch<T>;
77
77
  body(obj: any): VigorFetch<T>;
78
78
  offset(obj: object): VigorFetch<T>;
79
- maxDelay(ms: number): VigorFetch<T>;
79
+ limit(ms: number): VigorFetch<T>;
80
80
  retryHeaders(...str: string[]): VigorFetch<T>;
81
81
  unretry(...int: number[]): VigorFetch<T>;
82
82
  before(...func: Function[]): VigorFetch<T>;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -121,7 +121,7 @@ class VigorRetry {
121
121
  }
122
122
  catch (error) {
123
123
  ctx.error = error;
124
- ctx.wait = Math.min(Math.pow(ctx.backoff, ctx.attempt - 1) * ctx.baseDelay, max) + ctx.jitter;
124
+ ctx.wait = Math.min(Math.pow(ctx.backoff, ctx.attempt - 1) * ctx.baseDelay, max) + ctx.jitter * Math.random();
125
125
  for (const func of onRetry) {
126
126
  if (typeof func !== 'function')
127
127
  throw new VigorRetryError('Interceptor<onRetry> is not a function', { type: "not a function", data: "retry" });
@@ -249,41 +249,38 @@ class VigorParse {
249
249
  class VigorFetch {
250
250
  constructor(origin = "", config = {}) {
251
251
  this._config = {
252
- request: {
253
- origin, path: "", query: {},
254
- method: "", headers: {}, body: null, offset: {},
255
- ...(config.request || {})
256
- },
257
- retry: {
258
- limit: 10000,
259
- retryHeaders: ["retry-after", "ratelimit-reset", "x-ratelimit-reset", "x-retry-after", "x-amz-retry-after", "chrome-proxy-next-link"],
260
- unretry: new Set([400, 401, 403, 404, 406, 409, 410, 411, 413, 414, 415, 422]),
261
- ...(config.retry || {})
262
- },
263
- response: {
264
- retryConfig: undefined,
265
- parseConfig: undefined,
266
- ...(config.response || {})
267
- },
268
- interceptors: {
269
- before: [], after: [], onError: [], result: [],
270
- ...(config.interceptors || {})
271
- },
252
+ request: { origin, path: "", query: {}, method: "", headers: {}, body: null, offset: {} },
253
+ retry: { limit: 10000, retryHeaders: ["retry-after", "ratelimit-reset"], unretry: new Set([400, 404]) },
254
+ response: { retryConfig: undefined, parseConfig: undefined },
255
+ interceptors: { before: [], after: [], onError: [], result: [] },
272
256
  ...config
273
257
  };
274
258
  }
275
259
  _next(changes) {
276
- return new this.constructor(this._config.request.origin, {
260
+ const newConfig = {
277
261
  ...this._config,
278
- ...changes,
279
262
  request: { ...this._config.request, ...(changes.request || {}) },
280
263
  retry: { ...this._config.retry, ...(changes.retry || {}) },
281
264
  response: { ...this._config.response, ...(changes.response || {}) },
282
265
  interceptors: {
283
- ...this._config.interceptors,
266
+ before: [...(this._config.interceptors.before || [])],
267
+ after: [...(this._config.interceptors.after || [])],
268
+ onError: [...(this._config.interceptors.onError || [])],
269
+ result: [...(this._config.interceptors.result || [])],
284
270
  ...(changes.interceptors || {})
285
271
  }
286
- });
272
+ };
273
+ if (changes.interceptors) {
274
+ Object.keys(changes.interceptors).forEach(key => {
275
+ if (Array.isArray(changes.interceptors[key])) {
276
+ newConfig.interceptors[key] = [
277
+ ...this._config.interceptors[key],
278
+ ...changes.interceptors[key]
279
+ ];
280
+ }
281
+ });
282
+ }
283
+ return new this.constructor(newConfig.request.origin, newConfig);
287
284
  }
288
285
  origin(str) { return this._next({ request: { origin: str } }); }
289
286
  path(str) { return this._next({ request: { path: str } }); }
@@ -292,7 +289,7 @@ class VigorFetch {
292
289
  headers(obj) { return this._next({ request: { headers: obj } }); }
293
290
  body(obj) { return this._next({ request: { body: obj } }); }
294
291
  offset(obj) { return this._next({ request: { offset: obj } }); }
295
- maxDelay(ms) { return this._next({ retry: { maxDelay: ms } }); }
292
+ limit(ms) { return this._next({ retry: { limit: ms } }); }
296
293
  retryHeaders(...str) { return this._next({ retry: { retryHeaders: [...this._config.retry.retryHeaders, ...str.flat()] } }); }
297
294
  unretry(...int) { return this._next({ retry: { unretry: new Set(int.flat()) } }); }
298
295
  before(...func) { return this._next({ interceptors: { before: [...this._config.interceptors.before, ...func.flat()] } }); }
package/dist/index.mjs CHANGED
@@ -117,7 +117,7 @@ class VigorRetry {
117
117
  }
118
118
  catch (error) {
119
119
  ctx.error = error;
120
- ctx.wait = Math.min(Math.pow(ctx.backoff, ctx.attempt - 1) * ctx.baseDelay, max) + ctx.jitter;
120
+ ctx.wait = Math.min(Math.pow(ctx.backoff, ctx.attempt - 1) * ctx.baseDelay, max) + ctx.jitter * Math.random();
121
121
  for (const func of onRetry) {
122
122
  if (typeof func !== 'function')
123
123
  throw new VigorRetryError('Interceptor<onRetry> is not a function', { type: "not a function", data: "retry" });
@@ -245,41 +245,38 @@ class VigorParse {
245
245
  class VigorFetch {
246
246
  constructor(origin = "", config = {}) {
247
247
  this._config = {
248
- request: {
249
- origin, path: "", query: {},
250
- method: "", headers: {}, body: null, offset: {},
251
- ...(config.request || {})
252
- },
253
- retry: {
254
- limit: 10000,
255
- retryHeaders: ["retry-after", "ratelimit-reset", "x-ratelimit-reset", "x-retry-after", "x-amz-retry-after", "chrome-proxy-next-link"],
256
- unretry: new Set([400, 401, 403, 404, 406, 409, 410, 411, 413, 414, 415, 422]),
257
- ...(config.retry || {})
258
- },
259
- response: {
260
- retryConfig: undefined,
261
- parseConfig: undefined,
262
- ...(config.response || {})
263
- },
264
- interceptors: {
265
- before: [], after: [], onError: [], result: [],
266
- ...(config.interceptors || {})
267
- },
248
+ request: { origin, path: "", query: {}, method: "", headers: {}, body: null, offset: {} },
249
+ retry: { limit: 10000, retryHeaders: ["retry-after", "ratelimit-reset"], unretry: new Set([400, 404]) },
250
+ response: { retryConfig: undefined, parseConfig: undefined },
251
+ interceptors: { before: [], after: [], onError: [], result: [] },
268
252
  ...config
269
253
  };
270
254
  }
271
255
  _next(changes) {
272
- return new this.constructor(this._config.request.origin, {
256
+ const newConfig = {
273
257
  ...this._config,
274
- ...changes,
275
258
  request: { ...this._config.request, ...(changes.request || {}) },
276
259
  retry: { ...this._config.retry, ...(changes.retry || {}) },
277
260
  response: { ...this._config.response, ...(changes.response || {}) },
278
261
  interceptors: {
279
- ...this._config.interceptors,
262
+ before: [...(this._config.interceptors.before || [])],
263
+ after: [...(this._config.interceptors.after || [])],
264
+ onError: [...(this._config.interceptors.onError || [])],
265
+ result: [...(this._config.interceptors.result || [])],
280
266
  ...(changes.interceptors || {})
281
267
  }
282
- });
268
+ };
269
+ if (changes.interceptors) {
270
+ Object.keys(changes.interceptors).forEach(key => {
271
+ if (Array.isArray(changes.interceptors[key])) {
272
+ newConfig.interceptors[key] = [
273
+ ...this._config.interceptors[key],
274
+ ...changes.interceptors[key]
275
+ ];
276
+ }
277
+ });
278
+ }
279
+ return new this.constructor(newConfig.request.origin, newConfig);
283
280
  }
284
281
  origin(str) { return this._next({ request: { origin: str } }); }
285
282
  path(str) { return this._next({ request: { path: str } }); }
@@ -288,7 +285,7 @@ class VigorFetch {
288
285
  headers(obj) { return this._next({ request: { headers: obj } }); }
289
286
  body(obj) { return this._next({ request: { body: obj } }); }
290
287
  offset(obj) { return this._next({ request: { offset: obj } }); }
291
- maxDelay(ms) { return this._next({ retry: { maxDelay: ms } }); }
288
+ limit(ms) { return this._next({ retry: { limit: ms } }); }
292
289
  retryHeaders(...str) { return this._next({ retry: { retryHeaders: [...this._config.retry.retryHeaders, ...str.flat()] } }); }
293
290
  unretry(...int) { return this._next({ retry: { unretry: new Set(int.flat()) } }); }
294
291
  before(...func) { return this._next({ interceptors: { before: [...this._config.interceptors.before, ...func.flat()] } }); }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vigor-fetch",
3
- "version": "1.0.17",
3
+ "version": "1.0.19",
4
4
  "description": "Smart, zero-dependency HTTP client with self-healing retries for rate-limited servers.",
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/index.mjs",