nativescript 8.9.0-dev.2 → 8.9.0-dev.4

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 (345) hide show
  1. package/config/test-deps-versions-generated.json +1 -1
  2. package/docs/man_pages/project/configuration/widget-ios.md +24 -0
  3. package/docs/man_pages/project/configuration/widget.md +24 -0
  4. package/docs/man_pages/start.md +1 -1
  5. package/lib/android-tools-info.js +11 -22
  6. package/lib/base-package-manager.js +53 -70
  7. package/lib/bun-package-manager.js +75 -98
  8. package/lib/color.js +4 -4
  9. package/lib/commands/add-platform.js +14 -30
  10. package/lib/commands/apple-login.js +18 -29
  11. package/lib/commands/appstore-list.js +34 -45
  12. package/lib/commands/appstore-upload.js +54 -67
  13. package/lib/commands/build.js +55 -87
  14. package/lib/commands/clean.js +169 -184
  15. package/lib/commands/command-base.js +14 -27
  16. package/lib/commands/config.js +49 -68
  17. package/lib/commands/create-project.js +215 -234
  18. package/lib/commands/debug.js +66 -88
  19. package/lib/commands/deploy.js +28 -44
  20. package/lib/commands/embedding/embed.js +37 -56
  21. package/lib/commands/extensibility/install-extension.js +5 -16
  22. package/lib/commands/extensibility/list-extensions.js +13 -24
  23. package/lib/commands/extensibility/uninstall-extension.js +4 -15
  24. package/lib/commands/fonts.js +30 -41
  25. package/lib/commands/generate-assets.js +13 -28
  26. package/lib/commands/generate-help.js +2 -13
  27. package/lib/commands/generate.js +49 -60
  28. package/lib/commands/info.js +2 -13
  29. package/lib/commands/install.js +34 -49
  30. package/lib/commands/list-platforms.js +14 -25
  31. package/lib/commands/migrate.js +15 -26
  32. package/lib/commands/native-add.js +23 -46
  33. package/lib/commands/platform-clean.js +19 -32
  34. package/lib/commands/plugin/add-plugin.js +12 -25
  35. package/lib/commands/plugin/build-plugin.js +31 -44
  36. package/lib/commands/plugin/create-plugin.js +114 -137
  37. package/lib/commands/plugin/list-plugins.js +22 -33
  38. package/lib/commands/plugin/remove-plugin.js +21 -34
  39. package/lib/commands/plugin/update-plugin.js +20 -33
  40. package/lib/commands/post-install.js +25 -38
  41. package/lib/commands/prepare.js +19 -35
  42. package/lib/commands/preview.js +50 -63
  43. package/lib/commands/remove-platform.js +7 -18
  44. package/lib/commands/resources/resources-update.js +14 -27
  45. package/lib/commands/run.js +55 -76
  46. package/lib/commands/start.js +6 -19
  47. package/lib/commands/test-init.js +126 -137
  48. package/lib/commands/test.js +72 -95
  49. package/lib/commands/typings.js +126 -142
  50. package/lib/commands/update-platform.js +26 -39
  51. package/lib/commands/update.js +31 -44
  52. package/lib/commands/widget.js +408 -357
  53. package/lib/common/child-process.js +53 -72
  54. package/lib/common/codeGeneration/code-entity.js +1 -1
  55. package/lib/common/codeGeneration/code-printer.js +1 -1
  56. package/lib/common/command-params.js +7 -18
  57. package/lib/common/commands/analytics.js +29 -42
  58. package/lib/common/commands/autocompletion.js +41 -58
  59. package/lib/common/commands/device/device-log-stream.js +12 -23
  60. package/lib/common/commands/device/get-file.js +23 -34
  61. package/lib/common/commands/device/list-applications.js +12 -23
  62. package/lib/common/commands/device/list-devices.js +72 -87
  63. package/lib/common/commands/device/list-files.js +24 -35
  64. package/lib/common/commands/device/put-file.js +23 -34
  65. package/lib/common/commands/device/run-application.js +12 -25
  66. package/lib/common/commands/device/stop-application.js +11 -22
  67. package/lib/common/commands/device/uninstall-application.js +6 -17
  68. package/lib/common/commands/generate-messages.js +17 -28
  69. package/lib/common/commands/help.js +20 -33
  70. package/lib/common/commands/package-manager-get.js +6 -17
  71. package/lib/common/commands/package-manager-set.js +9 -20
  72. package/lib/common/commands/post-install.js +2 -13
  73. package/lib/common/commands/preuninstall.js +27 -42
  74. package/lib/common/commands/proxy/proxy-base.js +11 -22
  75. package/lib/common/commands/proxy/proxy-clear.js +4 -15
  76. package/lib/common/commands/proxy/proxy-get.js +3 -14
  77. package/lib/common/commands/proxy/proxy-set.js +87 -100
  78. package/lib/common/constants.js +11 -11
  79. package/lib/common/decorators.js +10 -22
  80. package/lib/common/dispatchers.js +84 -101
  81. package/lib/common/errors.js +92 -107
  82. package/lib/common/file-system.js +110 -132
  83. package/lib/common/header.js +1 -2
  84. package/lib/common/helpers.js +149 -178
  85. package/lib/common/host-info.js +40 -53
  86. package/lib/common/http-client.js +104 -119
  87. package/lib/common/logger/appenders/cli-appender.js +1 -2
  88. package/lib/common/logger/appenders/emit-appender.js +1 -2
  89. package/lib/common/logger/layouts/cli-layout.js +1 -2
  90. package/lib/common/logger/logger.js +4 -4
  91. package/lib/common/mobile/android/android-application-manager.js +138 -159
  92. package/lib/common/mobile/android/android-debug-bridge-result-handler.js +1 -1
  93. package/lib/common/mobile/android/android-debug-bridge.js +92 -117
  94. package/lib/common/mobile/android/android-device-file-system.js +101 -134
  95. package/lib/common/mobile/android/android-device-hash-service.js +52 -77
  96. package/lib/common/mobile/android/android-device.js +73 -90
  97. package/lib/common/mobile/android/android-emulator-services.js +105 -130
  98. package/lib/common/mobile/android/android-log-filter.js +1 -1
  99. package/lib/common/mobile/android/android-virtual-device-service.js +78 -99
  100. package/lib/common/mobile/android/device-android-debug-bridge.js +13 -29
  101. package/lib/common/mobile/android/genymotion/genymotion-service.js +94 -121
  102. package/lib/common/mobile/android/genymotion/virtualbox-service.js +74 -91
  103. package/lib/common/mobile/android/logcat-helper.js +114 -133
  104. package/lib/common/mobile/application-manager-base.js +89 -112
  105. package/lib/common/mobile/device-log-provider-base.js +7 -18
  106. package/lib/common/mobile/ios/device/ios-application-manager.js +79 -108
  107. package/lib/common/mobile/ios/device/ios-device-file-system.js +78 -105
  108. package/lib/common/mobile/ios/device/ios-device-operations.js +106 -143
  109. package/lib/common/mobile/ios/device/ios-device.js +20 -36
  110. package/lib/common/mobile/ios/ios-device-base.js +58 -81
  111. package/lib/common/mobile/ios/simulator/ios-emulator-services.js +66 -95
  112. package/lib/common/mobile/ios/simulator/ios-sim-resolver.js +1 -1
  113. package/lib/common/mobile/ios/simulator/ios-simulator-application-manager.js +61 -90
  114. package/lib/common/mobile/ios/simulator/ios-simulator-device.js +31 -47
  115. package/lib/common/mobile/ios/simulator/ios-simulator-file-system.js +37 -62
  116. package/lib/common/mobile/ios/simulator/ios-simulator-log-provider.js +24 -35
  117. package/lib/common/mobile/mobile-core/android-device-discovery.js +44 -63
  118. package/lib/common/mobile/mobile-core/android-emulator-discovery.js +23 -34
  119. package/lib/common/mobile/mobile-core/android-process-service.js +174 -213
  120. package/lib/common/mobile/mobile-core/device-discovery.js +2 -13
  121. package/lib/common/mobile/mobile-core/devices-service.js +400 -450
  122. package/lib/common/mobile/mobile-core/ios-device-discovery.js +25 -36
  123. package/lib/common/mobile/mobile-core/ios-simulator-discovery.js +49 -64
  124. package/lib/common/mobile/mobile-helper.js +15 -26
  125. package/lib/common/mobile/wp8/wp8-emulator-services.js +25 -52
  126. package/lib/common/opener.js +2 -2
  127. package/lib/common/prompter.js +91 -106
  128. package/lib/common/queue.js +9 -20
  129. package/lib/common/services/auto-completion-service.js +40 -53
  130. package/lib/common/services/cancellation.js +17 -28
  131. package/lib/common/services/commands-service.js +156 -179
  132. package/lib/common/services/help-service.js +130 -155
  133. package/lib/common/services/hooks-service.js +99 -114
  134. package/lib/common/services/ios-notification-service.js +21 -34
  135. package/lib/common/services/json-file-settings-service.js +56 -75
  136. package/lib/common/services/lock-service.js +35 -52
  137. package/lib/common/services/message-contract-generator.js +35 -46
  138. package/lib/common/services/micro-templating-service.js +6 -17
  139. package/lib/common/services/net-service.js +92 -109
  140. package/lib/common/services/project-files-manager.js +10 -23
  141. package/lib/common/services/proxy-service.js +13 -24
  142. package/lib/common/services/qr.js +13 -24
  143. package/lib/common/services/settings-service.js +1 -1
  144. package/lib/common/services/xcode-select-service.js +20 -35
  145. package/lib/common/utils.js +2 -2
  146. package/lib/common/validators/project-name-validator.js +1 -1
  147. package/lib/common/validators/validation-result.js +1 -1
  148. package/lib/common/verify-node-version.js +2 -3
  149. package/lib/common/yok.js +25 -38
  150. package/lib/config.js +41 -56
  151. package/lib/constants.js +24 -24
  152. package/lib/controllers/build-controller.js +82 -99
  153. package/lib/controllers/debug-controller.js +111 -132
  154. package/lib/controllers/deploy-controller.js +15 -23
  155. package/lib/controllers/migrate-controller.js +780 -853
  156. package/lib/controllers/platform-controller.js +74 -89
  157. package/lib/controllers/prepare-controller.js +241 -270
  158. package/lib/controllers/run-controller.js +411 -425
  159. package/lib/controllers/update-controller-base.js +16 -29
  160. package/lib/controllers/update-controller.js +101 -126
  161. package/lib/data/prepare-data.js +4 -1
  162. package/lib/definitions/project.d.ts +24 -24
  163. package/lib/detached-processes/cleanup-js-subprocess.js +3 -12
  164. package/lib/detached-processes/cleanup-process.js +16 -25
  165. package/lib/device-path-provider.js +23 -34
  166. package/lib/device-sockets/ios/app-debug-socket-proxy-factory.js +155 -170
  167. package/lib/device-sockets/ios/notification.js +1 -1
  168. package/lib/device-sockets/ios/socket-request-executor.js +26 -41
  169. package/lib/helpers/android-bundle-validator-helper.js +1 -1
  170. package/lib/helpers/deploy-command-helper.js +44 -49
  171. package/lib/helpers/key-command-helper.js +4 -13
  172. package/lib/helpers/livesync-command-helper.js +138 -153
  173. package/lib/helpers/network-connectivity-validator.js +6 -17
  174. package/lib/helpers/options-track-helper.js +6 -17
  175. package/lib/helpers/platform-command-helper.js +103 -124
  176. package/lib/key-commands/index.js +150 -200
  177. package/lib/nativescript-cli.js +5 -14
  178. package/lib/node-package-manager.js +90 -113
  179. package/lib/options.js +4 -13
  180. package/lib/package-installation-manager.js +132 -167
  181. package/lib/package-manager.js +64 -87
  182. package/lib/platform-command-param.js +4 -15
  183. package/lib/pnpm-package-manager.js +60 -79
  184. package/lib/project-data.js +1 -1
  185. package/lib/providers/project-files-provider.js +1 -1
  186. package/lib/services/analytics/analytics-broker-process.js +13 -22
  187. package/lib/services/analytics/analytics-broker.js +17 -30
  188. package/lib/services/analytics/analytics-service.js +165 -201
  189. package/lib/services/analytics/google-analytics-provider.js +41 -56
  190. package/lib/services/analytics-settings-service.js +15 -32
  191. package/lib/services/android/android-bundle-tool-service.js +43 -60
  192. package/lib/services/android/gradle-build-args-service.js +10 -21
  193. package/lib/services/android/gradle-build-service.js +22 -35
  194. package/lib/services/android/gradle-command-service.js +22 -35
  195. package/lib/services/android-device-debug-service.js +92 -119
  196. package/lib/services/android-plugin-build-service.js +219 -245
  197. package/lib/services/android-project-service.js +134 -179
  198. package/lib/services/android-resources-migration-service.js +57 -70
  199. package/lib/services/apple-portal/apple-portal-application-service.js +46 -63
  200. package/lib/services/apple-portal/apple-portal-session-service.js +196 -215
  201. package/lib/services/apple-portal/srp/srp-wrapper.js +45 -60
  202. package/lib/services/assets-generation/assets-generation-service.js +114 -128
  203. package/lib/services/build-artifacts-service.js +9 -20
  204. package/lib/services/build-info-file-service.js +20 -35
  205. package/lib/services/cleanup-service.js +47 -76
  206. package/lib/services/cocoapods-service.js +124 -145
  207. package/lib/services/device/device-install-app-service.js +54 -71
  208. package/lib/services/doctor-service.js +106 -125
  209. package/lib/services/extensibility-service.js +87 -106
  210. package/lib/services/files-hash-service.js +26 -43
  211. package/lib/services/hmr-status-service.js +1 -1
  212. package/lib/services/initialize-service.js +38 -51
  213. package/lib/services/ios/export-options-plist-service.js +41 -54
  214. package/lib/services/ios/ios-signing-service.js +171 -190
  215. package/lib/services/ios/spm-service.js +52 -65
  216. package/lib/services/ios/xcodebuild-args-service.js +77 -94
  217. package/lib/services/ios/xcodebuild-command-service.js +14 -25
  218. package/lib/services/ios/xcodebuild-service.js +52 -71
  219. package/lib/services/ios-debugger-port-service.js +24 -37
  220. package/lib/services/ios-device-debug-service.js +75 -102
  221. package/lib/services/ios-entitlements-service.js +31 -42
  222. package/lib/services/ios-extensions-service.js +18 -29
  223. package/lib/services/ios-project-service.js +530 -591
  224. package/lib/services/ios-provision-service.js +110 -131
  225. package/lib/services/ios-watch-app-service.js +21 -32
  226. package/lib/services/ip-service.js +39 -54
  227. package/lib/services/itmstransporter-service.js +129 -152
  228. package/lib/services/livesync/android-device-livesync-service-base.js +31 -48
  229. package/lib/services/livesync/android-device-livesync-service.js +121 -150
  230. package/lib/services/livesync/android-device-livesync-sockets-service.js +123 -154
  231. package/lib/services/livesync/android-livesync-service.js +14 -35
  232. package/lib/services/livesync/android-livesync-tool.js +90 -113
  233. package/lib/services/livesync/device-livesync-service-base.js +16 -29
  234. package/lib/services/livesync/ios-device-livesync-service.js +120 -149
  235. package/lib/services/livesync/ios-livesync-service.js +43 -59
  236. package/lib/services/livesync/platform-livesync-service-base.js +98 -123
  237. package/lib/services/log-parser-service.js +1 -1
  238. package/lib/services/log-source-map-service.js +31 -42
  239. package/lib/services/marking-mode-service.js +17 -30
  240. package/lib/services/npm-config-service.js +1 -1
  241. package/lib/services/pacote-service.js +54 -69
  242. package/lib/services/performance-service.js +1 -1
  243. package/lib/services/platform/add-platform-service.js +57 -78
  244. package/lib/services/platform/platform-validation-service.js +22 -33
  245. package/lib/services/platform/prepare-native-platform-service.js +51 -64
  246. package/lib/services/platform-environment-requirements.js +27 -38
  247. package/lib/services/plugins-service.js +126 -151
  248. package/lib/services/project-backup-service.js +1 -1
  249. package/lib/services/project-changes-service.js +126 -143
  250. package/lib/services/project-cleanup-service.js +65 -78
  251. package/lib/services/project-config-service.js +78 -88
  252. package/lib/services/project-data-service.js +112 -129
  253. package/lib/services/project-name-service.js +28 -43
  254. package/lib/services/project-service.js +90 -109
  255. package/lib/services/project-templates-service.js +52 -67
  256. package/lib/services/start-service.js +41 -59
  257. package/lib/services/temp-service.js +8 -21
  258. package/lib/services/terminal-spinner-service.js +15 -26
  259. package/lib/services/test-execution-service.js +64 -77
  260. package/lib/services/test-initialization-service.js +2 -2
  261. package/lib/services/timeline-profiler-service.js +1 -1
  262. package/lib/services/versions-service.js +120 -139
  263. package/lib/services/webpack/webpack-compiler-service.js +228 -251
  264. package/lib/services/xcconfig-service.js +8 -19
  265. package/lib/sys-info.js +45 -62
  266. package/lib/tools/node-modules/node-modules-builder.js +16 -27
  267. package/lib/yarn-package-manager.js +59 -78
  268. package/lib/yarn2-package-manager.js +62 -81
  269. package/package.json +67 -82
  270. package/node_modules/@npmcli/move-file/LICENSE.md +0 -22
  271. package/node_modules/@npmcli/move-file/README.md +0 -69
  272. package/node_modules/@npmcli/move-file/lib/index.js +0 -185
  273. package/node_modules/@npmcli/move-file/node_modules/mkdirp/LICENSE +0 -21
  274. package/node_modules/@npmcli/move-file/node_modules/mkdirp/bin/cmd.js +0 -68
  275. package/node_modules/@npmcli/move-file/node_modules/mkdirp/index.js +0 -31
  276. package/node_modules/@npmcli/move-file/node_modules/mkdirp/lib/find-made.js +0 -29
  277. package/node_modules/@npmcli/move-file/node_modules/mkdirp/lib/mkdirp-manual.js +0 -64
  278. package/node_modules/@npmcli/move-file/node_modules/mkdirp/lib/mkdirp-native.js +0 -39
  279. package/node_modules/@npmcli/move-file/node_modules/mkdirp/lib/opts-arg.js +0 -23
  280. package/node_modules/@npmcli/move-file/node_modules/mkdirp/lib/path-arg.js +0 -29
  281. package/node_modules/@npmcli/move-file/node_modules/mkdirp/lib/use-native.js +0 -10
  282. package/node_modules/@npmcli/move-file/node_modules/mkdirp/package.json +0 -44
  283. package/node_modules/@npmcli/move-file/node_modules/mkdirp/readme.markdown +0 -266
  284. package/node_modules/@npmcli/move-file/package.json +0 -47
  285. package/node_modules/balanced-match/.github/FUNDING.yml +0 -2
  286. package/node_modules/balanced-match/LICENSE.md +0 -21
  287. package/node_modules/balanced-match/README.md +0 -97
  288. package/node_modules/balanced-match/index.js +0 -62
  289. package/node_modules/balanced-match/package.json +0 -48
  290. package/node_modules/concat-map/.travis.yml +0 -4
  291. package/node_modules/concat-map/LICENSE +0 -18
  292. package/node_modules/concat-map/README.markdown +0 -62
  293. package/node_modules/concat-map/example/map.js +0 -6
  294. package/node_modules/concat-map/index.js +0 -13
  295. package/node_modules/concat-map/package.json +0 -43
  296. package/node_modules/concat-map/test/map.js +0 -39
  297. package/node_modules/fs.realpath/LICENSE +0 -43
  298. package/node_modules/fs.realpath/README.md +0 -33
  299. package/node_modules/fs.realpath/index.js +0 -66
  300. package/node_modules/fs.realpath/old.js +0 -303
  301. package/node_modules/fs.realpath/package.json +0 -26
  302. package/node_modules/inflight/LICENSE +0 -15
  303. package/node_modules/inflight/README.md +0 -37
  304. package/node_modules/inflight/inflight.js +0 -54
  305. package/node_modules/inflight/package.json +0 -29
  306. package/node_modules/inherits/LICENSE +0 -16
  307. package/node_modules/inherits/README.md +0 -42
  308. package/node_modules/inherits/inherits.js +0 -9
  309. package/node_modules/inherits/inherits_browser.js +0 -27
  310. package/node_modules/inherits/package.json +0 -29
  311. package/node_modules/once/LICENSE +0 -15
  312. package/node_modules/once/README.md +0 -79
  313. package/node_modules/once/once.js +0 -42
  314. package/node_modules/once/package.json +0 -33
  315. package/node_modules/path-is-absolute/index.js +0 -20
  316. package/node_modules/path-is-absolute/license +0 -21
  317. package/node_modules/path-is-absolute/package.json +0 -43
  318. package/node_modules/path-is-absolute/readme.md +0 -59
  319. package/node_modules/rimraf/LICENSE +0 -15
  320. package/node_modules/rimraf/README.md +0 -101
  321. package/node_modules/rimraf/bin.js +0 -68
  322. package/node_modules/rimraf/node_modules/brace-expansion/LICENSE +0 -21
  323. package/node_modules/rimraf/node_modules/brace-expansion/README.md +0 -129
  324. package/node_modules/rimraf/node_modules/brace-expansion/index.js +0 -201
  325. package/node_modules/rimraf/node_modules/brace-expansion/package.json +0 -47
  326. package/node_modules/rimraf/node_modules/glob/LICENSE +0 -21
  327. package/node_modules/rimraf/node_modules/glob/README.md +0 -378
  328. package/node_modules/rimraf/node_modules/glob/common.js +0 -238
  329. package/node_modules/rimraf/node_modules/glob/glob.js +0 -790
  330. package/node_modules/rimraf/node_modules/glob/package.json +0 -55
  331. package/node_modules/rimraf/node_modules/glob/sync.js +0 -486
  332. package/node_modules/rimraf/node_modules/minimatch/LICENSE +0 -15
  333. package/node_modules/rimraf/node_modules/minimatch/README.md +0 -230
  334. package/node_modules/rimraf/node_modules/minimatch/minimatch.js +0 -947
  335. package/node_modules/rimraf/node_modules/minimatch/package.json +0 -33
  336. package/node_modules/rimraf/package.json +0 -32
  337. package/node_modules/rimraf/rimraf.js +0 -360
  338. package/node_modules/stringify-package/LICENSE +0 -13
  339. package/node_modules/stringify-package/README.md +0 -55
  340. package/node_modules/stringify-package/index.js +0 -18
  341. package/node_modules/stringify-package/package.json +0 -38
  342. package/node_modules/wrappy/LICENSE +0 -15
  343. package/node_modules/wrappy/README.md +0 -36
  344. package/node_modules/wrappy/package.json +0 -29
  345. package/node_modules/wrappy/wrappy.js +0 -33
