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.Yarn2PackageManager = void 0;
|
|
10
19
|
const path = require("path");
|
|
@@ -27,32 +36,36 @@ class Yarn2PackageManager extends base_package_manager_1.BasePackageManager {
|
|
|
27
36
|
}
|
|
28
37
|
return executableName;
|
|
29
38
|
}
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
config
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
params
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
39
|
+
install(packageName, pathToSave, config) {
|
|
40
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
41
|
+
if (config.disableNpmInstall) {
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
if (config.ignoreScripts) {
|
|
45
|
+
config["ignore-scripts"] = true;
|
|
46
|
+
}
|
|
47
|
+
const packageJsonPath = path.join(pathToSave, "package.json");
|
|
48
|
+
const jsonContentBefore = this.$fs.readJson(packageJsonPath);
|
|
49
|
+
// remove unsupported flags
|
|
50
|
+
// todo: refactor all package managers to map typed flags to the actual flags
|
|
51
|
+
const cleanedConfig = _.omit(config, ["save-dev", "save-exact"]);
|
|
52
|
+
const flags = this.getFlagsString(cleanedConfig, true);
|
|
53
|
+
let params = [];
|
|
54
|
+
const isInstallingAllDependencies = packageName === pathToSave;
|
|
55
|
+
if (!isInstallingAllDependencies) {
|
|
56
|
+
params.push("add", packageName);
|
|
57
|
+
}
|
|
58
|
+
params = params.concat(flags);
|
|
59
|
+
const cwd = pathToSave;
|
|
60
|
+
try {
|
|
61
|
+
const result = yield this.processPackageManagerInstall(packageName, params, { cwd, isInstallingAllDependencies });
|
|
62
|
+
return result;
|
|
63
|
+
}
|
|
64
|
+
catch (e) {
|
|
65
|
+
this.$fs.writeJson(packageJsonPath, jsonContentBefore);
|
|
66
|
+
throw e;
|
|
67
|
+
}
|
|
68
|
+
});
|
|
56
69
|
}
|
|
57
70
|
uninstall(packageName, config, cwd) {
|
|
58
71
|
const flags = this.getFlagsString(config, false);
|
|
@@ -60,49 +73,56 @@ class Yarn2PackageManager extends base_package_manager_1.BasePackageManager {
|
|
|
60
73
|
cwd,
|
|
61
74
|
});
|
|
62
75
|
}
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
76
|
+
view(packageName, config) {
|
|
77
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
78
|
+
const wrappedConfig = _.extend({}, config, { json: true });
|
|
79
|
+
const flags = this.getFlagsString(wrappedConfig, false);
|
|
80
|
+
let viewResult;
|
|
81
|
+
try {
|
|
82
|
+
viewResult = yield this.$childProcess.exec(`yarn npm info ${packageName} ${flags}`);
|
|
83
|
+
}
|
|
84
|
+
catch (e) {
|
|
85
|
+
this.$errors.fail(e.message);
|
|
86
|
+
}
|
|
87
|
+
try {
|
|
88
|
+
return JSON.parse(viewResult);
|
|
89
|
+
}
|
|
90
|
+
catch (err) {
|
|
91
|
+
this.$errors.fail(err.message);
|
|
92
|
+
return null;
|
|
93
|
+
}
|
|
94
|
+
});
|
|
80
95
|
}
|
|
81
96
|
search(filter, config) {
|
|
82
97
|
this.$errors.fail("Method not implemented. Yarn does not support searching for packages in the registry.");
|
|
83
98
|
return null;
|
|
84
99
|
}
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
100
|
+
searchNpms(keyword) {
|
|
101
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
102
|
+
const httpRequestResult = yield this.$httpClient.httpRequest(`https://api.npms.io/v2/search?q=keywords:${keyword}`);
|
|
103
|
+
const result = JSON.parse(httpRequestResult.body);
|
|
104
|
+
return result;
|
|
105
|
+
});
|
|
89
106
|
}
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
107
|
+
getRegistryPackageData(packageName) {
|
|
108
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
109
|
+
const registry = yield this.$childProcess.exec(`yarn config get npmRegistryServer`);
|
|
110
|
+
const url = `${registry.trim()}/${packageName}`;
|
|
111
|
+
this.$logger.trace(`Trying to get data from yarn registry for package ${packageName}, url is: ${url}`);
|
|
112
|
+
const responseData = (yield this.$httpClient.httpRequest(url)).body;
|
|
113
|
+
this.$logger.trace(`Successfully received data from yarn registry for package ${packageName}. Response data is: ${responseData}`);
|
|
114
|
+
const jsonData = JSON.parse(responseData);
|
|
115
|
+
this.$logger.trace(`Successfully parsed data from yarn registry for package ${packageName}.`);
|
|
116
|
+
return jsonData;
|
|
117
|
+
});
|
|
99
118
|
}
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
119
|
+
getCachePath() {
|
|
120
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
121
|
+
const result = yield this.$childProcess.exec(`yarn config get cacheFolder`);
|
|
122
|
+
return result.toString().trim();
|
|
123
|
+
});
|
|
103
124
|
}
|
|
104
125
|
}
|
|
105
|
-
exports.Yarn2PackageManager = Yarn2PackageManager;
|
|
106
126
|
__decorate([
|
|
107
127
|
(0, decorators_1.exported)("yarn2")
|
|
108
128
|
], Yarn2PackageManager.prototype, "install", null);
|
|
@@ -121,4 +141,6 @@ __decorate([
|
|
|
121
141
|
__decorate([
|
|
122
142
|
(0, decorators_1.exported)("yarn2")
|
|
123
143
|
], Yarn2PackageManager.prototype, "getCachePath", null);
|
|
144
|
+
exports.Yarn2PackageManager = Yarn2PackageManager;
|
|
124
145
|
yok_1.injector.register("yarn2", Yarn2PackageManager);
|
|
146
|
+
//# sourceMappingURL=yarn2-package-manager.js.map
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (https://sindresorhus.com)
|
|
4
|
+
Copyright (c) npm, Inc.
|
|
5
|
+
|
|
6
|
+
Permission is hereby granted, free of charge, to any person obtaining a
|
|
7
|
+
copy of this software and associated documentation files (the "Software"),
|
|
8
|
+
to deal in the Software without restriction, including without limitation
|
|
9
|
+
the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
|
10
|
+
and/or sell copies of the Software, and to permit persons to whom the
|
|
11
|
+
Software is furnished to do so, subject to the following conditions:
|
|
12
|
+
|
|
13
|
+
The above copyright notice and this permission notice shall be included in
|
|
14
|
+
all copies or substantial portions of the Software.
|
|
15
|
+
|
|
16
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
17
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
18
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
19
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
20
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
|
21
|
+
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
|
22
|
+
DEALINGS IN THE SOFTWARE.
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
# @npmcli/move-file
|
|
2
|
+
|
|
3
|
+
A fork of [move-file](https://github.com/sindresorhus/move-file) with
|
|
4
|
+
compatibility with all node 10.x versions.
|
|
5
|
+
|
|
6
|
+
> Move a file (or directory)
|
|
7
|
+
|
|
8
|
+
The built-in
|
|
9
|
+
[`fs.rename()`](https://nodejs.org/api/fs.html#fs_fs_rename_oldpath_newpath_callback)
|
|
10
|
+
is just a JavaScript wrapper for the C `rename(2)` function, which doesn't
|
|
11
|
+
support moving files across partitions or devices. This module is what you
|
|
12
|
+
would have expected `fs.rename()` to be.
|
|
13
|
+
|
|
14
|
+
## Highlights
|
|
15
|
+
|
|
16
|
+
- Promise API.
|
|
17
|
+
- Supports moving a file across partitions and devices.
|
|
18
|
+
- Optionally prevent overwriting an existing file.
|
|
19
|
+
- Creates non-existent destination directories for you.
|
|
20
|
+
- Support for Node versions that lack built-in recursive `fs.mkdir()`
|
|
21
|
+
- Automatically recurses when source is a directory.
|
|
22
|
+
|
|
23
|
+
## Install
|
|
24
|
+
|
|
25
|
+
```
|
|
26
|
+
$ npm install @npmcli/move-file
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
## Usage
|
|
30
|
+
|
|
31
|
+
```js
|
|
32
|
+
const moveFile = require('@npmcli/move-file');
|
|
33
|
+
|
|
34
|
+
(async () => {
|
|
35
|
+
await moveFile('source/unicorn.png', 'destination/unicorn.png');
|
|
36
|
+
console.log('The file has been moved');
|
|
37
|
+
})();
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
## API
|
|
41
|
+
|
|
42
|
+
### moveFile(source, destination, options?)
|
|
43
|
+
|
|
44
|
+
Returns a `Promise` that resolves when the file has been moved.
|
|
45
|
+
|
|
46
|
+
### moveFile.sync(source, destination, options?)
|
|
47
|
+
|
|
48
|
+
#### source
|
|
49
|
+
|
|
50
|
+
Type: `string`
|
|
51
|
+
|
|
52
|
+
File, or directory, you want to move.
|
|
53
|
+
|
|
54
|
+
#### destination
|
|
55
|
+
|
|
56
|
+
Type: `string`
|
|
57
|
+
|
|
58
|
+
Where you want the file or directory moved.
|
|
59
|
+
|
|
60
|
+
#### options
|
|
61
|
+
|
|
62
|
+
Type: `object`
|
|
63
|
+
|
|
64
|
+
##### overwrite
|
|
65
|
+
|
|
66
|
+
Type: `boolean`\
|
|
67
|
+
Default: `true`
|
|
68
|
+
|
|
69
|
+
Overwrite existing destination file(s).
|
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
const { dirname, join, resolve, relative, isAbsolute } = require('path')
|
|
2
|
+
const rimraf_ = require('rimraf')
|
|
3
|
+
const { promisify } = require('util')
|
|
4
|
+
const {
|
|
5
|
+
access: access_,
|
|
6
|
+
accessSync,
|
|
7
|
+
copyFile: copyFile_,
|
|
8
|
+
copyFileSync,
|
|
9
|
+
readdir: readdir_,
|
|
10
|
+
readdirSync,
|
|
11
|
+
rename: rename_,
|
|
12
|
+
renameSync,
|
|
13
|
+
stat: stat_,
|
|
14
|
+
statSync,
|
|
15
|
+
lstat: lstat_,
|
|
16
|
+
lstatSync,
|
|
17
|
+
symlink: symlink_,
|
|
18
|
+
symlinkSync,
|
|
19
|
+
readlink: readlink_,
|
|
20
|
+
readlinkSync,
|
|
21
|
+
} = require('fs')
|
|
22
|
+
|
|
23
|
+
const access = promisify(access_)
|
|
24
|
+
const copyFile = promisify(copyFile_)
|
|
25
|
+
const readdir = promisify(readdir_)
|
|
26
|
+
const rename = promisify(rename_)
|
|
27
|
+
const stat = promisify(stat_)
|
|
28
|
+
const lstat = promisify(lstat_)
|
|
29
|
+
const symlink = promisify(symlink_)
|
|
30
|
+
const readlink = promisify(readlink_)
|
|
31
|
+
const rimraf = promisify(rimraf_)
|
|
32
|
+
const rimrafSync = rimraf_.sync
|
|
33
|
+
|
|
34
|
+
const mkdirp = require('mkdirp')
|
|
35
|
+
|
|
36
|
+
const pathExists = async path => {
|
|
37
|
+
try {
|
|
38
|
+
await access(path)
|
|
39
|
+
return true
|
|
40
|
+
} catch (er) {
|
|
41
|
+
return er.code !== 'ENOENT'
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
const pathExistsSync = path => {
|
|
46
|
+
try {
|
|
47
|
+
accessSync(path)
|
|
48
|
+
return true
|
|
49
|
+
} catch (er) {
|
|
50
|
+
return er.code !== 'ENOENT'
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
const moveFile = async (source, destination, options = {}, root = true, symlinks = []) => {
|
|
55
|
+
if (!source || !destination) {
|
|
56
|
+
throw new TypeError('`source` and `destination` file required')
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
options = {
|
|
60
|
+
overwrite: true,
|
|
61
|
+
...options,
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
if (!options.overwrite && await pathExists(destination)) {
|
|
65
|
+
throw new Error(`The destination file exists: ${destination}`)
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
await mkdirp(dirname(destination))
|
|
69
|
+
|
|
70
|
+
try {
|
|
71
|
+
await rename(source, destination)
|
|
72
|
+
} catch (error) {
|
|
73
|
+
if (error.code === 'EXDEV' || error.code === 'EPERM') {
|
|
74
|
+
const sourceStat = await lstat(source)
|
|
75
|
+
if (sourceStat.isDirectory()) {
|
|
76
|
+
const files = await readdir(source)
|
|
77
|
+
await Promise.all(files.map((file) =>
|
|
78
|
+
moveFile(join(source, file), join(destination, file), options, false, symlinks)
|
|
79
|
+
))
|
|
80
|
+
} else if (sourceStat.isSymbolicLink()) {
|
|
81
|
+
symlinks.push({ source, destination })
|
|
82
|
+
} else {
|
|
83
|
+
await copyFile(source, destination)
|
|
84
|
+
}
|
|
85
|
+
} else {
|
|
86
|
+
throw error
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
if (root) {
|
|
91
|
+
await Promise.all(symlinks.map(async ({ source: symSource, destination: symDestination }) => {
|
|
92
|
+
let target = await readlink(symSource)
|
|
93
|
+
// junction symlinks in windows will be absolute paths, so we need to
|
|
94
|
+
// make sure they point to the symlink destination
|
|
95
|
+
if (isAbsolute(target)) {
|
|
96
|
+
target = resolve(symDestination, relative(symSource, target))
|
|
97
|
+
}
|
|
98
|
+
// try to determine what the actual file is so we can create the correct
|
|
99
|
+
// type of symlink in windows
|
|
100
|
+
let targetStat = 'file'
|
|
101
|
+
try {
|
|
102
|
+
targetStat = await stat(resolve(dirname(symSource), target))
|
|
103
|
+
if (targetStat.isDirectory()) {
|
|
104
|
+
targetStat = 'junction'
|
|
105
|
+
}
|
|
106
|
+
} catch {
|
|
107
|
+
// targetStat remains 'file'
|
|
108
|
+
}
|
|
109
|
+
await symlink(
|
|
110
|
+
target,
|
|
111
|
+
symDestination,
|
|
112
|
+
targetStat
|
|
113
|
+
)
|
|
114
|
+
}))
|
|
115
|
+
await rimraf(source)
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
const moveFileSync = (source, destination, options = {}, root = true, symlinks = []) => {
|
|
120
|
+
if (!source || !destination) {
|
|
121
|
+
throw new TypeError('`source` and `destination` file required')
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
options = {
|
|
125
|
+
overwrite: true,
|
|
126
|
+
...options,
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
if (!options.overwrite && pathExistsSync(destination)) {
|
|
130
|
+
throw new Error(`The destination file exists: ${destination}`)
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
mkdirp.sync(dirname(destination))
|
|
134
|
+
|
|
135
|
+
try {
|
|
136
|
+
renameSync(source, destination)
|
|
137
|
+
} catch (error) {
|
|
138
|
+
if (error.code === 'EXDEV' || error.code === 'EPERM') {
|
|
139
|
+
const sourceStat = lstatSync(source)
|
|
140
|
+
if (sourceStat.isDirectory()) {
|
|
141
|
+
const files = readdirSync(source)
|
|
142
|
+
for (const file of files) {
|
|
143
|
+
moveFileSync(join(source, file), join(destination, file), options, false, symlinks)
|
|
144
|
+
}
|
|
145
|
+
} else if (sourceStat.isSymbolicLink()) {
|
|
146
|
+
symlinks.push({ source, destination })
|
|
147
|
+
} else {
|
|
148
|
+
copyFileSync(source, destination)
|
|
149
|
+
}
|
|
150
|
+
} else {
|
|
151
|
+
throw error
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
if (root) {
|
|
156
|
+
for (const { source: symSource, destination: symDestination } of symlinks) {
|
|
157
|
+
let target = readlinkSync(symSource)
|
|
158
|
+
// junction symlinks in windows will be absolute paths, so we need to
|
|
159
|
+
// make sure they point to the symlink destination
|
|
160
|
+
if (isAbsolute(target)) {
|
|
161
|
+
target = resolve(symDestination, relative(symSource, target))
|
|
162
|
+
}
|
|
163
|
+
// try to determine what the actual file is so we can create the correct
|
|
164
|
+
// type of symlink in windows
|
|
165
|
+
let targetStat = 'file'
|
|
166
|
+
try {
|
|
167
|
+
targetStat = statSync(resolve(dirname(symSource), target))
|
|
168
|
+
if (targetStat.isDirectory()) {
|
|
169
|
+
targetStat = 'junction'
|
|
170
|
+
}
|
|
171
|
+
} catch {
|
|
172
|
+
// targetStat remains 'file'
|
|
173
|
+
}
|
|
174
|
+
symlinkSync(
|
|
175
|
+
target,
|
|
176
|
+
symDestination,
|
|
177
|
+
targetStat
|
|
178
|
+
)
|
|
179
|
+
}
|
|
180
|
+
rimrafSync(source)
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
module.exports = moveFile
|
|
185
|
+
module.exports.sync = moveFileSync
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
Copyright James Halliday (mail@substack.net) and Isaac Z. Schlueter (i@izs.me)
|
|
2
|
+
|
|
3
|
+
This project is free software released under the MIT license:
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in
|
|
13
|
+
all copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
21
|
+
THE SOFTWARE.
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
const usage = () => `
|
|
4
|
+
usage: mkdirp [DIR1,DIR2..] {OPTIONS}
|
|
5
|
+
|
|
6
|
+
Create each supplied directory including any necessary parent directories
|
|
7
|
+
that don't yet exist.
|
|
8
|
+
|
|
9
|
+
If the directory already exists, do nothing.
|
|
10
|
+
|
|
11
|
+
OPTIONS are:
|
|
12
|
+
|
|
13
|
+
-m<mode> If a directory needs to be created, set the mode as an octal
|
|
14
|
+
--mode=<mode> permission string.
|
|
15
|
+
|
|
16
|
+
-v --version Print the mkdirp version number
|
|
17
|
+
|
|
18
|
+
-h --help Print this helpful banner
|
|
19
|
+
|
|
20
|
+
-p --print Print the first directories created for each path provided
|
|
21
|
+
|
|
22
|
+
--manual Use manual implementation, even if native is available
|
|
23
|
+
`
|
|
24
|
+
|
|
25
|
+
const dirs = []
|
|
26
|
+
const opts = {}
|
|
27
|
+
let print = false
|
|
28
|
+
let dashdash = false
|
|
29
|
+
let manual = false
|
|
30
|
+
for (const arg of process.argv.slice(2)) {
|
|
31
|
+
if (dashdash)
|
|
32
|
+
dirs.push(arg)
|
|
33
|
+
else if (arg === '--')
|
|
34
|
+
dashdash = true
|
|
35
|
+
else if (arg === '--manual')
|
|
36
|
+
manual = true
|
|
37
|
+
else if (/^-h/.test(arg) || /^--help/.test(arg)) {
|
|
38
|
+
console.log(usage())
|
|
39
|
+
process.exit(0)
|
|
40
|
+
} else if (arg === '-v' || arg === '--version') {
|
|
41
|
+
console.log(require('../package.json').version)
|
|
42
|
+
process.exit(0)
|
|
43
|
+
} else if (arg === '-p' || arg === '--print') {
|
|
44
|
+
print = true
|
|
45
|
+
} else if (/^-m/.test(arg) || /^--mode=/.test(arg)) {
|
|
46
|
+
const mode = parseInt(arg.replace(/^(-m|--mode=)/, ''), 8)
|
|
47
|
+
if (isNaN(mode)) {
|
|
48
|
+
console.error(`invalid mode argument: ${arg}\nMust be an octal number.`)
|
|
49
|
+
process.exit(1)
|
|
50
|
+
}
|
|
51
|
+
opts.mode = mode
|
|
52
|
+
} else
|
|
53
|
+
dirs.push(arg)
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
const mkdirp = require('../')
|
|
57
|
+
const impl = manual ? mkdirp.manual : mkdirp
|
|
58
|
+
if (dirs.length === 0)
|
|
59
|
+
console.error(usage())
|
|
60
|
+
|
|
61
|
+
Promise.all(dirs.map(dir => impl(dir, opts)))
|
|
62
|
+
.then(made => print ? made.forEach(m => m && console.log(m)) : null)
|
|
63
|
+
.catch(er => {
|
|
64
|
+
console.error(er.message)
|
|
65
|
+
if (er.code)
|
|
66
|
+
console.error(' code: ' + er.code)
|
|
67
|
+
process.exit(1)
|
|
68
|
+
})
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
const optsArg = require('./lib/opts-arg.js')
|
|
2
|
+
const pathArg = require('./lib/path-arg.js')
|
|
3
|
+
|
|
4
|
+
const {mkdirpNative, mkdirpNativeSync} = require('./lib/mkdirp-native.js')
|
|
5
|
+
const {mkdirpManual, mkdirpManualSync} = require('./lib/mkdirp-manual.js')
|
|
6
|
+
const {useNative, useNativeSync} = require('./lib/use-native.js')
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
const mkdirp = (path, opts) => {
|
|
10
|
+
path = pathArg(path)
|
|
11
|
+
opts = optsArg(opts)
|
|
12
|
+
return useNative(opts)
|
|
13
|
+
? mkdirpNative(path, opts)
|
|
14
|
+
: mkdirpManual(path, opts)
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
const mkdirpSync = (path, opts) => {
|
|
18
|
+
path = pathArg(path)
|
|
19
|
+
opts = optsArg(opts)
|
|
20
|
+
return useNativeSync(opts)
|
|
21
|
+
? mkdirpNativeSync(path, opts)
|
|
22
|
+
: mkdirpManualSync(path, opts)
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
mkdirp.sync = mkdirpSync
|
|
26
|
+
mkdirp.native = (path, opts) => mkdirpNative(pathArg(path), optsArg(opts))
|
|
27
|
+
mkdirp.manual = (path, opts) => mkdirpManual(pathArg(path), optsArg(opts))
|
|
28
|
+
mkdirp.nativeSync = (path, opts) => mkdirpNativeSync(pathArg(path), optsArg(opts))
|
|
29
|
+
mkdirp.manualSync = (path, opts) => mkdirpManualSync(pathArg(path), optsArg(opts))
|
|
30
|
+
|
|
31
|
+
module.exports = mkdirp
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
const {dirname} = require('path')
|
|
2
|
+
|
|
3
|
+
const findMade = (opts, parent, path = undefined) => {
|
|
4
|
+
// we never want the 'made' return value to be a root directory
|
|
5
|
+
if (path === parent)
|
|
6
|
+
return Promise.resolve()
|
|
7
|
+
|
|
8
|
+
return opts.statAsync(parent).then(
|
|
9
|
+
st => st.isDirectory() ? path : undefined, // will fail later
|
|
10
|
+
er => er.code === 'ENOENT'
|
|
11
|
+
? findMade(opts, dirname(parent), parent)
|
|
12
|
+
: undefined
|
|
13
|
+
)
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
const findMadeSync = (opts, parent, path = undefined) => {
|
|
17
|
+
if (path === parent)
|
|
18
|
+
return undefined
|
|
19
|
+
|
|
20
|
+
try {
|
|
21
|
+
return opts.statSync(parent).isDirectory() ? path : undefined
|
|
22
|
+
} catch (er) {
|
|
23
|
+
return er.code === 'ENOENT'
|
|
24
|
+
? findMadeSync(opts, dirname(parent), parent)
|
|
25
|
+
: undefined
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
module.exports = {findMade, findMadeSync}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
const {dirname} = require('path')
|
|
2
|
+
|
|
3
|
+
const mkdirpManual = (path, opts, made) => {
|
|
4
|
+
opts.recursive = false
|
|
5
|
+
const parent = dirname(path)
|
|
6
|
+
if (parent === path) {
|
|
7
|
+
return opts.mkdirAsync(path, opts).catch(er => {
|
|
8
|
+
// swallowed by recursive implementation on posix systems
|
|
9
|
+
// any other error is a failure
|
|
10
|
+
if (er.code !== 'EISDIR')
|
|
11
|
+
throw er
|
|
12
|
+
})
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
return opts.mkdirAsync(path, opts).then(() => made || path, er => {
|
|
16
|
+
if (er.code === 'ENOENT')
|
|
17
|
+
return mkdirpManual(parent, opts)
|
|
18
|
+
.then(made => mkdirpManual(path, opts, made))
|
|
19
|
+
if (er.code !== 'EEXIST' && er.code !== 'EROFS')
|
|
20
|
+
throw er
|
|
21
|
+
return opts.statAsync(path).then(st => {
|
|
22
|
+
if (st.isDirectory())
|
|
23
|
+
return made
|
|
24
|
+
else
|
|
25
|
+
throw er
|
|
26
|
+
}, () => { throw er })
|
|
27
|
+
})
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
const mkdirpManualSync = (path, opts, made) => {
|
|
31
|
+
const parent = dirname(path)
|
|
32
|
+
opts.recursive = false
|
|
33
|
+
|
|
34
|
+
if (parent === path) {
|
|
35
|
+
try {
|
|
36
|
+
return opts.mkdirSync(path, opts)
|
|
37
|
+
} catch (er) {
|
|
38
|
+
// swallowed by recursive implementation on posix systems
|
|
39
|
+
// any other error is a failure
|
|
40
|
+
if (er.code !== 'EISDIR')
|
|
41
|
+
throw er
|
|
42
|
+
else
|
|
43
|
+
return
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
try {
|
|
48
|
+
opts.mkdirSync(path, opts)
|
|
49
|
+
return made || path
|
|
50
|
+
} catch (er) {
|
|
51
|
+
if (er.code === 'ENOENT')
|
|
52
|
+
return mkdirpManualSync(path, opts, mkdirpManualSync(parent, opts, made))
|
|
53
|
+
if (er.code !== 'EEXIST' && er.code !== 'EROFS')
|
|
54
|
+
throw er
|
|
55
|
+
try {
|
|
56
|
+
if (!opts.statSync(path).isDirectory())
|
|
57
|
+
throw er
|
|
58
|
+
} catch (_) {
|
|
59
|
+
throw er
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
module.exports = {mkdirpManual, mkdirpManualSync}
|