stim 1.20.2 → 1.22.0

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 (231) hide show
  1. package/README.md +141 -8
  2. package/dist/acquire-artifact-Co2k4f7O.mjs +171 -0
  3. package/dist/act-DsuqEkiM.mjs +2801 -0
  4. package/dist/activity-CMLmzp7o.mjs +1397 -0
  5. package/dist/{agent-device-usage-output-Dzgv6lgR.mjs → agent-device-usage-output-DUFaTMdd.mjs} +23 -67
  6. package/dist/{android-DCKZrNvV.mjs → android-ByRMUoiJ.mjs} +157 -93
  7. package/dist/{android-Mz_Inn3w.mjs → android-C7sVmyI9.mjs} +299 -116
  8. package/dist/{android-Dlzxshgp.mjs → android-DGkNqa_c.mjs} +5 -5
  9. package/dist/{android-HqP1_vB_.mjs → android-DR5lZ2Az.mjs} +2 -2
  10. package/dist/android-cas-compiler.mjs +2 -2
  11. package/dist/{android-cas-Bl-cLJBk.mjs → android-cas-ngferVq2.mjs} +7 -6
  12. package/dist/android-project-BCAAmMwz.mjs +12 -0
  13. package/dist/android-project-DVWyCbWU.d.mts +391 -0
  14. package/dist/api.d.mts +810 -64
  15. package/dist/api.mjs +782 -1
  16. package/dist/{artifact-HSwkIWEQ.mjs → artifact-8EY8SAPw.mjs} +240 -213
  17. package/dist/{artifact-D3czlUvT.mjs → artifact-DJPy518Y.mjs} +203 -164
  18. package/dist/artifact-platform-CXcmX_j3.mjs +27 -0
  19. package/dist/{browser-web-CA-F1GQo.mjs → browser-web-Bcv99PBM.mjs} +194 -64
  20. package/dist/budget-Cvwn54qV.mjs +9285 -0
  21. package/dist/{build-DYDbfkk5.mjs → build-CabC3G23.mjs} +153 -98
  22. package/dist/build-cache-Dv7RN200.mjs +602 -0
  23. package/dist/build-plan-DUC8Ka9y.mjs +248 -0
  24. package/dist/{cache-manifest-XH-fvDUj.mjs → cache-manifest-DSeQjt-Q.mjs} +2 -2
  25. package/dist/cache-manifest.mjs +1 -1
  26. package/dist/{ccache-zdKiYQ3E.mjs → ccache-Btwc36-I.mjs} +10 -9
  27. package/dist/{cdp-Dq_ypAlJ.mjs → cdp-3fwICjzi.mjs} +18 -5
  28. package/dist/{chrome-BnzZMqsR.mjs → chrome-Bbw689-6.mjs} +7 -4
  29. package/dist/{cli-CLP3diBm.mjs → cli-CHZa9Lvk.mjs} +20 -20
  30. package/dist/cli.mjs +1 -1
  31. package/dist/client-OyRoEuSr.mjs +1577 -0
  32. package/dist/collector-run.d.mts +4 -40
  33. package/dist/collector-run.mjs +9 -8
  34. package/dist/{command-output-BTy8hZ0F.mjs → command-output-gwpm28fu.mjs} +1 -1
  35. package/dist/config-DlrsduwG.mjs +955 -0
  36. package/dist/{created-devices-Dzd5C2LF.mjs → created-devices-x9rN6bhs.mjs} +14 -4
  37. package/dist/{dependency-state-DG0p31-y.mjs → dependency-state-1I9KZT1Y.mjs} +20 -5
  38. package/dist/{detached-entry-B9C_zeQC.mjs → detached-entry-BwNEtIrP.mjs} +1 -1
  39. package/dist/{dev-client-DAWVIGBu.mjs → dev-client-BSDR5h3F.mjs} +2 -2
  40. package/dist/{device-BECOiufl.mjs → device-B-L3Fbxy.mjs} +91 -34
  41. package/dist/device-DklWZLqb.mjs +1068 -0
  42. package/dist/{device-capacity-CBUAcRyQ.mjs → device-capacity-DK5_EwRS.mjs} +42 -13
  43. package/dist/device-host-worker.mjs +76 -79
  44. package/dist/{device-ios-COSi6oS1.mjs → device-ios-DoB6KFCO.mjs} +77 -51
  45. package/dist/{device-lease-run-Cw2M4z51.mjs → device-lease-run-xJPQ_QQG.mjs} +14 -26
  46. package/dist/{device-pool-Bf-pOhSw.mjs → device-pool-BMkdsefq.mjs} +5 -5
  47. package/dist/{doctor-kfMBnUw6.mjs → doctor-Bo7BXLux.mjs} +271 -320
  48. package/dist/{doctor-CB8oZKCk.mjs → doctor-D5_EzwfA.mjs} +186 -91
  49. package/dist/doctor-fingerprint-DZLoYFVb.mjs +16 -0
  50. package/dist/doctor-fingerprint.mjs +19 -0
  51. package/dist/doctor-thjWAV0z.mjs +2 -0
  52. package/dist/{doctor-watchman-BRyV2adA.mjs → doctor-watchman-N2wDotwQ.mjs} +40 -21
  53. package/dist/{eas-build-JyfqyHfC.mjs → eas-build-CwknaQYj.mjs} +53 -20
  54. package/dist/{build-plan-B7SZsc2N.mjs → eas-fallback-CSgAulr5.mjs} +41 -214
  55. package/dist/{watchman-CPQFZLXY.mjs → eas-session-ledger-DlY_serQ.mjs} +230 -11
  56. package/dist/{error-diagnostics-BR677IDM.mjs → error-diagnostics-DBWO2rxE.mjs} +172 -82
  57. package/dist/exec-DEoAhcze.mjs +858 -0
  58. package/dist/exec-DnYc4HGH.d.mts +78 -0
  59. package/dist/{gc-qWOMdnER.mjs → gc-CXxN-4SE.mjs} +1091 -1029
  60. package/dist/gc-DnNDQyaP.mjs +3 -0
  61. package/dist/{guide-G9cAbVAc.mjs → guide-Br0LEfKy.mjs} +1165 -297
  62. package/dist/{hosted-android-C3MHGld1.mjs → hosted-android-B-9f-jkd.mjs} +10 -8
  63. package/dist/{hosted-client-ZEKpS9vw.mjs → hosted-client-DZAPrcro.mjs} +34 -19
  64. package/dist/{hosted-ios-l-o3iM9J.mjs → hosted-ios-CsCS21hn.mjs} +1 -1
  65. package/dist/{hosted-logs-EzQM7-3Z.mjs → hosted-logs-FIRx9X2f.mjs} +77 -43
  66. package/dist/{hosted-macos-BACVAVqE.mjs → hosted-macos-_awYSpfv.mjs} +35 -22
  67. package/dist/{hosted-native-A4s1QPXe.mjs → hosted-native-BdzE668-.mjs} +49 -27
  68. package/dist/idle-C4cZ757K.d.mts +24 -0
  69. package/dist/{idle-shutdown-DtxhPTKe.mjs → idle-shutdown-DDg3SdvY.mjs} +11 -10
  70. package/dist/ios-CDvlmUs7.d.mts +24 -0
  71. package/dist/{ios-BwVCF7oA.mjs → ios-Ds1clbIt.mjs} +8 -8
  72. package/dist/{ios-device-D7pi2Sca.mjs → ios-device--h_-8ENa.mjs} +51 -26
  73. package/dist/{ios-device-B5veSDDQ.mjs → ios-device-BXZ0c7Kb.mjs} +1 -1
  74. package/dist/{ios-RkW4pnQf.mjs → ios-hcBpnEGk.mjs} +200 -93
  75. package/dist/{ios-Ce7bc7br.mjs → ios-pm4nL6By.mjs} +160 -108
  76. package/dist/{ios-project-K9hY_Jab.mjs → ios-project-CZhKODF3.mjs} +13 -13
  77. package/dist/ios-signing-BtAffm0A.mjs +489 -0
  78. package/dist/{ios-state-CBLe1xYw.mjs → ios-state-Dtw5K2aI.mjs} +1 -1
  79. package/dist/{ios-nOLJGVdy.mjs → ios-xtlRHaeB.mjs} +1 -1
  80. package/dist/{js-swap-Bb3nsS07.mjs → js-swap-Bwhh4S7V.mjs} +30 -25
  81. package/dist/{launch-C3qJ6Agb.mjs → launch-BjxemNpK.mjs} +85 -543
  82. package/dist/{launch-F4sOqAhB.mjs → launch-CCzXlc8r.mjs} +91 -90
  83. package/dist/logs-BfwwadsZ.mjs +479 -0
  84. package/dist/logs-jTS_lHSo.mjs +248 -0
  85. package/dist/{macos-D7uDvO-z.mjs → macos-DVlSSyUg.mjs} +1 -1
  86. package/dist/macos-NfV2D7dO.mjs +694 -0
  87. package/dist/macos-run.mjs +1 -1
  88. package/dist/maintenance-run.mjs +123 -248
  89. package/dist/{metro-DnCEjCxs.mjs → metro-DiXtA3Ty.mjs} +107 -30
  90. package/dist/metro-gateway-CKZqKqx7.mjs +209 -0
  91. package/dist/{named-ports-4WopRPg-.mjs → named-ports-DkEzOfzO.mjs} +42 -90
  92. package/dist/native-android-CqgnOgsT.mjs +645 -0
  93. package/dist/native-gradle-artifact-inputs-DHFnmrVf.mjs +270 -0
  94. package/dist/native-gradle-inputs-Dnh84Zbd.mjs +211 -0
  95. package/dist/native-inputs-TRTTTRxt.mjs +91 -0
  96. package/dist/native-run-NwUuxbkg.mjs +276 -0
  97. package/dist/{native-runtime-k8dTIrbK.mjs → native-runtime-B7KIafpM.mjs} +11 -9
  98. package/dist/native-source-Y0yLhFyQ.mjs +133 -0
  99. package/dist/{native-xcode-inputs-CykopJdM.mjs → native-xcode-inputs-D_VOfFL7.mjs} +26 -18
  100. package/dist/{native-xcode-ios-Bbf30Gm0.mjs → native-xcode-ios-BYDOHWLN.mjs} +104 -60
  101. package/dist/{ndjson-GOnbyvso.mjs → ndjson-CgE_o3Dl.mjs} +3 -3
  102. package/dist/offload-worker.d.mts +59 -41
  103. package/dist/offload-worker.mjs +478 -115
  104. package/dist/operation-exec-BW0em61G.mjs +171 -0
  105. package/dist/{ownership-DCtw_2IA.mjs → ownership-C5fo5Edb.mjs} +3 -3
  106. package/dist/{page-DRHy329N.mjs → page-DBL2PiUU.mjs} +12 -5
  107. package/dist/paths-BsJMoPP2.mjs +12 -0
  108. package/dist/paths-DQtTgsBf.mjs +42 -0
  109. package/dist/{placement-log-MOfPVgaM.mjs → placement-log-BnGgJRRZ.mjs} +5 -5
  110. package/dist/{plan-placement-V0TdzYXp.mjs → plan-placement-DIsMtN-d.mjs} +15 -11
  111. package/dist/{ports-DdSUicVo.mjs → ports-Cy1RkmuQ.mjs} +3 -3
  112. package/dist/prebuild-D4JoEAEs.mjs +484 -0
  113. package/dist/{project-_phNIJfs.mjs → project-wM_XFTvE.mjs} +65 -37
  114. package/dist/{pull-request-CQ8sPbZa.mjs → pull-request-W1IuLXDt.mjs} +102 -20
  115. package/dist/pull-request-eODyIqZF.d.mts +124 -0
  116. package/dist/pull-requests.d.mts +2 -120
  117. package/dist/pull-requests.mjs +2 -2
  118. package/dist/{react-native-android-CM1XRDwv.mjs → react-native-android-6OZ7MSM7.mjs} +121 -72
  119. package/dist/{gradle-DSrXb6lG.mjs → react-native-build-Dvd8hC21.mjs} +292 -15
  120. package/dist/react-native-doctor-DsoSF1Y9.mjs +234 -0
  121. package/dist/{react-native-ios-Dhq_eiYQ.mjs → react-native-ios-4u1Rn-GR.mjs} +71 -39
  122. package/dist/{recordings-D0d5aQt0.mjs → recordings-CQmfzAh7.mjs} +12 -9
  123. package/dist/registration-BcRgF6Ox.mjs +51 -0
  124. package/dist/{reload-C8JhxjSh.mjs → reload-BzkYabB-.mjs} +94 -47
  125. package/dist/reload-D7AVlb8N.mjs +2 -0
  126. package/dist/{remote-BiR6aYjy.mjs → remote-DjGDmlTZ.mjs} +26 -18
  127. package/dist/result-D2Ykz_iD.mjs +435 -0
  128. package/dist/{run-BtPgpKks.mjs → run-DidHghD1.mjs} +5 -5
  129. package/dist/selection-DSMbWEX2.mjs +620 -0
  130. package/dist/{server-bare-R2m_gsH8.mjs → server-bare-CafzuyFB.mjs} +3 -4
  131. package/dist/{server-command-CTtCkmcQ.mjs → server-command-C6QjeupS.mjs} +14 -7
  132. package/dist/{server-expo-DsguMGUF.mjs → server-expo-CrjB29pq.mjs} +54 -11
  133. package/dist/server-expo-D58c9L0M.mjs +2 -0
  134. package/dist/{settings-B717odTD.mjs → settings-C7O8A6ZI.mjs} +309 -119
  135. package/dist/settings-DpR-1Wnn.mjs +114 -0
  136. package/dist/settings-write-CzD60rOD.mjs +360 -0
  137. package/dist/settings.schema.json +176 -16
  138. package/dist/{simslim-CCr3rE-A.mjs → simslim-BNckWpXi.mjs} +14 -12
  139. package/dist/{slot-launch-DPt0m9Nd.mjs → slot-launch-CbfmNgM6.mjs} +15 -20
  140. package/dist/{spawn-entry-Dcb7sDUz.mjs → spawn-entry-jw19m8Nl.mjs} +0 -1
  141. package/dist/stage-Bps5oius.mjs +200 -0
  142. package/dist/{start-TXeMmmO2.mjs → start-Br-oxqMD.mjs} +1 -1
  143. package/dist/start-EojN4WFz.mjs +1364 -0
  144. package/dist/{state-D1Icyjlu.mjs → state--smjFSTL.mjs} +55 -13
  145. package/dist/{state-CG_OFoaA.mjs → state-08I3hw3_.mjs} +3 -2
  146. package/dist/{stats-BoY5sEPU.mjs → stats-D3GerlFW.mjs} +7 -13
  147. package/dist/stats-report-BzaPrRm6.mjs +16 -0
  148. package/dist/{status-BTA7kKiQ.mjs → status-BRROykC8.mjs} +7 -5
  149. package/dist/status-EvrK72L2.mjs +2 -0
  150. package/dist/{status-WgFbkRzj.mjs → status-WBDajew2.mjs} +554 -452
  151. package/dist/{status-watch-C23ILtf9.mjs → status-watch-Bg_u-pwR.mjs} +222 -25
  152. package/dist/status-worker.d.mts +1 -0
  153. package/dist/status-worker.mjs +19 -0
  154. package/dist/stim-desktop-D5OGpYZM.mjs +112 -0
  155. package/dist/{stop-DR6VoDIk.mjs → stop-DTZ9uTw3.mjs} +2 -2
  156. package/dist/{stop-DPEhunlw.mjs → stop-Dky10AEJ.mjs} +33 -23
  157. package/dist/{stop-BNmBMi1F.mjs → stop-Mv6W9FAk.mjs} +137 -98
  158. package/dist/supervisor-run.d.mts +8 -17
  159. package/dist/supervisor-run.mjs +56 -28
  160. package/dist/{support-CwjbFs9H.mjs → support-CNioewsd.mjs} +14 -14
  161. package/dist/{support-DMTqj3Hm.mjs → support-yUiOjnVY.mjs} +20 -13
  162. package/dist/swiftpm-artifact-inputs-DFcGsXDP.mjs +153 -0
  163. package/dist/swiftpm-macos-BIak-Rxv.mjs +532 -0
  164. package/dist/toolchain-BY8X8HXx.mjs +2 -0
  165. package/dist/toolchain-DpJMHq0n.mjs +876 -0
  166. package/dist/{trigger-CigAYjeL.mjs → trigger-Cbyc41d_.mjs} +21 -6
  167. package/dist/trigger-yb_nFzPF.mjs +2 -0
  168. package/dist/{warm-progress-BuY-Fvfn.mjs → warm-progress-CA3TgT3-.mjs} +263 -156
  169. package/dist/web-CZ07gd77.mjs +2 -0
  170. package/dist/{web-BDBMxDpx.mjs → web-DKx6yoFA.mjs} +20 -14
  171. package/dist/web-run.mjs +13 -12
  172. package/dist/windows-report.d.mts +1 -0
  173. package/dist/windows-report.mjs +18 -0
  174. package/dist/windows-report.ps1 +43 -0
  175. package/dist/{workspace-state-DJt_MMvf.mjs → workspace-state-U08dEzhG.mjs} +62 -58
  176. package/dist/{workspaces-C36s2jb9.mjs → workspaces-CpANmBlq.mjs} +1723 -1286
  177. package/dist/{worktree-CgvJYJ-Q.mjs → worktree-CHecZ4Oq.mjs} +1097 -547
  178. package/dist/worktree-ZqZVjD9K.mjs +2 -0
  179. package/dist/xcode-BXn9-xYx.mjs +896 -0
  180. package/package.json +7 -5
  181. package/shim/android-audio/Main.java +24 -0
  182. package/shim/android-audio/README.md +17 -0
  183. package/shim/android-audio.jar +0 -0
  184. package/shim/android-optimizations.gradle +7 -5
  185. package/dist/activity-BSV745Kz.mjs +0 -629
  186. package/dist/api-qvOzWyfO.mjs +0 -154
  187. package/dist/api-run.mjs +0 -294
  188. package/dist/app-install-BIKtMfPq.mjs +0 -896
  189. package/dist/artifact-lifecycle-DzPpBYvK.mjs +0 -30
  190. package/dist/budget-f7516Zk0.mjs +0 -4106
  191. package/dist/build-facts-DcLv2HSd.d.mts +0 -111
  192. package/dist/cancellation-C_22VQTH.mjs +0 -24
  193. package/dist/client-qQAaXSUs.mjs +0 -1771
  194. package/dist/config-BYDxlMY3.mjs +0 -562
  195. package/dist/device-DuiPJQSn.mjs +0 -290
  196. package/dist/device-lease-BX1sJQ2E.mjs +0 -1224
  197. package/dist/device-remote-xRT0Vmo9.mjs +0 -1272
  198. package/dist/eas-session-ledger-Cm0Gwq2F.mjs +0 -207
  199. package/dist/exec-DqKo9GKJ.mjs +0 -268
  200. package/dist/git-DDfFzkMm.mjs +0 -45
  201. package/dist/launch-verify-B6Q8hZP-.mjs +0 -428
  202. package/dist/logs-BGrEUaEs.mjs +0 -383
  203. package/dist/macos-Ch5VJmcS.mjs +0 -584
  204. package/dist/metro-gateway-CX9Xlkq2.mjs +0 -103
  205. package/dist/miss-reason-mKzZ4VvN.mjs +0 -238
  206. package/dist/native-android-D5qc3-_v.mjs +0 -226
  207. package/dist/native-gradle-inputs-BsLRrl7u.mjs +0 -349
  208. package/dist/ndjson-Du3j0AQ9.d.mts +0 -17
  209. package/dist/plan-C4TjdPsR.mjs +0 -260
  210. package/dist/prebuild-DYbucPXy.mjs +0 -212
  211. package/dist/preview-78a9kR_-.mjs +0 -1011
  212. package/dist/react-native-build-CtCccJtb.mjs +0 -239
  213. package/dist/react-native-doctor-CfRnFfjs.mjs +0 -78
  214. package/dist/remote-cache-OyOyVIS3.mjs +0 -526
  215. package/dist/result-CaJg5Iat.mjs +0 -186
  216. package/dist/server-expo-Bigriskl.mjs +0 -2
  217. package/dist/settings-BORNaaCO.mjs +0 -402
  218. package/dist/settings-vk3mJGSm.d.mts +0 -13
  219. package/dist/spawn-claims-DVS5RkMS.mjs +0 -72
  220. package/dist/stage-KNTQopqv.mjs +0 -157
  221. package/dist/start-BWqzODpb.mjs +0 -1116
  222. package/dist/stim-desktop-BzBN2Em2.mjs +0 -63
  223. package/dist/swiftpm-macos-DRNVJWlb.mjs +0 -119
  224. package/dist/tailnet-Dh-qiYzG.mjs +0 -265
  225. package/dist/toolchain-BFkAcstd.mjs +0 -2
  226. package/dist/toolchain-DxSsNssu.mjs +0 -1657
  227. package/dist/trigger-9_USgmxz.mjs +0 -2
  228. package/dist/web-Dq-i3wzJ.mjs +0 -2
  229. package/dist/worktree-DpLdCHga.mjs +0 -2
  230. package/dist/{api-run.d.mts → doctor-fingerprint.d.mts} +0 -0
  231. package/dist/{errors-DzkMYh8Q.mjs → errors-ccaPc4ox.mjs} +2 -2
