peachsim 0.1.2182 → 0.1.2186

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 (106) hide show
  1. package/cli/commands/cpu-profile.ts +6 -2
  2. package/cli/commands/shell-url.ts +3 -6
  3. package/cli/outbound-endpoints.ts +11 -1
  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 +371 -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 +2 -2
  28. package/dist-lib/dev-bundle-resolution.cjs +1 -1
  29. package/dist-lib/expo-swift-bundle.cjs +325 -28
  30. package/dist-lib/expo-swift-metadata.cjs +2 -1
  31. package/dist-lib/expo-swift-metadata.mjs +2 -1
  32. package/dist-lib/home-paths.cjs +1 -1
  33. package/dist-lib/host/bridge-host.cjs +364 -36
  34. package/dist-lib/host/fetch-proxy-handler.cjs +8 -5
  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 +51 -7
  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 +5 -3
  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 +51 -7
  50. package/dist-lib/native-app-identity-project.cjs +49 -5
  51. package/dist-lib/native-app-identity-project.mjs +49 -5
  52. package/dist-lib/native-app-identity.cjs +40 -2
  53. package/dist-lib/native-app-identity.mjs +40 -2
  54. package/dist-lib/native-firebase-metadata.cjs +1 -1
  55. package/dist-lib/native-firebase-metadata.mjs +1 -1
  56. package/dist-lib/pdfium-raster.cjs +1 -1
  57. package/dist-lib/pdfium-raster.mjs +1 -1
  58. package/dist-lib/plist.cjs +1 -1
  59. package/dist-lib/plist.mjs +1 -1
  60. package/dist-lib/profiles.cjs +1 -1
  61. package/dist-lib/public-brand.cjs +1 -1
  62. package/dist-lib/public-origins-lib-esm.json +25 -24
  63. package/dist-lib/public-origins-lib.json +63 -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 +383 -39
  71. package/dist-lib/swift-compile.cjs +2 -2
  72. package/dist-lib/swift-compile.mjs +2 -2
  73. package/dist-lib/swift-package.cjs +26 -1
  74. package/dist-lib/swift-package.mjs +25 -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 +286 -24
  80. package/dist-lib/vite.cjs +8 -5
  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-backend.d.ts +1 -0
  84. package/kotlin/sdk.tar.gz +0 -0
  85. package/package.json +1 -1
  86. package/runtime-companion.json +1 -1
  87. package/sdk/ios/System/Library/Frameworks/ActivityKit.framework/Headers/ActivityKit.h +1 -0
  88. package/sdk/ios/System/Library/Frameworks/ActivityKit.framework/Modules/module.modulemap +4 -0
  89. package/sdk/ios/System/Library/Frameworks/UIKit.framework/Headers/UIImageAsset.h +1 -1
  90. package/sdk/ios/usr/lib/swift/ActivityKit.swiftmodule/arm64-apple-ios-simulator.swiftinterface +14 -0
  91. package/sdk/ios/usr/lib/swift/CoreGraphics.swiftmodule/arm64-apple-ios-simulator.swiftinterface +14 -0
  92. package/sdk/ios/usr/lib/swift/Dispatch.swiftmodule/arm64-apple-ios-simulator.swiftinterface +3 -0
  93. package/sdk/ios/usr/lib/swift/Foundation.swiftmodule/arm64-apple-ios-simulator.swiftinterface +147 -16
  94. package/sdk/ios/usr/lib/swift/UIKit.swiftmodule/arm64-apple-ios-simulator.swiftinterface +5 -0
  95. package/src/expo-native-workspace.ts +9 -2
  96. package/src/kotlin-host.ts +4 -2
  97. package/src/native-app-identity-project.ts +10 -2
  98. package/src/native-app-identity.ts +15 -1
  99. package/src/nativeAppIconContract.ts +37 -0
  100. package/src/swift-installed-targets.ts +8 -0
  101. package/src/swift-interface-bodies.ts +165 -0
  102. package/src/swift-objc-standin.ts +73 -13
  103. package/src/swift-package.ts +26 -0
  104. package/src/swift-source-pods.ts +27 -4
  105. package/src/swift-standin-emit.ts +30 -3
  106. package/src/swift-standins.ts +75 -12
