rnxsim 0.1.318 → 0.1.319
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/detox.ts +16 -5
- package/cli/commands/inspect.ts +35 -8
- package/cli/commands/maestro.ts +1 -1
- package/detox/index.ts +155 -15
- package/dist-cli/bin.js +5 -5
- package/dist-cli/chunks/{agent-OFH7IJEA.js → agent-Q4VAKGOL.js} +2 -2
- package/dist-cli/chunks/{agent-wrapper-VF6BEPVN.js → agent-wrapper-Q2O4TR7H.js} +2 -2
- package/dist-cli/chunks/{app-fonts-ERM34FJ5.js → app-fonts-B7UP3XTI.js} +2 -2
- package/dist-cli/chunks/{assert-IGMBFTLH.js → assert-NAFO4KMH.js} +2 -2
- package/dist-cli/chunks/{auth-HSBBTE4P.js → auth-CNUGYLCX.js} +2 -2
- package/dist-cli/chunks/{beta-347FXXJ7.js → beta-GN5BSED6.js} +2 -2
- package/dist-cli/chunks/{camera-OM4DK5HE.js → camera-EJRFUEXV.js} +2 -2
- package/dist-cli/chunks/{chunk-6YA7ITPB.js → chunk-2TNUPISH.js} +2 -2
- package/dist-cli/chunks/{chunk-NOD2WL7K.js → chunk-3DEQXXSF.js} +3 -3
- package/dist-cli/chunks/{chunk-V43DZ6MG.js → chunk-3F3R7BM4.js} +2 -2
- package/dist-cli/chunks/{chunk-EBZQKLA4.js → chunk-4UY4JSQ4.js} +1 -1
- package/dist-cli/chunks/{chunk-GLMYWXLH.js → chunk-522E7BRF.js} +122 -122
- package/dist-cli/chunks/{chunk-FL5R6QVE.js → chunk-5ABSWU6L.js} +2 -2
- package/dist-cli/chunks/{chunk-SIGP7L6X.js → chunk-5KXQT465.js} +1 -1
- package/dist-cli/chunks/{chunk-IYCPNB23.js → chunk-6BGXKWGF.js} +2 -2
- package/dist-cli/chunks/{chunk-SYUJCAYN.js → chunk-72VB52IV.js} +1 -1
- package/dist-cli/chunks/{chunk-MXSNB6VA.js → chunk-76EVUPAL.js} +1 -1
- package/dist-cli/chunks/{chunk-BPXQP2WT.js → chunk-7DABL656.js} +2 -2
- package/dist-cli/chunks/{chunk-KRYYXTD6.js → chunk-7IW3PBRN.js} +2 -2
- package/dist-cli/chunks/{chunk-PCS73SCM.js → chunk-AX7PASOS.js} +2 -2
- package/dist-cli/chunks/{chunk-ANCTBUP7.js → chunk-AZ6S36CJ.js} +2 -2
- package/dist-cli/chunks/{chunk-CCJGCZII.js → chunk-B27W3QWS.js} +1 -1
- package/dist-cli/chunks/{chunk-GMR5HH6U.js → chunk-BQEWRZON.js} +1 -1
- package/dist-cli/chunks/{chunk-DD2XEHRT.js → chunk-BSCOA6LL.js} +2 -2
- package/dist-cli/chunks/{chunk-KX5YGB6L.js → chunk-BVVUWEDG.js} +2 -2
- package/dist-cli/chunks/{chunk-MY37MGCH.js → chunk-DD6F2WOA.js} +1 -1
- package/dist-cli/chunks/{chunk-53S3KEIU.js → chunk-DIADYUIH.js} +3 -3
- package/dist-cli/chunks/{chunk-X2SNFQUB.js → chunk-GHHVBATM.js} +2 -2
- package/dist-cli/chunks/{chunk-MA5RZO4L.js → chunk-HCM7K4AU.js} +2 -2
- package/dist-cli/chunks/{chunk-HGEVJQ2Z.js → chunk-HPO2HNJX.js} +2 -2
- package/dist-cli/chunks/{chunk-DCAN7GYY.js → chunk-IHBAZ6ZJ.js} +2 -2
- package/dist-cli/chunks/{chunk-C43A3HRV.js → chunk-IJYWC6QT.js} +2 -2
- package/dist-cli/chunks/{chunk-VAYHTDE7.js → chunk-JWAF5GXK.js} +2 -2
- package/dist-cli/chunks/{chunk-W6BKNLC4.js → chunk-JZIFPU64.js} +1 -1
- package/dist-cli/chunks/{chunk-SOWFP3GB.js → chunk-KMOLZN54.js} +1 -1
- package/dist-cli/chunks/{chunk-6VF3A4CX.js → chunk-L5JZXGYY.js} +1 -1
- package/dist-cli/chunks/{chunk-5FR3XPEJ.js → chunk-LKO7E4VO.js} +2 -2
- package/dist-cli/chunks/{chunk-UPTSCAXP.js → chunk-M52VGRRN.js} +1 -1
- package/dist-cli/chunks/{chunk-JBX2GVTM.js → chunk-PFRV3TNY.js} +2 -2
- package/dist-cli/chunks/{chunk-PO5I6Q3N.js → chunk-PYDVLJOW.js} +2 -2
- package/dist-cli/chunks/{chunk-NZ3MD6WX.js → chunk-QNNCKWZF.js} +1 -1
- package/dist-cli/chunks/{chunk-ZRQ5OUC3.js → chunk-R4JD7RQ5.js} +2 -2
- package/dist-cli/chunks/{chunk-YDK3RMDM.js → chunk-RIRZMX6H.js} +2 -2
- package/dist-cli/chunks/{chunk-BLBN76IW.js → chunk-RVKU4F4H.js} +1 -1
- package/dist-cli/chunks/{chunk-435RMSZJ.js → chunk-S5XIMHEZ.js} +2 -2
- package/dist-cli/chunks/{chunk-D35X4DGV.js → chunk-SPHYBQAZ.js} +2 -2
- package/dist-cli/chunks/chunk-TJSU45JD.js +4 -0
- package/dist-cli/chunks/{chunk-PYKSLOEU.js → chunk-UGYANOZR.js} +2 -2
- package/dist-cli/chunks/{chunk-36N5TMLR.js → chunk-VB6FBQBW.js} +2 -2
- package/dist-cli/chunks/{chunk-VWAZ2YDF.js → chunk-VLT3KCQT.js} +3 -3
- package/dist-cli/chunks/{chunk-6HOIAQW4.js → chunk-VQJMFDUN.js} +1 -1
- package/dist-cli/chunks/{chunk-FF6XN63V.js → chunk-WUZNWEBT.js} +1 -1
- package/dist-cli/chunks/{chunk-7IZ5QXUO.js → chunk-X2AHIPGY.js} +1 -1
- package/dist-cli/chunks/{chunk-XJPT7YWG.js → chunk-XJHAGKJD.js} +2 -2
- package/dist-cli/chunks/{chunk-YLTTM35B.js → chunk-YPDFFAE7.js} +2 -2
- package/dist-cli/chunks/{chunk-RUULSEKH.js → chunk-YS6EWKGV.js} +2 -2
- package/dist-cli/chunks/{chunk-L7W6D2IV.js → chunk-YT6RDBLT.js} +1 -1
- package/dist-cli/chunks/{chunk-TEVDJAWR.js → chunk-Z4LSUN4M.js} +1 -1
- package/dist-cli/chunks/{chunk-526RTRUB.js → chunk-Z72QDFQG.js} +2 -2
- package/dist-cli/chunks/{chunk-JD5O4M44.js → chunk-ZH5X2H73.js} +2 -2
- package/dist-cli/chunks/{cleanup-JQOSDZEP.js → cleanup-GBLORG7C.js} +2 -2
- package/dist-cli/chunks/cli-version-6C4ZR7I7.js +4 -0
- package/dist-cli/chunks/{compat-QHZRG5QJ.js → compat-OIWTQTTQ.js} +2 -2
- package/dist-cli/chunks/{config-YF4L25Q3.js → config-DZCL6YFH.js} +2 -2
- package/dist-cli/chunks/{control-GRLJ3W27.js → control-MY5IZSCI.js} +2 -2
- package/dist-cli/chunks/daemon-42K3PILG.js +4 -0
- package/dist-cli/chunks/{debug-PZOHF6WI.js → debug-6UQUAZKP.js} +3 -3
- package/dist-cli/chunks/{desktop-YX6QID7C.js → desktop-DFBFLSQ3.js} +3 -3
- package/dist-cli/chunks/detox-CIHUJOCI.js +52 -0
- package/dist-cli/chunks/{device-ZRHEHJ7R.js → device-7SOHSSJO.js} +2 -2
- package/dist-cli/chunks/{diagnose-ULSJOYWK.js → diagnose-P2FMX5HU.js} +2 -2
- package/dist-cli/chunks/{disk-cleanup-KLLOHU4N.js → disk-cleanup-6PP5CQVO.js} +2 -2
- package/dist-cli/chunks/drivers-CFJGYQFX.js +4 -0
- package/dist-cli/chunks/{film-FDMTLO5O.js → film-2WWHMPGU.js} +3 -3
- package/dist-cli/chunks/flow-KL7ZTVKL.js +4 -0
- package/dist-cli/chunks/help-T2OCMQPI.js +4 -0
- package/dist-cli/chunks/{hidden-runtime-alias-J5MGI3FF.js → hidden-runtime-alias-ZZMC3E6R.js} +2 -2
- package/dist-cli/chunks/{home-paths-XNVF5J2H.js → home-paths-Y6X4LFSU.js} +2 -2
- package/dist-cli/chunks/inspect-PVMJQHMF.js +4 -0
- package/dist-cli/chunks/install-desktop-NHQZI4EH.js +4 -0
- package/dist-cli/chunks/{login-BIBNRKGQ.js → login-BARKKDRL.js} +4 -4
- package/dist-cli/chunks/{logout-KI43UF3Y.js → logout-YVUMTGMP.js} +2 -2
- package/dist-cli/chunks/{maestro-4TUWVBVF.js → maestro-UPVELJ7G.js} +7 -7
- package/dist-cli/chunks/{maestro-generate-TWM4EXUJ.js → maestro-generate-EP76F4GB.js} +3 -3
- package/dist-cli/chunks/{mode-AAHQAKIM.js → mode-ULOBJKDO.js} +2 -2
- package/dist-cli/chunks/{optional-demo-registry-E5QZ2HAL.js → optional-demo-registry-O6RANNU3.js} +2 -2
- package/dist-cli/chunks/{perf-YYUZEBF7.js → perf-ANPUHMRS.js} +2 -2
- package/dist-cli/chunks/{permissions-IGD736BA.js → permissions-NGMRAUGD.js} +2 -2
- package/dist-cli/chunks/{record-MOHHUJAY.js → record-CBO3QGRB.js} +3 -3
- package/dist-cli/chunks/{report-issue-NQT5KFBX.js → report-issue-K7XKNJ2D.js} +2 -2
- package/dist-cli/chunks/reset-FXAX2W5A.js +4 -0
- package/dist-cli/chunks/runtime-GNCU66RR.js +4 -0
- package/dist-cli/chunks/{screenshot-command-GR5UBZGY.js → screenshot-command-KZZSYRX5.js} +3 -3
- package/dist-cli/chunks/{screenshot-layers-ZO3RNBJY.js → screenshot-layers-Z3KSMJ3R.js} +2 -2
- package/dist-cli/chunks/{screenshots-capture-LKZID6SS.js → screenshots-capture-QTB5GQNA.js} +2 -2
- package/dist-cli/chunks/{serve-GW3TH5HX.js → serve-JKTMCDG2.js} +2 -2
- package/dist-cli/chunks/{setup-N3JKRPQK.js → setup-GCAPEHZH.js} +2 -2
- package/dist-cli/chunks/{skills-IGHG3SV4.js → skills-Y4YDYEKA.js} +2 -2
- package/dist-cli/chunks/{state-CXCLASA5.js → state-3HTG2CZU.js} +2 -2
- package/dist-cli/chunks/{storage-RO6GHQ5L.js → storage-XQE2XZJM.js} +2 -2
- package/dist-cli/chunks/store-22QXHYUS.js +4 -0
- package/dist-cli/chunks/telemetry-VYGOHQWW.js +4 -0
- package/dist-cli/chunks/{timeline-TUPEWR6V.js → timeline-XYACO63Y.js} +2 -2
- package/dist-cli/chunks/{upgrade-HTNHXQDP.js → upgrade-EVQTCUSG.js} +2 -2
- package/dist-cli/chunks/upload-XH3RQR4U.js +4 -0
- package/dist-cli/chunks/{version-7ZYXM64U.js → version-NLGYSRXS.js} +2 -2
- package/dist-cli/chunks/{web-PMRPY2NY.js → web-25OBFWDS.js} +2 -2
- package/dist-cli/chunks/{what-happened-QSFD6H7W.js → what-happened-MRN6CH5W.js} +2 -2
- package/dist-lib/agent-daemon-client.cjs +1 -1
- package/dist-lib/agent-events.cjs +1 -1
- package/dist-lib/agent-identity.cjs +1 -1
- package/dist-lib/agent-sessions.cjs +1 -1
- package/dist-lib/attached-projects.cjs +1 -1
- package/dist-lib/auth/shared-session.cjs +1 -1
- package/dist-lib/backend-origin.cjs +1 -1
- package/dist-lib/beta.cjs +1 -1
- package/dist-lib/beta.mjs +1 -1
- package/dist-lib/bridge-constants.cjs +1 -1
- package/dist-lib/bridge-contract.cjs +1 -1
- package/dist-lib/cli-constants.cjs +1 -1
- package/dist-lib/config.cjs +1 -1
- package/dist-lib/detox/index.cjs +93 -11
- 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/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.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 +1 -1
- package/dist-lib/sdk.mjs +1 -1
- package/dist-lib/skills.cjs +54 -17
- package/dist-lib/vite.cjs +1 -1
- package/package.json +1 -1
- package/skills/rnx-perf/SKILL.md +17 -0
- package/src/vite-plugin.ts +5 -1
- package/dist-cli/chunks/chunk-QZ73ZUC7.js +0 -4
- package/dist-cli/chunks/cli-version-4ZJSLJIZ.js +0 -4
- package/dist-cli/chunks/daemon-4ICA6HT6.js +0 -4
- package/dist-cli/chunks/detox-ZCPGXLXA.js +0 -52
- package/dist-cli/chunks/drivers-IANQ4PS2.js +0 -4
- package/dist-cli/chunks/flow-2NM5A2NB.js +0 -4
- package/dist-cli/chunks/help-ZFLHXXET.js +0 -4
- package/dist-cli/chunks/inspect-JBEVVCFB.js +0 -4
- package/dist-cli/chunks/install-desktop-I4K4ESL3.js +0 -4
- package/dist-cli/chunks/reset-KC4YU4RE.js +0 -4
- package/dist-cli/chunks/runtime-UB6LX3HK.js +0 -4
- package/dist-cli/chunks/store-SFC4MMBY.js +0 -4
- package/dist-cli/chunks/telemetry-B5SBPVLX.js +0 -4
- package/dist-cli/chunks/upload-NXMYH3HR.js +0 -4
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.319 | (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-PFRV3TNY.js";import{b as y,c as R,d as m,e as w,f as a}from"./chunk-3F3R7BM4.js";import{n as x}from"./chunk-S5XIMHEZ.js";import{I as g,J as u,K as d,Q as h,l as p}from"./chunk-QNNCKWZF.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: ${m}`),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
|
rnxsim runtime \u2014 manage engine runtimes under ~/.sootsim/runtimes/
|
|
7
7
|
|
|
@@ -27,4 +27,4 @@ examples:
|
|
|
27
27
|
rnxsim runtime install --channel beta
|
|
28
28
|
rnxsim runtime use 1.2.3
|
|
29
29
|
rnxsim 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("rnxsim 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("rnxsim 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-Y6X4LFSU.js"),n=o();if(!e(n))return!1;let s=x();return new Promise(i=>{let l=!1,r=!1,f=N=>{l||(l=!0,i(N))},c=new E(`ws://127.0.0.1:${s}`,{handshakeTimeout:800}),v=setTimeout(()=>{try{c.close()}catch{}f(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),f(r)}),c.on("error",()=>{clearTimeout(v),f(!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: rnxsim 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 \`rnxsim runtime install ${e}\` first`),process.exit(1)),await k(e)}async function D(t){let e=t[0];e||(console.error(" usage: rnxsim runtime remove <version>"),process.exit(1)),u()===e&&(console.error(` cannot remove active runtime ${e}`),console.error(" switch with `rnxsim 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: rnxsim runtime notes"),process.exit(1));let{config:e}=await $(),o=e?.runtimeVersion??u();if(!o){console.log(" no active runtime"),console.log(` release notes: ${m}`);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,6 +1,6 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.319 | (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{I as F,J as j,K as H,k as N,l as U,v as _,z as E}from"./chunk-
|
|
4
|
+
import{I as F,J as j,K as H,k as N,l as U,v as _,z as E}from"./chunk-QNNCKWZF.js";import{a as L}from"./chunk-4UY4JSQ4.js";import G from"node:fs";import Z from"node:path";function A(e){return e.length<=100&&/^[0-9A-Za-z][0-9A-Za-z._+-]*$/.test(e)}function D(e){try{return G.readdirSync(e.runtimesDir(),{withFileTypes:!0}).filter(c=>c.isDirectory()).map(c=>c.name).sort(k)}catch{return[]}}function M(e,c){return Z.posix.basename(e.tarballPath(c))}function k(e,c){let l=f=>{let v=f.indexOf("-"),V=v>=0?f.slice(0,v):f,T=v>=0?f.slice(v+1):"",$=V.split(".").map(S=>Number.parseInt(S,10));return $.some(S=>!Number.isFinite(S))?[[Number.POSITIVE_INFINITY],f]:[$,T]},[m,u]=l(e),[R,x]=l(c);for(let f=0;f<Math.max(m.length,R.length);f++){let v=m[f]??0,V=R[f]??0;if(v!==V)return v-V}return u===x?0:u?x?u<x?-1:1:-1:1}import{spawn as B}from"node:child_process";import J from"node:crypto";import o from"node:fs";import Y from"node:os";import y from"node:path";import{Readable as q}from"node:stream";import{pipeline as K}from"node:stream/promises";var Q=2;function W(e){function c(){try{let n=JSON.parse(o.readFileSync(e.configFile(),"utf8"));return n&&typeof n=="object"?n:{}}catch{return{}}}function l(n){let t=c();return(n||process.env[e.env.cdnOrigin]||t.cdnOrigin||e.defaultCdnOrigin).replace(/\/+$/,"")}function m(n){let t=c();return n||process.env[e.env.channel]||t.runtimeChannel||"stable"}function u(){if(!e.env.pin)return null;let n=process.env[e.env.pin];if(n&&n.trim())return n.trim();let t=c();return typeof t.runtimeVersion=="string"&&t.runtimeVersion.trim()?t.runtimeVersion.trim():null}function R(n){let t=new URL(`${l(n)}${e.manifestPath}`);return t.searchParams.set("t",String(Date.now())),t.toString()}function x(n,t){return`${l(t)}${e.tarballPath(n)}`}async function f(n){let t=R(n),r=await fetch(t,{headers:{Accept:"application/json"}});if(!r.ok)throw new Error(`manifest fetch failed: ${r.status} ${r.statusText} (${t})`);return await r.json()}function v(n,t={}){let r=m(t.channel),i=t.version||u()||n.channels[r]?.latest;if(!i)throw new Error(`no version specified and channel '${r}' has no latest entry in the manifest`);if(!A(i))throw new Error(`invalid runtime version: ${i}`);let h=n.versions[i];if(!h)throw new Error(`version ${i} not found in manifest; available: ${Object.keys(n.versions).slice(-10).join(", ")||"(none)"}`);return{version:i,channel:r,entry:h}}async function V(n={}){e.ensureHome();let t=l(n.cdnOrigin),r=await f(t),{version:i,channel:h,entry:a}=v(r,n),d=e.runtimeDir(i),g=n.setActive!==!1,O=[i,...n.protectVersions??[]];if(I({protectVersions:O}),!n.force&&o.existsSync(y.join(d,e.installedMarker)))return g&&e.writeActiveRuntime(i),I({protectVersions:O}),{version:i,channel:h,cdnOrigin:t,runtimeDir:d,installed:!1,activated:g,manifest:r};let P=a.tarball||x(i,t),b=o.mkdtempSync(y.join(Y.tmpdir(),`${e.id}-runtime-download-`)),w=y.join(b,M(e,i)),p=y.join(y.dirname(d),`.installing-${i}-${process.pid}`);o.rmSync(p,{recursive:!0,force:!0});try{process.stderr.write(`${e.id}: downloading runtime ${i}\u2026
|
|
5
5
|
`),await X(P,w),process.stderr.write(`${e.id}: extracting runtime ${i}\u2026
|
|
6
6
|
`);let s=await ee(w);if(s!==a.sha256)throw new Error(`sha256 mismatch for runtime ${i}: expected ${a.sha256}, actual ${s}`);if(o.mkdirSync(p,{recursive:!0}),await ne(w,p),!o.existsSync(y.join(p,e.installedMarker)))throw new Error(`extracted tarball for runtime ${i} is missing ${e.installedMarker}`);o.rmSync(d,{recursive:!0,force:!0}),o.renameSync(p,d)}catch(s){throw o.rmSync(p,{recursive:!0,force:!0}),s}finally{o.rmSync(b,{recursive:!0,force:!0})}return g&&e.writeActiveRuntime(i),I({protectVersions:O}),{version:i,channel:h,cdnOrigin:t,runtimeDir:d,installed:!0,activated:g,manifest:r}}async function T(n={}){e.ensureHome(),I({protectVersions:n.protectVersions});let t=l(n.cdnOrigin),r=m(n.channel),i=u();if(i){let p=e.readActiveRuntime(),s=o.existsSync(y.join(e.runtimeDir(i),e.installedMarker));if(p===i&&s)return{checked:!0,updated:!1,reason:`runtime is pinned to ${i}`,activeVersion:p,latestVersion:i};let C=await V({version:i,channel:r,cdnOrigin:t,setActive:!1,protectVersions:n.protectVersions});return{checked:!0,updated:!0,reason:`runtime is pinned to ${i}`,activeVersion:i,latestVersion:i,install:C}}let h=await f(t),a=h.channels[r]?.latest;if(!a)return{checked:!0,updated:!1,reason:`channel '${r}' has no latest runtime`,activeVersion:e.readActiveRuntime()};if(!h.versions[a])return{checked:!0,updated:!1,reason:`manifest is missing version ${a}`,activeVersion:e.readActiveRuntime(),latestVersion:a};let g=e.readActiveRuntime(),O=g?e.runtimeDir(g):null,P=O?o.existsSync(y.join(O,e.installedMarker)):!1;if(!(!g||!P||k(a,g)>0))return{checked:!0,updated:!1,reason:"active runtime is current",activeVersion:g,latestVersion:a};let w=await V({version:a,channel:r,cdnOrigin:t,setActive:!1,protectVersions:n.protectVersions});return{checked:!0,updated:!0,activeVersion:a,latestVersion:a,install:w}}async function $(n={}){let t=e.readActiveRuntime(),r=u();if(r)return{active:t,latest:r,pinned:r,outdated:t!==r};try{let i=await f(l(n.cdnOrigin)),h=m(n.channel),a=i.channels[h]?.latest??null,d=!!(a&&(!t||k(a,t)>0));return{active:t,latest:a,pinned:null,outdated:d}}catch{return{active:t,latest:null,pinned:null,outdated:!1}}}function S(n={}){e.ensureHome();let t=Math.max(1,Math.floor(n.retainVersions??Q)),r=D(e),i=new Set(r),h=e.readActiveRuntime(),a=u(),d=new Set;for(let s of[h,a,...n.protectVersions??[]])s&&i.has(s)&&d.add(s);for(let s of[...r].reverse()){if(d.size>=t)break;d.add(s)}let g="__RUNTIME_VERSION__",O=M(e,g),P=O.indexOf(g),b=O.slice(0,P),w=O.slice(P+g.length),p=[];if(P>=0)try{p=o.readdirSync(e.cacheDir(),{withFileTypes:!0}).filter(s=>{if(!s.isFile())return!1;let C=s.name.startsWith(b)&&s.name.endsWith(w),z=s.name.startsWith(b)&&s.name.endsWith(`${w}.partial`);return C||z}).map(s=>y.join(e.cacheDir(),s.name)).sort()}catch{}return{activeVersion:h,pinnedVersion:a,keepVersions:r.filter(s=>d.has(s)),removeVersions:r.filter(s=>!d.has(s)),removeCacheFiles:p}}function I(n={}){let t=S(n);for(let r of t.removeVersions)o.rmSync(e.runtimeDir(r),{recursive:!0,force:!0});for(let r of t.removeCacheFiles)o.rmSync(r,{force:!0});return t}return{product:e,resolveCdnOrigin:l,resolveChannel:m,resolvePin:u,manifestUrl:R,tarballUrl:x,fetchManifest:f,resolveVersion:v,install:V,updateToLatest:T,checkUpToDate:$,planLocalRetention:S,pruneLocalRetention:I,listInstalled:()=>D(e)}}async function X(e,c){let l=await fetch(e);if(!l.ok||!l.body)throw new Error(`download failed: ${l.status} ${l.statusText} (${e})`);o.mkdirSync(y.dirname(c),{recursive:!0});let m=`${c}.partial`;try{await K(q.fromWeb(l.body),o.createWriteStream(m)),o.renameSync(m,c)}catch(u){try{o.unlinkSync(m)}catch{}throw u}}function ee(e){return new Promise((c,l)=>{let m=J.createHash("sha256"),u=o.createReadStream(e);u.on("data",R=>m.update(R)),u.on("error",l),u.on("end",()=>c(m.digest("hex")))})}function ne(e,c){return new Promise((l,m)=>{let u=B("tar",["-xzf",e,"-C",c],{stdio:["ignore","inherit","inherit"]});u.on("error",m),u.on("exit",R=>{R===0?l():m(new Error(`tar exited with code ${R}`))})})}var te="https://contrast.dev",ye=`${L.origin}/changelog`,Ve="https://contrast.dev/api/changelog/sootsim",ie={id:"sootsim",defaultCdnOrigin:te,manifestPath:"/runtimes/manifest.json",tarballPath:e=>`/runtimes/sootsim-runtime-${e}.tar.gz`,installedMarker:"index.html",env:{cdnOrigin:"SOOTSIM_CDN_ORIGIN",channel:"SOOTSIM_RUNTIME_CHANNEL"},ensureHome:F,configFile:E,runtimesDir:N,runtimeDir:U,cacheDir:_,readActiveRuntime:j,writeActiveRuntime:H},we=W(ie);export{A as a,k as b,te as c,ye as d,Ve as e,we as f};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.319 | (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:"rnxsim",domain:"rnxsim.com",origin:"https://rnxsim.com"});export{n as a};
|