peachsim 0.1.1644 → 0.1.1653

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 (608) hide show
  1. package/README.md +12 -0
  2. package/cli/app-catalog.ts +1 -1
  3. package/cli/app-fonts.ts +11 -80
  4. package/cli/app-splash.ts +18 -12
  5. package/cli/bridge-flow-runner.ts +11 -7
  6. package/cli/cloud-client.ts +10 -13
  7. package/cli/command-registry.ts +13 -4
  8. package/cli/commands/box.ts +4 -4
  9. package/cli/commands/control.ts +93 -53
  10. package/cli/commands/coverage-parser.ts +67 -0
  11. package/cli/commands/coverage.ts +550 -0
  12. package/cli/commands/debug.ts +9 -18
  13. package/cli/commands/desktop.ts +19 -7
  14. package/cli/commands/device.ts +14 -9
  15. package/cli/commands/guest-host.ts +6 -10
  16. package/cli/commands/inspect/core.ts +81 -17
  17. package/cli/commands/inspect.ts +13 -8
  18. package/cli/commands/kotlin.ts +2 -2
  19. package/cli/commands/maestro-compare.ts +1 -1
  20. package/cli/commands/platform.ts +20 -11
  21. package/cli/commands/preview.ts +16 -18
  22. package/cli/commands/runtime.ts +3 -2
  23. package/cli/commands/screenshot-layers.ts +1 -1
  24. package/cli/commands/screenshot.ts +1 -1
  25. package/cli/commands/serve.ts +5 -1
  26. package/cli/commands/support.ts +4 -4
  27. package/cli/commands/three-mode.ts +22 -15
  28. package/cli/commands/upload.ts +44 -45
  29. package/cli/current-sim.ts +38 -0
  30. package/cli/desktop-companion.ts +36 -8
  31. package/cli/device-option.ts +1 -1
  32. package/cli/drivers/playwright.ts +1 -0
  33. package/cli/drivers/types.ts +4 -0
  34. package/cli/help-core.ts +1 -1
  35. package/cli/internal-child.ts +2 -1
  36. package/cli/main.ts +9 -3
  37. package/cli/outbound-endpoints.ts +11 -3
  38. package/cli/output-redaction.ts +39 -14
  39. package/cli/remote-simulators.ts +4 -1
  40. package/cli/scene-video.ts +5 -2
  41. package/cli/send-to-box.ts +7 -10
  42. package/cli/telemetry.ts +1 -1
  43. package/cli/ws-bridge.ts +8 -1
  44. package/detox/attempt-events.cjs +3 -1
  45. package/detox/attempt-events.d.cts +1 -1
  46. package/detox/expectations.ts +108 -99
  47. package/detox/frame-offset.d.mts +6 -0
  48. package/detox/frame-offset.mjs +35 -0
  49. package/detox/gestures.ts +6 -18
  50. package/detox/index.ts +169 -101
  51. package/detox/jest-preset.cjs +1 -3
  52. package/detox/jest-transform.cjs +4 -0
  53. package/detox/matchers.ts +3 -0
  54. package/detox/motion-change.cjs +46 -114
  55. package/detox/motion-change.d.cts +5 -27
  56. package/dist-lib/agent-daemon-client.cjs +1 -1
  57. package/dist-lib/agent-events.cjs +1 -1
  58. package/dist-lib/attached-projects.cjs +1 -1
  59. package/dist-lib/auth/shared-session.cjs +1 -1
  60. package/dist-lib/backend-origin.cjs +1 -1
  61. package/dist-lib/beta.cjs +1 -1
  62. package/dist-lib/beta.mjs +1 -1
  63. package/dist-lib/bridge-constants.cjs +1 -1
  64. package/dist-lib/bridge-contract-input.cjs +65 -1
  65. package/dist-lib/bridge-contract-input.mjs +63 -1
  66. package/dist-lib/bridge-contract.cjs +19 -1
  67. package/dist-lib/bridge-contract.mjs +17 -1
  68. package/dist-lib/bundle-channel.cjs +38091 -14846
  69. package/dist-lib/capture-contract.cjs +1 -1
  70. package/dist-lib/capture-contract.mjs +1 -1
  71. package/dist-lib/cloud-contract.cjs +1 -1
  72. package/dist-lib/cloud-contract.mjs +1 -1
  73. package/dist-lib/cloud-test-args.cjs +1 -1
  74. package/dist-lib/cloud-test-args.mjs +1 -1
  75. package/dist-lib/cloud.cjs +1 -1
  76. package/dist-lib/cloud.mjs +1 -1
  77. package/dist-lib/config.cjs +1 -1
  78. package/dist-lib/config.mjs +5 -3
  79. package/dist-lib/detox/index.cjs +1244 -4509
  80. package/dist-lib/detox/jest-preset.cjs +1 -3
  81. package/dist-lib/detox/jest-transform.cjs +4 -0
  82. package/dist-lib/dev-bundle-resolution.cjs +28 -24
  83. package/dist-lib/expo-swift-bundle.cjs +35049 -13125
  84. package/dist-lib/expo-swift-metadata.cjs +1 -1
  85. package/dist-lib/expo-swift-metadata.mjs +1 -1
  86. package/dist-lib/home-paths.cjs +1 -1
  87. package/dist-lib/host/bridge-host.cjs +45112 -63143
  88. package/dist-lib/host/fetch-proxy-handler.cjs +3544 -11
  89. package/dist-lib/host/fetch-proxy-overrides.cjs +1 -1
  90. package/dist-lib/host/fetch-proxy-overrides.mjs +1 -1
  91. package/dist-lib/host/replacement-module-handler.cjs +1 -1
  92. package/dist-lib/host/websocket-proxy.cjs +1 -1
  93. package/dist-lib/index.cjs +1909 -2029
  94. package/dist-lib/jump-to-source-babel.cjs +1 -1
  95. package/dist-lib/jump-to-source-native.cjs +1 -1
  96. package/dist-lib/kotlin-host.cjs +2 -2
  97. package/dist-lib/menu.cjs +1 -1
  98. package/dist-lib/menu.mjs +1 -1
  99. package/dist-lib/metro-fingerprint-registry.cjs +1 -1
  100. package/dist-lib/metro-fingerprint-registry.mjs +1 -1
  101. package/dist-lib/metro-production-bundle.cjs +1 -1
  102. package/dist-lib/metro-production-bundle.mjs +1 -1
  103. package/dist-lib/metro.cjs +380 -522
  104. package/dist-lib/native-app-identity-project.cjs +39 -252
  105. package/dist-lib/native-app-identity-project.mjs +1174 -11
  106. package/dist-lib/native-app-identity.cjs +8 -3
  107. package/dist-lib/native-app-identity.mjs +8 -3
  108. package/dist-lib/native-firebase-metadata.cjs +1 -1
  109. package/dist-lib/native-firebase-metadata.mjs +1 -1
  110. package/dist-lib/plist.cjs +2 -244
  111. package/dist-lib/plist.mjs +1 -1
  112. package/dist-lib/profiles.cjs +1 -1
  113. package/dist-lib/public-brand.cjs +1 -1
  114. package/dist-lib/public-origins-lib-esm.json +290 -0
  115. package/dist-lib/public-origins-lib-static.json +1 -0
  116. package/dist-lib/public-origins-lib.json +1852 -0
  117. package/dist-lib/react-native-host-modules.cjs +1 -1
  118. package/dist-lib/react-native-host-modules.mjs +1 -1
  119. package/dist-lib/scripts/dev-server-scanner.cjs +14 -253
  120. package/dist-lib/sdk.cjs +83 -16
  121. package/dist-lib/sdk.mjs +81 -15
  122. package/dist-lib/skills.cjs +50546 -75098
  123. package/dist-lib/swift-compile.cjs +25897 -1070
  124. package/dist-lib/swift-compile.mjs +25866 -1033
  125. package/dist-lib/swift-package.cjs +79 -1
  126. package/dist-lib/swift-package.mjs +75 -1
  127. package/dist-lib/swift-submit.cjs +1 -1
  128. package/dist-lib/swift-submit.mjs +1 -1
  129. package/dist-lib/swift-toolchain.cjs +1 -1
  130. package/dist-lib/swift.cjs +1 -1
  131. package/dist-lib/vite-swift.cjs +34273 -12349
  132. package/dist-lib/vite.cjs +373 -298
  133. package/dist-lib/worklet-executable.cjs +1 -1
  134. package/dist-lib/worklet-executable.mjs +1 -1
  135. package/dist-types/packages/peach-compat/src/engine-config.d.ts +2 -0
  136. package/dist-types/packages/peach-compat/src/stubs/form-sheet-spring.d.ts +9 -0
  137. package/dist-types/packages/peach-compat/src/stubs/native-evaluation-lease.d.ts +47 -0
  138. package/dist-types/packages/peach-compat/src/stubs/native-seams/react-native-cookies.d.ts +113 -0
  139. package/dist-types/packages/peach-compat/src/stubs/native-seams/react-native-gesture-handler.d.ts +154 -0
  140. package/dist-types/packages/peach-compat/src/stubs/screen-transition-math.d.ts +756 -0
  141. package/dist-types/packages/peach-compat/src/stubs/transition-scalar.d.ts +25 -0
  142. package/dist-types/packages/peach-engine/src/billing/plans.d.ts +64 -0
  143. package/dist-types/packages/peach-engine/src/browser-page-target.d.ts +2 -0
  144. package/dist-types/packages/peach-engine/src/bundle-platform-url.d.ts +3 -0
  145. package/dist-types/packages/peach-engine/src/capture/browser-accessibility-host.d.ts +3 -0
  146. package/dist-types/packages/peach-engine/src/capture/browser-composite.d.ts +55 -0
  147. package/dist-types/packages/peach-engine/src/capture/browserAccessibilityContract.d.ts +27 -0
  148. package/dist-types/packages/peach-engine/src/capture/nativeScreenCaptureContract.d.ts +22 -0
  149. package/dist-types/packages/peach-engine/src/cli-companion.d.ts +36 -0
  150. package/dist-types/packages/peach-engine/src/components/native-ui/webview-frame-bridge.d.ts +34 -0
  151. package/dist-types/packages/peach-engine/src/config.d.ts +5 -0
  152. package/dist-types/packages/peach-engine/src/engine/android-stretch-effect.d.ts +57 -0
  153. package/dist-types/packages/peach-engine/src/engine/animated-driven-style.d.ts +47 -0
  154. package/dist-types/packages/peach-engine/src/engine/animated-value.d.ts +5 -0
  155. package/dist-types/packages/peach-engine/src/engine/animated.d.ts +195 -0
  156. package/dist-types/packages/peach-engine/src/engine/animation-clockContract.d.ts +15 -0
  157. package/dist-types/packages/peach-engine/src/engine/animation-graph.d.ts +148 -0
  158. package/dist-types/packages/peach-engine/src/engine/app-catalog-wire.d.ts +10 -0
  159. package/dist-types/packages/peach-engine/src/engine/app-font-registry.d.ts +87 -0
  160. package/dist-types/packages/peach-engine/src/engine/attributed-paragraph-paint.d.ts +7 -0
  161. package/dist-types/packages/peach-engine/src/engine/attributed-paragraph.d.ts +123 -0
  162. package/dist-types/packages/peach-engine/src/engine/audioContract.d.ts +16 -0
  163. package/dist-types/packages/peach-engine/src/engine/canvaskit-api.d.ts +93 -0
  164. package/dist-types/packages/peach-engine/src/engine/canvaskit-renderer.d.ts +216 -0
  165. package/dist-types/packages/peach-engine/src/engine/config-plugin-fonts.d.ts +40 -0
  166. package/dist-types/packages/peach-engine/src/engine/config-plugin-splash.d.ts +25 -0
  167. package/dist-types/packages/peach-engine/src/engine/cull-visibility.d.ts +44 -0
  168. package/dist-types/packages/peach-engine/src/engine/damage-rect.d.ts +19 -0
  169. package/dist-types/packages/peach-engine/src/engine/engine-resource.d.ts +6 -0
  170. package/dist-types/packages/peach-engine/src/engine/expo-manifest.d.ts +5 -0
  171. package/dist-types/packages/peach-engine/src/engine/fiber-debug-metadata.d.ts +30 -0
  172. package/dist-types/packages/peach-engine/src/engine/font-config.d.ts +139 -0
  173. package/dist-types/packages/peach-engine/src/engine/generated/sf-pro-font.d.ts +1 -0
  174. package/dist-types/packages/peach-engine/src/engine/glass-material.d.ts +31 -0
  175. package/dist-types/packages/peach-engine/src/engine/host-composite.d.ts +100 -0
  176. package/dist-types/packages/peach-engine/src/engine/hosted-semantics.d.ts +49 -0
  177. package/dist-types/packages/peach-engine/src/engine/image-audit.d.ts +70 -0
  178. package/dist-types/packages/peach-engine/src/engine/image-loader.d.ts +350 -0
  179. package/dist-types/packages/peach-engine/src/engine/inspect-info.d.ts +27 -0
  180. package/dist-types/packages/peach-engine/src/engine/inspect-outline.d.ts +14 -0
  181. package/dist-types/packages/peach-engine/src/engine/inspect-visibility.d.ts +33 -0
  182. package/dist-types/packages/peach-engine/src/engine/ios-fast-scroll.d.ts +16 -0
  183. package/dist-types/packages/peach-engine/src/engine/layout-sab.d.ts +43 -0
  184. package/dist-types/packages/peach-engine/src/engine/liquid-glass-rect.d.ts +23 -0
  185. package/dist-types/packages/peach-engine/src/engine/liquid-glass-shaders.d.ts +9 -0
  186. package/dist-types/packages/peach-engine/src/engine/liquid-glass.d.ts +283 -0
  187. package/dist-types/packages/peach-engine/src/engine/live-object-counts.d.ts +6 -0
  188. package/dist-types/packages/peach-engine/src/engine/lottie-runtime.d.ts +32 -0
  189. package/dist-types/packages/peach-engine/src/engine/lottie-types.d.ts +138 -0
  190. package/dist-types/packages/peach-engine/src/engine/memory-counts.d.ts +27 -0
  191. package/dist-types/packages/peach-engine/src/engine/metalDirectContract.d.ts +108 -0
  192. package/dist-types/packages/peach-engine/src/engine/metalShaderContract.d.ts +217 -0
  193. package/dist-types/packages/peach-engine/src/engine/native-animation-driver.d.ts +112 -0
  194. package/dist-types/packages/peach-engine/src/engine/native-animation-graph.d.ts +62 -0
  195. package/dist-types/packages/peach-engine/src/engine/native-layout.d.ts +133 -0
  196. package/dist-types/packages/peach-engine/src/engine/native-resources.d.ts +26 -0
  197. package/dist-types/packages/peach-engine/src/engine/nativeReanimatedContract.d.ts +25 -0
  198. package/dist-types/packages/peach-engine/src/engine/nativeReplayContract.d.ts +64 -0
  199. package/dist-types/packages/peach-engine/src/engine/node.d.ts +589 -0
  200. package/dist-types/packages/peach-engine/src/engine/paint-boundary-types.d.ts +112 -0
  201. package/dist-types/packages/peach-engine/src/engine/paint-boundary.d.ts +57 -0
  202. package/dist-types/packages/peach-engine/src/engine/portalContract.d.ts +21 -0
  203. package/dist-types/packages/peach-engine/src/engine/portals.d.ts +20 -0
  204. package/dist-types/packages/peach-engine/src/engine/render-damage.d.ts +107 -0
  205. package/dist-types/packages/peach-engine/src/engine/riveContract.d.ts +420 -0
  206. package/dist-types/packages/peach-engine/src/engine/rn-spring.d.ts +51 -0
  207. package/dist-types/packages/peach-engine/src/engine/scene-table.d.ts +379 -0
  208. package/dist-types/packages/peach-engine/src/engine/scroll-momentum-math.d.ts +152 -0
  209. package/dist-types/packages/peach-engine/src/engine/scroll-pan-contacts.d.ts +10 -0
  210. package/dist-types/packages/peach-engine/src/engine/scroll-platform.d.ts +75 -0
  211. package/dist-types/packages/peach-engine/src/engine/scroll-range.d.ts +14 -0
  212. package/dist-types/packages/peach-engine/src/engine/scroll-velocity.d.ts +14 -0
  213. package/dist-types/packages/peach-engine/src/engine/scroll.d.ts +320 -0
  214. package/dist-types/packages/peach-engine/src/engine/signal.d.ts +7 -0
  215. package/dist-types/packages/peach-engine/src/engine/snapshot-cache-policy.d.ts +6 -0
  216. package/dist-types/packages/peach-engine/src/engine/svg-geometry.d.ts +41 -0
  217. package/dist-types/packages/peach-engine/src/engine/text-attachment-paragraphs.d.ts +10 -0
  218. package/dist-types/packages/peach-engine/src/engine/text-decoration.d.ts +11 -0
  219. package/dist-types/packages/peach-engine/src/engine/text-line-break.d.ts +22 -0
  220. package/dist-types/packages/peach-engine/src/engine/text-paint-receipt.d.ts +98 -0
  221. package/dist-types/packages/peach-engine/src/engine/text-paragraph.d.ts +11 -0
  222. package/dist-types/packages/peach-engine/src/engine/text-paragraphContract.d.ts +34 -0
  223. package/dist-types/packages/peach-engine/src/engine/text-transform.d.ts +1 -0
  224. package/dist-types/packages/peach-engine/src/engine/types.d.ts +657 -0
  225. package/dist-types/packages/peach-engine/src/engine/visible-frame.d.ts +54 -0
  226. package/dist-types/packages/peach-engine/src/engine/webrtcContract.d.ts +74 -0
  227. package/dist-types/packages/peach-engine/src/graphite-stats-fields.d.ts +184 -0
  228. package/dist-types/packages/peach-engine/src/guest-import-meta.d.ts +12 -0
  229. package/dist-types/packages/peach-engine/src/guest-module-overrides.d.ts +7 -0
  230. package/dist-types/packages/peach-engine/src/ios/app-card-types.d.ts +7 -0
  231. package/dist-types/packages/peach-engine/src/ios/apps/canvas-map-data.d.ts +177 -0
  232. package/dist-types/packages/peach-engine/src/ios/aux-home-scene.d.ts +54 -0
  233. package/dist-types/packages/peach-engine/src/ios/chrome-metrics.d.ts +47 -0
  234. package/dist-types/packages/peach-engine/src/ios/constants.d.ts +21 -0
  235. package/dist-types/packages/peach-engine/src/ios/duo-housing.d.ts +37 -0
  236. package/dist-types/packages/peach-engine/src/ios/home/types.d.ts +29 -0
  237. package/dist-types/packages/peach-engine/src/ios/home-app-catalog.d.ts +43 -0
  238. package/dist-types/packages/peach-engine/src/ios/photo-store.d.ts +73 -0
  239. package/dist-types/packages/peach-engine/src/ios/photoLibraryContract.d.ts +166 -0
  240. package/dist-types/packages/peach-engine/src/ios/shell-controller-types.d.ts +21 -0
  241. package/dist-types/packages/peach-engine/src/ios/shell-transition-debug.d.ts +18 -0
  242. package/dist-types/packages/peach-engine/src/metro-asset-path.d.ts +21 -0
  243. package/dist-types/packages/peach-engine/src/metro-fingerprint-registry-client.d.ts +11 -0
  244. package/dist-types/packages/peach-engine/src/metro-fingerprint.d.ts +38 -0
  245. package/dist-types/packages/peach-engine/src/native-preview-bundle.d.ts +44 -0
  246. package/dist-types/packages/peach-engine/src/observability/types.d.ts +74 -0
  247. package/dist-types/packages/peach-engine/src/peach-warm-manifest.d.ts +32 -0
  248. package/dist-types/packages/peach-engine/src/permissions/app-settings-client.d.ts +25 -0
  249. package/dist-types/packages/peach-engine/src/permissions/system-permission-types.d.ts +20 -0
  250. package/dist-types/packages/peach-engine/src/platform/android-back-panel.d.ts +131 -0
  251. package/dist-types/packages/peach-engine/src/platform/android-gesture-exclusion.d.ts +28 -0
  252. package/dist-types/packages/peach-engine/src/platform/android-predictive-back.d.ts +33 -0
  253. package/dist-types/packages/peach-engine/src/platform/system-bars-state.d.ts +14 -0
  254. package/dist-types/packages/peach-engine/src/playwright-sim-host.d.ts +1 -0
  255. package/dist-types/packages/peach-engine/src/preview/bundle-layout.d.ts +8 -0
  256. package/dist-types/packages/peach-engine/src/preview/bundle-variantContract.d.ts +24 -0
  257. package/dist-types/packages/peach-engine/src/preview/capture-bundle.d.ts +26 -0
  258. package/dist-types/packages/peach-engine/src/preview/compress-node.d.ts +2 -0
  259. package/dist-types/packages/peach-engine/src/preview/compress.d.ts +2 -0
  260. package/dist-types/packages/peach-engine/src/preview/presigned-upload.d.ts +60 -0
  261. package/dist-types/packages/peach-engine/src/preview/trace.d.ts +144 -0
  262. package/dist-types/packages/peach-engine/src/preview/upload-protocol.d.ts +152 -0
  263. package/dist-types/packages/peach-engine/src/profiler/animation-recording-loader.d.ts +1 -0
  264. package/dist-types/packages/peach-engine/src/profiler/profile-trace.d.ts +4 -0
  265. package/dist-types/packages/peach-engine/src/react-bridge.d.ts +3 -0
  266. package/dist-types/packages/peach-engine/src/react-native/AppState.d.ts +45 -0
  267. package/dist-types/packages/peach-engine/src/react-native/Appearance.d.ts +34 -0
  268. package/dist-types/packages/peach-engine/src/react-native/framework-colors-data.d.ts +2 -0
  269. package/dist-types/packages/peach-engine/src/react-native/host-services.d.ts +42 -0
  270. package/dist-types/packages/peach-engine/src/react-native/layout-animation.d.ts +22 -0
  271. package/dist-types/packages/peach-engine/src/react-native/platform-colors.d.ts +17 -0
  272. package/dist-types/packages/peach-engine/src/remote-stream/client-config.d.ts +10 -0
  273. package/dist-types/packages/peach-engine/src/remote-stream/cloud-display.d.ts +58 -0
  274. package/dist-types/packages/peach-engine/src/remote-stream/scene-recording.d.ts +45 -0
  275. package/dist-types/packages/peach-engine/src/render-worker/animated-drive-output.d.ts +35 -0
  276. package/dist-types/packages/peach-engine/src/render-worker/app-load.d.ts +16 -0
  277. package/dist-types/packages/peach-engine/src/render-worker/aux-surface-types.d.ts +2 -0
  278. package/dist-types/packages/peach-engine/src/render-worker/canvaskit-shared.d.ts +42 -0
  279. package/dist-types/packages/peach-engine/src/render-worker/canvaskit-webgpu.d.ts +434 -0
  280. package/dist-types/packages/peach-engine/src/render-worker/canvaskit-worker-init.d.ts +12 -0
  281. package/dist-types/packages/peach-engine/src/render-worker/compositor-backend.d.ts +31 -0
  282. package/dist-types/packages/peach-engine/src/render-worker/compositor-gpu.d.ts +202 -0
  283. package/dist-types/packages/peach-engine/src/render-worker/compositor-protocol.d.ts +1945 -0
  284. package/dist-types/packages/peach-engine/src/render-worker/compositor-runtime/scroll-drag-resample.d.ts +44 -0
  285. package/dist-types/packages/peach-engine/src/render-worker/css-keyframes-drive.d.ts +36 -0
  286. package/dist-types/packages/peach-engine/src/render-worker/edit-menu-geometry.d.ts +8 -0
  287. package/dist-types/packages/peach-engine/src/render-worker/engine-resource-relay.d.ts +21 -0
  288. package/dist-types/packages/peach-engine/src/render-worker/expo-widgetContract.d.ts +16 -0
  289. package/dist-types/packages/peach-engine/src/render-worker/gesture-seam-protocol.d.ts +152 -0
  290. package/dist-types/packages/peach-engine/src/render-worker/graph-linked-value.d.ts +29 -0
  291. package/dist-types/packages/peach-engine/src/render-worker/graphite-pipeline-compiler-contract.d.ts +49 -0
  292. package/dist-types/packages/peach-engine/src/render-worker/graphite-pipeline-compiler.d.ts +12 -0
  293. package/dist-types/packages/peach-engine/src/render-worker/host-service-protocol.d.ts +756 -0
  294. package/dist-types/packages/peach-engine/src/render-worker/image-lifecycle-event.d.ts +22 -0
  295. package/dist-types/packages/peach-engine/src/render-worker/image-pixel-contract.d.ts +48 -0
  296. package/dist-types/packages/peach-engine/src/render-worker/live-frame-mirror.d.ts +34 -0
  297. package/dist-types/packages/peach-engine/src/render-worker/map-command-channel.d.ts +189 -0
  298. package/dist-types/packages/peach-engine/src/render-worker/mapNativeContract.d.ts +101 -0
  299. package/dist-types/packages/peach-engine/src/render-worker/native-dynamic-synchronizable.d.ts +22 -0
  300. package/dist-types/packages/peach-engine/src/render-worker/native-menu-gesture.d.ts +9 -0
  301. package/dist-types/packages/peach-engine/src/render-worker/native-ui-commandContract.d.ts +23 -0
  302. package/dist-types/packages/peach-engine/src/render-worker/native-ui-protocol.d.ts +1087 -0
  303. package/dist-types/packages/peach-engine/src/render-worker/native-widgetContract.d.ts +100 -0
  304. package/dist-types/packages/peach-engine/src/render-worker/nativeAnimMirrorContract.d.ts +174 -0
  305. package/dist-types/packages/peach-engine/src/render-worker/nativeSyncReplyContract.d.ts +11 -0
  306. package/dist-types/packages/peach-engine/src/render-worker/one-native-contentContract.d.ts +54 -0
  307. package/dist-types/packages/peach-engine/src/render-worker/pointerSampleContract.d.ts +14 -0
  308. package/dist-types/packages/peach-engine/src/render-worker/protocol.d.ts +880 -0
  309. package/dist-types/packages/peach-engine/src/render-worker/reanimated-css-contract.d.ts +63 -0
  310. package/dist-types/packages/peach-engine/src/render-worker/reanimated-readiness.d.ts +29 -0
  311. package/dist-types/packages/peach-engine/src/render-worker/resilient-frame-clock.d.ts +22 -0
  312. package/dist-types/packages/peach-engine/src/render-worker/retained-app-load.d.ts +20 -0
  313. package/dist-types/packages/peach-engine/src/render-worker/screen-edge-swipe-commit-protocol.d.ts +1 -0
  314. package/dist-types/packages/peach-engine/src/render-worker/screen-form-sheet-commit-protocol.d.ts +26 -0
  315. package/dist-types/packages/peach-engine/src/render-worker/scroll-mirror-tenant.d.ts +37 -0
  316. package/dist-types/packages/peach-engine/src/render-worker/scroll-mirror.d.ts +164 -0
  317. package/dist-types/packages/peach-engine/src/render-worker/shell-event-registry.d.ts +119 -0
  318. package/dist-types/packages/peach-engine/src/render-worker/shell-gesture-regions.d.ts +41 -0
  319. package/dist-types/packages/peach-engine/src/render-worker/shell-protocol.d.ts +603 -0
  320. package/dist-types/packages/peach-engine/src/render-worker/shell-scene-schema.d.ts +101 -0
  321. package/dist-types/packages/peach-engine/src/render-worker/shell-tree-inline-sources.d.ts +13 -0
  322. package/dist-types/packages/peach-engine/src/render-worker/shell-tree-wire.d.ts +87 -0
  323. package/dist-types/packages/peach-engine/src/render-worker/test-bridge-protocol.d.ts +47 -0
  324. package/dist-types/packages/peach-engine/src/render-worker/text-inputContract.d.ts +93 -0
  325. package/dist-types/packages/peach-engine/src/render-worker/tree-sync-port.d.ts +102 -0
  326. package/dist-types/packages/peach-engine/src/render-worker/webgpu-frame-transaction.d.ts +292 -0
  327. package/dist-types/packages/peach-engine/src/render-worker/webgpu-readback-scheduler.d.ts +107 -0
  328. package/dist-types/packages/peach-engine/src/render-worker/webview-capture-protocol.d.ts +16 -0
  329. package/dist-types/packages/peach-engine/src/render-worker/worker-input-runtime.d.ts +211 -0
  330. package/dist-types/packages/peach-engine/src/render-worker/worker-storage.d.ts +33 -0
  331. package/dist-types/packages/peach-engine/src/render-worker/worklet-runtime.d.ts +987 -0
  332. package/dist-types/packages/peach-engine/src/render-worker/worklet-sab.d.ts +24 -0
  333. package/dist-types/packages/peach-engine/src/rolldown-bundle-inventory.d.ts +84 -0
  334. package/dist-types/packages/peach-engine/src/rolldown-production-fingerprint.d.ts +31 -0
  335. package/dist-types/packages/peach-engine/src/screenshots/timeline-assets.d.ts +10 -0
  336. package/dist-types/packages/peach-engine/src/screenshots/tokens.d.ts +9 -0
  337. package/dist-types/packages/peach-engine/src/settings/devices.d.ts +70 -0
  338. package/dist-types/packages/peach-engine/src/settings/duo-fold-bus.d.ts +87 -0
  339. package/dist-types/packages/peach-engine/src/settings/interface-rotation.d.ts +30 -0
  340. package/dist-types/packages/peach-engine/src/settings/react-native-configuration.d.ts +12 -0
  341. package/dist-types/packages/peach-engine/src/settings/scene-geometryContract.d.ts +40 -0
  342. package/dist-types/packages/peach-engine/src/settings/store.d.ts +37 -0
  343. package/dist-types/packages/peach-engine/src/shell-events.d.ts +203 -0
  344. package/dist-types/packages/peach-engine/src/shell-intent.d.ts +68 -0
  345. package/dist-types/packages/peach-engine/src/sootsim-event.d.ts +35 -0
  346. package/dist-types/packages/peach-engine/src/top-overlay-state.d.ts +5 -0
  347. package/dist-types/packages/peach-engine/src/web-authentication-automation-host.d.ts +2 -0
  348. package/dist-types/packages/peach-engine/src/webAuthenticationContract.d.ts +34 -0
  349. package/dist-types/packages/peach-engine/src/webview-automation-host.d.ts +180 -0
  350. package/dist-types/packages/peach-engine/src/wireframe-mode.d.ts +16 -0
  351. package/dist-types/packages/peach-globals/src/frameBreakdownContract.d.ts +16 -0
  352. package/dist-types/packages/peach-globals/src/index.d.ts +3311 -0
  353. package/dist-types/packages/peach-globals/src/nativeSurfaceContract.d.ts +76 -0
  354. package/dist-types/packages/peach-globals/src/pointerSourceEventContract.d.ts +8 -0
  355. package/dist-types/packages/peach-globals/src/profileTrace.d.ts +11 -0
  356. package/dist-types/packages/peach-globals/src/profilerContract.d.ts +223 -0
  357. package/dist-types/packages/peach-kit/src/capabilities.d.ts +721 -0
  358. package/dist-types/packages/peach-kit/src/internal.d.ts +4 -0
  359. package/dist-types/packages/peach-kit/src/materials/types.d.ts +27 -0
  360. package/dist-types/packages/peach-kit/src/materials/uikit-blur-material.d.ts +14 -0
  361. package/dist-types/packages/peach-kit/src/navigation-types.d.ts +11 -0
  362. package/dist-types/packages/peach-kit/src/react-bridge.d.ts +53 -0
  363. package/dist-types/packages/peach-kit/src/runtime.d.ts +26 -0
  364. package/dist-types/packages/peach-kit/src/ui/hosting-safe-area.d.ts +24 -0
  365. package/dist-types/packages/peach-kit/src/ui/popover-placement.d.ts +53 -0
  366. package/dist-types/packages/peach-kit/src/ui/presentationContract.d.ts +17 -0
  367. package/kotlin/ComposeSources/PeachComposeHost.kt +1 -1
  368. package/kotlin/JniSources/com/facebook/jni/HybridData.kt +0 -2
  369. package/kotlin/JniSources/dev/peach/jni/NativeBindings.kt +0 -2
  370. package/kotlin/JniTransportSources/dev/peach/jni/integration/JniTransport.kt +0 -2
  371. package/kotlin/README.md +6 -0
  372. package/package.json +22 -2
  373. package/runtime-companion.json +1 -0
  374. package/skills/contrast/SKILL.md +1 -0
  375. package/src/assetCatalogContract.ts +21 -0
  376. package/src/bridge-contract-input.ts +84 -0
  377. package/src/bridge-contract.ts +35 -3
  378. package/src/browser-launch-policy.ts +1 -0
  379. package/src/bundle-channel.mjs +4 -2
  380. package/src/cli-runtime.ts +55 -0
  381. package/src/crash-fingerprint.ts +26 -0
  382. package/src/dev-bundle-resolution.ts +50 -23
  383. package/src/device-catalog.ts +1159 -0
  384. package/src/host/bridge-host.ts +3 -26
  385. package/src/host/browser-pointer.ts +71 -0
  386. package/src/host/dev-server-package-versions.ts +23 -0
  387. package/src/host/fetch-proxy-handler.ts +17 -4
  388. package/src/installed-package-versions.ts +142 -38
  389. package/src/kotlin-host.ts +1 -1
  390. package/src/metro-plugin.ts +4 -4
  391. package/src/metro-project-root.ts +68 -0
  392. package/src/nitro-adapter.lock.json +26 -0
  393. package/src/nitro-adapter.ts +103 -0
  394. package/src/nitro-bundle.ts +24 -10
  395. package/src/nitro-compile.ts +33 -51
  396. package/src/nitro-source.ts +177 -96
  397. package/src/nitroAdapterContract.ts +217 -0
  398. package/src/nitroContract.ts +24 -11
  399. package/src/process-group.ts +41 -34
  400. package/src/react-bridge-importers.ts +28 -0
  401. package/src/reactNativeConfigurationContract.ts +36 -0
  402. package/src/runtime-assets.ts +7 -2
  403. package/src/runtime-delivery.ts +2 -0
  404. package/src/runtimePlatformContract.ts +70 -0
  405. package/src/screenshots/frame-compose.ts +42 -43
  406. package/src/screenshots/org-deck.ts +9 -4
  407. package/src/screenshots/preset-names.ts +29 -0
  408. package/src/screenshots/registry.ts +5 -5
  409. package/src/screenshots/schema.ts +1 -1
  410. package/src/screenshots/screenshotContract.ts +971 -0
  411. package/src/settings-flags.ts +107 -0
  412. package/src/settingsContract.ts +609 -0
  413. package/src/storageSnapshotContract.ts +344 -0
  414. package/src/stub-pattern-matcher.ts +550 -0
  415. package/src/swift-compile.ts +908 -40
  416. package/src/swift-compiler-digest.ts +13 -1
  417. package/src/swift-distribution.lock.json +49 -22
  418. package/src/swift-host.ts +167 -52
  419. package/src/swift-objc-compile.ts +54 -24
  420. package/src/swift-objc-export.ts +532 -0
  421. package/src/swift-objc-import.ts +769 -0
  422. package/src/swift-objc-metadata.ts +285 -10
  423. package/src/swift-objc-sdk.ts +13970 -158
  424. package/src/swift-objc-standin.ts +137 -1
  425. package/src/swift-package.ts +94 -0
  426. package/src/swift-packages.ts +5 -5
  427. package/src/swift-submit.ts +6 -0
  428. package/src/swiftContract.ts +99 -0
  429. package/src/target-matcher.ts +6 -1
  430. package/src/vite-plugin.ts +14 -40
  431. package/src/worker-system-chunks.ts +1 -1
  432. package/src/workerChunkContract.ts +5 -0
  433. package/src/worklets-babel.ts +24 -5
  434. package/src/xcode-project.ts +36 -7
  435. package/src/xcode-target-members.ts +10 -3
  436. package/cli/drivers/playwright-sim-host.ts +0 -825
  437. package/kotlin/fixtures/counter/Counter.d.kt.ts +0 -17
  438. package/kotlin/fixtures/counter/Counter.kt +0 -51
  439. package/kotlin/fixtures/counter/CounterApp.native.tsx +0 -61
  440. package/kotlin/fixtures/counter/CounterApp.tsx +0 -3
  441. package/kotlin/fixtures/counter/CounterScreen.d.kt.ts +0 -8
  442. package/kotlin/fixtures/counter/CounterScreen.kt +0 -56
  443. package/kotlin/fixtures/counter/app/_layout.tsx +0 -4
  444. package/kotlin/fixtures/counter/app/index+spa.tsx +0 -1
  445. package/kotlin/fixtures/counter/app/routes.d.ts +0 -18
  446. package/kotlin/fixtures/counter/package.json +0 -20
  447. package/kotlin/fixtures/counter/tsconfig.json +0 -19
  448. package/kotlin/fixtures/counter/vite.config.ts +0 -20
  449. package/kotlin/fixtures/headless-counter/Headless.kt +0 -234
  450. package/kotlin/fixtures/import-animation/Animation.d.kt.ts +0 -7
  451. package/kotlin/fixtures/import-animation/Animation.kt +0 -80
  452. package/kotlin/fixtures/import-animation/ImportAnimation.native.tsx +0 -13
  453. package/kotlin/fixtures/import-animation/README.md +0 -24
  454. package/kotlin/fixtures/import-animation/app/_layout.tsx +0 -4
  455. package/kotlin/fixtures/import-animation/app/index+spa.tsx +0 -1
  456. package/kotlin/fixtures/import-animation/app/routes.d.ts +0 -18
  457. package/kotlin/fixtures/import-animation/package.json +0 -23
  458. package/kotlin/fixtures/import-animation/tsconfig.json +0 -20
  459. package/kotlin/fixtures/import-animation/vite.config.ts +0 -20
  460. package/kotlin/fixtures/import-drawing/Drawing.d.kt.ts +0 -7
  461. package/kotlin/fixtures/import-drawing/Drawing.kt +0 -101
  462. package/kotlin/fixtures/import-drawing/ImportDrawing.native.tsx +0 -18
  463. package/kotlin/fixtures/import-drawing/README.md +0 -34
  464. package/kotlin/fixtures/import-drawing/app/_layout.tsx +0 -4
  465. package/kotlin/fixtures/import-drawing/app/index+spa.tsx +0 -1
  466. package/kotlin/fixtures/import-drawing/package.json +0 -23
  467. package/kotlin/fixtures/import-drawing/tsconfig.json +0 -20
  468. package/kotlin/fixtures/import-drawing/vite.config.ts +0 -20
  469. package/kotlin/fixtures/import-editor/Editor.d.kt.ts +0 -7
  470. package/kotlin/fixtures/import-editor/Editor.kt +0 -59
  471. package/kotlin/fixtures/import-editor/ImportEditor.native.tsx +0 -23
  472. package/kotlin/fixtures/import-editor/README.md +0 -27
  473. package/kotlin/fixtures/import-editor/app/_layout.tsx +0 -4
  474. package/kotlin/fixtures/import-editor/app/index+spa.tsx +0 -1
  475. package/kotlin/fixtures/import-editor/package.json +0 -23
  476. package/kotlin/fixtures/import-editor/tsconfig.json +0 -20
  477. package/kotlin/fixtures/import-editor/vite.config.ts +0 -20
  478. package/kotlin/fixtures/import-effects/Effects.d.kt.ts +0 -7
  479. package/kotlin/fixtures/import-effects/Effects.kt +0 -87
  480. package/kotlin/fixtures/import-effects/ImportEffects.native.tsx +0 -13
  481. package/kotlin/fixtures/import-effects/README.md +0 -19
  482. package/kotlin/fixtures/import-effects/app/_layout.tsx +0 -4
  483. package/kotlin/fixtures/import-effects/app/index+spa.tsx +0 -1
  484. package/kotlin/fixtures/import-effects/package.json +0 -23
  485. package/kotlin/fixtures/import-effects/tsconfig.json +0 -20
  486. package/kotlin/fixtures/import-effects/vite.config.ts +0 -20
  487. package/kotlin/fixtures/import-layout/ImportLayout.native.tsx +0 -13
  488. package/kotlin/fixtures/import-layout/Layout.d.kt.ts +0 -7
  489. package/kotlin/fixtures/import-layout/Layout.kt +0 -72
  490. package/kotlin/fixtures/import-layout/README.md +0 -24
  491. package/kotlin/fixtures/import-layout/app/_layout.tsx +0 -4
  492. package/kotlin/fixtures/import-layout/app/index+spa.tsx +0 -1
  493. package/kotlin/fixtures/import-layout/package.json +0 -23
  494. package/kotlin/fixtures/import-layout/tsconfig.json +0 -20
  495. package/kotlin/fixtures/import-layout/vite.config.ts +0 -20
  496. package/kotlin/fixtures/import-navigation/ImportNavigation.native.tsx +0 -18
  497. package/kotlin/fixtures/import-navigation/Navigation.d.kt.ts +0 -7
  498. package/kotlin/fixtures/import-navigation/Navigation.kt +0 -104
  499. package/kotlin/fixtures/import-navigation/README.md +0 -31
  500. package/kotlin/fixtures/import-navigation/app/_layout.tsx +0 -4
  501. package/kotlin/fixtures/import-navigation/app/index+spa.tsx +0 -1
  502. package/kotlin/fixtures/import-navigation/package.json +0 -23
  503. package/kotlin/fixtures/import-navigation/tsconfig.json +0 -20
  504. package/kotlin/fixtures/import-navigation/vite.config.ts +0 -20
  505. package/kotlin/fixtures/import-overlays/ImportOverlays.native.tsx +0 -29
  506. package/kotlin/fixtures/import-overlays/Overlays.d.kt.ts +0 -7
  507. package/kotlin/fixtures/import-overlays/Overlays.kt +0 -93
  508. package/kotlin/fixtures/import-overlays/README.md +0 -34
  509. package/kotlin/fixtures/import-overlays/app/_layout.tsx +0 -4
  510. package/kotlin/fixtures/import-overlays/app/index+spa.tsx +0 -1
  511. package/kotlin/fixtures/import-overlays/package.json +0 -23
  512. package/kotlin/fixtures/import-overlays/tsconfig.json +0 -20
  513. package/kotlin/fixtures/import-overlays/vite.config.ts +0 -20
  514. package/kotlin/fixtures/import-resources/ImportResources.native.tsx +0 -18
  515. package/kotlin/fixtures/import-resources/README.md +0 -26
  516. package/kotlin/fixtures/import-resources/Resources.d.kt.ts +0 -6
  517. package/kotlin/fixtures/import-resources/Resources.kt +0 -72
  518. package/kotlin/fixtures/import-resources/app/_layout.tsx +0 -4
  519. package/kotlin/fixtures/import-resources/app/index+spa.tsx +0 -1
  520. package/kotlin/fixtures/import-resources/package.json +0 -23
  521. package/kotlin/fixtures/import-resources/tsconfig.json +0 -20
  522. package/kotlin/fixtures/import-resources/vite.config.ts +0 -20
  523. package/kotlin/fixtures/import-scroll/ImportNested.native.tsx +0 -10
  524. package/kotlin/fixtures/import-scroll/ImportScroll.native.tsx +0 -13
  525. package/kotlin/fixtures/import-scroll/Nested.d.kt.ts +0 -4
  526. package/kotlin/fixtures/import-scroll/Nested.kt +0 -64
  527. package/kotlin/fixtures/import-scroll/README.md +0 -38
  528. package/kotlin/fixtures/import-scroll/Scroll.d.kt.ts +0 -7
  529. package/kotlin/fixtures/import-scroll/Scroll.kt +0 -91
  530. package/kotlin/fixtures/import-scroll/app/_layout.tsx +0 -4
  531. package/kotlin/fixtures/import-scroll/app/index+spa.tsx +0 -1
  532. package/kotlin/fixtures/import-scroll/app/nested+spa.tsx +0 -1
  533. package/kotlin/fixtures/import-scroll/package.json +0 -23
  534. package/kotlin/fixtures/import-scroll/tsconfig.json +0 -20
  535. package/kotlin/fixtures/import-scroll/vite.config.ts +0 -20
  536. package/kotlin/fixtures/import-selection/ImportSelection.native.tsx +0 -44
  537. package/kotlin/fixtures/import-selection/README.md +0 -32
  538. package/kotlin/fixtures/import-selection/Selection.d.kt.ts +0 -8
  539. package/kotlin/fixtures/import-selection/Selection.kt +0 -78
  540. package/kotlin/fixtures/import-selection/app/_layout.tsx +0 -4
  541. package/kotlin/fixtures/import-selection/app/index+spa.tsx +0 -1
  542. package/kotlin/fixtures/import-selection/package.json +0 -23
  543. package/kotlin/fixtures/import-selection/tsconfig.json +0 -20
  544. package/kotlin/fixtures/import-selection/vite.config.ts +0 -20
  545. package/kotlin/fixtures/import-surfaces/ImportSurfaces.native.tsx +0 -13
  546. package/kotlin/fixtures/import-surfaces/README.md +0 -22
  547. package/kotlin/fixtures/import-surfaces/Surfaces.d.kt.ts +0 -7
  548. package/kotlin/fixtures/import-surfaces/Surfaces.kt +0 -64
  549. package/kotlin/fixtures/import-surfaces/app/_layout.tsx +0 -4
  550. package/kotlin/fixtures/import-surfaces/app/index+spa.tsx +0 -1
  551. package/kotlin/fixtures/import-surfaces/package.json +0 -23
  552. package/kotlin/fixtures/import-surfaces/tsconfig.json +0 -20
  553. package/kotlin/fixtures/import-surfaces/vite.config.ts +0 -20
  554. package/kotlin/fixtures/import-values/ImportValues.native.tsx +0 -61
  555. package/kotlin/fixtures/import-values/README.md +0 -28
  556. package/kotlin/fixtures/import-values/Values.d.kt.ts +0 -15
  557. package/kotlin/fixtures/import-values/Values.kt +0 -84
  558. package/kotlin/fixtures/import-values/app/_layout.tsx +0 -4
  559. package/kotlin/fixtures/import-values/app/index+spa.tsx +0 -1
  560. package/kotlin/fixtures/import-values/package.json +0 -23
  561. package/kotlin/fixtures/import-values/tsconfig.json +0 -20
  562. package/kotlin/fixtures/import-values/vite.config.ts +0 -20
  563. package/kotlin/fixtures/kotlin-app/app/build.gradle.kts +0 -30
  564. package/kotlin/fixtures/kotlin-app/app/src/main/AndroidManifest.xml +0 -13
  565. package/kotlin/fixtures/kotlin-app/app/src/main/java/dev/contrast/kotlinapp/MainActivity.kt +0 -60
  566. package/kotlin/fixtures/kotlin-app/app/src/main/java/dev/contrast/kotlinapp/ProbeApplication.kt +0 -18
  567. package/kotlin/fixtures/kotlin-app/build.gradle.kts +0 -5
  568. package/kotlin/fixtures/kotlin-app/gradle.properties +0 -4
  569. package/kotlin/fixtures/kotlin-app/settings.gradle.kts +0 -4
  570. package/kotlin/fixtures/kotlin-app-variants/Anim.kt +0 -62
  571. package/kotlin/fixtures/kotlin-app-variants/BarBehavior.kt +0 -38
  572. package/kotlin/fixtures/kotlin-app-variants/BarVisibility.kt +0 -36
  573. package/kotlin/fixtures/kotlin-app-variants/Bitmaps.kt +0 -50
  574. package/kotlin/fixtures/kotlin-app-variants/Browse.kt +0 -73
  575. package/kotlin/fixtures/kotlin-app-variants/Colors.kt +0 -41
  576. package/kotlin/fixtures/kotlin-app-variants/Controls.kt +0 -62
  577. package/kotlin/fixtures/kotlin-app-variants/Drag.kt +0 -56
  578. package/kotlin/fixtures/kotlin-app-variants/Draw.kt +0 -74
  579. package/kotlin/fixtures/kotlin-app-variants/Drawables.kt +0 -53
  580. package/kotlin/fixtures/kotlin-app-variants/Focus.kt +0 -62
  581. package/kotlin/fixtures/kotlin-app-variants/Form.kt +0 -47
  582. package/kotlin/fixtures/kotlin-app-variants/Icons.kt +0 -59
  583. package/kotlin/fixtures/kotlin-app-variants/Ime.kt +0 -53
  584. package/kotlin/fixtures/kotlin-app-variants/Lists.kt +0 -57
  585. package/kotlin/fixtures/kotlin-app-variants/Nav.kt +0 -47
  586. package/kotlin/fixtures/kotlin-app-variants/Note.kt +0 -40
  587. package/kotlin/fixtures/kotlin-app-variants/Overlays.kt +0 -56
  588. package/kotlin/fixtures/kotlin-app-variants/Pan.kt +0 -38
  589. package/kotlin/fixtures/kotlin-app-variants/Pickers.kt +0 -44
  590. package/kotlin/fixtures/kotlin-app-variants/Press.kt +0 -43
  591. package/kotlin/fixtures/kotlin-app-variants/Scroll.kt +0 -63
  592. package/kotlin/fixtures/kotlin-app-variants/Sheet.kt +0 -43
  593. package/kotlin/fixtures/kotlin-app-variants/Strings.kt +0 -49
  594. package/kotlin/fixtures/kotlin-app-variants/Tabs.kt +0 -47
  595. package/kotlin/fixtures/kotlin-app-variants/TextWidth.kt +0 -45
  596. package/kotlin/fixtures/kotlin-app-variants/TransientInsets.kt +0 -50
  597. package/kotlin/fixtures/kotlin-app-variants/Transition.kt +0 -69
  598. package/kotlin/fixtures/kotlin-app-variants/ViewConfig.kt +0 -22
  599. package/kotlin/fixtures/kotlin-app-variants/Widgets.kt +0 -67
  600. package/kotlin/fixtures/runtime-state/RuntimeState.kt +0 -200
  601. package/kotlin/fork/README.md +0 -97
  602. package/kotlin/fork/build.sh +0 -176
  603. package/kotlin/fork/compose-worker-globals.patch +0 -1247
  604. package/kotlin/fork/fork.json +0 -46
  605. package/kotlin/fork/publish.ts +0 -99
  606. package/kotlin/fork/skia-android-shaping.patch +0 -189
  607. package/kotlin/fork/skiko-local.init.gradle +0 -10
  608. package/kotlin/fork/skiko-worker-clock.patch +0 -122