@@ -1,4 +1,4 @@
1
- /*! peach v0.1.2182 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.2186 | (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": "0b82b3773f9c0b27636f277d9c123b3e631b9c9980995d67d67efa6b3176df4a", "swift-source-file.ts": "93fd659ed63a27b67f54a7c229a7ceb636dc9c59e68414920ba36cff1eda1f94", "swift-toolchain.ts": "65a0698bf022ace2f4254f3f891828dedf403d61c102238e242084a2279e04eb", "home-paths.ts": "f5583b61f8bdd81823b3b29ff519a48daf9993719f194ddb7de22218472e90f9", "xcode-header-search.ts": "f8c3d557b4eca5ddad32907545353eb7ad53b2ebd0969d9ed8f7275e109a13b1", "xcode-project.ts": "5f41cd0bd86cb0cffbfb0047348b963f81d5e51cb0e8dd574c739b1a27aa56de", "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": "65a0698bf022ace2f4254f3f891828dedf403d61c102238e242084a2279e04eb", "home-paths.ts": "f5583b61f8bdd81823b3b29ff519a48daf9993719f194ddb7de22218472e90f9", "xcode-header-search.ts": "f8c3d557b4eca5ddad32907545353eb7ad53b2ebd0969d9ed8f7275e109a13b1", "xcode-project.ts": "5f41cd0bd86cb0cffbfb0047348b963f81d5e51cb0e8dd574c739b1a27aa56de", "xcode-target-members.ts": "ad7589132bffab265e8a10b64e24484fe88b4a2b1cc0ee19a97f151a002eca77", "xcode-json-project.ts": "41990ebbe4b488eef34e74c4608b4b48e5a5b299ba98ca7fbcfdfa0e77be63b6", "openstep-plist.ts": "74e6ce1dac80c9c318e0e9f5e3e8cd19a898a8820c36fc160609695bcb59dcd3" };
43
43
  }
44
44
  });
45
45
 
@@ -6905,6 +6905,34 @@ init_define_SWIFT_COVERAGE_SOURCE_DIGESTS();
6905
6905
 
6906
6906
  // src/nativeAppIconContract.ts
6907
6907
  init_define_SWIFT_COVERAGE_SOURCE_DIGESTS();
6908
+ function resolveNativeBundleIcons(icons, catalogNames, resolveReference) {
6909
+ if (!isRecord(icons) && catalogNames.length === 0) return void 0;
6910
+ const resolve3 = (value) => {
6911
+ if (typeof value === "string") return resolveReference(value);
6912
+ if (Array.isArray(value)) return value.map(resolve3);
6913
+ if (isRecord(value))
6914
+ return Object.fromEntries(
6915
+ Object.entries(value).map(([key2, entry]) => [
6916
+ resolveReference(key2),
6917
+ resolve3(entry)
6918
+ ])
6919
+ );
6920
+ return value;
6921
+ };
6922
+ const dictionary2 = isRecord(icons) ? Object.fromEntries(
6923
+ Object.entries(icons).map(([key2, value]) => [key2, resolve3(value)])
6924
+ ) : {};
6925
+ if (catalogNames.length === 0) return dictionary2;
6926
+ return {
6927
+ ...dictionary2,
6928
+ CFBundleAlternateIcons: {
6929
+ ...Object.fromEntries(
6930
+ catalogNames.map((name3) => [name3, { CFBundleIconName: name3 }])
6931
+ ),
6932
+ ...isRecord(dictionary2.CFBundleAlternateIcons) ? dictionary2.CFBundleAlternateIcons : {}
6933
+ }
6934
+ };
6935
+ }
6908
6936
  function isNativeAppIconArtwork(value) {
6909
6937
  return isRecord(value) && (value.primary === void 0 || isSwiftImageVariants(value.primary)) && isRecord(value.alternates) && Object.values(value.alternates).every(isSwiftImageVariants);
6910
6938
  }
@@ -7221,6 +7249,7 @@ function isNativeAppIdentity(value) {
7221
7249
  if (value.androidPhotoLibraryAddOnly !== void 0 && value.androidPhotoLibraryAddOnly !== true)
7222
7250
  return false;
7223
7251
  if (value.googleSignIn !== void 0 && !isRecord(value.googleSignIn)) return false;
7252
+ if (value.bundleIcons !== void 0 && !isRecord(value.bundleIcons)) return false;
7224
7253
  const descriptions = value.permissionUsageDescriptions;
7225
7254
  if (value.reanimatedStaticFeatureFlags !== void 0 && (!isRecord(value.reanimatedStaticFeatureFlags) || !Object.values(value.reanimatedStaticFeatureFlags).every(
7226
7255
  (flag) => typeof flag === "boolean"
@@ -7604,6 +7633,29 @@ function moduleMapName(text5) {
7604
7633
  );
7605
7634
  return index < 0 ? void 0 : tokens2[index + 1];
7606
7635
  }
7636
+ function moduleMapModules(text5) {
7637
+ const modules = [];
7638
+ const token = /\/\*[\s\S]*?\*\/|\/\/[^\n]*|"[^"]*"|\{|\}|\bmodule\s+([\w.]+)/g;
7639
+ let depth = 0;
7640
+ let start = -1;
7641
+ let name3 = "";
7642
+ for (const match of text5.matchAll(token)) {
7643
+ if (match[0] === "{") depth++;
7644
+ else if (match[0] === "}") {
7645
+ depth--;
7646
+ if (depth === 0 && start >= 0) {
7647
+ modules.push({ name: name3, text: text5.slice(start, match.index + 1) });
7648
+ start = -1;
7649
+ }
7650
+ } else if (match[1] !== void 0 && depth === 0) {
7651
+ const before = text5.slice(0, match.index).trimEnd();
7652
+ if (/\bextern$/.test(before)) continue;
7653
+ start = match.index;
7654
+ name3 = match[1];
7655
+ }
7656
+ }
7657
+ return modules;
7658
+ }
7607
7659
  function swiftTargetModuleName(name3) {
7608
7660
  return name3.replace(/[^A-Za-z0-9_]/g, "_").replace(/^[0-9]/, "_");
7609
7661
  }
@@ -11840,6 +11892,137 @@ var import_node_crypto10 = require("node:crypto");
11840
11892
  var import_node_fs29 = __toESM(require("node:fs"), 1);
11841
11893
  var import_node_path26 = __toESM(require("node:path"), 1);
11842
11894
 
11895
+ // src/swift-interface-bodies.ts
11896
+ init_define_SWIFT_COVERAGE_SOURCE_DIGESTS();
11897
+ var INLINE_ATTRIBUTE = /@(?:inlinable|_alwaysEmitIntoClient|_transparent|inline\(__always\)|_effects\([^()]*\)|_specialize\((?:[^()]|\([^()]*\))*\))\s*/g;
11898
+ var ACCESSOR = /^(?:mutating|nonmutating|async|throws|rethrows|get|set|_modify|_read)$/;
11899
+ function declarationKind(head) {
11900
+ const words2 = head.replace(/@\w+(?:\((?:[^()]|\([^()]*\))*\))?/g, " ").match(/[A-Za-z_]\w*/g);
11901
+ for (const word of words2 ?? []) {
11902
+ if (word === "func" || word === "init" || word === "deinit") return "function";
11903
+ if (word === "var" || word === "let" || word === "subscript") return "property";
11904
+ if (word === "struct" || word === "class" || word === "enum" || word === "protocol" || word === "extension" || word === "actor" || word === "precedencegroup")
11905
+ return "container";
11906
+ }
11907
+ return "container";
11908
+ }
11909
+ function skipLiteral(text5, i) {
11910
+ if (text5.startsWith("//", i)) {
11911
+ const end = text5.indexOf("\n", i);
11912
+ return end < 0 ? text5.length : end;
11913
+ }
11914
+ if (text5.startsWith("/*", i)) {
11915
+ const end = text5.indexOf("*/", i + 2);
11916
+ return end < 0 ? text5.length : end + 2;
11917
+ }
11918
+ if (text5[i] !== '"' && text5[i] !== "#") return i;
11919
+ let hashes = 0;
11920
+ let j = i;
11921
+ while (text5[j] === "#") {
11922
+ hashes++;
11923
+ j++;
11924
+ }
11925
+ if (text5[j] !== '"') return i;
11926
+ const multiline = text5.startsWith('"""', j);
11927
+ const open = multiline ? '"""' : '"';
11928
+ j += open.length;
11929
+ const close = `${open}${"#".repeat(hashes)}`;
11930
+ const escape2 = `\\${"#".repeat(hashes)}`;
11931
+ while (j < text5.length) {
11932
+ if (text5.startsWith(escape2, j)) j += escape2.length + 1;
11933
+ else if (text5.startsWith(close, j)) return j + close.length;
11934
+ else j++;
11935
+ }
11936
+ return text5.length;
11937
+ }
11938
+ function skipBlock(text5, open) {
11939
+ let depth = 0;
11940
+ for (let i = open; i < text5.length; ) {
11941
+ const after = skipLiteral(text5, i);
11942
+ if (after !== i) {
11943
+ i = after;
11944
+ continue;
11945
+ }
11946
+ if (text5[i] === "{") depth++;
11947
+ else if (text5[i] === "}" && --depth === 0) return i + 1;
11948
+ i++;
11949
+ }
11950
+ return text5.length;
11951
+ }
11952
+ function skipExpression(text5, start) {
11953
+ let depth = 0;
11954
+ for (let i = start; i < text5.length; ) {
11955
+ const after = skipLiteral(text5, i);
11956
+ if (after !== i) {
11957
+ i = after;
11958
+ continue;
11959
+ }
11960
+ const char = text5[i];
11961
+ if (char === "(" || char === "[" || char === "{" || char === "<") depth++;
11962
+ else if (char === ">" && text5[i - 1] !== "-") depth--;
11963
+ else if (char === ")" || char === "]" || char === "}") {
11964
+ if (depth === 0) return i;
11965
+ depth--;
11966
+ } else if (char === "," && depth === 0) return i;
11967
+ i++;
11968
+ }
11969
+ return text5.length;
11970
+ }
11971
+ function swiftInterfaceWithoutBodies(text5, keepDefaults = false) {
11972
+ let out = "";
11973
+ const frames = [];
11974
+ let parens = 0;
11975
+ let lineStart = 0;
11976
+ for (let i = 0; i < text5.length; ) {
11977
+ const after = skipLiteral(text5, i);
11978
+ if (after !== i) {
11979
+ out += text5.slice(i, after);
11980
+ i = after;
11981
+ continue;
11982
+ }
11983
+ const char = text5[i];
11984
+ if (char === "=" && parens > 0 && text5[i - 1] === " " && text5[i + 1] === " ") {
11985
+ out = out.trimEnd();
11986
+ i = skipExpression(text5, i + 1);
11987
+ continue;
11988
+ }
11989
+ if (char === "\n") lineStart = out.length + 1;
11990
+ else if (char === "(") parens++;
11991
+ else if (char === ")") parens--;
11992
+ else if (char === "}") {
11993
+ frames.pop();
11994
+ } else if (char === "{") {
11995
+ const parent = frames.at(-1);
11996
+ const head = out.slice(lineStart);
11997
+ if (parens > 0 || parent === "expression") frames.push("expression");
11998
+ else if (parent === "accessors") {
11999
+ out = `${out.slice(0, lineStart)}${head.replace(INLINE_ATTRIBUTE, "")}`.trimEnd();
12000
+ i = skipBlock(text5, i);
12001
+ continue;
12002
+ } else {
12003
+ const kind = declarationKind(head);
12004
+ const body = text5.slice(i + 1, skipBlock(text5, i) - 1);
12005
+ if (kind === "function") {
12006
+ out = `${out.slice(0, lineStart)}${head.replace(INLINE_ATTRIBUTE, "")}`.trimEnd();
12007
+ i = skipBlock(text5, i);
12008
+ continue;
12009
+ }
12010
+ const bare = body.split(/\s+/).every((word) => word === "" || ACCESSOR.test(word));
12011
+ frames.push(kind === "property" && !bare ? "accessors" : "container");
12012
+ if (kind === "property" && bare) {
12013
+ out += `{${body}}`;
12014
+ i = skipBlock(text5, i);
12015
+ frames.pop();
12016
+ continue;
12017
+ }
12018
+ }
12019
+ }
12020
+ out += char;
12021
+ i++;
12022
+ }
12023
+ return out.replace(INLINE_ATTRIBUTE, "");
12024
+ }
12025
+
11843
12026
  // src/swift-objc-sdk.ts
