@prosopo/load-balancer 2.11.3 → 2.11.4

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.
@@ -1,5 +1,5 @@
1
1
 
2
- > @prosopo/load-balancer@2.11.3 build:cjs
2
+ > @prosopo/load-balancer@2.11.4 build:cjs
3
3
  > NODE_ENV=${NODE_ENV:-development}; vite build --config vite.cjs.config.ts --mode $NODE_ENV
4
4
 
5
5
  ViteCommonJSConfig: .
@@ -30,11 +30,11 @@ Bundle build started
30
30
  ✓ 7 modules transformed.
31
31
  rendering chunks...
32
32
  computing gzip size...
33
- dist/cjs/retry.cjs 1.13 kB │ gzip: 0.56 kB
33
+ dist/cjs/retry.cjs 1.27 kB │ gzip: 0.62 kB
34
34
  dist/cjs/providerUrlOverride.cjs 1.42 kB │ gzip: 0.78 kB
35
35
  dist/cjs/developmentProviderUrl.cjs 1.81 kB │ gzip: 0.88 kB
36
36
  dist/cjs/index.cjs 1.94 kB │ gzip: 0.47 kB
37
37
  dist/cjs/balancer.cjs 4.95 kB │ gzip: 2.13 kB
38
38
  dist/cjs/providers.cjs 7.56 kB │ gzip: 2.57 kB
39
39
 
40
- ✓ built in 59ms
40
+ ✓ built in 74ms
@@ -1,8 +1,8 @@
1
1
 
2
- > @prosopo/load-balancer@2.11.3 build:tsc
2
+ > @prosopo/load-balancer@2.11.4 build:tsc
3
3
  > tsc --build --verbose
4
4
 
5
- 7:49:07 PM - Projects in this build:
5
+ 12:38:29 PM - Projects in this build:
6
6
  * ../../dev/config/tsconfig.json
7
7
  * ../util/tsconfig.json
8
8
  * ../locale/tsconfig.json
@@ -12,21 +12,21 @@
12
12
  * ../common/tsconfig.json
13
13
  * tsconfig.json
14
14
 
15
- 7:49:07 PM - Project '../../dev/config/tsconfig.json' is up to date because newest input '../../dev/config/src/webpack/webpack.config.ts' is older than output '../../dev/config/tsconfig.tsbuildinfo'
15
+ 12:38:30 PM - Project '../../dev/config/tsconfig.json' is up to date because newest input '../../dev/config/src/webpack/webpack.config.ts' is older than output '../../dev/config/tsconfig.tsbuildinfo'
16
16
 
17
- 7:49:07 PM - Project '../util/tsconfig.json' is up to date because newest input '../util/src/url.ts' is older than output '../util/tsconfig.tsbuildinfo'
17
+ 12:38:30 PM - Project '../util/tsconfig.json' is up to date because newest input '../util/src/url.ts' is older than output '../util/tsconfig.tsbuildinfo'
18
18
 
19
- 7:49:07 PM - Project '../locale/tsconfig.json' is up to date because newest input '../locale/src/translationKey.ts' is older than output '../locale/tsconfig.tsbuildinfo'
19
+ 12:38:30 PM - Project '../locale/tsconfig.json' is up to date because newest input '../locale/src/translationKey.ts' is older than output '../locale/tsconfig.tsbuildinfo'
20
20
 
21
- 7:49:07 PM - Project '../logger/tsconfig.json' is up to date because newest input '../logger/src/logger.ts' is older than output '../logger/tsconfig.tsbuildinfo'
21
+ 12:38:30 PM - Project '../logger/tsconfig.json' is up to date because newest input '../logger/src/index.ts' is older than output '../logger/tsconfig.tsbuildinfo'
22
22
 
23
- 7:49:07 PM - Project '../util-crypto/tsconfig.json' is up to date because newest input '../util-crypto/src/types.ts' is older than output '../util-crypto/tsconfig.tsbuildinfo'
23
+ 12:38:30 PM - Project '../util-crypto/tsconfig.json' is up to date because newest input '../util-crypto/src/types.ts' is older than output '../util-crypto/tsconfig.tsbuildinfo'
24
24
 
25
- 7:49:07 PM - Project '../types/tsconfig.json' is up to date because newest input '../types/src/types.test-d.ts' is older than output '../types/tsconfig.tsbuildinfo'
25
+ 12:38:30 PM - Project '../types/tsconfig.json' is up to date because newest input '../types/src/types.test-d.ts' is older than output '../types/tsconfig.tsbuildinfo'
26
26
 
