nativescript 8.9.0-dev.1 → 8.9.0-dev.2
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/.d.ts +1 -0
- package/lib/android-tools-info.js +32 -9
- package/lib/base-package-manager.js +71 -47
- package/lib/bootstrap.js +6 -1
- package/lib/bun-package-manager.js +104 -65
- package/lib/color.js +5 -2
- package/lib/commands/add-platform.js +31 -14
- package/lib/commands/apple-login.js +30 -18
- package/lib/commands/appstore-list.js +46 -34
- package/lib/commands/appstore-upload.js +68 -52
- package/lib/commands/build.js +90 -57
- package/lib/commands/clean.js +197 -161
- package/lib/commands/command-base.js +28 -14
- package/lib/commands/config.js +71 -48
- package/lib/commands/create-project.js +235 -210
- package/lib/commands/debug.js +93 -66
- package/lib/commands/deploy.js +47 -30
- package/lib/commands/embedding/embed.js +59 -33
- package/lib/commands/extensibility/install-extension.js +17 -5
- package/lib/commands/extensibility/list-extensions.js +25 -13
- package/lib/commands/extensibility/uninstall-extension.js +16 -4
- package/lib/commands/fonts.js +42 -30
- package/lib/commands/generate-assets.js +29 -13
- package/lib/commands/generate-help.js +14 -2
- package/lib/commands/generate.js +70 -12
- package/lib/commands/info.js +14 -2
- package/lib/commands/install.js +50 -34
- package/lib/commands/list-platforms.js +26 -14
- package/lib/commands/migrate.js +27 -15
- package/lib/commands/native-add.js +51 -23
- package/lib/commands/platform-clean.js +33 -19
- package/lib/commands/plugin/add-plugin.js +26 -12
- package/lib/commands/plugin/build-plugin.js +45 -31
- package/lib/commands/plugin/create-plugin.js +138 -110
- package/lib/commands/plugin/list-plugins.js +34 -22
- package/lib/commands/plugin/remove-plugin.js +35 -20
- package/lib/commands/plugin/update-plugin.js +34 -20
- package/lib/commands/post-install.js +39 -20
- package/lib/commands/prepare.js +39 -22
- package/lib/commands/preview.js +64 -49
- package/lib/commands/remove-platform.js +19 -7
- package/lib/commands/resources/resources-update.js +28 -13
- package/lib/commands/run.js +77 -55
- package/lib/commands/setup.js +1 -0
- package/lib/commands/start.js +20 -6
- package/lib/commands/test-init.js +138 -123
- package/lib/commands/test.js +97 -67
- package/lib/commands/typings.js +143 -126
- package/lib/commands/update-platform.js +40 -22
- package/lib/commands/update.js +45 -30
- package/lib/commands/widget.js +767 -0
- package/lib/common/bootstrap.js +1 -0
- package/lib/common/child-process.js +75 -53
- package/lib/common/codeGeneration/code-entity.js +2 -1
- package/lib/common/codeGeneration/code-printer.js +2 -1
- package/lib/common/command-params.js +19 -7
- package/lib/common/commands/analytics.js +43 -27
- package/lib/common/commands/autocompletion.js +59 -39
- package/lib/common/commands/device/device-log-stream.js +24 -12
- package/lib/common/commands/device/get-file.js +35 -22
- package/lib/common/commands/device/list-applications.js +24 -12
- package/lib/common/commands/device/list-devices.js +90 -72
- package/lib/common/commands/device/list-files.js +36 -23
- package/lib/common/commands/device/put-file.js +35 -22
- package/lib/common/commands/device/run-application.js +26 -12
- package/lib/common/commands/device/stop-application.js +23 -11
- package/lib/common/commands/device/uninstall-application.js +18 -6
- package/lib/common/commands/doctor.js +3 -2
- package/lib/common/commands/generate-messages.js +29 -17
- package/lib/common/commands/help.js +34 -20
- package/lib/common/commands/package-manager-get.js +18 -6
- package/lib/common/commands/package-manager-set.js +21 -9
- package/lib/common/commands/post-install.js +14 -2
- package/lib/common/commands/preuninstall.js +48 -24
- package/lib/common/commands/proxy/proxy-base.js +23 -8
- package/lib/common/commands/proxy/proxy-clear.js +16 -4
- package/lib/common/commands/proxy/proxy-get.js +15 -3
- package/lib/common/commands/proxy/proxy-set.js +101 -87
- package/lib/common/common-lib.js +1 -0
- package/lib/common/constants.js +22 -11
- package/lib/common/decorators.js +70 -10
- package/lib/common/dispatchers.js +106 -80
- package/lib/common/errors.js +116 -91
- package/lib/common/file-system.js +141 -108
- package/lib/common/header.js +5 -1
- package/lib/common/helpers.js +267 -152
- package/lib/common/host-info.js +54 -37
- package/lib/common/http-client.js +128 -93
- package/lib/common/logger/appenders/cli-appender.js +6 -1
- package/lib/common/logger/appenders/emit-appender.js +6 -1
- package/lib/common/logger/layouts/cli-layout.js +3 -1
- package/lib/common/logger/logger.js +9 -4
- package/lib/common/messages/messages.js +6 -0
- package/lib/common/mobile/android/android-application-manager.js +162 -122
- package/lib/common/mobile/android/android-debug-bridge-result-handler.js +2 -1
- package/lib/common/mobile/android/android-debug-bridge.js +118 -87
- package/lib/common/mobile/android/android-device-file-system.js +135 -98
- package/lib/common/mobile/android/android-device-hash-service.js +78 -50
- package/lib/common/mobile/android/android-device.js +93 -68
- package/lib/common/mobile/android/android-emulator-services.js +131 -105
- package/lib/common/mobile/android/android-ini-file-parser.js +9 -0
- package/lib/common/mobile/android/android-log-filter.js +5 -1
- package/lib/common/mobile/android/android-virtual-device-service.js +123 -76
- package/lib/common/mobile/android/device-android-debug-bridge.js +30 -13
- package/lib/common/mobile/android/genymotion/genymotion-service.js +123 -91
- package/lib/common/mobile/android/genymotion/virtualbox-service.js +92 -64
- package/lib/common/mobile/android/logcat-helper.js +140 -108
- package/lib/common/mobile/application-manager-base.js +113 -84
- package/lib/common/mobile/device-emitter.js +4 -0
- package/lib/common/mobile/device-log-emitter.js +1 -0
- package/lib/common/mobile/device-log-provider-base.js +19 -7
- package/lib/common/mobile/device-log-provider.js +23 -0
- package/lib/common/mobile/device-platforms-constants.js +1 -0
- package/lib/common/mobile/emulator-helper.js +3 -0
- package/lib/common/mobile/ios/device/ios-application-manager.js +111 -79
- package/lib/common/mobile/ios/device/ios-device-file-system.js +106 -78
- package/lib/common/mobile/ios/device/ios-device-operations.js +146 -105
- package/lib/common/mobile/ios/device/ios-device.js +40 -20
- package/lib/common/mobile/ios/ios-device-base.js +82 -58
- package/lib/common/mobile/ios/ios-device-product-name-mapper.js +2 -0
- package/lib/common/mobile/ios/ios-log-filter.js +1 -0
- package/lib/common/mobile/ios/simulator/ios-emulator-services.js +96 -63
- package/lib/common/mobile/ios/simulator/ios-sim-resolver.js +2 -1
- package/lib/common/mobile/ios/simulator/ios-simulator-application-manager.js +95 -60
- package/lib/common/mobile/ios/simulator/ios-simulator-device.js +48 -27
- package/lib/common/mobile/ios/simulator/ios-simulator-file-system.js +63 -37
- package/lib/common/mobile/ios/simulator/ios-simulator-log-provider.js +36 -24
- package/lib/common/mobile/local-to-device-path-data-factory.js +1 -0
- package/lib/common/mobile/log-filter.js +2 -0
- package/lib/common/mobile/logging-levels.js +1 -0
- package/lib/common/mobile/mobile-core/android-device-discovery.js +64 -43
- package/lib/common/mobile/mobile-core/android-emulator-discovery.js +35 -21
- package/lib/common/mobile/mobile-core/android-process-service.js +214 -143
- package/lib/common/mobile/mobile-core/device-discovery.js +14 -2
- package/lib/common/mobile/mobile-core/devices-service.js +505 -386
- package/lib/common/mobile/mobile-core/ios-device-discovery.js +37 -24
- package/lib/common/mobile/mobile-core/ios-simulator-discovery.js +65 -47
- package/lib/common/mobile/mobile-helper.js +27 -15
- package/lib/common/mobile/wp8/wp8-emulator-services.js +53 -25
- package/lib/common/opener.js +3 -2
- package/lib/common/os-info.js +1 -0
- package/lib/common/plist-parser.js +1 -0
- package/lib/common/project-helper.js +1 -0
- package/lib/common/prompter.js +114 -91
- package/lib/common/queue.js +21 -9
- package/lib/common/resource-loader.js +1 -0
- package/lib/common/services/auto-completion-service.js +65 -40
- package/lib/common/services/cancellation.js +29 -17
- package/lib/common/services/commands-service.js +180 -146
- package/lib/common/services/help-service.js +166 -133
- package/lib/common/services/hooks-service.js +121 -93
- package/lib/common/services/ios-notification-service.js +35 -21
- package/lib/common/services/json-file-settings-service.js +77 -52
- package/lib/common/services/lock-service.js +58 -35
- package/lib/common/services/message-contract-generator.js +47 -35
- package/lib/common/services/messages-service.js +1 -0
- package/lib/common/services/micro-templating-service.js +21 -4
- package/lib/common/services/net-service.js +110 -90
- package/lib/common/services/project-files-manager.js +28 -10
- package/lib/common/services/project-files-provider-base.js +1 -0
- package/lib/common/services/proxy-service.js +25 -13
- package/lib/common/services/qr.js +25 -13
- package/lib/common/services/settings-service.js +2 -1
- package/lib/common/services/xcode-select-service.js +36 -20
- package/lib/common/utils.js +3 -2
- package/lib/common/validators/project-name-validator.js +2 -1
- package/lib/common/validators/validation-result.js +2 -1
- package/lib/common/verify-node-version.js +11 -3
- package/lib/common/yok.js +69 -35
- package/lib/config.js +72 -36
- package/lib/constants-provider.js +1 -0
- package/lib/constants.js +78 -25
- package/lib/controllers/build-controller.js +100 -82
- package/lib/controllers/debug-controller.js +133 -107
- package/lib/controllers/deploy-controller.js +24 -15
- package/lib/controllers/migrate-controller.js +884 -723
- package/lib/controllers/platform-controller.js +94 -71
- package/lib/controllers/prepare-controller.js +274 -232
- package/lib/controllers/run-controller.js +427 -397
- package/lib/controllers/update-controller-base.js +30 -16
- package/lib/controllers/update-controller.js +130 -94
- package/lib/data/build-data.js +1 -0
- package/lib/data/controller-data-base.js +1 -0
- package/lib/data/debug-data.js +1 -0
- package/lib/data/platform-data.js +1 -0
- package/lib/data/prepare-data.js +2 -4
- package/lib/data/run-data.js +1 -0
- package/lib/definitions/project.d.ts +26 -0
- package/lib/detached-processes/cleanup-js-subprocess.js +20 -5
- package/lib/detached-processes/cleanup-process.js +43 -30
- package/lib/detached-processes/file-log-service.js +2 -1
- package/lib/device-path-provider.js +35 -23
- package/lib/device-sockets/ios/app-debug-socket-proxy-factory.js +171 -149
- package/lib/device-sockets/ios/notification.js +4 -1
- package/lib/device-sockets/ios/socket-request-executor.js +42 -24
- package/lib/helpers/android-bundle-validator-helper.js +3 -2
- package/lib/helpers/deploy-command-helper.js +50 -44
- package/lib/helpers/key-command-helper.js +17 -6
- package/lib/helpers/livesync-command-helper.js +155 -137
- package/lib/helpers/network-connectivity-validator.js +18 -6
- package/lib/helpers/options-track-helper.js +19 -7
- package/lib/helpers/package-path-helper.js +1 -0
- package/lib/helpers/platform-command-helper.js +127 -101
- package/lib/helpers/version-validator-helper.js +1 -0
- package/lib/key-commands/bootstrap.js +3 -2
- package/lib/key-commands/index.js +205 -154
- package/lib/nativescript-cli-lib-bootstrap.js +4 -0
- package/lib/nativescript-cli-lib.js +1 -0
- package/lib/nativescript-cli.js +24 -6
- package/lib/node/pbxproj-dom-xcode.js +1 -0
- package/lib/node/xcode.js +1 -0
- package/lib/node-package-manager.js +114 -81
- package/lib/options.js +156 -122
- package/lib/package-installation-manager.js +172 -130
- package/lib/package-manager.js +88 -63
- package/lib/platform-command-param.js +16 -4
- package/lib/pnpm-package-manager.js +81 -59
- package/lib/project-data.js +13 -1
- package/lib/providers/project-files-provider.js +2 -1
- package/lib/resolvers/livesync-service-resolver.js +1 -0
- package/lib/services/analytics/analytics-broker-process.js +32 -19
- package/lib/services/analytics/analytics-broker.js +31 -17
- package/lib/services/analytics/analytics-service.js +210 -170
- package/lib/services/analytics/google-analytics-provider.js +59 -43
- package/lib/services/analytics-settings-service.js +37 -15
- package/lib/services/android/android-bundle-tool-service.js +61 -43
- package/lib/services/android/gradle-build-args-service.js +23 -9
- package/lib/services/android/gradle-build-service.js +36 -22
- package/lib/services/android/gradle-command-service.js +36 -22
- package/lib/services/android-device-debug-service.js +123 -90
- package/lib/services/android-plugin-build-service.js +260 -205
- package/lib/services/android-project-service.js +241 -129
- package/lib/services/android-resources-migration-service.js +71 -51
- package/lib/services/apple-portal/apple-portal-application-service.js +64 -46
- package/lib/services/apple-portal/apple-portal-cookie-service.js +1 -0
- package/lib/services/apple-portal/apple-portal-session-service.js +218 -197
- package/lib/services/apple-portal/srp/srp-wrapper.js +61 -43
- package/lib/services/assets-generation/assets-generation-service.js +128 -103
- package/lib/services/build-artifacts-service.js +22 -10
- package/lib/services/build-data-service.js +1 -0
- package/lib/services/build-info-file-service.js +36 -20
- package/lib/services/cleanup-service.js +81 -48
- package/lib/services/cocoapods-platform-manager.js +9 -0
- package/lib/services/cocoapods-service.js +153 -112
- package/lib/services/debug-data-service.js +1 -0
- package/lib/services/debug-service-base.js +7 -0
- package/lib/services/device/device-install-app-service.js +72 -54
- package/lib/services/doctor-service.js +135 -101
- package/lib/services/extensibility-service.js +108 -81
- package/lib/services/files-hash-service.js +44 -26
- package/lib/services/hmr-status-service.js +3 -1
- package/lib/services/info-service.js +1 -0
- package/lib/services/initialize-service.js +54 -37
- package/lib/services/ios/export-options-plist-service.js +55 -38
- package/lib/services/ios/ios-signing-service.js +191 -168
- package/lib/services/ios/spm-service.js +70 -46
- package/lib/services/ios/xcodebuild-args-service.js +103 -77
- package/lib/services/ios/xcodebuild-command-service.js +26 -14
- package/lib/services/ios/xcodebuild-service.js +72 -52
- package/lib/services/ios-debugger-port-service.js +38 -24
- package/lib/services/ios-device-debug-service.js +103 -75
- package/lib/services/ios-entitlements-service.js +43 -31
- package/lib/services/ios-extensions-service.js +30 -18
- package/lib/services/ios-log-filter.js +20 -0
- package/lib/services/ios-native-target-service.js +6 -4
- package/lib/services/ios-project-service.js +605 -437
- package/lib/services/ios-provision-service.js +132 -108
- package/lib/services/ios-watch-app-service.js +33 -21
- package/lib/services/ip-service.js +55 -38
- package/lib/services/itmstransporter-service.js +153 -129
- package/lib/services/karma-execution.js +2 -0
- package/lib/services/livesync/android-device-livesync-service-base.js +49 -31
- package/lib/services/livesync/android-device-livesync-service.js +151 -120
- package/lib/services/livesync/android-device-livesync-sockets-service.js +155 -121
- package/lib/services/livesync/android-livesync-service.js +36 -14
- package/lib/services/livesync/android-livesync-tool.js +117 -90
- package/lib/services/livesync/device-livesync-service-base.js +30 -15
- package/lib/services/livesync/ios-device-livesync-service.js +150 -114
- package/lib/services/livesync/ios-livesync-service.js +60 -42
- package/lib/services/livesync/livesync-socket.js +1 -0
- package/lib/services/livesync/platform-livesync-service-base.js +124 -94
- package/lib/services/livesync-process-data-service.js +1 -0
- package/lib/services/log-parser-service.js +2 -1
- package/lib/services/log-source-map-service.js +56 -30
- package/lib/services/marking-mode-service.js +33 -17
- package/lib/services/metadata-filtering-service.js +1 -0
- package/lib/services/npm-config-service.js +5 -1
- package/lib/services/pacote-service.js +71 -49
- package/lib/services/performance-service.js +4 -2
- package/lib/services/platform/add-platform-service.js +119 -51
- package/lib/services/platform/platform-validation-service.js +34 -22
- package/lib/services/platform/prepare-native-platform-service.js +65 -49
- package/lib/services/platform-environment-requirements.js +43 -27
- package/lib/services/platform-project-service-base.js +1 -0
- package/lib/services/platforms-data-service.js +1 -0
- package/lib/services/plugins-service.js +168 -125
- package/lib/services/prepare-data-service.js +1 -0
- package/lib/services/project-backup-service.js +5 -1
- package/lib/services/project-changes-service.js +152 -124
- package/lib/services/project-cleanup-service.js +79 -64
- package/lib/services/project-config-service.js +111 -73
- package/lib/services/project-data-service.js +154 -108
- package/lib/services/project-name-service.js +44 -28
- package/lib/services/project-service.js +113 -84
- package/lib/services/project-templates-service.js +68 -52
- package/lib/services/qr-code-terminal-service.js +1 -0
- package/lib/services/require-service.js +1 -0
- package/lib/services/start-service.js +60 -41
- package/lib/services/temp-service.js +22 -8
- package/lib/services/terminal-spinner-service.js +28 -15
- package/lib/services/test-execution-service.js +79 -59
- package/lib/services/test-initialization-service.js +6 -2
- package/lib/services/timeline-profiler-service.js +2 -1
- package/lib/services/user-settings-service.js +1 -0
- package/lib/services/versions-service.js +140 -119
- package/lib/services/watch-ignore-list-service.js +1 -0
- package/lib/services/webpack/webpack-compiler-service.js +279 -215
- package/lib/services/xcconfig-service.js +21 -8
- package/lib/services/xcproj-service.js +1 -0
- package/lib/shared-event-bus.js +6 -0
- package/lib/sys-info.js +63 -45
- package/lib/tools/config-manipulation/config-transformer.js +21 -0
- package/lib/tools/node-modules/node-modules-builder.js +28 -16
- package/lib/tools/node-modules/node-modules-dependencies-builder.js +6 -0
- package/lib/yarn-package-manager.js +79 -59
- package/lib/yarn2-package-manager.js +82 -60
- package/node_modules/@npmcli/move-file/LICENSE.md +22 -0
- package/node_modules/@npmcli/move-file/README.md +69 -0
- package/node_modules/@npmcli/move-file/lib/index.js +185 -0
- package/node_modules/@npmcli/move-file/node_modules/mkdirp/LICENSE +21 -0
- package/node_modules/@npmcli/move-file/node_modules/mkdirp/bin/cmd.js +68 -0
- package/node_modules/@npmcli/move-file/node_modules/mkdirp/index.js +31 -0
- package/node_modules/@npmcli/move-file/node_modules/mkdirp/lib/find-made.js +29 -0
- package/node_modules/@npmcli/move-file/node_modules/mkdirp/lib/mkdirp-manual.js +64 -0
- package/node_modules/@npmcli/move-file/node_modules/mkdirp/lib/mkdirp-native.js +39 -0
- package/node_modules/@npmcli/move-file/node_modules/mkdirp/lib/opts-arg.js +23 -0
- package/node_modules/@npmcli/move-file/node_modules/mkdirp/lib/path-arg.js +29 -0
- package/node_modules/@npmcli/move-file/node_modules/mkdirp/lib/use-native.js +10 -0
- package/node_modules/@npmcli/move-file/node_modules/mkdirp/package.json +44 -0
- package/node_modules/@npmcli/move-file/node_modules/mkdirp/readme.markdown +266 -0
- package/node_modules/@npmcli/move-file/package.json +47 -0
- package/node_modules/balanced-match/.github/FUNDING.yml +2 -0
- package/node_modules/balanced-match/LICENSE.md +21 -0
- package/node_modules/balanced-match/README.md +97 -0
- package/node_modules/balanced-match/index.js +62 -0
- package/node_modules/balanced-match/package.json +48 -0
- package/node_modules/concat-map/.travis.yml +4 -0
- package/node_modules/concat-map/LICENSE +18 -0
- package/node_modules/concat-map/README.markdown +62 -0
- package/node_modules/concat-map/example/map.js +6 -0
- package/node_modules/concat-map/index.js +13 -0
- package/node_modules/concat-map/package.json +43 -0
- package/node_modules/concat-map/test/map.js +39 -0
- package/node_modules/fs.realpath/LICENSE +43 -0
- package/node_modules/fs.realpath/README.md +33 -0
- package/node_modules/fs.realpath/index.js +66 -0
- package/node_modules/fs.realpath/old.js +303 -0
- package/node_modules/fs.realpath/package.json +26 -0
- package/node_modules/inflight/LICENSE +15 -0
- package/node_modules/inflight/README.md +37 -0
- package/node_modules/inflight/inflight.js +54 -0
- package/node_modules/inflight/package.json +29 -0
- package/node_modules/inherits/LICENSE +16 -0
- package/node_modules/inherits/README.md +42 -0
- package/node_modules/inherits/inherits.js +9 -0
- package/node_modules/inherits/inherits_browser.js +27 -0
- package/node_modules/inherits/package.json +29 -0
- package/node_modules/once/LICENSE +15 -0
- package/node_modules/once/README.md +79 -0
- package/node_modules/once/once.js +42 -0
- package/node_modules/once/package.json +33 -0
- package/node_modules/path-is-absolute/index.js +20 -0
- package/node_modules/path-is-absolute/license +21 -0
- package/node_modules/path-is-absolute/package.json +43 -0
- package/node_modules/path-is-absolute/readme.md +59 -0
- package/node_modules/rimraf/LICENSE +15 -0
- package/node_modules/rimraf/README.md +101 -0
- package/node_modules/rimraf/bin.js +68 -0
- package/node_modules/rimraf/node_modules/brace-expansion/LICENSE +21 -0
- package/node_modules/rimraf/node_modules/brace-expansion/README.md +129 -0
- package/node_modules/rimraf/node_modules/brace-expansion/index.js +201 -0
- package/node_modules/rimraf/node_modules/brace-expansion/package.json +47 -0
- package/node_modules/rimraf/node_modules/glob/LICENSE +21 -0
- package/node_modules/rimraf/node_modules/glob/README.md +378 -0
- package/node_modules/rimraf/node_modules/glob/common.js +238 -0
- package/node_modules/rimraf/node_modules/glob/glob.js +790 -0
- package/node_modules/rimraf/node_modules/glob/package.json +55 -0
- package/node_modules/rimraf/node_modules/glob/sync.js +486 -0
- package/node_modules/rimraf/node_modules/minimatch/LICENSE +15 -0
- package/node_modules/rimraf/node_modules/minimatch/README.md +230 -0
- package/node_modules/rimraf/node_modules/minimatch/minimatch.js +947 -0
- package/node_modules/rimraf/node_modules/minimatch/package.json +33 -0
- package/node_modules/rimraf/package.json +32 -0
- package/node_modules/rimraf/rimraf.js +360 -0
- package/node_modules/stringify-package/LICENSE +13 -0
- package/node_modules/stringify-package/README.md +55 -0
- package/node_modules/stringify-package/index.js +18 -0
- package/node_modules/stringify-package/package.json +38 -0
- package/node_modules/wrappy/LICENSE +15 -0
- package/node_modules/wrappy/README.md +36 -0
- package/node_modules/wrappy/package.json +29 -0
- package/node_modules/wrappy/wrappy.js +33 -0
- package/package.json +79 -64
|
@@ -1,5 +1,16 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
2
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
// NOTE: This file is used to clean up resources used by CLI, when the CLI is killed.
|
|
13
|
+
// The instances here are not shared with the ones in main CLI process.
|
|
3
14
|
const fs = require("fs");
|
|
4
15
|
const path = require("path");
|
|
5
16
|
const shelljs = require("shelljs");
|
|
@@ -11,6 +22,7 @@ if (!pathToBootstrap || !fs.existsSync(pathToBootstrap)) {
|
|
|
11
22
|
throw new Error("Invalid path to bootstrap.");
|
|
12
23
|
}
|
|
13
24
|
const logFile = process.argv[3];
|
|
25
|
+
// After requiring the bootstrap we can use $injector
|
|
14
26
|
require(pathToBootstrap);
|
|
15
27
|
const fileLogService = yok_1.injector.resolve(file_log_service_1.FileLogService, {
|
|
16
28
|
logFile,
|
|
@@ -20,13 +32,13 @@ const commandsInfos = [];
|
|
|
20
32
|
const filesToDelete = [];
|
|
21
33
|
const jsCommands = [];
|
|
22
34
|
const requests = [];
|
|
23
|
-
const executeRequest =
|
|
35
|
+
const executeRequest = (request) => __awaiter(void 0, void 0, void 0, function* () {
|
|
24
36
|
const $httpClient = yok_1.injector.resolve("httpClient");
|
|
25
37
|
try {
|
|
26
38
|
fileLogService.logData({
|
|
27
39
|
message: `Start executing request: ${request.method} ${request.url}`,
|
|
28
40
|
});
|
|
29
|
-
const response =
|
|
41
|
+
const response = yield $httpClient.httpRequest({
|
|
30
42
|
url: request.url,
|
|
31
43
|
method: request.method,
|
|
32
44
|
headers: request.headers,
|
|
@@ -42,14 +54,14 @@ const executeRequest = async (request) => {
|
|
|
42
54
|
message: `Unable to execute request: ${request.method} ${request.url}`,
|
|
43
55
|
});
|
|
44
56
|
}
|
|
45
|
-
};
|
|
46
|
-
const executeJSCleanup =
|
|
57
|
+
});
|
|
58
|
+
const executeJSCleanup = (jsCommand) => __awaiter(void 0, void 0, void 0, function* () {
|
|
47
59
|
const $childProcess = yok_1.injector.resolve("childProcess");
|
|
48
60
|
try {
|
|
49
61
|
fileLogService.logData({
|
|
50
62
|
message: `Start executing action for file: ${jsCommand.filePath} and data ${JSON.stringify(jsCommand.data)}`,
|
|
51
63
|
});
|
|
52
|
-
|
|
64
|
+
yield $childProcess.trySpawnFromCloseEvent(process.execPath, [
|
|
53
65
|
path.join(__dirname, "cleanup-js-subprocess.js"),
|
|
54
66
|
pathToBootstrap,
|
|
55
67
|
logFile,
|
|
@@ -63,24 +75,24 @@ const executeJSCleanup = async (jsCommand) => {
|
|
|
63
75
|
catch (err) {
|
|
64
76
|
fileLogService.logData({
|
|
65
77
|
message: `Unable to execute action for file ${jsCommand.filePath} with data ${JSON.stringify(jsCommand.data)}. Error is: ${err}.`,
|
|
66
|
-
type: "Error"
|
|
78
|
+
type: "Error" /* FileLogMessageType.Error */,
|
|
67
79
|
});
|
|
68
80
|
}
|
|
69
|
-
};
|
|
70
|
-
const executeCleanup =
|
|
81
|
+
});
|
|
82
|
+
const executeCleanup = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
71
83
|
const $childProcess = yok_1.injector.resolve("childProcess");
|
|
72
84
|
for (const request of requests) {
|
|
73
|
-
|
|
85
|
+
yield executeRequest(request);
|
|
74
86
|
}
|
|
75
87
|
for (const jsCommand of jsCommands) {
|
|
76
|
-
|
|
88
|
+
yield executeJSCleanup(jsCommand);
|
|
77
89
|
}
|
|
78
90
|
for (const commandInfo of commandsInfos) {
|
|
79
91
|
try {
|
|
80
92
|
fileLogService.logData({
|
|
81
93
|
message: `Start executing command: ${JSON.stringify(commandInfo)}`,
|
|
82
94
|
});
|
|
83
|
-
|
|
95
|
+
yield $childProcess.trySpawnFromCloseEvent(commandInfo.command, commandInfo.args, commandInfo.options || {}, { throwError: true, timeout: commandInfo.timeout || 3000 });
|
|
84
96
|
fileLogService.logData({
|
|
85
97
|
message: `Successfully executed command: ${JSON.stringify(commandInfo)}`,
|
|
86
98
|
});
|
|
@@ -88,7 +100,7 @@ const executeCleanup = async () => {
|
|
|
88
100
|
catch (err) {
|
|
89
101
|
fileLogService.logData({
|
|
90
102
|
message: `Unable to execute command: ${JSON.stringify(commandInfo)}. Error is: ${err}.`,
|
|
91
|
-
type: "Error"
|
|
103
|
+
type: "Error" /* FileLogMessageType.Error */,
|
|
92
104
|
});
|
|
93
105
|
}
|
|
94
106
|
}
|
|
@@ -102,13 +114,13 @@ const executeCleanup = async () => {
|
|
|
102
114
|
catch (err) {
|
|
103
115
|
fileLogService.logData({
|
|
104
116
|
message: `Unable to delete files: ${JSON.stringify(filesToDelete)}. Error is: ${err}.`,
|
|
105
|
-
type: "Error"
|
|
117
|
+
type: "Error" /* FileLogMessageType.Error */,
|
|
106
118
|
});
|
|
107
119
|
}
|
|
108
120
|
}
|
|
109
121
|
fileLogService.logData({ message: `cleanup-process finished` });
|
|
110
122
|
process.exit();
|
|
111
|
-
};
|
|
123
|
+
});
|
|
112
124
|
const addCleanupAction = (commandInfo) => {
|
|
113
125
|
if (_.some(commandsInfos, (currentCommandInfo) => _.isEqual(currentCommandInfo, commandInfo))) {
|
|
114
126
|
fileLogService.logData({
|
|
@@ -219,54 +231,55 @@ const removeJSFile = (jsCommand) => {
|
|
|
219
231
|
});
|
|
220
232
|
}
|
|
221
233
|
};
|
|
222
|
-
process.on("message",
|
|
234
|
+
process.on("message", (cleanupProcessMessage) => __awaiter(void 0, void 0, void 0, function* () {
|
|
223
235
|
fileLogService.logData({
|
|
224
236
|
message: `cleanup-process received message of type: ${JSON.stringify(cleanupProcessMessage)}`,
|
|
225
237
|
});
|
|
226
238
|
switch (cleanupProcessMessage.messageType) {
|
|
227
|
-
case "AddCleanCommand"
|
|
239
|
+
case "AddCleanCommand" /* CleanupProcessMessage.AddCleanCommand */:
|
|
228
240
|
addCleanupAction(cleanupProcessMessage.commandInfo);
|
|
229
241
|
break;
|
|
230
|
-
case "RemoveCleanCommand"
|
|
242
|
+
case "RemoveCleanCommand" /* CleanupProcessMessage.RemoveCleanCommand */:
|
|
231
243
|
removeCleanupAction(cleanupProcessMessage.commandInfo);
|
|
232
244
|
break;
|
|
233
|
-
case "AddRequest"
|
|
245
|
+
case "AddRequest" /* CleanupProcessMessage.AddRequest */:
|
|
234
246
|
addRequest(cleanupProcessMessage.requestInfo);
|
|
235
247
|
break;
|
|
236
|
-
case "RemoveRequest"
|
|
248
|
+
case "RemoveRequest" /* CleanupProcessMessage.RemoveRequest */:
|
|
237
249
|
removeRequest(cleanupProcessMessage.requestInfo);
|
|
238
250
|
break;
|
|
239
|
-
case "AddDeleteFileAction"
|
|
251
|
+
case "AddDeleteFileAction" /* CleanupProcessMessage.AddDeleteFileAction */:
|
|
240
252
|
addDeleteAction(cleanupProcessMessage.filePath);
|
|
241
253
|
break;
|
|
242
|
-
case "RemoveDeleteFileAction"
|
|
254
|
+
case "RemoveDeleteFileAction" /* CleanupProcessMessage.RemoveDeleteFileAction */:
|
|
243
255
|
removeDeleteAction(cleanupProcessMessage.filePath);
|
|
244
256
|
break;
|
|
245
|
-
case "AddJSFileToRequire"
|
|
257
|
+
case "AddJSFileToRequire" /* CleanupProcessMessage.AddJSFileToRequire */:
|
|
246
258
|
const jsCleanupMessage = cleanupProcessMessage;
|
|
247
259
|
addJSFile(jsCleanupMessage.jsCommand);
|
|
248
260
|
break;
|
|
249
|
-
case "RemoveJSFileToRequire"
|
|
261
|
+
case "RemoveJSFileToRequire" /* CleanupProcessMessage.RemoveJSFileToRequire */:
|
|
250
262
|
const msgToRemove = cleanupProcessMessage;
|
|
251
263
|
removeJSFile(msgToRemove.jsCommand);
|
|
252
264
|
break;
|
|
253
265
|
default:
|
|
254
266
|
fileLogService.logData({
|
|
255
267
|
message: `Unable to handle message of type ${cleanupProcessMessage.messageType}. Full message is ${JSON.stringify(cleanupProcessMessage)}`,
|
|
256
|
-
type: "Error"
|
|
268
|
+
type: "Error" /* FileLogMessageType.Error */,
|
|
257
269
|
});
|
|
258
270
|
break;
|
|
259
271
|
}
|
|
260
|
-
});
|
|
261
|
-
process.on("disconnect",
|
|
272
|
+
}));
|
|
273
|
+
process.on("disconnect", () => __awaiter(void 0, void 0, void 0, function* () {
|
|
262
274
|
fileLogService.logData({
|
|
263
275
|
message: "cleanup-process received process.disconnect event",
|
|
264
276
|
});
|
|
265
|
-
|
|
277
|
+
yield executeCleanup();
|
|
266
278
|
yok_1.injector.dispose();
|
|
267
279
|
process.exit();
|
|
268
|
-
});
|
|
280
|
+
}));
|
|
269
281
|
fileLogService.logData({
|
|
270
|
-
message: `cleanup-process will send ${"ProcessReadyToReceive"} message`,
|
|
282
|
+
message: `cleanup-process will send ${"ProcessReadyToReceive" /* DetachedProcessMessages.ProcessReadyToReceive */} message`,
|
|
271
283
|
});
|
|
272
|
-
process.send("ProcessReadyToReceive");
|
|
284
|
+
process.send("ProcessReadyToReceive" /* DetachedProcessMessages.ProcessReadyToReceive */);
|
|
285
|
+
//# sourceMappingURL=cleanup-process.js.map
|
|
@@ -11,10 +11,11 @@ class FileLogService {
|
|
|
11
11
|
logData(fileLoggingMessage) {
|
|
12
12
|
if (this.logFile && fileLoggingMessage && fileLoggingMessage.message) {
|
|
13
13
|
fileLoggingMessage.type =
|
|
14
|
-
fileLoggingMessage.type || "Info"
|
|
14
|
+
fileLoggingMessage.type || "Info" /* FileLogMessageType.Info */;
|
|
15
15
|
const formattedDate = (0, helpers_1.getFixedLengthDateString)();
|
|
16
16
|
this.$fs.appendFile(this.logFile, `[${formattedDate}] [${fileLoggingMessage.type}] ${fileLoggingMessage.message}${os_1.EOL}`);
|
|
17
17
|
}
|
|
18
18
|
}
|
|
19
19
|
}
|
|
20
20
|
exports.FileLogService = FileLogService;
|
|
21
|
+
//# sourceMappingURL=file-log-service.js.map
|
|
@@ -1,4 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
2
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
12
|
exports.DevicePathProvider = void 0;
|
|
4
13
|
const helpers_1 = require("./common/helpers");
|
|
@@ -12,31 +21,33 @@ class DevicePathProvider {
|
|
|
12
21
|
this.$iOSSimResolver = $iOSSimResolver;
|
|
13
22
|
this.$errors = $errors;
|
|
14
23
|
}
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
24
|
+
getDeviceProjectRootPath(device, options) {
|
|
25
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
26
|
+
let projectRoot = "";
|
|
27
|
+
if (this.$mobileHelper.isApplePlatform(device.deviceInfo.platform)) {
|
|
28
|
+
projectRoot = device.isEmulator
|
|
29
|
+
? yield this.$iOSSimResolver.iOSSim.getApplicationPath(device.deviceInfo.identifier, options.appIdentifier)
|
|
30
|
+
: constants_2.LiveSyncPaths.IOS_DEVICE_PROJECT_ROOT_PATH;
|
|
31
|
+
if (!projectRoot) {
|
|
32
|
+
this.$errors.fail("Unable to get application path on device.");
|
|
33
|
+
}
|
|
34
|
+
if (!options.getDirname) {
|
|
35
|
+
projectRoot = path.join(projectRoot, constants_1.APP_FOLDER_NAME);
|
|
36
|
+
}
|
|
23
37
|
}
|
|
24
|
-
if (
|
|
25
|
-
projectRoot =
|
|
38
|
+
else if (this.$mobileHelper.isAndroidPlatform(device.deviceInfo.platform)) {
|
|
39
|
+
projectRoot = `${constants_2.LiveSyncPaths.ANDROID_TMP_DIR_NAME}/${options.appIdentifier}`;
|
|
40
|
+
if (!options.getDirname) {
|
|
41
|
+
const hashService = (device).fileSystem.getDeviceHashService(options.appIdentifier);
|
|
42
|
+
const hashFile = yield hashService.doesShasumFileExistsOnDevice();
|
|
43
|
+
const syncFolderName = options.watch || hashFile
|
|
44
|
+
? constants_2.LiveSyncPaths.SYNC_DIR_NAME
|
|
45
|
+
: constants_2.LiveSyncPaths.FULLSYNC_DIR_NAME;
|
|
46
|
+
projectRoot = path.join(projectRoot, syncFolderName);
|
|
47
|
+
}
|
|
26
48
|
}
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
projectRoot = `${constants_2.LiveSyncPaths.ANDROID_TMP_DIR_NAME}/${options.appIdentifier}`;
|
|
30
|
-
if (!options.getDirname) {
|
|
31
|
-
const hashService = (device).fileSystem.getDeviceHashService(options.appIdentifier);
|
|
32
|
-
const hashFile = await hashService.doesShasumFileExistsOnDevice();
|
|
33
|
-
const syncFolderName = options.watch || hashFile
|
|
34
|
-
? constants_2.LiveSyncPaths.SYNC_DIR_NAME
|
|
35
|
-
: constants_2.LiveSyncPaths.FULLSYNC_DIR_NAME;
|
|
36
|
-
projectRoot = path.join(projectRoot, syncFolderName);
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
return (0, helpers_1.fromWindowsRelativePathToUnix)(projectRoot);
|
|
49
|
+
return (0, helpers_1.fromWindowsRelativePathToUnix)(projectRoot);
|
|
50
|
+
});
|
|
40
51
|
}
|
|
41
52
|
getDeviceSyncZipPath(device) {
|
|
42
53
|
return this.$mobileHelper.isApplePlatform(device.deviceInfo.platform) &&
|
|
@@ -47,3 +58,4 @@ class DevicePathProvider {
|
|
|
47
58
|
}
|
|
48
59
|
exports.DevicePathProvider = DevicePathProvider;
|
|
49
60
|
yok_1.injector.register("devicePathProvider", DevicePathProvider);
|
|
61
|
+
//# sourceMappingURL=device-path-provider.js.map
|
|
@@ -1,4 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
2
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
12
|
exports.AppDebugSocketProxyFactory = void 0;
|
|
4
13
|
const events_1 = require("events");
|
|
@@ -22,169 +31,181 @@ class AppDebugSocketProxyFactory extends events_1.EventEmitter {
|
|
|
22
31
|
getTCPSocketProxy(deviceIdentifier, appId) {
|
|
23
32
|
return this.deviceTcpServers[`${deviceIdentifier}-${appId}`];
|
|
24
33
|
}
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
this.deviceTcpServers[cacheKey] = server;
|
|
36
|
-
server.on("connection", async (frontendSocket) => {
|
|
37
|
-
this.$logger.info("Frontend client connected.");
|
|
38
|
-
frontendSocket.on("end", () => {
|
|
39
|
-
this.$logger.info("Frontend socket closed!");
|
|
40
|
-
if (!this.$options.watch) {
|
|
41
|
-
process.exit(0);
|
|
42
|
-
}
|
|
43
|
-
});
|
|
44
|
-
const appDebugSocket = await device.getDebugSocket(appId, projectName, projectDir);
|
|
45
|
-
this.$logger.info("Backend socket created.");
|
|
46
|
-
appDebugSocket.on("end", () => {
|
|
47
|
-
this.$logger.info("Backend socket closed!");
|
|
48
|
-
if (!this.$options.watch) {
|
|
49
|
-
process.exit(0);
|
|
50
|
-
}
|
|
34
|
+
addTCPSocketProxy(device, appId, projectName, projectDir) {
|
|
35
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
36
|
+
const cacheKey = `${device.deviceInfo.identifier}-${appId}`;
|
|
37
|
+
const existingServer = this.deviceTcpServers[cacheKey];
|
|
38
|
+
if (existingServer) {
|
|
39
|
+
this.$errors.fail(`TCP socket proxy is already running for device '${device.deviceInfo.identifier}' and app '${appId}'`);
|
|
40
|
+
}
|
|
41
|
+
this.$logger.info("\nSetting up proxy...\nPress Ctrl + C to terminate, or disconnect.\n");
|
|
42
|
+
const server = net.createServer({
|
|
43
|
+
allowHalfOpen: true,
|
|
51
44
|
});
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
45
|
+
this.deviceTcpServers[cacheKey] = server;
|
|
46
|
+
server.on("connection", (frontendSocket) => __awaiter(this, void 0, void 0, function* () {
|
|
47
|
+
this.$logger.info("Frontend client connected.");
|
|
48
|
+
frontendSocket.on("end", () => {
|
|
49
|
+
this.$logger.info("Frontend socket closed!");
|
|
50
|
+
if (!this.$options.watch) {
|
|
51
|
+
process.exit(0);
|
|
52
|
+
}
|
|
53
|
+
});
|
|
54
|
+
const appDebugSocket = yield device.getDebugSocket(appId, projectName, projectDir);
|
|
55
|
+
this.$logger.info("Backend socket created.");
|
|
56
|
+
appDebugSocket.on("end", () => {
|
|
57
|
+
this.$logger.info("Backend socket closed!");
|
|
58
|
+
if (!this.$options.watch) {
|
|
59
|
+
process.exit(0);
|
|
60
|
+
}
|
|
61
|
+
});
|
|
62
|
+
frontendSocket.on("close", () => __awaiter(this, void 0, void 0, function* () {
|
|
63
|
+
this.$logger.info("Frontend socket closed");
|
|
64
|
+
yield device.destroyDebugSocket(appId);
|
|
65
|
+
}));
|
|
66
|
+
appDebugSocket.on("close", () => {
|
|
67
|
+
this.$logger.info("Backend socket closed");
|
|
68
|
+
frontendSocket.destroy();
|
|
69
|
+
server.close();
|
|
70
|
+
delete this.deviceTcpServers[cacheKey];
|
|
71
|
+
});
|
|
72
|
+
appDebugSocket.pipe(frontendSocket);
|
|
73
|
+
frontendSocket.pipe(appDebugSocket);
|
|
74
|
+
frontendSocket.resume();
|
|
75
|
+
}));
|
|
76
|
+
const socketFileLocation = yield this.$tempService.path({
|
|
77
|
+
suffix: ".sock",
|
|
61
78
|
});
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
79
|
+
server.listen(socketFileLocation);
|
|
80
|
+
if (!this.$options.client) {
|
|
81
|
+
this.$logger.info("socket-file-location: " + socketFileLocation);
|
|
82
|
+
}
|
|
83
|
+
return server;
|
|
65
84
|
});
|
|
66
|
-
const socketFileLocation = await this.$tempService.path({
|
|
67
|
-
suffix: ".sock",
|
|
68
|
-
});
|
|
69
|
-
server.listen(socketFileLocation);
|
|
70
|
-
if (!this.$options.client) {
|
|
71
|
-
this.$logger.info("socket-file-location: " + socketFileLocation);
|
|
72
|
-
}
|
|
73
|
-
return server;
|
|
74
85
|
}
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
86
|
+
ensureWebSocketProxy(device, appId, projectName, projectDir) {
|
|
87
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
88
|
+
const existingWebProxy = this.deviceWebServers[`${device.deviceInfo.identifier}-${appId}`];
|
|
89
|
+
const result = existingWebProxy ||
|
|
90
|
+
(yield this.addWebSocketProxy(device, appId, projectName, projectDir));
|
|
91
|
+
// TODO: do not remove till VSCode waits for this message in order to reattach
|
|
92
|
+
this.$logger.info("Opened localhost " + result.options.port);
|
|
93
|
+
return result;
|
|
94
|
+
});
|
|
81
95
|
}
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
96
|
+
addWebSocketProxy(device, appId, projectName, projectDir) {
|
|
97
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
98
|
+
let clientConnectionLockRelease;
|
|
99
|
+
const cacheKey = `${device.deviceInfo.identifier}-${appId}`;
|
|
100
|
+
const existingServer = this.deviceWebServers[cacheKey];
|
|
101
|
+
if (existingServer) {
|
|
102
|
+
this.$errors.fail(`Web socket proxy is already running for device '${device.deviceInfo.identifier}' and app '${appId}'`);
|
|
103
|
+
}
|
|
104
|
+
// NOTE: We will try to provide command line options to select ports, at least on the localhost.
|
|
105
|
+
const localPort = yield this.$net.getAvailablePortInRange(41000);
|
|
106
|
+
this.$logger.info("\nSetting up debugger proxy...\nPress Ctrl + C to terminate, or disconnect.\n");
|
|
107
|
+
// NB: When the inspector frontend connects we might not have connected to the inspector backend yet.
|
|
108
|
+
// That's why we use the verifyClient callback of the websocket server to stall the upgrade request until we connect.
|
|
109
|
+
// We store the socket that connects us to the device in the upgrade request object itself and later on retrieve it
|
|
110
|
+
// in the connection callback.
|
|
111
|
+
let currentAppSocket = null;
|
|
112
|
+
let currentWebSocket = null;
|
|
113
|
+
const server = new ws.Server({
|
|
114
|
+
port: localPort,
|
|
115
|
+
verifyClient: (info, callback) => __awaiter(this, void 0, void 0, function* () {
|
|
116
|
+
let acceptHandshake = true;
|
|
117
|
+
clientConnectionLockRelease = null;
|
|
118
|
+
try {
|
|
119
|
+
clientConnectionLockRelease = yield this.$lockService.lock(`debug-connection-${device.deviceInfo.identifier}-${appId}.lock`);
|
|
120
|
+
this.$logger.info("Frontend client connected.");
|
|
121
|
+
let appDebugSocket;
|
|
122
|
+
if (currentAppSocket) {
|
|
123
|
+
currentAppSocket.removeAllListeners();
|
|
124
|
+
currentAppSocket = null;
|
|
125
|
+
if (currentWebSocket) {
|
|
126
|
+
currentWebSocket.removeAllListeners();
|
|
127
|
+
currentWebSocket.close();
|
|
128
|
+
currentWebSocket = null;
|
|
129
|
+
}
|
|
130
|
+
yield device.destroyDebugSocket(appId);
|
|
131
|
+
}
|
|
132
|
+
appDebugSocket = yield device.getDebugSocket(appId, projectName, projectDir);
|
|
133
|
+
currentAppSocket = appDebugSocket;
|
|
134
|
+
this.$logger.info("Backend socket created.");
|
|
135
|
+
info.req["__deviceSocket"] = appDebugSocket;
|
|
136
|
+
}
|
|
137
|
+
catch (err) {
|
|
138
|
+
if (clientConnectionLockRelease) {
|
|
139
|
+
clientConnectionLockRelease();
|
|
140
|
+
}
|
|
141
|
+
err.deviceIdentifier = device.deviceInfo.identifier;
|
|
142
|
+
this.$logger.trace(err);
|
|
143
|
+
this.emit(constants_1.CONNECTION_ERROR_EVENT_NAME, err);
|
|
144
|
+
acceptHandshake = false;
|
|
145
|
+
this.$logger.warn(`Cannot connect to device socket. The error message is '${err.message}'.`);
|
|
146
|
+
}
|
|
147
|
+
callback(acceptHandshake);
|
|
148
|
+
}),
|
|
149
|
+
});
|
|
150
|
+
this.deviceWebServers[cacheKey] = server;
|
|
151
|
+
server.on("connection", (webSocket, req) => {
|
|
152
|
+
currentWebSocket = webSocket;
|
|
153
|
+
const encoding = "utf16le";
|
|
154
|
+
const appDebugSocket = req["__deviceSocket"];
|
|
155
|
+
const packets = new ios_device_lib_1.MessageUnpackStream();
|
|
156
|
+
appDebugSocket.pipe(packets);
|
|
157
|
+
packets.on("data", (buffer) => {
|
|
158
|
+
const message = buffer.toString(encoding);
|
|
159
|
+
if (webSocket.readyState === webSocket.OPEN) {
|
|
160
|
+
if (process.env.DEBUG_DEVTOOLS_SOCKETS) {
|
|
161
|
+
console.log({
|
|
162
|
+
msgFromRuntime: JSON.parse(message),
|
|
163
|
+
});
|
|
109
164
|
}
|
|
110
|
-
|
|
165
|
+
webSocket.send(message);
|
|
111
166
|
}
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
this.$logger.info("Backend socket created.");
|
|
115
|
-
info.req["__deviceSocket"] = appDebugSocket;
|
|
116
|
-
}
|
|
117
|
-
catch (err) {
|
|
118
|
-
if (clientConnectionLockRelease) {
|
|
119
|
-
clientConnectionLockRelease();
|
|
167
|
+
else {
|
|
168
|
+
this.$logger.trace(`Received message ${message}, but unable to send it to webSocket as its state is: ${webSocket.readyState}`);
|
|
120
169
|
}
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
this.
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
this.deviceWebServers[cacheKey] = server;
|
|
131
|
-
server.on("connection", (webSocket, req) => {
|
|
132
|
-
currentWebSocket = webSocket;
|
|
133
|
-
const encoding = "utf16le";
|
|
134
|
-
const appDebugSocket = req["__deviceSocket"];
|
|
135
|
-
const packets = new ios_device_lib_1.MessageUnpackStream();
|
|
136
|
-
appDebugSocket.pipe(packets);
|
|
137
|
-
packets.on("data", (buffer) => {
|
|
138
|
-
const message = buffer.toString(encoding);
|
|
139
|
-
if (webSocket.readyState === webSocket.OPEN) {
|
|
170
|
+
});
|
|
171
|
+
webSocket.on("error", (err) => {
|
|
172
|
+
this.$logger.trace("Error on debugger websocket", err);
|
|
173
|
+
});
|
|
174
|
+
appDebugSocket.on("error", (err) => {
|
|
175
|
+
this.$logger.trace("Error on debugger deviceSocket", err);
|
|
176
|
+
});
|
|
177
|
+
webSocket.on("message", (message) => {
|
|
178
|
+
const msg = message.toString();
|
|
140
179
|
if (process.env.DEBUG_DEVTOOLS_SOCKETS) {
|
|
141
180
|
console.log({
|
|
142
|
-
|
|
181
|
+
msgFromDevtools: JSON.parse(msg),
|
|
143
182
|
});
|
|
144
183
|
}
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
payload.write(msg, 4, length, encoding);
|
|
168
|
-
appDebugSocket.write(payload);
|
|
169
|
-
});
|
|
170
|
-
appDebugSocket.on("close", () => {
|
|
171
|
-
currentAppSocket = null;
|
|
172
|
-
this.$logger.trace("Backend socket closed!");
|
|
173
|
-
webSocket.close();
|
|
174
|
-
});
|
|
175
|
-
webSocket.on("close", async () => {
|
|
176
|
-
currentWebSocket = null;
|
|
177
|
-
this.$logger.trace("Frontend socket closed!");
|
|
178
|
-
appDebugSocket.unpipe(packets);
|
|
179
|
-
packets.destroy();
|
|
180
|
-
await device.destroyDebugSocket(appId);
|
|
181
|
-
if (!this.$options.watch) {
|
|
182
|
-
process.exit(0);
|
|
183
|
-
}
|
|
184
|
+
const length = Buffer.byteLength(msg, encoding);
|
|
185
|
+
const payload = Buffer.allocUnsafe(length + 4);
|
|
186
|
+
payload.writeInt32BE(length, 0);
|
|
187
|
+
payload.write(msg, 4, length, encoding);
|
|
188
|
+
appDebugSocket.write(payload);
|
|
189
|
+
});
|
|
190
|
+
appDebugSocket.on("close", () => {
|
|
191
|
+
currentAppSocket = null;
|
|
192
|
+
this.$logger.trace("Backend socket closed!");
|
|
193
|
+
webSocket.close();
|
|
194
|
+
});
|
|
195
|
+
webSocket.on("close", () => __awaiter(this, void 0, void 0, function* () {
|
|
196
|
+
currentWebSocket = null;
|
|
197
|
+
this.$logger.trace("Frontend socket closed!");
|
|
198
|
+
appDebugSocket.unpipe(packets);
|
|
199
|
+
packets.destroy();
|
|
200
|
+
yield device.destroyDebugSocket(appId);
|
|
201
|
+
if (!this.$options.watch) {
|
|
202
|
+
process.exit(0);
|
|
203
|
+
}
|
|
204
|
+
}));
|
|
205
|
+
clientConnectionLockRelease();
|
|
184
206
|
});
|
|
185
|
-
|
|
207
|
+
return server;
|
|
186
208
|
});
|
|
187
|
-
return server;
|
|
188
209
|
}
|
|
189
210
|
removeAllProxies() {
|
|
190
211
|
let deviceId;
|
|
@@ -200,3 +221,4 @@ class AppDebugSocketProxyFactory extends events_1.EventEmitter {
|
|
|
200
221
|
}
|
|
201
222
|
exports.AppDebugSocketProxyFactory = AppDebugSocketProxyFactory;
|
|
202
223
|
yok_1.injector.register("appDebugSocketProxyFactory", AppDebugSocketProxyFactory);
|
|
224
|
+
//# sourceMappingURL=app-debug-socket-proxy-factory.js.map
|
|
@@ -6,6 +6,8 @@ const constants_1 = require("../../common/constants");
|
|
|
6
6
|
const yok_1 = require("../../common/yok");
|
|
7
7
|
class IOSNotification extends events_1.EventEmitter {
|
|
8
8
|
getAttachRequest(appId, deviceId) {
|
|
9
|
+
// It could be too early to emit this event, but we rely that if you construct attach request,
|
|
10
|
+
// you will execute it immediately.
|
|
9
11
|
this.emit(constants_1.ATTACH_REQUEST_EVENT_NAME, { deviceId, appId });
|
|
10
12
|
return this.formatNotification(IOSNotification.ATTACH_REQUEST_NOTIFICATION_NAME, appId);
|
|
11
13
|
}
|
|
@@ -22,9 +24,10 @@ class IOSNotification extends events_1.EventEmitter {
|
|
|
22
24
|
return `${appId}:NativeScript.Debug.${notification}`;
|
|
23
25
|
}
|
|
24
26
|
}
|
|
25
|
-
exports.IOSNotification = IOSNotification;
|
|
26
27
|
IOSNotification.REFRESH_REQUEST_NOTIFICATION_NAME = "RefreshRequest";
|
|
27
28
|
IOSNotification.APP_REFRESH_STARTED_NOTIFICATION_NAME = "AppRefreshStarted";
|
|
28
29
|
IOSNotification.ATTACH_REQUEST_NOTIFICATION_NAME = "AttachRequest";
|
|
29
30
|
IOSNotification.READY_FOR_ATTACH_NOTIFICATION_NAME = "ReadyForAttach";
|
|
31
|
+
exports.IOSNotification = IOSNotification;
|
|
30
32
|
yok_1.injector.register("iOSNotification", IOSNotification);
|
|
33
|
+
//# sourceMappingURL=notification.js.map
|