lim 0.1.5 → 0.10.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 (349) hide show
  1. package/README.md +861 -0
  2. package/bin/dev.js +16 -0
  3. package/bin/run.js +63 -0
  4. package/dist/base-command.d.ts +55 -0
  5. package/dist/base-command.d.ts.map +1 -0
  6. package/dist/base-command.js +467 -0
  7. package/dist/base-command.js.map +1 -0
  8. package/dist/commands/android/connect.d.ts +17 -0
  9. package/dist/commands/android/connect.d.ts.map +1 -0
  10. package/dist/commands/android/connect.js +50 -0
  11. package/dist/commands/android/connect.js.map +1 -0
  12. package/dist/commands/android/create.d.ts +25 -0
  13. package/dist/commands/android/create.d.ts.map +1 -0
  14. package/dist/commands/android/create.js +202 -0
  15. package/dist/commands/android/create.js.map +1 -0
  16. package/dist/commands/android/delete.d.ts +17 -0
  17. package/dist/commands/android/delete.d.ts.map +1 -0
  18. package/dist/commands/android/delete.js +44 -0
  19. package/dist/commands/android/delete.js.map +1 -0
  20. package/dist/commands/android/element-tree.d.ts +16 -0
  21. package/dist/commands/android/element-tree.d.ts.map +1 -0
  22. package/dist/commands/android/element-tree.js +60 -0
  23. package/dist/commands/android/element-tree.js.map +1 -0
  24. package/dist/commands/android/find-element.d.ts +28 -0
  25. package/dist/commands/android/find-element.d.ts.map +1 -0
  26. package/dist/commands/android/find-element.js +70 -0
  27. package/dist/commands/android/find-element.js.map +1 -0
  28. package/dist/commands/android/get.d.ts +17 -0
  29. package/dist/commands/android/get.d.ts.map +1 -0
  30. package/dist/commands/android/get.js +43 -0
  31. package/dist/commands/android/get.js.map +1 -0
  32. package/dist/commands/android/install-app.d.ts +18 -0
  33. package/dist/commands/android/install-app.d.ts.map +1 -0
  34. package/dist/commands/android/install-app.js +70 -0
  35. package/dist/commands/android/install-app.js.map +1 -0
  36. package/dist/commands/android/list.d.ts +19 -0
  37. package/dist/commands/android/list.d.ts.map +1 -0
  38. package/dist/commands/android/list.js +61 -0
  39. package/dist/commands/android/list.js.map +1 -0
  40. package/dist/commands/android/open-url.d.ts +18 -0
  41. package/dist/commands/android/open-url.d.ts.map +1 -0
  42. package/dist/commands/android/open-url.js +51 -0
  43. package/dist/commands/android/open-url.js.map +1 -0
  44. package/dist/commands/android/press-key.d.ts +19 -0
  45. package/dist/commands/android/press-key.d.ts.map +1 -0
  46. package/dist/commands/android/press-key.js +52 -0
  47. package/dist/commands/android/press-key.js.map +1 -0
  48. package/dist/commands/android/record.d.ts +22 -0
  49. package/dist/commands/android/record.d.ts.map +1 -0
  50. package/dist/commands/android/record.js +100 -0
  51. package/dist/commands/android/record.js.map +1 -0
  52. package/dist/commands/android/screenshot.d.ts +18 -0
  53. package/dist/commands/android/screenshot.d.ts.map +1 -0
  54. package/dist/commands/android/screenshot.js +66 -0
  55. package/dist/commands/android/screenshot.js.map +1 -0
  56. package/dist/commands/android/scroll.d.ts +32 -0
  57. package/dist/commands/android/scroll.d.ts.map +1 -0
  58. package/dist/commands/android/scroll.js +72 -0
  59. package/dist/commands/android/scroll.js.map +1 -0
  60. package/dist/commands/android/tap-element.d.ts +27 -0
  61. package/dist/commands/android/tap-element.d.ts.map +1 -0
  62. package/dist/commands/android/tap-element.js +60 -0
  63. package/dist/commands/android/tap-element.js.map +1 -0
  64. package/dist/commands/android/tap.d.ts +25 -0
  65. package/dist/commands/android/tap.d.ts.map +1 -0
  66. package/dist/commands/android/tap.js +55 -0
  67. package/dist/commands/android/tap.js.map +1 -0
  68. package/dist/commands/android/type.d.ts +31 -0
  69. package/dist/commands/android/type.d.ts.map +1 -0
  70. package/dist/commands/android/type.js +53 -0
  71. package/dist/commands/android/type.js.map +1 -0
  72. package/dist/commands/asset/delete.d.ts +17 -0
  73. package/dist/commands/asset/delete.d.ts.map +1 -0
  74. package/dist/commands/asset/delete.js +23 -0
  75. package/dist/commands/asset/delete.js.map +1 -0
  76. package/dist/commands/asset/list.d.ts +22 -0
  77. package/dist/commands/asset/list.d.ts.map +1 -0
  78. package/dist/commands/asset/list.js +97 -0
  79. package/dist/commands/asset/list.js.map +1 -0
  80. package/dist/commands/asset/pull.d.ts +19 -0
  81. package/dist/commands/asset/pull.d.ts.map +1 -0
  82. package/dist/commands/asset/pull.js +84 -0
  83. package/dist/commands/asset/pull.js.map +1 -0
  84. package/dist/commands/asset/push.d.ts +18 -0
  85. package/dist/commands/asset/push.d.ts.map +1 -0
  86. package/dist/commands/asset/push.js +43 -0
  87. package/dist/commands/asset/push.js.map +1 -0
  88. package/dist/commands/go.d.ts +17 -0
  89. package/dist/commands/go.d.ts.map +1 -0
  90. package/dist/commands/go.js +201 -0
  91. package/dist/commands/go.js.map +1 -0
  92. package/dist/commands/ios/app-log.d.ts +20 -0
  93. package/dist/commands/ios/app-log.d.ts.map +1 -0
  94. package/dist/commands/ios/app-log.js +86 -0
  95. package/dist/commands/ios/app-log.js.map +1 -0
  96. package/dist/commands/ios/cp.d.ts +19 -0
  97. package/dist/commands/ios/cp.d.ts.map +1 -0
  98. package/dist/commands/ios/cp.js +64 -0
  99. package/dist/commands/ios/cp.js.map +1 -0
  100. package/dist/commands/ios/create.d.ts +25 -0
  101. package/dist/commands/ios/create.d.ts.map +1 -0
  102. package/dist/commands/ios/create.js +163 -0
  103. package/dist/commands/ios/create.js.map +1 -0
  104. package/dist/commands/ios/delete.d.ts +17 -0
  105. package/dist/commands/ios/delete.d.ts.map +1 -0
  106. package/dist/commands/ios/delete.js +44 -0
  107. package/dist/commands/ios/delete.js.map +1 -0
  108. package/dist/commands/ios/element-tree.d.ts +16 -0
  109. package/dist/commands/ios/element-tree.d.ts.map +1 -0
  110. package/dist/commands/ios/element-tree.js +57 -0
  111. package/dist/commands/ios/element-tree.js.map +1 -0
  112. package/dist/commands/ios/get.d.ts +17 -0
  113. package/dist/commands/ios/get.d.ts.map +1 -0
  114. package/dist/commands/ios/get.js +44 -0
  115. package/dist/commands/ios/get.js.map +1 -0
  116. package/dist/commands/ios/info.d.ts +16 -0
  117. package/dist/commands/ios/info.d.ts.map +1 -0
  118. package/dist/commands/ios/info.js +55 -0
  119. package/dist/commands/ios/info.js.map +1 -0
  120. package/dist/commands/ios/install-app.d.ts +20 -0
  121. package/dist/commands/ios/install-app.d.ts.map +1 -0
  122. package/dist/commands/ios/install-app.js +97 -0
  123. package/dist/commands/ios/install-app.js.map +1 -0
  124. package/dist/commands/ios/launch-app.d.ts +23 -0
  125. package/dist/commands/ios/launch-app.d.ts.map +1 -0
  126. package/dist/commands/ios/launch-app.js +74 -0
  127. package/dist/commands/ios/launch-app.js.map +1 -0
  128. package/dist/commands/ios/list-apps.d.ts +16 -0
  129. package/dist/commands/ios/list-apps.d.ts.map +1 -0
  130. package/dist/commands/ios/list-apps.js +51 -0
  131. package/dist/commands/ios/list-apps.js.map +1 -0
  132. package/dist/commands/ios/list.d.ts +19 -0
  133. package/dist/commands/ios/list.d.ts.map +1 -0
  134. package/dist/commands/ios/list.js +61 -0
  135. package/dist/commands/ios/list.js.map +1 -0
  136. package/dist/commands/ios/lsof.d.ts +16 -0
  137. package/dist/commands/ios/lsof.d.ts.map +1 -0
  138. package/dist/commands/ios/lsof.js +47 -0
  139. package/dist/commands/ios/lsof.js.map +1 -0
  140. package/dist/commands/ios/open-url.d.ts +18 -0
  141. package/dist/commands/ios/open-url.d.ts.map +1 -0
  142. package/dist/commands/ios/open-url.js +51 -0
  143. package/dist/commands/ios/open-url.js.map +1 -0
  144. package/dist/commands/ios/perform.d.ts +18 -0
  145. package/dist/commands/ios/perform.d.ts.map +1 -0
  146. package/dist/commands/ios/perform.js +228 -0
  147. package/dist/commands/ios/perform.js.map +1 -0
  148. package/dist/commands/ios/press-key.d.ts +19 -0
  149. package/dist/commands/ios/press-key.d.ts.map +1 -0
  150. package/dist/commands/ios/press-key.js +52 -0
  151. package/dist/commands/ios/press-key.js.map +1 -0
  152. package/dist/commands/ios/record.d.ts +22 -0
  153. package/dist/commands/ios/record.d.ts.map +1 -0
  154. package/dist/commands/ios/record.js +101 -0
  155. package/dist/commands/ios/record.js.map +1 -0
  156. package/dist/commands/ios/reverse.d.ts +19 -0
  157. package/dist/commands/ios/reverse.d.ts.map +1 -0
  158. package/dist/commands/ios/reverse.js +97 -0
  159. package/dist/commands/ios/reverse.js.map +1 -0
  160. package/dist/commands/ios/screenshot.d.ts +18 -0
  161. package/dist/commands/ios/screenshot.d.ts.map +1 -0
  162. package/dist/commands/ios/screenshot.js +65 -0
  163. package/dist/commands/ios/screenshot.js.map +1 -0
  164. package/dist/commands/ios/scroll.d.ts +19 -0
  165. package/dist/commands/ios/scroll.d.ts.map +1 -0
  166. package/dist/commands/ios/scroll.js +57 -0
  167. package/dist/commands/ios/scroll.js.map +1 -0
  168. package/dist/commands/ios/simctl.d.ts +17 -0
  169. package/dist/commands/ios/simctl.d.ts.map +1 -0
  170. package/dist/commands/ios/simctl.js +72 -0
  171. package/dist/commands/ios/simctl.js.map +1 -0
  172. package/dist/commands/ios/sync.d.ts +23 -0
  173. package/dist/commands/ios/sync.d.ts.map +1 -0
  174. package/dist/commands/ios/sync.js +90 -0
  175. package/dist/commands/ios/sync.js.map +1 -0
  176. package/dist/commands/ios/syslog.d.ts +16 -0
  177. package/dist/commands/ios/syslog.d.ts.map +1 -0
  178. package/dist/commands/ios/syslog.js +62 -0
  179. package/dist/commands/ios/syslog.js.map +1 -0
  180. package/dist/commands/ios/tap-element.d.ts +23 -0
  181. package/dist/commands/ios/tap-element.d.ts.map +1 -0
  182. package/dist/commands/ios/tap-element.js +92 -0
  183. package/dist/commands/ios/tap-element.js.map +1 -0
  184. package/dist/commands/ios/tap.d.ts +25 -0
  185. package/dist/commands/ios/tap.d.ts.map +1 -0
  186. package/dist/commands/ios/tap.js +55 -0
  187. package/dist/commands/ios/tap.js.map +1 -0
  188. package/dist/commands/ios/terminate-app.d.ts +18 -0
  189. package/dist/commands/ios/terminate-app.d.ts.map +1 -0
  190. package/dist/commands/ios/terminate-app.js +49 -0
  191. package/dist/commands/ios/terminate-app.js.map +1 -0
  192. package/dist/commands/ios/toggle-keyboard.d.ts +15 -0
  193. package/dist/commands/ios/toggle-keyboard.d.ts.map +1 -0
  194. package/dist/commands/ios/toggle-keyboard.js +45 -0
  195. package/dist/commands/ios/toggle-keyboard.js.map +1 -0
  196. package/dist/commands/ios/type.d.ts +19 -0
  197. package/dist/commands/ios/type.d.ts.map +1 -0
  198. package/dist/commands/ios/type.js +53 -0
  199. package/dist/commands/ios/type.js.map +1 -0
  200. package/dist/commands/ios/xcodebuild.d.ts +17 -0
  201. package/dist/commands/ios/xcodebuild.d.ts.map +1 -0
  202. package/dist/commands/ios/xcodebuild.js +59 -0
  203. package/dist/commands/ios/xcodebuild.js.map +1 -0
  204. package/dist/commands/ios/xcrun.d.ts +17 -0
  205. package/dist/commands/ios/xcrun.d.ts.map +1 -0
  206. package/dist/commands/ios/xcrun.js +60 -0
  207. package/dist/commands/ios/xcrun.js.map +1 -0
  208. package/dist/commands/login.d.ts +14 -0
  209. package/dist/commands/login.d.ts.map +1 -0
  210. package/dist/commands/login.js +22 -0
  211. package/dist/commands/login.js.map +1 -0
  212. package/dist/commands/logout.d.ts +14 -0
  213. package/dist/commands/logout.d.ts.map +1 -0
  214. package/dist/commands/logout.js +18 -0
  215. package/dist/commands/logout.js.map +1 -0
  216. package/dist/commands/session/start.d.ts +16 -0
  217. package/dist/commands/session/start.d.ts.map +1 -0
  218. package/dist/commands/session/start.js +129 -0
  219. package/dist/commands/session/start.js.map +1 -0
  220. package/dist/commands/session/status.d.ts +14 -0
  221. package/dist/commands/session/status.d.ts.map +1 -0
  222. package/dist/commands/session/status.js +65 -0
  223. package/dist/commands/session/status.js.map +1 -0
  224. package/dist/commands/session/stop.d.ts +18 -0
  225. package/dist/commands/session/stop.d.ts.map +1 -0
  226. package/dist/commands/session/stop.js +76 -0
  227. package/dist/commands/session/stop.js.map +1 -0
  228. package/dist/commands/skills/install.d.ts +18 -0
  229. package/dist/commands/skills/install.d.ts.map +1 -0
  230. package/dist/commands/skills/install.js +473 -0
  231. package/dist/commands/skills/install.js.map +1 -0
  232. package/dist/commands/xcode/attach-simulator.d.ts +18 -0
  233. package/dist/commands/xcode/attach-simulator.d.ts.map +1 -0
  234. package/dist/commands/xcode/attach-simulator.js +55 -0
  235. package/dist/commands/xcode/attach-simulator.js.map +1 -0
  236. package/dist/commands/xcode/build.d.ts +37 -0
  237. package/dist/commands/xcode/build.d.ts.map +1 -0
  238. package/dist/commands/xcode/build.js +233 -0
  239. package/dist/commands/xcode/build.js.map +1 -0
  240. package/dist/commands/xcode/create.d.ts +22 -0
  241. package/dist/commands/xcode/create.d.ts.map +1 -0
  242. package/dist/commands/xcode/create.js +187 -0
  243. package/dist/commands/xcode/create.js.map +1 -0
  244. package/dist/commands/xcode/delete.d.ts +17 -0
  245. package/dist/commands/xcode/delete.d.ts.map +1 -0
  246. package/dist/commands/xcode/delete.js +44 -0
  247. package/dist/commands/xcode/delete.js.map +1 -0
  248. package/dist/commands/xcode/get.d.ts +17 -0
  249. package/dist/commands/xcode/get.d.ts.map +1 -0
  250. package/dist/commands/xcode/get.js +59 -0
  251. package/dist/commands/xcode/get.js.map +1 -0
  252. package/dist/commands/xcode/list.d.ts +18 -0
  253. package/dist/commands/xcode/list.d.ts.map +1 -0
  254. package/dist/commands/xcode/list.js +58 -0
  255. package/dist/commands/xcode/list.js.map +1 -0
  256. package/dist/commands/xcode/sync.d.ts +24 -0
  257. package/dist/commands/xcode/sync.d.ts.map +1 -0
  258. package/dist/commands/xcode/sync.js +93 -0
  259. package/dist/commands/xcode/sync.js.map +1 -0
  260. package/dist/index.d.ts +2 -0
  261. package/dist/index.d.ts.map +1 -0
  262. package/dist/index.js +6 -0
  263. package/dist/index.js.map +1 -0
  264. package/dist/lib/additional-files.d.ts +6 -0
  265. package/dist/lib/additional-files.d.ts.map +1 -0
  266. package/dist/lib/additional-files.js +19 -0
  267. package/dist/lib/additional-files.js.map +1 -0
  268. package/dist/lib/android-selector.d.ts +50 -0
  269. package/dist/lib/android-selector.d.ts.map +1 -0
  270. package/dist/lib/android-selector.js +103 -0
  271. package/dist/lib/android-selector.js.map +1 -0
  272. package/dist/lib/auth.d.ts +2 -0
  273. package/dist/lib/auth.d.ts.map +1 -0
  274. package/dist/lib/auth.js +60 -0
  275. package/dist/lib/auth.js.map +1 -0
  276. package/dist/lib/config.d.ts +65 -0
  277. package/dist/lib/config.d.ts.map +1 -0
  278. package/dist/lib/config.js +292 -0
  279. package/dist/lib/config.js.map +1 -0
  280. package/dist/lib/daemon-client.d.ts +9 -0
  281. package/dist/lib/daemon-client.d.ts.map +1 -0
  282. package/dist/lib/daemon-client.js +81 -0
  283. package/dist/lib/daemon-client.js.map +1 -0
  284. package/dist/lib/daemon.d.ts +41 -0
  285. package/dist/lib/daemon.d.ts.map +1 -0
  286. package/dist/lib/daemon.js +511 -0
  287. package/dist/lib/daemon.js.map +1 -0
  288. package/dist/lib/detox-version.d.ts +12 -0
  289. package/dist/lib/detox-version.d.ts.map +1 -0
  290. package/dist/lib/detox-version.js +30 -0
  291. package/dist/lib/detox-version.js.map +1 -0
  292. package/dist/lib/duration.d.ts +2 -0
  293. package/dist/lib/duration.d.ts.map +1 -0
  294. package/dist/lib/duration.js +37 -0
  295. package/dist/lib/duration.js.map +1 -0
  296. package/dist/lib/formatting.d.ts +3 -0
  297. package/dist/lib/formatting.d.ts.map +1 -0
  298. package/dist/lib/formatting.js +31 -0
  299. package/dist/lib/formatting.js.map +1 -0
  300. package/dist/lib/ignore-patterns.d.ts +2 -0
  301. package/dist/lib/ignore-patterns.d.ts.map +1 -0
  302. package/dist/lib/ignore-patterns.js +18 -0
  303. package/dist/lib/ignore-patterns.js.map +1 -0
  304. package/dist/lib/instance-client-factory.d.ts +29 -0
  305. package/dist/lib/instance-client-factory.d.ts.map +1 -0
  306. package/dist/lib/instance-client-factory.js +87 -0
  307. package/dist/lib/instance-client-factory.js.map +1 -0
  308. package/dist/lib/launch-app-runtime.d.ts +23 -0
  309. package/dist/lib/launch-app-runtime.d.ts.map +1 -0
  310. package/dist/lib/launch-app-runtime.js +58 -0
  311. package/dist/lib/launch-app-runtime.js.map +1 -0
  312. package/dist/lib/onboarding.d.ts +42 -0
  313. package/dist/lib/onboarding.d.ts.map +1 -0
  314. package/dist/lib/onboarding.js +296 -0
  315. package/dist/lib/onboarding.js.map +1 -0
  316. package/dist/lib/project-detection.d.ts +11 -0
  317. package/dist/lib/project-detection.d.ts.map +1 -0
  318. package/dist/lib/project-detection.js +122 -0
  319. package/dist/lib/project-detection.js.map +1 -0
  320. package/dist/lib/remote-skills.d.ts +47 -0
  321. package/dist/lib/remote-skills.d.ts.map +1 -0
  322. package/dist/lib/remote-skills.js +241 -0
  323. package/dist/lib/remote-skills.js.map +1 -0
  324. package/dist/lib/reverse-port-mapping.d.ts +6 -0
  325. package/dist/lib/reverse-port-mapping.d.ts.map +1 -0
  326. package/dist/lib/reverse-port-mapping.js +24 -0
  327. package/dist/lib/reverse-port-mapping.js.map +1 -0
  328. package/dist/lib/skills.d.ts +17 -0
  329. package/dist/lib/skills.d.ts.map +1 -0
  330. package/dist/lib/skills.js +153 -0
  331. package/dist/lib/skills.js.map +1 -0
  332. package/dist/lib/xcode-sandbox.d.ts +2 -0
  333. package/dist/lib/xcode-sandbox.d.ts.map +1 -0
  334. package/dist/lib/xcode-sandbox.js +7 -0
  335. package/dist/lib/xcode-sandbox.js.map +1 -0
  336. package/package.json +69 -13
  337. package/.npmignore +0 -2
  338. package/build/lib/index.js +0 -1498
  339. package/build/lib/index.map +0 -1
  340. package/build/lib/utils/courier.js +0 -98
  341. package/build/lib/utils/courier.map +0 -1
  342. package/build/lib/utils/polyfill.js +0 -53
  343. package/build/lib/utils/polyfill.map +0 -1
  344. package/build.sh +0 -9
  345. package/index.js +0 -2
  346. package/lib/index.js +0 -284
  347. package/lib/utils/courier.js +0 -108
  348. package/lib/utils/polyfill.js +0 -42
  349. package/native.js +0 -2
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../../src/commands/ios/create.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAMjD,MAAM,CAAC,OAAO,OAAO,SAAU,SAAQ,WAAW;IAChD,MAAM,CAAC,OAAO,SAA+B;IAC7C,MAAM,CAAC,WAAW,SACiK;IAEnL,MAAM,CAAC,QAAQ,WAKb;IAEF,MAAM,CAAC,KAAK;;;;;;;;;;;;;;;;MAuCV;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAsG3B"}
@@ -0,0 +1,163 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const path_1 = __importDefault(require("path"));
7
+ const core_1 = require("@oclif/core");
8
+ const base_command_1 = require("../../base-command");
9
+ const formatting_1 = require("../../lib/formatting");
10
+ const config_1 = require("../../lib/config");
11
+ const xcode_sandbox_1 = require("../../lib/xcode-sandbox");
12
+ class IosCreate extends base_command_1.BaseCommand {
13
+ async run() {
14
+ const { flags } = await this.parse(IosCreate);
15
+ this.setParsedFlags(flags);
16
+ await this.withAuth(async () => {
17
+ // Upload local files first
18
+ const assetNames = [...(flags['install-asset'] || [])];
19
+ if (flags.install) {
20
+ for (const filePath of flags.install) {
21
+ const resolved = path_1.default.resolve(filePath);
22
+ const name = path_1.default.basename(resolved);
23
+ this.info(`Uploading ${name}...`);
24
+ const asset = await this.client.assets.getOrUpload({ path: resolved, name });
25
+ assetNames.push(asset.name);
26
+ }
27
+ this.info(`Successfully uploaded ${flags.install.length} file(s)`);
28
+ }
29
+ // Build params
30
+ const params = {
31
+ wait: true,
32
+ reuseIfExists: flags['reuse-if-exists'] || undefined,
33
+ spec: {},
34
+ };
35
+ if (assetNames.length > 0) {
36
+ params.spec.initialAssets = assetNames.map((name) => ({
37
+ kind: 'App',
38
+ source: 'AssetName',
39
+ assetName: name,
40
+ }));
41
+ }
42
+ if (flags.region)
43
+ params.spec.region = flags.region;
44
+ if (flags.model)
45
+ params.spec.model = flags.model;
46
+ if (flags['hard-timeout'])
47
+ params.spec.hardTimeout = flags['hard-timeout'];
48
+ if (flags['inactivity-timeout'])
49
+ params.spec.inactivityTimeout = flags['inactivity-timeout'];
50
+ if (flags.xcode) {
51
+ params.spec.sandbox = { xcode: { enabled: true } };
52
+ }
53
+ const labels = (0, formatting_1.parseLabels)(flags.label);
54
+ if (flags['display-name'] || labels) {
55
+ params.metadata = {};
56
+ if (flags['display-name'])
57
+ params.metadata.displayName = flags['display-name'];
58
+ if (labels)
59
+ params.metadata.labels = labels;
60
+ }
61
+ const start = Date.now();
62
+ const instance = await this.client.iosInstances.create(params);
63
+ const consoleUrl = this.consoleStreamUrl(instance.metadata.id);
64
+ const signedStreamUrl = this.signedStreamUrl(instance.status);
65
+ const xcodeSandboxUrl = instance.status.sandbox?.xcode?.url;
66
+ const xcodeSandboxId = xcodeSandboxUrl ? (0, xcode_sandbox_1.xcodeSandboxIdFromUrl)(xcodeSandboxUrl) : undefined;
67
+ (0, config_1.registerCreatedInstance)(instance, flags.xcode ? ['xcode'] : []);
68
+ this.info(`Created a new iOS instance in ${((Date.now() - start) / 1000).toFixed(1)}s`);
69
+ this.info('iOS Instance:');
70
+ this.info(` ID: ${instance.metadata.id}`);
71
+ this.info(` Console URL: ${consoleUrl}`);
72
+ if (signedStreamUrl) {
73
+ this.info(` Signed Stream URL: ${signedStreamUrl}`);
74
+ }
75
+ this.info(` Region: ${instance.spec.region}`);
76
+ this.info(` State: ${instance.status.state}`);
77
+ if (xcodeSandboxUrl) {
78
+ this.info('Xcode Sandbox:');
79
+ if (xcodeSandboxId) {
80
+ this.info(` ID: ${xcodeSandboxId}`);
81
+ }
82
+ this.info(` URL: ${xcodeSandboxUrl}`);
83
+ }
84
+ if (flags.json) {
85
+ this.outputJson(instance);
86
+ }
87
+ else if (this.isQuietEnabled()) {
88
+ this.output(instance.metadata.id);
89
+ }
90
+ if (flags.rm) {
91
+ const cleanup = async () => {
92
+ try {
93
+ await this.client.iosInstances.delete(instance.metadata.id);
94
+ this.info(`${instance.metadata.id} is deleted`);
95
+ }
96
+ catch (e) {
97
+ this.info(`Failed to delete instance: ${e}`);
98
+ }
99
+ };
100
+ this.info('Instance running. Press Ctrl+C to stop and delete.');
101
+ await new Promise((resolve) => {
102
+ const keepAlive = setInterval(() => { }, 1 << 30);
103
+ const shutdown = () => {
104
+ clearInterval(keepAlive);
105
+ resolve();
106
+ };
107
+ process.on('SIGINT', shutdown);
108
+ process.on('SIGTERM', shutdown);
109
+ });
110
+ await cleanup();
111
+ }
112
+ });
113
+ }
114
+ }
115
+ IosCreate.summary = 'Create a new iOS instance';
116
+ IosCreate.description = 'Create a new cloud iOS simulator instance and wait for it to become ready. You can attach labels, install apps, choose a device model, and optionally enable an Xcode sandbox.';
117
+ IosCreate.examples = [
118
+ '<%= config.bin %> ios create',
119
+ '<%= config.bin %> ios create --rm --model ipad',
120
+ '<%= config.bin %> ios create --region us-west --install-asset my-app.ipa',
121
+ '<%= config.bin %> ios create --install ./MyApp.ipa --xcode',
122
+ ];
123
+ IosCreate.flags = {
124
+ ...base_command_1.BaseCommand.baseFlags,
125
+ rm: core_1.Flags.boolean({
126
+ description: 'Delete the instance automatically when this CLI process exits',
127
+ default: false,
128
+ }),
129
+ 'display-name': core_1.Flags.string({
130
+ description: 'Human-friendly display name shown in listings and the console',
131
+ }),
132
+ region: core_1.Flags.string({ description: 'Region where the instance should be created, such as us-west' }),
133
+ 'hard-timeout': core_1.Flags.string({ description: 'Hard timeout (e.g. 1m, 10m, 3h). Default: no timeout' }),
134
+ 'inactivity-timeout': core_1.Flags.string({
135
+ description: 'Inactivity timeout (e.g. 1m, 10m, 3h). Default is in organization settings.',
136
+ }),
137
+ label: core_1.Flags.string({
138
+ description: 'Metadata label in key=value format. Repeat to attach multiple labels.',
139
+ multiple: true,
140
+ }),
141
+ model: core_1.Flags.string({
142
+ description: 'Device model to create',
143
+ options: ['iphone', 'ipad', 'watch'],
144
+ }),
145
+ 'reuse-if-exists': core_1.Flags.boolean({
146
+ description: 'Reuse an existing matching instance instead of creating a new one',
147
+ default: false,
148
+ }),
149
+ 'install-asset': core_1.Flags.string({
150
+ description: 'Existing asset name to install onto the instance after creation',
151
+ multiple: true,
152
+ }),
153
+ install: core_1.Flags.string({
154
+ description: 'Local app file to upload and install automatically after creation. Repeat for multiple files.',
155
+ multiple: true,
156
+ }),
157
+ xcode: core_1.Flags.boolean({
158
+ description: 'Enable an attached Xcode sandbox for build and sync workflows',
159
+ default: false,
160
+ }),
161
+ };
162
+ exports.default = IosCreate;
163
+ //# sourceMappingURL=create.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create.js","sourceRoot":"","sources":["../../../src/commands/ios/create.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import { BaseCommand } from '../../base-command';
2
+ export default class IosDelete extends BaseCommand {
3
+ static summary: string;
4
+ static description: string;
5
+ static examples: string[];
6
+ static args: {
7
+ id: import("@oclif/core/lib/interfaces").Arg<string | undefined, Record<string, unknown>>;
8
+ };
9
+ static flags: {
10
+ 'api-key': import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
11
+ json: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
12
+ quiet: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
13
+ create: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
14
+ };
15
+ run(): Promise<void>;
16
+ }
17
+ //# sourceMappingURL=delete.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delete.d.ts","sourceRoot":"","sources":["../../../src/commands/ios/delete.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAIjD,MAAM,CAAC,OAAO,OAAO,SAAU,SAAQ,WAAW;IAChD,MAAM,CAAC,OAAO,SAA4B;IAC1C,MAAM,CAAC,WAAW,SAAwF;IAC1G,MAAM,CAAC,QAAQ,WAIb;IAEF,MAAM,CAAC,IAAI;;MAKT;IAEF,MAAM,CAAC,KAAK;;;;;MAAgC;IAEtC,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAoB3B"}
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const api_1 = require("@limrun/api");
4
+ const core_1 = require("@oclif/core");
5
+ const base_command_1 = require("../../base-command");
6
+ const config_1 = require("../../lib/config");
7
+ const daemon_1 = require("../../lib/daemon");
8
+ class IosDelete extends base_command_1.BaseCommand {
9
+ async run() {
10
+ const { args, flags } = await this.parse(IosDelete);
11
+ this.setParsedFlags(flags);
12
+ await this.withAuth(async () => {
13
+ const resolvedInstance = this.resolveIosInstance(args.id);
14
+ const id = resolvedInstance.id;
15
+ try {
16
+ await this.client.iosInstances.delete(id);
17
+ }
18
+ catch (err) {
19
+ if (!(err instanceof api_1.NotFoundError)) {
20
+ throw err;
21
+ }
22
+ }
23
+ (0, daemon_1.stopDaemon)(id);
24
+ (0, config_1.clearLastInstanceId)(id);
25
+ this.log(`Deleted iOS instance: ${id}`);
26
+ });
27
+ }
28
+ }
29
+ IosDelete.summary = 'Delete an iOS instance';
30
+ IosDelete.description = 'Delete an existing iOS instance by ID and remove any cached local metadata for it.';
31
+ IosDelete.examples = [
32
+ '<%= config.bin %> ios delete',
33
+ '<%= config.bin %> ios delete <ID>',
34
+ '<%= config.bin %> ios delete ios_abc123',
35
+ ];
36
+ IosDelete.args = {
37
+ id: core_1.Args.string({
38
+ description: 'iOS instance ID to delete. Defaults to the last created iOS instance.',
39
+ required: false,
40
+ }),
41
+ };
42
+ IosDelete.flags = { ...base_command_1.BaseCommand.baseFlags };
43
+ exports.default = IosDelete;
44
+ //# sourceMappingURL=delete.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delete.js","sourceRoot":"","sources":["../../../src/commands/ios/delete.ts"],"names":[],"mappings":";;AAAA,qCAA4C;AAC5C,sCAAmC;AACnC,qDAAiD;AACjD,6CAAuD;AACvD,6CAA8C;AAE9C,MAAqB,SAAU,SAAQ,0BAAW;IAkBhD,KAAK,CAAC,GAAG;QACP,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QACpD,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QAE3B,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,IAAI,EAAE;YAC7B,MAAM,gBAAgB,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC1D,MAAM,EAAE,GAAG,gBAAgB,CAAC,EAAE,CAAC;YAC/B,IAAI,CAAC;gBACH,MAAM,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YAC5C,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,IAAI,CAAC,CAAC,GAAG,YAAY,mBAAa,CAAC,EAAE,CAAC;oBACpC,MAAM,GAAG,CAAC;gBACZ,CAAC;YACH,CAAC;YAED,IAAA,mBAAU,EAAC,EAAE,CAAC,CAAC;YACf,IAAA,4BAAmB,EAAC,EAAE,CAAC,CAAC;YACxB,IAAI,CAAC,GAAG,CAAC,yBAAyB,EAAE,EAAE,CAAC,CAAC;QAC1C,CAAC,CAAC,CAAC;IACL,CAAC;;AApCM,iBAAO,GAAG,wBAAwB,CAAC;AACnC,qBAAW,GAAG,oFAAoF,CAAC;AACnG,kBAAQ,GAAG;IAChB,8BAA8B;IAC9B,mCAAmC;IACnC,yCAAyC;CAC1C,CAAC;AAEK,cAAI,GAAG;IACZ,EAAE,EAAE,WAAI,CAAC,MAAM,CAAC;QACd,WAAW,EAAE,uEAAuE;QACpF,QAAQ,EAAE,KAAK;KAChB,CAAC;CACH,CAAC;AAEK,eAAK,GAAG,EAAE,GAAG,0BAAW,CAAC,SAAS,EAAE,CAAC;kBAhBzB,SAAS"}
@@ -0,0 +1,16 @@
1
+ import { BaseCommand } from '../../base-command';
2
+ export default class IosElementTree extends BaseCommand {
3
+ static summary: string;
4
+ static description: string;
5
+ static examples: string[];
6
+ static args: {};
7
+ static flags: {
8
+ id: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
9
+ 'api-key': import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
10
+ json: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
11
+ quiet: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
12
+ create: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
13
+ };
14
+ run(): Promise<void>;
15
+ }
16
+ //# sourceMappingURL=element-tree.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"element-tree.d.ts","sourceRoot":"","sources":["../../../src/commands/ios/element-tree.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAOjD,MAAM,CAAC,OAAO,OAAO,cAAe,SAAQ,WAAW;IACrD,MAAM,CAAC,OAAO,SAAyD;IACvE,MAAM,CAAC,WAAW,SACwJ;IAC1K,MAAM,CAAC,QAAQ,WAIb;IAEF,MAAM,CAAC,IAAI,KAAM;IAEjB,MAAM,CAAC,KAAK;;;;;;MAKV;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAkC3B"}
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const core_1 = require("@oclif/core");
4
+ const base_command_1 = require("../../base-command");
5
+ const instance_client_factory_1 = require("../../lib/instance-client-factory");
6
+ class IosElementTree extends base_command_1.BaseCommand {
7
+ async run() {
8
+ const { flags } = await this.parse(IosElementTree);
9
+ this.setParsedFlags(flags);
10
+ await this.withAuth(async () => {
11
+ const resolvedInstance = this.resolveIosInstance(flags.id);
12
+ const id = resolvedInstance.id;
13
+ if (false) {
14
+ this.error('ios element-tree only supports iOS instances');
15
+ }
16
+ if ((0, instance_client_factory_1.hasActiveSession)(id)) {
17
+ const tree = await (0, instance_client_factory_1.sendSessionCommand)(id, 'element-tree');
18
+ if (flags.json) {
19
+ this.outputJson(tree);
20
+ }
21
+ else {
22
+ this.log(typeof tree === 'string' ? tree : JSON.stringify(tree, null, 2));
23
+ }
24
+ return;
25
+ }
26
+ const { client, disconnect } = await (0, instance_client_factory_1.getIosInstanceClient)(this.client, resolvedInstance);
27
+ try {
28
+ const tree = await client.elementTree();
29
+ if (flags.json) {
30
+ this.outputJson(tree);
31
+ }
32
+ else {
33
+ this.log(typeof tree === 'string' ? tree : JSON.stringify(tree, null, 2));
34
+ }
35
+ }
36
+ finally {
37
+ disconnect();
38
+ }
39
+ });
40
+ }
41
+ }
42
+ IosElementTree.summary = 'Get the UI element tree from a running iOS instance';
43
+ IosElementTree.description = 'Inspect the current accessibility hierarchy of a running iOS instance. Use `--json` for structured output that agents can search or feed into later automation steps.';
44
+ IosElementTree.examples = [
45
+ '<%= config.bin %> ios element-tree',
46
+ '<%= config.bin %> ios element-tree --id <instance-ID>',
47
+ '<%= config.bin %> ios element-tree --json',
48
+ ];
49
+ IosElementTree.args = {};
50
+ IosElementTree.flags = {
51
+ ...base_command_1.BaseCommand.baseFlags,
52
+ id: core_1.Flags.string({
53
+ description: 'iOS instance ID to inspect. Defaults to the last created iOS instance.',
54
+ }),
55
+ };
56
+ exports.default = IosElementTree;
57
+ //# sourceMappingURL=element-tree.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"element-tree.js","sourceRoot":"","sources":["../../../src/commands/ios/element-tree.ts"],"names":[],"mappings":";;AAAA,sCAAoC;AACpC,qDAAiD;AACjD,+EAI2C;AAE3C,MAAqB,cAAe,SAAQ,0BAAW;IAmBrD,KAAK,CAAC,GAAG;QACP,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;QACnD,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QAE3B,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,IAAI,EAAE;YAC7B,MAAM,gBAAgB,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAC3D,MAAM,EAAE,GAAG,gBAAgB,CAAC,EAAE,CAAC;YAC/B,IAAI,KAAK,EAAE,CAAC;gBACV,IAAI,CAAC,KAAK,CAAC,8CAA8C,CAAC,CAAC;YAC7D,CAAC;YAED,IAAI,IAAA,0CAAgB,EAAC,EAAE,CAAC,EAAE,CAAC;gBACzB,MAAM,IAAI,GAAG,MAAM,IAAA,4CAAkB,EAAC,EAAE,EAAE,cAAc,CAAC,CAAC;gBAC1D,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;oBACf,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;gBACxB,CAAC;qBAAM,CAAC;oBACN,IAAI,CAAC,GAAG,CAAC,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;gBAC5E,CAAC;gBACD,OAAO;YACT,CAAC;YAED,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,IAAA,8CAAoB,EAAC,IAAI,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;YACzF,IAAI,CAAC;gBACH,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,WAAW,EAAE,CAAC;gBACxC,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;oBACf,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;gBACxB,CAAC;qBAAM,CAAC;oBACN,IAAI,CAAC,GAAG,CAAC,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;gBAC5E,CAAC;YACH,CAAC;oBAAS,CAAC;gBACT,UAAU,EAAE,CAAC;YACf,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;;AAnDM,sBAAO,GAAG,qDAAqD,CAAC;AAChE,0BAAW,GAChB,uKAAuK,CAAC;AACnK,uBAAQ,GAAG;IAChB,oCAAoC;IACpC,uDAAuD;IACvD,2CAA2C;CAC5C,CAAC;AAEK,mBAAI,GAAG,EAAE,CAAC;AAEV,oBAAK,GAAG;IACb,GAAG,0BAAW,CAAC,SAAS;IACxB,EAAE,EAAE,YAAK,CAAC,MAAM,CAAC;QACf,WAAW,EAAE,wEAAwE;KACtF,CAAC;CACH,CAAC;kBAjBiB,cAAc"}
@@ -0,0 +1,17 @@
1
+ import { BaseCommand } from '../../base-command';
2
+ export default class IosGet extends BaseCommand {
3
+ static summary: string;
4
+ static description: string;
5
+ static examples: string[];
6
+ static args: {
7
+ id: import("@oclif/core/lib/interfaces").Arg<string | undefined, Record<string, unknown>>;
8
+ };
9
+ static flags: {
10
+ 'api-key': import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
11
+ json: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
12
+ quiet: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
13
+ create: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
14
+ };
15
+ run(): Promise<void>;
16
+ }
17
+ //# sourceMappingURL=get.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get.d.ts","sourceRoot":"","sources":["../../../src/commands/ios/get.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjD,MAAM,CAAC,OAAO,OAAO,MAAO,SAAQ,WAAW;IAC7C,MAAM,CAAC,OAAO,SAA6C;IAC3D,MAAM,CAAC,WAAW,SAC+H;IACjJ,MAAM,CAAC,QAAQ,WAA0E;IAEzF,MAAM,CAAC,IAAI;;MAKT;IAEF,MAAM,CAAC,KAAK;;;;;MAAgC;IAEtC,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAwB3B"}
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const core_1 = require("@oclif/core");
4
+ const base_command_1 = require("../../base-command");
5
+ class IosGet extends base_command_1.BaseCommand {
6
+ async run() {
7
+ const { args, flags } = await this.parse(IosGet);
8
+ this.setParsedFlags(flags);
9
+ await this.withAuth(async () => {
10
+ const resolvedInstance = this.resolveIosInstance(args.id);
11
+ const instance = await this.client.iosInstances.get(resolvedInstance.id);
12
+ if (flags.json) {
13
+ this.outputJson(instance);
14
+ }
15
+ else {
16
+ const signedStreamUrl = this.signedStreamUrl(instance.status);
17
+ this.output(`ID: ${instance.metadata.id}`);
18
+ this.output(`Name: ${instance.metadata.displayName || ''}`);
19
+ this.output(`Region: ${instance.spec.region}`);
20
+ this.output(`State: ${instance.status.state}`);
21
+ this.output(`Console URL: ${this.consoleStreamUrl(instance.metadata.id)}`);
22
+ if (instance.status.apiUrl)
23
+ this.output(`API URL: ${instance.status.apiUrl}`);
24
+ if (instance.status.sandbox?.xcode?.url) {
25
+ this.output(`Xcode Sandbox URL: ${instance.status.sandbox.xcode.url}`);
26
+ }
27
+ if (signedStreamUrl)
28
+ this.output(`Signed Stream URL: ${signedStreamUrl}`);
29
+ }
30
+ });
31
+ }
32
+ }
33
+ IosGet.summary = 'Get details for a specific iOS instance';
34
+ IosGet.description = 'Fetch detailed metadata for a single iOS instance, including region, state, and display name. Use `--json` to inspect the full API response.';
35
+ IosGet.examples = ['<%= config.bin %> ios get', '<%= config.bin %> ios get <ID> --json'];
36
+ IosGet.args = {
37
+ id: core_1.Args.string({
38
+ description: 'iOS instance ID to fetch. Defaults to the last created iOS instance.',
39
+ required: false,
40
+ }),
41
+ };
42
+ IosGet.flags = { ...base_command_1.BaseCommand.baseFlags };
43
+ exports.default = IosGet;
44
+ //# sourceMappingURL=get.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get.js","sourceRoot":"","sources":["../../../src/commands/ios/get.ts"],"names":[],"mappings":";;AAAA,sCAAmC;AACnC,qDAAiD;AAEjD,MAAqB,MAAO,SAAQ,0BAAW;IAe7C,KAAK,CAAC,GAAG;QACP,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACjD,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QAE3B,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,IAAI,EAAE;YAC7B,MAAM,gBAAgB,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC1D,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC;YACzE,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;gBACf,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;YAC5B,CAAC;iBAAM,CAAC;gBACN,MAAM,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;gBAC9D,IAAI,CAAC,MAAM,CAAC,OAAO,QAAQ,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC;gBAC3C,IAAI,CAAC,MAAM,CAAC,SAAS,QAAQ,CAAC,QAAQ,CAAC,WAAW,IAAI,EAAE,EAAE,CAAC,CAAC;gBAC5D,IAAI,CAAC,MAAM,CAAC,WAAW,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;gBAC/C,IAAI,CAAC,MAAM,CAAC,UAAU,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;gBAC/C,IAAI,CAAC,MAAM,CAAC,gBAAgB,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;gBAC3E,IAAI,QAAQ,CAAC,MAAM,CAAC,MAAM;oBAAE,IAAI,CAAC,MAAM,CAAC,YAAY,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;gBAC9E,IAAI,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;oBACxC,IAAI,CAAC,MAAM,CAAC,sBAAsB,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC;gBACzE,CAAC;gBACD,IAAI,eAAe;oBAAE,IAAI,CAAC,MAAM,CAAC,sBAAsB,eAAe,EAAE,CAAC,CAAC;YAC5E,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;;AArCM,cAAO,GAAG,yCAAyC,CAAC;AACpD,kBAAW,GAChB,8IAA8I,CAAC;AAC1I,eAAQ,GAAG,CAAC,2BAA2B,EAAE,uCAAuC,CAAC,CAAC;AAElF,WAAI,GAAG;IACZ,EAAE,EAAE,WAAI,CAAC,MAAM,CAAC;QACd,WAAW,EAAE,sEAAsE;QACnF,QAAQ,EAAE,KAAK;KAChB,CAAC;CACH,CAAC;AAEK,YAAK,GAAG,EAAE,GAAG,0BAAW,CAAC,SAAS,EAAE,CAAC;kBAbzB,MAAM"}
@@ -0,0 +1,16 @@
1
+ import { BaseCommand } from '../../base-command';
2
+ export default class IosInfo extends BaseCommand {
3
+ static summary: string;
4
+ static description: string;
5
+ static examples: string[];
6
+ static args: {};
7
+ static flags: {
8
+ id: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
9
+ 'api-key': import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
10
+ json: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
11
+ quiet: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
12
+ create: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
13
+ };
14
+ run(): Promise<void>;
15
+ }
16
+ //# sourceMappingURL=info.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"info.d.ts","sourceRoot":"","sources":["../../../src/commands/ios/info.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAcjD,MAAM,CAAC,OAAO,OAAO,OAAQ,SAAQ,WAAW;IAC9C,MAAM,CAAC,OAAO,SAAwD;IACtE,MAAM,CAAC,WAAW,SAC0L;IAC5M,MAAM,CAAC,QAAQ,WAIb;IAEF,MAAM,CAAC,IAAI,KAAM;IAEjB,MAAM,CAAC,KAAK;;;;;;MAKV;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAmC3B"}
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const core_1 = require("@oclif/core");
4
+ const base_command_1 = require("../../base-command");
5
+ const instance_client_factory_1 = require("../../lib/instance-client-factory");
6
+ class IosInfo extends base_command_1.BaseCommand {
7
+ async run() {
8
+ const { flags } = await this.parse(IosInfo);
9
+ this.setParsedFlags(flags);
10
+ await this.withAuth(async () => {
11
+ const resolvedInstance = this.resolveIosInstance(flags.id);
12
+ const id = resolvedInstance.id;
13
+ let info;
14
+ if ((0, instance_client_factory_1.hasActiveSession)(id)) {
15
+ info = (await (0, instance_client_factory_1.sendSessionCommand)(id, 'device-info'));
16
+ }
17
+ else {
18
+ const { client, disconnect } = await (0, instance_client_factory_1.getIosInstanceClient)(this.client, resolvedInstance);
19
+ try {
20
+ info = client.deviceInfo;
21
+ }
22
+ finally {
23
+ disconnect();
24
+ }
25
+ }
26
+ if (flags.json) {
27
+ this.outputJson(info);
28
+ }
29
+ else {
30
+ this.outputTable(['Field', 'Value'], [
31
+ ['UDID', info.udid],
32
+ ['Model', info.model],
33
+ ['Screen Width', String(info.screenWidth)],
34
+ ['Screen Height', String(info.screenHeight)],
35
+ ]);
36
+ }
37
+ });
38
+ }
39
+ }
40
+ IosInfo.summary = 'Get device information from a running iOS instance';
41
+ IosInfo.description = 'Show basic simulator metadata for a running iOS instance, including UDID, model, and screen dimensions. This is useful when building coordinate-based automation or debugging device-specific behavior.';
42
+ IosInfo.examples = [
43
+ '<%= config.bin %> ios info',
44
+ '<%= config.bin %> ios info --id <instance-ID>',
45
+ '<%= config.bin %> ios info --json',
46
+ ];
47
+ IosInfo.args = {};
48
+ IosInfo.flags = {
49
+ ...base_command_1.BaseCommand.baseFlags,
50
+ id: core_1.Flags.string({
51
+ description: 'iOS instance ID to inspect. Defaults to the last created iOS instance.',
52
+ }),
53
+ };
54
+ exports.default = IosInfo;
55
+ //# sourceMappingURL=info.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"info.js","sourceRoot":"","sources":["../../../src/commands/ios/info.ts"],"names":[],"mappings":";;AAAA,sCAAoC;AACpC,qDAAiD;AACjD,+EAI2C;AAS3C,MAAqB,OAAQ,SAAQ,0BAAW;IAmB9C,KAAK,CAAC,GAAG;QACP,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC5C,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QAE3B,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,IAAI,EAAE;YAC7B,MAAM,gBAAgB,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAC3D,MAAM,EAAE,GAAG,gBAAgB,CAAC,EAAE,CAAC;YAE/B,IAAI,IAAgB,CAAC;YACrB,IAAI,IAAA,0CAAgB,EAAC,EAAE,CAAC,EAAE,CAAC;gBACzB,IAAI,GAAG,CAAC,MAAM,IAAA,4CAAkB,EAAC,EAAE,EAAE,aAAa,CAAC,CAAe,CAAC;YACrE,CAAC;iBAAM,CAAC;gBACN,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,IAAA,8CAAoB,EAAC,IAAI,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;gBACzF,IAAI,CAAC;oBACH,IAAI,GAAI,MAAgD,CAAC,UAAU,CAAC;gBACtE,CAAC;wBAAS,CAAC;oBACT,UAAU,EAAE,CAAC;gBACf,CAAC;YACH,CAAC;YAED,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;gBACf,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YACxB,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,WAAW,CACd,CAAC,OAAO,EAAE,OAAO,CAAC,EAClB;oBACE,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC;oBACnB,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC;oBACrB,CAAC,cAAc,EAAE,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;oBAC1C,CAAC,eAAe,EAAE,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;iBAC7C,CACF,CAAC;YACJ,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;;AApDM,eAAO,GAAG,oDAAoD,CAAC;AAC/D,mBAAW,GAChB,yMAAyM,CAAC;AACrM,gBAAQ,GAAG;IAChB,4BAA4B;IAC5B,+CAA+C;IAC/C,mCAAmC;CACpC,CAAC;AAEK,YAAI,GAAG,EAAE,CAAC;AAEV,aAAK,GAAG;IACb,GAAG,0BAAW,CAAC,SAAS;IACxB,EAAE,EAAE,YAAK,CAAC,MAAM,CAAC;QACf,WAAW,EAAE,wEAAwE;KACtF,CAAC;CACH,CAAC;kBAjBiB,OAAO"}
@@ -0,0 +1,20 @@
1
+ import { BaseCommand } from '../../base-command';
2
+ export default class IosInstallApp extends BaseCommand {
3
+ static summary: string;
4
+ static description: string;
5
+ static examples: string[];
6
+ static args: {
7
+ path_or_url: import("@oclif/core/lib/interfaces").Arg<string, Record<string, unknown>>;
8
+ };
9
+ static flags: {
10
+ id: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
11
+ md5: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
12
+ 'launch-mode': import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
13
+ 'api-key': import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
14
+ json: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
15
+ quiet: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
16
+ create: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
17
+ };
18
+ run(): Promise<void>;
19
+ }
20
+ //# sourceMappingURL=install-app.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"install-app.d.ts","sourceRoot":"","sources":["../../../src/commands/ios/install-app.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAOjD,MAAM,CAAC,OAAO,OAAO,aAAc,SAAQ,WAAW;IACpD,MAAM,CAAC,OAAO,SAA8C;IAC5D,MAAM,CAAC,WAAW,SACuJ;IAEzK,MAAM,CAAC,QAAQ,WAMb;IAEF,MAAM,CAAC,IAAI;;MAKT;IAEF,MAAM,CAAC,KAAK;;;;;;;;MAYV;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CA0D3B"}
@@ -0,0 +1,97 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const path_1 = __importDefault(require("path"));
7
+ const fs_1 = __importDefault(require("fs"));
8
+ const core_1 = require("@oclif/core");
9
+ const base_command_1 = require("../../base-command");
10
+ const instance_client_factory_1 = require("../../lib/instance-client-factory");
11
+ class IosInstallApp extends base_command_1.BaseCommand {
12
+ async run() {
13
+ const { args, flags } = await this.parse(IosInstallApp);
14
+ this.setParsedFlags(flags);
15
+ await this.withAuth(async () => {
16
+ const resolvedInstance = this.resolveIosInstance(flags.id);
17
+ const id = resolvedInstance.id;
18
+ if (false) {
19
+ this.error('ios install-app only supports iOS instances');
20
+ }
21
+ let downloadUrl;
22
+ if (args.path_or_url.startsWith('http://') || args.path_or_url.startsWith('https://')) {
23
+ downloadUrl = args.path_or_url;
24
+ }
25
+ else {
26
+ const filePath = path_1.default.resolve(args.path_or_url);
27
+ if (!fs_1.default.existsSync(filePath)) {
28
+ this.error(`File not found: ${filePath}`);
29
+ }
30
+ const name = path_1.default.basename(filePath);
31
+ this.info(`Uploading ${name}...`);
32
+ const asset = await this.client.assets.getOrUpload({ path: filePath, name });
33
+ downloadUrl = asset.signedDownloadUrl;
34
+ }
35
+ let installOptions;
36
+ if (flags.md5 || flags['launch-mode']) {
37
+ installOptions = {
38
+ md5: flags.md5,
39
+ launchMode: flags['launch-mode'],
40
+ };
41
+ }
42
+ if ((0, instance_client_factory_1.hasActiveSession)(id)) {
43
+ const result = await (0, instance_client_factory_1.sendSessionCommand)(id, 'install-app', [downloadUrl, installOptions]);
44
+ if (flags.json) {
45
+ this.outputJson(result);
46
+ }
47
+ else {
48
+ this.log('App installed');
49
+ }
50
+ return;
51
+ }
52
+ const { client, disconnect } = await (0, instance_client_factory_1.getIosInstanceClient)(this.client, resolvedInstance);
53
+ try {
54
+ const result = await client.installApp(downloadUrl, installOptions);
55
+ if (flags.json) {
56
+ this.outputJson(result);
57
+ }
58
+ else {
59
+ this.log(`App installed${result?.bundleId ? `: ${result.bundleId}` : ''}`);
60
+ }
61
+ }
62
+ finally {
63
+ disconnect();
64
+ }
65
+ });
66
+ }
67
+ }
68
+ IosInstallApp.summary = 'Install an app on a running iOS instance';
69
+ IosInstallApp.description = 'Install an app from a local file path or remote URL onto a running iOS instance. Local files are uploaded to Limrun asset storage automatically before installation.';
70
+ IosInstallApp.examples = [
71
+ '<%= config.bin %> ios install-app ./MyApp.ipa',
72
+ '<%= config.bin %> ios install-app https://example.com/MyApp.ipa --json',
73
+ '<%= config.bin %> ios install-app ./MyApp.ipa --id <instance-ID>',
74
+ '<%= config.bin %> ios install-app ./MyApp.ipa --launch-mode RelaunchIfRunning',
75
+ '<%= config.bin %> ios install-app https://example.com/MyApp.ipa --md5 <hex-digest>',
76
+ ];
77
+ IosInstallApp.args = {
78
+ path_or_url: core_1.Args.string({
79
+ description: 'Local app file path or remote URL to an installable iOS package such as .ipa',
80
+ required: true,
81
+ }),
82
+ };
83
+ IosInstallApp.flags = {
84
+ ...base_command_1.BaseCommand.baseFlags,
85
+ id: core_1.Flags.string({
86
+ description: 'iOS instance ID to install the app on. Defaults to the last created iOS instance.',
87
+ }),
88
+ md5: core_1.Flags.string({
89
+ description: 'Optional MD5 digest to enable server-side install caching for remote URLs.',
90
+ }),
91
+ 'launch-mode': core_1.Flags.string({
92
+ description: 'Launch behavior after installation. Omit to install without launching.',
93
+ options: ['ForegroundIfRunning', 'RelaunchIfRunning'],
94
+ }),
95
+ };
96
+ exports.default = IosInstallApp;
97
+ //# sourceMappingURL=install-app.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"install-app.js","sourceRoot":"","sources":["../../../src/commands/ios/install-app.ts"],"names":[],"mappings":"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"}