11844
12027
  init_define_SWIFT_COVERAGE_SOURCE_DIGESTS();
11845
12028
  var import_node_path25 = __toESM(require("node:path"), 1);
@@ -11878,7 +12061,7 @@ function restoreSwiftInterfaceSPI(interfaceText, module2, graphs) {
11878
12061
  let depth = 0;
11879
12062
  for (const line of interfaceText.split("\n")) {
11880
12063
  const enclosing = scopes.at(-1)?.path ?? [];
11881
- const declaration = /^\s*(?:@[\w.]+(?:\([^)]*\))?\s+|\w+\s+)*?(class(?!\s+(?:func|var|subscript)\b)|struct|enum|protocol|actor|extension|func|var|let|init|subscript|typealias|case)\b\s*([\w.`]*)/.exec(
12064
+ const declaration = /^\s*(?:@[\w.]+(?:\([^)]*\))?\s+|\w+\s+)*?(class(?!\s+(?:func|var|subscript)\b)|struct|enum|protocol|actor|extension|func|var|let|init|subscript|typealias|case)\b\s*([/=\-+!*%<>&|^~?]+|[\w.`]*)/.exec(
11882
12065
  line.replace(/::/g, ".")
11883
12066
  );
11884
12067
  if (declaration) {
@@ -11976,7 +12159,26 @@ var KEEP_EXTERNAL = /* @__PURE__ */ new Map([
11976
12159
  ["s:SE", "Encodable"],
11977
12160
  ["s:Se", "Decodable"],
11978
12161
  ["s:s23CustomStringConvertibleP", "CustomStringConvertible"],
11979
- ["s:s9CodingKeyP", "CodingKey"]
12162
+ ["s:s9CodingKeyP", "CodingKey"],
12163
+ ["s:SL", "Comparable"],
12164
+ ["s:ST", "Sequence"],
12165
+ ["s:St", "IteratorProtocol"],
12166
+ ["s:Sl", "Collection"],
12167
+ ["s:SK", "BidirectionalCollection"],
12168
+ ["s:Sk", "RandomAccessCollection"],
12169
+ ["s:SM", "MutableCollection"],
12170
+ ["s:Sm", "RangeReplaceableCollection"],
12171
+ ["s:s28CustomDebugStringConvertibleP", "CustomDebugStringConvertible"],
12172
+ ["s:s25LosslessStringConvertibleP", "LosslessStringConvertible"],
12173
+ ["s:s20TextOutputStreamableP", "TextOutputStreamable"],
12174
+ ["s:Sx", "Strideable"],
12175
+ ["s:s18AdditiveArithmeticP", "AdditiveArithmetic"],
12176
+ ["s:s25ExpressibleByArrayLiteralP", "ExpressibleByArrayLiteral"],
12177
+ ["s:s30ExpressibleByDictionaryLiteralP", "ExpressibleByDictionaryLiteral"],
12178
+ ["s:s26ExpressibleByStringLiteralP", "ExpressibleByStringLiteral"],
12179
+ ["s:s27ExpressibleByIntegerLiteralP", "ExpressibleByIntegerLiteral"],
12180
+ ["s:s25ExpressibleByFloatLiteralP", "ExpressibleByFloatLiteral"],
12181
+ ["s:s27ExpressibleByBooleanLiteralP", "ExpressibleByBooleanLiteral"]
11980
12182
  ]);
11981
12183
  var LEADING_ATTRS = /^((?:@\w+(?:\([^)]*\))?\s*|nonisolated\s+)*)(.*)$/s;
11982
12184
  var OBJC_ONLY = /@(?:objcMembers|objc|IBOutlet|IBInspectable|IBAction|IBSegueAction|GKInspectable|nonobjc|NSCopying|NSManaged)(?:\([^)]*\))?\s*|\bdynamic\s+/g;