@@ -1,14 +1,15 @@
1
- import { N as formatBytes, _ as loadConfig$1 } from "./config-BYDxlMY3.mjs";
2
- import { t as getExecutor } from "./exec-DqKo9GKJ.mjs";
1
+ import { r as WorkspaceProcessCleanupError, t as getExecutor } from "./exec-DEoAhcze.mjs";
2
+ import { P as formatBytes, _ as loadConfig$1 } from "./config-DlrsduwG.mjs";
3
3
  import { n as stripAnsi, r as waitForChild, t as createLineReader } from "./process-output-Fpl8PYi8.mjs";
4
- import { n as settingDefault, t as STIM_DESKTOP_OPEN_OPTIONS } from "./stim-desktop-BzBN2Em2.mjs";
5
- import { it as isStimOwnedSim } from "./android-Mz_Inn3w.mjs";
6
- import { r as recordCreatedDevice, t as forgetCreatedDevice } from "./created-devices-Dzd5C2LF.mjs";
4
+ import { n as runOperationFileQuiet, t as runOperationFile } from "./operation-exec-BW0em61G.mjs";
5
+ import { i as recordCreatedDevice, t as forgetCreatedDevice } from "./created-devices-x9rN6bhs.mjs";
6
+ import { ut as isStimOwnedSim } from "./android-C7sVmyI9.mjs";
7
+ import { i as stimDesktopInstalledAsync, n as settingDefault, t as STIM_DESKTOP_OPEN_OPTIONS } from "./stim-desktop-D5OGpYZM.mjs";
8
+ import { createHash } from "node:crypto";
7
9
  import { closeSync, existsSync, lstatSync, mkdtempSync, openSync, readSync, readdirSync, rmSync, writeFileSync } from "node:fs";
