rnxsim 0.1.313 → 0.1.314
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/LICENSE +11 -10
- package/README.md +5 -0
- package/cli/app-config.ts +65 -0
- package/cli/app-fonts.ts +408 -0
- package/cli/app-project.ts +231 -0
- package/cli/app-splash.ts +185 -0
- package/cli/app-state-reset.ts +24 -0
- package/cli/auth.ts +155 -0
- package/cli/bin.ts +594 -0
- package/cli/bridge-diagnostics.ts +226 -0
- package/cli/bridge-flow-runner.ts +2830 -0
- package/cli/browser-evals.ts +96 -0
- package/cli/commands/agent-wrapper.ts +986 -0
- package/cli/commands/agent.ts +423 -0
- package/cli/commands/app-fonts.ts +98 -0
- package/cli/commands/assert.ts +541 -0
- package/cli/commands/auth.ts +59 -0
- package/cli/commands/camera.ts +266 -0
- package/cli/commands/cleanup.ts +169 -0
- package/cli/commands/compat.ts +87 -0
- package/cli/commands/config.ts +32 -0
- package/cli/commands/control.ts +2142 -0
- package/cli/commands/cpu-profile.ts +269 -0
- package/cli/commands/daemon-mac-app.ts +169 -0
- package/cli/commands/daemon.ts +874 -0
- package/cli/commands/debug.ts +719 -0
- package/cli/commands/desktop.ts +39 -0
- package/cli/commands/detect.ts +197 -0
- package/cli/commands/detox.ts +385 -0
- package/cli/commands/device.ts +133 -0
- package/cli/commands/diagnose.ts +589 -0
- package/cli/commands/electron.ts +95 -0
- package/cli/commands/film.ts +379 -0
- package/cli/commands/flow.ts +1124 -0
- package/cli/commands/inspect/actions.ts +622 -0
- package/cli/commands/inspect/core.ts +2405 -0
- package/cli/commands/inspect/count.ts +17 -0
- package/cli/commands/inspect/describe.ts +192 -0
- package/cli/commands/inspect/env.ts +23 -0
- package/cli/commands/inspect/find.ts +171 -0
- package/cli/commands/inspect/get-layout.ts +39 -0
- package/cli/commands/inspect/keyboard.ts +52 -0
- package/cli/commands/inspect/list.ts +58 -0
- package/cli/commands/inspect/memory.ts +215 -0
- package/cli/commands/inspect/redaction.ts +39 -0
- package/cli/commands/inspect/resolve-target.ts +82 -0
- package/cli/commands/inspect/screens.ts +78 -0
- package/cli/commands/inspect/settle.ts +22 -0
- package/cli/commands/inspect/settling.ts +158 -0
- package/cli/commands/inspect/shared.ts +353 -0
- package/cli/commands/inspect/sleep.ts +14 -0
- package/cli/commands/inspect/tree.ts +32 -0
- package/cli/commands/inspect/url.ts +17 -0
- package/cli/commands/inspect/wait-event.ts +210 -0
- package/cli/commands/inspect/wait-idle.ts +24 -0
- package/cli/commands/inspect/wait-ready.ts +74 -0
- package/cli/commands/inspect/wait-selector.ts +54 -0
- package/cli/commands/inspect/wait.ts +31 -0
- package/cli/commands/inspect.ts +4519 -0
- package/cli/commands/install-desktop.ts +351 -0
- package/cli/commands/login.ts +331 -0
- package/cli/commands/logout.ts +31 -0
- package/cli/commands/maestro-generate.ts +361 -0
- package/cli/commands/maestro.ts +453 -0
- package/cli/commands/mode.ts +57 -0
- package/cli/commands/no-bridge-hint.ts +80 -0
- package/cli/commands/perf.ts +66 -0
- package/cli/commands/permissions.ts +203 -0
- package/cli/commands/profile.ts +108 -0
- package/cli/commands/react.ts +353 -0
- package/cli/commands/record.ts +1434 -0
- package/cli/commands/report-issue.ts +305 -0
- package/cli/commands/reset.ts +85 -0
- package/cli/commands/runtime.ts +351 -0
- package/cli/commands/screenshot-command.ts +106 -0
- package/cli/commands/screenshot-layers.ts +143 -0
- package/cli/commands/screenshot-mode.ts +37 -0
- package/cli/commands/screenshot.ts +488 -0
- package/cli/commands/screenshots-capture.ts +607 -0
- package/cli/commands/screenshots.ts +127 -0
- package/cli/commands/serve.ts +168 -0
- package/cli/commands/setup.ts +545 -0
- package/cli/commands/shell-boolean-mode.ts +81 -0
- package/cli/commands/skills.ts +467 -0
- package/cli/commands/slides.ts +361 -0
- package/cli/commands/state.ts +87 -0
- package/cli/commands/storage.ts +58 -0
- package/cli/commands/telemetry.ts +54 -0
- package/cli/commands/three-mode.ts +763 -0
- package/cli/commands/timeline.ts +122 -0
- package/cli/commands/upgrade.ts +208 -0
- package/cli/commands/upload.ts +1225 -0
- package/cli/commands/version.ts +54 -0
- package/cli/commands/what-happened.ts +327 -0
- package/cli/current-sim.ts +204 -0
- package/cli/desktop-companion.ts +300 -0
- package/cli/drivers/electron.ts +70 -0
- package/cli/drivers/index.ts +20 -0
- package/cli/drivers/playwright-provisioning.ts +180 -0
- package/cli/drivers/playwright.ts +698 -0
- package/cli/drivers/registry.ts +65 -0
- package/cli/drivers/types.ts +102 -0
- package/cli/flow-file.ts +142 -0
- package/cli/flow-live-status.ts +120 -0
- package/cli/flow-session.ts +187 -0
- package/cli/help.ts +80 -0
- package/cli/hidden-runtime-alias.ts +19 -0
- package/cli/hints.ts +216 -0
- package/cli/inspect-notice-state.ts +114 -0
- package/cli/maestro-js.ts +334 -0
- package/cli/open-url.ts +8 -0
- package/cli/parent-pid.ts +204 -0
- package/cli/parse-args.ts +211 -0
- package/cli/prompt.ts +51 -0
- package/cli/recording-access.ts +107 -0
- package/cli/registry.ts +1 -0
- package/cli/resolve-assets.ts +63 -0
- package/cli/run-registry.ts +226 -0
- package/cli/runtime-notes.ts +66 -0
- package/cli/runtime-summary.ts +25 -0
- package/cli/setup-repository.ts +187 -0
- package/cli/telemetry.ts +187 -0
- package/cli/ws-bridge.ts +798 -0
- package/dist-cli/bin.js +5 -5
- package/dist-cli/chunks/{agent-XZ2KTPCU.js → agent-7YBDCYMA.js} +2 -2
- package/dist-cli/chunks/{agent-wrapper-JJYYW2WH.js → agent-wrapper-2GHFBHCR.js} +2 -2
- package/dist-cli/chunks/{app-fonts-IXRNQG6B.js → app-fonts-RSNVPQSU.js} +2 -2
- package/dist-cli/chunks/{assert-54T5SK5F.js → assert-XCMX3XJX.js} +2 -2
- package/dist-cli/chunks/{auth-FI5UDI45.js → auth-B442HRAX.js} +2 -2
- package/dist-cli/chunks/{beta-JV6UKADW.js → beta-XJ55JK3M.js} +2 -2
- package/dist-cli/chunks/camera-UGYSSLIK.js +33 -0
- package/dist-cli/chunks/{chunk-3NV2NCNX.js → chunk-277AEQZX.js} +2 -2
- package/dist-cli/chunks/{chunk-2YR5BGA5.js → chunk-2JNSK774.js} +2 -2
- package/dist-cli/chunks/{chunk-RSZWCKNT.js → chunk-32WOTSTR.js} +3 -3
- package/dist-cli/chunks/{chunk-WEXDAC74.js → chunk-3S753SNQ.js} +2 -2
- package/dist-cli/chunks/{chunk-IJO63TDP.js → chunk-46ZOLOYA.js} +2 -2
- package/dist-cli/chunks/{chunk-WUSWBCWA.js → chunk-5L7ELDQL.js} +8 -9
- package/dist-cli/chunks/{chunk-WF3T4SVI.js → chunk-7OOPFSQS.js} +2 -2
- package/dist-cli/chunks/{chunk-TZFFR3SD.js → chunk-7SV3RPRW.js} +2 -2
- package/dist-cli/chunks/{chunk-WWZIXIRD.js → chunk-7ZC35MOU.js} +1 -1
- package/dist-cli/chunks/chunk-AMG5E6CC.js +9 -0
- package/dist-cli/chunks/{chunk-WINYQ44O.js → chunk-APWNH3A4.js} +1 -1
- package/dist-cli/chunks/chunk-B57XUKY3.js +4 -0
- package/dist-cli/chunks/{chunk-YDGQTMQL.js → chunk-C2NL26TD.js} +1 -1
- package/dist-cli/chunks/{chunk-NMF2ZMZQ.js → chunk-D2FNUWAB.js} +4 -4
- package/dist-cli/chunks/{chunk-YIFT42WN.js → chunk-E5T4XSJ3.js} +2 -2
- package/dist-cli/chunks/{chunk-46EUUFJ5.js → chunk-EAC34EQS.js} +1 -1
- package/dist-cli/chunks/{chunk-OVFJFXUD.js → chunk-EG32ML36.js} +2 -2
- package/dist-cli/chunks/{chunk-5YJCOWCH.js → chunk-FXUAC6D5.js} +1 -1
- package/dist-cli/chunks/chunk-GQSL4USA.js +6 -0
- package/dist-cli/chunks/{chunk-VFCMSYZK.js → chunk-HAXW27SS.js} +2 -2
- package/dist-cli/chunks/{chunk-2D2UPBBR.js → chunk-IZAHPAN6.js} +1 -1
- package/dist-cli/chunks/{chunk-7GN3LVWB.js → chunk-J62KM5TB.js} +2 -2
- package/dist-cli/chunks/{chunk-BTWORNNG.js → chunk-JEMCD5E4.js} +1 -1
- package/dist-cli/chunks/{chunk-DCEMHR2Y.js → chunk-JZS3Q37N.js} +2 -2
- package/dist-cli/chunks/{chunk-D4FFVGI5.js → chunk-KR4JON7D.js} +1 -1
- package/dist-cli/chunks/chunk-KWCYKQIQ.js +4 -0
- package/dist-cli/chunks/{chunk-VNQEB4L7.js → chunk-MCWPL644.js} +2 -2
- package/dist-cli/chunks/chunk-MJYK3N2I.js +4 -0
- package/dist-cli/chunks/{chunk-5TEF3ET3.js → chunk-O6TRIZNS.js} +2 -2
- package/dist-cli/chunks/{chunk-QKDWYITG.js → chunk-P7XL2E73.js} +3 -3
- package/dist-cli/chunks/{chunk-BBULZ7CG.js → chunk-PFQTUKQ4.js} +62 -87
- package/dist-cli/chunks/{chunk-GGRX24GF.js → chunk-PG5RZCTN.js} +2 -2
- package/dist-cli/chunks/{chunk-W6K4EFPH.js → chunk-QGRI2Z4M.js} +2 -2
- package/dist-cli/chunks/{chunk-ZMJD5GEC.js → chunk-QLXXE7GE.js} +1 -1
- package/dist-cli/chunks/{chunk-VZXWHRUZ.js → chunk-QOJJJWJE.js} +89 -133
- package/dist-cli/chunks/{chunk-OZSSI4WN.js → chunk-RWZY5427.js} +2 -2
- package/dist-cli/chunks/{chunk-UC6U3MML.js → chunk-RZKU2K3J.js} +2 -2
- package/dist-cli/chunks/{chunk-IJ5CAZZC.js → chunk-SBV4IK4H.js} +1 -1
- package/dist-cli/chunks/{chunk-DZS6WPUI.js → chunk-SGMVFFMK.js} +1 -1
- package/dist-cli/chunks/{chunk-OHAZNXLK.js → chunk-TAX4UT2N.js} +1 -1
- package/dist-cli/chunks/{chunk-5DHC6KHQ.js → chunk-TUOFAWXT.js} +1 -1
- package/dist-cli/chunks/{chunk-GASE6UBA.js → chunk-UHZLOHGP.js} +1 -1
- package/dist-cli/chunks/{chunk-F5ZRSS3C.js → chunk-VC7V76U3.js} +1 -1
- package/dist-cli/chunks/{chunk-RTN5C5RL.js → chunk-VQVMLW4U.js} +1 -1
- package/dist-cli/chunks/{chunk-WMIIKMGK.js → chunk-VUKKYPZN.js} +2 -2
- package/dist-cli/chunks/{chunk-5TPRP5QT.js → chunk-WGGRJDRE.js} +1 -1
- package/dist-cli/chunks/chunk-X6H76EKP.js +15 -0
- package/dist-cli/chunks/chunk-XLZ5FNRT.js +27 -0
- package/dist-cli/chunks/{chunk-HI5TFJWN.js → chunk-XULEACM4.js} +2 -2
- package/dist-cli/chunks/{chunk-MJRLLB4R.js → chunk-YFSDM7AX.js} +4 -4
- package/dist-cli/chunks/chunk-YWI3UEVX.js +5 -0
- package/dist-cli/chunks/{chunk-XEVZYVIW.js → chunk-ZBSJO4NB.js} +10 -9
- package/dist-cli/chunks/{cleanup-P27PA6JI.js → cleanup-EYLGCA6Z.js} +2 -2
- package/dist-cli/chunks/cli-version-LL2UGIHE.js +4 -0
- package/dist-cli/chunks/{compat-ZD65FED3.js → compat-TLJYHB4E.js} +2 -2
- package/dist-cli/chunks/{config-XMJRNM2A.js → config-4JWUOEXK.js} +2 -2
- package/dist-cli/chunks/{control-KMIQT3QP.js → control-HPAOYF4N.js} +2 -2
- package/dist-cli/chunks/daemon-OYLASXLE.js +4 -0
- package/dist-cli/chunks/{debug-PT4HOP7N.js → debug-4BKXF6KI.js} +5 -5
- package/dist-cli/chunks/{desktop-S3FG72AK.js → desktop-ZQ6ZD2S6.js} +3 -3
- package/dist-cli/chunks/{detox-B3D4IFCN.js → detox-WNPASSS3.js} +2 -2
- package/dist-cli/chunks/{device-XBNDSB2R.js → device-BXLXVG3V.js} +2 -2
- package/dist-cli/chunks/{diagnose-HMQXJE5N.js → diagnose-3QX7W5RW.js} +2 -2
- package/dist-cli/chunks/{disk-cleanup-BLCZ5BSZ.js → disk-cleanup-KSWKI7WB.js} +2 -2
- package/dist-cli/chunks/drivers-EPIEFF7P.js +4 -0
- package/dist-cli/chunks/{film-BJGTBYZB.js → film-GDMR33VO.js} +3 -3
- package/dist-cli/chunks/flow-NKMPBYCJ.js +4 -0
- package/dist-cli/chunks/help-OGCBHOKA.js +4 -0
- package/dist-cli/chunks/{hidden-runtime-alias-ANOYADHM.js → hidden-runtime-alias-S2GTDX3T.js} +2 -2
- package/dist-cli/chunks/home-paths-QRCDLTTV.js +4 -0
- package/dist-cli/chunks/inspect-FUYMOZPY.js +4 -0
- package/dist-cli/chunks/install-desktop-FR6YKW7Y.js +4 -0
- package/dist-cli/chunks/{login-FJ737MWG.js → login-IJAPUZHI.js} +4 -4
- package/dist-cli/chunks/{logout-ZCNMMHMY.js → logout-QMXDFU2X.js} +2 -2
- package/dist-cli/chunks/{maestro-SZTNKLDF.js → maestro-ZXU3YCVX.js} +3 -3
- package/dist-cli/chunks/{maestro-generate-DCFAIZ4H.js → maestro-generate-PYB5QY7K.js} +3 -3
- package/dist-cli/chunks/{mode-GRMQCRXR.js → mode-WGUCL5FZ.js} +2 -2
- package/dist-cli/chunks/{optional-demo-registry-W36EWFFB.js → optional-demo-registry-WH2O6H36.js} +2 -2
- package/dist-cli/chunks/{perf-QYBAAUZG.js → perf-TOD3UFAH.js} +2 -2
- package/dist-cli/chunks/{permissions-3QCQ6VF4.js → permissions-I5BRJGTB.js} +2 -2
- package/dist-cli/chunks/{record-QPPC2S4E.js → record-ZYL2FYSK.js} +3 -3
- package/dist-cli/chunks/{report-issue-7NMFP4HK.js → report-issue-TAI6DYZO.js} +2 -2
- package/dist-cli/chunks/reset-7YGYKQPQ.js +4 -0
- package/dist-cli/chunks/runtime-B4JO6QRI.js +4 -0
- package/dist-cli/chunks/{screenshot-command-67AECJFB.js → screenshot-command-7ANLODZY.js} +7 -7
- package/dist-cli/chunks/{screenshot-layers-ASWBYPJL.js → screenshot-layers-A7FYXSVU.js} +3 -3
- package/dist-cli/chunks/{screenshots-capture-PXA3HFQK.js → screenshots-capture-WT2ZY6CB.js} +2 -2
- package/dist-cli/chunks/serve-TG5WKA4V.js +44 -0
- package/dist-cli/chunks/{setup-7DWPMRSB.js → setup-PCWLD22V.js} +2 -2
- package/dist-cli/chunks/{skills-S3Y22TUA.js → skills-27ZHWCQS.js} +2 -2
- package/dist-cli/chunks/state-ZQVY46ZO.js +14 -0
- package/dist-cli/chunks/{storage-XUIMJWAJ.js → storage-OYC57C4X.js} +6 -6
- package/dist-cli/chunks/store-32HSPZHI.js +4 -0
- package/dist-cli/chunks/telemetry-PBJR7XHR.js +4 -0
- package/dist-cli/chunks/{timeline-TMPLQPSP.js → timeline-RAJJFQT6.js} +2 -2
- package/dist-cli/chunks/{upgrade-7HDSIM7K.js → upgrade-OEFNZRIP.js} +2 -2
- package/dist-cli/chunks/upload-LQJITLKK.js +4 -0
- package/dist-cli/chunks/version-NIXTY6PL.js +6 -0
- package/dist-cli/chunks/{web-DG3WBYD3.js → web-XBUTBVGR.js} +2 -2
- package/dist-cli/chunks/{what-happened-XFVUTZR7.js → what-happened-YNHRFUDX.js} +3 -3
- 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 +20 -0
- 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 +67 -28
- package/dist-lib/host/bridge-host.cjs +140 -12
- 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/websocket-proxy.cjs +1 -1
- package/dist-lib/index.cjs +2815 -40
- 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.cjs +1 -1
- package/dist-lib/profiles.cjs +1 -1
- package/dist-lib/public-brand.cjs +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 +2549 -2061
- package/dist-lib/sdk.mjs +2543 -2061
- package/dist-lib/skills.cjs +480 -280
- package/dist-lib/vite.cjs +1 -1
- package/package.json +8 -2
- package/src/bridge-constants.ts +3 -4
- package/src/bridge-contract.ts +251 -0
- package/src/connect.ts +83 -0
- package/src/disk-cleanup.ts +30 -0
- package/src/home-paths.ts +81 -38
- package/src/host/bridge-host.ts +134 -6
- package/src/index.ts +27 -1
- package/src/sdk.ts +8 -0
- package/src/sim-client.ts +660 -0
- package/dist-cli/chunks/camera-VL73YIKP.js +0 -22
- package/dist-cli/chunks/chunk-4NPPOV2N.js +0 -5
- package/dist-cli/chunks/chunk-FSUYIVJ6.js +0 -9
- package/dist-cli/chunks/chunk-G2WW6L2C.js +0 -23
- package/dist-cli/chunks/chunk-KTHV3RUS.js +0 -26
- package/dist-cli/chunks/chunk-LF2ZVT7O.js +0 -6
- package/dist-cli/chunks/chunk-NFK7T35W.js +0 -4
- package/dist-cli/chunks/chunk-TIVZIMMW.js +0 -4
- package/dist-cli/chunks/cli-version-WWLPBDQ7.js +0 -4
- package/dist-cli/chunks/daemon-G2ME7NLB.js +0 -4
- package/dist-cli/chunks/drivers-LDECZGP2.js +0 -4
- package/dist-cli/chunks/flow-UEQNVTU7.js +0 -4
- package/dist-cli/chunks/help-T5FYSVGB.js +0 -4
- package/dist-cli/chunks/home-paths-GT3LFNOR.js +0 -4
- package/dist-cli/chunks/inspect-ZA6XF5LD.js +0 -4
- package/dist-cli/chunks/install-desktop-TIMUDHPL.js +0 -4
- package/dist-cli/chunks/runtime-XOAXMSTU.js +0 -4
- package/dist-cli/chunks/serve-BI2NBAXG.js +0 -44
- package/dist-cli/chunks/store-JTHEJLAZ.js +0 -4
- package/dist-cli/chunks/telemetry-ZYJGD2DB.js +0 -4
- package/dist-cli/chunks/upload-GMSZPWM6.js +0 -4
- package/dist-cli/chunks/version-HOCHZ37L.js +0 -6
package/dist-lib/home-paths.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.314 | (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;
|
|
@@ -36,11 +36,12 @@ __export(home_paths_exports, {
|
|
|
36
36
|
CONFIG_FILE: () => CONFIG_FILE,
|
|
37
37
|
DAEMON_HEARTBEAT_STALE_MS: () => DAEMON_HEARTBEAT_STALE_MS,
|
|
38
38
|
DAEMON_LOCKFILE: () => DAEMON_LOCKFILE,
|
|
39
|
-
|
|
39
|
+
DEV_BRIDGES_DIR: () => DEV_BRIDGES_DIR,
|
|
40
40
|
SOOTSIM_HOME_ENV: () => SOOTSIM_HOME_ENV,
|
|
41
41
|
activeRuntimeDir: () => activeRuntimeDir,
|
|
42
42
|
activeRuntimeFile: () => activeRuntimeFile,
|
|
43
43
|
cacheDir: () => cacheDir,
|
|
44
|
+
cameraFixturesDir: () => cameraFixturesDir,
|
|
44
45
|
claimDaemonLockfile: () => claimDaemonLockfile,
|
|
45
46
|
configFilePath: () => configFilePath,
|
|
46
47
|
consumeRuntimeUpgradeNotice: () => consumeRuntimeUpgradeNotice,
|
|
@@ -49,6 +50,7 @@ __export(home_paths_exports, {
|
|
|
49
50
|
daemonAppLauncherPath: () => daemonAppLauncherPath,
|
|
50
51
|
daemonLockfilePath: () => daemonLockfilePath,
|
|
51
52
|
devBridgeLockfilePath: () => devBridgeLockfilePath,
|
|
53
|
+
devBridgesDir: () => devBridgesDir,
|
|
52
54
|
electronDir: () => electronDir,
|
|
53
55
|
electronUserDataDir: () => electronUserDataDir,
|
|
54
56
|
electronVersionDir: () => electronVersionDir,
|
|
@@ -60,7 +62,7 @@ __export(home_paths_exports, {
|
|
|
60
62
|
profilesDir: () => profilesDir,
|
|
61
63
|
readActiveRuntime: () => readActiveRuntime,
|
|
62
64
|
readDaemonLockfile: () => readDaemonLockfile,
|
|
63
|
-
|
|
65
|
+
readDevBridgeLockfiles: () => readDevBridgeLockfiles,
|
|
64
66
|
readLiveRuntimeVersions: () => readLiveRuntimeVersions,
|
|
65
67
|
readOrCreateAnonymousId: () => readOrCreateAnonymousId,
|
|
66
68
|
readPrivacyPreferences: () => readPrivacyPreferences,
|
|
@@ -87,7 +89,7 @@ var import_node_path = __toESM(require("node:path"), 1);
|
|
|
87
89
|
var SOOTSIM_HOME_ENV = "SOOTSIM_HOME";
|
|
88
90
|
var ACTIVE_RUNTIME_FILE = "active";
|
|
89
91
|
var DAEMON_LOCKFILE = "daemon.json";
|
|
90
|
-
var
|
|
92
|
+
var DEV_BRIDGES_DIR = "dev-bridges";
|
|
91
93
|
var CONFIG_FILE = "config.json";
|
|
92
94
|
var DAEMON_HEARTBEAT_STALE_MS = 3e4;
|
|
93
95
|
function sootsimHomeDir() {
|
|
@@ -137,6 +139,9 @@ function electronVersionDir(version) {
|
|
|
137
139
|
function profilesDir() {
|
|
138
140
|
return import_node_path.default.join(sootsimHomeDir(), "profiles");
|
|
139
141
|
}
|
|
142
|
+
function cameraFixturesDir() {
|
|
143
|
+
return import_node_path.default.join(sootsimHomeDir(), "camera-fixtures");
|
|
144
|
+
}
|
|
140
145
|
function daemonAppDir() {
|
|
141
146
|
return import_node_path.default.join(sootsimHomeDir(), "daemon-app");
|
|
142
147
|
}
|
|
@@ -152,8 +157,14 @@ function cacheDir() {
|
|
|
152
157
|
function daemonLockfilePath() {
|
|
153
158
|
return import_node_path.default.join(sootsimHomeDir(), DAEMON_LOCKFILE);
|
|
154
159
|
}
|
|
155
|
-
function
|
|
156
|
-
return import_node_path.default.join(sootsimHomeDir(),
|
|
160
|
+
function devBridgesDir() {
|
|
161
|
+
return import_node_path.default.join(sootsimHomeDir(), DEV_BRIDGES_DIR);
|
|
162
|
+
}
|
|
163
|
+
function devBridgeLockfilePath(bridgePort) {
|
|
164
|
+
if (!Number.isInteger(bridgePort) || bridgePort <= 0) {
|
|
165
|
+
throw new Error(`invalid development bridge port: ${bridgePort}`);
|
|
166
|
+
}
|
|
167
|
+
return import_node_path.default.join(devBridgesDir(), `${bridgePort}.json`);
|
|
157
168
|
}
|
|
158
169
|
function configFilePath() {
|
|
159
170
|
return import_node_path.default.join(sootsimHomeDir(), CONFIG_FILE);
|
|
@@ -283,25 +294,47 @@ function readDaemonLockfile() {
|
|
|
283
294
|
return null;
|
|
284
295
|
}
|
|
285
296
|
}
|
|
286
|
-
function
|
|
297
|
+
function parseDevBridgeLockfile(raw) {
|
|
287
298
|
try {
|
|
288
|
-
const
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
const bytesRead = import_node_fs.default.readSync(fd, buf, 0, DAEMON_LOCKFILE_MAX_BYTES, 0);
|
|
292
|
-
const raw = buf.subarray(0, bytesRead).toString("utf8");
|
|
293
|
-
const parsed = JSON.parse(raw);
|
|
294
|
-
if (parsed && parsed.schema === 1 && parsed.source === "vite-dev" && typeof parsed.pid === "number" && typeof parsed.bridgePort === "number" && typeof parsed.runtimePort === "number" && typeof parsed.cwd === "string" && typeof parsed.startedAt === "number" && typeof parsed.heartbeatAt === "number" && (parsed.shellPort === void 0 || typeof parsed.shellPort === "number") && (parsed.servedRuntimes === void 0 || Array.isArray(parsed.servedRuntimes) && parsed.servedRuntimes.every((version) => typeof version === "string"))) {
|
|
295
|
-
return parsed;
|
|
296
|
-
}
|
|
297
|
-
return null;
|
|
298
|
-
} finally {
|
|
299
|
-
import_node_fs.default.closeSync(fd);
|
|
299
|
+
const parsed = JSON.parse(raw);
|
|
300
|
+
if (parsed && parsed.schema === 1 && parsed.source === "vite-dev" && typeof parsed.pid === "number" && typeof parsed.bridgePort === "number" && typeof parsed.runtimePort === "number" && typeof parsed.cwd === "string" && typeof parsed.startedAt === "number" && typeof parsed.heartbeatAt === "number" && (parsed.shellPort === void 0 || typeof parsed.shellPort === "number") && (parsed.servedRuntimes === void 0 || Array.isArray(parsed.servedRuntimes) && parsed.servedRuntimes.every((version) => typeof version === "string"))) {
|
|
301
|
+
return parsed;
|
|
300
302
|
}
|
|
303
|
+
return null;
|
|
301
304
|
} catch {
|
|
302
305
|
return null;
|
|
303
306
|
}
|
|
304
307
|
}
|
|
308
|
+
function readDevBridgeLockfiles() {
|
|
309
|
+
let entries;
|
|
310
|
+
try {
|
|
311
|
+
entries = import_node_fs.default.readdirSync(devBridgesDir(), { withFileTypes: true });
|
|
312
|
+
} catch {
|
|
313
|
+
return [];
|
|
314
|
+
}
|
|
315
|
+
const lockfiles = [];
|
|
316
|
+
for (const entry of entries) {
|
|
317
|
+
if (!entry.isFile() || !/^\d+\.json$/.test(entry.name)) continue;
|
|
318
|
+
try {
|
|
319
|
+
const filePath = import_node_path.default.join(devBridgesDir(), entry.name);
|
|
320
|
+
const fd = import_node_fs.default.openSync(filePath, "r");
|
|
321
|
+
try {
|
|
322
|
+
const buf = Buffer.alloc(DAEMON_LOCKFILE_MAX_BYTES);
|
|
323
|
+
const bytesRead = import_node_fs.default.readSync(fd, buf, 0, DAEMON_LOCKFILE_MAX_BYTES, 0);
|
|
324
|
+
const lockfile = parseDevBridgeLockfile(
|
|
325
|
+
buf.subarray(0, bytesRead).toString("utf8")
|
|
326
|
+
);
|
|
327
|
+
if (lockfile && entry.name === `${lockfile.bridgePort}.json`) {
|
|
328
|
+
lockfiles.push(lockfile);
|
|
329
|
+
}
|
|
330
|
+
} finally {
|
|
331
|
+
import_node_fs.default.closeSync(fd);
|
|
332
|
+
}
|
|
333
|
+
} catch {
|
|
334
|
+
}
|
|
335
|
+
}
|
|
336
|
+
return lockfiles.sort((left, right) => left.bridgePort - right.bridgePort);
|
|
337
|
+
}
|
|
305
338
|
function isDaemonLockfileFresh(lock, now = Date.now()) {
|
|
306
339
|
if (!lock) return false;
|
|
307
340
|
if (now - lock.heartbeatAt > DAEMON_HEARTBEAT_STALE_MS) return false;
|
|
@@ -329,8 +362,8 @@ function readLiveRuntimeVersions() {
|
|
|
329
362
|
if (daemon.activeRuntime) versions.add(daemon.activeRuntime);
|
|
330
363
|
for (const version of daemon.servedRuntimes ?? []) versions.add(version);
|
|
331
364
|
}
|
|
332
|
-
const devBridge
|
|
333
|
-
|
|
365
|
+
for (const devBridge of readDevBridgeLockfiles()) {
|
|
366
|
+
if (!isDevBridgeLockfileFresh(devBridge)) continue;
|
|
334
367
|
for (const version of devBridge.servedRuntimes ?? []) versions.add(version);
|
|
335
368
|
}
|
|
336
369
|
return [...versions].sort();
|
|
@@ -343,11 +376,12 @@ function writeDaemonLockfile(data) {
|
|
|
343
376
|
import_node_fs.default.renameSync(tmp, daemonLockfilePath());
|
|
344
377
|
}
|
|
345
378
|
function writeDevBridgeLockfile(data) {
|
|
346
|
-
|
|
347
|
-
const
|
|
379
|
+
import_node_fs.default.mkdirSync(devBridgesDir(), { recursive: true });
|
|
380
|
+
const lockfilePath = devBridgeLockfilePath(data.bridgePort);
|
|
381
|
+
const tmp = `${lockfilePath}.${data.pid}.tmp`;
|
|
348
382
|
import_node_fs.default.writeFileSync(tmp, `${JSON.stringify(data, null, 2)}
|
|
349
383
|
`, "utf8");
|
|
350
|
-
import_node_fs.default.renameSync(tmp,
|
|
384
|
+
import_node_fs.default.renameSync(tmp, lockfilePath);
|
|
351
385
|
}
|
|
352
386
|
function claimDaemonLockfile(data) {
|
|
353
387
|
ensureSootsimHome();
|
|
@@ -364,9 +398,12 @@ function removeDaemonLockfile() {
|
|
|
364
398
|
} catch {
|
|
365
399
|
}
|
|
366
400
|
}
|
|
367
|
-
function removeDevBridgeLockfile() {
|
|
401
|
+
function removeDevBridgeLockfile(owner) {
|
|
368
402
|
try {
|
|
369
|
-
|
|
403
|
+
const lockfilePath = devBridgeLockfilePath(owner.bridgePort);
|
|
404
|
+
const lockfile = parseDevBridgeLockfile(import_node_fs.default.readFileSync(lockfilePath, "utf8"));
|
|
405
|
+
if (lockfile?.pid !== owner.pid || lockfile.startedAt !== owner.startedAt) return;
|
|
406
|
+
import_node_fs.default.unlinkSync(lockfilePath);
|
|
370
407
|
} catch {
|
|
371
408
|
}
|
|
372
409
|
}
|
|
@@ -376,11 +413,12 @@ function removeDevBridgeLockfile() {
|
|
|
376
413
|
CONFIG_FILE,
|
|
377
414
|
DAEMON_HEARTBEAT_STALE_MS,
|
|
378
415
|
DAEMON_LOCKFILE,
|
|
379
|
-
|
|
416
|
+
DEV_BRIDGES_DIR,
|
|
380
417
|
SOOTSIM_HOME_ENV,
|
|
381
418
|
activeRuntimeDir,
|
|
382
419
|
activeRuntimeFile,
|
|
383
420
|
cacheDir,
|
|
421
|
+
cameraFixturesDir,
|
|
384
422
|
claimDaemonLockfile,
|
|
385
423
|
configFilePath,
|
|
386
424
|
consumeRuntimeUpgradeNotice,
|
|
@@ -389,6 +427,7 @@ function removeDevBridgeLockfile() {
|
|
|
389
427
|
daemonAppLauncherPath,
|
|
390
428
|
daemonLockfilePath,
|
|
391
429
|
devBridgeLockfilePath,
|
|
430
|
+
devBridgesDir,
|
|
392
431
|
electronDir,
|
|
393
432
|
electronUserDataDir,
|
|
394
433
|
electronVersionDir,
|
|
@@ -400,7 +439,7 @@ function removeDevBridgeLockfile() {
|
|
|
400
439
|
profilesDir,
|
|
401
440
|
readActiveRuntime,
|
|
402
441
|
readDaemonLockfile,
|
|
403
|
-
|
|
442
|
+
readDevBridgeLockfiles,
|
|
404
443
|
readLiveRuntimeVersions,
|
|
405
444
|
readOrCreateAnonymousId,
|
|
406
445
|
readPrivacyPreferences,
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.314 | (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;
|
|
@@ -1070,7 +1070,7 @@ var import_node_path4 = __toESM(require("node:path"), 1);
|
|
|
1070
1070
|
var SOOTSIM_HOME_ENV = "SOOTSIM_HOME";
|
|
1071
1071
|
var ACTIVE_RUNTIME_FILE = "active";
|
|
1072
1072
|
var DAEMON_LOCKFILE = "daemon.json";
|
|
1073
|
-
var
|
|
1073
|
+
var DEV_BRIDGES_DIR = "dev-bridges";
|
|
1074
1074
|
var CONFIG_FILE = "config.json";
|
|
1075
1075
|
var DAEMON_HEARTBEAT_STALE_MS = 3e4;
|
|
1076
1076
|
function sootsimHomeDir() {
|
|
@@ -1110,14 +1110,23 @@ function electronUserDataDir() {
|
|
|
1110
1110
|
function profilesDir() {
|
|
1111
1111
|
return import_node_path4.default.join(sootsimHomeDir(), "profiles");
|
|
1112
1112
|
}
|
|
1113
|
+
function cameraFixturesDir() {
|
|
1114
|
+
return import_node_path4.default.join(sootsimHomeDir(), "camera-fixtures");
|
|
1115
|
+
}
|
|
1113
1116
|
function cacheDir() {
|
|
1114
1117
|
return import_node_path4.default.join(sootsimHomeDir(), "cache");
|
|
1115
1118
|
}
|
|
1116
1119
|
function daemonLockfilePath() {
|
|
1117
1120
|
return import_node_path4.default.join(sootsimHomeDir(), DAEMON_LOCKFILE);
|
|
1118
1121
|
}
|
|
1119
|
-
function
|
|
1120
|
-
return import_node_path4.default.join(sootsimHomeDir(),
|
|
1122
|
+
function devBridgesDir() {
|
|
1123
|
+
return import_node_path4.default.join(sootsimHomeDir(), DEV_BRIDGES_DIR);
|
|
1124
|
+
}
|
|
1125
|
+
function devBridgeLockfilePath(bridgePort) {
|
|
1126
|
+
if (!Number.isInteger(bridgePort) || bridgePort <= 0) {
|
|
1127
|
+
throw new Error(`invalid development bridge port: ${bridgePort}`);
|
|
1128
|
+
}
|
|
1129
|
+
return import_node_path4.default.join(devBridgesDir(), `${bridgePort}.json`);
|
|
1121
1130
|
}
|
|
1122
1131
|
function configFilePath() {
|
|
1123
1132
|
return import_node_path4.default.join(sootsimHomeDir(), CONFIG_FILE);
|
|
@@ -1207,6 +1216,17 @@ function readDaemonLockfile() {
|
|
|
1207
1216
|
return null;
|
|
1208
1217
|
}
|
|
1209
1218
|
}
|
|
1219
|
+
function parseDevBridgeLockfile(raw) {
|
|
1220
|
+
try {
|
|
1221
|
+
const parsed = JSON.parse(raw);
|
|
1222
|
+
if (parsed && parsed.schema === 1 && parsed.source === "vite-dev" && typeof parsed.pid === "number" && typeof parsed.bridgePort === "number" && typeof parsed.runtimePort === "number" && typeof parsed.cwd === "string" && typeof parsed.startedAt === "number" && typeof parsed.heartbeatAt === "number" && (parsed.shellPort === void 0 || typeof parsed.shellPort === "number") && (parsed.servedRuntimes === void 0 || Array.isArray(parsed.servedRuntimes) && parsed.servedRuntimes.every((version) => typeof version === "string"))) {
|
|
1223
|
+
return parsed;
|
|
1224
|
+
}
|
|
1225
|
+
return null;
|
|
1226
|
+
} catch {
|
|
1227
|
+
return null;
|
|
1228
|
+
}
|
|
1229
|
+
}
|
|
1210
1230
|
function isDaemonLockfileFresh(lock, now = Date.now()) {
|
|
1211
1231
|
if (!lock) return false;
|
|
1212
1232
|
if (now - lock.heartbeatAt > DAEMON_HEARTBEAT_STALE_MS) return false;
|
|
@@ -1225,11 +1245,12 @@ function writeDaemonLockfile(data) {
|
|
|
1225
1245
|
import_node_fs3.default.renameSync(tmp, daemonLockfilePath());
|
|
1226
1246
|
}
|
|
1227
1247
|
function writeDevBridgeLockfile(data) {
|
|
1228
|
-
|
|
1229
|
-
const
|
|
1248
|
+
import_node_fs3.default.mkdirSync(devBridgesDir(), { recursive: true });
|
|
1249
|
+
const lockfilePath = devBridgeLockfilePath(data.bridgePort);
|
|
1250
|
+
const tmp = `${lockfilePath}.${data.pid}.tmp`;
|
|
1230
1251
|
import_node_fs3.default.writeFileSync(tmp, `${JSON.stringify(data, null, 2)}
|
|
1231
1252
|
`, "utf8");
|
|
1232
|
-
import_node_fs3.default.renameSync(tmp,
|
|
1253
|
+
import_node_fs3.default.renameSync(tmp, lockfilePath);
|
|
1233
1254
|
}
|
|
1234
1255
|
function claimDaemonLockfile(data) {
|
|
1235
1256
|
ensureSootsimHome();
|
|
@@ -1246,9 +1267,12 @@ function removeDaemonLockfile() {
|
|
|
1246
1267
|
} catch {
|
|
1247
1268
|
}
|
|
1248
1269
|
}
|
|
1249
|
-
function removeDevBridgeLockfile() {
|
|
1270
|
+
function removeDevBridgeLockfile(owner) {
|
|
1250
1271
|
try {
|
|
1251
|
-
|
|
1272
|
+
const lockfilePath = devBridgeLockfilePath(owner.bridgePort);
|
|
1273
|
+
const lockfile = parseDevBridgeLockfile(import_node_fs3.default.readFileSync(lockfilePath, "utf8"));
|
|
1274
|
+
if (lockfile?.pid !== owner.pid || lockfile.startedAt !== owner.startedAt) return;
|
|
1275
|
+
import_node_fs3.default.unlinkSync(lockfilePath);
|
|
1252
1276
|
} catch {
|
|
1253
1277
|
}
|
|
1254
1278
|
}
|
|
@@ -3649,7 +3673,14 @@ function handleWebSocketProxyUpgrade(req, socket, head, forwardOrigin = true) {
|
|
|
3649
3673
|
|
|
3650
3674
|
// src/host/bridge-host.ts
|
|
3651
3675
|
var SOOTSIM_CROSS_ORIGIN_EMBEDDER_POLICY = "require-corp";
|
|
3652
|
-
var WRITE_COMMAND_TYPES = /* @__PURE__ */ new Set([
|
|
3676
|
+
var WRITE_COMMAND_TYPES = /* @__PURE__ */ new Set([
|
|
3677
|
+
"tap",
|
|
3678
|
+
"keyboard",
|
|
3679
|
+
"longPress",
|
|
3680
|
+
"perform",
|
|
3681
|
+
"reset",
|
|
3682
|
+
"camera"
|
|
3683
|
+
]);
|
|
3653
3684
|
var FORCE_CLOSE_GRACE_MS = 2e3;
|
|
3654
3685
|
var FORCE_CLOSE_TERMINATE_MS = 1e3;
|
|
3655
3686
|
function shouldAcquireLease(msg) {
|
|
@@ -3682,8 +3713,14 @@ var HTTP_MIME_TYPES = {
|
|
|
3682
3713
|
".woff": "font/woff",
|
|
3683
3714
|
".woff2": "font/woff2",
|
|
3684
3715
|
".map": "application/json",
|
|
3685
|
-
".txt": "text/plain; charset=utf-8"
|
|
3716
|
+
".txt": "text/plain; charset=utf-8",
|
|
3717
|
+
".mp4": "video/mp4",
|
|
3718
|
+
".m4v": "video/mp4",
|
|
3719
|
+
".webm": "video/webm",
|
|
3720
|
+
".mov": "video/quicktime"
|
|
3686
3721
|
};
|
|
3722
|
+
var CAMERA_FIXTURE_ROUTE = "/__camera-fixtures/";
|
|
3723
|
+
var CAMERA_FIXTURE_NAME_RE = /^[A-Za-z0-9][A-Za-z0-9._-]{0,127}$/;
|
|
3687
3724
|
function injectSharedConfigIntoHtml(data, bridgePort, contrastOrigin) {
|
|
3688
3725
|
let payload;
|
|
3689
3726
|
try {
|
|
@@ -4466,6 +4503,89 @@ var SootSimBridgeHost = class _SootSimBridgeHost {
|
|
|
4466
4503
|
});
|
|
4467
4504
|
return this.inflightScan;
|
|
4468
4505
|
}
|
|
4506
|
+
// serves one staged camera fixture. addressed by basename inside
|
|
4507
|
+
// ~/.sootsim/camera-fixtures, never by a caller-supplied path, so there is
|
|
4508
|
+
// no traversal surface to defend: a name that is not a plain basename is
|
|
4509
|
+
// rejected outright. range support is not optional here — chrome asks for
|
|
4510
|
+
// byte ranges on media and cannot seek or loop a fixture without it.
|
|
4511
|
+
handleCameraFixture(name2, req, res) {
|
|
4512
|
+
const method = (req.method || "GET").toUpperCase();
|
|
4513
|
+
const cors = {
|
|
4514
|
+
"Access-Control-Allow-Origin": "*",
|
|
4515
|
+
"Cache-Control": "no-store"
|
|
4516
|
+
};
|
|
4517
|
+
if (method === "OPTIONS") {
|
|
4518
|
+
res.writeHead(204, {
|
|
4519
|
+
...cors,
|
|
4520
|
+
"Access-Control-Allow-Methods": "GET, HEAD, OPTIONS",
|
|
4521
|
+
"Access-Control-Allow-Headers": "range"
|
|
4522
|
+
});
|
|
4523
|
+
res.end();
|
|
4524
|
+
return;
|
|
4525
|
+
}
|
|
4526
|
+
if (method !== "GET" && method !== "HEAD") {
|
|
4527
|
+
res.writeHead(405, cors);
|
|
4528
|
+
res.end();
|
|
4529
|
+
return;
|
|
4530
|
+
}
|
|
4531
|
+
if (!CAMERA_FIXTURE_NAME_RE.test(name2)) {
|
|
4532
|
+
res.writeHead(400, { ...cors, "Content-Type": "text/plain; charset=utf-8" });
|
|
4533
|
+
res.end("bad fixture name");
|
|
4534
|
+
return;
|
|
4535
|
+
}
|
|
4536
|
+
const root = cameraFixturesDir();
|
|
4537
|
+
const filePath = import_path2.default.join(root, name2);
|
|
4538
|
+
let stats;
|
|
4539
|
+
try {
|
|
4540
|
+
stats = import_fs2.default.lstatSync(filePath);
|
|
4541
|
+
} catch {
|
|
4542
|
+
res.writeHead(404, { ...cors, "Content-Type": "text/plain; charset=utf-8" });
|
|
4543
|
+
res.end("not found");
|
|
4544
|
+
return;
|
|
4545
|
+
}
|
|
4546
|
+
if (!stats.isFile()) {
|
|
4547
|
+
res.writeHead(403, { ...cors, "Content-Type": "text/plain; charset=utf-8" });
|
|
4548
|
+
res.end("forbidden");
|
|
4549
|
+
return;
|
|
4550
|
+
}
|
|
4551
|
+
const contentType = HTTP_MIME_TYPES[import_path2.default.extname(filePath).toLowerCase()] || "application/octet-stream";
|
|
4552
|
+
const total = stats.size;
|
|
4553
|
+
const range = /^bytes=(\d*)-(\d*)$/.exec(req.headers.range || "");
|
|
4554
|
+
if (range) {
|
|
4555
|
+
const [, startRaw, endRaw] = range;
|
|
4556
|
+
const start = startRaw ? Number(startRaw) : 0;
|
|
4557
|
+
const end = endRaw ? Math.min(Number(endRaw), total - 1) : total - 1;
|
|
4558
|
+
if (!Number.isFinite(start) || start > end || start >= total) {
|
|
4559
|
+
res.writeHead(416, { ...cors, "Content-Range": `bytes */${total}` });
|
|
4560
|
+
res.end();
|
|
4561
|
+
return;
|
|
4562
|
+
}
|
|
4563
|
+
res.writeHead(206, {
|
|
4564
|
+
...cors,
|
|
4565
|
+
"Content-Type": contentType,
|
|
4566
|
+
"Content-Range": `bytes ${start}-${end}/${total}`,
|
|
4567
|
+
"Accept-Ranges": "bytes",
|
|
4568
|
+
"Content-Length": String(end - start + 1)
|
|
4569
|
+
});
|
|
4570
|
+
if (method === "HEAD") {
|
|
4571
|
+
res.end();
|
|
4572
|
+
return;
|
|
4573
|
+
}
|
|
4574
|
+
import_fs2.default.createReadStream(filePath, { start, end }).pipe(res);
|
|
4575
|
+
return;
|
|
4576
|
+
}
|
|
4577
|
+
res.writeHead(200, {
|
|
4578
|
+
...cors,
|
|
4579
|
+
"Content-Type": contentType,
|
|
4580
|
+
"Accept-Ranges": "bytes",
|
|
4581
|
+
"Content-Length": String(total)
|
|
4582
|
+
});
|
|
4583
|
+
if (method === "HEAD") {
|
|
4584
|
+
res.end();
|
|
4585
|
+
return;
|
|
4586
|
+
}
|
|
4587
|
+
import_fs2.default.createReadStream(filePath).pipe(res);
|
|
4588
|
+
}
|
|
4469
4589
|
handleServerScan(res) {
|
|
4470
4590
|
const sendJson = (body) => {
|
|
4471
4591
|
res.writeHead(200, {
|
|
@@ -4689,6 +4809,10 @@ var SootSimBridgeHost = class _SootSimBridgeHost {
|
|
|
4689
4809
|
res.end("method not allowed");
|
|
4690
4810
|
return;
|
|
4691
4811
|
}
|
|
4812
|
+
if (url.pathname.startsWith(CAMERA_FIXTURE_ROUTE)) {
|
|
4813
|
+
this.handleCameraFixture(url.pathname.slice(CAMERA_FIXTURE_ROUTE.length), req, res);
|
|
4814
|
+
return;
|
|
4815
|
+
}
|
|
4692
4816
|
if (method !== "GET" && method !== "HEAD") {
|
|
4693
4817
|
res.writeHead(405, { Allow: "GET, HEAD" });
|
|
4694
4818
|
res.end("method not allowed");
|
|
@@ -5157,7 +5281,11 @@ var SootSimBridgeHost = class _SootSimBridgeHost {
|
|
|
5157
5281
|
}
|
|
5158
5282
|
if (this.shouldWriteDevLockfile) {
|
|
5159
5283
|
try {
|
|
5160
|
-
removeDevBridgeLockfile(
|
|
5284
|
+
removeDevBridgeLockfile({
|
|
5285
|
+
bridgePort: this.effectivePort,
|
|
5286
|
+
pid: process.pid,
|
|
5287
|
+
startedAt: this.startedAt
|
|
5288
|
+
});
|
|
5161
5289
|
} catch {
|
|
5162
5290
|
}
|
|
5163
5291
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.314 | (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.314 | (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.314 | (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.314 | (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;
|