@akylas/nativescript-cli 8.7.2 → 8.8.3

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 (295) hide show
  1. package/config/test-deps-versions-generated.json +1 -1
  2. package/docs/man_pages/project/configuration/native/native-add-java.md +32 -0
  3. package/docs/man_pages/project/configuration/native/native-add-kotlin.md +34 -0
  4. package/docs/man_pages/project/configuration/native/native-add-objective-c.md +34 -0
  5. package/docs/man_pages/project/configuration/native/native-add-swift.md +32 -0
  6. package/docs/man_pages/project/configuration/native/native-add.md +31 -0
  7. package/docs/man_pages/project/configuration/native/native.md +31 -0
  8. package/lib/.d.ts +2 -0
  9. package/lib/android-tools-info.js +9 -20
  10. package/lib/base-package-manager.js +47 -64
  11. package/lib/bootstrap.js +8 -0
  12. package/lib/bun-package-manager.js +65 -88
  13. package/lib/color.js +2 -2
  14. package/lib/commands/add-platform.js +14 -30
  15. package/lib/commands/apple-login.js +18 -29
  16. package/lib/commands/appstore-list.js +34 -45
  17. package/lib/commands/appstore-upload.js +55 -68
  18. package/lib/commands/build.js +57 -86
  19. package/lib/commands/clean.js +161 -176
  20. package/lib/commands/command-base.js +14 -27
  21. package/lib/commands/config.js +51 -70
  22. package/lib/commands/create-project.js +210 -229
  23. package/lib/commands/debug.js +66 -88
  24. package/lib/commands/deploy.js +28 -44
  25. package/lib/commands/embedding/embed.js +72 -0
  26. package/lib/commands/extensibility/install-extension.js +5 -16
  27. package/lib/commands/extensibility/list-extensions.js +13 -24
  28. package/lib/commands/extensibility/uninstall-extension.js +4 -15
  29. package/lib/commands/fonts.js +30 -41
  30. package/lib/commands/generate-assets.js +13 -28
  31. package/lib/commands/generate-help.js +2 -13
  32. package/lib/commands/generate.js +17 -26
  33. package/lib/commands/info.js +2 -13
  34. package/lib/commands/install.js +34 -49
  35. package/lib/commands/list-platforms.js +14 -25
  36. package/lib/commands/migrate.js +15 -26
  37. package/lib/commands/native-add.js +277 -0
  38. package/lib/commands/platform-clean.js +19 -32
  39. package/lib/commands/plugin/add-plugin.js +12 -25
  40. package/lib/commands/plugin/build-plugin.js +34 -45
  41. package/lib/commands/plugin/create-plugin.js +110 -133
  42. package/lib/commands/plugin/list-plugins.js +22 -33
  43. package/lib/commands/plugin/remove-plugin.js +20 -33
  44. package/lib/commands/plugin/update-plugin.js +20 -33
  45. package/lib/commands/post-install.js +20 -33
  46. package/lib/commands/prepare.js +28 -35
  47. package/lib/commands/preview.js +49 -62
  48. package/lib/commands/remove-platform.js +7 -18
  49. package/lib/commands/resources/resources-update.js +13 -26
  50. package/lib/commands/run.js +55 -76
  51. package/lib/commands/start.js +6 -19
  52. package/lib/commands/test-init.js +123 -134
  53. package/lib/commands/test.js +66 -89
  54. package/lib/commands/typings.js +126 -142
  55. package/lib/commands/update-platform.js +22 -35
  56. package/lib/commands/update.js +30 -43
  57. package/lib/common/child-process.js +53 -72
  58. package/lib/common/codeGeneration/code-entity.js +1 -1
  59. package/lib/common/codeGeneration/code-printer.js +1 -1
  60. package/lib/common/command-params.js +7 -18
  61. package/lib/common/commands/analytics.js +27 -40
  62. package/lib/common/commands/autocompletion.js +39 -56
  63. package/lib/common/commands/device/device-log-stream.js +12 -23
  64. package/lib/common/commands/device/get-file.js +22 -33
  65. package/lib/common/commands/device/list-applications.js +12 -23
  66. package/lib/common/commands/device/list-devices.js +72 -87
  67. package/lib/common/commands/device/list-files.js +23 -34
  68. package/lib/common/commands/device/put-file.js +22 -33
  69. package/lib/common/commands/device/run-application.js +12 -25
  70. package/lib/common/commands/device/stop-application.js +11 -22
  71. package/lib/common/commands/device/uninstall-application.js +6 -17
  72. package/lib/common/commands/generate-messages.js +17 -28
  73. package/lib/common/commands/help.js +20 -33
  74. package/lib/common/commands/package-manager-get.js +6 -17
  75. package/lib/common/commands/package-manager-set.js +9 -20
  76. package/lib/common/commands/post-install.js +2 -13
  77. package/lib/common/commands/preuninstall.js +23 -38
  78. package/lib/common/commands/proxy/proxy-base.js +8 -19
  79. package/lib/common/commands/proxy/proxy-clear.js +4 -15
  80. package/lib/common/commands/proxy/proxy-get.js +3 -14
  81. package/lib/common/commands/proxy/proxy-set.js +87 -100
  82. package/lib/common/constants.js +11 -11
  83. package/lib/common/decorators.js +10 -22
  84. package/lib/common/dispatchers.js +79 -96
  85. package/lib/common/errors.js +89 -104
  86. package/lib/common/file-system.js +106 -127
  87. package/lib/common/header.js +1 -2
  88. package/lib/common/helpers.js +149 -178
  89. package/lib/common/host-info.js +37 -50
  90. package/lib/common/http-client.js +93 -108
  91. package/lib/common/logger/appenders/cli-appender.js +1 -2
  92. package/lib/common/logger/appenders/emit-appender.js +1 -2
  93. package/lib/common/logger/layouts/cli-layout.js +1 -2
  94. package/lib/common/logger/logger.js +1 -1
  95. package/lib/common/mobile/android/android-application-manager.js +121 -142
  96. package/lib/common/mobile/android/android-debug-bridge-result-handler.js +1 -1
  97. package/lib/common/mobile/android/android-debug-bridge.js +87 -112
  98. package/lib/common/mobile/android/android-device-file-system.js +98 -131
  99. package/lib/common/mobile/android/android-device-hash-service.js +50 -75
  100. package/lib/common/mobile/android/android-device.js +74 -91
  101. package/lib/common/mobile/android/android-emulator-services.js +105 -130
  102. package/lib/common/mobile/android/android-log-filter.js +1 -1
  103. package/lib/common/mobile/android/android-virtual-device-service.js +76 -94
  104. package/lib/common/mobile/android/device-android-debug-bridge.js +13 -29
  105. package/lib/common/mobile/android/genymotion/genymotion-service.js +91 -118
  106. package/lib/common/mobile/android/genymotion/virtualbox-service.js +64 -81
  107. package/lib/common/mobile/android/logcat-helper.js +108 -118
  108. package/lib/common/mobile/application-manager-base.js +84 -107
  109. package/lib/common/mobile/device-log-provider-base.js +7 -18
  110. package/lib/common/mobile/emulator-helper.js +1 -0
  111. package/lib/common/mobile/ios/device/ios-application-manager.js +79 -108
  112. package/lib/common/mobile/ios/device/ios-device-file-system.js +78 -105
  113. package/lib/common/mobile/ios/device/ios-device-operations.js +105 -142
  114. package/lib/common/mobile/ios/device/ios-device.js +20 -36
  115. package/lib/common/mobile/ios/ios-device-base.js +58 -81
  116. package/lib/common/mobile/ios/simulator/ios-emulator-services.js +63 -92
  117. package/lib/common/mobile/ios/simulator/ios-sim-resolver.js +1 -1
  118. package/lib/common/mobile/ios/simulator/ios-simulator-application-manager.js +60 -89
  119. package/lib/common/mobile/ios/simulator/ios-simulator-device.js +27 -43
  120. package/lib/common/mobile/ios/simulator/ios-simulator-file-system.js +37 -62
  121. package/lib/common/mobile/ios/simulator/ios-simulator-log-provider.js +24 -35
  122. package/lib/common/mobile/mobile-core/android-device-discovery.js +43 -62
  123. package/lib/common/mobile/mobile-core/android-emulator-discovery.js +21 -32
  124. package/lib/common/mobile/mobile-core/android-process-service.js +143 -182
  125. package/lib/common/mobile/mobile-core/device-discovery.js +2 -13
  126. package/lib/common/mobile/mobile-core/devices-service.js +385 -436
  127. package/lib/common/mobile/mobile-core/ios-device-discovery.js +24 -35
  128. package/lib/common/mobile/mobile-core/ios-simulator-discovery.js +47 -62
  129. package/lib/common/mobile/mobile-helper.js +15 -26
  130. package/lib/common/mobile/wp8/wp8-emulator-services.js +25 -52
  131. package/lib/common/opener.js +2 -2
  132. package/lib/common/plist-parser.js +2 -2
  133. package/lib/common/prompter.js +90 -105
  134. package/lib/common/queue.js +9 -20
  135. package/lib/common/services/auto-completion-service.js +39 -52
  136. package/lib/common/services/cancellation.js +17 -28
  137. package/lib/common/services/commands-service.js +146 -169
  138. package/lib/common/services/help-service.js +132 -157
  139. package/lib/common/services/hooks-service.js +93 -108
  140. package/lib/common/services/ios-notification-service.js +21 -34
  141. package/lib/common/services/json-file-settings-service.js +52 -71
  142. package/lib/common/services/lock-service.js +35 -52
  143. package/lib/common/services/message-contract-generator.js +35 -46
  144. package/lib/common/services/micro-templating-service.js +4 -15
  145. package/lib/common/services/net-service.js +90 -107
  146. package/lib/common/services/project-files-manager.js +10 -23
  147. package/lib/common/services/proxy-service.js +13 -24
  148. package/lib/common/services/qr.js +13 -24
  149. package/lib/common/services/settings-service.js +1 -1
  150. package/lib/common/services/xcode-select-service.js +20 -35
  151. package/lib/common/utils.js +7 -0
  152. package/lib/common/validators/project-name-validator.js +1 -1
  153. package/lib/common/validators/validation-result.js +1 -1
  154. package/lib/common/verify-node-version.js +2 -3
  155. package/lib/common/yok.js +23 -36
  156. package/lib/config.js +7 -58
  157. package/lib/constants.js +24 -24
  158. package/lib/controllers/build-controller.js +82 -99
  159. package/lib/controllers/debug-controller.js +107 -128
  160. package/lib/controllers/deploy-controller.js +17 -22
  161. package/lib/controllers/migrate-controller.js +727 -800
  162. package/lib/controllers/platform-controller.js +72 -83
  163. package/lib/controllers/prepare-controller.js +264 -250
  164. package/lib/controllers/run-controller.js +392 -406
  165. package/lib/controllers/update-controller-base.js +16 -29
  166. package/lib/controllers/update-controller.js +94 -119
  167. package/lib/data/build-data.js +2 -0
  168. package/lib/data/prepare-data.js +5 -1
  169. package/lib/declarations.d.ts +14 -3
  170. package/lib/definitions/android-plugin-migrator.d.ts +1 -0
  171. package/lib/definitions/ios-debugger-port-service.d.ts +1 -1
  172. package/lib/definitions/livesync.d.ts +1 -1
  173. package/lib/definitions/platform.d.ts +1 -0
  174. package/lib/definitions/prepare.d.ts +3 -0
  175. package/lib/definitions/project.d.ts +5 -0
  176. package/lib/detached-processes/cleanup-js-subprocess.js +3 -12
  177. package/lib/detached-processes/cleanup-process.js +16 -25
  178. package/lib/device-path-provider.js +23 -34
  179. package/lib/device-sockets/ios/app-debug-socket-proxy-factory.js +149 -164
  180. package/lib/device-sockets/ios/notification.js +1 -1
  181. package/lib/device-sockets/ios/socket-request-executor.js +24 -39
  182. package/lib/helpers/android-bundle-validator-helper.js +1 -1
  183. package/lib/helpers/deploy-command-helper.js +45 -49
  184. package/lib/helpers/key-command-helper.js +4 -13
  185. package/lib/helpers/livesync-command-helper.js +137 -152
  186. package/lib/helpers/network-connectivity-validator.js +6 -17
  187. package/lib/helpers/options-track-helper.js +6 -17
  188. package/lib/helpers/platform-command-helper.js +102 -114
  189. package/lib/key-commands/index.js +161 -211
  190. package/lib/nativescript-cli.js +5 -14
  191. package/lib/node-package-manager.js +81 -104
  192. package/lib/options.js +12 -14
  193. package/lib/package-installation-manager.js +130 -165
  194. package/lib/package-manager.js +63 -86
  195. package/lib/platform-command-param.js +4 -15
  196. package/lib/pnpm-package-manager.js +59 -78
  197. package/lib/project-data.js +5 -2
  198. package/lib/providers/project-files-provider.js +2 -2
  199. package/lib/services/analytics/analytics-broker-process.js +13 -22
  200. package/lib/services/analytics/analytics-broker.js +17 -30
  201. package/lib/services/analytics/analytics-service.js +161 -198
  202. package/lib/services/analytics/google-analytics-provider.js +41 -56
  203. package/lib/services/analytics-settings-service.js +15 -32
  204. package/lib/services/android/android-bundle-tool-service.js +43 -60
  205. package/lib/services/android/gradle-build-args-service.js +13 -23
  206. package/lib/services/android/gradle-build-service.js +34 -47
  207. package/lib/services/android/gradle-command-service.js +23 -32
  208. package/lib/services/android-device-debug-service.js +90 -117
  209. package/lib/services/android-plugin-build-service.js +233 -247
  210. package/lib/services/android-project-service.js +180 -219
  211. package/lib/services/android-resources-migration-service.js +51 -64
  212. package/lib/services/apple-portal/apple-portal-application-service.js +46 -63
  213. package/lib/services/apple-portal/apple-portal-session-service.js +171 -188
  214. package/lib/services/assets-generation/assets-generation-service.js +100 -113
  215. package/lib/services/build-artifacts-service.js +9 -20
  216. package/lib/services/build-info-file-service.js +20 -35
  217. package/lib/services/cleanup-service.js +47 -76
  218. package/lib/services/cocoapods-service.js +118 -133
  219. package/lib/services/device/device-install-app-service.js +73 -90
  220. package/lib/services/doctor-service.js +99 -118
  221. package/lib/services/extensibility-service.js +81 -100
  222. package/lib/services/files-hash-service.js +28 -44
  223. package/lib/services/hmr-status-service.js +1 -1
  224. package/lib/services/initialize-service.js +37 -50
  225. package/lib/services/ios/export-options-plist-service.js +38 -51
  226. package/lib/services/ios/ios-signing-service.js +161 -180
  227. package/lib/services/ios/spm-service.js +40 -53
  228. package/lib/services/ios/xcodebuild-args-service.js +77 -94
  229. package/lib/services/ios/xcodebuild-command-service.js +14 -25
  230. package/lib/services/ios/xcodebuild-service.js +50 -69
  231. package/lib/services/ios-debugger-port-service.js +23 -36
  232. package/lib/services/ios-device-debug-service.js +75 -102
  233. package/lib/services/ios-entitlements-service.js +31 -42
  234. package/lib/services/ios-extensions-service.js +18 -29
  235. package/lib/services/ios-project-service.js +418 -440
  236. package/lib/services/ios-provision-service.js +108 -129
  237. package/lib/services/ios-watch-app-service.js +21 -32
  238. package/lib/services/ip-service.js +38 -53
  239. package/lib/services/itmstransporter-service.js +129 -152
  240. package/lib/services/livesync/android-device-livesync-service-base.js +31 -48
  241. package/lib/services/livesync/android-device-livesync-service.js +120 -149
  242. package/lib/services/livesync/android-device-livesync-sockets-service.js +123 -155
  243. package/lib/services/livesync/android-livesync-service.js +16 -37
  244. package/lib/services/livesync/android-livesync-tool.js +89 -112
  245. package/lib/services/livesync/device-livesync-service-base.js +15 -28
  246. package/lib/services/livesync/ios-device-livesync-service.js +114 -143
  247. package/lib/services/livesync/ios-livesync-service.js +44 -60
  248. package/lib/services/livesync/platform-livesync-service-base.js +96 -120
  249. package/lib/services/log-parser-service.js +1 -1
  250. package/lib/services/log-source-map-service.js +33 -43
  251. package/lib/services/marking-mode-service.js +15 -28
  252. package/lib/services/npm-config-service.js +1 -1
  253. package/lib/services/pacote-service.js +49 -64
  254. package/lib/services/performance-service.js +1 -1
  255. package/lib/services/platform/add-platform-service.js +53 -69
  256. package/lib/services/platform/platform-validation-service.js +22 -33
  257. package/lib/services/platform/prepare-native-platform-service.js +50 -60
  258. package/lib/services/platform-environment-requirements.js +29 -38
  259. package/lib/services/plugins-service.js +128 -147
  260. package/lib/services/project-backup-service.js +1 -1
  261. package/lib/services/project-changes-service.js +129 -139
  262. package/lib/services/project-cleanup-service.js +64 -77
  263. package/lib/services/project-config-service.js +71 -80
  264. package/lib/services/project-data-service.js +116 -139
  265. package/lib/services/project-name-service.js +28 -43
  266. package/lib/services/project-service.js +84 -103
  267. package/lib/services/project-templates-service.js +52 -67
  268. package/lib/services/start-service.js +41 -59
  269. package/lib/services/temp-service.js +8 -21
  270. package/lib/services/terminal-spinner-service.js +13 -24
  271. package/lib/services/test-execution-service.js +59 -72
  272. package/lib/services/test-initialization-service.js +2 -2
  273. package/lib/services/timeline-profiler-service.js +1 -1
  274. package/lib/services/versions-service.js +119 -138
  275. package/lib/services/webpack/webpack-compiler-service.js +212 -224
  276. package/lib/services/xcconfig-service.js +8 -19
  277. package/lib/services/xcproj-service.js +12 -0
  278. package/lib/sys-info.js +45 -62
  279. package/lib/tools/node-modules/node-modules-builder.js +16 -27
  280. package/lib/yarn-package-manager.js +59 -78
  281. package/lib/yarn2-package-manager.js +60 -79
  282. package/package.json +59 -57
  283. package/vendor/aab-tool/README.txt +1 -1
  284. package/vendor/aab-tool/bundletool.jar +0 -0
  285. package/vendor/gradle-app/app/build.gradle +12 -4
  286. package/vendor/gradle-plugin/build.gradle +12 -4
  287. package/lib/common/resources/platform-tools/android/darwin/NOTICE.txt +0 -3407
  288. package/lib/common/resources/platform-tools/android/darwin/adb +0 -0
  289. package/lib/common/resources/platform-tools/android/linux/NOTICE.txt +0 -4451
  290. package/lib/common/resources/platform-tools/android/linux/adb +0 -0
  291. package/lib/common/resources/platform-tools/android/win32/AdbWinApi.dll +0 -0
  292. package/lib/common/resources/platform-tools/android/win32/AdbWinUsbApi.dll +0 -0
  293. package/lib/common/resources/platform-tools/android/win32/NOTICE.txt +0 -4451
  294. package/lib/common/resources/platform-tools/android/win32/adb.exe +0 -0
  295. package/lib/common/resources/platform-tools/android/win32/fastboot.exe +0 -0
