nativescript 8.9.0-dev.0 → 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 (405) 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/ios.d.ts +4 -2
  190. package/lib/definitions/project.d.ts +26 -0
  191. package/lib/detached-processes/cleanup-js-subprocess.js +20 -5
  192. package/lib/detached-processes/cleanup-process.js +43 -30
  193. package/lib/detached-processes/file-log-service.js +2 -1
  194. package/lib/device-path-provider.js +35 -23
  195. package/lib/device-sockets/ios/app-debug-socket-proxy-factory.js +171 -149
  196. package/lib/device-sockets/ios/notification.js +4 -1
  197. package/lib/device-sockets/ios/socket-request-executor.js +42 -24
  198. package/lib/helpers/android-bundle-validator-helper.js +3 -2
  199. package/lib/helpers/deploy-command-helper.js +50 -44
  200. package/lib/helpers/key-command-helper.js +17 -6
  201. package/lib/helpers/livesync-command-helper.js +155 -137
  202. package/lib/helpers/network-connectivity-validator.js +18 -6
  203. package/lib/helpers/options-track-helper.js +19 -7
  204. package/lib/helpers/package-path-helper.js +1 -0
  205. package/lib/helpers/platform-command-helper.js +127 -101
  206. package/lib/helpers/version-validator-helper.js +1 -0
  207. package/lib/key-commands/bootstrap.js +3 -2
  208. package/lib/key-commands/index.js +205 -154
  209. package/lib/nativescript-cli-lib-bootstrap.js +4 -0
  210. package/lib/nativescript-cli-lib.js +1 -0
  211. package/lib/nativescript-cli.js +24 -6
  212. package/lib/node/pbxproj-dom-xcode.js +1 -0
  213. package/lib/node/xcode.js +1 -0
  214. package/lib/node-package-manager.js +114 -81
  215. package/lib/options.js +156 -122
  216. package/lib/package-installation-manager.js +172 -130
  217. package/lib/package-manager.js +88 -63
  218. package/lib/platform-command-param.js +16 -4
  219. package/lib/pnpm-package-manager.js +81 -59
  220. package/lib/project-data.js +13 -1
  221. package/lib/providers/project-files-provider.js +2 -1
  222. package/lib/resolvers/livesync-service-resolver.js +1 -0
  223. package/lib/services/analytics/analytics-broker-process.js +32 -19
  224. package/lib/services/analytics/analytics-broker.js +31 -17
  225. package/lib/services/analytics/analytics-service.js +210 -170
  226. package/lib/services/analytics/google-analytics-provider.js +59 -43
  227. package/lib/services/analytics-settings-service.js +37 -15
  228. package/lib/services/android/android-bundle-tool-service.js +61 -43
  229. package/lib/services/android/gradle-build-args-service.js +23 -9
  230. package/lib/services/android/gradle-build-service.js +36 -22
  231. package/lib/services/android/gradle-command-service.js +36 -22
  232. package/lib/services/android-device-debug-service.js +123 -90
  233. package/lib/services/android-plugin-build-service.js +260 -205
  234. package/lib/services/android-project-service.js +241 -129
  235. package/lib/services/android-resources-migration-service.js +71 -51
  236. package/lib/services/apple-portal/apple-portal-application-service.js +64 -46
  237. package/lib/services/apple-portal/apple-portal-cookie-service.js +1 -0
  238. package/lib/services/apple-portal/apple-portal-session-service.js +218 -197
  239. package/lib/services/apple-portal/srp/srp-wrapper.js +61 -43
  240. package/lib/services/assets-generation/assets-generation-service.js +128 -103
  241. package/lib/services/build-artifacts-service.js +22 -10
  242. package/lib/services/build-data-service.js +1 -0
  243. package/lib/services/build-info-file-service.js +36 -20
  244. package/lib/services/cleanup-service.js +81 -48
  245. package/lib/services/cocoapods-platform-manager.js +9 -0
  246. package/lib/services/cocoapods-service.js +153 -112
  247. package/lib/services/debug-data-service.js +1 -0
  248. package/lib/services/debug-service-base.js +7 -0
  249. package/lib/services/device/device-install-app-service.js +72 -54
  250. package/lib/services/doctor-service.js +135 -101
  251. package/lib/services/extensibility-service.js +108 -81
  252. package/lib/services/files-hash-service.js +44 -26
  253. package/lib/services/hmr-status-service.js +3 -1
  254. package/lib/services/info-service.js +1 -0
  255. package/lib/services/initialize-service.js +54 -37
  256. package/lib/services/ios/export-options-plist-service.js +55 -38
  257. package/lib/services/ios/ios-signing-service.js +191 -168
  258. package/lib/services/ios/spm-service.js +73 -43
  259. package/lib/services/ios/xcodebuild-args-service.js +103 -77
  260. package/lib/services/ios/xcodebuild-command-service.js +26 -14
  261. package/lib/services/ios/xcodebuild-service.js +72 -52
  262. package/lib/services/ios-debugger-port-service.js +38 -24
  263. package/lib/services/ios-device-debug-service.js +103 -75
  264. package/lib/services/ios-entitlements-service.js +43 -31
  265. package/lib/services/ios-extensions-service.js +30 -18
  266. package/lib/services/ios-log-filter.js +20 -0
  267. package/lib/services/ios-native-target-service.js +6 -4
  268. package/lib/services/ios-project-service.js +605 -437
  269. package/lib/services/ios-provision-service.js +132 -108
  270. package/lib/services/ios-watch-app-service.js +33 -21
  271. package/lib/services/ip-service.js +55 -38
  272. package/lib/services/itmstransporter-service.js +153 -129
  273. package/lib/services/karma-execution.js +2 -0
  274. package/lib/services/livesync/android-device-livesync-service-base.js +49 -31
  275. package/lib/services/livesync/android-device-livesync-service.js +151 -120
  276. package/lib/services/livesync/android-device-livesync-sockets-service.js +155 -121
  277. package/lib/services/livesync/android-livesync-service.js +36 -14
  278. package/lib/services/livesync/android-livesync-tool.js +117 -90
  279. package/lib/services/livesync/device-livesync-service-base.js +30 -15
  280. package/lib/services/livesync/ios-device-livesync-service.js +150 -114
  281. package/lib/services/livesync/ios-livesync-service.js +60 -42
  282. package/lib/services/livesync/livesync-socket.js +1 -0
  283. package/lib/services/livesync/platform-livesync-service-base.js +124 -94
  284. package/lib/services/livesync-process-data-service.js +1 -0
  285. package/lib/services/log-parser-service.js +2 -1
  286. package/lib/services/log-source-map-service.js +56 -30
  287. package/lib/services/marking-mode-service.js +33 -17
  288. package/lib/services/metadata-filtering-service.js +1 -0
  289. package/lib/services/npm-config-service.js +5 -1
  290. package/lib/services/pacote-service.js +73 -51
  291. package/lib/services/performance-service.js +4 -2
  292. package/lib/services/platform/add-platform-service.js +119 -51
  293. package/lib/services/platform/platform-validation-service.js +34 -22
  294. package/lib/services/platform/prepare-native-platform-service.js +65 -49
  295. package/lib/services/platform-environment-requirements.js +43 -27
  296. package/lib/services/platform-project-service-base.js +1 -0
  297. package/lib/services/platforms-data-service.js +1 -0
  298. package/lib/services/plugins-service.js +168 -125
  299. package/lib/services/prepare-data-service.js +1 -0
  300. package/lib/services/project-backup-service.js +5 -1
  301. package/lib/services/project-changes-service.js +152 -124
  302. package/lib/services/project-cleanup-service.js +79 -64
  303. package/lib/services/project-config-service.js +111 -73
  304. package/lib/services/project-data-service.js +154 -108
  305. package/lib/services/project-name-service.js +44 -28
  306. package/lib/services/project-service.js +113 -84
  307. package/lib/services/project-templates-service.js +68 -52
  308. package/lib/services/qr-code-terminal-service.js +1 -0
  309. package/lib/services/require-service.js +1 -0
  310. package/lib/services/start-service.js +60 -41
  311. package/lib/services/temp-service.js +22 -8
  312. package/lib/services/terminal-spinner-service.js +28 -15
  313. package/lib/services/test-execution-service.js +79 -59
  314. package/lib/services/test-initialization-service.js +6 -2
  315. package/lib/services/timeline-profiler-service.js +2 -1
  316. package/lib/services/user-settings-service.js +1 -0
  317. package/lib/services/versions-service.js +140 -119
  318. package/lib/services/watch-ignore-list-service.js +1 -0
  319. package/lib/services/webpack/webpack-compiler-service.js +279 -215
  320. package/lib/services/xcconfig-service.js +21 -8
  321. package/lib/services/xcproj-service.js +1 -0
  322. package/lib/shared-event-bus.js +6 -0
  323. package/lib/sys-info.js +63 -45
  324. package/lib/tools/config-manipulation/config-transformer.js +21 -0
  325. package/lib/tools/node-modules/node-modules-builder.js +28 -16
  326. package/lib/tools/node-modules/node-modules-dependencies-builder.js +6 -0
  327. package/lib/yarn-package-manager.js +79 -59
  328. package/lib/yarn2-package-manager.js +82 -60
  329. package/node_modules/@npmcli/move-file/LICENSE.md +22 -0
  330. package/node_modules/@npmcli/move-file/README.md +69 -0
  331. package/node_modules/@npmcli/move-file/lib/index.js +185 -0
  332. package/node_modules/@npmcli/move-file/node_modules/mkdirp/LICENSE +21 -0
  333. package/node_modules/@npmcli/move-file/node_modules/mkdirp/bin/cmd.js +68 -0
  334. package/node_modules/@npmcli/move-file/node_modules/mkdirp/index.js +31 -0
  335. package/node_modules/@npmcli/move-file/node_modules/mkdirp/lib/find-made.js +29 -0
  336. package/node_modules/@npmcli/move-file/node_modules/mkdirp/lib/mkdirp-manual.js +64 -0
  337. package/node_modules/@npmcli/move-file/node_modules/mkdirp/lib/mkdirp-native.js +39 -0
  338. package/node_modules/@npmcli/move-file/node_modules/mkdirp/lib/opts-arg.js +23 -0
  339. package/node_modules/@npmcli/move-file/node_modules/mkdirp/lib/path-arg.js +29 -0
  340. package/node_modules/@npmcli/move-file/node_modules/mkdirp/lib/use-native.js +10 -0
  341. package/node_modules/@npmcli/move-file/node_modules/mkdirp/package.json +44 -0
  342. package/node_modules/@npmcli/move-file/node_modules/mkdirp/readme.markdown +266 -0
  343. package/node_modules/@npmcli/move-file/package.json +47 -0
  344. package/node_modules/balanced-match/.github/FUNDING.yml +2 -0
  345. package/node_modules/balanced-match/LICENSE.md +21 -0
  346. package/node_modules/balanced-match/README.md +97 -0
  347. package/node_modules/balanced-match/index.js +62 -0
  348. package/node_modules/balanced-match/package.json +48 -0
  349. package/node_modules/concat-map/.travis.yml +4 -0
  350. package/node_modules/concat-map/LICENSE +18 -0
  351. package/node_modules/concat-map/README.markdown +62 -0
  352. package/node_modules/concat-map/example/map.js +6 -0
  353. package/node_modules/concat-map/index.js +13 -0
  354. package/node_modules/concat-map/package.json +43 -0
  355. package/node_modules/concat-map/test/map.js +39 -0
  356. package/node_modules/fs.realpath/LICENSE +43 -0
  357. package/node_modules/fs.realpath/README.md +33 -0
  358. package/node_modules/fs.realpath/index.js +66 -0
  359. package/node_modules/fs.realpath/old.js +303 -0
  360. package/node_modules/fs.realpath/package.json +26 -0
  361. package/node_modules/inflight/LICENSE +15 -0
  362. package/node_modules/inflight/README.md +37 -0
  363. package/node_modules/inflight/inflight.js +54 -0
  364. package/node_modules/inflight/package.json +29 -0
  365. package/node_modules/inherits/LICENSE +16 -0
  366. package/node_modules/inherits/README.md +42 -0
  367. package/node_modules/inherits/inherits.js +9 -0
  368. package/node_modules/inherits/inherits_browser.js +27 -0
  369. package/node_modules/inherits/package.json +29 -0
  370. package/node_modules/once/LICENSE +15 -0
  371. package/node_modules/once/README.md +79 -0
  372. package/node_modules/once/once.js +42 -0
  373. package/node_modules/once/package.json +33 -0
  374. package/node_modules/path-is-absolute/index.js +20 -0
  375. package/node_modules/path-is-absolute/license +21 -0
  376. package/node_modules/path-is-absolute/package.json +43 -0
  377. package/node_modules/path-is-absolute/readme.md +59 -0
  378. package/node_modules/rimraf/LICENSE +15 -0
  379. package/node_modules/rimraf/README.md +101 -0
  380. package/node_modules/rimraf/bin.js +68 -0
  381. package/node_modules/rimraf/node_modules/brace-expansion/LICENSE +21 -0
  382. package/node_modules/rimraf/node_modules/brace-expansion/README.md +129 -0
  383. package/node_modules/rimraf/node_modules/brace-expansion/index.js +201 -0
  384. package/node_modules/rimraf/node_modules/brace-expansion/package.json +47 -0
  385. package/node_modules/rimraf/node_modules/glob/LICENSE +21 -0
  386. package/node_modules/rimraf/node_modules/glob/README.md +378 -0
  387. package/node_modules/rimraf/node_modules/glob/common.js +238 -0
  388. package/node_modules/rimraf/node_modules/glob/glob.js +790 -0
  389. package/node_modules/rimraf/node_modules/glob/package.json +55 -0
  390. package/node_modules/rimraf/node_modules/glob/sync.js +486 -0
  391. package/node_modules/rimraf/node_modules/minimatch/LICENSE +15 -0
  392. package/node_modules/rimraf/node_modules/minimatch/README.md +230 -0
  393. package/node_modules/rimraf/node_modules/minimatch/minimatch.js +947 -0
  394. package/node_modules/rimraf/node_modules/minimatch/package.json +33 -0
  395. package/node_modules/rimraf/package.json +32 -0
  396. package/node_modules/rimraf/rimraf.js +360 -0
  397. package/node_modules/stringify-package/LICENSE +13 -0
  398. package/node_modules/stringify-package/README.md +55 -0
  399. package/node_modules/stringify-package/index.js +18 -0
  400. package/node_modules/stringify-package/package.json +38 -0
  401. package/node_modules/wrappy/LICENSE +15 -0
  402. package/node_modules/wrappy/README.md +36 -0
  403. package/node_modules/wrappy/package.json +29 -0
  404. package/node_modules/wrappy/wrappy.js +33 -0
  405. package/package.json +79 -64
