peachsim 0.1.1635 → 0.1.1640

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 (129) hide show
  1. package/README.md +5 -1
  2. package/cli/app-config.ts +14 -5
  3. package/cli/app-stubs.ts +62 -13
  4. package/cli/bridge-flow-runner.ts +2 -2
  5. package/cli/cloud-client.ts +60 -40
  6. package/cli/commands/doctor.ts +13 -5
  7. package/cli/commands/flow.ts +1 -1
  8. package/cli/commands/inspect/shared.ts +9 -4
  9. package/cli/commands/inspect.ts +65 -47
  10. package/cli/commands/preview.ts +1 -1
  11. package/cli/commands/record.ts +97 -47
  12. package/cli/commands/swift.ts +9 -3
  13. package/cli/commands/upload.ts +48 -42
  14. package/cli/drivers/playwright-sim-host.ts +65 -42
  15. package/cli/main.ts +1 -1
  16. package/cli/outbound-endpoints.ts +7 -5
  17. package/cli/pause-aware-timeout.ts +4 -0
  18. package/cli/ws-bridge.ts +19 -10
  19. package/detox/attempt-events.cjs +62 -5
  20. package/detox/attempt-events.d.cts +7 -0
  21. package/detox/expectations.ts +7 -3
  22. package/detox/index.ts +121 -47
  23. package/detox/motion-change.cjs +170 -21
  24. package/detox/motion-change.d.cts +32 -0
  25. package/detox/navigation-lifecycle.ts +35 -3
  26. package/dist-lib/agent-daemon-client.cjs +1 -1
  27. package/dist-lib/agent-events.cjs +1 -1
  28. package/dist-lib/attached-projects.cjs +1 -1
  29. package/dist-lib/auth/shared-session.cjs +1 -1
  30. package/dist-lib/backend-origin.cjs +8 -7
  31. package/dist-lib/beta.cjs +1 -1
  32. package/dist-lib/beta.mjs +1 -1
  33. package/dist-lib/bridge-constants.cjs +1 -1
  34. package/dist-lib/bridge-contract-input.cjs +1 -1
  35. package/dist-lib/bridge-contract-input.mjs +1 -1
  36. package/dist-lib/bridge-contract.cjs +1 -1
  37. package/dist-lib/bridge-contract.mjs +1 -1
  38. package/dist-lib/bundle-channel.cjs +4038 -1983
  39. package/dist-lib/capture-contract.cjs +1 -1
  40. package/dist-lib/capture-contract.mjs +1 -1
  41. package/dist-lib/cloud-contract.cjs +1 -1
  42. package/dist-lib/cloud-contract.mjs +1 -1
  43. package/dist-lib/cloud-test-args.cjs +1 -1
  44. package/dist-lib/cloud-test-args.mjs +1 -1
  45. package/dist-lib/cloud.cjs +1 -1
  46. package/dist-lib/cloud.mjs +1 -1
  47. package/dist-lib/config.cjs +1 -1
  48. package/dist-lib/config.mjs +1 -1
  49. package/dist-lib/detox/index.cjs +509 -86
  50. package/dist-lib/dev-bundle-resolution.cjs +1 -1
  51. package/dist-lib/expo-swift-bundle.cjs +3551 -1574
  52. package/dist-lib/expo-swift-metadata.cjs +9 -7
  53. package/dist-lib/expo-swift-metadata.mjs +9 -7
  54. package/dist-lib/home-paths.cjs +1 -1
  55. package/dist-lib/host/bridge-host.cjs +43633 -2635
  56. package/dist-lib/host/fetch-proxy-handler.cjs +1 -1
  57. package/dist-lib/host/fetch-proxy-overrides.cjs +1 -1
  58. package/dist-lib/host/fetch-proxy-overrides.mjs +1 -1
  59. package/dist-lib/host/replacement-module-handler.cjs +1 -1
  60. package/dist-lib/host/websocket-proxy.cjs +1 -1
  61. package/dist-lib/index.cjs +2748 -128
  62. package/dist-lib/jump-to-source-babel.cjs +1 -1
  63. package/dist-lib/jump-to-source-native.cjs +1 -1
  64. package/dist-lib/kotlin-host.cjs +1 -1
  65. package/dist-lib/menu.cjs +1 -1
  66. package/dist-lib/menu.mjs +1 -1
  67. package/dist-lib/metro-fingerprint-registry.cjs +1 -1
  68. package/dist-lib/metro-fingerprint-registry.mjs +1 -1
  69. package/dist-lib/metro-production-bundle.cjs +1 -1
  70. package/dist-lib/metro-production-bundle.mjs +1 -1
  71. package/dist-lib/metro.cjs +2547 -83
  72. package/dist-lib/native-app-identity-project.cjs +237 -50
  73. package/dist-lib/native-app-identity-project.mjs +237 -50
  74. package/dist-lib/native-app-identity.cjs +29 -30
  75. package/dist-lib/native-app-identity.mjs +29 -30
  76. package/dist-lib/native-firebase-metadata.cjs +1 -1
  77. package/dist-lib/native-firebase-metadata.mjs +1 -1
  78. package/dist-lib/plist.cjs +1 -1
  79. package/dist-lib/plist.mjs +1 -1
  80. package/dist-lib/profiles.cjs +1 -1
  81. package/dist-lib/public-brand.cjs +1 -1
  82. package/dist-lib/react-native-host-modules.cjs +2 -2
  83. package/dist-lib/react-native-host-modules.mjs +2 -2
  84. package/dist-lib/scripts/dev-server-scanner.cjs +8 -6
  85. package/dist-lib/sdk.cjs +1 -1
  86. package/dist-lib/sdk.mjs +1 -1
  87. package/dist-lib/skills.cjs +65403 -22739
  88. package/dist-lib/swift-compile.cjs +93 -32
  89. package/dist-lib/swift-compile.mjs +93 -32
  90. package/dist-lib/swift-package.cjs +1 -1
  91. package/dist-lib/swift-package.mjs +1 -1
  92. package/dist-lib/swift-submit.cjs +7 -5
  93. package/dist-lib/swift-submit.mjs +7 -5
  94. package/dist-lib/swift-toolchain.cjs +316 -41
  95. package/dist-lib/swift.cjs +1 -1
  96. package/dist-lib/vite-swift.cjs +7335 -5432
  97. package/dist-lib/vite.cjs +2857 -12
  98. package/dist-lib/worklet-executable.cjs +14 -2
  99. package/dist-lib/worklet-executable.mjs +14 -2
  100. package/package.json +1 -1
  101. package/src/backend-origin.ts +13 -6
  102. package/src/expo-swift-host.ts +5 -2
  103. package/src/expoKotlinContract.ts +4 -7
  104. package/src/expoSwiftContract.ts +4 -6
  105. package/src/host/staged-host-files.ts +9 -0
  106. package/src/native-app-identity-project.ts +1 -4
  107. package/src/native-app-identity.ts +1 -4
  108. package/src/nativeAppIconContract.ts +1 -4
  109. package/src/output-lock-stdio.ts +36 -0
  110. package/src/react-native-bridge-modules.ts +21 -6
  111. package/src/react-native-host-modules.ts +4 -1
  112. package/src/settings-bundle.ts +1 -4
  113. package/src/swift-compile.ts +91 -33
  114. package/src/swift-distribution.lock.json +22 -12
  115. package/src/swift-distribution.ts +103 -4
  116. package/src/swift-host.ts +89 -26
  117. package/src/swift-icu.ts +16 -10
  118. package/src/swift-objc-compile.ts +355 -0
  119. package/src/swift-objc-sdk.ts +689 -18
  120. package/src/swift-objc-standin.ts +126 -14
  121. package/src/swift-package-manifest.ts +39 -1
  122. package/src/swift-packages.ts +35 -21
  123. package/src/swift-standin-emit.ts +40 -7
  124. package/src/swift-standins.ts +404 -138
  125. package/src/swift-submit.ts +3 -5
  126. package/src/swift-toolchain.ts +378 -46
  127. package/src/worker-system-chunks.ts +11 -12
  128. package/src/worklet-executable.ts +19 -1
  129. package/src/xcode-project.ts +270 -30
@@ -1,4 +1,4 @@
1
- /*! peach v0.1.1635 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.1640 | (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;
@@ -4763,6 +4763,38 @@ var init_version = __esm({
4763
4763
  }
4764
4764
  });
4765
4765
 
4766
+ // ../peach-engine/src/platform/adapter.ts
4767
+ function isRuntimePlatform(value) {
4768
+ return value === "ios" || value === "android";
4769
+ }
4770
+ function getRuntimePlatformAdapter(platform) {
4771
+ return RUNTIME_PLATFORM_ADAPTERS[platform];
4772
+ }
4773
+ var IOS_ADAPTER, ANDROID_ADAPTER, RUNTIME_PLATFORM_ADAPTERS;
4774
+ var init_adapter = __esm({
4775
+ "../peach-engine/src/platform/adapter.ts"() {
4776
+ "use strict";
4777
+ IOS_ADAPTER = Object.freeze({
4778
+ id: "ios",
4779
+ displayName: "iOS",
4780
+ isIOS: true,
4781
+ isAndroid: false,
4782
+ select: (registry) => registry.ios
4783
+ });
4784
+ ANDROID_ADAPTER = Object.freeze({
4785
+ id: "android",
4786
+ displayName: "Android",
4787
+ isIOS: false,
4788
+ isAndroid: true,
4789
+ select: (registry) => registry.android
4790
+ });
4791
+ RUNTIME_PLATFORM_ADAPTERS = Object.freeze({
4792
+ ios: IOS_ADAPTER,
4793
+ android: ANDROID_ADAPTER
4794
+ });
4795
+ }
4796
+ });
4797
+
4766
4798
  // cli/app-project.ts
4767
4799
  function firstNamedFile(dir, names) {
4768
4800
  for (const name2 of names) {
@@ -5498,19 +5530,35 @@ function packageNativeRequests(dir) {
5498
5530
  (a, b) => a.kind.localeCompare(b.kind) || a.name.localeCompare(b.name)
5499
5531
  );
5500
5532
  }
5501
- function wireSlotMigration(appDir, wire) {
5533
+ function dependencyNativeOwners(appDir, manifest) {
5502
5534
  const owners = /* @__PURE__ */ new Map();
5503
- const manifest = readProjectManifest(appDir);
5504
5535
  for (const name2 of Object.keys({
5505
5536
  ...manifest?.devDependencies,
5506
5537
  ...manifest?.dependencies
5507
5538
  })) {
5508
5539
  const dir = installedPackageDir(appDir, name2);
5509
- if (!dir) continue;
5540
+ if (!dir || !dir.split("/").includes("node_modules")) continue;
5510
5541
  for (const request of packageNativeRequests(dir))
5511
5542
  if (!owners.has(`${request.kind}:${request.name}`))
5512
5543
  owners.set(`${request.kind}:${request.name}`, name2);
5513
5544
  }
5545
+ return owners;
5546
+ }
5547
+ function configModule(configPath, packages) {
5548
+ const body = [" packages: {", ...packages, " },"];
5549
+ if (configPath && (configPath.endsWith(".cjs") || configPath.endsWith(".js") && /\bmodule\.exports\b/.test(readSmallFile(configPath) ?? "")))
5550
+ return ["module.exports = {", ...body, "}"].join("\n");
5551
+ return [
5552
+ `import { defineConfig } from '${rnxPublicBrand.packageName}/config'`,
5553
+ "",
5554
+ "export default defineConfig({",
5555
+ ...body,
5556
+ "})"
5557
+ ].join("\n");
5558
+ }
5559
+ function wireSlotMigration(appDir, configPath, wire, kept = []) {
5560
+ const manifest = readProjectManifest(appDir);
5561
+ const owners = dependencyNativeOwners(appDir, manifest);
5514
5562
  if (manifest) {
5515
5563
  for (const request of scanLocalNative(
5516
5564
  appDir,
@@ -5518,7 +5566,8 @@ function wireSlotMigration(appDir, wire) {
5518
5566
  { module: /* @__PURE__ */ new Set(), view: /* @__PURE__ */ new Set() },
5519
5567
  void 0,
5520
5568
  /* @__PURE__ */ new Set(),
5521
- true
5569
+ true,
5570
+ owners
5522
5571
  ))
5523
5572
  if (!owners.has(`${request.kind}:${request.name}`))
5524
5573
  owners.set(`${request.kind}:${request.name}`, request.package);
@@ -5558,9 +5607,17 @@ function wireSlotMigration(appDir, wire) {
5558
5607
  ].filter(Boolean);
5559
5608
  return ` [${JSON.stringify(owner)}]: { ${parts.join(", ")} },`;
5560
5609
  });
5610
+ if (lines.length && kept.length)
5611
+ return [
5612
+ ...manual.map((line) => `// ${line}`),
5613
+ `// keep ${kept.join(", ")}; merge these into packages`,
5614
+ " packages: {",
5615
+ ...lines,
5616
+ " },"
5617
+ ].join("\n");
5561
5618
  return [
5562
- ...lines.length ? [" packages: {", ...lines, " },"] : [],
5563
- ...manual.map((line) => ` // ${line}`)
5619
+ ...manual.map((line) => `// ${line}`),
5620
+ ...lines.length ? [configModule(configPath, lines)] : []
5564
5621
  ].join("\n");
5565
5622
  }
