@akylas/nativescript-cli 8.8.2 → 8.8.4

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 (275) hide show
  1. package/lib/android-tools-info.js +9 -20
  2. package/lib/base-package-manager.js +47 -64
  3. package/lib/bun-package-manager.js +65 -88
  4. package/lib/color.js +2 -2
  5. package/lib/commands/add-platform.js +14 -30
  6. package/lib/commands/apple-login.js +18 -29
  7. package/lib/commands/appstore-list.js +34 -45
  8. package/lib/commands/appstore-upload.js +55 -68
  9. package/lib/commands/build.js +57 -86
  10. package/lib/commands/clean.js +161 -176
  11. package/lib/commands/command-base.js +14 -27
  12. package/lib/commands/config.js +51 -70
  13. package/lib/commands/create-project.js +210 -229
  14. package/lib/commands/debug.js +66 -88
  15. package/lib/commands/deploy.js +28 -44
  16. package/lib/commands/embedding/embed.js +33 -52
  17. package/lib/commands/extensibility/install-extension.js +5 -16
  18. package/lib/commands/extensibility/list-extensions.js +13 -24
  19. package/lib/commands/extensibility/uninstall-extension.js +4 -15
  20. package/lib/commands/fonts.js +30 -41
  21. package/lib/commands/generate-assets.js +13 -28
  22. package/lib/commands/generate-help.js +2 -13
  23. package/lib/commands/generate.js +17 -26
  24. package/lib/commands/info.js +2 -13
  25. package/lib/commands/install.js +34 -49
  26. package/lib/commands/list-platforms.js +14 -25
  27. package/lib/commands/migrate.js +15 -26
  28. package/lib/commands/native-add.js +23 -46
  29. package/lib/commands/platform-clean.js +19 -32
  30. package/lib/commands/plugin/add-plugin.js +12 -25
  31. package/lib/commands/plugin/build-plugin.js +34 -39
  32. package/lib/commands/plugin/create-plugin.js +110 -133
  33. package/lib/commands/plugin/list-plugins.js +22 -33
  34. package/lib/commands/plugin/remove-plugin.js +20 -33
  35. package/lib/commands/plugin/update-plugin.js +20 -33
  36. package/lib/commands/post-install.js +20 -33
  37. package/lib/commands/prepare.js +19 -35
  38. package/lib/commands/preview.js +49 -62
  39. package/lib/commands/remove-platform.js +7 -18
  40. package/lib/commands/resources/resources-update.js +13 -26
  41. package/lib/commands/run.js +55 -76
  42. package/lib/commands/start.js +6 -19
  43. package/lib/commands/test-init.js +123 -134
  44. package/lib/commands/test.js +66 -89
  45. package/lib/commands/typings.js +126 -142
  46. package/lib/commands/update-platform.js +22 -35
  47. package/lib/commands/update.js +30 -43
  48. package/lib/common/child-process.js +53 -72
  49. package/lib/common/codeGeneration/code-entity.js +1 -1
  50. package/lib/common/codeGeneration/code-printer.js +1 -1
  51. package/lib/common/command-params.js +7 -18
  52. package/lib/common/commands/analytics.js +27 -40
  53. package/lib/common/commands/autocompletion.js +39 -56
  54. package/lib/common/commands/device/device-log-stream.js +12 -23
  55. package/lib/common/commands/device/get-file.js +22 -33
  56. package/lib/common/commands/device/list-applications.js +12 -23
  57. package/lib/common/commands/device/list-devices.js +72 -87
  58. package/lib/common/commands/device/list-files.js +23 -34
  59. package/lib/common/commands/device/put-file.js +22 -33
  60. package/lib/common/commands/device/run-application.js +12 -25
  61. package/lib/common/commands/device/stop-application.js +11 -22
  62. package/lib/common/commands/device/uninstall-application.js +6 -17
  63. package/lib/common/commands/generate-messages.js +17 -28
  64. package/lib/common/commands/help.js +20 -33
  65. package/lib/common/commands/package-manager-get.js +6 -17
  66. package/lib/common/commands/package-manager-set.js +9 -20
  67. package/lib/common/commands/post-install.js +2 -13
  68. package/lib/common/commands/preuninstall.js +23 -38
  69. package/lib/common/commands/proxy/proxy-base.js +8 -19
  70. package/lib/common/commands/proxy/proxy-clear.js +4 -15
  71. package/lib/common/commands/proxy/proxy-get.js +3 -14
  72. package/lib/common/commands/proxy/proxy-set.js +87 -100
  73. package/lib/common/constants.js +11 -11
  74. package/lib/common/decorators.js +10 -22
  75. package/lib/common/dispatchers.js +79 -96
  76. package/lib/common/errors.js +89 -104
  77. package/lib/common/file-system.js +106 -127
  78. package/lib/common/header.js +1 -2
  79. package/lib/common/helpers.js +149 -178
  80. package/lib/common/host-info.js +37 -50
  81. package/lib/common/http-client.js +93 -108
  82. package/lib/common/logger/appenders/cli-appender.js +1 -2
  83. package/lib/common/logger/appenders/emit-appender.js +1 -2
  84. package/lib/common/logger/layouts/cli-layout.js +1 -2
  85. package/lib/common/logger/logger.js +1 -1
  86. package/lib/common/mobile/android/android-application-manager.js +121 -142
  87. package/lib/common/mobile/android/android-debug-bridge-result-handler.js +1 -1
  88. package/lib/common/mobile/android/android-debug-bridge.js +87 -112
  89. package/lib/common/mobile/android/android-device-file-system.js +98 -131
  90. package/lib/common/mobile/android/android-device-hash-service.js +50 -75
  91. package/lib/common/mobile/android/android-device.js +74 -91
  92. package/lib/common/mobile/android/android-emulator-services.js +105 -130
  93. package/lib/common/mobile/android/android-log-filter.js +1 -1
  94. package/lib/common/mobile/android/android-virtual-device-service.js +76 -97
  95. package/lib/common/mobile/android/device-android-debug-bridge.js +13 -29
  96. package/lib/common/mobile/android/genymotion/genymotion-service.js +91 -118
  97. package/lib/common/mobile/android/genymotion/virtualbox-service.js +64 -81
  98. package/lib/common/mobile/android/logcat-helper.js +108 -127
  99. package/lib/common/mobile/application-manager-base.js +84 -107
  100. package/lib/common/mobile/device-log-provider-base.js +7 -18
  101. package/lib/common/mobile/ios/device/ios-application-manager.js +79 -108
  102. package/lib/common/mobile/ios/device/ios-device-file-system.js +78 -105
  103. package/lib/common/mobile/ios/device/ios-device-operations.js +105 -142
  104. package/lib/common/mobile/ios/device/ios-device.js +20 -36
  105. package/lib/common/mobile/ios/ios-device-base.js +58 -81
  106. package/lib/common/mobile/ios/simulator/ios-emulator-services.js +63 -92
  107. package/lib/common/mobile/ios/simulator/ios-sim-resolver.js +1 -1
  108. package/lib/common/mobile/ios/simulator/ios-simulator-application-manager.js +60 -89
  109. package/lib/common/mobile/ios/simulator/ios-simulator-device.js +27 -43
  110. package/lib/common/mobile/ios/simulator/ios-simulator-file-system.js +37 -62
  111. package/lib/common/mobile/ios/simulator/ios-simulator-log-provider.js +24 -35
  112. package/lib/common/mobile/mobile-core/android-device-discovery.js +43 -62
  113. package/lib/common/mobile/mobile-core/android-emulator-discovery.js +21 -32
  114. package/lib/common/mobile/mobile-core/android-process-service.js +143 -182
  115. package/lib/common/mobile/mobile-core/device-discovery.js +2 -13
  116. package/lib/common/mobile/mobile-core/devices-service.js +385 -436
  117. package/lib/common/mobile/mobile-core/ios-device-discovery.js +24 -35
  118. package/lib/common/mobile/mobile-core/ios-simulator-discovery.js +47 -62
  119. package/lib/common/mobile/mobile-helper.js +15 -26
  120. package/lib/common/mobile/wp8/wp8-emulator-services.js +25 -52
  121. package/lib/common/opener.js +2 -2
  122. package/lib/common/plist-parser.js +3 -3
  123. package/lib/common/prompter.js +90 -105
  124. package/lib/common/queue.js +9 -20
  125. package/lib/common/services/auto-completion-service.js +39 -52
  126. package/lib/common/services/cancellation.js +17 -28
  127. package/lib/common/services/commands-service.js +146 -169
  128. package/lib/common/services/help-service.js +132 -157
  129. package/lib/common/services/hooks-service.js +93 -108
  130. package/lib/common/services/ios-notification-service.js +21 -34
  131. package/lib/common/services/json-file-settings-service.js +52 -71
  132. package/lib/common/services/lock-service.js +35 -52
  133. package/lib/common/services/message-contract-generator.js +35 -46
  134. package/lib/common/services/micro-templating-service.js +4 -15
  135. package/lib/common/services/net-service.js +90 -107
  136. package/lib/common/services/project-files-manager.js +10 -23
  137. package/lib/common/services/proxy-service.js +13 -24
  138. package/lib/common/services/qr.js +13 -24
  139. package/lib/common/services/settings-service.js +1 -1
  140. package/lib/common/services/xcode-select-service.js +20 -35
  141. package/lib/common/utils.js +2 -2
  142. package/lib/common/validators/project-name-validator.js +1 -1
  143. package/lib/common/validators/validation-result.js +1 -1
  144. package/lib/common/verify-node-version.js +2 -3
  145. package/lib/common/yok.js +23 -36
  146. package/lib/config.js +7 -58
  147. package/lib/constants.js +24 -24
  148. package/lib/controllers/build-controller.js +82 -99
  149. package/lib/controllers/debug-controller.js +107 -128
  150. package/lib/controllers/deploy-controller.js +17 -22
  151. package/lib/controllers/migrate-controller.js +722 -795
  152. package/lib/controllers/platform-controller.js +72 -87
  153. package/lib/controllers/prepare-controller.js +266 -299
  154. package/lib/controllers/run-controller.js +392 -406
  155. package/lib/controllers/update-controller-base.js +16 -29
  156. package/lib/controllers/update-controller.js +94 -119
  157. package/lib/data/prepare-data.js +4 -1
  158. package/lib/definitions/ios-debugger-port-service.d.ts +1 -1
  159. package/lib/definitions/livesync.d.ts +1 -1
  160. package/lib/detached-processes/cleanup-js-subprocess.js +3 -12
  161. package/lib/detached-processes/cleanup-process.js +16 -25
  162. package/lib/device-path-provider.js +23 -34
  163. package/lib/device-sockets/ios/app-debug-socket-proxy-factory.js +149 -164
  164. package/lib/device-sockets/ios/notification.js +1 -1
  165. package/lib/device-sockets/ios/socket-request-executor.js +24 -39
  166. package/lib/helpers/android-bundle-validator-helper.js +1 -1
  167. package/lib/helpers/deploy-command-helper.js +45 -49
  168. package/lib/helpers/key-command-helper.js +4 -13
  169. package/lib/helpers/livesync-command-helper.js +137 -152
  170. package/lib/helpers/network-connectivity-validator.js +6 -17
  171. package/lib/helpers/options-track-helper.js +6 -17
  172. package/lib/helpers/platform-command-helper.js +99 -120
  173. package/lib/key-commands/index.js +161 -211
  174. package/lib/nativescript-cli.js +5 -14
  175. package/lib/node-package-manager.js +81 -104
  176. package/lib/options.js +3 -12
  177. package/lib/package-installation-manager.js +130 -165
  178. package/lib/package-manager.js +63 -86
  179. package/lib/platform-command-param.js +4 -15
  180. package/lib/pnpm-package-manager.js +59 -78
  181. package/lib/project-data.js +1 -1
  182. package/lib/providers/project-files-provider.js +1 -1
  183. package/lib/services/analytics/analytics-broker-process.js +13 -22
  184. package/lib/services/analytics/analytics-broker.js +17 -30
  185. package/lib/services/analytics/analytics-service.js +161 -198
  186. package/lib/services/analytics/google-analytics-provider.js +41 -56
  187. package/lib/services/analytics-settings-service.js +15 -32
  188. package/lib/services/android/android-bundle-tool-service.js +43 -60
  189. package/lib/services/android/gradle-build-args-service.js +9 -20
  190. package/lib/services/android/gradle-build-service.js +34 -47
  191. package/lib/services/android/gradle-command-service.js +22 -35
  192. package/lib/services/android-device-debug-service.js +90 -117
  193. package/lib/services/android-plugin-build-service.js +230 -256
  194. package/lib/services/android-project-service.js +163 -199
  195. package/lib/services/android-resources-migration-service.js +51 -64
  196. package/lib/services/apple-portal/apple-portal-application-service.js +46 -63
  197. package/lib/services/apple-portal/apple-portal-session-service.js +171 -188
  198. package/lib/services/assets-generation/assets-generation-service.js +98 -115
  199. package/lib/services/build-artifacts-service.js +9 -20
  200. package/lib/services/build-info-file-service.js +20 -35
  201. package/lib/services/cleanup-service.js +47 -76
  202. package/lib/services/cocoapods-service.js +115 -136
  203. package/lib/services/device/device-install-app-service.js +73 -90
  204. package/lib/services/doctor-service.js +99 -118
  205. package/lib/services/extensibility-service.js +81 -100
  206. package/lib/services/files-hash-service.js +26 -43
  207. package/lib/services/hmr-status-service.js +1 -1
  208. package/lib/services/initialize-service.js +37 -50
  209. package/lib/services/ios/export-options-plist-service.js +38 -51
  210. package/lib/services/ios/ios-signing-service.js +161 -180
  211. package/lib/services/ios/spm-service.js +40 -53
  212. package/lib/services/ios/xcodebuild-args-service.js +77 -94
  213. package/lib/services/ios/xcodebuild-command-service.js +14 -25
  214. package/lib/services/ios/xcodebuild-service.js +50 -69
  215. package/lib/services/ios-debugger-port-service.js +23 -36
  216. package/lib/services/ios-device-debug-service.js +75 -102
  217. package/lib/services/ios-entitlements-service.js +31 -42
  218. package/lib/services/ios-extensions-service.js +18 -29
  219. package/lib/services/ios-project-service.js +405 -460
  220. package/lib/services/ios-provision-service.js +108 -129
  221. package/lib/services/ios-watch-app-service.js +21 -32
  222. package/lib/services/ip-service.js +38 -53
  223. package/lib/services/itmstransporter-service.js +129 -152
  224. package/lib/services/livesync/android-device-livesync-service-base.js +31 -48
  225. package/lib/services/livesync/android-device-livesync-service.js +120 -149
  226. package/lib/services/livesync/android-device-livesync-sockets-service.js +121 -152
  227. package/lib/services/livesync/android-livesync-service.js +14 -35
  228. package/lib/services/livesync/android-livesync-tool.js +89 -112
  229. package/lib/services/livesync/device-livesync-service-base.js +15 -28
  230. package/lib/services/livesync/ios-device-livesync-service.js +114 -143
  231. package/lib/services/livesync/ios-livesync-service.js +42 -58
  232. package/lib/services/livesync/platform-livesync-service-base.js +94 -119
  233. package/lib/services/log-parser-service.js +1 -1
  234. package/lib/services/log-source-map-service.js +30 -41
  235. package/lib/services/marking-mode-service.js +15 -28
  236. package/lib/services/npm-config-service.js +1 -1
  237. package/lib/services/pacote-service.js +49 -64
  238. package/lib/services/performance-service.js +1 -1
  239. package/lib/services/platform/add-platform-service.js +50 -71
  240. package/lib/services/platform/platform-validation-service.js +22 -33
  241. package/lib/services/platform/prepare-native-platform-service.js +49 -62
  242. package/lib/services/platform-environment-requirements.js +26 -37
  243. package/lib/services/plugins-service.js +122 -147
  244. package/lib/services/project-backup-service.js +1 -1
  245. package/lib/services/project-changes-service.js +124 -141
  246. package/lib/services/project-cleanup-service.js +64 -77
  247. package/lib/services/project-config-service.js +71 -80
  248. package/lib/services/project-data-service.js +101 -118
  249. package/lib/services/project-name-service.js +28 -43
  250. package/lib/services/project-service.js +84 -103
  251. package/lib/services/project-templates-service.js +52 -67
  252. package/lib/services/start-service.js +41 -59
  253. package/lib/services/temp-service.js +8 -21
  254. package/lib/services/terminal-spinner-service.js +13 -24
  255. package/lib/services/test-execution-service.js +59 -72
  256. package/lib/services/test-initialization-service.js +2 -2
  257. package/lib/services/timeline-profiler-service.js +1 -1
  258. package/lib/services/versions-service.js +119 -138
  259. package/lib/services/webpack/webpack-compiler-service.js +211 -231
  260. package/lib/services/xcconfig-service.js +8 -19
  261. package/lib/sys-info.js +45 -62
  262. package/lib/tools/node-modules/node-modules-builder.js +16 -27
  263. package/lib/yarn-package-manager.js +59 -78
  264. package/lib/yarn2-package-manager.js +60 -79
  265. package/package.json +56 -54
  266. package/vendor/aab-tool/bundletool.jar +0 -0
  267. package/lib/common/resources/platform-tools/android/darwin/NOTICE.txt +0 -3407
  268. package/lib/common/resources/platform-tools/android/darwin/adb +0 -0
  269. package/lib/common/resources/platform-tools/android/linux/NOTICE.txt +0 -4451
  270. package/lib/common/resources/platform-tools/android/linux/adb +0 -0
  271. package/lib/common/resources/platform-tools/android/win32/AdbWinApi.dll +0 -0
  272. package/lib/common/resources/platform-tools/android/win32/AdbWinUsbApi.dll +0 -0
  273. package/lib/common/resources/platform-tools/android/win32/NOTICE.txt +0 -4451
  274. package/lib/common/resources/platform-tools/android/win32/adb.exe +0 -0
  275. 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.ApplePortalApplicationService = void 0;
