stim 1.20.2 → 1.22.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +141 -8
- package/dist/acquire-artifact-Co2k4f7O.mjs +171 -0
- package/dist/act-DsuqEkiM.mjs +2801 -0
- package/dist/activity-CMLmzp7o.mjs +1397 -0
- package/dist/{agent-device-usage-output-Dzgv6lgR.mjs → agent-device-usage-output-DUFaTMdd.mjs} +23 -67
- package/dist/{android-DCKZrNvV.mjs → android-ByRMUoiJ.mjs} +157 -93
- package/dist/{android-Mz_Inn3w.mjs → android-C7sVmyI9.mjs} +299 -116
- package/dist/{android-Dlzxshgp.mjs → android-DGkNqa_c.mjs} +5 -5
- package/dist/{android-HqP1_vB_.mjs → android-DR5lZ2Az.mjs} +2 -2
- package/dist/android-cas-compiler.mjs +2 -2
- package/dist/{android-cas-Bl-cLJBk.mjs → android-cas-ngferVq2.mjs} +7 -6
- package/dist/android-project-BCAAmMwz.mjs +12 -0
- package/dist/android-project-DVWyCbWU.d.mts +391 -0
- package/dist/api.d.mts +810 -64
- package/dist/api.mjs +782 -1
- package/dist/{artifact-HSwkIWEQ.mjs → artifact-8EY8SAPw.mjs} +240 -213
- package/dist/{artifact-D3czlUvT.mjs → artifact-DJPy518Y.mjs} +203 -164
- package/dist/artifact-platform-CXcmX_j3.mjs +27 -0
- package/dist/{browser-web-CA-F1GQo.mjs → browser-web-Bcv99PBM.mjs} +194 -64
- package/dist/budget-Cvwn54qV.mjs +9285 -0
- package/dist/{build-DYDbfkk5.mjs → build-CabC3G23.mjs} +153 -98
- package/dist/build-cache-Dv7RN200.mjs +602 -0
- package/dist/build-plan-DUC8Ka9y.mjs +248 -0
- package/dist/{cache-manifest-XH-fvDUj.mjs → cache-manifest-DSeQjt-Q.mjs} +2 -2
- package/dist/cache-manifest.mjs +1 -1
- package/dist/{ccache-zdKiYQ3E.mjs → ccache-Btwc36-I.mjs} +10 -9
- package/dist/{cdp-Dq_ypAlJ.mjs → cdp-3fwICjzi.mjs} +18 -5
- package/dist/{chrome-BnzZMqsR.mjs → chrome-Bbw689-6.mjs} +7 -4
- package/dist/{cli-CLP3diBm.mjs → cli-CHZa9Lvk.mjs} +20 -20
- package/dist/cli.mjs +1 -1
- package/dist/client-OyRoEuSr.mjs +1577 -0
- package/dist/collector-run.d.mts +4 -40
- package/dist/collector-run.mjs +9 -8
- package/dist/{command-output-BTy8hZ0F.mjs → command-output-gwpm28fu.mjs} +1 -1
- package/dist/config-DlrsduwG.mjs +955 -0
- package/dist/{created-devices-Dzd5C2LF.mjs → created-devices-x9rN6bhs.mjs} +14 -4
- package/dist/{dependency-state-DG0p31-y.mjs → dependency-state-1I9KZT1Y.mjs} +20 -5
- package/dist/{detached-entry-B9C_zeQC.mjs → detached-entry-BwNEtIrP.mjs} +1 -1
- package/dist/{dev-client-DAWVIGBu.mjs → dev-client-BSDR5h3F.mjs} +2 -2
- package/dist/{device-BECOiufl.mjs → device-B-L3Fbxy.mjs} +91 -34
- package/dist/device-DklWZLqb.mjs +1068 -0
- package/dist/{device-capacity-CBUAcRyQ.mjs → device-capacity-DK5_EwRS.mjs} +42 -13
- package/dist/device-host-worker.mjs +76 -79
- package/dist/{device-ios-COSi6oS1.mjs → device-ios-DoB6KFCO.mjs} +77 -51
- package/dist/{device-lease-run-Cw2M4z51.mjs → device-lease-run-xJPQ_QQG.mjs} +14 -26
- package/dist/{device-pool-Bf-pOhSw.mjs → device-pool-BMkdsefq.mjs} +5 -5
- package/dist/{doctor-kfMBnUw6.mjs → doctor-Bo7BXLux.mjs} +271 -320
- package/dist/{doctor-CB8oZKCk.mjs → doctor-D5_EzwfA.mjs} +186 -91
- package/dist/doctor-fingerprint-DZLoYFVb.mjs +16 -0
- package/dist/doctor-fingerprint.mjs +19 -0
- package/dist/doctor-thjWAV0z.mjs +2 -0
- package/dist/{doctor-watchman-BRyV2adA.mjs → doctor-watchman-N2wDotwQ.mjs} +40 -21
- package/dist/{eas-build-JyfqyHfC.mjs → eas-build-CwknaQYj.mjs} +53 -20
- package/dist/{build-plan-B7SZsc2N.mjs → eas-fallback-CSgAulr5.mjs} +41 -214
- package/dist/{watchman-CPQFZLXY.mjs → eas-session-ledger-DlY_serQ.mjs} +230 -11
- package/dist/{error-diagnostics-BR677IDM.mjs → error-diagnostics-DBWO2rxE.mjs} +172 -82
- package/dist/exec-DEoAhcze.mjs +858 -0
- package/dist/exec-DnYc4HGH.d.mts +78 -0
- package/dist/{gc-qWOMdnER.mjs → gc-CXxN-4SE.mjs} +1091 -1029
- package/dist/gc-DnNDQyaP.mjs +3 -0
- package/dist/{guide-G9cAbVAc.mjs → guide-Br0LEfKy.mjs} +1165 -297
- package/dist/{hosted-android-C3MHGld1.mjs → hosted-android-B-9f-jkd.mjs} +10 -8
- package/dist/{hosted-client-ZEKpS9vw.mjs → hosted-client-DZAPrcro.mjs} +34 -19
- package/dist/{hosted-ios-l-o3iM9J.mjs → hosted-ios-CsCS21hn.mjs} +1 -1
- package/dist/{hosted-logs-EzQM7-3Z.mjs → hosted-logs-FIRx9X2f.mjs} +77 -43
- package/dist/{hosted-macos-BACVAVqE.mjs → hosted-macos-_awYSpfv.mjs} +35 -22
- package/dist/{hosted-native-A4s1QPXe.mjs → hosted-native-BdzE668-.mjs} +49 -27
- package/dist/idle-C4cZ757K.d.mts +24 -0
- package/dist/{idle-shutdown-DtxhPTKe.mjs → idle-shutdown-DDg3SdvY.mjs} +11 -10
- package/dist/ios-CDvlmUs7.d.mts +24 -0
- package/dist/{ios-BwVCF7oA.mjs → ios-Ds1clbIt.mjs} +8 -8
- package/dist/{ios-device-D7pi2Sca.mjs → ios-device--h_-8ENa.mjs} +51 -26
- package/dist/{ios-device-B5veSDDQ.mjs → ios-device-BXZ0c7Kb.mjs} +1 -1
- package/dist/{ios-RkW4pnQf.mjs → ios-hcBpnEGk.mjs} +200 -93
- package/dist/{ios-Ce7bc7br.mjs → ios-pm4nL6By.mjs} +160 -108
- package/dist/{ios-project-K9hY_Jab.mjs → ios-project-CZhKODF3.mjs} +13 -13
- package/dist/ios-signing-BtAffm0A.mjs +489 -0
- package/dist/{ios-state-CBLe1xYw.mjs → ios-state-Dtw5K2aI.mjs} +1 -1
- package/dist/{ios-nOLJGVdy.mjs → ios-xtlRHaeB.mjs} +1 -1
- package/dist/{js-swap-Bb3nsS07.mjs → js-swap-Bwhh4S7V.mjs} +30 -25
- package/dist/{launch-C3qJ6Agb.mjs → launch-BjxemNpK.mjs} +85 -543
- package/dist/{launch-F4sOqAhB.mjs → launch-CCzXlc8r.mjs} +91 -90
- package/dist/logs-BfwwadsZ.mjs +479 -0
- package/dist/logs-jTS_lHSo.mjs +248 -0
- package/dist/{macos-D7uDvO-z.mjs → macos-DVlSSyUg.mjs} +1 -1
- package/dist/macos-NfV2D7dO.mjs +694 -0
- package/dist/macos-run.mjs +1 -1
- package/dist/maintenance-run.mjs +123 -248
- package/dist/{metro-DnCEjCxs.mjs → metro-DiXtA3Ty.mjs} +107 -30
- package/dist/metro-gateway-CKZqKqx7.mjs +209 -0
- package/dist/{named-ports-4WopRPg-.mjs → named-ports-DkEzOfzO.mjs} +42 -90
- package/dist/native-android-CqgnOgsT.mjs +645 -0
- package/dist/native-gradle-artifact-inputs-DHFnmrVf.mjs +270 -0
- package/dist/native-gradle-inputs-Dnh84Zbd.mjs +211 -0
- package/dist/native-inputs-TRTTTRxt.mjs +91 -0
- package/dist/native-run-NwUuxbkg.mjs +276 -0
- package/dist/{native-runtime-k8dTIrbK.mjs → native-runtime-B7KIafpM.mjs} +11 -9
- package/dist/native-source-Y0yLhFyQ.mjs +133 -0
- package/dist/{native-xcode-inputs-CykopJdM.mjs → native-xcode-inputs-D_VOfFL7.mjs} +26 -18
- package/dist/{native-xcode-ios-Bbf30Gm0.mjs → native-xcode-ios-BYDOHWLN.mjs} +104 -60
- package/dist/{ndjson-GOnbyvso.mjs → ndjson-CgE_o3Dl.mjs} +3 -3
- package/dist/offload-worker.d.mts +59 -41
- package/dist/offload-worker.mjs +478 -115
- package/dist/operation-exec-BW0em61G.mjs +171 -0
- package/dist/{ownership-DCtw_2IA.mjs → ownership-C5fo5Edb.mjs} +3 -3
- package/dist/{page-DRHy329N.mjs → page-DBL2PiUU.mjs} +12 -5
- package/dist/paths-BsJMoPP2.mjs +12 -0
- package/dist/paths-DQtTgsBf.mjs +42 -0
- package/dist/{placement-log-MOfPVgaM.mjs → placement-log-BnGgJRRZ.mjs} +5 -5
- package/dist/{plan-placement-V0TdzYXp.mjs → plan-placement-DIsMtN-d.mjs} +15 -11
- package/dist/{ports-DdSUicVo.mjs → ports-Cy1RkmuQ.mjs} +3 -3
- package/dist/prebuild-D4JoEAEs.mjs +484 -0
- package/dist/{project-_phNIJfs.mjs → project-wM_XFTvE.mjs} +65 -37
- package/dist/{pull-request-CQ8sPbZa.mjs → pull-request-W1IuLXDt.mjs} +102 -20
- package/dist/pull-request-eODyIqZF.d.mts +124 -0
- package/dist/pull-requests.d.mts +2 -120
- package/dist/pull-requests.mjs +2 -2
- package/dist/{react-native-android-CM1XRDwv.mjs → react-native-android-6OZ7MSM7.mjs} +121 -72
- package/dist/{gradle-DSrXb6lG.mjs → react-native-build-Dvd8hC21.mjs} +292 -15
- package/dist/react-native-doctor-DsoSF1Y9.mjs +234 -0
- package/dist/{react-native-ios-Dhq_eiYQ.mjs → react-native-ios-4u1Rn-GR.mjs} +71 -39
- package/dist/{recordings-D0d5aQt0.mjs → recordings-CQmfzAh7.mjs} +12 -9
- package/dist/registration-BcRgF6Ox.mjs +51 -0
- package/dist/{reload-C8JhxjSh.mjs → reload-BzkYabB-.mjs} +94 -47
- package/dist/reload-D7AVlb8N.mjs +2 -0
- package/dist/{remote-BiR6aYjy.mjs → remote-DjGDmlTZ.mjs} +26 -18
- package/dist/result-D2Ykz_iD.mjs +435 -0
- package/dist/{run-BtPgpKks.mjs → run-DidHghD1.mjs} +5 -5
- package/dist/selection-DSMbWEX2.mjs +620 -0
- package/dist/{server-bare-R2m_gsH8.mjs → server-bare-CafzuyFB.mjs} +3 -4
- package/dist/{server-command-CTtCkmcQ.mjs → server-command-C6QjeupS.mjs} +14 -7
- package/dist/{server-expo-DsguMGUF.mjs → server-expo-CrjB29pq.mjs} +54 -11
- package/dist/server-expo-D58c9L0M.mjs +2 -0
- package/dist/{settings-B717odTD.mjs → settings-C7O8A6ZI.mjs} +309 -119
- package/dist/settings-DpR-1Wnn.mjs +114 -0
- package/dist/settings-write-CzD60rOD.mjs +360 -0
- package/dist/settings.schema.json +176 -16
- package/dist/{simslim-CCr3rE-A.mjs → simslim-BNckWpXi.mjs} +14 -12
- package/dist/{slot-launch-DPt0m9Nd.mjs → slot-launch-CbfmNgM6.mjs} +15 -20
- package/dist/{spawn-entry-Dcb7sDUz.mjs → spawn-entry-jw19m8Nl.mjs} +0 -1
- package/dist/stage-Bps5oius.mjs +200 -0
- package/dist/{start-TXeMmmO2.mjs → start-Br-oxqMD.mjs} +1 -1
- package/dist/start-EojN4WFz.mjs +1364 -0
- package/dist/{state-D1Icyjlu.mjs → state--smjFSTL.mjs} +55 -13
- package/dist/{state-CG_OFoaA.mjs → state-08I3hw3_.mjs} +3 -2
- package/dist/{stats-BoY5sEPU.mjs → stats-D3GerlFW.mjs} +7 -13
- package/dist/stats-report-BzaPrRm6.mjs +16 -0
- package/dist/{status-BTA7kKiQ.mjs → status-BRROykC8.mjs} +7 -5
- package/dist/status-EvrK72L2.mjs +2 -0
- package/dist/{status-WgFbkRzj.mjs → status-WBDajew2.mjs} +554 -452
- package/dist/{status-watch-C23ILtf9.mjs → status-watch-Bg_u-pwR.mjs} +222 -25
- package/dist/status-worker.d.mts +1 -0
- package/dist/status-worker.mjs +19 -0
- package/dist/stim-desktop-D5OGpYZM.mjs +112 -0
- package/dist/{stop-DR6VoDIk.mjs → stop-DTZ9uTw3.mjs} +2 -2
- package/dist/{stop-DPEhunlw.mjs → stop-Dky10AEJ.mjs} +33 -23
- package/dist/{stop-BNmBMi1F.mjs → stop-Mv6W9FAk.mjs} +137 -98
- package/dist/supervisor-run.d.mts +8 -17
- package/dist/supervisor-run.mjs +56 -28
- package/dist/{support-CwjbFs9H.mjs → support-CNioewsd.mjs} +14 -14
- package/dist/{support-DMTqj3Hm.mjs → support-yUiOjnVY.mjs} +20 -13
- package/dist/swiftpm-artifact-inputs-DFcGsXDP.mjs +153 -0
- package/dist/swiftpm-macos-BIak-Rxv.mjs +532 -0
- package/dist/toolchain-BY8X8HXx.mjs +2 -0
- package/dist/toolchain-DpJMHq0n.mjs +876 -0
- package/dist/{trigger-CigAYjeL.mjs → trigger-Cbyc41d_.mjs} +21 -6
- package/dist/trigger-yb_nFzPF.mjs +2 -0
- package/dist/{warm-progress-BuY-Fvfn.mjs → warm-progress-CA3TgT3-.mjs} +263 -156
- package/dist/web-CZ07gd77.mjs +2 -0
- package/dist/{web-BDBMxDpx.mjs → web-DKx6yoFA.mjs} +20 -14
- package/dist/web-run.mjs +13 -12
- package/dist/windows-report.d.mts +1 -0
- package/dist/windows-report.mjs +18 -0
- package/dist/windows-report.ps1 +43 -0
- package/dist/{workspace-state-DJt_MMvf.mjs → workspace-state-U08dEzhG.mjs} +62 -58
- package/dist/{workspaces-C36s2jb9.mjs → workspaces-CpANmBlq.mjs} +1723 -1286
- package/dist/{worktree-CgvJYJ-Q.mjs → worktree-CHecZ4Oq.mjs} +1097 -547
- package/dist/worktree-ZqZVjD9K.mjs +2 -0
- package/dist/xcode-BXn9-xYx.mjs +896 -0
- package/package.json +7 -5
- package/shim/android-audio/Main.java +24 -0
- package/shim/android-audio/README.md +17 -0
- package/shim/android-audio.jar +0 -0
- package/shim/android-optimizations.gradle +7 -5
- package/dist/activity-BSV745Kz.mjs +0 -629
- package/dist/api-qvOzWyfO.mjs +0 -154
- package/dist/api-run.mjs +0 -294
- package/dist/app-install-BIKtMfPq.mjs +0 -896
- package/dist/artifact-lifecycle-DzPpBYvK.mjs +0 -30
- package/dist/budget-f7516Zk0.mjs +0 -4106
- package/dist/build-facts-DcLv2HSd.d.mts +0 -111
- package/dist/cancellation-C_22VQTH.mjs +0 -24
- package/dist/client-qQAaXSUs.mjs +0 -1771
- package/dist/config-BYDxlMY3.mjs +0 -562
- package/dist/device-DuiPJQSn.mjs +0 -290
- package/dist/device-lease-BX1sJQ2E.mjs +0 -1224
- package/dist/device-remote-xRT0Vmo9.mjs +0 -1272
- package/dist/eas-session-ledger-Cm0Gwq2F.mjs +0 -207
- package/dist/exec-DqKo9GKJ.mjs +0 -268
- package/dist/git-DDfFzkMm.mjs +0 -45
- package/dist/launch-verify-B6Q8hZP-.mjs +0 -428
- package/dist/logs-BGrEUaEs.mjs +0 -383
- package/dist/macos-Ch5VJmcS.mjs +0 -584
- package/dist/metro-gateway-CX9Xlkq2.mjs +0 -103
- package/dist/miss-reason-mKzZ4VvN.mjs +0 -238
- package/dist/native-android-D5qc3-_v.mjs +0 -226
- package/dist/native-gradle-inputs-BsLRrl7u.mjs +0 -349
- package/dist/ndjson-Du3j0AQ9.d.mts +0 -17
- package/dist/plan-C4TjdPsR.mjs +0 -260
- package/dist/prebuild-DYbucPXy.mjs +0 -212
- package/dist/preview-78a9kR_-.mjs +0 -1011
- package/dist/react-native-build-CtCccJtb.mjs +0 -239
- package/dist/react-native-doctor-CfRnFfjs.mjs +0 -78
- package/dist/remote-cache-OyOyVIS3.mjs +0 -526
- package/dist/result-CaJg5Iat.mjs +0 -186
- package/dist/server-expo-Bigriskl.mjs +0 -2
- package/dist/settings-BORNaaCO.mjs +0 -402
- package/dist/settings-vk3mJGSm.d.mts +0 -13
- package/dist/spawn-claims-DVS5RkMS.mjs +0 -72
- package/dist/stage-KNTQopqv.mjs +0 -157
- package/dist/start-BWqzODpb.mjs +0 -1116
- package/dist/stim-desktop-BzBN2Em2.mjs +0 -63
- package/dist/swiftpm-macos-DRNVJWlb.mjs +0 -119
- package/dist/tailnet-Dh-qiYzG.mjs +0 -265
- package/dist/toolchain-BFkAcstd.mjs +0 -2
- package/dist/toolchain-DxSsNssu.mjs +0 -1657
- package/dist/trigger-9_USgmxz.mjs +0 -2
- package/dist/web-Dq-i3wzJ.mjs +0 -2
- package/dist/worktree-DpLdCHga.mjs +0 -2
- package/dist/{api-run.d.mts → doctor-fingerprint.d.mts} +0 -0
- package/dist/{errors-DzkMYh8Q.mjs → errors-ccaPc4ox.mjs} +2 -2
|
@@ -1,20 +1,22 @@
|
|
|
1
|
-
import { H as
|
|
2
|
-
import {
|
|
3
|
-
import { f as
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
13
|
-
import {
|
|
14
|
-
import {
|
|
1
|
+
import { H as deviceSlotPlatforms, U as parseDeviceSlotKey, p as getProject } from "./config-DlrsduwG.mjs";
|
|
2
|
+
import { f as refuseNoProject, l as phaseLine } from "./command-output-gwpm28fu.mjs";
|
|
3
|
+
import { d as cancelledError, f as throwIfCancelled, u as cancellableSleep } from "./operation-exec-BW0em61G.mjs";
|
|
4
|
+
import { a as recordWorkspaceUseAsync, r as readWorkspaceState$1 } from "./workspace-state-U08dEzhG.mjs";
|
|
5
|
+
import { Nt as repoRootAsync } from "./settings-C7O8A6ZI.mjs";
|
|
6
|
+
import { I as readWorkspaceLaunches, r as findCommandWorkspaceAsync } from "./project-wM_XFTvE.mjs";
|
|
7
|
+
import { a as listeningPidsAsync, d as resolveProjectMetro, h as isMetroRunning, u as processCwds } from "./metro-DiXtA3Ty.mjs";
|
|
8
|
+
import { d as webFactsAsync, o as readWebRecord, r as cdpEndpoint } from "./state--smjFSTL.mjs";
|
|
9
|
+
import { Sn as iosAppProcess, _n as ensureMetroReverse, dn as androidAppProcess } from "./budget-Cvwn54qV.mjs";
|
|
10
|
+
import { et as resolveOwnedAvdSerialAsync } from "./android-C7sVmyI9.mjs";
|
|
11
|
+
import { E as resolveOwnedIosSim, f as listAllIosSimsAsync } from "./ios-hcBpnEGk.mjs";
|
|
12
|
+
import { f as probeHostedSession } from "./hosted-client-DZAPrcro.mjs";
|
|
13
|
+
import { r as readHostedNative } from "./ios-state-Dtw5K2aI.mjs";
|
|
14
|
+
import { r as reopenHostedAndroidMetro } from "./hosted-android-B-9f-jkd.mjs";
|
|
15
|
+
import { n as nativeRunCommand } from "./slot-launch-CbfmNgM6.mjs";
|
|
16
|
+
import { n as sendToOwnedPage, t as liveWebRecord } from "./page-DBL2PiUU.mjs";
|
|
15
17
|
import { hostedAndroidDeviceName, hostedNativeRecords } from "@stim-cli/core/state";
|
|
16
|
-
import chalk from "chalk";
|
|
17
18
|
import { WebSocket } from "ws";
|
|
19
|
+
import chalk from "chalk";
|
|
18
20
|
//#region src/engine/reload.ts
|
|
19
21
|
const METRO_TIMEOUT_MS = 2e3;
|
|
20
22
|
function describe$1(error) {
|
|
@@ -39,9 +41,10 @@ function peerMatches(query, role, appId) {
|
|
|
39
41
|
* Asks Metro for its peers and reloads the ones matching `role` and `appId`. With `peersOnly`, it sends nothing and
|
|
40
42
|
* only reports the outcome a reload would have, so a caller can wait for the app to connect.
|
|
41
43
|
*/
|
|
42
|
-
function reloadThroughMetro(port, { role, appId, timeoutMs = METRO_TIMEOUT_MS, peersOnly = false }) {
|
|
44
|
+
function reloadThroughMetro(port, { role, appId, timeoutMs = METRO_TIMEOUT_MS, peersOnly = false, signal }) {
|
|
45
|
+
if (signal?.aborted) return Promise.reject(cancelledError("reload"));
|
|
43
46
|
const roleName = ROLE_NAMES[role];
|
|
44
|
-
return new Promise((resolve) => {
|
|
47
|
+
return new Promise((resolve, reject) => {
|
|
45
48
|
const requestId = `stim-reload-${process.pid}-${Date.now()}`;
|
|
46
49
|
const socket = new WebSocket(`ws://127.0.0.1:${port}/message`);
|
|
47
50
|
let settled = false;
|
|
@@ -49,6 +52,7 @@ function reloadThroughMetro(port, { role, appId, timeoutMs = METRO_TIMEOUT_MS, p
|
|
|
49
52
|
if (settled) return;
|
|
50
53
|
settled = true;
|
|
51
54
|
clearTimeout(timer);
|
|
55
|
+
signal?.removeEventListener("abort", abort);
|
|
52
56
|
socket.close();
|
|
53
57
|
resolve(result);
|
|
54
58
|
};
|
|
@@ -57,7 +61,18 @@ function reloadThroughMetro(port, { role, appId, timeoutMs = METRO_TIMEOUT_MS, p
|
|
|
57
61
|
unreachable: true,
|
|
58
62
|
reason: `Metro did not answer on port ${port}.`
|
|
59
63
|
}), timeoutMs);
|
|
64
|
+
const abort = () => {
|
|
65
|
+
if (settled) return;
|
|
66
|
+
settled = true;
|
|
67
|
+
clearTimeout(timer);
|
|
68
|
+
signal?.removeEventListener("abort", abort);
|
|
69
|
+
socket.once("close", () => reject(cancelledError("reload")));
|
|
70
|
+
socket.terminate();
|
|
71
|
+
};
|
|
72
|
+
signal?.addEventListener("abort", abort, { once: true });
|
|
73
|
+
if (signal?.aborted) abort();
|
|
60
74
|
socket.once("open", () => {
|
|
75
|
+
if (settled || signal?.aborted) return;
|
|
61
76
|
socket.send(JSON.stringify({
|
|
62
77
|
version: 2,
|
|
63
78
|
method: "getpeers",
|
|
@@ -66,6 +81,7 @@ function reloadThroughMetro(port, { role, appId, timeoutMs = METRO_TIMEOUT_MS, p
|
|
|
66
81
|
}));
|
|
67
82
|
});
|
|
68
83
|
socket.on("message", (data) => {
|
|
84
|
+
if (settled || signal?.aborted) return;
|
|
69
85
|
let message;
|
|
70
86
|
try {
|
|
71
87
|
message = JSON.parse(data.toString());
|
|
@@ -129,22 +145,31 @@ function reloadThroughMetro(port, { role, appId, timeoutMs = METRO_TIMEOUT_MS, p
|
|
|
129
145
|
unreachable: true,
|
|
130
146
|
reason: `Metro reload failed: ${describe$1(error)}`
|
|
131
147
|
}));
|
|
148
|
+
socket.once("close", () => finish({
|
|
149
|
+
failed: true,
|
|
150
|
+
unreachable: true,
|
|
151
|
+
reason: `Metro closed before answering on port ${port}.`
|
|
152
|
+
}));
|
|
132
153
|
});
|
|
133
154
|
}
|
|
134
155
|
//#endregion
|
|
135
156
|
//#region src/commands/reload.ts
|
|
136
157
|
const DEFAULT_DEPS = {
|
|
137
|
-
findWorkspace:
|
|
158
|
+
findWorkspace: (cwd) => findCommandWorkspaceAsync(cwd, repoRootAsync, (line) => console.error(line)),
|
|
138
159
|
getProject,
|
|
139
160
|
readLaunches: readWorkspaceLaunches,
|
|
140
|
-
resolveIos: resolveOwnedIosSim,
|
|
141
|
-
resolveAndroid:
|
|
161
|
+
resolveIos: async (udid) => resolveOwnedIosSim(udid, await listAllIosSimsAsync({})),
|
|
162
|
+
resolveAndroid: resolveOwnedAvdSerialAsync,
|
|
142
163
|
iosProcess: iosAppProcess,
|
|
143
164
|
androidProcess: androidAppProcess,
|
|
144
|
-
resolveMetro: resolveProjectMetro,
|
|
165
|
+
resolveMetro: (port, root, signal) => resolveProjectMetro(port, root, {
|
|
166
|
+
probe: (candidate) => isMetroRunning(candidate, signal),
|
|
167
|
+
pidsOf: listeningPidsAsync,
|
|
168
|
+
cwdOf: async (pid) => (await processCwds([pid])).get(pid) ?? null
|
|
169
|
+
}),
|
|
145
170
|
reloadMetro: reloadThroughMetro,
|
|
146
|
-
readBrowser: (root) => {
|
|
147
|
-
const facts =
|
|
171
|
+
readBrowser: async (root) => {
|
|
172
|
+
const facts = await webFactsAsync(readWebRecord(root));
|
|
148
173
|
return facts?.status === "unverified" ? "unverified" : liveWebRecord(facts?.record ?? null);
|
|
149
174
|
},
|
|
150
175
|
reloadPage: (record) => sendToOwnedPage(record, "Page.reload"),
|
|
@@ -168,11 +193,12 @@ function failure(code, message, remedy) {
|
|
|
168
193
|
function describe(error) {
|
|
169
194
|
return error instanceof Error ? error.message : String(error);
|
|
170
195
|
}
|
|
171
|
-
async function reloadBrowser(browser, metroPort, d) {
|
|
196
|
+
async function reloadBrowser(browser, metroPort, d, signal) {
|
|
172
197
|
let pageUrl;
|
|
173
198
|
try {
|
|
174
199
|
pageUrl = await d.reloadPage(browser);
|
|
175
200
|
} catch (error) {
|
|
201
|
+
throwIfCancelled(signal, "reload");
|
|
176
202
|
return {
|
|
177
203
|
ok: false,
|
|
178
204
|
error: failure("STIM_RELOAD_FAILED", `The owned Chrome did not accept the reload: ${describe(error)}`, "Run `stim web` to reopen the page.")
|
|
@@ -192,8 +218,8 @@ async function reloadBrowser(browser, metroPort, d) {
|
|
|
192
218
|
}
|
|
193
219
|
};
|
|
194
220
|
}
|
|
195
|
-
function processFailure(platform, record, d, slot = "default") {
|
|
196
|
-
const { state } = platform === "ios" ? d.iosProcess(record.deviceId, record.appId) : d.androidProcess(record.deviceId, record.appId);
|
|
221
|
+
async function processFailure(platform, record, d, slot = "default") {
|
|
222
|
+
const { state } = platform === "ios" ? await d.iosProcess(record.deviceId, record.appId) : await d.androidProcess(record.deviceId, record.appId);
|
|
197
223
|
if (state === "unknown") {
|
|
198
224
|
const probe = platform === "ios" ? `xcrun simctl spawn ${record.deviceId} launchctl list` : `adb -s ${record.deviceId} shell pidof ${record.appId}`;
|
|
199
225
|
return failure("STIM_RELOAD_PROBE_FAILED", `Stim could not determine whether ${record.appId} is running on ${record.deviceId}.`, `Run \`${probe}\` and retry when the device tool responds.`);
|
|
@@ -201,7 +227,7 @@ function processFailure(platform, record, d, slot = "default") {
|
|
|
201
227
|
if (state === "stopped") return failure("STIM_RELOAD_STOPPED", `${record.appId} is not running on ${record.deviceId}.`, `Run \`${nativeRunCommand(platform, slot)}\` to launch it.`);
|
|
202
228
|
return null;
|
|
203
229
|
}
|
|
204
|
-
function inspectTarget(platform, record, project, d, slot = "default") {
|
|
230
|
+
async function inspectTarget(platform, record, project, d, slot = "default") {
|
|
205
231
|
const runCommand = nativeRunCommand(platform, slot);
|
|
206
232
|
if (platform === "ios") {
|
|
207
233
|
const configured = project.platforms?.ios;
|
|
@@ -211,7 +237,7 @@ function inspectTarget(platform, record, project, d, slot = "default") {
|
|
|
211
237
|
};
|
|
212
238
|
let resolved;
|
|
213
239
|
try {
|
|
214
|
-
resolved = d.resolveIos(record.deviceId);
|
|
240
|
+
resolved = await d.resolveIos(record.deviceId);
|
|
215
241
|
} catch (error) {
|
|
216
242
|
return {
|
|
217
243
|
platform,
|
|
@@ -222,7 +248,7 @@ function inspectTarget(platform, record, project, d, slot = "default") {
|
|
|
222
248
|
platform,
|
|
223
249
|
error: failure("STIM_RELOAD_STOPPED", `The recorded iOS app is not running on a booted owned simulator.`, `Run \`${runCommand}\` to boot, install, and launch it.`)
|
|
224
250
|
};
|
|
225
|
-
const stopped = processFailure(platform, record, d, slot);
|
|
251
|
+
const stopped = await processFailure(platform, record, d, slot);
|
|
226
252
|
if (stopped) return {
|
|
227
253
|
platform,
|
|
228
254
|
error: stopped
|
|
@@ -241,7 +267,7 @@ function inspectTarget(platform, record, project, d, slot = "default") {
|
|
|
241
267
|
};
|
|
242
268
|
let resolved;
|
|
243
269
|
try {
|
|
244
|
-
resolved = d.resolveAndroid(configured.avdName);
|
|
270
|
+
resolved = await d.resolveAndroid(configured.avdName);
|
|
245
271
|
} catch (error) {
|
|
246
272
|
return {
|
|
247
273
|
platform,
|
|
@@ -252,7 +278,7 @@ function inspectTarget(platform, record, project, d, slot = "default") {
|
|
|
252
278
|
platform,
|
|
253
279
|
error: failure("STIM_RELOAD_STOPPED", `The recorded Android app is not running on this workspace's owned emulator.`, `Run \`${runCommand}\` to boot, install, and launch it.`)
|
|
254
280
|
};
|
|
255
|
-
const stopped = processFailure(platform, record, d, slot);
|
|
281
|
+
const stopped = await processFailure(platform, record, d, slot);
|
|
256
282
|
if (stopped) return {
|
|
257
283
|
platform,
|
|
258
284
|
error: stopped
|
|
@@ -267,9 +293,16 @@ function inspectTarget(platform, record, project, d, slot = "default") {
|
|
|
267
293
|
function isTargetFailure(value) {
|
|
268
294
|
return "error" in value;
|
|
269
295
|
}
|
|
270
|
-
async function runReload({ root, platform = null, deps = {} }) {
|
|
296
|
+
async function runReload({ root, platform = null, deps = {}, signal }) {
|
|
297
|
+
throwIfCancelled(signal, "reload");
|
|
271
298
|
const d = {
|
|
272
299
|
...DEFAULT_DEPS,
|
|
300
|
+
reloadPage: (record) => sendToOwnedPage(record, "Page.reload", {}, signal),
|
|
301
|
+
reopenHostedMetro: (projectRoot, placement, port) => reopenHostedAndroidMetro(projectRoot, placement, port, signal),
|
|
302
|
+
sleep: (ms) => cancellableSleep(ms, {
|
|
303
|
+
signal,
|
|
304
|
+
what: "reload"
|
|
305
|
+
}),
|
|
273
306
|
...deps
|
|
274
307
|
};
|
|
275
308
|
const project = d.getProject(root);
|
|
@@ -277,13 +310,14 @@ async function runReload({ root, platform = null, deps = {} }) {
|
|
|
277
310
|
ok: false,
|
|
278
311
|
error: failure("STIM_NO_PROJECT", `No Stim environment is registered for ${root}.`, "Run `stim start` first.")
|
|
279
312
|
};
|
|
280
|
-
const read = platform === null || platform === "web" ? d.readBrowser(root) : null;
|
|
313
|
+
const read = platform === null || platform === "web" ? await d.readBrowser(root) : null;
|
|
314
|
+
throwIfCancelled(signal, "reload");
|
|
281
315
|
if (platform === "web" && read === "unverified") return {
|
|
282
316
|
ok: false,
|
|
283
317
|
error: failure("STIM_RELOAD_PROBE_FAILED", "Stim could not verify the owned Chrome's supervisor or Chrome process.", "Run `stim status`, then follow `stim guide errors teardown`.")
|
|
284
318
|
};
|
|
285
319
|
const browser = read === "unverified" ? null : read;
|
|
286
|
-
if (platform === "web") return browser ? reloadBrowser(browser, project.metroPort ?? null, d) : {
|
|
320
|
+
if (platform === "web") return browser ? reloadBrowser(browser, project.metroPort ?? null, d, signal) : {
|
|
287
321
|
ok: false,
|
|
288
322
|
error: failure("STIM_RELOAD_STOPPED", "No owned Chrome is running for this workspace.", "Run `stim web` first.")
|
|
289
323
|
};
|
|
@@ -309,9 +343,10 @@ async function runReload({ root, platform = null, deps = {} }) {
|
|
|
309
343
|
const hostedProbes = Object.fromEntries(await Promise.all(["ios", "android"].flatMap((native) => Object.entries(hosted[native]).map(async ([slot, placement]) => [`${native}:${slot}`, await probeHostedSession({
|
|
310
344
|
...placement,
|
|
311
345
|
platform: native
|
|
312
|
-
})]))));
|
|
346
|
+
}, signal ? { ttlMs: 0 } : void 0)]))));
|
|
347
|
+
throwIfCancelled(signal, "reload");
|
|
313
348
|
const launches = d.readLaunches(root);
|
|
314
|
-
const inspected = Object.entries(launches).
|
|
349
|
+
const inspected = (await Promise.all(Object.entries(launches).map(async ([key, record]) => {
|
|
315
350
|
const parsed = parseDeviceSlotKey(key);
|
|
316
351
|
if (!parsed || platform && parsed.platform !== platform) return [];
|
|
317
352
|
if (hostedFailures[`${parsed.platform}:${parsed.slot}`]) return [];
|
|
@@ -330,11 +365,12 @@ async function runReload({ root, platform = null, deps = {} }) {
|
|
|
330
365
|
error: failure("STIM_RELOAD_PROBE_FAILED", `The ${parsed.platform} session on ${placement.machine} is ${probe.state}.`, `Run stim ${parsed.platform} --remote ${placement.machine} or stim stop to reconcile it.`)
|
|
331
366
|
}];
|
|
332
367
|
}
|
|
333
|
-
return [inspectTarget(parsed.platform, record, {
|
|
368
|
+
return [await inspectTarget(parsed.platform, record, {
|
|
334
369
|
...project,
|
|
335
370
|
platforms: deviceSlotPlatforms(project, parsed.slot)
|
|
336
371
|
}, d, parsed.slot)];
|
|
337
|
-
});
|
|
372
|
+
}))).flat();
|
|
373
|
+
throwIfCancelled(signal, "reload");
|
|
338
374
|
inspected.push(...Object.values(hostedFailures));
|
|
339
375
|
const live = inspected.filter((target) => !isTargetFailure(target));
|
|
340
376
|
const livePlatforms = new Set(live.map((target) => target.platform));
|
|
@@ -346,7 +382,7 @@ async function runReload({ root, platform = null, deps = {} }) {
|
|
|
346
382
|
error: failure("STIM_RELOAD_AMBIGUOUS", `More than one platform is live: ${names.join(", ")}.`, `Choose one with ${names.map((name) => `\`stim reload ${name}\``).join(" or ")}.`)
|
|
347
383
|
};
|
|
348
384
|
}
|
|
349
|
-
if (browser && inspected.length === 0) return reloadBrowser(browser, project.metroPort ?? null, d);
|
|
385
|
+
if (browser && inspected.length === 0) return reloadBrowser(browser, project.metroPort ?? null, d, signal);
|
|
350
386
|
if (read === "unverified" && inspected.length === 0) return {
|
|
351
387
|
ok: false,
|
|
352
388
|
error: failure("STIM_RELOAD_PROBE_FAILED", "Stim could not verify the owned Chrome's supervisor or Chrome process.", "Run `stim status`, then follow `stim guide errors teardown`.")
|
|
@@ -375,11 +411,14 @@ async function runReload({ root, platform = null, deps = {} }) {
|
|
|
375
411
|
ok: false,
|
|
376
412
|
error: failure("STIM_NO_METRO", `The launch does not point at this workspace's current Metro reservation.`, "Run `stim start`, then launch the app again.")
|
|
377
413
|
};
|
|
378
|
-
|
|
414
|
+
const metro = await d.resolveMetro(port, root, signal);
|
|
415
|
+
throwIfCancelled(signal, "reload");
|
|
416
|
+
if (!metro.metro) return {
|
|
379
417
|
ok: false,
|
|
380
418
|
error: failure("STIM_NO_METRO", `Port ${port} is not serving this workspace's Metro.`, "Run `stim start`, then retry.")
|
|
381
419
|
};
|
|
382
|
-
const stopped = target.hosted ? null : processFailure(target.platform, target.record, d, target.slot);
|
|
420
|
+
const stopped = target.hosted ? null : await processFailure(target.platform, target.record, d, target.slot);
|
|
421
|
+
throwIfCancelled(signal, "reload");
|
|
383
422
|
if (stopped) return {
|
|
384
423
|
ok: false,
|
|
385
424
|
error: stopped
|
|
@@ -388,11 +427,14 @@ async function runReload({ root, platform = null, deps = {} }) {
|
|
|
388
427
|
let hostedReopened = false;
|
|
389
428
|
const reverseChecked = target.platform === "android" ? live.filter((c) => c.platform === "android" && !c.record.release && c.record.metroPort === port) : [];
|
|
390
429
|
for (const candidate of reverseChecked) {
|
|
430
|
+
throwIfCancelled(signal, "reload");
|
|
391
431
|
if (candidate.hostedAndroid) {
|
|
392
432
|
try {
|
|
393
433
|
await d.reopenHostedMetro(root, candidate.hostedAndroid, port);
|
|
434
|
+
throwIfCancelled(signal, "reload");
|
|
394
435
|
hostedReopened = true;
|
|
395
436
|
} catch (error) {
|
|
437
|
+
throwIfCancelled(signal, "reload");
|
|
396
438
|
return {
|
|
397
439
|
ok: false,
|
|
398
440
|
error: failure("STIM_HOSTING_REFUSED", describe(error), `Retry stim reload android when ${candidate.hostedAndroid.machine} answers, or run stim stop to reconcile the session.`)
|
|
@@ -401,7 +443,8 @@ async function runReload({ root, platform = null, deps = {} }) {
|
|
|
401
443
|
continue;
|
|
402
444
|
}
|
|
403
445
|
const serial = candidate.record.deviceId;
|
|
404
|
-
const ensured = d.ensureReverse(serial, port);
|
|
446
|
+
const ensured = await d.ensureReverse(serial, port);
|
|
447
|
+
throwIfCancelled(signal, "reload");
|
|
405
448
|
if (ensured.failed) return {
|
|
406
449
|
ok: false,
|
|
407
450
|
error: failure("STIM_RELOAD_FAILED", `Stim could not check or restore the adb reverse for Metro port ${port} on ${serial}: ${ensured.reason}`, `Run \`adb -s ${serial} reverse tcp:${port} tcp:${port}\`, then \`stim reload android\` again.`)
|
|
@@ -410,23 +453,27 @@ async function runReload({ root, platform = null, deps = {} }) {
|
|
|
410
453
|
}
|
|
411
454
|
const request = {
|
|
412
455
|
role: target.platform,
|
|
413
|
-
appId: target.record.appId
|
|
456
|
+
appId: target.record.appId,
|
|
457
|
+
...signal ? { signal } : {}
|
|
414
458
|
};
|
|
415
459
|
const expectedPeers = reverseChecked.filter((c) => c.record.appId === target.record.appId).length;
|
|
416
460
|
const awaitReconnect = reverseRestored.length > 0 || hostedReopened;
|
|
417
461
|
for (let poll = 0; poll < RECONNECT_POLLS; poll++) {
|
|
462
|
+
throwIfCancelled(signal, "reload");
|
|
418
463
|
if (!awaitReconnect) break;
|
|
419
464
|
const peers = await d.reloadMetro(port, {
|
|
420
465
|
...request,
|
|
421
466
|
peersOnly: true
|
|
422
467
|
});
|
|
468
|
+
throwIfCancelled(signal, "reload");
|
|
423
469
|
if (peers.broadcast) await d.sleep(RECONNECT_UNOBSERVED_MS);
|
|
424
470
|
if (peers.unreachable || peers.broadcast || peers.ok && peers.targets >= expectedPeers) break;
|
|
425
471
|
await d.sleep(RECONNECT_POLL_MS);
|
|
426
472
|
}
|
|
473
|
+
throwIfCancelled(signal, "reload");
|
|
427
474
|
const reloaded = await d.reloadMetro(port, request);
|
|
428
475
|
if (!reloaded.ok) {
|
|
429
|
-
const stoppedAfterMetro = target.hosted ? null : processFailure(target.platform, target.record, d, target.slot);
|
|
476
|
+
const stoppedAfterMetro = target.hosted ? null : await processFailure(target.platform, target.record, d, target.slot);
|
|
430
477
|
if (stoppedAfterMetro) return {
|
|
431
478
|
ok: false,
|
|
432
479
|
error: stoppedAfterMetro
|
|
@@ -472,12 +519,12 @@ function registerReload(program, deps = {}) {
|
|
|
472
519
|
process.exitCode = 1;
|
|
473
520
|
return;
|
|
474
521
|
}
|
|
475
|
-
const root = (deps.findWorkspace ?? DEFAULT_DEPS.findWorkspace)(process.cwd());
|
|
522
|
+
const root = await (deps.findWorkspace ?? DEFAULT_DEPS.findWorkspace)(process.cwd());
|
|
476
523
|
if (!root) {
|
|
477
524
|
refuseNoProject({ json: Boolean(opts.json) });
|
|
478
525
|
return;
|
|
479
526
|
}
|
|
480
|
-
|
|
527
|
+
await recordWorkspaceUseAsync(root);
|
|
481
528
|
const result = await runReload({
|
|
482
529
|
root,
|
|
483
530
|
platform: value ?? null,
|
|
@@ -509,4 +556,4 @@ function reloadCommand(program) {
|
|
|
509
556
|
registerReload(program);
|
|
510
557
|
}
|
|
511
558
|
//#endregion
|
|
512
|
-
export { reloadCommand as
|
|
559
|
+
export { reloadCommand as n, runReload as r, registerReload as t };
|
|
@@ -1,19 +1,22 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import
|
|
5
|
-
import {
|
|
6
|
-
import "./
|
|
7
|
-
import {
|
|
1
|
+
import { H as deviceSlotPlatforms } from "./config-DlrsduwG.mjs";
|
|
2
|
+
import { l as phaseLine } from "./command-output-gwpm28fu.mjs";
|
|
3
|
+
import { F as parseIosRemote, H as remoteEasFallbackSetting, R as publicUrlSetting, U as remoteIosSetting, rt as tunnelModeSetting } from "./settings-C7O8A6ZI.mjs";
|
|
4
|
+
import "./budget-Cvwn54qV.mjs";
|
|
5
|
+
import { b as resolveSimulatorAppFlag } from "./support-CNioewsd.mjs";
|
|
6
|
+
import { n as devicePlacementRecord } from "./placement-log-BnGgJRRZ.mjs";
|
|
7
|
+
import { r as devicePlacementLine } from "./eas-fallback-CSgAulr5.mjs";
|
|
8
8
|
import chalk from "chalk";
|
|
9
9
|
//#region src/commands/ios/remote.ts
|
|
10
|
-
function
|
|
11
|
-
|
|
12
|
-
|
|
10
|
+
function deviceRemoteConflict(remote, physical) {
|
|
11
|
+
if (!physical || remote === void 0 || !parseIosRemote(remote)) return null;
|
|
12
|
+
return {
|
|
13
13
|
code: "STIM_BAD_ARG",
|
|
14
|
-
message:
|
|
15
|
-
remedy: "Pass only one of --device and --remote
|
|
16
|
-
}
|
|
14
|
+
message: `--device runs on a phone connected to this machine, and --remote ${remote} chooses where a simulator runs.`,
|
|
15
|
+
remedy: "Pass only one of --device and --remote, or --remote local with --device."
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
function resolveIosRemote({ opts, settings, physical, recorded }) {
|
|
19
|
+
const target = opts.remote !== void 0 ? parseIosRemote(opts.remote) : physical ? null : remoteIosSetting(settings);
|
|
17
20
|
const machine = target?.kind === "machine" ? target.machine : null;
|
|
18
21
|
if (recorded && recorded.machine !== machine && machine !== "auto") return { failure: {
|
|
19
22
|
code: "STIM_BAD_ARG",
|
|
@@ -67,7 +70,7 @@ async function selectIosPlacement(args) {
|
|
|
67
70
|
const { root, slot, d, opts, deviceType, runtime, noWait, phase, log, release, appMode, metroCheck } = args;
|
|
68
71
|
const viewer = resolveSimulatorAppFlag(opts.simulatorApp, args.physical, null);
|
|
69
72
|
if ("refusal" in viewer) return { failure: viewer.refusal };
|
|
70
|
-
const refusal = args.validateSelectors();
|
|
73
|
+
const refusal = await args.validateSelectors();
|
|
71
74
|
if (refusal) return { failure: refusal };
|
|
72
75
|
const easFallback = args.supportsRemote && remoteEasFallbackSetting(args.settings);
|
|
73
76
|
try {
|
|
@@ -82,6 +85,8 @@ async function selectIosPlacement(args) {
|
|
|
82
85
|
...easFallback ? { eas: () => d.checkEasFallback({
|
|
83
86
|
root,
|
|
84
87
|
platform: "ios",
|
|
88
|
+
env: args.env,
|
|
89
|
+
operation: args.operation,
|
|
85
90
|
slot,
|
|
86
91
|
release,
|
|
87
92
|
isExpo: d.detectIsExpo(root),
|
|
@@ -149,7 +154,7 @@ async function connectIosTarget(selection, selectors, d, appMode) {
|
|
|
149
154
|
} };
|
|
150
155
|
}
|
|
151
156
|
}
|
|
152
|
-
async function iosPlacementBudget(d, root, note, hosted, automatic, simSnapshot) {
|
|
157
|
+
async function iosPlacementBudget(d, root, note, hosted, automatic, simSnapshot, env) {
|
|
153
158
|
if (automatic) return {
|
|
154
159
|
...automatic,
|
|
155
160
|
refusal: hosted ? null : automatic.refusal
|
|
@@ -160,14 +165,15 @@ async function iosPlacementBudget(d, root, note, hosted, automatic, simSnapshot)
|
|
|
160
165
|
} : d.budgetGate({
|
|
161
166
|
root,
|
|
162
167
|
note,
|
|
163
|
-
simSnapshot
|
|
168
|
+
simSnapshot,
|
|
169
|
+
env
|
|
164
170
|
});
|
|
165
171
|
}
|
|
166
172
|
function hostedIosMetroNote(hosted, settings, note, simulatorApp) {
|
|
167
173
|
if (hosted && (settings.iosSimulatorApp !== void 0 || simulatorApp !== void 0)) note(chalk.dim(phaseLine("device", "iosSimulatorApp is ignored on a hosting Mac; the simulator boots headless.")));
|
|
168
174
|
if (hosted && (publicUrlSetting(settings) || tunnelModeSetting(settings))) note(chalk.dim(phaseLine("metro", "metro.publicUrl and metro.tunnel are ignored on a hosting Mac; Metro uses the private tailnet bridge.")));
|
|
169
175
|
}
|
|
170
|
-
async function connectIosBackend(root, backend, deviceType, d) {
|
|
176
|
+
async function connectIosBackend(root, backend, deviceType, d, env, operation) {
|
|
171
177
|
if (!backend) return {
|
|
172
178
|
remote: null,
|
|
173
179
|
arch: null
|
|
@@ -175,6 +181,8 @@ async function connectIosBackend(root, backend, deviceType, d) {
|
|
|
175
181
|
const resolved = await d.resolveRemoteContext({
|
|
176
182
|
root,
|
|
177
183
|
backend,
|
|
184
|
+
env,
|
|
185
|
+
operation,
|
|
178
186
|
easBin: d.resolveEasCliBin(root)?.file ?? null,
|
|
179
187
|
deviceType: deviceType?.trim() || null
|
|
180
188
|
});
|
|
@@ -189,4 +197,4 @@ async function connectIosBackend(root, backend, deviceType, d) {
|
|
|
189
197
|
};
|
|
190
198
|
}
|
|
191
199
|
//#endregion
|
|
192
|
-
export {
|
|
200
|
+
export { hostedIosSelectors as a, hostedIosMetroNote as i, connectIosTarget as n, iosPlacementBudget as o, deviceRemoteConflict as r, selectIosPlacement as s, connectIosBackend as t };
|