peachsim 0.1.2225 → 0.1.2228

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 (110) hide show
  1. package/cli/bridge-flow-runner.ts +56 -3
  2. package/cli/commands/control.ts +27 -1
  3. package/cli/commands/flow.ts +26 -0
  4. package/cli/commands/package.ts +9 -2
  5. package/cli/drivers/playwright.ts +1 -0
  6. package/cli/drivers/types.ts +3 -0
  7. package/dist-lib/agent-daemon-client.cjs +1 -1
  8. package/dist-lib/agent-events.cjs +1 -1
  9. package/dist-lib/attached-projects.cjs +1 -1
  10. package/dist-lib/auth/shared-session.cjs +1 -1
  11. package/dist-lib/backend-origin.cjs +1 -1
  12. package/dist-lib/beta.cjs +1 -1
  13. package/dist-lib/beta.mjs +1 -1
  14. package/dist-lib/bridge-constants.cjs +1 -1
  15. package/dist-lib/bridge-contract-input.cjs +1 -1
  16. package/dist-lib/bridge-contract-input.mjs +1 -1
  17. package/dist-lib/bridge-contract.cjs +1 -1
  18. package/dist-lib/bridge-contract.mjs +1 -1
  19. package/dist-lib/bundle-channel.cjs +78 -9
  20. package/dist-lib/capture-contract.cjs +1 -1
  21. package/dist-lib/capture-contract.mjs +1 -1
  22. package/dist-lib/cloud-contract.cjs +1 -1
  23. package/dist-lib/cloud-contract.mjs +1 -1
  24. package/dist-lib/cloud-test-args.cjs +1 -1
  25. package/dist-lib/cloud-test-args.mjs +1 -1
  26. package/dist-lib/cloud.cjs +1 -1
  27. package/dist-lib/cloud.mjs +1 -1
  28. package/dist-lib/config.cjs +1 -1
  29. package/dist-lib/config.mjs +1 -1
  30. package/dist-lib/detox/index.cjs +2 -2
  31. package/dist-lib/dev-bundle-resolution.cjs +1 -1
  32. package/dist-lib/expo-swift-bundle.cjs +76 -7
  33. package/dist-lib/expo-swift-metadata.cjs +1 -1
  34. package/dist-lib/expo-swift-metadata.mjs +1 -1
  35. package/dist-lib/home-paths.cjs +1 -1
  36. package/dist-lib/host/bridge-host.cjs +78 -9
  37. package/dist-lib/host/fetch-proxy-handler.cjs +4 -4
  38. package/dist-lib/host/fetch-proxy-overrides.cjs +1 -1
  39. package/dist-lib/host/fetch-proxy-overrides.mjs +1 -1
  40. package/dist-lib/host/replacement-module-handler.cjs +1 -1
  41. package/dist-lib/host/websocket-proxy.cjs +1 -1
  42. package/dist-lib/index.cjs +4 -4
  43. package/dist-lib/jump-to-source-babel.cjs +1 -1
  44. package/dist-lib/jump-to-source-native.cjs +1 -1
  45. package/dist-lib/kotlin-host.cjs +1 -1
  46. package/dist-lib/menu.cjs +1 -1
  47. package/dist-lib/menu.mjs +1 -1
  48. package/dist-lib/metro-fingerprint-registry.cjs +1 -1
  49. package/dist-lib/metro-fingerprint-registry.mjs +1 -1
  50. package/dist-lib/metro-production-bundle.cjs +11 -4
  51. package/dist-lib/metro-production-bundle.mjs +10 -4
  52. package/dist-lib/metro.cjs +4 -4
  53. package/dist-lib/native-app-identity-project.cjs +2 -2
  54. package/dist-lib/native-app-identity-project.mjs +2 -2
  55. package/dist-lib/native-app-identity.cjs +1 -1
  56. package/dist-lib/native-app-identity.mjs +1 -1
  57. package/dist-lib/native-firebase-metadata.cjs +1 -1
  58. package/dist-lib/native-firebase-metadata.mjs +1 -1
  59. package/dist-lib/pdfium-raster.cjs +1 -1
  60. package/dist-lib/pdfium-raster.mjs +1 -1
  61. package/dist-lib/plist.cjs +1 -1
  62. package/dist-lib/plist.mjs +1 -1
  63. package/dist-lib/profiles.cjs +1 -1
  64. package/dist-lib/public-brand.cjs +1 -1
  65. package/dist-lib/public-origins-lib-esm.json +24 -24
  66. package/dist-lib/public-origins-lib.json +54 -53
  67. package/dist-lib/react-native-host-modules.cjs +1 -1
  68. package/dist-lib/react-native-host-modules.mjs +1 -1
  69. package/dist-lib/reap-browser.cjs +1 -1
  70. package/dist-lib/scripts/dev-server-scanner.cjs +1 -1
  71. package/dist-lib/sdk.cjs +1 -1
  72. package/dist-lib/sdk.mjs +1 -1
  73. package/dist-lib/skills.cjs +153 -23
  74. package/dist-lib/swift-compile.cjs +68 -4
  75. package/dist-lib/swift-compile.mjs +67 -4
  76. package/dist-lib/swift-package.cjs +1 -1
  77. package/dist-lib/swift-package.mjs +1 -1
  78. package/dist-lib/swift-submit.cjs +1 -1
  79. package/dist-lib/swift-submit.mjs +1 -1
  80. package/dist-lib/swift-toolchain.cjs +1 -1
  81. package/dist-lib/swift.cjs +1 -1
  82. package/dist-lib/vite-swift.cjs +75 -6
  83. package/dist-lib/vite.cjs +4 -4
  84. package/dist-lib/worklet-executable.cjs +1 -1
  85. package/dist-lib/worklet-executable.mjs +1 -1
  86. package/dist-types/packages/peach-engine/src/bundle-parse-receipt.d.ts +17 -0
  87. package/dist-types/packages/peach-engine/src/engine/canvaskit-api.d.ts +2 -1
  88. package/dist-types/packages/peach-engine/src/engine/font-config.d.ts +2 -2
  89. package/dist-types/packages/peach-engine/src/engine/native-layout.d.ts +1 -0
  90. package/dist-types/packages/peach-engine/src/engine/native-paragraph.d.ts +4 -0
  91. package/dist-types/packages/peach-engine/src/engine/node.d.ts +2 -0
  92. package/dist-types/packages/peach-engine/src/engine/types.d.ts +7 -0
  93. package/dist-types/packages/peach-engine/src/engine/yoga-layout.d.ts +2 -0
  94. package/dist-types/packages/peach-engine/src/metro-fingerprint.d.ts +3 -2
  95. package/dist-types/packages/peach-engine/src/render-worker/compositor-protocol.d.ts +1 -0
  96. package/dist-types/packages/peach-engine/src/render-worker/protocol.d.ts +3 -3
  97. package/dist-types/packages/peach-engine/src/rolldown-bundle-inventory.d.ts +0 -5
  98. package/dist-types/packages/peach-kit/src/capabilities.d.ts +2 -0
  99. package/dist-types/packages/peach-kit/src/internal.d.ts +1 -1
  100. package/dist-types/packages/peach-kit/src/ios-tint.d.ts +2 -0
  101. package/kotlin/sdk.tar.gz +0 -0
  102. package/package.json +1 -1
  103. package/runtime-companion.json +1 -1
  104. package/sdk/ios/System/Library/Frameworks/UIKit.framework/Headers/UIControl.h +0 -26
  105. package/sdk/ios/System/Library/Frameworks/UIKitTypes.framework/Headers/UIKitTypes.h +27 -0
  106. package/sdk/ios/usr/include/ObjectiveC.apinotes +380 -7
  107. package/src/metro-production-bundle.ts +15 -2
  108. package/src/swift-compile.ts +77 -2
  109. package/src/swift-standin-emit.ts +1 -0
  110. package/src/swift-standins.ts +8 -0