@@ -1,4 +1,13 @@
1
1
  "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
2
11
  Object.defineProperty(exports, "__esModule", { value: true });
3
12
  exports.AndroidEmulatorServices = void 0;
4
13
  const constants_1 = require("../../constants");
@@ -18,99 +27,111 @@ class AndroidEmulatorServices {
18
27
  this.$logger = $logger;
19
28
  this.$utils = $utils;
20
29
  }
21
- async getEmulatorImages() {
22
- const adbDevicesOutput = await this.$adb.getDevicesSafe();
23
- const avdAvailableEmulatorsOutput = await this.$androidVirtualDeviceService.getEmulatorImages(adbDevicesOutput);
24
- const genyAvailableDevicesOutput = await this.$androidGenymotionService.getEmulatorImages(adbDevicesOutput);
25
- const devices = _.concat(avdAvailableEmulatorsOutput.devices, genyAvailableDevicesOutput.devices).filter((item) => !!item);
26
- return {
27
- devices,
28
- errors: avdAvailableEmulatorsOutput.errors.concat(genyAvailableDevicesOutput.errors),
29
- };
30
+ getEmulatorImages() {
31
+ return __awaiter(this, void 0, void 0, function* () {
32
+ const adbDevicesOutput = yield this.$adb.getDevicesSafe();
33
+ const avdAvailableEmulatorsOutput = yield this.$androidVirtualDeviceService.getEmulatorImages(adbDevicesOutput);
34
+ const genyAvailableDevicesOutput = yield this.$androidGenymotionService.getEmulatorImages(adbDevicesOutput);
35
+ const devices = _.concat(avdAvailableEmulatorsOutput.devices, genyAvailableDevicesOutput.devices).filter((item) => !!item);
36
+ return {
37
+ devices,
38
+ errors: avdAvailableEmulatorsOutput.errors.concat(genyAvailableDevicesOutput.errors),
39
+ };
40
+ });
30
41
  }
31
- async getRunningEmulatorIds() {
32
- const adbDevicesOutput = await this.$adb.getDevicesSafe();
33
- const avds = await this.$androidVirtualDeviceService.getRunningEmulatorIds(adbDevicesOutput);
34
- const genies = await this.$androidGenymotionService.getRunningEmulatorIds(adbDevicesOutput);
35
- return avds.concat(genies);
42
+ getRunningEmulatorIds() {
43
+ return __awaiter(this, void 0, void 0, function* () {
44
+ const adbDevicesOutput = yield this.$adb.getDevicesSafe();
45
+ const avds = yield this.$androidVirtualDeviceService.getRunningEmulatorIds(adbDevicesOutput);
46
+ const genies = yield this.$androidGenymotionService.getRunningEmulatorIds(adbDevicesOutput);
47
+ return avds.concat(genies);
48
+ });
36
49
  }
37
- async getRunningEmulatorName(emulatorId) {
38
- let result = await this.$androidVirtualDeviceService.getRunningEmulatorName(emulatorId);
39
- if (!result) {
40
- result = await this.$androidGenymotionService.getRunningEmulatorName(emulatorId);
41
- }
42
- return result;
50
+ getRunningEmulatorName(emulatorId) {
51
+ return __awaiter(this, void 0, void 0, function* () {
52
+ let result = yield this.$androidVirtualDeviceService.getRunningEmulatorName(emulatorId);
53
+ if (!result) {
54
+ result = yield this.$androidGenymotionService.getRunningEmulatorName(emulatorId);
55
+ }
56
+ return result;
57
+ });
43
58
  }
44
- async getRunningEmulatorImageIdentifier(emulatorId) {
45
- let result = await this.$androidVirtualDeviceService.getRunningEmulatorImageIdentifier(emulatorId);
46
- if (!result) {
47
- result = await this.$androidGenymotionService.getRunningEmulatorImageIdentifier(emulatorId);
48
- }
49
- return result;
59
+ getRunningEmulatorImageIdentifier(emulatorId) {
60
+ return __awaiter(this, void 0, void 0, function* () {
61
+ let result = yield this.$androidVirtualDeviceService.getRunningEmulatorImageIdentifier(emulatorId);
62
+ if (!result) {
63
+ result = yield this.$androidGenymotionService.getRunningEmulatorImageIdentifier(emulatorId);
64
+ }
65
+ return result;
66
+ });
50
67
  }
51
- async startEmulator(options) {
52
- const output = await this.startEmulatorCore(options);
53
- let bootToCompleteOutput = null;
54
- if (output && output.runningEmulator) {
55
- bootToCompleteOutput = await this.waitForEmulatorBootToComplete(output.runningEmulator, output.endTimeEpoch, options.timeout);
56
- }
57
- return {
58
- errors: ((output && output.errors) || []).concat((bootToCompleteOutput && bootToCompleteOutput.errors) || []),
59
- };
68
+ startEmulator(options) {
69
+ return __awaiter(this, void 0, void 0, function* () {
70
+ const output = yield this.startEmulatorCore(options);
71
+ let bootToCompleteOutput = null;
72
+ if (output && output.runningEmulator) {
73
+ bootToCompleteOutput = yield this.waitForEmulatorBootToComplete(output.runningEmulator, output.endTimeEpoch, options.timeout);
74
+ }
75
+ return {
76
+ errors: ((output && output.errors) || []).concat((bootToCompleteOutput && bootToCompleteOutput.errors) || []),
77
+ };
78
+ });
60
79
  }
61
80
  detach(deviceInfo) {
62
81
  this.$androidVirtualDeviceService.detach(deviceInfo);
63
82
  }
64
- async startEmulatorCore(options) {
65
- const timeout = options.timeout || constants_1.AndroidVirtualDevice.TIMEOUT_SECONDS;
66
- const endTimeEpoch = (0, helpers_1.getCurrentEpochTime)() + this.$utils.getMilliSecondsTimeout(timeout);
67
- const availableEmulators = (await this.getEmulatorImages()).devices;
68
- let emulator = this.$emulatorHelper.getEmulatorByStartEmulatorOptions(options, availableEmulators);
69
- if (!emulator &&
70
- !options.emulatorIdOrName &&
71
- !options.imageIdentifier &&
72
- !options.emulator) {
73
- emulator = this.getBestFit(availableEmulators);
74
- }
75
- if (!emulator) {
76
- return {
77
- runningEmulator: null,
78
- errors: [
79
- `No emulator image available for device identifier '${options.emulatorIdOrName || options.imageIdentifier}'.`,
80
- ],
81
- endTimeEpoch,
82
- };
83
- }
84
- if (emulator.errorHelp) {
85
- return {
86
- runningEmulator: null,
87
- errors: [emulator.errorHelp],
88
- endTimeEpoch,
89
- };
90
- }
91
- this.spawnEmulator(emulator);
92
- const isInfiniteWait = this.$utils.getMilliSecondsTimeout(timeout) === 0;
93
- let hasTimeLeft = (0, helpers_1.getCurrentEpochTime)() < endTimeEpoch;
94
- while (hasTimeLeft || isInfiniteWait) {
95
- const emulators = (await this.getEmulatorImages()).devices;
96
- const newEmulator = _.find(emulators, (e) => e.imageIdentifier === emulator.imageIdentifier);
97
- if (newEmulator && this.$emulatorHelper.isEmulatorRunning(newEmulator)) {
83
+ startEmulatorCore(options) {
84
+ return __awaiter(this, void 0, void 0, function* () {
85
+ const timeout = options.timeout || constants_1.AndroidVirtualDevice.TIMEOUT_SECONDS;
86
+ const endTimeEpoch = (0, helpers_1.getCurrentEpochTime)() + this.$utils.getMilliSecondsTimeout(timeout);
87
+ const availableEmulators = (yield this.getEmulatorImages()).devices;
88
+ let emulator = this.$emulatorHelper.getEmulatorByStartEmulatorOptions(options, availableEmulators);
89
+ if (!emulator &&
90
+ !options.emulatorIdOrName &&
91
+ !options.imageIdentifier &&
92
+ !options.emulator) {
93
+ emulator = this.getBestFit(availableEmulators);
94
+ }
95
+ if (!emulator) {
98
96
  return {
99
- runningEmulator: newEmulator,
100
- errors: [],
97
+ runningEmulator: null,
98
+ errors: [
99
+ `No emulator image available for device identifier '${options.emulatorIdOrName || options.imageIdentifier}'.`,
100
+ ],
101
101
  endTimeEpoch,
102
102
  };
103
103
  }
104
- await (0, helpers_1.sleep)(10000);
105
- hasTimeLeft = (0, helpers_1.getCurrentEpochTime)() < endTimeEpoch;
106
- }
107
- if (!hasTimeLeft && !isInfiniteWait) {
108
- return {
109
- runningEmulator: null,
110
- errors: [constants_1.AndroidVirtualDevice.UNABLE_TO_START_EMULATOR_MESSAGE],
111
- endTimeEpoch,
112
- };
113
- }
104
+ if (emulator.errorHelp) {
105
+ return {
106
+ runningEmulator: null,
107
+ errors: [emulator.errorHelp],
108
+ endTimeEpoch,
109
+ };
110
+ }
111
+ this.spawnEmulator(emulator);
112
+ const isInfiniteWait = this.$utils.getMilliSecondsTimeout(timeout) === 0;
113
+ let hasTimeLeft = (0, helpers_1.getCurrentEpochTime)() < endTimeEpoch;
114
+ while (hasTimeLeft || isInfiniteWait) {
115
+ const emulators = (yield this.getEmulatorImages()).devices;
116
+ const newEmulator = _.find(emulators, (e) => e.imageIdentifier === emulator.imageIdentifier);
117
+ if (newEmulator && this.$emulatorHelper.isEmulatorRunning(newEmulator)) {
118
+ return {
119
+ runningEmulator: newEmulator,
120
+ errors: [],
121
+ endTimeEpoch,
122
+ };
123
+ }
124
+ yield (0, helpers_1.sleep)(10000); // the emulator definitely takes its time to wake up
125
+ hasTimeLeft = (0, helpers_1.getCurrentEpochTime)() < endTimeEpoch;
126
+ }
127
+ if (!hasTimeLeft && !isInfiniteWait) {
128
+ return {
129
+ runningEmulator: null,
130
+ errors: [constants_1.AndroidVirtualDevice.UNABLE_TO_START_EMULATOR_MESSAGE],
131
+ endTimeEpoch,
132
+ };
133
+ }
134
+ });
114
135
  }
115
136
  spawnEmulator(emulator) {
116
137
  let pathToEmulatorExecutable = null;
@@ -148,33 +169,38 @@ class AndroidEmulatorServices {
148
169
  const bestVersion = best && best.version && semver.coerce(best.version);
149
170
  return bestVersion && semver.gte(bestVersion, minVersion) ? best : null;
150
171
  }
151
- async waitForEmulatorBootToComplete(emulator, endTimeEpoch, timeout) {
152
- this.$logger.info("Waiting for emulator device initialization...", {
153
- [constants_2.LoggerConfigData.skipNewLine]: true,
154
- });
155
- const isInfiniteWait = this.$utils.getMilliSecondsTimeout(timeout || constants_1.AndroidVirtualDevice.TIMEOUT_SECONDS) === 0;
156
- while ((0, helpers_1.getCurrentEpochTime)() < endTimeEpoch || isInfiniteWait) {
157
- const isEmulatorBootCompleted = await this.isEmulatorBootCompleted(emulator.identifier);
158
- if (isEmulatorBootCompleted) {
159
- this.$logger.info(os_1.EOL, { [constants_2.LoggerConfigData.skipNewLine]: true });
160
- return {
161
- runningEmulator: emulator,
162
- errors: [],
163
- };
172
+ waitForEmulatorBootToComplete(emulator, endTimeEpoch, timeout) {
173
+ return __awaiter(this, void 0, void 0, function* () {
174
+ this.$logger.info("Waiting for emulator device initialization...", {
175
+ [constants_2.LoggerConfigData.skipNewLine]: true,
176
+ });
177
+ const isInfiniteWait = this.$utils.getMilliSecondsTimeout(timeout || constants_1.AndroidVirtualDevice.TIMEOUT_SECONDS) === 0;
178
+ while ((0, helpers_1.getCurrentEpochTime)() < endTimeEpoch || isInfiniteWait) {
179
+ const isEmulatorBootCompleted = yield this.isEmulatorBootCompleted(emulator.identifier);
180
+ if (isEmulatorBootCompleted) {
181
+ this.$logger.info(os_1.EOL, { [constants_2.LoggerConfigData.skipNewLine]: true });
182
+ return {
183
+ runningEmulator: emulator,
184
+ errors: [],
185
+ };
186
+ }
187
+ this.$logger.info(".", { [constants_2.LoggerConfigData.skipNewLine]: true });
188
+ yield (0, helpers_1.sleep)(10000);
164
189
  }
165
- this.$logger.info(".", { [constants_2.LoggerConfigData.skipNewLine]: true });
166
- await (0, helpers_1.sleep)(10000);
167
- }
168
- return {
169
- runningEmulator: null,
170
- errors: [constants_1.AndroidVirtualDevice.UNABLE_TO_START_EMULATOR_MESSAGE],
171
- };
190
+ return {
191
+ runningEmulator: null,
192
+ errors: [constants_1.AndroidVirtualDevice.UNABLE_TO_START_EMULATOR_MESSAGE],
193
+ };
194
+ });
172
195
  }
173
- async isEmulatorBootCompleted(emulatorId) {
174
- const output = await this.$adb.getPropertyValue(emulatorId, "dev.bootcomplete");
175
- const matches = output.match("1");
176
- return matches && matches.length > 0;
196
+ isEmulatorBootCompleted(emulatorId) {
197
+ return __awaiter(this, void 0, void 0, function* () {
198
+ const output = yield this.$adb.getPropertyValue(emulatorId, "dev.bootcomplete");
199
+ const matches = output.match("1");
200
+ return matches && matches.length > 0;
201
+ });
177
202
  }
178
203
  }
179
204
  exports.AndroidEmulatorServices = AndroidEmulatorServices;
180
205
  yok_1.injector.register("androidEmulatorServices", AndroidEmulatorServices);
206
+ //# sourceMappingURL=android-emulator-services.js.map
@@ -12,6 +12,8 @@ class AndroidIniFileParser {
12
12
  if (!this.$fs.exists(iniFilePath)) {
13
13
  return null;
14
14
  }
15
+ // avd files can have different encoding, defined on the first line.
16
+ // find which one it is (if any) and use it to correctly read the file contents
15
17
  const encoding = this.getAvdEncoding(iniFilePath);
16
18
  const contents = this.$fs.readText(iniFilePath, encoding).split("\n");
17
19
  return _.reduce(contents, (result, line) => {
@@ -44,6 +46,8 @@ class AndroidIniFileParser {
44
46
  }, Object.create(null));
45
47
  }
46
48
  getAvdEncoding(avdName) {
49
+ // avd files can have different encoding, defined on the first line.
50
+ // find which one it is (if any) and use it to correctly read the file contents
47
51
  let encoding = "utf8";
48
52
  let contents = this.$fs.readText(avdName, "ascii");
49
53
  if (contents.length > 0) {
@@ -57,18 +61,22 @@ class AndroidIniFileParser {
57
61
  }
58
62
  return encoding;
59
63
  }
64
+ // Android L is not written as a number in the .ini files, and we need to convert it
60
65
  readTargetNum(target) {
61
66
  const platform = target.replace("android-", "");
62
67
  let platformNumber = +platform;
63
68
  if (isNaN(platformNumber)) {
69
+ // this may be a google image
64
70
  const googlePlatform = target.split(":")[2];
65
71
  if (googlePlatform) {
66
72
  platformNumber = +googlePlatform;
67
73
  }
68
74
  else if (platform === "L") {
75
+ // Android SDK 20 preview
69
76
  platformNumber = 20;
70
77
  }
71
78
  else if (platform === "MNC") {
79
+ // Android M preview
72
80
  platformNumber = 22;
73
81
  }
74
82
  }
@@ -77,3 +85,4 @@ class AndroidIniFileParser {
77
85
  }
78
86
  exports.AndroidIniFileParser = AndroidIniFileParser;
79
87
  yok_1.injector.register("androidIniFileParser", AndroidIniFileParser);
88
+ //# sourceMappingURL=android-ini-file-parser.js.map
@@ -36,7 +36,11 @@ class AndroidLogFilter {
36
36
  return consoleLogMessage;
37
37
  }
38
38
  }
39
- exports.AndroidLogFilter = AndroidLogFilter;
39
+ //sample line is "I/Web Console( 4438): Received Event: deviceready at file:///storage/emulated/0/Icenium/com.telerik.TestApp/js/index.js:48"
40
40
  AndroidLogFilter.LINE_REGEX = /.\/(.+?)\s*\(\s*\d+?\): (.*)/;
41
+ // sample line is "11-23 12:39:07.310 1584 1597 I art : Background sticky concurrent mark sweep GC freed 21966(1780KB) AllocSpace objects, 4(80KB) LOS objects, 77% free, 840KB/3MB, paused 4.018ms total 158.629ms"
42
+ // or '12-28 10:45:08.020 3329 3329 W chromium: [WARNING:data_reduction_proxy_settings.cc(328)] SPDY proxy OFF at startup'
41
43
  AndroidLogFilter.API_LEVEL_23_LINE_REGEX = /.+?\s+?(?:[A-Z]\s+?)([A-Za-z \.]+?)\s*?\: (.*)/;
44
+ exports.AndroidLogFilter = AndroidLogFilter;
42
45
  yok_1.injector.register("androidLogFilter", AndroidLogFilter);
46
+ //# sourceMappingURL=android-log-filter.js.map
@@ -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.AndroidVirtualDeviceService = void 0;
10
19
  const net = require("net");
@@ -30,38 +39,44 @@ class AndroidVirtualDeviceService {
30
39
  this.mapEmulatorIdToImageIdentifier = {};
31
40
  this.androidHome = process.env.ANDROID_HOME;
32
41
  }
33
- async getEmulatorImages(adbDevicesOutput) {
34
- const availableEmulatorsOutput = await this.getEmulatorImagesCore();
35
- const avds = availableEmulatorsOutput.devices;
36
- const runningEmulatorIds = await this.getRunningEmulatorIds(adbDevicesOutput);
37
- const runningEmulators = await (0, helpers_1.settlePromises)(_.map(runningEmulatorIds, (emulatorId) => this.getRunningEmulatorData(emulatorId, avds)));
38
- const devices = availableEmulatorsOutput.devices.map((emulator) => this.$emulatorHelper.getEmulatorByImageIdentifier(emulator.imageIdentifier, runningEmulators) || emulator);
39
- return {
40
- devices,
41
- errors: availableEmulatorsOutput.errors,
42
- };
42
+ getEmulatorImages(adbDevicesOutput) {
43
+ return __awaiter(this, void 0, void 0, function* () {
44
+ const availableEmulatorsOutput = yield this.getEmulatorImagesCore();
45
+ const avds = availableEmulatorsOutput.devices;
46
+ const runningEmulatorIds = yield this.getRunningEmulatorIds(adbDevicesOutput);
47
+ const runningEmulators = yield (0, helpers_1.settlePromises)(_.map(runningEmulatorIds, (emulatorId) => this.getRunningEmulatorData(emulatorId, avds)));
48
+ const devices = availableEmulatorsOutput.devices.map((emulator) => this.$emulatorHelper.getEmulatorByImageIdentifier(emulator.imageIdentifier, runningEmulators) || emulator);
49
+ return {
50
+ devices,
51
+ errors: availableEmulatorsOutput.errors,
52
+ };
53
+ });
43
54
  }
44
- async getRunningEmulatorIds(adbDevicesOutput) {
45
- const emulatorIds = _.reduce(adbDevicesOutput, (result, device) => {
46
- const rx = device.match(constants_1.AndroidVirtualDevice.RUNNING_AVD_EMULATOR_REGEX);
47
- if (rx && rx[1]) {
48
- result.push(rx[1]);
55
+ getRunningEmulatorIds(adbDevicesOutput) {
56
+ return __awaiter(this, void 0, void 0, function* () {
57
+ const emulatorIds = _.reduce(adbDevicesOutput, (result, device) => {
58
+ const rx = device.match(constants_1.AndroidVirtualDevice.RUNNING_AVD_EMULATOR_REGEX);
59
+ if (rx && rx[1]) {
60
+ result.push(rx[1]);
61
+ }
62
+ return result;
63
+ }, []);
64
+ return emulatorIds;
65
+ });
66
+ }
67
+ getRunningEmulatorName(emulatorId) {
68
+ return __awaiter(this, void 0, void 0, function* () {
69
+ const imageIdentifier = yield this.getRunningEmulatorImageIdentifier(emulatorId);
70
+ const iniFilePath = path.join(this.pathToAvdHomeDir, `${imageIdentifier}.ini`);
71
+ const iniFileInfo = this.$androidIniFileParser.parseIniFile(iniFilePath);
72
+ let result = imageIdentifier;
73
+ if (iniFileInfo && iniFileInfo.path) {
74
+ const configIniFileInfo = this.$androidIniFileParser.parseIniFile(path.join(iniFileInfo.path, constants_1.AndroidVirtualDevice.CONFIG_INI_FILE_NAME));
75
+ result =
76
+ (configIniFileInfo && configIniFileInfo.displayName) || imageIdentifier;
49
77
  }
50
78
  return result;
51
- }, []);
52
- return emulatorIds;
53
- }
54
- async getRunningEmulatorName(emulatorId) {
55
- const imageIdentifier = await this.getRunningEmulatorImageIdentifier(emulatorId);
56
- const iniFilePath = path.join(this.pathToAvdHomeDir, `${imageIdentifier}.ini`);
57
- const iniFileInfo = this.$androidIniFileParser.parseIniFile(iniFilePath);
58
- let result = imageIdentifier;
59
- if (iniFileInfo && iniFileInfo.path) {
60
- const configIniFileInfo = this.$androidIniFileParser.parseIniFile(path.join(iniFileInfo.path, constants_1.AndroidVirtualDevice.CONFIG_INI_FILE_NAME));
61
- result =
62
- (configIniFileInfo && configIniFileInfo.displayName) || imageIdentifier;
63
- }
64
- return result;
79
+ });
65
80
  }
66
81
  startEmulatorArgs(imageIdentifier) {
67
82
  return ["-avd", imageIdentifier];
@@ -69,6 +84,9 @@ class AndroidVirtualDeviceService {
69
84
  get pathToEmulatorExecutable() {
70
85
  const emulatorExecutableName = "emulator";
71
86
  if (this.androidHome) {
87
+ // Check https://developer.android.com/studio/releases/sdk-tools.html (25.3.0)
88
+ // Since this version of SDK tools, the emulator is a separate package.
89
+ // However the emulator executable still exists in the "tools" dir.
72
90
  const pathToEmulatorFromAndroidStudio = path.join(this.androidHome, emulatorExecutableName, emulatorExecutableName);
73
91
  const realFilePath = this.$hostInfo.isWindows
74
92
  ? `${pathToEmulatorFromAndroidStudio}.exe`
@@ -108,6 +126,17 @@ class AndroidVirtualDeviceService {
108
126
  client.on("data", (data) => {
109
127
  output += data.toString();
110
128
  const imageIdentifier = this.getImageIdentifierFromClientOutput(output);
129
+ // old output should look like:
130
+ // Android Console: type 'help' for a list of commands
131
+ // OK
132
+ // <Name of image>
133
+ // OK
134
+ // new output should look like:
135
+ // Android Console: type 'help' for a list of commands
136
+ // OK
137
+ // a\u001b[K\u001b[Dav\u001b[K\u001b[D\u001b[Davd\u001b...
138
+ // <Name of image>
139
+ // OK
111
140
  if (imageIdentifier && !isResolved) {
112
141
  this.mapEmulatorIdToImageIdentifier[emulatorId] = imageIdentifier;
113
142
  this.clearNetConnection(client, timer);
@@ -125,56 +154,64 @@ class AndroidVirtualDeviceService {
125
154
  delete this.mapEmulatorIdToImageIdentifier[deviceInfo.identifier];
126
155
  }
127
156
  }
128
- async getEmulatorImagesCore() {
129
- let result = null;
130
- let devices = [];
131
- let errors = [];
132
- const canExecuteAvdManagerCommand = await this.canExecuteAvdManagerCommand();
133
- if (!canExecuteAvdManagerCommand) {
134
- errors = [
135
- "Unable to execute avdmanager, ensure JAVA_HOME is set and points to correct directory",
136
- ];
137
- }
138
- if (canExecuteAvdManagerCommand) {
139
- const sanitizedPathToAvdManagerExecutable = this.$hostInfo.isWindows
140
- ? (0, helpers_1.quoteString)(this.pathToAvdManagerExecutable)
141
- : this.pathToAvdManagerExecutable;
142
- result = await this.$childProcess.trySpawnFromCloseEvent(sanitizedPathToAvdManagerExecutable, ["list", "avds"], { shell: this.$hostInfo.isWindows });
143
- }
144
- else if (this.pathToAndroidExecutable &&
145
- this.$fs.exists(this.pathToAndroidExecutable)) {
146
- result = await this.$childProcess.trySpawnFromCloseEvent(this.pathToAndroidExecutable, ["list", "avd"]);
147
- }
148
- if (result && result.stdout) {
149
- devices = this.parseListAvdsOutput(result.stdout);
150
- errors = result && result.stderr ? [result.stderr] : [];
151
- }
152
- else {
153
- devices = this.listAvdsFromDirectory();
154
- }
155
- return { devices, errors };
156
- }
157
- async canExecuteAvdManagerCommand() {
158
- let canExecute = false;
159
- if (this.pathToAvdManagerExecutable &&
160
- this.$fs.exists(this.pathToAvdManagerExecutable)) {
161
- if (process.env.JAVA_HOME) {
162
- canExecute = !!(await this.$sysInfo.getJavaVersionFromJavaHome());
157
+ getEmulatorImagesCore() {
158
+ return __awaiter(this, void 0, void 0, function* () {
159
+ let result = null;
160
+ let devices = [];
161
+ let errors = [];
162
+ const canExecuteAvdManagerCommand = yield this.canExecuteAvdManagerCommand();
163
+ if (!canExecuteAvdManagerCommand) {
164
+ errors = [
165
+ "Unable to execute avdmanager, ensure JAVA_HOME is set and points to correct directory",
166
+ ];
167
+ }
168
+ if (canExecuteAvdManagerCommand) {
169
+ const sanitizedPathToAvdManagerExecutable = this.$hostInfo.isWindows
170
+ ? (0, helpers_1.quoteString)(this.pathToAvdManagerExecutable)
171
+ : this.pathToAvdManagerExecutable;
172
+ result = yield this.$childProcess.trySpawnFromCloseEvent(sanitizedPathToAvdManagerExecutable, ["list", "avds"], { shell: this.$hostInfo.isWindows });
173
+ }
174
+ else if (this.pathToAndroidExecutable &&
175
+ this.$fs.exists(this.pathToAndroidExecutable)) {
176
+ result = yield this.$childProcess.trySpawnFromCloseEvent(this.pathToAndroidExecutable, ["list", "avd"]);
177
+ }
178
+ if (result && result.stdout) {
179
+ devices = this.parseListAvdsOutput(result.stdout);
180
+ errors = result && result.stderr ? [result.stderr] : [];
163
181
  }
164
182
  else {
165
- canExecute = !!(await this.$sysInfo.getJavaVersionFromPath());
183
+ devices = this.listAvdsFromDirectory();
166
184
  }
167
- }
168
- return canExecute;
185
+ return { devices, errors };
186
+ });
169
187
  }
170
- async getRunningEmulatorData(runningEmulatorId, availableEmulators) {
171
- const imageIdentifier = await this.getRunningEmulatorImageIdentifier(runningEmulatorId);
172
- const runningEmulator = this.$emulatorHelper.getEmulatorByImageIdentifier(imageIdentifier, availableEmulators);
173
- if (!runningEmulator) {
174
- return null;
175
- }
176
- this.$emulatorHelper.setRunningAndroidEmulatorProperties(runningEmulatorId, runningEmulator);
177
- return runningEmulator;
188
+ canExecuteAvdManagerCommand() {
189
+ return __awaiter(this, void 0, void 0, function* () {
190
+ let canExecute = false;
191
+ if (this.pathToAvdManagerExecutable &&
192
+ this.$fs.exists(this.pathToAvdManagerExecutable)) {
193
+ if (process.env.JAVA_HOME) {
194
+ // In case JAVA_HOME is set, but it points to incorrect directory (i.e. there's no java in $JAVA_HOME/bin/java), avdmanager will fail
195
+ // no matter if you have correct java in PATH.
196
+ canExecute = !!(yield this.$sysInfo.getJavaVersionFromJavaHome());
197
+ }
198
+ else {
199
+ canExecute = !!(yield this.$sysInfo.getJavaVersionFromPath());
200
+ }
201
+ }
202
+ return canExecute;
203
+ });
204
+ }
205
+ getRunningEmulatorData(runningEmulatorId, availableEmulators) {
206
+ return __awaiter(this, void 0, void 0, function* () {
207
+ const imageIdentifier = yield this.getRunningEmulatorImageIdentifier(runningEmulatorId);
208
+ const runningEmulator = this.$emulatorHelper.getEmulatorByImageIdentifier(imageIdentifier, availableEmulators);
209
+ if (!runningEmulator) {
210
+ return null;
211
+ }
212
+ this.$emulatorHelper.setRunningAndroidEmulatorProperties(runningEmulatorId, runningEmulator);
213
+ return runningEmulator;
214
+ });
178
215
  }
179
216
  get pathToAvdManagerExecutable() {
180
217
  let avdManagerPath = null;
@@ -230,6 +267,13 @@ class AndroidVirtualDeviceService {
230
267
  const avdOutput = output.split(constants_1.AndroidVirtualDevice.AVAILABLE_AVDS_MESSAGE);
231
268
  const availableDevices = avdOutput && avdOutput[1] && avdOutput[1].trim();
232
269
  if (availableDevices) {
270
+ // In some cases `avdmanager list avds` command prints:
271
+ // `The following Android Virtual Devices could not be loaded:
272
+ // Name: Pixel_2_XL_API_28
273
+ // Path: /Users/<username>/.android/avd/Pixel_2_XL_API_28.avd
274
+ // Error: Google pixel_2_xl no longer exists as a device`
275
+ // These devices sometimes are valid so try to parse them.
276
+ // Also these devices are printed at the end of the output and are separated with 2 new lines from the valid devices output.
233
277
  const parts = availableDevices.split(/(?:\r?\n){2}/);
234
278
  const items = [parts[0], parts[1]].filter((item) => !!item);
235
279
  for (const item of items) {
@@ -246,6 +290,7 @@ class AndroidVirtualDeviceService {
246
290
  }
247
291
  getAvdManagerDeviceInfo(output) {
248
292
  const avdManagerDeviceInfo = Object.create(null);
293
+ // Split by `\n`, not EOL as the avdmanager and android executables print results with `\n` only even on Windows
249
294
  _.reduce(output.split("\n"), (result, row) => {
250
295
  const [key, value] = row.split(": ").map((part) => part.trim());
251
296
  switch (key) {
@@ -292,6 +337,7 @@ class AndroidVirtualDeviceService {
292
337
  };
293
338
  }
294
339
  getImageIdentifierFromClientOutput(output) {
340
+ // The lines should be trimmed after the split because the output has \r\n and when using split(EOL) on mac each line ends with \r.
295
341
  const lines = _.map(output.split(os_1.EOL), (line) => line.trim());
296
342
  const firstIndexOfOk = _.indexOf(lines, "OK");
297
343
  if (firstIndexOfOk < 0) {
@@ -320,7 +366,6 @@ class AndroidVirtualDeviceService {
320
366
  }
321
367
  }
322
368
  }
323
- exports.AndroidVirtualDeviceService = AndroidVirtualDeviceService;
324
369
  __decorate([
325
370
  (0, decorators_1.cache)()
326
371
  ], AndroidVirtualDeviceService.prototype, "pathToEmulatorExecutable", null);
@@ -339,4 +384,6 @@ __decorate([
339
384
  __decorate([
340
385
  (0, decorators_1.cache)()
341
386
  ], AndroidVirtualDeviceService.prototype, "getConfigurationError", null);
387
+ exports.AndroidVirtualDeviceService = AndroidVirtualDeviceService;
342
388
  yok_1.injector.register("androidVirtualDeviceService", AndroidVirtualDeviceService);
389
+ //# sourceMappingURL=android-virtual-device-service.js.map