rnxsim 0.1.539 → 0.1.541
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/cli/cloud-test-tunnel.ts +354 -0
- package/cli/commands/test.ts +333 -92
- package/cli/outbound-endpoints.ts +17 -1
- package/dist-lib/agent-daemon-client.cjs +1 -1
- package/dist-lib/agent-events.cjs +1 -1
- package/dist-lib/agent-identity.cjs +1 -1
- package/dist-lib/agent-sessions.cjs +1 -1
- package/dist-lib/attached-projects.cjs +1 -1
- package/dist-lib/auth/shared-session.cjs +1 -1
- package/dist-lib/backend-origin.cjs +1 -1
- package/dist-lib/beta.cjs +1 -1
- package/dist-lib/beta.mjs +1 -1
- package/dist-lib/bridge-constants.cjs +1 -1
- package/dist-lib/bridge-contract-input.cjs +1 -1
- package/dist-lib/bridge-contract-input.mjs +1 -1
- package/dist-lib/bridge-contract.cjs +1 -1
- package/dist-lib/bridge-contract.mjs +1 -1
- package/dist-lib/capture-contract.cjs +1 -1
- package/dist-lib/capture-contract.mjs +1 -1
- package/dist-lib/cli-constants.cjs +1 -1
- package/dist-lib/cloud-contract.cjs +1 -1
- package/dist-lib/cloud-contract.mjs +1 -1
- package/dist-lib/cloud.cjs +1 -1
- package/dist-lib/cloud.mjs +1 -1
- package/dist-lib/config.cjs +1 -1
- package/dist-lib/detox/index.cjs +1 -1
- package/dist-lib/dev-bundle-resolution.cjs +1 -1
- package/dist-lib/home-paths.cjs +1 -1
- package/dist-lib/host/bridge-host.cjs +28 -2
- package/dist-lib/host/fetch-proxy-handler.cjs +28 -2
- package/dist-lib/host/fetch-proxy-overrides.cjs +33 -3
- package/dist-lib/host/fetch-proxy-overrides.mjs +30 -2
- package/dist-lib/host/replacement-module-handler.cjs +1 -1
- package/dist-lib/host/websocket-proxy.cjs +1 -1
- package/dist-lib/index.cjs +1 -1
- package/dist-lib/jump-to-source-babel.cjs +1 -1
- package/dist-lib/jump-to-source-native.cjs +1 -1
- package/dist-lib/menu.cjs +1 -1
- package/dist-lib/menu.mjs +1 -1
- package/dist-lib/metro-fingerprint-registry.cjs +1 -1
- package/dist-lib/metro-fingerprint-registry.mjs +1 -1
- package/dist-lib/metro-production-bundle.cjs +1 -1
- package/dist-lib/metro-production-bundle.mjs +1 -1
- package/dist-lib/metro.cjs +1 -1
- package/dist-lib/profiles.cjs +1 -1
- package/dist-lib/public-brand.cjs +1 -1
- package/dist-lib/react-native-host-modules.cjs +1 -1
- package/dist-lib/react-native-host-modules.mjs +1 -1
- package/dist-lib/render-mode.cjs +1 -1
- package/dist-lib/scripts/dev-server-scanner.cjs +1 -1
- package/dist-lib/sdk.cjs +1 -1
- package/dist-lib/sdk.mjs +1 -1
- package/dist-lib/skills.cjs +29 -3
- package/dist-lib/swift-submit.cjs +1 -1
- package/dist-lib/swift-submit.mjs +1 -1
- package/dist-lib/swift.cjs +1 -1
- package/dist-lib/vite.cjs +1 -1
- package/package.json +1 -1
- package/src/host/fetch-proxy-handler.ts +2 -1
- package/src/host/fetch-proxy-overrides.ts +41 -0
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.541 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.541 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.541 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
package/dist-lib/cloud.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.541 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
package/dist-lib/cloud.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.541 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
var __defProp = Object.defineProperty;
|
|
3
3
|
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
4
4
|
var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
package/dist-lib/config.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.541 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
package/dist-lib/detox/index.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.541 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __create = Object.create;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.541 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
package/dist-lib/home-paths.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.541 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __create = Object.create;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.541 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __create = Object.create;
|
|
@@ -7409,6 +7409,32 @@ function headerOverridesFor(hostname) {
|
|
|
7409
7409
|
}
|
|
7410
7410
|
return void 0;
|
|
7411
7411
|
}
|
|
7412
|
+
var PUBLIC_RPC_TENANT = "rnx-public-rpc";
|
|
7413
|
+
var QUICKNODE_HOST_SUFFIX = ".quiknode.pro";
|
|
7414
|
+
var PUBLIC_RPC_BY_QUICKNODE_CHAIN = {
|
|
7415
|
+
"": "https://ethereum-rpc.publicnode.com",
|
|
7416
|
+
"arbitrum-mainnet": "https://arbitrum-one-rpc.publicnode.com",
|
|
7417
|
+
"avalanche-mainnet": "https://avalanche-c-chain-rpc.publicnode.com",
|
|
7418
|
+
"base-mainnet": "https://base-rpc.publicnode.com",
|
|
7419
|
+
"blast-mainnet": "https://blast-rpc.publicnode.com",
|
|
7420
|
+
bsc: "https://bsc-rpc.publicnode.com",
|
|
7421
|
+
"celo-mainnet": "https://celo-rpc.publicnode.com",
|
|
7422
|
+
matic: "https://polygon-bor-rpc.publicnode.com",
|
|
7423
|
+
optimism: "https://optimism-rpc.publicnode.com",
|
|
7424
|
+
"soneium-mainnet": "https://soneium-rpc.publicnode.com",
|
|
7425
|
+
"unichain-mainnet": "https://unichain-rpc.publicnode.com"
|
|
7426
|
+
};
|
|
7427
|
+
function resolveFetchProxyTargetUrl(requested) {
|
|
7428
|
+
const host = requested.hostname.toLowerCase();
|
|
7429
|
+
if (!host.endsWith(QUICKNODE_HOST_SUFFIX)) return requested;
|
|
7430
|
+
const tenant = host.slice(0, -QUICKNODE_HOST_SUFFIX.length);
|
|
7431
|
+
if (tenant !== PUBLIC_RPC_TENANT && !tenant.startsWith(`${PUBLIC_RPC_TENANT}.`)) {
|
|
7432
|
+
return requested;
|
|
7433
|
+
}
|
|
7434
|
+
const chain = tenant === PUBLIC_RPC_TENANT ? "" : tenant.slice(PUBLIC_RPC_TENANT.length + 1);
|
|
7435
|
+
const replacement = PUBLIC_RPC_BY_QUICKNODE_CHAIN[chain];
|
|
7436
|
+
return replacement ? new URL(replacement) : requested;
|
|
7437
|
+
}
|
|
7412
7438
|
function getFetchProxyTargetHeaders(targetUrl) {
|
|
7413
7439
|
const hostOverrides = headerOverridesFor(targetUrl.hostname);
|
|
7414
7440
|
return {
|
|
@@ -7529,7 +7555,7 @@ async function handleFetchProxyRequest(req, res) {
|
|
|
7529
7555
|
}
|
|
7530
7556
|
let upstreamUrl;
|
|
7531
7557
|
try {
|
|
7532
|
-
upstreamUrl = new URL(targetUrl);
|
|
7558
|
+
upstreamUrl = resolveFetchProxyTargetUrl(new URL(targetUrl));
|
|
7533
7559
|
} catch {
|
|
7534
7560
|
applyFetchProxyCors(res);
|
|
7535
7561
|
res.writeHead(400, { "Content-Type": "text/plain" });
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.541 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __create = Object.create;
|
|
@@ -78,6 +78,32 @@ function headerOverridesFor(hostname) {
|
|
|
78
78
|
}
|
|
79
79
|
return void 0;
|
|
80
80
|
}
|
|
81
|
+
var PUBLIC_RPC_TENANT = "rnx-public-rpc";
|
|
82
|
+
var QUICKNODE_HOST_SUFFIX = ".quiknode.pro";
|
|
83
|
+
var PUBLIC_RPC_BY_QUICKNODE_CHAIN = {
|
|
84
|
+
"": "https://ethereum-rpc.publicnode.com",
|
|
85
|
+
"arbitrum-mainnet": "https://arbitrum-one-rpc.publicnode.com",
|
|
86
|
+
"avalanche-mainnet": "https://avalanche-c-chain-rpc.publicnode.com",
|
|
87
|
+
"base-mainnet": "https://base-rpc.publicnode.com",
|
|
88
|
+
"blast-mainnet": "https://blast-rpc.publicnode.com",
|
|
89
|
+
bsc: "https://bsc-rpc.publicnode.com",
|
|
90
|
+
"celo-mainnet": "https://celo-rpc.publicnode.com",
|
|
91
|
+
matic: "https://polygon-bor-rpc.publicnode.com",
|
|
92
|
+
optimism: "https://optimism-rpc.publicnode.com",
|
|
93
|
+
"soneium-mainnet": "https://soneium-rpc.publicnode.com",
|
|
94
|
+
"unichain-mainnet": "https://unichain-rpc.publicnode.com"
|
|
95
|
+
};
|
|
96
|
+
function resolveFetchProxyTargetUrl(requested) {
|
|
97
|
+
const host = requested.hostname.toLowerCase();
|
|
98
|
+
if (!host.endsWith(QUICKNODE_HOST_SUFFIX)) return requested;
|
|
99
|
+
const tenant = host.slice(0, -QUICKNODE_HOST_SUFFIX.length);
|
|
100
|
+
if (tenant !== PUBLIC_RPC_TENANT && !tenant.startsWith(`${PUBLIC_RPC_TENANT}.`)) {
|
|
101
|
+
return requested;
|
|
102
|
+
}
|
|
103
|
+
const chain = tenant === PUBLIC_RPC_TENANT ? "" : tenant.slice(PUBLIC_RPC_TENANT.length + 1);
|
|
104
|
+
const replacement = PUBLIC_RPC_BY_QUICKNODE_CHAIN[chain];
|
|
105
|
+
return replacement ? new URL(replacement) : requested;
|
|
106
|
+
}
|
|
81
107
|
function getFetchProxyTargetHeaders(targetUrl) {
|
|
82
108
|
const hostOverrides = headerOverridesFor(targetUrl.hostname);
|
|
83
109
|
return {
|
|
@@ -201,7 +227,7 @@ async function handleFetchProxyRequest(req, res) {
|
|
|
201
227
|
}
|
|
202
228
|
let upstreamUrl;
|
|
203
229
|
try {
|
|
204
|
-
upstreamUrl = new URL(targetUrl);
|
|
230
|
+
upstreamUrl = resolveFetchProxyTargetUrl(new URL(targetUrl));
|
|
205
231
|
} catch {
|
|
206
232
|
applyFetchProxyCors(res);
|
|
207
233
|
res.writeHead(400, { "Content-Type": "text/plain" });
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.541 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
|
@@ -23,7 +23,9 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
|
23
23
|
var fetch_proxy_overrides_exports = {};
|
|
24
24
|
__export(fetch_proxy_overrides_exports, {
|
|
25
25
|
FETCH_PROXY_BROWSER_USER_AGENT: () => FETCH_PROXY_BROWSER_USER_AGENT,
|
|
26
|
-
|
|
26
|
+
PUBLIC_RPC_TENANT: () => PUBLIC_RPC_TENANT,
|
|
27
|
+
getFetchProxyTargetHeaders: () => getFetchProxyTargetHeaders,
|
|
28
|
+
resolveFetchProxyTargetUrl: () => resolveFetchProxyTargetUrl
|
|
27
29
|
});
|
|
28
30
|
module.exports = __toCommonJS(fetch_proxy_overrides_exports);
|
|
29
31
|
var FETCH_PROXY_BROWSER_USER_AGENT = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36";
|
|
@@ -48,6 +50,32 @@ function headerOverridesFor(hostname) {
|
|
|
48
50
|
}
|
|
49
51
|
return void 0;
|
|
50
52
|
}
|
|
53
|
+
var PUBLIC_RPC_TENANT = "rnx-public-rpc";
|
|
54
|
+
var QUICKNODE_HOST_SUFFIX = ".quiknode.pro";
|
|
55
|
+
var PUBLIC_RPC_BY_QUICKNODE_CHAIN = {
|
|
56
|
+
"": "https://ethereum-rpc.publicnode.com",
|
|
57
|
+
"arbitrum-mainnet": "https://arbitrum-one-rpc.publicnode.com",
|
|
58
|
+
"avalanche-mainnet": "https://avalanche-c-chain-rpc.publicnode.com",
|
|
59
|
+
"base-mainnet": "https://base-rpc.publicnode.com",
|
|
60
|
+
"blast-mainnet": "https://blast-rpc.publicnode.com",
|
|
61
|
+
bsc: "https://bsc-rpc.publicnode.com",
|
|
62
|
+
"celo-mainnet": "https://celo-rpc.publicnode.com",
|
|
63
|
+
matic: "https://polygon-bor-rpc.publicnode.com",
|
|
64
|
+
optimism: "https://optimism-rpc.publicnode.com",
|
|
65
|
+
"soneium-mainnet": "https://soneium-rpc.publicnode.com",
|
|
66
|
+
"unichain-mainnet": "https://unichain-rpc.publicnode.com"
|
|
67
|
+
};
|
|
68
|
+
function resolveFetchProxyTargetUrl(requested) {
|
|
69
|
+
const host = requested.hostname.toLowerCase();
|
|
70
|
+
if (!host.endsWith(QUICKNODE_HOST_SUFFIX)) return requested;
|
|
71
|
+
const tenant = host.slice(0, -QUICKNODE_HOST_SUFFIX.length);
|
|
72
|
+
if (tenant !== PUBLIC_RPC_TENANT && !tenant.startsWith(`${PUBLIC_RPC_TENANT}.`)) {
|
|
73
|
+
return requested;
|
|
74
|
+
}
|
|
75
|
+
const chain = tenant === PUBLIC_RPC_TENANT ? "" : tenant.slice(PUBLIC_RPC_TENANT.length + 1);
|
|
76
|
+
const replacement = PUBLIC_RPC_BY_QUICKNODE_CHAIN[chain];
|
|
77
|
+
return replacement ? new URL(replacement) : requested;
|
|
78
|
+
}
|
|
51
79
|
function getFetchProxyTargetHeaders(targetUrl) {
|
|
52
80
|
const hostOverrides = headerOverridesFor(targetUrl.hostname);
|
|
53
81
|
return {
|
|
@@ -59,5 +87,7 @@ function getFetchProxyTargetHeaders(targetUrl) {
|
|
|
59
87
|
// Annotate the CommonJS export names for ESM import in node:
|
|
60
88
|
0 && (module.exports = {
|
|
61
89
|
FETCH_PROXY_BROWSER_USER_AGENT,
|
|
62
|
-
|
|
90
|
+
PUBLIC_RPC_TENANT,
|
|
91
|
+
getFetchProxyTargetHeaders,
|
|
92
|
+
resolveFetchProxyTargetUrl
|
|
63
93
|
});
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.541 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
|
|
3
3
|
// src/host/fetch-proxy-overrides.ts
|
|
4
4
|
var FETCH_PROXY_BROWSER_USER_AGENT = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36";
|
|
@@ -23,6 +23,32 @@ function headerOverridesFor(hostname) {
|
|
|
23
23
|
}
|
|
24
24
|
return void 0;
|
|
25
25
|
}
|
|
26
|
+
var PUBLIC_RPC_TENANT = "rnx-public-rpc";
|
|
27
|
+
var QUICKNODE_HOST_SUFFIX = ".quiknode.pro";
|
|
28
|
+
var PUBLIC_RPC_BY_QUICKNODE_CHAIN = {
|
|
29
|
+
"": "https://ethereum-rpc.publicnode.com",
|
|
30
|
+
"arbitrum-mainnet": "https://arbitrum-one-rpc.publicnode.com",
|
|
31
|
+
"avalanche-mainnet": "https://avalanche-c-chain-rpc.publicnode.com",
|
|
32
|
+
"base-mainnet": "https://base-rpc.publicnode.com",
|
|
33
|
+
"blast-mainnet": "https://blast-rpc.publicnode.com",
|
|
34
|
+
bsc: "https://bsc-rpc.publicnode.com",
|
|
35
|
+
"celo-mainnet": "https://celo-rpc.publicnode.com",
|
|
36
|
+
matic: "https://polygon-bor-rpc.publicnode.com",
|
|
37
|
+
optimism: "https://optimism-rpc.publicnode.com",
|
|
38
|
+
"soneium-mainnet": "https://soneium-rpc.publicnode.com",
|
|
39
|
+
"unichain-mainnet": "https://unichain-rpc.publicnode.com"
|
|
40
|
+
};
|
|
41
|
+
function resolveFetchProxyTargetUrl(requested) {
|
|
42
|
+
const host = requested.hostname.toLowerCase();
|
|
43
|
+
if (!host.endsWith(QUICKNODE_HOST_SUFFIX)) return requested;
|
|
44
|
+
const tenant = host.slice(0, -QUICKNODE_HOST_SUFFIX.length);
|
|
45
|
+
if (tenant !== PUBLIC_RPC_TENANT && !tenant.startsWith(`${PUBLIC_RPC_TENANT}.`)) {
|
|
46
|
+
return requested;
|
|
47
|
+
}
|
|
48
|
+
const chain = tenant === PUBLIC_RPC_TENANT ? "" : tenant.slice(PUBLIC_RPC_TENANT.length + 1);
|
|
49
|
+
const replacement = PUBLIC_RPC_BY_QUICKNODE_CHAIN[chain];
|
|
50
|
+
return replacement ? new URL(replacement) : requested;
|
|
51
|
+
}
|
|
26
52
|
function getFetchProxyTargetHeaders(targetUrl) {
|
|
27
53
|
const hostOverrides = headerOverridesFor(targetUrl.hostname);
|
|
28
54
|
return {
|
|
@@ -33,5 +59,7 @@ function getFetchProxyTargetHeaders(targetUrl) {
|
|
|
33
59
|
}
|
|
34
60
|
export {
|
|
35
61
|
FETCH_PROXY_BROWSER_USER_AGENT,
|
|
36
|
-
|
|
62
|
+
PUBLIC_RPC_TENANT,
|
|
63
|
+
getFetchProxyTargetHeaders,
|
|
64
|
+
resolveFetchProxyTargetUrl
|
|
37
65
|
};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.541 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __create = Object.create;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.541 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
package/dist-lib/index.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.541 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __create = Object.create;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.541 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.541 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __create = Object.create;
|
package/dist-lib/menu.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.541 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
package/dist-lib/menu.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.541 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.541 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
package/dist-lib/metro.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.541 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __create = Object.create;
|
package/dist-lib/profiles.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.541 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __create = Object.create;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.541 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.541 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
package/dist-lib/render-mode.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.541 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.541 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __create = Object.create;
|
package/dist-lib/sdk.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.541 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
package/dist-lib/sdk.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.541 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
var __defProp = Object.defineProperty;
|
|
3
3
|
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
4
4
|
var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
package/dist-lib/skills.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.541 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __create = Object.create;
|
|
@@ -22999,6 +22999,17 @@ function headerOverridesFor(hostname) {
|
|
|
22999
22999
|
}
|
|
23000
23000
|
return void 0;
|
|
23001
23001
|
}
|
|
23002
|
+
function resolveFetchProxyTargetUrl(requested) {
|
|
23003
|
+
const host = requested.hostname.toLowerCase();
|
|
23004
|
+
if (!host.endsWith(QUICKNODE_HOST_SUFFIX)) return requested;
|
|
23005
|
+
const tenant = host.slice(0, -QUICKNODE_HOST_SUFFIX.length);
|
|
23006
|
+
if (tenant !== PUBLIC_RPC_TENANT && !tenant.startsWith(`${PUBLIC_RPC_TENANT}.`)) {
|
|
23007
|
+
return requested;
|
|
23008
|
+
}
|
|
23009
|
+
const chain = tenant === PUBLIC_RPC_TENANT ? "" : tenant.slice(PUBLIC_RPC_TENANT.length + 1);
|
|
23010
|
+
const replacement = PUBLIC_RPC_BY_QUICKNODE_CHAIN[chain];
|
|
23011
|
+
return replacement ? new URL(replacement) : requested;
|
|
23012
|
+
}
|
|
23002
23013
|
function getFetchProxyTargetHeaders(targetUrl) {
|
|
23003
23014
|
const hostOverrides = headerOverridesFor(targetUrl.hostname);
|
|
23004
23015
|
return {
|
|
@@ -23007,7 +23018,7 @@ function getFetchProxyTargetHeaders(targetUrl) {
|
|
|
23007
23018
|
...hostOverrides?.headers
|
|
23008
23019
|
};
|
|
23009
23020
|
}
|
|
23010
|
-
var FETCH_PROXY_BROWSER_USER_AGENT, HOST_HEADER_OVERRIDES;
|
|
23021
|
+
var FETCH_PROXY_BROWSER_USER_AGENT, HOST_HEADER_OVERRIDES, PUBLIC_RPC_TENANT, QUICKNODE_HOST_SUFFIX, PUBLIC_RPC_BY_QUICKNODE_CHAIN;
|
|
23011
23022
|
var init_fetch_proxy_overrides = __esm({
|
|
23012
23023
|
"src/host/fetch-proxy-overrides.ts"() {
|
|
23013
23024
|
"use strict";
|
|
@@ -23024,6 +23035,21 @@ var init_fetch_proxy_overrides = __esm({
|
|
|
23024
23035
|
suppressBrowserUserAgent: true
|
|
23025
23036
|
}
|
|
23026
23037
|
];
|
|
23038
|
+
PUBLIC_RPC_TENANT = "rnx-public-rpc";
|
|
23039
|
+
QUICKNODE_HOST_SUFFIX = ".quiknode.pro";
|
|
23040
|
+
PUBLIC_RPC_BY_QUICKNODE_CHAIN = {
|
|
23041
|
+
"": "https://ethereum-rpc.publicnode.com",
|
|
23042
|
+
"arbitrum-mainnet": "https://arbitrum-one-rpc.publicnode.com",
|
|
23043
|
+
"avalanche-mainnet": "https://avalanche-c-chain-rpc.publicnode.com",
|
|
23044
|
+
"base-mainnet": "https://base-rpc.publicnode.com",
|
|
23045
|
+
"blast-mainnet": "https://blast-rpc.publicnode.com",
|
|
23046
|
+
bsc: "https://bsc-rpc.publicnode.com",
|
|
23047
|
+
"celo-mainnet": "https://celo-rpc.publicnode.com",
|
|
23048
|
+
matic: "https://polygon-bor-rpc.publicnode.com",
|
|
23049
|
+
optimism: "https://optimism-rpc.publicnode.com",
|
|
23050
|
+
"soneium-mainnet": "https://soneium-rpc.publicnode.com",
|
|
23051
|
+
"unichain-mainnet": "https://unichain-rpc.publicnode.com"
|
|
23052
|
+
};
|
|
23027
23053
|
}
|
|
23028
23054
|
});
|
|
23029
23055
|
|
|
@@ -23104,7 +23130,7 @@ async function handleFetchProxyRequest(req, res) {
|
|
|
23104
23130
|
}
|
|
23105
23131
|
let upstreamUrl;
|
|
23106
23132
|
try {
|
|
23107
|
-
upstreamUrl = new URL(targetUrl);
|
|
23133
|
+
upstreamUrl = resolveFetchProxyTargetUrl(new URL(targetUrl));
|
|
23108
23134
|
} catch {
|
|
23109
23135
|
applyFetchProxyCors(res);
|
|
23110
23136
|
res.writeHead(400, { "Content-Type": "text/plain" });
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.541 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
package/dist-lib/swift.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.541 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __create = Object.create;
|
package/dist-lib/vite.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.541 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __create = Object.create;
|
package/package.json
CHANGED
|
@@ -30,6 +30,7 @@ import { isLoopbackHost, normalizeHostname } from '../backend-origin.ts'
|
|
|
30
30
|
import {
|
|
31
31
|
FETCH_PROXY_BROWSER_USER_AGENT,
|
|
32
32
|
getFetchProxyTargetHeaders,
|
|
33
|
+
resolveFetchProxyTargetUrl,
|
|
33
34
|
} from './fetch-proxy-overrides.ts'
|
|
34
35
|
|
|
35
36
|
const STRIP_FETCH_PROXY_HEADERS = new Set([
|
|
@@ -184,7 +185,7 @@ export async function handleFetchProxyRequest(
|
|
|
184
185
|
|
|
185
186
|
let upstreamUrl: URL
|
|
186
187
|
try {
|
|
187
|
-
upstreamUrl = new URL(targetUrl)
|
|
188
|
+
upstreamUrl = resolveFetchProxyTargetUrl(new URL(targetUrl))
|
|
188
189
|
} catch {
|
|
189
190
|
applyFetchProxyCors(res)
|
|
190
191
|
res.writeHead(400, { 'Content-Type': 'text/plain' })
|
|
@@ -39,6 +39,47 @@ function headerOverridesFor(hostname: string):
|
|
|
39
39
|
return undefined
|
|
40
40
|
}
|
|
41
41
|
|
|
42
|
+
// an app that builds its rpc provider hostname out of a per-tenant key cannot be
|
|
43
|
+
// pointed at another node by configuration alone. demo tooling injects this
|
|
44
|
+
// tenant name when a checkout carries no usable provider credentials, and the
|
|
45
|
+
// proxy resolves it to a public node for the chain. a real tenant never matches.
|
|
46
|
+
export const PUBLIC_RPC_TENANT = 'rnx-public-rpc'
|
|
47
|
+
|
|
48
|
+
const QUICKNODE_HOST_SUFFIX = '.quiknode.pro'
|
|
49
|
+
|
|
50
|
+
// quicknode encodes the chain in the subdomain and leaves mainnet off entirely.
|
|
51
|
+
const PUBLIC_RPC_BY_QUICKNODE_CHAIN: Record<string, string> = {
|
|
52
|
+
'': 'https://ethereum-rpc.publicnode.com',
|
|
53
|
+
'arbitrum-mainnet': 'https://arbitrum-one-rpc.publicnode.com',
|
|
54
|
+
'avalanche-mainnet': 'https://avalanche-c-chain-rpc.publicnode.com',
|
|
55
|
+
'base-mainnet': 'https://base-rpc.publicnode.com',
|
|
56
|
+
'blast-mainnet': 'https://blast-rpc.publicnode.com',
|
|
57
|
+
bsc: 'https://bsc-rpc.publicnode.com',
|
|
58
|
+
'celo-mainnet': 'https://celo-rpc.publicnode.com',
|
|
59
|
+
matic: 'https://polygon-bor-rpc.publicnode.com',
|
|
60
|
+
optimism: 'https://optimism-rpc.publicnode.com',
|
|
61
|
+
'soneium-mainnet': 'https://soneium-rpc.publicnode.com',
|
|
62
|
+
'unichain-mainnet': 'https://unichain-rpc.publicnode.com',
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
// the url the proxy should actually fetch, which differs from the requested one
|
|
66
|
+
// only for the sentinel tenant above
|
|
67
|
+
export function resolveFetchProxyTargetUrl(requested: URL): URL {
|
|
68
|
+
const host = requested.hostname.toLowerCase()
|
|
69
|
+
if (!host.endsWith(QUICKNODE_HOST_SUFFIX)) return requested
|
|
70
|
+
|
|
71
|
+
const tenant = host.slice(0, -QUICKNODE_HOST_SUFFIX.length)
|
|
72
|
+
if (tenant !== PUBLIC_RPC_TENANT && !tenant.startsWith(`${PUBLIC_RPC_TENANT}.`)) {
|
|
73
|
+
return requested
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
const chain =
|
|
77
|
+
tenant === PUBLIC_RPC_TENANT ? '' : tenant.slice(PUBLIC_RPC_TENANT.length + 1)
|
|
78
|
+
const replacement = PUBLIC_RPC_BY_QUICKNODE_CHAIN[chain]
|
|
79
|
+
// the tenant token rides in the path, which a public node does not want
|
|
80
|
+
return replacement ? new URL(replacement) : requested
|
|
81
|
+
}
|
|
82
|
+
|
|
42
83
|
export function getFetchProxyTargetHeaders(targetUrl: URL): Record<string, string> {
|
|
43
84
|
const hostOverrides = headerOverridesFor(targetUrl.hostname)
|
|
44
85
|
return {
|