peachsim 0.1.2221 → 0.1.2222

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 (121) 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 +438 -362
  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 +435 -360
  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 +658 -555
  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 +495 -401
  71. package/dist-lib/swift-compile.cjs +47 -30
  72. package/dist-lib/swift-compile.mjs +47 -30
  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 +121 -50
  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-engine/src/cli-companion.d.ts +1 -0
  84. package/dist-types/packages/peach-engine/src/cli-host-terser.d.ts +7 -0
  85. package/dist-types/packages/peach-engine/src/engine/glass-material.d.ts +1 -1
  86. package/dist-types/packages/peach-engine/src/engine/liquid-glass.d.ts +1 -0
  87. package/dist-types/packages/peach-engine/src/engine/native-layout.d.ts +1 -0
  88. package/dist-types/packages/peach-engine/src/engine/node.d.ts +5 -0
  89. package/dist-types/packages/peach-engine/src/engine/scene-table.d.ts +8 -1
  90. package/dist-types/packages/peach-engine/src/engine/types.d.ts +3 -0
  91. package/dist-types/packages/peach-engine/src/engine/yoga-layout.d.ts +1 -1
  92. package/dist-types/packages/peach-engine/src/remote-stream/cloud-display.d.ts +2 -2
  93. package/dist-types/packages/peach-engine/src/render-worker/shell-tree-wire.d.ts +1 -2
  94. package/dist-types/packages/peach-kit/src/internal.d.ts +1 -0
  95. package/dist-types/packages/peach-kit/src/ios-tint.d.ts +1 -0
  96. package/dist-types/packages/peach-kit/src/transitions/screen-transition-math.d.ts +25 -0
  97. package/kotlin/sdk.tar.gz +0 -0
  98. package/package.json +1 -1
  99. package/runtime-companion.json +1 -1
  100. package/sdk/ios/System/Library/Frameworks/SceneKit.framework/Headers/SCNAnimation.h +4 -4
  101. package/sdk/ios/System/Library/Frameworks/SceneKit.framework/Headers/SCNCameraController.h +1 -1
  102. package/sdk/ios/System/Library/Frameworks/SceneKit.framework/Headers/SCNConstraint.h +5 -5
  103. package/sdk/ios/System/Library/Frameworks/SceneKit.framework/Headers/SCNGeometry.h +1 -1
  104. package/sdk/ios/System/Library/Frameworks/SceneKit.framework/Headers/SCNLevelOfDetail.h +1 -1
  105. package/sdk/ios/System/Library/Frameworks/SceneKit.framework/Headers/SCNParametricGeometry.h +9 -9
  106. package/sdk/ios/System/Library/Frameworks/SceneKit.framework/Headers/SCNParticleSystem.h +1 -1
  107. package/sdk/ios/System/Library/Frameworks/SceneKit.framework/Headers/SCNPhysicsBehavior.h +7 -7
  108. package/sdk/ios/System/Library/Frameworks/SceneKit.framework/Headers/SCNRenderer.h +1 -1
  109. package/sdk/ios/System/Library/Frameworks/SceneKit.framework/Headers/SCNShadable.h +1 -1
  110. package/sdk/ios/System/Library/Frameworks/SceneKit.framework/Headers/SCNTechnique.h +1 -1
  111. package/src/cli-runtime.ts +1 -0
  112. package/src/expo-native-workspace.ts +14 -10
  113. package/src/expo-workspace-exclusion.ts +10 -7
  114. package/src/react-native-autolinking.ts +2 -1
  115. package/src/runtime-delivery.ts +7 -0
  116. package/src/swift-compile.ts +47 -31
  117. package/src/swift-coverage/xcode-assets.ts +4 -2
  118. package/src/swift-host.ts +53 -14
  119. package/src/wasm-optimize.ts +5 -1
  120. package/src/xcode-project.ts +26 -5
  121. 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.2222 | (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
  [
@@ -27045,6 +27357,7 @@ ${release}
27045
27357
  `);
27046
27358
  hash.update(compilerSourceDigest);
27047
27359
  if (input.oneModule) hash.update("one-module\n");
27360
+ if (KEEP_WASM_NAMES) hash.update("names\n");
27048
27361
  hash.update(swiftModuleDigest(moduleRoot));
27049
27362
  if (input.optimize) hash.update(`optimize
27050
27363
  ${WASM_OPTIMIZE_IDENTITY}
@@ -27156,7 +27469,14 @@ function toolsetOrdersLibcxxBeforeDarwinOverlay(options) {
27156
27469
  return libcxx >= 0 && overlay > libcxx;
27157
27470
  }
27158
27471
  function emitSwiftPackageManifest(args) {
27159
- const { targets, siblings, moduleRoot, oneModule, spriteKit, distribution } = args;
27472
+ const {
27473
+ targets,
27474
+ siblings,
27475
+ moduleRoot,
27476
+ oneModule,
27477
+ gameProducts: gameProducts2 = [],
27478
+ distribution
27479
+ } = args;
27160
27480
  const prebuilt = args.prebuilt;
27161
27481
  const linkedObjects = Boolean(distribution || prebuilt);
27162
27482
  const cxxFlagsFor = (flags) => args.deferDarwinOverlay ? withoutWasmOverlayIsystem(flags) : flags;
@@ -27185,9 +27505,8 @@ function emitSwiftPackageManifest(args) {
27185
27505
  for (const name3 of [...siblings.values()].flat())
27186
27506
  if (OPTIONAL_FRAMEWORKS.has(name3) && !targets.some((target) => target.name === name3))
27187
27507
  reach(name3);
27188
- if (spriteKit) {
27189
- for (const name3 of ["SpriteKit", "PeachBox2D", "simd", "GLKit"]) reach(name3);
27190
- }
27508
+ for (const product of gameProducts2)
27509
+ for (const name3 of GAME_REACH[product] ?? []) reach(name3);
27191
27510
  let distributionLinkPath;
27192
27511
  const distributionLink = args.distributionLink;
27193
27512
  if (distribution && distributionLink) {
@@ -27210,7 +27529,7 @@ function emitSwiftPackageManifest(args) {
27210
27529
  (object6) => !isProvider(object6) && !replacedObjects.has(object6)
27211
27530
  );
27212
27531
  const objects = available.filter(
27213
- (object6) => !targets.some((target) => object6.startsWith(`lib/${target.name}-`)) && [...OPTIONAL_FRAMEWORKS, "SpriteKit", "PeachBox2D"].every(
27532
+ (object6) => !targets.some((target) => object6.startsWith(`lib/${target.name}-`)) && [...OPTIONAL_FRAMEWORKS, ...GAME_FAMILY, "PeachBox2D"].every(
27214
27533
  (name3) => !object6.startsWith(`lib/${name3}-`) || reachedFrameworks.has(name3)
27215
27534
  )
27216
27535
  );
@@ -27373,7 +27692,7 @@ function emitSwiftPackageManifest(args) {
27373
27692
  ...linkedObjects || clang && !target.executable ? [] : [
27374
27693
  '.product(name: "SwiftUI", package: "sootsim-swift")',
27375
27694
  ...oneModule ? [ONE_PRODUCT] : [],
27376
- ...spriteKit ? [SPRITEKIT_PRODUCT] : []
27695
+ ...gameProducts2.map(gameProduct)
27377
27696
  ],
27378
27697
  ...(siblings.get(target.name) ?? []).flatMap(
27379
27698
  (dependency) => clang && // textual native headers can include one another without imposing
@@ -27405,7 +27724,7 @@ function emitSwiftPackageManifest(args) {
27405
27724
  .unsafeFlags(${flagArray(`[
27406
27725
  ${REACTOR_FLAG}${executableLinkFlags(args.root)} "-Xlinker", "--export-if-defined=__main_argc_argv"${library},
27407
27726
  ]`)}),
27408
- .unsafeFlags(["-Xlinker", "--strip-all"], .when(configuration: .release)),
27727
+ ${KEEP_WASM_NAMES ? "" : '.unsafeFlags(["-Xlinker", "--strip-all"], .when(configuration: .release)),'}
27409
27728
  ]` : librarySettings.length > 0 ? `,
27410
27729
  linkerSettings: [${librarySettings.join(", ")}]` : "";
27411
27730
  const cDefines = macroSettings(target.cDefines);
@@ -29414,14 +29733,17 @@ module ${moduleName2}.Swift {
29414
29733
  manifest = manifest.replace(product, `${product}
29415
29734
  ${ONE_PRODUCT},`).replace(flags, `${flags}${ONE_IMPLICIT_FLAGS}`);
29416
29735
  }
29417
- if (importsSpriteKit(input.files)) {
29736
+ const games = gameProducts(input.files);
29737
+ if (games.length > 0) {
29418
29738
  const anchor = '.product(name: "CoreLocation", package: "sootsim-swift"),';
29419
29739
  if (!manifest.includes(anchor))
29420
29740
  throw new Error(
29421
- "scripts/contrast-app-Package.swift lost the line the SpriteKit product links at"
29741
+ "scripts/contrast-app-Package.swift lost the line the game products link at"
29422
29742
  );
29423
- manifest = manifest.replace(anchor, `${anchor}
29424
- ${SPRITEKIT_PRODUCT},`);
29743
+ manifest = manifest.replace(
29744
+ anchor,
29745
+ [anchor, ...games.map((name3) => `${gameProduct(name3)},`)].join("\n ")
29746
+ );
29425
29747
  }
29426
29748
  files2.set(import_node_path41.default.join(layout2.root, "Package.swift"), manifest + moduleFiles);
29427
29749
  } else {
@@ -29536,7 +29858,7 @@ module ${moduleName2}.Swift {
29536
29858
  siblings: moduleSiblings,
29537
29859
  moduleRoot,
29538
29860
  oneModule: input.oneModule,
29539
- spriteKit: importsSpriteKit(input.files),
29861
+ gameProducts: gameProducts(input.files),
29540
29862
  distribution: distribution ?? void 0,
29541
29863
  moduleExcludes,
29542
29864
  deferDarwinOverlay: native.size > 0 && toolsetOrdersLibcxxBeforeDarwinOverlay(
@@ -29935,14 +30257,9 @@ function linkedFrameworkTargets(moduleRoot, input) {
29935
30257
  ))
29936
30258
  reach(match[1]);
29937
30259
  }
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
- ];
30260
+ const games = gameProducts(input.files);
30261
+ for (const product of games) for (const name3 of GAME_REACH[product] ?? []) reach(name3);
30262
+ const wanted = ["PeachApp", ...input.oneModule ? ["One"] : [], ...games, ...reached];
29946
30263
  const linked = [...new Set(wanted)].filter((name3) => libraries.has(name3));
29947
30264
  if (!linked.includes("PeachApp"))
29948
30265
  throw new Error("swift-compile: the framework package declares no PeachApp library");
@@ -30845,7 +31162,7 @@ function compileSwiftProjectOnce(input, options) {
30845
31162
  options.signal
30846
31163
  );
30847
31164
  }
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;
31165
+ 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
31166
  var init_swift_compile = __esm({
30850
31167
  "src/swift-compile.ts"() {
30851
31168
  "use strict";
@@ -30919,7 +31236,8 @@ var init_swift_compile = __esm({
30919
31236
  PeachCFNetwork: [],
30920
31237
  JavaScriptCore: ["PeachJavaScriptCore"],
30921
31238
  PeachJavaScriptCore: [],
30922
- GameplayKit: [],
31239
+ // GameplayKit names SpriteKit and SceneKit nodes, as on iOS
31240
+ GameplayKit: ["SpriteKit", "SceneKit", "PeachBox2D", "simd", "GLKit"],
30923
31241
  simd: [],
30924
31242
  ModelIO: ["simd"],
30925
31243
  GLKit: ["ModelIO"],
@@ -31031,10 +31349,21 @@ int EXUpdatesApplyBSDiffPatch(const char * _Nonnull oldFilePath,
31031
31349
  }
31032
31350
  ];
31033
31351
  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
- );
31352
+ GAME_FAMILY = ["SpriteKit", "SceneKit"];
31353
+ gameProducts = (files2) => {
31354
+ const imported = new Set(
31355
+ Object.entries(files2).flatMap(
31356
+ ([file, contents]) => file.endsWith(".swift") ? swiftImportNames(contents) : []
31357
+ )
31358
+ );
31359
+ if (imported.has("SceneKit")) return [...GAME_FAMILY];
31360
+ return imported.has("SpriteKit") ? ["SpriteKit"] : [];
31361
+ };
31362
+ gameProduct = (name3) => `.product(name: "${name3}", package: "sootsim-swift")`;
31363
+ GAME_REACH = {
31364
+ SpriteKit: ["SpriteKit", "PeachBox2D", "simd", "GLKit"],
31365
+ SceneKit: ["SceneKit"]
31366
+ };
31038
31367
  FOUNDATION_IMPLICIT_MODULES = [
31039
31368
  "PeachObjC",
31040
31369
  "Dispatch",
@@ -31061,7 +31390,7 @@ int EXUpdatesApplyBSDiffPatch(const char * _Nonnull oldFilePath,
31061
31390
  REACTOR_FLAG = '"-Xclang-linker", "-mexec-model=reactor",\n';
31062
31391
  MULTI_MANIFEST_VERSION = 68;
31063
31392
  SWIFT_HEADER_PRODUCTS_TARGET = "PeachHeaderProducts";
31064
- compilerSourceDigest = true ? "2e9f321a97a408a1b3b8b7d85bbcfb108f0761ed9726b832a3c6c2cc52102806" : swiftCompilerSourceDigest(__sootsim_import_meta_dirname);
31393
+ compilerSourceDigest = true ? "eba60b7a2e9485f928a6ec2e544e10d84b2b33430be66b9e069c9797a927af86" : swiftCompilerSourceDigest(__sootsim_import_meta_dirname);
31065
31394
  nativeCxxCompilerFlags = ["-fno-cxx-modules"];
31066
31395
  cFlagArray = (flags) => JSON.stringify(withoutGlogModuleMap(flags));
31067
31396
  cxxFlagArray = (flags) => JSON.stringify([...nativeCxxCompilerFlags, ...withoutGlogModuleMap(flags)]);
@@ -31392,8 +31721,6 @@ int EXUpdatesApplyBSDiffPatch(const char * _Nonnull oldFilePath,
31392
31721
  "NSURLProtectionSpaceHTTPS",
31393
31722
  "NSURLProtectionSpaceHTTPSProxy",
31394
31723
  "NSURLProtectionSpaceSOCKSProxy",
31395
- "NSURLSessionDownloadTaskResumeData",
31396
- "NSURLSessionTransferSizeUnknown",
31397
31724
  "NSURLSessionUploadTaskResumeData",
31398
31725
  "NSUTF16BigEndianStringEncoding",
31399
31726
  "NSUTF16LittleEndianStringEncoding",
@@ -33714,6 +34041,7 @@ function targetMembers(ref, settings, options, settingKeys, projectInputs) {
33714
34041
  const allSources = /* @__PURE__ */ new Set();
33715
34042
  const headers = /* @__PURE__ */ new Set();
33716
34043
  const resources = /* @__PURE__ */ new Set();
34044
+ const resourceNames = {};
33717
34045
  const scriptForOutput = /* @__PURE__ */ new Map();
33718
34046
  const copiedFiles = [];
33719
34047
  let generatedInfoPlist = false;
@@ -33883,13 +34211,14 @@ ${output2}`
33883
34211
  xcodePathResolver(project2.objects, project2.projectDir, import_node_path46.default.join, settings),
33884
34212
  (file) => isDirectory(file) ? walkFiles(file) : import_node_fs46.default.existsSync(file) ? [file] : [],
33885
34213
  import_node_path46.default.join,
33886
- (file, kind) => {
34214
+ (file, kind, bundleName) => {
33887
34215
  if (kind === "header") {
33888
34216
  headers.add(file);
33889
34217
  return;
33890
34218
  }
33891
34219
  if (kind === "resource") {
33892
34220
  resources.add(file);
34221
+ if (bundleName) resourceNames[file] = bundleName;
33893
34222
  return;
33894
34223
  }
33895
34224
  if (!import_node_fs46.default.existsSync(file)) {
@@ -34013,6 +34342,7 @@ ${output2}`
34013
34342
  return {
34014
34343
  sources: [...sources].sort(),
34015
34344
  resources: [...resources].sort(),
34345
+ resourceNames,
34016
34346
  copiedFiles,
34017
34347
  generatedInfoPlist,
34018
34348
  allSources: [...allSources].sort(),
@@ -35217,10 +35547,14 @@ function readXcodeAppTarget(input, targetName, configurationName, options = {})
35217
35547
  byProduct.has(import_node_path46.default.basename(rawPath)))
35218
35548
  continue;
35219
35549
  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
- );
35550
+ if (fileId && resolved !== null && !import_node_fs46.default.existsSync(resolved)) {
35551
+ if (!ios_sdk_frameworks_default.frameworks.includes(name3))
35552
+ throw new Error(
35553
+ `${str(target.name) ?? "target"}: linked framework ${name3} (${fileId}) points at missing ${resolved} in ${project2.projectFile}`
35554
+ );
35555
+ sdkFrameworks.add(name3);
35556
+ continue;
35557
+ }
35224
35558
  if (!binaryFrameworks.get(name3)) binaryFrameworks.set(name3, resolved);
35225
35559
  }
35226
35560
  }
@@ -35297,7 +35631,12 @@ function readXcodeAppTarget(input, targetName, configurationName, options = {})
35297
35631
  ...linkedProducts.flatMap(
35298
35632
  ({ source }) => source.kind === "local" && import_node_fs46.default.existsSync(source.dir) ? [source.dir] : []
35299
35633
  ),
35300
- ...new Set(podSourceDirs)
35634
+ ...new Set(podSourceDirs),
35635
+ // a target's own files may sit beside the project, such as an asset
35636
+ // catalog one folder up, and xcode builds them from there
35637
+ ...new Set(
35638
+ [...module2.allSources, ...module2.resources].filter((file) => import_node_fs46.default.existsSync(file)).map((file) => import_node_path46.default.dirname(file))
35639
+ )
35301
35640
  ].map((dir) => import_node_fs46.default.realpathSync.native(dir))
35302
35641
  ),
35303
35642
  projectFiles: [
@@ -35342,6 +35681,7 @@ var init_xcode_project = __esm({
35342
35681
  import_node_fs46 = __toESM(require("node:fs"), 1);
35343
35682
  import_node_path46 = __toESM(require("node:path"), 1);
35344
35683
  import_plist2 = __toESM(require("plist"), 1);
35684
+ init_ios_sdk_frameworks();
35345
35685
  init_is_record();
35346
35686
  init_native_app_identity();
35347
35687
  init_prepared_xcode_phases();
@@ -36452,6 +36792,7 @@ function autolinkerJson(command, output2) {
36452
36792
  }
36453
36793
  }
36454
36794
  async function cliAdvertises(cli, args, token, appRoot, signal) {
36795
+ const started = Date.now();
36455
36796
  const { stdout, stderr } = await run5("node", [cli, ...args], {
36456
36797
  cwd: appRoot,
36457
36798
  signal,
@@ -36461,7 +36802,7 @@ async function cliAdvertises(cli, args, token, appRoot, signal) {
36461
36802
  });
36462
36803
  if (!stdout.trim())
36463
36804
  throw new Error(
36464
- `${cli} ${args.join(" ")} returned empty help output${stderr.trim() ? `: ${stderr.trim()}` : ""}`
36805
+ `${cli} ${args.join(" ")} exited 0 after ${Date.now() - started}ms with empty help output${stderr.trim() ? `: ${stderr.trim()}` : ""}`
36465
36806
  );
36466
36807
  return stdout.includes(token);
36467
36808
  }
@@ -37722,7 +38063,7 @@ async function hashWorkspaceInputs(app, everyByte, signal, sourceOnly = false, p
37722
38063
  signal?.throwIfAborted();
37723
38064
  const file = import_node_path58.default.join(directory2, entry.name);
37724
38065
  const relative4 = import_node_path58.default.relative(root, file);
37725
- if (excluded(relative4)) continue;
38066
+ if (excluded(relative4, entry.isDirectory())) continue;
37726
38067
  hash.update(`${relative4}\0`);
37727
38068
  if (entry.isSymbolicLink()) {
37728
38069
  const link = `link\0${await import_node_fs58.default.promises.readlink(file)}\0`;
@@ -37846,8 +38187,10 @@ function syncChangedFiles(root, work, appRelative, excluded, installed) {
37846
38187
  if (existing && (newerOnly ? existing.mtime.getTime() >= source.mtime.getTime() : existing.size === source.size && existing.mtime.getTime() === source.mtime.getTime()))
37847
38188
  return;
37848
38189
  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);
38190
+ const staged = `${target}.${process.pid}.peach-sync`;
38191
+ import_node_fs58.default.copyFileSync(file, staged);
38192
+ import_node_fs58.default.utimesSync(staged, source.atime, source.mtime);
38193
+ import_node_fs58.default.renameSync(staged, target);
37851
38194
  };
37852
38195
  const walkInstalled = (directory2) => {
37853
38196
  for (const entry of import_node_fs58.default.readdirSync(directory2, { withFileTypes: true })) {
@@ -37865,7 +38208,7 @@ function syncChangedFiles(root, work, appRelative, excluded, installed) {
37865
38208
  walkInstalled(file);
37866
38209
  continue;
37867
38210
  }
37868
- if (excluded(relative4) || entry.isSymbolicLink() || !sourceIos && relative4 === import_node_path58.default.join(appRelative, "ios"))
38211
+ if (excluded(relative4, entry.isDirectory()) || entry.isSymbolicLink() || !sourceIos && relative4 === import_node_path58.default.join(appRelative, "ios"))
37869
38212
  continue;
37870
38213
  if (entry.isDirectory()) walk3(file);
37871
38214
  else if (entry.isFile()) {
@@ -41985,302 +42328,6 @@ var init_core_data_entity_classes = __esm({
41985
42328
  }
41986
42329
  });
41987
42330
 
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
42331
  // src/swift-cxx-deps.ts
42285
42332
  function cxxDependencies(output2) {
42286
42333
  const body = output2.replace(/\\\r?\n/g, " ");
@@ -43267,7 +43314,7 @@ var init_swift_standin_digest = __esm({
43267
43314
  STANDIN_DIGEST_ENTRYPOINTS = ["swift-standins.ts", "swift-objc-compile.ts"];
43268
43315
  SPECIFIER = /from\s*['"]([^'"]+)['"]|import\s*\(\s*['"]([^'"]+)['"]\s*\)/g;
43269
43316
  standinSourceDigest = (srcDir = __sootsim_import_meta_dirname) => sourceClosureDigest(srcDir, STANDIN_DIGEST_ENTRYPOINTS);
43270
- STANDIN_SOURCE_DIGEST = true ? "70b9e9f32fde5739daaee933df31b2584f9ef3289c322a0f5b03f1eaac947880" : standinSourceDigest();
43317
+ STANDIN_SOURCE_DIGEST = true ? "1a62599378cd7cdf32385f588eb3f983f07ea222d145ec5b6dc34cce9104f46c" : standinSourceDigest();
43271
43318
  }
43272
43319
  });
43273
43320
 
@@ -49254,6 +49301,17 @@ function isPackageSource(file) {
49254
49301
  function sourceFiles(root) {
49255
49302
  return packageFiles(root, false).filter(isPackageSource);
49256
49303
  }
49304
+ function xcodeFlatResources(app) {
49305
+ if (!app) return /* @__PURE__ */ new Set();
49306
+ return new Set(
49307
+ app.resources.filter(
49308
+ (file) => !Object.hasOwn(app.resourceNames, file) && !file.split(import_node_path79.default.sep).some((segment2) => segment2.endsWith(".xcassets"))
49309
+ )
49310
+ );
49311
+ }
49312
+ function bundleResourcePath(flatResources, disk, file) {
49313
+ return flatResources.has(disk) && !file.split("/").includes("Resources") ? `Resources/${file}` : file;
49314
+ }
49257
49315
  function resourceCandidateFiles(root) {
49258
49316
  return packageFiles(root, false).filter(
49259
49317
  (file) => !isPackageSource(file) && !file.endsWith(".xcconfig") && !["project.pbxproj", "project.xcproj", "Package.resolved"].includes(
@@ -49326,12 +49384,24 @@ function buildSwiftResourceTable(project2, baseUrl, inputs) {
49326
49384
  const disk = byRelative.get(file);
49327
49385
  return !disk || !layout2?.targetDirs.get(disk)?.startsWith(`${XCODE_FRAMEWORKS_DIR}/`);
49328
49386
  });
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
- });
49387
+ const flatResources = xcodeFlatResources(layout2?.app);
49388
+ const bundled = new Map(
49389
+ relative4.map((file) => [
49390
+ bundleResourcePath(flatResources, byRelative.get(file), file),
49391
+ file
49392
+ ])
49393
+ );
49394
+ const found = enumerateBundleImages(
49395
+ [...bundled.keys()],
49396
+ (file) => readContents2(bundled.get(file) ?? file),
49397
+ (marked) => {
49398
+ const file = bundled.get(marked) ?? marked;
49399
+ const disk = byRelative.get(file);
49400
+ if (!disk) throw new Error(`image source ${file} has no input file`);
49401
+ const key2 = layout2 ? xcodeInputKey(layout2, disk, file) : file;
49402
+ return swiftResourceBundleForFile(bundles, key2)?.path ?? ".";
49403
+ }
49404
+ ).map((image) => ({ ...image, file: bundled.get(image.file) ?? image.file }));
49335
49405
  const colors = enumerateBundleColors(catalogFiles2, readContents2);
49336
49406
  const symbols = enumerateBundleSymbols(catalogFiles2, readContents2, (file) => {
49337
49407
  const disk = byRelative.get(file);
@@ -49515,15 +49585,20 @@ function buildSwiftBundleFiles(packagePath, hosted, inputs, resourceBundles) {
49515
49585
  }
49516
49586
  }
49517
49587
  const groups = /* @__PURE__ */ new Map();
49518
- const appResources = new Set(xcode?.app.resources ?? []);
49588
+ const flatResources = xcodeFlatResources(xcode?.app);
49519
49589
  for (const file of relative4) {
49520
49590
  const disk = import_node_path79.default.join(packagePath, ...file.split("/"));
49591
+ const folderName = xcode?.app.resourceNames[disk];
49592
+ if (folderName) {
49593
+ watched.push(file);
49594
+ addFile(folderName, readPackageFile2(packagePath, disk, limits.resourceBytes));
49595
+ continue;
49596
+ }
49521
49597
  const key2 = xcode ? xcodeInputKey(xcode, disk, file) : file;
49522
49598
  const bundle = swiftResourceBundleForFile(bundles, key2);
49523
49599
  const bundlePath = bundle?.path ?? ".";
49524
49600
  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);
49601
+ group.set(bundleResourcePath(flatResources, disk, file), disk);
49527
49602
  groups.set(bundlePath, group);
49528
49603
  }
49529
49604
  for (const bundle of bundles) {
@@ -55765,7 +55840,7 @@ var init_nitro_superset = __esm({
55765
55840
  init_nitroContract();
55766
55841
  init_swift_standin_digest();
55767
55842
  NITRO_SUPERSET_ENTRY_NAME = "superset";
55768
- NITRO_COMPILER_DIGEST = true ? "5586d24405a8b94499b182fe067e8af8be656d9b36558aa6ccbd8c7f9e4150dd" : nitroCompilerSourceDigest(__sootsim_import_meta_dirname, STANDIN_SOURCE_DIGEST2);
55843
+ NITRO_COMPILER_DIGEST = true ? "a4a039ea02c6f6891931ee5a3d0136be472592ea109f8bc1b947d9d235a9559c" : nitroCompilerSourceDigest(__sootsim_import_meta_dirname, STANDIN_SOURCE_DIGEST2);
55769
55844
  nitroSupersetLock = parseLock(nitro_superset_lock_default);
55770
55845
  nitroSupersetKey = (inputs) => nativeEntryKey({ ...inputs, compiler: NITRO_COMPILER_DIGEST });
55771
55846
  published = /* @__PURE__ */ new Map();
@@ -56990,7 +57065,7 @@ var init_expo_native_compiler_digest = __esm({
56990
57065
 
56991
57066
  // src/expo-native-prebuilt.ts
56992
57067
  function expoNativeCompilerDigestValue() {
56993
- return true ? "7667f1dce279c8074ed9dd97de1e3b293077ae012cacf08fd6572978f8ef7dc0" : expoNativeCompilerDigest(__sootsim_import_meta_dirname);
57068
+ return true ? "db679f96e034ef5a3e217e2553ec748fa11d5dd68cd9247dd7bcae61a03d42a1" : expoNativeCompilerDigest(__sootsim_import_meta_dirname);
56994
57069
  }
56995
57070
  function readSources(value) {
56996
57071
  const sources = isRecord(value) ? value.sources : null;
@@ -64467,7 +64542,7 @@ var import_node_path5 = require("node:path");
64467
64542
  init_src();
64468
64543
 
64469
64544
  // runtime-companion.json
64470
- var runtime_companion_default = { abi: 1, sha256: "c3cfa87c38bca3be3b225d514efe1b9e2ab9119227137e7190dfa25eccf43fe7", file: "node/cli-c3cfa87c38bca3be3b225d514efe1b9e2ab9119227137e7190dfa25eccf43fe7.cjs" };
64545
+ var runtime_companion_default = { abi: 1, sha256: "6b48c0f7ae1d87e581af7cf445b2eaad2e1a4aa8fad23a00e1ae90916b2bbc02", file: "node/cli-6b48c0f7ae1d87e581af7cf445b2eaad2e1a4aa8fad23a00e1ae90916b2bbc02.cjs" };
64471
64546
 
64472
64547
  // src/cli-runtime.ts
64473
64548
  init_answeredNativePackages();
@@ -64508,6 +64583,7 @@ function getCliRuntime() {
64508
64583
  "Incompatible Peach runtime companion ABI; run `peach runtime install`"
64509
64584
  );
64510
64585
  }
64586
+ runtime.provideTerser(() => import("terser"));
64511
64587
  loaded = { root, runtime };
64512
64588
  return runtime;
64513
64589
  }