rnxsim 0.1.368 → 0.1.369
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/commands/box/checkout-plane.ts +4 -0
- package/cli/commands/compat.ts +93 -4
- package/cli/commands/detect.ts +11 -7
- package/dist-cli/bin.js +5 -5
- package/dist-cli/chunks/{agent-GXCQMYV4.js → agent-OUUFWDLF.js} +2 -2
- package/dist-cli/chunks/{agent-wrapper-Y3PQAL6I.js → agent-wrapper-7BE7DR4R.js} +2 -2
- package/dist-cli/chunks/{app-fonts-MDD3W4VN.js → app-fonts-66V7TL26.js} +2 -2
- package/dist-cli/chunks/{assert-BSRQBRH7.js → assert-I3CMRNS7.js} +2 -2
- package/dist-cli/chunks/{auth-SLPHDPCF.js → auth-3FMWUVJH.js} +2 -2
- package/dist-cli/chunks/{beta-R4IZ5SWO.js → beta-BHSKY4K4.js} +2 -2
- package/dist-cli/chunks/{box-2NQYYY3B.js → box-3CVWXVTT.js} +345 -345
- package/dist-cli/chunks/{camera-ER66WWAX.js → camera-MNK73TYV.js} +2 -2
- package/dist-cli/chunks/{chunk-RRALQ4WM.js → chunk-2APXX4RN.js} +2 -2
- package/dist-cli/chunks/{chunk-OZJMWTGA.js → chunk-2PVVIPQS.js} +1 -1
- package/dist-cli/chunks/{chunk-WFAFAGMG.js → chunk-3454VMHD.js} +2 -2
- package/dist-cli/chunks/{chunk-T4ZZ26A2.js → chunk-3NLB5LCN.js} +2 -2
- package/dist-cli/chunks/{chunk-4VA2ISWX.js → chunk-45X3D6CI.js} +1 -1
- package/dist-cli/chunks/{chunk-GFWUIGGY.js → chunk-4G4VCT2M.js} +2 -2
- package/dist-cli/chunks/{chunk-4FLQYRGN.js → chunk-4SCVGBOX.js} +1 -1
- package/dist-cli/chunks/{chunk-SSUPPM6K.js → chunk-5QFJFASW.js} +1 -1
- package/dist-cli/chunks/{chunk-2YK5J2D2.js → chunk-5RWUFIZW.js} +2 -2
- package/dist-cli/chunks/{chunk-ESVUVW3R.js → chunk-6BMM6OCW.js} +2 -2
- package/dist-cli/chunks/{chunk-LAKWOJ5Y.js → chunk-6F3WOWFC.js} +2 -2
- package/dist-cli/chunks/{chunk-3XMEIZEV.js → chunk-A56GQVNF.js} +1 -1
- package/dist-cli/chunks/{chunk-AUPJX4KI.js → chunk-A72MIIJI.js} +1 -1
- package/dist-cli/chunks/{chunk-NPSPWMBO.js → chunk-AJJCYLBC.js} +2 -2
- package/dist-cli/chunks/{chunk-GXHCJRKE.js → chunk-AKJYEX54.js} +2 -2
- package/dist-cli/chunks/{chunk-DJSPNOF6.js → chunk-B5NW4TT3.js} +2 -2
- package/dist-cli/chunks/{chunk-WXRDFUR7.js → chunk-CCI3DZKE.js} +2 -2
- package/dist-cli/chunks/{chunk-57LITN73.js → chunk-COXCR6UU.js} +2 -2
- package/dist-cli/chunks/{chunk-GS5VUDCF.js → chunk-CZ2HCNRK.js} +1 -1
- package/dist-cli/chunks/{chunk-M7COA4BE.js → chunk-D6MGELKZ.js} +1 -1
- package/dist-cli/chunks/{chunk-JFGW75UL.js → chunk-DCPDMF27.js} +2 -2
- package/dist-cli/chunks/{chunk-Q65KH25G.js → chunk-DKSZZABN.js} +1 -1
- package/dist-cli/chunks/{chunk-3MPFC3DS.js → chunk-EKAEEWC2.js} +1 -1
- package/dist-cli/chunks/{chunk-EHA65UVJ.js → chunk-F4OTMARL.js} +2 -2
- package/dist-cli/chunks/{chunk-E6XYIIJK.js → chunk-FBMNYSSW.js} +1 -1
- package/dist-cli/chunks/{chunk-BWJOLJOK.js → chunk-FGGESBWD.js} +2 -2
- package/dist-cli/chunks/{chunk-HKQXGCQT.js → chunk-FHRG772G.js} +1 -1
- package/dist-cli/chunks/{chunk-T2MGLXY5.js → chunk-H2GB2PLY.js} +2 -2
- package/dist-cli/chunks/{chunk-3S2J6IVC.js → chunk-IYPMULI7.js} +2 -2
- package/dist-cli/chunks/{chunk-SHMLYTNH.js → chunk-JH5KE2OI.js} +2 -2
- package/dist-cli/chunks/{chunk-WF2CRNYF.js → chunk-JLOOLA47.js} +1 -1
- package/dist-cli/chunks/{chunk-MGOAQHMO.js → chunk-JXARZBWS.js} +2 -2
- package/dist-cli/chunks/{chunk-NERY6HGZ.js → chunk-LU3AHE6T.js} +2 -2
- package/dist-cli/chunks/{chunk-WVVAYLWZ.js → chunk-MXWME7ET.js} +1 -1
- package/dist-cli/chunks/{chunk-FSPZY4AI.js → chunk-N5KDDGV6.js} +2 -2
- package/dist-cli/chunks/{chunk-UBH2BWCY.js → chunk-NPVEBXU3.js} +2 -2
- package/dist-cli/chunks/{chunk-JHYXRORU.js → chunk-OROUEG22.js} +2 -2
- package/dist-cli/chunks/{chunk-7V3S2DY2.js → chunk-QE5MC4V3.js} +1 -1
- package/dist-cli/chunks/{chunk-YYPTSF6W.js → chunk-ROISJKH3.js} +2 -2
- package/dist-cli/chunks/{chunk-X5MXQB3L.js → chunk-RV76U3EI.js} +2 -2
- package/dist-cli/chunks/{chunk-QKOY7UW5.js → chunk-RYGQ6LZN.js} +2 -2
- package/dist-cli/chunks/{chunk-OXCDE3DD.js → chunk-SSBZA5VZ.js} +1 -1
- package/dist-cli/chunks/{chunk-UXROQPIN.js → chunk-SUHAD6N2.js} +3 -3
- package/dist-cli/chunks/{chunk-ECXDCED5.js → chunk-TAC4CEIX.js} +2 -2
- package/dist-cli/chunks/{chunk-TC6DNQL6.js → chunk-TBK5UXW2.js} +2 -2
- package/dist-cli/chunks/{chunk-42TLK75A.js → chunk-TIB3CTRX.js} +3 -3
- package/dist-cli/chunks/{chunk-TE645QCO.js → chunk-TTUZ5MCK.js} +1 -1
- package/dist-cli/chunks/{chunk-7B22IPSC.js → chunk-UDXQCEJU.js} +2 -2
- package/dist-cli/chunks/{chunk-PNBQBBG5.js → chunk-UQJY6O72.js} +1 -1
- package/dist-cli/chunks/{chunk-MCO7V4VN.js → chunk-USHV3QFZ.js} +2 -2
- package/dist-cli/chunks/{chunk-IXRVFQMT.js → chunk-V7I4CTAX.js} +2 -2
- package/dist-cli/chunks/{chunk-FVODUDPS.js → chunk-VGJLCFSC.js} +1 -1
- package/dist-cli/chunks/{chunk-TPIPKXJL.js → chunk-WGE2P25F.js} +1 -1
- package/dist-cli/chunks/{chunk-CKNNO6ZG.js → chunk-WUR4FXWT.js} +3 -3
- package/dist-cli/chunks/{chunk-QMVBWZH2.js → chunk-X3PEDNLV.js} +2 -2
- package/dist-cli/chunks/{chunk-YSHJ3LMQ.js → chunk-YFZLDFZK.js} +2 -2
- package/dist-cli/chunks/{chunk-FDAFSRQE.js → chunk-YLNSLMQM.js} +2 -2
- package/dist-cli/chunks/{chunk-NGWUGNPV.js → chunk-YPBDPVLR.js} +2 -2
- package/dist-cli/chunks/{chunk-LPAOOJIW.js → chunk-ZEF57HQO.js} +1 -1
- package/dist-cli/chunks/{chunk-WJQB6AXZ.js → chunk-ZNNE5MAV.js} +1 -1
- package/dist-cli/chunks/{chunk-TOE5O6JE.js → chunk-ZW6JXEVX.js} +2 -2
- package/dist-cli/chunks/{cleanup-WHGLBAJ2.js → cleanup-H4XFRMZV.js} +2 -2
- package/dist-cli/chunks/cli-version-MJWLDXBW.js +4 -0
- package/dist-cli/chunks/compat-NKGYERLN.js +23 -0
- package/dist-cli/chunks/{config-TRDOMP4T.js → config-WK7467KI.js} +2 -2
- package/dist-cli/chunks/{connect-N4FV3DDV.js → connect-WWWAVVCF.js} +2 -2
- package/dist-cli/chunks/{control-5GRBZVYK.js → control-ESI7IZNN.js} +2 -2
- package/dist-cli/chunks/daemon-UCLO27YP.js +4 -0
- package/dist-cli/chunks/{debug-AHEK43AJ.js → debug-RO6GLDIM.js} +3 -3
- package/dist-cli/chunks/{desktop-LDRIXOVV.js → desktop-FF34Z5X4.js} +3 -3
- package/dist-cli/chunks/{detox-6HAKYISO.js → detox-Q3CWY5UX.js} +2 -2
- package/dist-cli/chunks/{device-QM3S7OVU.js → device-WN4ZWLES.js} +2 -2
- package/dist-cli/chunks/{diagnose-WDP3CVIX.js → diagnose-HDRTUPDO.js} +2 -2
- package/dist-cli/chunks/{disk-cleanup-JRT5MKFW.js → disk-cleanup-QP2NYN43.js} +2 -2
- package/dist-cli/chunks/{do-chain-7FDMO56C.js → do-chain-6LP6SV5J.js} +2 -2
- package/dist-cli/chunks/drivers-OR2JPAXD.js +4 -0
- package/dist-cli/chunks/{env-YIBOMB24.js → env-4XD5D2G6.js} +2 -2
- package/dist-cli/chunks/{film-R3EQADMG.js → film-I5SIXLS5.js} +3 -3
- package/dist-cli/chunks/flow-4GWW5DYT.js +4 -0
- package/dist-cli/chunks/help-MIIWOT3C.js +4 -0
- package/dist-cli/chunks/{hidden-runtime-alias-6M4UERRQ.js → hidden-runtime-alias-LJV2S4M2.js} +2 -2
- package/dist-cli/chunks/{home-paths-QJNOHZJO.js → home-paths-RFI2QRC3.js} +2 -2
- package/dist-cli/chunks/inspect-3ZGNJENJ.js +4 -0
- package/dist-cli/chunks/install-desktop-BYOJVTLS.js +4 -0
- package/dist-cli/chunks/{login-ISWDW4WU.js → login-GNIFSAFE.js} +2 -2
- package/dist-cli/chunks/{logout-VNJX2IEW.js → logout-DKXZZ6HU.js} +2 -2
- package/dist-cli/chunks/{maestro-SQS2OS2D.js → maestro-WKGVVWRA.js} +3 -3
- package/dist-cli/chunks/{maestro-generate-GWVPISG5.js → maestro-generate-KCK6RK2C.js} +3 -3
- package/dist-cli/chunks/{mode-3URDGBZB.js → mode-YVMX7OJY.js} +2 -2
- package/dist-cli/chunks/{optional-demo-registry-L3LRBQHG.js → optional-demo-registry-EUSKBIPP.js} +2 -2
- package/dist-cli/chunks/{perf-XLPC4UKR.js → perf-IMZMA5MT.js} +2 -2
- package/dist-cli/chunks/{permissions-QRHWVMDP.js → permissions-SLWXTLH6.js} +2 -2
- package/dist-cli/chunks/{platform-F47URZNB.js → platform-HQ735LAE.js} +3 -3
- package/dist-cli/chunks/privacy-EDC7PF7G.js +4 -0
- package/dist-cli/chunks/{record-2DN3OUE5.js → record-N4KTTVDI.js} +3 -3
- package/dist-cli/chunks/{report-issue-D3BQPSLU.js → report-issue-PP752HAD.js} +2 -2
- package/dist-cli/chunks/reset-DRMKGVP4.js +4 -0
- package/dist-cli/chunks/resolve-target-7WWI32R3.js +4 -0
- package/dist-cli/chunks/runtime-EKJV2ZVI.js +4 -0
- package/dist-cli/chunks/{screenshot-command-RK7IJHVK.js → screenshot-command-HAJB5FHK.js} +3 -3
- package/dist-cli/chunks/{screenshot-layers-DP2QKSMN.js → screenshot-layers-GOCJVM2G.js} +2 -2
- package/dist-cli/chunks/{screenshots-capture-MA7P3FUT.js → screenshots-capture-YYJLYA3V.js} +2 -2
- package/dist-cli/chunks/{serve-UBXNGLNP.js → serve-TM46TKFW.js} +2 -2
- package/dist-cli/chunks/setup-FVPVIYE4.js +4 -0
- package/dist-cli/chunks/{sim-client-VTKFEDJX.js → sim-client-LQUZSO45.js} +2 -2
- package/dist-cli/chunks/{skills-HPK25R4B.js → skills-V5TE57FN.js} +2 -2
- package/dist-cli/chunks/{state-273XJPUE.js → state-RUVM4Z4S.js} +2 -2
- package/dist-cli/chunks/{storage-RTDFWIY7.js → storage-GQ33UTYN.js} +2 -2
- package/dist-cli/chunks/store-IKNBDDKM.js +4 -0
- package/dist-cli/chunks/telemetry-2ZVU6WLK.js +4 -0
- package/dist-cli/chunks/{timeline-IF2PGK7C.js → timeline-LP7DMJYT.js} +2 -2
- package/dist-cli/chunks/{upgrade-R74NVHKG.js → upgrade-AZDZLUIT.js} +2 -2
- package/dist-cli/chunks/upload-DFQK2Q7X.js +4 -0
- package/dist-cli/chunks/{version-RTFCYQZ7.js → version-N3ALB75G.js} +2 -2
- package/dist-cli/chunks/{web-35SSKBRU.js → web-XPHFZATA.js} +2 -2
- package/dist-cli/chunks/welcome-2NFYLWLJ.js +5 -0
- package/dist-cli/chunks/{what-happened-WXTP6EPR.js → what-happened-EJ5PHKT7.js} +2 -2
- package/dist-cli/chunks/{ws-bridge-JXQUAWFA.js → ws-bridge-RUXOYOU6.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-input.cjs +1 -1
- package/dist-lib/bridge-contract-input.mjs +1 -1
- package/dist-lib/bridge-contract.cjs +1 -1
- package/dist-lib/bridge-contract.mjs +1 -1
- package/dist-lib/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 +1 -1
- 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 +1 -1
- package/dist-lib/sdk.cjs +1 -1
- package/dist-lib/sdk.mjs +1 -1
- package/dist-lib/skills.cjs +482 -2
- package/dist-lib/vite.cjs +1 -1
- package/package.json +1 -1
- package/dist-cli/chunks/cli-version-DMXIXBIM.js +0 -4
- package/dist-cli/chunks/compat-MGBKGYGQ.js +0 -20
- package/dist-cli/chunks/daemon-MBT5E3ZC.js +0 -4
- package/dist-cli/chunks/drivers-AJL2EVXH.js +0 -4
- package/dist-cli/chunks/flow-BDAA6BWL.js +0 -4
- package/dist-cli/chunks/help-5EJD6LJF.js +0 -4
- package/dist-cli/chunks/inspect-S3LR3R2A.js +0 -4
- package/dist-cli/chunks/install-desktop-GXE6K7BJ.js +0 -4
- package/dist-cli/chunks/privacy-BF23T67T.js +0 -4
- package/dist-cli/chunks/reset-T5CNZ7D3.js +0 -4
- package/dist-cli/chunks/resolve-target-KAAS274S.js +0 -4
- package/dist-cli/chunks/runtime-AQJDBR3X.js +0 -4
- package/dist-cli/chunks/setup-GH7OW4GC.js +0 -4
- package/dist-cli/chunks/store-DLKNNM4L.js +0 -4
- package/dist-cli/chunks/telemetry-7CWDXEOO.js +0 -4
- package/dist-cli/chunks/upload-3JFFVCZ4.js +0 -4
- package/dist-cli/chunks/welcome-N5V352SE.js +0 -5
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.369 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
import { createRequire as __sootsimCreateRequire } from 'node:module'
|
|
3
3
|
var require = __sootsimCreateRequire(import.meta.url)
|
|
4
|
-
import{a as i}from"./chunk-
|
|
4
|
+
import{a as i}from"./chunk-MXWME7ET.js";import{spawn as m}from"node:child_process";import c from"node:fs";import t from"node:path";function b(n){let e=t.resolve(n),r=null;for(;;){if(!r&&c.existsSync(t.join(e,"package.json"))&&(r=e),c.existsSync(t.join(e,".git")))return r;let s=t.dirname(e);if(s===e)return null;e=s}}function g(n){let e=t.resolve(n);for(;;){if(c.existsSync(t.join(e,"bun.lock"))||c.existsSync(t.join(e,"bun.lockb")))return"bun";if(c.existsSync(t.join(e,"pnpm-lock.yaml")))return"pnpm";if(c.existsSync(t.join(e,"package-lock.json")))return"npm";let r=t.dirname(e);if(r===e)return"npm";e=r}}function j(n){let e=t.resolve(n.appDir),r=u(t.join(e,"package.json")),s=`${i.commandName} open`,o=r.scripts?.[i.commandName];if(o&&o!==s)throw new Error(`package.json already defines scripts.${i.commandName} as ${JSON.stringify(o)}; resolve that conflict before setup`);let a=g(e),p=[];return r.devDependencies?.[i.packageName]!==n.cliVersion&&p.push(f(a,n.cliVersion)),o!==s&&p.push(S(a)),{appDir:e,packageManager:a,operations:p}}async function w(n,e){for(let r of n.operations)e.dryRun||await y(r,n.appDir,e.json)}function O(n){return n.operations.map(e=>`${e.command} ${e.args.map(l).join(" ")}`)}function u(n){let e;try{e=JSON.parse(c.readFileSync(n,"utf8"))}catch(o){let a=o instanceof Error?o.message:String(o);throw new Error(`could not read ${n}: ${a}`)}if(!e||typeof e!="object"||Array.isArray(e))throw new Error(`${n} must contain a JSON object`);let r=d(Reflect.get(e,"scripts")),s=d(Reflect.get(e,"devDependencies"));return{...r?{scripts:r}:{},...s?{devDependencies:s}:{}}}function d(n){if(!n||typeof n!="object"||Array.isArray(n))return null;let e=Object.entries(n).filter(r=>typeof r[1]=="string");return Object.fromEntries(e)}function f(n,e){let r=`${i.packageName}@${e}`;switch(n){case"bun":return{command:"bun",args:["add","--dev","--exact",r],description:`install ${r} as an exact dev dependency`};case"pnpm":return{command:"pnpm",args:["add","--save-dev","--save-exact",r],description:`install ${r} as an exact dev dependency`};case"npm":return{command:"npm",args:["install","--save-dev","--save-exact",r],description:`install ${r} as an exact dev dependency`}}}function l(n){return/^[a-zA-Z0-9_./@=-]+$/.test(n)?n:JSON.stringify(n)}function y(n,e,r){return new Promise((s,o)=>{let a=m(n.command,n.args,{cwd:e,stdio:r?["ignore",2,"inherit"]:"inherit"});a.once("error",o),a.once("exit",p=>{p===0?s():o(new Error(`${n.command} exited with code ${p??"unknown"}`))})})}function S(n){return{command:n,args:n==="bun"?["pm","pkg","set",`scripts.${i.commandName}=${i.commandName} open`]:["pkg","set",`scripts.${i.commandName}=${i.commandName} open`],description:`add the \`${i.commandName}\` package script`}}export{b as a,j as b,w as c,O as d};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.369 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
import { createRequire as __sootsimCreateRequire } from 'node:module'
|
|
3
3
|
var require = __sootsimCreateRequire(import.meta.url)
|
|
4
4
|
var n=Object.freeze({name:"rnx",packageName:"rnxsim",commandName:"rnx",domain:"rnxsim.com",origin:"https://rnxsim.com"});export{n as a};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.369 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
import { createRequire as __sootsimCreateRequire } from 'node:module'
|
|
3
3
|
var require = __sootsimCreateRequire(import.meta.url)
|
|
4
|
-
import{e as f}from"./chunk-
|
|
4
|
+
import{e as f}from"./chunk-H2GB2PLY.js";import{existsSync as m,mkdirSync as g,readFileSync as h,writeFileSync as S,rmSync as F}from"fs";import{tmpdir as y}from"os";import{dirname as b,join as p}from"path";var w=new Map;function o(e,n){w.set(e,n)}var s=1;function a(){return p(y(),`sootsim-cli-hints-${f()}.json`)}function d(){return p(y(),"sootsim-cli-hints-global.json")}function u(e){if(!m(e))return{version:s,shown:{}};try{let n=JSON.parse(h(e,"utf8"));return n?.version!==s||!n?.shown?{version:s,shown:{}}:n}catch{return{version:s,shown:{}}}}function l(e,n){try{g(b(e),{recursive:!0}),S(e,JSON.stringify(n)+`
|
|
5
5
|
`)}catch{}}function v(){let e=(process.env.SOOTSIM_HINTS||"").toLowerCase();return e==="off"||e==="0"||e==="false"?"off":e==="always"||e==="verbose"?"always":"normal"}function x(e,n){let i=v();if(i==="off")return!1;if(i==="always"||n==="always")return!0;let t=Date.now();if(n==="once-per-identity"){let r=u(a());return r.shown[e]?!1:(r.shown[e]=t,l(a(),r),!0)}if(n==="once-ever"){let r=u(d());return r.shown[e]?!1:(r.shown[e]=t,l(d(),r),!0)}if(typeof n=="object"&&"cooldownMs"in n){let r=u(a()),c=r.shown[e]??0;return t-c<n.cooldownMs?!1:(r.shown[e]=t,l(a(),r),!0)}return!0}function A(e,...n){let i=w.get(e);if(!i)return process.env.SOOTSIM_HINTS_DEBUG&&console.error(` [hints] no hint registered for id "${e}"`),!1;if(!x(e,i.frequency))return!1;let t=i.render(...n);if(t==null)return!1;let r=Array.isArray(t)?t:[t];for(let c of r)console.error(` hint: ${c}`);return!0}o("app-still-loading",{frequency:{cooldownMs:6e4},render:e=>`app may still be loading (${e} nodes). run \`rnx wait ready\` first.`});o("wait-selector-for-missing-testid",{frequency:"once-per-identity",render:e=>`rnx wait selector ${e}`});o("prefer-cli-over-eval",{frequency:"once-per-identity",render:e=>e.length?["try the CLI shortcut instead:",...e.map(n=>` ${n}`)]:null});o("describe-use-filters",{frequency:"once-per-identity",render:()=>["describe output is long. narrow it with:"," rnx describe --only '*Bottom Sheet*'"," rnx describe --testid-like 'swap-*'"," rnx describe --subtree <testID>"]});o("describe-filter-context",{frequency:"once-per-identity",render:()=>["filtered describe is search output, not current-route proof.","run `rnx describe` without filters after navigation; clipped nodes are marked `(clipped:...)`."]});o("subtree-root-not-found",{frequency:"always",render:e=>`no node with testID/id "${e}" \u2014 try \`rnx find --testid ${e}\` to discover available ids.`});o("clean-uninstall",{frequency:"once-ever",render:()=>["to remove the background daemon and all ~/.sootsim data, run `rnx daemon uninstall`.","the optional desktop app and its macOS preference plist are separate from the daemon."]});export{A as a};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.369 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
import { createRequire as __sootsimCreateRequire } from 'node:module'
|
|
3
3
|
var require = __sootsimCreateRequire(import.meta.url)
|
|
4
|
-
import{a as F,b as h,e as f,f as W,g as B}from"./chunk-
|
|
4
|
+
import{a as F,b as h,e as f,f as W,g as B}from"./chunk-TTUZ5MCK.js";import{b as l}from"./chunk-YPBDPVLR.js";import{b as P}from"./chunk-A56GQVNF.js";import{E as y,G as D,d as T,e as u,h as v,k as I,l as R,o as O,p as $,r as M,s as A,x as N,z as _}from"./chunk-D6MGELKZ.js";var o=class extends Error{constructor(e){super(e),this.name=new.target.name}},m=class extends o{},w=class extends o{status;constructor(e){super(`sim not ready: ${O(e)}`),this.status=e}},d=class extends o{outcome;constructor(e,t=null){super(e),this.outcome=t}},b=class extends o{},g=class extends o{result;constructor(e){let t=e.steps.find(n=>!n.ok),s=t?`${t.index} (${t.type})`:String(e.completed),r=t?.error??e.error;super(`perform failed at step ${s}${r?`: ${r}`:""}`),this.result=e}},x=class extends o{result;constructor(e){super(`reset (${e.strategy}) failed${e.error?`: ${e.error}`:""}`),this.result=e}};function U(i){return new Promise(e=>setTimeout(e,i))}function C(i){if(typeof i!="string"||!i.startsWith("data:image/png;base64,"))throw new o(`screenshot bridge returned a non-png payload: ${JSON.stringify(typeof i=="string"?i.slice(0,80):i)}`);let e=i.slice(22),t=atob(e),s=new Uint8Array(t.length);for(let r=0;r<t.length;r++)s[r]=t.charCodeAt(r);return{dataUrl:i,bytes:s}}var J=["bundle","demo","app","open","port","inspectOpen","appFonts","appSplash"];function K(i,e){let t=new URL(i);for(let a of J)t.searchParams.delete(a);let s=t.pathname.replace(/\/+$/,"")||"/",r=s==="/__soot"||s.startsWith("/__soot/")?"/__soot":"",n=String(e).trim();return/^\d+$/.test(n)?t.pathname=`${r}/rn/${n}`:(t.pathname=`${r}/rn`,t.searchParams.set("open",n)),t.toString()}function j(i){return typeof i=="object"&&"text"in i&&typeof i.text=="string"&&!("layout"in i)&&!("absolutePosition"in i)}var k=class{simId;bridge;closed=!1;constructor(e,t,s={}){this.bridge=e,this.simId=t}send(e,t){if(this.closed)return Promise.reject(new m("sim client is closed"));let s=e.simId===void 0?{...e,simId:this.simId}:e;return this.bridge.send(s,t)}listSims(){return this.bridge.listSims()}focusSim(e=this.simId){return this.bridge.focusSim(e)}closeSim(e=this.simId){return this.bridge.closeSim(e)}claim(e=this.simId,t){return this.bridge.claim(e,t)}close(){this.closed||(this.closed=!0,this.bridge.close())}async open(e,t={}){let r=(await this.listSims()).find(c=>c.id===this.simId);if(!r)throw new m(`sim ${this.simId} is no longer connected`);let n=r.url??r.origin;if(!n)throw new m(`sim ${this.simId} reported no URL to derive the shell from`);let a=K(n,e),p=new URL(a);await this.send({type:"evaluate",code:`window.location.href = ${JSON.stringify(a)}`});let L=Date.now()+(t.timeoutMs??3e4);for(;Date.now()<L;){await U(250);try{let{url:c}=await u(this),S=new URL(c);if(S.pathname===p.pathname&&S.searchParams.get("open")===p.searchParams.get("open"))return}catch{}}throw new m(`timed out waiting for sim ${this.simId} to load ${a}`)}openUrl(e){return P(this,e)}async waitReady(e={}){let t=await $(this,e.timeoutMs??2e4,{onProgress:e.onProgress});if(!t.ready)throw new w(t);return t}settle(e={}){return F({bridge:this,maxMs:e.maxMs??3e3,strict:e.strict})}async find(e){return(await this.findAll(e))[0]??null}async findAll(e){let t={testId:e.testId??null,role:e.role??null,type:e.type??null,text:e.text??null,pressable:e.pressable},s=await R(this,t);if(!s)throw new o("find() needs at least one of testId, text, role, type, or pressable");let{result:r}=s;return Array.isArray(r)?r:r?[r]:[]}async tree(e=5){let{tree:t}=await T(this,e);return Array.isArray(t)?t:[]}resolve(e){return this.send({type:"resolve",selector:e})}describe(e={}){return v(this,{describe:!0,verbose:e.verbose??!1,filter:e.filter??"",compact:!e.verbose,hideXy:!1,fullText:!0})}accessibilityTree(){return I(this)}async logs(e={}){return _(await N(this),e)}errors(e=20){return M(this,e)}warnings(e=20){return A(this,e)}keyboard(){return y(this)}shellState(e=0){return D(this,e)}async url(){let{url:e}=await u(this);return e}async screenshot(e={}){let t=await this.send({type:"screenshot",...e.layers?{layers:e.layers}:{},...e.crop?{crop:e.crop}:{}});return C(t)}async tap(e){if(typeof e=="string")return this.throwUnlessTapped(await B(this,e),e);if("testId"in e&&typeof e.testId=="string")return this.throwUnlessTapped(await f(this,e.testId),e.testId);if(j(e)){let{text:r,...n}=e;return this.throwUnlessTapped(await W(this,r,n),r)}if("testID"in e&&typeof e.testID=="string")return this.throwUnlessTapped(await f(this,e.testID),e.testID);let t=this.coordsForTapTarget(e),s=await this.send({type:"tap",x:t.x,y:t.y});if(!h(s))throw new d(`tap at ${t.x},${t.y} missed: ${JSON.stringify(s)}`)}async longPress(e,t={}){let s=await this.resolveCoords(e);if(!(await this.send({type:"longPress",x:s.x,y:s.y,durationMs:t.durationMs??600},{timeoutMs:(t.durationMs??600)+15e3}))?.ok)throw new d(`longPress at ${s.x},${s.y} missed`)}async type(e){await this.requireVisibleKeyboard("type"),await this.send({type:"keyboard",action:"type",text:e})}async press(e){await this.requireVisibleKeyboard("press"),await this.send({type:"keyboard",action:"press",text:e})}async dismissKeyboard(){await this.send({type:"keyboard",action:"dismiss"})}async perform(e,t){let s=[];for(let a of e){if(a.type!=="tapText"){s.push(a);continue}let p=await l(this,{mode:"text",value:a.text});if(!p)throw new d(`perform tapText: no node with text ${JSON.stringify(a.text)}`);s.push({type:"tap",x:p.x,y:p.y,target:{testID:p.testID??void 0,text:p.text??void 0,type:p.type??void 0}})}let r=t?.timeoutMs??3e4,n=await this.send({type:"perform",steps:s,...t?{performOptions:t}:{}},{timeoutMs:r+5e3});if(!n?.ok)throw new g(n);return n}state(e){return this.send({type:"state",...e?{stateOptions:e}:{}})}async reset(e){let t=await this.send({type:"reset",...e?{resetOptions:e}:{}},{timeoutMs:6e4});if(!t?.ok)throw new x(t);return t}throwUnlessTapped(e,t){if(!e.failure&&h(e.result))return;let s=e.failure==="not-found"?"no matching node":e.failure==="missed"?e.result?.reason??"press missed":e.payload?.ambiguous?`ambiguous: ${e.payload.total} matches`:e.result?.reason??e.payload?.error??"tap failed";throw new d(`tap ${JSON.stringify(t)} failed: ${s}`,e)}coordsForTapTarget(e){if(typeof e=="object"&&"x"in e&&"y"in e&&typeof e.x=="number"&&typeof e.y=="number")return{x:e.x,y:e.y};if(typeof e=="object"&&"absolutePosition"in e&&e.absolutePosition&&e.layout)return{x:e.absolutePosition.x+(e.layout.width??0)/2,y:e.absolutePosition.y+(e.layout.height??0)/2};throw new o("tap target needs coordinates, a testId, text, or a node from find()")}async resolveCoords(e){if(typeof e=="string"){let t=await l(this,{mode:"testid",value:e})??await l(this,{mode:"text",value:e});if(!t)throw new d(`no node matching ${JSON.stringify(e)}`);return t}if("testId"in e&&typeof e.testId=="string"){let t=await l(this,{mode:"testid",value:e.testId});if(!t)throw new d(`no node with testID ${JSON.stringify(e.testId)}`);return t}if("text"in e&&typeof e.text=="string"&&!("layout"in e)){let t=await l(this,{mode:"text",value:e.text});if(!t)throw new d(`no node with text ${JSON.stringify(e.text)}`);return t}return this.coordsForTapTarget(e)}async requireVisibleKeyboard(e){let t=Date.now()+1500;for(;;){let s=await y(this);if(!("error"in s)&&s.visible)return;if(Date.now()>=t)throw new b(`${e} requires the iOS keyboard to be visible \u2014 focus an input first (tap a TextInput)`);await U(150)}}};export{o as a,m as b,w as c,d,b as e,g as f,x as g,K as h,k as i};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.369 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
import { createRequire as __sootsimCreateRequire } from 'node:module'
|
|
3
3
|
var require = __sootsimCreateRequire(import.meta.url)
|
|
4
|
-
import{a as c}from"./chunk-
|
|
4
|
+
import{a as c}from"./chunk-IYPMULI7.js";import{M as u,l}from"./chunk-FBMNYSSW.js";import r from"fs";import e from"path";import{fileURLToPath as m}from"url";var s;function p(){if(s!==void 0)return s;let t=e.dirname(m(import.meta.url));for(let n=0;n<12&&t!==e.dirname(t);n++){if(r.existsSync(e.join(t,"packages/sootsim-engine/package.json"))&&r.existsSync(e.join(t,"public/sootsim")))return s=t,t;t=e.dirname(t)}return s=null,null}function d(){if(process.env.SOOTSIM_HOME&&u())return null;let t=p();if(!t)return null;let n=e.join(t,"public/sootsim");return r.existsSync(e.join(n,"index.html"))&&r.existsSync(e.join(n,"engine/index.html"))&&r.existsSync(e.join(n,"engine-tenant/worker.js"))?n:null}function g(){let t=d();if(t)return t;let n=u();if(!n)return null;let o=l(n);return r.existsSync(e.join(o,"index.html"))?o:null}var a=".runtime.localhost";function y(t){let n=t.trim();if(!c(n))throw new Error(`invalid rnx runtime version: ${t}`);let i=Buffer.from(n,"utf8").toString("hex").match(/.{1,60}/g);if(!i)throw new Error(`invalid rnx runtime version: ${t}`);return`${i.join(".")}${a}`}function f(t){return t.toLowerCase().endsWith(a)}function x(t){if(!f(t))return null;let n=t.slice(0,-a.length).split(".");if(n.length===0||n.some(i=>!/^[0-9a-f]{1,60}$/i.test(i)))return null;let o=n.join("");if(o.length%2!==0)return null;try{let i=Buffer.from(o,"hex").toString("utf8");return c(i)?i:null}catch{return null}}function S(t){let n=l(t);return r.existsSync(e.join(n,"index.html"))?n:null}function M(t){if(!f(t))return g();let n=x(t);return n?S(n):null}export{d as a,y as b,f as c,x as d,M as e};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.369 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
import { createRequire as __sootsimCreateRequire } from 'node:module'
|
|
3
3
|
var require = __sootsimCreateRequire(import.meta.url)
|
|
4
4
|
var t=Object.freeze({id:"ios",displayName:"iOS",isIOS:!0,isAndroid:!1,select:e=>e.ios}),r=Object.freeze({id:"android",displayName:"Android",isIOS:!1,isAndroid:!0,select:e=>e.android}),i=Object.freeze({ios:t,android:r});
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.369 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
import { createRequire as __sootsimCreateRequire } from 'node:module'
|
|
3
3
|
var require = __sootsimCreateRequire(import.meta.url)
|
|
4
|
-
import{a as q,b as G,c as Ne}from"./chunk-
|
|
4
|
+
import{a as q,b as G,c as Ne}from"./chunk-JH5KE2OI.js";import{c as _e,d as $e}from"./chunk-AKJYEX54.js";import{p as Pe}from"./chunk-UDXQCEJU.js";import{t as Ae,v as Ue,x}from"./chunk-H2GB2PLY.js";import{a as Ie}from"./chunk-MXWME7ET.js";import{createHash as wt}from"crypto";import{readFileSync as b}from"fs";import De from"path";import{gzipSync as me,gunzipSync as Mt}from"zlib";function Fe(e){let t=(e||"").toLowerCase().split(";")[0].trim();return t?!(t.startsWith("image/")||t.startsWith("video/")||t.startsWith("audio/")||t==="font/woff2"||t==="application/font-woff2"||t==="application/zip"||t==="application/gzip"):!0}import{brotliCompressSync as it,constants as at}from"node:zlib";var lt=9;function Le(e){return it(e,{params:{[at.BROTLI_PARAM_QUALITY]:lt}})}var le={initMs:3e4,putMs:12e4,finalizeMs:18e4};function ue(e,t){let r=new AbortController,s=setTimeout(()=>r.abort(new Error(`${t} timed out after ${e/1e3}s`)),e);return{signal:r.signal,cancel:()=>clearTimeout(s)}}async function ut(e){let t=ue(le.putMs,`PUT ${e.url}`),r;try{r=await fetch(e.url,{method:"PUT",headers:{"content-type":e.contentType},body:e.bytes,signal:t.signal})}finally{t.cancel()}if(!r.ok){let s=await r.text().catch(()=>"");throw new Error(`PUT ${e.url} failed ${r.status}: ${s.slice(0,200)}`)}}async function ct(e,t=8,r){let s=0,o=0,i=e.length;await Promise.all(Array.from({length:Math.min(t,i)},async()=>{for(;s<i;){let l=e[s++];await ut(l),o++,r?.(o,i)}}))}function dt(e,t,r,s){let o=[];o.push({url:e.bundle.putUrl,contentType:e.bundle.contentType,bytes:t});for(let i of e.files){let l=r.get(i.urlhash);l&&o.push({url:i.putUrl,contentType:i.contentType,bytes:l})}e.events&&s?.eventsBytes&&o.push({url:e.events.putUrl,contentType:e.events.contentType,bytes:s.eventsBytes}),e.timeline&&s?.timelineBytes&&o.push({url:e.timeline.putUrl,contentType:e.timeline.contentType,bytes:s.timelineBytes}),e.flowVideo&&s?.videoBytes&&o.push({url:e.flowVideo.putUrl,contentType:e.flowVideo.contentType,bytes:s.videoBytes}),e.storage&&s?.storageBytes&&o.push({url:e.storage.putUrl,contentType:e.storage.contentType,bytes:s.storageBytes}),e.failureBundle&&s?.failureBundleBytes&&o.push({url:e.failureBundle.putUrl,contentType:e.failureBundle.contentType,bytes:s.failureBundleBytes});for(let i of e.snapshots??[]){let l=s?.snapshotBytes?.get(i.id);l&&o.push({url:i.putUrl,contentType:i.contentType,bytes:l})}return o}function pt(e){return e.replace(/\/+$/,"")}var J=class extends Error{constructor(r,s,o,i=""){super(r);this.status=s;this.phase=o;this.responseText=i;this.name="PresignedUploadError"}};async function Ce(e){let t=pt(e.originBase),r={"content-type":"application/json"};e.authHeader&&(r.authorization=e.authHeader),e.adminBypassToken&&(r["x-contrast-admin-upload-bypass"]=e.adminBypassToken);let s=ue(le.initMs,"init"),o;try{o=await fetch(`${t}/api/preview/upload/init`,{method:"POST",headers:r,body:JSON.stringify(e.initBody),signal:s.signal})}finally{s.cancel()}if(!o.ok){let w=await o.text().catch(()=>"");throw new J(`init failed: ${o.status} ${w.slice(0,200)}`,o.status,"init",w)}let i=await o.json(),l=dt(i,e.bundleBytes,e.filesByHash,e.extras);await ct(l,e.concurrency??8,e.onPutProgress);let f=ue(le.finalizeMs,"finalize"),c;try{c=await fetch(`${t}/api/preview/upload/finalize`,{method:"POST",headers:r,body:JSON.stringify({token:i.token}),signal:f.signal})}finally{f.cancel()}if(!c.ok){let w=await c.text().catch(()=>"");throw new J(`finalize failed: ${c.status} ${w.slice(0,200)}`,c.status,"finalize",w)}let h=await c.json();return{init:i,finalize:h}}function ft(e){return e!==null&&typeof e=="object"?e:null}function Oe(e){return typeof e=="number"&&Number.isFinite(e)?e:void 0}function ce(e){let t=ft(e);return t?t.schemaVersion===1&&Oe(t.t)!==void 0&&Oe(t.seq)!==void 0&&typeof t.context=="string"&&typeof t.kind=="string"&&"data"in t:!1}function mt(e,t){let r=[];for(let s of e.split(`
|
|
5
5
|
`)){let o=s.trim();if(o)try{let i=JSON.parse(o);t(i)&&r.push(i)}catch{}}return r}function ze(e){return mt(e,ce)}import{execSync as gt}from"child_process";function pe(e){try{return gt(e,{stdio:["ignore","pipe","ignore"],timeout:3e3,encoding:"utf8"}).trim()||null}catch{return null}}function de(e){let t=e?.trim();return!t||!/^\d+$/.test(t)?null:Number(t)}function ht(){let e=pe("git remote get-url origin");if(!e)return null;let t=e.match(/github\.com[/:]([^/\s]+)\/([^/\s]+?)(?:\.git)?\/?$/i);return t?{owner:t[1],repo:t[2]}:null}function fe(){let e=process.env.GITHUB_ACTIONS==="true",t=process.env.CONTRAST_BRANCH?.trim()||null,r=process.env.CONTRAST_SHA?.trim()||null,s=process.env.CONTRAST_PR_TITLE?.trim()||null,o=(process.env.CONTRAST_REPO||process.env.GITHUB_REPOSITORY||"").trim(),[i,l]=o.includes("/")?o.split("/",2):[null,null];if(e){let h=process.env.GITHUB_REF?.match(/^refs\/pull\/(\d+)\//)?.[1];return{owner:i,repo:l,branch:t||process.env.GITHUB_HEAD_REF?.trim()||process.env.GITHUB_REF_NAME?.trim()||null,commitSha:r||process.env.GITHUB_SHA?.trim()||null,githubUsername:process.env.GITHUB_ACTOR?.trim()||null,pullRequestNumber:de(process.env.CONTRAST_PR_NUMBER)??de(h),pullRequestTitle:s,githubRunId:process.env.GITHUB_RUN_ID?.trim()||null,source:"ci"}}let f=t??pe("git rev-parse --abbrev-ref HEAD"),c=i?null:ht();return{owner:i??c?.owner??null,repo:l??c?.repo??null,branch:f==="HEAD"?null:f,commitSha:r??pe("git rev-parse HEAD"),githubUsername:null,pullRequestNumber:de(process.env.CONTRAST_PR_NUMBER),pullRequestTitle:s,githubRunId:null,source:"cli"}}function Jt(e){if(e.length===0)return{stepCount:null,failedStepIndex:null};let t=e.find(r=>r.status==="failure");return{stepCount:e.length,failedStepIndex:t?t.stepIndex:null}}function Kt(e){return e.auth?e.uploadedShare?!0:e.auth.kind==="github"||process.env.GITHUB_ACTIONS==="true":!1}async function Vt(e){let t=e.auth??q();if(!t)return null;let r=fe(),s=e.owner??(t.kind==="github"?t.owner:null)??r.owner,o=e.repo??(t.kind==="github"?t.repo:null)??r.repo;try{let i=await fetch(`${e.origin.replace(/\/$/,"")}/api/sootsim/test-runs`,{method:"POST",headers:{"content-type":"application/json",authorization:G(t)},body:JSON.stringify({kind:e.kind,source:r.source,name:e.name??void 0,prompt:e.prompt??void 0,summary:e.summary??void 0,status:e.status,failureMessage:e.failureMessage??void 0,previewShareId:e.previewShareId??void 0,owner:s??void 0,repo:o??void 0,branch:r.branch??void 0,commitSha:r.commitSha??void 0,githubUsername:r.githubUsername??void 0,pullRequestNumber:r.pullRequestNumber??void 0,githubRunId:r.githubRunId??void 0,stepCount:e.stepCount??void 0,failedStepIndex:e.failedStepIndex??void 0,durationMs:e.durationMs??void 0,flowYamlSizeBytes:e.flowYamlSizeBytes??void 0})});if(!i.ok){let f=await i.text().catch(()=>"");return console.warn(` warn: run registration failed: /api/sootsim/test-runs ${i.status}${f?`: ${f.slice(0,200)}`:""}`),null}let l=await i.json();return l.run?.id?{id:l.run.id,previewUrl:l.run.previewUrl??null,traceUrl:l.run.traceUrl??null}:(console.warn(" warn: run registration returned no id"),null)}catch(i){return console.warn(` warn: run registration failed: ${i instanceof Error?i.message:String(i)}`),null}}function Tt(e){if(!e)return null;try{let t=JSON.parse(e);return typeof t.message=="string"&&t.message?t.message:null}catch{return null}}function St(e){let t=JSON.parse(b(e,"utf8"));if(!Array.isArray(t))throw new Error("snapshot manifest must be an array");let r=new Set;return t.map((s,o)=>{if(s===null||typeof s!="object")throw new Error(`snapshot manifest entry ${o} must be an object`);let i=Reflect.get(s,"id"),l=Reflect.get(s,"label"),f=Reflect.get(s,"path"),c=Reflect.get(s,"t");if(typeof i!="string"||!i||r.has(i))throw new Error(`snapshot manifest entry ${o} has an invalid or duplicate id`);if(typeof f!="string"||!f)throw new Error(`snapshot manifest entry ${o} has no PNG path`);if(typeof c!="number"||!Number.isFinite(c)||c<0)throw new Error(`snapshot manifest entry ${o} has an invalid capture time`);r.add(i);let h=b(f);return{meta:{id:i,label:typeof l=="string"&&l?l:i,kind:"interaction",t:Math.round(c),contentType:"image/png",sizeBytes:h.byteLength},bytes:h}})}var Je=process.env.SOOTSIM_UPLOAD_ORIGIN||"https://contrast.dev",Ke=process.env.SOOTSIM_PREVIEW_ORIGIN||Ie.origin;async function vt(e){return e||(process.env.SOOTSIM_UPLOAD_ORIGIN?process.env.SOOTSIM_UPLOAD_ORIGIN:Je)}function $(e){return e.replace(/\/$/,"")}function xt(e){try{let r=new URL(e).hostname.replace(/^\[|\]$/g,"").toLowerCase();return r==="localhost"||r.endsWith(".localhost")||r==="0.0.0.0"||r==="::1"||/^127(?:\.\d{1,3}){3}$/.test(r)}catch{return!1}}function Rt(e){try{let t=new URL(e).hostname.toLowerCase();return t==="contrast.dev"||t.endsWith(".contrast.dev")}catch{return!1}}function kt(e,t){return t?$(t):process.env.SOOTSIM_PREVIEW_ORIGIN?$(process.env.SOOTSIM_PREVIEW_ORIGIN):xt(e)?$(e):Rt(e)?$(Ke):$(e)}function Bt(){console.log(`
|
|
6
6
|
rnx record upload \u2014 publish the current recorded bundle as a /preview/<id> link
|
|
7
7
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.369 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
import { createRequire as __sootsimCreateRequire } from 'node:module'
|
|
3
3
|
var require = __sootsimCreateRequire(import.meta.url)
|
|
4
|
-
import{t as j,v as A,y as K,z as v}from"./chunk-
|
|
4
|
+
import{t as j,v as A,y as K,z as v}from"./chunk-H2GB2PLY.js";import{createHash as Y}from"node:crypto";import{mkdirSync as L,readFileSync as W,readdirSync as Q,unlinkSync as X,writeFileSync as D}from"node:fs";import{dirname as q,extname as Z,resolve as B}from"node:path";function H(t){let e=t[0]?.toLowerCase()??"toggle";return e!=="on"&&e!=="off"&&e!=="toggle"&&(console.error(` unknown argument: "${e}" (expected on | off | toggle)`),process.exit(1)),e}async function U(t,e,n){let o=j(t,{port:e.port}),i=H(o.positional),u=A({...o,commandTimeoutMs:5e3});try{let a=!!(await K(u,"SootSim.bridges.settings.get"))?.[n.modeKey],m=i==="on"?!0:i==="off"?!1:!a;if(a===m)return console.log(` ${n.displayName}: already ${m?"on":"off"}`),{current:a,target:m,changed:!1};if(!await u.send({type:"evaluate",acquireLock:!0,code:`(async () => {
|
|
5
5
|
const modeKey = ${JSON.stringify(n.modeKey)}
|
|
6
6
|
const target = ${JSON.stringify(m)}
|
|
7
7
|
window.dispatchEvent(new CustomEvent('sootsim:shell-command', {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.369 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
import { createRequire as __sootsimCreateRequire } from 'node:module'
|
|
3
3
|
var require = __sootsimCreateRequire(import.meta.url)
|
|
4
|
-
import{L as m,o as P,q as a}from"./chunk-
|
|
4
|
+
import{L as m,o as P,q as a}from"./chunk-FBMNYSSW.js";import l from"fs";import c from"path";var s="default",S="profiles.json",i=1;function o(e){let r=e.trim();if(!r)throw new Error("profile id is required");if(!/^[A-Za-z0-9][A-Za-z0-9._-]*$/.test(r))throw new Error("profile ids must start with a letter or number and contain only letters, numbers, dot, dash, or underscore");if(r==="."||r==="..")throw new Error(`invalid profile id: ${r}`);return r}function d(){return c.join(a(),S)}function I(e){return`sootsim-profile-${o(e)}`}function h(e){return c.join(P(),"Partitions",I(e))}function A(e){return c.join(a(),"playwright",o(e))}function u(){try{let e=JSON.parse(l.readFileSync(d(),"utf8"));if(!e||e.version!==i)return{version:i,profiles:[]};let r=Array.isArray(e.profiles)?e.profiles.filter(t=>!!t&&typeof t.id=="string"&&typeof t.createdAt=="string"&&typeof t.updatedAt=="string").map(t=>({id:o(t.id),createdAt:t.createdAt,updatedAt:t.updatedAt})):[];return{version:i,profiles:r}}catch{return{version:i,profiles:[]}}}function x(e){return[...e].sort((r,t)=>r.id===s?-1:t.id===s?1:r.id.localeCompare(t.id))}function p(e){if(e.profiles.some(t=>t.id===s))return{...e,profiles:x(e.profiles)};let r=new Date().toISOString();return{version:i,profiles:x([{id:s,createdAt:r,updatedAt:r},...e.profiles])}}function g(e){m();let r=p(e),t=`${d()}.tmp`;return l.writeFileSync(t,`${JSON.stringify(r,null,2)}
|
|
5
5
|
`,"utf8"),l.renameSync(t,d()),r}function y(){return g(u()).profiles}function E(e){let r=o(e);return y().find(t=>t.id===r)??null}function _(e=s){let r=o(e),t=E(r);return t||D(r)}function D(e){let r=o(e),t=p(u());if(t.profiles.some(w=>w.id===r))throw new Error(`profile already exists: ${r}`);let f=new Date().toISOString(),n={id:r,createdAt:f,updatedAt:f};return g({version:i,profiles:[...t.profiles,n]}),n}function F(e){let r=o(e);if(r===s)throw new Error("the default profile cannot be deleted; clear it instead");let t=p(u()),f=t.profiles.find(n=>n.id===r);if(!f)throw new Error(`profile not found: ${r}`);return g({version:i,profiles:t.profiles.filter(n=>n.id!==r)}),v(r),f}function v(e){let r=o(e);for(let t of[h(r),A(r)])try{l.rmSync(t,{recursive:!0,force:!0})}catch{}}export{A as a,y as b,_ as c,D as d,F as e,v as f};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.369 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
import { createRequire as __sootsimCreateRequire } from 'node:module'
|
|
3
3
|
var require = __sootsimCreateRequire(import.meta.url)
|
|
4
4
|
import{execFileSync as S,execSync as x}from"node:child_process";var g=new WeakMap,l=new Set,b=!1;function f(){return{platform:process.platform,env:process.env}}function A(e){return S("/bin/ps",["-p",String(e),"-o","command="],{encoding:"utf8"}).trim()}function w(e=f()){return e.platform==="linux"&&e.env.GITHUB_ACTIONS==="true"&&e.env.RUNNER_OS==="Linux"}function L(e){let r=String(e);return/^--disable-gpu(?:=.*)?$/i.test(r)||/^--enable-unsafe-swiftshader(?:=.*)?$/i.test(r)||/^--use-angle=(?:swiftshader|swiftshader-webgl)$/i.test(r)||/^--use-gl=swiftshader$/i.test(r)}function I(e){return e.match(/(?:^|\s)(--disable-gpu(?:=[^\s]+)?|--enable-unsafe-swiftshader(?:=[^\s]+)?|--use-angle=(?:swiftshader|swiftshader-webgl)|--use-gl=swiftshader)(?=\s|$)/i)?.[1]??null}function k(e){return e==="darwin"?"metal":e==="linux"?"vulkan":"default"}function y(e,r=f()){if(w(r))return;let n=I(e);if(n)throw new Error(`[reap-browser] refused software-rendering Chrome process argument ${n}`);let o=k(r.platform),t=e.split(/\s+/);if(!t.includes(`--use-angle=${o}`)||!t.includes("--enable-gpu"))throw new Error(`[reap-browser] Chrome process did not retain the required ${o} GPU arguments`);if(r.platform==="darwin"&&e.includes("/Applications/Google Chrome.app/"))throw new Error("[reap-browser] refused the user's installed Google Chrome; use Playwright channel chromium")}function E(e){if(!e||typeof e!="object")return[];let n=e.gpu;if(!n||typeof n!="object")return[];let o=n,t=[],a=o.auxAttributes;if(a&&typeof a=="object")for(let s of Object.values(a))typeof s=="string"&&t.push(s);let i=o.devices;if(Array.isArray(i)){for(let s of i)if(!(!s||typeof s!="object"))for(let u of Object.values(s))typeof u=="string"&&t.push(u)}return t}function B(e){if(!e||typeof e!="object")return null;let r=e;if(!Array.isArray(r.processInfo))return null;for(let n of r.processInfo){if(!n||typeof n!="object")continue;let o=n;if(o.type==="browser"&&typeof o.id=="number"&&Number.isInteger(o.id)&&o.id>0)return o.id}return null}function G(e,r=f()){if(w(r))return;let o=E(e).join(" | ");if(!o||/swiftshader|llvmpipe|software rasterizer/i.test(o))throw new Error(`[reap-browser] Chrome reported a software renderer${o?`: ${o}`:""}`);if(r.platform==="darwin"&&!/metal/i.test(o))throw new Error(`[reap-browser] Chrome did not report an ANGLE Metal renderer: ${o}`)}function p(e){if(e&&typeof e=="object"){let n=g.get(e);if(n!==void 0)return n}let r=e;if(r&&typeof r.process=="function")try{let n=r.process();if(n&&typeof n.pid=="number"&&n.pid>0)return n.pid}catch{}if(r&&typeof r.browser=="function")try{let n=r.browser();if(n)return p(n)}catch{}return null}function h(e){let r=[];try{r=x(`pgrep -P ${e} || true`).toString().split(`
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.369 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
import { createRequire as __sootsimCreateRequire } from 'node:module'
|
|
3
3
|
var require = __sootsimCreateRequire(import.meta.url)
|
|
4
|
-
import{b as $}from"./chunk-
|
|
4
|
+
import{b as $}from"./chunk-USHV3QFZ.js";import{q as x}from"./chunk-H2GB2PLY.js";import{b as y,c as R,d as f,e as w,f as a}from"./chunk-IYPMULI7.js";import{L as g,M as u,N as d,T as h,l as p}from"./chunk-FBMNYSSW.js";import O from"fs";import{WebSocket as E}from"ws";function C(t){if(!t||typeof t!="object")return!1;let e=Reflect.get(t,"sections");return typeof Reflect.get(t,"title")=="string"&&Array.isArray(e)&&e.every(o=>o&&typeof o=="object"&&typeof Reflect.get(o,"title")=="string"&&Array.isArray(Reflect.get(o,"items"))&&Reflect.get(o,"items").every(n=>n&&typeof n=="object"&&typeof Reflect.get(n,"summary")=="string"&&typeof Reflect.get(n,"hash")=="string"))}async function b(t,e=fetch){try{let o=new URL(w);o.searchParams.set("version",t);let n=await e(o,{headers:{accept:"application/json"},signal:AbortSignal.timeout(5e3)});if(!n.ok)return null;let s=await n.json();if(!s||typeof s!="object")return null;let i=Reflect.get(s,"entries");return!Array.isArray(i)||!C(i[0])?null:i[0]}catch{return null}}function A(t,e){let o=[`what's new in rnx engine v${t}:`];if(!e||e.sections.length===0)o.push(" release notes are not available yet");else for(let n of e.sections){o.push(` ${n.title}:`);for(let s of n.items)o.push(` \u2022 ${s.summary}`)}return o.push(` full changelog: ${f}`),o.join(`
|
|
5
5
|
`)}async function Q(t,e={}){let[o,...n]=t;if(!o||o==="--help"||o==="-h"){S();return}switch(o){case"install":return L(n,e);case"list":return j(n);case"use":return T(n);case"remove":return D(n);case"which":return G();case"notes":return U(n);default:console.error(` unknown runtime subcommand: ${o}`),S(),process.exit(1)}}function S(){console.log(`
|
|
6
6
|
rnx runtime \u2014 manage engine runtimes under ~/.sootsim/runtimes/
|
|
7
7
|
|
|
@@ -27,4 +27,4 @@ examples:
|
|
|
27
27
|
rnx runtime install --channel beta
|
|
28
28
|
rnx runtime use 1.2.3
|
|
29
29
|
rnx runtime notes
|
|
30
|
-
`)}async function L(t,e){let{version:o,flags:n}=F(t),s=n.channel??e.channel??"stable",i=n.force===!0,l=n.setActive!==!1;g(),console.log("rnx runtime install"),console.log(` cdn: ${a.resolveCdnOrigin()}`);try{let r=await a.install({version:o,channel:s,force:i,setActive:l,protectVersions:h()});return console.log(` version: ${r.version} (channel: ${r.channel})`),r.installed?console.log(` installed ${r.version}`):console.log(` already installed at ${r.runtimeDir}`),l&&await k(r.version),r}catch(r){console.error(` ${I(r)}`),process.exit(1)}}async function k(t){d(t),console.log(` active: ${t}`),await _(t)||console.log(` (no daemon running \u2014 next sootsim/electron launch will pick up ${t})`)}async function _(t){let{isDaemonLockfileFresh:e,readDaemonLockfile:o}=await import("./home-paths-
|
|
30
|
+
`)}async function L(t,e){let{version:o,flags:n}=F(t),s=n.channel??e.channel??"stable",i=n.force===!0,l=n.setActive!==!1;g(),console.log("rnx runtime install"),console.log(` cdn: ${a.resolveCdnOrigin()}`);try{let r=await a.install({version:o,channel:s,force:i,setActive:l,protectVersions:h()});return console.log(` version: ${r.version} (channel: ${r.channel})`),r.installed?console.log(` installed ${r.version}`):console.log(` already installed at ${r.runtimeDir}`),l&&await k(r.version),r}catch(r){console.error(` ${I(r)}`),process.exit(1)}}async function k(t){d(t),console.log(` active: ${t}`),await _(t)||console.log(` (no daemon running \u2014 next sootsim/electron launch will pick up ${t})`)}async function _(t){let{isDaemonLockfileFresh:e,readDaemonLockfile:o}=await import("./home-paths-RFI2QRC3.js"),n=o();if(!e(n))return!1;let s=x();return new Promise(i=>{let l=!1,r=!1,m=N=>{l||(l=!0,i(N))},c=new E(`ws://127.0.0.1:${s}`,{handshakeTimeout:800}),v=setTimeout(()=>{try{c.close()}catch{}m(r)},1500);c.on("open",()=>{try{c.send(JSON.stringify({type:"runtime:use",version:t,id:0})),r=!0}catch{}setTimeout(()=>{try{c.close()}catch{}},100)}),c.on("close",()=>{clearTimeout(v),m(r)}),c.on("error",()=>{clearTimeout(v),m(!1)})})}async function j(t){g();let e=a.listInstalled(),o=u();if(console.log("installed:"),e.length===0)console.log(" (none)");else for(let n of e)console.log(` ${n===o?"*":" "} ${n}`);try{let n=await a.fetchManifest();console.log("available (latest per channel):");for(let[i,l]of Object.entries(n.channels))console.log(` ${i.padEnd(8)} ${l.latest}`);let s=Object.keys(n.versions).sort(y).reverse();if(s.length>1){console.log("hosted versions:");for(let i of s)console.log(` ${i}`)}}catch(n){console.log(`available: (could not fetch manifest: ${I(n)})`)}}async function T(t){let e=t[0];e||(console.error(" usage: rnx runtime use <version>"),process.exit(1));let o=a.listInstalled();o.includes(e)||(console.error(` version ${e} is not installed`),console.error(` installed: ${o.join(", ")||"(none)"}`),console.error(` run \`rnx runtime install ${e}\` first`),process.exit(1)),await k(e)}async function D(t){let e=t[0];e||(console.error(" usage: rnx runtime remove <version>"),process.exit(1)),u()===e&&(console.error(` cannot remove active runtime ${e}`),console.error(" switch with `rnx runtime use <other>` first, or install another version"),process.exit(1)),h().includes(e)&&(console.error(` cannot remove runtime ${e} while a project is using it`),process.exit(1));let n=p(e);if(!O.existsSync(n)){console.error(` ${e} is not installed`);return}O.rmSync(n,{recursive:!0,force:!0}),console.log(` removed ${e}`)}async function G(){let t=u();if(!t){console.log(" no active runtime");return}console.log(t)}async function U(t){t.length>0&&(console.error(" usage: rnx runtime notes"),process.exit(1));let{config:e}=await $(),o=e?.runtimeVersion??u();if(!o){console.log(" no active runtime"),console.log(` release notes: ${f}`);return}console.log(A(o,await b(o)))}function F(t){let e={},o=[];for(let n=0;n<t.length;n++){let s=t[n];if(s==="--channel"&&n+1<t.length){e.channel=t[n+1],n++;continue}if(s.startsWith("--channel=")){e.channel=s.slice(10);continue}if(s==="--force"){e.force=!0;continue}if(s==="--set-active=false"||s==="--no-set-active"){e.setActive=!1;continue}o.push(s)}return{version:o[0]??null,flags:e}}function I(t){return t instanceof Error?t.message:String(t)}export{b as a,A as b,Q as c};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.369 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
import { createRequire as __sootsimCreateRequire } from 'node:module'
|
|
3
3
|
var require = __sootsimCreateRequire(import.meta.url)
|
|
4
|
-
import{a as t}from"./chunk-
|
|
4
|
+
import{a as t}from"./chunk-MXWME7ET.js";import{readFileSync as a}from"node:fs";import{fileURLToPath as n}from"node:url";var r=null;function f(){if(r!=null)return r;let o=[()=>n(import.meta.resolve(`${t.packageName}/package.json`)),()=>n(new URL("../package.json",import.meta.url))];for(let i of o)try{let e=JSON.parse(a(i(),"utf8")).version;if(typeof e=="string"&&e)return r=e,r}catch{}return r="0.0.0",r}export{f as a};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.369 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
import { createRequire as __sootsimCreateRequire } from 'node:module'
|
|
3
3
|
var require = __sootsimCreateRequire(import.meta.url)
|
|
4
|
-
import{b as r}from"./chunk-
|
|
4
|
+
import{b as r}from"./chunk-V7I4CTAX.js";function o(){if(!r())return null;let t=process.env.VITE_POSTHOG_API_KEY||"";if(!t)return null;let e=process.env.CONTRAST_POSTHOG_HOST||process.env.VITE_POSTHOG_HOST||"https://us.i.posthog.com";return{apiKey:t,host:e.replace(/\/+$/,"")}}function i(t,e){return t.trim().slice(0,e)}function s(t){let e=t.kind==="package_incompatibility"?{package_name:i(t.packageName,160),package_version:i(t.packageVersion,80),...t.unsupportedApi?{unsupported_api:i(t.unsupportedApi,160)}:{}}:{error_class:i(t.errorClass,160)};return{event:t.kind,distinct_id:"rnx-cli-diagnostic",properties:e}}var n=[];function a(t){r()&&n.push(t)}function c(t){let e=t instanceof Error?t.constructor.name:typeof t;a({kind:"error_shape",errorClass:e})}async function l(){if(n.length===0)return;let t=o();if(!t){n.length=0;return}let e=n.splice(0,n.length).map(s);try{await fetch(`${t.host}/batch/`,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({api_key:t.apiKey,batch:e}),signal:AbortSignal.timeout(2e3)})}catch{}}export{s as a,a as b,c,l as d};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.369 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
import { createRequire as __sootsimCreateRequire } from 'node:module'
|
|
3
3
|
var require = __sootsimCreateRequire(import.meta.url)
|
|
4
|
-
import{b as Jt,c as qt}from"./chunk-
|
|
4
|
+
import{b as Jt,c as qt}from"./chunk-2PVVIPQS.js";import{a as Lt,b as Wt}from"./chunk-ZNNE5MAV.js";import{a as le}from"./chunk-YLNSLMQM.js";import{a as se,b as ge,c as _t,d as jt,e as Bt,f as Ct,g as Dt}from"./chunk-TTUZ5MCK.js";import{a as ye,b as Me}from"./chunk-YPBDPVLR.js";import{j as Pt}from"./chunk-COXCR6UU.js";import{a as Q,b as C,c as B,d as Ne,e as te,f as z,g as ue,h as fe,i as Rt,j as Et,k as Ie,l as At}from"./chunk-2APXX4RN.js";import{C as Ft,E as Tt,G as de,H as Ot,N as Le,a as xe,b as ut,c as Se,d as pt,e as mt,f as ft,g as gt,h as yt,i as ht,j as bt,k as wt,l as ke,m as je,n as Be,o as Ce,p as $t,q as xt,r as me,s as St,t as ve,u as De,v as kt,w as vt,x as Nt,y as It,z as Mt}from"./chunk-D6MGELKZ.js";import{a as V}from"./chunk-N5KDDGV6.js";import{e as nt,j as rt,r as it,t as at,v as lt,w as ct,x as dt,y as ae}from"./chunk-H2GB2PLY.js";import{a as tt}from"./chunk-VGJLCFSC.js";import{c as ot,d as _e,f as st}from"./chunk-5QFJFASW.js";import{a as ce}from"./chunk-A72MIIJI.js";function We(e){return`(async () => {
|
|
5
5
|
const bridge = globalThis.SootSim && globalThis.SootSim.bridges && globalThis.SootSim.bridges.hotRemount
|
|
6
6
|
if (!bridge || typeof bridge.reloadExternalApp !== 'function') return false
|
|
7
7
|
await bridge.reloadExternalApp({ resetStorage: ${e?"true":"false"} })
|
|
@@ -112,7 +112,7 @@ import{b as Jt,c as qt}from"./chunk-OZJMWTGA.js";import{a as Lt,b as Wt}from"./c
|
|
|
112
112
|
`),process.exit(0))}let o=["do","get","debug","wait"].map(s=>_e(s,x)).filter(s=>s!=null).join(`
|
|
113
113
|
|
|
114
114
|
`);console.log(`${o}
|
|
115
|
-
`),process.exit(0)}let F=u.wsPort,$=u.simId,A=u.simIdSource,O=u.commandTimeoutMs;if(h==="get"&&p==="diagnosis"){let x=l.indexOf("diagnosis"),o=x>=0?[...l.slice(0,x),...l.slice(x+1)]:l,{runDiagnose:s}=await import("./diagnose-
|
|
115
|
+
`),process.exit(0)}let F=u.wsPort,$=u.simId,A=u.simIdSource,O=u.commandTimeoutMs;if(h==="get"&&p==="diagnosis"){let x=l.indexOf("diagnosis"),o=x>=0?[...l.slice(0,x),...l.slice(x+1)]:l,{runDiagnose:s}=await import("./diagnose-HDRTUPDO.js"),n=await s(["recent",...o],t);process.exitCode=n;return}if(h==="do"&&p==="scan"){let{runCamera:x}=await import("./camera-MNK73TYV.js");process.exitCode=await x(l,{port:t.port});return}if(p==="list"&&l.some(x=>x==="--drivers"||x==="-D")){let{buildDriverListRows:x}=await import("./drivers-OR2JPAXD.js"),o=x();console.log(` available drivers (${o.length}):
|
|
116
116
|
`);let s=Math.max(...o.map(i=>i.id.length),6),n=Math.max(...o.map(i=>i.kind.length),4);for(let i of o){let d=i.available?"\u2713":"\u2717",m=i.id.padEnd(s),f=i.kind.padEnd(n);console.log(` ${d} ${m} ${f} ${i.description}`),i.available&&i.detail?console.log(` ${i.detail}`):!i.available&&i.reason&&console.log(` unavailable: ${i.reason}`)}return}let c=lt(u),_=$||"default",E=new Set(["errors","warnings","requests","js","reload","globals","perf","storage-clear","list","wait","sleep"]),j=200;function q(x){let o=x.replace(/\s+/g," ").trim();if(!o)return"";if(/^<(!doctype html|html|\?xml)|<body[\s>]/i.test(o)){let n=/<title[^>]*>([^<]+)<\/title>/i.exec(x)?.[1]?.trim(),i=/<body[^>]*>([\s\S]*?)<\//i.exec(x)?.[1]?.replace(/<[^>]+>/g," ").replace(/\s+/g," ").trim().slice(0,80),d=n||i||"html error page";return`<html ${x.length}B> "${d}" (body elided \u2014 add --json for the full payload)`}return o.length<=j?o:`${o.slice(0,j)}\u2026 (+${o.length-j} more bytes)`}function L(x){let o=x.displayUrl||x.url;return x.status!=null?`${x.method} ${o} -> ${x.status}${x.statusText?` ${x.statusText}`:""}`:x.error?`${x.method} ${o} -> ${x.error}`:`${x.method} ${o}`}async function M(x){let o=ce()?400:200;try{let{settled:s,elapsed:n}=await se({bridge:x,maxMs:o,pollMs:32,stablePolls:2});s||process.stderr.write(` \u26A0 auto-wait timed out after ${n??o}ms \u2014 next command may see mid-animation state. use \`rnx do settle\` for a longer wait.
|
|
117
117
|
`)}catch{}}function P(x,o){if(o.result?.reason==="offscreen"){let{x:s,y:n,screen:i}=o.result;console.error(` tap failed: ${x} resolved to (${Math.round(s)},${Math.round(n)}), outside the ${i?.width}x${i?.height} screen`),console.error(" the node exists but is scrolled out of view \u2014 scroll it on-screen first (rnx do scroll / swipe), then tap.");return}console.error(` tap failed: ${x} stayed visible but did not receive a hittable press after ${o.attempts} attempt${o.attempts===1?"":"s"}`),o.result&&console.error(` last result: ${JSON.stringify(o.result)}`)}async function Y(){try{return await c.send({type:"evaluate",code:`(() => ({
|
|
118
118
|
console: ${ve},
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.369 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
import { createRequire as __sootsimCreateRequire } from 'node:module'
|
|
3
3
|
var require = __sootsimCreateRequire(import.meta.url)
|
|
4
4
|
async function p({bridge:t,simId:a,maxMs:n,pollMs:s=50,stablePolls:o=3,strict:i=!1}){let c=await t.send({type:"evaluate",simId:a,code:`(async () => {
|