rnxsim 0.1.345 → 0.1.347
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/README.md +9 -3
- package/cli/commands/welcome.ts +19 -17
- package/cli/outbound-endpoints.ts +1 -1
- package/dist-cli/bin.js +5 -5
- package/dist-cli/chunks/{agent-52G55XTO.js → agent-VVY2A5YV.js} +2 -2
- package/dist-cli/chunks/{agent-wrapper-BOZM43ON.js → agent-wrapper-YBMTZ3KU.js} +2 -2
- package/dist-cli/chunks/{app-fonts-A2L6V5EZ.js → app-fonts-EF7FM3VP.js} +2 -2
- package/dist-cli/chunks/{assert-CJKIP4LN.js → assert-J7N6WGMS.js} +2 -2
- package/dist-cli/chunks/{auth-VHHN3TOB.js → auth-YGX3WVEL.js} +2 -2
- package/dist-cli/chunks/{beta-EBDIGV3E.js → beta-JXYFAOHO.js} +2 -2
- package/dist-cli/chunks/{camera-5F4KKCQ3.js → camera-WIVF3UQ3.js} +2 -2
- package/dist-cli/chunks/{chunk-PLB6UVVX.js → chunk-23WNLQUB.js} +2 -2
- package/dist-cli/chunks/{chunk-KZFJNDH3.js → chunk-24Q4J4U6.js} +1 -1
- package/dist-cli/chunks/chunk-2E5KDIGN.js +14 -0
- package/dist-cli/chunks/{chunk-XJBFJGNT.js → chunk-2PAG4FBP.js} +2 -2
- package/dist-cli/chunks/{chunk-7LGINKM6.js → chunk-2UZ6QQ6S.js} +2 -2
- package/dist-cli/chunks/{chunk-7V4KPZ7O.js → chunk-2W4ME6YI.js} +2 -2
- package/dist-cli/chunks/{chunk-5GXRRUOA.js → chunk-3HBHHU5F.js} +3 -3
- package/dist-cli/chunks/{chunk-E2RGSCHT.js → chunk-3SPBSEVL.js} +1 -1
- package/dist-cli/chunks/{chunk-QNBBKRCA.js → chunk-4KK5IRA6.js} +2 -2
- package/dist-cli/chunks/{chunk-4OKV7T5D.js → chunk-4KOWLH77.js} +2 -2
- package/dist-cli/chunks/{chunk-DPP2M4AJ.js → chunk-4RI6KXVH.js} +1 -1
- package/dist-cli/chunks/{chunk-DHM3JDCK.js → chunk-6CGQWXXT.js} +2 -2
- package/dist-cli/chunks/{chunk-ZMTZ5G5H.js → chunk-7C6XE6AT.js} +2 -2
- package/dist-cli/chunks/{chunk-7YMQRA6L.js → chunk-7D56NCJ3.js} +2 -2
- package/dist-cli/chunks/{chunk-4ZILDTZX.js → chunk-ABBCVE5V.js} +2 -2
- package/dist-cli/chunks/{chunk-JC33TOAF.js → chunk-ANANQDHB.js} +1 -1
- package/dist-cli/chunks/{chunk-BFTDL2GX.js → chunk-BA45ZZKU.js} +2 -2
- package/dist-cli/chunks/{chunk-RB4VFUNM.js → chunk-BAXXUHKV.js} +2 -2
- package/dist-cli/chunks/{chunk-LAQGSSTT.js → chunk-DC4MQAR3.js} +1 -1
- package/dist-cli/chunks/{chunk-KA4PJNTE.js → chunk-DTNRKFSE.js} +2 -2
- package/dist-cli/chunks/{chunk-A2Q76LJV.js → chunk-EEZEVA2C.js} +2 -2
- package/dist-cli/chunks/{chunk-7UIIAHVU.js → chunk-EIIZZ2XK.js} +2 -2
- package/dist-cli/chunks/{chunk-TEU5NGUA.js → chunk-FQ3OHHCY.js} +2 -2
- package/dist-cli/chunks/{chunk-BCQV63BW.js → chunk-HWAGFGV7.js} +3 -3
- package/dist-cli/chunks/{chunk-XXZLK4BY.js → chunk-HY7XOD5E.js} +1 -1
- package/dist-cli/chunks/{chunk-T7SBFG5I.js → chunk-IQWQ6KI7.js} +2 -2
- package/dist-cli/chunks/{chunk-TMRD5MHL.js → chunk-IS2LT6MN.js} +2 -2
- package/dist-cli/chunks/{chunk-NUPRHZQW.js → chunk-JG2TIZ7E.js} +2 -2
- package/dist-cli/chunks/{chunk-YVSUFVVB.js → chunk-JKRVWCTC.js} +1 -1
- package/dist-cli/chunks/{chunk-3DBTS4MC.js → chunk-JP4FCK5J.js} +6 -6
- package/dist-cli/chunks/{chunk-RTDHX6CW.js → chunk-JQTBZERT.js} +2 -2
- package/dist-cli/chunks/{chunk-OPHT4DUO.js → chunk-KYTBJ2QV.js} +1 -1
- package/dist-cli/chunks/{chunk-63ASUHOV.js → chunk-LRRQI4TP.js} +2 -2
- package/dist-cli/chunks/{chunk-RT3DXTDP.js → chunk-LWE2HRS4.js} +2 -2
- package/dist-cli/chunks/{chunk-U5YHXQHH.js → chunk-NJ2JVAGV.js} +2 -2
- package/dist-cli/chunks/{chunk-4BIPA7MD.js → chunk-O7WPHIYQ.js} +1 -1
- package/dist-cli/chunks/{chunk-WPPGU5IK.js → chunk-OG3KGU4V.js} +2 -2
- package/dist-cli/chunks/{chunk-KH777UAO.js → chunk-PCU2CQCI.js} +3 -3
- package/dist-cli/chunks/{chunk-KRZPFXVN.js → chunk-QJYUHYQS.js} +1 -1
- package/dist-cli/chunks/{chunk-HK7YKH6N.js → chunk-QK2U5IW3.js} +2 -2
- package/dist-cli/chunks/{chunk-3N7M5HMJ.js → chunk-SMLCC5EP.js} +1 -1
- package/dist-cli/chunks/{chunk-QNRWPAOA.js → chunk-SNBSRIKO.js} +2 -2
- package/dist-cli/chunks/{chunk-R7ZNRGQN.js → chunk-SYQZTZTR.js} +1 -1
- package/dist-cli/chunks/{chunk-7GO2DSYQ.js → chunk-TAYE2YII.js} +1 -1
- package/dist-cli/chunks/{chunk-EPLVIDPC.js → chunk-U6CJ3EHB.js} +1 -1
- package/dist-cli/chunks/{chunk-GKGXULJK.js → chunk-UM7IG4DE.js} +2 -2
- package/dist-cli/chunks/{chunk-VLBN3KRC.js → chunk-VENH5KLL.js} +1 -1
- package/dist-cli/chunks/{chunk-P2CGGMU2.js → chunk-W4MASUQ7.js} +2 -2
- package/dist-cli/chunks/{chunk-WU72KL6Z.js → chunk-WIYBEKBM.js} +2 -2
- package/dist-cli/chunks/{chunk-LRM2XCEQ.js → chunk-WNZOJDBL.js} +1 -1
- package/dist-cli/chunks/{chunk-UVOEHIGP.js → chunk-XB7DLZNQ.js} +1 -1
- package/dist-cli/chunks/{chunk-PLUWN2V5.js → chunk-XGUCAKZM.js} +1 -1
- package/dist-cli/chunks/{chunk-DGTV3KOW.js → chunk-Z6K6TD7X.js} +1 -1
- package/dist-cli/chunks/{chunk-BHKSCNDC.js → chunk-ZPCQFQEN.js} +1 -1
- package/dist-cli/chunks/{chunk-HXE344V3.js → chunk-ZY44NCRQ.js} +1 -1
- package/dist-cli/chunks/{cleanup-MAVZJXVW.js → cleanup-ZIDQQLEN.js} +2 -2
- package/dist-cli/chunks/cli-version-BEJJXF35.js +4 -0
- package/dist-cli/chunks/{compat-7AURLGCS.js → compat-5PFPTBBK.js} +2 -2
- package/dist-cli/chunks/{config-TN3Y4J5N.js → config-CG73FOTM.js} +2 -2
- package/dist-cli/chunks/{control-EV2ELU5R.js → control-7IYIDOOI.js} +2 -2
- package/dist-cli/chunks/daemon-G6VR7LJI.js +4 -0
- package/dist-cli/chunks/{debug-JICITUB6.js → debug-6AQQXXE3.js} +3 -3
- package/dist-cli/chunks/{desktop-4F5HGLLX.js → desktop-HJE5B4XO.js} +3 -3
- package/dist-cli/chunks/{detox-ZC7NHLJI.js → detox-KUZ7EYOP.js} +2 -2
- package/dist-cli/chunks/{device-V57GHRXX.js → device-O6WI4PQT.js} +2 -2
- package/dist-cli/chunks/{diagnose-FF4IWYXC.js → diagnose-FTCJGH2Q.js} +2 -2
- package/dist-cli/chunks/{disk-cleanup-T277L6ZO.js → disk-cleanup-YAXG52EZ.js} +2 -2
- package/dist-cli/chunks/drivers-6QOL2SON.js +4 -0
- package/dist-cli/chunks/{film-G7ZAPWB7.js → film-KTLKRCJR.js} +3 -3
- package/dist-cli/chunks/flow-6VQN4VNW.js +4 -0
- package/dist-cli/chunks/help-22OURA2E.js +4 -0
- package/dist-cli/chunks/{hidden-runtime-alias-VSJNNSNI.js → hidden-runtime-alias-W375XBOM.js} +2 -2
- package/dist-cli/chunks/{home-paths-75HP3HKA.js → home-paths-CIGRWLDB.js} +2 -2
- package/dist-cli/chunks/inspect-36A2IEJL.js +4 -0
- package/dist-cli/chunks/install-desktop-KOW3XXUF.js +4 -0
- package/dist-cli/chunks/{login-ZSIHGHUK.js → login-AJWLXLPQ.js} +2 -2
- package/dist-cli/chunks/{logout-Q4DXMI2C.js → logout-CEJLZIOI.js} +2 -2
- package/dist-cli/chunks/{maestro-LE5LCRBL.js → maestro-YF4M6M6L.js} +3 -3
- package/dist-cli/chunks/{maestro-generate-D3ZIJCRL.js → maestro-generate-FJWDLMEB.js} +3 -3
- package/dist-cli/chunks/{mode-BWX6MDPJ.js → mode-6BJ523BY.js} +2 -2
- package/dist-cli/chunks/{optional-demo-registry-6CVASL3S.js → optional-demo-registry-5CKCN2TP.js} +2 -2
- package/dist-cli/chunks/{perf-NXQZISN6.js → perf-WE6QTFJU.js} +2 -2
- package/dist-cli/chunks/{permissions-5PD67RRO.js → permissions-OZZZZFPB.js} +2 -2
- package/dist-cli/chunks/privacy-3BERNBUM.js +4 -0
- package/dist-cli/chunks/{record-YJF4KXMR.js → record-QHQS2524.js} +3 -3
- package/dist-cli/chunks/{report-issue-XOL5FQBG.js → report-issue-SEMVVJUH.js} +2 -2
- package/dist-cli/chunks/reset-A5AA5ML6.js +4 -0
- package/dist-cli/chunks/runtime-R26QWA2M.js +4 -0
- package/dist-cli/chunks/{screenshot-command-VRPJXWFS.js → screenshot-command-WW33MAB3.js} +3 -3
- package/dist-cli/chunks/{screenshot-layers-QP4WA2F5.js → screenshot-layers-2GJTEQ4T.js} +2 -2
- package/dist-cli/chunks/{screenshots-capture-O2IBAVSP.js → screenshots-capture-J5HKONCC.js} +2 -2
- package/dist-cli/chunks/{serve-WC6RZNJL.js → serve-FEBNDKUD.js} +2 -2
- package/dist-cli/chunks/{setup-A6BIG3KL.js → setup-NGZWS373.js} +2 -2
- package/dist-cli/chunks/{skills-A7YC6RL5.js → skills-CFCZFEME.js} +2 -2
- package/dist-cli/chunks/{state-IJI5YROJ.js → state-XWRKK7FW.js} +2 -2
- package/dist-cli/chunks/{storage-Z2DBO2PQ.js → storage-C5GNK4XB.js} +2 -2
- package/dist-cli/chunks/store-L3A4CLND.js +4 -0
- package/dist-cli/chunks/telemetry-O67J22QU.js +4 -0
- package/dist-cli/chunks/{timeline-N7V2M6QA.js → timeline-7RA7ZILQ.js} +2 -2
- package/dist-cli/chunks/{upgrade-P2NH3BOR.js → upgrade-ZW6IJ5LX.js} +2 -2
- package/dist-cli/chunks/upload-UKUN6HCD.js +4 -0
- package/dist-cli/chunks/{version-OUHCSCUS.js → version-N3E4OIMM.js} +2 -2
- package/dist-cli/chunks/{web-6NRTF3UV.js → web-UC2SFEBA.js} +2 -2
- package/dist-cli/chunks/welcome-DAZPCMES.js +5 -0
- package/dist-cli/chunks/{what-happened-FUEL3BEF.js → what-happened-VUNKID5W.js} +2 -2
- 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 +13 -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.cjs +1 -1
- package/dist-lib/cli-constants.cjs +1 -1
- package/dist-lib/config.cjs +1 -1
- package/dist-lib/detox/index.cjs +1 -1
- package/dist-lib/dev-bundle-resolution.cjs +26 -10
- package/dist-lib/home-paths.cjs +1 -1
- package/dist-lib/host/bridge-host.cjs +101 -58
- package/dist-lib/host/fetch-proxy-handler.cjs +1 -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-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 +106 -59
- package/dist-lib/sdk.cjs +1 -1
- package/dist-lib/sdk.mjs +1 -1
- package/dist-lib/skills.cjs +127 -72
- package/dist-lib/vite.cjs +1 -1
- package/package.json +1 -1
- package/scripts/dev-server-scanner.ts +101 -47
- package/src/backend-origin.ts +15 -1
- package/src/dev-bundle-resolution.ts +29 -12
- package/dist-cli/chunks/chunk-TOF5TA5X.js +0 -14
- package/dist-cli/chunks/cli-version-2B4KRNML.js +0 -4
- package/dist-cli/chunks/daemon-KKDG5MYR.js +0 -4
- package/dist-cli/chunks/drivers-LCX7S76X.js +0 -4
- package/dist-cli/chunks/flow-ONZGGFGD.js +0 -4
- package/dist-cli/chunks/help-DROVDXJM.js +0 -4
- package/dist-cli/chunks/inspect-MDA7ESGQ.js +0 -4
- package/dist-cli/chunks/install-desktop-EIVZHIFA.js +0 -4
- package/dist-cli/chunks/privacy-H5KNRNIZ.js +0 -4
- package/dist-cli/chunks/reset-5LZN5P5B.js +0 -4
- package/dist-cli/chunks/runtime-U36VWBH3.js +0 -4
- package/dist-cli/chunks/store-BYTCKNIC.js +0 -4
- package/dist-cli/chunks/telemetry-JLHFMD7N.js +0 -4
- package/dist-cli/chunks/upload-Z2WX5DCD.js +0 -4
- package/dist-cli/chunks/welcome-6RS7PEJW.js +0 -5
package/dist-lib/skills.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.347 | (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;
|
|
@@ -9476,6 +9476,27 @@ var init_bridge_constants = __esm({
|
|
|
9476
9476
|
}
|
|
9477
9477
|
});
|
|
9478
9478
|
|
|
9479
|
+
// src/backend-origin.ts
|
|
9480
|
+
function normalizeHostname(hostname) {
|
|
9481
|
+
return hostname.replace(/^\[|\]$/g, "").toLowerCase();
|
|
9482
|
+
}
|
|
9483
|
+
function buildLoopbackProbeBaseUrl(protocol, hostname, port) {
|
|
9484
|
+
const normalizedHostname = normalizeHostname(hostname);
|
|
9485
|
+
const urlHost = normalizedHostname.includes(":") ? `[${normalizedHostname}]` : normalizedHostname;
|
|
9486
|
+
return `${protocol}//${urlHost}:${port}`;
|
|
9487
|
+
}
|
|
9488
|
+
function isLoopbackHost(hostname) {
|
|
9489
|
+
const normalized = normalizeHostname(hostname);
|
|
9490
|
+
return normalized === "localhost" || normalized.endsWith(".localhost") || normalized === "0.0.0.0" || normalized === "::1" || /^127(?:\.\d{1,3}){3}$/.test(normalized);
|
|
9491
|
+
}
|
|
9492
|
+
var LOOPBACK_PROBE_HOSTNAMES;
|
|
9493
|
+
var init_backend_origin = __esm({
|
|
9494
|
+
"src/backend-origin.ts"() {
|
|
9495
|
+
"use strict";
|
|
9496
|
+
LOOPBACK_PROBE_HOSTNAMES = ["::1", "127.0.0.1"];
|
|
9497
|
+
}
|
|
9498
|
+
});
|
|
9499
|
+
|
|
9479
9500
|
// src/config.ts
|
|
9480
9501
|
function hasOwnKeys(value) {
|
|
9481
9502
|
return !!value && Object.keys(value).length > 0;
|
|
@@ -9524,20 +9545,6 @@ var init_config = __esm({
|
|
|
9524
9545
|
}
|
|
9525
9546
|
});
|
|
9526
9547
|
|
|
9527
|
-
// src/backend-origin.ts
|
|
9528
|
-
function normalizeHostname(hostname) {
|
|
9529
|
-
return hostname.replace(/^\[|\]$/g, "").toLowerCase();
|
|
9530
|
-
}
|
|
9531
|
-
function isLoopbackHost(hostname) {
|
|
9532
|
-
const normalized = normalizeHostname(hostname);
|
|
9533
|
-
return normalized === "localhost" || normalized.endsWith(".localhost") || normalized === "0.0.0.0" || normalized === "::1" || /^127(?:\.\d{1,3}){3}$/.test(normalized);
|
|
9534
|
-
}
|
|
9535
|
-
var init_backend_origin = __esm({
|
|
9536
|
-
"src/backend-origin.ts"() {
|
|
9537
|
-
"use strict";
|
|
9538
|
-
}
|
|
9539
|
-
});
|
|
9540
|
-
|
|
9541
9548
|
// src/native-dev-bundle-url.ts
|
|
9542
9549
|
function isAbsoluteHttpUrl(url) {
|
|
9543
9550
|
return /^https?:\/\//i.test(url);
|
|
@@ -10019,27 +10026,36 @@ var init_optional_demo_registry = __esm({
|
|
|
10019
10026
|
});
|
|
10020
10027
|
|
|
10021
10028
|
// scripts/dev-server-scanner.ts
|
|
10022
|
-
function tcpPing(port, timeout = TCP_GATE_MS) {
|
|
10023
|
-
|
|
10024
|
-
|
|
10025
|
-
|
|
10026
|
-
|
|
10027
|
-
|
|
10028
|
-
|
|
10029
|
-
|
|
10030
|
-
|
|
10031
|
-
|
|
10032
|
-
|
|
10033
|
-
|
|
10034
|
-
|
|
10035
|
-
|
|
10036
|
-
|
|
10037
|
-
|
|
10029
|
+
async function tcpPing(port, timeout = TCP_GATE_MS) {
|
|
10030
|
+
try {
|
|
10031
|
+
return await Promise.any(
|
|
10032
|
+
LOOPBACK_PROBE_HOSTNAMES.map(
|
|
10033
|
+
(hostname) => new Promise((resolve7, reject) => {
|
|
10034
|
+
const sock = new import_net.default.Socket();
|
|
10035
|
+
let settled = false;
|
|
10036
|
+
const done = (reachable) => {
|
|
10037
|
+
if (settled) return;
|
|
10038
|
+
settled = true;
|
|
10039
|
+
sock.destroy();
|
|
10040
|
+
if (reachable) resolve7(hostname);
|
|
10041
|
+
else reject(new Error(`unreachable loopback host ${hostname}`));
|
|
10042
|
+
};
|
|
10043
|
+
sock.setTimeout(timeout);
|
|
10044
|
+
sock.once("connect", () => done(true));
|
|
10045
|
+
sock.once("timeout", () => done(false));
|
|
10046
|
+
sock.once("error", () => done(false));
|
|
10047
|
+
sock.connect(port, hostname);
|
|
10048
|
+
})
|
|
10049
|
+
)
|
|
10050
|
+
);
|
|
10051
|
+
} catch {
|
|
10052
|
+
return null;
|
|
10053
|
+
}
|
|
10038
10054
|
}
|
|
10039
|
-
function httpGet(port, path18, method = "GET", timeout = TIMEOUT_MS, headers = {}) {
|
|
10055
|
+
function httpGet(hostname, port, path18, method = "GET", timeout = TIMEOUT_MS, headers = {}) {
|
|
10040
10056
|
return new Promise((resolve7) => {
|
|
10041
10057
|
const req = import_http.default.request(
|
|
10042
|
-
{ hostname
|
|
10058
|
+
{ hostname, port, path: path18, method, timeout, headers },
|
|
10043
10059
|
(res) => {
|
|
10044
10060
|
let body = "";
|
|
10045
10061
|
res.on("data", (c) => body += c.toString());
|
|
@@ -10051,7 +10067,12 @@ function httpGet(port, path18, method = "GET", timeout = TIMEOUT_MS, headers = {
|
|
|
10051
10067
|
})();
|
|
10052
10068
|
res.on(
|
|
10053
10069
|
"end",
|
|
10054
|
-
() => resolve7({
|
|
10070
|
+
() => resolve7({
|
|
10071
|
+
statusCode: res.statusCode || 0,
|
|
10072
|
+
body,
|
|
10073
|
+
contentType,
|
|
10074
|
+
hostname
|
|
10075
|
+
})
|
|
10055
10076
|
);
|
|
10056
10077
|
}
|
|
10057
10078
|
);
|
|
@@ -10191,16 +10212,16 @@ async function resolveProcessCwd(pid) {
|
|
|
10191
10212
|
}
|
|
10192
10213
|
return null;
|
|
10193
10214
|
}
|
|
10194
|
-
function makeResult(port, framework, owner) {
|
|
10215
|
+
function makeResult(hostname, port, framework, owner) {
|
|
10195
10216
|
return {
|
|
10196
10217
|
port,
|
|
10197
10218
|
framework,
|
|
10198
10219
|
bundleUrl: withRuntimeConfig(
|
|
10199
10220
|
port,
|
|
10200
|
-
|
|
10221
|
+
`${buildLoopbackProbeBaseUrl("http:", hostname, port)}/index.bundle?platform=ios&dev=true&hot=true&minify=false`,
|
|
10201
10222
|
owner.cwd
|
|
10202
10223
|
),
|
|
10203
|
-
hmrUrl:
|
|
10224
|
+
hmrUrl: `${buildLoopbackProbeBaseUrl("ws:", hostname, port)}/hot`,
|
|
10204
10225
|
lastSeen: Date.now(),
|
|
10205
10226
|
...owner
|
|
10206
10227
|
};
|
|
@@ -10232,7 +10253,10 @@ function applyManifest(result, manifestRes, buildIconProxyUrl) {
|
|
|
10232
10253
|
if (client.ios?.bundleIdentifier) result.bundleId = client.ios.bundleIdentifier;
|
|
10233
10254
|
if (result.framework === "metro" && client.sdkVersion) result.framework = "expo";
|
|
10234
10255
|
const rawLaunchUrl = manifest?.launchAsset?.url;
|
|
10235
|
-
const launchUrl2 = typeof rawLaunchUrl === "string" ? alignLoopbackBundleUrlWithProbe(
|
|
10256
|
+
const launchUrl2 = typeof rawLaunchUrl === "string" ? alignLoopbackBundleUrlWithProbe(
|
|
10257
|
+
rawLaunchUrl,
|
|
10258
|
+
buildLoopbackProbeBaseUrl("http:", manifestRes.hostname, result.port)
|
|
10259
|
+
) : rawLaunchUrl;
|
|
10236
10260
|
if (launchUrl2 && !result.patched && !isDirectOneBundleUrl(result.bundleUrl)) {
|
|
10237
10261
|
result.bundleUrl = withRuntimeConfig(result.port, launchUrl2, result.cwd);
|
|
10238
10262
|
}
|
|
@@ -10245,11 +10269,11 @@ function applyManifest(result, manifestRes, buildIconProxyUrl) {
|
|
|
10245
10269
|
} else {
|
|
10246
10270
|
const cleanPath = rawIconUrl.replace(/^\.\//, "");
|
|
10247
10271
|
result.iconUrl = buildIconProxyUrl(
|
|
10248
|
-
|
|
10272
|
+
`${buildLoopbackProbeBaseUrl("http:", manifestRes.hostname, result.port)}/assets/${cleanPath}`
|
|
10249
10273
|
);
|
|
10250
10274
|
}
|
|
10251
10275
|
} else {
|
|
10252
|
-
result.iconUrl = rawIconUrl.startsWith("http") ? rawIconUrl :
|
|
10276
|
+
result.iconUrl = rawIconUrl.startsWith("http") ? rawIconUrl : `${buildLoopbackProbeBaseUrl("http:", manifestRes.hostname, result.port)}/assets/${rawIconUrl.replace(/^\.\//, "")}`;
|
|
10253
10277
|
}
|
|
10254
10278
|
}
|
|
10255
10279
|
} catch {
|
|
@@ -10270,35 +10294,48 @@ function enrichWithManifest(result, buildIconProxyUrl) {
|
|
|
10270
10294
|
}
|
|
10271
10295
|
if (!enrichmentInFlight.has(result.port)) {
|
|
10272
10296
|
enrichmentInFlight.add(result.port);
|
|
10273
|
-
|
|
10274
|
-
|
|
10275
|
-
() => enrichmentInFlight.delete(port)
|
|
10297
|
+
void fetchManifestEnrichment(result, buildIconProxyUrl).finally(
|
|
10298
|
+
() => enrichmentInFlight.delete(result.port)
|
|
10276
10299
|
);
|
|
10277
10300
|
}
|
|
10278
10301
|
return result;
|
|
10279
10302
|
}
|
|
10280
|
-
async function fetchManifestEnrichment(
|
|
10281
|
-
const
|
|
10282
|
-
|
|
10283
|
-
|
|
10303
|
+
async function fetchManifestEnrichment(result, buildIconProxyUrl) {
|
|
10304
|
+
const hostname = normalizeHostname(new URL(result.bundleUrl).hostname);
|
|
10305
|
+
const manifestRes = await httpGet(
|
|
10306
|
+
hostname,
|
|
10307
|
+
result.port,
|
|
10308
|
+
"/",
|
|
10309
|
+
"GET",
|
|
10310
|
+
ENRICH_TIMEOUT_MS,
|
|
10311
|
+
{
|
|
10312
|
+
"expo-platform": "ios"
|
|
10313
|
+
}
|
|
10314
|
+
);
|
|
10284
10315
|
if (!manifestRes || manifestRes.statusCode !== 200) return;
|
|
10285
10316
|
const parsed = applyManifest(
|
|
10286
|
-
{
|
|
10317
|
+
{
|
|
10318
|
+
port: result.port,
|
|
10319
|
+
framework: "one",
|
|
10320
|
+
bundleUrl: `${buildLoopbackProbeBaseUrl("http:", hostname, result.port)}/index.bundle`,
|
|
10321
|
+
lastSeen: 0
|
|
10322
|
+
},
|
|
10287
10323
|
manifestRes,
|
|
10288
10324
|
buildIconProxyUrl
|
|
10289
10325
|
);
|
|
10290
10326
|
if (!parsed.projectName && !parsed.iconUrl) return;
|
|
10291
|
-
enrichmentCache.set(port, {
|
|
10327
|
+
enrichmentCache.set(result.port, {
|
|
10292
10328
|
projectName: parsed.projectName,
|
|
10293
10329
|
iconUrl: parsed.iconUrl,
|
|
10294
10330
|
iconPath: parsed.iconPath,
|
|
10295
10331
|
bundleId: parsed.bundleId
|
|
10296
10332
|
});
|
|
10297
|
-
portCache.delete(port);
|
|
10333
|
+
portCache.delete(result.port);
|
|
10298
10334
|
}
|
|
10299
10335
|
async function probePort(port, buildIconProxyUrl, listeningProcess) {
|
|
10300
10336
|
await loadOptionalDemoApps();
|
|
10301
|
-
|
|
10337
|
+
const probeHostname = await tcpPing(port);
|
|
10338
|
+
if (!probeHostname) return null;
|
|
10302
10339
|
const suppliedPid = listeningProcess?.pid;
|
|
10303
10340
|
const ownerPid = suppliedPid && suppliedPid > 0 ? suppliedPid : await resolveListeningPid(port);
|
|
10304
10341
|
const ownerCwd = ownerPid ? await resolveProcessCwd(ownerPid) : null;
|
|
@@ -10308,10 +10345,12 @@ async function probePort(port, buildIconProxyUrl, listeningProcess) {
|
|
|
10308
10345
|
};
|
|
10309
10346
|
const onePath = `/node_modules/one/metro-entry.bundle?platform=ios&dev=true`;
|
|
10310
10347
|
const [sootsimRes, statusRes, manifestRes, expoRes] = await Promise.all([
|
|
10311
|
-
knownNonPatched.has(port) ? Promise.resolve(null) : httpGet(port, "/__soot/"),
|
|
10312
|
-
httpGet(port, "/status"),
|
|
10313
|
-
knownOne.has(port) ? Promise.resolve(null) : httpGet(port, "/", "GET", MANIFEST_TIMEOUT_MS, {
|
|
10314
|
-
|
|
10348
|
+
knownNonPatched.has(port) ? Promise.resolve(null) : httpGet(probeHostname, port, "/__soot/"),
|
|
10349
|
+
httpGet(probeHostname, port, "/status"),
|
|
10350
|
+
knownOne.has(port) ? Promise.resolve(null) : httpGet(probeHostname, port, "/", "GET", MANIFEST_TIMEOUT_MS, {
|
|
10351
|
+
"expo-platform": "ios"
|
|
10352
|
+
}),
|
|
10353
|
+
knownNonExpo.has(port) ? Promise.resolve(null) : httpGet(probeHostname, port, "/_expo/status")
|
|
10315
10354
|
]);
|
|
10316
10355
|
if (expoRes && expoRes.statusCode === 200) {
|
|
10317
10356
|
knownNonExpo.delete(port);
|
|
@@ -10323,7 +10362,7 @@ async function probePort(port, buildIconProxyUrl, listeningProcess) {
|
|
|
10323
10362
|
const manifestClient = manifestParsed?.extra?.expoClient || manifestParsed?.extra || {};
|
|
10324
10363
|
if (manifestParsed && (manifestLaunchUrl || typeof manifestClient.name === "string")) {
|
|
10325
10364
|
knownNonPatched.add(port);
|
|
10326
|
-
const launchUrl2 = manifestLaunchUrl ||
|
|
10365
|
+
const launchUrl2 = manifestLaunchUrl || `${buildLoopbackProbeBaseUrl("http:", probeHostname, port)}/index.bundle?platform=ios&dev=true&hot=true&minify=false`;
|
|
10327
10366
|
const framework = launchUrl2.includes(
|
|
10328
10367
|
"/one/metro-entry.bundle"
|
|
10329
10368
|
) ? "one" : "expo";
|
|
@@ -10332,7 +10371,7 @@ async function probePort(port, buildIconProxyUrl, listeningProcess) {
|
|
|
10332
10371
|
port,
|
|
10333
10372
|
framework,
|
|
10334
10373
|
bundleUrl: withRuntimeConfig(port, launchUrl2, owner.cwd),
|
|
10335
|
-
hmrUrl:
|
|
10374
|
+
hmrUrl: `${buildLoopbackProbeBaseUrl("ws:", probeHostname, port)}/hot`,
|
|
10336
10375
|
lastSeen: Date.now(),
|
|
10337
10376
|
...owner
|
|
10338
10377
|
},
|
|
@@ -10344,7 +10383,12 @@ async function probePort(port, buildIconProxyUrl, listeningProcess) {
|
|
|
10344
10383
|
knownNonPatched.add(port);
|
|
10345
10384
|
return enrichWithManifest(
|
|
10346
10385
|
applyManifest(
|
|
10347
|
-
makeResult(
|
|
10386
|
+
makeResult(
|
|
10387
|
+
probeHostname,
|
|
10388
|
+
port,
|
|
10389
|
+
expoRes && expoRes.statusCode === 200 ? "expo" : "metro",
|
|
10390
|
+
owner
|
|
10391
|
+
),
|
|
10348
10392
|
manifestRes,
|
|
10349
10393
|
buildIconProxyUrl
|
|
10350
10394
|
),
|
|
@@ -10360,10 +10404,10 @@ async function probePort(port, buildIconProxyUrl, listeningProcess) {
|
|
|
10360
10404
|
framework: "one",
|
|
10361
10405
|
bundleUrl: withRuntimeConfig(
|
|
10362
10406
|
port,
|
|
10363
|
-
|
|
10407
|
+
`${buildLoopbackProbeBaseUrl("http:", probeHostname, port)}/__soot/bundle.js`,
|
|
10364
10408
|
owner.cwd
|
|
10365
10409
|
),
|
|
10366
|
-
hmrUrl:
|
|
10410
|
+
hmrUrl: `${buildLoopbackProbeBaseUrl("ws:", probeHostname, port)}/hot`,
|
|
10367
10411
|
lastSeen: Date.now(),
|
|
10368
10412
|
patched: true,
|
|
10369
10413
|
...owner
|
|
@@ -10378,7 +10422,7 @@ async function probePort(port, buildIconProxyUrl, listeningProcess) {
|
|
|
10378
10422
|
if (looksLikeMetroPackager) {
|
|
10379
10423
|
return null;
|
|
10380
10424
|
}
|
|
10381
|
-
const oneRes = await httpGet(port, onePath, "HEAD");
|
|
10425
|
+
const oneRes = await httpGet(probeHostname, port, onePath, "HEAD");
|
|
10382
10426
|
if (oneRes && oneRes.statusCode > 0 && oneRes.statusCode < 400 && /application\/javascript/i.test(oneRes.contentType || "")) {
|
|
10383
10427
|
knownNonPatched.add(port);
|
|
10384
10428
|
knownOne.add(port);
|
|
@@ -10389,10 +10433,10 @@ async function probePort(port, buildIconProxyUrl, listeningProcess) {
|
|
|
10389
10433
|
framework: "one",
|
|
10390
10434
|
bundleUrl: withRuntimeConfig(
|
|
10391
10435
|
port,
|
|
10392
|
-
|
|
10436
|
+
`${buildLoopbackProbeBaseUrl("http:", probeHostname, port)}${onePath}&minify=false`,
|
|
10393
10437
|
owner.cwd
|
|
10394
10438
|
),
|
|
10395
|
-
hmrUrl:
|
|
10439
|
+
hmrUrl: `${buildLoopbackProbeBaseUrl("ws:", probeHostname, port)}/hot`,
|
|
10396
10440
|
lastSeen: Date.now(),
|
|
10397
10441
|
...owner
|
|
10398
10442
|
},
|
|
@@ -10514,6 +10558,7 @@ var init_dev_server_scanner = __esm({
|
|
|
10514
10558
|
import_net = __toESM(require("net"), 1);
|
|
10515
10559
|
import_node_path3 = require("node:path");
|
|
10516
10560
|
import_util = require("util");
|
|
10561
|
+
init_backend_origin();
|
|
10517
10562
|
init_config();
|
|
10518
10563
|
init_native_dev_bundle_url();
|
|
10519
10564
|
init_settings_bundle();
|
|
@@ -16789,15 +16834,8 @@ async function resolvePortViaServerScan(port) {
|
|
|
16789
16834
|
return null;
|
|
16790
16835
|
}
|
|
16791
16836
|
}
|
|
16792
|
-
async function
|
|
16837
|
+
async function probeBaseUrlBundleDirect(baseUrl, port) {
|
|
16793
16838
|
const normalizedBaseUrl = baseUrl.replace(/\/+$/, "");
|
|
16794
|
-
try {
|
|
16795
|
-
if (isLoopbackHost(new URL(normalizedBaseUrl).hostname)) {
|
|
16796
|
-
const viaScan = await resolvePortViaServerScan(port);
|
|
16797
|
-
if (viaScan) return viaScan;
|
|
16798
|
-
}
|
|
16799
|
-
} catch {
|
|
16800
|
-
}
|
|
16801
16839
|
try {
|
|
16802
16840
|
const manifestRes = await fetchDevProbe(`${normalizedBaseUrl}/`, {
|
|
16803
16841
|
headers: { "expo-platform": "ios" }
|
|
@@ -16836,8 +16874,25 @@ async function probeBaseUrlBundle(baseUrl, port) {
|
|
|
16836
16874
|
}
|
|
16837
16875
|
return null;
|
|
16838
16876
|
}
|
|
16877
|
+
async function probeBaseUrlBundle(baseUrl, port) {
|
|
16878
|
+
try {
|
|
16879
|
+
if (isLoopbackHost(new URL(baseUrl).hostname)) {
|
|
16880
|
+
const viaScan = await resolvePortViaServerScan(port);
|
|
16881
|
+
if (viaScan) return viaScan;
|
|
16882
|
+
}
|
|
16883
|
+
} catch {
|
|
16884
|
+
}
|
|
16885
|
+
return probeBaseUrlBundleDirect(baseUrl, port);
|
|
16886
|
+
}
|
|
16839
16887
|
async function probePortBundle(port) {
|
|
16840
|
-
|
|
16888
|
+
const viaScan = await resolvePortViaServerScan(port);
|
|
16889
|
+
if (viaScan) return viaScan;
|
|
16890
|
+
const candidates = await Promise.all(
|
|
16891
|
+
LOOPBACK_PROBE_HOSTNAMES.map(
|
|
16892
|
+
(hostname) => probeBaseUrlBundleDirect(buildLoopbackProbeBaseUrl("http:", hostname, port), port)
|
|
16893
|
+
)
|
|
16894
|
+
);
|
|
16895
|
+
return candidates.find((candidate) => candidate !== null) ?? null;
|
|
16841
16896
|
}
|
|
16842
16897
|
async function resolveConnectionInput(input) {
|
|
16843
16898
|
const trimmed = input.trim();
|
package/dist-lib/vite.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.347 | (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