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.AndroidProjectService = void 0;
10
19
  const path = require("path");
@@ -18,7 +27,40 @@ const constants_1 = require("../common/constants");
18
27
  const helpers_1 = require("../common/helpers");
19
28
  const decorators_1 = require(".././common/decorators");
20
29
  const yok_1 = require("../common/yok");
21
- function topologicalSortNativeDependencies(dependencies, start = [], depth = 0, total = 0) {
30
+ //
31
+ // we sort the native dependencies topologically to make sure they are processed in the right order
32
+ // native dependenciess need to be sorted so the deepst dependencies are built before it's parents
33
+ //
34
+ // for example, given this dep structure (assuming these are all native dependencies that need to be built)
35
+ // (note: we list all dependencies at the root level, so the leaf nodes are essentially references to the root nodes)
36
+ //
37
+ // |- dep1
38
+ // |- dep2
39
+ // |- |- dep3
40
+ // |- |- dep4
41
+ // |- |- |- dep5
42
+ // |- dep3
43
+ // |- dep4
44
+ // |- |- dep5
45
+ // |- dep5
46
+ //
47
+ // It is sorted:
48
+ //
49
+ // |- dep1
50
+ // |- dep3
51
+ // |- dep5
52
+ // |- dep4 # depends on dep5, so dep5 must be built first, ie above ^
53
+ // |- |- dep5
54
+ // |- dep2 # depends on dep3, dep4 (and dep5 through dep4) so all of them must be built first before dep2 is built
55
+ // |- |- dep3
56
+ // |- |- dep4
57
+ // |- |- |- dep5
58
+ //
59
+ // for more details see: https://wikiless.org/wiki/Topological_sorting?lang=en
60
+ //
61
+ function topologicalSortNativeDependencies(dependencies, start = [], depth = 0, total = 0 // do not pass in, we calculate it in the initial run!
62
+ ) {
63
+ // we set the total on the initial call - and never increment it, as it's used for esacaping the recursion
22
64
  if (total === 0) {
23
65
  total = dependencies.length;
24
66
  }
@@ -32,6 +74,8 @@ function topologicalSortNativeDependencies(dependencies, start = [], depth = 0,
32
74
  return sortedDeps;
33
75
  }, start);
34
76
  const remainingDeps = dependencies.filter((nativeDep) => !sortedDeps.includes(nativeDep));
77
+ // recurse if we still have remaining deps
78
+ // the second condition here prevents infinite recursion
35
79
  if (remainingDeps.length && sortedDeps.length < total) {
36
80
  return topologicalSortNativeDependencies(remainingDeps, sortedDeps, depth + 1, total);
37
81
  }
@@ -85,7 +129,7 @@ class AndroidProjectService extends projectServiceBaseLib.PlatformProjectService
85
129
  constants.APK_DIR,
86
130
  ];
87
131
  const packageName = this.getProjectNameFromId(projectData);
88
- const runtimePackage = this.$projectDataService.getRuntimePackage(projectData.projectDir, "android");
132
+ const runtimePackage = this.$projectDataService.getRuntimePackage(projectData.projectDir, "android" /* constants.PlatformTypes.android */);
89
133
  this._platformData = {
90
134
  frameworkPackageName: runtimePackage.name,
91
135
  normalizedPlatformName: "Android",
@@ -126,7 +170,7 @@ class AndroidProjectService extends projectServiceBaseLib.PlatformProjectService
126
170
  configurationFileName: constants.MANIFEST_FILE_NAME,
127
171
  configurationFilePath: path.join(...configurationsDirectoryArr),
128
172
  relativeToFrameworkConfigurationFilePath: path.join(constants.SRC_DIR, constants.MAIN_DIR, constants.MANIFEST_FILE_NAME),
129
- fastLivesyncFileExtensions: [".jpg", ".gif", ".png", ".bmp", ".webp"],
173
+ fastLivesyncFileExtensions: [".jpg", ".gif", ".png", ".bmp", ".webp"], // http://developer.android.com/guide/appendix/media-formats.html
130
174
  };
131
175
  }
132
176
  return this._platformData;