@@ -1,4 +1,4 @@
1
- /*! peach v0.1.2225 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.2228 | (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;
@@ -10006,7 +10006,7 @@ function emitSwiftStandin(sourceGraphs, options) {
10006
10006
  "Equatable",
10007
10007
  "CustomStringConvertible",
10008
10008
  "CustomDebugStringConvertible"
10009
- ].includes(name3)) && !(name3 === nsObjectProtocol && externalRoot(id) === nsObject) && !options.unconformed?.get(path74)?.has(name3)
10009
+ ].includes(name3)) && !(name3 === nsObjectProtocol && externalRoot(id) === nsObject) && !options.unconformed?.get(path74)?.has(name3.split(/::|\./).pop()) && !options.unconformed?.get(path74)?.has(name3)
10010
10010
  )
10011
10011
  ].filter((name3, at, all2) => all2.indexOf(name3) === at);
10012
10012
  const parentSymbol = superId.has(id) ? byId.get(superId.get(id)) : void 0;
@@ -19913,6 +19913,20 @@ function swiftModuleInterface(moduleRoot, name3, interfaceRoot) {
19913
19913
  if (declared.size === 0) return null;
19914
19914
  return { declared, header: clangInterfaceHeader((0, import_node_fs50.readFileSync)(built2, "utf8")) };
19915
19915
  }
19916
+ function swiftHeaderWithSuperclassImports(header, interfaceFor) {
19917
+ const superclasses = new Set(
19918
+ [...header.matchAll(/@interface\s+\w+\s*:\s*(\w+)/g)].map((match) => match[1])
19919
+ );
19920
+ return header.replace(/^@import (\w+);$/gm, (statement, name3) => {
19921
+ const dependency = interfaceFor(name3);
19922
+ if (!dependency || ![...swiftInterfaceDeclarations(dependency.header)].some(
19923
+ (name4) => superclasses.has(name4)
19924
+ ))
19925
+ return statement;
19926
+ return `${statement}
19927
+ #import ${JSON.stringify(dependency.file)}`;
19928
+ });
19929
+ }
19916
19930
  function withoutSwiftDeclarations(text6, declared, interfaceImport) {
19917
19931
  const out = [];
19918
19932
  let skipping;
@@ -24273,6 +24287,51 @@ function compileSwiftProjectOnce(input, options) {
24273
24287
  if ((0, import_node_fs50.existsSync)(linked) && (0, import_node_fs50.statSync)(linked).size <= 8)
24274
24288
  (0, import_node_fs50.rmSync)(linked, { force: true });
24275
24289
  report("compiling and linking Swift modules");
24290
+ const frameworkInterfaces = /* @__PURE__ */ new Map();
24291
+ const frameworkInterface = (name3) => {
24292
+ if (frameworkInterfaces.has(name3)) return frameworkInterfaces.get(name3);
24293
+ const source = distribution ? import_node_path47.default.join(frameworkRoot, "modules", `${name3}-Swift.h`) : import_node_path47.default.join(
24294
+ prebuilt.modules,
24295
+ "..",
24296
+ `${name3}.build/include/${name3}-Swift.h`
24297
+ );
24298
+ if (!(0, import_node_fs50.existsSync)(source)) {
24299
+ frameworkInterfaces.set(name3, null);
24300
+ return null;
24301
+ }
24302
+ const headers = import_node_path47.default.join(
24303
+ swiftSdkPaths(frameworkRoot, options.toolchainBin).darwin,
24304
+ `System/Library/Frameworks/${name3}.framework/Headers`
24305
+ );
24306
+ const declared = /* @__PURE__ */ new Set();
24307
+ if ((0, import_node_fs50.existsSync)(headers)) {
24308
+ for (const file of (0, import_node_fs50.readdirSync)(headers, {
24309
+ recursive: true,
24310
+ encoding: "utf8"
24311
+ }))
24312
+ if (file.endsWith(".h"))
24313
+ for (const name4 of swiftInterfaceDeclarations(
24314
+ (0, import_node_fs50.readFileSync)(import_node_path47.default.join(headers, file), "utf8")
24315
+ ))
24316
+ declared.add(name4);
24317
+ }
24318
+ const header = withoutSwiftDeclarations(
24319
+ clangInterfaceHeader((0, import_node_fs50.readFileSync)(source, "utf8")),
24320
+ declared,
24321
+ `#import <${name3}/${name3}.h>`
24322
+ );
24323
+ const value = {
24324
+ file: import_node_path47.default.join(root, ".build/peach-framework-objc", `${name3}-Swift.h`),
24325
+ header
24326
+ };
24327
+ frameworkInterfaces.set(name3, value);
24328
+ writeBuildFile(
24329
+ value.file,
24330
+ ((0, import_node_fs50.existsSync)(import_node_path47.default.join(headers, `${name3}.h`)) ? `#import <${name3}/${name3}.h>
24331
+ ` : "") + swiftHeaderWithSuperclassImports(header, frameworkInterface)
24332
+ );
24333
+ return value;
24334
+ };
24276
24335
  try {
24277
24336
  const headerBuilds = preparation.headerProductTarget ? [
24278
24337
  ...Object.keys(preparation.nativeHeaderDeclarations),
@@ -24300,7 +24359,10 @@ function compileSwiftProjectOnce(input, options) {
24300
24359
  writeBuildFile(
24301
24360
  emitted,
24302
24361
  withoutSwiftDeclarations(
24303
- clangInterfaceHeader((0, import_node_fs50.readFileSync)(original, "utf8")),
24362
+ swiftHeaderWithSuperclassImports(
24363
+ clangInterfaceHeader((0, import_node_fs50.readFileSync)(original, "utf8")),
24364
+ frameworkInterface
24365
+ ),
24304
24366
  new Set(preparation.nativeHeaderDeclarations[producer]),
24305
24367
  `#import <${producer}/${producer}.h>`
24306
24368
  )
@@ -24575,7 +24637,7 @@ var init_swift_compile = __esm({
24575
24637
  ExpoModulesCore: []
24576
24638
  };
24577
24639
  OPTIONAL_FRAMEWORKS = new Set(Object.keys(OPTIONAL_FRAMEWORK_DEPENDENCIES));
24578
- SWIFT_IMPORT = /^\s*(?:@\w+(?:\([^)]*\))?\s+)*import\s+(?:(?:typealias|struct|class|enum|protocol|let|var|func)\s+)?([A-Za-z_][A-Za-z0-9_]*)/;
24640
+ SWIFT_IMPORT = /^\s*(?:@\w+(?:\([^)]*\))?\s+|(?:public|package|internal|fileprivate|private)\s+)*import\s+(?:(?:typealias|struct|class|enum|protocol|let|var|func)\s+)?([A-Za-z_][A-Za-z0-9_]*)/;
24579
24641
  kleeneNot = (value) => value === void 0 ? void 0 : !value;
24580
24642
  kleeneAnd = (left, right) => left === false || right === false ? false : left === true && right === true ? true : void 0;
24581
24643
  kleeneOr = (left, right) => left === true || right === true ? true : left === false && right === false ? false : void 0;
@@ -24672,7 +24734,7 @@ int EXUpdatesApplyBSDiffPatch(const char * _Nonnull oldFilePath,
24672
24734
  REACTOR_FLAG = '"-Xclang-linker", "-mexec-model=reactor",\n';
24673
24735
  MULTI_MANIFEST_VERSION = 68;
24674
24736
  SWIFT_HEADER_PRODUCTS_TARGET = "PeachHeaderProducts";
24675
- compilerSourceDigest = true ? "645b0e6bc4e374f7c82da4d402e0ec9ddedfc49d6e5a74b73284852f1fbd4efc" : swiftCompilerSourceDigest(__sootsim_import_meta_dirname);
24737
+ compilerSourceDigest = true ? "280e858b01b1c1393d3765c8d6ff1b3ce4a1a93d7fb7e3dd2d4d3e5f1d5f1ac2" : swiftCompilerSourceDigest(__sootsim_import_meta_dirname);
24676
24738
  nativeCxxCompilerFlags = ["-fno-cxx-modules"];
24677
24739
  cFlagArray = (flags) => JSON.stringify(withoutGlogModuleMap(flags));
24678
24740
  cxxFlagArray = (flags) => JSON.stringify([...nativeCxxCompilerFlags, ...withoutGlogModuleMap(flags)]);
@@ -28809,7 +28871,7 @@ var init_swift_standin_digest = __esm({
28809
28871
  STANDIN_DIGEST_ENTRYPOINTS = ["swift-standins.ts", "swift-objc-compile.ts"];
28810
28872
  SPECIFIER = /from\s*['"]([^'"]+)['"]|import\s*\(\s*['"]([^'"]+)['"]\s*\)/g;
28811
28873
  standinSourceDigest = (srcDir = __sootsim_import_meta_dirname) => sourceClosureDigest(srcDir, STANDIN_DIGEST_ENTRYPOINTS);
28812
- STANDIN_SOURCE_DIGEST = true ? "7ad2d908aa8d716181e88c4bc1a8e1fb721aa69e8090d0d7ad5851f9b8de0944" : standinSourceDigest();
28874
+ STANDIN_SOURCE_DIGEST = true ? "c157dea0314bab3ba5af4145cc3ba5b8a4d824fa6677166162e49713afe384bb" : standinSourceDigest();
28813
28875
  }
28814
28876
  });
28815
28877
 
@@ -32185,6 +32247,13 @@ function graphStandin(module2, graphs, values, wasm, binary2, toolchain, work, r
32185
32247
  unconformed.set(owner, /* @__PURE__ */ new Set([...unconformed.get(owner) ?? [], conformance]));
32186
32248
  continue;
32187
32249
  }
32250
+ const redundant = /^redundant conformance of '\w+' to protocol '(\w+)'$/.exec(
32251
+ match[3]
32252
+ )?.[1];
32253
+ if (owner && redundant) {
32254
+ unconformed.set(owner, /* @__PURE__ */ new Set([...unconformed.get(owner) ?? [], redundant]));
32255
+ continue;
32256
+ }
32188
32257
  if (owner && swiftPaths.has(owner))
32189
32258
  throw new Error(
32190
32259
  `Swift declaration ${module2}.${owner} does not typecheck: ${match[3]}`
@@ -49372,7 +49441,7 @@ init_swift_native_pin();
49372
49441
  init_xcode_project();
49373
49442
  var EXPO_NATIVE_ENTRY_NAME = "ios";
49374
49443
  function expoNativeCompilerDigestValue() {
49375
- return true ? "5c577dbcb88d6c91ec20e51d76fe0d737f81c200e21973536cf1f8e51d076cbc" : expoNativeCompilerDigest(__sootsim_import_meta_dirname);
49444
+ return true ? "52d8ecb0a37f0f7a5504161cecd2a17d59f6cff85fdc5cac0ae8f4353362ad1a" : expoNativeCompilerDigest(__sootsim_import_meta_dirname);
49376
49445
  }
49377
49446
  var IDENTITY_SOURCE_SKIPS = 1 | 4 | 8 | 16 | 32 | 64 | 128 | 4096;
49378
49447
  function readSources(value) {
@@ -1,4 +1,4 @@
1
- /*! peach v0.1.2225 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.2228 | (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.2225 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.2228 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
2
2
 
3
3
  // ../peach-globals/src/bundle-global-footer.ts
4
4
  function findBundleFooter(source, prefix) {
@@ -1,4 +1,4 @@
1
- /*! peach v0.1.2225 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.2228 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
2
2
  let __sootsim_import_meta_url = '', __sootsim_import_meta_dirname = '', __sootsim_import_meta_filename = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; __sootsim_import_meta_dirname = __dirname; __sootsim_import_meta_filename = __filename; } catch {}
3
3
  "use strict";
4
4
  var __create = Object.create;
@@ -1,4 +1,4 @@
1
- /*! peach v0.1.2225 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.2228 | (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;
@@ -19101,7 +19101,7 @@ function emitSwiftStandin(sourceGraphs, options) {
19101
19101
  "Equatable",
19102
19102
  "CustomStringConvertible",
19103
19103
  "CustomDebugStringConvertible"
19104
- ].includes(name3)) && !(name3 === nsObjectProtocol && externalRoot(id) === nsObject) && !options.unconformed?.get(path112)?.has(name3)
19104
+ ].includes(name3)) && !(name3 === nsObjectProtocol && externalRoot(id) === nsObject) && !options.unconformed?.get(path112)?.has(name3.split(/::|\./).pop()) && !options.unconformed?.get(path112)?.has(name3)
19105
19105
  )
19106
19106
  ].filter((name3, at, all2) => all2.indexOf(name3) === at);
19107
19107
  const parentSymbol = superId.has(id) ? byId.get(superId.get(id)) : void 0;
@@ -29033,6 +29033,20 @@ function swiftModuleInterface(moduleRoot, name3, interfaceRoot) {
29033
29033
  if (declared.size === 0) return null;
29034
29034
  return { declared, header: clangInterfaceHeader((0, import_node_fs53.readFileSync)(built2, "utf8")) };
29035
29035
  }
29036
+ function swiftHeaderWithSuperclassImports(header, interfaceFor) {
29037
+ const superclasses = new Set(
29038
+ [...header.matchAll(/@interface\s+\w+\s*:\s*(\w+)/g)].map((match) => match[1])
29039
+ );
29040
+ return header.replace(/^@import (\w+);$/gm, (statement, name3) => {
29041
+ const dependency = interfaceFor(name3);
29042
+ if (!dependency || ![...swiftInterfaceDeclarations(dependency.header)].some(
29043
+ (name4) => superclasses.has(name4)
29044
+ ))
29045
+ return statement;
29046
+ return `${statement}
29047
+ #import ${JSON.stringify(dependency.file)}`;
29048
+ });
29049
+ }
29036
29050
  function withoutSwiftDeclarations(text6, declared, interfaceImport) {
29037
29051
  const out = [];
29038
29052
  let skipping;
@@ -33393,6 +33407,51 @@ function compileSwiftProjectOnce(input, options) {
33393
33407
  if ((0, import_node_fs53.existsSync)(linked) && (0, import_node_fs53.statSync)(linked).size <= 8)
33394
33408
  (0, import_node_fs53.rmSync)(linked, { force: true });
33395
33409
  report("compiling and linking Swift modules");
33410
+ const frameworkInterfaces = /* @__PURE__ */ new Map();
33411
+ const frameworkInterface = (name3) => {
33412
+ if (frameworkInterfaces.has(name3)) return frameworkInterfaces.get(name3);
33413
+ const source = distribution ? import_node_path51.default.join(frameworkRoot, "modules", `${name3}-Swift.h`) : import_node_path51.default.join(
33414
+ prebuilt.modules,
33415
+ "..",
33416
+ `${name3}.build/include/${name3}-Swift.h`
33417
+ );
33418
+ if (!(0, import_node_fs53.existsSync)(source)) {
33419
+ frameworkInterfaces.set(name3, null);
33420
+ return null;
33421
+ }
33422
+ const headers = import_node_path51.default.join(
33423
+ swiftSdkPaths(frameworkRoot, options.toolchainBin).darwin,
33424
+ `System/Library/Frameworks/${name3}.framework/Headers`
33425
+ );
33426
+ const declared = /* @__PURE__ */ new Set();
33427
+ if ((0, import_node_fs53.existsSync)(headers)) {
33428
+ for (const file of (0, import_node_fs53.readdirSync)(headers, {
33429
+ recursive: true,
33430
+ encoding: "utf8"
33431
+ }))
33432
+ if (file.endsWith(".h"))
33433
+ for (const name4 of swiftInterfaceDeclarations(
33434
+ (0, import_node_fs53.readFileSync)(import_node_path51.default.join(headers, file), "utf8")
33435
+ ))
33436
+ declared.add(name4);
33437
+ }
33438
+ const header = withoutSwiftDeclarations(
33439
+ clangInterfaceHeader((0, import_node_fs53.readFileSync)(source, "utf8")),
33440
+ declared,
33441
+ `#import <${name3}/${name3}.h>`
33442
+ );
33443
+ const value = {
33444
+ file: import_node_path51.default.join(root, ".build/peach-framework-objc", `${name3}-Swift.h`),
33445
+ header
33446
+ };
33447
+ frameworkInterfaces.set(name3, value);
33448
+ writeBuildFile(
33449
+ value.file,
33450
+ ((0, import_node_fs53.existsSync)(import_node_path51.default.join(headers, `${name3}.h`)) ? `#import <${name3}/${name3}.h>
33451
+ ` : "") + swiftHeaderWithSuperclassImports(header, frameworkInterface)
33452
+ );
33453
+ return value;
33454
+ };
33396
33455
  try {
33397
33456
  const headerBuilds = preparation.headerProductTarget ? [
33398
33457
  ...Object.keys(preparation.nativeHeaderDeclarations),
@@ -33420,7 +33479,10 @@ function compileSwiftProjectOnce(input, options) {
33420
33479
  writeBuildFile(
33421
33480
  emitted,
33422
33481
  withoutSwiftDeclarations(
33423
- clangInterfaceHeader((0, import_node_fs53.readFileSync)(original, "utf8")),
33482
+ swiftHeaderWithSuperclassImports(
33483
+ clangInterfaceHeader((0, import_node_fs53.readFileSync)(original, "utf8")),
33484
+ frameworkInterface
33485
+ ),
33424
33486
  new Set(preparation.nativeHeaderDeclarations[producer]),
33425
33487
  `#import <${producer}/${producer}.h>`
33426
33488
  )
@@ -33695,7 +33757,7 @@ var init_swift_compile = __esm({
33695
33757
  ExpoModulesCore: []
33696
33758
  };
33697
33759
  OPTIONAL_FRAMEWORKS = new Set(Object.keys(OPTIONAL_FRAMEWORK_DEPENDENCIES));
33698
- SWIFT_IMPORT = /^\s*(?:@\w+(?:\([^)]*\))?\s+)*import\s+(?:(?:typealias|struct|class|enum|protocol|let|var|func)\s+)?([A-Za-z_][A-Za-z0-9_]*)/;
33760
+ SWIFT_IMPORT = /^\s*(?:@\w+(?:\([^)]*\))?\s+|(?:public|package|internal|fileprivate|private)\s+)*import\s+(?:(?:typealias|struct|class|enum|protocol|let|var|func)\s+)?([A-Za-z_][A-Za-z0-9_]*)/;
33699
33761
  kleeneNot = (value) => value === void 0 ? void 0 : !value;
33700
33762
  kleeneAnd = (left, right) => left === false || right === false ? false : left === true && right === true ? true : void 0;
33701
33763
  kleeneOr = (left, right) => left === true || right === true ? true : left === false && right === false ? false : void 0;
@@ -33792,7 +33854,7 @@ int EXUpdatesApplyBSDiffPatch(const char * _Nonnull oldFilePath,
33792
33854
  REACTOR_FLAG = '"-Xclang-linker", "-mexec-model=reactor",\n';
33793
33855
  MULTI_MANIFEST_VERSION = 68;
33794
33856
  SWIFT_HEADER_PRODUCTS_TARGET = "PeachHeaderProducts";
33795
- compilerSourceDigest = true ? "645b0e6bc4e374f7c82da4d402e0ec9ddedfc49d6e5a74b73284852f1fbd4efc" : swiftCompilerSourceDigest(__sootsim_import_meta_dirname);
33857
+ compilerSourceDigest = true ? "280e858b01b1c1393d3765c8d6ff1b3ce4a1a93d7fb7e3dd2d4d3e5f1d5f1ac2" : swiftCompilerSourceDigest(__sootsim_import_meta_dirname);
33796
33858
  nativeCxxCompilerFlags = ["-fno-cxx-modules"];
33797
33859
  cFlagArray = (flags) => JSON.stringify(withoutGlogModuleMap(flags));
33798
33860
  cxxFlagArray = (flags) => JSON.stringify([...nativeCxxCompilerFlags, ...withoutGlogModuleMap(flags)]);
@@ -38273,7 +38335,7 @@ var init_swift_standin_digest = __esm({
38273
38335
  STANDIN_DIGEST_ENTRYPOINTS = ["swift-standins.ts", "swift-objc-compile.ts"];
38274
38336
  SPECIFIER = /from\s*['"]([^'"]+)['"]|import\s*\(\s*['"]([^'"]+)['"]\s*\)/g;
38275
38337
  standinSourceDigest = (srcDir = __sootsim_import_meta_dirname) => sourceClosureDigest(srcDir, STANDIN_DIGEST_ENTRYPOINTS);
38276
- STANDIN_SOURCE_DIGEST = true ? "7ad2d908aa8d716181e88c4bc1a8e1fb721aa69e8090d0d7ad5851f9b8de0944" : standinSourceDigest();
38338
+ STANDIN_SOURCE_DIGEST = true ? "c157dea0314bab3ba5af4145cc3ba5b8a4d824fa6677166162e49713afe384bb" : standinSourceDigest();
38277
38339
  }
38278
38340
  });
38279
38341
 
@@ -41711,6 +41773,13 @@ function graphStandin(module2, graphs, values, wasm, binary2, toolchain, work, r
41711
41773
  unconformed.set(owner, /* @__PURE__ */ new Set([...unconformed.get(owner) ?? [], conformance]));
41712
41774
  continue;
41713
41775
  }
41776
+ const redundant = /^redundant conformance of '\w+' to protocol '(\w+)'$/.exec(
41777
+ match[3]
41778
+ )?.[1];
41779
+ if (owner && redundant) {
41780
+ unconformed.set(owner, /* @__PURE__ */ new Set([...unconformed.get(owner) ?? [], redundant]));
41781
+ continue;
41782
+ }
41714
41783
  if (owner && swiftPaths.has(owner))
41715
41784
  throw new Error(
41716
41785
  `Swift declaration ${module2}.${owner} does not typecheck: ${match[3]}`
@@ -54523,7 +54592,7 @@ var init_nitro_superset = __esm({
54523
54592
  init_nitroContract();
54524
54593
  init_swift_standin_digest();
54525
54594
  NITRO_SUPERSET_ENTRY_NAME = "superset";
54526
- NITRO_COMPILER_DIGEST = true ? "322b637557bb18964a5466d2011e5e601f78b1eb19934e43f24e9bde93405f49" : nitroCompilerSourceDigest(__sootsim_import_meta_dirname, STANDIN_SOURCE_DIGEST2);
54595
+ NITRO_COMPILER_DIGEST = true ? "02840899304cd9c2c7928baa6f7a13405d0142f29940e8d6fdbf2569fb60b262" : nitroCompilerSourceDigest(__sootsim_import_meta_dirname, STANDIN_SOURCE_DIGEST2);
54527
54596
  nitroSupersetLock = parseLock(nitro_superset_lock_default);
54528
54597
  nitroSupersetKey = (inputs) => nativeEntryKey({ ...inputs, compiler: NITRO_COMPILER_DIGEST });
54529
54598
  published2 = /* @__PURE__ */ new Map();
@@ -54544,7 +54613,7 @@ var init_nitro_superset = __esm({
54544
54613
  var runtime_companion_default;
54545
54614
  var init_runtime_companion = __esm({
54546
54615
  "runtime-companion.json"() {
54547
- runtime_companion_default = { abi: 1, sha256: "ef38a3e8be87c77f4035640cf265efa9aff735577a2de14feb63c8a09afabd42", file: "node/cli-ef38a3e8be87c77f4035640cf265efa9aff735577a2de14feb63c8a09afabd42.cjs" };
54616
+ runtime_companion_default = { abi: 1, sha256: "286145bc3b2ca79a64228c88d8c2e088a592754d61b5855d0388974ee88863fa", file: "node/cli-286145bc3b2ca79a64228c88d8c2e088a592754d61b5855d0388974ee88863fa.cjs" };
54548
54617
  }
54549
54618
  });
54550
54619
 
@@ -64170,7 +64239,7 @@ init_swift_native_pin();
64170
64239
  init_xcode_project();
64171
64240
  var EXPO_NATIVE_ENTRY_NAME = "ios";
64172
64241
  function expoNativeCompilerDigestValue() {
64173
- return true ? "5c577dbcb88d6c91ec20e51d76fe0d737f81c200e21973536cf1f8e51d076cbc" : expoNativeCompilerDigest(__sootsim_import_meta_dirname);
64242
+ return true ? "52d8ecb0a37f0f7a5504161cecd2a17d59f6cff85fdc5cac0ae8f4353362ad1a" : expoNativeCompilerDigest(__sootsim_import_meta_dirname);
64174
64243
  }
64175
64244
  var IDENTITY_SOURCE_SKIPS = 1 | 4 | 8 | 16 | 32 | 64 | 128 | 4096;
64176
64245
  function readSources(value) {
@@ -1,4 +1,4 @@
1
- /*! peach v0.1.2225 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.2228 | (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;
@@ -1501,7 +1501,7 @@ function readIosSdkTree(root) {
1501
1501
 
1502
1502
  // src/swift-standin-digest.ts
1503
1503
  init_define_SWIFT_COVERAGE_SOURCE_DIGESTS();
1504
- var STANDIN_SOURCE_DIGEST = true ? "7ad2d908aa8d716181e88c4bc1a8e1fb721aa69e8090d0d7ad5851f9b8de0944" : standinSourceDigest();
1504
+ var STANDIN_SOURCE_DIGEST = true ? "c157dea0314bab3ba5af4145cc3ba5b8a4d824fa6677166162e49713afe384bb" : standinSourceDigest();
1505
1505
 
1506
1506
  // src/expo-native-workspace.ts
1507
1507
  init_define_SWIFT_COVERAGE_SOURCE_DIGESTS();
@@ -5037,7 +5037,7 @@ var FOUNDATION_IMPLICIT_MODULES = [
5037
5037
  var FOUNDATION_IMPLICIT_FLAGS = FOUNDATION_IMPLICIT_MODULES.map(
5038
5038
  (module2) => `, "-Xfrontend", "-import-module", "-Xfrontend", "${module2}"`
5039
5039
  ).join("");
5040
- var compilerSourceDigest = true ? "645b0e6bc4e374f7c82da4d402e0ec9ddedfc49d6e5a74b73284852f1fbd4efc" : swiftCompilerSourceDigest2(__sootsim_import_meta_dirname);
5040
+ var compilerSourceDigest = true ? "280e858b01b1c1393d3765c8d6ff1b3ce4a1a93d7fb7e3dd2d4d3e5f1d5f1ac2" : swiftCompilerSourceDigest2(__sootsim_import_meta_dirname);
5041
5041
  var CORE_FOUNDATION_HANDLE_IMPORTS = [
5042
5042
  "CFAllocator",
5043
5043
  "CFArray",
@@ -9543,7 +9543,7 @@ var import_node_module = require("node:module");
9543
9543
  var import_node_path11 = require("node:path");
9544
9544
 
9545
9545
  // runtime-companion.json
9546
- var runtime_companion_default = { abi: 1, sha256: "ef38a3e8be87c77f4035640cf265efa9aff735577a2de14feb63c8a09afabd42", file: "node/cli-ef38a3e8be87c77f4035640cf265efa9aff735577a2de14feb63c8a09afabd42.cjs" };
9546
+ var runtime_companion_default = { abi: 1, sha256: "286145bc3b2ca79a64228c88d8c2e088a592754d61b5855d0388974ee88863fa", file: "node/cli-286145bc3b2ca79a64228c88d8c2e088a592754d61b5855d0388974ee88863fa.cjs" };
9547
9547
 
9548
9548
  // src/cli-runtime.ts
9549
9549
  var CLI_COMPANION_ABI = 1;
@@ -1,4 +1,4 @@
1
- /*! peach v0.1.2225 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.2228 | (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.2225 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.2228 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
2
2
 
3
3
  // src/host/fetch-proxy-overrides.ts
4
4
  var FETCH_PROXY_NATIVE_USER_AGENT_HEADER = "x-sootsim-native-user-agent";
@@ -1,4 +1,4 @@
1
- /*! peach v0.1.2225 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.2228 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
2
2
  let __sootsim_import_meta_url = '', __sootsim_import_meta_dirname = '', __sootsim_import_meta_filename = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; __sootsim_import_meta_dirname = __dirname; __sootsim_import_meta_filename = __filename; } catch {}
3
3
  "use strict";
4
4
  var __create = Object.create;
@@ -1,4 +1,4 @@
1
- /*! peach v0.1.2225 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.2228 | (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.2225 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.2228 | (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;
@@ -1125,7 +1125,7 @@ var init_src = __esm({
1125
1125
  var runtime_companion_default;
1126
1126
  var init_runtime_companion = __esm({
1127
1127
  "runtime-companion.json"() {
1128
- runtime_companion_default = { abi: 1, sha256: "ef38a3e8be87c77f4035640cf265efa9aff735577a2de14feb63c8a09afabd42", file: "node/cli-ef38a3e8be87c77f4035640cf265efa9aff735577a2de14feb63c8a09afabd42.cjs" };
1128
+ runtime_companion_default = { abi: 1, sha256: "286145bc3b2ca79a64228c88d8c2e088a592754d61b5855d0388974ee88863fa", file: "node/cli-286145bc3b2ca79a64228c88d8c2e088a592754d61b5855d0388974ee88863fa.cjs" };
1129
1129
  }
1130
1130
  });
1131
1131
 
@@ -13519,7 +13519,7 @@ function readIosSdkTree(root) {
13519
13519
 
13520
13520
  // src/swift-standin-digest.ts
13521
13521
  init_define_SWIFT_COVERAGE_SOURCE_DIGESTS();
13522
- var STANDIN_SOURCE_DIGEST = true ? "7ad2d908aa8d716181e88c4bc1a8e1fb721aa69e8090d0d7ad5851f9b8de0944" : standinSourceDigest();
13522
+ var STANDIN_SOURCE_DIGEST = true ? "c157dea0314bab3ba5af4145cc3ba5b8a4d824fa6677166162e49713afe384bb" : standinSourceDigest();
13523
13523
 
13524
13524
  // src/expo-native-workspace.ts
13525
13525
  init_define_SWIFT_COVERAGE_SOURCE_DIGESTS();
@@ -16053,7 +16053,7 @@ var FOUNDATION_IMPLICIT_MODULES = [
16053
16053
  var FOUNDATION_IMPLICIT_FLAGS = FOUNDATION_IMPLICIT_MODULES.map(
16054
16054
  (module2) => `, "-Xfrontend", "-import-module", "-Xfrontend", "${module2}"`
16055
16055
  ).join("");
16056
- var compilerSourceDigest = true ? "645b0e6bc4e374f7c82da4d402e0ec9ddedfc49d6e5a74b73284852f1fbd4efc" : swiftCompilerSourceDigest2(__sootsim_import_meta_dirname);
16056
+ var compilerSourceDigest = true ? "280e858b01b1c1393d3765c8d6ff1b3ce4a1a93d7fb7e3dd2d4d3e5f1d5f1ac2" : swiftCompilerSourceDigest2(__sootsim_import_meta_dirname);
16057
16057
  var CORE_FOUNDATION_HANDLE_IMPORTS = [
16058
16058
  "CFAllocator",
16059
16059
  "CFArray",
@@ -1,4 +1,4 @@
1
- /*! peach v0.1.2225 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.2228 | (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.2225 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.2228 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
2
2
  let __sootsim_import_meta_url = '', __sootsim_import_meta_dirname = '', __sootsim_import_meta_filename = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; __sootsim_import_meta_dirname = __dirname; __sootsim_import_meta_filename = __filename; } catch {}
3
3
  "use strict";
4
4
  var __create = Object.create;
@@ -1,4 +1,4 @@
1
- /*! peach v0.1.2225 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.2228 | (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;
package/dist-lib/menu.cjs CHANGED
@@ -1,4 +1,4 @@
1
- /*! peach v0.1.2225 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.2228 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
2
2
  let __sootsim_import_meta_url = '', __sootsim_import_meta_dirname = '', __sootsim_import_meta_filename = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; __sootsim_import_meta_dirname = __dirname; __sootsim_import_meta_filename = __filename; } catch {}
3
3
  "use strict";
4
4
  var __defProp = Object.defineProperty;
package/dist-lib/menu.mjs CHANGED
@@ -1,4 +1,4 @@
1
- /*! peach v0.1.2225 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.2228 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
2
2
 
3
3
  // src/public-brand.ts
4
4
  var name = "Peach";
@@ -1,4 +1,4 @@
1
- /*! peach v0.1.2225 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.2228 | (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.2225 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.2228 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
2
2
 
3
3
  // src/is-record.ts
4
4
  function isRecord(value) {
@@ -1,4 +1,4 @@
1
- /*! peach v0.1.2225 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.2228 | (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;
@@ -106,6 +106,7 @@ var metro_production_bundle_exports = {};
106
106
  __export(metro_production_bundle_exports, {
107
107
  RNX_METRO_MODULE_IDENTITY_VERSION: () => RNX_METRO_MODULE_IDENTITY_VERSION,
108
108
  appendRNXMetroModuleIdentityFooter: () => appendRNXMetroModuleIdentityFooter,
109
+ checkRNXMetroModulePaths: () => checkRNXMetroModulePaths,
109
110
  createRNXMetroModuleIdentityFooter: () => createRNXMetroModuleIdentityFooter,
110
111
  detachRNXMetroSourceMapUrl: () => detachRNXMetroSourceMapUrl,
111
112
  detectBundleModeFromText: () => detectBundleModeFromText,
@@ -323,7 +324,9 @@ async function readRNXMetroBundleLayout(source) {
323
324
  };
324
325
  }
325
326
  async function validateRNXMetroModulePaths(source, modulePaths) {
326
- const layout = await readRNXMetroBundleLayout(source);
327
+ checkRNXMetroModulePaths(await readRNXMetroBundleLayout(source), modulePaths);
328
+ }
329
+ function checkRNXMetroModulePaths(layout, modulePaths) {
327
330
  if (layout.moduleIdFailures > 0) {
328
331
  throw new Error(
329
332
  `Metro module identity could not read ${layout.moduleIdFailures} module IDs`
@@ -356,8 +359,11 @@ async function validateRNXMetroModulePaths(source, modulePaths) {
356
359
  }
357
360
  }
358
361
  }
359
- async function validateRNXMetroModuleIdentity(identity) {
360
- await validateRNXMetroModulePaths(identity.source, identity.modulePaths);
362
+ async function validateRNXMetroModuleIdentity(identity, layout) {
363
+ checkRNXMetroModulePaths(
364
+ layout ?? await readRNXMetroBundleLayout(identity.source),
365
+ identity.modulePaths
366
+ );
361
367
  for (const moduleId of Object.keys(identity.logicalSpecifiers)) {
362
368
  if (!Object.prototype.hasOwnProperty.call(identity.modulePaths, moduleId)) {
363
369
  throw new Error(
@@ -393,6 +399,7 @@ async function detectBundleModeFromText(bundleText) {
393
399
  0 && (module.exports = {
394
400
  RNX_METRO_MODULE_IDENTITY_VERSION,
395
401
  appendRNXMetroModuleIdentityFooter,
402
+ checkRNXMetroModulePaths,
396
403
  createRNXMetroModuleIdentityFooter,
397
404
  detachRNXMetroSourceMapUrl,
398
405
  detectBundleModeFromText,
@@ -1,4 +1,4 @@
1
- /*! peach v0.1.2225 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.2228 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
2
2
  var __defProp = Object.defineProperty;
3
3
  var __getOwnPropNames = Object.getOwnPropertyNames;
4
4
  var __esm = (fn, res) => function __init() {
@@ -285,7 +285,9 @@ async function readRNXMetroBundleLayout(source) {
285
285
  };
286
286
  }
287
287
  async function validateRNXMetroModulePaths(source, modulePaths) {
288
- const layout = await readRNXMetroBundleLayout(source);
288
+ checkRNXMetroModulePaths(await readRNXMetroBundleLayout(source), modulePaths);
289
+ }
290
+ function checkRNXMetroModulePaths(layout, modulePaths) {
289
291
  if (layout.moduleIdFailures > 0) {
290
292
  throw new Error(
291
293
  `Metro module identity could not read ${layout.moduleIdFailures} module IDs`
@@ -318,8 +320,11 @@ async function validateRNXMetroModulePaths(source, modulePaths) {
318
320
  }
319
321
  }
320
322
  }
321
- async function validateRNXMetroModuleIdentity(identity) {
322
- await validateRNXMetroModulePaths(identity.source, identity.modulePaths);
323
+ async function validateRNXMetroModuleIdentity(identity, layout) {
324
+ checkRNXMetroModulePaths(
325
+ layout ?? await readRNXMetroBundleLayout(identity.source),
326
+ identity.modulePaths
327
+ );
323
328
  for (const moduleId of Object.keys(identity.logicalSpecifiers)) {
324
329
  if (!Object.prototype.hasOwnProperty.call(identity.modulePaths, moduleId)) {
325
330
  throw new Error(
@@ -354,6 +359,7 @@ async function detectBundleModeFromText(bundleText) {
354
359
  export {
355
360
  RNX_METRO_MODULE_IDENTITY_VERSION,
356
361
  appendRNXMetroModuleIdentityFooter,
362
+ checkRNXMetroModulePaths,
357
363
  createRNXMetroModuleIdentityFooter,
358
364
  detachRNXMetroSourceMapUrl,
359
365
  detectBundleModeFromText,
@@ -1,4 +1,4 @@
1
- /*! peach v0.1.2225 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.2228 | (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;
@@ -6740,7 +6740,7 @@ var init_node_http_fetch = __esm({
6740
6740
  var runtime_companion_default;
6741
6741
  var init_runtime_companion = __esm({
6742
6742
  "runtime-companion.json"() {
6743
- runtime_companion_default = { abi: 1, sha256: "ef38a3e8be87c77f4035640cf265efa9aff735577a2de14feb63c8a09afabd42", file: "node/cli-ef38a3e8be87c77f4035640cf265efa9aff735577a2de14feb63c8a09afabd42.cjs" };
6743
+ runtime_companion_default = { abi: 1, sha256: "286145bc3b2ca79a64228c88d8c2e088a592754d61b5855d0388974ee88863fa", file: "node/cli-286145bc3b2ca79a64228c88d8c2e088a592754d61b5855d0388974ee88863fa.cjs" };
6744
6744
  }
6745
6745
  });
6746
6746
 
@@ -8840,7 +8840,7 @@ function readIosSdkTree(root) {
8840
8840
 
8841
8841
  // src/swift-standin-digest.ts
8842
8842
  init_define_SWIFT_COVERAGE_SOURCE_DIGESTS();
8843
- var STANDIN_SOURCE_DIGEST = true ? "7ad2d908aa8d716181e88c4bc1a8e1fb721aa69e8090d0d7ad5851f9b8de0944" : standinSourceDigest();
8843
+ var STANDIN_SOURCE_DIGEST = true ? "c157dea0314bab3ba5af4145cc3ba5b8a4d824fa6677166162e49713afe384bb" : standinSourceDigest();
8844
8844
 
8845
8845
  // src/expo-native-workspace.ts
8846
8846
  init_define_SWIFT_COVERAGE_SOURCE_DIGESTS();
@@ -11316,7 +11316,7 @@ var FOUNDATION_IMPLICIT_MODULES = [
11316
11316
  var FOUNDATION_IMPLICIT_FLAGS = FOUNDATION_IMPLICIT_MODULES.map(
11317
11317
  (module2) => `, "-Xfrontend", "-import-module", "-Xfrontend", "${module2}"`
11318
11318
  ).join("");
11319
- var compilerSourceDigest = true ? "645b0e6bc4e374f7c82da4d402e0ec9ddedfc49d6e5a74b73284852f1fbd4efc" : swiftCompilerSourceDigest2(__sootsim_import_meta_dirname);
11319
+ var compilerSourceDigest = true ? "280e858b01b1c1393d3765c8d6ff1b3ce4a1a93d7fb7e3dd2d4d3e5f1d5f1ac2" : swiftCompilerSourceDigest2(__sootsim_import_meta_dirname);
11320
11320
  var CORE_FOUNDATION_HANDLE_IMPORTS = [
11321
11321
  "CFAllocator",
11322
11322
  "CFArray",
@@ -1,4 +1,4 @@
1
- /*! peach v0.1.2225 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.2228 | (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;
@@ -3682,7 +3682,7 @@ var FOUNDATION_IMPLICIT_MODULES = [
3682
3682
  var FOUNDATION_IMPLICIT_FLAGS = FOUNDATION_IMPLICIT_MODULES.map(
3683
3683
  (module2) => `, "-Xfrontend", "-import-module", "-Xfrontend", "${module2}"`
3684
3684
  ).join("");
3685
- var compilerSourceDigest = true ? "645b0e6bc4e374f7c82da4d402e0ec9ddedfc49d6e5a74b73284852f1fbd4efc" : swiftCompilerSourceDigest(__sootsim_import_meta_dirname);
3685
+ var compilerSourceDigest = true ? "280e858b01b1c1393d3765c8d6ff1b3ce4a1a93d7fb7e3dd2d4d3e5f1d5f1ac2" : swiftCompilerSourceDigest(__sootsim_import_meta_dirname);
3686
3686
  var CORE_FOUNDATION_HANDLE_IMPORTS = [
3687
3687
  "CFAllocator",
3688
3688
  "CFArray",