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
|
@@ -1,13 +1,4 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
-
});
|
|
10
|
-
};
|
|
11
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
3
|
exports.HelpService = void 0;
|
|
13
4
|
const path = require("path");
|
|
@@ -44,155 +35,134 @@ class HelpService {
|
|
|
44
35
|
this.pathToHtmlPages = this.$staticConfig.HTML_PAGES_DIR;
|
|
45
36
|
this.pathToManPages = this.$staticConfig.MAN_PAGES_DIR;
|
|
46
37
|
}
|
|
47
|
-
openHelpForCommandInBrowser(commandData) {
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
38
|
+
async openHelpForCommandInBrowser(commandData) {
|
|
39
|
+
const { commandName } = commandData;
|
|
40
|
+
const htmlPage = (await this.convertCommandNameToFileName(commandData)) +
|
|
41
|
+
HelpService.HTML_FILE_EXTENSION;
|
|
42
|
+
this.$logger.trace("Opening help for command '%s'. FileName is '%s'.", commandName, htmlPage);
|
|
43
|
+
this.$fs.ensureDirectoryExists(this.pathToHtmlPages);
|
|
44
|
+
if (!this.tryOpeningSelectedPage(htmlPage)) {
|
|
45
|
+
this.$logger.trace("Required HTML file '%s' is missing. Let's try generating HTML files and see if we'll find it.", htmlPage);
|
|
46
|
+
await this.generateHtmlPages();
|
|
54
47
|
if (!this.tryOpeningSelectedPage(htmlPage)) {
|
|
55
|
-
|
|
56
|
-
this.$logger.trace("Required HTML file '%s' is missing. Let's try generating HTML files and see if we'll find it.", htmlPage);
|
|
57
|
-
yield this.generateHtmlPages();
|
|
58
|
-
if (!this.tryOpeningSelectedPage(htmlPage)) {
|
|
59
|
-
this.$errors.fail("Unable to find help for '%s'", commandName);
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
});
|
|
63
|
-
}
|
|
64
|
-
generateHtmlPages() {
|
|
65
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
66
|
-
const mdFiles = this.$fs.enumerateFilesInDirectorySync(this.pathToManPages);
|
|
67
|
-
const basicHtmlPage = this.$fs.readText(this.pathToBasicPage);
|
|
68
|
-
yield Promise.all(_.map(mdFiles, (markdownFile) => {
|
|
69
|
-
const htmlPageGenerationData = {
|
|
70
|
-
basicHtmlPage,
|
|
71
|
-
pathToMdFile: markdownFile,
|
|
72
|
-
pathToMdPages: this.pathToManPages,
|
|
73
|
-
pathToHtmlPages: this.pathToHtmlPages,
|
|
74
|
-
};
|
|
75
|
-
return this.createHtmlPage(htmlPageGenerationData);
|
|
76
|
-
}));
|
|
77
|
-
const installedExtensionsData = this.$extensibilityService.getInstalledExtensionsData();
|
|
78
|
-
const basicHtmlPageForExtensions = this.$fs.readText(this.pathToBasicPageForExtensions);
|
|
79
|
-
for (const extensionData of installedExtensionsData) {
|
|
80
|
-
const docsDir = extensionData.docs;
|
|
81
|
-
if (docsDir) {
|
|
82
|
-
this.$logger.trace(`Start generation of html help content for extension ${extensionData.extensionName}`);
|
|
83
|
-
if (!this.$fs.exists(docsDir)) {
|
|
84
|
-
this.$logger.warn(`Unable to generate html help pages for extension ${extensionData.extensionName} as the docs directory ${docsDir} does not exist.`);
|
|
85
|
-
continue;
|
|
86
|
-
}
|
|
87
|
-
const htmlDirFullPath = HelpService.getHtmlDirFullPath(docsDir);
|
|
88
|
-
this.$fs.ensureDirectoryExists(htmlDirFullPath);
|
|
89
|
-
const extensionMdFiles = this.$fs.enumerateFilesInDirectorySync(docsDir);
|
|
90
|
-
try {
|
|
91
|
-
yield Promise.all(_.map(extensionMdFiles, (markdownFile) => {
|
|
92
|
-
const htmlPageGenerationData = {
|
|
93
|
-
basicHtmlPage: basicHtmlPageForExtensions,
|
|
94
|
-
pathToMdFile: markdownFile,
|
|
95
|
-
pathToMdPages: docsDir,
|
|
96
|
-
pathToHtmlPages: htmlDirFullPath,
|
|
97
|
-
extensionName: extensionData.extensionName,
|
|
98
|
-
};
|
|
99
|
-
return this.createHtmlPage(htmlPageGenerationData);
|
|
100
|
-
}));
|
|
101
|
-
}
|
|
102
|
-
catch (err) {
|
|
103
|
-
this.$logger.warn(`Unable to generate html help for extension ${extensionData.extensionName}. Error is: ${err.message}`);
|
|
104
|
-
}
|
|
105
|
-
this.$logger.trace(`Finished generation of html help content for extension ${extensionData.extensionName}`);
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
this.$logger.trace("Finished generating HTML files.");
|
|
109
|
-
});
|
|
110
|
-
}
|
|
111
|
-
showCommandLineHelp(commandData) {
|
|
112
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
113
|
-
const help = yield this.getCommandLineHelpForCommand(commandData);
|
|
114
|
-
this.$logger.printMarkdown(help);
|
|
115
|
-
});
|
|
116
|
-
}
|
|
117
|
-
/**
|
|
118
|
-
* Gets the help content for a specific command that should be shown on the terminal.
|
|
119
|
-
* @param {string} commandName Name of the command for which to read the help.
|
|
120
|
-
* @returns {Promise<string>} Help content of the command parsed with all terminal rules applied (stripped content that should be shown only for html help).
|
|
121
|
-
*/
|
|
122
|
-
getCommandLineHelpForCommand(commandData) {
|
|
123
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
124
|
-
const helpText = yield this.readMdFileForCommand(commandData);
|
|
125
|
-
const commandLineHelp = (yield this.$microTemplateService.parseContent(helpText, { isHtml: false }))
|
|
126
|
-
.replace(/ /g, " ")
|
|
127
|
-
.replace(HelpService.MARKDOWN_LINK_REGEX, "$1")
|
|
128
|
-
.replace(HelpService.SPAN_REGEX, (matchingSubstring, textBeforeSpan, textInsideSpan, index, fullString) => {
|
|
129
|
-
return textBeforeSpan + textInsideSpan.replace(this.newLineRegex, "");
|
|
130
|
-
})
|
|
131
|
-
.replace(HelpService.NEW_LINE_REGEX, os_1.EOL);
|
|
132
|
-
return commandLineHelp;
|
|
133
|
-
});
|
|
134
|
-
}
|
|
135
|
-
// This method should return Promise in order to generate all html pages simultaneously.
|
|
136
|
-
createHtmlPage(htmlPageGenerationData) {
|
|
137
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
138
|
-
const { basicHtmlPage, pathToMdFile, pathToMdPages, pathToHtmlPages, extensionName, } = htmlPageGenerationData;
|
|
139
|
-
const mdFileName = path.basename(pathToMdFile);
|
|
140
|
-
const htmlFileName = mdFileName.replace(HelpService.MARKDOWN_FILE_EXTENSION, HelpService.HTML_FILE_EXTENSION);
|
|
141
|
-
this.$logger.trace("Generating '%s' help topic.", htmlFileName);
|
|
142
|
-
const helpText = this.$fs.readText(pathToMdFile);
|
|
143
|
-
const outputText = yield this.$microTemplateService.parseContent(helpText, {
|
|
144
|
-
isHtml: true,
|
|
145
|
-
});
|
|
146
|
-
const htmlText = (0, marked_1.marked)(outputText);
|
|
147
|
-
const filePath = pathToMdFile
|
|
148
|
-
.replace(path.basename(pathToMdPages), path.basename(pathToHtmlPages))
|
|
149
|
-
.replace(mdFileName, htmlFileName);
|
|
150
|
-
this.$logger.trace("HTML file path for '%s' man page is: '%s'.", mdFileName, filePath);
|
|
151
|
-
let outputHtml = basicHtmlPage
|
|
152
|
-
.replace(HelpService.MAN_PAGE_NAME_REGEX, mdFileName.replace(HelpService.MARKDOWN_FILE_EXTENSION, ""))
|
|
153
|
-
.replace(HelpService.HTML_COMMAND_HELP_REGEX, htmlText)
|
|
154
|
-
.replace(HelpService.RELATIVE_PATH_TO_STYLES_CSS_REGEX, path.relative(path.dirname(filePath), this.pathToStylesCss))
|
|
155
|
-
.replace(HelpService.RELATIVE_PATH_TO_IMAGES_REGEX, path.relative(path.dirname(filePath), this.pathToImages))
|
|
156
|
-
.replace(HelpService.RELATIVE_PATH_TO_INDEX_REGEX, path.relative(path.dirname(filePath), this.pathToIndexHtml));
|
|
157
|
-
if (extensionName) {
|
|
158
|
-
outputHtml = outputHtml.replace(HelpService.EXTENSION_NAME_REGEX, extensionName);
|
|
48
|
+
this.$errors.fail("Unable to find help for '%s'", commandName);
|
|
159
49
|
}
|
|
160
|
-
|
|
161
|
-
this.$logger.trace("Finished writing file '%s'.", filePath);
|
|
162
|
-
});
|
|
163
|
-
}
|
|
164
|
-
convertCommandNameToFileName(commandData) {
|
|
165
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
166
|
-
let { commandName } = commandData;
|
|
167
|
-
const defaultCommandMatch = commandName && commandName.match(/([\w-]+?)\|\*/);
|
|
168
|
-
if (defaultCommandMatch) {
|
|
169
|
-
this.$logger.trace("Default command found. Replace current command name '%s' with '%s'.", commandName, defaultCommandMatch[1]);
|
|
170
|
-
commandName = defaultCommandMatch[1];
|
|
171
|
-
}
|
|
172
|
-
const availableCommands = this.$injector
|
|
173
|
-
.getRegisteredCommandsNames(true)
|
|
174
|
-
.sort();
|
|
175
|
-
this.$logger.trace("List of registered commands: %s", availableCommands.join(", "));
|
|
176
|
-
if (commandName && !_.includes(availableCommands, commandName)) {
|
|
177
|
-
yield this.throwMissingCommandError(commandData);
|
|
178
|
-
}
|
|
179
|
-
return (commandName && commandName.replace(/\|/g, "-")) || "start";
|
|
180
|
-
});
|
|
50
|
+
}
|
|
181
51
|
}
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
52
|
+
async generateHtmlPages() {
|
|
53
|
+
const mdFiles = this.$fs.enumerateFilesInDirectorySync(this.pathToManPages);
|
|
54
|
+
const basicHtmlPage = this.$fs.readText(this.pathToBasicPage);
|
|
55
|
+
await Promise.all(_.map(mdFiles, (markdownFile) => {
|
|
56
|
+
const htmlPageGenerationData = {
|
|
57
|
+
basicHtmlPage,
|
|
58
|
+
pathToMdFile: markdownFile,
|
|
59
|
+
pathToMdPages: this.pathToManPages,
|
|
60
|
+
pathToHtmlPages: this.pathToHtmlPages,
|
|
189
61
|
};
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
62
|
+
return this.createHtmlPage(htmlPageGenerationData);
|
|
63
|
+
}));
|
|
64
|
+
const installedExtensionsData = this.$extensibilityService.getInstalledExtensionsData();
|
|
65
|
+
const basicHtmlPageForExtensions = this.$fs.readText(this.pathToBasicPageForExtensions);
|
|
66
|
+
for (const extensionData of installedExtensionsData) {
|
|
67
|
+
const docsDir = extensionData.docs;
|
|
68
|
+
if (docsDir) {
|
|
69
|
+
this.$logger.trace(`Start generation of html help content for extension ${extensionData.extensionName}`);
|
|
70
|
+
if (!this.$fs.exists(docsDir)) {
|
|
71
|
+
this.$logger.warn(`Unable to generate html help pages for extension ${extensionData.extensionName} as the docs directory ${docsDir} does not exist.`);
|
|
72
|
+
continue;
|
|
73
|
+
}
|
|
74
|
+
const htmlDirFullPath = HelpService.getHtmlDirFullPath(docsDir);
|
|
75
|
+
this.$fs.ensureDirectoryExists(htmlDirFullPath);
|
|
76
|
+
const extensionMdFiles = this.$fs.enumerateFilesInDirectorySync(docsDir);
|
|
77
|
+
try {
|
|
78
|
+
await Promise.all(_.map(extensionMdFiles, (markdownFile) => {
|
|
79
|
+
const htmlPageGenerationData = {
|
|
80
|
+
basicHtmlPage: basicHtmlPageForExtensions,
|
|
81
|
+
pathToMdFile: markdownFile,
|
|
82
|
+
pathToMdPages: docsDir,
|
|
83
|
+
pathToHtmlPages: htmlDirFullPath,
|
|
84
|
+
extensionName: extensionData.extensionName,
|
|
85
|
+
};
|
|
86
|
+
return this.createHtmlPage(htmlPageGenerationData);
|
|
87
|
+
}));
|
|
88
|
+
}
|
|
89
|
+
catch (err) {
|
|
90
|
+
this.$logger.warn(`Unable to generate html help for extension ${extensionData.extensionName}. Error is: ${err.message}`);
|
|
91
|
+
}
|
|
92
|
+
this.$logger.trace(`Finished generation of html help content for extension ${extensionData.extensionName}`);
|
|
193
93
|
}
|
|
194
|
-
|
|
94
|
+
}
|
|
95
|
+
this.$logger.trace("Finished generating HTML files.");
|
|
96
|
+
}
|
|
97
|
+
async showCommandLineHelp(commandData) {
|
|
98
|
+
const help = await this.getCommandLineHelpForCommand(commandData);
|
|
99
|
+
this.$logger.printMarkdown(help);
|
|
100
|
+
}
|
|
101
|
+
async getCommandLineHelpForCommand(commandData) {
|
|
102
|
+
const helpText = await this.readMdFileForCommand(commandData);
|
|
103
|
+
const commandLineHelp = (await this.$microTemplateService.parseContent(helpText, { isHtml: false }))
|
|
104
|
+
.replace(/ /g, " ")
|
|
105
|
+
.replace(HelpService.MARKDOWN_LINK_REGEX, "$1")
|
|
106
|
+
.replace(HelpService.SPAN_REGEX, (matchingSubstring, textBeforeSpan, textInsideSpan, index, fullString) => {
|
|
107
|
+
return textBeforeSpan + textInsideSpan.replace(this.newLineRegex, "");
|
|
108
|
+
})
|
|
109
|
+
.replace(HelpService.NEW_LINE_REGEX, os_1.EOL);
|
|
110
|
+
return commandLineHelp;
|
|
111
|
+
}
|
|
112
|
+
async createHtmlPage(htmlPageGenerationData) {
|
|
113
|
+
const { basicHtmlPage, pathToMdFile, pathToMdPages, pathToHtmlPages, extensionName, } = htmlPageGenerationData;
|
|
114
|
+
const mdFileName = path.basename(pathToMdFile);
|
|
115
|
+
const htmlFileName = mdFileName.replace(HelpService.MARKDOWN_FILE_EXTENSION, HelpService.HTML_FILE_EXTENSION);
|
|
116
|
+
this.$logger.trace("Generating '%s' help topic.", htmlFileName);
|
|
117
|
+
const helpText = this.$fs.readText(pathToMdFile);
|
|
118
|
+
const outputText = await this.$microTemplateService.parseContent(helpText, {
|
|
119
|
+
isHtml: true,
|
|
195
120
|
});
|
|
121
|
+
const htmlText = await (0, marked_1.marked)(outputText);
|
|
122
|
+
const filePath = pathToMdFile
|
|
123
|
+
.replace(path.basename(pathToMdPages), path.basename(pathToHtmlPages))
|
|
124
|
+
.replace(mdFileName, htmlFileName);
|
|
125
|
+
this.$logger.trace("HTML file path for '%s' man page is: '%s'.", mdFileName, filePath);
|
|
126
|
+
let outputHtml = basicHtmlPage
|
|
127
|
+
.replace(HelpService.MAN_PAGE_NAME_REGEX, mdFileName.replace(HelpService.MARKDOWN_FILE_EXTENSION, ""))
|
|
128
|
+
.replace(HelpService.HTML_COMMAND_HELP_REGEX, htmlText)
|
|
129
|
+
.replace(HelpService.RELATIVE_PATH_TO_STYLES_CSS_REGEX, path.relative(path.dirname(filePath), this.pathToStylesCss))
|
|
130
|
+
.replace(HelpService.RELATIVE_PATH_TO_IMAGES_REGEX, path.relative(path.dirname(filePath), this.pathToImages))
|
|
131
|
+
.replace(HelpService.RELATIVE_PATH_TO_INDEX_REGEX, path.relative(path.dirname(filePath), this.pathToIndexHtml));
|
|
132
|
+
if (extensionName) {
|
|
133
|
+
outputHtml = outputHtml.replace(HelpService.EXTENSION_NAME_REGEX, extensionName);
|
|
134
|
+
}
|
|
135
|
+
this.$fs.writeFile(filePath, outputHtml);
|
|
136
|
+
this.$logger.trace("Finished writing file '%s'.", filePath);
|
|
137
|
+
}
|
|
138
|
+
async convertCommandNameToFileName(commandData) {
|
|
139
|
+
let { commandName } = commandData;
|
|
140
|
+
const defaultCommandMatch = commandName && commandName.match(/([\w-]+?)\|\*/);
|
|
141
|
+
if (defaultCommandMatch) {
|
|
142
|
+
this.$logger.trace("Default command found. Replace current command name '%s' with '%s'.", commandName, defaultCommandMatch[1]);
|
|
143
|
+
commandName = defaultCommandMatch[1];
|
|
144
|
+
}
|
|
145
|
+
const availableCommands = this.$injector
|
|
146
|
+
.getRegisteredCommandsNames(true)
|
|
147
|
+
.sort();
|
|
148
|
+
this.$logger.trace("List of registered commands: %s", availableCommands.join(", "));
|
|
149
|
+
if (commandName && !_.includes(availableCommands, commandName)) {
|
|
150
|
+
await this.throwMissingCommandError(commandData);
|
|
151
|
+
}
|
|
152
|
+
return (commandName && commandName.replace(/\|/g, "-")) || "start";
|
|
153
|
+
}
|
|
154
|
+
async throwMissingCommandError(commandData) {
|
|
155
|
+
const commandName = commandData.commandName;
|
|
156
|
+
const commandInfo = {
|
|
157
|
+
inputStrings: [commandName, ...commandData.commandArguments],
|
|
158
|
+
commandDelimiter: "|",
|
|
159
|
+
defaultCommandDelimiter: "|*",
|
|
160
|
+
};
|
|
161
|
+
const extensionData = await this.$extensibilityService.getExtensionNameWhereCommandIsRegistered(commandInfo);
|
|
162
|
+
if (extensionData) {
|
|
163
|
+
this.$errors.fail(extensionData.installationMessage);
|
|
164
|
+
}
|
|
165
|
+
this.$errors.fail("Unknown command '%s'. Try '$ %s help' for a full list of supported commands.", commandName, this.$staticConfig.CLIENT_NAME.toLowerCase());
|
|
196
166
|
}
|
|
197
167
|
static getHtmlDirFullPath(docsDir) {
|
|
198
168
|
return path.join(path.dirname(docsDir), "html");
|
|
@@ -231,19 +201,18 @@ class HelpService {
|
|
|
231
201
|
this.$logger.trace("Unable to find file: '%s'", htmlPage);
|
|
232
202
|
return false;
|
|
233
203
|
}
|
|
234
|
-
readMdFileForCommand(commandData) {
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
yield this.throwMissingCommandError(commandData);
|
|
244
|
-
});
|
|
204
|
+
async readMdFileForCommand(commandData) {
|
|
205
|
+
const mdFileName = (await this.convertCommandNameToFileName(commandData)) +
|
|
206
|
+
HelpService.MARKDOWN_FILE_EXTENSION;
|
|
207
|
+
this.$logger.trace("Reading help for command '%s'. FileName is '%s'.", commandData.commandName, mdFileName);
|
|
208
|
+
const markdownFile = this.getHelpFile(mdFileName, this.pathToManPages);
|
|
209
|
+
if (markdownFile) {
|
|
210
|
+
return this.$fs.readText(markdownFile);
|
|
211
|
+
}
|
|
212
|
+
await this.throwMissingCommandError(commandData);
|
|
245
213
|
}
|
|
246
214
|
}
|
|
215
|
+
exports.HelpService = HelpService;
|
|
247
216
|
HelpService.MARKDOWN_FILE_EXTENSION = ".md";
|
|
248
217
|
HelpService.HTML_FILE_EXTENSION = ".html";
|
|
249
218
|
HelpService.MAN_PAGE_NAME_REGEX = /@MAN_PAGE_NAME@/g;
|
|
@@ -254,7 +223,5 @@ HelpService.RELATIVE_PATH_TO_INDEX_REGEX = /@RELATIVE_PATH_TO_INDEX@/g;
|
|
|
254
223
|
HelpService.EXTENSION_NAME_REGEX = /@EXTENSION_NAME@/g;
|
|
255
224
|
HelpService.MARKDOWN_LINK_REGEX = /\[([\w \-\`\<\>\*\:\\]+?)\]\([\s\S]+?\)/g;
|
|
256
225
|
HelpService.SPAN_REGEX = /([\s\S]*?)(?:\r?\n)?<span.*?>([\s\S]*?)<\/span>(?:\r?\n)*/g;
|
|
257
|
-
HelpService.NEW_LINE_REGEX = /<\/?\s*?br\s*?\/?>/g;
|
|
258
|
-
exports.HelpService = HelpService;
|
|
226
|
+
HelpService.NEW_LINE_REGEX = /<\/?\s*?br\s*?\/?>/g;
|
|
259
227
|
yok_1.injector.register("helpService", HelpService);
|
|
260
|
-
//# sourceMappingURL=help-service.js.map
|
|
@@ -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.HooksService = void 0;
|
|
19
10
|
const path = require("path");
|
|
@@ -61,7 +52,6 @@ class HooksService {
|
|
|
61
52
|
}
|
|
62
53
|
}
|
|
63
54
|
static formatHookName(commandName) {
|
|
64
|
-
// Remove everything after | (including the pipe)
|
|
65
55
|
return commandName.replace(/\|[\s\S]*$/, "");
|
|
66
56
|
}
|
|
67
57
|
executeBeforeHooks(commandName, hookArguments) {
|
|
@@ -74,123 +64,111 @@ class HooksService {
|
|
|
74
64
|
const traceMessage = `AfterHookName for command ${commandName} is ${afterHookName}`;
|
|
75
65
|
return this.executeHooks(afterHookName, traceMessage, hookArguments);
|
|
76
66
|
}
|
|
77
|
-
executeHooks(hookName, traceMessage, hookArguments) {
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
67
|
+
async executeHooks(hookName, traceMessage, hookArguments) {
|
|
68
|
+
if (this.$config.DISABLE_HOOKS || !this.$options.hooks) {
|
|
69
|
+
return;
|
|
70
|
+
}
|
|
71
|
+
const hookArgs = hookArguments && hookArguments[this.hookArgsName];
|
|
72
|
+
let projectDir = hookArgs && hookArgs.projectDir;
|
|
73
|
+
if (!projectDir && hookArgs) {
|
|
74
|
+
const candidate = (0, helpers_1.getValueFromNestedObject)(hookArgs, "projectDir");
|
|
75
|
+
projectDir = candidate && candidate.projectDir;
|
|
76
|
+
}
|
|
77
|
+
this.$logger.trace(`Project dir from hooksArgs is: ${projectDir}.`);
|
|
78
|
+
this.initialize(projectDir);
|
|
79
|
+
this.$logger.trace(traceMessage);
|
|
80
|
+
const results = [];
|
|
81
|
+
try {
|
|
82
|
+
for (const hooksDirectory of this.hooksDirectories) {
|
|
83
|
+
results.push(await this.executeHooksInDirectory(hooksDirectory, hookName, hookArguments));
|
|
81
84
|
}
|
|
82
|
-
const
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
const candidate = (0, helpers_1.getValueFromNestedObject)(hookArgs, "projectDir");
|
|
86
|
-
projectDir = candidate && candidate.projectDir;
|
|
85
|
+
const customHooks = this.getCustomHooksByName(hookName);
|
|
86
|
+
for (const hook of customHooks) {
|
|
87
|
+
results.push(await this.executeHook(this.$projectHelper.projectDir, hookName, hook, hookArguments));
|
|
87
88
|
}
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
this.$logger.trace(
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
89
|
+
}
|
|
90
|
+
catch (err) {
|
|
91
|
+
this.$logger.trace(`Failed during hook execution ${hookName}.`);
|
|
92
|
+
this.$errors.fail(err.message || err);
|
|
93
|
+
}
|
|
94
|
+
return _.flatten(results);
|
|
95
|
+
}
|
|
96
|
+
async executeHook(directoryPath, hookName, hook, hookArguments) {
|
|
97
|
+
hookArguments = hookArguments || {};
|
|
98
|
+
let result;
|
|
99
|
+
const relativePath = path.relative(directoryPath, hook.fullPath);
|
|
100
|
+
const trackId = relativePath.replace(new RegExp("\\" + path.sep, "g"), constants_1.AnalyticsEventLabelDelimiter);
|
|
101
|
+
let command = this.getSheBangInterpreter(hook);
|
|
102
|
+
let inProc = false;
|
|
103
|
+
if (!command) {
|
|
104
|
+
command = hook.fullPath;
|
|
105
|
+
if (path.extname(hook.fullPath).toLowerCase() === ".js") {
|
|
106
|
+
command = process.argv[0];
|
|
107
|
+
inProc = this.shouldExecuteInProcess(this.$fs.readText(hook.fullPath));
|
|
100
108
|
}
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
109
|
+
}
|
|
110
|
+
const startTime = this.$performanceService.now();
|
|
111
|
+
if (inProc) {
|
|
112
|
+
this.$logger.trace("Executing %s hook at location %s in-process", hookName, hook.fullPath);
|
|
113
|
+
const hookEntryPoint = require(hook.fullPath);
|
|
114
|
+
this.$logger.trace(`Validating ${hookName} arguments.`);
|
|
115
|
+
const invalidArguments = this.validateHookArguments(hookEntryPoint, hook.fullPath);
|
|
116
|
+
if (invalidArguments.length) {
|
|
117
|
+
this.$logger.warn(`${hook.fullPath} will NOT be executed because it has invalid arguments - ${color_1.color.grey(invalidArguments.join(", "))}.`);
|
|
118
|
+
return;
|
|
104
119
|
}
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
executeHook(directoryPath, hookName, hook, hookArguments) {
|
|
109
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
110
|
-
hookArguments = hookArguments || {};
|
|
111
|
-
let result;
|
|
112
|
-
const relativePath = path.relative(directoryPath, hook.fullPath);
|
|
113
|
-
const trackId = relativePath.replace(new RegExp("\\" + path.sep, "g"), constants_1.AnalyticsEventLabelDelimiter);
|
|
114
|
-
let command = this.getSheBangInterpreter(hook);
|
|
115
|
-
let inProc = false;
|
|
116
|
-
if (!command) {
|
|
117
|
-
command = hook.fullPath;
|
|
118
|
-
if (path.extname(hook.fullPath).toLowerCase() === ".js") {
|
|
119
|
-
command = process.argv[0];
|
|
120
|
-
inProc = this.shouldExecuteInProcess(this.$fs.readText(hook.fullPath));
|
|
121
|
-
}
|
|
120
|
+
const projectDataHookArg = hookArguments["hookArgs"] && hookArguments["hookArgs"]["projectData"];
|
|
121
|
+
if (projectDataHookArg) {
|
|
122
|
+
hookArguments["projectData"] = hookArguments["$projectData"] = projectDataHookArg;
|
|
122
123
|
}
|
|
123
|
-
const
|
|
124
|
-
if (
|
|
125
|
-
this.$logger.trace("
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
const invalidArguments = this.validateHookArguments(hookEntryPoint, hook.fullPath);
|
|
129
|
-
if (invalidArguments.length) {
|
|
130
|
-
this.$logger.warn(`${hook.fullPath} will NOT be executed because it has invalid arguments - ${color_1.color.grey(invalidArguments.join(", "))}.`);
|
|
131
|
-
return;
|
|
124
|
+
const maybePromise = this.$injector.resolve(hookEntryPoint, hookArguments);
|
|
125
|
+
if (maybePromise) {
|
|
126
|
+
this.$logger.trace("Hook promises to signal completion");
|
|
127
|
+
try {
|
|
128
|
+
result = await maybePromise;
|
|
132
129
|
}
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
const projectDataHookArg = hookArguments["hookArgs"] && hookArguments["hookArgs"]["projectData"];
|
|
139
|
-
if (projectDataHookArg) {
|
|
140
|
-
hookArguments["projectData"] = hookArguments["$projectData"] = projectDataHookArg;
|
|
141
|
-
}
|
|
142
|
-
const maybePromise = this.$injector.resolve(hookEntryPoint, hookArguments);
|
|
143
|
-
if (maybePromise) {
|
|
144
|
-
this.$logger.trace("Hook promises to signal completion");
|
|
145
|
-
try {
|
|
146
|
-
result = yield maybePromise;
|
|
130
|
+
catch (err) {
|
|
131
|
+
if (err &&
|
|
132
|
+
_.isBoolean(err.stopExecution) &&
|
|
133
|
+
err.errorAsWarning === true) {
|
|
134
|
+
this.$logger.warn(err.message || err);
|
|
147
135
|
}
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
err.errorAsWarning === true) {
|
|
152
|
-
this.$logger.warn(err.message || err);
|
|
153
|
-
}
|
|
154
|
-
else {
|
|
155
|
-
// Print the actual error with its callstack, so it is easy to find out which hooks is causing troubles.
|
|
156
|
-
this.$logger.error(err);
|
|
157
|
-
throw err || new Error(`Failed to execute hook: ${hook.fullPath}.`);
|
|
158
|
-
}
|
|
136
|
+
else {
|
|
137
|
+
this.$logger.error(err);
|
|
138
|
+
throw err || new Error(`Failed to execute hook: ${hook.fullPath}.`);
|
|
159
139
|
}
|
|
160
|
-
this.$logger.trace("Hook completed");
|
|
161
140
|
}
|
|
141
|
+
this.$logger.trace("Hook completed");
|
|
162
142
|
}
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
this.$logger.trace("Finished executing %s hook at location %s with environment ", hookName, hook.fullPath, environment);
|
|
143
|
+
}
|
|
144
|
+
else {
|
|
145
|
+
const environment = this.prepareEnvironment(hook.fullPath);
|
|
146
|
+
this.$logger.trace("Executing %s hook at location %s with environment ", hookName, hook.fullPath, environment);
|
|
147
|
+
const output = await this.$childProcess.spawnFromEvent(command, [hook.fullPath], "close", environment, { throwError: false });
|
|
148
|
+
result = output;
|
|
149
|
+
if (output.exitCode !== 0) {
|
|
150
|
+
throw new Error(output.stdout + output.stderr);
|
|
172
151
|
}
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
152
|
+
this.$logger.trace("Finished executing %s hook at location %s with environment ", hookName, hook.fullPath, environment);
|
|
153
|
+
}
|
|
154
|
+
const endTime = this.$performanceService.now();
|
|
155
|
+
this.$performanceService.processExecutionData(trackId, startTime, endTime, [
|
|
156
|
+
hookArguments,
|
|
157
|
+
]);
|
|
158
|
+
return result;
|
|
179
159
|
}
|
|
180
|
-
executeHooksInDirectory(directoryPath, hookName, hookArguments) {
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
results.push(result);
|
|
190
|
-
}
|
|
160
|
+
async executeHooksInDirectory(directoryPath, hookName, hookArguments) {
|
|
161
|
+
hookArguments = hookArguments || {};
|
|
162
|
+
const results = [];
|
|
163
|
+
const hooks = this.getHooksByName(directoryPath, hookName);
|
|
164
|
+
for (let i = 0; i < hooks.length; ++i) {
|
|
165
|
+
const hook = hooks[i];
|
|
166
|
+
const result = await this.executeHook(directoryPath, hookName, hook, hookArguments);
|
|
167
|
+
if (result) {
|
|
168
|
+
results.push(result);
|
|
191
169
|
}
|
|
192
|
-
|
|
193
|
-
|
|
170
|
+
}
|
|
171
|
+
return results;
|
|
194
172
|
}
|
|
195
173
|
getCustomHooksByName(hookName) {
|
|
196
174
|
const hooks = [];
|
|
@@ -258,7 +236,6 @@ class HooksService {
|
|
|
258
236
|
interpreter = sheBangMatch[1];
|
|
259
237
|
}
|
|
260
238
|
if (interpreter) {
|
|
261
|
-
// Likewise, make /usr/bin/bash work like "bash".
|
|
262
239
|
shMatch = interpreter.match(/bin\/((?:ba)?sh)$/);
|
|
263
240
|
}
|
|
264
241
|
if (shMatch) {
|
|
@@ -299,7 +276,6 @@ class HooksService {
|
|
|
299
276
|
}
|
|
300
277
|
validateHookArguments(hookConstructor, hookFullPath) {
|
|
301
278
|
const invalidArguments = [];
|
|
302
|
-
// We need to annotate the hook in order to have the arguments of the constructor.
|
|
303
279
|
(0, helpers_1.annotate)(hookConstructor);
|
|
304
280
|
_.each(hookConstructor.$inject.args, (argument) => {
|
|
305
281
|
try {
|
|
@@ -315,17 +291,13 @@ class HooksService {
|
|
|
315
291
|
return invalidArguments;
|
|
316
292
|
}
|
|
317
293
|
}
|
|
294
|
+
exports.HooksService = HooksService;
|
|
318
295
|
HooksService.HOOKS_DIRECTORY_NAME = "hooks";
|
|
319
296
|
__decorate([
|
|
320
297
|
(0, decorators_1.memoize)({
|
|
321
298
|
shouldCache() {
|
|
322
|
-
// only cache if we have hooks directories, the only case to
|
|
323
|
-
// not have hooks directories is when the project dir is
|
|
324
|
-
// not set yet, ie. when creating a project.
|
|
325
299
|
return !!this.hooksDirectories.length;
|
|
326
300
|
},
|
|
327
301
|
})
|
|
328
302
|
], HooksService.prototype, "initialize", null);
|
|
329
|
-
exports.HooksService = HooksService;
|
|
330
303
|
yok_1.injector.register("hooksService", HooksService);
|
|
331
|
-
//# sourceMappingURL=hooks-service.js.map
|