peachsim 0.1.2219 → 0.1.2221

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 (93) hide show
  1. package/cli/commands/flow.ts +4 -0
  2. package/cli/commands/inspect.ts +4 -4
  3. package/cli/maestro-compare.ts +37 -26
  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 +117 -36
  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 +1 -1
  28. package/dist-lib/dev-bundle-resolution.cjs +1 -1
  29. package/dist-lib/expo-swift-bundle.cjs +114 -33
  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 +115 -34
  34. package/dist-lib/host/fetch-proxy-handler.cjs +3 -3
  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 +3 -3
  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 +3 -3
  50. package/dist-lib/native-app-identity-project.cjs +2 -2
  51. package/dist-lib/native-app-identity-project.mjs +2 -2
  52. package/dist-lib/native-app-identity.cjs +1 -1
  53. package/dist-lib/native-app-identity.mjs +1 -1
  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 +24 -24
  63. package/dist-lib/public-origins-lib.json +53 -53
  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 +115 -34
  71. package/dist-lib/swift-compile.cjs +39 -21
  72. package/dist-lib/swift-compile.mjs +39 -21
  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 +112 -31
  80. package/dist-lib/vite.cjs +3 -3
  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/render-worker/compositor-protocol.d.ts +1 -0
  84. package/package.json +1 -1
  85. package/sdk/ios/System/Library/Frameworks/UIKit.framework/Headers/NSLayoutConstraint.h +1 -8
  86. package/sdk/ios/System/Library/Frameworks/UIKit.framework/Modules/module.modulemap +1 -0
  87. package/sdk/ios/System/Library/Frameworks/UIKitTypes.framework/Headers/UIKitTypes.h +1 -0
  88. package/sdk/ios/System/Library/Frameworks/UIKitTypes.framework/Headers/UILayoutPriority.h +11 -0
  89. package/src/swift-compile.ts +43 -23
  90. package/src/swift-host.ts +84 -2
  91. package/src/swift-objc-import.ts +4 -0
  92. package/src/swift-packages.ts +19 -10
  93. package/src/swift-standins.ts +1 -1
