nativescript 9.0.0-alpha.7 → 9.0.0-alpha.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/android-tools-info.js +0 -12
- package/lib/base-package-manager.js +0 -7
- package/lib/bootstrap.js +1 -5
- package/lib/bun-package-manager.js +1 -14
- package/lib/color.js +0 -4
- package/lib/commands/add-platform.js +0 -1
- package/lib/commands/apple-login.js +0 -1
- package/lib/commands/appstore-list.js +0 -1
- package/lib/commands/appstore-upload.js +0 -3
- package/lib/commands/build.js +2 -3
- package/lib/commands/clean.js +1 -22
- package/lib/commands/command-base.js +0 -1
- package/lib/commands/config.js +0 -4
- package/lib/commands/create-project.js +0 -6
- package/lib/commands/debug.js +1 -6
- package/lib/commands/deploy.js +2 -3
- package/lib/commands/embedding/embed.js +0 -7
- package/lib/commands/extensibility/install-extension.js +0 -1
- package/lib/commands/extensibility/list-extensions.js +0 -1
- package/lib/commands/extensibility/uninstall-extension.js +0 -1
- package/lib/commands/fonts.js +0 -1
- package/lib/commands/generate-assets.js +0 -1
- package/lib/commands/generate-help.js +0 -1
- package/lib/commands/generate.js +1 -48
- package/lib/commands/info.js +0 -1
- package/lib/commands/install.js +0 -1
- package/lib/commands/list-platforms.js +0 -1
- package/lib/commands/migrate.js +0 -1
- package/lib/commands/native-add.js +0 -5
- package/lib/commands/platform-clean.js +0 -1
- package/lib/commands/plugin/add-plugin.js +0 -1
- package/lib/commands/plugin/build-plugin.js +0 -1
- package/lib/commands/plugin/create-plugin.js +0 -5
- package/lib/commands/plugin/list-plugins.js +0 -1
- package/lib/commands/plugin/remove-plugin.js +0 -2
- package/lib/commands/plugin/update-plugin.js +0 -1
- package/lib/commands/post-install.js +0 -6
- package/lib/commands/prepare.js +3 -4
- package/lib/commands/preview.js +0 -2
- package/lib/commands/remove-platform.js +0 -1
- package/lib/commands/resources/resources-update.js +0 -2
- package/lib/commands/run.js +0 -1
- package/lib/commands/setup.js +0 -1
- package/lib/commands/start.js +0 -1
- package/lib/commands/test-init.js +0 -4
- package/lib/commands/test.js +2 -9
- package/lib/commands/typings.js +1 -2
- package/lib/commands/update-platform.js +0 -5
- package/lib/commands/update.js +0 -2
- package/lib/commands/widget.js +1 -20
- package/lib/common/bootstrap.js +0 -1
- package/lib/common/child-process.js +0 -3
- package/lib/common/codeGeneration/code-entity.js +0 -1
- package/lib/common/codeGeneration/code-printer.js +0 -1
- package/lib/common/command-params.js +0 -1
- package/lib/common/commands/analytics.js +0 -3
- package/lib/common/commands/autocompletion.js +0 -3
- package/lib/common/commands/device/device-log-stream.js +0 -1
- package/lib/common/commands/device/get-file.js +0 -2
- package/lib/common/commands/device/list-applications.js +0 -1
- package/lib/common/commands/device/list-devices.js +0 -3
- package/lib/common/commands/device/list-files.js +0 -2
- package/lib/common/commands/device/put-file.js +0 -2
- package/lib/common/commands/device/run-application.js +0 -1
- package/lib/common/commands/device/stop-application.js +0 -1
- package/lib/common/commands/device/uninstall-application.js +0 -1
- package/lib/common/commands/doctor.js +2 -3
- package/lib/common/commands/generate-messages.js +0 -1
- package/lib/common/commands/help.js +0 -1
- package/lib/common/commands/package-manager-get.js +0 -1
- package/lib/common/commands/package-manager-set.js +0 -1
- package/lib/common/commands/post-install.js +0 -1
- package/lib/common/commands/preuninstall.js +2 -11
- package/lib/common/commands/proxy/proxy-base.js +0 -4
- package/lib/common/commands/proxy/proxy-clear.js +0 -1
- package/lib/common/commands/proxy/proxy-get.js +0 -1
- package/lib/common/commands/proxy/proxy-set.js +0 -1
- package/lib/common/common-lib.js +0 -1
- package/lib/common/constants.js +0 -11
- package/lib/common/decorators.js +0 -48
- package/lib/common/dispatchers.js +1 -10
- package/lib/common/errors.js +3 -13
- package/lib/common/file-system.js +2 -13
- package/lib/common/header.js +0 -3
- package/lib/common/helpers.js +3 -89
- package/lib/common/host-info.js +0 -4
- package/lib/common/http-client.js +0 -20
- package/lib/common/logger/appenders/cli-appender.js +0 -4
- package/lib/common/logger/appenders/emit-appender.js +0 -4
- package/lib/common/logger/layouts/cli-layout.js +0 -1
- package/lib/common/logger/logger.js +0 -5
- package/lib/common/messages/messages.js +0 -6
- package/lib/common/mobile/android/android-application-manager.js +1 -20
- package/lib/common/mobile/android/android-debug-bridge-result-handler.js +0 -1
- package/lib/common/mobile/android/android-debug-bridge.js +0 -6
- package/lib/common/mobile/android/android-device-file-system.js +0 -4
- package/lib/common/mobile/android/android-device-hash-service.js +0 -3
- package/lib/common/mobile/android/android-device.js +0 -8
- package/lib/common/mobile/android/android-emulator-services.js +1 -2
- package/lib/common/mobile/android/android-ini-file-parser.js +0 -9
- package/lib/common/mobile/android/android-log-filter.js +0 -4
- package/lib/common/mobile/android/android-virtual-device-service.js +0 -26
- package/lib/common/mobile/android/device-android-debug-bridge.js +0 -1
- package/lib/common/mobile/android/genymotion/genymotion-service.js +1 -6
- package/lib/common/mobile/android/genymotion/virtualbox-service.js +0 -11
- package/lib/common/mobile/android/logcat-helper.js +0 -13
- package/lib/common/mobile/application-manager-base.js +0 -6
- 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 +0 -1
- 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 +0 -3
- package/lib/common/mobile/ios/device/ios-device-file-system.js +0 -1
- package/lib/common/mobile/ios/device/ios-device-operations.js +0 -4
- package/lib/common/mobile/ios/device/ios-device.js +0 -4
- package/lib/common/mobile/ios/ios-device-base.js +0 -1
- 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 +0 -4
- package/lib/common/mobile/ios/simulator/ios-sim-resolver.js +0 -1
- package/lib/common/mobile/ios/simulator/ios-simulator-application-manager.js +0 -6
- package/lib/common/mobile/ios/simulator/ios-simulator-device.js +0 -5
- package/lib/common/mobile/ios/simulator/ios-simulator-file-system.js +0 -1
- package/lib/common/mobile/ios/simulator/ios-simulator-log-provider.js +0 -1
- 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 +0 -2
- package/lib/common/mobile/mobile-core/android-emulator-discovery.js +0 -3
- package/lib/common/mobile/mobile-core/android-process-service.js +0 -32
- package/lib/common/mobile/mobile-core/device-discovery.js +0 -1
- package/lib/common/mobile/mobile-core/devices-service.js +0 -69
- package/lib/common/mobile/mobile-core/ios-device-discovery.js +0 -2
- package/lib/common/mobile/mobile-core/ios-simulator-discovery.js +0 -3
- package/lib/common/mobile/mobile-helper.js +0 -1
- package/lib/common/mobile/wp8/wp8-emulator-services.js +0 -1
- package/lib/common/opener.js +0 -1
- 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 +1 -9
- package/lib/common/queue.js +0 -1
- package/lib/common/resource-loader.js +0 -1
- package/lib/common/services/auto-completion-service.js +1 -13
- package/lib/common/services/cancellation.js +1 -2
- package/lib/common/services/commands-service.js +6 -17
- package/lib/common/services/help-service.js +3 -11
- package/lib/common/services/hooks-service.js +0 -13
- package/lib/common/services/ios-notification-service.js +0 -1
- package/lib/common/services/json-file-settings-service.js +0 -6
- package/lib/common/services/lock-service.js +0 -6
- package/lib/common/services/message-contract-generator.js +0 -1
- package/lib/common/services/messages-service.js +0 -1
- package/lib/common/services/micro-templating-service.js +0 -6
- package/lib/common/services/net-service.js +0 -3
- package/lib/common/services/project-files-manager.js +0 -5
- package/lib/common/services/project-files-provider-base.js +0 -1
- package/lib/common/services/proxy-service.js +0 -1
- package/lib/common/services/qr.js +0 -1
- package/lib/common/services/settings-service.js +0 -1
- package/lib/common/services/xcode-select-service.js +0 -1
- package/lib/common/utils.js +0 -1
- package/lib/common/validators/project-name-validator.js +0 -1
- package/lib/common/validators/validation-result.js +0 -1
- package/lib/common/verify-node-version.js +1 -8
- package/lib/common/yok.js +11 -32
- package/lib/config.js +1 -22
- package/lib/constants-provider.js +0 -1
- package/lib/constants.js +0 -53
- package/lib/controllers/build-controller.js +3 -4
- package/lib/controllers/debug-controller.js +3 -8
- package/lib/controllers/deploy-controller.js +0 -1
- package/lib/controllers/migrate-controller.js +4 -90
- package/lib/controllers/platform-controller.js +1 -9
- package/lib/controllers/prepare-controller.js +4 -17
- package/lib/controllers/run-controller.js +1 -17
- package/lib/controllers/update-controller-base.js +0 -1
- package/lib/controllers/update-controller.js +0 -11
- 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 +0 -1
- package/lib/data/run-data.js +0 -1
- package/lib/detached-processes/cleanup-js-subprocess.js +2 -8
- package/lib/detached-processes/cleanup-process.js +14 -18
- package/lib/detached-processes/file-log-service.js +1 -2
- package/lib/device-path-provider.js +0 -1
- package/lib/device-sockets/ios/app-debug-socket-proxy-factory.js +0 -7
- package/lib/device-sockets/ios/notification.js +0 -3
- package/lib/device-sockets/ios/socket-request-executor.js +0 -3
- package/lib/helpers/android-bundle-validator-helper.js +1 -2
- package/lib/helpers/deploy-command-helper.js +0 -1
- package/lib/helpers/key-command-helper.js +2 -4
- package/lib/helpers/livesync-command-helper.js +1 -4
- package/lib/helpers/network-connectivity-validator.js +0 -1
- package/lib/helpers/options-track-helper.js +2 -3
- package/lib/helpers/package-path-helper.js +0 -1
- package/lib/helpers/platform-command-helper.js +2 -7
- package/lib/helpers/version-validator-helper.js +0 -1
- package/lib/key-commands/bootstrap.js +2 -3
- package/lib/key-commands/index.js +4 -5
- package/lib/nativescript-cli-lib-bootstrap.js +0 -4
- package/lib/nativescript-cli-lib.js +0 -1
- package/lib/nativescript-cli.js +1 -10
- package/lib/node/pbxproj-dom-xcode.js +0 -1
- package/lib/node/xcode.js +0 -1
- package/lib/node-package-manager.js +1 -11
- package/lib/options.js +119 -144
- package/lib/package-installation-manager.js +1 -8
- package/lib/package-manager.js +0 -2
- package/lib/platform-command-param.js +0 -1
- package/lib/pnpm-package-manager.js +1 -4
- package/lib/project-data.js +0 -12
- package/lib/providers/project-files-provider.js +0 -1
- package/lib/resolvers/livesync-service-resolver.js +0 -1
- package/lib/services/analytics/analytics-broker-process.js +6 -10
- package/lib/services/analytics/analytics-broker.js +1 -2
- package/lib/services/analytics/analytics-service.js +25 -29
- package/lib/services/analytics/google-analytics-provider.js +12 -13
- package/lib/services/analytics-settings-service.js +0 -5
- package/lib/services/android/android-bundle-tool-service.js +0 -1
- package/lib/services/android/gradle-build-args-service.js +0 -3
- package/lib/services/android/gradle-build-service.js +0 -1
- package/lib/services/android/gradle-command-service.js +0 -1
- package/lib/services/android-device-debug-service.js +0 -6
- package/lib/services/android-plugin-build-service.js +2 -31
- package/lib/services/android-project-service.js +4 -71
- package/lib/services/android-resources-migration-service.js +0 -7
- package/lib/services/apple-portal/apple-portal-application-service.js +0 -1
- package/lib/services/apple-portal/apple-portal-cookie-service.js +0 -1
- package/lib/services/apple-portal/apple-portal-session-service.js +4 -6
- package/lib/services/apple-portal/srp/srp-wrapper.js +1 -4
- package/lib/services/assets-generation/assets-generation-service.js +5 -10
- package/lib/services/build-artifacts-service.js +1 -2
- package/lib/services/build-data-service.js +0 -1
- package/lib/services/build-info-file-service.js +0 -1
- package/lib/services/bundler/bundler-compiler-service.js +35 -75
- package/lib/services/bundler/bundler.js +0 -1
- package/lib/services/cleanup-service.js +9 -13
- package/lib/services/cocoapods-platform-manager.js +0 -9
- package/lib/services/cocoapods-service.js +1 -21
- 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 +1 -2
- package/lib/services/doctor-service.js +6 -21
- package/lib/services/extensibility-service.js +0 -8
- package/lib/services/files-hash-service.js +0 -1
- package/lib/services/hmr-status-service.js +0 -2
- package/lib/services/info-service.js +0 -1
- package/lib/services/initialize-service.js +1 -5
- package/lib/services/ios/export-options-plist-service.js +0 -4
- package/lib/services/ios/ios-signing-service.js +0 -4
- package/lib/services/ios/spm-service.js +0 -11
- package/lib/services/ios/xcodebuild-args-service.js +0 -9
- package/lib/services/ios/xcodebuild-command-service.js +0 -1
- package/lib/services/ios/xcodebuild-service.js +1 -2
- package/lib/services/ios-debugger-port-service.js +0 -1
- package/lib/services/ios-device-debug-service.js +0 -1
- package/lib/services/ios-entitlements-service.js +0 -1
- package/lib/services/ios-extensions-service.js +0 -1
- 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 +1 -91
- package/lib/services/ios-provision-service.js +0 -3
- package/lib/services/ios-watch-app-service.js +0 -1
- package/lib/services/ip-service.js +0 -2
- package/lib/services/itmstransporter-service.js +0 -1
- package/lib/services/karma-execution.js +0 -2
- package/lib/services/livesync/android-device-livesync-service-base.js +0 -1
- package/lib/services/livesync/android-device-livesync-service.js +0 -2
- package/lib/services/livesync/android-device-livesync-sockets-service.js +0 -3
- package/lib/services/livesync/android-livesync-service.js +0 -1
- package/lib/services/livesync/android-livesync-tool.js +3 -5
- package/lib/services/livesync/device-livesync-service-base.js +0 -2
- package/lib/services/livesync/ios-device-livesync-service.js +0 -7
- package/lib/services/livesync/ios-livesync-service.js +0 -2
- package/lib/services/livesync/livesync-socket.js +0 -1
- package/lib/services/livesync/platform-livesync-service-base.js +0 -5
- package/lib/services/livesync-process-data-service.js +0 -1
- package/lib/services/log-parser-service.js +0 -1
- package/lib/services/log-source-map-service.js +0 -15
- package/lib/services/marking-mode-service.js +5 -8
- package/lib/services/metadata-filtering-service.js +0 -1
- package/lib/services/npm-config-service.js +0 -4
- package/lib/services/pacote-service.js +0 -7
- package/lib/services/performance-service.js +1 -3
- package/lib/services/platform/add-platform-service.js +2 -49
- package/lib/services/platform/platform-validation-service.js +0 -1
- package/lib/services/platform/prepare-native-platform-service.js +2 -5
- package/lib/services/platform-environment-requirements.js +3 -8
- 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 +2 -20
- package/lib/services/prepare-data-service.js +0 -1
- package/lib/services/project-backup-service.js +0 -4
- package/lib/services/project-changes-service.js +3 -14
- package/lib/services/project-cleanup-service.js +0 -2
- package/lib/services/project-config-service.js +2 -21
- package/lib/services/project-data-service.js +7 -36
- package/lib/services/project-name-service.js +0 -1
- package/lib/services/project-service.js +0 -10
- package/lib/services/project-templates-service.js +2 -3
- package/lib/services/qr-code-terminal-service.js +0 -1
- package/lib/services/require-service.js +0 -1
- package/lib/services/start-service.js +0 -1
- package/lib/services/temp-service.js +0 -3
- package/lib/services/terminal-spinner-service.js +0 -2
- package/lib/services/test-execution-service.js +2 -9
- package/lib/services/test-initialization-service.js +0 -4
- package/lib/services/timeline-profiler-service.js +0 -1
- package/lib/services/user-settings-service.js +0 -1
- package/lib/services/versions-service.js +4 -6
- package/lib/services/watch-ignore-list-service.js +0 -1
- package/lib/services/xcconfig-service.js +0 -2
- package/lib/services/xcproj-service.js +0 -1
- package/lib/shared-event-bus.js +0 -6
- package/lib/sys-info.js +1 -2
- package/lib/tools/config-manipulation/config-transformer.js +0 -12
- package/lib/tools/node-modules/node-modules-builder.js +0 -1
- package/lib/tools/node-modules/node-modules-dependencies-builder.js +0 -6
- package/lib/yarn-package-manager.js +0 -1
- package/lib/yarn2-package-manager.js +0 -3
- package/package.json +15 -15
|
@@ -62,7 +62,6 @@ class DevicesService extends events_1.EventEmitter {
|
|
|
62
62
|
const device = await this.getDevice(options.deviceId);
|
|
63
63
|
return device;
|
|
64
64
|
}
|
|
65
|
-
// Now let's take data for each device:
|
|
66
65
|
const availableDevicesAndEmulators = this.getDeviceInstances().filter((d) => d.deviceInfo.status === constants_2.CONNECTED_STATUS &&
|
|
67
66
|
(!this.platform ||
|
|
68
67
|
d.deviceInfo.platform.toLowerCase() === this.platform.toLowerCase()));
|
|
@@ -85,8 +84,6 @@ class DevicesService extends events_1.EventEmitter {
|
|
|
85
84
|
const devices = sortedInstances.filter((d) => !d.isEmulator);
|
|
86
85
|
let selectedInstance;
|
|
87
86
|
if (options.onlyEmulators || options.onlyDevices) {
|
|
88
|
-
// When --emulator or --forDevice is passed, the instances are already filtered
|
|
89
|
-
// So we are sure we have exactly the type we need and we can safely return the last one (highest OS version).
|
|
90
87
|
selectedInstance = _.last(sortedInstances);
|
|
91
88
|
}
|
|
92
89
|
else {
|
|
@@ -145,7 +142,6 @@ class DevicesService extends events_1.EventEmitter {
|
|
|
145
142
|
...additionalErrors,
|
|
146
143
|
];
|
|
147
144
|
}
|
|
148
|
-
// emulator is already running
|
|
149
145
|
if (emulator.status === constants.RUNNING_EMULATOR_STATUS) {
|
|
150
146
|
return null;
|
|
151
147
|
}
|
|
@@ -177,11 +173,9 @@ class DevicesService extends events_1.EventEmitter {
|
|
|
177
173
|
return !!(this.$mobileHelper.isiOSPlatform(device.deviceInfo.platform) &&
|
|
178
174
|
device.isEmulator);
|
|
179
175
|
}
|
|
180
|
-
/* tslint:disable:no-unused-variable */
|
|
181
176
|
setLogLevel(logLevel, deviceIdentifier) {
|
|
182
177
|
this.$deviceLogProvider.setLogLevel(logLevel, deviceIdentifier);
|
|
183
178
|
}
|
|
184
|
-
/* tslint:enable:no-unused-variable */
|
|
185
179
|
isAppInstalledOnDevices(deviceIdentifiers, appId, projectName, projectDir) {
|
|
186
180
|
this.$logger.trace(`Called isInstalledOnDevices for identifiers ${deviceIdentifiers}. AppIdentifier is ${appId}.`);
|
|
187
181
|
return _.map(deviceIdentifiers, (deviceIdentifier) => this.isApplicationInstalledOnDevice(deviceIdentifier, {
|
|
@@ -253,9 +247,6 @@ class DevicesService extends events_1.EventEmitter {
|
|
|
253
247
|
delete this._availableEmulators[emulator.imageIdentifier];
|
|
254
248
|
this.emit(constants.EmulatorDiscoveryNames.EMULATOR_IMAGE_LOST, emulator);
|
|
255
249
|
}
|
|
256
|
-
/**
|
|
257
|
-
* Starts looking for devices. Any found devices are pushed to "_devices" variable.
|
|
258
|
-
*/
|
|
259
250
|
async detectCurrentlyAttachedDevices(deviceInitOpts) {
|
|
260
251
|
const options = this.getDeviceLookingOptions(deviceInitOpts);
|
|
261
252
|
for (const deviceDiscovery of this._allDeviceDiscoveries) {
|
|
@@ -324,11 +315,6 @@ class DevicesService extends events_1.EventEmitter {
|
|
|
324
315
|
clearInterval(this.emulatorDetectionInterval);
|
|
325
316
|
}
|
|
326
317
|
}
|
|
327
|
-
/**
|
|
328
|
-
* Returns device that matches an identifier.
|
|
329
|
-
* The identifier is expected to be the same as the running device declares it (emulator-5554 for android or GUID for ios).
|
|
330
|
-
* @param identifier running emulator or device identifier
|
|
331
|
-
*/
|
|
332
318
|
getDeviceByIdentifier(identifier) {
|
|
333
319
|
const searchedDevice = _.find(this.getDeviceInstances(), (device) => {
|
|
334
320
|
if (this.$mobileHelper.isApplePlatform(device.deviceInfo.platform) &&
|
|
@@ -344,9 +330,6 @@ class DevicesService extends events_1.EventEmitter {
|
|
|
344
330
|
}
|
|
345
331
|
return searchedDevice;
|
|
346
332
|
}
|
|
347
|
-
/**
|
|
348
|
-
* Starts looking for running devices. All found devices are pushed to _devices variable.
|
|
349
|
-
*/
|
|
350
333
|
async startLookingForDevices(deviceInitOpts) {
|
|
351
334
|
this.$logger.trace("startLookingForDevices; platform is %s", this._platform);
|
|
352
335
|
if (this._platform) {
|
|
@@ -356,20 +339,10 @@ class DevicesService extends events_1.EventEmitter {
|
|
|
356
339
|
await this.detectCurrentlyAvailableEmulators();
|
|
357
340
|
await this.startDeviceDetectionInterval(deviceInitOpts);
|
|
358
341
|
}
|
|
359
|
-
/**
|
|
360
|
-
* Returns device depending on the passed index.
|
|
361
|
-
* The index refers to assigned number to listed devices by tns device command.
|
|
362
|
-
* @param index assigned device number
|
|
363
|
-
*/
|
|
364
342
|
getDeviceByIndex(index) {
|
|
365
343
|
this.validateIndex(index - 1);
|
|
366
344
|
return this.getDeviceInstances()[index - 1];
|
|
367
345
|
}
|
|
368
|
-
/**
|
|
369
|
-
* Returns running device for specified --device <DeviceId>.
|
|
370
|
-
* Method expects running devices.
|
|
371
|
-
* @param deviceOption parameter passed by the user to --device flag. Can be name, identifier or imageIdentifier.
|
|
372
|
-
*/
|
|
373
346
|
async getDevice(deviceOption) {
|
|
374
347
|
let device = null;
|
|
375
348
|
if (!device) {
|
|
@@ -389,11 +362,6 @@ class DevicesService extends events_1.EventEmitter {
|
|
|
389
362
|
}
|
|
390
363
|
return device;
|
|
391
364
|
}
|
|
392
|
-
/**
|
|
393
|
-
* Method runs action for a --device (value), specified by the user.
|
|
394
|
-
* @param action action to be executed if canExecute returns true
|
|
395
|
-
* @param canExecute predicate to decide whether the command can be ran
|
|
396
|
-
*/
|
|
397
365
|
async executeOnDevice(action, canExecute) {
|
|
398
366
|
if (!canExecute || canExecute(this._device)) {
|
|
399
367
|
return {
|
|
@@ -402,11 +370,6 @@ class DevicesService extends events_1.EventEmitter {
|
|
|
402
370
|
};
|
|
403
371
|
}
|
|
404
372
|
}
|
|
405
|
-
/**
|
|
406
|
-
* Executes passed action for each found device.
|
|
407
|
-
* @param action action to be executed if canExecute returns true
|
|
408
|
-
* @param canExecute predicate to decide whether the command can be ran
|
|
409
|
-
*/
|
|
410
373
|
async executeOnAllConnectedDevices(action, canExecute) {
|
|
411
374
|
const devices = this.filterDevicesByPlatform();
|
|
412
375
|
const sortedDevices = _.sortBy(devices, (device) => device.deviceInfo.platform);
|
|
@@ -458,12 +421,6 @@ class DevicesService extends events_1.EventEmitter {
|
|
|
458
421
|
});
|
|
459
422
|
});
|
|
460
423
|
}
|
|
461
|
-
/**
|
|
462
|
-
* Runs the passed action if the predicate "canExecute" returns true
|
|
463
|
-
* @param action action to be executed if canExecute returns true.
|
|
464
|
-
* @param canExecute predicate to decide whether the command can be ran
|
|
465
|
-
* @param options all possible options that can be passed to the command.
|
|
466
|
-
*/
|
|
467
424
|
async execute(action, canExecute, options) {
|
|
468
425
|
assert.ok(this._isInitialized, "Devices services not initialized!");
|
|
469
426
|
if (this.hasDevices) {
|
|
@@ -472,7 +429,6 @@ class DevicesService extends events_1.EventEmitter {
|
|
|
472
429
|
this.$mobileHelper.isiOSPlatform(this._platform) &&
|
|
473
430
|
this.$options.emulator &&
|
|
474
431
|
!this.isOnlyiOSSimultorRunning()) {
|
|
475
|
-
// Executes the command only on iOS simulator
|
|
476
432
|
const originalCanExecute = canExecute;
|
|
477
433
|
canExecute = (dev) => this.isiOSSimulator(dev) &&
|
|
478
434
|
(!originalCanExecute || !!originalCanExecute(dev));
|
|
@@ -496,11 +452,6 @@ class DevicesService extends events_1.EventEmitter {
|
|
|
496
452
|
}
|
|
497
453
|
}
|
|
498
454
|
}
|
|
499
|
-
/**
|
|
500
|
-
* Starts emulator or simulator if necessary depending on --device or --emulator flags.
|
|
501
|
-
* If no options are passed runs default emulator/simulator if no devices are connected.
|
|
502
|
-
* @param deviceInitOpts mainly contains information about --emulator and --deviceId flags.
|
|
503
|
-
*/
|
|
504
455
|
async startEmulatorIfNecessary(deviceInitOpts) {
|
|
505
456
|
if (deviceInitOpts && deviceInitOpts.deviceId && deviceInitOpts.emulator) {
|
|
506
457
|
this.$errors.fail(`--device and --emulator are incompatible options.
|
|
@@ -509,7 +460,6 @@ class DevicesService extends events_1.EventEmitter {
|
|
|
509
460
|
if (deviceInitOpts &&
|
|
510
461
|
deviceInitOpts.platform &&
|
|
511
462
|
!deviceInitOpts.skipEmulatorStart) {
|
|
512
|
-
// are there any running devices
|
|
513
463
|
this._platform = deviceInitOpts.platform;
|
|
514
464
|
try {
|
|
515
465
|
await this.startLookingForDevices(deviceInitOpts);
|
|
@@ -535,11 +485,9 @@ class DevicesService extends events_1.EventEmitter {
|
|
|
535
485
|
}
|
|
536
486
|
async _startEmulatorIfNecessary(data) {
|
|
537
487
|
const deviceInstances = this.getDeviceInstances();
|
|
538
|
-
//if no --device is passed and no devices are found, the default emulator is started
|
|
539
488
|
if (!data.deviceId && _.isEmpty(deviceInstances)) {
|
|
540
489
|
return this.startEmulatorCore(data);
|
|
541
490
|
}
|
|
542
|
-
//check if --device(value) is running, if it's not or it's not the same as is specified, start with name from --device(value)
|
|
543
491
|
if (data.deviceId) {
|
|
544
492
|
if (!helpers.isNumberWithoutExponent(data.deviceId)) {
|
|
545
493
|
const activeDeviceInstance = _.find(deviceInstances, (device) => device.deviceInfo.identifier === data.deviceId);
|
|
@@ -548,7 +496,6 @@ class DevicesService extends events_1.EventEmitter {
|
|
|
548
496
|
}
|
|
549
497
|
}
|
|
550
498
|
}
|
|
551
|
-
// make sure if the target platform is visionOS we don't try to run it on an already running iOS simulator...
|
|
552
499
|
if (data.platform === this.$devicePlatformsConstants.visionOS &&
|
|
553
500
|
deviceInstances.length) {
|
|
554
501
|
const runningDeviceInstance = deviceInstances.find((device) => device.deviceInfo.platform ===
|
|
@@ -557,7 +504,6 @@ class DevicesService extends events_1.EventEmitter {
|
|
|
557
504
|
return this.startEmulatorCore(data);
|
|
558
505
|
}
|
|
559
506
|
}
|
|
560
|
-
// if only emulator flag is passed and no other emulators are running, start default emulator
|
|
561
507
|
if (data.emulator && deviceInstances.length) {
|
|
562
508
|
const runningDeviceInstance = _.some(deviceInstances, (value) => value.isEmulator);
|
|
563
509
|
if (!runningDeviceInstance) {
|
|
@@ -565,12 +511,6 @@ class DevicesService extends events_1.EventEmitter {
|
|
|
565
511
|
}
|
|
566
512
|
}
|
|
567
513
|
}
|
|
568
|
-
/**
|
|
569
|
-
* Takes care of gathering information about all running devices.
|
|
570
|
-
* Sets "_isInitialized" to true after infomation is present.
|
|
571
|
-
* Method expects running devices.
|
|
572
|
-
* @param data mainly contains information about --emulator and --deviceId flags.
|
|
573
|
-
*/
|
|
574
514
|
async initialize(data) {
|
|
575
515
|
if (!this._deviceInitializePromise) {
|
|
576
516
|
this._deviceInitializePromise = this.initializeCore(data);
|
|
@@ -579,7 +519,6 @@ class DevicesService extends events_1.EventEmitter {
|
|
|
579
519
|
await this._deviceInitializePromise;
|
|
580
520
|
}
|
|
581
521
|
catch (err) {
|
|
582
|
-
// In case the initalization fails, we want to allow calling `initlialize` again with other arguments for example, so remove the cached promise value.
|
|
583
522
|
this.$logger.trace(`Error while initializing devicesService: ${err}`);
|
|
584
523
|
this._deviceInitializePromise = null;
|
|
585
524
|
throw err;
|
|
@@ -603,7 +542,6 @@ class DevicesService extends events_1.EventEmitter {
|
|
|
603
542
|
deviceInitOpts = deviceInitOpts || {};
|
|
604
543
|
this._data = deviceInitOpts;
|
|
605
544
|
if (!deviceInitOpts.skipEmulatorStart) {
|
|
606
|
-
// TODO: Remove from here as it calls startLookingForDevices, so we double the calls to specific device detection services
|
|
607
545
|
await this.startEmulatorIfNecessary(deviceInitOpts);
|
|
608
546
|
}
|
|
609
547
|
const platform = deviceInitOpts.platform;
|
|
@@ -634,7 +572,6 @@ class DevicesService extends events_1.EventEmitter {
|
|
|
634
572
|
await this.startLookingForDevices(deviceLookingOptions);
|
|
635
573
|
}
|
|
636
574
|
else {
|
|
637
|
-
// platform and deviceId are not specified
|
|
638
575
|
if (deviceInitOpts.skipInferPlatform) {
|
|
639
576
|
if (deviceInitOpts.skipDeviceDetectionInterval) {
|
|
640
577
|
await this.detectCurrentlyAttachedDevices(deviceLookingOptions);
|
|
@@ -742,11 +679,6 @@ class DevicesService extends events_1.EventEmitter {
|
|
|
742
679
|
}
|
|
743
680
|
return null;
|
|
744
681
|
}
|
|
745
|
-
/**
|
|
746
|
-
* Starts emulator for platform and makes sure started devices/emulators/simulators are in _devices array before finishing.
|
|
747
|
-
* @param platform (optional) platform to start emulator/simulator for
|
|
748
|
-
* @param emulatorIdOrName (optional) emulator/simulator image identifier or name
|
|
749
|
-
*/
|
|
750
682
|
async startEmulatorCore(deviceInitOpts = {}) {
|
|
751
683
|
const { deviceId } = deviceInitOpts;
|
|
752
684
|
const platform = deviceInitOpts.platform || this._platform;
|
|
@@ -870,4 +802,3 @@ __decorate([
|
|
|
870
802
|
(0, decorators_1.exported)("devicesService")
|
|
871
803
|
], DevicesService.prototype, "getDebuggableViews", null);
|
|
872
804
|
yok_1.injector.register("devicesService", DevicesService);
|
|
873
|
-
//# sourceMappingURL=devices-service.js.map
|
|
@@ -22,7 +22,6 @@ class IOSDeviceDiscovery extends device_discovery_1.DeviceDiscovery {
|
|
|
22
22
|
return;
|
|
23
23
|
}
|
|
24
24
|
if (this.$mobileHelper.isvisionOSPlatform(options.platform)) {
|
|
25
|
-
// look for ios devices - same logic.
|
|
26
25
|
options.platform = this.$devicePlatformsConstants.iOS;
|
|
27
26
|
}
|
|
28
27
|
await this.$iosDeviceOperations.startLookingForDevices((deviceInfo) => {
|
|
@@ -51,4 +50,3 @@ class IOSDeviceDiscovery extends device_discovery_1.DeviceDiscovery {
|
|
|
51
50
|
}
|
|
52
51
|
exports.IOSDeviceDiscovery = IOSDeviceDiscovery;
|
|
53
52
|
yok_1.injector.register("iOSDeviceDiscovery", IOSDeviceDiscovery);
|
|
54
|
-
//# sourceMappingURL=ios-device-discovery.js.map
|
|
@@ -28,14 +28,12 @@ class IOSSimulatorDiscovery extends device_discovery_1.DeviceDiscovery {
|
|
|
28
28
|
async checkForDevices() {
|
|
29
29
|
if (this.$hostInfo.isDarwin) {
|
|
30
30
|
const currentSimulators = await this.$iOSSimResolver.iOSSim.getRunningSimulators();
|
|
31
|
-
// Remove old simulators
|
|
32
31
|
_(this.cachedSimulators)
|
|
33
32
|
.reject((s) => _.some(currentSimulators, (simulator) => simulator &&
|
|
34
33
|
s &&
|
|
35
34
|
simulator.id === s.id &&
|
|
36
35
|
simulator.state === s.state))
|
|
37
36
|
.each((s) => this.deleteAndRemoveDevice(s));
|
|
38
|
-
// Add new simulators
|
|
39
37
|
_(currentSimulators)
|
|
40
38
|
.reject((s) => _.some(this.cachedSimulators, (simulator) => simulator &&
|
|
41
39
|
s &&
|
|
@@ -94,4 +92,3 @@ class IOSSimulatorDiscovery extends device_discovery_1.DeviceDiscovery {
|
|
|
94
92
|
}
|
|
95
93
|
exports.IOSSimulatorDiscovery = IOSSimulatorDiscovery;
|
|
96
94
|
yok_1.injector.register("iOSSimulatorDiscovery", IOSSimulatorDiscovery);
|
|
97
|
-
//# sourceMappingURL=ios-simulator-discovery.js.map
|
|
@@ -53,4 +53,3 @@ class Wp8EmulatorServices {
|
|
|
53
53
|
Wp8EmulatorServices.WP8_LAUNCHER = "XapDeployCmd.exe";
|
|
54
54
|
Wp8EmulatorServices.WP8_LAUNCHER_PATH = "Microsoft SDKs\\Windows Phone\\v8.0\\Tools\\XAP Deployment";
|
|
55
55
|
yok_1.injector.register("wp8EmulatorServices", Wp8EmulatorServices);
|
|
56
|
-
//# sourceMappingURL=wp8-emulator-services.js.map
|
package/lib/common/opener.js
CHANGED
package/lib/common/os-info.js
CHANGED
package/lib/common/prompter.js
CHANGED
|
@@ -26,7 +26,6 @@ class Prompter {
|
|
|
26
26
|
else {
|
|
27
27
|
const result = {};
|
|
28
28
|
_.each(questions, (s) => {
|
|
29
|
-
// Curly brackets needed because s.default() may return false and break the loop
|
|
30
29
|
result[s.name] = s.default();
|
|
31
30
|
});
|
|
32
31
|
return result;
|
|
@@ -123,9 +122,7 @@ class Prompter {
|
|
|
123
122
|
}
|
|
124
123
|
muteStdout() {
|
|
125
124
|
if (helpers.isInteractive()) {
|
|
126
|
-
process.stdin.setRawMode(true);
|
|
127
|
-
// We need to create mute-stream and to pass it as output to ctrlcReader
|
|
128
|
-
// This will prevent the prompter to show the user's text twice on the console
|
|
125
|
+
process.stdin.setRawMode(true);
|
|
129
126
|
this.muteStreamInstance = new MuteStream();
|
|
130
127
|
this.muteStreamInstance.pipe(process.stdout);
|
|
131
128
|
this.muteStreamInstance.mute();
|
|
@@ -134,7 +131,6 @@ class Prompter {
|
|
|
134
131
|
output: this.muteStreamInstance,
|
|
135
132
|
});
|
|
136
133
|
this.ctrlcReader.on("SIGINT", () => {
|
|
137
|
-
// enable terminal cursor
|
|
138
134
|
process.stdout.write("\x1B[?25h");
|
|
139
135
|
process.exit();
|
|
140
136
|
});
|
|
@@ -144,7 +140,6 @@ class Prompter {
|
|
|
144
140
|
if (helpers.isInteractive()) {
|
|
145
141
|
process.stdin.setRawMode(false);
|
|
146
142
|
if (this.muteStreamInstance) {
|
|
147
|
-
// We need to clean the event listeners from the process.stdout because the MuteStream.pipe function calls the pipe function of the Node js Stream which adds event listeners and this can cause memory leak if we display more than ~10 prompts.
|
|
148
143
|
this.cleanEventListeners(process.stdout);
|
|
149
144
|
this.muteStreamInstance.unmute();
|
|
150
145
|
this.muteStreamInstance = null;
|
|
@@ -153,8 +148,6 @@ class Prompter {
|
|
|
153
148
|
}
|
|
154
149
|
}
|
|
155
150
|
cleanEventListeners(stream) {
|
|
156
|
-
// The events names and listeners names can be found here https://github.com/nodejs/node/blob/master/lib/stream.js
|
|
157
|
-
// Which event cause memory leak can be tested with stream.listeners("event-name") and if the listeners count keeps increasing with each prompt we need to remove the listener.
|
|
158
151
|
const memoryLeakEvents = [
|
|
159
152
|
{
|
|
160
153
|
eventName: "close",
|
|
@@ -181,4 +174,3 @@ class Prompter {
|
|
|
181
174
|
}
|
|
182
175
|
exports.Prompter = Prompter;
|
|
183
176
|
yok_1.injector.register("prompter", Prompter);
|
|
184
|
-
//# sourceMappingURL=prompter.js.map
|
package/lib/common/queue.js
CHANGED
|
@@ -27,15 +27,12 @@ class AutoCompletionService {
|
|
|
27
27
|
get shellProfiles() {
|
|
28
28
|
return [
|
|
29
29
|
this.getHomePath(".bashrc"),
|
|
30
|
-
this.getHomePath(".zshrc"),
|
|
30
|
+
this.getHomePath(".zshrc"),
|
|
31
31
|
];
|
|
32
32
|
}
|
|
33
33
|
get cliRunCommandsFile() {
|
|
34
34
|
let cliRunCommandsFile = this.getHomePath(util.format(".%src", this.$staticConfig.CLIENT_NAME.toLowerCase()));
|
|
35
35
|
if (this.$hostInfo.isWindows) {
|
|
36
|
-
// on Windows bash, file is incorrectly written as C:\Users\<username>, which leads to errors when trying to execute the script:
|
|
37
|
-
// $ source ~/.bashrc
|
|
38
|
-
// sh.exe": C:Usersusername.appbuilderrc: No such file or directory
|
|
39
36
|
cliRunCommandsFile = cliRunCommandsFile.replace(/\\/g, "/");
|
|
40
37
|
}
|
|
41
38
|
return cliRunCommandsFile;
|
|
@@ -50,9 +47,7 @@ class AutoCompletionService {
|
|
|
50
47
|
return new RegExp(util.format("%s[\\s\\S]*%s", AutoCompletionService.GENERATED_TABTAB_COMPLETION_START, AutoCompletionService.GENERATED_TABTAB_COMPLETION_END));
|
|
51
48
|
}
|
|
52
49
|
removeObsoleteAutoCompletion() {
|
|
53
|
-
// In previous releases we were writing directly in .bash_profile, .bashrc, .zshrc and .profile - remove this old code
|
|
54
50
|
const shellProfilesToBeCleared = this.shellProfiles;
|
|
55
|
-
// Add .profile only here as we do not want new autocompletion in this file, but we have to remove our old code from it.
|
|
56
51
|
shellProfilesToBeCleared.push(this.getHomePath(".profile"));
|
|
57
52
|
shellProfilesToBeCleared.forEach((file) => {
|
|
58
53
|
try {
|
|
@@ -105,7 +100,6 @@ class AutoCompletionService {
|
|
|
105
100
|
this.isNewAutoCompletionEnabledInFile(filePath) ||
|
|
106
101
|
this.isObsoleteAutoCompletionEnabledInFile(filePath);
|
|
107
102
|
if (!result) {
|
|
108
|
-
// break each
|
|
109
103
|
return false;
|
|
110
104
|
}
|
|
111
105
|
});
|
|
@@ -131,7 +125,6 @@ class AutoCompletionService {
|
|
|
131
125
|
_.each(this.shellProfiles, (shellProfile) => {
|
|
132
126
|
result = this.isObsoleteAutoCompletionEnabledInFile(shellProfile);
|
|
133
127
|
if (!result) {
|
|
134
|
-
// break each
|
|
135
128
|
return false;
|
|
136
129
|
}
|
|
137
130
|
});
|
|
@@ -170,8 +163,6 @@ class AutoCompletionService {
|
|
|
170
163
|
}
|
|
171
164
|
catch (err) {
|
|
172
165
|
this.$logger.info("Unable to update %s. Command-line completion might not work.", fileName);
|
|
173
|
-
// When npm is installed with sudo, in some cases the installation cannot write to shell profiles
|
|
174
|
-
// Advise the user how to enable autocompletion after the installation is completed.
|
|
175
166
|
if ((err.code === "EPERM" || err.code === "EACCES") &&
|
|
176
167
|
!this.$hostInfo.isWindows &&
|
|
177
168
|
process.env.SUDO_USER) {
|
|
@@ -192,7 +183,6 @@ class AutoCompletionService {
|
|
|
192
183
|
}
|
|
193
184
|
}
|
|
194
185
|
catch (err) {
|
|
195
|
-
// If file does not exist, autocompletion was not working for it, so ignore this error.
|
|
196
186
|
if (err.code !== "ENOENT") {
|
|
197
187
|
this.$logger.info("Failed to update %s. Auto-completion may still work or work incorrectly. ", fileName);
|
|
198
188
|
this.$logger.info(err);
|
|
@@ -224,7 +214,6 @@ class AutoCompletionService {
|
|
|
224
214
|
this.$fs.writeFile(filePath, newText);
|
|
225
215
|
}
|
|
226
216
|
}
|
|
227
|
-
// The generated seems to be inconsistent in it's start/end markers so adding our own.
|
|
228
217
|
this.$fs.appendFile(filePath, `\n${AutoCompletionService.GENERATED_TABTAB_COMPLETION_START}\n`);
|
|
229
218
|
await this.$childProcess.exec(`"${process.argv[0]}" "${pathToExecutableFile}" completion_generate_script >> "${filePath}"`);
|
|
230
219
|
this.$fs.appendFile(filePath, this.completionAliasDefinition);
|
|
@@ -261,4 +250,3 @@ __decorate([
|
|
|
261
250
|
(0, decorators_1.cache)()
|
|
262
251
|
], AutoCompletionService.prototype, "completionShellScriptContent", null);
|
|
263
252
|
yok_1.injector.register("autoCompletionService", AutoCompletionService);
|
|
264
|
-
//# sourceMappingURL=auto-completion-service.js.map
|
|
@@ -28,7 +28,7 @@ class CancellationService {
|
|
|
28
28
|
.watch(triggerFile, { ignoreInitial: true })
|
|
29
29
|
.on("unlink", (filePath) => {
|
|
30
30
|
this.$logger.info(`Exiting process as the file ${filePath} has been deleted. Probably reinstalling CLI while there's a working instance.`);
|
|
31
|
-
process.exit(132
|
|
31
|
+
process.exit(132);
|
|
32
32
|
});
|
|
33
33
|
if (watcher) {
|
|
34
34
|
this.watches[name] = watcher;
|
|
@@ -54,4 +54,3 @@ class CancellationService {
|
|
|
54
54
|
}
|
|
55
55
|
}
|
|
56
56
|
yok_1.injector.register("cancellation", CancellationService);
|
|
57
|
-
//# sourceMappingURL=cancellation.js.map
|
|
@@ -38,11 +38,11 @@ class CommandsService {
|
|
|
38
38
|
if (!this.$staticConfig.disableAnalytics &&
|
|
39
39
|
!command.disableAnalytics &&
|
|
40
40
|
!this.$options.disableAnalytics) {
|
|
41
|
-
const analyticsService = this.$injector.resolve("analyticsService");
|
|
41
|
+
const analyticsService = this.$injector.resolve("analyticsService");
|
|
42
42
|
await analyticsService.checkConsent();
|
|
43
43
|
const beautifiedCommandName = this.beautifyCommandName(commandName).replace(/\|/g, " ");
|
|
44
44
|
const googleAnalyticsPageData = {
|
|
45
|
-
googleAnalyticsDataType: "pageview"
|
|
45
|
+
googleAnalyticsDataType: "pageview",
|
|
46
46
|
path: beautifiedCommandName,
|
|
47
47
|
title: beautifiedCommandName,
|
|
48
48
|
};
|
|
@@ -52,11 +52,10 @@ class CommandsService {
|
|
|
52
52
|
const shouldExecuteHooks = !this.$staticConfig.disableCommandHooks &&
|
|
53
53
|
(command.enableHooks === undefined || command.enableHooks === true);
|
|
54
54
|
if (shouldExecuteHooks) {
|
|
55
|
-
// Handle correctly hierarchical commands
|
|
56
55
|
const hierarchicalCommandName = this.$injector.buildHierarchicalCommand(commandName, commandArguments);
|
|
57
56
|
if (hierarchicalCommandName) {
|
|
58
|
-
commandName = helpers.stringReplaceAll(hierarchicalCommandName.commandName, "|*"
|
|
59
|
-
commandName = helpers.stringReplaceAll(commandName, "|"
|
|
57
|
+
commandName = helpers.stringReplaceAll(hierarchicalCommandName.commandName, "|*", "-");
|
|
58
|
+
commandName = helpers.stringReplaceAll(commandName, "|", "-");
|
|
60
59
|
}
|
|
61
60
|
await this.$hooksService.executeBeforeHooks(commandName);
|
|
62
61
|
}
|
|
@@ -101,7 +100,6 @@ class CommandsService {
|
|
|
101
100
|
await this.executeCommandAction(commandName, commandArguments, this.executeCommandUnchecked);
|
|
102
101
|
}
|
|
103
102
|
else {
|
|
104
|
-
// If canExecuteCommand returns false, the command cannot be executed or there's no such command at all.
|
|
105
103
|
const command = this.$injector.resolveCommand(commandName);
|
|
106
104
|
if (command) {
|
|
107
105
|
let commandWithArgs = commandName;
|
|
@@ -117,15 +115,12 @@ class CommandsService {
|
|
|
117
115
|
const command = this.$injector.resolveCommand(commandName);
|
|
118
116
|
const beautifiedName = helpers.stringReplaceAll(commandName, "|", " ");
|
|
119
117
|
if (command) {
|
|
120
|
-
// Verify command is enabled
|
|
121
118
|
if (command.isDisabled) {
|
|
122
119
|
this.$errors.fail("This command is not applicable to your environment.");
|
|
123
120
|
}
|
|
124
|
-
// If command wants to handle canExecute logic on its own.
|
|
125
121
|
if (command.canExecute) {
|
|
126
122
|
return await command.canExecute(commandArguments);
|
|
127
123
|
}
|
|
128
|
-
// First part of hierarchical commands should be validated in specific way.
|
|
129
124
|
if (await this.$injector.isValidHierarchicalCommand(commandName, commandArguments)) {
|
|
130
125
|
return true;
|
|
131
126
|
}
|
|
@@ -137,8 +132,8 @@ class CommandsService {
|
|
|
137
132
|
}
|
|
138
133
|
const commandInfo = {
|
|
139
134
|
inputStrings: [commandName, ...commandArguments],
|
|
140
|
-
commandDelimiter: "|"
|
|
141
|
-
defaultCommandDelimiter: "|*"
|
|
135
|
+
commandDelimiter: "|",
|
|
136
|
+
defaultCommandDelimiter: "|*",
|
|
142
137
|
};
|
|
143
138
|
const extensionData = await this.$extensibilityService.getExtensionNameWhereCommandIsRegistered(commandInfo);
|
|
144
139
|
if (extensionData) {
|
|
@@ -154,13 +149,11 @@ class CommandsService {
|
|
|
154
149
|
async validateMandatoryParams(commandArguments, mandatoryParams) {
|
|
155
150
|
const commandArgsHelper = new CommandArgumentsValidationHelper(true, commandArguments);
|
|
156
151
|
if (mandatoryParams.length > 0) {
|
|
157
|
-
// If command has more mandatory params than the passed ones, we shouldn't execute it
|
|
158
152
|
if (mandatoryParams.length > commandArguments.length) {
|
|
159
153
|
const customErrorMessages = _.map(mandatoryParams, (mp) => mp.errorMessage);
|
|
160
154
|
customErrorMessages.splice(0, 0, "You need to provide all the required parameters.");
|
|
161
155
|
this.$errors.failWithHelp(customErrorMessages.join(os_1.EOL));
|
|
162
156
|
}
|
|
163
|
-
// If we reach here, the commandArguments are at least as much as mandatoryParams. Now we should verify that we have each of them.
|
|
164
157
|
for (let mandatoryParamIndex = 0; mandatoryParamIndex < mandatoryParams.length; ++mandatoryParamIndex) {
|
|
165
158
|
const mandatoryParam = mandatoryParams[mandatoryParamIndex];
|
|
166
159
|
let argument = null;
|
|
@@ -187,14 +180,12 @@ class CommandsService {
|
|
|
187
180
|
if (!commandArgsHelper.isValid) {
|
|
188
181
|
return false;
|
|
189
182
|
}
|
|
190
|
-
// Command doesn't have any allowedParameters
|
|
191
183
|
if (!command.allowedParameters || command.allowedParameters.length === 0) {
|
|
192
184
|
if (commandArguments.length > 0) {
|
|
193
185
|
this.$errors.failWithHelp("This command doesn't accept parameters.");
|
|
194
186
|
}
|
|
195
187
|
}
|
|
196
188
|
else {
|
|
197
|
-
// Exclude mandatory params, we've already checked them
|
|
198
189
|
const unverifiedAllowedParams = command.allowedParameters.filter((param) => !param.mandatory);
|
|
199
190
|
for (let remainingArgsIndex = 0; remainingArgsIndex < commandArgsHelper.remainingArguments.length; ++remainingArgsIndex) {
|
|
200
191
|
const argument = commandArgsHelper.remainingArguments[remainingArgsIndex];
|
|
@@ -208,7 +199,6 @@ class CommandsService {
|
|
|
208
199
|
}
|
|
209
200
|
if (parameter) {
|
|
210
201
|
const index = unverifiedAllowedParams.indexOf(parameter);
|
|
211
|
-
// Remove the matched parameter from unverifiedAllowedParams collection, so it will not be used to verify another argument.
|
|
212
202
|
unverifiedAllowedParams.splice(index, 1);
|
|
213
203
|
}
|
|
214
204
|
else {
|
|
@@ -253,4 +243,3 @@ class CommandsService {
|
|
|
253
243
|
}
|
|
254
244
|
exports.CommandsService = CommandsService;
|
|
255
245
|
yok_1.injector.register("commandsService", CommandsService);
|
|
256
|
-
//# sourceMappingURL=commands-service.js.map
|
|
@@ -42,7 +42,6 @@ class HelpService {
|
|
|
42
42
|
this.$logger.trace("Opening help for command '%s'. FileName is '%s'.", commandName, htmlPage);
|
|
43
43
|
this.$fs.ensureDirectoryExists(this.pathToHtmlPages);
|
|
44
44
|
if (!this.tryOpeningSelectedPage(htmlPage)) {
|
|
45
|
-
// HTML pages may have been skipped on post-install, lets generate them.
|
|
46
45
|
this.$logger.trace("Required HTML file '%s' is missing. Let's try generating HTML files and see if we'll find it.", htmlPage);
|
|
47
46
|
await this.generateHtmlPages();
|
|
48
47
|
if (!this.tryOpeningSelectedPage(htmlPage)) {
|
|
@@ -99,11 +98,6 @@ class HelpService {
|
|
|
99
98
|
const help = await this.getCommandLineHelpForCommand(commandData);
|
|
100
99
|
this.$logger.printMarkdown(help);
|
|
101
100
|
}
|
|
102
|
-
/**
|
|
103
|
-
* Gets the help content for a specific command that should be shown on the terminal.
|
|
104
|
-
* @param {string} commandName Name of the command for which to read the help.
|
|
105
|
-
* @returns {Promise<string>} Help content of the command parsed with all terminal rules applied (stripped content that should be shown only for html help).
|
|
106
|
-
*/
|
|
107
101
|
async getCommandLineHelpForCommand(commandData) {
|
|
108
102
|
const helpText = await this.readMdFileForCommand(commandData);
|
|
109
103
|
const commandLineHelp = (await this.$microTemplateService.parseContent(helpText, { isHtml: false }))
|
|
@@ -115,7 +109,6 @@ class HelpService {
|
|
|
115
109
|
.replace(HelpService.NEW_LINE_REGEX, os_1.EOL);
|
|
116
110
|
return commandLineHelp;
|
|
117
111
|
}
|
|
118
|
-
// This method should return Promise in order to generate all html pages simultaneously.
|
|
119
112
|
async createHtmlPage(htmlPageGenerationData) {
|
|
120
113
|
const { basicHtmlPage, pathToMdFile, pathToMdPages, pathToHtmlPages, extensionName, } = htmlPageGenerationData;
|
|
121
114
|
const mdFileName = path.basename(pathToMdFile);
|
|
@@ -162,8 +155,8 @@ class HelpService {
|
|
|
162
155
|
const commandName = commandData.commandName;
|
|
163
156
|
const commandInfo = {
|
|
164
157
|
inputStrings: [commandName, ...commandData.commandArguments],
|
|
165
|
-
commandDelimiter: "|"
|
|
166
|
-
defaultCommandDelimiter: "|*"
|
|
158
|
+
commandDelimiter: "|",
|
|
159
|
+
defaultCommandDelimiter: "|*",
|
|
167
160
|
};
|
|
168
161
|
const extensionData = await this.$extensibilityService.getExtensionNameWhereCommandIsRegistered(commandInfo);
|
|
169
162
|
if (extensionData) {
|
|
@@ -230,6 +223,5 @@ HelpService.RELATIVE_PATH_TO_INDEX_REGEX = /@RELATIVE_PATH_TO_INDEX@/g;
|
|
|
230
223
|
HelpService.EXTENSION_NAME_REGEX = /@EXTENSION_NAME@/g;
|
|
231
224
|
HelpService.MARKDOWN_LINK_REGEX = /\[([\w \-\`\<\>\*\:\\]+?)\]\([\s\S]+?\)/g;
|
|
232
225
|
HelpService.SPAN_REGEX = /([\s\S]*?)(?:\r?\n)?<span.*?>([\s\S]*?)<\/span>(?:\r?\n)*/g;
|
|
233
|
-
HelpService.NEW_LINE_REGEX = /<\/?\s*?br\s*?\/?>/g;
|
|
226
|
+
HelpService.NEW_LINE_REGEX = /<\/?\s*?br\s*?\/?>/g;
|
|
234
227
|
yok_1.injector.register("helpService", HelpService);
|
|
235
|
-
//# sourceMappingURL=help-service.js.map
|
|
@@ -52,7 +52,6 @@ class HooksService {
|
|
|
52
52
|
}
|
|
53
53
|
}
|
|
54
54
|
static formatHookName(commandName) {
|
|
55
|
-
// Remove everything after | (including the pipe)
|
|
56
55
|
return commandName.replace(/\|[\s\S]*$/, "");
|
|
57
56
|
}
|
|
58
57
|
executeBeforeHooks(commandName, hookArguments) {
|
|
@@ -132,11 +131,6 @@ class HooksService {
|
|
|
132
131
|
this.$logger.warn(`${hook.fullPath} will NOT be executed because it has invalid arguments - ${color_1.color.grey(invalidArguments.join(", "))}.`);
|
|
133
132
|
return;
|
|
134
133
|
}
|
|
135
|
-
// HACK for backwards compatibility:
|
|
136
|
-
// In case $projectData wasn't resolved by the time we got here (most likely we got here without running a command but through a service directly)
|
|
137
|
-
// then it is probably passed as a hookArg
|
|
138
|
-
// if that is the case then pass it directly to the hook instead of trying to resolve $projectData via injector
|
|
139
|
-
// This helps make hooks stateless
|
|
140
134
|
const projectDataHookArg = hookArguments["hookArgs"] && hookArguments["hookArgs"]["projectData"];
|
|
141
135
|
if (projectDataHookArg) {
|
|
142
136
|
hookArguments["projectData"] = hookArguments["$projectData"] =
|
|
@@ -155,7 +149,6 @@ class HooksService {
|
|
|
155
149
|
this.$logger.warn(err.message || err);
|
|
156
150
|
}
|
|
157
151
|
else {
|
|
158
|
-
// Print the actual error with its callstack, so it is easy to find out which hooks is causing troubles.
|
|
159
152
|
this.$logger.error(err);
|
|
160
153
|
throw err || new Error(`Failed to execute hook: ${hook.fullPath}.`);
|
|
161
154
|
}
|
|
@@ -260,7 +253,6 @@ class HooksService {
|
|
|
260
253
|
interpreter = sheBangMatch[1];
|
|
261
254
|
}
|
|
262
255
|
if (interpreter) {
|
|
263
|
-
// Likewise, make /usr/bin/bash work like "bash".
|
|
264
256
|
shMatch = interpreter.match(/bin\/((?:ba)?sh)$/);
|
|
265
257
|
}
|
|
266
258
|
if (shMatch) {
|
|
@@ -301,7 +293,6 @@ class HooksService {
|
|
|
301
293
|
}
|
|
302
294
|
validateHookArguments(hookConstructor, hookFullPath) {
|
|
303
295
|
const invalidArguments = [];
|
|
304
|
-
// We need to annotate the hook in order to have the arguments of the constructor.
|
|
305
296
|
(0, helpers_1.annotate)(hookConstructor);
|
|
306
297
|
_.each(hookConstructor.$inject.args, (argument) => {
|
|
307
298
|
try {
|
|
@@ -322,12 +313,8 @@ HooksService.HOOKS_DIRECTORY_NAME = "hooks";
|
|
|
322
313
|
__decorate([
|
|
323
314
|
(0, decorators_1.memoize)({
|
|
324
315
|
shouldCache() {
|
|
325
|
-
// only cache if we have hooks directories, the only case to
|
|
326
|
-
// not have hooks directories is when the project dir is
|
|
327
|
-
// not set yet, ie. when creating a project.
|
|
328
316
|
return !!this.hooksDirectories.length;
|
|
329
317
|
},
|
|
330
318
|
})
|
|
331
319
|
], HooksService.prototype, "initialize", null);
|
|
332
320
|
yok_1.injector.register("hooksService", HooksService);
|
|
333
|
-
//# sourceMappingURL=hooks-service.js.map
|