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;
@@ -10254,7 +10254,8 @@ var FEATURES = [
10254
10254
  "reference-types",
10255
10255
  "sign-ext"
10256
10256
  ];
10257
- var WASM_OPTIMIZE_IDENTITY = `wasm-opt ${import_wasm_opt.BINARYEN_VERSION} -Oz ${FEATURES.join(",")}`;
10257
+ var KEEP_WASM_NAMES = process.env.PEACH_SWIFT_NAMES === "1";
10258
+ var WASM_OPTIMIZE_IDENTITY = `wasm-opt ${import_wasm_opt.BINARYEN_VERSION} -Oz ${FEATURES.join(",")}${KEEP_WASM_NAMES ? " -g" : ""}`;
10258
10259
  var PINNED_BINARYEN_VERSION = "132";
10259
10260
  var BINARYEN_RELEASES = /* @__PURE__ */ new Map([
10260
10261
  [
@@ -10290,6 +10291,7 @@ async function runWasmOpt(file, output, skipPasses, binary) {
10290
10291
  const result = await (0, import_wasm_opt.wasmOpt)(
10291
10292
  [
10292
10293
  "-Oz",
10294
+ ...KEEP_WASM_NAMES ? ["-g"] : [],
10293
10295
  ...skipPasses.flatMap((pass) => ["--skip-pass", pass]),
10294
10296
  ...FEATURES.map((feature) => `--enable-${feature}`),
10295
10297
  file,
@@ -12068,7 +12070,8 @@ var OPTIONAL_FRAMEWORK_DEPENDENCIES = {
12068
12070
  PeachCFNetwork: [],
12069
12071
  JavaScriptCore: ["PeachJavaScriptCore"],
12070
12072
  PeachJavaScriptCore: [],
12071
- GameplayKit: [],
12073
+ // GameplayKit names SpriteKit and SceneKit nodes, as on iOS
12074
+ GameplayKit: ["SpriteKit", "SceneKit", "PeachBox2D", "simd", "GLKit"],
12072
12075
  simd: [],
12073
12076
  ModelIO: ["simd"],
12074
12077
  GLKit: ["ModelIO"],
@@ -12579,10 +12582,21 @@ function swiftTargetDependencies(files, targets, frameworks = OPTIONAL_FRAMEWORK
12579
12582
  return siblings;
12580
12583
  }
12581
12584
  var ONE_PRODUCT = '.product(name: "One", package: "sootsim-swift")';
12582
- var SPRITEKIT_PRODUCT = '.product(name: "SpriteKit", package: "sootsim-swift")';
12583
- var importsSpriteKit = (files) => Object.entries(files).some(
12584
- ([file, contents]) => file.endsWith(".swift") && swiftImportNames(contents).includes("SpriteKit")
12585
- );
12585
+ var GAME_FAMILY = ["SpriteKit", "SceneKit"];
12586
+ var gameProducts = (files) => {
12587
+ const imported = new Set(
12588
+ Object.entries(files).flatMap(
12589
+ ([file, contents]) => file.endsWith(".swift") ? swiftImportNames(contents) : []
12590
+ )
12591
+ );
12592
+ if (imported.has("SceneKit")) return [...GAME_FAMILY];
12593
+ return imported.has("SpriteKit") ? ["SpriteKit"] : [];
12594
+ };
12595
+ var gameProduct = (name2) => `.product(name: "${name2}", package: "sootsim-swift")`;
12596
+ var GAME_REACH = {
12597
+ SpriteKit: ["SpriteKit", "PeachBox2D", "simd", "GLKit"],
12598
+ SceneKit: ["SceneKit"]
12599
+ };
12586
12600
  var FOUNDATION_IMPLICIT_MODULES = [
12587
12601
  "PeachObjC",
12588
12602
  "Dispatch",
@@ -12609,7 +12623,7 @@ var darwinRecordsRegion = (quoted) => quoted.length ? ["-Wl,--start-lib", ...quo
12609
12623
  var REACTOR_FLAG = '"-Xclang-linker", "-mexec-model=reactor",\n';
12610
12624
  var MULTI_MANIFEST_VERSION = 68;
12611
12625
  var SWIFT_HEADER_PRODUCTS_TARGET = "PeachHeaderProducts";
12612
- var compilerSourceDigest = true ? "2e9f321a97a408a1b3b8b7d85bbcfb108f0761ed9726b832a3c6c2cc52102806" : swiftCompilerSourceDigest(__sootsim_import_meta_dirname);
12626
+ var compilerSourceDigest = true ? "eba60b7a2e9485f928a6ec2e544e10d84b2b33430be66b9e069c9797a927af86" : swiftCompilerSourceDigest(__sootsim_import_meta_dirname);
12613
12627
  function swiftArtifactHash(input, release, moduleRoot) {
12614
12628
  const hash = (0, import_node_crypto13.createHash)("sha256");
12615
12629
  hash.update(`swift-compile
@@ -12617,6 +12631,7 @@ ${release}
12617
12631
  `);
12618
12632
  hash.update(compilerSourceDigest);
12619
12633
  if (input.oneModule) hash.update("one-module\n");
12634
+ if (KEEP_WASM_NAMES) hash.update("names\n");
12620
12635
  hash.update(swiftModuleDigest(moduleRoot));
12621
12636
  if (input.optimize) hash.update(`optimize
12622
12637
  ${WASM_OPTIMIZE_IDENTITY}
@@ -12731,7 +12746,14 @@ function toolsetOrdersLibcxxBeforeDarwinOverlay(options) {
12731
12746
  return libcxx >= 0 && overlay > libcxx;
12732
12747
  }
12733
12748
  function emitSwiftPackageManifest(args) {
12734
- const { targets, siblings, moduleRoot, oneModule, spriteKit, distribution } = args;
12749
+ const {
12750
+ targets,
12751
+ siblings,
12752
+ moduleRoot,
12753
+ oneModule,
12754
+ gameProducts: gameProducts2 = [],
12755
+ distribution
12756
+ } = args;
12735
12757
  const prebuilt = args.prebuilt;
12736
12758
  const linkedObjects = Boolean(distribution || prebuilt);
12737
12759
  const cxxFlagsFor = (flags) => args.deferDarwinOverlay ? withoutWasmOverlayIsystem(flags) : flags;
@@ -12760,9 +12782,8 @@ function emitSwiftPackageManifest(args) {
12760
12782
  for (const name2 of [...siblings.values()].flat())
12761
12783
  if (OPTIONAL_FRAMEWORKS.has(name2) && !targets.some((target) => target.name === name2))
12762
12784
  reach(name2);
12763
- if (spriteKit) {
12764
- for (const name2 of ["SpriteKit", "PeachBox2D", "simd", "GLKit"]) reach(name2);
12765
- }
12785
+ for (const product of gameProducts2)
12786
+ for (const name2 of GAME_REACH[product] ?? []) reach(name2);
12766
12787
  let distributionLinkPath;
12767
12788
  const distributionLink = args.distributionLink;
12768
12789
  if (distribution && distributionLink) {
@@ -12785,7 +12806,7 @@ function emitSwiftPackageManifest(args) {
12785
12806
  (object3) => !isProvider(object3) && !replacedObjects.has(object3)
12786
12807
  );
12787
12808
  const objects = available.filter(
12788
- (object3) => !targets.some((target) => object3.startsWith(`lib/${target.name}-`)) && [...OPTIONAL_FRAMEWORKS, "SpriteKit", "PeachBox2D"].every(
12809
+ (object3) => !targets.some((target) => object3.startsWith(`lib/${target.name}-`)) && [...OPTIONAL_FRAMEWORKS, ...GAME_FAMILY, "PeachBox2D"].every(
12789
12810
  (name2) => !object3.startsWith(`lib/${name2}-`) || reachedFrameworks.has(name2)
12790
12811
  )
12791
12812
  );
@@ -12948,7 +12969,7 @@ function emitSwiftPackageManifest(args) {
12948
12969
  ...linkedObjects || clang && !target.executable ? [] : [
12949
12970
  '.product(name: "SwiftUI", package: "sootsim-swift")',
12950
12971
  ...oneModule ? [ONE_PRODUCT] : [],
12951
- ...spriteKit ? [SPRITEKIT_PRODUCT] : []
12972
+ ...gameProducts2.map(gameProduct)
12952
12973
  ],
12953
12974
  ...(siblings.get(target.name) ?? []).flatMap(
12954
12975
  (dependency) => clang && // textual native headers can include one another without imposing
@@ -12980,7 +13001,7 @@ function emitSwiftPackageManifest(args) {
12980
13001
  .unsafeFlags(${flagArray(`[
12981
13002
  ${REACTOR_FLAG}${executableLinkFlags(args.root)} "-Xlinker", "--export-if-defined=__main_argc_argv"${library},
12982
13003
  ]`)}),
12983
- .unsafeFlags(["-Xlinker", "--strip-all"], .when(configuration: .release)),
13004
+ ${KEEP_WASM_NAMES ? "" : '.unsafeFlags(["-Xlinker", "--strip-all"], .when(configuration: .release)),'}
12984
13005
  ]` : librarySettings.length > 0 ? `,
12985
13006
  linkerSettings: [${librarySettings.join(", ")}]` : "";
12986
13007
  const cDefines = macroSettings(target.cDefines);
@@ -13585,8 +13606,6 @@ var FOUNDATION_OVERLAY_GLOBALS = /* @__PURE__ */ new Set([
13585
13606
  "NSURLProtectionSpaceHTTPS",
13586
13607
  "NSURLProtectionSpaceHTTPSProxy",
13587
13608
  "NSURLProtectionSpaceSOCKSProxy",
13588
- "NSURLSessionDownloadTaskResumeData",
13589
- "NSURLSessionTransferSizeUnknown",
13590
13609
  "NSURLSessionUploadTaskResumeData",
13591
13610
  "NSUTF16BigEndianStringEncoding",
13592
13611
  "NSUTF16LittleEndianStringEncoding",
@@ -15591,14 +15610,17 @@ module ${moduleName}.Swift {
15591
15610
  manifest = manifest.replace(product, `${product}
15592
15611
  ${ONE_PRODUCT},`).replace(flags, `${flags}${ONE_IMPLICIT_FLAGS}`);
15593
15612
  }
15594
- if (importsSpriteKit(input.files)) {
15613
+ const games = gameProducts(input.files);
15614
+ if (games.length > 0) {
15595
15615
  const anchor = '.product(name: "CoreLocation", package: "sootsim-swift"),';
15596
15616
  if (!manifest.includes(anchor))
15597
15617
  throw new Error(
15598
- "scripts/contrast-app-Package.swift lost the line the SpriteKit product links at"
15618
+ "scripts/contrast-app-Package.swift lost the line the game products link at"
15599
15619
  );
15600
- manifest = manifest.replace(anchor, `${anchor}
15601
- ${SPRITEKIT_PRODUCT},`);
15620
+ manifest = manifest.replace(
15621
+ anchor,
15622
+ [anchor, ...games.map((name2) => `${gameProduct(name2)},`)].join("\n ")
15623
+ );
15602
15624
  }
15603
15625
  files.set(import_node_path27.default.join(layout2.root, "Package.swift"), manifest + moduleFiles);
15604
15626
  } else {
@@ -15713,7 +15735,7 @@ module ${moduleName}.Swift {
15713
15735
  siblings: moduleSiblings,
15714
15736
  moduleRoot,
15715
15737
  oneModule: input.oneModule,
15716
- spriteKit: importsSpriteKit(input.files),
15738
+ gameProducts: gameProducts(input.files),
15717
15739
  distribution: distribution ?? void 0,
15718
15740
  moduleExcludes,
15719
15741
  deferDarwinOverlay: native.size > 0 && toolsetOrdersLibcxxBeforeDarwinOverlay(
@@ -16120,14 +16142,9 @@ function linkedFrameworkTargets(moduleRoot, input) {
16120
16142
  ))
16121
16143
  reach(match[1]);
16122
16144
  }
16123
- if (importsSpriteKit(input.files))
16124
- for (const name2 of ["SpriteKit", "PeachBox2D", "simd", "GLKit"]) reach(name2);
16125
- const wanted = [
16126
- "PeachApp",
16127
- ...input.oneModule ? ["One"] : [],
16128
- ...importsSpriteKit(input.files) ? ["SpriteKit"] : [],
16129
- ...reached
16130
- ];
16145
+ const games = gameProducts(input.files);
16146
+ for (const product of games) for (const name2 of GAME_REACH[product] ?? []) reach(name2);
16147
+ const wanted = ["PeachApp", ...input.oneModule ? ["One"] : [], ...games, ...reached];
16131
16148
  const linked = [...new Set(wanted)].filter((name2) => libraries.has(name2));
16132
16149
  if (!linked.includes("PeachApp"))
16133
16150
  throw new Error("swift-compile: the framework package declares no PeachApp library");
@@ -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
 
3
3
  // src/swift-compile.ts
4
4
  import {
@@ -10209,7 +10209,8 @@ var FEATURES = [
10209
10209
  "reference-types",
10210
10210
  "sign-ext"
10211
10211
  ];
10212
- var WASM_OPTIMIZE_IDENTITY = `wasm-opt ${BINARYEN_VERSION} -Oz ${FEATURES.join(",")}`;
10212
+ var KEEP_WASM_NAMES = process.env.PEACH_SWIFT_NAMES === "1";
10213
+ var WASM_OPTIMIZE_IDENTITY = `wasm-opt ${BINARYEN_VERSION} -Oz ${FEATURES.join(",")}${KEEP_WASM_NAMES ? " -g" : ""}`;
10213
10214
  var PINNED_BINARYEN_VERSION = "132";
10214
10215
  var BINARYEN_RELEASES = /* @__PURE__ */ new Map([
10215
10216
  [
@@ -10245,6 +10246,7 @@ async function runWasmOpt(file, output, skipPasses, binary) {
10245
10246
  const result = await wasmOpt(
10246
10247
  [
10247
10248
  "-Oz",
10249
+ ...KEEP_WASM_NAMES ? ["-g"] : [],
10248
10250
  ...skipPasses.flatMap((pass) => ["--skip-pass", pass]),
10249
10251
  ...FEATURES.map((feature) => `--enable-${feature}`),
10250
10252
  file,
@@ -12047,7 +12049,8 @@ var OPTIONAL_FRAMEWORK_DEPENDENCIES = {
12047
12049
  PeachCFNetwork: [],
12048
12050
  JavaScriptCore: ["PeachJavaScriptCore"],
12049
12051
  PeachJavaScriptCore: [],
12050
- GameplayKit: [],
12052
+ // GameplayKit names SpriteKit and SceneKit nodes, as on iOS
12053
+ GameplayKit: ["SpriteKit", "SceneKit", "PeachBox2D", "simd", "GLKit"],
12051
12054
  simd: [],
12052
12055
  ModelIO: ["simd"],
12053
12056
  GLKit: ["ModelIO"],
@@ -12558,10 +12561,21 @@ function swiftTargetDependencies(files, targets, frameworks = OPTIONAL_FRAMEWORK
12558
12561
  return siblings;
12559
12562
  }
12560
12563
  var ONE_PRODUCT = '.product(name: "One", package: "sootsim-swift")';
12561
- var SPRITEKIT_PRODUCT = '.product(name: "SpriteKit", package: "sootsim-swift")';
12562
- var importsSpriteKit = (files) => Object.entries(files).some(
12563
- ([file, contents]) => file.endsWith(".swift") && swiftImportNames(contents).includes("SpriteKit")
12564
- );
12564
+ var GAME_FAMILY = ["SpriteKit", "SceneKit"];
12565
+ var gameProducts = (files) => {
12566
+ const imported = new Set(
12567
+ Object.entries(files).flatMap(
12568
+ ([file, contents]) => file.endsWith(".swift") ? swiftImportNames(contents) : []
12569
+ )
12570
+ );
12571
+ if (imported.has("SceneKit")) return [...GAME_FAMILY];
12572
+ return imported.has("SpriteKit") ? ["SpriteKit"] : [];
12573
+ };
12574
+ var gameProduct = (name2) => `.product(name: "${name2}", package: "sootsim-swift")`;
12575
+ var GAME_REACH = {
12576
+ SpriteKit: ["SpriteKit", "PeachBox2D", "simd", "GLKit"],
12577
+ SceneKit: ["SceneKit"]
12578
+ };
12565
12579
  var FOUNDATION_IMPLICIT_MODULES = [
12566
12580
  "PeachObjC",
12567
12581
  "Dispatch",
@@ -12588,7 +12602,7 @@ var darwinRecordsRegion = (quoted) => quoted.length ? ["-Wl,--start-lib", ...quo
12588
12602
  var REACTOR_FLAG = '"-Xclang-linker", "-mexec-model=reactor",\n';
12589
12603
  var MULTI_MANIFEST_VERSION = 68;
12590
12604
  var SWIFT_HEADER_PRODUCTS_TARGET = "PeachHeaderProducts";
12591
- var compilerSourceDigest = true ? "2e9f321a97a408a1b3b8b7d85bbcfb108f0761ed9726b832a3c6c2cc52102806" : swiftCompilerSourceDigest(import.meta.dirname);
12605
+ var compilerSourceDigest = true ? "eba60b7a2e9485f928a6ec2e544e10d84b2b33430be66b9e069c9797a927af86" : swiftCompilerSourceDigest(import.meta.dirname);
12592
12606
  function swiftArtifactHash(input, release, moduleRoot) {
12593
12607
  const hash = createHash13("sha256");
12594
12608
  hash.update(`swift-compile
@@ -12596,6 +12610,7 @@ ${release}
12596
12610
  `);
12597
12611
  hash.update(compilerSourceDigest);
12598
12612
  if (input.oneModule) hash.update("one-module\n");
12613
+ if (KEEP_WASM_NAMES) hash.update("names\n");
12599
12614
  hash.update(swiftModuleDigest(moduleRoot));
12600
12615
  if (input.optimize) hash.update(`optimize
12601
12616
  ${WASM_OPTIMIZE_IDENTITY}
@@ -12710,7 +12725,14 @@ function toolsetOrdersLibcxxBeforeDarwinOverlay(options) {
12710
12725
  return libcxx >= 0 && overlay > libcxx;
12711
12726
  }
12712
12727
  function emitSwiftPackageManifest(args) {
12713
- const { targets, siblings, moduleRoot, oneModule, spriteKit, distribution } = args;
12728
+ const {
12729
+ targets,
12730
+ siblings,
12731
+ moduleRoot,
12732
+ oneModule,
12733
+ gameProducts: gameProducts2 = [],
12734
+ distribution
12735
+ } = args;
12714
12736
  const prebuilt = args.prebuilt;
12715
12737
  const linkedObjects = Boolean(distribution || prebuilt);
12716
12738
  const cxxFlagsFor = (flags) => args.deferDarwinOverlay ? withoutWasmOverlayIsystem(flags) : flags;
@@ -12739,9 +12761,8 @@ function emitSwiftPackageManifest(args) {
12739
12761
  for (const name2 of [...siblings.values()].flat())
12740
12762
  if (OPTIONAL_FRAMEWORKS.has(name2) && !targets.some((target) => target.name === name2))
12741
12763
  reach(name2);
12742
- if (spriteKit) {
12743
- for (const name2 of ["SpriteKit", "PeachBox2D", "simd", "GLKit"]) reach(name2);
12744
- }
12764
+ for (const product of gameProducts2)
12765
+ for (const name2 of GAME_REACH[product] ?? []) reach(name2);
12745
12766
  let distributionLinkPath;
12746
12767
  const distributionLink = args.distributionLink;
12747
12768
  if (distribution && distributionLink) {
@@ -12764,7 +12785,7 @@ function emitSwiftPackageManifest(args) {
12764
12785
  (object3) => !isProvider(object3) && !replacedObjects.has(object3)
12765
12786
  );
12766
12787
  const objects = available.filter(
12767
- (object3) => !targets.some((target) => object3.startsWith(`lib/${target.name}-`)) && [...OPTIONAL_FRAMEWORKS, "SpriteKit", "PeachBox2D"].every(
12788
+ (object3) => !targets.some((target) => object3.startsWith(`lib/${target.name}-`)) && [...OPTIONAL_FRAMEWORKS, ...GAME_FAMILY, "PeachBox2D"].every(
12768
12789
  (name2) => !object3.startsWith(`lib/${name2}-`) || reachedFrameworks.has(name2)
12769
12790
  )
12770
12791
  );
@@ -12927,7 +12948,7 @@ function emitSwiftPackageManifest(args) {
12927
12948
  ...linkedObjects || clang && !target.executable ? [] : [
12928
12949
  '.product(name: "SwiftUI", package: "sootsim-swift")',
12929
12950
  ...oneModule ? [ONE_PRODUCT] : [],
12930
- ...spriteKit ? [SPRITEKIT_PRODUCT] : []
12951
+ ...gameProducts2.map(gameProduct)
12931
12952
  ],
12932
12953
  ...(siblings.get(target.name) ?? []).flatMap(
12933
12954
  (dependency) => clang && // textual native headers can include one another without imposing
@@ -12959,7 +12980,7 @@ function emitSwiftPackageManifest(args) {
12959
12980
  .unsafeFlags(${flagArray(`[
12960
12981
  ${REACTOR_FLAG}${executableLinkFlags(args.root)} "-Xlinker", "--export-if-defined=__main_argc_argv"${library},
12961
12982
  ]`)}),
12962
- .unsafeFlags(["-Xlinker", "--strip-all"], .when(configuration: .release)),
12983
+ ${KEEP_WASM_NAMES ? "" : '.unsafeFlags(["-Xlinker", "--strip-all"], .when(configuration: .release)),'}
12963
12984
  ]` : librarySettings.length > 0 ? `,
12964
12985
  linkerSettings: [${librarySettings.join(", ")}]` : "";
12965
12986
  const cDefines = macroSettings(target.cDefines);
@@ -13564,8 +13585,6 @@ var FOUNDATION_OVERLAY_GLOBALS = /* @__PURE__ */ new Set([
13564
13585
  "NSURLProtectionSpaceHTTPS",
13565
13586
  "NSURLProtectionSpaceHTTPSProxy",
13566
13587
  "NSURLProtectionSpaceSOCKSProxy",
13567
- "NSURLSessionDownloadTaskResumeData",
13568
- "NSURLSessionTransferSizeUnknown",
13569
13588
  "NSURLSessionUploadTaskResumeData",
13570
13589
  "NSUTF16BigEndianStringEncoding",
13571
13590
  "NSUTF16LittleEndianStringEncoding",
@@ -15570,14 +15589,17 @@ module ${moduleName}.Swift {
15570
15589
  manifest = manifest.replace(product, `${product}
15571
15590
  ${ONE_PRODUCT},`).replace(flags, `${flags}${ONE_IMPLICIT_FLAGS}`);
15572
15591
  }
15573
- if (importsSpriteKit(input.files)) {
15592
+ const games = gameProducts(input.files);
15593
+ if (games.length > 0) {
15574
15594
  const anchor = '.product(name: "CoreLocation", package: "sootsim-swift"),';
15575
15595
  if (!manifest.includes(anchor))
15576
15596
  throw new Error(
15577
- "scripts/contrast-app-Package.swift lost the line the SpriteKit product links at"
15597
+ "scripts/contrast-app-Package.swift lost the line the game products link at"
15578
15598
  );
15579
- manifest = manifest.replace(anchor, `${anchor}
15580
- ${SPRITEKIT_PRODUCT},`);
15599
+ manifest = manifest.replace(
15600
+ anchor,
15601
+ [anchor, ...games.map((name2) => `${gameProduct(name2)},`)].join("\n ")
15602
+ );
15581
15603
  }
15582
15604
  files.set(path27.join(layout2.root, "Package.swift"), manifest + moduleFiles);
15583
15605
  } else {
@@ -15692,7 +15714,7 @@ module ${moduleName}.Swift {
15692
15714
  siblings: moduleSiblings,
15693
15715
  moduleRoot,
15694
15716
  oneModule: input.oneModule,
15695
- spriteKit: importsSpriteKit(input.files),
15717
+ gameProducts: gameProducts(input.files),
15696
15718
  distribution: distribution ?? void 0,
15697
15719
  moduleExcludes,
15698
15720
  deferDarwinOverlay: native.size > 0 && toolsetOrdersLibcxxBeforeDarwinOverlay(
@@ -16099,14 +16121,9 @@ function linkedFrameworkTargets(moduleRoot, input) {
16099
16121
  ))
16100
16122
  reach(match[1]);
16101
16123
  }
16102
- if (importsSpriteKit(input.files))
16103
- for (const name2 of ["SpriteKit", "PeachBox2D", "simd", "GLKit"]) reach(name2);
16104
- const wanted = [
16105
- "PeachApp",
16106
- ...input.oneModule ? ["One"] : [],
16107
- ...importsSpriteKit(input.files) ? ["SpriteKit"] : [],
16108
- ...reached
16109
- ];
16124
+ const games = gameProducts(input.files);
16125
+ for (const product of games) for (const name2 of GAME_REACH[product] ?? []) reach(name2);
16126
+ const wanted = ["PeachApp", ...input.oneModule ? ["One"] : [], ...games, ...reached];
16110
16127
  const linked = [...new Set(wanted)].filter((name2) => libraries.has(name2));
16111
16128
  if (!linked.includes("PeachApp"))
16112
16129
  throw new Error("swift-compile: the framework package declares no PeachApp library");
@@ -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 __defProp = Object.defineProperty;
@@ -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
 
3
3
  // src/swift-package.ts
4
4
  function swiftManifestSettings(target) {
@@ -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 __defProp = Object.defineProperty;
@@ -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
 
3
3
  // src/is-record.ts
4
4
  function isRecord(value) {
@@ -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;
@@ -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 __defProp = Object.defineProperty;