peachsim 0.1.2199 → 0.1.2201

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 (107) hide show
  1. package/cli/commands/inspect/settling.ts +20 -20
  2. package/cli/outbound-endpoints.ts +12 -0
  3. package/dist-lib/agent-daemon-client.cjs +1 -1
  4. package/dist-lib/agent-events.cjs +1 -1
  5. package/dist-lib/attached-projects.cjs +1 -1
  6. package/dist-lib/auth/shared-session.cjs +1 -1
  7. package/dist-lib/backend-origin.cjs +1 -1
  8. package/dist-lib/beta.cjs +1 -1
  9. package/dist-lib/beta.mjs +1 -1
  10. package/dist-lib/bridge-constants.cjs +1 -1
  11. package/dist-lib/bridge-contract-input.cjs +1 -1
  12. package/dist-lib/bridge-contract-input.mjs +1 -1
  13. package/dist-lib/bridge-contract.cjs +1 -1
  14. package/dist-lib/bridge-contract.mjs +1 -1
  15. package/dist-lib/bundle-channel.cjs +1423 -1118
  16. package/dist-lib/capture-contract.cjs +1 -1
  17. package/dist-lib/capture-contract.mjs +1 -1
  18. package/dist-lib/cloud-contract.cjs +1 -1
  19. package/dist-lib/cloud-contract.mjs +1 -1
  20. package/dist-lib/cloud-test-args.cjs +1 -1
  21. package/dist-lib/cloud-test-args.mjs +1 -1
  22. package/dist-lib/cloud.cjs +1 -1
  23. package/dist-lib/cloud.mjs +1 -1
  24. package/dist-lib/config.cjs +1 -1
  25. package/dist-lib/config.mjs +1 -1
  26. package/dist-lib/detox/index.cjs +22 -22
  27. package/dist-lib/dev-bundle-resolution.cjs +1 -1
  28. package/dist-lib/expo-swift-bundle.cjs +45945 -40026
  29. package/dist-lib/expo-swift-metadata.cjs +1 -1
  30. package/dist-lib/expo-swift-metadata.mjs +1 -1
  31. package/dist-lib/home-paths.cjs +1 -1
  32. package/dist-lib/host/bridge-host.cjs +50879 -49774
  33. package/dist-lib/host/fetch-proxy-handler.cjs +16 -4
  34. package/dist-lib/host/fetch-proxy-overrides.cjs +1 -1
  35. package/dist-lib/host/fetch-proxy-overrides.mjs +1 -1
  36. package/dist-lib/host/replacement-module-handler.cjs +1 -1
  37. package/dist-lib/host/websocket-proxy.cjs +1 -1
  38. package/dist-lib/index.cjs +36 -24
  39. package/dist-lib/jump-to-source-babel.cjs +1 -1
  40. package/dist-lib/jump-to-source-native.cjs +1 -1
  41. package/dist-lib/kotlin-host.cjs +100 -10
  42. package/dist-lib/menu.cjs +1 -1
  43. package/dist-lib/menu.mjs +1 -1
  44. package/dist-lib/metro-fingerprint-registry.cjs +1 -1
  45. package/dist-lib/metro-fingerprint-registry.mjs +1 -1
  46. package/dist-lib/metro-production-bundle.cjs +1 -1
  47. package/dist-lib/metro-production-bundle.mjs +1 -1
  48. package/dist-lib/metro.cjs +16 -4
  49. package/dist-lib/native-app-identity-project.cjs +14 -2
  50. package/dist-lib/native-app-identity-project.mjs +14 -2
  51. package/dist-lib/native-app-identity.cjs +1 -1
  52. package/dist-lib/native-app-identity.mjs +1 -1
  53. package/dist-lib/native-firebase-metadata.cjs +1 -1
  54. package/dist-lib/native-firebase-metadata.mjs +1 -1
  55. package/dist-lib/pdfium-raster.cjs +1 -1
  56. package/dist-lib/pdfium-raster.mjs +1 -1
  57. package/dist-lib/plist.cjs +1 -1
  58. package/dist-lib/plist.mjs +1 -1
  59. package/dist-lib/profiles.cjs +1 -1
  60. package/dist-lib/public-brand.cjs +1 -1
  61. package/dist-lib/public-origins-lib-esm.json +24 -24
  62. package/dist-lib/public-origins-lib.json +302 -289
  63. package/dist-lib/react-native-host-modules.cjs +1 -1
  64. package/dist-lib/react-native-host-modules.mjs +1 -1
  65. package/dist-lib/reap-browser.cjs +1 -1
  66. package/dist-lib/scripts/dev-server-scanner.cjs +1 -1
  67. package/dist-lib/sdk.cjs +21 -21
  68. package/dist-lib/sdk.mjs +21 -21
  69. package/dist-lib/skills.cjs +3520 -2920
  70. package/dist-lib/swift-compile.cjs +34 -3
  71. package/dist-lib/swift-compile.mjs +34 -3
  72. package/dist-lib/swift-package.cjs +1 -1
  73. package/dist-lib/swift-package.mjs +1 -1
  74. package/dist-lib/swift-submit.cjs +1 -1
  75. package/dist-lib/swift-submit.mjs +1 -1
  76. package/dist-lib/swift-toolchain.cjs +1 -1
  77. package/dist-lib/swift.cjs +1 -1
  78. package/dist-lib/vite-swift.cjs +42 -8
  79. package/dist-lib/vite.cjs +16 -4
  80. package/dist-lib/worklet-executable.cjs +1 -1
  81. package/dist-lib/worklet-executable.mjs +1 -1
  82. package/dist-types/packages/peach-engine/src/engine/scene-table.d.ts +2 -0
  83. package/dist-types/packages/peach-engine/src/engine/yoga-layout.d.ts +2 -1
  84. package/dist-types/packages/peach-engine/src/render-worker/app-prefetch-contract.d.ts +5 -0
  85. package/dist-types/packages/peach-engine/src/render-worker/protocol.d.ts +2 -0
  86. package/dist-types/packages/peach-engine/src/render-worker/tree-sync-port.d.ts +5 -0
  87. package/kotlin/sdk.tar.gz +0 -0
  88. package/package.json +1 -1
  89. package/runtime-companion.json +1 -1
  90. package/sdk/ios/System/Library/Frameworks/QuartzCore.framework/Headers/CAValueFunction.h +1 -1
  91. package/sdk/ios/System/Library/Frameworks/QuartzCore.framework/Modules/module.modulemap +1 -0
  92. package/sdk/ios/System/Library/Frameworks/UIKitText.framework/Headers/UIKitText.apinotes +14 -0
  93. package/src/android-layout-ids.ts +50 -0
  94. package/src/android-view-classes.ts +41 -0
  95. package/src/expo-swift-host.ts +6 -1
  96. package/src/java-module-abi.ts +2 -0
  97. package/src/javaAbiContract.ts +2 -0
  98. package/src/kotlin-app.ts +33 -7
  99. package/src/kotlin-host.ts +83 -6
  100. package/src/kotlin-maven-sources.ts +248 -0
  101. package/src/native-prebuilt.ts +3 -3
  102. package/src/react-native-core-build.ts +176 -0
  103. package/src/react-native-core-digest.ts +1 -1
  104. package/src/react-native-core.ts +24 -7
  105. package/src/swift-standin-emit.ts +9 -1
  106. package/src/swift-wasm-prune.ts +41 -3
  107. package/src/turbo-compile.ts +6 -4
