@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
|
@@ -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.RunController = void 0;
|
|
19
10
|
const constants_1 = require("../common/constants");
|
|
@@ -49,198 +40,188 @@ class RunController extends events_1.EventEmitter {
|
|
|
49
40
|
this.$projectDataService = $projectDataService;
|
|
50
41
|
this.prepareReadyEventHandler = null;
|
|
51
42
|
}
|
|
52
|
-
run(runData) {
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
yield this.syncChangedDataOnDevices(data, projectData, platformData, liveSyncInfo);
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
else {
|
|
79
|
-
const platformData = this.$platformsDataService.getPlatformData(data.platform, projectData);
|
|
80
|
-
yield this.syncChangedDataOnDevices(data, projectData, platformData, liveSyncInfo);
|
|
43
|
+
async run(runData) {
|
|
44
|
+
const { liveSyncInfo, deviceDescriptors } = runData;
|
|
45
|
+
const { projectDir } = liveSyncInfo;
|
|
46
|
+
const projectData = this.$projectDataService.getProjectData(projectDir);
|
|
47
|
+
await this.initializeSetup(projectData);
|
|
48
|
+
const deviceDescriptorsForInitialSync = this.getDeviceDescriptorsForInitialSync(projectDir, deviceDescriptors);
|
|
49
|
+
const newPlatforms = this.$devicesService.getPlatformsFromDeviceDescriptors(deviceDescriptors);
|
|
50
|
+
const oldPlatforms = this.$liveSyncProcessDataService.getPlatforms(projectDir);
|
|
51
|
+
const platforms = _.uniq(_.concat(newPlatforms, oldPlatforms));
|
|
52
|
+
this.$liveSyncProcessDataService.persistData(projectDir, deviceDescriptors, platforms);
|
|
53
|
+
const shouldStartWatcher = !liveSyncInfo.skipWatcher &&
|
|
54
|
+
this.$liveSyncProcessDataService.hasDeviceDescriptors(projectDir);
|
|
55
|
+
if (shouldStartWatcher && liveSyncInfo.useHotModuleReload) {
|
|
56
|
+
this.$hmrStatusService.attachToHmrStatusEvent();
|
|
57
|
+
}
|
|
58
|
+
if (!this.prepareReadyEventHandler) {
|
|
59
|
+
const handler = async (data) => {
|
|
60
|
+
if (data.hasNativeChanges) {
|
|
61
|
+
const platformData = this.$platformsDataService.getPlatformData(data.platform, projectData);
|
|
62
|
+
const prepareData = this.$prepareDataService.getPrepareData(liveSyncInfo.projectDir, data.platform, { ...liveSyncInfo, watch: !liveSyncInfo.skipWatcher });
|
|
63
|
+
const changesInfo = await this.$projectChangesService.checkForChanges(platformData, projectData, prepareData, data);
|
|
64
|
+
if (changesInfo.hasChanges) {
|
|
65
|
+
await this.syncChangedDataOnDevices(data, projectData, platformData, liveSyncInfo);
|
|
81
66
|
}
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
67
|
+
}
|
|
68
|
+
else {
|
|
69
|
+
const platformData = this.$platformsDataService.getPlatformData(data.platform, projectData);
|
|
70
|
+
await this.syncChangedDataOnDevices(data, projectData, platformData, liveSyncInfo);
|
|
71
|
+
}
|
|
72
|
+
};
|
|
73
|
+
this.prepareReadyEventHandler = handler.bind(this);
|
|
74
|
+
this.$prepareController.on(constants_2.PREPARE_READY_EVENT_NAME, this.prepareReadyEventHandler);
|
|
75
|
+
}
|
|
76
|
+
await this.syncInitialDataOnDevices(projectData, liveSyncInfo, deviceDescriptorsForInitialSync);
|
|
77
|
+
this.attachDeviceLostHandler();
|
|
89
78
|
}
|
|
90
|
-
stop(data) {
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
yield this.$prepareController.stopWatchers(projectDir, platform);
|
|
105
|
-
}
|
|
79
|
+
async stop(data) {
|
|
80
|
+
const { projectDir, deviceIdentifiers, stopOptions } = data;
|
|
81
|
+
const liveSyncProcessInfo = this.$liveSyncProcessDataService.getPersistedData(projectDir);
|
|
82
|
+
if (liveSyncProcessInfo && !liveSyncProcessInfo.isStopped) {
|
|
83
|
+
const shouldAwaitPendingOperation = !stopOptions || stopOptions.shouldAwaitAllActions;
|
|
84
|
+
const deviceIdentifiersToRemove = deviceIdentifiers && deviceIdentifiers.length
|
|
85
|
+
? deviceIdentifiers
|
|
86
|
+
: _.map(liveSyncProcessInfo.deviceDescriptors, (d) => d.identifier);
|
|
87
|
+
const removedDeviceIdentifiers = _.remove(liveSyncProcessInfo.deviceDescriptors, (descriptor) => _.includes(deviceIdentifiersToRemove, descriptor.identifier)).map((descriptor) => descriptor.identifier);
|
|
88
|
+
for (let i = 0; i < liveSyncProcessInfo.platforms.length; i++) {
|
|
89
|
+
const platform = liveSyncProcessInfo.platforms[i];
|
|
90
|
+
const devices = this.$devicesService.getDevicesForPlatform(platform);
|
|
91
|
+
if (!devices || !devices.length) {
|
|
92
|
+
await this.$prepareController.stopWatchers(projectDir, platform);
|
|
106
93
|
}
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
for (let k = 0; k < liveSyncProcessInfo.platforms.length; k++) {
|
|
115
|
-
yield this.$prepareController.stopWatchers(projectDir, liveSyncProcessInfo.platforms[k]);
|
|
116
|
-
}
|
|
117
|
-
liveSyncProcessInfo.isStopped = true;
|
|
118
|
-
if (liveSyncProcessInfo.actionsChain && shouldAwaitPendingOperation) {
|
|
119
|
-
yield liveSyncProcessInfo.actionsChain;
|
|
120
|
-
}
|
|
121
|
-
liveSyncProcessInfo.deviceDescriptors = [];
|
|
122
|
-
if (this.prepareReadyEventHandler) {
|
|
123
|
-
this.$prepareController.removeListener(constants_2.PREPARE_READY_EVENT_NAME, this.prepareReadyEventHandler);
|
|
124
|
-
this.prepareReadyEventHandler = null;
|
|
125
|
-
}
|
|
126
|
-
const projectData = this.$projectDataService.getProjectData(projectDir);
|
|
127
|
-
yield this.$hooksService.executeAfterHooks("watch", {
|
|
128
|
-
hookArgs: {
|
|
129
|
-
projectData,
|
|
130
|
-
},
|
|
131
|
-
});
|
|
94
|
+
}
|
|
95
|
+
if (!deviceIdentifiers ||
|
|
96
|
+
!deviceIdentifiers.length ||
|
|
97
|
+
!liveSyncProcessInfo.deviceDescriptors ||
|
|
98
|
+
!liveSyncProcessInfo.deviceDescriptors.length) {
|
|
99
|
+
if (liveSyncProcessInfo.timer) {
|
|
100
|
+
clearTimeout(liveSyncProcessInfo.timer);
|
|
132
101
|
}
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
yield liveSyncProcessInfo.currentSyncAction;
|
|
102
|
+
for (let k = 0; k < liveSyncProcessInfo.platforms.length; k++) {
|
|
103
|
+
await this.$prepareController.stopWatchers(projectDir, liveSyncProcessInfo.platforms[k]);
|
|
136
104
|
}
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
deviceIdentifier,
|
|
141
|
-
keepProcessAlive: stopOptions === null || stopOptions === void 0 ? void 0 : stopOptions.keepProcessAlive,
|
|
142
|
-
});
|
|
143
|
-
});
|
|
144
|
-
if (stopOptions === null || stopOptions === void 0 ? void 0 : stopOptions.keepProcessAlive) {
|
|
145
|
-
this.removeAllListeners(constants_2.RunOnDeviceEvents.runOnDeviceStopped);
|
|
105
|
+
liveSyncProcessInfo.isStopped = true;
|
|
106
|
+
if (liveSyncProcessInfo.actionsChain && shouldAwaitPendingOperation) {
|
|
107
|
+
await liveSyncProcessInfo.actionsChain;
|
|
146
108
|
}
|
|
109
|
+
liveSyncProcessInfo.deviceDescriptors = [];
|
|
110
|
+
if (this.prepareReadyEventHandler) {
|
|
111
|
+
this.$prepareController.removeListener(constants_2.PREPARE_READY_EVENT_NAME, this.prepareReadyEventHandler);
|
|
112
|
+
this.prepareReadyEventHandler = null;
|
|
113
|
+
}
|
|
114
|
+
const projectData = this.$projectDataService.getProjectData(projectDir);
|
|
115
|
+
await this.$hooksService.executeAfterHooks("watch", {
|
|
116
|
+
hookArgs: {
|
|
117
|
+
projectData,
|
|
118
|
+
},
|
|
119
|
+
});
|
|
147
120
|
}
|
|
148
|
-
|
|
121
|
+
else if (liveSyncProcessInfo.currentSyncAction &&
|
|
122
|
+
shouldAwaitPendingOperation) {
|
|
123
|
+
await liveSyncProcessInfo.currentSyncAction;
|
|
124
|
+
}
|
|
125
|
+
_.each(removedDeviceIdentifiers, (deviceIdentifier) => {
|
|
126
|
+
this.emitCore(constants_2.RunOnDeviceEvents.runOnDeviceStopped, {
|
|
127
|
+
projectDir,
|
|
128
|
+
deviceIdentifier,
|
|
129
|
+
keepProcessAlive: stopOptions === null || stopOptions === void 0 ? void 0 : stopOptions.keepProcessAlive,
|
|
130
|
+
});
|
|
131
|
+
});
|
|
132
|
+
if (stopOptions === null || stopOptions === void 0 ? void 0 : stopOptions.keepProcessAlive) {
|
|
133
|
+
this.removeAllListeners(constants_2.RunOnDeviceEvents.runOnDeviceStopped);
|
|
134
|
+
}
|
|
135
|
+
}
|
|
149
136
|
}
|
|
150
137
|
getDeviceDescriptors(data) {
|
|
151
138
|
return this.$liveSyncProcessDataService.getDeviceDescriptors(data.projectDir);
|
|
152
139
|
}
|
|
153
|
-
refreshApplication(projectData, liveSyncResultInfo, filesChangeEventData, deviceDescriptor, fullSyncAction) {
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
isFullSync: liveSyncResultInfo.isFullSync,
|
|
165
|
-
});
|
|
166
|
-
return result;
|
|
140
|
+
async refreshApplication(projectData, liveSyncResultInfo, filesChangeEventData, deviceDescriptor, fullSyncAction) {
|
|
141
|
+
const result = deviceDescriptor.debuggingEnabled
|
|
142
|
+
? await this.refreshApplicationWithDebug(projectData, liveSyncResultInfo, filesChangeEventData, deviceDescriptor)
|
|
143
|
+
: await this.refreshApplicationWithoutDebug(projectData, liveSyncResultInfo, filesChangeEventData, deviceDescriptor, undefined, fullSyncAction);
|
|
144
|
+
const device = liveSyncResultInfo.deviceAppData.device;
|
|
145
|
+
this.emitCore(constants_2.RunOnDeviceEvents.runOnDeviceExecuted, {
|
|
146
|
+
projectDir: projectData.projectDir,
|
|
147
|
+
deviceIdentifier: device.deviceInfo.identifier,
|
|
148
|
+
applicationIdentifier: projectData.projectIdentifiers[device.deviceInfo.platform.toLowerCase()],
|
|
149
|
+
syncedFiles: liveSyncResultInfo.modifiedFilesData.map((m) => m.getLocalPath()),
|
|
150
|
+
isFullSync: liveSyncResultInfo.isFullSync,
|
|
167
151
|
});
|
|
152
|
+
return result;
|
|
168
153
|
}
|
|
169
|
-
refreshApplicationWithDebug(projectData, liveSyncResultInfo, filesChangeEventData, deviceDescriptor) {
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
shouldCheckDeveloperDiscImage: true,
|
|
177
|
-
});
|
|
178
|
-
debugOptions.start = !debugOptions.debugBrk;
|
|
179
|
-
debugOptions.forceDebuggerAttachedEvent = refreshInfo.didRestart;
|
|
180
|
-
yield this.$debugController.enableDebuggingCoreWithoutWaitingCurrentAction(projectData.projectDir, deviceDescriptor.identifier, debugOptions);
|
|
181
|
-
return refreshInfo;
|
|
154
|
+
async refreshApplicationWithDebug(projectData, liveSyncResultInfo, filesChangeEventData, deviceDescriptor) {
|
|
155
|
+
const debugOptions = deviceDescriptor.debugOptions || {};
|
|
156
|
+
liveSyncResultInfo.waitForDebugger = !!debugOptions.debugBrk;
|
|
157
|
+
liveSyncResultInfo.forceRefreshWithSocket = true;
|
|
158
|
+
const refreshInfo = await this.refreshApplicationWithoutDebug(projectData, liveSyncResultInfo, filesChangeEventData, deviceDescriptor, {
|
|
159
|
+
shouldSkipEmitLiveSyncNotification: true,
|
|
160
|
+
shouldCheckDeveloperDiscImage: true,
|
|
182
161
|
});
|
|
162
|
+
debugOptions.start = !debugOptions.debugBrk;
|
|
163
|
+
debugOptions.forceDebuggerAttachedEvent = refreshInfo.didRestart;
|
|
164
|
+
await this.$debugController.enableDebuggingCoreWithoutWaitingCurrentAction(projectData.projectDir, deviceDescriptor.identifier, debugOptions);
|
|
165
|
+
return refreshInfo;
|
|
183
166
|
}
|
|
184
|
-
refreshApplicationWithoutDebug(projectData, liveSyncResultInfo, filesChangeEventData, deviceDescriptor, settings, fullSyncAction) {
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
shouldRestart = yield platformLiveSyncService.shouldRestart(projectData, liveSyncResultInfo);
|
|
197
|
-
}
|
|
198
|
-
if (!shouldRestart) {
|
|
199
|
-
shouldRestart = !(yield platformLiveSyncService.tryRefreshApplication(projectData, liveSyncResultInfo));
|
|
200
|
-
}
|
|
201
|
-
if (!isFullSync && shouldRestart && fullSyncAction) {
|
|
202
|
-
this.$logger.trace(`Syncing all files as the current app state does not support hot updates.`);
|
|
203
|
-
liveSyncResultInfo.didRecover = true;
|
|
204
|
-
yield fullSyncAction();
|
|
205
|
-
}
|
|
206
|
-
if (shouldRestart) {
|
|
207
|
-
this.emit(constants_2.DEBUGGER_DETACHED_EVENT_NAME, {
|
|
208
|
-
deviceIdentifier: liveSyncResultInfo.deviceAppData.device.deviceInfo.identifier,
|
|
209
|
-
});
|
|
210
|
-
yield platformLiveSyncService.restartApplication(projectData, liveSyncResultInfo);
|
|
211
|
-
result.didRestart = true;
|
|
212
|
-
}
|
|
167
|
+
async refreshApplicationWithoutDebug(projectData, liveSyncResultInfo, filesChangeEventData, deviceDescriptor, settings, fullSyncAction) {
|
|
168
|
+
const result = { didRestart: false };
|
|
169
|
+
const platform = liveSyncResultInfo.deviceAppData.platform;
|
|
170
|
+
const applicationIdentifier = projectData.projectIdentifiers[platform.toLowerCase()];
|
|
171
|
+
const platformLiveSyncService = this.$liveSyncServiceResolver.resolveLiveSyncService(platform);
|
|
172
|
+
try {
|
|
173
|
+
const isFullSync = filesChangeEventData &&
|
|
174
|
+
(filesChangeEventData.hasNativeChanges ||
|
|
175
|
+
!filesChangeEventData.hasOnlyHotUpdateFiles);
|
|
176
|
+
let shouldRestart = isFullSync;
|
|
177
|
+
if (!shouldRestart) {
|
|
178
|
+
shouldRestart = await platformLiveSyncService.shouldRestart(projectData, liveSyncResultInfo);
|
|
213
179
|
}
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
const msg = `Unable to start application ${applicationIdentifier} on device ${liveSyncResultInfo.deviceAppData.device.deviceInfo.identifier}. Try starting it manually.`;
|
|
217
|
-
this.$logger.warn(msg);
|
|
218
|
-
const device = liveSyncResultInfo.deviceAppData.device;
|
|
219
|
-
const deviceIdentifier = device.deviceInfo.identifier;
|
|
220
|
-
if (!settings || !settings.shouldSkipEmitLiveSyncNotification) {
|
|
221
|
-
this.emitCore(constants_2.RunOnDeviceEvents.runOnDeviceNotification, {
|
|
222
|
-
projectDir: projectData.projectDir,
|
|
223
|
-
deviceIdentifier: device.deviceInfo.identifier,
|
|
224
|
-
applicationIdentifier: projectData.projectIdentifiers[device.deviceInfo.platform.toLowerCase()],
|
|
225
|
-
notification: msg,
|
|
226
|
-
});
|
|
227
|
-
}
|
|
228
|
-
if (settings &&
|
|
229
|
-
settings.shouldCheckDeveloperDiscImage &&
|
|
230
|
-
(err.message || err) === "Could not find developer disk image") {
|
|
231
|
-
const attachDebuggerOptions = {
|
|
232
|
-
platform: device.deviceInfo.platform,
|
|
233
|
-
isEmulator: device.isEmulator,
|
|
234
|
-
projectDir: projectData.projectDir,
|
|
235
|
-
deviceIdentifier,
|
|
236
|
-
debugOptions: deviceDescriptor.debugOptions,
|
|
237
|
-
outputPath: deviceDescriptor.buildData.outputPath,
|
|
238
|
-
};
|
|
239
|
-
this.emit(constants_2.USER_INTERACTION_NEEDED_EVENT_NAME, attachDebuggerOptions);
|
|
240
|
-
}
|
|
180
|
+
if (!shouldRestart) {
|
|
181
|
+
shouldRestart = !(await platformLiveSyncService.tryRefreshApplication(projectData, liveSyncResultInfo));
|
|
241
182
|
}
|
|
242
|
-
|
|
243
|
-
|
|
183
|
+
if (!isFullSync && shouldRestart && fullSyncAction) {
|
|
184
|
+
this.$logger.trace(`Syncing all files as the current app state does not support hot updates.`);
|
|
185
|
+
liveSyncResultInfo.didRecover = true;
|
|
186
|
+
await fullSyncAction();
|
|
187
|
+
}
|
|
188
|
+
if (shouldRestart) {
|
|
189
|
+
this.emit(constants_2.DEBUGGER_DETACHED_EVENT_NAME, {
|
|
190
|
+
deviceIdentifier: liveSyncResultInfo.deviceAppData.device.deviceInfo.identifier,
|
|
191
|
+
});
|
|
192
|
+
await platformLiveSyncService.restartApplication(projectData, liveSyncResultInfo);
|
|
193
|
+
result.didRestart = true;
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
catch (err) {
|
|
197
|
+
this.$logger.info(`Error while trying to start application ${applicationIdentifier} on device ${liveSyncResultInfo.deviceAppData.device.deviceInfo.identifier}. Error is: ${err.message || err}`);
|
|
198
|
+
const msg = `Unable to start application ${applicationIdentifier} on device ${liveSyncResultInfo.deviceAppData.device.deviceInfo.identifier}. Try starting it manually.`;
|
|
199
|
+
this.$logger.warn(msg);
|
|
200
|
+
const device = liveSyncResultInfo.deviceAppData.device;
|
|
201
|
+
const deviceIdentifier = device.deviceInfo.identifier;
|
|
202
|
+
if (!settings || !settings.shouldSkipEmitLiveSyncNotification) {
|
|
203
|
+
this.emitCore(constants_2.RunOnDeviceEvents.runOnDeviceNotification, {
|
|
204
|
+
projectDir: projectData.projectDir,
|
|
205
|
+
deviceIdentifier: device.deviceInfo.identifier,
|
|
206
|
+
applicationIdentifier: projectData.projectIdentifiers[device.deviceInfo.platform.toLowerCase()],
|
|
207
|
+
notification: msg,
|
|
208
|
+
});
|
|
209
|
+
}
|
|
210
|
+
if (settings &&
|
|
211
|
+
settings.shouldCheckDeveloperDiscImage &&
|
|
212
|
+
(err.message || err) === "Could not find developer disk image") {
|
|
213
|
+
const attachDebuggerOptions = {
|
|
214
|
+
platform: device.deviceInfo.platform,
|
|
215
|
+
isEmulator: device.isEmulator,
|
|
216
|
+
projectDir: projectData.projectDir,
|
|
217
|
+
deviceIdentifier,
|
|
218
|
+
debugOptions: deviceDescriptor.debugOptions,
|
|
219
|
+
outputPath: deviceDescriptor.buildData.outputPath,
|
|
220
|
+
};
|
|
221
|
+
this.emit(constants_2.USER_INTERACTION_NEEDED_EVENT_NAME, attachDebuggerOptions);
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
return result;
|
|
244
225
|
}
|
|
245
226
|
getDeviceDescriptorsForInitialSync(projectDir, deviceDescriptors) {
|
|
246
227
|
const currentRunData = this.$liveSyncProcessDataService.getPersistedData(projectDir);
|
|
@@ -250,25 +231,23 @@ class RunController extends events_1.EventEmitter {
|
|
|
250
231
|
: deviceDescriptors;
|
|
251
232
|
return deviceDescriptorsForInitialSync;
|
|
252
233
|
}
|
|
253
|
-
initializeSetup(projectData) {
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
}
|
|
262
|
-
});
|
|
234
|
+
async initializeSetup(projectData) {
|
|
235
|
+
try {
|
|
236
|
+
await this.$pluginsService.ensureAllDependenciesAreInstalled(projectData);
|
|
237
|
+
}
|
|
238
|
+
catch (err) {
|
|
239
|
+
this.$logger.trace(err);
|
|
240
|
+
this.$errors.fail(`Unable to install dependencies. Make sure your package.json is valid and all dependencies are correct. Error is: ${err.message}`);
|
|
241
|
+
}
|
|
263
242
|
}
|
|
264
243
|
attachDeviceLostHandler() {
|
|
265
|
-
this.$devicesService.on(constants_1.DeviceDiscoveryEventNames.DEVICE_LOST, (device) =>
|
|
244
|
+
this.$devicesService.on(constants_1.DeviceDiscoveryEventNames.DEVICE_LOST, async (device) => {
|
|
266
245
|
this.$logger.trace(`Received ${constants_1.DeviceDiscoveryEventNames.DEVICE_LOST} event in LiveSync service for ${device.deviceInfo.identifier}. Will stop LiveSync operation for this device.`);
|
|
267
246
|
for (const projectDir in this.$liveSyncProcessDataService.getAllPersistedData()) {
|
|
268
247
|
try {
|
|
269
248
|
const deviceDescriptors = this.getDeviceDescriptors({ projectDir });
|
|
270
249
|
if (_.find(deviceDescriptors, (d) => d.identifier === device.deviceInfo.identifier)) {
|
|
271
|
-
|
|
250
|
+
await this.stop({
|
|
272
251
|
projectDir,
|
|
273
252
|
deviceIdentifiers: [device.deviceInfo.identifier],
|
|
274
253
|
});
|
|
@@ -278,240 +257,248 @@ class RunController extends events_1.EventEmitter {
|
|
|
278
257
|
this.$logger.warn(`Unable to stop LiveSync operation for ${device.deviceInfo.identifier}.`, err);
|
|
279
258
|
}
|
|
280
259
|
}
|
|
281
|
-
})
|
|
260
|
+
});
|
|
282
261
|
}
|
|
283
|
-
syncInitialDataOnDevices(projectData, liveSyncInfo, deviceDescriptors) {
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
const
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
262
|
+
async syncInitialDataOnDevices(projectData, liveSyncInfo, deviceDescriptors) {
|
|
263
|
+
const rebuiltInformation = {};
|
|
264
|
+
const deviceAction = async (device) => {
|
|
265
|
+
const deviceDescriptor = _.find(deviceDescriptors, (dd) => dd.identifier === device.deviceInfo.identifier);
|
|
266
|
+
const prepareData = this.$prepareDataService.getPrepareData(liveSyncInfo.projectDir, device.deviceInfo.platform, {
|
|
267
|
+
...liveSyncInfo,
|
|
268
|
+
...deviceDescriptor.buildData,
|
|
269
|
+
nativePrepare: {
|
|
270
|
+
skipNativePrepare: !!deviceDescriptor.skipNativePrepare,
|
|
271
|
+
},
|
|
272
|
+
watch: !liveSyncInfo.skipWatcher,
|
|
273
|
+
});
|
|
274
|
+
const prepareResultData = await this.$prepareController.prepare(prepareData);
|
|
275
|
+
const buildData = {
|
|
276
|
+
...deviceDescriptor.buildData,
|
|
277
|
+
buildForDevice: !device.isEmulator,
|
|
278
|
+
};
|
|
279
|
+
const platformData = this.$platformsDataService.getPlatformData(device.deviceInfo.platform, projectData);
|
|
280
|
+
try {
|
|
281
|
+
if (rebuiltInformation[platformData.platformNameLowerCase] &&
|
|
282
|
+
(this.$mobileHelper.isAndroidPlatform(platformData.platformNameLowerCase) ||
|
|
283
|
+
rebuiltInformation[platformData.platformNameLowerCase]
|
|
284
|
+
.isEmulator === device.isEmulator)) {
|
|
285
|
+
await this.$deviceInstallAppService.installOnDevice(device, buildData);
|
|
286
|
+
}
|
|
287
|
+
else {
|
|
288
|
+
const shouldBuild = prepareResultData.hasNativeChanges ||
|
|
289
|
+
buildData.nativePrepare.forceRebuildNativeApp ||
|
|
290
|
+
(await this.$buildController.shouldBuild(buildData));
|
|
291
|
+
if (shouldBuild) {
|
|
292
|
+
await deviceDescriptor.buildAction();
|
|
293
|
+
rebuiltInformation[platformData.platformNameLowerCase] = {
|
|
294
|
+
isEmulator: device.isEmulator,
|
|
295
|
+
platform: platformData.platformNameLowerCase,
|
|
296
|
+
};
|
|
300
297
|
}
|
|
301
298
|
else {
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
rebuiltInformation[platformData.platformNameLowerCase] = {
|
|
308
|
-
isEmulator: device.isEmulator,
|
|
309
|
-
platform: platformData.platformNameLowerCase,
|
|
310
|
-
};
|
|
311
|
-
}
|
|
312
|
-
else {
|
|
313
|
-
yield this.$analyticsService.trackEventActionInGoogleAnalytics({
|
|
314
|
-
action: "LiveSync",
|
|
315
|
-
device,
|
|
316
|
-
projectDir: projectData.projectDir,
|
|
317
|
-
});
|
|
318
|
-
}
|
|
319
|
-
yield this.$deviceInstallAppService.installOnDeviceIfNeeded(device, buildData);
|
|
299
|
+
await this.$analyticsService.trackEventActionInGoogleAnalytics({
|
|
300
|
+
action: "LiveSync",
|
|
301
|
+
device,
|
|
302
|
+
projectDir: projectData.projectDir,
|
|
303
|
+
});
|
|
320
304
|
}
|
|
321
|
-
|
|
322
|
-
const { force, useHotModuleReload, skipWatcher } = liveSyncInfo;
|
|
323
|
-
const liveSyncResultInfo = yield platformLiveSyncService.fullSync({
|
|
324
|
-
force,
|
|
325
|
-
useHotModuleReload,
|
|
326
|
-
projectData,
|
|
327
|
-
device,
|
|
328
|
-
watch: !skipWatcher,
|
|
329
|
-
liveSyncDeviceData: deviceDescriptor,
|
|
330
|
-
});
|
|
331
|
-
yield this.refreshApplication(projectData, liveSyncResultInfo, null, deviceDescriptor);
|
|
332
|
-
this.$logger.info(`Successfully synced application ${liveSyncResultInfo.deviceAppData.appIdentifier} on device ${liveSyncResultInfo.deviceAppData.device.deviceInfo.identifier}.`);
|
|
333
|
-
this.emitCore(constants_2.RunOnDeviceEvents.runOnDeviceStarted, {
|
|
334
|
-
projectDir: projectData.projectDir,
|
|
335
|
-
deviceIdentifier: device.deviceInfo.identifier,
|
|
336
|
-
applicationIdentifier: projectData.projectIdentifiers[device.deviceInfo.platform.toLowerCase()],
|
|
337
|
-
});
|
|
305
|
+
await this.$deviceInstallAppService.installOnDeviceIfNeeded(device, buildData);
|
|
338
306
|
}
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
307
|
+
const platformLiveSyncService = this.$liveSyncServiceResolver.resolveLiveSyncService(platformData.platformNameLowerCase);
|
|
308
|
+
const { force, useHotModuleReload, skipWatcher } = liveSyncInfo;
|
|
309
|
+
const liveSyncResultInfo = await platformLiveSyncService.fullSync({
|
|
310
|
+
force,
|
|
311
|
+
useHotModuleReload,
|
|
312
|
+
projectData,
|
|
313
|
+
device,
|
|
314
|
+
watch: !skipWatcher,
|
|
315
|
+
liveSyncDeviceData: deviceDescriptor,
|
|
316
|
+
});
|
|
317
|
+
await this.refreshApplication(projectData, liveSyncResultInfo, null, deviceDescriptor);
|
|
318
|
+
this.$logger.info(`Successfully synced application ${liveSyncResultInfo.deviceAppData.appIdentifier} on device ${liveSyncResultInfo.deviceAppData.device.deviceInfo.identifier}.`);
|
|
319
|
+
this.emitCore(constants_2.RunOnDeviceEvents.runOnDeviceStarted, {
|
|
320
|
+
projectDir: projectData.projectDir,
|
|
321
|
+
deviceIdentifier: device.deviceInfo.identifier,
|
|
322
|
+
applicationIdentifier: projectData.projectIdentifiers[device.deviceInfo.platform.toLowerCase()],
|
|
323
|
+
});
|
|
324
|
+
}
|
|
325
|
+
catch (err) {
|
|
326
|
+
this.$logger.warn(`Unable to apply changes on device: ${device.deviceInfo.identifier}. Error is: ${err.message}.`);
|
|
327
|
+
this.$logger.trace(err);
|
|
328
|
+
this.emitCore(constants_2.RunOnDeviceEvents.runOnDeviceError, {
|
|
329
|
+
projectDir: projectData.projectDir,
|
|
330
|
+
deviceIdentifier: device.deviceInfo.identifier,
|
|
331
|
+
applicationIdentifier: projectData.projectIdentifiers[device.deviceInfo.platform.toLowerCase()],
|
|
332
|
+
error: err,
|
|
333
|
+
});
|
|
334
|
+
await this.stop({
|
|
335
|
+
projectDir: projectData.projectDir,
|
|
336
|
+
deviceIdentifiers: [device.deviceInfo.identifier],
|
|
337
|
+
stopOptions: { shouldAwaitAllActions: false },
|
|
338
|
+
});
|
|
339
|
+
}
|
|
340
|
+
};
|
|
341
|
+
await this.addActionToChain(projectData.projectDir, () => this.$devicesService.execute(deviceAction, (device) => _.some(deviceDescriptors, (deviceDescriptor) => deviceDescriptor.identifier === device.deviceInfo.identifier)));
|
|
357
342
|
}
|
|
358
|
-
syncChangedDataOnDevices(data, projectData, platformData, liveSyncInfo) {
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
343
|
+
async syncChangedDataOnDevices(data, projectData, platformData, liveSyncInfo) {
|
|
344
|
+
const successfullySyncedMessageFormat = `Successfully synced application %s on device %s.`;
|
|
345
|
+
const rebuiltInformation = {};
|
|
346
|
+
const deviceAction = async (device) => {
|
|
347
|
+
var _a, _b;
|
|
348
|
+
const deviceDescriptors = this.$liveSyncProcessDataService.getDeviceDescriptors(projectData.projectDir);
|
|
349
|
+
const deviceDescriptor = _.find(deviceDescriptors, (dd) => dd.identifier === device.deviceInfo.identifier);
|
|
350
|
+
const platformData = this.$platformsDataService.getPlatformData(data.platform, projectData);
|
|
351
|
+
const prepareData = this.$prepareDataService.getPrepareData(liveSyncInfo.projectDir, device.deviceInfo.platform, {
|
|
352
|
+
...liveSyncInfo,
|
|
353
|
+
...deviceDescriptor.buildData,
|
|
354
|
+
nativePrepare: {
|
|
355
|
+
skipNativePrepare: !!deviceDescriptor.skipNativePrepare,
|
|
356
|
+
},
|
|
357
|
+
watch: !liveSyncInfo.skipWatcher,
|
|
358
|
+
});
|
|
359
|
+
try {
|
|
360
|
+
const platformLiveSyncService = this.$liveSyncServiceResolver.resolveLiveSyncService(device.deviceInfo.platform);
|
|
361
|
+
const allAppFiles = ((_b = (_a = data.hmrData) === null || _a === void 0 ? void 0 : _a.fallbackFiles) === null || _b === void 0 ? void 0 : _b.length)
|
|
362
|
+
? data.hmrData.fallbackFiles
|
|
363
|
+
: data.files;
|
|
364
|
+
const filesToSync = data.hasOnlyHotUpdateFiles
|
|
365
|
+
? data.files
|
|
366
|
+
: allAppFiles;
|
|
367
|
+
const watchInfo = {
|
|
368
|
+
liveSyncDeviceData: deviceDescriptor,
|
|
369
|
+
projectData,
|
|
370
|
+
filesToRemove: [],
|
|
371
|
+
filesToSync,
|
|
372
|
+
hmrData: data.hmrData,
|
|
373
|
+
useHotModuleReload: liveSyncInfo.useHotModuleReload,
|
|
374
|
+
force: liveSyncInfo.force,
|
|
375
|
+
connectTimeout: 1000,
|
|
376
|
+
};
|
|
377
|
+
const deviceAppData = await platformLiveSyncService.getAppData(_.merge({ device, watch: true }, watchInfo));
|
|
378
|
+
if (data.hasNativeChanges) {
|
|
379
|
+
const rebuiltInfo = rebuiltInformation[platformData.platformNameLowerCase] &&
|
|
380
|
+
(this.$mobileHelper.isAndroidPlatform(platformData.platformNameLowerCase) ||
|
|
381
|
+
rebuiltInformation[platformData.platformNameLowerCase]
|
|
382
|
+
.isEmulator === device.isEmulator);
|
|
383
|
+
if (!rebuiltInfo) {
|
|
384
|
+
await this.$prepareNativePlatformService.prepareNativePlatform(platformData, projectData, prepareData);
|
|
385
|
+
await deviceDescriptor.buildAction();
|
|
386
|
+
rebuiltInformation[platformData.platformNameLowerCase] = {
|
|
387
|
+
isEmulator: device.isEmulator,
|
|
388
|
+
platform: platformData.platformNameLowerCase,
|
|
389
|
+
packageFilePath: null,
|
|
390
|
+
};
|
|
391
|
+
}
|
|
392
|
+
await this.$deviceInstallAppService.installOnDevice(device, deviceDescriptor.buildData);
|
|
393
|
+
await platformLiveSyncService.syncAfterInstall(device, watchInfo);
|
|
394
|
+
await this.refreshApplication(projectData, {
|
|
395
|
+
deviceAppData,
|
|
396
|
+
modifiedFilesData: [],
|
|
397
|
+
isFullSync: false,
|
|
384
398
|
useHotModuleReload: liveSyncInfo.useHotModuleReload,
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
if (!rebuiltInfo) {
|
|
395
|
-
yield this.$prepareNativePlatformService.prepareNativePlatform(platformData, projectData, prepareData);
|
|
396
|
-
yield deviceDescriptor.buildAction();
|
|
397
|
-
rebuiltInformation[platformData.platformNameLowerCase] = {
|
|
398
|
-
isEmulator: device.isEmulator,
|
|
399
|
-
platform: platformData.platformNameLowerCase,
|
|
400
|
-
packageFilePath: null,
|
|
401
|
-
};
|
|
402
|
-
}
|
|
403
|
-
yield this.$deviceInstallAppService.installOnDevice(device, deviceDescriptor.buildData);
|
|
404
|
-
yield platformLiveSyncService.syncAfterInstall(device, watchInfo);
|
|
405
|
-
yield this.refreshApplication(projectData, {
|
|
406
|
-
deviceAppData,
|
|
407
|
-
modifiedFilesData: [],
|
|
408
|
-
isFullSync: false,
|
|
409
|
-
useHotModuleReload: liveSyncInfo.useHotModuleReload,
|
|
410
|
-
}, data, deviceDescriptor);
|
|
411
|
-
this.$logger.info(util.format(successfullySyncedMessageFormat, deviceAppData.appIdentifier, device.deviceInfo.identifier));
|
|
399
|
+
}, data, deviceDescriptor);
|
|
400
|
+
this.$logger.info(util.format(successfullySyncedMessageFormat, deviceAppData.appIdentifier, device.deviceInfo.identifier));
|
|
401
|
+
}
|
|
402
|
+
else {
|
|
403
|
+
const isInHMRMode = liveSyncInfo.useHotModuleReload &&
|
|
404
|
+
data.hmrData &&
|
|
405
|
+
data.hmrData.hash;
|
|
406
|
+
if (isInHMRMode) {
|
|
407
|
+
this.$hmrStatusService.watchHmrStatus(device.deviceInfo.identifier, data.hmrData.hash);
|
|
412
408
|
}
|
|
413
|
-
|
|
414
|
-
const
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
}
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
const fullSyncAction = () => __awaiter(this, void 0, void 0, function* () {
|
|
423
|
-
watchInfo.filesToSync = allAppFiles;
|
|
424
|
-
const fullLiveSyncResultInfo = yield platformLiveSyncService.liveSyncWatchAction(device, watchInfo);
|
|
425
|
-
_.assign(liveSyncResultInfo, fullLiveSyncResultInfo);
|
|
426
|
-
});
|
|
427
|
-
yield this.$hooksService.executeBeforeHooks("watchAction", {
|
|
428
|
-
hookArgs: {
|
|
429
|
-
liveSyncResultInfo,
|
|
430
|
-
filesToSync,
|
|
431
|
-
allAppFiles,
|
|
432
|
-
isInHMRMode,
|
|
433
|
-
filesChangedEvent: data,
|
|
434
|
-
},
|
|
435
|
-
});
|
|
436
|
-
yield this.refreshApplication(projectData, liveSyncResultInfo, data, deviceDescriptor, fullSyncAction);
|
|
437
|
-
if (!liveSyncResultInfo.didRecover && isInHMRMode) {
|
|
438
|
-
const status = yield this.$hmrStatusService.getHmrStatus(device.deviceInfo.identifier, data.hmrData.hash);
|
|
439
|
-
if (status === constants_1.HmrConstants.HMR_ERROR_STATUS) {
|
|
440
|
-
yield fullSyncAction();
|
|
441
|
-
liveSyncResultInfo.isFullSync = true;
|
|
442
|
-
yield this.refreshApplication(projectData, liveSyncResultInfo, data, deviceDescriptor);
|
|
443
|
-
}
|
|
444
|
-
}
|
|
445
|
-
yield this.$hooksService.executeAfterHooks("watchAction", {
|
|
409
|
+
const watchAction = async () => {
|
|
410
|
+
const liveSyncResultInfo = await platformLiveSyncService.liveSyncWatchAction(device, watchInfo);
|
|
411
|
+
const fullSyncAction = async () => {
|
|
412
|
+
watchInfo.filesToSync = allAppFiles;
|
|
413
|
+
const fullLiveSyncResultInfo = await platformLiveSyncService.liveSyncWatchAction(device, watchInfo);
|
|
414
|
+
_.assign(liveSyncResultInfo, fullLiveSyncResultInfo);
|
|
415
|
+
};
|
|
416
|
+
await this.$hooksService.executeBeforeHooks("watchAction", {
|
|
417
|
+
hookArgs: {
|
|
446
418
|
liveSyncResultInfo,
|
|
447
419
|
filesToSync,
|
|
448
420
|
allAppFiles,
|
|
449
|
-
filesChangedEvent: data,
|
|
450
421
|
isInHMRMode,
|
|
451
|
-
|
|
452
|
-
|
|
422
|
+
filesChangedEvent: data,
|
|
423
|
+
},
|
|
453
424
|
});
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
catch (err) {
|
|
462
|
-
this.$logger.trace(`Error while trying to execute fast sync. Now we'll check the state of the app and we'll try to resurrect from the error. The error is: ${err}`);
|
|
425
|
+
await this.refreshApplication(projectData, liveSyncResultInfo, data, deviceDescriptor, fullSyncAction);
|
|
426
|
+
if (!liveSyncResultInfo.didRecover && isInHMRMode) {
|
|
427
|
+
const status = await this.$hmrStatusService.getHmrStatus(device.deviceInfo.identifier, data.hmrData.hash);
|
|
428
|
+
if (status === constants_1.HmrConstants.HMR_ERROR_STATUS) {
|
|
429
|
+
await fullSyncAction();
|
|
430
|
+
liveSyncResultInfo.isFullSync = true;
|
|
431
|
+
await this.refreshApplication(projectData, liveSyncResultInfo, data, deviceDescriptor);
|
|
463
432
|
}
|
|
464
433
|
}
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
434
|
+
await this.$hooksService.executeAfterHooks("watchAction", {
|
|
435
|
+
liveSyncResultInfo,
|
|
436
|
+
filesToSync,
|
|
437
|
+
allAppFiles,
|
|
438
|
+
filesChangedEvent: data,
|
|
439
|
+
isInHMRMode,
|
|
440
|
+
});
|
|
441
|
+
this.$logger.info(util.format(successfullySyncedMessageFormat, deviceAppData.appIdentifier, device.deviceInfo.identifier));
|
|
442
|
+
};
|
|
443
|
+
if (liveSyncInfo.useHotModuleReload) {
|
|
444
|
+
try {
|
|
445
|
+
this.$logger.trace("Try executing watch action without any preparation of files.");
|
|
446
|
+
await watchAction();
|
|
447
|
+
this.$logger.trace("Successfully executed watch action without any preparation of files.");
|
|
448
|
+
return;
|
|
449
|
+
}
|
|
450
|
+
catch (err) {
|
|
451
|
+
this.$logger.trace(`Error while trying to execute fast sync. Now we'll check the state of the app and we'll try to resurrect from the error. The error is: ${err}`);
|
|
452
|
+
}
|
|
468
453
|
}
|
|
454
|
+
await this.$deviceInstallAppService.installOnDeviceIfNeeded(device, deviceDescriptor.buildData);
|
|
455
|
+
watchInfo.connectTimeout = null;
|
|
456
|
+
await watchAction();
|
|
469
457
|
}
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
}
|
|
458
|
+
}
|
|
459
|
+
catch (err) {
|
|
460
|
+
this.$logger.warn(`Unable to apply changes for device: ${device.deviceInfo.identifier}. Error is: ${err && err.message}.`);
|
|
461
|
+
this.emitCore(constants_2.RunOnDeviceEvents.runOnDeviceError, {
|
|
462
|
+
projectDir: projectData.projectDir,
|
|
463
|
+
deviceIdentifier: device.deviceInfo.identifier,
|
|
464
|
+
applicationIdentifier: projectData.projectIdentifiers[device.deviceInfo.platform.toLowerCase()],
|
|
465
|
+
error: err,
|
|
466
|
+
});
|
|
467
|
+
await this.stop({
|
|
468
|
+
projectDir: projectData.projectDir,
|
|
469
|
+
deviceIdentifiers: [device.deviceInfo.identifier],
|
|
470
|
+
stopOptions: { shouldAwaitAllActions: false },
|
|
471
|
+
});
|
|
472
|
+
}
|
|
473
|
+
};
|
|
474
|
+
await this.addActionToChain(projectData.projectDir, () => this.$devicesService.execute(deviceAction, (device) => {
|
|
475
|
+
const liveSyncProcessInfo = this.$liveSyncProcessDataService.getPersistedData(projectData.projectDir);
|
|
476
|
+
return (data.platform.toLowerCase() ===
|
|
477
|
+
device.deviceInfo.platform.toLowerCase() &&
|
|
478
|
+
liveSyncProcessInfo &&
|
|
479
|
+
_.some(liveSyncProcessInfo.deviceDescriptors, (deviceDescriptor) => deviceDescriptor.identifier === device.deviceInfo.identifier));
|
|
480
|
+
}));
|
|
481
|
+
}
|
|
482
|
+
async addActionToChain(projectDir, action) {
|
|
483
|
+
const liveSyncInfo = this.$liveSyncProcessDataService.getPersistedData(projectDir);
|
|
484
|
+
if (liveSyncInfo) {
|
|
485
|
+
liveSyncInfo.actionsChain = liveSyncInfo.actionsChain.then(async () => {
|
|
486
|
+
if (!liveSyncInfo.isStopped) {
|
|
487
|
+
liveSyncInfo.currentSyncAction = action();
|
|
488
|
+
const res = await liveSyncInfo.currentSyncAction;
|
|
489
|
+
return res;
|
|
483
490
|
}
|
|
484
491
|
});
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
device.deviceInfo.platform.toLowerCase() &&
|
|
489
|
-
liveSyncProcessInfo &&
|
|
490
|
-
_.some(liveSyncProcessInfo.deviceDescriptors, (deviceDescriptor) => deviceDescriptor.identifier === device.deviceInfo.identifier));
|
|
491
|
-
}));
|
|
492
|
-
});
|
|
493
|
-
}
|
|
494
|
-
addActionToChain(projectDir, action) {
|
|
495
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
496
|
-
const liveSyncInfo = this.$liveSyncProcessDataService.getPersistedData(projectDir);
|
|
497
|
-
if (liveSyncInfo) {
|
|
498
|
-
liveSyncInfo.actionsChain = liveSyncInfo.actionsChain.then(() => __awaiter(this, void 0, void 0, function* () {
|
|
499
|
-
if (!liveSyncInfo.isStopped) {
|
|
500
|
-
liveSyncInfo.currentSyncAction = action();
|
|
501
|
-
const res = yield liveSyncInfo.currentSyncAction;
|
|
502
|
-
return res;
|
|
503
|
-
}
|
|
504
|
-
}));
|
|
505
|
-
const result = yield liveSyncInfo.actionsChain;
|
|
506
|
-
return result;
|
|
507
|
-
}
|
|
508
|
-
});
|
|
492
|
+
const result = await liveSyncInfo.actionsChain;
|
|
493
|
+
return result;
|
|
494
|
+
}
|
|
509
495
|
}
|
|
510
496
|
emitCore(event, data) {
|
|
511
497
|
this.$logger.trace(`Will emit event ${event} with data`, data);
|
|
512
498
|
this.emit(event, data);
|
|
513
499
|
}
|
|
514
500
|
}
|
|
501
|
+
exports.RunController = RunController;
|
|
515
502
|
__decorate([
|
|
516
503
|
(0, decorators_1.performanceLog)()
|
|
517
504
|
], RunController.prototype, "refreshApplicationWithoutDebug", null);
|
|
@@ -521,5 +508,4 @@ __decorate([
|
|
|
521
508
|
__decorate([
|
|
522
509
|
(0, helpers_1.hook)("syncChangedDataOnDevices")
|
|
523
510
|
], RunController.prototype, "syncChangedDataOnDevices", null);
|
|
524
|
-
exports.RunController = RunController;
|
|
525
511
|
yok_1.injector.register("runController", RunController);
|