lim 0.1.5 → 0.9.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 (333) hide show
  1. package/README.md +836 -0
  2. package/bin/dev.js +16 -0
  3. package/bin/run.js +63 -0
  4. package/dist/base-command.d.ts +51 -0
  5. package/dist/base-command.d.ts.map +1 -0
  6. package/dist/base-command.js +441 -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/ios/app-log.d.ts +20 -0
  89. package/dist/commands/ios/app-log.d.ts.map +1 -0
  90. package/dist/commands/ios/app-log.js +86 -0
  91. package/dist/commands/ios/app-log.js.map +1 -0
  92. package/dist/commands/ios/cp.d.ts +19 -0
  93. package/dist/commands/ios/cp.d.ts.map +1 -0
  94. package/dist/commands/ios/cp.js +64 -0
  95. package/dist/commands/ios/cp.js.map +1 -0
  96. package/dist/commands/ios/create.d.ts +25 -0
  97. package/dist/commands/ios/create.d.ts.map +1 -0
  98. package/dist/commands/ios/create.js +165 -0
  99. package/dist/commands/ios/create.js.map +1 -0
  100. package/dist/commands/ios/delete.d.ts +17 -0
  101. package/dist/commands/ios/delete.d.ts.map +1 -0
  102. package/dist/commands/ios/delete.js +44 -0
  103. package/dist/commands/ios/delete.js.map +1 -0
  104. package/dist/commands/ios/element-tree.d.ts +16 -0
  105. package/dist/commands/ios/element-tree.d.ts.map +1 -0
  106. package/dist/commands/ios/element-tree.js +57 -0
  107. package/dist/commands/ios/element-tree.js.map +1 -0
  108. package/dist/commands/ios/get.d.ts +17 -0
  109. package/dist/commands/ios/get.d.ts.map +1 -0
  110. package/dist/commands/ios/get.js +44 -0
  111. package/dist/commands/ios/get.js.map +1 -0
  112. package/dist/commands/ios/info.d.ts +16 -0
  113. package/dist/commands/ios/info.d.ts.map +1 -0
  114. package/dist/commands/ios/info.js +55 -0
  115. package/dist/commands/ios/info.js.map +1 -0
  116. package/dist/commands/ios/install-app.d.ts +20 -0
  117. package/dist/commands/ios/install-app.d.ts.map +1 -0
  118. package/dist/commands/ios/install-app.js +97 -0
  119. package/dist/commands/ios/install-app.js.map +1 -0
  120. package/dist/commands/ios/launch-app.d.ts +23 -0
  121. package/dist/commands/ios/launch-app.d.ts.map +1 -0
  122. package/dist/commands/ios/launch-app.js +74 -0
  123. package/dist/commands/ios/launch-app.js.map +1 -0
  124. package/dist/commands/ios/list-apps.d.ts +16 -0
  125. package/dist/commands/ios/list-apps.d.ts.map +1 -0
  126. package/dist/commands/ios/list-apps.js +51 -0
  127. package/dist/commands/ios/list-apps.js.map +1 -0
  128. package/dist/commands/ios/list.d.ts +19 -0
  129. package/dist/commands/ios/list.d.ts.map +1 -0
  130. package/dist/commands/ios/list.js +61 -0
  131. package/dist/commands/ios/list.js.map +1 -0
  132. package/dist/commands/ios/lsof.d.ts +16 -0
  133. package/dist/commands/ios/lsof.d.ts.map +1 -0
  134. package/dist/commands/ios/lsof.js +47 -0
  135. package/dist/commands/ios/lsof.js.map +1 -0
  136. package/dist/commands/ios/open-url.d.ts +18 -0
  137. package/dist/commands/ios/open-url.d.ts.map +1 -0
  138. package/dist/commands/ios/open-url.js +51 -0
  139. package/dist/commands/ios/open-url.js.map +1 -0
  140. package/dist/commands/ios/perform.d.ts +18 -0
  141. package/dist/commands/ios/perform.d.ts.map +1 -0
  142. package/dist/commands/ios/perform.js +228 -0
  143. package/dist/commands/ios/perform.js.map +1 -0
  144. package/dist/commands/ios/press-key.d.ts +19 -0
  145. package/dist/commands/ios/press-key.d.ts.map +1 -0
  146. package/dist/commands/ios/press-key.js +52 -0
  147. package/dist/commands/ios/press-key.js.map +1 -0
  148. package/dist/commands/ios/record.d.ts +22 -0
  149. package/dist/commands/ios/record.d.ts.map +1 -0
  150. package/dist/commands/ios/record.js +101 -0
  151. package/dist/commands/ios/record.js.map +1 -0
  152. package/dist/commands/ios/reverse.d.ts +19 -0
  153. package/dist/commands/ios/reverse.d.ts.map +1 -0
  154. package/dist/commands/ios/reverse.js +97 -0
  155. package/dist/commands/ios/reverse.js.map +1 -0
  156. package/dist/commands/ios/screenshot.d.ts +18 -0
  157. package/dist/commands/ios/screenshot.d.ts.map +1 -0
  158. package/dist/commands/ios/screenshot.js +65 -0
  159. package/dist/commands/ios/screenshot.js.map +1 -0
  160. package/dist/commands/ios/scroll.d.ts +19 -0
  161. package/dist/commands/ios/scroll.d.ts.map +1 -0
  162. package/dist/commands/ios/scroll.js +57 -0
  163. package/dist/commands/ios/scroll.js.map +1 -0
  164. package/dist/commands/ios/simctl.d.ts +17 -0
  165. package/dist/commands/ios/simctl.d.ts.map +1 -0
  166. package/dist/commands/ios/simctl.js +72 -0
  167. package/dist/commands/ios/simctl.js.map +1 -0
  168. package/dist/commands/ios/sync.d.ts +23 -0
  169. package/dist/commands/ios/sync.d.ts.map +1 -0
  170. package/dist/commands/ios/sync.js +90 -0
  171. package/dist/commands/ios/sync.js.map +1 -0
  172. package/dist/commands/ios/syslog.d.ts +16 -0
  173. package/dist/commands/ios/syslog.d.ts.map +1 -0
  174. package/dist/commands/ios/syslog.js +62 -0
  175. package/dist/commands/ios/syslog.js.map +1 -0
  176. package/dist/commands/ios/tap-element.d.ts +23 -0
  177. package/dist/commands/ios/tap-element.d.ts.map +1 -0
  178. package/dist/commands/ios/tap-element.js +92 -0
  179. package/dist/commands/ios/tap-element.js.map +1 -0
  180. package/dist/commands/ios/tap.d.ts +25 -0
  181. package/dist/commands/ios/tap.d.ts.map +1 -0
  182. package/dist/commands/ios/tap.js +55 -0
  183. package/dist/commands/ios/tap.js.map +1 -0
  184. package/dist/commands/ios/terminate-app.d.ts +18 -0
  185. package/dist/commands/ios/terminate-app.d.ts.map +1 -0
  186. package/dist/commands/ios/terminate-app.js +49 -0
  187. package/dist/commands/ios/terminate-app.js.map +1 -0
  188. package/dist/commands/ios/toggle-keyboard.d.ts +15 -0
  189. package/dist/commands/ios/toggle-keyboard.d.ts.map +1 -0
  190. package/dist/commands/ios/toggle-keyboard.js +45 -0
  191. package/dist/commands/ios/toggle-keyboard.js.map +1 -0
  192. package/dist/commands/ios/type.d.ts +19 -0
  193. package/dist/commands/ios/type.d.ts.map +1 -0
  194. package/dist/commands/ios/type.js +53 -0
  195. package/dist/commands/ios/type.js.map +1 -0
  196. package/dist/commands/ios/xcodebuild.d.ts +17 -0
  197. package/dist/commands/ios/xcodebuild.d.ts.map +1 -0
  198. package/dist/commands/ios/xcodebuild.js +59 -0
  199. package/dist/commands/ios/xcodebuild.js.map +1 -0
  200. package/dist/commands/ios/xcrun.d.ts +17 -0
  201. package/dist/commands/ios/xcrun.d.ts.map +1 -0
  202. package/dist/commands/ios/xcrun.js +60 -0
  203. package/dist/commands/ios/xcrun.js.map +1 -0
  204. package/dist/commands/login.d.ts +14 -0
  205. package/dist/commands/login.d.ts.map +1 -0
  206. package/dist/commands/login.js +22 -0
  207. package/dist/commands/login.js.map +1 -0
  208. package/dist/commands/logout.d.ts +14 -0
  209. package/dist/commands/logout.d.ts.map +1 -0
  210. package/dist/commands/logout.js +18 -0
  211. package/dist/commands/logout.js.map +1 -0
  212. package/dist/commands/session/start.d.ts +16 -0
  213. package/dist/commands/session/start.d.ts.map +1 -0
  214. package/dist/commands/session/start.js +129 -0
  215. package/dist/commands/session/start.js.map +1 -0
  216. package/dist/commands/session/status.d.ts +14 -0
  217. package/dist/commands/session/status.d.ts.map +1 -0
  218. package/dist/commands/session/status.js +65 -0
  219. package/dist/commands/session/status.js.map +1 -0
  220. package/dist/commands/session/stop.d.ts +18 -0
  221. package/dist/commands/session/stop.d.ts.map +1 -0
  222. package/dist/commands/session/stop.js +76 -0
  223. package/dist/commands/session/stop.js.map +1 -0
  224. package/dist/commands/skills/install.d.ts +18 -0
  225. package/dist/commands/skills/install.d.ts.map +1 -0
  226. package/dist/commands/skills/install.js +473 -0
  227. package/dist/commands/skills/install.js.map +1 -0
  228. package/dist/commands/xcode/attach-simulator.d.ts +18 -0
  229. package/dist/commands/xcode/attach-simulator.d.ts.map +1 -0
  230. package/dist/commands/xcode/attach-simulator.js +55 -0
  231. package/dist/commands/xcode/attach-simulator.js.map +1 -0
  232. package/dist/commands/xcode/build.d.ts +35 -0
  233. package/dist/commands/xcode/build.d.ts.map +1 -0
  234. package/dist/commands/xcode/build.js +192 -0
  235. package/dist/commands/xcode/build.js.map +1 -0
  236. package/dist/commands/xcode/create.d.ts +22 -0
  237. package/dist/commands/xcode/create.d.ts.map +1 -0
  238. package/dist/commands/xcode/create.js +189 -0
  239. package/dist/commands/xcode/create.js.map +1 -0
  240. package/dist/commands/xcode/delete.d.ts +17 -0
  241. package/dist/commands/xcode/delete.d.ts.map +1 -0
  242. package/dist/commands/xcode/delete.js +44 -0
  243. package/dist/commands/xcode/delete.js.map +1 -0
  244. package/dist/commands/xcode/get.d.ts +17 -0
  245. package/dist/commands/xcode/get.d.ts.map +1 -0
  246. package/dist/commands/xcode/get.js +59 -0
  247. package/dist/commands/xcode/get.js.map +1 -0
  248. package/dist/commands/xcode/list.d.ts +18 -0
  249. package/dist/commands/xcode/list.d.ts.map +1 -0
  250. package/dist/commands/xcode/list.js +58 -0
  251. package/dist/commands/xcode/list.js.map +1 -0
  252. package/dist/commands/xcode/sync.d.ts +24 -0
  253. package/dist/commands/xcode/sync.d.ts.map +1 -0
  254. package/dist/commands/xcode/sync.js +93 -0
  255. package/dist/commands/xcode/sync.js.map +1 -0
  256. package/dist/index.d.ts +2 -0
  257. package/dist/index.d.ts.map +1 -0
  258. package/dist/index.js +6 -0
  259. package/dist/index.js.map +1 -0
  260. package/dist/lib/additional-files.d.ts +6 -0
  261. package/dist/lib/additional-files.d.ts.map +1 -0
  262. package/dist/lib/additional-files.js +19 -0
  263. package/dist/lib/additional-files.js.map +1 -0
  264. package/dist/lib/android-selector.d.ts +50 -0
  265. package/dist/lib/android-selector.d.ts.map +1 -0
  266. package/dist/lib/android-selector.js +103 -0
  267. package/dist/lib/android-selector.js.map +1 -0
  268. package/dist/lib/auth.d.ts +2 -0
  269. package/dist/lib/auth.d.ts.map +1 -0
  270. package/dist/lib/auth.js +60 -0
  271. package/dist/lib/auth.js.map +1 -0
  272. package/dist/lib/config.d.ts +65 -0
  273. package/dist/lib/config.d.ts.map +1 -0
  274. package/dist/lib/config.js +290 -0
  275. package/dist/lib/config.js.map +1 -0
  276. package/dist/lib/daemon-client.d.ts +9 -0
  277. package/dist/lib/daemon-client.d.ts.map +1 -0
  278. package/dist/lib/daemon-client.js +81 -0
  279. package/dist/lib/daemon-client.js.map +1 -0
  280. package/dist/lib/daemon.d.ts +41 -0
  281. package/dist/lib/daemon.d.ts.map +1 -0
  282. package/dist/lib/daemon.js +511 -0
  283. package/dist/lib/daemon.js.map +1 -0
  284. package/dist/lib/detox-version.d.ts +12 -0
  285. package/dist/lib/detox-version.d.ts.map +1 -0
  286. package/dist/lib/detox-version.js +30 -0
  287. package/dist/lib/detox-version.js.map +1 -0
  288. package/dist/lib/duration.d.ts +2 -0
  289. package/dist/lib/duration.d.ts.map +1 -0
  290. package/dist/lib/duration.js +37 -0
  291. package/dist/lib/duration.js.map +1 -0
  292. package/dist/lib/formatting.d.ts +3 -0
  293. package/dist/lib/formatting.d.ts.map +1 -0
  294. package/dist/lib/formatting.js +31 -0
  295. package/dist/lib/formatting.js.map +1 -0
  296. package/dist/lib/ignore-patterns.d.ts +2 -0
  297. package/dist/lib/ignore-patterns.d.ts.map +1 -0
  298. package/dist/lib/ignore-patterns.js +18 -0
  299. package/dist/lib/ignore-patterns.js.map +1 -0
  300. package/dist/lib/instance-client-factory.d.ts +29 -0
  301. package/dist/lib/instance-client-factory.d.ts.map +1 -0
  302. package/dist/lib/instance-client-factory.js +87 -0
  303. package/dist/lib/instance-client-factory.js.map +1 -0
  304. package/dist/lib/launch-app-runtime.d.ts +23 -0
  305. package/dist/lib/launch-app-runtime.d.ts.map +1 -0
  306. package/dist/lib/launch-app-runtime.js +58 -0
  307. package/dist/lib/launch-app-runtime.js.map +1 -0
  308. package/dist/lib/remote-skills.d.ts +47 -0
  309. package/dist/lib/remote-skills.d.ts.map +1 -0
  310. package/dist/lib/remote-skills.js +241 -0
  311. package/dist/lib/remote-skills.js.map +1 -0
  312. package/dist/lib/reverse-port-mapping.d.ts +6 -0
  313. package/dist/lib/reverse-port-mapping.d.ts.map +1 -0
  314. package/dist/lib/reverse-port-mapping.js +24 -0
  315. package/dist/lib/reverse-port-mapping.js.map +1 -0
  316. package/dist/lib/skills.d.ts +17 -0
  317. package/dist/lib/skills.d.ts.map +1 -0
  318. package/dist/lib/skills.js +153 -0
  319. package/dist/lib/skills.js.map +1 -0
  320. package/package.json +69 -13
  321. package/.npmignore +0 -2
  322. package/build/lib/index.js +0 -1498
  323. package/build/lib/index.map +0 -1
  324. package/build/lib/utils/courier.js +0 -98
  325. package/build/lib/utils/courier.map +0 -1
  326. package/build/lib/utils/polyfill.js +0 -53
  327. package/build/lib/utils/polyfill.map +0 -1
  328. package/build.sh +0 -9
  329. package/index.js +0 -2
  330. package/lib/index.js +0 -284
  331. package/lib/utils/courier.js +0 -108
  332. package/lib/utils/polyfill.js +0 -42
  333. package/native.js +0 -2
