@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.
- package/.turbo/turbo-build$colon$cjs.log +8 -7
- package/.turbo/turbo-build$colon$tsc.log +11 -11
- package/.turbo/turbo-build.log +8 -7
- package/CHANGELOG.md +20 -0
- package/dist/balancer.d.ts.map +1 -1
- package/dist/balancer.js +2 -1
- package/dist/balancer.js.map +1 -1
- package/dist/cjs/balancer.cjs +2 -1
- package/dist/cjs/developmentProviderUrl.cjs +40 -0
- package/dist/cjs/index.cjs +4 -0
- package/dist/cjs/providers.cjs +8 -4
- package/dist/developmentProviderUrl.d.ts +4 -0
- package/dist/developmentProviderUrl.d.ts.map +1 -0
- package/dist/developmentProviderUrl.js +38 -0
- package/dist/developmentProviderUrl.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/providers.d.ts.map +1 -1
- package/dist/providers.js +8 -4
- package/dist/providers.js.map +1 -1
- package/dist/tests/developmentProviderUrl.unit.test.d.ts +2 -0
- package/dist/tests/developmentProviderUrl.unit.test.d.ts.map +1 -0
- package/dist/tests/developmentProviderUrl.unit.test.js +42 -0
- package/dist/tests/developmentProviderUrl.unit.test.js.map +1 -0
- package/package.json +3 -3
- package/src/balancer.ts +2 -1
- package/src/developmentProviderUrl.ts +55 -0
- package/src/index.ts +1 -0
- package/src/providers.ts +10 -5
- package/src/tests/developmentProviderUrl.unit.test.ts +76 -0
- package/tsconfig.tsbuildinfo +1 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
|
|
2
|
-
> @prosopo/load-balancer@2.10.
|
|
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
|
[36mvite v8.1.5 [32mbuilding ssr environment for production...[36m[39m
|
|
28
28
|
Bundle build started
|
|
29
29
|
[2K
|
|
30
|
-
✓
|
|
30
|
+
✓ 6 modules transformed.
|
|
31
31
|
rendering chunks...
|
|
32
32
|
computing gzip size...
|
|
33
|
-
dist/cjs/
|
|
34
|
-
dist/cjs/
|
|
35
|
-
dist/cjs/
|
|
36
|
-
dist/cjs/
|
|
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
|
-
[32m✓ built in
|
|
39
|
+
[32m✓ built in 69ms[39m
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
|
|
2
|
-
> @prosopo/load-balancer@2.10.
|
|
2
|
+
> @prosopo/load-balancer@2.10.43 build:tsc
|
|
3
3
|
> tsc --build --verbose
|
|
4
4
|
|
|
5
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
29
|
+
1:48:53 PM - Project 'tsconfig.json' is out of date because output file 'tsconfig.tsbuildinfo' does not exist
|
|
30
30
|
|
|
31
|
-
|
|
31
|
+
1:48:53 PM - Building project '/home/runner/work/captcha/captcha/packages/load-balancer/tsconfig.json'...
|
|
32
32
|
|
package/.turbo/turbo-build.log
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
|
|
2
|
-
> @prosopo/load-balancer@2.10.
|
|
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.
|
|
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
|
[36mvite v8.1.5 [32mbuilding ssr environment for production...[36m[39m
|
|
32
32
|
Bundle build started
|
|
33
33
|
[2K
|
|
34
|
-
✓
|
|
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.
|
|
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/
|
|
41
|
-
dist/
|
|
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
|
-
[32m✓ built in
|
|
44
|
+
[32m✓ built in 60ms[39m
|
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
|
|
package/dist/balancer.d.ts.map
CHANGED
|
@@ -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;
|
|
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:
|
|
29
|
+
url: getDevelopmentProviderUrl(),
|
|
29
30
|
datasetId: "0x7984714b92d61fd92fd6a7bc9b56b729481470bcc771c19c382ec679acf02e67",
|
|
30
31
|
weight: 1
|
|
31
32
|
}];
|
package/dist/balancer.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"balancer.js","sourceRoot":"","sources":["../src/balancer.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAElD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"balancer.js","sourceRoot":"","sources":["../src/balancer.ts"],"names":[],"mappings":"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"}
|
package/dist/cjs/balancer.cjs
CHANGED
|
@@ -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:
|
|
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;
|
package/dist/cjs/index.cjs
CHANGED
|
@@ -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;
|
package/dist/cjs/providers.cjs
CHANGED
|
@@ -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
|
|
5
|
-
development:
|
|
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) =>
|
|
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
package/dist/index.d.ts.map
CHANGED
|
@@ -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"}
|
package/dist/providers.d.ts.map
CHANGED
|
@@ -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;
|
|
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
|
|
5
|
-
development:
|
|
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) =>
|
|
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;
|
package/dist/providers.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"providers.js","sourceRoot":"","sources":["../src/providers.ts"],"names":[],"mappings":"AAeA,OAAO,EAGN,YAAY,GACZ,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"providers.js","sourceRoot":"","sources":["../src/providers.ts"],"names":[],"mappings":"AAeA,OAAO,EAGN,YAAY,GACZ,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAS9C,MAAM,YAAY,GAAG,GAAqC,EAAE,CAAC,CAAC;IAC7D,WAAW,EAAE,yBAAyB,EAAE;IACxC,OAAO,EAAE,oCAAoC;IAC7C,UAAU,EAAE,4BAA4B;CACxC,CAAC,CAAC;AAMH,MAAM,eAAe,GAAG,CAAC,QAAgB,EAAE,MAAe,EAAU,EAAE,CACrE,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI,QAAQ,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC;AAE7C,MAAM,gBAAgB,GAAG,CAAC,GAAW,EAAE,MAAe,EAAU,EAAE;IACjE,IAAI,CAAC,MAAM;QAAE,OAAO,GAAG,CAAC;IACxB,IAAI,CAAC;QACJ,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;QAC5B,MAAM,CAAC,QAAQ,GAAG,eAAe,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAC3D,OAAO,MAAM,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAC7C,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,GAAG,CAAC;IACZ,CAAC;AACF,CAAC,CAAC;AAMF,MAAM,QAAQ,GAAG,CAAC,GAAqB,EAAE,MAAe,EAAY,EAAE,CACrE,GAAG,GAAG,IAAI,MAAM,IAAI,MAAM,EAAE,CAAC;AAC9B,MAAM,eAAe,GAAmC,IAAI,GAAG,EAAE,CAAC;AAOlE,MAAM,oBAAoB,GAAG,CAAC,CAAC;AAC/B,MAAM,2BAA2B,GAAG,GAAG,CAAC;AACxC,MAAM,0BAA0B,GAAG,KAAK,CAAC;AAEzC,IAAI,kBAAkB,GAAG,oBAAoB,CAAC;AAC9C,IAAI,uBAAuB,GAAG,2BAA2B,CAAC;AAC1D,IAAI,sBAAsB,GAAG,0BAA0B,CAAC;AAExD,MAAM,eAAe,GAAG,KAAK,EAAE,OAAe,EAAmB,EAAE;IAClE,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,OAAO,UAAU,EAAE;QAC7C,MAAM,EAAE,KAAK;QACb,KAAK,EAAE,UAAU;QACjB,WAAW,EAAE,MAAM;KACnB,CAAC,CAAC;IACH,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,0BAA0B,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;IACzD,CAAC;IACD,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAuB,CAAC;IACtD,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC7D,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;IACxD,CAAC;IACD,OAAO,IAAI,CAAC,IAAI,CAAC;AAClB,CAAC,CAAC;AAEF,MAAM,wBAAwB,GAAG,CAAC,OAAe,EAAmB,EAAE,CACrE,gBAAgB,CAAC,GAAG,EAAE,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE;IAChD,WAAW,EAAE,kBAAkB;IAC/B,WAAW,EAAE,uBAAuB;IACpC,UAAU,EAAE,sBAAsB;CAClC,CAAC,CAAC;AAEJ,MAAM,cAAc,GAAG,CAAC,GAAqB,EAAU,EAAE;IACxD,MAAM,SAAS,GAAG,YAAY,EAAE,CAAC;IACjC,OAAO,SAAS,CAAC,GAAG,CAAC,IAAI,SAAS,CAAC,WAAW,CAAC;AAChD,CAAC,CAAC;AAEF,MAAM,gBAAgB,GAAG,KAAK,EAC7B,GAAqB,EACrB,MAAe,EACG,EAAE;IAIpB,MAAM,IAAI,GAAG,gBAAgB,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC;IAG3D,IAAI,GAAG,KAAK,aAAa;QAAE,OAAO,IAAI,CAAC;IAEvC,MAAM,GAAG,GAAG,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAClC,MAAM,MAAM,GAAG,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACxC,IAAI,MAAM;QAAE,OAAO,MAAM,CAAC;IAE1B,MAAM,OAAO,GAAG,CAAC,KAAK,IAAI,EAAE;QAC3B,IAAI,CAAC;YACJ,MAAM,IAAI,GAAG,MAAM,wBAAwB,CAAC,IAAI,CAAC,CAAC;YAClD,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC;YAI7B,MAAM,CAAC,QAAQ,GAAG,eAAe,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YAChD,OAAO,MAAM,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAC7C,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YAOd,eAAe,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC5B,MAAM,GAAG,CAAC;QACX,CAAC;IACF,CAAC,CAAC,EAAE,CAAC;IAEL,eAAe,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IAClC,OAAO,OAAO,CAAC;AAChB,CAAC,CAAC;AAKF,MAAM,wBAAwB,GAG1B,IAAI,GAAG,EAAE,CAAC;AAOd,MAAM,CAAC,MAAM,YAAY,GAAG,KAAK,EAChC,GAAqB,EACU,EAAE;IACjC,MAAM,MAAM,GAAG,wBAAwB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACjD,IAAI,MAAM;QAAE,OAAO,MAAM,CAAC;IAE1B,MAAM,OAAO,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;QAG/C,wBAAwB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACrC,MAAM,GAAG,CAAC;IACX,CAAC,CAAC,CAAC;IACH,wBAAwB,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IAC3C,OAAO,OAAO,CAAC;AAChB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,uBAAuB,GAAG,KAAK,EAC3C,GAAqB,EACrB,MAAe,EACW,EAAE;IAC5B,MAAM,GAAG,GAAG,MAAM,gBAAgB,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAChD,OAAO;QACN,eAAe,EAAE,YAAY;QAC7B,QAAQ,EAAE,EAAE,GAAG,EAAE;KACjB,CAAC;AACH,CAAC,CAAC;AAIF,MAAM,eAAe,GAAG,CAAC,CAAS,EAAE,CAAS,EAAW,EAAE,CACzD,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;AAK/C,MAAM,oBAAoB,GAAG,CAC5B,SAA8B,EAC9B,MAAoB,EACY,EAAE;IAClC,MAAM,WAAW,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IACpE,IAAI,SAAS,GAAG,MAAM,EAAE,GAAG,WAAW,CAAC;IACvC,IAAI,MAAqC,CAAC;IAC1C,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QAClC,MAAM,GAAG,QAAQ,CAAC;QAClB,SAAS,IAAI,QAAQ,CAAC,MAAM,CAAC;QAC7B,IAAI,SAAS,GAAG,CAAC;YAAE,MAAM;IAC1B,CAAC;IACD,OAAO,MAAM,CAAC;AACf,CAAC,CAAC;AAaF,MAAM,CAAC,MAAM,yBAAyB,GAAG,KAAK,EAC7C,GAAqB,EACrB,MAAe,EACf,UAAmB,EACnB,SAAuB,IAAI,CAAC,MAAM,EACR,EAAE;IAC5B,MAAM,SAAS,GAAG,MAAM,YAAY,CAAC,GAAG,CAAC,CAAC;IAC1C,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAE5B,OAAO,uBAAuB,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAC7C,CAAC;IAID,MAAM,QAAQ,GACb,UAAU,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC;QACjC,CAAC,CAAC,SAAS,CAAC,MAAM,CAChB,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,eAAe,CAAC,gBAAgB,CAAC,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,UAAU,CAAC,CACpE;QACF,CAAC,CAAC,SAAS,CAAC;IACd,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;IAExD,MAAM,MAAM,GAAG,oBAAoB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAClD,IAAI,CAAC,MAAM,EAAE,CAAC;QACb,OAAO,uBAAuB,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAC7C,CAAC;IACD,OAAO;QACN,eAAe,EAAE,MAAM,CAAC,OAAO;QAC/B,QAAQ,EAAE,EAAE,GAAG,EAAE,gBAAgB,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE;KACvD,CAAC;AACH,CAAC,CAAC;AAIF,MAAM,CAAC,MAAM,cAAc,GAAG,GAAG,EAAE;IAClC,eAAe,CAAC,KAAK,EAAE,CAAC;AACzB,CAAC,CAAC;AAIF,MAAM,CAAC,MAAM,uBAAuB,GAAG,GAAG,EAAE;IAC3C,wBAAwB,CAAC,KAAK,EAAE,CAAC;AAClC,CAAC,CAAC;AAKF,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,IAItC,EAAE,EAAE;IACJ,IAAI,IAAI,CAAC,WAAW,KAAK,SAAS;QAAE,kBAAkB,GAAG,IAAI,CAAC,WAAW,CAAC;IAC1E,IAAI,IAAI,CAAC,WAAW,KAAK,SAAS;QACjC,uBAAuB,GAAG,IAAI,CAAC,WAAW,CAAC;IAC5C,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS;QAAE,sBAAsB,GAAG,IAAI,CAAC,UAAU,CAAC;AAC7E,CAAC,CAAC;AAKF,MAAM,CAAC,MAAM,wBAAwB,GAAG,GAAG,EAAE;IAC5C,kBAAkB,GAAG,oBAAoB,CAAC;IAC1C,uBAAuB,GAAG,2BAA2B,CAAC;IACtD,sBAAsB,GAAG,0BAA0B,CAAC;AACrD,CAAC,CAAC"}
|
|
@@ -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.
|
|
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.
|
|
41
|
+
"@prosopo/types": "5.8.2",
|
|
42
42
|
"zod": "3.23.8"
|
|
43
43
|
},
|
|
44
44
|
"devDependencies": {
|
|
45
|
-
"@prosopo/config": "3.3.
|
|
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:
|
|
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
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
|
-
|
|
29
|
-
|
|
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
|
-
|
|
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,
|