@akylas/nativescript-cli 8.7.2 → 8.8.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (295) hide show
  1. package/config/test-deps-versions-generated.json +1 -1
  2. package/docs/man_pages/project/configuration/native/native-add-java.md +32 -0
  3. package/docs/man_pages/project/configuration/native/native-add-kotlin.md +34 -0
  4. package/docs/man_pages/project/configuration/native/native-add-objective-c.md +34 -0
  5. package/docs/man_pages/project/configuration/native/native-add-swift.md +32 -0
  6. package/docs/man_pages/project/configuration/native/native-add.md +31 -0
  7. package/docs/man_pages/project/configuration/native/native.md +31 -0
  8. package/lib/.d.ts +2 -0
  9. package/lib/android-tools-info.js +9 -20
  10. package/lib/base-package-manager.js +47 -64
  11. package/lib/bootstrap.js +8 -0
  12. package/lib/bun-package-manager.js +65 -88
  13. package/lib/color.js +2 -2
  14. package/lib/commands/add-platform.js +14 -30
  15. package/lib/commands/apple-login.js +18 -29
  16. package/lib/commands/appstore-list.js +34 -45
  17. package/lib/commands/appstore-upload.js +55 -68
  18. package/lib/commands/build.js +57 -86
  19. package/lib/commands/clean.js +161 -176
  20. package/lib/commands/command-base.js +14 -27
  21. package/lib/commands/config.js +51 -70
  22. package/lib/commands/create-project.js +210 -229
  23. package/lib/commands/debug.js +66 -88
  24. package/lib/commands/deploy.js +28 -44
  25. package/lib/commands/embedding/embed.js +72 -0
  26. package/lib/commands/extensibility/install-extension.js +5 -16
  27. package/lib/commands/extensibility/list-extensions.js +13 -24
  28. package/lib/commands/extensibility/uninstall-extension.js +4 -15
  29. package/lib/commands/fonts.js +30 -41
  30. package/lib/commands/generate-assets.js +13 -28
  31. package/lib/commands/generate-help.js +2 -13
  32. package/lib/commands/generate.js +17 -26
  33. package/lib/commands/info.js +2 -13
  34. package/lib/commands/install.js +34 -49
  35. package/lib/commands/list-platforms.js +14 -25
  36. package/lib/commands/migrate.js +15 -26
  37. package/lib/commands/native-add.js +277 -0
  38. package/lib/commands/platform-clean.js +19 -32
  39. package/lib/commands/plugin/add-plugin.js +12 -25
  40. package/lib/commands/plugin/build-plugin.js +34 -45
  41. package/lib/commands/plugin/create-plugin.js +110 -133
  42. package/lib/commands/plugin/list-plugins.js +22 -33
  43. package/lib/commands/plugin/remove-plugin.js +20 -33
  44. package/lib/commands/plugin/update-plugin.js +20 -33
  45. package/lib/commands/post-install.js +20 -33
  46. package/lib/commands/prepare.js +28 -35
  47. package/lib/commands/preview.js +49 -62
  48. package/lib/commands/remove-platform.js +7 -18
  49. package/lib/commands/resources/resources-update.js +13 -26
  50. package/lib/commands/run.js +55 -76
  51. package/lib/commands/start.js +6 -19
  52. package/lib/commands/test-init.js +123 -134
  53. package/lib/commands/test.js +66 -89
  54. package/lib/commands/typings.js +126 -142
  55. package/lib/commands/update-platform.js +22 -35
  56. package/lib/commands/update.js +30 -43
  57. package/lib/common/child-process.js +53 -72
  58. package/lib/common/codeGeneration/code-entity.js +1 -1
  59. package/lib/common/codeGeneration/code-printer.js +1 -1
  60. package/lib/common/command-params.js +7 -18
  61. package/lib/common/commands/analytics.js +27 -40
  62. package/lib/common/commands/autocompletion.js +39 -56
  63. package/lib/common/commands/device/device-log-stream.js +12 -23
  64. package/lib/common/commands/device/get-file.js +22 -33
  65. package/lib/common/commands/device/list-applications.js +12 -23
  66. package/lib/common/commands/device/list-devices.js +72 -87
  67. package/lib/common/commands/device/list-files.js +23 -34
  68. package/lib/common/commands/device/put-file.js +22 -33
  69. package/lib/common/commands/device/run-application.js +12 -25
  70. package/lib/common/commands/device/stop-application.js +11 -22
  71. package/lib/common/commands/device/uninstall-application.js +6 -17
  72. package/lib/common/commands/generate-messages.js +17 -28
  73. package/lib/common/commands/help.js +20 -33
  74. package/lib/common/commands/package-manager-get.js +6 -17
  75. package/lib/common/commands/package-manager-set.js +9 -20
  76. package/lib/common/commands/post-install.js +2 -13
  77. package/lib/common/commands/preuninstall.js +23 -38
  78. package/lib/common/commands/proxy/proxy-base.js +8 -19
  79. package/lib/common/commands/proxy/proxy-clear.js +4 -15
  80. package/lib/common/commands/proxy/proxy-get.js +3 -14
  81. package/lib/common/commands/proxy/proxy-set.js +87 -100
  82. package/lib/common/constants.js +11 -11
  83. package/lib/common/decorators.js +10 -22
  84. package/lib/common/dispatchers.js +79 -96
  85. package/lib/common/errors.js +89 -104
  86. package/lib/common/file-system.js +106 -127
  87. package/lib/common/header.js +1 -2
  88. package/lib/common/helpers.js +149 -178
  89. package/lib/common/host-info.js +37 -50
  90. package/lib/common/http-client.js +93 -108
  91. package/lib/common/logger/appenders/cli-appender.js +1 -2
  92. package/lib/common/logger/appenders/emit-appender.js +1 -2
  93. package/lib/common/logger/layouts/cli-layout.js +1 -2
  94. package/lib/common/logger/logger.js +1 -1
  95. package/lib/common/mobile/android/android-application-manager.js +121 -142
  96. package/lib/common/mobile/android/android-debug-bridge-result-handler.js +1 -1
  97. package/lib/common/mobile/android/android-debug-bridge.js +87 -112
  98. package/lib/common/mobile/android/android-device-file-system.js +98 -131
  99. package/lib/common/mobile/android/android-device-hash-service.js +50 -75
  100. package/lib/common/mobile/android/android-device.js +74 -91
  101. package/lib/common/mobile/android/android-emulator-services.js +105 -130
  102. package/lib/common/mobile/android/android-log-filter.js +1 -1
  103. package/lib/common/mobile/android/android-virtual-device-service.js +76 -94
  104. package/lib/common/mobile/android/device-android-debug-bridge.js +13 -29
  105. package/lib/common/mobile/android/genymotion/genymotion-service.js +91 -118
  106. package/lib/common/mobile/android/genymotion/virtualbox-service.js +64 -81
  107. package/lib/common/mobile/android/logcat-helper.js +108 -118
  108. package/lib/common/mobile/application-manager-base.js +84 -107
  109. package/lib/common/mobile/device-log-provider-base.js +7 -18
  110. package/lib/common/mobile/emulator-helper.js +1 -0
  111. package/lib/common/mobile/ios/device/ios-application-manager.js +79 -108
  112. package/lib/common/mobile/ios/device/ios-device-file-system.js +78 -105
  113. package/lib/common/mobile/ios/device/ios-device-operations.js +105 -142
  114. package/lib/common/mobile/ios/device/ios-device.js +20 -36
  115. package/lib/common/mobile/ios/ios-device-base.js +58 -81
  116. package/lib/common/mobile/ios/simulator/ios-emulator-services.js +63 -92
  117. package/lib/common/mobile/ios/simulator/ios-sim-resolver.js +1 -1
  118. package/lib/common/mobile/ios/simulator/ios-simulator-application-manager.js +60 -89
  119. package/lib/common/mobile/ios/simulator/ios-simulator-device.js +27 -43
  120. package/lib/common/mobile/ios/simulator/ios-simulator-file-system.js +37 -62
  121. package/lib/common/mobile/ios/simulator/ios-simulator-log-provider.js +24 -35
  122. package/lib/common/mobile/mobile-core/android-device-discovery.js +43 -62
  123. package/lib/common/mobile/mobile-core/android-emulator-discovery.js +21 -32
  124. package/lib/common/mobile/mobile-core/android-process-service.js +143 -182
  125. package/lib/common/mobile/mobile-core/device-discovery.js +2 -13
  126. package/lib/common/mobile/mobile-core/devices-service.js +385 -436
  127. package/lib/common/mobile/mobile-core/ios-device-discovery.js +24 -35
  128. package/lib/common/mobile/mobile-core/ios-simulator-discovery.js +47 -62
  129. package/lib/common/mobile/mobile-helper.js +15 -26
  130. package/lib/common/mobile/wp8/wp8-emulator-services.js +25 -52
  131. package/lib/common/opener.js +2 -2
  132. package/lib/common/plist-parser.js +2 -2
  133. package/lib/common/prompter.js +90 -105
  134. package/lib/common/queue.js +9 -20
  135. package/lib/common/services/auto-completion-service.js +39 -52
  136. package/lib/common/services/cancellation.js +17 -28
  137. package/lib/common/services/commands-service.js +146 -169
  138. package/lib/common/services/help-service.js +132 -157
  139. package/lib/common/services/hooks-service.js +93 -108
  140. package/lib/common/services/ios-notification-service.js +21 -34
  141. package/lib/common/services/json-file-settings-service.js +52 -71
  142. package/lib/common/services/lock-service.js +35 -52
  143. package/lib/common/services/message-contract-generator.js +35 -46
  144. package/lib/common/services/micro-templating-service.js +4 -15
  145. package/lib/common/services/net-service.js +90 -107
  146. package/lib/common/services/project-files-manager.js +10 -23
  147. package/lib/common/services/proxy-service.js +13 -24
  148. package/lib/common/services/qr.js +13 -24
  149. package/lib/common/services/settings-service.js +1 -1
  150. package/lib/common/services/xcode-select-service.js +20 -35
  151. package/lib/common/utils.js +7 -0
  152. package/lib/common/validators/project-name-validator.js +1 -1
  153. package/lib/common/validators/validation-result.js +1 -1
  154. package/lib/common/verify-node-version.js +2 -3
  155. package/lib/common/yok.js +23 -36
  156. package/lib/config.js +7 -58
  157. package/lib/constants.js +24 -24
  158. package/lib/controllers/build-controller.js +82 -99
  159. package/lib/controllers/debug-controller.js +107 -128
  160. package/lib/controllers/deploy-controller.js +17 -22
  161. package/lib/controllers/migrate-controller.js +727 -800
  162. package/lib/controllers/platform-controller.js +72 -83
  163. package/lib/controllers/prepare-controller.js +264 -250
  164. package/lib/controllers/run-controller.js +392 -406
  165. package/lib/controllers/update-controller-base.js +16 -29
  166. package/lib/controllers/update-controller.js +94 -119
  167. package/lib/data/build-data.js +2 -0
  168. package/lib/data/prepare-data.js +5 -1
  169. package/lib/declarations.d.ts +14 -3
  170. package/lib/definitions/android-plugin-migrator.d.ts +1 -0
  171. package/lib/definitions/ios-debugger-port-service.d.ts +1 -1
  172. package/lib/definitions/livesync.d.ts +1 -1
  173. package/lib/definitions/platform.d.ts +1 -0
  174. package/lib/definitions/prepare.d.ts +3 -0
  175. package/lib/definitions/project.d.ts +5 -0
  176. package/lib/detached-processes/cleanup-js-subprocess.js +3 -12
  177. package/lib/detached-processes/cleanup-process.js +16 -25
  178. package/lib/device-path-provider.js +23 -34
  179. package/lib/device-sockets/ios/app-debug-socket-proxy-factory.js +149 -164
  180. package/lib/device-sockets/ios/notification.js +1 -1
  181. package/lib/device-sockets/ios/socket-request-executor.js +24 -39
  182. package/lib/helpers/android-bundle-validator-helper.js +1 -1
  183. package/lib/helpers/deploy-command-helper.js +45 -49
  184. package/lib/helpers/key-command-helper.js +4 -13
  185. package/lib/helpers/livesync-command-helper.js +137 -152
  186. package/lib/helpers/network-connectivity-validator.js +6 -17
  187. package/lib/helpers/options-track-helper.js +6 -17
  188. package/lib/helpers/platform-command-helper.js +102 -114
  189. package/lib/key-commands/index.js +161 -211
  190. package/lib/nativescript-cli.js +5 -14
  191. package/lib/node-package-manager.js +81 -104
  192. package/lib/options.js +12 -14
  193. package/lib/package-installation-manager.js +130 -165
  194. package/lib/package-manager.js +63 -86
  195. package/lib/platform-command-param.js +4 -15
  196. package/lib/pnpm-package-manager.js +59 -78
  197. package/lib/project-data.js +5 -2
  198. package/lib/providers/project-files-provider.js +2 -2
  199. package/lib/services/analytics/analytics-broker-process.js +13 -22
  200. package/lib/services/analytics/analytics-broker.js +17 -30
  201. package/lib/services/analytics/analytics-service.js +161 -198
  202. package/lib/services/analytics/google-analytics-provider.js +41 -56
  203. package/lib/services/analytics-settings-service.js +15 -32
  204. package/lib/services/android/android-bundle-tool-service.js +43 -60
  205. package/lib/services/android/gradle-build-args-service.js +13 -23
  206. package/lib/services/android/gradle-build-service.js +34 -47
  207. package/lib/services/android/gradle-command-service.js +23 -32
  208. package/lib/services/android-device-debug-service.js +90 -117
  209. package/lib/services/android-plugin-build-service.js +233 -247
  210. package/lib/services/android-project-service.js +180 -219
  211. package/lib/services/android-resources-migration-service.js +51 -64
  212. package/lib/services/apple-portal/apple-portal-application-service.js +46 -63
  213. package/lib/services/apple-portal/apple-portal-session-service.js +171 -188
  214. package/lib/services/assets-generation/assets-generation-service.js +100 -113
  215. package/lib/services/build-artifacts-service.js +9 -20
  216. package/lib/services/build-info-file-service.js +20 -35
  217. package/lib/services/cleanup-service.js +47 -76
  218. package/lib/services/cocoapods-service.js +118 -133
  219. package/lib/services/device/device-install-app-service.js +73 -90
  220. package/lib/services/doctor-service.js +99 -118
  221. package/lib/services/extensibility-service.js +81 -100
  222. package/lib/services/files-hash-service.js +28 -44
  223. package/lib/services/hmr-status-service.js +1 -1
  224. package/lib/services/initialize-service.js +37 -50
  225. package/lib/services/ios/export-options-plist-service.js +38 -51
  226. package/lib/services/ios/ios-signing-service.js +161 -180
  227. package/lib/services/ios/spm-service.js +40 -53
  228. package/lib/services/ios/xcodebuild-args-service.js +77 -94
  229. package/lib/services/ios/xcodebuild-command-service.js +14 -25
  230. package/lib/services/ios/xcodebuild-service.js +50 -69
  231. package/lib/services/ios-debugger-port-service.js +23 -36
  232. package/lib/services/ios-device-debug-service.js +75 -102
  233. package/lib/services/ios-entitlements-service.js +31 -42
  234. package/lib/services/ios-extensions-service.js +18 -29
  235. package/lib/services/ios-project-service.js +418 -440
  236. package/lib/services/ios-provision-service.js +108 -129
  237. package/lib/services/ios-watch-app-service.js +21 -32
  238. package/lib/services/ip-service.js +38 -53
  239. package/lib/services/itmstransporter-service.js +129 -152
  240. package/lib/services/livesync/android-device-livesync-service-base.js +31 -48
  241. package/lib/services/livesync/android-device-livesync-service.js +120 -149
  242. package/lib/services/livesync/android-device-livesync-sockets-service.js +123 -155
  243. package/lib/services/livesync/android-livesync-service.js +16 -37
  244. package/lib/services/livesync/android-livesync-tool.js +89 -112
  245. package/lib/services/livesync/device-livesync-service-base.js +15 -28
  246. package/lib/services/livesync/ios-device-livesync-service.js +114 -143
  247. package/lib/services/livesync/ios-livesync-service.js +44 -60
  248. package/lib/services/livesync/platform-livesync-service-base.js +96 -120
  249. package/lib/services/log-parser-service.js +1 -1
  250. package/lib/services/log-source-map-service.js +33 -43
  251. package/lib/services/marking-mode-service.js +15 -28
  252. package/lib/services/npm-config-service.js +1 -1
  253. package/lib/services/pacote-service.js +49 -64
  254. package/lib/services/performance-service.js +1 -1
  255. package/lib/services/platform/add-platform-service.js +53 -69
  256. package/lib/services/platform/platform-validation-service.js +22 -33
  257. package/lib/services/platform/prepare-native-platform-service.js +50 -60
  258. package/lib/services/platform-environment-requirements.js +29 -38
  259. package/lib/services/plugins-service.js +128 -147
  260. package/lib/services/project-backup-service.js +1 -1
  261. package/lib/services/project-changes-service.js +129 -139
  262. package/lib/services/project-cleanup-service.js +64 -77
  263. package/lib/services/project-config-service.js +71 -80
  264. package/lib/services/project-data-service.js +116 -139
  265. package/lib/services/project-name-service.js +28 -43
  266. package/lib/services/project-service.js +84 -103
  267. package/lib/services/project-templates-service.js +52 -67
  268. package/lib/services/start-service.js +41 -59
  269. package/lib/services/temp-service.js +8 -21
  270. package/lib/services/terminal-spinner-service.js +13 -24
  271. package/lib/services/test-execution-service.js +59 -72
  272. package/lib/services/test-initialization-service.js +2 -2
  273. package/lib/services/timeline-profiler-service.js +1 -1
  274. package/lib/services/versions-service.js +119 -138
  275. package/lib/services/webpack/webpack-compiler-service.js +212 -224
  276. package/lib/services/xcconfig-service.js +8 -19
  277. package/lib/services/xcproj-service.js +12 -0
  278. package/lib/sys-info.js +45 -62
  279. package/lib/tools/node-modules/node-modules-builder.js +16 -27
  280. package/lib/yarn-package-manager.js +59 -78
  281. package/lib/yarn2-package-manager.js +60 -79
  282. package/package.json +59 -57
  283. package/vendor/aab-tool/README.txt +1 -1
  284. package/vendor/aab-tool/bundletool.jar +0 -0
  285. package/vendor/gradle-app/app/build.gradle +12 -4
  286. package/vendor/gradle-plugin/build.gradle +12 -4
  287. package/lib/common/resources/platform-tools/android/darwin/NOTICE.txt +0 -3407
  288. package/lib/common/resources/platform-tools/android/darwin/adb +0 -0
  289. package/lib/common/resources/platform-tools/android/linux/NOTICE.txt +0 -4451
  290. package/lib/common/resources/platform-tools/android/linux/adb +0 -0
  291. package/lib/common/resources/platform-tools/android/win32/AdbWinApi.dll +0 -0
  292. package/lib/common/resources/platform-tools/android/win32/AdbWinUsbApi.dll +0 -0
  293. package/lib/common/resources/platform-tools/android/win32/NOTICE.txt +0 -4451
  294. package/lib/common/resources/platform-tools/android/win32/adb.exe +0 -0
  295. package/lib/common/resources/platform-tools/android/win32/fastboot.exe +0 -0
