peachsim 0.1.2220 → 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 (128) hide show
  1. package/cli/commands/compat.ts +4 -4
  2. package/cli/commands/inspect.ts +4 -4
  3. package/cli/commands/report-issue.ts +1 -1
  4. package/cli/runtime-compat.ts +7 -2
  5. package/dist-lib/agent-daemon-client.cjs +1 -1
  6. package/dist-lib/agent-events.cjs +1 -1
  7. package/dist-lib/attached-projects.cjs +1 -1
  8. package/dist-lib/auth/shared-session.cjs +1 -1
  9. package/dist-lib/backend-origin.cjs +1 -1
  10. package/dist-lib/beta.cjs +1 -1
  11. package/dist-lib/beta.mjs +1 -1
  12. package/dist-lib/bridge-constants.cjs +1 -1
  13. package/dist-lib/bridge-contract-input.cjs +1 -1
  14. package/dist-lib/bridge-contract-input.mjs +1 -1
  15. package/dist-lib/bridge-contract.cjs +1 -1
  16. package/dist-lib/bridge-contract.mjs +1 -1
  17. package/dist-lib/bundle-channel.cjs +475 -381
  18. package/dist-lib/capture-contract.cjs +1 -1
  19. package/dist-lib/capture-contract.mjs +1 -1
  20. package/dist-lib/cloud-contract.cjs +1 -1
  21. package/dist-lib/cloud-contract.mjs +1 -1
  22. package/dist-lib/cloud-test-args.cjs +1 -1
  23. package/dist-lib/cloud-test-args.mjs +1 -1
  24. package/dist-lib/cloud.cjs +1 -1
  25. package/dist-lib/cloud.mjs +1 -1
  26. package/dist-lib/config.cjs +1 -1
  27. package/dist-lib/config.mjs +1 -1
  28. package/dist-lib/detox/index.cjs +3 -2
  29. package/dist-lib/dev-bundle-resolution.cjs +1 -1
  30. package/dist-lib/expo-swift-bundle.cjs +472 -379
  31. package/dist-lib/expo-swift-metadata.cjs +1 -1
  32. package/dist-lib/expo-swift-metadata.mjs +1 -1
  33. package/dist-lib/home-paths.cjs +1 -1
  34. package/dist-lib/host/bridge-host.cjs +695 -574
  35. package/dist-lib/host/fetch-proxy-handler.cjs +10 -7
  36. package/dist-lib/host/fetch-proxy-overrides.cjs +1 -1
  37. package/dist-lib/host/fetch-proxy-overrides.mjs +1 -1
  38. package/dist-lib/host/replacement-module-handler.cjs +1 -1
  39. package/dist-lib/host/websocket-proxy.cjs +1 -1
  40. package/dist-lib/index.cjs +8232 -7815
  41. package/dist-lib/jump-to-source-babel.cjs +1 -1
  42. package/dist-lib/jump-to-source-native.cjs +1 -1
  43. package/dist-lib/kotlin-host.cjs +1 -1
  44. package/dist-lib/menu.cjs +1 -1
  45. package/dist-lib/menu.mjs +1 -1
  46. package/dist-lib/metro-fingerprint-registry.cjs +1 -1
  47. package/dist-lib/metro-fingerprint-registry.mjs +1 -1
  48. package/dist-lib/metro-production-bundle.cjs +1 -1
  49. package/dist-lib/metro-production-bundle.mjs +1 -1
  50. package/dist-lib/metro.cjs +8146 -7737
  51. package/dist-lib/native-app-identity-project.cjs +331 -13
  52. package/dist-lib/native-app-identity-project.mjs +331 -13
  53. package/dist-lib/native-app-identity.cjs +16 -3
  54. package/dist-lib/native-app-identity.mjs +16 -3
  55. package/dist-lib/native-firebase-metadata.cjs +1 -1
  56. package/dist-lib/native-firebase-metadata.mjs +1 -1
  57. package/dist-lib/pdfium-raster.cjs +1 -1
  58. package/dist-lib/pdfium-raster.mjs +1 -1
  59. package/dist-lib/plist.cjs +1 -1
  60. package/dist-lib/plist.mjs +1 -1
  61. package/dist-lib/profiles.cjs +1 -1
  62. package/dist-lib/public-brand.cjs +1 -1
  63. package/dist-lib/public-origins-lib-esm.json +25 -24
  64. package/dist-lib/public-origins-lib.json +99 -96
  65. package/dist-lib/react-native-host-modules.cjs +1 -1
  66. package/dist-lib/react-native-host-modules.mjs +1 -1
  67. package/dist-lib/reap-browser.cjs +1 -1
  68. package/dist-lib/scripts/dev-server-scanner.cjs +1 -1
  69. package/dist-lib/sdk.cjs +1 -1
  70. package/dist-lib/sdk.mjs +1 -1
  71. package/dist-lib/skills.cjs +532 -420
  72. package/dist-lib/swift-compile.cjs +84 -49
  73. package/dist-lib/swift-compile.mjs +84 -49
  74. package/dist-lib/swift-package.cjs +1 -1
  75. package/dist-lib/swift-package.mjs +1 -1
  76. package/dist-lib/swift-submit.cjs +1 -1
  77. package/dist-lib/swift-submit.mjs +1 -1
  78. package/dist-lib/swift-toolchain.cjs +1 -1
  79. package/dist-lib/swift.cjs +1 -1
  80. package/dist-lib/vite-swift.cjs +158 -69
  81. package/dist-lib/vite.cjs +2930 -2800
  82. package/dist-lib/worklet-executable.cjs +1 -1
  83. package/dist-lib/worklet-executable.mjs +1 -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/compositor-protocol.d.ts +1 -0
  95. package/dist-types/packages/peach-engine/src/render-worker/shell-tree-wire.d.ts +1 -2
  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/NSLayoutConstraint.h +1 -8
  114. package/sdk/ios/System/Library/Frameworks/UIKit.framework/Modules/module.modulemap +1 -0
  115. package/sdk/ios/System/Library/Frameworks/UIKitTypes.framework/Headers/UIKitTypes.h +1 -0
  116. package/sdk/ios/System/Library/Frameworks/UIKitTypes.framework/Headers/UILayoutPriority.h +11 -0
  117. package/src/cli-runtime.ts +1 -0
  118. package/src/expo-native-workspace.ts +14 -10
  119. package/src/expo-workspace-exclusion.ts +10 -7
  120. package/src/react-native-autolinking.ts +2 -1
  121. package/src/runtime-delivery.ts +7 -0
  122. package/src/swift-compile.ts +90 -54
  123. package/src/swift-coverage/xcode-assets.ts +4 -2
  124. package/src/swift-host.ts +53 -14
  125. package/src/swift-objc-import.ts +4 -0
  126. package/src/wasm-optimize.ts +5 -1
  127. package/src/xcode-project.ts +26 -5
  128. package/src/xcode-target-members.ts +25 -3
@@ -1,4 +1,4 @@
1
- /*! peach v0.1.2220 | (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
 
@@ -18689,6 +18689,12 @@ var init_registry = __esm({
18689
18689
  coverage: 0,
18690
18690
  note: "unsupported: the Bitmovin native player SDK is absent; 1.30.0 adds the RNPlayerViewManagerModule native module, an iOS dependencies.json and Google IMA source sets, and requires expo 57 peers",
18691
18691
  missing: "native Player and Source modules, RNPlayerViewManagerModule, player view, DRM, casting, offline playback, analytics, controls, events, and track management"
18692
+ },
18693
+ {
18694
+ range: "1.31.0",
18695
+ coverage: 0,
18696
+ note: "unsupported: the Bitmovin native player SDK is absent; 1.31.0 adds the PlaylistModule native module, native event relay and source registry, and Player.on and Source.on subscriptions, and keeps the expo 57 peers",
18697
+ missing: "native Player, Source and PlaylistModule modules, RNPlayerViewManagerModule, player view, DRM, casting, offline playback, analytics, controls, events, and track management"
18692
18698
  }
18693
18699
  ]
18694
18700
  },
@@ -29322,6 +29328,7 @@ function createRuntimeDelivery(product) {
29322
29328
  verify: product.verifyInstall,
29323
29329
  label: `runtime ${version2}`
29324
29330
  });
29331
+ await product.afterInstall?.(destDir);
29325
29332
  if (setActive) product.writeActiveRuntime(version2);
29326
29333
  pruneLocalRetention({ protectVersions });
29327
29334
  return {
@@ -31371,6 +31378,7 @@ function autolinkerJson(command, output2) {
31371
31378
  }
31372
31379
  }
31373
31380
  async function cliAdvertises(cli, args, token, appRoot, signal) {
31381
+ const started = Date.now();
31374
31382
  const { stdout, stderr } = await run4("node", [cli, ...args], {
31375
31383
  cwd: appRoot,
31376
31384
  signal,
@@ -31380,7 +31388,7 @@ async function cliAdvertises(cli, args, token, appRoot, signal) {
31380
31388
  });
31381
31389
  if (!stdout.trim())
31382
31390
  throw new Error(
31383
- `${cli} ${args.join(" ")} returned empty help output${stderr.trim() ? `: ${stderr.trim()}` : ""}`
31391
+ `${cli} ${args.join(" ")} exited 0 after ${Date.now() - started}ms with empty help output${stderr.trim() ? `: ${stderr.trim()}` : ""}`
31384
31392
  );
31385
31393
  return stdout.includes(token);
31386
31394
  }
@@ -34834,7 +34842,7 @@ async function workspaceExclusion(root, portable = false, linkedPackages = []) {
34834
34842
  listed.stdout.split("\0").filter(Boolean).map((entry) => entry.replace(/\/$/, ""))
34835
34843
  );
34836
34844
  const ignoreFiles = /* @__PURE__ */ new Map();
