peachsim 0.1.2221 → 0.1.2223

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 (127) hide show
  1. package/cli/commands/compat.ts +4 -4
  2. package/cli/commands/report-issue.ts +1 -1
  3. package/cli/runtime-compat.ts +7 -2
  4. package/dist-lib/agent-daemon-client.cjs +1 -1
  5. package/dist-lib/agent-events.cjs +1 -1
  6. package/dist-lib/attached-projects.cjs +1 -1
  7. package/dist-lib/auth/shared-session.cjs +1 -1
  8. package/dist-lib/backend-origin.cjs +1 -1
  9. package/dist-lib/beta.cjs +1 -1
  10. package/dist-lib/beta.mjs +1 -1
  11. package/dist-lib/bridge-constants.cjs +1 -1
  12. package/dist-lib/bridge-contract-input.cjs +1 -1
  13. package/dist-lib/bridge-contract-input.mjs +1 -1
  14. package/dist-lib/bridge-contract.cjs +1 -1
  15. package/dist-lib/bridge-contract.mjs +1 -1
  16. package/dist-lib/bundle-channel.cjs +461 -369
  17. package/dist-lib/capture-contract.cjs +1 -1
  18. package/dist-lib/capture-contract.mjs +1 -1
  19. package/dist-lib/cloud-contract.cjs +1 -1
  20. package/dist-lib/cloud-contract.mjs +1 -1
  21. package/dist-lib/cloud-test-args.cjs +1 -1
  22. package/dist-lib/cloud-test-args.mjs +1 -1
  23. package/dist-lib/cloud.cjs +1 -1
  24. package/dist-lib/cloud.mjs +1 -1
  25. package/dist-lib/config.cjs +1 -1
  26. package/dist-lib/config.mjs +1 -1
  27. package/dist-lib/detox/index.cjs +3 -2
  28. package/dist-lib/dev-bundle-resolution.cjs +1 -1
  29. package/dist-lib/expo-swift-bundle.cjs +458 -367
  30. package/dist-lib/expo-swift-metadata.cjs +1 -1
  31. package/dist-lib/expo-swift-metadata.mjs +1 -1
  32. package/dist-lib/home-paths.cjs +1 -1
  33. package/dist-lib/host/bridge-host.cjs +681 -562
  34. package/dist-lib/host/fetch-proxy-handler.cjs +10 -7
  35. package/dist-lib/host/fetch-proxy-overrides.cjs +1 -1
  36. package/dist-lib/host/fetch-proxy-overrides.mjs +1 -1
  37. package/dist-lib/host/replacement-module-handler.cjs +1 -1
  38. package/dist-lib/host/websocket-proxy.cjs +1 -1
  39. package/dist-lib/index.cjs +8232 -7815
  40. package/dist-lib/jump-to-source-babel.cjs +1 -1
  41. package/dist-lib/jump-to-source-native.cjs +1 -1
  42. package/dist-lib/kotlin-host.cjs +1 -1
  43. package/dist-lib/menu.cjs +1 -1
  44. package/dist-lib/menu.mjs +1 -1
  45. package/dist-lib/metro-fingerprint-registry.cjs +1 -1
  46. package/dist-lib/metro-fingerprint-registry.mjs +1 -1
  47. package/dist-lib/metro-production-bundle.cjs +1 -1
  48. package/dist-lib/metro-production-bundle.mjs +1 -1
  49. package/dist-lib/metro.cjs +8146 -7737
  50. package/dist-lib/native-app-identity-project.cjs +331 -13
  51. package/dist-lib/native-app-identity-project.mjs +331 -13
  52. package/dist-lib/native-app-identity.cjs +16 -3
  53. package/dist-lib/native-app-identity.mjs +16 -3
  54. package/dist-lib/native-firebase-metadata.cjs +1 -1
  55. package/dist-lib/native-firebase-metadata.mjs +1 -1
  56. package/dist-lib/pdfium-raster.cjs +1 -1
  57. package/dist-lib/pdfium-raster.mjs +1 -1
  58. package/dist-lib/plist.cjs +1 -1
  59. package/dist-lib/plist.mjs +1 -1
  60. package/dist-lib/profiles.cjs +1 -1
  61. package/dist-lib/public-brand.cjs +1 -1
  62. package/dist-lib/public-origins-lib-esm.json +25 -24
  63. package/dist-lib/public-origins-lib.json +99 -96
  64. package/dist-lib/react-native-host-modules.cjs +1 -1
  65. package/dist-lib/react-native-host-modules.mjs +1 -1
  66. package/dist-lib/reap-browser.cjs +1 -1
  67. package/dist-lib/scripts/dev-server-scanner.cjs +1 -1
  68. package/dist-lib/sdk.cjs +1 -1
  69. package/dist-lib/sdk.mjs +1 -1
  70. package/dist-lib/skills.cjs +518 -408
  71. package/dist-lib/swift-compile.cjs +69 -36
  72. package/dist-lib/swift-compile.mjs +69 -36
  73. package/dist-lib/swift-package.cjs +1 -1
  74. package/dist-lib/swift-package.mjs +1 -1
  75. package/dist-lib/swift-submit.cjs +1 -1
  76. package/dist-lib/swift-submit.mjs +1 -1
  77. package/dist-lib/swift-toolchain.cjs +1 -1
  78. package/dist-lib/swift.cjs +1 -1
  79. package/dist-lib/vite-swift.cjs +143 -56
  80. package/dist-lib/vite.cjs +2930 -2800
  81. package/dist-lib/worklet-executable.cjs +1 -1
  82. package/dist-lib/worklet-executable.mjs +1 -1
  83. package/dist-types/packages/peach-compat/src/stubs/native-seams/react-native-cookies.d.ts +2 -1
  84. package/dist-types/packages/peach-engine/src/cli-companion.d.ts +1 -0
  85. package/dist-types/packages/peach-engine/src/cli-host-terser.d.ts +7 -0
  86. package/dist-types/packages/peach-engine/src/engine/glass-material.d.ts +1 -1
  87. package/dist-types/packages/peach-engine/src/engine/liquid-glass.d.ts +1 -0
  88. package/dist-types/packages/peach-engine/src/engine/native-layout.d.ts +1 -0
  89. package/dist-types/packages/peach-engine/src/engine/node.d.ts +5 -0
  90. package/dist-types/packages/peach-engine/src/engine/scene-table.d.ts +8 -1
  91. package/dist-types/packages/peach-engine/src/engine/types.d.ts +3 -0
  92. package/dist-types/packages/peach-engine/src/engine/yoga-layout.d.ts +1 -1
  93. package/dist-types/packages/peach-engine/src/remote-stream/cloud-display.d.ts +2 -2
  94. package/dist-types/packages/peach-engine/src/render-worker/shell-tree-wire.d.ts +1 -2
  95. package/dist-types/packages/peach-globals/src/browser-object-url.d.ts +10 -0
  96. package/dist-types/packages/peach-kit/src/internal.d.ts +1 -0
  97. package/dist-types/packages/peach-kit/src/ios-tint.d.ts +1 -0
  98. package/dist-types/packages/peach-kit/src/transitions/screen-transition-math.d.ts +25 -0
  99. package/kotlin/sdk.tar.gz +0 -0
  100. package/package.json +1 -1
  101. package/runtime-companion.json +1 -1
  102. package/sdk/ios/System/Library/Frameworks/SceneKit.framework/Headers/SCNAnimation.h +4 -4
  103. package/sdk/ios/System/Library/Frameworks/SceneKit.framework/Headers/SCNCameraController.h +1 -1
  104. package/sdk/ios/System/Library/Frameworks/SceneKit.framework/Headers/SCNConstraint.h +5 -5
  105. package/sdk/ios/System/Library/Frameworks/SceneKit.framework/Headers/SCNGeometry.h +1 -1
  106. package/sdk/ios/System/Library/Frameworks/SceneKit.framework/Headers/SCNLevelOfDetail.h +1 -1
  107. package/sdk/ios/System/Library/Frameworks/SceneKit.framework/Headers/SCNParametricGeometry.h +9 -9
  108. package/sdk/ios/System/Library/Frameworks/SceneKit.framework/Headers/SCNParticleSystem.h +1 -1
  109. package/sdk/ios/System/Library/Frameworks/SceneKit.framework/Headers/SCNPhysicsBehavior.h +7 -7
  110. package/sdk/ios/System/Library/Frameworks/SceneKit.framework/Headers/SCNRenderer.h +1 -1
  111. package/sdk/ios/System/Library/Frameworks/SceneKit.framework/Headers/SCNShadable.h +1 -1
  112. package/sdk/ios/System/Library/Frameworks/SceneKit.framework/Headers/SCNTechnique.h +1 -1
  113. package/sdk/ios/System/Library/Frameworks/UIKit.framework/Headers/UISegmentedControl.h +1 -1
  114. package/sdk/ios/System/Library/Frameworks/UIKit.framework/Headers/UITabBar.h +1 -1
  115. package/src/cli-runtime.ts +1 -0
  116. package/src/conformance-pixel-comparison.ts +16 -3
  117. package/src/expo-native-workspace.ts +14 -10
  118. package/src/expo-workspace-exclusion.ts +10 -7
  119. package/src/react-native-autolinking.ts +2 -1
  120. package/src/runtime-delivery.ts +7 -0
  121. package/src/swift-compile.ts +51 -35
  122. package/src/swift-coverage/xcode-assets.ts +4 -2
  123. package/src/swift-host.ts +53 -14
  124. package/src/swift-root-lock.ts +27 -4
  125. package/src/wasm-optimize.ts +5 -1
  126. package/src/xcode-project.ts +26 -5
  127. package/src/xcode-target-members.ts +25 -3
