nativescript 8.9.0-dev.2 → 8.9.0-dev.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/config/test-deps-versions-generated.json +1 -1
- package/lib/android-tools-info.js +9 -32
- package/lib/base-package-manager.js +47 -71
- package/lib/bootstrap.js +1 -5
- package/lib/bun-package-manager.js +65 -104
- package/lib/color.js +2 -5
- package/lib/commands/add-platform.js +14 -31
- package/lib/commands/apple-login.js +18 -30
- package/lib/commands/appstore-list.js +34 -46
- package/lib/commands/appstore-upload.js +52 -68
- package/lib/commands/build.js +57 -90
- package/lib/commands/clean.js +161 -197
- package/lib/commands/command-base.js +14 -28
- package/lib/commands/config.js +48 -71
- package/lib/commands/create-project.js +210 -235
- package/lib/commands/debug.js +66 -93
- package/lib/commands/deploy.js +30 -47
- package/lib/commands/embedding/embed.js +33 -59
- package/lib/commands/extensibility/install-extension.js +5 -17
- package/lib/commands/extensibility/list-extensions.js +13 -25
- package/lib/commands/extensibility/uninstall-extension.js +4 -16
- package/lib/commands/fonts.js +30 -42
- package/lib/commands/generate-assets.js +13 -29
- package/lib/commands/generate-help.js +2 -14
- package/lib/commands/generate.js +12 -70
- package/lib/commands/info.js +2 -14
- package/lib/commands/install.js +34 -50
- package/lib/commands/list-platforms.js +14 -26
- package/lib/commands/migrate.js +15 -27
- package/lib/commands/native-add.js +23 -51
- package/lib/commands/platform-clean.js +19 -33
- package/lib/commands/plugin/add-plugin.js +12 -26
- package/lib/commands/plugin/build-plugin.js +31 -45
- package/lib/commands/plugin/create-plugin.js +110 -138
- package/lib/commands/plugin/list-plugins.js +22 -34
- package/lib/commands/plugin/remove-plugin.js +20 -35
- package/lib/commands/plugin/update-plugin.js +20 -34
- package/lib/commands/post-install.js +20 -39
- package/lib/commands/prepare.js +22 -39
- package/lib/commands/preview.js +49 -64
- package/lib/commands/remove-platform.js +7 -19
- package/lib/commands/resources/resources-update.js +13 -28
- package/lib/commands/run.js +55 -77
- package/lib/commands/setup.js +0 -1
- package/lib/commands/start.js +6 -20
- package/lib/commands/test-init.js +123 -138
- package/lib/commands/test.js +67 -97
- package/lib/commands/typings.js +126 -143
- package/lib/commands/update-platform.js +22 -40
- package/lib/commands/update.js +30 -45
- package/lib/commands/widget.js +390 -352
- package/lib/common/bootstrap.js +0 -1
- package/lib/common/child-process.js +53 -75
- package/lib/common/codeGeneration/code-entity.js +1 -2
- package/lib/common/codeGeneration/code-printer.js +1 -2
- package/lib/common/command-params.js +7 -19
- package/lib/common/commands/analytics.js +27 -43
- package/lib/common/commands/autocompletion.js +39 -59
- package/lib/common/commands/device/device-log-stream.js +12 -24
- package/lib/common/commands/device/get-file.js +22 -35
- package/lib/common/commands/device/list-applications.js +12 -24
- package/lib/common/commands/device/list-devices.js +72 -90
- package/lib/common/commands/device/list-files.js +23 -36
- package/lib/common/commands/device/put-file.js +22 -35
- package/lib/common/commands/device/run-application.js +12 -26
- package/lib/common/commands/device/stop-application.js +11 -23
- package/lib/common/commands/device/uninstall-application.js +6 -18
- package/lib/common/commands/doctor.js +2 -3
- package/lib/common/commands/generate-messages.js +17 -29
- package/lib/common/commands/help.js +20 -34
- package/lib/common/commands/package-manager-get.js +6 -18
- package/lib/common/commands/package-manager-set.js +9 -21
- package/lib/common/commands/post-install.js +2 -14
- package/lib/common/commands/preuninstall.js +24 -48
- package/lib/common/commands/proxy/proxy-base.js +8 -23
- package/lib/common/commands/proxy/proxy-clear.js +4 -16
- package/lib/common/commands/proxy/proxy-get.js +3 -15
- package/lib/common/commands/proxy/proxy-set.js +87 -101
- package/lib/common/common-lib.js +0 -1
- package/lib/common/constants.js +11 -22
- package/lib/common/decorators.js +10 -70
- package/lib/common/dispatchers.js +80 -106
- package/lib/common/errors.js +91 -116
- package/lib/common/file-system.js +108 -141
- package/lib/common/header.js +1 -5
- package/lib/common/helpers.js +152 -267
- package/lib/common/host-info.js +37 -54
- package/lib/common/http-client.js +93 -128
- package/lib/common/logger/appenders/cli-appender.js +1 -6
- package/lib/common/logger/appenders/emit-appender.js +1 -6
- package/lib/common/logger/layouts/cli-layout.js +1 -3
- package/lib/common/logger/logger.js +4 -9
- package/lib/common/messages/messages.js +0 -6
- package/lib/common/mobile/android/android-application-manager.js +122 -162
- package/lib/common/mobile/android/android-debug-bridge-result-handler.js +1 -2
- package/lib/common/mobile/android/android-debug-bridge.js +87 -118
- package/lib/common/mobile/android/android-device-file-system.js +98 -135
- package/lib/common/mobile/android/android-device-hash-service.js +50 -78
- package/lib/common/mobile/android/android-device.js +68 -93
- package/lib/common/mobile/android/android-emulator-services.js +105 -131
- package/lib/common/mobile/android/android-ini-file-parser.js +0 -9
- package/lib/common/mobile/android/android-log-filter.js +1 -5
- package/lib/common/mobile/android/android-virtual-device-service.js +76 -123
- package/lib/common/mobile/android/device-android-debug-bridge.js +13 -30
- package/lib/common/mobile/android/genymotion/genymotion-service.js +91 -123
- package/lib/common/mobile/android/genymotion/virtualbox-service.js +64 -92
- package/lib/common/mobile/android/logcat-helper.js +108 -140
- package/lib/common/mobile/application-manager-base.js +84 -113
- package/lib/common/mobile/device-emitter.js +0 -4
- package/lib/common/mobile/device-log-emitter.js +0 -1
- package/lib/common/mobile/device-log-provider-base.js +7 -19
- package/lib/common/mobile/device-log-provider.js +0 -23
- package/lib/common/mobile/device-platforms-constants.js +0 -1
- package/lib/common/mobile/emulator-helper.js +0 -3
- package/lib/common/mobile/ios/device/ios-application-manager.js +79 -111
- package/lib/common/mobile/ios/device/ios-device-file-system.js +78 -106
- package/lib/common/mobile/ios/device/ios-device-operations.js +105 -146
- package/lib/common/mobile/ios/device/ios-device.js +20 -40
- package/lib/common/mobile/ios/ios-device-base.js +58 -82
- package/lib/common/mobile/ios/ios-device-product-name-mapper.js +0 -2
- package/lib/common/mobile/ios/ios-log-filter.js +0 -1
- package/lib/common/mobile/ios/simulator/ios-emulator-services.js +63 -96
- package/lib/common/mobile/ios/simulator/ios-sim-resolver.js +1 -2
- package/lib/common/mobile/ios/simulator/ios-simulator-application-manager.js +60 -95
- package/lib/common/mobile/ios/simulator/ios-simulator-device.js +27 -48
- package/lib/common/mobile/ios/simulator/ios-simulator-file-system.js +37 -63
- package/lib/common/mobile/ios/simulator/ios-simulator-log-provider.js +24 -36
- package/lib/common/mobile/local-to-device-path-data-factory.js +0 -1
- package/lib/common/mobile/log-filter.js +0 -2
- package/lib/common/mobile/logging-levels.js +0 -1
- package/lib/common/mobile/mobile-core/android-device-discovery.js +43 -64
- package/lib/common/mobile/mobile-core/android-emulator-discovery.js +21 -35
- package/lib/common/mobile/mobile-core/android-process-service.js +143 -214
- package/lib/common/mobile/mobile-core/device-discovery.js +2 -14
- package/lib/common/mobile/mobile-core/devices-service.js +386 -505
- package/lib/common/mobile/mobile-core/ios-device-discovery.js +24 -37
- package/lib/common/mobile/mobile-core/ios-simulator-discovery.js +47 -65
- package/lib/common/mobile/mobile-helper.js +15 -27
- package/lib/common/mobile/wp8/wp8-emulator-services.js +25 -53
- package/lib/common/opener.js +2 -3
- package/lib/common/os-info.js +0 -1
- package/lib/common/plist-parser.js +0 -1
- package/lib/common/project-helper.js +0 -1
- package/lib/common/prompter.js +91 -114
- package/lib/common/queue.js +9 -21
- package/lib/common/resource-loader.js +0 -1
- package/lib/common/services/auto-completion-service.js +40 -65
- package/lib/common/services/cancellation.js +17 -29
- package/lib/common/services/commands-service.js +146 -180
- package/lib/common/services/help-service.js +133 -166
- package/lib/common/services/hooks-service.js +93 -121
- package/lib/common/services/ios-notification-service.js +21 -35
- package/lib/common/services/json-file-settings-service.js +52 -77
- package/lib/common/services/lock-service.js +35 -58
- package/lib/common/services/message-contract-generator.js +35 -47
- package/lib/common/services/messages-service.js +0 -1
- package/lib/common/services/micro-templating-service.js +4 -21
- package/lib/common/services/net-service.js +90 -110
- package/lib/common/services/project-files-manager.js +10 -28
- package/lib/common/services/project-files-provider-base.js +0 -1
- package/lib/common/services/proxy-service.js +13 -25
- package/lib/common/services/qr.js +13 -25
- package/lib/common/services/settings-service.js +1 -2
- package/lib/common/services/xcode-select-service.js +20 -36
- package/lib/common/utils.js +2 -3
- package/lib/common/validators/project-name-validator.js +1 -2
- package/lib/common/validators/validation-result.js +1 -2
- package/lib/common/verify-node-version.js +3 -11
- package/lib/common/yok.js +35 -69
- package/lib/config.js +36 -72
- package/lib/constants-provider.js +0 -1
- package/lib/constants.js +24 -77
- package/lib/controllers/build-controller.js +82 -100
- package/lib/controllers/debug-controller.js +107 -133
- package/lib/controllers/deploy-controller.js +15 -24
- package/lib/controllers/migrate-controller.js +723 -884
- package/lib/controllers/platform-controller.js +71 -94
- package/lib/controllers/prepare-controller.js +232 -274
- package/lib/controllers/run-controller.js +397 -427
- package/lib/controllers/update-controller-base.js +16 -30
- package/lib/controllers/update-controller.js +94 -130
- package/lib/data/build-data.js +0 -1
- package/lib/data/controller-data-base.js +0 -1
- package/lib/data/debug-data.js +0 -1
- package/lib/data/platform-data.js +0 -1
- package/lib/data/prepare-data.js +4 -2
- package/lib/data/run-data.js +0 -1
- package/lib/definitions/project.d.ts +24 -24
- package/lib/detached-processes/cleanup-js-subprocess.js +5 -20
- package/lib/detached-processes/cleanup-process.js +30 -43
- package/lib/detached-processes/file-log-service.js +1 -2
- package/lib/device-path-provider.js +23 -35
- package/lib/device-sockets/ios/app-debug-socket-proxy-factory.js +149 -171
- package/lib/device-sockets/ios/notification.js +1 -4
- package/lib/device-sockets/ios/socket-request-executor.js +24 -42
- package/lib/helpers/android-bundle-validator-helper.js +2 -3
- package/lib/helpers/deploy-command-helper.js +44 -50
- package/lib/helpers/key-command-helper.js +6 -17
- package/lib/helpers/livesync-command-helper.js +137 -155
- package/lib/helpers/network-connectivity-validator.js +6 -18
- package/lib/helpers/options-track-helper.js +7 -19
- package/lib/helpers/package-path-helper.js +0 -1
- package/lib/helpers/platform-command-helper.js +101 -127
- package/lib/helpers/version-validator-helper.js +0 -1
- package/lib/key-commands/bootstrap.js +2 -3
- package/lib/key-commands/index.js +154 -205
- package/lib/nativescript-cli-lib-bootstrap.js +0 -4
- package/lib/nativescript-cli-lib.js +0 -1
- package/lib/nativescript-cli.js +6 -24
- package/lib/node/pbxproj-dom-xcode.js +0 -1
- package/lib/node/xcode.js +0 -1
- package/lib/node-package-manager.js +81 -114
- package/lib/options.js +122 -156
- package/lib/package-installation-manager.js +130 -172
- package/lib/package-manager.js +63 -88
- package/lib/platform-command-param.js +4 -16
- package/lib/pnpm-package-manager.js +59 -81
- package/lib/project-data.js +1 -13
- package/lib/providers/project-files-provider.js +1 -2
- package/lib/resolvers/livesync-service-resolver.js +0 -1
- package/lib/services/analytics/analytics-broker-process.js +19 -32
- package/lib/services/analytics/analytics-broker.js +17 -31
- package/lib/services/analytics/analytics-service.js +170 -210
- package/lib/services/analytics/google-analytics-provider.js +43 -59
- package/lib/services/analytics-settings-service.js +15 -37
- package/lib/services/android/android-bundle-tool-service.js +43 -61
- package/lib/services/android/gradle-build-args-service.js +9 -23
- package/lib/services/android/gradle-build-service.js +22 -36
- package/lib/services/android/gradle-command-service.js +22 -36
- package/lib/services/android-device-debug-service.js +90 -123
- package/lib/services/android-plugin-build-service.js +205 -260
- package/lib/services/android-project-service.js +129 -241
- package/lib/services/android-resources-migration-service.js +51 -71
- package/lib/services/apple-portal/apple-portal-application-service.js +46 -64
- package/lib/services/apple-portal/apple-portal-cookie-service.js +0 -1
- package/lib/services/apple-portal/apple-portal-session-service.js +197 -218
- package/lib/services/apple-portal/srp/srp-wrapper.js +43 -61
- package/lib/services/assets-generation/assets-generation-service.js +103 -128
- package/lib/services/build-artifacts-service.js +10 -22
- package/lib/services/build-data-service.js +0 -1
- package/lib/services/build-info-file-service.js +20 -36
- package/lib/services/cleanup-service.js +48 -81
- package/lib/services/cocoapods-platform-manager.js +0 -9
- package/lib/services/cocoapods-service.js +112 -153
- package/lib/services/debug-data-service.js +0 -1
- package/lib/services/debug-service-base.js +0 -7
- package/lib/services/device/device-install-app-service.js +54 -72
- package/lib/services/doctor-service.js +101 -135
- package/lib/services/extensibility-service.js +81 -108
- package/lib/services/files-hash-service.js +26 -44
- package/lib/services/hmr-status-service.js +1 -3
- package/lib/services/info-service.js +0 -1
- package/lib/services/initialize-service.js +37 -54
- package/lib/services/ios/export-options-plist-service.js +38 -55
- package/lib/services/ios/ios-signing-service.js +168 -191
- package/lib/services/ios/spm-service.js +46 -70
- package/lib/services/ios/xcodebuild-args-service.js +77 -103
- package/lib/services/ios/xcodebuild-command-service.js +14 -26
- package/lib/services/ios/xcodebuild-service.js +52 -72
- package/lib/services/ios-debugger-port-service.js +24 -38
- package/lib/services/ios-device-debug-service.js +75 -103
- package/lib/services/ios-entitlements-service.js +31 -43
- package/lib/services/ios-extensions-service.js +18 -30
- package/lib/services/ios-log-filter.js +0 -20
- package/lib/services/ios-native-target-service.js +4 -6
- package/lib/services/ios-project-service.js +452 -603
- package/lib/services/ios-provision-service.js +108 -132
- package/lib/services/ios-watch-app-service.js +21 -33
- package/lib/services/ip-service.js +38 -55
- package/lib/services/itmstransporter-service.js +129 -153
- package/lib/services/karma-execution.js +0 -2
- package/lib/services/livesync/android-device-livesync-service-base.js +31 -49
- package/lib/services/livesync/android-device-livesync-service.js +120 -151
- package/lib/services/livesync/android-device-livesync-sockets-service.js +121 -155
- package/lib/services/livesync/android-livesync-service.js +14 -36
- package/lib/services/livesync/android-livesync-tool.js +90 -117
- package/lib/services/livesync/device-livesync-service-base.js +15 -30
- package/lib/services/livesync/ios-device-livesync-service.js +114 -150
- package/lib/services/livesync/ios-livesync-service.js +42 -60
- package/lib/services/livesync/livesync-socket.js +0 -1
- package/lib/services/livesync/platform-livesync-service-base.js +94 -124
- package/lib/services/livesync-process-data-service.js +0 -1
- package/lib/services/log-parser-service.js +1 -2
- package/lib/services/log-source-map-service.js +30 -56
- package/lib/services/marking-mode-service.js +17 -33
- package/lib/services/metadata-filtering-service.js +0 -1
- package/lib/services/npm-config-service.js +1 -5
- package/lib/services/pacote-service.js +49 -71
- package/lib/services/performance-service.js +2 -4
- package/lib/services/platform/add-platform-service.js +51 -119
- package/lib/services/platform/platform-validation-service.js +22 -34
- package/lib/services/platform/prepare-native-platform-service.js +49 -65
- package/lib/services/platform-environment-requirements.js +27 -43
- package/lib/services/platform-project-service-base.js +0 -1
- package/lib/services/platforms-data-service.js +0 -1
- package/lib/services/plugins-service.js +125 -168
- package/lib/services/prepare-data-service.js +0 -1
- package/lib/services/project-backup-service.js +1 -5
- package/lib/services/project-changes-service.js +124 -152
- package/lib/services/project-cleanup-service.js +64 -79
- package/lib/services/project-config-service.js +73 -102
- package/lib/services/project-data-service.js +108 -154
- package/lib/services/project-name-service.js +28 -44
- package/lib/services/project-service.js +84 -113
- package/lib/services/project-templates-service.js +52 -68
- package/lib/services/qr-code-terminal-service.js +0 -1
- package/lib/services/require-service.js +0 -1
- package/lib/services/start-service.js +41 -60
- package/lib/services/temp-service.js +8 -22
- package/lib/services/terminal-spinner-service.js +15 -28
- package/lib/services/test-execution-service.js +59 -79
- package/lib/services/test-initialization-service.js +2 -6
- package/lib/services/timeline-profiler-service.js +1 -2
- package/lib/services/user-settings-service.js +0 -1
- package/lib/services/versions-service.js +119 -140
- package/lib/services/watch-ignore-list-service.js +0 -1
- package/lib/services/webpack/webpack-compiler-service.js +215 -279
- package/lib/services/xcconfig-service.js +8 -21
- package/lib/services/xcproj-service.js +0 -1
- package/lib/shared-event-bus.js +0 -6
- package/lib/sys-info.js +45 -63
- package/lib/tools/config-manipulation/config-transformer.js +0 -12
- package/lib/tools/node-modules/node-modules-builder.js +16 -28
- package/lib/tools/node-modules/node-modules-dependencies-builder.js +0 -6
- package/lib/yarn-package-manager.js +59 -79
- package/lib/yarn2-package-manager.js +60 -82
- package/package.json +65 -80
- 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.DevicesService = void 0;
|
|
19
10
|
const assert = require("assert");
|
|
@@ -63,111 +54,101 @@ class DevicesService extends events_1.EventEmitter {
|
|
|
63
54
|
this.$iOSSimulatorDiscovery,
|
|
64
55
|
];
|
|
65
56
|
}
|
|
66
|
-
pickSingleDevice(options) {
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
57
|
+
async pickSingleDevice(options) {
|
|
58
|
+
if (options.onlyDevices && options.onlyEmulators) {
|
|
59
|
+
this.$errors.fail(constants_1.DebugCommandErrors.UNABLE_TO_USE_FOR_DEVICE_AND_EMULATOR);
|
|
60
|
+
}
|
|
61
|
+
if (options.deviceId) {
|
|
62
|
+
const device = await this.getDevice(options.deviceId);
|
|
63
|
+
return device;
|
|
64
|
+
}
|
|
65
|
+
const availableDevicesAndEmulators = this.getDeviceInstances().filter((d) => d.deviceInfo.status === constants_2.CONNECTED_STATUS &&
|
|
66
|
+
(!this.platform ||
|
|
67
|
+
d.deviceInfo.platform.toLowerCase() === this.platform.toLowerCase()));
|
|
68
|
+
const selectedDevices = availableDevicesAndEmulators.filter((d) => options.onlyEmulators
|
|
69
|
+
? d.isEmulator
|
|
70
|
+
: options.onlyDevices
|
|
71
|
+
? !d.isEmulator
|
|
72
|
+
: true);
|
|
73
|
+
if (selectedDevices.length > 1) {
|
|
74
|
+
if ((0, helpers_1.isInteractive)()) {
|
|
75
|
+
const choices = selectedDevices.map((e) => `${e.deviceInfo.identifier} - ${e.deviceInfo.displayName}`);
|
|
76
|
+
const selectedDeviceString = await this.$prompter.promptForChoice("Select device for debugging", choices);
|
|
77
|
+
const selectedDevice = _.find(selectedDevices, (d) => `${d.deviceInfo.identifier} - ${d.deviceInfo.displayName}` ===
|
|
78
|
+
selectedDeviceString);
|
|
79
|
+
return selectedDevice;
|
|
74
80
|
}
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
(
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
? !d.isEmulator
|
|
83
|
-
: true);
|
|
84
|
-
if (selectedDevices.length > 1) {
|
|
85
|
-
if ((0, helpers_1.isInteractive)()) {
|
|
86
|
-
const choices = selectedDevices.map((e) => `${e.deviceInfo.identifier} - ${e.deviceInfo.displayName}`);
|
|
87
|
-
const selectedDeviceString = yield this.$prompter.promptForChoice("Select device for debugging", choices);
|
|
88
|
-
const selectedDevice = _.find(selectedDevices, (d) => `${d.deviceInfo.identifier} - ${d.deviceInfo.displayName}` ===
|
|
89
|
-
selectedDeviceString);
|
|
90
|
-
return selectedDevice;
|
|
81
|
+
else {
|
|
82
|
+
const sortedInstances = _.sortBy(selectedDevices, (e) => e.deviceInfo.version);
|
|
83
|
+
const emulators = sortedInstances.filter((e) => e.isEmulator);
|
|
84
|
+
const devices = sortedInstances.filter((d) => !d.isEmulator);
|
|
85
|
+
let selectedInstance;
|
|
86
|
+
if (options.onlyEmulators || options.onlyDevices) {
|
|
87
|
+
selectedInstance = _.last(sortedInstances);
|
|
91
88
|
}
|
|
92
89
|
else {
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
const devices = sortedInstances.filter((d) => !d.isEmulator);
|
|
96
|
-
let selectedInstance;
|
|
97
|
-
if (options.onlyEmulators || options.onlyDevices) {
|
|
98
|
-
// When --emulator or --forDevice is passed, the instances are already filtered
|
|
99
|
-
// So we are sure we have exactly the type we need and we can safely return the last one (highest OS version).
|
|
100
|
-
selectedInstance = _.last(sortedInstances);
|
|
90
|
+
if (emulators.length) {
|
|
91
|
+
selectedInstance = _.last(emulators);
|
|
101
92
|
}
|
|
102
93
|
else {
|
|
103
|
-
|
|
104
|
-
selectedInstance = _.last(emulators);
|
|
105
|
-
}
|
|
106
|
-
else {
|
|
107
|
-
selectedInstance = _.last(devices);
|
|
108
|
-
}
|
|
94
|
+
selectedInstance = _.last(devices);
|
|
109
95
|
}
|
|
110
|
-
this.$logger.warn(`Multiple devices/emulators found. Starting debugger on ${selectedInstance.deviceInfo.identifier}. ` +
|
|
111
|
-
"If you want to debug on specific device/emulator, you can specify it with --device option.");
|
|
112
|
-
return selectedInstance;
|
|
113
96
|
}
|
|
97
|
+
this.$logger.warn(`Multiple devices/emulators found. Starting debugger on ${selectedInstance.deviceInfo.identifier}. ` +
|
|
98
|
+
"If you want to debug on specific device/emulator, you can specify it with --device option.");
|
|
99
|
+
return selectedInstance;
|
|
114
100
|
}
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
101
|
+
}
|
|
102
|
+
else if (selectedDevices.length === 1) {
|
|
103
|
+
return _.head(selectedDevices);
|
|
104
|
+
}
|
|
105
|
+
this.$errors.fail(constants_1.DebugCommandErrors.NO_DEVICES_EMULATORS_FOUND_FOR_OPTIONS);
|
|
120
106
|
}
|
|
121
|
-
getEmulatorImages(options) {
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
(!options ||
|
|
126
|
-
!options.platform ||
|
|
127
|
-
this.$mobileHelper.isiOSPlatform(options.platform))) {
|
|
128
|
-
result.ios = yield this.$iOSEmulatorServices.getEmulatorImages();
|
|
129
|
-
}
|
|
130
|
-
if (!options ||
|
|
107
|
+
async getEmulatorImages(options) {
|
|
108
|
+
const result = Object.create(null);
|
|
109
|
+
if (this.$hostInfo.isDarwin &&
|
|
110
|
+
(!options ||
|
|
131
111
|
!options.platform ||
|
|
132
|
-
this.$mobileHelper.
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
112
|
+
this.$mobileHelper.isiOSPlatform(options.platform))) {
|
|
113
|
+
result.ios = await this.$iOSEmulatorServices.getEmulatorImages();
|
|
114
|
+
}
|
|
115
|
+
if (!options ||
|
|
116
|
+
!options.platform ||
|
|
117
|
+
this.$mobileHelper.isAndroidPlatform(options.platform)) {
|
|
118
|
+
result.android = await this.$androidEmulatorServices.getEmulatorImages();
|
|
119
|
+
}
|
|
120
|
+
return result;
|
|
137
121
|
}
|
|
138
|
-
startEmulator(options) {
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
platform: options.platform,
|
|
145
|
-
});
|
|
146
|
-
const emulators = this.$emulatorHelper.getEmulatorsFromAvailableEmulatorsOutput(availableEmulatorsOutput);
|
|
147
|
-
const errors = this.$emulatorHelper.getErrorsFromAvailableEmulatorsOutput(availableEmulatorsOutput);
|
|
148
|
-
let emulator = null;
|
|
149
|
-
if (options.imageIdentifier) {
|
|
150
|
-
emulator = this.$emulatorHelper.getEmulatorByImageIdentifier(options.imageIdentifier, emulators);
|
|
151
|
-
}
|
|
152
|
-
else if (options.emulatorIdOrName) {
|
|
153
|
-
emulator = this.$emulatorHelper.getEmulatorByIdOrName(options.emulatorIdOrName, emulators);
|
|
154
|
-
}
|
|
155
|
-
if (!emulator) {
|
|
156
|
-
const additionalErrors = errors && errors.length ? errors : [];
|
|
157
|
-
return [
|
|
158
|
-
`Unable to find emulator with provided options: ${options}`,
|
|
159
|
-
...additionalErrors,
|
|
160
|
-
];
|
|
161
|
-
}
|
|
162
|
-
// emulator is already running
|
|
163
|
-
if (emulator.status === constants.RUNNING_EMULATOR_STATUS) {
|
|
164
|
-
return null;
|
|
165
|
-
}
|
|
166
|
-
options.emulator = emulator;
|
|
167
|
-
const emulatorService = this.resolveEmulatorServices(emulator.platform);
|
|
168
|
-
const result = yield emulatorService.startEmulator(options);
|
|
169
|
-
return result.errors && result.errors.length ? result.errors : null;
|
|
122
|
+
async startEmulator(options) {
|
|
123
|
+
if (!options || (!options.imageIdentifier && !options.emulatorIdOrName)) {
|
|
124
|
+
return ["Missing mandatory image identifier or name option."];
|
|
125
|
+
}
|
|
126
|
+
const availableEmulatorsOutput = await this.getEmulatorImages({
|
|
127
|
+
platform: options.platform,
|
|
170
128
|
});
|
|
129
|
+
const emulators = this.$emulatorHelper.getEmulatorsFromAvailableEmulatorsOutput(availableEmulatorsOutput);
|
|
130
|
+
const errors = this.$emulatorHelper.getErrorsFromAvailableEmulatorsOutput(availableEmulatorsOutput);
|
|
131
|
+
let emulator = null;
|
|
132
|
+
if (options.imageIdentifier) {
|
|
133
|
+
emulator = this.$emulatorHelper.getEmulatorByImageIdentifier(options.imageIdentifier, emulators);
|
|
134
|
+
}
|
|
135
|
+
else if (options.emulatorIdOrName) {
|
|
136
|
+
emulator = this.$emulatorHelper.getEmulatorByIdOrName(options.emulatorIdOrName, emulators);
|
|
137
|
+
}
|
|
138
|
+
if (!emulator) {
|
|
139
|
+
const additionalErrors = errors && errors.length ? errors : [];
|
|
140
|
+
return [
|
|
141
|
+
`Unable to find emulator with provided options: ${options}`,
|
|
142
|
+
...additionalErrors,
|
|
143
|
+
];
|
|
144
|
+
}
|
|
145
|
+
if (emulator.status === constants.RUNNING_EMULATOR_STATUS) {
|
|
146
|
+
return null;
|
|
147
|
+
}
|
|
148
|
+
options.emulator = emulator;
|
|
149
|
+
const emulatorService = this.resolveEmulatorServices(emulator.platform);
|
|
150
|
+
const result = await emulatorService.startEmulator(options);
|
|
151
|
+
return result.errors && result.errors.length ? result.errors : null;
|
|
171
152
|
}
|
|
172
153
|
get platform() {
|
|
173
154
|
return this._platform;
|
|
@@ -192,11 +173,9 @@ class DevicesService extends events_1.EventEmitter {
|
|
|
192
173
|
return !!(this.$mobileHelper.isiOSPlatform(device.deviceInfo.platform) &&
|
|
193
174
|
device.isEmulator);
|
|
194
175
|
}
|
|
195
|
-
/* tslint:disable:no-unused-variable */
|
|
196
176
|
setLogLevel(logLevel, deviceIdentifier) {
|
|
197
177
|
this.$deviceLogProvider.setLogLevel(logLevel, deviceIdentifier);
|
|
198
178
|
}
|
|
199
|
-
/* tslint:enable:no-unused-variable */
|
|
200
179
|
isAppInstalledOnDevices(deviceIdentifiers, appId, projectName, projectDir) {
|
|
201
180
|
this.$logger.trace(`Called isInstalledOnDevices for identifiers ${deviceIdentifiers}. AppIdentifier is ${appId}.`);
|
|
202
181
|
return _.map(deviceIdentifiers, (deviceIdentifier) => this.isApplicationInstalledOnDevice(deviceIdentifier, {
|
|
@@ -213,11 +192,9 @@ class DevicesService extends events_1.EventEmitter {
|
|
|
213
192
|
return device;
|
|
214
193
|
});
|
|
215
194
|
}
|
|
216
|
-
getInstalledApplications(deviceIdentifier) {
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
return device.applicationManager.getInstalledApplications();
|
|
220
|
-
});
|
|
195
|
+
async getInstalledApplications(deviceIdentifier) {
|
|
196
|
+
const device = await this.getDevice(deviceIdentifier);
|
|
197
|
+
return device.applicationManager.getInstalledApplications();
|
|
221
198
|
}
|
|
222
199
|
addDeviceDiscovery(deviceDiscovery) {
|
|
223
200
|
this._otherDeviceDiscoveries.push(deviceDiscovery);
|
|
@@ -270,69 +247,62 @@ class DevicesService extends events_1.EventEmitter {
|
|
|
270
247
|
delete this._availableEmulators[emulator.imageIdentifier];
|
|
271
248
|
this.emit(constants.EmulatorDiscoveryNames.EMULATOR_IMAGE_LOST, emulator);
|
|
272
249
|
}
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
detectCurrentlyAttachedDevices(deviceInitOpts) {
|
|
277
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
278
|
-
const options = this.getDeviceLookingOptions(deviceInitOpts);
|
|
279
|
-
for (const deviceDiscovery of this._allDeviceDiscoveries) {
|
|
280
|
-
try {
|
|
281
|
-
yield deviceDiscovery.startLookingForDevices(options);
|
|
282
|
-
}
|
|
283
|
-
catch (err) {
|
|
284
|
-
this.$logger.trace("Error while checking for devices.", err);
|
|
285
|
-
}
|
|
286
|
-
}
|
|
287
|
-
});
|
|
288
|
-
}
|
|
289
|
-
detectCurrentlyAvailableEmulators() {
|
|
290
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
291
|
-
try {
|
|
292
|
-
yield this.$androidEmulatorDiscovery.startLookingForDevices();
|
|
293
|
-
}
|
|
294
|
-
catch (err) {
|
|
295
|
-
this.$logger.trace(`Error while checking for Android emulators. ${err}`);
|
|
296
|
-
}
|
|
250
|
+
async detectCurrentlyAttachedDevices(deviceInitOpts) {
|
|
251
|
+
const options = this.getDeviceLookingOptions(deviceInitOpts);
|
|
252
|
+
for (const deviceDiscovery of this._allDeviceDiscoveries) {
|
|
297
253
|
try {
|
|
298
|
-
|
|
254
|
+
await deviceDiscovery.startLookingForDevices(options);
|
|
299
255
|
}
|
|
300
256
|
catch (err) {
|
|
301
|
-
this.$logger.trace(
|
|
257
|
+
this.$logger.trace("Error while checking for devices.", err);
|
|
302
258
|
}
|
|
303
|
-
}
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
async detectCurrentlyAvailableEmulators() {
|
|
262
|
+
try {
|
|
263
|
+
await this.$androidEmulatorDiscovery.startLookingForDevices();
|
|
264
|
+
}
|
|
265
|
+
catch (err) {
|
|
266
|
+
this.$logger.trace(`Error while checking for Android emulators. ${err}`);
|
|
267
|
+
}
|
|
268
|
+
try {
|
|
269
|
+
await this.$iOSSimulatorDiscovery.checkForAvailableSimulators();
|
|
270
|
+
}
|
|
271
|
+
catch (err) {
|
|
272
|
+
this.$logger.trace(`Error while checking for iOS simulators. ${err}`);
|
|
273
|
+
}
|
|
304
274
|
}
|
|
305
275
|
startDeviceDetectionInterval(deviceInitOpts = {}) {
|
|
306
276
|
if (!this.deviceDetectionInterval) {
|
|
307
277
|
let isDeviceDetectionIntervalInProgress = false;
|
|
308
|
-
this.deviceDetectionInterval = setInterval(() =>
|
|
278
|
+
this.deviceDetectionInterval = setInterval(async () => {
|
|
309
279
|
if (isDeviceDetectionIntervalInProgress) {
|
|
310
280
|
return;
|
|
311
281
|
}
|
|
312
282
|
isDeviceDetectionIntervalInProgress = true;
|
|
313
|
-
|
|
283
|
+
await this.detectCurrentlyAttachedDevices(deviceInitOpts);
|
|
314
284
|
try {
|
|
315
285
|
const trustedDevices = _.filter(this._devices, (device) => device.deviceInfo.status === constants.CONNECTED_STATUS);
|
|
316
|
-
|
|
286
|
+
await (0, helpers_1.settlePromises)(_.map(trustedDevices, (device) => device.applicationManager.checkForApplicationUpdates()));
|
|
317
287
|
}
|
|
318
288
|
catch (err) {
|
|
319
289
|
this.$logger.trace("Error checking for application updates on devices.", err);
|
|
320
290
|
}
|
|
321
291
|
isDeviceDetectionIntervalInProgress = false;
|
|
322
|
-
}
|
|
292
|
+
}, deviceInitOpts.detectionInterval || DevicesService.DEVICE_LOOKING_INTERVAL);
|
|
323
293
|
this.deviceDetectionInterval.unref();
|
|
324
294
|
}
|
|
325
295
|
}
|
|
326
296
|
startEmulatorDetectionInterval(opts = {}) {
|
|
327
297
|
let isEmulatorDetectionIntervalRunning = false;
|
|
328
|
-
this.emulatorDetectionInterval = setInterval(() =>
|
|
298
|
+
this.emulatorDetectionInterval = setInterval(async () => {
|
|
329
299
|
if (isEmulatorDetectionIntervalRunning) {
|
|
330
300
|
return;
|
|
331
301
|
}
|
|
332
302
|
isEmulatorDetectionIntervalRunning = true;
|
|
333
|
-
|
|
303
|
+
await this.detectCurrentlyAvailableEmulators();
|
|
334
304
|
isEmulatorDetectionIntervalRunning = false;
|
|
335
|
-
}
|
|
305
|
+
}, opts.detectionInterval || DevicesService.EMULATOR_IMAGES_DETECTION_INTERVAL);
|
|
336
306
|
this.emulatorDetectionInterval.unref();
|
|
337
307
|
}
|
|
338
308
|
stopDeviceDetectionInterval() {
|
|
@@ -345,11 +315,6 @@ class DevicesService extends events_1.EventEmitter {
|
|
|
345
315
|
clearInterval(this.emulatorDetectionInterval);
|
|
346
316
|
}
|
|
347
317
|
}
|
|
348
|
-
/**
|
|
349
|
-
* Returns device that matches an identifier.
|
|
350
|
-
* The identifier is expected to be the same as the running device declares it (emulator-5554 for android or GUID for ios).
|
|
351
|
-
* @param identifier running emulator or device identifier
|
|
352
|
-
*/
|
|
353
318
|
getDeviceByIdentifier(identifier) {
|
|
354
319
|
const searchedDevice = _.find(this.getDeviceInstances(), (device) => {
|
|
355
320
|
if (this.$mobileHelper.isApplePlatform(device.deviceInfo.platform) &&
|
|
@@ -365,112 +330,81 @@ class DevicesService extends events_1.EventEmitter {
|
|
|
365
330
|
}
|
|
366
331
|
return searchedDevice;
|
|
367
332
|
}
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
}
|
|
377
|
-
yield this.detectCurrentlyAttachedDevices(deviceInitOpts);
|
|
378
|
-
yield this.detectCurrentlyAvailableEmulators();
|
|
379
|
-
yield this.startDeviceDetectionInterval(deviceInitOpts);
|
|
380
|
-
});
|
|
333
|
+
async startLookingForDevices(deviceInitOpts) {
|
|
334
|
+
this.$logger.trace("startLookingForDevices; platform is %s", this._platform);
|
|
335
|
+
if (this._platform) {
|
|
336
|
+
return this.detectCurrentlyAttachedDevices(deviceInitOpts);
|
|
337
|
+
}
|
|
338
|
+
await this.detectCurrentlyAttachedDevices(deviceInitOpts);
|
|
339
|
+
await this.detectCurrentlyAvailableEmulators();
|
|
340
|
+
await this.startDeviceDetectionInterval(deviceInitOpts);
|
|
381
341
|
}
|
|
382
|
-
/**
|
|
383
|
-
* Returns device depending on the passed index.
|
|
384
|
-
* The index refers to assigned number to listed devices by tns device command.
|
|
385
|
-
* @param index assigned device number
|
|
386
|
-
*/
|
|
387
342
|
getDeviceByIndex(index) {
|
|
388
343
|
this.validateIndex(index - 1);
|
|
389
344
|
return this.getDeviceInstances()[index - 1];
|
|
390
345
|
}
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
}
|
|
410
|
-
if (!device) {
|
|
411
|
-
this.$errors.fail(this.$messages.Devices
|
|
412
|
-
.NotFoundDeviceByIdentifierErrorMessageWithIdentifier, deviceOption, this.$staticConfig.CLIENT_NAME.toLowerCase());
|
|
413
|
-
}
|
|
414
|
-
return device;
|
|
415
|
-
});
|
|
346
|
+
async getDevice(deviceOption) {
|
|
347
|
+
let device = null;
|
|
348
|
+
if (!device) {
|
|
349
|
+
device = _.find(this.getDeviceInstances(), (d) => (d.deviceInfo.identifier &&
|
|
350
|
+
d.deviceInfo.identifier === deviceOption) ||
|
|
351
|
+
(d.deviceInfo.displayName &&
|
|
352
|
+
d.deviceInfo.displayName === deviceOption) ||
|
|
353
|
+
(d.deviceInfo.imageIdentifier &&
|
|
354
|
+
d.deviceInfo.imageIdentifier === deviceOption));
|
|
355
|
+
}
|
|
356
|
+
if (!device && helpers.isNumberWithoutExponent(deviceOption)) {
|
|
357
|
+
device = this.getDeviceByIndex(parseInt(deviceOption, 10));
|
|
358
|
+
}
|
|
359
|
+
if (!device) {
|
|
360
|
+
this.$errors.fail(this.$messages.Devices
|
|
361
|
+
.NotFoundDeviceByIdentifierErrorMessageWithIdentifier, deviceOption, this.$staticConfig.CLIENT_NAME.toLowerCase());
|
|
362
|
+
}
|
|
363
|
+
return device;
|
|
416
364
|
}
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
if (!canExecute || canExecute(this._device)) {
|
|
425
|
-
return {
|
|
426
|
-
deviceIdentifier: this._device.deviceInfo.identifier,
|
|
427
|
-
result: yield action(this._device),
|
|
428
|
-
};
|
|
429
|
-
}
|
|
430
|
-
});
|
|
365
|
+
async executeOnDevice(action, canExecute) {
|
|
366
|
+
if (!canExecute || canExecute(this._device)) {
|
|
367
|
+
return {
|
|
368
|
+
deviceIdentifier: this._device.deviceInfo.identifier,
|
|
369
|
+
result: await action(this._device),
|
|
370
|
+
};
|
|
371
|
+
}
|
|
431
372
|
}
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
try {
|
|
445
|
-
if (!canExecute || canExecute(device)) {
|
|
446
|
-
result.push({
|
|
447
|
-
deviceIdentifier: device.deviceInfo.identifier,
|
|
448
|
-
result: yield action(device),
|
|
449
|
-
});
|
|
450
|
-
}
|
|
451
|
-
}
|
|
452
|
-
catch (err) {
|
|
453
|
-
err.deviceIdentifier = device.deviceInfo.identifier;
|
|
454
|
-
this.$logger.trace(`Error while executing action on device ${device.deviceInfo.identifier}. The error is`, err);
|
|
455
|
-
errors.push(err);
|
|
373
|
+
async executeOnAllConnectedDevices(action, canExecute) {
|
|
374
|
+
const devices = this.filterDevicesByPlatform();
|
|
375
|
+
const sortedDevices = _.sortBy(devices, (device) => device.deviceInfo.platform);
|
|
376
|
+
const result = [];
|
|
377
|
+
const errors = [];
|
|
378
|
+
for (const device of sortedDevices) {
|
|
379
|
+
try {
|
|
380
|
+
if (!canExecute || canExecute(device)) {
|
|
381
|
+
result.push({
|
|
382
|
+
deviceIdentifier: device.deviceInfo.identifier,
|
|
383
|
+
result: await action(device),
|
|
384
|
+
});
|
|
456
385
|
}
|
|
457
386
|
}
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
}
|
|
463
|
-
const errorMessage = `${preErrorMsg}${errors
|
|
464
|
-
.map((e) => e.message || e)
|
|
465
|
-
.join(os_1.EOL)}`;
|
|
466
|
-
this.$errors.fail(errorMessage);
|
|
387
|
+
catch (err) {
|
|
388
|
+
err.deviceIdentifier = device.deviceInfo.identifier;
|
|
389
|
+
this.$logger.trace(`Error while executing action on device ${device.deviceInfo.identifier}. The error is`, err);
|
|
390
|
+
errors.push(err);
|
|
467
391
|
}
|
|
468
|
-
|
|
469
|
-
|
|
392
|
+
}
|
|
393
|
+
if (errors.length) {
|
|
394
|
+
let preErrorMsg = "";
|
|
395
|
+
if (errors.length > 1) {
|
|
396
|
+
preErrorMsg = "Multiple errors were thrown:" + os_1.EOL;
|
|
397
|
+
}
|
|
398
|
+
const errorMessage = `${preErrorMsg}${errors
|
|
399
|
+
.map((e) => e.message || e)
|
|
400
|
+
.join(os_1.EOL)}`;
|
|
401
|
+
this.$errors.fail(errorMessage);
|
|
402
|
+
}
|
|
403
|
+
return result;
|
|
470
404
|
}
|
|
471
405
|
deployOnDevices(deviceIdentifiers, packagePath, appId, projectName, projectDir) {
|
|
472
406
|
this.$logger.trace(`Called deployOnDevices for identifiers ${deviceIdentifiers} for packageFile: ${packagePath}. Application identifier is ${appId}. Project Name is: ${projectName}`);
|
|
473
|
-
return _.map(deviceIdentifiers, (deviceIdentifier) =>
|
|
407
|
+
return _.map(deviceIdentifiers, async (deviceIdentifier) => {
|
|
474
408
|
const device = this.getDeviceByIdentifier(deviceIdentifier);
|
|
475
409
|
let identifier;
|
|
476
410
|
if (typeof appId === "string") {
|
|
@@ -485,141 +419,110 @@ class DevicesService extends events_1.EventEmitter {
|
|
|
485
419
|
projectName,
|
|
486
420
|
projectDir,
|
|
487
421
|
});
|
|
488
|
-
})
|
|
422
|
+
});
|
|
489
423
|
}
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
(!originalCanExecute || !!originalCanExecute(dev));
|
|
509
|
-
}
|
|
510
|
-
return this.executeCore(action, canExecute);
|
|
424
|
+
async execute(action, canExecute, options) {
|
|
425
|
+
assert.ok(this._isInitialized, "Devices services not initialized!");
|
|
426
|
+
if (this.hasDevices) {
|
|
427
|
+
if (this.$hostInfo.isDarwin &&
|
|
428
|
+
this._platform &&
|
|
429
|
+
this.$mobileHelper.isiOSPlatform(this._platform) &&
|
|
430
|
+
this.$options.emulator &&
|
|
431
|
+
!this.isOnlyiOSSimultorRunning()) {
|
|
432
|
+
const originalCanExecute = canExecute;
|
|
433
|
+
canExecute = (dev) => this.isiOSSimulator(dev) &&
|
|
434
|
+
(!originalCanExecute || !!originalCanExecute(dev));
|
|
435
|
+
}
|
|
436
|
+
return this.executeCore(action, canExecute);
|
|
437
|
+
}
|
|
438
|
+
else {
|
|
439
|
+
const message = constants.ERROR_NO_DEVICES;
|
|
440
|
+
if (options && options.allowNoDevices) {
|
|
441
|
+
this.$logger.info(message);
|
|
511
442
|
}
|
|
512
443
|
else {
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
this.$
|
|
444
|
+
if (!this.$hostInfo.isDarwin &&
|
|
445
|
+
this._platform &&
|
|
446
|
+
this.$mobileHelper.isiOSPlatform(this._platform)) {
|
|
447
|
+
this.$errors.fail(message);
|
|
516
448
|
}
|
|
517
449
|
else {
|
|
518
|
-
|
|
519
|
-
this._platform &&
|
|
520
|
-
this.$mobileHelper.isiOSPlatform(this._platform)) {
|
|
521
|
-
this.$errors.fail(message);
|
|
522
|
-
}
|
|
523
|
-
else {
|
|
524
|
-
return this.executeCore(action, canExecute);
|
|
525
|
-
}
|
|
450
|
+
return this.executeCore(action, canExecute);
|
|
526
451
|
}
|
|
527
452
|
}
|
|
528
|
-
}
|
|
453
|
+
}
|
|
529
454
|
}
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
* @param deviceInitOpts mainly contains information about --emulator and --deviceId flags.
|
|
534
|
-
*/
|
|
535
|
-
startEmulatorIfNecessary(deviceInitOpts) {
|
|
536
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
537
|
-
if (deviceInitOpts && deviceInitOpts.deviceId && deviceInitOpts.emulator) {
|
|
538
|
-
this.$errors.fail(`--device and --emulator are incompatible options.
|
|
455
|
+
async startEmulatorIfNecessary(deviceInitOpts) {
|
|
456
|
+
if (deviceInitOpts && deviceInitOpts.deviceId && deviceInitOpts.emulator) {
|
|
457
|
+
this.$errors.fail(`--device and --emulator are incompatible options.
|
|
539
458
|
If you are trying to run on specific emulator, use "${this.$staticConfig.CLIENT_NAME} run --device <DeviceID>`);
|
|
459
|
+
}
|
|
460
|
+
if (deviceInitOpts &&
|
|
461
|
+
deviceInitOpts.platform &&
|
|
462
|
+
!deviceInitOpts.skipEmulatorStart) {
|
|
463
|
+
this._platform = deviceInitOpts.platform;
|
|
464
|
+
try {
|
|
465
|
+
await this.startLookingForDevices(deviceInitOpts);
|
|
540
466
|
}
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
!deviceInitOpts.skipEmulatorStart) {
|
|
544
|
-
// are there any running devices
|
|
545
|
-
this._platform = deviceInitOpts.platform;
|
|
546
|
-
try {
|
|
547
|
-
yield this.startLookingForDevices(deviceInitOpts);
|
|
548
|
-
}
|
|
549
|
-
catch (err) {
|
|
550
|
-
this.$logger.trace("Error while checking for devices.", err);
|
|
551
|
-
}
|
|
552
|
-
const deviceInstances = this.getDeviceInstances();
|
|
553
|
-
if (!deviceInitOpts.deviceId && _.isEmpty(deviceInstances)) {
|
|
554
|
-
if (!this.$hostInfo.isDarwin &&
|
|
555
|
-
this.$mobileHelper.isApplePlatform(deviceInitOpts.platform)) {
|
|
556
|
-
this.$errors.fail(constants.ERROR_NO_DEVICES_CANT_USE_IOS_SIMULATOR);
|
|
557
|
-
}
|
|
558
|
-
}
|
|
559
|
-
try {
|
|
560
|
-
yield this._startEmulatorIfNecessary(deviceInitOpts);
|
|
561
|
-
}
|
|
562
|
-
catch (err) {
|
|
563
|
-
const errorMessage = this.getEmulatorError(err, deviceInitOpts.platform);
|
|
564
|
-
this.$errors.fail(errorMessage);
|
|
565
|
-
}
|
|
467
|
+
catch (err) {
|
|
468
|
+
this.$logger.trace("Error while checking for devices.", err);
|
|
566
469
|
}
|
|
567
|
-
});
|
|
568
|
-
}
|
|
569
|
-
_startEmulatorIfNecessary(data) {
|
|
570
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
571
470
|
const deviceInstances = this.getDeviceInstances();
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
//check if --device(value) is running, if it's not or it's not the same as is specified, start with name from --device(value)
|
|
577
|
-
if (data.deviceId) {
|
|
578
|
-
if (!helpers.isNumberWithoutExponent(data.deviceId)) {
|
|
579
|
-
const activeDeviceInstance = _.find(deviceInstances, (device) => device.deviceInfo.identifier === data.deviceId);
|
|
580
|
-
if (!activeDeviceInstance) {
|
|
581
|
-
return this.startEmulatorCore(data);
|
|
582
|
-
}
|
|
471
|
+
if (!deviceInitOpts.deviceId && _.isEmpty(deviceInstances)) {
|
|
472
|
+
if (!this.$hostInfo.isDarwin &&
|
|
473
|
+
this.$mobileHelper.isApplePlatform(deviceInitOpts.platform)) {
|
|
474
|
+
this.$errors.fail(constants.ERROR_NO_DEVICES_CANT_USE_IOS_SIMULATOR);
|
|
583
475
|
}
|
|
584
476
|
}
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
deviceInstances.length) {
|
|
588
|
-
const runningDeviceInstance = deviceInstances.find((device) => device.deviceInfo.platform === this.$devicePlatformsConstants.visionOS);
|
|
589
|
-
if (!runningDeviceInstance) {
|
|
590
|
-
return this.startEmulatorCore(data);
|
|
591
|
-
}
|
|
477
|
+
try {
|
|
478
|
+
await this._startEmulatorIfNecessary(deviceInitOpts);
|
|
592
479
|
}
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
if (!runningDeviceInstance) {
|
|
597
|
-
return this.startEmulatorCore(data);
|
|
598
|
-
}
|
|
480
|
+
catch (err) {
|
|
481
|
+
const errorMessage = this.getEmulatorError(err, deviceInitOpts.platform);
|
|
482
|
+
this.$errors.fail(errorMessage);
|
|
599
483
|
}
|
|
600
|
-
}
|
|
484
|
+
}
|
|
601
485
|
}
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
486
|
+
async _startEmulatorIfNecessary(data) {
|
|
487
|
+
const deviceInstances = this.getDeviceInstances();
|
|
488
|
+
if (!data.deviceId && _.isEmpty(deviceInstances)) {
|
|
489
|
+
return this.startEmulatorCore(data);
|
|
490
|
+
}
|
|
491
|
+
if (data.deviceId) {
|
|
492
|
+
if (!helpers.isNumberWithoutExponent(data.deviceId)) {
|
|
493
|
+
const activeDeviceInstance = _.find(deviceInstances, (device) => device.deviceInfo.identifier === data.deviceId);
|
|
494
|
+
if (!activeDeviceInstance) {
|
|
495
|
+
return this.startEmulatorCore(data);
|
|
496
|
+
}
|
|
612
497
|
}
|
|
613
|
-
|
|
614
|
-
|
|
498
|
+
}
|
|
499
|
+
if (data.platform === this.$devicePlatformsConstants.visionOS &&
|
|
500
|
+
deviceInstances.length) {
|
|
501
|
+
const runningDeviceInstance = deviceInstances.find((device) => device.deviceInfo.platform ===
|
|
502
|
+
this.$devicePlatformsConstants.visionOS);
|
|
503
|
+
if (!runningDeviceInstance) {
|
|
504
|
+
return this.startEmulatorCore(data);
|
|
615
505
|
}
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
|
|
506
|
+
}
|
|
507
|
+
if (data.emulator && deviceInstances.length) {
|
|
508
|
+
const runningDeviceInstance = _.some(deviceInstances, (value) => value.isEmulator);
|
|
509
|
+
if (!runningDeviceInstance) {
|
|
510
|
+
return this.startEmulatorCore(data);
|
|
621
511
|
}
|
|
622
|
-
}
|
|
512
|
+
}
|
|
513
|
+
}
|
|
514
|
+
async initialize(data) {
|
|
515
|
+
if (!this._deviceInitializePromise) {
|
|
516
|
+
this._deviceInitializePromise = this.initializeCore(data);
|
|
517
|
+
}
|
|
518
|
+
try {
|
|
519
|
+
await this._deviceInitializePromise;
|
|
520
|
+
}
|
|
521
|
+
catch (err) {
|
|
522
|
+
this.$logger.trace(`Error while initializing devicesService: ${err}`);
|
|
523
|
+
this._deviceInitializePromise = null;
|
|
524
|
+
throw err;
|
|
525
|
+
}
|
|
623
526
|
}
|
|
624
527
|
getPlatformsFromDeviceDescriptors(deviceDescriptors) {
|
|
625
528
|
const platforms = _(deviceDescriptors)
|
|
@@ -629,93 +532,89 @@ class DevicesService extends events_1.EventEmitter {
|
|
|
629
532
|
.value();
|
|
630
533
|
return platforms;
|
|
631
534
|
}
|
|
632
|
-
initializeCore(deviceInitOpts) {
|
|
633
|
-
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
|
|
644
|
-
|
|
645
|
-
|
|
646
|
-
|
|
647
|
-
|
|
648
|
-
|
|
649
|
-
|
|
650
|
-
|
|
651
|
-
|
|
652
|
-
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
|
|
658
|
-
this.
|
|
659
|
-
|
|
660
|
-
|
|
535
|
+
async initializeCore(deviceInitOpts) {
|
|
536
|
+
if (this._isInitialized) {
|
|
537
|
+
return;
|
|
538
|
+
}
|
|
539
|
+
if (!this.$options.json) {
|
|
540
|
+
this.$logger.info("Searching for devices...");
|
|
541
|
+
}
|
|
542
|
+
deviceInitOpts = deviceInitOpts || {};
|
|
543
|
+
this._data = deviceInitOpts;
|
|
544
|
+
if (!deviceInitOpts.skipEmulatorStart) {
|
|
545
|
+
await this.startEmulatorIfNecessary(deviceInitOpts);
|
|
546
|
+
}
|
|
547
|
+
const platform = deviceInitOpts.platform;
|
|
548
|
+
const deviceOption = deviceInitOpts.deviceId;
|
|
549
|
+
const deviceLookingOptions = {
|
|
550
|
+
emulator: deviceInitOpts.emulator,
|
|
551
|
+
platform: deviceInitOpts.platform,
|
|
552
|
+
shouldReturnImmediateResult: deviceInitOpts.shouldReturnImmediateResult,
|
|
553
|
+
detectionInterval: deviceInitOpts.detectionInterval,
|
|
554
|
+
fullDiscovery: deviceInitOpts.fullDiscovery,
|
|
555
|
+
};
|
|
556
|
+
if (platform && deviceOption) {
|
|
557
|
+
this._platform = this.$mobileHelper.validatePlatformName(deviceInitOpts.platform);
|
|
558
|
+
await this.startLookingForDevices(deviceLookingOptions);
|
|
559
|
+
this._device = await this.getDevice(deviceOption);
|
|
560
|
+
if (this._device.deviceInfo.platform !== this._platform) {
|
|
561
|
+
this.$errors.fail(constants.ERROR_CANNOT_RESOLVE_DEVICE);
|
|
562
|
+
}
|
|
563
|
+
this.$logger.warn("Your application will be deployed only on the device specified by the provided index or identifier.");
|
|
564
|
+
}
|
|
565
|
+
else if (!platform && deviceOption) {
|
|
566
|
+
await this.startLookingForDevices(deviceLookingOptions);
|
|
567
|
+
this._device = await this.getDevice(deviceOption);
|
|
568
|
+
this._platform = this._device.deviceInfo.platform;
|
|
569
|
+
}
|
|
570
|
+
else if (platform && !deviceOption) {
|
|
571
|
+
this._platform = this.$mobileHelper.validatePlatformName(platform);
|
|
572
|
+
await this.startLookingForDevices(deviceLookingOptions);
|
|
573
|
+
}
|
|
574
|
+
else {
|
|
575
|
+
if (deviceInitOpts.skipInferPlatform) {
|
|
576
|
+
if (deviceInitOpts.skipDeviceDetectionInterval) {
|
|
577
|
+
await this.detectCurrentlyAttachedDevices(deviceLookingOptions);
|
|
578
|
+
}
|
|
579
|
+
else {
|
|
580
|
+
deviceInitOpts.shouldReturnImmediateResult = true;
|
|
581
|
+
await this.startLookingForDevices(deviceLookingOptions);
|
|
661
582
|
}
|
|
662
|
-
this.$logger.warn("Your application will be deployed only on the device specified by the provided index or identifier.");
|
|
663
|
-
}
|
|
664
|
-
else if (!platform && deviceOption) {
|
|
665
|
-
yield this.startLookingForDevices(deviceLookingOptions);
|
|
666
|
-
this._device = yield this.getDevice(deviceOption);
|
|
667
|
-
this._platform = this._device.deviceInfo.platform;
|
|
668
|
-
}
|
|
669
|
-
else if (platform && !deviceOption) {
|
|
670
|
-
this._platform = this.$mobileHelper.validatePlatformName(platform);
|
|
671
|
-
yield this.startLookingForDevices(deviceLookingOptions);
|
|
672
583
|
}
|
|
673
584
|
else {
|
|
674
|
-
|
|
675
|
-
|
|
676
|
-
|
|
677
|
-
|
|
585
|
+
await this.startLookingForDevices(deviceLookingOptions);
|
|
586
|
+
const devices = this.getDeviceInstances();
|
|
587
|
+
const platforms = _(devices)
|
|
588
|
+
.map((device) => device.deviceInfo.platform)
|
|
589
|
+
.filter((pl) => {
|
|
590
|
+
try {
|
|
591
|
+
return !!this.$mobileHelper.validatePlatformName(pl);
|
|
678
592
|
}
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
|
|
593
|
+
catch (err) {
|
|
594
|
+
this.$logger.warn(err.message);
|
|
595
|
+
return null;
|
|
682
596
|
}
|
|
597
|
+
})
|
|
598
|
+
.uniq()
|
|
599
|
+
.value();
|
|
600
|
+
if (platforms.length === 1) {
|
|
601
|
+
this._platform = platforms[0];
|
|
602
|
+
}
|
|
603
|
+
else if (platforms.length === 0) {
|
|
604
|
+
this.$errors.fail(constants.ERROR_NO_DEVICES);
|
|
683
605
|
}
|
|
684
606
|
else {
|
|
685
|
-
|
|
686
|
-
const devices = this.getDeviceInstances();
|
|
687
|
-
const platforms = _(devices)
|
|
688
|
-
.map((device) => device.deviceInfo.platform)
|
|
689
|
-
.filter((pl) => {
|
|
690
|
-
try {
|
|
691
|
-
return !!this.$mobileHelper.validatePlatformName(pl);
|
|
692
|
-
}
|
|
693
|
-
catch (err) {
|
|
694
|
-
this.$logger.warn(err.message);
|
|
695
|
-
return null;
|
|
696
|
-
}
|
|
697
|
-
})
|
|
698
|
-
.uniq()
|
|
699
|
-
.value();
|
|
700
|
-
if (platforms.length === 1) {
|
|
701
|
-
this._platform = platforms[0];
|
|
702
|
-
}
|
|
703
|
-
else if (platforms.length === 0) {
|
|
704
|
-
this.$errors.fail(constants.ERROR_NO_DEVICES);
|
|
705
|
-
}
|
|
706
|
-
else {
|
|
707
|
-
this.$errors.fail("Multiple device platforms detected (%s). Specify platform or device on command line.", helpers.formatListOfNames(platforms, "and"));
|
|
708
|
-
}
|
|
607
|
+
this.$errors.fail("Multiple device platforms detected (%s). Specify platform or device on command line.", helpers.formatListOfNames(platforms, "and"));
|
|
709
608
|
}
|
|
710
609
|
}
|
|
711
|
-
|
|
712
|
-
|
|
713
|
-
|
|
714
|
-
|
|
715
|
-
|
|
716
|
-
|
|
717
|
-
|
|
718
|
-
|
|
610
|
+
}
|
|
611
|
+
if (!this.$hostInfo.isDarwin &&
|
|
612
|
+
this._platform &&
|
|
613
|
+
this.$mobileHelper.isiOSPlatform(this._platform) &&
|
|
614
|
+
this.$options.emulator) {
|
|
615
|
+
this.$errors.fail(constants.ERROR_CANT_USE_SIMULATOR);
|
|
616
|
+
}
|
|
617
|
+
this._isInitialized = true;
|
|
719
618
|
}
|
|
720
619
|
get hasDevices() {
|
|
721
620
|
if (!this._platform) {
|
|
@@ -735,30 +634,24 @@ class DevicesService extends events_1.EventEmitter {
|
|
|
735
634
|
getDeviceByDeviceOption() {
|
|
736
635
|
return this._device;
|
|
737
636
|
}
|
|
738
|
-
mapAbstractToTcpPort(deviceIdentifier, appIdentifier, framework) {
|
|
739
|
-
return
|
|
740
|
-
return this.$androidProcessService.mapAbstractToTcpPort(deviceIdentifier, appIdentifier, framework);
|
|
741
|
-
});
|
|
637
|
+
async mapAbstractToTcpPort(deviceIdentifier, appIdentifier, framework) {
|
|
638
|
+
return this.$androidProcessService.mapAbstractToTcpPort(deviceIdentifier, appIdentifier, framework);
|
|
742
639
|
}
|
|
743
640
|
getDebuggableApps(deviceIdentifiers) {
|
|
744
641
|
return _.map(deviceIdentifiers, (deviceIdentifier) => this.getDebuggableAppsCore(deviceIdentifier));
|
|
745
642
|
}
|
|
746
|
-
getDebuggableViews(deviceIdentifier, appIdentifier) {
|
|
747
|
-
|
|
748
|
-
|
|
749
|
-
return debuggableViewsPerApp && debuggableViewsPerApp[appIdentifier];
|
|
750
|
-
});
|
|
643
|
+
async getDebuggableViews(deviceIdentifier, appIdentifier) {
|
|
644
|
+
const device = this.getDeviceByIdentifier(deviceIdentifier), debuggableViewsPerApp = await device.applicationManager.getDebuggableAppViews([appIdentifier]);
|
|
645
|
+
return debuggableViewsPerApp && debuggableViewsPerApp[appIdentifier];
|
|
751
646
|
}
|
|
752
647
|
getDebuggableAppsCore(deviceIdentifier) {
|
|
753
648
|
const device = this.getDeviceByIdentifier(deviceIdentifier);
|
|
754
649
|
return device.applicationManager.getDebuggableApps();
|
|
755
650
|
}
|
|
756
|
-
deployOnDevice(device, appData) {
|
|
757
|
-
|
|
758
|
-
|
|
759
|
-
|
|
760
|
-
yield device.applicationManager.tryStartApplication(appData);
|
|
761
|
-
});
|
|
651
|
+
async deployOnDevice(device, appData) {
|
|
652
|
+
await device.applicationManager.reinstallApplication(appData.appId, appData.packagePath);
|
|
653
|
+
this.$logger.info(`Successfully deployed on device with identifier '${device.deviceInfo.identifier}'.`);
|
|
654
|
+
await device.applicationManager.tryStartApplication(appData);
|
|
762
655
|
}
|
|
763
656
|
filterDevicesByPlatform() {
|
|
764
657
|
return _.filter(this.getDeviceInstances(), (device) => {
|
|
@@ -786,63 +679,52 @@ class DevicesService extends events_1.EventEmitter {
|
|
|
786
679
|
}
|
|
787
680
|
return null;
|
|
788
681
|
}
|
|
789
|
-
|
|
790
|
-
|
|
791
|
-
|
|
792
|
-
|
|
793
|
-
|
|
794
|
-
|
|
795
|
-
|
|
796
|
-
|
|
797
|
-
|
|
798
|
-
|
|
799
|
-
|
|
800
|
-
|
|
801
|
-
}
|
|
802
|
-
const result = yield emulatorServices.startEmulator({
|
|
803
|
-
emulatorIdOrName: deviceId,
|
|
804
|
-
imageIdentifier: deviceId,
|
|
805
|
-
platform: platform,
|
|
806
|
-
sdk: this._data && this._data.sdk,
|
|
807
|
-
});
|
|
808
|
-
if (result && result.errors && result.errors.length) {
|
|
809
|
-
this.$errors.fail(result.errors.join("\n"));
|
|
810
|
-
}
|
|
811
|
-
const deviceLookingOptions = this.getDeviceLookingOptions(deviceInitOpts);
|
|
812
|
-
if (this.$mobileHelper.isAndroidPlatform(platform)) {
|
|
813
|
-
yield this.$androidDeviceDiscovery.startLookingForDevices(deviceLookingOptions);
|
|
814
|
-
}
|
|
815
|
-
else if (this.$mobileHelper.isiOSPlatform(platform) &&
|
|
816
|
-
this.$hostInfo.isDarwin) {
|
|
817
|
-
yield this.$iOSSimulatorDiscovery.startLookingForDevices(deviceLookingOptions);
|
|
818
|
-
}
|
|
682
|
+
async startEmulatorCore(deviceInitOpts = {}) {
|
|
683
|
+
const { deviceId } = deviceInitOpts;
|
|
684
|
+
const platform = deviceInitOpts.platform || this._platform;
|
|
685
|
+
const emulatorServices = this.resolveEmulatorServices(platform);
|
|
686
|
+
if (!emulatorServices) {
|
|
687
|
+
this.$errors.fail("Unable to detect platform for which to start emulator.");
|
|
688
|
+
}
|
|
689
|
+
const result = await emulatorServices.startEmulator({
|
|
690
|
+
emulatorIdOrName: deviceId,
|
|
691
|
+
imageIdentifier: deviceId,
|
|
692
|
+
platform: platform,
|
|
693
|
+
sdk: this._data && this._data.sdk,
|
|
819
694
|
});
|
|
695
|
+
if (result && result.errors && result.errors.length) {
|
|
696
|
+
this.$errors.fail(result.errors.join("\n"));
|
|
697
|
+
}
|
|
698
|
+
const deviceLookingOptions = this.getDeviceLookingOptions(deviceInitOpts);
|
|
699
|
+
if (this.$mobileHelper.isAndroidPlatform(platform)) {
|
|
700
|
+
await this.$androidDeviceDiscovery.startLookingForDevices(deviceLookingOptions);
|
|
701
|
+
}
|
|
702
|
+
else if (this.$mobileHelper.isiOSPlatform(platform) &&
|
|
703
|
+
this.$hostInfo.isDarwin) {
|
|
704
|
+
await this.$iOSSimulatorDiscovery.startLookingForDevices(deviceLookingOptions);
|
|
705
|
+
}
|
|
820
706
|
}
|
|
821
|
-
executeCore(action, canExecute) {
|
|
822
|
-
|
|
823
|
-
|
|
824
|
-
|
|
825
|
-
|
|
826
|
-
return this.executeOnAllConnectedDevices(action, canExecute);
|
|
827
|
-
});
|
|
707
|
+
async executeCore(action, canExecute) {
|
|
708
|
+
if (this._device) {
|
|
709
|
+
return [await this.executeOnDevice(action, canExecute)];
|
|
710
|
+
}
|
|
711
|
+
return this.executeOnAllConnectedDevices(action, canExecute);
|
|
828
712
|
}
|
|
829
|
-
isApplicationInstalledOnDevice(deviceIdentifier, appData) {
|
|
830
|
-
|
|
831
|
-
|
|
832
|
-
|
|
833
|
-
|
|
834
|
-
|
|
835
|
-
|
|
836
|
-
|
|
837
|
-
|
|
838
|
-
|
|
839
|
-
|
|
840
|
-
|
|
841
|
-
|
|
842
|
-
|
|
843
|
-
|
|
844
|
-
};
|
|
845
|
-
});
|
|
713
|
+
async isApplicationInstalledOnDevice(deviceIdentifier, appData) {
|
|
714
|
+
let isInstalled = false;
|
|
715
|
+
const device = this.getDeviceByIdentifier(deviceIdentifier);
|
|
716
|
+
try {
|
|
717
|
+
isInstalled = await device.applicationManager.isApplicationInstalled(appData.appId);
|
|
718
|
+
await device.applicationManager.tryStartApplication(appData);
|
|
719
|
+
}
|
|
720
|
+
catch (err) {
|
|
721
|
+
this.$logger.trace("Error while checking is application installed. Error is: ", err);
|
|
722
|
+
}
|
|
723
|
+
return {
|
|
724
|
+
appIdentifier: appData.appId,
|
|
725
|
+
deviceIdentifier,
|
|
726
|
+
isInstalled,
|
|
727
|
+
};
|
|
846
728
|
}
|
|
847
729
|
getDeviceLookingOptions(deviceInitOpts = {}) {
|
|
848
730
|
const { shouldReturnImmediateResult, emulator } = deviceInitOpts;
|
|
@@ -865,6 +747,7 @@ class DevicesService extends events_1.EventEmitter {
|
|
|
865
747
|
`To list available ${emulatorName.toLowerCase()} images, run '${this.$staticConfig.CLIENT_NAME.toLowerCase()} device <Platform> --available-devices'.`);
|
|
866
748
|
}
|
|
867
749
|
}
|
|
750
|
+
exports.DevicesService = DevicesService;
|
|
868
751
|
DevicesService.DEVICE_LOOKING_INTERVAL = 200;
|
|
869
752
|
DevicesService.EMULATOR_IMAGES_DETECTION_INTERVAL = 60 * 1000;
|
|
870
753
|
__decorate([
|
|
@@ -918,6 +801,4 @@ __decorate([
|
|
|
918
801
|
__decorate([
|
|
919
802
|
(0, decorators_1.exported)("devicesService")
|
|
920
803
|
], DevicesService.prototype, "getDebuggableViews", null);
|
|
921
|
-
exports.DevicesService = DevicesService;
|
|
922
804
|
yok_1.injector.register("devicesService", DevicesService);
|
|
923
|
-
//# sourceMappingURL=devices-service.js.map
|