peachsim 0.1.2190 → 0.1.2192

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 (101) hide show
  1. package/dist-lib/agent-daemon-client.cjs +1 -1
  2. package/dist-lib/agent-events.cjs +1 -1
  3. package/dist-lib/attached-projects.cjs +1 -1
  4. package/dist-lib/auth/shared-session.cjs +1 -1
  5. package/dist-lib/backend-origin.cjs +1 -1
  6. package/dist-lib/beta.cjs +1 -1
  7. package/dist-lib/beta.mjs +1 -1
  8. package/dist-lib/bridge-constants.cjs +1 -1
  9. package/dist-lib/bridge-contract-input.cjs +1 -1
  10. package/dist-lib/bridge-contract-input.mjs +1 -1
  11. package/dist-lib/bridge-contract.cjs +1 -1
  12. package/dist-lib/bridge-contract.mjs +1 -1
  13. package/dist-lib/bundle-channel.cjs +126 -181
  14. package/dist-lib/capture-contract.cjs +1 -1
  15. package/dist-lib/capture-contract.mjs +1 -1
  16. package/dist-lib/cloud-contract.cjs +1 -1
  17. package/dist-lib/cloud-contract.mjs +1 -1
  18. package/dist-lib/cloud-test-args.cjs +1 -1
  19. package/dist-lib/cloud-test-args.mjs +1 -1
  20. package/dist-lib/cloud.cjs +1 -1
  21. package/dist-lib/cloud.mjs +1 -1
  22. package/dist-lib/config.cjs +1 -1
  23. package/dist-lib/config.mjs +1 -1
  24. package/dist-lib/detox/index.cjs +1 -1
  25. package/dist-lib/dev-bundle-resolution.cjs +1 -1
  26. package/dist-lib/expo-swift-bundle.cjs +115 -175
  27. package/dist-lib/expo-swift-metadata.cjs +1 -1
  28. package/dist-lib/expo-swift-metadata.mjs +1 -1
  29. package/dist-lib/home-paths.cjs +1 -6
  30. package/dist-lib/host/bridge-host.cjs +126 -181
  31. package/dist-lib/host/fetch-proxy-handler.cjs +4 -4
  32. package/dist-lib/host/fetch-proxy-overrides.cjs +1 -1
  33. package/dist-lib/host/fetch-proxy-overrides.mjs +1 -1
  34. package/dist-lib/host/replacement-module-handler.cjs +1 -1
  35. package/dist-lib/host/websocket-proxy.cjs +1 -1
  36. package/dist-lib/index.cjs +7 -5
  37. package/dist-lib/jump-to-source-babel.cjs +1 -1
  38. package/dist-lib/jump-to-source-native.cjs +1 -1
  39. package/dist-lib/kotlin-host.cjs +7 -2
  40. package/dist-lib/menu.cjs +1 -1
  41. package/dist-lib/menu.mjs +1 -1
  42. package/dist-lib/metro-fingerprint-registry.cjs +1 -1
  43. package/dist-lib/metro-fingerprint-registry.mjs +1 -1
  44. package/dist-lib/metro-production-bundle.cjs +1 -1
  45. package/dist-lib/metro-production-bundle.mjs +1 -1
  46. package/dist-lib/metro.cjs +7 -5
  47. package/dist-lib/native-app-identity-project.cjs +6 -4
  48. package/dist-lib/native-app-identity-project.mjs +6 -4
  49. package/dist-lib/native-app-identity.cjs +1 -1
  50. package/dist-lib/native-app-identity.mjs +1 -1
  51. package/dist-lib/native-firebase-metadata.cjs +1 -1
  52. package/dist-lib/native-firebase-metadata.mjs +1 -1
  53. package/dist-lib/pdfium-raster.cjs +1 -1
  54. package/dist-lib/pdfium-raster.mjs +1 -1
  55. package/dist-lib/plist.cjs +1 -1
  56. package/dist-lib/plist.mjs +1 -1
  57. package/dist-lib/profiles.cjs +1 -1
  58. package/dist-lib/public-brand.cjs +1 -1
  59. package/dist-lib/public-origins-lib-esm.json +24 -24
  60. package/dist-lib/public-origins-lib.json +53 -53
  61. package/dist-lib/react-native-host-modules.cjs +1 -1
  62. package/dist-lib/react-native-host-modules.mjs +1 -1
  63. package/dist-lib/reap-browser.cjs +1 -1
  64. package/dist-lib/scripts/dev-server-scanner.cjs +1 -1
  65. package/dist-lib/sdk.cjs +1 -1
  66. package/dist-lib/sdk.mjs +1 -1
  67. package/dist-lib/skills.cjs +126 -182
  68. package/dist-lib/swift-compile.cjs +20 -132
  69. package/dist-lib/swift-compile.mjs +20 -132
  70. package/dist-lib/swift-package.cjs +1 -1
  71. package/dist-lib/swift-package.mjs +1 -1
  72. package/dist-lib/swift-submit.cjs +1 -1
  73. package/dist-lib/swift-submit.mjs +1 -1
  74. package/dist-lib/swift-toolchain.cjs +41 -23
  75. package/dist-lib/swift.cjs +1 -1
  76. package/dist-lib/vite-swift.cjs +97 -157
  77. package/dist-lib/vite.cjs +4 -4
  78. package/dist-lib/worklet-executable.cjs +1 -1
  79. package/dist-lib/worklet-executable.mjs +1 -1
  80. package/dist-types/packages/peach-engine/src/engine/node.d.ts +3 -0
  81. package/dist-types/packages/peach-engine/src/engine/scroll-momentum-math.d.ts +2 -1
  82. package/dist-types/packages/peach-engine/src/render-worker/compositor-protocol.d.ts +1 -0
  83. package/dist-types/packages/peach-engine/src/render-worker/scroll-mirror.d.ts +1 -0
  84. package/kotlin/sdk.tar.gz +0 -0
  85. package/package.json +1 -1
  86. package/src/expo-native-workspace.ts +21 -20
  87. package/src/home-paths.ts +0 -5
  88. package/src/kotlin-host.ts +6 -1
  89. package/src/nitro-adapter.lock.json +265 -265
  90. package/src/nitro-superset.lock.json +4 -4
  91. package/src/swift-compile.ts +21 -114
  92. package/src/swift-distribution.lock.json +17 -11
  93. package/src/swift-distribution.ts +3 -3
  94. package/src/swift-host.ts +12 -8
  95. package/src/swift-interface-bodies.ts +7 -1
  96. package/src/swift-objc-standin.ts +46 -8
  97. package/src/swift-packages.ts +1 -0
  98. package/src/swift-toolchain.ts +40 -30
  99. package/src/swift-wasm-prune.ts +3 -2
  100. package/src/turbo-runtime.lock.json +21 -21
  101. package/src/xcode-project.ts +6 -4