@@ -1,4 +1,4 @@
1
- /*! peach v0.1.2199 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.2201 | (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;
@@ -1498,7 +1498,7 @@ function readIosSdkTree(root) {
1498
1498
 
1499
1499
  // src/swift-standin-digest.ts
1500
1500
  init_define_SWIFT_COVERAGE_SOURCE_DIGESTS();
1501
- var STANDIN_SOURCE_DIGEST = true ? "a996006bade8d371dad7a05919cb0812bb1e5e08ae40cbb5af2802d3df188b2d" : standinSourceDigest();
1501
+ var STANDIN_SOURCE_DIGEST = true ? "fc51a249ab5b00720eab27b7d9e4945936878069347a86180f9c5efd7f063012" : standinSourceDigest();
1502
1502
 
1503
1503
  // src/expo-native-workspace.ts
1504
1504
  init_define_SWIFT_COVERAGE_SOURCE_DIGESTS();
@@ -4779,6 +4779,18 @@ var OMIT_SDK_LIB_FLAGS = /* @__PURE__ */ new Set([
4779
4779
  "-lswiftCore",
4780
4780
  "-lswift_Concurrency"
4781
4781
  ]);
4782
+ var SWIFTUI_WRAPPER_HOST_PROTOCOLS = new Set(
4783
+ [
4784
+ "View",
4785
+ "ViewModifier",
4786
+ "App",
4787
+ "Scene",
4788
+ "Gesture",
4789
+ "ToolbarContent",
4790
+ "Commands",
4791
+ "DynamicProperty"
4792
+ ].map((name) => `$s7SwiftUI${name.length}${name}Mp`)
4793
+ );
4782
4794
 
4783
4795
  // src/swift-guest-link.ts
4784
4796
  init_define_SWIFT_COVERAGE_SOURCE_DIGESTS();
