@akylas/nativescript-cli 8.8.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.
- package/lib/android-tools-info.js +9 -20
- package/lib/base-package-manager.js +47 -64
- package/lib/bun-package-manager.js +65 -88
- package/lib/color.js +2 -2
- package/lib/commands/add-platform.js +14 -30
- package/lib/commands/apple-login.js +18 -29
- package/lib/commands/appstore-list.js +34 -45
- package/lib/commands/appstore-upload.js +55 -68
- package/lib/commands/build.js +57 -86
- package/lib/commands/clean.js +161 -176
- package/lib/commands/command-base.js +14 -27
- package/lib/commands/config.js +51 -70
- package/lib/commands/create-project.js +210 -229
- package/lib/commands/debug.js +66 -88
- package/lib/commands/deploy.js +28 -44
- package/lib/commands/embedding/embed.js +33 -52
- package/lib/commands/extensibility/install-extension.js +5 -16
- package/lib/commands/extensibility/list-extensions.js +13 -24
- package/lib/commands/extensibility/uninstall-extension.js +4 -15
- package/lib/commands/fonts.js +30 -41
- package/lib/commands/generate-assets.js +13 -28
- package/lib/commands/generate-help.js +2 -13
- package/lib/commands/generate.js +17 -26
- package/lib/commands/info.js +2 -13
- package/lib/commands/install.js +34 -49
- package/lib/commands/list-platforms.js +14 -25
- package/lib/commands/migrate.js +15 -26
- package/lib/commands/native-add.js +23 -46
- package/lib/commands/platform-clean.js +19 -32
- package/lib/commands/plugin/add-plugin.js +12 -25
- package/lib/commands/plugin/build-plugin.js +34 -39
- package/lib/commands/plugin/create-plugin.js +110 -133
- package/lib/commands/plugin/list-plugins.js +22 -33
- package/lib/commands/plugin/remove-plugin.js +20 -33
- package/lib/commands/plugin/update-plugin.js +20 -33
- package/lib/commands/post-install.js +20 -33
- package/lib/commands/prepare.js +19 -35
- package/lib/commands/preview.js +49 -62
- package/lib/commands/remove-platform.js +7 -18
- package/lib/commands/resources/resources-update.js +13 -26
- package/lib/commands/run.js +55 -76
- package/lib/commands/start.js +6 -19
- package/lib/commands/test-init.js +123 -134
- package/lib/commands/test.js +66 -89
- package/lib/commands/typings.js +126 -142
- package/lib/commands/update-platform.js +22 -35
- package/lib/commands/update.js +30 -43
- package/lib/common/child-process.js +53 -72
- package/lib/common/codeGeneration/code-entity.js +1 -1
- package/lib/common/codeGeneration/code-printer.js +1 -1
- package/lib/common/command-params.js +7 -18
- package/lib/common/commands/analytics.js +27 -40
- package/lib/common/commands/autocompletion.js +39 -56
- package/lib/common/commands/device/device-log-stream.js +12 -23
- package/lib/common/commands/device/get-file.js +22 -33
- package/lib/common/commands/device/list-applications.js +12 -23
- package/lib/common/commands/device/list-devices.js +72 -87
- package/lib/common/commands/device/list-files.js +23 -34
- package/lib/common/commands/device/put-file.js +22 -33
- package/lib/common/commands/device/run-application.js +12 -25
- package/lib/common/commands/device/stop-application.js +11 -22
- package/lib/common/commands/device/uninstall-application.js +6 -17
- package/lib/common/commands/generate-messages.js +17 -28
- package/lib/common/commands/help.js +20 -33
- package/lib/common/commands/package-manager-get.js +6 -17
- package/lib/common/commands/package-manager-set.js +9 -20
- package/lib/common/commands/post-install.js +2 -13
- package/lib/common/commands/preuninstall.js +23 -38
- package/lib/common/commands/proxy/proxy-base.js +8 -19
- package/lib/common/commands/proxy/proxy-clear.js +4 -15
- package/lib/common/commands/proxy/proxy-get.js +3 -14
- package/lib/common/commands/proxy/proxy-set.js +87 -100
- package/lib/common/constants.js +11 -11
- package/lib/common/decorators.js +10 -22
- package/lib/common/dispatchers.js +79 -96
- package/lib/common/errors.js +89 -104
- package/lib/common/file-system.js +106 -127
- package/lib/common/header.js +1 -2
- package/lib/common/helpers.js +149 -178
- package/lib/common/host-info.js +37 -50
- package/lib/common/http-client.js +93 -108
- package/lib/common/logger/appenders/cli-appender.js +1 -2
- package/lib/common/logger/appenders/emit-appender.js +1 -2
- package/lib/common/logger/layouts/cli-layout.js +1 -2
- package/lib/common/logger/logger.js +1 -1
- package/lib/common/mobile/android/android-application-manager.js +121 -142
- package/lib/common/mobile/android/android-debug-bridge-result-handler.js +1 -1
- package/lib/common/mobile/android/android-debug-bridge.js +87 -112
- package/lib/common/mobile/android/android-device-file-system.js +98 -131
- package/lib/common/mobile/android/android-device-hash-service.js +50 -75
- package/lib/common/mobile/android/android-device.js +74 -91
- package/lib/common/mobile/android/android-emulator-services.js +105 -130
- package/lib/common/mobile/android/android-log-filter.js +1 -1
- package/lib/common/mobile/android/android-virtual-device-service.js +76 -97
- package/lib/common/mobile/android/device-android-debug-bridge.js +13 -29
- package/lib/common/mobile/android/genymotion/genymotion-service.js +91 -118
- package/lib/common/mobile/android/genymotion/virtualbox-service.js +64 -81
- package/lib/common/mobile/android/logcat-helper.js +108 -127
- package/lib/common/mobile/application-manager-base.js +84 -107
- package/lib/common/mobile/device-log-provider-base.js +7 -18
- package/lib/common/mobile/ios/device/ios-application-manager.js +79 -108
- package/lib/common/mobile/ios/device/ios-device-file-system.js +78 -105
- package/lib/common/mobile/ios/device/ios-device-operations.js +105 -142
- package/lib/common/mobile/ios/device/ios-device.js +20 -36
- package/lib/common/mobile/ios/ios-device-base.js +58 -81
- package/lib/common/mobile/ios/simulator/ios-emulator-services.js +63 -92
- package/lib/common/mobile/ios/simulator/ios-sim-resolver.js +1 -1
- package/lib/common/mobile/ios/simulator/ios-simulator-application-manager.js +60 -89
- package/lib/common/mobile/ios/simulator/ios-simulator-device.js +27 -43
- package/lib/common/mobile/ios/simulator/ios-simulator-file-system.js +37 -62
- package/lib/common/mobile/ios/simulator/ios-simulator-log-provider.js +24 -35
- package/lib/common/mobile/mobile-core/android-device-discovery.js +43 -62
- package/lib/common/mobile/mobile-core/android-emulator-discovery.js +21 -32
- package/lib/common/mobile/mobile-core/android-process-service.js +143 -182
- package/lib/common/mobile/mobile-core/device-discovery.js +2 -13
- package/lib/common/mobile/mobile-core/devices-service.js +385 -436
- package/lib/common/mobile/mobile-core/ios-device-discovery.js +24 -35
- package/lib/common/mobile/mobile-core/ios-simulator-discovery.js +47 -62
- package/lib/common/mobile/mobile-helper.js +15 -26
- package/lib/common/mobile/wp8/wp8-emulator-services.js +25 -52
- package/lib/common/opener.js +2 -2
- package/lib/common/plist-parser.js +2 -2
- package/lib/common/prompter.js +90 -105
- package/lib/common/queue.js +9 -20
- package/lib/common/services/auto-completion-service.js +39 -52
- package/lib/common/services/cancellation.js +17 -28
- package/lib/common/services/commands-service.js +146 -169
- package/lib/common/services/help-service.js +132 -157
- package/lib/common/services/hooks-service.js +93 -108
- package/lib/common/services/ios-notification-service.js +21 -34
- package/lib/common/services/json-file-settings-service.js +52 -71
- package/lib/common/services/lock-service.js +35 -52
- package/lib/common/services/message-contract-generator.js +35 -46
- package/lib/common/services/micro-templating-service.js +4 -15
- package/lib/common/services/net-service.js +90 -107
- package/lib/common/services/project-files-manager.js +10 -23
- package/lib/common/services/proxy-service.js +13 -24
- package/lib/common/services/qr.js +13 -24
- package/lib/common/services/settings-service.js +1 -1
- package/lib/common/services/xcode-select-service.js +20 -35
- package/lib/common/utils.js +2 -2
- package/lib/common/validators/project-name-validator.js +1 -1
- package/lib/common/validators/validation-result.js +1 -1
- package/lib/common/verify-node-version.js +2 -3
- package/lib/common/yok.js +23 -36
- package/lib/config.js +7 -58
- package/lib/constants.js +24 -24
- package/lib/controllers/build-controller.js +82 -99
- package/lib/controllers/debug-controller.js +107 -128
- package/lib/controllers/deploy-controller.js +17 -22
- package/lib/controllers/migrate-controller.js +722 -795
- package/lib/controllers/platform-controller.js +72 -87
- package/lib/controllers/prepare-controller.js +266 -299
- package/lib/controllers/run-controller.js +392 -406
- package/lib/controllers/update-controller-base.js +16 -29
- package/lib/controllers/update-controller.js +94 -119
- package/lib/data/prepare-data.js +4 -1
- package/lib/definitions/ios-debugger-port-service.d.ts +1 -1
- package/lib/definitions/livesync.d.ts +1 -1
- package/lib/detached-processes/cleanup-js-subprocess.js +3 -12
- package/lib/detached-processes/cleanup-process.js +16 -25
- package/lib/device-path-provider.js +23 -34
- package/lib/device-sockets/ios/app-debug-socket-proxy-factory.js +149 -164
- package/lib/device-sockets/ios/notification.js +1 -1
- package/lib/device-sockets/ios/socket-request-executor.js +24 -39
- package/lib/helpers/android-bundle-validator-helper.js +1 -1
- package/lib/helpers/deploy-command-helper.js +45 -49
- package/lib/helpers/key-command-helper.js +4 -13
- package/lib/helpers/livesync-command-helper.js +137 -152
- package/lib/helpers/network-connectivity-validator.js +6 -17
- package/lib/helpers/options-track-helper.js +6 -17
- package/lib/helpers/platform-command-helper.js +99 -120
- package/lib/key-commands/index.js +161 -211
- package/lib/nativescript-cli.js +5 -14
- package/lib/node-package-manager.js +81 -104
- package/lib/options.js +3 -12
- package/lib/package-installation-manager.js +130 -165
- package/lib/package-manager.js +63 -86
- package/lib/platform-command-param.js +4 -15
- package/lib/pnpm-package-manager.js +59 -78
- package/lib/project-data.js +1 -1
- package/lib/providers/project-files-provider.js +1 -1
- package/lib/services/analytics/analytics-broker-process.js +13 -22
- package/lib/services/analytics/analytics-broker.js +17 -30
- package/lib/services/analytics/analytics-service.js +161 -198
- package/lib/services/analytics/google-analytics-provider.js +41 -56
- package/lib/services/analytics-settings-service.js +15 -32
- package/lib/services/android/android-bundle-tool-service.js +43 -60
- package/lib/services/android/gradle-build-args-service.js +9 -20
- package/lib/services/android/gradle-build-service.js +34 -47
- package/lib/services/android/gradle-command-service.js +22 -35
- package/lib/services/android-device-debug-service.js +90 -117
- package/lib/services/android-plugin-build-service.js +230 -256
- package/lib/services/android-project-service.js +163 -199
- package/lib/services/android-resources-migration-service.js +51 -64
- package/lib/services/apple-portal/apple-portal-application-service.js +46 -63
- package/lib/services/apple-portal/apple-portal-session-service.js +171 -188
- package/lib/services/assets-generation/assets-generation-service.js +98 -115
- package/lib/services/build-artifacts-service.js +9 -20
- package/lib/services/build-info-file-service.js +20 -35
- package/lib/services/cleanup-service.js +47 -76
- package/lib/services/cocoapods-service.js +115 -136
- package/lib/services/device/device-install-app-service.js +73 -90
- package/lib/services/doctor-service.js +99 -118
- package/lib/services/extensibility-service.js +81 -100
- package/lib/services/files-hash-service.js +26 -43
- package/lib/services/hmr-status-service.js +1 -1
- package/lib/services/initialize-service.js +37 -50
- package/lib/services/ios/export-options-plist-service.js +38 -51
- package/lib/services/ios/ios-signing-service.js +161 -180
- package/lib/services/ios/spm-service.js +40 -53
- package/lib/services/ios/xcodebuild-args-service.js +77 -94
- package/lib/services/ios/xcodebuild-command-service.js +14 -25
- package/lib/services/ios/xcodebuild-service.js +50 -69
- package/lib/services/ios-debugger-port-service.js +23 -36
- package/lib/services/ios-device-debug-service.js +75 -102
- package/lib/services/ios-entitlements-service.js +31 -42
- package/lib/services/ios-extensions-service.js +18 -29
- package/lib/services/ios-project-service.js +405 -460
- package/lib/services/ios-provision-service.js +108 -129
- package/lib/services/ios-watch-app-service.js +21 -32
- package/lib/services/ip-service.js +38 -53
- package/lib/services/itmstransporter-service.js +129 -152
- package/lib/services/livesync/android-device-livesync-service-base.js +31 -48
- package/lib/services/livesync/android-device-livesync-service.js +120 -149
- package/lib/services/livesync/android-device-livesync-sockets-service.js +121 -152
- package/lib/services/livesync/android-livesync-service.js +14 -35
- package/lib/services/livesync/android-livesync-tool.js +89 -112
- package/lib/services/livesync/device-livesync-service-base.js +15 -28
- package/lib/services/livesync/ios-device-livesync-service.js +114 -143
- package/lib/services/livesync/ios-livesync-service.js +42 -58
- package/lib/services/livesync/platform-livesync-service-base.js +94 -119
- package/lib/services/log-parser-service.js +1 -1
- package/lib/services/log-source-map-service.js +30 -41
- package/lib/services/marking-mode-service.js +15 -28
- package/lib/services/npm-config-service.js +1 -1
- package/lib/services/pacote-service.js +49 -64
- package/lib/services/performance-service.js +1 -1
- package/lib/services/platform/add-platform-service.js +50 -71
- package/lib/services/platform/platform-validation-service.js +22 -33
- package/lib/services/platform/prepare-native-platform-service.js +49 -62
- package/lib/services/platform-environment-requirements.js +26 -37
- package/lib/services/plugins-service.js +122 -147
- package/lib/services/project-backup-service.js +1 -1
- package/lib/services/project-changes-service.js +124 -141
- package/lib/services/project-cleanup-service.js +64 -77
- package/lib/services/project-config-service.js +71 -80
- package/lib/services/project-data-service.js +101 -118
- package/lib/services/project-name-service.js +28 -43
- package/lib/services/project-service.js +84 -103
- package/lib/services/project-templates-service.js +52 -67
- package/lib/services/start-service.js +41 -59
- package/lib/services/temp-service.js +8 -21
- package/lib/services/terminal-spinner-service.js +13 -24
- package/lib/services/test-execution-service.js +59 -72
- package/lib/services/test-initialization-service.js +2 -2
- package/lib/services/timeline-profiler-service.js +1 -1
- package/lib/services/versions-service.js +119 -138
- package/lib/services/webpack/webpack-compiler-service.js +211 -231
- package/lib/services/xcconfig-service.js +8 -19
- package/lib/sys-info.js +45 -62
- package/lib/tools/node-modules/node-modules-builder.js +16 -27
- package/lib/yarn-package-manager.js +59 -78
- package/lib/yarn2-package-manager.js +60 -79
- package/package.json +57 -55
- package/vendor/aab-tool/bundletool.jar +0 -0
- package/lib/common/resources/platform-tools/android/darwin/NOTICE.txt +0 -3407
- package/lib/common/resources/platform-tools/android/darwin/adb +0 -0
- package/lib/common/resources/platform-tools/android/linux/NOTICE.txt +0 -4451
- package/lib/common/resources/platform-tools/android/linux/adb +0 -0
- package/lib/common/resources/platform-tools/android/win32/AdbWinApi.dll +0 -0
- package/lib/common/resources/platform-tools/android/win32/AdbWinUsbApi.dll +0 -0
- package/lib/common/resources/platform-tools/android/win32/NOTICE.txt +0 -4451
- package/lib/common/resources/platform-tools/android/win32/adb.exe +0 -0
- 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
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
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
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
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
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
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
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
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
|
-
|
|
31
|
-
|
|
32
|
-
if (
|
|
33
|
-
|
|
34
|
-
|
|
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
|
|
47
|
-
url: "https://appstoreconnect.apple.com/
|
|
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(
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
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
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
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
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
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
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
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
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
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
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
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
|
-
|
|
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
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
const
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
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
|
-
|
|
148
|
-
|
|
149
|
-
|
|
188
|
+
securityCode: {
|
|
189
|
+
code: token.toString(),
|
|
190
|
+
},
|
|
150
191
|
};
|
|
151
|
-
|
|
152
|
-
|
|
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.$
|
|
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
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
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;
|