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.
Files changed (231) hide show
  1. package/README.md +141 -8
  2. package/dist/acquire-artifact-Co2k4f7O.mjs +171 -0
  3. package/dist/act-DsuqEkiM.mjs +2801 -0
  4. package/dist/activity-CMLmzp7o.mjs +1397 -0
  5. package/dist/{agent-device-usage-output-Dzgv6lgR.mjs → agent-device-usage-output-DUFaTMdd.mjs} +23 -67
  6. package/dist/{android-DCKZrNvV.mjs → android-ByRMUoiJ.mjs} +157 -93
  7. package/dist/{android-Mz_Inn3w.mjs → android-C7sVmyI9.mjs} +299 -116
  8. package/dist/{android-Dlzxshgp.mjs → android-DGkNqa_c.mjs} +5 -5
  9. package/dist/{android-HqP1_vB_.mjs → android-DR5lZ2Az.mjs} +2 -2
  10. package/dist/android-cas-compiler.mjs +2 -2
  11. package/dist/{android-cas-Bl-cLJBk.mjs → android-cas-ngferVq2.mjs} +7 -6
  12. package/dist/android-project-BCAAmMwz.mjs +12 -0
  13. package/dist/android-project-DVWyCbWU.d.mts +391 -0
  14. package/dist/api.d.mts +810 -64
  15. package/dist/api.mjs +782 -1
  16. package/dist/{artifact-HSwkIWEQ.mjs → artifact-8EY8SAPw.mjs} +240 -213
  17. package/dist/{artifact-D3czlUvT.mjs → artifact-DJPy518Y.mjs} +203 -164
  18. package/dist/artifact-platform-CXcmX_j3.mjs +27 -0
  19. package/dist/{browser-web-CA-F1GQo.mjs → browser-web-Bcv99PBM.mjs} +194 -64
  20. package/dist/budget-Cvwn54qV.mjs +9285 -0
  21. package/dist/{build-DYDbfkk5.mjs → build-CabC3G23.mjs} +153 -98
  22. package/dist/build-cache-Dv7RN200.mjs +602 -0
  23. package/dist/build-plan-DUC8Ka9y.mjs +248 -0
  24. package/dist/{cache-manifest-XH-fvDUj.mjs → cache-manifest-DSeQjt-Q.mjs} +2 -2
  25. package/dist/cache-manifest.mjs +1 -1
  26. package/dist/{ccache-zdKiYQ3E.mjs → ccache-Btwc36-I.mjs} +10 -9
  27. package/dist/{cdp-Dq_ypAlJ.mjs → cdp-3fwICjzi.mjs} +18 -5
  28. package/dist/{chrome-BnzZMqsR.mjs → chrome-Bbw689-6.mjs} +7 -4
  29. package/dist/{cli-CLP3diBm.mjs → cli-CHZa9Lvk.mjs} +20 -20
  30. package/dist/cli.mjs +1 -1
  31. package/dist/client-OyRoEuSr.mjs +1577 -0
  32. package/dist/collector-run.d.mts +4 -40
  33. package/dist/collector-run.mjs +9 -8
  34. package/dist/{command-output-BTy8hZ0F.mjs → command-output-gwpm28fu.mjs} +1 -1
  35. package/dist/config-DlrsduwG.mjs +955 -0
  36. package/dist/{created-devices-Dzd5C2LF.mjs → created-devices-x9rN6bhs.mjs} +14 -4
  37. package/dist/{dependency-state-DG0p31-y.mjs → dependency-state-1I9KZT1Y.mjs} +20 -5
  38. package/dist/{detached-entry-B9C_zeQC.mjs → detached-entry-BwNEtIrP.mjs} +1 -1
  39. package/dist/{dev-client-DAWVIGBu.mjs → dev-client-BSDR5h3F.mjs} +2 -2
  40. package/dist/{device-BECOiufl.mjs → device-B-L3Fbxy.mjs} +91 -34
  41. package/dist/device-DklWZLqb.mjs +1068 -0
  42. package/dist/{device-capacity-CBUAcRyQ.mjs → device-capacity-DK5_EwRS.mjs} +42 -13
  43. package/dist/device-host-worker.mjs +76 -79
  44. package/dist/{device-ios-COSi6oS1.mjs → device-ios-DoB6KFCO.mjs} +77 -51
  45. package/dist/{device-lease-run-Cw2M4z51.mjs → device-lease-run-xJPQ_QQG.mjs} +14 -26
  46. package/dist/{device-pool-Bf-pOhSw.mjs → device-pool-BMkdsefq.mjs} +5 -5
  47. package/dist/{doctor-kfMBnUw6.mjs → doctor-Bo7BXLux.mjs} +271 -320
  48. package/dist/{doctor-CB8oZKCk.mjs → doctor-D5_EzwfA.mjs} +186 -91
  49. package/dist/doctor-fingerprint-DZLoYFVb.mjs +16 -0
  50. package/dist/doctor-fingerprint.mjs +19 -0
  51. package/dist/doctor-thjWAV0z.mjs +2 -0
  52. package/dist/{doctor-watchman-BRyV2adA.mjs → doctor-watchman-N2wDotwQ.mjs} +40 -21
  53. package/dist/{eas-build-JyfqyHfC.mjs → eas-build-CwknaQYj.mjs} +53 -20
  54. package/dist/{build-plan-B7SZsc2N.mjs → eas-fallback-CSgAulr5.mjs} +41 -214
  55. package/dist/{watchman-CPQFZLXY.mjs → eas-session-ledger-DlY_serQ.mjs} +230 -11
  56. package/dist/{error-diagnostics-BR677IDM.mjs → error-diagnostics-DBWO2rxE.mjs} +172 -82
  57. package/dist/exec-DEoAhcze.mjs +858 -0
  58. package/dist/exec-DnYc4HGH.d.mts +78 -0
  59. package/dist/{gc-qWOMdnER.mjs → gc-CXxN-4SE.mjs} +1091 -1029
  60. package/dist/gc-DnNDQyaP.mjs +3 -0
  61. package/dist/{guide-G9cAbVAc.mjs → guide-Br0LEfKy.mjs} +1165 -297
  62. package/dist/{hosted-android-C3MHGld1.mjs → hosted-android-B-9f-jkd.mjs} +10 -8
  63. package/dist/{hosted-client-ZEKpS9vw.mjs → hosted-client-DZAPrcro.mjs} +34 -19
  64. package/dist/{hosted-ios-l-o3iM9J.mjs → hosted-ios-CsCS21hn.mjs} +1 -1
  65. package/dist/{hosted-logs-EzQM7-3Z.mjs → hosted-logs-FIRx9X2f.mjs} +77 -43
  66. package/dist/{hosted-macos-BACVAVqE.mjs → hosted-macos-_awYSpfv.mjs} +35 -22
  67. package/dist/{hosted-native-A4s1QPXe.mjs → hosted-native-BdzE668-.mjs} +49 -27
  68. package/dist/idle-C4cZ757K.d.mts +24 -0
  69. package/dist/{idle-shutdown-DtxhPTKe.mjs → idle-shutdown-DDg3SdvY.mjs} +11 -10
  70. package/dist/ios-CDvlmUs7.d.mts +24 -0
  71. package/dist/{ios-BwVCF7oA.mjs → ios-Ds1clbIt.mjs} +8 -8
  72. package/dist/{ios-device-D7pi2Sca.mjs → ios-device--h_-8ENa.mjs} +51 -26
  73. package/dist/{ios-device-B5veSDDQ.mjs → ios-device-BXZ0c7Kb.mjs} +1 -1
  74. package/dist/{ios-RkW4pnQf.mjs → ios-hcBpnEGk.mjs} +200 -93
  75. package/dist/{ios-Ce7bc7br.mjs → ios-pm4nL6By.mjs} +160 -108
  76. package/dist/{ios-project-K9hY_Jab.mjs → ios-project-CZhKODF3.mjs} +13 -13
  77. package/dist/ios-signing-BtAffm0A.mjs +489 -0
  78. package/dist/{ios-state-CBLe1xYw.mjs → ios-state-Dtw5K2aI.mjs} +1 -1
  79. package/dist/{ios-nOLJGVdy.mjs → ios-xtlRHaeB.mjs} +1 -1
  80. package/dist/{js-swap-Bb3nsS07.mjs → js-swap-Bwhh4S7V.mjs} +30 -25
  81. package/dist/{launch-C3qJ6Agb.mjs → launch-BjxemNpK.mjs} +85 -543
  82. package/dist/{launch-F4sOqAhB.mjs → launch-CCzXlc8r.mjs} +91 -90
  83. package/dist/logs-BfwwadsZ.mjs +479 -0
  84. package/dist/logs-jTS_lHSo.mjs +248 -0
  85. package/dist/{macos-D7uDvO-z.mjs → macos-DVlSSyUg.mjs} +1 -1
  86. package/dist/macos-NfV2D7dO.mjs +694 -0
  87. package/dist/macos-run.mjs +1 -1
  88. package/dist/maintenance-run.mjs +123 -248
  89. package/dist/{metro-DnCEjCxs.mjs → metro-DiXtA3Ty.mjs} +107 -30
  90. package/dist/metro-gateway-CKZqKqx7.mjs +209 -0
  91. package/dist/{named-ports-4WopRPg-.mjs → named-ports-DkEzOfzO.mjs} +42 -90
  92. package/dist/native-android-CqgnOgsT.mjs +645 -0
  93. package/dist/native-gradle-artifact-inputs-DHFnmrVf.mjs +270 -0
  94. package/dist/native-gradle-inputs-Dnh84Zbd.mjs +211 -0
  95. package/dist/native-inputs-TRTTTRxt.mjs +91 -0
  96. package/dist/native-run-NwUuxbkg.mjs +276 -0
  97. package/dist/{native-runtime-k8dTIrbK.mjs → native-runtime-B7KIafpM.mjs} +11 -9
  98. package/dist/native-source-Y0yLhFyQ.mjs +133 -0
  99. package/dist/{native-xcode-inputs-CykopJdM.mjs → native-xcode-inputs-D_VOfFL7.mjs} +26 -18
  100. package/dist/{native-xcode-ios-Bbf30Gm0.mjs → native-xcode-ios-BYDOHWLN.mjs} +104 -60
  101. package/dist/{ndjson-GOnbyvso.mjs → ndjson-CgE_o3Dl.mjs} +3 -3
  102. package/dist/offload-worker.d.mts +59 -41
  103. package/dist/offload-worker.mjs +478 -115
  104. package/dist/operation-exec-BW0em61G.mjs +171 -0
  105. package/dist/{ownership-DCtw_2IA.mjs → ownership-C5fo5Edb.mjs} +3 -3
  106. package/dist/{page-DRHy329N.mjs → page-DBL2PiUU.mjs} +12 -5
  107. package/dist/paths-BsJMoPP2.mjs +12 -0
  108. package/dist/paths-DQtTgsBf.mjs +42 -0
  109. package/dist/{placement-log-MOfPVgaM.mjs → placement-log-BnGgJRRZ.mjs} +5 -5
  110. package/dist/{plan-placement-V0TdzYXp.mjs → plan-placement-DIsMtN-d.mjs} +15 -11
  111. package/dist/{ports-DdSUicVo.mjs → ports-Cy1RkmuQ.mjs} +3 -3
  112. package/dist/prebuild-D4JoEAEs.mjs +484 -0
  113. package/dist/{project-_phNIJfs.mjs → project-wM_XFTvE.mjs} +65 -37
  114. package/dist/{pull-request-CQ8sPbZa.mjs → pull-request-W1IuLXDt.mjs} +102 -20
  115. package/dist/pull-request-eODyIqZF.d.mts +124 -0
  116. package/dist/pull-requests.d.mts +2 -120
  117. package/dist/pull-requests.mjs +2 -2
  118. package/dist/{react-native-android-CM1XRDwv.mjs → react-native-android-6OZ7MSM7.mjs} +121 -72
  119. package/dist/{gradle-DSrXb6lG.mjs → react-native-build-Dvd8hC21.mjs} +292 -15
  120. package/dist/react-native-doctor-DsoSF1Y9.mjs +234 -0
  121. package/dist/{react-native-ios-Dhq_eiYQ.mjs → react-native-ios-4u1Rn-GR.mjs} +71 -39
  122. package/dist/{recordings-D0d5aQt0.mjs → recordings-CQmfzAh7.mjs} +12 -9
  123. package/dist/registration-BcRgF6Ox.mjs +51 -0
  124. package/dist/{reload-C8JhxjSh.mjs → reload-BzkYabB-.mjs} +94 -47
  125. package/dist/reload-D7AVlb8N.mjs +2 -0
  126. package/dist/{remote-BiR6aYjy.mjs → remote-DjGDmlTZ.mjs} +26 -18
  127. package/dist/result-D2Ykz_iD.mjs +435 -0
  128. package/dist/{run-BtPgpKks.mjs → run-DidHghD1.mjs} +5 -5
  129. package/dist/selection-DSMbWEX2.mjs +620 -0
  130. package/dist/{server-bare-R2m_gsH8.mjs → server-bare-CafzuyFB.mjs} +3 -4
  131. package/dist/{server-command-CTtCkmcQ.mjs → server-command-C6QjeupS.mjs} +14 -7
  132. package/dist/{server-expo-DsguMGUF.mjs → server-expo-CrjB29pq.mjs} +54 -11
  133. package/dist/server-expo-D58c9L0M.mjs +2 -0
  134. package/dist/{settings-B717odTD.mjs → settings-C7O8A6ZI.mjs} +309 -119
  135. package/dist/settings-DpR-1Wnn.mjs +114 -0
  136. package/dist/settings-write-CzD60rOD.mjs +360 -0
  137. package/dist/settings.schema.json +176 -16
  138. package/dist/{simslim-CCr3rE-A.mjs → simslim-BNckWpXi.mjs} +14 -12
  139. package/dist/{slot-launch-DPt0m9Nd.mjs → slot-launch-CbfmNgM6.mjs} +15 -20
  140. package/dist/{spawn-entry-Dcb7sDUz.mjs → spawn-entry-jw19m8Nl.mjs} +0 -1
  141. package/dist/stage-Bps5oius.mjs +200 -0
  142. package/dist/{start-TXeMmmO2.mjs → start-Br-oxqMD.mjs} +1 -1
  143. package/dist/start-EojN4WFz.mjs +1364 -0
  144. package/dist/{state-D1Icyjlu.mjs → state--smjFSTL.mjs} +55 -13
  145. package/dist/{state-CG_OFoaA.mjs → state-08I3hw3_.mjs} +3 -2
  146. package/dist/{stats-BoY5sEPU.mjs → stats-D3GerlFW.mjs} +7 -13
  147. package/dist/stats-report-BzaPrRm6.mjs +16 -0
  148. package/dist/{status-BTA7kKiQ.mjs → status-BRROykC8.mjs} +7 -5
  149. package/dist/status-EvrK72L2.mjs +2 -0
  150. package/dist/{status-WgFbkRzj.mjs → status-WBDajew2.mjs} +554 -452
  151. package/dist/{status-watch-C23ILtf9.mjs → status-watch-Bg_u-pwR.mjs} +222 -25
  152. package/dist/status-worker.d.mts +1 -0
  153. package/dist/status-worker.mjs +19 -0
  154. package/dist/stim-desktop-D5OGpYZM.mjs +112 -0
  155. package/dist/{stop-DR6VoDIk.mjs → stop-DTZ9uTw3.mjs} +2 -2
  156. package/dist/{stop-DPEhunlw.mjs → stop-Dky10AEJ.mjs} +33 -23
  157. package/dist/{stop-BNmBMi1F.mjs → stop-Mv6W9FAk.mjs} +137 -98
  158. package/dist/supervisor-run.d.mts +8 -17
  159. package/dist/supervisor-run.mjs +56 -28
  160. package/dist/{support-CwjbFs9H.mjs → support-CNioewsd.mjs} +14 -14
  161. package/dist/{support-DMTqj3Hm.mjs → support-yUiOjnVY.mjs} +20 -13
  162. package/dist/swiftpm-artifact-inputs-DFcGsXDP.mjs +153 -0
  163. package/dist/swiftpm-macos-BIak-Rxv.mjs +532 -0
  164. package/dist/toolchain-BY8X8HXx.mjs +2 -0
  165. package/dist/toolchain-DpJMHq0n.mjs +876 -0
  166. package/dist/{trigger-CigAYjeL.mjs → trigger-Cbyc41d_.mjs} +21 -6
  167. package/dist/trigger-yb_nFzPF.mjs +2 -0
  168. package/dist/{warm-progress-BuY-Fvfn.mjs → warm-progress-CA3TgT3-.mjs} +263 -156
  169. package/dist/web-CZ07gd77.mjs +2 -0
  170. package/dist/{web-BDBMxDpx.mjs → web-DKx6yoFA.mjs} +20 -14
  171. package/dist/web-run.mjs +13 -12
  172. package/dist/windows-report.d.mts +1 -0
  173. package/dist/windows-report.mjs +18 -0
  174. package/dist/windows-report.ps1 +43 -0
  175. package/dist/{workspace-state-DJt_MMvf.mjs → workspace-state-U08dEzhG.mjs} +62 -58
  176. package/dist/{workspaces-C36s2jb9.mjs → workspaces-CpANmBlq.mjs} +1723 -1286
  177. package/dist/{worktree-CgvJYJ-Q.mjs → worktree-CHecZ4Oq.mjs} +1097 -547
  178. package/dist/worktree-ZqZVjD9K.mjs +2 -0
  179. package/dist/xcode-BXn9-xYx.mjs +896 -0
  180. package/package.json +7 -5
  181. package/shim/android-audio/Main.java +24 -0
  182. package/shim/android-audio/README.md +17 -0
  183. package/shim/android-audio.jar +0 -0
  184. package/shim/android-optimizations.gradle +7 -5
  185. package/dist/activity-BSV745Kz.mjs +0 -629
  186. package/dist/api-qvOzWyfO.mjs +0 -154
  187. package/dist/api-run.mjs +0 -294
  188. package/dist/app-install-BIKtMfPq.mjs +0 -896
  189. package/dist/artifact-lifecycle-DzPpBYvK.mjs +0 -30
  190. package/dist/budget-f7516Zk0.mjs +0 -4106
  191. package/dist/build-facts-DcLv2HSd.d.mts +0 -111
  192. package/dist/cancellation-C_22VQTH.mjs +0 -24
  193. package/dist/client-qQAaXSUs.mjs +0 -1771
  194. package/dist/config-BYDxlMY3.mjs +0 -562
  195. package/dist/device-DuiPJQSn.mjs +0 -290
  196. package/dist/device-lease-BX1sJQ2E.mjs +0 -1224
  197. package/dist/device-remote-xRT0Vmo9.mjs +0 -1272
  198. package/dist/eas-session-ledger-Cm0Gwq2F.mjs +0 -207
  199. package/dist/exec-DqKo9GKJ.mjs +0 -268
  200. package/dist/git-DDfFzkMm.mjs +0 -45
  201. package/dist/launch-verify-B6Q8hZP-.mjs +0 -428
  202. package/dist/logs-BGrEUaEs.mjs +0 -383
  203. package/dist/macos-Ch5VJmcS.mjs +0 -584
  204. package/dist/metro-gateway-CX9Xlkq2.mjs +0 -103
  205. package/dist/miss-reason-mKzZ4VvN.mjs +0 -238
  206. package/dist/native-android-D5qc3-_v.mjs +0 -226
  207. package/dist/native-gradle-inputs-BsLRrl7u.mjs +0 -349
  208. package/dist/ndjson-Du3j0AQ9.d.mts +0 -17
  209. package/dist/plan-C4TjdPsR.mjs +0 -260
  210. package/dist/prebuild-DYbucPXy.mjs +0 -212
  211. package/dist/preview-78a9kR_-.mjs +0 -1011
  212. package/dist/react-native-build-CtCccJtb.mjs +0 -239
  213. package/dist/react-native-doctor-CfRnFfjs.mjs +0 -78
  214. package/dist/remote-cache-OyOyVIS3.mjs +0 -526
  215. package/dist/result-CaJg5Iat.mjs +0 -186
  216. package/dist/server-expo-Bigriskl.mjs +0 -2
  217. package/dist/settings-BORNaaCO.mjs +0 -402
  218. package/dist/settings-vk3mJGSm.d.mts +0 -13
  219. package/dist/spawn-claims-DVS5RkMS.mjs +0 -72
  220. package/dist/stage-KNTQopqv.mjs +0 -157
  221. package/dist/start-BWqzODpb.mjs +0 -1116
  222. package/dist/stim-desktop-BzBN2Em2.mjs +0 -63
  223. package/dist/swiftpm-macos-DRNVJWlb.mjs +0 -119
  224. package/dist/tailnet-Dh-qiYzG.mjs +0 -265
  225. package/dist/toolchain-BFkAcstd.mjs +0 -2
  226. package/dist/toolchain-DxSsNssu.mjs +0 -1657
  227. package/dist/trigger-9_USgmxz.mjs +0 -2
  228. package/dist/web-Dq-i3wzJ.mjs +0 -2
  229. package/dist/worktree-DpLdCHga.mjs +0 -2
  230. package/dist/{api-run.d.mts → doctor-fingerprint.d.mts} +0 -0
  231. package/dist/{errors-DzkMYh8Q.mjs → errors-ccaPc4ox.mjs} +2 -2