@@ -0,0 +1,58 @@
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 XcodeList extends base_command_1.BaseCommand {
6
+ async run() {
7
+ const { flags } = await this.parse(XcodeList);
8
+ this.setParsedFlags(flags);
9
+ await this.withAuth(async () => {
10
+ const params = {};
11
+ if (flags.state) {
12
+ params.state = flags.state;
13
+ }
14
+ else if (!flags.all) {
15
+ params.state = 'ready';
16
+ }
17
+ if (flags['label-selector'])
18
+ params.labelSelector = flags['label-selector'];
19
+ const instances = await this.client.xcodeInstances.list(params);
20
+ const items = instances.items ?? instances.getPaginatedItems();
21
+ const rows = items.map((i) => [
22
+ i.metadata.id,
23
+ i.metadata.displayName || '',
24
+ i.spec.region,
25
+ i.status.state,
26
+ ]);
27
+ if (flags.json) {
28
+ this.outputJson(items);
29
+ }
30
+ else {
31
+ this.outputTable(['ID', 'Name', 'Region', 'State'], rows);
32
+ }
33
+ });
34
+ }
35
+ }
36
+ XcodeList.summary = 'List Xcode instances';
37
+ XcodeList.description = 'List Xcode sandbox instances in your account. By default only ready sandboxes are shown; use `--all` or `--state` to inspect other lifecycle states.';
38
+ XcodeList.examples = [
39
+ '<%= config.bin %> xcode list',
40
+ '<%= config.bin %> xcode list --all',
41
+ '<%= config.bin %> xcode list --label-selector env=prod',
42
+ ];
43
+ XcodeList.args = {};
44
+ XcodeList.flags = {
45
+ ...base_command_1.BaseCommand.baseFlags,
46
+ state: core_1.Flags.string({
47
+ description: 'Lifecycle state to filter by: unknown, creating, ready, or terminated',
48
+ }),
49
+ 'label-selector': core_1.Flags.string({
50
+ description: 'Comma-separated label filters, for example env=prod,team=mobile',
51
+ }),
52
+ all: core_1.Flags.boolean({
53
+ description: 'Show all states instead of defaulting to ready instances only',
54
+ default: false,
55
+ }),
56
+ };
57
+ exports.default = XcodeList;
58
+ //# sourceMappingURL=list.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list.js","sourceRoot":"","sources":["../../../src/commands/xcode/list.ts"],"names":[],"mappings":";;AAAA,sCAAoC;AACpC,qDAAiD;AAEjD,MAAqB,SAAU,SAAQ,0BAAW;IA0BhD,KAAK,CAAC,GAAG;QACP,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAC9C,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QAE3B,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,IAAI,EAAE;YAC7B,MAAM,MAAM,GAA4B,EAAE,CAAC;YAC3C,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;gBAChB,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;YAC7B,CAAC;iBAAM,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;gBACtB,MAAM,CAAC,KAAK,GAAG,OAAO,CAAC;YACzB,CAAC;YACD,IAAI,KAAK,CAAC,gBAAgB,CAAC;gBAAE,MAAM,CAAC,aAAa,GAAG,KAAK,CAAC,gBAAgB,CAAC,CAAC;YAE5E,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,MAAa,CAAC,CAAC;YACvE,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,IAAI,SAAS,CAAC,iBAAiB,EAAE,CAAC;YAC/D,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC;gBACjC,CAAC,CAAC,QAAQ,CAAC,EAAE;gBACb,CAAC,CAAC,QAAQ,CAAC,WAAW,IAAI,EAAE;gBAC5B,CAAC,CAAC,IAAI,CAAC,MAAM;gBACb,CAAC,CAAC,MAAM,CAAC,KAAK;aACf,CAAC,CAAC;YAEH,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;gBACf,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;YACzB,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,WAAW,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC,CAAC;YAC5D,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;;AArDM,iBAAO,GAAG,sBAAsB,CAAC;AACjC,qBAAW,GAChB,sJAAsJ,CAAC;AAClJ,kBAAQ,GAAG;IAChB,8BAA8B;IAC9B,oCAAoC;IACpC,wDAAwD;CACzD,CAAC;AAEK,cAAI,GAAG,EAAE,CAAC;AAEV,eAAK,GAAG;IACb,GAAG,0BAAW,CAAC,SAAS;IACxB,KAAK,EAAE,YAAK,CAAC,MAAM,CAAC;QAClB,WAAW,EAAE,uEAAuE;KACrF,CAAC;IACF,gBAAgB,EAAE,YAAK,CAAC,MAAM,CAAC;QAC7B,WAAW,EAAE,iEAAiE;KAC/E,CAAC;IACF,GAAG,EAAE,YAAK,CAAC,OAAO,CAAC;QACjB,WAAW,EAAE,+DAA+D;QAC5E,OAAO,EAAE,KAAK;KACf,CAAC;CACH,CAAC;kBAxBiB,SAAS"}
@@ -0,0 +1,24 @@
1
+ import { BaseCommand } from '../../base-command';
2
+ export default class XcodeSync extends BaseCommand {
3
+ static summary: string;
4
+ static description: string;
5
+ static examples: string[];
6
+ static args: {
7
+ path: import("@oclif/core/lib/interfaces").Arg<string | undefined, Record<string, unknown>>;
8
+ };
9
+ static flags: {
10
+ id: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
11
+ watch: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
12
+ install: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
13
+ 'basis-cache-dir': import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
14
+ 'max-patch-bytes': import("@oclif/core/lib/interfaces").OptionFlag<number | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
15
+ ignore: import("@oclif/core/lib/interfaces").OptionFlag<string[] | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
16
+ 'additional-file': import("@oclif/core/lib/interfaces").OptionFlag<string[] | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
17
+ 'api-key': import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
18
+ json: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
19
+ quiet: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
20
+ create: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
21
+ };
22
+ run(): Promise<void>;
23
+ }
24
+ //# sourceMappingURL=sync.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../../src/commands/xcode/sync.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAKjD,MAAM,CAAC,OAAO,OAAO,SAAU,SAAQ,WAAW;IAChD,MAAM,CAAC,OAAO,SAA6D;IAC3E,MAAM,CAAC,WAAW,SACkc;IAEpd,MAAM,CAAC,QAAQ,WAOb;IAEF,MAAM,CAAC,IAAI;;MAKT;IAEF,MAAM,CAAC,KAAK;;;;;;;;;;;;MAgCV;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAyC3B"}
@@ -0,0 +1,93 @@
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 ignore_patterns_1 = require("../../lib/ignore-patterns");
6
+ const duration_1 = require("../../lib/duration");
7
+ const additional_files_1 = require("../../lib/additional-files");
8
+ class XcodeSync extends base_command_1.BaseCommand {
9
+ async run() {
10
+ const { args, flags } = await this.parse(XcodeSync);
11
+ this.setParsedFlags(flags);
12
+ await this.withAuth(async () => {
13
+ const target = await this.resolveXcodeTargetOrCreate(flags.id);
14
+ const id = target.id;
15
+ const syncPath = args.path ?? process.cwd();
16
+ const xcodeClient = await this.resolveXcodeClient(target);
17
+ this.info(`Syncing ${syncPath} to instance ${id}...`);
18
+ const syncStart = Date.now();
19
+ const syncOptions = {
20
+ watch: flags.watch,
21
+ install: flags.install,
22
+ basisCacheDir: flags['basis-cache-dir'],
23
+ maxPatchBytes: flags['max-patch-bytes'],
24
+ ignore: (0, ignore_patterns_1.compileIgnorePatterns)(flags.ignore),
25
+ additionalFiles: (0, additional_files_1.parseAdditionalFileFlags)(flags['additional-file']),
26
+ };
27
+ const result = await xcodeClient.sync(syncPath, syncOptions);
28
+ const syncDuration = (0, duration_1.formatDurationMs)(Date.now() - syncStart);
29
+ this.output(`Sync complete in ${syncDuration}.`);
30
+ if (flags.watch && result.stopWatching) {
31
+ this.output('Watching for changes. Press Ctrl+C to stop.');
32
+ await new Promise((resolve) => {
33
+ const keepAlive = setInterval(() => { }, 1 << 30);
34
+ const shutdown = () => {
35
+ clearInterval(keepAlive);
36
+ result.stopWatching();
37
+ resolve();
38
+ };
39
+ process.on('SIGINT', shutdown);
40
+ process.on('SIGTERM', shutdown);
41
+ });
42
+ }
43
+ });
44
+ }
45
+ }
46
+ XcodeSync.summary = 'Continuously sync local source code to an Xcode sandbox';
47
+ XcodeSync.description = 'Push local source code and project files (or the current working directory if omitted) to a remote Xcode sandbox with optional watch mode. This command is mostly useful for continuous sync workflows with `--watch`; for most one-shot builds, use `xcode build`, which already syncs the project path first. This works with standalone Xcode instances and can also target an iOS instance with `--xcode` enabled or created via `xcode create --ios` when you pass `--id`.';
48
+ XcodeSync.examples = [
49
+ '<%= config.bin %> xcode sync --watch',
50
+ '<%= config.bin %> xcode sync ./MyProject --id <ios-instance-ID> --no-install',
51
+ '<%= config.bin %> xcode build ./MyProject --scheme MyApp',
52
+ '<%= config.bin %> xcode sync ./MyProject --basis-cache-dir ./.limsync-cache --max-patch-bytes 2097152',
53
+ '<%= config.bin %> xcode sync ./MyProject --ignore "\\\\.xcuserdata/" --ignore "^DerivedData/"',
54
+ '<%= config.bin %> xcode sync ./MyProject --additional-file ~/.netrc=~/.netrc',
55
+ ];
56
+ XcodeSync.args = {
57
+ path: core_1.Args.string({
58
+ description: 'Local source code or project path to sync. Defaults to the current working directory.',
59
+ required: false,
60
+ }),
61
+ };
62
+ XcodeSync.flags = {
63
+ ...base_command_1.BaseCommand.baseFlags,
64
+ id: core_1.Flags.string({
65
+ description: 'Xcode instance ID to sync to, or an iOS instance ID with `--xcode` enabled. Defaults to the most recently created Xcode-capable target, creating one if needed.',
66
+ }),
67
+ watch: core_1.Flags.boolean({
68
+ description: 'Keep watching the local source tree and push changes automatically',
69
+ default: false,
70
+ allowNo: true,
71
+ }),
72
+ install: core_1.Flags.boolean({
73
+ description: 'Run install behavior after each sync when the sandbox supports it',
74
+ default: true,
75
+ allowNo: true,
76
+ }),
77
+ 'basis-cache-dir': core_1.Flags.string({
78
+ description: 'Directory to use for the client-side delta sync cache.',
79
+ }),
80
+ 'max-patch-bytes': core_1.Flags.integer({
81
+ description: 'Maximum patch size in bytes before falling back to a full upload.',
82
+ }),
83
+ ignore: core_1.Flags.string({
84
+ description: 'Regular expression to ignore matching relative paths during sync. Repeat for multiple patterns.',
85
+ multiple: true,
86
+ }),
87
+ 'additional-file': core_1.Flags.string({
88
+ description: 'Additional file to sync as localPath=remotePath, for example ~/.netrc=~/.netrc. Repeat for multiple files.',
89
+ multiple: true,
90
+ }),
91
+ };
92
+ exports.default = XcodeSync;
93
+ //# sourceMappingURL=sync.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sync.js","sourceRoot":"","sources":["../../../src/commands/xcode/sync.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export { run } from '@oclif/core';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.run = void 0;
4
+ var core_1 = require("@oclif/core");
5
+ Object.defineProperty(exports, "run", { enumerable: true, get: function () { return core_1.run; } });
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,oCAAkC;AAAzB,2FAAA,GAAG,OAAA"}
@@ -0,0 +1,6 @@
1
+ export type AdditionalFileFlag = {
2
+ localPath: string;
3
+ remotePath: string;
4
+ };
5
+ export declare function parseAdditionalFileFlags(values: string[] | undefined): AdditionalFileFlag[] | undefined;
6
+ //# sourceMappingURL=additional-files.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"additional-files.d.ts","sourceRoot":"","sources":["../../src/lib/additional-files.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,kBAAkB,GAAG;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,SAAS,GAAG,kBAAkB,EAAE,GAAG,SAAS,CAgBvG"}
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parseAdditionalFileFlags = parseAdditionalFileFlags;
4
+ function parseAdditionalFileFlags(values) {
5
+ if (!values || values.length === 0) {
6
+ return undefined;
7
+ }
8
+ return values.map((value) => {
9
+ const separator = value.indexOf('=');
10
+ if (separator <= 0 || separator === value.length - 1) {
11
+ throw new Error(`Invalid --additional-file value "${value}". Expected localPath=remotePath, for example ~/.netrc=~/.netrc`);
12
+ }
13
+ return {
14
+ localPath: value.slice(0, separator),
15
+ remotePath: value.slice(separator + 1),
16
+ };
17
+ });
18
+ }
19
+ //# sourceMappingURL=additional-files.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"additional-files.js","sourceRoot":"","sources":["../../src/lib/additional-files.ts"],"names":[],"mappings":";;AAKA,4DAgBC;AAhBD,SAAgB,wBAAwB,CAAC,MAA4B;IACnE,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACnC,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QAC1B,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACrC,IAAI,SAAS,IAAI,CAAC,IAAI,SAAS,KAAK,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACrD,MAAM,IAAI,KAAK,CACb,oCAAoC,KAAK,iEAAiE,CAC3G,CAAC;QACJ,CAAC;QACD,OAAO;YACL,SAAS,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC;YACpC,UAAU,EAAE,KAAK,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC;SACvC,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,50 @@
1
+ import type { AndroidElementTarget, AndroidSelector } from '@limrun/api';
2
+ type SelectorFlagValues = {
3
+ 'resource-id'?: string;
4
+ text?: string;
5
+ 'content-desc'?: string;
6
+ 'class-name'?: string;
7
+ 'package-name'?: string;
8
+ index?: number;
9
+ clickable?: boolean;
10
+ enabled?: boolean;
11
+ focused?: boolean;
12
+ 'bounds-contains-x'?: number;
13
+ 'bounds-contains-y'?: number;
14
+ };
15
+ type TargetFlagValues = SelectorFlagValues & {
16
+ x?: number;
17
+ y?: number;
18
+ };
19
+ export declare const androidSelectorFlags: {
20
+ 'resource-id': import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
21
+ text: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
22
+ 'content-desc': import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
23
+ 'class-name': import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
24
+ 'package-name': import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
25
+ index: import("@oclif/core/lib/interfaces").OptionFlag<number | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
26
+ clickable: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
27
+ enabled: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
28
+ focused: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
29
+ 'bounds-contains-x': import("@oclif/core/lib/interfaces").OptionFlag<number | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
30
+ 'bounds-contains-y': import("@oclif/core/lib/interfaces").OptionFlag<number | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
31
+ };
32
+ export declare const androidTargetFlags: {
33
+ x: import("@oclif/core/lib/interfaces").OptionFlag<number | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
34
+ y: import("@oclif/core/lib/interfaces").OptionFlag<number | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
35
+ 'resource-id': import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
36
+ text: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
37
+ 'content-desc': import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
38
+ 'class-name': import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
39
+ 'package-name': import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
40
+ index: import("@oclif/core/lib/interfaces").OptionFlag<number | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
41
+ clickable: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
42
+ enabled: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
43
+ focused: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
44
+ 'bounds-contains-x': import("@oclif/core/lib/interfaces").OptionFlag<number | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
45
+ 'bounds-contains-y': import("@oclif/core/lib/interfaces").OptionFlag<number | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
46
+ };
47
+ export declare function buildAndroidSelector(flags: SelectorFlagValues): AndroidSelector | undefined;
48
+ export declare function buildAndroidTarget(flags: TargetFlagValues): AndroidElementTarget | undefined;
49
+ export {};
50
+ //# sourceMappingURL=android-selector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"android-selector.d.ts","sourceRoot":"","sources":["../../src/lib/android-selector.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAEzE,KAAK,kBAAkB,GAAG;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B,CAAC;AAEF,KAAK,gBAAgB,GAAG,kBAAkB,GAAG;IAC3C,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,CAAC,CAAC,EAAE,MAAM,CAAC;CACZ,CAAC;AAEF,eAAO,MAAM,oBAAoB;;;;;;;;;;;;CAmChC,CAAC;AAEF,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;CAQ9B,CAAC;AAEF,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,kBAAkB,GAAG,eAAe,GAAG,SAAS,CA0B3F;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,gBAAgB,GAAG,oBAAoB,GAAG,SAAS,CAmB5F"}
@@ -0,0 +1,103 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.androidTargetFlags = exports.androidSelectorFlags = void 0;
4
+ exports.buildAndroidSelector = buildAndroidSelector;
5
+ exports.buildAndroidTarget = buildAndroidTarget;
6
+ const core_1 = require("@oclif/core");
7
+ exports.androidSelectorFlags = {
8
+ 'resource-id': core_1.Flags.string({
9
+ description: 'Match by `resourceId`, such as com.example:id/submit.',
10
+ }),
11
+ text: core_1.Flags.string({ description: 'Match by visible `text` using an exact match.' }),
12
+ 'content-desc': core_1.Flags.string({
13
+ description: 'Match by `contentDesc` using an exact match.',
14
+ }),
15
+ 'class-name': core_1.Flags.string({
16
+ description: 'Match by `className`, such as android.widget.Button.',
17
+ }),
18
+ 'package-name': core_1.Flags.string({
19
+ description: 'Match by `packageName`, such as com.example.app.',
20
+ }),
21
+ index: core_1.Flags.integer({
22
+ description: 'Match by child `index`.',
23
+ }),
24
+ clickable: core_1.Flags.boolean({
25
+ description: 'Match by `clickable=true` or `clickable=false`.',
26
+ allowNo: true,
27
+ }),
28
+ enabled: core_1.Flags.boolean({
29
+ description: 'Match by `enabled=true` or `enabled=false`.',
30
+ allowNo: true,
31
+ }),
32
+ focused: core_1.Flags.boolean({
33
+ description: 'Match by `focused=true` or `focused=false`.',
34
+ allowNo: true,
35
+ }),
36
+ 'bounds-contains-x': core_1.Flags.integer({
37
+ description: 'Match by `boundsContains.x`. Use together with `--bounds-contains-y`.',
38
+ }),
39
+ 'bounds-contains-y': core_1.Flags.integer({
40
+ description: 'Match by `boundsContains.y`. Use together with `--bounds-contains-x`.',
41
+ }),
42
+ };
43
+ exports.androidTargetFlags = {
44
+ ...exports.androidSelectorFlags,
45
+ x: core_1.Flags.integer({
46
+ description: 'Target a specific X coordinate instead of matching an element selector. Use with `--y`.',
47
+ }),
48
+ y: core_1.Flags.integer({
49
+ description: 'Target a specific Y coordinate instead of matching an element selector. Use with `--x`.',
50
+ }),
51
+ };
52
+ function buildAndroidSelector(flags) {
53
+ const selector = {};
54
+ if (flags['resource-id'])
55
+ selector.resourceId = flags['resource-id'];
56
+ if (flags.text)
57
+ selector.text = flags.text;
58
+ if (flags['content-desc'])
59
+ selector.contentDesc = flags['content-desc'];
60
+ if (flags['class-name'])
61
+ selector.className = flags['class-name'];
62
+ if (flags['package-name'])
63
+ selector.packageName = flags['package-name'];
64
+ if (flags.index !== undefined)
65
+ selector.index = flags.index;
66
+ if (flags.clickable !== undefined)
67
+ selector.clickable = flags.clickable;
68
+ if (flags.enabled !== undefined)
69
+ selector.enabled = flags.enabled;
70
+ if (flags.focused !== undefined)
71
+ selector.focused = flags.focused;
72
+ const hasBoundsX = flags['bounds-contains-x'] !== undefined;
73
+ const hasBoundsY = flags['bounds-contains-y'] !== undefined;
74
+ if (hasBoundsX !== hasBoundsY) {
75
+ throw new Error('Use both --bounds-contains-x and --bounds-contains-y together.');
76
+ }
77
+ if (hasBoundsX && hasBoundsY) {
78
+ selector.boundsContains = {
79
+ x: flags['bounds-contains-x'],
80
+ y: flags['bounds-contains-y'],
81
+ };
82
+ }
83
+ return Object.keys(selector).length > 0 ? selector : undefined;
84
+ }
85
+ function buildAndroidTarget(flags) {
86
+ const selector = buildAndroidSelector(flags);
87
+ const hasX = flags.x !== undefined;
88
+ const hasY = flags.y !== undefined;
89
+ if (hasX !== hasY) {
90
+ throw new Error('Use both --x and --y together.');
91
+ }
92
+ if (selector && (hasX || hasY)) {
93
+ throw new Error('Provide either selector flags or both --x and --y, not both.');
94
+ }
95
+ if (selector) {
96
+ return { selector };
97
+ }
98
+ if (hasX && hasY) {
99
+ return { x: flags.x, y: flags.y };
100
+ }
101
+ return undefined;
102
+ }
103
+ //# sourceMappingURL=android-selector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"android-selector.js","sourceRoot":"","sources":["../../src/lib/android-selector.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function login(consoleEndpoint: string, version: string): Promise<void>;
2
+ //# sourceMappingURL=auth.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/lib/auth.ts"],"names":[],"mappings":"AAOA,wBAAsB,KAAK,CAAC,eAAe,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAsDnF"}
@@ -0,0 +1,60 @@
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
+ exports.login = login;
7
+ const http_1 = __importDefault(require("http"));
8
+ const open_1 = __importDefault(require("open"));
9
+ const config_1 = require("./config");
10
+ const CALLBACK_PORT = 32412;
11
+ const CALLBACK_PATH = '/authn/callback';
12
+ async function login(consoleEndpoint, version) {
13
+ return new Promise((resolve, reject) => {
14
+ const server = http_1.default.createServer((req, res) => {
15
+ // CORS preflight
16
+ if (req.method === 'OPTIONS') {
17
+ res.writeHead(200, {
18
+ 'Access-Control-Allow-Origin': '*',
19
+ 'Access-Control-Allow-Methods': 'GET, POST, PUT, DELETE, OPTIONS',
20
+ 'Access-Control-Allow-Headers': '*',
21
+ 'Access-Control-Max-Age': '86400',
22
+ });
23
+ res.end();
24
+ return;
25
+ }
26
+ const url = new URL(req.url || '/', `http://localhost:${CALLBACK_PORT}`);
27
+ if (url.pathname !== CALLBACK_PATH) {
28
+ res.writeHead(404);
29
+ res.end('Not found');
30
+ return;
31
+ }
32
+ res.setHeader('Access-Control-Allow-Origin', '*');
33
+ const apiKey = url.searchParams.get(config_1.CONFIG_KEYS.apiKey);
34
+ if (!apiKey) {
35
+ res.writeHead(400);
36
+ res.end('missing api-key');
37
+ server.close();
38
+ reject(new Error('Login callback received without api-key'));
39
+ return;
40
+ }
41
+ (0, config_1.writeConfig)({ [config_1.CONFIG_KEYS.apiKey]: apiKey });
42
+ res.writeHead(200);
43
+ res.end('OK');
44
+ server.close(() => {
45
+ resolve();
46
+ });
47
+ });
48
+ server.listen(CALLBACK_PORT, () => {
49
+ const loginUrl = new URL('/authn/login', consoleEndpoint);
50
+ loginUrl.searchParams.set('user-agent', `lim/${version}`);
51
+ (0, open_1.default)(loginUrl.toString()).catch(() => {
52
+ console.log(`Open this URL in your browser to log in:\n${loginUrl.toString()}`);
53
+ });
54
+ });
55
+ server.on('error', (err) => {
56
+ reject(new Error(`Failed to start login server on port ${CALLBACK_PORT}: ${err.message}`));
57
+ });
58
+ });
59
+ }
60
+ //# sourceMappingURL=auth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/lib/auth.ts"],"names":[],"mappings":";;;;;AAOA,sBAsDC;AA7DD,gDAAwB;AACxB,gDAAwB;AACxB,qCAAoD;AAEpD,MAAM,aAAa,GAAG,KAAK,CAAC;AAC5B,MAAM,aAAa,GAAG,iBAAiB,CAAC;AAEjC,KAAK,UAAU,KAAK,CAAC,eAAuB,EAAE,OAAe;IAClE,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,MAAM,GAAG,cAAI,CAAC,YAAY,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;YAC5C,iBAAiB;YACjB,IAAI,GAAG,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;gBAC7B,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE;oBACjB,6BAA6B,EAAE,GAAG;oBAClC,8BAA8B,EAAE,iCAAiC;oBACjE,8BAA8B,EAAE,GAAG;oBACnC,wBAAwB,EAAE,OAAO;iBAClC,CAAC,CAAC;gBACH,GAAG,CAAC,GAAG,EAAE,CAAC;gBACV,OAAO;YACT,CAAC;YAED,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,EAAE,oBAAoB,aAAa,EAAE,CAAC,CAAC;YACzE,IAAI,GAAG,CAAC,QAAQ,KAAK,aAAa,EAAE,CAAC;gBACnC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;gBACnB,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;gBACrB,OAAO;YACT,CAAC;YAED,GAAG,CAAC,SAAS,CAAC,6BAA6B,EAAE,GAAG,CAAC,CAAC;YAElD,MAAM,MAAM,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,oBAAW,CAAC,MAAM,CAAC,CAAC;YACxD,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;gBACnB,GAAG,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;gBAC3B,MAAM,CAAC,KAAK,EAAE,CAAC;gBACf,MAAM,CAAC,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC,CAAC;gBAC7D,OAAO;YACT,CAAC;YAED,IAAA,oBAAW,EAAC,EAAE,CAAC,oBAAW,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;YAC9C,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;YACnB,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAEd,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE;gBAChB,OAAO,EAAE,CAAC;YACZ,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,MAAM,CAAC,aAAa,EAAE,GAAG,EAAE;YAChC,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,cAAc,EAAE,eAAe,CAAC,CAAC;YAC1D,QAAQ,CAAC,YAAY,CAAC,GAAG,CAAC,YAAY,EAAE,OAAO,OAAO,EAAE,CAAC,CAAC;YAC1D,IAAA,cAAI,EAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE;gBACnC,OAAO,CAAC,GAAG,CAAC,6CAA6C,QAAQ,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;YAClF,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;YACzB,MAAM,CAAC,IAAI,KAAK,CAAC,wCAAwC,aAAa,KAAK,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QAC7F,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,65 @@
1
+ import 'dotenv/config';
2
+ import { type AndroidInstance } from '@limrun/api/resources/android-instances';
3
+ import { type IosInstance } from '@limrun/api/resources/ios-instances';
4
+ import { type XcodeInstance } from '@limrun/api/resources/xcode-instances';
5
+ export declare const CONFIG_KEYS: {
6
+ readonly apiKey: "api-key";
7
+ readonly apiEndpoint: "api-endpoint";
8
+ readonly consoleEndpoint: "console-endpoint";
9
+ };
10
+ export interface LimConfig {
11
+ apiKey: string;
12
+ apiEndpoint: string;
13
+ consoleEndpoint: string;
14
+ }
15
+ export declare function readConfig(): LimConfig;
16
+ export declare function writeConfig(partial: Partial<Record<string, string>>): void;
17
+ export declare function clearApiKey(): void;
18
+ export interface LastAndroidInstance {
19
+ id: string;
20
+ type: 'android';
21
+ metadata?: AndroidInstance.Metadata;
22
+ spec?: AndroidInstance.Spec;
23
+ status?: AndroidInstance.Status;
24
+ apiUrl?: AndroidInstance.Status['apiUrl'];
25
+ token?: AndroidInstance.Status['token'];
26
+ adbWebSocketUrl?: AndroidInstance.Status['adbWebSocketUrl'];
27
+ endpointWebSocketUrl?: AndroidInstance.Status['endpointWebSocketUrl'];
28
+ mcpUrl?: AndroidInstance.Status['mcpUrl'];
29
+ signedStreamUrl?: AndroidInstance.Status['signedStreamUrl'];
30
+ targetHttpPortUrlPrefix?: AndroidInstance.Status['targetHttpPortUrlPrefix'];
31
+ }
32
+ export interface LastIosInstance {
33
+ id: string;
34
+ type: 'ios';
35
+ metadata?: IosInstance.Metadata;
36
+ spec?: IosInstance.Spec;
37
+ status?: IosInstance.Status;
38
+ apiUrl?: IosInstance.Status['apiUrl'];
39
+ token?: IosInstance.Status['token'];
40
+ endpointWebSocketUrl?: IosInstance.Status['endpointWebSocketUrl'];
41
+ mcpUrl?: IosInstance.Status['mcpUrl'];
42
+ signedStreamUrl?: IosInstance.Status['signedStreamUrl'];
43
+ targetHttpPortUrlPrefix?: IosInstance.Status['targetHttpPortUrlPrefix'];
44
+ sandboxXcodeUrl?: NonNullable<NonNullable<IosInstance.Status['sandbox']>['xcode']>['url'];
45
+ }
46
+ export interface LastXcodeInstance {
47
+ id: string;
48
+ type: 'xcode';
49
+ metadata?: XcodeInstance.Metadata;
50
+ spec?: XcodeInstance.Spec;
51
+ status?: XcodeInstance.Status;
52
+ apiUrl?: XcodeInstance.Status['apiUrl'];
53
+ token?: XcodeInstance.Status['token'];
54
+ }
55
+ export type InstanceInput = AndroidInstance | IosInstance | XcodeInstance;
56
+ export declare function registerCreatedInstance(instanceOrId: InstanceInput, relatedTypes?: Array<'xcode'>): void;
57
+ export declare function loadLastAndroidInstance(): LastAndroidInstance | null;
58
+ export declare function loadLastIosInstance(): LastIosInstance | null;
59
+ export declare function loadLastXcodeInstance(): LastIosInstance | LastXcodeInstance | null;
60
+ export declare function clearLastInstanceId(instanceId: string): void;
61
+ export declare function saveInstanceCache(instanceId: string, data: Partial<LastAndroidInstance> | Partial<LastIosInstance> | Partial<LastXcodeInstance>): void;
62
+ export declare function loadAndroidInstanceCache(instanceId: string): LastAndroidInstance | null;
63
+ export declare function loadIosInstanceCache(instanceId: string): LastIosInstance | null;
64
+ export declare function loadXcodeInstanceCache(instanceId: string): LastXcodeInstance | null;
65
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"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"}