peachsim 0.1.1635 → 0.1.1641

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