27
- 7:49:07 PM - Project '../common/tsconfig.json' is up to date because newest input '../common/src/index.ts' is older than output '../common/tsconfig.tsbuildinfo'
27
+ 12:38:30 PM - Project '../common/tsconfig.json' is up to date because newest input '../common/src/error.ts' is older than output '../common/tsconfig.tsbuildinfo'
28
28
 
29
- 7:49:07 PM - Project 'tsconfig.json' is out of date because output file 'tsconfig.tsbuildinfo' does not exist
29
+ 12:38:30 PM - Project 'tsconfig.json' is out of date because output file 'tsconfig.tsbuildinfo' does not exist
30
30
 
31
- 7:49:07 PM - Building project '/home/runner/work/captcha/captcha/packages/load-balancer/tsconfig.json'...
31
+ 12:38:30 PM - Building project '/home/runner/work/captcha/captcha/packages/load-balancer/tsconfig.json'...
32
32
 
@@ -1,9 +1,9 @@
1
1
 
2
- > @prosopo/load-balancer@2.11.3 build
2
+ > @prosopo/load-balancer@2.11.4 build
3
3
  > npm run build:cross-env -- --mode ${NODE_ENV:-development}
4
4
 
5
5
 
6
- > @prosopo/load-balancer@2.11.3 build:cross-env
6
+ > @prosopo/load-balancer@2.11.4 build:cross-env
7
7
  > vite build --config vite.esm.config.ts --mode production
8
8
 
9
9
  ViteEsmConfig: .
@@ -35,11 +35,11 @@ Bundle build started
35
35
  rendering chunks...
36
36
  computing gzip size...
37
37
  dist/_virtual/_rolldown/runtime.js 0.04 kB │ gzip: 0.06 kB
38
- dist/retry.js 1.09 kB │ gzip: 0.55 kB
39
38
  dist/index.js 1.20 kB │ gzip: 0.36 kB
39
+ dist/retry.js 1.23 kB │ gzip: 0.61 kB
40
40
  dist/providerUrlOverride.js 1.39 kB │ gzip: 0.77 kB
41
41
  dist/developmentProviderUrl.js 1.70 kB │ gzip: 0.87 kB
42
42
  dist/balancer.js 4.66 kB │ gzip: 2.09 kB
43
43
  dist/providers.js 7.19 kB │ gzip: 2.53 kB
44
44
 
45
- ✓ built in 67ms
45
+ ✓ built in 70ms
package/CHANGELOG.md CHANGED
@@ -1,5 +1,16 @@
1
1
  # @prosopo/load-balancer
2
2
 
3
+ ## 2.11.4
4
+ ### Patch Changes
5
+
6
+ - 70fcefd: `retryWithBackoff` now fails straight away with a clear "maxAttempts must be a positive integer" error when `maxAttempts` is 0, negative, fractional or NaN. Before, it never ran the function and threw a confusing `Error("undefined")`.
7
+ - Updated dependencies [ede4352]
8
+ - Updated dependencies [2145922]
9
+ - Updated dependencies [06784d0]
10
+ - Updated dependencies [06784d0]
11
+ - @prosopo/types@5.12.0
12
+ - @prosopo/common@3.1.61
13
+
3
14
  ## 2.11.3
4
15
  ### Patch Changes
5
16
 
@@ -11,6 +11,7 @@ var getBackoffDelayMs = (attempt, baseDelayMs, maxDelayMs, random = Math.random)
11
11
  */
