peachsim 0.1.2219 → 0.1.2220

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 (85) hide show
  1. package/cli/commands/flow.ts +4 -0
  2. package/cli/maestro-compare.ts +37 -26
  3. package/dist-lib/agent-daemon-client.cjs +1 -1
  4. package/dist-lib/agent-events.cjs +1 -1
  5. package/dist-lib/attached-projects.cjs +1 -1
  6. package/dist-lib/auth/shared-session.cjs +1 -1
  7. package/dist-lib/backend-origin.cjs +1 -1
  8. package/dist-lib/beta.cjs +1 -1
  9. package/dist-lib/beta.mjs +1 -1
  10. package/dist-lib/bridge-constants.cjs +1 -1
  11. package/dist-lib/bridge-contract-input.cjs +1 -1
  12. package/dist-lib/bridge-contract-input.mjs +1 -1
  13. package/dist-lib/bridge-contract.cjs +1 -1
  14. package/dist-lib/bridge-contract.mjs +1 -1
  15. package/dist-lib/bundle-channel.cjs +79 -16
  16. package/dist-lib/capture-contract.cjs +1 -1
  17. package/dist-lib/capture-contract.mjs +1 -1
  18. package/dist-lib/cloud-contract.cjs +1 -1
  19. package/dist-lib/cloud-contract.mjs +1 -1
  20. package/dist-lib/cloud-test-args.cjs +1 -1
  21. package/dist-lib/cloud-test-args.mjs +1 -1
  22. package/dist-lib/cloud.cjs +1 -1
  23. package/dist-lib/cloud.mjs +1 -1
  24. package/dist-lib/config.cjs +1 -1
  25. package/dist-lib/config.mjs +1 -1
  26. package/dist-lib/detox/index.cjs +1 -1
  27. package/dist-lib/dev-bundle-resolution.cjs +1 -1
  28. package/dist-lib/expo-swift-bundle.cjs +76 -13
  29. package/dist-lib/expo-swift-metadata.cjs +1 -1
  30. package/dist-lib/expo-swift-metadata.mjs +1 -1
  31. package/dist-lib/home-paths.cjs +1 -1
  32. package/dist-lib/host/bridge-host.cjs +77 -14
  33. package/dist-lib/host/fetch-proxy-handler.cjs +2 -2
  34. package/dist-lib/host/fetch-proxy-overrides.cjs +1 -1
  35. package/dist-lib/host/fetch-proxy-overrides.mjs +1 -1
  36. package/dist-lib/host/replacement-module-handler.cjs +1 -1
  37. package/dist-lib/host/websocket-proxy.cjs +1 -1
  38. package/dist-lib/index.cjs +2 -2
  39. package/dist-lib/jump-to-source-babel.cjs +1 -1
  40. package/dist-lib/jump-to-source-native.cjs +1 -1
  41. package/dist-lib/kotlin-host.cjs +1 -1
  42. package/dist-lib/menu.cjs +1 -1
  43. package/dist-lib/menu.mjs +1 -1
  44. package/dist-lib/metro-fingerprint-registry.cjs +1 -1
  45. package/dist-lib/metro-fingerprint-registry.mjs +1 -1
  46. package/dist-lib/metro-production-bundle.cjs +1 -1
  47. package/dist-lib/metro-production-bundle.mjs +1 -1
  48. package/dist-lib/metro.cjs +2 -2
  49. package/dist-lib/native-app-identity-project.cjs +1 -1
  50. package/dist-lib/native-app-identity-project.mjs +1 -1
  51. package/dist-lib/native-app-identity.cjs +1 -1
  52. package/dist-lib/native-app-identity.mjs +1 -1
  53. package/dist-lib/native-firebase-metadata.cjs +1 -1
  54. package/dist-lib/native-firebase-metadata.mjs +1 -1
  55. package/dist-lib/pdfium-raster.cjs +1 -1
  56. package/dist-lib/pdfium-raster.mjs +1 -1
  57. package/dist-lib/plist.cjs +1 -1
  58. package/dist-lib/plist.mjs +1 -1
  59. package/dist-lib/profiles.cjs +1 -1
  60. package/dist-lib/public-brand.cjs +1 -1
  61. package/dist-lib/public-origins-lib-esm.json +24 -24
  62. package/dist-lib/public-origins-lib.json +53 -53
  63. package/dist-lib/react-native-host-modules.cjs +1 -1
  64. package/dist-lib/react-native-host-modules.mjs +1 -1
  65. package/dist-lib/reap-browser.cjs +1 -1
  66. package/dist-lib/scripts/dev-server-scanner.cjs +1 -1
  67. package/dist-lib/sdk.cjs +1 -1
  68. package/dist-lib/sdk.mjs +1 -1
  69. package/dist-lib/skills.cjs +77 -14
  70. package/dist-lib/swift-compile.cjs +1 -1
  71. package/dist-lib/swift-compile.mjs +1 -1
  72. package/dist-lib/swift-package.cjs +1 -1
  73. package/dist-lib/swift-package.mjs +1 -1
  74. package/dist-lib/swift-submit.cjs +1 -1
  75. package/dist-lib/swift-submit.mjs +1 -1
  76. package/dist-lib/swift-toolchain.cjs +1 -1
  77. package/dist-lib/swift.cjs +1 -1
  78. package/dist-lib/vite-swift.cjs +74 -11
  79. package/dist-lib/vite.cjs +2 -2
  80. package/dist-lib/worklet-executable.cjs +1 -1
  81. package/dist-lib/worklet-executable.mjs +1 -1
  82. package/package.json +1 -1
  83. package/src/swift-host.ts +84 -2
  84. package/src/swift-packages.ts +19 -10
  85. package/src/swift-standins.ts +1 -1