@@ -1,13 +1,4 @@
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
- };
11
2
  Object.defineProperty(exports, "__esModule", { value: true });
12
3
  exports.StartCommand = void 0;
13
4
  const header_1 = require("../common/header");
@@ -16,17 +7,13 @@ class StartCommand {
16
7
  constructor($startService) {
17
8
  this.$startService = $startService;
18
9
  }
19
- execute(args) {
20
- return __awaiter(this, void 0, void 0, function* () {
21
- (0, header_1.printHeader)();
22
- this.$startService.start();
23
- return;
24
- });
10
+ async execute(args) {
11
+ (0, header_1.printHeader)();
12
+ this.$startService.start();
13
+ return;
25
14
  }
26
- canExecute(args) {
27
- return __awaiter(this, void 0, void 0, function* () {
28
- return true;
29
- });
15
+ async canExecute(args) {
16
+ return true;
30
17
  }
31
18
  }
32
19
  exports.StartCommand = StartCommand;
@@ -1,13 +1,4 @@
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
- };
11
2
  Object.defineProperty(exports, "__esModule", { value: true });
12
3
  const path = require("path");
13
4
  const _ = require("lodash");
@@ -33,138 +24,136 @@ class TestInitCommand {
33
24
  };
34
25
  this.$projectData.initializeProjectData();
35
26
  }