@@ -135,8 +179,10 @@ class AndroidProjectService extends projectServiceBaseLib.PlatformProjectService
135
179
  const currentPlatformData = this.$projectDataService.getRuntimePackage(projectData.projectDir, platformData.platformNameLowerCase);
136
180
  return currentPlatformData && currentPlatformData[constants.VERSION_STRING];
137
181
  }
138
- async validateOptions() {
139
- return true;
182
+ validateOptions() {
183
+ return __awaiter(this, void 0, void 0, function* () {
184
+ return true;
185
+ });
140
186
  }
141
187
  getAppResourcesDestinationDirectoryPath(projectData) {
142
188
  const appResourcesDirStructureHasMigrated = this.$androidResourcesMigrationService.hasMigrated(projectData.getAppResourcesDirectoryPath());
@@ -147,36 +193,41 @@ class AndroidProjectService extends projectServiceBaseLib.PlatformProjectService
147
193
  return this.getLegacyAppResourcesDestinationDirPath(projectData);
148
194
  }
149
195
  }
150
- async validate(projectData, options, notConfiguredEnvOptions) {
151
- this.validatePackageName(projectData.projectIdentifiers.android);
152
- this.validateProjectName(projectData.projectName);
153
- const checkEnvironmentRequirementsOutput = await this.$platformEnvironmentRequirements.checkEnvironmentRequirements({
154
- platform: this.getPlatformData(projectData).normalizedPlatformName,
155
- projectDir: projectData.projectDir,
156
- options,
157
- notConfiguredEnvOptions,
158
- });
159
- this.$androidToolsInfo.validateInfo({
160
- showWarningsAsErrors: true,
161
- projectDir: projectData.projectDir,
162
- validateTargetSdk: true,
196
+ validate(projectData, options, notConfiguredEnvOptions) {
197
+ return __awaiter(this, void 0, void 0, function* () {
198
+ this.validatePackageName(projectData.projectIdentifiers.android);
199
+ this.validateProjectName(projectData.projectName);
200
+ const checkEnvironmentRequirementsOutput = yield this.$platformEnvironmentRequirements.checkEnvironmentRequirements({
201
+ platform: this.getPlatformData(projectData).normalizedPlatformName,
202
+ projectDir: projectData.projectDir,
203
+ options,
204
+ notConfiguredEnvOptions,
205
+ });
206
+ this.$androidToolsInfo.validateInfo({
207
+ showWarningsAsErrors: true,
208
+ projectDir: projectData.projectDir,
209
+ validateTargetSdk: true,
210
+ });
211
+ return {
212
+ checkEnvironmentRequirementsOutput,
213
+ };
163
214
  });
164
- return {
165
- checkEnvironmentRequirementsOutput,
166
- };
167
215
  }
168
- async createProject(frameworkDir, frameworkVersion, projectData) {
169
- if (semver.lt(frameworkVersion, AndroidProjectService.MIN_RUNTIME_VERSION_WITH_GRADLE)) {
170
- this.$errors.fail(`The NativeScript CLI requires Android runtime ${AndroidProjectService.MIN_RUNTIME_VERSION_WITH_GRADLE} or later to work properly.`);
171
- }
172
- this.$fs.ensureDirectoryExists(this.getPlatformData(projectData).projectRoot);
173
- const androidToolsInfo = this.$androidToolsInfo.getToolsInfo({
174
- projectDir: projectData.projectDir,
216
+ createProject(frameworkDir, frameworkVersion, projectData) {
217
+ return __awaiter(this, void 0, void 0, function* () {
218
+ if (semver.lt(frameworkVersion, AndroidProjectService.MIN_RUNTIME_VERSION_WITH_GRADLE)) {
219
+ this.$errors.fail(`The NativeScript CLI requires Android runtime ${AndroidProjectService.MIN_RUNTIME_VERSION_WITH_GRADLE} or later to work properly.`);
220
+ }
221
+ this.$fs.ensureDirectoryExists(this.getPlatformData(projectData).projectRoot);
222
+ const androidToolsInfo = this.$androidToolsInfo.getToolsInfo({
223
+ projectDir: projectData.projectDir,
224
+ });
225
+ const targetSdkVersion = androidToolsInfo && androidToolsInfo.targetSdkVersion;
226
+ this.$logger.trace(`Using Android SDK '${targetSdkVersion}'.`);
227
+ this.copy(this.getPlatformData(projectData).projectRoot, frameworkDir, "*", "-R");
228
+ // TODO: Check if we actually need this and if it should be targetSdk or compileSdk
229
+ this.cleanResValues(targetSdkVersion, projectData);
175
230
  });
176
- const targetSdkVersion = androidToolsInfo && androidToolsInfo.targetSdkVersion;
177
- this.$logger.trace(`Using Android SDK '${targetSdkVersion}'.`);
178
- this.copy(this.getPlatformData(projectData).projectRoot, frameworkDir, "*", "-R");
179
- this.cleanResValues(targetSdkVersion, projectData);
180
231
  }
181
232
  getResDestinationDir(projectData) {
182
233
  const appResourcesDirStructureHasMigrated = this.$androidResourcesMigrationService.hasMigrated(projectData.getAppResourcesDirectoryPath());
@@ -206,30 +257,35 @@ class AndroidProjectService extends projectServiceBaseLib.PlatformProjectService
206
257
  this.$logger.trace(directoriesToClean);
207
258
  _.map(directoriesToClean, (dir) => this.$fs.deleteDirectory(dir));
208
259
  }
209
- async interpolateData(projectData) {
210
- this.interpolateConfigurationFile(projectData);
211
- const appResourcesDirectoryPath = projectData.getAppResourcesDirectoryPath();
212
- let stringsFilePath;
213
- const appResourcesDestinationDirectoryPath = this.getAppResourcesDestinationDirectoryPath(projectData);
214
- if (this.$androidResourcesMigrationService.hasMigrated(appResourcesDirectoryPath)) {
215
- stringsFilePath = path.join(appResourcesDestinationDirectoryPath, constants.MAIN_DIR, constants.RESOURCES_DIR, "values", "strings.xml");
216
- }
217
- else {
218
- stringsFilePath = path.join(appResourcesDestinationDirectoryPath, "values", "strings.xml");
219
- }
220
- shell.sed("-i", /__NAME__/, projectData.projectName, stringsFilePath);
221
- shell.sed("-i", /__TITLE_ACTIVITY__/, projectData.projectName, stringsFilePath);
222
- const gradleSettingsFilePath = path.join(this.getPlatformData(projectData).projectRoot, "settings.gradle");
223
- shell.sed("-i", /__PROJECT_NAME__/, this.getProjectNameFromId(projectData), gradleSettingsFilePath);
224
- try {
225
- const appGradleContent = this.$fs.readText(projectData.appGradlePath);
226
- if (appGradleContent.indexOf(constants.PACKAGE_PLACEHOLDER_NAME) !== -1) {
227
- shell.sed("-i", new RegExp(constants.PACKAGE_PLACEHOLDER_NAME), projectData.projectIdentifiers.android, projectData.appGradlePath);
260
+ interpolateData(projectData) {
261
+ return __awaiter(this, void 0, void 0, function* () {
262
+ // Interpolate the apilevel and package
263
+ this.interpolateConfigurationFile(projectData);
264
+ const appResourcesDirectoryPath = projectData.getAppResourcesDirectoryPath();
265
+ let stringsFilePath;
266
+ const appResourcesDestinationDirectoryPath = this.getAppResourcesDestinationDirectoryPath(projectData);
267
+ if (this.$androidResourcesMigrationService.hasMigrated(appResourcesDirectoryPath)) {
268
+ stringsFilePath = path.join(appResourcesDestinationDirectoryPath, constants.MAIN_DIR, constants.RESOURCES_DIR, "values", "strings.xml");
228
269
  }
229
- }
230
- catch (e) {
231
- this.$logger.trace(`Templates updated and no need for replace in app.gradle.`);
232
- }
270
+ else {
271
+ stringsFilePath = path.join(appResourcesDestinationDirectoryPath, "values", "strings.xml");
272
+ }
273
+ shell.sed("-i", /__NAME__/, projectData.projectName, stringsFilePath);
274
+ shell.sed("-i", /__TITLE_ACTIVITY__/, projectData.projectName, stringsFilePath);
275
+ const gradleSettingsFilePath = path.join(this.getPlatformData(projectData).projectRoot, "settings.gradle");
276
+ shell.sed("-i", /__PROJECT_NAME__/, this.getProjectNameFromId(projectData), gradleSettingsFilePath);
277
+ try {
278
+ // will replace applicationId in app/App_Resources/Android/app.gradle if it has not been edited by the user
279
+ const appGradleContent = this.$fs.readText(projectData.appGradlePath);
280
+ if (appGradleContent.indexOf(constants.PACKAGE_PLACEHOLDER_NAME) !== -1) {
281
+ //TODO: For compatibility with old templates. Once all templates are updated should delete.
282
+ shell.sed("-i", new RegExp(constants.PACKAGE_PLACEHOLDER_NAME), projectData.projectIdentifiers.android, projectData.appGradlePath);
283
+ }
284
+ }
285
+ catch (e) {
286
+ this.$logger.trace(`Templates updated and no need for replace in app.gradle.`);
287
+ }
288
+ });
233
289
  }
234
290
  interpolateConfigurationFile(projectData) {
235
291
  const manifestPath = this.getPlatformData(projectData).configurationFilePath;
@@ -248,24 +304,30 @@ class AndroidProjectService extends projectServiceBaseLib.PlatformProjectService
248
304
  afterCreateProject(projectRoot) {
249
305
  return null;
250
306
  }
251
- async updatePlatform(currentVersion, newVersion, canUpdate, projectData, addPlatform, removePlatforms) {
252
- if (semver.eq(newVersion, AndroidProjectService.MIN_RUNTIME_VERSION_WITH_GRADLE)) {
253
- const platformLowercase = this.getPlatformData(projectData).normalizedPlatformName.toLowerCase();
254
- await removePlatforms([platformLowercase.split("@")[0]]);
255
- await addPlatform(platformLowercase);
256
- return false;
257
- }
258
- return true;
307
+ updatePlatform(currentVersion, newVersion, canUpdate, projectData, addPlatform, removePlatforms) {
308
+ return __awaiter(this, void 0, void 0, function* () {
309
+ if (semver.eq(newVersion, AndroidProjectService.MIN_RUNTIME_VERSION_WITH_GRADLE)) {
310
+ const platformLowercase = this.getPlatformData(projectData).normalizedPlatformName.toLowerCase();
311
+ yield removePlatforms([platformLowercase.split("@")[0]]);
312
+ yield addPlatform(platformLowercase);
313
+ return false;
314
+ }
315
+ return true;
316
+ });
259
317
  }
260
- async buildProject(projectRoot, projectData, buildData) {
261
- const platformData = this.getPlatformData(projectData);
262
- await this.$gradleBuildService.buildProject(platformData.projectRoot, buildData);
263
- const outputPath = platformData.getBuildOutputPath(buildData);
264
- await this.$filesHashService.saveHashesForProject(this._platformData, outputPath);
265
- await this.trackKotlinUsage(projectRoot);
318
+ buildProject(projectRoot, projectData, buildData) {
319
+ return __awaiter(this, void 0, void 0, function* () {
320
+ const platformData = this.getPlatformData(projectData);
321
+ yield this.$gradleBuildService.buildProject(platformData.projectRoot, buildData);
322
+ const outputPath = platformData.getBuildOutputPath(buildData);
323
+ yield this.$filesHashService.saveHashesForProject(this._platformData, outputPath);
324
+ yield this.trackKotlinUsage(projectRoot);
325
+ });
266
326
  }
267
- async buildForDeploy(projectRoot, projectData, buildData) {
268
- return this.buildProject(projectRoot, projectData, buildData);
327
+ buildForDeploy(projectRoot, projectData, buildData) {
328
+ return __awaiter(this, void 0, void 0, function* () {
329
+ return this.buildProject(projectRoot, projectData, buildData);
330
+ });
269
331
  }
270
332
  isPlatformPrepared(projectRoot, projectData) {
271
333
  return this.$fs.exists(path.join(this.getPlatformData(projectData).appDestinationDirectoryPath, this.$options.hostProjectModuleName));
@@ -273,7 +335,10 @@ class AndroidProjectService extends projectServiceBaseLib.PlatformProjectService
273
335
  getFrameworkFilesExtensions() {
274
336
  return [".jar", ".dat"];
275
337
  }
276
- async prepareProject() {
338
+ prepareProject() {
339
+ return __awaiter(this, void 0, void 0, function* () {
340
+ // Intentionally left empty.
341
+ });
277
342
  }
278
343
  ensureConfigurationFileInAppResources(projectData) {
279
344
  const appResourcesDirectoryPath = projectData.appResourcesDirectoryPath;
@@ -290,6 +355,7 @@ class AndroidProjectService extends projectServiceBaseLib.PlatformProjectService
290
355
  this.$logger.warn("No manifest found in " + originalAndroidManifestFilePath);
291
356
  return;
292
357
  }
358
+ // Overwrite the AndroidManifest from runtime.
293
359
  if (!appResourcesDirStructureHasMigrated) {
294
360
  this.$fs.copyFile(originalAndroidManifestFilePath, this.getPlatformData(projectData).configurationFilePath);
295
361
  }
@@ -306,6 +372,8 @@ class AndroidProjectService extends projectServiceBaseLib.PlatformProjectService
306
372
  }
307
373
  else {
308
374
  this.$fs.copyFile(path.join(projectAppResourcesPath, platformData.normalizedPlatformName, "*"), platformsAppResourcesPath);
375
+ // https://github.com/NativeScript/android-runtime/issues/899
376
+ // App_Resources/Android/libs is reserved to user's aars and jars, but they should not be copied as resources
309
377
  this.$fs.deleteDirectory(path.join(platformsAppResourcesPath, "libs"));
310
378
  }
311
379
  const androidToolsInfo = this.$androidToolsInfo.getToolsInfo({
@@ -314,41 +382,54 @@ class AndroidProjectService extends projectServiceBaseLib.PlatformProjectService
314
382
  const compileSdkVersion = androidToolsInfo && androidToolsInfo.compileSdkVersion;
315
383
  this.cleanResValues(compileSdkVersion, projectData);
316
384
  }
317
- async preparePluginNativeCode(pluginData, projectData) {
318
- const pluginPlatformsFolderPath = this.getPluginPlatformsFolderPath(pluginData, AndroidProjectService.ANDROID_PLATFORM_NAME);
319
- if (this.$fs.exists(pluginPlatformsFolderPath)) {
320
- const options = {
321
- gradlePath: this.$options.gradlePath,
322
- gradleArgs: this.$options.gradleArgs,
323
- projectDir: projectData.projectDir,
324
- pluginName: pluginData.name,
325
- platformsAndroidDirPath: pluginPlatformsFolderPath,
326
- aarOutputDir: pluginPlatformsFolderPath,
327
- tempPluginDirPath: path.join(projectData.platformsDir, "tempPlugin"),
328
- };
329
- if (await this.$androidPluginBuildService.buildAar(options)) {
330
- this.$logger.info(`Built aar for ${options.pluginName}`);
385
+ preparePluginNativeCode(pluginData, projectData) {
386
+ return __awaiter(this, void 0, void 0, function* () {
387
+ // build Android plugins which contain AndroidManifest.xml and/or resources
388
+ const pluginPlatformsFolderPath = this.getPluginPlatformsFolderPath(pluginData, AndroidProjectService.ANDROID_PLATFORM_NAME);
389
+ if (this.$fs.exists(pluginPlatformsFolderPath)) {
390
+ const options = {
391
+ gradlePath: this.$options.gradlePath,
392
+ gradleArgs: this.$options.gradleArgs,
393
+ projectDir: projectData.projectDir,
394
+ pluginName: pluginData.name,
395
+ platformsAndroidDirPath: pluginPlatformsFolderPath,
396
+ aarOutputDir: pluginPlatformsFolderPath,
397
+ tempPluginDirPath: path.join(projectData.platformsDir, "tempPlugin"),
398
+ };
399
+ if (yield this.$androidPluginBuildService.buildAar(options)) {
400
+ this.$logger.info(`Built aar for ${options.pluginName}`);
401
+ }
402
+ this.$androidPluginBuildService.migrateIncludeGradle(options);
331
403
  }
332
- this.$androidPluginBuildService.migrateIncludeGradle(options);
333
- }
404
+ });
334
405
  }
335
- async processConfigurationFilesFromAppResources() {
336
- return;
406
+ processConfigurationFilesFromAppResources() {
407
+ return __awaiter(this, void 0, void 0, function* () {
408
+ return;
409
+ });
337
410
  }
338
- async removePluginNativeCode(pluginData, projectData) {
411
+ removePluginNativeCode(pluginData, projectData) {
412
+ return __awaiter(this, void 0, void 0, function* () {
413
+ // not implemented
414
+ });
339
415
  }
340
- async beforePrepareAllPlugins(projectData, dependencies) {
341
- if (dependencies) {
342
- dependencies = this.filterUniqueDependencies(dependencies);
343
- return this.provideDependenciesJson(projectData, dependencies);
344
- }
416
+ beforePrepareAllPlugins(projectData, dependencies) {
417
+ return __awaiter(this, void 0, void 0, function* () {
418
+ if (dependencies) {
419
+ dependencies = this.filterUniqueDependencies(dependencies);
420
+ return this.provideDependenciesJson(projectData, dependencies);
421
+ }
422
+ });
345
423
  }
346
- async handleNativeDependenciesChange(projectData, opts) {
347
- return;
424
+ handleNativeDependenciesChange(projectData, opts) {
425
+ return __awaiter(this, void 0, void 0, function* () {
426
+ return;
427
+ });
348
428
  }
349
429
  filterUniqueDependencies(dependencies) {
350
430
  const depsDictionary = dependencies.reduce((dict, dep) => {
351
431
  const collision = dict[dep.name];
432
+ // in case there are multiple dependencies to the same module, the one declared in the package.json takes precedence
352
433
  if (!collision || collision.depth > dep.depth) {
353
434
  dict[dep.name] = dep;
354
435
  }
@@ -367,6 +448,7 @@ class AndroidProjectService extends projectServiceBaseLib.PlatformProjectService
367
448
  name,
368
449
  directory: path.relative(platformDir, directory),
369
450
  dependencies: dependencies.filter((dep) => {
451
+ // filter out transient dependencies that don't have native dependencies
370
452
  return (nativeDependencyData.findIndex((nativeDep) => nativeDep.name === dep) !== -1);
371
453
  }),
372
454
  };
@@ -374,6 +456,7 @@ class AndroidProjectService extends projectServiceBaseLib.PlatformProjectService
374
456
  nativeDependencies = topologicalSortNativeDependencies(nativeDependencies);
375
457
  const jsonContent = JSON.stringify(nativeDependencies, null, 4);
376
458
  this.$fs.writeFile(dependenciesJsonPath, jsonContent);
459
+ // we sort all the dependencies to respect the topological sorting of the native dependencies
377
460
  return dependencies.sort(function (a, b) {
378
461
  return (nativeDependencies.findIndex((n) => n.name === a.name) -
379
462
  nativeDependencies.findIndex((n) => n.name === b.name));
@@ -384,27 +467,36 @@ class AndroidProjectService extends projectServiceBaseLib.PlatformProjectService
384
467
  (nativescript.android ||
385
468
  (nativescript.platforms && nativescript.platforms.android)));
386
469
  }
387
- async stopServices(projectRoot) {
388
- const result = await this.$gradleCommandService.executeCommand(["--stop", "--quiet"], {
389
- cwd: projectRoot,
390
- message: "Gradle stop services...",
391
- stdio: "pipe",
470
+ stopServices(projectRoot) {
471
+ return __awaiter(this, void 0, void 0, function* () {
472
+ const result = yield this.$gradleCommandService.executeCommand(["--stop", "--quiet"], {
473
+ cwd: projectRoot,
474
+ message: "Gradle stop services...",
475
+ stdio: "pipe",
476
+ });
477
+ return result;
392
478
  });
393
- return result;
394
479
  }
395
- async cleanProject(projectRoot) {
396
- await this.$gradleBuildService.cleanProject(projectRoot, {
397
- release: false,
480
+ cleanProject(projectRoot) {
481
+ return __awaiter(this, void 0, void 0, function* () {
482
+ yield this.$gradleBuildService.cleanProject(projectRoot, {
483
+ release: false,
484
+ });
398
485
  });
399
486
  }
400
- async cleanDeviceTempFolder(deviceIdentifier, projectData) {
401
- const adb = this.$injector.resolve(device_android_debug_bridge_1.DeviceAndroidDebugBridge, {
402
- identifier: deviceIdentifier,
487
+ cleanDeviceTempFolder(deviceIdentifier, projectData) {
488
+ return __awaiter(this, void 0, void 0, function* () {
489
+ const adb = this.$injector.resolve(device_android_debug_bridge_1.DeviceAndroidDebugBridge, {
490
+ identifier: deviceIdentifier,
491
+ });
492
+ const deviceRootPath = `${constants_1.LiveSyncPaths.ANDROID_TMP_DIR_NAME}/${projectData.projectIdentifiers.android}`;
493
+ yield adb.executeShellCommand(["rm", "-rf", deviceRootPath]);
403
494
  });
404
- const deviceRootPath = `${constants_1.LiveSyncPaths.ANDROID_TMP_DIR_NAME}/${projectData.projectIdentifiers.android}`;
405
- await adb.executeShellCommand(["rm", "-rf", deviceRootPath]);
406
495
  }
407
- async checkForChanges() {
496
+ checkForChanges() {
497
+ return __awaiter(this, void 0, void 0, function* () {
498
+ // Nothing android specific to check yet.
499
+ });
408
500
  }
409
501
  getDeploymentTarget(projectData) {
410
502
  return;
@@ -414,9 +506,12 @@ class AndroidProjectService extends projectServiceBaseLib.PlatformProjectService
414
506
  shell.cp(cpArg, paths, projectRoot);
415
507
  }
416
508
  validatePackageName(packageName) {
509
+ //Make the package conform to Java package types
510
+ //Enforce underscore limitation
417
511
  if (!/^[a-zA-Z]+(\.[a-zA-Z0-9][a-zA-Z0-9_]*)+$/.test(packageName)) {
418
512
  this.$errors.fail(`Package name must look like: com.company.Name. Got: ${packageName}`);
419
513
  }
514
+ //Class is a reserved word
420
515
  if (/\b[Cc]lass\b/.test(packageName)) {
421
516
  this.$errors.fail("class is a reserved word");
422
517
  }
@@ -425,6 +520,7 @@ class AndroidProjectService extends projectServiceBaseLib.PlatformProjectService
425
520
  if (projectName === "") {
426
521
  this.$errors.fail("Project name cannot be empty");
427
522
  }
523
+ //Classes in Java don't begin with numbers
428
524
  if (/^[0-9]/.test(projectName)) {
429
525
  this.$errors.fail("Project name must not begin with a number");
430
526
  }
@@ -445,6 +541,19 @@ class AndroidProjectService extends projectServiceBaseLib.PlatformProjectService
445
541
  ];
446
542
  return path.join(this.getPlatformData(projectData).projectRoot, ...resourcePath);
447
543
  }
544
+ /**
545
+ * The purpose of this method is to delete the previously prepared user resources.
546
+ * The content of the `<platforms>/android/.../res` directory is based on user's resources and gradle project template from android-runtime.
547
+ * During preparation of the `<path to user's App_Resources>/Android` we want to clean all the users files from previous preparation,
548
+ * but keep the ones that were introduced during `platform add` of the android-runtime.
549
+ * Currently the Gradle project template contains resources only in values and values-v21 directories.
550
+ * So the current logic of the method is cleaning al resources from `<platforms>/android/.../res` that are not in `values.*` directories
551
+ * and that exist in the `<path to user's App_Resources>/Android/.../res` directory
552
+ * This means that if user has a resource file in values-v29 for example, builds the project and then deletes this resource,
553
+ * it will be kept in platforms directory. Reference issue: `https://github.com/NativeScript/nativescript-cli/issues/5083`
554
+ * Same is valid for files in `drawable-<resolution>` directories - in case in user's resources there's drawable-hdpi directory,
555
+ * which is deleted after the first build of app, it will remain in platforms directory.
556
+ */
448
557
  cleanUpPreparedResources(projectData) {
449
558
  let resourcesDirPath = path.join(projectData.appResourcesDirectoryPath, this.getPlatformData(projectData).normalizedPlatformName);
450
559
  if (this.$androidResourcesMigrationService.hasMigrated(projectData.appResourcesDirectoryPath)) {
@@ -461,22 +570,24 @@ class AndroidProjectService extends projectServiceBaseLib.PlatformProjectService
461
570
  });
462
571
  }
463
572
  }
464
- async trackKotlinUsage(projectRoot) {
465
- const buildStatistics = this.tryGetAndroidBuildStatistics(projectRoot);
466
- try {
467
- if (buildStatistics && buildStatistics.kotlinUsage) {
468
- const analyticsDelimiter = constants.AnalyticsEventLabelDelimiter;
469
- const hasUseKotlinPropertyInAppData = `hasUseKotlinPropertyInApp${analyticsDelimiter}${buildStatistics.kotlinUsage.hasUseKotlinPropertyInApp}`;
470
- const hasKotlinRuntimeClassesData = `hasKotlinRuntimeClasses${analyticsDelimiter}${buildStatistics.kotlinUsage.hasKotlinRuntimeClasses}`;
471
- await this.$analyticsService.trackEventActionInGoogleAnalytics({
472
- action: "Using Kotlin",
473
- additionalData: `${hasUseKotlinPropertyInAppData}${analyticsDelimiter}${hasKotlinRuntimeClassesData}`,
474
- });
573
+ trackKotlinUsage(projectRoot) {
574
+ return __awaiter(this, void 0, void 0, function* () {
575
+ const buildStatistics = this.tryGetAndroidBuildStatistics(projectRoot);
576
+ try {
577
+ if (buildStatistics && buildStatistics.kotlinUsage) {
578
+ const analyticsDelimiter = constants.AnalyticsEventLabelDelimiter;
579
+ const hasUseKotlinPropertyInAppData = `hasUseKotlinPropertyInApp${analyticsDelimiter}${buildStatistics.kotlinUsage.hasUseKotlinPropertyInApp}`;
580
+ const hasKotlinRuntimeClassesData = `hasKotlinRuntimeClasses${analyticsDelimiter}${buildStatistics.kotlinUsage.hasKotlinRuntimeClasses}`;
581
+ yield this.$analyticsService.trackEventActionInGoogleAnalytics({
582
+ action: "Using Kotlin" /* constants.TrackActionNames.UsingKotlin */,
583
+ additionalData: `${hasUseKotlinPropertyInAppData}${analyticsDelimiter}${hasKotlinRuntimeClassesData}`,
584
+ });
585
+ }
475
586
  }
476
- }
477
- catch (e) {
478
- this.$logger.trace(`Failed to track android build statistics. Error is: ${e.message}`);
479
- }
587
+ catch (e) {
588
+ this.$logger.trace(`Failed to track android build statistics. Error is: ${e.message}`);
589
+ }
590
+ });
480
591
  }
481
592
  tryGetAndroidBuildStatistics(projectRoot) {
482
593
  const staticsFilePath = path.join(projectRoot, constants.ANDROID_ANALYTICS_DATA_DIR, constants.ANDROID_ANALYTICS_DATA_FILE);
@@ -492,7 +603,6 @@ class AndroidProjectService extends projectServiceBaseLib.PlatformProjectService
492
603
  return buildStatistics;
493
604
  }
494
605
  }
495
- exports.AndroidProjectService = AndroidProjectService;
496
606
  AndroidProjectService.VALUES_DIRNAME = "values";
497
607
  AndroidProjectService.VALUES_VERSION_DIRNAME_PREFIX = AndroidProjectService.VALUES_DIRNAME + "-v";
498
608
  AndroidProjectService.ANDROID_PLATFORM_NAME = "android";
@@ -501,4 +611,6 @@ __decorate([
501
611
  (0, decorators_1.performanceLog)(),
502
612
  (0, helpers_1.hook)("buildAndroid")
503
613
  ], AndroidProjectService.prototype, "buildProject", null);
614
+ exports.AndroidProjectService = AndroidProjectService;
504
615
  yok_1.injector.register("androidProjectService", AndroidProjectService);
616
+ //# sourceMappingURL=android-project-service.js.map