peachsim 0.1.664 → 0.1.666

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 (86) hide show
  1. package/cli/app-fonts.ts +6 -3
  2. package/cli/commands/control.ts +18 -2
  3. package/cli/commands/inspect/core.ts +19 -6
  4. package/cli/commands/inspect/settling.ts +1 -5
  5. package/detox/index.ts +1 -1
  6. package/detox/navigation.ts +1 -0
  7. package/dist-lib/agent-daemon-client.cjs +1 -1
  8. package/dist-lib/agent-events.cjs +1 -1
  9. package/dist-lib/agent-identity.cjs +1 -1
  10. package/dist-lib/agent-sessions.cjs +1 -1
  11. package/dist-lib/attached-projects.cjs +1 -1
  12. package/dist-lib/auth/shared-session.cjs +1 -1
  13. package/dist-lib/backend-origin.cjs +1 -1
  14. package/dist-lib/beta.cjs +1 -1
  15. package/dist-lib/beta.mjs +1 -1
  16. package/dist-lib/bridge-constants.cjs +1 -1
  17. package/dist-lib/bridge-contract-input.cjs +1 -1
  18. package/dist-lib/bridge-contract-input.mjs +1 -1
  19. package/dist-lib/bridge-contract.cjs +1 -1
  20. package/dist-lib/bridge-contract.mjs +1 -1
  21. package/dist-lib/capture-contract.cjs +1 -1
  22. package/dist-lib/capture-contract.mjs +1 -1
  23. package/dist-lib/cli-constants.cjs +1 -1
  24. package/dist-lib/cloud-contract.cjs +1 -1
  25. package/dist-lib/cloud-contract.mjs +1 -1
  26. package/dist-lib/cloud-test-args.cjs +1 -1
  27. package/dist-lib/cloud-test-args.mjs +1 -1
  28. package/dist-lib/cloud.cjs +1 -1
  29. package/dist-lib/cloud.mjs +1 -1
  30. package/dist-lib/config.cjs +1 -1
  31. package/dist-lib/detox/index.cjs +2 -2
  32. package/dist-lib/dev-bundle-resolution.cjs +1 -1
  33. package/dist-lib/home-paths.cjs +1 -1
  34. package/dist-lib/host/bridge-host.cjs +2191 -335
  35. package/dist-lib/host/fetch-proxy-handler.cjs +1 -1
  36. package/dist-lib/host/fetch-proxy-overrides.cjs +1 -1
  37. package/dist-lib/host/fetch-proxy-overrides.mjs +1 -1
  38. package/dist-lib/host/replacement-module-handler.cjs +7 -7
  39. package/dist-lib/host/websocket-proxy.cjs +1 -1
  40. package/dist-lib/index.cjs +7 -7
  41. package/dist-lib/jump-to-source-babel.cjs +1 -1
  42. package/dist-lib/jump-to-source-native.cjs +1 -1
  43. package/dist-lib/kotlin-host.cjs +1 -1
  44. package/dist-lib/menu.cjs +1 -1
  45. package/dist-lib/menu.mjs +1 -1
  46. package/dist-lib/metro-fingerprint-registry.cjs +1 -1
  47. package/dist-lib/metro-fingerprint-registry.mjs +1 -1
  48. package/dist-lib/metro-production-bundle.cjs +1 -1
  49. package/dist-lib/metro-production-bundle.mjs +1 -1
  50. package/dist-lib/metro.cjs +7 -7
  51. package/dist-lib/native-app-identity.cjs +1 -1
  52. package/dist-lib/native-app-identity.mjs +1 -1
  53. package/dist-lib/plist.cjs +1 -1
  54. package/dist-lib/plist.mjs +1 -1
  55. package/dist-lib/profiles.cjs +1 -1
  56. package/dist-lib/public-brand.cjs +1 -1
  57. package/dist-lib/react-native-host-modules.cjs +1 -1
  58. package/dist-lib/react-native-host-modules.mjs +1 -1
  59. package/dist-lib/render-mode.cjs +1 -1
  60. package/dist-lib/scripts/dev-server-scanner.cjs +1 -1
  61. package/dist-lib/sdk.cjs +13 -9
  62. package/dist-lib/sdk.mjs +13 -9
  63. package/dist-lib/skills.cjs +2777 -948
  64. package/dist-lib/swift-compile.cjs +1 -1
  65. package/dist-lib/swift-compile.mjs +1 -1
  66. package/dist-lib/swift-package.cjs +1 -1
  67. package/dist-lib/swift-package.mjs +1 -1
  68. package/dist-lib/swift-submit.cjs +1 -1
  69. package/dist-lib/swift-submit.mjs +1 -1
  70. package/dist-lib/swift.cjs +1 -1
  71. package/dist-lib/vite-swift.cjs +1 -1
  72. package/dist-lib/vite.cjs +7 -7
  73. package/kotlin/ComposeSources/PeachComposeHost.kt +6 -3
  74. package/kotlin/fixtures/kotlin-app-variants/Overlays.kt +56 -0
  75. package/kotlin/fixtures/kotlin-app-variants/Scroll.kt +63 -0
  76. package/kotlin/fixtures/kotlin-app-variants/Sheet.kt +43 -0
  77. package/kotlin/fixtures/kotlin-app-variants/Tabs.kt +47 -0
  78. package/kotlin/fixtures/kotlin-app-variants/Widgets.kt +13 -2
  79. package/package.json +2 -2
  80. package/skills/peach-setup/SKILL.md +1 -1
  81. package/src/assetCatalogContract.ts +23 -0
  82. package/src/expo-swift-host.ts +248 -0
  83. package/src/host/bridge-host.ts +19 -0
  84. package/src/skills/builtin/a11y-review.ts +3 -1
  85. package/src/skills/builtin/perf-profile.ts +5 -3
  86. package/src/vite-plugin.ts +3 -3
