rnxsim 0.1.471 → 0.1.473

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 (55) hide show
  1. package/cli/commands/inspect/actions.ts +10 -6
  2. package/dist-lib/agent-daemon-client.cjs +1 -1
  3. package/dist-lib/agent-events.cjs +1 -1
  4. package/dist-lib/agent-identity.cjs +1 -1
  5. package/dist-lib/agent-sessions.cjs +1 -1
  6. package/dist-lib/attached-projects.cjs +1 -1
  7. package/dist-lib/auth/shared-session.cjs +1 -1
  8. package/dist-lib/backend-origin.cjs +1 -1
  9. package/dist-lib/beta.cjs +1 -1
  10. package/dist-lib/beta.mjs +1 -1
  11. package/dist-lib/bridge-constants.cjs +1 -1
  12. package/dist-lib/bridge-contract-input.cjs +1 -1
  13. package/dist-lib/bridge-contract-input.mjs +1 -1
  14. package/dist-lib/bridge-contract.cjs +1 -1
  15. package/dist-lib/bridge-contract.mjs +1 -1
  16. package/dist-lib/capture-contract.cjs +1 -1
  17. package/dist-lib/capture-contract.mjs +1 -1
  18. package/dist-lib/cli-constants.cjs +1 -1
  19. package/dist-lib/cloud-contract.cjs +1 -1
  20. package/dist-lib/cloud-contract.mjs +1 -1
  21. package/dist-lib/cloud.cjs +1 -1
  22. package/dist-lib/cloud.mjs +1 -1
  23. package/dist-lib/config.cjs +1 -1
  24. package/dist-lib/detox/index.cjs +1 -1
  25. package/dist-lib/dev-bundle-resolution.cjs +1 -1
  26. package/dist-lib/home-paths.cjs +1 -1
  27. package/dist-lib/host/bridge-host.cjs +1 -1
  28. package/dist-lib/host/fetch-proxy-handler.cjs +1 -1
  29. package/dist-lib/host/fetch-proxy-overrides.cjs +1 -1
  30. package/dist-lib/host/fetch-proxy-overrides.mjs +1 -1
  31. package/dist-lib/host/replacement-module-handler.cjs +1 -1
  32. package/dist-lib/host/websocket-proxy.cjs +1 -1
  33. package/dist-lib/index.cjs +6 -4
  34. package/dist-lib/jump-to-source-babel.cjs +1 -1
  35. package/dist-lib/jump-to-source-native.cjs +1 -1
  36. package/dist-lib/menu.cjs +1 -1
  37. package/dist-lib/menu.mjs +1 -1
  38. package/dist-lib/metro-fingerprint-registry.cjs +1 -1
  39. package/dist-lib/metro-fingerprint-registry.mjs +1 -1
  40. package/dist-lib/metro-production-bundle.cjs +1 -1
  41. package/dist-lib/metro-production-bundle.mjs +1 -1
  42. package/dist-lib/metro.cjs +1 -1
  43. package/dist-lib/profiles.cjs +1 -1
  44. package/dist-lib/public-brand.cjs +1 -1
  45. package/dist-lib/react-native-host-modules.cjs +1 -1
  46. package/dist-lib/react-native-host-modules.mjs +1 -1
  47. package/dist-lib/render-mode.cjs +1 -1
  48. package/dist-lib/scripts/dev-server-scanner.cjs +1 -1
  49. package/dist-lib/sdk.cjs +6 -4
  50. package/dist-lib/sdk.mjs +6 -4
  51. package/dist-lib/skills.cjs +2 -2
  52. package/dist-lib/vite.cjs +1 -1
  53. package/package.json +1 -1
  54. package/src/jump-to-source-native.ts +1 -1
  55. package/src/worklets-babel.ts +118 -2
@@ -329,21 +329,25 @@ interface TextCandidate {
329
329
  ancestorTestIDs: string[]
330
330
  }
331
331
 
