@sebspark/retry 0.1.0 → 0.1.1

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.mts CHANGED
@@ -25,10 +25,10 @@ type HttpError = {
25
25
  };
26
26
  };
27
27
  declare const retryCondition: {
28
- always: (_error: any) => boolean;
28
+ always: (_error: unknown) => boolean;
29
29
  httpErrors: (...codes: ErrorType[]) => (error: HttpError) => boolean;
30
- serverErrors: (error: any) => boolean;
30
+ serverErrors: (error: HttpError) => boolean;
31
31
  custom: (func: (error: any) => boolean) => (error: any) => boolean;
32
32
  };
33
33
 
34
- export { RetryConditionFunction, RetrySettings, interval, retry, retryCondition };
34
+ export { type RetryConditionFunction, type RetrySettings, interval, retry, retryCondition };
package/dist/index.d.ts CHANGED
@@ -25,10 +25,10 @@ type HttpError = {
25
25
  };
26
26
  };
27
27
  declare const retryCondition: {
28
- always: (_error: any) => boolean;
28
+ always: (_error: unknown) => boolean;
29
29
  httpErrors: (...codes: ErrorType[]) => (error: HttpError) => boolean;
30
- serverErrors: (error: any) => boolean;
30
+ serverErrors: (error: HttpError) => boolean;
31
31
  custom: (func: (error: any) => boolean) => (error: any) => boolean;
32
32
  };
33
33
 
34
- export { RetryConditionFunction, RetrySettings, interval, retry, retryCondition };
34
+ export { type RetryConditionFunction, type RetrySettings, interval, retry, retryCondition };
package/dist/index.js CHANGED
@@ -32,8 +32,7 @@ var defaultSettings = {
32
32
  };
33
33
  var mergeSettings = (...settings) => {
34
34
  const s = settings.filter((s2) => s2);
35
- if (!s.length)
36
- return void 0;
35
+ if (!s.length) return void 0;
37
36
  const merged = Object.assign(defaultSettings, ...s);
38
37
  return merged;
39
38
  };
@@ -45,13 +44,12 @@ var retry = async (func, ...settings) => {
45
44
  const response = await func();
46
45
  return response;
47
46
  } catch (error) {
48
- if (mergedSettings && mergedSettings.retryCondition(error) && retries < mergedSettings.maxRetries) {
49
- retries++;
50
- await wait(mergedSettings.interval(retries));
51
- return makeCall(retries);
52
- } else {
53
- throw error;
47
+ if (mergedSettings && // biome-ignore lint/style/noNonNullAssertion: Will be set by defaultSettings
48
+ mergedSettings.retryCondition(error) && retries < mergedSettings.maxRetries) {
49
+ await wait(mergedSettings.interval(retries + 1));
50
+ return makeCall(retries + 1);
54
51
  }
52
+ throw error;
55
53
  }
56
54
  };
57
55
  return makeCall(0);