@@ -1,4 +1,4 @@
1
- /*! peach v0.1.2219 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.2221 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
2
2
 
3
3
  // src/cloud-test-args.ts
4
4
  var CLOUD_TEST_ARGS_MAX_COUNT = 32;
@@ -1,4 +1,4 @@
1
- /*! peach v0.1.2219 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.2221 | (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.2219 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.2221 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
2
2
  var __defProp = Object.defineProperty;
3
3
  var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
4
4
  var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
@@ -1,4 +1,4 @@
1
- /*! peach v0.1.2219 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.2221 | (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.2219 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.2221 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
2
2
 
3
3
  // ../contrast-runtime-delivery/src/version.ts
4
4
  function isValidRuntimeVersion(value) {
@@ -1,4 +1,4 @@
1
- /*! peach v0.1.2219 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.2221 | (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.2219 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.2221 | (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.2219 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.2221 | (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;
@@ -18651,7 +18651,7 @@ function swiftSubmoduleImports(sources) {
18651
18651
  }
18652
18652
  return imports2;
18653
18653
  }
18654
- function swiftObjCModuleMap(module2, headers, submodules = /* @__PURE__ */ new Set()) {
18654
+ function swiftObjCModuleMap(module2, headers, submodules = /* @__PURE__ */ new Set(), swiftHeader) {
18655
18655
  const header = (file) => `header ${JSON.stringify(file)}`;
18656
18656
  const stem = (file) => file.slice(file.lastIndexOf("/") + 1).replace(/\.[^.]*$/, "");
18657
18657
  return [
@@ -18659,6 +18659,7 @@ function swiftObjCModuleMap(module2, headers, submodules = /* @__PURE__ */ new S
18659
18659
  ...headers.map(
18660
18660
  (file) => submodules.has(stem(file)) ? ` module ${stem(file)} { ${header(file)} export * }` : ` ${header(file)}`
18661
18661
  ),
18662
+ ...swiftHeader ? [" module Swift {", ` ${header(swiftHeader)}`, " requires objc", " }"] : [],
18662
18663
  " export *",
18663
18664
  "}",
18664
18665
  ""
@@ -20216,6 +20217,10 @@ function emitSwiftPackageManifest(args) {
20216
20217
  includeImportContext(dependency);
20217
20218
  const importedNativeFlags = [
20218
20219
  ...args.nativeImportFlags?.get(target.name) ?? [],
20220
+ ...[...importContext].flatMap((name3) => {
20221
+ const map2 = name3 === target.name ? void 0 : args.nativeSwiftHeaderMaps?.get(name3);
20222
+ return map2 ? ["-fmodule-map-file=" + map2] : [];
20223
+ }),
20219
20224
  ...[...importContext].flatMap((name3) => args.native?.get(name3)?.importFlags ?? []),
20220
20225
  ...[...importContext].flatMap((name3) => {
20221
20226
  const flags = targets.find((target2) => target2.name === name3)?.swiftFlags ?? [];
@@ -21478,6 +21483,7 @@ ${swiftProjectFilesProblems(input.projectFiles).join("\n")}`
21478
21483
  )
21479
21484
  );
21480
21485
  const importModuleMaps = /* @__PURE__ */ new Map();
21486
+ const sourceModuleMaps = /* @__PURE__ */ new Map();
21481
21487
  const generatedModuleMaps = [];
21482
21488
  for (const target of targets) {
21483
21489
  const prefix = target.path === "." ? "" : `${target.path}/`;
@@ -21712,6 +21718,10 @@ ${swiftProjectFilesProblems(input.projectFiles).join("\n")}`
21712
21718
  stageTargetFile(target.name, import_node_path47.default.join(layout2.root, modulemap), moduleContents, {
21713
21719
  allowExisting: true
21714
21720
  });
21721
+ sourceModuleMaps.set(swiftTargetModuleName(target.name), {
21722
+ path: import_node_path47.default.join(layout2.root, modulemap),
21723
+ contents: moduleContents.toString()
21724
+ });
21715
21725
  if (modulemap.endsWith("/Modules/module.modulemap")) {
21716
21726
  const framework = import_node_path47.default.posix.dirname(import_node_path47.default.posix.dirname(modulemap));
21717
21727
  for (const [, header] of moduleContents.toString().matchAll(/\bheader\s+"([^"]+)"/g))
@@ -21986,6 +21996,7 @@ ${swiftProjectFilesProblems(input.projectFiles).join("\n")}`
21986
21996
  if (native.size > 0) (0, import_node_fs50.mkdirSync)(headerDirectory, { recursive: true });
21987
21997
  const headerAliasFlags = Object.keys(input.headerAliases ?? {}).length > 0 ? ["-ivfsoverlay", headerSearch.files[0]] : [];
21988
21998
  const nativeHeaderFlags = [...headerAliasFlags];
21999
+ const nativeSwiftHeaderMaps = /* @__PURE__ */ new Map();
21989
22000
  const originalMaps = /* @__PURE__ */ new Map();
21990
22001
  for (const target of input.nativeTargets ?? []) {
21991
22002
  for (const flag of [...target.flags, ...target.cxxFlags]) {
@@ -22016,30 +22027,33 @@ ${swiftProjectFilesProblems(input.projectFiles).join("\n")}`
22016
22027
  );
22017
22028
  const moduleName = swiftTargetModuleName(name3);
22018
22029
  const originalMap = originalMaps.get(moduleName);
22019
- const originalTokens = originalMap ? moduleMapTokens(input.files[originalMap]) : [];
22020
- if (originalMap && originalTokens.some(
22030
+ const stagedMap = sourceModuleMaps.get(moduleName);
22031
+ const originalPath = originalMap ? import_node_path47.default.join(layout2.root, originalMap) : stagedMap?.path;
22032
+ const originalContents = originalMap ? input.files[originalMap] : stagedMap?.contents;
22033
+ const originalTokens = originalContents ? moduleMapTokens(originalContents) : [];
22034
+ if (originalPath && originalTokens.some(
22021
22035
  (token, index) => token === "module" && (originalTokens[index + 1] === "Swift" || originalTokens[index + 1] === `${moduleName}.Swift`)
22022
22036
  )) {
22023
- nativeHeaderFlags.push("-fmodule-map-file=" + import_node_path47.default.join(layout2.root, originalMap));
22037
+ nativeHeaderFlags.push("-fmodule-map-file=" + originalPath);
22038
+ nativeSwiftHeaderMaps.set(name3, originalPath);
22024
22039
  continue;
22025
22040
  }
22026
22041
  files2.set(
22027
22042
  modulemap,
22028
- originalMap ? `extern module ${moduleName} ${JSON.stringify(import_node_path47.default.join(layout2.root, originalMap))}
22043
+ originalPath ? `extern module ${moduleName} ${JSON.stringify(originalPath)}
22029
22044
  module ${moduleName}.Swift {
22030
22045
  header ${JSON.stringify(import_node_path47.default.join(headerDirectory, name3 + "-Swift.h"))}
22031
22046
  requires objc
22032
22047
  }
22033
22048
  ` : swiftObjCModuleMap(
22034
22049
  moduleName,
22035
- [
22036
- ...(input.nativeTargets?.find((target) => target.name === name3)?.publicHeaders ?? []).map((header) => import_node_path47.default.join(layout2.root, header)),
22037
- import_node_path47.default.join(headerDirectory, name3 + "-Swift.h")
22038
- ],
22039
- submoduleImports.get(moduleName)
22050
+ (input.nativeTargets?.find((target) => target.name === name3)?.publicHeaders ?? []).map((header) => import_node_path47.default.join(layout2.root, header)),
22051
+ submoduleImports.get(moduleName),
22052
+ import_node_path47.default.join(headerDirectory, name3 + "-Swift.h")
22040
22053
  )
22041
22054
  );
22042
22055
  nativeHeaderFlags.push("-fmodule-map-file=" + modulemap);
22056
+ nativeSwiftHeaderMaps.set(name3, modulemap);
22043
22057
  }
22044
22058
  const modulePlan = (0, import_node_crypto21.createHash)("sha256").update(
22045
22059
  swiftModuleInputFiles(moduleRoot).join("\n")
@@ -22396,6 +22410,7 @@ module ${moduleName}.Swift {
22396
22410
  nativeFlags,
22397
22411
  nativeImportFlags,
22398
22412
  nativeHeaderFlags,
22413
+ nativeSwiftHeaderMaps,
22399
22414
  nativeHeaderDeclarations,
22400
22415
  objcImplementationModules: new Set(
22401
22416
  targets.filter(
@@ -22553,30 +22568,30 @@ module ${moduleName}.Swift {
22553
22568
  )
22554
22569
  ])
22555
22570
  );
22571
+ const producerSet = /* @__PURE__ */ new Set([...Object.keys(nativeHeaderDeclarations), ...producers]);
22572
+ const orderedProducers = [];
22556
22573
  const included = /* @__PURE__ */ new Set();
22557
22574
  const include = (name3) => {
22558
22575
  if (included.has(name3)) return;
22559
22576
  included.add(name3);
22560
22577
  for (const dependency of dependencies.get(name3) ?? []) include(dependency);
22578
+ if (producerSet.has(name3)) orderedProducers.push(name3);
22561
22579
  };
22562
- for (const producer of producers)
22580
+ for (const producer of producerSet)
22563
22581
  for (const dependency of dependencies.get(producer) ?? []) include(dependency);
22582
+ const needsHeaderStages = [...producerSet].some((name3) => included.has(name3));
22583
+ for (const producer of producerSet) include(producer);
22564
22584
  return {
22565
22585
  nativeBuildTargets: [...native].flatMap(([name3, plan]) => [
22566
22586
  ...!plan.mixed && plan.sources.length > 0 ? [name3] : [],
22567
22587
  ...plan.groups?.map((group) => group.name) ?? (plan.late ? [plan.late.name] : [])
22568
22588
  ]),
22569
- headerProducers: [
22570
- .../* @__PURE__ */ new Set([
22571
- ...Object.keys(nativeHeaderDeclarations),
22572
- ...producers.filter((name3) => !included.has(name3))
22573
- ])
22574
- ],
22589
+ headerProducers: orderedProducers,
22575
22590
  emittedHeaderProducers: [
22576
22591
  .../* @__PURE__ */ new Set([...Object.keys(nativeHeaderDeclarations), ...producers])
22577
22592
  ],
22578
22593
  nativeHeaderDeclarations,
22579
- headerProductTarget,
22594
+ headerProductTarget: needsHeaderStages ? void 0 : headerProductTarget,
22580
22595
  targetFailures,
22581
22596
  generatedOwners,
22582
22597
  targetToolset
@@ -23763,7 +23778,10 @@ var init_swift_compile = __esm({
23763
23778
  SWIFTPM_NOISE = /^(?:\[\d+\/\d+\] |Building for production\.\.\.$|warning: '--build-system native' has been deprecated)/;
23764
23779
  SWIFT_BUILDER_TRANSPORT_MARGIN_MS = 3e5;
23765
23780
  SWIFT_BUILDER_DEFAULT_COMPILE_MS = 18e5;
23766
- clangInterfaceHeader = (header) => header.replace(/^@import (?:UIKitCore|UIKitText);$/gm, "@import UIKit;").replace(/^@import CoreFoundation;$/gm, "@import Foundation;").replace(/\b_TtC10Foundation\d+(NS\w+)\b/g, "$1").replace(/\b__attribute__\(\(objc_subclassing_restricted\)\)\s*/g, "");
23781
+ clangInterfaceHeader = (header) => header.replace(/^@import (?:UIKitCore|UIKitText);$/gm, "@import UIKit;").replace(
23782
+ /^@import (?:CoreFoundation|FoundationNetworking);$/gm,
23783
+ "@import Foundation;"
23784
+ ).replace(/\b_TtC10Foundation\d+(NS\w+)\b/g, "$1").replace(/\b__attribute__\(\(objc_subclassing_restricted\)\)\s*/g, "");
23767
23785
  swiftInterfaceDeclarations = (header) => /* @__PURE__ */ new Set([
23768
23786
  ...[
23769
23787
  ...header.matchAll(
@@ -23933,7 +23951,7 @@ int EXUpdatesApplyBSDiffPatch(const char * _Nonnull oldFilePath,
23933
23951
  REACTOR_FLAG = '"-Xclang-linker", "-mexec-model=reactor",\n';
23934
23952
  MULTI_MANIFEST_VERSION = 68;
23935
23953
  SWIFT_HEADER_PRODUCTS_TARGET = "PeachHeaderProducts";
23936
- compilerSourceDigest = true ? "0a0bc1c871aee83ea273120655f55a43ddccde646478a452b4c73d2daefd58c3" : swiftCompilerSourceDigest(__sootsim_import_meta_dirname);
23954
+ compilerSourceDigest = true ? "2e9f321a97a408a1b3b8b7d85bbcfb108f0761ed9726b832a3c6c2cc52102806" : swiftCompilerSourceDigest(__sootsim_import_meta_dirname);
23937
23955
  nativeCxxCompilerFlags = ["-fno-cxx-modules"];
23938
23956
  cFlagArray = (flags) => JSON.stringify(withoutGlogModuleMap(flags));
23939
23957
  cxxFlagArray = (flags) => JSON.stringify([...nativeCxxCompilerFlags, ...withoutGlogModuleMap(flags)]);
@@ -28053,7 +28071,7 @@ var init_swift_standin_digest = __esm({
28053
28071
  STANDIN_DIGEST_ENTRYPOINTS = ["swift-standins.ts", "swift-objc-compile.ts"];
28054
28072
  SPECIFIER = /from\s*['"]([^'"]+)['"]|import\s*\(\s*['"]([^'"]+)['"]\s*\)/g;
28055
28073
  standinSourceDigest = (srcDir = __sootsim_import_meta_dirname) => sourceClosureDigest(srcDir, STANDIN_DIGEST_ENTRYPOINTS);
28056
- STANDIN_SOURCE_DIGEST = true ? "f5dd13fe8982e117facf0d8c668773904364a887ec47c728db7584b73f34d119" : standinSourceDigest();
28074
+ STANDIN_SOURCE_DIGEST = true ? "70b9e9f32fde5739daaee933df31b2584f9ef3289c322a0f5b03f1eaac947880" : standinSourceDigest();
28057
28075
  }
28058
28076
  });
28059
28077
 
@@ -28777,17 +28795,17 @@ function remoteSwiftCheckouts(root) {
28777
28795
  import_node_fs68.default.mkdirSync(cacheDir(), { recursive: true });
28778
28796
  return import_node_path66.default.join(import_node_fs68.default.realpathSync(cacheDir()), "swift-packages", key2, "checkouts");
28779
28797
  }
28780
- function unlowerableSources(files2, target) {
28798
+ function unlowerableSources(files2, target, portable) {
28781
28799
  if (target.declaresWasiNativeSettings) return [];
28782
28800
  return [
28783
- ...files2.filter((file) => UNSUPPORTED_NATIVE.test(file)),
28801
+ ...portable.has(target.name) ? [] : files2.filter((file) => UNSUPPORTED_NATIVE.test(file)),
28784
28802
  ...files2.filter(isSwiftNativeTranslationUnit).filter((file) => swiftCTakesReturnAddress(import_node_fs68.default.readFileSync(file, "utf8")))
28785
28803
  ];
28786
28804
  }
28787
- function unloweredSources(files2, target) {
28805
+ function unloweredSources(files2, target, portable) {
28788
28806
  if (target.type !== "regular") return null;
28789
28807
  if (!files2.some(isSwiftNativeTranslationUnit)) return null;
28790
- const unlowered = unlowerableSources(files2, target);
28808
+ const unlowered = unlowerableSources(files2, target, portable);
28791
28809
  if (unlowered.length === 0) return null;
28792
28810
  const headers = import_node_path66.default.resolve(target.dir, target.publicHeadersPath);
28793
28811
  if (!files2.some((file) => file.startsWith(`${headers}${import_node_path66.default.sep}`) && file.endsWith(".h")))
@@ -28991,6 +29009,7 @@ async function resolveSwiftPackagesAsync(options) {
28991
29009
  function resolveSwiftPackages(options) {
28992
29010
  const { rootDir, resolved, products, localDirs } = options;
28993
29011
  const providedTargets = new Set(options.provided ?? []);
29012
+ const portableAssembly = options.portableAssembly ?? /* @__PURE__ */ new Set();
28994
29013
  const providedProducts = new Set(options.provided ?? []);
28995
29014
  const result = {
28996
29015
  sourceLinks: { targets: [], owners: [] },
@@ -29088,7 +29107,7 @@ function resolveSwiftPackages(options) {
29088
29107
  if (target.type === "macro") return preservePackage(pkg, [name3], "host");
29089
29108
  const files2 = target.type === "regular" || target.type === "system" ? swiftTargetFiles(pkg.manifest, target) : [];
29090
29109
  const gap = options.binaryGaps?.get(name3);
29091
- const unlowerable = unlowerableSources(files2, target);
29110
+ const unlowerable = unlowerableSources(files2, target, portableAssembly);
29092
29111
  const placeholder = placeholderPackage(pkg);
29093
29112
  const ownReason = target.type === "binary" ? `${name3} ${BINARY}${gap ? `; ${gap}` : ""}` : placeholder && gap ? `${name3} stands in as a placeholder (${placeholder}), and ${gap}` : target.type !== "regular" && target.type !== "system" ? `${name3} is a ${target.type} target` : unlowerable.length > 0 ? `${name3} has native sources with no wasm32 lowering: ${unlowerable.map((file) => import_node_path66.default.relative(pkg.manifest.dir, file)).join(", ")}${gap ? `; ${gap}` : ""}` : null;
29094
29113
  const reasons = target.dependencies.map((dependency) => {
@@ -29169,7 +29188,7 @@ function resolveSwiftPackages(options) {
29169
29188
  (file) => file.endsWith(".swift") && import_node_fs68.default.readFileSync(file, "utf8").trim() === ""
29170
29189
  ))
29171
29190
  return false;
29172
- if (unloweredSources(files2, target)) return false;
29191
+ if (unloweredSources(files2, target, portableAssembly)) return false;
29173
29192
  claimed.add(key2);
29174
29193
  providedTargets.delete(name3);
29175
29194
  for (const dependency of target.dependencies) {
@@ -29217,7 +29236,7 @@ function resolveSwiftPackages(options) {
29217
29236
  if (target.type === "executable") continue;
29218
29237
  const files2 = target.type === "regular" || target.type === "system" ? swiftTargetFiles(pkg.manifest, target) : [];
29219
29238
  const objc = target.type === "regular" && files2.some((file) => /\.(m|mm)$/.test(file));
29220
- const unlowered = unloweredSources(files2, target);
29239
+ const unlowered = unloweredSources(files2, target, portableAssembly);
29221
29240
  const gap = placeholderPackage(pkg);
29222
29241
  const sources = files2.filter((file) => file.endsWith(".swift"));
29223
29242
  const release = (setting) => setting.configuration !== "debug";
@@ -31452,7 +31471,7 @@ function graphStandin(module2, graphs, values, wasm, binary2, toolchain, work, r
31452
31471
  }
31453
31472
  if (omit.size + plain.size + unobjc.size + trapped.size + unconformed.size + forced.size + nonfailable.size === before)
31454
31473
  throw new Error(
31455
- `its generated source does not typecheck: ${elsewhere.slice(0, 3).join("; ") || check2.stderr.trim().slice(0, 400)}`
31474
+ `its generated source does not typecheck: ${(elsewhere.length > 0 ? elsewhere : [...check2.stderr.matchAll(/^\S+?:\d+:\d+: error: .*$/gm)].map((line) => line[0].replace(/^[^:]*\//, ""))).slice(0, 3).join("; ") || check2.stderr.trim().slice(0, 400)}`
31456
31475
  );
31457
31476
  }
31458
31477
  }
@@ -36659,6 +36678,59 @@ function openXcodeProject(xcodeproj, target, moduleRoot, configuration, interfac
36659
36678
  });
36660
36679
  return root;
36661
36680
  }
36681
+ async function wasmPortableAssembly(binaries, toolchainBin, moduleRoot) {
36682
+ const assembly = binaries.filter(
36683
+ (binary2) => binary2.unloweredSources?.length && binary2.unloweredSources.every((file) => /\.(s|S)$/.test(file)) && binary2.publicHeaders !== void 0
36684
+ );
36685
+ if (assembly.length === 0) return /* @__PURE__ */ new Set();
36686
+ const sdk = swiftSdkPaths(moduleRoot, toolchainBin);
36687
+ const clang = import_node_path77.default.join(toolchainBin, "clang");
36688
+ const empty = (binary2, file) => {
36689
+ const source = import_node_path77.default.join(binary2.dir, file);
36690
+ const key2 = (0, import_node_crypto40.createHash)("sha256").update(
36691
+ JSON.stringify([
36692
+ clang,
36693
+ sdk.sysroot,
36694
+ sdk.cFlags,
36695
+ binary2.dir,
36696
+ binary2.publicHeaders
36697
+ ])
36698
+ ).update(import_node_fs80.default.readFileSync(source)).digest("hex");
36699
+ const known = emptyWasmAssembly.get(key2);
36700
+ if (known) return known;
36701
+ const result = new Promise(
36702
+ (resolve3) => (0, import_node_child_process41.execFile)(
36703
+ clang,
36704
+ [
36705
+ "-target",
36706
+ "wasm32-unknown-wasip1",
36707
+ "--sysroot",
36708
+ sdk.sysroot,
36709
+ ...sdk.cFlags,
36710
+ "-I",
36711
+ import_node_path77.default.join(binary2.dir, binary2.publicHeaders),
36712
+ "-I",
36713
+ import_node_path77.default.dirname(source),
36714
+ "-E",
36715
+ "-P",
36716
+ "-x",
36717
+ "assembler-with-cpp",
36718
+ source
36719
+ ],
36720
+ { maxBuffer: 64 * 1024 * 1024 },
36721
+ (error, stdout) => resolve3(!error && stdout.trim() === "")
36722
+ )
36723
+ );
36724
+ emptyWasmAssembly.set(key2, result);
36725
+ return result;
36726
+ };
36727
+ const portable = await Promise.all(
36728
+ assembly.map(
36729
+ async (binary2) => (await Promise.all(binary2.unloweredSources.map((file) => empty(binary2, file)))).every(Boolean) ? [binary2.target] : []
36730
+ )
36731
+ );
36732
+ return new Set(portable.flat());
36733
+ }
36662
36734
  async function swiftPackages(entry, app) {
36663
36735
  const stamp = (file) => import_node_fs80.default.existsSync(file) ? (0, import_node_crypto40.createHash)("sha256").update(import_node_fs80.default.readFileSync(file)).digest("hex") : null;
36664
36736
  const owners = [...app.frameworks, app].map((target) => ({
@@ -36723,7 +36795,14 @@ async function swiftPackages(entry, app) {
36723
36795
  entry.moduleRoot,
36724
36796
  import_node_path77.default.join(resolved.toolchainBin, "clang++")
36725
36797
  );
36726
- const cxxArtifacts = reached.filter(standinArtifact);
36798
+ const portableAssembly = await wasmPortableAssembly(
36799
+ reached,
36800
+ resolved.toolchainBin,
36801
+ entry.moduleRoot
36802
+ );
36803
+ const cxxArtifacts = reached.filter(
36804
+ (binary2) => standinArtifact(binary2) && !portableAssembly.has(binary2.target)
36805
+ );
36727
36806
  const generation = standinGenerationInputs(cxxArtifacts, toolchain, entry.behavior);
36728
36807
  if (cached2.standinKey !== generation) {
36729
36808
  const replaced = new Set(
@@ -36750,6 +36829,7 @@ async function swiftPackages(entry, app) {
36750
36829
  [...replaced].filter((target) => !built2.gaps.has(target))
36751
36830
  ),
36752
36831
  binaryGaps: built2.gaps,
36832
+ portableAssembly,
36753
36833
  owners
36754
36834
  });
36755
36835
  for (const target of new Set(built2.standins.map((standin) => standin.target)))
@@ -38526,7 +38606,7 @@ function scopedArtifact(project, entry, moduleRoot, signal) {
38526
38606
  project.building = { stamp, promise: fresh, signal };
38527
38607
  return fresh;
38528
38608
  }
38529
- var import_node_async_hooks, import_node_child_process41, import_node_crypto40, import_node_fs80, import_node_os17, import_node_path77, RESOURCE_PATH, ICU_PATH, SKIP_ROOT_DIRS, NATIVE_DESCRIPTOR, NATIVE_GLUE, SwiftMissingModulesError, sharedProjects, projectScope, projects, sharedSourceEntries, sourceEntries, sharedXcodeProjects, xcodeProjects, preparedScriptInputs, XCODE_APP_DIR, XCODE_FRAMEWORKS_DIR, XCODE_PACKAGES_DIR, layoutScope, HOSTED_LIMITS, LOCAL_LIMITS, inputLimits, RESOURCE_CONTENT_TYPES, API_GAP_PATTERNS, IOS_SDK_FRAMEWORKS;
38609
+ var import_node_async_hooks, import_node_child_process41, import_node_crypto40, import_node_fs80, import_node_os17, import_node_path77, RESOURCE_PATH, ICU_PATH, SKIP_ROOT_DIRS, NATIVE_DESCRIPTOR, NATIVE_GLUE, SwiftMissingModulesError, sharedProjects, projectScope, projects, sharedSourceEntries, sourceEntries, sharedXcodeProjects, xcodeProjects, preparedScriptInputs, emptyWasmAssembly, XCODE_APP_DIR, XCODE_FRAMEWORKS_DIR, XCODE_PACKAGES_DIR, layoutScope, HOSTED_LIMITS, LOCAL_LIMITS, inputLimits, RESOURCE_CONTENT_TYPES, API_GAP_PATTERNS, IOS_SDK_FRAMEWORKS;
38530
38610
  var init_swift_host = __esm({
38531
38611
  "src/swift-host.ts"() {
38532
38612
  "use strict";
@@ -38579,6 +38659,7 @@ var init_swift_host = __esm({
38579
38659
  sharedXcodeProjects = /* @__PURE__ */ new Map();
38580
38660
  xcodeProjects = () => projectScope.getStore()?.xcodeProjects ?? sharedXcodeProjects;
38581
38661
  preparedScriptInputs = /* @__PURE__ */ new Set();
38662
+ emptyWasmAssembly = /* @__PURE__ */ new Map();
38582
38663
  XCODE_APP_DIR = "__app__";
38583
38664
  XCODE_FRAMEWORKS_DIR = "__frameworks__";
38584
38665
  XCODE_PACKAGES_DIR = SWIFT_REMOTE_PACKAGES_DIR;
@@ -48793,7 +48874,7 @@ init_swift_native_pin();
48793
48874
  init_xcode_project();
48794
48875
  var EXPO_NATIVE_ENTRY_NAME = "ios";
48795
48876
  function expoNativeCompilerDigestValue() {
48796
- return true ? "a02a843d19cee6ee62d1798fd5f234d2bbd4e12e327c75be531211719fc1c09b" : expoNativeCompilerDigest(__sootsim_import_meta_dirname);
48877
+ return true ? "7667f1dce279c8074ed9dd97de1e3b293077ae012cacf08fd6572978f8ef7dc0" : expoNativeCompilerDigest(__sootsim_import_meta_dirname);
48797
48878
  }
48798
48879
  var IDENTITY_SOURCE_SKIPS = 1 | 4 | 8 | 16 | 32 | 64 | 128 | 4096;
48799
48880
  function readSources(value) {
@@ -1,4 +1,4 @@
1
- /*! peach v0.1.2219 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.2221 | (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.2219 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.2221 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
2
2
 
3
3
  // ../peach-globals/src/bundle-global-footer.ts
4
4
  function findBundleFooter(source, prefix) {
@@ -1,4 +1,4 @@
1
- /*! peach v0.1.2219 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.2221 | (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;