@@ -1,48 +1,55 @@
1
- import { E as upsertProject, p as getProject, u as getConcurrencyLimits } from "./config-BYDxlMY3.mjs";
2
- import { K as resolveProjectSettings, W as resolveCacheProviderConfig, a as SETTING_SHAPE_REMEDY } from "./settings-B717odTD.mjs";
3
- import { _ as waitForBuild, g as releaseBuildLock, j as providerUploadOutcome, m as acquireBuildLock } from "./device-lease-BX1sJQ2E.mjs";
4
- import { i as recordWorkspaceUse, w as workspaceLogsDir, x as workspaceDir } from "./workspace-state-DJt_MMvf.mjs";
5
- import { l as phaseLine } from "./command-output-BTy8hZ0F.mjs";
6
- import { _ as detectIsExpo, d as projectRegistry } from "./project-_phNIJfs.mjs";
7
- import { D as hostSystemImageArch } from "./android-Mz_Inn3w.mjs";
8
- import { F as acquireBuildSlot, L as releaseBuildSlot } from "./workspaces-C36s2jb9.mjs";
9
- import { At as createRunRecorder, Dt as recordFinishedBuild, Ft as recordRunStats, It as statsProjectKey, Ot as startBuildProgress, jt as readRunEstimates, kt as tapBuildLog } from "./budget-f7516Zk0.mjs";
10
- import { S as withNativeBuildRun, x as runCancellationSignal } from "./tailnet-Dh-qiYzG.mjs";
11
- import { n as cancelledError, r as throwIfCancelled } from "./cancellation-C_22VQTH.mjs";
12
- import { r as createNdjsonWriter } from "./ndjson-GOnbyvso.mjs";
13
- import { d as optimizationBuildProfile, l as artifactCachePolicy } from "./errors-DzkMYh8Q.mjs";
14
- import { i as checkEasAuth, m as uploadRemote, p as resolveRemote } from "./remote-cache-OyOyVIS3.mjs";
15
- import { f as setRemoteLogSink, y as resolveBuildPlacement } from "./client-qQAaXSUs.mjs";
16
- import { m as listIosRuntimes } from "./ios-RkW4pnQf.mjs";
17
- import { n as ensureWorkspaceStorageSafely } from "./native-runtime-k8dTIrbK.mjs";
18
- import { A as readBundleId } from "./toolchain-DxSsNssu.mjs";
19
- import { n as resolveAndroidBuildPlan } from "./plan-C4TjdPsR.mjs";
20
- import { t as acquireAndroidArtifact } from "./artifact-D3czlUvT.mjs";
21
- import { i as persistLastBuild, n as finishAndroidUpload } from "./result-CaJg5Iat.mjs";
22
- import { c as iosProjectPathError, g as resolveIosBuildSetup, m as resolveConfiguration, x as simulatorBuildArch, y as resolveSchemeSelection } from "./support-CwjbFs9H.mjs";
23
- import { a as lastBuildRecord } from "./ios-project-K9hY_Jab.mjs";
24
- import { t as acquireIosArtifact } from "./artifact-HSwkIWEQ.mjs";
25
- import { constants, copyFileSync, cpSync, mkdirSync, mkdtempSync, rmSync } from "node:fs";
1
+ import { h as withDrainingCancellation } from "./exec-DEoAhcze.mjs";
2
+ import { d as workspaceDir, m as workspaceLogsDir } from "./paths-DQtTgsBf.mjs";
3
+ import { E as upsertProject, p as getProject, u as getConcurrencyLimits } from "./config-DlrsduwG.mjs";
4
+ import { l as phaseLine } from "./command-output-gwpm28fu.mjs";
5
+ import { d as cancelledError, f as throwIfCancelled } from "./operation-exec-BW0em61G.mjs";
6
+ import { i as recordWorkspaceUse } from "./workspace-state-U08dEzhG.mjs";
7
+ import { G as resolveCacheProviderConfig, J as resolveProjectSettingsAsync, a as SETTING_SHAPE_REMEDY } from "./settings-C7O8A6ZI.mjs";
8
+ import { f as projectRegistry, v as detectIsExpo } from "./project-wM_XFTvE.mjs";
9
+ import { r as createNdjsonWriter } from "./ndjson-CgE_o3Dl.mjs";
10
+ import { B as recordFinishedBuild, Bn as checkEasAuth, H as tapBuildLog, J as recordRunStats, Jn as resolveRemote, U as createRunRecorder, V as startBuildProgress, W as readRunEstimates, Y as statsProjectKey, Yn as uploadRemote } from "./budget-Cvwn54qV.mjs";
11
+ import { d as runCancellationSignal, f as withNativeBuildRun } from "./native-run-NwUuxbkg.mjs";
12
+ import { I as acquireBuildSlot, R as releaseBuildSlot } from "./workspaces-CpANmBlq.mjs";
13
+ import { F as waitForBuild, M as acquireBuildLock, P as releaseBuildLock } from "./activity-CMLmzp7o.mjs";
14
+ import { p as providerUploadOutcome } from "./build-cache-Dv7RN200.mjs";
15
+ import { k as hostSystemImageArch } from "./android-C7sVmyI9.mjs";
16
+ import { m as listIosRuntimes } from "./ios-hcBpnEGk.mjs";
17
+ import { s as workspaceShareURL } from "./stim-desktop-D5OGpYZM.mjs";
18
+ import { d as optimizationBuildProfile, l as artifactCachePolicy } from "./errors-ccaPc4ox.mjs";
19
+ import { p as readBundleId } from "./xcode-BXn9-xYx.mjs";
20
+ import { h as setRemoteLogSink } from "./client-OyRoEuSr.mjs";
21
+ import { s as resolveBuildPlacement } from "./selection-DSMbWEX2.mjs";
22
+ import { c as iosProjectPathError, g as resolveIosBuildSetup, m as resolveConfiguration, x as simulatorBuildArch, y as resolveSchemeSelection } from "./support-CNioewsd.mjs";
23
+ import { n as ensureWorkspaceStorageSafely } from "./native-runtime-B7KIafpM.mjs";
24
+ import { t as acquireAndroidArtifact } from "./artifact-DJPy518Y.mjs";
25
+ import { i as persistLastBuild, n as finishAndroidUpload, s as resolveAndroidBuildPlan } from "./result-D2Ykz_iD.mjs";
26
+ import { a as lastBuildRecord } from "./ios-project-CZhKODF3.mjs";
27
+ import { t as acquireIosArtifact } from "./artifact-8EY8SAPw.mjs";
28
+ import { constants, promises } from "node:fs";
26
29
  import { basename, join } from "node:path";