13
4
  const yok_1 = require("../../common/yok");
@@ -18,64 +9,56 @@ class ApplePortalApplicationService {
18
9
  this.$errors = $errors;
19
10
  this.$httpClient = $httpClient;
20
11
  }
21
- getApplications(user) {
22
- return __awaiter(this, void 0, void 0, function* () {
23
- let result = [];
24
- for (const account of user.associatedAccounts) {
25
- const contentProviderId = account.contentProvider.contentProviderId;
26
- const applications = yield this.getApplicationsByProvider(contentProviderId);
27
- result = result.concat(applications.summaries);
28
- }
29
- return result;
30
- });
12
+ async getApplications(user) {
13
+ let result = [];
14
+ for (const account of user.associatedAccounts) {
15
+ const contentProviderId = account.contentProvider.contentProviderId;
16
+ const applications = await this.getApplicationsByProvider(contentProviderId);
17
+ result = result.concat(applications.summaries);
18
+ }
19
+ return result;
31
20
  }
32
- getApplicationsByProvider(contentProviderId) {
33
- return __awaiter(this, void 0, void 0, function* () {
34
- const webSessionCookie = yield this.$applePortalSessionService.createWebSession(contentProviderId);
35
- const summaries = [];
36
- yield this.getApplicationsByUrl(webSessionCookie, "https://appstoreconnect.apple.com/iris/v1/apps?include=appStoreVersions,prices", summaries);
37
- return { summaries: summaries };
38
- });
21
+ async getApplicationsByProvider(contentProviderId) {
22
+ const webSessionCookie = await this.$applePortalSessionService.createWebSession(contentProviderId);
23
+ const summaries = [];
24
+ await this.getApplicationsByUrl(webSessionCookie, "https://appstoreconnect.apple.com/iris/v1/apps?include=appStoreVersions,prices", summaries);
25
+ return { summaries: summaries };
39
26
  }
40
- getApplicationsByUrl(webSessionCookie, url, summaries) {
41
- return __awaiter(this, void 0, void 0, function* () {
42
- const response = yield this.$httpClient.httpRequest({
43
- url,
44
- method: "GET",
45
- headers: {
46
- "Content-Type": "application/json",
47
- Cookie: webSessionCookie,
48
- },
49
- });
50
- const result = JSON.parse(response.body);
51
- const data = result.data;
52
- for (const app of data) {
53
- let summary;
54
- summary = {
55
- bundleId: app.attributes.bundleId,
56
- adamId: app.id,
57
- name: app.attributes.name,
58
- versionSets: [],
59
- };
60
- summaries.push(summary);
61
- }
62
- if (result.links.next) {
63
- yield this.getApplicationsByUrl(webSessionCookie, result.links.next, summaries);
64
- }
27
+ async getApplicationsByUrl(webSessionCookie, url, summaries) {
28
+ const response = await this.$httpClient.httpRequest({
29
+ url,
30
+ method: "GET",
31
+ headers: {
32
+ "Content-Type": "application/json",
33
+ Cookie: webSessionCookie,
34
+ },
65
35
  });
36
+ const result = JSON.parse(response.body);
37
+ const data = result.data;
38
+ for (const app of data) {
39
+ let summary;
40
+ summary = {
41
+ bundleId: app.attributes.bundleId,
42
+ adamId: app.id,
43
+ name: app.attributes.name,
44
+ versionSets: [],
45
+ };
46
+ summaries.push(summary);
47
+ }
48
+ if (result.links.next) {
49
+ await this.getApplicationsByUrl(webSessionCookie, result.links.next, summaries);
50
+ }
66
51
  }
67
- getApplicationByBundleId(user, bundleId) {
68
- return __awaiter(this, void 0, void 0, function* () {
69
- const applications = yield this.getApplications(user);
70
- if (!applications || !applications.length) {
71
- this.$errors.fail(`Cannot find any registered applications for Apple ID ${user.userName} in iTunes Connect.`);
72
- }
73
- const application = _.find(applications, (app) => app.bundleId === bundleId);
74
- if (!application) {
75
- this.$errors.fail(`Cannot find registered applications that match the specified identifier ${bundleId} in iTunes Connect.`);
76
- }
77
- return application;
78
- });
52
+ async getApplicationByBundleId(user, bundleId) {
53
+ const applications = await this.getApplications(user);
54
+ if (!applications || !applications.length) {
55
+ this.$errors.fail(`Cannot find any registered applications for Apple ID ${user.userName} in iTunes Connect.`);
56
+ }
57
+ const application = _.find(applications, (app) => app.bundleId === bundleId);
58
+ if (!application) {
59
+ this.$errors.fail(`Cannot find registered applications that match the specified identifier ${bundleId} in iTunes Connect.`);
60
+ }
61
+ return application;
79
62
  }
80
63
  }
81
64
  exports.ApplePortalApplicationService = ApplePortalApplicationService;
@@ -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.ApplePortalSessionService = void 0;
13
4
  const helpers_1 = require("../../common/helpers");
@@ -26,213 +17,205 @@ class ApplePortalSessionService {
26
17
  authServiceKey: "e0b80c3bf78523bfe80974d320935bfa30add02e1bff88ec2166c6bd5a706c42",
27
18
  };
28
19
  }
29
- createUserSession(credentials, opts) {
30
- return __awaiter(this, void 0, void 0, function* () {
31
- const loginResult = yield this.login(credentials, opts);
32
- if (!opts || !opts.sessionBase64) {
33
- if (loginResult.isTwoFactorAuthenticationEnabled) {
34
- const authServiceKey = (yield this.getLoginConfig()).authServiceKey;
35
- yield this.handleTwoFactorAuthentication(loginResult.scnt, loginResult.xAppleIdSessionId, authServiceKey, loginResult.hashcash);
36
- }
37
- const sessionResponse = yield this.$httpClient.httpRequest({
38
- url: "https://appstoreconnect.apple.com/olympus/v1/session",
39
- method: "GET",
40
- headers: {
41
- Cookie: this.$applePortalCookieService.getUserSessionCookie(),
42
- },
43
- });
44
- this.$applePortalCookieService.updateUserSessionCookie(sessionResponse.headers["set-cookie"]);
20
+ async createUserSession(credentials, opts) {
21
+ const loginResult = await this.login(credentials, opts);
22
+ if (!opts || !opts.sessionBase64) {
23
+ if (loginResult.isTwoFactorAuthenticationEnabled) {
24
+ const authServiceKey = (await this.getLoginConfig()).authServiceKey;
25
+ await this.handleTwoFactorAuthentication(loginResult.scnt, loginResult.xAppleIdSessionId, authServiceKey, loginResult.hashcash);
45
26
  }
46
- const userDetailsResponse = yield this.$httpClient.httpRequest({
47
- url: "https://appstoreconnect.apple.com/WebObjects/iTunesConnect.woa/ra/user/detail",
27
+ const sessionResponse = await this.$httpClient.httpRequest({
28
+ url: "https://appstoreconnect.apple.com/olympus/v1/session",
48
29
  method: "GET",
49
30
  headers: {
50
- "Content-Type": "application/json",
51
31
  Cookie: this.$applePortalCookieService.getUserSessionCookie(),
52
32
  },
53
33
  });
54
- this.$applePortalCookieService.updateUserSessionCookie(userDetailsResponse.headers["set-cookie"]);
55
- const userdDetails = JSON.parse(userDetailsResponse.body).data;
56
- const result = Object.assign(Object.assign(Object.assign({}, userdDetails), loginResult), { userSessionCookie: this.$applePortalCookieService.getUserSessionCookie() });
57
- return result;
34
+ this.$applePortalCookieService.updateUserSessionCookie(sessionResponse.headers["set-cookie"]);
35
+ }
36
+ const userDetailsResponse = await this.$httpClient.httpRequest({
37
+ url: "https://appstoreconnect.apple.com/WebObjects/iTunesConnect.woa/ra/user/detail",
38
+ method: "GET",
39
+ headers: {
40
+ "Content-Type": "application/json",
41
+ Cookie: this.$applePortalCookieService.getUserSessionCookie(),
42
+ },
58
43
  });
44
+ this.$applePortalCookieService.updateUserSessionCookie(userDetailsResponse.headers["set-cookie"]);
45
+ const userdDetails = JSON.parse(userDetailsResponse.body).data;
46
+ const result = {
47
+ ...userdDetails,
48
+ ...loginResult,
49
+ userSessionCookie: this.$applePortalCookieService.getUserSessionCookie(),
50
+ };
51
+ return result;
59
52
  }
60
- createWebSession(contentProviderId) {
61
- return __awaiter(this, void 0, void 0, function* () {
62
- const webSessionResponse = yield this.$httpClient.httpRequest({
63
- url: "https://appstoreconnect.apple.com/olympus/v1/session",
64
- method: "POST",
65
- body: {
66
- provider: {
67
- providerId: contentProviderId,
68
- },
53
+ async createWebSession(contentProviderId) {
54
+ const webSessionResponse = await this.$httpClient.httpRequest({
55
+ url: "https://appstoreconnect.apple.com/olympus/v1/session",
56
+ method: "POST",
57
+ body: {
58
+ provider: {
59
+ providerId: contentProviderId,
69
60
  },
70
- headers: {
71
- Accept: "application/json, text/plain, */*",
72
- "Accept-Encoding": "gzip, deflate, br",
73
- "X-Csrf-Itc": "itc",
74
- "Content-Type": "application/json;charset=UTF-8",
75
- "X-Requested-With": "olympus-ui",
76
- Cookie: this.$applePortalCookieService.getUserSessionCookie(),
77
- },
78
- });
79
- const webSessionCookie = this.$applePortalCookieService.getWebSessionCookie(webSessionResponse.headers["set-cookie"]);
80
- return webSessionCookie;
61
+ },
62
+ headers: {
63
+ Accept: "application/json, text/plain, */*",
64
+ "Accept-Encoding": "gzip, deflate, br",
65
+ "X-Csrf-Itc": "itc",
66
+ "Content-Type": "application/json;charset=UTF-8",
67
+ "X-Requested-With": "olympus-ui",
68
+ Cookie: this.$applePortalCookieService.getUserSessionCookie(),
69
+ },
81
70
  });
71
+ const webSessionCookie = this.$applePortalCookieService.getWebSessionCookie(webSessionResponse.headers["set-cookie"]);
72
+ return webSessionCookie;
82
73
  }
83
- login(credentials, opts) {
74
+ async login(credentials, opts) {
84
75
  var _a, _b;
85
- return __awaiter(this, void 0, void 0, function* () {
86
- const result = {
87
- scnt: null,
88
- xAppleIdSessionId: null,
89
- isTwoFactorAuthenticationEnabled: false,
90
- areCredentialsValid: true,
91
- hashcash: null,
92
- };
93
- if (opts && opts.sessionBase64) {
94
- const decodedSession = Buffer.from(opts.sessionBase64, "base64").toString("utf8");
95
- this.$applePortalCookieService.updateUserSessionCookie([decodedSession]);
96
- result.isTwoFactorAuthenticationEnabled =
97
- decodedSession.indexOf("DES") > -1;
76
+ const result = {
77
+ scnt: null,
78
+ xAppleIdSessionId: null,
79
+ isTwoFactorAuthenticationEnabled: false,
80
+ areCredentialsValid: true,
81
+ hashcash: null,
82
+ };
83
+ if (opts && opts.sessionBase64) {
84
+ const decodedSession = Buffer.from(opts.sessionBase64, "base64").toString("utf8");
85
+ this.$applePortalCookieService.updateUserSessionCookie([decodedSession]);
86
+ result.isTwoFactorAuthenticationEnabled =
87
+ decodedSession.indexOf("DES") > -1;
88
+ }
89
+ else {
90
+ try {
91
+ await this.loginCore(credentials);
98
92
  }
99
- else {
100
- try {
101
- yield this.loginCore(credentials);
102
- }
103
- catch (err) {
104
- const statusCode = err && err.response && err.response.status;
105
- const bits = (_a = err === null || err === void 0 ? void 0 : err.response) === null || _a === void 0 ? void 0 : _a.headers["x-apple-hc-bits"];
106
- const challenge = (_b = err === null || err === void 0 ? void 0 : err.response) === null || _b === void 0 ? void 0 : _b.headers["x-apple-hc-challenge"];
107
- const hashcash = makeHashCash(bits, challenge);
108
- result.hashcash = hashcash;
109
- result.areCredentialsValid = statusCode !== 401 && statusCode !== 403;
110
- result.isTwoFactorAuthenticationEnabled = statusCode === 409;
111
- if (result.isTwoFactorAuthenticationEnabled &&
112
- opts &&
113
- opts.requireApplicationSpecificPassword &&
114
- !opts.applicationSpecificPassword) {
115
- this.$errors
116
- .fail(`Your account has two-factor authentication enabled but --appleApplicationSpecificPassword option is not provided.
93
+ catch (err) {
94
+ const statusCode = err && err.response && err.response.status;
95
+ const bits = (_a = err === null || err === void 0 ? void 0 : err.response) === null || _a === void 0 ? void 0 : _a.headers["x-apple-hc-bits"];
96
+ const challenge = (_b = err === null || err === void 0 ? void 0 : err.response) === null || _b === void 0 ? void 0 : _b.headers["x-apple-hc-challenge"];
97
+ const hashcash = makeHashCash(bits, challenge);
98
+ result.hashcash = hashcash;
99
+ result.areCredentialsValid = statusCode !== 401 && statusCode !== 403;
100
+ result.isTwoFactorAuthenticationEnabled = statusCode === 409;
101
+ if (result.isTwoFactorAuthenticationEnabled &&
102
+ opts &&
103
+ opts.requireApplicationSpecificPassword &&
104
+ !opts.applicationSpecificPassword) {
105
+ this.$errors
106
+ .fail(`Your account has two-factor authentication enabled but --appleApplicationSpecificPassword option is not provided.
117
107
  To generate an application-specific password, please go to https://appleid.apple.com/account/manage.
118
108
  This password will be used for the iTunes Transporter, which is used to upload your application.`);
119
- }
120
- if (result.isTwoFactorAuthenticationEnabled &&
121
- opts &&
122
- opts.requireInteractiveConsole &&
123
- !(0, helpers_1.isInteractive)()) {
124
- this.$errors
125
- .fail(`Your account has two-factor authentication enabled, but your console is not interactive.
109
+ }
110
+ if (result.isTwoFactorAuthenticationEnabled &&
111
+ opts &&
112
+ opts.requireInteractiveConsole &&
113
+ !(0, helpers_1.isInteractive)()) {
114
+ this.$errors
115
+ .fail(`Your account has two-factor authentication enabled, but your console is not interactive.
126
116
  For more details how to set up your environment, please execute "ns publish ios --help".`);
127
- }
128
- const headers = (err && err.response && err.response.headers) || {};
129
- result.scnt = headers.scnt;
130
- result.xAppleIdSessionId = headers["x-apple-id-session-id"];
131
117
  }
118
+ const headers = (err && err.response && err.response.headers) || {};
119
+ result.scnt = headers.scnt;
120
+ result.xAppleIdSessionId = headers["x-apple-id-session-id"];
132
121
  }
133
- return result;
122
+ }
123
+ return result;
124
+ }
125
+ async loginCore(credentials) {
126
+ const loginConfig = await this.getLoginConfig();
127
+ const loginUrl = `${loginConfig.authServiceUrl}/auth/signin`;
128
+ const headers = {
129
+ "Content-Type": "application/json",
130
+ "X-Requested-With": "XMLHttpRequest",
131
+ "X-Apple-Widget-Key": loginConfig.authServiceKey,
132
+ Accept: "application/json, text/javascript",
133
+ };
134
+ const body = {
135
+ accountName: credentials.username,
136
+ password: credentials.password,
137
+ rememberMe: true,
138
+ };
139
+ const loginResponse = await this.$httpClient.httpRequest({
140
+ url: loginUrl,
141
+ method: "POST",
142
+ body,
143
+ headers,
134
144
  });
145
+ this.$applePortalCookieService.updateUserSessionCookie(loginResponse.headers["set-cookie"]);
135
146
  }
136
- loginCore(credentials) {
137
- return __awaiter(this, void 0, void 0, function* () {
138
- const loginConfig = yield this.getLoginConfig();
139
- const loginUrl = `${loginConfig.authServiceUrl}/auth/signin`;
140
- const headers = {
141
- "Content-Type": "application/json",
142
- "X-Requested-With": "XMLHttpRequest",
143
- "X-Apple-Widget-Key": loginConfig.authServiceKey,
144
- Accept: "application/json, text/javascript",
145
- };
147
+ async getLoginConfig() {
148
+ let config = null;
149
+ try {
150
+ const response = await this.$httpClient.httpRequest({
151
+ url: this.loginConfigEndpoint,
152
+ method: "GET",
153
+ });
154
+ config = JSON.parse(response.body);
155
+ }
156
+ catch (err) {
157
+ this.$logger.trace(`Error while executing request to ${this.loginConfigEndpoint}. More info: ${err}`);
158
+ }
159
+ return config || this.defaultLoginConfig;
160
+ }
161
+ async handleTwoFactorAuthentication(scnt, xAppleIdSessionId, authServiceKey, hashcash) {
162
+ const headers = {
163
+ scnt: scnt,
164
+ "X-Apple-Id-Session-Id": xAppleIdSessionId,
165
+ "X-Apple-Widget-Key": authServiceKey,
166
+ "X-Apple-HC": hashcash,
167
+ Accept: "application/json",
168
+ };
169
+ const authResponse = await this.$httpClient.httpRequest({
170
+ url: "https://idmsa.apple.com/appleauth/auth",
171
+ method: "GET",
172
+ headers,
173
+ });
174
+ const data = JSON.parse(authResponse.body);
175
+ const isSMS = data.trustedPhoneNumbers &&
176
+ data.trustedPhoneNumbers.length === 1 &&
177
+ data.noTrustedDevices;
178
+ const multiSMS = data.trustedPhoneNumbers &&
179
+ data.trustedPhoneNumbers.length !== 1 &&
180
+ data.noTrustedDevices;
181
+ let token;
182
+ if (data.trustedPhoneNumbers &&
183
+ data.trustedPhoneNumbers.length &&
184
+ !multiSMS) {
185
+ const parsedAuthResponse = JSON.parse(authResponse.body);
186
+ token = await this.$prompter.getString(`Please enter the ${parsedAuthResponse.securityCode.length} digit code`, { allowEmpty: false });
146
187
  const body = {
147
- accountName: credentials.username,
148
- password: credentials.password,
149
- rememberMe: true,
188
+ securityCode: {
189
+ code: token.toString(),
190
+ },
150
191
  };
151
- const loginResponse = yield this.$httpClient.httpRequest({
152
- url: loginUrl,
192
+ let url = `https://idmsa.apple.com/appleauth/auth/verify/trusteddevice/securitycode`;
193
+ if (isSMS) {
194
+ body.mode = "sms";
195
+ body.phoneNumber = {
196
+ id: data.trustedPhoneNumbers[0].id,
197
+ };
198
+ url = `https://idmsa.apple.com/appleauth/auth/verify/phone/securitycode`;
199
+ }
200
+ await this.$httpClient.httpRequest({
201
+ url,
153
202
  method: "POST",
154
203
  body,
155
- headers,
204
+ headers: { ...headers, "Content-Type": "application/json" },
156
205
  });
157
- this.$applePortalCookieService.updateUserSessionCookie(loginResponse.headers["set-cookie"]);
158
- });
159
- }
160
- getLoginConfig() {
161
- return __awaiter(this, void 0, void 0, function* () {
162
- let config = null;
163
- try {
164
- const response = yield this.$httpClient.httpRequest({
165
- url: this.loginConfigEndpoint,
166
- method: "GET",
167
- });
168
- config = JSON.parse(response.body);
169
- }
170
- catch (err) {
171
- this.$logger.trace(`Error while executing request to ${this.loginConfigEndpoint}. More info: ${err}`);
172
- }
173
- return config || this.defaultLoginConfig;
174
- });
175
- }
176
- handleTwoFactorAuthentication(scnt, xAppleIdSessionId, authServiceKey, hashcash) {
177
- return __awaiter(this, void 0, void 0, function* () {
178
- const headers = {
179
- scnt: scnt,
180
- "X-Apple-Id-Session-Id": xAppleIdSessionId,
181
- "X-Apple-Widget-Key": authServiceKey,
182
- "X-Apple-HC": hashcash,
183
- Accept: "application/json",
184
- };
185
- const authResponse = yield this.$httpClient.httpRequest({
186
- url: "https://idmsa.apple.com/appleauth/auth",
206
+ const authTrustResponse = await this.$httpClient.httpRequest({
207
+ url: "https://idmsa.apple.com/appleauth/auth/2sv/trust",
187
208
  method: "GET",
188
209
  headers,
189
210
  });
190
- const data = JSON.parse(authResponse.body);
191
- const isSMS = data.trustedPhoneNumbers &&
192
- data.trustedPhoneNumbers.length === 1 &&
193
- data.noTrustedDevices;
194
- const multiSMS = data.trustedPhoneNumbers &&
195
- data.trustedPhoneNumbers.length !== 1 &&
196
- data.noTrustedDevices;
197
- let token;
198
- if (data.trustedPhoneNumbers &&
199
- data.trustedPhoneNumbers.length &&
200
- !multiSMS) {
201
- const parsedAuthResponse = JSON.parse(authResponse.body);
202
- token = yield this.$prompter.getString(`Please enter the ${parsedAuthResponse.securityCode.length} digit code`, { allowEmpty: false });
203
- const body = {
204
- securityCode: {
205
- code: token.toString(),
206
- },
207
- };
208
- let url = `https://idmsa.apple.com/appleauth/auth/verify/trusteddevice/securitycode`;
209
- if (isSMS) {
210
- body.mode = "sms";
211
- body.phoneNumber = {
212
- id: data.trustedPhoneNumbers[0].id,
213
- };
214
- url = `https://idmsa.apple.com/appleauth/auth/verify/phone/securitycode`;
215
- }
216
- yield this.$httpClient.httpRequest({
217
- url,
218
- method: "POST",
219
- body,
220
- headers: Object.assign(Object.assign({}, headers), { "Content-Type": "application/json" }),
221
- });
222
- const authTrustResponse = yield this.$httpClient.httpRequest({
223
- url: "https://idmsa.apple.com/appleauth/auth/2sv/trust",
224
- method: "GET",
225
- headers,
226
- });
227
- this.$applePortalCookieService.updateUserSessionCookie(authTrustResponse.headers["set-cookie"]);
228
- }
229
- else if (multiSMS) {
230
- this.$errors.fail(`The NativeScript CLI does not support SMS authenticaton with multiple registered phone numbers.`);
231
- }
232
- else {
233
- this.$errors.fail(`Although response from Apple indicated activated Two-step Verification or Two-factor Authentication, NativeScript CLI don't know how to handle this response: ${data}`);
234
- }
235
- });
211
+ this.$applePortalCookieService.updateUserSessionCookie(authTrustResponse.headers["set-cookie"]);
212
+ }
213
+ else if (multiSMS) {
214
+ this.$errors.fail(`The NativeScript CLI does not support SMS authenticaton with multiple registered phone numbers.`);
215
+ }
216
+ else {
217
+ this.$errors.fail(`Although response from Apple indicated activated Two-step Verification or Two-factor Authentication, NativeScript CLI don't know how to handle this response: ${data}`);
218
+ }
236
219
  }
237
220
  }
238
221
  exports.ApplePortalSessionService = ApplePortalSessionService;