@@ -62,6 +62,7 @@ const FLOW_BOOLEAN_FLAGS = [
62
62
  '--preview',
63
63
  '--preview-open',
64
64
  '--headless',
65
+ '--chromium',
65
66
  '--headed',
66
67
  '--proof',
67
68
  '--load-env',
@@ -289,6 +290,8 @@ options:
289
290
  browser sims default to isolated playwright
290
291
  --headless pass headless=true to the launch driver (useful
291
292
  with --driver playwright)
293
+ --chromium with --headless, render in plain Chromium instead of
294
+ the native host
292
295
  --headed force a fresh, VISIBLE window for this run (implies
293
296
  --new; overrides --headless). use when you want to
294
297
  watch the flow run live even if the current sim is
@@ -632,6 +635,7 @@ flow extension:
632
635
  if (args.includes('--headless') && !headed) {
633
636
  openArgs.push('--headless')
634
637
  }
638
+ if (args.includes('--chromium')) openArgs.push('--chromium')
635
639
  if (proofMode) openArgs.push('--proof')
636
640
  if (args.includes('--load-env')) openArgs.push('--load-env')
637
641
  // a resolved default is not an explicit pin: passing it as `port` would
@@ -494,35 +494,46 @@ function resample(src: PNG, width: number, height: number): PNG {
494
494
  function drawDownscaled(
495
495
  dst: PNG,
496
496
  src: PNG,
497
- factor: number,
497
+ factor: 1 | 2,
498
498
  left: number,
499
499
  keepRed: boolean,
500
500
  ) {
501
- const w = Math.floor(src.width / factor)
502
- const h = Math.floor(src.height / factor)
501
+ if (factor === 1) {
502
+ for (let y = 0; y < src.height; y++) {
503
+ const start = (y * dst.width + left) * 4
504
+ src.data.copy(dst.data, start, y * src.width * 4, (y + 1) * src.width * 4)
505
+ for (let i = start + 3; i < start + src.width * 4; i += 4) dst.data[i] = 255
506
+ }
507
+ return
508
+ }
509
+ const w = Math.floor(src.width / 2)
510
+ const h = Math.floor(src.height / 2)
511
+ const stride = src.width * 4
503
512
  for (let y = 0; y < h; y++) {
504
- for (let x = 0; x < w; x++) {
505
- let r = 0
506
- let g = 0
507
- let b = 0
508
- let red = false
509
- for (let dy = 0; dy < factor; dy++) {
510
- for (let dx = 0; dx < factor; dx++) {
511
- const i = ((y * factor + dy) * src.width + x * factor + dx) * 4
512
- const pr = src.data[i]!
513
- const pg = src.data[i + 1]!
514
- const pb = src.data[i + 2]!
515
- if (keepRed && pr === 255 && pg === 0 && pb === 0) red = true
516
- r += pr
517
- g += pg
518
- b += pb
519
- }
520
- }
521
- const n = factor * factor
522
- const o = (y * dst.width + left + x) * 4
523
- dst.data[o] = red ? 255 : Math.round(r / n)
524
- dst.data[o + 1] = red ? 0 : Math.round(g / n)
525
- dst.data[o + 2] = red ? 0 : Math.round(b / n)
513
+ let i = y * stride * 2
514
+ let o = (y * dst.width + left) * 4
515
+ for (let x = 0; x < w; x++, i += 8, o += 4) {
516
+ const r0 = src.data[i]!
517
+ const g0 = src.data[i + 1]!
518
+ const b0 = src.data[i + 2]!
519
+ const r1 = src.data[i + 4]!
520
+ const g1 = src.data[i + 5]!
521
+ const b1 = src.data[i + 6]!
522
+ const r2 = src.data[i + stride]!
523
+ const g2 = src.data[i + stride + 1]!
524
+ const b2 = src.data[i + stride + 2]!
525
+ const r3 = src.data[i + stride + 4]!
526
+ const g3 = src.data[i + stride + 5]!
527
+ const b3 = src.data[i + stride + 6]!
528
+ const red =
529
+ keepRed &&
530
+ ((r0 === 255 && g0 === 0 && b0 === 0) ||
531
+ (r1 === 255 && g1 === 0 && b1 === 0) ||
532
+ (r2 === 255 && g2 === 0 && b2 === 0) ||
533
+ (r3 === 255 && g3 === 0 && b3 === 0))
534
+ dst.data[o] = red ? 255 : Math.round((r0 + r1 + r2 + r3) / 4)
535
+ dst.data[o + 1] = red ? 0 : Math.round((g0 + g1 + g2 + g3) / 4)
536
+ dst.data[o + 2] = red ? 0 : Math.round((b0 + b1 + b2 + b3) / 4)
526
537
  dst.data[o + 3] = 255
527
538
  }
528
539
  }
@@ -562,7 +573,7 @@ export function compareScreens(
562
573
  }
563
574
  }
564
575
  const diffImage = new PNG({ width, height })
565
- const marks = new Uint8Array(width * height * 4)
576
+ const marks = diffImage.data
566
577
  // same scorer and settings as conformance proof. only the pass bar is the
567
578
  // cli's own (--threshold, default 0.5% against proof's 1%), and the masked
568
579
  // top band is excluded from scoring through the comparison region.
@@ -1,4 +1,4 @@
1
- /*! peach v0.1.2219 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.2220 | (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.2220 | (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.2220 | (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.2220 | (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.2220 | (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;
package/dist-lib/beta.cjs CHANGED
@@ -1,4 +1,4 @@
1
- /*! peach v0.1.2219 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.2220 | (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;
package/dist-lib/beta.mjs CHANGED
@@ -1,4 +1,4 @@
1
- /*! peach v0.1.2219 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.2220 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
2
2
 
3
3
  // src/beta.ts
4
4
  var IS_BETA = true;
@@ -1,4 +1,4 @@
1
- /*! peach v0.1.2219 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.2220 | (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.2220 | (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.2220 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
2
2
 
3
3
  // src/bridge-contract.ts
4
4
  var SIM_LONG_PRESS_MAX_MS = 5e3;
@@ -1,4 +1,4 @@
1
- /*! peach v0.1.2219 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.2220 | (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.2220 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
2
2
 
3
3
  // src/bridge-contract.ts
4
4
  var REFUSED_PERFORM_STEP_TYPES = [
@@ -1,4 +1,4 @@
1
- /*! peach v0.1.2219 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.2220 | (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;
@@ -42475,17 +42475,17 @@ function remoteSwiftCheckouts(root) {
42475
42475
  import_node_fs69.default.mkdirSync(cacheDir(), { recursive: true });
42476
42476
  return import_node_path69.default.join(import_node_fs69.default.realpathSync(cacheDir()), "swift-packages", key2, "checkouts");
42477
42477
  }
42478
- function unlowerableSources(files2, target) {
42478
+ function unlowerableSources(files2, target, portable) {
42479
42479
  if (target.declaresWasiNativeSettings) return [];
42480
42480
  return [
42481
- ...files2.filter((file) => UNSUPPORTED_NATIVE.test(file)),
42481
+ ...portable.has(target.name) ? [] : files2.filter((file) => UNSUPPORTED_NATIVE.test(file)),
42482
42482
  ...files2.filter(isSwiftNativeTranslationUnit).filter((file) => swiftCTakesReturnAddress(import_node_fs69.default.readFileSync(file, "utf8")))
42483
42483
  ];
42484
42484
  }
42485
- function unloweredSources(files2, target) {
42485
+ function unloweredSources(files2, target, portable) {
42486
42486
  if (target.type !== "regular") return null;
42487
42487
  if (!files2.some(isSwiftNativeTranslationUnit)) return null;
42488
- const unlowered = unlowerableSources(files2, target);
42488
+ const unlowered = unlowerableSources(files2, target, portable);
42489
42489
  if (unlowered.length === 0) return null;
42490
42490
  const headers = import_node_path69.default.resolve(target.dir, target.publicHeadersPath);
42491
42491
  if (!files2.some((file) => file.startsWith(`${headers}${import_node_path69.default.sep}`) && file.endsWith(".h")))
@@ -42689,6 +42689,7 @@ async function resolveSwiftPackagesAsync(options) {
42689
42689
  function resolveSwiftPackages(options) {
42690
42690
  const { rootDir, resolved, products, localDirs } = options;
42691
42691
  const providedTargets = new Set(options.provided ?? []);
42692
+ const portableAssembly = options.portableAssembly ?? /* @__PURE__ */ new Set();
42692
42693
  const providedProducts = new Set(options.provided ?? []);
42693
42694
  const result = {
42694
42695
  sourceLinks: { targets: [], owners: [] },
@@ -42786,7 +42787,7 @@ function resolveSwiftPackages(options) {
42786
42787
  if (target.type === "macro") return preservePackage(pkg, [name3], "host");
42787
42788
  const files2 = target.type === "regular" || target.type === "system" ? swiftTargetFiles(pkg.manifest, target) : [];
42788
42789
  const gap = options.binaryGaps?.get(name3);
42789
- const unlowerable = unlowerableSources(files2, target);
42790
+ const unlowerable = unlowerableSources(files2, target, portableAssembly);
42790
42791
  const placeholder = placeholderPackage(pkg);
42791
42792
  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_path69.default.relative(pkg.manifest.dir, file)).join(", ")}${gap ? `; ${gap}` : ""}` : null;
42792
42793
  const reasons = target.dependencies.map((dependency) => {
@@ -42867,7 +42868,7 @@ function resolveSwiftPackages(options) {
42867
42868
  (file) => file.endsWith(".swift") && import_node_fs69.default.readFileSync(file, "utf8").trim() === ""
42868
42869
  ))
42869
42870
  return false;
42870
- if (unloweredSources(files2, target)) return false;
42871
+ if (unloweredSources(files2, target, portableAssembly)) return false;
42871
42872
  claimed.add(key2);
42872
42873
  providedTargets.delete(name3);
42873
42874
  for (const dependency of target.dependencies) {
@@ -42915,7 +42916,7 @@ function resolveSwiftPackages(options) {
42915
42916
  if (target.type === "executable") continue;
42916
42917
  const files2 = target.type === "regular" || target.type === "system" ? swiftTargetFiles(pkg.manifest, target) : [];
42917
42918
  const objc = target.type === "regular" && files2.some((file) => /\.(m|mm)$/.test(file));
42918
- const unlowered = unloweredSources(files2, target);
42919
+ const unlowered = unloweredSources(files2, target, portableAssembly);
42919
42920
  const gap = placeholderPackage(pkg);
42920
42921
  const sources = files2.filter((file) => file.endsWith(".swift"));
42921
42922
  const release = (setting) => setting.configuration !== "debug";
@@ -43248,7 +43249,7 @@ var init_swift_standin_digest = __esm({
43248
43249
  STANDIN_DIGEST_ENTRYPOINTS = ["swift-standins.ts", "swift-objc-compile.ts"];
43249
43250
  SPECIFIER = /from\s*['"]([^'"]+)['"]|import\s*\(\s*['"]([^'"]+)['"]\s*\)/g;
43250
43251
  standinSourceDigest = (srcDir = __sootsim_import_meta_dirname) => sourceClosureDigest(srcDir, STANDIN_DIGEST_ENTRYPOINTS);
43251
- STANDIN_SOURCE_DIGEST = true ? "f5dd13fe8982e117facf0d8c668773904364a887ec47c728db7584b73f34d119" : standinSourceDigest();
43252
+ STANDIN_SOURCE_DIGEST = true ? "c0f609da62368c513c186d23bc8aa8e450d27efae5b8c2e7cdf50d34fa734ff0" : standinSourceDigest();
43252
43253
  }
43253
43254
  });
43254
43255
 
@@ -45159,7 +45160,7 @@ function graphStandin(module2, graphs, values, wasm, binary2, toolchain, work, r
45159
45160
  }
45160
45161
  if (omit.size + plain.size + unobjc.size + trapped.size + unconformed.size + forced.size + nonfailable.size === before)
45161
45162
  throw new Error(
45162
- `its generated source does not typecheck: ${elsewhere.slice(0, 3).join("; ") || check2.stderr.trim().slice(0, 400)}`
45163
+ `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)}`
45163
45164
  );
45164
45165
  }
45165
45166
  }
@@ -48335,6 +48336,59 @@ function openXcodeProject(xcodeproj, target, moduleRoot, configuration, interfac
48335
48336
  });
48336
48337
  return root;
48337
48338
  }
48339
+ async function wasmPortableAssembly(binaries, toolchainBin, moduleRoot) {
48340
+ const assembly = binaries.filter(
48341
+ (binary2) => binary2.unloweredSources?.length && binary2.unloweredSources.every((file) => /\.(s|S)$/.test(file)) && binary2.publicHeaders !== void 0
48342
+ );
48343
+ if (assembly.length === 0) return /* @__PURE__ */ new Set();
48344
+ const sdk = swiftSdkPaths(moduleRoot, toolchainBin);
48345
+ const clang = import_node_path79.default.join(toolchainBin, "clang");
48346
+ const empty = (binary2, file) => {
48347
+ const source = import_node_path79.default.join(binary2.dir, file);
48348
+ const key2 = (0, import_node_crypto40.createHash)("sha256").update(
48349
+ JSON.stringify([
48350
+ clang,
48351
+ sdk.sysroot,
48352
+ sdk.cFlags,
48353
+ binary2.dir,
48354
+ binary2.publicHeaders
48355
+ ])
48356
+ ).update(import_node_fs80.default.readFileSync(source)).digest("hex");
48357
+ const known = emptyWasmAssembly.get(key2);
48358
+ if (known) return known;
48359
+ const result = new Promise(
48360
+ (resolve4) => (0, import_node_child_process42.execFile)(
48361
+ clang,
48362
+ [
48363
+ "-target",
48364
+ "wasm32-unknown-wasip1",
48365
+ "--sysroot",
48366
+ sdk.sysroot,
48367
+ ...sdk.cFlags,
48368
+ "-I",
48369
+ import_node_path79.default.join(binary2.dir, binary2.publicHeaders),
48370
+ "-I",
48371
+ import_node_path79.default.dirname(source),
48372
+ "-E",
48373
+ "-P",
48374
+ "-x",
48375
+ "assembler-with-cpp",
48376
+ source
48377
+ ],
48378
+ { maxBuffer: 64 * 1024 * 1024 },
48379
+ (error, stdout) => resolve4(!error && stdout.trim() === "")
48380
+ )
48381
+ );
48382
+ emptyWasmAssembly.set(key2, result);
48383
+ return result;
48384
+ };
48385
+ const portable = await Promise.all(
48386
+ assembly.map(
48387
+ async (binary2) => (await Promise.all(binary2.unloweredSources.map((file) => empty(binary2, file)))).every(Boolean) ? [binary2.target] : []
48388
+ )
48389
+ );
48390
+ return new Set(portable.flat());
48391
+ }
48338
48392
  async function swiftPackages(entry, app) {
48339
48393
  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;
48340
48394
  const owners = [...app.frameworks, app].map((target) => ({
@@ -48399,7 +48453,14 @@ async function swiftPackages(entry, app) {
48399
48453
  entry.moduleRoot,
48400
48454
  import_node_path79.default.join(resolved.toolchainBin, "clang++")
48401
48455
  );
48402
- const cxxArtifacts = reached.filter(standinArtifact);
48456
+ const portableAssembly = await wasmPortableAssembly(
48457
+ reached,
48458
+ resolved.toolchainBin,
48459
+ entry.moduleRoot
48460
+ );
48461
+ const cxxArtifacts = reached.filter(
48462
+ (binary2) => standinArtifact(binary2) && !portableAssembly.has(binary2.target)
48463
+ );
48403
48464
  const generation = standinGenerationInputs(cxxArtifacts, toolchain, entry.behavior);
48404
48465
  if (cached2.standinKey !== generation) {
48405
48466
  const replaced = new Set(
@@ -48426,6 +48487,7 @@ async function swiftPackages(entry, app) {
48426
48487
  [...replaced].filter((target) => !built2.gaps.has(target))
48427
48488
  ),
48428
48489
  binaryGaps: built2.gaps,
48490
+ portableAssembly,
48429
48491
  owners
48430
48492
  });
48431
48493
  for (const target of new Set(built2.standins.map((standin) => standin.target)))
@@ -50209,7 +50271,7 @@ function scopedArtifact(project2, entry, moduleRoot, signal) {
50209
50271
  project2.building = { stamp, promise: fresh, signal };
50210
50272
  return fresh;
50211
50273
  }
50212
- var import_node_async_hooks, import_node_child_process42, import_node_crypto40, import_node_fs80, import_node_os17, import_node_path79, 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;
50274
+ var import_node_async_hooks, import_node_child_process42, import_node_crypto40, import_node_fs80, import_node_os17, import_node_path79, 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;
50213
50275
  var init_swift_host = __esm({
50214
50276
  "src/swift-host.ts"() {
50215
50277
  "use strict";
@@ -50262,6 +50324,7 @@ var init_swift_host = __esm({
50262
50324
  sharedXcodeProjects = /* @__PURE__ */ new Map();
50263
50325
  xcodeProjects = () => projectScope.getStore()?.xcodeProjects ?? sharedXcodeProjects;
50264
50326
  preparedScriptInputs = /* @__PURE__ */ new Set();
50327
+ emptyWasmAssembly = /* @__PURE__ */ new Map();
50265
50328
  XCODE_APP_DIR = "__app__";
50266
50329
  XCODE_FRAMEWORKS_DIR = "__frameworks__";
50267
50330
  XCODE_PACKAGES_DIR = SWIFT_REMOTE_PACKAGES_DIR;
@@ -55684,7 +55747,7 @@ var init_nitro_superset = __esm({
55684
55747
  init_nitroContract();
55685
55748
  init_swift_standin_digest();
55686
55749
  NITRO_SUPERSET_ENTRY_NAME = "superset";
55687
- NITRO_COMPILER_DIGEST = true ? "608b1e1ae0987dea6c3662ac92657972a60f85956502d1389192ce91f321d92d" : nitroCompilerSourceDigest(__sootsim_import_meta_dirname, STANDIN_SOURCE_DIGEST2);
55750
+ NITRO_COMPILER_DIGEST = true ? "a16afc2e6e3c68812b9d48ad1c7be8c9d89cfebcf46e269779f2890053244d70" : nitroCompilerSourceDigest(__sootsim_import_meta_dirname, STANDIN_SOURCE_DIGEST2);
55688
55751
  nitroSupersetLock = parseLock(nitro_superset_lock_default);
55689
55752
  nitroSupersetKey = (inputs) => nativeEntryKey({ ...inputs, compiler: NITRO_COMPILER_DIGEST });
55690
55753
  published = /* @__PURE__ */ new Map();
@@ -56909,7 +56972,7 @@ var init_expo_native_compiler_digest = __esm({
56909
56972
 
56910
56973
  // src/expo-native-prebuilt.ts
56911
56974
  function expoNativeCompilerDigestValue() {
56912
- return true ? "a02a843d19cee6ee62d1798fd5f234d2bbd4e12e327c75be531211719fc1c09b" : expoNativeCompilerDigest(__sootsim_import_meta_dirname);
56975
+ return true ? "8e765b5dfd0ec93d9027f9d10365ed11f7d85a195d0a888dd1fb76b99195ff2e" : expoNativeCompilerDigest(__sootsim_import_meta_dirname);
56913
56976
  }
56914
56977
  function readSources(value) {
56915
56978
  const sources = isRecord(value) ? value.sources : null;
@@ -68390,7 +68453,7 @@ ${await response.text()}`
68390
68453
  return { platforms: snapshots };
68391
68454
  }