34837
- return (relative5) => {
34845
+ return (relative5, knownDirectory) => {
34838
34846
  const parts = relative5.split(import_node_path18.default.sep);
34839
34847
  const linked = linkedPackages.some(
34840
34848
  (directory2) => relative5.startsWith(directory2 + import_node_path18.default.sep)
@@ -34846,16 +34854,16 @@ async function workspaceExclusion(root, portable = false, linkedPackages = []) {
34846
34854
  }
34847
34855
  if (portable && relative5) {
34848
34856
  let excluded = false;
34849
- const isDirectory3 = import_node_fs22.default.lstatSync(import_node_path18.default.join(root, relative5)).isDirectory();
34857
+ const isDirectory3 = knownDirectory ?? import_node_fs22.default.lstatSync(import_node_path18.default.join(root, relative5)).isDirectory();
34850
34858
  for (let index = 0; index < parts.length; index++) {
34851
34859
  const directory2 = parts.slice(0, index).join(import_node_path18.default.sep);
34852
34860
  let rules2 = ignoreFiles.get(directory2);
34853
- if (!rules2) {
34854
- rules2 = (0, import_ignore.default)();
34861
+ if (rules2 === void 0) {
34855
34862
  const file = import_node_path18.default.join(root, directory2, ".gitignore");
34856
- if (import_node_fs22.default.existsSync(file)) rules2.add(import_node_fs22.default.readFileSync(file, "utf8"));
34863
+ rules2 = import_node_fs22.default.existsSync(file) ? (0, import_ignore.default)().add(import_node_fs22.default.readFileSync(file, "utf8")) : null;
34857
34864
  ignoreFiles.set(directory2, rules2);
34858
34865
  }
34866
+ if (!rules2) continue;
34859
34867
  const item = parts.slice(index).join("/");
34860
34868
  const result = rules2.test(isDirectory3 ? `${item}/` : item);
34861
34869
  if (result.ignored) excluded = true;
@@ -35167,6 +35175,302 @@ var init_plist = __esm({
35167
35175
  }
35168
35176
  });
35169
35177
 
35178
+ // src/ios-sdk-frameworks.json
35179
+ var ios_sdk_frameworks_default;
35180
+ var init_ios_sdk_frameworks = __esm({
35181
+ "src/ios-sdk-frameworks.json"() {
35182
+ ios_sdk_frameworks_default = {
35183
+ sdk: "iphonesimulator27.1",
35184
+ frameworks: [
35185
+ "ARKit",
35186
+ "AVFAudio",
35187
+ "AVFoundation",
35188
+ "AVKit",
35189
+ "AVRouting",
35190
+ "Accelerate",
35191
+ "Accessibility",
35192
+ "AccessoryLiveActivities",
35193
+ "AccessoryNotifications",
35194
+ "AccessorySetupKit",
35195
+ "AccessoryTransportExtension",
35196
+ "Accounts",
35197
+ "ActivityKit",
35198
+ "AdAttributionKit",
35199
+ "AdServices",
35200
+ "AdSupport",
35201
+ "AddressBook",
35202
+ "AddressBookUI",
35203
+ "AlarmKit",
35204
+ "AppClip",
35205
+ "AppIntents",
35206
+ "AppIntentsTypeSupport",
35207
+ "AppMigrationKit",
35208
+ "AppTrackingTransparency",
35209
+ "AssetsLibrary",
35210
+ "AudioToolbox",
35211
+ "AudioUnit",
35212
+ "AuthenticationServices",
35213
+ "AutomatedDeviceEnrollment",
35214
+ "AutomaticAssessmentConfiguration",
35215
+ "BackgroundAssets",
35216
+ "BackgroundTasks",
35217
+ "BrowserEngineCore",
35218
+ "BrowserEngineKit",
35219
+ "BrowserKit",
35220
+ "BusinessChat",
35221
+ "CFNetwork",
35222
+ "CallKit",
35223
+ "CarKey",
35224
+ "CarPlay",
35225
+ "Charts",
35226
+ "ClassKit",
35227
+ "ClassKitUI",
35228
+ "ClockKit",
35229
+ "CloudKit",
35230
+ "ColorSync",
35231
+ "Combine",
35232
+ "ComputeGraph",
35233
+ "ContactProvider",
35234
+ "Contacts",
35235
+ "ContactsUI",
35236
+ "CoreAudio",
35237
+ "CoreAudioKit",
35238
+ "CoreAudioTypes",
35239
+ "CoreBluetooth",
35240
+ "CoreData",
35241
+ "CoreFoundation",
35242
+ "CoreGraphics",
35243
+ "CoreHaptics",
35244
+ "CoreImage",
35245
+ "CoreLocation",
35246
+ "CoreLocationUI",
35247
+ "CoreMIDI",
35248
+ "CoreML",
35249
+ "CoreMedia",
35250
+ "CoreMotion",
35251
+ "CoreNFC",
35252
+ "CoreServices",
35253
+ "CoreSpotlight",
35254
+ "CoreTelephony",
35255
+ "CoreText",
35256
+ "CoreTransferable",
35257
+ "CoreVideo",
35258
+ "CreateMLComponents",
35259
+ "CryptoKit",
35260
+ "CryptoTokenKit",
35261
+ "DataDetection",
35262
+ "DeclaredAgeRange",
35263
+ "DeveloperToolsSupport",
35264
+ "DeviceActivity",
35265
+ "DeviceCheck",
35266
+ "DeviceDiscoveryExtension",
35267
+ "DeviceDiscoveryUI",
35268
+ "EnergyKit",
35269
+ "EventKit",
35270
+ "EventKitUI",
35271
+ "ExposureNotification",
35272
+ "ExtensionFoundation",
35273
+ "ExtensionKit",
35274
+ "ExternalAccessory",
35275
+ "FamilyControls",
35276
+ "FileProvider",
35277
+ "FileProviderUI",
35278
+ "FinanceKit",
35279
+ "FinanceKitUI",
35280
+ "Foundation",
35281
+ "FoundationModels",
35282
+ "GLKit",
35283
+ "GSS",
35284
+ "GameController",
35285
+ "GameKit",
35286
+ "GameSave",
35287
+ "GameplayKit",
35288
+ "GeoToolbox",
35289
+ "GroupActivities",
35290
+ "HealthKit",
35291
+ "HealthKitUI",
35292
+ "HomeKit",
35293
+ "IOKit",
35294
+ "IOSurface",
35295
+ "IdentityDocumentServices",
35296
+ "IdentityDocumentServicesUI",
35297
+ "IdentityLookup",
35298
+ "IdentityLookupUI",
35299
+ "ImageCaptureCore",
35300
+ "ImageIO",
35301
+ "ImagePlayground",
35302
+ "ImmersiveMediaSupport",
35303
+ "Intents",
35304
+ "IntentsUI",
35305
+ "JavaScriptCore",
35306
+ "LinkPresentation",
35307
+ "LinkSecurity",
35308
+ "LiveCommunicationKit",
35309
+ "LocalAuthentication",
35310
+ "LocalAuthenticationEmbeddedUI",
35311
+ "LockedCameraCapture",
35312
+ "ManagedApp",
35313
+ "ManagedAppDistribution",
35314
+ "ManagedSettings",
35315
+ "ManagedSettingsUI",
35316
+ "MapKit",
35317
+ "MarketplaceKit",
35318
+ "Matter",
35319
+ "MatterSupport",
35320
+ "MediaAccessibility",
35321
+ "MediaIntelligence",
35322
+ "MediaIntents",
35323
+ "MediaPlayer",
35324
+ "MediaToolbox",
35325
+ "MessageUI",
35326
+ "Messages",
35327
+ "Metal",
35328
+ "MetalKit",
35329
+ "MetalPerformancePrimitives",
35330
+ "MetalPerformanceShaders",
35331
+ "MetalPerformanceShadersGraph",
35332
+ "MetricKit",
35333
+ "MobileCoreServices",
35334
+ "ModelIO",
35335
+ "MultipeerConnectivity",
35336
+ "MusicKit",
35337
+ "MusicUnderstanding",
35338
+ "NaturalLanguage",
35339
+ "NearbyInteraction",
35340
+ "Network",
35341
+ "NetworkExtension",
35342
+ "NotificationCenter",
35343
+ "NowPlaying",
35344
+ "OSLog",
35345
+ "OpenAL",
35346
+ "OpenGLES",
35347
+ "PDFKit",
35348
+ "PHASE",
35349
+ "PaperKit",
35350
+ "PassKit",
35351
+ "PencilKit",
35352
+ "PermissionKit",
35353
+ "Photos",
35354
+ "PhotosUI",
35355
+ "ProximityReader",
35356
+ "PushKit",
35357
+ "PushToTalk",
35358
+ "QuartzCore",
35359
+ "QuickLook",
35360
+ "QuickLookThumbnailing",
35361
+ "RealityFoundation",
35362
+ "RealityKit",
35363
+ "RelevanceKit",
35364
+ "ReplayKit",
35365
+ "RoomPlan",
35366
+ "SafariServices",
35367
+ "SafetyKit",
35368
+ "SceneKit",
35369
+ "ScreenTime",
35370
+ "SecureElementCredential",
35371
+ "Security",
35372
+ "SecurityUI",
35373
+ "SensitiveContentAnalysis",
35374
+ "SensorKit",
35375
+ "ServicesAccountLinking",
35376
+ "SharedWithYou",
35377
+ "SharedWithYouCore",
35378
+ "ShazamKit",
35379
+ "Social",
35380
+ "SoundAnalysis",
35381
+ "Speech",
35382
+ "SpriteKit",
35383
+ "StateReporting",
35384
+ "StoreKit",
35385
+ "SuggestedActions",
35386
+ "SwiftData",
35387
+ "SwiftUI",
35388
+ "SwiftUICore",
35389
+ "Symbols",
35390
+ "SystemConfiguration",
35391
+ "SystemExtensions",
35392
+ "TabularData",
35393
+ "TelephonyMessagingKit",
35394
+ "TipKit",
35395
+ "TouchController",
35396
+ "Translation",
35397
+ "TranslationUIProvider",
35398
+ "TrustInsights",
35399
+ "Twitter",
35400
+ "UIKit",
35401
+ "USDKit",
35402
+ "UniformTypeIdentifiers",
35403
+ "UserNotifications",
35404
+ "UserNotificationsUI",
35405
+ "VideoSubscriberAccount",
35406
+ "VideoToolbox",
35407
+ "Vision",
35408
+ "VisionKit",
35409
+ "WatchConnectivity",
35410
+ "WeatherKit",
35411
+ "WebKit",
35412
+ "WiFiAware",
35413
+ "WidgetKit",
35414
+ "WorkoutKit",
35415
+ "_AVKit_SwiftUI",
35416
+ "_AdAttributionKit_StoreKit",
35417
+ "_AppIntents_HealthKit",
35418
+ "_AppIntents_SwiftUI",
35419
+ "_AppIntents_UIKit",
35420
+ "_AuthenticationServices_SwiftUI",
35421
+ "_Contacts_AppIntents",
35422
+ "_CoreData_CloudKit",
35423
+ "_CoreLocationUI_SwiftUI",
35424
+ "_CoreNFC_UIKit",
35425
+ "_CoreSpotlight_FoundationModels",
35426
+ "_DataDetection_SwiftUI",
35427
+ "_DeviceActivity_SwiftUI",
35428
+ "_DeviceDiscoveryUI_SwiftUI",
35429
+ "_FinanceKit_AppIntents",
35430
+ "_FoundationModels_SwiftUI",
35431
+ "_FoundationModels_UIKit",
35432
+ "_GameController_SwiftUI",
35433
+ "_GeoToolbox_AppIntents",
35434
+ "_GroupActivities_UIKit",
35435
+ "_HomeKit_SwiftUI",
35436
+ "_Intents_TipKit",
35437
+ "_LinkPresentation_AppIntents",
35438
+ "_LocationEssentials",
35439
+ "_MapKit_SwiftUI",
35440
+ "_MarketplaceKit_UIKit",
35441
+ "_MediaIntents_AppIntents",
35442
+ "_MediaPlayer_AppIntents",
35443
+ "_MusicKit_SwiftUI",
35444
+ "_NowPlaying_AppIntents",
35445
+ "_PassKit_SwiftUI",
35446
+ "_PermissionKit_SwiftUI",
35447
+ "_PermissionKit_UIKit",
35448
+ "_PhotosUI_SwiftUI",
35449
+ "_PhotosUI_WidgetKit",
35450
+ "_Photos_AppIntents",
35451
+ "_QuickLook_SwiftUI",
35452
+ "_RealityKit_ComputeGraph",
35453
+ "_RealityKit_SwiftUI",
35454
+ "_RelevanceKit_MapKit",
35455
+ "_SceneKit_SwiftUI",
35456
+ "_SecureElementCredential_SwiftUI",
35457
+ "_SecureElementCredential_UIKit",
35458
+ "_SharedWithYou_AppIntents",
35459
+ "_SpriteKit_SwiftUI",
35460
+ "_StoreKit_SwiftUI",
35461
+ "_SwiftData_CoreData",
35462
+ "_SwiftData_SwiftUI",
35463
+ "_Translation_SwiftUI",
35464
+ "_USDKit_RealityKit",
35465
+ "_UserNotifications_AppIntents",
35466
+ "_WebKit_SwiftUI",
35467
+ "_WorkoutKit_SwiftUI",
35468
+ "iAd"
35469
+ ]
35470
+ };
35471
+ }
35472
+ });
35473
+
35170
35474
  // src/android-string-value.ts
35171
35475
  function compileAndroidStringValue(text6, where) {
35172
35476
  if (/^\s*[@?]/.test(text6))
@@ -35671,8 +35975,20 @@ function xcodeTargetMemberVisitor(objects) {
35671
35975
  for (const id of refs) {
35672
35976
  const file = resolvePath(id);
35673
35977
  if (file === null) continue;
35674
- if (phase.isa === "PBXSourcesBuildPhase") visit3(file, "source");
35675
- else for (const inner of filesUnder(file)) visit3(inner, "resource");
35978
+ if (phase.isa === "PBXSourcesBuildPhase") {
35979
+ visit3(file, "source");
35980
+ continue;
35981
+ }
35982
+ const ref = objects[id];
35983
+ const type = isDict(ref) ? str(ref.lastKnownFileType) ?? str(ref.explicitFileType) ?? "" : "";
35984
+ const root = file.replace(/[\\/]+$/, "");
35985
+ const folder = FOLDER_REFERENCE.test(type) ? root.split(/[\\/]/).pop() : void 0;
35986
+ for (const inner of filesUnder(file))
35987
+ visit3(
35988
+ inner,
35989
+ "resource",
35990
+ folder && `${folder}/${inner.slice(root.length + 1).replaceAll("\\", "/")}`
35991
+ );
35676
35992
  }
35677
35993
  }
35678
35994
  }
@@ -35710,13 +36026,14 @@ function xcodeTargetMemberVisitor(objects) {
35710
36026
  }
35711
36027
  };
35712
36028
  }
35713
- var NEVER_MEMBER, BUNDLE_DIR;
36029
+ var NEVER_MEMBER, FOLDER_REFERENCE, BUNDLE_DIR;
35714
36030
  var init_xcode_target_members = __esm({
35715
36031
  "src/xcode-target-members.ts"() {
35716
36032
  "use strict";
35717
36033
  init_define_SWIFT_COVERAGE_SOURCE_DIGESTS();
35718
36034
  init_openstep_plist();
35719
36035
  NEVER_MEMBER = /(?:^|\/)(?:Info\.plist|[^/]+\.entitlements|[^/]+\.xcconfig|\.DS_Store)$/;
36036
+ FOLDER_REFERENCE = /^(?:folder|wrapper\.scnassets)$/;
35720
36037
  BUNDLE_DIR = /\.(xcassets|bundle|lproj|xcdatamodeld|scnassets|spriteatlas|rcproject|storyboardc|icon)$/;
35721
36038
  }
35722
36039
  });
@@ -38353,12 +38670,13 @@ function planAssetSymbols(resources, root, settings) {
38353
38670
  "2": ["ipad"],
38354
38671
  "1,2": ["iphone", "ipad"],
38355
38672
  "1,7": ["iphone"],
38673
+ "1,3,7": ["iphone"],
38356
38674
  "1,2,6": ["iphone", "ipad"],
38357
38675
  "1,2,7": ["iphone", "ipad"]
38358
38676
  }[families];
38359
38677
  if (!devices2)
38360
38678
  return unknown2(
38361
- `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}".`
38679
+ `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}".`
38362
38680
  );
38363
38681
  const plan = {
38364
38682
  catalogs: catalogs.map((path141) => ({
@@ -52367,6 +52685,7 @@ async function runWasmOpt(file, output2, skipPasses, binary2) {
52367
52685
  const result = await (0, import_wasm_opt.wasmOpt)(
52368
52686
  [
52369
52687
  "-Oz",
52688
+ ...KEEP_WASM_NAMES ? ["-g"] : [],
52370
52689
  ...skipPasses.flatMap((pass) => ["--skip-pass", pass]),
52371
52690
  ...FEATURES.map((feature) => `--enable-${feature}`),
52372
52691
  file,
@@ -52400,7 +52719,7 @@ async function installWasmOpt() {
52400
52719
  async function optimizeWasm(file, output2, skipPasses = []) {
52401
52720
  await runWasmOpt(file, output2, skipPasses, await installWasmOpt());
52402
52721
  }
52403
- var import_node_fs45, import_node_path42, import_wasm_opt, FEATURES, WASM_OPTIMIZE_IDENTITY, PINNED_BINARYEN_VERSION, BINARYEN_RELEASES;
52722
+ var import_node_fs45, import_node_path42, import_wasm_opt, FEATURES, KEEP_WASM_NAMES, WASM_OPTIMIZE_IDENTITY, PINNED_BINARYEN_VERSION, BINARYEN_RELEASES;
52404
52723
  var init_wasm_optimize = __esm({
52405
52724
  "src/wasm-optimize.ts"() {
52406
52725
  "use strict";
@@ -52423,7 +52742,8 @@ var init_wasm_optimize = __esm({
52423
52742
  "reference-types",
52424
52743
  "sign-ext"
52425
52744
  ];
52426
- WASM_OPTIMIZE_IDENTITY = `wasm-opt ${import_wasm_opt.BINARYEN_VERSION} -Oz ${FEATURES.join(",")}`;
52745
+ KEEP_WASM_NAMES = process.env.PEACH_SWIFT_NAMES === "1";
52746
+ WASM_OPTIMIZE_IDENTITY = `wasm-opt ${import_wasm_opt.BINARYEN_VERSION} -Oz ${FEATURES.join(",")}${KEEP_WASM_NAMES ? " -g" : ""}`;
52427
52747
  PINNED_BINARYEN_VERSION = "132";
52428
52748
  BINARYEN_RELEASES = /* @__PURE__ */ new Map([
52429
52749
  [
@@ -53223,7 +53543,7 @@ function swiftSubmoduleImports(sources) {
53223
53543
  }
53224
53544
  return imports2;
53225
53545
  }
53226
- function swiftObjCModuleMap(module2, headers, submodules = /* @__PURE__ */ new Set()) {
53546
+ function swiftObjCModuleMap(module2, headers, submodules = /* @__PURE__ */ new Set(), swiftHeader) {
53227
53547
  const header = (file) => `header ${JSON.stringify(file)}`;
53228
53548
  const stem = (file) => file.slice(file.lastIndexOf("/") + 1).replace(/\.[^.]*$/, "");
53229
53549
  return [
@@ -53231,6 +53551,7 @@ function swiftObjCModuleMap(module2, headers, submodules = /* @__PURE__ */ new S
53231
53551
  ...headers.map(
53232
53552
  (file) => submodules.has(stem(file)) ? ` module ${stem(file)} { ${header(file)} export * }` : ` ${header(file)}`
53233
53553
  ),
53554
+ ...swiftHeader ? [" module Swift {", ` ${header(swiftHeader)}`, " requires objc", " }"] : [],
53234
53555
  " export *",
53235
53556
  "}",
53236
53557
  ""
@@ -54506,6 +54827,7 @@ ${release}
54506
54827
  `);
54507
54828
  hash.update(compilerSourceDigest);
54508
54829
  if (input.oneModule) hash.update("one-module\n");
54830
+ if (KEEP_WASM_NAMES) hash.update("names\n");
54509
54831
  hash.update(swiftModuleDigest(moduleRoot));
54510
54832
  if (input.optimize) hash.update(`optimize
54511
54833
  ${WASM_OPTIMIZE_IDENTITY}
@@ -54617,7 +54939,14 @@ function toolsetOrdersLibcxxBeforeDarwinOverlay(options) {
54617
54939
  return libcxx >= 0 && overlay > libcxx;
54618
54940
  }
54619
54941
  function emitSwiftPackageManifest(args) {
54620
- const { targets, siblings, moduleRoot, oneModule, spriteKit, distribution } = args;
54942
+ const {
54943
+ targets,
54944
+ siblings,
54945
+ moduleRoot,
54946
+ oneModule,
54947
+ gameProducts: gameProducts2 = [],
54948
+ distribution
54949
+ } = args;
54621
54950
  const prebuilt = args.prebuilt;
54622
54951
  const linkedObjects = Boolean(distribution || prebuilt);
54623
54952
  const cxxFlagsFor = (flags) => args.deferDarwinOverlay ? withoutWasmOverlayIsystem(flags) : flags;
@@ -54646,9 +54975,8 @@ function emitSwiftPackageManifest(args) {
54646
54975
  for (const name3 of [...siblings.values()].flat())
54647
54976
  if (OPTIONAL_FRAMEWORKS.has(name3) && !targets.some((target) => target.name === name3))
54648
54977
  reach(name3);
54649
- if (spriteKit) {
54650
- for (const name3 of ["SpriteKit", "PeachBox2D", "simd", "GLKit"]) reach(name3);
54651
- }
54978
+ for (const product of gameProducts2)
54979
+ for (const name3 of GAME_REACH[product] ?? []) reach(name3);
54652
54980
  let distributionLinkPath;
54653
54981
  const distributionLink = args.distributionLink;
54654
54982
  if (distribution && distributionLink) {
@@ -54671,7 +54999,7 @@ function emitSwiftPackageManifest(args) {
54671
54999
  (object6) => !isProvider(object6) && !replacedObjects.has(object6)
54672
55000
  );
54673
55001
  const objects = available.filter(
54674
- (object6) => !targets.some((target) => object6.startsWith(`lib/${target.name}-`)) && [...OPTIONAL_FRAMEWORKS, "SpriteKit", "PeachBox2D"].every(
55002
+ (object6) => !targets.some((target) => object6.startsWith(`lib/${target.name}-`)) && [...OPTIONAL_FRAMEWORKS, ...GAME_FAMILY, "PeachBox2D"].every(
54675
55003
  (name3) => !object6.startsWith(`lib/${name3}-`) || reachedFrameworks.has(name3)
54676
55004
  )
54677
55005
  );
@@ -54788,6 +55116,10 @@ function emitSwiftPackageManifest(args) {
54788
55116
  includeImportContext(dependency);
54789
55117
  const importedNativeFlags = [
54790
55118
  ...args.nativeImportFlags?.get(target.name) ?? [],
55119
+ ...[...importContext].flatMap((name3) => {
55120
+ const map2 = name3 === target.name ? void 0 : args.nativeSwiftHeaderMaps?.get(name3);
55121
+ return map2 ? ["-fmodule-map-file=" + map2] : [];
55122
+ }),
54791
55123
  ...[...importContext].flatMap((name3) => args.native?.get(name3)?.importFlags ?? []),
54792
55124
  ...[...importContext].flatMap((name3) => {
54793
55125
  const flags = targets.find((target2) => target2.name === name3)?.swiftFlags ?? [];
@@ -54830,7 +55162,7 @@ function emitSwiftPackageManifest(args) {
54830
55162
  ...linkedObjects || clang && !target.executable ? [] : [
54831
55163
  '.product(name: "SwiftUI", package: "sootsim-swift")',
54832
55164
  ...oneModule ? [ONE_PRODUCT] : [],
54833
- ...spriteKit ? [SPRITEKIT_PRODUCT] : []
55165
+ ...gameProducts2.map(gameProduct)
54834
55166
  ],
54835
55167
  ...(siblings.get(target.name) ?? []).flatMap(
54836
55168
  (dependency) => clang && // textual native headers can include one another without imposing
@@ -54862,7 +55194,7 @@ function emitSwiftPackageManifest(args) {
54862
55194
  .unsafeFlags(${flagArray(`[
54863
55195
  ${REACTOR_FLAG}${executableLinkFlags(args.root)} "-Xlinker", "--export-if-defined=__main_argc_argv"${library},
54864
55196
  ]`)}),
54865
- .unsafeFlags(["-Xlinker", "--strip-all"], .when(configuration: .release)),
55197
+ ${KEEP_WASM_NAMES ? "" : '.unsafeFlags(["-Xlinker", "--strip-all"], .when(configuration: .release)),'}
54866
55198
  ]` : librarySettings.length > 0 ? `,
54867
55199
  linkerSettings: [${librarySettings.join(", ")}]` : "";
54868
55200
  const cDefines = macroSettings(target.cDefines);
@@ -56068,6 +56400,7 @@ ${swiftProjectFilesProblems(input.projectFiles).join("\n")}`
56068
56400
  )
56069
56401
  );
56070
56402
  const importModuleMaps = /* @__PURE__ */ new Map();
56403
+ const sourceModuleMaps = /* @__PURE__ */ new Map();
56071
56404
  const generatedModuleMaps = [];
56072
56405
  for (const target of targets) {
56073
56406
  const prefix = target.path === "." ? "" : `${target.path}/`;
@@ -56302,6 +56635,10 @@ ${swiftProjectFilesProblems(input.projectFiles).join("\n")}`
56302
56635
  stageTargetFile(target.name, import_node_path51.default.join(layout2.root, modulemap), moduleContents, {
56303
56636
  allowExisting: true
56304
56637
  });
56638
+ sourceModuleMaps.set(swiftTargetModuleName(target.name), {
56639
+ path: import_node_path51.default.join(layout2.root, modulemap),
56640
+ contents: moduleContents.toString()
56641
+ });
56305
56642
  if (modulemap.endsWith("/Modules/module.modulemap")) {
56306
56643
  const framework = import_node_path51.default.posix.dirname(import_node_path51.default.posix.dirname(modulemap));
56307
56644
  for (const [, header] of moduleContents.toString().matchAll(/\bheader\s+"([^"]+)"/g))
@@ -56576,6 +56913,7 @@ ${swiftProjectFilesProblems(input.projectFiles).join("\n")}`
56576
56913
  if (native.size > 0) (0, import_node_fs54.mkdirSync)(headerDirectory, { recursive: true });
56577
56914
  const headerAliasFlags = Object.keys(input.headerAliases ?? {}).length > 0 ? ["-ivfsoverlay", headerSearch.files[0]] : [];
56578
56915
  const nativeHeaderFlags = [...headerAliasFlags];
56916
+ const nativeSwiftHeaderMaps = /* @__PURE__ */ new Map();
56579
56917
  const originalMaps = /* @__PURE__ */ new Map();
56580
56918
  for (const target of input.nativeTargets ?? []) {
56581
56919
  for (const flag of [...target.flags, ...target.cxxFlags]) {
@@ -56606,30 +56944,33 @@ ${swiftProjectFilesProblems(input.projectFiles).join("\n")}`
56606
56944
  );
56607
56945
  const moduleName2 = swiftTargetModuleName(name3);
56608
56946
  const originalMap = originalMaps.get(moduleName2);
56609
- const originalTokens = originalMap ? moduleMapTokens(input.files[originalMap]) : [];
56610
- if (originalMap && originalTokens.some(
56947
+ const stagedMap = sourceModuleMaps.get(moduleName2);
56948
+ const originalPath = originalMap ? import_node_path51.default.join(layout2.root, originalMap) : stagedMap?.path;
56949
+ const originalContents = originalMap ? input.files[originalMap] : stagedMap?.contents;
56950
+ const originalTokens = originalContents ? moduleMapTokens(originalContents) : [];
56951
+ if (originalPath && originalTokens.some(
56611
56952
  (token, index) => token === "module" && (originalTokens[index + 1] === "Swift" || originalTokens[index + 1] === `${moduleName2}.Swift`)
56612
56953
  )) {
56613
- nativeHeaderFlags.push("-fmodule-map-file=" + import_node_path51.default.join(layout2.root, originalMap));
56954
+ nativeHeaderFlags.push("-fmodule-map-file=" + originalPath);
56955
+ nativeSwiftHeaderMaps.set(name3, originalPath);
56614
56956
  continue;
56615
56957
  }
56616
56958
  files2.set(
56617
56959
  modulemap,
56618
- originalMap ? `extern module ${moduleName2} ${JSON.stringify(import_node_path51.default.join(layout2.root, originalMap))}
56960
+ originalPath ? `extern module ${moduleName2} ${JSON.stringify(originalPath)}
56619
56961
  module ${moduleName2}.Swift {
56620
56962
  header ${JSON.stringify(import_node_path51.default.join(headerDirectory, name3 + "-Swift.h"))}
56621
56963
  requires objc
56622
56964
  }
56623
56965
  ` : swiftObjCModuleMap(
56624
56966
  moduleName2,
56625
- [
56626
- ...(input.nativeTargets?.find((target) => target.name === name3)?.publicHeaders ?? []).map((header) => import_node_path51.default.join(layout2.root, header)),
56627
- import_node_path51.default.join(headerDirectory, name3 + "-Swift.h")
56628
- ],
56629
- submoduleImports.get(moduleName2)
56967
+ (input.nativeTargets?.find((target) => target.name === name3)?.publicHeaders ?? []).map((header) => import_node_path51.default.join(layout2.root, header)),
56968
+ submoduleImports.get(moduleName2),
56969
+ import_node_path51.default.join(headerDirectory, name3 + "-Swift.h")
56630
56970
  )
56631
56971
  );
56632
56972
  nativeHeaderFlags.push("-fmodule-map-file=" + modulemap);
56973
+ nativeSwiftHeaderMaps.set(name3, modulemap);
56633
56974
  }
56634
56975
  const modulePlan = (0, import_node_crypto25.createHash)("sha256").update(
56635
56976
  swiftModuleInputFiles(moduleRoot).join("\n")
@@ -56880,14 +57221,17 @@ module ${moduleName2}.Swift {
56880
57221
  manifest = manifest.replace(product, `${product}
56881
57222
  ${ONE_PRODUCT},`).replace(flags, `${flags}${ONE_IMPLICIT_FLAGS}`);
56882
57223
  }
56883
- if (importsSpriteKit(input.files)) {
57224
+ const games = gameProducts(input.files);
57225
+ if (games.length > 0) {
56884
57226
  const anchor = '.product(name: "CoreLocation", package: "sootsim-swift"),';
56885
57227
  if (!manifest.includes(anchor))
56886
57228
  throw new Error(
56887
- "scripts/contrast-app-Package.swift lost the line the SpriteKit product links at"
57229
+ "scripts/contrast-app-Package.swift lost the line the game products link at"
56888
57230
  );
56889
- manifest = manifest.replace(anchor, `${anchor}
56890
- ${SPRITEKIT_PRODUCT},`);
57231
+ manifest = manifest.replace(
57232
+ anchor,
57233
+ [anchor, ...games.map((name3) => `${gameProduct(name3)},`)].join("\n ")
57234
+ );
56891
57235
  }
56892
57236
  files2.set(import_node_path51.default.join(layout2.root, "Package.swift"), manifest + moduleFiles);
56893
57237
  } else {
@@ -56986,6 +57330,7 @@ module ${moduleName2}.Swift {
56986
57330
  nativeFlags,
56987
57331
  nativeImportFlags,
56988
57332
  nativeHeaderFlags,
57333
+ nativeSwiftHeaderMaps,
56989
57334
  nativeHeaderDeclarations,
56990
57335
  objcImplementationModules: new Set(
56991
57336
  targets.filter(
@@ -57001,7 +57346,7 @@ module ${moduleName2}.Swift {
57001
57346
  siblings: moduleSiblings,
57002
57347
  moduleRoot,
57003
57348
  oneModule: input.oneModule,
57004
- spriteKit: importsSpriteKit(input.files),
57349
+ gameProducts: gameProducts(input.files),
57005
57350
  distribution: distribution ?? void 0,
57006
57351
  moduleExcludes,
57007
57352
  deferDarwinOverlay: native.size > 0 && toolsetOrdersLibcxxBeforeDarwinOverlay(
@@ -57143,30 +57488,30 @@ module ${moduleName2}.Swift {
57143
57488
  )
57144
57489
  ])
57145
57490
  );
57491
+ const producerSet = /* @__PURE__ */ new Set([...Object.keys(nativeHeaderDeclarations), ...producers]);
57492
+ const orderedProducers = [];
57146
57493
  const included = /* @__PURE__ */ new Set();
57147
57494
  const include = (name3) => {
57148
57495
  if (included.has(name3)) return;
57149
57496
  included.add(name3);
57150
57497
  for (const dependency of dependencies.get(name3) ?? []) include(dependency);
57498
+ if (producerSet.has(name3)) orderedProducers.push(name3);
57151
57499
  };
57152
- for (const producer of producers)
57500
+ for (const producer of producerSet)
57153
57501
  for (const dependency of dependencies.get(producer) ?? []) include(dependency);
57502
+ const needsHeaderStages = [...producerSet].some((name3) => included.has(name3));
57503
+ for (const producer of producerSet) include(producer);
57154
57504
  return {
57155
57505
  nativeBuildTargets: [...native].flatMap(([name3, plan]) => [
57156
57506
  ...!plan.mixed && plan.sources.length > 0 ? [name3] : [],
57157
57507
  ...plan.groups?.map((group) => group.name) ?? (plan.late ? [plan.late.name] : [])
57158
57508
  ]),
57159
- headerProducers: [
57160
- .../* @__PURE__ */ new Set([
57161
- ...Object.keys(nativeHeaderDeclarations),
57162
- ...producers.filter((name3) => !included.has(name3))
57163
- ])
57164
- ],
57509
+ headerProducers: orderedProducers,
57165
57510
  emittedHeaderProducers: [
57166
57511
  .../* @__PURE__ */ new Set([...Object.keys(nativeHeaderDeclarations), ...producers])
57167
57512
  ],
57168
57513
  nativeHeaderDeclarations,
57169
- headerProductTarget,
57514
+ headerProductTarget: needsHeaderStages ? void 0 : headerProductTarget,
57170
57515
  targetFailures,
57171
57516
  generatedOwners,
57172
57517
  targetToolset
@@ -57400,14 +57745,9 @@ function linkedFrameworkTargets(moduleRoot, input) {
57400
57745
  ))
57401
57746
  reach(match[1]);
57402
57747
  }
57403
- if (importsSpriteKit(input.files))
57404
- for (const name3 of ["SpriteKit", "PeachBox2D", "simd", "GLKit"]) reach(name3);
57405
- const wanted = [
57406
- "PeachApp",
57407
- ...input.oneModule ? ["One"] : [],
57408
- ...importsSpriteKit(input.files) ? ["SpriteKit"] : [],
57409
- ...reached
57410
- ];
57748
+ const games = gameProducts(input.files);
57749
+ for (const product of games) for (const name3 of GAME_REACH[product] ?? []) reach(name3);
57750
+ const wanted = ["PeachApp", ...input.oneModule ? ["One"] : [], ...games, ...reached];
57411
57751
  const linked = [...new Set(wanted)].filter((name3) => libraries.has(name3));
57412
57752
  if (!linked.includes("PeachApp"))
57413
57753
  throw new Error("swift-compile: the framework package declares no PeachApp library");
@@ -58310,7 +58650,7 @@ function compileSwiftProjectOnce(input, options) {
58310
58650
  options.signal
58311
58651
  );
58312
58652
  }
58313
- var import_node_child_process31, import_node_crypto25, import_node_fs54, import_node_os12, import_node_path51, 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, cPredefineTable, cPredefineCache, 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;
58653
+ var import_node_child_process31, import_node_crypto25, import_node_fs54, import_node_os12, import_node_path51, 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, cPredefineTable, cPredefineCache, 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;
58314
58654
  var init_swift_compile = __esm({
58315
58655
  "src/swift-compile.ts"() {
58316
58656
  "use strict";
@@ -58354,7 +58694,10 @@ var init_swift_compile = __esm({
58354
58694
  SWIFTPM_NOISE = /^(?:\[\d+\/\d+\] |Building for production\.\.\.$|warning: '--build-system native' has been deprecated)/;
58355
58695
  SWIFT_BUILDER_TRANSPORT_MARGIN_MS = 3e5;
58356
58696
  SWIFT_BUILDER_DEFAULT_COMPILE_MS = 18e5;
58357
- clangInterfaceHeader = (header) => header.replace(/^@import (?:UIKitCore|UIKitText);$/gm, "@import UIKit;").replace(/^@import CoreFoundation;$/gm, "@import Foundation;").replace(/\b_TtC10Foundation\d+(NS\w+)\b/g, "$1").replace(/\b__attribute__\(\(objc_subclassing_restricted\)\)\s*/g, "");
58697
+ clangInterfaceHeader = (header) => header.replace(/^@import (?:UIKitCore|UIKitText);$/gm, "@import UIKit;").replace(
58698
+ /^@import (?:CoreFoundation|FoundationNetworking);$/gm,
58699
+ "@import Foundation;"
58700
+ ).replace(/\b_TtC10Foundation\d+(NS\w+)\b/g, "$1").replace(/\b__attribute__\(\(objc_subclassing_restricted\)\)\s*/g, "");
58358
58701
  swiftInterfaceDeclarations = (header) => /* @__PURE__ */ new Set([
58359
58702
  ...[
58360
58703
  ...header.matchAll(
@@ -58382,7 +58725,8 @@ var init_swift_compile = __esm({
58382
58725
  PeachCFNetwork: [],
58383
58726
  JavaScriptCore: ["PeachJavaScriptCore"],
58384
58727
  PeachJavaScriptCore: [],
58385
- GameplayKit: [],
58728
+ // GameplayKit names SpriteKit and SceneKit nodes, as on iOS
58729
+ GameplayKit: ["SpriteKit", "SceneKit", "PeachBox2D", "simd", "GLKit"],
58386
58730
  simd: [],
58387
58731
  ModelIO: ["simd"],
58388
58732
  GLKit: ["ModelIO"],
@@ -58494,10 +58838,21 @@ int EXUpdatesApplyBSDiffPatch(const char * _Nonnull oldFilePath,
58494
58838
  }
58495
58839
  ];
58496
58840
  ONE_PRODUCT = '.product(name: "One", package: "sootsim-swift")';
58497
- SPRITEKIT_PRODUCT = '.product(name: "SpriteKit", package: "sootsim-swift")';
58498
- importsSpriteKit = (files2) => Object.entries(files2).some(
58499
- ([file, contents]) => file.endsWith(".swift") && swiftImportNames(contents).includes("SpriteKit")
58500
- );
58841
+ GAME_FAMILY = ["SpriteKit", "SceneKit"];
58842
+ gameProducts = (files2) => {
58843
+ const imported = new Set(
58844
+ Object.entries(files2).flatMap(
58845
+ ([file, contents]) => file.endsWith(".swift") ? swiftImportNames(contents) : []
58846
+ )
58847
+ );
58848
+ if (imported.has("SceneKit")) return [...GAME_FAMILY];
58849
+ return imported.has("SpriteKit") ? ["SpriteKit"] : [];
58850
+ };
58851
+ gameProduct = (name3) => `.product(name: "${name3}", package: "sootsim-swift")`;
58852
+ GAME_REACH = {
58853
+ SpriteKit: ["SpriteKit", "PeachBox2D", "simd", "GLKit"],
58854
+ SceneKit: ["SceneKit"]
58855
+ };
58501
58856
  FOUNDATION_IMPLICIT_MODULES = [
58502
58857
  "PeachObjC",
58503
58858
  "Dispatch",
@@ -58524,7 +58879,7 @@ int EXUpdatesApplyBSDiffPatch(const char * _Nonnull oldFilePath,
58524
58879
  REACTOR_FLAG = '"-Xclang-linker", "-mexec-model=reactor",\n';
58525
58880
  MULTI_MANIFEST_VERSION = 68;
58526
58881
  SWIFT_HEADER_PRODUCTS_TARGET = "PeachHeaderProducts";
58527
- compilerSourceDigest = true ? "0a0bc1c871aee83ea273120655f55a43ddccde646478a452b4c73d2daefd58c3" : swiftCompilerSourceDigest(__sootsim_import_meta_dirname);
58882
+ compilerSourceDigest = true ? "eba60b7a2e9485f928a6ec2e544e10d84b2b33430be66b9e069c9797a927af86" : swiftCompilerSourceDigest(__sootsim_import_meta_dirname);
58528
58883
  nativeCxxCompilerFlags = ["-fno-cxx-modules"];
58529
58884
  cFlagArray = (flags) => JSON.stringify(withoutGlogModuleMap(flags));
58530
58885
  cxxFlagArray = (flags) => JSON.stringify([...nativeCxxCompilerFlags, ...withoutGlogModuleMap(flags)]);
@@ -58855,8 +59210,6 @@ int EXUpdatesApplyBSDiffPatch(const char * _Nonnull oldFilePath,
58855
59210
  "NSURLProtectionSpaceHTTPS",
58856
59211
  "NSURLProtectionSpaceHTTPSProxy",
58857
59212
  "NSURLProtectionSpaceSOCKSProxy",
58858
- "NSURLSessionDownloadTaskResumeData",
58859
- "NSURLSessionTransferSizeUnknown",
58860
59213
  "NSURLSessionUploadTaskResumeData",
58861
59214
  "NSUTF16BigEndianStringEncoding",
58862
59215
  "NSUTF16LittleEndianStringEncoding",
@@ -61179,6 +61532,7 @@ function targetMembers(ref, settings, options, settingKeys, projectInputs) {
61179
61532
  const allSources = /* @__PURE__ */ new Set();
61180
61533
  const headers = /* @__PURE__ */ new Set();
61181
61534
  const resources = /* @__PURE__ */ new Set();
61535
+ const resourceNames = {};
61182
61536
  const scriptForOutput = /* @__PURE__ */ new Map();
61183
61537
  const copiedFiles = [];
61184
61538
  let generatedInfoPlist = false;
@@ -61348,13 +61702,14 @@ ${output2}`
61348
61702
  xcodePathResolver(project2.objects, project2.projectDir, import_node_path56.default.join, settings),
61349
61703
  (file) => isDirectory(file) ? walkFiles(file) : import_node_fs58.default.existsSync(file) ? [file] : [],
61350
61704
  import_node_path56.default.join,
61351
- (file, kind) => {
61705
+ (file, kind, bundleName) => {
61352
61706
  if (kind === "header") {
61353
61707
  headers.add(file);
61354
61708
  return;
61355
61709
  }
61356
61710
  if (kind === "resource") {
61357
61711
  resources.add(file);
61712
+ if (bundleName) resourceNames[file] = bundleName;
61358
61713
  return;
61359
61714
  }
61360
61715
  if (!import_node_fs58.default.existsSync(file)) {
@@ -61478,6 +61833,7 @@ ${output2}`
61478
61833
  return {
61479
61834
  sources: [...sources].sort(),
61480
61835
  resources: [...resources].sort(),
61836
+ resourceNames,
61481
61837
  copiedFiles,
61482
61838
  generatedInfoPlist,
61483
61839
  allSources: [...allSources].sort(),
@@ -62722,10 +63078,14 @@ function readXcodeAppTarget(input, targetName, configurationName, options = {})
62722
63078
  byProduct.has(import_node_path56.default.basename(rawPath)))
62723
63079
  continue;
62724
63080
  const resolved = fileId ? project2.resolvePath(fileId) : null;
62725
- if (fileId && resolved !== null && !import_node_fs58.default.existsSync(resolved))
62726
- throw new Error(
62727
- `${str(target.name) ?? "target"}: linked framework ${name3} (${fileId}) points at missing ${resolved} in ${project2.projectFile}`
62728
- );
63081
+ if (fileId && resolved !== null && !import_node_fs58.default.existsSync(resolved)) {
63082
+ if (!ios_sdk_frameworks_default.frameworks.includes(name3))
63083
+ throw new Error(
63084
+ `${str(target.name) ?? "target"}: linked framework ${name3} (${fileId}) points at missing ${resolved} in ${project2.projectFile}`
63085
+ );
63086
+ sdkFrameworks.add(name3);
63087
+ continue;
63088
+ }
62729
63089
  if (!binaryFrameworks.get(name3)) binaryFrameworks.set(name3, resolved);
62730
63090
  }
62731
63091
  }
@@ -62802,7 +63162,12 @@ function readXcodeAppTarget(input, targetName, configurationName, options = {})
62802
63162
  ...linkedProducts.flatMap(
62803
63163
  ({ source }) => source.kind === "local" && import_node_fs58.default.existsSync(source.dir) ? [source.dir] : []
62804
63164
  ),
62805
- ...new Set(podSourceDirs)
63165
+ ...new Set(podSourceDirs),
63166
+ // a target's own files may sit beside the project, such as an asset
63167
+ // catalog one folder up, and xcode builds them from there
63168
+ ...new Set(
63169
+ [...module2.allSources, ...module2.resources].filter((file) => import_node_fs58.default.existsSync(file)).map((file) => import_node_path56.default.dirname(file))
63170
+ )
62806
63171
  ].map((dir) => import_node_fs58.default.realpathSync.native(dir))
62807
63172
  ),
62808
63173
  projectFiles: [
@@ -62847,6 +63212,7 @@ var init_xcode_project = __esm({
62847
63212
  import_node_fs58 = __toESM(require("node:fs"), 1);
62848
63213
  import_node_path56 = __toESM(require("node:path"), 1);
62849
63214
  import_plist2 = __toESM(require("plist"), 1);
63215
+ init_ios_sdk_frameworks();
62850
63216
  init_is_record();
62851
63217
  init_native_app_identity();
62852
63218
  init_prepared_xcode_phases();
@@ -63900,7 +64266,7 @@ async function hashWorkspaceInputs(app, everyByte, signal, sourceOnly = false, p
63900
64266
  signal?.throwIfAborted();
63901
64267
  const file = import_node_path62.default.join(directory2, entry.name);
63902
64268
  const relative5 = import_node_path62.default.relative(root, file);
63903
- if (excluded(relative5)) continue;
64269
+ if (excluded(relative5, entry.isDirectory())) continue;
63904
64270
  hash.update(`${relative5}\0`);
63905
64271
  if (entry.isSymbolicLink()) {
63906
64272
  const link = `link\0${await import_node_fs64.default.promises.readlink(file)}\0`;
@@ -64024,8 +64390,10 @@ function syncChangedFiles(root, work, appRelative, excluded, installed2) {
64024
64390
  if (existing && (newerOnly ? existing.mtime.getTime() >= source.mtime.getTime() : existing.size === source.size && existing.mtime.getTime() === source.mtime.getTime()))
64025
64391
  return;
64026
64392
  import_node_fs64.default.mkdirSync(import_node_path62.default.dirname(target), { recursive: true });
64027
- import_node_fs64.default.copyFileSync(file, target);
64028
- import_node_fs64.default.utimesSync(target, source.atime, source.mtime);
64393
+ const staged = `${target}.${process.pid}.peach-sync`;
64394
+ import_node_fs64.default.copyFileSync(file, staged);
64395
+ import_node_fs64.default.utimesSync(staged, source.atime, source.mtime);
64396
+ import_node_fs64.default.renameSync(staged, target);
64029
64397
  };
64030
64398
  const walkInstalled = (directory2) => {
64031
64399
  for (const entry of import_node_fs64.default.readdirSync(directory2, { withFileTypes: true })) {
@@ -64043,7 +64411,7 @@ function syncChangedFiles(root, work, appRelative, excluded, installed2) {
64043
64411
  walkInstalled(file);
64044
64412
  continue;
64045
64413
  }
64046
- if (excluded(relative5) || entry.isSymbolicLink() || !sourceIos && relative5 === import_node_path62.default.join(appRelative, "ios"))
64414
+ if (excluded(relative5, entry.isDirectory()) || entry.isSymbolicLink() || !sourceIos && relative5 === import_node_path62.default.join(appRelative, "ios"))
64047
64415
  continue;
64048
64416
  if (entry.isDirectory()) walk3(file);
64049
64417
  else if (entry.isFile()) {
@@ -64991,7 +65359,7 @@ var init_swift_standin_digest = __esm({
64991
65359
  STANDIN_DIGEST_ENTRYPOINTS = ["swift-standins.ts", "swift-objc-compile.ts"];
64992
65360
  SPECIFIER = /from\s*['"]([^'"]+)['"]|import\s*\(\s*['"]([^'"]+)['"]\s*\)/g;
64993
65361
  standinSourceDigest = (srcDir = __sootsim_import_meta_dirname) => sourceClosureDigest(srcDir, STANDIN_DIGEST_ENTRYPOINTS);
64994
- STANDIN_SOURCE_DIGEST = true ? "c0f609da62368c513c186d23bc8aa8e450d27efae5b8c2e7cdf50d34fa734ff0" : standinSourceDigest();
65362
+ STANDIN_SOURCE_DIGEST = true ? "1a62599378cd7cdf32385f588eb3f983f07ea222d145ec5b6dc34cce9104f46c" : standinSourceDigest();
64995
65363
  }
64996
65364
  });
64997
65365
 
@@ -65452,7 +65820,7 @@ var init_package_tree_digest = __esm({
65452
65820
 
65453
65821
  // src/expo-native-prebuilt.ts
65454
65822
  function expoNativeCompilerDigestValue() {
65455
- return true ? "8e765b5dfd0ec93d9027f9d10365ed11f7d85a195d0a888dd1fb76b99195ff2e" : expoNativeCompilerDigest(__sootsim_import_meta_dirname);
65823
+ return true ? "db679f96e034ef5a3e217e2553ec748fa11d5dd68cd9247dd7bcae61a03d42a1" : expoNativeCompilerDigest(__sootsim_import_meta_dirname);
65456
65824
  }
65457
65825
  function readSources(value) {
65458
65826
  const sources = isRecord(value) ? value.sources : null;
@@ -73878,302 +74246,6 @@ var init_core_data_entity_classes = __esm({
73878
74246
  }
73879
74247
  });
73880
74248
 
73881
- // src/ios-sdk-frameworks.json
73882
- var ios_sdk_frameworks_default;
73883
- var init_ios_sdk_frameworks = __esm({
73884
- "src/ios-sdk-frameworks.json"() {
73885
- ios_sdk_frameworks_default = {
73886
- sdk: "iphonesimulator27.1",
73887
- frameworks: [
73888
- "ARKit",
73889
- "AVFAudio",
73890
- "AVFoundation",
73891
- "AVKit",
73892
- "AVRouting",
73893
- "Accelerate",
73894
- "Accessibility",
73895
- "AccessoryLiveActivities",
73896
- "AccessoryNotifications",
73897
- "AccessorySetupKit",
73898
- "AccessoryTransportExtension",
73899
- "Accounts",
73900
- "ActivityKit",
73901
- "AdAttributionKit",
73902
- "AdServices",
73903
- "AdSupport",
73904
- "AddressBook",
73905
- "AddressBookUI",
73906
- "AlarmKit",
73907
- "AppClip",
73908
- "AppIntents",
73909
- "AppIntentsTypeSupport",
73910
- "AppMigrationKit",
73911
- "AppTrackingTransparency",
73912
- "AssetsLibrary",
73913
- "AudioToolbox",
73914
- "AudioUnit",
73915
- "AuthenticationServices",
73916
- "AutomatedDeviceEnrollment",
73917
- "AutomaticAssessmentConfiguration",
73918
- "BackgroundAssets",
73919
- "BackgroundTasks",
73920
- "BrowserEngineCore",
73921
- "BrowserEngineKit",
73922
- "BrowserKit",
73923
- "BusinessChat",
73924
- "CFNetwork",
73925
- "CallKit",
73926
- "CarKey",
73927
- "CarPlay",
73928
- "Charts",
73929
- "ClassKit",
73930
- "ClassKitUI",
73931
- "ClockKit",
73932
- "CloudKit",
73933
- "ColorSync",
73934
- "Combine",
73935
- "ComputeGraph",
73936
- "ContactProvider",
73937
- "Contacts",
73938
- "ContactsUI",
73939
- "CoreAudio",
73940
- "CoreAudioKit",
73941
- "CoreAudioTypes",
73942
- "CoreBluetooth",
73943
- "CoreData",
73944
- "CoreFoundation",
73945
- "CoreGraphics",
73946
- "CoreHaptics",
73947
- "CoreImage",
73948
- "CoreLocation",
73949
- "CoreLocationUI",
73950
- "CoreMIDI",
73951
- "CoreML",
73952
- "CoreMedia",
73953
- "CoreMotion",
73954
- "CoreNFC",
73955
- "CoreServices",
73956
- "CoreSpotlight",
73957
- "CoreTelephony",
73958
- "CoreText",
73959
- "CoreTransferable",
73960
- "CoreVideo",
73961
- "CreateMLComponents",
73962
- "CryptoKit",
73963
- "CryptoTokenKit",
73964
- "DataDetection",
73965
- "DeclaredAgeRange",
73966
- "DeveloperToolsSupport",
73967
- "DeviceActivity",
73968
- "DeviceCheck",
73969
- "DeviceDiscoveryExtension",
73970
- "DeviceDiscoveryUI",
73971
- "EnergyKit",
73972
- "EventKit",
73973
- "EventKitUI",
73974
- "ExposureNotification",
73975
- "ExtensionFoundation",
73976
- "ExtensionKit",
73977
- "ExternalAccessory",
73978
- "FamilyControls",
73979
- "FileProvider",
73980
- "FileProviderUI",
73981
- "FinanceKit",
73982
- "FinanceKitUI",
73983
- "Foundation",
73984
- "FoundationModels",
73985
- "GLKit",
73986
- "GSS",
73987
- "GameController",
73988
- "GameKit",
73989
- "GameSave",
73990
- "GameplayKit",
73991
- "GeoToolbox",
73992
- "GroupActivities",
73993
- "HealthKit",
73994
- "HealthKitUI",
73995
- "HomeKit",
73996
- "IOKit",
73997
- "IOSurface",
73998
- "IdentityDocumentServices",
73999
- "IdentityDocumentServicesUI",
74000
- "IdentityLookup",
74001
- "IdentityLookupUI",
74002
- "ImageCaptureCore",
74003
- "ImageIO",
74004
- "ImagePlayground",
74005
- "ImmersiveMediaSupport",
74006
- "Intents",
74007
- "IntentsUI",
74008
- "JavaScriptCore",
74009
- "LinkPresentation",
74010
- "LinkSecurity",
74011
- "LiveCommunicationKit",
74012
- "LocalAuthentication",
74013
- "LocalAuthenticationEmbeddedUI",
74014
- "LockedCameraCapture",
74015
- "ManagedApp",
74016
- "ManagedAppDistribution",
74017
- "ManagedSettings",
74018
- "ManagedSettingsUI",
74019
- "MapKit",
74020
- "MarketplaceKit",
74021
- "Matter",
74022
- "MatterSupport",
74023
- "MediaAccessibility",
74024
- "MediaIntelligence",
74025
- "MediaIntents",
74026
- "MediaPlayer",
74027
- "MediaToolbox",
74028
- "MessageUI",
74029
- "Messages",
74030
- "Metal",
74031
- "MetalKit",
74032
- "MetalPerformancePrimitives",
74033
- "MetalPerformanceShaders",
74034
- "MetalPerformanceShadersGraph",
74035
- "MetricKit",
74036
- "MobileCoreServices",
74037
- "ModelIO",
74038
- "MultipeerConnectivity",
74039
- "MusicKit",
74040
- "MusicUnderstanding",
74041
- "NaturalLanguage",
74042
- "NearbyInteraction",
74043
- "Network",
74044
- "NetworkExtension",
74045
- "NotificationCenter",
74046
- "NowPlaying",
74047
- "OSLog",
74048
- "OpenAL",
74049
- "OpenGLES",
74050
- "PDFKit",
74051
- "PHASE",
74052
- "PaperKit",
74053
- "PassKit",
74054
- "PencilKit",
74055
- "PermissionKit",
74056
- "Photos",
74057
- "PhotosUI",
74058
- "ProximityReader",
74059
- "PushKit",
74060
- "PushToTalk",
74061
- "QuartzCore",
74062
- "QuickLook",
74063
- "QuickLookThumbnailing",
74064
- "RealityFoundation",
74065
- "RealityKit",
74066
- "RelevanceKit",
74067
- "ReplayKit",
74068
- "RoomPlan",
74069
- "SafariServices",
74070
- "SafetyKit",
74071
- "SceneKit",
74072
- "ScreenTime",
74073
- "SecureElementCredential",
74074
- "Security",
74075
- "SecurityUI",
74076
- "SensitiveContentAnalysis",
74077
- "SensorKit",
74078
- "ServicesAccountLinking",
74079
- "SharedWithYou",
74080
- "SharedWithYouCore",
74081
- "ShazamKit",
74082
- "Social",
74083
- "SoundAnalysis",
74084
- "Speech",
74085
- "SpriteKit",
74086
- "StateReporting",
74087
- "StoreKit",
74088
- "SuggestedActions",
74089
- "SwiftData",
74090
- "SwiftUI",
74091
- "SwiftUICore",
74092
- "Symbols",
74093
- "SystemConfiguration",
74094
- "SystemExtensions",
74095
- "TabularData",
74096
- "TelephonyMessagingKit",
74097
- "TipKit",
74098
- "TouchController",
74099
- "Translation",
74100
- "TranslationUIProvider",
74101
- "TrustInsights",
74102
- "Twitter",
74103
- "UIKit",
74104
- "USDKit",
74105
- "UniformTypeIdentifiers",
74106
- "UserNotifications",
74107
- "UserNotificationsUI",
74108
- "VideoSubscriberAccount",
74109
- "VideoToolbox",
74110
- "Vision",
74111
- "VisionKit",
74112
- "WatchConnectivity",
74113
- "WeatherKit",
74114
- "WebKit",
74115
- "WiFiAware",
74116
- "WidgetKit",
74117
- "WorkoutKit",
74118
- "_AVKit_SwiftUI",
74119
- "_AdAttributionKit_StoreKit",
74120
- "_AppIntents_HealthKit",
74121
- "_AppIntents_SwiftUI",
74122
- "_AppIntents_UIKit",
74123
- "_AuthenticationServices_SwiftUI",
74124
- "_Contacts_AppIntents",
74125
- "_CoreData_CloudKit",
74126
- "_CoreLocationUI_SwiftUI",
74127
- "_CoreNFC_UIKit",
74128
- "_CoreSpotlight_FoundationModels",
74129
- "_DataDetection_SwiftUI",
74130
- "_DeviceActivity_SwiftUI",
74131
- "_DeviceDiscoveryUI_SwiftUI",
74132
- "_FinanceKit_AppIntents",
74133
- "_FoundationModels_SwiftUI",
74134
- "_FoundationModels_UIKit",
74135
- "_GameController_SwiftUI",
74136
- "_GeoToolbox_AppIntents",
74137
- "_GroupActivities_UIKit",
74138
- "_HomeKit_SwiftUI",
74139
- "_Intents_TipKit",
74140
- "_LinkPresentation_AppIntents",
74141
- "_LocationEssentials",
74142
- "_MapKit_SwiftUI",
74143
- "_MarketplaceKit_UIKit",
74144
- "_MediaIntents_AppIntents",
74145
- "_MediaPlayer_AppIntents",
74146
- "_MusicKit_SwiftUI",
74147
- "_NowPlaying_AppIntents",
74148
- "_PassKit_SwiftUI",
74149
- "_PermissionKit_SwiftUI",
74150
- "_PermissionKit_UIKit",
74151
- "_PhotosUI_SwiftUI",
74152
- "_PhotosUI_WidgetKit",
74153
- "_Photos_AppIntents",
74154
- "_QuickLook_SwiftUI",
74155
- "_RealityKit_ComputeGraph",
74156
- "_RealityKit_SwiftUI",
74157
- "_RelevanceKit_MapKit",
74158
- "_SceneKit_SwiftUI",
74159
- "_SecureElementCredential_SwiftUI",
74160
- "_SecureElementCredential_UIKit",
74161
- "_SharedWithYou_AppIntents",
74162
- "_SpriteKit_SwiftUI",
74163
- "_StoreKit_SwiftUI",
74164
- "_SwiftData_CoreData",
74165
- "_SwiftData_SwiftUI",
74166
- "_Translation_SwiftUI",
74167
- "_USDKit_RealityKit",
74168
- "_UserNotifications_AppIntents",
74169
- "_WebKit_SwiftUI",
74170
- "_WorkoutKit_SwiftUI",
74171
- "iAd"
74172
- ]
74173
- };
74174
- }
74175
- });
74176
-
74177
74249
  // src/swift-cxx-reachable.ts
74178
74250
  function cxxTrace(stderr) {
74179
74251
  const files2 = [];
@@ -75810,6 +75882,17 @@ function isPackageSource(file) {
75810
75882
  function sourceFiles(root) {
75811
75883
  return packageFiles(root, false).filter(isPackageSource);
75812
75884
  }
75885
+ function xcodeFlatResources(app) {
75886
+ if (!app) return /* @__PURE__ */ new Set();
75887
+ return new Set(
75888
+ app.resources.filter(
75889
+ (file) => !Object.hasOwn(app.resourceNames, file) && !file.split(import_node_path83.default.sep).some((segment) => segment.endsWith(".xcassets"))
75890
+ )
75891
+ );
75892
+ }
75893
+ function bundleResourcePath(flatResources, disk, file) {
75894
+ return flatResources.has(disk) && !file.split("/").includes("Resources") ? `Resources/${file}` : file;
75895
+ }
75813
75896
  function resourceCandidateFiles(root) {
75814
75897
  return packageFiles(root, false).filter(
75815
75898
  (file) => !isPackageSource(file) && !file.endsWith(".xcconfig") && !["project.pbxproj", "project.xcproj", "Package.resolved"].includes(
@@ -75882,12 +75965,24 @@ function buildSwiftResourceTable(project2, baseUrl, inputs) {
75882
75965
  const disk = byRelative.get(file);
75883
75966
  return !disk || !layout2?.targetDirs.get(disk)?.startsWith(`${XCODE_FRAMEWORKS_DIR}/`);
75884
75967
  });
75885
- const found = enumerateBundleImages(relative5, readContents2, (file) => {
75886
- const disk = byRelative.get(file);
75887
- if (!disk) throw new Error(`image source ${file} has no input file`);
75888
- const key2 = layout2 ? xcodeInputKey(layout2, disk, file) : file;
75889
- return swiftResourceBundleForFile(bundles, key2)?.path ?? ".";
75890
- });
75968
+ const flatResources = xcodeFlatResources(layout2?.app);
75969
+ const bundled = new Map(
75970
+ relative5.map((file) => [
75971
+ bundleResourcePath(flatResources, byRelative.get(file), file),
75972
+ file
75973
+ ])
75974
+ );
75975
+ const found = enumerateBundleImages(
75976
+ [...bundled.keys()],
75977
+ (file) => readContents2(bundled.get(file) ?? file),
75978
+ (marked) => {
75979
+ const file = bundled.get(marked) ?? marked;
75980
+ const disk = byRelative.get(file);
75981
+ if (!disk) throw new Error(`image source ${file} has no input file`);
75982
+ const key2 = layout2 ? xcodeInputKey(layout2, disk, file) : file;
75983
+ return swiftResourceBundleForFile(bundles, key2)?.path ?? ".";
75984
+ }
75985
+ ).map((image) => ({ ...image, file: bundled.get(image.file) ?? image.file }));
75891
75986
  const colors = enumerateBundleColors(catalogFiles2, readContents2);
75892
75987
  const symbols = enumerateBundleSymbols(catalogFiles2, readContents2, (file) => {
75893
75988
  const disk = byRelative.get(file);
@@ -76071,15 +76166,20 @@ function buildSwiftBundleFiles(packagePath, hosted, inputs, resourceBundles) {
76071
76166
  }
76072
76167
  }
76073
76168
  const groups = /* @__PURE__ */ new Map();
76074
- const appResources = new Set(xcode?.app.resources ?? []);
76169
+ const flatResources = xcodeFlatResources(xcode?.app);
76075
76170
  for (const file of relative5) {
76076
76171
  const disk = import_node_path83.default.join(packagePath, ...file.split("/"));
76172
+ const folderName = xcode?.app.resourceNames[disk];
76173
+ if (folderName) {
76174
+ watched.push(file);
76175
+ addFile(folderName, readPackageFile2(packagePath, disk, limits.resourceBytes));
76176
+ continue;
76177
+ }
76077
76178
  const key2 = xcode ? xcodeInputKey(xcode, disk, file) : file;
76078
76179
  const bundle = swiftResourceBundleForFile(bundles, key2);
76079
76180
  const bundlePath = bundle?.path ?? ".";
76080
76181
  const group = groups.get(bundlePath) ?? /* @__PURE__ */ new Map();
76081
- const resource = appResources.has(disk) && !file.split("/").includes("Resources") ? `Resources/${file}` : file;
76082
- group.set(resource, disk);
76182
+ group.set(bundleResourcePath(flatResources, disk, file), disk);
76083
76183
  groups.set(bundlePath, group);
76084
76184
  }
76085
76185
  for (const bundle of bundles) {
@@ -86397,7 +86497,7 @@ var init_nitro_superset = __esm({
86397
86497
  init_nitroContract();
86398
86498
  init_swift_standin_digest();
86399
86499
  NITRO_SUPERSET_ENTRY_NAME = "superset";
86400
- NITRO_COMPILER_DIGEST = true ? "a16afc2e6e3c68812b9d48ad1c7be8c9d89cfebcf46e269779f2890053244d70" : nitroCompilerSourceDigest(__sootsim_import_meta_dirname, STANDIN_SOURCE_DIGEST2);
86500
+ NITRO_COMPILER_DIGEST = true ? "a4a039ea02c6f6891931ee5a3d0136be472592ea109f8bc1b947d9d235a9559c" : nitroCompilerSourceDigest(__sootsim_import_meta_dirname, STANDIN_SOURCE_DIGEST2);
86401
86501
  nitroSupersetLock = parseLock(nitro_superset_lock_default);
86402
86502
  nitroSupersetKey = (inputs) => nativeEntryKey({ ...inputs, compiler: NITRO_COMPILER_DIGEST });
86403
86503
  published2 = /* @__PURE__ */ new Map();
@@ -87109,7 +87209,7 @@ var init_one_sdk_bundle = __esm({
87109
87209
  var runtime_companion_default;
87110
87210
  var init_runtime_companion = __esm({
87111
87211
  "runtime-companion.json"() {
87112
- runtime_companion_default = { abi: 1, sha256: "c3cfa87c38bca3be3b225d514efe1b9e2ab9119227137e7190dfa25eccf43fe7", file: "node/cli-c3cfa87c38bca3be3b225d514efe1b9e2ab9119227137e7190dfa25eccf43fe7.cjs" };
87212
+ runtime_companion_default = { abi: 1, sha256: "6b48c0f7ae1d87e581af7cf445b2eaad2e1a4aa8fad23a00e1ae90916b2bbc02", file: "node/cli-6b48c0f7ae1d87e581af7cf445b2eaad2e1a4aa8fad23a00e1ae90916b2bbc02.cjs" };
87113
87213
  }
87114
87214
  });
87115
87215
 
@@ -87170,6 +87270,7 @@ function getCliRuntime() {
87170
87270
  "Incompatible Peach runtime companion ABI; run `peach runtime install`"
87171
87271
  );
87172
87272
  }
87273
+ runtime.provideTerser(() => import("terser"));
87173
87274
  loaded2 = { root, runtime };
87174
87275
  return runtime;
87175
87276
  }
@@ -87189,46 +87290,11 @@ var init_cli_runtime = __esm({
87189
87290
  }
87190
87291
  });
87191
87292
 
87192
- // src/runtime-delivery.ts
87193
- var DEFAULT_RUNTIME_CDN_ORIGIN, RNX_CHANGELOG_URL, RNX_CHANGELOG_API_URL, RNX_RUNTIME_PRODUCT, rnxRuntime;
87194
- var init_runtime_delivery = __esm({
87195
- "src/runtime-delivery.ts"() {
87196
- "use strict";
87197
- init_define_SWIFT_COVERAGE_SOURCE_DIGESTS();
87198
- init_src();
87199
- init_cli_runtime();
87200
- init_home_paths();
87201
- init_public_brand();
87202
- DEFAULT_RUNTIME_CDN_ORIGIN = peachPublicBrand.origin;
87203
- RNX_CHANGELOG_URL = `${peachPublicBrand.origin}/changelog`;
87204
- RNX_CHANGELOG_API_URL = `${peachPublicBrand.origin}/api/changelog/sootsim`;
87205
- RNX_RUNTIME_PRODUCT = {
87206
- id: "peach",
87207
- defaultCdnOrigin: DEFAULT_RUNTIME_CDN_ORIGIN,
87208
- manifestPath: "/runtimes/manifest.json",
87209
- tarballPath: (version2) => `/runtimes/sootsim-runtime-${version2}.tar.zst`,
87210
- // the engine runtime is a static SPA: shell at the root, engine/ and
87211
- // engine-tenant/ beneath it. index.html is what the daemon and the
87212
- // vite/metro plugins serve, so its absence means the tarball is not one.
87213
- installedMarker: "index.html",
87214
- verifyInstall: ensureCliCompanion,
87215
- env: {
87216
- cdnOrigin: "PEACH_CDN_ORIGIN",
87217
- channel: "PEACH_RUNTIME_CHANNEL"
87218
- },
87219
- ensureHome: ensureRnxHome,
87220
- configFile: configFilePath,
87221
- runtimesDir,
87222
- runtimeDir,
87223
- cacheDir,
87224
- readActiveRuntime,
87225
- writeActiveRuntime
87226
- };
87227
- rnxRuntime = createRuntimeDelivery(RNX_RUNTIME_PRODUCT);
87228
- }
87229
- });
87230
-
87231
87293
  // src/runtime-packs.ts
87294
+ var runtime_packs_exports = {};
87295
+ __export(runtime_packs_exports, {
87296
+ ensureRuntimePackFor: () => ensureRuntimePackFor
87297
+ });
87232
87298
  function listedFiles(runtimeRoot) {
87233
87299
  let listed = listedByRoot.get(runtimeRoot);
87234
87300
  if (listed) return listed;
@@ -87395,6 +87461,52 @@ var init_runtime_packs = __esm({
87395
87461
  }
87396
87462
  });
87397
87463
 
87464
+ // src/runtime-delivery.ts
87465
+ var DEFAULT_RUNTIME_CDN_ORIGIN, RNX_CHANGELOG_URL, RNX_CHANGELOG_API_URL, RNX_RUNTIME_PRODUCT, rnxRuntime;
87466
+ var init_runtime_delivery = __esm({
87467
+ "src/runtime-delivery.ts"() {
87468
+ "use strict";
87469
+ init_define_SWIFT_COVERAGE_SOURCE_DIGESTS();
87470
+ init_src();
87471
+ init_cli_runtime();
87472
+ init_home_paths();
87473
+ init_public_brand();
87474
+ DEFAULT_RUNTIME_CDN_ORIGIN = peachPublicBrand.origin;
87475
+ RNX_CHANGELOG_URL = `${peachPublicBrand.origin}/changelog`;
87476
+ RNX_CHANGELOG_API_URL = `${peachPublicBrand.origin}/api/changelog/sootsim`;
87477
+ RNX_RUNTIME_PRODUCT = {
87478
+ id: "peach",
87479
+ defaultCdnOrigin: DEFAULT_RUNTIME_CDN_ORIGIN,
87480
+ manifestPath: "/runtimes/manifest.json",
87481
+ tarballPath: (version2) => `/runtimes/sootsim-runtime-${version2}.tar.zst`,
87482
+ // the engine runtime is a static SPA: shell at the root, engine/ and
87483
+ // engine-tenant/ beneath it. index.html is what the daemon and the
87484
+ // vite/metro plugins serve, so its absence means the tarball is not one.
87485
+ installedMarker: "index.html",
87486
+ verifyInstall: ensureCliCompanion,
87487
+ // canvaskit's ganesh backend is a runtime pack because a browser with WebGPU
87488
+ // never runs it, but linux and CI browsers usually have no GPU and always do
87489
+ afterInstall: async (dir) => {
87490
+ if (process.platform !== "linux" && !process.env.CI) return;
87491
+ const { ensureRuntimePackFor: ensureRuntimePackFor2 } = await Promise.resolve().then(() => (init_runtime_packs(), runtime_packs_exports));
87492
+ await ensureRuntimePackFor2(dir, "/engine/canvaskit-ganesh.wasm");
87493
+ },
87494
+ env: {
87495
+ cdnOrigin: "PEACH_CDN_ORIGIN",
87496
+ channel: "PEACH_RUNTIME_CHANNEL"
87497
+ },
87498
+ ensureHome: ensureRnxHome,
87499
+ configFile: configFilePath,
87500
+ runtimesDir,
87501
+ runtimeDir,
87502
+ cacheDir,
87503
+ readActiveRuntime,
87504
+ writeActiveRuntime
87505
+ };
87506
+ rnxRuntime = createRuntimeDelivery(RNX_RUNTIME_PRODUCT);
87507
+ }
87508
+ });
87509
+
87398
87510
  // src/turbo-bundle.ts
87399
87511
  async function compiledTurboProviders(appRoot, projectRoot, iosTarget) {
87400
87512
  const config = await loadRNXAppConfig(resolveAppProject(appRoot));