nativescript 8.9.0-dev.0 → 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 (405) 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/ios.d.ts +4 -2
  190. package/lib/definitions/project.d.ts +26 -0
  191. package/lib/detached-processes/cleanup-js-subprocess.js +20 -5
  192. package/lib/detached-processes/cleanup-process.js +43 -30
  193. package/lib/detached-processes/file-log-service.js +2 -1
  194. package/lib/device-path-provider.js +35 -23
  195. package/lib/device-sockets/ios/app-debug-socket-proxy-factory.js +171 -149
  196. package/lib/device-sockets/ios/notification.js +4 -1
  197. package/lib/device-sockets/ios/socket-request-executor.js +42 -24
  198. package/lib/helpers/android-bundle-validator-helper.js +3 -2
  199. package/lib/helpers/deploy-command-helper.js +50 -44
  200. package/lib/helpers/key-command-helper.js +17 -6
  201. package/lib/helpers/livesync-command-helper.js +155 -137
  202. package/lib/helpers/network-connectivity-validator.js +18 -6
  203. package/lib/helpers/options-track-helper.js +19 -7
  204. package/lib/helpers/package-path-helper.js +1 -0
  205. package/lib/helpers/platform-command-helper.js +127 -101
  206. package/lib/helpers/version-validator-helper.js +1 -0
  207. package/lib/key-commands/bootstrap.js +3 -2
  208. package/lib/key-commands/index.js +205 -154
  209. package/lib/nativescript-cli-lib-bootstrap.js +4 -0
  210. package/lib/nativescript-cli-lib.js +1 -0
  211. package/lib/nativescript-cli.js +24 -6
  212. package/lib/node/pbxproj-dom-xcode.js +1 -0
  213. package/lib/node/xcode.js +1 -0
  214. package/lib/node-package-manager.js +114 -81
  215. package/lib/options.js +156 -122
  216. package/lib/package-installation-manager.js +172 -130
  217. package/lib/package-manager.js +88 -63
  218. package/lib/platform-command-param.js +16 -4
  219. package/lib/pnpm-package-manager.js +81 -59
  220. package/lib/project-data.js +13 -1
  221. package/lib/providers/project-files-provider.js +2 -1
  222. package/lib/resolvers/livesync-service-resolver.js +1 -0
  223. package/lib/services/analytics/analytics-broker-process.js +32 -19
  224. package/lib/services/analytics/analytics-broker.js +31 -17
  225. package/lib/services/analytics/analytics-service.js +210 -170
  226. package/lib/services/analytics/google-analytics-provider.js +59 -43
  227. package/lib/services/analytics-settings-service.js +37 -15
  228. package/lib/services/android/android-bundle-tool-service.js +61 -43
  229. package/lib/services/android/gradle-build-args-service.js +23 -9
  230. package/lib/services/android/gradle-build-service.js +36 -22
  231. package/lib/services/android/gradle-command-service.js +36 -22
  232. package/lib/services/android-device-debug-service.js +123 -90
  233. package/lib/services/android-plugin-build-service.js +260 -205
  234. package/lib/services/android-project-service.js +241 -129
  235. package/lib/services/android-resources-migration-service.js +71 -51
  236. package/lib/services/apple-portal/apple-portal-application-service.js +64 -46
  237. package/lib/services/apple-portal/apple-portal-cookie-service.js +1 -0
  238. package/lib/services/apple-portal/apple-portal-session-service.js +218 -197
  239. package/lib/services/apple-portal/srp/srp-wrapper.js +61 -43
  240. package/lib/services/assets-generation/assets-generation-service.js +128 -103
  241. package/lib/services/build-artifacts-service.js +22 -10
  242. package/lib/services/build-data-service.js +1 -0
  243. package/lib/services/build-info-file-service.js +36 -20
  244. package/lib/services/cleanup-service.js +81 -48
  245. package/lib/services/cocoapods-platform-manager.js +9 -0
  246. package/lib/services/cocoapods-service.js +153 -112
  247. package/lib/services/debug-data-service.js +1 -0
  248. package/lib/services/debug-service-base.js +7 -0
  249. package/lib/services/device/device-install-app-service.js +72 -54
  250. package/lib/services/doctor-service.js +135 -101
  251. package/lib/services/extensibility-service.js +108 -81
  252. package/lib/services/files-hash-service.js +44 -26
  253. package/lib/services/hmr-status-service.js +3 -1
  254. package/lib/services/info-service.js +1 -0
  255. package/lib/services/initialize-service.js +54 -37
  256. package/lib/services/ios/export-options-plist-service.js +55 -38
  257. package/lib/services/ios/ios-signing-service.js +191 -168
  258. package/lib/services/ios/spm-service.js +73 -43
  259. package/lib/services/ios/xcodebuild-args-service.js +103 -77
  260. package/lib/services/ios/xcodebuild-command-service.js +26 -14
  261. package/lib/services/ios/xcodebuild-service.js +72 -52
  262. package/lib/services/ios-debugger-port-service.js +38 -24
  263. package/lib/services/ios-device-debug-service.js +103 -75
  264. package/lib/services/ios-entitlements-service.js +43 -31
  265. package/lib/services/ios-extensions-service.js +30 -18
  266. package/lib/services/ios-log-filter.js +20 -0
  267. package/lib/services/ios-native-target-service.js +6 -4
  268. package/lib/services/ios-project-service.js +605 -437
  269. package/lib/services/ios-provision-service.js +132 -108
  270. package/lib/services/ios-watch-app-service.js +33 -21
  271. package/lib/services/ip-service.js +55 -38
  272. package/lib/services/itmstransporter-service.js +153 -129
  273. package/lib/services/karma-execution.js +2 -0
  274. package/lib/services/livesync/android-device-livesync-service-base.js +49 -31
  275. package/lib/services/livesync/android-device-livesync-service.js +151 -120
  276. package/lib/services/livesync/android-device-livesync-sockets-service.js +155 -121
  277. package/lib/services/livesync/android-livesync-service.js +36 -14
  278. package/lib/services/livesync/android-livesync-tool.js +117 -90
  279. package/lib/services/livesync/device-livesync-service-base.js +30 -15
  280. package/lib/services/livesync/ios-device-livesync-service.js +150 -114
  281. package/lib/services/livesync/ios-livesync-service.js +60 -42
  282. package/lib/services/livesync/livesync-socket.js +1 -0
  283. package/lib/services/livesync/platform-livesync-service-base.js +124 -94
  284. package/lib/services/livesync-process-data-service.js +1 -0
  285. package/lib/services/log-parser-service.js +2 -1
  286. package/lib/services/log-source-map-service.js +56 -30
  287. package/lib/services/marking-mode-service.js +33 -17
  288. package/lib/services/metadata-filtering-service.js +1 -0
  289. package/lib/services/npm-config-service.js +5 -1
  290. package/lib/services/pacote-service.js +73 -51
  291. package/lib/services/performance-service.js +4 -2
  292. package/lib/services/platform/add-platform-service.js +119 -51
  293. package/lib/services/platform/platform-validation-service.js +34 -22
  294. package/lib/services/platform/prepare-native-platform-service.js +65 -49
  295. package/lib/services/platform-environment-requirements.js +43 -27
  296. package/lib/services/platform-project-service-base.js +1 -0
  297. package/lib/services/platforms-data-service.js +1 -0
  298. package/lib/services/plugins-service.js +168 -125
  299. package/lib/services/prepare-data-service.js +1 -0
  300. package/lib/services/project-backup-service.js +5 -1
  301. package/lib/services/project-changes-service.js +152 -124
  302. package/lib/services/project-cleanup-service.js +79 -64
  303. package/lib/services/project-config-service.js +111 -73
  304. package/lib/services/project-data-service.js +154 -108
  305. package/lib/services/project-name-service.js +44 -28
  306. package/lib/services/project-service.js +113 -84
  307. package/lib/services/project-templates-service.js +68 -52
  308. package/lib/services/qr-code-terminal-service.js +1 -0
  309. package/lib/services/require-service.js +1 -0
  310. package/lib/services/start-service.js +60 -41
  311. package/lib/services/temp-service.js +22 -8
  312. package/lib/services/terminal-spinner-service.js +28 -15
  313. package/lib/services/test-execution-service.js +79 -59
  314. package/lib/services/test-initialization-service.js +6 -2
  315. package/lib/services/timeline-profiler-service.js +2 -1
  316. package/lib/services/user-settings-service.js +1 -0
  317. package/lib/services/versions-service.js +140 -119
  318. package/lib/services/watch-ignore-list-service.js +1 -0
  319. package/lib/services/webpack/webpack-compiler-service.js +279 -215
  320. package/lib/services/xcconfig-service.js +21 -8
  321. package/lib/services/xcproj-service.js +1 -0
  322. package/lib/shared-event-bus.js +6 -0
  323. package/lib/sys-info.js +63 -45
  324. package/lib/tools/config-manipulation/config-transformer.js +21 -0
  325. package/lib/tools/node-modules/node-modules-builder.js +28 -16
  326. package/lib/tools/node-modules/node-modules-dependencies-builder.js +6 -0
  327. package/lib/yarn-package-manager.js +79 -59
  328. package/lib/yarn2-package-manager.js +82 -60
  329. package/node_modules/@npmcli/move-file/LICENSE.md +22 -0
  330. package/node_modules/@npmcli/move-file/README.md +69 -0
  331. package/node_modules/@npmcli/move-file/lib/index.js +185 -0
  332. package/node_modules/@npmcli/move-file/node_modules/mkdirp/LICENSE +21 -0
  333. package/node_modules/@npmcli/move-file/node_modules/mkdirp/bin/cmd.js +68 -0
  334. package/node_modules/@npmcli/move-file/node_modules/mkdirp/index.js +31 -0
  335. package/node_modules/@npmcli/move-file/node_modules/mkdirp/lib/find-made.js +29 -0
  336. package/node_modules/@npmcli/move-file/node_modules/mkdirp/lib/mkdirp-manual.js +64 -0
  337. package/node_modules/@npmcli/move-file/node_modules/mkdirp/lib/mkdirp-native.js +39 -0
  338. package/node_modules/@npmcli/move-file/node_modules/mkdirp/lib/opts-arg.js +23 -0
  339. package/node_modules/@npmcli/move-file/node_modules/mkdirp/lib/path-arg.js +29 -0
  340. package/node_modules/@npmcli/move-file/node_modules/mkdirp/lib/use-native.js +10 -0
  341. package/node_modules/@npmcli/move-file/node_modules/mkdirp/package.json +44 -0
  342. package/node_modules/@npmcli/move-file/node_modules/mkdirp/readme.markdown +266 -0
  343. package/node_modules/@npmcli/move-file/package.json +47 -0
  344. package/node_modules/balanced-match/.github/FUNDING.yml +2 -0
  345. package/node_modules/balanced-match/LICENSE.md +21 -0
  346. package/node_modules/balanced-match/README.md +97 -0
  347. package/node_modules/balanced-match/index.js +62 -0
  348. package/node_modules/balanced-match/package.json +48 -0
  349. package/node_modules/concat-map/.travis.yml +4 -0
  350. package/node_modules/concat-map/LICENSE +18 -0
  351. package/node_modules/concat-map/README.markdown +62 -0
  352. package/node_modules/concat-map/example/map.js +6 -0
  353. package/node_modules/concat-map/index.js +13 -0
  354. package/node_modules/concat-map/package.json +43 -0
  355. package/node_modules/concat-map/test/map.js +39 -0
  356. package/node_modules/fs.realpath/LICENSE +43 -0
  357. package/node_modules/fs.realpath/README.md +33 -0
  358. package/node_modules/fs.realpath/index.js +66 -0
  359. package/node_modules/fs.realpath/old.js +303 -0
  360. package/node_modules/fs.realpath/package.json +26 -0
  361. package/node_modules/inflight/LICENSE +15 -0
  362. package/node_modules/inflight/README.md +37 -0
  363. package/node_modules/inflight/inflight.js +54 -0
  364. package/node_modules/inflight/package.json +29 -0
  365. package/node_modules/inherits/LICENSE +16 -0
  366. package/node_modules/inherits/README.md +42 -0
  367. package/node_modules/inherits/inherits.js +9 -0
  368. package/node_modules/inherits/inherits_browser.js +27 -0
  369. package/node_modules/inherits/package.json +29 -0
  370. package/node_modules/once/LICENSE +15 -0
  371. package/node_modules/once/README.md +79 -0
  372. package/node_modules/once/once.js +42 -0
  373. package/node_modules/once/package.json +33 -0
  374. package/node_modules/path-is-absolute/index.js +20 -0
  375. package/node_modules/path-is-absolute/license +21 -0
  376. package/node_modules/path-is-absolute/package.json +43 -0
  377. package/node_modules/path-is-absolute/readme.md +59 -0
  378. package/node_modules/rimraf/LICENSE +15 -0
  379. package/node_modules/rimraf/README.md +101 -0
  380. package/node_modules/rimraf/bin.js +68 -0
  381. package/node_modules/rimraf/node_modules/brace-expansion/LICENSE +21 -0
  382. package/node_modules/rimraf/node_modules/brace-expansion/README.md +129 -0
  383. package/node_modules/rimraf/node_modules/brace-expansion/index.js +201 -0
  384. package/node_modules/rimraf/node_modules/brace-expansion/package.json +47 -0
  385. package/node_modules/rimraf/node_modules/glob/LICENSE +21 -0
  386. package/node_modules/rimraf/node_modules/glob/README.md +378 -0
  387. package/node_modules/rimraf/node_modules/glob/common.js +238 -0
  388. package/node_modules/rimraf/node_modules/glob/glob.js +790 -0
  389. package/node_modules/rimraf/node_modules/glob/package.json +55 -0
  390. package/node_modules/rimraf/node_modules/glob/sync.js +486 -0
  391. package/node_modules/rimraf/node_modules/minimatch/LICENSE +15 -0
  392. package/node_modules/rimraf/node_modules/minimatch/README.md +230 -0
  393. package/node_modules/rimraf/node_modules/minimatch/minimatch.js +947 -0
  394. package/node_modules/rimraf/node_modules/minimatch/package.json +33 -0
  395. package/node_modules/rimraf/package.json +32 -0
  396. package/node_modules/rimraf/rimraf.js +360 -0
  397. package/node_modules/stringify-package/LICENSE +13 -0
  398. package/node_modules/stringify-package/README.md +55 -0
  399. package/node_modules/stringify-package/index.js +18 -0
  400. package/node_modules/stringify-package/package.json +38 -0
  401. package/node_modules/wrappy/LICENSE +15 -0
  402. package/node_modules/wrappy/README.md +36 -0
  403. package/node_modules/wrappy/package.json +29 -0
  404. package/node_modules/wrappy/wrappy.js +33 -0
  405. 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.WebpackCompilerService = void 0;