12
12
  var retryWithBackoff = async (fn, opts) => {
13
13
  const { maxAttempts, baseDelayMs, maxDelayMs, random = Math.random, sleep = defaultSleep } = opts;
14
+ if (!Number.isInteger(maxAttempts) || maxAttempts < 1) throw new RangeError(`maxAttempts must be a positive integer, got ${maxAttempts}`);
14
15
  let lastErr;
15
16
  for (let attempt = 0; attempt < maxAttempts; attempt++) try {
16
17
  return await fn();
@@ -1 +1 @@
1
- {"version":3,"file":"retry.d.ts","sourceRoot":"","sources":["../src/retry.ts"],"names":[],"mappings":"AAcA,MAAM,MAAM,YAAY,GAAG;IAE1B,WAAW,EAAE,MAAM,CAAC;IAEpB,WAAW,EAAE,MAAM,CAAC;IAEpB,UAAU,EAAE,MAAM,CAAC;IAEnB,MAAM,CAAC,EAAE,MAAM,MAAM,CAAC;IAEtB,KAAK,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACtC,CAAC;AAaF,eAAO,MAAM,iBAAiB,YACpB,MAAM,eACF,MAAM,cACP,MAAM,WACV,MAAM,MAAM,KAClB,MAIF,CAAC;AAOF,eAAO,MAAM,gBAAgB,GAAU,CAAC,MACnC,MAAM,OAAO,CAAC,CAAC,CAAC,QACd,YAAY,KAChB,OAAO,CAAC,CAAC,CAmBX,CAAC"}
1
+ {"version":3,"file":"retry.d.ts","sourceRoot":"","sources":["../src/retry.ts"],"names":[],"mappings":"AAcA,MAAM,MAAM,YAAY,GAAG;IAE1B,WAAW,EAAE,MAAM,CAAC;IAEpB,WAAW,EAAE,MAAM,CAAC;IAEpB,UAAU,EAAE,MAAM,CAAC;IAEnB,MAAM,CAAC,EAAE,MAAM,MAAM,CAAC;IAEtB,KAAK,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACtC,CAAC;AAaF,eAAO,MAAM,iBAAiB,YACpB,MAAM,eACF,MAAM,cACP,MAAM,WACV,MAAM,MAAM,KAClB,MAIF,CAAC;AAOF,eAAO,MAAM,gBAAgB,GAAU,CAAC,MACnC,MAAM,OAAO,CAAC,CAAC,CAAC,QACd,YAAY,KAChB,OAAO,CAAC,CAAC,CAwBX,CAAC"}
package/dist/retry.js CHANGED
@@ -11,6 +11,7 @@ var getBackoffDelayMs = (attempt, baseDelayMs, maxDelayMs, random = Math.random)
11
11
  */
12
12
  var retryWithBackoff = async (fn, opts) => {
13
13
  const { maxAttempts, baseDelayMs, maxDelayMs, random = Math.random, sleep = defaultSleep } = opts;
14
+ if (!Number.isInteger(maxAttempts) || maxAttempts < 1) throw new RangeError(`maxAttempts must be a positive integer, got ${maxAttempts}`);
14
15
  let lastErr;
15
16
  for (let attempt = 0; attempt < maxAttempts; attempt++) try {
16
17
  return await fn();
package/dist/retry.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"retry.js","sourceRoot":"","sources":["../src/retry.ts"],"names":[],"mappings":"AA2BA,MAAM,YAAY,GAAG,CAAC,EAAU,EAAiB,EAAE,CAClD,EAAE,GAAG,CAAC;IACL,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IACnD,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;AAQtB,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAChC,OAAe,EACf,WAAmB,EACnB,UAAkB,EAClB,SAAuB,IAAI,CAAC,MAAM,EACzB,EAAE;IACX,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;IACrD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,WAAW,GAAG,CAAC,IAAI,WAAW,CAAC,CAAC;IACjE,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,GAAG,GAAG,CAAC,CAAC;AACnC,CAAC,CAAC;AAOF,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,EACpC,EAAoB,EACpB,IAAkB,EACL,EAAE;IACf,MAAM,EACL,WAAW,EACX,WAAW,EACX,UAAU,EACV,MAAM,GAAG,IAAI,CAAC,MAAM,EACpB,KAAK,GAAG,YAAY,GACpB,GAAG,IAAI,CAAC;IACT,IAAI,OAAgB,CAAC;IACrB,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,WAAW,EAAE,OAAO,EAAE,EAAE,CAAC;QACxD,IAAI,CAAC;YACJ,OAAO,MAAM,EAAE,EAAE,CAAC;QACnB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACd,OAAO,GAAG,GAAG,CAAC;YACd,IAAI,OAAO,IAAI,WAAW,GAAG,CAAC;gBAAE,MAAM;YACtC,MAAM,KAAK,CAAC,iBAAiB,CAAC,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC;QAC1E,CAAC;IACF,CAAC;IACD,MAAM,OAAO,YAAY,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;AACvE,CAAC,CAAC"}
1
+ {"version":3,"file":"retry.js","sourceRoot":"","sources":["../src/retry.ts"],"names":[],"mappings":"AA2BA,MAAM,YAAY,GAAG,CAAC,EAAU,EAAiB,EAAE,CAClD,EAAE,GAAG,CAAC;IACL,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IACnD,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;AAQtB,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAChC,OAAe,EACf,WAAmB,EACnB,UAAkB,EAClB,SAAuB,IAAI,CAAC,MAAM,EACzB,EAAE;IACX,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;IACrD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,WAAW,GAAG,CAAC,IAAI,WAAW,CAAC,CAAC;IACjE,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,GAAG,GAAG,CAAC,CAAC;AACnC,CAAC,CAAC;AAOF,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,EACpC,EAAoB,EACpB,IAAkB,EACL,EAAE;IACf,MAAM,EACL,WAAW,EACX,WAAW,EACX,UAAU,EACV,MAAM,GAAG,IAAI,CAAC,MAAM,EACpB,KAAK,GAAG,YAAY,GACpB,GAAG,IAAI,CAAC;IACT,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,WAAW,GAAG,CAAC,EAAE,CAAC;QACvD,MAAM,IAAI,UAAU,CACnB,+CAA+C,WAAW,EAAE,CAC5D,CAAC;IACH,CAAC;IACD,IAAI,OAAgB,CAAC;IACrB,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,WAAW,EAAE,OAAO,EAAE,EAAE,CAAC;QACxD,IAAI,CAAC;YACJ,OAAO,MAAM,EAAE,EAAE,CAAC;QACnB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACd,OAAO,GAAG,GAAG,CAAC;YACd,IAAI,OAAO,IAAI,WAAW,GAAG,CAAC;gBAAE,MAAM;YACtC,MAAM,KAAK,CAAC,iBAAiB,CAAC,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC;QAC1E,CAAC;IACF,CAAC;IACD,MAAM,OAAO,YAAY,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;AACvE,CAAC,CAAC"}
@@ -112,5 +112,15 @@ describe("retryWithBackoff", () => {
112
112
  expect(fn).toHaveBeenCalledTimes(1);
113
113
  expect(sleep).not.toHaveBeenCalled();
114
114
  });
115
+ it.each([0, -1, 1.5, Number.NaN])("rejects maxAttempts %s without calling fn", async (maxAttempts) => {
116
+ const fn = vi.fn(async () => "ok");
117
+ await expect(retryWithBackoff(fn, {
118
+ maxAttempts,
119
+ baseDelayMs: 100,
120
+ maxDelayMs: 1_000,
121
+ sleep: noopSleep,
122
+ })).rejects.toThrow(/maxAttempts must be a positive integer/);
123
+ expect(fn).not.toHaveBeenCalled();
124
+ });
115
125
  });
116
126
  //# sourceMappingURL=retry.unit.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"retry.unit.test.js","sourceRoot":"","sources":["../../src/tests/retry.unit.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"retry.unit.test.js","sourceRoot":"","sources":["../../src/tests/retry.unit.test.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@prosopo/load-balancer",
3
- "version": "2.11.3",
3
+ "version": "2.11.4",
4
4
  "description": "Provider load balancer",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -37,8 +37,8 @@
37
37
  },
