rnxsim 0.1.363 → 0.1.365
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/outbound-endpoints.ts +2 -6
- package/dist-cli/bin.js +5 -5
- package/dist-cli/chunks/{agent-EN7USQWO.js → agent-BVMNQFKF.js} +2 -2
- package/dist-cli/chunks/{agent-wrapper-4K2P2EBF.js → agent-wrapper-B6YFXGC3.js} +2 -2
- package/dist-cli/chunks/app-fonts-MEI6R6XR.js +4 -0
- package/dist-cli/chunks/{assert-WEQDRDJ2.js → assert-JGHI53HV.js} +2 -2
- package/dist-cli/chunks/{auth-U5GBY5SE.js → auth-STEOXUS7.js} +2 -2
- package/dist-cli/chunks/{beta-WOKLQLOJ.js → beta-HT3FLS5T.js} +2 -2
- package/dist-cli/chunks/{camera-GRMP2HT3.js → camera-ZCLFSLON.js} +2 -2
- package/dist-cli/chunks/{chunk-TIZP26F4.js → chunk-25BTVHK2.js} +2 -2
- package/dist-cli/chunks/{chunk-YFF6YFYJ.js → chunk-2CXHDTQ5.js} +1 -1
- package/dist-cli/chunks/{chunk-TK4ZQQAL.js → chunk-2JFZ5Z7Q.js} +1 -1
- package/dist-cli/chunks/{chunk-QVUS7OHN.js → chunk-2SFMW5K6.js} +1 -1
- package/dist-cli/chunks/{chunk-6BGR523F.js → chunk-4WFN4DFR.js} +2 -2
- package/dist-cli/chunks/{chunk-4QK74NWP.js → chunk-52ES4API.js} +2 -2
- package/dist-cli/chunks/{chunk-FFWDCXTD.js → chunk-5AS7S6HY.js} +2 -2
- package/dist-cli/chunks/{chunk-SIKPB3GL.js → chunk-5VHWQGGF.js} +1 -1
- package/dist-cli/chunks/{chunk-GLYEL265.js → chunk-622E4JET.js} +1 -1
- package/dist-cli/chunks/{chunk-DK764ET6.js → chunk-67ATAITF.js} +2 -2
- package/dist-cli/chunks/{chunk-2AELGO56.js → chunk-6BAF6GFS.js} +1 -1
- package/dist-cli/chunks/{chunk-ZSFETJZV.js → chunk-BGRGP3QR.js} +1 -1
- package/dist-cli/chunks/{chunk-7CT75XQF.js → chunk-CYIE65QN.js} +1 -1
- package/dist-cli/chunks/{chunk-PDGEVGHU.js → chunk-DBJZUCFP.js} +2 -2
- package/dist-cli/chunks/{chunk-KCHXGTYQ.js → chunk-DQFOHIRF.js} +1 -1
- package/dist-cli/chunks/{chunk-MOC4QX3B.js → chunk-EAFKG5R3.js} +2 -2
- package/dist-cli/chunks/{chunk-DFL5AISK.js → chunk-EFL2ASZO.js} +1 -1
- package/dist-cli/chunks/{chunk-GMW6T2K6.js → chunk-EFXNSJ55.js} +2 -2
- package/dist-cli/chunks/{chunk-NUU3SWLR.js → chunk-EVBQDQVY.js} +1 -1
- package/dist-cli/chunks/{chunk-X2ITJOHZ.js → chunk-FHWZPUGC.js} +1 -1
- package/dist-cli/chunks/{chunk-23MIH7SN.js → chunk-FIXRGPUT.js} +1 -1
- package/dist-cli/chunks/{chunk-EAXYIY5U.js → chunk-GK7PGYFH.js} +1 -1
- package/dist-cli/chunks/{chunk-BPYGMBOL.js → chunk-GZEUDDAW.js} +2 -2
- package/dist-cli/chunks/{chunk-WIV5YAQT.js → chunk-HIDS3PYC.js} +2 -2
- package/dist-cli/chunks/{chunk-WYD5DEEU.js → chunk-IWPS3EKJ.js} +2 -2
- package/dist-cli/chunks/{chunk-5N5BWVZK.js → chunk-J66US2OZ.js} +1 -1
- package/dist-cli/chunks/{chunk-MM2XAXTN.js → chunk-JAFF4RAU.js} +1 -1
- package/dist-cli/chunks/{chunk-GKKO7RE2.js → chunk-JRPU5TFI.js} +3 -3
- package/dist-cli/chunks/{chunk-ZSLOAO3P.js → chunk-M5KJCLUW.js} +3 -3
- package/dist-cli/chunks/{chunk-4ZGUXZ6U.js → chunk-MACI34ST.js} +3 -3
- package/dist-cli/chunks/chunk-MCHKBFUL.js +4 -0
- package/dist-cli/chunks/{chunk-42O6RKCS.js → chunk-MR3YPNUI.js} +2 -2
- package/dist-cli/chunks/{chunk-QXBFDUCQ.js → chunk-MRNW4GVL.js} +2 -2
- package/dist-cli/chunks/{chunk-VXN2HAHP.js → chunk-NEH4T67X.js} +2 -2
- package/dist-cli/chunks/{chunk-ZCHCE6WJ.js → chunk-O2ORLK6W.js} +2 -2
- package/dist-cli/chunks/{chunk-KWFRIVXW.js → chunk-O6P4N2JD.js} +2 -2
- package/dist-cli/chunks/{chunk-BWTDQWRB.js → chunk-OSZ5HZSI.js} +2 -2
- package/dist-cli/chunks/{chunk-HJN6LXR5.js → chunk-QIQL7Y5V.js} +2 -2
- package/dist-cli/chunks/{chunk-LV4BJLQU.js → chunk-R4FQZXJC.js} +2 -2
- package/dist-cli/chunks/{chunk-74RRQIWF.js → chunk-RI3NS77J.js} +1 -1
- package/dist-cli/chunks/{chunk-BAPVTWIM.js → chunk-TKCGP3DD.js} +2 -2
- package/dist-cli/chunks/{chunk-S6CNNXSR.js → chunk-TULWPOAY.js} +2 -2
- package/dist-cli/chunks/{chunk-FADHHMJU.js → chunk-UR345KM3.js} +2 -2
- package/dist-cli/chunks/{chunk-IY2WWLFH.js → chunk-W3UIDI3W.js} +2 -2
- package/dist-cli/chunks/{chunk-FNVWTY57.js → chunk-WGNDJARS.js} +1 -1
- package/dist-cli/chunks/{chunk-XYPCBRGY.js → chunk-X5ZOZVHC.js} +1 -1
- package/dist-cli/chunks/{chunk-HGPDQPIG.js → chunk-XKRUNS7A.js} +2 -2
- package/dist-cli/chunks/{chunk-FAWMDCMJ.js → chunk-XPOTXF5Q.js} +2 -2
- package/dist-cli/chunks/{chunk-WPXQ7CNQ.js → chunk-XR4KID25.js} +2 -2
- package/dist-cli/chunks/{chunk-AGUR7LE7.js → chunk-XRO5WQXP.js} +1 -1
- package/dist-cli/chunks/{chunk-YSLE3K2S.js → chunk-XXNPISER.js} +2 -2
- package/dist-cli/chunks/{chunk-PH4W36KI.js → chunk-YE3M3YD4.js} +3 -3
- package/dist-cli/chunks/{chunk-46BMZYP7.js → chunk-ZCP4CRP6.js} +2 -2
- package/dist-cli/chunks/{chunk-KJ5SZIXX.js → chunk-ZGD7GZRI.js} +2 -2
- package/dist-cli/chunks/{chunk-2IVWNQDE.js → chunk-ZGH5U4AJ.js} +2 -2
- package/dist-cli/chunks/{chunk-4CMRJ7UX.js → chunk-ZTWUNK45.js} +2 -2
- package/dist-cli/chunks/{cleanup-ZVQLJLTY.js → cleanup-G4TEYVKY.js} +2 -2
- package/dist-cli/chunks/cli-version-ZM3PVKQ5.js +4 -0
- package/dist-cli/chunks/{compat-7T2VZZDL.js → compat-EZ5NP32J.js} +2 -2
- package/dist-cli/chunks/{config-E7OULENQ.js → config-27M2DGCS.js} +2 -2
- package/dist-cli/chunks/{control-X5O5UXPP.js → control-4QR43FXV.js} +2 -2
- package/dist-cli/chunks/daemon-2U4CJ6AT.js +4 -0
- package/dist-cli/chunks/{debug-LK6GRYHR.js → debug-EXU3D7PC.js} +3 -3
- package/dist-cli/chunks/{desktop-2LAHHUP6.js → desktop-SHHPZAWQ.js} +3 -3
- package/dist-cli/chunks/{detox-7GF6V6E6.js → detox-RQ6FFSBS.js} +2 -2
- package/dist-cli/chunks/{device-G3IF4IRA.js → device-4NI26HG6.js} +2 -2
- package/dist-cli/chunks/{diagnose-6G2RJWVP.js → diagnose-P4SFXH6J.js} +2 -2
- package/dist-cli/chunks/{disk-cleanup-PRAJROKV.js → disk-cleanup-BUAKWYMY.js} +2 -2
- package/dist-cli/chunks/drivers-OVCUPQTM.js +4 -0
- package/dist-cli/chunks/{film-CGVAWXPR.js → film-Y2BAQINB.js} +3 -3
- package/dist-cli/chunks/flow-ELTLKKZ3.js +4 -0
- package/dist-cli/chunks/help-CDEZAG2L.js +4 -0
- package/dist-cli/chunks/{hidden-runtime-alias-FCDWZQM3.js → hidden-runtime-alias-U2MAY2XV.js} +2 -2
- package/dist-cli/chunks/{home-paths-JEUBFYPY.js → home-paths-PAJMZCOS.js} +2 -2
- package/dist-cli/chunks/inspect-VVQRPJLS.js +4 -0
- package/dist-cli/chunks/install-desktop-YXSRKR35.js +4 -0
- package/dist-cli/chunks/{login-HBPZL3QX.js → login-D53XKBEO.js} +2 -2
- package/dist-cli/chunks/{logout-SVBZGGEI.js → logout-HZQKLNUJ.js} +2 -2
- package/dist-cli/chunks/{maestro-445CMWSH.js → maestro-XSS2KX6L.js} +3 -3
- package/dist-cli/chunks/{maestro-generate-4JWKONR2.js → maestro-generate-DNDQX3JQ.js} +3 -3
- package/dist-cli/chunks/{mode-M6GVNTDZ.js → mode-LEVGOKI3.js} +2 -2
- package/dist-cli/chunks/{optional-demo-registry-Q5CATNHD.js → optional-demo-registry-2XZIJNDG.js} +2 -2
- package/dist-cli/chunks/{perf-MBNYDE6X.js → perf-OKMAXDLB.js} +2 -2
- package/dist-cli/chunks/{permissions-HNLQIZJD.js → permissions-VG5TBUTN.js} +2 -2
- package/dist-cli/chunks/privacy-MNRHREME.js +4 -0
- package/dist-cli/chunks/{record-MH3BLHON.js → record-BQYGZOMV.js} +3 -3
- package/dist-cli/chunks/{report-issue-6HQHCFBG.js → report-issue-HCPZESWE.js} +2 -2
- package/dist-cli/chunks/reset-R4E4W4YI.js +4 -0
- package/dist-cli/chunks/runtime-XRQZ7W34.js +4 -0
- package/dist-cli/chunks/{screenshot-command-D6VS6GDA.js → screenshot-command-DWEYPJE7.js} +3 -3
- package/dist-cli/chunks/{screenshot-layers-MC7JHOO2.js → screenshot-layers-5GMBXLO7.js} +2 -2
- package/dist-cli/chunks/{screenshots-capture-PUQTDG5I.js → screenshots-capture-5KCI7IZD.js} +2 -2
- package/dist-cli/chunks/serve-QNKTA2HR.js +56 -0
- package/dist-cli/chunks/setup-RNMM5GO5.js +4 -0
- package/dist-cli/chunks/{skills-IJDXM6IC.js → skills-DOEALD3X.js} +2 -2
- package/dist-cli/chunks/{state-KCBXBFZZ.js → state-3HH2IHIF.js} +2 -2
- package/dist-cli/chunks/{storage-RBYDWRJC.js → storage-E7WUWN3E.js} +2 -2
- package/dist-cli/chunks/store-HUPZUCFG.js +4 -0
- package/dist-cli/chunks/telemetry-IJ53XR2Y.js +4 -0
- package/dist-cli/chunks/{timeline-RPEEEB3A.js → timeline-IKNUGQ2A.js} +2 -2
- package/dist-cli/chunks/{upgrade-TFLWCW3P.js → upgrade-VS3OKXE2.js} +2 -2
- package/dist-cli/chunks/upload-A57NAAHF.js +4 -0
- package/dist-cli/chunks/{version-LHPE2VT4.js → version-F4XHNTBZ.js} +2 -2
- package/dist-cli/chunks/{web-QJ74GCNZ.js → web-F72724QL.js} +2 -2
- package/dist-cli/chunks/welcome-B72RRMBW.js +5 -0
- package/dist-cli/chunks/{what-happened-JXBBC5U7.js → what-happened-APK7YKOV.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 +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.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 +1 -1
- package/dist-lib/home-paths.cjs +1 -1
- package/dist-lib/host/bridge-host.cjs +89 -154
- package/dist-lib/host/fetch-proxy-handler.cjs +36 -3
- 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 +60 -107
- package/dist-lib/host/websocket-proxy.cjs +1 -1
- package/dist-lib/index.cjs +60 -105
- 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 +60 -105
- 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 +126 -189
- package/dist-lib/vite.cjs +59 -104
- package/package.json +1 -1
- package/src/host/bridge-host.ts +2 -50
- package/src/host/fetch-proxy-handler.ts +40 -3
- package/src/host/replacement-module-handler.ts +65 -117
- package/dist-cli/chunks/app-fonts-7B5E7UDM.js +0 -4
- package/dist-cli/chunks/chunk-FQGTATLA.js +0 -4
- package/dist-cli/chunks/cli-version-KAVMACHT.js +0 -4
- package/dist-cli/chunks/daemon-GEDFARBC.js +0 -4
- package/dist-cli/chunks/drivers-4WSF4T4I.js +0 -4
- package/dist-cli/chunks/flow-MEDCS46T.js +0 -4
- package/dist-cli/chunks/help-KOAHGOH4.js +0 -4
- package/dist-cli/chunks/inspect-IU5HFVKF.js +0 -4
- package/dist-cli/chunks/install-desktop-5Q2WB4QO.js +0 -4
- package/dist-cli/chunks/privacy-UL6QT67W.js +0 -4
- package/dist-cli/chunks/reset-GHLOGMF3.js +0 -4
- package/dist-cli/chunks/runtime-JK43NPS6.js +0 -4
- package/dist-cli/chunks/serve-4UDVILST.js +0 -118
- package/dist-cli/chunks/setup-5IHFDPBA.js +0 -4
- package/dist-cli/chunks/store-O2PYGAXL.js +0 -4
- package/dist-cli/chunks/telemetry-B2CPDQID.js +0 -4
- package/dist-cli/chunks/upload-2GJWZG6R.js +0 -4
- package/dist-cli/chunks/welcome-5XJPBRJD.js +0 -5
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.365 | (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.365 | (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.365 | (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.365 | (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.365 | (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.365 | (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.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.365 | (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.365 | (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.365 | (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.365 | (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.365 | (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.365 | (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.365 | (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.365 | (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.365 | (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;
|
|
@@ -3496,7 +3496,7 @@ async function handleFetchProxyRequest(req, res) {
|
|
|
3496
3496
|
const proxyRes = await new Promise((resolve2, reject) => {
|
|
3497
3497
|
const proxyReq = transport.request(
|
|
3498
3498
|
{
|
|
3499
|
-
hostname: targetUrl2.hostname,
|
|
3499
|
+
hostname: normalizeHostname(targetUrl2.hostname),
|
|
3500
3500
|
port: targetUrl2.port || (targetUrl2.protocol === "https:" ? 443 : 80),
|
|
3501
3501
|
path: targetUrl2.pathname + targetUrl2.search,
|
|
3502
3502
|
method,
|
|
@@ -3561,6 +3561,32 @@ async function handleFetchProxyRequest(req, res) {
|
|
|
3561
3561
|
res.end(`fetch proxy error: ${formatFetchProxyError(upstreamUrl.href, err)}`);
|
|
3562
3562
|
}
|
|
3563
3563
|
}
|
|
3564
|
+
async function handleBundleProxyRequest(req, res) {
|
|
3565
|
+
const params = new URLSearchParams((req.url || "").split("?")[1] || "");
|
|
3566
|
+
const target = params.get("url");
|
|
3567
|
+
if (!target) {
|
|
3568
|
+
applyFetchProxyCors(res);
|
|
3569
|
+
res.writeHead(400, { "Content-Type": "text/plain" });
|
|
3570
|
+
res.end("bundle-proxy: missing url query param");
|
|
3571
|
+
return;
|
|
3572
|
+
}
|
|
3573
|
+
let targetUrl;
|
|
3574
|
+
try {
|
|
3575
|
+
targetUrl = new URL(target);
|
|
3576
|
+
} catch {
|
|
3577
|
+
applyFetchProxyCors(res);
|
|
3578
|
+
res.writeHead(400, { "Content-Type": "text/plain" });
|
|
3579
|
+
res.end("bundle-proxy: invalid url");
|
|
3580
|
+
return;
|
|
3581
|
+
}
|
|
3582
|
+
if (!isLoopbackHost(targetUrl.hostname)) {
|
|
3583
|
+
applyFetchProxyCors(res);
|
|
3584
|
+
res.writeHead(403, { "Content-Type": "text/plain" });
|
|
3585
|
+
res.end("bundle-proxy: only loopback targets allowed");
|
|
3586
|
+
return;
|
|
3587
|
+
}
|
|
3588
|
+
await handleFetchProxyRequest(req, res);
|
|
3589
|
+
}
|
|
3564
3590
|
function handleAppApiRequest(req, res) {
|
|
3565
3591
|
const reqUrl = req.url || "";
|
|
3566
3592
|
let targetPath = "";
|
|
@@ -3602,7 +3628,7 @@ function handleAppApiRequest(req, res) {
|
|
|
3602
3628
|
const fwdHeaders = buildAppApiProxyHeaders(req.headers, targetUrl);
|
|
3603
3629
|
const proxyReq = transport.request(
|
|
3604
3630
|
{
|
|
3605
|
-
hostname: targetUrl.hostname,
|
|
3631
|
+
hostname: normalizeHostname(targetUrl.hostname),
|
|
3606
3632
|
port: targetUrl.port || (targetUrl.protocol === "https:" ? 443 : 80),
|
|
3607
3633
|
path: targetUrl.pathname + targetUrl.search,
|
|
3608
3634
|
method: req.method,
|
|
@@ -3687,7 +3713,6 @@ var import_promises5 = __toESM(require("node:fs/promises"), 1);
|
|
|
3687
3713
|
var import_node_path10 = __toESM(require("node:path"), 1);
|
|
3688
3714
|
var import_esbuild = require("esbuild");
|
|
3689
3715
|
var REPLACEMENT_MODULE_ROUTE = "/__sootsim-replacement-module";
|
|
3690
|
-
var REPLACEMENT_RUNTIME_PREFIX = "/__sootsim-replacement-runtime";
|
|
3691
3716
|
function getReplacementLoader(filePath) {
|
|
3692
3717
|
const ext = import_node_path10.default.extname(filePath).toLowerCase();
|
|
3693
3718
|
switch (ext) {
|
|
@@ -3703,88 +3728,6 @@ function getReplacementLoader(filePath) {
|
|
|
3703
3728
|
return null;
|
|
3704
3729
|
}
|
|
3705
3730
|
}
|
|
3706
|
-
function reactRuntimeSource(reactBridgeUrl) {
|
|
3707
|
-
if (reactBridgeUrl) {
|
|
3708
|
-
return `export * from ${JSON.stringify(reactBridgeUrl)};
|
|
3709
|
-
import React from ${JSON.stringify(reactBridgeUrl)};
|
|
3710
|
-
export default React;
|
|
3711
|
-
`;
|
|
3712
|
-
}
|
|
3713
|
-
return `const bridge = globalThis.__sootsim_react_bridge
|
|
3714
|
-
if (!bridge) throw new Error('[rnx] replacement React bridge is not ready')
|
|
3715
|
-
export default bridge.default
|
|
3716
|
-
export const Activity = bridge.Activity
|
|
3717
|
-
export const Children = bridge.Children
|
|
3718
|
-
export const Component = bridge.Component
|
|
3719
|
-
export const Fragment = bridge.Fragment
|
|
3720
|
-
export const Profiler = bridge.Profiler
|
|
3721
|
-
export const PureComponent = bridge.PureComponent
|
|
3722
|
-
export const StrictMode = bridge.StrictMode
|
|
3723
|
-
export const Suspense = bridge.Suspense
|
|
3724
|
-
export const __CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE = bridge.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE
|
|
3725
|
-
export const __COMPILER_RUNTIME = bridge.__COMPILER_RUNTIME
|
|
3726
|
-
export const __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED = bridge.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED
|
|
3727
|
-
export const act = bridge.act
|
|
3728
|
-
export const cache = bridge.cache
|
|
3729
|
-
export const cacheSignal = bridge.cacheSignal
|
|
3730
|
-
export const captureOwnerStack = bridge.captureOwnerStack
|
|
3731
|
-
export const cloneElement = bridge.cloneElement
|
|
3732
|
-
export const createContext = bridge.createContext
|
|
3733
|
-
export const createElement = bridge.createElement
|
|
3734
|
-
export const createRef = bridge.createRef
|
|
3735
|
-
export const forwardRef = bridge.forwardRef
|
|
3736
|
-
export const isValidElement = bridge.isValidElement
|
|
3737
|
-
export const lazy = bridge.lazy
|
|
3738
|
-
export const memo = bridge.memo
|
|
3739
|
-
export const startTransition = bridge.startTransition
|
|
3740
|
-
export const unstable_useCacheRefresh = bridge.unstable_useCacheRefresh
|
|
3741
|
-
export const use = bridge.use
|
|
3742
|
-
export const useActionState = bridge.useActionState
|
|
3743
|
-
export const useCallback = bridge.useCallback
|
|
3744
|
-
export const useContext = bridge.useContext
|
|
3745
|
-
export const useDebugValue = bridge.useDebugValue
|
|
3746
|
-
export const useDeferredValue = bridge.useDeferredValue
|
|
3747
|
-
export const useEffect = bridge.useEffect
|
|
3748
|
-
export const useEffectEvent = bridge.useEffectEvent
|
|
3749
|
-
export const useId = bridge.useId
|
|
3750
|
-
export const useImperativeHandle = bridge.useImperativeHandle
|
|
3751
|
-
export const useInsertionEffect = bridge.useInsertionEffect
|
|
3752
|
-
export const useLayoutEffect = bridge.useLayoutEffect
|
|
3753
|
-
export const useMemo = bridge.useMemo
|
|
3754
|
-
export const useOptimistic = bridge.useOptimistic
|
|
3755
|
-
export const useReducer = bridge.useReducer
|
|
3756
|
-
export const useRef = bridge.useRef
|
|
3757
|
-
export const useState = bridge.useState
|
|
3758
|
-
export const useSyncExternalStore = bridge.useSyncExternalStore
|
|
3759
|
-
export const useTransition = bridge.useTransition
|
|
3760
|
-
export const version = bridge.version
|
|
3761
|
-
`;
|
|
3762
|
-
}
|
|
3763
|
-
function reactNativeRuntimeSource() {
|
|
3764
|
-
return `const rn = globalThis.__sootsim_components__ || {}
|
|
3765
|
-
export default rn
|
|
3766
|
-
export const View = rn.View
|
|
3767
|
-
export const Text = rn.Text
|
|
3768
|
-
export const Image = rn.Image
|
|
3769
|
-
export const ScrollView = rn.ScrollView
|
|
3770
|
-
export const FlatList = rn.FlatList
|
|
3771
|
-
export const Pressable = rn.Pressable
|
|
3772
|
-
export const TouchableOpacity = rn.TouchableOpacity
|
|
3773
|
-
export const TouchableWithoutFeedback = rn.TouchableWithoutFeedback
|
|
3774
|
-
export const TouchableHighlight = rn.TouchableHighlight
|
|
3775
|
-
export const TextInput = rn.TextInput
|
|
3776
|
-
export const ActivityIndicator = rn.ActivityIndicator
|
|
3777
|
-
export const KeyboardAvoidingView = rn.KeyboardAvoidingView
|
|
3778
|
-
export const Button = rn.Button
|
|
3779
|
-
export const Modal = rn.Modal
|
|
3780
|
-
export const Switch = rn.Switch
|
|
3781
|
-
export const StyleSheet = rn.StyleSheet
|
|
3782
|
-
export const Platform = rn.Platform
|
|
3783
|
-
export const Keyboard = rn.Keyboard
|
|
3784
|
-
export const Dimensions = rn.Dimensions
|
|
3785
|
-
export const Appearance = rn.Appearance
|
|
3786
|
-
`;
|
|
3787
|
-
}
|
|
3788
3731
|
function sendJavaScript(req, res, source) {
|
|
3789
3732
|
const origin = req.headers.origin;
|
|
3790
3733
|
let allowedOrigin;
|
|
@@ -3805,7 +3748,7 @@ function isReplacementModuleRequestUrl(rawUrl) {
|
|
|
3805
3748
|
if (!rawUrl) return false;
|
|
3806
3749
|
try {
|
|
3807
3750
|
const pathname = new URL(rawUrl, "http://rnx.local").pathname;
|
|
3808
|
-
return pathname === REPLACEMENT_MODULE_ROUTE
|
|
3751
|
+
return pathname === REPLACEMENT_MODULE_ROUTE;
|
|
3809
3752
|
} catch {
|
|
3810
3753
|
return false;
|
|
3811
3754
|
}
|
|
@@ -3835,14 +3778,6 @@ async function handleReplacementModuleRequest(req, res, options = {}) {
|
|
|
3835
3778
|
return true;
|
|
3836
3779
|
}
|
|
3837
3780
|
}
|
|
3838
|
-
if (url.pathname === `${REPLACEMENT_RUNTIME_PREFIX}/react`) {
|
|
3839
|
-
sendJavaScript(req, res, reactRuntimeSource(options.reactBridgeUrl));
|
|
3840
|
-
return true;
|
|
3841
|
-
}
|
|
3842
|
-
if (url.pathname === `${REPLACEMENT_RUNTIME_PREFIX}/react-native`) {
|
|
3843
|
-
sendJavaScript(req, res, reactNativeRuntimeSource());
|
|
3844
|
-
return true;
|
|
3845
|
-
}
|
|
3846
3781
|
if (url.pathname !== REPLACEMENT_MODULE_ROUTE) return false;
|
|
3847
3782
|
if (options.requestToken && url.searchParams.get("token") !== options.requestToken) {
|
|
3848
3783
|
res.writeHead(403, { "Content-Type": "text/plain; charset=utf-8" });
|
|
@@ -3866,6 +3801,7 @@ async function handleReplacementModuleRequest(req, res, options = {}) {
|
|
|
3866
3801
|
res.end("replacement file path must be absolute");
|
|
3867
3802
|
return true;
|
|
3868
3803
|
}
|
|
3804
|
+
const runtimePackages = new Set(url.searchParams.getAll("runtimePackage"));
|
|
3869
3805
|
let resolvedProjectRoot;
|
|
3870
3806
|
if (options.projectRoot) {
|
|
3871
3807
|
const lexicalProjectRoot = import_node_path10.default.resolve(options.projectRoot);
|
|
@@ -3908,19 +3844,64 @@ async function handleReplacementModuleRequest(req, res, options = {}) {
|
|
|
3908
3844
|
tsconfigRaw: { compilerOptions: { jsx: "react" } },
|
|
3909
3845
|
sourcemap: "inline",
|
|
3910
3846
|
logLevel: "silent",
|
|
3911
|
-
|
|
3847
|
+
plugins: [
|
|
3848
|
+
{
|
|
3849
|
+
name: "sootsim-replacement-runtime",
|
|
3850
|
+
setup(runtimeBuild) {
|
|
3851
|
+
runtimeBuild.onResolve(
|
|
3852
|
+
{
|
|
3853
|
+
filter: /^(react|react-native|react\/jsx-runtime|react\/jsx-dev-runtime)$/
|
|
3854
|
+
},
|
|
3855
|
+
(args) => ({ path: args.path, namespace: "sootsim-replacement-runtime" })
|
|
3856
|
+
);
|
|
3857
|
+
runtimeBuild.onResolve(
|
|
3858
|
+
{ filter: /.*/ },
|
|
3859
|
+
(args) => runtimePackages.has(args.path) ? { path: args.path, namespace: "sootsim-replacement-runtime" } : void 0
|
|
3860
|
+
);
|
|
3861
|
+
runtimeBuild.onLoad(
|
|
3862
|
+
{ filter: /.*/, namespace: "sootsim-replacement-runtime" },
|
|
3863
|
+
(args) => {
|
|
3864
|
+
if (args.path === "react-native") {
|
|
3865
|
+
return {
|
|
3866
|
+
contents: `const bridge = globalThis.__sootsim_components__
|
|
3867
|
+
if (!bridge) throw new Error('[rnx] replacement React Native bridge is not ready')
|
|
3868
|
+
module.exports = bridge`,
|
|
3869
|
+
loader: "js"
|
|
3870
|
+
};
|
|
3871
|
+
}
|
|
3872
|
+
if (args.path === "react") {
|
|
3873
|
+
return {
|
|
3874
|
+
contents: `const bridge = globalThis.__sootsim_react_bridge
|
|
3875
|
+
if (!bridge) throw new Error('[rnx] replacement React bridge is not ready')
|
|
3876
|
+
module.exports = bridge`,
|
|
3877
|
+
loader: "js"
|
|
3878
|
+
};
|
|
3879
|
+
}
|
|
3880
|
+
if (args.path !== "react/jsx-runtime" && args.path !== "react/jsx-dev-runtime") {
|
|
3881
|
+
return {
|
|
3882
|
+
contents: `const packages = globalThis.__sootsim_config_package_modules
|
|
3883
|
+
const bridge = packages?.[${JSON.stringify(args.path)}]
|
|
3884
|
+
if (!bridge) throw new Error(${JSON.stringify(`[rnx] replacement package bridge ${args.path} is not ready`)})
|
|
3885
|
+
module.exports = bridge`,
|
|
3886
|
+
loader: "js"
|
|
3887
|
+
};
|
|
3888
|
+
}
|
|
3889
|
+
return {
|
|
3890
|
+
contents: `const React = globalThis.__sootsim_react_bridge
|
|
3891
|
+
if (!React) throw new Error('[rnx] replacement React bridge is not ready')
|
|
3892
|
+
exports.Fragment = React.Fragment
|
|
3893
|
+
exports.jsx = (type, props, key) => React.createElement(type, key === undefined ? props : { ...props, key })
|
|
3894
|
+
exports.jsxs = exports.jsx
|
|
3895
|
+
exports.jsxDEV = exports.jsx`,
|
|
3896
|
+
loader: "js"
|
|
3897
|
+
};
|
|
3898
|
+
}
|
|
3899
|
+
);
|
|
3900
|
+
}
|
|
3901
|
+
}
|
|
3902
|
+
]
|
|
3912
3903
|
});
|
|
3913
|
-
|
|
3914
|
-
const hasReactBinding = /\bimport\s+(?:\*\s+as\s+React|React(?:\s*,|\s+from)|\{[^}]*\bdefault\s+as\s+React\b)/.test(
|
|
3915
|
-
bundledCode
|
|
3916
|
-
);
|
|
3917
|
-
const reactImport = /\bReact\.(?:createElement|Fragment)\b/.test(bundledCode) && !hasReactBinding ? `import * as React from '${REPLACEMENT_RUNTIME_PREFIX}/react';
|
|
3918
|
-
` : "";
|
|
3919
|
-
const runtimeCode = (reactImport + bundledCode).replace(
|
|
3920
|
-
/from\s*["']react-native["']/g,
|
|
3921
|
-
`from '${REPLACEMENT_RUNTIME_PREFIX}/react-native'`
|
|
3922
|
-
).replace(/from\s*["']react["']/g, `from '${REPLACEMENT_RUNTIME_PREFIX}/react'`);
|
|
3923
|
-
sendJavaScript(req, res, runtimeCode);
|
|
3904
|
+
sendJavaScript(req, res, result.outputFiles[0]?.text ?? "");
|
|
3924
3905
|
} catch (error) {
|
|
3925
3906
|
const message = error instanceof Error ? error.message : String(error);
|
|
3926
3907
|
res.writeHead(500, { "Content-Type": "text/plain; charset=utf-8" });
|
|
@@ -5262,53 +5243,7 @@ var SootSimBridgeHost = class _SootSimBridgeHost {
|
|
|
5262
5243
|
return;
|
|
5263
5244
|
}
|
|
5264
5245
|
if (url.pathname === "/__bundle-proxy") {
|
|
5265
|
-
|
|
5266
|
-
if (!target) {
|
|
5267
|
-
res.writeHead(400, { "Content-Type": "text/plain" });
|
|
5268
|
-
res.end("bundle-proxy: missing url query param");
|
|
5269
|
-
return;
|
|
5270
|
-
}
|
|
5271
|
-
let parsedTarget;
|
|
5272
|
-
try {
|
|
5273
|
-
parsedTarget = new URL(target);
|
|
5274
|
-
} catch {
|
|
5275
|
-
res.writeHead(400, { "Content-Type": "text/plain" });
|
|
5276
|
-
res.end("bundle-proxy: invalid url");
|
|
5277
|
-
return;
|
|
5278
|
-
}
|
|
5279
|
-
if (!isLoopbackHost(parsedTarget.hostname)) {
|
|
5280
|
-
res.writeHead(403, { "Content-Type": "text/plain" });
|
|
5281
|
-
res.end("bundle-proxy: only loopback targets allowed");
|
|
5282
|
-
return;
|
|
5283
|
-
}
|
|
5284
|
-
void (async () => {
|
|
5285
|
-
try {
|
|
5286
|
-
const upstream = await fetch(parsedTarget.toString(), {
|
|
5287
|
-
redirect: "follow"
|
|
5288
|
-
});
|
|
5289
|
-
const headers = {};
|
|
5290
|
-
const ct = upstream.headers.get("content-type");
|
|
5291
|
-
if (ct) headers["Content-Type"] = ct;
|
|
5292
|
-
headers["Cache-Control"] = "no-store";
|
|
5293
|
-
res.writeHead(upstream.status, headers);
|
|
5294
|
-
if (!upstream.body) {
|
|
5295
|
-
res.end();
|
|
5296
|
-
return;
|
|
5297
|
-
}
|
|
5298
|
-
const reader = upstream.body.getReader();
|
|
5299
|
-
while (true) {
|
|
5300
|
-
const { done, value } = await reader.read();
|
|
5301
|
-
if (done) break;
|
|
5302
|
-
res.write(Buffer.from(value));
|
|
5303
|
-
}
|
|
5304
|
-
res.end();
|
|
5305
|
-
} catch (err) {
|
|
5306
|
-
res.writeHead(502, { "Content-Type": "text/plain" });
|
|
5307
|
-
res.end(
|
|
5308
|
-
`bundle-proxy: upstream fetch failed: ${err instanceof Error ? err.message : String(err)}`
|
|
5309
|
-
);
|
|
5310
|
-
}
|
|
5311
|
-
})();
|
|
5246
|
+
void handleBundleProxyRequest(req, res);
|
|
5312
5247
|
return;
|
|
5313
5248
|
}
|
|
5314
5249
|
if (url.pathname === "/__server-scan") {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.365 | (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;
|
|
@@ -35,8 +35,10 @@ __export(fetch_proxy_handler_exports, {
|
|
|
35
35
|
buildAppApiProxyHeaders: () => buildAppApiProxyHeaders,
|
|
36
36
|
buildFetchProxyHeaders: () => buildFetchProxyHeaders,
|
|
37
37
|
handleAppApiRequest: () => handleAppApiRequest,
|
|
38
|
+
handleBundleProxyRequest: () => handleBundleProxyRequest,
|
|
38
39
|
handleFetchProxyRequest: () => handleFetchProxyRequest,
|
|
39
40
|
isAppApiRequestUrl: () => isAppApiRequestUrl,
|
|
41
|
+
isBundleProxyRequestUrl: () => isBundleProxyRequestUrl,
|
|
40
42
|
isFetchProxyRequestUrl: () => isFetchProxyRequestUrl
|
|
41
43
|
});
|
|
42
44
|
module.exports = __toCommonJS(fetch_proxy_handler_exports);
|
|
@@ -171,6 +173,9 @@ function buildAppApiProxyHeaders(reqHeaders, targetUrl) {
|
|
|
171
173
|
function isFetchProxyRequestUrl(rawUrl) {
|
|
172
174
|
return rawUrl?.startsWith("/__fetch-proxy?") || rawUrl?.startsWith("/__proxy?") || false;
|
|
173
175
|
}
|
|
176
|
+
function isBundleProxyRequestUrl(rawUrl) {
|
|
177
|
+
return rawUrl?.startsWith("/__bundle-proxy?") ?? false;
|
|
178
|
+
}
|
|
174
179
|
function isAppApiRequestUrl(rawUrl) {
|
|
175
180
|
if (!rawUrl) return false;
|
|
176
181
|
if (rawUrl.startsWith("/__app-api?")) return true;
|
|
@@ -228,7 +233,7 @@ async function handleFetchProxyRequest(req, res) {
|
|
|
228
233
|
const proxyRes = await new Promise((resolve, reject) => {
|
|
229
234
|
const proxyReq = transport.request(
|
|
230
235
|
{
|
|
231
|
-
hostname: targetUrl2.hostname,
|
|
236
|
+
hostname: normalizeHostname(targetUrl2.hostname),
|
|
232
237
|
port: targetUrl2.port || (targetUrl2.protocol === "https:" ? 443 : 80),
|
|
233
238
|
path: targetUrl2.pathname + targetUrl2.search,
|
|
234
239
|
method,
|
|
@@ -293,6 +298,32 @@ async function handleFetchProxyRequest(req, res) {
|
|
|
293
298
|
res.end(`fetch proxy error: ${formatFetchProxyError(upstreamUrl.href, err)}`);
|
|
294
299
|
}
|
|
295
300
|
}
|
|
301
|
+
async function handleBundleProxyRequest(req, res) {
|
|
302
|
+
const params = new URLSearchParams((req.url || "").split("?")[1] || "");
|
|
303
|
+
const target = params.get("url");
|
|
304
|
+
if (!target) {
|
|
305
|
+
applyFetchProxyCors(res);
|
|
306
|
+
res.writeHead(400, { "Content-Type": "text/plain" });
|
|
307
|
+
res.end("bundle-proxy: missing url query param");
|
|
308
|
+
return;
|
|
309
|
+
}
|
|
310
|
+
let targetUrl;
|
|
311
|
+
try {
|
|
312
|
+
targetUrl = new URL(target);
|
|
313
|
+
} catch {
|
|
314
|
+
applyFetchProxyCors(res);
|
|
315
|
+
res.writeHead(400, { "Content-Type": "text/plain" });
|
|
316
|
+
res.end("bundle-proxy: invalid url");
|
|
317
|
+
return;
|
|
318
|
+
}
|
|
319
|
+
if (!isLoopbackHost(targetUrl.hostname)) {
|
|
320
|
+
applyFetchProxyCors(res);
|
|
321
|
+
res.writeHead(403, { "Content-Type": "text/plain" });
|
|
322
|
+
res.end("bundle-proxy: only loopback targets allowed");
|
|
323
|
+
return;
|
|
324
|
+
}
|
|
325
|
+
await handleFetchProxyRequest(req, res);
|
|
326
|
+
}
|
|
296
327
|
function handleAppApiRequest(req, res) {
|
|
297
328
|
const reqUrl = req.url || "";
|
|
298
329
|
let targetPath = "";
|
|
@@ -334,7 +365,7 @@ function handleAppApiRequest(req, res) {
|
|
|
334
365
|
const fwdHeaders = buildAppApiProxyHeaders(req.headers, targetUrl);
|
|
335
366
|
const proxyReq = transport.request(
|
|
336
367
|
{
|
|
337
|
-
hostname: targetUrl.hostname,
|
|
368
|
+
hostname: normalizeHostname(targetUrl.hostname),
|
|
338
369
|
port: targetUrl.port || (targetUrl.protocol === "https:" ? 443 : 80),
|
|
339
370
|
path: targetUrl.pathname + targetUrl.search,
|
|
340
371
|
method: req.method,
|
|
@@ -367,7 +398,9 @@ function handleAppApiRequest(req, res) {
|
|
|
367
398
|
buildAppApiProxyHeaders,
|
|
368
399
|
buildFetchProxyHeaders,
|
|
369
400
|
handleAppApiRequest,
|
|
401
|
+
handleBundleProxyRequest,
|
|
370
402
|
handleFetchProxyRequest,
|
|
371
403
|
isAppApiRequestUrl,
|
|
404
|
+
isBundleProxyRequestUrl,
|
|
372
405
|
isFetchProxyRequestUrl
|
|
373
406
|
});
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.365 | (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.365 | (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";
|