@@ -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.DevicePathProvider = void 0;
13
4
  const helpers_1 = require("./common/helpers");
@@ -21,33 +12,31 @@ class DevicePathProvider {
21
12
  this.$iOSSimResolver = $iOSSimResolver;
22
13
  this.$errors = $errors;
23
14
  }
24
- getDeviceProjectRootPath(device, options) {
25
- return __awaiter(this, void 0, void 0, function* () {
26
- let projectRoot = "";
27
- if (this.$mobileHelper.isApplePlatform(device.deviceInfo.platform)) {
28
- projectRoot = device.isEmulator
29
- ? yield this.$iOSSimResolver.iOSSim.getApplicationPath(device.deviceInfo.identifier, options.appIdentifier)
30
- : constants_2.LiveSyncPaths.IOS_DEVICE_PROJECT_ROOT_PATH;
31
- if (!projectRoot) {
32
- this.$errors.fail("Unable to get application path on device.");
33
- }
34
- if (!options.getDirname) {
35
- projectRoot = path.join(projectRoot, constants_1.APP_FOLDER_NAME);
36
- }
15
+ async getDeviceProjectRootPath(device, options) {
16
+ let projectRoot = "";
17
+ if (this.$mobileHelper.isApplePlatform(device.deviceInfo.platform)) {
18
+ projectRoot = device.isEmulator
19
+ ? await this.$iOSSimResolver.iOSSim.getApplicationPath(device.deviceInfo.identifier, options.appIdentifier)
20
+ : constants_2.LiveSyncPaths.IOS_DEVICE_PROJECT_ROOT_PATH;
21
+ if (!projectRoot) {
22
+ this.$errors.fail("Unable to get application path on device.");
37
23
  }
38
- else if (this.$mobileHelper.isAndroidPlatform(device.deviceInfo.platform)) {
39
- projectRoot = `${constants_2.LiveSyncPaths.ANDROID_TMP_DIR_NAME}/${options.appIdentifier}`;
40
- if (!options.getDirname) {
41
- const hashService = (device).fileSystem.getDeviceHashService(options.appIdentifier);
42
- const hashFile = yield hashService.doesShasumFileExistsOnDevice();
43
- const syncFolderName = options.watch || hashFile
44
- ? constants_2.LiveSyncPaths.SYNC_DIR_NAME
45
- : constants_2.LiveSyncPaths.FULLSYNC_DIR_NAME;
46
- projectRoot = path.join(projectRoot, syncFolderName);
47
- }
24
+ if (!options.getDirname) {
25
+ projectRoot = path.join(projectRoot, constants_1.APP_FOLDER_NAME);
48
26
  }
49
- return (0, helpers_1.fromWindowsRelativePathToUnix)(projectRoot);
50
- });
27
+ }
28
+ else if (this.$mobileHelper.isAndroidPlatform(device.deviceInfo.platform)) {
29
+ projectRoot = `${constants_2.LiveSyncPaths.ANDROID_TMP_DIR_NAME}/${options.appIdentifier}`;
30
+ if (!options.getDirname) {
31
+ const hashService = (device).fileSystem.getDeviceHashService(options.appIdentifier);
32
+ const hashFile = await hashService.doesShasumFileExistsOnDevice();
33
+ const syncFolderName = options.watch || hashFile
34
+ ? constants_2.LiveSyncPaths.SYNC_DIR_NAME
35
+ : constants_2.LiveSyncPaths.FULLSYNC_DIR_NAME;
36
+ projectRoot = path.join(projectRoot, syncFolderName);
37
+ }
38
+ }
39
+ return (0, helpers_1.fromWindowsRelativePathToUnix)(projectRoot);
51
40
  }
52
41
  getDeviceSyncZipPath(device) {
53
42
  return this.$mobileHelper.isApplePlatform(device.deviceInfo.platform) &&
@@ -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.AppDebugSocketProxyFactory = void 0;
13
4
  const events_1 = require("events");
@@ -31,175 +22,169 @@ class AppDebugSocketProxyFactory extends events_1.EventEmitter {
31
22
  getTCPSocketProxy(deviceIdentifier, appId) {
32
23
  return this.deviceTcpServers[`${deviceIdentifier}-${appId}`];
33
24
  }
34
- addTCPSocketProxy(device, appId, projectName, projectDir) {
35
- return __awaiter(this, void 0, void 0, function* () {
36
- const cacheKey = `${device.deviceInfo.identifier}-${appId}`;
37
- const existingServer = this.deviceTcpServers[cacheKey];
38
- if (existingServer) {
39
- this.$errors.fail(`TCP socket proxy is already running for device '${device.deviceInfo.identifier}' and app '${appId}'`);
40
- }
41
- this.$logger.info("\nSetting up proxy...\nPress Ctrl + C to terminate, or disconnect.\n");
42
- const server = net.createServer({
43
- allowHalfOpen: true,
25
+ async addTCPSocketProxy(device, appId, projectName, projectDir) {
26
+ const cacheKey = `${device.deviceInfo.identifier}-${appId}`;
27
+ const existingServer = this.deviceTcpServers[cacheKey];
28
+ if (existingServer) {
29
+ this.$errors.fail(`TCP socket proxy is already running for device '${device.deviceInfo.identifier}' and app '${appId}'`);
30
+ }
31
+ this.$logger.info("\nSetting up proxy...\nPress Ctrl + C to terminate, or disconnect.\n");
32
+ const server = net.createServer({
33
+ allowHalfOpen: true,
34
+ });
35
+ this.deviceTcpServers[cacheKey] = server;
36
+ server.on("connection", async (frontendSocket) => {
37
+ this.$logger.info("Frontend client connected.");
38
+ frontendSocket.on("end", () => {
39
+ this.$logger.info("Frontend socket closed!");
40
+ if (!this.$options.watch) {
41
+ process.exit(0);
42
+ }
44
43
  });
45
- this.deviceTcpServers[cacheKey] = server;
46
- server.on("connection", (frontendSocket) => __awaiter(this, void 0, void 0, function* () {
47
- this.$logger.info("Frontend client connected.");
48
- frontendSocket.on("end", () => {
49
- this.$logger.info("Frontend socket closed!");
50
- if (!this.$options.watch) {
51
- process.exit(0);
52
- }
53
- });
54
- const appDebugSocket = yield device.getDebugSocket(appId, projectName, projectDir);
55
- this.$logger.info("Backend socket created.");
56
- appDebugSocket.on("end", () => {
57
- this.$logger.info("Backend socket closed!");
58
- if (!this.$options.watch) {
59
- process.exit(0);
60
- }
61
- });
62
- frontendSocket.on("close", () => __awaiter(this, void 0, void 0, function* () {
63
- this.$logger.info("Frontend socket closed");
64
- yield device.destroyDebugSocket(appId);
65
- }));
66
- appDebugSocket.on("close", () => {
67
- this.$logger.info("Backend socket closed");
68
- frontendSocket.destroy();
69
- server.close();
70
- delete this.deviceTcpServers[cacheKey];
71
- });
72
- appDebugSocket.pipe(frontendSocket);
73
- frontendSocket.pipe(appDebugSocket);
74
- frontendSocket.resume();
75
- }));
76
- const socketFileLocation = yield this.$tempService.path({
77
- suffix: ".sock",
44
+ const appDebugSocket = await device.getDebugSocket(appId, projectName, projectDir);
45
+ this.$logger.info("Backend socket created.");
46
+ appDebugSocket.on("end", () => {
47
+ this.$logger.info("Backend socket closed!");
48
+ if (!this.$options.watch) {
49
+ process.exit(0);
50
+ }
51
+ });
52
+ frontendSocket.on("close", async () => {
53
+ this.$logger.info("Frontend socket closed");
54
+ await device.destroyDebugSocket(appId);
55
+ });
56
+ appDebugSocket.on("close", () => {
57
+ this.$logger.info("Backend socket closed");
58
+ frontendSocket.destroy();
59
+ server.close();
60
+ delete this.deviceTcpServers[cacheKey];
78
61
  });
79
- server.listen(socketFileLocation);
80
- if (!this.$options.client) {
81
- this.$logger.info("socket-file-location: " + socketFileLocation);
82
- }
83
- return server;
62
+ appDebugSocket.pipe(frontendSocket);
63
+ frontendSocket.pipe(appDebugSocket);
64
+ frontendSocket.resume();
84
65
  });
85
- }
86
- ensureWebSocketProxy(device, appId, projectName, projectDir) {
87
- return __awaiter(this, void 0, void 0, function* () {
88
- const existingWebProxy = this.deviceWebServers[`${device.deviceInfo.identifier}-${appId}`];
89
- const result = existingWebProxy ||
90
- (yield this.addWebSocketProxy(device, appId, projectName, projectDir));
91
- this.$logger.info("Opened localhost " + result.options.port);
92
- return result;
66
+ const socketFileLocation = await this.$tempService.path({
67
+ suffix: ".sock",
93
68
  });
69
+ server.listen(socketFileLocation);
70
+ if (!this.$options.client) {
71
+ this.$logger.info("socket-file-location: " + socketFileLocation);
72
+ }
73
+ return server;
94
74
  }
95
- addWebSocketProxy(device, appId, projectName, projectDir) {
96
- return __awaiter(this, void 0, void 0, function* () {
97
- let clientConnectionLockRelease;
98
- const cacheKey = `${device.deviceInfo.identifier}-${appId}`;
99
- const existingServer = this.deviceWebServers[cacheKey];
100
- if (existingServer) {
101
- this.$errors.fail(`Web socket proxy is already running for device '${device.deviceInfo.identifier}' and app '${appId}'`);
102
- }
103
- const localPort = yield this.$net.getAvailablePortInRange(41000);
104
- this.$logger.info("\nSetting up debugger proxy...\nPress Ctrl + C to terminate, or disconnect.\n");
105
- let currentAppSocket = null;
106
- let currentWebSocket = null;
107
- const server = new ws.Server({
108
- port: localPort,
109
- verifyClient: (info, callback) => __awaiter(this, void 0, void 0, function* () {
110
- let acceptHandshake = true;
111
- clientConnectionLockRelease = null;
112
- try {
113
- clientConnectionLockRelease = yield this.$lockService.lock(`debug-connection-${device.deviceInfo.identifier}-${appId}.lock`);
114
- this.$logger.info("Frontend client connected.");
115
- let appDebugSocket;
116
- if (currentAppSocket) {
117
- currentAppSocket.removeAllListeners();
118
- currentAppSocket = null;
119
- if (currentWebSocket) {
120
- currentWebSocket.removeAllListeners();
121
- currentWebSocket.close();
122
- currentWebSocket = null;
123
- }
124
- yield device.destroyDebugSocket(appId);
125
- }
126
- appDebugSocket = yield device.getDebugSocket(appId, projectName, projectDir);
127
- currentAppSocket = appDebugSocket;
128
- this.$logger.info("Backend socket created.");
129
- info.req["__deviceSocket"] = appDebugSocket;
130
- }
131
- catch (err) {
132
- if (clientConnectionLockRelease) {
133
- clientConnectionLockRelease();
134
- }
135
- err.deviceIdentifier = device.deviceInfo.identifier;
136
- this.$logger.trace(err);
137
- this.emit(constants_1.CONNECTION_ERROR_EVENT_NAME, err);
138
- acceptHandshake = false;
139
- this.$logger.warn(`Cannot connect to device socket. The error message is '${err.message}'.`);
140
- }
141
- callback(acceptHandshake);
142
- }),
143
- });
144
- this.deviceWebServers[cacheKey] = server;
145
- server.on("connection", (webSocket, req) => {
146
- currentWebSocket = webSocket;
147
- const encoding = "utf16le";
148
- const appDebugSocket = req["__deviceSocket"];
149
- const packets = new ios_device_lib_1.MessageUnpackStream();
150
- appDebugSocket.pipe(packets);
151
- packets.on("data", (buffer) => {
152
- const message = buffer.toString(encoding);
153
- if (webSocket.readyState === webSocket.OPEN) {
154
- if (process.env.DEBUG_DEVTOOLS_SOCKETS) {
155
- console.log({
156
- msgFromRuntime: JSON.parse(message),
157
- });
75
+ async ensureWebSocketProxy(device, appId, projectName, projectDir) {
76
+ const existingWebProxy = this.deviceWebServers[`${device.deviceInfo.identifier}-${appId}`];
77
+ const result = existingWebProxy ||
78
+ (await this.addWebSocketProxy(device, appId, projectName, projectDir));
79
+ this.$logger.info("Opened localhost " + result.options.port);
80
+ return result;
81
+ }
82
+ async addWebSocketProxy(device, appId, projectName, projectDir) {
83
+ let clientConnectionLockRelease;
84
+ const cacheKey = `${device.deviceInfo.identifier}-${appId}`;
85
+ const existingServer = this.deviceWebServers[cacheKey];
86
+ if (existingServer) {
87
+ this.$errors.fail(`Web socket proxy is already running for device '${device.deviceInfo.identifier}' and app '${appId}'`);
88
+ }
89
+ const localPort = await this.$net.getAvailablePortInRange(41000);
90
+ this.$logger.info("\nSetting up debugger proxy...\nPress Ctrl + C to terminate, or disconnect.\n");
91
+ let currentAppSocket = null;
92
+ let currentWebSocket = null;
93
+ const server = new ws.Server({
94
+ port: localPort,
95
+ verifyClient: async (info, callback) => {
96
+ let acceptHandshake = true;
97
+ clientConnectionLockRelease = null;
98
+ try {
99
+ clientConnectionLockRelease = await this.$lockService.lock(`debug-connection-${device.deviceInfo.identifier}-${appId}.lock`);
100
+ this.$logger.info("Frontend client connected.");
101
+ let appDebugSocket;
102
+ if (currentAppSocket) {
103
+ currentAppSocket.removeAllListeners();
104
+ currentAppSocket = null;
105
+ if (currentWebSocket) {
106
+ currentWebSocket.removeAllListeners();
107
+ currentWebSocket.close();
108
+ currentWebSocket = null;
158
109
  }
159
- webSocket.send(message);
110
+ await device.destroyDebugSocket(appId);
160
111
  }
161
- else {
162
- this.$logger.trace(`Received message ${message}, but unable to send it to webSocket as its state is: ${webSocket.readyState}`);
112
+ appDebugSocket = await device.getDebugSocket(appId, projectName, projectDir);
113
+ currentAppSocket = appDebugSocket;
114
+ this.$logger.info("Backend socket created.");
115
+ info.req["__deviceSocket"] = appDebugSocket;
116
+ }
117
+ catch (err) {
118
+ if (clientConnectionLockRelease) {
119
+ clientConnectionLockRelease();
163
120
  }
164
- });
165
- webSocket.on("error", (err) => {
166
- this.$logger.trace("Error on debugger websocket", err);
167
- });
168
- appDebugSocket.on("error", (err) => {
169
- this.$logger.trace("Error on debugger deviceSocket", err);
170
- });
171
- webSocket.on("message", (message) => {
172
- const msg = message.toString();
121
+ err.deviceIdentifier = device.deviceInfo.identifier;
122
+ this.$logger.trace(err);
123
+ this.emit(constants_1.CONNECTION_ERROR_EVENT_NAME, err);
124
+ acceptHandshake = false;
125
+ this.$logger.warn(`Cannot connect to device socket. The error message is '${err.message}'.`);
126
+ }
127
+ callback(acceptHandshake);
128
+ },
129
+ });
130
+ this.deviceWebServers[cacheKey] = server;
131
+ server.on("connection", (webSocket, req) => {
132
+ currentWebSocket = webSocket;
133
+ const encoding = "utf16le";
134
+ const appDebugSocket = req["__deviceSocket"];
135
+ const packets = new ios_device_lib_1.MessageUnpackStream();
136
+ appDebugSocket.pipe(packets);
137
+ packets.on("data", (buffer) => {
138
+ const message = buffer.toString(encoding);
139
+ if (webSocket.readyState === webSocket.OPEN) {
173
140
  if (process.env.DEBUG_DEVTOOLS_SOCKETS) {
174
141
  console.log({
175
- msgFromDevtools: JSON.parse(msg),
142
+ msgFromRuntime: JSON.parse(message),
176
143
  });
177
144
  }
178
- const length = Buffer.byteLength(msg, encoding);
179
- const payload = Buffer.allocUnsafe(length + 4);
180
- payload.writeInt32BE(length, 0);
181
- payload.write(msg, 4, length, encoding);
182
- appDebugSocket.write(payload);
183
- });
184
- appDebugSocket.on("close", () => {
185
- currentAppSocket = null;
186
- this.$logger.trace("Backend socket closed!");
187
- webSocket.close();
188
- });
189
- webSocket.on("close", () => __awaiter(this, void 0, void 0, function* () {
190
- currentWebSocket = null;
191
- this.$logger.trace("Frontend socket closed!");
192
- appDebugSocket.unpipe(packets);
193
- packets.destroy();
194
- yield device.destroyDebugSocket(appId);
195
- if (!this.$options.watch) {
196
- process.exit(0);
197
- }
198
- }));
199
- clientConnectionLockRelease();
145
+ webSocket.send(message);
146
+ }
147
+ else {
148
+ this.$logger.trace(`Received message ${message}, but unable to send it to webSocket as its state is: ${webSocket.readyState}`);
149
+ }
150
+ });
151
+ webSocket.on("error", (err) => {
152
+ this.$logger.trace("Error on debugger websocket", err);
153
+ });
154
+ appDebugSocket.on("error", (err) => {
155
+ this.$logger.trace("Error on debugger deviceSocket", err);
156
+ });
157
+ webSocket.on("message", (message) => {
158
+ const msg = message.toString();
159
+ if (process.env.DEBUG_DEVTOOLS_SOCKETS) {
160
+ console.log({
161
+ msgFromDevtools: JSON.parse(msg),
162
+ });
163
+ }
164
+ const length = Buffer.byteLength(msg, encoding);
165
+ const payload = Buffer.allocUnsafe(length + 4);
166
+ payload.writeInt32BE(length, 0);
167
+ payload.write(msg, 4, length, encoding);
168
+ appDebugSocket.write(payload);
169
+ });
170
+ appDebugSocket.on("close", () => {
171
+ currentAppSocket = null;
172
+ this.$logger.trace("Backend socket closed!");
173
+ webSocket.close();
174
+ });
175
+ webSocket.on("close", async () => {
176
+ currentWebSocket = null;
177
+ this.$logger.trace("Frontend socket closed!");
178
+ appDebugSocket.unpipe(packets);
179
+ packets.destroy();
180
+ await device.destroyDebugSocket(appId);
181
+ if (!this.$options.watch) {
182
+ process.exit(0);
183
+ }
200
184
  });
201
- return server;
185
+ clientConnectionLockRelease();
202
186
  });
187
+ return server;
203
188
  }
204
189
  removeAllProxies() {
205
190
  let deviceId;
@@ -22,9 +22,9 @@ class IOSNotification extends events_1.EventEmitter {
22
22
  return `${appId}:NativeScript.Debug.${notification}`;
23
23
  }
24
24
  }
25
+ exports.IOSNotification = IOSNotification;
25
26
  IOSNotification.REFRESH_REQUEST_NOTIFICATION_NAME = "RefreshRequest";
26
27
  IOSNotification.APP_REFRESH_STARTED_NOTIFICATION_NAME = "AppRefreshStarted";
27
28
  IOSNotification.ATTACH_REQUEST_NOTIFICATION_NAME = "AttachRequest";
28
29
  IOSNotification.READY_FOR_ATTACH_NOTIFICATION_NAME = "ReadyForAttach";
29
- exports.IOSNotification = IOSNotification;
30
30
  yok_1.injector.register("iOSNotification", IOSNotification);
@@ -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.IOSSocketRequestExecutor = void 0;
13
4
  const constants = require("../../common/constants");
@@ -18,38 +9,32 @@ class IOSSocketRequestExecutor {
18
9
  this.$iOSNotification = $iOSNotification;
19
10
  this.$iOSNotificationService = $iOSNotificationService;
20
11
  }
21
- executeAttachRequest(device, timeout, appId) {
22
- return __awaiter(this, void 0, void 0, function* () {
23
- const deviceId = device.deviceInfo.identifier;
24
- const mainRequestName = this.$iOSNotification.getAttachRequest(appId, deviceId);
25
- const readyRequestName = this.$iOSNotification.getReadyForAttach(appId);
26
- yield this.executeRequest(mainRequestName, readyRequestName, appId, deviceId, timeout);
27
- });
12
+ async executeAttachRequest(device, timeout, appId) {
13
+ const deviceId = device.deviceInfo.identifier;
14
+ const mainRequestName = this.$iOSNotification.getAttachRequest(appId, deviceId);
15
+ const readyRequestName = this.$iOSNotification.getReadyForAttach(appId);
16
+ await this.executeRequest(mainRequestName, readyRequestName, appId, deviceId, timeout);
28
17
  }
29
- executeRefreshRequest(device, timeout, appId) {
30
- return __awaiter(this, void 0, void 0, function* () {
31
- const deviceId = device.deviceInfo.identifier;
32
- const mainRequestName = this.$iOSNotification.getRefreshRequest(appId);
33
- const refreshRequestStartedName = this.$iOSNotification.getAppRefreshStarted(appId);
34
- const result = yield this.executeRequest(mainRequestName, refreshRequestStartedName, appId, deviceId, timeout);
35
- return result;
36
- });
18
+ async executeRefreshRequest(device, timeout, appId) {
19
+ const deviceId = device.deviceInfo.identifier;
20
+ const mainRequestName = this.$iOSNotification.getRefreshRequest(appId);
21
+ const refreshRequestStartedName = this.$iOSNotification.getAppRefreshStarted(appId);
22
+ const result = await this.executeRequest(mainRequestName, refreshRequestStartedName, appId, deviceId, timeout);
23
+ return result;
37
24
  }
38
- executeRequest(mainRequestName, successfulyExecutedNotificationName, appId, deviceId, timeout) {
39
- return __awaiter(this, void 0, void 0, function* () {
40
- let isSuccessful = false;
41
- try {
42
- const socket = yield this.$iOSNotificationService.postNotification(deviceId, successfulyExecutedNotificationName, constants.IOS_OBSERVE_NOTIFICATION_COMMAND_TYPE);
43
- const notificationPromise = this.$iOSNotificationService.awaitNotification(deviceId, +socket, timeout);
44
- yield this.$iOSNotificationService.postNotification(deviceId, mainRequestName);
45
- yield notificationPromise;
46
- isSuccessful = true;
47
- }
48
- catch (e) {
49
- this.$errors.fail(`The application ${appId} does not appear to be running on ${deviceId} or is not built with debugging enabled. Try starting the application manually.`);
50
- }
51
- return isSuccessful;
52
- });
25
+ async executeRequest(mainRequestName, successfulyExecutedNotificationName, appId, deviceId, timeout) {
26
+ let isSuccessful = false;
27
+ try {
28
+ const socket = await this.$iOSNotificationService.postNotification(deviceId, successfulyExecutedNotificationName, constants.IOS_OBSERVE_NOTIFICATION_COMMAND_TYPE);
29
+ const notificationPromise = this.$iOSNotificationService.awaitNotification(deviceId, +socket, timeout);
30
+ await this.$iOSNotificationService.postNotification(deviceId, mainRequestName);
31
+ await notificationPromise;
32
+ isSuccessful = true;
33
+ }
34
+ catch (e) {
35
+ this.$errors.fail(`The application ${appId} does not appear to be running on ${deviceId} or is not built with debugging enabled. Try starting the application manually.`);
36
+ }
37
+ return isSuccessful;
53
38
  }
54
39
  }
55
40
  exports.IOSSocketRequestExecutor = IOSSocketRequestExecutor;
@@ -46,7 +46,7 @@ class AndroidBundleValidatorHelper extends version_validator_helper_1.VersionVal
46
46
  }
47
47
  }
48
48
  }
49
+ exports.AndroidBundleValidatorHelper = AndroidBundleValidatorHelper;
49
50
  AndroidBundleValidatorHelper.MIN_RUNTIME_VERSION = "5.0.0";
50
51
  AndroidBundleValidatorHelper.MIN_ANDROID_WITH_AAB_SUPPORT = "4.4.0";
51
- exports.AndroidBundleValidatorHelper = AndroidBundleValidatorHelper;
52
52
  yok_1.injector.register("androidBundleValidatorHelper", AndroidBundleValidatorHelper);
@@ -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.DeployCommandHelper = void 0;
13
4
  const yok_1 = require("../common/yok");
@@ -21,49 +12,54 @@ class DeployCommandHelper {
21
12
  this.$options = $options;
22
13
  this.$projectData = $projectData;
23
14
  }
24
- deploy(platform, additionalOptions) {
25
- return __awaiter(this, void 0, void 0, function* () {
26
- const emulator = this.$options.emulator;
27
- yield this.$devicesService.initialize({
28
- deviceId: this.$options.device,
29
- platform,
30
- emulator,
31
- skipInferPlatform: !platform,
32
- sdk: this.$options.sdk,
33
- });
34
- const devices = this.$devicesService
35
- .getDeviceInstances()
36
- .filter((d) => !platform ||
37
- d.deviceInfo.platform.toLowerCase() === platform.toLowerCase());
38
- const deviceDescriptors = devices.map((d) => {
39
- const outputPath = additionalOptions &&
40
- additionalOptions.getOutputDirectory &&
41
- additionalOptions.getOutputDirectory({
42
- platform: d.deviceInfo.platform,
43
- emulator: d.isEmulator,
44
- projectDir: this.$projectData.projectDir,
45
- });
46
- const buildData = this.$buildDataService.getBuildData(this.$projectData.projectDir, d.deviceInfo.platform, Object.assign(Object.assign({}, this.$options.argv), { outputPath, buildFilterDevicesArch: false, buildForDevice: !d.isEmulator, skipWatcher: !this.$options.watch, nativePrepare: {
47
- skipNativePrepare: additionalOptions && additionalOptions.skipNativePrepare,
48
- } }));
49
- this.$androidBundleValidatorHelper.validateDeviceApiLevel(d, buildData);
50
- const buildAction = additionalOptions && additionalOptions.buildPlatform
51
- ? additionalOptions.buildPlatform.bind(additionalOptions.buildPlatform, d.deviceInfo.platform, buildData, this.$projectData)
52
- : this.$buildController.build.bind(this.$buildController, buildData);
53
- const info = {
54
- identifier: d.deviceInfo.identifier,
55
- buildAction,
56
- debuggingEnabled: additionalOptions &&
57
- additionalOptions.deviceDebugMap &&
58
- additionalOptions.deviceDebugMap[d.deviceInfo.identifier],
59
- debugOptions: this.$options,
15
+ async deploy(platform, additionalOptions) {
16
+ const emulator = this.$options.emulator;
17
+ await this.$devicesService.initialize({
18
+ deviceId: this.$options.device,
19
+ platform,
20
+ emulator,
21
+ skipInferPlatform: !platform,
22
+ sdk: this.$options.sdk,
23
+ });
24
+ const devices = this.$devicesService
25
+ .getDeviceInstances()
26
+ .filter((d) => !platform ||
27
+ d.deviceInfo.platform.toLowerCase() === platform.toLowerCase());
28
+ const deviceDescriptors = devices.map((d) => {
29
+ const outputPath = additionalOptions &&
30
+ additionalOptions.getOutputDirectory &&
31
+ additionalOptions.getOutputDirectory({
32
+ platform: d.deviceInfo.platform,
33
+ emulator: d.isEmulator,
34
+ projectDir: this.$projectData.projectDir,
35
+ });
36
+ const buildData = this.$buildDataService.getBuildData(this.$projectData.projectDir, d.deviceInfo.platform, {
37
+ ...this.$options.argv,
38
+ outputPath,
39
+ buildFilterDevicesArch: false,
40
+ buildForDevice: !d.isEmulator,
41
+ skipWatcher: !this.$options.watch,
42
+ nativePrepare: {
60
43
  skipNativePrepare: additionalOptions && additionalOptions.skipNativePrepare,
61
- buildData,
62
- };
63
- return info;
44
+ },
64
45
  });
65
- yield this.$deployController.deploy({ deviceDescriptors });
46
+ this.$androidBundleValidatorHelper.validateDeviceApiLevel(d, buildData);
47
+ const buildAction = additionalOptions && additionalOptions.buildPlatform
48
+ ? additionalOptions.buildPlatform.bind(additionalOptions.buildPlatform, d.deviceInfo.platform, buildData, this.$projectData)
49
+ : this.$buildController.build.bind(this.$buildController, buildData);
50
+ const info = {
51
+ identifier: d.deviceInfo.identifier,
52
+ buildAction,
53
+ debuggingEnabled: additionalOptions &&
54
+ additionalOptions.deviceDebugMap &&
55
+ additionalOptions.deviceDebugMap[d.deviceInfo.identifier],
56
+ debugOptions: this.$options,
57
+ skipNativePrepare: additionalOptions && additionalOptions.skipNativePrepare,
58
+ buildData,
59
+ };
60
+ return info;
66
61
  });
62
+ await this.$deployController.deploy({ deviceDescriptors });
67
63
  }
68
64
  }
69
65
  exports.DeployCommandHelper = DeployCommandHelper;