38
38
  "homepage": "https://github.com/prosopo/captcha#readme",
39
39
  "dependencies": {
40
- "@prosopo/common": "3.1.60",
41
- "@prosopo/types": "5.11.1"
40
+ "@prosopo/common": "3.1.61",
41
+ "@prosopo/types": "5.12.0"
42
42
  },
43
43
  "devDependencies": {
44
44
  "@prosopo/config": "3.4.2",
package/src/retry.ts CHANGED
@@ -63,6 +63,11 @@ export const retryWithBackoff = async <T>(
63
63
  random = Math.random,
64
64
  sleep = defaultSleep,
65
65
  } = opts;
66
+ if (!Number.isInteger(maxAttempts) || maxAttempts < 1) {
67
+ throw new RangeError(
68
+ `maxAttempts must be a positive integer, got ${maxAttempts}`,
69
+ );
70
+ }
66
71
  let lastErr: unknown;
67
72
  for (let attempt = 0; attempt < maxAttempts; attempt++) {
68
73
  try {
@@ -148,4 +148,20 @@ describe("retryWithBackoff", () => {
148
148
  expect(fn).toHaveBeenCalledTimes(1);
149
149
  expect(sleep).not.toHaveBeenCalled();
150
150
  });
151
+
152
+ it.each([0, -1, 1.5, Number.NaN])(
153
+ "rejects maxAttempts %s without calling fn",
154
+ async (maxAttempts) => {
155
+ const fn = vi.fn(async () => "ok");
156
+ await expect(
157
+ retryWithBackoff(fn, {
158
+ maxAttempts,
159
+ baseDelayMs: 100,
160
+ maxDelayMs: 1_000,
161
+ sleep: noopSleep,
162
+ }),
163
+ ).rejects.toThrow(/maxAttempts must be a positive integer/);
164
+ expect(fn).not.toHaveBeenCalled();
165
+ },
166
+ );
151
167
  });