peachsim 0.1.2201 → 0.1.2204

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 (85) hide show
  1. package/dist-lib/agent-daemon-client.cjs +1 -1
  2. package/dist-lib/agent-events.cjs +1 -1
  3. package/dist-lib/attached-projects.cjs +1 -1
  4. package/dist-lib/auth/shared-session.cjs +1 -1
  5. package/dist-lib/backend-origin.cjs +1 -1
  6. package/dist-lib/beta.cjs +1 -1
  7. package/dist-lib/beta.mjs +1 -1
  8. package/dist-lib/bridge-constants.cjs +1 -1
  9. package/dist-lib/bridge-contract-input.cjs +1 -1
  10. package/dist-lib/bridge-contract-input.mjs +1 -1
  11. package/dist-lib/bridge-contract.cjs +1 -1
  12. package/dist-lib/bridge-contract.mjs +1 -1
  13. package/dist-lib/bundle-channel.cjs +11 -8
  14. package/dist-lib/capture-contract.cjs +1 -1
  15. package/dist-lib/capture-contract.mjs +1 -1
  16. package/dist-lib/cloud-contract.cjs +1 -1
  17. package/dist-lib/cloud-contract.mjs +1 -1
  18. package/dist-lib/cloud-test-args.cjs +1 -1
  19. package/dist-lib/cloud-test-args.mjs +1 -1
  20. package/dist-lib/cloud.cjs +1 -1
  21. package/dist-lib/cloud.mjs +1 -1
  22. package/dist-lib/config.cjs +1 -1
  23. package/dist-lib/config.mjs +1 -1
  24. package/dist-lib/detox/index.cjs +2 -2
  25. package/dist-lib/dev-bundle-resolution.cjs +1 -1
  26. package/dist-lib/expo-swift-bundle.cjs +10 -6
  27. package/dist-lib/expo-swift-metadata.cjs +1 -1
  28. package/dist-lib/expo-swift-metadata.mjs +1 -1
  29. package/dist-lib/home-paths.cjs +1 -1
  30. package/dist-lib/host/bridge-host.cjs +11 -8
  31. package/dist-lib/host/fetch-proxy-handler.cjs +2 -3
  32. package/dist-lib/host/fetch-proxy-overrides.cjs +1 -1
  33. package/dist-lib/host/fetch-proxy-overrides.mjs +1 -1
  34. package/dist-lib/host/replacement-module-handler.cjs +1 -1
  35. package/dist-lib/host/websocket-proxy.cjs +1 -1
  36. package/dist-lib/index.cjs +2 -3
  37. package/dist-lib/jump-to-source-babel.cjs +1 -1
  38. package/dist-lib/jump-to-source-native.cjs +1 -1
  39. package/dist-lib/kotlin-host.cjs +1 -1
  40. package/dist-lib/menu.cjs +1 -1
  41. package/dist-lib/menu.mjs +1 -1
  42. package/dist-lib/metro-fingerprint-registry.cjs +1 -1
  43. package/dist-lib/metro-fingerprint-registry.mjs +1 -1
  44. package/dist-lib/metro-production-bundle.cjs +1 -1
  45. package/dist-lib/metro-production-bundle.mjs +1 -1
  46. package/dist-lib/metro.cjs +2 -3
  47. package/dist-lib/native-app-identity-project.cjs +1 -1
  48. package/dist-lib/native-app-identity-project.mjs +1 -1
  49. package/dist-lib/native-app-identity.cjs +1 -1
  50. package/dist-lib/native-app-identity.mjs +1 -1
  51. package/dist-lib/native-firebase-metadata.cjs +1 -1
  52. package/dist-lib/native-firebase-metadata.mjs +1 -1
  53. package/dist-lib/pdfium-raster.cjs +1 -1
  54. package/dist-lib/pdfium-raster.mjs +1 -1
  55. package/dist-lib/plist.cjs +1 -1
  56. package/dist-lib/plist.mjs +1 -1
  57. package/dist-lib/profiles.cjs +1 -1
  58. package/dist-lib/public-brand.cjs +1 -1
  59. package/dist-lib/public-origins-lib-esm.json +24 -24
  60. package/dist-lib/public-origins-lib.json +53 -53
  61. package/dist-lib/react-native-host-modules.cjs +1 -1
  62. package/dist-lib/react-native-host-modules.mjs +1 -1
  63. package/dist-lib/reap-browser.cjs +1 -1
  64. package/dist-lib/scripts/dev-server-scanner.cjs +1 -1
  65. package/dist-lib/sdk.cjs +1 -1
  66. package/dist-lib/sdk.mjs +1 -1
  67. package/dist-lib/skills.cjs +14 -11
  68. package/dist-lib/swift-compile.cjs +1 -1
  69. package/dist-lib/swift-compile.mjs +1 -1
  70. package/dist-lib/swift-package.cjs +1 -1
  71. package/dist-lib/swift-package.mjs +1 -1
  72. package/dist-lib/swift-submit.cjs +1 -1
  73. package/dist-lib/swift-submit.mjs +1 -1
  74. package/dist-lib/swift-toolchain.cjs +1 -1
  75. package/dist-lib/swift.cjs +1 -1
  76. package/dist-lib/vite-swift.cjs +1 -1
  77. package/dist-lib/vite.cjs +2 -3
  78. package/dist-lib/worklet-executable.cjs +1 -1
  79. package/dist-lib/worklet-executable.mjs +1 -1
  80. package/dist-types/packages/peach-engine/src/engine/native-layout.d.ts +2 -0
  81. package/dist-types/packages/peach-engine/src/engine/scroll-platform.d.ts +6 -0
  82. package/dist-types/packages/peach-engine/src/engine/types.d.ts +1 -0
  83. package/package.json +1 -1
  84. package/runtime-companion.json +1 -1
  85. package/src/expo-native-prebuilt.ts +12 -5
