es6-crawler-detect 3.2.0 → 4.0.0-beta.1
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 +1 -1
- package/.mocharc.json +5 -0
- package/README.md +1 -0
- package/dist/main.bundle.js +1 -1
- package/eslint.config.mjs +62 -0
- package/example/node/package.json +1 -1
- package/example/node/server.js +38 -32
- package/example/node/yarn.lock +222 -99
- package/package.json +30 -25
- package/src/index.js +20 -14
- package/src/index.ts +18 -0
- package/src/lib/crawler/crawlers.js +9 -12
- package/src/lib/crawler/crawlers.ts +1397 -0
- package/src/lib/crawler/exclusions.js +7 -11
- package/src/lib/crawler/exclusions.ts +56 -0
- package/src/lib/crawler/headers.js +6 -10
- package/src/lib/crawler/headers.ts +18 -0
- package/src/lib/crawler/provider.js +1 -10
- package/src/lib/crawler/provider.ts +3 -0
- package/src/lib/crawler.js +61 -98
- package/src/lib/crawler.ts +128 -0
- package/src/types.js +2 -0
- package/src/types.ts +15 -0
- package/test/lib/crawler.spec.js +149 -0
- package/test/lib/crawler.spec.ts +116 -0
- package/test/lib/database/crawlers.txt +3651 -0
- package/test/lib/database/devices.txt +165636 -0
- package/tsconfig.json +16 -0
- package/webpack.common.js +20 -20
- package/webpack.dev.js +7 -7
- package/webpack.prod.js +14 -14
- package/.eslintignore +0 -6
- package/.eslintrc.json +0 -30
- package/example/node/node_modules/.bin/mime +0 -15
- package/example/node/node_modules/.bin/mime.cmd +0 -7
- package/example/node/node_modules/.yarn-integrity +0 -67
- package/example/node/node_modules/accepts/HISTORY.md +0 -236
- package/example/node/node_modules/accepts/LICENSE +0 -23
- package/example/node/node_modules/accepts/README.md +0 -142
- package/example/node/node_modules/accepts/index.js +0 -238
- package/example/node/node_modules/accepts/package.json +0 -47
- package/example/node/node_modules/array-flatten/LICENSE +0 -21
- package/example/node/node_modules/array-flatten/README.md +0 -43
- package/example/node/node_modules/array-flatten/array-flatten.js +0 -64
- package/example/node/node_modules/array-flatten/package.json +0 -39
- package/example/node/node_modules/body-parser/HISTORY.md +0 -624
- package/example/node/node_modules/body-parser/LICENSE +0 -23
- package/example/node/node_modules/body-parser/README.md +0 -456
- package/example/node/node_modules/body-parser/index.js +0 -157
- package/example/node/node_modules/body-parser/lib/read.js +0 -181
- package/example/node/node_modules/body-parser/lib/types/json.js +0 -230
- package/example/node/node_modules/body-parser/lib/types/raw.js +0 -101
- package/example/node/node_modules/body-parser/lib/types/text.js +0 -121
- package/example/node/node_modules/body-parser/lib/types/urlencoded.js +0 -284
- package/example/node/node_modules/body-parser/package.json +0 -52
- package/example/node/node_modules/bytes/History.md +0 -92
- package/example/node/node_modules/bytes/LICENSE +0 -23
- package/example/node/node_modules/bytes/Readme.md +0 -152
- package/example/node/node_modules/bytes/index.js +0 -166
- package/example/node/node_modules/bytes/package.json +0 -42
- package/example/node/node_modules/content-disposition/HISTORY.md +0 -60
- package/example/node/node_modules/content-disposition/LICENSE +0 -22
- package/example/node/node_modules/content-disposition/README.md +0 -142
- package/example/node/node_modules/content-disposition/index.js +0 -458
- package/example/node/node_modules/content-disposition/package.json +0 -44
- package/example/node/node_modules/content-type/HISTORY.md +0 -24
- package/example/node/node_modules/content-type/LICENSE +0 -22
- package/example/node/node_modules/content-type/README.md +0 -92
- package/example/node/node_modules/content-type/index.js +0 -222
- package/example/node/node_modules/content-type/package.json +0 -40
- package/example/node/node_modules/cookie/HISTORY.md +0 -128
- package/example/node/node_modules/cookie/LICENSE +0 -24
- package/example/node/node_modules/cookie/README.md +0 -257
- package/example/node/node_modules/cookie/index.js +0 -202
- package/example/node/node_modules/cookie/package.json +0 -40
- package/example/node/node_modules/cookie-signature/History.md +0 -38
- package/example/node/node_modules/cookie-signature/Readme.md +0 -42
- package/example/node/node_modules/cookie-signature/index.js +0 -51
- package/example/node/node_modules/cookie-signature/package.json +0 -18
- package/example/node/node_modules/debug/.coveralls.yml +0 -1
- package/example/node/node_modules/debug/.eslintrc +0 -11
- package/example/node/node_modules/debug/.travis.yml +0 -14
- package/example/node/node_modules/debug/CHANGELOG.md +0 -362
- package/example/node/node_modules/debug/LICENSE +0 -19
- package/example/node/node_modules/debug/Makefile +0 -50
- package/example/node/node_modules/debug/README.md +0 -312
- package/example/node/node_modules/debug/component.json +0 -19
- package/example/node/node_modules/debug/karma.conf.js +0 -70
- package/example/node/node_modules/debug/node.js +0 -1
- package/example/node/node_modules/debug/package.json +0 -49
- package/example/node/node_modules/debug/src/browser.js +0 -185
- package/example/node/node_modules/debug/src/debug.js +0 -202
- package/example/node/node_modules/debug/src/index.js +0 -10
- package/example/node/node_modules/debug/src/inspector-log.js +0 -15
- package/example/node/node_modules/debug/src/node.js +0 -248
- package/example/node/node_modules/depd/History.md +0 -96
- package/example/node/node_modules/depd/LICENSE +0 -22
- package/example/node/node_modules/depd/Readme.md +0 -280
- package/example/node/node_modules/depd/index.js +0 -522
- package/example/node/node_modules/depd/lib/browser/index.js +0 -77
- package/example/node/node_modules/depd/lib/compat/callsite-tostring.js +0 -103
- package/example/node/node_modules/depd/lib/compat/event-listener-count.js +0 -22
- package/example/node/node_modules/depd/lib/compat/index.js +0 -79
- package/example/node/node_modules/depd/package.json +0 -41
- package/example/node/node_modules/destroy/LICENSE +0 -22
- package/example/node/node_modules/destroy/README.md +0 -60
- package/example/node/node_modules/destroy/index.js +0 -75
- package/example/node/node_modules/destroy/package.json +0 -37
- package/example/node/node_modules/ee-first/LICENSE +0 -22
- package/example/node/node_modules/ee-first/README.md +0 -80
- package/example/node/node_modules/ee-first/index.js +0 -95
- package/example/node/node_modules/ee-first/package.json +0 -29
- package/example/node/node_modules/encodeurl/HISTORY.md +0 -14
- package/example/node/node_modules/encodeurl/LICENSE +0 -22
- package/example/node/node_modules/encodeurl/README.md +0 -128
- package/example/node/node_modules/encodeurl/index.js +0 -60
- package/example/node/node_modules/encodeurl/package.json +0 -40
- package/example/node/node_modules/escape-html/LICENSE +0 -24
- package/example/node/node_modules/escape-html/Readme.md +0 -43
- package/example/node/node_modules/escape-html/index.js +0 -78
- package/example/node/node_modules/escape-html/package.json +0 -24
- package/example/node/node_modules/etag/HISTORY.md +0 -83
- package/example/node/node_modules/etag/LICENSE +0 -22
- package/example/node/node_modules/etag/README.md +0 -159
- package/example/node/node_modules/etag/index.js +0 -131
- package/example/node/node_modules/etag/package.json +0 -47
- package/example/node/node_modules/express/History.md +0 -3510
- package/example/node/node_modules/express/LICENSE +0 -24
- package/example/node/node_modules/express/Readme.md +0 -158
- package/example/node/node_modules/express/index.js +0 -11
- package/example/node/node_modules/express/lib/application.js +0 -644
- package/example/node/node_modules/express/lib/express.js +0 -116
- package/example/node/node_modules/express/lib/middleware/init.js +0 -43
- package/example/node/node_modules/express/lib/middleware/query.js +0 -47
- package/example/node/node_modules/express/lib/request.js +0 -525
- package/example/node/node_modules/express/lib/response.js +0 -1147
- package/example/node/node_modules/express/lib/router/index.js +0 -668
- package/example/node/node_modules/express/lib/router/layer.js +0 -181
- package/example/node/node_modules/express/lib/router/route.js +0 -216
- package/example/node/node_modules/express/lib/utils.js +0 -302
- package/example/node/node_modules/express/lib/view.js +0 -182
- package/example/node/node_modules/express/package.json +0 -99
- package/example/node/node_modules/finalhandler/HISTORY.md +0 -187
- package/example/node/node_modules/finalhandler/LICENSE +0 -22
- package/example/node/node_modules/finalhandler/README.md +0 -148
- package/example/node/node_modules/finalhandler/index.js +0 -331
- package/example/node/node_modules/finalhandler/package.json +0 -45
- package/example/node/node_modules/forwarded/HISTORY.md +0 -21
- package/example/node/node_modules/forwarded/LICENSE +0 -22
- package/example/node/node_modules/forwarded/README.md +0 -57
- package/example/node/node_modules/forwarded/index.js +0 -90
- package/example/node/node_modules/forwarded/package.json +0 -45
- package/example/node/node_modules/fresh/HISTORY.md +0 -70
- package/example/node/node_modules/fresh/LICENSE +0 -23
- package/example/node/node_modules/fresh/README.md +0 -119
- package/example/node/node_modules/fresh/index.js +0 -137
- package/example/node/node_modules/fresh/package.json +0 -46
- package/example/node/node_modules/http-errors/HISTORY.md +0 -165
- package/example/node/node_modules/http-errors/LICENSE +0 -23
- package/example/node/node_modules/http-errors/README.md +0 -169
- package/example/node/node_modules/http-errors/index.js +0 -299
- package/example/node/node_modules/http-errors/package.json +0 -49
- package/example/node/node_modules/iconv-lite/Changelog.md +0 -162
- package/example/node/node_modules/iconv-lite/LICENSE +0 -21
- package/example/node/node_modules/iconv-lite/README.md +0 -156
- package/example/node/node_modules/iconv-lite/encodings/dbcs-codec.js +0 -555
- package/example/node/node_modules/iconv-lite/encodings/dbcs-data.js +0 -176
- package/example/node/node_modules/iconv-lite/encodings/index.js +0 -22
- package/example/node/node_modules/iconv-lite/encodings/internal.js +0 -188
- package/example/node/node_modules/iconv-lite/encodings/sbcs-codec.js +0 -72
- package/example/node/node_modules/iconv-lite/encodings/sbcs-data-generated.js +0 -451
- package/example/node/node_modules/iconv-lite/encodings/sbcs-data.js +0 -174
- package/example/node/node_modules/iconv-lite/encodings/tables/big5-added.json +0 -122
- package/example/node/node_modules/iconv-lite/encodings/tables/cp936.json +0 -264
- package/example/node/node_modules/iconv-lite/encodings/tables/cp949.json +0 -273
- package/example/node/node_modules/iconv-lite/encodings/tables/cp950.json +0 -177
- package/example/node/node_modules/iconv-lite/encodings/tables/eucjp.json +0 -182
- package/example/node/node_modules/iconv-lite/encodings/tables/gb18030-ranges.json +0 -1
- package/example/node/node_modules/iconv-lite/encodings/tables/gbk-added.json +0 -55
- package/example/node/node_modules/iconv-lite/encodings/tables/shiftjis.json +0 -125
- package/example/node/node_modules/iconv-lite/encodings/utf16.js +0 -177
- package/example/node/node_modules/iconv-lite/encodings/utf7.js +0 -290
- package/example/node/node_modules/iconv-lite/lib/bom-handling.js +0 -52
- package/example/node/node_modules/iconv-lite/lib/extend-node.js +0 -217
- package/example/node/node_modules/iconv-lite/lib/index.d.ts +0 -24
- package/example/node/node_modules/iconv-lite/lib/index.js +0 -153
- package/example/node/node_modules/iconv-lite/lib/streams.js +0 -121
- package/example/node/node_modules/iconv-lite/package.json +0 -46
- package/example/node/node_modules/inherits/LICENSE +0 -16
- package/example/node/node_modules/inherits/README.md +0 -42
- package/example/node/node_modules/inherits/inherits.js +0 -9
- package/example/node/node_modules/inherits/inherits_browser.js +0 -27
- package/example/node/node_modules/inherits/package.json +0 -29
- package/example/node/node_modules/ipaddr.js/LICENSE +0 -19
- package/example/node/node_modules/ipaddr.js/README.md +0 -233
- package/example/node/node_modules/ipaddr.js/ipaddr.min.js +0 -1
- package/example/node/node_modules/ipaddr.js/lib/ipaddr.js +0 -673
- package/example/node/node_modules/ipaddr.js/lib/ipaddr.js.d.ts +0 -68
- package/example/node/node_modules/ipaddr.js/package.json +0 -35
- package/example/node/node_modules/media-typer/HISTORY.md +0 -22
- package/example/node/node_modules/media-typer/LICENSE +0 -22
- package/example/node/node_modules/media-typer/README.md +0 -81
- package/example/node/node_modules/media-typer/index.js +0 -270
- package/example/node/node_modules/media-typer/package.json +0 -26
- package/example/node/node_modules/merge-descriptors/HISTORY.md +0 -21
- package/example/node/node_modules/merge-descriptors/LICENSE +0 -23
- package/example/node/node_modules/merge-descriptors/README.md +0 -48
- package/example/node/node_modules/merge-descriptors/index.js +0 -60
- package/example/node/node_modules/merge-descriptors/package.json +0 -32
- package/example/node/node_modules/methods/HISTORY.md +0 -29
- package/example/node/node_modules/methods/LICENSE +0 -24
- package/example/node/node_modules/methods/README.md +0 -51
- package/example/node/node_modules/methods/index.js +0 -69
- package/example/node/node_modules/methods/package.json +0 -36
- package/example/node/node_modules/mime/CHANGELOG.md +0 -164
- package/example/node/node_modules/mime/LICENSE +0 -21
- package/example/node/node_modules/mime/README.md +0 -90
- package/example/node/node_modules/mime/cli.js +0 -8
- package/example/node/node_modules/mime/mime.js +0 -108
- package/example/node/node_modules/mime/package.json +0 -44
- package/example/node/node_modules/mime/src/build.js +0 -53
- package/example/node/node_modules/mime/src/test.js +0 -60
- package/example/node/node_modules/mime/types.json +0 -1
- package/example/node/node_modules/mime-db/HISTORY.md +0 -499
- package/example/node/node_modules/mime-db/LICENSE +0 -22
- package/example/node/node_modules/mime-db/README.md +0 -100
- package/example/node/node_modules/mime-db/db.json +0 -8471
- package/example/node/node_modules/mime-db/index.js +0 -11
- package/example/node/node_modules/mime-db/package.json +0 -59
- package/example/node/node_modules/mime-types/HISTORY.md +0 -388
- package/example/node/node_modules/mime-types/LICENSE +0 -23
- package/example/node/node_modules/mime-types/README.md +0 -113
- package/example/node/node_modules/mime-types/index.js +0 -188
- package/example/node/node_modules/mime-types/package.json +0 -44
- package/example/node/node_modules/ms/index.js +0 -152
- package/example/node/node_modules/ms/license.md +0 -21
- package/example/node/node_modules/ms/package.json +0 -37
- package/example/node/node_modules/ms/readme.md +0 -51
- package/example/node/node_modules/negotiator/HISTORY.md +0 -103
- package/example/node/node_modules/negotiator/LICENSE +0 -24
- package/example/node/node_modules/negotiator/README.md +0 -203
- package/example/node/node_modules/negotiator/index.js +0 -124
- package/example/node/node_modules/negotiator/lib/charset.js +0 -169
- package/example/node/node_modules/negotiator/lib/encoding.js +0 -184
- package/example/node/node_modules/negotiator/lib/language.js +0 -179
- package/example/node/node_modules/negotiator/lib/mediaType.js +0 -294
- package/example/node/node_modules/negotiator/package.json +0 -42
- package/example/node/node_modules/on-finished/HISTORY.md +0 -88
- package/example/node/node_modules/on-finished/LICENSE +0 -23
- package/example/node/node_modules/on-finished/README.md +0 -154
- package/example/node/node_modules/on-finished/index.js +0 -196
- package/example/node/node_modules/on-finished/package.json +0 -31
- package/example/node/node_modules/parseurl/HISTORY.md +0 -58
- package/example/node/node_modules/parseurl/LICENSE +0 -24
- package/example/node/node_modules/parseurl/README.md +0 -133
- package/example/node/node_modules/parseurl/index.js +0 -158
- package/example/node/node_modules/parseurl/package.json +0 -40
- package/example/node/node_modules/path-to-regexp/History.md +0 -36
- package/example/node/node_modules/path-to-regexp/LICENSE +0 -21
- package/example/node/node_modules/path-to-regexp/Readme.md +0 -35
- package/example/node/node_modules/path-to-regexp/index.js +0 -129
- package/example/node/node_modules/path-to-regexp/package.json +0 -30
- package/example/node/node_modules/proxy-addr/HISTORY.md +0 -161
- package/example/node/node_modules/proxy-addr/LICENSE +0 -22
- package/example/node/node_modules/proxy-addr/README.md +0 -139
- package/example/node/node_modules/proxy-addr/index.js +0 -327
- package/example/node/node_modules/proxy-addr/package.json +0 -47
- package/example/node/node_modules/qs/.editorconfig +0 -39
- package/example/node/node_modules/qs/.eslintignore +0 -2
- package/example/node/node_modules/qs/.eslintrc +0 -35
- package/example/node/node_modules/qs/.github/FUNDING.yml +0 -12
- package/example/node/node_modules/qs/.nycrc +0 -13
- package/example/node/node_modules/qs/CHANGELOG.md +0 -359
- package/example/node/node_modules/qs/LICENSE.md +0 -29
- package/example/node/node_modules/qs/README.md +0 -604
- package/example/node/node_modules/qs/dist/qs.js +0 -832
- package/example/node/node_modules/qs/lib/formats.js +0 -23
- package/example/node/node_modules/qs/lib/index.js +0 -11
- package/example/node/node_modules/qs/lib/parse.js +0 -257
- package/example/node/node_modules/qs/lib/stringify.js +0 -278
- package/example/node/node_modules/qs/lib/utils.js +0 -251
- package/example/node/node_modules/qs/package.json +0 -69
- package/example/node/node_modules/qs/test/parse.js +0 -772
- package/example/node/node_modules/qs/test/stringify.js +0 -793
- package/example/node/node_modules/qs/test/utils.js +0 -136
- package/example/node/node_modules/range-parser/HISTORY.md +0 -56
- package/example/node/node_modules/range-parser/LICENSE +0 -23
- package/example/node/node_modules/range-parser/README.md +0 -84
- package/example/node/node_modules/range-parser/index.js +0 -162
- package/example/node/node_modules/range-parser/package.json +0 -44
- package/example/node/node_modules/raw-body/HISTORY.md +0 -284
- package/example/node/node_modules/raw-body/LICENSE +0 -22
- package/example/node/node_modules/raw-body/README.md +0 -217
- package/example/node/node_modules/raw-body/index.d.ts +0 -87
- package/example/node/node_modules/raw-body/index.js +0 -286
- package/example/node/node_modules/raw-body/package.json +0 -48
- package/example/node/node_modules/safe-buffer/LICENSE +0 -21
- package/example/node/node_modules/safe-buffer/README.md +0 -584
- package/example/node/node_modules/safe-buffer/index.d.ts +0 -187
- package/example/node/node_modules/safe-buffer/index.js +0 -65
- package/example/node/node_modules/safe-buffer/package.json +0 -51
- package/example/node/node_modules/safer-buffer/LICENSE +0 -21
- package/example/node/node_modules/safer-buffer/Porting-Buffer.md +0 -268
- package/example/node/node_modules/safer-buffer/Readme.md +0 -156
- package/example/node/node_modules/safer-buffer/dangerous.js +0 -58
- package/example/node/node_modules/safer-buffer/package.json +0 -34
- package/example/node/node_modules/safer-buffer/safer.js +0 -77
- package/example/node/node_modules/safer-buffer/tests.js +0 -406
- package/example/node/node_modules/send/HISTORY.md +0 -506
- package/example/node/node_modules/send/LICENSE +0 -23
- package/example/node/node_modules/send/README.md +0 -327
- package/example/node/node_modules/send/index.js +0 -1133
- package/example/node/node_modules/send/node_modules/.bin/mime +0 -15
- package/example/node/node_modules/send/node_modules/.bin/mime.cmd +0 -7
- package/example/node/node_modules/send/node_modules/ms/index.js +0 -162
- package/example/node/node_modules/send/node_modules/ms/license.md +0 -21
- package/example/node/node_modules/send/node_modules/ms/package.json +0 -38
- package/example/node/node_modules/send/node_modules/ms/readme.md +0 -59
- package/example/node/node_modules/send/package.json +0 -61
- package/example/node/node_modules/serve-static/HISTORY.md +0 -459
- package/example/node/node_modules/serve-static/LICENSE +0 -25
- package/example/node/node_modules/serve-static/README.md +0 -257
- package/example/node/node_modules/serve-static/index.js +0 -210
- package/example/node/node_modules/serve-static/package.json +0 -42
- package/example/node/node_modules/setprototypeof/LICENSE +0 -13
- package/example/node/node_modules/setprototypeof/README.md +0 -31
- package/example/node/node_modules/setprototypeof/index.d.ts +0 -2
- package/example/node/node_modules/setprototypeof/index.js +0 -17
- package/example/node/node_modules/setprototypeof/package.json +0 -38
- package/example/node/node_modules/setprototypeof/test/index.js +0 -24
- package/example/node/node_modules/statuses/HISTORY.md +0 -65
- package/example/node/node_modules/statuses/LICENSE +0 -23
- package/example/node/node_modules/statuses/README.md +0 -127
- package/example/node/node_modules/statuses/codes.json +0 -66
- package/example/node/node_modules/statuses/index.js +0 -113
- package/example/node/node_modules/statuses/package.json +0 -48
- package/example/node/node_modules/toidentifier/HISTORY.md +0 -9
- package/example/node/node_modules/toidentifier/LICENSE +0 -21
- package/example/node/node_modules/toidentifier/README.md +0 -61
- package/example/node/node_modules/toidentifier/index.js +0 -32
- package/example/node/node_modules/toidentifier/package.json +0 -38
- package/example/node/node_modules/type-is/HISTORY.md +0 -259
- package/example/node/node_modules/type-is/LICENSE +0 -23
- package/example/node/node_modules/type-is/README.md +0 -170
- package/example/node/node_modules/type-is/index.js +0 -266
- package/example/node/node_modules/type-is/package.json +0 -45
- package/example/node/node_modules/unpipe/HISTORY.md +0 -4
- package/example/node/node_modules/unpipe/LICENSE +0 -22
- package/example/node/node_modules/unpipe/README.md +0 -43
- package/example/node/node_modules/unpipe/index.js +0 -69
- package/example/node/node_modules/unpipe/package.json +0 -27
- package/example/node/node_modules/utils-merge/LICENSE +0 -20
- package/example/node/node_modules/utils-merge/README.md +0 -34
- package/example/node/node_modules/utils-merge/index.js +0 -23
- package/example/node/node_modules/utils-merge/package.json +0 -40
- package/example/node/node_modules/vary/HISTORY.md +0 -39
- package/example/node/node_modules/vary/LICENSE +0 -22
- package/example/node/node_modules/vary/README.md +0 -101
- package/example/node/node_modules/vary/index.js +0 -149
- package/example/node/node_modules/vary/package.json +0 -43
- package/test/lib/crawler.test.js +0 -52
@@ -1,331 +0,0 @@
|
|
1
|
-
/*!
|
2
|
-
* finalhandler
|
3
|
-
* Copyright(c) 2014-2017 Douglas Christopher Wilson
|
4
|
-
* MIT Licensed
|
5
|
-
*/
|
6
|
-
|
7
|
-
'use strict'
|
8
|
-
|
9
|
-
/**
|
10
|
-
* Module dependencies.
|
11
|
-
* @private
|
12
|
-
*/
|
13
|
-
|
14
|
-
var debug = require('debug')('finalhandler')
|
15
|
-
var encodeUrl = require('encodeurl')
|
16
|
-
var escapeHtml = require('escape-html')
|
17
|
-
var onFinished = require('on-finished')
|
18
|
-
var parseUrl = require('parseurl')
|
19
|
-
var statuses = require('statuses')
|
20
|
-
var unpipe = require('unpipe')
|
21
|
-
|
22
|
-
/**
|
23
|
-
* Module variables.
|
24
|
-
* @private
|
25
|
-
*/
|
26
|
-
|
27
|
-
var DOUBLE_SPACE_REGEXP = /\x20{2}/g
|
28
|
-
var NEWLINE_REGEXP = /\n/g
|
29
|
-
|
30
|
-
/* istanbul ignore next */
|
31
|
-
var defer = typeof setImmediate === 'function'
|
32
|
-
? setImmediate
|
33
|
-
: function (fn) { process.nextTick(fn.bind.apply(fn, arguments)) }
|
34
|
-
var isFinished = onFinished.isFinished
|
35
|
-
|
36
|
-
/**
|
37
|
-
* Create a minimal HTML document.
|
38
|
-
*
|
39
|
-
* @param {string} message
|
40
|
-
* @private
|
41
|
-
*/
|
42
|
-
|
43
|
-
function createHtmlDocument (message) {
|
44
|
-
var body = escapeHtml(message)
|
45
|
-
.replace(NEWLINE_REGEXP, '<br>')
|
46
|
-
.replace(DOUBLE_SPACE_REGEXP, ' ')
|
47
|
-
|
48
|
-
return '<!DOCTYPE html>\n' +
|
49
|
-
'<html lang="en">\n' +
|
50
|
-
'<head>\n' +
|
51
|
-
'<meta charset="utf-8">\n' +
|
52
|
-
'<title>Error</title>\n' +
|
53
|
-
'</head>\n' +
|
54
|
-
'<body>\n' +
|
55
|
-
'<pre>' + body + '</pre>\n' +
|
56
|
-
'</body>\n' +
|
57
|
-
'</html>\n'
|
58
|
-
}
|
59
|
-
|
60
|
-
/**
|
61
|
-
* Module exports.
|
62
|
-
* @public
|
63
|
-
*/
|
64
|
-
|
65
|
-
module.exports = finalhandler
|
66
|
-
|
67
|
-
/**
|
68
|
-
* Create a function to handle the final response.
|
69
|
-
*
|
70
|
-
* @param {Request} req
|
71
|
-
* @param {Response} res
|
72
|
-
* @param {Object} [options]
|
73
|
-
* @return {Function}
|
74
|
-
* @public
|
75
|
-
*/
|
76
|
-
|
77
|
-
function finalhandler (req, res, options) {
|
78
|
-
var opts = options || {}
|
79
|
-
|
80
|
-
// get environment
|
81
|
-
var env = opts.env || process.env.NODE_ENV || 'development'
|
82
|
-
|
83
|
-
// get error callback
|
84
|
-
var onerror = opts.onerror
|
85
|
-
|
86
|
-
return function (err) {
|
87
|
-
var headers
|
88
|
-
var msg
|
89
|
-
var status
|
90
|
-
|
91
|
-
// ignore 404 on in-flight response
|
92
|
-
if (!err && headersSent(res)) {
|
93
|
-
debug('cannot 404 after headers sent')
|
94
|
-
return
|
95
|
-
}
|
96
|
-
|
97
|
-
// unhandled error
|
98
|
-
if (err) {
|
99
|
-
// respect status code from error
|
100
|
-
status = getErrorStatusCode(err)
|
101
|
-
|
102
|
-
if (status === undefined) {
|
103
|
-
// fallback to status code on response
|
104
|
-
status = getResponseStatusCode(res)
|
105
|
-
} else {
|
106
|
-
// respect headers from error
|
107
|
-
headers = getErrorHeaders(err)
|
108
|
-
}
|
109
|
-
|
110
|
-
// get error message
|
111
|
-
msg = getErrorMessage(err, status, env)
|
112
|
-
} else {
|
113
|
-
// not found
|
114
|
-
status = 404
|
115
|
-
msg = 'Cannot ' + req.method + ' ' + encodeUrl(getResourceName(req))
|
116
|
-
}
|
117
|
-
|
118
|
-
debug('default %s', status)
|
119
|
-
|
120
|
-
// schedule onerror callback
|
121
|
-
if (err && onerror) {
|
122
|
-
defer(onerror, err, req, res)
|
123
|
-
}
|
124
|
-
|
125
|
-
// cannot actually respond
|
126
|
-
if (headersSent(res)) {
|
127
|
-
debug('cannot %d after headers sent', status)
|
128
|
-
req.socket.destroy()
|
129
|
-
return
|
130
|
-
}
|
131
|
-
|
132
|
-
// send response
|
133
|
-
send(req, res, status, headers, msg)
|
134
|
-
}
|
135
|
-
}
|
136
|
-
|
137
|
-
/**
|
138
|
-
* Get headers from Error object.
|
139
|
-
*
|
140
|
-
* @param {Error} err
|
141
|
-
* @return {object}
|
142
|
-
* @private
|
143
|
-
*/
|
144
|
-
|
145
|
-
function getErrorHeaders (err) {
|
146
|
-
if (!err.headers || typeof err.headers !== 'object') {
|
147
|
-
return undefined
|
148
|
-
}
|
149
|
-
|
150
|
-
var headers = Object.create(null)
|
151
|
-
var keys = Object.keys(err.headers)
|
152
|
-
|
153
|
-
for (var i = 0; i < keys.length; i++) {
|
154
|
-
var key = keys[i]
|
155
|
-
headers[key] = err.headers[key]
|
156
|
-
}
|
157
|
-
|
158
|
-
return headers
|
159
|
-
}
|
160
|
-
|
161
|
-
/**
|
162
|
-
* Get message from Error object, fallback to status message.
|
163
|
-
*
|
164
|
-
* @param {Error} err
|
165
|
-
* @param {number} status
|
166
|
-
* @param {string} env
|
167
|
-
* @return {string}
|
168
|
-
* @private
|
169
|
-
*/
|
170
|
-
|
171
|
-
function getErrorMessage (err, status, env) {
|
172
|
-
var msg
|
173
|
-
|
174
|
-
if (env !== 'production') {
|
175
|
-
// use err.stack, which typically includes err.message
|
176
|
-
msg = err.stack
|
177
|
-
|
178
|
-
// fallback to err.toString() when possible
|
179
|
-
if (!msg && typeof err.toString === 'function') {
|
180
|
-
msg = err.toString()
|
181
|
-
}
|
182
|
-
}
|
183
|
-
|
184
|
-
return msg || statuses[status]
|
185
|
-
}
|
186
|
-
|
187
|
-
/**
|
188
|
-
* Get status code from Error object.
|
189
|
-
*
|
190
|
-
* @param {Error} err
|
191
|
-
* @return {number}
|
192
|
-
* @private
|
193
|
-
*/
|
194
|
-
|
195
|
-
function getErrorStatusCode (err) {
|
196
|
-
// check err.status
|
197
|
-
if (typeof err.status === 'number' && err.status >= 400 && err.status < 600) {
|
198
|
-
return err.status
|
199
|
-
}
|
200
|
-
|
201
|
-
// check err.statusCode
|
202
|
-
if (typeof err.statusCode === 'number' && err.statusCode >= 400 && err.statusCode < 600) {
|
203
|
-
return err.statusCode
|
204
|
-
}
|
205
|
-
|
206
|
-
return undefined
|
207
|
-
}
|
208
|
-
|
209
|
-
/**
|
210
|
-
* Get resource name for the request.
|
211
|
-
*
|
212
|
-
* This is typically just the original pathname of the request
|
213
|
-
* but will fallback to "resource" is that cannot be determined.
|
214
|
-
*
|
215
|
-
* @param {IncomingMessage} req
|
216
|
-
* @return {string}
|
217
|
-
* @private
|
218
|
-
*/
|
219
|
-
|
220
|
-
function getResourceName (req) {
|
221
|
-
try {
|
222
|
-
return parseUrl.original(req).pathname
|
223
|
-
} catch (e) {
|
224
|
-
return 'resource'
|
225
|
-
}
|
226
|
-
}
|
227
|
-
|
228
|
-
/**
|
229
|
-
* Get status code from response.
|
230
|
-
*
|
231
|
-
* @param {OutgoingMessage} res
|
232
|
-
* @return {number}
|
233
|
-
* @private
|
234
|
-
*/
|
235
|
-
|
236
|
-
function getResponseStatusCode (res) {
|
237
|
-
var status = res.statusCode
|
238
|
-
|
239
|
-
// default status code to 500 if outside valid range
|
240
|
-
if (typeof status !== 'number' || status < 400 || status > 599) {
|
241
|
-
status = 500
|
242
|
-
}
|
243
|
-
|
244
|
-
return status
|
245
|
-
}
|
246
|
-
|
247
|
-
/**
|
248
|
-
* Determine if the response headers have been sent.
|
249
|
-
*
|
250
|
-
* @param {object} res
|
251
|
-
* @returns {boolean}
|
252
|
-
* @private
|
253
|
-
*/
|
254
|
-
|
255
|
-
function headersSent (res) {
|
256
|
-
return typeof res.headersSent !== 'boolean'
|
257
|
-
? Boolean(res._header)
|
258
|
-
: res.headersSent
|
259
|
-
}
|
260
|
-
|
261
|
-
/**
|
262
|
-
* Send response.
|
263
|
-
*
|
264
|
-
* @param {IncomingMessage} req
|
265
|
-
* @param {OutgoingMessage} res
|
266
|
-
* @param {number} status
|
267
|
-
* @param {object} headers
|
268
|
-
* @param {string} message
|
269
|
-
* @private
|
270
|
-
*/
|
271
|
-
|
272
|
-
function send (req, res, status, headers, message) {
|
273
|
-
function write () {
|
274
|
-
// response body
|
275
|
-
var body = createHtmlDocument(message)
|
276
|
-
|
277
|
-
// response status
|
278
|
-
res.statusCode = status
|
279
|
-
res.statusMessage = statuses[status]
|
280
|
-
|
281
|
-
// response headers
|
282
|
-
setHeaders(res, headers)
|
283
|
-
|
284
|
-
// security headers
|
285
|
-
res.setHeader('Content-Security-Policy', "default-src 'none'")
|
286
|
-
res.setHeader('X-Content-Type-Options', 'nosniff')
|
287
|
-
|
288
|
-
// standard headers
|
289
|
-
res.setHeader('Content-Type', 'text/html; charset=utf-8')
|
290
|
-
res.setHeader('Content-Length', Buffer.byteLength(body, 'utf8'))
|
291
|
-
|
292
|
-
if (req.method === 'HEAD') {
|
293
|
-
res.end()
|
294
|
-
return
|
295
|
-
}
|
296
|
-
|
297
|
-
res.end(body, 'utf8')
|
298
|
-
}
|
299
|
-
|
300
|
-
if (isFinished(req)) {
|
301
|
-
write()
|
302
|
-
return
|
303
|
-
}
|
304
|
-
|
305
|
-
// unpipe everything from the request
|
306
|
-
unpipe(req)
|
307
|
-
|
308
|
-
// flush the request
|
309
|
-
onFinished(req, write)
|
310
|
-
req.resume()
|
311
|
-
}
|
312
|
-
|
313
|
-
/**
|
314
|
-
* Set response headers from an object.
|
315
|
-
*
|
316
|
-
* @param {OutgoingMessage} res
|
317
|
-
* @param {object} headers
|
318
|
-
* @private
|
319
|
-
*/
|
320
|
-
|
321
|
-
function setHeaders (res, headers) {
|
322
|
-
if (!headers) {
|
323
|
-
return
|
324
|
-
}
|
325
|
-
|
326
|
-
var keys = Object.keys(headers)
|
327
|
-
for (var i = 0; i < keys.length; i++) {
|
328
|
-
var key = keys[i]
|
329
|
-
res.setHeader(key, headers[key])
|
330
|
-
}
|
331
|
-
}
|
@@ -1,45 +0,0 @@
|
|
1
|
-
{
|
2
|
-
"name": "finalhandler",
|
3
|
-
"description": "Node.js final http responder",
|
4
|
-
"version": "1.1.2",
|
5
|
-
"author": "Douglas Christopher Wilson <doug@somethingdoug.com>",
|
6
|
-
"license": "MIT",
|
7
|
-
"repository": "pillarjs/finalhandler",
|
8
|
-
"dependencies": {
|
9
|
-
"debug": "2.6.9",
|
10
|
-
"encodeurl": "~1.0.2",
|
11
|
-
"escape-html": "~1.0.3",
|
12
|
-
"on-finished": "~2.3.0",
|
13
|
-
"parseurl": "~1.3.3",
|
14
|
-
"statuses": "~1.5.0",
|
15
|
-
"unpipe": "~1.0.0"
|
16
|
-
},
|
17
|
-
"devDependencies": {
|
18
|
-
"eslint": "5.16.0",
|
19
|
-
"eslint-config-standard": "12.0.0",
|
20
|
-
"eslint-plugin-import": "2.17.2",
|
21
|
-
"eslint-plugin-markdown": "1.0.0",
|
22
|
-
"eslint-plugin-node": "8.0.1",
|
23
|
-
"eslint-plugin-promise": "4.1.1",
|
24
|
-
"eslint-plugin-standard": "4.0.0",
|
25
|
-
"istanbul": "0.4.5",
|
26
|
-
"mocha": "6.1.4",
|
27
|
-
"readable-stream": "2.3.6",
|
28
|
-
"safe-buffer": "5.1.2",
|
29
|
-
"supertest": "4.0.2"
|
30
|
-
},
|
31
|
-
"files": [
|
32
|
-
"LICENSE",
|
33
|
-
"HISTORY.md",
|
34
|
-
"index.js"
|
35
|
-
],
|
36
|
-
"engines": {
|
37
|
-
"node": ">= 0.8"
|
38
|
-
},
|
39
|
-
"scripts": {
|
40
|
-
"lint": "eslint --plugin markdown --ext js,md .",
|
41
|
-
"test": "mocha --reporter spec --bail --check-leaks test/",
|
42
|
-
"test-ci": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --reporter spec --check-leaks test/",
|
43
|
-
"test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --reporter dot --check-leaks test/"
|
44
|
-
}
|
45
|
-
}
|
@@ -1,21 +0,0 @@
|
|
1
|
-
0.2.0 / 2021-05-31
|
2
|
-
==================
|
3
|
-
|
4
|
-
* Use `req.socket` over deprecated `req.connection`
|
5
|
-
|
6
|
-
0.1.2 / 2017-09-14
|
7
|
-
==================
|
8
|
-
|
9
|
-
* perf: improve header parsing
|
10
|
-
* perf: reduce overhead when no `X-Forwarded-For` header
|
11
|
-
|
12
|
-
0.1.1 / 2017-09-10
|
13
|
-
==================
|
14
|
-
|
15
|
-
* Fix trimming leading / trailing OWS
|
16
|
-
* perf: hoist regular expression
|
17
|
-
|
18
|
-
0.1.0 / 2014-09-21
|
19
|
-
==================
|
20
|
-
|
21
|
-
* Initial release
|
@@ -1,22 +0,0 @@
|
|
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.
|
@@ -1,57 +0,0 @@
|
|
1
|
-
# forwarded
|
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][ci-image]][ci-url]
|
7
|
-
[![Test Coverage][coveralls-image]][coveralls-url]
|
8
|
-
|
9
|
-
Parse HTTP X-Forwarded-For header
|
10
|
-
|
11
|
-
## Installation
|
12
|
-
|
13
|
-
This is a [Node.js](https://nodejs.org/en/) module available through the
|
14
|
-
[npm registry](https://www.npmjs.com/). Installation is done using the
|
15
|
-
[`npm install` command](https://docs.npmjs.com/getting-started/installing-npm-packages-locally):
|
16
|
-
|
17
|
-
```sh
|
18
|
-
$ npm install forwarded
|
19
|
-
```
|
20
|
-
|
21
|
-
## API
|
22
|
-
|
23
|
-
```js
|
24
|
-
var forwarded = require('forwarded')
|
25
|
-
```
|
26
|
-
|
27
|
-
### forwarded(req)
|
28
|
-
|
29
|
-
```js
|
30
|
-
var addresses = forwarded(req)
|
31
|
-
```
|
32
|
-
|
33
|
-
Parse the `X-Forwarded-For` header from the request. Returns an array
|
34
|
-
of the addresses, including the socket address for the `req`, in reverse
|
35
|
-
order (i.e. index `0` is the socket address and the last index is the
|
36
|
-
furthest address, typically the end-user).
|
37
|
-
|
38
|
-
## Testing
|
39
|
-
|
40
|
-
```sh
|
41
|
-
$ npm test
|
42
|
-
```
|
43
|
-
|
44
|
-
## License
|
45
|
-
|
46
|
-
[MIT](LICENSE)
|
47
|
-
|
48
|
-
[ci-image]: https://badgen.net/github/checks/jshttp/forwarded/master?label=ci
|
49
|
-
[ci-url]: https://github.com/jshttp/forwarded/actions?query=workflow%3Aci
|
50
|
-
[npm-image]: https://img.shields.io/npm/v/forwarded.svg
|
51
|
-
[npm-url]: https://npmjs.org/package/forwarded
|
52
|
-
[node-version-image]: https://img.shields.io/node/v/forwarded.svg
|
53
|
-
[node-version-url]: https://nodejs.org/en/download/
|
54
|
-
[coveralls-image]: https://img.shields.io/coveralls/jshttp/forwarded/master.svg
|
55
|
-
[coveralls-url]: https://coveralls.io/r/jshttp/forwarded?branch=master
|
56
|
-
[downloads-image]: https://img.shields.io/npm/dm/forwarded.svg
|
57
|
-
[downloads-url]: https://npmjs.org/package/forwarded
|
@@ -1,90 +0,0 @@
|
|
1
|
-
/*!
|
2
|
-
* forwarded
|
3
|
-
* Copyright(c) 2014-2017 Douglas Christopher Wilson
|
4
|
-
* MIT Licensed
|
5
|
-
*/
|
6
|
-
|
7
|
-
'use strict'
|
8
|
-
|
9
|
-
/**
|
10
|
-
* Module exports.
|
11
|
-
* @public
|
12
|
-
*/
|
13
|
-
|
14
|
-
module.exports = forwarded
|
15
|
-
|
16
|
-
/**
|
17
|
-
* Get all addresses in the request, using the `X-Forwarded-For` header.
|
18
|
-
*
|
19
|
-
* @param {object} req
|
20
|
-
* @return {array}
|
21
|
-
* @public
|
22
|
-
*/
|
23
|
-
|
24
|
-
function forwarded (req) {
|
25
|
-
if (!req) {
|
26
|
-
throw new TypeError('argument req is required')
|
27
|
-
}
|
28
|
-
|
29
|
-
// simple header parsing
|
30
|
-
var proxyAddrs = parse(req.headers['x-forwarded-for'] || '')
|
31
|
-
var socketAddr = getSocketAddr(req)
|
32
|
-
var addrs = [socketAddr].concat(proxyAddrs)
|
33
|
-
|
34
|
-
// return all addresses
|
35
|
-
return addrs
|
36
|
-
}
|
37
|
-
|
38
|
-
/**
|
39
|
-
* Get the socket address for a request.
|
40
|
-
*
|
41
|
-
* @param {object} req
|
42
|
-
* @return {string}
|
43
|
-
* @private
|
44
|
-
*/
|
45
|
-
|
46
|
-
function getSocketAddr (req) {
|
47
|
-
return req.socket
|
48
|
-
? req.socket.remoteAddress
|
49
|
-
: req.connection.remoteAddress
|
50
|
-
}
|
51
|
-
|
52
|
-
/**
|
53
|
-
* Parse the X-Forwarded-For header.
|
54
|
-
*
|
55
|
-
* @param {string} header
|
56
|
-
* @private
|
57
|
-
*/
|
58
|
-
|
59
|
-
function parse (header) {
|
60
|
-
var end = header.length
|
61
|
-
var list = []
|
62
|
-
var start = header.length
|
63
|
-
|
64
|
-
// gather addresses, backwards
|
65
|
-
for (var i = header.length - 1; i >= 0; i--) {
|
66
|
-
switch (header.charCodeAt(i)) {
|
67
|
-
case 0x20: /* */
|
68
|
-
if (start === end) {
|
69
|
-
start = end = i
|
70
|
-
}
|
71
|
-
break
|
72
|
-
case 0x2c: /* , */
|
73
|
-
if (start !== end) {
|
74
|
-
list.push(header.substring(start, end))
|
75
|
-
}
|
76
|
-
start = end = i
|
77
|
-
break
|
78
|
-
default:
|
79
|
-
start = i
|
80
|
-
break
|
81
|
-
}
|
82
|
-
}
|
83
|
-
|
84
|
-
// final address
|
85
|
-
if (start !== end) {
|
86
|
-
list.push(header.substring(start, end))
|
87
|
-
}
|
88
|
-
|
89
|
-
return list
|
90
|
-
}
|
@@ -1,45 +0,0 @@
|
|
1
|
-
{
|
2
|
-
"name": "forwarded",
|
3
|
-
"description": "Parse HTTP X-Forwarded-For header",
|
4
|
-
"version": "0.2.0",
|
5
|
-
"contributors": [
|
6
|
-
"Douglas Christopher Wilson <doug@somethingdoug.com>"
|
7
|
-
],
|
8
|
-
"license": "MIT",
|
9
|
-
"keywords": [
|
10
|
-
"x-forwarded-for",
|
11
|
-
"http",
|
12
|
-
"req"
|
13
|
-
],
|
14
|
-
"repository": "jshttp/forwarded",
|
15
|
-
"devDependencies": {
|
16
|
-
"beautify-benchmark": "0.2.4",
|
17
|
-
"benchmark": "2.1.4",
|
18
|
-
"deep-equal": "1.0.1",
|
19
|
-
"eslint": "7.27.0",
|
20
|
-
"eslint-config-standard": "14.1.1",
|
21
|
-
"eslint-plugin-import": "2.23.4",
|
22
|
-
"eslint-plugin-node": "11.1.0",
|
23
|
-
"eslint-plugin-promise": "4.3.1",
|
24
|
-
"eslint-plugin-standard": "4.1.0",
|
25
|
-
"mocha": "8.4.0",
|
26
|
-
"nyc": "15.1.0"
|
27
|
-
},
|
28
|
-
"files": [
|
29
|
-
"LICENSE",
|
30
|
-
"HISTORY.md",
|
31
|
-
"README.md",
|
32
|
-
"index.js"
|
33
|
-
],
|
34
|
-
"engines": {
|
35
|
-
"node": ">= 0.6"
|
36
|
-
},
|
37
|
-
"scripts": {
|
38
|
-
"bench": "node benchmark/index.js",
|
39
|
-
"lint": "eslint .",
|
40
|
-
"test": "mocha --reporter spec --bail --check-leaks test/",
|
41
|
-
"test-ci": "nyc --reporter=lcov --reporter=text npm test",
|
42
|
-
"test-cov": "nyc --reporter=html --reporter=text npm test",
|
43
|
-
"version": "node scripts/version-history.js && git add HISTORY.md"
|
44
|
-
}
|
45
|
-
}
|
@@ -1,70 +0,0 @@
|
|
1
|
-
0.5.2 / 2017-09-13
|
2
|
-
==================
|
3
|
-
|
4
|
-
* Fix regression matching multiple ETags in `If-None-Match`
|
5
|
-
* perf: improve `If-None-Match` token parsing
|
6
|
-
|
7
|
-
0.5.1 / 2017-09-11
|
8
|
-
==================
|
9
|
-
|
10
|
-
* Fix handling of modified headers with invalid dates
|
11
|
-
* perf: improve ETag match loop
|
12
|
-
|
13
|
-
0.5.0 / 2017-02-21
|
14
|
-
==================
|
15
|
-
|
16
|
-
* Fix incorrect result when `If-None-Match` has both `*` and ETags
|
17
|
-
* Fix weak `ETag` matching to match spec
|
18
|
-
* perf: delay reading header values until needed
|
19
|
-
* perf: skip checking modified time if ETag check failed
|
20
|
-
* perf: skip parsing `If-None-Match` when no `ETag` header
|
21
|
-
* perf: use `Date.parse` instead of `new Date`
|
22
|
-
|
23
|
-
0.4.0 / 2017-02-05
|
24
|
-
==================
|
25
|
-
|
26
|
-
* Fix false detection of `no-cache` request directive
|
27
|
-
* perf: enable strict mode
|
28
|
-
* perf: hoist regular expressions
|
29
|
-
* perf: remove duplicate conditional
|
30
|
-
* perf: remove unnecessary boolean coercions
|
31
|
-
|
32
|
-
0.3.0 / 2015-05-12
|
33
|
-
==================
|
34
|
-
|
35
|
-
* Add weak `ETag` matching support
|
36
|
-
|
37
|
-
0.2.4 / 2014-09-07
|
38
|
-
==================
|
39
|
-
|
40
|
-
* Support Node.js 0.6
|
41
|
-
|
42
|
-
0.2.3 / 2014-09-07
|
43
|
-
==================
|
44
|
-
|
45
|
-
* Move repository to jshttp
|
46
|
-
|
47
|
-
0.2.2 / 2014-02-19
|
48
|
-
==================
|
49
|
-
|
50
|
-
* Revert "Fix for blank page on Safari reload"
|
51
|
-
|
52
|
-
0.2.1 / 2014-01-29
|
53
|
-
==================
|
54
|
-
|
55
|
-
* Fix for blank page on Safari reload
|
56
|
-
|
57
|
-
0.2.0 / 2013-08-11
|
58
|
-
==================
|
59
|
-
|
60
|
-
* Return stale for `Cache-Control: no-cache`
|
61
|
-
|
62
|
-
0.1.0 / 2012-06-15
|
63
|
-
==================
|
64
|
-
|
65
|
-
* Add `If-None-Match: *` support
|
66
|
-
|
67
|
-
0.0.1 / 2012-06-10
|
68
|
-
==================
|
69
|
-
|
70
|
-
* Initial release
|
@@ -1,23 +0,0 @@
|
|
1
|
-
(The MIT License)
|
2
|
-
|
3
|
-
Copyright (c) 2012 TJ Holowaychuk <tj@vision-media.ca>
|
4
|
-
Copyright (c) 2016-2017 Douglas Christopher Wilson <doug@somethingdoug.com>
|
5
|
-
|
6
|
-
Permission is hereby granted, free of charge, to any person obtaining
|
7
|
-
a copy of this software and associated documentation files (the
|
8
|
-
'Software'), to deal in the Software without restriction, including
|
9
|
-
without limitation the rights to use, copy, modify, merge, publish,
|
10
|
-
distribute, sublicense, and/or sell copies of the Software, and to
|
11
|
-
permit persons to whom the Software is furnished to do so, subject to
|
12
|
-
the following conditions:
|
13
|
-
|
14
|
-
The above copyright notice and this permission notice shall be
|
15
|
-
included in all copies or substantial portions of the Software.
|
16
|
-
|
17
|
-
THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
|
18
|
-
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
19
|
-
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
20
|
-
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
21
|
-
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
22
|
-
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
23
|
-
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|