@prosopo/load-balancer 2.10.42 → 2.10.43

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.10.42 build:cjs
2
+ > @prosopo/load-balancer@2.10.43 build:cjs
3
3
  > NODE_ENV=${NODE_ENV:-development}; vite build --config vite.cjs.config.ts --mode $NODE_ENV
4
4
 
5
5
  ViteCommonJSConfig: .
@@ -27,12 +27,13 @@ ViteCommonJSConfig: .
27
27
  vite v8.1.5 building ssr environment for production...
28
28
  Bundle build started
29
29
  
30
- 5 modules transformed.
30
+ 6 modules transformed.
31
31
  rendering chunks...
32
32
  computing gzip size...
33
- dist/cjs/index.cjs 1.00 kB │ gzip: 0.31 kB
34
- dist/cjs/retry.cjs 1.13 kB │ gzip: 0.56 kB
35
- dist/cjs/balancer.cjs 1.97 kB │ gzip: 0.95 kB
36
- dist/cjs/providers.cjs 5.75 kB │ gzip: 2.02 kB
33
+ dist/cjs/retry.cjs 1.13 kB │ gzip: 0.56 kB
34
+ dist/cjs/index.cjs 1.39 kB │ gzip: 0.39 kB
35
+ dist/cjs/developmentProviderUrl.cjs 1.81 kB │ gzip: 0.88 kB
36
+ dist/cjs/balancer.cjs 2.08 kB │ gzip: 0.97 kB
37
+ dist/cjs/providers.cjs 5.92 kB │ gzip: 2.04 kB
37
38
 
38
- ✓ built in 74ms
39
+ ✓ built in 69ms
@@ -1,8 +1,8 @@
1
1
 
2
- > @prosopo/load-balancer@2.10.42 build:tsc
2
+ > @prosopo/load-balancer@2.10.43 build:tsc
3
3
  > tsc --build --verbose
4
4
 
5
- 7:31:42 PM - Projects in this build:
5
+ 1:48:53 PM - Projects in this build:
6
6
  * ../../dev/config/tsconfig.json
7
7
  * ../locale/tsconfig.json
8
8
  * ../util/tsconfig.json
@@ -12,21 +12,21 @@
12
12
  * ../common/tsconfig.json
13
13
  * tsconfig.json
14
14
 
15
- 7:31:42 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
+ 1:48:53 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:31:42 PM - Project '../locale/tsconfig.json' is up to date because newest input '../locale/src/translationKey.ts' is older than output '../locale/tsconfig.tsbuildinfo'
17
+ 1:48:53 PM - Project '../locale/tsconfig.json' is up to date because newest input '../locale/src/translationKey.ts' is older than output '../locale/tsconfig.tsbuildinfo'
18
18
 
19
- 7:31:42 PM - Project '../util/tsconfig.json' is up to date because newest input '../util/src/util.ts' is older than output '../util/tsconfig.tsbuildinfo'
19
+ 1:48:53 PM - Project '../util/tsconfig.json' is up to date because newest input '../util/src/url.ts' is older than output '../util/tsconfig.tsbuildinfo'
20
20
 
21
- 7:31:42 PM - Project '../logger/tsconfig.json' is up to date because newest input '../logger/src/tests/loggerBrowser.unit.test.ts' is older than output '../logger/tsconfig.tsbuildinfo'
21
+ 1:48:53 PM - Project '../logger/tsconfig.json' is up to date because newest input '../logger/src/logger.ts' is older than output '../logger/tsconfig.tsbuildinfo'
22
22
 
23
- 7:31:42 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
+ 1:48:53 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:31:42 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
+ 1:48:53 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:31:42 PM - Project '../common/tsconfig.json' is up to date because newest input '../common/src/tests/utils/objectUtils.unit.test.ts' is older than output '../common/tsconfig.tsbuildinfo'
27
+ 1:48:53 PM - Project '../common/tsconfig.json' is up to date because newest input '../common/src/tests/utils/batches.unit.test.ts' is older than output '../common/tsconfig.tsbuildinfo'
28
28
 
29
- 7:31:42 PM - Project 'tsconfig.json' is out of date because output file 'tsconfig.tsbuildinfo' does not exist
29
+ 1:48:53 PM - Project 'tsconfig.json' is out of date because output file 'tsconfig.tsbuildinfo' does not exist
30
30
 
31
- 7:31:42 PM - Building project '/home/runner/work/captcha/captcha/packages/load-balancer/tsconfig.json'...
31
+ 1:48:53 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.10.42 build
2
+ > @prosopo/load-balancer@2.10.43 build
3
3
  > npm run build:cross-env -- --mode ${NODE_ENV:-development}
4
4
 
5
5
 
6
- > @prosopo/load-balancer@2.10.42 build:cross-env
6
+ > @prosopo/load-balancer@2.10.43 build:cross-env
7
7
  > vite build --config vite.esm.config.ts --mode production