332
- // a node repeating the text of its nearest labelled ancestor is that ancestor's
333
- // own caption (a pressable and its text child), so only the outer node is a
334
- // candidate. otherwise every labelled button is an ambiguous pair.
332
+ // a non-pressable node repeating the text of its nearest labelled ancestor,
333
+ // when that ancestor is pressable, is the ancestor's own caption (a button and
334
+ // its text child), so only the button is a candidate. otherwise every labelled
335
+ // button is an ambiguous pair. a pressable descendant is never folded into its
336
+ // ancestor: same text does not prove it shares the ancestor's tap target.
335
337
  function collectTextCandidates(
336
338
  nodes: readonly SimSemanticNode[],
337
339
  ancestors: string[] = [],
338
- ownerText = '',
340
+ pressableOwnerText = '',
339
341
  ): TextCandidate[] {
340
342
  const out: TextCandidate[] = []
341
343
  for (const node of nodes) {
342
344
  const text = nodeText(node)
343
- if (!text || text !== ownerText) out.push({ node, ancestorTestIDs: ancestors })
345
+ const caption = !!text && text === pressableOwnerText && !node.pressable
346
+ if (!caption) out.push({ node, ancestorTestIDs: ancestors })
344
347
  if (node.children?.length) {
345
348
  const next = node.testID ? [...ancestors, node.testID] : ancestors
346
- out.push(...collectTextCandidates(node.children, next, text || ownerText))
349
+ const owner = text ? (node.pressable ? text : '') : pressableOwnerText
350
+ out.push(...collectTextCandidates(node.children, next, owner))
347
351
  }
348
352
  }
349
353
  return out
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.471 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.473 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
3
3
  "use strict";
4
4
  var __create = Object.create;
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.471 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.473 | (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.471 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.473 | (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.471 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.473 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
3
3
  "use strict";
4
4
  var __create = Object.create;
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.471 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.473 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
3
3
  "use strict";
4
4
  var __create = Object.create;
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.471 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.473 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
3
3
  "use strict";
4
4
  var __create = Object.create;
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.471 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.473 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
3
3
  "use strict";
4
4
  var __defProp = Object.defineProperty;
package/dist-lib/beta.cjs CHANGED
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.471 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.473 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
3
3
  "use strict";
4
4
  var __defProp = Object.defineProperty;
package/dist-lib/beta.mjs CHANGED
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.471 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.473 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
 
3
3
  // src/beta.ts
4
4
  var IS_BETA = true;
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.471 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.473 | (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.471 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.473 | (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.471 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.473 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
 
3
3
  // src/bridge-contract.ts
4
4
  var SIM_LONG_PRESS_MAX_MS = 5e3;
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.471 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.473 | (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.471 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.473 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
 
3
3
  // src/bridge-contract.ts
4
4
  var SIM_LONG_PRESS_DEFAULT_MS = 500;
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.471 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.473 | (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.471 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.473 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
 
3
3
  // src/capture-contract.ts
4
4
  var RNX_SCREEN_CAPTURE_VERSION = 1;
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.471 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.473 | (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.471 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.473 | (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.471 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.473 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
 
3
3
  // src/cloud-contract.ts
4
4
  var RNX_CLOUD_MAX_ARTIFACT_BYTES = 20 * 1024 * 1024;
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.471 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.473 | (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.471 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.473 | (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.471 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.473 | (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.471 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.473 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
3
3
  "use strict";
4
4
  var __create = Object.create;
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.471 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.473 | (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.471 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.473 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
3
3
  "use strict";
4
4
  var __create = Object.create;
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.471 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.473 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
3
3
  "use strict";
4
4
  var __create = Object.create;
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.471 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.473 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
3
3
  "use strict";
4
4
  var __create = Object.create;
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.471 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.473 | (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.471 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.473 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
 
3
3
  // src/host/fetch-proxy-overrides.ts
4
4
  var FETCH_PROXY_BROWSER_USER_AGENT = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36";
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.471 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.473 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
3
3
  "use strict";
4
4
  var __create = Object.create;
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.471 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.473 | (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.471 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.473 | (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;
@@ -2307,14 +2307,16 @@ function payloadFromResolved(resolved, match, extra = {}) {
2307
2307
  ...extra
2308
2308
  };
2309
2309
  }
2310
- function collectTextCandidates(nodes, ancestors = [], ownerText = "") {
2310
+ function collectTextCandidates(nodes, ancestors = [], pressableOwnerText = "") {
2311
2311
  const out = [];
2312
2312
  for (const node of nodes) {
2313
2313
  const text = nodeText(node);
2314
- if (!text || text !== ownerText) out.push({ node, ancestorTestIDs: ancestors });
2314
+ const caption = !!text && text === pressableOwnerText && !node.pressable;
2315
+ if (!caption) out.push({ node, ancestorTestIDs: ancestors });
2315
2316
  if (node.children?.length) {
2316
2317
  const next = node.testID ? [...ancestors, node.testID] : ancestors;
2317
- out.push(...collectTextCandidates(node.children, next, text || ownerText));
2318
+ const owner = text ? node.pressable ? text : "" : pressableOwnerText;
2319
+ out.push(...collectTextCandidates(node.children, next, owner));
2318
2320
  }
2319
2321
  }
2320
2322
  return out;
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.471 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.473 | (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.471 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.473 | (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/menu.cjs CHANGED
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.471 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.473 | (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/menu.mjs CHANGED
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.471 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.473 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
 
3
3
  // src/public-brand.ts
4
4
  var name = "rnx";
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.471 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.473 | (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.471 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.473 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
 
3
3
  // src/metro-fingerprint-registry.ts
4
4
  var RNX_METRO_FINGERPRINT_SCHEMA_VERSION = 2;
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.471 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.473 | (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.471 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.473 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
 
3
3
  // src/metro-production-bundle.ts
4
4
  var RNXSIM_METRO_MODULE_PATHS_PREFIX = "globalThis.__sootsimModulePaths=";
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.471 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.473 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
3
3
  "use strict";
4
4
  var __create = Object.create;
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.471 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.473 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
3
3
  "use strict";
4
4
  var __create = Object.create;
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.471 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.473 | (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.471 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.473 | (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.471 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.473 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
 
3
3
  // src/react-native-host-modules.ts
4
4
  var REACT_NATIVE_PASSTHROUGH_SPECIFIERS = [
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.471 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.473 | (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.471 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.473 | (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.471 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.473 | (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;
@@ -1725,14 +1725,16 @@ function payloadFromResolved(resolved, match, extra = {}) {
1725
1725
  ...extra
1726
1726
  };
1727
1727
  }
1728
- function collectTextCandidates(nodes, ancestors = [], ownerText = "") {
1728
+ function collectTextCandidates(nodes, ancestors = [], pressableOwnerText = "") {
1729
1729
  const out = [];
1730
1730
  for (const node of nodes) {
1731
1731
  const text = nodeText(node);
1732
- if (!text || text !== ownerText) out.push({ node, ancestorTestIDs: ancestors });
1732
+ const caption = !!text && text === pressableOwnerText && !node.pressable;
1733
+ if (!caption) out.push({ node, ancestorTestIDs: ancestors });
1733
1734
  if (node.children?.length) {
1734
1735
  const next = node.testID ? [...ancestors, node.testID] : ancestors;
1735
- out.push(...collectTextCandidates(node.children, next, text || ownerText));
1736
+ const owner = text ? node.pressable ? text : "" : pressableOwnerText;
1737
+ out.push(...collectTextCandidates(node.children, next, owner));
1736
1738
  }
1737
1739
  }
1738
1740
  return out;
package/dist-lib/sdk.mjs CHANGED
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.471 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.473 | (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);
@@ -1629,14 +1629,16 @@ function payloadFromResolved(resolved, match, extra = {}) {
1629
1629
  ...extra
1630
1630
  };
1631
1631
  }
1632
- function collectTextCandidates(nodes, ancestors = [], ownerText = "") {
1632
+ function collectTextCandidates(nodes, ancestors = [], pressableOwnerText = "") {
1633
1633
  const out = [];
1634
1634
  for (const node of nodes) {
1635
1635
  const text = nodeText(node);
1636
- if (!text || text !== ownerText) out.push({ node, ancestorTestIDs: ancestors });
1636
+ const caption = !!text && text === pressableOwnerText && !node.pressable;
1637
+ if (!caption) out.push({ node, ancestorTestIDs: ancestors });
1637
1638
  if (node.children?.length) {
1638
1639
  const next = node.testID ? [...ancestors, node.testID] : ancestors;
1639
- out.push(...collectTextCandidates(node.children, next, text || ownerText));
1640
+ const owner = text ? node.pressable ? text : "" : pressableOwnerText;
1641
+ out.push(...collectTextCandidates(node.children, next, owner));
1640
1642
  }
1641
1643
  }
1642
1644
  return out;
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.471 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.473 | (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;
@@ -5310,7 +5310,7 @@ var init_supported_native_packages = __esm({
5310
5310
  "react-native-nitro-image",
5311
5311
  // seam
5312
5312
  "react-native-nitro-modules",
5313
- // seam
5313
+ // preset+seam
5314
5314
  "react-native-nitro-sound",
5315
5315
  // seam
5316
5316
  "react-native-nitro-sse",
package/dist-lib/vite.cjs CHANGED
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.471 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.473 | (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.471",
3
+ "version": "0.1.473",
4
4
  "description": "Vite and Metro plugins, testing drivers, and SDK exports for rnx.",
5
5
  "author": "Tamagui LLC",
6
6
  "license": "SEE LICENSE IN LICENSE",
@@ -1,6 +1,6 @@
1
1
  import MagicString from 'magic-string'
2
2
  import { parseSync, Visitor } from 'oxc-parser'
3
- import type { SootsimJumpToSourceBabelOptions } from './jump-to-source-babel'
3
+ import type { SootsimJumpToSourceBabelOptions } from './jump-to-source-babel.ts'
4
4
 
5
5
  export type JumpToSourceNativeOptions = SootsimJumpToSourceBabelOptions
6
6
 
@@ -1,3 +1,5 @@
1
+ import { createHash } from 'node:crypto'
2
+ import fs from 'node:fs'
1
3
  import { createRequire } from 'node:module'
2
4
  import path from 'node:path'
3
5
  import { fileURLToPath } from 'node:url'
@@ -80,6 +82,104 @@ function isTypescriptFile(id: string): boolean {
80
82
  return /\.(tsx?|mts|cts)$/.test(id)
81
83
  }
82
84
 
85
+ // the worklets babel pass is the single most expensive plugin hook in the
86
+ // engine and tenant builds (hundreds of files, several seconds each). the
87
+ // output is a pure function of the source text, the file path, the sourcemap
88
+ // flag, and the babel toolchain, so cache it on disk keyed by all four. a
89
+ // normal dev rebuild changes a handful of files and replays the rest.
90
+ const CACHE_SCHEMA = 'v1'
91
+ const CACHE_ROOT = path.resolve(
92
+ workspaceRoot,
93
+ 'node_modules',
94
+ '.cache',
95
+ 'sootsim-worklets',
96
+ )
97
+
98
+ // null once resolved on a tree we cannot write to (a read-only install), which
99
+ // only costs speed: every caller falls through to the babel run it would have
100
+ // made anyway.
101
+ let cacheDir: string | null | undefined
102
+
103
+ function getCacheDir(): string | null {
104
+ if (cacheDir !== undefined) return cacheDir
105
+ const versions = [
106
+ '@babel/core',
107
+ '@babel/preset-typescript',
108
+ 'react-native-worklets',
109
+ ].map((pkg) => {
110
+ const manifest = sootsimPluginRequire(`${pkg}/package.json`) as { version?: string }
111
+ return `${pkg}@${manifest.version ?? '0'}`
112
+ })
113
+ const fingerprint = createHash('sha256')
114
+ .update([CACHE_SCHEMA, ...versions].join('\n'))
115
+ .digest('hex')
116
+ .slice(0, 16)
117
+ const dir = path.join(CACHE_ROOT, fingerprint)
118
+ try {
119
+ fs.mkdirSync(dir, { recursive: true })
120
+ // a toolchain bump starts a new fingerprint, so drop the previous ones
121
+ // instead of letting every upgrade leave its entries behind forever.
122
+ for (const entry of fs.readdirSync(CACHE_ROOT)) {
123
+ if (entry === fingerprint) continue
124
+ fs.rmSync(path.join(CACHE_ROOT, entry), { recursive: true, force: true })
125
+ }
126
+ cacheDir = dir
127
+ } catch {
128
+ cacheDir = null
129
+ }
130
+ return cacheDir
131
+ }
132
+
133
+ function getCacheEntryPath(
134
+ code: string,
135
+ id: string,
136
+ sourceMaps: TransformOptions['sourceMaps'],
137
+ ): string | null {
138
+ const dir = getCacheDir()
139
+ if (!dir) return null
140
+ // the worklets plugin's `isRelease` reads BABEL_ENV and NODE_ENV and emits a
141
+ // different worklet for each (release drops the embedded source and map), so
142
+ // both belong in the key. the same file is built once as a dev tenant bundle
143
+ // and once as a production engine bundle.
144
+ const key = createHash('sha256')
145
+ .update(
146
+ [
147
+ id,
148
+ String(sourceMaps),
149
+ process.env.BABEL_ENV ?? '',
150
+ process.env.NODE_ENV ?? '',
151
+ code,
152
+ ].join('\0'),
153
+ )
154
+ .digest('hex')
155
+ return path.join(dir, key.slice(0, 2), `${key.slice(2)}.json`)
156
+ }
157
+
158
+ function readCachedTransform(
159
+ entryPath: string | null,
160
+ ): Pick<TransformResult, 'code' | 'map'> | null {
161
+ if (!entryPath) return null
162
+ try {
163
+ return JSON.parse(fs.readFileSync(entryPath, 'utf8'))
164
+ } catch {
165
+ return null
166
+ }
167
+ }
168
+
169
+ function writeCachedTransform(
170
+ entryPath: string | null,
171
+ result: Pick<TransformResult, 'code' | 'map'>,
172
+ ): void {
173
+ if (!entryPath) return
174
+ try {
175
+ fs.mkdirSync(path.dirname(entryPath), { recursive: true })
176
+ // write-then-rename so a concurrent build never reads a half-written entry.
177
+ const temp = `${entryPath}.${process.pid}.${Math.random().toString(36).slice(2)}`
178
+ fs.writeFileSync(temp, JSON.stringify(result))
179
+ fs.renameSync(temp, entryPath)
180
+ } catch {}
181
+ }
182
+
83
183
  function createWorkletsBabelOptions(
84
184
  id: string,
85
185
  sourceMaps: TransformOptions['sourceMaps'],
@@ -111,13 +211,21 @@ export async function transformWorkletsCode(
111
211
  id: string,
112
212
  sourceMaps: TransformOptions['sourceMaps'] = true,
113
213
  ): Promise<Pick<TransformResult, 'code' | 'map'> | null> {
214
+ const entryPath = getCacheEntryPath(code, id, sourceMaps)
215
+ const cached = readCachedTransform(entryPath)
216
+ if (cached) return cached
114
217
  if (!babelCorePromise) {
115
218
  babelCorePromise = import('@babel/core') as Promise<typeof import('@babel/core')>
116
219
  }
117
220
  const { transformAsync } = await babelCorePromise
118
221
  const result = await transformAsync(code, createWorkletsBabelOptions(id, sourceMaps))
119
222
  if (!result?.code) return null
120
- return { code: result.code, map: (result.map ?? null) as TransformResult['map'] }
223
+ const transformed = {
224
+ code: result.code,
225
+ map: (result.map ?? null) as TransformResult['map'],
226
+ }
227
+ writeCachedTransform(entryPath, transformed)
228
+ return transformed
121
229
  }
122
230
 
123
231
  export function transformWorkletsCodeSync(
@@ -125,10 +233,18 @@ export function transformWorkletsCodeSync(
125
233
  id: string,
126
234
  sourceMaps: TransformOptions['sourceMaps'] = false,
127
235
  ): Pick<TransformResult, 'code' | 'map'> | null {
236
+ const entryPath = getCacheEntryPath(code, id, sourceMaps)
237
+ const cached = readCachedTransform(entryPath)
238
+ if (cached) return cached
128
239
  const { transformSync } = sootsimPluginRequire(
129
240
  '@babel/core',
130
241
  ) as typeof import('@babel/core')
131
242
  const result = transformSync(code, createWorkletsBabelOptions(id, sourceMaps))
132
243
  if (!result?.code) return null
133
- return { code: result.code, map: (result.map ?? null) as TransformResult['map'] }
244
+ const transformed = {
245
+ code: result.code,
246
+ map: (result.map ?? null) as TransformResult['map'],
247
+ }
248
+ writeCachedTransform(entryPath, transformed)
249
+ return transformed
134
250
  }