@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
@@ -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);