@@ -1,4 +1,4 @@
1
- /*! peach v0.1.2221 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.2223 | (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;
@@ -39,7 +39,7 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
39
39
  var define_SWIFT_COVERAGE_SOURCE_DIGESTS_default;
40
40
  var init_define_SWIFT_COVERAGE_SOURCE_DIGESTS = __esm({
41
41
  "<define:__SWIFT_COVERAGE_SOURCE_DIGESTS__>"() {
42
- define_SWIFT_COVERAGE_SOURCE_DIGESTS_default = { "swift-coverage/indexdump.ts": "0d82d8eeb96bf377f409ea7e33274c341a710c0e071f6b6e17571a23d8d92412", "swift-coverage/indexing.ts": "633ccf19eec1f382a8847d0ee1dca42a2792a3c60aafd43622ed5152b09b8272", "swift-coverage/types.ts": "bd8fae54ea6c53e110cd8a5d7b57c1d532dd0166e09fdaea63c4f270c3780dd1", "swift-coverage/source.ts": "c151758a9f67631bc61473c375df0dc017da6902a34533b2cf4fc4fd7d19b6ee", "swift-coverage/package.ts": "1f0068be7461fa7c5a7a891faf318f305cbed2e94c19667ba76627f7e5be260b", "swift-coverage/xcode.ts": "65a500b806ce1c3a496de27f2e0ad77287c0f6795c618342c08af647f92af1fa", "swift-coverage/xcode-assets.ts": "99e03b74c961d2449afd58c2cbc415ba91d1d469a4f89e461c137fd6c305b27c", "swift-coverage/xcode-asset-symbols.ts": "1b2a67733bc9d139b351466270205452a6172140bc25080d72619e2952c44671", "swift-coverage/xcode-bridging.ts": "33184be8c5daf6646aa5a1276a4e15531f1be27b7c26f56550e0fbb1fc678a11", "swift-coverage/xcode-packages.ts": "8e6020d17d24474150a5a50d042aca6261819ef75c79680a287a66f395909915", "swift-coverage/xcode-strings.ts": "f2dd4c7cd8ef77035184b0132909c2fa09fd20ed06b7757c2f1f960bfdde031c", "swift-coverage/reader.ts": "da559b67ecd1161dea70c980b5f98f2c55af3550f0714479100fa5e9e813625c", "swift-coverage/provenance.ts": "eb3b41ae8b58b48f6758f084800f188dfb1edb227e483abdd6b80cde66e849b9", "swift-package-manifest.ts": "29c2661be4b952101c9b9b8fd861560e6ce63b25dd4464f47475aaf72024f4fe", "swift-package.ts": "338cfef9a34a930206ac2e1a8a90b85c8d61f776d9a41e6445dc18e0c5385cdb", "swift-source-file.ts": "93fd659ed63a27b67f54a7c229a7ceb636dc9c59e68414920ba36cff1eda1f94", "swift-toolchain.ts": "25505683ca29a0b380413bf2a5026d4967eacf886e35bc11ece6e15317e5bb02", "home-paths.ts": "d1606390f0e8e50f0ff72544eadb3d49dfabf08e004c1218f2998c36fb8995dd", "xcode-header-search.ts": "f8c3d557b4eca5ddad32907545353eb7ad53b2ebd0969d9ed8f7275e109a13b1", "xcode-project.ts": "86f79e98323ec065e0e5195324c75ca608f490efbd95dcc25c53d5aa0b9aecc9", "xcode-target-members.ts": "ad7589132bffab265e8a10b64e24484fe88b4a2b1cc0ee19a97f151a002eca77", "xcode-json-project.ts": "41990ebbe4b488eef34e74c4608b4b48e5a5b299ba98ca7fbcfdfa0e77be63b6", "openstep-plist.ts": "74e6ce1dac80c9c318e0e9f5e3e8cd19a898a8820c36fc160609695bcb59dcd3" };
42
+ define_SWIFT_COVERAGE_SOURCE_DIGESTS_default = { "swift-coverage/indexdump.ts": "0d82d8eeb96bf377f409ea7e33274c341a710c0e071f6b6e17571a23d8d92412", "swift-coverage/indexing.ts": "633ccf19eec1f382a8847d0ee1dca42a2792a3c60aafd43622ed5152b09b8272", "swift-coverage/types.ts": "bd8fae54ea6c53e110cd8a5d7b57c1d532dd0166e09fdaea63c4f270c3780dd1", "swift-coverage/source.ts": "c151758a9f67631bc61473c375df0dc017da6902a34533b2cf4fc4fd7d19b6ee", "swift-coverage/package.ts": "1f0068be7461fa7c5a7a891faf318f305cbed2e94c19667ba76627f7e5be260b", "swift-coverage/xcode.ts": "65a500b806ce1c3a496de27f2e0ad77287c0f6795c618342c08af647f92af1fa", "swift-coverage/xcode-assets.ts": "d98d6294b359528f7733b26db6f80f554782354faa235605f9562be4ad98b8a3", "swift-coverage/xcode-asset-symbols.ts": "1b2a67733bc9d139b351466270205452a6172140bc25080d72619e2952c44671", "swift-coverage/xcode-bridging.ts": "33184be8c5daf6646aa5a1276a4e15531f1be27b7c26f56550e0fbb1fc678a11", "swift-coverage/xcode-packages.ts": "8e6020d17d24474150a5a50d042aca6261819ef75c79680a287a66f395909915", "swift-coverage/xcode-strings.ts": "f2dd4c7cd8ef77035184b0132909c2fa09fd20ed06b7757c2f1f960bfdde031c", "swift-coverage/reader.ts": "da559b67ecd1161dea70c980b5f98f2c55af3550f0714479100fa5e9e813625c", "swift-coverage/provenance.ts": "eb3b41ae8b58b48f6758f084800f188dfb1edb227e483abdd6b80cde66e849b9", "swift-package-manifest.ts": "29c2661be4b952101c9b9b8fd861560e6ce63b25dd4464f47475aaf72024f4fe", "swift-package.ts": "338cfef9a34a930206ac2e1a8a90b85c8d61f776d9a41e6445dc18e0c5385cdb", "swift-source-file.ts": "93fd659ed63a27b67f54a7c229a7ceb636dc9c59e68414920ba36cff1eda1f94", "swift-toolchain.ts": "25505683ca29a0b380413bf2a5026d4967eacf886e35bc11ece6e15317e5bb02", "home-paths.ts": "d1606390f0e8e50f0ff72544eadb3d49dfabf08e004c1218f2998c36fb8995dd", "xcode-header-search.ts": "f8c3d557b4eca5ddad32907545353eb7ad53b2ebd0969d9ed8f7275e109a13b1", "xcode-project.ts": "b6e04100805ba81f14d751383416fd4aab46901a6f94f5b62f831e66c28001c1", "xcode-target-members.ts": "d49af77a690cff481b38333b5f63f6600123b1bb57f410b0adb298b010d2047b", "xcode-json-project.ts": "41990ebbe4b488eef34e74c4608b4b48e5a5b299ba98ca7fbcfdfa0e77be63b6", "openstep-plist.ts": "74e6ce1dac80c9c318e0e9f5e3e8cd19a898a8820c36fc160609695bcb59dcd3" };
43
43
  }
44
44
  });
45
45
 
@@ -1580,8 +1580,20 @@ function xcodeTargetMemberVisitor(objects) {
1580
1580
  for (const id of refs) {
1581
1581
  const file = resolvePath(id);
1582
1582
  if (file === null) continue;
1583
- if (phase.isa === "PBXSourcesBuildPhase") visit3(file, "source");
1584
- else for (const inner of filesUnder(file)) visit3(inner, "resource");
1583
+ if (phase.isa === "PBXSourcesBuildPhase") {
1584
+ visit3(file, "source");
1585
+ continue;
1586
+ }
1587
+ const ref = objects[id];
1588
+ const type = isDict(ref) ? str(ref.lastKnownFileType) ?? str(ref.explicitFileType) ?? "" : "";
1589
+ const root = file.replace(/[\\/]+$/, "");
1590
+ const folder = FOLDER_REFERENCE.test(type) ? root.split(/[\\/]/).pop() : void 0;
1591
+ for (const inner of filesUnder(file))
1592
+ visit3(
1593
+ inner,
1594
+ "resource",
1595
+ folder && `${folder}/${inner.slice(root.length + 1).replaceAll("\\", "/")}`
1596
+ );
1585
1597
  }
1586
1598
  }
1587
1599
  }
@@ -1619,13 +1631,14 @@ function xcodeTargetMemberVisitor(objects) {
1619
1631
  }
1620
1632
  };
1621
1633
  }
1622
- var NEVER_MEMBER, BUNDLE_DIR;
1634
+ var NEVER_MEMBER, FOLDER_REFERENCE, BUNDLE_DIR;
1623
1635
  var init_xcode_target_members = __esm({
1624
1636
  "src/xcode-target-members.ts"() {
1625
1637
  "use strict";
1626
1638
  init_define_SWIFT_COVERAGE_SOURCE_DIGESTS();
1627
1639
  init_openstep_plist();
1628
1640
  NEVER_MEMBER = /(?:^|\/)(?:Info\.plist|[^/]+\.entitlements|[^/]+\.xcconfig|\.DS_Store)$/;
1641
+ FOLDER_REFERENCE = /^(?:folder|wrapper\.scnassets)$/;
1629
1642
  BUNDLE_DIR = /\.(xcassets|bundle|lproj|xcdatamodeld|scnassets|spriteatlas|rcproject|storyboardc|icon)$/;
1630
1643
  }
1631
1644
  });
@@ -10731,7 +10744,7 @@ async function workspaceExclusion(root, portable = false, linkedPackages = []) {
10731
10744
  listed.stdout.split("\0").filter(Boolean).map((entry) => entry.replace(/\/$/, ""))
10732
10745
  );
10733
10746
  const ignoreFiles = /* @__PURE__ */ new Map();