@@ -59,7 +57,7 @@ var retry = async (func, ...settings) => {
59
57
  var interval = {
60
58
  fixed: (delay) => (_retries) => delay,
61
59
  linear: (delay) => (retries) => retries * delay,
62
- exponential: (delay, base = 2) => (retries) => Math.pow(base, retries - 1) * delay
60
+ exponential: (delay, base = 2) => (retries) => base ** (retries - 1) * delay
63
61
  };
64
62
  var clientErrorCodes = [
65
63
  400,
@@ -110,18 +108,16 @@ var retryCondition = {
110
108
  httpErrors: (...codes) => (error) => {
111
109
  var _a, _b;
112
110
  const captureCodes = codes.flatMap((code) => {
113
- if (typeof code === "number")
114
- return code;
115
- if (code === "client")
116
- return clientErrorCodes;
117
- if (code === "server")
118
- return serverErrorCodes;
111
+ if (typeof code === "number") return code;
112
+ if (code === "client") return clientErrorCodes;
113
+ if (code === "server") return serverErrorCodes;
119
114
  return;
120
115
  }).filter((code) => !!code);
121
- const status = error.status || error.statusCode || ((_a = error.response) == null ? void 0 : _a.status) || ((_b = error.response) == null ? void 0 : _b.statusCode);
116
+ const status = error.status || error.statusCode || ((_a = error.response) == null ? void 0 : _a.status) || ((_b = error.response) == null ? void 0 : _b.statusCode) || 0;
122
117
  return captureCodes.includes(status);
123
118
  },
124
119
  serverErrors: (error) => retryCondition.httpErrors("server")(error),
120
+ // biome-ignore lint/suspicious/noExplicitAny: Errors can be anything
125
121
  custom: (func) => func
126
122
  };
127
123
  // Annotate the CommonJS export names for ESM import in node:
package/dist/index.mjs CHANGED
@@ -4,8 +4,7 @@ var defaultSettings = {
4
4
  };
5
5
  var mergeSettings = (...settings) => {
6
6
  const s = settings.filter((s2) => s2);
7
- if (!s.length)
8
- return void 0;
7
+ if (!s.length) return void 0;
9
8
  const merged = Object.assign(defaultSettings, ...s);
10
9
  return merged;
11
10
  };
@@ -17,13 +16,12 @@ var retry = async (func, ...settings) => {
17
16
  const response = await func();
18
17
  return response;
19
18
  } catch (error) {
20
- if (mergedSettings && mergedSettings.retryCondition(error) && retries < mergedSettings.maxRetries) {
21
- retries++;
22
- await wait(mergedSettings.interval(retries));
23
- return makeCall(retries);
24
- } else {
25
- throw error;
19
+ if (mergedSettings && // biome-ignore lint/style/noNonNullAssertion: Will be set by defaultSettings
20
+ mergedSettings.retryCondition(error) && retries < mergedSettings.maxRetries) {
21
+ await wait(mergedSettings.interval(retries + 1));
22
+ return makeCall(retries + 1);
26
23
  }
24
+ throw error;
27
25
  }
28
26
  };
29
27
  return makeCall(0);
@@ -31,7 +29,7 @@ var retry = async (func, ...settings) => {
31
29
  var interval = {
32
30
  fixed: (delay) => (_retries) => delay,
33
31
  linear: (delay) => (retries) => retries * delay,
34
- exponential: (delay, base = 2) => (retries) => Math.pow(base, retries - 1) * delay
32
+ exponential: (delay, base = 2) => (retries) => base ** (retries - 1) * delay
35
33
  };
36
34
  var clientErrorCodes = [
37
35
  400,
@@ -82,18 +80,16 @@ var retryCondition = {
82
80
  httpErrors: (...codes) => (error) => {
83
81
  var _a, _b;
84
82
  const captureCodes = codes.flatMap((code) => {
85
- if (typeof code === "number")
86
- return code;
87
- if (code === "client")
88
- return clientErrorCodes;
89
- if (code === "server")
90
- return serverErrorCodes;
83
+ if (typeof code === "number") return code;
84
+ if (code === "client") return clientErrorCodes;
85
+ if (code === "server") return serverErrorCodes;
91
86
  return;
92
87
  }).filter((code) => !!code);
93
- const status = error.status || error.statusCode || ((_a = error.response) == null ? void 0 : _a.status) || ((_b = error.response) == null ? void 0 : _b.statusCode);
88
+ const status = error.status || error.statusCode || ((_a = error.response) == null ? void 0 : _a.status) || ((_b = error.response) == null ? void 0 : _b.statusCode) || 0;
94
89
  return captureCodes.includes(status);
95
90
  },
96
91
  serverErrors: (error) => retryCondition.httpErrors("server")(error),
92
+ // biome-ignore lint/suspicious/noExplicitAny: Errors can be anything
97
93
  custom: (func) => func
98
94
  };
99
95
  export {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sebspark/retry",
3
- "version": "0.1.0",
3
+ "version": "0.1.1",
4
4
  "license": "Apache-2.0",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.mjs",
@@ -11,9 +11,9 @@
11
11
  "scripts": {
12
12
  "build": "tsup-node src/index.ts --format esm,cjs --dts",
13
13
  "dev": "tsc --watch --noEmit",
14
- "lint": "eslint \"src/**/*.ts*\"",
15
- "test": "vitest --passWithNoTests --coverage",
16
- "typecheck": "vitest typecheck --passWithNoTests"
14
+ "lint": "biome lint .",
15
+ "test": "vitest run --passWithNoTests --coverage",
16
+ "typecheck": "vitest --typecheck.only --passWithNoTests"
17
17
  },
18
18
  "devDependencies": {
19
19
  "tsconfig": "*"