es6-crawler-detect 3.1.1 → 3.3.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/.babelrc +2 -1
- package/.eslintignore +6 -0
- package/.eslintrc.json +30 -0
- package/.github/ISSUE_TEMPLATE/bug_report.md +11 -8
- package/.github/ISSUE_TEMPLATE/feature_request.md +1 -1
- package/.github/PULL_REQUEST_TEMPLATE/pull_request_template.md +29 -0
- package/.prettierrc.json +5 -0
- package/README.md +27 -17
- package/dist/main.bundle.js +1 -1
- package/example/node/dist/crawler.min.js +1 -1
- package/example/node/node_modules/.bin/mime +15 -0
- package/example/node/node_modules/.bin/mime.cmd +7 -0
- package/example/node/node_modules/.yarn-integrity +67 -0
- package/example/node/node_modules/accepts/HISTORY.md +236 -0
- package/example/node/node_modules/accepts/LICENSE +23 -0
- package/example/node/node_modules/accepts/README.md +142 -0
- package/example/node/node_modules/accepts/index.js +238 -0
- package/example/node/node_modules/accepts/package.json +47 -0
- package/example/node/node_modules/array-flatten/LICENSE +21 -0
- package/example/node/node_modules/array-flatten/README.md +43 -0
- package/example/node/node_modules/array-flatten/array-flatten.js +64 -0
- package/example/node/node_modules/array-flatten/package.json +39 -0
- package/example/node/node_modules/body-parser/HISTORY.md +624 -0
- package/example/node/node_modules/body-parser/LICENSE +23 -0
- package/example/node/node_modules/body-parser/README.md +456 -0
- package/example/node/node_modules/body-parser/index.js +157 -0
- package/example/node/node_modules/body-parser/lib/read.js +181 -0
- package/example/node/node_modules/body-parser/lib/types/json.js +230 -0
- package/example/node/node_modules/body-parser/lib/types/raw.js +101 -0
- package/example/node/node_modules/body-parser/lib/types/text.js +121 -0
- package/example/node/node_modules/body-parser/lib/types/urlencoded.js +284 -0
- package/example/node/node_modules/body-parser/package.json +52 -0
- package/example/node/node_modules/bytes/History.md +92 -0
- package/example/node/node_modules/bytes/LICENSE +23 -0
- package/example/node/node_modules/bytes/Readme.md +152 -0
- package/example/node/node_modules/bytes/index.js +166 -0
- package/example/node/node_modules/bytes/package.json +42 -0
- package/example/node/node_modules/content-disposition/HISTORY.md +60 -0
- package/example/node/node_modules/content-disposition/LICENSE +22 -0
- package/example/node/node_modules/content-disposition/README.md +142 -0
- package/example/node/node_modules/content-disposition/index.js +458 -0
- package/example/node/node_modules/content-disposition/package.json +44 -0
- package/example/node/node_modules/content-type/HISTORY.md +24 -0
- package/example/node/node_modules/content-type/LICENSE +22 -0
- package/example/node/node_modules/content-type/README.md +92 -0
- package/example/node/node_modules/content-type/index.js +222 -0
- package/example/node/node_modules/content-type/package.json +40 -0
- package/example/node/node_modules/cookie/HISTORY.md +128 -0
- package/example/node/node_modules/cookie/LICENSE +24 -0
- package/example/node/node_modules/cookie/README.md +257 -0
- package/example/node/node_modules/cookie/index.js +202 -0
- package/example/node/node_modules/cookie/package.json +40 -0
- package/example/node/node_modules/cookie-signature/History.md +38 -0
- package/example/node/node_modules/cookie-signature/Readme.md +42 -0
- package/example/node/node_modules/cookie-signature/index.js +51 -0
- package/example/node/node_modules/cookie-signature/package.json +18 -0
- package/example/node/node_modules/debug/.coveralls.yml +1 -0
- package/example/node/node_modules/debug/.eslintrc +11 -0
- package/example/node/node_modules/debug/.travis.yml +14 -0
- package/example/node/node_modules/debug/CHANGELOG.md +362 -0
- package/example/node/node_modules/debug/LICENSE +19 -0
- package/example/node/node_modules/debug/Makefile +50 -0
- package/example/node/node_modules/debug/README.md +312 -0
- package/example/node/node_modules/debug/component.json +19 -0
- package/example/node/node_modules/debug/karma.conf.js +70 -0
- package/example/node/node_modules/debug/node.js +1 -0
- package/example/node/node_modules/debug/package.json +49 -0
- package/example/node/node_modules/debug/src/browser.js +185 -0
- package/example/node/node_modules/debug/src/debug.js +202 -0
- package/example/node/node_modules/debug/src/index.js +10 -0
- package/example/node/node_modules/debug/src/inspector-log.js +15 -0
- package/example/node/node_modules/debug/src/node.js +248 -0
- package/example/node/node_modules/depd/History.md +96 -0
- package/example/node/node_modules/depd/LICENSE +22 -0
- package/example/node/node_modules/depd/Readme.md +280 -0
- package/example/node/node_modules/depd/index.js +522 -0
- package/example/node/node_modules/depd/lib/browser/index.js +77 -0
- package/example/node/node_modules/depd/lib/compat/callsite-tostring.js +103 -0
- package/example/node/node_modules/depd/lib/compat/event-listener-count.js +22 -0
- package/example/node/node_modules/depd/lib/compat/index.js +79 -0
- package/example/node/node_modules/depd/package.json +41 -0
- package/example/node/node_modules/destroy/LICENSE +22 -0
- package/example/node/node_modules/destroy/README.md +60 -0
- package/example/node/node_modules/destroy/index.js +75 -0
- package/example/node/node_modules/destroy/package.json +37 -0
- package/example/node/node_modules/ee-first/LICENSE +22 -0
- package/example/node/node_modules/ee-first/README.md +80 -0
- package/example/node/node_modules/ee-first/index.js +95 -0
- package/example/node/node_modules/ee-first/package.json +29 -0
- package/example/node/node_modules/encodeurl/HISTORY.md +14 -0
- package/example/node/node_modules/encodeurl/LICENSE +22 -0
- package/example/node/node_modules/encodeurl/README.md +128 -0
- package/example/node/node_modules/encodeurl/index.js +60 -0
- package/example/node/node_modules/encodeurl/package.json +40 -0
- package/example/node/node_modules/escape-html/LICENSE +24 -0
- package/example/node/node_modules/escape-html/Readme.md +43 -0
- package/example/node/node_modules/escape-html/index.js +78 -0
- package/example/node/node_modules/escape-html/package.json +24 -0
- package/example/node/node_modules/etag/HISTORY.md +83 -0
- package/example/node/node_modules/etag/LICENSE +22 -0
- package/example/node/node_modules/etag/README.md +159 -0
- package/example/node/node_modules/etag/index.js +131 -0
- package/example/node/node_modules/etag/package.json +47 -0
- package/example/node/node_modules/express/History.md +3510 -0
- package/example/node/node_modules/express/LICENSE +24 -0
- package/example/node/node_modules/express/Readme.md +158 -0
- package/example/node/node_modules/express/index.js +11 -0
- package/example/node/node_modules/express/lib/application.js +644 -0
- package/example/node/node_modules/express/lib/express.js +116 -0
- package/example/node/node_modules/express/lib/middleware/init.js +43 -0
- package/example/node/node_modules/express/lib/middleware/query.js +47 -0
- package/example/node/node_modules/express/lib/request.js +525 -0
- package/example/node/node_modules/express/lib/response.js +1147 -0
- package/example/node/node_modules/express/lib/router/index.js +668 -0
- package/example/node/node_modules/express/lib/router/layer.js +181 -0
- package/example/node/node_modules/express/lib/router/route.js +216 -0
- package/example/node/node_modules/express/lib/utils.js +302 -0
- package/example/node/node_modules/express/lib/view.js +182 -0
- package/example/node/node_modules/express/package.json +99 -0
- package/example/node/node_modules/finalhandler/HISTORY.md +187 -0
- package/example/node/node_modules/finalhandler/LICENSE +22 -0
- package/example/node/node_modules/finalhandler/README.md +148 -0
- package/example/node/node_modules/finalhandler/index.js +331 -0
- package/example/node/node_modules/finalhandler/package.json +45 -0
- package/example/node/node_modules/forwarded/HISTORY.md +21 -0
- package/example/node/node_modules/forwarded/LICENSE +22 -0
- package/example/node/node_modules/forwarded/README.md +57 -0
- package/example/node/node_modules/forwarded/index.js +90 -0
- package/example/node/node_modules/forwarded/package.json +45 -0
- package/example/node/node_modules/fresh/HISTORY.md +70 -0
- package/example/node/node_modules/fresh/LICENSE +23 -0
- package/example/node/node_modules/fresh/README.md +119 -0
- package/example/node/node_modules/fresh/index.js +137 -0
- package/example/node/node_modules/fresh/package.json +46 -0
- package/example/node/node_modules/http-errors/HISTORY.md +165 -0
- package/example/node/node_modules/http-errors/LICENSE +23 -0
- package/example/node/node_modules/http-errors/README.md +169 -0
- package/example/node/node_modules/http-errors/index.js +299 -0
- package/example/node/node_modules/http-errors/package.json +49 -0
- package/example/node/node_modules/iconv-lite/Changelog.md +162 -0
- package/example/node/node_modules/iconv-lite/LICENSE +21 -0
- package/example/node/node_modules/iconv-lite/README.md +156 -0
- package/example/node/node_modules/iconv-lite/encodings/dbcs-codec.js +555 -0
- package/example/node/node_modules/iconv-lite/encodings/dbcs-data.js +176 -0
- package/example/node/node_modules/iconv-lite/encodings/index.js +22 -0
- package/example/node/node_modules/iconv-lite/encodings/internal.js +188 -0
- package/example/node/node_modules/iconv-lite/encodings/sbcs-codec.js +72 -0
- package/example/node/node_modules/iconv-lite/encodings/sbcs-data-generated.js +451 -0
- package/example/node/node_modules/iconv-lite/encodings/sbcs-data.js +174 -0
- package/example/node/node_modules/iconv-lite/encodings/tables/big5-added.json +122 -0
- package/example/node/node_modules/iconv-lite/encodings/tables/cp936.json +264 -0
- package/example/node/node_modules/iconv-lite/encodings/tables/cp949.json +273 -0
- package/example/node/node_modules/iconv-lite/encodings/tables/cp950.json +177 -0
- package/example/node/node_modules/iconv-lite/encodings/tables/eucjp.json +182 -0
- package/example/node/node_modules/iconv-lite/encodings/tables/gb18030-ranges.json +1 -0
- package/example/node/node_modules/iconv-lite/encodings/tables/gbk-added.json +55 -0
- package/example/node/node_modules/iconv-lite/encodings/tables/shiftjis.json +125 -0
- package/example/node/node_modules/iconv-lite/encodings/utf16.js +177 -0
- package/example/node/node_modules/iconv-lite/encodings/utf7.js +290 -0
- package/example/node/node_modules/iconv-lite/lib/bom-handling.js +52 -0
- package/example/node/node_modules/iconv-lite/lib/extend-node.js +217 -0
- package/example/node/node_modules/iconv-lite/lib/index.d.ts +24 -0
- package/example/node/node_modules/iconv-lite/lib/index.js +153 -0
- package/example/node/node_modules/iconv-lite/lib/streams.js +121 -0
- package/example/node/node_modules/iconv-lite/package.json +46 -0
- package/example/node/node_modules/inherits/LICENSE +16 -0
- package/example/node/node_modules/inherits/README.md +42 -0
- package/example/node/node_modules/inherits/inherits.js +9 -0
- package/example/node/node_modules/inherits/inherits_browser.js +27 -0
- package/example/node/node_modules/inherits/package.json +29 -0
- package/example/node/node_modules/ipaddr.js/LICENSE +19 -0
- package/example/node/node_modules/ipaddr.js/README.md +233 -0
- package/example/node/node_modules/ipaddr.js/ipaddr.min.js +1 -0
- package/example/node/node_modules/ipaddr.js/lib/ipaddr.js +673 -0
- package/example/node/node_modules/ipaddr.js/lib/ipaddr.js.d.ts +68 -0
- package/example/node/node_modules/ipaddr.js/package.json +35 -0
- package/example/node/node_modules/media-typer/HISTORY.md +22 -0
- package/example/node/node_modules/media-typer/LICENSE +22 -0
- package/example/node/node_modules/media-typer/README.md +81 -0
- package/example/node/node_modules/media-typer/index.js +270 -0
- package/example/node/node_modules/media-typer/package.json +26 -0
- package/example/node/node_modules/merge-descriptors/HISTORY.md +21 -0
- package/example/node/node_modules/merge-descriptors/LICENSE +23 -0
- package/example/node/node_modules/merge-descriptors/README.md +48 -0
- package/example/node/node_modules/merge-descriptors/index.js +60 -0
- package/example/node/node_modules/merge-descriptors/package.json +32 -0
- package/example/node/node_modules/methods/HISTORY.md +29 -0
- package/example/node/node_modules/methods/LICENSE +24 -0
- package/example/node/node_modules/methods/README.md +51 -0
- package/example/node/node_modules/methods/index.js +69 -0
- package/example/node/node_modules/methods/package.json +36 -0
- package/example/node/node_modules/mime/CHANGELOG.md +164 -0
- package/example/node/node_modules/mime/LICENSE +21 -0
- package/example/node/node_modules/mime/README.md +90 -0
- package/example/node/node_modules/mime/cli.js +8 -0
- package/example/node/node_modules/mime/mime.js +108 -0
- package/example/node/node_modules/mime/package.json +44 -0
- package/example/node/node_modules/mime/src/build.js +53 -0
- package/example/node/node_modules/mime/src/test.js +60 -0
- package/example/node/node_modules/mime/types.json +1 -0
- package/example/node/node_modules/mime-db/HISTORY.md +499 -0
- package/example/node/node_modules/mime-db/LICENSE +22 -0
- package/example/node/node_modules/mime-db/README.md +100 -0
- package/example/node/node_modules/mime-db/db.json +8471 -0
- package/example/node/node_modules/mime-db/index.js +11 -0
- package/example/node/node_modules/mime-db/package.json +59 -0
- package/example/node/node_modules/mime-types/HISTORY.md +388 -0
- package/example/node/node_modules/mime-types/LICENSE +23 -0
- package/example/node/node_modules/mime-types/README.md +113 -0
- package/example/node/node_modules/mime-types/index.js +188 -0
- package/example/node/node_modules/mime-types/package.json +44 -0
- package/example/node/node_modules/ms/index.js +152 -0
- package/example/node/node_modules/ms/license.md +21 -0
- package/example/node/node_modules/ms/package.json +37 -0
- package/example/node/node_modules/ms/readme.md +51 -0
- package/example/node/node_modules/negotiator/HISTORY.md +103 -0
- package/example/node/node_modules/negotiator/LICENSE +24 -0
- package/example/node/node_modules/negotiator/README.md +203 -0
- package/example/node/node_modules/negotiator/index.js +124 -0
- package/example/node/node_modules/negotiator/lib/charset.js +169 -0
- package/example/node/node_modules/negotiator/lib/encoding.js +184 -0
- package/example/node/node_modules/negotiator/lib/language.js +179 -0
- package/example/node/node_modules/negotiator/lib/mediaType.js +294 -0
- package/example/node/node_modules/negotiator/package.json +42 -0
- package/example/node/node_modules/on-finished/HISTORY.md +88 -0
- package/example/node/node_modules/on-finished/LICENSE +23 -0
- package/example/node/node_modules/on-finished/README.md +154 -0
- package/example/node/node_modules/on-finished/index.js +196 -0
- package/example/node/node_modules/on-finished/package.json +31 -0
- package/example/node/node_modules/parseurl/HISTORY.md +58 -0
- package/example/node/node_modules/parseurl/LICENSE +24 -0
- package/example/node/node_modules/parseurl/README.md +133 -0
- package/example/node/node_modules/parseurl/index.js +158 -0
- package/example/node/node_modules/parseurl/package.json +40 -0
- package/example/node/node_modules/path-to-regexp/History.md +36 -0
- package/example/node/node_modules/path-to-regexp/LICENSE +21 -0
- package/example/node/node_modules/path-to-regexp/Readme.md +35 -0
- package/example/node/node_modules/path-to-regexp/index.js +129 -0
- package/example/node/node_modules/path-to-regexp/package.json +30 -0
- package/example/node/node_modules/proxy-addr/HISTORY.md +161 -0
- package/example/node/node_modules/proxy-addr/LICENSE +22 -0
- package/example/node/node_modules/proxy-addr/README.md +139 -0
- package/example/node/node_modules/proxy-addr/index.js +327 -0
- package/example/node/node_modules/proxy-addr/package.json +47 -0
- package/example/node/node_modules/qs/.editorconfig +39 -0
- package/example/node/node_modules/qs/.eslintignore +2 -0
- package/example/node/node_modules/qs/.eslintrc +35 -0
- package/example/node/node_modules/qs/.github/FUNDING.yml +12 -0
- package/example/node/node_modules/qs/.nycrc +13 -0
- package/example/node/node_modules/qs/CHANGELOG.md +359 -0
- package/example/node/node_modules/qs/LICENSE.md +29 -0
- package/example/node/node_modules/qs/README.md +604 -0
- package/example/node/node_modules/qs/dist/qs.js +832 -0
- package/example/node/node_modules/qs/lib/formats.js +23 -0
- package/example/node/node_modules/qs/lib/index.js +11 -0
- package/example/node/node_modules/qs/lib/parse.js +257 -0
- package/example/node/node_modules/qs/lib/stringify.js +278 -0
- package/example/node/node_modules/qs/lib/utils.js +251 -0
- package/example/node/node_modules/qs/package.json +69 -0
- package/example/node/node_modules/qs/test/parse.js +772 -0
- package/example/node/node_modules/qs/test/stringify.js +793 -0
- package/example/node/node_modules/qs/test/utils.js +136 -0
- package/example/node/node_modules/range-parser/HISTORY.md +56 -0
- package/example/node/node_modules/range-parser/LICENSE +23 -0
- package/example/node/node_modules/range-parser/README.md +84 -0
- package/example/node/node_modules/range-parser/index.js +162 -0
- package/example/node/node_modules/range-parser/package.json +44 -0
- package/example/node/node_modules/raw-body/HISTORY.md +284 -0
- package/example/node/node_modules/raw-body/LICENSE +22 -0
- package/example/node/node_modules/raw-body/README.md +217 -0
- package/example/node/node_modules/raw-body/index.d.ts +87 -0
- package/example/node/node_modules/raw-body/index.js +286 -0
- package/example/node/node_modules/raw-body/package.json +48 -0
- package/example/node/node_modules/safe-buffer/LICENSE +21 -0
- package/example/node/node_modules/safe-buffer/README.md +584 -0
- package/example/node/node_modules/safe-buffer/index.d.ts +187 -0
- package/example/node/node_modules/safe-buffer/index.js +65 -0
- package/example/node/node_modules/safe-buffer/package.json +51 -0
- package/example/node/node_modules/safer-buffer/LICENSE +21 -0
- package/example/node/node_modules/safer-buffer/Porting-Buffer.md +268 -0
- package/example/node/node_modules/safer-buffer/Readme.md +156 -0
- package/example/node/node_modules/safer-buffer/dangerous.js +58 -0
- package/example/node/node_modules/safer-buffer/package.json +34 -0
- package/example/node/node_modules/safer-buffer/safer.js +77 -0
- package/example/node/node_modules/safer-buffer/tests.js +406 -0
- package/example/node/node_modules/send/HISTORY.md +506 -0
- package/example/node/node_modules/send/LICENSE +23 -0
- package/example/node/node_modules/send/README.md +327 -0
- package/example/node/node_modules/send/index.js +1133 -0
- package/example/node/node_modules/send/node_modules/.bin/mime +15 -0
- package/example/node/node_modules/send/node_modules/.bin/mime.cmd +7 -0
- package/example/node/node_modules/send/node_modules/ms/index.js +162 -0
- package/example/node/node_modules/send/node_modules/ms/license.md +21 -0
- package/example/node/node_modules/send/node_modules/ms/package.json +38 -0
- package/example/node/node_modules/send/node_modules/ms/readme.md +59 -0
- package/example/node/node_modules/send/package.json +61 -0
- package/example/node/node_modules/serve-static/HISTORY.md +459 -0
- package/example/node/node_modules/serve-static/LICENSE +25 -0
- package/example/node/node_modules/serve-static/README.md +257 -0
- package/example/node/node_modules/serve-static/index.js +210 -0
- package/example/node/node_modules/serve-static/package.json +42 -0
- package/example/node/node_modules/setprototypeof/LICENSE +13 -0
- package/example/node/node_modules/setprototypeof/README.md +31 -0
- package/example/node/node_modules/setprototypeof/index.d.ts +2 -0
- package/example/node/node_modules/setprototypeof/index.js +17 -0
- package/example/node/node_modules/setprototypeof/package.json +38 -0
- package/example/node/node_modules/setprototypeof/test/index.js +24 -0
- package/example/node/node_modules/statuses/HISTORY.md +65 -0
- package/example/node/node_modules/statuses/LICENSE +23 -0
- package/example/node/node_modules/statuses/README.md +127 -0
- package/example/node/node_modules/statuses/codes.json +66 -0
- package/example/node/node_modules/statuses/index.js +113 -0
- package/example/node/node_modules/statuses/package.json +48 -0
- package/example/node/node_modules/toidentifier/HISTORY.md +9 -0
- package/example/node/node_modules/toidentifier/LICENSE +21 -0
- package/example/node/node_modules/toidentifier/README.md +61 -0
- package/example/node/node_modules/toidentifier/index.js +32 -0
- package/example/node/node_modules/toidentifier/package.json +38 -0
- package/example/node/node_modules/type-is/HISTORY.md +259 -0
- package/example/node/node_modules/type-is/LICENSE +23 -0
- package/example/node/node_modules/type-is/README.md +170 -0
- package/example/node/node_modules/type-is/index.js +266 -0
- package/example/node/node_modules/type-is/package.json +45 -0
- package/example/node/node_modules/unpipe/HISTORY.md +4 -0
- package/example/node/node_modules/unpipe/LICENSE +22 -0
- package/example/node/node_modules/unpipe/README.md +43 -0
- package/example/node/node_modules/unpipe/index.js +69 -0
- package/example/node/node_modules/unpipe/package.json +27 -0
- package/example/node/node_modules/utils-merge/LICENSE +20 -0
- package/example/node/node_modules/utils-merge/README.md +34 -0
- package/example/node/node_modules/utils-merge/index.js +23 -0
- package/example/node/node_modules/utils-merge/package.json +40 -0
- package/example/node/node_modules/vary/HISTORY.md +39 -0
- package/example/node/node_modules/vary/LICENSE +22 -0
- package/example/node/node_modules/vary/README.md +101 -0
- package/example/node/node_modules/vary/index.js +149 -0
- package/example/node/node_modules/vary/package.json +43 -0
- package/example/node/package.json +11 -0
- package/example/node/server.js +27 -15
- package/example/node/yarn.lock +352 -0
- package/package.json +29 -18
- package/src/index.js +16 -10
- package/src/lib/crawler/crawlers.js +1399 -11
- package/src/lib/crawler/exclusions.js +56 -9
- package/src/lib/crawler/headers.js +24 -15
- package/src/lib/crawler/provider.js +11 -13
- package/src/lib/crawler.js +123 -132
- package/test/lib/crawler.test.js +83 -24
- package/test/lib/database/crawlers.txt +3651 -0
- package/test/lib/database/devices.txt +165636 -0
- package/webpack.common.js +20 -20
- package/webpack.dev.js +7 -7
- package/webpack.prod.js +14 -15
@@ -0,0 +1,166 @@
|
|
1
|
+
/*!
|
2
|
+
* bytes
|
3
|
+
* Copyright(c) 2012-2014 TJ Holowaychuk
|
4
|
+
* Copyright(c) 2015 Jed Watson
|
5
|
+
* MIT Licensed
|
6
|
+
*/
|
7
|
+
|
8
|
+
'use strict';
|
9
|
+
|
10
|
+
/**
|
11
|
+
* Module exports.
|
12
|
+
* @public
|
13
|
+
*/
|
14
|
+
|
15
|
+
module.exports = bytes;
|
16
|
+
module.exports.format = format;
|
17
|
+
module.exports.parse = parse;
|
18
|
+
|
19
|
+
/**
|
20
|
+
* Module variables.
|
21
|
+
* @private
|
22
|
+
*/
|
23
|
+
|
24
|
+
var formatThousandsRegExp = /\B(?=(\d{3})+(?!\d))/g;
|
25
|
+
|
26
|
+
var formatDecimalsRegExp = /(?:\.0*|(\.[^0]+)0+)$/;
|
27
|
+
|
28
|
+
var map = {
|
29
|
+
b: 1,
|
30
|
+
kb: 1 << 10,
|
31
|
+
mb: 1 << 20,
|
32
|
+
gb: 1 << 30,
|
33
|
+
tb: Math.pow(1024, 4),
|
34
|
+
pb: Math.pow(1024, 5),
|
35
|
+
};
|
36
|
+
|
37
|
+
var parseRegExp = /^((-|\+)?(\d+(?:\.\d+)?)) *(kb|mb|gb|tb|pb)$/i;
|
38
|
+
|
39
|
+
/**
|
40
|
+
* Convert the given value in bytes into a string or parse to string to an integer in bytes.
|
41
|
+
*
|
42
|
+
* @param {string|number} value
|
43
|
+
* @param {{
|
44
|
+
* case: [string],
|
45
|
+
* decimalPlaces: [number]
|
46
|
+
* fixedDecimals: [boolean]
|
47
|
+
* thousandsSeparator: [string]
|
48
|
+
* unitSeparator: [string]
|
49
|
+
* }} [options] bytes options.
|
50
|
+
*
|
51
|
+
* @returns {string|number|null}
|
52
|
+
*/
|
53
|
+
|
54
|
+
function bytes(value, options) {
|
55
|
+
if (typeof value === 'string') {
|
56
|
+
return parse(value);
|
57
|
+
}
|
58
|
+
|
59
|
+
if (typeof value === 'number') {
|
60
|
+
return format(value, options);
|
61
|
+
}
|
62
|
+
|
63
|
+
return null;
|
64
|
+
}
|
65
|
+
|
66
|
+
/**
|
67
|
+
* Format the given value in bytes into a string.
|
68
|
+
*
|
69
|
+
* If the value is negative, it is kept as such. If it is a float,
|
70
|
+
* it is rounded.
|
71
|
+
*
|
72
|
+
* @param {number} value
|
73
|
+
* @param {object} [options]
|
74
|
+
* @param {number} [options.decimalPlaces=2]
|
75
|
+
* @param {number} [options.fixedDecimals=false]
|
76
|
+
* @param {string} [options.thousandsSeparator=]
|
77
|
+
* @param {string} [options.unit=]
|
78
|
+
* @param {string} [options.unitSeparator=]
|
79
|
+
*
|
80
|
+
* @returns {string|null}
|
81
|
+
* @public
|
82
|
+
*/
|
83
|
+
|
84
|
+
function format(value, options) {
|
85
|
+
if (!Number.isFinite(value)) {
|
86
|
+
return null;
|
87
|
+
}
|
88
|
+
|
89
|
+
var mag = Math.abs(value);
|
90
|
+
var thousandsSeparator = (options && options.thousandsSeparator) || '';
|
91
|
+
var unitSeparator = (options && options.unitSeparator) || '';
|
92
|
+
var decimalPlaces = (options && options.decimalPlaces !== undefined) ? options.decimalPlaces : 2;
|
93
|
+
var fixedDecimals = Boolean(options && options.fixedDecimals);
|
94
|
+
var unit = (options && options.unit) || '';
|
95
|
+
|
96
|
+
if (!unit || !map[unit.toLowerCase()]) {
|
97
|
+
if (mag >= map.pb) {
|
98
|
+
unit = 'PB';
|
99
|
+
} else if (mag >= map.tb) {
|
100
|
+
unit = 'TB';
|
101
|
+
} else if (mag >= map.gb) {
|
102
|
+
unit = 'GB';
|
103
|
+
} else if (mag >= map.mb) {
|
104
|
+
unit = 'MB';
|
105
|
+
} else if (mag >= map.kb) {
|
106
|
+
unit = 'KB';
|
107
|
+
} else {
|
108
|
+
unit = 'B';
|
109
|
+
}
|
110
|
+
}
|
111
|
+
|
112
|
+
var val = value / map[unit.toLowerCase()];
|
113
|
+
var str = val.toFixed(decimalPlaces);
|
114
|
+
|
115
|
+
if (!fixedDecimals) {
|
116
|
+
str = str.replace(formatDecimalsRegExp, '$1');
|
117
|
+
}
|
118
|
+
|
119
|
+
if (thousandsSeparator) {
|
120
|
+
str = str.split('.').map(function (s, i) {
|
121
|
+
return i === 0
|
122
|
+
? s.replace(formatThousandsRegExp, thousandsSeparator)
|
123
|
+
: s
|
124
|
+
}).join('.');
|
125
|
+
}
|
126
|
+
|
127
|
+
return str + unitSeparator + unit;
|
128
|
+
}
|
129
|
+
|
130
|
+
/**
|
131
|
+
* Parse the string value into an integer in bytes.
|
132
|
+
*
|
133
|
+
* If no unit is given, it is assumed the value is in bytes.
|
134
|
+
*
|
135
|
+
* @param {number|string} val
|
136
|
+
*
|
137
|
+
* @returns {number|null}
|
138
|
+
* @public
|
139
|
+
*/
|
140
|
+
|
141
|
+
function parse(val) {
|
142
|
+
if (typeof val === 'number' && !isNaN(val)) {
|
143
|
+
return val;
|
144
|
+
}
|
145
|
+
|
146
|
+
if (typeof val !== 'string') {
|
147
|
+
return null;
|
148
|
+
}
|
149
|
+
|
150
|
+
// Test if the string passed is valid
|
151
|
+
var results = parseRegExp.exec(val);
|
152
|
+
var floatValue;
|
153
|
+
var unit = 'b';
|
154
|
+
|
155
|
+
if (!results) {
|
156
|
+
// Nothing could be extracted from the given string
|
157
|
+
floatValue = parseInt(val, 10);
|
158
|
+
unit = 'b'
|
159
|
+
} else {
|
160
|
+
// Retrieve the value and the unit
|
161
|
+
floatValue = parseFloat(results[1]);
|
162
|
+
unit = results[4].toLowerCase();
|
163
|
+
}
|
164
|
+
|
165
|
+
return Math.floor(map[unit] * floatValue);
|
166
|
+
}
|
@@ -0,0 +1,42 @@
|
|
1
|
+
{
|
2
|
+
"name": "bytes",
|
3
|
+
"description": "Utility to parse a string bytes to bytes and vice-versa",
|
4
|
+
"version": "3.1.1",
|
5
|
+
"author": "TJ Holowaychuk <tj@vision-media.ca> (http://tjholowaychuk.com)",
|
6
|
+
"contributors": [
|
7
|
+
"Jed Watson <jed.watson@me.com>",
|
8
|
+
"Théo FIDRY <theo.fidry@gmail.com>"
|
9
|
+
],
|
10
|
+
"license": "MIT",
|
11
|
+
"keywords": [
|
12
|
+
"byte",
|
13
|
+
"bytes",
|
14
|
+
"utility",
|
15
|
+
"parse",
|
16
|
+
"parser",
|
17
|
+
"convert",
|
18
|
+
"converter"
|
19
|
+
],
|
20
|
+
"repository": "visionmedia/bytes.js",
|
21
|
+
"devDependencies": {
|
22
|
+
"eslint": "7.32.0",
|
23
|
+
"eslint-plugin-markdown": "2.2.1",
|
24
|
+
"mocha": "9.1.3",
|
25
|
+
"nyc": "15.1.0"
|
26
|
+
},
|
27
|
+
"files": [
|
28
|
+
"History.md",
|
29
|
+
"LICENSE",
|
30
|
+
"Readme.md",
|
31
|
+
"index.js"
|
32
|
+
],
|
33
|
+
"engines": {
|
34
|
+
"node": ">= 0.8"
|
35
|
+
},
|
36
|
+
"scripts": {
|
37
|
+
"lint": "eslint .",
|
38
|
+
"test": "mocha --check-leaks --reporter spec",
|
39
|
+
"test-ci": "nyc --reporter=lcov --reporter=text npm test",
|
40
|
+
"test-cov": "nyc --reporter=html --reporter=text npm test"
|
41
|
+
}
|
42
|
+
}
|
@@ -0,0 +1,60 @@
|
|
1
|
+
0.5.4 / 2021-12-10
|
2
|
+
==================
|
3
|
+
|
4
|
+
* deps: safe-buffer@5.2.1
|
5
|
+
|
6
|
+
0.5.3 / 2018-12-17
|
7
|
+
==================
|
8
|
+
|
9
|
+
* Use `safe-buffer` for improved Buffer API
|
10
|
+
|
11
|
+
0.5.2 / 2016-12-08
|
12
|
+
==================
|
13
|
+
|
14
|
+
* Fix `parse` to accept any linear whitespace character
|
15
|
+
|
16
|
+
0.5.1 / 2016-01-17
|
17
|
+
==================
|
18
|
+
|
19
|
+
* perf: enable strict mode
|
20
|
+
|
21
|
+
0.5.0 / 2014-10-11
|
22
|
+
==================
|
23
|
+
|
24
|
+
* Add `parse` function
|
25
|
+
|
26
|
+
0.4.0 / 2014-09-21
|
27
|
+
==================
|
28
|
+
|
29
|
+
* Expand non-Unicode `filename` to the full ISO-8859-1 charset
|
30
|
+
|
31
|
+
0.3.0 / 2014-09-20
|
32
|
+
==================
|
33
|
+
|
34
|
+
* Add `fallback` option
|
35
|
+
* Add `type` option
|
36
|
+
|
37
|
+
0.2.0 / 2014-09-19
|
38
|
+
==================
|
39
|
+
|
40
|
+
* Reduce ambiguity of file names with hex escape in buggy browsers
|
41
|
+
|
42
|
+
0.1.2 / 2014-09-19
|
43
|
+
==================
|
44
|
+
|
45
|
+
* Fix periodic invalid Unicode filename header
|
46
|
+
|
47
|
+
0.1.1 / 2014-09-19
|
48
|
+
==================
|
49
|
+
|
50
|
+
* Fix invalid characters appearing in `filename*` parameter
|
51
|
+
|
52
|
+
0.1.0 / 2014-09-18
|
53
|
+
==================
|
54
|
+
|
55
|
+
* Make the `filename` argument optional
|
56
|
+
|
57
|
+
0.0.0 / 2014-09-18
|
58
|
+
==================
|
59
|
+
|
60
|
+
* Initial release
|
@@ -0,0 +1,22 @@
|
|
1
|
+
(The MIT License)
|
2
|
+
|
3
|
+
Copyright (c) 2014-2017 Douglas Christopher Wilson
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
6
|
+
a copy of this software and associated documentation files (the
|
7
|
+
'Software'), to deal in the Software without restriction, including
|
8
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
9
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
10
|
+
permit persons to whom the Software is furnished to do so, subject to
|
11
|
+
the following conditions:
|
12
|
+
|
13
|
+
The above copyright notice and this permission notice shall be
|
14
|
+
included in all copies or substantial portions of the Software.
|
15
|
+
|
16
|
+
THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
|
17
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
18
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
19
|
+
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
20
|
+
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
21
|
+
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
22
|
+
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
@@ -0,0 +1,142 @@
|
|
1
|
+
# content-disposition
|
2
|
+
|
3
|
+
[![NPM Version][npm-image]][npm-url]
|
4
|
+
[![NPM Downloads][downloads-image]][downloads-url]
|
5
|
+
[![Node.js Version][node-version-image]][node-version-url]
|
6
|
+
[![Build Status][github-actions-ci-image]][github-actions-ci-url]
|
7
|
+
[![Test Coverage][coveralls-image]][coveralls-url]
|
8
|
+
|
9
|
+
Create and parse HTTP `Content-Disposition` header
|
10
|
+
|
11
|
+
## Installation
|
12
|
+
|
13
|
+
```sh
|
14
|
+
$ npm install content-disposition
|
15
|
+
```
|
16
|
+
|
17
|
+
## API
|
18
|
+
|
19
|
+
```js
|
20
|
+
var contentDisposition = require('content-disposition')
|
21
|
+
```
|
22
|
+
|
23
|
+
### contentDisposition(filename, options)
|
24
|
+
|
25
|
+
Create an attachment `Content-Disposition` header value using the given file name,
|
26
|
+
if supplied. The `filename` is optional and if no file name is desired, but you
|
27
|
+
want to specify `options`, set `filename` to `undefined`.
|
28
|
+
|
29
|
+
```js
|
30
|
+
res.setHeader('Content-Disposition', contentDisposition('∫ maths.pdf'))
|
31
|
+
```
|
32
|
+
|
33
|
+
**note** HTTP headers are of the ISO-8859-1 character set. If you are writing this
|
34
|
+
header through a means different from `setHeader` in Node.js, you'll want to specify
|
35
|
+
the `'binary'` encoding in Node.js.
|
36
|
+
|
37
|
+
#### Options
|
38
|
+
|
39
|
+
`contentDisposition` accepts these properties in the options object.
|
40
|
+
|
41
|
+
##### fallback
|
42
|
+
|
43
|
+
If the `filename` option is outside ISO-8859-1, then the file name is actually
|
44
|
+
stored in a supplemental field for clients that support Unicode file names and
|
45
|
+
a ISO-8859-1 version of the file name is automatically generated.
|
46
|
+
|
47
|
+
This specifies the ISO-8859-1 file name to override the automatic generation or
|
48
|
+
disables the generation all together, defaults to `true`.
|
49
|
+
|
50
|
+
- A string will specify the ISO-8859-1 file name to use in place of automatic
|
51
|
+
generation.
|
52
|
+
- `false` will disable including a ISO-8859-1 file name and only include the
|
53
|
+
Unicode version (unless the file name is already ISO-8859-1).
|
54
|
+
- `true` will enable automatic generation if the file name is outside ISO-8859-1.
|
55
|
+
|
56
|
+
If the `filename` option is ISO-8859-1 and this option is specified and has a
|
57
|
+
different value, then the `filename` option is encoded in the extended field
|
58
|
+
and this set as the fallback field, even though they are both ISO-8859-1.
|
59
|
+
|
60
|
+
##### type
|
61
|
+
|
62
|
+
Specifies the disposition type, defaults to `"attachment"`. This can also be
|
63
|
+
`"inline"`, or any other value (all values except inline are treated like
|
64
|
+
`attachment`, but can convey additional information if both parties agree to
|
65
|
+
it). The type is normalized to lower-case.
|
66
|
+
|
67
|
+
### contentDisposition.parse(string)
|
68
|
+
|
69
|
+
```js
|
70
|
+
var disposition = contentDisposition.parse('attachment; filename="EURO rates.txt"; filename*=UTF-8\'\'%e2%82%ac%20rates.txt')
|
71
|
+
```
|
72
|
+
|
73
|
+
Parse a `Content-Disposition` header string. This automatically handles extended
|
74
|
+
("Unicode") parameters by decoding them and providing them under the standard
|
75
|
+
parameter name. This will return an object with the following properties (examples
|
76
|
+
are shown for the string `'attachment; filename="EURO rates.txt"; filename*=UTF-8\'\'%e2%82%ac%20rates.txt'`):
|
77
|
+
|
78
|
+
- `type`: The disposition type (always lower case). Example: `'attachment'`
|
79
|
+
|
80
|
+
- `parameters`: An object of the parameters in the disposition (name of parameter
|
81
|
+
always lower case and extended versions replace non-extended versions). Example:
|
82
|
+
`{filename: "€ rates.txt"}`
|
83
|
+
|
84
|
+
## Examples
|
85
|
+
|
86
|
+
### Send a file for download
|
87
|
+
|
88
|
+
```js
|
89
|
+
var contentDisposition = require('content-disposition')
|
90
|
+
var destroy = require('destroy')
|
91
|
+
var fs = require('fs')
|
92
|
+
var http = require('http')
|
93
|
+
var onFinished = require('on-finished')
|
94
|
+
|
95
|
+
var filePath = '/path/to/public/plans.pdf'
|
96
|
+
|
97
|
+
http.createServer(function onRequest (req, res) {
|
98
|
+
// set headers
|
99
|
+
res.setHeader('Content-Type', 'application/pdf')
|
100
|
+
res.setHeader('Content-Disposition', contentDisposition(filePath))
|
101
|
+
|
102
|
+
// send file
|
103
|
+
var stream = fs.createReadStream(filePath)
|
104
|
+
stream.pipe(res)
|
105
|
+
onFinished(res, function () {
|
106
|
+
destroy(stream)
|
107
|
+
})
|
108
|
+
})
|
109
|
+
```
|
110
|
+
|
111
|
+
## Testing
|
112
|
+
|
113
|
+
```sh
|
114
|
+
$ npm test
|
115
|
+
```
|
116
|
+
|
117
|
+
## References
|
118
|
+
|
119
|
+
- [RFC 2616: Hypertext Transfer Protocol -- HTTP/1.1][rfc-2616]
|
120
|
+
- [RFC 5987: Character Set and Language Encoding for Hypertext Transfer Protocol (HTTP) Header Field Parameters][rfc-5987]
|
121
|
+
- [RFC 6266: Use of the Content-Disposition Header Field in the Hypertext Transfer Protocol (HTTP)][rfc-6266]
|
122
|
+
- [Test Cases for HTTP Content-Disposition header field (RFC 6266) and the Encodings defined in RFCs 2047, 2231 and 5987][tc-2231]
|
123
|
+
|
124
|
+
[rfc-2616]: https://tools.ietf.org/html/rfc2616
|
125
|
+
[rfc-5987]: https://tools.ietf.org/html/rfc5987
|
126
|
+
[rfc-6266]: https://tools.ietf.org/html/rfc6266
|
127
|
+
[tc-2231]: http://greenbytes.de/tech/tc2231/
|
128
|
+
|
129
|
+
## License
|
130
|
+
|
131
|
+
[MIT](LICENSE)
|
132
|
+
|
133
|
+
[npm-image]: https://img.shields.io/npm/v/content-disposition.svg
|
134
|
+
[npm-url]: https://npmjs.org/package/content-disposition
|
135
|
+
[node-version-image]: https://img.shields.io/node/v/content-disposition.svg
|
136
|
+
[node-version-url]: https://nodejs.org/en/download
|
137
|
+
[coveralls-image]: https://img.shields.io/coveralls/jshttp/content-disposition.svg
|
138
|
+
[coveralls-url]: https://coveralls.io/r/jshttp/content-disposition?branch=master
|
139
|
+
[downloads-image]: https://img.shields.io/npm/dm/content-disposition.svg
|
140
|
+
[downloads-url]: https://npmjs.org/package/content-disposition
|
141
|
+
[github-actions-ci-image]: https://img.shields.io/github/workflow/status/jshttp/content-disposition/ci/master?label=ci
|
142
|
+
[github-actions-ci-url]: https://github.com/jshttp/content-disposition?query=workflow%3Aci
|