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
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import "./ios-CDvlmUs7.mjs";
|
|
2
|
+
import { StimContext } from "@stim-cli/core";
|
|
3
|
+
import { DeviceActivity } from "@stim-cli/core/state";
|
|
4
|
+
//#region src/commands/gc/idle.d.ts
|
|
5
|
+
interface IdleDevice {
|
|
6
|
+
kind: "ios" | "android";
|
|
7
|
+
id: string;
|
|
8
|
+
name: string;
|
|
9
|
+
project: string;
|
|
10
|
+
slot: string;
|
|
11
|
+
lastActivityAt: string | null;
|
|
12
|
+
idleForMs: number | null;
|
|
13
|
+
buildInProgress: boolean;
|
|
14
|
+
}
|
|
15
|
+
interface OwnedDeviceActivity {
|
|
16
|
+
kind: "ios" | "android";
|
|
17
|
+
id: string;
|
|
18
|
+
name: string;
|
|
19
|
+
project: string;
|
|
20
|
+
slot: string;
|
|
21
|
+
activity: DeviceActivity;
|
|
22
|
+
}
|
|
23
|
+
//#endregion
|
|
24
|
+
export { OwnedDeviceActivity as n, IdleDevice as t };
|
|
@@ -1,10 +1,11 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import { o as
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
1
|
+
import { V as deviceSlotKey, _ as loadConfig$1 } from "./config-DlrsduwG.mjs";
|
|
2
|
+
import { o as formatLongDuration } from "./command-output-gwpm28fu.mjs";
|
|
3
|
+
import { o as updateWorkspaceState, r as readWorkspaceState$1 } from "./workspace-state-U08dEzhG.mjs";
|
|
4
|
+
import { A as workspaceBuildInProgress, T as collectOwnedDeviceActivity } from "./budget-Cvwn54qV.mjs";
|
|
5
|
+
import { t as canonicalPath } from "./paths-BsJMoPP2.mjs";
|
|
6
|
+
import { D as teardownOwnedAvd, k as teardownOwnedIosSim } from "./workspaces-CpANmBlq.mjs";
|
|
7
|
+
import { _ as workspaceDeviceLastUseAt } from "./activity-CMLmzp7o.mjs";
|
|
8
|
+
import { d as listAllIosSims } from "./ios-hcBpnEGk.mjs";
|
|
8
9
|
import { DEVICE_IDLE_SHUTDOWN_KEY, DEVICE_RECLAIM_REASON, readDeviceIdleShutdowns } from "@stim-cli/core/state";
|
|
9
10
|
//#region src/devices/idle-shutdown.ts
|
|
10
11
|
const SIM_LIST_TIMEOUT_MS = 1e4;
|
|
@@ -62,15 +63,15 @@ function dueIdleDevices(root, idleMs, now = Date.now()) {
|
|
|
62
63
|
* and records why. The caller holds the workspace's native-run lock, so no `ios` or `android` run is booting or
|
|
63
64
|
* installing on them.
|
|
64
65
|
*/
|
|
65
|
-
function shutDownIdleDevices(root, idleMs, log, now = Date.now(), { only, reason } = {}) {
|
|
66
|
+
async function shutDownIdleDevices(root, idleMs, log, now = Date.now(), { only, reason } = {}) {
|
|
66
67
|
let shutDown = 0;
|
|
67
68
|
for (const { device, idleForMs } of dueIdleDevices(root, idleMs, now)) {
|
|
68
69
|
if (only && (device.kind !== only.kind || device.id !== only.id || device.project !== only.project || device.slot !== only.slot)) continue;
|
|
69
70
|
const what = `${device.kind === "ios" ? "simulator" : "emulator"} ${device.name}`;
|
|
70
|
-
const outcome = device.kind === "ios" ? teardownOwnedIosSim(device.id, {
|
|
71
|
+
const outcome = device.kind === "ios" ? await teardownOwnedIosSim(device.id, {
|
|
71
72
|
label: device.name,
|
|
72
73
|
workspace: root
|
|
73
|
-
}) : teardownOwnedAvd(device.id, {
|
|
74
|
+
}) : await teardownOwnedAvd(device.id, {
|
|
74
75
|
owner: {
|
|
75
76
|
projectPath: device.project,
|
|
76
77
|
slot: device.slot
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import "./exec-DnYc4HGH.mjs";
|
|
2
|
+
import { StimContext } from "@stim-cli/core";
|
|
3
|
+
import { IOS_SIMULATOR_APPS, SettingScope, SettingsObject, WebViewport } from "@stim-cli/core/state";
|
|
4
|
+
import { ProcessRecord } from "@stim-cli/core/process-identity";
|
|
5
|
+
import { CacheProviderConfig } from "@stim-cli/cache";
|
|
6
|
+
//#region src/supervisor/state.d.ts
|
|
7
|
+
declare const MODE_BARE = "bare-inproc";
|
|
8
|
+
declare const MODE_EXPO = "expo-child";
|
|
9
|
+
type WorkspaceLaunchPlatform = "ios" | "android";
|
|
10
|
+
declare function clearWorkspaceSupervisor(root: string, expected?: ProcessRecord | null): boolean;
|
|
11
|
+
declare function clearExpoMetroTunnel(root: string): void;
|
|
12
|
+
declare function writePidFile(root: string, pid: number): string;
|
|
13
|
+
declare function readPidFile(root: string): number | null;
|
|
14
|
+
//#endregion
|
|
15
|
+
//#region src/workspace/settings.d.ts
|
|
16
|
+
interface AndroidLayout {
|
|
17
|
+
gradleRoot: string;
|
|
18
|
+
gradleRootRelative: string;
|
|
19
|
+
module: string;
|
|
20
|
+
moduleDir: string;
|
|
21
|
+
custom: boolean;
|
|
22
|
+
}
|
|
23
|
+
//#endregion
|
|
24
|
+
export { WorkspaceLaunchPlatform as a, readPidFile as c, MODE_EXPO as i, writePidFile as l, SettingsObject as n, clearExpoMetroTunnel as o, MODE_BARE as r, clearWorkspaceSupervisor as s, AndroidLayout as t };
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { h as shortUdid, i as formatDuration, l as phaseLine, m as shortHash } from "./command-output-
|
|
2
|
-
import {
|
|
3
|
-
import { n as
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import { a as lastBuildRecord, i as iosFacts, n as cacheDescription, s as writeLastBuild } from "./ios-project-
|
|
7
|
-
import { n as registerIos, r as runIosOperation, t as iosCommand } from "./ios-
|
|
8
|
-
import { a as collectorEntry, o as replaceCollector } from "./launch-
|
|
1
|
+
import { h as shortUdid, i as formatDuration, l as phaseLine, m as shortHash } from "./command-output-gwpm28fu.mjs";
|
|
2
|
+
import { jn as schemesFromInfoPlist, kn as pickDevClientScheme } from "./budget-Cvwn54qV.mjs";
|
|
3
|
+
import { f as podAction, h as resolveDeviceType, i as deviceLabel, m as resolveConfiguration, n as buildLogFile, s as iosConfigurationSetting, t as appNameFromPath, u as isReleaseConfiguration, v as resolveRuntime } from "./support-CNioewsd.mjs";
|
|
4
|
+
import { n as ensureWorkspaceStorageSafely } from "./native-runtime-B7KIafpM.mjs";
|
|
5
|
+
import { t as devClientScheme } from "./dev-client-BSDR5h3F.mjs";
|
|
6
|
+
import { a as lastBuildRecord, i as iosFacts, n as cacheDescription, s as writeLastBuild } from "./ios-project-CZhKODF3.mjs";
|
|
7
|
+
import { n as registerIos, r as runIosOperation, t as iosCommand } from "./ios-pm4nL6By.mjs";
|
|
8
|
+
import { a as collectorEntry, o as replaceCollector } from "./launch-BjxemNpK.mjs";
|
|
9
9
|
export { appNameFromPath, buildLogFile, cacheDescription, collectorEntry, iosCommand as default, devClientScheme, deviceLabel, ensureWorkspaceStorageSafely, formatDuration, iosConfigurationSetting, iosFacts, isReleaseConfiguration, lastBuildRecord, phaseLine, pickDevClientScheme, podAction, registerIos, replaceCollector, resolveConfiguration, resolveDeviceType, resolveRuntime, runIosOperation, schemesFromInfoPlist, shortHash, shortUdid, writeLastBuild };
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { t as getExecutor } from "./exec-
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
1
|
+
import { t as getExecutor } from "./exec-DEoAhcze.mjs";
|
|
2
|
+
import { ln as INSTALL_ERROR, pn as appProcessFromPid } from "./budget-Cvwn54qV.mjs";
|
|
3
|
+
import { n as TOOL_ERROR_PREFIX } from "./ios-device-BXZ0c7Kb.mjs";
|
|
4
4
|
import { mkdtempSync, readFileSync, rmSync } from "node:fs";
|
|
5
|
-
import { join } from "node:path";
|
|
6
5
|
import { tmpdir } from "node:os";
|
|
6
|
+
import { join } from "node:path";
|
|
7
7
|
//#region src/engine/ios-device.ts
|
|
8
8
|
const DEVICECTL_TIMEOUT_MS = 3e4;
|
|
9
9
|
function text(value) {
|
|
@@ -44,8 +44,27 @@ function parseDevicectlDevices(payload) {
|
|
|
44
44
|
}
|
|
45
45
|
return out;
|
|
46
46
|
}
|
|
47
|
-
function listIosDevices({ exec = null } = {}) {
|
|
48
|
-
|
|
47
|
+
async function listIosDevices({ exec = null } = {}) {
|
|
48
|
+
const executor = exec || getExecutor();
|
|
49
|
+
const dir = mkdtempSync(join(tmpdir(), "stim-devicectl-"));
|
|
50
|
+
const out = join(dir, "devices.json");
|
|
51
|
+
try {
|
|
52
|
+
await executor.runFileAsync("xcrun", [
|
|
53
|
+
"devicectl",
|
|
54
|
+
"list",
|
|
55
|
+
"devices",
|
|
56
|
+
"-j",
|
|
57
|
+
out
|
|
58
|
+
], { timeoutMs: DEVICECTL_TIMEOUT_MS });
|
|
59
|
+
return parseDevicectlDevices(readFileSync(out, "utf-8"));
|
|
60
|
+
} catch {
|
|
61
|
+
return [];
|
|
62
|
+
} finally {
|
|
63
|
+
rmSync(dir, {
|
|
64
|
+
recursive: true,
|
|
65
|
+
force: true
|
|
66
|
+
});
|
|
67
|
+
}
|
|
49
68
|
}
|
|
50
69
|
/** devicectl's device list, or null when devicectl failed or did not answer within `timeoutMs`. */
|
|
51
70
|
function readIosDevices({ exec = null, timeoutMs = DEVICECTL_TIMEOUT_MS } = {}) {
|
|
@@ -91,18 +110,18 @@ function isWirelessIosDevice(device) {
|
|
|
91
110
|
function isPhysical(device) {
|
|
92
111
|
return isIosHardware(device) && isReachable(device) && (isWired(device) || isWirelessIosDevice(device));
|
|
93
112
|
}
|
|
94
|
-
function notUsableRefusal(device) {
|
|
113
|
+
function notUsableRefusal(device, wording) {
|
|
95
114
|
if (!isIosHardware(device)) return {
|
|
96
|
-
error: `${describe(device)} is a ${[device.reality, device.platform].filter(Boolean).join(" ")} device, and
|
|
97
|
-
remedy:
|
|
115
|
+
error: `${describe(device)} is a ${[device.reality, device.platform].filter(Boolean).join(" ")} device, and ${wording.physicalOnly}.`,
|
|
116
|
+
remedy: wording.notAPhone
|
|
98
117
|
};
|
|
99
118
|
if (!isReachable(device)) return {
|
|
100
119
|
error: `${describe(device)} is paired, but devicectl reports it unavailable: it cannot reach the phone right now.`,
|
|
101
120
|
remedy: UNREACHABLE_REMEDY
|
|
102
121
|
};
|
|
103
122
|
return {
|
|
104
|
-
error: `${describe(device)} is reached over ${device.transportType}, and
|
|
105
|
-
remedy:
|
|
123
|
+
error: `${describe(device)} is reached over ${device.transportType}, and ${wording.transportOnly}.`,
|
|
124
|
+
remedy: wording.notAPhone
|
|
106
125
|
};
|
|
107
126
|
}
|
|
108
127
|
function describe(device) {
|
|
@@ -142,15 +161,21 @@ function iosPoolNoCandidatesRefusal(devices) {
|
|
|
142
161
|
}
|
|
143
162
|
return resolveIosPhysicalDevice(null, listed);
|
|
144
163
|
}
|
|
145
|
-
function pickOne(devices) {
|
|
164
|
+
function pickOne(devices, severalRemedy) {
|
|
146
165
|
if (devices.length === 1) return unhealthy(devices[0]) ?? selected(devices[0]);
|
|
147
166
|
if (devices.length > 1) return {
|
|
148
167
|
error: `Several devices are connected: ${devices.map(describe).join(", ")}.`,
|
|
149
|
-
remedy:
|
|
168
|
+
remedy: severalRemedy
|
|
150
169
|
};
|
|
151
170
|
return null;
|
|
152
171
|
}
|
|
153
|
-
|
|
172
|
+
const IOS_RUN_WORDING = {
|
|
173
|
+
several: "Name the one to build for with `stim ios --device <udid>`.",
|
|
174
|
+
notAPhone: NOT_A_PHONE_REMEDY,
|
|
175
|
+
physicalOnly: "`ios --device` installs only on a physical iPhone or iPad",
|
|
176
|
+
transportOnly: "Stim installs on a phone only over a cable or Wi-Fi"
|
|
177
|
+
};
|
|
178
|
+
function resolveIosPhysicalDevice(requested, devices, wording = IOS_RUN_WORDING) {
|
|
154
179
|
const listed = Array.isArray(devices) ? devices : [];
|
|
155
180
|
const physical = listed.filter(isPhysical);
|
|
156
181
|
if (requested) {
|
|
@@ -158,13 +183,13 @@ function resolveIosPhysicalDevice(requested, devices) {
|
|
|
158
183
|
const match = physical.find(same);
|
|
159
184
|
if (match) return unhealthy(match) ?? selected(match);
|
|
160
185
|
const other = listed.find(same);
|
|
161
|
-
if (other) return notUsableRefusal(other);
|
|
186
|
+
if (other) return notUsableRefusal(other, wording);
|
|
162
187
|
return {
|
|
163
188
|
error: physical.length ? `${requested} is not connected. devicectl reports these devices: ${physical.map(describe).join(", ")}.` : `${requested} is not connected, and devicectl reports no device over a cable or Wi-Fi at all.`,
|
|
164
189
|
remedy: "Check the cable and `xcrun devicectl list devices`, then retry with a UDID it lists."
|
|
165
190
|
};
|
|
166
191
|
}
|
|
167
|
-
const chosen = pickOne(physical);
|
|
192
|
+
const chosen = pickOne(physical, wording.several);
|
|
168
193
|
if (chosen) return chosen;
|
|
169
194
|
return {
|
|
170
195
|
error: "No physical iOS device is connected.",
|
|
@@ -237,7 +262,7 @@ function wirelessInstallFailure(error, { udid, appPath, wireless }) {
|
|
|
237
262
|
* second install, each with the same bound; `beforeStep` runs before each of those two
|
|
238
263
|
* so the caller can extend its device lease.
|
|
239
264
|
*/
|
|
240
|
-
function installIosDeviceApp({ udid, appPath, bundleId = null, wireless = false }, { exec = null, beforeStep = () => {} } = {}) {
|
|
265
|
+
async function installIosDeviceApp({ udid, appPath, bundleId = null, wireless = false }, { exec = null, beforeStep = () => {} } = {}) {
|
|
241
266
|
const e = exec || getExecutor();
|
|
242
267
|
const timeoutMs = iosDeviceBounds(wireless).installMs;
|
|
243
268
|
const target = {
|
|
@@ -245,8 +270,8 @@ function installIosDeviceApp({ udid, appPath, bundleId = null, wireless = false
|
|
|
245
270
|
appPath,
|
|
246
271
|
wireless
|
|
247
272
|
};
|
|
248
|
-
const install = () => {
|
|
249
|
-
e.
|
|
273
|
+
const install = async () => {
|
|
274
|
+
await e.runFileAsync("xcrun", [
|
|
250
275
|
"devicectl",
|
|
251
276
|
"device",
|
|
252
277
|
"install",
|
|
@@ -257,7 +282,7 @@ function installIosDeviceApp({ udid, appPath, bundleId = null, wireless = false
|
|
|
257
282
|
], { timeoutMs });
|
|
258
283
|
};
|
|
259
284
|
try {
|
|
260
|
-
install();
|
|
285
|
+
await install();
|
|
261
286
|
return {
|
|
262
287
|
ok: true,
|
|
263
288
|
appPath
|
|
@@ -278,7 +303,7 @@ function installIosDeviceApp({ udid, appPath, bundleId = null, wireless = false
|
|
|
278
303
|
};
|
|
279
304
|
try {
|
|
280
305
|
beforeStep();
|
|
281
|
-
e.
|
|
306
|
+
await e.runFileAsync("xcrun", [
|
|
282
307
|
"devicectl",
|
|
283
308
|
"device",
|
|
284
309
|
"uninstall",
|
|
@@ -301,7 +326,7 @@ function installIosDeviceApp({ udid, appPath, bundleId = null, wireless = false
|
|
|
301
326
|
}
|
|
302
327
|
try {
|
|
303
328
|
beforeStep();
|
|
304
|
-
install();
|
|
329
|
+
await install();
|
|
305
330
|
} catch (retryErr) {
|
|
306
331
|
return wirelessInstallFailure(retryErr, target) ?? {
|
|
307
332
|
failed: true,
|
|
@@ -348,12 +373,12 @@ function deviceProcessPid(processes, appName) {
|
|
|
348
373
|
for (const entry of processes) if (entry.executable.includes(marker)) return entry.pid;
|
|
349
374
|
return null;
|
|
350
375
|
}
|
|
351
|
-
function iosDeviceProcess({ udid, appName }, { exec = null } = {}) {
|
|
376
|
+
async function iosDeviceProcess({ udid, appName }, { exec = null } = {}) {
|
|
352
377
|
const executor = exec || getExecutor();
|
|
353
378
|
const dir = mkdtempSync(join(tmpdir(), "stim-devicectl-"));
|
|
354
379
|
const out = join(dir, "processes.json");
|
|
355
380
|
try {
|
|
356
|
-
executor.
|
|
381
|
+
await executor.runFileAsync("xcrun", [
|
|
357
382
|
"devicectl",
|
|
358
383
|
"device",
|
|
359
384
|
"info",
|
|
@@ -427,7 +452,7 @@ async function awaitIosDeviceLaunch({ udid, bundleId, appName, collectorPid = nu
|
|
|
427
452
|
for (;;) {
|
|
428
453
|
const records = collectorRecordsFor(readRecords(), collectorPid);
|
|
429
454
|
const ended = records.find((entry) => typeof entry.event === "string" && COLLECTOR_ENDED_EVENTS.has(entry.event));
|
|
430
|
-
const running = probeProcess();
|
|
455
|
+
const running = await probeProcess();
|
|
431
456
|
if (running.state === "running") return { pid: running.pid };
|
|
432
457
|
if (ended) {
|
|
433
458
|
const evidence = launchEvidence(records);
|
|
@@ -482,7 +507,7 @@ async function verifyIosDeviceReleaseLaunch({ udid, appName, waitMs = 3e3, probe
|
|
|
482
507
|
}));
|
|
483
508
|
const startedAt = now();
|
|
484
509
|
await sleep(Math.max(0, waitMs));
|
|
485
|
-
const running = probeProcess();
|
|
510
|
+
const running = await probeProcess();
|
|
486
511
|
const waitedMs = now() - startedAt;
|
|
487
512
|
if (running.state === "unknown") return {
|
|
488
513
|
verified: false,
|