@akylas/nativescript-cli 8.8.2 → 8.8.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 (275) hide show
  1. package/lib/android-tools-info.js +9 -20
  2. package/lib/base-package-manager.js +47 -64
  3. package/lib/bun-package-manager.js +65 -88
  4. package/lib/color.js +2 -2
  5. package/lib/commands/add-platform.js +14 -30
  6. package/lib/commands/apple-login.js +18 -29
  7. package/lib/commands/appstore-list.js +34 -45
  8. package/lib/commands/appstore-upload.js +55 -68
  9. package/lib/commands/build.js +57 -86
  10. package/lib/commands/clean.js +161 -176
  11. package/lib/commands/command-base.js +14 -27
  12. package/lib/commands/config.js +51 -70
  13. package/lib/commands/create-project.js +210 -229
  14. package/lib/commands/debug.js +66 -88
  15. package/lib/commands/deploy.js +28 -44
  16. package/lib/commands/embedding/embed.js +33 -52
  17. package/lib/commands/extensibility/install-extension.js +5 -16
  18. package/lib/commands/extensibility/list-extensions.js +13 -24
  19. package/lib/commands/extensibility/uninstall-extension.js +4 -15
  20. package/lib/commands/fonts.js +30 -41
  21. package/lib/commands/generate-assets.js +13 -28
  22. package/lib/commands/generate-help.js +2 -13
  23. package/lib/commands/generate.js +17 -26
  24. package/lib/commands/info.js +2 -13
  25. package/lib/commands/install.js +34 -49
  26. package/lib/commands/list-platforms.js +14 -25
  27. package/lib/commands/migrate.js +15 -26
  28. package/lib/commands/native-add.js +23 -46
  29. package/lib/commands/platform-clean.js +19 -32
  30. package/lib/commands/plugin/add-plugin.js +12 -25
  31. package/lib/commands/plugin/build-plugin.js +34 -39
  32. package/lib/commands/plugin/create-plugin.js +110 -133
  33. package/lib/commands/plugin/list-plugins.js +22 -33
  34. package/lib/commands/plugin/remove-plugin.js +20 -33
  35. package/lib/commands/plugin/update-plugin.js +20 -33
  36. package/lib/commands/post-install.js +20 -33
  37. package/lib/commands/prepare.js +19 -35
  38. package/lib/commands/preview.js +49 -62
  39. package/lib/commands/remove-platform.js +7 -18
  40. package/lib/commands/resources/resources-update.js +13 -26
  41. package/lib/commands/run.js +55 -76
  42. package/lib/commands/start.js +6 -19
  43. package/lib/commands/test-init.js +123 -134
  44. package/lib/commands/test.js +66 -89
  45. package/lib/commands/typings.js +126 -142
  46. package/lib/commands/update-platform.js +22 -35
  47. package/lib/commands/update.js +30 -43
  48. package/lib/common/child-process.js +53 -72
  49. package/lib/common/codeGeneration/code-entity.js +1 -1
  50. package/lib/common/codeGeneration/code-printer.js +1 -1
  51. package/lib/common/command-params.js +7 -18
  52. package/lib/common/commands/analytics.js +27 -40
  53. package/lib/common/commands/autocompletion.js +39 -56
  54. package/lib/common/commands/device/device-log-stream.js +12 -23
  55. package/lib/common/commands/device/get-file.js +22 -33
  56. package/lib/common/commands/device/list-applications.js +12 -23
  57. package/lib/common/commands/device/list-devices.js +72 -87
  58. package/lib/common/commands/device/list-files.js +23 -34
  59. package/lib/common/commands/device/put-file.js +22 -33
  60. package/lib/common/commands/device/run-application.js +12 -25
  61. package/lib/common/commands/device/stop-application.js +11 -22
  62. package/lib/common/commands/device/uninstall-application.js +6 -17
  63. package/lib/common/commands/generate-messages.js +17 -28
  64. package/lib/common/commands/help.js +20 -33
  65. package/lib/common/commands/package-manager-get.js +6 -17
  66. package/lib/common/commands/package-manager-set.js +9 -20
  67. package/lib/common/commands/post-install.js +2 -13
  68. package/lib/common/commands/preuninstall.js +23 -38
  69. package/lib/common/commands/proxy/proxy-base.js +8 -19
  70. package/lib/common/commands/proxy/proxy-clear.js +4 -15
  71. package/lib/common/commands/proxy/proxy-get.js +3 -14
  72. package/lib/common/commands/proxy/proxy-set.js +87 -100
  73. package/lib/common/constants.js +11 -11
  74. package/lib/common/decorators.js +10 -22
  75. package/lib/common/dispatchers.js +79 -96
  76. package/lib/common/errors.js +89 -104
  77. package/lib/common/file-system.js +106 -127
  78. package/lib/common/header.js +1 -2
  79. package/lib/common/helpers.js +149 -178
  80. package/lib/common/host-info.js +37 -50
  81. package/lib/common/http-client.js +93 -108
  82. package/lib/common/logger/appenders/cli-appender.js +1 -2
  83. package/lib/common/logger/appenders/emit-appender.js +1 -2
  84. package/lib/common/logger/layouts/cli-layout.js +1 -2
  85. package/lib/common/logger/logger.js +1 -1
  86. package/lib/common/mobile/android/android-application-manager.js +121 -142
  87. package/lib/common/mobile/android/android-debug-bridge-result-handler.js +1 -1
  88. package/lib/common/mobile/android/android-debug-bridge.js +87 -112
  89. package/lib/common/mobile/android/android-device-file-system.js +98 -131
  90. package/lib/common/mobile/android/android-device-hash-service.js +50 -75
  91. package/lib/common/mobile/android/android-device.js +74 -91
  92. package/lib/common/mobile/android/android-emulator-services.js +105 -130
  93. package/lib/common/mobile/android/android-log-filter.js +1 -1
  94. package/lib/common/mobile/android/android-virtual-device-service.js +76 -97
  95. package/lib/common/mobile/android/device-android-debug-bridge.js +13 -29
  96. package/lib/common/mobile/android/genymotion/genymotion-service.js +91 -118
  97. package/lib/common/mobile/android/genymotion/virtualbox-service.js +64 -81
  98. package/lib/common/mobile/android/logcat-helper.js +108 -127
  99. package/lib/common/mobile/application-manager-base.js +84 -107
  100. package/lib/common/mobile/device-log-provider-base.js +7 -18
  101. package/lib/common/mobile/ios/device/ios-application-manager.js +79 -108
  102. package/lib/common/mobile/ios/device/ios-device-file-system.js +78 -105
  103. package/lib/common/mobile/ios/device/ios-device-operations.js +105 -142
  104. package/lib/common/mobile/ios/device/ios-device.js +20 -36
  105. package/lib/common/mobile/ios/ios-device-base.js +58 -81
  106. package/lib/common/mobile/ios/simulator/ios-emulator-services.js +63 -92
  107. package/lib/common/mobile/ios/simulator/ios-sim-resolver.js +1 -1
  108. package/lib/common/mobile/ios/simulator/ios-simulator-application-manager.js +60 -89
  109. package/lib/common/mobile/ios/simulator/ios-simulator-device.js +27 -43
  110. package/lib/common/mobile/ios/simulator/ios-simulator-file-system.js +37 -62
  111. package/lib/common/mobile/ios/simulator/ios-simulator-log-provider.js +24 -35
  112. package/lib/common/mobile/mobile-core/android-device-discovery.js +43 -62
  113. package/lib/common/mobile/mobile-core/android-emulator-discovery.js +21 -32
  114. package/lib/common/mobile/mobile-core/android-process-service.js +143 -182
  115. package/lib/common/mobile/mobile-core/device-discovery.js +2 -13
  116. package/lib/common/mobile/mobile-core/devices-service.js +385 -436
  117. package/lib/common/mobile/mobile-core/ios-device-discovery.js +24 -35
  118. package/lib/common/mobile/mobile-core/ios-simulator-discovery.js +47 -62
  119. package/lib/common/mobile/mobile-helper.js +15 -26
  120. package/lib/common/mobile/wp8/wp8-emulator-services.js +25 -52
  121. package/lib/common/opener.js +2 -2
  122. package/lib/common/plist-parser.js +3 -3
  123. package/lib/common/prompter.js +90 -105
  124. package/lib/common/queue.js +9 -20
  125. package/lib/common/services/auto-completion-service.js +39 -52
  126. package/lib/common/services/cancellation.js +17 -28
  127. package/lib/common/services/commands-service.js +146 -169
  128. package/lib/common/services/help-service.js +132 -157
  129. package/lib/common/services/hooks-service.js +93 -108
  130. package/lib/common/services/ios-notification-service.js +21 -34
  131. package/lib/common/services/json-file-settings-service.js +52 -71
  132. package/lib/common/services/lock-service.js +35 -52
  133. package/lib/common/services/message-contract-generator.js +35 -46
  134. package/lib/common/services/micro-templating-service.js +4 -15
  135. package/lib/common/services/net-service.js +90 -107
  136. package/lib/common/services/project-files-manager.js +10 -23
  137. package/lib/common/services/proxy-service.js +13 -24
  138. package/lib/common/services/qr.js +13 -24
  139. package/lib/common/services/settings-service.js +1 -1
  140. package/lib/common/services/xcode-select-service.js +20 -35
  141. package/lib/common/utils.js +2 -2
  142. package/lib/common/validators/project-name-validator.js +1 -1
  143. package/lib/common/validators/validation-result.js +1 -1
  144. package/lib/common/verify-node-version.js +2 -3
  145. package/lib/common/yok.js +23 -36
  146. package/lib/config.js +7 -58
  147. package/lib/constants.js +24 -24
  148. package/lib/controllers/build-controller.js +82 -99
  149. package/lib/controllers/debug-controller.js +107 -128
  150. package/lib/controllers/deploy-controller.js +17 -22
  151. package/lib/controllers/migrate-controller.js +722 -795
  152. package/lib/controllers/platform-controller.js +72 -87
  153. package/lib/controllers/prepare-controller.js +266 -299
  154. package/lib/controllers/run-controller.js +392 -406
  155. package/lib/controllers/update-controller-base.js +16 -29
  156. package/lib/controllers/update-controller.js +94 -119
  157. package/lib/data/prepare-data.js +4 -1
  158. package/lib/definitions/ios-debugger-port-service.d.ts +1 -1
  159. package/lib/definitions/livesync.d.ts +1 -1
  160. package/lib/detached-processes/cleanup-js-subprocess.js +3 -12
  161. package/lib/detached-processes/cleanup-process.js +16 -25
  162. package/lib/device-path-provider.js +23 -34
  163. package/lib/device-sockets/ios/app-debug-socket-proxy-factory.js +149 -164
  164. package/lib/device-sockets/ios/notification.js +1 -1
  165. package/lib/device-sockets/ios/socket-request-executor.js +24 -39
  166. package/lib/helpers/android-bundle-validator-helper.js +1 -1
  167. package/lib/helpers/deploy-command-helper.js +45 -49
  168. package/lib/helpers/key-command-helper.js +4 -13
  169. package/lib/helpers/livesync-command-helper.js +137 -152
  170. package/lib/helpers/network-connectivity-validator.js +6 -17
  171. package/lib/helpers/options-track-helper.js +6 -17
  172. package/lib/helpers/platform-command-helper.js +99 -120
  173. package/lib/key-commands/index.js +161 -211
  174. package/lib/nativescript-cli.js +5 -14
  175. package/lib/node-package-manager.js +81 -104
  176. package/lib/options.js +3 -12
  177. package/lib/package-installation-manager.js +130 -165
  178. package/lib/package-manager.js +63 -86
  179. package/lib/platform-command-param.js +4 -15
  180. package/lib/pnpm-package-manager.js +59 -78
  181. package/lib/project-data.js +1 -1
  182. package/lib/providers/project-files-provider.js +1 -1
  183. package/lib/services/analytics/analytics-broker-process.js +13 -22
  184. package/lib/services/analytics/analytics-broker.js +17 -30
  185. package/lib/services/analytics/analytics-service.js +161 -198
  186. package/lib/services/analytics/google-analytics-provider.js +41 -56
  187. package/lib/services/analytics-settings-service.js +15 -32
  188. package/lib/services/android/android-bundle-tool-service.js +43 -60
  189. package/lib/services/android/gradle-build-args-service.js +9 -20
  190. package/lib/services/android/gradle-build-service.js +34 -47
  191. package/lib/services/android/gradle-command-service.js +22 -35
  192. package/lib/services/android-device-debug-service.js +90 -117
  193. package/lib/services/android-plugin-build-service.js +230 -256
  194. package/lib/services/android-project-service.js +163 -199
  195. package/lib/services/android-resources-migration-service.js +51 -64
  196. package/lib/services/apple-portal/apple-portal-application-service.js +46 -63
  197. package/lib/services/apple-portal/apple-portal-session-service.js +171 -188
  198. package/lib/services/assets-generation/assets-generation-service.js +98 -115
  199. package/lib/services/build-artifacts-service.js +9 -20
  200. package/lib/services/build-info-file-service.js +20 -35
  201. package/lib/services/cleanup-service.js +47 -76
  202. package/lib/services/cocoapods-service.js +115 -136
  203. package/lib/services/device/device-install-app-service.js +73 -90
  204. package/lib/services/doctor-service.js +99 -118
  205. package/lib/services/extensibility-service.js +81 -100
  206. package/lib/services/files-hash-service.js +26 -43
  207. package/lib/services/hmr-status-service.js +1 -1
  208. package/lib/services/initialize-service.js +37 -50
  209. package/lib/services/ios/export-options-plist-service.js +38 -51
  210. package/lib/services/ios/ios-signing-service.js +161 -180
  211. package/lib/services/ios/spm-service.js +40 -53
  212. package/lib/services/ios/xcodebuild-args-service.js +77 -94
  213. package/lib/services/ios/xcodebuild-command-service.js +14 -25
  214. package/lib/services/ios/xcodebuild-service.js +50 -69
  215. package/lib/services/ios-debugger-port-service.js +23 -36
  216. package/lib/services/ios-device-debug-service.js +75 -102
  217. package/lib/services/ios-entitlements-service.js +31 -42
  218. package/lib/services/ios-extensions-service.js +18 -29
  219. package/lib/services/ios-project-service.js +405 -460
  220. package/lib/services/ios-provision-service.js +108 -129
  221. package/lib/services/ios-watch-app-service.js +21 -32
  222. package/lib/services/ip-service.js +38 -53
  223. package/lib/services/itmstransporter-service.js +129 -152
  224. package/lib/services/livesync/android-device-livesync-service-base.js +31 -48
  225. package/lib/services/livesync/android-device-livesync-service.js +120 -149
  226. package/lib/services/livesync/android-device-livesync-sockets-service.js +121 -152
  227. package/lib/services/livesync/android-livesync-service.js +14 -35
  228. package/lib/services/livesync/android-livesync-tool.js +89 -112
  229. package/lib/services/livesync/device-livesync-service-base.js +15 -28
  230. package/lib/services/livesync/ios-device-livesync-service.js +114 -143
  231. package/lib/services/livesync/ios-livesync-service.js +42 -58
  232. package/lib/services/livesync/platform-livesync-service-base.js +94 -119
  233. package/lib/services/log-parser-service.js +1 -1
  234. package/lib/services/log-source-map-service.js +30 -41
  235. package/lib/services/marking-mode-service.js +15 -28
  236. package/lib/services/npm-config-service.js +1 -1
  237. package/lib/services/pacote-service.js +49 -64
  238. package/lib/services/performance-service.js +1 -1
  239. package/lib/services/platform/add-platform-service.js +50 -71
  240. package/lib/services/platform/platform-validation-service.js +22 -33
  241. package/lib/services/platform/prepare-native-platform-service.js +49 -62
  242. package/lib/services/platform-environment-requirements.js +26 -37
  243. package/lib/services/plugins-service.js +122 -147
  244. package/lib/services/project-backup-service.js +1 -1
  245. package/lib/services/project-changes-service.js +124 -141
  246. package/lib/services/project-cleanup-service.js +64 -77
  247. package/lib/services/project-config-service.js +71 -80
  248. package/lib/services/project-data-service.js +101 -118
  249. package/lib/services/project-name-service.js +28 -43
  250. package/lib/services/project-service.js +84 -103
  251. package/lib/services/project-templates-service.js +52 -67
  252. package/lib/services/start-service.js +41 -59
  253. package/lib/services/temp-service.js +8 -21
  254. package/lib/services/terminal-spinner-service.js +13 -24
  255. package/lib/services/test-execution-service.js +59 -72
  256. package/lib/services/test-initialization-service.js +2 -2
  257. package/lib/services/timeline-profiler-service.js +1 -1
  258. package/lib/services/versions-service.js +119 -138
  259. package/lib/services/webpack/webpack-compiler-service.js +211 -231
  260. package/lib/services/xcconfig-service.js +8 -19
  261. package/lib/sys-info.js +45 -62
  262. package/lib/tools/node-modules/node-modules-builder.js +16 -27
  263. package/lib/yarn-package-manager.js +59 -78
  264. package/lib/yarn2-package-manager.js +60 -79
  265. package/package.json +56 -54
  266. package/vendor/aab-tool/bundletool.jar +0 -0
  267. package/lib/common/resources/platform-tools/android/darwin/NOTICE.txt +0 -3407
  268. package/lib/common/resources/platform-tools/android/darwin/adb +0 -0
  269. package/lib/common/resources/platform-tools/android/linux/NOTICE.txt +0 -4451
  270. package/lib/common/resources/platform-tools/android/linux/adb +0 -0
  271. package/lib/common/resources/platform-tools/android/win32/AdbWinApi.dll +0 -0
  272. package/lib/common/resources/platform-tools/android/win32/AdbWinUsbApi.dll +0 -0
  273. package/lib/common/resources/platform-tools/android/win32/NOTICE.txt +0 -4451
  274. package/lib/common/resources/platform-tools/android/win32/adb.exe +0 -0
  275. package/lib/common/resources/platform-tools/android/win32/fastboot.exe +0 -0
