nativescript 8.9.0-dev.1 → 8.9.0-dev.2

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 (404) hide show
  1. package/config/test-deps-versions-generated.json +1 -1
  2. package/lib/.d.ts +1 -0
  3. package/lib/android-tools-info.js +32 -9
  4. package/lib/base-package-manager.js +71 -47
  5. package/lib/bootstrap.js +6 -1
  6. package/lib/bun-package-manager.js +104 -65
  7. package/lib/color.js +5 -2
  8. package/lib/commands/add-platform.js +31 -14
  9. package/lib/commands/apple-login.js +30 -18
  10. package/lib/commands/appstore-list.js +46 -34
  11. package/lib/commands/appstore-upload.js +68 -52
  12. package/lib/commands/build.js +90 -57
  13. package/lib/commands/clean.js +197 -161
  14. package/lib/commands/command-base.js +28 -14
  15. package/lib/commands/config.js +71 -48
  16. package/lib/commands/create-project.js +235 -210
  17. package/lib/commands/debug.js +93 -66
  18. package/lib/commands/deploy.js +47 -30
  19. package/lib/commands/embedding/embed.js +59 -33
  20. package/lib/commands/extensibility/install-extension.js +17 -5
  21. package/lib/commands/extensibility/list-extensions.js +25 -13
  22. package/lib/commands/extensibility/uninstall-extension.js +16 -4
  23. package/lib/commands/fonts.js +42 -30
  24. package/lib/commands/generate-assets.js +29 -13
  25. package/lib/commands/generate-help.js +14 -2
  26. package/lib/commands/generate.js +70 -12
  27. package/lib/commands/info.js +14 -2
  28. package/lib/commands/install.js +50 -34
  29. package/lib/commands/list-platforms.js +26 -14
  30. package/lib/commands/migrate.js +27 -15
  31. package/lib/commands/native-add.js +51 -23
  32. package/lib/commands/platform-clean.js +33 -19
  33. package/lib/commands/plugin/add-plugin.js +26 -12
  34. package/lib/commands/plugin/build-plugin.js +45 -31
  35. package/lib/commands/plugin/create-plugin.js +138 -110
  36. package/lib/commands/plugin/list-plugins.js +34 -22
  37. package/lib/commands/plugin/remove-plugin.js +35 -20
  38. package/lib/commands/plugin/update-plugin.js +34 -20
  39. package/lib/commands/post-install.js +39 -20
  40. package/lib/commands/prepare.js +39 -22
  41. package/lib/commands/preview.js +64 -49
  42. package/lib/commands/remove-platform.js +19 -7
  43. package/lib/commands/resources/resources-update.js +28 -13
  44. package/lib/commands/run.js +77 -55
  45. package/lib/commands/setup.js +1 -0
  46. package/lib/commands/start.js +20 -6
  47. package/lib/commands/test-init.js +138 -123
  48. package/lib/commands/test.js +97 -67
  49. package/lib/commands/typings.js +143 -126
  50. package/lib/commands/update-platform.js +40 -22
  51. package/lib/commands/update.js +45 -30
  52. package/lib/commands/widget.js +767 -0
  53. package/lib/common/bootstrap.js +1 -0
  54. package/lib/common/child-process.js +75 -53
  55. package/lib/common/codeGeneration/code-entity.js +2 -1
  56. package/lib/common/codeGeneration/code-printer.js +2 -1
  57. package/lib/common/command-params.js +19 -7
  58. package/lib/common/commands/analytics.js +43 -27
  59. package/lib/common/commands/autocompletion.js +59 -39
  60. package/lib/common/commands/device/device-log-stream.js +24 -12
  61. package/lib/common/commands/device/get-file.js +35 -22
  62. package/lib/common/commands/device/list-applications.js +24 -12
  63. package/lib/common/commands/device/list-devices.js +90 -72
  64. package/lib/common/commands/device/list-files.js +36 -23
  65. package/lib/common/commands/device/put-file.js +35 -22
  66. package/lib/common/commands/device/run-application.js +26 -12
  67. package/lib/common/commands/device/stop-application.js +23 -11
  68. package/lib/common/commands/device/uninstall-application.js +18 -6
  69. package/lib/common/commands/doctor.js +3 -2
  70. package/lib/common/commands/generate-messages.js +29 -17
  71. package/lib/common/commands/help.js +34 -20
  72. package/lib/common/commands/package-manager-get.js +18 -6
  73. package/lib/common/commands/package-manager-set.js +21 -9
  74. package/lib/common/commands/post-install.js +14 -2
  75. package/lib/common/commands/preuninstall.js +48 -24
  76. package/lib/common/commands/proxy/proxy-base.js +23 -8
  77. package/lib/common/commands/proxy/proxy-clear.js +16 -4
  78. package/lib/common/commands/proxy/proxy-get.js +15 -3
  79. package/lib/common/commands/proxy/proxy-set.js +101 -87
  80. package/lib/common/common-lib.js +1 -0
  81. package/lib/common/constants.js +22 -11
  82. package/lib/common/decorators.js +70 -10
  83. package/lib/common/dispatchers.js +106 -80
  84. package/lib/common/errors.js +116 -91
  85. package/lib/common/file-system.js +141 -108
  86. package/lib/common/header.js +5 -1
  87. package/lib/common/helpers.js +267 -152
  88. package/lib/common/host-info.js +54 -37
  89. package/lib/common/http-client.js +128 -93
  90. package/lib/common/logger/appenders/cli-appender.js +6 -1
  91. package/lib/common/logger/appenders/emit-appender.js +6 -1
  92. package/lib/common/logger/layouts/cli-layout.js +3 -1
  93. package/lib/common/logger/logger.js +9 -4
  94. package/lib/common/messages/messages.js +6 -0
  95. package/lib/common/mobile/android/android-application-manager.js +162 -122
  96. package/lib/common/mobile/android/android-debug-bridge-result-handler.js +2 -1
  97. package/lib/common/mobile/android/android-debug-bridge.js +118 -87
  98. package/lib/common/mobile/android/android-device-file-system.js +135 -98
  99. package/lib/common/mobile/android/android-device-hash-service.js +78 -50
  100. package/lib/common/mobile/android/android-device.js +93 -68
  101. package/lib/common/mobile/android/android-emulator-services.js +131 -105
  102. package/lib/common/mobile/android/android-ini-file-parser.js +9 -0
  103. package/lib/common/mobile/android/android-log-filter.js +5 -1
  104. package/lib/common/mobile/android/android-virtual-device-service.js +123 -76
  105. package/lib/common/mobile/android/device-android-debug-bridge.js +30 -13
  106. package/lib/common/mobile/android/genymotion/genymotion-service.js +123 -91
  107. package/lib/common/mobile/android/genymotion/virtualbox-service.js +92 -64
  108. package/lib/common/mobile/android/logcat-helper.js +140 -108
  109. package/lib/common/mobile/application-manager-base.js +113 -84
  110. package/lib/common/mobile/device-emitter.js +4 -0
  111. package/lib/common/mobile/device-log-emitter.js +1 -0
  112. package/lib/common/mobile/device-log-provider-base.js +19 -7
  113. package/lib/common/mobile/device-log-provider.js +23 -0
  114. package/lib/common/mobile/device-platforms-constants.js +1 -0
  115. package/lib/common/mobile/emulator-helper.js +3 -0
  116. package/lib/common/mobile/ios/device/ios-application-manager.js +111 -79
  117. package/lib/common/mobile/ios/device/ios-device-file-system.js +106 -78
  118. package/lib/common/mobile/ios/device/ios-device-operations.js +146 -105
  119. package/lib/common/mobile/ios/device/ios-device.js +40 -20
  120. package/lib/common/mobile/ios/ios-device-base.js +82 -58
  121. package/lib/common/mobile/ios/ios-device-product-name-mapper.js +2 -0
  122. package/lib/common/mobile/ios/ios-log-filter.js +1 -0
  123. package/lib/common/mobile/ios/simulator/ios-emulator-services.js +96 -63
  124. package/lib/common/mobile/ios/simulator/ios-sim-resolver.js +2 -1
  125. package/lib/common/mobile/ios/simulator/ios-simulator-application-manager.js +95 -60
  126. package/lib/common/mobile/ios/simulator/ios-simulator-device.js +48 -27
  127. package/lib/common/mobile/ios/simulator/ios-simulator-file-system.js +63 -37
  128. package/lib/common/mobile/ios/simulator/ios-simulator-log-provider.js +36 -24
  129. package/lib/common/mobile/local-to-device-path-data-factory.js +1 -0
  130. package/lib/common/mobile/log-filter.js +2 -0
  131. package/lib/common/mobile/logging-levels.js +1 -0
  132. package/lib/common/mobile/mobile-core/android-device-discovery.js +64 -43
  133. package/lib/common/mobile/mobile-core/android-emulator-discovery.js +35 -21
  134. package/lib/common/mobile/mobile-core/android-process-service.js +214 -143
  135. package/lib/common/mobile/mobile-core/device-discovery.js +14 -2
  136. package/lib/common/mobile/mobile-core/devices-service.js +505 -386
  137. package/lib/common/mobile/mobile-core/ios-device-discovery.js +37 -24
  138. package/lib/common/mobile/mobile-core/ios-simulator-discovery.js +65 -47
  139. package/lib/common/mobile/mobile-helper.js +27 -15
  140. package/lib/common/mobile/wp8/wp8-emulator-services.js +53 -25
  141. package/lib/common/opener.js +3 -2
  142. package/lib/common/os-info.js +1 -0
  143. package/lib/common/plist-parser.js +1 -0
  144. package/lib/common/project-helper.js +1 -0
  145. package/lib/common/prompter.js +114 -91
  146. package/lib/common/queue.js +21 -9
  147. package/lib/common/resource-loader.js +1 -0
  148. package/lib/common/services/auto-completion-service.js +65 -40
  149. package/lib/common/services/cancellation.js +29 -17
  150. package/lib/common/services/commands-service.js +180 -146
  151. package/lib/common/services/help-service.js +166 -133
  152. package/lib/common/services/hooks-service.js +121 -93
  153. package/lib/common/services/ios-notification-service.js +35 -21
  154. package/lib/common/services/json-file-settings-service.js +77 -52
  155. package/lib/common/services/lock-service.js +58 -35
  156. package/lib/common/services/message-contract-generator.js +47 -35
  157. package/lib/common/services/messages-service.js +1 -0
  158. package/lib/common/services/micro-templating-service.js +21 -4
  159. package/lib/common/services/net-service.js +110 -90
  160. package/lib/common/services/project-files-manager.js +28 -10
  161. package/lib/common/services/project-files-provider-base.js +1 -0
  162. package/lib/common/services/proxy-service.js +25 -13
  163. package/lib/common/services/qr.js +25 -13
  164. package/lib/common/services/settings-service.js +2 -1
  165. package/lib/common/services/xcode-select-service.js +36 -20
  166. package/lib/common/utils.js +3 -2
  167. package/lib/common/validators/project-name-validator.js +2 -1
  168. package/lib/common/validators/validation-result.js +2 -1
  169. package/lib/common/verify-node-version.js +11 -3
  170. package/lib/common/yok.js +69 -35
  171. package/lib/config.js +72 -36
  172. package/lib/constants-provider.js +1 -0
  173. package/lib/constants.js +78 -25
  174. package/lib/controllers/build-controller.js +100 -82
  175. package/lib/controllers/debug-controller.js +133 -107
  176. package/lib/controllers/deploy-controller.js +24 -15
  177. package/lib/controllers/migrate-controller.js +884 -723
  178. package/lib/controllers/platform-controller.js +94 -71
  179. package/lib/controllers/prepare-controller.js +274 -232
  180. package/lib/controllers/run-controller.js +427 -397
  181. package/lib/controllers/update-controller-base.js +30 -16
  182. package/lib/controllers/update-controller.js +130 -94
  183. package/lib/data/build-data.js +1 -0
  184. package/lib/data/controller-data-base.js +1 -0
  185. package/lib/data/debug-data.js +1 -0
  186. package/lib/data/platform-data.js +1 -0
  187. package/lib/data/prepare-data.js +2 -4
  188. package/lib/data/run-data.js +1 -0
  189. package/lib/definitions/project.d.ts +26 -0
  190. package/lib/detached-processes/cleanup-js-subprocess.js +20 -5
  191. package/lib/detached-processes/cleanup-process.js +43 -30
  192. package/lib/detached-processes/file-log-service.js +2 -1
  193. package/lib/device-path-provider.js +35 -23
  194. package/lib/device-sockets/ios/app-debug-socket-proxy-factory.js +171 -149
  195. package/lib/device-sockets/ios/notification.js +4 -1
  196. package/lib/device-sockets/ios/socket-request-executor.js +42 -24
  197. package/lib/helpers/android-bundle-validator-helper.js +3 -2
  198. package/lib/helpers/deploy-command-helper.js +50 -44
  199. package/lib/helpers/key-command-helper.js +17 -6
  200. package/lib/helpers/livesync-command-helper.js +155 -137
  201. package/lib/helpers/network-connectivity-validator.js +18 -6
  202. package/lib/helpers/options-track-helper.js +19 -7
  203. package/lib/helpers/package-path-helper.js +1 -0
  204. package/lib/helpers/platform-command-helper.js +127 -101
  205. package/lib/helpers/version-validator-helper.js +1 -0
  206. package/lib/key-commands/bootstrap.js +3 -2
  207. package/lib/key-commands/index.js +205 -154
  208. package/lib/nativescript-cli-lib-bootstrap.js +4 -0
  209. package/lib/nativescript-cli-lib.js +1 -0
  210. package/lib/nativescript-cli.js +24 -6
  211. package/lib/node/pbxproj-dom-xcode.js +1 -0
  212. package/lib/node/xcode.js +1 -0
  213. package/lib/node-package-manager.js +114 -81
  214. package/lib/options.js +156 -122
  215. package/lib/package-installation-manager.js +172 -130
  216. package/lib/package-manager.js +88 -63
  217. package/lib/platform-command-param.js +16 -4
  218. package/lib/pnpm-package-manager.js +81 -59
  219. package/lib/project-data.js +13 -1
  220. package/lib/providers/project-files-provider.js +2 -1
  221. package/lib/resolvers/livesync-service-resolver.js +1 -0
  222. package/lib/services/analytics/analytics-broker-process.js +32 -19
  223. package/lib/services/analytics/analytics-broker.js +31 -17
  224. package/lib/services/analytics/analytics-service.js +210 -170
  225. package/lib/services/analytics/google-analytics-provider.js +59 -43
  226. package/lib/services/analytics-settings-service.js +37 -15
  227. package/lib/services/android/android-bundle-tool-service.js +61 -43
  228. package/lib/services/android/gradle-build-args-service.js +23 -9
  229. package/lib/services/android/gradle-build-service.js +36 -22
  230. package/lib/services/android/gradle-command-service.js +36 -22
  231. package/lib/services/android-device-debug-service.js +123 -90
  232. package/lib/services/android-plugin-build-service.js +260 -205
  233. package/lib/services/android-project-service.js +241 -129
  234. package/lib/services/android-resources-migration-service.js +71 -51
  235. package/lib/services/apple-portal/apple-portal-application-service.js +64 -46
  236. package/lib/services/apple-portal/apple-portal-cookie-service.js +1 -0
  237. package/lib/services/apple-portal/apple-portal-session-service.js +218 -197
  238. package/lib/services/apple-portal/srp/srp-wrapper.js +61 -43
  239. package/lib/services/assets-generation/assets-generation-service.js +128 -103
  240. package/lib/services/build-artifacts-service.js +22 -10
  241. package/lib/services/build-data-service.js +1 -0
  242. package/lib/services/build-info-file-service.js +36 -20
  243. package/lib/services/cleanup-service.js +81 -48
  244. package/lib/services/cocoapods-platform-manager.js +9 -0
  245. package/lib/services/cocoapods-service.js +153 -112
  246. package/lib/services/debug-data-service.js +1 -0
  247. package/lib/services/debug-service-base.js +7 -0
  248. package/lib/services/device/device-install-app-service.js +72 -54
  249. package/lib/services/doctor-service.js +135 -101
  250. package/lib/services/extensibility-service.js +108 -81
  251. package/lib/services/files-hash-service.js +44 -26
  252. package/lib/services/hmr-status-service.js +3 -1
  253. package/lib/services/info-service.js +1 -0
  254. package/lib/services/initialize-service.js +54 -37
  255. package/lib/services/ios/export-options-plist-service.js +55 -38
  256. package/lib/services/ios/ios-signing-service.js +191 -168
  257. package/lib/services/ios/spm-service.js +70 -46
  258. package/lib/services/ios/xcodebuild-args-service.js +103 -77
  259. package/lib/services/ios/xcodebuild-command-service.js +26 -14
  260. package/lib/services/ios/xcodebuild-service.js +72 -52
  261. package/lib/services/ios-debugger-port-service.js +38 -24
  262. package/lib/services/ios-device-debug-service.js +103 -75
  263. package/lib/services/ios-entitlements-service.js +43 -31
  264. package/lib/services/ios-extensions-service.js +30 -18
  265. package/lib/services/ios-log-filter.js +20 -0
  266. package/lib/services/ios-native-target-service.js +6 -4
  267. package/lib/services/ios-project-service.js +605 -437
  268. package/lib/services/ios-provision-service.js +132 -108
  269. package/lib/services/ios-watch-app-service.js +33 -21
  270. package/lib/services/ip-service.js +55 -38
  271. package/lib/services/itmstransporter-service.js +153 -129
  272. package/lib/services/karma-execution.js +2 -0
  273. package/lib/services/livesync/android-device-livesync-service-base.js +49 -31
  274. package/lib/services/livesync/android-device-livesync-service.js +151 -120
  275. package/lib/services/livesync/android-device-livesync-sockets-service.js +155 -121
  276. package/lib/services/livesync/android-livesync-service.js +36 -14
  277. package/lib/services/livesync/android-livesync-tool.js +117 -90
  278. package/lib/services/livesync/device-livesync-service-base.js +30 -15
  279. package/lib/services/livesync/ios-device-livesync-service.js +150 -114
  280. package/lib/services/livesync/ios-livesync-service.js +60 -42
  281. package/lib/services/livesync/livesync-socket.js +1 -0
  282. package/lib/services/livesync/platform-livesync-service-base.js +124 -94
  283. package/lib/services/livesync-process-data-service.js +1 -0
  284. package/lib/services/log-parser-service.js +2 -1
  285. package/lib/services/log-source-map-service.js +56 -30
  286. package/lib/services/marking-mode-service.js +33 -17
  287. package/lib/services/metadata-filtering-service.js +1 -0
  288. package/lib/services/npm-config-service.js +5 -1
  289. package/lib/services/pacote-service.js +71 -49
  290. package/lib/services/performance-service.js +4 -2
  291. package/lib/services/platform/add-platform-service.js +119 -51
  292. package/lib/services/platform/platform-validation-service.js +34 -22
  293. package/lib/services/platform/prepare-native-platform-service.js +65 -49
  294. package/lib/services/platform-environment-requirements.js +43 -27
  295. package/lib/services/platform-project-service-base.js +1 -0
  296. package/lib/services/platforms-data-service.js +1 -0
  297. package/lib/services/plugins-service.js +168 -125
  298. package/lib/services/prepare-data-service.js +1 -0
  299. package/lib/services/project-backup-service.js +5 -1
  300. package/lib/services/project-changes-service.js +152 -124
  301. package/lib/services/project-cleanup-service.js +79 -64
  302. package/lib/services/project-config-service.js +111 -73
  303. package/lib/services/project-data-service.js +154 -108
  304. package/lib/services/project-name-service.js +44 -28
  305. package/lib/services/project-service.js +113 -84
  306. package/lib/services/project-templates-service.js +68 -52
  307. package/lib/services/qr-code-terminal-service.js +1 -0
  308. package/lib/services/require-service.js +1 -0
  309. package/lib/services/start-service.js +60 -41
  310. package/lib/services/temp-service.js +22 -8
  311. package/lib/services/terminal-spinner-service.js +28 -15
  312. package/lib/services/test-execution-service.js +79 -59
  313. package/lib/services/test-initialization-service.js +6 -2
  314. package/lib/services/timeline-profiler-service.js +2 -1
  315. package/lib/services/user-settings-service.js +1 -0
  316. package/lib/services/versions-service.js +140 -119
  317. package/lib/services/watch-ignore-list-service.js +1 -0
  318. package/lib/services/webpack/webpack-compiler-service.js +279 -215
  319. package/lib/services/xcconfig-service.js +21 -8
  320. package/lib/services/xcproj-service.js +1 -0
  321. package/lib/shared-event-bus.js +6 -0
  322. package/lib/sys-info.js +63 -45
  323. package/lib/tools/config-manipulation/config-transformer.js +21 -0
  324. package/lib/tools/node-modules/node-modules-builder.js +28 -16
  325. package/lib/tools/node-modules/node-modules-dependencies-builder.js +6 -0
  326. package/lib/yarn-package-manager.js +79 -59
  327. package/lib/yarn2-package-manager.js +82 -60
  328. package/node_modules/@npmcli/move-file/LICENSE.md +22 -0
  329. package/node_modules/@npmcli/move-file/README.md +69 -0
  330. package/node_modules/@npmcli/move-file/lib/index.js +185 -0
  331. package/node_modules/@npmcli/move-file/node_modules/mkdirp/LICENSE +21 -0
  332. package/node_modules/@npmcli/move-file/node_modules/mkdirp/bin/cmd.js +68 -0
  333. package/node_modules/@npmcli/move-file/node_modules/mkdirp/index.js +31 -0
  334. package/node_modules/@npmcli/move-file/node_modules/mkdirp/lib/find-made.js +29 -0
  335. package/node_modules/@npmcli/move-file/node_modules/mkdirp/lib/mkdirp-manual.js +64 -0
  336. package/node_modules/@npmcli/move-file/node_modules/mkdirp/lib/mkdirp-native.js +39 -0
  337. package/node_modules/@npmcli/move-file/node_modules/mkdirp/lib/opts-arg.js +23 -0
  338. package/node_modules/@npmcli/move-file/node_modules/mkdirp/lib/path-arg.js +29 -0
  339. package/node_modules/@npmcli/move-file/node_modules/mkdirp/lib/use-native.js +10 -0
  340. package/node_modules/@npmcli/move-file/node_modules/mkdirp/package.json +44 -0
  341. package/node_modules/@npmcli/move-file/node_modules/mkdirp/readme.markdown +266 -0
  342. package/node_modules/@npmcli/move-file/package.json +47 -0
  343. package/node_modules/balanced-match/.github/FUNDING.yml +2 -0
  344. package/node_modules/balanced-match/LICENSE.md +21 -0
  345. package/node_modules/balanced-match/README.md +97 -0
  346. package/node_modules/balanced-match/index.js +62 -0
  347. package/node_modules/balanced-match/package.json +48 -0
  348. package/node_modules/concat-map/.travis.yml +4 -0
  349. package/node_modules/concat-map/LICENSE +18 -0
  350. package/node_modules/concat-map/README.markdown +62 -0
  351. package/node_modules/concat-map/example/map.js +6 -0
  352. package/node_modules/concat-map/index.js +13 -0
  353. package/node_modules/concat-map/package.json +43 -0
  354. package/node_modules/concat-map/test/map.js +39 -0
  355. package/node_modules/fs.realpath/LICENSE +43 -0
  356. package/node_modules/fs.realpath/README.md +33 -0
  357. package/node_modules/fs.realpath/index.js +66 -0
  358. package/node_modules/fs.realpath/old.js +303 -0
  359. package/node_modules/fs.realpath/package.json +26 -0
  360. package/node_modules/inflight/LICENSE +15 -0
  361. package/node_modules/inflight/README.md +37 -0
  362. package/node_modules/inflight/inflight.js +54 -0
  363. package/node_modules/inflight/package.json +29 -0
  364. package/node_modules/inherits/LICENSE +16 -0
  365. package/node_modules/inherits/README.md +42 -0
  366. package/node_modules/inherits/inherits.js +9 -0
  367. package/node_modules/inherits/inherits_browser.js +27 -0
  368. package/node_modules/inherits/package.json +29 -0
  369. package/node_modules/once/LICENSE +15 -0
  370. package/node_modules/once/README.md +79 -0
  371. package/node_modules/once/once.js +42 -0
  372. package/node_modules/once/package.json +33 -0
  373. package/node_modules/path-is-absolute/index.js +20 -0
  374. package/node_modules/path-is-absolute/license +21 -0
  375. package/node_modules/path-is-absolute/package.json +43 -0
  376. package/node_modules/path-is-absolute/readme.md +59 -0
  377. package/node_modules/rimraf/LICENSE +15 -0
  378. package/node_modules/rimraf/README.md +101 -0
  379. package/node_modules/rimraf/bin.js +68 -0
  380. package/node_modules/rimraf/node_modules/brace-expansion/LICENSE +21 -0
  381. package/node_modules/rimraf/node_modules/brace-expansion/README.md +129 -0
  382. package/node_modules/rimraf/node_modules/brace-expansion/index.js +201 -0
  383. package/node_modules/rimraf/node_modules/brace-expansion/package.json +47 -0
  384. package/node_modules/rimraf/node_modules/glob/LICENSE +21 -0
  385. package/node_modules/rimraf/node_modules/glob/README.md +378 -0
  386. package/node_modules/rimraf/node_modules/glob/common.js +238 -0
  387. package/node_modules/rimraf/node_modules/glob/glob.js +790 -0
  388. package/node_modules/rimraf/node_modules/glob/package.json +55 -0
  389. package/node_modules/rimraf/node_modules/glob/sync.js +486 -0
  390. package/node_modules/rimraf/node_modules/minimatch/LICENSE +15 -0
  391. package/node_modules/rimraf/node_modules/minimatch/README.md +230 -0
  392. package/node_modules/rimraf/node_modules/minimatch/minimatch.js +947 -0
  393. package/node_modules/rimraf/node_modules/minimatch/package.json +33 -0
  394. package/node_modules/rimraf/package.json +32 -0
  395. package/node_modules/rimraf/rimraf.js +360 -0
  396. package/node_modules/stringify-package/LICENSE +13 -0
  397. package/node_modules/stringify-package/README.md +55 -0
  398. package/node_modules/stringify-package/index.js +18 -0
  399. package/node_modules/stringify-package/package.json +38 -0
  400. package/node_modules/wrappy/LICENSE +15 -0
  401. package/node_modules/wrappy/README.md +36 -0
  402. package/node_modules/wrappy/package.json +29 -0
  403. package/node_modules/wrappy/wrappy.js +33 -0
  404. package/package.json +79 -64