5566
5623
  function listDir(dir) {
@@ -5588,7 +5645,7 @@ function hasNativeCode(dir, platform) {
5588
5645
  const manifest = readSmallFile((0, import_node_path16.join)(dir, "package.json"));
5589
5646
  return manifest !== null && manifest.includes('"codegenConfig"');
5590
5647
  }
5591
- function scanLocalNative(appDir, pkg, answered, platform, knownPackages = /* @__PURE__ */ new Set(), includeLegacy = false) {
5648
+ function scanLocalNative(appDir, pkg, answered, platform, knownPackages = /* @__PURE__ */ new Set(), includeLegacy = false, providers) {
5592
5649
  const expoModuleDirs = [];
5593
5650
  const excludedModuleDirs = [];
5594
5651
  const sourceFiles = [];
@@ -5631,10 +5688,11 @@ function scanLocalNative(appDir, pkg, answered, platform, knownPackages = /* @__
5631
5688
  };
5632
5689
  const found = /* @__PURE__ */ new Map();
5633
5690
  const add = (kind, name2, file, line) => {
5634
- const packageName = owner((0, import_node_path16.dirname)(file));
5635
- if (knownPackages.has(packageName)) return;
5636
5691
  const key = `${kind}:${name2}`;
5637
5692
  if (found.has(key)) return;
5693
+ providers ??= dependencyNativeOwners(appDir, pkg);
5694
+ const packageName = providers.get(key) ?? owner((0, import_node_path16.dirname)(file));
5695
+ if (knownPackages.has(packageName)) return;
5638
5696
  const moduleDir = expoModuleDirs.find((dir) => file.startsWith(`${dir}/`)) ?? null;
5639
5697
  found.set(key, {
5640
5698
  kind,
@@ -5704,6 +5762,7 @@ var init_app_stubs = __esm({
5704
5762
  import_sucrase = require("sucrase");
5705
5763
  init_config();
5706
5764
  init_is_record();
5765
+ init_public_brand();
5707
5766
  init_visit_parsed_program();
5708
5767
  init_detect();
5709
5768
  SOURCE_FILE = /\.[cm]?[jt]sx?$/;
@@ -5778,12 +5837,19 @@ async function loadConfigFile(project) {
5778
5837
  }
5779
5838
  const wire = WIRE_SLOTS.filter((slot) => loaded2[slot] !== void 0);
5780
5839
  if (wire.length > 0) {
5781
- const migration = wireSlotMigration(project.appDir, {
5782
- modules: { ...loaded2.turboModules, ...loaded2.nativeModules },
5783
- views: { ...loaded2.nativeViews }
5784
- });
5840
+ const slots = WIRE_SLOTS;
5841
+ const kept = Object.entries(loaded2).filter(([key, value]) => !slots.includes(key) && value !== void 0).map(([key]) => key);
5842
+ const migration = wireSlotMigration(
5843
+ project.appDir,
5844
+ project.configPath,
5845
+ {
5846
+ modules: { ...loaded2.turboModules, ...loaded2.nativeModules },
5847
+ views: { ...loaded2.nativeViews }
5848
+ },
5849
+ kept
5850
+ );
5785
5851
  throw new Error(
5786
- `${wire.join(", ")} moved under packages, keyed by the package whose native side they answer. replace them with:
5852
+ `${wire.join(", ")} moved under packages, keyed by the package whose native side they answer. ${kept.length ? "remove them and add" : "replace the config with"}:
5787
5853
  ${migration}`
5788
5854
  );
5789
5855
  }
@@ -5995,6 +6061,9 @@ module.exports = __toCommonJS(src_exports);
5995
6061
  // cli/cloud-client.ts
5996
6062
  var import_node_crypto = require("node:crypto");
5997
6063
 
6064
+ // ../peach-engine/src/preview/bundle-layout.ts
6065
+ var import_metro_production_bundle = require("peachsim/metro-production-bundle");
6066
+
5998
6067
  // src/androidAutolinkingContract.ts
5999
6068
  init_bundleGlobalFooter();
6000
6069
  var FOOTER = "__peachAndroidAutolinkedPackages";
@@ -6029,7 +6098,7 @@ function insertPackageVersionsFooter(source, versions) {
6029
6098
  }
6030
6099
 
6031
6100
  // ../peach-engine/src/tenant-bundle-mode.ts
6032
- var import_metro_production_bundle = require("peachsim/metro-production-bundle");
6101
+ var import_metro_production_bundle2 = require("peachsim/metro-production-bundle");
6033
6102
 
6034
6103
  // ../peach-engine/src/tenant-runtime-environment.ts
6035
6104
  function readBrowserLocation() {
@@ -6508,8 +6577,403 @@ var PEACH_UPSTREAM_MODULES = {
6508
6577
  ...PEACH_REACT_NATIVE_UPSTREAM_MODULES
6509
6578
  };
6510
6579
 
6580
+ // ../peach-compat/src/stub-manifest.ts
6581
+ var COMPAT_STUBS = {
6582
+ reactNativeScreens: {
6583
+ specifier: "react-native-screens",
6584
+ stubFile: "react-native-screens.ts",
6585
+ runtimeTier: "lazy",
6586
+ buildResolvers: ["vite", "dep-prebundle"]
6587
+ },
6588
+ reactNativeMaskedView: {
6589
+ specifier: "@react-native-masked-view/masked-view",
6590
+ stubFile: "masked-view.ts",
6591
+ runtimeTier: "none",
6592
+ buildResolvers: ["vite"]
6593
+ },
6594
+ reactNativeCommunityMaskedView: {
6595
+ specifier: "@react-native-community/masked-view",
6596
+ stubFile: "masked-view.ts",
6597
+ runtimeTier: "none",
6598
+ buildResolvers: ["vite"]
6599
+ },
6600
+ reactNativeTeleport: {
6601
+ specifier: "react-native-teleport",
6602
+ stubFile: "react-native-teleport.tsx",
6603
+ runtimeTier: "lazy",
6604
+ buildResolvers: ["vite", "dep-prebundle"]
6605
+ },
6606
+ reactNativeIosContextMenu: {
6607
+ specifier: "react-native-ios-context-menu",
6608
+ stubFile: "react-native-ios-context-menu.ts",
6609
+ runtimeTier: "core",
6610
+ buildResolvers: ["vite"]
6611
+ },
6612
+ reactNativeIosUtilities: {
6613
+ specifier: "react-native-ios-utilities",
6614
+ stubFile: "react-native-ios-utilities.ts",
6615
+ runtimeTier: "core",
6616
+ buildResolvers: ["vite"]
6617
+ },
6618
+ expoSplashScreen: {
6619
+ specifier: "expo-splash-screen",
6620
+ stubFile: "expo-splash-screen.ts",
6621
+ runtimeTier: "none",
6622
+ buildResolvers: ["vite", "dep-prebundle"]
6623
+ },
6624
+ reactNativeLaunchArguments: {
6625
+ specifier: "react-native-launch-arguments",
6626
+ stubFile: "react-native-launch-arguments.ts",
6627
+ runtimeTier: "core",
6628
+ buildResolvers: ["vite"]
6629
+ },
6630
+ expoWinterFormData: {
6631
+ specifier: "expo/build/winter/FormData",
6632
+ stubFile: "expo-winter-formdata.ts",
6633
+ runtimeTier: "none",
6634
+ buildResolvers: ["vite"]
6635
+ },
6636
+ expoWinterFetch: {
6637
+ specifier: "expo/build/winter/fetch/index",
6638
+ stubFile: "expo-winter-fetch.ts",
6639
+ runtimeTier: "none",
6640
+ buildResolvers: ["vite"]
6641
+ },
6642
+ expoConstants: {
6643
+ specifier: "expo-constants",
6644
+ stubFile: "expo-constants.ts",
6645
+ runtimeTier: "none",
6646
+ buildResolvers: ["vite", "dep-prebundle"]
6647
+ },
6648
+ expoLinearGradient: {
6649
+ specifier: "expo-linear-gradient",
6650
+ stubFile: "expo-linear-gradient.ts",
6651
+ runtimeTier: "none",
6652
+ buildResolvers: ["vite", "dep-prebundle"]
6653
+ },
6654
+ expoBlur: {
6655
+ specifier: "expo-blur",
6656
+ stubFile: "expo-blur.ts",
6657
+ runtimeTier: "none",
6658
+ buildResolvers: ["vite", "dep-prebundle"]
6659
+ },
6660
+ expoLiquidGlassView: {
6661
+ specifier: "expo-liquid-glass-view",
6662
+ stubFile: "expo-liquid-glass-view.ts",
6663
+ runtimeTier: "core",
6664
+ buildResolvers: ["vite", "dep-prebundle"]
6665
+ },
6666
+ expoGlassEffect: {
6667
+ specifier: "expo-glass-effect",
6668
+ stubFile: "expo-glass-effect.ts",
6669
+ runtimeTier: "lazy",
6670
+ buildResolvers: ["vite", "dep-prebundle"]
6671
+ },
6672
+ expoSymbols: {
6673
+ specifier: "expo-symbols",
6674
+ stubFile: "expo-symbols.ts",
6675
+ runtimeTier: "none",
6676
+ buildResolvers: ["vite", "dep-prebundle"]
6677
+ },
6678
+ expoMeshGradient: {
6679
+ specifier: "expo-mesh-gradient",
6680
+ stubFile: "expo-mesh-gradient.ts",
6681
+ runtimeTier: "lazy",
6682
+ buildResolvers: ["vite", "dep-prebundle"]
6683
+ },
6684
+ reactNativeBottomTabs: {
6685
+ specifier: "react-native-bottom-tabs",
6686
+ stubFile: "react-native-bottom-tabs.ts",
6687
+ runtimeTier: "lazy",
6688
+ buildResolvers: ["vite", "dep-prebundle"]
6689
+ },
6690
+ callstackReactNativeBottomTabs: {
6691
+ specifier: "@callstack/react-native-bottom-tabs",
6692
+ stubFile: "react-native-bottom-tabs.ts",
6693
+ runtimeTier: "lazy",
6694
+ buildResolvers: ["vite", "dep-prebundle"]
6695
+ },
6696
+ expoUiSwiftUi: {
6697
+ specifier: "@expo/ui/swift-ui",
6698
+ stubFile: "expo-ui.ts",
6699
+ runtimeTier: "lazy",
6700
+ buildResolvers: ["vite"]
6701
+ },
6702
+ expoUiCommunityMenu: {
6703
+ specifier: "@expo/ui/community/menu",
6704
+ stubFile: "expo-ui-menu.ts",
6705
+ runtimeTier: "lazy",
6706
+ buildResolvers: ["vite"]
6707
+ },
6708
+ expoModulesCore: {
6709
+ specifier: "expo-modules-core",
6710
+ stubFile: "expo-modules-core-package.ts",
6711
+ runtimeTier: "lazy",
6712
+ buildResolvers: ["vite"]
6713
+ },
6714
+ reactNativeWorklets: {
6715
+ specifier: "react-native-worklets",
6716
+ stubFile: "react-native-worklets-pkg/index.ts",
6717
+ runtimeTier: "none",
6718
+ buildResolvers: ["vite", "dep-prebundle"]
6719
+ },
6720
+ reactNativeWorkletsNative: {
6721
+ specifier: "react-native-worklets/specs/NativeWorkletsModule",
6722
+ stubFile: "react-native-worklets-native.ts",
6723
+ runtimeTier: "lazy",
6724
+ buildResolvers: ["vite"]
6725
+ },
6726
+ reactNativeWorkletsPackageJson: {
6727
+ specifier: "react-native-worklets/package.json",
6728
+ stubFile: "react-native-worklets-pkg/package.json",
6729
+ runtimeTier: "none",
6730
+ buildResolvers: ["vite"]
6731
+ },
6732
+ reactNativePdf: {
6733
+ specifier: "react-native-pdf",
6734
+ stubFile: "react-native-pdf.ts",
6735
+ runtimeTier: "lazy",
6736
+ buildResolvers: ["vite"]
6737
+ },
6738
+ expoBackgroundFetch: {
6739
+ specifier: "expo-background-fetch",
6740
+ stubFile: "expo-background-fetch.ts",
6741
+ runtimeTier: "none",
6742
+ buildResolvers: ["vite"]
6743
+ },
6744
+ expoBackgroundTask: {
6745
+ specifier: "expo-background-task",
6746
+ stubFile: "expo-background-task.ts",
6747
+ runtimeTier: "none",
6748
+ buildResolvers: ["vite"]
6749
+ },
6750
+ expoSensors: {
6751
+ specifier: "expo-sensors",
6752
+ stubFile: "expo-sensors.ts",
6753
+ runtimeTier: "none",
6754
+ buildResolvers: ["vite"]
6755
+ },
6756
+ expoVideoThumbnails: {
6757
+ specifier: "expo-video-thumbnails",
6758
+ stubFile: "expo-video-thumbnails.ts",
6759
+ runtimeTier: "none",
6760
+ buildResolvers: ["vite"]
6761
+ },
6762
+ googleSignin: {
6763
+ specifier: "@react-native-google-signin/google-signin",
6764
+ stubFile: "react-native-google-signin.ts",
6765
+ runtimeTier: "none",
6766
+ buildResolvers: ["vite", "dep-prebundle"]
6767
+ },
6768
+ reactNativeHapticFeedback: {
6769
+ specifier: "react-native-haptic-feedback",
6770
+ stubFile: "react-native-haptic-feedback.ts",
6771
+ runtimeTier: "none",
6772
+ buildResolvers: ["vite", "dep-prebundle"]
6773
+ },
6774
+ reactNativeSegmentedControl: {
6775
+ specifier: "@react-native-segmented-control/segmented-control",
6776
+ stubFile: "react-native-segmented-control.ts",
6777
+ runtimeTier: "lazy",
6778
+ buildResolvers: ["vite"]
6779
+ },
6780
+ reactNativeUitextview: {
6781
+ specifier: "react-native-uitextview",
6782
+ stubFile: "react-native-uitextview.ts",
6783
+ runtimeTier: "lazy",
6784
+ buildResolvers: ["vite"]
6785
+ },
6786
+ expoBattery: {
6787
+ specifier: "expo-battery",
6788
+ stubFile: "expo-battery.ts",
6789
+ runtimeTier: "none",
6790
+ buildResolvers: ["vite"]
6791
+ },
6792
+ expoBrightness: {
6793
+ specifier: "expo-brightness",
6794
+ stubFile: "expo-brightness.ts",
6795
+ runtimeTier: "none",
6796
+ buildResolvers: ["vite"]
6797
+ },
6798
+ // sdk 57 moved the async calendar surface behind `expo-calendar/legacy`.
6799
+ // the bare-specifier alias is a PREFIX match, so without this longer entry
6800
+ // it rewrites the subpath to `<stubs>/expo-calendar.ts/legacy`. it needs its
6801
+ // own stub too: upstream's root re-exports `legacyWarnings`, where every
6802
+ // async method throws "imported from expo-calendar is deprecated", so
6803
+ // sharing the root stub makes the whole legacy surface throw at call time.
6804
+ expoCalendarLegacy: {
6805
+ specifier: "expo-calendar/legacy",
6806
+ stubFile: "expo-calendar-legacy.ts",
6807
+ runtimeTier: "none",
6808
+ buildResolvers: ["vite"]
6809
+ },
6810
+ expoCalendar: {
6811
+ specifier: "expo-calendar",
6812
+ stubFile: "expo-calendar.ts",
6813
+ runtimeTier: "none",
6814
+ buildResolvers: ["vite"]
6815
+ },
6816
+ expoCellular: {
6817
+ specifier: "expo-cellular",
6818
+ stubFile: "expo-cellular.ts",
6819
+ runtimeTier: "none",
6820
+ buildResolvers: ["vite"]
6821
+ },
6822
+ // same `/legacy` prefix-alias and deprecated-root case as expo-calendar.
6823
+ expoContactsLegacy: {
6824
+ specifier: "expo-contacts/legacy",
6825
+ stubFile: "expo-contacts-legacy.ts",
6826
+ runtimeTier: "none",
6827
+ buildResolvers: ["vite"]
6828
+ },
6829
+ expoContacts: {
6830
+ specifier: "expo-contacts",
6831
+ stubFile: "expo-contacts.ts",
6832
+ runtimeTier: "none",
6833
+ buildResolvers: ["vite"]
6834
+ },
6835
+ expoMailComposer: {
6836
+ specifier: "expo-mail-composer",
6837
+ stubFile: "expo-mail-composer.ts",
6838
+ runtimeTier: "none",
6839
+ buildResolvers: ["vite"]
6840
+ },
6841
+ expoPrint: {
6842
+ specifier: "expo-print",
6843
+ stubFile: "expo-print.ts",
6844
+ runtimeTier: "none",
6845
+ buildResolvers: ["vite"]
6846
+ },
6847
+ expoSecureStore: {
6848
+ specifier: "expo-secure-store",
6849
+ stubFile: "expo-secure-store.ts",
6850
+ runtimeTier: "none",
6851
+ buildResolvers: ["vite", "dep-prebundle"]
6852
+ },
6853
+ expoInsights: {
6854
+ specifier: "expo-insights",
6855
+ stubFile: "expo-insights.ts",
6856
+ runtimeTier: "none",
6857
+ buildResolvers: ["vite"]
6858
+ },
6859
+ expoIntentLauncher: {
6860
+ specifier: "expo-intent-launcher",
6861
+ stubFile: "expo-intent-launcher.ts",
6862
+ runtimeTier: "none",
6863
+ buildResolvers: ["vite"]
6864
+ },
6865
+ expoTaskManager: {
6866
+ specifier: "expo-task-manager",
6867
+ stubFile: "expo-task-manager.ts",
6868
+ runtimeTier: "none",
6869
+ buildResolvers: ["vite"]
6870
+ },
6871
+ expoApplication: {
6872
+ specifier: "expo-application",
6873
+ stubFile: "expo-application.ts",
6874
+ runtimeTier: "none",
6875
+ buildResolvers: ["vite", "dep-prebundle"]
6876
+ },
6877
+ expoNetwork: {
6878
+ specifier: "expo-network",
6879
+ stubFile: "expo-network.ts",
6880
+ runtimeTier: "none",
6881
+ buildResolvers: ["vite"]
6882
+ },
6883
+ expoScreenCapture: {
6884
+ specifier: "expo-screen-capture",
6885
+ stubFile: "expo-screen-capture.ts",
6886
+ runtimeTier: "none",
6887
+ buildResolvers: ["vite"]
6888
+ },
6889
+ expoScreenOrientation: {
6890
+ specifier: "expo-screen-orientation",
6891
+ stubFile: "expo-screen-orientation.ts",
6892
+ runtimeTier: "none",
6893
+ buildResolvers: ["vite"]
6894
+ },
6895
+ expoQuickActions: {
6896
+ specifier: "expo-quick-actions",
6897
+ stubFile: "expo-quick-actions.ts",
6898
+ runtimeTier: "none",
6899
+ buildResolvers: ["vite"]
6900
+ },
6901
+ expoSharing: {
6902
+ specifier: "expo-sharing",
6903
+ stubFile: "expo-sharing.ts",
6904
+ runtimeTier: "none",
6905
+ buildResolvers: ["vite"]
6906
+ },
6907
+ expoSms: {
6908
+ specifier: "expo-sms",
6909
+ stubFile: "expo-sms.ts",
6910
+ runtimeTier: "none",
6911
+ buildResolvers: ["vite"]
6912
+ },
6913
+ expoSqlite: {
6914
+ specifier: "expo-sqlite",
6915
+ stubFile: "expo-sqlite.ts",
6916
+ runtimeTier: "none",
6917
+ buildResolvers: ["vite", "dep-prebundle"]
6918
+ },
6919
+ expoSpeech: {
6920
+ specifier: "expo-speech",
6921
+ stubFile: "expo-speech.ts",
6922
+ runtimeTier: "none",
6923
+ buildResolvers: ["vite"]
6924
+ },
6925
+ expoStoreReview: {
6926
+ specifier: "expo-store-review",
6927
+ stubFile: "expo-store-review.ts",
6928
+ runtimeTier: "none",
6929
+ buildResolvers: ["vite"]
6930
+ },
6931
+ expoTrackingTransparency: {
6932
+ specifier: "expo-tracking-transparency",
6933
+ stubFile: "expo-tracking-transparency.ts",
6934
+ runtimeTier: "none",
6935
+ buildResolvers: ["vite"]
6936
+ },
6937
+ expoShareExtension: {
6938
+ specifier: "expo-share-extension",
6939
+ stubFile: "noop-sdks-extra/expo-share-extension.ts",
6940
+ runtimeTier: "none",
6941
+ buildResolvers: ["vite"]
6942
+ },
6943
+ expoHealthConnect: {
6944
+ specifier: "expo-health-connect",
6945
+ stubFile: "noop-sdks-extra/expo-health-connect.ts",
6946
+ runtimeTier: "none",
6947
+ buildResolvers: ["vite"]
6948
+ },
6949
+ expoInAppUpdates: {
6950
+ specifier: "expo-in-app-updates",
6951
+ stubFile: "noop-sdks-extra/expo-in-app-updates.ts",
6952
+ runtimeTier: "none",
6953
+ buildResolvers: ["vite"]
6954
+ },
6955
+ expoSuperwall: {
6956
+ specifier: "expo-superwall",
6957
+ stubFile: "noop-sdks-extra/expo-superwall.ts",
6958
+ runtimeTier: "none",
6959
+ buildResolvers: ["vite"]
6960
+ },
6961
+ communityCheckbox: {
6962
+ specifier: "@react-native-community/checkbox",
6963
+ stubFile: "react-native-community-checkbox.ts",
6964
+ runtimeTier: "lazy",
6965
+ buildResolvers: ["vite"]
6966
+ },
6967
+ reactNavigationNative: {
6968
+ specifier: "@react-navigation/native",
6969
+ stubFile: "react-navigation-native.tsx",
6970
+ runtimeTier: "none",
6971
+ buildResolvers: ["vite"]
6972
+ }
6973
+ };
6974
+
6511
6975
  // ../peach-engine/src/metro-fingerprint.ts
6512
- var import_metro_production_bundle2 = require("peachsim/metro-production-bundle");
6976
+ var import_metro_production_bundle3 = require("peachsim/metro-production-bundle");
6513
6977
  var import_react_native_host_modules = require("peachsim/react-native-host-modules");
6514
6978
 
6515
6979
  // ../peach-engine/src/stub-pattern-matcher.ts
@@ -6521,12 +6985,16 @@ function extractPackageFromPath(modulePath) {
6521
6985
  nodeModulesIndex = 0;
6522
6986
  prefixLength = "node_modules/".length;
6523
6987
  }
6524
- const pathWithinNodeModules = modulePath.slice(nodeModulesIndex + prefixLength);
6525
- if (pathWithinNodeModules.startsWith("@")) {
6526
- const parts = pathWithinNodeModules.split("/");
6527
- return parts.length >= 2 ? `${parts[0]}/${parts[1]}` : null;
6988
+ return packageNameAt(modulePath, nodeModulesIndex + prefixLength) || null;
6989
+ }
6990
+ function packageNameAt(modulePath, start) {
6991
+ const firstSlash = modulePath.indexOf("/", start);
6992
+ if (modulePath.startsWith("@", start)) {
6993
+ if (firstSlash === -1) return null;
6994
+ const secondSlash = modulePath.indexOf("/", firstSlash + 1);
6995
+ return modulePath.slice(start, secondSlash === -1 ? void 0 : secondSlash);
6528
6996
  }
6529
- return pathWithinNodeModules.split("/")[0] || null;
6997
+ return modulePath.slice(start, firstSlash === -1 ? void 0 : firstSlash);
6530
6998
  }
6531
6999
 
6532
7000
  // cli/cloud-client.ts
@@ -6952,11 +7420,13 @@ function cloudCommand(command) {
6952
7420
  return clean;
6953
7421
  }
6954
7422
  var CloudBridge = class {
6955
- constructor(session) {
7423
+ constructor(session, explicitTimeoutMs) {
6956
7424
  this.session = session;
7425
+ this.explicitTimeoutMs = explicitTimeoutMs;
6957
7426
  }
6958
7427
  plane = "cloud";
6959
7428
  async send(command, options) {
7429
+ const timeoutMs = options?.timeoutMs ?? this.explicitTimeoutMs ?? options?.defaultTimeoutMs;
6960
7430
  const body = {
6961
7431
  id: (0, import_node_crypto.randomUUID)(),
6962
7432
  claimId: this.session.claimId,
@@ -6973,7 +7443,7 @@ var CloudBridge = class {
6973
7443
  "content-type": "application/json"
6974
7444
  },
6975
7445
  body: JSON.stringify(body),
6976
- ...options?.timeoutMs ? { signal: AbortSignal.timeout(options.timeoutMs) } : {}
7446
+ ...timeoutMs ? { signal: AbortSignal.timeout(timeoutMs) } : {}
6977
7447
  }
6978
7448
  );
6979
7449
  } catch (error) {
@@ -7023,11 +7493,13 @@ var CloudBridge = class {
7023
7493
  }
7024
7494
  };
7025
7495
  var CloudBoxBridge = class {
7026
- constructor(session) {
7496
+ constructor(session, explicitTimeoutMs) {
7027
7497
  this.session = session;
7498
+ this.explicitTimeoutMs = explicitTimeoutMs;
7028
7499
  }
7029
7500
  plane = "cloud";
7030
7501
  async send(command, options) {
7502
+ const timeoutMs = options?.timeoutMs ?? this.explicitTimeoutMs ?? options?.defaultTimeoutMs;
7031
7503
  const id = (0, import_node_crypto.randomUUID)();
7032
7504
  const payload = {};
7033
7505
  for (const [key, value] of Object.entries(command)) {
@@ -7044,7 +7516,7 @@ var CloudBoxBridge = class {
7044
7516
  "content-type": "application/json"
7045
7517
  },
7046
7518
  body: JSON.stringify({ id, command: payload }),
7047
- ...options?.timeoutMs ? { signal: AbortSignal.timeout(options.timeoutMs) } : {}
7519
+ ...timeoutMs ? { signal: AbortSignal.timeout(timeoutMs) } : {}
7048
7520
  }
7049
7521
  );
7050
7522
  } catch (error) {
@@ -7092,7 +7564,8 @@ var CloudBoxBridge = class {
7092
7564
  function createCloudBridgeForParsed(parsed) {
7093
7565
  const session = resolveCloudSessionForParsed(parsed);
7094
7566
  if (!session) return null;
7095
- return session.service === "box" ? new CloudBoxBridge(session) : new CloudBridge(session);
7567
+ const timeoutMs = parsed.explicitTimeout ? parsed.commandTimeoutMs : void 0;
7568
+ return session.service === "box" ? new CloudBoxBridge(session, timeoutMs) : new CloudBridge(session, timeoutMs);
7096
7569
  }
7097
7570
 
7098
7571
  // cli/current-sim.ts
@@ -7589,6 +8062,10 @@ function setPauseAwareTimeout(fn, budgetMs, hostPid) {
7589
8062
  }
7590
8063
  return () => {
7591
8064
  timers.delete(timer);
8065
+ if (timers.size === 0 && poll) {
8066
+ clearInterval(poll);
8067
+ poll = void 0;
8068
+ }
7592
8069
  };
7593
8070
  }
7594
8071
 
@@ -7738,7 +8215,10 @@ var BRIDGE_VALUE_FLAGS_TABLE = [
7738
8215
  {
7739
8216
  names: ["--timeout"],
7740
8217
  apply: (state, value) => {
7741
- if (value !== void 0) state.commandTimeoutMs = Number(value);
8218
+ if (value !== void 0) {
8219
+ state.commandTimeoutMs = Number(value);
8220
+ state.explicitTimeout = true;
8221
+ }
7742
8222
  }
7743
8223
  },
7744
8224
  {
@@ -7878,7 +8358,7 @@ function createBridge(wsPort, opts = {}) {
7878
8358
  return {
7879
8359
  plane: "local",
7880
8360
  async send(cmd, callOpts) {
7881
- const effectiveTimeoutMs = callOpts?.timeoutMs ?? commandTimeoutMs;
8361
+ const effectiveTimeoutMs = callOpts?.timeoutMs ?? (opts.explicitTimeout ? commandTimeoutMs : callOpts?.defaultTimeoutMs) ?? commandTimeoutMs;
7882
8362
  const sendOnce = async (defaultSimId, cmdOverride) => {
7883
8363
  await ready;
7884
8364
  if (terminalError) throw terminalError;
@@ -7891,11 +8371,7 @@ function createBridge(wsPort, opts = {}) {
7891
8371
  const clearTimeoutFn = setPauseAwareTimeout(
7892
8372
  () => {
7893
8373
  pending.delete(id);
7894
- reject(
7895
- new Error(
7896
- `command timed out after ${Math.round(effectiveTimeoutMs / 1e3)}s`
7897
- )
7898
- );
8374
+ reject(new Error(`command timed out after ${effectiveTimeoutMs / 1e3}s`));
7899
8375
  },
7900
8376
  effectiveTimeoutMs,
7901
8377
  lineageBySimId.get(payload.simId)?.hostPid
@@ -8024,6 +8500,7 @@ function createBridgeFromParsed(parsed) {
8024
8500
  if (cloudBridge) return cloudBridge;
8025
8501
  const options = {
8026
8502
  commandTimeoutMs: parsed.commandTimeoutMs,
8503
+ explicitTimeout: parsed.explicitTimeout,
8027
8504
  simId: parsed.simId,
8028
8505
  simIdSource: parsed.simIdSource
8029
8506
  };
@@ -11009,9 +11486,1993 @@ init_replacement_module_handler();
11009
11486
  // src/installed-package-versions.ts
11010
11487
  var import_fs3 = __toESM(require("fs"), 1);
11011
11488
  var import_path2 = __toESM(require("path"), 1);
11012
- var import_lazy_stub_patterns = require("@peach/compat/lazy-stub-patterns");
11013
- var import_native_package_names = require("@peach/compat/native-package-names");
11014
- var import_stub_manifest2 = require("@peach/compat/stub-manifest");
11489
+
11490
+ // ../peach-compat/src/lazy-stub-patterns.ts
11491
+ var LAZY_STUB_PATTERNS = [
11492
+ "@10play/tentap-editor",
11493
+ "@adobe/react-native-aepcore",
11494
+ "@aws-amplify/react-native",
11495
+ "@azesmway/react-native-unity",
11496
+ "@azzapp/react-native-skia-video",
11497
+ "@batch.com/react-native-plugin",
11498
+ "@bravemobile/react-native-code-push",
11499
+ "@bugsnag/react-native",
11500
+ "@bugsnag/react-native-performance",
11501
+ "@callstack/react-native-bottom-tabs",
11502
+ "@callstack/react-native-visionos",
11503
+ "@clerk/expo",
11504
+ "@cometchat/chat-uikit-react-native",
11505
+ "@didomi/react-native",
11506
+ "@dr.pogodin/react-native-static-server",
11507
+ "@eabdullazyanov/react-native-sms-user-consent",
11508
+ "@expensify/react-native-live-markdown",
11509
+ "@expensify/react-native-wallet",
11510
+ "@expo/ui/community/menu",
11511
+ "@expo/ui/swift-ui",
11512
+ "@giphy/react-native-sdk",
11513
+ "@google/react-native-make-payment",
11514
+ "@googlemaps/react-native-navigation-sdk",
11515
+ "@invertase/react-native-apple-authentication",
11516
+ "@iterable/expo-plugin",
11517
+ "@kingstinct/react-native-healthkit",
11518
+ "@livekit/react-native",
11519
+ "@lodev09/react-native-exify",
11520
+ "@luciq/react-native",
11521
+ "@mattermost/react-native-paste-input",
11522
+ "@mgcrea/vision-camera-barcode-scanner",
11523
+ "@mozzius/expo-dynamic-app-icon",
11524
+ "@okta/okta-react-native",
11525
+ "@playerdata/react-native-mcu-manager",
11526
+ "@react-native-community/audio-toolkit",
11527
+ "@react-native-community/checkbox",
11528
+ "@react-native-community/progress-bar-android",
11529
+ "@react-native-community/toolbar-android",
11530
+ "@react-native-documents/picker",
11531
+ "@react-native-firebase/app-distribution",
11532
+ "@react-native-firebase/database",
11533
+ "@react-native-firebase/in-app-messaging",
11534
+ "@react-native-ml-kit/face-detection",
11535
+ "@react-native-ml-kit/text-recognition",
11536
+ "@react-native-segmented-control/segmented-control",
11537
+ "@react-native-seoul/naver-login",
11538
+ "@renegades/react-native-tickle",
11539
+ "@rnw-community/react-native-payments",
11540
+ "@rudderstack/rudder-integration-firebase-react-native",
11541
+ "@rudderstack/rudder-sdk-react-native",
11542
+ "@sbaiahmed1/react-native-biometrics",
11543
+ "@sbaiahmed1/react-native-biometrics/types",
11544
+ "@sbaiahmed1/react-native-blur",
11545
+ "@shopify/checkout-sheet-kit",
11546
+ "@shopify/react-native-skia",
11547
+ "@stream-io/video-react-native-sdk",
11548
+ "@stripe/stripe-identity-react-native",
11549
+ "@stripe/stripe-react-native",
11550
+ "@stripe/stripe-react-native/lib/typescript/src/types",
11551
+ "@stripe/stripe-terminal-react-native",
11552
+ "@supersami/rn-foreground-service",
11553
+ "@survicate/react-native-survicate",
11554
+ "@twilio/voice-react-native-sdk",
11555
+ "@walletconnect/react-native-compat",
11556
+ "@xmartlabs/react-native-line",
11557
+ "@zoontek/react-native-navigation-bar",
11558
+ "clevertap-react-native",
11559
+ "expo-dynamic-app-icon",
11560
+ "expo-glass-effect",
11561
+ "expo-health-connect",
11562
+ "expo-in-app-updates",
11563
+ "expo-mesh-gradient",
11564
+ "expo-modules-core",
11565
+ "expo-share-extension",
11566
+ "expo-superwall",
11567
+ "freerasp-react-native",
11568
+ "klaviyo-react-native-sdk",
11569
+ "llama.rn",
11570
+ "mixpanel-react-native",
11571
+ "newrelic-react-native-agent",
11572
+ "realm",
11573
+ "react-native-a11y",
11574
+ "react-native-adapty",
11575
+ "react-native-add-calendar-event",
11576
+ "react-native-adjust",
11577
+ "react-native-advanced-input-mask",
11578
+ "react-native-agora",
11579
+ "react-native-amplitude-analytics",
11580
+ "react-native-android-location-enabler",
11581
+ "react-native-android-widget",
11582
+ "react-native-animateable-text",
11583
+ "react-native-app-clip",
11584
+ "react-native-appsflyer",
11585
+ "react-native-avoid-softinput",
11586
+ "react-native-azure-auth",
11587
+ "react-native-background-actions",
11588
+ "react-native-bare-kit",
11589
+ "react-native-ble-manager",
11590
+ "react-native-bluetooth-classic",
11591
+ "react-native-bluetooth-state-manager",
11592
+ "react-native-bottom-tabs",
11593
+ "react-native-branch",
11594
+ "react-native-camera-kit",
11595
+ "react-native-change-icon",
11596
+ "react-native-charts-wrapper",
11597
+ "react-native-dialogs",
11598
+ "react-native-document-scanner-plugin",
11599
+ "react-native-drop-shadow",
11600
+ "react-native-dynamic-app-icon",
11601
+ "react-native-expo-braintree",
11602
+ "react-native-extra-dimensions-android",
11603
+ "react-native-fast-opencv",
11604
+ "react-native-fast-shadow",
11605
+ "react-native-fast-squircle",
11606
+ "react-native-fast-tflite",
11607
+ "react-native-filament",
11608
+ "react-native-file-viewer-turbo",
11609
+ "react-native-floating-label-input",
11610
+ "react-native-google-cast",
11611
+ "react-native-google-fit",
11612
+ "react-native-google-places-sdk",
11613
+ "react-native-health",
11614
+ "react-native-health-connect",
11615
+ "react-native-hole-view",
11616
+ "react-native-html-to-pdf",
11617
+ "react-native-image-marker",
11618
+ "react-native-incall-manager",
11619
+ "react-native-ios-modal",
11620
+ "react-native-keyboard-controller/bindings",
11621
+ "react-native-keyboard-controller/findNodeHandle",
11622
+ "react-native-keyboard-manager",
11623
+ "react-native-keys",
11624
+ "react-native-loader-kit",
11625
+ "react-native-localization",
11626
+ "react-native-localization-settings",
11627
+ "react-native-mixpanel",
11628
+ "react-native-moengage",
11629
+ "react-native-navigation-mode",
11630
+ "react-native-network-info",
11631
+ "react-native-nitro-haptics",
11632
+ "react-native-otp-verify",
11633
+ "react-native-passkey",
11634
+ "react-native-payments",
11635
+ "react-native-pdf",
11636
+ "react-native-pdf-renderer",
11637
+ "react-native-pinchable",
11638
+ "react-native-play-age-range-declaration",
11639
+ "react-native-prompt-android",
11640
+ "react-native-radial-gradient",
11641
+ "react-native-razorpay",
11642
+ "react-native-reanimated/platformFunctions/dispatchCommand",
11643
+ "react-native-reanimated/platformFunctions/measure",
11644
+ "react-native-reanimated/platformFunctions/scrollTo",
11645
+ "react-native-reanimated/platformFunctions/setGestureState",
11646
+ "react-native-reanimated/platformFunctions/setNativeProps",
11647
+ "react-native-reanimated/specs/NativeReanimatedModule",
11648
+ "react-native-reanimated/specs/NativeWorkletsModule",
11649
+ "react-native-restart-newarch",
11650
+ "react-native-screenguard",
11651
+ "react-native-screens",
11652
+ "react-native-screenshot-prevent",
11653
+ "react-native-select-contact",
11654
+ "react-native-send-intent",
11655
+ "react-native-share-menu",
11656
+ "react-native-shared-element",
11657
+ "react-native-simple-toast",
11658
+ "react-native-spinkit",
11659
+ "react-native-ssl-public-key-pinning",
11660
+ "react-native-star-io10",
11661
+ "react-native-system-navigation-bar",
11662
+ "react-native-tcp",
11663
+ "react-native-teleport",
11664
+ "react-native-theme-switch-animation",
11665
+ "react-native-theoplayer",
11666
+ "react-native-tiktok-business-sdk",
11667
+ "react-native-twilio-video-webrtc",
11668
+ "react-native-udp",
11669
+ "react-native-ui-lib",
11670
+ "react-native-uitextview",
11671
+ "react-native-video-trim",
11672
+ "react-native-voip-push-notification",
11673
+ "react-native-volume-manager",
11674
+ "react-native-wallet-manager",
11675
+ "react-native-watch-connectivity",
11676
+ "react-native-webp-format",
11677
+ "react-native-wheel-pick",
11678
+ "react-native-wheel-picker-android",
11679
+ "react-native-wifi-reborn",
11680
+ "react-native-windows",
11681
+ "react-native-worklets/package.json",
11682
+ "react-native-worklets/specs/NativeWorkletsModule",
11683
+ "react-native-xaml",
11684
+ "react-native-zeroconf",
11685
+ "rn-qr-generator",
11686
+ "rn-secure-storage",
11687
+ "scandit-react-native-datacapture-barcode",
11688
+ "scandit-react-native-datacapture-core",
11689
+ "sp-react-native-in-app-updates",
11690
+ "stream-chat-expo",
11691
+ "stream-chat-react-native",
11692
+ "voltra"
11693
+ ];
11694
+
11695
+ // ../peach-compat/src/generated/light-native-package-names.ts
11696
+ var LIGHT_NATIVE_PACKAGE_NAMES = [
11697
+ "@100mslive/react-native-hms",
11698
+ "@account-kit/react-native-signer",
11699
+ "@adobe/react-native-aepassurance",
11700
+ "@adobe/react-native-aepcampaignclassic",
11701
+ "@adobe/react-native-aepedge",
11702
+ "@adobe/react-native-aepedgebridge",
11703
+ "@adobe/react-native-aepedgeconsent",
11704
+ "@adobe/react-native-aepedgeidentity",
11705
+ "@adobe/react-native-aepmessaging",
11706
+ "@adobe/react-native-aepoptimize",
11707
+ "@adobe/react-native-aepplaces",
11708
+ "@adobe/react-native-aeptarget",
11709
+ "@adobe/react-native-aepuserprofile",
11710
+ "@adrekic/expo-meta-wearables-dat",
11711
+ "@adrianso/react-native-device-brightness",
11712
+ "@alexzunik/react-native-money-input",
11713
+ "@algocare/react-native-code-push",
11714
+ "@allboatsrise/expo-marketingcloudsdk",
11715
+ "@ammarahmed/react-native-eventsource",
11716
+ "@ammarahmed/react-native-share-extension",
11717
+ "@ammarahmed/react-native-sodium",
11718
+ "@ammarahmed/react-native-upload",
11719
+ "@amplitude/analytics-react-native",
11720
+ "@amplitude/experiment-react-native-client",
11721
+ "@amplitude/plugin-engagement-react-native",
11722
+ "@amplitude/plugin-session-replay-react-native",
11723
+ "@amplitude/react-native",
11724
+ "@amplitude/session-replay-react-native",
11725
+ "@animo-id/expo-secure-environment",
11726
+ "@ansight/react-native",
11727
+ "@anythingai/launcher",
11728
+ "@appcues/react-native",
11729
+ "@appdynamics/react-native-agent",
11730
+ "@appier/react-native-sdk",
11731
+ "@appmetrica/react-native-analytics",
11732
+ "@ascendtis/react-native-voice-to-text",
11733
+ "@bam.tech/react-native-app-security",
11734
+ "@bam.tech/react-native-config",
11735
+ "@bennyblader/ddk-rn",
11736
+ "@bishaldahal/react-native-khalti-checkout",
11737
+ "@blazejkustra/react-native-alert",
11738
+ "@boterop/react-native-background-timer",
11739
+ "@bounceapp/react-native-paypal",
11740
+ "@brandingbrand/react-native-app-restart",
11741
+ "@breeztech/breez-sdk-spark-react-native",
11742
+ "@brigad/react-native-adservices",
11743
+ "@bsky.app/expo-dynamic-app-icon",
11744
+ "@bsky.app/expo-translate-text",
11745
+ "@bufgix/react-native-secure-window",
11746
+ "@burnt-labs/expo-satya-attest",
11747
+ "@callstack/repack",
11748
+ "@castleio/react-native-castle",
11749
+ "@chargebee/react-native-chargebee",
11750
+ "@checkout.com/checkout-react-native-components",
11751
+ "@clear.sale/behavior-analytics-react-native-sdk",
11752
+ "@cloudflare/react-native-webrtc",
11753
+ "@cloudflare/realtimekit-react-native",
11754
+ "@cloudflare/realtimekit-react-native-ui",
11755
+ "@code-push-next/react-native-code-push",
11756
+ "@coinbase/mobile-wallet-protocol-host",
11757
+ "@coinbase/wallet-mobile-sdk",
11758
+ "@companycam/vibe-check",
11759
+ "@compdfkit_pdf_sdk/react_native",
11760
+ "@consento/sync-randombytes",
11761
+ "@contentsquare/react-native-bridge",
11762
+ "@coralogix/react-native-plugin",
11763
+ "@cordialinc/react-native-sdk",
11764
+ "@curity/identityserver-haapi-react-native-sdk",
11765
+ "@d11/dota",
11766
+ "@d11/marco",
11767
+ "@daily-co/react-native-webrtc",
11768
+ "@dariyd/react-native-text-recognition",
11769
+ "@dashdoc/react-native-system-sounds",
11770
+ "@datadog/mobile-react-native-session-replay",
11771
+ "@datadome/datadome-axios",
11772
+ "@datadome/react-native-datadome",
11773
+ "@datalyr/react-native",
11774
+ "@descope/react-native-sdk",
11775
+ "@deuna/react-native-sdk",
11776
+ "@dev-amirzubair/react-native-voice",
11777
+ "@devikai/react-native",
11778
+ "@devrev/sdk-react-native",
11779
+ "@didit-protocol/sdk-react-native",
11780
+ "@digia-engage/core",
11781
+ "@dub/react-native",
11782
+ "@dynatrace/react-native-plugin",
11783
+ "@edkimmel/expo-audio-stream",
11784
+ "@embrace-io/react-native",
11785
+ "@embrace-io/react-native-tracer-provider",
11786
+ "@empower-nokta/react-native-mobile-ads",
11787
+ "@entria/rn-face-detector",
11788
+ "@entrust.corporation/idvsdk-reactnative",
11789
+ "@evervault/evervault-react-native",
11790
+ "@evrotrust/et-react-native-wl-sdk",
11791
+ "@exodus/react-native-async-storage",
11792
+ "@exodus/react-native-biometrics",
11793
+ "@exodus/react-native-bundle-loader",
11794
+ "@exodus/react-native-fs",
11795
+ "@exodus/react-native-keychain",
11796
+ "@exodus/react-native-nft-viewer",
11797
+ "@exodus/react-native-notifications",
11798
+ "@exodus/react-native-payments",
11799
+ "@exodus/react-native-prompt-android",
11800
+ "@exodus/react-native-reanimated",
11801
+ "@exodus/react-native-screenshot-detector",
11802
+ "@exodus/react-native-wallet",
11803
+ "@exodus/rive-react-native",
11804
+ "@extole/react-native-sdk",
11805
+ "@fedimint/react-native",
11806
+ "@freddixx/react-native-ad-manager",
11807
+ "@freshpaint/freshpaint-react-native",
11808
+ "@frontegg/react-native",
11809
+ "@gainsight-px/react-native-gainsight-px",
11810
+ "@getalby/expo-shared-preferences",
11811
+ "@getcello/cello-react-native",
11812
+ "@getstoryteller/react-native-storyteller-sdk",
11813
+ "@getvouch/react-native-sdk",
11814
+ "@glance-networks/reactnative-bridge",
11815
+ "@google-cloud/recaptcha-enterprise-react-native",
11816
+ "@grafana/faro-react-native",
11817
+ "@granite-js/image",
11818
+ "@granite-js/video",
11819
+ "@hackler/react-native-sdk",
11820
+ "@haroldtran/react-native-thermal-printer",
11821
+ "@heap/react-native-heap",
11822
+ "@heartbot/expo-google-authentication",
11823
+ "@heasy/react-native-sunmi-printer",
11824
+ "@hero-design/react-native-month-year-picker",
11825
+ "@hexigames/react-native-apple-ads-attribution",
11826
+ "@hmscore/react-native-hms-ads",
11827
+ "@hmscore/react-native-hms-availability",
11828
+ "@hmscore/react-native-hms-location",
11829
+ "@hmscore/react-native-hms-map",
11830
+ "@hmscore/react-native-hms-push",
11831
+ "@honeycombio/opentelemetry-react-native",
11832
+ "@hotta/react-native-imagepicker",
11833
+ "@howincodes/expo-dynamic-app-icon",
11834
+ "@ht-sdks/sovran-react-native",
11835
+ "@humansecurity/expo-mobile-sdk",
11836
+ "@humansecurity/react-native-sdk",
11837
+ "@ihealth/ihealthlibrary-react-native",
11838
+ "@imgly/editor-react-native",
11839
+ "@infinitered/react-native-mlkit-face-detection",
11840
+ "@infinitered/react-native-mlkit-object-detection",
11841
+ "@infinitered/react-native-mlkit-text-recognition",
11842
+ "@instana/react-native-agent",
11843
+ "@inthepocket/react-native-service-discovery",
11844
+ "@ionic/portals-react-native",
11845
+ "@ivandigitalsolutions/react-native-camerax",
11846
+ "@jitsi/react-native-sdk",
11847
+ "@join-stories/react-native-widgets",
11848
+ "@json-eval-rs/react-native",
11849
+ "@ketch-com/ketch-react-native",
11850
+ "@klarna/platform-colors",
11851
+ "@launchhq/react-native-keyboard-composer",
11852
+ "@layers/expo-tiktok-business",
11853
+ "@leonsilicon/react-native-list",
11854
+ "@livekit/react-native-krisp-noise-filter",
11855
+ "@lobehub/expo-better-auth-passkey",
11856
+ "@logbrew/react-native",
11857
+ "@mauron85/react-native-background-geolocation",
11858
+ "@mccsoft/react-native-matomo",
11859
+ "@mentra/bluetooth-sdk",
11860
+ "@metamask/react-native-acm",
11861
+ "@metamask/react-native-payments",
11862
+ "@microblink/blinkcard-react-native",
11863
+ "@microsoft/react-native-clarity",
11864
+ "@mitsuharu/react-native-sunmi-printer-library",
11865
+ "@mixpanel/react-native-session-replay",
11866
+ "@moneykit/connect-react-native",
11867
+ "@more-tech/react-native-libsodium",
11868
+ "@mux/mux-react-native-player",
11869
+ "@mykin-ai/expo-audio-stream",
11870
+ "@networkinternational/ni-card-management-sdk",
11871
+ "@nevis-security/nevis-mobile-authentication-sdk-react",
11872
+ "@nexigen/react-native-pre-text",
11873
+ "@nitro-perf-devtools/core",
11874
+ "@norcy/react-native-toolkit",
11875
+ "@npm_fluentco/adflow-react-native-sdk",
11876
+ "@nsure-ai/react-native-client-sdk",
11877
+ "@nuggetslife/vc-rn",
11878
+ "@obsidian_north/react-native-mediastore",
11879
+ "@offline-protocol/mesh-sdk",
11880
+ "@oguzhnatly/react-native-image-manipulator",
11881
+ "@olo/pay-react-native",
11882
+ "@onekeyfe/react-native-aes-crypto",
11883
+ "@onekeyfe/react-native-app-update",
11884
+ "@onekeyfe/react-native-async-storage",
11885
+ "@onekeyfe/react-native-background-thread",
11886
+ "@onekeyfe/react-native-ble-utils",
11887
+ "@onekeyfe/react-native-bundle-crypto",
11888
+ "@onekeyfe/react-native-bundle-update",
11889
+ "@onekeyfe/react-native-check-biometric-auth-changed",
11890
+ "@onekeyfe/react-native-cloud-fs",
11891
+ "@onekeyfe/react-native-cloud-kit-module",
11892
+ "@onekeyfe/react-native-device-utils",
11893
+ "@onekeyfe/react-native-dns-lookup",
11894
+ "@onekeyfe/react-native-get-random-values",
11895
+ "@onekeyfe/react-native-keychain-module",
11896
+ "@onekeyfe/react-native-lite-card",
11897
+ "@onekeyfe/react-native-native-logger",
11898
+ "@onekeyfe/react-native-network-info",
11899
+ "@onekeyfe/react-native-network-throttle",
11900
+ "@onekeyfe/react-native-pbkdf2",
11901
+ "@onekeyfe/react-native-perf-memory",
11902
+ "@onekeyfe/react-native-perf-stats",
11903
+ "@onekeyfe/react-native-ping",
11904
+ "@onekeyfe/react-native-range-downloader",
11905
+ "@onekeyfe/react-native-sni-connect",
11906
+ "@onekeyfe/react-native-splash-screen",
11907
+ "@onekeyfe/react-native-split-bundle-loader",
11908
+ "@onekeyfe/react-native-tab-view",
11909
+ "@onekeyfe/react-native-tcp-socket",
11910
+ "@onekeyfe/react-native-webview-cleaner",
11911
+ "@onekeyfe/react-native-zip-archive",
11912
+ "@onfido/react-native-sdk",
11913
+ "@onramp-sdk/react-native",
11914
+ "@opacity-labs/react-native-opacity",
11915
+ "@openobserve/mobile-react-native",
11916
+ "@openobserve/mobile-react-native-session-replay",
11917
+ "@openobserve/mobile-react-native-webview",
11918
+ "@openreplay/react-native",
11919
+ "@optimove-inc/react-native",
11920
+ "@oracle/react-native-pushiomanager",
11921
+ "@oscilar/react-native-oscilar-module",
11922
+ "@oxyhq/services",
11923
+ "@pagopa/io-react-native-cie",
11924
+ "@pagopa/io-react-native-cieid",
11925
+ "@pagopa/io-react-native-crypto",
11926
+ "@pagopa/io-react-native-http-client",
11927
+ "@pagopa/io-react-native-integrity",
11928
+ "@pagopa/io-react-native-iso18013",
11929
+ "@pagopa/io-react-native-jwt",
11930
+ "@pagopa/io-react-native-login-utils",
11931
+ "@pagopa/io-react-native-secure-storage",
11932
+ "@pagopa/io-react-native-zendesk",
11933
+ "@pagopa/react-native-cie",
11934
+ "@paul_sizon/expo-pdf-text-extract",
11935
+ "@payrails/react-native-sdk",
11936
+ "@paytabs/react-native-paytabs",
11937
+ "@pchmn/expo-material3-theme",
11938
+ "@pdftron/react-native-pdf",
11939
+ "@peacechen/react-native-otp-autocomplete",
11940
+ "@phantom/react-native-juicebox-sdk",
11941
+ "@picovoice/porcupine-react-native",
11942
+ "@picovoice/react-native-voice-processor",
11943
+ "@piwikpro/react-native-piwik-pro-sdk",
11944
+ "@pocketpalai/llama.rn",
11945
+ "@prelude.so/react-native-sdk",
11946
+ "@premieroctet/react-native-wallet",
11947
+ "@primer-io/react-native",
11948
+ "@privy-io/expo-native-extensions",
11949
+ "@psync/anti-jailbreak",
11950
+ "@qonversion/react-native-sdk",
11951
+ "@quidone/react-native-wheel-picker-feedback",
11952
+ "@radiusnetworks/react-native-flybuy-core",
11953
+ "@radiusnetworks/react-native-flybuy-pickup",
11954
+ "@react-native-agconnect/applinking",
11955
+ "@react-native-community/clipboard",
11956
+ "@react-native-community/cookies",
11957
+ "@react-native-community/voice",
11958
+ "@react-native-kakao/core",
11959
+ "@react-native-kakao/share",
11960
+ "@react-native-kakao/social",
11961
+ "@react-native-kakao/user",
11962
+ "@react-native-karte/core",
11963
+ "@react-native-karte/in-app-messaging",
11964
+ "@react-native-karte/notification",
11965
+ "@react-native-seoul/kakao-login",
11966
+ "@react-native-zohosalesiq/mobilisten",
11967
+ "@react-native-zohosalesiq/mobilisten-core",
11968
+ "@reclaimprotocol/inapp-rn-sdk",
11969
+ "@reeq/react-native-device-brightness",
11970
+ "@reeq/react-native-passkit",
11971
+ "@regulaforensics/document-reader",
11972
+ "@regulaforensics/face-sdk",
11973
+ "@regulaforensics/idv",
11974
+ "@regulaforensics/react-native-document-reader-api",
11975
+ "@revopush/react-native-code-push",
11976
+ "@riskified/react-native-riskified-sdk",
11977
+ "@rownd/react-native",
11978
+ "@ryftpay/react-native",
11979
+ "@sap_oss/gigya-react-native-plugin-for-sap-customer-data-cloud",
11980
+ "@sayem314/react-native-keep-awake",
11981
+ "@secondts/bark-react-native",
11982
+ "@segment/analytics-react-native-plugin-idfa",
11983
+ "@selligent-marketing-cloud/selligent-react-native",
11984
+ "@semisquircle/expo-dynamic-app-icon",
11985
+ "@seontechnologies/seon-react-native-mobile-wrapper",
11986
+ "@serserm/react-native-turbo-serialport",
11987
+ "@shadahmad7/react-native-calendar",
11988
+ "@shadahmad7/react-native-store-review",
11989
+ "@shenai/react-native-sdk",
11990
+ "@sherlo/react-native-storybook",
11991
+ "@simula/ads-react-native",
11992
+ "@siteed/sherpa-onnx.rn",
11993
+ "@six33/react-native-bg-removal",
11994
+ "@socure-inc/docv-react-native",
11995
+ "@socure-inc/react-native-device-risk",
11996
+ "@solidx/react-native-true-sheet",
11997
+ "@somesoap/react-native-image-palette",
11998
+ "@sourcepoint/react-native-cmp",
11999
+ "@sourcetoad/react-native-sketch-canvas",
12000
+ "@speechmatics/expo-two-way-audio",
12001
+ "@splitsoftware/splitio-react-native",
12002
+ "@splunk/otel-react-native",
12003
+ "@stream-io/noise-cancellation-react-native",
12004
+ "@stream-io/react-native-callingx",
12005
+ "@stream-io/react-native-webrtc",
12006
+ "@stream-io/video-filters-react-native",
12007
+ "@sumsub/react-native-mobilesdk-module",
12008
+ "@superfan-app/apple-music-auth",
12009
+ "@superwall/react-native-superwall",
12010
+ "@tap-payments/apple-pay-rn",
12011
+ "@tap-payments/google-pay-rn",
12012
+ "@taprails/tap-to-pay",
12013
+ "@telnyx/react-voice-commons-sdk",
12014
+ "@tencentcloud/react-native-push",
12015
+ "@terrylinla/react-native-sketch-canvas",
12016
+ "@thegrizzlylabs/react-native-genius-scan",
12017
+ "@theoplayer/react-native-analytics-adobe",
12018
+ "@theoplayer/react-native-analytics-adobe-edge",
12019
+ "@theoplayer/react-native-analytics-bitmovin",
12020
+ "@theoplayer/react-native-analytics-conviva",
12021
+ "@theoplayer/react-native-analytics-gemius",
12022
+ "@theoplayer/react-native-analytics-mux",
12023
+ "@theoplayer/react-native-analytics-nielsen",
12024
+ "@theoplayer/react-native-analytics-youbora",
12025
+ "@theoplayer/react-native-engage",
12026
+ "@tillpos/rn-receipt-printer-utils",
12027
+ "@timwangdev/react-native-geocoder",
12028
+ "@trycourier/courier-react-native",
12029
+ "@tryvital/vital-core-react-native",
12030
+ "@tryvital/vital-health-react-native",
12031
+ "@ttwrpz/react-native-brightness-setting",
12032
+ "@tursodatabase/sync-react-native",
12033
+ "@twilio/video-react-native-sdk",
12034
+ "@unifyapps/analytics-react-native",
12035
+ "@unomed/react-native-matrix-sdk",
12036
+ "@userpilot/react-native",
12037
+ "@veriff/react-native-sdk",
12038
+ "@verisoul_ai/react-native-verisoul",
12039
+ "@videosdk.live/react-native-webrtc",
12040
+ "@vonage/client-sdk-video-react-native",
12041
+ "@voximplant/react-native-foreground-service",
12042
+ "@wokcito/ffmpeg-kit-react-native",
12043
+ "@wootric/react-native-wootric",
12044
+ "@wscsports/blaze-rtn-sdk",
12045
+ "@wwimmo/react-native-sketch-canvas",
12046
+ "@zoom/meetingsdk-react-native",
12047
+ "@zoom/react-native-videosdk",
12048
+ "agora-react-native-rtm",
12049
+ "aliyun-react-native-push",
12050
+ "amazon-cognito-identity-js",
12051
+ "apple-pay-react-native-expo",
12052
+ "apptentive-react-native",
12053
+ "arlon-test-library",
12054
+ "bcrypt-react-native",
12055
+ "bitlabs",
12056
+ "brick-module",
12057
+ "bridgefy-react-native",
12058
+ "chartbeat-react-native-bridge-sdk",
12059
+ "cleverpush-react-native",
12060
+ "cloudx-react-native",
12061
+ "cm-sdk-react-native-v3-new-arch",
12062
+ "cobrowse-sdk-react-native",
12063
+ "cojson-core-rn",
12064
+ "contour-ai-sdk",
12065
+ "create-react-native-library",
12066
+ "crisp-sdk-react-native",
12067
+ "cui-llama.rn",
12068
+ "dynamsoft-capture-vision-react-native",
12069
+ "expo-activity-motion",
12070
+ "expo-ai-kit",
12071
+ "expo-app-blocker",
12072
+ "expo-audio-stream-pcm",
12073
+ "expo-barcode-scanner",
12074
+ "expo-brownfield",
12075
+ "expo-check-installed-apps",
12076
+ "expo-esim",
12077
+ "expo-face-check",
12078
+ "expo-face-detector",
12079
+ "expo-font-fallback",
12080
+ "expo-google-places",
12081
+ "expo-google-places-autocomplete",
12082
+ "expo-guided-access",
12083
+ "expo-http-server",
12084
+ "expo-image-and-video-compressor",
12085
+ "expo-in-app-purchases",
12086
+ "expo-kiosk-control",
12087
+ "expo-media-viewer",
12088
+ "expo-mlkit-ocr",
12089
+ "expo-native-launch-arguments",
12090
+ "expo-ocr-kit",
12091
+ "expo-onesignal-live-activities",
12092
+ "expo-otp-autofill",
12093
+ "expo-pdf-text-extract",
12094
+ "expo-react-native-adapter",
12095
+ "expo-realtime-audio",
12096
+ "expo-realtime-ivs-broadcast",
12097
+ "expo-reteno-sdk",
12098
+ "expo-samsung-pay",
12099
+ "expo-speech-transcriber",
12100
+ "expo-store-checker",
12101
+ "expo-text-extractor",
12102
+ "expo-tiktok-ads-events",
12103
+ "expo-tnk",
12104
+ "expo-torch",
12105
+ "expo-trim-video",
12106
+ "expo-ttp-edu",
12107
+ "expo-vpn-checker",
12108
+ "expo-widget",
12109
+ "expo-yandex-mapkit",
12110
+ "facepass-react-native-module",
12111
+ "fast-mlkit-translate-text",
12112
+ "framepayments-react-native",
12113
+ "getsocial-react-native-sdk",
12114
+ "helpshift-plugin-sdkx-react-native",
12115
+ "hyper-sdk-react",
12116
+ "hypertrack-sdk-react-native",
12117
+ "hypertrack-sdk-react-native-plugin-android-activity-service-google",
12118
+ "hypertrack-sdk-react-native-plugin-android-location-services-google",
12119
+ "hypertrack-sdk-react-native-plugin-android-push-service-firebase",
12120
+ "idwise-react-native-sdk",
12121
+ "infobip-mobile-messaging-react-native-plugin",
12122
+ "jcore-react-native",
12123
+ "jpush-react-native",
12124
+ "judokit-react-native",
12125
+ "localytics-react-native",
12126
+ "mappls-map-react-native",
12127
+ "mindbox-sdk",
12128
+ "mobile-payments-sdk-react-native",
12129
+ "mychips-react-sdk",
12130
+ "myfatoorah-reactnative",
12131
+ "neuroid-reactnative-sdk",
12132
+ "nodejs-mobile-react-native",
12133
+ "notifly-sdk",
12134
+ "onnxruntime-react-native",
12135
+ "opentok-react-native",
12136
+ "otpless-headless-rn-lite",
12137
+ "payme-mini-app",
12138
+ "payu-non-seam-less-react",
12139
+ "ping-openmls-sdk-react-native-macos",
12140
+ "plotline-engage",
12141
+ "pulse-updates",
12142
+ "ratex-react-native",
12143
+ "raygun4reactnative",
12144
+ "react-airplay",
12145
+ "react-native-accessibility-wrapper",
12146
+ "react-native-acoustic-connect-beta",
12147
+ "react-native-address-autocomplete",
12148
+ "react-native-adjust-oaid",
12149
+ "react-native-advertising-id",
12150
+ "react-native-agora-chat",
12151
+ "react-native-airplay-btn",
12152
+ "react-native-alarm-scheduler",
12153
+ "react-native-android-installed-apps-unblocking",
12154
+ "react-native-android-location-services-dialog-box",
12155
+ "react-native-android-log",
12156
+ "react-native-android-navbar-height",
12157
+ "react-native-android-notification-listener",
12158
+ "react-native-android-open-settings",
12159
+ "react-native-apay",
12160
+ "react-native-app-icon-changer",
12161
+ "react-native-appearance",
12162
+ "react-native-apple-payment",
12163
+ "react-native-appodeal",
12164
+ "react-native-appstore-version-checker",
12165
+ "react-native-apxor-rtm-plugin",
12166
+ "react-native-apxor-sdk",
12167
+ "react-native-argon2",
12168
+ "react-native-attribution-token",
12169
+ "react-native-audio",
12170
+ "react-native-audio-record",
12171
+ "react-native-background-color",
12172
+ "react-native-background-guardian",
12173
+ "react-native-background-remover",
12174
+ "react-native-battery-optimization-check",
12175
+ "react-native-beacon-radar",
12176
+ "react-native-bg-thread",
12177
+ "react-native-bildit-flybuy-core",
12178
+ "react-native-bildit-flybuy-pickup",
12179
+ "react-native-ble-advertiser",
12180
+ "react-native-blob-jsi-helper",
12181
+ "react-native-bluetooth-escpos-printer",
12182
+ "react-native-bottomsheet",
12183
+ "react-native-braintree-dropin-ui",
12184
+ "react-native-bspatch",
12185
+ "react-native-build-config",
12186
+ "react-native-bureauid-fraud-sdk",
12187
+ "react-native-caffe2",
12188
+ "react-native-call-detection",
12189
+ "react-native-call-log",
12190
+ "react-native-capture",
12191
+ "react-native-carrier-info",
12192
+ "react-native-channel-plugin",
12193
+ "react-native-check-biometric-auth-changed",
12194
+ "react-native-chottulink-sdk",
12195
+ "react-native-clarity",
12196
+ "react-native-clusterer",
12197
+ "react-native-code-push-diff",
12198
+ "react-native-connectivity-status",
12199
+ "react-native-convert-ph-asset",
12200
+ "react-native-converted-in-sdk",
12201
+ "react-native-cookies",
12202
+ "react-native-copy",
12203
+ "react-native-crash-tester",
12204
+ "react-native-crisp-chat-sdk",
12205
+ "react-native-cumquat",
12206
+ "react-native-customui",
12207
+ "react-native-daro-m",
12208
+ "react-native-datawedge-intents",
12209
+ "react-native-detect-frida",
12210
+ "react-native-device-activity",
12211
+ "react-native-device-crypto",
12212
+ "react-native-device-time-format",
12213
+ "react-native-device-uptime",
12214
+ "react-native-digitcamera",
12215
+ "react-native-doc-viewer",
12216
+ "react-native-easy-apple-pay",
12217
+ "react-native-encrypted-storage",
12218
+ "react-native-esc-pos-printer",
12219
+ "react-native-exif",
12220
+ "react-native-expo-metamap-sdk",
12221
+ "react-native-exponea-sdk",
12222
+ "react-native-fast-base64",
12223
+ "react-native-fast-crypto",
12224
+ "react-native-fast-encoder",
12225
+ "react-native-fast-openpgp",
12226
+ "react-native-fast-pbkdf2",
12227
+ "react-native-fast-rsa",
12228
+ "react-native-fatos-sdk",
12229
+ "react-native-fbsdk",
12230
+ "react-native-fetch-blob",
12231
+ "react-native-filament-buildcores",
12232
+ "react-native-firebaseui-auth",
12233
+ "react-native-firework-sdk",
12234
+ "react-native-flipper",
12235
+ "react-native-genuin-qa",
12236
+ "react-native-geocoder",
12237
+ "react-native-geocoder-reborn",
12238
+ "react-native-get-sms-android",
12239
+ "react-native-get-values",
12240
+ "react-native-gif",
12241
+ "react-native-gleapsdk",
12242
+ "react-native-global-exception-handler",
12243
+ "react-native-google-analytics-bridge",
12244
+ "react-native-google-pay",
12245
+ "react-native-google-play-integrity",
12246
+ "react-native-haptic",
12247
+ "react-native-haptic-patterns",
12248
+ "react-native-hash",
12249
+ "react-native-hce",
12250
+ "react-native-heic-converter",
12251
+ "react-native-helpscout-beacon",
12252
+ "react-native-hmac",
12253
+ "react-native-html-to-pdf-lite",
12254
+ "react-native-hud-hybrid",
12255
+ "react-native-hw-keyboard-event",
12256
+ "react-native-hyperkyc-sdk",
12257
+ "react-native-hyperpay-sdk",
12258
+ "react-native-hyperswitch-dev-sdk",
12259
+ "react-native-icloud-file-picker",
12260
+ "react-native-idfa",
12261
+ "react-native-idfa-aaid",
12262
+ "react-native-image-base64",
12263
+ "react-native-image-code-scanner",
12264
+ "react-native-image-filter-kit",
12265
+ "react-native-image-rotate",
12266
+ "react-native-image-to-pdf",
12267
+ "react-native-images-to-pdf",
12268
+ "react-native-immersive",
12269
+ "react-native-immersive-mode",
12270
+ "react-native-in-app-message",
12271
+ "react-native-incognia",
12272
+ "react-native-infy-camera",
12273
+ "react-native-insider",
12274
+ "react-native-install-referrer",
12275
+ "react-native-installed-app-checker",
12276
+ "react-native-is-detox",
12277
+ "react-native-is-keyboard-connected",
12278
+ "react-native-keyboard-input",
12279
+ "react-native-khipu",
12280
+ "react-native-klarna-inapp-sdk",
12281
+ "react-native-kochava-measurement",
12282
+ "react-native-kochava-measurement-apple-tracking",
12283
+ "react-native-kochava-measurement-google",
12284
+ "react-native-kochava-measurement-google-tracking",
12285
+ "react-native-kochava-tracker",
12286
+ "react-native-launch-navigator",
12287
+ "react-native-layout-guides",
12288
+ "react-native-local-resource",
12289
+ "react-native-marigold",
12290
+ "react-native-marketingcloudsdk",
12291
+ "react-native-mdm",
12292
+ "react-native-mediapipe",
12293
+ "react-native-mediapipe-posedetection",
12294
+ "react-native-metamap-sdk",
12295
+ "react-native-microphone-stream",
12296
+ "react-native-mlkit-ocr",
12297
+ "react-native-modpow",
12298
+ "react-native-moengage-cards",
12299
+ "react-native-moengage-geofence",
12300
+ "react-native-moengage-inbox",
12301
+ "react-native-mov-to-mp4",
12302
+ "react-native-mqtt-file-transfer",
12303
+ "react-native-msal",
12304
+ "react-native-music-control",
12305
+ "react-native-music-control-enhanced",
12306
+ "react-native-nami-sdk",
12307
+ "react-native-native-log",
12308
+ "react-native-netlog-fab",
12309
+ "react-native-netwatch",
12310
+ "react-native-nitro-bg-timer",
12311
+ "react-native-nitro-simple-toast",
12312
+ "react-native-nitro-thermal",
12313
+ "react-native-nitro-version-check",
12314
+ "react-native-notch-info",
12315
+ "react-native-notificare",
12316
+ "react-native-notificare-geo",
12317
+ "react-native-notificare-push",
12318
+ "react-native-notificare-push-ui",
12319
+ "react-native-notifications-utils",
12320
+ "react-native-onetrust-cmp",
12321
+ "react-native-open-notification",
12322
+ "react-native-otp-auto-verify",
12323
+ "react-native-passkeys",
12324
+ "react-native-passkit-wallet",
12325
+ "react-native-passport-reader",
12326
+ "react-native-paypal-web-payments",
12327
+ "react-native-pdf-lib",
12328
+ "react-native-pdf-page-image",
12329
+ "react-native-pdf-thumbnail",
12330
+ "react-native-pdf-to-image",
12331
+ "react-native-pencil-kit",
12332
+ "react-native-performance-stats",
12333
+ "react-native-performance-toolkit",
12334
+ "react-native-persona",
12335
+ "react-native-phonepe-pg",
12336
+ "react-native-play-install-referrer",
12337
+ "react-native-powerauth-mobile-sdk",
12338
+ "react-native-prevent-recent-screenshots",
12339
+ "react-native-qualtrics",
12340
+ "react-native-quantum-metric-library",
12341
+ "react-native-queue-it",
12342
+ "react-native-random-uuid",
12343
+ "react-native-random-values-jsi-helper",
12344
+ "react-native-release-profiler",
12345
+ "react-native-repro",
12346
+ "react-native-restart-android",
12347
+ "react-native-ringer-mode",
12348
+ "react-native-rook-sdk",
12349
+ "react-native-root-jail-detect",
12350
+ "react-native-safe-area",
12351
+ "react-native-scanbot-barcode-scanner-sdk",
12352
+ "react-native-schedule-exact-alarm-permission",
12353
+ "react-native-scoped-storage",
12354
+ "react-native-screenshot-detect",
12355
+ "react-native-session-timeout",
12356
+ "react-native-set-soft-input-mode",
12357
+ "react-native-sfh-library",
12358
+ "react-native-sha1",
12359
+ "react-native-sha256",
12360
+ "react-native-shared-preferences",
12361
+ "react-native-sherpa-onnx",
12362
+ "react-native-shield-fraud-plugin",
12363
+ "react-native-sim-cards-manager",
12364
+ "react-native-simple-crypto",
12365
+ "react-native-simple-heic2jpg",
12366
+ "react-native-skadnetwork",
12367
+ "react-native-smallcase-gateway",
12368
+ "react-native-smartlook-analytics",
12369
+ "react-native-smile-rn-lib",
12370
+ "react-native-smooth-clip-view",
12371
+ "react-native-sms",
12372
+ "react-native-sms-retriever",
12373
+ "react-native-sound-level",
12374
+ "react-native-sound-level-monitor",
12375
+ "react-native-sound-recorder",
12376
+ "react-native-spike-sdk",
12377
+ "react-native-square-in-app-payments",
12378
+ "react-native-ssl-pinning",
12379
+ "react-native-star-prnt-bitmap-fix",
12380
+ "react-native-startup-time",
12381
+ "react-native-static-safe-area-insets",
12382
+ "react-native-static-server",
12383
+ "react-native-store-front",
12384
+ "react-native-swrve-plugin",
12385
+ "react-native-syan-image-picker",
12386
+ "react-native-tappay",
12387
+ "react-native-tapresearch",
12388
+ "react-native-test-flight",
12389
+ "react-native-text-input-reset",
12390
+ "react-native-text-recognition",
12391
+ "react-native-themis",
12392
+ "react-native-thermal-printer",
12393
+ "react-native-thermal-receipt-printer-image-qr",
12394
+ "react-native-tiktok-business",
12395
+ "react-native-tooltips",
12396
+ "react-native-torch",
12397
+ "react-native-transfer-library",
12398
+ "react-native-ts-accountprotection",
12399
+ "react-native-ts-identity-orchestration",
12400
+ "react-native-ts-idv",
12401
+ "react-native-turbo-image-picker",
12402
+ "react-native-uaepass",
12403
+ "react-native-ultimate-config",
12404
+ "react-native-unit-components",
12405
+ "react-native-usb-serialport-for-android",
12406
+ "react-native-user-agent",
12407
+ "react-native-user-identity",
12408
+ "react-native-userleap",
12409
+ "react-native-video-cache-control",
12410
+ "react-native-video-helper",
12411
+ "react-native-virgil-crypto",
12412
+ "react-native-vision-camera-ocr-plus",
12413
+ "react-native-vizbee-homesso-sender-sdk",
12414
+ "react-native-vizbee-receiver-sdk",
12415
+ "react-native-vizbee-sender-sdk",
12416
+ "react-native-vpn-detector",
12417
+ "react-native-vpn-status",
12418
+ "react-native-walkme-sdk",
12419
+ "react-native-wallet",
12420
+ "react-native-wallet-passes",
12421
+ "react-native-webengage",
12422
+ "react-native-webrtc-kaleidoscope",
12423
+ "react-native-websocket-self-signed",
12424
+ "react-native-webview-ios-cache-clear",
12425
+ "react-native-wonderpush",
12426
+ "react-native-wonderpush-fcm",
12427
+ "react-native-wxwork",
12428
+ "react-native-yamap-plus",
12429
+ "react-native-zendesk-messaging",
12430
+ "react-native-zolozkit-tool",
12431
+ "readid-react-native",
12432
+ "rn-android-keyboard-adjust",
12433
+ "rn-audio-toolkit",
12434
+ "rn-encryption",
12435
+ "rn-linkrunner",
12436
+ "rn-mesh-gradient",
12437
+ "rn-pendo-sdk",
12438
+ "rn-star-prnt",
12439
+ "rn-url-resolver",
12440
+ "rxdx_player",
12441
+ "sahha-react-native",
12442
+ "securehybridapptesting",
12443
+ "shuftipro-onsite-mobilesdk",
12444
+ "smartech-push-react-native",
12445
+ "smartech-reactnative-nudges",
12446
+ "srs-heritage-chatbot",
12447
+ "storyly-placement-react-native",
12448
+ "surveysparrow-react-native-sdk",
12449
+ "tapjoy-react-native-sdk",
12450
+ "tealium-react-firebase",
12451
+ "tealium-react-native",
12452
+ "tealium-react-native-attribution",
12453
+ "terra-react",
12454
+ "theta-ble-client-react-native",
12455
+ "theta-client-react-native",
12456
+ "tiktok-opensdk-react-native",
12457
+ "tipsi-stripe",
12458
+ "tp-react-native-bluetooth-printer",
12459
+ "unified-ble-manager",
12460
+ "unity-levelplay-mediation",
12461
+ "usabilla-react-native",
12462
+ "vexo-analytics",
12463
+ "veyra-sdk-react-native",
12464
+ "vitest-mobile",
12465
+ "wix-react-native-text-size",
12466
+ "yandex-mobile-ads",
12467
+ "ymchat-react-native",
12468
+ "zego-express-engine-reactnative",
12469
+ "zego-zim-react-native",
12470
+ "zetakit_reactnative"
12471
+ ];
12472
+
12473
+ // ../peach-compat/src/generated/native-package-names.ts
12474
+ var NATIVE_STUB_PACKAGE_NAMES = [
12475
+ "@10play/tentap-editor",
12476
+ "@adobe/react-native-aepcore",
12477
+ "@alevy97/react-native-userdefaults",
12478
+ "@ankipro/react-native-file-open",
12479
+ "@appzung/react-native-code-push",
12480
+ "@aptabase/react-native",
12481
+ "@assembless/react-native-material-you",
12482
+ "@atomicfi/transact-react-native",
12483
+ "@atproto/oauth-client-expo",
12484
+ "@attarchi/react-native-lottie-splash-screen",
12485
+ "@avasapp/react-native-otp-autofill",
12486
+ "@aws-amplify/react-native",
12487
+ "@azesmway/react-native-unity",
12488
+ "@azzapp/react-native-skia-video",
12489
+ "@babylonjs/react-native",
12490
+ "@bacons/apple-targets",
12491
+ "@bam.tech/react-native-image-resizer",
12492
+ "@baronha/react-native-multiple-image-picker",
12493
+ "@baronha/react-native-photo-editor",
12494
+ "@baronha/ting",
12495
+ "@batch.com/react-native-plugin",
12496
+ "@bear-block/vision-camera-ocr",
12497
+ "@bhojaniasgar/react-native-otp-input",
12498
+ "@bitdrift/react-native",
12499
+ "@bittingz/expo-widgets",
12500
+ "@blackbox-vision/react-native-mercadopago-px",
12501
+ "@borndotcom/react-native-godot",
12502
+ "@bravemobile/react-native-code-push",
12503
+ "@braze/react-native-sdk",
12504
+ "@bsky.app/expo-guess-language",
12505
+ "@bsky.app/expo-image-crop-tool",
12506
+ "@bsky.app/expo-scroll-edge-effect",
12507
+ "@bsky.app/react-native-mmkv",
12508
+ "@bugfender/rn-bugfender",
12509
+ "@bugsnag/react-native",
12510
+ "@bugsnag/react-native-performance",
12511
+ "@callstack/liquid-glass",
12512
+ "@callstack/react-native-bottom-tabs",
12513
+ "@callstack/react-native-brownfield",
12514
+ "@callstack/react-native-local-notifications",
12515
+ "@callstack/react-native-sandbox",
12516
+ "@callstack/react-native-visionos",
12517
+ "@callstack/timezone-hermes-fix",
12518
+ "@candlefinance/faster-image",
12519
+ "@candlefinance/haptics",
12520
+ "@clerk/expo",
12521
+ "@clerk/expo-passkeys",
12522
+ "@cometchat/chat-uikit-react-native",
12523
+ "@computools/react-native-dynamic-app-icon",
12524
+ "@coolsoftwaretyler/cool-pdf",
12525
+ "@criipto/verify-expo",
12526
+ "@d11/react-native-fast-image",
12527
+ "@d11/react-native-mqtt",
12528
+ "@danielsaraldi/react-native-blur-view",
12529
+ "@dariyd/react-native-document-scanner",
12530
+ "@datadog/mobile-react-native",
12531
+ "@dbkable/react-native-speech-to-text",
12532
+ "@didomi/react-native",
12533
+ "@dimaportenko/react-native-shadow-view",
12534
+ "@domir/react-native-measure-text",
12535
+ "@dr.pogodin/react-native-audio",
12536
+ "@dr.pogodin/react-native-fs",
12537
+ "@dr.pogodin/react-native-static-server",
12538
+ "@dylankenneally/react-native-ssh-sftp",
12539
+ "@eabdullazyanov/react-native-sms-user-consent",
12540
+ "@expensify/react-native-background-task",
12541
+ "@expensify/react-native-hybrid-app",
12542
+ "@expensify/react-native-live-markdown",
12543
+ "@expensify/react-native-wallet",
12544
+ "@expo/app-integrity",
12545
+ "@expo/dom-webview",
12546
+ "@expo/ui",
12547
+ "@expo/ui/community/menu",
12548
+ "@extrieve_technologies/quickcapture_react_native",
12549
+ "@fingerprintjs/fingerprintjs-pro-react-native",
12550
+ "@fishjam-cloud/react-native-client",
12551
+ "@fishjam-cloud/react-native-webrtc",
12552
+ "@flitzinteractive/react-native-nitro-html-pdf",
12553
+ "@flyskywhy/react-native-gcanvas",
12554
+ "@fugood/react-native-audio-pcm-stream",
12555
+ "@fullstory/react-native",
12556
+ "@gabriel-sisjr/react-native-background-location",
12557
+ "@generac/react-native-local-network-permission",
12558
+ "@giphy/react-native-sdk",
12559
+ "@gmisoftware/react-native-pay",
12560
+ "@goliapkg/sentori-react-native",
12561
+ "@google/react-native-make-payment",
12562
+ "@googlemaps/react-native-navigation-sdk",
12563
+ "@haroldtran/react-native-pax",
12564
+ "@hot-updater/react-native",
12565
+ "@huymobile/react-native-sms-retriever-nitro-module",
12566
+ "@hyoper/rn-location",
12567
+ "@intercom/intercom-react-native",
12568
+ "@invertase/react-native-apple-authentication",
12569
+ "@iterable/expo-plugin",
12570
+ "@iterable/react-native-sdk",
12571
+ "@iternio/react-native-auto-play",
12572
+ "@joplin/react-native-alarm-notification",
12573
+ "@journeyapps/react-native-quick-sqlite",
12574
+ "@jwplayer/jwplayer-react-native",
12575
+ "@kesha-antonov/react-native-background-downloader",
12576
+ "@kilohealth/rn-fitness-tracker",
12577
+ "@kingstinct/react-native-healthkit",
12578
+ "@kishannareshpal/expo-pdf",
12579
+ "@livekit/react-native",
12580
+ "@livekit/react-native-webrtc",
12581
+ "@lodev09/react-native-exify",
12582
+ "@lodev09/react-native-true-sheet",
12583
+ "@logicwind/react-native-exit-app",
12584
+ "@logicwind/react-native-matomo-tracker",
12585
+ "@logicwind/react-native-status-bar-height",
12586
+ "@logicwind/react-native-tvos-keyboard",
12587
+ "@lomray/react-native-apple-music",
12588
+ "@loqalabs/loqa-expo-dsp",
12589
+ "@lottiefiles/dotlottie-react-native",
12590
+ "@luciq/react-native",
12591
+ "@lugg/maps",
12592
+ "@magrinj/expo-quick-look",
12593
+ "@mapbox/react-native-mapbox-gl",
12594
+ "@maplibre/maplibre-react-native",
12595
+ "@mattermost/react-native-emm",
12596
+ "@mattermost/react-native-network-client",
12597
+ "@mattermost/react-native-paste-input",
12598
+ "@mattermost/react-native-turbo-log",
12599
+ "@mattermost/rnutils",
12600
+ "@meedwire/react-native-image-rotate",
12601
+ "@metamask/native-utils",
12602
+ "@metamask/react-native-search-api",
12603
+ "@metamask/react-native-webview",
12604
+ "@mgcrea/react-native-jetpack-compose",
12605
+ "@mgcrea/vision-camera-barcode-scanner",
12606
+ "@mhpdev/react-native-haptics",
12607
+ "@mhpdev/react-native-speech",
12608
+ "@mj-studio/react-native-naver-map",
12609
+ "@mozzius/expo-dynamic-app-icon",
12610
+ "@nandorojo/galeria",
12611
+ "@notifee/react-native",
12612
+ "@novastera-oss/rn-google-signin",
12613
+ "@nozbe/watermelondb",
12614
+ "@okta/okta-react-native",
12615
+ "@oleg_svetlichnyi/expo-icloud-storage",
12616
+ "@op-engineering/op-sqlite",
12617
+ "@orbital-systems/react-native-esp-idf-provisioning",
12618
+ "@playerdata/react-native-mcu-manager",
12619
+ "@pnthach95/react-native-root-view-background",
12620
+ "@pocketpalai/react-native-speech",
12621
+ "@posthog/react-native-plugin",
12622
+ "@powersync/react-native",
12623
+ "@preeternal/react-native-cookie-manager",
12624
+ "@prisma/react-native",
12625
+ "@purchasely/react-native-purchasely-android-player",
12626
+ "@purchasely/react-native-purchasely-google",
12627
+ "@purchasely/react-native-purchasely-huawei",
12628
+ "@pusher/pusher-websocket-react-native",
12629
+ "@pushpendersingh/react-native-otp-verify",
12630
+ "@pushpendersingh/react-native-scanner",
12631
+ "@react-native-ai/apple",
12632
+ "@react-native-ai/mlc",
12633
+ "@react-native-async-storage/async-storage",
12634
+ "@react-native-camera-roll/camera-roll",
12635
+ "@react-native-clipboard/clipboard",
12636
+ "@react-native-community/audio-toolkit",
12637
+ "@react-native-community/blur",
12638
+ "@react-native-community/checkbox",
12639
+ "@react-native-community/datetimepicker",
12640
+ "@react-native-community/geolocation",
12641
+ "@react-native-community/image-editor",
12642
+ "@react-native-community/masked-view",
12643
+ "@react-native-community/netinfo",
12644
+ "@react-native-community/progress-bar-android",
12645
+ "@react-native-community/progress-view",
12646
+ "@react-native-community/push-notification-ios",
12647
+ "@react-native-community/slider",
12648
+ "@react-native-community/toolbar-android",
12649
+ "@react-native-cookies/cookies",
12650
+ "@react-native-documents/picker",
12651
+ "@react-native-documents/viewer",
12652
+ "@react-native-drivekit/core",
12653
+ "@react-native-drivekit/driver-data",
12654
+ "@react-native-firebase/analytics",
12655
+ "@react-native-firebase/app",
12656
+ "@react-native-firebase/app-check",
12657
+ "@react-native-firebase/app-distribution",
12658
+ "@react-native-firebase/auth",
12659
+ "@react-native-firebase/crashlytics",
12660
+ "@react-native-firebase/database",
12661
+ "@react-native-firebase/firestore",
12662
+ "@react-native-firebase/functions",
12663
+ "@react-native-firebase/in-app-messaging",
12664
+ "@react-native-firebase/installations",
12665
+ "@react-native-firebase/messaging",
12666
+ "@react-native-firebase/ml",
12667
+ "@react-native-firebase/perf",
12668
+ "@react-native-firebase/remote-config",
12669
+ "@react-native-firebase/storage",
12670
+ "@react-native-google-signin/google-signin",
12671
+ "@react-native-masked-view/masked-view",
12672
+ "@react-native-menu/menu",
12673
+ "@react-native-ml-kit/barcode-scanning",
12674
+ "@react-native-ml-kit/face-detection",
12675
+ "@react-native-ml-kit/identify-languages",
12676
+ "@react-native-ml-kit/image-labeling",
12677
+ "@react-native-ml-kit/text-recognition",
12678
+ "@react-native-ml-kit/translate-text",
12679
+ "@react-native-picker/picker",
12680
+ "@react-native-runtimes/core",
12681
+ "@react-native-runtimes/state",
12682
+ "@react-native-segmented-control/segmented-control",
12683
+ "@react-native-seoul/naver-login",
12684
+ "@reactvision/react-viro",
12685
+ "@remobile/react-native-toast",
12686
+ "@renegades/react-native-tickle",
12687
+ "@rive-app/react-native",
12688
+ "@rn-org/react-native-geofencing",
12689
+ "@rn-org/react-native-shortcuts",
12690
+ "@rnmapbox/maps",
12691
+ "@rnw-community/react-native-payments",
12692
+ "@rocket.chat/mobile-crypto",
12693
+ "@roman.sytnyk/blur-app-in-recents",
12694
+ "@rudderstack/rudder-integration-amplitude-react-native",
12695
+ "@rudderstack/rudder-integration-appcenter-react-native",
12696
+ "@rudderstack/rudder-integration-appsflyer-react-native",
12697
+ "@rudderstack/rudder-integration-braze-react-native",
12698
+ "@rudderstack/rudder-integration-clevertap-react-native",
12699
+ "@rudderstack/rudder-integration-facebook-react-native",
12700
+ "@rudderstack/rudder-integration-firebase-react-native",
12701
+ "@rudderstack/rudder-integration-singular-react-native",
12702
+ "@rudderstack/rudder-plugin-db-encryption-react-native",
12703
+ "@rudderstack/rudder-sdk-react-native",
12704
+ "@s77rt/react-native-date-picker",
12705
+ "@sbaiahmed1/react-native-biometrics",
12706
+ "@sbaiahmed1/react-native-blur",
12707
+ "@sdcx/nested-scroll",
12708
+ "@sdcx/pull-to-refresh",
12709
+ "@segment/analytics-react-native",
12710
+ "@segment/sovran-react-native",
12711
+ "@sendbird/calls-react-native",
12712
+ "@sentry/react-native",
12713
+ "@shakebugs/react-native-shake",
12714
+ "@shayrn/react-native-android-phone-number-hint",
12715
+ "@shopify/checkout-sheet-kit",
12716
+ "@shopify/react-native-performance",
12717
+ "@shopify/react-native-skia",
12718
+ "@simform_solutions/react-native-audio-waveform",
12719
+ "@siteed/audio-studio",
12720
+ "@situm/react-native",
12721
+ "@sparkfabrik/react-native-idfa-aaid",
12722
+ "@splicer97/react-native-android-keyboard-adjust",
12723
+ "@splicer97/react-native-mytracker",
12724
+ "@stefanmartin/expo-video-compress",
12725
+ "@stefanmartin/expo-video-watermark",
12726
+ "@stream-io/video-react-native-sdk",
12727
+ "@stripe/stripe-identity-react-native",
12728
+ "@stripe/stripe-react-native",
12729
+ "@stripe/stripe-terminal-react-native",
12730
+ "@superfan-app/spotify-auth",
12731
+ "@supersami/rn-foreground-service",
12732
+ "@survicate/react-native-survicate",
12733
+ "@swan-io/react-native-browser",
12734
+ "@swmansion/react-native-bottom-sheet",
12735
+ "@thehale/react-native-keep-awake",
12736
+ "@turbopush/react-native-code-push",
12737
+ "@twilio/voice-react-native-sdk",
12738
+ "@ua/react-native-airship",
12739
+ "@uiw/react-native-alipay",
12740
+ "@universe/hashcash-native",
12741
+ "@use-voltra/android-client",
12742
+ "@use-voltra/ios-client",
12743
+ "@vokhuyet/react-native-concurrent-sound",
12744
+ "@vonovak/react-native-theme-control",
12745
+ "@walletconnect/react-native-compat",
12746
+ "@wwdrew/expo-android-shared-preferences",
12747
+ "@wwdrew/expo-spotify-sdk",
12748
+ "@xmartlabs/react-native-line",
12749
+ "@xmtp/react-native-sdk",
12750
+ "@zoontek/react-native-navigation-bar",
12751
+ "amazon-ivs-react-native-player",
12752
+ "anyline-ocr-react-native-module",
12753
+ "appcenter",
12754
+ "appcenter-analytics",
12755
+ "appcenter-crashes",
12756
+ "apple-health",
12757
+ "bitmovin-player-react-native",
12758
+ "burnt",
12759
+ "clevertap-react-native",
12760
+ "customerio-reactnative",
12761
+ "expo",
12762
+ "expo-age-range",
12763
+ "expo-alikit",
12764
+ "expo-aliyun-push",
12765
+ "expo-alternate-app-icons",
12766
+ "expo-android-pedometer",
12767
+ "expo-android-shared-preferences",
12768
+ "expo-app-integrity",
12769
+ "expo-app-intents",
12770
+ "expo-app-metrics",
12771
+ "expo-apple-authentication",
12772
+ "expo-application",
12773
+ "expo-asset",
12774
+ "expo-assistant-functions",
12775
+ "expo-audio",
12776
+ "expo-av",
12777
+ "expo-background-fetch",
12778
+ "expo-background-task",
12779
+ "expo-barcode",
12780
+ "expo-barcode-scanner",
12781
+ "expo-battery",
12782
+ "expo-beacon",
12783
+ "expo-better-auth-passkey",
12784
+ "expo-blob",
12785
+ "expo-blur",
12786
+ "expo-brightness",
12787
+ "expo-calendar",
12788
+ "expo-callkit-telecom",
12789
+ "expo-camera",
12790
+ "expo-cellular",
12791
+ "expo-click-outside",
12792
+ "expo-clipboard",
12793
+ "expo-constants",
12794
+ "expo-contacts",
12795
+ "expo-core-spotlight",
12796
+ "expo-crypto",
12797
+ "expo-dev-client",
12798
+ "expo-device",
12799
+ "expo-document-picker",
12800
+ "expo-document-scanner",
12801
+ "expo-drag-drop-content-view",
12802
+ "expo-dynamic-app-icon",
12803
+ "expo-eas-client",
12804
+ "expo-emoji-picker",
12805
+ "expo-esim-utils",
12806
+ "expo-file-system",
12807
+ "expo-finance-kit",
12808
+ "expo-font",
12809
+ "expo-foreground-actions",
12810
+ "expo-gaode-map",
12811
+ "expo-gaode-map-search",
12812
+ "expo-gl",
12813
+ "expo-glass-effect",
12814
+ "expo-haptics",
12815
+ "expo-hardware-buttons",
12816
+ "expo-health-connect",
12817
+ "expo-helium",
12818
+ "expo-hinge",
12819
+ "expo-iap",
12820
+ "expo-ignore-battery-optimizations",
12821
+ "expo-image",
12822
+ "expo-image-manipulator",
12823
+ "expo-image-picker",
12824
+ "expo-in-app-updates",
12825
+ "expo-insights",
12826
+ "expo-intent-launcher",
12827
+ "expo-ios-visual-blur",
12828
+ "expo-keep-awake",
12829
+ "expo-key-event",
12830
+ "expo-libvlc-player",
12831
+ "expo-linear-gradient",
12832
+ "expo-linking",
12833
+ "expo-liquid-glass-native",
12834
+ "expo-liquid-glass-view",
12835
+ "expo-live-activity",
12836
+ "expo-live-photo",
12837
+ "expo-local-authentication",
12838
+ "expo-localization",
12839
+ "expo-location",
12840
+ "expo-mail-composer",
12841
+ "expo-maps",
12842
+ "expo-media-control",
12843
+ "expo-media-library",
12844
+ "expo-mesh-gradient",
12845
+ "expo-modules-core",
12846
+ "expo-music-picker",
12847
+ "expo-native-alipay",
12848
+ "expo-native-emojis-popup",
12849
+ "expo-native-sheet-emojis",
12850
+ "expo-native-wechat",
12851
+ "expo-navigation-bar",
12852
+ "expo-network",
12853
+ "expo-network-addons",
12854
+ "expo-notifications",
12855
+ "expo-observe",
12856
+ "expo-paperkit",
12857
+ "expo-passkey",
12858
+ "expo-paste-input",
12859
+ "expo-pencilkit-ui",
12860
+ "expo-phone-number-hint",
12861
+ "expo-pip",
12862
+ "expo-pretext",
12863
+ "expo-print",
12864
+ "expo-privacy-sensitive",
12865
+ "expo-quick-actions",
12866
+ "expo-rich-input",
12867
+ "expo-roomplan",
12868
+ "expo-screen-capture",
12869
+ "expo-screen-corner-radius",
12870
+ "expo-screen-orientation",
12871
+ "expo-secure-store",
12872
+ "expo-selectable-text",
12873
+ "expo-sensors",
12874
+ "expo-share-extension",
12875
+ "expo-share-intent",
12876
+ "expo-sharing",
12877
+ "expo-shazamkit",
12878
+ "expo-sms",
12879
+ "expo-speech",
12880
+ "expo-speech-recognition",
12881
+ "expo-splash-screen",
12882
+ "expo-sqlite",
12883
+ "expo-squircle-view",
12884
+ "expo-store-review",
12885
+ "expo-stream-audio",
12886
+ "expo-superwall",
12887
+ "expo-symbols",
12888
+ "expo-system-ui",
12889
+ "expo-targets",
12890
+ "expo-task-manager",
12891
+ "expo-testflight",
12892
+ "expo-tracking-transparency",
12893
+ "expo-translate-text",
12894
+ "expo-truecaller",
12895
+ "expo-tvos-search",
12896
+ "expo-updates",
12897
+ "expo-vector-search",
12898
+ "expo-video",
12899
+ "expo-video-metadata",
12900
+ "expo-video-thumbnails",
12901
+ "expo-web-browser",
12902
+ "expo-wechat",
12903
+ "expo-widgets",
12904
+ "expo-winter-fetch",
12905
+ "expo-winter-formdata",
12906
+ "freerasp-react-native",
12907
+ "group-ib-fp",
12908
+ "gt-react-native",
12909
+ "jail-monkey",
12910
+ "klaviyo-react-native-sdk",
12911
+ "llama.rn",
12912
+ "loro-react-native",
12913
+ "lottie-react-native",
12914
+ "mixpanel-react-native",
12915
+ "munim-bluetooth",
12916
+ "navigation-react-native",
12917
+ "newrelic-react-native-agent",
12918
+ "one",
12919
+ "ping-react-native",
12920
+ "posthog-react-native-session-replay",
12921
+ "pushy-react-native",
12922
+ "react-native",
12923
+ "react-native-a11y",
12924
+ "react-native-a11y-container",
12925
+ "react-native-a11y-order",
12926
+ "react-native-actions-shortcuts",
12927
+ "react-native-adapty",
12928
+ "react-native-add-calendar-event",
12929
+ "react-native-adjust",
12930
+ "react-native-admob-native-ads",
12931
+ "react-native-advanced-input-mask",
12932
+ "react-native-aes-crypto",
12933
+ "react-native-aes-gcm-crypto",
12934
+ "react-native-age-signals",
12935
+ "react-native-agora",
12936
+ "react-native-amap3d",
12937
+ "react-native-amplitude-analytics",
12938
+ "react-native-android-location-enabler",
12939
+ "react-native-android-widget",
12940
+ "react-native-animateable-text",
12941
+ "react-native-animated-observer",
12942
+ "react-native-app-attest",
12943
+ "react-native-app-auth",
12944
+ "react-native-app-clip",
12945
+ "react-native-app-logs",
12946
+ "react-native-app-review",
12947
+ "react-native-appearance-control",
12948
+ "react-native-apple-ads-attribution",
12949
+ "react-native-apple-llm",
12950
+ "react-native-appsflyer",
12951
+ "react-native-appstack-sdk",
12952
+ "react-native-ar-preview",
12953
+ "react-native-audio-api",
12954
+ "react-native-auth0",
12955
+ "react-native-authsignal",
12956
+ "react-native-auto-skeleton",
12957
+ "react-native-avoid-softinput",
12958
+ "react-native-awesome-card-io",
12959
+ "react-native-azure-auth",
12960
+ "react-native-background-actions",
12961
+ "react-native-background-fetch",
12962
+ "react-native-background-geolocation",
12963
+ "react-native-background-job",
12964
+ "react-native-background-task",
12965
+ "react-native-background-timer",
12966
+ "react-native-background-upload",
12967
+ "react-native-barcode-creator",
12968
+ "react-native-bare-kit",
12969
+ "react-native-beacon-kit",
12970
+ "react-native-better-clustering",
12971
+ "react-native-better-maps",
12972
+ "react-native-biometrics",
12973
+ "react-native-blasted-image",
12974
+ "react-native-ble-manager",
12975
+ "react-native-ble-nitro",
12976
+ "react-native-ble-plx",
12977
+ "react-native-blob-courier",
12978
+ "react-native-blob-util",
12979
+ "react-native-bluetooth-classic",
12980
+ "react-native-bluetooth-state-manager",
12981
+ "react-native-bluetooth-status",
12982
+ "react-native-blur-view",
12983
+ "react-native-blurhash",
12984
+ "react-native-bootsplash",
12985
+ "react-native-bottom-action-sheet",
12986
+ "react-native-bottom-sheet-behavior",
12987
+ "react-native-bottom-tabs",
12988
+ "react-native-branch",
12989
+ "react-native-calendar-events",
12990
+ "react-native-callkeep",
12991
+ "react-native-camera-kit",
12992
+ "react-native-capture-protection",
12993
+ "react-native-cardscan",
12994
+ "react-native-carplay",
12995
+ "react-native-cashfree-pg-sdk",
12996
+ "react-native-cesium",
12997
+ "react-native-change-icon",
12998
+ "react-native-charts-wrapper",
12999
+ "react-native-cloud-storage",
13000
+ "react-native-cloud-store",
13001
+ "react-native-code-push",
13002
+ "react-native-color-picker-ios",
13003
+ "react-native-compass-heading",
13004
+ "react-native-compressor",
13005
+ "react-native-config",
13006
+ "react-native-config-reader",
13007
+ "react-native-contacts",
13008
+ "react-native-context-menu-view",
13009
+ "react-native-cos-sdk",
13010
+ "react-native-create-thumbnail",
13011
+ "react-native-credentials-manager",
13012
+ "react-native-custom-splash",
13013
+ "react-native-customized-image-picker",
13014
+ "react-native-dark-mode",
13015
+ "react-native-date-picker",
13016
+ "react-native-deepgram",
13017
+ "react-native-default-preference",
13018
+ "react-native-detector",
13019
+ "react-native-device-attest",
13020
+ "react-native-device-country",
13021
+ "react-native-device-info",
13022
+ "react-native-dialogs",
13023
+ "react-native-document-picker",
13024
+ "react-native-document-picker-macos",
13025
+ "react-native-document-scanner",
13026
+ "react-native-document-scanner-plugin",
13027
+ "react-native-drop-shadow",
13028
+ "react-native-drum-picker",
13029
+ "react-native-dynamic-app-icon",
13030
+ "react-native-earl-thermal-printer",
13031
+ "react-native-ease",
13032
+ "react-native-edge-fade",
13033
+ "react-native-edge-to-edge",
13034
+ "react-native-emoji-popup",
13035
+ "react-native-enriched",
13036
+ "react-native-enriched-html",
13037
+ "react-native-enriched-markdown",
13038
+ "react-native-events",
13039
+ "react-native-exception-handler",
13040
+ "react-native-executorch",
13041
+ "react-native-exit-app",
13042
+ "react-native-expo-braintree",
13043
+ "react-native-external-display",
13044
+ "react-native-external-keyboard",
13045
+ "react-native-extra-dimensions-android",
13046
+ "react-native-fabric",
13047
+ "react-native-fast-image",
13048
+ "react-native-fast-io",
13049
+ "react-native-fast-opencv",
13050
+ "react-native-fast-secure-storage",
13051
+ "react-native-fast-shadow",
13052
+ "react-native-fast-squircle",
13053
+ "react-native-fast-tflite",
13054
+ "react-native-fast-trie",
13055
+ "react-native-fbads",
13056
+ "react-native-fbsdk-next",
13057
+ "react-native-fcm",
13058
+ "react-native-filament",
13059
+ "react-native-file-access",
13060
+ "react-native-file-logger",
13061
+ "react-native-file-selector",
13062
+ "react-native-file-viewer",
13063
+ "react-native-file-viewer-turbo",
13064
+ "react-native-fileupload",
13065
+ "react-native-find-local-devices",
13066
+ "react-native-fingerprint-scanner",
13067
+ "react-native-floating-label-input",
13068
+ "react-native-fs",
13069
+ "react-native-fs-turbo",
13070
+ "react-native-geo-fencing",
13071
+ "react-native-geolocation-service",
13072
+ "react-native-gesture-handler",
13073
+ "react-native-get-device-locale",
13074
+ "react-native-get-location",
13075
+ "react-native-get-random-values",
13076
+ "react-native-google-auth",
13077
+ "react-native-google-cast",
13078
+ "react-native-google-fit",
13079
+ "react-native-google-maps-plus",
13080
+ "react-native-google-mobile-ads",
13081
+ "react-native-google-places",
13082
+ "react-native-google-places-sdk",
13083
+ "react-native-google-play-install-referrer",
13084
+ "react-native-gzip",
13085
+ "react-native-haptic-feedback",
13086
+ "react-native-hapticlabs",
13087
+ "react-native-headphone-detection",
13088
+ "react-native-health",
13089
+ "react-native-health-connect",
13090
+ "react-native-here-explore",
13091
+ "react-native-hole-view",
13092
+ "react-native-home-indicator",
13093
+ "react-native-hotkeys",
13094
+ "react-native-html-to-pdf",
13095
+ "react-native-http-bridge-refurbished",
13096
+ "react-native-hyper-markdown",
13097
+ "react-native-i18n",
13098
+ "react-native-iap",
13099
+ "react-native-iaphub",
13100
+ "react-native-icloud-kit",
13101
+ "react-native-idle-timer",
13102
+ "react-native-image-colors",
13103
+ "react-native-image-compression-kit",
13104
+ "react-native-image-crop-picker",
13105
+ "react-native-image-marker",
13106
+ "react-native-image-picker",
13107
+ "react-native-image-size",
13108
+ "react-native-image-stitcher",
13109
+ "react-native-in-app-review",
13110
+ "react-native-in-app-utils",
13111
+ "react-native-inappbrowser-nitro",
13112
+ "react-native-inappbrowser-reborn",
13113
+ "react-native-incall-manager",
13114
+ "react-native-interception-webview",
13115
+ "react-native-intercom",
13116
+ "react-native-ios-context-menu",
13117
+ "react-native-ios-modal",
13118
+ "react-native-ios-translate-sheet",
13119
+ "react-native-ios-translate-tasks",
13120
+ "react-native-ios-utilities",
13121
+ "react-native-job-queue",
13122
+ "react-native-jw-media-player",
13123
+ "react-native-keep-awake",
13124
+ "react-native-key-command",
13125
+ "react-native-key-pair",
13126
+ "react-native-keyboard-controller",
13127
+ "react-native-keyboard-manager",
13128
+ "react-native-keychain",
13129
+ "react-native-keyevent",
13130
+ "react-native-keys",
13131
+ "react-native-launch-arguments",
13132
+ "react-native-leaflet-view",
13133
+ "react-native-legal",
13134
+ "react-native-libsodium",
13135
+ "react-native-linear-gradient",
13136
+ "react-native-linkedin-login",
13137
+ "react-native-liquid-glassmorphism",
13138
+ "react-native-litert-lm",
13139
+ "react-native-llm-mediapipe",
13140
+ "react-native-loader-kit",
13141
+ "react-native-localization",
13142
+ "react-native-localization-settings",
13143
+ "react-native-localize",
13144
+ "react-native-location",
13145
+ "react-native-location-enabler",
13146
+ "react-native-mail",
13147
+ "react-native-maps",
13148
+ "react-native-material-palette",
13149
+ "react-native-mdm-config",
13150
+ "react-native-measure-text",
13151
+ "react-native-mixpanel",
13152
+ "react-native-mmkv",
13153
+ "react-native-mmkv-storage",
13154
+ "react-native-moengage",
13155
+ "react-native-month-year-picker",
13156
+ "react-native-moyasar-apple-pay",
13157
+ "react-native-moyasar-sdk",
13158
+ "react-native-multiple-modals",
13159
+ "react-native-nano-icons",
13160
+ "react-native-navigation",
13161
+ "react-native-navigation-bar-color",
13162
+ "react-native-navigation-mode",
13163
+ "react-native-network-info",
13164
+ "react-native-nfc-manager",
13165
+ "react-native-nitro-ark",
13166
+ "react-native-nitro-audio-manager",
13167
+ "react-native-nitro-buffer",
13168
+ "react-native-nitro-cloud-uploader",
13169
+ "react-native-nitro-cookies",
13170
+ "react-native-nitro-crypto",
13171
+ "react-native-nitro-device-info",
13172
+ "react-native-nitro-dns",
13173
+ "react-native-nitro-fetch",
13174
+ "react-native-nitro-file-system",
13175
+ "react-native-nitro-fs",
13176
+ "react-native-nitro-geocoder",
13177
+ "react-native-nitro-geolocation",
13178
+ "react-native-nitro-google-signin",
13179
+ "react-native-nitro-haptics",
13180
+ "react-native-nitro-http-server",
13181
+ "react-native-nitro-image",
13182
+ "react-native-nitro-markdown",
13183
+ "react-native-nitro-modules",
13184
+ "react-native-nitro-net",
13185
+ "react-native-nitro-network-info",
13186
+ "react-native-nitro-ota",
13187
+ "react-native-nitro-player",
13188
+ "react-native-nitro-pose-exercises",
13189
+ "react-native-nitro-rtmp-publisher",
13190
+ "react-native-nitro-screen-recorder",
13191
+ "react-native-nitro-sensors-kit",
13192
+ "react-native-nitro-sfsymbols",
13193
+ "react-native-nitro-sound",
13194
+ "react-native-nitro-speech",
13195
+ "react-native-nitro-sqlite",
13196
+ "react-native-nitro-sse",
13197
+ "react-native-nitro-text-decoder",
13198
+ "react-native-nitro-toast",
13199
+ "react-native-nitro-tor",
13200
+ "react-native-nitro-totp",
13201
+ "react-native-nitro-vision-kit",
13202
+ "react-native-nitro-web-image",
13203
+ "react-native-nitro-websockets",
13204
+ "react-native-node-api",
13205
+ "react-native-notification-badge",
13206
+ "react-native-notification-sounds",
13207
+ "react-native-notifications",
13208
+ "react-native-notify-kit",
13209
+ "react-native-oauth",
13210
+ "react-native-ometria",
13211
+ "react-native-omni",
13212
+ "react-native-onesignal",
13213
+ "react-native-openai",
13214
+ "react-native-orientation-director",
13215
+ "react-native-orientation-locker",
13216
+ "react-native-orientation-manager",
13217
+ "react-native-orientation-turbo",
13218
+ "react-native-os",
13219
+ "react-native-ota-hot-update",
13220
+ "react-native-otp-verify",
13221
+ "react-native-package-checker",
13222
+ "react-native-pager-view",
13223
+ "react-native-palette-full",
13224
+ "react-native-passkey",
13225
+ "react-native-payments",
13226
+ "react-native-paypal",
13227
+ "react-native-pdf",
13228
+ "react-native-pdf-from-image",
13229
+ "react-native-pdf-jsi",
13230
+ "react-native-pdf-light",
13231
+ "react-native-pdf-renderer",
13232
+ "react-native-pdf-view",
13233
+ "react-native-performance",
13234
+ "react-native-performance-limiter",
13235
+ "react-native-permissions",
13236
+ "react-native-perspective-image-cropper",
13237
+ "react-native-photo-editor",
13238
+ "react-native-photo-manipulator",
13239
+ "react-native-photo-view",
13240
+ "react-native-photo-view-ex",
13241
+ "react-native-photoeditorsdk",
13242
+ "react-native-pinchable",
13243
+ "react-native-ping",
13244
+ "react-native-pkce-challenge",
13245
+ "react-native-plaid-link-sdk",
13246
+ "react-native-platform-components",
13247
+ "react-native-play-age-range-declaration",
13248
+ "react-native-pretty-toast",
13249
+ "react-native-print",
13250
+ "react-native-private-screen",
13251
+ "react-native-prompt-android",
13252
+ "react-native-pulsar",
13253
+ "react-native-purchasely",
13254
+ "react-native-purchases",
13255
+ "react-native-purchases-ui",
13256
+ "react-native-pure-jwt",
13257
+ "react-native-push-notification",
13258
+ "react-native-qr-decode-image-camera",
13259
+ "react-native-qr-kit",
13260
+ "react-native-quick-actions",
13261
+ "react-native-quick-base64",
13262
+ "react-native-quick-crypto",
13263
+ "react-native-quick-sqlite",
13264
+ "react-native-radial-gradient",
13265
+ "react-native-randombytes",
13266
+ "react-native-rate",
13267
+ "react-native-rate-app",
13268
+ "react-native-razorpay",
13269
+ "react-native-reanimated",
13270
+ "react-native-receive-sharing-intent",
13271
+ "react-native-record-screen",
13272
+ "react-native-restart",
13273
+ "react-native-restart-newarch",
13274
+ "react-native-rn-in-app-update",
13275
+ "react-native-rsa-native",
13276
+ "react-native-rsa-signer",
13277
+ "react-native-safari-view",
13278
+ "react-native-safe-area-context",
13279
+ "react-native-screen-choreography",
13280
+ "react-native-screen-corner-radius",
13281
+ "react-native-screenguard",
13282
+ "react-native-screens",
13283
+ "react-native-screenshot-aware",
13284
+ "react-native-screenshot-prevent",
13285
+ "react-native-search-bar",
13286
+ "react-native-secure-key-store",
13287
+ "react-native-securerandom",
13288
+ "react-native-select-contact",
13289
+ "react-native-send-intent",
13290
+ "react-native-sensitive-info",
13291
+ "react-native-sensors",
13292
+ "react-native-settings",
13293
+ "react-native-sfsymbols",
13294
+ "react-native-shake",
13295
+ "react-native-share",
13296
+ "react-native-share-menu",
13297
+ "react-native-shared-element",
13298
+ "react-native-shared-group-preferences",
13299
+ "react-native-shareplay",
13300
+ "react-native-shiki-engine",
13301
+ "react-native-showtime",
13302
+ "react-native-signature-capture",
13303
+ "react-native-simple-biometrics",
13304
+ "react-native-simple-toast",
13305
+ "react-native-siri-shortcut",
13306
+ "react-native-smart-splash-screen",
13307
+ "react-native-snackbar",
13308
+ "react-native-social-share",
13309
+ "react-native-sound",
13310
+ "react-native-sound-player",
13311
+ "react-native-speech-recognition-kit",
13312
+ "react-native-spinkit",
13313
+ "react-native-splash-screen",
13314
+ "react-native-splash-screen-newarch",
13315
+ "react-native-splash-view",
13316
+ "react-native-spotify-remote",
13317
+ "react-native-spotlight-search",
13318
+ "react-native-sqlite-2",
13319
+ "react-native-sqlite-storage",
13320
+ "react-native-ssl-manager",
13321
+ "react-native-ssl-public-key-pinning",
13322
+ "react-native-stallion",
13323
+ "react-native-star-io10",
13324
+ "react-native-store-age-signals-native-modules",
13325
+ "react-native-store-review",
13326
+ "react-native-svg",
13327
+ "react-native-system-bars",
13328
+ "react-native-system-navigation-bar",
13329
+ "react-native-system-setting",
13330
+ "react-native-tableview",
13331
+ "react-native-tcp",
13332
+ "react-native-tcp-socket",
13333
+ "react-native-teleport",
13334
+ "react-native-tenjin",
13335
+ "react-native-testfairy",
13336
+ "react-native-text-input-mask",
13337
+ "react-native-text-size",
13338
+ "react-native-theme-switch-animation",
13339
+ "react-native-theoplayer",
13340
+ "react-native-thermal-receipt-printer",
13341
+ "react-native-tiktok",
13342
+ "react-native-tiktok-business-sdk",
13343
+ "react-native-timezone",
13344
+ "react-native-tooltip",
13345
+ "react-native-tor",
13346
+ "react-native-touch-id",
13347
+ "react-native-track-player",
13348
+ "react-native-tracking-transparency",
13349
+ "react-native-transformer-text-input",
13350
+ "react-native-ttlock",
13351
+ "react-native-tts",
13352
+ "react-native-tuner-engine",
13353
+ "react-native-turbo-haptics",
13354
+ "react-native-turbo-image",
13355
+ "react-native-turbo-lnd",
13356
+ "react-native-turbo-mock-location-detector",
13357
+ "react-native-turbo-preferences",
13358
+ "react-native-twilio-video-webrtc",
13359
+ "react-native-udp",
13360
+ "react-native-ui-lib",
13361
+ "react-native-uitextview",
13362
+ "react-native-ulid-jsi",
13363
+ "react-native-unistyles",
13364
+ "react-native-update",
13365
+ "react-native-urovo",
13366
+ "react-native-ux-cam",
13367
+ "react-native-variable-blur",
13368
+ "react-native-vector-icons",
13369
+ "react-native-version-check",
13370
+ "react-native-version-info",
13371
+ "react-native-version-number",
13372
+ "react-native-video",
13373
+ "react-native-video-cache",
13374
+ "react-native-video-duration",
13375
+ "react-native-video-processing",
13376
+ "react-native-video-provider",
13377
+ "react-native-video-trim",
13378
+ "react-native-videoeditorsdk",
13379
+ "react-native-view-pdf",
13380
+ "react-native-view-recorder",
13381
+ "react-native-view-shot",
13382
+ "react-native-vision-camera",
13383
+ "react-native-vision-camera-barcode-scanner",
13384
+ "react-native-vision-camera-face-detector",
13385
+ "react-native-vision-camera-image-labeler",
13386
+ "react-native-vision-camera-location",
13387
+ "react-native-vision-camera-resizer",
13388
+ "react-native-vision-camera-text-recognition",
13389
+ "react-native-vision-camera-worklets",
13390
+ "react-native-vlc-media-player",
13391
+ "react-native-voip-push-notification",
13392
+ "react-native-volume-manager",
13393
+ "react-native-vosk",
13394
+ "react-native-wallet-manager",
13395
+ "react-native-wallet-pass",
13396
+ "react-native-watch-connectivity",
13397
+ "react-native-wear-connectivity",
13398
+ "react-native-web-serial-api",
13399
+ "react-native-webgpu",
13400
+ "react-native-webp-converter",
13401
+ "react-native-webp-format",
13402
+ "react-native-webrtc",
13403
+ "react-native-webview",
13404
+ "react-native-wechat-lib",
13405
+ "react-native-wheel-pick",
13406
+ "react-native-wheel-picker-android",
13407
+ "react-native-whip-whep",
13408
+ "react-native-widget-picker",
13409
+ "react-native-widgetkit",
13410
+ "react-native-wifi-p2p",
13411
+ "react-native-wifi-reborn",
13412
+ "react-native-window-view",
13413
+ "react-native-windows",
13414
+ "react-native-windows-hello",
13415
+ "react-native-wordpress-editor",
13416
+ "react-native-worklets",
13417
+ "react-native-worklets-core",
13418
+ "react-native-xaml",
13419
+ "react-native-xxhash",
13420
+ "react-native-youtube",
13421
+ "react-native-zeroconf",
13422
+ "react-native-zip-archive",
13423
+ "realm",
13424
+ "rive-react-native",
13425
+ "rn-apple-healthkit",
13426
+ "rn-card-scanner",
13427
+ "rn-date-format",
13428
+ "rn-fade-wrapper",
13429
+ "rn-fetch-blob",
13430
+ "rn-mlkit-ocr",
13431
+ "rn-qr-generator",
13432
+ "rn-secure-storage",
13433
+ "rn-watch-connect",
13434
+ "rn-zendesk",
13435
+ "rollbar-react-native",
13436
+ "scandit-react-native-datacapture-barcode",
13437
+ "scandit-react-native-datacapture-core",
13438
+ "scandit-react-native-datacapture-id",
13439
+ "scandit-react-native-datacapture-label",
13440
+ "scandit-react-native-datacapture-label-text",
13441
+ "scandit-react-native-datacapture-parser",
13442
+ "sift-react-native",
13443
+ "sp-react-native-in-app-updates",
13444
+ "stream-chat-expo",
13445
+ "stream-chat-react-native",
13446
+ "swiftui-react-native",
13447
+ "uws-react-native",
13448
+ "vision-camera-cropper",
13449
+ "vision-camera-dynamsoft-document-normalizer",
13450
+ "vision-camera-ocr-plugin",
13451
+ "vision-camera-zxing",
13452
+ "whisper.rn"
13453
+ ];
13454
+ var NATIVE_RUNTIME_PACKAGE_NAMES = [
13455
+ ...NATIVE_STUB_PACKAGE_NAMES,
13456
+ ...LIGHT_NATIVE_PACKAGE_NAMES,
13457
+ "@ammarahmed/react-native-background-fetch",
13458
+ "@bsky.app/react-native-uitextview",
13459
+ "@bsky.app/video",
13460
+ "@datadog/mobile-react-native-webview",
13461
+ "@haileyok/bluesky-video",
13462
+ "@react-native-vector-icons/get-image",
13463
+ "@react-navigation/native",
13464
+ "@tamagui/native-registry",
13465
+ "@uniswap/ethers-rs-mobile",
13466
+ "@valora/react-native-keychain",
13467
+ "expo-router",
13468
+ "react-native-app-control",
13469
+ "react-native-blue-crypto",
13470
+ "react-native-nitro-base64",
13471
+ "react-native-nitro-gzip",
13472
+ "react-native-sectioned-slider"
13473
+ ];
13474
+
13475
+ // src/installed-package-versions.ts
11015
13476
  function readInstalledPackage(projectRoot, name2) {
11016
13477
  let dir = projectRoot;
11017
13478
  for (; ; ) {
@@ -11051,9 +13512,9 @@ function readInstalledNativePackageVersions(projectRoot) {
11051
13512
  const nativeNames = /* @__PURE__ */ new Set();
11052
13513
  for (const specifier of [
11053
13514
  "react-native",
11054
- ...import_native_package_names.NATIVE_RUNTIME_PACKAGE_NAMES,
11055
- ...import_lazy_stub_patterns.LAZY_STUB_PATTERNS,
11056
- ...Object.values(import_stub_manifest2.COMPAT_STUBS).map((entry) => entry.specifier)
13515
+ ...NATIVE_RUNTIME_PACKAGE_NAMES,
13516
+ ...LAZY_STUB_PATTERNS,
13517
+ ...Object.values(COMPAT_STUBS).map((entry) => entry.specifier)
11057
13518
  ]) {
11058
13519
  const name2 = extractPackageFromPath(`node_modules/${specifier}`);
11059
13520
  if (name2) nativeNames.add(name2);
@@ -11170,6 +13631,7 @@ function readPackageFile(root, file, maxBytes) {
11170
13631
  }
11171
13632
 
11172
13633
  // src/swift-submit.ts
13634
+ init_is_record();
11173
13635
  var SWIFT_PACKAGE_PATH = "/__peach/swift-package/";
11174
13636
  var SWIFT_HMR_PATH = "/__peach/swift-hmr";
11175
13637
  var DEFAULT_SWIFT_COMPILE_BUILD_MS = 10 * 6e4;
@@ -11915,36 +14377,9 @@ function peachPlugin(options = {}) {
11915
14377
  // src/metro-plugin.ts
11916
14378
  var import_fs6 = __toESM(require("fs"), 1);
11917
14379
  var import_module2 = require("module");
11918
- var import_node_crypto6 = require("node:crypto");
14380
+ var import_node_crypto7 = require("node:crypto");
11919
14381
  var import_path5 = __toESM(require("path"), 1);
11920
-
11921
- // ../peach-engine/src/platform/adapter.ts
11922
- var IOS_ADAPTER = Object.freeze({
11923
- id: "ios",
11924
- displayName: "iOS",
11925
- isIOS: true,
11926
- isAndroid: false,
11927
- select: (registry) => registry.ios
11928
- });
11929
- var ANDROID_ADAPTER = Object.freeze({
11930
- id: "android",
11931
- displayName: "Android",
11932
- isIOS: false,
11933
- isAndroid: true,
11934
- select: (registry) => registry.android
11935
- });
11936
- var RUNTIME_PLATFORM_ADAPTERS = Object.freeze({
11937
- ios: IOS_ADAPTER,
11938
- android: ANDROID_ADAPTER
11939
- });
11940
- function isRuntimePlatform(value) {
11941
- return value === "ios" || value === "android";
11942
- }
11943
- function getRuntimePlatformAdapter(platform) {
11944
- return RUNTIME_PLATFORM_ADAPTERS[platform];
11945
- }
11946
-
11947
- // src/metro-plugin.ts
14382
+ init_adapter();
11948
14383
  init_app_project();
11949
14384
 
11950
14385
  // src/android-autolinking.ts
@@ -12194,21 +14629,20 @@ function androidMergedResourceValuesDirectory(manifestFile) {
12194
14629
 
12195
14630
  // src/native-app-identity.ts
12196
14631
  init_bundleGlobalFooter();
14632
+ init_is_record();
12197
14633
 
12198
14634
  // src/nativeAppIconContract.ts
12199
- function isRecord2(value) {
12200
- return typeof value === "object" && value !== null && !Array.isArray(value);
12201
- }
14635
+ init_is_record();
12202
14636
  function resolveNativeAppIconArtwork(resources, readText, resourceUri, icons, primaryName, alternateNames, resolveReference) {
12203
14637
  const members = new Set(resources);
12204
- const dictionary = isRecord2(icons) ? icons : {};
14638
+ const dictionary = isRecord(icons) ? icons : {};
12205
14639
  const alternates = Object.fromEntries(
12206
14640
  Object.entries(
12207
- isRecord2(dictionary.CFBundleAlternateIcons) ? dictionary.CFBundleAlternateIcons : {}
14641
+ isRecord(dictionary.CFBundleAlternateIcons) ? dictionary.CFBundleAlternateIcons : {}
12208
14642
  ).map(([name2, declaration]) => [resolveReference(name2), declaration])
12209
14643
  );
12210
14644
  const resolve4 = (declaration, defaultName) => {
12211
- const entry = isRecord2(declaration) ? declaration : {};
14645
+ const entry = isRecord(declaration) ? declaration : {};
12212
14646
  const name2 = typeof entry.CFBundleIconName === "string" ? resolveReference(entry.CFBundleIconName) : resolveReference(defaultName);
12213
14647
  const catalogs = resources.filter(
12214
14648
  (file) => file.endsWith(`/${name2}.appiconset/Contents.json`)
@@ -12218,9 +14652,9 @@ function resolveNativeAppIconArtwork(resources, readText, resourceUri, icons, pr
12218
14652
  const catalogCandidates = [];
12219
14653
  const text2 = readText(catalog);
12220
14654
  const contents = text2 === null ? null : JSON.parse(text2);
12221
- if (isRecord2(contents) && Array.isArray(contents.images)) {
14655
+ if (isRecord(contents) && Array.isArray(contents.images)) {
12222
14656
  for (const image of contents.images) {
12223
- if (!isRecord2(image) || typeof image.filename !== "string" || /[/\\]/.test(image.filename) || !/\.(png|jpe?g|webp)$/i.test(image.filename) || image.appearances !== void 0 || !["iphone", "universal", "ios-marketing"].includes(String(image.idiom)))
14657
+ if (!isRecord(image) || typeof image.filename !== "string" || /[/\\]/.test(image.filename) || !/\.(png|jpe?g|webp)$/i.test(image.filename) || image.appearances !== void 0 || !["iphone", "universal", "ios-marketing"].includes(String(image.idiom)))
12224
14658
  continue;
12225
14659
  const file = catalog.slice(0, -"Contents.json".length) + image.filename;
12226
14660
  const scale = image.scale === "2x" ? 2 : image.scale === "3x" ? 3 : 1;
@@ -12454,9 +14888,6 @@ function visitXcodeTargetMembers(objects, targetId, resolvePath, filesUnder, joi
12454
14888
  // src/native-app-identity.ts
12455
14889
  var NATIVE_APP_IDENTITY_PREFIX = "globalThis.__sootsimNativeAppIdentity=";
12456
14890
  var METRO_MODULE_PATHS_PREFIX = "globalThis.__sootsimModulePaths=";
12457
- function isRecord3(value) {
12458
- return typeof value === "object" && value !== null && !Array.isArray(value);
12459
- }
12460
14891
  function nonEmptyString(value) {
12461
14892
  return typeof value === "string" && value.length > 0 ? value : null;
12462
14893
  }
@@ -12482,12 +14913,12 @@ function insertNativeAppIdentityFooter(source, identity) {
12482
14913
  function readGoogleSignInConfiguration(plist3, resources) {
12483
14914
  const clientIds = {};
12484
14915
  for (const [file, value] of Object.entries(resources)) {
12485
- if (isRecord3(value) && typeof value.CLIENT_ID === "string")
14916
+ if (isRecord(value) && typeof value.CLIENT_ID === "string")
12486
14917
  clientIds[file.split("/").pop()?.replace(/\.plist$/, "") ?? file] = value.CLIENT_ID;
12487
14918
  }
12488
14919
  const urlSchemes = [];
12489
14920
  for (const entry of Array.isArray(plist3.CFBundleURLTypes) ? plist3.CFBundleURLTypes : []) {
12490
- if (!isRecord3(entry) || !Array.isArray(entry.CFBundleURLSchemes)) continue;
14921
+ if (!isRecord(entry) || !Array.isArray(entry.CFBundleURLSchemes)) continue;
12491
14922
  for (const scheme of entry.CFBundleURLSchemes)
12492
14923
  if (typeof scheme === "string") urlSchemes.push(scheme);
12493
14924
  }
@@ -12595,14 +15026,14 @@ function nativeAppIdentityFromIos(files, parseInfoPlist, iosTarget, resourceUri)
12595
15026
  let objects = {};
12596
15027
  try {
12597
15028
  const parsed = parseOpenStepPlist(pbxproj);
12598
- if (isRecord3(parsed)) {
12599
- objects = isRecord3(parsed.objects) ? parsed.objects : parsed;
15029
+ if (isRecord(parsed)) {
15030
+ objects = isRecord(parsed.objects) ? parsed.objects : parsed;
12600
15031
  }
12601
15032
  } catch {
12602
15033
  }
12603
15034
  const targets = [];
12604
15035
  for (const [id, obj] of Object.entries(objects)) {
12605
- if (isRecord3(obj) && obj.isa === "PBXNativeTarget" && typeof obj.name === "string") {
15036
+ if (isRecord(obj) && obj.isa === "PBXNativeTarget" && typeof obj.name === "string") {
12606
15037
  targets.push({
12607
15038
  id,
12608
15039
  name: obj.name,
@@ -12648,13 +15079,13 @@ function nativeAppIdentityFromIos(files, parseInfoPlist, iosTarget, resourceUri)
12648
15079
  PRODUCT_NAME: targetName
12649
15080
  };
12650
15081
  for (const obj of Object.values(objects)) {
12651
- if (isRecord3(obj) && obj.isa === "PBXProject" && typeof obj.buildConfigurationList === "string") {
15082
+ if (isRecord(obj) && obj.isa === "PBXProject" && typeof obj.buildConfigurationList === "string") {
12652
15083
  const listObj = objects[obj.buildConfigurationList];
12653
- if (isRecord3(listObj) && Array.isArray(listObj.buildConfigurations)) {
15084
+ if (isRecord(listObj) && Array.isArray(listObj.buildConfigurations)) {
12654
15085
  for (const configId of listObj.buildConfigurations) {
12655
15086
  if (typeof configId === "string") {
12656
15087
  const configObj = objects[configId];
12657
- if (isRecord3(configObj) && configObj.name === "Release" && isRecord3(configObj.buildSettings)) {
15088
+ if (isRecord(configObj) && configObj.name === "Release" && isRecord(configObj.buildSettings)) {
12658
15089
  for (const [k, v] of Object.entries(configObj.buildSettings)) {
12659
15090
  if (typeof v === "string") settings[k] = v;
12660
15091
  }
@@ -12666,11 +15097,11 @@ function nativeAppIdentityFromIos(files, parseInfoPlist, iosTarget, resourceUri)
12666
15097
  }
12667
15098
  if (selectedTarget?.buildConfigurationList) {
12668
15099
  const listObj = objects[selectedTarget.buildConfigurationList];
12669
- if (isRecord3(listObj) && Array.isArray(listObj.buildConfigurations)) {
15100
+ if (isRecord(listObj) && Array.isArray(listObj.buildConfigurations)) {
12670
15101
  for (const configId of listObj.buildConfigurations) {
12671
15102
  if (typeof configId === "string") {
12672
15103
  const configObj = objects[configId];
12673
- if (isRecord3(configObj) && configObj.name === "Release" && isRecord3(configObj.buildSettings)) {
15104
+ if (isRecord(configObj) && configObj.name === "Release" && isRecord(configObj.buildSettings)) {
12674
15105
  for (const [k, v] of Object.entries(configObj.buildSettings)) {
12675
15106
  if (typeof v === "string") settings[k] = v;
12676
15107
  }
@@ -12721,7 +15152,7 @@ function nativeAppIdentityFromIos(files, parseInfoPlist, iosTarget, resourceUri)
12721
15152
  if (!bundleName) return null;
12722
15153
  const applicationName = identityFieldFrom(settings, plistString(plist3, "CFBundleDisplayName"), void 0) ?? bundleName;
12723
15154
  const dictionary = parseInfoPlist(plist3);
12724
- if (!isRecord3(dictionary)) throw new Error("native app Info.plist is not a dictionary");
15155
+ if (!isRecord(dictionary)) throw new Error("native app Info.plist is not a dictionary");
12725
15156
  const declaredDisplayName = dictionary.CFBundleDisplayName;
12726
15157
  const applicationDisplayName = typeof declaredDisplayName === "string" ? resolveBuildSetting(declaredDisplayName, settings) : void 0;
12727
15158
  if (applicationDisplayName === null)
@@ -12734,9 +15165,9 @@ function nativeAppIdentityFromIos(files, parseInfoPlist, iosTarget, resourceUri)
12734
15165
  if (dtPlatformVersion === null)
12735
15166
  throw new Error("native app Info.plist DTPlatformVersion is unresolved");
12736
15167
  const icons = dictionary.CFBundleIcons;
12737
- const alternates = isRecord3(icons) ? icons.CFBundleAlternateIcons : void 0;
15168
+ const alternates = isRecord(icons) ? icons.CFBundleAlternateIcons : void 0;
12738
15169
  const alternateIconNames = /* @__PURE__ */ new Set();
12739
- for (const name2 of isRecord3(alternates) ? Object.keys(alternates) : []) {
15170
+ for (const name2 of isRecord(alternates) ? Object.keys(alternates) : []) {
12740
15171
  const resolved = resolveBuildSetting(name2, settings);
12741
15172
  if (resolved === null) throw new Error("native alternate icon name is unresolved");
12742
15173
  alternateIconNames.add(resolved);
@@ -12840,11 +15271,11 @@ function nativeAppIdentityFromIos(files, parseInfoPlist, iosTarget, resourceUri)
12840
15271
  return `${base.startsWith("/") ? "/" : ""}${segments.join("/")}`;
12841
15272
  };
12842
15273
  const project = Object.values(objects).find(
12843
- (object) => isRecord3(object) && object.isa === "PBXProject"
15274
+ (object) => isRecord(object) && object.isa === "PBXProject"
12844
15275
  );
12845
15276
  const projectDir = join5(
12846
15277
  pbxprojPath.replace(/(?:^|\/)[^/]+\.xcodeproj\/project\.pbxproj$/, ""),
12847
- isRecord3(project) && typeof project.projectDirPath === "string" ? project.projectDirPath : ""
15278
+ isRecord(project) && typeof project.projectDirPath === "string" ? project.projectDirPath : ""
12848
15279
  );
12849
15280
  const paths = Object.keys(files);
12850
15281
  visitXcodeTargetMembers(
@@ -12954,6 +15385,7 @@ function extractNativeAppIdentityFromFiles(files, platform, parseInfoPlist, iosT
12954
15385
  var import_node_fs14 = __toESM(require("node:fs"), 1);
12955
15386
  var import_node_module3 = require("node:module");
12956
15387
  var import_node_path14 = __toESM(require("node:path"), 1);
15388
+ init_is_record();
12957
15389
 
12958
15390
  // src/plist.ts
12959
15391
  var import_plist = __toESM(require_plist(), 1);
@@ -12962,6 +15394,8 @@ function parsePlistSource(source) {
12962
15394
  }
12963
15395
 
12964
15396
  // src/xcode-project.ts
15397
+ var import_node_child_process5 = require("node:child_process");
15398
+ var import_node_crypto6 = require("node:crypto");
12965
15399
  var import_node_fs13 = __toESM(require("node:fs"), 1);
12966
15400
  var import_node_path13 = __toESM(require("node:path"), 1);
12967
15401
  var import_plist2 = __toESM(require_plist(), 1);
@@ -13569,33 +16003,131 @@ function expand(value, lookup) {
13569
16003
  }
13570
16004
  );
13571
16005
  }
13572
- function targetMembers(ref, settings, options = {}) {
16006
+ var preparedSourcePhases = /* @__PURE__ */ new Map();
16007
+ function targetMembers(ref, settings, options, settingKeys, projectInputs) {
13573
16008
  const { project, target, id: targetId } = ref;
13574
16009
  const targetName = str(target.name) ?? targetId;
13575
16010
  const sources = /* @__PURE__ */ new Set();
13576
16011
  const allSources = /* @__PURE__ */ new Set();
13577
16012
  const resources = /* @__PURE__ */ new Set();
13578
16013
  const scriptForOutput = /* @__PURE__ */ new Map();
13579
- const noteScriptOutput = (raw, script) => {
13580
- const expanded = expand(raw, settings);
13581
- if (!expanded.endsWith(".swift")) return;
13582
- const absolute = import_node_path13.default.isAbsolute(expanded) ? import_node_path13.default.normalize(expanded) : import_node_path13.default.resolve(project.projectDir, expanded);
13583
- if (!scriptForOutput.has(absolute)) scriptForOutput.set(absolute, script);
13584
- };
13585
16014
  for (const phaseId of list(target.buildPhases)) {
13586
16015
  const phase = project.object(phaseId);
13587
16016
  if (phase?.isa !== "PBXShellScriptBuildPhase") continue;
13588
16017
  const script = str(phase.name) ?? phaseId;
13589
- for (const raw of list(phase.outputPaths)) noteScriptOutput(raw, script);
13590
- for (const listPath of list(phase.outputFileListPaths)) {
13591
- const expandedList = expand(listPath, settings);
13592
- const absoluteList = import_node_path13.default.isAbsolute(expandedList) ? expandedList : import_node_path13.default.resolve(project.projectDir, expandedList);
13593
- if (!import_node_fs13.default.existsSync(absoluteList)) continue;
13594
- for (const line of import_node_fs13.default.readFileSync(absoluteList, "utf8").split("\n")) {
13595
- const trimmed = line.trim();
13596
- if (trimmed === "" || trimmed.startsWith("#")) continue;
13597
- noteScriptOutput(trimmed, script);
16018
+ const absolute = (raw) => import_node_path13.default.resolve(project.projectDir, expand(raw, settings));
16019
+ const inputs = list(phase.inputPaths).map(absolute);
16020
+ const outputs = list(phase.outputPaths).map(absolute);
16021
+ const fileLists = /* @__PURE__ */ new Map();
16022
+ for (const kind of ["INPUT", "OUTPUT"]) {
16023
+ const lists = list(
16024
+ kind === "INPUT" ? phase.inputFileListPaths : phase.outputFileListPaths
16025
+ ).map((raw) => {
16026
+ const file = absolute(raw);
16027
+ if (!import_node_fs13.default.existsSync(file)) {
16028
+ return { file, entries: [] };
16029
+ }
16030
+ const entries = import_node_fs13.default.readFileSync(file, "utf8").split(/\r?\n/).map((line) => line.trim()).filter((line) => line !== "" && !line.startsWith("#")).map(absolute);
16031
+ return { file, entries };
16032
+ });
16033
+ fileLists.set(kind, lists);
16034
+ }
16035
+ const allOutputs = [
16036
+ ...outputs,
16037
+ ...fileLists.get("OUTPUT").flatMap((item) => item.entries)
16038
+ ];
16039
+ for (const output of allOutputs)
16040
+ if (output.endsWith(".swift") && !scriptForOutput.has(output))
16041
+ scriptForOutput.set(output, script);
16042
+ const inputFiles = [
16043
+ ...inputs,
16044
+ ...fileLists.get("INPUT").flatMap((item) => [item.file, ...item.entries]),
16045
+ ...fileLists.get("OUTPUT").map((item) => item.file)
16046
+ ];
16047
+ if (allOutputs.some((file) => file.endsWith(".swift"))) {
16048
+ for (const file of inputFiles) if (import_node_fs13.default.existsSync(file)) projectInputs.add(file);
16049
+ }
16050
+ if (options.prepareGeneratedSources && options.requireSources !== false && allOutputs.some((file) => file.endsWith(".swift"))) {
16051
+ const phaseDir = import_node_path13.default.join(settings("TARGET_TEMP_DIR"), `Script-${phaseId}`);
16052
+ for (const lists of fileLists.values())
16053
+ for (const { file } of lists)
16054
+ if (!import_node_fs13.default.existsSync(file))
16055
+ throw new Error(
16056
+ `${targetName}: Run Script "${script}" missing file list ${file}`
16057
+ );
16058
+ const env = {
16059
+ ...process.env,
16060
+ ...Object.fromEntries(
16061
+ [...settingKeys].filter((key2) => /^[A-Za-z_][A-Za-z0-9_]*$/.test(key2)).map((key2) => [key2, settings(key2)])
16062
+ )
16063
+ };
16064
+ const declared = { INPUT: inputs, OUTPUT: outputs };
16065
+ for (const kind of ["INPUT", "OUTPUT"]) {
16066
+ env[`SCRIPT_${kind}_FILE_COUNT`] = String(declared[kind].length);
16067
+ declared[kind].forEach((file, index) => {
16068
+ env[`SCRIPT_${kind}_FILE_${index}`] = file;
16069
+ });
16070
+ const lists = fileLists.get(kind);
16071
+ env[`SCRIPT_${kind}_FILE_LIST_COUNT`] = String(lists.length);
16072
+ lists.forEach((_item, index) => {
16073
+ env[`SCRIPT_${kind}_FILE_LIST_${index}`] = import_node_path13.default.join(
16074
+ phaseDir,
16075
+ `${kind}-${index}.xcfilelist`
16076
+ );
16077
+ });
16078
+ }
16079
+ const signature = (0, import_node_crypto6.createHash)("sha256").update(
16080
+ JSON.stringify([phase, [...settingKeys].map((key2) => [key2, settings(key2)])])
16081
+ );
16082
+ for (const file of inputFiles) {
16083
+ signature.update(file);
16084
+ if (import_node_fs13.default.existsSync(file)) {
16085
+ const stat = import_node_fs13.default.statSync(file);
16086
+ signature.update(`${stat.mtimeMs}:${stat.ctimeMs}:${stat.size}`);
16087
+ } else signature.update("missing");
16088
+ }
16089
+ const stamp = signature.digest("hex");
16090
+ const key = `${project.projectFile}:${targetId}:${phaseId}:${settings("CONFIGURATION")}`;
16091
+ if (preparedSourcePhases.get(key) === stamp && allOutputs.every((file) => import_node_fs13.default.existsSync(file)))
16092
+ continue;
16093
+ import_node_fs13.default.mkdirSync(phaseDir, { recursive: true });
16094
+ import_node_fs13.default.mkdirSync(settings("BUILT_PRODUCTS_DIR"), { recursive: true });
16095
+ import_node_fs13.default.mkdirSync(settings("DERIVED_FILE_DIR"), { recursive: true });
16096
+ for (const [kind, lists] of fileLists)
16097
+ lists.forEach((item, index) => {
16098
+ import_node_fs13.default.writeFileSync(
16099
+ env[`SCRIPT_${kind}_FILE_LIST_${index}`],
16100
+ `${item.entries.join("\n")}
16101
+ `
16102
+ );
16103
+ });
16104
+ try {
16105
+ (0, import_node_child_process5.execFileSync)(
16106
+ str(phase.shellPath) ?? "/bin/sh",
16107
+ ["-c", str(phase.shellScript) ?? ""],
16108
+ {
16109
+ cwd: project.projectDir,
16110
+ env,
16111
+ stdio: ["ignore", "pipe", "pipe"],
16112
+ timeout: 12e4
16113
+ }
16114
+ );
16115
+ } catch (error) {
16116
+ const output = error instanceof Error ? `${error.message}
16117
+ ${"stdout" in error ? String(error.stdout) : ""}${"stderr" in error ? String(error.stderr) : ""}` : String(error);
16118
+ throw new Error(
16119
+ `${targetName}: Run Script "${script}" failed preparing generated Swift sources:
16120
+ ${output}`
16121
+ );
13598
16122
  }
16123
+ const missing = allOutputs.filter(
16124
+ (file) => file.endsWith(".swift") && !import_node_fs13.default.existsSync(file)
16125
+ );
16126
+ if (missing.length > 0)
16127
+ throw new Error(
16128
+ `${targetName}: Run Script "${script}" did not produce ${missing.join(", ")}`
16129
+ );
16130
+ preparedSourcePhases.set(key, stamp);
13599
16131
  }
13600
16132
  }
13601
16133
  visitXcodeTargetMembers(
@@ -13785,22 +16317,95 @@ function readXcodeAppTarget(input, targetName, configurationName, options = {})
13785
16317
  SRCROOT: ref.project.projectDir,
13786
16318
  SOURCE_ROOT: ref.project.projectDir,
13787
16319
  PROJECT_DIR: ref.project.projectDir,
16320
+ SYMROOT: import_node_path13.default.join(ref.project.projectDir, ".build/peach-xcode/Build/Products"),
16321
+ BUILD_DIR: "$(SYMROOT)",
16322
+ OBJROOT: import_node_path13.default.join(
16323
+ ref.project.projectDir,
16324
+ ".build/peach-xcode/Build/Intermediates.noindex"
16325
+ ),
16326
+ CONFIGURATION_BUILD_DIR: "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)",
16327
+ BUILT_PRODUCTS_DIR: "$(CONFIGURATION_BUILD_DIR)",
16328
+ TARGET_BUILD_DIR: "$(CONFIGURATION_BUILD_DIR)",
16329
+ PROJECT_TEMP_DIR: "$(OBJROOT)/$(PROJECT_NAME).build",
16330
+ CONFIGURATION_TEMP_DIR: "$(PROJECT_TEMP_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)",
16331
+ TARGET_TEMP_DIR: "$(CONFIGURATION_TEMP_DIR)/$(TARGET_NAME).build",
16332
+ DERIVED_FILE_DIR: "$(TARGET_TEMP_DIR)/DerivedSources",
16333
+ DERIVED_FILES_DIR: "$(DERIVED_FILE_DIR)",
16334
+ PLATFORM_NAME: "iphonesimulator",
16335
+ EFFECTIVE_PLATFORM_NAME: "-iphonesimulator",
16336
+ CURRENT_ARCH: "arm64",
16337
+ ARCHS: "arm64",
16338
+ ACTION: "build",
13788
16339
  DEVELOPMENT_LANGUAGE: str(ref.project.project.developmentRegion) ?? "en"
13789
16340
  },
13790
16341
  options
13791
16342
  );
13792
16343
  for (const file of read) xcconfigs.add(file);
13793
16344
  const swiftVersion = Number.parseFloat(settings2("SWIFT_VERSION") || "5");
16345
+ const members = targetMembers(ref, settings2, options, keys, xcconfigs);
16346
+ const implementations = members.allSources.filter(
16347
+ (file) => /\.(c|cc|cpp|cxx|m|mm)$/.test(file)
16348
+ );
16349
+ const absolute = (file) => import_node_path13.default.resolve(ref.project.projectDir, file);
16350
+ const fileFlags = {};
16351
+ for (const phaseId of list(ref.target.buildPhases)) {
16352
+ const phase = ref.project.object(phaseId);
16353
+ if (phase?.isa !== "PBXSourcesBuildPhase") continue;
16354
+ for (const id of list(phase.files)) {
16355
+ const file = ref.project.object(id);
16356
+ const resolved = ref.project.resolvePath(str(file?.fileRef) ?? "");
16357
+ if (resolved && implementations.includes(resolved))
16358
+ fileFlags[resolved] = settingList(
16359
+ expand(
16360
+ str(isDict(file?.settings) ? file.settings.COMPILER_FLAGS : void 0) ?? "",
16361
+ settings2
16362
+ )
16363
+ );
16364
+ }
16365
+ }
13794
16366
  return {
13795
16367
  settings: settings2,
13796
16368
  keys,
13797
16369
  module: {
13798
16370
  name: name2,
13799
16371
  moduleName: applyOperator(settings2("PRODUCT_MODULE_NAME"), "c99extidentifier"),
13800
- ...targetMembers(ref, settings2, options),
16372
+ ...members,
13801
16373
  languageMode: swiftVersion >= 6 ? 6 : 5,
13802
16374
  mainActorIsolation: settings2("SWIFT_DEFAULT_ACTOR_ISOLATION") === "MainActor",
13803
- defines: compilationConditions(settings2)
16375
+ defines: compilationConditions(settings2),
16376
+ iosDeploymentTarget: settings2("IPHONEOS_DEPLOYMENT_TARGET") || null,
16377
+ ...implementations.some((file) => /\.mm?$/.test(file)) ? {
16378
+ objc: {
16379
+ headers: Object.keys(ref.project.objects).flatMap((id) => {
16380
+ const file = ref.project.resolvePath(id);
16381
+ return file && /\.(h|hh|hpp|hxx|pch)$/.test(file) && import_node_fs13.default.existsSync(file) ? [file] : [];
16382
+ }),
16383
+ prefixHeader: settings2("GCC_PREFIX_HEADER") ? absolute(settings2("GCC_PREFIX_HEADER")) : null,
16384
+ bridgingHeader: settings2("SWIFT_OBJC_BRIDGING_HEADER") ? absolute(settings2("SWIFT_OBJC_BRIDGING_HEADER")) : null,
16385
+ headerSearchPaths: [
16386
+ ...settingList(settings2("HEADER_SEARCH_PATHS")),
16387
+ ...settingList(settings2("USER_HEADER_SEARCH_PATHS"))
16388
+ ].map(absolute),
16389
+ frameworkSearchPaths: settingList(settings2("FRAMEWORK_SEARCH_PATHS")).map(
16390
+ absolute
16391
+ ),
16392
+ flags: [
16393
+ ...settings2("CLANG_ENABLE_OBJC_ARC") === "YES" ? ["-fobjc-arc"] : [],
16394
+ ...settings2("CLANG_ENABLE_OBJC_WEAK") === "YES" ? ["-fobjc-weak"] : [],
16395
+ ...settings2("CLANG_ENABLE_MODULES") === "YES" ? ["-fmodules"] : [],
16396
+ ...settings2("GCC_C_LANGUAGE_STANDARD") ? [`-std=${settings2("GCC_C_LANGUAGE_STANDARD")}`] : [],
16397
+ ...settingList(settings2("GCC_PREPROCESSOR_DEFINITIONS")).map(
16398
+ (value) => `-D${value}`
16399
+ ),
16400
+ ...settingList(settings2("OTHER_CFLAGS"))
16401
+ ],
16402
+ cxxFlags: [
16403
+ ...settings2("CLANG_CXX_LANGUAGE_STANDARD") ? [`-std=${settings2("CLANG_CXX_LANGUAGE_STANDARD")}`] : [],
16404
+ ...settingList(settings2("OTHER_CPLUSPLUSFLAGS"))
16405
+ ],
16406
+ fileFlags
16407
+ }
16408
+ } : {}
13804
16409
  }
13805
16410
  };
13806
16411
  };
@@ -13849,6 +16454,23 @@ function readXcodeAppTarget(input, targetName, configurationName, options = {})
13849
16454
  ...projects.flatMap(
13850
16455
  (project) => Object.entries(project.objects).flatMap(([id, entry]) => {
13851
16456
  if (!isDict(entry)) return [];
16457
+ if (entry.isa === "PBXFileSystemSynchronizedRootGroup") {
16458
+ const folder = project.resolvePath(id);
16459
+ const pending = folder ? [folder] : [];
16460
+ const packages = [];
16461
+ while (pending.length > 0) {
16462
+ const dir = pending.pop();
16463
+ if (import_node_fs13.default.existsSync(import_node_path13.default.join(dir, "Package.swift"))) {
16464
+ packages.push(dir);
16465
+ continue;
16466
+ }
16467
+ if (!isDirectory(dir)) continue;
16468
+ for (const child of import_node_fs13.default.readdirSync(dir, { withFileTypes: true }))
16469
+ if (child.isDirectory() && !child.name.startsWith("."))
16470
+ pending.push(import_node_path13.default.join(dir, child.name));
16471
+ }
16472
+ return packages;
16473
+ }
13852
16474
  const candidate = entry.isa === "XCLocalSwiftPackageReference" ? import_node_path13.default.resolve(project.projectDir, str(entry.relativePath) ?? "") : entry.isa === "PBXFileReference" ? project.resolvePath(id) : null;
13853
16475
  return candidate && import_node_fs13.default.existsSync(import_node_path13.default.join(candidate, "Package.swift")) ? [candidate] : [];
13854
16476
  })
@@ -13903,6 +16525,7 @@ function readXcodeAppTarget(input, targetName, configurationName, options = {})
13903
16525
  "swiftpm",
13904
16526
  "Package.resolved"
13905
16527
  );
16528
+ const packageResolved = import_node_fs13.default.existsSync(resolvedFile) ? [import_node_fs13.default.realpathSync(resolvedFile)] : [...new Set(localPackageDirs.map((dir) => import_node_path13.default.join(dir, "Package.resolved")))].filter((file) => import_node_fs13.default.existsSync(file)).map((file) => import_node_fs13.default.realpathSync(file)).sort();
13906
16529
  const used = order.map((ref) => ref.project);
13907
16530
  return {
13908
16531
  ...module2,
@@ -13928,7 +16551,7 @@ function readXcodeAppTarget(input, targetName, configurationName, options = {})
13928
16551
  ...new Set(localPackageDirs.map((dir) => import_node_fs13.default.realpathSync(dir)))
13929
16552
  ].sort(),
13930
16553
  binaryFrameworks: [...binaryFrameworks].map(([name2, file]) => ({ name: name2, path: file })).sort((left, right) => left.name.localeCompare(right.name)),
13931
- packageResolved: import_node_fs13.default.existsSync(resolvedFile) ? resolvedFile : null,
16554
+ packageResolved,
13932
16555
  appTargets: appTargetNames,
13933
16556
  configuration,
13934
16557
  settings
@@ -13936,15 +16559,12 @@ function readXcodeAppTarget(input, targetName, configurationName, options = {})
13936
16559
  }
13937
16560
 
13938
16561
  // src/native-app-identity-project.ts
13939
- function isRecord4(value) {
13940
- return typeof value === "object" && value !== null && !Array.isArray(value);
13941
- }
13942
16562
  function nonEmptyString2(value) {
13943
16563
  return typeof value === "string" && value.length > 0 ? value : void 0;
13944
16564
  }
13945
16565
  function readNativeAppIdentityFromXcodeTarget(app, parseInfoPlist = parsePlistSource) {
13946
16566
  const dictionary = parseInfoPlist(app.infoPlist);
13947
- if (!isRecord4(dictionary)) throw new Error("native app Info.plist is not a dictionary");
16567
+ if (!isRecord(dictionary)) throw new Error("native app Info.plist is not a dictionary");
13948
16568
  const settings = app.settings;
13949
16569
  const bundleIdentifier = nonEmptyString2(dictionary.CFBundleIdentifier) ?? nonEmptyString2(settings?.("PRODUCT_BUNDLE_IDENTIFIER"));
13950
16570
  if (!bundleIdentifier) throw new Error("native app has no bundle identifier");
@@ -13961,8 +16581,8 @@ function readNativeAppIdentityFromXcodeTarget(app, parseInfoPlist = parsePlistSo
13961
16581
  const designRequiresCompatibility = dictionary.UIDesignRequiresCompatibility === true;
13962
16582
  const alternateIconNames = /* @__PURE__ */ new Set();
13963
16583
  const icons = dictionary.CFBundleIcons;
13964
- const alternates = isRecord4(icons) ? icons.CFBundleAlternateIcons : void 0;
13965
- if (isRecord4(alternates)) {
16584
+ const alternates = isRecord(icons) ? icons.CFBundleAlternateIcons : void 0;
16585
+ if (isRecord(alternates)) {
13966
16586
  for (const name2 of Object.keys(alternates)) {
13967
16587
  if (name2) alternateIconNames.add(name2);
13968
16588
  }
@@ -14194,7 +16814,7 @@ function readIosNativeAppIdentity(projectRoot, parseInfoPlist, iosTarget) {
14194
16814
  const installedManifest = JSON.parse(
14195
16815
  import_node_fs14.default.readFileSync(reanimatedManifestPath, "utf8")
14196
16816
  );
14197
- const installedVersion = isRecord4(installedManifest) ? nonEmptyString2(installedManifest.version) : void 0;
16817
+ const installedVersion = isRecord(installedManifest) ? nonEmptyString2(installedManifest.version) : void 0;
14198
16818
  if (!installedVersion) throw new Error("Reanimated package version is malformed");
14199
16819
  if (Number.parseInt(installedVersion, 10) < 4) return identity;
14200
16820
  const defaults = JSON.parse(
@@ -14206,11 +16826,11 @@ function readIosNativeAppIdentity(projectRoot, parseInfoPlist, iosTarget) {
14206
16826
  "utf8"
14207
16827
  )
14208
16828
  );
14209
- if (!isRecord4(defaults)) throw new Error("Reanimated static flags are malformed");
16829
+ if (!isRecord(defaults)) throw new Error("Reanimated static flags are malformed");
14210
16830
  const manifest = JSON.parse(import_node_fs14.default.readFileSync(projectManifestPath, "utf8"));
14211
- const reanimated = isRecord4(manifest) ? manifest.reanimated : void 0;
14212
- const overrides = isRecord4(reanimated) ? reanimated.staticFeatureFlags : void 0;
14213
- if (overrides !== void 0 && !isRecord4(overrides)) {
16831
+ const reanimated = isRecord(manifest) ? manifest.reanimated : void 0;
16832
+ const overrides = isRecord(reanimated) ? reanimated.staticFeatureFlags : void 0;
16833
+ if (overrides !== void 0 && !isRecord(overrides)) {
14214
16834
  throw new Error("Reanimated static flag overrides are malformed");
14215
16835
  }
14216
16836
  const flags = {};
@@ -14231,7 +16851,7 @@ function readIosNativeAppIdentity(projectRoot, parseInfoPlist, iosTarget) {
14231
16851
  }
14232
16852
 
14233
16853
  // src/native-firebase-config.ts
14234
- var import_node_child_process5 = require("node:child_process");
16854
+ var import_node_child_process6 = require("node:child_process");
14235
16855
  var import_node_fs15 = __toESM(require("node:fs"), 1);
14236
16856
  var import_node_os3 = __toESM(require("node:os"), 1);
14237
16857
  var import_node_path15 = __toESM(require("node:path"), 1);
@@ -14276,7 +16896,7 @@ function readExpoConfig(projectRoot) {
14276
16896
  const directory = resultDirectory();
14277
16897
  const resultPath = import_node_path15.default.join(directory, "config.json");
14278
16898
  try {
14279
- const child = (0, import_node_child_process5.spawnSync)("node", expoConfigArgs(projectRoot, resultPath), {
16899
+ const child = (0, import_node_child_process6.spawnSync)("node", expoConfigArgs(projectRoot, resultPath), {
14280
16900
  cwd: projectRoot,
14281
16901
  encoding: "utf8",
14282
16902
  stdio: ["ignore", "ignore", "pipe"],
@@ -14774,7 +17394,7 @@ function withPeach(config, options = {}) {
14774
17394
  const configuredBundleUrl = "/index.bundle?platform=ios&dev=true&hot=true&minify=false";
14775
17395
  const cfgServer = config.server;
14776
17396
  const port = resolveMetroPort(cfgServer);
14777
- const metroServerId = (0, import_node_crypto6.randomUUID)();
17397
+ const metroServerId = (0, import_node_crypto7.randomUUID)();
14778
17398
  const bundleUrl = tagRnxBundleForPlugin(
14779
17399
  configuredBundleUrl,
14780
17400
  `http://localhost:${port}`,