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
@@ -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
@@ -1529,9 +1529,6 @@ export async function runInspect(args: string[], opts: InspectOptions) {
1529
1529
  'scroll',
1530
1530
  'screenshot',
1531
1531
  'swipe',
1532
- 'tap',
1533
- 'tap-id',
1534
- 'tap-text',
1535
1532
  'touch',
1536
1533
  'tree',
1537
1534
  'type-into',
@@ -1545,7 +1542,10 @@ export async function runInspect(args: string[], opts: InspectOptions) {
1545
1542
  if (writeCommands.has(subcommand)) {
1546
1543
  await checkSimHealth(bridge)
1547
1544
  }
1548
- if (screenTransitionAwareCommands.has(subcommand)) {
1545
+ if (
1546
+ screenTransitionAwareCommands.has(subcommand) ||
1547
+ (subcommand === 'tap' && readTargetFlag(args, positional) === null)
1548
+ ) {
1549
1549
  await maybeWaitForStartedScreenTransitions(bridge, {
1550
1550
  verbose: verboseTransitions,
1551
1551
  })
@@ -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.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 __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
  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 __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.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;
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.2221 | (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.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
  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
  // 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.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
  // 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.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;
@@ -25761,7 +25761,7 @@ function swiftSubmoduleImports(sources) {
25761
25761
  }
25762
25762
  return imports2;
25763
25763
  }
25764
- function swiftObjCModuleMap(module2, headers, submodules = /* @__PURE__ */ new Set()) {
25764
+ function swiftObjCModuleMap(module2, headers, submodules = /* @__PURE__ */ new Set(), swiftHeader) {
25765
25765
  const header = (file) => `header ${JSON.stringify(file)}`;
25766
25766
  const stem = (file) => file.slice(file.lastIndexOf("/") + 1).replace(/\.[^.]*$/, "");
25767
25767
  return [
@@ -25769,6 +25769,7 @@ function swiftObjCModuleMap(module2, headers, submodules = /* @__PURE__ */ new S
25769
25769
  ...headers.map(
25770
25770
  (file) => submodules.has(stem(file)) ? ` module ${stem(file)} { ${header(file)} export * }` : ` ${header(file)}`
25771
25771
  ),
25772
+ ...swiftHeader ? [" module Swift {", ` ${header(swiftHeader)}`, " requires objc", " }"] : [],
25772
25773
  " export *",
25773
25774
  "}",
25774
25775
  ""
@@ -27326,6 +27327,10 @@ function emitSwiftPackageManifest(args) {
27326
27327
  includeImportContext(dependency);
27327
27328
  const importedNativeFlags = [
27328
27329
  ...args.nativeImportFlags?.get(target.name) ?? [],
27330
+ ...[...importContext].flatMap((name3) => {
27331
+ const map2 = name3 === target.name ? void 0 : args.nativeSwiftHeaderMaps?.get(name3);
27332
+ return map2 ? ["-fmodule-map-file=" + map2] : [];
27333
+ }),
27329
27334
  ...[...importContext].flatMap((name3) => args.native?.get(name3)?.importFlags ?? []),
27330
27335
  ...[...importContext].flatMap((name3) => {
27331
27336
  const flags = targets.find((target2) => target2.name === name3)?.swiftFlags ?? [];
@@ -28588,6 +28593,7 @@ ${swiftProjectFilesProblems(input.projectFiles).join("\n")}`
28588
28593
  )
28589
28594
  );
28590
28595
  const importModuleMaps = /* @__PURE__ */ new Map();
28596
+ const sourceModuleMaps = /* @__PURE__ */ new Map();
28591
28597
  const generatedModuleMaps = [];
28592
28598
  for (const target of targets) {
28593
28599
  const prefix = target.path === "." ? "" : `${target.path}/`;
@@ -28822,6 +28828,10 @@ ${swiftProjectFilesProblems(input.projectFiles).join("\n")}`
28822
28828
  stageTargetFile(target.name, import_node_path41.default.join(layout2.root, modulemap), moduleContents, {
28823
28829
  allowExisting: true
28824
28830
  });
28831
+ sourceModuleMaps.set(swiftTargetModuleName(target.name), {
28832
+ path: import_node_path41.default.join(layout2.root, modulemap),
28833
+ contents: moduleContents.toString()
28834
+ });
28825
28835
  if (modulemap.endsWith("/Modules/module.modulemap")) {
28826
28836
  const framework = import_node_path41.default.posix.dirname(import_node_path41.default.posix.dirname(modulemap));
28827
28837
  for (const [, header] of moduleContents.toString().matchAll(/\bheader\s+"([^"]+)"/g))
@@ -29096,6 +29106,7 @@ ${swiftProjectFilesProblems(input.projectFiles).join("\n")}`
29096
29106
  if (native.size > 0) (0, import_node_fs42.mkdirSync)(headerDirectory, { recursive: true });
29097
29107
  const headerAliasFlags = Object.keys(input.headerAliases ?? {}).length > 0 ? ["-ivfsoverlay", headerSearch.files[0]] : [];
29098
29108
  const nativeHeaderFlags = [...headerAliasFlags];
29109
+ const nativeSwiftHeaderMaps = /* @__PURE__ */ new Map();
29099
29110
  const originalMaps = /* @__PURE__ */ new Map();
29100
29111
  for (const target of input.nativeTargets ?? []) {
29101
29112
  for (const flag of [...target.flags, ...target.cxxFlags]) {
@@ -29126,30 +29137,33 @@ ${swiftProjectFilesProblems(input.projectFiles).join("\n")}`
29126
29137
  );
29127
29138
  const moduleName2 = swiftTargetModuleName(name3);
29128
29139
  const originalMap = originalMaps.get(moduleName2);
29129
- const originalTokens = originalMap ? moduleMapTokens(input.files[originalMap]) : [];
29130
- if (originalMap && originalTokens.some(
29140
+ const stagedMap = sourceModuleMaps.get(moduleName2);
29141
+ const originalPath = originalMap ? import_node_path41.default.join(layout2.root, originalMap) : stagedMap?.path;
29142
+ const originalContents = originalMap ? input.files[originalMap] : stagedMap?.contents;
29143
+ const originalTokens = originalContents ? moduleMapTokens(originalContents) : [];
29144
+ if (originalPath && originalTokens.some(
29131
29145
  (token, index) => token === "module" && (originalTokens[index + 1] === "Swift" || originalTokens[index + 1] === `${moduleName2}.Swift`)
29132
29146
  )) {
29133
- nativeHeaderFlags.push("-fmodule-map-file=" + import_node_path41.default.join(layout2.root, originalMap));
29147
+ nativeHeaderFlags.push("-fmodule-map-file=" + originalPath);
29148
+ nativeSwiftHeaderMaps.set(name3, originalPath);
29134
29149
  continue;
29135
29150
  }
29136
29151
  files2.set(
29137
29152
  modulemap,
29138
- originalMap ? `extern module ${moduleName2} ${JSON.stringify(import_node_path41.default.join(layout2.root, originalMap))}
29153
+ originalPath ? `extern module ${moduleName2} ${JSON.stringify(originalPath)}
29139
29154
  module ${moduleName2}.Swift {
29140
29155
  header ${JSON.stringify(import_node_path41.default.join(headerDirectory, name3 + "-Swift.h"))}
29141
29156
  requires objc
29142
29157
  }
29143
29158
  ` : swiftObjCModuleMap(
29144
29159
  moduleName2,
29145
- [
29146
- ...(input.nativeTargets?.find((target) => target.name === name3)?.publicHeaders ?? []).map((header) => import_node_path41.default.join(layout2.root, header)),
29147
- import_node_path41.default.join(headerDirectory, name3 + "-Swift.h")
29148
- ],
29149
- submoduleImports.get(moduleName2)
29160
+ (input.nativeTargets?.find((target) => target.name === name3)?.publicHeaders ?? []).map((header) => import_node_path41.default.join(layout2.root, header)),
29161
+ submoduleImports.get(moduleName2),
29162
+ import_node_path41.default.join(headerDirectory, name3 + "-Swift.h")
29150
29163
  )
29151
29164
  );
29152
29165
  nativeHeaderFlags.push("-fmodule-map-file=" + modulemap);
29166
+ nativeSwiftHeaderMaps.set(name3, modulemap);
29153
29167
  }
29154
29168
  const modulePlan = (0, import_node_crypto20.createHash)("sha256").update(
29155
29169
  swiftModuleInputFiles(moduleRoot).join("\n")
@@ -29506,6 +29520,7 @@ module ${moduleName2}.Swift {
29506
29520
  nativeFlags,
29507
29521
  nativeImportFlags,
29508
29522
  nativeHeaderFlags,
29523
+ nativeSwiftHeaderMaps,
29509
29524
  nativeHeaderDeclarations,
29510
29525
  objcImplementationModules: new Set(
29511
29526
  targets.filter(
@@ -29663,30 +29678,30 @@ module ${moduleName2}.Swift {
29663
29678
  )
29664
29679
  ])
29665
29680
  );
29681
+ const producerSet = /* @__PURE__ */ new Set([...Object.keys(nativeHeaderDeclarations), ...producers]);
29682
+ const orderedProducers = [];
29666
29683
  const included = /* @__PURE__ */ new Set();
29667
29684
  const include = (name3) => {
29668
29685
  if (included.has(name3)) return;
29669
29686
  included.add(name3);
29670
29687
  for (const dependency of dependencies.get(name3) ?? []) include(dependency);
29688
+ if (producerSet.has(name3)) orderedProducers.push(name3);
29671
29689
  };
29672
- for (const producer of producers)
29690
+ for (const producer of producerSet)
29673
29691
  for (const dependency of dependencies.get(producer) ?? []) include(dependency);
29692
+ const needsHeaderStages = [...producerSet].some((name3) => included.has(name3));
29693
+ for (const producer of producerSet) include(producer);
29674
29694
  return {
29675
29695
  nativeBuildTargets: [...native].flatMap(([name3, plan]) => [
29676
29696
  ...!plan.mixed && plan.sources.length > 0 ? [name3] : [],
29677
29697
  ...plan.groups?.map((group) => group.name) ?? (plan.late ? [plan.late.name] : [])
29678
29698
  ]),
29679
- headerProducers: [
29680
- .../* @__PURE__ */ new Set([
29681
- ...Object.keys(nativeHeaderDeclarations),
29682
- ...producers.filter((name3) => !included.has(name3))
29683
- ])
29684
- ],
29699
+ headerProducers: orderedProducers,
29685
29700
  emittedHeaderProducers: [
29686
29701
  .../* @__PURE__ */ new Set([...Object.keys(nativeHeaderDeclarations), ...producers])
29687
29702
  ],
29688
29703
  nativeHeaderDeclarations,
29689
- headerProductTarget,
29704
+ headerProductTarget: needsHeaderStages ? void 0 : headerProductTarget,
29690
29705
  targetFailures,
29691
29706
  generatedOwners,
29692
29707
  targetToolset
@@ -30873,7 +30888,10 @@ var init_swift_compile = __esm({
30873
30888
  SWIFTPM_NOISE = /^(?:\[\d+\/\d+\] |Building for production\.\.\.$|warning: '--build-system native' has been deprecated)/;
30874
30889
  SWIFT_BUILDER_TRANSPORT_MARGIN_MS = 3e5;
30875
30890
  SWIFT_BUILDER_DEFAULT_COMPILE_MS = 18e5;
30876
- 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, "");
30891
+ clangInterfaceHeader = (header) => header.replace(/^@import (?:UIKitCore|UIKitText);$/gm, "@import UIKit;").replace(
30892
+ /^@import (?:CoreFoundation|FoundationNetworking);$/gm,
30893
+ "@import Foundation;"
30894
+ ).replace(/\b_TtC10Foundation\d+(NS\w+)\b/g, "$1").replace(/\b__attribute__\(\(objc_subclassing_restricted\)\)\s*/g, "");
30877
30895
  swiftInterfaceDeclarations = (header) => /* @__PURE__ */ new Set([
30878
30896
  ...[
30879
30897
  ...header.matchAll(
@@ -31043,7 +31061,7 @@ int EXUpdatesApplyBSDiffPatch(const char * _Nonnull oldFilePath,
31043
31061
  REACTOR_FLAG = '"-Xclang-linker", "-mexec-model=reactor",\n';
31044
31062
  MULTI_MANIFEST_VERSION = 68;
31045
31063
  SWIFT_HEADER_PRODUCTS_TARGET = "PeachHeaderProducts";
31046
- compilerSourceDigest = true ? "0a0bc1c871aee83ea273120655f55a43ddccde646478a452b4c73d2daefd58c3" : swiftCompilerSourceDigest(__sootsim_import_meta_dirname);
31064
+ compilerSourceDigest = true ? "2e9f321a97a408a1b3b8b7d85bbcfb108f0761ed9726b832a3c6c2cc52102806" : swiftCompilerSourceDigest(__sootsim_import_meta_dirname);
31047
31065
  nativeCxxCompilerFlags = ["-fno-cxx-modules"];
31048
31066
  cFlagArray = (flags) => JSON.stringify(withoutGlogModuleMap(flags));
31049
31067
  cxxFlagArray = (flags) => JSON.stringify([...nativeCxxCompilerFlags, ...withoutGlogModuleMap(flags)]);
@@ -42475,17 +42493,17 @@ function remoteSwiftCheckouts(root) {
42475
42493
  import_node_fs69.default.mkdirSync(cacheDir(), { recursive: true });
42476
42494
  return import_node_path69.default.join(import_node_fs69.default.realpathSync(cacheDir()), "swift-packages", key2, "checkouts");
42477
42495
  }
42478
- function unlowerableSources(files2, target) {
42496
+ function unlowerableSources(files2, target, portable) {
42479
42497
  if (target.declaresWasiNativeSettings) return [];
42480
42498
  return [
42481
- ...files2.filter((file) => UNSUPPORTED_NATIVE.test(file)),
42499
+ ...portable.has(target.name) ? [] : files2.filter((file) => UNSUPPORTED_NATIVE.test(file)),
42482
42500
  ...files2.filter(isSwiftNativeTranslationUnit).filter((file) => swiftCTakesReturnAddress(import_node_fs69.default.readFileSync(file, "utf8")))
42483
42501
  ];
42484
42502
  }
42485
- function unloweredSources(files2, target) {
42503
+ function unloweredSources(files2, target, portable) {
42486
42504
  if (target.type !== "regular") return null;
42487
42505
  if (!files2.some(isSwiftNativeTranslationUnit)) return null;
42488
- const unlowered = unlowerableSources(files2, target);
42506
+ const unlowered = unlowerableSources(files2, target, portable);
42489
42507
  if (unlowered.length === 0) return null;
42490
42508
  const headers = import_node_path69.default.resolve(target.dir, target.publicHeadersPath);
42491
42509
  if (!files2.some((file) => file.startsWith(`${headers}${import_node_path69.default.sep}`) && file.endsWith(".h")))
@@ -42689,6 +42707,7 @@ async function resolveSwiftPackagesAsync(options) {
42689
42707
  function resolveSwiftPackages(options) {
42690
42708
  const { rootDir, resolved, products, localDirs } = options;
42691
42709
  const providedTargets = new Set(options.provided ?? []);
42710
+ const portableAssembly = options.portableAssembly ?? /* @__PURE__ */ new Set();
42692
42711
  const providedProducts = new Set(options.provided ?? []);
42693
42712
  const result = {
42694
42713
  sourceLinks: { targets: [], owners: [] },
@@ -42786,7 +42805,7 @@ function resolveSwiftPackages(options) {
42786
42805
  if (target.type === "macro") return preservePackage(pkg, [name3], "host");
42787
42806
  const files2 = target.type === "regular" || target.type === "system" ? swiftTargetFiles(pkg.manifest, target) : [];
42788
42807
  const gap = options.binaryGaps?.get(name3);
42789
- const unlowerable = unlowerableSources(files2, target);
42808
+ const unlowerable = unlowerableSources(files2, target, portableAssembly);
42790
42809
  const placeholder = placeholderPackage(pkg);
42791
42810
  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
42811
  const reasons = target.dependencies.map((dependency) => {
@@ -42867,7 +42886,7 @@ function resolveSwiftPackages(options) {
42867
42886
  (file) => file.endsWith(".swift") && import_node_fs69.default.readFileSync(file, "utf8").trim() === ""
42868
42887
  ))
42869
42888
  return false;
42870
- if (unloweredSources(files2, target)) return false;
42889
+ if (unloweredSources(files2, target, portableAssembly)) return false;
42871
42890
  claimed.add(key2);
42872
42891
  providedTargets.delete(name3);
42873
42892
  for (const dependency of target.dependencies) {
@@ -42915,7 +42934,7 @@ function resolveSwiftPackages(options) {
42915
42934
  if (target.type === "executable") continue;
42916
42935
  const files2 = target.type === "regular" || target.type === "system" ? swiftTargetFiles(pkg.manifest, target) : [];
42917
42936
  const objc = target.type === "regular" && files2.some((file) => /\.(m|mm)$/.test(file));
42918
- const unlowered = unloweredSources(files2, target);
42937
+ const unlowered = unloweredSources(files2, target, portableAssembly);
42919
42938
  const gap = placeholderPackage(pkg);
42920
42939
  const sources = files2.filter((file) => file.endsWith(".swift"));
42921
42940
  const release = (setting) => setting.configuration !== "debug";
@@ -43248,7 +43267,7 @@ var init_swift_standin_digest = __esm({
43248
43267
  STANDIN_DIGEST_ENTRYPOINTS = ["swift-standins.ts", "swift-objc-compile.ts"];
43249
43268
  SPECIFIER = /from\s*['"]([^'"]+)['"]|import\s*\(\s*['"]([^'"]+)['"]\s*\)/g;
43250
43269
  standinSourceDigest = (srcDir = __sootsim_import_meta_dirname) => sourceClosureDigest(srcDir, STANDIN_DIGEST_ENTRYPOINTS);
43251
- STANDIN_SOURCE_DIGEST = true ? "f5dd13fe8982e117facf0d8c668773904364a887ec47c728db7584b73f34d119" : standinSourceDigest();
43270
+ STANDIN_SOURCE_DIGEST = true ? "70b9e9f32fde5739daaee933df31b2584f9ef3289c322a0f5b03f1eaac947880" : standinSourceDigest();
43252
43271
  }
43253
43272
  });
43254
43273
 
@@ -45159,7 +45178,7 @@ function graphStandin(module2, graphs, values, wasm, binary2, toolchain, work, r
45159
45178
  }
45160
45179
  if (omit.size + plain.size + unobjc.size + trapped.size + unconformed.size + forced.size + nonfailable.size === before)
45161
45180
  throw new Error(
45162
- `its generated source does not typecheck: ${elsewhere.slice(0, 3).join("; ") || check2.stderr.trim().slice(0, 400)}`
45181
+ `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
45182
  );
45164
45183
  }
45165
45184
  }
@@ -48335,6 +48354,59 @@ function openXcodeProject(xcodeproj, target, moduleRoot, configuration, interfac
48335
48354
  });
48336
48355
  return root;
48337
48356
  }
48357
+ async function wasmPortableAssembly(binaries, toolchainBin, moduleRoot) {
48358
+ const assembly = binaries.filter(
48359
+ (binary2) => binary2.unloweredSources?.length && binary2.unloweredSources.every((file) => /\.(s|S)$/.test(file)) && binary2.publicHeaders !== void 0
48360
+ );
48361
+ if (assembly.length === 0) return /* @__PURE__ */ new Set();
48362
+ const sdk = swiftSdkPaths(moduleRoot, toolchainBin);
48363
+ const clang = import_node_path79.default.join(toolchainBin, "clang");
48364
+ const empty = (binary2, file) => {
48365
+ const source = import_node_path79.default.join(binary2.dir, file);
48366
+ const key2 = (0, import_node_crypto40.createHash)("sha256").update(
48367
+ JSON.stringify([
48368
+ clang,
48369
+ sdk.sysroot,
48370
+ sdk.cFlags,
48371
+ binary2.dir,
48372
+ binary2.publicHeaders
48373
+ ])
48374
+ ).update(import_node_fs80.default.readFileSync(source)).digest("hex");
48375
+ const known = emptyWasmAssembly.get(key2);
48376
+ if (known) return known;
48377
+ const result = new Promise(
48378
+ (resolve4) => (0, import_node_child_process42.execFile)(
48379
+ clang,
48380
+ [
48381
+ "-target",
48382
+ "wasm32-unknown-wasip1",
48383
+ "--sysroot",
48384
+ sdk.sysroot,
48385
+ ...sdk.cFlags,
48386
+ "-I",
48387
+ import_node_path79.default.join(binary2.dir, binary2.publicHeaders),
48388
+ "-I",
48389
+ import_node_path79.default.dirname(source),
48390
+ "-E",
48391
+ "-P",
48392
+ "-x",
48393
+ "assembler-with-cpp",
48394
+ source
48395
+ ],
48396
+ { maxBuffer: 64 * 1024 * 1024 },
48397
+ (error, stdout) => resolve4(!error && stdout.trim() === "")
48398
+ )
48399
+ );
48400
+ emptyWasmAssembly.set(key2, result);
48401
+ return result;
48402
+ };
48403
+ const portable = await Promise.all(
48404
+ assembly.map(
48405
+ async (binary2) => (await Promise.all(binary2.unloweredSources.map((file) => empty(binary2, file)))).every(Boolean) ? [binary2.target] : []
48406
+ )
48407
+ );
48408
+ return new Set(portable.flat());
48409
+ }
48338
48410
  async function swiftPackages(entry, app) {
48339
48411
  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
48412
  const owners = [...app.frameworks, app].map((target) => ({
@@ -48399,7 +48471,14 @@ async function swiftPackages(entry, app) {
48399
48471
  entry.moduleRoot,
48400
48472
  import_node_path79.default.join(resolved.toolchainBin, "clang++")
48401
48473
  );
48402
- const cxxArtifacts = reached.filter(standinArtifact);
48474
+ const portableAssembly = await wasmPortableAssembly(
48475
+ reached,
48476
+ resolved.toolchainBin,
48477
+ entry.moduleRoot
48478
+ );
48479
+ const cxxArtifacts = reached.filter(
48480
+ (binary2) => standinArtifact(binary2) && !portableAssembly.has(binary2.target)
48481
+ );
48403
48482
  const generation = standinGenerationInputs(cxxArtifacts, toolchain, entry.behavior);
48404
48483
  if (cached2.standinKey !== generation) {
48405
48484
  const replaced = new Set(
@@ -48426,6 +48505,7 @@ async function swiftPackages(entry, app) {
48426
48505
  [...replaced].filter((target) => !built2.gaps.has(target))
48427
48506
  ),
48428
48507
  binaryGaps: built2.gaps,
48508
+ portableAssembly,
48429
48509
  owners
48430
48510
  });
48431
48511
  for (const target of new Set(built2.standins.map((standin) => standin.target)))
@@ -50209,7 +50289,7 @@ function scopedArtifact(project2, entry, moduleRoot, signal) {
50209
50289
  project2.building = { stamp, promise: fresh, signal };
50210
50290
  return fresh;
50211
50291
  }
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;
50292
+ 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
50293
  var init_swift_host = __esm({
50214
50294
  "src/swift-host.ts"() {
50215
50295
  "use strict";
@@ -50262,6 +50342,7 @@ var init_swift_host = __esm({
50262
50342
  sharedXcodeProjects = /* @__PURE__ */ new Map();
50263
50343
  xcodeProjects = () => projectScope.getStore()?.xcodeProjects ?? sharedXcodeProjects;
50264
50344
  preparedScriptInputs = /* @__PURE__ */ new Set();
50345
+ emptyWasmAssembly = /* @__PURE__ */ new Map();
50265
50346
  XCODE_APP_DIR = "__app__";
50266
50347
  XCODE_FRAMEWORKS_DIR = "__frameworks__";
50267
50348
  XCODE_PACKAGES_DIR = SWIFT_REMOTE_PACKAGES_DIR;
@@ -55684,7 +55765,7 @@ var init_nitro_superset = __esm({
55684
55765
  init_nitroContract();
55685
55766
  init_swift_standin_digest();
55686
55767
  NITRO_SUPERSET_ENTRY_NAME = "superset";
55687
- NITRO_COMPILER_DIGEST = true ? "608b1e1ae0987dea6c3662ac92657972a60f85956502d1389192ce91f321d92d" : nitroCompilerSourceDigest(__sootsim_import_meta_dirname, STANDIN_SOURCE_DIGEST2);
55768
+ NITRO_COMPILER_DIGEST = true ? "5586d24405a8b94499b182fe067e8af8be656d9b36558aa6ccbd8c7f9e4150dd" : nitroCompilerSourceDigest(__sootsim_import_meta_dirname, STANDIN_SOURCE_DIGEST2);
55688
55769
  nitroSupersetLock = parseLock(nitro_superset_lock_default);
55689
55770
  nitroSupersetKey = (inputs) => nativeEntryKey({ ...inputs, compiler: NITRO_COMPILER_DIGEST });
55690
55771
  published = /* @__PURE__ */ new Map();
@@ -56909,7 +56990,7 @@ var init_expo_native_compiler_digest = __esm({
56909
56990
 
56910
56991
  // src/expo-native-prebuilt.ts
56911
56992
  function expoNativeCompilerDigestValue() {
56912
- return true ? "a02a843d19cee6ee62d1798fd5f234d2bbd4e12e327c75be531211719fc1c09b" : expoNativeCompilerDigest(__sootsim_import_meta_dirname);
56993
+ return true ? "7667f1dce279c8074ed9dd97de1e3b293077ae012cacf08fd6572978f8ef7dc0" : expoNativeCompilerDigest(__sootsim_import_meta_dirname);
56913
56994
  }
56914
56995
  function readSources(value) {
56915
56996
  const sources = isRecord(value) ? value.sources : null;
@@ -68390,7 +68471,7 @@ ${await response.text()}`
68390
68471
  return { platforms: snapshots };
68391
68472
  }
68392
68473
  async function snapshotOneProductionBundle(projectRoot, entryFile, env = {}, { runtimeExecutable = process.execPath, platforms: platforms2 = ["ios", "android"] } = {}) {
68393
- const { execFile: execFile20 } = await import("node:child_process");
68474
+ const { execFile: execFile21 } = await import("node:child_process");
68394
68475
  const { mkdtemp, readFile: readFile3, rm: rm2 } = await import("node:fs/promises");
68395
68476
  const { tmpdir: tmpdir3 } = await import("node:os");
68396
68477
  const { promisify: promisify20 } = await import("node:util");
@@ -68399,7 +68480,7 @@ async function snapshotOneProductionBundle(projectRoot, entryFile, env = {}, { r
68399
68480
  for (const platform2 of platforms2) {
68400
68481
  const out = await mkdtemp((0, import_node_path111.join)(tmpdir3(), "peach-production-bundle-"));
68401
68482
  try {
68402
- await promisify20(execFile20)(
68483
+ await promisify20(execFile21)(
68403
68484
  runtimeExecutable,
68404
68485
  [
68405
68486
  (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.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
  // 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.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
  // 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.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;