@@ -12857,7 +13059,12 @@ function emitSwiftStandin(sourceGraphs, options) {
12857
13059
  const list2 = [
12858
13060
  ...parent ? [parent] : [],
12859
13061
  ...(conforms.get(id) ?? []).filter(
12860
- (name3) => !ancestors.has(name3) && !inherited.has(conformanceTargets.get(id).get(name3)) && !(parent && objectConformers.has(id) && ["Hashable", "Equatable", "CustomStringConvertible"].includes(name3)) && !(name3 === nsObjectProtocol && externalRoot(id) === nsObject)
13062
+ (name3) => !ancestors.has(name3) && !inherited.has(conformanceTargets.get(id).get(name3)) && !(parent && objectConformers.has(id) && [
13063
+ "Hashable",
13064
+ "Equatable",
13065
+ "CustomStringConvertible",
13066
+ "CustomDebugStringConvertible"
13067
+ ].includes(name3)) && !(name3 === nsObjectProtocol && externalRoot(id) === nsObject) && !options.unconformed?.get(path66)?.has(name3)
12861
13068
  )
12862
13069
  ].filter((name3, at, all2) => all2.indexOf(name3) === at);
12863
13070
  const parentSymbol = superId.has(id) ? byId.get(superId.get(id)) : void 0;
@@ -13646,6 +13853,43 @@ function sdkDeclaration(name3) {
13646
13853
  }
13647
13854
  return sdkDeclarations.get(name3) ?? null;
13648
13855
  }
