rnxsim 0.1.411 → 0.1.413
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/bridge-flow-runner.ts +24 -18
- package/cli/outbound-endpoints.ts +8 -0
- 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 +2 -2
- 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/config.cjs +1 -1
- package/dist-lib/detox/index.cjs +1 -1
- package/dist-lib/dev-bundle-resolution.cjs +2 -2
- package/dist-lib/home-paths.cjs +1 -1
- package/dist-lib/host/bridge-host.cjs +15 -2
- package/dist-lib/host/fetch-proxy-handler.cjs +14 -1
- package/dist-lib/host/fetch-proxy-overrides.cjs +1 -1
- package/dist-lib/host/fetch-proxy-overrides.mjs +1 -1
- 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/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 +2 -2
- package/dist-lib/sdk.cjs +1 -1
- package/dist-lib/sdk.mjs +1 -1
- package/dist-lib/skills.cjs +35 -6
- package/dist-lib/vite.cjs +1 -1
- package/package.json +1 -1
- package/src/backend-origin.ts +1 -1
- package/src/host/fetch-proxy-handler.ts +13 -0
|
@@ -1833,6 +1833,17 @@ export class SootSimBridgeFlowRunner {
|
|
|
1833
1833
|
}
|
|
1834
1834
|
|
|
1835
1835
|
private async reloadGuestApp() {
|
|
1836
|
+
// try the gentle reload first — in-place React re-mount preserves
|
|
1837
|
+
// recording state and avoids the full worker lifecycle tear-down.
|
|
1838
|
+
const reloaded = await this.bridge.send({
|
|
1839
|
+
type: 'call',
|
|
1840
|
+
simId: this.opts.simId,
|
|
1841
|
+
path: 'SootSim.bridges.hotRemount.reloadExternalApp',
|
|
1842
|
+
args: [],
|
|
1843
|
+
})
|
|
1844
|
+
if (reloaded) return
|
|
1845
|
+
|
|
1846
|
+
// fallback for surfaces that don't export the hot-remount bridge: a
|
|
1836
1847
|
// hard page reload resets the tenant worker.
|
|
1837
1848
|
await this.evaluate('window.location.reload()').catch(() => {})
|
|
1838
1849
|
}
|
|
@@ -1908,12 +1919,15 @@ export class SootSimBridgeFlowRunner {
|
|
|
1908
1919
|
const wantsClear = !!(opts && typeof opts === 'object' && opts.clearState)
|
|
1909
1920
|
const wantsResetRuntime = readBooleanKey(opts, 'resetRuntime')
|
|
1910
1921
|
|
|
1911
|
-
if (!this.firstLaunchDone
|
|
1912
|
-
// First launch in the flow, no clear: if the shell is on home, mirror
|
|
1913
|
-
// Maestro's "launch the app" boundary through the shell. Otherwise the
|
|
1914
|
-
// guest app is already booting from the initial sim open, so just wait.
|
|
1922
|
+
if (!this.firstLaunchDone) {
|
|
1915
1923
|
this.firstLaunchDone = true
|
|
1916
|
-
if (
|
|
1924
|
+
if (wantsClear) {
|
|
1925
|
+
await this.resetGuestAppData({
|
|
1926
|
+
launchArguments: hasLaunchArguments ? launchArguments : null,
|
|
1927
|
+
initialUrl: null,
|
|
1928
|
+
})
|
|
1929
|
+
await this.waitForTree(120000)
|
|
1930
|
+
} else if (hasLaunchArguments) {
|
|
1917
1931
|
const launched = await this.launchShellAppFromHomeIfNeeded(opts)
|
|
1918
1932
|
if (launched) await this.waitForTree(120000)
|
|
1919
1933
|
await this.reloadGuestAppRuntime({
|
|
@@ -1921,22 +1935,13 @@ export class SootSimBridgeFlowRunner {
|
|
|
1921
1935
|
initialUrl: null,
|
|
1922
1936
|
})
|
|
1923
1937
|
await this.waitForTree(120000)
|
|
1938
|
+
await this.waitForTree(30000)
|
|
1924
1939
|
} else if (wantsResetRuntime) {
|
|
1925
|
-
// rnx benchmark flows need app auth/storage kept warm while the
|
|
1926
|
-
// guest React runtime starts fresh inside the timed/recorded boundary.
|
|
1927
|
-
// the reload re-runs the app entry inside the mounted app surface, so
|
|
1928
|
-
// it only does anything while the shell is showing the app. issued from
|
|
1929
|
-
// home it acks, blanks the surface, and never re-mounts a root
|
|
1930
|
-
// component, so launch first and let a flow that starts at home reset
|
|
1931
|
-
// the same runtime a flow that starts in-app does. a surface we just
|
|
1932
|
-
// launched still has to finish mounting before the reset, since
|
|
1933
|
-
// resetting mid-mount drops the module cache while that first load is
|
|
1934
|
-
// in flight; an already-foregrounded app is past that point and a
|
|
1935
|
-
// second readiness wait would only pad the measured reset.
|
|
1936
1940
|
const launched = await this.launchShellAppFromHomeIfNeeded(opts)
|
|
1937
1941
|
if (launched) await this.waitForTree(120000)
|
|
1938
1942
|
await this.reloadGuestAppRuntime({})
|
|
1939
1943
|
await this.waitForTree(120000)
|
|
1944
|
+
await this.waitForTree(30000)
|
|
1940
1945
|
} else if (this.appStopped) {
|
|
1941
1946
|
await this.launchShellAppFromHomeIfNeeded(opts)
|
|
1942
1947
|
await this.reloadGuestAppRuntime({
|
|
@@ -1944,12 +1949,13 @@ export class SootSimBridgeFlowRunner {
|
|
|
1944
1949
|
initialUrl: null,
|
|
1945
1950
|
})
|
|
1946
1951
|
await this.waitForTree(120000)
|
|
1952
|
+
await this.waitForTree(30000)
|
|
1947
1953
|
} else {
|
|
1948
1954
|
await this.launchShellAppFromHomeIfNeeded(opts)
|
|
1955
|
+
await this.waitForTree(120000)
|
|
1956
|
+
await this.waitForTree(30000)
|
|
1949
1957
|
}
|
|
1950
|
-
await this.waitForTree(30000)
|
|
1951
1958
|
} else {
|
|
1952
|
-
this.firstLaunchDone = true
|
|
1953
1959
|
if (wantsClear) {
|
|
1954
1960
|
await this.resetGuestAppData({
|
|
1955
1961
|
launchArguments: hasLaunchArguments ? launchArguments : null,
|
|
@@ -297,6 +297,14 @@ export const DECLARED_OUTBOUND_CALLS: Record<string, OutboundCallDeclaration> =
|
|
|
297
297
|
category: 'same_origin_runtime',
|
|
298
298
|
count: 1,
|
|
299
299
|
},
|
|
300
|
+
// the tenant build's built-in app chunk prefetch list and the chunk bodies
|
|
301
|
+
// it names, resolved against the worker chunk's own url.
|
|
302
|
+
'packages/sootsim-engine/src/render-worker/app-in-worker.tsx :: fetch :: listUrl': {
|
|
303
|
+
category: 'same_origin_runtime',
|
|
304
|
+
count: 1,
|
|
305
|
+
},
|
|
306
|
+
'packages/sootsim-engine/src/render-worker/app-in-worker.tsx :: fetch :: new URL(file, listUrl)':
|
|
307
|
+
{ category: 'same_origin_runtime', count: 1 },
|
|
300
308
|
'packages/sootsim-engine/src/render-worker/host.ts :: fetch :: msg.fallbackUrl': {
|
|
301
309
|
category: 'guest_app_network',
|
|
302
310
|
count: 1,
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.413 | (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.413 | (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.413 | (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.413 | (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.413 | (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.413 | (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.413 | (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;
|
|
@@ -33,7 +33,7 @@ __export(backend_origin_exports, {
|
|
|
33
33
|
});
|
|
34
34
|
module.exports = __toCommonJS(backend_origin_exports);
|
|
35
35
|
var DEFAULT_CONTRAST_BACKEND_ORIGIN = "https://contrast.dev";
|
|
36
|
-
var LOOPBACK_PROBE_HOSTNAMES = ["
|
|
36
|
+
var LOOPBACK_PROBE_HOSTNAMES = ["127.0.0.1", "::1"];
|
|
37
37
|
function normalizeHostname(hostname) {
|
|
38
38
|
return hostname.replace(/^\[|\]$/g, "").toLowerCase();
|
|
39
39
|
}
|
package/dist-lib/beta.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.413 | (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/beta.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.413 | (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.413 | (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.413 | (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.413 | (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.413 | (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.413 | (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/config.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.413 | (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.413 | (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.413 | (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;
|
|
@@ -30,7 +30,7 @@ __export(dev_bundle_resolution_exports, {
|
|
|
30
30
|
module.exports = __toCommonJS(dev_bundle_resolution_exports);
|
|
31
31
|
|
|
32
32
|
// src/backend-origin.ts
|
|
33
|
-
var LOOPBACK_PROBE_HOSTNAMES = ["
|
|
33
|
+
var LOOPBACK_PROBE_HOSTNAMES = ["127.0.0.1", "::1"];
|
|
34
34
|
function normalizeHostname(hostname) {
|
|
35
35
|
return hostname.replace(/^\[|\]$/g, "").toLowerCase();
|
|
36
36
|
}
|
package/dist-lib/home-paths.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.413 | (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.413 | (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;
|
|
@@ -117,7 +117,7 @@ var import_node_fs2 = require("node:fs");
|
|
|
117
117
|
var import_node_path3 = require("node:path");
|
|
118
118
|
|
|
119
119
|
// src/backend-origin.ts
|
|
120
|
-
var LOOPBACK_PROBE_HOSTNAMES = ["
|
|
120
|
+
var LOOPBACK_PROBE_HOSTNAMES = ["127.0.0.1", "::1"];
|
|
121
121
|
function normalizeHostname(hostname) {
|
|
122
122
|
return hostname.replace(/^\[|\]$/g, "").toLowerCase();
|
|
123
123
|
}
|
|
@@ -3643,6 +3643,19 @@ async function handleFetchProxyRequest(req, res) {
|
|
|
3643
3643
|
res.destroy(err instanceof Error ? err : new Error(String(err)));
|
|
3644
3644
|
return;
|
|
3645
3645
|
}
|
|
3646
|
+
const norm = normalizeHostname(upstreamUrl.hostname);
|
|
3647
|
+
if (isLoopbackHost(norm) && err?.code === "ECONNREFUSED") {
|
|
3648
|
+
const altHost = norm === "::1" ? "127.0.0.1" : norm === "127.0.0.1" ? "::1" : "127.0.0.1";
|
|
3649
|
+
if (altHost !== norm) {
|
|
3650
|
+
try {
|
|
3651
|
+
const altUrl = new URL(upstreamUrl.href);
|
|
3652
|
+
altUrl.hostname = altHost;
|
|
3653
|
+
await proxy(altUrl, originalMethod, body, 0);
|
|
3654
|
+
return;
|
|
3655
|
+
} catch {
|
|
3656
|
+
}
|
|
3657
|
+
}
|
|
3658
|
+
}
|
|
3646
3659
|
applyFetchProxyCors(res);
|
|
3647
3660
|
res.writeHead(502, { "Content-Type": "text/plain" });
|
|
3648
3661
|
res.end(`fetch proxy error: ${formatFetchProxyError(upstreamUrl.href, err)}`);
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.413 | (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;
|
|
@@ -295,6 +295,19 @@ async function handleFetchProxyRequest(req, res) {
|
|
|
295
295
|
res.destroy(err instanceof Error ? err : new Error(String(err)));
|
|
296
296
|
return;
|
|
297
297
|
}
|
|
298
|
+
const norm = normalizeHostname(upstreamUrl.hostname);
|
|
299
|
+
if (isLoopbackHost(norm) && err?.code === "ECONNREFUSED") {
|
|
300
|
+
const altHost = norm === "::1" ? "127.0.0.1" : norm === "127.0.0.1" ? "::1" : "127.0.0.1";
|
|
301
|
+
if (altHost !== norm) {
|
|
302
|
+
try {
|
|
303
|
+
const altUrl = new URL(upstreamUrl.href);
|
|
304
|
+
altUrl.hostname = altHost;
|
|
305
|
+
await proxy(altUrl, originalMethod, body, 0);
|
|
306
|
+
return;
|
|
307
|
+
} catch {
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
}
|
|
298
311
|
applyFetchProxyCors(res);
|
|
299
312
|
res.writeHead(502, { "Content-Type": "text/plain" });
|
|
300
313
|
res.end(`fetch proxy error: ${formatFetchProxyError(upstreamUrl.href, err)}`);
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.413 | (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.413 | (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";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.413 | (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.413 | (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.413 | (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.413 | (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.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.413 | (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.413 | (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.413 | (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.413 | (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.413 | (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.413 | (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.413 | (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.413 | (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.413 | (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;
|
|
@@ -56,7 +56,7 @@ var import_node_fs2 = require("node:fs");
|
|
|
56
56
|
var import_node_path3 = require("node:path");
|
|
57
57
|
|
|
58
58
|
// src/backend-origin.ts
|
|
59
|
-
var LOOPBACK_PROBE_HOSTNAMES = ["
|
|
59
|
+
var LOOPBACK_PROBE_HOSTNAMES = ["127.0.0.1", "::1"];
|
|
60
60
|
function normalizeHostname(hostname) {
|
|
61
61
|
return hostname.replace(/^\[|\]$/g, "").toLowerCase();
|
|
62
62
|
}
|
package/dist-lib/sdk.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.413 | (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.413 | (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.413 | (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;
|
|
@@ -14473,7 +14473,7 @@ var LOOPBACK_PROBE_HOSTNAMES;
|
|
|
14473
14473
|
var init_backend_origin = __esm({
|
|
14474
14474
|
"src/backend-origin.ts"() {
|
|
14475
14475
|
"use strict";
|
|
14476
|
-
LOOPBACK_PROBE_HOSTNAMES = ["
|
|
14476
|
+
LOOPBACK_PROBE_HOSTNAMES = ["127.0.0.1", "::1"];
|
|
14477
14477
|
}
|
|
14478
14478
|
});
|
|
14479
14479
|
|
|
@@ -18390,6 +18390,19 @@ async function handleFetchProxyRequest(req, res) {
|
|
|
18390
18390
|
res.destroy(err instanceof Error ? err : new Error(String(err)));
|
|
18391
18391
|
return;
|
|
18392
18392
|
}
|
|
18393
|
+
const norm = normalizeHostname(upstreamUrl.hostname);
|
|
18394
|
+
if (isLoopbackHost(norm) && err?.code === "ECONNREFUSED") {
|
|
18395
|
+
const altHost = norm === "::1" ? "127.0.0.1" : norm === "127.0.0.1" ? "::1" : "127.0.0.1";
|
|
18396
|
+
if (altHost !== norm) {
|
|
18397
|
+
try {
|
|
18398
|
+
const altUrl = new URL(upstreamUrl.href);
|
|
18399
|
+
altUrl.hostname = altHost;
|
|
18400
|
+
await proxy(altUrl, originalMethod, body, 0);
|
|
18401
|
+
return;
|
|
18402
|
+
} catch {
|
|
18403
|
+
}
|
|
18404
|
+
}
|
|
18405
|
+
}
|
|
18393
18406
|
applyFetchProxyCors(res);
|
|
18394
18407
|
res.writeHead(502, { "Content-Type": "text/plain" });
|
|
18395
18408
|
res.end(`fetch proxy error: ${formatFetchProxyError(upstreamUrl.href, err)}`);
|
|
@@ -28779,6 +28792,13 @@ var init_bridge_flow_runner = __esm({
|
|
|
28779
28792
|
throw new Error("extendedWaitUntil timed out");
|
|
28780
28793
|
}
|
|
28781
28794
|
async reloadGuestApp() {
|
|
28795
|
+
const reloaded = await this.bridge.send({
|
|
28796
|
+
type: "call",
|
|
28797
|
+
simId: this.opts.simId,
|
|
28798
|
+
path: "SootSim.bridges.hotRemount.reloadExternalApp",
|
|
28799
|
+
args: []
|
|
28800
|
+
});
|
|
28801
|
+
if (reloaded) return;
|
|
28782
28802
|
await this.evaluate("window.location.reload()").catch(() => {
|
|
28783
28803
|
});
|
|
28784
28804
|
}
|
|
@@ -28842,9 +28862,15 @@ var init_bridge_flow_runner = __esm({
|
|
|
28842
28862
|
}
|
|
28843
28863
|
const wantsClear = !!(opts && typeof opts === "object" && opts.clearState);
|
|
28844
28864
|
const wantsResetRuntime = readBooleanKey(opts, "resetRuntime");
|
|
28845
|
-
if (!this.firstLaunchDone
|
|
28865
|
+
if (!this.firstLaunchDone) {
|
|
28846
28866
|
this.firstLaunchDone = true;
|
|
28847
|
-
if (
|
|
28867
|
+
if (wantsClear) {
|
|
28868
|
+
await this.resetGuestAppData({
|
|
28869
|
+
launchArguments: hasLaunchArguments ? launchArguments : null,
|
|
28870
|
+
initialUrl: null
|
|
28871
|
+
});
|
|
28872
|
+
await this.waitForTree(12e4);
|
|
28873
|
+
} else if (hasLaunchArguments) {
|
|
28848
28874
|
const launched = await this.launchShellAppFromHomeIfNeeded(opts);
|
|
28849
28875
|
if (launched) await this.waitForTree(12e4);
|
|
28850
28876
|
await this.reloadGuestAppRuntime({
|
|
@@ -28852,11 +28878,13 @@ var init_bridge_flow_runner = __esm({
|
|
|
28852
28878
|
initialUrl: null
|
|
28853
28879
|
});
|
|
28854
28880
|
await this.waitForTree(12e4);
|
|
28881
|
+
await this.waitForTree(3e4);
|
|
28855
28882
|
} else if (wantsResetRuntime) {
|
|
28856
28883
|
const launched = await this.launchShellAppFromHomeIfNeeded(opts);
|
|
28857
28884
|
if (launched) await this.waitForTree(12e4);
|
|
28858
28885
|
await this.reloadGuestAppRuntime({});
|
|
28859
28886
|
await this.waitForTree(12e4);
|
|
28887
|
+
await this.waitForTree(3e4);
|
|
28860
28888
|
} else if (this.appStopped) {
|
|
28861
28889
|
await this.launchShellAppFromHomeIfNeeded(opts);
|
|
28862
28890
|
await this.reloadGuestAppRuntime({
|
|
@@ -28864,12 +28892,13 @@ var init_bridge_flow_runner = __esm({
|
|
|
28864
28892
|
initialUrl: null
|
|
28865
28893
|
});
|
|
28866
28894
|
await this.waitForTree(12e4);
|
|
28895
|
+
await this.waitForTree(3e4);
|
|
28867
28896
|
} else {
|
|
28868
28897
|
await this.launchShellAppFromHomeIfNeeded(opts);
|
|
28898
|
+
await this.waitForTree(12e4);
|
|
28899
|
+
await this.waitForTree(3e4);
|
|
28869
28900
|
}
|
|
28870
|
-
await this.waitForTree(3e4);
|
|
28871
28901
|
} else {
|
|
28872
|
-
this.firstLaunchDone = true;
|
|
28873
28902
|
if (wantsClear) {
|
|
28874
28903
|
await this.resetGuestAppData({
|
|
28875
28904
|
launchArguments: hasLaunchArguments ? launchArguments : null,
|
package/dist-lib/vite.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.413 | (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
package/src/backend-origin.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
const DEFAULT_CONTRAST_BACKEND_ORIGIN = 'https://contrast.dev'
|
|
2
2
|
|
|
3
|
-
export const LOOPBACK_PROBE_HOSTNAMES = ['
|
|
3
|
+
export const LOOPBACK_PROBE_HOSTNAMES = ['127.0.0.1', '::1'] as const
|
|
4
4
|
|
|
5
5
|
export function normalizeHostname(hostname: string): string {
|
|
6
6
|
return hostname.replace(/^\[|\]$/g, '').toLowerCase()
|
|
@@ -310,6 +310,19 @@ export async function handleFetchProxyRequest(
|
|
|
310
310
|
res.destroy(err instanceof Error ? err : new Error(String(err)))
|
|
311
311
|
return
|
|
312
312
|
}
|
|
313
|
+
const norm = normalizeHostname(upstreamUrl.hostname)
|
|
314
|
+
if (isLoopbackHost(norm) && (err as { code?: string })?.code === 'ECONNREFUSED') {
|
|
315
|
+
const altHost =
|
|
316
|
+
norm === '::1' ? '127.0.0.1' : norm === '127.0.0.1' ? '::1' : '127.0.0.1'
|
|
317
|
+
if (altHost !== norm) {
|
|
318
|
+
try {
|
|
319
|
+
const altUrl = new URL(upstreamUrl.href)
|
|
320
|
+
altUrl.hostname = altHost
|
|
321
|
+
await proxy(altUrl, originalMethod, body, 0)
|
|
322
|
+
return
|
|
323
|
+
} catch {}
|
|
324
|
+
}
|
|
325
|
+
}
|
|
313
326
|
applyFetchProxyCors(res)
|
|
314
327
|
res.writeHead(502, { 'Content-Type': 'text/plain' })
|
|
315
328
|
res.end(`fetch proxy error: ${formatFetchProxyError(upstreamUrl.href, err)}`)
|