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.
- package/README.md +141 -8
- package/dist/acquire-artifact-Co2k4f7O.mjs +171 -0
- package/dist/act-DsuqEkiM.mjs +2801 -0
- package/dist/activity-CMLmzp7o.mjs +1397 -0
- package/dist/{agent-device-usage-output-Dzgv6lgR.mjs → agent-device-usage-output-DUFaTMdd.mjs} +23 -67
- package/dist/{android-DCKZrNvV.mjs → android-ByRMUoiJ.mjs} +157 -93
- package/dist/{android-Mz_Inn3w.mjs → android-C7sVmyI9.mjs} +299 -116
- package/dist/{android-Dlzxshgp.mjs → android-DGkNqa_c.mjs} +5 -5
- package/dist/{android-HqP1_vB_.mjs → android-DR5lZ2Az.mjs} +2 -2
- package/dist/android-cas-compiler.mjs +2 -2
- package/dist/{android-cas-Bl-cLJBk.mjs → android-cas-ngferVq2.mjs} +7 -6
- package/dist/android-project-BCAAmMwz.mjs +12 -0
- package/dist/android-project-DVWyCbWU.d.mts +391 -0
- package/dist/api.d.mts +810 -64
- package/dist/api.mjs +782 -1
- package/dist/{artifact-HSwkIWEQ.mjs → artifact-8EY8SAPw.mjs} +240 -213
- package/dist/{artifact-D3czlUvT.mjs → artifact-DJPy518Y.mjs} +203 -164
- package/dist/artifact-platform-CXcmX_j3.mjs +27 -0
- package/dist/{browser-web-CA-F1GQo.mjs → browser-web-Bcv99PBM.mjs} +194 -64
- package/dist/budget-Cvwn54qV.mjs +9285 -0
- package/dist/{build-DYDbfkk5.mjs → build-CabC3G23.mjs} +153 -98
- package/dist/build-cache-Dv7RN200.mjs +602 -0
- package/dist/build-plan-DUC8Ka9y.mjs +248 -0
- package/dist/{cache-manifest-XH-fvDUj.mjs → cache-manifest-DSeQjt-Q.mjs} +2 -2
- package/dist/cache-manifest.mjs +1 -1
- package/dist/{ccache-zdKiYQ3E.mjs → ccache-Btwc36-I.mjs} +10 -9
- package/dist/{cdp-Dq_ypAlJ.mjs → cdp-3fwICjzi.mjs} +18 -5
- package/dist/{chrome-BnzZMqsR.mjs → chrome-Bbw689-6.mjs} +7 -4
- package/dist/{cli-CLP3diBm.mjs → cli-CHZa9Lvk.mjs} +20 -20
- package/dist/cli.mjs +1 -1
- package/dist/client-OyRoEuSr.mjs +1577 -0
- package/dist/collector-run.d.mts +4 -40
- package/dist/collector-run.mjs +9 -8
- package/dist/{command-output-BTy8hZ0F.mjs → command-output-gwpm28fu.mjs} +1 -1
- package/dist/config-DlrsduwG.mjs +955 -0
- package/dist/{created-devices-Dzd5C2LF.mjs → created-devices-x9rN6bhs.mjs} +14 -4
- package/dist/{dependency-state-DG0p31-y.mjs → dependency-state-1I9KZT1Y.mjs} +20 -5
- package/dist/{detached-entry-B9C_zeQC.mjs → detached-entry-BwNEtIrP.mjs} +1 -1
- package/dist/{dev-client-DAWVIGBu.mjs → dev-client-BSDR5h3F.mjs} +2 -2
- package/dist/{device-BECOiufl.mjs → device-B-L3Fbxy.mjs} +91 -34
- package/dist/device-DklWZLqb.mjs +1068 -0
- package/dist/{device-capacity-CBUAcRyQ.mjs → device-capacity-DK5_EwRS.mjs} +42 -13
- package/dist/device-host-worker.mjs +76 -79
- package/dist/{device-ios-COSi6oS1.mjs → device-ios-DoB6KFCO.mjs} +77 -51
- package/dist/{device-lease-run-Cw2M4z51.mjs → device-lease-run-xJPQ_QQG.mjs} +14 -26
- package/dist/{device-pool-Bf-pOhSw.mjs → device-pool-BMkdsefq.mjs} +5 -5
- package/dist/{doctor-kfMBnUw6.mjs → doctor-Bo7BXLux.mjs} +271 -320
- package/dist/{doctor-CB8oZKCk.mjs → doctor-D5_EzwfA.mjs} +186 -91
- package/dist/doctor-fingerprint-DZLoYFVb.mjs +16 -0
- package/dist/doctor-fingerprint.mjs +19 -0
- package/dist/doctor-thjWAV0z.mjs +2 -0
- package/dist/{doctor-watchman-BRyV2adA.mjs → doctor-watchman-N2wDotwQ.mjs} +40 -21
- package/dist/{eas-build-JyfqyHfC.mjs → eas-build-CwknaQYj.mjs} +53 -20
- package/dist/{build-plan-B7SZsc2N.mjs → eas-fallback-CSgAulr5.mjs} +41 -214
- package/dist/{watchman-CPQFZLXY.mjs → eas-session-ledger-DlY_serQ.mjs} +230 -11
- package/dist/{error-diagnostics-BR677IDM.mjs → error-diagnostics-DBWO2rxE.mjs} +172 -82
- package/dist/exec-DEoAhcze.mjs +858 -0
- package/dist/exec-DnYc4HGH.d.mts +78 -0
- package/dist/{gc-qWOMdnER.mjs → gc-CXxN-4SE.mjs} +1091 -1029
- package/dist/gc-DnNDQyaP.mjs +3 -0
- package/dist/{guide-G9cAbVAc.mjs → guide-Br0LEfKy.mjs} +1165 -297
- package/dist/{hosted-android-C3MHGld1.mjs → hosted-android-B-9f-jkd.mjs} +10 -8
- package/dist/{hosted-client-ZEKpS9vw.mjs → hosted-client-DZAPrcro.mjs} +34 -19
- package/dist/{hosted-ios-l-o3iM9J.mjs → hosted-ios-CsCS21hn.mjs} +1 -1
- package/dist/{hosted-logs-EzQM7-3Z.mjs → hosted-logs-FIRx9X2f.mjs} +77 -43
- package/dist/{hosted-macos-BACVAVqE.mjs → hosted-macos-_awYSpfv.mjs} +35 -22
- package/dist/{hosted-native-A4s1QPXe.mjs → hosted-native-BdzE668-.mjs} +49 -27
- package/dist/idle-C4cZ757K.d.mts +24 -0
- package/dist/{idle-shutdown-DtxhPTKe.mjs → idle-shutdown-DDg3SdvY.mjs} +11 -10
- package/dist/ios-CDvlmUs7.d.mts +24 -0
- package/dist/{ios-BwVCF7oA.mjs → ios-Ds1clbIt.mjs} +8 -8
- package/dist/{ios-device-D7pi2Sca.mjs → ios-device--h_-8ENa.mjs} +51 -26
- package/dist/{ios-device-B5veSDDQ.mjs → ios-device-BXZ0c7Kb.mjs} +1 -1
- package/dist/{ios-RkW4pnQf.mjs → ios-hcBpnEGk.mjs} +200 -93
- package/dist/{ios-Ce7bc7br.mjs → ios-pm4nL6By.mjs} +160 -108
- package/dist/{ios-project-K9hY_Jab.mjs → ios-project-CZhKODF3.mjs} +13 -13
- package/dist/ios-signing-BtAffm0A.mjs +489 -0
- package/dist/{ios-state-CBLe1xYw.mjs → ios-state-Dtw5K2aI.mjs} +1 -1
- package/dist/{ios-nOLJGVdy.mjs → ios-xtlRHaeB.mjs} +1 -1
- package/dist/{js-swap-Bb3nsS07.mjs → js-swap-Bwhh4S7V.mjs} +30 -25
- package/dist/{launch-C3qJ6Agb.mjs → launch-BjxemNpK.mjs} +85 -543
- package/dist/{launch-F4sOqAhB.mjs → launch-CCzXlc8r.mjs} +91 -90
- package/dist/logs-BfwwadsZ.mjs +479 -0
- package/dist/logs-jTS_lHSo.mjs +248 -0
- package/dist/{macos-D7uDvO-z.mjs → macos-DVlSSyUg.mjs} +1 -1
- package/dist/macos-NfV2D7dO.mjs +694 -0
- package/dist/macos-run.mjs +1 -1
- package/dist/maintenance-run.mjs +123 -248
- package/dist/{metro-DnCEjCxs.mjs → metro-DiXtA3Ty.mjs} +107 -30
- package/dist/metro-gateway-CKZqKqx7.mjs +209 -0
- package/dist/{named-ports-4WopRPg-.mjs → named-ports-DkEzOfzO.mjs} +42 -90
- package/dist/native-android-CqgnOgsT.mjs +645 -0
- package/dist/native-gradle-artifact-inputs-DHFnmrVf.mjs +270 -0
- package/dist/native-gradle-inputs-Dnh84Zbd.mjs +211 -0
- package/dist/native-inputs-TRTTTRxt.mjs +91 -0
- package/dist/native-run-NwUuxbkg.mjs +276 -0
- package/dist/{native-runtime-k8dTIrbK.mjs → native-runtime-B7KIafpM.mjs} +11 -9
- package/dist/native-source-Y0yLhFyQ.mjs +133 -0
- package/dist/{native-xcode-inputs-CykopJdM.mjs → native-xcode-inputs-D_VOfFL7.mjs} +26 -18
- package/dist/{native-xcode-ios-Bbf30Gm0.mjs → native-xcode-ios-BYDOHWLN.mjs} +104 -60
- package/dist/{ndjson-GOnbyvso.mjs → ndjson-CgE_o3Dl.mjs} +3 -3
- package/dist/offload-worker.d.mts +59 -41
- package/dist/offload-worker.mjs +478 -115
- package/dist/operation-exec-BW0em61G.mjs +171 -0
- package/dist/{ownership-DCtw_2IA.mjs → ownership-C5fo5Edb.mjs} +3 -3
- package/dist/{page-DRHy329N.mjs → page-DBL2PiUU.mjs} +12 -5
- package/dist/paths-BsJMoPP2.mjs +12 -0
- package/dist/paths-DQtTgsBf.mjs +42 -0
- package/dist/{placement-log-MOfPVgaM.mjs → placement-log-BnGgJRRZ.mjs} +5 -5
- package/dist/{plan-placement-V0TdzYXp.mjs → plan-placement-DIsMtN-d.mjs} +15 -11
- package/dist/{ports-DdSUicVo.mjs → ports-Cy1RkmuQ.mjs} +3 -3
- package/dist/prebuild-D4JoEAEs.mjs +484 -0
- package/dist/{project-_phNIJfs.mjs → project-wM_XFTvE.mjs} +65 -37
- package/dist/{pull-request-CQ8sPbZa.mjs → pull-request-W1IuLXDt.mjs} +102 -20
- package/dist/pull-request-eODyIqZF.d.mts +124 -0
- package/dist/pull-requests.d.mts +2 -120
- package/dist/pull-requests.mjs +2 -2
- package/dist/{react-native-android-CM1XRDwv.mjs → react-native-android-6OZ7MSM7.mjs} +121 -72
- package/dist/{gradle-DSrXb6lG.mjs → react-native-build-Dvd8hC21.mjs} +292 -15
- package/dist/react-native-doctor-DsoSF1Y9.mjs +234 -0
- package/dist/{react-native-ios-Dhq_eiYQ.mjs → react-native-ios-4u1Rn-GR.mjs} +71 -39
- package/dist/{recordings-D0d5aQt0.mjs → recordings-CQmfzAh7.mjs} +12 -9
- package/dist/registration-BcRgF6Ox.mjs +51 -0
- package/dist/{reload-C8JhxjSh.mjs → reload-BzkYabB-.mjs} +94 -47
- package/dist/reload-D7AVlb8N.mjs +2 -0
- package/dist/{remote-BiR6aYjy.mjs → remote-DjGDmlTZ.mjs} +26 -18
- package/dist/result-D2Ykz_iD.mjs +435 -0
- package/dist/{run-BtPgpKks.mjs → run-DidHghD1.mjs} +5 -5
- package/dist/selection-DSMbWEX2.mjs +620 -0
- package/dist/{server-bare-R2m_gsH8.mjs → server-bare-CafzuyFB.mjs} +3 -4
- package/dist/{server-command-CTtCkmcQ.mjs → server-command-C6QjeupS.mjs} +14 -7
- package/dist/{server-expo-DsguMGUF.mjs → server-expo-CrjB29pq.mjs} +54 -11
- package/dist/server-expo-D58c9L0M.mjs +2 -0
- package/dist/{settings-B717odTD.mjs → settings-C7O8A6ZI.mjs} +309 -119
- package/dist/settings-DpR-1Wnn.mjs +114 -0
- package/dist/settings-write-CzD60rOD.mjs +360 -0
- package/dist/settings.schema.json +176 -16
- package/dist/{simslim-CCr3rE-A.mjs → simslim-BNckWpXi.mjs} +14 -12
- package/dist/{slot-launch-DPt0m9Nd.mjs → slot-launch-CbfmNgM6.mjs} +15 -20
- package/dist/{spawn-entry-Dcb7sDUz.mjs → spawn-entry-jw19m8Nl.mjs} +0 -1
- package/dist/stage-Bps5oius.mjs +200 -0
- package/dist/{start-TXeMmmO2.mjs → start-Br-oxqMD.mjs} +1 -1
- package/dist/start-EojN4WFz.mjs +1364 -0
- package/dist/{state-D1Icyjlu.mjs → state--smjFSTL.mjs} +55 -13
- package/dist/{state-CG_OFoaA.mjs → state-08I3hw3_.mjs} +3 -2
- package/dist/{stats-BoY5sEPU.mjs → stats-D3GerlFW.mjs} +7 -13
- package/dist/stats-report-BzaPrRm6.mjs +16 -0
- package/dist/{status-BTA7kKiQ.mjs → status-BRROykC8.mjs} +7 -5
- package/dist/status-EvrK72L2.mjs +2 -0
- package/dist/{status-WgFbkRzj.mjs → status-WBDajew2.mjs} +554 -452
- package/dist/{status-watch-C23ILtf9.mjs → status-watch-Bg_u-pwR.mjs} +222 -25
- package/dist/status-worker.d.mts +1 -0
- package/dist/status-worker.mjs +19 -0
- package/dist/stim-desktop-D5OGpYZM.mjs +112 -0
- package/dist/{stop-DR6VoDIk.mjs → stop-DTZ9uTw3.mjs} +2 -2
- package/dist/{stop-DPEhunlw.mjs → stop-Dky10AEJ.mjs} +33 -23
- package/dist/{stop-BNmBMi1F.mjs → stop-Mv6W9FAk.mjs} +137 -98
- package/dist/supervisor-run.d.mts +8 -17
- package/dist/supervisor-run.mjs +56 -28
- package/dist/{support-CwjbFs9H.mjs → support-CNioewsd.mjs} +14 -14
- package/dist/{support-DMTqj3Hm.mjs → support-yUiOjnVY.mjs} +20 -13
- package/dist/swiftpm-artifact-inputs-DFcGsXDP.mjs +153 -0
- package/dist/swiftpm-macos-BIak-Rxv.mjs +532 -0
- package/dist/toolchain-BY8X8HXx.mjs +2 -0
- package/dist/toolchain-DpJMHq0n.mjs +876 -0
- package/dist/{trigger-CigAYjeL.mjs → trigger-Cbyc41d_.mjs} +21 -6
- package/dist/trigger-yb_nFzPF.mjs +2 -0
- package/dist/{warm-progress-BuY-Fvfn.mjs → warm-progress-CA3TgT3-.mjs} +263 -156
- package/dist/web-CZ07gd77.mjs +2 -0
- package/dist/{web-BDBMxDpx.mjs → web-DKx6yoFA.mjs} +20 -14
- package/dist/web-run.mjs +13 -12
- package/dist/windows-report.d.mts +1 -0
- package/dist/windows-report.mjs +18 -0
- package/dist/windows-report.ps1 +43 -0
- package/dist/{workspace-state-DJt_MMvf.mjs → workspace-state-U08dEzhG.mjs} +62 -58
- package/dist/{workspaces-C36s2jb9.mjs → workspaces-CpANmBlq.mjs} +1723 -1286
- package/dist/{worktree-CgvJYJ-Q.mjs → worktree-CHecZ4Oq.mjs} +1097 -547
- package/dist/worktree-ZqZVjD9K.mjs +2 -0
- package/dist/xcode-BXn9-xYx.mjs +896 -0
- package/package.json +7 -5
- package/shim/android-audio/Main.java +24 -0
- package/shim/android-audio/README.md +17 -0
- package/shim/android-audio.jar +0 -0
- package/shim/android-optimizations.gradle +7 -5
- package/dist/activity-BSV745Kz.mjs +0 -629
- package/dist/api-qvOzWyfO.mjs +0 -154
- package/dist/api-run.mjs +0 -294
- package/dist/app-install-BIKtMfPq.mjs +0 -896
- package/dist/artifact-lifecycle-DzPpBYvK.mjs +0 -30
- package/dist/budget-f7516Zk0.mjs +0 -4106
- package/dist/build-facts-DcLv2HSd.d.mts +0 -111
- package/dist/cancellation-C_22VQTH.mjs +0 -24
- package/dist/client-qQAaXSUs.mjs +0 -1771
- package/dist/config-BYDxlMY3.mjs +0 -562
- package/dist/device-DuiPJQSn.mjs +0 -290
- package/dist/device-lease-BX1sJQ2E.mjs +0 -1224
- package/dist/device-remote-xRT0Vmo9.mjs +0 -1272
- package/dist/eas-session-ledger-Cm0Gwq2F.mjs +0 -207
- package/dist/exec-DqKo9GKJ.mjs +0 -268
- package/dist/git-DDfFzkMm.mjs +0 -45
- package/dist/launch-verify-B6Q8hZP-.mjs +0 -428
- package/dist/logs-BGrEUaEs.mjs +0 -383
- package/dist/macos-Ch5VJmcS.mjs +0 -584
- package/dist/metro-gateway-CX9Xlkq2.mjs +0 -103
- package/dist/miss-reason-mKzZ4VvN.mjs +0 -238
- package/dist/native-android-D5qc3-_v.mjs +0 -226
- package/dist/native-gradle-inputs-BsLRrl7u.mjs +0 -349
- package/dist/ndjson-Du3j0AQ9.d.mts +0 -17
- package/dist/plan-C4TjdPsR.mjs +0 -260
- package/dist/prebuild-DYbucPXy.mjs +0 -212
- package/dist/preview-78a9kR_-.mjs +0 -1011
- package/dist/react-native-build-CtCccJtb.mjs +0 -239
- package/dist/react-native-doctor-CfRnFfjs.mjs +0 -78
- package/dist/remote-cache-OyOyVIS3.mjs +0 -526
- package/dist/result-CaJg5Iat.mjs +0 -186
- package/dist/server-expo-Bigriskl.mjs +0 -2
- package/dist/settings-BORNaaCO.mjs +0 -402
- package/dist/settings-vk3mJGSm.d.mts +0 -13
- package/dist/spawn-claims-DVS5RkMS.mjs +0 -72
- package/dist/stage-KNTQopqv.mjs +0 -157
- package/dist/start-BWqzODpb.mjs +0 -1116
- package/dist/stim-desktop-BzBN2Em2.mjs +0 -63
- package/dist/swiftpm-macos-DRNVJWlb.mjs +0 -119
- package/dist/tailnet-Dh-qiYzG.mjs +0 -265
- package/dist/toolchain-BFkAcstd.mjs +0 -2
- package/dist/toolchain-DxSsNssu.mjs +0 -1657
- package/dist/trigger-9_USgmxz.mjs +0 -2
- package/dist/web-Dq-i3wzJ.mjs +0 -2
- package/dist/worktree-DpLdCHga.mjs +0 -2
- package/dist/{api-run.d.mts → doctor-fingerprint.d.mts} +0 -0
- package/dist/{errors-DzkMYh8Q.mjs → errors-ccaPc4ox.mjs} +2 -2
|
@@ -1,14 +1,15 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
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
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
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.
|
|
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.
|
|
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.
|
|
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
|
-
|
|
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
|
-
|
|
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) =>
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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 ??=
|
|
402
|
-
|
|
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()
|
|
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 =
|
|
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
|
-
|
|
565
|
-
"
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
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
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
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 =
|
|
657
|
-
const runtimes =
|
|
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
|
|
671
|
-
|
|
672
|
-
|
|
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().
|
|
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()
|
|
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
|
-
],
|
|
789
|
+
], {
|
|
790
|
+
...SIMCTL_OPTIONS,
|
|
791
|
+
cwd: operation?.cwd
|
|
792
|
+
});
|
|
703
793
|
}
|
|
704
|
-
function eraseIosSim(udid) {
|
|
705
|
-
getExecutor()
|
|
794
|
+
async function eraseIosSim(udid, operation) {
|
|
795
|
+
await runOperationFile(operation, getExecutor(), "xcrun", [
|
|
706
796
|
"simctl",
|
|
707
797
|
"erase",
|
|
708
798
|
udid
|
|
709
|
-
],
|
|
799
|
+
], {
|
|
800
|
+
...SIMCTL_OPTIONS,
|
|
801
|
+
cwd: operation?.cwd
|
|
802
|
+
});
|
|
710
803
|
}
|
|
711
|
-
function resetIosPrivacy(udid) {
|
|
712
|
-
getExecutor().
|
|
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().
|
|
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.
|
|
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.
|
|
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.
|
|
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().
|
|
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.
|
|
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.
|
|
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()
|
|
939
|
+
await runOperationFile(operation, getExecutor(), "xcrun", [
|
|
844
940
|
"simctl",
|
|
845
941
|
"delete",
|
|
846
942
|
udid
|
|
847
|
-
],
|
|
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 =
|
|
950
|
+
async function deleteParkedIosSim(udid, operation) {
|
|
951
|
+
const sim = (await listAllIosSimsAsync({
|
|
853
952
|
includeUnavailable: true,
|
|
854
|
-
timeoutMs: PARKED_DELETE_TIMEOUT_MS
|
|
855
|
-
|
|
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()
|
|
959
|
+
await runOperationFile(operation, getExecutor(), "xcrun", [
|
|
859
960
|
"simctl",
|
|
860
961
|
"delete",
|
|
861
962
|
udid
|
|
862
|
-
], {
|
|
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,
|
|
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,
|
|
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 };
|