10
+ import { tmpdir, totalmem } from "node:os";
8
11
  import { dirname, isAbsolute, join, resolve } from "node:path";
9
12
  import { IOS_SIMULATOR_APPS, isJsonObject, settingDefinition } from "@stim-cli/core/state";
10
- import { createHash } from "node:crypto";
11
- import { tmpdir, totalmem } from "node:os";
12
13
  //#region src/engine/installed-artifact.ts
13
14
  const READ_CHUNK_BYTES = 1048576;
14
15
  const DEVICE_PATH_TIMEOUT_MS = 3e4;
@@ -89,11 +90,11 @@ function hashBundle(dir) {
89
90
  };
90
91
  return walk(dir, "") ? digest.digest("hex") : null;
91
92
  }
92
- function deviceHoldsApk({ serial, packageName, apkPath }, { exec = null } = {}) {
93
+ async function deviceHoldsApk({ serial, packageName, apkPath }, { exec = null } = {}) {
93
94
  const e = exec || getExecutor();
94
95
  let path;
95
96
  try {
96
- path = parseInstalledApkPath(e.runFile("adb", [
97
+ path = parseInstalledApkPath(await e.runFileAsync("adb", [
97
98
  "-s",
98
99
  serial,
99
100
  "shell",
@@ -107,7 +108,7 @@ function deviceHoldsApk({ serial, packageName, apkPath }, { exec = null } = {})
107
108
  if (!path) return false;
108
109
  let installed;
109
110
  try {
110
- installed = parseDeviceSha256(e.runFile("adb", [
111
+ installed = parseDeviceSha256(await e.runFileAsync("adb", [
111
112
  "-s",
112
113
  serial,
113
114
  "shell",
@@ -120,11 +121,11 @@ function deviceHoldsApk({ serial, packageName, apkPath }, { exec = null } = {})
120
121
  if (!installed) return false;
121
122
  return artifactsMatch(hashFile(apkPath), installed);
122
123
  }
123
- function deviceHoldsBundle({ udid, bundleId, appPath }, { exec = null } = {}) {
124
+ async function deviceHoldsBundle({ udid, bundleId, appPath }, { exec = null } = {}) {
124
125
  const e = exec || getExecutor();
125
126
  let container;
126
127
  try {
127
- container = parseAppContainerPath(e.runFile("xcrun", [
128
+ container = parseAppContainerPath(await e.runFileAsync("xcrun", [
128
129
  "simctl",
129
130
  "get_app_container",
130
131
  udid,
@@ -254,7 +255,40 @@ function readMemoryCulprits(exec = getExecutor(), platform = process.platform, t
254
255
  ], { timeoutMs: 5e3 });
255
256
  for (const line of listed?.split("\n") ?? []) {
256
257
  const match = /^\s*(\d+)\s+(.*)$/.exec(line);
257
- if (match) commandLines.set(Number(match[1]), match[2]);
258
+ const command = match?.[2];
259
+ if (command !== void 0) commandLines.set(Number(match?.[1]), command);
260
+ }
261
+ }
262
+ return findMemoryCulprits(processes, totalBytes, commandLines);
263
+ }
264
+ async function readMemoryCulpritsAsync(exec = getExecutor(), platform = process.platform, totalBytes = totalmem()) {
265
+ if (platform !== "darwin") return null;
266
+ const output = await exec.runFileQuietAsync("/usr/bin/top", [
267
+ "-l",
268
+ "1",
269
+ "-o",
270
+ "mem",
271
+ "-n",
272
+ String(TOP_ROWS),
273
+ "-stats",
274
+ "pid,mem,command"
275
+ ], { timeoutMs: 1e4 });
276
+ if (output === null) return null;
277
+ const processes = parseTopMemory(output);
278
+ const java = processes.filter((entry) => entry.name === "java").map((entry) => entry.pid);
279
+ const commandLines = /* @__PURE__ */ new Map();
280
+ if (java.length) {
281
+ const listed = await exec.runFileQuietAsync("/bin/ps", [
282
+ "-ww",
283
+ "-o",
284
+ "pid=,command=",
285
+ "-p",
286
+ java.join(",")
287
+ ], { timeoutMs: 5e3 });
288
+ for (const line of listed?.split("\n") ?? []) {
289
+ const match = /^\s*(\d+)\s+(.*)$/.exec(line);
290
+ const command = match?.[2];
291
+ if (command !== void 0) commandLines.set(Number(match?.[1]), command);
258
292
  }
259
293
  }
260
294
  return findMemoryCulprits(processes, totalBytes, commandLines);
@@ -270,19 +304,31 @@ function memoryCulpritFindings(culprits) {
270
304
  }
271
305
  //#endregion
272
306
  //#region src/host-memory.ts
307
+ function pressureValue(value) {
308
+ switch (value.trim()) {
309
+ case "1": return "normal";
310
+ case "2": return "warning";
311
+ case "4": return "critical";
312
+ default: return null;
313
+ }
314
+ }
273
315
  function readHostMemoryPressure(exec = getExecutor(), platform = process.platform) {
274
316
  if (platform !== "darwin") return null;
275
317
  try {
276
- switch (exec.runFile("/usr/sbin/sysctl", ["-n", "kern.memorystatus_vm_pressure_level"], { timeoutMs: 2e3 }).trim()) {
277
- case "1": return "normal";
278
- case "2": return "warning";
279
- case "4": return "critical";
280
- default: return null;
281
- }
318
+ return pressureValue(exec.runFile("/usr/sbin/sysctl", ["-n", "kern.memorystatus_vm_pressure_level"], { timeoutMs: 2e3 }));
282
319
  } catch {
283
320
  return null;
284
321
  }
285
322
  }
323
+ async function readHostMemoryPressureAsync(exec = getExecutor(), platform = process.platform, signal, operation) {
324
+ if (platform !== "darwin") return null;
325
+ const value = await runOperationFileQuiet(operation, exec, "/usr/sbin/sysctl", ["-n", "kern.memorystatus_vm_pressure_level"], {
326
+ timeoutMs: 2e3,
327
+ signal,
328
+ cwd: operation?.cwd
329
+ });
330
+ return value === null ? null : pressureValue(value);
331
+ }
286
332
  function memoryCulpritsUnder(pressure, exec = getExecutor()) {
287
333
  return pressure === "warning" || pressure === "critical" ? readMemoryCulprits(exec) : null;
288
334
  }
@@ -303,15 +349,19 @@ function parseIosSimulatorApp(value, source = "iosSimulatorApp in machine config
303
349
  Object.assign(error, { code: "STIM_BAD_ARG" });
304
350
  throw error;
305
351
  }
306
- function configuredIosSimulatorViewer(override) {
352
+ function configuredIosSimulatorViewer(override, env) {
307
353
  const configured = loadConfig$1()?.iosSimulatorApp;
308
354
  const chosen = override ?? (configured === void 0 ? void 0 : parseIosSimulatorApp(configured));
309
- return { open: (udid) => openSimulator(chosen ?? settingDefault(settingDefinition("iosSimulatorApp")).value, udid) };
355
+ return { open: async (udid) => {
356
+ if (chosen) return openSimulator(chosen, udid);
357
+ const installed = await stimDesktopInstalledAsync(process.platform, env);
358
+ return openSimulator(settingDefault(settingDefinition("iosSimulatorApp"), () => installed).value, udid);
359
+ } };
310
360
  }
311
- function openSimulator(app, udid) {
361
+ async function openSimulator(app, udid) {
312
362
  const exec = getExecutor();
313
363
  if (app === "stim-desktop") {
314
- exec.runFileQuiet("open", [
364
+ await exec.runFileQuietAsync("open", [
315
365
  "-g",
316
366
  "-a",
317
367
  "Stim",
@@ -320,21 +370,21 @@ function openSimulator(app, udid) {
320
370
  return;
321
371
  }
322
372
  if (app === "siniulator") {
323
- exec.runFileQuiet("open", [
373
+ await exec.runFileQuietAsync("open", [
324
374
  "-a",
325
375
  "Siniulator",
326
376
  `siniulator://open?udid=${udid}`
327
377
  ], OPEN_OPTIONS);
328
378
  return;
329
379
  }
330
- const simctlPath = exec.runFileQuiet("xcrun", ["--find", "simctl"], OPEN_OPTIONS);
380
+ const simctlPath = await exec.runFileQuietAsync("xcrun", ["--find", "simctl"], OPEN_OPTIONS);
331
381
  const deviceHubApp = simctlPath ? resolve(dirname(simctlPath), "..", "..", "..", "Applications", "DeviceHub.app") : null;
332
382
  const args = deviceHubApp && existsSync(deviceHubApp) ? [
333
383
  "-a",
334
384
  deviceHubApp,
335
385
  `devices://device/open?id=${udid}`
336
386
  ] : ["-a", "Simulator"];
337
- exec.runFileQuiet("open", args, OPEN_OPTIONS);
387
+ await exec.runFileQuietAsync("open", args, OPEN_OPTIONS);
338
388
  }
339
389
  //#endregion
340
390
  //#region src/devices/ios.ts
@@ -398,19 +448,31 @@ function createIosSimSnapshot() {
398
448
  let cached = null;
399
449
  return {
400
450
  read() {
401
- cached ??= listAllIosSims({ includeUnavailable: true });
402
- return cached;
451
+ const entry = cached ??= {};
452
+ entry.value ??= listAllIosSims({ includeUnavailable: true });
453
+ return entry.value;
454
+ },
455
+ async readAsync() {
456
+ const entry = cached ??= {};
457
+ if (entry.value) return entry.value;
458
+ entry.pending ??= listAllIosSimsAsync({ includeUnavailable: true }).then((value) => entry.value = value).catch((error) => {
459
+ entry.pending = void 0;
460
+ throw error;
461
+ });
462
+ return entry.pending;
403
463
  },
404
464
  invalidate() {
405
465
  cached = null;
406
466
  }
407
467
  };
408
468
  }
409
- async function listAllIosSimsAsync({ timeoutMs = 3e4 } = {}) {
410
- return parseSimctlList(await getExecutor().runFileAsync("xcrun", SIMCTL_LIST_ARGS, {
469
+ async function listAllIosSimsAsync({ timeoutMs = 3e4, includeUnavailable = false, signal, operation } = {}) {
470
+ return parseSimctlList(await runOperationFile(operation, getExecutor(), "xcrun", SIMCTL_LIST_ARGS, {
411
471
  timeoutMs,
412
- killSignal: "SIGKILL"
413
- }));
472
+ killSignal: "SIGKILL",
473
+ signal,
474
+ cwd: operation?.cwd
475
+ }), { includeUnavailable });
414
476
  }
415
477
  function parseRuntimeVersion(runtimeId) {
416
478
  const m = runtimeId.match(/iOS-(\d+)(?:-(\d+))?$/);
@@ -479,9 +541,9 @@ async function awaitBootCommand(args, attemptMs, onLine) {
479
541
  const detail = lines.length ? `: ${lines.join(" | ")}` : "";
480
542
  throw new Error(`${command} failed with exit code ${result.code ?? "unknown"}${detail}`);
481
543
  }
482
- async function bootIosSim(udid, { timeoutMs = IOS_BOOT_TIMEOUT_MS, attemptMs = BOOTSTATUS_ATTEMPT_MS, simulatorApp, openViewer = true, label = udid, out = () => {} } = {}) {
544
+ async function bootIosSim(udid, { timeoutMs = IOS_BOOT_TIMEOUT_MS, attemptMs = BOOTSTATUS_ATTEMPT_MS, simulatorApp, env, openViewer = true, label = udid, out = () => {} } = {}) {
483
545
  const exec = getExecutor();
484
- const viewer = configuredIosSimulatorViewer(simulatorApp);
546
+ const viewer = configuredIosSimulatorViewer(simulatorApp, env);
485
547
  const started = Date.now();
486
548
  const deadline = started + timeoutMs;
487
549
  let worst = null;
@@ -544,7 +606,7 @@ async function bootIosSim(udid, { timeoutMs = IOS_BOOT_TIMEOUT_MS, attemptMs = B
544
606
  }
545
607
  let state;
546
608
  try {
547
- state = listAllIosSims({ timeoutMs: BOOT_STATE_LIST_TIMEOUT_MS }).find((s) => s.udid === udid)?.state ?? null;
609
+ state = (await listAllIosSimsAsync({ timeoutMs: BOOT_STATE_LIST_TIMEOUT_MS })).find((s) => s.udid === udid)?.state ?? null;
548
610
  } catch {
549
611
  state = void 0;
550
612
  }
@@ -558,25 +620,49 @@ async function bootIosSim(udid, { timeoutMs = IOS_BOOT_TIMEOUT_MS, attemptMs = B
558
620
  } finally {
559
621
  clearInterval(monitor);
560
622
  }
561
- if (openViewer) viewer.open(udid);
623
+ if (openViewer) await viewer.open(udid);
562
624
  }
563
- function shutdownIosSim(udid) {
564
- getExecutor().runFileQuiet("xcrun", [
565
- "simctl",
566
- "shutdown",
567
- udid
568
- ], SIMCTL_OPTIONS);
625
+ async function shutdownIosSim(udid, operation) {
626
+ if (!operation) {
627
+ await getExecutor().runFileQuietAsync("xcrun", [
628
+ "simctl",
629
+ "shutdown",
630
+ udid
631
+ ], SIMCTL_OPTIONS);
632
+ return;
633
+ }
634
+ try {
635
+ await runOperationFile(operation, getExecutor(), "xcrun", [
636
+ "simctl",
637
+ "shutdown",
638
+ udid
639
+ ], {
640
+ ...SIMCTL_OPTIONS,
641
+ cwd: operation?.cwd
642
+ });
643
+ } catch (cause) {
644
+ if (cause instanceof WorkspaceProcessCleanupError) throw cause;
645
+ operation?.signal.throwIfAborted();
646
+ }
569
647
  }
570
- function listIosDeviceTypes() {
571
- const out = getExecutor().runFile("xcrun", [
572
- "simctl",
573
- "list",
574
- "devicetypes",
575
- "--json"
576
- ], {
577
- timeoutMs: 3e4,
578
- killSignal: "SIGKILL"
579
- });
648
+ const LIST_DEVICE_TYPES_ARGS = [
649
+ "simctl",
650
+ "list",
651
+ "devicetypes",
652
+ "--json"
653
+ ];
654
+ const LIST_DEVICE_TYPES_OPTIONS = {
655
+ timeoutMs: 3e4,
656
+ killSignal: "SIGKILL"
657
+ };
658
+ async function listIosDeviceTypesAsync({ signal, operation } = {}) {
659
+ return parseIosDeviceTypes(await runOperationFile(operation, getExecutor(), "xcrun", LIST_DEVICE_TYPES_ARGS, {
660
+ ...LIST_DEVICE_TYPES_OPTIONS,
661
+ signal,
662
+ cwd: operation?.cwd
663
+ }));
664
+ }
665
+ function parseIosDeviceTypes(out) {
580
666
  const data = JSON.parse(out);
581
667
  return isJsonObject(data) ? deviceTypesOf(data.devicetypes) : [];
582
668
  }
@@ -652,9 +738,9 @@ function ownedSimName(label, model = {
652
738
  function parkedSimName(udid, model) {
653
739
  return fitSimName(PARKED_SIM_LABEL, model, ` ${udid.replace(/-/g, "").slice(0, 4).toLowerCase()}`, true);
654
740
  }
655
- function resolveIosCreation({ deviceType, runtime } = {}) {
656
- const deviceTypes = listIosDeviceTypes();
657
- const runtimes = listIosRuntimes();
741
+ async function resolveIosCreation({ deviceType, runtime } = {}) {
742
+ const deviceTypes = await listIosDeviceTypesAsync();
743
+ const runtimes = await listIosRuntimesAsync();
658
744
  const pick = pickDefaultIosCreation(deviceTypes, runtimes, {
659
745
  deviceType,
660
746
  runtime
@@ -667,15 +753,16 @@ function resolveIosCreation({ deviceType, runtime } = {}) {
667
753
  runtime: runtimes.find((r) => r.identifier === pick.runtimeId)?.version ?? null
668
754
  };
669
755
  }
670
- function createOwnedIosSim(label, { deviceType, runtime, suffix = "" } = {}, choice = resolveIosCreation({
671
- deviceType,
672
- runtime
673
- })) {
756
+ async function createOwnedIosSim(label, { deviceType, runtime, suffix = "" } = {}, choice) {
757
+ choice ??= await resolveIosCreation({
758
+ deviceType,
759
+ runtime
760
+ });
674
761
  const name = ownedSimName(label, {
675
762
  model: choice.deviceType,
676
763
  runtime: choice.runtime
677
764
  }, suffix);
678
- const udid = getExecutor().runFile("xcrun", [
765
+ const udid = (await getExecutor().runFileAsync("xcrun", [
679
766
  "simctl",
680
767
  "create",
681
768
  name,
@@ -684,7 +771,7 @@ function createOwnedIosSim(label, { deviceType, runtime, suffix = "" } = {}, cho
684
771
  ], {
685
772
  timeoutMs: SIMCTL_CREATE_TIMEOUT_MS,
686
773
  killSignal: "SIGKILL"
687
- }).trim();
774
+ })).trim();
688
775
  recordCreatedDevice("ios", udid);
689
776
  return {
690
777
  udid,
@@ -693,23 +780,29 @@ function createOwnedIosSim(label, { deviceType, runtime, suffix = "" } = {}, cho
693
780
  runtime: choice.runtime
694
781
  };
695
782
  }
696
- function renameIosSim(udid, name) {
697
- getExecutor().runFile("xcrun", [
783
+ async function renameIosSim(udid, name, operation) {
784
+ await runOperationFile(operation, getExecutor(), "xcrun", [
698
785
  "simctl",
699
786
  "rename",
700
787
  udid,
701
788
  name
702
- ], SIMCTL_OPTIONS);
789
+ ], {
790
+ ...SIMCTL_OPTIONS,
791
+ cwd: operation?.cwd
792
+ });
703
793
  }
704
- function eraseIosSim(udid) {
705
- getExecutor().runFile("xcrun", [
794
+ async function eraseIosSim(udid, operation) {
795
+ await runOperationFile(operation, getExecutor(), "xcrun", [
706
796
  "simctl",
707
797
  "erase",
708
798
  udid
709
- ], SIMCTL_OPTIONS);
799
+ ], {
800
+ ...SIMCTL_OPTIONS,
801
+ cwd: operation?.cwd
802
+ });
710
803
  }
711
- function resetIosPrivacy(udid) {
712
- getExecutor().runFile("xcrun", [
804
+ async function resetIosPrivacy(udid) {
805
+ await getExecutor().runFileAsync("xcrun", [
713
806
  "simctl",
714
807
  "privacy",
715
808
  udid,
@@ -717,8 +810,8 @@ function resetIosPrivacy(udid) {
717
810
  "all"
718
811
  ], SIMCTL_OPTIONS);
719
812
  }
720
- function resetIosKeychain(udid) {
721
- getExecutor().runFile("xcrun", [
813
+ async function resetIosKeychain(udid) {
814
+ await getExecutor().runFileAsync("xcrun", [
722
815
  "simctl",
723
816
  "keychain",
724
817
  udid,
@@ -731,9 +824,9 @@ const CLEARED_CONTAINER_DIRS = [
731
824
  "tmp",
732
825
  "SystemData"
733
826
  ];
734
- function clearIosAppData(udid, bundleId, { defaultsPlist = null } = {}) {
827
+ async function clearIosAppData(udid, bundleId, { defaultsPlist = null } = {}) {
735
828
  const exec = getExecutor();
736
- if (defaultsPlist) exec.runFile("xcrun", [
829
+ if (defaultsPlist) await exec.runFileAsync("xcrun", [
737
830
  "simctl",
738
831
  "spawn",
739
832
  udid,
@@ -746,7 +839,7 @@ function clearIosAppData(udid, bundleId, { defaultsPlist = null } = {}) {
746
839
  input: defaultsPlist
747
840
  });
748
841
  else try {
749
- exec.runFile("xcrun", [
842
+ await exec.runFileAsync("xcrun", [
750
843
  "simctl",
751
844
  "spawn",
752
845
  udid,
@@ -757,7 +850,7 @@ function clearIosAppData(udid, bundleId, { defaultsPlist = null } = {}) {
757
850
  } catch (error) {
758
851
  if (!/Domain .* not found/.test(String(error?.message))) throw error;
759
852
  }
760
- const output = exec.runFile("xcrun", [
853
+ const output = await exec.runFileAsync("xcrun", [
761
854
  "simctl",
762
855
  "get_app_container",
763
856
  udid,
@@ -785,8 +878,8 @@ function clearIosAppData(udid, bundleId, { defaultsPlist = null } = {}) {
785
878
  });
786
879
  }
787
880
  }
788
- function uninstallIosApp(udid, bundleId) {
789
- getExecutor().runFile("xcrun", [
881
+ async function uninstallIosApp(udid, bundleId) {
882
+ await getExecutor().runFileAsync("xcrun", [
790
883
  "simctl",
791
884
  "uninstall",
792
885
  udid,
@@ -806,17 +899,17 @@ function parseUserApps(jsonOutput) {
806
899
  return userApps;
807
900
  }
808
901
  const LISTAPPS_TIMEOUT_MS = 6e4;
809
- function listUserApps(udid) {
902
+ async function listUserApps(udid) {
810
903
  const exec = getExecutor();
811
904
  const dir = mkdtempSync(join(tmpdir(), "stim-listapps-"));
812
905
  const plist = join(dir, "apps.plist");
813
906
  try {
814
- writeFileSync(plist, exec.runFile("xcrun", [
907
+ writeFileSync(plist, await exec.runFileAsync("xcrun", [
815
908
  "simctl",
816
909
  "listapps",
817
910
  udid
818
911
  ], { timeoutMs: LISTAPPS_TIMEOUT_MS }));
819
- return parseUserApps(exec.runFile("plutil", [
912
+ return parseUserApps(await exec.runFileAsync("plutil", [
820
913
  "-convert",
821
914
  "json",
822
915
  "-o",
@@ -836,30 +929,41 @@ function resolveOwnedIosSim(udid, listed = listAllIosSims()) {
836
929
  if (!isStimOwnedSim(sim)) return { notOwned: sim.name };
837
930
  return { sim };
838
931
  }
839
- function deleteIosSim(udid) {
840
- const result = resolveOwnedIosSim(udid);
932
+ async function deleteIosSim(udid, operation) {
933
+ const result = resolveOwnedIosSim(udid, await listAllIosSimsAsync({
934
+ operation,
935
+ signal: operation?.signal
936
+ }));
841
937
  if (result.missing) return;
842
938
  if (result.notOwned) throw new Error(`Refusing to delete simulator "${result.notOwned}" (${udid}): not a Stim-owned sim; Stim has no record of creating it.`);
843
- getExecutor().runFile("xcrun", [
939
+ await runOperationFile(operation, getExecutor(), "xcrun", [
844
940
  "simctl",
845
941
  "delete",
846
942
  udid
847
- ], SIMCTL_OPTIONS);
943
+ ], {
944
+ ...SIMCTL_OPTIONS,
945
+ cwd: operation?.cwd
946
+ });
848
947
  forgetCreatedDevice("ios", udid);
849
948
  }
850
949
  const PARKED_DELETE_TIMEOUT_MS = 3e4;
851
- function deleteParkedIosSim(udid) {
852
- const sim = listAllIosSims({
950
+ async function deleteParkedIosSim(udid, operation) {
951
+ const sim = (await listAllIosSimsAsync({
853
952
  includeUnavailable: true,
854
- timeoutMs: PARKED_DELETE_TIMEOUT_MS
855
- }).find((entry) => entry.udid === udid);
953
+ timeoutMs: PARKED_DELETE_TIMEOUT_MS,
954
+ operation,
955
+ signal: operation?.signal
956
+ })).find((entry) => entry.udid === udid);
856
957
  if (!sim) return;
857
958
  if (!isStimOwnedSim(sim)) throw new Error(`Simulator ${udid} is now named "${sim.name}" and is not Stim-owned; refusing to delete it.`);
858
- getExecutor().runFile("xcrun", [
959
+ await runOperationFile(operation, getExecutor(), "xcrun", [
859
960
  "simctl",
860
961
  "delete",
861
962
  udid
862
- ], { timeoutMs: PARKED_DELETE_TIMEOUT_MS });
963
+ ], {
964
+ timeoutMs: PARKED_DELETE_TIMEOUT_MS,
965
+ cwd: operation?.cwd
966
+ });
863
967
  forgetCreatedDevice("ios", udid);
864
968
  }
865
969
  const LIST_RUNTIMES_ARGS = [
@@ -875,8 +979,11 @@ const LIST_RUNTIMES_OPTIONS = {
875
979
  function listIosRuntimes() {
876
980
  return parseIosRuntimes(getExecutor().runFile("xcrun", LIST_RUNTIMES_ARGS, LIST_RUNTIMES_OPTIONS));
877
981
  }
878
- async function listIosRuntimesAsync() {
879
- return parseIosRuntimes(await getExecutor().runFileAsync("xcrun", LIST_RUNTIMES_ARGS, LIST_RUNTIMES_OPTIONS));
982
+ async function listIosRuntimesAsync({ signal } = {}) {
983
+ return parseIosRuntimes(await getExecutor().runFileAsync("xcrun", LIST_RUNTIMES_ARGS, {
984
+ ...LIST_RUNTIMES_OPTIONS,
985
+ signal
986
+ }));
880
987
  }
881
988
  function parseIosRuntimes(out) {
882
989
  const data = JSON.parse(out);
@@ -889,4 +996,4 @@ function parseIosRuntimes(out) {
889
996
  }] : []);
890
997
  }
891
998
  //#endregion
892
- export { configuredIosSimulatorViewer as A, resetIosKeychain as C, sanitizeDeviceLabel as D, resolveOwnedIosSim as E, memoryCulpritAdvice as F, memoryCulpritFindings as I, readMemoryCulprits as L, hostMemoryPressureAdvice as M, memoryCulpritsUnder as N, shutdownIosSim as O, readHostMemoryPressure as P, deviceHoldsApk as R, renameIosSim as S, resolveIosCreation as T, ownedSimName as _, createOwnedIosSim as a, parseSimctlList as b, eraseIosSim as c, listAllIosSims as d, listAllIosSimsAsync as f, listUserApps as g, listIosRuntimesAsync as h, createIosSimSnapshot as i, parseIosSimulatorApp as j, uninstallIosApp as k, iosRuntimeMatches as l, listIosRuntimes as m, bootIosSim as n, deleteIosSim as o, listIosDeviceTypes as p, clearIosAppData as r, deleteParkedIosSim as s, IOS_BOOT_TIMEOUT_MS as t, iosSimulatorFailureAdvice as u, parkedSimName as v, resetIosPrivacy as w, pickDefaultIosCreation as x, parseRuntimeVersion as y, deviceHoldsBundle as z };
999
+ export { configuredIosSimulatorViewer as A, deviceHoldsBundle as B, resetIosKeychain as C, sanitizeDeviceLabel as D, resolveOwnedIosSim as E, readHostMemoryPressureAsync as F, memoryCulpritAdvice as I, memoryCulpritFindings as L, hostMemoryPressureAdvice as M, memoryCulpritsUnder as N, shutdownIosSim as O, readHostMemoryPressure as P, readMemoryCulpritsAsync as R, renameIosSim as S, resolveIosCreation as T, ownedSimName as _, createOwnedIosSim as a, parseSimctlList as b, eraseIosSim as c, listAllIosSims as d, listAllIosSimsAsync as f, listUserApps as g, listIosRuntimesAsync as h, createIosSimSnapshot as i, parseIosSimulatorApp as j, uninstallIosApp as k, iosRuntimeMatches as l, listIosRuntimes as m, bootIosSim as n, deleteIosSim as o, listIosDeviceTypesAsync as p, clearIosAppData as r, deleteParkedIosSim as s, IOS_BOOT_TIMEOUT_MS as t, iosSimulatorFailureAdvice as u, parkedSimName as v, resetIosPrivacy as w, pickDefaultIosCreation as x, parseRuntimeVersion as y, deviceHoldsApk as z };