package/cli/app-fonts.ts CHANGED
@@ -261,9 +261,9 @@ export function discoverNativeLinkedAppFonts(opts: {
261
261
  return metroFontSpecsFromPaths(fontPaths, metroOrigin)
262
262
  }
263
263
 
264
- // resolve a metro dev server's project root. expo serves a manifest at the
265
- // server origin carrying `extra.expoClient._internal.projectRoot` — the absolute
266
- // dir of the app being served. the local `peach open <port>` path runs from the
264
+ // resolve a metro dev server's project root. Expo's middleware advertises it
265
+ // in X-React-Native-Project-Root, encoded with encodeURI. Older servers name it
266
+ // in extra.expoClient._internal.projectRoot. The local peach open path runs from the
267
267
  // CLI's cwd, which almost never owns the bundle being opened (e.g.
268
268
  // `peach open 8081` run from ~/contrast against a 3pc metro), so scanning cwd for
269
269
  // font declarations finds nothing.
@@ -281,6 +281,9 @@ export async function resolveMetroProjectRoot(
281
281
  const timer = setTimeout(() => controller.abort(), opts?.timeoutMs ?? 1500)
282
282
  let servedManifest = false
283
283
  try {
284
+ const status = await fetch(`${origin}/status`, { signal: controller.signal })
285
+ const advertisedRoot = status.headers.get('X-React-Native-Project-Root')
286
+ if (status.ok && advertisedRoot) return decodeURI(advertisedRoot)
284
287
  const res = await fetch(`${origin}/`, {
285
288
  headers: { 'expo-platform': 'ios', Accept: 'application/json' },
286
289
  signal: controller.signal,
@@ -917,6 +917,7 @@ export async function buildShellUrl(
917
917
  // fallback typeface, which then reads as a conformance diff.
918
918
  const project =
919
919
  opts.project ?? (await resolveAppProjectForBundleUrl(bundleUrlOf(resolved)))
920
+ const expoRoot = project?.appDir ?? null
920
921
  const stamped = stampNativeFirebaseConfig(
921
922
  stampAppCatalog(
922
923
  await stampAppSplash(await stampAppFonts(resolved, project), project),
@@ -924,6 +925,20 @@ export async function buildShellUrl(
924
925
  ),
925
926
  project,
926
927
  )
928
+ const expoStamped = new URL(stamped)
929
+ if (expoRoot) {
930
+ const world = resolveBridgeWorld()
931
+ const port = resolveBridgePortForPin({
932
+ baseUrl,
933
+ wsPort: world.bridgePort,
934
+ explicitPort: false,
935
+ })
936
+ if (port.error) throw new Error(port.error)
937
+ expoStamped.searchParams.set(
938
+ 'expoSwift',
939
+ `http://localhost:${port.port}/__peach/expo-swift?root=${encodeURIComponent(expoRoot)}`,
940
+ )
941
+ }
927
942
  if (
928
943
  !opts.device &&
929
944
  !opts.proof &&
@@ -933,8 +948,8 @@ export async function buildShellUrl(
933
948
  !opts.env?.length &&
934
949
  !opts.dotEnv
935
950
  )
936
- return stamped
937
- const url = new URL(stamped)
951
+ return expoStamped.toString()
952
+ const url = expoStamped
938
953
  if (opts.dotEnv) url.searchParams.set('dotEnv', JSON.stringify(opts.dotEnv))
939
954
  if (opts.device) url.searchParams.set('device', opts.device)
940
955
  if (opts.posture) url.searchParams.set('posture', opts.posture)
@@ -970,6 +985,7 @@ function deriveCurrentSimBaseUrl(
970
985
  url.searchParams.delete('appSplash')
971
986
  url.searchParams.delete('appCatalog')
972
987
  url.searchParams.delete('nativeFirebase')
988
+ url.searchParams.delete('expoSwift')
973
989
  return url.toString()
974
990
  } catch {
975
991
  return fallback
@@ -1252,17 +1252,30 @@ export async function inspectWaitReady(
1252
1252
  return status
1253
1253
  }
1254
1254
 
1255
+ // how long one snapshot request may take to cross the bridge and read once
1256
+ const READY_SNAPSHOT_SEND_TIMEOUT_MS = 2_000
1257
+
1255
1258
  // one readiness probe, judged on its own: no stability window, since the
1256
- // caller has already let the app settle. any runtime answers it, because a
1257
- // one-millisecond wait polls once and returns that probe whether or not its
1258
- // own stability window matched.
1259
+ // caller has already let the app settle. any runtime answers it: a wait that
1260
+ // times out still returns its last probe. only a wait that read exactly once
1261
+ // proves anything. none says nothing (an older runtime whose deadline passed
1262
+ // before its first read), and a second read could report a tree that mounted
1263
+ // after the settle, so either asks again until budgetMs runs out; the first
1264
+ // request goes out even with no budget left.
1259
1265
  export async function inspectReadySnapshot(
1260
1266
  bridge: InspectBridge,
1261
- sendTimeoutMs: number,
1267
+ budgetMs: number,
1262
1268
  simId?: string,
1263
1269
  ): Promise<WaitReadyStatus> {
1264
- const result = await sendReadyWait(bridge, 1, sendTimeoutMs, simId)
1265
- return waitReadyStatus(result, result.probe ? readyProbeIsReady(result.probe) : false)
1270
+ const deadline = Date.now() + budgetMs
1271
+ let result: SemanticWaitResult
1272
+ do {
1273
+ result = await sendReadyWait(bridge, 1, READY_SNAPSHOT_SEND_TIMEOUT_MS, simId)
1274
+ } while (result.polls !== 1 && !result.error && Date.now() < deadline)
1275
+ return waitReadyStatus(
1276
+ result,
1277
+ result.polls === 1 && result.probe ? readyProbeIsReady(result.probe) : false,
1278
+ )
1266
1279
  }
1267
1280
 
1268
1281
  async function sendReadyWait(
@@ -257,11 +257,7 @@ export async function waitReadyAndSettle(
257
257
  stablePolls: 2,
258
258
  })
259
259
  if (!idle.settled) return result(ready, idle)
260
- const settled = await inspectReadySnapshot(
261
- bridge,
262
- Math.max(1_000, remaining()),
263
- options.simId,
264
- )
260
+ const settled = await inspectReadySnapshot(bridge, remaining(), options.simId)
265
261
  if (settled.ready || remaining() === 0) return result(settled, idle)
266
262
  }
267
263
  }
package/detox/index.ts CHANGED
@@ -124,7 +124,7 @@ function getPage(): Page {
124
124
 
125
125
  async function waitForSootsimTree(page: Page, timeout = 30000): Promise<void> {
126
126
  try {
127
- await page.waitForFunction(() => !!window.__sootsimTest?.waitForTree, {
127
+ await page.waitForFunction(() => !!window.__sootsimTest?.waitForTree, undefined, {
128
128
  timeout,
129
129
  })
130
130
  await page.evaluate(async (timeoutMs) => {
@@ -28,6 +28,7 @@ export async function navigateToTestCase(
28
28
  // wait for sootsim engine to initialize
29
29
  await page.waitForFunction(
30
30
  'window.__sootsimTest && window.__sootsimRoot && window.__sootsimRoot.children.length > 0',
31
+ undefined,
31
32
  { timeout: 30000 },
32
33
  )
33
34
 
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.664 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.666 | (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.664 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.666 | (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.664 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.666 | (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.664 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.666 | (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.664 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.666 | (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.664 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.666 | (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.664 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.666 | (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.664 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.666 | (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.664 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.666 | (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.664 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.666 | (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.664 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.666 | (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.664 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.666 | (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.664 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.666 | (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.664 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.666 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
 
3
3
  // src/bridge-contract.ts
4
4
  var REFUSED_PERFORM_STEP_TYPES = [
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.664 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.666 | (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.664 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.666 | (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.664 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.666 | (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.664 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.666 | (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.664 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.666 | (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.664 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.666 | (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.664 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.666 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
 
3
3
  // src/cloud-test-args.ts
4
4
  var CLOUD_TEST_ARGS_MAX_COUNT = 32;
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.664 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.666 | (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.664 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.666 | (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.664 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.666 | (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.664 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.666 | (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;
@@ -2098,7 +2098,7 @@ function getPage() {
2098
2098
  }
2099
2099
  async function waitForSootsimTree(page, timeout = 3e4) {
2100
2100
  try {
2101
- await page.waitForFunction(() => !!window.__sootsimTest?.waitForTree, {
2101
+ await page.waitForFunction(() => !!window.__sootsimTest?.waitForTree, void 0, {
2102
2102
  timeout
2103
2103
  });
2104
2104
  await page.evaluate(async (timeoutMs) => {
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.664 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.666 | (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.664 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.666 | (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;