nativescript 9.1.0-alpha.14 → 9.1.0-alpha.16
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/docs/build-jekyll-md.sh +1 -1
- package/docs/man_pages/config/config-set.md +2 -0
- 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 +3 -3
- package/lib/commands/clean.js +1 -22
- package/lib/commands/command-base.js +0 -1
- package/lib/commands/config.js +0 -5
- package/lib/commands/create-project.js +0 -6
- package/lib/commands/debug.js +2 -6
- package/lib/commands/deploy.js +3 -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/hooks/common.js +1 -2
- package/lib/commands/hooks/hooks-lock.js +0 -1
- package/lib/commands/hooks/hooks.js +0 -1
- 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 +5 -5
- 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 +3 -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 +0 -18
- 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 +3 -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 +14 -12
- package/lib/common/declarations.d.ts +37 -117
- package/lib/common/decorators.js +0 -48
- package/lib/common/definitions/key-commands.js +8 -0
- package/lib/common/dispatchers.js +1 -10
- package/lib/common/enums.js +42 -0
- package/lib/common/errors.js +4 -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 -9
- 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/analytics/google-analytics-custom-dimensions.js +13 -0
- package/lib/common/services/auto-completion-service.js +1 -13
- package/lib/common/services/cancellation.js +2 -2
- package/lib/common/services/commands-service.js +8 -17
- package/lib/common/services/help-service.js +4 -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 +2 -8
- package/lib/common/yok.js +12 -32
- package/lib/config.js +1 -22
- package/lib/constants-provider.js +0 -1
- package/lib/constants.js +54 -58
- 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 +2 -9
- package/lib/controllers/prepare-controller.js +8 -24
- package/lib/controllers/run-controller.js +1 -81
- 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/definitions/project.d.ts +1 -6
- package/lib/definitions/system-warnings.js +8 -0
- package/lib/detached-processes/cleanup-js-subprocess.js +3 -8
- package/lib/detached-processes/cleanup-process.js +15 -18
- package/lib/detached-processes/detached-process-enums.js +24 -0
- package/lib/detached-processes/file-log-service.js +2 -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 +3 -4
- package/lib/helpers/livesync-command-helper.js +2 -4
- package/lib/helpers/network-connectivity-validator.js +0 -1
- package/lib/helpers/options-track-helper.js +4 -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 +3 -3
- package/lib/key-commands/index.js +5 -5
- package/lib/nativescript-cli-lib-bootstrap.js +0 -4
- package/lib/nativescript-cli-lib.js +0 -1
- package/lib/nativescript-cli.js +2 -11
- 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 +121 -145
- 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 +8 -10
- package/lib/services/analytics/analytics-broker.js +2 -2
- package/lib/services/analytics/analytics-service.js +29 -29
- package/lib/services/analytics/google-analytics-provider.js +16 -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 +13 -11
- 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 +26 -157
- package/lib/services/bundler/bundler.js +0 -1
- package/lib/services/cleanup-service.js +10 -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 +2 -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 +10 -120
- package/lib/services/ios/xcodebuild-args-service.js +0 -29
- package/lib/services/ios/xcodebuild-command-service.js +0 -3
- 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 +5 -6
- package/lib/services/ios-project-service.js +7 -133
- package/lib/services/ios-provision-service.js +0 -3
- package/lib/services/ios-watch-app-service.js +10 -60
- 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 +0 -4
- 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 -55
- 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 +10 -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 +2 -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 +3 -5
- package/lib/services/platform-environment-requirements.js +4 -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 +3 -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 +5 -6
- package/lib/services/watch-ignore-list-service.js +0 -1
- package/lib/services/xcconfig-service.js +45 -12
- package/lib/services/xcproj-service.js +0 -1
- package/lib/shared-event-bus.js +0 -6
- package/lib/sys-info.js +2 -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 +9 -20
- package/lib/.d.ts +0 -504
- package/lib/common/definitions/key-commands.d.ts +0 -62
- package/lib/common/services/analytics/google-analytics-custom-dimensions.d.ts +0 -16
- package/lib/definitions/system-warnings.d.ts +0 -4
- package/lib/detached-processes/detached-process-enums.d.ts +0 -70
- package/lib/services/analytics/google-analytics-cross-client-custom-dimensions.d.ts +0 -6
|
@@ -16,11 +16,9 @@ const decorators_1 = require("../../common/decorators");
|
|
|
16
16
|
const constants_1 = require("../../constants");
|
|
17
17
|
const yok_1 = require("../../common/yok");
|
|
18
18
|
const package_path_helper_1 = require("../../helpers/package-path-helper");
|
|
19
|
-
/* for specific bundling debugging separate from logger */
|
|
20
19
|
const debugLog = false;
|
|
21
20
|
class BundlerCompilerService extends events_1.EventEmitter {
|
|
22
|
-
constructor($options, $errors, $childProcess, $fs, $hooksService, $hostInfo, $logger, $mobileHelper, $cleanupService, $packageManager, $packageInstallationManager,
|
|
23
|
-
$projectConfigService) {
|
|
21
|
+
constructor($options, $errors, $childProcess, $fs, $hooksService, $hostInfo, $logger, $mobileHelper, $cleanupService, $packageManager, $packageInstallationManager, $projectConfigService) {
|
|
24
22
|
super();
|
|
25
23
|
this.$options = $options;
|
|
26
24
|
this.$errors = $errors;
|
|
@@ -35,15 +33,18 @@ class BundlerCompilerService extends events_1.EventEmitter {
|
|
|
35
33
|
this.$packageInstallationManager = $packageInstallationManager;
|
|
36
34
|
this.$projectConfigService = $projectConfigService;
|
|
37
35
|
this.bundlerProcesses = {};
|
|
38
|
-
// Vite-only: the long-lived `vite serve` dev server the device fetches
|
|
39
|
-
// modules and HMR updates from. Keyed by platform, managed by this CLI
|
|
40
|
-
// so users no longer need a separate `concurrently`/`wait-on` process.
|
|
41
36
|
this.viteServeProcesses = {};
|
|
42
37
|
this.expectedHashes = {};
|
|
43
38
|
}
|
|
44
39
|
getViteDistOutputPath(projectDir) {
|
|
45
40
|
return path.join(projectDir, process.env.NS_VITE_DIST_DIR || constants_1.VITE_DIST_FOLDER_NAME);
|
|
46
41
|
}
|
|
42
|
+
getViteBuildPaths(platformData, projectData) {
|
|
43
|
+
return {
|
|
44
|
+
distOutput: this.getViteDistOutputPath(projectData.projectDir),
|
|
45
|
+
destDir: path.join(platformData.appDestinationDirectoryPath, this.$options.hostProjectModuleName),
|
|
46
|
+
};
|
|
47
|
+
}
|
|
47
48
|
async compileWithWatch(platformData, projectData, prepareData) {
|
|
48
49
|
return new Promise(async (resolve, reject) => {
|
|
49
50
|
if (this.bundlerProcesses[platformData.platformNameLowerCase]) {
|
|
@@ -52,22 +53,9 @@ class BundlerCompilerService extends events_1.EventEmitter {
|
|
|
52
53
|
}
|
|
53
54
|
let isFirstBundlerWatchCompilation = true;
|
|
54
55
|
prepareData.watch = true;
|
|
55
|
-
// Bring up the Vite HMR dev server the device fetches modules /
|
|
56
|
-
// HMR updates from. No-op unless bundler is vite + hmr + watch.
|
|
57
|
-
// Fired in parallel with the build watcher; both child processes
|
|
58
|
-
// inherit the adb-reverse env the run-controller set before
|
|
59
|
-
// prepare, so neither one spawns adb on its own. Not awaited HERE
|
|
60
|
-
// — but the first-build resolution below gates on it, because the
|
|
61
|
-
// app is (re)started as soon as `compileWithWatch` resolves and its
|
|
62
|
-
// very first HTTP module fetch dies on connection-refused if the
|
|
63
|
-
// server hasn't bound yet (a cold `vite serve` config load + vendor
|
|
64
|
-
// prebuild competes with this build watcher for CPU and can take
|
|
65
|
-
// 10-30s). Running both in parallel keeps the happy-path wall time
|
|
66
|
-
// at max(first build, server bind) instead of their sum.
|
|
67
56
|
const viteDevServerStartup = this.startViteDevServer(platformData, projectData, prepareData);
|
|
68
57
|
try {
|
|
69
58
|
const childProcess = await this.startBundleProcess(platformData, projectData, prepareData);
|
|
70
|
-
// Handle Vite differently from webpack
|
|
71
59
|
const isVite = this.getBundler() === "vite";
|
|
72
60
|
childProcess.stdout.on("data", function (data) {
|
|
73
61
|
process.stdout.write(data);
|
|
@@ -75,11 +63,8 @@ class BundlerCompilerService extends events_1.EventEmitter {
|
|
|
75
63
|
childProcess.stderr.on("data", function (data) {
|
|
76
64
|
process.stderr.write(data);
|
|
77
65
|
});
|
|
78
|
-
// For both Vite and webpack, we wait for the first build to complete
|
|
79
|
-
// Don't resolve immediately for Vite - wait for first IPC message
|
|
80
66
|
childProcess.on("message", (message) => {
|
|
81
67
|
this.$logger.trace(`Message from ${projectData.bundler}`, message);
|
|
82
|
-
// Handle Vite messages
|
|
83
68
|
if (isVite &&
|
|
84
69
|
message &&
|
|
85
70
|
message.emittedFiles) {
|
|
@@ -87,17 +72,13 @@ class BundlerCompilerService extends events_1.EventEmitter {
|
|
|
87
72
|
if (debugLog) {
|
|
88
73
|
console.log("Received Vite IPC message:", message);
|
|
89
74
|
}
|
|
90
|
-
|
|
91
|
-
const distOutput = this.getViteDistOutputPath(projectData.projectDir);
|
|
92
|
-
const destDir = path.join(platformData.appDestinationDirectoryPath, this.$options.hostProjectModuleName);
|
|
75
|
+
const { distOutput, destDir } = this.getViteBuildPaths(platformData, projectData);
|
|
93
76
|
if (debugLog) {
|
|
94
77
|
console.log(`Copying from ${distOutput} to ${destDir}.`);
|
|
95
78
|
}
|
|
96
|
-
// Determine which files to copy based on build type and changes
|
|
97
79
|
if (message.buildType === "incremental" &&
|
|
98
80
|
message.emittedFiles &&
|
|
99
81
|
message.emittedFiles.length > 0) {
|
|
100
|
-
// Incremental builds: only copy files that are likely affected by the changes
|
|
101
82
|
const filesToCopy = this.getIncrementalFilesToCopy(message.emittedFiles);
|
|
102
83
|
if (debugLog) {
|
|
103
84
|
console.log("Incremental build - files to copy:", filesToCopy);
|
|
@@ -110,12 +91,6 @@ class BundlerCompilerService extends events_1.EventEmitter {
|
|
|
110
91
|
}
|
|
111
92
|
this.copyViteBundleToNative(distOutput, destDir);
|
|
112
93
|
}
|
|
113
|
-
// Resolve the promise on first build completion — gated on
|
|
114
|
-
// the HMR dev server being reachable (no-op resolve for
|
|
115
|
-
// non-HMR runs). `startViteDevServer` never rejects and its
|
|
116
|
-
// readiness probe is bounded, so this cannot hang the run;
|
|
117
|
-
// on probe timeout we proceed and the device's own retry
|
|
118
|
-
// handles any residual gap.
|
|
119
94
|
if (isFirstBundlerWatchCompilation) {
|
|
120
95
|
isFirstBundlerWatchCompilation = false;
|
|
121
96
|
if (debugLog) {
|
|
@@ -124,7 +99,6 @@ class BundlerCompilerService extends events_1.EventEmitter {
|
|
|
124
99
|
viteDevServerStartup.then(() => resolve(childProcess));
|
|
125
100
|
return;
|
|
126
101
|
}
|
|
127
|
-
// Transform Vite message to match webpack format
|
|
128
102
|
const files = message.emittedFiles.map((file) => path.join(platformData.appDestinationDirectoryPath, this.$options.hostProjectModuleName, file));
|
|
129
103
|
const data = {
|
|
130
104
|
files,
|
|
@@ -142,23 +116,14 @@ class BundlerCompilerService extends events_1.EventEmitter {
|
|
|
142
116
|
this.emit(constants_1.BUNDLER_COMPILATION_COMPLETE, data);
|
|
143
117
|
return;
|
|
144
118
|
}
|
|
145
|
-
// if we are on webpack5 - we handle HMR in a slightly different way
|
|
146
119
|
if (typeof message === "object" &&
|
|
147
120
|
"version" in message &&
|
|
148
121
|
"type" in message) {
|
|
149
|
-
// first compilation can be ignored because it will be synced regardless
|
|
150
|
-
// handling it here would trigger 2 syncs
|
|
151
122
|
if (isFirstBundlerWatchCompilation) {
|
|
152
123
|
isFirstBundlerWatchCompilation = false;
|
|
153
124
|
resolve(childProcess);
|
|
154
125
|
return;
|
|
155
126
|
}
|
|
156
|
-
// if ((message as IWebpackMessage).type === "hmr-status") {
|
|
157
|
-
// // we pass message through our event-bus to be handled wherever needed
|
|
158
|
-
// // in this case webpack-hmr-status-service listens for this event
|
|
159
|
-
// this.$sharedEventBus.emit("webpack:hmr-status", message);
|
|
160
|
-
// return;
|
|
161
|
-
// }
|
|
162
127
|
return this.handleHMRMessage(message, platformData, projectData, prepareData);
|
|
163
128
|
}
|
|
164
129
|
if (message ===
|
|
@@ -174,7 +139,6 @@ class BundlerCompilerService extends events_1.EventEmitter {
|
|
|
174
139
|
prepareData.hmr ? message.hash : "";
|
|
175
140
|
return;
|
|
176
141
|
}
|
|
177
|
-
// Persist the previousHash value before calling `this.getUpdatedEmittedFiles` as it will modify the expectedHashes object with the current hash
|
|
178
142
|
const previousHash = this.expectedHashes[platformData.platformNameLowerCase];
|
|
179
143
|
let result;
|
|
180
144
|
if (prepareData.hmr) {
|
|
@@ -199,7 +163,6 @@ class BundlerCompilerService extends events_1.EventEmitter {
|
|
|
199
163
|
platform: platformData.platformNameLowerCase,
|
|
200
164
|
};
|
|
201
165
|
this.$logger.trace(`Generated data from ${projectData.bundler} message:`, data);
|
|
202
|
-
// the hash of the compilation is the same as the previous one and there are only hot updates produced
|
|
203
166
|
if (data.hasOnlyHotUpdateFiles && previousHash === message.hash) {
|
|
204
167
|
return;
|
|
205
168
|
}
|
|
@@ -247,26 +210,16 @@ class BundlerCompilerService extends events_1.EventEmitter {
|
|
|
247
210
|
delete this.bundlerProcesses[platformData.platformNameLowerCase];
|
|
248
211
|
const exitCode = typeof arg === "number" ? arg : arg && arg.code;
|
|
249
212
|
if (exitCode === 0) {
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
// here so release/CI prepare and build flows actually deploy
|
|
255
|
-
// the freshly built bundle. Without this, the deploy folder
|
|
256
|
-
// is left empty (or worse, runs stale dev/HMR artifacts from
|
|
257
|
-
// a previous `ns debug` run) and the runtime crashes on
|
|
258
|
-
// launch with `Check failed: has_pending_exception()`.
|
|
259
|
-
if (isVite) {
|
|
260
|
-
try {
|
|
261
|
-
const distOutput = this.getViteDistOutputPath(projectData.projectDir);
|
|
262
|
-
const destDir = path.join(platformData.appDestinationDirectoryPath, this.$options.hostProjectModuleName);
|
|
263
|
-
this.copyViteBundleToNative(distOutput, destDir);
|
|
264
|
-
}
|
|
265
|
-
catch (copyErr) {
|
|
266
|
-
this.$logger.warn(`Failed to copy Vite output to platform destination: ${copyErr.message}`);
|
|
213
|
+
try {
|
|
214
|
+
if (isVite) {
|
|
215
|
+
const { distOutput, destDir } = this.getViteBuildPaths(platformData, projectData);
|
|
216
|
+
this.copyViteBundleToNative(distOutput, destDir, null, true);
|
|
267
217
|
}
|
|
218
|
+
resolve();
|
|
219
|
+
}
|
|
220
|
+
catch (error) {
|
|
221
|
+
reject(error);
|
|
268
222
|
}
|
|
269
|
-
resolve();
|
|
270
223
|
}
|
|
271
224
|
else {
|
|
272
225
|
const error = new Error(`Executing ${projectData.bundler} failed with exit code ${exitCode}.`);
|
|
@@ -292,9 +245,6 @@ class BundlerCompilerService extends events_1.EventEmitter {
|
|
|
292
245
|
}
|
|
293
246
|
}
|
|
294
247
|
async shouldUsePreserveSymlinksOption() {
|
|
295
|
-
// pnpm does not require symlink (https://github.com/nodejs/node-eps/issues/46#issuecomment-277373566)
|
|
296
|
-
// and it also does not work in some cases.
|
|
297
|
-
// Check https://github.com/NativeScript/nativescript-cli/issues/5259 for more information
|
|
298
248
|
const currentPackageManager = await this.$packageManager.getPackageManagerName();
|
|
299
249
|
const res = currentPackageManager !== constants_1.PackageManagers.pnpm;
|
|
300
250
|
return res;
|
|
@@ -313,7 +263,6 @@ class BundlerCompilerService extends events_1.EventEmitter {
|
|
|
313
263
|
const envData = this.buildEnvData(platformData.platformNameLowerCase, projectData, prepareData);
|
|
314
264
|
const isVite = this.getBundler() === "vite";
|
|
315
265
|
const cliArgs = await this.buildEnvCommandLineParams(envData, platformData, projectData, prepareData);
|
|
316
|
-
// Note: With Vite, we need `--` to prevent vite cli from erroring on unknown options.
|
|
317
266
|
const envParams = isVite
|
|
318
267
|
? [
|
|
319
268
|
`--mode=${prepareData.release ? "production" : "development"}`,
|
|
@@ -373,26 +322,6 @@ class BundlerCompilerService extends events_1.EventEmitter {
|
|
|
373
322
|
const fromEnv = Number(process.env.NS_HMR_PORT);
|
|
374
323
|
return Number.isFinite(fromEnv) && fromEnv > 0 ? fromEnv : 5173;
|
|
375
324
|
}
|
|
376
|
-
/**
|
|
377
|
-
* Spawn and manage the Vite dev server (`vite serve`) for HMR.
|
|
378
|
-
*
|
|
379
|
-
* Why the CLI owns this. With Vite, HMR needs a long-lived dev server
|
|
380
|
-
* (HTTP + the `/ns-hmr` websocket on port 5173) that the device fetches
|
|
381
|
-
* modules and hot updates from — it is SEPARATE from the
|
|
382
|
-
* `vite build --watch` process that emits the `bundle.mjs` bootstrap
|
|
383
|
-
* baked into the app. Historically users wired this up themselves with
|
|
384
|
-
* `concurrently`/`wait-on`, which left two uncoordinated processes both
|
|
385
|
-
* touching adb during cold start (the source of the Android
|
|
386
|
-
* "Searching for devices…" freeze). By spawning it here as a child of
|
|
387
|
-
* the CLI, the dev server inherits the CLI's environment — crucially
|
|
388
|
-
* `NS_ADB_REVERSE_READY`/`NS_DEVICE_SERIAL`/`NS_ADB_PATH` set by the
|
|
389
|
-
* run-controller — so the CLI is the single adb owner and the dev
|
|
390
|
-
* server never spawns adb itself.
|
|
391
|
-
*
|
|
392
|
-
* No-op unless bundler is vite, HMR is on, watch mode, and not release.
|
|
393
|
-
* Best-effort: failures are logged, never thrown — a dev-server hiccup
|
|
394
|
-
* must not fail the run.
|
|
395
|
-
*/
|
|
396
325
|
async startViteDevServer(platformData, projectData, prepareData) {
|
|
397
326
|
try {
|
|
398
327
|
if (this.getBundler() !== "vite") {
|
|
@@ -406,10 +335,6 @@ class BundlerCompilerService extends events_1.EventEmitter {
|
|
|
406
335
|
return;
|
|
407
336
|
}
|
|
408
337
|
const port = this.getViteHmrPort();
|
|
409
|
-
// One dev server per port. Simultaneous multi-platform HMR in a
|
|
410
|
-
// single CLI invocation would collide on 5173 — that case still
|
|
411
|
-
// needs a distinct NS_HMR_PORT per platform, so skip + warn rather
|
|
412
|
-
// than fail to bind.
|
|
413
338
|
const collidingPlatform = Object.keys(this.viteServeProcesses)[0];
|
|
414
339
|
if (collidingPlatform) {
|
|
415
340
|
this.$logger.warn(`Vite dev server already running for '${collidingPlatform}' on port ${port}; skipping a second server for '${key}'. For simultaneous multi-platform HMR, set a distinct NS_HMR_PORT per platform.`);
|
|
@@ -421,9 +346,6 @@ class BundlerCompilerService extends events_1.EventEmitter {
|
|
|
421
346
|
if (await this.shouldUsePreserveSymlinksOption()) {
|
|
422
347
|
additionalNodeArgs.push("--preserve-symlinks");
|
|
423
348
|
}
|
|
424
|
-
// `vite serve` (not `build`): runs the dev server and watches on
|
|
425
|
-
// its own — no `--watch`. Env flags (`--env.android --env.hmr …`)
|
|
426
|
-
// go after `--` so vite's CLI doesn't choke on unknown options.
|
|
427
349
|
const args = [
|
|
428
350
|
...additionalNodeArgs,
|
|
429
351
|
this.getBundlerExecutablePath(projectData),
|
|
@@ -435,9 +357,6 @@ class BundlerCompilerService extends events_1.EventEmitter {
|
|
|
435
357
|
].filter(Boolean);
|
|
436
358
|
const options = {
|
|
437
359
|
cwd: projectData.projectDir,
|
|
438
|
-
// Inherit so the dev server's URLs/logs stream to the user as
|
|
439
|
-
// before. No IPC needed here — the build watcher provides the
|
|
440
|
-
// bundle-complete IPC; the dev server is fetched over HTTP/ws.
|
|
441
360
|
stdio: "inherit",
|
|
442
361
|
env: {
|
|
443
362
|
...process.env,
|
|
@@ -457,17 +376,11 @@ class BundlerCompilerService extends events_1.EventEmitter {
|
|
|
457
376
|
this.$logger.warn(`Vite dev server for ${key} exited with code ${code}.`);
|
|
458
377
|
}
|
|
459
378
|
});
|
|
460
|
-
// Bounded readiness probe so we can surface a clear log once the
|
|
461
|
-
// device can actually reach modules.
|
|
462
379
|
const ready = await this.waitForPort(port, 30000);
|
|
463
380
|
if (ready) {
|
|
464
381
|
this.$logger.info(`Vite dev server ready on port ${port} (HMR for ${key}).`);
|
|
465
382
|
}
|
|
466
383
|
else {
|
|
467
|
-
// Warn (not trace): the first-build resolution in
|
|
468
|
-
// `compileWithWatch` gates on this method, so a probe timeout
|
|
469
|
-
// means the app will be deployed against a server that may not
|
|
470
|
-
// be up yet — the user should see why a boot might stall.
|
|
471
384
|
this.$logger.warn(`Vite dev server port ${port} not observed open within the readiness probe window; continuing (it may bind shortly).`);
|
|
472
385
|
}
|
|
473
386
|
}
|
|
@@ -475,10 +388,6 @@ class BundlerCompilerService extends events_1.EventEmitter {
|
|
|
475
388
|
this.$logger.warn(`Failed to start the Vite dev server: ${err}. HMR may be unavailable.`);
|
|
476
389
|
}
|
|
477
390
|
}
|
|
478
|
-
/**
|
|
479
|
-
* Resolve true once `127.0.0.1:<port>` accepts a TCP connection, or
|
|
480
|
-
* false after `timeoutMs`. Used to detect the Vite dev server is up.
|
|
481
|
-
*/
|
|
482
391
|
waitForPort(port, timeoutMs) {
|
|
483
392
|
const deadline = Date.now() + timeoutMs;
|
|
484
393
|
return new Promise((resolve) => {
|
|
@@ -520,28 +429,16 @@ class BundlerCompilerService extends events_1.EventEmitter {
|
|
|
520
429
|
});
|
|
521
430
|
envData.verbose = envData.verbose || this.$logger.isVerbose();
|
|
522
431
|
envData.production = envData.production || prepareData.release;
|
|
523
|
-
// add the config file name to the env data so the webpack process can read the
|
|
524
|
-
// correct config file when resolving the CLI lib and the config service
|
|
525
|
-
// we are explicitly setting it to false to force using the defaults
|
|
526
432
|
envData.config =
|
|
527
433
|
(_b = (_a = process.env.NATIVESCRIPT_CONFIG_NAME) !== null && _a !== void 0 ? _a : this.$options.config) !== null && _b !== void 0 ? _b : "false";
|
|
528
|
-
// explicitly set the env variable
|
|
529
434
|
process.env.NATIVESCRIPT_CONFIG_NAME = envData.config;
|
|
530
|
-
// The snapshot generation is wrongly located in the Webpack plugin.
|
|
531
|
-
// It should be moved in the Native Prepare of the CLI or a Gradle task in the Runtime.
|
|
532
|
-
// As a workaround, we skip the mksnapshot, xxd and android-ndk calls based on skipNativePrepare.
|
|
533
|
-
// In this way the plugin will prepare only the snapshot JS entry without any native prepare and
|
|
534
|
-
// we will able to execute cloud builds with snapshot without having any local snapshot or Docker setup.
|
|
535
|
-
// TODO: Remove this flag when we remove the native part from the plugin.
|
|
536
435
|
envData.skipSnapshotTools =
|
|
537
436
|
prepareData.nativePrepare && prepareData.nativePrepare.skipNativePrepare;
|
|
538
|
-
// only set sourceMap if not explicitly set through a flag
|
|
539
437
|
if (typeof ((_c = prepareData === null || prepareData === void 0 ? void 0 : prepareData.env) === null || _c === void 0 ? void 0 : _c.sourceMap) === "undefined") {
|
|
540
438
|
if (!prepareData.release) {
|
|
541
439
|
envData.sourceMap = true;
|
|
542
440
|
}
|
|
543
441
|
}
|
|
544
|
-
// convert string to boolean
|
|
545
442
|
if (envData.sourceMap === "true" || envData.sourceMap === "false") {
|
|
546
443
|
envData.sourceMap = envData.sourceMap === "true";
|
|
547
444
|
}
|
|
@@ -562,7 +459,6 @@ class BundlerCompilerService extends events_1.EventEmitter {
|
|
|
562
459
|
}
|
|
563
460
|
else if (this.$hostInfo.isWindows) {
|
|
564
461
|
if (projectData.bundler === "webpack") {
|
|
565
|
-
//TODO: check this use case for webpack5 WEBPACK_PLUGIN_NAME
|
|
566
462
|
const minWebpackPluginWithWinSnapshotsVersion = "1.3.0";
|
|
567
463
|
const installedWebpackPluginVersion = await this.$packageInstallationManager.getInstalledDependencyVersion(constants_1.WEBPACK_PLUGIN_NAME, projectData.projectDir);
|
|
568
464
|
const hasWebpackPluginWithWinSnapshotsSupport = !!installedWebpackPluginVersion
|
|
@@ -596,15 +492,6 @@ class BundlerCompilerService extends events_1.EventEmitter {
|
|
|
596
492
|
}
|
|
597
493
|
getUpdatedEmittedFiles(allEmittedFiles, chunkFiles, nextHash, platform) {
|
|
598
494
|
const currentHash = this.getCurrentHotUpdateHash(allEmittedFiles);
|
|
599
|
-
// This logic is needed as there are already cases when webpack doesn't emit any files physically.
|
|
600
|
-
// We've set noEmitOnErrors in webpack.config.js based on noEmitOnError from tsconfig.json,
|
|
601
|
-
// so webpack doesn't emit any files when noEmitOnErrors: true is set in webpack.config.js and
|
|
602
|
-
// there is a compilation error in the source code. On the other side, hmr generates new hot-update files
|
|
603
|
-
// on every change and the hash of the next hmr update is written inside hot-update.json file.
|
|
604
|
-
// Although webpack doesn't emit any files, hmr hash is still generated. The hash is generated per compilation no matter
|
|
605
|
-
// if files will be emitted or not. This way, the first successful compilation after fixing the compilation error generates
|
|
606
|
-
// a hash that is not the same as the one expected in the latest emitted hot-update.json file.
|
|
607
|
-
// As a result, the hmr chain is broken and the changes are not applied.
|
|
608
495
|
const isHashValid = nextHash
|
|
609
496
|
? this.expectedHashes[platform] === currentHash
|
|
610
497
|
: true;
|
|
@@ -623,7 +510,6 @@ class BundlerCompilerService extends events_1.EventEmitter {
|
|
|
623
510
|
let hotHash;
|
|
624
511
|
const hotUpdateScripts = emittedFiles.filter((x) => x.endsWith(".hot-update.js"));
|
|
625
512
|
if (hotUpdateScripts && hotUpdateScripts.length) {
|
|
626
|
-
// the hash is the same for each hot update in the current compilation
|
|
627
513
|
const hotUpdateName = hotUpdateScripts[0];
|
|
628
514
|
const matcher = /^(.+)\.(.+)\.hot-update/gm;
|
|
629
515
|
const matches = matcher.exec(hotUpdateName);
|
|
@@ -639,7 +525,6 @@ class BundlerCompilerService extends events_1.EventEmitter {
|
|
|
639
525
|
bundlerProcess.kill("SIGINT");
|
|
640
526
|
delete this.bundlerProcesses[platform];
|
|
641
527
|
}
|
|
642
|
-
// Tear down the Vite dev server we manage alongside the build watcher.
|
|
643
528
|
const viteServeProcess = this.viteServeProcesses[platform];
|
|
644
529
|
if (viteServeProcess) {
|
|
645
530
|
await this.$cleanupService.removeKillProcess(viteServeProcess.pid.toString());
|
|
@@ -648,7 +533,6 @@ class BundlerCompilerService extends events_1.EventEmitter {
|
|
|
648
533
|
}
|
|
649
534
|
}
|
|
650
535
|
handleHMRMessage(message, platformData, projectData, prepareData) {
|
|
651
|
-
// handle new bundler hmr packets
|
|
652
536
|
this.$logger.trace(`Received message from ${projectData.bundler} process:`, message);
|
|
653
537
|
if (message.type !== "compilation") {
|
|
654
538
|
return;
|
|
@@ -656,7 +540,6 @@ class BundlerCompilerService extends events_1.EventEmitter {
|
|
|
656
540
|
this.$logger.trace(`${capitalizeFirstLetter(projectData.bundler)} build done!`);
|
|
657
541
|
const files = message.data.emittedAssets.map((asset) => path.join(platformData.appDestinationDirectoryPath, this.$options.hostProjectModuleName, asset));
|
|
658
542
|
const staleFiles = message.data.staleAssets.map((asset) => path.join(platformData.appDestinationDirectoryPath, this.$options.hostProjectModuleName, asset));
|
|
659
|
-
// extract last hash from emitted filenames
|
|
660
543
|
const lastHash = (() => {
|
|
661
544
|
const absoluteFileNameWithLastHash = files.find((fileName) => fileName.endsWith("hot-update.js"));
|
|
662
545
|
if (!absoluteFileNameWithLastHash) {
|
|
@@ -669,7 +552,6 @@ class BundlerCompilerService extends events_1.EventEmitter {
|
|
|
669
552
|
}
|
|
670
553
|
})();
|
|
671
554
|
if (!files.length) {
|
|
672
|
-
// ignore compilations if no new files are emitted
|
|
673
555
|
return;
|
|
674
556
|
}
|
|
675
557
|
this.emit(constants_1.BUNDLER_COMPILATION_COMPLETE, {
|
|
@@ -732,26 +614,21 @@ class BundlerCompilerService extends events_1.EventEmitter {
|
|
|
732
614
|
getBundler() {
|
|
733
615
|
return this.$projectConfigService.getValue(`bundler`, "webpack");
|
|
734
616
|
}
|
|
735
|
-
copyViteBundleToNative(distOutput, destDir, specificFiles = null) {
|
|
736
|
-
// Clean and copy Vite output to native platform folder
|
|
617
|
+
copyViteBundleToNative(distOutput, destDir, specificFiles = null, failOnError = false) {
|
|
737
618
|
if (debugLog) {
|
|
738
619
|
console.log(`Copying Vite bundle from "${distOutput}" to "${destDir}".`);
|
|
739
620
|
}
|
|
740
621
|
try {
|
|
741
622
|
if (specificFiles) {
|
|
742
|
-
// Selective mode: only copy specific files (incremental)
|
|
743
623
|
if (debugLog) {
|
|
744
624
|
console.log("Selective copy - copying specific files:", specificFiles);
|
|
745
625
|
}
|
|
746
|
-
// Ensure destination directory exists
|
|
747
626
|
this.$fs.createDirectory(destDir);
|
|
748
|
-
// Copy only the specified files
|
|
749
627
|
for (const file of specificFiles) {
|
|
750
628
|
const srcPath = path.join(distOutput, file);
|
|
751
629
|
const destPath = path.join(destDir, file);
|
|
752
630
|
if (!this.$fs.exists(srcPath))
|
|
753
631
|
continue;
|
|
754
|
-
// create parent dirs
|
|
755
632
|
this.$fs.createDirectory(path.dirname(destPath));
|
|
756
633
|
this.$fs.copyFile(srcPath, destPath);
|
|
757
634
|
if (debugLog) {
|
|
@@ -760,35 +637,31 @@ class BundlerCompilerService extends events_1.EventEmitter {
|
|
|
760
637
|
}
|
|
761
638
|
}
|
|
762
639
|
else {
|
|
763
|
-
// Full build mode: clean and copy everything
|
|
764
640
|
if (debugLog) {
|
|
765
641
|
console.log("Full build: Copying all files.");
|
|
766
642
|
}
|
|
767
|
-
|
|
643
|
+
if (!this.$fs.exists(distOutput)) {
|
|
644
|
+
throw new Error(`Vite output directory does not exist: ${distOutput}`);
|
|
645
|
+
}
|
|
768
646
|
if (this.$fs.exists(destDir)) {
|
|
769
647
|
this.$fs.deleteDirectory(destDir);
|
|
770
648
|
}
|
|
771
649
|
this.$fs.createDirectory(destDir);
|
|
772
|
-
|
|
773
|
-
if (this.$fs.exists(distOutput)) {
|
|
774
|
-
this.copyRecursiveSync(distOutput, destDir);
|
|
775
|
-
}
|
|
776
|
-
else {
|
|
777
|
-
this.$logger.warn(`Vite output directory does not exist: ${distOutput}`);
|
|
778
|
-
}
|
|
650
|
+
this.copyRecursiveSync(distOutput, destDir);
|
|
779
651
|
}
|
|
780
652
|
}
|
|
781
653
|
catch (error) {
|
|
782
|
-
|
|
654
|
+
const copyError = error instanceof Error ? error : new Error(String(error));
|
|
655
|
+
if (failOnError) {
|
|
656
|
+
throw copyError;
|
|
657
|
+
}
|
|
658
|
+
this.$logger.warn(`Failed to copy Vite bundle: ${copyError.message}`);
|
|
783
659
|
}
|
|
784
660
|
}
|
|
785
661
|
getIncrementalFilesToCopy(emittedFiles) {
|
|
786
|
-
// For incremental builds, we need to determine which emitted files are likely affected
|
|
787
|
-
// by the source file changes
|
|
788
662
|
const filesToCopy = [];
|
|
789
663
|
const bundleFiles = emittedFiles.filter((file) => file.endsWith(".mjs") || file.endsWith(".js") || file.endsWith(".map"));
|
|
790
664
|
filesToCopy.push(...bundleFiles);
|
|
791
|
-
// Only copy assets if there are explicit asset-related changes
|
|
792
665
|
const assetFiles = emittedFiles.filter((file) => file.includes("assets/") ||
|
|
793
666
|
file.includes("static/") ||
|
|
794
667
|
file.includes("fonts/") ||
|
|
@@ -796,11 +669,9 @@ class BundlerCompilerService extends events_1.EventEmitter {
|
|
|
796
669
|
if (assetFiles.length > 0) {
|
|
797
670
|
filesToCopy.push(...assetFiles);
|
|
798
671
|
}
|
|
799
|
-
// Remove duplicates and return
|
|
800
672
|
return [...new Set(filesToCopy)];
|
|
801
673
|
}
|
|
802
674
|
copyRecursiveSync(src, dest) {
|
|
803
|
-
// Ensure destination exists
|
|
804
675
|
this.$fs.createDirectory(dest);
|
|
805
676
|
const entries = this.$fs.readDirectory(src);
|
|
806
677
|
for (const name of entries) {
|
|
@@ -811,7 +682,6 @@ class BundlerCompilerService extends events_1.EventEmitter {
|
|
|
811
682
|
this.copyRecursiveSync(srcPath, destPath);
|
|
812
683
|
}
|
|
813
684
|
else if (lstats.isFile() || lstats.isSymbolicLink()) {
|
|
814
|
-
// create parent directory (copyFile will also ensure it, but keep explicit)
|
|
815
685
|
this.$fs.createDirectory(path.dirname(destPath));
|
|
816
686
|
this.$fs.copyFile(srcPath, destPath);
|
|
817
687
|
}
|
|
@@ -826,4 +696,3 @@ function capitalizeFirstLetter(val) {
|
|
|
826
696
|
return String(val).charAt(0).toUpperCase() + String(val).slice(1);
|
|
827
697
|
}
|
|
828
698
|
yok_1.injector.register("bundlerCompilerService", BundlerCompilerService);
|
|
829
|
-
//# sourceMappingURL=bundler-compiler-service.js.map
|
|
@@ -10,6 +10,7 @@ exports.CleanupService = void 0;
|
|
|
10
10
|
const path = require("path");
|
|
11
11
|
const decorators_1 = require("../common/decorators");
|
|
12
12
|
const yok_1 = require("../common/yok");
|
|
13
|
+
const detached_process_enums_1 = require("../detached-processes/detached-process-enums");
|
|
13
14
|
class CleanupService {
|
|
14
15
|
constructor($options, $staticConfig, $childProcess) {
|
|
15
16
|
this.$staticConfig = $staticConfig;
|
|
@@ -20,56 +21,56 @@ class CleanupService {
|
|
|
20
21
|
async addCleanupCommand(commandInfo) {
|
|
21
22
|
const cleanupProcess = await this.getCleanupProcess();
|
|
22
23
|
cleanupProcess.send({
|
|
23
|
-
messageType:
|
|
24
|
+
messageType: detached_process_enums_1.CleanupProcessMessage.AddCleanCommand,
|
|
24
25
|
commandInfo,
|
|
25
26
|
});
|
|
26
27
|
}
|
|
27
28
|
async removeCleanupCommand(commandInfo) {
|
|
28
29
|
const cleanupProcess = await this.getCleanupProcess();
|
|
29
30
|
cleanupProcess.send({
|
|
30
|
-
messageType:
|
|
31
|
+
messageType: detached_process_enums_1.CleanupProcessMessage.RemoveCleanCommand,
|
|
31
32
|
commandInfo,
|
|
32
33
|
});
|
|
33
34
|
}
|
|
34
35
|
async addRequest(requestInfo) {
|
|
35
36
|
const cleanupProcess = await this.getCleanupProcess();
|
|
36
37
|
cleanupProcess.send({
|
|
37
|
-
messageType:
|
|
38
|
+
messageType: detached_process_enums_1.CleanupProcessMessage.AddRequest,
|
|
38
39
|
requestInfo,
|
|
39
40
|
});
|
|
40
41
|
}
|
|
41
42
|
async removeRequest(requestInfo) {
|
|
42
43
|
const cleanupProcess = await this.getCleanupProcess();
|
|
43
44
|
cleanupProcess.send({
|
|
44
|
-
messageType:
|
|
45
|
+
messageType: detached_process_enums_1.CleanupProcessMessage.RemoveRequest,
|
|
45
46
|
requestInfo,
|
|
46
47
|
});
|
|
47
48
|
}
|
|
48
49
|
async addCleanupDeleteAction(filePath) {
|
|
49
50
|
const cleanupProcess = await this.getCleanupProcess();
|
|
50
51
|
cleanupProcess.send({
|
|
51
|
-
messageType:
|
|
52
|
+
messageType: detached_process_enums_1.CleanupProcessMessage.AddDeleteFileAction,
|
|
52
53
|
filePath,
|
|
53
54
|
});
|
|
54
55
|
}
|
|
55
56
|
async removeCleanupDeleteAction(filePath) {
|
|
56
57
|
const cleanupProcess = await this.getCleanupProcess();
|
|
57
58
|
cleanupProcess.send({
|
|
58
|
-
messageType:
|
|
59
|
+
messageType: detached_process_enums_1.CleanupProcessMessage.RemoveDeleteFileAction,
|
|
59
60
|
filePath,
|
|
60
61
|
});
|
|
61
62
|
}
|
|
62
63
|
async addCleanupJS(jsCommand) {
|
|
63
64
|
const cleanupProcess = await this.getCleanupProcess();
|
|
64
65
|
cleanupProcess.send({
|
|
65
|
-
messageType:
|
|
66
|
+
messageType: detached_process_enums_1.CleanupProcessMessage.AddJSFileToRequire,
|
|
66
67
|
jsCommand,
|
|
67
68
|
});
|
|
68
69
|
}
|
|
69
70
|
async removeCleanupJS(jsCommand) {
|
|
70
71
|
const cleanupProcess = await this.getCleanupProcess();
|
|
71
72
|
cleanupProcess.send({
|
|
72
|
-
messageType:
|
|
73
|
+
messageType: detached_process_enums_1.CleanupProcessMessage.RemoveJSFileToRequire,
|
|
73
74
|
jsCommand,
|
|
74
75
|
});
|
|
75
76
|
}
|
|
@@ -92,8 +93,6 @@ class CleanupService {
|
|
|
92
93
|
setShouldDispose(shouldDispose) {
|
|
93
94
|
this.shouldDispose = shouldDispose;
|
|
94
95
|
}
|
|
95
|
-
// TODO: Consider extracting this method to a separate service
|
|
96
|
-
// as it has the same logic as the one used in analytics-service
|
|
97
96
|
getCleanupProcess() {
|
|
98
97
|
return new Promise((resolve, reject) => {
|
|
99
98
|
const cleanupProcessArgs = this.getCleanupProcessArgs();
|
|
@@ -112,12 +111,11 @@ class CleanupService {
|
|
|
112
111
|
clearTimeout(timeoutId);
|
|
113
112
|
if (!isSettled) {
|
|
114
113
|
isSettled = true;
|
|
115
|
-
// In case we throw error here, CLI will break its execution.
|
|
116
114
|
reject(err);
|
|
117
115
|
}
|
|
118
116
|
});
|
|
119
117
|
cleanupProcess.on("message", (data) => {
|
|
120
|
-
if (data ===
|
|
118
|
+
if (data === detached_process_enums_1.DetachedProcessMessages.ProcessReadyToReceive) {
|
|
121
119
|
clearTimeout(timeoutId);
|
|
122
120
|
if (!isSettled) {
|
|
123
121
|
isSettled = true;
|
|
@@ -166,4 +164,3 @@ __decorate([
|
|
|
166
164
|
(0, decorators_1.cache)()
|
|
167
165
|
], CleanupService.prototype, "getCleanupProcess", null);
|
|
168
166
|
yok_1.injector.register("cleanupService", CleanupService);
|
|
169
|
-
//# sourceMappingURL=cleanup-service.js.map
|
|
@@ -82,7 +82,6 @@ class CocoaPodsPlatformManager {
|
|
|
82
82
|
_.each(allPodfiles, (podfileContent) => {
|
|
83
83
|
const platformMatch = platformRowRegExp.exec(podfileContent);
|
|
84
84
|
const podfilePathMatch = podfilePathRegExp.exec(podfileContent) || [];
|
|
85
|
-
// platform without version -> select it with highest priority
|
|
86
85
|
if (platformMatch && platformMatch[0] && !platformMatch[2]) {
|
|
87
86
|
selectedPlatformData = {
|
|
88
87
|
version: null,
|
|
@@ -91,7 +90,6 @@ class CocoaPodsPlatformManager {
|
|
|
91
90
|
};
|
|
92
91
|
return false;
|
|
93
92
|
}
|
|
94
|
-
// platform with version
|
|
95
93
|
if (platformMatch && platformMatch[0] && platformMatch[2]) {
|
|
96
94
|
if (!selectedPlatformData ||
|
|
97
95
|
semver.gt(semver.coerce(platformMatch[2]), semver.coerce(selectedPlatformData.version))) {
|
|
@@ -106,12 +104,6 @@ class CocoaPodsPlatformManager {
|
|
|
106
104
|
return selectedPlatformData;
|
|
107
105
|
}
|
|
108
106
|
shouldReplacePlatformSection(projectData, oldPodfilePlatformData, currentPodfilePlatformData) {
|
|
109
|
-
// The selected platform should be replaced in the following cases:
|
|
110
|
-
// 1. When the pod file is from App_Resources and the selected platform is not from App_Resources
|
|
111
|
-
// 2. When the pod file is from App_Resources, the selected platform is also from App_Resources
|
|
112
|
-
// and the pod's version is greater than the selected one
|
|
113
|
-
// 3. When the pod file doesn't have platform's version -> `platform :ios`
|
|
114
|
-
// 4. When the pod file has a version greater than the selected platform's version
|
|
115
107
|
const appResourcesPodfilePath = path.join(projectData.getAppResourcesDirectoryPath(), "iOS", constants_1.PODFILE_NAME);
|
|
116
108
|
const isFromAppResources = oldPodfilePlatformData.path !== appResourcesPodfilePath &&
|
|
117
109
|
currentPodfilePlatformData.path === appResourcesPodfilePath;
|
|
@@ -143,4 +135,3 @@ class CocoaPodsPlatformManager {
|
|
|
143
135
|
}
|
|
144
136
|
exports.CocoaPodsPlatformManager = CocoaPodsPlatformManager;
|
|
145
137
|
yok_1.injector.register("cocoaPodsPlatformManager", CocoaPodsPlatformManager);
|
|
146
|
-
//# sourceMappingURL=cocoapods-platform-manager.js.map
|