nativescript 8.9.0-dev.2 → 8.9.0-dev.4
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/docs/man_pages/project/configuration/widget-ios.md +24 -0
- package/docs/man_pages/project/configuration/widget.md +24 -0
- package/docs/man_pages/start.md +1 -1
- package/lib/android-tools-info.js +11 -22
- package/lib/base-package-manager.js +53 -70
- package/lib/bun-package-manager.js +75 -98
- package/lib/color.js +4 -4
- package/lib/commands/add-platform.js +14 -30
- package/lib/commands/apple-login.js +18 -29
- package/lib/commands/appstore-list.js +34 -45
- package/lib/commands/appstore-upload.js +54 -67
- package/lib/commands/build.js +55 -87
- package/lib/commands/clean.js +169 -184
- package/lib/commands/command-base.js +14 -27
- package/lib/commands/config.js +49 -68
- package/lib/commands/create-project.js +215 -234
- package/lib/commands/debug.js +66 -88
- package/lib/commands/deploy.js +28 -44
- package/lib/commands/embedding/embed.js +37 -56
- package/lib/commands/extensibility/install-extension.js +5 -16
- package/lib/commands/extensibility/list-extensions.js +13 -24
- package/lib/commands/extensibility/uninstall-extension.js +4 -15
- package/lib/commands/fonts.js +30 -41
- package/lib/commands/generate-assets.js +13 -28
- package/lib/commands/generate-help.js +2 -13
- package/lib/commands/generate.js +49 -60
- package/lib/commands/info.js +2 -13
- package/lib/commands/install.js +34 -49
- package/lib/commands/list-platforms.js +14 -25
- package/lib/commands/migrate.js +15 -26
- package/lib/commands/native-add.js +23 -46
- package/lib/commands/platform-clean.js +19 -32
- package/lib/commands/plugin/add-plugin.js +12 -25
- package/lib/commands/plugin/build-plugin.js +31 -44
- package/lib/commands/plugin/create-plugin.js +114 -137
- package/lib/commands/plugin/list-plugins.js +22 -33
- package/lib/commands/plugin/remove-plugin.js +21 -34
- package/lib/commands/plugin/update-plugin.js +20 -33
- package/lib/commands/post-install.js +25 -38
- package/lib/commands/prepare.js +19 -35
- package/lib/commands/preview.js +50 -63
- package/lib/commands/remove-platform.js +7 -18
- package/lib/commands/resources/resources-update.js +14 -27
- package/lib/commands/run.js +55 -76
- package/lib/commands/start.js +6 -19
- package/lib/commands/test-init.js +126 -137
- package/lib/commands/test.js +72 -95
- package/lib/commands/typings.js +126 -142
- package/lib/commands/update-platform.js +26 -39
- package/lib/commands/update.js +31 -44
- package/lib/commands/widget.js +408 -357
- package/lib/common/child-process.js +53 -72
- package/lib/common/codeGeneration/code-entity.js +1 -1
- package/lib/common/codeGeneration/code-printer.js +1 -1
- package/lib/common/command-params.js +7 -18
- package/lib/common/commands/analytics.js +29 -42
- package/lib/common/commands/autocompletion.js +41 -58
- package/lib/common/commands/device/device-log-stream.js +12 -23
- package/lib/common/commands/device/get-file.js +23 -34
- package/lib/common/commands/device/list-applications.js +12 -23
- package/lib/common/commands/device/list-devices.js +72 -87
- package/lib/common/commands/device/list-files.js +24 -35
- package/lib/common/commands/device/put-file.js +23 -34
- package/lib/common/commands/device/run-application.js +12 -25
- package/lib/common/commands/device/stop-application.js +11 -22
- package/lib/common/commands/device/uninstall-application.js +6 -17
- package/lib/common/commands/generate-messages.js +17 -28
- package/lib/common/commands/help.js +20 -33
- package/lib/common/commands/package-manager-get.js +6 -17
- package/lib/common/commands/package-manager-set.js +9 -20
- package/lib/common/commands/post-install.js +2 -13
- package/lib/common/commands/preuninstall.js +27 -42
- package/lib/common/commands/proxy/proxy-base.js +11 -22
- package/lib/common/commands/proxy/proxy-clear.js +4 -15
- package/lib/common/commands/proxy/proxy-get.js +3 -14
- package/lib/common/commands/proxy/proxy-set.js +87 -100
- package/lib/common/constants.js +11 -11
- package/lib/common/decorators.js +10 -22
- package/lib/common/dispatchers.js +84 -101
- package/lib/common/errors.js +92 -107
- package/lib/common/file-system.js +110 -132
- package/lib/common/header.js +1 -2
- package/lib/common/helpers.js +149 -178
- package/lib/common/host-info.js +40 -53
- package/lib/common/http-client.js +104 -119
- package/lib/common/logger/appenders/cli-appender.js +1 -2
- package/lib/common/logger/appenders/emit-appender.js +1 -2
- package/lib/common/logger/layouts/cli-layout.js +1 -2
- package/lib/common/logger/logger.js +4 -4
- package/lib/common/mobile/android/android-application-manager.js +138 -159
- package/lib/common/mobile/android/android-debug-bridge-result-handler.js +1 -1
- package/lib/common/mobile/android/android-debug-bridge.js +92 -117
- package/lib/common/mobile/android/android-device-file-system.js +101 -134
- package/lib/common/mobile/android/android-device-hash-service.js +52 -77
- package/lib/common/mobile/android/android-device.js +73 -90
- package/lib/common/mobile/android/android-emulator-services.js +105 -130
- package/lib/common/mobile/android/android-log-filter.js +1 -1
- package/lib/common/mobile/android/android-virtual-device-service.js +78 -99
- package/lib/common/mobile/android/device-android-debug-bridge.js +13 -29
- package/lib/common/mobile/android/genymotion/genymotion-service.js +94 -121
- package/lib/common/mobile/android/genymotion/virtualbox-service.js +74 -91
- package/lib/common/mobile/android/logcat-helper.js +114 -133
- package/lib/common/mobile/application-manager-base.js +89 -112
- package/lib/common/mobile/device-log-provider-base.js +7 -18
- package/lib/common/mobile/ios/device/ios-application-manager.js +79 -108
- package/lib/common/mobile/ios/device/ios-device-file-system.js +78 -105
- package/lib/common/mobile/ios/device/ios-device-operations.js +106 -143
- package/lib/common/mobile/ios/device/ios-device.js +20 -36
- package/lib/common/mobile/ios/ios-device-base.js +58 -81
- package/lib/common/mobile/ios/simulator/ios-emulator-services.js +66 -95
- package/lib/common/mobile/ios/simulator/ios-sim-resolver.js +1 -1
- package/lib/common/mobile/ios/simulator/ios-simulator-application-manager.js +61 -90
- package/lib/common/mobile/ios/simulator/ios-simulator-device.js +31 -47
- package/lib/common/mobile/ios/simulator/ios-simulator-file-system.js +37 -62
- package/lib/common/mobile/ios/simulator/ios-simulator-log-provider.js +24 -35
- package/lib/common/mobile/mobile-core/android-device-discovery.js +44 -63
- package/lib/common/mobile/mobile-core/android-emulator-discovery.js +23 -34
- package/lib/common/mobile/mobile-core/android-process-service.js +174 -213
- package/lib/common/mobile/mobile-core/device-discovery.js +2 -13
- package/lib/common/mobile/mobile-core/devices-service.js +400 -450
- package/lib/common/mobile/mobile-core/ios-device-discovery.js +25 -36
- package/lib/common/mobile/mobile-core/ios-simulator-discovery.js +49 -64
- package/lib/common/mobile/mobile-helper.js +15 -26
- package/lib/common/mobile/wp8/wp8-emulator-services.js +25 -52
- package/lib/common/opener.js +2 -2
- package/lib/common/prompter.js +91 -106
- package/lib/common/queue.js +9 -20
- package/lib/common/services/auto-completion-service.js +40 -53
- package/lib/common/services/cancellation.js +17 -28
- package/lib/common/services/commands-service.js +156 -179
- package/lib/common/services/help-service.js +130 -155
- package/lib/common/services/hooks-service.js +99 -114
- package/lib/common/services/ios-notification-service.js +21 -34
- package/lib/common/services/json-file-settings-service.js +56 -75
- package/lib/common/services/lock-service.js +35 -52
- package/lib/common/services/message-contract-generator.js +35 -46
- package/lib/common/services/micro-templating-service.js +6 -17
- package/lib/common/services/net-service.js +92 -109
- package/lib/common/services/project-files-manager.js +10 -23
- package/lib/common/services/proxy-service.js +13 -24
- package/lib/common/services/qr.js +13 -24
- package/lib/common/services/settings-service.js +1 -1
- package/lib/common/services/xcode-select-service.js +20 -35
- package/lib/common/utils.js +2 -2
- package/lib/common/validators/project-name-validator.js +1 -1
- package/lib/common/validators/validation-result.js +1 -1
- package/lib/common/verify-node-version.js +2 -3
- package/lib/common/yok.js +25 -38
- package/lib/config.js +41 -56
- package/lib/constants.js +24 -24
- package/lib/controllers/build-controller.js +82 -99
- package/lib/controllers/debug-controller.js +111 -132
- package/lib/controllers/deploy-controller.js +15 -23
- package/lib/controllers/migrate-controller.js +780 -853
- package/lib/controllers/platform-controller.js +74 -89
- package/lib/controllers/prepare-controller.js +241 -270
- package/lib/controllers/run-controller.js +411 -425
- package/lib/controllers/update-controller-base.js +16 -29
- package/lib/controllers/update-controller.js +101 -126
- package/lib/data/prepare-data.js +4 -1
- package/lib/definitions/project.d.ts +24 -24
- package/lib/detached-processes/cleanup-js-subprocess.js +3 -12
- package/lib/detached-processes/cleanup-process.js +16 -25
- package/lib/device-path-provider.js +23 -34
- package/lib/device-sockets/ios/app-debug-socket-proxy-factory.js +155 -170
- package/lib/device-sockets/ios/notification.js +1 -1
- package/lib/device-sockets/ios/socket-request-executor.js +26 -41
- package/lib/helpers/android-bundle-validator-helper.js +1 -1
- package/lib/helpers/deploy-command-helper.js +44 -49
- package/lib/helpers/key-command-helper.js +4 -13
- package/lib/helpers/livesync-command-helper.js +138 -153
- package/lib/helpers/network-connectivity-validator.js +6 -17
- package/lib/helpers/options-track-helper.js +6 -17
- package/lib/helpers/platform-command-helper.js +103 -124
- package/lib/key-commands/index.js +150 -200
- package/lib/nativescript-cli.js +5 -14
- package/lib/node-package-manager.js +90 -113
- package/lib/options.js +4 -13
- package/lib/package-installation-manager.js +132 -167
- package/lib/package-manager.js +64 -87
- package/lib/platform-command-param.js +4 -15
- package/lib/pnpm-package-manager.js +60 -79
- package/lib/project-data.js +1 -1
- package/lib/providers/project-files-provider.js +1 -1
- package/lib/services/analytics/analytics-broker-process.js +13 -22
- package/lib/services/analytics/analytics-broker.js +17 -30
- package/lib/services/analytics/analytics-service.js +165 -201
- package/lib/services/analytics/google-analytics-provider.js +41 -56
- package/lib/services/analytics-settings-service.js +15 -32
- package/lib/services/android/android-bundle-tool-service.js +43 -60
- package/lib/services/android/gradle-build-args-service.js +10 -21
- package/lib/services/android/gradle-build-service.js +22 -35
- package/lib/services/android/gradle-command-service.js +22 -35
- package/lib/services/android-device-debug-service.js +92 -119
- package/lib/services/android-plugin-build-service.js +219 -245
- package/lib/services/android-project-service.js +134 -179
- package/lib/services/android-resources-migration-service.js +57 -70
- package/lib/services/apple-portal/apple-portal-application-service.js +46 -63
- package/lib/services/apple-portal/apple-portal-session-service.js +196 -215
- package/lib/services/apple-portal/srp/srp-wrapper.js +45 -60
- package/lib/services/assets-generation/assets-generation-service.js +114 -128
- package/lib/services/build-artifacts-service.js +9 -20
- package/lib/services/build-info-file-service.js +20 -35
- package/lib/services/cleanup-service.js +47 -76
- package/lib/services/cocoapods-service.js +124 -145
- package/lib/services/device/device-install-app-service.js +54 -71
- package/lib/services/doctor-service.js +106 -125
- package/lib/services/extensibility-service.js +87 -106
- package/lib/services/files-hash-service.js +26 -43
- package/lib/services/hmr-status-service.js +1 -1
- package/lib/services/initialize-service.js +38 -51
- package/lib/services/ios/export-options-plist-service.js +41 -54
- package/lib/services/ios/ios-signing-service.js +171 -190
- package/lib/services/ios/spm-service.js +52 -65
- package/lib/services/ios/xcodebuild-args-service.js +77 -94
- package/lib/services/ios/xcodebuild-command-service.js +14 -25
- package/lib/services/ios/xcodebuild-service.js +52 -71
- package/lib/services/ios-debugger-port-service.js +24 -37
- package/lib/services/ios-device-debug-service.js +75 -102
- package/lib/services/ios-entitlements-service.js +31 -42
- package/lib/services/ios-extensions-service.js +18 -29
- package/lib/services/ios-project-service.js +530 -591
- package/lib/services/ios-provision-service.js +110 -131
- package/lib/services/ios-watch-app-service.js +21 -32
- package/lib/services/ip-service.js +39 -54
- package/lib/services/itmstransporter-service.js +129 -152
- package/lib/services/livesync/android-device-livesync-service-base.js +31 -48
- package/lib/services/livesync/android-device-livesync-service.js +121 -150
- package/lib/services/livesync/android-device-livesync-sockets-service.js +123 -154
- package/lib/services/livesync/android-livesync-service.js +14 -35
- package/lib/services/livesync/android-livesync-tool.js +90 -113
- package/lib/services/livesync/device-livesync-service-base.js +16 -29
- package/lib/services/livesync/ios-device-livesync-service.js +120 -149
- package/lib/services/livesync/ios-livesync-service.js +43 -59
- package/lib/services/livesync/platform-livesync-service-base.js +98 -123
- package/lib/services/log-parser-service.js +1 -1
- package/lib/services/log-source-map-service.js +31 -42
- package/lib/services/marking-mode-service.js +17 -30
- package/lib/services/npm-config-service.js +1 -1
- package/lib/services/pacote-service.js +54 -69
- package/lib/services/performance-service.js +1 -1
- package/lib/services/platform/add-platform-service.js +57 -78
- package/lib/services/platform/platform-validation-service.js +22 -33
- package/lib/services/platform/prepare-native-platform-service.js +51 -64
- package/lib/services/platform-environment-requirements.js +27 -38
- package/lib/services/plugins-service.js +126 -151
- package/lib/services/project-backup-service.js +1 -1
- package/lib/services/project-changes-service.js +126 -143
- package/lib/services/project-cleanup-service.js +65 -78
- package/lib/services/project-config-service.js +78 -88
- package/lib/services/project-data-service.js +112 -129
- package/lib/services/project-name-service.js +28 -43
- package/lib/services/project-service.js +90 -109
- package/lib/services/project-templates-service.js +52 -67
- package/lib/services/start-service.js +41 -59
- package/lib/services/temp-service.js +8 -21
- package/lib/services/terminal-spinner-service.js +15 -26
- package/lib/services/test-execution-service.js +64 -77
- package/lib/services/test-initialization-service.js +2 -2
- package/lib/services/timeline-profiler-service.js +1 -1
- package/lib/services/versions-service.js +120 -139
- package/lib/services/webpack/webpack-compiler-service.js +228 -251
- package/lib/services/xcconfig-service.js +8 -19
- package/lib/sys-info.js +45 -62
- package/lib/tools/node-modules/node-modules-builder.js +16 -27
- package/lib/yarn-package-manager.js +59 -78
- package/lib/yarn2-package-manager.js +62 -81
- package/package.json +67 -82
- package/node_modules/@npmcli/move-file/LICENSE.md +0 -22
- package/node_modules/@npmcli/move-file/README.md +0 -69
- package/node_modules/@npmcli/move-file/lib/index.js +0 -185
- package/node_modules/@npmcli/move-file/node_modules/mkdirp/LICENSE +0 -21
- package/node_modules/@npmcli/move-file/node_modules/mkdirp/bin/cmd.js +0 -68
- package/node_modules/@npmcli/move-file/node_modules/mkdirp/index.js +0 -31
- package/node_modules/@npmcli/move-file/node_modules/mkdirp/lib/find-made.js +0 -29
- package/node_modules/@npmcli/move-file/node_modules/mkdirp/lib/mkdirp-manual.js +0 -64
- package/node_modules/@npmcli/move-file/node_modules/mkdirp/lib/mkdirp-native.js +0 -39
- package/node_modules/@npmcli/move-file/node_modules/mkdirp/lib/opts-arg.js +0 -23
- package/node_modules/@npmcli/move-file/node_modules/mkdirp/lib/path-arg.js +0 -29
- package/node_modules/@npmcli/move-file/node_modules/mkdirp/lib/use-native.js +0 -10
- package/node_modules/@npmcli/move-file/node_modules/mkdirp/package.json +0 -44
- package/node_modules/@npmcli/move-file/node_modules/mkdirp/readme.markdown +0 -266
- package/node_modules/@npmcli/move-file/package.json +0 -47
- package/node_modules/balanced-match/.github/FUNDING.yml +0 -2
- package/node_modules/balanced-match/LICENSE.md +0 -21
- package/node_modules/balanced-match/README.md +0 -97
- package/node_modules/balanced-match/index.js +0 -62
- package/node_modules/balanced-match/package.json +0 -48
- package/node_modules/concat-map/.travis.yml +0 -4
- package/node_modules/concat-map/LICENSE +0 -18
- package/node_modules/concat-map/README.markdown +0 -62
- package/node_modules/concat-map/example/map.js +0 -6
- package/node_modules/concat-map/index.js +0 -13
- package/node_modules/concat-map/package.json +0 -43
- package/node_modules/concat-map/test/map.js +0 -39
- package/node_modules/fs.realpath/LICENSE +0 -43
- package/node_modules/fs.realpath/README.md +0 -33
- package/node_modules/fs.realpath/index.js +0 -66
- package/node_modules/fs.realpath/old.js +0 -303
- package/node_modules/fs.realpath/package.json +0 -26
- package/node_modules/inflight/LICENSE +0 -15
- package/node_modules/inflight/README.md +0 -37
- package/node_modules/inflight/inflight.js +0 -54
- package/node_modules/inflight/package.json +0 -29
- package/node_modules/inherits/LICENSE +0 -16
- package/node_modules/inherits/README.md +0 -42
- package/node_modules/inherits/inherits.js +0 -9
- package/node_modules/inherits/inherits_browser.js +0 -27
- package/node_modules/inherits/package.json +0 -29
- package/node_modules/once/LICENSE +0 -15
- package/node_modules/once/README.md +0 -79
- package/node_modules/once/once.js +0 -42
- package/node_modules/once/package.json +0 -33
- package/node_modules/path-is-absolute/index.js +0 -20
- package/node_modules/path-is-absolute/license +0 -21
- package/node_modules/path-is-absolute/package.json +0 -43
- package/node_modules/path-is-absolute/readme.md +0 -59
- package/node_modules/rimraf/LICENSE +0 -15
- package/node_modules/rimraf/README.md +0 -101
- package/node_modules/rimraf/bin.js +0 -68
- package/node_modules/rimraf/node_modules/brace-expansion/LICENSE +0 -21
- package/node_modules/rimraf/node_modules/brace-expansion/README.md +0 -129
- package/node_modules/rimraf/node_modules/brace-expansion/index.js +0 -201
- package/node_modules/rimraf/node_modules/brace-expansion/package.json +0 -47
- package/node_modules/rimraf/node_modules/glob/LICENSE +0 -21
- package/node_modules/rimraf/node_modules/glob/README.md +0 -378
- package/node_modules/rimraf/node_modules/glob/common.js +0 -238
- package/node_modules/rimraf/node_modules/glob/glob.js +0 -790
- package/node_modules/rimraf/node_modules/glob/package.json +0 -55
- package/node_modules/rimraf/node_modules/glob/sync.js +0 -486
- package/node_modules/rimraf/node_modules/minimatch/LICENSE +0 -15
- package/node_modules/rimraf/node_modules/minimatch/README.md +0 -230
- package/node_modules/rimraf/node_modules/minimatch/minimatch.js +0 -947
- package/node_modules/rimraf/node_modules/minimatch/package.json +0 -33
- package/node_modules/rimraf/package.json +0 -32
- package/node_modules/rimraf/rimraf.js +0 -360
- package/node_modules/stringify-package/LICENSE +0 -13
- package/node_modules/stringify-package/README.md +0 -55
- package/node_modules/stringify-package/index.js +0 -18
- package/node_modules/stringify-package/package.json +0 -38
- package/node_modules/wrappy/LICENSE +0 -15
- package/node_modules/wrappy/README.md +0 -36
- package/node_modules/wrappy/package.json +0 -29
- package/node_modules/wrappy/wrappy.js +0 -33
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"author": "Isaac Z. Schlueter <i@izs.me> (http://blog.izs.me)",
|
|
3
|
-
"name": "minimatch",
|
|
4
|
-
"description": "a glob matcher in javascript",
|
|
5
|
-
"version": "3.1.2",
|
|
6
|
-
"publishConfig": {
|
|
7
|
-
"tag": "v3-legacy"
|
|
8
|
-
},
|
|
9
|
-
"repository": {
|
|
10
|
-
"type": "git",
|
|
11
|
-
"url": "git://github.com/isaacs/minimatch.git"
|
|
12
|
-
},
|
|
13
|
-
"main": "minimatch.js",
|
|
14
|
-
"scripts": {
|
|
15
|
-
"test": "tap",
|
|
16
|
-
"preversion": "npm test",
|
|
17
|
-
"postversion": "npm publish",
|
|
18
|
-
"postpublish": "git push origin --all; git push origin --tags"
|
|
19
|
-
},
|
|
20
|
-
"engines": {
|
|
21
|
-
"node": "*"
|
|
22
|
-
},
|
|
23
|
-
"dependencies": {
|
|
24
|
-
"brace-expansion": "^1.1.7"
|
|
25
|
-
},
|
|
26
|
-
"devDependencies": {
|
|
27
|
-
"tap": "^15.1.6"
|
|
28
|
-
},
|
|
29
|
-
"license": "ISC",
|
|
30
|
-
"files": [
|
|
31
|
-
"minimatch.js"
|
|
32
|
-
]
|
|
33
|
-
}
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "rimraf",
|
|
3
|
-
"version": "3.0.2",
|
|
4
|
-
"main": "rimraf.js",
|
|
5
|
-
"description": "A deep deletion module for node (like `rm -rf`)",
|
|
6
|
-
"author": "Isaac Z. Schlueter <i@izs.me> (http://blog.izs.me/)",
|
|
7
|
-
"license": "ISC",
|
|
8
|
-
"repository": "git://github.com/isaacs/rimraf.git",
|
|
9
|
-
"scripts": {
|
|
10
|
-
"preversion": "npm test",
|
|
11
|
-
"postversion": "npm publish",
|
|
12
|
-
"postpublish": "git push origin --follow-tags",
|
|
13
|
-
"test": "tap test/*.js"
|
|
14
|
-
},
|
|
15
|
-
"bin": "./bin.js",
|
|
16
|
-
"dependencies": {
|
|
17
|
-
"glob": "^7.1.3"
|
|
18
|
-
},
|
|
19
|
-
"files": [
|
|
20
|
-
"LICENSE",
|
|
21
|
-
"README.md",
|
|
22
|
-
"bin.js",
|
|
23
|
-
"rimraf.js"
|
|
24
|
-
],
|
|
25
|
-
"devDependencies": {
|
|
26
|
-
"mkdirp": "^0.5.1",
|
|
27
|
-
"tap": "^12.1.1"
|
|
28
|
-
},
|
|
29
|
-
"funding": {
|
|
30
|
-
"url": "https://github.com/sponsors/isaacs"
|
|
31
|
-
}
|
|
32
|
-
}
|
|
@@ -1,360 +0,0 @@
|
|
|
1
|
-
const assert = require("assert")
|
|
2
|
-
const path = require("path")
|
|
3
|
-
const fs = require("fs")
|
|
4
|
-
let glob = undefined
|
|
5
|
-
try {
|
|
6
|
-
glob = require("glob")
|
|
7
|
-
} catch (_err) {
|
|
8
|
-
// treat glob as optional.
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
const defaultGlobOpts = {
|
|
12
|
-
nosort: true,
|
|
13
|
-
silent: true
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
// for EMFILE handling
|
|
17
|
-
let timeout = 0
|
|
18
|
-
|
|
19
|
-
const isWindows = (process.platform === "win32")
|
|
20
|
-
|
|
21
|
-
const defaults = options => {
|
|
22
|
-
const methods = [
|
|
23
|
-
'unlink',
|
|
24
|
-
'chmod',
|
|
25
|
-
'stat',
|
|
26
|
-
'lstat',
|
|
27
|
-
'rmdir',
|
|
28
|
-
'readdir'
|
|
29
|
-
]
|
|
30
|
-
methods.forEach(m => {
|
|
31
|
-
options[m] = options[m] || fs[m]
|
|
32
|
-
m = m + 'Sync'
|
|
33
|
-
options[m] = options[m] || fs[m]
|
|
34
|
-
})
|
|
35
|
-
|
|
36
|
-
options.maxBusyTries = options.maxBusyTries || 3
|
|
37
|
-
options.emfileWait = options.emfileWait || 1000
|
|
38
|
-
if (options.glob === false) {
|
|
39
|
-
options.disableGlob = true
|
|
40
|
-
}
|
|
41
|
-
if (options.disableGlob !== true && glob === undefined) {
|
|
42
|
-
throw Error('glob dependency not found, set `options.disableGlob = true` if intentional')
|
|
43
|
-
}
|
|
44
|
-
options.disableGlob = options.disableGlob || false
|
|
45
|
-
options.glob = options.glob || defaultGlobOpts
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
const rimraf = (p, options, cb) => {
|
|
49
|
-
if (typeof options === 'function') {
|
|
50
|
-
cb = options
|
|
51
|
-
options = {}
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
assert(p, 'rimraf: missing path')
|
|
55
|
-
assert.equal(typeof p, 'string', 'rimraf: path should be a string')
|
|
56
|
-
assert.equal(typeof cb, 'function', 'rimraf: callback function required')
|
|
57
|
-
assert(options, 'rimraf: invalid options argument provided')
|
|
58
|
-
assert.equal(typeof options, 'object', 'rimraf: options should be object')
|
|
59
|
-
|
|
60
|
-
defaults(options)
|
|
61
|
-
|
|
62
|
-
let busyTries = 0
|
|
63
|
-
let errState = null
|
|
64
|
-
let n = 0
|
|
65
|
-
|
|
66
|
-
const next = (er) => {
|
|
67
|
-
errState = errState || er
|
|
68
|
-
if (--n === 0)
|
|
69
|
-
cb(errState)
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
const afterGlob = (er, results) => {
|
|
73
|
-
if (er)
|
|
74
|
-
return cb(er)
|
|
75
|
-
|
|
76
|
-
n = results.length
|
|
77
|
-
if (n === 0)
|
|
78
|
-
return cb()
|
|
79
|
-
|
|
80
|
-
results.forEach(p => {
|
|
81
|
-
const CB = (er) => {
|
|
82
|
-
if (er) {
|
|
83
|
-
if ((er.code === "EBUSY" || er.code === "ENOTEMPTY" || er.code === "EPERM") &&
|
|
84
|
-
busyTries < options.maxBusyTries) {
|
|
85
|
-
busyTries ++
|
|
86
|
-
// try again, with the same exact callback as this one.
|
|
87
|
-
return setTimeout(() => rimraf_(p, options, CB), busyTries * 100)
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
// this one won't happen if graceful-fs is used.
|
|
91
|
-
if (er.code === "EMFILE" && timeout < options.emfileWait) {
|
|
92
|
-
return setTimeout(() => rimraf_(p, options, CB), timeout ++)
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
// already gone
|
|
96
|
-
if (er.code === "ENOENT") er = null
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
timeout = 0
|
|
100
|
-
next(er)
|
|
101
|
-
}
|
|
102
|
-
rimraf_(p, options, CB)
|
|
103
|
-
})
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
if (options.disableGlob || !glob.hasMagic(p))
|
|
107
|
-
return afterGlob(null, [p])
|
|
108
|
-
|
|
109
|
-
options.lstat(p, (er, stat) => {
|
|
110
|
-
if (!er)
|
|
111
|
-
return afterGlob(null, [p])
|
|
112
|
-
|
|
113
|
-
glob(p, options.glob, afterGlob)
|
|
114
|
-
})
|
|
115
|
-
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
// Two possible strategies.
|
|
119
|
-
// 1. Assume it's a file. unlink it, then do the dir stuff on EPERM or EISDIR
|
|
120
|
-
// 2. Assume it's a directory. readdir, then do the file stuff on ENOTDIR
|
|
121
|
-
//
|
|
122
|
-
// Both result in an extra syscall when you guess wrong. However, there
|
|
123
|
-
// are likely far more normal files in the world than directories. This
|
|
124
|
-
// is based on the assumption that a the average number of files per
|
|
125
|
-
// directory is >= 1.
|
|
126
|
-
//
|
|
127
|
-
// If anyone ever complains about this, then I guess the strategy could
|
|
128
|
-
// be made configurable somehow. But until then, YAGNI.
|
|
129
|
-
const rimraf_ = (p, options, cb) => {
|
|
130
|
-
assert(p)
|
|
131
|
-
assert(options)
|
|
132
|
-
assert(typeof cb === 'function')
|
|
133
|
-
|
|
134
|
-
// sunos lets the root user unlink directories, which is... weird.
|
|
135
|
-
// so we have to lstat here and make sure it's not a dir.
|
|
136
|
-
options.lstat(p, (er, st) => {
|
|
137
|
-
if (er && er.code === "ENOENT")
|
|
138
|
-
return cb(null)
|
|
139
|
-
|
|
140
|
-
// Windows can EPERM on stat. Life is suffering.
|
|
141
|
-
if (er && er.code === "EPERM" && isWindows)
|
|
142
|
-
fixWinEPERM(p, options, er, cb)
|
|
143
|
-
|
|
144
|
-
if (st && st.isDirectory())
|
|
145
|
-
return rmdir(p, options, er, cb)
|
|
146
|
-
|
|
147
|
-
options.unlink(p, er => {
|
|
148
|
-
if (er) {
|
|
149
|
-
if (er.code === "ENOENT")
|
|
150
|
-
return cb(null)
|
|
151
|
-
if (er.code === "EPERM")
|
|
152
|
-
return (isWindows)
|
|
153
|
-
? fixWinEPERM(p, options, er, cb)
|
|
154
|
-
: rmdir(p, options, er, cb)
|
|
155
|
-
if (er.code === "EISDIR")
|
|
156
|
-
return rmdir(p, options, er, cb)
|
|
157
|
-
}
|
|
158
|
-
return cb(er)
|
|
159
|
-
})
|
|
160
|
-
})
|
|
161
|
-
}
|
|
162
|
-
|
|
163
|
-
const fixWinEPERM = (p, options, er, cb) => {
|
|
164
|
-
assert(p)
|
|
165
|
-
assert(options)
|
|
166
|
-
assert(typeof cb === 'function')
|
|
167
|
-
|
|
168
|
-
options.chmod(p, 0o666, er2 => {
|
|
169
|
-
if (er2)
|
|
170
|
-
cb(er2.code === "ENOENT" ? null : er)
|
|
171
|
-
else
|
|
172
|
-
options.stat(p, (er3, stats) => {
|
|
173
|
-
if (er3)
|
|
174
|
-
cb(er3.code === "ENOENT" ? null : er)
|
|
175
|
-
else if (stats.isDirectory())
|
|
176
|
-
rmdir(p, options, er, cb)
|
|
177
|
-
else
|
|
178
|
-
options.unlink(p, cb)
|
|
179
|
-
})
|
|
180
|
-
})
|
|
181
|
-
}
|
|
182
|
-
|
|
183
|
-
const fixWinEPERMSync = (p, options, er) => {
|
|
184
|
-
assert(p)
|
|
185
|
-
assert(options)
|
|
186
|
-
|
|
187
|
-
try {
|
|
188
|
-
options.chmodSync(p, 0o666)
|
|
189
|
-
} catch (er2) {
|
|
190
|
-
if (er2.code === "ENOENT")
|
|
191
|
-
return
|
|
192
|
-
else
|
|
193
|
-
throw er
|
|
194
|
-
}
|
|
195
|
-
|
|
196
|
-
let stats
|
|
197
|
-
try {
|
|
198
|
-
stats = options.statSync(p)
|
|
199
|
-
} catch (er3) {
|
|
200
|
-
if (er3.code === "ENOENT")
|
|
201
|
-
return
|
|
202
|
-
else
|
|
203
|
-
throw er
|
|
204
|
-
}
|
|
205
|
-
|
|
206
|
-
if (stats.isDirectory())
|
|
207
|
-
rmdirSync(p, options, er)
|
|
208
|
-
else
|
|
209
|
-
options.unlinkSync(p)
|
|
210
|
-
}
|
|
211
|
-
|
|
212
|
-
const rmdir = (p, options, originalEr, cb) => {
|
|
213
|
-
assert(p)
|
|
214
|
-
assert(options)
|
|
215
|
-
assert(typeof cb === 'function')
|
|
216
|
-
|
|
217
|
-
// try to rmdir first, and only readdir on ENOTEMPTY or EEXIST (SunOS)
|
|
218
|
-
// if we guessed wrong, and it's not a directory, then
|
|
219
|
-
// raise the original error.
|
|
220
|
-
options.rmdir(p, er => {
|
|
221
|
-
if (er && (er.code === "ENOTEMPTY" || er.code === "EEXIST" || er.code === "EPERM"))
|
|
222
|
-
rmkids(p, options, cb)
|
|
223
|
-
else if (er && er.code === "ENOTDIR")
|
|
224
|
-
cb(originalEr)
|
|
225
|
-
else
|
|
226
|
-
cb(er)
|
|
227
|
-
})
|
|
228
|
-
}
|
|
229
|
-
|
|
230
|
-
const rmkids = (p, options, cb) => {
|
|
231
|
-
assert(p)
|
|
232
|
-
assert(options)
|
|
233
|
-
assert(typeof cb === 'function')
|
|
234
|
-
|
|
235
|
-
options.readdir(p, (er, files) => {
|
|
236
|
-
if (er)
|
|
237
|
-
return cb(er)
|
|
238
|
-
let n = files.length
|
|
239
|
-
if (n === 0)
|
|
240
|
-
return options.rmdir(p, cb)
|
|
241
|
-
let errState
|
|
242
|
-
files.forEach(f => {
|
|
243
|
-
rimraf(path.join(p, f), options, er => {
|
|
244
|
-
if (errState)
|
|
245
|
-
return
|
|
246
|
-
if (er)
|
|
247
|
-
return cb(errState = er)
|
|
248
|
-
if (--n === 0)
|
|
249
|
-
options.rmdir(p, cb)
|
|
250
|
-
})
|
|
251
|
-
})
|
|
252
|
-
})
|
|
253
|
-
}
|
|
254
|
-
|
|
255
|
-
// this looks simpler, and is strictly *faster*, but will
|
|
256
|
-
// tie up the JavaScript thread and fail on excessively
|
|
257
|
-
// deep directory trees.
|
|
258
|
-
const rimrafSync = (p, options) => {
|
|
259
|
-
options = options || {}
|
|
260
|
-
defaults(options)
|
|
261
|
-
|
|
262
|
-
assert(p, 'rimraf: missing path')
|
|
263
|
-
assert.equal(typeof p, 'string', 'rimraf: path should be a string')
|
|
264
|
-
assert(options, 'rimraf: missing options')
|
|
265
|
-
assert.equal(typeof options, 'object', 'rimraf: options should be object')
|
|
266
|
-
|
|
267
|
-
let results
|
|
268
|
-
|
|
269
|
-
if (options.disableGlob || !glob.hasMagic(p)) {
|
|
270
|
-
results = [p]
|
|
271
|
-
} else {
|
|
272
|
-
try {
|
|
273
|
-
options.lstatSync(p)
|
|
274
|
-
results = [p]
|
|
275
|
-
} catch (er) {
|
|
276
|
-
results = glob.sync(p, options.glob)
|
|
277
|
-
}
|
|
278
|
-
}
|
|
279
|
-
|
|
280
|
-
if (!results.length)
|
|
281
|
-
return
|
|
282
|
-
|
|
283
|
-
for (let i = 0; i < results.length; i++) {
|
|
284
|
-
const p = results[i]
|
|
285
|
-
|
|
286
|
-
let st
|
|
287
|
-
try {
|
|
288
|
-
st = options.lstatSync(p)
|
|
289
|
-
} catch (er) {
|
|
290
|
-
if (er.code === "ENOENT")
|
|
291
|
-
return
|
|
292
|
-
|
|
293
|
-
// Windows can EPERM on stat. Life is suffering.
|
|
294
|
-
if (er.code === "EPERM" && isWindows)
|
|
295
|
-
fixWinEPERMSync(p, options, er)
|
|
296
|
-
}
|
|
297
|
-
|
|
298
|
-
try {
|
|
299
|
-
// sunos lets the root user unlink directories, which is... weird.
|
|
300
|
-
if (st && st.isDirectory())
|
|
301
|
-
rmdirSync(p, options, null)
|
|
302
|
-
else
|
|
303
|
-
options.unlinkSync(p)
|
|
304
|
-
} catch (er) {
|
|
305
|
-
if (er.code === "ENOENT")
|
|
306
|
-
return
|
|
307
|
-
if (er.code === "EPERM")
|
|
308
|
-
return isWindows ? fixWinEPERMSync(p, options, er) : rmdirSync(p, options, er)
|
|
309
|
-
if (er.code !== "EISDIR")
|
|
310
|
-
throw er
|
|
311
|
-
|
|
312
|
-
rmdirSync(p, options, er)
|
|
313
|
-
}
|
|
314
|
-
}
|
|
315
|
-
}
|
|
316
|
-
|
|
317
|
-
const rmdirSync = (p, options, originalEr) => {
|
|
318
|
-
assert(p)
|
|
319
|
-
assert(options)
|
|
320
|
-
|
|
321
|
-
try {
|
|
322
|
-
options.rmdirSync(p)
|
|
323
|
-
} catch (er) {
|
|
324
|
-
if (er.code === "ENOENT")
|
|
325
|
-
return
|
|
326
|
-
if (er.code === "ENOTDIR")
|
|
327
|
-
throw originalEr
|
|
328
|
-
if (er.code === "ENOTEMPTY" || er.code === "EEXIST" || er.code === "EPERM")
|
|
329
|
-
rmkidsSync(p, options)
|
|
330
|
-
}
|
|
331
|
-
}
|
|
332
|
-
|
|
333
|
-
const rmkidsSync = (p, options) => {
|
|
334
|
-
assert(p)
|
|
335
|
-
assert(options)
|
|
336
|
-
options.readdirSync(p).forEach(f => rimrafSync(path.join(p, f), options))
|
|
337
|
-
|
|
338
|
-
// We only end up here once we got ENOTEMPTY at least once, and
|
|
339
|
-
// at this point, we are guaranteed to have removed all the kids.
|
|
340
|
-
// So, we know that it won't be ENOENT or ENOTDIR or anything else.
|
|
341
|
-
// try really hard to delete stuff on windows, because it has a
|
|
342
|
-
// PROFOUNDLY annoying habit of not closing handles promptly when
|
|
343
|
-
// files are deleted, resulting in spurious ENOTEMPTY errors.
|
|
344
|
-
const retries = isWindows ? 100 : 1
|
|
345
|
-
let i = 0
|
|
346
|
-
do {
|
|
347
|
-
let threw = true
|
|
348
|
-
try {
|
|
349
|
-
const ret = options.rmdirSync(p, options)
|
|
350
|
-
threw = false
|
|
351
|
-
return ret
|
|
352
|
-
} finally {
|
|
353
|
-
if (++i < retries && threw)
|
|
354
|
-
continue
|
|
355
|
-
}
|
|
356
|
-
} while (true)
|
|
357
|
-
}
|
|
358
|
-
|
|
359
|
-
module.exports = rimraf
|
|
360
|
-
rimraf.sync = rimrafSync
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
Copyright npm, Inc
|
|
2
|
-
|
|
3
|
-
Permission to use, copy, modify, and/or distribute this software for any
|
|
4
|
-
purpose with or without fee is hereby granted, provided that the above
|
|
5
|
-
copyright notice and this permission notice appear in all copies.
|
|
6
|
-
|
|
7
|
-
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
|
8
|
-
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
|
9
|
-
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
|
10
|
-
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
|
11
|
-
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
|
12
|
-
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
|
13
|
-
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
# stringify-package [](https://npm.im/stringify-package) [](https://npm.im/stringify-package) [](https://travis-ci.org/npm/stringify-package) [](https://ci.appveyor.com/project/npm/stringify-package) [](https://coveralls.io/github/npm/stringify-package?branch=latest)
|
|
2
|
-
|
|
3
|
-
[`stringify-package`](https://github.com/npm/stringify-package) is a standalone
|
|
4
|
-
library for writing out package data as a JSON file. It is extracted from npm.
|
|
5
|
-
|
|
6
|
-
## Install
|
|
7
|
-
|
|
8
|
-
`$ npm install stringify-package`
|
|
9
|
-
|
|
10
|
-
## Table of Contents
|
|
11
|
-
|
|
12
|
-
* [Example](#example)
|
|
13
|
-
* [Features](#features)
|
|
14
|
-
* [Contributing](#contributing)
|
|
15
|
-
* [API](#api)
|
|
16
|
-
* [`stringifyPackage`](#stringifypackage)
|
|
17
|
-
|
|
18
|
-
### Example
|
|
19
|
-
|
|
20
|
-
```javascript
|
|
21
|
-
const fs = require('fs')
|
|
22
|
-
const pkg = { /* ... */ }
|
|
23
|
-
|
|
24
|
-
fs.writeFile('package.json', stringifyPackage(pkg), 'utf8', cb(err) => {
|
|
25
|
-
// ...
|
|
26
|
-
})
|
|
27
|
-
```
|
|
28
|
-
|
|
29
|
-
### Features
|
|
30
|
-
|
|
31
|
-
* Ensures consistent file indentation
|
|
32
|
-
To match existing file indentation,
|
|
33
|
-
[`detect-indent`](https://npm.im/detect-indent) is recommended.
|
|
34
|
-
|
|
35
|
-
* Ensures consistent newlines
|
|
36
|
-
To match existing newline characters,
|
|
37
|
-
[`detect-newline`](https://npm.im/detect-newline) is recommended.
|
|
38
|
-
|
|
39
|
-
### Contributing
|
|
40
|
-
|
|
41
|
-
The npm team enthusiastically welcomes contributions and project participation!
|
|
42
|
-
There's a bunch of things you can do if you want to contribute! The [Contributor
|
|
43
|
-
Guide](CONTRIBUTING.md) has all the information you need for everything from
|
|
44
|
-
reporting bugs to contributing entire new features. Please don't hesitate to
|
|
45
|
-
jump in if you'd like to, or even ask us questions if something isn't clear.
|
|
46
|
-
|
|
47
|
-
### API
|
|
48
|
-
|
|
49
|
-
### <a name="stringifypackage"></a> `> stringifyPackage(data, indent, newline) -> String`
|
|
50
|
-
|
|
51
|
-
#### Arguments
|
|
52
|
-
|
|
53
|
-
* `data` - the package data as an object to be stringified
|
|
54
|
-
* `indent` - the number of spaces to use for each level of indentation (defaults to 2)
|
|
55
|
-
* `newline` - the character(s) to be used as a line terminator
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
'use strict'
|
|
2
|
-
|
|
3
|
-
module.exports = stringifyPackage
|
|
4
|
-
|
|
5
|
-
const DEFAULT_INDENT = 2
|
|
6
|
-
const CRLF = '\r\n'
|
|
7
|
-
const LF = '\n'
|
|
8
|
-
|
|
9
|
-
function stringifyPackage (data, indent, newline) {
|
|
10
|
-
indent = indent || (indent === 0 ? 0 : DEFAULT_INDENT)
|
|
11
|
-
const json = JSON.stringify(data, null, indent)
|
|
12
|
-
|
|
13
|
-
if (newline === CRLF) {
|
|
14
|
-
return json.replace(/\n/g, CRLF) + CRLF
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
return json + LF
|
|
18
|
-
}
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "stringify-package",
|
|
3
|
-
"version": "1.0.1",
|
|
4
|
-
"description": "stringifies npm-written json files",
|
|
5
|
-
"main": "index.js",
|
|
6
|
-
"files": [
|
|
7
|
-
"index.js"
|
|
8
|
-
],
|
|
9
|
-
"repository": {
|
|
10
|
-
"type": "git",
|
|
11
|
-
"url": "git+https://github.com/npm/stringify-package.git"
|
|
12
|
-
},
|
|
13
|
-
"keywords": [
|
|
14
|
-
"npm",
|
|
15
|
-
"json",
|
|
16
|
-
"stringify",
|
|
17
|
-
"package.json"
|
|
18
|
-
],
|
|
19
|
-
"author": "Kat Marchán <kzm@zkat.tech>",
|
|
20
|
-
"license": "ISC",
|
|
21
|
-
"bugs": {
|
|
22
|
-
"url": "https://github.com/npm/stringify-package/issues"
|
|
23
|
-
},
|
|
24
|
-
"homepage": "https://github.com/npm/stringify-package",
|
|
25
|
-
"scripts": {
|
|
26
|
-
"prerelease": "npm t",
|
|
27
|
-
"release": "standard-version -s",
|
|
28
|
-
"postrelease": "npm publish",
|
|
29
|
-
"postpublish": "git push --follow-tags",
|
|
30
|
-
"pretest": "standard",
|
|
31
|
-
"test": "tap -J --coverage --100 test/*.js"
|
|
32
|
-
},
|
|
33
|
-
"devDependencies": {
|
|
34
|
-
"standard": "11",
|
|
35
|
-
"standard-version": "4",
|
|
36
|
-
"tap": "12"
|
|
37
|
-
}
|
|
38
|
-
}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
The ISC License
|
|
2
|
-
|
|
3
|
-
Copyright (c) Isaac Z. Schlueter and Contributors
|
|
4
|
-
|
|
5
|
-
Permission to use, copy, modify, and/or distribute this software for any
|
|
6
|
-
purpose with or without fee is hereby granted, provided that the above
|
|
7
|
-
copyright notice and this permission notice appear in all copies.
|
|
8
|
-
|
|
9
|
-
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
|
10
|
-
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
|
11
|
-
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
|
12
|
-
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
|
13
|
-
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
|
14
|
-
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
|
|
15
|
-
IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
# wrappy
|
|
2
|
-
|
|
3
|
-
Callback wrapping utility
|
|
4
|
-
|
|
5
|
-
## USAGE
|
|
6
|
-
|
|
7
|
-
```javascript
|
|
8
|
-
var wrappy = require("wrappy")
|
|
9
|
-
|
|
10
|
-
// var wrapper = wrappy(wrapperFunction)
|
|
11
|
-
|
|
12
|
-
// make sure a cb is called only once
|
|
13
|
-
// See also: http://npm.im/once for this specific use case
|
|
14
|
-
var once = wrappy(function (cb) {
|
|
15
|
-
var called = false
|
|
16
|
-
return function () {
|
|
17
|
-
if (called) return
|
|
18
|
-
called = true
|
|
19
|
-
return cb.apply(this, arguments)
|
|
20
|
-
}
|
|
21
|
-
})
|
|
22
|
-
|
|
23
|
-
function printBoo () {
|
|
24
|
-
console.log('boo')
|
|
25
|
-
}
|
|
26
|
-
// has some rando property
|
|
27
|
-
printBoo.iAmBooPrinter = true
|
|
28
|
-
|
|
29
|
-
var onlyPrintOnce = once(printBoo)
|
|
30
|
-
|
|
31
|
-
onlyPrintOnce() // prints 'boo'
|
|
32
|
-
onlyPrintOnce() // does nothing
|
|
33
|
-
|
|
34
|
-
// random property is retained!
|
|
35
|
-
assert.equal(onlyPrintOnce.iAmBooPrinter, true)
|
|
36
|
-
```
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "wrappy",
|
|
3
|
-
"version": "1.0.2",
|
|
4
|
-
"description": "Callback wrapping utility",
|
|
5
|
-
"main": "wrappy.js",
|
|
6
|
-
"files": [
|
|
7
|
-
"wrappy.js"
|
|
8
|
-
],
|
|
9
|
-
"directories": {
|
|
10
|
-
"test": "test"
|
|
11
|
-
},
|
|
12
|
-
"dependencies": {},
|
|
13
|
-
"devDependencies": {
|
|
14
|
-
"tap": "^2.3.1"
|
|
15
|
-
},
|
|
16
|
-
"scripts": {
|
|
17
|
-
"test": "tap --coverage test/*.js"
|
|
18
|
-
},
|
|
19
|
-
"repository": {
|
|
20
|
-
"type": "git",
|
|
21
|
-
"url": "https://github.com/npm/wrappy"
|
|
22
|
-
},
|
|
23
|
-
"author": "Isaac Z. Schlueter <i@izs.me> (http://blog.izs.me/)",
|
|
24
|
-
"license": "ISC",
|
|
25
|
-
"bugs": {
|
|
26
|
-
"url": "https://github.com/npm/wrappy/issues"
|
|
27
|
-
},
|
|
28
|
-
"homepage": "https://github.com/npm/wrappy"
|
|
29
|
-
}
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
// Returns a wrapper function that returns a wrapped callback
|
|
2
|
-
// The wrapper function should do some stuff, and return a
|
|
3
|
-
// presumably different callback function.
|
|
4
|
-
// This makes sure that own properties are retained, so that
|
|
5
|
-
// decorations and such are not lost along the way.
|
|
6
|
-
module.exports = wrappy
|
|
7
|
-
function wrappy (fn, cb) {
|
|
8
|
-
if (fn && cb) return wrappy(fn)(cb)
|
|
9
|
-
|
|
10
|
-
if (typeof fn !== 'function')
|
|
11
|
-
throw new TypeError('need wrapper function')
|
|
12
|
-
|
|
13
|
-
Object.keys(fn).forEach(function (k) {
|
|
14
|
-
wrapper[k] = fn[k]
|
|
15
|
-
})
|
|
16
|
-
|
|
17
|
-
return wrapper
|
|
18
|
-
|
|
19
|
-
function wrapper() {
|
|
20
|
-
var args = new Array(arguments.length)
|
|
21
|
-
for (var i = 0; i < args.length; i++) {
|
|
22
|
-
args[i] = arguments[i]
|
|
23
|
-
}
|
|
24
|
-
var ret = fn.apply(this, args)
|
|
25
|
-
var cb = args[args.length-1]
|
|
26
|
-
if (typeof ret === 'function' && ret !== cb) {
|
|
27
|
-
Object.keys(cb).forEach(function (k) {
|
|
28
|
-
ret[k] = cb[k]
|
|
29
|
-
})
|
|
30
|
-
}
|
|
31
|
-
return ret
|
|
32
|
-
}
|
|
33
|
-
}
|