rnxsim 0.1.539 → 0.1.540

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.
Files changed (60) hide show
  1. package/cli/cloud-test-tunnel.ts +354 -0
  2. package/cli/commands/test.ts +333 -92
  3. package/cli/outbound-endpoints.ts +17 -1
  4. package/dist-lib/agent-daemon-client.cjs +1 -1
  5. package/dist-lib/agent-events.cjs +1 -1
  6. package/dist-lib/agent-identity.cjs +1 -1
  7. package/dist-lib/agent-sessions.cjs +1 -1
  8. package/dist-lib/attached-projects.cjs +1 -1
  9. package/dist-lib/auth/shared-session.cjs +1 -1
  10. package/dist-lib/backend-origin.cjs +1 -1
  11. package/dist-lib/beta.cjs +1 -1
  12. package/dist-lib/beta.mjs +1 -1
  13. package/dist-lib/bridge-constants.cjs +1 -1
  14. package/dist-lib/bridge-contract-input.cjs +1 -1
  15. package/dist-lib/bridge-contract-input.mjs +1 -1
  16. package/dist-lib/bridge-contract.cjs +1 -1
  17. package/dist-lib/bridge-contract.mjs +1 -1
  18. package/dist-lib/capture-contract.cjs +1 -1
  19. package/dist-lib/capture-contract.mjs +1 -1
  20. package/dist-lib/cli-constants.cjs +1 -1
  21. package/dist-lib/cloud-contract.cjs +1 -1
  22. package/dist-lib/cloud-contract.mjs +1 -1
  23. package/dist-lib/cloud.cjs +1 -1
  24. package/dist-lib/cloud.mjs +1 -1
  25. package/dist-lib/config.cjs +1 -1
  26. package/dist-lib/detox/index.cjs +1 -1
  27. package/dist-lib/dev-bundle-resolution.cjs +1 -1
  28. package/dist-lib/home-paths.cjs +1 -1
  29. package/dist-lib/host/bridge-host.cjs +28 -2
  30. package/dist-lib/host/fetch-proxy-handler.cjs +28 -2
  31. package/dist-lib/host/fetch-proxy-overrides.cjs +33 -3
  32. package/dist-lib/host/fetch-proxy-overrides.mjs +30 -2
  33. package/dist-lib/host/replacement-module-handler.cjs +1 -1
  34. package/dist-lib/host/websocket-proxy.cjs +1 -1
  35. package/dist-lib/index.cjs +1 -1
  36. package/dist-lib/jump-to-source-babel.cjs +1 -1
  37. package/dist-lib/jump-to-source-native.cjs +1 -1
  38. package/dist-lib/menu.cjs +1 -1
  39. package/dist-lib/menu.mjs +1 -1
  40. package/dist-lib/metro-fingerprint-registry.cjs +1 -1
  41. package/dist-lib/metro-fingerprint-registry.mjs +1 -1
  42. package/dist-lib/metro-production-bundle.cjs +1 -1
  43. package/dist-lib/metro-production-bundle.mjs +1 -1
  44. package/dist-lib/metro.cjs +1 -1
  45. package/dist-lib/profiles.cjs +1 -1
  46. package/dist-lib/public-brand.cjs +1 -1
  47. package/dist-lib/react-native-host-modules.cjs +1 -1
  48. package/dist-lib/react-native-host-modules.mjs +1 -1
  49. package/dist-lib/render-mode.cjs +1 -1
  50. package/dist-lib/scripts/dev-server-scanner.cjs +1 -1
  51. package/dist-lib/sdk.cjs +1 -1
  52. package/dist-lib/sdk.mjs +1 -1
  53. package/dist-lib/skills.cjs +29 -3
  54. package/dist-lib/swift-submit.cjs +1 -1
  55. package/dist-lib/swift-submit.mjs +1 -1
  56. package/dist-lib/swift.cjs +1 -1
  57. package/dist-lib/vite.cjs +1 -1
  58. package/package.json +1 -1
  59. package/src/host/fetch-proxy-handler.ts +2 -1
  60. package/src/host/fetch-proxy-overrides.ts +41 -0
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.539 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.540 | (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.539 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.540 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
 
3
3
  // src/capture-contract.ts
4
4
  var RNX_SCREEN_CAPTURE_VERSION = 1;
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.539 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.540 | (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.539 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.540 | (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.539 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.540 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
 
3
3
  // src/cloud-contract.ts
4
4
  var RNX_CLOUD_MAX_ARTIFACT_BYTES = 20 * 1024 * 1024;
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.539 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.540 | (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.539 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.540 | (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);
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.539 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.540 | (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.539 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.540 | (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.539 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.540 | (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.539 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.540 | (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.539 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.540 | (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.539 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.540 | (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.539 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.540 | (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
- getFetchProxyTargetHeaders: () => getFetchProxyTargetHeaders
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
- getFetchProxyTargetHeaders
90
+ PUBLIC_RPC_TENANT,
91
+ getFetchProxyTargetHeaders,
92
+ resolveFetchProxyTargetUrl
63
93
  });
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.539 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.540 | (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
- getFetchProxyTargetHeaders
62
+ PUBLIC_RPC_TENANT,
63
+ getFetchProxyTargetHeaders,
64
+ resolveFetchProxyTargetUrl
37
65
  };
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.539 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.540 | (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.539 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.540 | (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.539 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.540 | (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.539 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.540 | (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.539 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.540 | (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.539 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.540 | (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.539 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.540 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
 
3
3
  // src/public-brand.ts
4
4
  var name = "rnx";
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.539 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.540 | (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.539 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.540 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
 
3
3
  // src/metro-fingerprint-registry.ts
4
4
  var RNX_METRO_FINGERPRINT_SCHEMA_VERSION = 2;
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.539 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.540 | (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.539 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.540 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
 
3
3
  // src/metro-production-bundle.ts
4
4
  var RNXSIM_METRO_MODULE_PATHS_PREFIX = "globalThis.__sootsimModulePaths=";
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.539 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.540 | (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.539 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.540 | (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.539 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.540 | (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.539 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.540 | (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.539 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.540 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
 
3
3
  // src/react-native-host-modules.ts
4
4
  var REACT_NATIVE_PASSTHROUGH_SPECIFIERS = [
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.539 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.540 | (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.539 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.540 | (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.539 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.540 | (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.539 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.540 | (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);
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.539 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.540 | (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.539 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.540 | (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.539 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.540 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
 
3
3
  // src/swift-submit.ts
4
4
  var SWIFT_COMPILE_PATH = "/api/swift-compile";
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.539 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.540 | (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.539 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.540 | (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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "rnxsim",
3
- "version": "0.1.539",
3
+ "version": "0.1.540",
4
4
  "description": "Vite and Metro plugins, testing drivers, and SDK exports for rnx.",
5
5
  "author": "Tamagui LLC",
6
6
  "license": "SEE LICENSE IN LICENSE",
@@ -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 {