package/dist-lib/sdk.cjs CHANGED
@@ -1,4 +1,4 @@
1
- /*! peach v0.1.2201 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.2204 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
2
2
  let __sootsim_import_meta_url = '', __sootsim_import_meta_dirname = '', __sootsim_import_meta_filename = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; __sootsim_import_meta_dirname = __dirname; __sootsim_import_meta_filename = __filename; } catch {}
3
3
  "use strict";
4
4
  var __defProp = Object.defineProperty;
package/dist-lib/sdk.mjs CHANGED
@@ -1,4 +1,4 @@
1
- /*! peach v0.1.2201 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.2204 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
2
2
  var __defProp = Object.defineProperty;
3
3
  var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
4
4
  var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
@@ -1,4 +1,4 @@
1
- /*! peach v0.1.2201 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.2204 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
2
2
  let __sootsim_import_meta_url = '', __sootsim_import_meta_dirname = '', __sootsim_import_meta_filename = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; __sootsim_import_meta_dirname = __dirname; __sootsim_import_meta_filename = __filename; } catch {}
3
3
  "use strict";
4
4
  var __create = Object.create;
@@ -2652,7 +2652,6 @@ var init_lazy_stub_patterns = __esm({
2652
2652
  "scandit-react-native-datacapture-barcode",
2653
2653
  "scandit-react-native-datacapture-core",
2654
2654
  "sp-react-native-in-app-updates",
2655
- "stream-chat-react-native",
2656
2655
  "voltra"
2657
2656
  ];
2658
2657
  LAZY_STUB_NATIVE_RANGES = {
@@ -12786,9 +12785,9 @@ var init_registry = __esm({
12786
12785
  versions: [
12787
12786
  {
12788
12787
  range: ">=8.0.0",
12789
- coverage: 0.55,
12790
- note: "identical surface to stream-chat-expo \u2014 passthrough children for Channel/Chat/MessageList components",
12791
- missing: "same as stream-chat-expo \u2014 recommended swap: stream-chat-react"
12788
+ coverage: 0,
12789
+ note: "unchanged JS and native sources (StreamChatReactNative.mm, StreamVideoThumbnail.mm, StreamMultipartUploader.mm and their Swift) compile into the app PeachTurboApp wasm executable as stream-chat-expo does (`specs/peach/swift/turbo-modules.md`); the replacement JS stub has been removed.",
12790
+ missing: "image resizing, thumbnail extraction and multipart upload are unproved, as for stream-chat-expo"
12792
12791
  }
12793
12792
  ]
12794
12793
  },
@@ -65268,7 +65267,7 @@ var init_package_tree_digest = __esm({
65268
65267
 
65269
65268
  // src/expo-native-prebuilt.ts
65270
65269
  function expoNativeCompilerDigestValue() {
65271
- return true ? "8816e3d105fe01328bf8a0e9c292918ca1439d1ad710538b4adec37bf539ff64" : expoNativeCompilerDigest(__sootsim_import_meta_dirname);
65270
+ return true ? "cfe31b5c11855378746b2e8638dcebd1e5271aeda482530cd4156dc8df685af3" : expoNativeCompilerDigest(__sootsim_import_meta_dirname);
65272
65271
  }
65273
65272
  function readSources(value) {
65274
65273
  const sources = isRecord(value) ? value.sources : null;
@@ -65432,12 +65431,16 @@ function servedExpoSwift(appRoot, entry, app) {
65432
65431
  if (!entry.expoSwift) return null;
65433
65432
  const rootId = `${(0, import_node_crypto36.createHash)("sha256").update(import_node_fs69.default.realpathSync(appRoot)).digest("hex")}/Expo`;
65434
65433
  if (app.infoPlist === null) throw new Error("the prebuilt app target has no Info.plist");
65435
- const infoPlist = Buffer.from(
65436
- installedInfoPlist(app.infoPlist, entry.infoPlist)
65437
- ).toString("base64");
65434
+ const installed2 = installedInfoPlist(app.infoPlist, entry.infoPlist);
65435
+ const infoPlist = Buffer.from(installed2).toString("base64");
65438
65436
  return {
65439
65437
  ...entry.expoSwift,
65440
- ...entry.identity ? { nativeAppIdentity: readNativeAppIdentityFromXcodeTarget(app) } : {},
65438
+ ...entry.identity ? {
65439
+ nativeAppIdentity: readNativeAppIdentityFromXcodeTarget({
65440
+ ...app,
65441
+ infoPlist: installed2
65442
+ })
65443
+ } : {},
65441
65444
  modules: entry.expoSwift.modules.map((module2) => ({
65442
65445
  ...module2,
65443
65446
  rootId,
@@ -86356,7 +86359,7 @@ var init_one_sdk_bundle = __esm({
86356
86359
  var runtime_companion_default;
86357
86360
  var init_runtime_companion = __esm({
86358
86361
  "runtime-companion.json"() {
86359
- runtime_companion_default = { abi: 1, sha256: "5aec79ac0fcea933862e7e373e0d167401e0d891c835d195b7f48039c87add60", file: "node/cli-5aec79ac0fcea933862e7e373e0d167401e0d891c835d195b7f48039c87add60.cjs" };
86362
+ runtime_companion_default = { abi: 1, sha256: "0f2a6724c94613e57bcfb14019eaeebdc02f3df896e4cea1f5e3a8dc3b2a6480", file: "node/cli-0f2a6724c94613e57bcfb14019eaeebdc02f3df896e4cea1f5e3a8dc3b2a6480.cjs" };
86360
86363
  }
86361
86364
  });
86362
86365
 
@@ -1,4 +1,4 @@
1
- /*! peach v0.1.2201 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.2204 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
2
2
  let __sootsim_import_meta_url = '', __sootsim_import_meta_dirname = '', __sootsim_import_meta_filename = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; __sootsim_import_meta_dirname = __dirname; __sootsim_import_meta_filename = __filename; } catch {}
3
3
  "use strict";
4
4
  var __create = Object.create;
@@ -1,4 +1,4 @@
1
- /*! peach v0.1.2201 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.2204 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
2
2
 
3
3
  // src/swift-compile.ts
4
4
  import {
@@ -1,4 +1,4 @@
1
- /*! peach v0.1.2201 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.2204 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
2
2
  let __sootsim_import_meta_url = '', __sootsim_import_meta_dirname = '', __sootsim_import_meta_filename = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; __sootsim_import_meta_dirname = __dirname; __sootsim_import_meta_filename = __filename; } catch {}
3
3
  "use strict";
4
4
  var __defProp = Object.defineProperty;
@@ -1,4 +1,4 @@
1
- /*! peach v0.1.2201 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.2204 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
2
2
 
3
3
  // src/swift-package.ts
4
4
  function swiftManifestSettings(target) {
@@ -1,4 +1,4 @@
1
- /*! peach v0.1.2201 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.2204 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
2
2
  let __sootsim_import_meta_url = '', __sootsim_import_meta_dirname = '', __sootsim_import_meta_filename = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; __sootsim_import_meta_dirname = __dirname; __sootsim_import_meta_filename = __filename; } catch {}
3
3
  "use strict";
4
4
  var __defProp = Object.defineProperty;
@@ -1,4 +1,4 @@
1
- /*! peach v0.1.2201 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.2204 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
2
2
 
3
3
  // src/is-record.ts
4
4
  function isRecord(value) {
@@ -1,4 +1,4 @@
1
- /*! peach v0.1.2201 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.2204 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
2
2
  let __sootsim_import_meta_url = '', __sootsim_import_meta_dirname = '', __sootsim_import_meta_filename = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; __sootsim_import_meta_dirname = __dirname; __sootsim_import_meta_filename = __filename; } catch {}
3
3
  "use strict";
4
4
  var __create = Object.create;
@@ -1,4 +1,4 @@
1
- /*! peach v0.1.2201 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.2204 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
2
2
  let __sootsim_import_meta_url = '', __sootsim_import_meta_dirname = '', __sootsim_import_meta_filename = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; __sootsim_import_meta_dirname = __dirname; __sootsim_import_meta_filename = __filename; } catch {}
3
3
  "use strict";
4
4
  var __defProp = Object.defineProperty;
@@ -1,4 +1,4 @@
1
- /*! peach v0.1.2201 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.2204 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
2
2
  let __sootsim_import_meta_url = '', __sootsim_import_meta_dirname = '', __sootsim_import_meta_filename = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; __sootsim_import_meta_dirname = __dirname; __sootsim_import_meta_filename = __filename; } catch {}
3
3
  "use strict";
4
4
  var __create = Object.create;
package/dist-lib/vite.cjs CHANGED
@@ -1,4 +1,4 @@
1
- /*! peach v0.1.2201 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.2204 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
2
2
  let __sootsim_import_meta_url = '', __sootsim_import_meta_dirname = '', __sootsim_import_meta_filename = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; __sootsim_import_meta_dirname = __dirname; __sootsim_import_meta_filename = __filename; } catch {}
3
3
  "use strict";
4
4
  var __create = Object.create;
@@ -1416,7 +1416,7 @@ function isValidRuntimeVersion(value) {
1416
1416
  }
1417
1417
 
1418
1418
  // runtime-companion.json
1419
- var runtime_companion_default = { abi: 1, sha256: "5aec79ac0fcea933862e7e373e0d167401e0d891c835d195b7f48039c87add60", file: "node/cli-5aec79ac0fcea933862e7e373e0d167401e0d891c835d195b7f48039c87add60.cjs" };
1419
+ var runtime_companion_default = { abi: 1, sha256: "0f2a6724c94613e57bcfb14019eaeebdc02f3df896e4cea1f5e3a8dc3b2a6480", file: "node/cli-0f2a6724c94613e57bcfb14019eaeebdc02f3df896e4cea1f5e3a8dc3b2a6480.cjs" };
1420
1420
 
1421
1421
  // src/answeredNativePackages.ts
1422
1422
  init_define_SWIFT_COVERAGE_SOURCE_DIGESTS();
@@ -7809,7 +7809,6 @@ var LAZY_STUB_PATTERNS = [
7809
7809
  "scandit-react-native-datacapture-barcode",
7810
7810
  "scandit-react-native-datacapture-core",
7811
7811
  "sp-react-native-in-app-updates",
7812
- "stream-chat-react-native",
7813
7812
  "voltra"
7814
7813
  ];
7815
7814
 
@@ -1,4 +1,4 @@
1
- /*! peach v0.1.2201 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.2204 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
2
2
  let __sootsim_import_meta_url = '', __sootsim_import_meta_dirname = '', __sootsim_import_meta_filename = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; __sootsim_import_meta_dirname = __dirname; __sootsim_import_meta_filename = __filename; } catch {}
3
3
  "use strict";
4
4
  var __defProp = Object.defineProperty;
@@ -1,4 +1,4 @@
1
- /*! peach v0.1.2201 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.2204 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
2
2
 
3
3
  // src/worklet-executable.ts
4
4
  import { parse } from "acorn";
@@ -10,6 +10,8 @@ export interface NativeLayoutExports {
10
10
  _peach_layout_apply(slot: number): void;
11
11
  _peach_layout_attach(parent: number, child: number, index: number): void;
12
12
  _peach_layout_detach(parent: number, child: number): void;
13
+ _peach_layout_split_hide(slot: number): void;
14
+ _peach_layout_split_show(slot: number): void;
13
15
  _peach_layout_owner(slot: number): number;
14
16
  _peach_layout_child_count(slot: number): number;
15
17
  _peach_layout_mark_dirty(slot: number): void;
@@ -16,6 +16,12 @@ export interface ScrollDragOrigin {
16
16
  export declare function scrollDragAdmission(platform: string | undefined, primaryDelta: number, crossDelta: number): 'pending' | 'reject' | 'begin';
17
17
  export declare function scrollDragDelta(platform: string | undefined, pointerDelta: number, slop: number, beganDrag: boolean): number;
18
18
  export declare function scrollDragMatchesAxis(platform: string | undefined, primaryDelta: number, crossDelta: number): boolean;
19
+ export declare function bouncesAlongAxis(opts: {
20
+ props: Record<string, unknown> | null | undefined;
21
+ horizontal: boolean;
22
+ contentSize: number;
23
+ viewportSize: number;
24
+ }): boolean;
19
25
  export declare function allowsRubberBandScroll(opts: {
20
26
  platform?: string;
21
27
  bounces?: unknown;
@@ -461,6 +461,7 @@ export interface SootSimStyle {
461
461
  _androidTextView?: true;
462
462
  _androidTextSize?: 'dimension' | 'sp';
463
463
  _swiftUILayout?: boolean;
464
+ _swiftUIFrame?: true;
464
465
  _pixelSnapped?: true;
465
466
  _swiftUIVerticalGuide?: 'firstTextLineCenter' | 'firstTextBaseline' | 'lastTextBaseline';
466
467
  _swiftUIPlatformView?: true;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "peachsim",
3
- "version": "0.1.2201",
3
+ "version": "0.1.2204",
4
4
  "description": "Vite and Metro plugins, testing drivers, and SDK exports for peach.",
5
5
  "author": "Tamagui LLC",
6
6
  "license": "SEE LICENSE IN LICENSE",
@@ -1 +1 @@
1
- {"abi":1,"sha256":"5aec79ac0fcea933862e7e373e0d167401e0d891c835d195b7f48039c87add60","file":"node/cli-5aec79ac0fcea933862e7e373e0d167401e0d891c835d195b7f48039c87add60.cjs"}
1
+ {"abi":1,"sha256":"0f2a6724c94613e57bcfb14019eaeebdc02f3df896e4cea1f5e3a8dc3b2a6480","file":"node/cli-0f2a6724c94613e57bcfb14019eaeebdc02f3df896e4cea1f5e3a8dc3b2a6480.cjs"}
@@ -8,7 +8,8 @@
8
8
  // answered packages, the Swift pin and these compilers' sources. an app whose
9
9
  // inputs match fetches one metadata file and loads the published wasm; any
10
10
  // other app prepares and compiles as before. identity values stay out of the
11
- // artifact: an app reads its own from its prebuilt Xcode project.
11
+ // artifact: an app reads its own from its prebuilt Xcode project, with the
12
+ // plist values pod install added.
12
13
  import { createHash } from 'node:crypto'
13
14
  import fs from 'node:fs'
14
15
  import { createRequire } from 'node:module'
@@ -330,13 +331,19 @@ export function servedExpoSwift(
330
331
  if (!entry.expoSwift) return null
331
332
  const rootId = `${createHash('sha256').update(fs.realpathSync(appRoot)).digest('hex')}/Expo`
332
333
  if (app.infoPlist === null) throw new Error('the prebuilt app target has no Info.plist')
333
- const infoPlist = Buffer.from(
334
- installedInfoPlist(app.infoPlist, entry.infoPlist),
335
- ).toString('base64')
334
+ // pod install writes values such as RCTNewArchEnabled into the plist after
335
+ // prebuild. the compile reads identity from that plist, so the hit must too.
336
+ const installed = installedInfoPlist(app.infoPlist, entry.infoPlist)
337
+ const infoPlist = Buffer.from(installed).toString('base64')
336
338
  return {
337
339
  ...entry.expoSwift,
338
340
  ...(entry.identity
339
- ? { nativeAppIdentity: readNativeAppIdentityFromXcodeTarget(app) }
341
+ ? {
342
+ nativeAppIdentity: readNativeAppIdentityFromXcodeTarget({
343
+ ...app,
344
+ infoPlist: installed,
345
+ }),
346
+ }
340
347
  : {}),
341
348
  modules: entry.expoSwift.modules.map((module) => ({
342
349
  ...module,