@@ -1,4 +1,4 @@
1
- /*! peach v0.1.2190 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.2192 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
2
2
  let __sootsim_import_meta_url = '', __sootsim_import_meta_dirname = '', __sootsim_import_meta_filename = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; __sootsim_import_meta_dirname = __dirname; __sootsim_import_meta_filename = __filename; } catch {}
3
3
  "use strict";
4
4
  var __create = Object.create;
@@ -39,7 +39,7 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
39
39
  var define_SWIFT_COVERAGE_SOURCE_DIGESTS_default;
40
40
  var init_define_SWIFT_COVERAGE_SOURCE_DIGESTS = __esm({
41
41
  "<define:__SWIFT_COVERAGE_SOURCE_DIGESTS__>"() {
42
- define_SWIFT_COVERAGE_SOURCE_DIGESTS_default = { "swift-coverage/indexdump.ts": "0d82d8eeb96bf377f409ea7e33274c341a710c0e071f6b6e17571a23d8d92412", "swift-coverage/indexing.ts": "633ccf19eec1f382a8847d0ee1dca42a2792a3c60aafd43622ed5152b09b8272", "swift-coverage/types.ts": "bd8fae54ea6c53e110cd8a5d7b57c1d532dd0166e09fdaea63c4f270c3780dd1", "swift-coverage/source.ts": "c151758a9f67631bc61473c375df0dc017da6902a34533b2cf4fc4fd7d19b6ee", "swift-coverage/package.ts": "1f0068be7461fa7c5a7a891faf318f305cbed2e94c19667ba76627f7e5be260b", "swift-coverage/xcode.ts": "65a500b806ce1c3a496de27f2e0ad77287c0f6795c618342c08af647f92af1fa", "swift-coverage/xcode-assets.ts": "99e03b74c961d2449afd58c2cbc415ba91d1d469a4f89e461c137fd6c305b27c", "swift-coverage/xcode-asset-symbols.ts": "1b2a67733bc9d139b351466270205452a6172140bc25080d72619e2952c44671", "swift-coverage/xcode-bridging.ts": "33184be8c5daf6646aa5a1276a4e15531f1be27b7c26f56550e0fbb1fc678a11", "swift-coverage/xcode-packages.ts": "8e6020d17d24474150a5a50d042aca6261819ef75c79680a287a66f395909915", "swift-coverage/xcode-strings.ts": "f2dd4c7cd8ef77035184b0132909c2fa09fd20ed06b7757c2f1f960bfdde031c", "swift-coverage/reader.ts": "da559b67ecd1161dea70c980b5f98f2c55af3550f0714479100fa5e9e813625c", "swift-coverage/provenance.ts": "eb3b41ae8b58b48f6758f084800f188dfb1edb227e483abdd6b80cde66e849b9", "swift-package-manifest.ts": "4b7d4a715cdaf57468ead23f2ff9dce76d02c6a888d73d144d4baa2ae571ba3c", "swift-package.ts": "338cfef9a34a930206ac2e1a8a90b85c8d61f776d9a41e6445dc18e0c5385cdb", "swift-source-file.ts": "93fd659ed63a27b67f54a7c229a7ceb636dc9c59e68414920ba36cff1eda1f94", "swift-toolchain.ts": "e7cf8a143d47ff86b4ee2db4a8266e96b100926104990dba795321bc5923df3e", "home-paths.ts": "f5583b61f8bdd81823b3b29ff519a48daf9993719f194ddb7de22218472e90f9", "xcode-header-search.ts": "f8c3d557b4eca5ddad32907545353eb7ad53b2ebd0969d9ed8f7275e109a13b1", "xcode-project.ts": "8ffd57670829ddd2b10e812defbd9016859744be88713c5ba65847aa6e26dff4", "xcode-target-members.ts": "ad7589132bffab265e8a10b64e24484fe88b4a2b1cc0ee19a97f151a002eca77", "xcode-json-project.ts": "41990ebbe4b488eef34e74c4608b4b48e5a5b299ba98ca7fbcfdfa0e77be63b6", "openstep-plist.ts": "74e6ce1dac80c9c318e0e9f5e3e8cd19a898a8820c36fc160609695bcb59dcd3" };
42
+ define_SWIFT_COVERAGE_SOURCE_DIGESTS_default = { "swift-coverage/indexdump.ts": "0d82d8eeb96bf377f409ea7e33274c341a710c0e071f6b6e17571a23d8d92412", "swift-coverage/indexing.ts": "633ccf19eec1f382a8847d0ee1dca42a2792a3c60aafd43622ed5152b09b8272", "swift-coverage/types.ts": "bd8fae54ea6c53e110cd8a5d7b57c1d532dd0166e09fdaea63c4f270c3780dd1", "swift-coverage/source.ts": "c151758a9f67631bc61473c375df0dc017da6902a34533b2cf4fc4fd7d19b6ee", "swift-coverage/package.ts": "1f0068be7461fa7c5a7a891faf318f305cbed2e94c19667ba76627f7e5be260b", "swift-coverage/xcode.ts": "65a500b806ce1c3a496de27f2e0ad77287c0f6795c618342c08af647f92af1fa", "swift-coverage/xcode-assets.ts": "99e03b74c961d2449afd58c2cbc415ba91d1d469a4f89e461c137fd6c305b27c", "swift-coverage/xcode-asset-symbols.ts": "1b2a67733bc9d139b351466270205452a6172140bc25080d72619e2952c44671", "swift-coverage/xcode-bridging.ts": "33184be8c5daf6646aa5a1276a4e15531f1be27b7c26f56550e0fbb1fc678a11", "swift-coverage/xcode-packages.ts": "8e6020d17d24474150a5a50d042aca6261819ef75c79680a287a66f395909915", "swift-coverage/xcode-strings.ts": "f2dd4c7cd8ef77035184b0132909c2fa09fd20ed06b7757c2f1f960bfdde031c", "swift-coverage/reader.ts": "da559b67ecd1161dea70c980b5f98f2c55af3550f0714479100fa5e9e813625c", "swift-coverage/provenance.ts": "eb3b41ae8b58b48f6758f084800f188dfb1edb227e483abdd6b80cde66e849b9", "swift-package-manifest.ts": "4b7d4a715cdaf57468ead23f2ff9dce76d02c6a888d73d144d4baa2ae571ba3c", "swift-package.ts": "338cfef9a34a930206ac2e1a8a90b85c8d61f776d9a41e6445dc18e0c5385cdb", "swift-source-file.ts": "93fd659ed63a27b67f54a7c229a7ceb636dc9c59e68414920ba36cff1eda1f94", "swift-toolchain.ts": "25505683ca29a0b380413bf2a5026d4967eacf886e35bc11ece6e15317e5bb02", "home-paths.ts": "673205c02bbc8e342a9b43585a3a1b5f6b64eb5fb474e1a8647e9d2c2e62e67d", "xcode-header-search.ts": "f8c3d557b4eca5ddad32907545353eb7ad53b2ebd0969d9ed8f7275e109a13b1", "xcode-project.ts": "86f79e98323ec065e0e5195324c75ca608f490efbd95dcc25c53d5aa0b9aecc9", "xcode-target-members.ts": "ad7589132bffab265e8a10b64e24484fe88b4a2b1cc0ee19a97f151a002eca77", "xcode-json-project.ts": "41990ebbe4b488eef34e74c4608b4b48e5a5b299ba98ca7fbcfdfa0e77be63b6", "openstep-plist.ts": "74e6ce1dac80c9c318e0e9f5e3e8cd19a898a8820c36fc160609695bcb59dcd3" };
43
43
  }
44
44
  });
45
45
 
@@ -4380,18 +4380,7 @@ function sourceSwiftCheckout() {
4380
4380
  return import_node_path4.default.resolve(peachsimPackageRoot(), "../sootsim-swift");
4381
4381
  }
4382
4382
  function swiftSdkOptions() {
4383
- const directory = process.env.PEACH_SWIFT_SDKS_PATH;
4384
- if (directory) return ["--swift-sdks-path", import_node_path4.default.resolve(directory)];
4385
- if (scratch && process.platform === "linux") {
4386
- const config = process.env.XDG_CONFIG_HOME;
4387
- if (config !== void 0 && !import_node_path4.default.isAbsolute(config))
4388
- throw new Error("XDG_CONFIG_HOME must be an absolute path");
4389
- return [
4390
- "--swift-sdks-path",
4391
- config === void 0 ? import_node_path4.default.join(import_node_os3.default.userInfo().homedir, ".swiftpm", "swift-sdks") : import_node_path4.default.join(config, "swiftpm", "swift-sdks")
4392
- ];
4393
- }
4394
- return [];
4383
+ return ["--swift-sdks-path", import_node_path4.default.resolve(peachSwiftSdksDir())];
4395
4384
  }
4396
4385
  var SWIFT_HOST_COMPILER_RELEASE = "swift-6.4.0-RELEASE-custom-81b2c791c27276bf";
4397
4386
  var SWIFT_HOST_COMPILER_ID = "81b2c791c27276bf";
@@ -4680,9 +4669,22 @@ function ensureSwiftLinuxRuntime(release) {
4680
4669
  `);
4681
4670
  const download2 = `${plan.dest}.${process.pid}.tmp`;
4682
4671
  try {
4683
- (0, import_node_child_process4.execFileSync)("curl", ["-fsSL", "--show-error", plan.url, "-o", download2], {
4684
- stdio: "inherit"
4685
- });
4672
+ (0, import_node_child_process4.execFileSync)(
4673
+ "curl",
4674
+ [
4675
+ "-fsSL",
4676
+ "--show-error",
4677
+ "--retry",
4678
+ "3",
4679
+ "--retry-all-errors",
4680
+ plan.url,
4681
+ "-o",
4682
+ download2
4683
+ ],
4684
+ {
4685
+ stdio: "inherit"
4686
+ }
4687
+ );
4686
4688
  if (swiftFileChecksum(download2) !== plan.checksum)
4687
4689
  throw new Error("declared Linux runtime checksum mismatch");
4688
4690
  import_node_fs6.default.renameSync(download2, plan.dest);
@@ -4783,6 +4785,9 @@ function peachHome() {
4783
4785
  const override = process.env.PEACH_HOME;
4784
4786
  return override ? import_node_path4.default.resolve(override) : import_node_path4.default.join(import_node_os3.default.homedir(), ".peach");
4785
4787
  }
4788
+ function peachSwiftSdksDir() {
4789
+ return process.env.PEACH_SWIFT_SDKS_PATH ?? import_node_path4.default.join(peachHome(), "swift", "sdks");
4790
+ }
4786
4791
  var BUILDERS_ROOT_ENV = "CONTRAST_BUILDERS_ROOT";
4787
4792
  function buildersRootEnv() {
4788
4793
  const root = process.env[BUILDERS_ROOT_ENV]?.trim();
@@ -4969,8 +4974,7 @@ function installSwiftSdkArchive(swift, sdk, archive) {
4969
4974
  store
4970
4975
  ]);
4971
4976
  const expected = swiftSdkPayloadChecksum(stagedBundle);
4972
- const directory = process.env.PEACH_SWIFT_SDKS_PATH;
4973
- const locks = directory ? import_node_path4.default.join(import_node_path4.default.resolve(directory), ".peach-locks") : import_node_path4.default.join(import_node_os3.default.homedir(), ".swiftpm", "builder-locks");
4977
+ const locks = import_node_path4.default.join(import_node_path4.default.resolve(peachSwiftSdksDir()), ".peach-locks");
4974
4978
  import_node_fs6.default.mkdirSync(locks, { recursive: true });
4975
4979
  (0, import_node_child_process4.execFileSync)(
4976
4980
  "perl",
@@ -5032,9 +5036,22 @@ function installSwiftWasmSdk(release, sdk) {
5032
5036
  if (sdk.wasmSdkUrl.startsWith("file:"))
5033
5037
  import_node_fs6.default.copyFileSync((0, import_node_url.fileURLToPath)(sdk.wasmSdkUrl), archive);
5034
5038
  else
5035
- (0, import_node_child_process4.execFileSync)("curl", ["-fsSL", "--show-error", sdk.wasmSdkUrl, "-o", archive], {
5036
- stdio: "inherit"
5037
- });
5039
+ (0, import_node_child_process4.execFileSync)(
5040
+ "curl",
5041
+ [
5042
+ "-fsSL",
5043
+ "--show-error",
5044
+ "--retry",
5045
+ "3",
5046
+ "--retry-all-errors",
5047
+ sdk.wasmSdkUrl,
5048
+ "-o",
5049
+ archive
5050
+ ],
5051
+ {
5052
+ stdio: "inherit"
5053
+ }
5054
+ );
5038
5055
  installSwiftSdkArchive(swift, sdk, archive);
5039
5056
  swiftToolchain(release, sdk);
5040
5057
  } finally {
@@ -5143,8 +5160,7 @@ function swiftSdkInstallStep(release, wasmSdk) {
5143
5160
  function swiftSdkInstallCommand(release, wasmSdk) {
5144
5161
  const { wasmSdkId, wasmSdkUrl, wasmSdkChecksum } = wasmSdk;
5145
5162
  const program = `import { installSwiftWasmSdk } from "peachsim/swift-toolchain"; installSwiftWasmSdk(${JSON.stringify(release)}, ${JSON.stringify({ wasmSdkId, wasmSdkUrl, wasmSdkChecksum })})`;
5146
- const directory = process.env.PEACH_SWIFT_SDKS_PATH;
5147
- const environment = directory ? `PEACH_SWIFT_SDKS_PATH='${import_node_path4.default.resolve(directory).replaceAll("'", "'\\''")}' ` : "";
5163
+ const environment = `PEACH_SWIFT_SDKS_PATH='${import_node_path4.default.resolve(peachSwiftSdksDir()).replaceAll("'", "'\\''")}' `;
5148
5164
  return `${environment}node --input-type=module -e '${program.replaceAll("'", "'\\''")}'`;
5149
5165
  }
5150
5166
  function swiftInstallSteps(release, wasmSdk) {
@@ -5355,7 +5371,7 @@ function swiftInterfaceWithoutBodies(text5, keepDefaults = false) {
5355
5371
  continue;
5356
5372
  }
5357
5373
  const char = text5[i];
5358
- if (char === "=" && parens > 0 && text5[i - 1] === " " && text5[i + 1] === " ") {
5374
+ if (!keepDefaults && char === "=" && parens > 0 && text5[i - 1] === " " && text5[i + 1] === " ") {
5359
5375
  out = out.trimEnd();
5360
5376
  i = skipExpression(text5, i + 1);
5361
5377
  continue;
@@ -8110,10 +8126,11 @@ function objcView(surface, toolchainBin, stdlib, cacheDir5, work, original, vend
8110
8126
  "-module-cache-path",
8111
8127
  moduleCache,
8112
8128
  "-minimum-access-level",
8113
- // symbol graphs hide public underscored names at the public threshold.
8114
- // original clang headers remain the declaration boundary, and a swift
8115
- // overlay names its underscored and spi declarations.
8116
- original || surface.interface ? "internal" : "public",
8129
+ // symbol graphs hide public underscored names at the public threshold,
8130
+ // including a function with an underscored parameter. clang headers
8131
+ // remain the declaration boundary, and a swift overlay names its
8132
+ // underscored and spi declarations.
8133
+ "internal",
8117
8134
  ...surface.interface ? ["-include-spi-symbols"] : [],
8118
8135
  "-skip-synthesized-members",
8119
8136
  "-omit-extension-block-symbols",
@@ -8212,6 +8229,13 @@ function objcView(surface, toolchainBin, stdlib, cacheDir5, work, original, vend
8212
8229
  writeHeaders();
8213
8230
  }
8214
8231
  const ownHeaders = new Set(headerFiles(headersDir).map((name3) => import_node_path7.default.basename(name3)));
8232
+ const functionPointers = new Set(
8233
+ [...originals.values()].flatMap(
8234
+ (text5) => [...text5.matchAll(/\btypedef\b[^;{}]*?\(\s*\*\s*(\w+)\s*\)\s*\(/g)].map(
8235
+ (match) => match[1]
8236
+ )
8237
+ )
8238
+ );
8215
8239
  const graphs = import_node_fs7.default.readdirSync(out).filter((name3) => name3.endsWith(".symbols.json")).sort().map((name3) => {
8216
8240
  const graph = JSON.parse(import_node_fs7.default.readFileSync(import_node_path7.default.join(out, name3), "utf8"));
8217
8241
  return {
@@ -8219,6 +8243,22 @@ function objcView(surface, toolchainBin, stdlib, cacheDir5, work, original, vend
8219
8243
  symbols: graph.symbols.filter((symbol2) => {
8220
8244
  const header = /^c:([^@]+\.h)@/.exec(symbol2.identifier.precise)?.[1];
8221
8245
  return !header || ownHeaders.has(header);
8246
+ }).map((symbol2) => {
8247
+ if (symbol2.kind.identifier !== "swift.typealias" || !symbol2.identifier.precise.startsWith("c:") || !functionPointers.has(symbol2.pathComponents.at(-1) ?? ""))
8248
+ return symbol2;
8249
+ const fragments = symbol2.declarationFragments ?? [];
8250
+ const equals = fragments.findIndex(
8251
+ (fragment) => fragment.spelling.includes("=")
8252
+ );
8253
+ const arrow = fragments.findLastIndex(
8254
+ (fragment) => fragment.spelling.includes("->")
8255
+ );
8256
+ return {
8257
+ ...symbol2,
8258
+ declarationFragments: fragments.map(
8259
+ (fragment, index) => index > equals && index < arrow && fragment.kind === "typeIdentifier" && functionPointers.has(fragment.spelling) ? { ...fragment, spelling: `@escaping ${fragment.spelling}` } : fragment
8260
+ )
8261
+ };
8222
8262
  })
8223
8263
  };
8224
8264
  });
@@ -10661,7 +10701,7 @@ function pruneSwiftWasmLink(directory, toolchainBin, moduleRoot, staticClangTarg
10661
10701
  throw new Error(`swift-wasm-prune: the build owns its sdk directory ${sdkWasiDir}`);
10662
10702
  const sdkObjsDir = ensureUnpackedSdkObjects(sdkWasiDir);
10663
10703
  const distDir = import_node_path10.default.join(moduleRoot, "lib");
10664
- const dropsReflection = (obj, name3) => !!name3 && !/^(SwiftUI|Combine)-/.test(import_node_path10.default.basename(obj.file)) && (name3.startsWith("l__swift5_reflection_descriptor") || name3.startsWith("$s") && (name3.endsWith("CMF") || name3.endsWith("VMF")) && !(!obj.file.startsWith(distDir) && obj.file.endsWith(".swift.o")));
10704
+ const dropsReflection = (obj, name3) => !!name3 && !/^(SwiftUI|Combine|_[A-Za-z0-9]+_SwiftUI)-/.test(import_node_path10.default.basename(obj.file)) && (name3.startsWith("l__swift5_reflection_descriptor") || name3.startsWith("$s") && (name3.endsWith("CMF") || name3.endsWith("VMF")) && !(!obj.file.startsWith(distDir) && obj.file.endsWith(".swift.o")));
10665
10705
  const prunedObjsDir = import_node_path10.default.join(directory, ".peach-pruned-objs");
10666
10706
  import_node_fs10.default.rmSync(prunedObjsDir, { recursive: true, force: true });
10667
10707
  import_node_fs10.default.mkdirSync(prunedObjsDir, { recursive: true });
@@ -15139,9 +15179,6 @@ function rnxHomeDir() {
15139
15179
  const override = process.env[PEACH_HOME_ENV];
15140
15180
  return override && override.length > 0 ? import_node_path17.default.resolve(override) : ambientHomeDir();
15141
15181
  }
15142
- function peachSwiftSdksDir() {
15143
- return process.env.PEACH_SWIFT_SDKS_PATH ?? import_node_path17.default.join(rnxHomeDir(), "swift", "sdks");
15144
- }
15145
15182
  function runtimesDir() {
15146
15183
  return import_node_path17.default.join(rnxHomeDir(), "runtimes");
15147
15184
  }
@@ -17272,7 +17309,7 @@ var darwinRecordsRegion = (quoted) => quoted.length ? ["-Wl,--start-lib", ...quo
17272
17309
  var REACTOR_FLAG = '"-Xclang-linker", "-mexec-model=reactor",\n';
17273
17310
  var MULTI_MANIFEST_VERSION = 68;
17274
17311
  var SWIFT_HEADER_PRODUCTS_TARGET = "PeachHeaderProducts";
17275
- var compilerSourceDigest = true ? "382ff03994dc241ff825d788eb5f8eb92462420da0b20538d9fcc1ff79e096c6" : swiftCompilerSourceDigest(__sootsim_import_meta_dirname);
17312
+ var compilerSourceDigest = true ? "e10a6af53455b2d2b6d58c2abd62834b0ca3a02445b4778b18f9fcbb90fa3747" : swiftCompilerSourceDigest(__sootsim_import_meta_dirname);
17276
17313
  function swiftArtifactHash(input, release, moduleRoot) {
17277
17314
  const hash = (0, import_node_crypto13.createHash)("sha256");
17278
17315
  hash.update(`swift-compile
@@ -17681,6 +17718,9 @@ function emitSwiftPackageManifest(args) {
17681
17718
  ' publicHeadersPath: "include",'
17682
17719
  ] : native?.flags ? [` sources: ${JSON.stringify(native.sources)},`] : target.sources !== void 0 ? [` sources: ${JSON.stringify(target.sources)},`] : [],
17683
17720
  ...!native?.clang && target.publicHeadersPath !== void 0 ? [` publicHeadersPath: ${JSON.stringify(target.publicHeadersPath)},`] : [],
17721
+ // swiftpm appends the root package's name after a target's own flags
17722
+ // unless the target opts out of package access
17723
+ ...!clang && target.swiftFlags?.includes("-package-name") ? [" packageAccess: false,"] : [],
17684
17724
  // the native backend supplies dependency module maps without their
17685
17725
  // compiled modules. textual c++ includes keep those dependencies usable.
17686
17726
  ` ${clang ? nativeSettings : swiftSettings}${link}`,
@@ -18071,117 +18111,6 @@ var FOUNDATION_OVERLAY_GLOBALS = /* @__PURE__ */ new Set([
18071
18111
  "NSFileErrorMinimum",
18072
18112
  "NSFormattingErrorMaximum",
18073
18113
  "NSFormattingErrorMinimum",
18074
- "NSFoundationVersionNumber",
18075
- "NSFoundationVersionNumber10_0",
18076
- "NSFoundationVersionNumber10_1",
18077
- "NSFoundationVersionNumber10_10",
18078
- "NSFoundationVersionNumber10_10_1",
18079
- "NSFoundationVersionNumber10_10_2",
18080
- "NSFoundationVersionNumber10_10_3",
18081
- "NSFoundationVersionNumber10_10_4",
18082
- "NSFoundationVersionNumber10_10_5",
18083
- "NSFoundationVersionNumber10_10_Max",
18084
- "NSFoundationVersionNumber10_11",
18085
- "NSFoundationVersionNumber10_11_1",
18086
- "NSFoundationVersionNumber10_11_2",
18087
- "NSFoundationVersionNumber10_11_3",
18088
- "NSFoundationVersionNumber10_11_4",
18089
- "NSFoundationVersionNumber10_11_Max",
18090
- "NSFoundationVersionNumber10_1_1",
18091
- "NSFoundationVersionNumber10_1_2",
18092
- "NSFoundationVersionNumber10_1_3",
18093
- "NSFoundationVersionNumber10_1_4",
18094
- "NSFoundationVersionNumber10_2",
18095
- "NSFoundationVersionNumber10_2_1",
18096
- "NSFoundationVersionNumber10_2_2",
18097
- "NSFoundationVersionNumber10_2_3",
18098
- "NSFoundationVersionNumber10_2_4",
18099
- "NSFoundationVersionNumber10_2_5",
18100
- "NSFoundationVersionNumber10_2_6",
18101
- "NSFoundationVersionNumber10_2_7",
18102
- "NSFoundationVersionNumber10_2_8",
18103
- "NSFoundationVersionNumber10_3",
18104
- "NSFoundationVersionNumber10_3_1",
18105
- "NSFoundationVersionNumber10_3_2",
18106
- "NSFoundationVersionNumber10_3_3",
18107
- "NSFoundationVersionNumber10_3_4",
18108
- "NSFoundationVersionNumber10_3_5",
18109
- "NSFoundationVersionNumber10_3_6",
18110
- "NSFoundationVersionNumber10_3_7",
18111
- "NSFoundationVersionNumber10_3_8",
18112
- "NSFoundationVersionNumber10_3_9",
18113
- "NSFoundationVersionNumber10_4",
18114
- "NSFoundationVersionNumber10_4_1",
18115
- "NSFoundationVersionNumber10_4_10",
18116
- "NSFoundationVersionNumber10_4_11",
18117
- "NSFoundationVersionNumber10_4_2",
18118
- "NSFoundationVersionNumber10_4_3",
18119
- "NSFoundationVersionNumber10_4_4_Intel",
18120
- "NSFoundationVersionNumber10_4_4_PowerPC",
18121
- "NSFoundationVersionNumber10_4_5",
18122
- "NSFoundationVersionNumber10_4_6",
18123
- "NSFoundationVersionNumber10_4_7",
18124
- "NSFoundationVersionNumber10_4_8",
18125
- "NSFoundationVersionNumber10_4_9",
18126
- "NSFoundationVersionNumber10_5",
18127
- "NSFoundationVersionNumber10_5_1",
18128
- "NSFoundationVersionNumber10_5_2",
18129
- "NSFoundationVersionNumber10_5_3",
18130
- "NSFoundationVersionNumber10_5_4",
18131
- "NSFoundationVersionNumber10_5_5",
18132
- "NSFoundationVersionNumber10_5_6",
18133
- "NSFoundationVersionNumber10_5_7",
18134
- "NSFoundationVersionNumber10_5_8",
18135
- "NSFoundationVersionNumber10_6",
18136
- "NSFoundationVersionNumber10_6_1",
18137
- "NSFoundationVersionNumber10_6_2",
18138
- "NSFoundationVersionNumber10_6_3",
18139
- "NSFoundationVersionNumber10_6_4",
18140
- "NSFoundationVersionNumber10_6_5",
18141
- "NSFoundationVersionNumber10_6_6",
18142
- "NSFoundationVersionNumber10_6_7",
18143
- "NSFoundationVersionNumber10_6_8",
18144
- "NSFoundationVersionNumber10_7",
18145
- "NSFoundationVersionNumber10_7_1",
18146
- "NSFoundationVersionNumber10_7_2",
18147
- "NSFoundationVersionNumber10_7_3",
18148
- "NSFoundationVersionNumber10_7_4",
18149
- "NSFoundationVersionNumber10_8",
18150
- "NSFoundationVersionNumber10_8_1",
18151
- "NSFoundationVersionNumber10_8_2",
18152
- "NSFoundationVersionNumber10_8_3",
18153
- "NSFoundationVersionNumber10_8_4",
18154
- "NSFoundationVersionNumber10_9",
18155
- "NSFoundationVersionNumber10_9_1",
18156
- "NSFoundationVersionNumber10_9_2",
18157
- "NSFoundationVersionNumber_iOS_4_0",
18158
- "NSFoundationVersionNumber_iOS_4_1",
18159
- "NSFoundationVersionNumber_iOS_4_2",
18160
- "NSFoundationVersionNumber_iOS_4_3",
18161
- "NSFoundationVersionNumber_iOS_5_0",
18162
- "NSFoundationVersionNumber_iOS_5_1",
18163
- "NSFoundationVersionNumber_iOS_6_0",
18164
- "NSFoundationVersionNumber_iOS_6_1",
18165
- "NSFoundationVersionNumber_iOS_7_0",
18166
- "NSFoundationVersionNumber_iOS_7_1",
18167
- "NSFoundationVersionNumber_iOS_8_0",
18168
- "NSFoundationVersionNumber_iOS_8_1",
18169
- "NSFoundationVersionNumber_iOS_8_2",
18170
- "NSFoundationVersionNumber_iOS_8_3",
18171
- "NSFoundationVersionNumber_iOS_8_4",
18172
- "NSFoundationVersionNumber_iOS_8_x_Max",
18173
- "NSFoundationVersionNumber_iOS_9_0",
18174
- "NSFoundationVersionNumber_iOS_9_1",
18175
- "NSFoundationVersionNumber_iOS_9_2",
18176
- "NSFoundationVersionNumber_iOS_9_3",
18177
- "NSFoundationVersionNumber_iOS_9_4",
18178
- "NSFoundationVersionNumber_iOS_9_x_Max",
18179
- "NSFoundationVersionNumber_iPhoneOS_2_0",
18180
- "NSFoundationVersionNumber_iPhoneOS_2_1",
18181
- "NSFoundationVersionNumber_iPhoneOS_2_2",
18182
- "NSFoundationVersionNumber_iPhoneOS_3_0",
18183
- "NSFoundationVersionNumber_iPhoneOS_3_1",
18184
- "NSFoundationVersionNumber_iPhoneOS_3_2",
18185
18114
  "NSFoundationVersionWithFileManagerResourceForkSupport",
18186
18115
  "NSFreeHashTable",
18187
18116
  "NSFreeMapTable",
@@ -19237,7 +19166,10 @@ ${swiftProjectFilesProblems(input.projectFiles).join("\n")}`
19237
19166
  for (const file of Object.keys(input.files)) {
19238
19167
  if (!file.endsWith(".swift")) continue;
19239
19168
  const target = bySourcePath.find(
19240
- (candidate) => candidate.path === "." || file.startsWith(`${candidate.path}/`)
19169
+ (candidate) => (candidate.path === "." || file.startsWith(`${candidate.path}/`)) && (candidate.sources === void 0 || candidate.sources.some((source) => {
19170
+ const selected = import_node_path27.default.posix.join(candidate.path, source);
19171
+ return file === selected || file.startsWith(`${selected}/`);
19172
+ }))
19241
19173
  );
19242
19174
  const excluded = target?.exclude?.some(
19243
19175
  (name3) => file === import_node_path27.default.posix.join(target.path, name3)
@@ -19290,7 +19222,10 @@ ${swiftProjectFilesProblems(input.projectFiles).join("\n")}`
19290
19222
  const targetEntries = (target) => {
19291
19223
  const prefix = target.path === "." ? "" : `${target.path}/`;
19292
19224
  return Object.entries(input.files).filter(
19293
- ([file]) => file.startsWith(prefix) && !target.exclude?.some(
19225
+ ([file]) => file.startsWith(prefix) && (target.sources === void 0 || !(file.endsWith(".swift") || isSwiftNativeTranslationUnit(file)) || target.sources.some((source) => {
19226
+ const selected = import_node_path27.default.posix.join(prefix, source);
19227
+ return file === selected || file.startsWith(`${selected}/`);
19228
+ })) && !target.exclude?.some(
19294
19229
  (excluded) => file === `${prefix}${excluded}` || file.startsWith(`${prefix}${excluded}/`)
19295
19230
  ) && !targets.some(
19296
19231
  (candidate) => candidate.name !== target.name && candidate.path !== "." && candidate.path.startsWith(prefix) && file.startsWith(`${candidate.path}/`)
@@ -19445,8 +19380,7 @@ ${swiftProjectFilesProblems(input.projectFiles).join("\n")}`
19445
19380
  )) {
19446
19381
  const include2 = match[1];
19447
19382
  const producer = /(?:^|\/)([^/]+)-Swift\.h$/.exec(include2)?.[1];
19448
- if (producer && targets.some((value) => value.name === producer))
19449
- producers2.add(producer);
19383
+ if (producer && swiftTargets.has(producer)) producers2.add(producer);
19450
19384
  const local = [
19451
19385
  import_node_path27.default.posix.join(import_node_path27.default.posix.dirname(file), include2),
19452
19386
  `${includes}${include2}`,
@@ -26711,7 +26645,6 @@ async function swiftDistributionRoot(signal) {
26711
26645
  }
26712
26646
  }
26713
26647
  async function installSwiftToolchain(release, sdk, signal, compilerOnly = false) {
26714
- process.env.PEACH_SWIFT_SDKS_PATH = peachSwiftSdksDir();
26715
26648
  const root = import_node_path36.default.resolve(swiftToolchainBin(release), "../..");
26716
26649
  const owned = process.platform === "darwin" ? import_node_path36.default.join(import_node_os12.default.homedir(), "Library/Developer/Toolchains", `${release}.xctoolchain`) : import_node_path36.default.join(rnxHomeDir(), "swift", "toolchains", release);
26717
26650
  const selectedCompiler = process.platform === "darwin" && import_node_fs36.default.existsSync(import_node_path36.default.join(root, "usr/bin/swift"));
@@ -26754,7 +26687,7 @@ then run the command again; it installs the SDK.`,
26754
26687
  const ready = swiftToolchainReady(release, sdk);
26755
26688
  if (ready) return ready;
26756
26689
  signal?.throwIfAborted();
26757
- const directory = process.env.PEACH_SWIFT_SDKS_PATH;
26690
+ const directory = peachSwiftSdksDir();
26758
26691
  process.stderr.write(`peach: installing Swift SDK ${sdk.wasmSdkId} to ${directory}\u2026
26759
26692
  `);
26760
26693
  try {
@@ -28610,8 +28543,10 @@ function isIosAppTarget(ref, options = {}) {
28610
28543
  },
28611
28544
  options
28612
28545
  );
28546
+ const platforms2 = settingList(get("SUPPORTED_PLATFORMS"));
28547
+ if (platforms2.length > 0) return platforms2.some(isIosPlatform);
28613
28548
  const sdk = get("SDKROOT");
28614
- return sdk === "auto" ? settingList(get("SUPPORTED_PLATFORMS")).some(isIosPlatform) : sdk === "" || isIosPlatform(sdk);
28549
+ return sdk === "" || isIosPlatform(sdk);
28615
28550
  }
28616
28551
  function isIosPlatform(name3) {
28617
28552
  return name3.startsWith("iphoneos") || name3.startsWith("iphonesimulator");
@@ -30276,6 +30211,7 @@ function resolveSwiftPackages(options) {
30276
30211
  dir: target.dir,
30277
30212
  files: files2,
30278
30213
  exclude: target.exclude,
30214
+ ...target.sources ? { sources: target.sources } : {},
30279
30215
  packageDir: pkg.manifest.dir,
30280
30216
  remote: pkg.remote,
30281
30217
  iosDeployment: pkg.manifest.iosDeployment,
@@ -30678,7 +30614,7 @@ function sourceClosureDigest(srcDir, entrypoints) {
30678
30614
  return hash.digest("hex");
30679
30615
  }
30680
30616
  var standinSourceDigest = (srcDir = __sootsim_import_meta_dirname) => sourceClosureDigest(srcDir, STANDIN_DIGEST_ENTRYPOINTS);
30681
- var STANDIN_SOURCE_DIGEST = true ? "8357df1eb62bbe4eb3a2bc4588867a6b75d1052c41e274e31fec2fde3700676e" : standinSourceDigest();
30617
+ var STANDIN_SOURCE_DIGEST = true ? "c387958abbb31d4eec2c99667ca99ccf6efb1328361a47445d476c520ae3c310" : standinSourceDigest();
30682
30618
 
30683
30619
  // src/swift-standins.ts
30684
30620
  init_define_SWIFT_COVERAGE_SOURCE_DIGESTS();
@@ -35989,9 +35925,13 @@ async function buildXcodeLayout(root) {
35989
35925
  upcomingFeatures: target.packageUpcomingFeatures.filter(
35990
35926
  (feature) => feature.configuration === null || feature.configuration === packageConfiguration
35991
35927
  ).map((feature) => feature.name),
35992
- swiftFlags: target.packageSwiftFlags.filter(
35993
- (setting) => setting.configuration === null || setting.configuration === packageConfiguration
35994
- ).flatMap((setting) => setting.flags),
35928
+ // the flat build gives every module one package; swiftpm names each
35929
+ // module for its own package, which `@retroactive` and `package` read
35930
+ swiftFlags: ["-package-name", swiftPackageIdentity(target.packageDir)].concat(
35931
+ target.packageSwiftFlags.filter(
35932
+ (setting) => setting.configuration === null || setting.configuration === packageConfiguration
35933
+ ).flatMap((setting) => setting.flags)
35934
+ ),
35995
35935
  linkedLibraries: target.packageLibraries.filter(
35996
35936
  (library) => library.configuration === null || library.configuration === packageConfiguration
35997
35937
  ).map((library) => library.name),
@@ -36349,7 +36289,7 @@ function xcodeManifest(layout2) {
36349
36289
  `let package = Package(name: "app", ${layout2.app.iosDeploymentTarget ? `platforms: [.iOS(${JSON.stringify(layout2.app.iosDeploymentTarget)})], ` : ""}dependencies: [${[...nativePaths].map(([name3, directory]) => `.package(name: ${JSON.stringify(name3)}, path: ${JSON.stringify(directory)})`).join(", ")}], targets: [`,
36350
36290
  ` .executableTarget(name: "${layout2.app.moduleName}", dependencies: [${[...appProducts, ...layout2.targets.map((target) => JSON.stringify(target.name)), ...sdkProducts].join(", ")}], path: "${XCODE_APP_DIR}", ${appSettings}),`,
36351
36291
  ...layout2.targets.map(
36352
- (target) => target.systemLibrary ? ` .systemLibrary(name: "${target.name}", path: "${target.path}"),` : ` .target(name: "${target.name}", ${target.dependencies === void 0 ? "" : `dependencies: [${dependencies(target)}], `}path: "${target.path}", ${target.exclude.length > 0 ? `exclude: ${JSON.stringify(target.exclude)}, ` : ""}${target.resources ? "resources: [], " : ""}${target.publicHeadersPath === void 0 ? "" : `publicHeadersPath: ${JSON.stringify(target.publicHeadersPath)}, `}${clangSettings(target)}${swiftManifestSettings(target)}${libraries(target)}),`
36292
+ (target) => target.systemLibrary ? ` .systemLibrary(name: "${target.name}", path: "${target.path}"),` : ` .target(name: "${target.name}", ${target.dependencies === void 0 ? "" : `dependencies: [${dependencies(target)}], `}path: "${target.path}", ${target.exclude.length > 0 ? `exclude: ${JSON.stringify(target.exclude)}, ` : ""}${target.sources === void 0 ? "" : `sources: ${JSON.stringify(target.sources)}, `}${target.resources ? "resources: [], " : ""}${target.publicHeadersPath === void 0 ? "" : `publicHeadersPath: ${JSON.stringify(target.publicHeadersPath)}, `}${clangSettings(target)}${swiftManifestSettings(target)}${libraries(target)}),`
36353
36293
  ),
36354
36294
  "])",
36355
36295
  ""
package/dist-lib/vite.cjs CHANGED
@@ -1,4 +1,4 @@
1
- /*! peach v0.1.2190 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.2192 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
2
2
  let __sootsim_import_meta_url = '', __sootsim_import_meta_dirname = '', __sootsim_import_meta_filename = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; __sootsim_import_meta_dirname = __dirname; __sootsim_import_meta_filename = __filename; } catch {}
3
3
  "use strict";
4
4
  var __create = Object.create;
@@ -39,7 +39,7 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
39
39
  var define_SWIFT_COVERAGE_SOURCE_DIGESTS_default;
40
40
  var init_define_SWIFT_COVERAGE_SOURCE_DIGESTS = __esm({
41
41
  "<define:__SWIFT_COVERAGE_SOURCE_DIGESTS__>"() {
42
- define_SWIFT_COVERAGE_SOURCE_DIGESTS_default = { "swift-coverage/indexdump.ts": "0d82d8eeb96bf377f409ea7e33274c341a710c0e071f6b6e17571a23d8d92412", "swift-coverage/indexing.ts": "633ccf19eec1f382a8847d0ee1dca42a2792a3c60aafd43622ed5152b09b8272", "swift-coverage/types.ts": "bd8fae54ea6c53e110cd8a5d7b57c1d532dd0166e09fdaea63c4f270c3780dd1", "swift-coverage/source.ts": "c151758a9f67631bc61473c375df0dc017da6902a34533b2cf4fc4fd7d19b6ee", "swift-coverage/package.ts": "1f0068be7461fa7c5a7a891faf318f305cbed2e94c19667ba76627f7e5be260b", "swift-coverage/xcode.ts": "65a500b806ce1c3a496de27f2e0ad77287c0f6795c618342c08af647f92af1fa", "swift-coverage/xcode-assets.ts": "99e03b74c961d2449afd58c2cbc415ba91d1d469a4f89e461c137fd6c305b27c", "swift-coverage/xcode-asset-symbols.ts": "1b2a67733bc9d139b351466270205452a6172140bc25080d72619e2952c44671", "swift-coverage/xcode-bridging.ts": "33184be8c5daf6646aa5a1276a4e15531f1be27b7c26f56550e0fbb1fc678a11", "swift-coverage/xcode-packages.ts": "8e6020d17d24474150a5a50d042aca6261819ef75c79680a287a66f395909915", "swift-coverage/xcode-strings.ts": "f2dd4c7cd8ef77035184b0132909c2fa09fd20ed06b7757c2f1f960bfdde031c", "swift-coverage/reader.ts": "da559b67ecd1161dea70c980b5f98f2c55af3550f0714479100fa5e9e813625c", "swift-coverage/provenance.ts": "eb3b41ae8b58b48f6758f084800f188dfb1edb227e483abdd6b80cde66e849b9", "swift-package-manifest.ts": "4b7d4a715cdaf57468ead23f2ff9dce76d02c6a888d73d144d4baa2ae571ba3c", "swift-package.ts": "338cfef9a34a930206ac2e1a8a90b85c8d61f776d9a41e6445dc18e0c5385cdb", "swift-source-file.ts": "93fd659ed63a27b67f54a7c229a7ceb636dc9c59e68414920ba36cff1eda1f94", "swift-toolchain.ts": "e7cf8a143d47ff86b4ee2db4a8266e96b100926104990dba795321bc5923df3e", "home-paths.ts": "f5583b61f8bdd81823b3b29ff519a48daf9993719f194ddb7de22218472e90f9", "xcode-header-search.ts": "f8c3d557b4eca5ddad32907545353eb7ad53b2ebd0969d9ed8f7275e109a13b1", "xcode-project.ts": "8ffd57670829ddd2b10e812defbd9016859744be88713c5ba65847aa6e26dff4", "xcode-target-members.ts": "ad7589132bffab265e8a10b64e24484fe88b4a2b1cc0ee19a97f151a002eca77", "xcode-json-project.ts": "41990ebbe4b488eef34e74c4608b4b48e5a5b299ba98ca7fbcfdfa0e77be63b6", "openstep-plist.ts": "74e6ce1dac80c9c318e0e9f5e3e8cd19a898a8820c36fc160609695bcb59dcd3" };
42
+ define_SWIFT_COVERAGE_SOURCE_DIGESTS_default = { "swift-coverage/indexdump.ts": "0d82d8eeb96bf377f409ea7e33274c341a710c0e071f6b6e17571a23d8d92412", "swift-coverage/indexing.ts": "633ccf19eec1f382a8847d0ee1dca42a2792a3c60aafd43622ed5152b09b8272", "swift-coverage/types.ts": "bd8fae54ea6c53e110cd8a5d7b57c1d532dd0166e09fdaea63c4f270c3780dd1", "swift-coverage/source.ts": "c151758a9f67631bc61473c375df0dc017da6902a34533b2cf4fc4fd7d19b6ee", "swift-coverage/package.ts": "1f0068be7461fa7c5a7a891faf318f305cbed2e94c19667ba76627f7e5be260b", "swift-coverage/xcode.ts": "65a500b806ce1c3a496de27f2e0ad77287c0f6795c618342c08af647f92af1fa", "swift-coverage/xcode-assets.ts": "99e03b74c961d2449afd58c2cbc415ba91d1d469a4f89e461c137fd6c305b27c", "swift-coverage/xcode-asset-symbols.ts": "1b2a67733bc9d139b351466270205452a6172140bc25080d72619e2952c44671", "swift-coverage/xcode-bridging.ts": "33184be8c5daf6646aa5a1276a4e15531f1be27b7c26f56550e0fbb1fc678a11", "swift-coverage/xcode-packages.ts": "8e6020d17d24474150a5a50d042aca6261819ef75c79680a287a66f395909915", "swift-coverage/xcode-strings.ts": "f2dd4c7cd8ef77035184b0132909c2fa09fd20ed06b7757c2f1f960bfdde031c", "swift-coverage/reader.ts": "da559b67ecd1161dea70c980b5f98f2c55af3550f0714479100fa5e9e813625c", "swift-coverage/provenance.ts": "eb3b41ae8b58b48f6758f084800f188dfb1edb227e483abdd6b80cde66e849b9", "swift-package-manifest.ts": "4b7d4a715cdaf57468ead23f2ff9dce76d02c6a888d73d144d4baa2ae571ba3c", "swift-package.ts": "338cfef9a34a930206ac2e1a8a90b85c8d61f776d9a41e6445dc18e0c5385cdb", "swift-source-file.ts": "93fd659ed63a27b67f54a7c229a7ceb636dc9c59e68414920ba36cff1eda1f94", "swift-toolchain.ts": "25505683ca29a0b380413bf2a5026d4967eacf886e35bc11ece6e15317e5bb02", "home-paths.ts": "673205c02bbc8e342a9b43585a3a1b5f6b64eb5fb474e1a8647e9d2c2e62e67d", "xcode-header-search.ts": "f8c3d557b4eca5ddad32907545353eb7ad53b2ebd0969d9ed8f7275e109a13b1", "xcode-project.ts": "86f79e98323ec065e0e5195324c75ca608f490efbd95dcc25c53d5aa0b9aecc9", "xcode-target-members.ts": "ad7589132bffab265e8a10b64e24484fe88b4a2b1cc0ee19a97f151a002eca77", "xcode-json-project.ts": "41990ebbe4b488eef34e74c4608b4b48e5a5b299ba98ca7fbcfdfa0e77be63b6", "openstep-plist.ts": "74e6ce1dac80c9c318e0e9f5e3e8cd19a898a8820c36fc160609695bcb59dcd3" };
43
43
  }
44
44
  });
45
45
 
@@ -1909,7 +1909,7 @@ function readIosSdkTree(root) {
1909
1909
 
1910
1910
  // src/swift-standin-digest.ts
1911
1911
  init_define_SWIFT_COVERAGE_SOURCE_DIGESTS();
1912
- var STANDIN_SOURCE_DIGEST = true ? "8357df1eb62bbe4eb3a2bc4588867a6b75d1052c41e274e31fec2fde3700676e" : standinSourceDigest();
1912
+ var STANDIN_SOURCE_DIGEST = true ? "c387958abbb31d4eec2c99667ca99ccf6efb1328361a47445d476c520ae3c310" : standinSourceDigest();
1913
1913
 
1914
1914
  // src/expo-native-workspace.ts
1915
1915
  init_define_SWIFT_COVERAGE_SOURCE_DIGESTS();
@@ -5391,7 +5391,7 @@ var FOUNDATION_IMPLICIT_MODULES = [
5391
5391
  var FOUNDATION_IMPLICIT_FLAGS = FOUNDATION_IMPLICIT_MODULES.map(
5392
5392
  (module2) => `, "-Xfrontend", "-import-module", "-Xfrontend", "${module2}"`
5393
5393
  ).join("");
5394
- var compilerSourceDigest = true ? "382ff03994dc241ff825d788eb5f8eb92462420da0b20538d9fcc1ff79e096c6" : swiftCompilerSourceDigest2(__sootsim_import_meta_dirname);
5394
+ var compilerSourceDigest = true ? "e10a6af53455b2d2b6d58c2abd62834b0ca3a02445b4778b18f9fcbb90fa3747" : swiftCompilerSourceDigest2(__sootsim_import_meta_dirname);
5395
5395
  var CORE_FOUNDATION_HANDLE_IMPORTS = [
5396
5396
  "CFAllocator",
5397
5397
  "CFArray",
@@ -1,4 +1,4 @@
1
- /*! peach v0.1.2190 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.2192 | (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.2190 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.2192 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
2
2
 
3
3
  // src/worklet-executable.ts
4
4
  import { parse } from "acorn";
@@ -187,6 +187,7 @@ export declare class SootSimNode {
187
187
  type: SootSimNodeType;
188
188
  props: Record<string, any>;
189
189
  private lastReactProps;
190
+ private reactResolvedProps;
190
191
  readonly __nativeTag: number;
191
192
  readonly _nativeTag: number;
192
193
  readonly __viewTag: number;
@@ -581,6 +582,8 @@ export declare class SootSimNode {
581
582
  layoutAffecting?: boolean;
582
583
  disposeSubtree?: boolean;
583
584
  }): void;
585
+ private resolveReactProps;
586
+ adoptReactProps(reactProps: Record<string, any>): boolean;
584
587
  updateProps(newProps: Record<string, any>, source?: 'react' | 'native' | 'animated'): void;
585
588
  getAbsoluteLayoutPosition(options?: LayoutPositionOptions): {
586
589
  x: number;
@@ -81,9 +81,10 @@ export interface ScrollMomentumConfig extends ScrollRange {
81
81
  snapToStart?: boolean;
82
82
  snapToEnd?: boolean;
83
83
  disableIntervalMomentum?: boolean;
84
+ viewAlignedSnap?: boolean;
84
85
  collapseBand?: CollapseBand | null;
85
86
  }
86
- export type ScrollSnapFlags = Required<Pick<ScrollMomentumConfig, 'snapToStart' | 'snapToEnd' | 'disableIntervalMomentum'>>;
87
+ export type ScrollSnapFlags = Required<Pick<ScrollMomentumConfig, 'snapToStart' | 'snapToEnd' | 'disableIntervalMomentum' | 'viewAlignedSnap'>>;
87
88
  export declare function readScrollSnapFlags(props: Record<string, unknown> | null | undefined): ScrollSnapFlags;
88
89
  export interface CollapseBand {
89
90
  start: number;
@@ -243,6 +243,7 @@ export interface ScrollMomentumDriveDescriptor extends ScrollRange {
243
243
  snapToStart: boolean;
244
244
  snapToEnd: boolean;
245
245
  disableIntervalMomentum: boolean;
246
+ viewAlignedSnap: boolean;
246
247
  collapseBand?: CollapseBand;
247
248
  physics: ScrollMomentumPhysics;
248
249
  nestedScrollChain?: ScrollMomentumDriveNode[];
@@ -52,6 +52,7 @@ export interface ScrollMirrorEntry extends ScrollMirrorOwner {
52
52
  snapToStart: boolean;
53
53
  snapToEnd: boolean;
54
54
  disableIntervalMomentum: boolean;
55
+ viewAlignedSnap: boolean;
55
56
  collapseBand?: CollapseBand;
56
57
  decelerationRate?: unknown;
57
58
  scrollEventThrottle?: number;
package/kotlin/sdk.tar.gz CHANGED
Binary file
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "peachsim",
3
- "version": "0.1.2190",
3
+ "version": "0.1.2192",
4
4
  "description": "Vite and Metro plugins, testing drivers, and SDK exports for peach.",
5
5
  "author": "Tamagui LLC",
6
6
  "license": "SEE LICENSE IN LICENSE",
@@ -721,10 +721,12 @@ export async function prepareInstalledExpoWorkspace(app: string, work: string) {
721
721
  })
722
722
  }
723
723
 
724
- // the copy tracks the files its source checkout tracks, including ignored ones the
725
- // project commits, so a postinstall that marks them with `git update-index` finds them
726
- function trackedSourceFiles(root: string, work: string): string[] {
727
- const listed = spawnSync('git', ['ls-files', '-z'], {
724
+ // the copy's index lists the files its source checkout tracks, including ignored ones
725
+ // the project commits, so a postinstall that marks them with `git update-index` finds
726
+ // them. the entries reuse the source index's object ids: hashing or storing a monorepo's
727
+ // worth of blobs takes minutes, and nothing reads their contents from this repository
728
+ function trackedSourceEntries(root: string, work: string): string[] {
729
+ const listed = spawnSync('git', ['ls-files', '--stage', '-z'], {
728
730
  cwd: root,
729
731
  env: { ...process.env, ...isolatedGitEnv },
730
732
  maxBuffer: 256 * 1024 * 1024,
@@ -733,25 +735,16 @@ function trackedSourceFiles(root: string, work: string): string[] {
733
735
  return listed.stdout
734
736
  .toString('utf8')
735
737
  .split('\0')
736
- .filter((file) => file !== '' && fs.existsSync(path.join(work, file)))
738
+ .filter((entry) => {
739
+ const tab = entry.indexOf('\t')
740
+ return tab > 0 && fs.existsSync(path.join(work, entry.slice(tab + 1)))
741
+ })
737
742
  }
738
743
 
739
744
  function initializeWorkspaceGit(root: string, work: string) {
740
745
  requireNativeGit()
741
- execFileSync('git', ['init', '--quiet'], {
742
- cwd: work,
743
- env: { ...process.env, ...isolatedGitEnv },
744
- timeout: 60_000,
745
- })
746
- const tracked = trackedSourceFiles(root, work)
747
- if (tracked.length > 0)
748
- // update-index takes exact paths; add matches every file against every pathspec, which is quadratic here
749
- execFileSync('git', ['update-index', '--add', '-z', '--stdin'], {
750
- cwd: work,
751
- env: { ...process.env, ...isolatedGitEnv },
752
- input: tracked.join('\0'),
753
- timeout: 120_000,
754
- })
746
+ const env = { ...process.env, ...isolatedGitEnv }
747
+ execFileSync('git', ['init', '--quiet'], { cwd: work, env, timeout: 60_000 })
755
748
  execFileSync(
756
749
  'git',
757
750
  [
@@ -768,8 +761,16 @@ function initializeWorkspaceGit(root: string, work: string) {
768
761
  '-m',
769
762
  'prepared workspace',
770
763
  ],
771
- { cwd: work, env: { ...process.env, ...isolatedGitEnv }, timeout: 60_000 },
764
+ { cwd: work, env, timeout: 60_000 },
772
765
  )
766
+ const tracked = trackedSourceEntries(root, work)
767
+ if (tracked.length > 0)
768
+ execFileSync('git', ['update-index', '-z', '--index-info'], {
769
+ cwd: work,
770
+ env,
771
+ input: tracked.join('\0'),
772
+ timeout: 60_000,
773
+ })
773
774
  }
774
775
 
775
776
  async function prepareWorkspace(