13856
+ function intakeInterface(text5, keepDefaults = false) {
13857
+ return swiftInterfaceWithoutBodies(text5, keepDefaults).replace(/^((?:@_exported[ \t]+)?import[ \t]+)(\w+)\.[\w.]+[ \t]*$/gm, "$1$2").replace(/\bCoreFoundation\.(?=CG)/g, "CoreGraphics.").replace(/\bCoreFoundation\.(?=\w)/g, "Foundation.").replace(/\bDarwin\.OSStatus\b/g, "Swift.Int32").replace(
13858
+ /\bFoundation\.Data\.(?=Base64(?:En|De)codingOptions\b)/g,
13859
+ "Foundation.NSData."
13860
+ );
13861
+ }
13862
+ function stageVendorFrameworks(dir, stage) {
13863
+ import_node_fs29.default.mkdirSync(stage, { recursive: true });
13864
+ for (const entry of import_node_fs29.default.readdirSync(dir)) {
13865
+ if (!entry.endsWith(".framework")) continue;
13866
+ const source = import_node_path26.default.join(dir, entry);
13867
+ const target = import_node_path26.default.join(stage, entry);
13868
+ import_node_fs29.default.mkdirSync(target, { recursive: true });
13869
+ for (const child of import_node_fs29.default.readdirSync(source)) {
13870
+ if (child !== "Modules") {
13871
+ import_node_fs29.default.symlinkSync(import_node_path26.default.join(source, child), import_node_path26.default.join(target, child));
13872
+ continue;
13873
+ }
13874
+ for (const file of import_node_fs29.default.readdirSync(import_node_path26.default.join(source, child), {
13875
+ recursive: true,
13876
+ encoding: "utf8"
13877
+ })) {
13878
+ const from = import_node_path26.default.join(source, child, file);
13879
+ const to = import_node_path26.default.join(target, child, file);
13880
+ if (import_node_fs29.default.statSync(from).isDirectory()) {
13881
+ import_node_fs29.default.mkdirSync(to, { recursive: true });
13882
+ continue;
13883
+ }
13884
+ import_node_fs29.default.mkdirSync(import_node_path26.default.dirname(to), { recursive: true });
13885
+ if (file.endsWith(".swiftinterface"))
13886
+ import_node_fs29.default.writeFileSync(to, intakeInterface(import_node_fs29.default.readFileSync(from, "utf8")));
13887
+ else import_node_fs29.default.copyFileSync(from, to);
13888
+ }
13889
+ }
13890
+ }
13891
+ return stage;
13892
+ }
13649
13893
  function objcView(surface, toolchainBin, stdlib, cacheDir5, work, original, vendorFrameworks = []) {
13650
13894
  if (!import_node_fs29.default.existsSync(stdlib))
13651
13895
  throw new Error(
@@ -13673,6 +13917,7 @@ function objcView(surface, toolchainBin, stdlib, cacheDir5, work, original, vend
13673
13917
  import_node_fs29.default.writeFileSync(file, text5);
13674
13918
  }
13675
13919
  const interfaceCopies = [];
13920
+ let keepDefaults = true;
13676
13921
  if (framework) {
13677
13922
  import_node_fs29.default.mkdirSync(import_node_path26.default.join(frameworks, `${surface.module}.framework`, "Modules"), {
13678
13923
  recursive: true
@@ -13699,10 +13944,7 @@ function objcView(surface, toolchainBin, stdlib, cacheDir5, work, original, vend
13699
13944
  interfaceCopies.push(import_node_path26.default.join(to, name3));
13700
13945
  import_node_fs29.default.writeFileSync(
13701
13946
  import_node_path26.default.join(to, name3),
13702
- import_node_fs29.default.readFileSync(import_node_path26.default.join(from, name3), "utf8").replace(/\bCoreFoundation\.(?=CG)/g, "CoreGraphics.").replace(/\bCoreFoundation\.(?=\w)/g, "Foundation.").replace(/\bDarwin\.OSStatus\b/g, "Swift.Int32").replace(
13703
- /\bFoundation\.Data\.(?=Base64(?:En|De)codingOptions\b)/g,
13704
- "Foundation.NSData."
13705
- )
13947
+ intakeInterface(import_node_fs29.default.readFileSync(import_node_path26.default.join(from, name3), "utf8"), true)
13706
13948
  );
13707
13949
  }
13708
13950
  }
@@ -13764,7 +14006,10 @@ function objcView(surface, toolchainBin, stdlib, cacheDir5, work, original, vend
13764
14006
  stubs,
13765
14007
  "-I",
13766
14008
  stubIncludes,
13767
- ...vendorFrameworks.flatMap((dir) => ["-F", dir])
14009
+ ...vendorFrameworks.flatMap((dir, index) => [
14010
+ "-F",
14011
+ stageVendorFrameworks(dir, import_node_path26.default.join(work, "vendor-frameworks", String(index)))
14012
+ ])
13768
14013
  ];
13769
14014
  const missing = /* @__PURE__ */ new Map();
13770
14015
  const stubbed = /* @__PURE__ */ new Set();
@@ -13970,6 +14215,13 @@ function objcView(surface, toolchainBin, stdlib, cacheDir5, work, original, vend
13970
14215
  );
13971
14216
  }
13972
14217
  }
14218
+ if ((!progress || round === ROUNDS) && keepDefaults && interfaceCopies.length > 0) {
14219
+ keepDefaults = false;
14220
+ for (const file of interfaceCopies)
14221
+ import_node_fs29.default.writeFileSync(file, swiftInterfaceWithoutBodies(import_node_fs29.default.readFileSync(file, "utf8")));
14222
+ writeHeaders();
14223
+ continue;
14224
+ }
13973
14225
  if (!progress || round === ROUNDS)
13974
14226
  throw new Error(
13975
14227
  `its headers do not import as Swift: ${errors.length > 0 ? [...new Set(errors.map((match) => match[4]))].slice(0, 10).join("; ") : `swift-symbolgraph-extract ${run8.signal ?? `exit ${run8.status}`}: ${(run8.stderr.trim() || run8.stdout.trim() || "no diagnostic").slice(0, 4e3)}`}`
@@ -22751,7 +23003,7 @@ var darwinRecordsRegion = (quoted) => quoted.length ? ["-Wl,--start-lib", ...quo
22751
23003
  var REACTOR_FLAG = '"-Xclang-linker", "-mexec-model=reactor",\n';
22752
23004
  var MULTI_MANIFEST_VERSION = 68;
22753
23005
  var SWIFT_HEADER_PRODUCTS_TARGET = "PeachHeaderProducts";
22754
- var compilerSourceDigest = true ? "73960368f0b83cf042511655d857d5f64204fa539e2c984423a12c08657b068e" : swiftCompilerSourceDigest(__sootsim_import_meta_dirname);
23006
+ var compilerSourceDigest = true ? "0d2e8d6fb4545fb31a692a87bd3215ef3a9a64a8c3e1b2fc1f2a3e79511325ec" : swiftCompilerSourceDigest(__sootsim_import_meta_dirname);
22755
23007
  function swiftArtifactHash(input, release, moduleRoot) {
22756
23008
  const hash = (0, import_node_crypto19.createHash)("sha256");
22757
23009
  hash.update(`swift-compile
@@ -31250,7 +31502,7 @@ function initializeWorkspaceGit(root, work) {
31250
31502
  });
31251
31503
  const tracked = trackedSourceFiles(root, work);
31252
31504
  if (tracked.length > 0)
31253
- (0, import_node_child_process32.execFileSync)("git", ["add", "-f", "--pathspec-from-file=-", "--pathspec-file-nul"], {
31505
+ (0, import_node_child_process32.execFileSync)("git", ["update-index", "--add", "-z", "--stdin"], {
31254
31506
  cwd: work,
31255
31507
  env: { ...process.env, ...isolatedGitEnv },
31256
31508
  input: tracked.join("\0"),
@@ -31368,7 +31620,8 @@ async function prepareWorkspace(app, stage, key2, podsEnvironment) {
31368
31620
  const command = [...prefix, ...args];
31369
31621
  await run8(command[0], command.slice(1), cwd, env);
31370
31622
  };
31371
- if (manager.startsWith("bun@") && (!projectReady || !import_node_fs56.default.existsSync(bunExecutable)))
31623
+ const installedBun = manager.startsWith("bun@") ? (0, import_node_child_process32.spawnSync)(bunExecutable, ["--version"], { encoding: "utf8" }) : null;
31624
+ if (manager.startsWith("bun@") && (installedBun?.status !== 0 || installedBun.stdout.trim() !== manager.slice(4)))
31372
31625
  await execute(
31373
31626
  [
31374
31627
  "npm",
@@ -32009,7 +32262,7 @@ function sourceClosureDigest(srcDir, entrypoints) {
32009
32262
  return hash.digest("hex");
32010
32263
  }
32011
32264
  var standinSourceDigest = (srcDir = __sootsim_import_meta_dirname) => sourceClosureDigest(srcDir, STANDIN_DIGEST_ENTRYPOINTS);
32012
- var STANDIN_SOURCE_DIGEST = true ? "cc396d180b261e922288f645807b4a704fa92410ffc902bfbaac72b81af6413a" : standinSourceDigest();
32265
+ var STANDIN_SOURCE_DIGEST = true ? "62c7fc880aa6efc985c4786587cb8441b81094e44c28f8d65e1d6dffda9c24f4" : standinSourceDigest();
32013
32266
 
32014
32267
  // src/expoSwiftContract.ts
32015
32268
  init_define_SWIFT_COVERAGE_SOURCE_DIGESTS();
@@ -32088,9 +32341,13 @@ function readNativeAppIdentityFromXcodeTarget(app, parseInfoPlist = parsePlistSo
32088
32341
  }
32089
32342
  }
32090
32343
  const alternateSetting = settings?.("ASSETCATALOG_COMPILER_ALTERNATE_APPICON_NAMES") ?? "";
32344
+ const catalogAlternateNames = [];
32091
32345
  for (const match of alternateSetting.replace(/\\"/g, '"').matchAll(/"([^"]*)"|([^\s(),]+)/g)) {
32092
32346
  const val = match[1] ?? match[2];
32093
- if (val) alternateIconNames.add(val);
32347
+ if (val) {
32348
+ alternateIconNames.add(val);
32349
+ catalogAlternateNames.push(val);
32350
+ }
32094
32351
  }
32095
32352
  const permissionUsageDescriptions = {};
32096
32353
  for (const [key2, value] of Object.entries(dictionary2)) {
@@ -32153,6 +32410,7 @@ function readNativeAppIdentityFromXcodeTarget(app, parseInfoPlist = parsePlistSo
32153
32410
  ipadSupportedInterfaceOrientations,
32154
32411
  ...defaultScreenOrientationMask ? { defaultScreenOrientationMask } : {},
32155
32412
  alternateIconNames: [...alternateIconNames],
32413
+ bundleIcons: resolveNativeBundleIcons(icons, catalogAlternateNames, (value) => value),
32156
32414
  appIconArtwork: resolveNativeAppIconArtwork(
32157
32415
  app.resources,
32158
32416
  (file) => import_node_fs59.default.readFileSync(file, "utf8"),
@@ -32275,7 +32533,7 @@ async function packageTreeDigest(root) {
32275
32533
  // src/expo-native-prebuilt.ts
32276
32534
  var EXPO_NATIVE_ENTRY_NAME = "ios";
32277
32535
  function expoNativeCompilerDigestValue() {
32278
- return true ? "2799fbdcc514ac59227047679bf5780658834c45f46965b7b41455f6453d53e2" : expoNativeCompilerDigest(__sootsim_import_meta_dirname);
32536
+ return true ? "e50ab1d8ec731167f92f711da0833fa534d1aec4b5ce950a6ba947279df8c1e7" : expoNativeCompilerDigest(__sootsim_import_meta_dirname);
32279
32537
  }
32280
32538
  var IDENTITY_SOURCE_SKIPS = 1 | 4 | 8 | 16 | 32 | 64 | 128 | 4096;
32281
32539
  function readSources(value) {
@@ -34468,6 +34726,19 @@ function cxxOnly(surface) {
34468
34726
  return false;
34469
34727
  });
34470
34728
  }
34729
+ function mapSurfaces(modulemap) {
34730
+ const text5 = import_node_fs70.default.readFileSync(modulemap, "utf8");
34731
+ const headers = import_node_path67.default.dirname(modulemap);
34732
+ const modules = moduleMapModules(text5);
34733
+ if (modules.length <= 1) {
34734
+ const module2 = moduleMapName(text5);
34735
+ return module2 ? [headerSurface(module2, modulemap, headers)] : [];
34736
+ }
34737
+ return modules.map(
34738
+ (module2) => headerSurface(module2.name, generatedModuleMap(`${module2.text}
34739
+ `, false), headers)
34740
+ );
34741
+ }
34471
34742
  function simulatorSlice(xcframeworkDir) {
34472
34743
  const slice = import_node_fs70.default.readdirSync(xcframeworkDir).filter((name3) => /^ios-.+-simulator$/.test(name3)).sort()[0];
34473
34744
  return slice ? import_node_path67.default.join(xcframeworkDir, slice) : null;
@@ -34531,8 +34802,7 @@ function surfaces(xcframeworkDir, target, slice = simulatorSlice(xcframeworkDir)
34531
34802
  const headers = import_node_path67.default.join(root, "Headers");
34532
34803
  for (const map2 of files(headers, (name3) => name3 === "module.modulemap")) {
34533
34804
  const modulemap = import_node_path67.default.join(headers, map2);
34534
- const module2 = moduleMapName(import_node_fs70.default.readFileSync(modulemap, "utf8"));
34535
- if (module2) found.push(headerSurface(module2, modulemap, import_node_path67.default.dirname(modulemap)));
34805
+ found.push(...mapSurfaces(modulemap));
34536
34806
  }
34537
34807
  if (found.length === 0 && files(headers, (name3) => name3.endsWith(".h")).length) {
34538
34808
  const module2 = swiftTargetModuleName(target);
@@ -34669,9 +34939,13 @@ function swiftInterfaceForWasm(text5, cFlags) {
34669
34939
  ]);
34670
34940
  return `${interop} ${xcc.join(" ")}`;
34671
34941
  });
34672
- return retargeted.split("\n").map((line) => {
34673
- if (/\benum\s/.test(line) && TYPE_DECLARATION.test(line))
34674
- return line.replace(/@objc(?:\s*\([^()]*\))?\s+/g, "");
34942
+ const lines = retargeted.split("\n");
34943
+ const required = lines.filter((line) => OPTIONAL_REQUIREMENT.test(line)).join("\n");
34944
+ return lines.map((line) => {
34945
+ if (/\benum\s/.test(line) && TYPE_DECLARATION.test(line)) {
34946
+ const name3 = /\benum\s+(\w+)/.exec(line)?.[1];
34947
+ return name3 && new RegExp(`\\b${name3}\\b`).test(required) && !/\bSwift\.Error\b/.test(line) ? line : line.replace(/@objc(?:\s*\([^()]*\))?\s+/g, "");
34948
+ }
34675
34949
  if (TYPE_DECLARATION.test(line)) return line.replace(/@objcMembers\b/g, "");
34676
34950
  if (OPTIONAL_REQUIREMENT.test(line)) return line;
34677
34951
  return line.replace(OBJC_ATTRIBUTE, "");
@@ -35092,6 +35366,14 @@ function graphStandin(module2, graphs, values, wasm, binary2, toolchain, work, r
35092
35366
  const plain = /* @__PURE__ */ new Set();
35093
35367
  const unobjc = /* @__PURE__ */ new Set();
35094
35368
  const trapped = /* @__PURE__ */ new Set();
35369
+ const unconformed = /* @__PURE__ */ new Map();
35370
+ const objcProtocols = new Set(
35371
+ graphs.flatMap(
35372
+ (graph) => graph.symbols.filter(
35373
+ (symbol2) => symbol2.kind.identifier === "swift.protocol" && symbol2.identifier.precise.startsWith("c:")
35374
+ ).map((symbol2) => symbol2.pathComponents.join("."))
35375
+ )
35376
+ );
35095
35377
  const file = import_node_path67.default.join(work, `${module2}.swift`);
35096
35378
  const inert = binary2.placeholder !== void 0 || binary2.publicHeaders !== void 0 && binary2.assemblySources === void 0;
35097
35379
  for (; ; ) {
@@ -35104,6 +35386,7 @@ function graphStandin(module2, graphs, values, wasm, binary2, toolchain, work, r
35104
35386
  omit,
35105
35387
  plain,
35106
35388
  unobjc,
35389
+ unconformed,
35107
35390
  trapped,
35108
35391
  inert,
35109
35392
  imports: [...placeholder?.peachImports ?? [], ...imports2],
@@ -35151,7 +35434,7 @@ function graphStandin(module2, graphs, values, wasm, binary2, toolchain, work, r
35151
35434
  files: { [`${module2}.swift`]: source },
35152
35435
  ...imports2.length ? { dependencies: imports2 } : {}
35153
35436
  };
35154
- const before = omit.size + plain.size + unobjc.size + trapped.size;
35437
+ const before = omit.size + plain.size + unobjc.size + trapped.size + unconformed.size;
35155
35438
  const elsewhere = [];
35156
35439
  for (const match of check2.stderr.matchAll(/^(\S+?):(\d+):\d+: error: (.*)$/gm)) {
35157
35440
  const owner = match[1] === file ? owners[Number(match[2]) - 1] : void 0;
@@ -35159,6 +35442,13 @@ function graphStandin(module2, graphs, values, wasm, binary2, toolchain, work, r
35159
35442
  unobjc.add(owner);
35160
35443
  continue;
35161
35444
  }
35445
+ const conformance = /^type '\w+' does not conform to protocol '(\w+)'$/.exec(
35446
+ match[3]
35447
+ )?.[1];
35448
+ if (owner && conformance && objcProtocols.has(conformance)) {
35449
+ unconformed.set(owner, /* @__PURE__ */ new Set([...unconformed.get(owner) ?? [], conformance]));
35450
+ continue;
35451
+ }
35162
35452
  if (owner && swiftPaths.has(owner))
35163
35453
  throw new Error(
35164
35454
  `Swift declaration ${module2}.${owner} does not typecheck: ${match[3]}`
@@ -35174,7 +35464,7 @@ function graphStandin(module2, graphs, values, wasm, binary2, toolchain, work, r
35174
35464
  else if (owner) omit.set(owner, `rejected by swiftc: ${match[3]}`);
35175
35465
  else elsewhere.push(match[3]);
35176
35466
  }
35177
- if (omit.size + plain.size + unobjc.size + trapped.size === before)
35467
+ if (omit.size + plain.size + unobjc.size + trapped.size + unconformed.size === before)
35178
35468
  throw new Error(
35179
35469
  `its generated source does not typecheck: ${elsewhere.slice(0, 3).join("; ") || check2.stderr.trim().slice(0, 400)}`
35180
35470
  );
@@ -35300,7 +35590,16 @@ function splitDeclarators(statement, names) {
35300
35590
  );
35301
35591
  }
35302
35592
  function cStandin(surface, binary2, toolchain, work) {
35303
- const headers = files(surface.headers, (name3) => name3.endsWith(".h"));
35593
+ const everyHeader = files(surface.headers, (name3) => name3.endsWith(".h"));
35594
+ const moduleRoots = moduleMapHeaders(surface.modulemap, everyHeader);
35595
+ const headers = [...moduleRoots];
35596
+ for (let at = 0; at < headers.length; at++)
35597
+ for (const [, local] of import_node_fs70.default.readFileSync(import_node_path67.default.join(surface.headers, headers[at]), "utf8").matchAll(/^\s*#\s*(?:include|import)\s*["<]([^">]+)[">]/gm)) {
35598
+ const file = import_node_path67.default.posix.normalize(
35599
+ import_node_path67.default.posix.join(import_node_path67.default.posix.dirname(headers[at]), local)
35600
+ );
35601
+ if (everyHeader.includes(file) && !headers.includes(file)) headers.push(file);
35602
+ }
35304
35603
  const framework = import_node_path67.default.basename(import_node_path67.default.dirname(surface.modulemap)) === "Modules";
35305
35604
  const headerDirectory = framework ? `${surface.module}.framework/Headers` : ".";
35306
35605
  const texts = new Map(
@@ -35315,9 +35614,7 @@ function cStandin(surface, binary2, toolchain, work) {
35315
35614
  import_node_fs70.default.mkdirSync(import_node_path67.default.dirname(import_node_path67.default.join(include, file)), { recursive: true });
35316
35615
  import_node_fs70.default.writeFileSync(import_node_path67.default.join(include, file), text5);
35317
35616
  }
35318
- const roots = moduleMapHeaders(surface.modulemap, headers).map(
35319
- (file) => import_node_path67.default.posix.join(headerDirectory, file)
35320
- );
35617
+ const roots = moduleRoots.map((file) => import_node_path67.default.posix.join(headerDirectory, file));
35321
35618
  const frameworkMap = `${surface.module}.framework/Modules/module.modulemap`;
35322
35619
  const modulemap = `module ${surface.module} {
35323
35620
  ${roots.map((file) => ` header "${file}"
@@ -36062,7 +36359,7 @@ ${roots.map((file) => ` header "${file}"`).join("\n")}
36062
36359
  return error instanceof Error ? error.message : String(error);
36063
36360
  }
36064
36361
  const found = all.filter(
36065
- (surface) => !provided.has(surface.module) && !(binary2.cxxHeaders === void 0 && cxxOnly(surface))
36362
+ (surface) => !provided.has(surface.module) && (surface.kind === "swift" || surface.kind === "mixed" || surface.kind === "source" || files(surface.headers, (name3) => name3.endsWith(".h")).length > 0) && !(binary2.cxxHeaders === void 0 && cxxOnly(surface))
36066
36363
  );
36067
36364
  if (found.length === 0) {
36068
36365
  import_node_fs70.default.rmSync(work, { recursive: true, force: true });
@@ -1,4 +1,4 @@
1
- /*! peach v0.1.2182 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.2186 | (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;
@@ -119,6 +119,7 @@ function isNativeAppIdentity(value) {
119
119
  if (value.androidPhotoLibraryAddOnly !== void 0 && value.androidPhotoLibraryAddOnly !== true)
120
120
  return false;
121
121
  if (value.googleSignIn !== void 0 && !isRecord(value.googleSignIn)) return false;
122
+ if (value.bundleIcons !== void 0 && !isRecord(value.bundleIcons)) return false;
122
123
  const descriptions = value.permissionUsageDescriptions;
123
124
  if (value.reanimatedStaticFeatureFlags !== void 0 && (!isRecord(value.reanimatedStaticFeatureFlags) || !Object.values(value.reanimatedStaticFeatureFlags).every(
124
125
  (flag) => typeof flag === "boolean"
@@ -1,4 +1,4 @@
1
- /*! peach v0.1.2182 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.2186 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
2
2
 
3
3
  // ../peach-globals/src/bundle-global-footer.ts
4
4
  function findBundleFooter(source, prefix) {
@@ -89,6 +89,7 @@ function isNativeAppIdentity(value) {
89
89
  if (value.androidPhotoLibraryAddOnly !== void 0 && value.androidPhotoLibraryAddOnly !== true)
90
90
  return false;
91
91
  if (value.googleSignIn !== void 0 && !isRecord(value.googleSignIn)) return false;
92
+ if (value.bundleIcons !== void 0 && !isRecord(value.bundleIcons)) return false;
92
93
  const descriptions = value.permissionUsageDescriptions;
93
94
  if (value.reanimatedStaticFeatureFlags !== void 0 && (!isRecord(value.reanimatedStaticFeatureFlags) || !Object.values(value.reanimatedStaticFeatureFlags).every(
94
95
  (flag) => typeof flag === "boolean"
@@ -1,4 +1,4 @@
1
- /*! peach v0.1.2182 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.2186 | (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;