@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.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;