@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.AndroidDeviceDiscovery = void 0;
|
|
13
4
|
const device_discovery_1 = require("./device-discovery");
|
|
@@ -22,69 +13,59 @@ class AndroidDeviceDiscovery extends device_discovery_1.DeviceDiscovery {
|
|
|
22
13
|
this.$mobileHelper = $mobileHelper;
|
|
23
14
|
this._devices = [];
|
|
24
15
|
}
|
|
25
|
-
createAndAddDevice(adbDeviceInfo) {
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
this.addDevice(device);
|
|
31
|
-
});
|
|
16
|
+
async createAndAddDevice(adbDeviceInfo) {
|
|
17
|
+
this._devices.push(adbDeviceInfo);
|
|
18
|
+
const device = this.$injector.resolve(android_device_1.AndroidDevice, { identifier: adbDeviceInfo.identifier, status: adbDeviceInfo.status });
|
|
19
|
+
await device.init();
|
|
20
|
+
this.addDevice(device);
|
|
32
21
|
}
|
|
33
22
|
deleteAndRemoveDevice(deviceIdentifier) {
|
|
34
23
|
_.remove(this._devices, (d) => d.identifier === deviceIdentifier);
|
|
35
24
|
this.removeDevice(deviceIdentifier);
|
|
36
25
|
}
|
|
37
|
-
startLookingForDevices(options) {
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
yield this.checkForDevices();
|
|
46
|
-
});
|
|
26
|
+
async startLookingForDevices(options) {
|
|
27
|
+
if (options &&
|
|
28
|
+
options.platform &&
|
|
29
|
+
!this.$mobileHelper.isAndroidPlatform(options.platform)) {
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
await this.ensureAdbServerStarted();
|
|
33
|
+
await this.checkForDevices();
|
|
47
34
|
}
|
|
48
|
-
checkForDevices() {
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
yield this.checkCurrentData(devices);
|
|
52
|
-
});
|
|
35
|
+
async checkForDevices() {
|
|
36
|
+
const devices = await this.$adb.getDevices();
|
|
37
|
+
await this.checkCurrentData(devices);
|
|
53
38
|
}
|
|
54
|
-
checkCurrentData(result) {
|
|
55
|
-
|
|
56
|
-
const
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
};
|
|
64
|
-
});
|
|
65
|
-
_(this._devices)
|
|
66
|
-
.reject((d) => (_.find(currentDevices, (device) => device.identifier === d.identifier && device.status === d.status)))
|
|
67
|
-
.each((d) => this.deleteAndRemoveDevice(d.identifier));
|
|
68
|
-
yield Promise.all(_(currentDevices)
|
|
69
|
-
.reject((d) => (_.find(this._devices, (device) => device.identifier === d.identifier &&
|
|
70
|
-
device.status === d.status)))
|
|
71
|
-
.map((d) => this.createAndAddDevice(d))
|
|
72
|
-
.value());
|
|
39
|
+
async checkCurrentData(result) {
|
|
40
|
+
const currentDevices = result.map((element) => {
|
|
41
|
+
const data = element.split("\t");
|
|
42
|
+
const identifier = data[0];
|
|
43
|
+
const status = data[1];
|
|
44
|
+
return {
|
|
45
|
+
identifier: identifier,
|
|
46
|
+
status: status,
|
|
47
|
+
};
|
|
73
48
|
});
|
|
49
|
+
_(this._devices)
|
|
50
|
+
.reject((d) => (_.find(currentDevices, (device) => device.identifier === d.identifier && device.status === d.status)))
|
|
51
|
+
.each((d) => this.deleteAndRemoveDevice(d.identifier));
|
|
52
|
+
await Promise.all(_(currentDevices)
|
|
53
|
+
.reject((d) => (_.find(this._devices, (device) => device.identifier === d.identifier &&
|
|
54
|
+
device.status === d.status)))
|
|
55
|
+
.map((d) => this.createAndAddDevice(d))
|
|
56
|
+
.value());
|
|
74
57
|
}
|
|
75
|
-
ensureAdbServerStarted() {
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
return yield this.$adb.executeCommand(["start-server"]);
|
|
81
|
-
}
|
|
82
|
-
catch (err) {
|
|
83
|
-
this.isStarted = false;
|
|
84
|
-
throw err;
|
|
85
|
-
}
|
|
58
|
+
async ensureAdbServerStarted() {
|
|
59
|
+
if (!this.isStarted) {
|
|
60
|
+
this.isStarted = true;
|
|
61
|
+
try {
|
|
62
|
+
return await this.$adb.executeCommand(["start-server"]);
|
|
86
63
|
}
|
|
87
|
-
|
|
64
|
+
catch (err) {
|
|
65
|
+
this.isStarted = false;
|
|
66
|
+
throw err;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
88
69
|
}
|
|
89
70
|
}
|
|
90
71
|
exports.AndroidDeviceDiscovery = AndroidDeviceDiscovery;
|
|
@@ -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.AndroidEmulatorDiscovery = void 0;
|
|
13
4
|
const events_1 = require("events");
|
|
@@ -21,29 +12,27 @@ class AndroidEmulatorDiscovery extends events_1.EventEmitter {
|
|
|
21
12
|
this.$mobileHelper = $mobileHelper;
|
|
22
13
|
this._emulators = {};
|
|
23
14
|
}
|
|
24
|
-
startLookingForDevices(options) {
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
}
|
|
46
|
-
});
|
|
15
|
+
async startLookingForDevices(options) {
|
|
16
|
+
if (options &&
|
|
17
|
+
options.platform &&
|
|
18
|
+
!this.$mobileHelper.isAndroidPlatform(options.platform)) {
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
const availableEmulatorsOutput = await this.$androidEmulatorServices.getEmulatorImages();
|
|
22
|
+
const currentEmulators = availableEmulatorsOutput.devices;
|
|
23
|
+
const cachedEmulators = _.values(this._emulators);
|
|
24
|
+
const lostEmulators = _(cachedEmulators)
|
|
25
|
+
.reject((e) => _.some(currentEmulators, (emulator) => emulator && e && emulator.imageIdentifier === e.imageIdentifier))
|
|
26
|
+
.value();
|
|
27
|
+
const foundEmulators = _(currentEmulators)
|
|
28
|
+
.reject((e) => _.some(cachedEmulators, (emulator) => emulator && e && emulator.imageIdentifier === e.imageIdentifier))
|
|
29
|
+
.value();
|
|
30
|
+
if (lostEmulators.length) {
|
|
31
|
+
this.raiseOnEmulatorImagesLost(lostEmulators);
|
|
32
|
+
}
|
|
33
|
+
if (foundEmulators.length) {
|
|
34
|
+
this.raiseOnEmulatorImagesFound(foundEmulators);
|
|
35
|
+
}
|
|
47
36
|
}
|
|
48
37
|
getDevices() {
|
|
49
38
|
return _.values(this._emulators);
|
|
@@ -5,15 +5,6 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
5
5
|
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
6
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
7
|
};
|
|
8
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
9
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
10
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
11
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
12
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
13
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
14
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
15
|
-
});
|
|
16
|
-
};
|
|
17
8
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
9
|
exports.AndroidProcessService = void 0;
|
|
19
10
|
const os_1 = require("os");
|
|
@@ -32,162 +23,140 @@ class AndroidProcessService {
|
|
|
32
23
|
this._devicesAdbs = {};
|
|
33
24
|
this._forwardedLocalPorts = {};
|
|
34
25
|
}
|
|
35
|
-
forwardFreeTcpToAbstractPort(portForwardInputData) {
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
return this.forwardPort(portForwardInputData, adb);
|
|
39
|
-
});
|
|
26
|
+
async forwardFreeTcpToAbstractPort(portForwardInputData) {
|
|
27
|
+
const adb = await this.setupForPortForwarding(portForwardInputData);
|
|
28
|
+
return this.forwardPort(portForwardInputData, adb);
|
|
40
29
|
}
|
|
41
|
-
mapAbstractToTcpPort(deviceIdentifier, appIdentifier, framework) {
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
30
|
+
async mapAbstractToTcpPort(deviceIdentifier, appIdentifier, framework) {
|
|
31
|
+
const adb = await this.setupForPortForwarding({
|
|
32
|
+
deviceIdentifier,
|
|
33
|
+
appIdentifier,
|
|
34
|
+
});
|
|
35
|
+
const processId = (await this.getProcessIds(adb, [appIdentifier]))[appIdentifier];
|
|
36
|
+
const applicationNotStartedErrorMessage = `The application is not started on the device with identifier ${deviceIdentifier}.`;
|
|
37
|
+
if (!processId) {
|
|
38
|
+
this.$errors.fail(applicationNotStartedErrorMessage);
|
|
39
|
+
}
|
|
40
|
+
const abstractPortsInformation = await this.getAbstractPortsInformation(adb);
|
|
41
|
+
const abstractPort = await this.getAbstractPortForApplication(adb, processId, appIdentifier, abstractPortsInformation, framework);
|
|
42
|
+
if (!abstractPort) {
|
|
43
|
+
this.$errors.fail(applicationNotStartedErrorMessage);
|
|
44
|
+
}
|
|
45
|
+
const forwardedTcpPort = await this.forwardPort({
|
|
46
|
+
deviceIdentifier,
|
|
47
|
+
appIdentifier,
|
|
48
|
+
abstractPort: `localabstract:${abstractPort}`,
|
|
49
|
+
}, adb);
|
|
50
|
+
return forwardedTcpPort && forwardedTcpPort.toString();
|
|
51
|
+
}
|
|
52
|
+
async getMappedAbstractToTcpPorts(deviceIdentifier, appIdentifiers, framework) {
|
|
53
|
+
const adb = this.getAdb(deviceIdentifier), abstractPortsInformation = await this.getAbstractPortsInformation(adb), processIds = await this.getProcessIds(adb, appIdentifiers), adbForwardList = await adb.executeCommand(["forward", "--list"]), localPorts = {};
|
|
54
|
+
await Promise.all(_.map(appIdentifiers, async (appIdentifier) => {
|
|
55
|
+
localPorts[appIdentifier] = null;
|
|
56
|
+
const processId = processIds[appIdentifier];
|
|
49
57
|
if (!processId) {
|
|
50
|
-
|
|
58
|
+
return;
|
|
51
59
|
}
|
|
52
|
-
const
|
|
53
|
-
const abstractPort = yield this.getAbstractPortForApplication(adb, processId, appIdentifier, abstractPortsInformation, framework);
|
|
60
|
+
const abstractPort = await this.getAbstractPortForApplication(adb, processId, appIdentifier, abstractPortsInformation, framework);
|
|
54
61
|
if (!abstractPort) {
|
|
55
|
-
|
|
56
|
-
}
|
|
57
|
-
const forwardedTcpPort = yield this.forwardPort({
|
|
58
|
-
deviceIdentifier,
|
|
59
|
-
appIdentifier,
|
|
60
|
-
abstractPort: `localabstract:${abstractPort}`,
|
|
61
|
-
}, adb);
|
|
62
|
-
return forwardedTcpPort && forwardedTcpPort.toString();
|
|
63
|
-
});
|
|
64
|
-
}
|
|
65
|
-
getMappedAbstractToTcpPorts(deviceIdentifier, appIdentifiers, framework) {
|
|
66
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
67
|
-
const adb = this.getAdb(deviceIdentifier), abstractPortsInformation = yield this.getAbstractPortsInformation(adb), processIds = yield this.getProcessIds(adb, appIdentifiers), adbForwardList = yield adb.executeCommand(["forward", "--list"]), localPorts = {};
|
|
68
|
-
yield Promise.all(_.map(appIdentifiers, (appIdentifier) => __awaiter(this, void 0, void 0, function* () {
|
|
69
|
-
localPorts[appIdentifier] = null;
|
|
70
|
-
const processId = processIds[appIdentifier];
|
|
71
|
-
if (!processId) {
|
|
72
|
-
return;
|
|
73
|
-
}
|
|
74
|
-
const abstractPort = yield this.getAbstractPortForApplication(adb, processId, appIdentifier, abstractPortsInformation, framework);
|
|
75
|
-
if (!abstractPort) {
|
|
76
|
-
return;
|
|
77
|
-
}
|
|
78
|
-
const localPort = yield this.getAlreadyMappedPort(adb, deviceIdentifier, abstractPort, adbForwardList);
|
|
79
|
-
if (localPort) {
|
|
80
|
-
localPorts[appIdentifier] = localPort;
|
|
81
|
-
}
|
|
82
|
-
})));
|
|
83
|
-
return localPorts;
|
|
84
|
-
});
|
|
85
|
-
}
|
|
86
|
-
getDebuggableApps(deviceIdentifier) {
|
|
87
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
88
|
-
const adb = this.getAdb(deviceIdentifier);
|
|
89
|
-
const androidWebViewPortInformation = (yield this.getAbstractPortsInformation(adb)).split(os_1.EOL);
|
|
90
|
-
const portInformation = yield Promise.all(_.map(androidWebViewPortInformation, (line) => __awaiter(this, void 0, void 0, function* () {
|
|
91
|
-
return (yield this.getApplicationInfoFromWebViewPortInformation(adb, deviceIdentifier, line)) ||
|
|
92
|
-
(yield this.getNativeScriptApplicationInformation(adb, deviceIdentifier, line));
|
|
93
|
-
})));
|
|
94
|
-
return _(portInformation)
|
|
95
|
-
.filter((deviceAppInfo) => !!deviceAppInfo)
|
|
96
|
-
.groupBy((element) => element.framework)
|
|
97
|
-
.map((group) => _.uniqBy(group, (g) => g.appIdentifier))
|
|
98
|
-
.flatten()
|
|
99
|
-
.value();
|
|
100
|
-
});
|
|
101
|
-
}
|
|
102
|
-
getAppProcessId(deviceIdentifier, appIdentifier) {
|
|
103
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
104
|
-
const adb = this.getAdb(deviceIdentifier);
|
|
105
|
-
const processId = (yield this.getProcessIds(adb, [appIdentifier]))[appIdentifier];
|
|
106
|
-
return processId ? processId.toString() : null;
|
|
107
|
-
});
|
|
108
|
-
}
|
|
109
|
-
forwardPort(portForwardInputData, adb) {
|
|
110
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
111
|
-
let localPort = yield this.getAlreadyMappedPort(adb, portForwardInputData.deviceIdentifier, portForwardInputData.abstractPort);
|
|
112
|
-
if (!localPort) {
|
|
113
|
-
localPort = yield this.$net.getFreePort();
|
|
114
|
-
yield adb.executeCommand(["forward", `tcp:${localPort}`, portForwardInputData.abstractPort], { deviceIdentifier: portForwardInputData.deviceIdentifier });
|
|
115
|
-
}
|
|
116
|
-
this._forwardedLocalPorts[portForwardInputData.deviceIdentifier] = localPort;
|
|
117
|
-
yield this.$cleanupService.addCleanupCommand({
|
|
118
|
-
command: yield this.$staticConfig.getAdbFilePath(),
|
|
119
|
-
args: [
|
|
120
|
-
"-s",
|
|
121
|
-
portForwardInputData.deviceIdentifier,
|
|
122
|
-
"forward",
|
|
123
|
-
"--remove",
|
|
124
|
-
`tcp:${localPort}`,
|
|
125
|
-
],
|
|
126
|
-
});
|
|
127
|
-
return localPort && +localPort;
|
|
128
|
-
});
|
|
129
|
-
}
|
|
130
|
-
setupForPortForwarding(portForwardInputData) {
|
|
131
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
132
|
-
const adb = this.getAdb(portForwardInputData.deviceIdentifier);
|
|
133
|
-
return adb;
|
|
134
|
-
});
|
|
135
|
-
}
|
|
136
|
-
getApplicationInfoFromWebViewPortInformation(adb, deviceIdentifier, information) {
|
|
137
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
138
|
-
const processIdRegExp = /@webview_devtools_remote_(.+)/g;
|
|
139
|
-
const processIdMatches = processIdRegExp.exec(information);
|
|
140
|
-
let cordovaAppIdentifier;
|
|
141
|
-
if (processIdMatches) {
|
|
142
|
-
const processId = processIdMatches[1];
|
|
143
|
-
cordovaAppIdentifier = yield this.getApplicationIdentifierFromPid(adb, processId);
|
|
144
|
-
}
|
|
145
|
-
else {
|
|
146
|
-
const chromeAppIdentifierRegExp = /@(.+)_devtools_remote\s?/g;
|
|
147
|
-
const chromeAppIdentifierMatches = chromeAppIdentifierRegExp.exec(information);
|
|
148
|
-
if (chromeAppIdentifierMatches && chromeAppIdentifierMatches.length > 0) {
|
|
149
|
-
cordovaAppIdentifier = chromeAppIdentifierMatches[1];
|
|
150
|
-
}
|
|
151
|
-
}
|
|
152
|
-
if (cordovaAppIdentifier) {
|
|
153
|
-
return {
|
|
154
|
-
deviceIdentifier: deviceIdentifier,
|
|
155
|
-
appIdentifier: cordovaAppIdentifier,
|
|
156
|
-
framework: constants_1.TARGET_FRAMEWORK_IDENTIFIERS.Cordova,
|
|
157
|
-
};
|
|
62
|
+
return;
|
|
158
63
|
}
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
getNativeScriptApplicationInformation(adb, deviceIdentifier, information) {
|
|
163
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
164
|
-
const nativeScriptAppIdentifierRegExp = /@(.+)-(debug|inspectorServer)/g;
|
|
165
|
-
const nativeScriptAppIdentifierMatches = nativeScriptAppIdentifierRegExp.exec(information);
|
|
166
|
-
if (nativeScriptAppIdentifierMatches &&
|
|
167
|
-
nativeScriptAppIdentifierMatches.length > 0) {
|
|
168
|
-
const appIdentifier = nativeScriptAppIdentifierMatches[1];
|
|
169
|
-
return {
|
|
170
|
-
deviceIdentifier: deviceIdentifier,
|
|
171
|
-
appIdentifier: appIdentifier,
|
|
172
|
-
framework: constants_1.TARGET_FRAMEWORK_IDENTIFIERS.NativeScript,
|
|
173
|
-
};
|
|
64
|
+
const localPort = await this.getAlreadyMappedPort(adb, deviceIdentifier, abstractPort, adbForwardList);
|
|
65
|
+
if (localPort) {
|
|
66
|
+
localPorts[appIdentifier] = localPort;
|
|
174
67
|
}
|
|
175
|
-
|
|
68
|
+
}));
|
|
69
|
+
return localPorts;
|
|
70
|
+
}
|
|
71
|
+
async getDebuggableApps(deviceIdentifier) {
|
|
72
|
+
const adb = this.getAdb(deviceIdentifier);
|
|
73
|
+
const androidWebViewPortInformation = (await this.getAbstractPortsInformation(adb)).split(os_1.EOL);
|
|
74
|
+
const portInformation = await Promise.all(_.map(androidWebViewPortInformation, async (line) => (await this.getApplicationInfoFromWebViewPortInformation(adb, deviceIdentifier, line)) ||
|
|
75
|
+
(await this.getNativeScriptApplicationInformation(adb, deviceIdentifier, line))));
|
|
76
|
+
return _(portInformation)
|
|
77
|
+
.filter((deviceAppInfo) => !!deviceAppInfo)
|
|
78
|
+
.groupBy((element) => element.framework)
|
|
79
|
+
.map((group) => _.uniqBy(group, (g) => g.appIdentifier))
|
|
80
|
+
.flatten()
|
|
81
|
+
.value();
|
|
82
|
+
}
|
|
83
|
+
async getAppProcessId(deviceIdentifier, appIdentifier) {
|
|
84
|
+
const adb = this.getAdb(deviceIdentifier);
|
|
85
|
+
const processId = (await this.getProcessIds(adb, [appIdentifier]))[appIdentifier];
|
|
86
|
+
return processId ? processId.toString() : null;
|
|
87
|
+
}
|
|
88
|
+
async forwardPort(portForwardInputData, adb) {
|
|
89
|
+
let localPort = await this.getAlreadyMappedPort(adb, portForwardInputData.deviceIdentifier, portForwardInputData.abstractPort);
|
|
90
|
+
if (!localPort) {
|
|
91
|
+
localPort = await this.$net.getFreePort();
|
|
92
|
+
await adb.executeCommand(["forward", `tcp:${localPort}`, portForwardInputData.abstractPort], { deviceIdentifier: portForwardInputData.deviceIdentifier });
|
|
93
|
+
}
|
|
94
|
+
this._forwardedLocalPorts[portForwardInputData.deviceIdentifier] = localPort;
|
|
95
|
+
await this.$cleanupService.addCleanupCommand({
|
|
96
|
+
command: await this.$staticConfig.getAdbFilePath(),
|
|
97
|
+
args: [
|
|
98
|
+
"-s",
|
|
99
|
+
portForwardInputData.deviceIdentifier,
|
|
100
|
+
"forward",
|
|
101
|
+
"--remove",
|
|
102
|
+
`tcp:${localPort}`,
|
|
103
|
+
],
|
|
176
104
|
});
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
105
|
+
return localPort && +localPort;
|
|
106
|
+
}
|
|
107
|
+
async setupForPortForwarding(portForwardInputData) {
|
|
108
|
+
const adb = this.getAdb(portForwardInputData.deviceIdentifier);
|
|
109
|
+
return adb;
|
|
110
|
+
}
|
|
111
|
+
async getApplicationInfoFromWebViewPortInformation(adb, deviceIdentifier, information) {
|
|
112
|
+
const processIdRegExp = /@webview_devtools_remote_(.+)/g;
|
|
113
|
+
const processIdMatches = processIdRegExp.exec(information);
|
|
114
|
+
let cordovaAppIdentifier;
|
|
115
|
+
if (processIdMatches) {
|
|
116
|
+
const processId = processIdMatches[1];
|
|
117
|
+
cordovaAppIdentifier = await this.getApplicationIdentifierFromPid(adb, processId);
|
|
118
|
+
}
|
|
119
|
+
else {
|
|
120
|
+
const chromeAppIdentifierRegExp = /@(.+)_devtools_remote\s?/g;
|
|
121
|
+
const chromeAppIdentifierMatches = chromeAppIdentifierRegExp.exec(information);
|
|
122
|
+
if (chromeAppIdentifierMatches && chromeAppIdentifierMatches.length > 0) {
|
|
123
|
+
cordovaAppIdentifier = chromeAppIdentifierMatches[1];
|
|
189
124
|
}
|
|
190
|
-
}
|
|
125
|
+
}
|
|
126
|
+
if (cordovaAppIdentifier) {
|
|
127
|
+
return {
|
|
128
|
+
deviceIdentifier: deviceIdentifier,
|
|
129
|
+
appIdentifier: cordovaAppIdentifier,
|
|
130
|
+
framework: constants_1.TARGET_FRAMEWORK_IDENTIFIERS.Cordova,
|
|
131
|
+
};
|
|
132
|
+
}
|
|
133
|
+
return null;
|
|
134
|
+
}
|
|
135
|
+
async getNativeScriptApplicationInformation(adb, deviceIdentifier, information) {
|
|
136
|
+
const nativeScriptAppIdentifierRegExp = /@(.+)-(debug|inspectorServer)/g;
|
|
137
|
+
const nativeScriptAppIdentifierMatches = nativeScriptAppIdentifierRegExp.exec(information);
|
|
138
|
+
if (nativeScriptAppIdentifierMatches &&
|
|
139
|
+
nativeScriptAppIdentifierMatches.length > 0) {
|
|
140
|
+
const appIdentifier = nativeScriptAppIdentifierMatches[1];
|
|
141
|
+
return {
|
|
142
|
+
deviceIdentifier: deviceIdentifier,
|
|
143
|
+
appIdentifier: appIdentifier,
|
|
144
|
+
framework: constants_1.TARGET_FRAMEWORK_IDENTIFIERS.NativeScript,
|
|
145
|
+
};
|
|
146
|
+
}
|
|
147
|
+
return null;
|
|
148
|
+
}
|
|
149
|
+
async getAbstractPortForApplication(adb, processId, appIdentifier, abstractPortsInformation, framework) {
|
|
150
|
+
framework = framework || "";
|
|
151
|
+
switch (framework.toLowerCase()) {
|
|
152
|
+
case constants_1.TARGET_FRAMEWORK_IDENTIFIERS.Cordova.toLowerCase():
|
|
153
|
+
return this.getCordovaPortInformation(abstractPortsInformation, appIdentifier, processId);
|
|
154
|
+
case constants_1.TARGET_FRAMEWORK_IDENTIFIERS.NativeScript.toLowerCase():
|
|
155
|
+
return this.getNativeScriptPortInformation(abstractPortsInformation, appIdentifier);
|
|
156
|
+
default:
|
|
157
|
+
return (this.getCordovaPortInformation(abstractPortsInformation, appIdentifier, processId) ||
|
|
158
|
+
this.getNativeScriptPortInformation(abstractPortsInformation, appIdentifier));
|
|
159
|
+
}
|
|
191
160
|
}
|
|
192
161
|
getCordovaPortInformation(abstractPortsInformation, appIdentifier, processId) {
|
|
193
162
|
return (this.getPortInformation(abstractPortsInformation, `${appIdentifier}_devtools_remote`) || this.getPortInformation(abstractPortsInformation, processId));
|
|
@@ -195,33 +164,27 @@ class AndroidProcessService {
|
|
|
195
164
|
getNativeScriptPortInformation(abstractPortsInformation, appIdentifier) {
|
|
196
165
|
return this.getPortInformation(abstractPortsInformation, `${appIdentifier}-debug`);
|
|
197
166
|
}
|
|
198
|
-
getAbstractPortsInformation(adb) {
|
|
199
|
-
return
|
|
200
|
-
return adb.executeShellCommand(["cat", "/proc/net/unix"]);
|
|
201
|
-
});
|
|
167
|
+
async getAbstractPortsInformation(adb) {
|
|
168
|
+
return adb.executeShellCommand(["cat", "/proc/net/unix"]);
|
|
202
169
|
}
|
|
203
170
|
getPortInformation(abstractPortsInformation, searchedInfo) {
|
|
204
171
|
const processRegExp = new RegExp(`\\w+:\\s+(?:\\w+\\s+){1,6}@(.*?${searchedInfo})$`, "gm");
|
|
205
172
|
const match = processRegExp.exec(abstractPortsInformation);
|
|
206
173
|
return match && match[1];
|
|
207
174
|
}
|
|
208
|
-
getProcessIds(adb, appIdentifiers) {
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
result[appIdentifier] = this.getFirstMatchingGroupFromMultilineResult(processIdInformation, processIdRegExp);
|
|
215
|
-
});
|
|
216
|
-
return result;
|
|
175
|
+
async getProcessIds(adb, appIdentifiers) {
|
|
176
|
+
const result = {};
|
|
177
|
+
const processIdInformation = await adb.executeShellCommand(["ps"]);
|
|
178
|
+
_.each(appIdentifiers, (appIdentifier) => {
|
|
179
|
+
const processIdRegExp = new RegExp(`^\\w*\\s*(\\d+).*?${appIdentifier}$`);
|
|
180
|
+
result[appIdentifier] = this.getFirstMatchingGroupFromMultilineResult(processIdInformation, processIdRegExp);
|
|
217
181
|
});
|
|
182
|
+
return result;
|
|
218
183
|
}
|
|
219
|
-
getAlreadyMappedPort(adb, deviceIdentifier, abstractPort, adbForwardList) {
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
return this.getFirstMatchingGroupFromMultilineResult(allForwardedPorts, regex);
|
|
224
|
-
});
|
|
184
|
+
async getAlreadyMappedPort(adb, deviceIdentifier, abstractPort, adbForwardList) {
|
|
185
|
+
const allForwardedPorts = adbForwardList || (await adb.executeCommand(["forward", "--list"])) || "";
|
|
186
|
+
const regex = new RegExp(`${deviceIdentifier}\\s+?tcp:(\\d+?)\\s+?.*?${abstractPort}$`);
|
|
187
|
+
return this.getFirstMatchingGroupFromMultilineResult(allForwardedPorts, regex);
|
|
225
188
|
}
|
|
226
189
|
getAdb(deviceIdentifier) {
|
|
227
190
|
if (!this._devicesAdbs[deviceIdentifier]) {
|
|
@@ -231,11 +194,9 @@ class AndroidProcessService {
|
|
|
231
194
|
}
|
|
232
195
|
return this._devicesAdbs[deviceIdentifier];
|
|
233
196
|
}
|
|
234
|
-
getApplicationIdentifierFromPid(adb, pid, psData) {
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
return this.getFirstMatchingGroupFromMultilineResult(psData, new RegExp(`\\s+${pid}(?:\\s+\\d+){3}\\s+.*\\s+(.*?)$`));
|
|
238
|
-
});
|
|
197
|
+
async getApplicationIdentifierFromPid(adb, pid, psData) {
|
|
198
|
+
psData = psData || (await adb.executeShellCommand(["ps"]));
|
|
199
|
+
return this.getFirstMatchingGroupFromMultilineResult(psData, new RegExp(`\\s+${pid}(?:\\s+\\d+){3}\\s+.*\\s+(.*?)$`));
|
|
239
200
|
}
|
|
240
201
|
getFirstMatchingGroupFromMultilineResult(input, regex) {
|
|
241
202
|
let result;
|
|
@@ -252,8 +213,8 @@ class AndroidProcessService {
|
|
|
252
213
|
return result;
|
|
253
214
|
}
|
|
254
215
|
}
|
|
216
|
+
exports.AndroidProcessService = AndroidProcessService;
|
|
255
217
|
__decorate([
|
|
256
218
|
(0, decorators_1.exported)("androidProcessService")
|
|
257
219
|
], AndroidProcessService.prototype, "getAppProcessId", null);
|
|
258
|
-
exports.AndroidProcessService = AndroidProcessService;
|
|
259
220
|
yok_1.injector.register("androidProcessService", AndroidProcessService);
|
|
@@ -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.DeviceDiscovery = void 0;
|
|
13
4
|
const events_1 = require("events");
|
|
@@ -19,10 +10,8 @@ class DeviceDiscovery extends events_1.EventEmitter {
|
|
|
19
10
|
super(...arguments);
|
|
20
11
|
this.devices = {};
|
|
21
12
|
}
|
|
22
|
-
startLookingForDevices() {
|
|
23
|
-
return
|
|
24
|
-
return;
|
|
25
|
-
});
|
|
13
|
+
async startLookingForDevices() {
|
|
14
|
+
return;
|
|
26
15
|
}
|
|
27
16
|
getDevice(deviceIdentifier) {
|
|
28
17
|
const device = this.devices[deviceIdentifier];
|