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;
@@ -5498,19 +5498,35 @@ function packageNativeRequests(dir) {
5498
5498
  (a, b) => a.kind.localeCompare(b.kind) || a.name.localeCompare(b.name)
5499
5499
  );
5500
5500
  }
5501
- function wireSlotMigration(appDir, wire) {
5501
+ function dependencyNativeOwners(appDir, manifest) {
5502
5502
  const owners = /* @__PURE__ */ new Map();
5503
- const manifest = readProjectManifest(appDir);
5504
5503
  for (const name2 of Object.keys({
5505
5504
  ...manifest?.devDependencies,
5506
5505
  ...manifest?.dependencies
5507
5506
  })) {
5508
5507
  const dir = installedPackageDir(appDir, name2);
5509
- if (!dir) continue;
5508
+ if (!dir || !dir.split("/").includes("node_modules")) continue;
5510
5509
  for (const request of packageNativeRequests(dir))
5511
5510
  if (!owners.has(`${request.kind}:${request.name}`))
5512
5511
  owners.set(`${request.kind}:${request.name}`, name2);
5513
5512
  }
5513
+ return owners;
5514
+ }
5515
+ function configModule(configPath, packages) {
5516
+ const body = [" packages: {", ...packages, " },"];
5517
+ if (configPath && (configPath.endsWith(".cjs") || configPath.endsWith(".js") && /\bmodule\.exports\b/.test(readSmallFile(configPath) ?? "")))
5518
+ return ["module.exports = {", ...body, "}"].join("\n");
5519
+ return [
5520
+ `import { defineConfig } from '${rnxPublicBrand.packageName}/config'`,
5521
+ "",
5522
+ "export default defineConfig({",
5523
+ ...body,
5524
+ "})"
5525
+ ].join("\n");
5526
+ }
5527
+ function wireSlotMigration(appDir, configPath, wire, kept = []) {
5528
+ const manifest = readProjectManifest(appDir);
5529
+ const owners = dependencyNativeOwners(appDir, manifest);
5514
5530
  if (manifest) {
5515
5531
  for (const request of scanLocalNative(
5516
5532
  appDir,
@@ -5518,7 +5534,8 @@ function wireSlotMigration(appDir, wire) {
5518
5534
  { module: /* @__PURE__ */ new Set(), view: /* @__PURE__ */ new Set() },
5519
5535
  void 0,
5520
5536
  /* @__PURE__ */ new Set(),
5521
- true
5537
+ true,
5538
+ owners
5522
5539
  ))
5523
5540
  if (!owners.has(`${request.kind}:${request.name}`))
5524
5541
  owners.set(`${request.kind}:${request.name}`, request.package);
@@ -5558,9 +5575,17 @@ function wireSlotMigration(appDir, wire) {
5558
5575
  ].filter(Boolean);
5559
5576
  return ` [${JSON.stringify(owner)}]: { ${parts.join(", ")} },`;
5560
5577
  });
5578
+ if (lines.length && kept.length)
5579
+ return [
5580
+ ...manual.map((line) => `// ${line}`),
5581
+ `// keep ${kept.join(", ")}; merge these into packages`,
5582
+ " packages: {",
5583
+ ...lines,
5584
+ " },"
5585
+ ].join("\n");
5561
5586
  return [
5562
- ...lines.length ? [" packages: {", ...lines, " },"] : [],
5563
- ...manual.map((line) => ` // ${line}`)
5587
+ ...manual.map((line) => `// ${line}`),
5588
+ ...lines.length ? [configModule(configPath, lines)] : []
5564
5589
  ].join("\n");
5565
5590
  }
5566
5591
  function listDir(dir) {
@@ -5588,7 +5613,7 @@ function hasNativeCode(dir, platform) {
5588
5613
  const manifest = readSmallFile((0, import_node_path10.join)(dir, "package.json"));
5589
5614
  return manifest !== null && manifest.includes('"codegenConfig"');
5590
5615
  }
5591
- function scanLocalNative(appDir, pkg, answered, platform, knownPackages = /* @__PURE__ */ new Set(), includeLegacy = false) {
5616
+ function scanLocalNative(appDir, pkg, answered, platform, knownPackages = /* @__PURE__ */ new Set(), includeLegacy = false, providers) {
5592
5617
  const expoModuleDirs = [];
5593
5618
  const excludedModuleDirs = [];
5594
5619
  const sourceFiles = [];
@@ -5631,10 +5656,11 @@ function scanLocalNative(appDir, pkg, answered, platform, knownPackages = /* @__
5631
5656
  };
5632
5657
  const found = /* @__PURE__ */ new Map();
5633
5658
  const add = (kind, name2, file, line) => {
5634
- const packageName = owner((0, import_node_path10.dirname)(file));
5635
- if (knownPackages.has(packageName)) return;
5636
5659
  const key = `${kind}:${name2}`;
5637
5660
  if (found.has(key)) return;
5661
+ providers ??= dependencyNativeOwners(appDir, pkg);
5662
+ const packageName = providers.get(key) ?? owner((0, import_node_path10.dirname)(file));
5663
+ if (knownPackages.has(packageName)) return;
5638
5664
  const moduleDir = expoModuleDirs.find((dir) => file.startsWith(`${dir}/`)) ?? null;
5639
5665
  found.set(key, {
5640
5666
  kind,
@@ -5704,6 +5730,7 @@ var init_app_stubs = __esm({
5704
5730
  import_sucrase = require("sucrase");
5705
5731
  init_config();
5706
5732
  init_is_record();
5733
+ init_public_brand();
5707
5734
  init_visit_parsed_program();
5708
5735
  init_detect();
5709
5736
  SOURCE_FILE = /\.[cm]?[jt]sx?$/;
@@ -5778,12 +5805,19 @@ async function loadConfigFile(project) {
5778
5805
  }
5779
5806
  const wire = WIRE_SLOTS.filter((slot) => loaded2[slot] !== void 0);
5780
5807
  if (wire.length > 0) {
5781
- const migration = wireSlotMigration(project.appDir, {
5782
- modules: { ...loaded2.turboModules, ...loaded2.nativeModules },
5783
- views: { ...loaded2.nativeViews }
5784
- });
5808
+ const slots = WIRE_SLOTS;
5809
+ const kept = Object.entries(loaded2).filter(([key, value]) => !slots.includes(key) && value !== void 0).map(([key]) => key);
5810
+ const migration = wireSlotMigration(
5811
+ project.appDir,
5812
+ project.configPath,
5813
+ {
5814
+ modules: { ...loaded2.turboModules, ...loaded2.nativeModules },
5815
+ views: { ...loaded2.nativeViews }
5816
+ },
5817
+ kept
5818
+ );
5785
5819
  throw new Error(
5786
- `${wire.join(", ")} moved under packages, keyed by the package whose native side they answer. replace them with:
5820
+ `${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
5821
  ${migration}`
5788
5822
  );
5789
5823
  }
@@ -5974,7 +6008,7 @@ __export(metro_plugin_exports, {
5974
6008
  module.exports = __toCommonJS(metro_plugin_exports);
5975
6009
  var import_fs3 = __toESM(require("fs"), 1);
5976
6010
  var import_module = require("module");
5977
- var import_node_crypto2 = require("node:crypto");
6011
+ var import_node_crypto3 = require("node:crypto");
5978
6012
  var import_path3 = __toESM(require("path"), 1);
5979
6013
 
5980
6014
  // ../peach-engine/src/platform/adapter.ts
@@ -6107,9 +6141,2250 @@ init_replacement_module_handler();
6107
6141
  // src/installed-package-versions.ts
6108
6142
  var import_fs = __toESM(require("fs"), 1);
6109
6143
  var import_path = __toESM(require("path"), 1);
6110
- var import_lazy_stub_patterns = require("@peach/compat/lazy-stub-patterns");
6111
- var import_native_package_names = require("@peach/compat/native-package-names");
6112
- var import_stub_manifest = require("@peach/compat/stub-manifest");
6144
+
6145
+ // ../peach-compat/src/generated/light-native-package-names.ts
6146
+ var LIGHT_NATIVE_PACKAGE_NAMES = [
6147
+ "@100mslive/react-native-hms",
6148
+ "@account-kit/react-native-signer",
6149
+ "@adobe/react-native-aepassurance",
6150
+ "@adobe/react-native-aepcampaignclassic",
6151
+ "@adobe/react-native-aepedge",
6152
+ "@adobe/react-native-aepedgebridge",
6153
+ "@adobe/react-native-aepedgeconsent",
6154
+ "@adobe/react-native-aepedgeidentity",
6155
+ "@adobe/react-native-aepmessaging",
6156
+ "@adobe/react-native-aepoptimize",
6157
+ "@adobe/react-native-aepplaces",
6158
+ "@adobe/react-native-aeptarget",
6159
+ "@adobe/react-native-aepuserprofile",
6160
+ "@adrekic/expo-meta-wearables-dat",
6161
+ "@adrianso/react-native-device-brightness",
6162
+ "@alexzunik/react-native-money-input",
6163
+ "@algocare/react-native-code-push",
6164
+ "@allboatsrise/expo-marketingcloudsdk",
6165
+ "@ammarahmed/react-native-eventsource",
6166
+ "@ammarahmed/react-native-share-extension",
6167
+ "@ammarahmed/react-native-sodium",
6168
+ "@ammarahmed/react-native-upload",
6169
+ "@amplitude/analytics-react-native",
6170
+ "@amplitude/experiment-react-native-client",
6171
+ "@amplitude/plugin-engagement-react-native",
6172
+ "@amplitude/plugin-session-replay-react-native",
6173
+ "@amplitude/react-native",
6174
+ "@amplitude/session-replay-react-native",
6175
+ "@animo-id/expo-secure-environment",
6176
+ "@ansight/react-native",
6177
+ "@anythingai/launcher",
6178
+ "@appcues/react-native",
6179
+ "@appdynamics/react-native-agent",
6180
+ "@appier/react-native-sdk",
6181
+ "@appmetrica/react-native-analytics",
6182
+ "@ascendtis/react-native-voice-to-text",
6183
+ "@bam.tech/react-native-app-security",
6184
+ "@bam.tech/react-native-config",
6185
+ "@bennyblader/ddk-rn",
6186
+ "@bishaldahal/react-native-khalti-checkout",
6187
+ "@blazejkustra/react-native-alert",
6188
+ "@boterop/react-native-background-timer",
6189
+ "@bounceapp/react-native-paypal",
6190
+ "@brandingbrand/react-native-app-restart",
6191
+ "@breeztech/breez-sdk-spark-react-native",
6192
+ "@brigad/react-native-adservices",
6193
+ "@bsky.app/expo-dynamic-app-icon",
6194
+ "@bsky.app/expo-translate-text",
6195
+ "@bufgix/react-native-secure-window",
6196
+ "@burnt-labs/expo-satya-attest",
6197
+ "@callstack/repack",
6198
+ "@castleio/react-native-castle",
6199
+ "@chargebee/react-native-chargebee",
6200
+ "@checkout.com/checkout-react-native-components",
6201
+ "@clear.sale/behavior-analytics-react-native-sdk",
6202
+ "@cloudflare/react-native-webrtc",
6203
+ "@cloudflare/realtimekit-react-native",
6204
+ "@cloudflare/realtimekit-react-native-ui",
6205
+ "@code-push-next/react-native-code-push",
6206
+ "@coinbase/mobile-wallet-protocol-host",
6207
+ "@coinbase/wallet-mobile-sdk",
6208
+ "@companycam/vibe-check",
6209
+ "@compdfkit_pdf_sdk/react_native",
6210
+ "@consento/sync-randombytes",
6211
+ "@contentsquare/react-native-bridge",
6212
+ "@coralogix/react-native-plugin",
6213
+ "@cordialinc/react-native-sdk",
6214
+ "@curity/identityserver-haapi-react-native-sdk",
6215
+ "@d11/dota",
6216
+ "@d11/marco",
6217
+ "@daily-co/react-native-webrtc",
6218
+ "@dariyd/react-native-text-recognition",
6219
+ "@dashdoc/react-native-system-sounds",
6220
+ "@datadog/mobile-react-native-session-replay",
6221
+ "@datadome/datadome-axios",
6222
+ "@datadome/react-native-datadome",
6223
+ "@datalyr/react-native",
6224
+ "@descope/react-native-sdk",
6225
+ "@deuna/react-native-sdk",
6226
+ "@dev-amirzubair/react-native-voice",
6227
+ "@devikai/react-native",
6228
+ "@devrev/sdk-react-native",
6229
+ "@didit-protocol/sdk-react-native",
6230
+ "@digia-engage/core",
6231
+ "@dub/react-native",
6232
+ "@dynatrace/react-native-plugin",
6233
+ "@edkimmel/expo-audio-stream",
6234
+ "@embrace-io/react-native",
6235
+ "@embrace-io/react-native-tracer-provider",
6236
+ "@empower-nokta/react-native-mobile-ads",
6237
+ "@entria/rn-face-detector",
6238
+ "@entrust.corporation/idvsdk-reactnative",
6239
+ "@evervault/evervault-react-native",
6240
+ "@evrotrust/et-react-native-wl-sdk",
6241
+ "@exodus/react-native-async-storage",
6242
+ "@exodus/react-native-biometrics",
6243
+ "@exodus/react-native-bundle-loader",
6244
+ "@exodus/react-native-fs",
6245
+ "@exodus/react-native-keychain",
6246
+ "@exodus/react-native-nft-viewer",
6247
+ "@exodus/react-native-notifications",
6248
+ "@exodus/react-native-payments",
6249
+ "@exodus/react-native-prompt-android",
6250
+ "@exodus/react-native-reanimated",
6251
+ "@exodus/react-native-screenshot-detector",
6252
+ "@exodus/react-native-wallet",
6253
+ "@exodus/rive-react-native",
6254
+ "@extole/react-native-sdk",
6255
+ "@fedimint/react-native",
6256
+ "@freddixx/react-native-ad-manager",
6257
+ "@freshpaint/freshpaint-react-native",
6258
+ "@frontegg/react-native",
6259
+ "@gainsight-px/react-native-gainsight-px",
6260
+ "@getalby/expo-shared-preferences",
6261
+ "@getcello/cello-react-native",
6262
+ "@getstoryteller/react-native-storyteller-sdk",
6263
+ "@getvouch/react-native-sdk",
6264
+ "@glance-networks/reactnative-bridge",
6265
+ "@google-cloud/recaptcha-enterprise-react-native",
6266
+ "@grafana/faro-react-native",
6267
+ "@granite-js/image",
6268
+ "@granite-js/video",
6269
+ "@hackler/react-native-sdk",
6270
+ "@haroldtran/react-native-thermal-printer",
6271
+ "@heap/react-native-heap",
6272
+ "@heartbot/expo-google-authentication",
6273
+ "@heasy/react-native-sunmi-printer",
6274
+ "@hero-design/react-native-month-year-picker",
6275
+ "@hexigames/react-native-apple-ads-attribution",
6276
+ "@hmscore/react-native-hms-ads",
6277
+ "@hmscore/react-native-hms-availability",
6278
+ "@hmscore/react-native-hms-location",
6279
+ "@hmscore/react-native-hms-map",
6280
+ "@hmscore/react-native-hms-push",
6281
+ "@honeycombio/opentelemetry-react-native",
6282
+ "@hotta/react-native-imagepicker",
6283
+ "@howincodes/expo-dynamic-app-icon",
6284
+ "@ht-sdks/sovran-react-native",
6285
+ "@humansecurity/expo-mobile-sdk",
6286
+ "@humansecurity/react-native-sdk",
6287
+ "@ihealth/ihealthlibrary-react-native",
6288
+ "@imgly/editor-react-native",
6289
+ "@infinitered/react-native-mlkit-face-detection",
6290
+ "@infinitered/react-native-mlkit-object-detection",
6291
+ "@infinitered/react-native-mlkit-text-recognition",
6292
+ "@instana/react-native-agent",
6293
+ "@inthepocket/react-native-service-discovery",
6294
+ "@ionic/portals-react-native",
6295
+ "@ivandigitalsolutions/react-native-camerax",
6296
+ "@jitsi/react-native-sdk",
6297
+ "@join-stories/react-native-widgets",
6298
+ "@json-eval-rs/react-native",
6299
+ "@ketch-com/ketch-react-native",
6300
+ "@klarna/platform-colors",
6301
+ "@launchhq/react-native-keyboard-composer",
6302
+ "@layers/expo-tiktok-business",
6303
+ "@leonsilicon/react-native-list",
6304
+ "@livekit/react-native-krisp-noise-filter",
6305
+ "@lobehub/expo-better-auth-passkey",
6306
+ "@logbrew/react-native",
6307
+ "@mauron85/react-native-background-geolocation",
6308
+ "@mccsoft/react-native-matomo",
6309
+ "@mentra/bluetooth-sdk",
6310
+ "@metamask/react-native-acm",
6311
+ "@metamask/react-native-payments",
6312
+ "@microblink/blinkcard-react-native",
6313
+ "@microsoft/react-native-clarity",
6314
+ "@mitsuharu/react-native-sunmi-printer-library",
6315
+ "@mixpanel/react-native-session-replay",
6316
+ "@moneykit/connect-react-native",
6317
+ "@more-tech/react-native-libsodium",
6318
+ "@mux/mux-react-native-player",
6319
+ "@mykin-ai/expo-audio-stream",
6320
+ "@networkinternational/ni-card-management-sdk",
6321
+ "@nevis-security/nevis-mobile-authentication-sdk-react",
6322
+ "@nexigen/react-native-pre-text",
6323
+ "@nitro-perf-devtools/core",
6324
+ "@norcy/react-native-toolkit",
6325
+ "@npm_fluentco/adflow-react-native-sdk",
6326
+ "@nsure-ai/react-native-client-sdk",
6327
+ "@nuggetslife/vc-rn",
6328
+ "@obsidian_north/react-native-mediastore",
6329
+ "@offline-protocol/mesh-sdk",
6330
+ "@oguzhnatly/react-native-image-manipulator",
6331
+ "@olo/pay-react-native",
6332
+ "@onekeyfe/react-native-aes-crypto",
6333
+ "@onekeyfe/react-native-app-update",
6334
+ "@onekeyfe/react-native-async-storage",
6335
+ "@onekeyfe/react-native-background-thread",
6336
+ "@onekeyfe/react-native-ble-utils",
6337
+ "@onekeyfe/react-native-bundle-crypto",
6338
+ "@onekeyfe/react-native-bundle-update",
6339
+ "@onekeyfe/react-native-check-biometric-auth-changed",
6340
+ "@onekeyfe/react-native-cloud-fs",
6341
+ "@onekeyfe/react-native-cloud-kit-module",
6342
+ "@onekeyfe/react-native-device-utils",
6343
+ "@onekeyfe/react-native-dns-lookup",
6344
+ "@onekeyfe/react-native-get-random-values",
6345
+ "@onekeyfe/react-native-keychain-module",
6346
+ "@onekeyfe/react-native-lite-card",
6347
+ "@onekeyfe/react-native-native-logger",
6348
+ "@onekeyfe/react-native-network-info",
6349
+ "@onekeyfe/react-native-network-throttle",
6350
+ "@onekeyfe/react-native-pbkdf2",
6351
+ "@onekeyfe/react-native-perf-memory",
6352
+ "@onekeyfe/react-native-perf-stats",
6353
+ "@onekeyfe/react-native-ping",
6354
+ "@onekeyfe/react-native-range-downloader",
6355
+ "@onekeyfe/react-native-sni-connect",
6356
+ "@onekeyfe/react-native-splash-screen",
6357
+ "@onekeyfe/react-native-split-bundle-loader",
6358
+ "@onekeyfe/react-native-tab-view",
6359
+ "@onekeyfe/react-native-tcp-socket",
6360
+ "@onekeyfe/react-native-webview-cleaner",
6361
+ "@onekeyfe/react-native-zip-archive",
6362
+ "@onfido/react-native-sdk",
6363
+ "@onramp-sdk/react-native",
6364
+ "@opacity-labs/react-native-opacity",
6365
+ "@openobserve/mobile-react-native",
6366
+ "@openobserve/mobile-react-native-session-replay",
6367
+ "@openobserve/mobile-react-native-webview",
6368
+ "@openreplay/react-native",
6369
+ "@optimove-inc/react-native",
6370
+ "@oracle/react-native-pushiomanager",
6371
+ "@oscilar/react-native-oscilar-module",
6372
+ "@oxyhq/services",
6373
+ "@pagopa/io-react-native-cie",
6374
+ "@pagopa/io-react-native-cieid",
6375
+ "@pagopa/io-react-native-crypto",
6376
+ "@pagopa/io-react-native-http-client",
6377
+ "@pagopa/io-react-native-integrity",
6378
+ "@pagopa/io-react-native-iso18013",
6379
+ "@pagopa/io-react-native-jwt",
6380
+ "@pagopa/io-react-native-login-utils",
6381
+ "@pagopa/io-react-native-secure-storage",
6382
+ "@pagopa/io-react-native-zendesk",
6383
+ "@pagopa/react-native-cie",
6384
+ "@paul_sizon/expo-pdf-text-extract",
6385
+ "@payrails/react-native-sdk",
6386
+ "@paytabs/react-native-paytabs",
6387
+ "@pchmn/expo-material3-theme",
6388
+ "@pdftron/react-native-pdf",
6389
+ "@peacechen/react-native-otp-autocomplete",
6390
+ "@phantom/react-native-juicebox-sdk",
6391
+ "@picovoice/porcupine-react-native",
6392
+ "@picovoice/react-native-voice-processor",
6393
+ "@piwikpro/react-native-piwik-pro-sdk",
6394
+ "@pocketpalai/llama.rn",
6395
+ "@prelude.so/react-native-sdk",
6396
+ "@premieroctet/react-native-wallet",
6397
+ "@primer-io/react-native",
6398
+ "@privy-io/expo-native-extensions",
6399
+ "@psync/anti-jailbreak",
6400
+ "@qonversion/react-native-sdk",
6401
+ "@quidone/react-native-wheel-picker-feedback",
6402
+ "@radiusnetworks/react-native-flybuy-core",
6403
+ "@radiusnetworks/react-native-flybuy-pickup",
6404
+ "@react-native-agconnect/applinking",
6405
+ "@react-native-community/clipboard",
6406
+ "@react-native-community/cookies",
6407
+ "@react-native-community/voice",
6408
+ "@react-native-kakao/core",
6409
+ "@react-native-kakao/share",
6410
+ "@react-native-kakao/social",
6411
+ "@react-native-kakao/user",
6412
+ "@react-native-karte/core",
6413
+ "@react-native-karte/in-app-messaging",
6414
+ "@react-native-karte/notification",
6415
+ "@react-native-seoul/kakao-login",
6416
+ "@react-native-zohosalesiq/mobilisten",
6417
+ "@react-native-zohosalesiq/mobilisten-core",
6418
+ "@reclaimprotocol/inapp-rn-sdk",
6419
+ "@reeq/react-native-device-brightness",
6420
+ "@reeq/react-native-passkit",
6421
+ "@regulaforensics/document-reader",
6422
+ "@regulaforensics/face-sdk",
6423
+ "@regulaforensics/idv",
6424
+ "@regulaforensics/react-native-document-reader-api",
6425
+ "@revopush/react-native-code-push",
6426
+ "@riskified/react-native-riskified-sdk",
6427
+ "@rownd/react-native",
6428
+ "@ryftpay/react-native",
6429
+ "@sap_oss/gigya-react-native-plugin-for-sap-customer-data-cloud",
6430
+ "@sayem314/react-native-keep-awake",
6431
+ "@secondts/bark-react-native",
6432
+ "@segment/analytics-react-native-plugin-idfa",
6433
+ "@selligent-marketing-cloud/selligent-react-native",
6434
+ "@semisquircle/expo-dynamic-app-icon",
6435
+ "@seontechnologies/seon-react-native-mobile-wrapper",
6436
+ "@serserm/react-native-turbo-serialport",
6437
+ "@shadahmad7/react-native-calendar",
6438
+ "@shadahmad7/react-native-store-review",
6439
+ "@shenai/react-native-sdk",
6440
+ "@sherlo/react-native-storybook",
6441
+ "@simula/ads-react-native",
6442
+ "@siteed/sherpa-onnx.rn",
6443
+ "@six33/react-native-bg-removal",
6444
+ "@socure-inc/docv-react-native",
6445
+ "@socure-inc/react-native-device-risk",
6446
+ "@solidx/react-native-true-sheet",
6447
+ "@somesoap/react-native-image-palette",
6448
+ "@sourcepoint/react-native-cmp",
6449
+ "@sourcetoad/react-native-sketch-canvas",
6450
+ "@speechmatics/expo-two-way-audio",
6451
+ "@splitsoftware/splitio-react-native",
6452
+ "@splunk/otel-react-native",
6453
+ "@stream-io/noise-cancellation-react-native",
6454
+ "@stream-io/react-native-callingx",
6455
+ "@stream-io/react-native-webrtc",
6456
+ "@stream-io/video-filters-react-native",
6457
+ "@sumsub/react-native-mobilesdk-module",
6458
+ "@superfan-app/apple-music-auth",
6459
+ "@superwall/react-native-superwall",
6460
+ "@tap-payments/apple-pay-rn",
6461
+ "@tap-payments/google-pay-rn",
6462
+ "@taprails/tap-to-pay",
6463
+ "@telnyx/react-voice-commons-sdk",
6464
+ "@tencentcloud/react-native-push",
6465
+ "@terrylinla/react-native-sketch-canvas",
6466
+ "@thegrizzlylabs/react-native-genius-scan",
6467
+ "@theoplayer/react-native-analytics-adobe",
6468
+ "@theoplayer/react-native-analytics-adobe-edge",
6469
+ "@theoplayer/react-native-analytics-bitmovin",
6470
+ "@theoplayer/react-native-analytics-conviva",
6471
+ "@theoplayer/react-native-analytics-gemius",
6472
+ "@theoplayer/react-native-analytics-mux",
6473
+ "@theoplayer/react-native-analytics-nielsen",
6474
+ "@theoplayer/react-native-analytics-youbora",
6475
+ "@theoplayer/react-native-engage",
6476
+ "@tillpos/rn-receipt-printer-utils",
6477
+ "@timwangdev/react-native-geocoder",
6478
+ "@trycourier/courier-react-native",
6479
+ "@tryvital/vital-core-react-native",
6480
+ "@tryvital/vital-health-react-native",
6481
+ "@ttwrpz/react-native-brightness-setting",
6482
+ "@tursodatabase/sync-react-native",
6483
+ "@twilio/video-react-native-sdk",
6484
+ "@unifyapps/analytics-react-native",
6485
+ "@unomed/react-native-matrix-sdk",
6486
+ "@userpilot/react-native",
6487
+ "@veriff/react-native-sdk",
6488
+ "@verisoul_ai/react-native-verisoul",
6489
+ "@videosdk.live/react-native-webrtc",
6490
+ "@vonage/client-sdk-video-react-native",
6491
+ "@voximplant/react-native-foreground-service",
6492
+ "@wokcito/ffmpeg-kit-react-native",
6493
+ "@wootric/react-native-wootric",
6494
+ "@wscsports/blaze-rtn-sdk",
6495
+ "@wwimmo/react-native-sketch-canvas",
6496
+ "@zoom/meetingsdk-react-native",
6497
+ "@zoom/react-native-videosdk",
6498
+ "agora-react-native-rtm",
6499
+ "aliyun-react-native-push",
6500
+ "amazon-cognito-identity-js",
6501
+ "apple-pay-react-native-expo",
6502
+ "apptentive-react-native",
6503
+ "arlon-test-library",
6504
+ "bcrypt-react-native",
6505
+ "bitlabs",
6506
+ "brick-module",
6507
+ "bridgefy-react-native",
6508
+ "chartbeat-react-native-bridge-sdk",
6509
+ "cleverpush-react-native",
6510
+ "cloudx-react-native",
6511
+ "cm-sdk-react-native-v3-new-arch",
6512
+ "cobrowse-sdk-react-native",
6513
+ "cojson-core-rn",
6514
+ "contour-ai-sdk",
6515
+ "create-react-native-library",
6516
+ "crisp-sdk-react-native",
6517
+ "cui-llama.rn",
6518
+ "dynamsoft-capture-vision-react-native",
6519
+ "expo-activity-motion",
6520
+ "expo-ai-kit",
6521
+ "expo-app-blocker",
6522
+ "expo-audio-stream-pcm",
6523
+ "expo-barcode-scanner",
6524
+ "expo-brownfield",
6525
+ "expo-check-installed-apps",
6526
+ "expo-esim",
6527
+ "expo-face-check",
6528
+ "expo-face-detector",
6529
+ "expo-font-fallback",
6530
+ "expo-google-places",
6531
+ "expo-google-places-autocomplete",
6532
+ "expo-guided-access",
6533
+ "expo-http-server",
6534
+ "expo-image-and-video-compressor",
6535
+ "expo-in-app-purchases",
6536
+ "expo-kiosk-control",
6537
+ "expo-media-viewer",
6538
+ "expo-mlkit-ocr",
6539
+ "expo-native-launch-arguments",
6540
+ "expo-ocr-kit",
6541
+ "expo-onesignal-live-activities",
6542
+ "expo-otp-autofill",
6543
+ "expo-pdf-text-extract",
6544
+ "expo-react-native-adapter",
6545
+ "expo-realtime-audio",
6546
+ "expo-realtime-ivs-broadcast",
6547
+ "expo-reteno-sdk",
6548
+ "expo-samsung-pay",
6549
+ "expo-speech-transcriber",
6550
+ "expo-store-checker",
6551
+ "expo-text-extractor",
6552
+ "expo-tiktok-ads-events",
6553
+ "expo-tnk",
6554
+ "expo-torch",
6555
+ "expo-trim-video",
6556
+ "expo-ttp-edu",
6557
+ "expo-vpn-checker",
6558
+ "expo-widget",
6559
+ "expo-yandex-mapkit",
6560
+ "facepass-react-native-module",
6561
+ "fast-mlkit-translate-text",
6562
+ "framepayments-react-native",
6563
+ "getsocial-react-native-sdk",
6564
+ "helpshift-plugin-sdkx-react-native",
6565
+ "hyper-sdk-react",
6566
+ "hypertrack-sdk-react-native",
6567
+ "hypertrack-sdk-react-native-plugin-android-activity-service-google",
6568
+ "hypertrack-sdk-react-native-plugin-android-location-services-google",
6569
+ "hypertrack-sdk-react-native-plugin-android-push-service-firebase",
6570
+ "idwise-react-native-sdk",
6571
+ "infobip-mobile-messaging-react-native-plugin",
6572
+ "jcore-react-native",
6573
+ "jpush-react-native",
6574
+ "judokit-react-native",
6575
+ "localytics-react-native",
6576
+ "mappls-map-react-native",
6577
+ "mindbox-sdk",
6578
+ "mobile-payments-sdk-react-native",
6579
+ "mychips-react-sdk",
6580
+ "myfatoorah-reactnative",
6581
+ "neuroid-reactnative-sdk",
6582
+ "nodejs-mobile-react-native",
6583
+ "notifly-sdk",
6584
+ "onnxruntime-react-native",
6585
+ "opentok-react-native",
6586
+ "otpless-headless-rn-lite",
6587
+ "payme-mini-app",
6588
+ "payu-non-seam-less-react",
6589
+ "ping-openmls-sdk-react-native-macos",
6590
+ "plotline-engage",
6591
+ "pulse-updates",
6592
+ "ratex-react-native",
6593
+ "raygun4reactnative",
6594
+ "react-airplay",
6595
+ "react-native-accessibility-wrapper",
6596
+ "react-native-acoustic-connect-beta",
6597
+ "react-native-address-autocomplete",
6598
+ "react-native-adjust-oaid",
6599
+ "react-native-advertising-id",
6600
+ "react-native-agora-chat",
6601
+ "react-native-airplay-btn",
6602
+ "react-native-alarm-scheduler",
6603
+ "react-native-android-installed-apps-unblocking",
6604
+ "react-native-android-location-services-dialog-box",
6605
+ "react-native-android-log",
6606
+ "react-native-android-navbar-height",
6607
+ "react-native-android-notification-listener",
6608
+ "react-native-android-open-settings",
6609
+ "react-native-apay",
6610
+ "react-native-app-icon-changer",
6611
+ "react-native-appearance",
6612
+ "react-native-apple-payment",
6613
+ "react-native-appodeal",
6614
+ "react-native-appstore-version-checker",
6615
+ "react-native-apxor-rtm-plugin",
6616
+ "react-native-apxor-sdk",
6617
+ "react-native-argon2",
6618
+ "react-native-attribution-token",
6619
+ "react-native-audio",
6620
+ "react-native-audio-record",
6621
+ "react-native-background-color",
6622
+ "react-native-background-guardian",
6623
+ "react-native-background-remover",
6624
+ "react-native-battery-optimization-check",
6625
+ "react-native-beacon-radar",
6626
+ "react-native-bg-thread",
6627
+ "react-native-bildit-flybuy-core",
6628
+ "react-native-bildit-flybuy-pickup",
6629
+ "react-native-ble-advertiser",
6630
+ "react-native-blob-jsi-helper",
6631
+ "react-native-bluetooth-escpos-printer",
6632
+ "react-native-bottomsheet",
6633
+ "react-native-braintree-dropin-ui",
6634
+ "react-native-bspatch",
6635
+ "react-native-build-config",
6636
+ "react-native-bureauid-fraud-sdk",
6637
+ "react-native-caffe2",
6638
+ "react-native-call-detection",
6639
+ "react-native-call-log",
6640
+ "react-native-capture",
6641
+ "react-native-carrier-info",
6642
+ "react-native-channel-plugin",
6643
+ "react-native-check-biometric-auth-changed",
6644
+ "react-native-chottulink-sdk",
6645
+ "react-native-clarity",
6646
+ "react-native-clusterer",
6647
+ "react-native-code-push-diff",
6648
+ "react-native-connectivity-status",
6649
+ "react-native-convert-ph-asset",
6650
+ "react-native-converted-in-sdk",
6651
+ "react-native-cookies",
6652
+ "react-native-copy",
6653
+ "react-native-crash-tester",
6654
+ "react-native-crisp-chat-sdk",
6655
+ "react-native-cumquat",
6656
+ "react-native-customui",
6657
+ "react-native-daro-m",
6658
+ "react-native-datawedge-intents",
6659
+ "react-native-detect-frida",
6660
+ "react-native-device-activity",
6661
+ "react-native-device-crypto",
6662
+ "react-native-device-time-format",
6663
+ "react-native-device-uptime",
6664
+ "react-native-digitcamera",
6665
+ "react-native-doc-viewer",
6666
+ "react-native-easy-apple-pay",
6667
+ "react-native-encrypted-storage",
6668
+ "react-native-esc-pos-printer",
6669
+ "react-native-exif",
6670
+ "react-native-expo-metamap-sdk",
6671
+ "react-native-exponea-sdk",
6672
+ "react-native-fast-base64",
6673
+ "react-native-fast-crypto",
6674
+ "react-native-fast-encoder",
6675
+ "react-native-fast-openpgp",
6676
+ "react-native-fast-pbkdf2",
6677
+ "react-native-fast-rsa",
6678
+ "react-native-fatos-sdk",
6679
+ "react-native-fbsdk",
6680
+ "react-native-fetch-blob",
6681
+ "react-native-filament-buildcores",
6682
+ "react-native-firebaseui-auth",
6683
+ "react-native-firework-sdk",
6684
+ "react-native-flipper",
6685
+ "react-native-genuin-qa",
6686
+ "react-native-geocoder",
6687
+ "react-native-geocoder-reborn",
6688
+ "react-native-get-sms-android",
6689
+ "react-native-get-values",
6690
+ "react-native-gif",
6691
+ "react-native-gleapsdk",
6692
+ "react-native-global-exception-handler",
6693
+ "react-native-google-analytics-bridge",
6694
+ "react-native-google-pay",
6695
+ "react-native-google-play-integrity",
6696
+ "react-native-haptic",
6697
+ "react-native-haptic-patterns",
6698
+ "react-native-hash",
6699
+ "react-native-hce",
6700
+ "react-native-heic-converter",
6701
+ "react-native-helpscout-beacon",
6702
+ "react-native-hmac",
6703
+ "react-native-html-to-pdf-lite",
6704
+ "react-native-hud-hybrid",
6705
+ "react-native-hw-keyboard-event",
6706
+ "react-native-hyperkyc-sdk",
6707
+ "react-native-hyperpay-sdk",
6708
+ "react-native-hyperswitch-dev-sdk",
6709
+ "react-native-icloud-file-picker",
6710
+ "react-native-idfa",
6711
+ "react-native-idfa-aaid",
6712
+ "react-native-image-base64",
6713
+ "react-native-image-code-scanner",
6714
+ "react-native-image-filter-kit",
6715
+ "react-native-image-rotate",
6716
+ "react-native-image-to-pdf",
6717
+ "react-native-images-to-pdf",
6718
+ "react-native-immersive",
6719
+ "react-native-immersive-mode",
6720
+ "react-native-in-app-message",
6721
+ "react-native-incognia",
6722
+ "react-native-infy-camera",
6723
+ "react-native-insider",
6724
+ "react-native-install-referrer",
6725
+ "react-native-installed-app-checker",
6726
+ "react-native-is-detox",
6727
+ "react-native-is-keyboard-connected",
6728
+ "react-native-keyboard-input",
6729
+ "react-native-khipu",
6730
+ "react-native-klarna-inapp-sdk",
6731
+ "react-native-kochava-measurement",
6732
+ "react-native-kochava-measurement-apple-tracking",
6733
+ "react-native-kochava-measurement-google",
6734
+ "react-native-kochava-measurement-google-tracking",
6735
+ "react-native-kochava-tracker",
6736
+ "react-native-launch-navigator",
6737
+ "react-native-layout-guides",
6738
+ "react-native-local-resource",
6739
+ "react-native-marigold",
6740
+ "react-native-marketingcloudsdk",
6741
+ "react-native-mdm",
6742
+ "react-native-mediapipe",
6743
+ "react-native-mediapipe-posedetection",
6744
+ "react-native-metamap-sdk",
6745
+ "react-native-microphone-stream",
6746
+ "react-native-mlkit-ocr",
6747
+ "react-native-modpow",
6748
+ "react-native-moengage-cards",
6749
+ "react-native-moengage-geofence",
6750
+ "react-native-moengage-inbox",
6751
+ "react-native-mov-to-mp4",
6752
+ "react-native-mqtt-file-transfer",
6753
+ "react-native-msal",
6754
+ "react-native-music-control",
6755
+ "react-native-music-control-enhanced",
6756
+ "react-native-nami-sdk",
6757
+ "react-native-native-log",
6758
+ "react-native-netlog-fab",
6759
+ "react-native-netwatch",
6760
+ "react-native-nitro-bg-timer",
6761
+ "react-native-nitro-simple-toast",
6762
+ "react-native-nitro-thermal",
6763
+ "react-native-nitro-version-check",
6764
+ "react-native-notch-info",
6765
+ "react-native-notificare",
6766
+ "react-native-notificare-geo",
6767
+ "react-native-notificare-push",
6768
+ "react-native-notificare-push-ui",
6769
+ "react-native-notifications-utils",
6770
+ "react-native-onetrust-cmp",
6771
+ "react-native-open-notification",
6772
+ "react-native-otp-auto-verify",
6773
+ "react-native-passkeys",
6774
+ "react-native-passkit-wallet",
6775
+ "react-native-passport-reader",
6776
+ "react-native-paypal-web-payments",
6777
+ "react-native-pdf-lib",
6778
+ "react-native-pdf-page-image",
6779
+ "react-native-pdf-thumbnail",
6780
+ "react-native-pdf-to-image",
6781
+ "react-native-pencil-kit",
6782
+ "react-native-performance-stats",
6783
+ "react-native-performance-toolkit",
6784
+ "react-native-persona",
6785
+ "react-native-phonepe-pg",
6786
+ "react-native-play-install-referrer",
6787
+ "react-native-powerauth-mobile-sdk",
6788
+ "react-native-prevent-recent-screenshots",
6789
+ "react-native-qualtrics",
6790
+ "react-native-quantum-metric-library",
6791
+ "react-native-queue-it",
6792
+ "react-native-random-uuid",
6793
+ "react-native-random-values-jsi-helper",
6794
+ "react-native-release-profiler",
6795
+ "react-native-repro",
6796
+ "react-native-restart-android",
6797
+ "react-native-ringer-mode",
6798
+ "react-native-rook-sdk",
6799
+ "react-native-root-jail-detect",
6800
+ "react-native-safe-area",
6801
+ "react-native-scanbot-barcode-scanner-sdk",
6802
+ "react-native-schedule-exact-alarm-permission",
6803
+ "react-native-scoped-storage",
6804
+ "react-native-screenshot-detect",
6805
+ "react-native-session-timeout",
6806
+ "react-native-set-soft-input-mode",
6807
+ "react-native-sfh-library",
6808
+ "react-native-sha1",
6809
+ "react-native-sha256",
6810
+ "react-native-shared-preferences",
6811
+ "react-native-sherpa-onnx",
6812
+ "react-native-shield-fraud-plugin",
6813
+ "react-native-sim-cards-manager",
6814
+ "react-native-simple-crypto",
6815
+ "react-native-simple-heic2jpg",
6816
+ "react-native-skadnetwork",
6817
+ "react-native-smallcase-gateway",
6818
+ "react-native-smartlook-analytics",
6819
+ "react-native-smile-rn-lib",
6820
+ "react-native-smooth-clip-view",
6821
+ "react-native-sms",
6822
+ "react-native-sms-retriever",
6823
+ "react-native-sound-level",
6824
+ "react-native-sound-level-monitor",
6825
+ "react-native-sound-recorder",
6826
+ "react-native-spike-sdk",
6827
+ "react-native-square-in-app-payments",
6828
+ "react-native-ssl-pinning",
6829
+ "react-native-star-prnt-bitmap-fix",
6830
+ "react-native-startup-time",
6831
+ "react-native-static-safe-area-insets",
6832
+ "react-native-static-server",
6833
+ "react-native-store-front",
6834
+ "react-native-swrve-plugin",
6835
+ "react-native-syan-image-picker",
6836
+ "react-native-tappay",
6837
+ "react-native-tapresearch",
6838
+ "react-native-test-flight",
6839
+ "react-native-text-input-reset",
6840
+ "react-native-text-recognition",
6841
+ "react-native-themis",
6842
+ "react-native-thermal-printer",
6843
+ "react-native-thermal-receipt-printer-image-qr",
6844
+ "react-native-tiktok-business",
6845
+ "react-native-tooltips",
6846
+ "react-native-torch",
6847
+ "react-native-transfer-library",
6848
+ "react-native-ts-accountprotection",
6849
+ "react-native-ts-identity-orchestration",
6850
+ "react-native-ts-idv",
6851
+ "react-native-turbo-image-picker",
6852
+ "react-native-uaepass",
6853
+ "react-native-ultimate-config",
6854
+ "react-native-unit-components",
6855
+ "react-native-usb-serialport-for-android",
6856
+ "react-native-user-agent",
6857
+ "react-native-user-identity",
6858
+ "react-native-userleap",
6859
+ "react-native-video-cache-control",
6860
+ "react-native-video-helper",
6861
+ "react-native-virgil-crypto",
6862
+ "react-native-vision-camera-ocr-plus",
6863
+ "react-native-vizbee-homesso-sender-sdk",
6864
+ "react-native-vizbee-receiver-sdk",
6865
+ "react-native-vizbee-sender-sdk",
6866
+ "react-native-vpn-detector",
6867
+ "react-native-vpn-status",
6868
+ "react-native-walkme-sdk",
6869
+ "react-native-wallet",
6870
+ "react-native-wallet-passes",
6871
+ "react-native-webengage",
6872
+ "react-native-webrtc-kaleidoscope",
6873
+ "react-native-websocket-self-signed",
6874
+ "react-native-webview-ios-cache-clear",
6875
+ "react-native-wonderpush",
6876
+ "react-native-wonderpush-fcm",
6877
+ "react-native-wxwork",
6878
+ "react-native-yamap-plus",
6879
+ "react-native-zendesk-messaging",
6880
+ "react-native-zolozkit-tool",
6881
+ "readid-react-native",
6882
+ "rn-android-keyboard-adjust",
6883
+ "rn-audio-toolkit",
6884
+ "rn-encryption",
6885
+ "rn-linkrunner",
6886
+ "rn-mesh-gradient",
6887
+ "rn-pendo-sdk",
6888
+ "rn-star-prnt",
6889
+ "rn-url-resolver",
6890
+ "rxdx_player",
6891
+ "sahha-react-native",
6892
+ "securehybridapptesting",
6893
+ "shuftipro-onsite-mobilesdk",
6894
+ "smartech-push-react-native",
6895
+ "smartech-reactnative-nudges",
6896
+ "srs-heritage-chatbot",
6897
+ "storyly-placement-react-native",
6898
+ "surveysparrow-react-native-sdk",
6899
+ "tapjoy-react-native-sdk",
6900
+ "tealium-react-firebase",
6901
+ "tealium-react-native",
6902
+ "tealium-react-native-attribution",
6903
+ "terra-react",
6904
+ "theta-ble-client-react-native",
6905
+ "theta-client-react-native",
6906
+ "tiktok-opensdk-react-native",
6907
+ "tipsi-stripe",
6908
+ "tp-react-native-bluetooth-printer",
6909
+ "unified-ble-manager",
6910
+ "unity-levelplay-mediation",
6911
+ "usabilla-react-native",
6912
+ "vexo-analytics",
6913
+ "veyra-sdk-react-native",
6914
+ "vitest-mobile",
6915
+ "wix-react-native-text-size",
6916
+ "yandex-mobile-ads",
6917
+ "ymchat-react-native",
6918
+ "zego-express-engine-reactnative",
6919
+ "zego-zim-react-native",
6920
+ "zetakit_reactnative"
6921
+ ];
6922
+
6923
+ // ../peach-compat/src/generated/native-package-names.ts
6924
+ var NATIVE_STUB_PACKAGE_NAMES = [
6925
+ "@10play/tentap-editor",
6926
+ "@adobe/react-native-aepcore",
6927
+ "@alevy97/react-native-userdefaults",
6928
+ "@ankipro/react-native-file-open",
6929
+ "@appzung/react-native-code-push",
6930
+ "@aptabase/react-native",
6931
+ "@assembless/react-native-material-you",
6932
+ "@atomicfi/transact-react-native",
6933
+ "@atproto/oauth-client-expo",
6934
+ "@attarchi/react-native-lottie-splash-screen",
6935
+ "@avasapp/react-native-otp-autofill",
6936
+ "@aws-amplify/react-native",
6937
+ "@azesmway/react-native-unity",
6938
+ "@azzapp/react-native-skia-video",
6939
+ "@babylonjs/react-native",
6940
+ "@bacons/apple-targets",
6941
+ "@bam.tech/react-native-image-resizer",
6942
+ "@baronha/react-native-multiple-image-picker",
6943
+ "@baronha/react-native-photo-editor",
6944
+ "@baronha/ting",
6945
+ "@batch.com/react-native-plugin",
6946
+ "@bear-block/vision-camera-ocr",
6947
+ "@bhojaniasgar/react-native-otp-input",
6948
+ "@bitdrift/react-native",
6949
+ "@bittingz/expo-widgets",
6950
+ "@blackbox-vision/react-native-mercadopago-px",
6951
+ "@borndotcom/react-native-godot",
6952
+ "@bravemobile/react-native-code-push",
6953
+ "@braze/react-native-sdk",
6954
+ "@bsky.app/expo-guess-language",
6955
+ "@bsky.app/expo-image-crop-tool",
6956
+ "@bsky.app/expo-scroll-edge-effect",
6957
+ "@bsky.app/react-native-mmkv",
6958
+ "@bugfender/rn-bugfender",
6959
+ "@bugsnag/react-native",
6960
+ "@bugsnag/react-native-performance",
6961
+ "@callstack/liquid-glass",
6962
+ "@callstack/react-native-bottom-tabs",
6963
+ "@callstack/react-native-brownfield",
6964
+ "@callstack/react-native-local-notifications",
6965
+ "@callstack/react-native-sandbox",
6966
+ "@callstack/react-native-visionos",
6967
+ "@callstack/timezone-hermes-fix",
6968
+ "@candlefinance/faster-image",
6969
+ "@candlefinance/haptics",
6970
+ "@clerk/expo",
6971
+ "@clerk/expo-passkeys",
6972
+ "@cometchat/chat-uikit-react-native",
6973
+ "@computools/react-native-dynamic-app-icon",
6974
+ "@coolsoftwaretyler/cool-pdf",
6975
+ "@criipto/verify-expo",
6976
+ "@d11/react-native-fast-image",
6977
+ "@d11/react-native-mqtt",
6978
+ "@danielsaraldi/react-native-blur-view",
6979
+ "@dariyd/react-native-document-scanner",
6980
+ "@datadog/mobile-react-native",
6981
+ "@dbkable/react-native-speech-to-text",
6982
+ "@didomi/react-native",
6983
+ "@dimaportenko/react-native-shadow-view",
6984
+ "@domir/react-native-measure-text",
6985
+ "@dr.pogodin/react-native-audio",
6986
+ "@dr.pogodin/react-native-fs",
6987
+ "@dr.pogodin/react-native-static-server",
6988
+ "@dylankenneally/react-native-ssh-sftp",
6989
+ "@eabdullazyanov/react-native-sms-user-consent",
6990
+ "@expensify/react-native-background-task",
6991
+ "@expensify/react-native-hybrid-app",
6992
+ "@expensify/react-native-live-markdown",
6993
+ "@expensify/react-native-wallet",
6994
+ "@expo/app-integrity",
6995
+ "@expo/dom-webview",
6996
+ "@expo/ui",
6997
+ "@expo/ui/community/menu",
6998
+ "@extrieve_technologies/quickcapture_react_native",
6999
+ "@fingerprintjs/fingerprintjs-pro-react-native",
7000
+ "@fishjam-cloud/react-native-client",
7001
+ "@fishjam-cloud/react-native-webrtc",
7002
+ "@flitzinteractive/react-native-nitro-html-pdf",
7003
+ "@flyskywhy/react-native-gcanvas",
7004
+ "@fugood/react-native-audio-pcm-stream",
7005
+ "@fullstory/react-native",
7006
+ "@gabriel-sisjr/react-native-background-location",
7007
+ "@generac/react-native-local-network-permission",
7008
+ "@giphy/react-native-sdk",
7009
+ "@gmisoftware/react-native-pay",
7010
+ "@goliapkg/sentori-react-native",
7011
+ "@google/react-native-make-payment",
7012
+ "@googlemaps/react-native-navigation-sdk",
7013
+ "@haroldtran/react-native-pax",
7014
+ "@hot-updater/react-native",
7015
+ "@huymobile/react-native-sms-retriever-nitro-module",
7016
+ "@hyoper/rn-location",
7017
+ "@intercom/intercom-react-native",
7018
+ "@invertase/react-native-apple-authentication",
7019
+ "@iterable/expo-plugin",
7020
+ "@iterable/react-native-sdk",
7021
+ "@iternio/react-native-auto-play",
7022
+ "@joplin/react-native-alarm-notification",
7023
+ "@journeyapps/react-native-quick-sqlite",
7024
+ "@jwplayer/jwplayer-react-native",
7025
+ "@kesha-antonov/react-native-background-downloader",
7026
+ "@kilohealth/rn-fitness-tracker",
7027
+ "@kingstinct/react-native-healthkit",
7028
+ "@kishannareshpal/expo-pdf",
7029
+ "@livekit/react-native",
7030
+ "@livekit/react-native-webrtc",
7031
+ "@lodev09/react-native-exify",
7032
+ "@lodev09/react-native-true-sheet",
7033
+ "@logicwind/react-native-exit-app",
7034
+ "@logicwind/react-native-matomo-tracker",
7035
+ "@logicwind/react-native-status-bar-height",
7036
+ "@logicwind/react-native-tvos-keyboard",
7037
+ "@lomray/react-native-apple-music",
7038
+ "@loqalabs/loqa-expo-dsp",
7039
+ "@lottiefiles/dotlottie-react-native",
7040
+ "@luciq/react-native",
7041
+ "@lugg/maps",
7042
+ "@magrinj/expo-quick-look",
7043
+ "@mapbox/react-native-mapbox-gl",
7044
+ "@maplibre/maplibre-react-native",
7045
+ "@mattermost/react-native-emm",
7046
+ "@mattermost/react-native-network-client",
7047
+ "@mattermost/react-native-paste-input",
7048
+ "@mattermost/react-native-turbo-log",
7049
+ "@mattermost/rnutils",
7050
+ "@meedwire/react-native-image-rotate",
7051
+ "@metamask/native-utils",
7052
+ "@metamask/react-native-search-api",
7053
+ "@metamask/react-native-webview",
7054
+ "@mgcrea/react-native-jetpack-compose",
7055
+ "@mgcrea/vision-camera-barcode-scanner",
7056
+ "@mhpdev/react-native-haptics",
7057
+ "@mhpdev/react-native-speech",
7058
+ "@mj-studio/react-native-naver-map",
7059
+ "@mozzius/expo-dynamic-app-icon",
7060
+ "@nandorojo/galeria",
7061
+ "@notifee/react-native",
7062
+ "@novastera-oss/rn-google-signin",
7063
+ "@nozbe/watermelondb",
7064
+ "@okta/okta-react-native",
7065
+ "@oleg_svetlichnyi/expo-icloud-storage",
7066
+ "@op-engineering/op-sqlite",
7067
+ "@orbital-systems/react-native-esp-idf-provisioning",
7068
+ "@playerdata/react-native-mcu-manager",
7069
+ "@pnthach95/react-native-root-view-background",
7070
+ "@pocketpalai/react-native-speech",
7071
+ "@posthog/react-native-plugin",
7072
+ "@powersync/react-native",
7073
+ "@preeternal/react-native-cookie-manager",
7074
+ "@prisma/react-native",
7075
+ "@purchasely/react-native-purchasely-android-player",
7076
+ "@purchasely/react-native-purchasely-google",
7077
+ "@purchasely/react-native-purchasely-huawei",
7078
+ "@pusher/pusher-websocket-react-native",
7079
+ "@pushpendersingh/react-native-otp-verify",
7080
+ "@pushpendersingh/react-native-scanner",
7081
+ "@react-native-ai/apple",
7082
+ "@react-native-ai/mlc",
7083
+ "@react-native-async-storage/async-storage",
7084
+ "@react-native-camera-roll/camera-roll",
7085
+ "@react-native-clipboard/clipboard",
7086
+ "@react-native-community/audio-toolkit",
7087
+ "@react-native-community/blur",
7088
+ "@react-native-community/checkbox",
7089
+ "@react-native-community/datetimepicker",
7090
+ "@react-native-community/geolocation",
7091
+ "@react-native-community/image-editor",
7092
+ "@react-native-community/masked-view",
7093
+ "@react-native-community/netinfo",
7094
+ "@react-native-community/progress-bar-android",
7095
+ "@react-native-community/progress-view",
7096
+ "@react-native-community/push-notification-ios",
7097
+ "@react-native-community/slider",
7098
+ "@react-native-community/toolbar-android",
7099
+ "@react-native-cookies/cookies",
7100
+ "@react-native-documents/picker",
7101
+ "@react-native-documents/viewer",
7102
+ "@react-native-drivekit/core",
7103
+ "@react-native-drivekit/driver-data",
7104
+ "@react-native-firebase/analytics",
7105
+ "@react-native-firebase/app",
7106
+ "@react-native-firebase/app-check",
7107
+ "@react-native-firebase/app-distribution",
7108
+ "@react-native-firebase/auth",
7109
+ "@react-native-firebase/crashlytics",
7110
+ "@react-native-firebase/database",
7111
+ "@react-native-firebase/firestore",
7112
+ "@react-native-firebase/functions",
7113
+ "@react-native-firebase/in-app-messaging",
7114
+ "@react-native-firebase/installations",
7115
+ "@react-native-firebase/messaging",
7116
+ "@react-native-firebase/ml",
7117
+ "@react-native-firebase/perf",
7118
+ "@react-native-firebase/remote-config",
7119
+ "@react-native-firebase/storage",
7120
+ "@react-native-google-signin/google-signin",
7121
+ "@react-native-masked-view/masked-view",
7122
+ "@react-native-menu/menu",
7123
+ "@react-native-ml-kit/barcode-scanning",
7124
+ "@react-native-ml-kit/face-detection",
7125
+ "@react-native-ml-kit/identify-languages",
7126
+ "@react-native-ml-kit/image-labeling",
7127
+ "@react-native-ml-kit/text-recognition",
7128
+ "@react-native-ml-kit/translate-text",
7129
+ "@react-native-picker/picker",
7130
+ "@react-native-runtimes/core",
7131
+ "@react-native-runtimes/state",
7132
+ "@react-native-segmented-control/segmented-control",
7133
+ "@react-native-seoul/naver-login",
7134
+ "@reactvision/react-viro",
7135
+ "@remobile/react-native-toast",
7136
+ "@renegades/react-native-tickle",
7137
+ "@rive-app/react-native",
7138
+ "@rn-org/react-native-geofencing",
7139
+ "@rn-org/react-native-shortcuts",
7140
+ "@rnmapbox/maps",
7141
+ "@rnw-community/react-native-payments",
7142
+ "@rocket.chat/mobile-crypto",
7143
+ "@roman.sytnyk/blur-app-in-recents",
7144
+ "@rudderstack/rudder-integration-amplitude-react-native",
7145
+ "@rudderstack/rudder-integration-appcenter-react-native",
7146
+ "@rudderstack/rudder-integration-appsflyer-react-native",
7147
+ "@rudderstack/rudder-integration-braze-react-native",
7148
+ "@rudderstack/rudder-integration-clevertap-react-native",
7149
+ "@rudderstack/rudder-integration-facebook-react-native",
7150
+ "@rudderstack/rudder-integration-firebase-react-native",
7151
+ "@rudderstack/rudder-integration-singular-react-native",
7152
+ "@rudderstack/rudder-plugin-db-encryption-react-native",
7153
+ "@rudderstack/rudder-sdk-react-native",
7154
+ "@s77rt/react-native-date-picker",
7155
+ "@sbaiahmed1/react-native-biometrics",
7156
+ "@sbaiahmed1/react-native-blur",
7157
+ "@sdcx/nested-scroll",
7158
+ "@sdcx/pull-to-refresh",
7159
+ "@segment/analytics-react-native",
7160
+ "@segment/sovran-react-native",
7161
+ "@sendbird/calls-react-native",
7162
+ "@sentry/react-native",
7163
+ "@shakebugs/react-native-shake",
7164
+ "@shayrn/react-native-android-phone-number-hint",
7165
+ "@shopify/checkout-sheet-kit",
7166
+ "@shopify/react-native-performance",
7167
+ "@shopify/react-native-skia",
7168
+ "@simform_solutions/react-native-audio-waveform",
7169
+ "@siteed/audio-studio",
7170
+ "@situm/react-native",
7171
+ "@sparkfabrik/react-native-idfa-aaid",
7172
+ "@splicer97/react-native-android-keyboard-adjust",
7173
+ "@splicer97/react-native-mytracker",
7174
+ "@stefanmartin/expo-video-compress",
7175
+ "@stefanmartin/expo-video-watermark",
7176
+ "@stream-io/video-react-native-sdk",
7177
+ "@stripe/stripe-identity-react-native",
7178
+ "@stripe/stripe-react-native",
7179
+ "@stripe/stripe-terminal-react-native",
7180
+ "@superfan-app/spotify-auth",
7181
+ "@supersami/rn-foreground-service",
7182
+ "@survicate/react-native-survicate",
7183
+ "@swan-io/react-native-browser",
7184
+ "@swmansion/react-native-bottom-sheet",
7185
+ "@thehale/react-native-keep-awake",
7186
+ "@turbopush/react-native-code-push",
7187
+ "@twilio/voice-react-native-sdk",
7188
+ "@ua/react-native-airship",
7189
+ "@uiw/react-native-alipay",
7190
+ "@universe/hashcash-native",
7191
+ "@use-voltra/android-client",
7192
+ "@use-voltra/ios-client",
7193
+ "@vokhuyet/react-native-concurrent-sound",
7194
+ "@vonovak/react-native-theme-control",
7195
+ "@walletconnect/react-native-compat",
7196
+ "@wwdrew/expo-android-shared-preferences",
7197
+ "@wwdrew/expo-spotify-sdk",
7198
+ "@xmartlabs/react-native-line",
7199
+ "@xmtp/react-native-sdk",
7200
+ "@zoontek/react-native-navigation-bar",
7201
+ "amazon-ivs-react-native-player",
7202
+ "anyline-ocr-react-native-module",
7203
+ "appcenter",
7204
+ "appcenter-analytics",
7205
+ "appcenter-crashes",
7206
+ "apple-health",
7207
+ "bitmovin-player-react-native",
7208
+ "burnt",
7209
+ "clevertap-react-native",
7210
+ "customerio-reactnative",
7211
+ "expo",
7212
+ "expo-age-range",
7213
+ "expo-alikit",
7214
+ "expo-aliyun-push",
7215
+ "expo-alternate-app-icons",
7216
+ "expo-android-pedometer",
7217
+ "expo-android-shared-preferences",
7218
+ "expo-app-integrity",
7219
+ "expo-app-intents",
7220
+ "expo-app-metrics",
7221
+ "expo-apple-authentication",
7222
+ "expo-application",
7223
+ "expo-asset",
7224
+ "expo-assistant-functions",
7225
+ "expo-audio",
7226
+ "expo-av",
7227
+ "expo-background-fetch",
7228
+ "expo-background-task",
7229
+ "expo-barcode",
7230
+ "expo-barcode-scanner",
7231
+ "expo-battery",
7232
+ "expo-beacon",
7233
+ "expo-better-auth-passkey",
7234
+ "expo-blob",
7235
+ "expo-blur",
7236
+ "expo-brightness",
7237
+ "expo-calendar",
7238
+ "expo-callkit-telecom",
7239
+ "expo-camera",
7240
+ "expo-cellular",
7241
+ "expo-click-outside",
7242
+ "expo-clipboard",
7243
+ "expo-constants",
7244
+ "expo-contacts",
7245
+ "expo-core-spotlight",
7246
+ "expo-crypto",
7247
+ "expo-dev-client",
7248
+ "expo-device",
7249
+ "expo-document-picker",
7250
+ "expo-document-scanner",
7251
+ "expo-drag-drop-content-view",
7252
+ "expo-dynamic-app-icon",
7253
+ "expo-eas-client",
7254
+ "expo-emoji-picker",
7255
+ "expo-esim-utils",
7256
+ "expo-file-system",
7257
+ "expo-finance-kit",
7258
+ "expo-font",
7259
+ "expo-foreground-actions",
7260
+ "expo-gaode-map",
7261
+ "expo-gaode-map-search",
7262
+ "expo-gl",
7263
+ "expo-glass-effect",
7264
+ "expo-haptics",
7265
+ "expo-hardware-buttons",
7266
+ "expo-health-connect",
7267
+ "expo-helium",
7268
+ "expo-hinge",
7269
+ "expo-iap",
7270
+ "expo-ignore-battery-optimizations",
7271
+ "expo-image",
7272
+ "expo-image-manipulator",
7273
+ "expo-image-picker",
7274
+ "expo-in-app-updates",
7275
+ "expo-insights",
7276
+ "expo-intent-launcher",
7277
+ "expo-ios-visual-blur",
7278
+ "expo-keep-awake",
7279
+ "expo-key-event",
7280
+ "expo-libvlc-player",
7281
+ "expo-linear-gradient",
7282
+ "expo-linking",
7283
+ "expo-liquid-glass-native",
7284
+ "expo-liquid-glass-view",
7285
+ "expo-live-activity",
7286
+ "expo-live-photo",
7287
+ "expo-local-authentication",
7288
+ "expo-localization",
7289
+ "expo-location",
7290
+ "expo-mail-composer",
7291
+ "expo-maps",
7292
+ "expo-media-control",
7293
+ "expo-media-library",
7294
+ "expo-mesh-gradient",
7295
+ "expo-modules-core",
7296
+ "expo-music-picker",
7297
+ "expo-native-alipay",
7298
+ "expo-native-emojis-popup",
7299
+ "expo-native-sheet-emojis",
7300
+ "expo-native-wechat",
7301
+ "expo-navigation-bar",
7302
+ "expo-network",
7303
+ "expo-network-addons",
7304
+ "expo-notifications",
7305
+ "expo-observe",
7306
+ "expo-paperkit",
7307
+ "expo-passkey",
7308
+ "expo-paste-input",
7309
+ "expo-pencilkit-ui",
7310
+ "expo-phone-number-hint",
7311
+ "expo-pip",
7312
+ "expo-pretext",
7313
+ "expo-print",
7314
+ "expo-privacy-sensitive",
7315
+ "expo-quick-actions",
7316
+ "expo-rich-input",
7317
+ "expo-roomplan",
7318
+ "expo-screen-capture",
7319
+ "expo-screen-corner-radius",
7320
+ "expo-screen-orientation",
7321
+ "expo-secure-store",
7322
+ "expo-selectable-text",
7323
+ "expo-sensors",
7324
+ "expo-share-extension",
7325
+ "expo-share-intent",
7326
+ "expo-sharing",
7327
+ "expo-shazamkit",
7328
+ "expo-sms",
7329
+ "expo-speech",
7330
+ "expo-speech-recognition",
7331
+ "expo-splash-screen",
7332
+ "expo-sqlite",
7333
+ "expo-squircle-view",
7334
+ "expo-store-review",
7335
+ "expo-stream-audio",
7336
+ "expo-superwall",
7337
+ "expo-symbols",
7338
+ "expo-system-ui",
7339
+ "expo-targets",
7340
+ "expo-task-manager",
7341
+ "expo-testflight",
7342
+ "expo-tracking-transparency",
7343
+ "expo-translate-text",
7344
+ "expo-truecaller",
7345
+ "expo-tvos-search",
7346
+ "expo-updates",
7347
+ "expo-vector-search",
7348
+ "expo-video",
7349
+ "expo-video-metadata",
7350
+ "expo-video-thumbnails",
7351
+ "expo-web-browser",
7352
+ "expo-wechat",
7353
+ "expo-widgets",
7354
+ "expo-winter-fetch",
7355
+ "expo-winter-formdata",
7356
+ "freerasp-react-native",
7357
+ "group-ib-fp",
7358
+ "gt-react-native",
7359
+ "jail-monkey",
7360
+ "klaviyo-react-native-sdk",
7361
+ "llama.rn",
7362
+ "loro-react-native",
7363
+ "lottie-react-native",
7364
+ "mixpanel-react-native",
7365
+ "munim-bluetooth",
7366
+ "navigation-react-native",
7367
+ "newrelic-react-native-agent",
7368
+ "one",
7369
+ "ping-react-native",
7370
+ "posthog-react-native-session-replay",
7371
+ "pushy-react-native",
7372
+ "react-native",
7373
+ "react-native-a11y",
7374
+ "react-native-a11y-container",
7375
+ "react-native-a11y-order",
7376
+ "react-native-actions-shortcuts",
7377
+ "react-native-adapty",
7378
+ "react-native-add-calendar-event",
7379
+ "react-native-adjust",
7380
+ "react-native-admob-native-ads",
7381
+ "react-native-advanced-input-mask",
7382
+ "react-native-aes-crypto",
7383
+ "react-native-aes-gcm-crypto",
7384
+ "react-native-age-signals",
7385
+ "react-native-agora",
7386
+ "react-native-amap3d",
7387
+ "react-native-amplitude-analytics",
7388
+ "react-native-android-location-enabler",
7389
+ "react-native-android-widget",
7390
+ "react-native-animateable-text",
7391
+ "react-native-animated-observer",
7392
+ "react-native-app-attest",
7393
+ "react-native-app-auth",
7394
+ "react-native-app-clip",
7395
+ "react-native-app-logs",
7396
+ "react-native-app-review",
7397
+ "react-native-appearance-control",
7398
+ "react-native-apple-ads-attribution",
7399
+ "react-native-apple-llm",
7400
+ "react-native-appsflyer",
7401
+ "react-native-appstack-sdk",
7402
+ "react-native-ar-preview",
7403
+ "react-native-audio-api",
7404
+ "react-native-auth0",
7405
+ "react-native-authsignal",
7406
+ "react-native-auto-skeleton",
7407
+ "react-native-avoid-softinput",
7408
+ "react-native-awesome-card-io",
7409
+ "react-native-azure-auth",
7410
+ "react-native-background-actions",
7411
+ "react-native-background-fetch",
7412
+ "react-native-background-geolocation",
7413
+ "react-native-background-job",
7414
+ "react-native-background-task",
7415
+ "react-native-background-timer",
7416
+ "react-native-background-upload",
7417
+ "react-native-barcode-creator",
7418
+ "react-native-bare-kit",
7419
+ "react-native-beacon-kit",
7420
+ "react-native-better-clustering",
7421
+ "react-native-better-maps",
7422
+ "react-native-biometrics",
7423
+ "react-native-blasted-image",
7424
+ "react-native-ble-manager",
7425
+ "react-native-ble-nitro",
7426
+ "react-native-ble-plx",
7427
+ "react-native-blob-courier",
7428
+ "react-native-blob-util",
7429
+ "react-native-bluetooth-classic",
7430
+ "react-native-bluetooth-state-manager",
7431
+ "react-native-bluetooth-status",
7432
+ "react-native-blur-view",
7433
+ "react-native-blurhash",
7434
+ "react-native-bootsplash",
7435
+ "react-native-bottom-action-sheet",
7436
+ "react-native-bottom-sheet-behavior",
7437
+ "react-native-bottom-tabs",
7438
+ "react-native-branch",
7439
+ "react-native-calendar-events",
7440
+ "react-native-callkeep",
7441
+ "react-native-camera-kit",
7442
+ "react-native-capture-protection",
7443
+ "react-native-cardscan",
7444
+ "react-native-carplay",
7445
+ "react-native-cashfree-pg-sdk",
7446
+ "react-native-cesium",
7447
+ "react-native-change-icon",
7448
+ "react-native-charts-wrapper",
7449
+ "react-native-cloud-storage",
7450
+ "react-native-cloud-store",
7451
+ "react-native-code-push",
7452
+ "react-native-color-picker-ios",
7453
+ "react-native-compass-heading",
7454
+ "react-native-compressor",
7455
+ "react-native-config",
7456
+ "react-native-config-reader",
7457
+ "react-native-contacts",
7458
+ "react-native-context-menu-view",
7459
+ "react-native-cos-sdk",
7460
+ "react-native-create-thumbnail",
7461
+ "react-native-credentials-manager",
7462
+ "react-native-custom-splash",
7463
+ "react-native-customized-image-picker",
7464
+ "react-native-dark-mode",
7465
+ "react-native-date-picker",
7466
+ "react-native-deepgram",
7467
+ "react-native-default-preference",
7468
+ "react-native-detector",
7469
+ "react-native-device-attest",
7470
+ "react-native-device-country",
7471
+ "react-native-device-info",
7472
+ "react-native-dialogs",
7473
+ "react-native-document-picker",
7474
+ "react-native-document-picker-macos",
7475
+ "react-native-document-scanner",
7476
+ "react-native-document-scanner-plugin",
7477
+ "react-native-drop-shadow",
7478
+ "react-native-drum-picker",
7479
+ "react-native-dynamic-app-icon",
7480
+ "react-native-earl-thermal-printer",
7481
+ "react-native-ease",
7482
+ "react-native-edge-fade",
7483
+ "react-native-edge-to-edge",
7484
+ "react-native-emoji-popup",
7485
+ "react-native-enriched",
7486
+ "react-native-enriched-html",
7487
+ "react-native-enriched-markdown",
7488
+ "react-native-events",
7489
+ "react-native-exception-handler",
7490
+ "react-native-executorch",
7491
+ "react-native-exit-app",
7492
+ "react-native-expo-braintree",
7493
+ "react-native-external-display",
7494
+ "react-native-external-keyboard",
7495
+ "react-native-extra-dimensions-android",
7496
+ "react-native-fabric",
7497
+ "react-native-fast-image",
7498
+ "react-native-fast-io",
7499
+ "react-native-fast-opencv",
7500
+ "react-native-fast-secure-storage",
7501
+ "react-native-fast-shadow",
7502
+ "react-native-fast-squircle",
7503
+ "react-native-fast-tflite",
7504
+ "react-native-fast-trie",
7505
+ "react-native-fbads",
7506
+ "react-native-fbsdk-next",
7507
+ "react-native-fcm",
7508
+ "react-native-filament",
7509
+ "react-native-file-access",
7510
+ "react-native-file-logger",
7511
+ "react-native-file-selector",
7512
+ "react-native-file-viewer",
7513
+ "react-native-file-viewer-turbo",
7514
+ "react-native-fileupload",
7515
+ "react-native-find-local-devices",
7516
+ "react-native-fingerprint-scanner",
7517
+ "react-native-floating-label-input",
7518
+ "react-native-fs",
7519
+ "react-native-fs-turbo",
7520
+ "react-native-geo-fencing",
7521
+ "react-native-geolocation-service",
7522
+ "react-native-gesture-handler",
7523
+ "react-native-get-device-locale",
7524
+ "react-native-get-location",
7525
+ "react-native-get-random-values",
7526
+ "react-native-google-auth",
7527
+ "react-native-google-cast",
7528
+ "react-native-google-fit",
7529
+ "react-native-google-maps-plus",
7530
+ "react-native-google-mobile-ads",
7531
+ "react-native-google-places",
7532
+ "react-native-google-places-sdk",
7533
+ "react-native-google-play-install-referrer",
7534
+ "react-native-gzip",
7535
+ "react-native-haptic-feedback",
7536
+ "react-native-hapticlabs",
7537
+ "react-native-headphone-detection",
7538
+ "react-native-health",
7539
+ "react-native-health-connect",
7540
+ "react-native-here-explore",
7541
+ "react-native-hole-view",
7542
+ "react-native-home-indicator",
7543
+ "react-native-hotkeys",
7544
+ "react-native-html-to-pdf",
7545
+ "react-native-http-bridge-refurbished",
7546
+ "react-native-hyper-markdown",
7547
+ "react-native-i18n",
7548
+ "react-native-iap",
7549
+ "react-native-iaphub",
7550
+ "react-native-icloud-kit",
7551
+ "react-native-idle-timer",
7552
+ "react-native-image-colors",
7553
+ "react-native-image-compression-kit",
7554
+ "react-native-image-crop-picker",
7555
+ "react-native-image-marker",
7556
+ "react-native-image-picker",
7557
+ "react-native-image-size",
7558
+ "react-native-image-stitcher",
7559
+ "react-native-in-app-review",
7560
+ "react-native-in-app-utils",
7561
+ "react-native-inappbrowser-nitro",
7562
+ "react-native-inappbrowser-reborn",
7563
+ "react-native-incall-manager",
7564
+ "react-native-interception-webview",
7565
+ "react-native-intercom",
7566
+ "react-native-ios-context-menu",
7567
+ "react-native-ios-modal",
7568
+ "react-native-ios-translate-sheet",
7569
+ "react-native-ios-translate-tasks",
7570
+ "react-native-ios-utilities",
7571
+ "react-native-job-queue",
7572
+ "react-native-jw-media-player",
7573
+ "react-native-keep-awake",
7574
+ "react-native-key-command",
7575
+ "react-native-key-pair",
7576
+ "react-native-keyboard-controller",
7577
+ "react-native-keyboard-manager",
7578
+ "react-native-keychain",
7579
+ "react-native-keyevent",
7580
+ "react-native-keys",
7581
+ "react-native-launch-arguments",
7582
+ "react-native-leaflet-view",
7583
+ "react-native-legal",
7584
+ "react-native-libsodium",
7585
+ "react-native-linear-gradient",
7586
+ "react-native-linkedin-login",
7587
+ "react-native-liquid-glassmorphism",
7588
+ "react-native-litert-lm",
7589
+ "react-native-llm-mediapipe",
7590
+ "react-native-loader-kit",
7591
+ "react-native-localization",
7592
+ "react-native-localization-settings",
7593
+ "react-native-localize",
7594
+ "react-native-location",
7595
+ "react-native-location-enabler",
7596
+ "react-native-mail",
7597
+ "react-native-maps",
7598
+ "react-native-material-palette",
7599
+ "react-native-mdm-config",
7600
+ "react-native-measure-text",
7601
+ "react-native-mixpanel",
7602
+ "react-native-mmkv",
7603
+ "react-native-mmkv-storage",
7604
+ "react-native-moengage",
7605
+ "react-native-month-year-picker",
7606
+ "react-native-moyasar-apple-pay",
7607
+ "react-native-moyasar-sdk",
7608
+ "react-native-multiple-modals",
7609
+ "react-native-nano-icons",
7610
+ "react-native-navigation",
7611
+ "react-native-navigation-bar-color",
7612
+ "react-native-navigation-mode",
7613
+ "react-native-network-info",
7614
+ "react-native-nfc-manager",
7615
+ "react-native-nitro-ark",
7616
+ "react-native-nitro-audio-manager",
7617
+ "react-native-nitro-buffer",
7618
+ "react-native-nitro-cloud-uploader",
7619
+ "react-native-nitro-cookies",
7620
+ "react-native-nitro-crypto",
7621
+ "react-native-nitro-device-info",
7622
+ "react-native-nitro-dns",
7623
+ "react-native-nitro-fetch",
7624
+ "react-native-nitro-file-system",
7625
+ "react-native-nitro-fs",
7626
+ "react-native-nitro-geocoder",
7627
+ "react-native-nitro-geolocation",
7628
+ "react-native-nitro-google-signin",
7629
+ "react-native-nitro-haptics",
7630
+ "react-native-nitro-http-server",
7631
+ "react-native-nitro-image",
7632
+ "react-native-nitro-markdown",
7633
+ "react-native-nitro-modules",
7634
+ "react-native-nitro-net",
7635
+ "react-native-nitro-network-info",
7636
+ "react-native-nitro-ota",
7637
+ "react-native-nitro-player",
7638
+ "react-native-nitro-pose-exercises",
7639
+ "react-native-nitro-rtmp-publisher",
7640
+ "react-native-nitro-screen-recorder",
7641
+ "react-native-nitro-sensors-kit",
7642
+ "react-native-nitro-sfsymbols",
7643
+ "react-native-nitro-sound",
7644
+ "react-native-nitro-speech",
7645
+ "react-native-nitro-sqlite",
7646
+ "react-native-nitro-sse",
7647
+ "react-native-nitro-text-decoder",
7648
+ "react-native-nitro-toast",
7649
+ "react-native-nitro-tor",
7650
+ "react-native-nitro-totp",
7651
+ "react-native-nitro-vision-kit",
7652
+ "react-native-nitro-web-image",
7653
+ "react-native-nitro-websockets",
7654
+ "react-native-node-api",
7655
+ "react-native-notification-badge",
7656
+ "react-native-notification-sounds",
7657
+ "react-native-notifications",
7658
+ "react-native-notify-kit",
7659
+ "react-native-oauth",
7660
+ "react-native-ometria",
7661
+ "react-native-omni",
7662
+ "react-native-onesignal",
7663
+ "react-native-openai",
7664
+ "react-native-orientation-director",
7665
+ "react-native-orientation-locker",
7666
+ "react-native-orientation-manager",
7667
+ "react-native-orientation-turbo",
7668
+ "react-native-os",
7669
+ "react-native-ota-hot-update",
7670
+ "react-native-otp-verify",
7671
+ "react-native-package-checker",
7672
+ "react-native-pager-view",
7673
+ "react-native-palette-full",
7674
+ "react-native-passkey",
7675
+ "react-native-payments",
7676
+ "react-native-paypal",
7677
+ "react-native-pdf",
7678
+ "react-native-pdf-from-image",
7679
+ "react-native-pdf-jsi",
7680
+ "react-native-pdf-light",
7681
+ "react-native-pdf-renderer",
7682
+ "react-native-pdf-view",
7683
+ "react-native-performance",
7684
+ "react-native-performance-limiter",
7685
+ "react-native-permissions",
7686
+ "react-native-perspective-image-cropper",
7687
+ "react-native-photo-editor",
7688
+ "react-native-photo-manipulator",
7689
+ "react-native-photo-view",
7690
+ "react-native-photo-view-ex",
7691
+ "react-native-photoeditorsdk",
7692
+ "react-native-pinchable",
7693
+ "react-native-ping",
7694
+ "react-native-pkce-challenge",
7695
+ "react-native-plaid-link-sdk",
7696
+ "react-native-platform-components",
7697
+ "react-native-play-age-range-declaration",
7698
+ "react-native-pretty-toast",
7699
+ "react-native-print",
7700
+ "react-native-private-screen",
7701
+ "react-native-prompt-android",
7702
+ "react-native-pulsar",
7703
+ "react-native-purchasely",
7704
+ "react-native-purchases",
7705
+ "react-native-purchases-ui",
7706
+ "react-native-pure-jwt",
7707
+ "react-native-push-notification",
7708
+ "react-native-qr-decode-image-camera",
7709
+ "react-native-qr-kit",
7710
+ "react-native-quick-actions",
7711
+ "react-native-quick-base64",
7712
+ "react-native-quick-crypto",
7713
+ "react-native-quick-sqlite",
7714
+ "react-native-radial-gradient",
7715
+ "react-native-randombytes",
7716
+ "react-native-rate",
7717
+ "react-native-rate-app",
7718
+ "react-native-razorpay",
7719
+ "react-native-reanimated",
7720
+ "react-native-receive-sharing-intent",
7721
+ "react-native-record-screen",
7722
+ "react-native-restart",
7723
+ "react-native-restart-newarch",
7724
+ "react-native-rn-in-app-update",
7725
+ "react-native-rsa-native",
7726
+ "react-native-rsa-signer",
7727
+ "react-native-safari-view",
7728
+ "react-native-safe-area-context",
7729
+ "react-native-screen-choreography",
7730
+ "react-native-screen-corner-radius",
7731
+ "react-native-screenguard",
7732
+ "react-native-screens",
7733
+ "react-native-screenshot-aware",
7734
+ "react-native-screenshot-prevent",
7735
+ "react-native-search-bar",
7736
+ "react-native-secure-key-store",
7737
+ "react-native-securerandom",
7738
+ "react-native-select-contact",
7739
+ "react-native-send-intent",
7740
+ "react-native-sensitive-info",
7741
+ "react-native-sensors",
7742
+ "react-native-settings",
7743
+ "react-native-sfsymbols",
7744
+ "react-native-shake",
7745
+ "react-native-share",
7746
+ "react-native-share-menu",
7747
+ "react-native-shared-element",
7748
+ "react-native-shared-group-preferences",
7749
+ "react-native-shareplay",
7750
+ "react-native-shiki-engine",
7751
+ "react-native-showtime",
7752
+ "react-native-signature-capture",
7753
+ "react-native-simple-biometrics",
7754
+ "react-native-simple-toast",
7755
+ "react-native-siri-shortcut",
7756
+ "react-native-smart-splash-screen",
7757
+ "react-native-snackbar",
7758
+ "react-native-social-share",
7759
+ "react-native-sound",
7760
+ "react-native-sound-player",
7761
+ "react-native-speech-recognition-kit",
7762
+ "react-native-spinkit",
7763
+ "react-native-splash-screen",
7764
+ "react-native-splash-screen-newarch",
7765
+ "react-native-splash-view",
7766
+ "react-native-spotify-remote",
7767
+ "react-native-spotlight-search",
7768
+ "react-native-sqlite-2",
7769
+ "react-native-sqlite-storage",
7770
+ "react-native-ssl-manager",
7771
+ "react-native-ssl-public-key-pinning",
7772
+ "react-native-stallion",
7773
+ "react-native-star-io10",
7774
+ "react-native-store-age-signals-native-modules",
7775
+ "react-native-store-review",
7776
+ "react-native-svg",
7777
+ "react-native-system-bars",
7778
+ "react-native-system-navigation-bar",
7779
+ "react-native-system-setting",
7780
+ "react-native-tableview",
7781
+ "react-native-tcp",
7782
+ "react-native-tcp-socket",
7783
+ "react-native-teleport",
7784
+ "react-native-tenjin",
7785
+ "react-native-testfairy",
7786
+ "react-native-text-input-mask",
7787
+ "react-native-text-size",
7788
+ "react-native-theme-switch-animation",
7789
+ "react-native-theoplayer",
7790
+ "react-native-thermal-receipt-printer",
7791
+ "react-native-tiktok",
7792
+ "react-native-tiktok-business-sdk",
7793
+ "react-native-timezone",
7794
+ "react-native-tooltip",
7795
+ "react-native-tor",
7796
+ "react-native-touch-id",
7797
+ "react-native-track-player",
7798
+ "react-native-tracking-transparency",
7799
+ "react-native-transformer-text-input",
7800
+ "react-native-ttlock",
7801
+ "react-native-tts",
7802
+ "react-native-tuner-engine",
7803
+ "react-native-turbo-haptics",
7804
+ "react-native-turbo-image",
7805
+ "react-native-turbo-lnd",
7806
+ "react-native-turbo-mock-location-detector",
7807
+ "react-native-turbo-preferences",
7808
+ "react-native-twilio-video-webrtc",
7809
+ "react-native-udp",
7810
+ "react-native-ui-lib",
7811
+ "react-native-uitextview",
7812
+ "react-native-ulid-jsi",
7813
+ "react-native-unistyles",
7814
+ "react-native-update",
7815
+ "react-native-urovo",
7816
+ "react-native-ux-cam",
7817
+ "react-native-variable-blur",
7818
+ "react-native-vector-icons",
7819
+ "react-native-version-check",
7820
+ "react-native-version-info",
7821
+ "react-native-version-number",
7822
+ "react-native-video",
7823
+ "react-native-video-cache",
7824
+ "react-native-video-duration",
7825
+ "react-native-video-processing",
7826
+ "react-native-video-provider",
7827
+ "react-native-video-trim",
7828
+ "react-native-videoeditorsdk",
7829
+ "react-native-view-pdf",
7830
+ "react-native-view-recorder",
7831
+ "react-native-view-shot",
7832
+ "react-native-vision-camera",
7833
+ "react-native-vision-camera-barcode-scanner",
7834
+ "react-native-vision-camera-face-detector",
7835
+ "react-native-vision-camera-image-labeler",
7836
+ "react-native-vision-camera-location",
7837
+ "react-native-vision-camera-resizer",
7838
+ "react-native-vision-camera-text-recognition",
7839
+ "react-native-vision-camera-worklets",
7840
+ "react-native-vlc-media-player",
7841
+ "react-native-voip-push-notification",
7842
+ "react-native-volume-manager",
7843
+ "react-native-vosk",
7844
+ "react-native-wallet-manager",
7845
+ "react-native-wallet-pass",
7846
+ "react-native-watch-connectivity",
7847
+ "react-native-wear-connectivity",
7848
+ "react-native-web-serial-api",
7849
+ "react-native-webgpu",
7850
+ "react-native-webp-converter",
7851
+ "react-native-webp-format",
7852
+ "react-native-webrtc",
7853
+ "react-native-webview",
7854
+ "react-native-wechat-lib",
7855
+ "react-native-wheel-pick",
7856
+ "react-native-wheel-picker-android",
7857
+ "react-native-whip-whep",
7858
+ "react-native-widget-picker",
7859
+ "react-native-widgetkit",
7860
+ "react-native-wifi-p2p",
7861
+ "react-native-wifi-reborn",
7862
+ "react-native-window-view",
7863
+ "react-native-windows",
7864
+ "react-native-windows-hello",
7865
+ "react-native-wordpress-editor",
7866
+ "react-native-worklets",
7867
+ "react-native-worklets-core",
7868
+ "react-native-xaml",
7869
+ "react-native-xxhash",
7870
+ "react-native-youtube",
7871
+ "react-native-zeroconf",
7872
+ "react-native-zip-archive",
7873
+ "realm",
7874
+ "rive-react-native",
7875
+ "rn-apple-healthkit",
7876
+ "rn-card-scanner",
7877
+ "rn-date-format",
7878
+ "rn-fade-wrapper",
7879
+ "rn-fetch-blob",
7880
+ "rn-mlkit-ocr",
7881
+ "rn-qr-generator",
7882
+ "rn-secure-storage",
7883
+ "rn-watch-connect",
7884
+ "rn-zendesk",
7885
+ "rollbar-react-native",
7886
+ "scandit-react-native-datacapture-barcode",
7887
+ "scandit-react-native-datacapture-core",
7888
+ "scandit-react-native-datacapture-id",
7889
+ "scandit-react-native-datacapture-label",
7890
+ "scandit-react-native-datacapture-label-text",
7891
+ "scandit-react-native-datacapture-parser",
7892
+ "sift-react-native",
7893
+ "sp-react-native-in-app-updates",
7894
+ "stream-chat-expo",
7895
+ "stream-chat-react-native",
7896
+ "swiftui-react-native",
7897
+ "uws-react-native",
7898
+ "vision-camera-cropper",
7899
+ "vision-camera-dynamsoft-document-normalizer",
7900
+ "vision-camera-ocr-plugin",
7901
+ "vision-camera-zxing",
7902
+ "whisper.rn"
7903
+ ];
7904
+ var NATIVE_RUNTIME_PACKAGE_NAMES = [
7905
+ ...NATIVE_STUB_PACKAGE_NAMES,
7906
+ ...LIGHT_NATIVE_PACKAGE_NAMES,
7907
+ "@ammarahmed/react-native-background-fetch",
7908
+ "@bsky.app/react-native-uitextview",
7909
+ "@bsky.app/video",
7910
+ "@datadog/mobile-react-native-webview",
7911
+ "@haileyok/bluesky-video",
7912
+ "@react-native-vector-icons/get-image",
7913
+ "@react-navigation/native",
7914
+ "@tamagui/native-registry",
7915
+ "@uniswap/ethers-rs-mobile",
7916
+ "@valora/react-native-keychain",
7917
+ "expo-router",
7918
+ "react-native-app-control",
7919
+ "react-native-blue-crypto",
7920
+ "react-native-nitro-base64",
7921
+ "react-native-nitro-gzip",
7922
+ "react-native-sectioned-slider"
7923
+ ];
7924
+
7925
+ // ../peach-compat/src/wrapper-real-packages.ts
7926
+ var SOOTSIM_COMPAT_WRAPPER_REAL_PACKAGES = {
7927
+ expoUiConfirmationDialog: {
7928
+ specifier: "@peach-internal/expo-ui-confirmation-dialog",
7929
+ packageName: "@expo/ui/src/swift-ui/ConfirmationDialog/index.tsx"
7930
+ },
7931
+ expoUiShareLink: {
7932
+ specifier: "@peach-internal/expo-ui-share-link",
7933
+ packageName: "@expo/ui/src/swift-ui/ShareLink/index.tsx"
7934
+ },
7935
+ expoUiNamespace: {
7936
+ specifier: "@peach-internal/expo-ui-namespace",
7937
+ packageName: "@expo/ui/src/swift-ui/Namespace.tsx"
7938
+ },
7939
+ expoUiHost: {
7940
+ specifier: "@peach-internal/expo-ui-host",
7941
+ packageName: "@expo/ui/src/swift-ui/Host/index.tsx"
7942
+ },
7943
+ expoUiBottomSheet: {
7944
+ specifier: "@peach-internal/expo-ui-bottom-sheet",
7945
+ packageName: "@expo/ui/src/swift-ui/BottomSheet/index.tsx"
7946
+ },
7947
+ expoUiTabView: {
7948
+ specifier: "@peach-internal/expo-ui-tab-view",
7949
+ packageName: "@expo/ui/src/swift-ui/TabView/index.tsx"
7950
+ },
7951
+ expoUiForm: {
7952
+ specifier: "@peach-internal/expo-ui-form",
7953
+ packageName: "@expo/ui/src/swift-ui/Form/index.tsx"
7954
+ },
7955
+ expoUiSection: {
7956
+ specifier: "@peach-internal/expo-ui-section",
7957
+ packageName: "@expo/ui/src/swift-ui/Section/index.tsx"
7958
+ },
7959
+ expoUiAccessoryWidgetBackground: {
7960
+ specifier: "@peach-internal/expo-ui-accessory-widget-background",
7961
+ packageName: "@expo/ui/src/swift-ui/AccessoryWidgetBackground/index.tsx"
7962
+ },
7963
+ expoUiGlassEffectContainer: {
7964
+ specifier: "@peach-internal/expo-ui-glass-effect-container",
7965
+ packageName: "@expo/ui/src/swift-ui/GlassEffectContainer/index.tsx"
7966
+ },
7967
+ expoUiContentUnavailableView: {
7968
+ specifier: "@peach-internal/expo-ui-content-unavailable-view",
7969
+ packageName: "@expo/ui/src/swift-ui/ContentUnavailableView/index.tsx"
7970
+ },
7971
+ expoUiColorPicker: {
7972
+ specifier: "@peach-internal/expo-ui-color-picker",
7973
+ packageName: "@expo/ui/src/swift-ui/ColorPicker/index.tsx"
7974
+ },
7975
+ expoUiProgressView: {
7976
+ specifier: "@peach-internal/expo-ui-progress-view",
7977
+ packageName: "@expo/ui/src/swift-ui/ProgressView/index.tsx"
7978
+ },
7979
+ expoUiToggle: {
7980
+ specifier: "@peach-internal/expo-ui-toggle",
7981
+ packageName: "@expo/ui/src/swift-ui/Toggle/index.tsx"
7982
+ },
7983
+ expoUiPicker: {
7984
+ specifier: "@peach-internal/expo-ui-picker",
7985
+ packageName: "@expo/ui/src/swift-ui/Picker/index.tsx"
7986
+ },
7987
+ expoUiDivider: {
7988
+ specifier: "@peach-internal/expo-ui-divider",
7989
+ packageName: "@expo/ui/src/swift-ui/Divider/index.tsx"
7990
+ },
7991
+ expoUiText: {
7992
+ specifier: "@peach-internal/expo-ui-text",
7993
+ packageName: "@expo/ui/src/swift-ui/Text/index.tsx"
7994
+ },
7995
+ expoUiMenu: {
7996
+ specifier: "@peach-internal/expo-ui-menu",
7997
+ packageName: "@expo/ui/src/swift-ui/Menu/index.tsx"
7998
+ },
7999
+ expoUiImage: {
8000
+ specifier: "@peach-internal/expo-ui-image",
8001
+ packageName: "@expo/ui/src/swift-ui/Image/index.tsx"
8002
+ },
8003
+ expoUiAlert: {
8004
+ specifier: "@peach-internal/expo-ui-alert",
8005
+ packageName: "@expo/ui/src/swift-ui/Alert/index.tsx"
8006
+ },
8007
+ expoUiPopover: {
8008
+ specifier: "@peach-internal/expo-ui-popover",
8009
+ packageName: "@expo/ui/src/swift-ui/Popover/index.tsx"
8010
+ },
8011
+ expoUiRNHostView: {
8012
+ specifier: "@peach-internal/expo-ui-rnhost-view",
8013
+ packageName: "@expo/ui/src/swift-ui/RNHostView.tsx"
8014
+ },
8015
+ expoUiOverlay: {
8016
+ specifier: "@peach-internal/expo-ui-overlay",
8017
+ packageName: "@expo/ui/src/swift-ui/Overlay/index.tsx"
8018
+ },
8019
+ expoUiBackground: {
8020
+ specifier: "@peach-internal/expo-ui-background",
8021
+ packageName: "@expo/ui/src/swift-ui/Background/index.tsx"
8022
+ },
8023
+ expoUiMask: {
8024
+ specifier: "@peach-internal/expo-ui-mask",
8025
+ packageName: "@expo/ui/src/swift-ui/Mask/index.tsx"
8026
+ },
8027
+ expoUiShapes: {
8028
+ specifier: "@peach-internal/expo-ui-shapes",
8029
+ packageName: "@expo/ui/src/swift-ui/Shapes/index.tsx"
8030
+ },
8031
+ expoUiControlGroup: {
8032
+ specifier: "@peach-internal/expo-ui-control-group",
8033
+ packageName: "@expo/ui/src/swift-ui/ControlGroup/index.tsx"
8034
+ },
8035
+ expoUiScrollView: {
8036
+ specifier: "@peach-internal/expo-ui-scroll-view",
8037
+ packageName: "@expo/ui/src/swift-ui/ScrollView/index.tsx"
8038
+ },
8039
+ expoUiGrid: {
8040
+ specifier: "@peach-internal/expo-ui-grid",
8041
+ packageName: "@expo/ui/src/swift-ui/Grid/index.tsx"
8042
+ },
8043
+ expoUiGroup: {
8044
+ specifier: "@peach-internal/expo-ui-group",
8045
+ packageName: "@expo/ui/src/swift-ui/Group/index.tsx"
8046
+ },
8047
+ expoUiSpacer: {
8048
+ specifier: "@peach-internal/expo-ui-spacer",
8049
+ packageName: "@expo/ui/src/swift-ui/Spacer/index.tsx"
8050
+ },
8051
+ expoUiLazyHStack: {
8052
+ specifier: "@peach-internal/expo-ui-lazy-hstack",
8053
+ packageName: "@expo/ui/src/swift-ui/LazyHStack/index.tsx"
8054
+ },
8055
+ expoUiLazyVStack: {
8056
+ specifier: "@peach-internal/expo-ui-lazy-vstack",
8057
+ packageName: "@expo/ui/src/swift-ui/LazyVStack/index.tsx"
8058
+ },
8059
+ expoUiHStack: {
8060
+ specifier: "@peach-internal/expo-ui-hstack",
8061
+ packageName: "@expo/ui/src/swift-ui/HStack/index.tsx"
8062
+ },
8063
+ expoUiVStack: {
8064
+ specifier: "@peach-internal/expo-ui-vstack",
8065
+ packageName: "@expo/ui/src/swift-ui/VStack/index.tsx"
8066
+ },
8067
+ expoUiZStack: {
8068
+ specifier: "@peach-internal/expo-ui-zstack",
8069
+ packageName: "@expo/ui/src/swift-ui/ZStack/index.tsx"
8070
+ },
8071
+ expoUiButton: {
8072
+ specifier: "@peach-internal/expo-ui-button",
8073
+ packageName: "@expo/ui/src/swift-ui/Button/index.tsx"
8074
+ },
8075
+ expoUiDatePicker: {
8076
+ specifier: "@peach-internal/expo-ui-date-picker",
8077
+ packageName: "@expo/ui/src/swift-ui/DatePicker/index.tsx"
8078
+ },
8079
+ expoUiSlider: {
8080
+ specifier: "@peach-internal/expo-ui-slider",
8081
+ packageName: "@expo/ui/src/swift-ui/Slider/index.tsx"
8082
+ },
8083
+ expoUiStepper: {
8084
+ specifier: "@peach-internal/expo-ui-stepper",
8085
+ packageName: "@expo/ui/src/swift-ui/Stepper/index.tsx"
8086
+ },
8087
+ expoUiLink: {
8088
+ specifier: "@peach-internal/expo-ui-link",
8089
+ packageName: "@expo/ui/src/swift-ui/Link/index.tsx"
8090
+ },
8091
+ expoUiAnimationConstants: {
8092
+ specifier: "@peach-internal/expo-ui-animation-constants",
8093
+ packageName: "@expo/ui/build/swift-ui/modifiers/animation/constants.js"
8094
+ },
8095
+ expoUiWithAnimation: {
8096
+ specifier: "@peach-internal/expo-ui-with-animation",
8097
+ packageName: "@expo/ui/build/swift-ui/withAnimation.js"
8098
+ },
8099
+ expoUiNativeState: {
8100
+ specifier: "@peach-internal/expo-ui-native-state",
8101
+ packageName: "@expo/ui/build/State/index.js"
8102
+ },
8103
+ expoUiSyncToggle: {
8104
+ specifier: "@peach-internal/expo-ui-sync-toggle",
8105
+ packageName: "@expo/ui/build/swift-ui/SyncToggle/index.js"
8106
+ },
8107
+ expoUiTextField: {
8108
+ specifier: "@peach-internal/expo-ui-text-field",
8109
+ packageName: "@expo/ui/src/swift-ui/TextField/index.tsx"
8110
+ },
8111
+ expoUiSecureField: {
8112
+ specifier: "@peach-internal/expo-ui-secure-field",
8113
+ packageName: "@expo/ui/src/swift-ui/SecureField/index.tsx"
8114
+ },
8115
+ expoUiArrangementView: {
8116
+ specifier: "@peach-internal/expo-ui-arrangement-view",
8117
+ packageName: "@expo/ui/src/swift-ui/ArrangementView/index.tsx"
8118
+ },
8119
+ expoUiLazyHStackForEach: {
8120
+ specifier: "@peach-internal/expo-ui-lazy-hstack-for-each",
8121
+ packageName: "@expo/ui/src/swift-ui/LazyHStack/index.tsx"
8122
+ },
8123
+ expoUiLazyVStackForEach: {
8124
+ specifier: "@peach-internal/expo-ui-lazy-vstack-for-each",
8125
+ packageName: "@expo/ui/src/swift-ui/LazyVStack/index.tsx"
8126
+ },
8127
+ expoUiNavigationDestination: {
8128
+ specifier: "@peach-internal/expo-ui-navigation-destination",
8129
+ packageName: "@expo/ui/src/swift-ui/NavigationDestination/index.tsx"
8130
+ },
8131
+ expoUiNavigationLink: {
8132
+ specifier: "@peach-internal/expo-ui-navigation-link",
8133
+ packageName: "@expo/ui/src/swift-ui/NavigationLink/index.tsx"
8134
+ },
8135
+ expoUiNavigationStack: {
8136
+ specifier: "@peach-internal/expo-ui-navigation-stack",
8137
+ packageName: "@expo/ui/src/swift-ui/NavigationStack/index.tsx"
8138
+ },
8139
+ expoUiNavigationSplitView: {
8140
+ specifier: "@peach-internal/expo-ui-navigation-split-view",
8141
+ packageName: "@expo/ui/src/swift-ui/NavigationSplitView/index.tsx"
8142
+ },
8143
+ expoUiToolbar: {
8144
+ specifier: "@peach-internal/expo-ui-toolbar",
8145
+ packageName: "@expo/ui/src/swift-ui/Toolbar/index.tsx"
8146
+ },
8147
+ expoUiList: {
8148
+ specifier: "@peach-internal/expo-ui-list",
8149
+ packageName: "@expo/ui/src/swift-ui/List/index.tsx"
8150
+ },
8151
+ expoUiDisclosureGroup: {
8152
+ specifier: "@peach-internal/expo-ui-disclosure-group",
8153
+ packageName: "@expo/ui/src/swift-ui/DisclosureGroup/index.tsx"
8154
+ },
8155
+ expoUiGauge: {
8156
+ specifier: "@peach-internal/expo-ui-gauge",
8157
+ packageName: "@expo/ui/src/swift-ui/Gauge/index.tsx"
8158
+ },
8159
+ expoUiLabeledContent: {
8160
+ specifier: "@peach-internal/expo-ui-labeled-content",
8161
+ packageName: "@expo/ui/src/swift-ui/LabeledContent/index.tsx"
8162
+ },
8163
+ expoUiLabel: {
8164
+ specifier: "@peach-internal/expo-ui-label",
8165
+ packageName: "@expo/ui/src/swift-ui/Label/index.tsx"
8166
+ },
8167
+ expoCodedError: {
8168
+ specifier: "@peach-internal/expo-coded-error",
8169
+ packageName: "expo-modules-core/build/errors/CodedError.js"
8170
+ },
8171
+ expoUnavailabilityError: {
8172
+ specifier: "@peach-internal/expo-unavailability-error",
8173
+ packageName: "expo-modules-core/build/errors/UnavailabilityError.js"
8174
+ },
8175
+ expoPlatform: {
8176
+ specifier: "@peach-internal/expo-platform",
8177
+ packageName: "expo-modules-core/build/Platform.js"
8178
+ },
8179
+ expoSharedObjectHook: {
8180
+ specifier: "@peach-internal/expo-shared-object-hook",
8181
+ packageName: "expo-modules-core/build/hooks/useReleasingSharedObject.js"
8182
+ },
8183
+ expoSharedObjectLifecycleHook: {
8184
+ specifier: "@peach-internal/expo-shared-object-lifecycle-hook",
8185
+ packageName: "expo-modules-core/build/hooks/useReleasingSharedObjectWithLifecycle.js"
8186
+ },
8187
+ expoApplication: {
8188
+ specifier: "@sootsim-internal/expo-application-real",
8189
+ packageName: "expo-application"
8190
+ },
8191
+ expoBackgroundFetch: {
8192
+ specifier: "@sootsim-internal/expo-background-fetch-real",
8193
+ packageName: "expo-background-fetch"
8194
+ },
8195
+ expoBackgroundTask: {
8196
+ specifier: "@sootsim-internal/expo-background-task-real",
8197
+ packageName: "expo-background-task"
8198
+ },
8199
+ expoSensors: {
8200
+ specifier: "@sootsim-internal/expo-sensors-real",
8201
+ packageName: "expo-sensors"
8202
+ },
8203
+ expoBattery: {
8204
+ specifier: "@sootsim-internal/expo-battery-real",
8205
+ packageName: "expo-battery"
8206
+ },
8207
+ expoBrightness: {
8208
+ specifier: "@sootsim-internal/expo-brightness-real",
8209
+ packageName: "expo-brightness"
8210
+ },
8211
+ expoConstants: {
8212
+ specifier: "@sootsim-internal/expo-constants-real",
8213
+ packageName: "expo-constants"
8214
+ },
8215
+ expoCalendar: {
8216
+ specifier: "@sootsim-internal/expo-calendar-real",
8217
+ packageName: "expo-calendar"
8218
+ },
8219
+ expoCalendarLegacy: {
8220
+ specifier: "@sootsim-internal/expo-calendar-legacy-real",
8221
+ // the package's own `./legacy` export, not a hardcoded `src/legacy/...`
8222
+ // path — this follows wherever upstream points the subpath, in every
8223
+ // version that has one. versions without it never import the legacy
8224
+ // stub, so the alias just goes unused there.
8225
+ packageName: "expo-calendar/legacy"
8226
+ },
8227
+ expoCellular: {
8228
+ specifier: "@sootsim-internal/expo-cellular-real",
8229
+ packageName: "expo-cellular"
8230
+ },
8231
+ expoContactsContacts: {
8232
+ specifier: "@sootsim-internal/expo-contacts-contacts",
8233
+ // sdk 57 split Contacts.ts into src/index.ts + legacy/ + next/
8234
+ packageName: "expo-contacts/src/index.ts"
8235
+ },
8236
+ expoContactsContactAccessButton: {
8237
+ specifier: "@sootsim-internal/expo-contacts-contact-access-button",
8238
+ packageName: "expo-contacts/src/ContactAccessButton.tsx"
8239
+ },
8240
+ expoContactsLegacy: {
8241
+ specifier: "@sootsim-internal/expo-contacts-legacy-real",
8242
+ // same as expoCalendarLegacy: the public `./legacy` export, not a src path.
8243
+ packageName: "expo-contacts/legacy"
8244
+ },
8245
+ expoInsights: {
8246
+ specifier: "@sootsim-internal/expo-insights-real",
8247
+ packageName: "expo-insights"
8248
+ },
8249
+ expoIntentLauncher: {
8250
+ specifier: "@sootsim-internal/expo-intent-launcher-real",
8251
+ packageName: "expo-intent-launcher"
8252
+ },
8253
+ expoMailComposer: {
8254
+ specifier: "@sootsim-internal/expo-mail-composer-real",
8255
+ packageName: "expo-mail-composer"
8256
+ },
8257
+ expoNetwork: {
8258
+ specifier: "@sootsim-internal/expo-network-real",
8259
+ packageName: "expo-network"
8260
+ },
8261
+ expoPrint: {
8262
+ specifier: "@sootsim-internal/expo-print-real",
8263
+ packageName: "expo-print"
8264
+ },
8265
+ expoScreenCapture: {
8266
+ specifier: "@sootsim-internal/expo-screen-capture-real",
8267
+ packageName: "expo-screen-capture"
8268
+ },
8269
+ expoScreenOrientation: {
8270
+ specifier: "@sootsim-internal/expo-screen-orientation-real",
8271
+ packageName: "expo-screen-orientation"
8272
+ },
8273
+ expoQuickActions: {
8274
+ specifier: "@sootsim-internal/expo-quick-actions-real",
8275
+ packageName: "expo-quick-actions/build/index.js"
8276
+ },
8277
+ expoSecureStore: {
8278
+ specifier: "@sootsim-internal/expo-secure-store-real",
8279
+ packageName: "expo-secure-store"
8280
+ },
8281
+ expoSplashScreen: {
8282
+ specifier: "@sootsim-internal/expo-splash-screen-real",
8283
+ packageName: "expo-splash-screen"
8284
+ },
8285
+ expoSqlite: {
8286
+ specifier: "@sootsim-internal/expo-sqlite-real",
8287
+ packageName: "expo-sqlite"
8288
+ },
8289
+ expoLinearGradient: {
8290
+ specifier: "@sootsim-internal/expo-linear-gradient-real",
8291
+ packageName: "expo-linear-gradient"
8292
+ },
8293
+ expoBlur: {
8294
+ specifier: "@sootsim-internal/expo-blur-real",
8295
+ packageName: "expo-blur"
8296
+ },
8297
+ expoSymbols: {
8298
+ specifier: "@sootsim-internal/expo-symbols-real",
8299
+ packageName: "expo-symbols"
8300
+ },
8301
+ communityCheckbox: {
8302
+ specifier: "@sootsim-internal/react-native-community-checkbox-real",
8303
+ packageName: "@react-native-community/checkbox/dist/js/CheckBox.ios.js"
8304
+ },
8305
+ reactNativeMaskedView: {
8306
+ specifier: "@sootsim-internal/masked-view-real",
8307
+ packageName: "@react-native-masked-view/masked-view"
8308
+ },
8309
+ expoSharing: {
8310
+ specifier: "@sootsim-internal/expo-sharing-real",
8311
+ packageName: "expo-sharing"
8312
+ },
8313
+ expoSms: {
8314
+ specifier: "@sootsim-internal/expo-sms-real",
8315
+ packageName: "expo-sms"
8316
+ },
8317
+ expoSpeech: {
8318
+ specifier: "@sootsim-internal/expo-speech-real",
8319
+ packageName: "expo-speech"
8320
+ },
8321
+ expoStoreReview: {
8322
+ specifier: "@sootsim-internal/expo-store-review-real",
8323
+ packageName: "expo-store-review"
8324
+ },
8325
+ expoTaskManager: {
8326
+ specifier: "@sootsim-internal/expo-task-manager-real",
8327
+ packageName: "expo-task-manager"
8328
+ },
8329
+ expoTrackingTransparency: {
8330
+ specifier: "@sootsim-internal/expo-tracking-transparency-real",
8331
+ packageName: "expo-tracking-transparency"
8332
+ },
8333
+ expoVideoThumbnails: {
8334
+ specifier: "@sootsim-internal/expo-video-thumbnails-real",
8335
+ packageName: "expo-video-thumbnails"
8336
+ },
8337
+ googleSignin: {
8338
+ specifier: "@sootsim-internal/react-native-google-signin-real",
8339
+ packageName: "@react-native-google-signin/google-signin"
8340
+ },
8341
+ reactNativeHapticFeedback: {
8342
+ specifier: "@sootsim-internal/react-native-haptic-feedback-real",
8343
+ packageName: "react-native-haptic-feedback"
8344
+ },
8345
+ reactNativeSegmentedControl: {
8346
+ specifier: "@sootsim-internal/react-native-segmented-control-real",
8347
+ packageName: "@react-native-segmented-control/segmented-control/js/SegmentedControl.ios.js"
8348
+ },
8349
+ reactNativeUitextview: {
8350
+ specifier: "@sootsim-internal/react-native-uitextview-real",
8351
+ packageName: "react-native-uitextview"
8352
+ },
8353
+ reactNativeWorkletsBundleMode: {
8354
+ specifier: "@sootsim-internal/react-native-worklets-bundle-mode-real",
8355
+ packageName: "react-native-worklets/lib/module/debug/bundleMode.native.js"
8356
+ },
8357
+ reactNativeWorkletsFunction: {
8358
+ specifier: "@peach-internal/react-native-worklets-function-real",
8359
+ packageName: "react-native-worklets/lib/module/workletFunction.js"
8360
+ },
8361
+ reactNativeWorkletsRunLoop: {
8362
+ specifier: "@sootsim-internal/react-native-worklets-run-loop-real",
8363
+ packageName: "react-native-worklets/lib/module/runLoop/workletRuntime/index.js"
8364
+ }
8365
+ };
8366
+ var PEACH_REACT_NATIVE_UPSTREAM_MODULES = {
8367
+ reactNativeBatchedBridge: {
8368
+ specifier: "@peach-internal/react-native/BatchedBridge/BatchedBridge",
8369
+ packageName: "react-native/Libraries/BatchedBridge/BatchedBridge.js"
8370
+ },
8371
+ reactNativeStyleAttributes: {
8372
+ specifier: "@peach-internal/react-native/Components/View/ReactNativeStyleAttributes",
8373
+ packageName: "react-native/Libraries/Components/View/ReactNativeStyleAttributes.js"
8374
+ },
8375
+ reactNativeProcessColor: {
8376
+ specifier: "@peach-internal/react-native/StyleSheet/processColor",
8377
+ packageName: "react-native/Libraries/StyleSheet/processColor.js"
8378
+ },
8379
+ reactNativeFontVariationSettings: {
8380
+ specifier: "@peach-internal/react-native-font-variation-settings",
8381
+ packageName: "react-native/Libraries/StyleSheet/processFontVariationSettings.js"
8382
+ }
8383
+ };
8384
+ var PEACH_UPSTREAM_MODULES = {
8385
+ ...SOOTSIM_COMPAT_WRAPPER_REAL_PACKAGES,
8386
+ ...PEACH_REACT_NATIVE_UPSTREAM_MODULES
8387
+ };
6113
8388
 
6114
8389
  // ../peach-engine/src/stub-pattern-matcher.ts
6115
8390
  function extractPackageFromPath(modulePath) {
@@ -6120,12 +8395,16 @@ function extractPackageFromPath(modulePath) {
6120
8395
  nodeModulesIndex = 0;
6121
8396
  prefixLength = "node_modules/".length;
6122
8397
  }
6123
- const pathWithinNodeModules = modulePath.slice(nodeModulesIndex + prefixLength);
6124
- if (pathWithinNodeModules.startsWith("@")) {
6125
- const parts = pathWithinNodeModules.split("/");
6126
- return parts.length >= 2 ? `${parts[0]}/${parts[1]}` : null;
8398
+ return packageNameAt(modulePath, nodeModulesIndex + prefixLength) || null;
8399
+ }
8400
+ function packageNameAt(modulePath, start) {
8401
+ const firstSlash = modulePath.indexOf("/", start);
8402
+ if (modulePath.startsWith("@", start)) {
8403
+ if (firstSlash === -1) return null;
8404
+ const secondSlash = modulePath.indexOf("/", firstSlash + 1);
8405
+ return modulePath.slice(start, secondSlash === -1 ? void 0 : secondSlash);
6127
8406
  }
6128
- return pathWithinNodeModules.split("/")[0] || null;
8407
+ return modulePath.slice(start, firstSlash === -1 ? void 0 : firstSlash);
6129
8408
  }
6130
8409
 
6131
8410
  // src/installed-package-versions.ts
@@ -6390,21 +8669,20 @@ function androidMergedResourceValuesDirectory(manifestFile) {
6390
8669
 
6391
8670
  // src/native-app-identity.ts
6392
8671
  init_bundleGlobalFooter();
8672
+ init_is_record();
6393
8673
 
6394
8674
  // src/nativeAppIconContract.ts
6395
- function isRecord2(value) {
6396
- return typeof value === "object" && value !== null && !Array.isArray(value);
6397
- }
8675
+ init_is_record();
6398
8676
  function resolveNativeAppIconArtwork(resources, readText, resourceUri, icons, primaryName, alternateNames, resolveReference) {
6399
8677
  const members = new Set(resources);
6400
- const dictionary = isRecord2(icons) ? icons : {};
8678
+ const dictionary = isRecord(icons) ? icons : {};
6401
8679
  const alternates = Object.fromEntries(
6402
8680
  Object.entries(
6403
- isRecord2(dictionary.CFBundleAlternateIcons) ? dictionary.CFBundleAlternateIcons : {}
8681
+ isRecord(dictionary.CFBundleAlternateIcons) ? dictionary.CFBundleAlternateIcons : {}
6404
8682
  ).map(([name2, declaration]) => [resolveReference(name2), declaration])
6405
8683
  );
6406
8684
  const resolve3 = (declaration, defaultName) => {
6407
- const entry = isRecord2(declaration) ? declaration : {};
8685
+ const entry = isRecord(declaration) ? declaration : {};
6408
8686
  const name2 = typeof entry.CFBundleIconName === "string" ? resolveReference(entry.CFBundleIconName) : resolveReference(defaultName);
6409
8687
  const catalogs = resources.filter(
6410
8688
  (file) => file.endsWith(`/${name2}.appiconset/Contents.json`)
@@ -6414,9 +8692,9 @@ function resolveNativeAppIconArtwork(resources, readText, resourceUri, icons, pr
6414
8692
  const catalogCandidates = [];
6415
8693
  const text2 = readText(catalog);
6416
8694
  const contents = text2 === null ? null : JSON.parse(text2);
6417
- if (isRecord2(contents) && Array.isArray(contents.images)) {
8695
+ if (isRecord(contents) && Array.isArray(contents.images)) {
6418
8696
  for (const image of contents.images) {
6419
- 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)))
8697
+ 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)))
6420
8698
  continue;
6421
8699
  const file = catalog.slice(0, -"Contents.json".length) + image.filename;
6422
8700
  const scale = image.scale === "2x" ? 2 : image.scale === "3x" ? 3 : 1;
@@ -6650,9 +8928,6 @@ function visitXcodeTargetMembers(objects, targetId, resolvePath, filesUnder, joi
6650
8928
  // src/native-app-identity.ts
6651
8929
  var NATIVE_APP_IDENTITY_PREFIX = "globalThis.__sootsimNativeAppIdentity=";
6652
8930
  var METRO_MODULE_PATHS_PREFIX = "globalThis.__sootsimModulePaths=";
6653
- function isRecord3(value) {
6654
- return typeof value === "object" && value !== null && !Array.isArray(value);
6655
- }
6656
8931
  function nonEmptyString(value) {
6657
8932
  return typeof value === "string" && value.length > 0 ? value : null;
6658
8933
  }
@@ -6678,12 +8953,12 @@ function insertNativeAppIdentityFooter(source, identity) {
6678
8953
  function readGoogleSignInConfiguration(plist3, resources) {
6679
8954
  const clientIds = {};
6680
8955
  for (const [file, value] of Object.entries(resources)) {
6681
- if (isRecord3(value) && typeof value.CLIENT_ID === "string")
8956
+ if (isRecord(value) && typeof value.CLIENT_ID === "string")
6682
8957
  clientIds[file.split("/").pop()?.replace(/\.plist$/, "") ?? file] = value.CLIENT_ID;
6683
8958
  }
6684
8959
  const urlSchemes = [];
6685
8960
  for (const entry of Array.isArray(plist3.CFBundleURLTypes) ? plist3.CFBundleURLTypes : []) {
6686
- if (!isRecord3(entry) || !Array.isArray(entry.CFBundleURLSchemes)) continue;
8961
+ if (!isRecord(entry) || !Array.isArray(entry.CFBundleURLSchemes)) continue;
6687
8962
  for (const scheme of entry.CFBundleURLSchemes)
6688
8963
  if (typeof scheme === "string") urlSchemes.push(scheme);
6689
8964
  }
@@ -6791,14 +9066,14 @@ function nativeAppIdentityFromIos(files, parseInfoPlist, iosTarget, resourceUri)
6791
9066
  let objects = {};
6792
9067
  try {
6793
9068
  const parsed = parseOpenStepPlist(pbxproj);
6794
- if (isRecord3(parsed)) {
6795
- objects = isRecord3(parsed.objects) ? parsed.objects : parsed;
9069
+ if (isRecord(parsed)) {
9070
+ objects = isRecord(parsed.objects) ? parsed.objects : parsed;
6796
9071
  }
6797
9072
  } catch {
6798
9073
  }
6799
9074
  const targets = [];
6800
9075
  for (const [id, obj] of Object.entries(objects)) {
6801
- if (isRecord3(obj) && obj.isa === "PBXNativeTarget" && typeof obj.name === "string") {
9076
+ if (isRecord(obj) && obj.isa === "PBXNativeTarget" && typeof obj.name === "string") {
6802
9077
  targets.push({
6803
9078
  id,
6804
9079
  name: obj.name,
@@ -6844,13 +9119,13 @@ function nativeAppIdentityFromIos(files, parseInfoPlist, iosTarget, resourceUri)
6844
9119
  PRODUCT_NAME: targetName
6845
9120
  };
6846
9121
  for (const obj of Object.values(objects)) {
6847
- if (isRecord3(obj) && obj.isa === "PBXProject" && typeof obj.buildConfigurationList === "string") {
9122
+ if (isRecord(obj) && obj.isa === "PBXProject" && typeof obj.buildConfigurationList === "string") {
6848
9123
  const listObj = objects[obj.buildConfigurationList];
6849
- if (isRecord3(listObj) && Array.isArray(listObj.buildConfigurations)) {
9124
+ if (isRecord(listObj) && Array.isArray(listObj.buildConfigurations)) {
6850
9125
  for (const configId of listObj.buildConfigurations) {
6851
9126
  if (typeof configId === "string") {
6852
9127
  const configObj = objects[configId];
6853
- if (isRecord3(configObj) && configObj.name === "Release" && isRecord3(configObj.buildSettings)) {
9128
+ if (isRecord(configObj) && configObj.name === "Release" && isRecord(configObj.buildSettings)) {
6854
9129
  for (const [k, v] of Object.entries(configObj.buildSettings)) {
6855
9130
  if (typeof v === "string") settings[k] = v;
6856
9131
  }
@@ -6862,11 +9137,11 @@ function nativeAppIdentityFromIos(files, parseInfoPlist, iosTarget, resourceUri)
6862
9137
  }
6863
9138
  if (selectedTarget?.buildConfigurationList) {
6864
9139
  const listObj = objects[selectedTarget.buildConfigurationList];
6865
- if (isRecord3(listObj) && Array.isArray(listObj.buildConfigurations)) {
9140
+ if (isRecord(listObj) && Array.isArray(listObj.buildConfigurations)) {
6866
9141
  for (const configId of listObj.buildConfigurations) {
6867
9142
  if (typeof configId === "string") {
6868
9143
  const configObj = objects[configId];
6869
- if (isRecord3(configObj) && configObj.name === "Release" && isRecord3(configObj.buildSettings)) {
9144
+ if (isRecord(configObj) && configObj.name === "Release" && isRecord(configObj.buildSettings)) {
6870
9145
  for (const [k, v] of Object.entries(configObj.buildSettings)) {
6871
9146
  if (typeof v === "string") settings[k] = v;
6872
9147
  }
@@ -6917,7 +9192,7 @@ function nativeAppIdentityFromIos(files, parseInfoPlist, iosTarget, resourceUri)
6917
9192
  if (!bundleName) return null;
6918
9193
  const applicationName = identityFieldFrom(settings, plistString(plist3, "CFBundleDisplayName"), void 0) ?? bundleName;
6919
9194
  const dictionary = parseInfoPlist(plist3);
6920
- if (!isRecord3(dictionary)) throw new Error("native app Info.plist is not a dictionary");
9195
+ if (!isRecord(dictionary)) throw new Error("native app Info.plist is not a dictionary");
6921
9196
  const declaredDisplayName = dictionary.CFBundleDisplayName;
6922
9197
  const applicationDisplayName = typeof declaredDisplayName === "string" ? resolveBuildSetting(declaredDisplayName, settings) : void 0;
6923
9198
  if (applicationDisplayName === null)
@@ -6930,9 +9205,9 @@ function nativeAppIdentityFromIos(files, parseInfoPlist, iosTarget, resourceUri)
6930
9205
  if (dtPlatformVersion === null)
6931
9206
  throw new Error("native app Info.plist DTPlatformVersion is unresolved");
6932
9207
  const icons = dictionary.CFBundleIcons;
6933
- const alternates = isRecord3(icons) ? icons.CFBundleAlternateIcons : void 0;
9208
+ const alternates = isRecord(icons) ? icons.CFBundleAlternateIcons : void 0;
6934
9209
  const alternateIconNames = /* @__PURE__ */ new Set();
6935
- for (const name2 of isRecord3(alternates) ? Object.keys(alternates) : []) {
9210
+ for (const name2 of isRecord(alternates) ? Object.keys(alternates) : []) {
6936
9211
  const resolved = resolveBuildSetting(name2, settings);
6937
9212
  if (resolved === null) throw new Error("native alternate icon name is unresolved");
6938
9213
  alternateIconNames.add(resolved);
@@ -7036,11 +9311,11 @@ function nativeAppIdentityFromIos(files, parseInfoPlist, iosTarget, resourceUri)
7036
9311
  return `${base.startsWith("/") ? "/" : ""}${segments.join("/")}`;
7037
9312
  };
7038
9313
  const project = Object.values(objects).find(
7039
- (object) => isRecord3(object) && object.isa === "PBXProject"
9314
+ (object) => isRecord(object) && object.isa === "PBXProject"
7040
9315
  );
7041
9316
  const projectDir = join4(
7042
9317
  pbxprojPath.replace(/(?:^|\/)[^/]+\.xcodeproj\/project\.pbxproj$/, ""),
7043
- isRecord3(project) && typeof project.projectDirPath === "string" ? project.projectDirPath : ""
9318
+ isRecord(project) && typeof project.projectDirPath === "string" ? project.projectDirPath : ""
7044
9319
  );
7045
9320
  const paths = Object.keys(files);
7046
9321
  visitXcodeTargetMembers(
@@ -7150,6 +9425,7 @@ function extractNativeAppIdentityFromFiles(files, platform, parseInfoPlist, iosT
7150
9425
  var import_node_fs6 = __toESM(require("node:fs"), 1);
7151
9426
  var import_node_module2 = require("node:module");
7152
9427
  var import_node_path6 = __toESM(require("node:path"), 1);
9428
+ init_is_record();
7153
9429
 
7154
9430
  // src/plist.ts
7155
9431
  var import_plist = __toESM(require_plist(), 1);
@@ -7158,6 +9434,8 @@ function parsePlistSource(source) {
7158
9434
  }
7159
9435
 
7160
9436
  // src/xcode-project.ts
9437
+ var import_node_child_process2 = require("node:child_process");
9438
+ var import_node_crypto2 = require("node:crypto");
7161
9439
  var import_node_fs5 = __toESM(require("node:fs"), 1);
7162
9440
  var import_node_path5 = __toESM(require("node:path"), 1);
7163
9441
  var import_plist2 = __toESM(require_plist(), 1);
@@ -7765,33 +10043,131 @@ function expand(value, lookup) {
7765
10043
  }
7766
10044
  );
7767
10045
  }
7768
- function targetMembers(ref, settings, options = {}) {
10046
+ var preparedSourcePhases = /* @__PURE__ */ new Map();
10047
+ function targetMembers(ref, settings, options, settingKeys, projectInputs) {
7769
10048
  const { project, target, id: targetId } = ref;
7770
10049
  const targetName = str(target.name) ?? targetId;
7771
10050
  const sources = /* @__PURE__ */ new Set();
7772
10051
  const allSources = /* @__PURE__ */ new Set();
7773
10052
  const resources = /* @__PURE__ */ new Set();
7774
10053
  const scriptForOutput = /* @__PURE__ */ new Map();
7775
- const noteScriptOutput = (raw, script) => {
7776
- const expanded = expand(raw, settings);
7777
- if (!expanded.endsWith(".swift")) return;
7778
- const absolute = import_node_path5.default.isAbsolute(expanded) ? import_node_path5.default.normalize(expanded) : import_node_path5.default.resolve(project.projectDir, expanded);
7779
- if (!scriptForOutput.has(absolute)) scriptForOutput.set(absolute, script);
7780
- };
7781
10054
  for (const phaseId of list(target.buildPhases)) {
7782
10055
  const phase = project.object(phaseId);
7783
10056
  if (phase?.isa !== "PBXShellScriptBuildPhase") continue;
7784
10057
  const script = str(phase.name) ?? phaseId;
7785
- for (const raw of list(phase.outputPaths)) noteScriptOutput(raw, script);
7786
- for (const listPath of list(phase.outputFileListPaths)) {
7787
- const expandedList = expand(listPath, settings);
7788
- const absoluteList = import_node_path5.default.isAbsolute(expandedList) ? expandedList : import_node_path5.default.resolve(project.projectDir, expandedList);
7789
- if (!import_node_fs5.default.existsSync(absoluteList)) continue;
7790
- for (const line of import_node_fs5.default.readFileSync(absoluteList, "utf8").split("\n")) {
7791
- const trimmed = line.trim();
7792
- if (trimmed === "" || trimmed.startsWith("#")) continue;
7793
- noteScriptOutput(trimmed, script);
10058
+ const absolute = (raw) => import_node_path5.default.resolve(project.projectDir, expand(raw, settings));
10059
+ const inputs = list(phase.inputPaths).map(absolute);
10060
+ const outputs = list(phase.outputPaths).map(absolute);
10061
+ const fileLists = /* @__PURE__ */ new Map();
10062
+ for (const kind of ["INPUT", "OUTPUT"]) {
10063
+ const lists = list(
10064
+ kind === "INPUT" ? phase.inputFileListPaths : phase.outputFileListPaths
10065
+ ).map((raw) => {
10066
+ const file = absolute(raw);
10067
+ if (!import_node_fs5.default.existsSync(file)) {
10068
+ return { file, entries: [] };
10069
+ }
10070
+ const entries = import_node_fs5.default.readFileSync(file, "utf8").split(/\r?\n/).map((line) => line.trim()).filter((line) => line !== "" && !line.startsWith("#")).map(absolute);
10071
+ return { file, entries };
10072
+ });
10073
+ fileLists.set(kind, lists);
10074
+ }
10075
+ const allOutputs = [
10076
+ ...outputs,
10077
+ ...fileLists.get("OUTPUT").flatMap((item) => item.entries)
10078
+ ];
10079
+ for (const output of allOutputs)
10080
+ if (output.endsWith(".swift") && !scriptForOutput.has(output))
10081
+ scriptForOutput.set(output, script);
10082
+ const inputFiles = [
10083
+ ...inputs,
10084
+ ...fileLists.get("INPUT").flatMap((item) => [item.file, ...item.entries]),
10085
+ ...fileLists.get("OUTPUT").map((item) => item.file)
10086
+ ];
10087
+ if (allOutputs.some((file) => file.endsWith(".swift"))) {
10088
+ for (const file of inputFiles) if (import_node_fs5.default.existsSync(file)) projectInputs.add(file);
10089
+ }
10090
+ if (options.prepareGeneratedSources && options.requireSources !== false && allOutputs.some((file) => file.endsWith(".swift"))) {
10091
+ const phaseDir = import_node_path5.default.join(settings("TARGET_TEMP_DIR"), `Script-${phaseId}`);
10092
+ for (const lists of fileLists.values())
10093
+ for (const { file } of lists)
10094
+ if (!import_node_fs5.default.existsSync(file))
10095
+ throw new Error(
10096
+ `${targetName}: Run Script "${script}" missing file list ${file}`
10097
+ );
10098
+ const env = {
10099
+ ...process.env,
10100
+ ...Object.fromEntries(
10101
+ [...settingKeys].filter((key2) => /^[A-Za-z_][A-Za-z0-9_]*$/.test(key2)).map((key2) => [key2, settings(key2)])
10102
+ )
10103
+ };
10104
+ const declared = { INPUT: inputs, OUTPUT: outputs };
10105
+ for (const kind of ["INPUT", "OUTPUT"]) {
10106
+ env[`SCRIPT_${kind}_FILE_COUNT`] = String(declared[kind].length);
10107
+ declared[kind].forEach((file, index) => {
10108
+ env[`SCRIPT_${kind}_FILE_${index}`] = file;
10109
+ });
10110
+ const lists = fileLists.get(kind);
10111
+ env[`SCRIPT_${kind}_FILE_LIST_COUNT`] = String(lists.length);
10112
+ lists.forEach((_item, index) => {
10113
+ env[`SCRIPT_${kind}_FILE_LIST_${index}`] = import_node_path5.default.join(
10114
+ phaseDir,
10115
+ `${kind}-${index}.xcfilelist`
10116
+ );
10117
+ });
10118
+ }
10119
+ const signature = (0, import_node_crypto2.createHash)("sha256").update(
10120
+ JSON.stringify([phase, [...settingKeys].map((key2) => [key2, settings(key2)])])
10121
+ );
10122
+ for (const file of inputFiles) {
10123
+ signature.update(file);
10124
+ if (import_node_fs5.default.existsSync(file)) {
10125
+ const stat = import_node_fs5.default.statSync(file);
10126
+ signature.update(`${stat.mtimeMs}:${stat.ctimeMs}:${stat.size}`);
10127
+ } else signature.update("missing");
10128
+ }
10129
+ const stamp = signature.digest("hex");
10130
+ const key = `${project.projectFile}:${targetId}:${phaseId}:${settings("CONFIGURATION")}`;
10131
+ if (preparedSourcePhases.get(key) === stamp && allOutputs.every((file) => import_node_fs5.default.existsSync(file)))
10132
+ continue;
10133
+ import_node_fs5.default.mkdirSync(phaseDir, { recursive: true });
10134
+ import_node_fs5.default.mkdirSync(settings("BUILT_PRODUCTS_DIR"), { recursive: true });
10135
+ import_node_fs5.default.mkdirSync(settings("DERIVED_FILE_DIR"), { recursive: true });
10136
+ for (const [kind, lists] of fileLists)
10137
+ lists.forEach((item, index) => {
10138
+ import_node_fs5.default.writeFileSync(
10139
+ env[`SCRIPT_${kind}_FILE_LIST_${index}`],
10140
+ `${item.entries.join("\n")}
10141
+ `
10142
+ );
10143
+ });
10144
+ try {
10145
+ (0, import_node_child_process2.execFileSync)(
10146
+ str(phase.shellPath) ?? "/bin/sh",
10147
+ ["-c", str(phase.shellScript) ?? ""],
10148
+ {
10149
+ cwd: project.projectDir,
10150
+ env,
10151
+ stdio: ["ignore", "pipe", "pipe"],
10152
+ timeout: 12e4
10153
+ }
10154
+ );
10155
+ } catch (error) {
10156
+ const output = error instanceof Error ? `${error.message}
10157
+ ${"stdout" in error ? String(error.stdout) : ""}${"stderr" in error ? String(error.stderr) : ""}` : String(error);
10158
+ throw new Error(
10159
+ `${targetName}: Run Script "${script}" failed preparing generated Swift sources:
10160
+ ${output}`
10161
+ );
7794
10162
  }
10163
+ const missing = allOutputs.filter(
10164
+ (file) => file.endsWith(".swift") && !import_node_fs5.default.existsSync(file)
10165
+ );
10166
+ if (missing.length > 0)
10167
+ throw new Error(
10168
+ `${targetName}: Run Script "${script}" did not produce ${missing.join(", ")}`
10169
+ );
10170
+ preparedSourcePhases.set(key, stamp);
7795
10171
  }
7796
10172
  }
7797
10173
  visitXcodeTargetMembers(
@@ -7981,22 +10357,95 @@ function readXcodeAppTarget(input, targetName, configurationName, options = {})
7981
10357
  SRCROOT: ref.project.projectDir,
7982
10358
  SOURCE_ROOT: ref.project.projectDir,
7983
10359
  PROJECT_DIR: ref.project.projectDir,
10360
+ SYMROOT: import_node_path5.default.join(ref.project.projectDir, ".build/peach-xcode/Build/Products"),
10361
+ BUILD_DIR: "$(SYMROOT)",
10362
+ OBJROOT: import_node_path5.default.join(
10363
+ ref.project.projectDir,
10364
+ ".build/peach-xcode/Build/Intermediates.noindex"
10365
+ ),
10366
+ CONFIGURATION_BUILD_DIR: "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)",
10367
+ BUILT_PRODUCTS_DIR: "$(CONFIGURATION_BUILD_DIR)",
10368
+ TARGET_BUILD_DIR: "$(CONFIGURATION_BUILD_DIR)",
10369
+ PROJECT_TEMP_DIR: "$(OBJROOT)/$(PROJECT_NAME).build",
10370
+ CONFIGURATION_TEMP_DIR: "$(PROJECT_TEMP_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)",
10371
+ TARGET_TEMP_DIR: "$(CONFIGURATION_TEMP_DIR)/$(TARGET_NAME).build",
10372
+ DERIVED_FILE_DIR: "$(TARGET_TEMP_DIR)/DerivedSources",
10373
+ DERIVED_FILES_DIR: "$(DERIVED_FILE_DIR)",
10374
+ PLATFORM_NAME: "iphonesimulator",
10375
+ EFFECTIVE_PLATFORM_NAME: "-iphonesimulator",
10376
+ CURRENT_ARCH: "arm64",
10377
+ ARCHS: "arm64",
10378
+ ACTION: "build",
7984
10379
  DEVELOPMENT_LANGUAGE: str(ref.project.project.developmentRegion) ?? "en"
7985
10380
  },
7986
10381
  options
7987
10382
  );
7988
10383
  for (const file of read) xcconfigs.add(file);
7989
10384
  const swiftVersion = Number.parseFloat(settings2("SWIFT_VERSION") || "5");
10385
+ const members = targetMembers(ref, settings2, options, keys, xcconfigs);
10386
+ const implementations = members.allSources.filter(
10387
+ (file) => /\.(c|cc|cpp|cxx|m|mm)$/.test(file)
10388
+ );
10389
+ const absolute = (file) => import_node_path5.default.resolve(ref.project.projectDir, file);
10390
+ const fileFlags = {};
10391
+ for (const phaseId of list(ref.target.buildPhases)) {
10392
+ const phase = ref.project.object(phaseId);
10393
+ if (phase?.isa !== "PBXSourcesBuildPhase") continue;
10394
+ for (const id of list(phase.files)) {
10395
+ const file = ref.project.object(id);
10396
+ const resolved = ref.project.resolvePath(str(file?.fileRef) ?? "");
10397
+ if (resolved && implementations.includes(resolved))
10398
+ fileFlags[resolved] = settingList(
10399
+ expand(
10400
+ str(isDict(file?.settings) ? file.settings.COMPILER_FLAGS : void 0) ?? "",
10401
+ settings2
10402
+ )
10403
+ );
10404
+ }
10405
+ }
7990
10406
  return {
7991
10407
  settings: settings2,
7992
10408
  keys,
7993
10409
  module: {
7994
10410
  name: name2,
7995
10411
  moduleName: applyOperator(settings2("PRODUCT_MODULE_NAME"), "c99extidentifier"),
7996
- ...targetMembers(ref, settings2, options),
10412
+ ...members,
7997
10413
  languageMode: swiftVersion >= 6 ? 6 : 5,
7998
10414
  mainActorIsolation: settings2("SWIFT_DEFAULT_ACTOR_ISOLATION") === "MainActor",
7999
- defines: compilationConditions(settings2)
10415
+ defines: compilationConditions(settings2),
10416
+ iosDeploymentTarget: settings2("IPHONEOS_DEPLOYMENT_TARGET") || null,
10417
+ ...implementations.some((file) => /\.mm?$/.test(file)) ? {
10418
+ objc: {
10419
+ headers: Object.keys(ref.project.objects).flatMap((id) => {
10420
+ const file = ref.project.resolvePath(id);
10421
+ return file && /\.(h|hh|hpp|hxx|pch)$/.test(file) && import_node_fs5.default.existsSync(file) ? [file] : [];
10422
+ }),
10423
+ prefixHeader: settings2("GCC_PREFIX_HEADER") ? absolute(settings2("GCC_PREFIX_HEADER")) : null,
10424
+ bridgingHeader: settings2("SWIFT_OBJC_BRIDGING_HEADER") ? absolute(settings2("SWIFT_OBJC_BRIDGING_HEADER")) : null,
10425
+ headerSearchPaths: [
10426
+ ...settingList(settings2("HEADER_SEARCH_PATHS")),
10427
+ ...settingList(settings2("USER_HEADER_SEARCH_PATHS"))
10428
+ ].map(absolute),
10429
+ frameworkSearchPaths: settingList(settings2("FRAMEWORK_SEARCH_PATHS")).map(
10430
+ absolute
10431
+ ),
10432
+ flags: [
10433
+ ...settings2("CLANG_ENABLE_OBJC_ARC") === "YES" ? ["-fobjc-arc"] : [],
10434
+ ...settings2("CLANG_ENABLE_OBJC_WEAK") === "YES" ? ["-fobjc-weak"] : [],
10435
+ ...settings2("CLANG_ENABLE_MODULES") === "YES" ? ["-fmodules"] : [],
10436
+ ...settings2("GCC_C_LANGUAGE_STANDARD") ? [`-std=${settings2("GCC_C_LANGUAGE_STANDARD")}`] : [],
10437
+ ...settingList(settings2("GCC_PREPROCESSOR_DEFINITIONS")).map(
10438
+ (value) => `-D${value}`
10439
+ ),
10440
+ ...settingList(settings2("OTHER_CFLAGS"))
10441
+ ],
10442
+ cxxFlags: [
10443
+ ...settings2("CLANG_CXX_LANGUAGE_STANDARD") ? [`-std=${settings2("CLANG_CXX_LANGUAGE_STANDARD")}`] : [],
10444
+ ...settingList(settings2("OTHER_CPLUSPLUSFLAGS"))
10445
+ ],
10446
+ fileFlags
10447
+ }
10448
+ } : {}
8000
10449
  }
8001
10450
  };
8002
10451
  };
@@ -8045,6 +10494,23 @@ function readXcodeAppTarget(input, targetName, configurationName, options = {})
8045
10494
  ...projects.flatMap(
8046
10495
  (project) => Object.entries(project.objects).flatMap(([id, entry]) => {
8047
10496
  if (!isDict(entry)) return [];
10497
+ if (entry.isa === "PBXFileSystemSynchronizedRootGroup") {
10498
+ const folder = project.resolvePath(id);
10499
+ const pending = folder ? [folder] : [];
10500
+ const packages = [];
10501
+ while (pending.length > 0) {
10502
+ const dir = pending.pop();
10503
+ if (import_node_fs5.default.existsSync(import_node_path5.default.join(dir, "Package.swift"))) {
10504
+ packages.push(dir);
10505
+ continue;
10506
+ }
10507
+ if (!isDirectory(dir)) continue;
10508
+ for (const child of import_node_fs5.default.readdirSync(dir, { withFileTypes: true }))
10509
+ if (child.isDirectory() && !child.name.startsWith("."))
10510
+ pending.push(import_node_path5.default.join(dir, child.name));
10511
+ }
10512
+ return packages;
10513
+ }
8048
10514
  const candidate = entry.isa === "XCLocalSwiftPackageReference" ? import_node_path5.default.resolve(project.projectDir, str(entry.relativePath) ?? "") : entry.isa === "PBXFileReference" ? project.resolvePath(id) : null;
8049
10515
  return candidate && import_node_fs5.default.existsSync(import_node_path5.default.join(candidate, "Package.swift")) ? [candidate] : [];
8050
10516
  })
@@ -8099,6 +10565,7 @@ function readXcodeAppTarget(input, targetName, configurationName, options = {})
8099
10565
  "swiftpm",
8100
10566
  "Package.resolved"
8101
10567
  );
10568
+ const packageResolved = import_node_fs5.default.existsSync(resolvedFile) ? [import_node_fs5.default.realpathSync(resolvedFile)] : [...new Set(localPackageDirs.map((dir) => import_node_path5.default.join(dir, "Package.resolved")))].filter((file) => import_node_fs5.default.existsSync(file)).map((file) => import_node_fs5.default.realpathSync(file)).sort();
8102
10569
  const used = order.map((ref) => ref.project);
8103
10570
  return {
8104
10571
  ...module2,
@@ -8124,7 +10591,7 @@ function readXcodeAppTarget(input, targetName, configurationName, options = {})
8124
10591
  ...new Set(localPackageDirs.map((dir) => import_node_fs5.default.realpathSync(dir)))
8125
10592
  ].sort(),
8126
10593
  binaryFrameworks: [...binaryFrameworks].map(([name2, file]) => ({ name: name2, path: file })).sort((left, right) => left.name.localeCompare(right.name)),
8127
- packageResolved: import_node_fs5.default.existsSync(resolvedFile) ? resolvedFile : null,
10594
+ packageResolved,
8128
10595
  appTargets: appTargetNames,
8129
10596
  configuration,
8130
10597
  settings
@@ -8132,15 +10599,12 @@ function readXcodeAppTarget(input, targetName, configurationName, options = {})
8132
10599
  }
8133
10600
 
8134
10601
  // src/native-app-identity-project.ts
8135
- function isRecord4(value) {
8136
- return typeof value === "object" && value !== null && !Array.isArray(value);
8137
- }
8138
10602
  function nonEmptyString2(value) {
8139
10603
  return typeof value === "string" && value.length > 0 ? value : void 0;
8140
10604
  }
8141
10605
  function readNativeAppIdentityFromXcodeTarget(app, parseInfoPlist = parsePlistSource) {
8142
10606
  const dictionary = parseInfoPlist(app.infoPlist);
8143
- if (!isRecord4(dictionary)) throw new Error("native app Info.plist is not a dictionary");
10607
+ if (!isRecord(dictionary)) throw new Error("native app Info.plist is not a dictionary");
8144
10608
  const settings = app.settings;
8145
10609
  const bundleIdentifier = nonEmptyString2(dictionary.CFBundleIdentifier) ?? nonEmptyString2(settings?.("PRODUCT_BUNDLE_IDENTIFIER"));
8146
10610
  if (!bundleIdentifier) throw new Error("native app has no bundle identifier");
@@ -8157,8 +10621,8 @@ function readNativeAppIdentityFromXcodeTarget(app, parseInfoPlist = parsePlistSo
8157
10621
  const designRequiresCompatibility = dictionary.UIDesignRequiresCompatibility === true;
8158
10622
  const alternateIconNames = /* @__PURE__ */ new Set();
8159
10623
  const icons = dictionary.CFBundleIcons;
8160
- const alternates = isRecord4(icons) ? icons.CFBundleAlternateIcons : void 0;
8161
- if (isRecord4(alternates)) {
10624
+ const alternates = isRecord(icons) ? icons.CFBundleAlternateIcons : void 0;
10625
+ if (isRecord(alternates)) {
8162
10626
  for (const name2 of Object.keys(alternates)) {
8163
10627
  if (name2) alternateIconNames.add(name2);
8164
10628
  }
@@ -8390,7 +10854,7 @@ function readIosNativeAppIdentity(projectRoot, parseInfoPlist, iosTarget) {
8390
10854
  const installedManifest = JSON.parse(
8391
10855
  import_node_fs6.default.readFileSync(reanimatedManifestPath, "utf8")
8392
10856
  );
8393
- const installedVersion = isRecord4(installedManifest) ? nonEmptyString2(installedManifest.version) : void 0;
10857
+ const installedVersion = isRecord(installedManifest) ? nonEmptyString2(installedManifest.version) : void 0;
8394
10858
  if (!installedVersion) throw new Error("Reanimated package version is malformed");
8395
10859
  if (Number.parseInt(installedVersion, 10) < 4) return identity;
8396
10860
  const defaults = JSON.parse(
@@ -8402,11 +10866,11 @@ function readIosNativeAppIdentity(projectRoot, parseInfoPlist, iosTarget) {
8402
10866
  "utf8"
8403
10867
  )
8404
10868
  );
8405
- if (!isRecord4(defaults)) throw new Error("Reanimated static flags are malformed");
10869
+ if (!isRecord(defaults)) throw new Error("Reanimated static flags are malformed");
8406
10870
  const manifest = JSON.parse(import_node_fs6.default.readFileSync(projectManifestPath, "utf8"));
8407
- const reanimated = isRecord4(manifest) ? manifest.reanimated : void 0;
8408
- const overrides = isRecord4(reanimated) ? reanimated.staticFeatureFlags : void 0;
8409
- if (overrides !== void 0 && !isRecord4(overrides)) {
10871
+ const reanimated = isRecord(manifest) ? manifest.reanimated : void 0;
10872
+ const overrides = isRecord(reanimated) ? reanimated.staticFeatureFlags : void 0;
10873
+ if (overrides !== void 0 && !isRecord(overrides)) {
8410
10874
  throw new Error("Reanimated static flag overrides are malformed");
8411
10875
  }
8412
10876
  const flags = {};
@@ -8427,7 +10891,7 @@ function readIosNativeAppIdentity(projectRoot, parseInfoPlist, iosTarget) {
8427
10891
  }
8428
10892
 
8429
10893
  // src/native-firebase-config.ts
8430
- var import_node_child_process2 = require("node:child_process");
10894
+ var import_node_child_process3 = require("node:child_process");
8431
10895
  var import_node_fs7 = __toESM(require("node:fs"), 1);
8432
10896
  var import_node_os = __toESM(require("node:os"), 1);
8433
10897
  var import_node_path7 = __toESM(require("node:path"), 1);
@@ -8472,7 +10936,7 @@ function readExpoConfig(projectRoot) {
8472
10936
  const directory = resultDirectory();
8473
10937
  const resultPath = import_node_path7.default.join(directory, "config.json");
8474
10938
  try {
8475
- const child = (0, import_node_child_process2.spawnSync)("node", expoConfigArgs(projectRoot, resultPath), {
10939
+ const child = (0, import_node_child_process3.spawnSync)("node", expoConfigArgs(projectRoot, resultPath), {
8476
10940
  cwd: projectRoot,
8477
10941
  encoding: "utf8",
8478
10942
  stdio: ["ignore", "ignore", "pipe"],
@@ -9215,7 +11679,7 @@ function withPeach(config, options = {}) {
9215
11679
  const configuredBundleUrl = "/index.bundle?platform=ios&dev=true&hot=true&minify=false";
9216
11680
  const cfgServer = config.server;
9217
11681
  const port = resolveMetroPort(cfgServer);
9218
- const metroServerId = (0, import_node_crypto2.randomUUID)();
11682
+ const metroServerId = (0, import_node_crypto3.randomUUID)();
9219
11683
  const bundleUrl = tagRnxBundleForPlugin(
9220
11684
  configuredBundleUrl,
9221
11685
  `http://localhost:${port}`,