@@ -5,15 +5,6 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
5
5
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
6
  return c > 3 && r && Object.defineProperty(target, key, r), r;
7
7
  };
8
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
9
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
10
- return new (P || (P = Promise))(function (resolve, reject) {
11
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
12
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
13
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
14
- step((generator = generator.apply(thisArg, _arguments || [])).next());
15
- });
16
- };
17
8
  Object.defineProperty(exports, "__esModule", { value: true });
18
9
  exports.RunController = void 0;
19
10
  const constants_1 = require("../common/constants");
@@ -49,198 +40,188 @@ class RunController extends events_1.EventEmitter {
49
40
  this.$projectDataService = $projectDataService;
50
41
  this.prepareReadyEventHandler = null;
51
42
  }
52
- run(runData) {
53
- return __awaiter(this, void 0, void 0, function* () {
54
- const { liveSyncInfo, deviceDescriptors } = runData;
55
- const { projectDir } = liveSyncInfo;
56
- const projectData = this.$projectDataService.getProjectData(projectDir);
57
- yield this.initializeSetup(projectData);
58
- const deviceDescriptorsForInitialSync = this.getDeviceDescriptorsForInitialSync(projectDir, deviceDescriptors);
59
- const newPlatforms = this.$devicesService.getPlatformsFromDeviceDescriptors(deviceDescriptors);
60
- const oldPlatforms = this.$liveSyncProcessDataService.getPlatforms(projectDir);
61
- const platforms = _.uniq(_.concat(newPlatforms, oldPlatforms));
62
- this.$liveSyncProcessDataService.persistData(projectDir, deviceDescriptors, platforms);
63
- const shouldStartWatcher = !liveSyncInfo.skipWatcher &&
64
- this.$liveSyncProcessDataService.hasDeviceDescriptors(projectDir);
65
- if (shouldStartWatcher && liveSyncInfo.useHotModuleReload) {
66
- this.$hmrStatusService.attachToHmrStatusEvent();
67
- }
68
- if (!this.prepareReadyEventHandler) {
69
- const handler = (data) => __awaiter(this, void 0, void 0, function* () {
70
- if (data.hasNativeChanges) {
71
- const platformData = this.$platformsDataService.getPlatformData(data.platform, projectData);
72
- const prepareData = this.$prepareDataService.getPrepareData(liveSyncInfo.projectDir, data.platform, Object.assign(Object.assign({}, liveSyncInfo), { watch: !liveSyncInfo.skipWatcher }));
73
- const changesInfo = yield this.$projectChangesService.checkForChanges(platformData, projectData, prepareData, data);
74
- if (changesInfo.hasChanges) {
75
- yield this.syncChangedDataOnDevices(data, projectData, platformData, liveSyncInfo);
76
- }
77
- }
78
- else {
79
- const platformData = this.$platformsDataService.getPlatformData(data.platform, projectData);
80
- yield this.syncChangedDataOnDevices(data, projectData, platformData, liveSyncInfo);
43
+ async run(runData) {
44
+ const { liveSyncInfo, deviceDescriptors } = runData;
45
+ const { projectDir } = liveSyncInfo;
46
+ const projectData = this.$projectDataService.getProjectData(projectDir);
47
+ await this.initializeSetup(projectData);
48
+ const deviceDescriptorsForInitialSync = this.getDeviceDescriptorsForInitialSync(projectDir, deviceDescriptors);
49
+ const newPlatforms = this.$devicesService.getPlatformsFromDeviceDescriptors(deviceDescriptors);
50
+ const oldPlatforms = this.$liveSyncProcessDataService.getPlatforms(projectDir);
51
+ const platforms = _.uniq(_.concat(newPlatforms, oldPlatforms));
52
+ this.$liveSyncProcessDataService.persistData(projectDir, deviceDescriptors, platforms);
53
+ const shouldStartWatcher = !liveSyncInfo.skipWatcher &&
54
+ this.$liveSyncProcessDataService.hasDeviceDescriptors(projectDir);
55
+ if (shouldStartWatcher && liveSyncInfo.useHotModuleReload) {
56
+ this.$hmrStatusService.attachToHmrStatusEvent();
57
+ }
58
+ if (!this.prepareReadyEventHandler) {
59
+ const handler = async (data) => {
60
+ if (data.hasNativeChanges) {
61
+ const platformData = this.$platformsDataService.getPlatformData(data.platform, projectData);
62
+ const prepareData = this.$prepareDataService.getPrepareData(liveSyncInfo.projectDir, data.platform, { ...liveSyncInfo, watch: !liveSyncInfo.skipWatcher });
63
+ const changesInfo = await this.$projectChangesService.checkForChanges(platformData, projectData, prepareData, data);
64
+ if (changesInfo.hasChanges) {
65
+ await this.syncChangedDataOnDevices(data, projectData, platformData, liveSyncInfo);
81
66
  }
82
- });
83
- this.prepareReadyEventHandler = handler.bind(this);
84
- this.$prepareController.on(constants_2.PREPARE_READY_EVENT_NAME, this.prepareReadyEventHandler);
85
- }
86
- yield this.syncInitialDataOnDevices(projectData, liveSyncInfo, deviceDescriptorsForInitialSync);
87
- this.attachDeviceLostHandler();
88
- });
67
+ }
68
+ else {
69
+ const platformData = this.$platformsDataService.getPlatformData(data.platform, projectData);
70
+ await this.syncChangedDataOnDevices(data, projectData, platformData, liveSyncInfo);
71
+ }
72
+ };
73
+ this.prepareReadyEventHandler = handler.bind(this);
74
+ this.$prepareController.on(constants_2.PREPARE_READY_EVENT_NAME, this.prepareReadyEventHandler);
75
+ }
76
+ await this.syncInitialDataOnDevices(projectData, liveSyncInfo, deviceDescriptorsForInitialSync);
77
+ this.attachDeviceLostHandler();
89
78
  }
90
- stop(data) {
91
- return __awaiter(this, void 0, void 0, function* () {
92
- const { projectDir, deviceIdentifiers, stopOptions } = data;
93
- const liveSyncProcessInfo = this.$liveSyncProcessDataService.getPersistedData(projectDir);
94
- if (liveSyncProcessInfo && !liveSyncProcessInfo.isStopped) {
95
- const shouldAwaitPendingOperation = !stopOptions || stopOptions.shouldAwaitAllActions;
96
- const deviceIdentifiersToRemove = deviceIdentifiers && deviceIdentifiers.length
97
- ? deviceIdentifiers
98
- : _.map(liveSyncProcessInfo.deviceDescriptors, (d) => d.identifier);
99
- const removedDeviceIdentifiers = _.remove(liveSyncProcessInfo.deviceDescriptors, (descriptor) => _.includes(deviceIdentifiersToRemove, descriptor.identifier)).map((descriptor) => descriptor.identifier);
100
- for (let i = 0; i < liveSyncProcessInfo.platforms.length; i++) {
101
- const platform = liveSyncProcessInfo.platforms[i];
102
- const devices = this.$devicesService.getDevicesForPlatform(platform);
103
- if (!devices || !devices.length) {
104
- yield this.$prepareController.stopWatchers(projectDir, platform);
105
- }
79
+ async stop(data) {
80
+ const { projectDir, deviceIdentifiers, stopOptions } = data;
81
+ const liveSyncProcessInfo = this.$liveSyncProcessDataService.getPersistedData(projectDir);
82
+ if (liveSyncProcessInfo && !liveSyncProcessInfo.isStopped) {
83
+ const shouldAwaitPendingOperation = !stopOptions || stopOptions.shouldAwaitAllActions;
84
+ const deviceIdentifiersToRemove = deviceIdentifiers && deviceIdentifiers.length
85
+ ? deviceIdentifiers
86
+ : _.map(liveSyncProcessInfo.deviceDescriptors, (d) => d.identifier);
87
+ const removedDeviceIdentifiers = _.remove(liveSyncProcessInfo.deviceDescriptors, (descriptor) => _.includes(deviceIdentifiersToRemove, descriptor.identifier)).map((descriptor) => descriptor.identifier);
88
+ for (let i = 0; i < liveSyncProcessInfo.platforms.length; i++) {
89
+ const platform = liveSyncProcessInfo.platforms[i];
90
+ const devices = this.$devicesService.getDevicesForPlatform(platform);
91
+ if (!devices || !devices.length) {
92
+ await this.$prepareController.stopWatchers(projectDir, platform);
106
93
  }
107
- if (!deviceIdentifiers ||
108
- !deviceIdentifiers.length ||
109
- !liveSyncProcessInfo.deviceDescriptors ||
110
- !liveSyncProcessInfo.deviceDescriptors.length) {
111
- if (liveSyncProcessInfo.timer) {
112
- clearTimeout(liveSyncProcessInfo.timer);
113
- }
114
- for (let k = 0; k < liveSyncProcessInfo.platforms.length; k++) {
115
- yield this.$prepareController.stopWatchers(projectDir, liveSyncProcessInfo.platforms[k]);
116
- }
117
- liveSyncProcessInfo.isStopped = true;
118
- if (liveSyncProcessInfo.actionsChain && shouldAwaitPendingOperation) {
119
- yield liveSyncProcessInfo.actionsChain;
120
- }
121
- liveSyncProcessInfo.deviceDescriptors = [];
122
- if (this.prepareReadyEventHandler) {
123
- this.$prepareController.removeListener(constants_2.PREPARE_READY_EVENT_NAME, this.prepareReadyEventHandler);
124
- this.prepareReadyEventHandler = null;
125
- }
126
- const projectData = this.$projectDataService.getProjectData(projectDir);
127
- yield this.$hooksService.executeAfterHooks("watch", {
128
- hookArgs: {
129
- projectData,
130
- },
131
- });
94
+ }
95
+ if (!deviceIdentifiers ||
96
+ !deviceIdentifiers.length ||
97
+ !liveSyncProcessInfo.deviceDescriptors ||
98
+ !liveSyncProcessInfo.deviceDescriptors.length) {
99
+ if (liveSyncProcessInfo.timer) {
100
+ clearTimeout(liveSyncProcessInfo.timer);
132
101
  }
133
- else if (liveSyncProcessInfo.currentSyncAction &&
134
- shouldAwaitPendingOperation) {
135
- yield liveSyncProcessInfo.currentSyncAction;
102
+ for (let k = 0; k < liveSyncProcessInfo.platforms.length; k++) {
103
+ await this.$prepareController.stopWatchers(projectDir, liveSyncProcessInfo.platforms[k]);
136
104
  }
137
- _.each(removedDeviceIdentifiers, (deviceIdentifier) => {
138
- this.emitCore(constants_2.RunOnDeviceEvents.runOnDeviceStopped, {
139
- projectDir,
140
- deviceIdentifier,
141
- keepProcessAlive: stopOptions === null || stopOptions === void 0 ? void 0 : stopOptions.keepProcessAlive,
142
- });
143
- });
144
- if (stopOptions === null || stopOptions === void 0 ? void 0 : stopOptions.keepProcessAlive) {
145
- this.removeAllListeners(constants_2.RunOnDeviceEvents.runOnDeviceStopped);
105
+ liveSyncProcessInfo.isStopped = true;
106
+ if (liveSyncProcessInfo.actionsChain && shouldAwaitPendingOperation) {
107
+ await liveSyncProcessInfo.actionsChain;
146
108
  }
109
+ liveSyncProcessInfo.deviceDescriptors = [];
110
+ if (this.prepareReadyEventHandler) {
111
+ this.$prepareController.removeListener(constants_2.PREPARE_READY_EVENT_NAME, this.prepareReadyEventHandler);
112
+ this.prepareReadyEventHandler = null;
113
+ }
114
+ const projectData = this.$projectDataService.getProjectData(projectDir);
115
+ await this.$hooksService.executeAfterHooks("watch", {
116
+ hookArgs: {
117
+ projectData,
118
+ },
119
+ });
147
120
  }
148
- });
121
+ else if (liveSyncProcessInfo.currentSyncAction &&
122
+ shouldAwaitPendingOperation) {
123
+ await liveSyncProcessInfo.currentSyncAction;
124
+ }
125
+ _.each(removedDeviceIdentifiers, (deviceIdentifier) => {
126
+ this.emitCore(constants_2.RunOnDeviceEvents.runOnDeviceStopped, {
127
+ projectDir,
128
+ deviceIdentifier,
129
+ keepProcessAlive: stopOptions === null || stopOptions === void 0 ? void 0 : stopOptions.keepProcessAlive,
130
+ });
131
+ });
132
+ if (stopOptions === null || stopOptions === void 0 ? void 0 : stopOptions.keepProcessAlive) {
133
+ this.removeAllListeners(constants_2.RunOnDeviceEvents.runOnDeviceStopped);
134
+ }
135
+ }
149
136
  }
150
137
  getDeviceDescriptors(data) {
151
138
  return this.$liveSyncProcessDataService.getDeviceDescriptors(data.projectDir);
152
139
  }
153
- refreshApplication(projectData, liveSyncResultInfo, filesChangeEventData, deviceDescriptor, fullSyncAction) {
154
- return __awaiter(this, void 0, void 0, function* () {
155
- const result = deviceDescriptor.debuggingEnabled
156
- ? yield this.refreshApplicationWithDebug(projectData, liveSyncResultInfo, filesChangeEventData, deviceDescriptor)
157
- : yield this.refreshApplicationWithoutDebug(projectData, liveSyncResultInfo, filesChangeEventData, deviceDescriptor, undefined, fullSyncAction);
158
- const device = liveSyncResultInfo.deviceAppData.device;
159
- this.emitCore(constants_2.RunOnDeviceEvents.runOnDeviceExecuted, {
160
- projectDir: projectData.projectDir,
161
- deviceIdentifier: device.deviceInfo.identifier,
162
- applicationIdentifier: projectData.projectIdentifiers[device.deviceInfo.platform.toLowerCase()],
163
- syncedFiles: liveSyncResultInfo.modifiedFilesData.map((m) => m.getLocalPath()),
164
- isFullSync: liveSyncResultInfo.isFullSync,
165
- });
166
- return result;
140
+ async refreshApplication(projectData, liveSyncResultInfo, filesChangeEventData, deviceDescriptor, fullSyncAction) {
141
+ const result = deviceDescriptor.debuggingEnabled
142
+ ? await this.refreshApplicationWithDebug(projectData, liveSyncResultInfo, filesChangeEventData, deviceDescriptor)
143
+ : await this.refreshApplicationWithoutDebug(projectData, liveSyncResultInfo, filesChangeEventData, deviceDescriptor, undefined, fullSyncAction);
144
+ const device = liveSyncResultInfo.deviceAppData.device;
145
+ this.emitCore(constants_2.RunOnDeviceEvents.runOnDeviceExecuted, {
146
+ projectDir: projectData.projectDir,
147
+ deviceIdentifier: device.deviceInfo.identifier,
148
+ applicationIdentifier: projectData.projectIdentifiers[device.deviceInfo.platform.toLowerCase()],
149
+ syncedFiles: liveSyncResultInfo.modifiedFilesData.map((m) => m.getLocalPath()),
150
+ isFullSync: liveSyncResultInfo.isFullSync,
167
151
  });
152
+ return result;
168
153
  }
169
- refreshApplicationWithDebug(projectData, liveSyncResultInfo, filesChangeEventData, deviceDescriptor) {
170
- return __awaiter(this, void 0, void 0, function* () {
171
- const debugOptions = deviceDescriptor.debugOptions || {};
172
- liveSyncResultInfo.waitForDebugger = !!debugOptions.debugBrk;
173
- liveSyncResultInfo.forceRefreshWithSocket = true;
174
- const refreshInfo = yield this.refreshApplicationWithoutDebug(projectData, liveSyncResultInfo, filesChangeEventData, deviceDescriptor, {
175
- shouldSkipEmitLiveSyncNotification: true,
176
- shouldCheckDeveloperDiscImage: true,
177
- });
178
- debugOptions.start = !debugOptions.debugBrk;
179
- debugOptions.forceDebuggerAttachedEvent = refreshInfo.didRestart;
180
- yield this.$debugController.enableDebuggingCoreWithoutWaitingCurrentAction(projectData.projectDir, deviceDescriptor.identifier, debugOptions);
181
- return refreshInfo;
154
+ async refreshApplicationWithDebug(projectData, liveSyncResultInfo, filesChangeEventData, deviceDescriptor) {
155
+ const debugOptions = deviceDescriptor.debugOptions || {};
156
+ liveSyncResultInfo.waitForDebugger = !!debugOptions.debugBrk;
157
+ liveSyncResultInfo.forceRefreshWithSocket = true;
158
+ const refreshInfo = await this.refreshApplicationWithoutDebug(projectData, liveSyncResultInfo, filesChangeEventData, deviceDescriptor, {
159
+ shouldSkipEmitLiveSyncNotification: true,
160
+ shouldCheckDeveloperDiscImage: true,
182
161
  });
162
+ debugOptions.start = !debugOptions.debugBrk;
163
+ debugOptions.forceDebuggerAttachedEvent = refreshInfo.didRestart;
164
+ await this.$debugController.enableDebuggingCoreWithoutWaitingCurrentAction(projectData.projectDir, deviceDescriptor.identifier, debugOptions);
165
+ return refreshInfo;
183
166
  }
184
- refreshApplicationWithoutDebug(projectData, liveSyncResultInfo, filesChangeEventData, deviceDescriptor, settings, fullSyncAction) {
185
- return __awaiter(this, void 0, void 0, function* () {
186
- const result = { didRestart: false };
187
- const platform = liveSyncResultInfo.deviceAppData.platform;
188
- const applicationIdentifier = projectData.projectIdentifiers[platform.toLowerCase()];
189
- const platformLiveSyncService = this.$liveSyncServiceResolver.resolveLiveSyncService(platform);
190
- try {
191
- const isFullSync = filesChangeEventData &&
192
- (filesChangeEventData.hasNativeChanges ||
193
- !filesChangeEventData.hasOnlyHotUpdateFiles);
194
- let shouldRestart = isFullSync;
195
- if (!shouldRestart) {
196
- shouldRestart = yield platformLiveSyncService.shouldRestart(projectData, liveSyncResultInfo);
197
- }
198
- if (!shouldRestart) {
199
- shouldRestart = !(yield platformLiveSyncService.tryRefreshApplication(projectData, liveSyncResultInfo));
200
- }
201
- if (!isFullSync && shouldRestart && fullSyncAction) {
202
- this.$logger.trace(`Syncing all files as the current app state does not support hot updates.`);
203
- liveSyncResultInfo.didRecover = true;
204
- yield fullSyncAction();
205
- }
206
- if (shouldRestart) {
207
- this.emit(constants_2.DEBUGGER_DETACHED_EVENT_NAME, {
208
- deviceIdentifier: liveSyncResultInfo.deviceAppData.device.deviceInfo.identifier,
209
- });
210
- yield platformLiveSyncService.restartApplication(projectData, liveSyncResultInfo);
211
- result.didRestart = true;
212
- }
167
+ async refreshApplicationWithoutDebug(projectData, liveSyncResultInfo, filesChangeEventData, deviceDescriptor, settings, fullSyncAction) {
168
+ const result = { didRestart: false };
169
+ const platform = liveSyncResultInfo.deviceAppData.platform;
170
+ const applicationIdentifier = projectData.projectIdentifiers[platform.toLowerCase()];
171
+ const platformLiveSyncService = this.$liveSyncServiceResolver.resolveLiveSyncService(platform);
172
+ try {
173
+ const isFullSync = filesChangeEventData &&
174
+ (filesChangeEventData.hasNativeChanges ||
175
+ !filesChangeEventData.hasOnlyHotUpdateFiles);
176
+ let shouldRestart = isFullSync;
177
+ if (!shouldRestart) {
178
+ shouldRestart = await platformLiveSyncService.shouldRestart(projectData, liveSyncResultInfo);
213
179
  }
214
- catch (err) {
215
- this.$logger.info(`Error while trying to start application ${applicationIdentifier} on device ${liveSyncResultInfo.deviceAppData.device.deviceInfo.identifier}. Error is: ${err.message || err}`);
216
- const msg = `Unable to start application ${applicationIdentifier} on device ${liveSyncResultInfo.deviceAppData.device.deviceInfo.identifier}. Try starting it manually.`;
217
- this.$logger.warn(msg);
218
- const device = liveSyncResultInfo.deviceAppData.device;
219
- const deviceIdentifier = device.deviceInfo.identifier;
220
- if (!settings || !settings.shouldSkipEmitLiveSyncNotification) {
221
- this.emitCore(constants_2.RunOnDeviceEvents.runOnDeviceNotification, {
222
- projectDir: projectData.projectDir,
223
- deviceIdentifier: device.deviceInfo.identifier,
224
- applicationIdentifier: projectData.projectIdentifiers[device.deviceInfo.platform.toLowerCase()],
225
- notification: msg,
226
- });
227
- }
228
- if (settings &&
229
- settings.shouldCheckDeveloperDiscImage &&
230
- (err.message || err) === "Could not find developer disk image") {
231
- const attachDebuggerOptions = {
232
- platform: device.deviceInfo.platform,
233
- isEmulator: device.isEmulator,
234
- projectDir: projectData.projectDir,
235
- deviceIdentifier,
236
- debugOptions: deviceDescriptor.debugOptions,
237
- outputPath: deviceDescriptor.buildData.outputPath,
238
- };
239
- this.emit(constants_2.USER_INTERACTION_NEEDED_EVENT_NAME, attachDebuggerOptions);
240
- }
180
+ if (!shouldRestart) {
181
+ shouldRestart = !(await platformLiveSyncService.tryRefreshApplication(projectData, liveSyncResultInfo));
241
182
  }
242
- return result;
243
- });
183
+ if (!isFullSync && shouldRestart && fullSyncAction) {
184
+ this.$logger.trace(`Syncing all files as the current app state does not support hot updates.`);
185
+ liveSyncResultInfo.didRecover = true;
186
+ await fullSyncAction();
187
+ }
188
+ if (shouldRestart) {
189
+ this.emit(constants_2.DEBUGGER_DETACHED_EVENT_NAME, {
190
+ deviceIdentifier: liveSyncResultInfo.deviceAppData.device.deviceInfo.identifier,
191
+ });
192
+ await platformLiveSyncService.restartApplication(projectData, liveSyncResultInfo);
193
+ result.didRestart = true;
194
+ }
195
+ }
196
+ catch (err) {
197
+ this.$logger.info(`Error while trying to start application ${applicationIdentifier} on device ${liveSyncResultInfo.deviceAppData.device.deviceInfo.identifier}. Error is: ${err.message || err}`);
198
+ const msg = `Unable to start application ${applicationIdentifier} on device ${liveSyncResultInfo.deviceAppData.device.deviceInfo.identifier}. Try starting it manually.`;
199
+ this.$logger.warn(msg);
200
+ const device = liveSyncResultInfo.deviceAppData.device;
201
+ const deviceIdentifier = device.deviceInfo.identifier;
202
+ if (!settings || !settings.shouldSkipEmitLiveSyncNotification) {
203
+ this.emitCore(constants_2.RunOnDeviceEvents.runOnDeviceNotification, {
204
+ projectDir: projectData.projectDir,
205
+ deviceIdentifier: device.deviceInfo.identifier,
206
+ applicationIdentifier: projectData.projectIdentifiers[device.deviceInfo.platform.toLowerCase()],
207
+ notification: msg,
208
+ });
209
+ }
210
+ if (settings &&
211
+ settings.shouldCheckDeveloperDiscImage &&
212
+ (err.message || err) === "Could not find developer disk image") {
213
+ const attachDebuggerOptions = {
214
+ platform: device.deviceInfo.platform,
215
+ isEmulator: device.isEmulator,
216
+ projectDir: projectData.projectDir,
217
+ deviceIdentifier,
218
+ debugOptions: deviceDescriptor.debugOptions,
219
+ outputPath: deviceDescriptor.buildData.outputPath,
220
+ };
221
+ this.emit(constants_2.USER_INTERACTION_NEEDED_EVENT_NAME, attachDebuggerOptions);
222
+ }
223
+ }
224
+ return result;
244
225
  }
245
226
  getDeviceDescriptorsForInitialSync(projectDir, deviceDescriptors) {
246
227
  const currentRunData = this.$liveSyncProcessDataService.getPersistedData(projectDir);
@@ -250,25 +231,23 @@ class RunController extends events_1.EventEmitter {
250
231
  : deviceDescriptors;
251
232
  return deviceDescriptorsForInitialSync;
252
233
  }
253
- initializeSetup(projectData) {
254
- return __awaiter(this, void 0, void 0, function* () {
255
- try {
256
- yield this.$pluginsService.ensureAllDependenciesAreInstalled(projectData);
257
- }
258
- catch (err) {
259
- this.$logger.trace(err);
260
- this.$errors.fail(`Unable to install dependencies. Make sure your package.json is valid and all dependencies are correct. Error is: ${err.message}`);
261
- }
262
- });
234
+ async initializeSetup(projectData) {
235
+ try {
236
+ await this.$pluginsService.ensureAllDependenciesAreInstalled(projectData);
237
+ }
238
+ catch (err) {
239
+ this.$logger.trace(err);
240
+ this.$errors.fail(`Unable to install dependencies. Make sure your package.json is valid and all dependencies are correct. Error is: ${err.message}`);
241
+ }
263
242
  }
264
243
  attachDeviceLostHandler() {
265
- this.$devicesService.on(constants_1.DeviceDiscoveryEventNames.DEVICE_LOST, (device) => __awaiter(this, void 0, void 0, function* () {
244
+ this.$devicesService.on(constants_1.DeviceDiscoveryEventNames.DEVICE_LOST, async (device) => {
266
245
  this.$logger.trace(`Received ${constants_1.DeviceDiscoveryEventNames.DEVICE_LOST} event in LiveSync service for ${device.deviceInfo.identifier}. Will stop LiveSync operation for this device.`);
267
246
  for (const projectDir in this.$liveSyncProcessDataService.getAllPersistedData()) {
268
247
  try {
269
248
  const deviceDescriptors = this.getDeviceDescriptors({ projectDir });
270
249
  if (_.find(deviceDescriptors, (d) => d.identifier === device.deviceInfo.identifier)) {
271
- yield this.stop({
250
+ await this.stop({
272
251
  projectDir,
273
252
  deviceIdentifiers: [device.deviceInfo.identifier],
274
253
  });
@@ -278,240 +257,248 @@ class RunController extends events_1.EventEmitter {
278
257
  this.$logger.warn(`Unable to stop LiveSync operation for ${device.deviceInfo.identifier}.`, err);
279
258
  }
280
259
  }
281
- }));
260
+ });
282
261
  }
283
- syncInitialDataOnDevices(projectData, liveSyncInfo, deviceDescriptors) {
284
- return __awaiter(this, void 0, void 0, function* () {
285
- const rebuiltInformation = {};
286
- const deviceAction = (device) => __awaiter(this, void 0, void 0, function* () {
287
- const deviceDescriptor = _.find(deviceDescriptors, (dd) => dd.identifier === device.deviceInfo.identifier);
288
- const prepareData = this.$prepareDataService.getPrepareData(liveSyncInfo.projectDir, device.deviceInfo.platform, Object.assign(Object.assign(Object.assign({}, liveSyncInfo), deviceDescriptor.buildData), { nativePrepare: {
289
- skipNativePrepare: !!deviceDescriptor.skipNativePrepare,
290
- }, watch: !liveSyncInfo.skipWatcher }));
291
- const prepareResultData = yield this.$prepareController.prepare(prepareData);
292
- const buildData = Object.assign(Object.assign({}, deviceDescriptor.buildData), { buildForDevice: !device.isEmulator });
293
- const platformData = this.$platformsDataService.getPlatformData(device.deviceInfo.platform, projectData);
294
- try {
295
- if (rebuiltInformation[platformData.platformNameLowerCase] &&
296
- (this.$mobileHelper.isAndroidPlatform(platformData.platformNameLowerCase) ||
297
- rebuiltInformation[platformData.platformNameLowerCase]
298
- .isEmulator === device.isEmulator)) {
299
- yield this.$deviceInstallAppService.installOnDevice(device, buildData);
262
+ async syncInitialDataOnDevices(projectData, liveSyncInfo, deviceDescriptors) {
263
+ const rebuiltInformation = {};
264
+ const deviceAction = async (device) => {
265
+ const deviceDescriptor = _.find(deviceDescriptors, (dd) => dd.identifier === device.deviceInfo.identifier);
266
+ const prepareData = this.$prepareDataService.getPrepareData(liveSyncInfo.projectDir, device.deviceInfo.platform, {
267
+ ...liveSyncInfo,
268
+ ...deviceDescriptor.buildData,
269
+ nativePrepare: {
270
+ skipNativePrepare: !!deviceDescriptor.skipNativePrepare,
271
+ },
272
+ watch: !liveSyncInfo.skipWatcher,
273
+ });
274
+ const prepareResultData = await this.$prepareController.prepare(prepareData);
275
+ const buildData = {
276
+ ...deviceDescriptor.buildData,
277
+ buildForDevice: !device.isEmulator,
278
+ };
279
+ const platformData = this.$platformsDataService.getPlatformData(device.deviceInfo.platform, projectData);
280
+ try {
281
+ if (rebuiltInformation[platformData.platformNameLowerCase] &&
282
+ (this.$mobileHelper.isAndroidPlatform(platformData.platformNameLowerCase) ||
283
+ rebuiltInformation[platformData.platformNameLowerCase]
284
+ .isEmulator === device.isEmulator)) {
285
+ await this.$deviceInstallAppService.installOnDevice(device, buildData);
286
+ }
287
+ else {
288
+ const shouldBuild = prepareResultData.hasNativeChanges ||
289
+ buildData.nativePrepare.forceRebuildNativeApp ||
290
+ (await this.$buildController.shouldBuild(buildData));
291
+ if (shouldBuild) {
292
+ await deviceDescriptor.buildAction();
293
+ rebuiltInformation[platformData.platformNameLowerCase] = {
294
+ isEmulator: device.isEmulator,
295
+ platform: platformData.platformNameLowerCase,
296
+ };
300
297
  }
301
298
  else {
302
- const shouldBuild = prepareResultData.hasNativeChanges ||
303
- buildData.nativePrepare.forceRebuildNativeApp ||
304
- (yield this.$buildController.shouldBuild(buildData));
305
- if (shouldBuild) {
306
- yield deviceDescriptor.buildAction();
307
- rebuiltInformation[platformData.platformNameLowerCase] = {
308
- isEmulator: device.isEmulator,
309
- platform: platformData.platformNameLowerCase,
310
- };
311
- }
312
- else {
313
- yield this.$analyticsService.trackEventActionInGoogleAnalytics({
314
- action: "LiveSync",
315
- device,
316
- projectDir: projectData.projectDir,
317
- });
318
- }
319
- yield this.$deviceInstallAppService.installOnDeviceIfNeeded(device, buildData);
299
+ await this.$analyticsService.trackEventActionInGoogleAnalytics({
300
+ action: "LiveSync",
301
+ device,
302
+ projectDir: projectData.projectDir,
303
+ });
320
304
  }
321
- const platformLiveSyncService = this.$liveSyncServiceResolver.resolveLiveSyncService(platformData.platformNameLowerCase);
322
- const { force, useHotModuleReload, skipWatcher } = liveSyncInfo;
323
- const liveSyncResultInfo = yield platformLiveSyncService.fullSync({
324
- force,
325
- useHotModuleReload,
326
- projectData,
327
- device,
328
- watch: !skipWatcher,
329
- liveSyncDeviceData: deviceDescriptor,
330
- });
331
- yield this.refreshApplication(projectData, liveSyncResultInfo, null, deviceDescriptor);
332
- this.$logger.info(`Successfully synced application ${liveSyncResultInfo.deviceAppData.appIdentifier} on device ${liveSyncResultInfo.deviceAppData.device.deviceInfo.identifier}.`);
333
- this.emitCore(constants_2.RunOnDeviceEvents.runOnDeviceStarted, {
334
- projectDir: projectData.projectDir,
335
- deviceIdentifier: device.deviceInfo.identifier,
336
- applicationIdentifier: projectData.projectIdentifiers[device.deviceInfo.platform.toLowerCase()],
337
- });
305
+ await this.$deviceInstallAppService.installOnDeviceIfNeeded(device, buildData);
338
306
  }
339
- catch (err) {
340
- this.$logger.warn(`Unable to apply changes on device: ${device.deviceInfo.identifier}. Error is: ${err.message}.`);
341
- this.$logger.trace(err);
342
- this.emitCore(constants_2.RunOnDeviceEvents.runOnDeviceError, {
343
- projectDir: projectData.projectDir,
344
- deviceIdentifier: device.deviceInfo.identifier,
345
- applicationIdentifier: projectData.projectIdentifiers[device.deviceInfo.platform.toLowerCase()],
346
- error: err,
347
- });
348
- yield this.stop({
349
- projectDir: projectData.projectDir,
350
- deviceIdentifiers: [device.deviceInfo.identifier],
351
- stopOptions: { shouldAwaitAllActions: false },
352
- });
353
- }
354
- });
355
- yield this.addActionToChain(projectData.projectDir, () => this.$devicesService.execute(deviceAction, (device) => _.some(deviceDescriptors, (deviceDescriptor) => deviceDescriptor.identifier === device.deviceInfo.identifier)));
356
- });
307
+ const platformLiveSyncService = this.$liveSyncServiceResolver.resolveLiveSyncService(platformData.platformNameLowerCase);
308
+ const { force, useHotModuleReload, skipWatcher } = liveSyncInfo;
309
+ const liveSyncResultInfo = await platformLiveSyncService.fullSync({
310
+ force,
311
+ useHotModuleReload,
312
+ projectData,
313
+ device,
314
+ watch: !skipWatcher,
315
+ liveSyncDeviceData: deviceDescriptor,
316
+ });
317
+ await this.refreshApplication(projectData, liveSyncResultInfo, null, deviceDescriptor);
318
+ this.$logger.info(`Successfully synced application ${liveSyncResultInfo.deviceAppData.appIdentifier} on device ${liveSyncResultInfo.deviceAppData.device.deviceInfo.identifier}.`);
319
+ this.emitCore(constants_2.RunOnDeviceEvents.runOnDeviceStarted, {
320
+ projectDir: projectData.projectDir,
321
+ deviceIdentifier: device.deviceInfo.identifier,
322
+ applicationIdentifier: projectData.projectIdentifiers[device.deviceInfo.platform.toLowerCase()],
323
+ });
324
+ }
325
+ catch (err) {
326
+ this.$logger.warn(`Unable to apply changes on device: ${device.deviceInfo.identifier}. Error is: ${err.message}.`);
327
+ this.$logger.trace(err);
328
+ this.emitCore(constants_2.RunOnDeviceEvents.runOnDeviceError, {
329
+ projectDir: projectData.projectDir,
330
+ deviceIdentifier: device.deviceInfo.identifier,
331
+ applicationIdentifier: projectData.projectIdentifiers[device.deviceInfo.platform.toLowerCase()],
332
+ error: err,
333
+ });
334
+ await this.stop({
335
+ projectDir: projectData.projectDir,
336
+ deviceIdentifiers: [device.deviceInfo.identifier],
337
+ stopOptions: { shouldAwaitAllActions: false },
338
+ });
339
+ }
340
+ };
341
+ await this.addActionToChain(projectData.projectDir, () => this.$devicesService.execute(deviceAction, (device) => _.some(deviceDescriptors, (deviceDescriptor) => deviceDescriptor.identifier === device.deviceInfo.identifier)));
357
342
  }
358
- syncChangedDataOnDevices(data, projectData, platformData, liveSyncInfo) {
359
- return __awaiter(this, void 0, void 0, function* () {
360
- const successfullySyncedMessageFormat = `Successfully synced application %s on device %s.`;
361
- const rebuiltInformation = {};
362
- const deviceAction = (device) => __awaiter(this, void 0, void 0, function* () {
363
- var _a, _b;
364
- const deviceDescriptors = this.$liveSyncProcessDataService.getDeviceDescriptors(projectData.projectDir);
365
- const deviceDescriptor = _.find(deviceDescriptors, (dd) => dd.identifier === device.deviceInfo.identifier);
366
- const platformData = this.$platformsDataService.getPlatformData(data.platform, projectData);
367
- const prepareData = this.$prepareDataService.getPrepareData(liveSyncInfo.projectDir, device.deviceInfo.platform, Object.assign(Object.assign(Object.assign({}, liveSyncInfo), deviceDescriptor.buildData), { nativePrepare: {
368
- skipNativePrepare: !!deviceDescriptor.skipNativePrepare,
369
- }, watch: !liveSyncInfo.skipWatcher }));
370
- try {
371
- const platformLiveSyncService = this.$liveSyncServiceResolver.resolveLiveSyncService(device.deviceInfo.platform);
372
- const allAppFiles = ((_b = (_a = data.hmrData) === null || _a === void 0 ? void 0 : _a.fallbackFiles) === null || _b === void 0 ? void 0 : _b.length)
373
- ? data.hmrData.fallbackFiles
374
- : data.files;
375
- const filesToSync = data.hasOnlyHotUpdateFiles
376
- ? data.files
377
- : allAppFiles;
378
- const watchInfo = {
379
- liveSyncDeviceData: deviceDescriptor,
380
- projectData,
381
- filesToRemove: [],
382
- filesToSync,
383
- hmrData: data.hmrData,
343
+ async syncChangedDataOnDevices(data, projectData, platformData, liveSyncInfo) {
344
+ const successfullySyncedMessageFormat = `Successfully synced application %s on device %s.`;
345
+ const rebuiltInformation = {};
346
+ const deviceAction = async (device) => {
347
+ var _a, _b;
348
+ const deviceDescriptors = this.$liveSyncProcessDataService.getDeviceDescriptors(projectData.projectDir);
349
+ const deviceDescriptor = _.find(deviceDescriptors, (dd) => dd.identifier === device.deviceInfo.identifier);
350
+ const platformData = this.$platformsDataService.getPlatformData(data.platform, projectData);
351
+ const prepareData = this.$prepareDataService.getPrepareData(liveSyncInfo.projectDir, device.deviceInfo.platform, {
352
+ ...liveSyncInfo,
353
+ ...deviceDescriptor.buildData,
354
+ nativePrepare: {
355
+ skipNativePrepare: !!deviceDescriptor.skipNativePrepare,
356
+ },
357
+ watch: !liveSyncInfo.skipWatcher,
358
+ });
359
+ try {
360
+ const platformLiveSyncService = this.$liveSyncServiceResolver.resolveLiveSyncService(device.deviceInfo.platform);
361
+ const allAppFiles = ((_b = (_a = data.hmrData) === null || _a === void 0 ? void 0 : _a.fallbackFiles) === null || _b === void 0 ? void 0 : _b.length)
362
+ ? data.hmrData.fallbackFiles
363
+ : data.files;
364
+ const filesToSync = data.hasOnlyHotUpdateFiles
365
+ ? data.files
366
+ : allAppFiles;
367
+ const watchInfo = {
368
+ liveSyncDeviceData: deviceDescriptor,
369
+ projectData,
370
+ filesToRemove: [],
371
+ filesToSync,
372
+ hmrData: data.hmrData,
373
+ useHotModuleReload: liveSyncInfo.useHotModuleReload,
374
+ force: liveSyncInfo.force,
375
+ connectTimeout: 1000,
376
+ };
377
+ const deviceAppData = await platformLiveSyncService.getAppData(_.merge({ device, watch: true }, watchInfo));
378
+ if (data.hasNativeChanges) {
379
+ const rebuiltInfo = rebuiltInformation[platformData.platformNameLowerCase] &&
380
+ (this.$mobileHelper.isAndroidPlatform(platformData.platformNameLowerCase) ||
381
+ rebuiltInformation[platformData.platformNameLowerCase]
382
+ .isEmulator === device.isEmulator);
383
+ if (!rebuiltInfo) {
384
+ await this.$prepareNativePlatformService.prepareNativePlatform(platformData, projectData, prepareData);
385
+ await deviceDescriptor.buildAction();
386
+ rebuiltInformation[platformData.platformNameLowerCase] = {
387
+ isEmulator: device.isEmulator,
388
+ platform: platformData.platformNameLowerCase,
389
+ packageFilePath: null,
390
+ };
391
+ }
392
+ await this.$deviceInstallAppService.installOnDevice(device, deviceDescriptor.buildData);
393
+ await platformLiveSyncService.syncAfterInstall(device, watchInfo);
394
+ await this.refreshApplication(projectData, {
395
+ deviceAppData,
396
+ modifiedFilesData: [],
397
+ isFullSync: false,
384
398
  useHotModuleReload: liveSyncInfo.useHotModuleReload,
385
- force: liveSyncInfo.force,
386
- connectTimeout: 1000,
387
- };
388
- const deviceAppData = yield platformLiveSyncService.getAppData(_.merge({ device, watch: true }, watchInfo));
389
- if (data.hasNativeChanges) {
390
- const rebuiltInfo = rebuiltInformation[platformData.platformNameLowerCase] &&
391
- (this.$mobileHelper.isAndroidPlatform(platformData.platformNameLowerCase) ||
392
- rebuiltInformation[platformData.platformNameLowerCase]
393
- .isEmulator === device.isEmulator);
394
- if (!rebuiltInfo) {
395
- yield this.$prepareNativePlatformService.prepareNativePlatform(platformData, projectData, prepareData);
396
- yield deviceDescriptor.buildAction();
397
- rebuiltInformation[platformData.platformNameLowerCase] = {
398
- isEmulator: device.isEmulator,
399
- platform: platformData.platformNameLowerCase,
400
- packageFilePath: null,
401
- };
402
- }
403
- yield this.$deviceInstallAppService.installOnDevice(device, deviceDescriptor.buildData);
404
- yield platformLiveSyncService.syncAfterInstall(device, watchInfo);
405
- yield this.refreshApplication(projectData, {
406
- deviceAppData,
407
- modifiedFilesData: [],
408
- isFullSync: false,
409
- useHotModuleReload: liveSyncInfo.useHotModuleReload,
410
- }, data, deviceDescriptor);
411
- this.$logger.info(util.format(successfullySyncedMessageFormat, deviceAppData.appIdentifier, device.deviceInfo.identifier));
399
+ }, data, deviceDescriptor);
400
+ this.$logger.info(util.format(successfullySyncedMessageFormat, deviceAppData.appIdentifier, device.deviceInfo.identifier));
401
+ }
402
+ else {
403
+ const isInHMRMode = liveSyncInfo.useHotModuleReload &&
404
+ data.hmrData &&
405
+ data.hmrData.hash;
406
+ if (isInHMRMode) {
407
+ this.$hmrStatusService.watchHmrStatus(device.deviceInfo.identifier, data.hmrData.hash);
412
408
  }
413
- else {
414
- const isInHMRMode = liveSyncInfo.useHotModuleReload &&
415
- data.hmrData &&
416
- data.hmrData.hash;
417
- if (isInHMRMode) {
418
- this.$hmrStatusService.watchHmrStatus(device.deviceInfo.identifier, data.hmrData.hash);
419
- }
420
- const watchAction = () => __awaiter(this, void 0, void 0, function* () {
421
- const liveSyncResultInfo = yield platformLiveSyncService.liveSyncWatchAction(device, watchInfo);
422
- const fullSyncAction = () => __awaiter(this, void 0, void 0, function* () {
423
- watchInfo.filesToSync = allAppFiles;
424
- const fullLiveSyncResultInfo = yield platformLiveSyncService.liveSyncWatchAction(device, watchInfo);
425
- _.assign(liveSyncResultInfo, fullLiveSyncResultInfo);
426
- });
427
- yield this.$hooksService.executeBeforeHooks("watchAction", {
428
- hookArgs: {
429
- liveSyncResultInfo,
430
- filesToSync,
431
- allAppFiles,
432
- isInHMRMode,
433
- filesChangedEvent: data,
434
- },
435
- });
436
- yield this.refreshApplication(projectData, liveSyncResultInfo, data, deviceDescriptor, fullSyncAction);
437
- if (!liveSyncResultInfo.didRecover && isInHMRMode) {
438
- const status = yield this.$hmrStatusService.getHmrStatus(device.deviceInfo.identifier, data.hmrData.hash);
439
- if (status === constants_1.HmrConstants.HMR_ERROR_STATUS) {
440
- yield fullSyncAction();
441
- liveSyncResultInfo.isFullSync = true;
442
- yield this.refreshApplication(projectData, liveSyncResultInfo, data, deviceDescriptor);
443
- }
444
- }
445
- yield this.$hooksService.executeAfterHooks("watchAction", {
409
+ const watchAction = async () => {
410
+ const liveSyncResultInfo = await platformLiveSyncService.liveSyncWatchAction(device, watchInfo);
411
+ const fullSyncAction = async () => {
412
+ watchInfo.filesToSync = allAppFiles;
413
+ const fullLiveSyncResultInfo = await platformLiveSyncService.liveSyncWatchAction(device, watchInfo);
414
+ _.assign(liveSyncResultInfo, fullLiveSyncResultInfo);
415
+ };
416
+ await this.$hooksService.executeBeforeHooks("watchAction", {
417
+ hookArgs: {
446
418
  liveSyncResultInfo,
447
419
  filesToSync,
448
420
  allAppFiles,
449
- filesChangedEvent: data,
450
421
  isInHMRMode,
451
- });
452
- this.$logger.info(util.format(successfullySyncedMessageFormat, deviceAppData.appIdentifier, device.deviceInfo.identifier));
422
+ filesChangedEvent: data,
423
+ },
453
424
  });
454
- if (liveSyncInfo.useHotModuleReload) {
455
- try {
456
- this.$logger.trace("Try executing watch action without any preparation of files.");
457
- yield watchAction();
458
- this.$logger.trace("Successfully executed watch action without any preparation of files.");
459
- return;
460
- }
461
- catch (err) {
462
- this.$logger.trace(`Error while trying to execute fast sync. Now we'll check the state of the app and we'll try to resurrect from the error. The error is: ${err}`);
425
+ await this.refreshApplication(projectData, liveSyncResultInfo, data, deviceDescriptor, fullSyncAction);
426
+ if (!liveSyncResultInfo.didRecover && isInHMRMode) {
427
+ const status = await this.$hmrStatusService.getHmrStatus(device.deviceInfo.identifier, data.hmrData.hash);
428
+ if (status === constants_1.HmrConstants.HMR_ERROR_STATUS) {
429
+ await fullSyncAction();
430
+ liveSyncResultInfo.isFullSync = true;
431
+ await this.refreshApplication(projectData, liveSyncResultInfo, data, deviceDescriptor);
463
432
  }
464
433
  }
465
- yield this.$deviceInstallAppService.installOnDeviceIfNeeded(device, deviceDescriptor.buildData);
466
- watchInfo.connectTimeout = null;
467
- yield watchAction();
434
+ await this.$hooksService.executeAfterHooks("watchAction", {
435
+ liveSyncResultInfo,
436
+ filesToSync,
437
+ allAppFiles,
438
+ filesChangedEvent: data,
439
+ isInHMRMode,
440
+ });
441
+ this.$logger.info(util.format(successfullySyncedMessageFormat, deviceAppData.appIdentifier, device.deviceInfo.identifier));
442
+ };
443
+ if (liveSyncInfo.useHotModuleReload) {
444
+ try {
445
+ this.$logger.trace("Try executing watch action without any preparation of files.");
446
+ await watchAction();
447
+ this.$logger.trace("Successfully executed watch action without any preparation of files.");
448
+ return;
449
+ }
450
+ catch (err) {
451
+ this.$logger.trace(`Error while trying to execute fast sync. Now we'll check the state of the app and we'll try to resurrect from the error. The error is: ${err}`);
452
+ }
468
453
  }
454
+ await this.$deviceInstallAppService.installOnDeviceIfNeeded(device, deviceDescriptor.buildData);
455
+ watchInfo.connectTimeout = null;
456
+ await watchAction();
469
457
  }
470
- catch (err) {
471
- this.$logger.warn(`Unable to apply changes for device: ${device.deviceInfo.identifier}. Error is: ${err && err.message}.`);
472
- this.emitCore(constants_2.RunOnDeviceEvents.runOnDeviceError, {
473
- projectDir: projectData.projectDir,
474
- deviceIdentifier: device.deviceInfo.identifier,
475
- applicationIdentifier: projectData.projectIdentifiers[device.deviceInfo.platform.toLowerCase()],
476
- error: err,
477
- });
478
- yield this.stop({
479
- projectDir: projectData.projectDir,
480
- deviceIdentifiers: [device.deviceInfo.identifier],
481
- stopOptions: { shouldAwaitAllActions: false },
482
- });
458
+ }
459
+ catch (err) {
460
+ this.$logger.warn(`Unable to apply changes for device: ${device.deviceInfo.identifier}. Error is: ${err && err.message}.`);
461
+ this.emitCore(constants_2.RunOnDeviceEvents.runOnDeviceError, {
462
+ projectDir: projectData.projectDir,
463
+ deviceIdentifier: device.deviceInfo.identifier,
464
+ applicationIdentifier: projectData.projectIdentifiers[device.deviceInfo.platform.toLowerCase()],
465
+ error: err,
466
+ });
467
+ await this.stop({
468
+ projectDir: projectData.projectDir,
469
+ deviceIdentifiers: [device.deviceInfo.identifier],
470
+ stopOptions: { shouldAwaitAllActions: false },
471
+ });
472
+ }
473
+ };
474
+ await this.addActionToChain(projectData.projectDir, () => this.$devicesService.execute(deviceAction, (device) => {
475
+ const liveSyncProcessInfo = this.$liveSyncProcessDataService.getPersistedData(projectData.projectDir);
476
+ return (data.platform.toLowerCase() ===
477
+ device.deviceInfo.platform.toLowerCase() &&
478
+ liveSyncProcessInfo &&
479
+ _.some(liveSyncProcessInfo.deviceDescriptors, (deviceDescriptor) => deviceDescriptor.identifier === device.deviceInfo.identifier));
480
+ }));
481
+ }
482
+ async addActionToChain(projectDir, action) {
483
+ const liveSyncInfo = this.$liveSyncProcessDataService.getPersistedData(projectDir);
484
+ if (liveSyncInfo) {
485
+ liveSyncInfo.actionsChain = liveSyncInfo.actionsChain.then(async () => {
486
+ if (!liveSyncInfo.isStopped) {
487
+ liveSyncInfo.currentSyncAction = action();
488
+ const res = await liveSyncInfo.currentSyncAction;
489
+ return res;
483
490
  }
484
491
  });
485
- yield this.addActionToChain(projectData.projectDir, () => this.$devicesService.execute(deviceAction, (device) => {
486
- const liveSyncProcessInfo = this.$liveSyncProcessDataService.getPersistedData(projectData.projectDir);
487
- return (data.platform.toLowerCase() ===
488
- device.deviceInfo.platform.toLowerCase() &&
489
- liveSyncProcessInfo &&
490
- _.some(liveSyncProcessInfo.deviceDescriptors, (deviceDescriptor) => deviceDescriptor.identifier === device.deviceInfo.identifier));
491
- }));
492
- });
493
- }
494
- addActionToChain(projectDir, action) {
495
- return __awaiter(this, void 0, void 0, function* () {
496
- const liveSyncInfo = this.$liveSyncProcessDataService.getPersistedData(projectDir);
497
- if (liveSyncInfo) {
498
- liveSyncInfo.actionsChain = liveSyncInfo.actionsChain.then(() => __awaiter(this, void 0, void 0, function* () {
499
- if (!liveSyncInfo.isStopped) {
500
- liveSyncInfo.currentSyncAction = action();
501
- const res = yield liveSyncInfo.currentSyncAction;
502
- return res;
503
- }
504
- }));
505
- const result = yield liveSyncInfo.actionsChain;
506
- return result;
507
- }
508
- });
492
+ const result = await liveSyncInfo.actionsChain;
493
+ return result;
494
+ }
509
495
  }
510
496
  emitCore(event, data) {
511
497
  this.$logger.trace(`Will emit event ${event} with data`, data);
512
498
  this.emit(event, data);
513
499
  }
514
500
  }
501
+ exports.RunController = RunController;
515
502
  __decorate([
516
503
  (0, decorators_1.performanceLog)()
517
504
  ], RunController.prototype, "refreshApplicationWithoutDebug", null);
@@ -521,5 +508,4 @@ __decorate([
521
508
  __decorate([
522
509
  (0, helpers_1.hook)("syncChangedDataOnDevices")
523
510
  ], RunController.prototype, "syncChangedDataOnDevices", null);
524
- exports.RunController = RunController;
525
511
  yok_1.injector.register("runController", RunController);