36
- execute(args) {
37
- return __awaiter(this, void 0, void 0, function* () {
38
- const projectDir = this.$projectData.projectDir;
39
- const frameworkToInstall = this.$options.framework ||
40
- (yield this.$prompter.promptForChoice("Select testing framework:", constants_1.TESTING_FRAMEWORKS));
41
- if (constants_1.TESTING_FRAMEWORKS.indexOf(frameworkToInstall) === -1) {
42
- this.$errors.failWithHelp(`Unknown or unsupported unit testing framework: ${frameworkToInstall}.`);
43
- }
44
- const projectFilesExtension = this.$projectData.projectType === constants_1.ProjectTypes.TsFlavorName ||
45
- this.$projectData.projectType === constants_1.ProjectTypes.NgFlavorName
46
- ? ".ts"
47
- : ".js";
48
- let modulesToInstall = [];
49
- try {
50
- modulesToInstall = this.$testInitializationService.getDependencies(frameworkToInstall);
51
- }
52
- catch (err) {
53
- this.$errors.fail(`Unable to install the unit testing dependencies. Error: '${err.message}'`);
54
- }
55
- modulesToInstall = modulesToInstall.filter((moduleToInstall) => !moduleToInstall.projectType ||
56
- moduleToInstall.projectType === projectFilesExtension);
57
- for (const mod of modulesToInstall) {
58
- let moduleToInstall = mod.name;
59
- moduleToInstall += `@${mod.version}`;
60
- yield this.$packageManager.install(moduleToInstall, projectDir, {
61
- "save-dev": true,
62
- "save-exact": true,
63
- optional: false,
64
- disableNpmInstall: this.$options.disableNpmInstall,
65
- frameworkPath: this.$options.frameworkPath,
66
- ignoreScripts: this.$options.ignoreScripts,
67
- path: this.$options.path,
68
- });
69
- const modulePath = path.join(projectDir, "node_modules", mod.name);
70
- const modulePackageJsonPath = path.join(modulePath, "package.json");
71
- const modulePackageJsonContent = this.$fs.readJson(modulePackageJsonPath);
72
- const modulePeerDependencies = modulePackageJsonContent.peerDependencies || {};
73
- for (const peerDependency in modulePeerDependencies) {
74
- const isPeerDependencyExcluded = _.includes(mod.excludedPeerDependencies, peerDependency);
75
- if (isPeerDependencyExcluded) {
76
- continue;
77
- }
78
- const dependencyVersion = modulePeerDependencies[peerDependency] || "*";
79
- // catch errors when a peerDependency is already installed
80
- // e.g karma is installed; karma-jasmine depends on karma and will try to install it again
81
- try {
82
- yield this.$packageManager.install(`${peerDependency}@${dependencyVersion}`, projectDir, {
83
- "save-dev": true,
84
- "save-exact": true,
85
- disableNpmInstall: false,
86
- frameworkPath: this.$options.frameworkPath,
87
- ignoreScripts: this.$options.ignoreScripts,
88
- path: this.$options.path,
89
- });
90
- }
91
- catch (e) {
92
- this.$logger.error(e.message);
93
- }
94
- }
95
- }
96
- yield this.$pluginsService.add("@nativescript/unit-test-runner", this.$projectData);
97
- this.$logger.clearScreen();
98
- const bufferedLogs = [];
99
- const testsDir = path.join(this.$projectData.appDirectoryPath, "tests");
100
- const projectTestsDir = path.relative(this.$projectData.projectDir, testsDir);
101
- const relativeTestsDir = path.relative(this.$projectData.appDirectoryPath, testsDir);
102
- let shouldCreateSampleTests = true;
103
- if (this.$fs.exists(testsDir)) {
104
- const specFilenamePattern = `<filename>.spec${projectFilesExtension}`;
105
- bufferedLogs.push(color_1.color.yellow([
106
- `Note: The "${projectTestsDir}" directory already exists, will not create example tests in the project.`,
107
- `You may create "${specFilenamePattern}" files anywhere you'd like.`,
108
- "",
109
- ].join("\n")));
110
- shouldCreateSampleTests = false;
111
- }
112
- this.$fs.ensureDirectoryExists(testsDir);
113
- const frameworks = [frameworkToInstall]
114
- .concat(this.karmaConfigAdditionalFrameworks[frameworkToInstall] || [])
115
- .map((fw) => `'${fw}'`)
116
- .join(", ");
117
- const testFiles = `'${(0, helpers_1.fromWindowsRelativePathToUnix)(relativeTestsDir)}/**/*${projectFilesExtension}'`;
118
- const karmaConfTemplate = this.$resources.readText("test/karma.conf.js");
119
- const karmaConf = _.template(karmaConfTemplate)({
120
- frameworks,
121
- testFiles,
122
- basePath: this.$projectData.getAppDirectoryRelativePath(),
27
+ async execute(args) {
28
+ const projectDir = this.$projectData.projectDir;
29
+ const frameworkToInstall = this.$options.framework ||
30
+ (await this.$prompter.promptForChoice("Select testing framework:", constants_1.TESTING_FRAMEWORKS));
31
+ if (constants_1.TESTING_FRAMEWORKS.indexOf(frameworkToInstall) === -1) {
32
+ this.$errors.failWithHelp(`Unknown or unsupported unit testing framework: ${frameworkToInstall}.`);
33
+ }
34
+ const projectFilesExtension = this.$projectData.projectType === constants_1.ProjectTypes.TsFlavorName ||
35
+ this.$projectData.projectType === constants_1.ProjectTypes.NgFlavorName
36
+ ? ".ts"
37
+ : ".js";
38
+ let modulesToInstall = [];
39
+ try {
40
+ modulesToInstall = this.$testInitializationService.getDependencies(frameworkToInstall);
41
+ }
42
+ catch (err) {
43
+ this.$errors.fail(`Unable to install the unit testing dependencies. Error: '${err.message}'`);
44
+ }
45
+ modulesToInstall = modulesToInstall.filter((moduleToInstall) => !moduleToInstall.projectType ||
46
+ moduleToInstall.projectType === projectFilesExtension);
47
+ for (const mod of modulesToInstall) {
48
+ let moduleToInstall = mod.name;
49
+ moduleToInstall += `@${mod.version}`;
50
+ await this.$packageManager.install(moduleToInstall, projectDir, {
51
+ "save-dev": true,
52
+ "save-exact": true,
53
+ optional: false,
54
+ disableNpmInstall: this.$options.disableNpmInstall,
55
+ frameworkPath: this.$options.frameworkPath,
56
+ ignoreScripts: this.$options.ignoreScripts,
57
+ path: this.$options.path,
123
58
  });
124
- this.$fs.writeFile(path.join(projectDir, "karma.conf.js"), karmaConf);
125
- const exampleFilePath = this.$resources.resolvePath(`test/example.${frameworkToInstall}${projectFilesExtension}`);
126
- const targetExampleTestPath = path.join(testsDir, `example.spec${projectFilesExtension}`);
127
- if (shouldCreateSampleTests && this.$fs.exists(exampleFilePath)) {
128
- this.$fs.copyFile(exampleFilePath, targetExampleTestPath);
129
- const targetExampleTestRelativePath = path.relative(projectDir, targetExampleTestPath);
130
- bufferedLogs.push(`Added example test: ${color_1.color.yellow(targetExampleTestRelativePath)}`);
131
- }
132
- // test main entry
133
- const testMainResourcesPath = this.$resources.resolvePath(`test/test-main${projectFilesExtension}`);
134
- const testMainPath = path.join(this.$projectData.appDirectoryPath, `test${projectFilesExtension}`);
135
- if (!this.$fs.exists(testMainPath)) {
136
- this.$fs.copyFile(testMainResourcesPath, testMainPath);
137
- const testMainRelativePath = path.relative(projectDir, testMainPath);
138
- bufferedLogs.push(`Main test entrypoint created: ${color_1.color.yellow(testMainRelativePath)}`);
59
+ const modulePath = path.join(projectDir, "node_modules", mod.name);
60
+ const modulePackageJsonPath = path.join(modulePath, "package.json");
61
+ const modulePackageJsonContent = this.$fs.readJson(modulePackageJsonPath);
62
+ const modulePeerDependencies = modulePackageJsonContent.peerDependencies || {};
63
+ for (const peerDependency in modulePeerDependencies) {
64
+ const isPeerDependencyExcluded = _.includes(mod.excludedPeerDependencies, peerDependency);
65
+ if (isPeerDependencyExcluded) {
66
+ continue;
67
+ }
68
+ const dependencyVersion = modulePeerDependencies[peerDependency] || "*";
69
+ // catch errors when a peerDependency is already installed
70
+ // e.g karma is installed; karma-jasmine depends on karma and will try to install it again
71
+ try {
72
+ await this.$packageManager.install(`${peerDependency}@${dependencyVersion}`, projectDir, {
73
+ "save-dev": true,
74
+ "save-exact": true,
75
+ disableNpmInstall: false,
76
+ frameworkPath: this.$options.frameworkPath,
77
+ ignoreScripts: this.$options.ignoreScripts,
78
+ path: this.$options.path,
79
+ });
80
+ }
81
+ catch (e) {
82
+ this.$logger.error(e.message);
83
+ }
139
84
  }
140
- const testTsConfigTemplate = this.$resources.readText("test/tsconfig.spec.json");
141
- const testTsConfig = _.template(testTsConfigTemplate)({
142
- basePath: this.$projectData.getAppDirectoryRelativePath(),
143
- });
144
- this.$fs.writeFile(path.join(projectDir, "tsconfig.spec.json"), testTsConfig);
145
- bufferedLogs.push(`Added/replaced ${color_1.color.yellow("tsconfig.spec.json")}`);
146
- const greyDollarSign = color_1.color.grey("$");
147
- this.$logger.info([
148
- [
149
- color_1.color.green(`Tests using`),
150
- color_1.color.cyan(frameworkToInstall),
151
- color_1.color.green(`were successfully initialized.`),
152
- ].join(" "),
153
- "",
154
- ...bufferedLogs,
155
- "",
156
- color_1.color.yellow(`Note: @nativescript/unit-test-runner was included in "dependencies" as a convenience to automatically adjust your app's Info.plist on iOS and AndroidManifest.xml on Android to ensure the socket connects properly.`),
157
- "",
158
- color_1.color.yellow(`For production you may want to move to "devDependencies" and manage the settings yourself.`),
85
+ }
86
+ await this.$pluginsService.add("@nativescript/unit-test-runner", this.$projectData);
87
+ this.$logger.clearScreen();
88
+ const bufferedLogs = [];
89
+ const testsDir = path.join(this.$projectData.appDirectoryPath, "tests");
90
+ const projectTestsDir = path.relative(this.$projectData.projectDir, testsDir);
91
+ const relativeTestsDir = path.relative(this.$projectData.appDirectoryPath, testsDir);
92
+ let shouldCreateSampleTests = true;
93
+ if (this.$fs.exists(testsDir)) {
94
+ const specFilenamePattern = `<filename>.spec${projectFilesExtension}`;
95
+ bufferedLogs.push(color_1.color.yellow([
96
+ `Note: The "${projectTestsDir}" directory already exists, will not create example tests in the project.`,
97
+ `You may create "${specFilenamePattern}" files anywhere you'd like.`,
159
98
  "",
160
- "",
161
- `You can now run your tests:`,
162
- "",
163
- ` ${greyDollarSign} ${color_1.color.green("ns test ios")}`,
164
- ` ${greyDollarSign} ${color_1.color.green("ns test android")}`,
165
- "",
166
- ].join("\n"));
99
+ ].join("\n")));
100
+ shouldCreateSampleTests = false;
101
+ }
102
+ this.$fs.ensureDirectoryExists(testsDir);
103
+ const frameworks = [frameworkToInstall]
104
+ .concat(this.karmaConfigAdditionalFrameworks[frameworkToInstall] || [])
105
+ .map((fw) => `'${fw}'`)
106
+ .join(", ");
107
+ const testFiles = `'${(0, helpers_1.fromWindowsRelativePathToUnix)(relativeTestsDir)}/**/*${projectFilesExtension}'`;
108
+ const karmaConfTemplate = this.$resources.readText("test/karma.conf.js");
109
+ const karmaConf = _.template(karmaConfTemplate)({
110
+ frameworks,
111
+ testFiles,
112
+ basePath: this.$projectData.getAppDirectoryRelativePath(),
113
+ });
114
+ this.$fs.writeFile(path.join(projectDir, "karma.conf.js"), karmaConf);
115
+ const exampleFilePath = this.$resources.resolvePath(`test/example.${frameworkToInstall}${projectFilesExtension}`);
116
+ const targetExampleTestPath = path.join(testsDir, `example.spec${projectFilesExtension}`);
117
+ if (shouldCreateSampleTests && this.$fs.exists(exampleFilePath)) {
118
+ this.$fs.copyFile(exampleFilePath, targetExampleTestPath);
119
+ const targetExampleTestRelativePath = path.relative(projectDir, targetExampleTestPath);
120
+ bufferedLogs.push(`Added example test: ${color_1.color.yellow(targetExampleTestRelativePath)}`);
121
+ }
122
+ // test main entry
123
+ const testMainResourcesPath = this.$resources.resolvePath(`test/test-main${projectFilesExtension}`);
124
+ const testMainPath = path.join(this.$projectData.appDirectoryPath, `test${projectFilesExtension}`);
125
+ if (!this.$fs.exists(testMainPath)) {
126
+ this.$fs.copyFile(testMainResourcesPath, testMainPath);
127
+ const testMainRelativePath = path.relative(projectDir, testMainPath);
128
+ bufferedLogs.push(`Main test entrypoint created: ${color_1.color.yellow(testMainRelativePath)}`);
129
+ }
130
+ const testTsConfigTemplate = this.$resources.readText("test/tsconfig.spec.json");
131
+ const testTsConfig = _.template(testTsConfigTemplate)({
132
+ basePath: this.$projectData.getAppDirectoryRelativePath(),
167
133
  });
134
+ this.$fs.writeFile(path.join(projectDir, "tsconfig.spec.json"), testTsConfig);
135
+ bufferedLogs.push(`Added/replaced ${color_1.color.yellow("tsconfig.spec.json")}`);
136
+ const greyDollarSign = color_1.color.grey("$");
137
+ this.$logger.info([
138
+ [
139
+ color_1.color.green(`Tests using`),
140
+ color_1.color.cyan(frameworkToInstall),
141
+ color_1.color.green(`were successfully initialized.`),
142
+ ].join(" "),
143
+ "",
144
+ ...bufferedLogs,
145
+ "",
146
+ color_1.color.yellow(`Note: @nativescript/unit-test-runner was included in "dependencies" as a convenience to automatically adjust your app's Info.plist on iOS and AndroidManifest.xml on Android to ensure the socket connects properly.`),
147
+ "",
148
+ color_1.color.yellow(`For production you may want to move to "devDependencies" and manage the settings yourself.`),
149
+ "",
150
+ "",
151
+ `You can now run your tests:`,
152
+ "",
153
+ ` ${greyDollarSign} ${color_1.color.green("ns test ios")}`,
154
+ ` ${greyDollarSign} ${color_1.color.green("ns test android")}`,
155
+ "",
156
+ ].join("\n"));
168
157
  }
169
158
  }
170
159
  yok_1.injector.registerCommand("test|init", TestInitCommand);
@@ -1,13 +1,4 @@
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
- };
11
2
  Object.defineProperty(exports, "__esModule", { value: true });
12
3
  const helpers_1 = require("../common/helpers");
13
4
  const constants_1 = require("../constants");
@@ -19,73 +10,69 @@ class TestCommandBase {
19
10
  hmr: { type: "boolean" /* OptionType.Boolean */, default: false, hasSensitiveValue: false },
20
11
  };
21
12
  }
22
- execute(args) {
23
- return __awaiter(this, void 0, void 0, function* () {
24
- let devices = [];
25
- if (this.$options.debugBrk) {
26
- yield this.$devicesService.initialize({
27
- platform: this.platform,
28
- deviceId: this.$options.device,
29
- emulator: this.$options.emulator,
30
- skipInferPlatform: !this.platform,
31
- sdk: this.$options.sdk,
32
- });
33
- const selectedDeviceForDebug = yield this.$devicesService.pickSingleDevice({
34
- onlyEmulators: this.$options.emulator,
35
- onlyDevices: this.$options.forDevice,
36
- deviceId: this.$options.device,
37
- });
38
- devices = [selectedDeviceForDebug];
39
- // const debugData = this.getDebugData(platform, projectData, deployOptions, { device: selectedDeviceForDebug.deviceInfo.identifier });
40
- // await this.$debugService.debug(debugData, this.$options);
41
- }
42
- else {
43
- devices = yield this.$liveSyncCommandHelper.getDeviceInstances(this.platform);
44
- }
45
- if (!this.$options.env) {
46
- this.$options.env = {};
47
- }
48
- this.$options.env.unitTesting = true;
49
- const liveSyncInfo = this.$liveSyncCommandHelper.getLiveSyncData(this.$projectData.projectDir);
50
- const deviceDebugMap = {};
51
- devices.forEach((device) => (deviceDebugMap[device.deviceInfo.identifier] = this.$options.debugBrk));
52
- const deviceDescriptors = yield this.$liveSyncCommandHelper.createDeviceDescriptors(devices, this.platform, { deviceDebugMap });
53
- yield this.$testExecutionService.startKarmaServer(this.platform, liveSyncInfo, deviceDescriptors);
54
- // if we got here, it means karma exited with exit code 0 (success)
55
- process.exit(0);
56
- });
13
+ async execute(args) {
14
+ let devices = [];
15
+ if (this.$options.debugBrk) {
16
+ await this.$devicesService.initialize({
17
+ platform: this.platform,
18
+ deviceId: this.$options.device,
19
+ emulator: this.$options.emulator,
20
+ skipInferPlatform: !this.platform,
21
+ sdk: this.$options.sdk,
22
+ });
23
+ const selectedDeviceForDebug = await this.$devicesService.pickSingleDevice({
24
+ onlyEmulators: this.$options.emulator,
25
+ onlyDevices: this.$options.forDevice,
26
+ deviceId: this.$options.device,
27
+ });
28
+ devices = [selectedDeviceForDebug];
29
+ // const debugData = this.getDebugData(platform, projectData, deployOptions, { device: selectedDeviceForDebug.deviceInfo.identifier });
30
+ // await this.$debugService.debug(debugData, this.$options);
31
+ }
32
+ else {
33
+ devices = await this.$liveSyncCommandHelper.getDeviceInstances(this.platform);
34
+ }
35
+ if (!this.$options.env) {
36
+ this.$options.env = {};
37
+ }
38
+ this.$options.env.unitTesting = true;
39
+ const liveSyncInfo = this.$liveSyncCommandHelper.getLiveSyncData(this.$projectData.projectDir);
40
+ const deviceDebugMap = {};
41
+ devices.forEach((device) => (deviceDebugMap[device.deviceInfo.identifier] = this.$options.debugBrk));
42
+ const deviceDescriptors = await this.$liveSyncCommandHelper.createDeviceDescriptors(devices, this.platform, { deviceDebugMap });
43
+ await this.$testExecutionService.startKarmaServer(this.platform, liveSyncInfo, deviceDescriptors);
44
+ // if we got here, it means karma exited with exit code 0 (success)
45
+ process.exit(0);
57
46
  }
58
- canExecute(args) {
59
- return __awaiter(this, void 0, void 0, function* () {
60
- if (!this.$options.force) {
61
- if (this.$options.hmr) {
62
- // With HMR we are not restarting after LiveSync which is causing a 30 seconds app start on Android
63
- // because the Runtime does not watch for the `/data/local/tmp<appId>-livesync-in-progress` file deletion.
64
- // The App is closing itself after each test execution and the bug will be reproducible on each LiveSync.
65
- this.$errors.fail("The `--hmr` option is not supported for this command.");
66
- }
67
- yield this.$migrateController.validate({
68
- projectDir: this.$projectData.projectDir,
69
- platforms: [this.platform],
70
- });
47
+ async canExecute(args) {
48
+ if (!this.$options.force) {
49
+ if (this.$options.hmr) {
50
+ // With HMR we are not restarting after LiveSync which is causing a 30 seconds app start on Android
51
+ // because the Runtime does not watch for the `/data/local/tmp<appId>-livesync-in-progress` file deletion.
52
+ // The App is closing itself after each test execution and the bug will be reproducible on each LiveSync.
53
+ this.$errors.fail("The `--hmr` option is not supported for this command.");
71
54
  }
72
- this.$projectData.initializeProjectData();
73
- this.$analyticsService.setShouldDispose(this.$options.justlaunch || !this.$options.watch);
74
- this.$cleanupService.setShouldDispose(this.$options.justlaunch || !this.$options.watch);
75
- const output = yield this.$platformEnvironmentRequirements.checkEnvironmentRequirements({
76
- platform: this.platform,
55
+ await this.$migrateController.validate({
77
56
  projectDir: this.$projectData.projectDir,
78
- options: this.$options,
57
+ platforms: [this.platform],
79
58
  });
80
- const canStartKarmaServer = yield this.$testExecutionService.canStartKarmaServer(this.$projectData);
81
- if (!canStartKarmaServer) {
82
- this.$errors.fail({
83
- formatStr: "Error: In order to run unit tests, your project must already be configured by running $ ns test init.",
84
- errorCode: 133 /* ErrorCodes.TESTS_INIT_REQUIRED */,
85
- });
86
- }
87
- return output.canExecute && canStartKarmaServer;
59
+ }
60
+ this.$projectData.initializeProjectData();
61
+ this.$analyticsService.setShouldDispose(this.$options.justlaunch || !this.$options.watch);
62
+ this.$cleanupService.setShouldDispose(this.$options.justlaunch || !this.$options.watch);
63
+ const output = await this.$platformEnvironmentRequirements.checkEnvironmentRequirements({
64
+ platform: this.platform,
65
+ projectDir: this.$projectData.projectDir,
66
+ options: this.$options,
88
67
  });
68
+ const canStartKarmaServer = await this.$testExecutionService.canStartKarmaServer(this.$projectData);
69
+ if (!canStartKarmaServer) {
70
+ this.$errors.fail({
71
+ formatStr: "Error: In order to run unit tests, your project must already be configured by running $ ns test init.",
72
+ errorCode: 133 /* ErrorCodes.TESTS_INIT_REQUIRED */,
73
+ });
74
+ }
75
+ return output.canExecute && canStartKarmaServer;
89
76
  }
90
77
  }
91
78
  class TestAndroidCommand extends TestCommandBase {
@@ -103,33 +90,23 @@ class TestAndroidCommand extends TestCommandBase {
103
90
  this.$migrateController = $migrateController;
104
91
  this.platform = "android";
105
92
  }
106
- execute(args) {
107
- const _super = Object.create(null, {
108
- execute: { get: () => super.execute }
109
- });
110
- return __awaiter(this, void 0, void 0, function* () {
111
- yield _super.execute.call(this, args);
112
- });
93
+ async execute(args) {
94
+ await super.execute(args);
113
95
  }
114
- canExecute(args) {
115
- const _super = Object.create(null, {
116
- canExecute: { get: () => super.canExecute }
117
- });
118
- return __awaiter(this, void 0, void 0, function* () {
119
- const canExecuteBase = yield _super.canExecute.call(this, args);
120
- if (canExecuteBase) {
121
- if ((this.$options.release || this.$options.aab) &&
122
- !(0, helpers_1.hasValidAndroidSigning)(this.$options)) {
123
- if (this.$options.release) {
124
- this.$errors.failWithHelp(constants_1.ANDROID_RELEASE_BUILD_ERROR_MESSAGE);
125
- }
126
- else {
127
- this.$errors.failWithHelp(constants_1.ANDROID_APP_BUNDLE_SIGNING_ERROR_MESSAGE);
128
- }
96
+ async canExecute(args) {
97
+ const canExecuteBase = await super.canExecute(args);
98
+ if (canExecuteBase) {
99
+ if ((this.$options.release || this.$options.aab) &&
100
+ !(0, helpers_1.hasValidAndroidSigning)(this.$options)) {
101
+ if (this.$options.release) {
102
+ this.$errors.failWithHelp(constants_1.ANDROID_RELEASE_BUILD_ERROR_MESSAGE);
103
+ }
104
+ else {
105
+ this.$errors.failWithHelp(constants_1.ANDROID_APP_BUNDLE_SIGNING_ERROR_MESSAGE);
129
106
  }
130
107
  }
131
- return canExecuteBase;
132
- });
108
+ }
109
+ return canExecuteBase;
133
110
  }
134
111
  }
135
112
  class TestIosCommand extends TestCommandBase {