@@ -5,6 +5,15 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
5
5
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
6
  return c > 3 && r && Object.defineProperty(target, key, r), r;
7
7
  };
8
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
9
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
10
+ return new (P || (P = Promise))(function (resolve, reject) {
11
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
12
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
13
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
14
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
15
+ });
16
+ };
8
17
  Object.defineProperty(exports, "__esModule", { value: true });
9
18
  exports.DevicesService = void 0;
10
19
  const assert = require("assert");
@@ -54,101 +63,111 @@ class DevicesService extends events_1.EventEmitter {
54
63
  this.$iOSSimulatorDiscovery,
55
64
  ];
56
65
  }
57
- async pickSingleDevice(options) {
58
- if (options.onlyDevices && options.onlyEmulators) {
59
- this.$errors.fail(constants_1.DebugCommandErrors.UNABLE_TO_USE_FOR_DEVICE_AND_EMULATOR);
60
- }
61
- if (options.deviceId) {
62
- const device = await this.getDevice(options.deviceId);
63
- return device;
64
- }
65
- const availableDevicesAndEmulators = this.getDeviceInstances().filter((d) => d.deviceInfo.status === constants_2.CONNECTED_STATUS &&
66
- (!this.platform ||
67
- d.deviceInfo.platform.toLowerCase() === this.platform.toLowerCase()));
68
- const selectedDevices = availableDevicesAndEmulators.filter((d) => options.onlyEmulators
69
- ? d.isEmulator
70
- : options.onlyDevices
71
- ? !d.isEmulator
72
- : true);
73
- if (selectedDevices.length > 1) {
74
- if ((0, helpers_1.isInteractive)()) {
75
- const choices = selectedDevices.map((e) => `${e.deviceInfo.identifier} - ${e.deviceInfo.displayName}`);
76
- const selectedDeviceString = await this.$prompter.promptForChoice("Select device for debugging", choices);
77
- const selectedDevice = _.find(selectedDevices, (d) => `${d.deviceInfo.identifier} - ${d.deviceInfo.displayName}` ===
78
- selectedDeviceString);
79
- return selectedDevice;
66
+ pickSingleDevice(options) {
67
+ return __awaiter(this, void 0, void 0, function* () {
68
+ if (options.onlyDevices && options.onlyEmulators) {
69
+ this.$errors.fail(constants_1.DebugCommandErrors.UNABLE_TO_USE_FOR_DEVICE_AND_EMULATOR);
80
70
  }
81
- else {
82
- const sortedInstances = _.sortBy(selectedDevices, (e) => e.deviceInfo.version);
83
- const emulators = sortedInstances.filter((e) => e.isEmulator);
84
- const devices = sortedInstances.filter((d) => !d.isEmulator);
85
- let selectedInstance;
86
- if (options.onlyEmulators || options.onlyDevices) {
87
- selectedInstance = _.last(sortedInstances);
71
+ if (options.deviceId) {
72
+ const device = yield this.getDevice(options.deviceId);
73
+ return device;
74
+ }
75
+ // Now let's take data for each device:
76
+ const availableDevicesAndEmulators = this.getDeviceInstances().filter((d) => d.deviceInfo.status === constants_2.CONNECTED_STATUS &&
77
+ (!this.platform ||
78
+ d.deviceInfo.platform.toLowerCase() === this.platform.toLowerCase()));
79
+ const selectedDevices = availableDevicesAndEmulators.filter((d) => options.onlyEmulators
80
+ ? d.isEmulator
81
+ : options.onlyDevices
82
+ ? !d.isEmulator
83
+ : true);
84
+ if (selectedDevices.length > 1) {
85
+ if ((0, helpers_1.isInteractive)()) {
86
+ const choices = selectedDevices.map((e) => `${e.deviceInfo.identifier} - ${e.deviceInfo.displayName}`);
87
+ const selectedDeviceString = yield this.$prompter.promptForChoice("Select device for debugging", choices);
88
+ const selectedDevice = _.find(selectedDevices, (d) => `${d.deviceInfo.identifier} - ${d.deviceInfo.displayName}` ===
89
+ selectedDeviceString);
90
+ return selectedDevice;
88
91
  }
89
92
  else {
90
- if (emulators.length) {
91
- selectedInstance = _.last(emulators);
93
+ const sortedInstances = _.sortBy(selectedDevices, (e) => e.deviceInfo.version);
94
+ const emulators = sortedInstances.filter((e) => e.isEmulator);
95
+ const devices = sortedInstances.filter((d) => !d.isEmulator);
96
+ let selectedInstance;
97
+ if (options.onlyEmulators || options.onlyDevices) {
98
+ // When --emulator or --forDevice is passed, the instances are already filtered
99
+ // So we are sure we have exactly the type we need and we can safely return the last one (highest OS version).
100
+ selectedInstance = _.last(sortedInstances);
92
101
  }
93
102
  else {
94
- selectedInstance = _.last(devices);
103
+ if (emulators.length) {
104
+ selectedInstance = _.last(emulators);
105
+ }
106
+ else {
107
+ selectedInstance = _.last(devices);
108
+ }
95
109
  }
110
+ this.$logger.warn(`Multiple devices/emulators found. Starting debugger on ${selectedInstance.deviceInfo.identifier}. ` +
111
+ "If you want to debug on specific device/emulator, you can specify it with --device option.");
112
+ return selectedInstance;
96
113
  }
97
- this.$logger.warn(`Multiple devices/emulators found. Starting debugger on ${selectedInstance.deviceInfo.identifier}. ` +
98
- "If you want to debug on specific device/emulator, you can specify it with --device option.");
99
- return selectedInstance;
100
114
  }
101
- }
102
- else if (selectedDevices.length === 1) {
103
- return _.head(selectedDevices);
104
- }
105
- this.$errors.fail(constants_1.DebugCommandErrors.NO_DEVICES_EMULATORS_FOUND_FOR_OPTIONS);
115
+ else if (selectedDevices.length === 1) {
116
+ return _.head(selectedDevices);
117
+ }
118
+ this.$errors.fail(constants_1.DebugCommandErrors.NO_DEVICES_EMULATORS_FOUND_FOR_OPTIONS);
119
+ });
106
120
  }
107
- async getEmulatorImages(options) {
108
- const result = Object.create(null);
109
- if (this.$hostInfo.isDarwin &&
110
- (!options ||
121
+ getEmulatorImages(options) {
122
+ return __awaiter(this, void 0, void 0, function* () {
123
+ const result = Object.create(null);
124
+ if (this.$hostInfo.isDarwin &&
125
+ (!options ||
126
+ !options.platform ||
127
+ this.$mobileHelper.isiOSPlatform(options.platform))) {
128
+ result.ios = yield this.$iOSEmulatorServices.getEmulatorImages();
129
+ }
130
+ if (!options ||
111
131
  !options.platform ||
112
- this.$mobileHelper.isiOSPlatform(options.platform))) {
113
- result.ios = await this.$iOSEmulatorServices.getEmulatorImages();
114
- }
115
- if (!options ||
116
- !options.platform ||
117
- this.$mobileHelper.isAndroidPlatform(options.platform)) {
118
- result.android = await this.$androidEmulatorServices.getEmulatorImages();
119
- }
120
- return result;
132
+ this.$mobileHelper.isAndroidPlatform(options.platform)) {
133
+ result.android = yield this.$androidEmulatorServices.getEmulatorImages();
134
+ }
135
+ return result;
136
+ });
121
137
  }
122
- async startEmulator(options) {
123
- if (!options || (!options.imageIdentifier && !options.emulatorIdOrName)) {
124
- return ["Missing mandatory image identifier or name option."];
125
- }
126
- const availableEmulatorsOutput = await this.getEmulatorImages({
127
- platform: options.platform,
138
+ startEmulator(options) {
139
+ return __awaiter(this, void 0, void 0, function* () {
140
+ if (!options || (!options.imageIdentifier && !options.emulatorIdOrName)) {
141
+ return ["Missing mandatory image identifier or name option."];
142
+ }
143
+ const availableEmulatorsOutput = yield this.getEmulatorImages({
144
+ platform: options.platform,
145
+ });
146
+ const emulators = this.$emulatorHelper.getEmulatorsFromAvailableEmulatorsOutput(availableEmulatorsOutput);
147
+ const errors = this.$emulatorHelper.getErrorsFromAvailableEmulatorsOutput(availableEmulatorsOutput);
148
+ let emulator = null;
149
+ if (options.imageIdentifier) {
150
+ emulator = this.$emulatorHelper.getEmulatorByImageIdentifier(options.imageIdentifier, emulators);
151
+ }
152
+ else if (options.emulatorIdOrName) {
153
+ emulator = this.$emulatorHelper.getEmulatorByIdOrName(options.emulatorIdOrName, emulators);
154
+ }
155
+ if (!emulator) {
156
+ const additionalErrors = errors && errors.length ? errors : [];
157
+ return [
158
+ `Unable to find emulator with provided options: ${options}`,
159
+ ...additionalErrors,
160
+ ];
161
+ }
162
+ // emulator is already running
163
+ if (emulator.status === constants.RUNNING_EMULATOR_STATUS) {
164
+ return null;
165
+ }
166
+ options.emulator = emulator;
167
+ const emulatorService = this.resolveEmulatorServices(emulator.platform);
168
+ const result = yield emulatorService.startEmulator(options);
169
+ return result.errors && result.errors.length ? result.errors : null;
128
170
  });
129
- const emulators = this.$emulatorHelper.getEmulatorsFromAvailableEmulatorsOutput(availableEmulatorsOutput);
130
- const errors = this.$emulatorHelper.getErrorsFromAvailableEmulatorsOutput(availableEmulatorsOutput);
131
- let emulator = null;
132
- if (options.imageIdentifier) {
133
- emulator = this.$emulatorHelper.getEmulatorByImageIdentifier(options.imageIdentifier, emulators);
134
- }
135
- else if (options.emulatorIdOrName) {
136
- emulator = this.$emulatorHelper.getEmulatorByIdOrName(options.emulatorIdOrName, emulators);
137
- }
138
- if (!emulator) {
139
- const additionalErrors = errors && errors.length ? errors : [];
140
- return [
141
- `Unable to find emulator with provided options: ${options}`,
142
- ...additionalErrors,
143
- ];
144
- }
145
- if (emulator.status === constants.RUNNING_EMULATOR_STATUS) {
146
- return null;
147
- }
148
- options.emulator = emulator;
149
- const emulatorService = this.resolveEmulatorServices(emulator.platform);
150
- const result = await emulatorService.startEmulator(options);
151
- return result.errors && result.errors.length ? result.errors : null;
152
171
  }
153
172
  get platform() {
154
173
  return this._platform;
@@ -173,9 +192,11 @@ class DevicesService extends events_1.EventEmitter {
173
192
  return !!(this.$mobileHelper.isiOSPlatform(device.deviceInfo.platform) &&
174
193
  device.isEmulator);
175
194
  }
195
+ /* tslint:disable:no-unused-variable */
176
196
  setLogLevel(logLevel, deviceIdentifier) {
177
197
  this.$deviceLogProvider.setLogLevel(logLevel, deviceIdentifier);
178
198
  }
199
+ /* tslint:enable:no-unused-variable */
179
200
  isAppInstalledOnDevices(deviceIdentifiers, appId, projectName, projectDir) {
180
201
  this.$logger.trace(`Called isInstalledOnDevices for identifiers ${deviceIdentifiers}. AppIdentifier is ${appId}.`);
181
202
  return _.map(deviceIdentifiers, (deviceIdentifier) => this.isApplicationInstalledOnDevice(deviceIdentifier, {
@@ -192,9 +213,11 @@ class DevicesService extends events_1.EventEmitter {
192
213
  return device;
193
214
  });
194
215
  }
195
- async getInstalledApplications(deviceIdentifier) {
196
- const device = await this.getDevice(deviceIdentifier);
197
- return device.applicationManager.getInstalledApplications();
216
+ getInstalledApplications(deviceIdentifier) {
217
+ return __awaiter(this, void 0, void 0, function* () {
218
+ const device = yield this.getDevice(deviceIdentifier);
219
+ return device.applicationManager.getInstalledApplications();
220
+ });
198
221
  }
199
222
  addDeviceDiscovery(deviceDiscovery) {
200
223
  this._otherDeviceDiscoveries.push(deviceDiscovery);
@@ -247,62 +270,69 @@ class DevicesService extends events_1.EventEmitter {
247
270
  delete this._availableEmulators[emulator.imageIdentifier];
248
271
  this.emit(constants.EmulatorDiscoveryNames.EMULATOR_IMAGE_LOST, emulator);
249
272
  }
250
- async detectCurrentlyAttachedDevices(deviceInitOpts) {
251
- const options = this.getDeviceLookingOptions(deviceInitOpts);
252
- for (const deviceDiscovery of this._allDeviceDiscoveries) {
273
+ /**
274
+ * Starts looking for devices. Any found devices are pushed to "_devices" variable.
275
+ */
276
+ detectCurrentlyAttachedDevices(deviceInitOpts) {
277
+ return __awaiter(this, void 0, void 0, function* () {
278
+ const options = this.getDeviceLookingOptions(deviceInitOpts);
279
+ for (const deviceDiscovery of this._allDeviceDiscoveries) {
280
+ try {
281
+ yield deviceDiscovery.startLookingForDevices(options);
282
+ }
283
+ catch (err) {
284
+ this.$logger.trace("Error while checking for devices.", err);
285
+ }
286
+ }
287
+ });
288
+ }
289
+ detectCurrentlyAvailableEmulators() {
290
+ return __awaiter(this, void 0, void 0, function* () {
253
291
  try {
254
- await deviceDiscovery.startLookingForDevices(options);
292
+ yield this.$androidEmulatorDiscovery.startLookingForDevices();
255
293
  }
256
294
  catch (err) {
257
- this.$logger.trace("Error while checking for devices.", err);
295
+ this.$logger.trace(`Error while checking for Android emulators. ${err}`);
258
296
  }
259
- }
260
- }
261
- async detectCurrentlyAvailableEmulators() {
262
- try {
263
- await this.$androidEmulatorDiscovery.startLookingForDevices();
264
- }
265
- catch (err) {
266
- this.$logger.trace(`Error while checking for Android emulators. ${err}`);
267
- }
268
- try {
269
- await this.$iOSSimulatorDiscovery.checkForAvailableSimulators();
270
- }
271
- catch (err) {
272
- this.$logger.trace(`Error while checking for iOS simulators. ${err}`);
273
- }
297
+ try {
298
+ yield this.$iOSSimulatorDiscovery.checkForAvailableSimulators();
299
+ }
300
+ catch (err) {
301
+ this.$logger.trace(`Error while checking for iOS simulators. ${err}`);
302
+ }
303
+ });
274
304
  }
275
305
  startDeviceDetectionInterval(deviceInitOpts = {}) {
276
306
  if (!this.deviceDetectionInterval) {
277
307
  let isDeviceDetectionIntervalInProgress = false;
278
- this.deviceDetectionInterval = setInterval(async () => {
308
+ this.deviceDetectionInterval = setInterval(() => __awaiter(this, void 0, void 0, function* () {
279
309
  if (isDeviceDetectionIntervalInProgress) {
280
310
  return;
281
311
  }
282
312
  isDeviceDetectionIntervalInProgress = true;
283
- await this.detectCurrentlyAttachedDevices(deviceInitOpts);
313
+ yield this.detectCurrentlyAttachedDevices(deviceInitOpts);
284
314
  try {
285
315
  const trustedDevices = _.filter(this._devices, (device) => device.deviceInfo.status === constants.CONNECTED_STATUS);
286
- await (0, helpers_1.settlePromises)(_.map(trustedDevices, (device) => device.applicationManager.checkForApplicationUpdates()));
316
+ yield (0, helpers_1.settlePromises)(_.map(trustedDevices, (device) => device.applicationManager.checkForApplicationUpdates()));
287
317
  }
288
318
  catch (err) {
289
319
  this.$logger.trace("Error checking for application updates on devices.", err);
290
320
  }
291
321
  isDeviceDetectionIntervalInProgress = false;
292
- }, deviceInitOpts.detectionInterval || DevicesService.DEVICE_LOOKING_INTERVAL);
322
+ }), deviceInitOpts.detectionInterval || DevicesService.DEVICE_LOOKING_INTERVAL);
293
323
  this.deviceDetectionInterval.unref();
294
324
  }
295
325
  }
296
326
  startEmulatorDetectionInterval(opts = {}) {
297
327
  let isEmulatorDetectionIntervalRunning = false;
298
- this.emulatorDetectionInterval = setInterval(async () => {
328
+ this.emulatorDetectionInterval = setInterval(() => __awaiter(this, void 0, void 0, function* () {
299
329
  if (isEmulatorDetectionIntervalRunning) {
300
330
  return;
301
331
  }
302
332
  isEmulatorDetectionIntervalRunning = true;
303
- await this.detectCurrentlyAvailableEmulators();
333
+ yield this.detectCurrentlyAvailableEmulators();
304
334
  isEmulatorDetectionIntervalRunning = false;
305
- }, opts.detectionInterval || DevicesService.EMULATOR_IMAGES_DETECTION_INTERVAL);
335
+ }), opts.detectionInterval || DevicesService.EMULATOR_IMAGES_DETECTION_INTERVAL);
306
336
  this.emulatorDetectionInterval.unref();
307
337
  }
308
338
  stopDeviceDetectionInterval() {
@@ -315,6 +345,11 @@ class DevicesService extends events_1.EventEmitter {
315
345
  clearInterval(this.emulatorDetectionInterval);
316
346
  }
317
347
  }
348
+ /**
349
+ * Returns device that matches an identifier.
350
+ * The identifier is expected to be the same as the running device declares it (emulator-5554 for android or GUID for ios).
351
+ * @param identifier running emulator or device identifier
352
+ */
318
353
  getDeviceByIdentifier(identifier) {
319
354
  const searchedDevice = _.find(this.getDeviceInstances(), (device) => {
320
355
  if (this.$mobileHelper.isApplePlatform(device.deviceInfo.platform) &&
@@ -330,81 +365,112 @@ class DevicesService extends events_1.EventEmitter {
330
365
  }
331
366
  return searchedDevice;
332
367
  }
333
- async startLookingForDevices(deviceInitOpts) {
334
- this.$logger.trace("startLookingForDevices; platform is %s", this._platform);
335
- if (this._platform) {
336
- return this.detectCurrentlyAttachedDevices(deviceInitOpts);
337
- }
338
- await this.detectCurrentlyAttachedDevices(deviceInitOpts);
339
- await this.detectCurrentlyAvailableEmulators();
340
- await this.startDeviceDetectionInterval(deviceInitOpts);
368
+ /**
369
+ * Starts looking for running devices. All found devices are pushed to _devices variable.
370
+ */
371
+ startLookingForDevices(deviceInitOpts) {
372
+ return __awaiter(this, void 0, void 0, function* () {
373
+ this.$logger.trace("startLookingForDevices; platform is %s", this._platform);
374
+ if (this._platform) {
375
+ return this.detectCurrentlyAttachedDevices(deviceInitOpts);
376
+ }
377
+ yield this.detectCurrentlyAttachedDevices(deviceInitOpts);
378
+ yield this.detectCurrentlyAvailableEmulators();
379
+ yield this.startDeviceDetectionInterval(deviceInitOpts);
380
+ });
341
381
  }
382
+ /**
383
+ * Returns device depending on the passed index.
384
+ * The index refers to assigned number to listed devices by tns device command.
385
+ * @param index assigned device number
386
+ */
342
387
  getDeviceByIndex(index) {
343
388
  this.validateIndex(index - 1);
344
389
  return this.getDeviceInstances()[index - 1];
345
390
  }
346
- async getDevice(deviceOption) {
347
- let device = null;
348
- if (!device) {
349
- device = _.find(this.getDeviceInstances(), (d) => (d.deviceInfo.identifier &&
350
- d.deviceInfo.identifier === deviceOption) ||
351
- (d.deviceInfo.displayName &&
352
- d.deviceInfo.displayName === deviceOption) ||
353
- (d.deviceInfo.imageIdentifier &&
354
- d.deviceInfo.imageIdentifier === deviceOption));
355
- }
356
- if (!device && helpers.isNumberWithoutExponent(deviceOption)) {
357
- device = this.getDeviceByIndex(parseInt(deviceOption, 10));
358
- }
359
- if (!device) {
360
- this.$errors.fail(this.$messages.Devices
361
- .NotFoundDeviceByIdentifierErrorMessageWithIdentifier, deviceOption, this.$staticConfig.CLIENT_NAME.toLowerCase());
362
- }
363
- return device;
391
+ /**
392
+ * Returns running device for specified --device <DeviceId>.
393
+ * Method expects running devices.
394
+ * @param deviceOption parameter passed by the user to --device flag. Can be name, identifier or imageIdentifier.
395
+ */
396
+ getDevice(deviceOption) {
397
+ return __awaiter(this, void 0, void 0, function* () {
398
+ let device = null;
399
+ if (!device) {
400
+ device = _.find(this.getDeviceInstances(), (d) => (d.deviceInfo.identifier &&
401
+ d.deviceInfo.identifier === deviceOption) ||
402
+ (d.deviceInfo.displayName &&
403
+ d.deviceInfo.displayName === deviceOption) ||
404
+ (d.deviceInfo.imageIdentifier &&
405
+ d.deviceInfo.imageIdentifier === deviceOption));
406
+ }
407
+ if (!device && helpers.isNumberWithoutExponent(deviceOption)) {
408
+ device = this.getDeviceByIndex(parseInt(deviceOption, 10));
409
+ }
410
+ if (!device) {
411
+ this.$errors.fail(this.$messages.Devices
412
+ .NotFoundDeviceByIdentifierErrorMessageWithIdentifier, deviceOption, this.$staticConfig.CLIENT_NAME.toLowerCase());
413
+ }
414
+ return device;
415
+ });
364
416
  }
365
- async executeOnDevice(action, canExecute) {
366
- if (!canExecute || canExecute(this._device)) {
367
- return {
368
- deviceIdentifier: this._device.deviceInfo.identifier,
369
- result: await action(this._device),
370
- };
371
- }
417
+ /**
418
+ * Method runs action for a --device (value), specified by the user.
419
+ * @param action action to be executed if canExecute returns true
420
+ * @param canExecute predicate to decide whether the command can be ran
421
+ */
422
+ executeOnDevice(action, canExecute) {
423
+ return __awaiter(this, void 0, void 0, function* () {
424
+ if (!canExecute || canExecute(this._device)) {
425
+ return {
426
+ deviceIdentifier: this._device.deviceInfo.identifier,
427
+ result: yield action(this._device),
428
+ };
429
+ }
430
+ });
372
431
  }
373
- async executeOnAllConnectedDevices(action, canExecute) {
374
- const devices = this.filterDevicesByPlatform();
375
- const sortedDevices = _.sortBy(devices, (device) => device.deviceInfo.platform);
376
- const result = [];
377
- const errors = [];
378
- for (const device of sortedDevices) {
379
- try {
380
- if (!canExecute || canExecute(device)) {
381
- result.push({
382
- deviceIdentifier: device.deviceInfo.identifier,
383
- result: await action(device),
384
- });
432
+ /**
433
+ * Executes passed action for each found device.
434
+ * @param action action to be executed if canExecute returns true
435
+ * @param canExecute predicate to decide whether the command can be ran
436
+ */
437
+ executeOnAllConnectedDevices(action, canExecute) {
438
+ return __awaiter(this, void 0, void 0, function* () {
439
+ const devices = this.filterDevicesByPlatform();
440
+ const sortedDevices = _.sortBy(devices, (device) => device.deviceInfo.platform);
441
+ const result = [];
442
+ const errors = [];
443
+ for (const device of sortedDevices) {
444
+ try {
445
+ if (!canExecute || canExecute(device)) {
446
+ result.push({
447
+ deviceIdentifier: device.deviceInfo.identifier,
448
+ result: yield action(device),
449
+ });
450
+ }
451
+ }
452
+ catch (err) {
453
+ err.deviceIdentifier = device.deviceInfo.identifier;
454
+ this.$logger.trace(`Error while executing action on device ${device.deviceInfo.identifier}. The error is`, err);
455
+ errors.push(err);
385
456
  }
386
457
  }
387
- catch (err) {
388
- err.deviceIdentifier = device.deviceInfo.identifier;
389
- this.$logger.trace(`Error while executing action on device ${device.deviceInfo.identifier}. The error is`, err);
390
- errors.push(err);
458
+ if (errors.length) {
459
+ let preErrorMsg = "";
460
+ if (errors.length > 1) {
461
+ preErrorMsg = "Multiple errors were thrown:" + os_1.EOL;
462
+ }
463
+ const errorMessage = `${preErrorMsg}${errors
464
+ .map((e) => e.message || e)
465
+ .join(os_1.EOL)}`;
466
+ this.$errors.fail(errorMessage);
391
467
  }
392
- }
393
- if (errors.length) {
394
- let preErrorMsg = "";
395
- if (errors.length > 1) {
396
- preErrorMsg = "Multiple errors were thrown:" + os_1.EOL;
397
- }
398
- const errorMessage = `${preErrorMsg}${errors
399
- .map((e) => e.message || e)
400
- .join(os_1.EOL)}`;
401
- this.$errors.fail(errorMessage);
402
- }
403
- return result;
468
+ return result;
469
+ });
404
470
  }
405
471
  deployOnDevices(deviceIdentifiers, packagePath, appId, projectName, projectDir) {
406
472
  this.$logger.trace(`Called deployOnDevices for identifiers ${deviceIdentifiers} for packageFile: ${packagePath}. Application identifier is ${appId}. Project Name is: ${projectName}`);
407
- return _.map(deviceIdentifiers, async (deviceIdentifier) => {
473
+ return _.map(deviceIdentifiers, (deviceIdentifier) => __awaiter(this, void 0, void 0, function* () {
408
474
  const device = this.getDeviceByIdentifier(deviceIdentifier);
409
475
  let identifier;
410
476
  if (typeof appId === "string") {
@@ -419,110 +485,141 @@ class DevicesService extends events_1.EventEmitter {
419
485
  projectName,
420
486
  projectDir,
421
487
  });
422
- });
488
+ }));
423
489
  }
424
- async execute(action, canExecute, options) {
425
- assert.ok(this._isInitialized, "Devices services not initialized!");
426
- if (this.hasDevices) {
427
- if (this.$hostInfo.isDarwin &&
428
- this._platform &&
429
- this.$mobileHelper.isiOSPlatform(this._platform) &&
430
- this.$options.emulator &&
431
- !this.isOnlyiOSSimultorRunning()) {
432
- const originalCanExecute = canExecute;
433
- canExecute = (dev) => this.isiOSSimulator(dev) &&
434
- (!originalCanExecute || !!originalCanExecute(dev));
435
- }
436
- return this.executeCore(action, canExecute);
437
- }
438
- else {
439
- const message = constants.ERROR_NO_DEVICES;
440
- if (options && options.allowNoDevices) {
441
- this.$logger.info(message);
490
+ /**
491
+ * Runs the passed action if the predicate "canExecute" returns true
492
+ * @param action action to be executed if canExecute returns true.
493
+ * @param canExecute predicate to decide whether the command can be ran
494
+ * @param options all possible options that can be passed to the command.
495
+ */
496
+ execute(action, canExecute, options) {
497
+ return __awaiter(this, void 0, void 0, function* () {
498
+ assert.ok(this._isInitialized, "Devices services not initialized!");
499
+ if (this.hasDevices) {
500
+ if (this.$hostInfo.isDarwin &&
501
+ this._platform &&
502
+ this.$mobileHelper.isiOSPlatform(this._platform) &&
503
+ this.$options.emulator &&
504
+ !this.isOnlyiOSSimultorRunning()) {
505
+ // Executes the command only on iOS simulator
506
+ const originalCanExecute = canExecute;
507
+ canExecute = (dev) => this.isiOSSimulator(dev) &&
508
+ (!originalCanExecute || !!originalCanExecute(dev));
509
+ }
510
+ return this.executeCore(action, canExecute);
442
511
  }
443
512
  else {
444
- if (!this.$hostInfo.isDarwin &&
445
- this._platform &&
446
- this.$mobileHelper.isiOSPlatform(this._platform)) {
447
- this.$errors.fail(message);
513
+ const message = constants.ERROR_NO_DEVICES;
514
+ if (options && options.allowNoDevices) {
515
+ this.$logger.info(message);
448
516
  }
449
517
  else {
450
- return this.executeCore(action, canExecute);
518
+ if (!this.$hostInfo.isDarwin &&
519
+ this._platform &&
520
+ this.$mobileHelper.isiOSPlatform(this._platform)) {
521
+ this.$errors.fail(message);
522
+ }
523
+ else {
524
+ return this.executeCore(action, canExecute);
525
+ }
451
526
  }
452
527
  }
453
- }
528
+ });
454
529
  }
455
- async startEmulatorIfNecessary(deviceInitOpts) {
456
- if (deviceInitOpts && deviceInitOpts.deviceId && deviceInitOpts.emulator) {
457
- this.$errors.fail(`--device and --emulator are incompatible options.
530
+ /**
531
+ * Starts emulator or simulator if necessary depending on --device or --emulator flags.
532
+ * If no options are passed runs default emulator/simulator if no devices are connected.
533
+ * @param deviceInitOpts mainly contains information about --emulator and --deviceId flags.
534
+ */
535
+ startEmulatorIfNecessary(deviceInitOpts) {
536
+ return __awaiter(this, void 0, void 0, function* () {
537
+ if (deviceInitOpts && deviceInitOpts.deviceId && deviceInitOpts.emulator) {
538
+ this.$errors.fail(`--device and --emulator are incompatible options.
458
539
  If you are trying to run on specific emulator, use "${this.$staticConfig.CLIENT_NAME} run --device <DeviceID>`);
459
- }
460
- if (deviceInitOpts &&
461
- deviceInitOpts.platform &&
462
- !deviceInitOpts.skipEmulatorStart) {
463
- this._platform = deviceInitOpts.platform;
464
- try {
465
- await this.startLookingForDevices(deviceInitOpts);
466
540
  }
467
- catch (err) {
468
- this.$logger.trace("Error while checking for devices.", err);
541
+ if (deviceInitOpts &&
542
+ deviceInitOpts.platform &&
543
+ !deviceInitOpts.skipEmulatorStart) {
544
+ // are there any running devices
545
+ this._platform = deviceInitOpts.platform;
546
+ try {
547
+ yield this.startLookingForDevices(deviceInitOpts);
548
+ }
549
+ catch (err) {
550
+ this.$logger.trace("Error while checking for devices.", err);
551
+ }
552
+ const deviceInstances = this.getDeviceInstances();
553
+ if (!deviceInitOpts.deviceId && _.isEmpty(deviceInstances)) {
554
+ if (!this.$hostInfo.isDarwin &&
555
+ this.$mobileHelper.isApplePlatform(deviceInitOpts.platform)) {
556
+ this.$errors.fail(constants.ERROR_NO_DEVICES_CANT_USE_IOS_SIMULATOR);
557
+ }
558
+ }
559
+ try {
560
+ yield this._startEmulatorIfNecessary(deviceInitOpts);
561
+ }
562
+ catch (err) {
563
+ const errorMessage = this.getEmulatorError(err, deviceInitOpts.platform);
564
+ this.$errors.fail(errorMessage);
565
+ }
469
566
  }
567
+ });
568
+ }
569
+ _startEmulatorIfNecessary(data) {
570
+ return __awaiter(this, void 0, void 0, function* () {
470
571
  const deviceInstances = this.getDeviceInstances();
471
- if (!deviceInitOpts.deviceId && _.isEmpty(deviceInstances)) {
472
- if (!this.$hostInfo.isDarwin &&
473
- this.$mobileHelper.isApplePlatform(deviceInitOpts.platform)) {
474
- this.$errors.fail(constants.ERROR_NO_DEVICES_CANT_USE_IOS_SIMULATOR);
475
- }
572
+ //if no --device is passed and no devices are found, the default emulator is started
573
+ if (!data.deviceId && _.isEmpty(deviceInstances)) {
574
+ return this.startEmulatorCore(data);
476
575
  }
477
- try {
478
- await this._startEmulatorIfNecessary(deviceInitOpts);
576
+ //check if --device(value) is running, if it's not or it's not the same as is specified, start with name from --device(value)
577
+ if (data.deviceId) {
578
+ if (!helpers.isNumberWithoutExponent(data.deviceId)) {
579
+ const activeDeviceInstance = _.find(deviceInstances, (device) => device.deviceInfo.identifier === data.deviceId);
580
+ if (!activeDeviceInstance) {
581
+ return this.startEmulatorCore(data);
582
+ }
583
+ }
479
584
  }
480
- catch (err) {
481
- const errorMessage = this.getEmulatorError(err, deviceInitOpts.platform);
482
- this.$errors.fail(errorMessage);
585
+ // make sure if the target platform is visionOS we don't try to run it on an already running iOS simulator...
586
+ if (data.platform === this.$devicePlatformsConstants.visionOS &&
587
+ deviceInstances.length) {
588
+ const runningDeviceInstance = deviceInstances.find((device) => device.deviceInfo.platform === this.$devicePlatformsConstants.visionOS);
589
+ if (!runningDeviceInstance) {
590
+ return this.startEmulatorCore(data);
591
+ }
483
592
  }
484
- }
485
- }
486
- async _startEmulatorIfNecessary(data) {
487
- const deviceInstances = this.getDeviceInstances();
488
- if (!data.deviceId && _.isEmpty(deviceInstances)) {
489
- return this.startEmulatorCore(data);
490
- }
491
- if (data.deviceId) {
492
- if (!helpers.isNumberWithoutExponent(data.deviceId)) {
493
- const activeDeviceInstance = _.find(deviceInstances, (device) => device.deviceInfo.identifier === data.deviceId);
494
- if (!activeDeviceInstance) {
593
+ // if only emulator flag is passed and no other emulators are running, start default emulator
594
+ if (data.emulator && deviceInstances.length) {
595
+ const runningDeviceInstance = _.some(deviceInstances, (value) => value.isEmulator);
596
+ if (!runningDeviceInstance) {
495
597
  return this.startEmulatorCore(data);
496
598
  }
497
599
  }
498
- }
499
- if (data.platform === this.$devicePlatformsConstants.visionOS &&
500
- deviceInstances.length) {
501
- const runningDeviceInstance = deviceInstances.find((device) => device.deviceInfo.platform ===
502
- this.$devicePlatformsConstants.visionOS);
503
- if (!runningDeviceInstance) {
504
- return this.startEmulatorCore(data);
600
+ });
601
+ }
602
+ /**
603
+ * Takes care of gathering information about all running devices.
604
+ * Sets "_isInitialized" to true after infomation is present.
605
+ * Method expects running devices.
606
+ * @param data mainly contains information about --emulator and --deviceId flags.
607
+ */
608
+ initialize(data) {
609
+ return __awaiter(this, void 0, void 0, function* () {
610
+ if (!this._deviceInitializePromise) {
611
+ this._deviceInitializePromise = this.initializeCore(data);
505
612
  }
506
- }
507
- if (data.emulator && deviceInstances.length) {
508
- const runningDeviceInstance = _.some(deviceInstances, (value) => value.isEmulator);
509
- if (!runningDeviceInstance) {
510
- return this.startEmulatorCore(data);
613
+ try {
614
+ yield this._deviceInitializePromise;
511
615
  }
512
- }
513
- }
514
- async initialize(data) {
515
- if (!this._deviceInitializePromise) {
516
- this._deviceInitializePromise = this.initializeCore(data);
517
- }
518
- try {
519
- await this._deviceInitializePromise;
520
- }
521
- catch (err) {
522
- this.$logger.trace(`Error while initializing devicesService: ${err}`);
523
- this._deviceInitializePromise = null;
524
- throw err;
525
- }
616
+ catch (err) {
617
+ // In case the initalization fails, we want to allow calling `initlialize` again with other arguments for example, so remove the cached promise value.
618
+ this.$logger.trace(`Error while initializing devicesService: ${err}`);
619
+ this._deviceInitializePromise = null;
620
+ throw err;
621
+ }
622
+ });
526
623
  }
527
624
  getPlatformsFromDeviceDescriptors(deviceDescriptors) {
528
625
  const platforms = _(deviceDescriptors)
@@ -532,89 +629,93 @@ class DevicesService extends events_1.EventEmitter {
532
629
  .value();
533
630
  return platforms;
534
631
  }
535
- async initializeCore(deviceInitOpts) {
536
- if (this._isInitialized) {
537
- return;
538
- }
539
- if (!this.$options.json) {
540
- this.$logger.info("Searching for devices...");
541
- }
542
- deviceInitOpts = deviceInitOpts || {};
543
- this._data = deviceInitOpts;
544
- if (!deviceInitOpts.skipEmulatorStart) {
545
- await this.startEmulatorIfNecessary(deviceInitOpts);
546
- }
547
- const platform = deviceInitOpts.platform;
548
- const deviceOption = deviceInitOpts.deviceId;
549
- const deviceLookingOptions = {
550
- emulator: deviceInitOpts.emulator,
551
- platform: deviceInitOpts.platform,
552
- shouldReturnImmediateResult: deviceInitOpts.shouldReturnImmediateResult,
553
- detectionInterval: deviceInitOpts.detectionInterval,
554
- fullDiscovery: deviceInitOpts.fullDiscovery,
555
- };
556
- if (platform && deviceOption) {
557
- this._platform = this.$mobileHelper.validatePlatformName(deviceInitOpts.platform);
558
- await this.startLookingForDevices(deviceLookingOptions);
559
- this._device = await this.getDevice(deviceOption);
560
- if (this._device.deviceInfo.platform !== this._platform) {
561
- this.$errors.fail(constants.ERROR_CANNOT_RESOLVE_DEVICE);
562
- }
563
- this.$logger.warn("Your application will be deployed only on the device specified by the provided index or identifier.");
564
- }
565
- else if (!platform && deviceOption) {
566
- await this.startLookingForDevices(deviceLookingOptions);
567
- this._device = await this.getDevice(deviceOption);
568
- this._platform = this._device.deviceInfo.platform;
569
- }
570
- else if (platform && !deviceOption) {
571
- this._platform = this.$mobileHelper.validatePlatformName(platform);
572
- await this.startLookingForDevices(deviceLookingOptions);
573
- }
574
- else {
575
- if (deviceInitOpts.skipInferPlatform) {
576
- if (deviceInitOpts.skipDeviceDetectionInterval) {
577
- await this.detectCurrentlyAttachedDevices(deviceLookingOptions);
578
- }
579
- else {
580
- deviceInitOpts.shouldReturnImmediateResult = true;
581
- await this.startLookingForDevices(deviceLookingOptions);
632
+ initializeCore(deviceInitOpts) {
633
+ return __awaiter(this, void 0, void 0, function* () {
634
+ if (this._isInitialized) {
635
+ return;
636
+ }
637
+ if (!this.$options.json) {
638
+ this.$logger.info("Searching for devices...");
639
+ }
640
+ deviceInitOpts = deviceInitOpts || {};
641
+ this._data = deviceInitOpts;
642
+ if (!deviceInitOpts.skipEmulatorStart) {
643
+ // TODO: Remove from here as it calls startLookingForDevices, so we double the calls to specific device detection services
644
+ yield this.startEmulatorIfNecessary(deviceInitOpts);
645
+ }
646
+ const platform = deviceInitOpts.platform;
647
+ const deviceOption = deviceInitOpts.deviceId;
648
+ const deviceLookingOptions = {
649
+ emulator: deviceInitOpts.emulator,
650
+ platform: deviceInitOpts.platform,
651
+ shouldReturnImmediateResult: deviceInitOpts.shouldReturnImmediateResult,
652
+ detectionInterval: deviceInitOpts.detectionInterval,
653
+ fullDiscovery: deviceInitOpts.fullDiscovery,
654
+ };
655
+ if (platform && deviceOption) {
656
+ this._platform = this.$mobileHelper.validatePlatformName(deviceInitOpts.platform);
657
+ yield this.startLookingForDevices(deviceLookingOptions);
658
+ this._device = yield this.getDevice(deviceOption);
659
+ if (this._device.deviceInfo.platform !== this._platform) {
660
+ this.$errors.fail(constants.ERROR_CANNOT_RESOLVE_DEVICE);
582
661
  }
662
+ this.$logger.warn("Your application will be deployed only on the device specified by the provided index or identifier.");
663
+ }
664
+ else if (!platform && deviceOption) {
665
+ yield this.startLookingForDevices(deviceLookingOptions);
666
+ this._device = yield this.getDevice(deviceOption);
667
+ this._platform = this._device.deviceInfo.platform;
668
+ }
669
+ else if (platform && !deviceOption) {
670
+ this._platform = this.$mobileHelper.validatePlatformName(platform);
671
+ yield this.startLookingForDevices(deviceLookingOptions);
583
672
  }
584
673
  else {
585
- await this.startLookingForDevices(deviceLookingOptions);
586
- const devices = this.getDeviceInstances();
587
- const platforms = _(devices)
588
- .map((device) => device.deviceInfo.platform)
589
- .filter((pl) => {
590
- try {
591
- return !!this.$mobileHelper.validatePlatformName(pl);
674
+ // platform and deviceId are not specified
675
+ if (deviceInitOpts.skipInferPlatform) {
676
+ if (deviceInitOpts.skipDeviceDetectionInterval) {
677
+ yield this.detectCurrentlyAttachedDevices(deviceLookingOptions);
592
678
  }
593
- catch (err) {
594
- this.$logger.warn(err.message);
595
- return null;
679
+ else {
680
+ deviceInitOpts.shouldReturnImmediateResult = true;
681
+ yield this.startLookingForDevices(deviceLookingOptions);
596
682
  }
597
- })
598
- .uniq()
599
- .value();
600
- if (platforms.length === 1) {
601
- this._platform = platforms[0];
602
- }
603
- else if (platforms.length === 0) {
604
- this.$errors.fail(constants.ERROR_NO_DEVICES);
605
683
  }
606
684
  else {
607
- this.$errors.fail("Multiple device platforms detected (%s). Specify platform or device on command line.", helpers.formatListOfNames(platforms, "and"));
685
+ yield this.startLookingForDevices(deviceLookingOptions);
686
+ const devices = this.getDeviceInstances();
687
+ const platforms = _(devices)
688
+ .map((device) => device.deviceInfo.platform)
689
+ .filter((pl) => {
690
+ try {
691
+ return !!this.$mobileHelper.validatePlatformName(pl);
692
+ }
693
+ catch (err) {
694
+ this.$logger.warn(err.message);
695
+ return null;
696
+ }
697
+ })
698
+ .uniq()
699
+ .value();
700
+ if (platforms.length === 1) {
701
+ this._platform = platforms[0];
702
+ }
703
+ else if (platforms.length === 0) {
704
+ this.$errors.fail(constants.ERROR_NO_DEVICES);
705
+ }
706
+ else {
707
+ this.$errors.fail("Multiple device platforms detected (%s). Specify platform or device on command line.", helpers.formatListOfNames(platforms, "and"));
708
+ }
608
709
  }
609
710
  }
610
- }
611
- if (!this.$hostInfo.isDarwin &&
612
- this._platform &&
613
- this.$mobileHelper.isiOSPlatform(this._platform) &&
614
- this.$options.emulator) {
615
- this.$errors.fail(constants.ERROR_CANT_USE_SIMULATOR);
616
- }
617
- this._isInitialized = true;
711
+ if (!this.$hostInfo.isDarwin &&
712
+ this._platform &&
713
+ this.$mobileHelper.isiOSPlatform(this._platform) &&
714
+ this.$options.emulator) {
715
+ this.$errors.fail(constants.ERROR_CANT_USE_SIMULATOR);
716
+ }
717
+ this._isInitialized = true;
718
+ });
618
719
  }
619
720
  get hasDevices() {
620
721
  if (!this._platform) {
@@ -634,24 +735,30 @@ class DevicesService extends events_1.EventEmitter {
634
735
  getDeviceByDeviceOption() {
635
736
  return this._device;
636
737
  }
637
- async mapAbstractToTcpPort(deviceIdentifier, appIdentifier, framework) {
638
- return this.$androidProcessService.mapAbstractToTcpPort(deviceIdentifier, appIdentifier, framework);
738
+ mapAbstractToTcpPort(deviceIdentifier, appIdentifier, framework) {
739
+ return __awaiter(this, void 0, void 0, function* () {
740
+ return this.$androidProcessService.mapAbstractToTcpPort(deviceIdentifier, appIdentifier, framework);
741
+ });
639
742
  }
640
743
  getDebuggableApps(deviceIdentifiers) {
641
744
  return _.map(deviceIdentifiers, (deviceIdentifier) => this.getDebuggableAppsCore(deviceIdentifier));
642
745
  }
643
- async getDebuggableViews(deviceIdentifier, appIdentifier) {
644
- const device = this.getDeviceByIdentifier(deviceIdentifier), debuggableViewsPerApp = await device.applicationManager.getDebuggableAppViews([appIdentifier]);
645
- return debuggableViewsPerApp && debuggableViewsPerApp[appIdentifier];
746
+ getDebuggableViews(deviceIdentifier, appIdentifier) {
747
+ return __awaiter(this, void 0, void 0, function* () {
748
+ const device = this.getDeviceByIdentifier(deviceIdentifier), debuggableViewsPerApp = yield device.applicationManager.getDebuggableAppViews([appIdentifier]);
749
+ return debuggableViewsPerApp && debuggableViewsPerApp[appIdentifier];
750
+ });
646
751
  }
647
752
  getDebuggableAppsCore(deviceIdentifier) {
648
753
  const device = this.getDeviceByIdentifier(deviceIdentifier);
649
754
  return device.applicationManager.getDebuggableApps();
650
755
  }
651
- async deployOnDevice(device, appData) {
652
- await device.applicationManager.reinstallApplication(appData.appId, appData.packagePath);
653
- this.$logger.info(`Successfully deployed on device with identifier '${device.deviceInfo.identifier}'.`);
654
- await device.applicationManager.tryStartApplication(appData);
756
+ deployOnDevice(device, appData) {
757
+ return __awaiter(this, void 0, void 0, function* () {
758
+ yield device.applicationManager.reinstallApplication(appData.appId, appData.packagePath);
759
+ this.$logger.info(`Successfully deployed on device with identifier '${device.deviceInfo.identifier}'.`);
760
+ yield device.applicationManager.tryStartApplication(appData);
761
+ });
655
762
  }
656
763
  filterDevicesByPlatform() {
657
764
  return _.filter(this.getDeviceInstances(), (device) => {
@@ -679,52 +786,63 @@ class DevicesService extends events_1.EventEmitter {
679
786
  }
680
787
  return null;
681
788
  }
682
- async startEmulatorCore(deviceInitOpts = {}) {
683
- const { deviceId } = deviceInitOpts;
684
- const platform = deviceInitOpts.platform || this._platform;
685
- const emulatorServices = this.resolveEmulatorServices(platform);
686
- if (!emulatorServices) {
687
- this.$errors.fail("Unable to detect platform for which to start emulator.");
688
- }
689
- const result = await emulatorServices.startEmulator({
690
- emulatorIdOrName: deviceId,
691
- imageIdentifier: deviceId,
692
- platform: platform,
693
- sdk: this._data && this._data.sdk,
789
+ /**
790
+ * Starts emulator for platform and makes sure started devices/emulators/simulators are in _devices array before finishing.
791
+ * @param platform (optional) platform to start emulator/simulator for
792
+ * @param emulatorIdOrName (optional) emulator/simulator image identifier or name
793
+ */
794
+ startEmulatorCore(deviceInitOpts = {}) {
795
+ return __awaiter(this, void 0, void 0, function* () {
796
+ const { deviceId } = deviceInitOpts;
797
+ const platform = deviceInitOpts.platform || this._platform;
798
+ const emulatorServices = this.resolveEmulatorServices(platform);
799
+ if (!emulatorServices) {
800
+ this.$errors.fail("Unable to detect platform for which to start emulator.");
801
+ }
802
+ const result = yield emulatorServices.startEmulator({
803
+ emulatorIdOrName: deviceId,
804
+ imageIdentifier: deviceId,
805
+ platform: platform,
806
+ sdk: this._data && this._data.sdk,
807
+ });
808
+ if (result && result.errors && result.errors.length) {
809
+ this.$errors.fail(result.errors.join("\n"));
810
+ }
811
+ const deviceLookingOptions = this.getDeviceLookingOptions(deviceInitOpts);
812
+ if (this.$mobileHelper.isAndroidPlatform(platform)) {
813
+ yield this.$androidDeviceDiscovery.startLookingForDevices(deviceLookingOptions);
814
+ }
815
+ else if (this.$mobileHelper.isiOSPlatform(platform) &&
816
+ this.$hostInfo.isDarwin) {
817
+ yield this.$iOSSimulatorDiscovery.startLookingForDevices(deviceLookingOptions);
818
+ }
694
819
  });
695
- if (result && result.errors && result.errors.length) {
696
- this.$errors.fail(result.errors.join("\n"));
697
- }
698
- const deviceLookingOptions = this.getDeviceLookingOptions(deviceInitOpts);
699
- if (this.$mobileHelper.isAndroidPlatform(platform)) {
700
- await this.$androidDeviceDiscovery.startLookingForDevices(deviceLookingOptions);
701
- }
702
- else if (this.$mobileHelper.isiOSPlatform(platform) &&
703
- this.$hostInfo.isDarwin) {
704
- await this.$iOSSimulatorDiscovery.startLookingForDevices(deviceLookingOptions);
705
- }
706
820
  }
707
- async executeCore(action, canExecute) {
708
- if (this._device) {
709
- return [await this.executeOnDevice(action, canExecute)];
710
- }
711
- return this.executeOnAllConnectedDevices(action, canExecute);
821
+ executeCore(action, canExecute) {
822
+ return __awaiter(this, void 0, void 0, function* () {
823
+ if (this._device) {
824
+ return [yield this.executeOnDevice(action, canExecute)];
825
+ }
826
+ return this.executeOnAllConnectedDevices(action, canExecute);
827
+ });
712
828
  }
713
- async isApplicationInstalledOnDevice(deviceIdentifier, appData) {
714
- let isInstalled = false;
715
- const device = this.getDeviceByIdentifier(deviceIdentifier);
716
- try {
717
- isInstalled = await device.applicationManager.isApplicationInstalled(appData.appId);
718
- await device.applicationManager.tryStartApplication(appData);
719
- }
720
- catch (err) {
721
- this.$logger.trace("Error while checking is application installed. Error is: ", err);
722
- }
723
- return {
724
- appIdentifier: appData.appId,
725
- deviceIdentifier,
726
- isInstalled,
727
- };
829
+ isApplicationInstalledOnDevice(deviceIdentifier, appData) {
830
+ return __awaiter(this, void 0, void 0, function* () {
831
+ let isInstalled = false;
832
+ const device = this.getDeviceByIdentifier(deviceIdentifier);
833
+ try {
834
+ isInstalled = yield device.applicationManager.isApplicationInstalled(appData.appId);
835
+ yield device.applicationManager.tryStartApplication(appData);
836
+ }
837
+ catch (err) {
838
+ this.$logger.trace("Error while checking is application installed. Error is: ", err);
839
+ }
840
+ return {
841
+ appIdentifier: appData.appId,
842
+ deviceIdentifier,
843
+ isInstalled,
844
+ };
845
+ });
728
846
  }
729
847
  getDeviceLookingOptions(deviceInitOpts = {}) {
730
848
  const { shouldReturnImmediateResult, emulator } = deviceInitOpts;
@@ -747,7 +865,6 @@ class DevicesService extends events_1.EventEmitter {
747
865
  `To list available ${emulatorName.toLowerCase()} images, run '${this.$staticConfig.CLIENT_NAME.toLowerCase()} device <Platform> --available-devices'.`);
748
866
  }
749
867
  }
750
- exports.DevicesService = DevicesService;
751
868
  DevicesService.DEVICE_LOOKING_INTERVAL = 200;
752
869
  DevicesService.EMULATOR_IMAGES_DETECTION_INTERVAL = 60 * 1000;
753
870
  __decorate([
@@ -801,4 +918,6 @@ __decorate([
801
918
  __decorate([
802
919
  (0, decorators_1.exported)("devicesService")
803
920
  ], DevicesService.prototype, "getDebuggableViews", null);
921
+ exports.DevicesService = DevicesService;
804
922
  yok_1.injector.register("devicesService", DevicesService);
923
+ //# sourceMappingURL=devices-service.js.map