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
 
@@ -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
  [
@@ -54507,6 +54827,7 @@ ${release}
54507
54827
  `);
54508
54828
  hash.update(compilerSourceDigest);
54509
54829
  if (input.oneModule) hash.update("one-module\n");
54830
+ if (KEEP_WASM_NAMES) hash.update("names\n");
54510
54831
  hash.update(swiftModuleDigest(moduleRoot));
54511
54832
  if (input.optimize) hash.update(`optimize
54512
54833
  ${WASM_OPTIMIZE_IDENTITY}
@@ -54618,7 +54939,14 @@ function toolsetOrdersLibcxxBeforeDarwinOverlay(options) {
54618
54939
  return libcxx >= 0 && overlay > libcxx;
54619
54940
  }
54620
54941
  function emitSwiftPackageManifest(args) {
54621
- 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;
54622
54950
  const prebuilt = args.prebuilt;
54623
54951
  const linkedObjects = Boolean(distribution || prebuilt);
54624
54952
  const cxxFlagsFor = (flags) => args.deferDarwinOverlay ? withoutWasmOverlayIsystem(flags) : flags;
@@ -54647,9 +54975,8 @@ function emitSwiftPackageManifest(args) {
54647
54975
  for (const name3 of [...siblings.values()].flat())
54648
54976
  if (OPTIONAL_FRAMEWORKS.has(name3) && !targets.some((target) => target.name === name3))
54649
54977
  reach(name3);
54650
- if (spriteKit) {
54651
- for (const name3 of ["SpriteKit", "PeachBox2D", "simd", "GLKit"]) reach(name3);
54652
- }
54978
+ for (const product of gameProducts2)
54979
+ for (const name3 of GAME_REACH[product] ?? []) reach(name3);
54653
54980
  let distributionLinkPath;
54654
54981
  const distributionLink = args.distributionLink;
54655
54982
  if (distribution && distributionLink) {
@@ -54672,7 +54999,7 @@ function emitSwiftPackageManifest(args) {
54672
54999
  (object6) => !isProvider(object6) && !replacedObjects.has(object6)
54673
55000
  );
54674
55001
  const objects = available.filter(
54675
- (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(
54676
55003
  (name3) => !object6.startsWith(`lib/${name3}-`) || reachedFrameworks.has(name3)
54677
55004
  )
54678
55005
  );
@@ -54835,7 +55162,7 @@ function emitSwiftPackageManifest(args) {
54835
55162
  ...linkedObjects || clang && !target.executable ? [] : [
54836
55163
  '.product(name: "SwiftUI", package: "sootsim-swift")',
54837
55164
  ...oneModule ? [ONE_PRODUCT] : [],
54838
- ...spriteKit ? [SPRITEKIT_PRODUCT] : []
55165
+ ...gameProducts2.map(gameProduct)
54839
55166
  ],
54840
55167
  ...(siblings.get(target.name) ?? []).flatMap(
54841
55168
  (dependency) => clang && // textual native headers can include one another without imposing
@@ -54867,7 +55194,7 @@ function emitSwiftPackageManifest(args) {
54867
55194
  .unsafeFlags(${flagArray(`[
54868
55195
  ${REACTOR_FLAG}${executableLinkFlags(args.root)} "-Xlinker", "--export-if-defined=__main_argc_argv"${library},
54869
55196
  ]`)}),
54870
- .unsafeFlags(["-Xlinker", "--strip-all"], .when(configuration: .release)),
55197
+ ${KEEP_WASM_NAMES ? "" : '.unsafeFlags(["-Xlinker", "--strip-all"], .when(configuration: .release)),'}
54871
55198
  ]` : librarySettings.length > 0 ? `,
54872
55199
  linkerSettings: [${librarySettings.join(", ")}]` : "";
54873
55200
  const cDefines = macroSettings(target.cDefines);
@@ -56894,14 +57221,17 @@ module ${moduleName2}.Swift {
56894
57221
  manifest = manifest.replace(product, `${product}
56895
57222
  ${ONE_PRODUCT},`).replace(flags, `${flags}${ONE_IMPLICIT_FLAGS}`);
56896
57223
  }
56897
- if (importsSpriteKit(input.files)) {
57224
+ const games = gameProducts(input.files);
57225
+ if (games.length > 0) {
56898
57226
  const anchor = '.product(name: "CoreLocation", package: "sootsim-swift"),';
56899
57227
  if (!manifest.includes(anchor))
56900
57228
  throw new Error(
56901
- "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"
56902
57230
  );
56903
- manifest = manifest.replace(anchor, `${anchor}
56904
- ${SPRITEKIT_PRODUCT},`);
57231
+ manifest = manifest.replace(
57232
+ anchor,
57233
+ [anchor, ...games.map((name3) => `${gameProduct(name3)},`)].join("\n ")
57234
+ );
56905
57235
  }
56906
57236
  files2.set(import_node_path51.default.join(layout2.root, "Package.swift"), manifest + moduleFiles);
56907
57237
  } else {
@@ -57016,7 +57346,7 @@ module ${moduleName2}.Swift {
57016
57346
  siblings: moduleSiblings,
57017
57347
  moduleRoot,
57018
57348
  oneModule: input.oneModule,
57019
- spriteKit: importsSpriteKit(input.files),
57349
+ gameProducts: gameProducts(input.files),
57020
57350
  distribution: distribution ?? void 0,
57021
57351
  moduleExcludes,
57022
57352
  deferDarwinOverlay: native.size > 0 && toolsetOrdersLibcxxBeforeDarwinOverlay(
@@ -57415,14 +57745,9 @@ function linkedFrameworkTargets(moduleRoot, input) {
57415
57745
  ))
57416
57746
  reach(match[1]);
57417
57747
  }
57418
- if (importsSpriteKit(input.files))
57419
- for (const name3 of ["SpriteKit", "PeachBox2D", "simd", "GLKit"]) reach(name3);
57420
- const wanted = [
57421
- "PeachApp",
57422
- ...input.oneModule ? ["One"] : [],
57423
- ...importsSpriteKit(input.files) ? ["SpriteKit"] : [],
57424
- ...reached
57425
- ];
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];
57426
57751
  const linked = [...new Set(wanted)].filter((name3) => libraries.has(name3));
57427
57752
  if (!linked.includes("PeachApp"))
57428
57753
  throw new Error("swift-compile: the framework package declares no PeachApp library");
@@ -58325,7 +58650,7 @@ function compileSwiftProjectOnce(input, options) {
58325
58650
  options.signal
58326
58651
  );
58327
58652
  }
58328
- 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;
58329
58654
  var init_swift_compile = __esm({
58330
58655
  "src/swift-compile.ts"() {
58331
58656
  "use strict";
@@ -58400,7 +58725,8 @@ var init_swift_compile = __esm({
58400
58725
  PeachCFNetwork: [],
58401
58726
  JavaScriptCore: ["PeachJavaScriptCore"],
58402
58727
  PeachJavaScriptCore: [],
58403
- GameplayKit: [],
58728
+ // GameplayKit names SpriteKit and SceneKit nodes, as on iOS
58729
+ GameplayKit: ["SpriteKit", "SceneKit", "PeachBox2D", "simd", "GLKit"],
58404
58730
  simd: [],
58405
58731
  ModelIO: ["simd"],
58406
58732
  GLKit: ["ModelIO"],
@@ -58512,10 +58838,21 @@ int EXUpdatesApplyBSDiffPatch(const char * _Nonnull oldFilePath,
58512
58838
  }
58513
58839
  ];
58514
58840
  ONE_PRODUCT = '.product(name: "One", package: "sootsim-swift")';
58515
- SPRITEKIT_PRODUCT = '.product(name: "SpriteKit", package: "sootsim-swift")';
58516
- importsSpriteKit = (files2) => Object.entries(files2).some(
58517
- ([file, contents]) => file.endsWith(".swift") && swiftImportNames(contents).includes("SpriteKit")
58518
- );
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
+ };
58519
58856
  FOUNDATION_IMPLICIT_MODULES = [
58520
58857
  "PeachObjC",
58521
58858
  "Dispatch",
@@ -58542,7 +58879,7 @@ int EXUpdatesApplyBSDiffPatch(const char * _Nonnull oldFilePath,
58542
58879
  REACTOR_FLAG = '"-Xclang-linker", "-mexec-model=reactor",\n';
58543
58880
  MULTI_MANIFEST_VERSION = 68;
58544
58881
  SWIFT_HEADER_PRODUCTS_TARGET = "PeachHeaderProducts";
58545
- compilerSourceDigest = true ? "2e9f321a97a408a1b3b8b7d85bbcfb108f0761ed9726b832a3c6c2cc52102806" : swiftCompilerSourceDigest(__sootsim_import_meta_dirname);
58882
+ compilerSourceDigest = true ? "eba60b7a2e9485f928a6ec2e544e10d84b2b33430be66b9e069c9797a927af86" : swiftCompilerSourceDigest(__sootsim_import_meta_dirname);
58546
58883
  nativeCxxCompilerFlags = ["-fno-cxx-modules"];
58547
58884
  cFlagArray = (flags) => JSON.stringify(withoutGlogModuleMap(flags));
58548
58885
  cxxFlagArray = (flags) => JSON.stringify([...nativeCxxCompilerFlags, ...withoutGlogModuleMap(flags)]);
@@ -58873,8 +59210,6 @@ int EXUpdatesApplyBSDiffPatch(const char * _Nonnull oldFilePath,
58873
59210
  "NSURLProtectionSpaceHTTPS",
58874
59211
  "NSURLProtectionSpaceHTTPSProxy",
58875
59212
  "NSURLProtectionSpaceSOCKSProxy",
58876
- "NSURLSessionDownloadTaskResumeData",
58877
- "NSURLSessionTransferSizeUnknown",
58878
59213
  "NSURLSessionUploadTaskResumeData",
58879
59214
  "NSUTF16BigEndianStringEncoding",
58880
59215
  "NSUTF16LittleEndianStringEncoding",
@@ -61197,6 +61532,7 @@ function targetMembers(ref, settings, options, settingKeys, projectInputs) {
61197
61532
  const allSources = /* @__PURE__ */ new Set();
61198
61533
  const headers = /* @__PURE__ */ new Set();
61199
61534
  const resources = /* @__PURE__ */ new Set();
61535
+ const resourceNames = {};
61200
61536
  const scriptForOutput = /* @__PURE__ */ new Map();
61201
61537
  const copiedFiles = [];
61202
61538
  let generatedInfoPlist = false;
@@ -61366,13 +61702,14 @@ ${output2}`
61366
61702
  xcodePathResolver(project2.objects, project2.projectDir, import_node_path56.default.join, settings),
61367
61703
  (file) => isDirectory(file) ? walkFiles(file) : import_node_fs58.default.existsSync(file) ? [file] : [],
61368
61704
  import_node_path56.default.join,
61369
- (file, kind) => {
61705
+ (file, kind, bundleName) => {
61370
61706
  if (kind === "header") {
61371
61707
  headers.add(file);
61372
61708
  return;
61373
61709
  }
61374
61710
  if (kind === "resource") {
61375
61711
  resources.add(file);
61712
+ if (bundleName) resourceNames[file] = bundleName;
61376
61713
  return;
61377
61714
  }
61378
61715
  if (!import_node_fs58.default.existsSync(file)) {
@@ -61496,6 +61833,7 @@ ${output2}`
61496
61833
  return {
61497
61834
  sources: [...sources].sort(),
61498
61835
  resources: [...resources].sort(),
61836
+ resourceNames,
61499
61837
  copiedFiles,
61500
61838
  generatedInfoPlist,
61501
61839
  allSources: [...allSources].sort(),
@@ -62740,10 +63078,14 @@ function readXcodeAppTarget(input, targetName, configurationName, options = {})
62740
63078
  byProduct.has(import_node_path56.default.basename(rawPath)))
62741
63079
  continue;
62742
63080
  const resolved = fileId ? project2.resolvePath(fileId) : null;
62743
- if (fileId && resolved !== null && !import_node_fs58.default.existsSync(resolved))
62744
- throw new Error(
62745
- `${str(target.name) ?? "target"}: linked framework ${name3} (${fileId}) points at missing ${resolved} in ${project2.projectFile}`
62746
- );
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
+ }
62747
63089
  if (!binaryFrameworks.get(name3)) binaryFrameworks.set(name3, resolved);
62748
63090
  }
62749
63091
  }
@@ -62820,7 +63162,12 @@ function readXcodeAppTarget(input, targetName, configurationName, options = {})
62820
63162
  ...linkedProducts.flatMap(
62821
63163
  ({ source }) => source.kind === "local" && import_node_fs58.default.existsSync(source.dir) ? [source.dir] : []
62822
63164
  ),
62823
- ...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
+ )
62824
63171
  ].map((dir) => import_node_fs58.default.realpathSync.native(dir))
62825
63172
  ),
62826
63173
  projectFiles: [
@@ -62865,6 +63212,7 @@ var init_xcode_project = __esm({
62865
63212
  import_node_fs58 = __toESM(require("node:fs"), 1);
62866
63213
  import_node_path56 = __toESM(require("node:path"), 1);
62867
63214
  import_plist2 = __toESM(require("plist"), 1);
63215
+ init_ios_sdk_frameworks();
62868
63216
  init_is_record();
62869
63217
  init_native_app_identity();
62870
63218
  init_prepared_xcode_phases();
@@ -63918,7 +64266,7 @@ async function hashWorkspaceInputs(app, everyByte, signal, sourceOnly = false, p
63918
64266
  signal?.throwIfAborted();
63919
64267
  const file = import_node_path62.default.join(directory2, entry.name);
63920
64268
  const relative5 = import_node_path62.default.relative(root, file);
63921
- if (excluded(relative5)) continue;
64269
+ if (excluded(relative5, entry.isDirectory())) continue;
63922
64270
  hash.update(`${relative5}\0`);
63923
64271
  if (entry.isSymbolicLink()) {
63924
64272
  const link = `link\0${await import_node_fs64.default.promises.readlink(file)}\0`;
@@ -64042,8 +64390,10 @@ function syncChangedFiles(root, work, appRelative, excluded, installed2) {
64042
64390
  if (existing && (newerOnly ? existing.mtime.getTime() >= source.mtime.getTime() : existing.size === source.size && existing.mtime.getTime() === source.mtime.getTime()))
64043
64391
  return;
64044
64392
  import_node_fs64.default.mkdirSync(import_node_path62.default.dirname(target), { recursive: true });
64045
- import_node_fs64.default.copyFileSync(file, target);
64046
- 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);
64047
64397
  };
64048
64398
  const walkInstalled = (directory2) => {
64049
64399
  for (const entry of import_node_fs64.default.readdirSync(directory2, { withFileTypes: true })) {
@@ -64061,7 +64411,7 @@ function syncChangedFiles(root, work, appRelative, excluded, installed2) {
64061
64411
  walkInstalled(file);
64062
64412
  continue;
64063
64413
  }
64064
- 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"))
64065
64415
  continue;
64066
64416
  if (entry.isDirectory()) walk3(file);
64067
64417
  else if (entry.isFile()) {
@@ -65009,7 +65359,7 @@ var init_swift_standin_digest = __esm({
65009
65359
  STANDIN_DIGEST_ENTRYPOINTS = ["swift-standins.ts", "swift-objc-compile.ts"];
65010
65360
  SPECIFIER = /from\s*['"]([^'"]+)['"]|import\s*\(\s*['"]([^'"]+)['"]\s*\)/g;
65011
65361
  standinSourceDigest = (srcDir = __sootsim_import_meta_dirname) => sourceClosureDigest(srcDir, STANDIN_DIGEST_ENTRYPOINTS);
65012
- STANDIN_SOURCE_DIGEST = true ? "70b9e9f32fde5739daaee933df31b2584f9ef3289c322a0f5b03f1eaac947880" : standinSourceDigest();
65362
+ STANDIN_SOURCE_DIGEST = true ? "1a62599378cd7cdf32385f588eb3f983f07ea222d145ec5b6dc34cce9104f46c" : standinSourceDigest();
65013
65363
  }
65014
65364
  });
65015
65365
 
@@ -65470,7 +65820,7 @@ var init_package_tree_digest = __esm({
65470
65820
 
65471
65821
  // src/expo-native-prebuilt.ts
65472
65822
  function expoNativeCompilerDigestValue() {
65473
- return true ? "7667f1dce279c8074ed9dd97de1e3b293077ae012cacf08fd6572978f8ef7dc0" : expoNativeCompilerDigest(__sootsim_import_meta_dirname);
65823
+ return true ? "db679f96e034ef5a3e217e2553ec748fa11d5dd68cd9247dd7bcae61a03d42a1" : expoNativeCompilerDigest(__sootsim_import_meta_dirname);
65474
65824
  }
65475
65825
  function readSources(value) {
65476
65826
  const sources = isRecord(value) ? value.sources : null;
@@ -73896,302 +74246,6 @@ var init_core_data_entity_classes = __esm({
73896
74246
  }
73897
74247
  });
73898
74248
 
73899
- // src/ios-sdk-frameworks.json
73900
- var ios_sdk_frameworks_default;
73901
- var init_ios_sdk_frameworks = __esm({
73902
- "src/ios-sdk-frameworks.json"() {
73903
- ios_sdk_frameworks_default = {
73904
- sdk: "iphonesimulator27.1",
73905
- frameworks: [
73906
- "ARKit",
73907
- "AVFAudio",
73908
- "AVFoundation",
73909
- "AVKit",
73910
- "AVRouting",
73911
- "Accelerate",
73912
- "Accessibility",
73913
- "AccessoryLiveActivities",
73914
- "AccessoryNotifications",
73915
- "AccessorySetupKit",
73916
- "AccessoryTransportExtension",
73917
- "Accounts",
73918
- "ActivityKit",
73919
- "AdAttributionKit",
73920
- "AdServices",
73921
- "AdSupport",
73922
- "AddressBook",
73923
- "AddressBookUI",
73924
- "AlarmKit",
73925
- "AppClip",
73926
- "AppIntents",
73927
- "AppIntentsTypeSupport",
73928
- "AppMigrationKit",
73929
- "AppTrackingTransparency",
73930
- "AssetsLibrary",
73931
- "AudioToolbox",
73932
- "AudioUnit",
73933
- "AuthenticationServices",
73934
- "AutomatedDeviceEnrollment",
73935
- "AutomaticAssessmentConfiguration",
73936
- "BackgroundAssets",
73937
- "BackgroundTasks",
73938
- "BrowserEngineCore",
73939
- "BrowserEngineKit",
73940
- "BrowserKit",
73941
- "BusinessChat",
73942
- "CFNetwork",
73943
- "CallKit",
73944
- "CarKey",
73945
- "CarPlay",
73946
- "Charts",
73947
- "ClassKit",
73948
- "ClassKitUI",
73949
- "ClockKit",
73950
- "CloudKit",
73951
- "ColorSync",
73952
- "Combine",
73953
- "ComputeGraph",
73954
- "ContactProvider",
73955
- "Contacts",
73956
- "ContactsUI",
73957
- "CoreAudio",
73958
- "CoreAudioKit",
73959
- "CoreAudioTypes",
73960
- "CoreBluetooth",
73961
- "CoreData",
73962
- "CoreFoundation",
73963
- "CoreGraphics",
73964
- "CoreHaptics",
73965
- "CoreImage",
73966
- "CoreLocation",
73967
- "CoreLocationUI",
73968
- "CoreMIDI",
73969
- "CoreML",
73970
- "CoreMedia",
73971
- "CoreMotion",
73972
- "CoreNFC",
73973
- "CoreServices",
73974
- "CoreSpotlight",
73975
- "CoreTelephony",
73976
- "CoreText",
73977
- "CoreTransferable",
73978
- "CoreVideo",
73979
- "CreateMLComponents",
73980
- "CryptoKit",
73981
- "CryptoTokenKit",
73982
- "DataDetection",
73983
- "DeclaredAgeRange",
73984
- "DeveloperToolsSupport",
73985
- "DeviceActivity",
73986
- "DeviceCheck",
73987
- "DeviceDiscoveryExtension",
73988
- "DeviceDiscoveryUI",
73989
- "EnergyKit",
73990
- "EventKit",
73991
- "EventKitUI",
73992
- "ExposureNotification",
73993
- "ExtensionFoundation",
73994
- "ExtensionKit",
73995
- "ExternalAccessory",
73996
- "FamilyControls",
73997
- "FileProvider",
73998
- "FileProviderUI",
73999
- "FinanceKit",
74000
- "FinanceKitUI",
74001
- "Foundation",
74002
- "FoundationModels",
74003
- "GLKit",
74004
- "GSS",
74005
- "GameController",
74006
- "GameKit",
74007
- "GameSave",
74008
- "GameplayKit",
74009
- "GeoToolbox",
74010
- "GroupActivities",
74011
- "HealthKit",
74012
- "HealthKitUI",
74013
- "HomeKit",
74014
- "IOKit",
74015
- "IOSurface",
74016
- "IdentityDocumentServices",
74017
- "IdentityDocumentServicesUI",
74018
- "IdentityLookup",
74019
- "IdentityLookupUI",
74020
- "ImageCaptureCore",
74021
- "ImageIO",
74022
- "ImagePlayground",
74023
- "ImmersiveMediaSupport",
74024
- "Intents",
74025
- "IntentsUI",
74026
- "JavaScriptCore",
74027
- "LinkPresentation",
74028
- "LinkSecurity",
74029
- "LiveCommunicationKit",
74030
- "LocalAuthentication",
74031
- "LocalAuthenticationEmbeddedUI",
74032
- "LockedCameraCapture",
74033
- "ManagedApp",
74034
- "ManagedAppDistribution",
74035
- "ManagedSettings",
74036
- "ManagedSettingsUI",
74037
- "MapKit",
74038
- "MarketplaceKit",
74039
- "Matter",
74040
- "MatterSupport",
74041
- "MediaAccessibility",
74042
- "MediaIntelligence",
74043
- "MediaIntents",
74044
- "MediaPlayer",
74045
- "MediaToolbox",
74046
- "MessageUI",
74047
- "Messages",
74048
- "Metal",
74049
- "MetalKit",
74050
- "MetalPerformancePrimitives",
74051
- "MetalPerformanceShaders",
74052
- "MetalPerformanceShadersGraph",
74053
- "MetricKit",
74054
- "MobileCoreServices",
74055
- "ModelIO",
74056
- "MultipeerConnectivity",
74057
- "MusicKit",
74058
- "MusicUnderstanding",
74059
- "NaturalLanguage",
74060
- "NearbyInteraction",
74061
- "Network",
74062
- "NetworkExtension",
74063
- "NotificationCenter",
74064
- "NowPlaying",
74065
- "OSLog",
74066
- "OpenAL",
74067
- "OpenGLES",
74068
- "PDFKit",
74069
- "PHASE",
74070
- "PaperKit",
74071
- "PassKit",
74072
- "PencilKit",
74073
- "PermissionKit",
74074
- "Photos",
74075
- "PhotosUI",
74076
- "ProximityReader",
74077
- "PushKit",
74078
- "PushToTalk",
74079
- "QuartzCore",
74080
- "QuickLook",
74081
- "QuickLookThumbnailing",
74082
- "RealityFoundation",
74083
- "RealityKit",
74084
- "RelevanceKit",
74085
- "ReplayKit",
74086
- "RoomPlan",
74087
- "SafariServices",
74088
- "SafetyKit",
74089
- "SceneKit",
74090
- "ScreenTime",
74091
- "SecureElementCredential",
74092
- "Security",
74093
- "SecurityUI",
74094
- "SensitiveContentAnalysis",
74095
- "SensorKit",
74096
- "ServicesAccountLinking",
74097
- "SharedWithYou",
74098
- "SharedWithYouCore",
74099
- "ShazamKit",
74100
- "Social",
74101
- "SoundAnalysis",
74102
- "Speech",
74103
- "SpriteKit",
74104
- "StateReporting",
74105
- "StoreKit",
74106
- "SuggestedActions",
74107
- "SwiftData",
74108
- "SwiftUI",
74109
- "SwiftUICore",
74110
- "Symbols",
74111
- "SystemConfiguration",
74112
- "SystemExtensions",
74113
- "TabularData",
74114
- "TelephonyMessagingKit",
74115
- "TipKit",
74116
- "TouchController",
74117
- "Translation",
74118
- "TranslationUIProvider",
74119
- "TrustInsights",
74120
- "Twitter",
74121
- "UIKit",
74122
- "USDKit",
74123
- "UniformTypeIdentifiers",
74124
- "UserNotifications",
74125
- "UserNotificationsUI",
74126
- "VideoSubscriberAccount",
74127
- "VideoToolbox",
74128
- "Vision",
74129
- "VisionKit",
74130
- "WatchConnectivity",
74131
- "WeatherKit",
74132
- "WebKit",
74133
- "WiFiAware",
74134
- "WidgetKit",
74135
- "WorkoutKit",
74136
- "_AVKit_SwiftUI",
74137
- "_AdAttributionKit_StoreKit",
74138
- "_AppIntents_HealthKit",
74139
- "_AppIntents_SwiftUI",
74140
- "_AppIntents_UIKit",
74141
- "_AuthenticationServices_SwiftUI",
74142
- "_Contacts_AppIntents",
74143
- "_CoreData_CloudKit",
74144
- "_CoreLocationUI_SwiftUI",
74145
- "_CoreNFC_UIKit",
74146
- "_CoreSpotlight_FoundationModels",
74147
- "_DataDetection_SwiftUI",
74148
- "_DeviceActivity_SwiftUI",
74149
- "_DeviceDiscoveryUI_SwiftUI",
74150
- "_FinanceKit_AppIntents",
74151
- "_FoundationModels_SwiftUI",
74152
- "_FoundationModels_UIKit",
74153
- "_GameController_SwiftUI",
74154
- "_GeoToolbox_AppIntents",
74155
- "_GroupActivities_UIKit",
74156
- "_HomeKit_SwiftUI",
74157
- "_Intents_TipKit",
74158
- "_LinkPresentation_AppIntents",
74159
- "_LocationEssentials",
74160
- "_MapKit_SwiftUI",
74161
- "_MarketplaceKit_UIKit",
74162
- "_MediaIntents_AppIntents",
74163
- "_MediaPlayer_AppIntents",
74164
- "_MusicKit_SwiftUI",
74165
- "_NowPlaying_AppIntents",
74166
- "_PassKit_SwiftUI",
74167
- "_PermissionKit_SwiftUI",
74168
- "_PermissionKit_UIKit",
74169
- "_PhotosUI_SwiftUI",
74170
- "_PhotosUI_WidgetKit",
74171
- "_Photos_AppIntents",
74172
- "_QuickLook_SwiftUI",
74173
- "_RealityKit_ComputeGraph",
74174
- "_RealityKit_SwiftUI",
74175
- "_RelevanceKit_MapKit",
74176
- "_SceneKit_SwiftUI",
74177
- "_SecureElementCredential_SwiftUI",
74178
- "_SecureElementCredential_UIKit",
74179
- "_SharedWithYou_AppIntents",
74180
- "_SpriteKit_SwiftUI",
74181
- "_StoreKit_SwiftUI",
74182
- "_SwiftData_CoreData",
74183
- "_SwiftData_SwiftUI",
74184
- "_Translation_SwiftUI",
74185
- "_USDKit_RealityKit",
74186
- "_UserNotifications_AppIntents",
74187
- "_WebKit_SwiftUI",
74188
- "_WorkoutKit_SwiftUI",
74189
- "iAd"
74190
- ]
74191
- };
74192
- }
74193
- });
74194
-
74195
74249
  // src/swift-cxx-reachable.ts
74196
74250
  function cxxTrace(stderr) {
74197
74251
  const files2 = [];
@@ -75828,6 +75882,17 @@ function isPackageSource(file) {
75828
75882
  function sourceFiles(root) {
75829
75883
  return packageFiles(root, false).filter(isPackageSource);
75830
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
+ }
75831
75896
  function resourceCandidateFiles(root) {
75832
75897
  return packageFiles(root, false).filter(
75833
75898
  (file) => !isPackageSource(file) && !file.endsWith(".xcconfig") && !["project.pbxproj", "project.xcproj", "Package.resolved"].includes(
@@ -75900,12 +75965,24 @@ function buildSwiftResourceTable(project2, baseUrl, inputs) {
75900
75965
  const disk = byRelative.get(file);
75901
75966
  return !disk || !layout2?.targetDirs.get(disk)?.startsWith(`${XCODE_FRAMEWORKS_DIR}/`);
75902
75967
  });
75903
- const found = enumerateBundleImages(relative5, readContents2, (file) => {
75904
- const disk = byRelative.get(file);
75905
- if (!disk) throw new Error(`image source ${file} has no input file`);
75906
- const key2 = layout2 ? xcodeInputKey(layout2, disk, file) : file;
75907
- return swiftResourceBundleForFile(bundles, key2)?.path ?? ".";
75908
- });
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 }));
75909
75986
  const colors = enumerateBundleColors(catalogFiles2, readContents2);
75910
75987
  const symbols = enumerateBundleSymbols(catalogFiles2, readContents2, (file) => {
75911
75988
  const disk = byRelative.get(file);
@@ -76089,15 +76166,20 @@ function buildSwiftBundleFiles(packagePath, hosted, inputs, resourceBundles) {
76089
76166
  }
76090
76167
  }
76091
76168
  const groups = /* @__PURE__ */ new Map();
76092
- const appResources = new Set(xcode?.app.resources ?? []);
76169
+ const flatResources = xcodeFlatResources(xcode?.app);
76093
76170
  for (const file of relative5) {
76094
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
+ }
76095
76178
  const key2 = xcode ? xcodeInputKey(xcode, disk, file) : file;
76096
76179
  const bundle = swiftResourceBundleForFile(bundles, key2);
76097
76180
  const bundlePath = bundle?.path ?? ".";
76098
76181
  const group = groups.get(bundlePath) ?? /* @__PURE__ */ new Map();
76099
- const resource = appResources.has(disk) && !file.split("/").includes("Resources") ? `Resources/${file}` : file;
76100
- group.set(resource, disk);
76182
+ group.set(bundleResourcePath(flatResources, disk, file), disk);
76101
76183
  groups.set(bundlePath, group);
76102
76184
  }
76103
76185
  for (const bundle of bundles) {
@@ -86415,7 +86497,7 @@ var init_nitro_superset = __esm({
86415
86497
  init_nitroContract();
86416
86498
  init_swift_standin_digest();
86417
86499
  NITRO_SUPERSET_ENTRY_NAME = "superset";
86418
- NITRO_COMPILER_DIGEST = true ? "5586d24405a8b94499b182fe067e8af8be656d9b36558aa6ccbd8c7f9e4150dd" : nitroCompilerSourceDigest(__sootsim_import_meta_dirname, STANDIN_SOURCE_DIGEST2);
86500
+ NITRO_COMPILER_DIGEST = true ? "a4a039ea02c6f6891931ee5a3d0136be472592ea109f8bc1b947d9d235a9559c" : nitroCompilerSourceDigest(__sootsim_import_meta_dirname, STANDIN_SOURCE_DIGEST2);
86419
86501
  nitroSupersetLock = parseLock(nitro_superset_lock_default);
86420
86502
  nitroSupersetKey = (inputs) => nativeEntryKey({ ...inputs, compiler: NITRO_COMPILER_DIGEST });
86421
86503
  published2 = /* @__PURE__ */ new Map();
@@ -87127,7 +87209,7 @@ var init_one_sdk_bundle = __esm({
87127
87209
  var runtime_companion_default;
87128
87210
  var init_runtime_companion = __esm({
87129
87211
  "runtime-companion.json"() {
87130
- 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" };
87131
87213
  }
87132
87214
  });
87133
87215
 
@@ -87188,6 +87270,7 @@ function getCliRuntime() {
87188
87270
  "Incompatible Peach runtime companion ABI; run `peach runtime install`"
87189
87271
  );
87190
87272
  }
87273
+ runtime.provideTerser(() => import("terser"));
87191
87274
  loaded2 = { root, runtime };
87192
87275
  return runtime;
87193
87276
  }
@@ -87207,46 +87290,11 @@ var init_cli_runtime = __esm({
87207
87290
  }
87208
87291
  });
87209
87292
 
87210
- // src/runtime-delivery.ts
87211
- var DEFAULT_RUNTIME_CDN_ORIGIN, RNX_CHANGELOG_URL, RNX_CHANGELOG_API_URL, RNX_RUNTIME_PRODUCT, rnxRuntime;
87212
- var init_runtime_delivery = __esm({
87213
- "src/runtime-delivery.ts"() {
87214
- "use strict";
87215
- init_define_SWIFT_COVERAGE_SOURCE_DIGESTS();
87216
- init_src();
87217
- init_cli_runtime();
87218
- init_home_paths();
87219
- init_public_brand();
87220
- DEFAULT_RUNTIME_CDN_ORIGIN = peachPublicBrand.origin;
87221
- RNX_CHANGELOG_URL = `${peachPublicBrand.origin}/changelog`;
87222
- RNX_CHANGELOG_API_URL = `${peachPublicBrand.origin}/api/changelog/sootsim`;
87223
- RNX_RUNTIME_PRODUCT = {
87224
- id: "peach",
87225
- defaultCdnOrigin: DEFAULT_RUNTIME_CDN_ORIGIN,
87226
- manifestPath: "/runtimes/manifest.json",
87227
- tarballPath: (version2) => `/runtimes/sootsim-runtime-${version2}.tar.zst`,
87228
- // the engine runtime is a static SPA: shell at the root, engine/ and
87229
- // engine-tenant/ beneath it. index.html is what the daemon and the
87230
- // vite/metro plugins serve, so its absence means the tarball is not one.
87231
- installedMarker: "index.html",
87232
- verifyInstall: ensureCliCompanion,
87233
- env: {
87234
- cdnOrigin: "PEACH_CDN_ORIGIN",
87235
- channel: "PEACH_RUNTIME_CHANNEL"
87236
- },
87237
- ensureHome: ensureRnxHome,
87238
- configFile: configFilePath,
87239
- runtimesDir,
87240
- runtimeDir,
87241
- cacheDir,
87242
- readActiveRuntime,
87243
- writeActiveRuntime
87244
- };
87245
- rnxRuntime = createRuntimeDelivery(RNX_RUNTIME_PRODUCT);
87246
- }
87247
- });
87248
-
87249
87293
  // src/runtime-packs.ts
87294
+ var runtime_packs_exports = {};
87295
+ __export(runtime_packs_exports, {
87296
+ ensureRuntimePackFor: () => ensureRuntimePackFor
87297
+ });
87250
87298
  function listedFiles(runtimeRoot) {
87251
87299
  let listed = listedByRoot.get(runtimeRoot);
87252
87300
  if (listed) return listed;
@@ -87413,6 +87461,52 @@ var init_runtime_packs = __esm({
87413
87461
  }
87414
87462
  });
87415
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
+
87416
87510
  // src/turbo-bundle.ts
87417
87511
  async function compiledTurboProviders(appRoot, projectRoot, iosTarget) {
87418
87512
  const config = await loadRNXAppConfig(resolveAppProject(appRoot));