node-datachannel 0.5.0-dev → 0.5.0
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/CMakeLists.txt +1 -1
- package/examples/electron-demo/package-lock.json +164 -419
- package/examples/electron-demo/package.json +2 -2
- package/lib/index.d.ts +5 -0
- package/lib/index.js +33 -2
- package/package.json +1 -5
- package/polyfill/RTCDtlsTransport.js +30 -12
- package/polyfill/RTCIceCandidate.js +1 -1
- package/polyfill/RTCIceTransport.js +48 -21
- package/polyfill/RTCPeerConnection.js +46 -23
- package/polyfill/RTCSctpTransport.js +33 -14
- package/src/peer-connection-wrapper.cpp +50 -0
- package/src/peer-connection-wrapper.h +2 -0
- package/test/connectivity.js +1 -1
- package/test/polyfill-connectivity.js +2 -1
- package/test/test.js +2 -2
- package/examples/build/Dockerfile +0 -30
- package/examples/build/README.md +0 -24
- package/node_modules/base64-js/LICENSE +0 -21
- package/node_modules/base64-js/README.md +0 -34
- package/node_modules/base64-js/base64js.min.js +0 -1
- package/node_modules/base64-js/index.d.ts +0 -3
- package/node_modules/base64-js/index.js +0 -150
- package/node_modules/base64-js/package.json +0 -47
- package/node_modules/buffer/AUTHORS.md +0 -70
- package/node_modules/buffer/LICENSE +0 -21
- package/node_modules/buffer/README.md +0 -410
- package/node_modules/buffer/index.d.ts +0 -186
- package/node_modules/buffer/index.js +0 -1817
- package/node_modules/buffer/package.json +0 -96
- package/node_modules/chownr/LICENSE +0 -15
- package/node_modules/chownr/README.md +0 -3
- package/node_modules/chownr/chownr.js +0 -167
- package/node_modules/chownr/package.json +0 -29
- package/node_modules/decompress-response/index.d.ts +0 -22
- package/node_modules/decompress-response/index.js +0 -58
- package/node_modules/decompress-response/license +0 -9
- package/node_modules/decompress-response/package.json +0 -56
- package/node_modules/decompress-response/readme.md +0 -48
- package/node_modules/deep-extend/CHANGELOG.md +0 -46
- package/node_modules/deep-extend/LICENSE +0 -20
- package/node_modules/deep-extend/README.md +0 -91
- package/node_modules/deep-extend/index.js +0 -1
- package/node_modules/deep-extend/lib/deep-extend.js +0 -150
- package/node_modules/deep-extend/package.json +0 -62
- package/node_modules/detect-libc/LICENSE +0 -201
- package/node_modules/detect-libc/README.md +0 -163
- package/node_modules/detect-libc/index.d.ts +0 -14
- package/node_modules/detect-libc/lib/detect-libc.js +0 -279
- package/node_modules/detect-libc/lib/filesystem.js +0 -41
- package/node_modules/detect-libc/lib/process.js +0 -19
- package/node_modules/detect-libc/package.json +0 -40
- package/node_modules/end-of-stream/LICENSE +0 -21
- package/node_modules/end-of-stream/README.md +0 -54
- package/node_modules/end-of-stream/index.js +0 -94
- package/node_modules/end-of-stream/package.json +0 -37
- package/node_modules/expand-template/.travis.yml +0 -6
- package/node_modules/expand-template/LICENSE +0 -21
- package/node_modules/expand-template/README.md +0 -43
- package/node_modules/expand-template/index.js +0 -26
- package/node_modules/expand-template/package.json +0 -29
- package/node_modules/expand-template/test.js +0 -67
- package/node_modules/fs-constants/LICENSE +0 -21
- package/node_modules/fs-constants/README.md +0 -26
- package/node_modules/fs-constants/browser.js +0 -1
- package/node_modules/fs-constants/index.js +0 -1
- package/node_modules/fs-constants/package.json +0 -19
- package/node_modules/github-from-package/.travis.yml +0 -4
- package/node_modules/github-from-package/LICENSE +0 -18
- package/node_modules/github-from-package/example/package.json +0 -8
- package/node_modules/github-from-package/example/url.js +0 -3
- package/node_modules/github-from-package/index.js +0 -17
- package/node_modules/github-from-package/package.json +0 -30
- package/node_modules/github-from-package/readme.markdown +0 -53
- package/node_modules/github-from-package/test/a.json +0 -8
- package/node_modules/github-from-package/test/b.json +0 -5
- package/node_modules/github-from-package/test/c.json +0 -5
- package/node_modules/github-from-package/test/d.json +0 -7
- package/node_modules/github-from-package/test/e.json +0 -5
- package/node_modules/github-from-package/test/url.js +0 -19
- package/node_modules/ieee754/LICENSE +0 -11
- package/node_modules/ieee754/README.md +0 -51
- package/node_modules/ieee754/index.d.ts +0 -10
- package/node_modules/ieee754/index.js +0 -85
- package/node_modules/ieee754/package.json +0 -52
- 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/ini/LICENSE +0 -15
- package/node_modules/ini/README.md +0 -102
- package/node_modules/ini/ini.js +0 -206
- package/node_modules/ini/package.json +0 -33
- package/node_modules/mimic-response/index.d.ts +0 -17
- package/node_modules/mimic-response/index.js +0 -77
- package/node_modules/mimic-response/license +0 -9
- package/node_modules/mimic-response/package.json +0 -42
- package/node_modules/mimic-response/readme.md +0 -78
- package/node_modules/minimist/.eslintrc +0 -29
- package/node_modules/minimist/.github/FUNDING.yml +0 -12
- package/node_modules/minimist/.nycrc +0 -14
- package/node_modules/minimist/CHANGELOG.md +0 -298
- package/node_modules/minimist/LICENSE +0 -18
- package/node_modules/minimist/README.md +0 -121
- package/node_modules/minimist/example/parse.js +0 -4
- package/node_modules/minimist/index.js +0 -263
- package/node_modules/minimist/package.json +0 -75
- package/node_modules/minimist/test/all_bool.js +0 -34
- package/node_modules/minimist/test/bool.js +0 -177
- package/node_modules/minimist/test/dash.js +0 -43
- package/node_modules/minimist/test/default_bool.js +0 -37
- package/node_modules/minimist/test/dotted.js +0 -24
- package/node_modules/minimist/test/kv_short.js +0 -32
- package/node_modules/minimist/test/long.js +0 -33
- package/node_modules/minimist/test/num.js +0 -38
- package/node_modules/minimist/test/parse.js +0 -209
- package/node_modules/minimist/test/parse_modified.js +0 -11
- package/node_modules/minimist/test/proto.js +0 -64
- package/node_modules/minimist/test/short.js +0 -69
- package/node_modules/minimist/test/stop_early.js +0 -17
- package/node_modules/minimist/test/unknown.js +0 -104
- package/node_modules/minimist/test/whitespace.js +0 -10
- package/node_modules/mkdirp-classic/LICENSE +0 -21
- package/node_modules/mkdirp-classic/README.md +0 -18
- package/node_modules/mkdirp-classic/index.js +0 -98
- package/node_modules/mkdirp-classic/package.json +0 -18
- package/node_modules/napi-build-utils/LICENSE +0 -21
- package/node_modules/napi-build-utils/README.md +0 -48
- package/node_modules/napi-build-utils/index.js +0 -213
- package/node_modules/napi-build-utils/index.md +0 -81
- package/node_modules/napi-build-utils/package.json +0 -41
- package/node_modules/node-abi/LICENSE +0 -21
- package/node_modules/node-abi/README.md +0 -52
- package/node_modules/node-abi/abi_registry.json +0 -276
- package/node_modules/node-abi/index.js +0 -179
- package/node_modules/node-abi/package.json +0 -41
- 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/prebuild-install/CHANGELOG.md +0 -116
- package/node_modules/prebuild-install/CONTRIBUTING.md +0 -6
- package/node_modules/prebuild-install/LICENSE +0 -21
- package/node_modules/prebuild-install/README.md +0 -163
- package/node_modules/prebuild-install/asset.js +0 -44
- package/node_modules/prebuild-install/bin.js +0 -78
- package/node_modules/prebuild-install/download.js +0 -142
- package/node_modules/prebuild-install/error.js +0 -14
- package/node_modules/prebuild-install/help.txt +0 -16
- package/node_modules/prebuild-install/index.js +0 -1
- package/node_modules/prebuild-install/log.js +0 -33
- package/node_modules/prebuild-install/package.json +0 -67
- package/node_modules/prebuild-install/proxy.js +0 -35
- package/node_modules/prebuild-install/rc.js +0 -64
- package/node_modules/prebuild-install/util.js +0 -143
- package/node_modules/pump/.travis.yml +0 -5
- package/node_modules/pump/LICENSE +0 -21
- package/node_modules/pump/README.md +0 -65
- package/node_modules/pump/index.js +0 -82
- package/node_modules/pump/package.json +0 -24
- package/node_modules/pump/test-browser.js +0 -66
- package/node_modules/pump/test-node.js +0 -53
- package/node_modules/rc/LICENSE.APACHE2 +0 -15
- package/node_modules/rc/LICENSE.BSD +0 -26
- package/node_modules/rc/LICENSE.MIT +0 -24
- package/node_modules/rc/README.md +0 -227
- package/node_modules/rc/browser.js +0 -7
- package/node_modules/rc/cli.js +0 -4
- package/node_modules/rc/index.js +0 -53
- package/node_modules/rc/lib/utils.js +0 -104
- package/node_modules/rc/node_modules/strip-json-comments/index.js +0 -70
- package/node_modules/rc/node_modules/strip-json-comments/license +0 -21
- package/node_modules/rc/node_modules/strip-json-comments/package.json +0 -42
- package/node_modules/rc/node_modules/strip-json-comments/readme.md +0 -64
- package/node_modules/rc/package.json +0 -29
- package/node_modules/rc/test/ini.js +0 -16
- package/node_modules/rc/test/nested-env-vars.js +0 -50
- package/node_modules/rc/test/test.js +0 -59
- package/node_modules/safe-buffer/LICENSE +0 -21
- package/node_modules/safe-buffer/README.md +0 -584
- package/node_modules/safe-buffer/index.d.ts +0 -187
- package/node_modules/safe-buffer/index.js +0 -65
- package/node_modules/safe-buffer/package.json +0 -51
- package/node_modules/semver/LICENSE +0 -15
- package/node_modules/semver/README.md +0 -637
- package/node_modules/semver/bin/semver.js +0 -197
- package/node_modules/semver/classes/comparator.js +0 -141
- package/node_modules/semver/classes/index.js +0 -5
- package/node_modules/semver/classes/range.js +0 -539
- package/node_modules/semver/classes/semver.js +0 -302
- package/node_modules/semver/functions/clean.js +0 -6
- package/node_modules/semver/functions/cmp.js +0 -52
- package/node_modules/semver/functions/coerce.js +0 -52
- package/node_modules/semver/functions/compare-build.js +0 -7
- package/node_modules/semver/functions/compare-loose.js +0 -3
- package/node_modules/semver/functions/compare.js +0 -5
- package/node_modules/semver/functions/diff.js +0 -65
- package/node_modules/semver/functions/eq.js +0 -3
- package/node_modules/semver/functions/gt.js +0 -3
- package/node_modules/semver/functions/gte.js +0 -3
- package/node_modules/semver/functions/inc.js +0 -19
- package/node_modules/semver/functions/lt.js +0 -3
- package/node_modules/semver/functions/lte.js +0 -3
- package/node_modules/semver/functions/major.js +0 -3
- package/node_modules/semver/functions/minor.js +0 -3
- package/node_modules/semver/functions/neq.js +0 -3
- package/node_modules/semver/functions/parse.js +0 -16
- package/node_modules/semver/functions/patch.js +0 -3
- package/node_modules/semver/functions/prerelease.js +0 -6
- package/node_modules/semver/functions/rcompare.js +0 -3
- package/node_modules/semver/functions/rsort.js +0 -3
- package/node_modules/semver/functions/satisfies.js +0 -10
- package/node_modules/semver/functions/sort.js +0 -3
- package/node_modules/semver/functions/valid.js +0 -6
- package/node_modules/semver/index.js +0 -89
- package/node_modules/semver/internal/constants.js +0 -35
- package/node_modules/semver/internal/debug.js +0 -9
- package/node_modules/semver/internal/identifiers.js +0 -23
- package/node_modules/semver/internal/parse-options.js +0 -15
- package/node_modules/semver/internal/re.js +0 -212
- package/node_modules/semver/node_modules/lru-cache/LICENSE +0 -15
- package/node_modules/semver/node_modules/lru-cache/README.md +0 -166
- package/node_modules/semver/node_modules/lru-cache/index.js +0 -334
- package/node_modules/semver/node_modules/lru-cache/package.json +0 -34
- package/node_modules/semver/node_modules/yallist/LICENSE +0 -15
- package/node_modules/semver/node_modules/yallist/README.md +0 -204
- package/node_modules/semver/node_modules/yallist/iterator.js +0 -8
- package/node_modules/semver/node_modules/yallist/package.json +0 -29
- package/node_modules/semver/node_modules/yallist/yallist.js +0 -426
- package/node_modules/semver/package.json +0 -87
- package/node_modules/semver/preload.js +0 -2
- package/node_modules/semver/range.bnf +0 -16
- package/node_modules/semver/ranges/gtr.js +0 -4
- package/node_modules/semver/ranges/intersects.js +0 -7
- package/node_modules/semver/ranges/ltr.js +0 -4
- package/node_modules/semver/ranges/max-satisfying.js +0 -25
- package/node_modules/semver/ranges/min-satisfying.js +0 -24
- package/node_modules/semver/ranges/min-version.js +0 -61
- package/node_modules/semver/ranges/outside.js +0 -80
- package/node_modules/semver/ranges/simplify.js +0 -47
- package/node_modules/semver/ranges/subset.js +0 -247
- package/node_modules/semver/ranges/to-comparators.js +0 -8
- package/node_modules/semver/ranges/valid.js +0 -11
- package/node_modules/simple-concat/.travis.yml +0 -3
- package/node_modules/simple-concat/LICENSE +0 -20
- package/node_modules/simple-concat/README.md +0 -44
- package/node_modules/simple-concat/index.js +0 -15
- package/node_modules/simple-concat/package.json +0 -47
- package/node_modules/simple-concat/test/basic.js +0 -41
- package/node_modules/simple-get/.github/dependabot.yml +0 -15
- package/node_modules/simple-get/.github/workflows/ci.yml +0 -23
- package/node_modules/simple-get/LICENSE +0 -20
- package/node_modules/simple-get/README.md +0 -333
- package/node_modules/simple-get/index.js +0 -108
- package/node_modules/simple-get/package.json +0 -67
- package/node_modules/tar-fs/.travis.yml +0 -6
- package/node_modules/tar-fs/LICENSE +0 -21
- package/node_modules/tar-fs/README.md +0 -165
- package/node_modules/tar-fs/index.js +0 -351
- package/node_modules/tar-fs/node_modules/bl/.travis.yml +0 -17
- package/node_modules/tar-fs/node_modules/bl/BufferList.js +0 -396
- package/node_modules/tar-fs/node_modules/bl/LICENSE.md +0 -13
- package/node_modules/tar-fs/node_modules/bl/README.md +0 -247
- package/node_modules/tar-fs/node_modules/bl/bl.js +0 -84
- package/node_modules/tar-fs/node_modules/bl/package.json +0 -37
- package/node_modules/tar-fs/node_modules/bl/test/convert.js +0 -21
- package/node_modules/tar-fs/node_modules/bl/test/indexOf.js +0 -492
- package/node_modules/tar-fs/node_modules/bl/test/isBufferList.js +0 -32
- package/node_modules/tar-fs/node_modules/bl/test/test.js +0 -869
- package/node_modules/tar-fs/node_modules/readable-stream/CONTRIBUTING.md +0 -38
- package/node_modules/tar-fs/node_modules/readable-stream/GOVERNANCE.md +0 -136
- package/node_modules/tar-fs/node_modules/readable-stream/LICENSE +0 -47
- package/node_modules/tar-fs/node_modules/readable-stream/README.md +0 -106
- package/node_modules/tar-fs/node_modules/readable-stream/errors-browser.js +0 -127
- package/node_modules/tar-fs/node_modules/readable-stream/errors.js +0 -116
- package/node_modules/tar-fs/node_modules/readable-stream/experimentalWarning.js +0 -17
- package/node_modules/tar-fs/node_modules/readable-stream/lib/_stream_duplex.js +0 -126
- package/node_modules/tar-fs/node_modules/readable-stream/lib/_stream_passthrough.js +0 -37
- package/node_modules/tar-fs/node_modules/readable-stream/lib/_stream_readable.js +0 -1027
- package/node_modules/tar-fs/node_modules/readable-stream/lib/_stream_transform.js +0 -190
- package/node_modules/tar-fs/node_modules/readable-stream/lib/_stream_writable.js +0 -641
- package/node_modules/tar-fs/node_modules/readable-stream/lib/internal/streams/async_iterator.js +0 -180
- package/node_modules/tar-fs/node_modules/readable-stream/lib/internal/streams/buffer_list.js +0 -183
- package/node_modules/tar-fs/node_modules/readable-stream/lib/internal/streams/destroy.js +0 -96
- package/node_modules/tar-fs/node_modules/readable-stream/lib/internal/streams/end-of-stream.js +0 -86
- package/node_modules/tar-fs/node_modules/readable-stream/lib/internal/streams/from-browser.js +0 -3
- package/node_modules/tar-fs/node_modules/readable-stream/lib/internal/streams/from.js +0 -52
- package/node_modules/tar-fs/node_modules/readable-stream/lib/internal/streams/pipeline.js +0 -86
- package/node_modules/tar-fs/node_modules/readable-stream/lib/internal/streams/state.js +0 -22
- package/node_modules/tar-fs/node_modules/readable-stream/lib/internal/streams/stream-browser.js +0 -1
- package/node_modules/tar-fs/node_modules/readable-stream/lib/internal/streams/stream.js +0 -1
- package/node_modules/tar-fs/node_modules/readable-stream/package.json +0 -68
- package/node_modules/tar-fs/node_modules/readable-stream/readable-browser.js +0 -9
- package/node_modules/tar-fs/node_modules/readable-stream/readable.js +0 -16
- package/node_modules/tar-fs/node_modules/string_decoder/LICENSE +0 -48
- package/node_modules/tar-fs/node_modules/string_decoder/README.md +0 -47
- package/node_modules/tar-fs/node_modules/string_decoder/lib/string_decoder.js +0 -296
- package/node_modules/tar-fs/node_modules/string_decoder/package.json +0 -34
- package/node_modules/tar-fs/node_modules/tar-stream/LICENSE +0 -21
- package/node_modules/tar-fs/node_modules/tar-stream/README.md +0 -168
- package/node_modules/tar-fs/node_modules/tar-stream/extract.js +0 -257
- package/node_modules/tar-fs/node_modules/tar-stream/headers.js +0 -295
- package/node_modules/tar-fs/node_modules/tar-stream/index.js +0 -2
- package/node_modules/tar-fs/node_modules/tar-stream/pack.js +0 -255
- package/node_modules/tar-fs/node_modules/tar-stream/package.json +0 -58
- package/node_modules/tar-fs/node_modules/tar-stream/sandbox.js +0 -11
- package/node_modules/tar-fs/package.json +0 -41
- package/node_modules/tar-fs/test/fixtures/a/hello.txt +0 -1
- package/node_modules/tar-fs/test/fixtures/b/a/test.txt +0 -1
- package/node_modules/tar-fs/test/fixtures/d/file1 +0 -0
- package/node_modules/tar-fs/test/fixtures/d/file2 +0 -0
- package/node_modules/tar-fs/test/fixtures/d/sub-dir/file5 +0 -0
- package/node_modules/tar-fs/test/fixtures/d/sub-files/file3 +0 -0
- package/node_modules/tar-fs/test/fixtures/d/sub-files/file4 +0 -0
- package/node_modules/tar-fs/test/fixtures/e/directory/.ignore +0 -0
- package/node_modules/tar-fs/test/fixtures/e/file +0 -0
- package/node_modules/tar-fs/test/fixtures/invalid.tar +0 -0
- package/node_modules/tar-fs/test/index.js +0 -346
- package/node_modules/tunnel-agent/LICENSE +0 -55
- package/node_modules/tunnel-agent/README.md +0 -4
- package/node_modules/tunnel-agent/index.js +0 -244
- package/node_modules/tunnel-agent/package.json +0 -22
- package/node_modules/util-deprecate/History.md +0 -16
- package/node_modules/util-deprecate/LICENSE +0 -24
- package/node_modules/util-deprecate/README.md +0 -53
- package/node_modules/util-deprecate/browser.js +0 -67
- package/node_modules/util-deprecate/node.js +0 -6
- package/node_modules/util-deprecate/package.json +0 -27
- 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,333 +0,0 @@
|
|
|
1
|
-
# simple-get [![ci][ci-image]][ci-url] [![npm][npm-image]][npm-url] [![downloads][downloads-image]][downloads-url] [![javascript style guide][standard-image]][standard-url]
|
|
2
|
-
|
|
3
|
-
[ci-image]: https://img.shields.io/github/workflow/status/feross/simple-get/ci/master
|
|
4
|
-
[ci-url]: https://github.com/feross/simple-get/actions
|
|
5
|
-
[npm-image]: https://img.shields.io/npm/v/simple-get.svg
|
|
6
|
-
[npm-url]: https://npmjs.org/package/simple-get
|
|
7
|
-
[downloads-image]: https://img.shields.io/npm/dm/simple-get.svg
|
|
8
|
-
[downloads-url]: https://npmjs.org/package/simple-get
|
|
9
|
-
[standard-image]: https://img.shields.io/badge/code_style-standard-brightgreen.svg
|
|
10
|
-
[standard-url]: https://standardjs.com
|
|
11
|
-
|
|
12
|
-
### Simplest way to make http get requests
|
|
13
|
-
|
|
14
|
-
## features
|
|
15
|
-
|
|
16
|
-
This module is the lightest possible wrapper on top of node.js `http`, but supporting these essential features:
|
|
17
|
-
|
|
18
|
-
- follows redirects
|
|
19
|
-
- automatically handles gzip/deflate responses
|
|
20
|
-
- supports HTTPS
|
|
21
|
-
- supports specifying a timeout
|
|
22
|
-
- supports convenience `url` key so there's no need to use `url.parse` on the url when specifying options
|
|
23
|
-
- composes well with npm packages for features like cookies, proxies, form data, & OAuth
|
|
24
|
-
|
|
25
|
-
All this in < 100 lines of code.
|
|
26
|
-
|
|
27
|
-
## install
|
|
28
|
-
|
|
29
|
-
```
|
|
30
|
-
npm install simple-get
|
|
31
|
-
```
|
|
32
|
-
|
|
33
|
-
## usage
|
|
34
|
-
|
|
35
|
-
Note, all these examples also work in the browser with [browserify](http://browserify.org/).
|
|
36
|
-
|
|
37
|
-
### simple GET request
|
|
38
|
-
|
|
39
|
-
Doesn't get easier than this:
|
|
40
|
-
|
|
41
|
-
```js
|
|
42
|
-
const get = require('simple-get')
|
|
43
|
-
|
|
44
|
-
get('http://example.com', function (err, res) {
|
|
45
|
-
if (err) throw err
|
|
46
|
-
console.log(res.statusCode) // 200
|
|
47
|
-
res.pipe(process.stdout) // `res` is a stream
|
|
48
|
-
})
|
|
49
|
-
```
|
|
50
|
-
|
|
51
|
-
### even simpler GET request
|
|
52
|
-
|
|
53
|
-
If you just want the data, and don't want to deal with streams:
|
|
54
|
-
|
|
55
|
-
```js
|
|
56
|
-
const get = require('simple-get')
|
|
57
|
-
|
|
58
|
-
get.concat('http://example.com', function (err, res, data) {
|
|
59
|
-
if (err) throw err
|
|
60
|
-
console.log(res.statusCode) // 200
|
|
61
|
-
console.log(data) // Buffer('this is the server response')
|
|
62
|
-
})
|
|
63
|
-
```
|
|
64
|
-
|
|
65
|
-
### POST, PUT, PATCH, HEAD, DELETE support
|
|
66
|
-
|
|
67
|
-
For `POST`, call `get.post` or use option `{ method: 'POST' }`.
|
|
68
|
-
|
|
69
|
-
```js
|
|
70
|
-
const get = require('simple-get')
|
|
71
|
-
|
|
72
|
-
const opts = {
|
|
73
|
-
url: 'http://example.com',
|
|
74
|
-
body: 'this is the POST body'
|
|
75
|
-
}
|
|
76
|
-
get.post(opts, function (err, res) {
|
|
77
|
-
if (err) throw err
|
|
78
|
-
res.pipe(process.stdout) // `res` is a stream
|
|
79
|
-
})
|
|
80
|
-
```
|
|
81
|
-
|
|
82
|
-
#### A more complex example:
|
|
83
|
-
|
|
84
|
-
```js
|
|
85
|
-
const get = require('simple-get')
|
|
86
|
-
|
|
87
|
-
get({
|
|
88
|
-
url: 'http://example.com',
|
|
89
|
-
method: 'POST',
|
|
90
|
-
body: 'this is the POST body',
|
|
91
|
-
|
|
92
|
-
// simple-get accepts all options that node.js `http` accepts
|
|
93
|
-
// See: http://nodejs.org/api/http.html#http_http_request_options_callback
|
|
94
|
-
headers: {
|
|
95
|
-
'user-agent': 'my cool app'
|
|
96
|
-
}
|
|
97
|
-
}, function (err, res) {
|
|
98
|
-
if (err) throw err
|
|
99
|
-
|
|
100
|
-
// All properties/methods from http.IncomingResponse are available,
|
|
101
|
-
// even if a gunzip/inflate transform stream was returned.
|
|
102
|
-
// See: http://nodejs.org/api/http.html#http_http_incomingmessage
|
|
103
|
-
res.setTimeout(10000)
|
|
104
|
-
console.log(res.headers)
|
|
105
|
-
|
|
106
|
-
res.on('data', function (chunk) {
|
|
107
|
-
// `chunk` is the decoded response, after it's been gunzipped or inflated
|
|
108
|
-
// (if applicable)
|
|
109
|
-
console.log('got a chunk of the response: ' + chunk)
|
|
110
|
-
}))
|
|
111
|
-
|
|
112
|
-
})
|
|
113
|
-
```
|
|
114
|
-
|
|
115
|
-
### JSON
|
|
116
|
-
|
|
117
|
-
You can serialize/deserialize request and response with JSON:
|
|
118
|
-
|
|
119
|
-
```js
|
|
120
|
-
const get = require('simple-get')
|
|
121
|
-
|
|
122
|
-
const opts = {
|
|
123
|
-
method: 'POST',
|
|
124
|
-
url: 'http://example.com',
|
|
125
|
-
body: {
|
|
126
|
-
key: 'value'
|
|
127
|
-
},
|
|
128
|
-
json: true
|
|
129
|
-
}
|
|
130
|
-
get.concat(opts, function (err, res, data) {
|
|
131
|
-
if (err) throw err
|
|
132
|
-
console.log(data.key) // `data` is an object
|
|
133
|
-
})
|
|
134
|
-
```
|
|
135
|
-
|
|
136
|
-
### Timeout
|
|
137
|
-
|
|
138
|
-
You can set a timeout (in milliseconds) on the request with the `timeout` option.
|
|
139
|
-
If the request takes longer than `timeout` to complete, then the entire request
|
|
140
|
-
will fail with an `Error`.
|
|
141
|
-
|
|
142
|
-
```js
|
|
143
|
-
const get = require('simple-get')
|
|
144
|
-
|
|
145
|
-
const opts = {
|
|
146
|
-
url: 'http://example.com',
|
|
147
|
-
timeout: 2000 // 2 second timeout
|
|
148
|
-
}
|
|
149
|
-
|
|
150
|
-
get(opts, function (err, res) {})
|
|
151
|
-
```
|
|
152
|
-
|
|
153
|
-
### One Quick Tip
|
|
154
|
-
|
|
155
|
-
It's a good idea to set the `'user-agent'` header so the provider can more easily
|
|
156
|
-
see how their resource is used.
|
|
157
|
-
|
|
158
|
-
```js
|
|
159
|
-
const get = require('simple-get')
|
|
160
|
-
const pkg = require('./package.json')
|
|
161
|
-
|
|
162
|
-
get('http://example.com', {
|
|
163
|
-
headers: {
|
|
164
|
-
'user-agent': `my-module/${pkg.version} (https://github.com/username/my-module)`
|
|
165
|
-
}
|
|
166
|
-
})
|
|
167
|
-
```
|
|
168
|
-
|
|
169
|
-
### Proxies
|
|
170
|
-
|
|
171
|
-
You can use the [`tunnel`](https://github.com/koichik/node-tunnel) module with the
|
|
172
|
-
`agent` option to work with proxies:
|
|
173
|
-
|
|
174
|
-
```js
|
|
175
|
-
const get = require('simple-get')
|
|
176
|
-
const tunnel = require('tunnel')
|
|
177
|
-
|
|
178
|
-
const opts = {
|
|
179
|
-
url: 'http://example.com',
|
|
180
|
-
agent: tunnel.httpOverHttp({
|
|
181
|
-
proxy: {
|
|
182
|
-
host: 'localhost'
|
|
183
|
-
}
|
|
184
|
-
})
|
|
185
|
-
}
|
|
186
|
-
|
|
187
|
-
get(opts, function (err, res) {})
|
|
188
|
-
```
|
|
189
|
-
|
|
190
|
-
### Cookies
|
|
191
|
-
|
|
192
|
-
You can use the [`cookie`](https://github.com/jshttp/cookie) module to include
|
|
193
|
-
cookies in a request:
|
|
194
|
-
|
|
195
|
-
```js
|
|
196
|
-
const get = require('simple-get')
|
|
197
|
-
const cookie = require('cookie')
|
|
198
|
-
|
|
199
|
-
const opts = {
|
|
200
|
-
url: 'http://example.com',
|
|
201
|
-
headers: {
|
|
202
|
-
cookie: cookie.serialize('foo', 'bar')
|
|
203
|
-
}
|
|
204
|
-
}
|
|
205
|
-
|
|
206
|
-
get(opts, function (err, res) {})
|
|
207
|
-
```
|
|
208
|
-
|
|
209
|
-
### Form data
|
|
210
|
-
|
|
211
|
-
You can use the [`form-data`](https://github.com/form-data/form-data) module to
|
|
212
|
-
create POST request with form data:
|
|
213
|
-
|
|
214
|
-
```js
|
|
215
|
-
const fs = require('fs')
|
|
216
|
-
const get = require('simple-get')
|
|
217
|
-
const FormData = require('form-data')
|
|
218
|
-
const form = new FormData()
|
|
219
|
-
|
|
220
|
-
form.append('my_file', fs.createReadStream('/foo/bar.jpg'))
|
|
221
|
-
|
|
222
|
-
const opts = {
|
|
223
|
-
url: 'http://example.com',
|
|
224
|
-
body: form
|
|
225
|
-
}
|
|
226
|
-
|
|
227
|
-
get.post(opts, function (err, res) {})
|
|
228
|
-
```
|
|
229
|
-
|
|
230
|
-
#### Or, include `application/x-www-form-urlencoded` form data manually:
|
|
231
|
-
|
|
232
|
-
```js
|
|
233
|
-
const get = require('simple-get')
|
|
234
|
-
|
|
235
|
-
const opts = {
|
|
236
|
-
url: 'http://example.com',
|
|
237
|
-
form: {
|
|
238
|
-
key: 'value'
|
|
239
|
-
}
|
|
240
|
-
}
|
|
241
|
-
get.post(opts, function (err, res) {})
|
|
242
|
-
```
|
|
243
|
-
|
|
244
|
-
### Specifically disallowing redirects
|
|
245
|
-
|
|
246
|
-
```js
|
|
247
|
-
const get = require('simple-get')
|
|
248
|
-
|
|
249
|
-
const opts = {
|
|
250
|
-
url: 'http://example.com/will-redirect-elsewhere',
|
|
251
|
-
followRedirects: false
|
|
252
|
-
}
|
|
253
|
-
// res.statusCode will be 301, no error thrown
|
|
254
|
-
get(opts, function (err, res) {})
|
|
255
|
-
```
|
|
256
|
-
|
|
257
|
-
### Basic Auth
|
|
258
|
-
|
|
259
|
-
```js
|
|
260
|
-
const user = 'someuser'
|
|
261
|
-
const pass = 'pa$$word'
|
|
262
|
-
const encodedAuth = Buffer.from(`${user}:${pass}`).toString('base64')
|
|
263
|
-
|
|
264
|
-
get('http://example.com', {
|
|
265
|
-
headers: {
|
|
266
|
-
authorization: `Basic ${encodedAuth}`
|
|
267
|
-
}
|
|
268
|
-
})
|
|
269
|
-
```
|
|
270
|
-
|
|
271
|
-
### OAuth
|
|
272
|
-
|
|
273
|
-
You can use the [`oauth-1.0a`](https://github.com/ddo/oauth-1.0a) module to create
|
|
274
|
-
a signed OAuth request:
|
|
275
|
-
|
|
276
|
-
```js
|
|
277
|
-
const get = require('simple-get')
|
|
278
|
-
const crypto = require('crypto')
|
|
279
|
-
const OAuth = require('oauth-1.0a')
|
|
280
|
-
|
|
281
|
-
const oauth = OAuth({
|
|
282
|
-
consumer: {
|
|
283
|
-
key: process.env.CONSUMER_KEY,
|
|
284
|
-
secret: process.env.CONSUMER_SECRET
|
|
285
|
-
},
|
|
286
|
-
signature_method: 'HMAC-SHA1',
|
|
287
|
-
hash_function: (baseString, key) => crypto.createHmac('sha1', key).update(baseString).digest('base64')
|
|
288
|
-
})
|
|
289
|
-
|
|
290
|
-
const token = {
|
|
291
|
-
key: process.env.ACCESS_TOKEN,
|
|
292
|
-
secret: process.env.ACCESS_TOKEN_SECRET
|
|
293
|
-
}
|
|
294
|
-
|
|
295
|
-
const url = 'https://api.twitter.com/1.1/statuses/home_timeline.json'
|
|
296
|
-
|
|
297
|
-
const opts = {
|
|
298
|
-
url: url,
|
|
299
|
-
headers: oauth.toHeader(oauth.authorize({url, method: 'GET'}, token)),
|
|
300
|
-
json: true
|
|
301
|
-
}
|
|
302
|
-
|
|
303
|
-
get(opts, function (err, res) {})
|
|
304
|
-
```
|
|
305
|
-
|
|
306
|
-
### Throttle requests
|
|
307
|
-
|
|
308
|
-
You can use [limiter](https://github.com/jhurliman/node-rate-limiter) to throttle requests. This is useful when calling an API that is rate limited.
|
|
309
|
-
|
|
310
|
-
```js
|
|
311
|
-
const simpleGet = require('simple-get')
|
|
312
|
-
const RateLimiter = require('limiter').RateLimiter
|
|
313
|
-
const limiter = new RateLimiter(1, 'second')
|
|
314
|
-
|
|
315
|
-
const get = (opts, cb) => limiter.removeTokens(1, () => simpleGet(opts, cb))
|
|
316
|
-
get.concat = (opts, cb) => limiter.removeTokens(1, () => simpleGet.concat(opts, cb))
|
|
317
|
-
|
|
318
|
-
var opts = {
|
|
319
|
-
url: 'http://example.com'
|
|
320
|
-
}
|
|
321
|
-
|
|
322
|
-
get.concat(opts, processResult)
|
|
323
|
-
get.concat(opts, processResult)
|
|
324
|
-
|
|
325
|
-
function processResult (err, res, data) {
|
|
326
|
-
if (err) throw err
|
|
327
|
-
console.log(data.toString())
|
|
328
|
-
}
|
|
329
|
-
```
|
|
330
|
-
|
|
331
|
-
## license
|
|
332
|
-
|
|
333
|
-
MIT. Copyright (c) [Feross Aboukhadijeh](http://feross.org).
|
|
@@ -1,108 +0,0 @@
|
|
|
1
|
-
/*! simple-get. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> */
|
|
2
|
-
module.exports = simpleGet
|
|
3
|
-
|
|
4
|
-
const concat = require('simple-concat')
|
|
5
|
-
const decompressResponse = require('decompress-response') // excluded from browser build
|
|
6
|
-
const http = require('http')
|
|
7
|
-
const https = require('https')
|
|
8
|
-
const once = require('once')
|
|
9
|
-
const querystring = require('querystring')
|
|
10
|
-
const url = require('url')
|
|
11
|
-
|
|
12
|
-
const isStream = o => o !== null && typeof o === 'object' && typeof o.pipe === 'function'
|
|
13
|
-
|
|
14
|
-
function simpleGet (opts, cb) {
|
|
15
|
-
opts = Object.assign({ maxRedirects: 10 }, typeof opts === 'string' ? { url: opts } : opts)
|
|
16
|
-
cb = once(cb)
|
|
17
|
-
|
|
18
|
-
if (opts.url) {
|
|
19
|
-
const { hostname, port, protocol, auth, path } = url.parse(opts.url) // eslint-disable-line node/no-deprecated-api
|
|
20
|
-
delete opts.url
|
|
21
|
-
if (!hostname && !port && !protocol && !auth) opts.path = path // Relative redirect
|
|
22
|
-
else Object.assign(opts, { hostname, port, protocol, auth, path }) // Absolute redirect
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
const headers = { 'accept-encoding': 'gzip, deflate' }
|
|
26
|
-
if (opts.headers) Object.keys(opts.headers).forEach(k => (headers[k.toLowerCase()] = opts.headers[k]))
|
|
27
|
-
opts.headers = headers
|
|
28
|
-
|
|
29
|
-
let body
|
|
30
|
-
if (opts.body) {
|
|
31
|
-
body = opts.json && !isStream(opts.body) ? JSON.stringify(opts.body) : opts.body
|
|
32
|
-
} else if (opts.form) {
|
|
33
|
-
body = typeof opts.form === 'string' ? opts.form : querystring.stringify(opts.form)
|
|
34
|
-
opts.headers['content-type'] = 'application/x-www-form-urlencoded'
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
if (body) {
|
|
38
|
-
if (!opts.method) opts.method = 'POST'
|
|
39
|
-
if (!isStream(body)) opts.headers['content-length'] = Buffer.byteLength(body)
|
|
40
|
-
if (opts.json && !opts.form) opts.headers['content-type'] = 'application/json'
|
|
41
|
-
}
|
|
42
|
-
delete opts.body; delete opts.form
|
|
43
|
-
|
|
44
|
-
if (opts.json) opts.headers.accept = 'application/json'
|
|
45
|
-
if (opts.method) opts.method = opts.method.toUpperCase()
|
|
46
|
-
|
|
47
|
-
const originalHost = opts.hostname // hostname before potential redirect
|
|
48
|
-
const protocol = opts.protocol === 'https:' ? https : http // Support http/https urls
|
|
49
|
-
const req = protocol.request(opts, res => {
|
|
50
|
-
if (opts.followRedirects !== false && res.statusCode >= 300 && res.statusCode < 400 && res.headers.location) {
|
|
51
|
-
opts.url = res.headers.location // Follow 3xx redirects
|
|
52
|
-
delete opts.headers.host // Discard `host` header on redirect (see #32)
|
|
53
|
-
res.resume() // Discard response
|
|
54
|
-
|
|
55
|
-
const redirectHost = url.parse(opts.url).hostname // eslint-disable-line node/no-deprecated-api
|
|
56
|
-
// If redirected host is different than original host, drop headers to prevent cookie leak (#73)
|
|
57
|
-
if (redirectHost !== null && redirectHost !== originalHost) {
|
|
58
|
-
delete opts.headers.cookie
|
|
59
|
-
delete opts.headers.authorization
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
if (opts.method === 'POST' && [301, 302].includes(res.statusCode)) {
|
|
63
|
-
opts.method = 'GET' // On 301/302 redirect, change POST to GET (see #35)
|
|
64
|
-
delete opts.headers['content-length']; delete opts.headers['content-type']
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
if (opts.maxRedirects-- === 0) return cb(new Error('too many redirects'))
|
|
68
|
-
else return simpleGet(opts, cb)
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
const tryUnzip = typeof decompressResponse === 'function' && opts.method !== 'HEAD'
|
|
72
|
-
cb(null, tryUnzip ? decompressResponse(res) : res)
|
|
73
|
-
})
|
|
74
|
-
req.on('timeout', () => {
|
|
75
|
-
req.abort()
|
|
76
|
-
cb(new Error('Request timed out'))
|
|
77
|
-
})
|
|
78
|
-
req.on('error', cb)
|
|
79
|
-
|
|
80
|
-
if (isStream(body)) body.on('error', cb).pipe(req)
|
|
81
|
-
else req.end(body)
|
|
82
|
-
|
|
83
|
-
return req
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
simpleGet.concat = (opts, cb) => {
|
|
87
|
-
return simpleGet(opts, (err, res) => {
|
|
88
|
-
if (err) return cb(err)
|
|
89
|
-
concat(res, (err, data) => {
|
|
90
|
-
if (err) return cb(err)
|
|
91
|
-
if (opts.json) {
|
|
92
|
-
try {
|
|
93
|
-
data = JSON.parse(data.toString())
|
|
94
|
-
} catch (err) {
|
|
95
|
-
return cb(err, res, data)
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
cb(null, res, data)
|
|
99
|
-
})
|
|
100
|
-
})
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
;['get', 'post', 'put', 'patch', 'head', 'delete'].forEach(method => {
|
|
104
|
-
simpleGet[method] = (opts, cb) => {
|
|
105
|
-
if (typeof opts === 'string') opts = { url: opts }
|
|
106
|
-
return simpleGet(Object.assign({ method: method.toUpperCase() }, opts), cb)
|
|
107
|
-
}
|
|
108
|
-
})
|
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "simple-get",
|
|
3
|
-
"description": "Simplest way to make http get requests. Supports HTTPS, redirects, gzip/deflate, streams in < 100 lines.",
|
|
4
|
-
"version": "4.0.1",
|
|
5
|
-
"author": {
|
|
6
|
-
"name": "Feross Aboukhadijeh",
|
|
7
|
-
"email": "feross@feross.org",
|
|
8
|
-
"url": "https://feross.org"
|
|
9
|
-
},
|
|
10
|
-
"browser": {
|
|
11
|
-
"decompress-response": false
|
|
12
|
-
},
|
|
13
|
-
"bugs": {
|
|
14
|
-
"url": "https://github.com/feross/simple-get/issues"
|
|
15
|
-
},
|
|
16
|
-
"dependencies": {
|
|
17
|
-
"decompress-response": "^6.0.0",
|
|
18
|
-
"once": "^1.3.1",
|
|
19
|
-
"simple-concat": "^1.0.0"
|
|
20
|
-
},
|
|
21
|
-
"devDependencies": {
|
|
22
|
-
"self-signed-https": "^1.0.5",
|
|
23
|
-
"standard": "*",
|
|
24
|
-
"string-to-stream": "^3.0.0",
|
|
25
|
-
"tape": "^5.0.0"
|
|
26
|
-
},
|
|
27
|
-
"homepage": "https://github.com/feross/simple-get",
|
|
28
|
-
"keywords": [
|
|
29
|
-
"request",
|
|
30
|
-
"http",
|
|
31
|
-
"GET",
|
|
32
|
-
"get request",
|
|
33
|
-
"http.get",
|
|
34
|
-
"redirects",
|
|
35
|
-
"follow redirects",
|
|
36
|
-
"gzip",
|
|
37
|
-
"deflate",
|
|
38
|
-
"https",
|
|
39
|
-
"http-https",
|
|
40
|
-
"stream",
|
|
41
|
-
"simple request",
|
|
42
|
-
"simple get"
|
|
43
|
-
],
|
|
44
|
-
"license": "MIT",
|
|
45
|
-
"main": "index.js",
|
|
46
|
-
"repository": {
|
|
47
|
-
"type": "git",
|
|
48
|
-
"url": "git://github.com/feross/simple-get.git"
|
|
49
|
-
},
|
|
50
|
-
"scripts": {
|
|
51
|
-
"test": "standard && tape test/*.js"
|
|
52
|
-
},
|
|
53
|
-
"funding": [
|
|
54
|
-
{
|
|
55
|
-
"type": "github",
|
|
56
|
-
"url": "https://github.com/sponsors/feross"
|
|
57
|
-
},
|
|
58
|
-
{
|
|
59
|
-
"type": "patreon",
|
|
60
|
-
"url": "https://www.patreon.com/feross"
|
|
61
|
-
},
|
|
62
|
-
{
|
|
63
|
-
"type": "consulting",
|
|
64
|
-
"url": "https://feross.org/support"
|
|
65
|
-
}
|
|
66
|
-
]
|
|
67
|
-
}
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
The MIT License (MIT)
|
|
2
|
-
|
|
3
|
-
Copyright (c) 2014 Mathias Buus
|
|
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.
|
|
@@ -1,165 +0,0 @@
|
|
|
1
|
-
# tar-fs
|
|
2
|
-
|
|
3
|
-
filesystem bindings for [tar-stream](https://github.com/mafintosh/tar-stream).
|
|
4
|
-
|
|
5
|
-
```
|
|
6
|
-
npm install tar-fs
|
|
7
|
-
```
|
|
8
|
-
|
|
9
|
-
[](http://travis-ci.org/mafintosh/tar-fs)
|
|
10
|
-
|
|
11
|
-
## Usage
|
|
12
|
-
|
|
13
|
-
tar-fs allows you to pack directories into tarballs and extract tarballs into directories.
|
|
14
|
-
|
|
15
|
-
It doesn't gunzip for you, so if you want to extract a `.tar.gz` with this you'll need to use something like [gunzip-maybe](https://github.com/mafintosh/gunzip-maybe) in addition to this.
|
|
16
|
-
|
|
17
|
-
``` js
|
|
18
|
-
var tar = require('tar-fs')
|
|
19
|
-
var fs = require('fs')
|
|
20
|
-
|
|
21
|
-
// packing a directory
|
|
22
|
-
tar.pack('./my-directory').pipe(fs.createWriteStream('my-tarball.tar'))
|
|
23
|
-
|
|
24
|
-
// extracting a directory
|
|
25
|
-
fs.createReadStream('my-other-tarball.tar').pipe(tar.extract('./my-other-directory'))
|
|
26
|
-
```
|
|
27
|
-
|
|
28
|
-
To ignore various files when packing or extracting add a ignore function to the options. `ignore`
|
|
29
|
-
is also an alias for `filter`. Additionally you get `header` if you use ignore while extracting.
|
|
30
|
-
That way you could also filter by metadata.
|
|
31
|
-
|
|
32
|
-
``` js
|
|
33
|
-
var pack = tar.pack('./my-directory', {
|
|
34
|
-
ignore: function(name) {
|
|
35
|
-
return path.extname(name) === '.bin' // ignore .bin files when packing
|
|
36
|
-
}
|
|
37
|
-
})
|
|
38
|
-
|
|
39
|
-
var extract = tar.extract('./my-other-directory', {
|
|
40
|
-
ignore: function(name) {
|
|
41
|
-
return path.extname(name) === '.bin' // ignore .bin files inside the tarball when extracing
|
|
42
|
-
}
|
|
43
|
-
})
|
|
44
|
-
|
|
45
|
-
var extractFilesDirs = tar.extract('./my-other-other-directory', {
|
|
46
|
-
ignore: function(_, header) {
|
|
47
|
-
// pass files & directories, ignore e.g. symlinks
|
|
48
|
-
return header.type !== 'file' && header.type !== 'directory'
|
|
49
|
-
}
|
|
50
|
-
})
|
|
51
|
-
```
|
|
52
|
-
|
|
53
|
-
You can also specify which entries to pack using the `entries` option
|
|
54
|
-
|
|
55
|
-
```js
|
|
56
|
-
var pack = tar.pack('./my-directory', {
|
|
57
|
-
entries: ['file1', 'subdir/file2'] // only the specific entries will be packed
|
|
58
|
-
})
|
|
59
|
-
```
|
|
60
|
-
|
|
61
|
-
If you want to modify the headers when packing/extracting add a map function to the options
|
|
62
|
-
|
|
63
|
-
``` js
|
|
64
|
-
var pack = tar.pack('./my-directory', {
|
|
65
|
-
map: function(header) {
|
|
66
|
-
header.name = 'prefixed/'+header.name
|
|
67
|
-
return header
|
|
68
|
-
}
|
|
69
|
-
})
|
|
70
|
-
|
|
71
|
-
var extract = tar.extract('./my-directory', {
|
|
72
|
-
map: function(header) {
|
|
73
|
-
header.name = 'another-prefix/'+header.name
|
|
74
|
-
return header
|
|
75
|
-
}
|
|
76
|
-
})
|
|
77
|
-
```
|
|
78
|
-
|
|
79
|
-
Similarly you can use `mapStream` incase you wanna modify the input/output file streams
|
|
80
|
-
|
|
81
|
-
``` js
|
|
82
|
-
var pack = tar.pack('./my-directory', {
|
|
83
|
-
mapStream: function(fileStream, header) {
|
|
84
|
-
// NOTE: the returned stream HAS to have the same length as the input stream.
|
|
85
|
-
// If not make sure to update the size in the header passed in here.
|
|
86
|
-
if (path.extname(header.name) === '.js') {
|
|
87
|
-
return fileStream.pipe(someTransform)
|
|
88
|
-
}
|
|
89
|
-
return fileStream;
|
|
90
|
-
}
|
|
91
|
-
})
|
|
92
|
-
|
|
93
|
-
var extract = tar.extract('./my-directory', {
|
|
94
|
-
mapStream: function(fileStream, header) {
|
|
95
|
-
if (path.extname(header.name) === '.js') {
|
|
96
|
-
return fileStream.pipe(someTransform)
|
|
97
|
-
}
|
|
98
|
-
return fileStream;
|
|
99
|
-
}
|
|
100
|
-
})
|
|
101
|
-
```
|
|
102
|
-
|
|
103
|
-
Set `options.fmode` and `options.dmode` to ensure that files/directories extracted have the corresponding modes
|
|
104
|
-
|
|
105
|
-
``` js
|
|
106
|
-
var extract = tar.extract('./my-directory', {
|
|
107
|
-
dmode: parseInt(555, 8), // all dirs should be readable
|
|
108
|
-
fmode: parseInt(444, 8) // all files should be readable
|
|
109
|
-
})
|
|
110
|
-
```
|
|
111
|
-
|
|
112
|
-
It can be useful to use `dmode` and `fmode` if you are packing/unpacking tarballs between *nix/windows to ensure that all files/directories unpacked are readable.
|
|
113
|
-
|
|
114
|
-
Alternatively you can set `options.readable` and/or `options.writable` to set the dmode and fmode to readable/writable.
|
|
115
|
-
|
|
116
|
-
``` js
|
|
117
|
-
var extract = tar.extract('./my-directory', {
|
|
118
|
-
readable: true, // all dirs and files should be readable
|
|
119
|
-
writable: true, // all dirs and files should be writable
|
|
120
|
-
})
|
|
121
|
-
```
|
|
122
|
-
|
|
123
|
-
Set `options.strict` to `false` if you want to ignore errors due to unsupported entry types (like device files)
|
|
124
|
-
|
|
125
|
-
To dereference symlinks (pack the contents of the symlink instead of the link itself) set `options.dereference` to `true`.
|
|
126
|
-
|
|
127
|
-
## Copy a directory
|
|
128
|
-
|
|
129
|
-
Copying a directory with permissions and mtime intact is as simple as
|
|
130
|
-
|
|
131
|
-
``` js
|
|
132
|
-
tar.pack('source-directory').pipe(tar.extract('dest-directory'))
|
|
133
|
-
```
|
|
134
|
-
|
|
135
|
-
## Interaction with [`tar-stream`](https://github.com/mafintosh/tar-stream)
|
|
136
|
-
|
|
137
|
-
Use `finalize: false` and the `finish` hook to
|
|
138
|
-
leave the pack stream open for further entries (see
|
|
139
|
-
[`tar-stream#pack`](https://github.com/mafintosh/tar-stream#packing)),
|
|
140
|
-
and use `pack` to pass an existing pack stream.
|
|
141
|
-
|
|
142
|
-
``` js
|
|
143
|
-
var mypack = tar.pack('./my-directory', {
|
|
144
|
-
finalize: false,
|
|
145
|
-
finish: function(sameAsMypack) {
|
|
146
|
-
mypack.entry({name: 'generated-file.txt'}, "hello")
|
|
147
|
-
tar.pack('./other-directory', {
|
|
148
|
-
pack: sameAsMypack
|
|
149
|
-
})
|
|
150
|
-
}
|
|
151
|
-
})
|
|
152
|
-
```
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
## Performance
|
|
156
|
-
|
|
157
|
-
Packing and extracting a 6.1 GB with 2496 directories and 2398 files yields the following results on my Macbook Air.
|
|
158
|
-
[See the benchmark here](https://gist.github.com/mafintosh/8102201)
|
|
159
|
-
|
|
160
|
-
* tar-fs: 34.261 seconds
|
|
161
|
-
* [node-tar](https://github.com/isaacs/node-tar): 366.123 seconds (or 10x slower)
|
|
162
|
-
|
|
163
|
-
## License
|
|
164
|
-
|
|
165
|
-
MIT
|