nativescript 8.9.0-dev.1 → 8.9.0-dev.2

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