10734
- return (relative4) => {
10747
+ return (relative4, knownDirectory) => {
10735
10748
  const parts = relative4.split(import_node_path8.default.sep);
10736
10749
  const linked = linkedPackages.some(
10737
10750
  (directory2) => relative4.startsWith(directory2 + import_node_path8.default.sep)
@@ -10743,16 +10756,16 @@ async function workspaceExclusion(root, portable = false, linkedPackages = []) {
10743
10756
  }
10744
10757
  if (portable && relative4) {
10745
10758
  let excluded = false;
10746
- const isDirectory3 = import_node_fs10.default.lstatSync(import_node_path8.default.join(root, relative4)).isDirectory();
10759
+ const isDirectory3 = knownDirectory ?? import_node_fs10.default.lstatSync(import_node_path8.default.join(root, relative4)).isDirectory();
10747
10760
  for (let index = 0; index < parts.length; index++) {
10748
10761
  const directory2 = parts.slice(0, index).join(import_node_path8.default.sep);
10749
10762
  let rules2 = ignoreFiles.get(directory2);
10750
- if (!rules2) {
10751
- rules2 = (0, import_ignore.default)();
10763
+ if (rules2 === void 0) {
10752
10764
  const file = import_node_path8.default.join(root, directory2, ".gitignore");
10753
- if (import_node_fs10.default.existsSync(file)) rules2.add(import_node_fs10.default.readFileSync(file, "utf8"));
10765
+ rules2 = import_node_fs10.default.existsSync(file) ? (0, import_ignore.default)().add(import_node_fs10.default.readFileSync(file, "utf8")) : null;
10754
10766
  ignoreFiles.set(directory2, rules2);
10755
10767
  }
10768
+ if (!rules2) continue;
10756
10769
  const item = parts.slice(index).join("/");
10757
10770
  const result = rules2.test(isDirectory3 ? `${item}/` : item);
10758
10771
  if (result.ignored) excluded = true;
@@ -11042,6 +11055,302 @@ var init_plist = __esm({
11042
11055
  }
11043
11056
  });
11044
11057
 
11058
+ // src/ios-sdk-frameworks.json
11059
+ var ios_sdk_frameworks_default;
11060
+ var init_ios_sdk_frameworks = __esm({
11061
+ "src/ios-sdk-frameworks.json"() {
11062
+ ios_sdk_frameworks_default = {
11063
+ sdk: "iphonesimulator27.1",
11064
+ frameworks: [
11065
+ "ARKit",
11066
+ "AVFAudio",
11067
+ "AVFoundation",
11068
+ "AVKit",
11069
+ "AVRouting",
11070
+ "Accelerate",
11071
+ "Accessibility",
11072
+ "AccessoryLiveActivities",
11073
+ "AccessoryNotifications",
11074
+ "AccessorySetupKit",
11075
+ "AccessoryTransportExtension",
11076
+ "Accounts",
11077
+ "ActivityKit",
11078
+ "AdAttributionKit",
11079
+ "AdServices",
11080
+ "AdSupport",
11081
+ "AddressBook",
11082
+ "AddressBookUI",
11083
+ "AlarmKit",
11084
+ "AppClip",
11085
+ "AppIntents",
11086
+ "AppIntentsTypeSupport",
11087
+ "AppMigrationKit",
11088
+ "AppTrackingTransparency",
11089
+ "AssetsLibrary",
11090
+ "AudioToolbox",
11091
+ "AudioUnit",
11092
+ "AuthenticationServices",
11093
+ "AutomatedDeviceEnrollment",
11094
+ "AutomaticAssessmentConfiguration",
11095
+ "BackgroundAssets",
11096
+ "BackgroundTasks",
11097
+ "BrowserEngineCore",
11098
+ "BrowserEngineKit",
11099
+ "BrowserKit",
11100
+ "BusinessChat",
11101
+ "CFNetwork",
11102
+ "CallKit",
11103
+ "CarKey",
11104
+ "CarPlay",
11105
+ "Charts",
11106
+ "ClassKit",
11107
+ "ClassKitUI",
11108
+ "ClockKit",
11109
+ "CloudKit",
11110
+ "ColorSync",
11111
+ "Combine",
11112
+ "ComputeGraph",
11113
+ "ContactProvider",
11114
+ "Contacts",
11115
+ "ContactsUI",
11116
+ "CoreAudio",
11117
+ "CoreAudioKit",
11118
+ "CoreAudioTypes",
11119
+ "CoreBluetooth",
11120
+ "CoreData",
11121
+ "CoreFoundation",
11122
+ "CoreGraphics",
11123
+ "CoreHaptics",
11124
+ "CoreImage",
11125
+ "CoreLocation",
11126
+ "CoreLocationUI",
11127
+ "CoreMIDI",
11128
+ "CoreML",
11129
+ "CoreMedia",
11130
+ "CoreMotion",
11131
+ "CoreNFC",
11132
+ "CoreServices",
11133
+ "CoreSpotlight",
11134
+ "CoreTelephony",
11135
+ "CoreText",
11136
+ "CoreTransferable",
11137
+ "CoreVideo",
11138
+ "CreateMLComponents",
11139
+ "CryptoKit",
11140
+ "CryptoTokenKit",
11141
+ "DataDetection",
11142
+ "DeclaredAgeRange",
11143
+ "DeveloperToolsSupport",
11144
+ "DeviceActivity",
11145
+ "DeviceCheck",
11146
+ "DeviceDiscoveryExtension",
11147
+ "DeviceDiscoveryUI",
11148
+ "EnergyKit",
11149
+ "EventKit",
11150
+ "EventKitUI",
11151
+ "ExposureNotification",
11152
+ "ExtensionFoundation",
11153
+ "ExtensionKit",
11154
+ "ExternalAccessory",
11155
+ "FamilyControls",
11156
+ "FileProvider",
11157
+ "FileProviderUI",
11158
+ "FinanceKit",
11159
+ "FinanceKitUI",
11160
+ "Foundation",
11161
+ "FoundationModels",
11162
+ "GLKit",
11163
+ "GSS",
11164
+ "GameController",
11165
+ "GameKit",
11166
+ "GameSave",
11167
+ "GameplayKit",
11168
+ "GeoToolbox",
11169
+ "GroupActivities",
11170
+ "HealthKit",
11171
+ "HealthKitUI",
11172
+ "HomeKit",
11173
+ "IOKit",
11174
+ "IOSurface",
11175
+ "IdentityDocumentServices",
11176
+ "IdentityDocumentServicesUI",
11177
+ "IdentityLookup",
11178
+ "IdentityLookupUI",
11179
+ "ImageCaptureCore",
11180
+ "ImageIO",
11181
+ "ImagePlayground",
11182
+ "ImmersiveMediaSupport",
11183
+ "Intents",
11184
+ "IntentsUI",
11185
+ "JavaScriptCore",
11186
+ "LinkPresentation",
11187
+ "LinkSecurity",
11188
+ "LiveCommunicationKit",
11189
+ "LocalAuthentication",
11190
+ "LocalAuthenticationEmbeddedUI",
11191
+ "LockedCameraCapture",
11192
+ "ManagedApp",
11193
+ "ManagedAppDistribution",
11194
+ "ManagedSettings",
11195
+ "ManagedSettingsUI",
11196
+ "MapKit",
11197
+ "MarketplaceKit",
11198
+ "Matter",
11199
+ "MatterSupport",
11200
+ "MediaAccessibility",
11201
+ "MediaIntelligence",
11202
+ "MediaIntents",
11203
+ "MediaPlayer",
11204
+ "MediaToolbox",
11205
+ "MessageUI",
11206
+ "Messages",
11207
+ "Metal",
11208
+ "MetalKit",
11209
+ "MetalPerformancePrimitives",
11210
+ "MetalPerformanceShaders",
11211
+ "MetalPerformanceShadersGraph",
11212
+ "MetricKit",
11213
+ "MobileCoreServices",
11214
+ "ModelIO",
11215
+ "MultipeerConnectivity",
11216
+ "MusicKit",
11217
+ "MusicUnderstanding",
11218
+ "NaturalLanguage",
11219
+ "NearbyInteraction",
11220
+ "Network",
11221
+ "NetworkExtension",
11222
+ "NotificationCenter",
11223
+ "NowPlaying",
11224
+ "OSLog",
11225
+ "OpenAL",
11226
+ "OpenGLES",
11227
+ "PDFKit",
11228
+ "PHASE",
11229
+ "PaperKit",
11230
+ "PassKit",
11231
+ "PencilKit",
11232
+ "PermissionKit",
11233
+ "Photos",
11234
+ "PhotosUI",
11235
+ "ProximityReader",
11236
+ "PushKit",
11237
+ "PushToTalk",
11238
+ "QuartzCore",
11239
+ "QuickLook",
11240
+ "QuickLookThumbnailing",
11241
+ "RealityFoundation",
11242
+ "RealityKit",
11243
+ "RelevanceKit",
11244
+ "ReplayKit",
11245
+ "RoomPlan",
11246
+ "SafariServices",
11247
+ "SafetyKit",
11248
+ "SceneKit",
11249
+ "ScreenTime",
11250
+ "SecureElementCredential",
11251
+ "Security",
11252
+ "SecurityUI",
11253
+ "SensitiveContentAnalysis",
11254
+ "SensorKit",
11255
+ "ServicesAccountLinking",
11256
+ "SharedWithYou",
11257
+ "SharedWithYouCore",
11258
+ "ShazamKit",
11259
+ "Social",
11260
+ "SoundAnalysis",
11261
+ "Speech",
11262
+ "SpriteKit",
11263
+ "StateReporting",
11264
+ "StoreKit",
11265
+ "SuggestedActions",
11266
+ "SwiftData",
11267
+ "SwiftUI",
11268
+ "SwiftUICore",
11269
+ "Symbols",
11270
+ "SystemConfiguration",
11271
+ "SystemExtensions",
11272
+ "TabularData",
11273
+ "TelephonyMessagingKit",
11274
+ "TipKit",
11275
+ "TouchController",
11276
+ "Translation",
11277
+ "TranslationUIProvider",
11278
+ "TrustInsights",
11279
+ "Twitter",
11280
+ "UIKit",
11281
+ "USDKit",
11282
+ "UniformTypeIdentifiers",
11283
+ "UserNotifications",
11284
+ "UserNotificationsUI",
11285
+ "VideoSubscriberAccount",
11286
+ "VideoToolbox",
11287
+ "Vision",
11288
+ "VisionKit",
11289
+ "WatchConnectivity",
11290
+ "WeatherKit",
11291
+ "WebKit",
11292
+ "WiFiAware",
11293
+ "WidgetKit",
11294
+ "WorkoutKit",
11295
+ "_AVKit_SwiftUI",
11296
+ "_AdAttributionKit_StoreKit",
11297
+ "_AppIntents_HealthKit",
11298
+ "_AppIntents_SwiftUI",
11299
+ "_AppIntents_UIKit",
11300
+ "_AuthenticationServices_SwiftUI",
11301
+ "_Contacts_AppIntents",
11302
+ "_CoreData_CloudKit",
11303
+ "_CoreLocationUI_SwiftUI",
11304
+ "_CoreNFC_UIKit",
11305
+ "_CoreSpotlight_FoundationModels",
11306
+ "_DataDetection_SwiftUI",
11307
+ "_DeviceActivity_SwiftUI",
11308
+ "_DeviceDiscoveryUI_SwiftUI",
11309
+ "_FinanceKit_AppIntents",
11310
+ "_FoundationModels_SwiftUI",
11311
+ "_FoundationModels_UIKit",
11312
+ "_GameController_SwiftUI",
11313
+ "_GeoToolbox_AppIntents",
11314
+ "_GroupActivities_UIKit",
11315
+ "_HomeKit_SwiftUI",
11316
+ "_Intents_TipKit",
11317
+ "_LinkPresentation_AppIntents",
11318
+ "_LocationEssentials",
11319
+ "_MapKit_SwiftUI",
11320
+ "_MarketplaceKit_UIKit",
11321
+ "_MediaIntents_AppIntents",
11322
+ "_MediaPlayer_AppIntents",
11323
+ "_MusicKit_SwiftUI",
11324
+ "_NowPlaying_AppIntents",
11325
+ "_PassKit_SwiftUI",
11326
+ "_PermissionKit_SwiftUI",
11327
+ "_PermissionKit_UIKit",
11328
+ "_PhotosUI_SwiftUI",
11329
+ "_PhotosUI_WidgetKit",
11330
+ "_Photos_AppIntents",
11331
+ "_QuickLook_SwiftUI",
11332
+ "_RealityKit_ComputeGraph",
11333
+ "_RealityKit_SwiftUI",
11334
+ "_RelevanceKit_MapKit",
11335
+ "_SceneKit_SwiftUI",
11336
+ "_SecureElementCredential_SwiftUI",
11337
+ "_SecureElementCredential_UIKit",
11338
+ "_SharedWithYou_AppIntents",
11339
+ "_SpriteKit_SwiftUI",
11340
+ "_StoreKit_SwiftUI",
11341
+ "_SwiftData_CoreData",
11342
+ "_SwiftData_SwiftUI",
11343
+ "_Translation_SwiftUI",
11344
+ "_USDKit_RealityKit",
11345
+ "_UserNotifications_AppIntents",
11346
+ "_WebKit_SwiftUI",
11347
+ "_WorkoutKit_SwiftUI",
11348
+ "iAd"
11349
+ ]
11350
+ };
11351
+ }
11352
+ });
11353
+
11045
11354
  // src/prepared-xcode-phases.ts
11046
11355
  function relativeFile(root, file) {
11047
11356
  const relative4 = import_node_path12.default.relative(root, file);
@@ -12974,12 +13283,13 @@ function planAssetSymbols(resources, root, settings) {
12974
13283
  "2": ["ipad"],
12975
13284
  "1,2": ["iphone", "ipad"],
12976
13285
  "1,7": ["iphone"],
13286
+ "1,3,7": ["iphone"],
12977
13287
  "1,2,6": ["iphone", "ipad"],
12978
13288
  "1,2,7": ["iphone", "ipad"]
12979
13289
  }[families];
12980
13290
  if (!devices)
12981
13291
  return unknown2(
12982
- `Generated asset symbols are proven only for TARGETED_DEVICE_FAMILY 1, 2, 1,2, 1,7, 1,2,6 or 1,2,7; this target resolves to "${families}".`
13292
+ `Generated asset symbols are proven only for TARGETED_DEVICE_FAMILY 1, 2, 1,2, 1,7, 1,3,7, 1,2,6 or 1,2,7; this target resolves to "${families}".`
12983
13293
  );
12984
13294
  const plan = {
12985
13295
  catalogs: catalogs.map((path99) => ({
@@ -24937,6 +25247,7 @@ async function runWasmOpt(file, output2, skipPasses, binary2) {
24937
25247
  const result = await (0, import_wasm_opt.wasmOpt)(
24938
25248
  [
24939
25249
  "-Oz",
25250
+ ...KEEP_WASM_NAMES ? ["-g"] : [],
24940
25251
  ...skipPasses.flatMap((pass) => ["--skip-pass", pass]),
24941
25252
  ...FEATURES.map((feature) => `--enable-${feature}`),
24942
25253
  file,
@@ -24970,7 +25281,7 @@ async function installWasmOpt() {
24970
25281
  async function optimizeWasm(file, output2, skipPasses = []) {
24971
25282
  await runWasmOpt(file, output2, skipPasses, await installWasmOpt());
24972
25283
  }
24973
- var import_node_fs33, import_node_path32, import_wasm_opt, FEATURES, WASM_OPTIMIZE_IDENTITY, PINNED_BINARYEN_VERSION, BINARYEN_RELEASES;
25284
+ var import_node_fs33, import_node_path32, import_wasm_opt, FEATURES, KEEP_WASM_NAMES, WASM_OPTIMIZE_IDENTITY, PINNED_BINARYEN_VERSION, BINARYEN_RELEASES;
24974
25285
  var init_wasm_optimize = __esm({
24975
25286
  "src/wasm-optimize.ts"() {
24976
25287
  "use strict";
@@ -24993,7 +25304,8 @@ var init_wasm_optimize = __esm({
24993
25304
  "reference-types",
24994
25305
  "sign-ext"
24995
25306
  ];
24996
- WASM_OPTIMIZE_IDENTITY = `wasm-opt ${import_wasm_opt.BINARYEN_VERSION} -Oz ${FEATURES.join(",")}`;
25307
+ KEEP_WASM_NAMES = process.env.PEACH_SWIFT_NAMES === "1";
25308
+ WASM_OPTIMIZE_IDENTITY = `wasm-opt ${import_wasm_opt.BINARYEN_VERSION} -Oz ${FEATURES.join(",")}${KEEP_WASM_NAMES ? " -g" : ""}`;
24997
25309
  PINNED_BINARYEN_VERSION = "132";
24998
25310
  BINARYEN_RELEASES = /* @__PURE__ */ new Map([
24999
25311
  [
@@ -25902,6 +26214,17 @@ function processTable(pid) {
25902
26214
  );
25903
26215
  }
25904
26216
  }
26217
+ async function processTableWithRetry(pid, signal) {
26218
+ for (let attempt = 1; ; attempt++) {
26219
+ try {
26220
+ return processTable(pid);
26221
+ } catch (error) {
26222
+ if (attempt >= INSPECT_ATTEMPTS) throw error;
26223
+ await pause(POLL_MS * attempt, signal);
26224
+ signal?.throwIfAborted();
26225
+ }
26226
+ }
26227
+ }
25905
26228
  function sameProcess(row, identity2) {
25906
26229
  return row.pid === identity2.pid && Math.abs(row.start - identity2.start) <= START_TOLERANCE_MS;
25907
26230
  }
@@ -25976,7 +26299,11 @@ async function withSwiftRootLock(root, work, signal, wait = true) {
25976
26299
  );
25977
26300
  (0, import_node_fs39.mkdirSync)(directory2, { recursive: true });
25978
26301
  const token = (0, import_node_crypto19.randomUUID)();
25979
- const owner = JSON.stringify(ownIdentity(process.pid));
26302
+ const ownRow = (await processTableWithRetry(process.pid, signal)).find(
26303
+ (candidate) => candidate.pid === process.pid && !candidate.zombie
26304
+ );
26305
+ if (!ownRow) throw new Error(`swift root lock cannot find process ${process.pid}`);
26306
+ const owner = JSON.stringify({ pid: process.pid, start: ownRow.start });
25980
26307
  const pending = import_node_path37.default.join(directory2, `pending.${token}`);
25981
26308
  let held = 0;
25982
26309
  for (; ; ) {
@@ -25985,15 +26312,15 @@ async function withSwiftRootLock(root, work, signal, wait = true) {
25985
26312
  const current2 = newest > 0 ? readGeneration(directory2, newest) : null;
25986
26313
  if (newest > 0 && !current2) continue;
25987
26314
  if (current2 && !current2.released) {
25988
- const owner2 = processTable(current2.holder.pid);
25989
- if (owner2.some((row) => !row.zombie && sameProcess(row, current2.holder))) {
26315
+ const holder = await processTableWithRetry(current2.holder.pid, signal);
26316
+ if (holder.some((row) => !row.zombie && sameProcess(row, current2.holder))) {
25990
26317
  if (!wait) return void 0;
25991
26318
  await pause(POLL_MS, signal);
25992
26319
  continue;
25993
26320
  }
25994
26321
  const children2 = readChildren(directory2, newest);
25995
26322
  if (children2.length) {
25996
- const table = processTable();
26323
+ const table = await processTableWithRetry(void 0, signal);
25997
26324
  if (children2.some((child) => groupAlive(table, child))) {
25998
26325
  if (!wait) return void 0;
25999
26326
  await pause(POLL_MS, signal);
@@ -26068,7 +26395,7 @@ async function withSwiftRootLock(root, work, signal, wait = true) {
26068
26395
  (0, import_node_fs39.writeFileSync)(import_node_path37.default.join(directory2, name(held, "released")), "");
26069
26396
  }
26070
26397
  }
26071
- var import_node_child_process21, import_node_crypto19, import_node_fs39, import_node_os10, import_node_path37, POLL_MS, START_TOLERANCE_MS, name;
26398
+ var import_node_child_process21, import_node_crypto19, import_node_fs39, import_node_os10, import_node_path37, POLL_MS, INSPECT_ATTEMPTS, START_TOLERANCE_MS, name;
26072
26399
  var init_swift_root_lock = __esm({
26073
26400
  "src/swift-root-lock.ts"() {
26074
26401
  "use strict";
@@ -26081,6 +26408,7 @@ var init_swift_root_lock = __esm({
26081
26408
  init_process_group();
26082
26409
  init_process_table();
26083
26410
  POLL_MS = 250;
26411
+ INSPECT_ATTEMPTS = 5;
26084
26412
  START_TOLERANCE_MS = 2e3;
26085
26413
  name = (number3, suffix) => `${String(number3).padStart(12, "0")}.${suffix}`;
26086
26414
  }
@@ -27045,6 +27373,7 @@ ${release}
27045
27373
  `);
27046
27374
  hash.update(compilerSourceDigest);
27047
27375
  if (input.oneModule) hash.update("one-module\n");
27376
+ if (KEEP_WASM_NAMES) hash.update("names\n");
27048
27377
  hash.update(swiftModuleDigest(moduleRoot));
27049
27378
  if (input.optimize) hash.update(`optimize
27050
27379
  ${WASM_OPTIMIZE_IDENTITY}
@@ -27156,7 +27485,14 @@ function toolsetOrdersLibcxxBeforeDarwinOverlay(options) {
27156
27485
  return libcxx >= 0 && overlay > libcxx;
27157
27486
  }
27158
27487
  function emitSwiftPackageManifest(args) {
27159
- const { targets, siblings, moduleRoot, oneModule, spriteKit, distribution } = args;
27488
+ const {
27489
+ targets,
27490
+ siblings,
27491
+ moduleRoot,
27492
+ oneModule,
27493
+ gameProducts: gameProducts2 = [],
27494
+ distribution
27495
+ } = args;
27160
27496
  const prebuilt = args.prebuilt;
27161
27497
  const linkedObjects = Boolean(distribution || prebuilt);
27162
27498
  const cxxFlagsFor = (flags) => args.deferDarwinOverlay ? withoutWasmOverlayIsystem(flags) : flags;
@@ -27185,9 +27521,8 @@ function emitSwiftPackageManifest(args) {
27185
27521
  for (const name3 of [...siblings.values()].flat())
27186
27522
  if (OPTIONAL_FRAMEWORKS.has(name3) && !targets.some((target) => target.name === name3))
27187
27523
  reach(name3);
27188
- if (spriteKit) {
27189
- for (const name3 of ["SpriteKit", "PeachBox2D", "simd", "GLKit"]) reach(name3);
27190
- }
27524
+ for (const product of gameProducts2)
27525
+ for (const name3 of GAME_REACH[product] ?? []) reach(name3);
27191
27526
  let distributionLinkPath;
27192
27527
  const distributionLink = args.distributionLink;
27193
27528
  if (distribution && distributionLink) {
@@ -27210,7 +27545,7 @@ function emitSwiftPackageManifest(args) {
27210
27545
  (object6) => !isProvider(object6) && !replacedObjects.has(object6)
27211
27546
  );
27212
27547
  const objects = available.filter(
27213
- (object6) => !targets.some((target) => object6.startsWith(`lib/${target.name}-`)) && [...OPTIONAL_FRAMEWORKS, "SpriteKit", "PeachBox2D"].every(
27548
+ (object6) => !targets.some((target) => object6.startsWith(`lib/${target.name}-`)) && [...OPTIONAL_FRAMEWORKS, ...GAME_FAMILY, "PeachBox2D"].every(
27214
27549
  (name3) => !object6.startsWith(`lib/${name3}-`) || reachedFrameworks.has(name3)
27215
27550
  )
27216
27551
  );
@@ -27373,7 +27708,7 @@ function emitSwiftPackageManifest(args) {
27373
27708
  ...linkedObjects || clang && !target.executable ? [] : [
27374
27709
  '.product(name: "SwiftUI", package: "sootsim-swift")',
27375
27710
  ...oneModule ? [ONE_PRODUCT] : [],
27376
- ...spriteKit ? [SPRITEKIT_PRODUCT] : []
27711
+ ...gameProducts2.map(gameProduct)
27377
27712
  ],
27378
27713
  ...(siblings.get(target.name) ?? []).flatMap(
27379
27714
  (dependency) => clang && // textual native headers can include one another without imposing
@@ -27405,7 +27740,7 @@ function emitSwiftPackageManifest(args) {
27405
27740
  .unsafeFlags(${flagArray(`[
27406
27741
  ${REACTOR_FLAG}${executableLinkFlags(args.root)} "-Xlinker", "--export-if-defined=__main_argc_argv"${library},
27407
27742
  ]`)}),
27408
- .unsafeFlags(["-Xlinker", "--strip-all"], .when(configuration: .release)),
27743
+ ${KEEP_WASM_NAMES ? "" : '.unsafeFlags(["-Xlinker", "--strip-all"], .when(configuration: .release)),'}
27409
27744
  ]` : librarySettings.length > 0 ? `,
27410
27745
  linkerSettings: [${librarySettings.join(", ")}]` : "";
27411
27746
  const cDefines = macroSettings(target.cDefines);
@@ -29138,8 +29473,8 @@ ${swiftProjectFilesProblems(input.projectFiles).join("\n")}`
29138
29473
  const moduleName2 = swiftTargetModuleName(name3);
29139
29474
  const originalMap = originalMaps.get(moduleName2);
29140
29475
  const stagedMap = sourceModuleMaps.get(moduleName2);
29141
- const originalPath = originalMap ? import_node_path41.default.join(layout2.root, originalMap) : stagedMap?.path;
29142
- const originalContents = originalMap ? input.files[originalMap] : stagedMap?.contents;
29476
+ const originalPath = stagedMap?.path ?? (originalMap ? import_node_path41.default.join(layout2.root, originalMap) : void 0);
29477
+ const originalContents = stagedMap?.contents ?? (originalMap && input.files[originalMap]);
29143
29478
  const originalTokens = originalContents ? moduleMapTokens(originalContents) : [];
29144
29479
  if (originalPath && originalTokens.some(
29145
29480
  (token, index) => token === "module" && (originalTokens[index + 1] === "Swift" || originalTokens[index + 1] === `${moduleName2}.Swift`)
@@ -29414,14 +29749,17 @@ module ${moduleName2}.Swift {
29414
29749
  manifest = manifest.replace(product, `${product}
29415
29750
  ${ONE_PRODUCT},`).replace(flags, `${flags}${ONE_IMPLICIT_FLAGS}`);
29416
29751
  }
29417
- if (importsSpriteKit(input.files)) {
29752
+ const games = gameProducts(input.files);
29753
+ if (games.length > 0) {
29418
29754
  const anchor = '.product(name: "CoreLocation", package: "sootsim-swift"),';
29419
29755
  if (!manifest.includes(anchor))
29420
29756
  throw new Error(
29421
- "scripts/contrast-app-Package.swift lost the line the SpriteKit product links at"
29757
+ "scripts/contrast-app-Package.swift lost the line the game products link at"
29422
29758
  );
29423
- manifest = manifest.replace(anchor, `${anchor}
29424
- ${SPRITEKIT_PRODUCT},`);
29759
+ manifest = manifest.replace(
29760
+ anchor,
29761
+ [anchor, ...games.map((name3) => `${gameProduct(name3)},`)].join("\n ")
29762
+ );
29425
29763
  }
29426
29764
  files2.set(import_node_path41.default.join(layout2.root, "Package.swift"), manifest + moduleFiles);
29427
29765
  } else {
@@ -29536,7 +29874,7 @@ module ${moduleName2}.Swift {
29536
29874
  siblings: moduleSiblings,
29537
29875
  moduleRoot,
29538
29876
  oneModule: input.oneModule,
29539
- spriteKit: importsSpriteKit(input.files),
29877
+ gameProducts: gameProducts(input.files),
29540
29878
  distribution: distribution ?? void 0,
29541
29879
  moduleExcludes,
29542
29880
  deferDarwinOverlay: native.size > 0 && toolsetOrdersLibcxxBeforeDarwinOverlay(
@@ -29935,14 +30273,9 @@ function linkedFrameworkTargets(moduleRoot, input) {
29935
30273
  ))
29936
30274
  reach(match[1]);
29937
30275
  }
29938
- if (importsSpriteKit(input.files))
29939
- for (const name3 of ["SpriteKit", "PeachBox2D", "simd", "GLKit"]) reach(name3);
29940
- const wanted = [
29941
- "PeachApp",
29942
- ...input.oneModule ? ["One"] : [],
29943
- ...importsSpriteKit(input.files) ? ["SpriteKit"] : [],
29944
- ...reached
29945
- ];
30276
+ const games = gameProducts(input.files);
30277
+ for (const product of games) for (const name3 of GAME_REACH[product] ?? []) reach(name3);
30278
+ const wanted = ["PeachApp", ...input.oneModule ? ["One"] : [], ...games, ...reached];
29946
30279
  const linked = [...new Set(wanted)].filter((name3) => libraries.has(name3));
29947
30280
  if (!linked.includes("PeachApp"))
29948
30281
  throw new Error("swift-compile: the framework package declares no PeachApp library");
@@ -30845,7 +31178,7 @@ function compileSwiftProjectOnce(input, options) {
30845
31178
  options.signal
30846
31179
  );
30847
31180
  }
30848
- var import_node_child_process23, import_node_crypto20, import_node_fs42, import_node_os11, import_node_path41, v5, WASM_TRIPLE, SWIFTPM_PROGRESS, SWIFTPM_NOISE, SWIFT_BUILDER_TRANSPORT_MARGIN_MS, SWIFT_BUILDER_DEFAULT_COMPILE_MS, clangInterfaceHeader, swiftInterfaceDeclarations, linkedModuleDigests, SYSTEM_MODULE_LIBRARIES, SYSTEM_MODULE_IMPORT, OPTIONAL_FRAMEWORK_DEPENDENCIES, OPTIONAL_FRAMEWORKS, SWIFT_IMPORT, kleeneNot, kleeneAnd, kleeneOr, sdkPaths, availableModules, sdkOverlayFrameworks, DISTRIBUTION_CLANG_MODULES, ONE_PRODUCT, SPRITEKIT_PRODUCT, importsSpriteKit, FOUNDATION_IMPLICIT_MODULES, FOUNDATION_IMPLICIT_FLAGS, ONE_IMPLICIT_FLAGS, executableLinkFlags, darwinRecordsRegion, REACTOR_FLAG, MULTI_MANIFEST_VERSION, SWIFT_HEADER_PRODUCTS_TARGET, compilerSourceDigest, nativeCxxCompilerFlags, cFlagArray, cxxFlagArray, DIRECTIVE, OS_IOS, DELEGATE_CLASS, FOUNDATION_NETWORKING_TYPES, FOUNDATION_OVERLAY_TYPES, FOUNDATION_OVERLAY_GLOBALS, CORE_FOUNDATION_OVERLAY_GLOBALS, CORE_FOUNDATION_GEOMETRY_TYPES, CORE_FOUNDATION_GRAPHICS_TYPES, CORE_FOUNDATION_HANDLE_IMPORTS, emptyMacroEnvironment, wasmMacroEnvironment, HIDDEN_UNITS, LIBXML_REFERENCE, LIBXML_SOURCE, ROOT_LOCKS, host, rootLocks, SHARED_ARTIFACT_BUDGET_BYTES, SHARED_ARTIFACT_GRACE_MS, RETIRED_PREFIX, retainedArtifacts, FRAMEWORK_LINK_TARGET, SWIFT_LINK_STAMP, SWIFT_FRAMEWORK_SLOTS, SWIFT_FRAMEWORK_SLOT_KEY, SWIFT_FRAMEWORK_SLOT_ORIGIN;
31181
+ var import_node_child_process23, import_node_crypto20, import_node_fs42, import_node_os11, import_node_path41, v5, WASM_TRIPLE, SWIFTPM_PROGRESS, SWIFTPM_NOISE, SWIFT_BUILDER_TRANSPORT_MARGIN_MS, SWIFT_BUILDER_DEFAULT_COMPILE_MS, clangInterfaceHeader, swiftInterfaceDeclarations, linkedModuleDigests, SYSTEM_MODULE_LIBRARIES, SYSTEM_MODULE_IMPORT, OPTIONAL_FRAMEWORK_DEPENDENCIES, OPTIONAL_FRAMEWORKS, SWIFT_IMPORT, kleeneNot, kleeneAnd, kleeneOr, sdkPaths, availableModules, sdkOverlayFrameworks, DISTRIBUTION_CLANG_MODULES, ONE_PRODUCT, GAME_FAMILY, gameProducts, gameProduct, GAME_REACH, FOUNDATION_IMPLICIT_MODULES, FOUNDATION_IMPLICIT_FLAGS, ONE_IMPLICIT_FLAGS, executableLinkFlags, darwinRecordsRegion, REACTOR_FLAG, MULTI_MANIFEST_VERSION, SWIFT_HEADER_PRODUCTS_TARGET, compilerSourceDigest, nativeCxxCompilerFlags, cFlagArray, cxxFlagArray, DIRECTIVE, OS_IOS, DELEGATE_CLASS, FOUNDATION_NETWORKING_TYPES, FOUNDATION_OVERLAY_TYPES, FOUNDATION_OVERLAY_GLOBALS, CORE_FOUNDATION_OVERLAY_GLOBALS, CORE_FOUNDATION_GEOMETRY_TYPES, CORE_FOUNDATION_GRAPHICS_TYPES, CORE_FOUNDATION_HANDLE_IMPORTS, emptyMacroEnvironment, wasmMacroEnvironment, HIDDEN_UNITS, LIBXML_REFERENCE, LIBXML_SOURCE, ROOT_LOCKS, host, rootLocks, SHARED_ARTIFACT_BUDGET_BYTES, SHARED_ARTIFACT_GRACE_MS, RETIRED_PREFIX, retainedArtifacts, FRAMEWORK_LINK_TARGET, SWIFT_LINK_STAMP, SWIFT_FRAMEWORK_SLOTS, SWIFT_FRAMEWORK_SLOT_KEY, SWIFT_FRAMEWORK_SLOT_ORIGIN;
30849
31182
  var init_swift_compile = __esm({
30850
31183
  "src/swift-compile.ts"() {
30851
31184
  "use strict";
@@ -30919,7 +31252,8 @@ var init_swift_compile = __esm({
30919
31252
  PeachCFNetwork: [],
30920
31253
  JavaScriptCore: ["PeachJavaScriptCore"],
30921
31254
  PeachJavaScriptCore: [],
30922
- GameplayKit: [],
31255
+ // GameplayKit names SpriteKit and SceneKit nodes, as on iOS
31256
+ GameplayKit: ["SpriteKit", "SceneKit", "PeachBox2D", "simd", "GLKit"],
30923
31257
  simd: [],
30924
31258
  ModelIO: ["simd"],
30925
31259
  GLKit: ["ModelIO"],
@@ -31031,10 +31365,21 @@ int EXUpdatesApplyBSDiffPatch(const char * _Nonnull oldFilePath,
31031
31365
  }
31032
31366
  ];
31033
31367
  ONE_PRODUCT = '.product(name: "One", package: "sootsim-swift")';
31034
- SPRITEKIT_PRODUCT = '.product(name: "SpriteKit", package: "sootsim-swift")';
31035
- importsSpriteKit = (files2) => Object.entries(files2).some(
31036
- ([file, contents]) => file.endsWith(".swift") && swiftImportNames(contents).includes("SpriteKit")
31037
- );
31368
+ GAME_FAMILY = ["SpriteKit", "SceneKit"];
31369
+ gameProducts = (files2) => {
31370
+ const imported = new Set(
31371
+ Object.entries(files2).flatMap(
31372
+ ([file, contents]) => file.endsWith(".swift") ? swiftImportNames(contents) : []
31373
+ )
31374
+ );
31375
+ if (imported.has("SceneKit")) return [...GAME_FAMILY];
31376
+ return imported.has("SpriteKit") ? ["SpriteKit"] : [];
31377
+ };
31378
+ gameProduct = (name3) => `.product(name: "${name3}", package: "sootsim-swift")`;
31379
+ GAME_REACH = {
31380
+ SpriteKit: ["SpriteKit", "PeachBox2D", "simd", "GLKit"],
31381
+ SceneKit: ["SceneKit"]
31382
+ };
31038
31383
  FOUNDATION_IMPLICIT_MODULES = [
31039
31384
  "PeachObjC",
31040
31385
  "Dispatch",
@@ -31061,7 +31406,7 @@ int EXUpdatesApplyBSDiffPatch(const char * _Nonnull oldFilePath,
31061
31406
  REACTOR_FLAG = '"-Xclang-linker", "-mexec-model=reactor",\n';
31062
31407
  MULTI_MANIFEST_VERSION = 68;
31063
31408
  SWIFT_HEADER_PRODUCTS_TARGET = "PeachHeaderProducts";
31064
- compilerSourceDigest = true ? "2e9f321a97a408a1b3b8b7d85bbcfb108f0761ed9726b832a3c6c2cc52102806" : swiftCompilerSourceDigest(__sootsim_import_meta_dirname);
31409
+ compilerSourceDigest = true ? "ae9e08389e6ab1901846342a7b347d7c10f8074172cf5d4d6505f7e955879ad4" : swiftCompilerSourceDigest(__sootsim_import_meta_dirname);
31065
31410
  nativeCxxCompilerFlags = ["-fno-cxx-modules"];
31066
31411
  cFlagArray = (flags) => JSON.stringify(withoutGlogModuleMap(flags));
31067
31412
  cxxFlagArray = (flags) => JSON.stringify([...nativeCxxCompilerFlags, ...withoutGlogModuleMap(flags)]);
@@ -31392,8 +31737,6 @@ int EXUpdatesApplyBSDiffPatch(const char * _Nonnull oldFilePath,
31392
31737
  "NSURLProtectionSpaceHTTPS",
31393
31738
  "NSURLProtectionSpaceHTTPSProxy",
31394
31739
  "NSURLProtectionSpaceSOCKSProxy",
31395
- "NSURLSessionDownloadTaskResumeData",
31396
- "NSURLSessionTransferSizeUnknown",
31397
31740
  "NSURLSessionUploadTaskResumeData",
31398
31741
  "NSUTF16BigEndianStringEncoding",
31399
31742
  "NSUTF16LittleEndianStringEncoding",
@@ -33714,6 +34057,7 @@ function targetMembers(ref, settings, options, settingKeys, projectInputs) {
33714
34057
  const allSources = /* @__PURE__ */ new Set();
33715
34058
  const headers = /* @__PURE__ */ new Set();
33716
34059
  const resources = /* @__PURE__ */ new Set();
34060
+ const resourceNames = {};
33717
34061
  const scriptForOutput = /* @__PURE__ */ new Map();
33718
34062
  const copiedFiles = [];
33719
34063
  let generatedInfoPlist = false;
@@ -33883,13 +34227,14 @@ ${output2}`
33883
34227
  xcodePathResolver(project2.objects, project2.projectDir, import_node_path46.default.join, settings),
33884
34228
  (file) => isDirectory(file) ? walkFiles(file) : import_node_fs46.default.existsSync(file) ? [file] : [],
33885
34229
  import_node_path46.default.join,
33886
- (file, kind) => {
34230
+ (file, kind, bundleName) => {
33887
34231
  if (kind === "header") {
33888
34232
  headers.add(file);
33889
34233
  return;
33890
34234
  }
33891
34235
  if (kind === "resource") {
33892
34236
  resources.add(file);
34237
+ if (bundleName) resourceNames[file] = bundleName;
33893
34238
  return;
33894
34239
  }
33895
34240
  if (!import_node_fs46.default.existsSync(file)) {
@@ -34013,6 +34358,7 @@ ${output2}`
34013
34358
  return {
34014
34359
  sources: [...sources].sort(),
34015
34360
  resources: [...resources].sort(),
34361
+ resourceNames,
34016
34362
  copiedFiles,
34017
34363
  generatedInfoPlist,
34018
34364
  allSources: [...allSources].sort(),
@@ -35217,10 +35563,14 @@ function readXcodeAppTarget(input, targetName, configurationName, options = {})
35217
35563
  byProduct.has(import_node_path46.default.basename(rawPath)))
35218
35564
  continue;
35219
35565
  const resolved = fileId ? project2.resolvePath(fileId) : null;
35220
- if (fileId && resolved !== null && !import_node_fs46.default.existsSync(resolved))
35221
- throw new Error(
35222
- `${str(target.name) ?? "target"}: linked framework ${name3} (${fileId}) points at missing ${resolved} in ${project2.projectFile}`
35223
- );
35566
+ if (fileId && resolved !== null && !import_node_fs46.default.existsSync(resolved)) {
35567
+ if (!ios_sdk_frameworks_default.frameworks.includes(name3))
35568
+ throw new Error(
35569
+ `${str(target.name) ?? "target"}: linked framework ${name3} (${fileId}) points at missing ${resolved} in ${project2.projectFile}`
35570
+ );
35571
+ sdkFrameworks.add(name3);
35572
+ continue;
35573
+ }
35224
35574
  if (!binaryFrameworks.get(name3)) binaryFrameworks.set(name3, resolved);
35225
35575
  }
35226
35576
  }
@@ -35297,7 +35647,12 @@ function readXcodeAppTarget(input, targetName, configurationName, options = {})
35297
35647
  ...linkedProducts.flatMap(
35298
35648
  ({ source }) => source.kind === "local" && import_node_fs46.default.existsSync(source.dir) ? [source.dir] : []
35299
35649
  ),
35300
- ...new Set(podSourceDirs)
35650
+ ...new Set(podSourceDirs),
35651
+ // a target's own files may sit beside the project, such as an asset
35652
+ // catalog one folder up, and xcode builds them from there
35653
+ ...new Set(
35654
+ [...module2.allSources, ...module2.resources].filter((file) => import_node_fs46.default.existsSync(file)).map((file) => import_node_path46.default.dirname(file))
35655
+ )
35301
35656
  ].map((dir) => import_node_fs46.default.realpathSync.native(dir))
35302
35657
  ),
35303
35658
  projectFiles: [
@@ -35342,6 +35697,7 @@ var init_xcode_project = __esm({
35342
35697
  import_node_fs46 = __toESM(require("node:fs"), 1);
35343
35698
  import_node_path46 = __toESM(require("node:path"), 1);
35344
35699
  import_plist2 = __toESM(require("plist"), 1);
35700
+ init_ios_sdk_frameworks();
35345
35701
  init_is_record();
35346
35702
  init_native_app_identity();
35347
35703
  init_prepared_xcode_phases();
@@ -36452,6 +36808,7 @@ function autolinkerJson(command, output2) {
36452
36808
  }
36453
36809
  }
36454
36810
  async function cliAdvertises(cli, args, token, appRoot, signal) {
36811
+ const started = Date.now();
36455
36812
  const { stdout, stderr } = await run5("node", [cli, ...args], {
36456
36813
  cwd: appRoot,
36457
36814
  signal,
@@ -36461,7 +36818,7 @@ async function cliAdvertises(cli, args, token, appRoot, signal) {
36461
36818
  });
36462
36819
  if (!stdout.trim())
36463
36820
  throw new Error(
36464
- `${cli} ${args.join(" ")} returned empty help output${stderr.trim() ? `: ${stderr.trim()}` : ""}`
36821
+ `${cli} ${args.join(" ")} exited 0 after ${Date.now() - started}ms with empty help output${stderr.trim() ? `: ${stderr.trim()}` : ""}`
36465
36822
  );
36466
36823
  return stdout.includes(token);
36467
36824
  }
@@ -37722,7 +38079,7 @@ async function hashWorkspaceInputs(app, everyByte, signal, sourceOnly = false, p
37722
38079
  signal?.throwIfAborted();
37723
38080
  const file = import_node_path58.default.join(directory2, entry.name);
37724
38081
  const relative4 = import_node_path58.default.relative(root, file);
37725
- if (excluded(relative4)) continue;
38082
+ if (excluded(relative4, entry.isDirectory())) continue;
37726
38083
  hash.update(`${relative4}\0`);
37727
38084
  if (entry.isSymbolicLink()) {
37728
38085
  const link = `link\0${await import_node_fs58.default.promises.readlink(file)}\0`;
@@ -37846,8 +38203,10 @@ function syncChangedFiles(root, work, appRelative, excluded, installed) {
37846
38203
  if (existing && (newerOnly ? existing.mtime.getTime() >= source.mtime.getTime() : existing.size === source.size && existing.mtime.getTime() === source.mtime.getTime()))
37847
38204
  return;
37848
38205
  import_node_fs58.default.mkdirSync(import_node_path58.default.dirname(target), { recursive: true });
37849
- import_node_fs58.default.copyFileSync(file, target);
37850
- import_node_fs58.default.utimesSync(target, source.atime, source.mtime);
38206
+ const staged = `${target}.${process.pid}.peach-sync`;
38207
+ import_node_fs58.default.copyFileSync(file, staged);
38208
+ import_node_fs58.default.utimesSync(staged, source.atime, source.mtime);
38209
+ import_node_fs58.default.renameSync(staged, target);
37851
38210
  };
37852
38211
  const walkInstalled = (directory2) => {
37853
38212
  for (const entry of import_node_fs58.default.readdirSync(directory2, { withFileTypes: true })) {
@@ -37865,7 +38224,7 @@ function syncChangedFiles(root, work, appRelative, excluded, installed) {
37865
38224
  walkInstalled(file);
37866
38225
  continue;
37867
38226
  }
37868
- if (excluded(relative4) || entry.isSymbolicLink() || !sourceIos && relative4 === import_node_path58.default.join(appRelative, "ios"))
38227
+ if (excluded(relative4, entry.isDirectory()) || entry.isSymbolicLink() || !sourceIos && relative4 === import_node_path58.default.join(appRelative, "ios"))
37869
38228
  continue;
37870
38229
  if (entry.isDirectory()) walk3(file);
37871
38230
  else if (entry.isFile()) {
@@ -41985,302 +42344,6 @@ var init_core_data_entity_classes = __esm({
41985
42344
  }
41986
42345
  });
41987
42346
 
41988
- // src/ios-sdk-frameworks.json
41989
- var ios_sdk_frameworks_default;
41990
- var init_ios_sdk_frameworks = __esm({
41991
- "src/ios-sdk-frameworks.json"() {
41992
- ios_sdk_frameworks_default = {
41993
- sdk: "iphonesimulator27.1",
41994
- frameworks: [
41995
- "ARKit",
41996
- "AVFAudio",
41997
- "AVFoundation",
41998
- "AVKit",
41999
- "AVRouting",
42000
- "Accelerate",
42001
- "Accessibility",
42002
- "AccessoryLiveActivities",
42003
- "AccessoryNotifications",
42004
- "AccessorySetupKit",
42005
- "AccessoryTransportExtension",
42006
- "Accounts",
42007
- "ActivityKit",
42008
- "AdAttributionKit",
42009
- "AdServices",
42010
- "AdSupport",
42011
- "AddressBook",
42012
- "AddressBookUI",
42013
- "AlarmKit",
42014
- "AppClip",
42015
- "AppIntents",
42016
- "AppIntentsTypeSupport",
42017
- "AppMigrationKit",
42018
- "AppTrackingTransparency",
42019
- "AssetsLibrary",
42020
- "AudioToolbox",
42021
- "AudioUnit",
42022
- "AuthenticationServices",
42023
- "AutomatedDeviceEnrollment",
42024
- "AutomaticAssessmentConfiguration",
42025
- "BackgroundAssets",
42026
- "BackgroundTasks",
42027
- "BrowserEngineCore",
42028
- "BrowserEngineKit",
42029
- "BrowserKit",
42030
- "BusinessChat",
42031
- "CFNetwork",
42032
- "CallKit",
42033
- "CarKey",
42034
- "CarPlay",
42035
- "Charts",
42036
- "ClassKit",
42037
- "ClassKitUI",
42038
- "ClockKit",
42039
- "CloudKit",
42040
- "ColorSync",
42041
- "Combine",
42042
- "ComputeGraph",
42043
- "ContactProvider",
42044
- "Contacts",
42045
- "ContactsUI",
42046
- "CoreAudio",
42047
- "CoreAudioKit",
42048
- "CoreAudioTypes",
42049
- "CoreBluetooth",
42050
- "CoreData",
42051
- "CoreFoundation",
42052
- "CoreGraphics",
42053
- "CoreHaptics",
42054
- "CoreImage",
42055
- "CoreLocation",
42056
- "CoreLocationUI",
42057
- "CoreMIDI",
42058
- "CoreML",
42059
- "CoreMedia",
42060
- "CoreMotion",
42061
- "CoreNFC",
42062
- "CoreServices",
42063
- "CoreSpotlight",
42064
- "CoreTelephony",
42065
- "CoreText",
42066
- "CoreTransferable",
42067
- "CoreVideo",
42068
- "CreateMLComponents",
42069
- "CryptoKit",
42070
- "CryptoTokenKit",
42071
- "DataDetection",
42072
- "DeclaredAgeRange",
42073
- "DeveloperToolsSupport",
42074
- "DeviceActivity",
42075
- "DeviceCheck",
42076
- "DeviceDiscoveryExtension",
42077
- "DeviceDiscoveryUI",
42078
- "EnergyKit",
42079
- "EventKit",
42080
- "EventKitUI",
42081
- "ExposureNotification",
42082
- "ExtensionFoundation",
42083
- "ExtensionKit",
42084
- "ExternalAccessory",
42085
- "FamilyControls",
42086
- "FileProvider",
42087
- "FileProviderUI",
42088
- "FinanceKit",
42089
- "FinanceKitUI",
42090
- "Foundation",
42091
- "FoundationModels",
42092
- "GLKit",
42093
- "GSS",
42094
- "GameController",
42095
- "GameKit",
42096
- "GameSave",
42097
- "GameplayKit",
42098
- "GeoToolbox",
42099
- "GroupActivities",
42100
- "HealthKit",
42101
- "HealthKitUI",
42102
- "HomeKit",
42103
- "IOKit",
42104
- "IOSurface",
42105
- "IdentityDocumentServices",
42106
- "IdentityDocumentServicesUI",
42107
- "IdentityLookup",
42108
- "IdentityLookupUI",
42109
- "ImageCaptureCore",
42110
- "ImageIO",
42111
- "ImagePlayground",
42112
- "ImmersiveMediaSupport",
42113
- "Intents",
42114
- "IntentsUI",
42115
- "JavaScriptCore",
42116
- "LinkPresentation",
42117
- "LinkSecurity",
42118
- "LiveCommunicationKit",
42119
- "LocalAuthentication",
42120
- "LocalAuthenticationEmbeddedUI",
42121
- "LockedCameraCapture",
42122
- "ManagedApp",
42123
- "ManagedAppDistribution",
42124
- "ManagedSettings",
42125
- "ManagedSettingsUI",
42126
- "MapKit",
42127
- "MarketplaceKit",
42128
- "Matter",
42129
- "MatterSupport",
42130
- "MediaAccessibility",
42131
- "MediaIntelligence",
42132
- "MediaIntents",
42133
- "MediaPlayer",
42134
- "MediaToolbox",
42135
- "MessageUI",
42136
- "Messages",
42137
- "Metal",
42138
- "MetalKit",
42139
- "MetalPerformancePrimitives",
42140
- "MetalPerformanceShaders",
42141
- "MetalPerformanceShadersGraph",
42142
- "MetricKit",
42143
- "MobileCoreServices",
42144
- "ModelIO",
42145
- "MultipeerConnectivity",
42146
- "MusicKit",
42147
- "MusicUnderstanding",
42148
- "NaturalLanguage",
42149
- "NearbyInteraction",
42150
- "Network",
42151
- "NetworkExtension",
42152
- "NotificationCenter",
42153
- "NowPlaying",
42154
- "OSLog",
42155
- "OpenAL",
42156
- "OpenGLES",
42157
- "PDFKit",
42158
- "PHASE",
42159
- "PaperKit",
42160
- "PassKit",
42161
- "PencilKit",
42162
- "PermissionKit",
42163
- "Photos",
42164
- "PhotosUI",
42165
- "ProximityReader",
42166
- "PushKit",
42167
- "PushToTalk",
42168
- "QuartzCore",
42169
- "QuickLook",
42170
- "QuickLookThumbnailing",
42171
- "RealityFoundation",
42172
- "RealityKit",
42173
- "RelevanceKit",
42174
- "ReplayKit",
42175
- "RoomPlan",
42176
- "SafariServices",
42177
- "SafetyKit",
42178
- "SceneKit",
42179
- "ScreenTime",
42180
- "SecureElementCredential",
42181
- "Security",
42182
- "SecurityUI",
42183
- "SensitiveContentAnalysis",
42184
- "SensorKit",
42185
- "ServicesAccountLinking",
42186
- "SharedWithYou",
42187
- "SharedWithYouCore",
42188
- "ShazamKit",
42189
- "Social",
42190
- "SoundAnalysis",
42191
- "Speech",
42192
- "SpriteKit",
42193
- "StateReporting",
42194
- "StoreKit",
42195
- "SuggestedActions",
42196
- "SwiftData",
42197
- "SwiftUI",
42198
- "SwiftUICore",
42199
- "Symbols",
42200
- "SystemConfiguration",
42201
- "SystemExtensions",
42202
- "TabularData",
42203
- "TelephonyMessagingKit",
42204
- "TipKit",
42205
- "TouchController",
42206
- "Translation",
42207
- "TranslationUIProvider",
42208
- "TrustInsights",
42209
- "Twitter",
42210
- "UIKit",
42211
- "USDKit",
42212
- "UniformTypeIdentifiers",
42213
- "UserNotifications",
42214
- "UserNotificationsUI",
42215
- "VideoSubscriberAccount",
42216
- "VideoToolbox",
42217
- "Vision",
42218
- "VisionKit",
42219
- "WatchConnectivity",
42220
- "WeatherKit",
42221
- "WebKit",
42222
- "WiFiAware",
42223
- "WidgetKit",
42224
- "WorkoutKit",
42225
- "_AVKit_SwiftUI",
42226
- "_AdAttributionKit_StoreKit",
42227
- "_AppIntents_HealthKit",
42228
- "_AppIntents_SwiftUI",
42229
- "_AppIntents_UIKit",
42230
- "_AuthenticationServices_SwiftUI",
42231
- "_Contacts_AppIntents",
42232
- "_CoreData_CloudKit",
42233
- "_CoreLocationUI_SwiftUI",
42234
- "_CoreNFC_UIKit",
42235
- "_CoreSpotlight_FoundationModels",
42236
- "_DataDetection_SwiftUI",
42237
- "_DeviceActivity_SwiftUI",
42238
- "_DeviceDiscoveryUI_SwiftUI",
42239
- "_FinanceKit_AppIntents",
42240
- "_FoundationModels_SwiftUI",
42241
- "_FoundationModels_UIKit",
42242
- "_GameController_SwiftUI",
42243
- "_GeoToolbox_AppIntents",
42244
- "_GroupActivities_UIKit",
42245
- "_HomeKit_SwiftUI",
42246
- "_Intents_TipKit",
42247
- "_LinkPresentation_AppIntents",
42248
- "_LocationEssentials",
42249
- "_MapKit_SwiftUI",
42250
- "_MarketplaceKit_UIKit",
42251
- "_MediaIntents_AppIntents",
42252
- "_MediaPlayer_AppIntents",
42253
- "_MusicKit_SwiftUI",
42254
- "_NowPlaying_AppIntents",
42255
- "_PassKit_SwiftUI",
42256
- "_PermissionKit_SwiftUI",
42257
- "_PermissionKit_UIKit",
42258
- "_PhotosUI_SwiftUI",
42259
- "_PhotosUI_WidgetKit",
42260
- "_Photos_AppIntents",
42261
- "_QuickLook_SwiftUI",
42262
- "_RealityKit_ComputeGraph",
42263
- "_RealityKit_SwiftUI",
42264
- "_RelevanceKit_MapKit",
42265
- "_SceneKit_SwiftUI",
42266
- "_SecureElementCredential_SwiftUI",
42267
- "_SecureElementCredential_UIKit",
42268
- "_SharedWithYou_AppIntents",
42269
- "_SpriteKit_SwiftUI",
42270
- "_StoreKit_SwiftUI",
42271
- "_SwiftData_CoreData",
42272
- "_SwiftData_SwiftUI",
42273
- "_Translation_SwiftUI",
42274
- "_USDKit_RealityKit",
42275
- "_UserNotifications_AppIntents",
42276
- "_WebKit_SwiftUI",
42277
- "_WorkoutKit_SwiftUI",
42278
- "iAd"
42279
- ]
42280
- };
42281
- }
42282
- });
42283
-
42284
42347
  // src/swift-cxx-deps.ts
42285
42348
  function cxxDependencies(output2) {
42286
42349
  const body = output2.replace(/\\\r?\n/g, " ");
@@ -43267,7 +43330,7 @@ var init_swift_standin_digest = __esm({
43267
43330
  STANDIN_DIGEST_ENTRYPOINTS = ["swift-standins.ts", "swift-objc-compile.ts"];
43268
43331
  SPECIFIER = /from\s*['"]([^'"]+)['"]|import\s*\(\s*['"]([^'"]+)['"]\s*\)/g;
43269
43332
  standinSourceDigest = (srcDir = __sootsim_import_meta_dirname) => sourceClosureDigest(srcDir, STANDIN_DIGEST_ENTRYPOINTS);
43270
- STANDIN_SOURCE_DIGEST = true ? "70b9e9f32fde5739daaee933df31b2584f9ef3289c322a0f5b03f1eaac947880" : standinSourceDigest();
43333
+ STANDIN_SOURCE_DIGEST = true ? "967c1c2a3b66ac640e0162783ed9e21b09ff285f8e1f7d4327b70416699e14c8" : standinSourceDigest();
43271
43334
  }
43272
43335
  });
43273
43336
 
@@ -49254,6 +49317,17 @@ function isPackageSource(file) {
49254
49317
  function sourceFiles(root) {
49255
49318
  return packageFiles(root, false).filter(isPackageSource);
49256
49319
  }
49320
+ function xcodeFlatResources(app) {
49321
+ if (!app) return /* @__PURE__ */ new Set();
49322
+ return new Set(
49323
+ app.resources.filter(
49324
+ (file) => !Object.hasOwn(app.resourceNames, file) && !file.split(import_node_path79.default.sep).some((segment2) => segment2.endsWith(".xcassets"))
49325
+ )
49326
+ );
49327
+ }
49328
+ function bundleResourcePath(flatResources, disk, file) {
49329
+ return flatResources.has(disk) && !file.split("/").includes("Resources") ? `Resources/${file}` : file;
49330
+ }
49257
49331
  function resourceCandidateFiles(root) {
49258
49332
  return packageFiles(root, false).filter(
49259
49333
  (file) => !isPackageSource(file) && !file.endsWith(".xcconfig") && !["project.pbxproj", "project.xcproj", "Package.resolved"].includes(
@@ -49326,12 +49400,24 @@ function buildSwiftResourceTable(project2, baseUrl, inputs) {
49326
49400
  const disk = byRelative.get(file);
49327
49401
  return !disk || !layout2?.targetDirs.get(disk)?.startsWith(`${XCODE_FRAMEWORKS_DIR}/`);
49328
49402
  });
49329
- const found = enumerateBundleImages(relative4, readContents2, (file) => {
49330
- const disk = byRelative.get(file);
49331
- if (!disk) throw new Error(`image source ${file} has no input file`);
49332
- const key2 = layout2 ? xcodeInputKey(layout2, disk, file) : file;
49333
- return swiftResourceBundleForFile(bundles, key2)?.path ?? ".";
49334
- });
49403
+ const flatResources = xcodeFlatResources(layout2?.app);
49404
+ const bundled = new Map(
49405
+ relative4.map((file) => [
49406
+ bundleResourcePath(flatResources, byRelative.get(file), file),
49407
+ file
49408
+ ])
49409
+ );
49410
+ const found = enumerateBundleImages(
49411
+ [...bundled.keys()],
49412
+ (file) => readContents2(bundled.get(file) ?? file),
49413
+ (marked) => {
49414
+ const file = bundled.get(marked) ?? marked;
49415
+ const disk = byRelative.get(file);
49416
+ if (!disk) throw new Error(`image source ${file} has no input file`);
49417
+ const key2 = layout2 ? xcodeInputKey(layout2, disk, file) : file;
49418
+ return swiftResourceBundleForFile(bundles, key2)?.path ?? ".";
49419
+ }
49420
+ ).map((image) => ({ ...image, file: bundled.get(image.file) ?? image.file }));
49335
49421
  const colors = enumerateBundleColors(catalogFiles2, readContents2);
49336
49422
  const symbols = enumerateBundleSymbols(catalogFiles2, readContents2, (file) => {
49337
49423
  const disk = byRelative.get(file);
@@ -49515,15 +49601,20 @@ function buildSwiftBundleFiles(packagePath, hosted, inputs, resourceBundles) {
49515
49601
  }
49516
49602
  }
49517
49603
  const groups = /* @__PURE__ */ new Map();
49518
- const appResources = new Set(xcode?.app.resources ?? []);
49604
+ const flatResources = xcodeFlatResources(xcode?.app);
49519
49605
  for (const file of relative4) {
49520
49606
  const disk = import_node_path79.default.join(packagePath, ...file.split("/"));
49607
+ const folderName = xcode?.app.resourceNames[disk];
49608
+ if (folderName) {
49609
+ watched.push(file);
49610
+ addFile(folderName, readPackageFile2(packagePath, disk, limits.resourceBytes));
49611
+ continue;
49612
+ }
49521
49613
  const key2 = xcode ? xcodeInputKey(xcode, disk, file) : file;
49522
49614
  const bundle = swiftResourceBundleForFile(bundles, key2);
49523
49615
  const bundlePath = bundle?.path ?? ".";
49524
49616
  const group = groups.get(bundlePath) ?? /* @__PURE__ */ new Map();
49525
- const resource = appResources.has(disk) && !file.split("/").includes("Resources") ? `Resources/${file}` : file;
49526
- group.set(resource, disk);
49617
+ group.set(bundleResourcePath(flatResources, disk, file), disk);
49527
49618
  groups.set(bundlePath, group);
49528
49619
  }
49529
49620
  for (const bundle of bundles) {
@@ -55765,7 +55856,7 @@ var init_nitro_superset = __esm({
55765
55856
  init_nitroContract();
55766
55857
  init_swift_standin_digest();
55767
55858
  NITRO_SUPERSET_ENTRY_NAME = "superset";
55768
- NITRO_COMPILER_DIGEST = true ? "5586d24405a8b94499b182fe067e8af8be656d9b36558aa6ccbd8c7f9e4150dd" : nitroCompilerSourceDigest(__sootsim_import_meta_dirname, STANDIN_SOURCE_DIGEST2);
55859
+ NITRO_COMPILER_DIGEST = true ? "48d18c74e6a298bf524b2a8a4ae793e43480d5fdfb4f07d3ed1074d4e6e130c2" : nitroCompilerSourceDigest(__sootsim_import_meta_dirname, STANDIN_SOURCE_DIGEST2);
55769
55860
  nitroSupersetLock = parseLock(nitro_superset_lock_default);
55770
55861
  nitroSupersetKey = (inputs) => nativeEntryKey({ ...inputs, compiler: NITRO_COMPILER_DIGEST });
55771
55862
  published = /* @__PURE__ */ new Map();
@@ -56990,7 +57081,7 @@ var init_expo_native_compiler_digest = __esm({
56990
57081
 
56991
57082
  // src/expo-native-prebuilt.ts
56992
57083
  function expoNativeCompilerDigestValue() {
56993
- return true ? "7667f1dce279c8074ed9dd97de1e3b293077ae012cacf08fd6572978f8ef7dc0" : expoNativeCompilerDigest(__sootsim_import_meta_dirname);
57084
+ return true ? "960ff9f28de62c2587b34eeda2a04b383e5ecce370aae9948f12cef49f8b450b" : expoNativeCompilerDigest(__sootsim_import_meta_dirname);
56994
57085
  }
56995
57086
  function readSources(value) {
56996
57087
  const sources = isRecord(value) ? value.sources : null;
@@ -64467,7 +64558,7 @@ var import_node_path5 = require("node:path");
64467
64558
  init_src();
64468
64559
 
64469
64560
  // runtime-companion.json
64470
- var runtime_companion_default = { abi: 1, sha256: "c3cfa87c38bca3be3b225d514efe1b9e2ab9119227137e7190dfa25eccf43fe7", file: "node/cli-c3cfa87c38bca3be3b225d514efe1b9e2ab9119227137e7190dfa25eccf43fe7.cjs" };
64561
+ var runtime_companion_default = { abi: 1, sha256: "ec96dcaf1a90c0295f3ea5be7ec176c04c0714e27eda99ca6b2ba0a2e3394fd0", file: "node/cli-ec96dcaf1a90c0295f3ea5be7ec176c04c0714e27eda99ca6b2ba0a2e3394fd0.cjs" };
64471
64562
 
64472
64563
  // src/cli-runtime.ts
64473
64564
  init_answeredNativePackages();
@@ -64508,6 +64599,7 @@ function getCliRuntime() {
64508
64599
  "Incompatible Peach runtime companion ABI; run `peach runtime install`"
64509
64600
  );
64510
64601
  }
64602
+ runtime.provideTerser(() => import("terser"));
64511
64603
  loaded = { root, runtime };
64512
64604
  return runtime;
64513
64605
  }