10
19
  const path = require("path");
@@ -16,7 +25,8 @@ const constants_1 = require("../../constants");
16
25
  const yok_1 = require("../../common/yok");
17
26
  const package_path_helper_1 = require("../../helpers/package-path-helper");
18
27
  class WebpackCompilerService extends events_1.EventEmitter {
19
- constructor($options, $errors, $childProcess, $fs, $hooksService, $hostInfo, $logger, $mobileHelper, $cleanupService, $packageManager, $packageInstallationManager) {
28
+ constructor($options, $errors, $childProcess, $fs, $hooksService, $hostInfo, $logger, $mobileHelper, $cleanupService, $packageManager, $packageInstallationManager // private $sharedEventBus: ISharedEventBus
29
+ ) {
20
30
  super();
21
31
  this.$options = $options;
22
32
  this.$errors = $errors;
@@ -32,191 +42,215 @@ class WebpackCompilerService extends events_1.EventEmitter {
32
42
  this.webpackProcesses = {};
33
43
  this.expectedHashes = {};
34
44
  }
35
- async compileWithWatch(platformData, projectData, prepareData) {
36
- return new Promise(async (resolve, reject) => {
37
- if (this.webpackProcesses[platformData.platformNameLowerCase]) {
38
- resolve(void 0);
39
- return;
40
- }
41
- let isFirstWebpackWatchCompilation = true;
42
- prepareData.watch = true;
43
- try {
44
- const childProcess = await this.startWebpackProcess(platformData, projectData, prepareData);
45
- childProcess.stdout.on("data", function (data) {
46
- process.stdout.write(data);
47
- });
48
- childProcess.stderr.on("data", function (data) {
49
- process.stderr.write(data);
50
- });
51
- childProcess.on("message", (message) => {
52
- this.$logger.trace("Message from webpack", message);
53
- if (typeof message === "object" &&
54
- "version" in message &&
55
- "type" in message) {
56
- if (isFirstWebpackWatchCompilation) {
57
- isFirstWebpackWatchCompilation = false;
58
- resolve(childProcess);
59
- return;
60
- }
61
- return this.handleHMRMessage(message, platformData, projectData, prepareData);
62
- }
63
- if (message === "Webpack compilation complete.") {
64
- this.$logger.info("Webpack build done!");
65
- resolve(childProcess);
66
- }
67
- message = message;
68
- if (message.emittedFiles) {
69
- if (isFirstWebpackWatchCompilation) {
70
- isFirstWebpackWatchCompilation = false;
71
- this.expectedHashes[platformData.platformNameLowerCase] =
72
- prepareData.hmr ? message.hash : "";
73
- return;
45
+ compileWithWatch(platformData, projectData, prepareData) {
46
+ return __awaiter(this, void 0, void 0, function* () {
47
+ return new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () {
48
+ if (this.webpackProcesses[platformData.platformNameLowerCase]) {
49
+ resolve(void 0);
50
+ return;
51
+ }
52
+ let isFirstWebpackWatchCompilation = true;
53
+ prepareData.watch = true;
54
+ try {
55
+ const childProcess = yield this.startWebpackProcess(platformData, projectData, prepareData);
56
+ childProcess.stdout.on("data", function (data) {
57
+ process.stdout.write(data);
58
+ });
59
+ childProcess.stderr.on("data", function (data) {
60
+ process.stderr.write(data);
61
+ });
62
+ childProcess.on("message", (message) => {
63
+ this.$logger.trace("Message from webpack", message);
64
+ // if we are on webpack5 - we handle HMR in a slightly different way
65
+ if (typeof message === "object" &&
66
+ "version" in message &&
67
+ "type" in message) {
68
+ // first compilation can be ignored because it will be synced regardless
69
+ // handling it here would trigger 2 syncs
70
+ if (isFirstWebpackWatchCompilation) {
71
+ isFirstWebpackWatchCompilation = false;
72
+ resolve(childProcess);
73
+ return;
74
+ }
75
+ // if ((message as IWebpackMessage).type === "hmr-status") {
76
+ // // we pass message through our event-bus to be handled wherever needed
77
+ // // in this case webpack-hmr-status-service listens for this event
78
+ // this.$sharedEventBus.emit("webpack:hmr-status", message);
79
+ // return;
80
+ // }
81
+ return this.handleHMRMessage(message, platformData, projectData, prepareData);
74
82
  }
75
- const previousHash = this.expectedHashes[platformData.platformNameLowerCase];
76
- let result;
77
- if (prepareData.hmr) {
78
- result = this.getUpdatedEmittedFiles(message.emittedFiles, message.chunkFiles, message.hash, platformData.platformNameLowerCase);
83
+ if (message === "Webpack compilation complete.") {
84
+ this.$logger.info("Webpack build done!");
85
+ resolve(childProcess);
79
86
  }
80
- else {
81
- result = {
82
- emittedFiles: message.emittedFiles,
83
- fallbackFiles: [],
84
- hash: "",
87
+ message = message;
88
+ if (message.emittedFiles) {
89
+ if (isFirstWebpackWatchCompilation) {
90
+ isFirstWebpackWatchCompilation = false;
91
+ this.expectedHashes[platformData.platformNameLowerCase] =
92
+ prepareData.hmr ? message.hash : "";
93
+ return;
94
+ }
95
+ // Persist the previousHash value before calling `this.getUpdatedEmittedFiles` as it will modify the expectedHashes object with the current hash
96
+ const previousHash = this.expectedHashes[platformData.platformNameLowerCase];
97
+ let result;
98
+ if (prepareData.hmr) {
99
+ result = this.getUpdatedEmittedFiles(message.emittedFiles, message.chunkFiles, message.hash, platformData.platformNameLowerCase);
100
+ }
101
+ else {
102
+ result = {
103
+ emittedFiles: message.emittedFiles,
104
+ fallbackFiles: [],
105
+ hash: "",
106
+ };
107
+ }
108
+ const files = result.emittedFiles.map((file) => path.join(platformData.appDestinationDirectoryPath, this.$options.hostProjectModuleName, file));
109
+ const fallbackFiles = result.fallbackFiles.map((file) => path.join(platformData.appDestinationDirectoryPath, this.$options.hostProjectModuleName, file));
110
+ const data = {
111
+ files,
112
+ hasOnlyHotUpdateFiles: files.every((f) => f.indexOf("hot-update") > -1),
113
+ hmrData: {
114
+ hash: result.hash,
115
+ fallbackFiles,
116
+ },
117
+ platform: platformData.platformNameLowerCase,
85
118
  };
119
+ this.$logger.trace("Generated data from webpack message:", data);
120
+ // the hash of the compilation is the same as the previous one and there are only hot updates produced
121
+ if (data.hasOnlyHotUpdateFiles && previousHash === message.hash) {
122
+ return;
123
+ }
124
+ if (data.files.length) {
125
+ this.emit(constants_1.WEBPACK_COMPILATION_COMPLETE, data);
126
+ }
86
127
  }
87
- const files = result.emittedFiles.map((file) => path.join(platformData.appDestinationDirectoryPath, this.$options.hostProjectModuleName, file));
88
- const fallbackFiles = result.fallbackFiles.map((file) => path.join(platformData.appDestinationDirectoryPath, this.$options.hostProjectModuleName, file));
89
- const data = {
90
- files,
91
- hasOnlyHotUpdateFiles: files.every((f) => f.indexOf("hot-update") > -1),
92
- hmrData: {
93
- hash: result.hash,
94
- fallbackFiles,
95
- },
96
- platform: platformData.platformNameLowerCase,
97
- };
98
- this.$logger.trace("Generated data from webpack message:", data);
99
- if (data.hasOnlyHotUpdateFiles && previousHash === message.hash) {
100
- return;
128
+ });
129
+ childProcess.on("error", (err) => {
130
+ this.$logger.trace(`Unable to start webpack process in watch mode. Error is: ${err}`);
131
+ delete this.webpackProcesses[platformData.platformNameLowerCase];
132
+ reject(err);
133
+ });
134
+ childProcess.on("close", (arg) => __awaiter(this, void 0, void 0, function* () {
135
+ yield this.$cleanupService.removeKillProcess(childProcess.pid.toString());
136
+ const exitCode = typeof arg === "number" ? arg : arg && arg.code;
137
+ this.$logger.trace(`Webpack process exited with code ${exitCode} when we expected it to be long living with watch.`);
138
+ const error = new Error(`Executing webpack failed with exit code ${exitCode}.`);
139
+ error.code = exitCode;
140
+ delete this.webpackProcesses[platformData.platformNameLowerCase];
141
+ reject(error);
142
+ }));
143
+ }
144
+ catch (err) {
145
+ reject(err);
146
+ }
147
+ }));
148
+ });
149
+ }
150
+ compileWithoutWatch(platformData, projectData, prepareData) {
151
+ return __awaiter(this, void 0, void 0, function* () {
152
+ return new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () {
153
+ if (this.webpackProcesses[platformData.platformNameLowerCase]) {
154
+ resolve();
155
+ return;
156
+ }
157
+ try {
158
+ const childProcess = yield this.startWebpackProcess(platformData, projectData, prepareData);
159
+ childProcess.on("error", (err) => {
160
+ this.$logger.trace(`Unable to start webpack process in non-watch mode. Error is: ${err}`);
161
+ delete this.webpackProcesses[platformData.platformNameLowerCase];
162
+ reject(err);
163
+ });
164
+ childProcess.on("close", (arg) => __awaiter(this, void 0, void 0, function* () {
165
+ yield this.$cleanupService.removeKillProcess(childProcess.pid.toString());
166
+ delete this.webpackProcesses[platformData.platformNameLowerCase];
167
+ const exitCode = typeof arg === "number" ? arg : arg && arg.code;
168
+ if (exitCode === 0) {
169
+ resolve();
101
170
  }
102
- if (data.files.length) {
103
- this.emit(constants_1.WEBPACK_COMPILATION_COMPLETE, data);
171
+ else {
172
+ const error = new Error(`Executing webpack failed with exit code ${exitCode}.`);
173
+ error.code = exitCode;
174
+ reject(error);
104
175
  }
105
- }
106
- });
107
- childProcess.on("error", (err) => {
108
- this.$logger.trace(`Unable to start webpack process in watch mode. Error is: ${err}`);
109
- delete this.webpackProcesses[platformData.platformNameLowerCase];
176
+ }));
177
+ }
178
+ catch (err) {
110
179
  reject(err);
111
- });
112
- childProcess.on("close", async (arg) => {
113
- await this.$cleanupService.removeKillProcess(childProcess.pid.toString());
114
- const exitCode = typeof arg === "number" ? arg : arg && arg.code;
115
- this.$logger.trace(`Webpack process exited with code ${exitCode} when we expected it to be long living with watch.`);
116
- const error = new Error(`Executing webpack failed with exit code ${exitCode}.`);
117
- error.code = exitCode;
118
- delete this.webpackProcesses[platformData.platformNameLowerCase];
119
- reject(error);
120
- });
180
+ }
181
+ }));
182
+ });
183
+ }
184
+ stopWebpackCompiler(platform) {
185
+ return __awaiter(this, void 0, void 0, function* () {
186
+ if (platform) {
187
+ yield this.stopWebpackForPlatform(platform);
121
188
  }
122
- catch (err) {
123
- reject(err);
189
+ else {
190
+ const webpackedPlatforms = Object.keys(this.webpackProcesses);
191
+ for (let i = 0; i < webpackedPlatforms.length; i++) {
192
+ yield this.stopWebpackForPlatform(webpackedPlatforms[i]);
193
+ }
124
194
  }
125
195
  });
126
196
  }
127
- async compileWithoutWatch(platformData, projectData, prepareData) {
128
- return new Promise(async (resolve, reject) => {
129
- if (this.webpackProcesses[platformData.platformNameLowerCase]) {
130
- resolve();
131
- return;
197
+ shouldUsePreserveSymlinksOption() {
198
+ return __awaiter(this, void 0, void 0, function* () {
199
+ // pnpm does not require symlink (https://github.com/nodejs/node-eps/issues/46#issuecomment-277373566)
200
+ // and it also does not work in some cases.
201
+ // Check https://github.com/NativeScript/nativescript-cli/issues/5259 for more information
202
+ const currentPackageManager = yield this.$packageManager.getPackageManagerName();
203
+ const res = currentPackageManager !== constants_1.PackageManagers.pnpm;
204
+ return res;
205
+ });
206
+ }
207
+ startWebpackProcess(platformData, projectData, prepareData) {
208
+ return __awaiter(this, void 0, void 0, function* () {
209
+ if (!this.$fs.exists(projectData.webpackConfigPath)) {
210
+ this.$errors.fail(`The webpack configuration file ${projectData.webpackConfigPath} does not exist. Ensure the file exists, or update the path in ${constants_1.CONFIG_FILE_NAME_DISPLAY}.`);
132
211
  }
133
- try {
134
- const childProcess = await this.startWebpackProcess(platformData, projectData, prepareData);
135
- childProcess.on("error", (err) => {
136
- this.$logger.trace(`Unable to start webpack process in non-watch mode. Error is: ${err}`);
137
- delete this.webpackProcesses[platformData.platformNameLowerCase];
138
- reject(err);
139
- });
140
- childProcess.on("close", async (arg) => {
141
- await this.$cleanupService.removeKillProcess(childProcess.pid.toString());
142
- delete this.webpackProcesses[platformData.platformNameLowerCase];
143
- const exitCode = typeof arg === "number" ? arg : arg && arg.code;
144
- if (exitCode === 0) {
145
- resolve();
146
- }
147
- else {
148
- const error = new Error(`Executing webpack failed with exit code ${exitCode}.`);
149
- error.code = exitCode;
150
- reject(error);
151
- }
152
- });
212
+ const envData = this.buildEnvData(platformData.platformNameLowerCase, projectData, prepareData);
213
+ const envParams = yield this.buildEnvCommandLineParams(envData, platformData, projectData, prepareData);
214
+ const additionalNodeArgs = semver.major(process.version) <= 8 ? ["--harmony"] : [];
215
+ if (yield this.shouldUsePreserveSymlinksOption()) {
216
+ additionalNodeArgs.push("--preserve-symlinks");
153
217
  }
154
- catch (err) {
155
- reject(err);
218
+ if (process.arch === "x64") {
219
+ additionalNodeArgs.unshift("--max_old_space_size=4096");
156
220
  }
157
- });
158
- }
159
- async stopWebpackCompiler(platform) {
160
- if (platform) {
161
- await this.stopWebpackForPlatform(platform);
162
- }
163
- else {
164
- const webpackedPlatforms = Object.keys(this.webpackProcesses);
165
- for (let i = 0; i < webpackedPlatforms.length; i++) {
166
- await this.stopWebpackForPlatform(webpackedPlatforms[i]);
221
+ const args = [
222
+ ...additionalNodeArgs,
223
+ this.getWebpackExecutablePath(projectData),
224
+ this.isWebpack5(projectData) ? `build` : null,
225
+ `--config=${projectData.webpackConfigPath}`,
226
+ ...envParams,
227
+ ].filter(Boolean);
228
+ if (prepareData.watch) {
229
+ args.push("--watch");
167
230
  }
168
- }
169
- }
170
- async shouldUsePreserveSymlinksOption() {
171
- const currentPackageManager = await this.$packageManager.getPackageManagerName();
172
- const res = currentPackageManager !== constants_1.PackageManagers.pnpm;
173
- return res;
174
- }
175
- async startWebpackProcess(platformData, projectData, prepareData) {
176
- if (!this.$fs.exists(projectData.webpackConfigPath)) {
177
- this.$errors.fail(`The webpack configuration file ${projectData.webpackConfigPath} does not exist. Ensure the file exists, or update the path in ${constants_1.CONFIG_FILE_NAME_DISPLAY}.`);
178
- }
179
- const envData = this.buildEnvData(platformData.platformNameLowerCase, projectData, prepareData);
180
- const envParams = await this.buildEnvCommandLineParams(envData, platformData, projectData, prepareData);
181
- const additionalNodeArgs = semver.major(process.version) <= 8 ? ["--harmony"] : [];
182
- if (await this.shouldUsePreserveSymlinksOption()) {
183
- additionalNodeArgs.push("--preserve-symlinks");
184
- }
185
- if (process.arch === "x64") {
186
- additionalNodeArgs.unshift("--max_old_space_size=4096");
187
- }
188
- const args = [
189
- ...additionalNodeArgs,
190
- this.getWebpackExecutablePath(projectData),
191
- this.isWebpack5(projectData) ? `build` : null,
192
- `--config=${projectData.webpackConfigPath}`,
193
- ...envParams,
194
- ].filter(Boolean);
195
- if (prepareData.watch) {
196
- args.push("--watch");
197
- }
198
- const stdio = prepareData.watch ? ["ipc"] : "inherit";
199
- const options = {
200
- cwd: projectData.projectDir,
201
- stdio,
202
- };
203
- options.env = {
204
- NATIVESCRIPT_WEBPACK_ENV: JSON.stringify(envData),
205
- };
206
- if (this.$hostInfo.isWindows) {
207
- Object.assign(options.env, { APPDATA: process.env.appData });
208
- }
209
- if (this.$options.hostProjectPath) {
210
- Object.assign(options.env, {
211
- USER_PROJECT_PLATFORMS_ANDROID: this.$options.hostProjectPath,
212
- USER_PROJECT_PLATFORMS_ANDROID_MODULE: this.$options.hostProjectModuleName,
213
- USER_PROJECT_PLATFORMS_IOS: this.$options.hostProjectPath,
214
- });
215
- }
216
- const childProcess = this.$childProcess.spawn(process.execPath, args, options);
217
- this.webpackProcesses[platformData.platformNameLowerCase] = childProcess;
218
- await this.$cleanupService.addKillProcess(childProcess.pid.toString());
219
- return childProcess;
231
+ const stdio = prepareData.watch ? ["ipc"] : "inherit";
232
+ const options = {
233
+ cwd: projectData.projectDir,
234
+ stdio,
235
+ };
236
+ options.env = {
237
+ NATIVESCRIPT_WEBPACK_ENV: JSON.stringify(envData),
238
+ };
239
+ if (this.$hostInfo.isWindows) {
240
+ Object.assign(options.env, { APPDATA: process.env.appData });
241
+ }
242
+ if (this.$options.hostProjectPath) {
243
+ Object.assign(options.env, {
244
+ USER_PROJECT_PLATFORMS_ANDROID: this.$options.hostProjectPath,
245
+ USER_PROJECT_PLATFORMS_ANDROID_MODULE: this.$options.hostProjectModuleName,
246
+ USER_PROJECT_PLATFORMS_IOS: this.$options.hostProjectPath,
247
+ });
248
+ }
249
+ const childProcess = this.$childProcess.spawn(process.execPath, args, options);
250
+ this.webpackProcesses[platformData.platformNameLowerCase] = childProcess;
251
+ yield this.$cleanupService.addKillProcess(childProcess.pid.toString());
252
+ return childProcess;
253
+ });
220
254
  }
221
255
  buildEnvData(platform, projectData, prepareData) {
222
256
  var _a, _b, _c;
@@ -230,16 +264,28 @@ class WebpackCompilerService extends events_1.EventEmitter {
230
264
  });
231
265
  envData.verbose = envData.verbose || this.$logger.isVerbose();
232
266
  envData.production = envData.production || prepareData.release;
267
+ // add the config file name to the env data so the webpack process can read the
268
+ // correct config file when resolving the CLI lib and the config service
269
+ // we are explicitly setting it to false to force using the defaults
233
270
  envData.config =
234
271
  (_b = (_a = process.env.NATIVESCRIPT_CONFIG_NAME) !== null && _a !== void 0 ? _a : this.$options.config) !== null && _b !== void 0 ? _b : "false";
272
+ // explicitly set the env variable
235
273
  process.env.NATIVESCRIPT_CONFIG_NAME = envData.config;
274
+ // The snapshot generation is wrongly located in the Webpack plugin.
275
+ // It should be moved in the Native Prepare of the CLI or a Gradle task in the Runtime.
276
+ // As a workaround, we skip the mksnapshot, xxd and android-ndk calls based on skipNativePrepare.
277
+ // In this way the plugin will prepare only the snapshot JS entry without any native prepare and
278
+ // we will able to execute cloud builds with snapshot without having any local snapshot or Docker setup.
279
+ // TODO: Remove this flag when we remove the native part from the plugin.
236
280
  envData.skipSnapshotTools =
237
281
  prepareData.nativePrepare && prepareData.nativePrepare.skipNativePrepare;
282
+ // only set sourceMap if not explicitly set through a flag
238
283
  if (typeof ((_c = prepareData === null || prepareData === void 0 ? void 0 : prepareData.env) === null || _c === void 0 ? void 0 : _c.sourceMap) === "undefined") {
239
284
  if (!prepareData.release) {
240
285
  envData.sourceMap = true;
241
286
  }
242
287
  }
288
+ // convert string to boolean
243
289
  if (envData.sourceMap === "true" || envData.sourceMap === "false") {
244
290
  envData.sourceMap = envData.sourceMap === "true";
245
291
  }
@@ -248,49 +294,60 @@ class WebpackCompilerService extends events_1.EventEmitter {
248
294
  }
249
295
  return envData;
250
296
  }
251
- async buildEnvCommandLineParams(envData, platformData, projectData, prepareData) {
252
- const envFlagNames = Object.keys(envData);
253
- const canSnapshot = prepareData.release &&
254
- this.$mobileHelper.isAndroidPlatform(platformData.normalizedPlatformName);
255
- if (envData && envData.snapshot) {
256
- if (!canSnapshot) {
257
- this.$logger.warn("Stripping the snapshot flag. " +
258
- "Bear in mind that snapshot is only available in Android release builds.");
259
- envFlagNames.splice(envFlagNames.indexOf("snapshot"), 1);
260
- }
261
- else if (this.$hostInfo.isWindows) {
262
- const minWebpackPluginWithWinSnapshotsVersion = "1.3.0";
263
- const installedWebpackPluginVersion = await this.$packageInstallationManager.getInstalledDependencyVersion(constants_1.WEBPACK_PLUGIN_NAME, projectData.projectDir);
264
- const hasWebpackPluginWithWinSnapshotsSupport = !!installedWebpackPluginVersion
265
- ? semver.gte(semver.coerce(installedWebpackPluginVersion), minWebpackPluginWithWinSnapshotsVersion)
266
- : true;
267
- if (!hasWebpackPluginWithWinSnapshotsSupport) {
268
- this.$errors.fail(`In order to generate Snapshots on Windows, please upgrade your Webpack plugin version (npm i ${constants_1.WEBPACK_PLUGIN_NAME}@latest).`);
297
+ buildEnvCommandLineParams(envData, platformData, projectData, prepareData) {
298
+ return __awaiter(this, void 0, void 0, function* () {
299
+ const envFlagNames = Object.keys(envData);
300
+ const canSnapshot = prepareData.release &&
301
+ this.$mobileHelper.isAndroidPlatform(platformData.normalizedPlatformName);
302
+ if (envData && envData.snapshot) {
303
+ if (!canSnapshot) {
304
+ this.$logger.warn("Stripping the snapshot flag. " +
305
+ "Bear in mind that snapshot is only available in Android release builds.");
306
+ envFlagNames.splice(envFlagNames.indexOf("snapshot"), 1);
269
307
  }
270
- }
271
- }
272
- const args = [];
273
- envFlagNames.map((item) => {
274
- let envValue = envData[item];
275
- if (typeof envValue === "undefined") {
276
- return;
277
- }
278
- if (typeof envValue === "boolean") {
279
- if (envValue) {
280
- args.push(`--env.${item}`);
308
+ else if (this.$hostInfo.isWindows) {
309
+ const minWebpackPluginWithWinSnapshotsVersion = "1.3.0";
310
+ const installedWebpackPluginVersion = yield this.$packageInstallationManager.getInstalledDependencyVersion(constants_1.WEBPACK_PLUGIN_NAME, projectData.projectDir);
311
+ const hasWebpackPluginWithWinSnapshotsSupport = !!installedWebpackPluginVersion
312
+ ? semver.gte(semver.coerce(installedWebpackPluginVersion), minWebpackPluginWithWinSnapshotsVersion)
313
+ : true;
314
+ if (!hasWebpackPluginWithWinSnapshotsSupport) {
315
+ this.$errors.fail(`In order to generate Snapshots on Windows, please upgrade your Webpack plugin version (npm i ${constants_1.WEBPACK_PLUGIN_NAME}@latest).`);
316
+ }
281
317
  }
282
318
  }
283
- else {
284
- if (!Array.isArray(envValue)) {
285
- envValue = [envValue];
319
+ const args = [];
320
+ envFlagNames.map((item) => {
321
+ let envValue = envData[item];
322
+ if (typeof envValue === "undefined") {
323
+ return;
286
324
  }
287
- envValue.map((value) => args.push(`--env.${item}=${value}`));
288
- }
325
+ if (typeof envValue === "boolean") {
326
+ if (envValue) {
327
+ args.push(`--env.${item}`);
328
+ }
329
+ }
330
+ else {
331
+ if (!Array.isArray(envValue)) {
332
+ envValue = [envValue];
333
+ }
334
+ envValue.map((value) => args.push(`--env.${item}=${value}`));
335
+ }
336
+ });
337
+ return args;
289
338
  });
290
- return args;
291
339
  }
292
340
  getUpdatedEmittedFiles(allEmittedFiles, chunkFiles, nextHash, platform) {
293
341
  const currentHash = this.getCurrentHotUpdateHash(allEmittedFiles);
342
+ // This logic is needed as there are already cases when webpack doesn't emit any files physically.
343
+ // We've set noEmitOnErrors in webpack.config.js based on noEmitOnError from tsconfig.json,
344
+ // so webpack doesn't emit any files when noEmitOnErrors: true is set in webpack.config.js and
345
+ // there is a compilation error in the source code. On the other side, hmr generates new hot-update files
346
+ // on every change and the hash of the next hmr update is written inside hot-update.json file.
347
+ // Although webpack doesn't emit any files, hmr hash is still generated. The hash is generated per compilation no matter
348
+ // if files will be emitted or not. This way, the first successful compilation after fixing the compilation error generates
349
+ // a hash that is not the same as the one expected in the latest emitted hot-update.json file.
350
+ // As a result, the hmr chain is broken and the changes are not applied.
294
351
  const isHashValid = nextHash
295
352
  ? this.expectedHashes[platform] === currentHash
296
353
  : true;
@@ -309,6 +366,7 @@ class WebpackCompilerService extends events_1.EventEmitter {
309
366
  let hotHash;
310
367
  const hotUpdateScripts = emittedFiles.filter((x) => x.endsWith(".hot-update.js"));
311
368
  if (hotUpdateScripts && hotUpdateScripts.length) {
369
+ // the hash is the same for each hot update in the current compilation
312
370
  const hotUpdateName = hotUpdateScripts[0];
313
371
  const matcher = /^(.+)\.(.+)\.hot-update/gm;
314
372
  const matches = matcher.exec(hotUpdateName);
@@ -316,16 +374,19 @@ class WebpackCompilerService extends events_1.EventEmitter {
316
374
  }
317
375
  return hotHash || "";
318
376
  }
319
- async stopWebpackForPlatform(platform) {
320
- this.$logger.trace(`Stopping webpack watch for platform ${platform}.`);
321
- const webpackProcess = this.webpackProcesses[platform];
322
- await this.$cleanupService.removeKillProcess(webpackProcess.pid.toString());
323
- if (webpackProcess) {
324
- webpackProcess.kill("SIGINT");
325
- delete this.webpackProcesses[platform];
326
- }
377
+ stopWebpackForPlatform(platform) {
378
+ return __awaiter(this, void 0, void 0, function* () {
379
+ this.$logger.trace(`Stopping webpack watch for platform ${platform}.`);
380
+ const webpackProcess = this.webpackProcesses[platform];
381
+ yield this.$cleanupService.removeKillProcess(webpackProcess.pid.toString());
382
+ if (webpackProcess) {
383
+ webpackProcess.kill("SIGINT");
384
+ delete this.webpackProcesses[platform];
385
+ }
386
+ });
327
387
  }
328
388
  handleHMRMessage(message, platformData, projectData, prepareData) {
389
+ // handle new webpack hmr packets
329
390
  this.$logger.trace("Received message from webpack process:", message);
330
391
  if (message.type !== "compilation") {
331
392
  return;
@@ -333,6 +394,7 @@ class WebpackCompilerService extends events_1.EventEmitter {
333
394
  this.$logger.trace("Webpack build done!");
334
395
  const files = message.data.emittedAssets.map((asset) => path.join(platformData.appDestinationDirectoryPath, this.$options.hostProjectModuleName, asset));
335
396
  const staleFiles = message.data.staleAssets.map((asset) => path.join(platformData.appDestinationDirectoryPath, this.$options.hostProjectModuleName, asset));
397
+ // extract last hash from emitted filenames
336
398
  const lastHash = (() => {
337
399
  const absoluteFileNameWithLastHash = files.find((fileName) => fileName.endsWith("hot-update.js"));
338
400
  if (!absoluteFileNameWithLastHash) {
@@ -345,6 +407,7 @@ class WebpackCompilerService extends events_1.EventEmitter {
345
407
  }
346
408
  })();
347
409
  if (!files.length) {
410
+ // ignore compilations if no new files are emitted
348
411
  return;
349
412
  }
350
413
  this.emit(constants_1.WEBPACK_COMPILATION_COMPLETE, {
@@ -389,8 +452,9 @@ class WebpackCompilerService extends events_1.EventEmitter {
389
452
  return false;
390
453
  }
391
454
  }
392
- exports.WebpackCompilerService = WebpackCompilerService;
393
455
  __decorate([
394
456
  (0, decorators_1.performanceLog)()
395
457
  ], WebpackCompilerService.prototype, "startWebpackProcess", null);
458
+ exports.WebpackCompilerService = WebpackCompilerService;
396
459
  yok_1.injector.register("webpackCompilerService", WebpackCompilerService);
460
+ //# sourceMappingURL=webpack-compiler-service.js.map