@@ -1,4 +1,4 @@
1
- /*! peach v0.1.1644 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.1653 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
2
2
  let __sootsim_import_meta_url = '', __sootsim_import_meta_dirname = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; __sootsim_import_meta_dirname = __dirname; } catch {}
3
3
  "use strict";
4
4
  var __create = Object.create;
@@ -45,7 +45,7 @@ module.exports = __toCommonJS(fetch_proxy_handler_exports);
45
45
  var import_http = __toESM(require("http"), 1);
46
46
  var import_https = __toESM(require("https"), 1);
47
47
  var import_node_http2 = require("node:http2");
48
- var import_promises = require("stream/promises");
48
+ var import_promises2 = require("stream/promises");
49
49
 
50
50
  // src/backend-origin.ts
51
51
  function normalizeHostname(hostname) {
@@ -67,6 +67,3534 @@ function isTrustedBridgeRequest(headers) {
67
67
  return false;
68
68
  }
69
69
  }
70
+ function loopbackOriginOf(value) {
71
+ try {
72
+ const url = new URL(value);
73
+ return isLoopbackHost(url.hostname) ? url.origin : null;
74
+ } catch {
75
+ return null;
76
+ }
77
+ }
78
+
79
+ // src/packageVersionsContract.ts
80
+ var PACKAGE_VERSIONS_HEADER = "X-Peach-Package-Versions";
81
+
82
+ // src/host/dev-server-package-versions.ts
83
+ var import_fs2 = __toESM(require("fs"), 1);
84
+ var import_path2 = __toESM(require("path"), 1);
85
+
86
+ // src/installed-package-versions.ts
87
+ var import_fs = __toESM(require("fs"), 1);
88
+ var import_path = __toESM(require("path"), 1);
89
+
90
+ // ../peach-compat/src/lazy-stub-patterns.ts
91
+ var LAZY_STUB_PATTERNS = [
92
+ "@10play/tentap-editor",
93
+ "@adobe/react-native-aepcore",
94
+ "@aws-amplify/react-native",
95
+ "@azesmway/react-native-unity",
96
+ "@azzapp/react-native-skia-video",
97
+ "@batch.com/react-native-plugin",
98
+ "@bravemobile/react-native-code-push",
99
+ "@bugsnag/react-native",
100
+ "@bugsnag/react-native-performance",
101
+ "@callstack/react-native-bottom-tabs",
102
+ "@callstack/react-native-visionos",
103
+ "@clerk/expo",
104
+ "@cometchat/chat-uikit-react-native",
105
+ "@didomi/react-native",
106
+ "@dr.pogodin/react-native-static-server",
107
+ "@eabdullazyanov/react-native-sms-user-consent",
108
+ "@expensify/react-native-live-markdown",
109
+ "@expensify/react-native-wallet",
110
+ "@expo/ui/community/menu",
111
+ "@expo/ui/swift-ui",
112
+ "@giphy/react-native-sdk",
113
+ "@google/react-native-make-payment",
114
+ "@googlemaps/react-native-navigation-sdk",
115
+ "@iterable/expo-plugin",
116
+ "@kingstinct/react-native-healthkit",
117
+ "@livekit/react-native",
118
+ "@lodev09/react-native-exify",
119
+ "@luciq/react-native",
120
+ "@mattermost/react-native-paste-input",
121
+ "@mgcrea/vision-camera-barcode-scanner",
122
+ "@mozzius/expo-dynamic-app-icon",
123
+ "@okta/okta-react-native",
124
+ "@playerdata/react-native-mcu-manager",
125
+ "@react-native-community/audio-toolkit",
126
+ "@react-native-community/checkbox",
127
+ "@react-native-community/progress-bar-android",
128
+ "@react-native-community/toolbar-android",
129
+ "@react-native-documents/picker",
130
+ "@react-native-firebase/app-distribution",
131
+ "@react-native-firebase/database",
132
+ "@react-native-firebase/in-app-messaging",
133
+ "@react-native-ml-kit/face-detection",
134
+ "@react-native-ml-kit/text-recognition",
135
+ "@react-native-segmented-control/segmented-control",
136
+ "@react-native-seoul/naver-login",
137
+ "@renegades/react-native-tickle",
138
+ "@rnw-community/react-native-payments",
139
+ "@rudderstack/rudder-integration-firebase-react-native",
140
+ "@rudderstack/rudder-sdk-react-native",
141
+ "@sbaiahmed1/react-native-biometrics",
142
+ "@sbaiahmed1/react-native-biometrics/types",
143
+ "@sbaiahmed1/react-native-blur",
144
+ "@shopify/checkout-sheet-kit",
145
+ "@shopify/react-native-skia",
146
+ "@stream-io/video-react-native-sdk",
147
+ "@stripe/stripe-identity-react-native",
148
+ "@stripe/stripe-react-native",
149
+ "@stripe/stripe-react-native/lib/typescript/src/types",
150
+ "@stripe/stripe-terminal-react-native",
151
+ "@supersami/rn-foreground-service",
152
+ "@survicate/react-native-survicate",
153
+ "@twilio/voice-react-native-sdk",
154
+ "@walletconnect/react-native-compat",
155
+ "@xmartlabs/react-native-line",
156
+ "@zoontek/react-native-navigation-bar",
157
+ "clevertap-react-native",
158
+ "expo-dynamic-app-icon",
159
+ "expo-glass-effect",
160
+ "expo-health-connect",
161
+ "expo-in-app-updates",
162
+ "expo-mesh-gradient",
163
+ "expo-modules-core",
164
+ "expo-share-extension",
165
+ "expo-superwall",
166
+ "freerasp-react-native",
167
+ "klaviyo-react-native-sdk",
168
+ "llama.rn",
169
+ "mixpanel-react-native",
170
+ "newrelic-react-native-agent",
171
+ "realm",
172
+ "react-native-a11y",
173
+ "react-native-adapty",
174
+ "react-native-add-calendar-event",
175
+ "react-native-adjust",
176
+ "react-native-advanced-input-mask",
177
+ "react-native-agora",
178
+ "react-native-amplitude-analytics",
179
+ "react-native-android-location-enabler",
180
+ "react-native-android-widget",
181
+ "react-native-animateable-text",
182
+ "react-native-app-clip",
183
+ "react-native-appsflyer",
184
+ "react-native-avoid-softinput",
185
+ "react-native-azure-auth",
186
+ "react-native-background-actions",
187
+ "react-native-bare-kit",
188
+ "react-native-ble-manager",
189
+ "react-native-bluetooth-classic",
190
+ "react-native-bluetooth-state-manager",
191
+ "react-native-bottom-tabs",
192
+ "react-native-branch",
193
+ "react-native-camera-kit",
194
+ "react-native-change-icon",
195
+ "react-native-charts-wrapper",
196
+ "react-native-dialogs",
197
+ "react-native-document-scanner-plugin",
198
+ "react-native-drop-shadow",
199
+ "react-native-dynamic-app-icon",
200
+ "react-native-expo-braintree",
201
+ "react-native-extra-dimensions-android",
202
+ "react-native-fast-opencv",
203
+ "react-native-fast-shadow",
204
+ "react-native-fast-squircle",
205
+ "react-native-fast-tflite",
206
+ "react-native-filament",
207
+ "react-native-file-viewer-turbo",
208
+ "react-native-floating-label-input",
209
+ "react-native-google-cast",
210
+ "react-native-google-fit",
211
+ "react-native-google-places-sdk",
212
+ "react-native-health",
213
+ "react-native-health-connect",
214
+ "react-native-hole-view",
215
+ "react-native-html-to-pdf",
216
+ "react-native-image-marker",
217
+ "react-native-incall-manager",
218
+ "react-native-ios-modal",
219
+ "react-native-keyboard-controller/bindings",
220
+ "react-native-keyboard-controller/findNodeHandle",
221
+ "react-native-keyboard-manager",
222
+ "react-native-keys",
223
+ "react-native-loader-kit",
224
+ "react-native-localization",
225
+ "react-native-localization-settings",
226
+ "react-native-mixpanel",
227
+ "react-native-moengage",
228
+ "react-native-navigation-mode",
229
+ "react-native-network-info",
230
+ "react-native-nitro-haptics",
231
+ "react-native-otp-verify",
232
+ "react-native-passkey",
233
+ "react-native-payments",
234
+ "react-native-pdf",
235
+ "react-native-pdf-renderer",
236
+ "react-native-pinchable",
237
+ "react-native-play-age-range-declaration",
238
+ "react-native-prompt-android",
239
+ "react-native-radial-gradient",
240
+ "react-native-razorpay",
241
+ "react-native-reanimated/platformFunctions/dispatchCommand",
242
+ "react-native-reanimated/platformFunctions/measure",
243
+ "react-native-reanimated/platformFunctions/scrollTo",
244
+ "react-native-reanimated/platformFunctions/setGestureState",
245
+ "react-native-reanimated/platformFunctions/setNativeProps",
246
+ "react-native-reanimated/specs/NativeReanimatedModule",
247
+ "react-native-reanimated/specs/NativeWorkletsModule",
248
+ "react-native-restart-newarch",
249
+ "react-native-screenguard",
250
+ "react-native-screens",
251
+ "react-native-screenshot-prevent",
252
+ "react-native-select-contact",
253
+ "react-native-send-intent",
254
+ "react-native-share-menu",
255
+ "react-native-shared-element",
256
+ "react-native-simple-toast",
257
+ "react-native-spinkit",
258
+ "react-native-ssl-public-key-pinning",
259
+ "react-native-star-io10",
260
+ "react-native-system-navigation-bar",
261
+ "react-native-tcp",
262
+ "react-native-teleport",
263
+ "react-native-theme-switch-animation",
264
+ "react-native-theoplayer",
265
+ "react-native-tiktok-business-sdk",
266
+ "react-native-twilio-video-webrtc",
267
+ "react-native-udp",
268
+ "react-native-ui-lib",
269
+ "react-native-uitextview",
270
+ "react-native-video-trim",
271
+ "react-native-voip-push-notification",
272
+ "react-native-volume-manager",
273
+ "react-native-wallet-manager",
274
+ "react-native-watch-connectivity",
275
+ "react-native-webp-format",
276
+ "react-native-wheel-pick",
277
+ "react-native-wheel-picker-android",
278
+ "react-native-wifi-reborn",
279
+ "react-native-windows",
280
+ "react-native-worklets/package.json",
281
+ "react-native-worklets/specs/NativeWorkletsModule",
282
+ "react-native-xaml",
283
+ "react-native-zeroconf",
284
+ "rn-qr-generator",
285
+ "rn-secure-storage",
286
+ "scandit-react-native-datacapture-barcode",
287
+ "scandit-react-native-datacapture-core",
288
+ "sp-react-native-in-app-updates",
289
+ "stream-chat-expo",
290
+ "stream-chat-react-native",
291
+ "voltra"
292
+ ];
293
+
294
+ // ../peach-compat/src/generated/light-native-package-names.ts
295
+ var LIGHT_NATIVE_PACKAGE_NAMES = [
296
+ "@100mslive/react-native-hms",
297
+ "@account-kit/react-native-signer",
298
+ "@adobe/react-native-aepassurance",
299
+ "@adobe/react-native-aepcampaignclassic",
300
+ "@adobe/react-native-aepedge",
301
+ "@adobe/react-native-aepedgebridge",
302
+ "@adobe/react-native-aepedgeconsent",
303
+ "@adobe/react-native-aepedgeidentity",
304
+ "@adobe/react-native-aepmessaging",
305
+ "@adobe/react-native-aepoptimize",
306
+ "@adobe/react-native-aepplaces",
307
+ "@adobe/react-native-aeptarget",
308
+ "@adobe/react-native-aepuserprofile",
309
+ "@adrekic/expo-meta-wearables-dat",
310
+ "@adrianso/react-native-device-brightness",
311
+ "@alexzunik/react-native-money-input",
312
+ "@algocare/react-native-code-push",
313
+ "@allboatsrise/expo-marketingcloudsdk",
314
+ "@ammarahmed/react-native-eventsource",
315
+ "@ammarahmed/react-native-share-extension",
316
+ "@ammarahmed/react-native-sodium",
317
+ "@ammarahmed/react-native-upload",
318
+ "@amplitude/analytics-react-native",
319
+ "@amplitude/experiment-react-native-client",
320
+ "@amplitude/plugin-engagement-react-native",
321
+ "@amplitude/plugin-session-replay-react-native",
322
+ "@amplitude/react-native",
323
+ "@amplitude/session-replay-react-native",
324
+ "@animo-id/expo-secure-environment",
325
+ "@ansight/react-native",
326
+ "@anythingai/launcher",
327
+ "@appcues/react-native",
328
+ "@appdynamics/react-native-agent",
329
+ "@appier/react-native-sdk",
330
+ "@appmetrica/react-native-analytics",
331
+ "@ascendtis/react-native-voice-to-text",
332
+ "@bam.tech/react-native-app-security",
333
+ "@bam.tech/react-native-config",
334
+ "@bennyblader/ddk-rn",
335
+ "@bishaldahal/react-native-khalti-checkout",
336
+ "@blazejkustra/react-native-alert",
337
+ "@boterop/react-native-background-timer",
338
+ "@bounceapp/react-native-paypal",
339
+ "@brandingbrand/react-native-app-restart",
340
+ "@breeztech/breez-sdk-spark-react-native",
341
+ "@brigad/react-native-adservices",
342
+ "@bsky.app/expo-dynamic-app-icon",
343
+ "@bsky.app/expo-translate-text",
344
+ "@bufgix/react-native-secure-window",
345
+ "@burnt-labs/expo-satya-attest",
346
+ "@callstack/repack",
347
+ "@castleio/react-native-castle",
348
+ "@chargebee/react-native-chargebee",
349
+ "@checkout.com/checkout-react-native-components",
350
+ "@clear.sale/behavior-analytics-react-native-sdk",
351
+ "@cloudflare/react-native-webrtc",
352
+ "@cloudflare/realtimekit-react-native",
353
+ "@cloudflare/realtimekit-react-native-ui",
354
+ "@code-push-next/react-native-code-push",
355
+ "@coinbase/mobile-wallet-protocol-host",
356
+ "@coinbase/wallet-mobile-sdk",
357
+ "@companycam/vibe-check",
358
+ "@compdfkit_pdf_sdk/react_native",
359
+ "@consento/sync-randombytes",
360
+ "@contentsquare/react-native-bridge",
361
+ "@coralogix/react-native-plugin",
362
+ "@cordialinc/react-native-sdk",
363
+ "@curity/identityserver-haapi-react-native-sdk",
364
+ "@d11/dota",
365
+ "@d11/marco",
366
+ "@daily-co/react-native-webrtc",
367
+ "@dariyd/react-native-text-recognition",
368
+ "@dashdoc/react-native-system-sounds",
369
+ "@datadog/mobile-react-native-session-replay",
370
+ "@datadome/datadome-axios",
371
+ "@datadome/react-native-datadome",
372
+ "@datalyr/react-native",
373
+ "@descope/react-native-sdk",
374
+ "@deuna/react-native-sdk",
375
+ "@dev-amirzubair/react-native-voice",
376
+ "@devikai/react-native",
377
+ "@devrev/sdk-react-native",
378
+ "@didit-protocol/sdk-react-native",
379
+ "@digia-engage/core",
380
+ "@dub/react-native",
381
+ "@dynatrace/react-native-plugin",
382
+ "@edkimmel/expo-audio-stream",
383
+ "@embrace-io/react-native",
384
+ "@embrace-io/react-native-tracer-provider",
385
+ "@empower-nokta/react-native-mobile-ads",
386
+ "@entria/rn-face-detector",
387
+ "@entrust.corporation/idvsdk-reactnative",
388
+ "@evervault/evervault-react-native",
389
+ "@evrotrust/et-react-native-wl-sdk",
390
+ "@exodus/react-native-async-storage",
391
+ "@exodus/react-native-biometrics",
392
+ "@exodus/react-native-bundle-loader",
393
+ "@exodus/react-native-fs",
394
+ "@exodus/react-native-keychain",
395
+ "@exodus/react-native-nft-viewer",
396
+ "@exodus/react-native-notifications",
397
+ "@exodus/react-native-payments",
398
+ "@exodus/react-native-prompt-android",
399
+ "@exodus/react-native-reanimated",
400
+ "@exodus/react-native-screenshot-detector",
401
+ "@exodus/react-native-wallet",
402
+ "@exodus/rive-react-native",
403
+ "@extole/react-native-sdk",
404
+ "@fedimint/react-native",
405
+ "@freddixx/react-native-ad-manager",
406
+ "@freshpaint/freshpaint-react-native",
407
+ "@frontegg/react-native",
408
+ "@gainsight-px/react-native-gainsight-px",
409
+ "@getalby/expo-shared-preferences",
410
+ "@getcello/cello-react-native",
411
+ "@getstoryteller/react-native-storyteller-sdk",
412
+ "@getvouch/react-native-sdk",
413
+ "@glance-networks/reactnative-bridge",
414
+ "@google-cloud/recaptcha-enterprise-react-native",
415
+ "@grafana/faro-react-native",
416
+ "@granite-js/image",
417
+ "@granite-js/video",
418
+ "@hackler/react-native-sdk",
419
+ "@haroldtran/react-native-thermal-printer",
420
+ "@heap/react-native-heap",
421
+ "@heartbot/expo-google-authentication",
422
+ "@heasy/react-native-sunmi-printer",
423
+ "@hero-design/react-native-month-year-picker",
424
+ "@hexigames/react-native-apple-ads-attribution",
425
+ "@hmscore/react-native-hms-ads",
426
+ "@hmscore/react-native-hms-availability",
427
+ "@hmscore/react-native-hms-location",
428
+ "@hmscore/react-native-hms-map",
429
+ "@hmscore/react-native-hms-push",
430
+ "@honeycombio/opentelemetry-react-native",
431
+ "@hotta/react-native-imagepicker",
432
+ "@howincodes/expo-dynamic-app-icon",
433
+ "@ht-sdks/sovran-react-native",
434
+ "@humansecurity/expo-mobile-sdk",
435
+ "@humansecurity/react-native-sdk",
436
+ "@ihealth/ihealthlibrary-react-native",
437
+ "@imgly/editor-react-native",
438
+ "@infinitered/react-native-mlkit-face-detection",
439
+ "@infinitered/react-native-mlkit-object-detection",
440
+ "@infinitered/react-native-mlkit-text-recognition",
441
+ "@instana/react-native-agent",
442
+ "@inthepocket/react-native-service-discovery",
443
+ "@ionic/portals-react-native",
444
+ "@ivandigitalsolutions/react-native-camerax",
445
+ "@jitsi/react-native-sdk",
446
+ "@join-stories/react-native-widgets",
447
+ "@json-eval-rs/react-native",
448
+ "@ketch-com/ketch-react-native",
449
+ "@klarna/platform-colors",
450
+ "@launchhq/react-native-keyboard-composer",
451
+ "@layers/expo-tiktok-business",
452
+ "@leonsilicon/react-native-list",
453
+ "@livekit/react-native-krisp-noise-filter",
454
+ "@lobehub/expo-better-auth-passkey",
455
+ "@logbrew/react-native",
456
+ "@mauron85/react-native-background-geolocation",
457
+ "@mccsoft/react-native-matomo",
458
+ "@mentra/bluetooth-sdk",
459
+ "@metamask/react-native-acm",
460
+ "@metamask/react-native-payments",
461
+ "@microblink/blinkcard-react-native",
462
+ "@microsoft/react-native-clarity",
463
+ "@mitsuharu/react-native-sunmi-printer-library",
464
+ "@mixpanel/react-native-session-replay",
465
+ "@moneykit/connect-react-native",
466
+ "@more-tech/react-native-libsodium",
467
+ "@mux/mux-react-native-player",
468
+ "@mykin-ai/expo-audio-stream",
469
+ "@networkinternational/ni-card-management-sdk",
470
+ "@nevis-security/nevis-mobile-authentication-sdk-react",
471
+ "@nexigen/react-native-pre-text",
472
+ "@nitro-perf-devtools/core",
473
+ "@norcy/react-native-toolkit",
474
+ "@npm_fluentco/adflow-react-native-sdk",
475
+ "@nsure-ai/react-native-client-sdk",
476
+ "@nuggetslife/vc-rn",
477
+ "@obsidian_north/react-native-mediastore",
478
+ "@offline-protocol/mesh-sdk",
479
+ "@oguzhnatly/react-native-image-manipulator",
480
+ "@olo/pay-react-native",
481
+ "@onekeyfe/react-native-aes-crypto",
482
+ "@onekeyfe/react-native-app-update",
483
+ "@onekeyfe/react-native-async-storage",
484
+ "@onekeyfe/react-native-background-thread",
485
+ "@onekeyfe/react-native-ble-utils",
486
+ "@onekeyfe/react-native-bundle-crypto",
487
+ "@onekeyfe/react-native-bundle-update",
488
+ "@onekeyfe/react-native-check-biometric-auth-changed",
489
+ "@onekeyfe/react-native-cloud-fs",
490
+ "@onekeyfe/react-native-cloud-kit-module",
491
+ "@onekeyfe/react-native-device-utils",
492
+ "@onekeyfe/react-native-dns-lookup",
493
+ "@onekeyfe/react-native-get-random-values",
494
+ "@onekeyfe/react-native-keychain-module",
495
+ "@onekeyfe/react-native-lite-card",
496
+ "@onekeyfe/react-native-native-logger",
497
+ "@onekeyfe/react-native-network-info",
498
+ "@onekeyfe/react-native-network-throttle",
499
+ "@onekeyfe/react-native-pbkdf2",
500
+ "@onekeyfe/react-native-perf-memory",
501
+ "@onekeyfe/react-native-perf-stats",
502
+ "@onekeyfe/react-native-ping",
503
+ "@onekeyfe/react-native-range-downloader",
504
+ "@onekeyfe/react-native-sni-connect",
505
+ "@onekeyfe/react-native-splash-screen",
506
+ "@onekeyfe/react-native-split-bundle-loader",
507
+ "@onekeyfe/react-native-tab-view",
508
+ "@onekeyfe/react-native-tcp-socket",
509
+ "@onekeyfe/react-native-webview-cleaner",
510
+ "@onekeyfe/react-native-zip-archive",
511
+ "@onfido/react-native-sdk",
512
+ "@onramp-sdk/react-native",
513
+ "@opacity-labs/react-native-opacity",
514
+ "@openobserve/mobile-react-native",
515
+ "@openobserve/mobile-react-native-session-replay",
516
+ "@openobserve/mobile-react-native-webview",
517
+ "@openreplay/react-native",
518
+ "@optimove-inc/react-native",
519
+ "@oracle/react-native-pushiomanager",
520
+ "@oscilar/react-native-oscilar-module",
521
+ "@oxyhq/services",
522
+ "@pagopa/io-react-native-cie",
523
+ "@pagopa/io-react-native-cieid",
524
+ "@pagopa/io-react-native-crypto",
525
+ "@pagopa/io-react-native-http-client",
526
+ "@pagopa/io-react-native-integrity",
527
+ "@pagopa/io-react-native-iso18013",
528
+ "@pagopa/io-react-native-jwt",
529
+ "@pagopa/io-react-native-login-utils",
530
+ "@pagopa/io-react-native-secure-storage",
531
+ "@pagopa/io-react-native-zendesk",
532
+ "@pagopa/react-native-cie",
533
+ "@paul_sizon/expo-pdf-text-extract",
534
+ "@payrails/react-native-sdk",
535
+ "@paytabs/react-native-paytabs",
536
+ "@pchmn/expo-material3-theme",
537
+ "@pdftron/react-native-pdf",
538
+ "@peacechen/react-native-otp-autocomplete",
539
+ "@phantom/react-native-juicebox-sdk",
540
+ "@picovoice/porcupine-react-native",
541
+ "@picovoice/react-native-voice-processor",
542
+ "@piwikpro/react-native-piwik-pro-sdk",
543
+ "@pocketpalai/llama.rn",
544
+ "@prelude.so/react-native-sdk",
545
+ "@premieroctet/react-native-wallet",
546
+ "@primer-io/react-native",
547
+ "@privy-io/expo-native-extensions",
548
+ "@psync/anti-jailbreak",
549
+ "@qonversion/react-native-sdk",
550
+ "@quidone/react-native-wheel-picker-feedback",
551
+ "@radiusnetworks/react-native-flybuy-core",
552
+ "@radiusnetworks/react-native-flybuy-pickup",
553
+ "@react-native-agconnect/applinking",
554
+ "@react-native-community/clipboard",
555
+ "@react-native-community/cookies",
556
+ "@react-native-community/voice",
557
+ "@react-native-kakao/core",
558
+ "@react-native-kakao/share",
559
+ "@react-native-kakao/social",
560
+ "@react-native-kakao/user",
561
+ "@react-native-karte/core",
562
+ "@react-native-karte/in-app-messaging",
563
+ "@react-native-karte/notification",
564
+ "@react-native-seoul/kakao-login",
565
+ "@react-native-zohosalesiq/mobilisten",
566
+ "@react-native-zohosalesiq/mobilisten-core",
567
+ "@reclaimprotocol/inapp-rn-sdk",
568
+ "@reeq/react-native-device-brightness",
569
+ "@reeq/react-native-passkit",
570
+ "@regulaforensics/document-reader",
571
+ "@regulaforensics/face-sdk",
572
+ "@regulaforensics/idv",
573
+ "@regulaforensics/react-native-document-reader-api",
574
+ "@revopush/react-native-code-push",
575
+ "@riskified/react-native-riskified-sdk",
576
+ "@rownd/react-native",
577
+ "@ryftpay/react-native",
578
+ "@sap_oss/gigya-react-native-plugin-for-sap-customer-data-cloud",
579
+ "@sayem314/react-native-keep-awake",
580
+ "@secondts/bark-react-native",
581
+ "@segment/analytics-react-native-plugin-idfa",
582
+ "@selligent-marketing-cloud/selligent-react-native",
583
+ "@semisquircle/expo-dynamic-app-icon",
584
+ "@seontechnologies/seon-react-native-mobile-wrapper",
585
+ "@serserm/react-native-turbo-serialport",
586
+ "@shadahmad7/react-native-calendar",
587
+ "@shadahmad7/react-native-store-review",
588
+ "@shenai/react-native-sdk",
589
+ "@sherlo/react-native-storybook",
590
+ "@simula/ads-react-native",
591
+ "@siteed/sherpa-onnx.rn",
592
+ "@six33/react-native-bg-removal",
593
+ "@socure-inc/docv-react-native",
594
+ "@socure-inc/react-native-device-risk",
595
+ "@solidx/react-native-true-sheet",
596
+ "@somesoap/react-native-image-palette",
597
+ "@sourcepoint/react-native-cmp",
598
+ "@sourcetoad/react-native-sketch-canvas",
599
+ "@speechmatics/expo-two-way-audio",
600
+ "@splitsoftware/splitio-react-native",
601
+ "@splunk/otel-react-native",
602
+ "@stream-io/noise-cancellation-react-native",
603
+ "@stream-io/react-native-callingx",
604
+ "@stream-io/react-native-webrtc",
605
+ "@stream-io/video-filters-react-native",
606
+ "@sumsub/react-native-mobilesdk-module",
607
+ "@superfan-app/apple-music-auth",
608
+ "@superwall/react-native-superwall",
609
+ "@tap-payments/apple-pay-rn",
610
+ "@tap-payments/google-pay-rn",
611
+ "@taprails/tap-to-pay",
612
+ "@telnyx/react-voice-commons-sdk",
613
+ "@tencentcloud/react-native-push",
614
+ "@terrylinla/react-native-sketch-canvas",
615
+ "@thegrizzlylabs/react-native-genius-scan",
616
+ "@theoplayer/react-native-analytics-adobe",
617
+ "@theoplayer/react-native-analytics-adobe-edge",
618
+ "@theoplayer/react-native-analytics-bitmovin",
619
+ "@theoplayer/react-native-analytics-conviva",
620
+ "@theoplayer/react-native-analytics-gemius",
621
+ "@theoplayer/react-native-analytics-mux",
622
+ "@theoplayer/react-native-analytics-nielsen",
623
+ "@theoplayer/react-native-analytics-youbora",
624
+ "@theoplayer/react-native-engage",
625
+ "@tillpos/rn-receipt-printer-utils",
626
+ "@timwangdev/react-native-geocoder",
627
+ "@trycourier/courier-react-native",
628
+ "@tryvital/vital-core-react-native",
629
+ "@tryvital/vital-health-react-native",
630
+ "@ttwrpz/react-native-brightness-setting",
631
+ "@tursodatabase/sync-react-native",
632
+ "@twilio/video-react-native-sdk",
633
+ "@unifyapps/analytics-react-native",
634
+ "@unomed/react-native-matrix-sdk",
635
+ "@userpilot/react-native",
636
+ "@veriff/react-native-sdk",
637
+ "@verisoul_ai/react-native-verisoul",
638
+ "@videosdk.live/react-native-webrtc",
639
+ "@vonage/client-sdk-video-react-native",
640
+ "@voximplant/react-native-foreground-service",
641
+ "@wokcito/ffmpeg-kit-react-native",
642
+ "@wootric/react-native-wootric",
643
+ "@wscsports/blaze-rtn-sdk",
644
+ "@wwimmo/react-native-sketch-canvas",
645
+ "@zoom/meetingsdk-react-native",
646
+ "@zoom/react-native-videosdk",
647
+ "agora-react-native-rtm",
648
+ "aliyun-react-native-push",
649
+ "amazon-cognito-identity-js",
650
+ "apple-pay-react-native-expo",
651
+ "apptentive-react-native",
652
+ "arlon-test-library",
653
+ "bcrypt-react-native",
654
+ "bitlabs",
655
+ "brick-module",
656
+ "bridgefy-react-native",
657
+ "chartbeat-react-native-bridge-sdk",
658
+ "cleverpush-react-native",
659
+ "cloudx-react-native",
660
+ "cm-sdk-react-native-v3-new-arch",
661
+ "cobrowse-sdk-react-native",
662
+ "cojson-core-rn",
663
+ "contour-ai-sdk",
664
+ "create-react-native-library",
665
+ "crisp-sdk-react-native",
666
+ "cui-llama.rn",
667
+ "dynamsoft-capture-vision-react-native",
668
+ "expo-activity-motion",
669
+ "expo-ai-kit",
670
+ "expo-app-blocker",
671
+ "expo-audio-stream-pcm",
672
+ "expo-barcode-scanner",
673
+ "expo-brownfield",
674
+ "expo-check-installed-apps",
675
+ "expo-esim",
676
+ "expo-face-check",
677
+ "expo-face-detector",
678
+ "expo-font-fallback",
679
+ "expo-google-places",
680
+ "expo-google-places-autocomplete",
681
+ "expo-guided-access",
682
+ "expo-http-server",
683
+ "expo-image-and-video-compressor",
684
+ "expo-in-app-purchases",
685
+ "expo-kiosk-control",
686
+ "expo-media-viewer",
687
+ "expo-mlkit-ocr",
688
+ "expo-native-launch-arguments",
689
+ "expo-ocr-kit",
690
+ "expo-onesignal-live-activities",
691
+ "expo-otp-autofill",
692
+ "expo-pdf-text-extract",
693
+ "expo-react-native-adapter",
694
+ "expo-realtime-audio",
695
+ "expo-realtime-ivs-broadcast",
696
+ "expo-reteno-sdk",
697
+ "expo-samsung-pay",
698
+ "expo-speech-transcriber",
699
+ "expo-store-checker",
700
+ "expo-text-extractor",
701
+ "expo-tiktok-ads-events",
702
+ "expo-tnk",
703
+ "expo-torch",
704
+ "expo-trim-video",
705
+ "expo-ttp-edu",
706
+ "expo-vpn-checker",
707
+ "expo-widget",
708
+ "expo-yandex-mapkit",
709
+ "facepass-react-native-module",
710
+ "fast-mlkit-translate-text",
711
+ "framepayments-react-native",
712
+ "getsocial-react-native-sdk",
713
+ "helpshift-plugin-sdkx-react-native",
714
+ "hyper-sdk-react",
715
+ "hypertrack-sdk-react-native",
716
+ "hypertrack-sdk-react-native-plugin-android-activity-service-google",
717
+ "hypertrack-sdk-react-native-plugin-android-location-services-google",
718
+ "hypertrack-sdk-react-native-plugin-android-push-service-firebase",
719
+ "idwise-react-native-sdk",
720
+ "infobip-mobile-messaging-react-native-plugin",
721
+ "jcore-react-native",
722
+ "jpush-react-native",
723
+ "judokit-react-native",
724
+ "localytics-react-native",
725
+ "mappls-map-react-native",
726
+ "mindbox-sdk",
727
+ "mobile-payments-sdk-react-native",
728
+ "mychips-react-sdk",
729
+ "myfatoorah-reactnative",
730
+ "neuroid-reactnative-sdk",
731
+ "nodejs-mobile-react-native",
732
+ "notifly-sdk",
733
+ "onnxruntime-react-native",
734
+ "opentok-react-native",
735
+ "otpless-headless-rn-lite",
736
+ "payme-mini-app",
737
+ "payu-non-seam-less-react",
738
+ "ping-openmls-sdk-react-native-macos",
739
+ "plotline-engage",
740
+ "pulse-updates",
741
+ "ratex-react-native",
742
+ "raygun4reactnative",
743
+ "react-airplay",
744
+ "react-native-accessibility-wrapper",
745
+ "react-native-acoustic-connect-beta",
746
+ "react-native-address-autocomplete",
747
+ "react-native-adjust-oaid",
748
+ "react-native-advertising-id",
749
+ "react-native-agora-chat",
750
+ "react-native-airplay-btn",
751
+ "react-native-alarm-scheduler",
752
+ "react-native-android-installed-apps-unblocking",
753
+ "react-native-android-location-services-dialog-box",
754
+ "react-native-android-log",
755
+ "react-native-android-navbar-height",
756
+ "react-native-android-notification-listener",
757
+ "react-native-android-open-settings",
758
+ "react-native-apay",
759
+ "react-native-app-icon-changer",
760
+ "react-native-appearance",
761
+ "react-native-apple-payment",
762
+ "react-native-appodeal",
763
+ "react-native-appstore-version-checker",
764
+ "react-native-apxor-rtm-plugin",
765
+ "react-native-apxor-sdk",
766
+ "react-native-argon2",
767
+ "react-native-attribution-token",
768
+ "react-native-audio",
769
+ "react-native-audio-record",
770
+ "react-native-background-color",
771
+ "react-native-background-guardian",
772
+ "react-native-background-remover",
773
+ "react-native-battery-optimization-check",
774
+ "react-native-beacon-radar",
775
+ "react-native-bg-thread",
776
+ "react-native-bildit-flybuy-core",
777
+ "react-native-bildit-flybuy-pickup",
778
+ "react-native-ble-advertiser",
779
+ "react-native-blob-jsi-helper",
780
+ "react-native-bluetooth-escpos-printer",
781
+ "react-native-bottomsheet",
782
+ "react-native-braintree-dropin-ui",
783
+ "react-native-bspatch",
784
+ "react-native-build-config",
785
+ "react-native-bureauid-fraud-sdk",
786
+ "react-native-caffe2",
787
+ "react-native-call-detection",
788
+ "react-native-call-log",
789
+ "react-native-capture",
790
+ "react-native-carrier-info",
791
+ "react-native-channel-plugin",
792
+ "react-native-check-biometric-auth-changed",
793
+ "react-native-chottulink-sdk",
794
+ "react-native-clarity",
795
+ "react-native-clusterer",
796
+ "react-native-code-push-diff",
797
+ "react-native-connectivity-status",
798
+ "react-native-convert-ph-asset",
799
+ "react-native-converted-in-sdk",
800
+ "react-native-cookies",
801
+ "react-native-copy",
802
+ "react-native-crash-tester",
803
+ "react-native-crisp-chat-sdk",
804
+ "react-native-cumquat",
805
+ "react-native-customui",
806
+ "react-native-daro-m",
807
+ "react-native-datawedge-intents",
808
+ "react-native-detect-frida",
809
+ "react-native-device-activity",
810
+ "react-native-device-crypto",
811
+ "react-native-device-time-format",
812
+ "react-native-device-uptime",
813
+ "react-native-digitcamera",
814
+ "react-native-doc-viewer",
815
+ "react-native-easy-apple-pay",
816
+ "react-native-encrypted-storage",
817
+ "react-native-esc-pos-printer",
818
+ "react-native-exif",
819
+ "react-native-expo-metamap-sdk",
820
+ "react-native-exponea-sdk",
821
+ "react-native-fast-base64",
822
+ "react-native-fast-crypto",
823
+ "react-native-fast-encoder",
824
+ "react-native-fast-openpgp",
825
+ "react-native-fast-pbkdf2",
826
+ "react-native-fast-rsa",
827
+ "react-native-fatos-sdk",
828
+ "react-native-fbsdk",
829
+ "react-native-fetch-blob",
830
+ "react-native-filament-buildcores",
831
+ "react-native-firebaseui-auth",
832
+ "react-native-firework-sdk",
833
+ "react-native-flipper",
834
+ "react-native-genuin-qa",
835
+ "react-native-geocoder",
836
+ "react-native-geocoder-reborn",
837
+ "react-native-get-sms-android",
838
+ "react-native-get-values",
839
+ "react-native-gif",
840
+ "react-native-gleapsdk",
841
+ "react-native-global-exception-handler",
842
+ "react-native-google-analytics-bridge",
843
+ "react-native-google-pay",
844
+ "react-native-google-play-integrity",
845
+ "react-native-haptic",
846
+ "react-native-haptic-patterns",
847
+ "react-native-hash",
848
+ "react-native-hce",
849
+ "react-native-heic-converter",
850
+ "react-native-helpscout-beacon",
851
+ "react-native-hmac",
852
+ "react-native-html-to-pdf-lite",
853
+ "react-native-hud-hybrid",
854
+ "react-native-hw-keyboard-event",
855
+ "react-native-hyperkyc-sdk",
856
+ "react-native-hyperpay-sdk",
857
+ "react-native-hyperswitch-dev-sdk",
858
+ "react-native-icloud-file-picker",
859
+ "react-native-idfa",
860
+ "react-native-idfa-aaid",
861
+ "react-native-image-base64",
862
+ "react-native-image-code-scanner",
863
+ "react-native-image-filter-kit",
864
+ "react-native-image-rotate",
865
+ "react-native-image-to-pdf",
866
+ "react-native-images-to-pdf",
867
+ "react-native-immersive",
868
+ "react-native-immersive-mode",
869
+ "react-native-in-app-message",
870
+ "react-native-incognia",
871
+ "react-native-infy-camera",
872
+ "react-native-insider",
873
+ "react-native-install-referrer",
874
+ "react-native-installed-app-checker",
875
+ "react-native-is-detox",
876
+ "react-native-is-keyboard-connected",
877
+ "react-native-keyboard-input",
878
+ "react-native-khipu",
879
+ "react-native-klarna-inapp-sdk",
880
+ "react-native-kochava-measurement",
881
+ "react-native-kochava-measurement-apple-tracking",
882
+ "react-native-kochava-measurement-google",
883
+ "react-native-kochava-measurement-google-tracking",
884
+ "react-native-kochava-tracker",
885
+ "react-native-launch-navigator",
886
+ "react-native-layout-guides",
887
+ "react-native-local-resource",
888
+ "react-native-marigold",
889
+ "react-native-marketingcloudsdk",
890
+ "react-native-mdm",
891
+ "react-native-mediapipe",
892
+ "react-native-mediapipe-posedetection",
893
+ "react-native-metamap-sdk",
894
+ "react-native-microphone-stream",
895
+ "react-native-mlkit-ocr",
896
+ "react-native-modpow",
897
+ "react-native-moengage-cards",
898
+ "react-native-moengage-geofence",
899
+ "react-native-moengage-inbox",
900
+ "react-native-mov-to-mp4",
901
+ "react-native-mqtt-file-transfer",
902
+ "react-native-msal",
903
+ "react-native-music-control",
904
+ "react-native-music-control-enhanced",
905
+ "react-native-nami-sdk",
906
+ "react-native-native-log",
907
+ "react-native-netlog-fab",
908
+ "react-native-netwatch",
909
+ "react-native-nitro-bg-timer",
910
+ "react-native-nitro-simple-toast",
911
+ "react-native-nitro-thermal",
912
+ "react-native-nitro-version-check",
913
+ "react-native-notch-info",
914
+ "react-native-notificare",
915
+ "react-native-notificare-geo",
916
+ "react-native-notificare-push",
917
+ "react-native-notificare-push-ui",
918
+ "react-native-notifications-utils",
919
+ "react-native-onetrust-cmp",
920
+ "react-native-open-notification",
921
+ "react-native-otp-auto-verify",
922
+ "react-native-passkeys",
923
+ "react-native-passkit-wallet",
924
+ "react-native-passport-reader",
925
+ "react-native-paypal-web-payments",
926
+ "react-native-pdf-lib",
927
+ "react-native-pdf-page-image",
928
+ "react-native-pdf-thumbnail",
929
+ "react-native-pdf-to-image",
930
+ "react-native-pencil-kit",
931
+ "react-native-performance-stats",
932
+ "react-native-performance-toolkit",
933
+ "react-native-persona",
934
+ "react-native-phonepe-pg",
935
+ "react-native-play-install-referrer",
936
+ "react-native-powerauth-mobile-sdk",
937
+ "react-native-prevent-recent-screenshots",
938
+ "react-native-qualtrics",
939
+ "react-native-quantum-metric-library",
940
+ "react-native-queue-it",
941
+ "react-native-random-uuid",
942
+ "react-native-random-values-jsi-helper",
943
+ "react-native-release-profiler",
944
+ "react-native-repro",
945
+ "react-native-restart-android",
946
+ "react-native-ringer-mode",
947
+ "react-native-rook-sdk",
948
+ "react-native-root-jail-detect",
949
+ "react-native-safe-area",
950
+ "react-native-scanbot-barcode-scanner-sdk",
951
+ "react-native-schedule-exact-alarm-permission",
952
+ "react-native-scoped-storage",
953
+ "react-native-screenshot-detect",
954
+ "react-native-session-timeout",
955
+ "react-native-set-soft-input-mode",
956
+ "react-native-sfh-library",
957
+ "react-native-sha1",
958
+ "react-native-sha256",
959
+ "react-native-shared-preferences",
960
+ "react-native-sherpa-onnx",
961
+ "react-native-shield-fraud-plugin",
962
+ "react-native-sim-cards-manager",
963
+ "react-native-simple-crypto",
964
+ "react-native-simple-heic2jpg",
965
+ "react-native-skadnetwork",
966
+ "react-native-smallcase-gateway",
967
+ "react-native-smartlook-analytics",
968
+ "react-native-smile-rn-lib",
969
+ "react-native-smooth-clip-view",
970
+ "react-native-sms",
971
+ "react-native-sms-retriever",
972
+ "react-native-sound-level",
973
+ "react-native-sound-level-monitor",
974
+ "react-native-sound-recorder",
975
+ "react-native-spike-sdk",
976
+ "react-native-square-in-app-payments",
977
+ "react-native-ssl-pinning",
978
+ "react-native-star-prnt-bitmap-fix",
979
+ "react-native-startup-time",
980
+ "react-native-static-safe-area-insets",
981
+ "react-native-static-server",
982
+ "react-native-store-front",
983
+ "react-native-swrve-plugin",
984
+ "react-native-syan-image-picker",
985
+ "react-native-tappay",
986
+ "react-native-tapresearch",
987
+ "react-native-test-flight",
988
+ "react-native-text-input-reset",
989
+ "react-native-text-recognition",
990
+ "react-native-themis",
991
+ "react-native-thermal-printer",
992
+ "react-native-thermal-receipt-printer-image-qr",
993
+ "react-native-tiktok-business",
994
+ "react-native-tooltips",
995
+ "react-native-torch",
996
+ "react-native-transfer-library",
997
+ "react-native-ts-accountprotection",
998
+ "react-native-ts-identity-orchestration",
999
+ "react-native-ts-idv",
1000
+ "react-native-turbo-image-picker",
1001
+ "react-native-uaepass",
1002
+ "react-native-ultimate-config",
1003
+ "react-native-unit-components",
1004
+ "react-native-usb-serialport-for-android",
1005
+ "react-native-user-agent",
1006
+ "react-native-user-identity",
1007
+ "react-native-userleap",
1008
+ "react-native-video-cache-control",
1009
+ "react-native-video-helper",
1010
+ "react-native-virgil-crypto",
1011
+ "react-native-vision-camera-ocr-plus",
1012
+ "react-native-vizbee-homesso-sender-sdk",
1013
+ "react-native-vizbee-receiver-sdk",
1014
+ "react-native-vizbee-sender-sdk",
1015
+ "react-native-vpn-detector",
1016
+ "react-native-vpn-status",
1017
+ "react-native-walkme-sdk",
1018
+ "react-native-wallet",
1019
+ "react-native-wallet-passes",
1020
+ "react-native-webengage",
1021
+ "react-native-webrtc-kaleidoscope",
1022
+ "react-native-websocket-self-signed",
1023
+ "react-native-webview-ios-cache-clear",
1024
+ "react-native-wonderpush",
1025
+ "react-native-wonderpush-fcm",
1026
+ "react-native-wxwork",
1027
+ "react-native-yamap-plus",
1028
+ "react-native-zendesk-messaging",
1029
+ "react-native-zolozkit-tool",
1030
+ "readid-react-native",
1031
+ "rn-android-keyboard-adjust",
1032
+ "rn-audio-toolkit",
1033
+ "rn-encryption",
1034
+ "rn-linkrunner",
1035
+ "rn-mesh-gradient",
1036
+ "rn-pendo-sdk",
1037
+ "rn-star-prnt",
1038
+ "rn-url-resolver",
1039
+ "rxdx_player",
1040
+ "sahha-react-native",
1041
+ "securehybridapptesting",
1042
+ "shuftipro-onsite-mobilesdk",
1043
+ "smartech-push-react-native",
1044
+ "smartech-reactnative-nudges",
1045
+ "srs-heritage-chatbot",
1046
+ "storyly-placement-react-native",
1047
+ "surveysparrow-react-native-sdk",
1048
+ "tapjoy-react-native-sdk",
1049
+ "tealium-react-firebase",
1050
+ "tealium-react-native",
1051
+ "tealium-react-native-attribution",
1052
+ "terra-react",
1053
+ "theta-ble-client-react-native",
1054
+ "theta-client-react-native",
1055
+ "tiktok-opensdk-react-native",
1056
+ "tipsi-stripe",
1057
+ "tp-react-native-bluetooth-printer",
1058
+ "unified-ble-manager",
1059
+ "unity-levelplay-mediation",
1060
+ "usabilla-react-native",
1061
+ "vexo-analytics",
1062
+ "veyra-sdk-react-native",
1063
+ "vitest-mobile",
1064
+ "wix-react-native-text-size",
1065
+ "yandex-mobile-ads",
1066
+ "ymchat-react-native",
1067
+ "zego-express-engine-reactnative",
1068
+ "zego-zim-react-native",
1069
+ "zetakit_reactnative"
1070
+ ];
1071
+
1072
+ // ../peach-compat/src/generated/native-package-names.ts
1073
+ var NATIVE_STUB_PACKAGE_NAMES = [
1074
+ "@10play/tentap-editor",
1075
+ "@adobe/react-native-aepcore",
1076
+ "@alevy97/react-native-userdefaults",
1077
+ "@ankipro/react-native-file-open",
1078
+ "@appzung/react-native-code-push",
1079
+ "@aptabase/react-native",
1080
+ "@assembless/react-native-material-you",
1081
+ "@atomicfi/transact-react-native",
1082
+ "@atproto/oauth-client-expo",
1083
+ "@attarchi/react-native-lottie-splash-screen",
1084
+ "@avasapp/react-native-otp-autofill",
1085
+ "@aws-amplify/react-native",
1086
+ "@azesmway/react-native-unity",
1087
+ "@azzapp/react-native-skia-video",
1088
+ "@babylonjs/react-native",
1089
+ "@bacons/apple-targets",
1090
+ "@bam.tech/react-native-image-resizer",
1091
+ "@baronha/react-native-multiple-image-picker",
1092
+ "@baronha/react-native-photo-editor",
1093
+ "@baronha/ting",
1094
+ "@batch.com/react-native-plugin",
1095
+ "@bear-block/vision-camera-ocr",
1096
+ "@bhojaniasgar/react-native-otp-input",
1097
+ "@bitdrift/react-native",
1098
+ "@bittingz/expo-widgets",
1099
+ "@blackbox-vision/react-native-mercadopago-px",
1100
+ "@borndotcom/react-native-godot",
1101
+ "@bravemobile/react-native-code-push",
1102
+ "@braze/react-native-sdk",
1103
+ "@bsky.app/expo-guess-language",
1104
+ "@bsky.app/expo-image-crop-tool",
1105
+ "@bsky.app/expo-scroll-edge-effect",
1106
+ "@bsky.app/react-native-mmkv",
1107
+ "@bugfender/rn-bugfender",
1108
+ "@bugsnag/react-native",
1109
+ "@bugsnag/react-native-performance",
1110
+ "@callstack/liquid-glass",
1111
+ "@callstack/react-native-bottom-tabs",
1112
+ "@callstack/react-native-brownfield",
1113
+ "@callstack/react-native-local-notifications",
1114
+ "@callstack/react-native-sandbox",
1115
+ "@callstack/react-native-visionos",
1116
+ "@callstack/timezone-hermes-fix",
1117
+ "@candlefinance/faster-image",
1118
+ "@candlefinance/haptics",
1119
+ "@clerk/expo",
1120
+ "@clerk/expo-passkeys",
1121
+ "@cometchat/chat-uikit-react-native",
1122
+ "@computools/react-native-dynamic-app-icon",
1123
+ "@coolsoftwaretyler/cool-pdf",
1124
+ "@criipto/verify-expo",
1125
+ "@d11/react-native-fast-image",
1126
+ "@d11/react-native-mqtt",
1127
+ "@danielsaraldi/react-native-blur-view",
1128
+ "@dariyd/react-native-document-scanner",
1129
+ "@datadog/mobile-react-native",
1130
+ "@dbkable/react-native-speech-to-text",
1131
+ "@didomi/react-native",
1132
+ "@dimaportenko/react-native-shadow-view",
1133
+ "@domir/react-native-measure-text",
1134
+ "@dr.pogodin/react-native-audio",
1135
+ "@dr.pogodin/react-native-fs",
1136
+ "@dr.pogodin/react-native-static-server",
1137
+ "@dylankenneally/react-native-ssh-sftp",
1138
+ "@eabdullazyanov/react-native-sms-user-consent",
1139
+ "@expensify/react-native-background-task",
1140
+ "@expensify/react-native-hybrid-app",
1141
+ "@expensify/react-native-live-markdown",
1142
+ "@expensify/react-native-wallet",
1143
+ "@expo/app-integrity",
1144
+ "@expo/dom-webview",
1145
+ "@expo/ui",
1146
+ "@expo/ui/community/menu",
1147
+ "@extrieve_technologies/quickcapture_react_native",
1148
+ "@fingerprintjs/fingerprintjs-pro-react-native",
1149
+ "@fishjam-cloud/react-native-client",
1150
+ "@fishjam-cloud/react-native-webrtc",
1151
+ "@flitzinteractive/react-native-nitro-html-pdf",
1152
+ "@flyskywhy/react-native-gcanvas",
1153
+ "@fugood/react-native-audio-pcm-stream",
1154
+ "@fullstory/react-native",
1155
+ "@gabriel-sisjr/react-native-background-location",
1156
+ "@generac/react-native-local-network-permission",
1157
+ "@giphy/react-native-sdk",
1158
+ "@gmisoftware/react-native-pay",
1159
+ "@goliapkg/sentori-react-native",
1160
+ "@google/react-native-make-payment",
1161
+ "@googlemaps/react-native-navigation-sdk",
1162
+ "@haroldtran/react-native-pax",
1163
+ "@hot-updater/react-native",
1164
+ "@huymobile/react-native-sms-retriever-nitro-module",
1165
+ "@hyoper/rn-location",
1166
+ "@intercom/intercom-react-native",
1167
+ "@invertase/react-native-apple-authentication",
1168
+ "@iterable/expo-plugin",
1169
+ "@iterable/react-native-sdk",
1170
+ "@iternio/react-native-auto-play",
1171
+ "@joplin/react-native-alarm-notification",
1172
+ "@journeyapps/react-native-quick-sqlite",
1173
+ "@jwplayer/jwplayer-react-native",
1174
+ "@kesha-antonov/react-native-background-downloader",
1175
+ "@kilohealth/rn-fitness-tracker",
1176
+ "@kingstinct/react-native-healthkit",
1177
+ "@kishannareshpal/expo-pdf",
1178
+ "@livekit/react-native",
1179
+ "@livekit/react-native-webrtc",
1180
+ "@lodev09/react-native-exify",
1181
+ "@lodev09/react-native-true-sheet",
1182
+ "@logicwind/react-native-exit-app",
1183
+ "@logicwind/react-native-matomo-tracker",
1184
+ "@logicwind/react-native-status-bar-height",
1185
+ "@logicwind/react-native-tvos-keyboard",
1186
+ "@lomray/react-native-apple-music",
1187
+ "@loqalabs/loqa-expo-dsp",
1188
+ "@lottiefiles/dotlottie-react-native",
1189
+ "@luciq/react-native",
1190
+ "@lugg/maps",
1191
+ "@magrinj/expo-quick-look",
1192
+ "@mapbox/react-native-mapbox-gl",
1193
+ "@maplibre/maplibre-react-native",
1194
+ "@mattermost/react-native-emm",
1195
+ "@mattermost/react-native-network-client",
1196
+ "@mattermost/react-native-paste-input",
1197
+ "@mattermost/react-native-turbo-log",
1198
+ "@mattermost/rnutils",
1199
+ "@meedwire/react-native-image-rotate",
1200
+ "@metamask/native-utils",
1201
+ "@metamask/react-native-search-api",
1202
+ "@metamask/react-native-webview",
1203
+ "@mgcrea/react-native-jetpack-compose",
1204
+ "@mgcrea/vision-camera-barcode-scanner",
1205
+ "@mhpdev/react-native-haptics",
1206
+ "@mhpdev/react-native-speech",
1207
+ "@mj-studio/react-native-naver-map",
1208
+ "@mozzius/expo-dynamic-app-icon",
1209
+ "@nandorojo/galeria",
1210
+ "@notifee/react-native",
1211
+ "@novastera-oss/rn-google-signin",
1212
+ "@nozbe/watermelondb",
1213
+ "@okta/okta-react-native",
1214
+ "@oleg_svetlichnyi/expo-icloud-storage",
1215
+ "@op-engineering/op-sqlite",
1216
+ "@orbital-systems/react-native-esp-idf-provisioning",
1217
+ "@playerdata/react-native-mcu-manager",
1218
+ "@pnthach95/react-native-root-view-background",
1219
+ "@pocketpalai/react-native-speech",
1220
+ "@posthog/react-native-plugin",
1221
+ "@powersync/react-native",
1222
+ "@preeternal/react-native-cookie-manager",
1223
+ "@prisma/react-native",
1224
+ "@purchasely/react-native-purchasely-android-player",
1225
+ "@purchasely/react-native-purchasely-google",
1226
+ "@purchasely/react-native-purchasely-huawei",
1227
+ "@pusher/pusher-websocket-react-native",
1228
+ "@pushpendersingh/react-native-otp-verify",
1229
+ "@pushpendersingh/react-native-scanner",
1230
+ "@react-native-ai/apple",
1231
+ "@react-native-ai/mlc",
1232
+ "@react-native-async-storage/async-storage",
1233
+ "@react-native-camera-roll/camera-roll",
1234
+ "@react-native-clipboard/clipboard",
1235
+ "@react-native-community/audio-toolkit",
1236
+ "@react-native-community/blur",
1237
+ "@react-native-community/checkbox",
1238
+ "@react-native-community/datetimepicker",
1239
+ "@react-native-community/geolocation",
1240
+ "@react-native-community/image-editor",
1241
+ "@react-native-community/masked-view",
1242
+ "@react-native-community/netinfo",
1243
+ "@react-native-community/progress-bar-android",
1244
+ "@react-native-community/progress-view",
1245
+ "@react-native-community/push-notification-ios",
1246
+ "@react-native-community/slider",
1247
+ "@react-native-community/toolbar-android",
1248
+ "@react-native-cookies/cookies",
1249
+ "@react-native-documents/picker",
1250
+ "@react-native-documents/viewer",
1251
+ "@react-native-drivekit/core",
1252
+ "@react-native-drivekit/driver-data",
1253
+ "@react-native-firebase/analytics",
1254
+ "@react-native-firebase/app",
1255
+ "@react-native-firebase/app-check",
1256
+ "@react-native-firebase/app-distribution",
1257
+ "@react-native-firebase/auth",
1258
+ "@react-native-firebase/crashlytics",
1259
+ "@react-native-firebase/database",
1260
+ "@react-native-firebase/firestore",
1261
+ "@react-native-firebase/functions",
1262
+ "@react-native-firebase/in-app-messaging",
1263
+ "@react-native-firebase/installations",
1264
+ "@react-native-firebase/messaging",
1265
+ "@react-native-firebase/ml",
1266
+ "@react-native-firebase/perf",
1267
+ "@react-native-firebase/remote-config",
1268
+ "@react-native-firebase/storage",
1269
+ "@react-native-google-signin/google-signin",
1270
+ "@react-native-masked-view/masked-view",
1271
+ "@react-native-menu/menu",
1272
+ "@react-native-ml-kit/barcode-scanning",
1273
+ "@react-native-ml-kit/face-detection",
1274
+ "@react-native-ml-kit/identify-languages",
1275
+ "@react-native-ml-kit/image-labeling",
1276
+ "@react-native-ml-kit/text-recognition",
1277
+ "@react-native-ml-kit/translate-text",
1278
+ "@react-native-picker/picker",
1279
+ "@react-native-runtimes/core",
1280
+ "@react-native-runtimes/state",
1281
+ "@react-native-segmented-control/segmented-control",
1282
+ "@react-native-seoul/naver-login",
1283
+ "@reactvision/react-viro",
1284
+ "@remobile/react-native-toast",
1285
+ "@renegades/react-native-tickle",
1286
+ "@rive-app/react-native",
1287
+ "@rn-org/react-native-geofencing",
1288
+ "@rn-org/react-native-shortcuts",
1289
+ "@rnmapbox/maps",
1290
+ "@rnw-community/react-native-payments",
1291
+ "@rocket.chat/mobile-crypto",
1292
+ "@roman.sytnyk/blur-app-in-recents",
1293
+ "@rudderstack/rudder-integration-amplitude-react-native",
1294
+ "@rudderstack/rudder-integration-appcenter-react-native",
1295
+ "@rudderstack/rudder-integration-appsflyer-react-native",
1296
+ "@rudderstack/rudder-integration-braze-react-native",
1297
+ "@rudderstack/rudder-integration-clevertap-react-native",
1298
+ "@rudderstack/rudder-integration-facebook-react-native",
1299
+ "@rudderstack/rudder-integration-firebase-react-native",
1300
+ "@rudderstack/rudder-integration-singular-react-native",
1301
+ "@rudderstack/rudder-plugin-db-encryption-react-native",
1302
+ "@rudderstack/rudder-sdk-react-native",
1303
+ "@s77rt/react-native-date-picker",
1304
+ "@sbaiahmed1/react-native-biometrics",
1305
+ "@sbaiahmed1/react-native-blur",
1306
+ "@sdcx/nested-scroll",
1307
+ "@sdcx/pull-to-refresh",
1308
+ "@segment/analytics-react-native",
1309
+ "@segment/sovran-react-native",
1310
+ "@sendbird/calls-react-native",
1311
+ "@sentry/react-native",
1312
+ "@shakebugs/react-native-shake",
1313
+ "@shayrn/react-native-android-phone-number-hint",
1314
+ "@shopify/checkout-sheet-kit",
1315
+ "@shopify/react-native-performance",
1316
+ "@shopify/react-native-skia",
1317
+ "@simform_solutions/react-native-audio-waveform",
1318
+ "@siteed/audio-studio",
1319
+ "@situm/react-native",
1320
+ "@sparkfabrik/react-native-idfa-aaid",
1321
+ "@splicer97/react-native-android-keyboard-adjust",
1322
+ "@splicer97/react-native-mytracker",
1323
+ "@stefanmartin/expo-video-compress",
1324
+ "@stefanmartin/expo-video-watermark",
1325
+ "@stream-io/video-react-native-sdk",
1326
+ "@stripe/stripe-identity-react-native",
1327
+ "@stripe/stripe-react-native",
1328
+ "@stripe/stripe-terminal-react-native",
1329
+ "@superfan-app/spotify-auth",
1330
+ "@supersami/rn-foreground-service",
1331
+ "@survicate/react-native-survicate",
1332
+ "@swan-io/react-native-browser",
1333
+ "@swmansion/react-native-bottom-sheet",
1334
+ "@thehale/react-native-keep-awake",
1335
+ "@turbopush/react-native-code-push",
1336
+ "@twilio/voice-react-native-sdk",
1337
+ "@ua/react-native-airship",
1338
+ "@uiw/react-native-alipay",
1339
+ "@universe/hashcash-native",
1340
+ "@use-voltra/android-client",
1341
+ "@use-voltra/ios-client",
1342
+ "@vokhuyet/react-native-concurrent-sound",
1343
+ "@vonovak/react-native-theme-control",
1344
+ "@walletconnect/react-native-compat",
1345
+ "@wwdrew/expo-android-shared-preferences",
1346
+ "@wwdrew/expo-spotify-sdk",
1347
+ "@xmartlabs/react-native-line",
1348
+ "@xmtp/react-native-sdk",
1349
+ "@zoontek/react-native-navigation-bar",
1350
+ "amazon-ivs-react-native-player",
1351
+ "anyline-ocr-react-native-module",
1352
+ "appcenter",
1353
+ "appcenter-analytics",
1354
+ "appcenter-crashes",
1355
+ "apple-health",
1356
+ "bitmovin-player-react-native",
1357
+ "burnt",
1358
+ "clevertap-react-native",
1359
+ "customerio-reactnative",
1360
+ "expo",
1361
+ "expo-age-range",
1362
+ "expo-alikit",
1363
+ "expo-aliyun-push",
1364
+ "expo-alternate-app-icons",
1365
+ "expo-android-pedometer",
1366
+ "expo-android-shared-preferences",
1367
+ "expo-app-integrity",
1368
+ "expo-app-intents",
1369
+ "expo-app-metrics",
1370
+ "expo-apple-authentication",
1371
+ "expo-application",
1372
+ "expo-asset",
1373
+ "expo-assistant-functions",
1374
+ "expo-audio",
1375
+ "expo-av",
1376
+ "expo-background-fetch",
1377
+ "expo-background-task",
1378
+ "expo-barcode",
1379
+ "expo-barcode-scanner",
1380
+ "expo-battery",
1381
+ "expo-beacon",
1382
+ "expo-better-auth-passkey",
1383
+ "expo-blob",
1384
+ "expo-blur",
1385
+ "expo-brightness",
1386
+ "expo-calendar",
1387
+ "expo-callkit-telecom",
1388
+ "expo-camera",
1389
+ "expo-cellular",
1390
+ "expo-click-outside",
1391
+ "expo-clipboard",
1392
+ "expo-constants",
1393
+ "expo-contacts",
1394
+ "expo-core-spotlight",
1395
+ "expo-crypto",
1396
+ "expo-dev-client",
1397
+ "expo-device",
1398
+ "expo-document-picker",
1399
+ "expo-document-scanner",
1400
+ "expo-drag-drop-content-view",
1401
+ "expo-dynamic-app-icon",
1402
+ "expo-eas-client",
1403
+ "expo-emoji-picker",
1404
+ "expo-esim-utils",
1405
+ "expo-file-system",
1406
+ "expo-finance-kit",
1407
+ "expo-font",
1408
+ "expo-foreground-actions",
1409
+ "expo-gaode-map",
1410
+ "expo-gaode-map-search",
1411
+ "expo-gl",
1412
+ "expo-glass-effect",
1413
+ "expo-haptics",
1414
+ "expo-hardware-buttons",
1415
+ "expo-health-connect",
1416
+ "expo-helium",
1417
+ "expo-hinge",
1418
+ "expo-iap",
1419
+ "expo-ignore-battery-optimizations",
1420
+ "expo-image",
1421
+ "expo-image-manipulator",
1422
+ "expo-image-picker",
1423
+ "expo-in-app-updates",
1424
+ "expo-insights",
1425
+ "expo-intent-launcher",
1426
+ "expo-ios-visual-blur",
1427
+ "expo-keep-awake",
1428
+ "expo-key-event",
1429
+ "expo-libvlc-player",
1430
+ "expo-linear-gradient",
1431
+ "expo-linking",
1432
+ "expo-liquid-glass-native",
1433
+ "expo-liquid-glass-view",
1434
+ "expo-live-activity",
1435
+ "expo-live-photo",
1436
+ "expo-local-authentication",
1437
+ "expo-localization",
1438
+ "expo-location",
1439
+ "expo-mail-composer",
1440
+ "expo-maps",
1441
+ "expo-media-control",
1442
+ "expo-media-library",
1443
+ "expo-mesh-gradient",
1444
+ "expo-modules-core",
1445
+ "expo-music-picker",
1446
+ "expo-native-alipay",
1447
+ "expo-native-emojis-popup",
1448
+ "expo-native-sheet-emojis",
1449
+ "expo-native-wechat",
1450
+ "expo-navigation-bar",
1451
+ "expo-network",
1452
+ "expo-network-addons",
1453
+ "expo-notifications",
1454
+ "expo-observe",
1455
+ "expo-paperkit",
1456
+ "expo-passkey",
1457
+ "expo-paste-input",
1458
+ "expo-pencilkit-ui",
1459
+ "expo-phone-number-hint",
1460
+ "expo-pip",
1461
+ "expo-pretext",
1462
+ "expo-print",
1463
+ "expo-privacy-sensitive",
1464
+ "expo-quick-actions",
1465
+ "expo-rich-input",
1466
+ "expo-roomplan",
1467
+ "expo-screen-capture",
1468
+ "expo-screen-corner-radius",
1469
+ "expo-screen-orientation",
1470
+ "expo-secure-store",
1471
+ "expo-selectable-text",
1472
+ "expo-sensors",
1473
+ "expo-share-extension",
1474
+ "expo-share-intent",
1475
+ "expo-sharing",
1476
+ "expo-shazamkit",
1477
+ "expo-sms",
1478
+ "expo-speech",
1479
+ "expo-speech-recognition",
1480
+ "expo-splash-screen",
1481
+ "expo-sqlite",
1482
+ "expo-squircle-view",
1483
+ "expo-store-review",
1484
+ "expo-stream-audio",
1485
+ "expo-superwall",
1486
+ "expo-symbols",
1487
+ "expo-system-ui",
1488
+ "expo-targets",
1489
+ "expo-task-manager",
1490
+ "expo-testflight",
1491
+ "expo-tracking-transparency",
1492
+ "expo-translate-text",
1493
+ "expo-truecaller",
1494
+ "expo-tvos-search",
1495
+ "expo-updates",
1496
+ "expo-vector-search",
1497
+ "expo-video",
1498
+ "expo-video-metadata",
1499
+ "expo-video-thumbnails",
1500
+ "expo-web-browser",
1501
+ "expo-wechat",
1502
+ "expo-widgets",
1503
+ "expo-winter-fetch",
1504
+ "expo-winter-formdata",
1505
+ "freerasp-react-native",
1506
+ "group-ib-fp",
1507
+ "gt-react-native",
1508
+ "jail-monkey",
1509
+ "klaviyo-react-native-sdk",
1510
+ "llama.rn",
1511
+ "loro-react-native",
1512
+ "lottie-react-native",
1513
+ "mixpanel-react-native",
1514
+ "munim-bluetooth",
1515
+ "navigation-react-native",
1516
+ "newrelic-react-native-agent",
1517
+ "one",
1518
+ "ping-react-native",
1519
+ "posthog-react-native-session-replay",
1520
+ "pushy-react-native",
1521
+ "react-native",
1522
+ "react-native-a11y",
1523
+ "react-native-a11y-container",
1524
+ "react-native-a11y-order",
1525
+ "react-native-actions-shortcuts",
1526
+ "react-native-adapty",
1527
+ "react-native-add-calendar-event",
1528
+ "react-native-adjust",
1529
+ "react-native-admob-native-ads",
1530
+ "react-native-advanced-input-mask",
1531
+ "react-native-aes-crypto",
1532
+ "react-native-aes-gcm-crypto",
1533
+ "react-native-age-signals",
1534
+ "react-native-agora",
1535
+ "react-native-amap3d",
1536
+ "react-native-amplitude-analytics",
1537
+ "react-native-android-location-enabler",
1538
+ "react-native-android-widget",
1539
+ "react-native-animateable-text",
1540
+ "react-native-animated-observer",
1541
+ "react-native-app-attest",
1542
+ "react-native-app-auth",
1543
+ "react-native-app-clip",
1544
+ "react-native-app-logs",
1545
+ "react-native-app-review",
1546
+ "react-native-appearance-control",
1547
+ "react-native-apple-ads-attribution",
1548
+ "react-native-apple-llm",
1549
+ "react-native-appsflyer",
1550
+ "react-native-appstack-sdk",
1551
+ "react-native-ar-preview",
1552
+ "react-native-audio-api",
1553
+ "react-native-auth0",
1554
+ "react-native-authsignal",
1555
+ "react-native-auto-skeleton",
1556
+ "react-native-avoid-softinput",
1557
+ "react-native-awesome-card-io",
1558
+ "react-native-azure-auth",
1559
+ "react-native-background-actions",
1560
+ "react-native-background-fetch",
1561
+ "react-native-background-geolocation",
1562
+ "react-native-background-job",
1563
+ "react-native-background-task",
1564
+ "react-native-background-timer",
1565
+ "react-native-background-upload",
1566
+ "react-native-barcode-creator",
1567
+ "react-native-bare-kit",
1568
+ "react-native-beacon-kit",
1569
+ "react-native-better-clustering",
1570
+ "react-native-better-maps",
1571
+ "react-native-biometrics",
1572
+ "react-native-blasted-image",
1573
+ "react-native-ble-manager",
1574
+ "react-native-ble-nitro",
1575
+ "react-native-ble-plx",
1576
+ "react-native-blob-courier",
1577
+ "react-native-blob-util",
1578
+ "react-native-bluetooth-classic",
1579
+ "react-native-bluetooth-state-manager",
1580
+ "react-native-bluetooth-status",
1581
+ "react-native-blur-view",
1582
+ "react-native-blurhash",
1583
+ "react-native-bootsplash",
1584
+ "react-native-bottom-action-sheet",
1585
+ "react-native-bottom-sheet-behavior",
1586
+ "react-native-bottom-tabs",
1587
+ "react-native-branch",
1588
+ "react-native-calendar-events",
1589
+ "react-native-callkeep",
1590
+ "react-native-camera-kit",
1591
+ "react-native-capture-protection",
1592
+ "react-native-cardscan",
1593
+ "react-native-carplay",
1594
+ "react-native-cashfree-pg-sdk",
1595
+ "react-native-cesium",
1596
+ "react-native-change-icon",
1597
+ "react-native-charts-wrapper",
1598
+ "react-native-cloud-storage",
1599
+ "react-native-cloud-store",
1600
+ "react-native-code-push",
1601
+ "react-native-color-picker-ios",
1602
+ "react-native-compass-heading",
1603
+ "react-native-compressor",
1604
+ "react-native-config",
1605
+ "react-native-config-reader",
1606
+ "react-native-contacts",
1607
+ "react-native-context-menu-view",
1608
+ "react-native-cos-sdk",
1609
+ "react-native-create-thumbnail",
1610
+ "react-native-credentials-manager",
1611
+ "react-native-custom-splash",
1612
+ "react-native-customized-image-picker",
1613
+ "react-native-dark-mode",
1614
+ "react-native-date-picker",
1615
+ "react-native-deepgram",
1616
+ "react-native-default-preference",
1617
+ "react-native-detector",
1618
+ "react-native-device-attest",
1619
+ "react-native-device-country",
1620
+ "react-native-device-info",
1621
+ "react-native-dialogs",
1622
+ "react-native-document-picker",
1623
+ "react-native-document-picker-macos",
1624
+ "react-native-document-scanner",
1625
+ "react-native-document-scanner-plugin",
1626
+ "react-native-drop-shadow",
1627
+ "react-native-drum-picker",
1628
+ "react-native-dynamic-app-icon",
1629
+ "react-native-earl-thermal-printer",
1630
+ "react-native-ease",
1631
+ "react-native-edge-fade",
1632
+ "react-native-edge-to-edge",
1633
+ "react-native-emoji-popup",
1634
+ "react-native-enriched",
1635
+ "react-native-enriched-html",
1636
+ "react-native-enriched-markdown",
1637
+ "react-native-events",
1638
+ "react-native-exception-handler",
1639
+ "react-native-executorch",
1640
+ "react-native-exit-app",
1641
+ "react-native-expo-braintree",
1642
+ "react-native-external-display",
1643
+ "react-native-external-keyboard",
1644
+ "react-native-extra-dimensions-android",
1645
+ "react-native-fabric",
1646
+ "react-native-fast-image",
1647
+ "react-native-fast-io",
1648
+ "react-native-fast-opencv",
1649
+ "react-native-fast-secure-storage",
1650
+ "react-native-fast-shadow",
1651
+ "react-native-fast-squircle",
1652
+ "react-native-fast-tflite",
1653
+ "react-native-fast-trie",
1654
+ "react-native-fbads",
1655
+ "react-native-fbsdk-next",
1656
+ "react-native-fcm",
1657
+ "react-native-filament",
1658
+ "react-native-file-access",
1659
+ "react-native-file-logger",
1660
+ "react-native-file-selector",
1661
+ "react-native-file-viewer",
1662
+ "react-native-file-viewer-turbo",
1663
+ "react-native-fileupload",
1664
+ "react-native-find-local-devices",
1665
+ "react-native-fingerprint-scanner",
1666
+ "react-native-floating-label-input",
1667
+ "react-native-fs",
1668
+ "react-native-fs-turbo",
1669
+ "react-native-geo-fencing",
1670
+ "react-native-geolocation-service",
1671
+ "react-native-gesture-handler",
1672
+ "react-native-get-device-locale",
1673
+ "react-native-get-location",
1674
+ "react-native-get-random-values",
1675
+ "react-native-google-auth",
1676
+ "react-native-google-cast",
1677
+ "react-native-google-fit",
1678
+ "react-native-google-maps-plus",
1679
+ "react-native-google-mobile-ads",
1680
+ "react-native-google-places",
1681
+ "react-native-google-places-sdk",
1682
+ "react-native-google-play-install-referrer",
1683
+ "react-native-gzip",
1684
+ "react-native-haptic-feedback",
1685
+ "react-native-hapticlabs",
1686
+ "react-native-headphone-detection",
1687
+ "react-native-health",
1688
+ "react-native-health-connect",
1689
+ "react-native-here-explore",
1690
+ "react-native-hole-view",
1691
+ "react-native-home-indicator",
1692
+ "react-native-hotkeys",
1693
+ "react-native-html-to-pdf",
1694
+ "react-native-http-bridge-refurbished",
1695
+ "react-native-hyper-markdown",
1696
+ "react-native-i18n",
1697
+ "react-native-iap",
1698
+ "react-native-iaphub",
1699
+ "react-native-icloud-kit",
1700
+ "react-native-idle-timer",
1701
+ "react-native-image-colors",
1702
+ "react-native-image-compression-kit",
1703
+ "react-native-image-crop-picker",
1704
+ "react-native-image-marker",
1705
+ "react-native-image-picker",
1706
+ "react-native-image-size",
1707
+ "react-native-image-stitcher",
1708
+ "react-native-in-app-review",
1709
+ "react-native-in-app-utils",
1710
+ "react-native-inappbrowser-nitro",
1711
+ "react-native-inappbrowser-reborn",
1712
+ "react-native-incall-manager",
1713
+ "react-native-interception-webview",
1714
+ "react-native-intercom",
1715
+ "react-native-ios-context-menu",
1716
+ "react-native-ios-modal",
1717
+ "react-native-ios-translate-sheet",
1718
+ "react-native-ios-translate-tasks",
1719
+ "react-native-ios-utilities",
1720
+ "react-native-job-queue",
1721
+ "react-native-jw-media-player",
1722
+ "react-native-keep-awake",
1723
+ "react-native-key-command",
1724
+ "react-native-key-pair",
1725
+ "react-native-keyboard-controller",
1726
+ "react-native-keyboard-manager",
1727
+ "react-native-keychain",
1728
+ "react-native-keyevent",
1729
+ "react-native-keys",
1730
+ "react-native-launch-arguments",
1731
+ "react-native-leaflet-view",
1732
+ "react-native-legal",
1733
+ "react-native-libsodium",
1734
+ "react-native-linear-gradient",
1735
+ "react-native-linkedin-login",
1736
+ "react-native-liquid-glassmorphism",
1737
+ "react-native-litert-lm",
1738
+ "react-native-llm-mediapipe",
1739
+ "react-native-loader-kit",
1740
+ "react-native-localization",
1741
+ "react-native-localization-settings",
1742
+ "react-native-localize",
1743
+ "react-native-location",
1744
+ "react-native-location-enabler",
1745
+ "react-native-mail",
1746
+ "react-native-maps",
1747
+ "react-native-material-palette",
1748
+ "react-native-mdm-config",
1749
+ "react-native-measure-text",
1750
+ "react-native-mixpanel",
1751
+ "react-native-mmkv",
1752
+ "react-native-mmkv-storage",
1753
+ "react-native-moengage",
1754
+ "react-native-month-year-picker",
1755
+ "react-native-moyasar-apple-pay",
1756
+ "react-native-moyasar-sdk",
1757
+ "react-native-multiple-modals",
1758
+ "react-native-nano-icons",
1759
+ "react-native-navigation",
1760
+ "react-native-navigation-bar-color",
1761
+ "react-native-navigation-mode",
1762
+ "react-native-network-info",
1763
+ "react-native-nfc-manager",
1764
+ "react-native-nitro-ark",
1765
+ "react-native-nitro-audio-manager",
1766
+ "react-native-nitro-buffer",
1767
+ "react-native-nitro-cloud-uploader",
1768
+ "react-native-nitro-cookies",
1769
+ "react-native-nitro-crypto",
1770
+ "react-native-nitro-device-info",
1771
+ "react-native-nitro-dns",
1772
+ "react-native-nitro-fetch",
1773
+ "react-native-nitro-file-system",
1774
+ "react-native-nitro-fs",
1775
+ "react-native-nitro-geocoder",
1776
+ "react-native-nitro-geolocation",
1777
+ "react-native-nitro-google-signin",
1778
+ "react-native-nitro-haptics",
1779
+ "react-native-nitro-http-server",
1780
+ "react-native-nitro-image",
1781
+ "react-native-nitro-markdown",
1782
+ "react-native-nitro-modules",
1783
+ "react-native-nitro-net",
1784
+ "react-native-nitro-network-info",
1785
+ "react-native-nitro-ota",
1786
+ "react-native-nitro-player",
1787
+ "react-native-nitro-pose-exercises",
1788
+ "react-native-nitro-rtmp-publisher",
1789
+ "react-native-nitro-screen-recorder",
1790
+ "react-native-nitro-sensors-kit",
1791
+ "react-native-nitro-sfsymbols",
1792
+ "react-native-nitro-sound",
1793
+ "react-native-nitro-speech",
1794
+ "react-native-nitro-sqlite",
1795
+ "react-native-nitro-sse",
1796
+ "react-native-nitro-text-decoder",
1797
+ "react-native-nitro-toast",
1798
+ "react-native-nitro-tor",
1799
+ "react-native-nitro-totp",
1800
+ "react-native-nitro-vision-kit",
1801
+ "react-native-nitro-web-image",
1802
+ "react-native-nitro-websockets",
1803
+ "react-native-node-api",
1804
+ "react-native-notification-badge",
1805
+ "react-native-notification-sounds",
1806
+ "react-native-notifications",
1807
+ "react-native-notify-kit",
1808
+ "react-native-oauth",
1809
+ "react-native-ometria",
1810
+ "react-native-omni",
1811
+ "react-native-onesignal",
1812
+ "react-native-openai",
1813
+ "react-native-orientation-director",
1814
+ "react-native-orientation-locker",
1815
+ "react-native-orientation-manager",
1816
+ "react-native-orientation-turbo",
1817
+ "react-native-os",
1818
+ "react-native-ota-hot-update",
1819
+ "react-native-otp-verify",
1820
+ "react-native-package-checker",
1821
+ "react-native-pager-view",
1822
+ "react-native-palette-full",
1823
+ "react-native-passkey",
1824
+ "react-native-payments",
1825
+ "react-native-paypal",
1826
+ "react-native-pdf",
1827
+ "react-native-pdf-from-image",
1828
+ "react-native-pdf-jsi",
1829
+ "react-native-pdf-light",
1830
+ "react-native-pdf-renderer",
1831
+ "react-native-pdf-view",
1832
+ "react-native-performance",
1833
+ "react-native-performance-limiter",
1834
+ "react-native-permissions",
1835
+ "react-native-perspective-image-cropper",
1836
+ "react-native-photo-editor",
1837
+ "react-native-photo-manipulator",
1838
+ "react-native-photo-view",
1839
+ "react-native-photo-view-ex",
1840
+ "react-native-photoeditorsdk",
1841
+ "react-native-pinchable",
1842
+ "react-native-ping",
1843
+ "react-native-pkce-challenge",
1844
+ "react-native-plaid-link-sdk",
1845
+ "react-native-platform-components",
1846
+ "react-native-play-age-range-declaration",
1847
+ "react-native-pretty-toast",
1848
+ "react-native-print",
1849
+ "react-native-private-screen",
1850
+ "react-native-prompt-android",
1851
+ "react-native-pulsar",
1852
+ "react-native-purchasely",
1853
+ "react-native-purchases",
1854
+ "react-native-purchases-ui",
1855
+ "react-native-pure-jwt",
1856
+ "react-native-push-notification",
1857
+ "react-native-qr-decode-image-camera",
1858
+ "react-native-qr-kit",
1859
+ "react-native-quick-actions",
1860
+ "react-native-quick-base64",
1861
+ "react-native-quick-crypto",
1862
+ "react-native-quick-sqlite",
1863
+ "react-native-radial-gradient",
1864
+ "react-native-randombytes",
1865
+ "react-native-rate",
1866
+ "react-native-rate-app",
1867
+ "react-native-razorpay",
1868
+ "react-native-reanimated",
1869
+ "react-native-receive-sharing-intent",
1870
+ "react-native-record-screen",
1871
+ "react-native-restart",
1872
+ "react-native-restart-newarch",
1873
+ "react-native-rn-in-app-update",
1874
+ "react-native-rsa-native",
1875
+ "react-native-rsa-signer",
1876
+ "react-native-safari-view",
1877
+ "react-native-safe-area-context",
1878
+ "react-native-screen-choreography",
1879
+ "react-native-screen-corner-radius",
1880
+ "react-native-screenguard",
1881
+ "react-native-screens",
1882
+ "react-native-screenshot-aware",
1883
+ "react-native-screenshot-prevent",
1884
+ "react-native-search-bar",
1885
+ "react-native-secure-key-store",
1886
+ "react-native-securerandom",
1887
+ "react-native-select-contact",
1888
+ "react-native-send-intent",
1889
+ "react-native-sensitive-info",
1890
+ "react-native-sensors",
1891
+ "react-native-settings",
1892
+ "react-native-sfsymbols",
1893
+ "react-native-shake",
1894
+ "react-native-share",
1895
+ "react-native-share-menu",
1896
+ "react-native-shared-element",
1897
+ "react-native-shared-group-preferences",
1898
+ "react-native-shareplay",
1899
+ "react-native-shiki-engine",
1900
+ "react-native-showtime",
1901
+ "react-native-signature-capture",
1902
+ "react-native-simple-biometrics",
1903
+ "react-native-simple-toast",
1904
+ "react-native-siri-shortcut",
1905
+ "react-native-smart-splash-screen",
1906
+ "react-native-snackbar",
1907
+ "react-native-social-share",
1908
+ "react-native-sound",
1909
+ "react-native-sound-player",
1910
+ "react-native-speech-recognition-kit",
1911
+ "react-native-spinkit",
1912
+ "react-native-splash-screen",
1913
+ "react-native-splash-screen-newarch",
1914
+ "react-native-splash-view",
1915
+ "react-native-spotify-remote",
1916
+ "react-native-spotlight-search",
1917
+ "react-native-sqlite-2",
1918
+ "react-native-sqlite-storage",
1919
+ "react-native-ssl-manager",
1920
+ "react-native-ssl-public-key-pinning",
1921
+ "react-native-stallion",
1922
+ "react-native-star-io10",
1923
+ "react-native-store-age-signals-native-modules",
1924
+ "react-native-store-review",
1925
+ "react-native-svg",
1926
+ "react-native-system-bars",
1927
+ "react-native-system-navigation-bar",
1928
+ "react-native-system-setting",
1929
+ "react-native-tableview",
1930
+ "react-native-tcp",
1931
+ "react-native-tcp-socket",
1932
+ "react-native-teleport",
1933
+ "react-native-tenjin",
1934
+ "react-native-testfairy",
1935
+ "react-native-text-input-mask",
1936
+ "react-native-text-size",
1937
+ "react-native-theme-switch-animation",
1938
+ "react-native-theoplayer",
1939
+ "react-native-thermal-receipt-printer",
1940
+ "react-native-tiktok",
1941
+ "react-native-tiktok-business-sdk",
1942
+ "react-native-timezone",
1943
+ "react-native-tooltip",
1944
+ "react-native-tor",
1945
+ "react-native-touch-id",
1946
+ "react-native-track-player",
1947
+ "react-native-tracking-transparency",
1948
+ "react-native-transformer-text-input",
1949
+ "react-native-ttlock",
1950
+ "react-native-tts",
1951
+ "react-native-tuner-engine",
1952
+ "react-native-turbo-haptics",
1953
+ "react-native-turbo-image",
1954
+ "react-native-turbo-lnd",
1955
+ "react-native-turbo-mock-location-detector",
1956
+ "react-native-turbo-preferences",
1957
+ "react-native-twilio-video-webrtc",
1958
+ "react-native-udp",
1959
+ "react-native-ui-lib",
1960
+ "react-native-uitextview",
1961
+ "react-native-ulid-jsi",
1962
+ "react-native-unistyles",
1963
+ "react-native-update",
1964
+ "react-native-urovo",
1965
+ "react-native-ux-cam",
1966
+ "react-native-variable-blur",
1967
+ "react-native-vector-icons",
1968
+ "react-native-version-check",
1969
+ "react-native-version-info",
1970
+ "react-native-version-number",
1971
+ "react-native-video",
1972
+ "react-native-video-cache",
1973
+ "react-native-video-duration",
1974
+ "react-native-video-processing",
1975
+ "react-native-video-provider",
1976
+ "react-native-video-trim",
1977
+ "react-native-videoeditorsdk",
1978
+ "react-native-view-pdf",
1979
+ "react-native-view-recorder",
1980
+ "react-native-view-shot",
1981
+ "react-native-vision-camera",
1982
+ "react-native-vision-camera-barcode-scanner",
1983
+ "react-native-vision-camera-face-detector",
1984
+ "react-native-vision-camera-image-labeler",
1985
+ "react-native-vision-camera-location",
1986
+ "react-native-vision-camera-resizer",
1987
+ "react-native-vision-camera-text-recognition",
1988
+ "react-native-vision-camera-worklets",
1989
+ "react-native-vlc-media-player",
1990
+ "react-native-voip-push-notification",
1991
+ "react-native-volume-manager",
1992
+ "react-native-vosk",
1993
+ "react-native-wallet-manager",
1994
+ "react-native-wallet-pass",
1995
+ "react-native-watch-connectivity",
1996
+ "react-native-wear-connectivity",
1997
+ "react-native-web-serial-api",
1998
+ "react-native-webgpu",
1999
+ "react-native-webp-converter",
2000
+ "react-native-webp-format",
2001
+ "react-native-webrtc",
2002
+ "react-native-webview",
2003
+ "react-native-wechat-lib",
2004
+ "react-native-wheel-pick",
2005
+ "react-native-wheel-picker-android",
2006
+ "react-native-whip-whep",
2007
+ "react-native-widget-picker",
2008
+ "react-native-widgetkit",
2009
+ "react-native-wifi-p2p",
2010
+ "react-native-wifi-reborn",
2011
+ "react-native-window-view",
2012
+ "react-native-windows",
2013
+ "react-native-windows-hello",
2014
+ "react-native-wordpress-editor",
2015
+ "react-native-worklets",
2016
+ "react-native-worklets-core",
2017
+ "react-native-xaml",
2018
+ "react-native-xxhash",
2019
+ "react-native-youtube",
2020
+ "react-native-zeroconf",
2021
+ "react-native-zip-archive",
2022
+ "realm",
2023
+ "rive-react-native",
2024
+ "rn-apple-healthkit",
2025
+ "rn-card-scanner",
2026
+ "rn-date-format",
2027
+ "rn-fade-wrapper",
2028
+ "rn-fetch-blob",
2029
+ "rn-mlkit-ocr",
2030
+ "rn-qr-generator",
2031
+ "rn-secure-storage",
2032
+ "rn-watch-connect",
2033
+ "rn-zendesk",
2034
+ "rollbar-react-native",
2035
+ "scandit-react-native-datacapture-barcode",
2036
+ "scandit-react-native-datacapture-core",
2037
+ "scandit-react-native-datacapture-id",
2038
+ "scandit-react-native-datacapture-label",
2039
+ "scandit-react-native-datacapture-label-text",
2040
+ "scandit-react-native-datacapture-parser",
2041
+ "sift-react-native",
2042
+ "sp-react-native-in-app-updates",
2043
+ "stream-chat-expo",
2044
+ "stream-chat-react-native",
2045
+ "swiftui-react-native",
2046
+ "uws-react-native",
2047
+ "vision-camera-cropper",
2048
+ "vision-camera-dynamsoft-document-normalizer",
2049
+ "vision-camera-ocr-plugin",
2050
+ "vision-camera-zxing",
2051
+ "whisper.rn"
2052
+ ];
2053
+ var NATIVE_RUNTIME_PACKAGE_NAMES = [
2054
+ ...NATIVE_STUB_PACKAGE_NAMES,
2055
+ ...LIGHT_NATIVE_PACKAGE_NAMES,
2056
+ "@ammarahmed/react-native-background-fetch",
2057
+ "@bsky.app/react-native-uitextview",
2058
+ "@bsky.app/video",
2059
+ "@datadog/mobile-react-native-webview",
2060
+ "@haileyok/bluesky-video",
2061
+ "@react-native-vector-icons/get-image",
2062
+ "@react-navigation/native",
2063
+ "@tamagui/native-registry",
2064
+ "@uniswap/ethers-rs-mobile",
2065
+ "@valora/react-native-keychain",
2066
+ "expo-router",
2067
+ "react-native-app-control",
2068
+ "react-native-blue-crypto",
2069
+ "react-native-nitro-base64",
2070
+ "react-native-nitro-gzip",
2071
+ "react-native-sectioned-slider"
2072
+ ];
2073
+
2074
+ // ../peach-compat/src/wrapper-real-packages.ts
2075
+ var SOOTSIM_COMPAT_WRAPPER_REAL_PACKAGES = {
2076
+ expoUiConfirmationDialog: {
2077
+ specifier: "@peach-internal/expo-ui-confirmation-dialog",
2078
+ packageName: "@expo/ui/src/swift-ui/ConfirmationDialog/index.tsx"
2079
+ },
2080
+ expoUiShareLink: {
2081
+ specifier: "@peach-internal/expo-ui-share-link",
2082
+ packageName: "@expo/ui/src/swift-ui/ShareLink/index.tsx"
2083
+ },
2084
+ expoUiNamespace: {
2085
+ specifier: "@peach-internal/expo-ui-namespace",
2086
+ packageName: "@expo/ui/src/swift-ui/Namespace.tsx"
2087
+ },
2088
+ expoUiHost: {
2089
+ specifier: "@peach-internal/expo-ui-host",
2090
+ packageName: "@expo/ui/src/swift-ui/Host/index.tsx"
2091
+ },
2092
+ expoUiBottomSheet: {
2093
+ specifier: "@peach-internal/expo-ui-bottom-sheet",
2094
+ packageName: "@expo/ui/src/swift-ui/BottomSheet/index.tsx"
2095
+ },
2096
+ expoUiTabView: {
2097
+ specifier: "@peach-internal/expo-ui-tab-view",
2098
+ packageName: "@expo/ui/src/swift-ui/TabView/index.tsx"
2099
+ },
2100
+ expoUiForm: {
2101
+ specifier: "@peach-internal/expo-ui-form",
2102
+ packageName: "@expo/ui/src/swift-ui/Form/index.tsx"
2103
+ },
2104
+ expoUiSection: {
2105
+ specifier: "@peach-internal/expo-ui-section",
2106
+ packageName: "@expo/ui/src/swift-ui/Section/index.tsx"
2107
+ },
2108
+ expoUiAccessoryWidgetBackground: {
2109
+ specifier: "@peach-internal/expo-ui-accessory-widget-background",
2110
+ packageName: "@expo/ui/src/swift-ui/AccessoryWidgetBackground/index.tsx"
2111
+ },
2112
+ expoUiGlassEffectContainer: {
2113
+ specifier: "@peach-internal/expo-ui-glass-effect-container",
2114
+ packageName: "@expo/ui/src/swift-ui/GlassEffectContainer/index.tsx"
2115
+ },
2116
+ expoUiContentUnavailableView: {
2117
+ specifier: "@peach-internal/expo-ui-content-unavailable-view",
2118
+ packageName: "@expo/ui/src/swift-ui/ContentUnavailableView/index.tsx"
2119
+ },
2120
+ expoUiColorPicker: {
2121
+ specifier: "@peach-internal/expo-ui-color-picker",
2122
+ packageName: "@expo/ui/src/swift-ui/ColorPicker/index.tsx"
2123
+ },
2124
+ expoUiProgressView: {
2125
+ specifier: "@peach-internal/expo-ui-progress-view",
2126
+ packageName: "@expo/ui/src/swift-ui/ProgressView/index.tsx"
2127
+ },
2128
+ expoUiToggle: {
2129
+ specifier: "@peach-internal/expo-ui-toggle",
2130
+ packageName: "@expo/ui/src/swift-ui/Toggle/index.tsx"
2131
+ },
2132
+ expoUiPicker: {
2133
+ specifier: "@peach-internal/expo-ui-picker",
2134
+ packageName: "@expo/ui/src/swift-ui/Picker/index.tsx"
2135
+ },
2136
+ expoUiDivider: {
2137
+ specifier: "@peach-internal/expo-ui-divider",
2138
+ packageName: "@expo/ui/src/swift-ui/Divider/index.tsx"
2139
+ },
2140
+ expoUiText: {
2141
+ specifier: "@peach-internal/expo-ui-text",
2142
+ packageName: "@expo/ui/src/swift-ui/Text/index.tsx"
2143
+ },
2144
+ expoUiMenu: {
2145
+ specifier: "@peach-internal/expo-ui-menu",
2146
+ packageName: "@expo/ui/src/swift-ui/Menu/index.tsx"
2147
+ },
2148
+ expoUiImage: {
2149
+ specifier: "@peach-internal/expo-ui-image",
2150
+ packageName: "@expo/ui/src/swift-ui/Image/index.tsx"
2151
+ },
2152
+ expoUiAlert: {
2153
+ specifier: "@peach-internal/expo-ui-alert",
2154
+ packageName: "@expo/ui/src/swift-ui/Alert/index.tsx"
2155
+ },
2156
+ expoUiPopover: {
2157
+ specifier: "@peach-internal/expo-ui-popover",
2158
+ packageName: "@expo/ui/src/swift-ui/Popover/index.tsx"
2159
+ },
2160
+ expoUiRNHostView: {
2161
+ specifier: "@peach-internal/expo-ui-rnhost-view",
2162
+ packageName: "@expo/ui/src/swift-ui/RNHostView.tsx"
2163
+ },
2164
+ expoUiOverlay: {
2165
+ specifier: "@peach-internal/expo-ui-overlay",
2166
+ packageName: "@expo/ui/src/swift-ui/Overlay/index.tsx"
2167
+ },
2168
+ expoUiBackground: {
2169
+ specifier: "@peach-internal/expo-ui-background",
2170
+ packageName: "@expo/ui/src/swift-ui/Background/index.tsx"
2171
+ },
2172
+ expoUiMask: {
2173
+ specifier: "@peach-internal/expo-ui-mask",
2174
+ packageName: "@expo/ui/src/swift-ui/Mask/index.tsx"
2175
+ },
2176
+ expoUiShapes: {
2177
+ specifier: "@peach-internal/expo-ui-shapes",
2178
+ packageName: "@expo/ui/src/swift-ui/Shapes/index.tsx"
2179
+ },
2180
+ expoUiControlGroup: {
2181
+ specifier: "@peach-internal/expo-ui-control-group",
2182
+ packageName: "@expo/ui/src/swift-ui/ControlGroup/index.tsx"
2183
+ },
2184
+ expoUiScrollView: {
2185
+ specifier: "@peach-internal/expo-ui-scroll-view",
2186
+ packageName: "@expo/ui/src/swift-ui/ScrollView/index.tsx"
2187
+ },
2188
+ expoUiGrid: {
2189
+ specifier: "@peach-internal/expo-ui-grid",
2190
+ packageName: "@expo/ui/src/swift-ui/Grid/index.tsx"
2191
+ },
2192
+ expoUiGroup: {
2193
+ specifier: "@peach-internal/expo-ui-group",
2194
+ packageName: "@expo/ui/src/swift-ui/Group/index.tsx"
2195
+ },
2196
+ expoUiSpacer: {
2197
+ specifier: "@peach-internal/expo-ui-spacer",
2198
+ packageName: "@expo/ui/src/swift-ui/Spacer/index.tsx"
2199
+ },
2200
+ expoUiLazyHStack: {
2201
+ specifier: "@peach-internal/expo-ui-lazy-hstack",
2202
+ packageName: "@expo/ui/src/swift-ui/LazyHStack/index.tsx"
2203
+ },
2204
+ expoUiLazyVStack: {
2205
+ specifier: "@peach-internal/expo-ui-lazy-vstack",
2206
+ packageName: "@expo/ui/src/swift-ui/LazyVStack/index.tsx"
2207
+ },
2208
+ expoUiHStack: {
2209
+ specifier: "@peach-internal/expo-ui-hstack",
2210
+ packageName: "@expo/ui/src/swift-ui/HStack/index.tsx"
2211
+ },
2212
+ expoUiVStack: {
2213
+ specifier: "@peach-internal/expo-ui-vstack",
2214
+ packageName: "@expo/ui/src/swift-ui/VStack/index.tsx"
2215
+ },
2216
+ expoUiZStack: {
2217
+ specifier: "@peach-internal/expo-ui-zstack",
2218
+ packageName: "@expo/ui/src/swift-ui/ZStack/index.tsx"
2219
+ },
2220
+ expoUiButton: {
2221
+ specifier: "@peach-internal/expo-ui-button",
2222
+ packageName: "@expo/ui/src/swift-ui/Button/index.tsx"
2223
+ },
2224
+ expoUiDatePicker: {
2225
+ specifier: "@peach-internal/expo-ui-date-picker",
2226
+ packageName: "@expo/ui/src/swift-ui/DatePicker/index.tsx"
2227
+ },
2228
+ expoUiSlider: {
2229
+ specifier: "@peach-internal/expo-ui-slider",
2230
+ packageName: "@expo/ui/src/swift-ui/Slider/index.tsx"
2231
+ },
2232
+ expoUiStepper: {
2233
+ specifier: "@peach-internal/expo-ui-stepper",
2234
+ packageName: "@expo/ui/src/swift-ui/Stepper/index.tsx"
2235
+ },
2236
+ expoUiLink: {
2237
+ specifier: "@peach-internal/expo-ui-link",
2238
+ packageName: "@expo/ui/src/swift-ui/Link/index.tsx"
2239
+ },
2240
+ expoUiAnimationConstants: {
2241
+ specifier: "@peach-internal/expo-ui-animation-constants",
2242
+ packageName: "@expo/ui/build/swift-ui/modifiers/animation/constants.js"
2243
+ },
2244
+ expoUiWithAnimation: {
2245
+ specifier: "@peach-internal/expo-ui-with-animation",
2246
+ packageName: "@expo/ui/build/swift-ui/withAnimation.js"
2247
+ },
2248
+ expoUiNativeState: {
2249
+ specifier: "@peach-internal/expo-ui-native-state",
2250
+ packageName: "@expo/ui/build/State/index.js"
2251
+ },
2252
+ expoUiSyncToggle: {
2253
+ specifier: "@peach-internal/expo-ui-sync-toggle",
2254
+ packageName: "@expo/ui/build/swift-ui/SyncToggle/index.js"
2255
+ },
2256
+ expoUiTextField: {
2257
+ specifier: "@peach-internal/expo-ui-text-field",
2258
+ packageName: "@expo/ui/src/swift-ui/TextField/index.tsx"
2259
+ },
2260
+ expoUiSecureField: {
2261
+ specifier: "@peach-internal/expo-ui-secure-field",
2262
+ packageName: "@expo/ui/src/swift-ui/SecureField/index.tsx"
2263
+ },
2264
+ expoUiArrangementView: {
2265
+ specifier: "@peach-internal/expo-ui-arrangement-view",
2266
+ packageName: "@expo/ui/src/swift-ui/ArrangementView/index.tsx"
2267
+ },
2268
+ expoUiLazyHStackForEach: {
2269
+ specifier: "@peach-internal/expo-ui-lazy-hstack-for-each",
2270
+ packageName: "@expo/ui/src/swift-ui/LazyHStack/index.tsx"
2271
+ },
2272
+ expoUiLazyVStackForEach: {
2273
+ specifier: "@peach-internal/expo-ui-lazy-vstack-for-each",
2274
+ packageName: "@expo/ui/src/swift-ui/LazyVStack/index.tsx"
2275
+ },
2276
+ expoUiNavigationDestination: {
2277
+ specifier: "@peach-internal/expo-ui-navigation-destination",
2278
+ packageName: "@expo/ui/src/swift-ui/NavigationDestination/index.tsx"
2279
+ },
2280
+ expoUiNavigationLink: {
2281
+ specifier: "@peach-internal/expo-ui-navigation-link",
2282
+ packageName: "@expo/ui/src/swift-ui/NavigationLink/index.tsx"
2283
+ },
2284
+ expoUiNavigationStack: {
2285
+ specifier: "@peach-internal/expo-ui-navigation-stack",
2286
+ packageName: "@expo/ui/src/swift-ui/NavigationStack/index.tsx"
2287
+ },
2288
+ expoUiNavigationSplitView: {
2289
+ specifier: "@peach-internal/expo-ui-navigation-split-view",
2290
+ packageName: "@expo/ui/src/swift-ui/NavigationSplitView/index.tsx"
2291
+ },
2292
+ expoUiToolbar: {
2293
+ specifier: "@peach-internal/expo-ui-toolbar",
2294
+ packageName: "@expo/ui/src/swift-ui/Toolbar/index.tsx"
2295
+ },
2296
+ expoUiList: {
2297
+ specifier: "@peach-internal/expo-ui-list",
2298
+ packageName: "@expo/ui/src/swift-ui/List/index.tsx"
2299
+ },
2300
+ expoUiDisclosureGroup: {
2301
+ specifier: "@peach-internal/expo-ui-disclosure-group",
2302
+ packageName: "@expo/ui/src/swift-ui/DisclosureGroup/index.tsx"
2303
+ },
2304
+ expoUiGauge: {
2305
+ specifier: "@peach-internal/expo-ui-gauge",
2306
+ packageName: "@expo/ui/src/swift-ui/Gauge/index.tsx"
2307
+ },
2308
+ expoUiLabeledContent: {
2309
+ specifier: "@peach-internal/expo-ui-labeled-content",
2310
+ packageName: "@expo/ui/src/swift-ui/LabeledContent/index.tsx"
2311
+ },
2312
+ expoUiLabel: {
2313
+ specifier: "@peach-internal/expo-ui-label",
2314
+ packageName: "@expo/ui/src/swift-ui/Label/index.tsx"
2315
+ },
2316
+ expoCodedError: {
2317
+ specifier: "@peach-internal/expo-coded-error",
2318
+ packageName: "expo-modules-core/build/errors/CodedError.js"
2319
+ },
2320
+ expoUnavailabilityError: {
2321
+ specifier: "@peach-internal/expo-unavailability-error",
2322
+ packageName: "expo-modules-core/build/errors/UnavailabilityError.js"
2323
+ },
2324
+ expoPlatform: {
2325
+ specifier: "@peach-internal/expo-platform",
2326
+ packageName: "expo-modules-core/build/Platform.js"
2327
+ },
2328
+ expoSharedObjectHook: {
2329
+ specifier: "@peach-internal/expo-shared-object-hook",
2330
+ packageName: "expo-modules-core/build/hooks/useReleasingSharedObject.js"
2331
+ },
2332
+ expoSharedObjectLifecycleHook: {
2333
+ specifier: "@peach-internal/expo-shared-object-lifecycle-hook",
2334
+ packageName: "expo-modules-core/build/hooks/useReleasingSharedObjectWithLifecycle.js"
2335
+ },
2336
+ expoApplication: {
2337
+ specifier: "@sootsim-internal/expo-application-real",
2338
+ packageName: "expo-application"
2339
+ },
2340
+ expoBackgroundFetch: {
2341
+ specifier: "@sootsim-internal/expo-background-fetch-real",
2342
+ packageName: "expo-background-fetch"
2343
+ },
2344
+ expoBackgroundTask: {
2345
+ specifier: "@sootsim-internal/expo-background-task-real",
2346
+ packageName: "expo-background-task"
2347
+ },
2348
+ expoSensors: {
2349
+ specifier: "@sootsim-internal/expo-sensors-real",
2350
+ packageName: "expo-sensors"
2351
+ },
2352
+ expoBattery: {
2353
+ specifier: "@sootsim-internal/expo-battery-real",
2354
+ packageName: "expo-battery"
2355
+ },
2356
+ expoBrightness: {
2357
+ specifier: "@sootsim-internal/expo-brightness-real",
2358
+ packageName: "expo-brightness"
2359
+ },
2360
+ expoConstants: {
2361
+ specifier: "@sootsim-internal/expo-constants-real",
2362
+ packageName: "expo-constants"
2363
+ },
2364
+ expoCalendar: {
2365
+ specifier: "@sootsim-internal/expo-calendar-real",
2366
+ packageName: "expo-calendar"
2367
+ },
2368
+ expoCalendarLegacy: {
2369
+ specifier: "@sootsim-internal/expo-calendar-legacy-real",
2370
+ // the package's own `./legacy` export, not a hardcoded `src/legacy/...`
2371
+ // path — this follows wherever upstream points the subpath, in every
2372
+ // version that has one. versions without it never import the legacy
2373
+ // stub, so the alias just goes unused there.
2374
+ packageName: "expo-calendar/legacy"
2375
+ },
2376
+ expoCellular: {
2377
+ specifier: "@sootsim-internal/expo-cellular-real",
2378
+ packageName: "expo-cellular"
2379
+ },
2380
+ expoContactsContacts: {
2381
+ specifier: "@sootsim-internal/expo-contacts-contacts",
2382
+ // sdk 57 split Contacts.ts into src/index.ts + legacy/ + next/
2383
+ packageName: "expo-contacts/src/index.ts"
2384
+ },
2385
+ expoContactsContactAccessButton: {
2386
+ specifier: "@sootsim-internal/expo-contacts-contact-access-button",
2387
+ packageName: "expo-contacts/src/ContactAccessButton.tsx"
2388
+ },
2389
+ expoContactsLegacy: {
2390
+ specifier: "@sootsim-internal/expo-contacts-legacy-real",
2391
+ // same as expoCalendarLegacy: the public `./legacy` export, not a src path.
2392
+ packageName: "expo-contacts/legacy"
2393
+ },
2394
+ expoInsights: {
2395
+ specifier: "@sootsim-internal/expo-insights-real",
2396
+ packageName: "expo-insights"
2397
+ },
2398
+ expoIntentLauncher: {
2399
+ specifier: "@sootsim-internal/expo-intent-launcher-real",
2400
+ packageName: "expo-intent-launcher"
2401
+ },
2402
+ expoMailComposer: {
2403
+ specifier: "@sootsim-internal/expo-mail-composer-real",
2404
+ packageName: "expo-mail-composer"
2405
+ },
2406
+ expoNetwork: {
2407
+ specifier: "@sootsim-internal/expo-network-real",
2408
+ packageName: "expo-network"
2409
+ },
2410
+ expoPrint: {
2411
+ specifier: "@sootsim-internal/expo-print-real",
2412
+ packageName: "expo-print"
2413
+ },
2414
+ expoScreenCapture: {
2415
+ specifier: "@sootsim-internal/expo-screen-capture-real",
2416
+ packageName: "expo-screen-capture"
2417
+ },
2418
+ expoScreenOrientation: {
2419
+ specifier: "@sootsim-internal/expo-screen-orientation-real",
2420
+ packageName: "expo-screen-orientation"
2421
+ },
2422
+ expoQuickActions: {
2423
+ specifier: "@sootsim-internal/expo-quick-actions-real",
2424
+ packageName: "expo-quick-actions/build/index.js"
2425
+ },
2426
+ expoSecureStore: {
2427
+ specifier: "@sootsim-internal/expo-secure-store-real",
2428
+ packageName: "expo-secure-store"
2429
+ },
2430
+ expoSplashScreen: {
2431
+ specifier: "@sootsim-internal/expo-splash-screen-real",
2432
+ packageName: "expo-splash-screen"
2433
+ },
2434
+ expoSqlite: {
2435
+ specifier: "@sootsim-internal/expo-sqlite-real",
2436
+ packageName: "expo-sqlite"
2437
+ },
2438
+ expoLinearGradient: {
2439
+ specifier: "@sootsim-internal/expo-linear-gradient-real",
2440
+ packageName: "expo-linear-gradient"
2441
+ },
2442
+ expoBlur: {
2443
+ specifier: "@sootsim-internal/expo-blur-real",
2444
+ packageName: "expo-blur"
2445
+ },
2446
+ expoSymbols: {
2447
+ specifier: "@sootsim-internal/expo-symbols-real",
2448
+ packageName: "expo-symbols"
2449
+ },
2450
+ communityCheckbox: {
2451
+ specifier: "@sootsim-internal/react-native-community-checkbox-real",
2452
+ packageName: "@react-native-community/checkbox/dist/js/CheckBox.ios.js"
2453
+ },
2454
+ reactNativeMaskedView: {
2455
+ specifier: "@sootsim-internal/masked-view-real",
2456
+ packageName: "@react-native-masked-view/masked-view"
2457
+ },
2458
+ expoSharing: {
2459
+ specifier: "@sootsim-internal/expo-sharing-real",
2460
+ packageName: "expo-sharing"
2461
+ },
2462
+ expoSms: {
2463
+ specifier: "@sootsim-internal/expo-sms-real",
2464
+ packageName: "expo-sms"
2465
+ },
2466
+ expoSpeech: {
2467
+ specifier: "@sootsim-internal/expo-speech-real",
2468
+ packageName: "expo-speech"
2469
+ },
2470
+ expoStoreReview: {
2471
+ specifier: "@sootsim-internal/expo-store-review-real",
2472
+ packageName: "expo-store-review"
2473
+ },
2474
+ expoTaskManager: {
2475
+ specifier: "@sootsim-internal/expo-task-manager-real",
2476
+ packageName: "expo-task-manager"
2477
+ },
2478
+ expoTrackingTransparency: {
2479
+ specifier: "@sootsim-internal/expo-tracking-transparency-real",
2480
+ packageName: "expo-tracking-transparency"
2481
+ },
2482
+ expoVideoThumbnails: {
2483
+ specifier: "@sootsim-internal/expo-video-thumbnails-real",
2484
+ packageName: "expo-video-thumbnails"
2485
+ },
2486
+ googleSignin: {
2487
+ specifier: "@sootsim-internal/react-native-google-signin-real",
2488
+ packageName: "@react-native-google-signin/google-signin"
2489
+ },
2490
+ reactNativeHapticFeedback: {
2491
+ specifier: "@sootsim-internal/react-native-haptic-feedback-real",
2492
+ packageName: "react-native-haptic-feedback"
2493
+ },
2494
+ reactNativeSegmentedControl: {
2495
+ specifier: "@sootsim-internal/react-native-segmented-control-real",
2496
+ packageName: "@react-native-segmented-control/segmented-control/js/SegmentedControl.ios.js"
2497
+ },
2498
+ reactNativeUitextview: {
2499
+ specifier: "@sootsim-internal/react-native-uitextview-real",
2500
+ packageName: "react-native-uitextview"
2501
+ },
2502
+ reactNativeWorkletsBundleMode: {
2503
+ specifier: "@sootsim-internal/react-native-worklets-bundle-mode-real",
2504
+ packageName: "react-native-worklets/lib/module/debug/bundleMode.native.js"
2505
+ },
2506
+ reactNativeWorkletsFunction: {
2507
+ specifier: "@peach-internal/react-native-worklets-function-real",
2508
+ packageName: "react-native-worklets/lib/module/workletFunction.js"
2509
+ },
2510
+ reactNativeWorkletsRunLoop: {
2511
+ specifier: "@sootsim-internal/react-native-worklets-run-loop-real",
2512
+ packageName: "react-native-worklets/lib/module/runLoop/workletRuntime/index.js"
2513
+ }
2514
+ };
2515
+ var PEACH_REACT_NATIVE_UPSTREAM_MODULES = {
2516
+ reactNativeBatchedBridge: {
2517
+ specifier: "@peach-internal/react-native/BatchedBridge/BatchedBridge",
2518
+ packageName: "react-native/Libraries/BatchedBridge/BatchedBridge.js"
2519
+ },
2520
+ reactNativeStyleAttributes: {
2521
+ specifier: "@peach-internal/react-native/Components/View/ReactNativeStyleAttributes",
2522
+ packageName: "react-native/Libraries/Components/View/ReactNativeStyleAttributes.js"
2523
+ },
2524
+ reactNativeProcessColor: {
2525
+ specifier: "@peach-internal/react-native/StyleSheet/processColor",
2526
+ packageName: "react-native/Libraries/StyleSheet/processColor.js"
2527
+ },
2528
+ reactNativeFontVariationSettings: {
2529
+ specifier: "@peach-internal/react-native-font-variation-settings",
2530
+ packageName: "react-native/Libraries/StyleSheet/processFontVariationSettings.js"
2531
+ }
2532
+ };
2533
+ var PEACH_UPSTREAM_MODULES = {
2534
+ ...SOOTSIM_COMPAT_WRAPPER_REAL_PACKAGES,
2535
+ ...PEACH_REACT_NATIVE_UPSTREAM_MODULES
2536
+ };
2537
+
2538
+ // ../peach-compat/src/stub-manifest.ts
2539
+ var COMPAT_STUBS = {
2540
+ reactNativeScreens: {
2541
+ specifier: "react-native-screens",
2542
+ stubFile: "react-native-screens.ts",
2543
+ runtimeTier: "lazy",
2544
+ buildResolvers: ["vite", "dep-prebundle"]
2545
+ },
2546
+ reactNativeMaskedView: {
2547
+ specifier: "@react-native-masked-view/masked-view",
2548
+ stubFile: "masked-view.ts",
2549
+ runtimeTier: "none",
2550
+ buildResolvers: ["vite"]
2551
+ },
2552
+ reactNativeCommunityMaskedView: {
2553
+ specifier: "@react-native-community/masked-view",
2554
+ stubFile: "masked-view.ts",
2555
+ runtimeTier: "none",
2556
+ buildResolvers: ["vite"]
2557
+ },
2558
+ reactNativeTeleport: {
2559
+ specifier: "react-native-teleport",
2560
+ stubFile: "react-native-teleport.tsx",
2561
+ runtimeTier: "lazy",
2562
+ buildResolvers: ["vite", "dep-prebundle"]
2563
+ },
2564
+ reactNativeIosContextMenu: {
2565
+ specifier: "react-native-ios-context-menu",
2566
+ stubFile: "react-native-ios-context-menu.ts",
2567
+ runtimeTier: "core",
2568
+ buildResolvers: ["vite"]
2569
+ },
2570
+ reactNativeIosUtilities: {
2571
+ specifier: "react-native-ios-utilities",
2572
+ stubFile: "react-native-ios-utilities.ts",
2573
+ runtimeTier: "core",
2574
+ buildResolvers: ["vite"]
2575
+ },
2576
+ expoSplashScreen: {
2577
+ specifier: "expo-splash-screen",
2578
+ stubFile: "expo-splash-screen.ts",
2579
+ runtimeTier: "none",
2580
+ buildResolvers: ["vite", "dep-prebundle"]
2581
+ },
2582
+ reactNativeLaunchArguments: {
2583
+ specifier: "react-native-launch-arguments",
2584
+ stubFile: "react-native-launch-arguments.ts",
2585
+ runtimeTier: "core",
2586
+ buildResolvers: ["vite"]
2587
+ },
2588
+ expoWinterFormData: {
2589
+ specifier: "expo/build/winter/FormData",
2590
+ stubFile: "expo-winter-formdata.ts",
2591
+ runtimeTier: "none",
2592
+ buildResolvers: ["vite"]
2593
+ },
2594
+ expoWinterFetch: {
2595
+ specifier: "expo/build/winter/fetch/index",
2596
+ stubFile: "expo-winter-fetch.ts",
2597
+ runtimeTier: "none",
2598
+ buildResolvers: ["vite"]
2599
+ },
2600
+ expoConstants: {
2601
+ specifier: "expo-constants",
2602
+ stubFile: "expo-constants.ts",
2603
+ runtimeTier: "none",
2604
+ buildResolvers: ["vite", "dep-prebundle"]
2605
+ },
2606
+ expoLinearGradient: {
2607
+ specifier: "expo-linear-gradient",
2608
+ stubFile: "expo-linear-gradient.ts",
2609
+ runtimeTier: "none",
2610
+ buildResolvers: ["vite", "dep-prebundle"]
2611
+ },
2612
+ expoBlur: {
2613
+ specifier: "expo-blur",
2614
+ stubFile: "expo-blur.ts",
2615
+ runtimeTier: "none",
2616
+ buildResolvers: ["vite", "dep-prebundle"]
2617
+ },
2618
+ expoLiquidGlassView: {
2619
+ specifier: "expo-liquid-glass-view",
2620
+ stubFile: "expo-liquid-glass-view.ts",
2621
+ runtimeTier: "core",
2622
+ buildResolvers: ["vite", "dep-prebundle"]
2623
+ },
2624
+ expoGlassEffect: {
2625
+ specifier: "expo-glass-effect",
2626
+ stubFile: "expo-glass-effect.ts",
2627
+ runtimeTier: "lazy",
2628
+ buildResolvers: ["vite", "dep-prebundle"]
2629
+ },
2630
+ expoSymbols: {
2631
+ specifier: "expo-symbols",
2632
+ stubFile: "expo-symbols.ts",
2633
+ runtimeTier: "none",
2634
+ buildResolvers: ["vite", "dep-prebundle"]
2635
+ },
2636
+ expoMeshGradient: {
2637
+ specifier: "expo-mesh-gradient",
2638
+ stubFile: "expo-mesh-gradient.ts",
2639
+ runtimeTier: "lazy",
2640
+ buildResolvers: ["vite", "dep-prebundle"]
2641
+ },
2642
+ reactNativeBottomTabs: {
2643
+ specifier: "react-native-bottom-tabs",
2644
+ stubFile: "react-native-bottom-tabs.ts",
2645
+ runtimeTier: "lazy",
2646
+ buildResolvers: ["vite", "dep-prebundle"]
2647
+ },
2648
+ callstackReactNativeBottomTabs: {
2649
+ specifier: "@callstack/react-native-bottom-tabs",
2650
+ stubFile: "react-native-bottom-tabs.ts",
2651
+ runtimeTier: "lazy",
2652
+ buildResolvers: ["vite", "dep-prebundle"]
2653
+ },
2654
+ expoUiSwiftUi: {
2655
+ specifier: "@expo/ui/swift-ui",
2656
+ stubFile: "expo-ui.ts",
2657
+ runtimeTier: "lazy",
2658
+ buildResolvers: ["vite"]
2659
+ },
2660
+ expoUiCommunityMenu: {
2661
+ specifier: "@expo/ui/community/menu",
2662
+ stubFile: "expo-ui-menu.ts",
2663
+ runtimeTier: "lazy",
2664
+ buildResolvers: ["vite"]
2665
+ },
2666
+ expoModulesCore: {
2667
+ specifier: "expo-modules-core",
2668
+ stubFile: "expo-modules-core-package.ts",
2669
+ runtimeTier: "lazy",
2670
+ buildResolvers: ["vite"]
2671
+ },
2672
+ reactNativeWorklets: {
2673
+ specifier: "react-native-worklets",
2674
+ stubFile: "react-native-worklets-pkg/index.ts",
2675
+ runtimeTier: "none",
2676
+ buildResolvers: ["vite", "dep-prebundle"]
2677
+ },
2678
+ reactNativeWorkletsNative: {
2679
+ specifier: "react-native-worklets/specs/NativeWorkletsModule",
2680
+ stubFile: "react-native-worklets-native.ts",
2681
+ runtimeTier: "lazy",
2682
+ buildResolvers: ["vite"]
2683
+ },
2684
+ reactNativeWorkletsPackageJson: {
2685
+ specifier: "react-native-worklets/package.json",
2686
+ stubFile: "react-native-worklets-pkg/package.json",
2687
+ runtimeTier: "none",
2688
+ buildResolvers: ["vite"]
2689
+ },
2690
+ reactNativePdf: {
2691
+ specifier: "react-native-pdf",
2692
+ stubFile: "react-native-pdf.ts",
2693
+ runtimeTier: "lazy",
2694
+ buildResolvers: ["vite"]
2695
+ },
2696
+ expoBackgroundFetch: {
2697
+ specifier: "expo-background-fetch",
2698
+ stubFile: "expo-background-fetch.ts",
2699
+ runtimeTier: "none",
2700
+ buildResolvers: ["vite"]
2701
+ },
2702
+ expoBackgroundTask: {
2703
+ specifier: "expo-background-task",
2704
+ stubFile: "expo-background-task.ts",
2705
+ runtimeTier: "none",
2706
+ buildResolvers: ["vite"]
2707
+ },
2708
+ expoSensors: {
2709
+ specifier: "expo-sensors",
2710
+ stubFile: "expo-sensors.ts",
2711
+ runtimeTier: "none",
2712
+ buildResolvers: ["vite"]
2713
+ },
2714
+ expoVideoThumbnails: {
2715
+ specifier: "expo-video-thumbnails",
2716
+ stubFile: "expo-video-thumbnails.ts",
2717
+ runtimeTier: "none",
2718
+ buildResolvers: ["vite"]
2719
+ },
2720
+ googleSignin: {
2721
+ specifier: "@react-native-google-signin/google-signin",
2722
+ stubFile: "react-native-google-signin.ts",
2723
+ runtimeTier: "none",
2724
+ buildResolvers: ["vite", "dep-prebundle"]
2725
+ },
2726
+ reactNativeHapticFeedback: {
2727
+ specifier: "react-native-haptic-feedback",
2728
+ stubFile: "react-native-haptic-feedback.ts",
2729
+ runtimeTier: "none",
2730
+ buildResolvers: ["vite", "dep-prebundle"]
2731
+ },
2732
+ reactNativeSegmentedControl: {
2733
+ specifier: "@react-native-segmented-control/segmented-control",
2734
+ stubFile: "react-native-segmented-control.ts",
2735
+ runtimeTier: "lazy",
2736
+ buildResolvers: ["vite"]
2737
+ },
2738
+ reactNativeUitextview: {
2739
+ specifier: "react-native-uitextview",
2740
+ stubFile: "react-native-uitextview.ts",
2741
+ runtimeTier: "lazy",
2742
+ buildResolvers: ["vite"]
2743
+ },
2744
+ expoBattery: {
2745
+ specifier: "expo-battery",
2746
+ stubFile: "expo-battery.ts",
2747
+ runtimeTier: "none",
2748
+ buildResolvers: ["vite"]
2749
+ },
2750
+ expoBrightness: {
2751
+ specifier: "expo-brightness",
2752
+ stubFile: "expo-brightness.ts",
2753
+ runtimeTier: "none",
2754
+ buildResolvers: ["vite"]
2755
+ },
2756
+ // sdk 57 moved the async calendar surface behind `expo-calendar/legacy`.
2757
+ // the bare-specifier alias is a PREFIX match, so without this longer entry
2758
+ // it rewrites the subpath to `<stubs>/expo-calendar.ts/legacy`. it needs its
2759
+ // own stub too: upstream's root re-exports `legacyWarnings`, where every
2760
+ // async method throws "imported from expo-calendar is deprecated", so
2761
+ // sharing the root stub makes the whole legacy surface throw at call time.
2762
+ expoCalendarLegacy: {
2763
+ specifier: "expo-calendar/legacy",
2764
+ stubFile: "expo-calendar-legacy.ts",
2765
+ runtimeTier: "none",
2766
+ buildResolvers: ["vite"]
2767
+ },
2768
+ expoCalendar: {
2769
+ specifier: "expo-calendar",
2770
+ stubFile: "expo-calendar.ts",
2771
+ runtimeTier: "none",
2772
+ buildResolvers: ["vite"]
2773
+ },
2774
+ expoCellular: {
2775
+ specifier: "expo-cellular",
2776
+ stubFile: "expo-cellular.ts",
2777
+ runtimeTier: "none",
2778
+ buildResolvers: ["vite"]
2779
+ },
2780
+ // same `/legacy` prefix-alias and deprecated-root case as expo-calendar.
2781
+ expoContactsLegacy: {
2782
+ specifier: "expo-contacts/legacy",
2783
+ stubFile: "expo-contacts-legacy.ts",
2784
+ runtimeTier: "none",
2785
+ buildResolvers: ["vite"]
2786
+ },
2787
+ expoContacts: {
2788
+ specifier: "expo-contacts",
2789
+ stubFile: "expo-contacts.ts",
2790
+ runtimeTier: "none",
2791
+ buildResolvers: ["vite"]
2792
+ },
2793
+ expoMailComposer: {
2794
+ specifier: "expo-mail-composer",
2795
+ stubFile: "expo-mail-composer.ts",
2796
+ runtimeTier: "none",
2797
+ buildResolvers: ["vite"]
2798
+ },
2799
+ expoPrint: {
2800
+ specifier: "expo-print",
2801
+ stubFile: "expo-print.ts",
2802
+ runtimeTier: "none",
2803
+ buildResolvers: ["vite"]
2804
+ },
2805
+ expoSecureStore: {
2806
+ specifier: "expo-secure-store",
2807
+ stubFile: "expo-secure-store.ts",
2808
+ runtimeTier: "none",
2809
+ buildResolvers: ["vite", "dep-prebundle"]
2810
+ },
2811
+ expoInsights: {
2812
+ specifier: "expo-insights",
2813
+ stubFile: "expo-insights.ts",
2814
+ runtimeTier: "none",
2815
+ buildResolvers: ["vite"]
2816
+ },
2817
+ expoIntentLauncher: {
2818
+ specifier: "expo-intent-launcher",
2819
+ stubFile: "expo-intent-launcher.ts",
2820
+ runtimeTier: "none",
2821
+ buildResolvers: ["vite"]
2822
+ },
2823
+ expoTaskManager: {
2824
+ specifier: "expo-task-manager",
2825
+ stubFile: "expo-task-manager.ts",
2826
+ runtimeTier: "none",
2827
+ buildResolvers: ["vite"]
2828
+ },
2829
+ expoApplication: {
2830
+ specifier: "expo-application",
2831
+ stubFile: "expo-application.ts",
2832
+ runtimeTier: "none",
2833
+ buildResolvers: ["vite", "dep-prebundle"]
2834
+ },
2835
+ expoNetwork: {
2836
+ specifier: "expo-network",
2837
+ stubFile: "expo-network.ts",
2838
+ runtimeTier: "none",
2839
+ buildResolvers: ["vite"]
2840
+ },
2841
+ expoScreenCapture: {
2842
+ specifier: "expo-screen-capture",
2843
+ stubFile: "expo-screen-capture.ts",
2844
+ runtimeTier: "none",
2845
+ buildResolvers: ["vite"]
2846
+ },
2847
+ expoScreenOrientation: {
2848
+ specifier: "expo-screen-orientation",
2849
+ stubFile: "expo-screen-orientation.ts",
2850
+ runtimeTier: "none",
2851
+ buildResolvers: ["vite"]
2852
+ },
2853
+ expoQuickActions: {
2854
+ specifier: "expo-quick-actions",
2855
+ stubFile: "expo-quick-actions.ts",
2856
+ runtimeTier: "none",
2857
+ buildResolvers: ["vite"]
2858
+ },
2859
+ expoSharing: {
2860
+ specifier: "expo-sharing",
2861
+ stubFile: "expo-sharing.ts",
2862
+ runtimeTier: "none",
2863
+ buildResolvers: ["vite"]
2864
+ },
2865
+ expoSms: {
2866
+ specifier: "expo-sms",
2867
+ stubFile: "expo-sms.ts",
2868
+ runtimeTier: "none",
2869
+ buildResolvers: ["vite"]
2870
+ },
2871
+ expoSqlite: {
2872
+ specifier: "expo-sqlite",
2873
+ stubFile: "expo-sqlite.ts",
2874
+ runtimeTier: "none",
2875
+ buildResolvers: ["vite", "dep-prebundle"]
2876
+ },
2877
+ expoSpeech: {
2878
+ specifier: "expo-speech",
2879
+ stubFile: "expo-speech.ts",
2880
+ runtimeTier: "none",
2881
+ buildResolvers: ["vite"]
2882
+ },
2883
+ expoStoreReview: {
2884
+ specifier: "expo-store-review",
2885
+ stubFile: "expo-store-review.ts",
2886
+ runtimeTier: "none",
2887
+ buildResolvers: ["vite"]
2888
+ },
2889
+ expoTrackingTransparency: {
2890
+ specifier: "expo-tracking-transparency",
2891
+ stubFile: "expo-tracking-transparency.ts",
2892
+ runtimeTier: "none",
2893
+ buildResolvers: ["vite"]
2894
+ },
2895
+ expoShareExtension: {
2896
+ specifier: "expo-share-extension",
2897
+ stubFile: "noop-sdks-extra/expo-share-extension.ts",
2898
+ runtimeTier: "none",
2899
+ buildResolvers: ["vite"]
2900
+ },
2901
+ expoHealthConnect: {
2902
+ specifier: "expo-health-connect",
2903
+ stubFile: "noop-sdks-extra/expo-health-connect.ts",
2904
+ runtimeTier: "none",
2905
+ buildResolvers: ["vite"]
2906
+ },
2907
+ expoInAppUpdates: {
2908
+ specifier: "expo-in-app-updates",
2909
+ stubFile: "noop-sdks-extra/expo-in-app-updates.ts",
2910
+ runtimeTier: "none",
2911
+ buildResolvers: ["vite"]
2912
+ },
2913
+ expoSuperwall: {
2914
+ specifier: "expo-superwall",
2915
+ stubFile: "noop-sdks-extra/expo-superwall.ts",
2916
+ runtimeTier: "none",
2917
+ buildResolvers: ["vite"]
2918
+ },
2919
+ communityCheckbox: {
2920
+ specifier: "@react-native-community/checkbox",
2921
+ stubFile: "react-native-community-checkbox.ts",
2922
+ runtimeTier: "lazy",
2923
+ buildResolvers: ["vite"]
2924
+ },
2925
+ reactNavigationNative: {
2926
+ specifier: "@react-navigation/native",
2927
+ stubFile: "react-navigation-native.tsx",
2928
+ runtimeTier: "none",
2929
+ buildResolvers: ["vite"]
2930
+ }
2931
+ };
2932
+
2933
+ // src/stub-pattern-matcher.ts
2934
+ function extractPackageFromPath(modulePath) {
2935
+ let nodeModulesIndex = modulePath.lastIndexOf("/node_modules/");
2936
+ let prefixLength = "/node_modules/".length;
2937
+ if (nodeModulesIndex === -1) {
2938
+ if (!modulePath.startsWith("node_modules/")) return null;
2939
+ nodeModulesIndex = 0;
2940
+ prefixLength = "node_modules/".length;
2941
+ }
2942
+ return packageNameAt(modulePath, nodeModulesIndex + prefixLength) || null;
2943
+ }
2944
+ function packageNameAt(modulePath, start) {
2945
+ const firstSlash = modulePath.indexOf("/", start);
2946
+ if (modulePath.startsWith("@", start)) {
2947
+ if (firstSlash === -1) return null;
2948
+ const secondSlash = modulePath.indexOf("/", firstSlash + 1);
2949
+ return modulePath.slice(start, secondSlash === -1 ? void 0 : secondSlash);
2950
+ }
2951
+ return modulePath.slice(start, firstSlash === -1 ? void 0 : firstSlash);
2952
+ }
2953
+
2954
+ // src/installed-package-versions.ts
2955
+ function* exists(target) {
2956
+ return (yield { op: "exists", path: target }) === true;
2957
+ }
2958
+ function* realpath(target) {
2959
+ const resolved = yield { op: "realpath", path: target };
2960
+ if (typeof resolved !== "string") throw new Error(`could not resolve ${target}`);
2961
+ return resolved;
2962
+ }
2963
+ function* readManifest(target) {
2964
+ const manifest = yield { op: "manifest", path: target };
2965
+ return typeof manifest === "object" ? manifest : null;
2966
+ }
2967
+ function parseManifest(source) {
2968
+ const manifest = JSON.parse(source);
2969
+ return typeof manifest === "object" && manifest !== null ? manifest : null;
2970
+ }
2971
+ function isMissing(error) {
2972
+ return error instanceof Error && "code" in error && error.code === "ENOENT";
2973
+ }
2974
+ async function answerAsync(step) {
2975
+ if (step.op === "exists")
2976
+ return import_fs.default.promises.access(step.path).then(
2977
+ () => true,
2978
+ () => false
2979
+ );
2980
+ if (step.op === "realpath") return import_fs.default.promises.realpath(step.path);
2981
+ try {
2982
+ return parseManifest(await import_fs.default.promises.readFile(step.path, "utf8"));
2983
+ } catch (error) {
2984
+ if (isMissing(error)) return null;
2985
+ throw error;
2986
+ }
2987
+ }
2988
+ async function runAsync(walk) {
2989
+ for (let step = walk.next(); ; ) {
2990
+ if (step.done) return step.value;
2991
+ step = walk.next(await answerAsync(step.value));
2992
+ }
2993
+ }
2994
+ function createInstalledPackageReader() {
2995
+ const hasModules = /* @__PURE__ */ new Map();
2996
+ const manifests = /* @__PURE__ */ new Map();
2997
+ return function* readInstalledPackage(fromDir, name) {
2998
+ for (let dir = fromDir; ; ) {
2999
+ if (import_path.default.basename(dir) !== "node_modules") {
3000
+ const modules = import_path.default.join(dir, "node_modules");
3001
+ let present = hasModules.get(dir);
3002
+ if (present === void 0) {
3003
+ present = yield* exists(modules);
3004
+ hasModules.set(dir, present);
3005
+ }
3006
+ if (present) {
3007
+ const root = import_path.default.join(modules, name);
3008
+ let installed = manifests.get(root);
3009
+ if (installed === void 0) {
3010
+ const manifest = yield* readManifest(import_path.default.join(root, "package.json"));
3011
+ installed = manifest ? { root, manifest } : null;
3012
+ manifests.set(root, installed);
3013
+ }
3014
+ if (installed) return installed;
3015
+ }
3016
+ }
3017
+ const parent = import_path.default.dirname(dir);
3018
+ if (parent === dir) return null;
3019
+ dir = parent;
3020
+ }
3021
+ };
3022
+ }
3023
+ function* installedVersionsWalk(projectRoot, names) {
3024
+ const readInstalledPackage = createInstalledPackageReader();
3025
+ const versions = {};
3026
+ for (const name of [...names].sort()) {
3027
+ const installed = yield* readInstalledPackage(projectRoot, name);
3028
+ const version = installed && Reflect.get(installed.manifest, "version");
3029
+ if (typeof version === "string" && version.length > 0) versions[name] = version;
3030
+ }
3031
+ return versions;
3032
+ }
3033
+ function* nativePackageVersionsWalk(projectRoot) {
3034
+ const appRoot = yield* realpath(projectRoot);
3035
+ const nativeNames = /* @__PURE__ */ new Set();
3036
+ for (const specifier of [
3037
+ "react-native",
3038
+ ...NATIVE_RUNTIME_PACKAGE_NAMES,
3039
+ ...LAZY_STUB_PATTERNS,
3040
+ ...Object.values(COMPAT_STUBS).map((entry) => entry.specifier)
3041
+ ]) {
3042
+ const name = extractPackageFromPath(`node_modules/${specifier}`);
3043
+ if (name) nativeNames.add(name);
3044
+ }
3045
+ const manifest = yield* readManifest(import_path.default.join(appRoot, "package.json"));
3046
+ if (!manifest) throw new Error("app package.json must contain an object");
3047
+ const readInstalledPackage = createInstalledPackageReader();
3048
+ const pending = [{ root: appRoot, manifest }];
3049
+ const visited = /* @__PURE__ */ new Set();
3050
+ const needed = /* @__PURE__ */ new Set();
3051
+ for (let next = pending.pop(); next; next = pending.pop()) {
3052
+ const root = yield* realpath(next.root);
3053
+ if (visited.has(root)) continue;
3054
+ visited.add(root);
3055
+ const fields = ["dependencies", "optionalDependencies", "peerDependencies"];
3056
+ if (root === appRoot) fields.push("devDependencies");
3057
+ const peers = Reflect.get(next.manifest, "peerDependenciesMeta");
3058
+ for (const field of fields) {
3059
+ const dependencies = Reflect.get(next.manifest, field);
3060
+ if (typeof dependencies !== "object" || dependencies === null) continue;
3061
+ for (const name of Object.keys(dependencies)) {
3062
+ if (field === "peerDependencies" && typeof peers === "object" && peers !== null) {
3063
+ const peer = Reflect.get(peers, name);
3064
+ if (typeof peer === "object" && peer !== null && Reflect.get(peer, "optional"))
3065
+ continue;
3066
+ }
3067
+ const installed = yield* readInstalledPackage(root, name);
3068
+ if (!installed) continue;
3069
+ if (nativeNames.has(name)) needed.add(name);
3070
+ pending.push(installed);
3071
+ }
3072
+ }
3073
+ }
3074
+ return yield* installedVersionsWalk(projectRoot, needed);
3075
+ }
3076
+ function readInstalledNativePackageVersionsAsync(projectRoot) {
3077
+ return runAsync(nativePackageVersionsWalk(projectRoot));
3078
+ }
3079
+
3080
+ // scripts/dev-server-scanner.ts
3081
+ var import_child_process = require("child_process");
3082
+ var import_promises = require("fs/promises");
3083
+ var import_node_fs = require("node:fs");
3084
+ var import_node_os = require("node:os");
3085
+ var import_node_path = require("node:path");
3086
+
3087
+ // src/expo-manifest-body.ts
3088
+ function parseExpoManifestBody(body) {
3089
+ const opening = /^(--[^\r\n]+)\r?\n/.exec(body);
3090
+ if (!opening) return JSON.parse(body);
3091
+ for (const part of body.split(opening[1])) {
3092
+ const headerEnd = part.search(/\r?\n\r?\n/);
3093
+ if (headerEnd < 0 || !/\bname="manifest"/.test(part.slice(0, headerEnd))) continue;
3094
+ return JSON.parse(part.slice(headerEnd).trim());
3095
+ }
3096
+ throw new Error("Expo manifest response has no manifest part");
3097
+ }
3098
+
3099
+ // src/dev-bundle-resolution.ts
3100
+ var MANIFEST_PROBE_TIMEOUT_MS = 3e4;
3101
+
3102
+ // src/plist.ts
3103
+ var import_plist = __toESM(require("plist"), 1);
3104
+
3105
+ // scripts/dev-server-scanner.ts
3106
+ var LISTENER_LOCK_PATH = (0, import_node_path.join)((0, import_node_os.tmpdir)(), "peach-listener-scan.lock");
3107
+ var LISTENER_RESULT_PATH = (0, import_node_path.join)((0, import_node_os.tmpdir)(), "peach-listener-scan.result");
3108
+ var LISTENER_LOCK_STALE_MS = 25e3;
3109
+ var LISTENER_LOCK_WAIT_MS = 8e3;
3110
+ function sleep(ms) {
3111
+ return new Promise((resolve2) => setTimeout(resolve2, ms));
3112
+ }
3113
+ function pidIsAlive(pid) {
3114
+ if (!Number.isInteger(pid) || pid <= 0) return false;
3115
+ try {
3116
+ process.kill(pid, 0);
3117
+ return true;
3118
+ } catch (error) {
3119
+ const code = error && typeof error === "object" && "code" in error ? String(error.code) : "";
3120
+ return code !== "ESRCH";
3121
+ }
3122
+ }
3123
+ function readLockOwner() {
3124
+ try {
3125
+ const raw = (0, import_node_fs.readFileSync)(LISTENER_LOCK_PATH, "utf8");
3126
+ const mtimeMs = (0, import_node_fs.statSync)(LISTENER_LOCK_PATH).mtimeMs;
3127
+ const pid = Number(raw.split("-")[0]);
3128
+ return { raw, pid: Number.isInteger(pid) ? pid : -1, mtimeMs };
3129
+ } catch {
3130
+ return null;
3131
+ }
3132
+ }
3133
+ function lockIsAbandoned(owner) {
3134
+ if (owner.pid <= 0 || !pidIsAlive(owner.pid)) return true;
3135
+ return Date.now() - owner.mtimeMs > LISTENER_LOCK_STALE_MS;
3136
+ }
3137
+ function clearLock(raw) {
3138
+ try {
3139
+ if ((0, import_node_fs.readFileSync)(LISTENER_LOCK_PATH, "utf8") !== raw) return;
3140
+ (0, import_node_fs.unlinkSync)(LISTENER_LOCK_PATH);
3141
+ } catch {
3142
+ }
3143
+ }
3144
+ function readResult() {
3145
+ try {
3146
+ const parsed = JSON.parse(
3147
+ (0, import_node_fs.readFileSync)(LISTENER_RESULT_PATH, "utf8")
3148
+ );
3149
+ if (!parsed || typeof parsed.token !== "string" || typeof parsed.key !== "string")
3150
+ return null;
3151
+ return parsed;
3152
+ } catch {
3153
+ return null;
3154
+ }
3155
+ }
3156
+ function publishResult(payload) {
3157
+ const tmp = `${LISTENER_RESULT_PATH}.${process.pid}.tmp`;
3158
+ (0, import_node_fs.writeFileSync)(tmp, JSON.stringify(payload));
3159
+ (0, import_node_fs.renameSync)(tmp, LISTENER_RESULT_PATH);
3160
+ }
3161
+ function throwPublished(payload) {
3162
+ throw Object.assign(new Error(payload.message || "listener scan failed"), {
3163
+ killed: payload.killed === true
3164
+ });
3165
+ }
3166
+ async function waitForSharedResult(owner, key) {
3167
+ const cap = Date.now() + LISTING_TIMEOUT_MS;
3168
+ let current = owner;
3169
+ while (Date.now() < cap) {
3170
+ const published = readResult();
3171
+ if (published && published.token === current.raw) {
3172
+ if (published.key !== key) return { kind: "retry" };
3173
+ if (!published.ok) throwPublished(published);
3174
+ return { kind: "value", value: published.value };
3175
+ }
3176
+ const latest = readLockOwner();
3177
+ if (!latest) {
3178
+ const again = readResult();
3179
+ if (again && again.token === current.raw && again.key === key) {
3180
+ if (!again.ok) throwPublished(again);
3181
+ return { kind: "value", value: again.value };
3182
+ }
3183
+ return { kind: "retry" };
3184
+ }
3185
+ if (latest.raw !== current.raw) current = latest;
3186
+ if (lockIsAbandoned(latest)) {
3187
+ clearLock(latest.raw);
3188
+ return { kind: "retry" };
3189
+ }
3190
+ await sleep(25);
3191
+ }
3192
+ throw Object.assign(new Error("listener scan lock was held past the wait"), {
3193
+ killed: true
3194
+ });
3195
+ }
3196
+ async function withListenerLock(key, body) {
3197
+ const token = `${process.pid}-${Date.now()}-${Math.random()}`;
3198
+ const deadline = Date.now() + LISTENER_LOCK_WAIT_MS;
3199
+ for (; ; ) {
3200
+ let fd = null;
3201
+ try {
3202
+ fd = (0, import_node_fs.openSync)(LISTENER_LOCK_PATH, "wx");
3203
+ } catch (error) {
3204
+ const code = error instanceof Error && "code" in error ? error.code : "";
3205
+ if (code !== "EEXIST") throw error;
3206
+ const owner = readLockOwner();
3207
+ if (!owner || lockIsAbandoned(owner)) {
3208
+ if (owner) clearLock(owner.raw);
3209
+ else {
3210
+ try {
3211
+ (0, import_node_fs.unlinkSync)(LISTENER_LOCK_PATH);
3212
+ } catch {
3213
+ }
3214
+ }
3215
+ continue;
3216
+ }
3217
+ if (Date.now() >= deadline) {
3218
+ const shared = await waitForSharedResult(owner, key);
3219
+ if (shared.kind === "value") return shared.value;
3220
+ continue;
3221
+ }
3222
+ await sleep(25);
3223
+ continue;
3224
+ }
3225
+ if (fd === null) continue;
3226
+ try {
3227
+ (0, import_node_fs.writeSync)(fd, token);
3228
+ try {
3229
+ const value = await body();
3230
+ publishResult({ token, key, ok: true, value });
3231
+ return value;
3232
+ } catch (error) {
3233
+ publishResult({
3234
+ token,
3235
+ key,
3236
+ ok: false,
3237
+ message: error instanceof Error ? error.message : String(error),
3238
+ killed: !!(error && typeof error === "object" && error.killed)
3239
+ });
3240
+ throw error;
3241
+ }
3242
+ } finally {
3243
+ try {
3244
+ (0, import_node_fs.closeSync)(fd);
3245
+ } catch {
3246
+ }
3247
+ clearLock(token);
3248
+ }
3249
+ }
3250
+ }
3251
+ function spawnReaped(file, args, timeoutMs, maxBuffer = 1024 * 1024) {
3252
+ return withListenerLock(
3253
+ `${file}\0${args.join("\0")}`,
3254
+ () => new Promise((resolvePromise, reject) => {
3255
+ const child = (0, import_child_process.spawn)(file, args, {
3256
+ stdio: ["ignore", "pipe", "pipe"]
3257
+ });
3258
+ let stdout = "";
3259
+ let settled = false;
3260
+ let timedOut = false;
3261
+ let overflow = false;
3262
+ let spawnError = null;
3263
+ const timeoutError = () => Object.assign(new Error(`\`${file}\` did not exit within ${timeoutMs}ms`), {
3264
+ killed: true
3265
+ });
3266
+ const finish = (err, code) => {
3267
+ if (settled) return;
3268
+ settled = true;
3269
+ clearTimeout(deadline);
3270
+ clearTimeout(backup);
3271
+ if (err) reject(err);
3272
+ else resolvePromise({ stdout, code });
3273
+ };
3274
+ const killChild = () => {
3275
+ if (child.exitCode !== null || child.signalCode !== null) return;
3276
+ try {
3277
+ child.kill("SIGKILL");
3278
+ } catch {
3279
+ }
3280
+ };
3281
+ let backup;
3282
+ const deadline = setTimeout(() => {
3283
+ timedOut = true;
3284
+ killChild();
3285
+ backup = setTimeout(() => finish(timeoutError(), null), 1e3);
3286
+ }, timeoutMs);
3287
+ child.stdout?.setEncoding("utf8");
3288
+ child.stderr?.on("data", () => {
3289
+ });
3290
+ child.stdout?.on("data", (chunk) => {
3291
+ stdout += chunk;
3292
+ if (stdout.length > maxBuffer) {
3293
+ overflow = true;
3294
+ killChild();
3295
+ }
3296
+ });
3297
+ child.on("error", (err) => {
3298
+ spawnError = err;
3299
+ killChild();
3300
+ });
3301
+ child.on("close", (code) => {
3302
+ if (timedOut) finish(timeoutError(), code);
3303
+ else if (overflow)
3304
+ finish(new Error(`\`${file}\` exceeded maxBuffer ${maxBuffer}`), code);
3305
+ else if (spawnError && !stdout) finish(spawnError, code);
3306
+ else finish(null, code);
3307
+ });
3308
+ })
3309
+ );
3310
+ }
3311
+ var FALLBACK_PORTS = [
3312
+ 8081,
3313
+ 8082,
3314
+ 8083,
3315
+ 8084,
3316
+ 8085,
3317
+ 8086,
3318
+ 3e3,
3319
+ 3001,
3320
+ 19e3
3321
+ ].map((port) => ({ port, pid: 0 }));
3322
+ var LISTING_TIMEOUT_MS = 1e4;
3323
+ function wasKilledByTimeout(err) {
3324
+ return !!(err && typeof err === "object" && err.killed);
3325
+ }
3326
+ var LISTENER_CACHE_MS = 2e3;
3327
+ var listenerCache = null;
3328
+ var inflightListing = null;
3329
+ var listenerHolds = 0;
3330
+ function cachedPidsAlive(scan) {
3331
+ if (scan.state !== "looked") return true;
3332
+ return scan.processes.every((entry) => entry.pid <= 0 || pidIsAlive(entry.pid));
3333
+ }
3334
+ async function cachedPortsStillHeld(scan) {
3335
+ if (scan.state !== "looked") return true;
3336
+ const owned = scan.processes.filter((entry) => entry.pid > 0);
3337
+ if (owned.length === 0) return true;
3338
+ const pids = [...new Set(owned.map((entry) => entry.pid))];
3339
+ try {
3340
+ const { stdout, code } = await spawnReaped(
3341
+ "lsof",
3342
+ ["-nP", "-b", "-w", "-a", "-p", pids.join(","), "-iTCP", "-sTCP:LISTEN", "-Fpcn"],
3343
+ 8e3,
3344
+ 16 * 1024 * 1024
3345
+ );
3346
+ if (code !== 0 && code !== 1) return false;
3347
+ const live = new Set(
3348
+ parseLsofListeners(stdout).map((entry) => `${entry.port}:${entry.pid}`)
3349
+ );
3350
+ return owned.every((entry) => live.has(`${entry.port}:${entry.pid}`));
3351
+ } catch {
3352
+ return false;
3353
+ }
3354
+ }
3355
+ function listListenersShared() {
3356
+ inflightListing ??= loadListeners().finally(() => {
3357
+ inflightListing = null;
3358
+ });
3359
+ return inflightListing;
3360
+ }
3361
+ async function loadListeners() {
3362
+ const cached = listenerCache;
3363
+ if (cached && (listenerHolds > 0 || Date.now() - cached.at < LISTENER_CACHE_MS) && cachedPidsAlive(cached.scan) && await cachedPortsStillHeld(cached.scan)) {
3364
+ return cached.scan;
3365
+ }
3366
+ listenerCache = null;
3367
+ const scan = await listListeners();
3368
+ listenerCache = { at: Date.now(), scan };
3369
+ return scan;
3370
+ }
3371
+ function isSpawnMissing(err) {
3372
+ return !!(err && typeof err === "object" && err.code === "ENOENT");
3373
+ }
3374
+ function parseLsofListeners(stdout) {
3375
+ const seen = /* @__PURE__ */ new Map();
3376
+ let pid = 0;
3377
+ let command = "";
3378
+ for (const line of stdout.split("\n")) {
3379
+ if (line.startsWith("p")) {
3380
+ pid = Number(line.slice(1));
3381
+ command = "";
3382
+ continue;
3383
+ }
3384
+ if (line.startsWith("c")) {
3385
+ command = line.slice(1);
3386
+ continue;
3387
+ }
3388
+ if (!line.startsWith("n") || pid <= 0) continue;
3389
+ if (!/^(node|bun|peach|vite)/.test(command)) continue;
3390
+ const match = line.match(/:(\d+)$/);
3391
+ if (!match) continue;
3392
+ const port = Number(match[1]);
3393
+ if (!seen.has(port)) seen.set(port, pid);
3394
+ }
3395
+ return [...seen.entries()].map(([port, owner]) => ({ port, pid: owner }));
3396
+ }
3397
+ function parseSsListeners(stdout) {
3398
+ const seen = /* @__PURE__ */ new Map();
3399
+ for (const line of stdout.split("\n")) {
3400
+ if (!/"(node|bun|peach|vite)/.test(line)) continue;
3401
+ const portMatch = line.match(/:(\d+)\s/);
3402
+ const pidMatch = line.match(/pid=(\d+)/);
3403
+ if (!portMatch) continue;
3404
+ const port = Number(portMatch[1]);
3405
+ const pid = pidMatch ? Number(pidMatch[1]) : 0;
3406
+ if (!seen.has(port)) seen.set(port, pid);
3407
+ }
3408
+ return [...seen.entries()].map(([port, pid]) => ({ port, pid }));
3409
+ }
3410
+ async function listListeners() {
3411
+ let timedOut = false;
3412
+ try {
3413
+ const { stdout, code } = await spawnReaped(
3414
+ "lsof",
3415
+ [
3416
+ "-nP",
3417
+ "-b",
3418
+ "-w",
3419
+ "-a",
3420
+ "-c",
3421
+ "node",
3422
+ "-c",
3423
+ "bun",
3424
+ "-c",
3425
+ "peach",
3426
+ "-c",
3427
+ "vite",
3428
+ "-iTCP",
3429
+ "-sTCP:LISTEN",
3430
+ "-Fpcn"
3431
+ ],
3432
+ LISTING_TIMEOUT_MS,
3433
+ 16 * 1024 * 1024
3434
+ );
3435
+ if (code === 0 || code === 1) {
3436
+ return { state: "looked", processes: parseLsofListeners(stdout) };
3437
+ }
3438
+ } catch (err) {
3439
+ if (wasKilledByTimeout(err)) timedOut = true;
3440
+ else if (!isSpawnMissing(err)) return { state: "could-not-look" };
3441
+ }
3442
+ if (!timedOut) {
3443
+ try {
3444
+ const { stdout, code } = await spawnReaped(
3445
+ "ss",
3446
+ ["-H", "-ltnp"],
3447
+ LISTING_TIMEOUT_MS,
3448
+ 16 * 1024 * 1024
3449
+ );
3450
+ if (code === 0 || code === 1) {
3451
+ return { state: "looked", processes: parseSsListeners(stdout) };
3452
+ }
3453
+ } catch (err) {
3454
+ if (wasKilledByTimeout(err)) timedOut = true;
3455
+ else if (!isSpawnMissing(err)) return { state: "could-not-look" };
3456
+ }
3457
+ }
3458
+ if (timedOut) return { state: "could-not-look" };
3459
+ return { state: "looked", processes: FALLBACK_PORTS };
3460
+ }
3461
+ async function resolveListeningPid(port) {
3462
+ if (!Number.isInteger(port) || port <= 0) return null;
3463
+ const scan = await listListenersShared();
3464
+ if (scan.state !== "looked") return null;
3465
+ const pids = [
3466
+ ...new Set(
3467
+ scan.processes.filter((entry) => entry.port === port && entry.pid > 0).map((entry) => entry.pid)
3468
+ )
3469
+ ];
3470
+ return pids.length === 1 && pids[0] !== void 0 ? pids[0] : null;
3471
+ }
3472
+ var cwdByPid = /* @__PURE__ */ new Map();
3473
+ var cwdQueue = [];
3474
+ var cwdFlushing = false;
3475
+ function kickCwdFlush() {
3476
+ if (cwdFlushing || cwdQueue.length === 0) return;
3477
+ cwdFlushing = true;
3478
+ void flushCwdQueue().finally(() => {
3479
+ cwdFlushing = false;
3480
+ kickCwdFlush();
3481
+ });
3482
+ }
3483
+ async function flushCwdQueue() {
3484
+ await Promise.resolve();
3485
+ while (cwdQueue.length > 0) {
3486
+ const batch = cwdQueue.splice(0, cwdQueue.length);
3487
+ const pending = [...new Set(batch.map((waiter) => waiter.pid))].filter(
3488
+ (pid) => !cwdByPid.has(pid)
3489
+ );
3490
+ const needLsof = [];
3491
+ for (const pid of pending) {
3492
+ try {
3493
+ const cwd = await (0, import_promises.readlink)(`/proc/${pid}/cwd`);
3494
+ if (cwd) {
3495
+ cwdByPid.set(pid, cwd);
3496
+ continue;
3497
+ }
3498
+ } catch {
3499
+ }
3500
+ needLsof.push(pid);
3501
+ }
3502
+ if (needLsof.length > 0) {
3503
+ let looked = false;
3504
+ try {
3505
+ const { stdout, code } = await spawnReaped(
3506
+ "lsof",
3507
+ ["-b", "-w", "-nP", "-a", "-d", "cwd", "-p", needLsof.join(","), "-Fn"],
3508
+ 8e3,
3509
+ 4 * 1024 * 1024
3510
+ );
3511
+ if (code === 0 || code === 1) {
3512
+ looked = true;
3513
+ let current = 0;
3514
+ for (const line of stdout.split("\n")) {
3515
+ if (line.startsWith("p")) {
3516
+ current = Number(line.slice(1));
3517
+ continue;
3518
+ }
3519
+ if (!line.startsWith("n") || line.length <= 1 || !needLsof.includes(current))
3520
+ continue;
3521
+ const cwd = line.slice(1).trim();
3522
+ if (cwd) cwdByPid.set(current, cwd);
3523
+ }
3524
+ }
3525
+ } catch {
3526
+ }
3527
+ if (looked) {
3528
+ for (const pid of needLsof) {
3529
+ if (!cwdByPid.has(pid)) cwdByPid.set(pid, null);
3530
+ }
3531
+ }
3532
+ }
3533
+ for (const waiter of batch) waiter.resolve(cwdByPid.get(waiter.pid) ?? null);
3534
+ }
3535
+ }
3536
+ function resolveProcessCwd(pid) {
3537
+ if (pid <= 0) return Promise.resolve(null);
3538
+ if (cwdByPid.has(pid)) return Promise.resolve(cwdByPid.get(pid) ?? null);
3539
+ return new Promise((resolveCwd) => {
3540
+ cwdQueue.push({ pid, resolve: resolveCwd });
3541
+ kickCwdFlush();
3542
+ });
3543
+ }
3544
+
3545
+ // src/metro-project-root.ts
3546
+ async function resolveMetroProjectRoot(bundleUrl) {
3547
+ const origin = loopbackOriginOf(bundleUrl);
3548
+ if (!origin) return null;
3549
+ const controller = new AbortController();
3550
+ const timer = setTimeout(() => controller.abort(), MANIFEST_PROBE_TIMEOUT_MS);
3551
+ let servedManifest = false;
3552
+ let metroRunning = false;
3553
+ try {
3554
+ const status = await fetch(`${origin}/status`, { signal: controller.signal });
3555
+ const advertisedRoot = status.headers.get("X-React-Native-Project-Root");
3556
+ if (status.ok && advertisedRoot) return decodeURI(advertisedRoot);
3557
+ metroRunning = status.ok && (await status.text()).trim() === "packager-status:running";
3558
+ const res = await fetch(`${origin}/`, {
3559
+ headers: { "expo-platform": "ios", Accept: "application/json" },
3560
+ signal: controller.signal
3561
+ });
3562
+ if (res.ok) {
3563
+ const manifest = parseExpoManifestBody(await res.text());
3564
+ servedManifest = true;
3565
+ let root = manifest;
3566
+ for (const key of ["extra", "expoClient", "_internal", "projectRoot"]) {
3567
+ root = typeof root === "object" && root !== null ? Reflect.get(root, key) : void 0;
3568
+ }
3569
+ if (typeof root === "string" && root.length > 0) return root;
3570
+ }
3571
+ } catch {
3572
+ if (controller.signal.aborted)
3573
+ throw new Error(
3574
+ `Metro project root request timed out after ${MANIFEST_PROBE_TIMEOUT_MS / 1e3}s: ${origin}. Wait for the dev server to finish starting or pass --project-root.`
3575
+ );
3576
+ } finally {
3577
+ clearTimeout(timer);
3578
+ }
3579
+ if (servedManifest || !metroRunning) return null;
3580
+ const port = Number(new URL(origin).port);
3581
+ if (!Number.isFinite(port) || port <= 0) return null;
3582
+ const pid = await resolveListeningPid(port);
3583
+ return pid === null ? null : resolveProcessCwd(pid);
3584
+ }
3585
+
3586
+ // src/host/dev-server-package-versions.ts
3587
+ async function readDevServerPackageVersions(bundleUrl) {
3588
+ if (!bundleUrl.pathname.endsWith(".bundle")) return null;
3589
+ const projectRoot = await resolveMetroProjectRoot(bundleUrl.href);
3590
+ if (!projectRoot) return null;
3591
+ try {
3592
+ await import_fs2.default.promises.access(import_path2.default.join(projectRoot, "package.json"));
3593
+ } catch {
3594
+ return null;
3595
+ }
3596
+ return readInstalledNativePackageVersionsAsync(projectRoot);
3597
+ }
70
3598
 
71
3599
  // src/host/fetch-proxy-overrides.ts
72
3600
  var FETCH_PROXY_NATIVE_USER_AGENT_HEADER = "x-sootsim-native-user-agent";
@@ -316,7 +3844,7 @@ async function handleFetchProxyRequest(req, res) {
316
3844
  }
317
3845
  await proxyUpstream(req, res, upstreamUrl, params.has(FETCH_PROXY_FAILURE_PARAM), {
318
3846
  requestHeaders: (target) => buildFetchProxyHeaders(req.headers, target),
319
- respond: (upstream, setCookies) => {
3847
+ respond: async (upstream, setCookies) => {
320
3848
  for (const [key, value] of Object.entries(upstream.headers)) {
321
3849
  const lowerKey = key.toLowerCase();
322
3850
  if (value === void 0 || lowerKey === "set-cookie" || lowerKey === "connection" || lowerKey === "keep-alive" || lowerKey === "proxy-authenticate" || lowerKey === "proxy-authorization" || lowerKey === "te" || lowerKey === "trailer" || lowerKey === "transfer-encoding" || lowerKey === "upgrade" || lowerKey === FETCH_PROXY_NATIVE_COOKIE_RESPONSE_HEADER || lowerKey === FETCH_PROXY_RESPONSE_URL_HEADER || lowerKey.startsWith("access-control-")) {
@@ -324,6 +3852,11 @@ async function handleFetchProxyRequest(req, res) {
324
3852
  }
325
3853
  res.setHeader(key, value);
326
3854
  }
3855
+ if (isBundleProxyRequestUrl(req.url) && req.method === "GET" && upstream.statusCode === 200 && !res.hasHeader(PACKAGE_VERSIONS_HEADER)) {
3856
+ const packageVersions = await readDevServerPackageVersions(upstreamUrl);
3857
+ if (packageVersions)
3858
+ res.setHeader(PACKAGE_VERSIONS_HEADER, JSON.stringify(packageVersions));
3859
+ }
327
3860
  applyFetchProxyCors(req, res);
328
3861
  if (setCookies.length > 0)
329
3862
  res.setHeader("x-sootsim-set-cookie", setCookies.join(", "));
@@ -416,7 +3949,7 @@ async function proxyUpstream(req, res, upstreamUrl, reportFailure, route) {
416
3949
  clientAborted = true;
417
3950
  };
418
3951
  req.once("aborted", markAborted);
419
- const send = () => new Promise((resolve, reject) => {
3952
+ const send = () => new Promise((resolve2, reject) => {
420
3953
  let responded = false;
421
3954
  const proxyReq = transport.request(
422
3955
  {
@@ -430,7 +3963,7 @@ async function proxyUpstream(req, res, upstreamUrl, reportFailure, route) {
430
3963
  },
431
3964
  (upstream) => {
432
3965
  responded = true;
433
- resolve(upstream);
3966
+ resolve2(upstream);
434
3967
  }
435
3968
  );
436
3969
  const abort = () => proxyReq.destroy();
@@ -441,7 +3974,7 @@ async function proxyUpstream(req, res, upstreamUrl, reportFailure, route) {
441
3974
  if (failed) return;
442
3975
  failed = true;
443
3976
  if (proxyReq.reusedSocket && !responded && !clientAborted && err.code === "ECONNRESET")
444
- resolve(send());
3977
+ resolve2(send());
445
3978
  else reject(err);
446
3979
  });
447
3980
  if (nextBody === void 0) proxyReq.end();
@@ -460,10 +3993,10 @@ async function proxyUpstream(req, res, upstreamUrl, reportFailure, route) {
460
3993
  redirectLimit: 10
461
3994
  };
462
3995
  res.setHeader(FETCH_PROXY_NATIVE_COOKIE_RESPONSE_HEADER, nativeCookieHopHeader(hop));
463
- route.respond(proxyRes, hopCookies);
3996
+ await route.respond(proxyRes, hopCookies);
464
3997
  if (isNativeCookieRedirect(hop)) res.removeHeader("location");
465
3998
  res.statusCode = isNativeCookieRedirect(hop) ? 200 : status;
466
- await (0, import_promises.pipeline)(proxyRes, res);
3999
+ await (0, import_promises2.pipeline)(proxyRes, res);
467
4000
  return;
468
4001
  }
469
4002
  if (location && (status === 301 || status === 302 || status === 303 || status === 307 || status === 308)) {
@@ -474,7 +4007,7 @@ async function proxyUpstream(req, res, upstreamUrl, reportFailure, route) {
474
4007
  const switchToGet = (status === 301 || status === 302) && method === "POST" || status === 303 && method !== "GET" && method !== "HEAD";
475
4008
  const redirectUrl = resolveRedirectUrl(location, targetUrl);
476
4009
  proxyRes.resume();
477
- await (0, import_promises.finished)(proxyRes);
4010
+ await (0, import_promises2.finished)(proxyRes);
478
4011
  await proxy(
479
4012
  redirectUrl,
480
4013
  switchToGet ? "GET" : method,
@@ -485,9 +4018,9 @@ async function proxyUpstream(req, res, upstreamUrl, reportFailure, route) {
485
4018
  return;
486
4019
  }
487
4020
  if (redirects > 0) res.setHeader(FETCH_PROXY_RESPONSE_URL_HEADER, targetUrl.href);
488
- route.respond(proxyRes, hopCookies);
4021
+ await route.respond(proxyRes, hopCookies);
489
4022
  res.statusCode = status;
490
- await (0, import_promises.pipeline)(proxyRes, res);
4023
+ await (0, import_promises2.pipeline)(proxyRes, res);
491
4024
  };
492
4025
  let body;
493
4026
  try {