@@ -4977,7 +4989,7 @@ var FOUNDATION_IMPLICIT_MODULES = [
4977
4989
  var FOUNDATION_IMPLICIT_FLAGS = FOUNDATION_IMPLICIT_MODULES.map(
4978
4990
  (module2) => `, "-Xfrontend", "-import-module", "-Xfrontend", "${module2}"`
4979
4991
  ).join("");
4980
- var compilerSourceDigest = true ? "da64a99bc639b1dce8024a42c5f5308e09e564e6e119be33e33a85c79e245197" : swiftCompilerSourceDigest2(__sootsim_import_meta_dirname);
4992
+ var compilerSourceDigest = true ? "8004dbc307143f91fede23d329c01a8171056ea767fd3755b8ac7a39d59e25b3" : swiftCompilerSourceDigest2(__sootsim_import_meta_dirname);
4981
4993
  var CORE_FOUNDATION_HANDLE_IMPORTS = [
4982
4994
  "CFAllocator",
4983
4995
  "CFArray",
@@ -9471,7 +9483,7 @@ var import_node_module = require("node:module");
9471
9483
  var import_node_path11 = require("node:path");
9472
9484
 
9473
9485
  // runtime-companion.json
9474
- var runtime_companion_default = { abi: 1, sha256: "38d58f4713cbf87e8d4cde206f6a1fb9bf3898b6b885f45db610ad1fccde083a", file: "node/cli-38d58f4713cbf87e8d4cde206f6a1fb9bf3898b6b885f45db610ad1fccde083a.cjs" };
9486
+ var runtime_companion_default = { abi: 1, sha256: "5aec79ac0fcea933862e7e373e0d167401e0d891c835d195b7f48039c87add60", file: "node/cli-5aec79ac0fcea933862e7e373e0d167401e0d891c835d195b7f48039c87add60.cjs" };
9475
9487
 
9476
9488
  // src/cli-runtime.ts
9477
9489
  var CLI_COMPANION_ABI = 1;
@@ -1,4 +1,4 @@
1
- /*! peach v0.1.2199 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.2201 | (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.2199 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.2201 | (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.2199 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.2201 | (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.2199 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.2201 | (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.2199 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.2201 | (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;
@@ -7073,7 +7073,7 @@ init_define_SWIFT_COVERAGE_SOURCE_DIGESTS();
7073
7073
  init_version();
7074
7074
 
7075
7075
  // runtime-companion.json
7076
- var runtime_companion_default = { abi: 1, sha256: "38d58f4713cbf87e8d4cde206f6a1fb9bf3898b6b885f45db610ad1fccde083a", file: "node/cli-38d58f4713cbf87e8d4cde206f6a1fb9bf3898b6b885f45db610ad1fccde083a.cjs" };
7076
+ var runtime_companion_default = { abi: 1, sha256: "5aec79ac0fcea933862e7e373e0d167401e0d891c835d195b7f48039c87add60", file: "node/cli-5aec79ac0fcea933862e7e373e0d167401e0d891c835d195b7f48039c87add60.cjs" };
7077
7077
 
7078
7078
  // src/answeredNativePackages.ts
7079
7079
  init_define_SWIFT_COVERAGE_SOURCE_DIGESTS();
@@ -10118,7 +10118,7 @@ function renderActivityIdleScript({
10118
10118
  const requiredStillMs = ${Math.max(1, Math.round(requiredStillMs))}
10119
10119
  let deadline = start + budgetMs
10120
10120
  // with no tenant running, nothing an app draws can move.
10121
- const host = window.__sootsimRenderHost ?? null
10121
+ const host = globalThis.__sootsimRenderHost ?? null
10122
10122
  // a runtime that predates the animating flag reports render work as busy.
10123
10123
  const moving = (activity) => activity.animating ?? activity.busy
10124
10124
  const initial = host ? host.getRenderActivity() : null
@@ -10146,10 +10146,10 @@ function renderActivityIdleScript({
10146
10146
  // budget proves the new screen. a loaded host runs a push past a tap's
10147
10147
  // budget, so the transition carries its own timeout.
10148
10148
  let transitionEndedAt = null
10149
- let transitionPending = budgetMs > 120 && typeof window.__sootsimTest?.waitForScreenTransitions === 'function'
10149
+ let transitionPending = budgetMs > 120 && typeof globalThis.__sootsimTest?.waitForScreenTransitions === 'function'
10150
10150
  if (transitionPending) {
10151
10151
  Promise.resolve()
10152
- .then(() => window.__sootsimTest.waitForScreenTransitions({
10152
+ .then(() => globalThis.__sootsimTest.waitForScreenTransitions({
10153
10153
  timeoutMs: ${Math.max(0, Math.round(transitionTimeoutMs))},
10154
10154
  settleMs: 64,
10155
10155
  startWindowMs: ${Math.max(0, Math.round(transitionStartWindowMs))},
@@ -10235,12 +10235,12 @@ async function waitForSootsimIdle({
10235
10235
  transitionTimeoutMs
10236
10236
  }) : `(async () => {
10237
10237
  const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms))
10238
- // tests inject a virtual clock as window.__sootsimIdleClock ({ now, sleep })
10238
+ // tests inject a virtual clock as globalThis.__sootsimIdleClock ({ now, sleep })
10239
10239
  // so the stillness window is proven in virtual time: real-timer polls under
10240
10240
  // load stretch past a tight budget on a still screen. the busy guards below
10241
10241
  // stay on the real setTimeout: virtual time advances only on poll sleeps,
10242
10242
  // never on a guard that loses its race to an instant read.
10243
- const idleClock = window.__sootsimIdleClock
10243
+ const idleClock = globalThis.__sootsimIdleClock
10244
10244
  const hasIdleClock =
10245
10245
  idleClock && typeof idleClock.now === 'function' && typeof idleClock.sleep === 'function'
10246
10246
  const clockNow = hasIdleClock ? () => idleClock.now() : () => Date.now()
@@ -10264,7 +10264,7 @@ async function waitForSootsimIdle({
10264
10264
  const fullGeometry = ${!maestro && maxMs >= 1e3 ? "true" : "false"}
10265
10265
  const requiredStillMs = paintStill ? 0 : ${Math.max(1, Math.round(stablePolls)) * Math.max(1, Math.round(pollMs))}
10266
10266
  const minimumStablePolls = paintStill ? 1 : ${Math.min(2, Math.max(1, Math.round(stablePolls)))}
10267
- const composite = paintStill ? window.SootSim?.bridges?.liveComposite : null
10267
+ const composite = paintStill ? globalThis.SootSim?.bridges?.liveComposite : null
10268
10268
  if (paintStill && !composite) {
10269
10269
  return { settled: false, elapsed: clockNow() - start, blockedBy: 'screen pixels unavailable' }
10270
10270
  }
@@ -10278,7 +10278,7 @@ async function waitForSootsimIdle({
10278
10278
  // it outlives this wait: a revision still current when a later wait
10279
10279
  // polls names the same geometry, so a step that follows a settled one
10280
10280
  // proves an unchanged screen without walking the tree again.
10281
- const geometry = (window.__peachSettleGeometry ??= { revision: null, hierarchy: null })
10281
+ const geometry = (globalThis.__peachSettleGeometry ??= { revision: null, hierarchy: null })
10282
10282
  try {
10283
10283
 
10284
10284
  // discover transitions while observing layout. when motion starts,
@@ -10288,7 +10288,7 @@ async function waitForSootsimIdle({
10288
10288
  // the budget restarts once it drains.
10289
10289
  let transitionWait = (async () => {
10290
10290
  try {
10291
- const wfst = window.__sootsimTest?.waitForScreenTransitions
10291
+ const wfst = globalThis.__sootsimTest?.waitForScreenTransitions
10292
10292
  if (typeof wfst === 'function' && budgetMs > 120) {
10293
10293
  const transition = await wfst({
10294
10294
  timeoutMs: ${Math.max(0, Math.round(transitionTimeoutMs))},
@@ -10344,19 +10344,19 @@ async function waitForSootsimIdle({
10344
10344
  // animations in both realms: a worklet can move the app while the
10345
10345
  // tenant's basic animation flag and last presented pixels read still.
10346
10346
  const accessibilityRead = maestro
10347
- ? answer(() => window.__sootsimTest.captureAccessibilityTree()).catch(() => null)
10347
+ ? answer(() => globalThis.__sootsimTest.captureAccessibilityTree()).catch(() => null)
10348
10348
  : null
10349
10349
  const motionRead = strict || paintStill
10350
- ? answer(() => window.__sootsimTest?.listAnimations?.()).catch(() => null)
10350
+ ? answer(() => globalThis.__sootsimTest?.listAnimations?.()).catch(() => null)
10351
10351
  : null
10352
- const statsRead = answer(() => window.__sootsimRenderHost?.queryStats?.()).catch(() => null)
10352
+ const statsRead = answer(() => globalThis.__sootsimRenderHost?.queryStats?.()).catch(() => null)
10353
10353
  // image preparation ends in the tenant before the compositor decodes
10354
10354
  // and realizes its pixels. both owners must finish before settling.
10355
10355
  // the compositor rejects a stats request it is too busy to answer.
10356
- const compositorRead = answer(() => window.__sootsimCompositor.getStats({ detail: 'readiness' })).catch(() => BUSY)
10357
- const countsRead = answer(() => window.__sootsimTest?.getRequestCounts?.()).catch(() => null)
10356
+ const compositorRead = answer(() => globalThis.__sootsimCompositor.getStats({ detail: 'readiness' })).catch(() => BUSY)
10357
+ const countsRead = answer(() => globalThis.__sootsimTest?.getRequestCounts?.()).catch(() => null)
10358
10358
  // the mounted hierarchy in render-worker mode comes from the test
10359
- // bridge: window.__sootsimRoot is an empty placeholder there, so a
10359
+ // bridge: globalThis.__sootsimRoot is an empty placeholder there, so a
10360
10360
  // walk over it hashes every screen to the same empty string while
10361
10361
  // it moves. listInspectable is the worker-backed read describe
10362
10362
  // uses; a worker too busy to answer it reads as unsettled. tight
@@ -10364,13 +10364,13 @@ async function waitForSootsimIdle({
10364
10364
  // it walks every node, so a poll whose geometry revision matches the
10365
10365
  // last read, in this wait or an earlier one, reuses that read.
10366
10366
  const hierarchyRead =
10367
- fullGeometry && typeof window.__sootsimTest?.listInspectable === 'function'
10368
- ? answer(() => window.__sootsimTest.getGeometryRevision?.())
10367
+ fullGeometry && typeof globalThis.__sootsimTest?.listInspectable === 'function'
10368
+ ? answer(() => globalThis.__sootsimTest.getGeometryRevision?.())
10369
10369
  .catch(() => null)
10370
10370
  .then((revision) => {
10371
10371
  if (revision === BUSY) return BUSY
10372
10372
  if (typeof revision === 'string' && geometry.revision === revision) return geometry.hierarchy
10373
- return answer(() => window.__sootsimTest.listInspectable({}))
10373
+ return answer(() => globalThis.__sootsimTest.listInspectable({}))
10374
10374
  .catch(() => null)
10375
10375
  .then((hierarchy) => {
10376
10376
  const kept = typeof revision === 'string' && Array.isArray(hierarchy)
@@ -10410,7 +10410,7 @@ async function waitForSootsimIdle({
10410
10410
  return {
10411
10411
  runtimeUnsupported: {
10412
10412
  error: 'runtime_readiness_unsupported',
10413
- runtimeVersion: window.__sootsimRuntimeVersion || 'unknown',
10413
+ runtimeVersion: globalThis.__sootsimRuntimeVersion || 'unknown',
10414
10414
  missingFields,
10415
10415
  },
10416
10416
  }
@@ -10456,7 +10456,7 @@ async function waitForSootsimIdle({
10456
10456
  // pre-motion baseline to compare against.
10457
10457
  const motionStill = !workerBusy && !animating && !layoutDirty && !shellAnimating
10458
10458
  const nodeCountRead = motionStill
10459
- ? answer(() => window.__sootsimTest?.getWindowNodeCount?.()).catch(() => null)
10459
+ ? answer(() => globalThis.__sootsimTest?.getWindowNodeCount?.()).catch(() => null)
10460
10460
  : null
10461
10461
  const compositor = await compositorRead
10462
10462
  if (compositor === BUSY) {
@@ -10528,7 +10528,7 @@ async function waitForSootsimIdle({
10528
10528
  )
10529
10529
  }
10530
10530
  } else {
10531
- const root = window.__sootsimRoot
10531
+ const root = globalThis.__sootsimRoot
10532
10532
  if (root) {
10533
10533
  const walk = (n) => {
10534
10534
  if (n.layout && n.layout.width > 0) {
@@ -12232,7 +12232,7 @@ function readIosSdkTree(root) {
12232
12232
 
12233
12233
  // src/swift-standin-digest.ts
12234
12234
  init_define_SWIFT_COVERAGE_SOURCE_DIGESTS();
12235
- var STANDIN_SOURCE_DIGEST = true ? "a996006bade8d371dad7a05919cb0812bb1e5e08ae40cbb5af2802d3df188b2d" : standinSourceDigest();
12235
+ var STANDIN_SOURCE_DIGEST = true ? "fc51a249ab5b00720eab27b7d9e4945936878069347a86180f9c5efd7f063012" : standinSourceDigest();
12236
12236
 
12237
12237
  // src/expo-native-workspace.ts
12238
12238
  init_define_SWIFT_COVERAGE_SOURCE_DIGESTS();
@@ -14193,6 +14193,18 @@ var OMIT_SDK_LIB_FLAGS = /* @__PURE__ */ new Set([
14193
14193
  "-lswiftCore",
14194
14194
  "-lswift_Concurrency"
14195
14195
  ]);
14196
+ var SWIFTUI_WRAPPER_HOST_PROTOCOLS = new Set(
14197
+ [
14198
+ "View",
14199
+ "ViewModifier",
14200
+ "App",
14201
+ "Scene",
14202
+ "Gesture",
14203
+ "ToolbarContent",
14204
+ "Commands",
14205
+ "DynamicProperty"
14206
+ ].map((name2) => `$s7SwiftUI${name2.length}${name2}Mp`)
14207
+ );
14196
14208
 
14197
14209
  // src/swift-guest-link.ts
14198
14210
  init_define_SWIFT_COVERAGE_SOURCE_DIGESTS();
@@ -14397,7 +14409,7 @@ var FOUNDATION_IMPLICIT_MODULES = [
14397
14409
  var FOUNDATION_IMPLICIT_FLAGS = FOUNDATION_IMPLICIT_MODULES.map(
14398
14410
  (module2) => `, "-Xfrontend", "-import-module", "-Xfrontend", "${module2}"`
14399
14411
  ).join("");
14400
- var compilerSourceDigest = true ? "da64a99bc639b1dce8024a42c5f5308e09e564e6e119be33e33a85c79e245197" : swiftCompilerSourceDigest2(__sootsim_import_meta_dirname);
14412
+ var compilerSourceDigest = true ? "8004dbc307143f91fede23d329c01a8171056ea767fd3755b8ac7a39d59e25b3" : swiftCompilerSourceDigest2(__sootsim_import_meta_dirname);
14401
14413
  var CORE_FOUNDATION_HANDLE_IMPORTS = [
14402
14414
  "CFAllocator",
14403
14415
  "CFArray",
@@ -1,4 +1,4 @@
1
- /*! peach v0.1.2199 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.2201 | (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.2199 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.2201 | (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.2199 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.2201 | (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;
@@ -463,6 +463,38 @@ function readBridgeFiles(output) {
463
463
  });
464
464
  }
465
465
 
466
+ // src/android-view-classes.ts
467
+ init_define_SWIFT_COVERAGE_SOURCE_DIGESTS();
468
+ var androidViewClasses = [
469
+ "android.view.View",
470
+ "android.widget.FrameLayout",
471
+ "android.widget.ImageView",
472
+ "android.widget.LinearLayout",
473
+ "android.widget.RelativeLayout",
474
+ "android.widget.TextView"
475
+ ];
476
+ var classPrefixes = [
477
+ "android.widget.",
478
+ "android.webkit.",
479
+ "android.app.",
480
+ "android.view."
481
+ ];
482
+ function layoutViewClasses(roots) {
483
+ const used = /* @__PURE__ */ new Set();
484
+ const visit = (element) => {
485
+ if (element.name !== "include" && element.name !== "merge") {
486
+ if (element.name.includes(".")) used.add(element.name);
487
+ else {
488
+ const found = classPrefixes.map((prefix) => prefix + element.name).find((name) => androidViewClasses.includes(name));
489
+ if (found) used.add(found);
490
+ }
491
+ }
492
+ element.children.forEach(visit);
493
+ };
494
+ for (const root of roots) visit(root);
495
+ return [...used].sort();
496
+ }
497
+
466
498
  // src/kotlin-host.ts
467
499
  init_is_record();
468
500
 
@@ -515,7 +547,7 @@ ${diagnostic.trim()}`, { cause });
515
547
  });
516
548
  const specs = stdout.split("\n").filter(Boolean).map((line) => {
517
549
  const row = JSON.parse(line);
518
- if (!isRecord(row) || typeof row.file !== "string" || typeof row.className !== "string" || row.name !== null && typeof row.name !== "string" || typeof row.source !== "string" || !Array.isArray(row.methods))
550
+ if (!isRecord(row) || typeof row.file !== "string" || typeof row.className !== "string" || row.name !== null && typeof row.name !== "string" || typeof row.source !== "string" || row.application !== void 0 && typeof row.application !== "boolean" || !Array.isArray(row.methods))
519
551
  throw new Error("Java module reader printed an invalid spec");
520
552
  const file = origins.get(row.file);
521
553
  if (!file) throw new Error("Java module reader named an unknown input");
@@ -524,7 +556,8 @@ ${diagnostic.trim()}`, { cause });
524
556
  className: row.className,
525
557
  name: row.name,
526
558
  source: row.source,
527
- methods: row.methods.map(readBridgeMethod)
559
+ methods: row.methods.map(readBridgeMethod),
560
+ application: row.application === true
528
561
  };
529
562
  });
