rnxsim 0.1.341 → 0.1.343

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.
Files changed (162) hide show
  1. package/dist-cli/bin.js +5 -5
  2. package/dist-cli/chunks/{agent-2VZNJ5EK.js → agent-RFD32ACU.js} +2 -2
  3. package/dist-cli/chunks/{agent-wrapper-HUCI32H2.js → agent-wrapper-2YLW2HQK.js} +2 -2
  4. package/dist-cli/chunks/{app-fonts-X25CBLGM.js → app-fonts-6OATDF3Y.js} +2 -2
  5. package/dist-cli/chunks/{assert-RC7CNDDD.js → assert-PSQICFOY.js} +2 -2
  6. package/dist-cli/chunks/{auth-4P5ICOU7.js → auth-XWLFKZT7.js} +2 -2
  7. package/dist-cli/chunks/{beta-QHOS4FLY.js → beta-I6WTVM6C.js} +2 -2
  8. package/dist-cli/chunks/{camera-XSDDJCA6.js → camera-45HKTLWG.js} +2 -2
  9. package/dist-cli/chunks/{chunk-2X65F3HT.js → chunk-2EVBZ37G.js} +1 -1
  10. package/dist-cli/chunks/{chunk-F67L5MAP.js → chunk-2IPMH24A.js} +2 -2
  11. package/dist-cli/chunks/{chunk-QWGOVJGL.js → chunk-34KDMQ6U.js} +2 -2
  12. package/dist-cli/chunks/{chunk-7ZUYO4NL.js → chunk-3CMKNWRL.js} +1 -1
  13. package/dist-cli/chunks/{chunk-RQZ6VKLY.js → chunk-3FYJ7U3C.js} +2 -2
  14. package/dist-cli/chunks/{chunk-2YG35MTR.js → chunk-44LRQEU3.js} +2 -2
  15. package/dist-cli/chunks/{chunk-6W2R675K.js → chunk-4PFMDBLB.js} +1 -1
  16. package/dist-cli/chunks/{chunk-JHDSF45Z.js → chunk-4RKTGL63.js} +1 -1
  17. package/dist-cli/chunks/{chunk-KH2WSUUG.js → chunk-5FB4EA33.js} +2 -2
  18. package/dist-cli/chunks/{chunk-53AW6GK5.js → chunk-5SCIDXJD.js} +3 -3
  19. package/dist-cli/chunks/{chunk-KDVRXHJ4.js → chunk-6IVEGYWV.js} +2 -2
  20. package/dist-cli/chunks/{chunk-BYYIT6KJ.js → chunk-6SLM6URN.js} +1 -1
  21. package/dist-cli/chunks/{chunk-7WPJ6WLF.js → chunk-7WKV6EKX.js} +2 -2
  22. package/dist-cli/chunks/chunk-AKV2DGKM.js +4 -0
  23. package/dist-cli/chunks/{chunk-I6A6OXPV.js → chunk-BA3HRFJ5.js} +1 -1
  24. package/dist-cli/chunks/{chunk-UFBBXUUZ.js → chunk-BJUNXCPO.js} +1 -1
  25. package/dist-cli/chunks/{chunk-4Q5BGK2P.js → chunk-BKMPV6N4.js} +1 -1
  26. package/dist-cli/chunks/{chunk-QSBX4L73.js → chunk-CUVY4A2A.js} +2 -2
  27. package/dist-cli/chunks/{chunk-K4WBNA57.js → chunk-DASP2EKF.js} +1 -1
  28. package/dist-cli/chunks/{chunk-NKYFMLNX.js → chunk-DC7TS573.js} +2 -2
  29. package/dist-cli/chunks/{chunk-4H6JNBY6.js → chunk-DPJGB7MP.js} +2 -2
  30. package/dist-cli/chunks/{chunk-FKYMTZEX.js → chunk-ES5BHPTS.js} +2 -2
  31. package/dist-cli/chunks/{chunk-WCNBNVO4.js → chunk-FCHRGEHA.js} +2 -2
  32. package/dist-cli/chunks/{chunk-4ECKZJFH.js → chunk-FRRHCLG2.js} +1 -1
  33. package/dist-cli/chunks/{chunk-233ZNBFD.js → chunk-G3B2RZ47.js} +2 -2
  34. package/dist-cli/chunks/{chunk-JQXE2VJ5.js → chunk-G7S6T5OX.js} +2 -2
  35. package/dist-cli/chunks/{chunk-QB3OJYP2.js → chunk-HD6P3W5R.js} +1 -1
  36. package/dist-cli/chunks/{chunk-7DDDFAWL.js → chunk-HFNESSHG.js} +2 -2
  37. package/dist-cli/chunks/{chunk-52FRHDR5.js → chunk-HJHFC5ZZ.js} +1 -1
  38. package/dist-cli/chunks/{chunk-G3PR7UQP.js → chunk-HJXIBZ35.js} +2 -2
  39. package/dist-cli/chunks/{chunk-LVVXPCZU.js → chunk-I7HHBFSD.js} +2 -2
  40. package/dist-cli/chunks/{chunk-5XINSS6Z.js → chunk-JOE3J46E.js} +2 -2
  41. package/dist-cli/chunks/{chunk-4GPFCG2O.js → chunk-KLMWLQAO.js} +1 -1
  42. package/dist-cli/chunks/{chunk-AJ54R4E7.js → chunk-KON6XG4Y.js} +2 -2
  43. package/dist-cli/chunks/{chunk-LD4Y4JIQ.js → chunk-LV2G34IX.js} +1 -1
  44. package/dist-cli/chunks/{chunk-YZAD6XZI.js → chunk-OYLIWHDB.js} +2 -2
  45. package/dist-cli/chunks/{chunk-NDUETWBJ.js → chunk-P3IDK7FR.js} +2 -2
  46. package/dist-cli/chunks/{chunk-7HT77JWW.js → chunk-QPTJNLPT.js} +1 -1
  47. package/dist-cli/chunks/{chunk-EQFQ5HQO.js → chunk-R7X74I3I.js} +3 -3
  48. package/dist-cli/chunks/{chunk-4AXUIGKV.js → chunk-RO3WVQPB.js} +2 -2
  49. package/dist-cli/chunks/{chunk-FF2RR6C3.js → chunk-RWYA2USN.js} +1 -1
  50. package/dist-cli/chunks/{chunk-LHG5TW5H.js → chunk-SAUCA7SN.js} +3 -3
  51. package/dist-cli/chunks/{chunk-76IAWM7K.js → chunk-SU7RE3PV.js} +2 -2
  52. package/dist-cli/chunks/{chunk-QJSDXTPT.js → chunk-SW4DV2TY.js} +1 -1
  53. package/dist-cli/chunks/{chunk-DCDS3KAC.js → chunk-T4T6DDKM.js} +2 -2
  54. package/dist-cli/chunks/{chunk-RK3WWN2D.js → chunk-TMJGPUWJ.js} +2 -2
  55. package/dist-cli/chunks/{chunk-ZJSHTXBM.js → chunk-TQ5OPG33.js} +1 -1
  56. package/dist-cli/chunks/{chunk-7NGLNCN6.js → chunk-TQRVLK64.js} +1 -1
  57. package/dist-cli/chunks/{chunk-XPBSKCKS.js → chunk-VC4TDPJQ.js} +3 -3
  58. package/dist-cli/chunks/{chunk-L3PC6LFJ.js → chunk-W7EXE22C.js} +2 -2
  59. package/dist-cli/chunks/{chunk-MMI4WQQV.js → chunk-WDA4QR6U.js} +2 -2
  60. package/dist-cli/chunks/{chunk-SPNRKIFH.js → chunk-YKKVDKLE.js} +2 -2
  61. package/dist-cli/chunks/{chunk-4MLXHZHM.js → chunk-YLFDA4WW.js} +2 -2
  62. package/dist-cli/chunks/{cleanup-4KWMEI5G.js → cleanup-OU4VKFC3.js} +2 -2
  63. package/dist-cli/chunks/cli-version-REQOM22G.js +4 -0
  64. package/dist-cli/chunks/{compat-INWNQKQV.js → compat-GAEKP67T.js} +2 -2
  65. package/dist-cli/chunks/{config-F4DEDFMB.js → config-QTFXJKD6.js} +2 -2
  66. package/dist-cli/chunks/{control-SCM7VLMN.js → control-VQJURMFD.js} +2 -2
  67. package/dist-cli/chunks/daemon-ETA375WE.js +4 -0
  68. package/dist-cli/chunks/{debug-5WGWI2DL.js → debug-F5N2LO4T.js} +3 -3
  69. package/dist-cli/chunks/{desktop-LWE4NVXH.js → desktop-I4ILT4BS.js} +3 -3
  70. package/dist-cli/chunks/{detox-X67W4OC2.js → detox-2HMPYSP4.js} +2 -2
  71. package/dist-cli/chunks/{device-7WEEJ2U4.js → device-5LWLOB5R.js} +2 -2
  72. package/dist-cli/chunks/{diagnose-CCDNAIJT.js → diagnose-5S4IQPAP.js} +2 -2
  73. package/dist-cli/chunks/{disk-cleanup-2O64YUCH.js → disk-cleanup-CJSZVJQX.js} +2 -2
  74. package/dist-cli/chunks/drivers-R4YB2XAF.js +4 -0
  75. package/dist-cli/chunks/{film-5WSW7OMT.js → film-HCPU2TDB.js} +3 -3
  76. package/dist-cli/chunks/flow-3VQL6XZT.js +4 -0
  77. package/dist-cli/chunks/help-2RYCKZ2G.js +4 -0
  78. package/dist-cli/chunks/{hidden-runtime-alias-TLECMPNB.js → hidden-runtime-alias-YYUEZQPR.js} +2 -2
  79. package/dist-cli/chunks/{home-paths-5T3CHQOF.js → home-paths-3FXISM5I.js} +2 -2
  80. package/dist-cli/chunks/inspect-XDSX5D6D.js +4 -0
  81. package/dist-cli/chunks/install-desktop-OKVRLL35.js +4 -0
  82. package/dist-cli/chunks/{login-XUMA7MZC.js → login-4VCBPAY2.js} +4 -4
  83. package/dist-cli/chunks/{logout-JPZ4ELXD.js → logout-WSL5JS5R.js} +2 -2
  84. package/dist-cli/chunks/{maestro-SRSW7CGE.js → maestro-F5KK4RC4.js} +3 -3
  85. package/dist-cli/chunks/{maestro-generate-7JB65LYP.js → maestro-generate-6SUU3Y5I.js} +3 -3
  86. package/dist-cli/chunks/{mode-VEVCNMJ4.js → mode-CSWGOJLI.js} +2 -2
  87. package/dist-cli/chunks/{optional-demo-registry-5ASZFFGW.js → optional-demo-registry-Y6VJ4SVV.js} +2 -2
  88. package/dist-cli/chunks/{perf-GNZYAEHH.js → perf-NRWWAJL4.js} +2 -2
  89. package/dist-cli/chunks/{permissions-2QOVZC5W.js → permissions-OD62A3DJ.js} +2 -2
  90. package/dist-cli/chunks/{record-UPBLVFFZ.js → record-JZT2GM3G.js} +3 -3
  91. package/dist-cli/chunks/{report-issue-5JLQSMQN.js → report-issue-ZWSNHOPB.js} +2 -2
  92. package/dist-cli/chunks/reset-3C52YQCV.js +4 -0
  93. package/dist-cli/chunks/runtime-4V2RBUOR.js +4 -0
  94. package/dist-cli/chunks/{screenshot-command-RWP5QECD.js → screenshot-command-ZGJR7ICY.js} +3 -3
  95. package/dist-cli/chunks/{screenshot-layers-KKQNFC2A.js → screenshot-layers-5AQKOJZK.js} +2 -2
  96. package/dist-cli/chunks/{screenshots-capture-P32K3R3A.js → screenshots-capture-CPTWK5Y3.js} +2 -2
  97. package/dist-cli/chunks/{serve-YPY5Q7LF.js → serve-ERAZQGCJ.js} +2 -2
  98. package/dist-cli/chunks/{setup-OG6CDHRZ.js → setup-UG6PLYIL.js} +2 -2
  99. package/dist-cli/chunks/{skills-2W62A4VB.js → skills-NVWRBMEO.js} +2 -2
  100. package/dist-cli/chunks/{state-KPG5DSNA.js → state-QGLTKN6K.js} +2 -2
  101. package/dist-cli/chunks/{storage-SRRG2Q73.js → storage-OZMEZ4AV.js} +2 -2
  102. package/dist-cli/chunks/store-VPBQKKWA.js +4 -0
  103. package/dist-cli/chunks/telemetry-FRW7OCYZ.js +4 -0
  104. package/dist-cli/chunks/{timeline-RPN7Z4QD.js → timeline-EXLDREY3.js} +2 -2
  105. package/dist-cli/chunks/{upgrade-UKESJCPD.js → upgrade-4VWXQO6I.js} +2 -2
  106. package/dist-cli/chunks/upload-C6676NST.js +4 -0
  107. package/dist-cli/chunks/{version-SSQACF5S.js → version-WZM6XCD2.js} +2 -2
  108. package/dist-cli/chunks/{web-YOEHGW6Z.js → web-ZYPEUVWL.js} +2 -2
  109. package/dist-cli/chunks/{what-happened-FJRIYKWS.js → what-happened-KF2HLWKW.js} +2 -2
  110. package/dist-lib/agent-daemon-client.cjs +1 -1
  111. package/dist-lib/agent-events.cjs +1 -1
  112. package/dist-lib/agent-identity.cjs +1 -1
  113. package/dist-lib/agent-sessions.cjs +1 -1
  114. package/dist-lib/attached-projects.cjs +1 -1
  115. package/dist-lib/auth/shared-session.cjs +1 -1
  116. package/dist-lib/backend-origin.cjs +1 -1
  117. package/dist-lib/beta.cjs +1 -1
  118. package/dist-lib/beta.mjs +1 -1
  119. package/dist-lib/bridge-constants.cjs +1 -1
  120. package/dist-lib/bridge-contract.cjs +1 -1
  121. package/dist-lib/cli-constants.cjs +1 -1
  122. package/dist-lib/config.cjs +1 -1
  123. package/dist-lib/detox/index.cjs +1 -1
  124. package/dist-lib/dev-bundle-resolution.cjs +1 -1
  125. package/dist-lib/home-paths.cjs +1 -1
  126. package/dist-lib/host/bridge-host.cjs +1 -1
  127. package/dist-lib/host/fetch-proxy-handler.cjs +1 -1
  128. package/dist-lib/host/fetch-proxy-overrides.cjs +1 -1
  129. package/dist-lib/host/fetch-proxy-overrides.mjs +1 -1
  130. package/dist-lib/host/replacement-module-handler.cjs +1 -1
  131. package/dist-lib/host/websocket-proxy.cjs +1 -1
  132. package/dist-lib/index.cjs +1 -1
  133. package/dist-lib/jump-to-source-babel.cjs +1 -1
  134. package/dist-lib/menu.cjs +1 -1
  135. package/dist-lib/menu.mjs +1 -1
  136. package/dist-lib/metro-production-bundle.cjs +1 -1
  137. package/dist-lib/metro-production-bundle.mjs +1 -1
  138. package/dist-lib/metro.cjs +1 -1
  139. package/dist-lib/profiles.cjs +1 -1
  140. package/dist-lib/public-brand.cjs +1 -1
  141. package/dist-lib/react-native-host-modules.cjs +1 -1
  142. package/dist-lib/react-native-host-modules.mjs +1 -1
  143. package/dist-lib/render-mode.cjs +1 -1
  144. package/dist-lib/scripts/dev-server-scanner.cjs +1 -1
  145. package/dist-lib/sdk.cjs +1 -1
  146. package/dist-lib/sdk.mjs +1 -1
  147. package/dist-lib/skills.cjs +231 -27
  148. package/dist-lib/vite.cjs +1 -1
  149. package/package.json +1 -1
  150. package/dist-cli/chunks/chunk-ZDWXB3EA.js +0 -4
  151. package/dist-cli/chunks/cli-version-Z4G2ESLX.js +0 -4
  152. package/dist-cli/chunks/daemon-DK4C6KYV.js +0 -4
  153. package/dist-cli/chunks/drivers-V4T5FYDR.js +0 -4
  154. package/dist-cli/chunks/flow-ZYOGI4ND.js +0 -4
  155. package/dist-cli/chunks/help-67QX3FBL.js +0 -4
  156. package/dist-cli/chunks/inspect-IUPBR46H.js +0 -4
  157. package/dist-cli/chunks/install-desktop-G27H2W2G.js +0 -4
  158. package/dist-cli/chunks/reset-2OGMTXJO.js +0 -4
  159. package/dist-cli/chunks/runtime-FWJ7IWON.js +0 -4
  160. package/dist-cli/chunks/store-NIZZF3ZI.js +0 -4
  161. package/dist-cli/chunks/telemetry-BANF55KR.js +0 -4
  162. package/dist-cli/chunks/upload-JM2R6DKU.js +0 -4
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.341 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.343 | (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.341 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.343 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
3
3
  "use strict";
4
4
  var __create = Object.create;
package/dist-lib/sdk.cjs CHANGED
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.341 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.343 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
3
3
  "use strict";
4
4
  var __defProp = Object.defineProperty;
package/dist-lib/sdk.mjs CHANGED
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.341 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.343 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  var __defProp = Object.defineProperty;
3
3
  var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
4
4
  var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.341 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.343 | (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;
@@ -536,7 +536,7 @@ var init_registry = __esm({
536
536
  note: "scroll handlers, layout animations"
537
537
  },
538
538
  {
539
- range: ">=4.0.0",
539
+ range: ">=4.0.0 <5.0.0",
540
540
  coverage: 0.97,
541
541
  note: "core animations, gestures, scroll, layout transitions, keyboard, sensors, reduced motion, native view property reads, and direct static style snapshots",
542
542
  working: "useSharedValue, useAnimatedStyle/Props/Reaction, useDerivedValue, useAnimatedScrollHandler, useScrollViewOffset, useFrameCallback, useAnimatedRef, useAnimatedKeyboard, useAnimatedSensor, useReducedMotion, entering/exiting/layout transitions, withTiming/Spring/Decay/Delay/Sequence/Repeat/Clamp, interpolate, interpolateColor, runOnJS/UI, measure, scrollTo, getViewProp (layout, opacity, zIndex, backgroundColor, boxShadow), direct setViewStyle snapshots, Easing, createAnimatedComponent, Animated.View/Text/Image/ScrollView/FlatList",
@@ -551,7 +551,7 @@ var init_registry = __esm({
551
551
  versions: [
552
552
  { range: ">=2.0.0 <2.30.0", coverage: 0.7, note: "tap, pan, long press" },
553
553
  {
554
- range: ">=2.30.0",
554
+ range: ">=2.30.0 <3.0.0",
555
555
  coverage: 0.9,
556
556
  note: "tap, pan, pinch, rotation, fling, long press, race, manual, simultaneous",
557
557
  working: "GestureDetector, Gesture.Tap/Pan/Pinch/Rotation/Fling/LongPress/Manual/Race/Simultaneous/Exclusive/Hover, simultaneousWithExternalGesture/requireExternalGestureToFail/blocksExternalGesture, ScrollView/FlatList, Switch/RefreshControl, Pressable/Text, Touchables, BaseButton/RawButton/RectButton/BorderlessButton/PureNativeButton, Swipeable, ReanimatedSwipeable, DrawerLayout (the upstream component running on this seam: renderNavigationView, drawerPosition/drawerType/drawerWidth/edgeWidth, openDrawer/closeDrawer, edge-swipe drag, onDrawerOpen/onDrawerClose/onDrawerStateChanged), GestureHandlerRootView, createNativeWrapper, gestureHandlerRootHOC, PointerType/MouseButton/HoverEffect exports, velocity tracking, activeOffsets, multi-tap",
@@ -681,7 +681,7 @@ var init_registry = __esm({
681
681
  missing: "the AutoLayoutView native pass \u2014 post-layout gap correction between recycled cells and the onBlankArea callback it feeds; overrideItemLayout precision on iOS-specific paths"
682
682
  },
683
683
  {
684
- range: ">=2.0.0",
684
+ range: ">=2.0.0 <3.0.0",
685
685
  coverage: 0.95,
686
686
  note: "real upstream package \u2014 v2 is pure JS with no native views, so nothing is intercepted and the full recycling engine runs on the engine ScrollView",
687
687
  working: "the entire published API runs unmodified: FlashList with its real recycling/virtualization engine, AnimatedFlashList, FlashListRef imperative methods, masonry prop, useLayoutState, useRecyclingState, useMappingHelper, useFlashListContext, LayoutCommitObserver, viewability/ViewToken, the benchmark helpers",
@@ -8846,36 +8846,240 @@ var init_registry = __esm({
8846
8846
  });
8847
8847
 
8848
8848
  // ../compat/src/version-range.ts
8849
- function matchCompatVersion(entry, version) {
8850
- const clean = version.replace(/^[~^>=<\s]+/, "").split("-")[0];
8851
- const [major] = clean.split(".").map(Number);
8852
- for (const candidate of entry.versions) {
8853
- const parts = candidate.range.split(" ");
8854
- let matches = true;
8855
- for (const part of parts) {
8856
- const match = part.match(/^([><=]+)(\d+)/);
8857
- if (!match) continue;
8858
- const [, op, rawNum] = match;
8859
- const rangeMajor = parseInt(rawNum);
8860
- if (op === ">=" && major < rangeMajor) matches = false;
8861
- if (op === "<" && major >= rangeMajor) matches = false;
8862
- if (op === ">" && major <= rangeMajor) matches = false;
8863
- if (op === "<=" && major > rangeMajor) matches = false;
8849
+ function compareVersions(left, right) {
8850
+ if (left.major !== right.major) return left.major < right.major ? -1 : 1;
8851
+ if (left.minor !== right.minor) return left.minor < right.minor ? -1 : 1;
8852
+ if (left.patch !== right.patch) return left.patch < right.patch ? -1 : 1;
8853
+ if (left.prerelease.length === 0) return right.prerelease.length === 0 ? 0 : 1;
8854
+ if (right.prerelease.length === 0) return -1;
8855
+ const length = Math.max(left.prerelease.length, right.prerelease.length);
8856
+ for (let index = 0; index < length; index++) {
8857
+ const leftPart = left.prerelease[index];
8858
+ const rightPart = right.prerelease[index];
8859
+ if (leftPart === void 0) return -1;
8860
+ if (rightPart === void 0) return 1;
8861
+ if (leftPart === rightPart) continue;
8862
+ const leftNumeric = /^\d+$/.test(leftPart);
8863
+ const rightNumeric = /^\d+$/.test(rightPart);
8864
+ if (leftNumeric && rightNumeric) return Number(leftPart) < Number(rightPart) ? -1 : 1;
8865
+ if (leftNumeric !== rightNumeric) return leftNumeric ? -1 : 1;
8866
+ return leftPart < rightPart ? -1 : 1;
8867
+ }
8868
+ return 0;
8869
+ }
8870
+ function parseComparator(input) {
8871
+ const token = input.trim();
8872
+ if (token === "" || token === "*" || token === "x" || token === "X") {
8873
+ return ANY_BOUNDS;
8874
+ }
8875
+ const match = /^(>=|<=|>|<|=|\^|~)?\s*v?(\d+|[xX*])(?:\.(\d+|[xX*]))?(?:\.(\d+|[xX*]))?(?:-([0-9A-Za-z.-]+))?(?:\+[0-9A-Za-z.-]+)?$/.exec(
8876
+ token
8877
+ );
8878
+ if (!match) return null;
8879
+ const operator = match[1] ?? "=";
8880
+ const wildcard = (part) => part === void 0 || part === "x" || part === "X" || part === "*";
8881
+ if (wildcard(match[2])) return ANY_BOUNDS;
8882
+ const major = Number(match[2]);
8883
+ const minor = wildcard(match[3]) ? null : Number(match[3]);
8884
+ const patch = wildcard(match[4]) ? null : Number(match[4]);
8885
+ const floor = {
8886
+ major,
8887
+ minor: minor ?? 0,
8888
+ patch: patch ?? 0,
8889
+ prerelease: match[5] ? match[5].split(".") : []
8890
+ };
8891
+ if (operator === ">") {
8892
+ return { ...ANY_BOUNDS, lower: floor, lowerInclusive: false };
8893
+ }
8894
+ if (operator === ">=") {
8895
+ return { ...ANY_BOUNDS, lower: floor, lowerInclusive: true };
8896
+ }
8897
+ if (operator === "<") {
8898
+ return { ...ANY_BOUNDS, upper: floor, upperInclusive: false };
8899
+ }
8900
+ if (operator === "<=") {
8901
+ return { ...ANY_BOUNDS, upper: floor, upperInclusive: true };
8902
+ }
8903
+ let upper;
8904
+ if (operator === "^") {
8905
+ upper = major !== 0 ? { major: major + 1, minor: 0, patch: 0, prerelease: [] } : (minor ?? 0) !== 0 || minor === null ? { major: 0, minor: (minor ?? 0) + 1, patch: 0, prerelease: [] } : { major: 0, minor: 0, patch: (patch ?? 0) + 1, prerelease: [] };
8906
+ } else if (operator === "~") {
8907
+ upper = minor === null ? { major: major + 1, minor: 0, patch: 0, prerelease: [] } : { major, minor: minor + 1, patch: 0, prerelease: [] };
8908
+ } else if (minor === null) {
8909
+ upper = { major: major + 1, minor: 0, patch: 0, prerelease: [] };
8910
+ } else if (patch === null) {
8911
+ upper = { major, minor: minor + 1, patch: 0, prerelease: [] };
8912
+ } else {
8913
+ return {
8914
+ lower: floor,
8915
+ lowerInclusive: true,
8916
+ upper: floor,
8917
+ upperInclusive: true
8918
+ };
8919
+ }
8920
+ return {
8921
+ lower: floor,
8922
+ lowerInclusive: true,
8923
+ upper,
8924
+ upperInclusive: false
8925
+ };
8926
+ }
8927
+ function stricterLower(left, right) {
8928
+ if (!left.lower) return { lower: right.lower, lowerInclusive: right.lowerInclusive };
8929
+ if (!right.lower) return { lower: left.lower, lowerInclusive: left.lowerInclusive };
8930
+ const order = compareVersions(left.lower, right.lower);
8931
+ if (order > 0) return { lower: left.lower, lowerInclusive: left.lowerInclusive };
8932
+ if (order < 0) return { lower: right.lower, lowerInclusive: right.lowerInclusive };
8933
+ return {
8934
+ lower: left.lower,
8935
+ lowerInclusive: left.lowerInclusive && right.lowerInclusive
8936
+ };
8937
+ }
8938
+ function stricterUpper(left, right) {
8939
+ if (!left.upper) return { upper: right.upper, upperInclusive: right.upperInclusive };
8940
+ if (!right.upper) return { upper: left.upper, upperInclusive: left.upperInclusive };
8941
+ const order = compareVersions(left.upper, right.upper);
8942
+ if (order < 0) return { upper: left.upper, upperInclusive: left.upperInclusive };
8943
+ if (order > 0) return { upper: right.upper, upperInclusive: right.upperInclusive };
8944
+ return {
8945
+ upper: left.upper,
8946
+ upperInclusive: left.upperInclusive && right.upperInclusive
8947
+ };
8948
+ }
8949
+ function hasValues(bounds) {
8950
+ if (!bounds.lower || !bounds.upper) return true;
8951
+ const order = compareVersions(bounds.lower, bounds.upper);
8952
+ return order < 0 || order === 0 && bounds.lowerInclusive && bounds.upperInclusive;
8953
+ }
8954
+ function parseRange(input) {
8955
+ const groups = input.split("||");
8956
+ const parsed = [];
8957
+ for (const group of groups) {
8958
+ const tokens = group.trim().match(COMPARATOR) ?? [];
8959
+ if (tokens.length === 0) return null;
8960
+ let bounds = ANY_BOUNDS;
8961
+ for (const token of tokens) {
8962
+ const comparator = parseComparator(token);
8963
+ if (!comparator) return null;
8964
+ bounds = {
8965
+ ...stricterLower(bounds, comparator),
8966
+ ...stricterUpper(bounds, comparator)
8967
+ };
8864
8968
  }
8865
- if (matches) {
8969
+ if (!hasValues(bounds)) return null;
8970
+ parsed.push(bounds);
8971
+ }
8972
+ return parsed;
8973
+ }
8974
+ function containsBounds(container, contained) {
8975
+ if (container.lower) {
8976
+ if (!contained.lower) return false;
8977
+ const order = compareVersions(container.lower, contained.lower);
8978
+ if (order > 0) return false;
8979
+ if (order === 0 && contained.lowerInclusive && !container.lowerInclusive) return false;
8980
+ }
8981
+ if (container.upper) {
8982
+ if (!contained.upper) return false;
8983
+ const order = compareVersions(container.upper, contained.upper);
8984
+ if (order < 0) return false;
8985
+ if (order === 0 && contained.upperInclusive && !container.upperInclusive) return false;
8986
+ }
8987
+ return true;
8988
+ }
8989
+ function overlapsBounds(left, right) {
8990
+ const intersection = {
8991
+ ...stricterLower(left, right),
8992
+ ...stricterUpper(left, right)
8993
+ };
8994
+ return hasValues(intersection);
8995
+ }
8996
+ function resolveCompatVersionRange(availableRegistryRanges, declaredVersion) {
8997
+ const declaredGroups = parseRange(declaredVersion);
8998
+ const registryGroups = availableRegistryRanges.map((range) => ({
8999
+ range,
9000
+ bounds: parseRange(range)
9001
+ }));
9002
+ if (!declaredGroups || registryGroups.some((candidate) => !candidate.bounds)) {
9003
+ return {
9004
+ status: "unresolved",
9005
+ declaredVersion,
9006
+ availableRegistryRanges
9007
+ };
9008
+ }
9009
+ let selectedRange = null;
9010
+ for (const declared of declaredGroups) {
9011
+ const containing = registryGroups.filter(
9012
+ (candidate2) => candidate2.bounds?.length === 1 && containsBounds(candidate2.bounds[0], declared)
9013
+ );
9014
+ if (containing.length !== 1) {
9015
+ const overlaps = registryGroups.some(
9016
+ (candidate2) => candidate2.bounds?.some((bounds) => overlapsBounds(bounds, declared))
9017
+ );
8866
9018
  return {
8867
- coverage: candidate.coverage,
8868
- note: candidate.note,
8869
- ...candidate.working ? { working: candidate.working } : {},
8870
- ...candidate.missing ? { missing: candidate.missing } : {}
9019
+ status: overlaps ? "unresolved" : "unmatched",
9020
+ declaredVersion,
9021
+ availableRegistryRanges
8871
9022
  };
8872
9023
  }
9024
+ const candidate = containing[0].range;
9025
+ if (selectedRange && selectedRange !== candidate) {
9026
+ return {
9027
+ status: "unresolved",
9028
+ declaredVersion,
9029
+ availableRegistryRanges
9030
+ };
9031
+ }
9032
+ selectedRange = candidate;
8873
9033
  }
8874
- return null;
9034
+ if (!selectedRange) {
9035
+ return {
9036
+ status: "unresolved",
9037
+ declaredVersion,
9038
+ availableRegistryRanges
9039
+ };
9040
+ }
9041
+ return {
9042
+ status: "matched",
9043
+ declaredVersion,
9044
+ registryRange: selectedRange,
9045
+ availableRegistryRanges
9046
+ };
9047
+ }
9048
+ function matchCompatVersion(entry, declaredVersion) {
9049
+ const resolution = resolveCompatVersionRange(
9050
+ entry.versions.map((candidate) => candidate.range),
9051
+ declaredVersion
9052
+ );
9053
+ if (resolution.status !== "matched") return resolution;
9054
+ const selected = entry.versions.find(
9055
+ (candidate) => candidate.range === resolution.registryRange
9056
+ );
9057
+ if (!selected) {
9058
+ return {
9059
+ status: "unresolved",
9060
+ declaredVersion,
9061
+ availableRegistryRanges: resolution.availableRegistryRanges
9062
+ };
9063
+ }
9064
+ return {
9065
+ ...resolution,
9066
+ coverage: selected.coverage,
9067
+ note: selected.note,
9068
+ ...selected.working ? { working: selected.working } : {},
9069
+ ...selected.missing ? { missing: selected.missing } : {}
9070
+ };
8875
9071
  }
9072
+ var ANY_BOUNDS, COMPARATOR;
8876
9073
  var init_version_range = __esm({
8877
9074
  "../compat/src/version-range.ts"() {
8878
9075
  "use strict";
9076
+ ANY_BOUNDS = {
9077
+ lower: null,
9078
+ lowerInclusive: false,
9079
+ upper: null,
9080
+ upperInclusive: false
9081
+ };
9082
+ COMPARATOR = /\s*(?:[<>]=?|[=^~])?\s*[^\s]+/g;
8879
9083
  }
8880
9084
  });
8881
9085
 
@@ -8903,11 +9107,11 @@ function rnxSupportForPackage(name2, version, data) {
8903
9107
  };
8904
9108
  }
8905
9109
  const match = matchCompatVersion(entry, version);
8906
- if (!match) {
9110
+ if (match.status !== "matched") {
8907
9111
  return {
8908
9112
  level: "stubbed",
8909
9113
  coverage: null,
8910
- note: "not yet verified for this version",
9114
+ note: match.status === "unresolved" ? "package.json range spans verified package shapes" : "not yet verified for this version",
8911
9115
  recovery: null,
8912
9116
  source: "compat-registry"
8913
9117
  };
package/dist-lib/vite.cjs CHANGED
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.341 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.343 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
3
3
  "use strict";
4
4
  var __create = Object.create;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "rnxsim",
3
- "version": "0.1.341",
3
+ "version": "0.1.343",
4
4
  "description": "rnx CLI, Vite and Metro plugins, and agent skills for driving React Native apps in the browser.",
5
5
  "author": "Tamagui LLC",
6
6
  "license": "SEE LICENSE IN LICENSE",