nativescript 8.9.0-dev.2 → 8.9.0-dev.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/config/test-deps-versions-generated.json +1 -1
- package/docs/man_pages/project/configuration/widget-ios.md +24 -0
- package/docs/man_pages/project/configuration/widget.md +24 -0
- package/docs/man_pages/start.md +1 -1
- package/lib/android-tools-info.js +11 -22
- package/lib/base-package-manager.js +53 -70
- package/lib/bun-package-manager.js +75 -98
- package/lib/color.js +4 -4
- 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 +54 -67
- package/lib/commands/build.js +55 -87
- package/lib/commands/clean.js +169 -184
- package/lib/commands/command-base.js +14 -27
- package/lib/commands/config.js +49 -68
- package/lib/commands/create-project.js +215 -234
- package/lib/commands/debug.js +66 -88
- package/lib/commands/deploy.js +28 -44
- package/lib/commands/embedding/embed.js +37 -56
- 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 +49 -60
- 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 +31 -44
- package/lib/commands/plugin/create-plugin.js +114 -137
- package/lib/commands/plugin/list-plugins.js +22 -33
- package/lib/commands/plugin/remove-plugin.js +21 -34
- package/lib/commands/plugin/update-plugin.js +20 -33
- package/lib/commands/post-install.js +25 -38
- package/lib/commands/prepare.js +19 -35
- package/lib/commands/preview.js +50 -63
- package/lib/commands/remove-platform.js +7 -18
- package/lib/commands/resources/resources-update.js +14 -27
- package/lib/commands/run.js +55 -76
- package/lib/commands/start.js +6 -19
- package/lib/commands/test-init.js +126 -137
- package/lib/commands/test.js +72 -95
- package/lib/commands/typings.js +126 -142
- package/lib/commands/update-platform.js +26 -39
- package/lib/commands/update.js +31 -44
- package/lib/commands/widget.js +408 -357
- 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 +29 -42
- package/lib/common/commands/autocompletion.js +41 -58
- package/lib/common/commands/device/device-log-stream.js +12 -23
- package/lib/common/commands/device/get-file.js +23 -34
- 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 +24 -35
- package/lib/common/commands/device/put-file.js +23 -34
- 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 +27 -42
- package/lib/common/commands/proxy/proxy-base.js +11 -22
- 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 +84 -101
- package/lib/common/errors.js +92 -107
- package/lib/common/file-system.js +110 -132
- package/lib/common/header.js +1 -2
- package/lib/common/helpers.js +149 -178
- package/lib/common/host-info.js +40 -53
- package/lib/common/http-client.js +104 -119
- 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 +4 -4
- package/lib/common/mobile/android/android-application-manager.js +138 -159
- package/lib/common/mobile/android/android-debug-bridge-result-handler.js +1 -1
- package/lib/common/mobile/android/android-debug-bridge.js +92 -117
- package/lib/common/mobile/android/android-device-file-system.js +101 -134
- package/lib/common/mobile/android/android-device-hash-service.js +52 -77
- package/lib/common/mobile/android/android-device.js +73 -90
- 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 +78 -99
- package/lib/common/mobile/android/device-android-debug-bridge.js +13 -29
- package/lib/common/mobile/android/genymotion/genymotion-service.js +94 -121
- package/lib/common/mobile/android/genymotion/virtualbox-service.js +74 -91
- package/lib/common/mobile/android/logcat-helper.js +114 -133
- package/lib/common/mobile/application-manager-base.js +89 -112
- 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 +106 -143
- 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 +66 -95
- package/lib/common/mobile/ios/simulator/ios-sim-resolver.js +1 -1
- package/lib/common/mobile/ios/simulator/ios-simulator-application-manager.js +61 -90
- package/lib/common/mobile/ios/simulator/ios-simulator-device.js +31 -47
- 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 +44 -63
- package/lib/common/mobile/mobile-core/android-emulator-discovery.js +23 -34
- package/lib/common/mobile/mobile-core/android-process-service.js +174 -213
- package/lib/common/mobile/mobile-core/device-discovery.js +2 -13
- package/lib/common/mobile/mobile-core/devices-service.js +400 -450
- package/lib/common/mobile/mobile-core/ios-device-discovery.js +25 -36
- package/lib/common/mobile/mobile-core/ios-simulator-discovery.js +49 -64
- 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/prompter.js +91 -106
- package/lib/common/queue.js +9 -20
- package/lib/common/services/auto-completion-service.js +40 -53
- package/lib/common/services/cancellation.js +17 -28
- package/lib/common/services/commands-service.js +156 -179
- package/lib/common/services/help-service.js +130 -155
- package/lib/common/services/hooks-service.js +99 -114
- package/lib/common/services/ios-notification-service.js +21 -34
- package/lib/common/services/json-file-settings-service.js +56 -75
- 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 +6 -17
- package/lib/common/services/net-service.js +92 -109
- 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 +25 -38
- package/lib/config.js +41 -56
- package/lib/constants.js +24 -24
- package/lib/controllers/build-controller.js +82 -99
- package/lib/controllers/debug-controller.js +111 -132
- package/lib/controllers/deploy-controller.js +15 -23
- package/lib/controllers/migrate-controller.js +780 -853
- package/lib/controllers/platform-controller.js +74 -89
- package/lib/controllers/prepare-controller.js +241 -270
- package/lib/controllers/run-controller.js +411 -425
- package/lib/controllers/update-controller-base.js +16 -29
- package/lib/controllers/update-controller.js +101 -126
- package/lib/data/prepare-data.js +4 -1
- package/lib/definitions/project.d.ts +24 -24
- 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 +155 -170
- package/lib/device-sockets/ios/notification.js +1 -1
- package/lib/device-sockets/ios/socket-request-executor.js +26 -41
- package/lib/helpers/android-bundle-validator-helper.js +1 -1
- package/lib/helpers/deploy-command-helper.js +44 -49
- package/lib/helpers/key-command-helper.js +4 -13
- package/lib/helpers/livesync-command-helper.js +138 -153
- 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 +103 -124
- package/lib/key-commands/index.js +150 -200
- package/lib/nativescript-cli.js +5 -14
- package/lib/node-package-manager.js +90 -113
- package/lib/options.js +4 -13
- package/lib/package-installation-manager.js +132 -167
- package/lib/package-manager.js +64 -87
- package/lib/platform-command-param.js +4 -15
- package/lib/pnpm-package-manager.js +60 -79
- 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 +165 -201
- 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 +10 -21
- package/lib/services/android/gradle-build-service.js +22 -35
- package/lib/services/android/gradle-command-service.js +22 -35
- package/lib/services/android-device-debug-service.js +92 -119
- package/lib/services/android-plugin-build-service.js +219 -245
- package/lib/services/android-project-service.js +134 -179
- package/lib/services/android-resources-migration-service.js +57 -70
- package/lib/services/apple-portal/apple-portal-application-service.js +46 -63
- package/lib/services/apple-portal/apple-portal-session-service.js +196 -215
- package/lib/services/apple-portal/srp/srp-wrapper.js +45 -60
- package/lib/services/assets-generation/assets-generation-service.js +114 -128
- 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 +124 -145
- package/lib/services/device/device-install-app-service.js +54 -71
- package/lib/services/doctor-service.js +106 -125
- package/lib/services/extensibility-service.js +87 -106
- package/lib/services/files-hash-service.js +26 -43
- package/lib/services/hmr-status-service.js +1 -1
- package/lib/services/initialize-service.js +38 -51
- package/lib/services/ios/export-options-plist-service.js +41 -54
- package/lib/services/ios/ios-signing-service.js +171 -190
- package/lib/services/ios/spm-service.js +52 -65
- 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 +52 -71
- package/lib/services/ios-debugger-port-service.js +24 -37
- 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 +530 -591
- package/lib/services/ios-provision-service.js +110 -131
- package/lib/services/ios-watch-app-service.js +21 -32
- package/lib/services/ip-service.js +39 -54
- 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 +121 -150
- package/lib/services/livesync/android-device-livesync-sockets-service.js +123 -154
- package/lib/services/livesync/android-livesync-service.js +14 -35
- package/lib/services/livesync/android-livesync-tool.js +90 -113
- package/lib/services/livesync/device-livesync-service-base.js +16 -29
- package/lib/services/livesync/ios-device-livesync-service.js +120 -149
- package/lib/services/livesync/ios-livesync-service.js +43 -59
- package/lib/services/livesync/platform-livesync-service-base.js +98 -123
- package/lib/services/log-parser-service.js +1 -1
- package/lib/services/log-source-map-service.js +31 -42
- package/lib/services/marking-mode-service.js +17 -30
- package/lib/services/npm-config-service.js +1 -1
- package/lib/services/pacote-service.js +54 -69
- package/lib/services/performance-service.js +1 -1
- package/lib/services/platform/add-platform-service.js +57 -78
- package/lib/services/platform/platform-validation-service.js +22 -33
- package/lib/services/platform/prepare-native-platform-service.js +51 -64
- package/lib/services/platform-environment-requirements.js +27 -38
- package/lib/services/plugins-service.js +126 -151
- package/lib/services/project-backup-service.js +1 -1
- package/lib/services/project-changes-service.js +126 -143
- package/lib/services/project-cleanup-service.js +65 -78
- package/lib/services/project-config-service.js +78 -88
- package/lib/services/project-data-service.js +112 -129
- package/lib/services/project-name-service.js +28 -43
- package/lib/services/project-service.js +90 -109
- 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 +15 -26
- package/lib/services/test-execution-service.js +64 -77
- package/lib/services/test-initialization-service.js +2 -2
- package/lib/services/timeline-profiler-service.js +1 -1
- package/lib/services/versions-service.js +120 -139
- package/lib/services/webpack/webpack-compiler-service.js +228 -251
- 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 +62 -81
- package/package.json +67 -82
- package/node_modules/@npmcli/move-file/LICENSE.md +0 -22
- package/node_modules/@npmcli/move-file/README.md +0 -69
- package/node_modules/@npmcli/move-file/lib/index.js +0 -185
- package/node_modules/@npmcli/move-file/node_modules/mkdirp/LICENSE +0 -21
- package/node_modules/@npmcli/move-file/node_modules/mkdirp/bin/cmd.js +0 -68
- package/node_modules/@npmcli/move-file/node_modules/mkdirp/index.js +0 -31
- package/node_modules/@npmcli/move-file/node_modules/mkdirp/lib/find-made.js +0 -29
- package/node_modules/@npmcli/move-file/node_modules/mkdirp/lib/mkdirp-manual.js +0 -64
- package/node_modules/@npmcli/move-file/node_modules/mkdirp/lib/mkdirp-native.js +0 -39
- package/node_modules/@npmcli/move-file/node_modules/mkdirp/lib/opts-arg.js +0 -23
- package/node_modules/@npmcli/move-file/node_modules/mkdirp/lib/path-arg.js +0 -29
- package/node_modules/@npmcli/move-file/node_modules/mkdirp/lib/use-native.js +0 -10
- package/node_modules/@npmcli/move-file/node_modules/mkdirp/package.json +0 -44
- package/node_modules/@npmcli/move-file/node_modules/mkdirp/readme.markdown +0 -266
- package/node_modules/@npmcli/move-file/package.json +0 -47
- package/node_modules/balanced-match/.github/FUNDING.yml +0 -2
- package/node_modules/balanced-match/LICENSE.md +0 -21
- package/node_modules/balanced-match/README.md +0 -97
- package/node_modules/balanced-match/index.js +0 -62
- package/node_modules/balanced-match/package.json +0 -48
- package/node_modules/concat-map/.travis.yml +0 -4
- package/node_modules/concat-map/LICENSE +0 -18
- package/node_modules/concat-map/README.markdown +0 -62
- package/node_modules/concat-map/example/map.js +0 -6
- package/node_modules/concat-map/index.js +0 -13
- package/node_modules/concat-map/package.json +0 -43
- package/node_modules/concat-map/test/map.js +0 -39
- package/node_modules/fs.realpath/LICENSE +0 -43
- package/node_modules/fs.realpath/README.md +0 -33
- package/node_modules/fs.realpath/index.js +0 -66
- package/node_modules/fs.realpath/old.js +0 -303
- package/node_modules/fs.realpath/package.json +0 -26
- package/node_modules/inflight/LICENSE +0 -15
- package/node_modules/inflight/README.md +0 -37
- package/node_modules/inflight/inflight.js +0 -54
- package/node_modules/inflight/package.json +0 -29
- package/node_modules/inherits/LICENSE +0 -16
- package/node_modules/inherits/README.md +0 -42
- package/node_modules/inherits/inherits.js +0 -9
- package/node_modules/inherits/inherits_browser.js +0 -27
- package/node_modules/inherits/package.json +0 -29
- package/node_modules/once/LICENSE +0 -15
- package/node_modules/once/README.md +0 -79
- package/node_modules/once/once.js +0 -42
- package/node_modules/once/package.json +0 -33
- package/node_modules/path-is-absolute/index.js +0 -20
- package/node_modules/path-is-absolute/license +0 -21
- package/node_modules/path-is-absolute/package.json +0 -43
- package/node_modules/path-is-absolute/readme.md +0 -59
- package/node_modules/rimraf/LICENSE +0 -15
- package/node_modules/rimraf/README.md +0 -101
- package/node_modules/rimraf/bin.js +0 -68
- package/node_modules/rimraf/node_modules/brace-expansion/LICENSE +0 -21
- package/node_modules/rimraf/node_modules/brace-expansion/README.md +0 -129
- package/node_modules/rimraf/node_modules/brace-expansion/index.js +0 -201
- package/node_modules/rimraf/node_modules/brace-expansion/package.json +0 -47
- package/node_modules/rimraf/node_modules/glob/LICENSE +0 -21
- package/node_modules/rimraf/node_modules/glob/README.md +0 -378
- package/node_modules/rimraf/node_modules/glob/common.js +0 -238
- package/node_modules/rimraf/node_modules/glob/glob.js +0 -790
- package/node_modules/rimraf/node_modules/glob/package.json +0 -55
- package/node_modules/rimraf/node_modules/glob/sync.js +0 -486
- package/node_modules/rimraf/node_modules/minimatch/LICENSE +0 -15
- package/node_modules/rimraf/node_modules/minimatch/README.md +0 -230
- package/node_modules/rimraf/node_modules/minimatch/minimatch.js +0 -947
- package/node_modules/rimraf/node_modules/minimatch/package.json +0 -33
- package/node_modules/rimraf/package.json +0 -32
- package/node_modules/rimraf/rimraf.js +0 -360
- package/node_modules/stringify-package/LICENSE +0 -13
- package/node_modules/stringify-package/README.md +0 -55
- package/node_modules/stringify-package/index.js +0 -18
- package/node_modules/stringify-package/package.json +0 -38
- package/node_modules/wrappy/LICENSE +0 -15
- package/node_modules/wrappy/README.md +0 -36
- package/node_modules/wrappy/package.json +0 -29
- package/node_modules/wrappy/wrappy.js +0 -33
|
@@ -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");
|
|
@@ -48,204 +39,194 @@ class RunController extends events_1.EventEmitter {
|
|
|
48
39
|
this.$projectDataService = $projectDataService;
|
|
49
40
|
this.prepareReadyEventHandler = null;
|
|
50
41
|
}
|
|
51
|
-
run(runData) {
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
yield this.syncChangedDataOnDevices(data, projectData, liveSyncInfo);
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
else {
|
|
78
|
-
yield this.syncChangedDataOnDevices(data, projectData, liveSyncInfo);
|
|
42
|
+
async run(runData) {
|
|
43
|
+
const { liveSyncInfo, deviceDescriptors } = runData;
|
|
44
|
+
const { projectDir } = liveSyncInfo;
|
|
45
|
+
const projectData = this.$projectDataService.getProjectData(projectDir);
|
|
46
|
+
await this.initializeSetup(projectData);
|
|
47
|
+
const deviceDescriptorsForInitialSync = this.getDeviceDescriptorsForInitialSync(projectDir, deviceDescriptors);
|
|
48
|
+
const newPlatforms = this.$devicesService.getPlatformsFromDeviceDescriptors(deviceDescriptors);
|
|
49
|
+
const oldPlatforms = this.$liveSyncProcessDataService.getPlatforms(projectDir);
|
|
50
|
+
const platforms = _.uniq(_.concat(newPlatforms, oldPlatforms));
|
|
51
|
+
this.$liveSyncProcessDataService.persistData(projectDir, deviceDescriptors, platforms);
|
|
52
|
+
const shouldStartWatcher = !liveSyncInfo.skipWatcher &&
|
|
53
|
+
this.$liveSyncProcessDataService.hasDeviceDescriptors(projectDir);
|
|
54
|
+
if (shouldStartWatcher && liveSyncInfo.useHotModuleReload) {
|
|
55
|
+
this.$hmrStatusService.attachToHmrStatusEvent();
|
|
56
|
+
}
|
|
57
|
+
if (!this.prepareReadyEventHandler) {
|
|
58
|
+
const handler = async (data) => {
|
|
59
|
+
if (data.hasNativeChanges) {
|
|
60
|
+
const platformData = this.$platformsDataService.getPlatformData(data.platform, projectData);
|
|
61
|
+
const prepareData = this.$prepareDataService.getPrepareData(liveSyncInfo.projectDir, data.platform, { ...liveSyncInfo, watch: !liveSyncInfo.skipWatcher });
|
|
62
|
+
const changesInfo = await this.$projectChangesService.checkForChanges(platformData, projectData, prepareData);
|
|
63
|
+
if (changesInfo.hasChanges) {
|
|
64
|
+
await this.syncChangedDataOnDevices(data, projectData, liveSyncInfo);
|
|
79
65
|
}
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
this.
|
|
86
|
-
|
|
66
|
+
}
|
|
67
|
+
else {
|
|
68
|
+
await this.syncChangedDataOnDevices(data, projectData, liveSyncInfo);
|
|
69
|
+
}
|
|
70
|
+
};
|
|
71
|
+
this.prepareReadyEventHandler = handler.bind(this);
|
|
72
|
+
this.$prepareController.on(constants_2.PREPARE_READY_EVENT_NAME, this.prepareReadyEventHandler);
|
|
73
|
+
}
|
|
74
|
+
await this.syncInitialDataOnDevices(projectData, liveSyncInfo, deviceDescriptorsForInitialSync);
|
|
75
|
+
this.attachDeviceLostHandler();
|
|
87
76
|
}
|
|
88
|
-
stop(data) {
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
yield this.$prepareController.stopWatchers(projectDir, platform);
|
|
106
|
-
}
|
|
77
|
+
async stop(data) {
|
|
78
|
+
const { projectDir, deviceIdentifiers, stopOptions } = data;
|
|
79
|
+
const liveSyncProcessInfo = this.$liveSyncProcessDataService.getPersistedData(projectDir);
|
|
80
|
+
if (liveSyncProcessInfo && !liveSyncProcessInfo.isStopped) {
|
|
81
|
+
// In case we are coming from error during livesync, the current action is the one that erred (but we are still executing it),
|
|
82
|
+
// so we cannot await it as this will cause infinite loop.
|
|
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
|
+
// Handle the case when no more devices left for any of the persisted platforms
|
|
89
|
+
for (let i = 0; i < liveSyncProcessInfo.platforms.length; i++) {
|
|
90
|
+
const platform = liveSyncProcessInfo.platforms[i];
|
|
91
|
+
const devices = this.$devicesService.getDevicesForPlatform(platform);
|
|
92
|
+
if (!devices || !devices.length) {
|
|
93
|
+
await this.$prepareController.stopWatchers(projectDir, platform);
|
|
107
94
|
}
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
for (let k = 0; k < liveSyncProcessInfo.platforms.length; k++) {
|
|
117
|
-
yield this.$prepareController.stopWatchers(projectDir, liveSyncProcessInfo.platforms[k]);
|
|
118
|
-
}
|
|
119
|
-
liveSyncProcessInfo.isStopped = true;
|
|
120
|
-
if (liveSyncProcessInfo.actionsChain && shouldAwaitPendingOperation) {
|
|
121
|
-
yield liveSyncProcessInfo.actionsChain;
|
|
122
|
-
}
|
|
123
|
-
liveSyncProcessInfo.deviceDescriptors = [];
|
|
124
|
-
if (this.prepareReadyEventHandler) {
|
|
125
|
-
this.$prepareController.removeListener(constants_2.PREPARE_READY_EVENT_NAME, this.prepareReadyEventHandler);
|
|
126
|
-
this.prepareReadyEventHandler = null;
|
|
127
|
-
}
|
|
128
|
-
const projectData = this.$projectDataService.getProjectData(projectDir);
|
|
129
|
-
yield this.$hooksService.executeAfterHooks("watch", {
|
|
130
|
-
hookArgs: {
|
|
131
|
-
projectData,
|
|
132
|
-
},
|
|
133
|
-
});
|
|
95
|
+
}
|
|
96
|
+
// In case deviceIdentifiers are not passed, we should stop the whole LiveSync.
|
|
97
|
+
if (!deviceIdentifiers ||
|
|
98
|
+
!deviceIdentifiers.length ||
|
|
99
|
+
!liveSyncProcessInfo.deviceDescriptors ||
|
|
100
|
+
!liveSyncProcessInfo.deviceDescriptors.length) {
|
|
101
|
+
if (liveSyncProcessInfo.timer) {
|
|
102
|
+
clearTimeout(liveSyncProcessInfo.timer);
|
|
134
103
|
}
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
yield liveSyncProcessInfo.currentSyncAction;
|
|
104
|
+
for (let k = 0; k < liveSyncProcessInfo.platforms.length; k++) {
|
|
105
|
+
await this.$prepareController.stopWatchers(projectDir, liveSyncProcessInfo.platforms[k]);
|
|
138
106
|
}
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
projectDir,
|
|
143
|
-
deviceIdentifier,
|
|
144
|
-
keepProcessAlive: stopOptions === null || stopOptions === void 0 ? void 0 : stopOptions.keepProcessAlive,
|
|
145
|
-
});
|
|
146
|
-
});
|
|
147
|
-
if (stopOptions === null || stopOptions === void 0 ? void 0 : stopOptions.keepProcessAlive) {
|
|
148
|
-
this.removeAllListeners(constants_2.RunOnDeviceEvents.runOnDeviceStopped);
|
|
107
|
+
liveSyncProcessInfo.isStopped = true;
|
|
108
|
+
if (liveSyncProcessInfo.actionsChain && shouldAwaitPendingOperation) {
|
|
109
|
+
await liveSyncProcessInfo.actionsChain;
|
|
149
110
|
}
|
|
111
|
+
liveSyncProcessInfo.deviceDescriptors = [];
|
|
112
|
+
if (this.prepareReadyEventHandler) {
|
|
113
|
+
this.$prepareController.removeListener(constants_2.PREPARE_READY_EVENT_NAME, this.prepareReadyEventHandler);
|
|
114
|
+
this.prepareReadyEventHandler = null;
|
|
115
|
+
}
|
|
116
|
+
const projectData = this.$projectDataService.getProjectData(projectDir);
|
|
117
|
+
await this.$hooksService.executeAfterHooks("watch", {
|
|
118
|
+
hookArgs: {
|
|
119
|
+
projectData,
|
|
120
|
+
},
|
|
121
|
+
});
|
|
150
122
|
}
|
|
151
|
-
|
|
123
|
+
else if (liveSyncProcessInfo.currentSyncAction &&
|
|
124
|
+
shouldAwaitPendingOperation) {
|
|
125
|
+
await liveSyncProcessInfo.currentSyncAction;
|
|
126
|
+
}
|
|
127
|
+
// Emit RunOnDevice stopped when we've really stopped.
|
|
128
|
+
_.each(removedDeviceIdentifiers, (deviceIdentifier) => {
|
|
129
|
+
this.emitCore(constants_2.RunOnDeviceEvents.runOnDeviceStopped, {
|
|
130
|
+
projectDir,
|
|
131
|
+
deviceIdentifier,
|
|
132
|
+
keepProcessAlive: stopOptions === null || stopOptions === void 0 ? void 0 : stopOptions.keepProcessAlive,
|
|
133
|
+
});
|
|
134
|
+
});
|
|
135
|
+
if (stopOptions === null || stopOptions === void 0 ? void 0 : stopOptions.keepProcessAlive) {
|
|
136
|
+
this.removeAllListeners(constants_2.RunOnDeviceEvents.runOnDeviceStopped);
|
|
137
|
+
}
|
|
138
|
+
}
|
|
152
139
|
}
|
|
153
140
|
getDeviceDescriptors(data) {
|
|
154
141
|
return this.$liveSyncProcessDataService.getDeviceDescriptors(data.projectDir);
|
|
155
142
|
}
|
|
156
|
-
refreshApplication(projectData, liveSyncResultInfo, filesChangeEventData, deviceDescriptor, fullSyncAction) {
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
isFullSync: liveSyncResultInfo.isFullSync,
|
|
168
|
-
});
|
|
169
|
-
return result;
|
|
143
|
+
async refreshApplication(projectData, liveSyncResultInfo, filesChangeEventData, deviceDescriptor, fullSyncAction) {
|
|
144
|
+
const result = deviceDescriptor.debuggingEnabled
|
|
145
|
+
? await this.refreshApplicationWithDebug(projectData, liveSyncResultInfo, filesChangeEventData, deviceDescriptor)
|
|
146
|
+
: await this.refreshApplicationWithoutDebug(projectData, liveSyncResultInfo, filesChangeEventData, deviceDescriptor, undefined, fullSyncAction);
|
|
147
|
+
const device = liveSyncResultInfo.deviceAppData.device;
|
|
148
|
+
this.emitCore(constants_2.RunOnDeviceEvents.runOnDeviceExecuted, {
|
|
149
|
+
projectDir: projectData.projectDir,
|
|
150
|
+
deviceIdentifier: device.deviceInfo.identifier,
|
|
151
|
+
applicationIdentifier: projectData.projectIdentifiers[device.deviceInfo.platform.toLowerCase()],
|
|
152
|
+
syncedFiles: liveSyncResultInfo.modifiedFilesData.map((m) => m.getLocalPath()),
|
|
153
|
+
isFullSync: liveSyncResultInfo.isFullSync,
|
|
170
154
|
});
|
|
155
|
+
return result;
|
|
171
156
|
}
|
|
172
|
-
refreshApplicationWithDebug(projectData, liveSyncResultInfo, filesChangeEventData, deviceDescriptor) {
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
shouldCheckDeveloperDiscImage: true,
|
|
180
|
-
});
|
|
181
|
-
// we do not stop the application when debugBrk is false, so we need to attach, instead of launch
|
|
182
|
-
// if we try to send the launch request, the debugger port will not be printed and the command will timeout
|
|
183
|
-
debugOptions.start = !debugOptions.debugBrk;
|
|
184
|
-
debugOptions.forceDebuggerAttachedEvent = refreshInfo.didRestart;
|
|
185
|
-
yield this.$debugController.enableDebuggingCoreWithoutWaitingCurrentAction(projectData.projectDir, deviceDescriptor.identifier, debugOptions);
|
|
186
|
-
return refreshInfo;
|
|
157
|
+
async refreshApplicationWithDebug(projectData, liveSyncResultInfo, filesChangeEventData, deviceDescriptor) {
|
|
158
|
+
const debugOptions = deviceDescriptor.debugOptions || {};
|
|
159
|
+
liveSyncResultInfo.waitForDebugger = !!debugOptions.debugBrk;
|
|
160
|
+
liveSyncResultInfo.forceRefreshWithSocket = true;
|
|
161
|
+
const refreshInfo = await this.refreshApplicationWithoutDebug(projectData, liveSyncResultInfo, filesChangeEventData, deviceDescriptor, {
|
|
162
|
+
shouldSkipEmitLiveSyncNotification: true,
|
|
163
|
+
shouldCheckDeveloperDiscImage: true,
|
|
187
164
|
});
|
|
165
|
+
// we do not stop the application when debugBrk is false, so we need to attach, instead of launch
|
|
166
|
+
// if we try to send the launch request, the debugger port will not be printed and the command will timeout
|
|
167
|
+
debugOptions.start = !debugOptions.debugBrk;
|
|
168
|
+
debugOptions.forceDebuggerAttachedEvent = refreshInfo.didRestart;
|
|
169
|
+
await this.$debugController.enableDebuggingCoreWithoutWaitingCurrentAction(projectData.projectDir, deviceDescriptor.identifier, debugOptions);
|
|
170
|
+
return refreshInfo;
|
|
188
171
|
}
|
|
189
|
-
refreshApplicationWithoutDebug(projectData, liveSyncResultInfo, filesChangeEventData, deviceDescriptor, settings, fullSyncAction) {
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
shouldRestart = yield platformLiveSyncService.shouldRestart(projectData, liveSyncResultInfo);
|
|
202
|
-
}
|
|
203
|
-
if (!shouldRestart) {
|
|
204
|
-
shouldRestart = !(yield platformLiveSyncService.tryRefreshApplication(projectData, liveSyncResultInfo));
|
|
205
|
-
}
|
|
206
|
-
if (!isFullSync && shouldRestart && fullSyncAction) {
|
|
207
|
-
this.$logger.trace(`Syncing all files as the current app state does not support hot updates.`);
|
|
208
|
-
liveSyncResultInfo.didRecover = true;
|
|
209
|
-
yield fullSyncAction();
|
|
210
|
-
}
|
|
211
|
-
if (shouldRestart) {
|
|
212
|
-
this.emit(constants_2.DEBUGGER_DETACHED_EVENT_NAME, {
|
|
213
|
-
deviceIdentifier: liveSyncResultInfo.deviceAppData.device.deviceInfo.identifier,
|
|
214
|
-
});
|
|
215
|
-
yield platformLiveSyncService.restartApplication(projectData, liveSyncResultInfo);
|
|
216
|
-
result.didRestart = true;
|
|
217
|
-
}
|
|
172
|
+
async refreshApplicationWithoutDebug(projectData, liveSyncResultInfo, filesChangeEventData, deviceDescriptor, settings, fullSyncAction) {
|
|
173
|
+
const result = { didRestart: false };
|
|
174
|
+
const platform = liveSyncResultInfo.deviceAppData.platform;
|
|
175
|
+
const applicationIdentifier = projectData.projectIdentifiers[platform.toLowerCase()];
|
|
176
|
+
const platformLiveSyncService = this.$liveSyncServiceResolver.resolveLiveSyncService(platform);
|
|
177
|
+
try {
|
|
178
|
+
const isFullSync = filesChangeEventData &&
|
|
179
|
+
(filesChangeEventData.hasNativeChanges ||
|
|
180
|
+
!filesChangeEventData.hasOnlyHotUpdateFiles);
|
|
181
|
+
let shouldRestart = isFullSync;
|
|
182
|
+
if (!shouldRestart) {
|
|
183
|
+
shouldRestart = await platformLiveSyncService.shouldRestart(projectData, liveSyncResultInfo);
|
|
218
184
|
}
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
const msg = `Unable to start application ${applicationIdentifier} on device ${liveSyncResultInfo.deviceAppData.device.deviceInfo.identifier}. Try starting it manually.`;
|
|
222
|
-
this.$logger.warn(msg);
|
|
223
|
-
const device = liveSyncResultInfo.deviceAppData.device;
|
|
224
|
-
const deviceIdentifier = device.deviceInfo.identifier;
|
|
225
|
-
if (!settings || !settings.shouldSkipEmitLiveSyncNotification) {
|
|
226
|
-
this.emitCore(constants_2.RunOnDeviceEvents.runOnDeviceNotification, {
|
|
227
|
-
projectDir: projectData.projectDir,
|
|
228
|
-
deviceIdentifier: device.deviceInfo.identifier,
|
|
229
|
-
applicationIdentifier: projectData.projectIdentifiers[device.deviceInfo.platform.toLowerCase()],
|
|
230
|
-
notification: msg,
|
|
231
|
-
});
|
|
232
|
-
}
|
|
233
|
-
if (settings &&
|
|
234
|
-
settings.shouldCheckDeveloperDiscImage &&
|
|
235
|
-
(err.message || err) === "Could not find developer disk image") {
|
|
236
|
-
const attachDebuggerOptions = {
|
|
237
|
-
platform: device.deviceInfo.platform,
|
|
238
|
-
isEmulator: device.isEmulator,
|
|
239
|
-
projectDir: projectData.projectDir,
|
|
240
|
-
deviceIdentifier,
|
|
241
|
-
debugOptions: deviceDescriptor.debugOptions,
|
|
242
|
-
outputPath: deviceDescriptor.buildData.outputPath,
|
|
243
|
-
};
|
|
244
|
-
this.emit(constants_2.USER_INTERACTION_NEEDED_EVENT_NAME, attachDebuggerOptions);
|
|
245
|
-
}
|
|
185
|
+
if (!shouldRestart) {
|
|
186
|
+
shouldRestart = !(await platformLiveSyncService.tryRefreshApplication(projectData, liveSyncResultInfo));
|
|
246
187
|
}
|
|
247
|
-
|
|
248
|
-
|
|
188
|
+
if (!isFullSync && shouldRestart && fullSyncAction) {
|
|
189
|
+
this.$logger.trace(`Syncing all files as the current app state does not support hot updates.`);
|
|
190
|
+
liveSyncResultInfo.didRecover = true;
|
|
191
|
+
await fullSyncAction();
|
|
192
|
+
}
|
|
193
|
+
if (shouldRestart) {
|
|
194
|
+
this.emit(constants_2.DEBUGGER_DETACHED_EVENT_NAME, {
|
|
195
|
+
deviceIdentifier: liveSyncResultInfo.deviceAppData.device.deviceInfo.identifier,
|
|
196
|
+
});
|
|
197
|
+
await platformLiveSyncService.restartApplication(projectData, liveSyncResultInfo);
|
|
198
|
+
result.didRestart = true;
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
catch (err) {
|
|
202
|
+
this.$logger.info(`Error while trying to start application ${applicationIdentifier} on device ${liveSyncResultInfo.deviceAppData.device.deviceInfo.identifier}. Error is: ${err.message || err}`);
|
|
203
|
+
const msg = `Unable to start application ${applicationIdentifier} on device ${liveSyncResultInfo.deviceAppData.device.deviceInfo.identifier}. Try starting it manually.`;
|
|
204
|
+
this.$logger.warn(msg);
|
|
205
|
+
const device = liveSyncResultInfo.deviceAppData.device;
|
|
206
|
+
const deviceIdentifier = device.deviceInfo.identifier;
|
|
207
|
+
if (!settings || !settings.shouldSkipEmitLiveSyncNotification) {
|
|
208
|
+
this.emitCore(constants_2.RunOnDeviceEvents.runOnDeviceNotification, {
|
|
209
|
+
projectDir: projectData.projectDir,
|
|
210
|
+
deviceIdentifier: device.deviceInfo.identifier,
|
|
211
|
+
applicationIdentifier: projectData.projectIdentifiers[device.deviceInfo.platform.toLowerCase()],
|
|
212
|
+
notification: msg,
|
|
213
|
+
});
|
|
214
|
+
}
|
|
215
|
+
if (settings &&
|
|
216
|
+
settings.shouldCheckDeveloperDiscImage &&
|
|
217
|
+
(err.message || err) === "Could not find developer disk image") {
|
|
218
|
+
const attachDebuggerOptions = {
|
|
219
|
+
platform: device.deviceInfo.platform,
|
|
220
|
+
isEmulator: device.isEmulator,
|
|
221
|
+
projectDir: projectData.projectDir,
|
|
222
|
+
deviceIdentifier,
|
|
223
|
+
debugOptions: deviceDescriptor.debugOptions,
|
|
224
|
+
outputPath: deviceDescriptor.buildData.outputPath,
|
|
225
|
+
};
|
|
226
|
+
this.emit(constants_2.USER_INTERACTION_NEEDED_EVENT_NAME, attachDebuggerOptions);
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
return result;
|
|
249
230
|
}
|
|
250
231
|
getDeviceDescriptorsForInitialSync(projectDir, deviceDescriptors) {
|
|
251
232
|
const currentRunData = this.$liveSyncProcessDataService.getPersistedData(projectDir);
|
|
@@ -256,25 +237,23 @@ class RunController extends events_1.EventEmitter {
|
|
|
256
237
|
: deviceDescriptors;
|
|
257
238
|
return deviceDescriptorsForInitialSync;
|
|
258
239
|
}
|
|
259
|
-
initializeSetup(projectData) {
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
}
|
|
268
|
-
});
|
|
240
|
+
async initializeSetup(projectData) {
|
|
241
|
+
try {
|
|
242
|
+
await this.$pluginsService.ensureAllDependenciesAreInstalled(projectData);
|
|
243
|
+
}
|
|
244
|
+
catch (err) {
|
|
245
|
+
this.$logger.trace(err);
|
|
246
|
+
this.$errors.fail(`Unable to install dependencies. Make sure your package.json is valid and all dependencies are correct. Error is: ${err.message}`);
|
|
247
|
+
}
|
|
269
248
|
}
|
|
270
249
|
attachDeviceLostHandler() {
|
|
271
|
-
this.$devicesService.on(constants_1.DeviceDiscoveryEventNames.DEVICE_LOST, (device) =>
|
|
250
|
+
this.$devicesService.on(constants_1.DeviceDiscoveryEventNames.DEVICE_LOST, async (device) => {
|
|
272
251
|
this.$logger.trace(`Received ${constants_1.DeviceDiscoveryEventNames.DEVICE_LOST} event in LiveSync service for ${device.deviceInfo.identifier}. Will stop LiveSync operation for this device.`);
|
|
273
252
|
for (const projectDir in this.$liveSyncProcessDataService.getAllPersistedData()) {
|
|
274
253
|
try {
|
|
275
254
|
const deviceDescriptors = this.getDeviceDescriptors({ projectDir });
|
|
276
255
|
if (_.find(deviceDescriptors, (d) => d.identifier === device.deviceInfo.identifier)) {
|
|
277
|
-
|
|
256
|
+
await this.stop({
|
|
278
257
|
projectDir,
|
|
279
258
|
deviceIdentifiers: [device.deviceInfo.identifier],
|
|
280
259
|
});
|
|
@@ -284,259 +263,266 @@ class RunController extends events_1.EventEmitter {
|
|
|
284
263
|
this.$logger.warn(`Unable to stop LiveSync operation for ${device.deviceInfo.identifier}.`, err);
|
|
285
264
|
}
|
|
286
265
|
}
|
|
287
|
-
})
|
|
266
|
+
});
|
|
288
267
|
}
|
|
289
|
-
syncInitialDataOnDevices(projectData, liveSyncInfo, deviceDescriptors) {
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
const
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
268
|
+
async syncInitialDataOnDevices(projectData, liveSyncInfo, deviceDescriptors) {
|
|
269
|
+
const rebuiltInformation = {};
|
|
270
|
+
const deviceAction = async (device) => {
|
|
271
|
+
const deviceDescriptor = _.find(deviceDescriptors, (dd) => dd.identifier === device.deviceInfo.identifier);
|
|
272
|
+
const prepareData = this.$prepareDataService.getPrepareData(liveSyncInfo.projectDir, device.deviceInfo.platform, {
|
|
273
|
+
...liveSyncInfo,
|
|
274
|
+
...deviceDescriptor.buildData,
|
|
275
|
+
nativePrepare: {
|
|
276
|
+
skipNativePrepare: !!deviceDescriptor.skipNativePrepare,
|
|
277
|
+
},
|
|
278
|
+
watch: !liveSyncInfo.skipWatcher,
|
|
279
|
+
});
|
|
280
|
+
const prepareResultData = await this.$prepareController.prepare(prepareData);
|
|
281
|
+
const buildData = {
|
|
282
|
+
...deviceDescriptor.buildData,
|
|
283
|
+
buildForDevice: !device.isEmulator,
|
|
284
|
+
};
|
|
285
|
+
const platformData = this.$platformsDataService.getPlatformData(device.deviceInfo.platform, projectData);
|
|
286
|
+
try {
|
|
287
|
+
let packageFilePath = null;
|
|
288
|
+
// Case where we have three devices attached, a change that requires build is found,
|
|
289
|
+
// we'll rebuild the app only for the first device, but we should install new package on all three devices.
|
|
290
|
+
if (rebuiltInformation[platformData.platformNameLowerCase] &&
|
|
291
|
+
(this.$mobileHelper.isAndroidPlatform(platformData.platformNameLowerCase) ||
|
|
292
|
+
rebuiltInformation[platformData.platformNameLowerCase]
|
|
293
|
+
.isEmulator === device.isEmulator)) {
|
|
294
|
+
packageFilePath =
|
|
295
|
+
rebuiltInformation[platformData.platformNameLowerCase]
|
|
296
|
+
.packageFilePath;
|
|
297
|
+
await this.$deviceInstallAppService.installOnDevice(device, buildData, packageFilePath);
|
|
298
|
+
}
|
|
299
|
+
else {
|
|
300
|
+
const shouldBuild = prepareResultData.hasNativeChanges ||
|
|
301
|
+
buildData.nativePrepare.forceRebuildNativeApp ||
|
|
302
|
+
(await this.$buildController.shouldBuild(buildData));
|
|
303
|
+
if (shouldBuild) {
|
|
304
|
+
packageFilePath = await deviceDescriptor.buildAction();
|
|
305
|
+
rebuiltInformation[platformData.platformNameLowerCase] = {
|
|
306
|
+
isEmulator: device.isEmulator,
|
|
307
|
+
platform: platformData.platformNameLowerCase,
|
|
308
|
+
packageFilePath,
|
|
309
|
+
};
|
|
312
310
|
}
|
|
313
311
|
else {
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
rebuiltInformation[platformData.platformNameLowerCase] = {
|
|
320
|
-
isEmulator: device.isEmulator,
|
|
321
|
-
platform: platformData.platformNameLowerCase,
|
|
322
|
-
packageFilePath,
|
|
323
|
-
};
|
|
324
|
-
}
|
|
325
|
-
else {
|
|
326
|
-
yield this.$analyticsService.trackEventActionInGoogleAnalytics({
|
|
327
|
-
action: "LiveSync" /* TrackActionNames.LiveSync */,
|
|
328
|
-
device,
|
|
329
|
-
projectDir: projectData.projectDir,
|
|
330
|
-
});
|
|
331
|
-
}
|
|
332
|
-
yield this.$deviceInstallAppService.installOnDeviceIfNeeded(device, buildData, packageFilePath);
|
|
312
|
+
await this.$analyticsService.trackEventActionInGoogleAnalytics({
|
|
313
|
+
action: "LiveSync" /* TrackActionNames.LiveSync */,
|
|
314
|
+
device,
|
|
315
|
+
projectDir: projectData.projectDir,
|
|
316
|
+
});
|
|
333
317
|
}
|
|
334
|
-
|
|
335
|
-
const { force, useHotModuleReload, skipWatcher } = liveSyncInfo;
|
|
336
|
-
const liveSyncResultInfo = yield platformLiveSyncService.fullSync({
|
|
337
|
-
force,
|
|
338
|
-
useHotModuleReload,
|
|
339
|
-
projectData,
|
|
340
|
-
device,
|
|
341
|
-
watch: !skipWatcher,
|
|
342
|
-
liveSyncDeviceData: deviceDescriptor,
|
|
343
|
-
});
|
|
344
|
-
yield this.refreshApplication(projectData, liveSyncResultInfo, null, deviceDescriptor);
|
|
345
|
-
this.$logger.info(`Successfully synced application ${liveSyncResultInfo.deviceAppData.appIdentifier} on device ${liveSyncResultInfo.deviceAppData.device.deviceInfo.identifier}.`);
|
|
346
|
-
this.emitCore(constants_2.RunOnDeviceEvents.runOnDeviceStarted, {
|
|
347
|
-
projectDir: projectData.projectDir,
|
|
348
|
-
deviceIdentifier: device.deviceInfo.identifier,
|
|
349
|
-
applicationIdentifier: projectData.projectIdentifiers[device.deviceInfo.platform.toLowerCase()],
|
|
350
|
-
});
|
|
318
|
+
await this.$deviceInstallAppService.installOnDeviceIfNeeded(device, buildData, packageFilePath);
|
|
351
319
|
}
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
320
|
+
const platformLiveSyncService = this.$liveSyncServiceResolver.resolveLiveSyncService(platformData.platformNameLowerCase);
|
|
321
|
+
const { force, useHotModuleReload, skipWatcher } = liveSyncInfo;
|
|
322
|
+
const liveSyncResultInfo = await platformLiveSyncService.fullSync({
|
|
323
|
+
force,
|
|
324
|
+
useHotModuleReload,
|
|
325
|
+
projectData,
|
|
326
|
+
device,
|
|
327
|
+
watch: !skipWatcher,
|
|
328
|
+
liveSyncDeviceData: deviceDescriptor,
|
|
329
|
+
});
|
|
330
|
+
await this.refreshApplication(projectData, liveSyncResultInfo, null, deviceDescriptor);
|
|
331
|
+
this.$logger.info(`Successfully synced application ${liveSyncResultInfo.deviceAppData.appIdentifier} on device ${liveSyncResultInfo.deviceAppData.device.deviceInfo.identifier}.`);
|
|
332
|
+
this.emitCore(constants_2.RunOnDeviceEvents.runOnDeviceStarted, {
|
|
333
|
+
projectDir: projectData.projectDir,
|
|
334
|
+
deviceIdentifier: device.deviceInfo.identifier,
|
|
335
|
+
applicationIdentifier: projectData.projectIdentifiers[device.deviceInfo.platform.toLowerCase()],
|
|
336
|
+
});
|
|
337
|
+
}
|
|
338
|
+
catch (err) {
|
|
339
|
+
this.$logger.warn(`Unable to apply changes on device: ${device.deviceInfo.identifier}. Error is: ${err.message}.`);
|
|
340
|
+
this.$logger.trace(err);
|
|
341
|
+
this.emitCore(constants_2.RunOnDeviceEvents.runOnDeviceError, {
|
|
342
|
+
projectDir: projectData.projectDir,
|
|
343
|
+
deviceIdentifier: device.deviceInfo.identifier,
|
|
344
|
+
applicationIdentifier: projectData.projectIdentifiers[device.deviceInfo.platform.toLowerCase()],
|
|
345
|
+
error: err,
|
|
346
|
+
});
|
|
347
|
+
await this.stop({
|
|
348
|
+
projectDir: projectData.projectDir,
|
|
349
|
+
deviceIdentifiers: [device.deviceInfo.identifier],
|
|
350
|
+
stopOptions: { shouldAwaitAllActions: false },
|
|
351
|
+
});
|
|
352
|
+
}
|
|
353
|
+
};
|
|
354
|
+
await this.addActionToChain(projectData.projectDir, () => this.$devicesService.execute(deviceAction, (device) => _.some(deviceDescriptors, (deviceDescriptor) => deviceDescriptor.identifier === device.deviceInfo.identifier)));
|
|
370
355
|
}
|
|
371
|
-
syncChangedDataOnDevices(data, projectData, liveSyncInfo) {
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
356
|
+
async syncChangedDataOnDevices(data, projectData, liveSyncInfo) {
|
|
357
|
+
const successfullySyncedMessageFormat = `Successfully synced application %s on device %s.`;
|
|
358
|
+
const rebuiltInformation = {};
|
|
359
|
+
const deviceAction = async (device) => {
|
|
360
|
+
var _a, _b;
|
|
361
|
+
const deviceDescriptors = this.$liveSyncProcessDataService.getDeviceDescriptors(projectData.projectDir);
|
|
362
|
+
const deviceDescriptor = _.find(deviceDescriptors, (dd) => dd.identifier === device.deviceInfo.identifier);
|
|
363
|
+
const platformData = this.$platformsDataService.getPlatformData(data.platform, projectData);
|
|
364
|
+
const prepareData = this.$prepareDataService.getPrepareData(liveSyncInfo.projectDir, device.deviceInfo.platform, {
|
|
365
|
+
...liveSyncInfo,
|
|
366
|
+
...deviceDescriptor.buildData,
|
|
367
|
+
nativePrepare: {
|
|
368
|
+
skipNativePrepare: !!deviceDescriptor.skipNativePrepare,
|
|
369
|
+
},
|
|
370
|
+
watch: !liveSyncInfo.skipWatcher,
|
|
371
|
+
});
|
|
372
|
+
try {
|
|
373
|
+
const platformLiveSyncService = this.$liveSyncServiceResolver.resolveLiveSyncService(device.deviceInfo.platform);
|
|
374
|
+
const allAppFiles = ((_b = (_a = data.hmrData) === null || _a === void 0 ? void 0 : _a.fallbackFiles) === null || _b === void 0 ? void 0 : _b.length)
|
|
375
|
+
? data.hmrData.fallbackFiles
|
|
376
|
+
: data.files;
|
|
377
|
+
const filesToSync = data.hasOnlyHotUpdateFiles
|
|
378
|
+
? data.files
|
|
379
|
+
: allAppFiles;
|
|
380
|
+
const watchInfo = {
|
|
381
|
+
liveSyncDeviceData: deviceDescriptor,
|
|
382
|
+
projectData,
|
|
383
|
+
// todo: remove stale files once everything is stable
|
|
384
|
+
// currently, watcher fires multiple times & may clean up unsynced files
|
|
385
|
+
// filesToRemove: data.staleFiles ?? [],
|
|
386
|
+
filesToRemove: [],
|
|
387
|
+
filesToSync,
|
|
388
|
+
hmrData: data.hmrData,
|
|
389
|
+
useHotModuleReload: liveSyncInfo.useHotModuleReload,
|
|
390
|
+
force: liveSyncInfo.force,
|
|
391
|
+
connectTimeout: 1000,
|
|
392
|
+
};
|
|
393
|
+
const deviceAppData = await platformLiveSyncService.getAppData(_.merge({ device, watch: true }, watchInfo));
|
|
394
|
+
if (data.hasNativeChanges) {
|
|
395
|
+
const rebuiltInfo = rebuiltInformation[platformData.platformNameLowerCase] &&
|
|
396
|
+
(this.$mobileHelper.isAndroidPlatform(platformData.platformNameLowerCase) ||
|
|
397
|
+
rebuiltInformation[platformData.platformNameLowerCase]
|
|
398
|
+
.isEmulator === device.isEmulator);
|
|
399
|
+
if (!rebuiltInfo) {
|
|
400
|
+
await this.$prepareNativePlatformService.prepareNativePlatform(platformData, projectData, prepareData);
|
|
401
|
+
await deviceDescriptor.buildAction();
|
|
402
|
+
rebuiltInformation[platformData.platformNameLowerCase] = {
|
|
403
|
+
isEmulator: device.isEmulator,
|
|
404
|
+
platform: platformData.platformNameLowerCase,
|
|
405
|
+
packageFilePath: null,
|
|
406
|
+
};
|
|
407
|
+
}
|
|
408
|
+
await this.$deviceInstallAppService.installOnDevice(device, deviceDescriptor.buildData, rebuiltInformation[platformData.platformNameLowerCase]
|
|
409
|
+
.packageFilePath);
|
|
410
|
+
await platformLiveSyncService.syncAfterInstall(device, watchInfo);
|
|
411
|
+
await this.refreshApplication(projectData, {
|
|
412
|
+
deviceAppData,
|
|
413
|
+
modifiedFilesData: [],
|
|
414
|
+
isFullSync: false,
|
|
400
415
|
useHotModuleReload: liveSyncInfo.useHotModuleReload,
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
if (!rebuiltInfo) {
|
|
411
|
-
yield this.$prepareNativePlatformService.prepareNativePlatform(platformData, projectData, prepareData);
|
|
412
|
-
yield deviceDescriptor.buildAction();
|
|
413
|
-
rebuiltInformation[platformData.platformNameLowerCase] = {
|
|
414
|
-
isEmulator: device.isEmulator,
|
|
415
|
-
platform: platformData.platformNameLowerCase,
|
|
416
|
-
packageFilePath: null,
|
|
417
|
-
};
|
|
418
|
-
}
|
|
419
|
-
yield this.$deviceInstallAppService.installOnDevice(device, deviceDescriptor.buildData, rebuiltInformation[platformData.platformNameLowerCase]
|
|
420
|
-
.packageFilePath);
|
|
421
|
-
yield platformLiveSyncService.syncAfterInstall(device, watchInfo);
|
|
422
|
-
yield this.refreshApplication(projectData, {
|
|
423
|
-
deviceAppData,
|
|
424
|
-
modifiedFilesData: [],
|
|
425
|
-
isFullSync: false,
|
|
426
|
-
useHotModuleReload: liveSyncInfo.useHotModuleReload,
|
|
427
|
-
}, data, deviceDescriptor);
|
|
428
|
-
this.$logger.info(util.format(successfullySyncedMessageFormat, deviceAppData.appIdentifier, device.deviceInfo.identifier));
|
|
416
|
+
}, data, deviceDescriptor);
|
|
417
|
+
this.$logger.info(util.format(successfullySyncedMessageFormat, deviceAppData.appIdentifier, device.deviceInfo.identifier));
|
|
418
|
+
}
|
|
419
|
+
else {
|
|
420
|
+
const isInHMRMode = liveSyncInfo.useHotModuleReload &&
|
|
421
|
+
data.hmrData &&
|
|
422
|
+
data.hmrData.hash;
|
|
423
|
+
if (isInHMRMode) {
|
|
424
|
+
this.$hmrStatusService.watchHmrStatus(device.deviceInfo.identifier, data.hmrData.hash);
|
|
429
425
|
}
|
|
430
|
-
|
|
431
|
-
const
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
watchInfo.filesToSync = allAppFiles;
|
|
441
|
-
const fullLiveSyncResultInfo = yield platformLiveSyncService.liveSyncWatchAction(device, watchInfo);
|
|
442
|
-
// IMPORTANT: keep the same instance as we rely on side effects
|
|
443
|
-
_.assign(liveSyncResultInfo, fullLiveSyncResultInfo);
|
|
444
|
-
});
|
|
445
|
-
yield this.$hooksService.executeBeforeHooks("watchAction", {
|
|
446
|
-
hookArgs: {
|
|
447
|
-
liveSyncResultInfo,
|
|
448
|
-
filesToSync,
|
|
449
|
-
allAppFiles,
|
|
450
|
-
isInHMRMode,
|
|
451
|
-
filesChangedEvent: data,
|
|
452
|
-
},
|
|
453
|
-
});
|
|
454
|
-
yield this.refreshApplication(projectData, liveSyncResultInfo, data, deviceDescriptor, fullSyncAction);
|
|
455
|
-
if (!liveSyncResultInfo.didRecover && isInHMRMode) {
|
|
456
|
-
const status = yield this.$hmrStatusService.getHmrStatus(device.deviceInfo.identifier, data.hmrData.hash);
|
|
457
|
-
// the timeout is assumed OK as the app could be blocked on a breakpoint
|
|
458
|
-
if (status === constants_1.HmrConstants.HMR_ERROR_STATUS) {
|
|
459
|
-
yield fullSyncAction();
|
|
460
|
-
liveSyncResultInfo.isFullSync = true;
|
|
461
|
-
yield this.refreshApplication(projectData, liveSyncResultInfo, data, deviceDescriptor);
|
|
462
|
-
}
|
|
463
|
-
}
|
|
464
|
-
yield this.$hooksService.executeAfterHooks("watchAction", {
|
|
426
|
+
const watchAction = async () => {
|
|
427
|
+
const liveSyncResultInfo = await platformLiveSyncService.liveSyncWatchAction(device, watchInfo);
|
|
428
|
+
const fullSyncAction = async () => {
|
|
429
|
+
watchInfo.filesToSync = allAppFiles;
|
|
430
|
+
const fullLiveSyncResultInfo = await platformLiveSyncService.liveSyncWatchAction(device, watchInfo);
|
|
431
|
+
// IMPORTANT: keep the same instance as we rely on side effects
|
|
432
|
+
_.assign(liveSyncResultInfo, fullLiveSyncResultInfo);
|
|
433
|
+
};
|
|
434
|
+
await this.$hooksService.executeBeforeHooks("watchAction", {
|
|
435
|
+
hookArgs: {
|
|
465
436
|
liveSyncResultInfo,
|
|
466
437
|
filesToSync,
|
|
467
438
|
allAppFiles,
|
|
468
|
-
filesChangedEvent: data,
|
|
469
439
|
isInHMRMode,
|
|
470
|
-
|
|
471
|
-
|
|
440
|
+
filesChangedEvent: data,
|
|
441
|
+
},
|
|
472
442
|
});
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
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}`);
|
|
443
|
+
await this.refreshApplication(projectData, liveSyncResultInfo, data, deviceDescriptor, fullSyncAction);
|
|
444
|
+
if (!liveSyncResultInfo.didRecover && isInHMRMode) {
|
|
445
|
+
const status = await this.$hmrStatusService.getHmrStatus(device.deviceInfo.identifier, data.hmrData.hash);
|
|
446
|
+
// the timeout is assumed OK as the app could be blocked on a breakpoint
|
|
447
|
+
if (status === constants_1.HmrConstants.HMR_ERROR_STATUS) {
|
|
448
|
+
await fullSyncAction();
|
|
449
|
+
liveSyncResultInfo.isFullSync = true;
|
|
450
|
+
await this.refreshApplication(projectData, liveSyncResultInfo, data, deviceDescriptor);
|
|
482
451
|
}
|
|
483
452
|
}
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
453
|
+
await this.$hooksService.executeAfterHooks("watchAction", {
|
|
454
|
+
liveSyncResultInfo,
|
|
455
|
+
filesToSync,
|
|
456
|
+
allAppFiles,
|
|
457
|
+
filesChangedEvent: data,
|
|
458
|
+
isInHMRMode,
|
|
459
|
+
});
|
|
460
|
+
this.$logger.info(util.format(successfullySyncedMessageFormat, deviceAppData.appIdentifier, device.deviceInfo.identifier));
|
|
461
|
+
};
|
|
462
|
+
if (liveSyncInfo.useHotModuleReload) {
|
|
463
|
+
try {
|
|
464
|
+
this.$logger.trace("Try executing watch action without any preparation of files.");
|
|
465
|
+
await watchAction();
|
|
466
|
+
this.$logger.trace("Successfully executed watch action without any preparation of files.");
|
|
467
|
+
return;
|
|
468
|
+
}
|
|
469
|
+
catch (err) {
|
|
470
|
+
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}`);
|
|
471
|
+
}
|
|
487
472
|
}
|
|
473
|
+
await this.$deviceInstallAppService.installOnDeviceIfNeeded(device, deviceDescriptor.buildData);
|
|
474
|
+
watchInfo.connectTimeout = null;
|
|
475
|
+
await watchAction();
|
|
488
476
|
}
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
}
|
|
477
|
+
}
|
|
478
|
+
catch (err) {
|
|
479
|
+
this.$logger.warn(`Unable to apply changes for device: ${device.deviceInfo.identifier}. Error is: ${err && err.message}.`);
|
|
480
|
+
this.emitCore(constants_2.RunOnDeviceEvents.runOnDeviceError, {
|
|
481
|
+
projectDir: projectData.projectDir,
|
|
482
|
+
deviceIdentifier: device.deviceInfo.identifier,
|
|
483
|
+
applicationIdentifier: projectData.projectIdentifiers[device.deviceInfo.platform.toLowerCase()],
|
|
484
|
+
error: err,
|
|
485
|
+
});
|
|
486
|
+
await this.stop({
|
|
487
|
+
projectDir: projectData.projectDir,
|
|
488
|
+
deviceIdentifiers: [device.deviceInfo.identifier],
|
|
489
|
+
stopOptions: { shouldAwaitAllActions: false },
|
|
490
|
+
});
|
|
491
|
+
}
|
|
492
|
+
};
|
|
493
|
+
await this.addActionToChain(projectData.projectDir, () => this.$devicesService.execute(deviceAction, (device) => {
|
|
494
|
+
const liveSyncProcessInfo = this.$liveSyncProcessDataService.getPersistedData(projectData.projectDir);
|
|
495
|
+
return (data.platform.toLowerCase() ===
|
|
496
|
+
device.deviceInfo.platform.toLowerCase() &&
|
|
497
|
+
liveSyncProcessInfo &&
|
|
498
|
+
_.some(liveSyncProcessInfo.deviceDescriptors, (deviceDescriptor) => deviceDescriptor.identifier === device.deviceInfo.identifier));
|
|
499
|
+
}));
|
|
500
|
+
}
|
|
501
|
+
async addActionToChain(projectDir, action) {
|
|
502
|
+
const liveSyncInfo = this.$liveSyncProcessDataService.getPersistedData(projectDir);
|
|
503
|
+
if (liveSyncInfo) {
|
|
504
|
+
liveSyncInfo.actionsChain = liveSyncInfo.actionsChain.then(async () => {
|
|
505
|
+
if (!liveSyncInfo.isStopped) {
|
|
506
|
+
liveSyncInfo.currentSyncAction = action();
|
|
507
|
+
const res = await liveSyncInfo.currentSyncAction;
|
|
508
|
+
return res;
|
|
502
509
|
}
|
|
503
510
|
});
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
device.deviceInfo.platform.toLowerCase() &&
|
|
508
|
-
liveSyncProcessInfo &&
|
|
509
|
-
_.some(liveSyncProcessInfo.deviceDescriptors, (deviceDescriptor) => deviceDescriptor.identifier === device.deviceInfo.identifier));
|
|
510
|
-
}));
|
|
511
|
-
});
|
|
512
|
-
}
|
|
513
|
-
addActionToChain(projectDir, action) {
|
|
514
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
515
|
-
const liveSyncInfo = this.$liveSyncProcessDataService.getPersistedData(projectDir);
|
|
516
|
-
if (liveSyncInfo) {
|
|
517
|
-
liveSyncInfo.actionsChain = liveSyncInfo.actionsChain.then(() => __awaiter(this, void 0, void 0, function* () {
|
|
518
|
-
if (!liveSyncInfo.isStopped) {
|
|
519
|
-
liveSyncInfo.currentSyncAction = action();
|
|
520
|
-
const res = yield liveSyncInfo.currentSyncAction;
|
|
521
|
-
return res;
|
|
522
|
-
}
|
|
523
|
-
}));
|
|
524
|
-
const result = yield liveSyncInfo.actionsChain;
|
|
525
|
-
return result;
|
|
526
|
-
}
|
|
527
|
-
});
|
|
511
|
+
const result = await liveSyncInfo.actionsChain;
|
|
512
|
+
return result;
|
|
513
|
+
}
|
|
528
514
|
}
|
|
529
515
|
emitCore(event, data) {
|
|
530
516
|
this.$logger.trace(`Will emit event ${event} with data`, data);
|
|
531
517
|
this.emit(event, data);
|
|
532
518
|
}
|
|
533
519
|
}
|
|
520
|
+
exports.RunController = RunController;
|
|
534
521
|
__decorate([
|
|
535
522
|
(0, decorators_1.performanceLog)()
|
|
536
523
|
], RunController.prototype, "refreshApplicationWithoutDebug", null);
|
|
537
524
|
__decorate([
|
|
538
525
|
(0, decorators_1.cache)()
|
|
539
526
|
], RunController.prototype, "attachDeviceLostHandler", null);
|
|
540
|
-
exports.RunController = RunController;
|
|
541
527
|
yok_1.injector.register("runController", RunController);
|
|
542
528
|
//# sourceMappingURL=run-controller.js.map
|