8
8
 
9
9
  ViteEsmConfig: .
@@ -31,13 +31,14 @@ ViteEsmConfig: .
31
31
  vite v8.1.5 building ssr environment for production...
32
32
  Bundle build started
33
33
  
34
- 5 modules transformed.
34
+ 6 modules transformed.
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/index.js 0.62 kB │ gzip: 0.23 kB
38
+ dist/index.js 0.86 kB │ gzip: 0.30 kB
39
39
  dist/retry.js 1.09 kB │ gzip: 0.55 kB
40
- dist/balancer.js 1.80 kB │ gzip: 0.93 kB
41
- dist/providers.js 5.51 kB │ gzip: 2.00 kB
40
+ dist/developmentProviderUrl.js 1.70 kB │ gzip: 0.87 kB
41
+ dist/balancer.js 1.88 kB │ gzip: 0.94 kB
42
+ dist/providers.js 5.64 kB │ gzip: 2.01 kB
42
43
 
43
- ✓ built in 75ms
44
+ ✓ built in 60ms
package/CHANGELOG.md CHANGED
@@ -1,5 +1,25 @@
1
1
  # @prosopo/load-balancer
2
2
 
3
+ ## 2.10.43
4
+ ### Patch Changes
5
+
6
+ - 0d479f9: Let the development provider URL be set with an environment variable.
7
+
8
+ In development the widget looked for its provider at a hardcoded
9
+ `https://localhost:9229`. That is right when the page and the provider share a
10
+ machine and wrong as soon as they do not: a phone or an iOS simulator loading
11
+ the demo over the LAN resolves `localhost` to itself, never reaches the
12
+ provider, and reports the site key as unregistered — which is a confusing way
13
+ to be told the request went nowhere.
14
+
15
+ `PROSOPO_PROVIDER_URL_DEVELOPMENT` now overrides it, so that case can be
16
+ pointed at the host actually running the provider. Unset, it still defaults to
17
+ `https://localhost:9229`, so existing setups are unaffected. Staging and
18
+ production resolve through their DNS-routed endpoints and ignore it.
19
+ - Updated dependencies [477b4e7]
20
+ - Updated dependencies [e4d6f06]
21
+ - @prosopo/types@5.8.2
22
+
3
23
  ## 2.10.42
4
24
  ### Patch Changes
5
25
 