27
- import { loadCacheProvider } from "@stim-cli/cache";
28
30
  import { hostSimulatorArch } from "@stim-cli/core";
31
+ import { loadCacheProvider } from "@stim-cli/cache";
29
32
  //#region src/commands/android/build.ts
30
- const note$1 = (line) => console.error(line);
31
- async function buildAndroidOperation(root, options) {
33
+ async function buildAndroidOperation(context, root, options, { artifactScope, cachePolicy } = {}) {
34
+ const note = (line) => context.output("stderr", `${line}\n`);
32
35
  const selected = projectRegistry.selectAndroid(root);
33
36
  if ("problem" in selected) throw Object.assign(new Error(selected.problem.message), {
34
37
  code: "STIM_NO_PROJECT",
35
38
  remedy: selected.problem.remedy
36
39
  });
37
- const { context: settingsContext, settings } = resolveProjectSettings(root);
40
+ const { context: settingsContext, settings } = await resolveProjectSettingsAsync(root, {
41
+ env: context.env,
42
+ signal: runCancellationSignal(context) ?? context.signal
43
+ });
38
44
  const integration = await selected.load({
39
45
  context: settingsContext,
40
46
  settings
41
47
  });
42
- const phase = (label, line) => note$1(phaseLine(label, line));
48
+ const phase = (label, line) => note(phaseLine(label, line));
43
49
  const plan = resolveAndroidBuildPlan({
44
50
  settings,
45
51
  settingsContext,
52
+ env: context.env,
46
53
  variant: options.variant ?? null,
47
54
  buildCache: options.buildCache !== false
48
55
  }, {
@@ -62,13 +69,13 @@ async function buildAndroidOperation(root, options) {
62
69
  "all"
63
70
  ].includes(options.abi)) throw Object.assign(/* @__PURE__ */ new Error("Android build abi must be arm64-v8a, armeabi-v7a, x86, x86_64 or all."), { code: "STIM_BAD_ARG" });
64
71
  const abi = options.abi === "all" ? null : options.abi ?? (plan.plan.build.targetAbiOnly && !plan.plan.build.release ? hostSystemImageArch() : null);
65
- await ensureWorkspaceStorageSafely(root, { note: note$1 });
66
- return withNativeBuildRun(root, {
72
+ await ensureWorkspaceStorageSafely(root, { note });
73
+ return withDrainingCancellation(context, context.signal, () => withNativeBuildRun(context, root, {
67
74
  command: "build",
68
75
  platform: "android"
69
76
  }, async (claim) => {
70
77
  if (!getProject(root)) upsertProject(root, {});
71
- recordWorkspaceUse(root);
78
+ recordWorkspaceUse(root, /* @__PURE__ */ new Date(), context.env, context.cwd);
72
79
  const started = Date.now();
73
80
  const startedAt = new Date(started).toISOString();
74
81
  const progress = startBuildProgress({
@@ -76,7 +83,7 @@ async function buildAndroidOperation(root, options) {
76
83
  platform: "android",
77
84
  slot: "default",
78
85
  claim,
79
- note: note$1
86
+ note
80
87
  });
81
88
  const logs = workspaceLogsDir(root);
82
89
  const buildLog = join(logs, "build-artifact-android.ndjson");
@@ -84,7 +91,7 @@ async function buildAndroidOperation(root, options) {
84
91
  truncate: true,
85
92
  fields: { platform: "android" }
86
93
  }), progress);
87
- setRemoteLogSink((entry) => writer.write(entry));
94
+ setRemoteLogSink(context, (entry) => writer.write(entry));
88
95
  const projectKey = statsProjectKey({
89
96
  root,
90
97
  commonDir: settingsContext.gitCommonDir,
@@ -94,7 +101,7 @@ async function buildAndroidOperation(root, options) {
94
101
  platform: "android",
95
102
  write: recordRunStats,
96
103
  now: Date.now,
97
- note: note$1,
104
+ note,
98
105
  phases: () => progress.durations(),
99
106
  deviceSetup: () => false
100
107
  });
@@ -106,7 +113,8 @@ async function buildAndroidOperation(root, options) {
106
113
  };
107
114
  let artifact;
108
115
  let directory;
109
- let succeeded = false;
116
+ let built = null;
117
+ let failureAfterCleanup = null;
110
118
  const finishRecord = (status, errorCode) => persistLastBuild({
111
119
  root,
112
120
  record,
@@ -114,23 +122,29 @@ async function buildAndroidOperation(root, options) {
114
122
  durationMs: Date.now() - started,
115
123
  status,
116
124
  errorCode,
117
- out: note$1,
125
+ out: note,
118
126
  recordBuild: (at, entry) => recordFinishedBuild(at, entry, { artifactOnly: true })
119
127
  });
120
128
  try {
121
129
  const acquired = await acquireAndroidArtifact({
130
+ context,
122
131
  root,
123
132
  buildLog,
124
133
  writer,
125
134
  recipe: integration.artifact({
135
+ operation: context,
136
+ artifactScope,
126
137
  root,
127
138
  buildLog,
128
139
  writer,
129
140
  settings,
130
- buildPlan: plan.plan.build,
141
+ buildPlan: {
142
+ ...plan.plan.build,
143
+ ...cachePolicy ? { cache: cachePolicy } : {}
144
+ },
131
145
  target: { abi },
132
146
  phase,
133
- out: note$1,
147
+ out: note,
134
148
  step: progress.step,
135
149
  estimates: () => readRunEstimates({
136
150
  projectKey,
@@ -138,16 +152,19 @@ async function buildAndroidOperation(root, options) {
138
152
  })
139
153
  }),
140
154
  targetOffloadRefusal: null,
141
- buildPlan: plan.plan.build,
155
+ buildPlan: {
156
+ ...plan.plan.build,
157
+ ...cachePolicy ? { cache: cachePolicy } : {}
158
+ },
142
159
  cacheProviderConfig: plan.plan.cacheProviderConfig,
143
160
  requestedBuildCache: options.buildCache !== false,
144
161
  easBuild: null,
145
- androidPackage: integration.appIds().androidPackage,
162
+ androidPackage: (await integration.appIds()).androidPackage,
146
163
  record,
147
164
  maxBuilds: getConcurrencyLimits().maxBuilds,
148
165
  progress: {
149
166
  phase,
150
- out: note$1,
167
+ out: note,
151
168
  stats,
152
169
  step: progress.step,
153
170
  miss: progress.miss,
@@ -170,29 +187,22 @@ async function buildAndroidOperation(root, options) {
170
187
  });
171
188
  if (!acquired.ok) throw Object.assign(new Error(acquired.failure.message ?? "Android build failed."), acquired.failure, { details: acquired.failure.extra });
172
189
  artifact = acquired.artifact;
173
- throwIfCancelled(runCancellationSignal(), "Android build");
190
+ throwIfCancelled(runCancellationSignal(context), "Android build");
174
191
  if (!artifact.apkPath) throw Object.assign(/* @__PURE__ */ new Error("The Android build produced no APK."), { code: "STIM_BUILD_FAILED" });
175
192
  const artifacts = join(workspaceDir(root), "artifacts");
176
- mkdirSync(artifacts, { recursive: true });
177
- directory = mkdtempSync(join(artifacts, "android-"));
193
+ await promises.mkdir(artifacts, { recursive: true });
194
+ directory = await promises.mkdtemp(join(artifacts, "android-"));
178
195
  const apkPath = join(directory, "app.apk");
179
- copyFileSync(artifact.apkPath, apkPath, constants.COPYFILE_FICLONE);
196
+ await promises.copyFile(artifact.apkPath, apkPath, constants.COPYFILE_FICLONE);
197
+ throwIfCancelled(runCancellationSignal(context), "Android build");
180
198
  await finishAndroidUpload(artifact.uploadPending, artifact.remote, phase);
181
- const uploaded = providerUploadOutcome(artifact.providerUpload ? await artifact.providerUpload : null, artifact.providerName);
199
+ const uploaded = providerUploadOutcome(artifact.providerUpload ? await artifact.providerUpload : null, artifact.providerName, context.env);
182
200
  if (uploaded) phase("cache", uploaded.line);
183
- throwIfCancelled(runCancellationSignal(), "Android build");
201
+ const links = { workspace: await workspaceShareURL(root, { platform: "android" }, runCancellationSignal(context) ?? context.signal) };
202
+ throwIfCancelled(runCancellationSignal(context), "Android build");
184
203
  record.appPath = apkPath;
185
204
  record.bundleId = artifact.androidPackage;
186
- finishRecord("ok");
187
- stats.record({
188
- failed: false,
189
- cacheHit: record.cacheHit === "local" || record.cacheHit === "remote" ? record.cacheHit : false,
190
- durationMs: Date.now() - started,
191
- offloadedTo: record.offloadedTo,
192
- waited: artifact.waitedForBuild
193
- });
194
- succeeded = true;
195
- return {
205
+ built = {
196
206
  apkPath,
197
207
  androidPackage: artifact.androidPackage,
198
208
  variant: plan.plan.build.variant ?? "debug",
@@ -204,10 +214,11 @@ async function buildAndroidOperation(root, options) {
204
214
  builtOn: record.builtOn ?? null,
205
215
  ccache: artifact.ccache,
206
216
  durationMs: Date.now() - started,
207
- logs: { dir: logs }
217
+ logs: { dir: logs },
218
+ links
208
219
  };
209
220
  } catch (error) {
210
- const failure = runCancellationSignal()?.aborted ? cancelledError("Android build", error) : error;
221
+ const failure = runCancellationSignal(context)?.aborted ? cancelledError("Android build", error) : error;
211
222
  finishRecord("failed", failure.code);
212
223
  stats.record({
213
224
  failed: true,
@@ -215,33 +226,56 @@ async function buildAndroidOperation(root, options) {
215
226
  });
216
227
  throw failure;
217
228
  } finally {
218
- artifact?.release();
219
- if (!succeeded && directory) rmSync(directory, {
229
+ await artifact?.release();
230
+ failureAfterCleanup = built && runCancellationSignal(context)?.aborted ? cancelledError("Android build") : null;
231
+ if (failureAfterCleanup) {
232
+ finishRecord("failed", failureAfterCleanup.code);
233
+ stats.record({
234
+ failed: true,
235
+ durationMs: Date.now() - started
236
+ });
237
+ }
238
+ if ((!built || failureAfterCleanup) && directory) await promises.rm(directory, {
220
239
  recursive: true,
221
240
  force: true
222
241
  });
242
+ if (built && !failureAfterCleanup) {
243
+ finishRecord("ok");
244
+ stats.record({
245
+ failed: false,
246
+ cacheHit: record.cacheHit === "local" || record.cacheHit === "remote" ? record.cacheHit : false,
247
+ durationMs: Date.now() - started,
248
+ offloadedTo: record.offloadedTo,
249
+ waited: artifact?.waitedForBuild
250
+ });
251
+ }
223
252
  writer.close();
224
253
  progress.clear();
225
254
  }
226
- }, { write: (line) => phase("lock", line) });
255
+ if (failureAfterCleanup) throw failureAfterCleanup;
256
+ return built;
257
+ }, { write: (line) => phase("lock", line) }));
227
258
  }
228
259
  //#endregion
229
260
  //#region src/commands/ios/build.ts
230
- const note = (line) => console.error(line);
231
- async function buildIosOperation(root, options) {
261
+ async function buildIosOperation(context, root, options) {
262
+ const note = (line) => context.output("stderr", `${line}\n`);
232
263
  const selected = projectRegistry.selectIos(root);
233
264
  if ("problem" in selected) throw Object.assign(new Error(selected.problem.message), {
234
265
  code: "STIM_NO_PROJECT",
235
266
  remedy: selected.problem.remedy
236
267
  });
237
- const { context, settings } = resolveProjectSettings(root);
268
+ const { context: settingsContext, settings } = await resolveProjectSettingsAsync(root, {
269
+ env: context.env,
270
+ signal: runCancellationSignal(context) ?? context.signal
271
+ });
238
272
  const projectPathError = iosProjectPathError(settings, root, () => detectIsExpo(root));
239
273
  if (projectPathError) throw Object.assign(new Error(projectPathError), {
240
274
  code: "STIM_BAD_ARG",
241
275
  remedy: SETTING_SHAPE_REMEDY
242
276
  });
243
277
  const integration = await selected.load(settings);
244
- const setup = resolveIosBuildSetup(options.remoteBuild, settings, (label, message) => note(phaseLine(label, message)));
278
+ const setup = resolveIosBuildSetup(options.remoteBuild, settings, (label, message) => note(phaseLine(label, message)), context.env);
245
279
  if (!setup.ok) {
246
280
  const { failure } = setup;
247
281
  throw Object.assign(new Error(failure.message ?? failure.code), failure, { details: failure });
@@ -249,7 +283,7 @@ async function buildIosOperation(root, options) {
249
283
  const { buildMachine, optimizations } = setup;
250
284
  const configuration = resolveConfiguration(options.configuration, settings);
251
285
  const buildScheme = resolveSchemeSelection(options, settings);
252
- const problem = integration.schemeProblem(buildScheme, configuration);
286
+ const problem = await integration.schemeProblem(buildScheme, configuration);
253
287
  if (problem) throw Object.assign(new Error(problem.message ?? problem.code), problem);
254
288
  if (options.arch !== void 0 && ![
255
289
  "arm64",
@@ -265,12 +299,12 @@ async function buildIosOperation(root, options) {
265
299
  const cache = artifactCachePolicy(optimizations, options.buildCache !== false, integration.runtimeKind(configuration) === "embedded-js");
266
300
  const phase = (label, line) => note(phaseLine(label, line));
267
301
  await ensureWorkspaceStorageSafely(root, { note });
268
- return withNativeBuildRun(root, {
302
+ return withDrainingCancellation(context, context.signal, () => withNativeBuildRun(context, root, {
269
303
  command: "build",
270
304
  platform: "ios"
271
305
  }, async (claim) => {
272
306
  if (!getProject(root)) upsertProject(root, {});
273
- recordWorkspaceUse(root);
307
+ recordWorkspaceUse(root, /* @__PURE__ */ new Date(), context.env, context.cwd);
274
308
  const started = Date.now();
275
309
  const startedAt = new Date(started).toISOString();
276
310
  const progress = startBuildProgress({
@@ -286,11 +320,11 @@ async function buildIosOperation(root, options) {
286
320
  truncate: true,
287
321
  fields: { platform: "ios" }
288
322
  }), progress);
289
- setRemoteLogSink((entry) => writer.write(entry));
323
+ setRemoteLogSink(context, (entry) => writer.write(entry));
290
324
  const projectKey = statsProjectKey({
291
325
  root,
292
- commonDir: context.gitCommonDir,
293
- repoRoot: context.repoRoot
326
+ commonDir: settingsContext.gitCommonDir,
327
+ repoRoot: settingsContext.repoRoot
294
328
  });
295
329
  const stats = createRunRecorder({
296
330
  platform: "ios",
@@ -304,7 +338,8 @@ async function buildIosOperation(root, options) {
304
338
  progress.estimate(projectKey);
305
339
  let artifact;
306
340
  let directory;
307
- let succeeded = false;
341
+ let built = null;
342
+ let failureAfterCleanup = null;
308
343
  const finish = (status, appPath, errorCode) => {
309
344
  try {
310
345
  recordFinishedBuild(root, lastBuildRecord({
@@ -330,12 +365,14 @@ async function buildIosOperation(root, options) {
330
365
  };
331
366
  try {
332
367
  const acquired = await acquireIosArtifact({
368
+ context,
333
369
  root,
334
370
  logFile,
335
371
  configuration,
336
372
  buildMachine,
337
373
  physical: false,
338
374
  recipe: integration.artifact({
375
+ operation: context,
339
376
  root,
340
377
  logFile,
341
378
  configuration,
@@ -366,7 +403,7 @@ async function buildIosOperation(root, options) {
366
403
  }),
367
404
  cache: {
368
405
  policy: cache,
369
- providerConfig: resolveCacheProviderConfig(context),
406
+ providerConfig: resolveCacheProviderConfig(settingsContext),
370
407
  disabledByFlag: options.buildCache === false
371
408
  },
372
409
  easBuild: null,
@@ -397,29 +434,26 @@ async function buildIosOperation(root, options) {
397
434
  });
398
435
  if (!acquired.ok) throw Object.assign(new Error(acquired.failure.message ?? "The iOS build failed."), acquired.failure);
399
436
  artifact = acquired.artifact;
400
- artifact.bundleId ??= readBundleId(artifact.path) ?? integration.bundleId();
401
- throwIfCancelled(runCancellationSignal(), "iOS build");
437
+ artifact.bundleId ??= await readBundleId(artifact.path) ?? await integration.bundleId();
438
+ throwIfCancelled(runCancellationSignal(context), "iOS build");
402
439
  const artifacts = join(workspaceDir(root), "artifacts");
403
- mkdirSync(artifacts, { recursive: true });
404
- directory = mkdtempSync(join(artifacts, "ios-"));
440
+ await promises.mkdir(artifacts, { recursive: true });
441
+ directory = await promises.mkdtemp(join(artifacts, "ios-"));
405
442
  const appPath = join(directory, basename(artifact.path));
406
- cpSync(artifact.path, appPath, {
443
+ await promises.cp(artifact.path, appPath, {
407
444
  recursive: true,
408
445
  verbatimSymlinks: true,
409
- mode: constants.COPYFILE_FICLONE
446
+ mode: constants.COPYFILE_FICLONE,
447
+ filter: () => {
448
+ throwIfCancelled(runCancellationSignal(context), "iOS build");
449
+ return true;
450
+ }
410
451
  });
452
+ throwIfCancelled(runCancellationSignal(context), "iOS build");
411
453
  await artifact.completeUploads();
412
- throwIfCancelled(runCancellationSignal(), "iOS build");
413
- finish("ok", appPath);
414
- stats.record({
415
- failed: false,
416
- durationMs: Date.now() - started,
417
- cacheHit: artifact.cache.hit === "local" || artifact.cache.hit === "remote" ? artifact.cache.hit : false,
418
- offloadedTo: artifact.cache.offloadedTo,
419
- waited: artifact.cache.waitedForBuild
420
- });
421
- succeeded = true;
422
- return {
454
+ const links = { workspace: await workspaceShareURL(root, { platform: "ios" }, runCancellationSignal(context) ?? context.signal) };
455
+ throwIfCancelled(runCancellationSignal(context), "iOS build");
456
+ built = {
423
457
  appPath,
424
458
  bundleId: artifact.bundleId,
425
459
  configuration: configuration ?? "Debug",
@@ -432,10 +466,11 @@ async function buildIosOperation(root, options) {
432
466
  builtOn: artifact.cache.builtOn ?? null,
433
467
  compilationCache: artifact.cache.compilation,
434
468
  durationMs: Date.now() - started,
435
- logs: { dir: logs }
469
+ logs: { dir: logs },
470
+ links
436
471
  };
437
472
  } catch (error) {
438
- const failure = runCancellationSignal()?.aborted ? cancelledError("iOS build", error) : error;
473
+ const failure = runCancellationSignal(context)?.aborted ? cancelledError("iOS build", error) : error;
439
474
  finish("failed", void 0, failure.code);
440
475
  stats.record({
441
476
  failed: true,
@@ -443,15 +478,35 @@ async function buildIosOperation(root, options) {
443
478
  });
444
479
  throw failure;
445
480
  } finally {
446
- artifact?.release();
447
- if (!succeeded && directory) rmSync(directory, {
481
+ await artifact?.release();
482
+ failureAfterCleanup = built && runCancellationSignal(context)?.aborted ? cancelledError("iOS build") : null;
483
+ if (failureAfterCleanup) {
484
+ finish("failed", void 0, failureAfterCleanup.code);
485
+ stats.record({
486
+ failed: true,
487
+ durationMs: Date.now() - started
488
+ });
489
+ }
490
+ if ((!built || failureAfterCleanup) && directory) await promises.rm(directory, {
448
491
  recursive: true,
449
492
  force: true
450
493
  });
494
+ if (built && !failureAfterCleanup) {
495
+ finish("ok", built.appPath);
496
+ stats.record({
497
+ failed: false,
498
+ durationMs: Date.now() - started,
499
+ cacheHit: artifact?.cache.hit === "local" || artifact?.cache.hit === "remote" ? artifact?.cache.hit : false,
500
+ offloadedTo: artifact?.cache.offloadedTo,
501
+ waited: artifact?.cache.waitedForBuild
502
+ });
503
+ }
451
504
  writer.close();
452
505
  progress.clear();
453
506
  }
454
- }, { write: (line) => phase("lock", line) });
507
+ if (failureAfterCleanup) throw failureAfterCleanup;
508
+ return built;
509
+ }, { write: (line) => phase("lock", line) }));
455
510
  }
456
511
  //#endregion
457
512
  export { buildAndroidOperation as n, buildIosOperation as t };