nativescript 8.9.0-dev.1 → 8.9.0-dev.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/config/test-deps-versions-generated.json +1 -1
- package/lib/.d.ts +1 -0
- package/lib/android-tools-info.js +32 -9
- package/lib/base-package-manager.js +71 -47
- package/lib/bootstrap.js +6 -1
- package/lib/bun-package-manager.js +104 -65
- package/lib/color.js +5 -2
- package/lib/commands/add-platform.js +31 -14
- package/lib/commands/apple-login.js +30 -18
- package/lib/commands/appstore-list.js +46 -34
- package/lib/commands/appstore-upload.js +68 -52
- package/lib/commands/build.js +90 -57
- package/lib/commands/clean.js +197 -161
- package/lib/commands/command-base.js +28 -14
- package/lib/commands/config.js +71 -48
- package/lib/commands/create-project.js +235 -210
- package/lib/commands/debug.js +93 -66
- package/lib/commands/deploy.js +47 -30
- package/lib/commands/embedding/embed.js +59 -33
- package/lib/commands/extensibility/install-extension.js +17 -5
- package/lib/commands/extensibility/list-extensions.js +25 -13
- package/lib/commands/extensibility/uninstall-extension.js +16 -4
- package/lib/commands/fonts.js +42 -30
- package/lib/commands/generate-assets.js +29 -13
- package/lib/commands/generate-help.js +14 -2
- package/lib/commands/generate.js +70 -12
- package/lib/commands/info.js +14 -2
- package/lib/commands/install.js +50 -34
- package/lib/commands/list-platforms.js +26 -14
- package/lib/commands/migrate.js +27 -15
- package/lib/commands/native-add.js +51 -23
- package/lib/commands/platform-clean.js +33 -19
- package/lib/commands/plugin/add-plugin.js +26 -12
- package/lib/commands/plugin/build-plugin.js +45 -31
- package/lib/commands/plugin/create-plugin.js +138 -110
- package/lib/commands/plugin/list-plugins.js +34 -22
- package/lib/commands/plugin/remove-plugin.js +35 -20
- package/lib/commands/plugin/update-plugin.js +34 -20
- package/lib/commands/post-install.js +39 -20
- package/lib/commands/prepare.js +39 -22
- package/lib/commands/preview.js +64 -49
- package/lib/commands/remove-platform.js +19 -7
- package/lib/commands/resources/resources-update.js +28 -13
- package/lib/commands/run.js +77 -55
- package/lib/commands/setup.js +1 -0
- package/lib/commands/start.js +20 -6
- package/lib/commands/test-init.js +138 -123
- package/lib/commands/test.js +97 -67
- package/lib/commands/typings.js +143 -126
- package/lib/commands/update-platform.js +40 -22
- package/lib/commands/update.js +45 -30
- package/lib/commands/widget.js +767 -0
- package/lib/common/bootstrap.js +1 -0
- package/lib/common/child-process.js +75 -53
- package/lib/common/codeGeneration/code-entity.js +2 -1
- package/lib/common/codeGeneration/code-printer.js +2 -1
- package/lib/common/command-params.js +19 -7
- package/lib/common/commands/analytics.js +43 -27
- package/lib/common/commands/autocompletion.js +59 -39
- package/lib/common/commands/device/device-log-stream.js +24 -12
- package/lib/common/commands/device/get-file.js +35 -22
- package/lib/common/commands/device/list-applications.js +24 -12
- package/lib/common/commands/device/list-devices.js +90 -72
- package/lib/common/commands/device/list-files.js +36 -23
- package/lib/common/commands/device/put-file.js +35 -22
- package/lib/common/commands/device/run-application.js +26 -12
- package/lib/common/commands/device/stop-application.js +23 -11
- package/lib/common/commands/device/uninstall-application.js +18 -6
- package/lib/common/commands/doctor.js +3 -2
- package/lib/common/commands/generate-messages.js +29 -17
- package/lib/common/commands/help.js +34 -20
- package/lib/common/commands/package-manager-get.js +18 -6
- package/lib/common/commands/package-manager-set.js +21 -9
- package/lib/common/commands/post-install.js +14 -2
- package/lib/common/commands/preuninstall.js +48 -24
- package/lib/common/commands/proxy/proxy-base.js +23 -8
- package/lib/common/commands/proxy/proxy-clear.js +16 -4
- package/lib/common/commands/proxy/proxy-get.js +15 -3
- package/lib/common/commands/proxy/proxy-set.js +101 -87
- package/lib/common/common-lib.js +1 -0
- package/lib/common/constants.js +22 -11
- package/lib/common/decorators.js +70 -10
- package/lib/common/dispatchers.js +106 -80
- package/lib/common/errors.js +116 -91
- package/lib/common/file-system.js +141 -108
- package/lib/common/header.js +5 -1
- package/lib/common/helpers.js +267 -152
- package/lib/common/host-info.js +54 -37
- package/lib/common/http-client.js +128 -93
- package/lib/common/logger/appenders/cli-appender.js +6 -1
- package/lib/common/logger/appenders/emit-appender.js +6 -1
- package/lib/common/logger/layouts/cli-layout.js +3 -1
- package/lib/common/logger/logger.js +9 -4
- package/lib/common/messages/messages.js +6 -0
- package/lib/common/mobile/android/android-application-manager.js +162 -122
- package/lib/common/mobile/android/android-debug-bridge-result-handler.js +2 -1
- package/lib/common/mobile/android/android-debug-bridge.js +118 -87
- package/lib/common/mobile/android/android-device-file-system.js +135 -98
- package/lib/common/mobile/android/android-device-hash-service.js +78 -50
- package/lib/common/mobile/android/android-device.js +93 -68
- package/lib/common/mobile/android/android-emulator-services.js +131 -105
- package/lib/common/mobile/android/android-ini-file-parser.js +9 -0
- package/lib/common/mobile/android/android-log-filter.js +5 -1
- package/lib/common/mobile/android/android-virtual-device-service.js +123 -76
- package/lib/common/mobile/android/device-android-debug-bridge.js +30 -13
- package/lib/common/mobile/android/genymotion/genymotion-service.js +123 -91
- package/lib/common/mobile/android/genymotion/virtualbox-service.js +92 -64
- package/lib/common/mobile/android/logcat-helper.js +140 -108
- package/lib/common/mobile/application-manager-base.js +113 -84
- package/lib/common/mobile/device-emitter.js +4 -0
- package/lib/common/mobile/device-log-emitter.js +1 -0
- package/lib/common/mobile/device-log-provider-base.js +19 -7
- package/lib/common/mobile/device-log-provider.js +23 -0
- package/lib/common/mobile/device-platforms-constants.js +1 -0
- package/lib/common/mobile/emulator-helper.js +3 -0
- package/lib/common/mobile/ios/device/ios-application-manager.js +111 -79
- package/lib/common/mobile/ios/device/ios-device-file-system.js +106 -78
- package/lib/common/mobile/ios/device/ios-device-operations.js +146 -105
- package/lib/common/mobile/ios/device/ios-device.js +40 -20
- package/lib/common/mobile/ios/ios-device-base.js +82 -58
- package/lib/common/mobile/ios/ios-device-product-name-mapper.js +2 -0
- package/lib/common/mobile/ios/ios-log-filter.js +1 -0
- package/lib/common/mobile/ios/simulator/ios-emulator-services.js +96 -63
- package/lib/common/mobile/ios/simulator/ios-sim-resolver.js +2 -1
- package/lib/common/mobile/ios/simulator/ios-simulator-application-manager.js +95 -60
- package/lib/common/mobile/ios/simulator/ios-simulator-device.js +48 -27
- package/lib/common/mobile/ios/simulator/ios-simulator-file-system.js +63 -37
- package/lib/common/mobile/ios/simulator/ios-simulator-log-provider.js +36 -24
- package/lib/common/mobile/local-to-device-path-data-factory.js +1 -0
- package/lib/common/mobile/log-filter.js +2 -0
- package/lib/common/mobile/logging-levels.js +1 -0
- package/lib/common/mobile/mobile-core/android-device-discovery.js +64 -43
- package/lib/common/mobile/mobile-core/android-emulator-discovery.js +35 -21
- package/lib/common/mobile/mobile-core/android-process-service.js +214 -143
- package/lib/common/mobile/mobile-core/device-discovery.js +14 -2
- package/lib/common/mobile/mobile-core/devices-service.js +505 -386
- package/lib/common/mobile/mobile-core/ios-device-discovery.js +37 -24
- package/lib/common/mobile/mobile-core/ios-simulator-discovery.js +65 -47
- package/lib/common/mobile/mobile-helper.js +27 -15
- package/lib/common/mobile/wp8/wp8-emulator-services.js +53 -25
- package/lib/common/opener.js +3 -2
- package/lib/common/os-info.js +1 -0
- package/lib/common/plist-parser.js +1 -0
- package/lib/common/project-helper.js +1 -0
- package/lib/common/prompter.js +114 -91
- package/lib/common/queue.js +21 -9
- package/lib/common/resource-loader.js +1 -0
- package/lib/common/services/auto-completion-service.js +65 -40
- package/lib/common/services/cancellation.js +29 -17
- package/lib/common/services/commands-service.js +180 -146
- package/lib/common/services/help-service.js +166 -133
- package/lib/common/services/hooks-service.js +121 -93
- package/lib/common/services/ios-notification-service.js +35 -21
- package/lib/common/services/json-file-settings-service.js +77 -52
- package/lib/common/services/lock-service.js +58 -35
- package/lib/common/services/message-contract-generator.js +47 -35
- package/lib/common/services/messages-service.js +1 -0
- package/lib/common/services/micro-templating-service.js +21 -4
- package/lib/common/services/net-service.js +110 -90
- package/lib/common/services/project-files-manager.js +28 -10
- package/lib/common/services/project-files-provider-base.js +1 -0
- package/lib/common/services/proxy-service.js +25 -13
- package/lib/common/services/qr.js +25 -13
- package/lib/common/services/settings-service.js +2 -1
- package/lib/common/services/xcode-select-service.js +36 -20
- package/lib/common/utils.js +3 -2
- package/lib/common/validators/project-name-validator.js +2 -1
- package/lib/common/validators/validation-result.js +2 -1
- package/lib/common/verify-node-version.js +11 -3
- package/lib/common/yok.js +69 -35
- package/lib/config.js +72 -36
- package/lib/constants-provider.js +1 -0
- package/lib/constants.js +78 -25
- package/lib/controllers/build-controller.js +100 -82
- package/lib/controllers/debug-controller.js +133 -107
- package/lib/controllers/deploy-controller.js +24 -15
- package/lib/controllers/migrate-controller.js +884 -723
- package/lib/controllers/platform-controller.js +94 -71
- package/lib/controllers/prepare-controller.js +274 -232
- package/lib/controllers/run-controller.js +427 -397
- package/lib/controllers/update-controller-base.js +30 -16
- package/lib/controllers/update-controller.js +130 -94
- package/lib/data/build-data.js +1 -0
- package/lib/data/controller-data-base.js +1 -0
- package/lib/data/debug-data.js +1 -0
- package/lib/data/platform-data.js +1 -0
- package/lib/data/prepare-data.js +2 -4
- package/lib/data/run-data.js +1 -0
- package/lib/definitions/project.d.ts +26 -0
- package/lib/detached-processes/cleanup-js-subprocess.js +20 -5
- package/lib/detached-processes/cleanup-process.js +43 -30
- package/lib/detached-processes/file-log-service.js +2 -1
- package/lib/device-path-provider.js +35 -23
- package/lib/device-sockets/ios/app-debug-socket-proxy-factory.js +171 -149
- package/lib/device-sockets/ios/notification.js +4 -1
- package/lib/device-sockets/ios/socket-request-executor.js +42 -24
- package/lib/helpers/android-bundle-validator-helper.js +3 -2
- package/lib/helpers/deploy-command-helper.js +50 -44
- package/lib/helpers/key-command-helper.js +17 -6
- package/lib/helpers/livesync-command-helper.js +155 -137
- package/lib/helpers/network-connectivity-validator.js +18 -6
- package/lib/helpers/options-track-helper.js +19 -7
- package/lib/helpers/package-path-helper.js +1 -0
- package/lib/helpers/platform-command-helper.js +127 -101
- package/lib/helpers/version-validator-helper.js +1 -0
- package/lib/key-commands/bootstrap.js +3 -2
- package/lib/key-commands/index.js +205 -154
- package/lib/nativescript-cli-lib-bootstrap.js +4 -0
- package/lib/nativescript-cli-lib.js +1 -0
- package/lib/nativescript-cli.js +24 -6
- package/lib/node/pbxproj-dom-xcode.js +1 -0
- package/lib/node/xcode.js +1 -0
- package/lib/node-package-manager.js +114 -81
- package/lib/options.js +156 -122
- package/lib/package-installation-manager.js +172 -130
- package/lib/package-manager.js +88 -63
- package/lib/platform-command-param.js +16 -4
- package/lib/pnpm-package-manager.js +81 -59
- package/lib/project-data.js +13 -1
- package/lib/providers/project-files-provider.js +2 -1
- package/lib/resolvers/livesync-service-resolver.js +1 -0
- package/lib/services/analytics/analytics-broker-process.js +32 -19
- package/lib/services/analytics/analytics-broker.js +31 -17
- package/lib/services/analytics/analytics-service.js +210 -170
- package/lib/services/analytics/google-analytics-provider.js +59 -43
- package/lib/services/analytics-settings-service.js +37 -15
- package/lib/services/android/android-bundle-tool-service.js +61 -43
- package/lib/services/android/gradle-build-args-service.js +23 -9
- package/lib/services/android/gradle-build-service.js +36 -22
- package/lib/services/android/gradle-command-service.js +36 -22
- package/lib/services/android-device-debug-service.js +123 -90
- package/lib/services/android-plugin-build-service.js +260 -205
- package/lib/services/android-project-service.js +241 -129
- package/lib/services/android-resources-migration-service.js +71 -51
- package/lib/services/apple-portal/apple-portal-application-service.js +64 -46
- package/lib/services/apple-portal/apple-portal-cookie-service.js +1 -0
- package/lib/services/apple-portal/apple-portal-session-service.js +218 -197
- package/lib/services/apple-portal/srp/srp-wrapper.js +61 -43
- package/lib/services/assets-generation/assets-generation-service.js +128 -103
- package/lib/services/build-artifacts-service.js +22 -10
- package/lib/services/build-data-service.js +1 -0
- package/lib/services/build-info-file-service.js +36 -20
- package/lib/services/cleanup-service.js +81 -48
- package/lib/services/cocoapods-platform-manager.js +9 -0
- package/lib/services/cocoapods-service.js +153 -112
- package/lib/services/debug-data-service.js +1 -0
- package/lib/services/debug-service-base.js +7 -0
- package/lib/services/device/device-install-app-service.js +72 -54
- package/lib/services/doctor-service.js +135 -101
- package/lib/services/extensibility-service.js +108 -81
- package/lib/services/files-hash-service.js +44 -26
- package/lib/services/hmr-status-service.js +3 -1
- package/lib/services/info-service.js +1 -0
- package/lib/services/initialize-service.js +54 -37
- package/lib/services/ios/export-options-plist-service.js +55 -38
- package/lib/services/ios/ios-signing-service.js +191 -168
- package/lib/services/ios/spm-service.js +70 -46
- package/lib/services/ios/xcodebuild-args-service.js +103 -77
- package/lib/services/ios/xcodebuild-command-service.js +26 -14
- package/lib/services/ios/xcodebuild-service.js +72 -52
- package/lib/services/ios-debugger-port-service.js +38 -24
- package/lib/services/ios-device-debug-service.js +103 -75
- package/lib/services/ios-entitlements-service.js +43 -31
- package/lib/services/ios-extensions-service.js +30 -18
- package/lib/services/ios-log-filter.js +20 -0
- package/lib/services/ios-native-target-service.js +6 -4
- package/lib/services/ios-project-service.js +605 -437
- package/lib/services/ios-provision-service.js +132 -108
- package/lib/services/ios-watch-app-service.js +33 -21
- package/lib/services/ip-service.js +55 -38
- package/lib/services/itmstransporter-service.js +153 -129
- package/lib/services/karma-execution.js +2 -0
- package/lib/services/livesync/android-device-livesync-service-base.js +49 -31
- package/lib/services/livesync/android-device-livesync-service.js +151 -120
- package/lib/services/livesync/android-device-livesync-sockets-service.js +155 -121
- package/lib/services/livesync/android-livesync-service.js +36 -14
- package/lib/services/livesync/android-livesync-tool.js +117 -90
- package/lib/services/livesync/device-livesync-service-base.js +30 -15
- package/lib/services/livesync/ios-device-livesync-service.js +150 -114
- package/lib/services/livesync/ios-livesync-service.js +60 -42
- package/lib/services/livesync/livesync-socket.js +1 -0
- package/lib/services/livesync/platform-livesync-service-base.js +124 -94
- package/lib/services/livesync-process-data-service.js +1 -0
- package/lib/services/log-parser-service.js +2 -1
- package/lib/services/log-source-map-service.js +56 -30
- package/lib/services/marking-mode-service.js +33 -17
- package/lib/services/metadata-filtering-service.js +1 -0
- package/lib/services/npm-config-service.js +5 -1
- package/lib/services/pacote-service.js +71 -49
- package/lib/services/performance-service.js +4 -2
- package/lib/services/platform/add-platform-service.js +119 -51
- package/lib/services/platform/platform-validation-service.js +34 -22
- package/lib/services/platform/prepare-native-platform-service.js +65 -49
- package/lib/services/platform-environment-requirements.js +43 -27
- package/lib/services/platform-project-service-base.js +1 -0
- package/lib/services/platforms-data-service.js +1 -0
- package/lib/services/plugins-service.js +168 -125
- package/lib/services/prepare-data-service.js +1 -0
- package/lib/services/project-backup-service.js +5 -1
- package/lib/services/project-changes-service.js +152 -124
- package/lib/services/project-cleanup-service.js +79 -64
- package/lib/services/project-config-service.js +111 -73
- package/lib/services/project-data-service.js +154 -108
- package/lib/services/project-name-service.js +44 -28
- package/lib/services/project-service.js +113 -84
- package/lib/services/project-templates-service.js +68 -52
- package/lib/services/qr-code-terminal-service.js +1 -0
- package/lib/services/require-service.js +1 -0
- package/lib/services/start-service.js +60 -41
- package/lib/services/temp-service.js +22 -8
- package/lib/services/terminal-spinner-service.js +28 -15
- package/lib/services/test-execution-service.js +79 -59
- package/lib/services/test-initialization-service.js +6 -2
- package/lib/services/timeline-profiler-service.js +2 -1
- package/lib/services/user-settings-service.js +1 -0
- package/lib/services/versions-service.js +140 -119
- package/lib/services/watch-ignore-list-service.js +1 -0
- package/lib/services/webpack/webpack-compiler-service.js +279 -215
- package/lib/services/xcconfig-service.js +21 -8
- package/lib/services/xcproj-service.js +1 -0
- package/lib/shared-event-bus.js +6 -0
- package/lib/sys-info.js +63 -45
- package/lib/tools/config-manipulation/config-transformer.js +21 -0
- package/lib/tools/node-modules/node-modules-builder.js +28 -16
- package/lib/tools/node-modules/node-modules-dependencies-builder.js +6 -0
- package/lib/yarn-package-manager.js +79 -59
- package/lib/yarn2-package-manager.js +82 -60
- package/node_modules/@npmcli/move-file/LICENSE.md +22 -0
- package/node_modules/@npmcli/move-file/README.md +69 -0
- package/node_modules/@npmcli/move-file/lib/index.js +185 -0
- package/node_modules/@npmcli/move-file/node_modules/mkdirp/LICENSE +21 -0
- package/node_modules/@npmcli/move-file/node_modules/mkdirp/bin/cmd.js +68 -0
- package/node_modules/@npmcli/move-file/node_modules/mkdirp/index.js +31 -0
- package/node_modules/@npmcli/move-file/node_modules/mkdirp/lib/find-made.js +29 -0
- package/node_modules/@npmcli/move-file/node_modules/mkdirp/lib/mkdirp-manual.js +64 -0
- package/node_modules/@npmcli/move-file/node_modules/mkdirp/lib/mkdirp-native.js +39 -0
- package/node_modules/@npmcli/move-file/node_modules/mkdirp/lib/opts-arg.js +23 -0
- package/node_modules/@npmcli/move-file/node_modules/mkdirp/lib/path-arg.js +29 -0
- package/node_modules/@npmcli/move-file/node_modules/mkdirp/lib/use-native.js +10 -0
- package/node_modules/@npmcli/move-file/node_modules/mkdirp/package.json +44 -0
- package/node_modules/@npmcli/move-file/node_modules/mkdirp/readme.markdown +266 -0
- package/node_modules/@npmcli/move-file/package.json +47 -0
- package/node_modules/balanced-match/.github/FUNDING.yml +2 -0
- package/node_modules/balanced-match/LICENSE.md +21 -0
- package/node_modules/balanced-match/README.md +97 -0
- package/node_modules/balanced-match/index.js +62 -0
- package/node_modules/balanced-match/package.json +48 -0
- package/node_modules/concat-map/.travis.yml +4 -0
- package/node_modules/concat-map/LICENSE +18 -0
- package/node_modules/concat-map/README.markdown +62 -0
- package/node_modules/concat-map/example/map.js +6 -0
- package/node_modules/concat-map/index.js +13 -0
- package/node_modules/concat-map/package.json +43 -0
- package/node_modules/concat-map/test/map.js +39 -0
- package/node_modules/fs.realpath/LICENSE +43 -0
- package/node_modules/fs.realpath/README.md +33 -0
- package/node_modules/fs.realpath/index.js +66 -0
- package/node_modules/fs.realpath/old.js +303 -0
- package/node_modules/fs.realpath/package.json +26 -0
- package/node_modules/inflight/LICENSE +15 -0
- package/node_modules/inflight/README.md +37 -0
- package/node_modules/inflight/inflight.js +54 -0
- package/node_modules/inflight/package.json +29 -0
- package/node_modules/inherits/LICENSE +16 -0
- package/node_modules/inherits/README.md +42 -0
- package/node_modules/inherits/inherits.js +9 -0
- package/node_modules/inherits/inherits_browser.js +27 -0
- package/node_modules/inherits/package.json +29 -0
- package/node_modules/once/LICENSE +15 -0
- package/node_modules/once/README.md +79 -0
- package/node_modules/once/once.js +42 -0
- package/node_modules/once/package.json +33 -0
- package/node_modules/path-is-absolute/index.js +20 -0
- package/node_modules/path-is-absolute/license +21 -0
- package/node_modules/path-is-absolute/package.json +43 -0
- package/node_modules/path-is-absolute/readme.md +59 -0
- package/node_modules/rimraf/LICENSE +15 -0
- package/node_modules/rimraf/README.md +101 -0
- package/node_modules/rimraf/bin.js +68 -0
- package/node_modules/rimraf/node_modules/brace-expansion/LICENSE +21 -0
- package/node_modules/rimraf/node_modules/brace-expansion/README.md +129 -0
- package/node_modules/rimraf/node_modules/brace-expansion/index.js +201 -0
- package/node_modules/rimraf/node_modules/brace-expansion/package.json +47 -0
- package/node_modules/rimraf/node_modules/glob/LICENSE +21 -0
- package/node_modules/rimraf/node_modules/glob/README.md +378 -0
- package/node_modules/rimraf/node_modules/glob/common.js +238 -0
- package/node_modules/rimraf/node_modules/glob/glob.js +790 -0
- package/node_modules/rimraf/node_modules/glob/package.json +55 -0
- package/node_modules/rimraf/node_modules/glob/sync.js +486 -0
- package/node_modules/rimraf/node_modules/minimatch/LICENSE +15 -0
- package/node_modules/rimraf/node_modules/minimatch/README.md +230 -0
- package/node_modules/rimraf/node_modules/minimatch/minimatch.js +947 -0
- package/node_modules/rimraf/node_modules/minimatch/package.json +33 -0
- package/node_modules/rimraf/package.json +32 -0
- package/node_modules/rimraf/rimraf.js +360 -0
- package/node_modules/stringify-package/LICENSE +13 -0
- package/node_modules/stringify-package/README.md +55 -0
- package/node_modules/stringify-package/index.js +18 -0
- package/node_modules/stringify-package/package.json +38 -0
- package/node_modules/wrappy/LICENSE +15 -0
- package/node_modules/wrappy/README.md +36 -0
- package/node_modules/wrappy/package.json +29 -0
- package/node_modules/wrappy/wrappy.js +33 -0
- package/package.json +79 -64
|
@@ -5,6 +5,15 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
5
5
|
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
6
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
7
|
};
|
|
8
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
9
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
10
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
11
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
12
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
13
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
14
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
15
|
+
});
|
|
16
|
+
};
|
|
8
17
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
18
|
exports.WebpackCompilerService = void 0;
|
|
10
19
|
const path = require("path");
|
|
@@ -16,7 +25,8 @@ const constants_1 = require("../../constants");
|
|
|
16
25
|
const yok_1 = require("../../common/yok");
|
|
17
26
|
const package_path_helper_1 = require("../../helpers/package-path-helper");
|
|
18
27
|
class WebpackCompilerService extends events_1.EventEmitter {
|
|
19
|
-
constructor($options, $errors, $childProcess, $fs, $hooksService, $hostInfo, $logger, $mobileHelper, $cleanupService, $packageManager, $packageInstallationManager
|
|
28
|
+
constructor($options, $errors, $childProcess, $fs, $hooksService, $hostInfo, $logger, $mobileHelper, $cleanupService, $packageManager, $packageInstallationManager // private $sharedEventBus: ISharedEventBus
|
|
29
|
+
) {
|
|
20
30
|
super();
|
|
21
31
|
this.$options = $options;
|
|
22
32
|
this.$errors = $errors;
|
|
@@ -32,191 +42,215 @@ class WebpackCompilerService extends events_1.EventEmitter {
|
|
|
32
42
|
this.webpackProcesses = {};
|
|
33
43
|
this.expectedHashes = {};
|
|
34
44
|
}
|
|
35
|
-
|
|
36
|
-
return
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
this.
|
|
72
|
-
prepareData.hmr ? message.hash : "";
|
|
73
|
-
return;
|
|
45
|
+
compileWithWatch(platformData, projectData, prepareData) {
|
|
46
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
47
|
+
return new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () {
|
|
48
|
+
if (this.webpackProcesses[platformData.platformNameLowerCase]) {
|
|
49
|
+
resolve(void 0);
|
|
50
|
+
return;
|
|
51
|
+
}
|
|
52
|
+
let isFirstWebpackWatchCompilation = true;
|
|
53
|
+
prepareData.watch = true;
|
|
54
|
+
try {
|
|
55
|
+
const childProcess = yield this.startWebpackProcess(platformData, projectData, prepareData);
|
|
56
|
+
childProcess.stdout.on("data", function (data) {
|
|
57
|
+
process.stdout.write(data);
|
|
58
|
+
});
|
|
59
|
+
childProcess.stderr.on("data", function (data) {
|
|
60
|
+
process.stderr.write(data);
|
|
61
|
+
});
|
|
62
|
+
childProcess.on("message", (message) => {
|
|
63
|
+
this.$logger.trace("Message from webpack", message);
|
|
64
|
+
// if we are on webpack5 - we handle HMR in a slightly different way
|
|
65
|
+
if (typeof message === "object" &&
|
|
66
|
+
"version" in message &&
|
|
67
|
+
"type" in message) {
|
|
68
|
+
// first compilation can be ignored because it will be synced regardless
|
|
69
|
+
// handling it here would trigger 2 syncs
|
|
70
|
+
if (isFirstWebpackWatchCompilation) {
|
|
71
|
+
isFirstWebpackWatchCompilation = false;
|
|
72
|
+
resolve(childProcess);
|
|
73
|
+
return;
|
|
74
|
+
}
|
|
75
|
+
// if ((message as IWebpackMessage).type === "hmr-status") {
|
|
76
|
+
// // we pass message through our event-bus to be handled wherever needed
|
|
77
|
+
// // in this case webpack-hmr-status-service listens for this event
|
|
78
|
+
// this.$sharedEventBus.emit("webpack:hmr-status", message);
|
|
79
|
+
// return;
|
|
80
|
+
// }
|
|
81
|
+
return this.handleHMRMessage(message, platformData, projectData, prepareData);
|
|
74
82
|
}
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
result = this.getUpdatedEmittedFiles(message.emittedFiles, message.chunkFiles, message.hash, platformData.platformNameLowerCase);
|
|
83
|
+
if (message === "Webpack compilation complete.") {
|
|
84
|
+
this.$logger.info("Webpack build done!");
|
|
85
|
+
resolve(childProcess);
|
|
79
86
|
}
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
87
|
+
message = message;
|
|
88
|
+
if (message.emittedFiles) {
|
|
89
|
+
if (isFirstWebpackWatchCompilation) {
|
|
90
|
+
isFirstWebpackWatchCompilation = false;
|
|
91
|
+
this.expectedHashes[platformData.platformNameLowerCase] =
|
|
92
|
+
prepareData.hmr ? message.hash : "";
|
|
93
|
+
return;
|
|
94
|
+
}
|
|
95
|
+
// Persist the previousHash value before calling `this.getUpdatedEmittedFiles` as it will modify the expectedHashes object with the current hash
|
|
96
|
+
const previousHash = this.expectedHashes[platformData.platformNameLowerCase];
|
|
97
|
+
let result;
|
|
98
|
+
if (prepareData.hmr) {
|
|
99
|
+
result = this.getUpdatedEmittedFiles(message.emittedFiles, message.chunkFiles, message.hash, platformData.platformNameLowerCase);
|
|
100
|
+
}
|
|
101
|
+
else {
|
|
102
|
+
result = {
|
|
103
|
+
emittedFiles: message.emittedFiles,
|
|
104
|
+
fallbackFiles: [],
|
|
105
|
+
hash: "",
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
const files = result.emittedFiles.map((file) => path.join(platformData.appDestinationDirectoryPath, this.$options.hostProjectModuleName, file));
|
|
109
|
+
const fallbackFiles = result.fallbackFiles.map((file) => path.join(platformData.appDestinationDirectoryPath, this.$options.hostProjectModuleName, file));
|
|
110
|
+
const data = {
|
|
111
|
+
files,
|
|
112
|
+
hasOnlyHotUpdateFiles: files.every((f) => f.indexOf("hot-update") > -1),
|
|
113
|
+
hmrData: {
|
|
114
|
+
hash: result.hash,
|
|
115
|
+
fallbackFiles,
|
|
116
|
+
},
|
|
117
|
+
platform: platformData.platformNameLowerCase,
|
|
85
118
|
};
|
|
119
|
+
this.$logger.trace("Generated data from webpack message:", data);
|
|
120
|
+
// the hash of the compilation is the same as the previous one and there are only hot updates produced
|
|
121
|
+
if (data.hasOnlyHotUpdateFiles && previousHash === message.hash) {
|
|
122
|
+
return;
|
|
123
|
+
}
|
|
124
|
+
if (data.files.length) {
|
|
125
|
+
this.emit(constants_1.WEBPACK_COMPILATION_COMPLETE, data);
|
|
126
|
+
}
|
|
86
127
|
}
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
};
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
128
|
+
});
|
|
129
|
+
childProcess.on("error", (err) => {
|
|
130
|
+
this.$logger.trace(`Unable to start webpack process in watch mode. Error is: ${err}`);
|
|
131
|
+
delete this.webpackProcesses[platformData.platformNameLowerCase];
|
|
132
|
+
reject(err);
|
|
133
|
+
});
|
|
134
|
+
childProcess.on("close", (arg) => __awaiter(this, void 0, void 0, function* () {
|
|
135
|
+
yield this.$cleanupService.removeKillProcess(childProcess.pid.toString());
|
|
136
|
+
const exitCode = typeof arg === "number" ? arg : arg && arg.code;
|
|
137
|
+
this.$logger.trace(`Webpack process exited with code ${exitCode} when we expected it to be long living with watch.`);
|
|
138
|
+
const error = new Error(`Executing webpack failed with exit code ${exitCode}.`);
|
|
139
|
+
error.code = exitCode;
|
|
140
|
+
delete this.webpackProcesses[platformData.platformNameLowerCase];
|
|
141
|
+
reject(error);
|
|
142
|
+
}));
|
|
143
|
+
}
|
|
144
|
+
catch (err) {
|
|
145
|
+
reject(err);
|
|
146
|
+
}
|
|
147
|
+
}));
|
|
148
|
+
});
|
|
149
|
+
}
|
|
150
|
+
compileWithoutWatch(platformData, projectData, prepareData) {
|
|
151
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
152
|
+
return new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () {
|
|
153
|
+
if (this.webpackProcesses[platformData.platformNameLowerCase]) {
|
|
154
|
+
resolve();
|
|
155
|
+
return;
|
|
156
|
+
}
|
|
157
|
+
try {
|
|
158
|
+
const childProcess = yield this.startWebpackProcess(platformData, projectData, prepareData);
|
|
159
|
+
childProcess.on("error", (err) => {
|
|
160
|
+
this.$logger.trace(`Unable to start webpack process in non-watch mode. Error is: ${err}`);
|
|
161
|
+
delete this.webpackProcesses[platformData.platformNameLowerCase];
|
|
162
|
+
reject(err);
|
|
163
|
+
});
|
|
164
|
+
childProcess.on("close", (arg) => __awaiter(this, void 0, void 0, function* () {
|
|
165
|
+
yield this.$cleanupService.removeKillProcess(childProcess.pid.toString());
|
|
166
|
+
delete this.webpackProcesses[platformData.platformNameLowerCase];
|
|
167
|
+
const exitCode = typeof arg === "number" ? arg : arg && arg.code;
|
|
168
|
+
if (exitCode === 0) {
|
|
169
|
+
resolve();
|
|
101
170
|
}
|
|
102
|
-
|
|
103
|
-
|
|
171
|
+
else {
|
|
172
|
+
const error = new Error(`Executing webpack failed with exit code ${exitCode}.`);
|
|
173
|
+
error.code = exitCode;
|
|
174
|
+
reject(error);
|
|
104
175
|
}
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
this.$logger.trace(`Unable to start webpack process in watch mode. Error is: ${err}`);
|
|
109
|
-
delete this.webpackProcesses[platformData.platformNameLowerCase];
|
|
176
|
+
}));
|
|
177
|
+
}
|
|
178
|
+
catch (err) {
|
|
110
179
|
reject(err);
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
reject(error);
|
|
120
|
-
});
|
|
180
|
+
}
|
|
181
|
+
}));
|
|
182
|
+
});
|
|
183
|
+
}
|
|
184
|
+
stopWebpackCompiler(platform) {
|
|
185
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
186
|
+
if (platform) {
|
|
187
|
+
yield this.stopWebpackForPlatform(platform);
|
|
121
188
|
}
|
|
122
|
-
|
|
123
|
-
|
|
189
|
+
else {
|
|
190
|
+
const webpackedPlatforms = Object.keys(this.webpackProcesses);
|
|
191
|
+
for (let i = 0; i < webpackedPlatforms.length; i++) {
|
|
192
|
+
yield this.stopWebpackForPlatform(webpackedPlatforms[i]);
|
|
193
|
+
}
|
|
124
194
|
}
|
|
125
195
|
});
|
|
126
196
|
}
|
|
127
|
-
|
|
128
|
-
return
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
197
|
+
shouldUsePreserveSymlinksOption() {
|
|
198
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
199
|
+
// pnpm does not require symlink (https://github.com/nodejs/node-eps/issues/46#issuecomment-277373566)
|
|
200
|
+
// and it also does not work in some cases.
|
|
201
|
+
// Check https://github.com/NativeScript/nativescript-cli/issues/5259 for more information
|
|
202
|
+
const currentPackageManager = yield this.$packageManager.getPackageManagerName();
|
|
203
|
+
const res = currentPackageManager !== constants_1.PackageManagers.pnpm;
|
|
204
|
+
return res;
|
|
205
|
+
});
|
|
206
|
+
}
|
|
207
|
+
startWebpackProcess(platformData, projectData, prepareData) {
|
|
208
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
209
|
+
if (!this.$fs.exists(projectData.webpackConfigPath)) {
|
|
210
|
+
this.$errors.fail(`The webpack configuration file ${projectData.webpackConfigPath} does not exist. Ensure the file exists, or update the path in ${constants_1.CONFIG_FILE_NAME_DISPLAY}.`);
|
|
132
211
|
}
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
reject(err);
|
|
139
|
-
});
|
|
140
|
-
childProcess.on("close", async (arg) => {
|
|
141
|
-
await this.$cleanupService.removeKillProcess(childProcess.pid.toString());
|
|
142
|
-
delete this.webpackProcesses[platformData.platformNameLowerCase];
|
|
143
|
-
const exitCode = typeof arg === "number" ? arg : arg && arg.code;
|
|
144
|
-
if (exitCode === 0) {
|
|
145
|
-
resolve();
|
|
146
|
-
}
|
|
147
|
-
else {
|
|
148
|
-
const error = new Error(`Executing webpack failed with exit code ${exitCode}.`);
|
|
149
|
-
error.code = exitCode;
|
|
150
|
-
reject(error);
|
|
151
|
-
}
|
|
152
|
-
});
|
|
212
|
+
const envData = this.buildEnvData(platformData.platformNameLowerCase, projectData, prepareData);
|
|
213
|
+
const envParams = yield this.buildEnvCommandLineParams(envData, platformData, projectData, prepareData);
|
|
214
|
+
const additionalNodeArgs = semver.major(process.version) <= 8 ? ["--harmony"] : [];
|
|
215
|
+
if (yield this.shouldUsePreserveSymlinksOption()) {
|
|
216
|
+
additionalNodeArgs.push("--preserve-symlinks");
|
|
153
217
|
}
|
|
154
|
-
|
|
155
|
-
|
|
218
|
+
if (process.arch === "x64") {
|
|
219
|
+
additionalNodeArgs.unshift("--max_old_space_size=4096");
|
|
156
220
|
}
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
await this.stopWebpackForPlatform(webpackedPlatforms[i]);
|
|
221
|
+
const args = [
|
|
222
|
+
...additionalNodeArgs,
|
|
223
|
+
this.getWebpackExecutablePath(projectData),
|
|
224
|
+
this.isWebpack5(projectData) ? `build` : null,
|
|
225
|
+
`--config=${projectData.webpackConfigPath}`,
|
|
226
|
+
...envParams,
|
|
227
|
+
].filter(Boolean);
|
|
228
|
+
if (prepareData.watch) {
|
|
229
|
+
args.push("--watch");
|
|
167
230
|
}
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
this.isWebpack5(projectData) ? `build` : null,
|
|
192
|
-
`--config=${projectData.webpackConfigPath}`,
|
|
193
|
-
...envParams,
|
|
194
|
-
].filter(Boolean);
|
|
195
|
-
if (prepareData.watch) {
|
|
196
|
-
args.push("--watch");
|
|
197
|
-
}
|
|
198
|
-
const stdio = prepareData.watch ? ["ipc"] : "inherit";
|
|
199
|
-
const options = {
|
|
200
|
-
cwd: projectData.projectDir,
|
|
201
|
-
stdio,
|
|
202
|
-
};
|
|
203
|
-
options.env = {
|
|
204
|
-
NATIVESCRIPT_WEBPACK_ENV: JSON.stringify(envData),
|
|
205
|
-
};
|
|
206
|
-
if (this.$hostInfo.isWindows) {
|
|
207
|
-
Object.assign(options.env, { APPDATA: process.env.appData });
|
|
208
|
-
}
|
|
209
|
-
if (this.$options.hostProjectPath) {
|
|
210
|
-
Object.assign(options.env, {
|
|
211
|
-
USER_PROJECT_PLATFORMS_ANDROID: this.$options.hostProjectPath,
|
|
212
|
-
USER_PROJECT_PLATFORMS_ANDROID_MODULE: this.$options.hostProjectModuleName,
|
|
213
|
-
USER_PROJECT_PLATFORMS_IOS: this.$options.hostProjectPath,
|
|
214
|
-
});
|
|
215
|
-
}
|
|
216
|
-
const childProcess = this.$childProcess.spawn(process.execPath, args, options);
|
|
217
|
-
this.webpackProcesses[platformData.platformNameLowerCase] = childProcess;
|
|
218
|
-
await this.$cleanupService.addKillProcess(childProcess.pid.toString());
|
|
219
|
-
return childProcess;
|
|
231
|
+
const stdio = prepareData.watch ? ["ipc"] : "inherit";
|
|
232
|
+
const options = {
|
|
233
|
+
cwd: projectData.projectDir,
|
|
234
|
+
stdio,
|
|
235
|
+
};
|
|
236
|
+
options.env = {
|
|
237
|
+
NATIVESCRIPT_WEBPACK_ENV: JSON.stringify(envData),
|
|
238
|
+
};
|
|
239
|
+
if (this.$hostInfo.isWindows) {
|
|
240
|
+
Object.assign(options.env, { APPDATA: process.env.appData });
|
|
241
|
+
}
|
|
242
|
+
if (this.$options.hostProjectPath) {
|
|
243
|
+
Object.assign(options.env, {
|
|
244
|
+
USER_PROJECT_PLATFORMS_ANDROID: this.$options.hostProjectPath,
|
|
245
|
+
USER_PROJECT_PLATFORMS_ANDROID_MODULE: this.$options.hostProjectModuleName,
|
|
246
|
+
USER_PROJECT_PLATFORMS_IOS: this.$options.hostProjectPath,
|
|
247
|
+
});
|
|
248
|
+
}
|
|
249
|
+
const childProcess = this.$childProcess.spawn(process.execPath, args, options);
|
|
250
|
+
this.webpackProcesses[platformData.platformNameLowerCase] = childProcess;
|
|
251
|
+
yield this.$cleanupService.addKillProcess(childProcess.pid.toString());
|
|
252
|
+
return childProcess;
|
|
253
|
+
});
|
|
220
254
|
}
|
|
221
255
|
buildEnvData(platform, projectData, prepareData) {
|
|
222
256
|
var _a, _b, _c;
|
|
@@ -230,16 +264,28 @@ class WebpackCompilerService extends events_1.EventEmitter {
|
|
|
230
264
|
});
|
|
231
265
|
envData.verbose = envData.verbose || this.$logger.isVerbose();
|
|
232
266
|
envData.production = envData.production || prepareData.release;
|
|
267
|
+
// add the config file name to the env data so the webpack process can read the
|
|
268
|
+
// correct config file when resolving the CLI lib and the config service
|
|
269
|
+
// we are explicitly setting it to false to force using the defaults
|
|
233
270
|
envData.config =
|
|
234
271
|
(_b = (_a = process.env.NATIVESCRIPT_CONFIG_NAME) !== null && _a !== void 0 ? _a : this.$options.config) !== null && _b !== void 0 ? _b : "false";
|
|
272
|
+
// explicitly set the env variable
|
|
235
273
|
process.env.NATIVESCRIPT_CONFIG_NAME = envData.config;
|
|
274
|
+
// The snapshot generation is wrongly located in the Webpack plugin.
|
|
275
|
+
// It should be moved in the Native Prepare of the CLI or a Gradle task in the Runtime.
|
|
276
|
+
// As a workaround, we skip the mksnapshot, xxd and android-ndk calls based on skipNativePrepare.
|
|
277
|
+
// In this way the plugin will prepare only the snapshot JS entry without any native prepare and
|
|
278
|
+
// we will able to execute cloud builds with snapshot without having any local snapshot or Docker setup.
|
|
279
|
+
// TODO: Remove this flag when we remove the native part from the plugin.
|
|
236
280
|
envData.skipSnapshotTools =
|
|
237
281
|
prepareData.nativePrepare && prepareData.nativePrepare.skipNativePrepare;
|
|
282
|
+
// only set sourceMap if not explicitly set through a flag
|
|
238
283
|
if (typeof ((_c = prepareData === null || prepareData === void 0 ? void 0 : prepareData.env) === null || _c === void 0 ? void 0 : _c.sourceMap) === "undefined") {
|
|
239
284
|
if (!prepareData.release) {
|
|
240
285
|
envData.sourceMap = true;
|
|
241
286
|
}
|
|
242
287
|
}
|
|
288
|
+
// convert string to boolean
|
|
243
289
|
if (envData.sourceMap === "true" || envData.sourceMap === "false") {
|
|
244
290
|
envData.sourceMap = envData.sourceMap === "true";
|
|
245
291
|
}
|
|
@@ -248,49 +294,60 @@ class WebpackCompilerService extends events_1.EventEmitter {
|
|
|
248
294
|
}
|
|
249
295
|
return envData;
|
|
250
296
|
}
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
if (
|
|
257
|
-
|
|
258
|
-
"
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
else if (this.$hostInfo.isWindows) {
|
|
262
|
-
const minWebpackPluginWithWinSnapshotsVersion = "1.3.0";
|
|
263
|
-
const installedWebpackPluginVersion = await this.$packageInstallationManager.getInstalledDependencyVersion(constants_1.WEBPACK_PLUGIN_NAME, projectData.projectDir);
|
|
264
|
-
const hasWebpackPluginWithWinSnapshotsSupport = !!installedWebpackPluginVersion
|
|
265
|
-
? semver.gte(semver.coerce(installedWebpackPluginVersion), minWebpackPluginWithWinSnapshotsVersion)
|
|
266
|
-
: true;
|
|
267
|
-
if (!hasWebpackPluginWithWinSnapshotsSupport) {
|
|
268
|
-
this.$errors.fail(`In order to generate Snapshots on Windows, please upgrade your Webpack plugin version (npm i ${constants_1.WEBPACK_PLUGIN_NAME}@latest).`);
|
|
297
|
+
buildEnvCommandLineParams(envData, platformData, projectData, prepareData) {
|
|
298
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
299
|
+
const envFlagNames = Object.keys(envData);
|
|
300
|
+
const canSnapshot = prepareData.release &&
|
|
301
|
+
this.$mobileHelper.isAndroidPlatform(platformData.normalizedPlatformName);
|
|
302
|
+
if (envData && envData.snapshot) {
|
|
303
|
+
if (!canSnapshot) {
|
|
304
|
+
this.$logger.warn("Stripping the snapshot flag. " +
|
|
305
|
+
"Bear in mind that snapshot is only available in Android release builds.");
|
|
306
|
+
envFlagNames.splice(envFlagNames.indexOf("snapshot"), 1);
|
|
269
307
|
}
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
if (envValue) {
|
|
280
|
-
args.push(`--env.${item}`);
|
|
308
|
+
else if (this.$hostInfo.isWindows) {
|
|
309
|
+
const minWebpackPluginWithWinSnapshotsVersion = "1.3.0";
|
|
310
|
+
const installedWebpackPluginVersion = yield this.$packageInstallationManager.getInstalledDependencyVersion(constants_1.WEBPACK_PLUGIN_NAME, projectData.projectDir);
|
|
311
|
+
const hasWebpackPluginWithWinSnapshotsSupport = !!installedWebpackPluginVersion
|
|
312
|
+
? semver.gte(semver.coerce(installedWebpackPluginVersion), minWebpackPluginWithWinSnapshotsVersion)
|
|
313
|
+
: true;
|
|
314
|
+
if (!hasWebpackPluginWithWinSnapshotsSupport) {
|
|
315
|
+
this.$errors.fail(`In order to generate Snapshots on Windows, please upgrade your Webpack plugin version (npm i ${constants_1.WEBPACK_PLUGIN_NAME}@latest).`);
|
|
316
|
+
}
|
|
281
317
|
}
|
|
282
318
|
}
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
319
|
+
const args = [];
|
|
320
|
+
envFlagNames.map((item) => {
|
|
321
|
+
let envValue = envData[item];
|
|
322
|
+
if (typeof envValue === "undefined") {
|
|
323
|
+
return;
|
|
286
324
|
}
|
|
287
|
-
envValue
|
|
288
|
-
|
|
325
|
+
if (typeof envValue === "boolean") {
|
|
326
|
+
if (envValue) {
|
|
327
|
+
args.push(`--env.${item}`);
|
|
328
|
+
}
|
|
329
|
+
}
|
|
330
|
+
else {
|
|
331
|
+
if (!Array.isArray(envValue)) {
|
|
332
|
+
envValue = [envValue];
|
|
333
|
+
}
|
|
334
|
+
envValue.map((value) => args.push(`--env.${item}=${value}`));
|
|
335
|
+
}
|
|
336
|
+
});
|
|
337
|
+
return args;
|
|
289
338
|
});
|
|
290
|
-
return args;
|
|
291
339
|
}
|
|
292
340
|
getUpdatedEmittedFiles(allEmittedFiles, chunkFiles, nextHash, platform) {
|
|
293
341
|
const currentHash = this.getCurrentHotUpdateHash(allEmittedFiles);
|
|
342
|
+
// This logic is needed as there are already cases when webpack doesn't emit any files physically.
|
|
343
|
+
// We've set noEmitOnErrors in webpack.config.js based on noEmitOnError from tsconfig.json,
|
|
344
|
+
// so webpack doesn't emit any files when noEmitOnErrors: true is set in webpack.config.js and
|
|
345
|
+
// there is a compilation error in the source code. On the other side, hmr generates new hot-update files
|
|
346
|
+
// on every change and the hash of the next hmr update is written inside hot-update.json file.
|
|
347
|
+
// Although webpack doesn't emit any files, hmr hash is still generated. The hash is generated per compilation no matter
|
|
348
|
+
// if files will be emitted or not. This way, the first successful compilation after fixing the compilation error generates
|
|
349
|
+
// a hash that is not the same as the one expected in the latest emitted hot-update.json file.
|
|
350
|
+
// As a result, the hmr chain is broken and the changes are not applied.
|
|
294
351
|
const isHashValid = nextHash
|
|
295
352
|
? this.expectedHashes[platform] === currentHash
|
|
296
353
|
: true;
|
|
@@ -309,6 +366,7 @@ class WebpackCompilerService extends events_1.EventEmitter {
|
|
|
309
366
|
let hotHash;
|
|
310
367
|
const hotUpdateScripts = emittedFiles.filter((x) => x.endsWith(".hot-update.js"));
|
|
311
368
|
if (hotUpdateScripts && hotUpdateScripts.length) {
|
|
369
|
+
// the hash is the same for each hot update in the current compilation
|
|
312
370
|
const hotUpdateName = hotUpdateScripts[0];
|
|
313
371
|
const matcher = /^(.+)\.(.+)\.hot-update/gm;
|
|
314
372
|
const matches = matcher.exec(hotUpdateName);
|
|
@@ -316,16 +374,19 @@ class WebpackCompilerService extends events_1.EventEmitter {
|
|
|
316
374
|
}
|
|
317
375
|
return hotHash || "";
|
|
318
376
|
}
|
|
319
|
-
|
|
320
|
-
this
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
webpackProcess
|
|
325
|
-
|
|
326
|
-
|
|
377
|
+
stopWebpackForPlatform(platform) {
|
|
378
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
379
|
+
this.$logger.trace(`Stopping webpack watch for platform ${platform}.`);
|
|
380
|
+
const webpackProcess = this.webpackProcesses[platform];
|
|
381
|
+
yield this.$cleanupService.removeKillProcess(webpackProcess.pid.toString());
|
|
382
|
+
if (webpackProcess) {
|
|
383
|
+
webpackProcess.kill("SIGINT");
|
|
384
|
+
delete this.webpackProcesses[platform];
|
|
385
|
+
}
|
|
386
|
+
});
|
|
327
387
|
}
|
|
328
388
|
handleHMRMessage(message, platformData, projectData, prepareData) {
|
|
389
|
+
// handle new webpack hmr packets
|
|
329
390
|
this.$logger.trace("Received message from webpack process:", message);
|
|
330
391
|
if (message.type !== "compilation") {
|
|
331
392
|
return;
|
|
@@ -333,6 +394,7 @@ class WebpackCompilerService extends events_1.EventEmitter {
|
|
|
333
394
|
this.$logger.trace("Webpack build done!");
|
|
334
395
|
const files = message.data.emittedAssets.map((asset) => path.join(platformData.appDestinationDirectoryPath, this.$options.hostProjectModuleName, asset));
|
|
335
396
|
const staleFiles = message.data.staleAssets.map((asset) => path.join(platformData.appDestinationDirectoryPath, this.$options.hostProjectModuleName, asset));
|
|
397
|
+
// extract last hash from emitted filenames
|
|
336
398
|
const lastHash = (() => {
|
|
337
399
|
const absoluteFileNameWithLastHash = files.find((fileName) => fileName.endsWith("hot-update.js"));
|
|
338
400
|
if (!absoluteFileNameWithLastHash) {
|
|
@@ -345,6 +407,7 @@ class WebpackCompilerService extends events_1.EventEmitter {
|
|
|
345
407
|
}
|
|
346
408
|
})();
|
|
347
409
|
if (!files.length) {
|
|
410
|
+
// ignore compilations if no new files are emitted
|
|
348
411
|
return;
|
|
349
412
|
}
|
|
350
413
|
this.emit(constants_1.WEBPACK_COMPILATION_COMPLETE, {
|
|
@@ -389,8 +452,9 @@ class WebpackCompilerService extends events_1.EventEmitter {
|
|
|
389
452
|
return false;
|
|
390
453
|
}
|
|
391
454
|
}
|
|
392
|
-
exports.WebpackCompilerService = WebpackCompilerService;
|
|
393
455
|
__decorate([
|
|
394
456
|
(0, decorators_1.performanceLog)()
|
|
395
457
|
], WebpackCompilerService.prototype, "startWebpackProcess", null);
|
|
458
|
+
exports.WebpackCompilerService = WebpackCompilerService;
|
|
396
459
|
yok_1.injector.register("webpackCompilerService", WebpackCompilerService);
|
|
460
|
+
//# sourceMappingURL=webpack-compiler-service.js.map
|