@@ -1 +1 @@
1
- {"version":3,"file":"balancer.d.ts","sourceRoot":"","sources":["../src/balancer.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,QAAA,MAAM,uBAAuB;;;;;;;;;;;;;;;EAa3B,CAAC;AAEH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAExE,MAAM,MAAM,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;AAQrC,KAAK,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAK/C,eAAO,MAAM,qBAAqB,aACvB,eAAe,WAChB,MAAM,KACb,iBAAiB,EAUnB,CAAC;AAKF,eAAO,MAAM,gBAAgB,aAAc,MAAM,KAAG,MACjB,CAAC;AAEpC,eAAO,MAAM,mBAAmB,aAAc,iBAAiB,KAAG,MACjB,CAAC;AAElD,eAAO,MAAM,kBAAkB,gBAAiB,gBAAgB,KAAG,MAUlE,CAAC;AAEF,eAAO,MAAM,YAAY,gBACX,gBAAgB,WACpB,MAAM,KACb,OAAO,CAAC,iBAAiB,EAAE,CAyB7B,CAAC"}
1
+ {"version":3,"file":"balancer.d.ts","sourceRoot":"","sources":["../src/balancer.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,QAAA,MAAM,uBAAuB;;;;;;;;;;;;;;;EAa3B,CAAC;AAEH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAExE,MAAM,MAAM,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;AAQrC,KAAK,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAK/C,eAAO,MAAM,qBAAqB,aACvB,eAAe,WAChB,MAAM,KACb,iBAAiB,EAUnB,CAAC;AAKF,eAAO,MAAM,gBAAgB,aAAc,MAAM,KAAG,MACjB,CAAC;AAEpC,eAAO,MAAM,mBAAmB,aAAc,iBAAiB,KAAG,MACjB,CAAC;AAElD,eAAO,MAAM,kBAAkB,gBAAiB,gBAAgB,KAAG,MAUlE,CAAC;AAEF,eAAO,MAAM,YAAY,gBACX,gBAAgB,WACpB,MAAM,KACb,OAAO,CAAC,iBAAiB,EAAE,CAyB7B,CAAC"}
package/dist/balancer.js CHANGED
@@ -1,3 +1,4 @@
1
+ import { getDevelopmentProviderUrl } from "./developmentProviderUrl.js";
1
2
  import { ProsopoEnvError } from "@prosopo/common";
2
3
  import { z } from "zod";
3
4
  //#region src/balancer.ts
@@ -25,7 +26,7 @@ var getLoadBalancerUrl = (environment) => {
25
26
  var loadBalancer = async (environment, ipMode) => {
26
27
  if (environment === "development") return [{
27
28
  address: "5EjTA28bKSbFPPyMbUjNtArxyqjwq38r1BapVmLZShaqEedV",
28
- url: "https://localhost:9229",
29
+ url: getDevelopmentProviderUrl(),
29
30
  datasetId: "0x7984714b92d61fd92fd6a7bc9b56b729481470bcc771c19c382ec679acf02e67",
30
31
  weight: 1
31
32
  }];
@@ -1 +1 @@
1
- {"version":3,"file":"balancer.js","sourceRoot":"","sources":["../src/balancer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"balancer.js","sourceRoot":"","sources":["../src/balancer.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ const require_developmentProviderUrl = require("./developmentProviderUrl.cjs");
1
2
  let _prosopo_common = require("@prosopo/common");
2
3
  let zod = require("zod");
3
4
  //#region src/balancer.ts
@@ -25,7 +26,7 @@ var getLoadBalancerUrl = (environment) => {
25
26
  var loadBalancer = async (environment, ipMode) => {
26
27
  if (environment === "development") return [{
27
28
  address: "5EjTA28bKSbFPPyMbUjNtArxyqjwq38r1BapVmLZShaqEedV",
28
- url: "https://localhost:9229",
29
+ url: require_developmentProviderUrl.getDevelopmentProviderUrl(),
29
30
  datasetId: "0x7984714b92d61fd92fd6a7bc9b56b729481470bcc771c19c382ec679acf02e67",
30
31
  weight: 1
31
32
  }];
@@ -0,0 +1,40 @@
1
+ //#region src/developmentProviderUrl.ts
2
+ /**
3
+ * Where a development widget looks for its provider.
4
+ *
5
+ * `localhost` is right when the page and the provider share a machine, and
6
+ * wrong the moment they do not: a phone or a simulator loading the demo over
7
+ * the LAN resolves `localhost` to itself, so the widget never reaches the
8
+ * provider and reports the site key as unregistered. The override exists so
9
+ * that case can be pointed at the host running the provider.
10
+ *
11
+ * Development only — staging and production resolve through their DNS-routed
12
+ * endpoints and ignore this entirely.
13
+ */
14
+ var DEFAULT_DEVELOPMENT_PROVIDER_URL = "https://localhost:9229";
15
+ /**
16
+ * Read the override without assuming a runtime.
17
+ *
18
+ * Written as a static `process.env.X` access on purpose: the frontend build
19
+ * substitutes that exact expression for a literal, which a computed lookup
20
+ * (`process.env[key]`) would not match. For the same reason there is no
21
+ * `typeof process` guard — in a browser bundle the whole expression is already
22
+ * a string by the time it runs, and guarding on a `process` that does not
23
+ * exist there would discard it. Under plain node with the variable unset it is
24
+ * simply undefined; where neither applies the access throws and is caught.
25
+ */
26
+ var readDevelopmentProviderUrlOverride = () => {
27
+ try {
28
+ return process.env.PROSOPO_PROVIDER_URL_DEVELOPMENT;
29
+ } catch {
30
+ return;
31
+ }
32
+ };
33
+ var getDevelopmentProviderUrl = (override = readDevelopmentProviderUrlOverride()) => {
34
+ const trimmed = override?.trim();
35
+ return trimmed ? trimmed.replace(/\/$/, "") : DEFAULT_DEVELOPMENT_PROVIDER_URL;
36
+ };
37
+ //#endregion
38
+ exports.DEFAULT_DEVELOPMENT_PROVIDER_URL = DEFAULT_DEVELOPMENT_PROVIDER_URL;
39
+ exports.getDevelopmentProviderUrl = getDevelopmentProviderUrl;
40
+ exports.readDevelopmentProviderUrlOverride = readDevelopmentProviderUrlOverride;
@@ -1,15 +1,19 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
+ const require_developmentProviderUrl = require("./developmentProviderUrl.cjs");
2
3
  const require_balancer = require("./balancer.cjs");
3
4
  const require_providers = require("./providers.cjs");
5
+ exports.DEFAULT_DEVELOPMENT_PROVIDER_URL = require_developmentProviderUrl.DEFAULT_DEVELOPMENT_PROVIDER_URL;
4
6
  exports._resetHealthzRetryPolicy = require_providers._resetHealthzRetryPolicy;
5
7
  exports._resetPinCache = require_providers._resetPinCache;
6
8
  exports._resetProviderListCache = require_providers._resetProviderListCache;
7
9
  exports._setHealthzRetryPolicy = require_providers._setHealthzRetryPolicy;
8
10
  exports.convertHostedProvider = require_balancer.convertHostedProvider;
11
+ exports.getDevelopmentProviderUrl = require_developmentProviderUrl.getDevelopmentProviderUrl;
9
12
  exports.getLoadBalancerUrl = require_balancer.getLoadBalancerUrl;
10
13
  exports.getProviderHostname = require_balancer.getProviderHostname;
11
14
  exports.getProviders = require_providers.getProviders;
12
15
  exports.getRandomActiveProvider = require_providers.getRandomActiveProvider;
13
16
  exports.getRandomProviderFromList = require_providers.getRandomProviderFromList;
14
17
  exports.loadBalancer = require_balancer.loadBalancer;
18
+ exports.readDevelopmentProviderUrlOverride = require_developmentProviderUrl.readDevelopmentProviderUrlOverride;
15
19
  exports.stripIpModeLabel = require_balancer.stripIpModeLabel;
@@ -1,11 +1,12 @@
1
+ const require_developmentProviderUrl = require("./developmentProviderUrl.cjs");
1
2
  const require_balancer = require("./balancer.cjs");
2
3
  const require_retry = require("./retry.cjs");
3
4
  //#region src/providers.ts
4
- var DNS_ENDPOINT = {
5
- development: "https://localhost:9229",
5
+ var dnsEndpoints = () => ({
6
+ development: require_developmentProviderUrl.getDevelopmentProviderUrl(),
6
7
  staging: "https://staging.pronode.prosopo.io",
7
8
  production: "https://pronode.prosopo.io"
8
- };
9
+ });
9
10
  var withIpModeLabel = (hostname, ipMode) => ipMode ? `${ipMode}.${hostname}` : hostname;
10
11
  var applyIpModeToUrl = (url, ipMode) => {
11
12
  if (!ipMode) return url;
@@ -41,7 +42,10 @@ var fetchPinnedHostWithRetry = (baseUrl) => require_retry.retryWithBackoff(() =>
41
42
  baseDelayMs: healthzRetryBaseDelayMs,
42
43
  maxDelayMs: healthzRetryMaxDelayMs
43
44
  });
44
- var resolveBaseUrl = (env) => DNS_ENDPOINT[env] ?? DNS_ENDPOINT.development;
45
+ var resolveBaseUrl = (env) => {
46
+ const endpoints = dnsEndpoints();
47
+ return endpoints[env] ?? endpoints.development;
48
+ };
45
49
  var resolvePinnedUrl = async (env, ipMode) => {
46
50
  const base = applyIpModeToUrl(resolveBaseUrl(env), ipMode);
47
51
  if (env === "development") return base;
@@ -0,0 +1,4 @@
1
+ export declare const DEFAULT_DEVELOPMENT_PROVIDER_URL = "https://localhost:9229";
2
+ export declare const readDevelopmentProviderUrlOverride: () => string | undefined;
3
+ export declare const getDevelopmentProviderUrl: (override?: string | undefined) => string;
4
+ //# sourceMappingURL=developmentProviderUrl.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"developmentProviderUrl.d.ts","sourceRoot":"","sources":["../src/developmentProviderUrl.ts"],"names":[],"mappings":"AA0BA,eAAO,MAAM,gCAAgC,2BAA2B,CAAC;AAazE,eAAO,MAAM,kCAAkC,QAAO,MAAM,GAAG,SAM9D,CAAC;AAEF,eAAO,MAAM,yBAAyB,cAC3B,MAAM,GAAG,SAAS,KAC1B,MAKF,CAAC"}
@@ -0,0 +1,38 @@
1
+ //#region src/developmentProviderUrl.ts
2
+ /**
3
+ * Where a development widget looks for its provider.
4
+ *
5
+ * `localhost` is right when the page and the provider share a machine, and
6
+ * wrong the moment they do not: a phone or a simulator loading the demo over
7
+ * the LAN resolves `localhost` to itself, so the widget never reaches the
8
+ * provider and reports the site key as unregistered. The override exists so
9
+ * that case can be pointed at the host running the provider.
10
+ *
11
+ * Development only — staging and production resolve through their DNS-routed
12
+ * endpoints and ignore this entirely.
13
+ */
14
+ var DEFAULT_DEVELOPMENT_PROVIDER_URL = "https://localhost:9229";
15
+ /**
16
+ * Read the override without assuming a runtime.
17
+ *
18
+ * Written as a static `process.env.X` access on purpose: the frontend build
19
+ * substitutes that exact expression for a literal, which a computed lookup
20
+ * (`process.env[key]`) would not match. For the same reason there is no
21
+ * `typeof process` guard — in a browser bundle the whole expression is already
22
+ * a string by the time it runs, and guarding on a `process` that does not
23
+ * exist there would discard it. Under plain node with the variable unset it is
24
+ * simply undefined; where neither applies the access throws and is caught.
25
+ */
26
+ var readDevelopmentProviderUrlOverride = () => {
27
+ try {
28
+ return process.env.PROSOPO_PROVIDER_URL_DEVELOPMENT;
29
+ } catch {
30
+ return;
31
+ }
32
+ };
33
+ var getDevelopmentProviderUrl = (override = readDevelopmentProviderUrlOverride()) => {
34
+ const trimmed = override?.trim();
35
+ return trimmed ? trimmed.replace(/\/$/, "") : DEFAULT_DEVELOPMENT_PROVIDER_URL;
36
+ };
37
+ //#endregion
38
+ export { DEFAULT_DEVELOPMENT_PROVIDER_URL, getDevelopmentProviderUrl, readDevelopmentProviderUrlOverride };
@@ -0,0 +1 @@
1
+ {"version":3,"file":"developmentProviderUrl.js","sourceRoot":"","sources":["../src/developmentProviderUrl.ts"],"names":[],"mappings":"AA0BA,MAAM,CAAC,MAAM,gCAAgC,GAAG,wBAAwB,CAAC;AAazE,MAAM,CAAC,MAAM,kCAAkC,GAAG,GAAuB,EAAE;IAC1E,IAAI,CAAC;QACJ,OAAO,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC;IACrD,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,SAAS,CAAC;IAClB,CAAC;AACF,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,yBAAyB,GAAG,CACxC,WAA+B,kCAAkC,EAAE,EAC1D,EAAE;IACX,MAAM,OAAO,GAAG,QAAQ,EAAE,IAAI,EAAE,CAAC;IACjC,OAAO,OAAO;QACb,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;QAC5B,CAAC,CAAC,gCAAgC,CAAC;AACrC,CAAC,CAAC"}
package/dist/index.d.ts CHANGED
@@ -1,3 +1,4 @@
1
1
  export * from "./providers.js";
2
2
  export * from "./balancer.js";
3
+ export * from "./developmentProviderUrl.js";
3
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAaA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAaA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,6BAA6B,CAAC"}
package/dist/index.js CHANGED
@@ -1,4 +1,5 @@
1
1
  import "./_virtual/_rolldown/runtime.js";
2
+ import { DEFAULT_DEVELOPMENT_PROVIDER_URL, getDevelopmentProviderUrl, readDevelopmentProviderUrlOverride } from "./developmentProviderUrl.js";
2
3
  import { convertHostedProvider, getLoadBalancerUrl, getProviderHostname, loadBalancer, stripIpModeLabel } from "./balancer.js";
3
4
  import { _resetHealthzRetryPolicy, _resetPinCache, _resetProviderListCache, _setHealthzRetryPolicy, getProviders, getRandomActiveProvider, getRandomProviderFromList } from "./providers.js";
4
- export { _resetHealthzRetryPolicy, _resetPinCache, _resetProviderListCache, _setHealthzRetryPolicy, convertHostedProvider, getLoadBalancerUrl, getProviderHostname, getProviders, getRandomActiveProvider, getRandomProviderFromList, loadBalancer, stripIpModeLabel };
5
+ export { DEFAULT_DEVELOPMENT_PROVIDER_URL, _resetHealthzRetryPolicy, _resetPinCache, _resetProviderListCache, _setHealthzRetryPolicy, convertHostedProvider, getDevelopmentProviderUrl, getLoadBalancerUrl, getProviderHostname, getProviders, getRandomActiveProvider, getRandomProviderFromList, loadBalancer, readDevelopmentProviderUrlOverride, stripIpModeLabel };
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAaA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAaA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,6BAA6B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"providers.d.ts","sourceRoot":"","sources":["../src/providers.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACvE,OAAO,EACN,KAAK,iBAAiB,EACtB,KAAK,MAAM,EAEX,MAAM,eAAe,CAAC;AAqIvB,eAAO,MAAM,YAAY,QACnB,gBAAgB,KACnB,OAAO,CAAC,iBAAiB,EAAE,CAY7B,CAAC;AAEF,eAAO,MAAM,uBAAuB,QAC9B,gBAAgB,WACZ,MAAM,KACb,OAAO,CAAC,cAAc,CAMxB,CAAC;AAoCF,eAAO,MAAM,yBAAyB,QAChC,gBAAgB,WACZ,MAAM,eACF,MAAM,WACX,MAAM,MAAM,KAClB,OAAO,CAAC,cAAc,CAyBxB,CAAC;AAIF,eAAO,MAAM,cAAc,YAE1B,CAAC;AAIF,eAAO,MAAM,uBAAuB,YAEnC,CAAC;AAKF,eAAO,MAAM,sBAAsB,SAAU;IAC5C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;CACpB,SAKA,CAAC;AAKF,eAAO,MAAM,wBAAwB,YAIpC,CAAC"}
1
+ {"version":3,"file":"providers.d.ts","sourceRoot":"","sources":["../src/providers.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACvE,OAAO,EACN,KAAK,iBAAiB,EACtB,KAAK,MAAM,EAEX,MAAM,eAAe,CAAC;AA0IvB,eAAO,MAAM,YAAY,QACnB,gBAAgB,KACnB,OAAO,CAAC,iBAAiB,EAAE,CAY7B,CAAC;AAEF,eAAO,MAAM,uBAAuB,QAC9B,gBAAgB,WACZ,MAAM,KACb,OAAO,CAAC,cAAc,CAMxB,CAAC;AAoCF,eAAO,MAAM,yBAAyB,QAChC,gBAAgB,WACZ,MAAM,eACF,MAAM,WACX,MAAM,MAAM,KAClB,OAAO,CAAC,cAAc,CAyBxB,CAAC;AAIF,eAAO,MAAM,cAAc,YAE1B,CAAC;AAIF,eAAO,MAAM,uBAAuB,YAEnC,CAAC;AAKF,eAAO,MAAM,sBAAsB,SAAU;IAC5C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;CACpB,SAKA,CAAC;AAKF,eAAO,MAAM,wBAAwB,YAIpC,CAAC"}
package/dist/providers.js CHANGED
@@ -1,11 +1,12 @@
1
+ import { getDevelopmentProviderUrl } from "./developmentProviderUrl.js";
1
2
  import { loadBalancer } from "./balancer.js";
2
3
  import { retryWithBackoff } from "./retry.js";
3
4
  //#region src/providers.ts
4
- var DNS_ENDPOINT = {
5
- development: "https://localhost:9229",
5
+ var dnsEndpoints = () => ({
6
+ development: getDevelopmentProviderUrl(),
6
7
  staging: "https://staging.pronode.prosopo.io",
7
8
  production: "https://pronode.prosopo.io"
8
- };
9
+ });
9
10
  var withIpModeLabel = (hostname, ipMode) => ipMode ? `${ipMode}.${hostname}` : hostname;
10
11
  var applyIpModeToUrl = (url, ipMode) => {
11
12
  if (!ipMode) return url;
@@ -41,7 +42,10 @@ var fetchPinnedHostWithRetry = (baseUrl) => retryWithBackoff(() => fetchPinnedHo
41
42
  baseDelayMs: healthzRetryBaseDelayMs,
42
43
  maxDelayMs: healthzRetryMaxDelayMs
43
44
  });
44
- var resolveBaseUrl = (env) => DNS_ENDPOINT[env] ?? DNS_ENDPOINT.development;
45
+ var resolveBaseUrl = (env) => {
46
+ const endpoints = dnsEndpoints();
47
+ return endpoints[env] ?? endpoints.development;
48
+ };
45
49
  var resolvePinnedUrl = async (env, ipMode) => {
46
50
  const base = applyIpModeToUrl(resolveBaseUrl(env), ipMode);
47
51
  if (env === "development") return base;
@@ -1 +1 @@
1
- {"version":3,"file":"providers.js","sourceRoot":"","sources":["../src/providers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"providers.js","sourceRoot":"","sources":["../src/providers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=developmentProviderUrl.unit.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"developmentProviderUrl.unit.test.d.ts","sourceRoot":"","sources":["../../src/tests/developmentProviderUrl.unit.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,42 @@
1
+ import { afterEach, describe, expect, it } from "vitest";
2
+ import { DEFAULT_DEVELOPMENT_PROVIDER_URL, getDevelopmentProviderUrl, readDevelopmentProviderUrlOverride, } from "../developmentProviderUrl.js";
3
+ const ENV_KEY = "PROSOPO_PROVIDER_URL_DEVELOPMENT";
4
+ const original = process.env[ENV_KEY];
5
+ afterEach(() => {
6
+ if (original === undefined)
7
+ delete process.env[ENV_KEY];
8
+ else
9
+ process.env[ENV_KEY] = original;
10
+ });
11
+ describe("the development provider url", () => {
12
+ it("is localhost when nothing overrides it", () => {
13
+ expect(getDevelopmentProviderUrl(undefined)).toBe("https://localhost:9229");
14
+ expect(DEFAULT_DEVELOPMENT_PROVIDER_URL).toBe("https://localhost:9229");
15
+ });
16
+ it("is the override when one is set", () => {
17
+ expect(getDevelopmentProviderUrl("https://192.0.2.10:9229")).toBe("https://192.0.2.10:9229");
18
+ });
19
+ it("drops a trailing slash so the url composes with /healthz", () => {
20
+ expect(getDevelopmentProviderUrl("https://192.0.2.10:9229/")).toBe("https://192.0.2.10:9229");
21
+ });
22
+ it("falls back rather than yielding an empty url", () => {
23
+ for (const blank of ["", " ", undefined]) {
24
+ expect(getDevelopmentProviderUrl(blank)).toBe(DEFAULT_DEVELOPMENT_PROVIDER_URL);
25
+ }
26
+ });
27
+ });
28
+ describe("reading the override", () => {
29
+ it("reads the environment variable", () => {
30
+ process.env[ENV_KEY] = "https://198.51.100.7:9229";
31
+ expect(readDevelopmentProviderUrlOverride()).toBe("https://198.51.100.7:9229");
32
+ });
33
+ it("is undefined when the variable is unset", () => {
34
+ delete process.env[ENV_KEY];
35
+ expect(readDevelopmentProviderUrlOverride()).toBeUndefined();
36
+ });
37
+ it("defaults when the variable is unset", () => {
38
+ delete process.env[ENV_KEY];
39
+ expect(getDevelopmentProviderUrl()).toBe(DEFAULT_DEVELOPMENT_PROVIDER_URL);
40
+ });
41
+ });
42
+ //# sourceMappingURL=developmentProviderUrl.unit.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"developmentProviderUrl.unit.test.js","sourceRoot":"","sources":["../../src/tests/developmentProviderUrl.unit.test.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AACzD,OAAO,EACN,gCAAgC,EAChC,yBAAyB,EACzB,kCAAkC,GAClC,MAAM,8BAA8B,CAAC;AAEtC,MAAM,OAAO,GAAG,kCAAkC,CAAC;AACnD,MAAM,QAAQ,GAAuB,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AAE1D,SAAS,CAAC,GAAG,EAAE;IACd,IAAI,QAAQ,KAAK,SAAS;QAAE,OAAO,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;;QACnD,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,QAAQ,CAAC;AACtC,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,8BAA8B,EAAE,GAAG,EAAE;IAC7C,EAAE,CAAC,wCAAwC,EAAE,GAAG,EAAE;QACjD,MAAM,CAAC,yBAAyB,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;QAC5E,MAAM,CAAC,gCAAgC,CAAC,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;IACzE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iCAAiC,EAAE,GAAG,EAAE;QAG1C,MAAM,CAAC,yBAAyB,CAAC,yBAAyB,CAAC,CAAC,CAAC,IAAI,CAChE,yBAAyB,CACzB,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0DAA0D,EAAE,GAAG,EAAE;QACnE,MAAM,CAAC,yBAAyB,CAAC,0BAA0B,CAAC,CAAC,CAAC,IAAI,CACjE,yBAAyB,CACzB,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8CAA8C,EAAE,GAAG,EAAE;QACvD,KAAK,MAAM,KAAK,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,SAAS,CAAC,EAAE,CAAC;YAC5C,MAAM,CAAC,yBAAyB,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAC5C,gCAAgC,CAChC,CAAC;QACH,CAAC;IACF,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;IACrC,EAAE,CAAC,gCAAgC,EAAE,GAAG,EAAE;QACzC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,2BAA2B,CAAC;QACnD,MAAM,CAAC,kCAAkC,EAAE,CAAC,CAAC,IAAI,CAChD,2BAA2B,CAC3B,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yCAAyC,EAAE,GAAG,EAAE;QAClD,OAAO,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC5B,MAAM,CAAC,kCAAkC,EAAE,CAAC,CAAC,aAAa,EAAE,CAAC;IAC9D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qCAAqC,EAAE,GAAG,EAAE;QAC9C,OAAO,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC5B,MAAM,CAAC,yBAAyB,EAAE,CAAC,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC;IAC5E,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@prosopo/load-balancer",
3
- "version": "2.10.42",
3
+ "version": "2.10.43",
4
4
  "description": "Provider load balancer",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -38,11 +38,11 @@
38
38
  "homepage": "https://github.com/prosopo/captcha#readme",
39
39
  "dependencies": {
40
40
  "@prosopo/common": "3.1.54",
41
- "@prosopo/types": "5.8.1",
41
+ "@prosopo/types": "5.8.2",
42
42
  "zod": "3.23.8"
43
43
  },
44
44
  "devDependencies": {
45
- "@prosopo/config": "3.3.15",
45
+ "@prosopo/config": "3.3.16",
46
46
  "@types/node": "22.10.2",
47
47
  "@vitest/coverage-v8": "4.1.11",
48
48
  "concurrently": "9.0.1",
package/src/balancer.ts CHANGED
@@ -14,6 +14,7 @@
14
14
  import { ProsopoEnvError } from "@prosopo/common";
15
15
  import type { EnvironmentTypes } from "@prosopo/types";
16
16
  import { z } from "zod";
17
+ import { getDevelopmentProviderUrl } from "./developmentProviderUrl.js";
17
18
 
18
19
  const HardcodedProviderSchema = z.object({
19
20
  address: z.string(),
@@ -89,7 +90,7 @@ export const loadBalancer = async (
89
90
  return [
90
91
  {
91
92
  address: "5EjTA28bKSbFPPyMbUjNtArxyqjwq38r1BapVmLZShaqEedV",
92
- url: "https://localhost:9229",
93
+ url: getDevelopmentProviderUrl(),
93
94
  datasetId:
94
95
  "0x7984714b92d61fd92fd6a7bc9b56b729481470bcc771c19c382ec679acf02e67",
95
96
  weight: 1,
@@ -0,0 +1,55 @@
1
+ // Copyright 2021-2026 Prosopo (UK) Ltd.
2
+ //
3
+ // Licensed under the Apache License, Version 2.0 (the "License");
4
+ // you may not use this file except in compliance with the License.
5
+ // You may obtain a copy of the License at
6
+ //
7
+ // http://www.apache.org/licenses/LICENSE-2.0
8
+ //
9
+ // Unless required by applicable law or agreed to in writing, software
10
+ // distributed under the License is distributed on an "AS IS" BASIS,
11
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ // See the License for the specific language governing permissions and
13
+ // limitations under the License.
14
+
15
+ /**
16
+ * Where a development widget looks for its provider.
17
+ *
18
+ * `localhost` is right when the page and the provider share a machine, and
19
+ * wrong the moment they do not: a phone or a simulator loading the demo over
20
+ * the LAN resolves `localhost` to itself, so the widget never reaches the
21
+ * provider and reports the site key as unregistered. The override exists so
22
+ * that case can be pointed at the host running the provider.
23
+ *
24
+ * Development only — staging and production resolve through their DNS-routed
25
+ * endpoints and ignore this entirely.
26
+ */
27
+ export const DEFAULT_DEVELOPMENT_PROVIDER_URL = "https://localhost:9229";
28
+
29
+ /**
30
+ * Read the override without assuming a runtime.
31
+ *
32
+ * Written as a static `process.env.X` access on purpose: the frontend build
33
+ * substitutes that exact expression for a literal, which a computed lookup
34
+ * (`process.env[key]`) would not match. For the same reason there is no
35
+ * `typeof process` guard — in a browser bundle the whole expression is already
36
+ * a string by the time it runs, and guarding on a `process` that does not
37
+ * exist there would discard it. Under plain node with the variable unset it is
38
+ * simply undefined; where neither applies the access throws and is caught.
39
+ */
40
+ export const readDevelopmentProviderUrlOverride = (): string | undefined => {
41
+ try {
42
+ return process.env.PROSOPO_PROVIDER_URL_DEVELOPMENT;
43
+ } catch {
44
+ return undefined;
45
+ }
46
+ };
47
+
48
+ export const getDevelopmentProviderUrl = (
49
+ override: string | undefined = readDevelopmentProviderUrlOverride(),
50
+ ): string => {
51
+ const trimmed = override?.trim();
52
+ return trimmed
53
+ ? trimmed.replace(/\/$/, "")
54
+ : DEFAULT_DEVELOPMENT_PROVIDER_URL;
55
+ };
package/src/index.ts CHANGED
@@ -13,3 +13,4 @@
13
13
  // limitations under the License.
14
14
  export * from "./providers.js";
15
15
  export * from "./balancer.js";
16
+ export * from "./developmentProviderUrl.js";
package/src/providers.ts CHANGED
@@ -18,6 +18,7 @@ import {
18
18
  type IpMode,
19
19
  loadBalancer,
20
20
  } from "./balancer.js";
21
+ import { getDevelopmentProviderUrl } from "./developmentProviderUrl.js";
21
22
  import { retryWithBackoff } from "./retry.js";
22
23
 
23
24
  // Base DNS endpoint per env — the `pronode.prosopo.io` family is latency-routed
@@ -25,11 +26,13 @@ import { retryWithBackoff } from "./retry.js";
25
26
  // once to discover which specific pronodeN the DNS layer picked, then pin
26
27
  // subsequent captcha calls to that pronode so session creation and submission
27
28
  // land on the same backend.
28
- const DNS_ENDPOINT: Record<EnvironmentTypes, string> = {
29
- development: "https://localhost:9229",
29
+ // Resolved per call rather than once at module load, so a development override
30
+ // set after this module is imported is still picked up.
31
+ const dnsEndpoints = (): Record<EnvironmentTypes, string> => ({
32
+ development: getDevelopmentProviderUrl(),
30
33
  staging: "https://staging.pronode.prosopo.io",
31
34
  production: "https://pronode.prosopo.io",
32
- };
35
+ });
33
36
 
34
37
  // Apply the `ipv4.` / `ipv6.` DNS label to a hostname. The single-stack
35
38
  // sub-zones only resolve to A or AAAA records respectively, so this pins the
@@ -93,8 +96,10 @@ const fetchPinnedHostWithRetry = (baseUrl: string): Promise<string> =>
93
96
  maxDelayMs: healthzRetryMaxDelayMs,
94
97
  });
95
98
 
96
- const resolveBaseUrl = (env: EnvironmentTypes): string =>
97
- DNS_ENDPOINT[env] ?? DNS_ENDPOINT.development;
99
+ const resolveBaseUrl = (env: EnvironmentTypes): string => {
100
+ const endpoints = dnsEndpoints();
101
+ return endpoints[env] ?? endpoints.development;
102
+ };
98
103
 
99
104
  const resolvePinnedUrl = async (
100
105
  env: EnvironmentTypes,