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,42 +1,41 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import { i as
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import { d as
|
|
12
|
-
import {
|
|
13
|
-
import {
|
|
14
|
-
import {
|
|
15
|
-
import {
|
|
16
|
-
import "./
|
|
17
|
-
import {
|
|
18
|
-
import {
|
|
19
|
-
import { i as
|
|
20
|
-
import {
|
|
21
|
-
import { r as
|
|
22
|
-
import
|
|
23
|
-
import {
|
|
24
|
-
import { t as didSetUpDevice } from "./device-BECOiufl.mjs";
|
|
1
|
+
import { m as workspaceLogsDir$1 } from "./paths-DQtTgsBf.mjs";
|
|
2
|
+
import { G as parseDeviceSlotOption, J as validateDeviceSlot, V as deviceSlotFileKey } from "./config-CYcBF478.mjs";
|
|
3
|
+
import { _ as stepTimer, g as stepClock, i as formatDuration, l as phaseLine } from "./command-output-B1UrjZHL.mjs";
|
|
4
|
+
import { i as recordWorkspaceUse } from "./workspace-state-Cjuigeeu.mjs";
|
|
5
|
+
import { C as iosSigningIdentitySha1Setting, L as projectSettingsContextAsync, N as metroWarmupUrlSetting, R as publicUrlSetting, S as iosSigningIdentitySettingError, _ as iosLanHostSetting, a as SETTING_SHAPE_REMEDY, g as deviceReclaimIdleMinutesSetting, j as metroPortSetting, rt as tunnelModeSetting, v as iosLanHostSettingError, w as iosSigningIdentitySha1SettingError, x as iosSigningIdentitySetting } from "./settings-CsJDEXgK.mjs";
|
|
6
|
+
import { L as workspaceDevServerMode, t as NO_PROJECT_REFUSAL } from "./project-BZNjmW_8.mjs";
|
|
7
|
+
import { H as tapBuildLog, In as runProcessOperation, Lt as binOnPath, M as NO_BUILD_PROGRESS, Pn as exitAfterFlush, U as createRunRecorder, V as startBuildProgress, Y as statsProjectKey$1, cn as DEFAULT_METRO_PORT, rr as ownedSessionName } from "./budget-Bs6SxxzO.mjs";
|
|
8
|
+
import { d as runCancellationSignal, f as withNativeBuildRun, r as cancelledFailure, u as runCancellation } from "./native-run-DY_RLx3C.mjs";
|
|
9
|
+
import { ht as parkedMaxSetting, lt as POOL_SETTING_REMEDY } from "./android-DUYkNF4u.mjs";
|
|
10
|
+
import { i as createIosSimSnapshot } from "./ios-CpByZy12.mjs";
|
|
11
|
+
import { d as optimizationBuildProfile, l as artifactCachePolicy } from "./errors-ccaPc4ox.mjs";
|
|
12
|
+
import { t as COMPILATION_CACHE_NOT_RUN } from "./xcode-Zlx3qjEs.mjs";
|
|
13
|
+
import { d as simulatorRuntime, f as setRemoteLogSink } from "./client-UXD70ZbM.mjs";
|
|
14
|
+
import { i as parseBuildMachineOption } from "./selection-CSl9i5qU.mjs";
|
|
15
|
+
import { r as hostedMetroSettings } from "./metro-gateway-BMJNlj3E.mjs";
|
|
16
|
+
import { i as writeDevicePlacement } from "./ios-state-DvFX-K_l.mjs";
|
|
17
|
+
import { r as siblingPlatformSlots, t as launchSlotScope } from "./slot-launch-DF8VfT64.mjs";
|
|
18
|
+
import { f as waitFlagConflict, o as leaseExpiryText } from "./device-lease-run-C8raGFoP.mjs";
|
|
19
|
+
import { _ as resolveIosWait, a as deviceModelRefusal, b as resolveSimulatorAppFlag, c as iosProjectPathError, d as ownedSimFailure, g as resolveIosBuildSetup, h as resolveDeviceType, i as deviceLabel, m as resolveConfiguration, n as buildLogFile, r as createIosDeviceWaitRun, u as isReleaseConfiguration, v as resolveRuntime, x as simulatorBuildArch, y as resolveSchemeSelection } from "./support-Dlu37g6H.mjs";
|
|
20
|
+
import { r as isEasBuildFailure } from "./eas-build-BomfRnFT.mjs";
|
|
21
|
+
import { r as isPhysicalDeviceRequest, t as ensureDevServer } from "./native-runtime-Dg1Q7tfF.mjs";
|
|
22
|
+
import "./dev-client-UOeESKm6.mjs";
|
|
23
|
+
import { t as didSetUpDevice } from "./device-ExJq8Ei7.mjs";
|
|
25
24
|
import { t as unsupportedPlan } from "./project-plan-BPwbLwQu.mjs";
|
|
26
|
-
import {
|
|
27
|
-
import { a as lastBuildRecord, o as reportIosResult, s as writeLastBuild } from "./ios-project-
|
|
28
|
-
import { t as acquireIosArtifact } from "./artifact-
|
|
29
|
-
import { a as iosPlacementBudget, i as hostedIosSelectors, n as connectIosTarget, o as selectIosPlacement, r as hostedIosMetroNote, t as connectIosBackend } from "./remote-
|
|
30
|
-
import { a as iosPoolCandidates, c as isWirelessIosDevice, f as resolveIosPhysicalDevice, o as iosPoolNoCandidatesRefusal, r as iosDeviceBounds } from "./ios-device-
|
|
31
|
-
import { i as DEFAULT_DEPS, l as lanOriginUrlFor, s as chooseLanAddress, t as finishIosRun } from "./launch-
|
|
25
|
+
import { a as refusePlan, i as printPlan, n as planFlagRefusal } from "./build-plan-CaFskB7_.mjs";
|
|
26
|
+
import { a as lastBuildRecord, o as reportIosResult, s as writeLastBuild } from "./ios-project-WuwwBdvW.mjs";
|
|
27
|
+
import { t as acquireIosArtifact } from "./artifact-B8T3S5gi.mjs";
|
|
28
|
+
import { a as iosPlacementBudget, i as hostedIosSelectors, n as connectIosTarget, o as selectIosPlacement, r as hostedIosMetroNote, t as connectIosBackend } from "./remote-ByYkXdGD.mjs";
|
|
29
|
+
import { a as iosPoolCandidates, c as isWirelessIosDevice, f as resolveIosPhysicalDevice, o as iosPoolNoCandidatesRefusal, r as iosDeviceBounds } from "./ios-device-CwFMehUS.mjs";
|
|
30
|
+
import { i as DEFAULT_DEPS, l as lanOriginUrlFor, s as chooseLanAddress, t as finishIosRun } from "./launch-Zq2mOSDy.mjs";
|
|
32
31
|
import { basename, join } from "node:path";
|
|
33
|
-
import { hostedIosStatus, parseMachine } from "@stim-cli/core/state";
|
|
34
32
|
import { workspaceId } from "@stim-cli/core";
|
|
35
|
-
import {
|
|
33
|
+
import { hostedIosStatus, parseMachine } from "@stim-cli/core/state";
|
|
36
34
|
import chalk from "chalk";
|
|
35
|
+
import { InvalidArgumentError } from "commander";
|
|
37
36
|
//#region src/commands/ios/hosted.ts
|
|
38
37
|
async function finishHostedIosRun({ target, d, artifact, root, slot, release, appMode, isExpo, metroCheck, metroPort, logsDir, fail, note, enterPhase, selectors, projectBundleId, ...report }) {
|
|
39
|
-
const bundleId = artifact.bundleId ?? (d.readBundleId(artifact.path) || projectBundleId());
|
|
38
|
+
const bundleId = artifact.bundleId ?? (await d.readBundleId(artifact.path) || await projectBundleId());
|
|
40
39
|
if (!bundleId) return fail({
|
|
41
40
|
code: "STIM_INSTALL_FAILED",
|
|
42
41
|
message: "The built app has no bundle identifier."
|
|
@@ -84,7 +83,7 @@ async function finishHostedIosRun({ target, d, artifact, root, slot, release, ap
|
|
|
84
83
|
metroPort,
|
|
85
84
|
mode: workspaceDevServerMode(root, isExpo),
|
|
86
85
|
slot: launchSlotScope(root, slot),
|
|
87
|
-
platformShared: siblingPlatformSlots(root, "ios", slot).length > 0
|
|
86
|
+
platformShared: (await siblingPlatformSlots(root, "ios", slot)).length > 0
|
|
88
87
|
});
|
|
89
88
|
if (evidence.fatal) return fail({
|
|
90
89
|
code: "STIM_LAUNCH_FAILED",
|
|
@@ -156,7 +155,7 @@ async function planIos(opts, d) {
|
|
|
156
155
|
code: "STIM_NO_PROJECT",
|
|
157
156
|
...selected.problem
|
|
158
157
|
}, json);
|
|
159
|
-
const context =
|
|
158
|
+
const context = await projectSettingsContextAsync(root, d);
|
|
160
159
|
const settings = d.resolveSettings(context);
|
|
161
160
|
const project = await selected.load(settings);
|
|
162
161
|
if (!project.plan) return refusePlan(unsupportedPlan("ios"), json);
|
|
@@ -169,17 +168,11 @@ async function planIos(opts, d) {
|
|
|
169
168
|
}
|
|
170
169
|
//#endregion
|
|
171
170
|
//#region src/commands/ios.ts
|
|
172
|
-
function writeNote(line) {
|
|
173
|
-
console.error(line);
|
|
174
|
-
}
|
|
175
|
-
function writePhase(name, text) {
|
|
176
|
-
console.error(phaseLine(name, text));
|
|
177
|
-
}
|
|
178
171
|
function iosCommand(program) {
|
|
179
172
|
registerIos(program);
|
|
180
173
|
}
|
|
181
174
|
function registerIos(program, deps = {}) {
|
|
182
|
-
program.command("ios").description("Build (or restore from the fingerprint cache), install and launch this workspace's app on its owned simulator. React Native and Expo Debug runs start the dev server when it is not running.").option("--eas-profile <name>", "Download a matching EAS development build; on a miss, print the build command without running it").option("--slot <name>", "Reusable device slot within this workspace (default: default)", parseDeviceSlotOption).option("--remote-build <value>", "Build on auto, local, or one named machine; a name refuses without fallback", parseBuildMachineOption).option("--json", "Emit the facts as a single JSON line on stdout; every other line goes to stderr").option("--plan", "Predict the next build without building, booting or installing: resolve the fingerprint, check the local then remote cache, and print the expected cache result and duration. Writes no Stim state.").option("--scheme <name>", "Shared Xcode app scheme to build; overrides automatic scheme selection, not the app URL scheme").option("--no-metro-check", "Skip the \"is this workspace's dev server running?\" check: do not start it, and build anyway").option("--no-build-cache", "Build fresh, ignoring cached artifacts (local and the project's build-cache provider); the fresh build still replaces the cache entry").option("--configuration <name>", "Xcode configuration to build (e.g. Release). A non-Debug configuration embeds the JS bundle and skips Metro entirely. Overrides the ios.configuration setting. Default: Debug").option("--device-type <name>", "Simulator model to create this workspace's owned sim as, exactly as `xcrun simctl list devicetypes` names it (e.g. \"iPad Pro 13-inch (M5)\"). Overrides the ios.deviceType setting for this invocation. A model no installed runtime can create refuses with STIM_BAD_ARG and prints the models they do offer.").option("--runtime <version>", "Simulator runtime to create this workspace's owned sim on, as a version (\"18.5\") or a runtime's full name (\"iOS 18.5\"); nothing else matches. Overrides the ios.runtime setting for this invocation. An unknown version refuses with STIM_BAD_ARG and prints the installed runtimes.").option("--simulator-app <app>", "Open the owned simulator in xcode, siniulator, or stim-desktop for this run, overriding the machine iosSimulatorApp setting. Also opens an already running simulator; local simulators only.").option("--device [udid]", "Build the iphoneos slice for a connected iPhone, install it, and launch it, instead of using this workspace's owned simulator. The phone can be cabled or paired over Wi-Fi. With no UDID, the first cabled device this workspace can lease is used, waiting for one that is busy; a Wi-Fi device is used only when no cabled one is connected and ready. In Debug the app is wired to this workspace's Metro over the LAN. Stim never creates, boots, or deletes a physical device.").option("--remote <target>", "Run on eas, proxy, or an approved Mac in remote.machines; named Macs never fall back locally. auto places on an approved Mac when this
|
|
175
|
+
program.command("ios").description("Build (or restore from the fingerprint cache), install and launch this workspace's app on its owned simulator. React Native and Expo Debug runs start the dev server when it is not running.").option("--eas-profile <name>", "Download a matching EAS development build; on a miss, print the build command without running it").option("--slot <name>", "Reusable device slot within this workspace (default: default)", parseDeviceSlotOption).option("--remote-build <value>", "Build on auto, local, or one named machine; a name refuses without fallback", parseBuildMachineOption).option("--json", "Emit the facts as a single JSON line on stdout; every other line goes to stderr").option("--plan", "Predict the next build without building, booting or installing: resolve the fingerprint, check the local then remote cache, and print the expected cache result and duration. Writes no Stim state.").option("--scheme <name>", "Shared Xcode app scheme to build; overrides automatic scheme selection, not the app URL scheme").option("--no-metro-check", "Skip the \"is this workspace's dev server running?\" check: do not start it, and build anyway").option("--no-build-cache", "Build fresh, ignoring cached artifacts (local and the project's build-cache provider); the fresh build still replaces the cache entry").option("--configuration <name>", "Xcode configuration to build (e.g. Release). A non-Debug configuration embeds the JS bundle and skips Metro entirely. Overrides the ios.configuration setting. Default: Debug").option("--device-type <name>", "Simulator model to create this workspace's owned sim as, exactly as `xcrun simctl list devicetypes` names it (e.g. \"iPad Pro 13-inch (M5)\"). Overrides the ios.deviceType setting for this invocation. A model no installed runtime can create refuses with STIM_BAD_ARG and prints the models they do offer.").option("--runtime <version>", "Simulator runtime to create this workspace's owned sim on, as a version (\"18.5\") or a runtime's full name (\"iOS 18.5\"); nothing else matches. Overrides the ios.runtime setting for this invocation. An unknown version refuses with STIM_BAD_ARG and prints the installed runtimes.").option("--simulator-app <app>", "Open the owned simulator in xcode, siniulator, or stim-desktop for this run, overriding the machine iosSimulatorApp setting. Also opens an already running simulator; local simulators only.").option("--device [udid]", "Build the iphoneos slice for a connected iPhone, install it, and launch it, instead of using this workspace's owned simulator. The phone can be cabled or paired over Wi-Fi. With no UDID, the first cabled device this workspace can lease is used, waiting for one that is busy; a Wi-Fi device is used only when no cabled one is connected and ready. In Debug the app is wired to this workspace's Metro over the LAN. Stim never creates, boots, or deletes a physical device.").option("--remote <target>", "Run on eas, proxy, or an approved Mac in remote.machines; named Macs never fall back locally. auto places on an approved Mac when this machine is full or busy. local runs here, whatever ios.remote says.", (value) => {
|
|
183
176
|
if (parseMachine(value)) return value.trim();
|
|
184
177
|
throw new InvalidArgumentError("expected eas, proxy, auto, local, or a remote Mac name");
|
|
185
178
|
}).option("--wait <seconds>", "How long to wait for another workspace to release the phone it leases, before refusing with STIM_DEVICE_BUSY (default 60, 0 refuses at once). Without --device, wait for an owned-device slot (default 600 seconds; --no-wait refuses immediately).").option("--no-wait", "Install on a phone another workspace leases instead of waiting: this run takes no lease and, when both workspaces build the same app id, the install terminates the holder's running app. Without --device, refuse a full device cap or existing slot queue immediately.").action(async (opts) => {
|
|
@@ -190,38 +183,39 @@ function registerIos(program, deps = {}) {
|
|
|
190
183
|
});
|
|
191
184
|
return;
|
|
192
185
|
}
|
|
193
|
-
const
|
|
186
|
+
const root = (deps.findProjectRoot ?? DEFAULT_DEPS.findProjectRoot)(process.cwd());
|
|
187
|
+
const { value: completion, interrupted } = await runProcessOperation(root ?? process.cwd(), (context) => runIosOperation(context, root, {
|
|
194
188
|
...opts,
|
|
195
189
|
waitConflict: waitFlagConflict(process.argv)
|
|
196
|
-
}, deps);
|
|
197
|
-
if (!completion) process.exit(
|
|
190
|
+
}, deps));
|
|
191
|
+
if (!completion) process.exit(interrupted ?? 1);
|
|
198
192
|
else if (completion.uploadsAbandoned) exitAfterFlush(0);
|
|
199
193
|
});
|
|
200
194
|
}
|
|
201
|
-
function runIosOperation(root, opts = {}, deps = {}, onFailure = () => {}) {
|
|
202
|
-
const run = (progress) => runIos(root, opts, deps, progress, onFailure);
|
|
203
|
-
return root ? withNativeBuildRun(root, {
|
|
195
|
+
function runIosOperation(context, root, opts = {}, deps = {}, onFailure = () => {}) {
|
|
196
|
+
const run = (progress) => runIos(context, root, opts, deps, progress, onFailure);
|
|
197
|
+
return root ? withNativeBuildRun(context, root, {
|
|
204
198
|
command: "ios",
|
|
205
199
|
platform: "ios",
|
|
206
200
|
slot: opts.slot ?? "default"
|
|
207
201
|
}, async (claim) => {
|
|
208
|
-
recordWorkspaceUse(root);
|
|
202
|
+
recordWorkspaceUse(root, /* @__PURE__ */ new Date(), context.env, context.cwd);
|
|
209
203
|
const progress = startBuildProgress({
|
|
210
204
|
root,
|
|
211
205
|
platform: "ios",
|
|
212
206
|
slot: opts.slot ?? "default",
|
|
213
207
|
claim,
|
|
214
|
-
note: (line) =>
|
|
208
|
+
note: (line) => context.output("stderr", `${chalk.dim(line)}\n`)
|
|
215
209
|
});
|
|
216
210
|
try {
|
|
217
211
|
return await run(progress);
|
|
218
212
|
} finally {
|
|
219
213
|
progress.clear();
|
|
220
214
|
}
|
|
221
|
-
}, { write: (line) =>
|
|
215
|
+
}, { write: (line) => context.output("stderr", `${chalk.dim(phaseLine("lock", line))}\n`) }) : run();
|
|
222
216
|
}
|
|
223
|
-
function unlessCancelled(result) {
|
|
224
|
-
if (!result.ok || !runCancellation()) return result;
|
|
217
|
+
function unlessCancelled(context, result) {
|
|
218
|
+
if (!result.ok || !runCancellation(context)) return result;
|
|
225
219
|
return {
|
|
226
220
|
ok: false,
|
|
227
221
|
failure: {
|
|
@@ -312,7 +306,7 @@ function iosSlotDeps(d, slot) {
|
|
|
312
306
|
}
|
|
313
307
|
return d;
|
|
314
308
|
}
|
|
315
|
-
async function runIos(projectRoot, opts = {}, overrides = {}, progress = NO_BUILD_PROGRESS, onFailure) {
|
|
309
|
+
async function runIos(context, projectRoot, opts = {}, overrides = {}, progress = NO_BUILD_PROGRESS, onFailure) {
|
|
316
310
|
const slot = validateDeviceSlot(opts.slot);
|
|
317
311
|
let d = iosSlotDeps({
|
|
318
312
|
...DEFAULT_DEPS,
|
|
@@ -320,8 +314,9 @@ async function runIos(projectRoot, opts = {}, overrides = {}, progress = NO_BUIL
|
|
|
320
314
|
}, slot);
|
|
321
315
|
const json = Boolean(opts.json);
|
|
322
316
|
const metroCheck = opts.metroCheck !== false;
|
|
323
|
-
const
|
|
324
|
-
const
|
|
317
|
+
const note = (line) => context.output("stderr", `${line}\n`);
|
|
318
|
+
const phase = (name, text) => note(phaseLine(name, text));
|
|
319
|
+
const emit = (line) => context.output("stdout", `${line}\n`);
|
|
325
320
|
const started = d.now();
|
|
326
321
|
const startedAt = new Date(started).toISOString();
|
|
327
322
|
const elapsed = () => d.now() - started;
|
|
@@ -329,7 +324,7 @@ async function runIos(projectRoot, opts = {}, overrides = {}, progress = NO_BUIL
|
|
|
329
324
|
note(chalk.red(phaseLine("error", message)));
|
|
330
325
|
note(chalk.dim(phaseLine("remedy", remedy)));
|
|
331
326
|
note(chalk.red(phaseLine("failed", "STIM_NO_PROJECT")));
|
|
332
|
-
if (json)
|
|
327
|
+
if (json) emit(JSON.stringify({
|
|
333
328
|
code: "STIM_NO_PROJECT",
|
|
334
329
|
message,
|
|
335
330
|
remedy
|
|
@@ -352,7 +347,7 @@ async function runIos(projectRoot, opts = {}, overrides = {}, progress = NO_BUIL
|
|
|
352
347
|
const message = `Could not prepare this workspace's Stim state: ${error?.message || error}`;
|
|
353
348
|
note(chalk.red(`${code}: ${message}`));
|
|
354
349
|
note(chalk.dim("Check that STIM_HOME is writable and has free space. An EPERM on a directory you can write is a sandbox: allow writes to STIM_HOME, or run Stim with the sandbox disabled (`stim guide errors sandbox`)."));
|
|
355
|
-
if (json)
|
|
350
|
+
if (json) emit(JSON.stringify({
|
|
356
351
|
code,
|
|
357
352
|
message,
|
|
358
353
|
remedy: "Check that STIM_HOME is writable and has free space."
|
|
@@ -374,7 +369,7 @@ async function runIos(projectRoot, opts = {}, overrides = {}, progress = NO_BUIL
|
|
|
374
369
|
slot
|
|
375
370
|
}
|
|
376
371
|
}), progress);
|
|
377
|
-
setRemoteLogSink((record) => logWriter().write(record));
|
|
372
|
+
setRemoteLogSink(context, (record) => logWriter().write(record));
|
|
378
373
|
let leaseHandle = null;
|
|
379
374
|
let stopLeaseSignals = null;
|
|
380
375
|
const releaseLease = () => {
|
|
@@ -397,7 +392,7 @@ async function runIos(projectRoot, opts = {}, overrides = {}, progress = NO_BUIL
|
|
|
397
392
|
phases: () => progress.durations(),
|
|
398
393
|
deviceSetup: () => progress.deviceSetupKnown()
|
|
399
394
|
});
|
|
400
|
-
const deviceWaitRun = createIosDeviceWaitRun(stats, progress, runCancellationSignal());
|
|
395
|
+
const deviceWaitRun = createIosDeviceWaitRun(stats, progress, runCancellationSignal(context));
|
|
401
396
|
const recordRun = deviceWaitRun.record;
|
|
402
397
|
let compilationCache = COMPILATION_CACHE_NOT_RUN;
|
|
403
398
|
let reclaimed = [];
|
|
@@ -405,7 +400,7 @@ async function runIos(projectRoot, opts = {}, overrides = {}, progress = NO_BUIL
|
|
|
405
400
|
let devicePlacement;
|
|
406
401
|
let builtConfiguration = null;
|
|
407
402
|
const fail = ({ code, message, remedy = null, lines = [], logPath = null, build = null, lease, setup = false }) => {
|
|
408
|
-
({code, message, remedy, lines} = cancelledFailure("ios", {
|
|
403
|
+
({code, message, remedy, lines} = cancelledFailure(context, "ios", {
|
|
409
404
|
code,
|
|
410
405
|
message
|
|
411
406
|
}) ?? {
|
|
@@ -434,7 +429,7 @@ async function runIos(projectRoot, opts = {}, overrides = {}, progress = NO_BUIL
|
|
|
434
429
|
failed: true,
|
|
435
430
|
durationMs: elapsed()
|
|
436
431
|
});
|
|
437
|
-
if (json)
|
|
432
|
+
if (json) emit(JSON.stringify({
|
|
438
433
|
code,
|
|
439
434
|
message: message ?? null,
|
|
440
435
|
remedy: remedy ?? null,
|
|
@@ -456,7 +451,21 @@ async function runIos(projectRoot, opts = {}, overrides = {}, progress = NO_BUIL
|
|
|
456
451
|
});
|
|
457
452
|
return null;
|
|
458
453
|
};
|
|
459
|
-
const
|
|
454
|
+
const settingsSignal = runCancellationSignal(context) ?? context.signal;
|
|
455
|
+
let settingsContext;
|
|
456
|
+
try {
|
|
457
|
+
settingsContext = await projectSettingsContextAsync(root, d, {
|
|
458
|
+
env: context.env,
|
|
459
|
+
signal: settingsSignal
|
|
460
|
+
});
|
|
461
|
+
} catch (error) {
|
|
462
|
+
if (!settingsSignal.aborted) throw error;
|
|
463
|
+
return fail({
|
|
464
|
+
code: "STIM_CANCELLED",
|
|
465
|
+
message: "before resolving project settings",
|
|
466
|
+
setup: true
|
|
467
|
+
});
|
|
468
|
+
}
|
|
460
469
|
const projectKey = statsProjectKey$1({
|
|
461
470
|
root,
|
|
462
471
|
commonDir: settingsContext.gitCommonDir,
|
|
@@ -470,7 +479,7 @@ async function runIos(projectRoot, opts = {}, overrides = {}, progress = NO_BUIL
|
|
|
470
479
|
platform: "ios"
|
|
471
480
|
});
|
|
472
481
|
const settings = d.resolveSettings(settingsContext);
|
|
473
|
-
const setup = resolveIosBuildSetup(opts.remoteBuild, settings, (label, message) => note(phaseLine(label, chalk.yellow(message))));
|
|
482
|
+
const setup = resolveIosBuildSetup(opts.remoteBuild, settings, (label, message) => note(phaseLine(label, chalk.yellow(message))), context.env);
|
|
474
483
|
if (!setup.ok) return fail(setup.failure);
|
|
475
484
|
buildMachine = setup.buildMachine;
|
|
476
485
|
const { optimizations } = setup;
|
|
@@ -532,7 +541,7 @@ async function runIos(projectRoot, opts = {}, overrides = {}, progress = NO_BUIL
|
|
|
532
541
|
}
|
|
533
542
|
};
|
|
534
543
|
const isExpo = integration.isExpo;
|
|
535
|
-
const schemeRefusal = integration.schemeProblem(buildScheme, configuration);
|
|
544
|
+
const schemeRefusal = await integration.schemeProblem(buildScheme, configuration);
|
|
536
545
|
if (schemeRefusal) return fail(schemeRefusal);
|
|
537
546
|
const capabilityRefusal = iosProjectTargetRefusal(integration, {
|
|
538
547
|
physical,
|
|
@@ -541,6 +550,8 @@ async function runIos(projectRoot, opts = {}, overrides = {}, progress = NO_BUIL
|
|
|
541
550
|
if (capabilityRefusal) return fail(capabilityRefusal);
|
|
542
551
|
const remoteSelection = await selectIosPlacement({
|
|
543
552
|
root,
|
|
553
|
+
env: context.env,
|
|
554
|
+
operation: context,
|
|
544
555
|
slot,
|
|
545
556
|
opts,
|
|
546
557
|
settings,
|
|
@@ -603,10 +614,10 @@ async function runIos(projectRoot, opts = {}, overrides = {}, progress = NO_BUIL
|
|
|
603
614
|
const hostedTarget = connected.target;
|
|
604
615
|
try {
|
|
605
616
|
const simSnapshot = createIosSimSnapshot();
|
|
606
|
-
const budget = await iosPlacementBudget(d, root, note, Boolean(hostedTarget), remoteSelection.budget, simSnapshot);
|
|
617
|
+
const budget = await iosPlacementBudget(d, root, note, Boolean(hostedTarget), remoteSelection.budget, simSnapshot, context.env);
|
|
607
618
|
reclaimed = budget.reclaimed;
|
|
608
619
|
if (budget.refusal) return fail(budget.refusal);
|
|
609
|
-
const backendConnection = await connectIosBackend(root, remoteBackend, opts.deviceType, d);
|
|
620
|
+
const backendConnection = await connectIosBackend(root, remoteBackend, opts.deviceType, d, context.env, context);
|
|
610
621
|
if ("failure" in backendConnection) return fail(backendConnection.failure);
|
|
611
622
|
const remoteDevice = backendConnection.remote;
|
|
612
623
|
const remoteArch = hostedTarget ? hostedTarget.choice.architecture : backendConnection.arch;
|
|
@@ -615,10 +626,11 @@ async function runIos(projectRoot, opts = {}, overrides = {}, progress = NO_BUIL
|
|
|
615
626
|
checkDeviceCapacity: remoteDevice.checkDeviceCapacity,
|
|
616
627
|
ensureOwnedDevice: remoteDevice.ensureOwnedDevice,
|
|
617
628
|
ensureBooted: remoteDevice.ensureBooted,
|
|
618
|
-
installIosApp: remoteDevice.installIosApp,
|
|
619
|
-
launchIosApp: remoteDevice.launchIosApp
|
|
629
|
+
installIosApp: async (args) => remoteDevice.installIosApp(args),
|
|
630
|
+
launchIosApp: async (args) => remoteDevice.launchIosApp(args)
|
|
620
631
|
};
|
|
621
632
|
const easBuild = await d.resolveEasDevelopmentBuild({
|
|
633
|
+
context,
|
|
622
634
|
root,
|
|
623
635
|
platform: "ios",
|
|
624
636
|
profile: opts.easProfile,
|
|
@@ -626,14 +638,26 @@ async function runIos(projectRoot, opts = {}, overrides = {}, progress = NO_BUIL
|
|
|
626
638
|
isExpo,
|
|
627
639
|
physical,
|
|
628
640
|
selectors: [opts.scheme, opts.configuration],
|
|
629
|
-
buildCache: opts.buildCache
|
|
641
|
+
buildCache: opts.buildCache,
|
|
642
|
+
env: context.env,
|
|
643
|
+
signal: settingsSignal
|
|
644
|
+
}).catch((error) => {
|
|
645
|
+
const cancelled = cancelledFailure(context, "ios", {
|
|
646
|
+
code: "STIM_CANCELLED",
|
|
647
|
+
message: "during EAS lookup"
|
|
648
|
+
});
|
|
649
|
+
if (cancelled) return {
|
|
650
|
+
ok: false,
|
|
651
|
+
...cancelled
|
|
652
|
+
};
|
|
653
|
+
throw error;
|
|
630
654
|
});
|
|
631
655
|
if (isEasBuildFailure(easBuild)) return fail(easBuild);
|
|
632
|
-
const registerProject = () => d.upsertProject(root, {
|
|
633
|
-
bundleId: integration.bundleId() ?? void 0,
|
|
656
|
+
const registerProject = async () => d.upsertProject(root, {
|
|
657
|
+
bundleId: await integration.bundleId() ?? void 0,
|
|
634
658
|
isExpo
|
|
635
659
|
});
|
|
636
|
-
if (remoteBackend !== "eas") registerProject();
|
|
660
|
+
if (remoteBackend !== "eas") await registerProject();
|
|
637
661
|
const proj = d.getProject(root);
|
|
638
662
|
const limits = d.getConcurrencyLimits();
|
|
639
663
|
let physicalDevice = null;
|
|
@@ -643,13 +667,13 @@ async function runIos(projectRoot, opts = {}, overrides = {}, progress = NO_BUIL
|
|
|
643
667
|
root,
|
|
644
668
|
platform: "ios",
|
|
645
669
|
idLabel: "udid",
|
|
646
|
-
list: () => iosPoolCandidates(d.listIosDevices()).map((entry) => ({
|
|
670
|
+
list: async () => iosPoolCandidates(await d.listIosDevices()).map((entry) => ({
|
|
647
671
|
id: entry.udid,
|
|
648
672
|
name: entry.name,
|
|
649
673
|
fallback: isWirelessIosDevice(entry)
|
|
650
674
|
})),
|
|
651
|
-
noCandidates: () => {
|
|
652
|
-
const resolved = iosPoolNoCandidatesRefusal(d.listIosDevices());
|
|
675
|
+
noCandidates: async () => {
|
|
676
|
+
const resolved = iosPoolNoCandidatesRefusal(await d.listIosDevices());
|
|
653
677
|
return {
|
|
654
678
|
message: resolved.error,
|
|
655
679
|
remedy: resolved.remedy
|
|
@@ -672,7 +696,7 @@ async function runIos(projectRoot, opts = {}, overrides = {}, progress = NO_BUIL
|
|
|
672
696
|
};
|
|
673
697
|
wireless = pooled.candidate.fallback === true;
|
|
674
698
|
} else if (physical) {
|
|
675
|
-
const resolved = resolveIosPhysicalDevice(typeof deviceFlag === "string" ? deviceFlag : null, d.listIosDevices());
|
|
699
|
+
const resolved = resolveIosPhysicalDevice(typeof deviceFlag === "string" ? deviceFlag : null, await d.listIosDevices());
|
|
676
700
|
if (!resolved.udid) return fail({
|
|
677
701
|
code: "STIM_NO_DEVICE",
|
|
678
702
|
message: resolved.error,
|
|
@@ -769,6 +793,7 @@ async function runIos(projectRoot, opts = {}, overrides = {}, progress = NO_BUIL
|
|
|
769
793
|
async function prepareMetro() {
|
|
770
794
|
if (metroCheck) {
|
|
771
795
|
const gate = await ensureDevServer({
|
|
796
|
+
env: context.env,
|
|
772
797
|
root,
|
|
773
798
|
port: metroPort,
|
|
774
799
|
settings: hostedMetroSettings(settings, Boolean(hostedTarget)),
|
|
@@ -792,7 +817,7 @@ async function runIos(projectRoot, opts = {}, overrides = {}, progress = NO_BUIL
|
|
|
792
817
|
metroPort = gate.port;
|
|
793
818
|
devServer = gate.devServer;
|
|
794
819
|
} else {
|
|
795
|
-
const pin = metroPortSetting(settings);
|
|
820
|
+
const pin = metroPortSetting(settings, context.env);
|
|
796
821
|
if (pin.error) return {
|
|
797
822
|
ok: false,
|
|
798
823
|
error: {
|
|
@@ -815,6 +840,7 @@ async function runIos(projectRoot, opts = {}, overrides = {}, progress = NO_BUIL
|
|
|
815
840
|
if (remoteDevice && metroPort !== null) {
|
|
816
841
|
const reachable = await d.ensureMetroReachable({
|
|
817
842
|
ctx: remoteDevice.ctx,
|
|
843
|
+
env: context.env,
|
|
818
844
|
metroPort,
|
|
819
845
|
isExpo,
|
|
820
846
|
tunnelMode: tunnelModeSetting(settings) ?? void 0,
|
|
@@ -877,6 +903,21 @@ async function runIos(projectRoot, opts = {}, overrides = {}, progress = NO_BUIL
|
|
|
877
903
|
return null;
|
|
878
904
|
}
|
|
879
905
|
let artifact = null;
|
|
906
|
+
const reportRunFailure = (error) => {
|
|
907
|
+
const cancelled = cancelledFailure(context, "ios", {
|
|
908
|
+
code: "STIM_CANCELLED",
|
|
909
|
+
message: "while finishing the run"
|
|
910
|
+
});
|
|
911
|
+
if (cancelled) return fail({
|
|
912
|
+
...cancelled,
|
|
913
|
+
build: artifact?.failureFields
|
|
914
|
+
});
|
|
915
|
+
recordRun({
|
|
916
|
+
failed: true,
|
|
917
|
+
durationMs: elapsed()
|
|
918
|
+
});
|
|
919
|
+
throw error;
|
|
920
|
+
};
|
|
880
921
|
try {
|
|
881
922
|
const boot = () => physicalDevice ? Promise.resolve({
|
|
882
923
|
ok: true,
|
|
@@ -899,6 +940,7 @@ async function runIos(projectRoot, opts = {}, overrides = {}, progress = NO_BUIL
|
|
|
899
940
|
root,
|
|
900
941
|
platform: "ios",
|
|
901
942
|
sessionName: ownedSessionName(remoteDevice.ctx.label),
|
|
943
|
+
operation: context,
|
|
902
944
|
startedAt: new Date(d.now()).toISOString(),
|
|
903
945
|
deviceType: remoteDevice.ctx.deviceType ?? null,
|
|
904
946
|
boot,
|
|
@@ -924,13 +966,15 @@ async function runIos(projectRoot, opts = {}, overrides = {}, progress = NO_BUIL
|
|
|
924
966
|
hostArch: d.hostSimulatorArch(),
|
|
925
967
|
configuration
|
|
926
968
|
});
|
|
927
|
-
const acquiredArtifact = unlessCancelled(await acquireIosArtifact({
|
|
969
|
+
const acquiredArtifact = unlessCancelled(context, await acquireIosArtifact({
|
|
970
|
+
context,
|
|
928
971
|
root,
|
|
929
972
|
logFile,
|
|
930
973
|
configuration,
|
|
931
974
|
buildMachine,
|
|
932
975
|
physical,
|
|
933
976
|
recipe: integration.artifact({
|
|
977
|
+
operation: context,
|
|
934
978
|
root,
|
|
935
979
|
logFile,
|
|
936
980
|
configuration,
|
|
@@ -983,6 +1027,7 @@ async function runIos(projectRoot, opts = {}, overrides = {}, progress = NO_BUIL
|
|
|
983
1027
|
artifact = acquiredArtifact.artifact;
|
|
984
1028
|
compilationCache = artifact.cache.compilation;
|
|
985
1029
|
if (hostedTarget) return await finishHostedIosRun({
|
|
1030
|
+
output: context.output,
|
|
986
1031
|
target: hostedTarget,
|
|
987
1032
|
projectBundleId: integration.bundleId,
|
|
988
1033
|
root,
|
|
@@ -1043,12 +1088,14 @@ async function runIos(projectRoot, opts = {}, overrides = {}, progress = NO_BUIL
|
|
|
1043
1088
|
expiresAt: acquired.status === "leased" ? acquired.expiresAt : null
|
|
1044
1089
|
});
|
|
1045
1090
|
if (acquired.status === "leased") {
|
|
1046
|
-
stopLeaseSignals = d.
|
|
1091
|
+
stopLeaseSignals = d.releaseLeaseOnAbort(context, releaseLease);
|
|
1047
1092
|
phase("lease", `${acquired.kind} lease on ${physicalDevice.udid} until ${leaseExpiryText(acquired.expiresAt, d.now())}`);
|
|
1048
1093
|
}
|
|
1049
1094
|
}
|
|
1050
1095
|
try {
|
|
1051
1096
|
return await finishIosRun({
|
|
1097
|
+
operation: context,
|
|
1098
|
+
output: context.output,
|
|
1052
1099
|
projectBundleId: integration.bundleId,
|
|
1053
1100
|
runtime: appRuntime,
|
|
1054
1101
|
runtimePreparation,
|
|
@@ -1095,13 +1142,9 @@ async function runIos(projectRoot, opts = {}, overrides = {}, progress = NO_BUIL
|
|
|
1095
1142
|
releaseLease();
|
|
1096
1143
|
}
|
|
1097
1144
|
} catch (error) {
|
|
1098
|
-
|
|
1099
|
-
failed: true,
|
|
1100
|
-
durationMs: elapsed()
|
|
1101
|
-
});
|
|
1102
|
-
throw error;
|
|
1145
|
+
return reportRunFailure(error);
|
|
1103
1146
|
} finally {
|
|
1104
|
-
artifact?.release();
|
|
1147
|
+
await artifact?.release();
|
|
1105
1148
|
}
|
|
1106
1149
|
} finally {
|
|
1107
1150
|
await deviceWaitRun.finish();
|