stim 1.20.2 → 1.21.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 +88 -8
- package/dist/acquire-artifact-CD4lbiWE.mjs +153 -0
- package/dist/act-DHAw2A2S.mjs +2667 -0
- package/dist/activity-BzVfHSrY.mjs +1376 -0
- package/dist/{agent-device-usage-output-Dzgv6lgR.mjs → agent-device-usage-output-zh1vhbLp.mjs} +21 -65
- package/dist/{android-HqP1_vB_.mjs → android-BEJ8Jpl7.mjs} +2 -2
- package/dist/{android-DCKZrNvV.mjs → android-BLgbNqox.mjs} +128 -78
- package/dist/{android-Dlzxshgp.mjs → android-CV_GCELZ.mjs} +5 -5
- package/dist/{android-Mz_Inn3w.mjs → android-DUYkNF4u.mjs} +184 -102
- package/dist/{android-cas-Bl-cLJBk.mjs → android-cas-Ct5b1xCK.mjs} +7 -6
- package/dist/android-cas-compiler.mjs +2 -2
- package/dist/android-project-BCAAmMwz.mjs +12 -0
- package/dist/api.d.mts +740 -8
- package/dist/api.mjs +585 -1
- package/dist/{artifact-HSwkIWEQ.mjs → artifact-B8T3S5gi.mjs} +223 -201
- package/dist/{artifact-D3czlUvT.mjs → artifact-DAuZ-FNU.mjs} +158 -148
- package/dist/{browser-web-CA-F1GQo.mjs → browser-web-QQzVjz3O.mjs} +26 -24
- package/dist/budget-Bs6SxxzO.mjs +9154 -0
- package/dist/{build-DYDbfkk5.mjs → build-CoPzQRNw.mjs} +144 -96
- package/dist/build-cache-DmyR9Zzc.mjs +602 -0
- package/dist/build-plan-CaFskB7_.mjs +188 -0
- package/dist/{cache-manifest-XH-fvDUj.mjs → cache-manifest-DkkqguoK.mjs} +2 -2
- package/dist/cache-manifest.mjs +1 -1
- package/dist/{ccache-zdKiYQ3E.mjs → ccache-BJRZ9pG3.mjs} +10 -9
- package/dist/{cdp-Dq_ypAlJ.mjs → cdp-CWmIUMbw.mjs} +18 -5
- package/dist/{chrome-BnzZMqsR.mjs → chrome-B6tfCta1.mjs} +7 -4
- package/dist/{cli-CLP3diBm.mjs → cli-0DYf8QhQ.mjs} +20 -20
- package/dist/cli.mjs +1 -1
- package/dist/client-B7QVOlCr.d.mts +253 -0
- package/dist/client-UXD70ZbM.mjs +1406 -0
- package/dist/collector-run.d.mts +4 -40
- package/dist/collector-run.mjs +9 -8
- package/dist/{command-output-BTy8hZ0F.mjs → command-output-B1UrjZHL.mjs} +1 -1
- package/dist/config-CYcBF478.mjs +949 -0
- package/dist/{created-devices-Dzd5C2LF.mjs → created-devices-CqeBlrEn.mjs} +3 -3
- package/dist/{dependency-state-DG0p31-y.mjs → dependency-state-BbKQW83h.mjs} +20 -5
- package/dist/{detached-entry-B9C_zeQC.mjs → detached-entry-DFRyG1_o.mjs} +1 -1
- package/dist/{dev-client-DAWVIGBu.mjs → dev-client-UOeESKm6.mjs} +2 -2
- package/dist/device-DCxH7_By.mjs +1068 -0
- package/dist/{device-BECOiufl.mjs → device-ExJq8Ei7.mjs} +35 -35
- package/dist/{device-capacity-CBUAcRyQ.mjs → device-capacity-CMlqEcvw.mjs} +43 -13
- package/dist/device-host-worker.mjs +65 -61
- package/dist/{device-ios-COSi6oS1.mjs → device-ios-DRUeKaFV.mjs} +48 -45
- package/dist/{device-lease-run-Cw2M4z51.mjs → device-lease-run-C8raGFoP.mjs} +14 -26
- package/dist/{device-pool-Bf-pOhSw.mjs → device-pool-DMRpVX9a.mjs} +5 -5
- package/dist/doctor-BLHCYxzi.mjs +2 -0
- package/dist/{doctor-kfMBnUw6.mjs → doctor-DTvaDOda.mjs} +281 -317
- package/dist/{doctor-CB8oZKCk.mjs → doctor-Dhqebm0q.mjs} +183 -91
- package/dist/doctor-fingerprint.mjs +19 -0
- package/dist/{doctor-watchman-BRyV2adA.mjs → doctor-watchman-Cv1F10Kj.mjs} +40 -21
- package/dist/{eas-build-JyfqyHfC.mjs → eas-build-BomfRnFT.mjs} +53 -20
- package/dist/{build-plan-B7SZsc2N.mjs → eas-fallback-DJwZpy0c.mjs} +26 -208
- package/dist/{watchman-CPQFZLXY.mjs → eas-session-ledger-op6A54yi.mjs} +229 -11
- package/dist/{error-diagnostics-BR677IDM.mjs → error-diagnostics-Bf0rZvG9.mjs} +172 -82
- package/dist/exec-H20xSg2T.d.mts +65 -0
- package/dist/exec-_UbtCQcG.mjs +750 -0
- package/dist/gc-C-WwL0yi.mjs +3 -0
- package/dist/{gc-qWOMdnER.mjs → gc-_-dCXdyL.mjs} +584 -796
- package/dist/git-C3iTsJaZ.mjs +73 -0
- package/dist/{guide-G9cAbVAc.mjs → guide-Yqwt2bd6.mjs} +941 -269
- package/dist/{hosted-android-C3MHGld1.mjs → hosted-android-Bw-honsd.mjs} +8 -6
- package/dist/{hosted-client-ZEKpS9vw.mjs → hosted-client-DB_gBPfY.mjs} +34 -19
- package/dist/{hosted-ios-l-o3iM9J.mjs → hosted-ios-CUvOf4Vr.mjs} +1 -1
- package/dist/{hosted-logs-EzQM7-3Z.mjs → hosted-logs-DL_P5AdN.mjs} +77 -43
- package/dist/{hosted-macos-BACVAVqE.mjs → hosted-macos-QI141yKk.mjs} +21 -17
- package/dist/{hosted-native-A4s1QPXe.mjs → hosted-native-Ksyjgzq-.mjs} +30 -21
- package/dist/idle-BVeRGroT.d.mts +24 -0
- package/dist/{idle-shutdown-DtxhPTKe.mjs → idle-shutdown-DaKmZi0z.mjs} +11 -10
- package/dist/{ios-BwVCF7oA.mjs → ios-CQ68hG9s.mjs} +8 -8
- package/dist/{ios-RkW4pnQf.mjs → ios-CpByZy12.mjs} +140 -80
- package/dist/{ios-device-B5veSDDQ.mjs → ios-device-CXGP1bsD.mjs} +1 -1
- package/dist/{ios-device-D7pi2Sca.mjs → ios-device-CwFMehUS.mjs} +51 -26
- package/dist/{ios-project-K9hY_Jab.mjs → ios-project-WuwwBdvW.mjs} +13 -13
- package/dist/{ios-nOLJGVdy.mjs → ios-qNJt4dFm.mjs} +1 -1
- package/dist/ios-signing-DTTIChGs.mjs +489 -0
- package/dist/{ios-state-CBLe1xYw.mjs → ios-state-DvFX-K_l.mjs} +1 -1
- package/dist/{ios-Ce7bc7br.mjs → ios-ubFsBzwq.mjs} +129 -86
- package/dist/{js-swap-Bb3nsS07.mjs → js-swap-Cc1dttps.mjs} +53 -26
- package/dist/{launch-F4sOqAhB.mjs → launch-CD1yVc7U.mjs} +91 -90
- package/dist/{launch-C3qJ6Agb.mjs → launch-Zq2mOSDy.mjs} +82 -541
- package/dist/logs-BS00Anxf.mjs +352 -0
- package/dist/logs-CMm05HxN.mjs +255 -0
- package/dist/{macos-D7uDvO-z.mjs → macos-B65--pPd.mjs} +1 -1
- package/dist/{macos-Ch5VJmcS.mjs → macos-C-0qJ6zq.mjs} +225 -212
- package/dist/macos-run.mjs +1 -1
- package/dist/maintenance-run.mjs +122 -247
- package/dist/{metro-DnCEjCxs.mjs → metro-DEXpIhHC.mjs} +67 -12
- package/dist/{metro-gateway-CX9Xlkq2.mjs → metro-gateway-BMJNlj3E.mjs} +20 -12
- package/dist/{named-ports-4WopRPg-.mjs → named-ports-BWTzt6mu.mjs} +8 -63
- package/dist/native-android-JACyjTZs.mjs +844 -0
- package/dist/{native-gradle-inputs-BsLRrl7u.mjs → native-gradle-inputs-Bep9JcSF.mjs} +128 -140
- package/dist/native-inputs-TRTTTRxt.mjs +91 -0
- package/dist/native-run-DY_RLx3C.mjs +277 -0
- package/dist/{native-runtime-k8dTIrbK.mjs → native-runtime-Dg1Q7tfF.mjs} +9 -8
- package/dist/{native-xcode-inputs-CykopJdM.mjs → native-xcode-inputs-CB2iQeWq.mjs} +27 -18
- package/dist/{native-xcode-ios-Bbf30Gm0.mjs → native-xcode-ios-CXX39F7o.mjs} +96 -47
- package/dist/{ndjson-GOnbyvso.mjs → ndjson-CgE_o3Dl.mjs} +3 -3
- package/dist/offload-worker.d.mts +1 -46
- package/dist/offload-worker.mjs +197 -66
- package/dist/{ownership-DCtw_2IA.mjs → ownership-DEmM5vhh.mjs} +3 -3
- package/dist/{page-DRHy329N.mjs → page-CPaHeYqj.mjs} +7 -4
- package/dist/paths-BsJMoPP2.mjs +12 -0
- package/dist/paths-DQtTgsBf.mjs +42 -0
- package/dist/{placement-log-MOfPVgaM.mjs → placement-log-BqGbTa61.mjs} +5 -5
- package/dist/{plan-placement-V0TdzYXp.mjs → plan-placement-Bwj-IjY1.mjs} +6 -6
- package/dist/{ports-DdSUicVo.mjs → ports-D-MmCTdv.mjs} +3 -3
- package/dist/prebuild-uD_ipCxF.mjs +449 -0
- package/dist/{project-_phNIJfs.mjs → project-BZNjmW_8.mjs} +65 -37
- package/dist/{pull-request-CQ8sPbZa.mjs → pull-request-Lfetn8Kr.mjs} +2 -2
- package/dist/pull-request-zjCSAryH.d.mts +120 -0
- package/dist/pull-requests.d.mts +1 -119
- package/dist/pull-requests.mjs +1 -1
- package/dist/{react-native-android-CM1XRDwv.mjs → react-native-android-DuzH0cn3.mjs} +74 -48
- package/dist/{gradle-DSrXb6lG.mjs → react-native-build-rhk4smwQ.mjs} +292 -15
- package/dist/react-native-doctor-CQpuIMso.mjs +234 -0
- package/dist/{react-native-ios-Dhq_eiYQ.mjs → react-native-ios-Bhq1rJeV.mjs} +46 -28
- package/dist/{recordings-D0d5aQt0.mjs → recordings-DYteQSu4.mjs} +12 -9
- package/dist/{reload-C8JhxjSh.mjs → reload-CmTRFJaX.mjs} +93 -47
- package/dist/reload-DzjSl5P_.mjs +2 -0
- package/dist/{remote-BiR6aYjy.mjs → remote-ByYkXdGD.mjs} +15 -10
- package/dist/result-DNiS-tTP.mjs +434 -0
- package/dist/{run-BtPgpKks.mjs → run-D23HmJMs.mjs} +4 -5
- package/dist/selection-CSl9i5qU.mjs +619 -0
- package/dist/{server-bare-R2m_gsH8.mjs → server-bare-CxTrvDg8.mjs} +3 -4
- package/dist/{server-command-CTtCkmcQ.mjs → server-command-CtzloH3v.mjs} +14 -7
- package/dist/server-expo-C-90EhcG.mjs +2 -0
- package/dist/{server-expo-DsguMGUF.mjs → server-expo-DT_F_uVI.mjs} +50 -9
- package/dist/{settings-B717odTD.mjs → settings-CsJDEXgK.mjs} +234 -24
- package/dist/{settings-vk3mJGSm.d.mts → settings-DkdmlelE.d.mts} +6 -4
- package/dist/settings-T1gtc3bf.mjs +114 -0
- package/dist/settings-write-HyVZ8eQ8.mjs +359 -0
- package/dist/settings.schema.json +163 -16
- package/dist/{simslim-CCr3rE-A.mjs → simslim-Cgk17SXV.mjs} +14 -12
- package/dist/{slot-launch-DPt0m9Nd.mjs → slot-launch-DF8VfT64.mjs} +15 -20
- package/dist/{spawn-entry-Dcb7sDUz.mjs → spawn-entry-jw19m8Nl.mjs} +0 -1
- package/dist/stage-BIS0ydsV.mjs +183 -0
- package/dist/{start-BWqzODpb.mjs → start-7lpH7hmN.mjs} +63 -44
- package/dist/{start-TXeMmmO2.mjs → start-RChynRDp.mjs} +1 -1
- package/dist/{state-D1Icyjlu.mjs → state-C4ZtUisW.mjs} +40 -13
- package/dist/{state-CG_OFoaA.mjs → state-XMziexv2.mjs} +3 -2
- package/dist/{stats-BoY5sEPU.mjs → stats-53T7OTb9.mjs} +7 -13
- package/dist/stats-report-BFfMpWWF.mjs +16 -0
- package/dist/{status-WgFbkRzj.mjs → status-BL7jVyAB.mjs} +535 -447
- package/dist/status-CSi6tlRq.mjs +2 -0
- package/dist/{status-BTA7kKiQ.mjs → status-DqEUSSxs.mjs} +6 -4
- package/dist/{status-watch-C23ILtf9.mjs → status-watch-GDCfqpTE.mjs} +187 -22
- package/dist/status-worker.d.mts +1 -0
- package/dist/status-worker.mjs +19 -0
- package/dist/stim-desktop-C12we7lz.mjs +112 -0
- package/dist/{stop-DR6VoDIk.mjs → stop-Bk_1qiV6.mjs} +2 -2
- package/dist/{stop-BNmBMi1F.mjs → stop-CPzlM1L-.mjs} +138 -98
- package/dist/{stop-DPEhunlw.mjs → stop-D7h6jAXQ.mjs} +11 -10
- package/dist/supervisor-run.d.mts +8 -17
- package/dist/supervisor-run.mjs +63 -27
- package/dist/{support-DMTqj3Hm.mjs → support-67vraa1Q.mjs} +18 -11
- package/dist/{support-CwjbFs9H.mjs → support-Dlu37g6H.mjs} +12 -12
- package/dist/{swiftpm-macos-DRNVJWlb.mjs → swiftpm-macos-p8WZbxKU.mjs} +35 -24
- package/dist/toolchain-DhKwp9iI.mjs +2 -0
- package/dist/toolchain-Hp9sCpK4.mjs +873 -0
- package/dist/{trigger-CigAYjeL.mjs → trigger-BAahxUPq.mjs} +20 -5
- package/dist/trigger-Bf3uDcpv.mjs +2 -0
- package/dist/{warm-progress-BuY-Fvfn.mjs → warm-progress-BHX5r0Ei.mjs} +250 -156
- package/dist/{web-BDBMxDpx.mjs → web-CJmIj6AI.mjs} +18 -13
- package/dist/web-DknQETPs.mjs +2 -0
- package/dist/web-run.mjs +11 -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-process-lock-1_1OoVW5.mjs +57 -0
- package/dist/{workspace-state-DJt_MMvf.mjs → workspace-state-Cjuigeeu.mjs} +62 -58
- package/dist/{workspaces-C36s2jb9.mjs → workspaces-BccMFmGQ.mjs} +1188 -1079
- package/dist/worktree-CK2MpJW5.mjs +2 -0
- package/dist/{worktree-CgvJYJ-Q.mjs → worktree-DQ6Zi2Mv.mjs} +304 -53
- package/dist/xcode-Zlx3qjEs.mjs +896 -0
- package/package.json +7 -5
- 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/miss-reason-mKzZ4VvN.mjs +0 -238
- package/dist/native-android-D5qc3-_v.mjs +0 -226
- 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/spawn-claims-DVS5RkMS.mjs +0 -72
- package/dist/stage-KNTQopqv.mjs +0 -157
- package/dist/stim-desktop-BzBN2Em2.mjs +0 -63
- 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,14 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import { a as
|
|
9
|
-
import { t as
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
1
|
+
import { f as ownership_claim_exports, t as getExecutor } from "./exec-_UbtCQcG.mjs";
|
|
2
|
+
import { f as workspaceId$1 } from "./paths-DQtTgsBf.mjs";
|
|
3
|
+
import { C as saveConfig, D as withConfigLock, K as projectDeviceSlots, O as withConfigLockAsync, U as deviceSlotPlatforms, _ as loadConfig, a as clearDevice, d as getConfigDir, w as setDevice } from "./config-CYcBF478.mjs";
|
|
4
|
+
import { l as phaseLine } from "./command-output-B1UrjZHL.mjs";
|
|
5
|
+
import { Qt as cancellableSleep, T as iosSimSlimProfileSetting } from "./settings-CsJDEXgK.mjs";
|
|
6
|
+
import { A as teardownParkedIosSim } from "./workspaces-BccMFmGQ.mjs";
|
|
7
|
+
import { dt as dropParked, gt as readParked, ht as parkedMaxSetting, ut as adoptParked, vt as selectParked } from "./android-DUYkNF4u.mjs";
|
|
8
|
+
import { A as configuredIosSimulatorViewer, C as resetIosKeychain, E as resolveOwnedIosSim, M as hostMemoryPressureAdvice, N as memoryCulpritsUnder, P as readHostMemoryPressure, S as renameIosSim, T as resolveIosCreation, _ as ownedSimName, a as createOwnedIosSim, d as listAllIosSims, f as listAllIosSimsAsync, h as listIosRuntimesAsync, n as bootIosSim, p as listIosDeviceTypesAsync, u as iosSimulatorFailureAdvice, w as resetIosPrivacy, y as parseRuntimeVersion } from "./ios-CpByZy12.mjs";
|
|
9
|
+
import { t as withWorkspaceProcessLock } from "./workspace-process-lock-1_1OoVW5.mjs";
|
|
10
|
+
import { l as runtimeMismatch, m as withDeviceBootAdmission, n as DeviceAdmissionRefusal, o as deviceTypeMismatch } from "./device-capacity-CMlqEcvw.mjs";
|
|
11
|
+
import { ambientContext } from "@stim-cli/core";
|
|
12
12
|
import chalk from "chalk";
|
|
13
13
|
//#region src/engine/device-ios.ts
|
|
14
14
|
function startIosBoot(udid, configure, label, out, simulatorApp, root, deviceSlotWait) {
|
|
@@ -20,7 +20,8 @@ function startIosBoot(udid, configure, label, out, simulatorApp, root, deviceSlo
|
|
|
20
20
|
await bootIosSim(udid, {
|
|
21
21
|
label,
|
|
22
22
|
out,
|
|
23
|
-
simulatorApp
|
|
23
|
+
simulatorApp,
|
|
24
|
+
env: ambientContext()?.env
|
|
24
25
|
});
|
|
25
26
|
await configure();
|
|
26
27
|
}, {
|
|
@@ -50,10 +51,10 @@ async function ensureOwnedIosDevice({ record, projectPath, slot, settingsRoot, l
|
|
|
50
51
|
else if (resolved.missing) {} else {
|
|
51
52
|
const sim = resolved.sim;
|
|
52
53
|
const wantedType = flags.deviceType || settings?.ios?.deviceType;
|
|
53
|
-
const deviceTypes =
|
|
54
|
+
const deviceTypes = await listIosDeviceTypesAsync();
|
|
54
55
|
const mismatch = deviceTypeMismatch(sim.deviceTypeIdentifier, wantedType, deviceTypes);
|
|
55
56
|
if (mismatch) throw new IosDeviceMismatchError(`${mismatch}. Stim will not silently boot a different model.`);
|
|
56
|
-
const versionMismatch = flags.runtimeFlag ? runtimeMismatch(sim.runtime, flags.runtimeFlag,
|
|
57
|
+
const versionMismatch = flags.runtimeFlag ? runtimeMismatch(sim.runtime, flags.runtimeFlag, await listIosRuntimesAsync()) : null;
|
|
57
58
|
if (versionMismatch) throw new IosDeviceMismatchError(`${versionMismatch}. Stim will not silently boot a different iOS version.`);
|
|
58
59
|
const model = {
|
|
59
60
|
model: deviceTypes.find((d) => d.identifier === sim.deviceTypeIdentifier)?.name ?? null,
|
|
@@ -71,7 +72,7 @@ async function ensureOwnedIosDevice({ record, projectPath, slot, settingsRoot, l
|
|
|
71
72
|
...record.schemeApprovals ? { schemeApprovals: record.schemeApprovals } : {}
|
|
72
73
|
};
|
|
73
74
|
const configure = async () => {
|
|
74
|
-
if (record.adoptionPending) resetAdoptedSim(sim.udid, out);
|
|
75
|
+
if (record.adoptionPending) await resetAdoptedSim(sim.udid, out);
|
|
75
76
|
return configureOwnedIosSim({
|
|
76
77
|
record: updated,
|
|
77
78
|
projectPath,
|
|
@@ -97,7 +98,7 @@ async function ensureOwnedIosDevice({ record, projectPath, slot, settingsRoot, l
|
|
|
97
98
|
};
|
|
98
99
|
}
|
|
99
100
|
} else {
|
|
100
|
-
const sim =
|
|
101
|
+
const sim = (await listAllIosSimsAsync()).find((s) => s.udid === record.deviceUdid);
|
|
101
102
|
if (sim) {
|
|
102
103
|
if (sim.state !== "Booted") {
|
|
103
104
|
note(chalk.yellow(`Note: assigned sim ${sim.name} (${sim.udid}) is shut down and is not owned by Stim, so it will not be booted automatically.`));
|
|
@@ -106,14 +107,14 @@ async function ensureOwnedIosDevice({ record, projectPath, slot, settingsRoot, l
|
|
|
106
107
|
return record;
|
|
107
108
|
}
|
|
108
109
|
}
|
|
109
|
-
|
|
110
|
+
await withConfigLockAsync(() => {
|
|
110
111
|
const current = deviceSlotPlatforms(loadConfig()?.projects?.[projectPath], slot)?.ios;
|
|
111
112
|
if (!current) return;
|
|
112
113
|
if (current.deviceUdid !== record.deviceUdid || current.owned !== record.owned) throw new Error("The simulator assignment changed during recovery. Run `stim ios` again.");
|
|
113
114
|
clearDevice(projectPath, "ios", slot);
|
|
114
115
|
});
|
|
115
116
|
}
|
|
116
|
-
const choice = resolveIosCreation({
|
|
117
|
+
const choice = await resolveIosCreation({
|
|
117
118
|
deviceType: flags.deviceType || settings.ios?.deviceType,
|
|
118
119
|
runtime: flags.runtime || settings.ios?.runtime
|
|
119
120
|
});
|
|
@@ -126,7 +127,7 @@ async function ensureOwnedIosDevice({ record, projectPath, slot, settingsRoot, l
|
|
|
126
127
|
})) : null;
|
|
127
128
|
if (adopted) {
|
|
128
129
|
const booting = startIosBoot(adopted.deviceUdid, async () => {
|
|
129
|
-
resetAdoptedSim(adopted.deviceUdid, out);
|
|
130
|
+
await resetAdoptedSim(adopted.deviceUdid, out);
|
|
130
131
|
await configureOwnedIosSim({
|
|
131
132
|
record: adopted,
|
|
132
133
|
projectPath,
|
|
@@ -143,12 +144,12 @@ async function ensureOwnedIosDevice({ record, projectPath, slot, settingsRoot, l
|
|
|
143
144
|
runtime: choice.runtime
|
|
144
145
|
};
|
|
145
146
|
}
|
|
146
|
-
const created = await withIosDeviceNameLock(() => {
|
|
147
|
+
const created = await withIosDeviceNameLock(async () => {
|
|
147
148
|
const suffix = ownedIosNameSuffix(label, {
|
|
148
149
|
model: choice.deviceType,
|
|
149
150
|
runtime: choice.runtime
|
|
150
|
-
}, projectPath);
|
|
151
|
-
const result = createOwnedIosSim(label, { suffix }, choice);
|
|
151
|
+
}, projectPath, void 0, await listAllIosSimsAsync({ includeUnavailable: true }));
|
|
152
|
+
const result = await createOwnedIosSim(label, { suffix }, choice);
|
|
152
153
|
setDevice(projectPath, "ios", {
|
|
153
154
|
deviceUdid: result.udid,
|
|
154
155
|
owned: true,
|
|
@@ -180,7 +181,7 @@ async function ensureOwnedIosDevice({ record, projectPath, slot, settingsRoot, l
|
|
|
180
181
|
function withIosDeviceNameLock(fn) {
|
|
181
182
|
return withWorkspaceProcessLock(getConfigDir(), "ios-device-names", async () => fn(), { external: true });
|
|
182
183
|
}
|
|
183
|
-
function ownedIosNameSuffix(label, model, projectPath, udid, listed
|
|
184
|
+
function ownedIosNameSuffix(label, model, projectPath, udid, listed) {
|
|
184
185
|
const names = new Set(listed.filter((sim) => sim.udid !== udid).map((sim) => sim.name));
|
|
185
186
|
for (const project of Object.values(loadConfig()?.projects ?? {})) for (const { platforms } of projectDeviceSlots(project)) {
|
|
186
187
|
const record = platforms.ios;
|
|
@@ -188,39 +189,39 @@ function ownedIosNameSuffix(label, model, projectPath, udid, listed = listAllIos
|
|
|
188
189
|
}
|
|
189
190
|
for (const parked of readParked("ios")) if (parked.udid !== udid) names.add(parked.name);
|
|
190
191
|
let suffix = "";
|
|
191
|
-
for (let attempt = 0; names.has(ownedSimName(label, model, suffix)); attempt++) suffix = ` ${workspaceId(projectPath)}${attempt ? `-${attempt}` : ""}`;
|
|
192
|
+
for (let attempt = 0; names.has(ownedSimName(label, model, suffix)); attempt++) suffix = ` ${workspaceId$1(projectPath)}${attempt ? `-${attempt}` : ""}`;
|
|
192
193
|
return suffix;
|
|
193
194
|
}
|
|
194
195
|
function ownedIosName(sim, label, model, projectPath, listed) {
|
|
195
196
|
return ownedSimName(label, model, ownedIosNameSuffix(label, model, projectPath, sim.udid, listed));
|
|
196
197
|
}
|
|
197
|
-
function renameToOwnedName(sim, label, model, projectPath) {
|
|
198
|
-
const wanted = ownedIosName(sim, label, model, projectPath);
|
|
198
|
+
async function renameToOwnedName(sim, label, model, projectPath) {
|
|
199
|
+
const wanted = ownedIosName(sim, label, model, projectPath, await listAllIosSimsAsync({ includeUnavailable: true }));
|
|
199
200
|
if (sim.name === wanted) return wanted;
|
|
200
201
|
try {
|
|
201
|
-
renameIosSim(sim.udid, wanted);
|
|
202
|
+
await renameIosSim(sim.udid, wanted);
|
|
202
203
|
return wanted;
|
|
203
204
|
} catch {
|
|
204
205
|
return sim.name;
|
|
205
206
|
}
|
|
206
207
|
}
|
|
207
|
-
function resetAdoptedSim(udid, out) {
|
|
208
|
+
async function resetAdoptedSim(udid, out) {
|
|
208
209
|
out(chalk.dim(phaseLine("device", `resetting privacy grants and the keychain on ${udid}`)));
|
|
209
|
-
resetIosPrivacy(udid);
|
|
210
|
-
resetIosKeychain(udid);
|
|
210
|
+
await resetIosPrivacy(udid);
|
|
211
|
+
await resetIosKeychain(udid);
|
|
211
212
|
}
|
|
212
|
-
function takeParkedIosSim({ projectPath, slot, label, choice, out }) {
|
|
213
|
+
async function takeParkedIosSim({ projectPath, slot, label, choice, out }) {
|
|
213
214
|
const candidates = selectParked(readParked("ios"), {
|
|
214
215
|
deviceTypeIdentifier: choice.deviceTypeId,
|
|
215
216
|
runtimeIdentifier: choice.runtimeId
|
|
216
217
|
});
|
|
217
218
|
if (candidates.length === 0) return null;
|
|
218
|
-
const listed = new Map(
|
|
219
|
+
const listed = new Map((await listAllIosSimsAsync({ includeUnavailable: true })).map((sim) => [sim.udid, sim]));
|
|
219
220
|
for (const parked of candidates) {
|
|
220
221
|
const sim = listed.get(parked.udid);
|
|
221
222
|
if (!sim || !sim.available) {
|
|
222
|
-
const result = sim ? teardownParkedIosSim(parked.udid, { label: parked.name }) : null;
|
|
223
|
-
if (sim ? result?.status === "torn-down" : dropParked("ios", parked.udid)) out(chalk.dim(phaseLine("device", `deleted parked ${parked.name} (${parked.udid}): ${sim ? "unavailable" : "gone"}`)));
|
|
223
|
+
const result = sim ? await teardownParkedIosSim(parked.udid, { label: parked.name }) : null;
|
|
224
|
+
if (sim ? result?.status === "torn-down" : await dropParked("ios", parked.udid)) out(chalk.dim(phaseLine("device", `deleted parked ${parked.name} (${parked.udid}): ${sim ? "unavailable" : "gone"}`)));
|
|
224
225
|
else if (result?.status === "failed") out(chalk.yellow(phaseLine("device", `could not delete unavailable parked ${parked.name} (${parked.udid}): ${result.reason}`)));
|
|
225
226
|
continue;
|
|
226
227
|
}
|
|
@@ -232,7 +233,7 @@ function takeParkedIosSim({ projectPath, slot, label, choice, out }) {
|
|
|
232
233
|
model: choice.deviceType,
|
|
233
234
|
runtime: choice.runtime
|
|
234
235
|
};
|
|
235
|
-
const name = ownedSimName(label, model, ownedIosNameSuffix(label, model, projectPath, parked.udid));
|
|
236
|
+
const name = ownedSimName(label, model, ownedIosNameSuffix(label, model, projectPath, parked.udid, [...listed.values()]));
|
|
236
237
|
const device = {
|
|
237
238
|
deviceUdid: parked.udid,
|
|
238
239
|
owned: true,
|
|
@@ -251,7 +252,7 @@ function takeParkedIosSim({ projectPath, slot, label, choice, out }) {
|
|
|
251
252
|
});
|
|
252
253
|
if (!adopted) continue;
|
|
253
254
|
try {
|
|
254
|
-
renameIosSim(parked.udid, name);
|
|
255
|
+
await renameIosSim(parked.udid, name);
|
|
255
256
|
} catch {}
|
|
256
257
|
return adopted.schemeApprovals && adopted.schemeApprovals.length > 0 ? {
|
|
257
258
|
...device,
|
|
@@ -284,6 +285,7 @@ async function configureOwnedIosSim({ record, projectPath, slot, profile, out, r
|
|
|
284
285
|
record = pending;
|
|
285
286
|
}
|
|
286
287
|
const result = await reconcileIosSimulator({
|
|
288
|
+
context: ambientContext(),
|
|
287
289
|
udid: record.deviceUdid,
|
|
288
290
|
profile,
|
|
289
291
|
previouslyManaged,
|
|
@@ -301,9 +303,9 @@ async function ensureIosBooted({ device, projectPath, deviceSlotWait, simulatorA
|
|
|
301
303
|
failed: true,
|
|
302
304
|
reason: "No iOS simulator is recorded for this project."
|
|
303
305
|
};
|
|
304
|
-
const ready = () => {
|
|
306
|
+
const ready = async () => {
|
|
305
307
|
try {
|
|
306
|
-
getExecutor().
|
|
308
|
+
await getExecutor().runFileAsync("xcrun", [
|
|
307
309
|
"simctl",
|
|
308
310
|
"spawn",
|
|
309
311
|
udid,
|
|
@@ -330,14 +332,14 @@ async function ensureIosBooted({ device, projectPath, deviceSlotWait, simulatorA
|
|
|
330
332
|
}
|
|
331
333
|
return ready();
|
|
332
334
|
}
|
|
333
|
-
const readiness = device?.booted === udid ? ready() : null;
|
|
335
|
+
const readiness = device?.booted === udid ? await ready() : null;
|
|
334
336
|
if (readiness?.ok) {
|
|
335
|
-
if (simulatorApp !== void 0) configuredIosSimulatorViewer(simulatorApp).open(udid);
|
|
337
|
+
if (simulatorApp !== void 0) await configuredIosSimulatorViewer(simulatorApp, ambientContext()?.env).open(udid);
|
|
336
338
|
return readiness;
|
|
337
339
|
}
|
|
338
340
|
let resolved;
|
|
339
341
|
try {
|
|
340
|
-
resolved = resolveOwnedIosSim(udid);
|
|
342
|
+
resolved = resolveOwnedIosSim(udid, await listAllIosSimsAsync());
|
|
341
343
|
} catch (e) {
|
|
342
344
|
return {
|
|
343
345
|
failed: true,
|
|
@@ -354,8 +356,8 @@ async function ensureIosBooted({ device, projectPath, deviceSlotWait, simulatorA
|
|
|
354
356
|
};
|
|
355
357
|
const sim = resolved.sim;
|
|
356
358
|
if (sim.state === "Booted") {
|
|
357
|
-
const result = readiness ?? ready();
|
|
358
|
-
if (result.ok && simulatorApp !== void 0) configuredIosSimulatorViewer(simulatorApp).open(udid);
|
|
359
|
+
const result = readiness ?? await ready();
|
|
360
|
+
if (result.ok && simulatorApp !== void 0) await configuredIosSimulatorViewer(simulatorApp, ambientContext()?.env).open(udid);
|
|
359
361
|
return result;
|
|
360
362
|
}
|
|
361
363
|
const bootDeadline = Date.now() + timeoutMs;
|
|
@@ -369,7 +371,8 @@ async function ensureIosBooted({ device, projectPath, deviceSlotWait, simulatorA
|
|
|
369
371
|
timeoutMs,
|
|
370
372
|
label: sim.name,
|
|
371
373
|
out,
|
|
372
|
-
simulatorApp
|
|
374
|
+
simulatorApp,
|
|
375
|
+
env: ambientContext()?.env
|
|
373
376
|
});
|
|
374
377
|
}, {
|
|
375
378
|
...deviceSlotWait,
|
|
@@ -384,7 +387,7 @@ async function ensureIosBooted({ device, projectPath, deviceSlotWait, simulatorA
|
|
|
384
387
|
await cancellableSleep(pollMs);
|
|
385
388
|
let state = null;
|
|
386
389
|
try {
|
|
387
|
-
state =
|
|
390
|
+
state = (await listAllIosSimsAsync({ timeoutMs: 3e4 })).find((s) => s.udid === udid)?.state ?? null;
|
|
388
391
|
} catch {}
|
|
389
392
|
if (state === "Booted") return ready();
|
|
390
393
|
}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import { a as formatElapsed, r as clockTime } from "./command-output-
|
|
4
|
-
import {
|
|
1
|
+
import { u as operationState } from "./exec-_UbtCQcG.mjs";
|
|
2
|
+
import { H as deviceSlotKey } from "./config-CYcBF478.mjs";
|
|
3
|
+
import { a as formatElapsed, r as clockTime } from "./command-output-B1UrjZHL.mjs";
|
|
4
|
+
import { Zt as VERIFY_TIMEOUT_MS, on as APP_READINESS_TIMEOUT_MS } from "./budget-Bs6SxxzO.mjs";
|
|
5
|
+
import { E as releaseRunLease, S as parseLease, T as raiseLease, b as leaseIsExpired, j as takeLease, v as deviceLeasePath, y as fileLeaseIo } from "./activity-BzVfHSrY.mjs";
|
|
5
6
|
//#region src/engine/device-lease-run.ts
|
|
6
7
|
const LEASE_STEP_FLOOR_MS = 6e4;
|
|
7
8
|
const DEBUG_VERIFY_STEP_MS = VERIFY_TIMEOUT_MS + APP_READINESS_TIMEOUT_MS;
|
|
@@ -154,28 +155,15 @@ function runLease({ root, platform, slot = "default", kind, expiresAt, io = file
|
|
|
154
155
|
};
|
|
155
156
|
return handle;
|
|
156
157
|
}
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
process.once(signal, handler);
|
|
163
|
-
}, off = (signal, handler) => {
|
|
164
|
-
process.off(signal, handler);
|
|
165
|
-
}, exit = (code) => process.exit(code) } = {}) {
|
|
166
|
-
const installed = [];
|
|
167
|
-
for (const signal of Object.keys(SIGNAL_EXIT_CODES)) {
|
|
168
|
-
const handler = () => {
|
|
169
|
-
release();
|
|
170
|
-
exit(SIGNAL_EXIT_CODES[signal]);
|
|
171
|
-
};
|
|
172
|
-
installed.push([signal, handler]);
|
|
173
|
-
on(signal, handler);
|
|
174
|
-
}
|
|
175
|
-
return () => {
|
|
176
|
-
for (const [signal, handler] of installed) off(signal, handler);
|
|
177
|
-
installed.length = 0;
|
|
158
|
+
/** Release the run's lease as soon as `context`'s operation is aborted; returns a function that stops listening. */
|
|
159
|
+
function releaseLeaseOnAbort(context, release) {
|
|
160
|
+
const onAbort = () => {
|
|
161
|
+
operationState(context).handled = true;
|
|
162
|
+
release();
|
|
178
163
|
};
|
|
164
|
+
if (context.signal.aborted) onAbort();
|
|
165
|
+
else context.signal.addEventListener("abort", onAbort, { once: true });
|
|
166
|
+
return () => context.signal.removeEventListener("abort", onAbort);
|
|
179
167
|
}
|
|
180
168
|
async function waitForDevice({ root, platform, slot = "default", id, idLabel, waitSeconds, noWait = false, appId = null, holderAppId = () => null, now = Date.now, sleep = (ms) => new Promise((r) => setTimeout(r, ms)), warn = () => {}, io = fileLeaseIo, deadline, lastLine }) {
|
|
181
169
|
const path = deviceLeasePath(platform, id);
|
|
@@ -291,4 +279,4 @@ async function acquireRunLease({ root, platform, slot = "default", id, deviceNam
|
|
|
291
279
|
}
|
|
292
280
|
}
|
|
293
281
|
//#endregion
|
|
294
|
-
export { acquireRunLease as a, lostRefusal as c, runLease as d, waitFlagConflict as f, DEVICE_WAIT_POLL_MS as i, parseDeviceWait as l, DEVICE_BUSY as n, leaseExpiryText as o, waitForDevice as p, DEVICE_WAIT_LINE_MS as r, lostLine as s, DEBUG_VERIFY_STEP_MS as t,
|
|
282
|
+
export { acquireRunLease as a, lostRefusal as c, runLease as d, waitFlagConflict as f, DEVICE_WAIT_POLL_MS as i, parseDeviceWait as l, DEVICE_BUSY as n, leaseExpiryText as o, waitForDevice as p, DEVICE_WAIT_LINE_MS as r, lostLine as s, DEBUG_VERIFY_STEP_MS as t, releaseLeaseOnAbort as u };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import { i as DEVICE_WAIT_POLL_MS, n as DEVICE_BUSY, o as leaseExpiryText } from "./device-lease-run-
|
|
1
|
+
import { H as deviceSlotKey } from "./config-CYcBF478.mjs";
|
|
2
|
+
import { A as selectPoolDevice, S as parseLease, b as leaseIsExpired, v as deviceLeasePath, y as fileLeaseIo } from "./activity-BzVfHSrY.mjs";
|
|
3
|
+
import { i as DEVICE_WAIT_POLL_MS, n as DEVICE_BUSY, o as leaseExpiryText } from "./device-lease-run-C8raGFoP.mjs";
|
|
4
4
|
//#region src/engine/device-pool.ts
|
|
5
5
|
function heldPoolId(root, platform, now, io = fileLeaseIo, slot = "default") {
|
|
6
6
|
const record = io.readHolder(root)[deviceSlotKey(platform, slot)];
|
|
@@ -74,7 +74,7 @@ async function selectFromPool({ root, platform, slot = "default", idLabel, list,
|
|
|
74
74
|
const until = deadline ?? now() + waitSeconds * 1e3;
|
|
75
75
|
let lastLine = null;
|
|
76
76
|
for (;;) {
|
|
77
|
-
const { usable, leases, unreadable } = readPool(platform, list(), io);
|
|
77
|
+
const { usable, leases, unreadable } = readPool(platform, await list(), io);
|
|
78
78
|
const selection = selectPoolDevice({
|
|
79
79
|
candidates: usable,
|
|
80
80
|
leases,
|
|
@@ -91,7 +91,7 @@ async function selectFromPool({ root, platform, slot = "default", idLabel, list,
|
|
|
91
91
|
status: "refused",
|
|
92
92
|
refusal: poolBusyRefusal([], leases, unreadable, now(), waitSeconds)
|
|
93
93
|
};
|
|
94
|
-
const { message, remedy } = noCandidates();
|
|
94
|
+
const { message, remedy } = await noCandidates();
|
|
95
95
|
return {
|
|
96
96
|
status: "refused",
|
|
97
97
|
refusal: {
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import { a as readDoctorReport, i as parseDoctorPlatform, n as doctorCommand, o as shadowedStimFinding, r as doctorSuccessLines, s as toolchainReport, t as applySandboxFix } from "./doctor-Dhqebm0q.mjs";
|
|
2
|
+
export { applySandboxFix, doctorCommand as default, doctorSuccessLines, parseDoctorPlatform, readDoctorReport, shadowedStimFinding, toolchainReport };
|