68392
68455
  async function snapshotOneProductionBundle(projectRoot, entryFile, env = {}, { runtimeExecutable = process.execPath, platforms: platforms2 = ["ios", "android"] } = {}) {
68393
- const { execFile: execFile20 } = await import("node:child_process");
68456
+ const { execFile: execFile21 } = await import("node:child_process");
68394
68457
  const { mkdtemp, readFile: readFile3, rm: rm2 } = await import("node:fs/promises");
68395
68458
  const { tmpdir: tmpdir3 } = await import("node:os");
68396
68459
  const { promisify: promisify20 } = await import("node:util");
@@ -68399,7 +68462,7 @@ async function snapshotOneProductionBundle(projectRoot, entryFile, env = {}, { r
68399
68462
  for (const platform2 of platforms2) {
68400
68463
  const out = await mkdtemp((0, import_node_path111.join)(tmpdir3(), "peach-production-bundle-"));
68401
68464
  try {
68402
- await promisify20(execFile20)(
68465
+ await promisify20(execFile21)(
68403
68466
  runtimeExecutable,
68404
68467
  [
68405
68468
  (0, import_node_path111.join)(projectRoot, "node_modules/.bin/react-native"),
@@ -1,4 +1,4 @@
1
- /*! peach v0.1.2219 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.2220 | (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.2220 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
2
2
 
3
3
  // src/capture-contract.ts
4
4
  var RNX_SCREEN_CAPTURE_VERSION = 1;
@@ -1,4 +1,4 @@
1
- /*! peach v0.1.2219 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.2220 | (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.2220 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
2
2
 
3
3
  // src/cloud-contract.ts
4
4
  var RNX_CLOUD_MAX_ARTIFACT_BYTES = 40761776;
@@ -1,4 +1,4 @@
1
- /*! peach v0.1.2219 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.2220 | (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.2220 | (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.2220 | (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.2220 | (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.2220 | (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.2220 | (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.2220 | (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.2220 | (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;