@@ -1,13 +1,4 @@
1
1
  "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
2
  Object.defineProperty(exports, "__esModule", { value: true });
12
3
  exports.GenerateHelpCommand = void 0;
13
4
  const yok_1 = require("../common/yok");
@@ -16,10 +7,8 @@ class GenerateHelpCommand {
16
7
  this.$helpService = $helpService;
17
8
  this.allowedParameters = [];
18
9
  }
19
- execute(args) {
20
- return __awaiter(this, void 0, void 0, function* () {
21
- return this.$helpService.generateHtmlPages();
22
- });
10
+ async execute(args) {
11
+ return this.$helpService.generateHtmlPages();
23
12
  }
24
13
  }
25
14
  exports.GenerateHelpCommand = GenerateHelpCommand;
@@ -1,13 +1,4 @@
1
1
  "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
2
  Object.defineProperty(exports, "__esModule", { value: true });
12
3
  exports.GenerateCommand = void 0;
13
4
  const schematics_executor_1 = require("@nativescript/schematics-executor");
@@ -19,22 +10,18 @@ class GenerateCommand {
19
10
  this.$errors = $errors;
20
11
  this.allowedParameters = [];
21
12
  }
22
- execute(_rawArgs) {
23
- return __awaiter(this, void 0, void 0, function* () {
24
- try {
25
- yield (0, schematics_executor_1.run)(this.executionOptions);
26
- }
27
- catch (error) {
28
- this.$errors.fail(error.message);
29
- }
30
- });
13
+ async execute(_rawArgs) {
14
+ try {
15
+ await (0, schematics_executor_1.run)(this.executionOptions);
16
+ }
17
+ catch (error) {
18
+ this.$errors.fail(error.message);
19
+ }
31
20
  }
32
- canExecute(rawArgs) {
33
- return __awaiter(this, void 0, void 0, function* () {
34
- this.setExecutionOptions(rawArgs);
35
- this.validateExecutionOptions();
36
- return true;
37
- });
21
+ async canExecute(rawArgs) {
22
+ this.setExecutionOptions(rawArgs);
23
+ this.validateExecutionOptions();
24
+ return true;
38
25
  }
39
26
  validateExecutionOptions() {
40
27
  if (!this.executionOptions.schematic) {
@@ -43,7 +30,11 @@ class GenerateCommand {
43
30
  }
44
31
  setExecutionOptions(rawArgs) {
45
32
  const options = this.parseRawArgs(rawArgs);
46
- this.executionOptions = Object.assign(Object.assign({}, options), { logger: this.$logger, directory: process.cwd() });
33
+ this.executionOptions = {
34
+ ...options,
35
+ logger: this.$logger,
36
+ directory: process.cwd(),
37
+ };
47
38
  }
48
39
  parseRawArgs(rawArgs) {
49
40
  const collection = this.$options.collection;
@@ -64,7 +55,7 @@ function parseSchematicSettings(rawArgs) {
64
55
  .map((o) => o.split("="))
65
56
  .map(([key, ...value]) => [key, value.join("=")])
66
57
  .reduce((obj, [key, value]) => {
67
- return Object.assign(Object.assign({}, obj), { [key]: value });
58
+ return { ...obj, [key]: value };
68
59
  }, {});
69
60
  return { options, args };
70
61
  }
@@ -1,13 +1,4 @@
1
1
  "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
2
  Object.defineProperty(exports, "__esModule", { value: true });
12
3
  exports.InfoCommand = void 0;
13
4
  const yok_1 = require("../common/yok");
@@ -16,10 +7,8 @@ class InfoCommand {
16
7
  this.$infoService = $infoService;
17
8
  this.allowedParameters = [];
18
9
  }
19
- execute(args) {
20
- return __awaiter(this, void 0, void 0, function* () {
21
- return this.$infoService.printComponentsInfo();
22
- });
10
+ async execute(args) {
11
+ return this.$infoService.printComponentsInfo();
23
12
  }
24
13
  }
25
14
  exports.InfoCommand = InfoCommand;
@@ -1,13 +1,4 @@
1
1
  "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
2
  Object.defineProperty(exports, "__esModule", { value: true });
12
3
  exports.InstallCommand = void 0;
13
4
  const os_1 = require("os");
@@ -29,50 +20,44 @@ class InstallCommand {
29
20
  this.allowedParameters = [this.$stringParameter];
30
21
  this.$projectData.initializeProjectData();
31
22
  }
32
- execute(args) {
33
- return __awaiter(this, void 0, void 0, function* () {
34
- return args[0]
35
- ? this.installModule(args[0])
36
- : this.installProjectDependencies();
37
- });
23
+ async execute(args) {
24
+ return args[0]
25
+ ? this.installModule(args[0])
26
+ : this.installProjectDependencies();
38
27
  }
39
- installProjectDependencies() {
40
- return __awaiter(this, void 0, void 0, function* () {
41
- let error = "";
42
- yield this.$pluginsService.ensureAllDependenciesAreInstalled(this.$projectData);
43
- for (const platform of this.$mobileHelper.platformNames) {
44
- const platformData = this.$platformsDataService.getPlatformData(platform, this.$projectData);
45
- const frameworkPackageData = this.$projectDataService.getRuntimePackage(this.$projectData.projectDir, platformData.platformNameLowerCase);
46
- if (frameworkPackageData && frameworkPackageData.version) {
47
- try {
48
- const platformProjectService = platformData.platformProjectService;
49
- yield platformProjectService.validate(this.$projectData, this.$options);
50
- yield this.$platformCommandHelper.addPlatforms([`${platform}@${frameworkPackageData.version}`], this.$projectData, this.$options.frameworkPath);
51
- }
52
- catch (err) {
53
- error = `${error}${os_1.EOL}${err}`;
54
- }
28
+ async installProjectDependencies() {
29
+ let error = "";
30
+ await this.$pluginsService.ensureAllDependenciesAreInstalled(this.$projectData);
31
+ for (const platform of this.$mobileHelper.platformNames) {
32
+ const platformData = this.$platformsDataService.getPlatformData(platform, this.$projectData);
33
+ const frameworkPackageData = this.$projectDataService.getRuntimePackage(this.$projectData.projectDir, platformData.platformNameLowerCase);
34
+ if (frameworkPackageData && frameworkPackageData.version) {
35
+ try {
36
+ const platformProjectService = platformData.platformProjectService;
37
+ await platformProjectService.validate(this.$projectData, this.$options);
38
+ await this.$platformCommandHelper.addPlatforms([`${platform}@${frameworkPackageData.version}`], this.$projectData, this.$options.frameworkPath);
39
+ }
40
+ catch (err) {
41
+ error = `${error}${os_1.EOL}${err}`;
55
42
  }
56
43
  }
57
- if (error) {
58
- this.$logger.error(error);
59
- }
60
- });
44
+ }
45
+ if (error) {
46
+ this.$logger.error(error);
47
+ }
61
48
  }
62
- installModule(moduleName) {
63
- return __awaiter(this, void 0, void 0, function* () {
64
- const projectDir = this.$projectData.projectDir;
65
- const devPrefix = "nativescript-dev-";
66
- if (!this.$fs.exists(moduleName) && moduleName.indexOf(devPrefix) !== 0) {
67
- moduleName = devPrefix + moduleName;
68
- }
69
- yield this.$packageManager.install(moduleName, projectDir, {
70
- "save-dev": true,
71
- disableNpmInstall: this.$options.disableNpmInstall,
72
- frameworkPath: this.$options.frameworkPath,
73
- ignoreScripts: this.$options.ignoreScripts,
74
- path: this.$options.path,
75
- });
49
+ async installModule(moduleName) {
50
+ const projectDir = this.$projectData.projectDir;
51
+ const devPrefix = "nativescript-dev-";
52
+ if (!this.$fs.exists(moduleName) && moduleName.indexOf(devPrefix) !== 0) {
53
+ moduleName = devPrefix + moduleName;
54
+ }
55
+ await this.$packageManager.install(moduleName, projectDir, {
56
+ "save-dev": true,
57
+ disableNpmInstall: this.$options.disableNpmInstall,
58
+ frameworkPath: this.$options.frameworkPath,
59
+ ignoreScripts: this.$options.ignoreScripts,
60
+ path: this.$options.path,
76
61
  });
77
62
  }
78
63
  }
@@ -1,13 +1,4 @@
1
1
  "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
2
  Object.defineProperty(exports, "__esModule", { value: true });
12
3
  exports.ListPlatformsCommand = void 0;
13
4
  const helpers = require("../common/helpers");
@@ -20,25 +11,23 @@ class ListPlatformsCommand {
20
11
  this.allowedParameters = [];
21
12
  this.$projectData.initializeProjectData();
22
13
  }
23
- execute(args) {
24
- return __awaiter(this, void 0, void 0, function* () {
25
- const installedPlatforms = this.$platformCommandHelper.getInstalledPlatforms(this.$projectData);
26
- if (installedPlatforms.length > 0) {
27
- const preparedPlatforms = this.$platformCommandHelper.getPreparedPlatforms(this.$projectData);
28
- if (preparedPlatforms.length > 0) {
29
- this.$logger.info("The project is prepared for: ", helpers.formatListOfNames(preparedPlatforms, "and"));
30
- }
31
- else {
32
- this.$logger.info("The project is not prepared for any platform");
33
- }
34
- this.$logger.info("Installed platforms: ", helpers.formatListOfNames(installedPlatforms, "and"));
14
+ async execute(args) {
15
+ const installedPlatforms = this.$platformCommandHelper.getInstalledPlatforms(this.$projectData);
16
+ if (installedPlatforms.length > 0) {
17
+ const preparedPlatforms = this.$platformCommandHelper.getPreparedPlatforms(this.$projectData);
18
+ if (preparedPlatforms.length > 0) {
19
+ this.$logger.info("The project is prepared for: ", helpers.formatListOfNames(preparedPlatforms, "and"));
35
20
  }
36
21
  else {
37
- const formattedPlatformsList = helpers.formatListOfNames(this.$platformCommandHelper.getAvailablePlatforms(this.$projectData), "and");
38
- this.$logger.info("Available platforms for this OS: ", formattedPlatformsList);
39
- this.$logger.info("No installed platforms found. Use $ ns platform add");
22
+ this.$logger.info("The project is not prepared for any platform");
40
23
  }
41
- });
24
+ this.$logger.info("Installed platforms: ", helpers.formatListOfNames(installedPlatforms, "and"));
25
+ }
26
+ else {
27
+ const formattedPlatformsList = helpers.formatListOfNames(this.$platformCommandHelper.getAvailablePlatforms(this.$projectData), "and");
28
+ this.$logger.info("Available platforms for this OS: ", formattedPlatformsList);
29
+ this.$logger.info("No installed platforms found. Use $ ns platform add");
30
+ }
42
31
  }
43
32
  }
44
33
  exports.ListPlatformsCommand = ListPlatformsCommand;
@@ -1,13 +1,4 @@
1
1
  "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
2
  Object.defineProperty(exports, "__esModule", { value: true });
12
3
  exports.MigrateCommand = void 0;
13
4
  const yok_1 = require("../common/yok");
@@ -21,23 +12,21 @@ class MigrateCommand {
21
12
  this.allowedParameters = [];
22
13
  this.$projectData.initializeProjectData();
23
14
  }
24
- execute(args) {
25
- return __awaiter(this, void 0, void 0, function* () {
26
- const migrationData = {
27
- projectDir: this.$projectData.projectDir,
28
- platforms: [
29
- this.$devicePlatformsConstants.Android,
30
- this.$devicePlatformsConstants.iOS,
31
- ],
32
- };
33
- const shouldMigrateResult = yield this.$migrateController.shouldMigrate(migrationData);
34
- if (!shouldMigrateResult) {
35
- const cliVersion = this.$staticConfig.version;
36
- this.$logger.printMarkdown(`__Project is compatible with NativeScript \`v${cliVersion}\`__`);
37
- return;
38
- }
39
- yield this.$migrateController.migrate(migrationData);
40
- });
15
+ async execute(args) {
16
+ const migrationData = {
17
+ projectDir: this.$projectData.projectDir,
18
+ platforms: [
19
+ this.$devicePlatformsConstants.Android,
20
+ this.$devicePlatformsConstants.iOS,
21
+ ],
22
+ };
23
+ const shouldMigrateResult = await this.$migrateController.shouldMigrate(migrationData);
24
+ if (!shouldMigrateResult) {
25
+ const cliVersion = this.$staticConfig.version;
26
+ this.$logger.printMarkdown(`__Project is compatible with NativeScript \`v${cliVersion}\`__`);
27
+ return;
28
+ }
29
+ await this.$migrateController.migrate(migrationData);
41
30
  }
42
31
  }
43
32
  exports.MigrateCommand = MigrateCommand;
@@ -0,0 +1,277 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.NativeAddSwiftCommand = exports.NativeAddObjectiveCCommand = exports.NativeAddKotlinCommand = exports.NativeAddJavaCommand = exports.NativeAddAndroidCommand = exports.NativeAddSingleCommand = exports.NativeAddCommand = void 0;
4
+ const fs = require("fs");
5
+ const path = require("path");
6
+ const yok_1 = require("../common/yok");
7
+ const utils_1 = require("../common/utils");
8
+ const os_1 = require("os");
9
+ class NativeAddCommand {
10
+ constructor($projectData, $logger, $errors) {
11
+ this.$projectData = $projectData;
12
+ this.$logger = $logger;
13
+ this.$errors = $errors;
14
+ this.allowedParameters = [];
15
+ this.$projectData.initializeProjectData();
16
+ }
17
+ async execute(args) {
18
+ this.failWithUsage();
19
+ return Promise.resolve();
20
+ }
21
+ failWithUsage() {
22
+ this.$errors.failWithHelp("Usage: ns native add [swift|objective-c|java|kotlin] [class name]");
23
+ }
24
+ async canExecute(args) {
25
+ this.failWithUsage();
26
+ return false;
27
+ }
28
+ getIosSourcePathBase() {
29
+ const resources = this.$projectData.getAppResourcesDirectoryPath();
30
+ return path.join(resources, "iOS", "src");
31
+ }
32
+ getAndroidSourcePathBase() {
33
+ const resources = this.$projectData.getAppResourcesDirectoryPath();
34
+ return path.join(resources, "Android", "src", "main", "java");
35
+ }
36
+ }
37
+ exports.NativeAddCommand = NativeAddCommand;
38
+ class NativeAddSingleCommand extends NativeAddCommand {
39
+ constructor($projectData, $logger, $errors) {
40
+ super($projectData, $logger, $errors);
41
+ }
42
+ async canExecute(args) {
43
+ if (!args || args.length !== 1) {
44
+ this.failWithUsage();
45
+ }
46
+ return true;
47
+ }
48
+ }
49
+ exports.NativeAddSingleCommand = NativeAddSingleCommand;
50
+ class NativeAddAndroidCommand extends NativeAddSingleCommand {
51
+ constructor($projectData, $logger, $errors) {
52
+ super($projectData, $logger, $errors);
53
+ }
54
+ getPackageName(className) {
55
+ const lastDotIndex = className.lastIndexOf(".");
56
+ if (lastDotIndex !== -1) {
57
+ return className.substring(0, lastDotIndex);
58
+ }
59
+ return "";
60
+ }
61
+ getClassSimpleName(className) {
62
+ const lastDotIndex = className.lastIndexOf(".");
63
+ if (lastDotIndex !== -1) {
64
+ return className.substring(lastDotIndex + 1);
65
+ }
66
+ return className;
67
+ }
68
+ generateJavaClassContent(packageName, classSimpleName) {
69
+ return ((packageName.length > 0 ? `package ${packageName};` : "") +
70
+ `
71
+ import android.util.Log;
72
+
73
+ public class ${classSimpleName} {
74
+ public void logMessage() {
75
+ Log.d("JS", "Hello from ${classSimpleName}!");
76
+ }
77
+ }
78
+ `);
79
+ }
80
+ generateKotlinClassContent(packageName, classSimpleName) {
81
+ return ((packageName.length > 0 ? `package ${packageName};` : "") +
82
+ `
83
+
84
+ import android.util.Log
85
+
86
+ class ${classSimpleName} {
87
+ fun logMessage() {
88
+ Log.d("JS", "Hello from ${classSimpleName}!")
89
+ }
90
+ }
91
+ `);
92
+ }
93
+ doJavaKotlin(className, extension) {
94
+ const fileExt = extension == "java" ? extension : "kt";
95
+ const packageName = this.getPackageName(className);
96
+ const classSimpleName = this.getClassSimpleName(className);
97
+ const packagePath = path.join(this.getAndroidSourcePathBase(), ...packageName.split("."));
98
+ const filePath = path.join(packagePath, `${classSimpleName}.${fileExt}`);
99
+ if (fs.existsSync(filePath)) {
100
+ this.$errors.failWithHelp(`${extension} file '${filePath}' already exists.`);
101
+ return;
102
+ }
103
+ if (extension == "kotlin" && !this.checkAndUpdateGradleProperties()) {
104
+ return;
105
+ }
106
+ const fileContent = extension == "java"
107
+ ? this.generateJavaClassContent(packageName, classSimpleName)
108
+ : this.generateKotlinClassContent(packageName, classSimpleName);
109
+ fs.mkdirSync(packagePath, { recursive: true });
110
+ fs.writeFileSync(filePath, fileContent);
111
+ this.$logger.info(`${(0, utils_1.capitalizeFirstLetter)(extension)} file '${filePath}' generated successfully.`);
112
+ }
113
+ checkAndUpdateGradleProperties() {
114
+ const resources = this.$projectData.getAppResourcesDirectoryPath();
115
+ const filePath = path.join(resources, "Android", "gradle.properties");
116
+ if (fs.existsSync(filePath)) {
117
+ const fileContent = fs.readFileSync(filePath, "utf8");
118
+ const propertyRegex = /^useKotlin\s*=\s*(true|false)$/m;
119
+ const match = propertyRegex.exec(fileContent);
120
+ if (match) {
121
+ const useKotlin = match[1];
122
+ if (useKotlin === "false") {
123
+ this.$errors.failWithHelp("The useKotlin property is set to false. Stopping processing. Kotlin must be enabled in gradle.properties to use.");
124
+ return false;
125
+ }
126
+ if (useKotlin === "true") {
127
+ return true;
128
+ }
129
+ }
130
+ else {
131
+ fs.appendFileSync(filePath, `${os_1.EOL}useKotlin=true${os_1.EOL}`);
132
+ this.$logger.info('Added "useKotlin=true" property to gradle.properties.');
133
+ }
134
+ }
135
+ else {
136
+ fs.writeFileSync(filePath, `useKotlin=true${os_1.EOL}`);
137
+ this.$logger.info('Created gradle.properties with "useKotlin=true" property.');
138
+ }
139
+ return true;
140
+ }
141
+ }
142
+ exports.NativeAddAndroidCommand = NativeAddAndroidCommand;
143
+ class NativeAddJavaCommand extends NativeAddAndroidCommand {
144
+ constructor($projectData, $logger, $errors) {
145
+ super($projectData, $logger, $errors);
146
+ }
147
+ async execute(args) {
148
+ this.doJavaKotlin(args[0], "java");
149
+ return Promise.resolve();
150
+ }
151
+ }
152
+ exports.NativeAddJavaCommand = NativeAddJavaCommand;
153
+ class NativeAddKotlinCommand extends NativeAddAndroidCommand {
154
+ constructor($projectData, $logger, $errors) {
155
+ super($projectData, $logger, $errors);
156
+ }
157
+ async execute(args) {
158
+ this.doJavaKotlin(args[0], "kotlin");
159
+ return Promise.resolve();
160
+ }
161
+ }
162
+ exports.NativeAddKotlinCommand = NativeAddKotlinCommand;
163
+ class NativeAddObjectiveCCommand extends NativeAddSingleCommand {
164
+ constructor($projectData, $logger, $errors) {
165
+ super($projectData, $logger, $errors);
166
+ }
167
+ async execute(args) {
168
+ this.doObjectiveC(args[0]);
169
+ return Promise.resolve();
170
+ }
171
+ doObjectiveC(className) {
172
+ const iosSourceBase = this.getIosSourcePathBase();
173
+ const classFilePath = path.join(iosSourceBase, `${className}.m`);
174
+ const headerFilePath = path.join(iosSourceBase, `${className}.h`);
175
+ if (this.generateObjectiveCFiles(className, classFilePath, headerFilePath)) {
176
+ this.generateOrUpdateModuleMap(`${className}.h`, path.join(iosSourceBase, "module.modulemap"));
177
+ }
178
+ }
179
+ generateOrUpdateModuleMap(headerFileName, moduleMapPath) {
180
+ const moduleName = "LocalModule";
181
+ const headerPath = headerFileName;
182
+ let moduleMapContent = "";
183
+ if (fs.existsSync(moduleMapPath)) {
184
+ moduleMapContent = fs.readFileSync(moduleMapPath, "utf8");
185
+ }
186
+ const headerDeclaration = `header "${headerPath}"`;
187
+ if (moduleMapContent.includes(`module ${moduleName}`)) {
188
+ if (moduleMapContent.includes(headerDeclaration)) {
189
+ this.$logger.warn(`Header '${headerFileName}' is already added to the module map.`);
190
+ return;
191
+ }
192
+ const updatedModuleMapContent = moduleMapContent.replace(new RegExp(`module ${moduleName} {\\s*([^}]*)\\s*}`, "s"), `module ${moduleName} {${os_1.EOL} $1${os_1.EOL} ${headerDeclaration}${os_1.EOL}}`);
193
+ fs.writeFileSync(moduleMapPath, updatedModuleMapContent);
194
+ }
195
+ else {
196
+ const moduleDeclaration = `module ${moduleName} {${os_1.EOL} ${headerDeclaration}${os_1.EOL} export *${os_1.EOL}}`;
197
+ moduleMapContent += `${os_1.EOL}${os_1.EOL}${moduleDeclaration}`;
198
+ fs.writeFileSync(moduleMapPath, moduleMapContent);
199
+ }
200
+ this.$logger.info(`Module map '${moduleMapPath}' has been updated with the header '${headerFileName}'.`);
201
+ }
202
+ generateObjectiveCFiles(className, classFilePath, interfaceFilePath) {
203
+ if (fs.existsSync(classFilePath)) {
204
+ this.$errors.failWithHelp(`Error: File '${classFilePath}' already exists.`);
205
+ return false;
206
+ }
207
+ if (fs.existsSync(interfaceFilePath)) {
208
+ this.$errors.failWithHelp(`Error: File '${interfaceFilePath}' already exists.`);
209
+ return false;
210
+ }
211
+ const interfaceContent = `#import <Foundation/Foundation.h>
212
+
213
+ @interface ${className} : NSObject
214
+
215
+ - (void)logMessage;
216
+
217
+ @end
218
+ `;
219
+ const classContent = `#import "${className}.h"
220
+
221
+ @implementation ${className}
222
+
223
+ - (void)logMessage {
224
+ NSLog(@"Hello from ${className} class!");
225
+ }
226
+
227
+ @end
228
+ `;
229
+ fs.writeFileSync(classFilePath, classContent);
230
+ this.$logger.trace(`Objective-C class file '${classFilePath}' generated successfully.`);
231
+ fs.writeFileSync(interfaceFilePath, interfaceContent);
232
+ this.$logger.trace(`Objective-C interface file '${interfaceFilePath}' generated successfully.`);
233
+ return true;
234
+ }
235
+ }
236
+ exports.NativeAddObjectiveCCommand = NativeAddObjectiveCCommand;
237
+ class NativeAddSwiftCommand extends NativeAddSingleCommand {
238
+ constructor($projectData, $logger, $errors) {
239
+ super($projectData, $logger, $errors);
240
+ }
241
+ async execute(args) {
242
+ this.doSwift(args[0]);
243
+ return Promise.resolve();
244
+ }
245
+ doSwift(className) {
246
+ const iosSourceBase = this.getIosSourcePathBase();
247
+ const swiftFilePath = path.join(iosSourceBase, `${className}.swift`);
248
+ this.generateSwiftFile(className, swiftFilePath);
249
+ }
250
+ generateSwiftFile(className, filePath) {
251
+ const directory = path.dirname(filePath);
252
+ if (!fs.existsSync(directory)) {
253
+ fs.mkdirSync(directory, { recursive: true });
254
+ this.$logger.trace(`Created directory: '${directory}'.`);
255
+ }
256
+ if (fs.existsSync(filePath)) {
257
+ this.$errors.failWithHelp(`Error: File '${filePath}' already exists.`);
258
+ return;
259
+ }
260
+ const content = `import Foundation;
261
+ import os;
262
+
263
+ @objc class ${className}: NSObject {
264
+ @objc func logMessage() {
265
+ os_log("Hello from ${className} class!")
266
+ }
267
+ }`;
268
+ fs.writeFileSync(filePath, content);
269
+ this.$logger.info(`Swift file '${filePath}' generated successfully.`);
270
+ }
271
+ }
272
+ exports.NativeAddSwiftCommand = NativeAddSwiftCommand;
273
+ yok_1.injector.registerCommand(["native|add"], NativeAddCommand);
274
+ yok_1.injector.registerCommand(["native|add|java"], NativeAddJavaCommand);
275
+ yok_1.injector.registerCommand(["native|add|kotlin"], NativeAddKotlinCommand);
276
+ yok_1.injector.registerCommand(["native|add|swift"], NativeAddSwiftCommand);
277
+ yok_1.injector.registerCommand(["native|add|objective-c"], NativeAddObjectiveCCommand);