530
563
  return { sha256: digest.digest("hex"), specs };
@@ -1646,7 +1679,7 @@ function appResourceSources(app) {
1646
1679
  name: resource.name,
1647
1680
  init: `mapOf(${Object.entries(resource.values).map(([locale, value]) => `${literal(locale)} to ${render(value)}`).join(", ")})`
1648
1681
  }));
1649
- const kinds = [
1682
+ const tableKinds = [
1650
1683
  {
1651
1684
  type: "string",
1652
1685
  table: "peachAppStrings",
@@ -1682,6 +1715,16 @@ ${drawable.files.map((file) => drawableInit(file, import_node_path7.default.rela
1682
1715
  )`
1683
1716
  }))
1684
1717
  },
1718
+ // a layout is its element tree; one only in a qualified directory has none
1719
+ {
1720
+ type: "layout",
1721
+ table: "peachAppLayouts",
1722
+ value: "LayoutNode?",
1723
+ entries: app.layoutIds.layouts.map((name) => {
1724
+ const element = app.layoutIds.elements.get(name);
1725
+ return { name, init: element ? layoutInit(element) : "null" };
1726
+ })
1727
+ },
1685
1728
  // the day and the night ARGB
1686
1729
  {
1687
1730
  type: "color",
@@ -1692,19 +1735,32 @@ ${drawable.files.map((file) => drawableInit(file, import_node_path7.default.rela
1692
1735
  init: `intArrayOf(${argb(color.day)}, ${argb(color.night)})`
1693
1736
  }))
1694
1737
  }
1695
- ].map((kind, index) => ({
1738
+ ];
1739
+ const nameOnly = [{ type: "id", names: app.layoutIds.ids }];
1740
+ const numbered = (kind, index) => ({
1696
1741
  ...kind,
1697
1742
  entries: kind.entries.map((entry, number) => ({
1698
1743
  ...entry,
1699
1744
  id: id(index + 1, number)
1700
1745
  }))
1701
- }));
1746
+ });
1747
+ const kinds = tableKinds.map((kind, index) => numbered(kind, index));
1748
+ const viewClasses = layoutViewClasses(app.layoutIds.elements.values());
1749
+ const rKinds = [
1750
+ ...kinds,
1751
+ ...nameOnly.map(
1752
+ (kind, index) => numbered(
1753
+ { type: kind.type, entries: kind.names.map((name) => ({ name })) },
1754
+ kinds.length + index
1755
+ )
1756
+ )
1757
+ ];
1702
1758
  return {
1703
1759
  "R.kt": [
1704
1760
  `package ${app.namespace}`,
1705
1761
  "",
1706
1762
  "object R {",
1707
- ...kinds.flatMap((kind) => [
1763
+ ...rKinds.flatMap((kind) => [
1708
1764
  ` object ${kind.type} {`,
1709
1765
  ...kind.entries.map(
1710
1766
  (entry) => ` const val ${field(entry.name)}: Int = ${entry.id}`
@@ -1725,7 +1781,11 @@ ${drawable.files.map((file) => drawableInit(file, import_node_path7.default.rela
1725
1781
  "androidx.compose.ui.graphics.StrokeJoin",
1726
1782
  "androidx.compose.ui.graphics.vector.ImageVector",
1727
1783
  "androidx.compose.ui.graphics.vector.addPathNodes",
1728
- "androidx.compose.ui.unit.Dp"
1784
+ "androidx.compose.ui.unit.Dp",
1785
+ "android.content.Context",
1786
+ "android.util.AttributeSet",
1787
+ "android.view.LayoutNode",
1788
+ "android.view.View"
1729
1789
  ].map((name) => `import ${name}`),
1730
1790
  "",
1731
1791
  ...kinds.flatMap((kind) => [
@@ -1734,14 +1794,34 @@ ${drawable.files.map((file) => drawableInit(file, import_node_path7.default.rela
1734
1794
  ")",
1735
1795
  ""
1736
1796
  ]),
1797
+ "internal val peachAppViews: Map<String, (Context, AttributeSet?) -> View> = mapOf(",
1798
+ ...viewClasses.map(
1799
+ (name) => ` ${literal(name)} to { context, attrs -> ${name}(context, attrs) },`
1800
+ ),
1801
+ ")",
1802
+ "",
1803
+ `internal val peachAppNames: Map<Int, String> = mapOf(`,
1804
+ ...rKinds.flatMap(
1805
+ (kind) => kind.entries.map(
1806
+ (entry) => ` ${entry.id} to ${literal(`${app.packageName}:${kind.type}/${entry.name}`)},`
1807
+ )
1808
+ ),
1809
+ ")",
1810
+ "",
1737
1811
  "internal val compiledAppResources = PeachAppResources(",
1738
1812
  ...kinds.map(
1739
1813
  (kind) => ` ${kind.table.slice("peachApp".length).toLowerCase()} = ${kind.table},`
1740
1814
  ),
1815
+ " views = peachAppViews,",
1816
+ " names = peachAppNames,",
1741
1817
  ")"
1742
1818
  ].join("\n")
1743
1819
  };
1744
1820
  }
1821
+ function layoutInit(element) {
1822
+ const attributes = Object.entries(element.attributes).filter(([key]) => !key.startsWith("xmlns") && !key.startsWith("tools:")).map(([key, value]) => `${literal(key)} to ${literal(value)}`);
1823
+ return `LayoutNode(${literal(element.name)}, mapOf(${attributes.join(", ")}), listOf(${element.children.map(layoutInit).join(", ")}))`;
1824
+ }
1745
1825
  function drawableInit(drawable, file) {
1746
1826
  const where = `${literal(file)}, ${drawable.density}, ${drawable.version}`;
1747
1827
  if (drawable.kind === "xml") return `PeachDrawable.Xml(${where})`;
@@ -1813,9 +1893,14 @@ async function compileKotlin(input, origin) {
1813
1893
  const sdk = await loadKotlinSdk(moduleRoot, toolchain);
1814
1894
  const plugin = import_node_path7.default.join(sdk.root, "plugin.jar");
1815
1895
  const sdkLibrary = import_node_path7.default.join(sdk.root, `${sdkProfile}.klib`);
1816
- const java = javaSpecs.length ? await readJavaModuleSpecs(javaSpecs, sdk.root, await ensureToolchain(toolchain)) : null;
1896
+ const javaRead = javaSpecs.length ? await readJavaModuleSpecs(javaSpecs, sdk.root, await ensureToolchain(toolchain)) : null;
1897
+ const java = javaRead && javaRead.specs.some((spec) => !spec.application) ? { ...javaRead, specs: javaRead.specs.filter((spec) => !spec.application) } : null;
1898
+ const applicationJava = javaRead?.specs.filter((spec) => spec.application) ?? [];
1817
1899
  const generated = {
1818
1900
  ...sourceGenerated,
1901
+ ...Object.fromEntries(
1902
+ applicationJava.map((spec, index) => [`JavaApplication${index}.kt`, spec.source])
1903
+ ),
1819
1904
  "PeachBindingsInitialization.kt": [
1820
1905
  "@file:OptIn(kotlin.js.ExperimentalJsExport::class)",
1821
1906
  "package dev.peach.jni",
@@ -1846,7 +1931,7 @@ async function compileKotlin(input, origin) {
1846
1931
  sdk: sdk.sha256,
1847
1932
  sdkProfile,
1848
1933
  usesSerialization,
1849
- java: java?.sha256
1934
+ java: javaRead?.sha256
1850
1935
  })
1851
1936
  );
1852
1937
  for (const { file, bytes } of inputs)
@@ -2058,6 +2143,11 @@ async function compileKotlin(input, origin) {
2058
2143
  let output = isRecord(error) ? `${String(error.stderr ?? "")}${String(error.stdout ?? "")}` : "";
2059
2144
  for (const [name, source] of Object.entries(origins))
2060
2145
  output = output.replaceAll(import_node_path7.default.join(generatedDir, name), source);
2146
+ for (const [index, spec] of applicationJava.entries())
2147
+ output = output.replaceAll(
2148
+ import_node_path7.default.join(generatedDir, `JavaApplication${index}.kt`),
2149
+ spec.file
2150
+ );
2061
2151
  for (const { file, target } of compiledSources)
2062
2152
  output = output.replaceAll(target, file).replaceAll(import_node_path7.default.relative(process.cwd(), target), file);
2063
2153
  for (const [index, spec] of (java?.specs ?? []).entries())
package/dist-lib/menu.cjs CHANGED
@@ -1,4 +1,4 @@
1
- /*! peach v0.1.2199 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.2201 | (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.2199 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.2201 | (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.2199 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.2201 | (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.2199 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.2201 | (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.2199 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.2201 | (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.2199 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.2201 | (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() {
@@ -1,4 +1,4 @@
1
- /*! peach v0.1.2199 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.2201 | (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;
@@ -7505,7 +7505,7 @@ function readIosSdkTree(root) {
7505
7505
 
7506
7506
  // src/swift-standin-digest.ts
7507
7507
  init_define_SWIFT_COVERAGE_SOURCE_DIGESTS();
7508
- var STANDIN_SOURCE_DIGEST = true ? "a996006bade8d371dad7a05919cb0812bb1e5e08ae40cbb5af2802d3df188b2d" : standinSourceDigest();
7508
+ var STANDIN_SOURCE_DIGEST = true ? "fc51a249ab5b00720eab27b7d9e4945936878069347a86180f9c5efd7f063012" : standinSourceDigest();
7509
7509
 
7510
7510
  // src/expo-native-workspace.ts
7511
7511
  init_define_SWIFT_COVERAGE_SOURCE_DIGESTS();
@@ -9408,6 +9408,18 @@ var OMIT_SDK_LIB_FLAGS = /* @__PURE__ */ new Set([
9408
9408
  "-lswiftCore",
9409
9409
  "-lswift_Concurrency"
9410
9410
  ]);
9411
+ var SWIFTUI_WRAPPER_HOST_PROTOCOLS = new Set(
9412
+ [
9413
+ "View",
9414
+ "ViewModifier",
9415
+ "App",
9416
+ "Scene",
9417
+ "Gesture",
9418
+ "ToolbarContent",
9419
+ "Commands",
9420
+ "DynamicProperty"
9421
+ ].map((name2) => `$s7SwiftUI${name2.length}${name2}Mp`)
9422
+ );
9411
9423
 
9412
9424
  // src/swift-guest-link.ts
9413
9425
  init_define_SWIFT_COVERAGE_SOURCE_DIGESTS();
@@ -9612,7 +9624,7 @@ var FOUNDATION_IMPLICIT_MODULES = [
9612
9624
  var FOUNDATION_IMPLICIT_FLAGS = FOUNDATION_IMPLICIT_MODULES.map(
9613
9625
  (module2) => `, "-Xfrontend", "-import-module", "-Xfrontend", "${module2}"`
9614
9626
  ).join("");
9615
- var compilerSourceDigest = true ? "da64a99bc639b1dce8024a42c5f5308e09e564e6e119be33e33a85c79e245197" : swiftCompilerSourceDigest2(__sootsim_import_meta_dirname);
9627
+ var compilerSourceDigest = true ? "8004dbc307143f91fede23d329c01a8171056ea767fd3755b8ac7a39d59e25b3" : swiftCompilerSourceDigest2(__sootsim_import_meta_dirname);
9616
9628
  var CORE_FOUNDATION_HANDLE_IMPORTS = [
9617
9629
  "CFAllocator",
9618
9630
  "CFArray",
@@ -17212,7 +17224,7 @@ var import_node_module4 = require("node:module");
17212
17224
  var import_node_path23 = require("node:path");
17213
17225
 
17214
17226
  // runtime-companion.json
17215
- var runtime_companion_default = { abi: 1, sha256: "38d58f4713cbf87e8d4cde206f6a1fb9bf3898b6b885f45db610ad1fccde083a", file: "node/cli-38d58f4713cbf87e8d4cde206f6a1fb9bf3898b6b885f45db610ad1fccde083a.cjs" };
17227
+ var runtime_companion_default = { abi: 1, sha256: "5aec79ac0fcea933862e7e373e0d167401e0d891c835d195b7f48039c87add60", file: "node/cli-5aec79ac0fcea933862e7e373e0d167401e0d891c835d195b7f48039c87add60.cjs" };
17216
17228
 
17217
17229
  // src/cli-runtime.ts
17218
17230
  var CLI_COMPANION_ABI = 1;
@@ -1,4 +1,4 @@
1
- /*! peach v0.1.2199 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.2201 | (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;
@@ -3117,6 +3117,18 @@ var OMIT_SDK_LIB_FLAGS = /* @__PURE__ */ new Set([
3117
3117
  "-lswiftCore",
3118
3118
  "-lswift_Concurrency"
3119
3119
  ]);
3120
+ var SWIFTUI_WRAPPER_HOST_PROTOCOLS = new Set(
3121
+ [
3122
+ "View",
3123
+ "ViewModifier",
3124
+ "App",
3125
+ "Scene",
3126
+ "Gesture",
3127
+ "ToolbarContent",
3128
+ "Commands",
3129
+ "DynamicProperty"
3130
+ ].map((name) => `$s7SwiftUI${name.length}${name}Mp`)
3131
+ );
3120
3132
 
3121
3133
  // src/swift-guest-link.ts
3122
3134
  init_define_SWIFT_COVERAGE_SOURCE_DIGESTS();
@@ -3318,7 +3330,7 @@ var FOUNDATION_IMPLICIT_MODULES = [
3318
3330
  var FOUNDATION_IMPLICIT_FLAGS = FOUNDATION_IMPLICIT_MODULES.map(
3319
3331
  (module2) => `, "-Xfrontend", "-import-module", "-Xfrontend", "${module2}"`
3320
3332
  ).join("");
3321
- var compilerSourceDigest = true ? "da64a99bc639b1dce8024a42c5f5308e09e564e6e119be33e33a85c79e245197" : swiftCompilerSourceDigest(__sootsim_import_meta_dirname);
3333
+ var compilerSourceDigest = true ? "8004dbc307143f91fede23d329c01a8171056ea767fd3755b8ac7a39d59e25b3" : swiftCompilerSourceDigest(__sootsim_import_meta_dirname);
3322
3334
  var CORE_FOUNDATION_HANDLE_IMPORTS = [
3323
3335
  "CFAllocator",
3324
3336
  "CFArray",