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,182 +0,0 @@
|
|
1
|
-
/*!
|
2
|
-
* express
|
3
|
-
* Copyright(c) 2009-2013 TJ Holowaychuk
|
4
|
-
* Copyright(c) 2013 Roman Shtylman
|
5
|
-
* Copyright(c) 2014-2015 Douglas Christopher Wilson
|
6
|
-
* MIT Licensed
|
7
|
-
*/
|
8
|
-
|
9
|
-
'use strict';
|
10
|
-
|
11
|
-
/**
|
12
|
-
* Module dependencies.
|
13
|
-
* @private
|
14
|
-
*/
|
15
|
-
|
16
|
-
var debug = require('debug')('express:view');
|
17
|
-
var path = require('path');
|
18
|
-
var fs = require('fs');
|
19
|
-
|
20
|
-
/**
|
21
|
-
* Module variables.
|
22
|
-
* @private
|
23
|
-
*/
|
24
|
-
|
25
|
-
var dirname = path.dirname;
|
26
|
-
var basename = path.basename;
|
27
|
-
var extname = path.extname;
|
28
|
-
var join = path.join;
|
29
|
-
var resolve = path.resolve;
|
30
|
-
|
31
|
-
/**
|
32
|
-
* Module exports.
|
33
|
-
* @public
|
34
|
-
*/
|
35
|
-
|
36
|
-
module.exports = View;
|
37
|
-
|
38
|
-
/**
|
39
|
-
* Initialize a new `View` with the given `name`.
|
40
|
-
*
|
41
|
-
* Options:
|
42
|
-
*
|
43
|
-
* - `defaultEngine` the default template engine name
|
44
|
-
* - `engines` template engine require() cache
|
45
|
-
* - `root` root path for view lookup
|
46
|
-
*
|
47
|
-
* @param {string} name
|
48
|
-
* @param {object} options
|
49
|
-
* @public
|
50
|
-
*/
|
51
|
-
|
52
|
-
function View(name, options) {
|
53
|
-
var opts = options || {};
|
54
|
-
|
55
|
-
this.defaultEngine = opts.defaultEngine;
|
56
|
-
this.ext = extname(name);
|
57
|
-
this.name = name;
|
58
|
-
this.root = opts.root;
|
59
|
-
|
60
|
-
if (!this.ext && !this.defaultEngine) {
|
61
|
-
throw new Error('No default engine was specified and no extension was provided.');
|
62
|
-
}
|
63
|
-
|
64
|
-
var fileName = name;
|
65
|
-
|
66
|
-
if (!this.ext) {
|
67
|
-
// get extension from default engine name
|
68
|
-
this.ext = this.defaultEngine[0] !== '.'
|
69
|
-
? '.' + this.defaultEngine
|
70
|
-
: this.defaultEngine;
|
71
|
-
|
72
|
-
fileName += this.ext;
|
73
|
-
}
|
74
|
-
|
75
|
-
if (!opts.engines[this.ext]) {
|
76
|
-
// load engine
|
77
|
-
var mod = this.ext.substr(1)
|
78
|
-
debug('require "%s"', mod)
|
79
|
-
|
80
|
-
// default engine export
|
81
|
-
var fn = require(mod).__express
|
82
|
-
|
83
|
-
if (typeof fn !== 'function') {
|
84
|
-
throw new Error('Module "' + mod + '" does not provide a view engine.')
|
85
|
-
}
|
86
|
-
|
87
|
-
opts.engines[this.ext] = fn
|
88
|
-
}
|
89
|
-
|
90
|
-
// store loaded engine
|
91
|
-
this.engine = opts.engines[this.ext];
|
92
|
-
|
93
|
-
// lookup path
|
94
|
-
this.path = this.lookup(fileName);
|
95
|
-
}
|
96
|
-
|
97
|
-
/**
|
98
|
-
* Lookup view by the given `name`
|
99
|
-
*
|
100
|
-
* @param {string} name
|
101
|
-
* @private
|
102
|
-
*/
|
103
|
-
|
104
|
-
View.prototype.lookup = function lookup(name) {
|
105
|
-
var path;
|
106
|
-
var roots = [].concat(this.root);
|
107
|
-
|
108
|
-
debug('lookup "%s"', name);
|
109
|
-
|
110
|
-
for (var i = 0; i < roots.length && !path; i++) {
|
111
|
-
var root = roots[i];
|
112
|
-
|
113
|
-
// resolve the path
|
114
|
-
var loc = resolve(root, name);
|
115
|
-
var dir = dirname(loc);
|
116
|
-
var file = basename(loc);
|
117
|
-
|
118
|
-
// resolve the file
|
119
|
-
path = this.resolve(dir, file);
|
120
|
-
}
|
121
|
-
|
122
|
-
return path;
|
123
|
-
};
|
124
|
-
|
125
|
-
/**
|
126
|
-
* Render with the given options.
|
127
|
-
*
|
128
|
-
* @param {object} options
|
129
|
-
* @param {function} callback
|
130
|
-
* @private
|
131
|
-
*/
|
132
|
-
|
133
|
-
View.prototype.render = function render(options, callback) {
|
134
|
-
debug('render "%s"', this.path);
|
135
|
-
this.engine(this.path, options, callback);
|
136
|
-
};
|
137
|
-
|
138
|
-
/**
|
139
|
-
* Resolve the file within the given directory.
|
140
|
-
*
|
141
|
-
* @param {string} dir
|
142
|
-
* @param {string} file
|
143
|
-
* @private
|
144
|
-
*/
|
145
|
-
|
146
|
-
View.prototype.resolve = function resolve(dir, file) {
|
147
|
-
var ext = this.ext;
|
148
|
-
|
149
|
-
// <path>.<ext>
|
150
|
-
var path = join(dir, file);
|
151
|
-
var stat = tryStat(path);
|
152
|
-
|
153
|
-
if (stat && stat.isFile()) {
|
154
|
-
return path;
|
155
|
-
}
|
156
|
-
|
157
|
-
// <path>/index.<ext>
|
158
|
-
path = join(dir, basename(file, ext), 'index' + ext);
|
159
|
-
stat = tryStat(path);
|
160
|
-
|
161
|
-
if (stat && stat.isFile()) {
|
162
|
-
return path;
|
163
|
-
}
|
164
|
-
};
|
165
|
-
|
166
|
-
/**
|
167
|
-
* Return a stat, maybe.
|
168
|
-
*
|
169
|
-
* @param {string} path
|
170
|
-
* @return {fs.Stats}
|
171
|
-
* @private
|
172
|
-
*/
|
173
|
-
|
174
|
-
function tryStat(path) {
|
175
|
-
debug('stat "%s"', path);
|
176
|
-
|
177
|
-
try {
|
178
|
-
return fs.statSync(path);
|
179
|
-
} catch (e) {
|
180
|
-
return undefined;
|
181
|
-
}
|
182
|
-
}
|
@@ -1,99 +0,0 @@
|
|
1
|
-
{
|
2
|
-
"name": "express",
|
3
|
-
"description": "Fast, unopinionated, minimalist web framework",
|
4
|
-
"version": "4.17.2",
|
5
|
-
"author": "TJ Holowaychuk <tj@vision-media.ca>",
|
6
|
-
"contributors": [
|
7
|
-
"Aaron Heckmann <aaron.heckmann+github@gmail.com>",
|
8
|
-
"Ciaran Jessup <ciaranj@gmail.com>",
|
9
|
-
"Douglas Christopher Wilson <doug@somethingdoug.com>",
|
10
|
-
"Guillermo Rauch <rauchg@gmail.com>",
|
11
|
-
"Jonathan Ong <me@jongleberry.com>",
|
12
|
-
"Roman Shtylman <shtylman+expressjs@gmail.com>",
|
13
|
-
"Young Jae Sim <hanul@hanul.me>"
|
14
|
-
],
|
15
|
-
"license": "MIT",
|
16
|
-
"repository": "expressjs/express",
|
17
|
-
"homepage": "http://expressjs.com/",
|
18
|
-
"keywords": [
|
19
|
-
"express",
|
20
|
-
"framework",
|
21
|
-
"sinatra",
|
22
|
-
"web",
|
23
|
-
"http",
|
24
|
-
"rest",
|
25
|
-
"restful",
|
26
|
-
"router",
|
27
|
-
"app",
|
28
|
-
"api"
|
29
|
-
],
|
30
|
-
"dependencies": {
|
31
|
-
"accepts": "~1.3.7",
|
32
|
-
"array-flatten": "1.1.1",
|
33
|
-
"body-parser": "1.19.1",
|
34
|
-
"content-disposition": "0.5.4",
|
35
|
-
"content-type": "~1.0.4",
|
36
|
-
"cookie": "0.4.1",
|
37
|
-
"cookie-signature": "1.0.6",
|
38
|
-
"debug": "2.6.9",
|
39
|
-
"depd": "~1.1.2",
|
40
|
-
"encodeurl": "~1.0.2",
|
41
|
-
"escape-html": "~1.0.3",
|
42
|
-
"etag": "~1.8.1",
|
43
|
-
"finalhandler": "~1.1.2",
|
44
|
-
"fresh": "0.5.2",
|
45
|
-
"merge-descriptors": "1.0.1",
|
46
|
-
"methods": "~1.1.2",
|
47
|
-
"on-finished": "~2.3.0",
|
48
|
-
"parseurl": "~1.3.3",
|
49
|
-
"path-to-regexp": "0.1.7",
|
50
|
-
"proxy-addr": "~2.0.7",
|
51
|
-
"qs": "6.9.6",
|
52
|
-
"range-parser": "~1.2.1",
|
53
|
-
"safe-buffer": "5.2.1",
|
54
|
-
"send": "0.17.2",
|
55
|
-
"serve-static": "1.14.2",
|
56
|
-
"setprototypeof": "1.2.0",
|
57
|
-
"statuses": "~1.5.0",
|
58
|
-
"type-is": "~1.6.18",
|
59
|
-
"utils-merge": "1.0.1",
|
60
|
-
"vary": "~1.1.2"
|
61
|
-
},
|
62
|
-
"devDependencies": {
|
63
|
-
"after": "0.8.2",
|
64
|
-
"connect-redis": "3.4.2",
|
65
|
-
"cookie-parser": "1.4.6",
|
66
|
-
"cookie-session": "2.0.0",
|
67
|
-
"ejs": "3.1.6",
|
68
|
-
"eslint": "7.32.0",
|
69
|
-
"express-session": "1.17.2",
|
70
|
-
"hbs": "4.2.0",
|
71
|
-
"istanbul": "0.4.5",
|
72
|
-
"marked": "0.7.0",
|
73
|
-
"method-override": "3.0.0",
|
74
|
-
"mocha": "9.1.3",
|
75
|
-
"morgan": "1.10.0",
|
76
|
-
"multiparty": "4.2.2",
|
77
|
-
"pbkdf2-password": "1.2.1",
|
78
|
-
"should": "13.2.3",
|
79
|
-
"supertest": "6.1.6",
|
80
|
-
"vhost": "~3.0.2"
|
81
|
-
},
|
82
|
-
"engines": {
|
83
|
-
"node": ">= 0.10.0"
|
84
|
-
},
|
85
|
-
"files": [
|
86
|
-
"LICENSE",
|
87
|
-
"History.md",
|
88
|
-
"Readme.md",
|
89
|
-
"index.js",
|
90
|
-
"lib/"
|
91
|
-
],
|
92
|
-
"scripts": {
|
93
|
-
"lint": "eslint .",
|
94
|
-
"test": "mocha --require test/support/env --reporter spec --bail --check-leaks test/ test/acceptance/",
|
95
|
-
"test-ci": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --require test/support/env --reporter spec --check-leaks test/ test/acceptance/",
|
96
|
-
"test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --require test/support/env --reporter dot --check-leaks test/ test/acceptance/",
|
97
|
-
"test-tap": "mocha --require test/support/env --reporter tap --check-leaks test/ test/acceptance/"
|
98
|
-
}
|
99
|
-
}
|
@@ -1,187 +0,0 @@
|
|
1
|
-
1.1.2 / 2019-05-09
|
2
|
-
==================
|
3
|
-
|
4
|
-
* Set stricter `Content-Security-Policy` header
|
5
|
-
* deps: parseurl@~1.3.3
|
6
|
-
* deps: statuses@~1.5.0
|
7
|
-
|
8
|
-
1.1.1 / 2018-03-06
|
9
|
-
==================
|
10
|
-
|
11
|
-
* Fix 404 output for bad / missing pathnames
|
12
|
-
* deps: encodeurl@~1.0.2
|
13
|
-
- Fix encoding `%` as last character
|
14
|
-
* deps: statuses@~1.4.0
|
15
|
-
|
16
|
-
1.1.0 / 2017-09-24
|
17
|
-
==================
|
18
|
-
|
19
|
-
* Use `res.headersSent` when available
|
20
|
-
|
21
|
-
1.0.6 / 2017-09-22
|
22
|
-
==================
|
23
|
-
|
24
|
-
* deps: debug@2.6.9
|
25
|
-
|
26
|
-
1.0.5 / 2017-09-15
|
27
|
-
==================
|
28
|
-
|
29
|
-
* deps: parseurl@~1.3.2
|
30
|
-
- perf: reduce overhead for full URLs
|
31
|
-
- perf: unroll the "fast-path" `RegExp`
|
32
|
-
|
33
|
-
1.0.4 / 2017-08-03
|
34
|
-
==================
|
35
|
-
|
36
|
-
* deps: debug@2.6.8
|
37
|
-
|
38
|
-
1.0.3 / 2017-05-16
|
39
|
-
==================
|
40
|
-
|
41
|
-
* deps: debug@2.6.7
|
42
|
-
- deps: ms@2.0.0
|
43
|
-
|
44
|
-
1.0.2 / 2017-04-22
|
45
|
-
==================
|
46
|
-
|
47
|
-
* deps: debug@2.6.4
|
48
|
-
- deps: ms@0.7.3
|
49
|
-
|
50
|
-
1.0.1 / 2017-03-21
|
51
|
-
==================
|
52
|
-
|
53
|
-
* Fix missing `</html>` in HTML document
|
54
|
-
* deps: debug@2.6.3
|
55
|
-
- Fix: `DEBUG_MAX_ARRAY_LENGTH`
|
56
|
-
|
57
|
-
1.0.0 / 2017-02-15
|
58
|
-
==================
|
59
|
-
|
60
|
-
* Fix exception when `err` cannot be converted to a string
|
61
|
-
* Fully URL-encode the pathname in the 404 message
|
62
|
-
* Only include the pathname in the 404 message
|
63
|
-
* Send complete HTML document
|
64
|
-
* Set `Content-Security-Policy: default-src 'self'` header
|
65
|
-
* deps: debug@2.6.1
|
66
|
-
- Allow colors in workers
|
67
|
-
- Deprecated `DEBUG_FD` environment variable set to `3` or higher
|
68
|
-
- Fix error when running under React Native
|
69
|
-
- Use same color for same namespace
|
70
|
-
- deps: ms@0.7.2
|
71
|
-
|
72
|
-
0.5.1 / 2016-11-12
|
73
|
-
==================
|
74
|
-
|
75
|
-
* Fix exception when `err.headers` is not an object
|
76
|
-
* deps: statuses@~1.3.1
|
77
|
-
* perf: hoist regular expressions
|
78
|
-
* perf: remove duplicate validation path
|
79
|
-
|
80
|
-
0.5.0 / 2016-06-15
|
81
|
-
==================
|
82
|
-
|
83
|
-
* Change invalid or non-numeric status code to 500
|
84
|
-
* Overwrite status message to match set status code
|
85
|
-
* Prefer `err.statusCode` if `err.status` is invalid
|
86
|
-
* Set response headers from `err.headers` object
|
87
|
-
* Use `statuses` instead of `http` module for status messages
|
88
|
-
- Includes all defined status messages
|
89
|
-
|
90
|
-
0.4.1 / 2015-12-02
|
91
|
-
==================
|
92
|
-
|
93
|
-
* deps: escape-html@~1.0.3
|
94
|
-
- perf: enable strict mode
|
95
|
-
- perf: optimize string replacement
|
96
|
-
- perf: use faster string coercion
|
97
|
-
|
98
|
-
0.4.0 / 2015-06-14
|
99
|
-
==================
|
100
|
-
|
101
|
-
* Fix a false-positive when unpiping in Node.js 0.8
|
102
|
-
* Support `statusCode` property on `Error` objects
|
103
|
-
* Use `unpipe` module for unpiping requests
|
104
|
-
* deps: escape-html@1.0.2
|
105
|
-
* deps: on-finished@~2.3.0
|
106
|
-
- Add defined behavior for HTTP `CONNECT` requests
|
107
|
-
- Add defined behavior for HTTP `Upgrade` requests
|
108
|
-
- deps: ee-first@1.1.1
|
109
|
-
* perf: enable strict mode
|
110
|
-
* perf: remove argument reassignment
|
111
|
-
|
112
|
-
0.3.6 / 2015-05-11
|
113
|
-
==================
|
114
|
-
|
115
|
-
* deps: debug@~2.2.0
|
116
|
-
- deps: ms@0.7.1
|
117
|
-
|
118
|
-
0.3.5 / 2015-04-22
|
119
|
-
==================
|
120
|
-
|
121
|
-
* deps: on-finished@~2.2.1
|
122
|
-
- Fix `isFinished(req)` when data buffered
|
123
|
-
|
124
|
-
0.3.4 / 2015-03-15
|
125
|
-
==================
|
126
|
-
|
127
|
-
* deps: debug@~2.1.3
|
128
|
-
- Fix high intensity foreground color for bold
|
129
|
-
- deps: ms@0.7.0
|
130
|
-
|
131
|
-
0.3.3 / 2015-01-01
|
132
|
-
==================
|
133
|
-
|
134
|
-
* deps: debug@~2.1.1
|
135
|
-
* deps: on-finished@~2.2.0
|
136
|
-
|
137
|
-
0.3.2 / 2014-10-22
|
138
|
-
==================
|
139
|
-
|
140
|
-
* deps: on-finished@~2.1.1
|
141
|
-
- Fix handling of pipelined requests
|
142
|
-
|
143
|
-
0.3.1 / 2014-10-16
|
144
|
-
==================
|
145
|
-
|
146
|
-
* deps: debug@~2.1.0
|
147
|
-
- Implement `DEBUG_FD` env variable support
|
148
|
-
|
149
|
-
0.3.0 / 2014-09-17
|
150
|
-
==================
|
151
|
-
|
152
|
-
* Terminate in progress response only on error
|
153
|
-
* Use `on-finished` to determine request status
|
154
|
-
|
155
|
-
0.2.0 / 2014-09-03
|
156
|
-
==================
|
157
|
-
|
158
|
-
* Set `X-Content-Type-Options: nosniff` header
|
159
|
-
* deps: debug@~2.0.0
|
160
|
-
|
161
|
-
0.1.0 / 2014-07-16
|
162
|
-
==================
|
163
|
-
|
164
|
-
* Respond after request fully read
|
165
|
-
- prevents hung responses and socket hang ups
|
166
|
-
* deps: debug@1.0.4
|
167
|
-
|
168
|
-
0.0.3 / 2014-07-11
|
169
|
-
==================
|
170
|
-
|
171
|
-
* deps: debug@1.0.3
|
172
|
-
- Add support for multiple wildcards in namespaces
|
173
|
-
|
174
|
-
0.0.2 / 2014-06-19
|
175
|
-
==================
|
176
|
-
|
177
|
-
* Handle invalid status codes
|
178
|
-
|
179
|
-
0.0.1 / 2014-06-05
|
180
|
-
==================
|
181
|
-
|
182
|
-
* deps: debug@1.0.2
|
183
|
-
|
184
|
-
0.0.0 / 2014-06-05
|
185
|
-
==================
|
186
|
-
|
187
|
-
* Extracted from connect/express
|
@@ -1,22 +0,0 @@
|
|
1
|
-
(The MIT License)
|
2
|
-
|
3
|
-
Copyright (c) 2014-2017 Douglas Christopher Wilson <doug@somethingdoug.com>
|
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,148 +0,0 @@
|
|
1
|
-
# finalhandler
|
2
|
-
|
3
|
-
[![NPM Version][npm-image]][npm-url]
|
4
|
-
[![NPM Downloads][downloads-image]][downloads-url]
|
5
|
-
[![Node.js Version][node-image]][node-url]
|
6
|
-
[![Build Status][travis-image]][travis-url]
|
7
|
-
[![Test Coverage][coveralls-image]][coveralls-url]
|
8
|
-
|
9
|
-
Node.js function to invoke as the final step to respond to HTTP request.
|
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 finalhandler
|
19
|
-
```
|
20
|
-
|
21
|
-
## API
|
22
|
-
|
23
|
-
<!-- eslint-disable no-unused-vars -->
|
24
|
-
|
25
|
-
```js
|
26
|
-
var finalhandler = require('finalhandler')
|
27
|
-
```
|
28
|
-
|
29
|
-
### finalhandler(req, res, [options])
|
30
|
-
|
31
|
-
Returns function to be invoked as the final step for the given `req` and `res`.
|
32
|
-
This function is to be invoked as `fn(err)`. If `err` is falsy, the handler will
|
33
|
-
write out a 404 response to the `res`. If it is truthy, an error response will
|
34
|
-
be written out to the `res`.
|
35
|
-
|
36
|
-
When an error is written, the following information is added to the response:
|
37
|
-
|
38
|
-
* The `res.statusCode` is set from `err.status` (or `err.statusCode`). If
|
39
|
-
this value is outside the 4xx or 5xx range, it will be set to 500.
|
40
|
-
* The `res.statusMessage` is set according to the status code.
|
41
|
-
* The body will be the HTML of the status code message if `env` is
|
42
|
-
`'production'`, otherwise will be `err.stack`.
|
43
|
-
* Any headers specified in an `err.headers` object.
|
44
|
-
|
45
|
-
The final handler will also unpipe anything from `req` when it is invoked.
|
46
|
-
|
47
|
-
#### options.env
|
48
|
-
|
49
|
-
By default, the environment is determined by `NODE_ENV` variable, but it can be
|
50
|
-
overridden by this option.
|
51
|
-
|
52
|
-
#### options.onerror
|
53
|
-
|
54
|
-
Provide a function to be called with the `err` when it exists. Can be used for
|
55
|
-
writing errors to a central location without excessive function generation. Called
|
56
|
-
as `onerror(err, req, res)`.
|
57
|
-
|
58
|
-
## Examples
|
59
|
-
|
60
|
-
### always 404
|
61
|
-
|
62
|
-
```js
|
63
|
-
var finalhandler = require('finalhandler')
|
64
|
-
var http = require('http')
|
65
|
-
|
66
|
-
var server = http.createServer(function (req, res) {
|
67
|
-
var done = finalhandler(req, res)
|
68
|
-
done()
|
69
|
-
})
|
70
|
-
|
71
|
-
server.listen(3000)
|
72
|
-
```
|
73
|
-
|
74
|
-
### perform simple action
|
75
|
-
|
76
|
-
```js
|
77
|
-
var finalhandler = require('finalhandler')
|
78
|
-
var fs = require('fs')
|
79
|
-
var http = require('http')
|
80
|
-
|
81
|
-
var server = http.createServer(function (req, res) {
|
82
|
-
var done = finalhandler(req, res)
|
83
|
-
|
84
|
-
fs.readFile('index.html', function (err, buf) {
|
85
|
-
if (err) return done(err)
|
86
|
-
res.setHeader('Content-Type', 'text/html')
|
87
|
-
res.end(buf)
|
88
|
-
})
|
89
|
-
})
|
90
|
-
|
91
|
-
server.listen(3000)
|
92
|
-
```
|
93
|
-
|
94
|
-
### use with middleware-style functions
|
95
|
-
|
96
|
-
```js
|
97
|
-
var finalhandler = require('finalhandler')
|
98
|
-
var http = require('http')
|
99
|
-
var serveStatic = require('serve-static')
|
100
|
-
|
101
|
-
var serve = serveStatic('public')
|
102
|
-
|
103
|
-
var server = http.createServer(function (req, res) {
|
104
|
-
var done = finalhandler(req, res)
|
105
|
-
serve(req, res, done)
|
106
|
-
})
|
107
|
-
|
108
|
-
server.listen(3000)
|
109
|
-
```
|
110
|
-
|
111
|
-
### keep log of all errors
|
112
|
-
|
113
|
-
```js
|
114
|
-
var finalhandler = require('finalhandler')
|
115
|
-
var fs = require('fs')
|
116
|
-
var http = require('http')
|
117
|
-
|
118
|
-
var server = http.createServer(function (req, res) {
|
119
|
-
var done = finalhandler(req, res, { onerror: logerror })
|
120
|
-
|
121
|
-
fs.readFile('index.html', function (err, buf) {
|
122
|
-
if (err) return done(err)
|
123
|
-
res.setHeader('Content-Type', 'text/html')
|
124
|
-
res.end(buf)
|
125
|
-
})
|
126
|
-
})
|
127
|
-
|
128
|
-
server.listen(3000)
|
129
|
-
|
130
|
-
function logerror (err) {
|
131
|
-
console.error(err.stack || err.toString())
|
132
|
-
}
|
133
|
-
```
|
134
|
-
|
135
|
-
## License
|
136
|
-
|
137
|
-
[MIT](LICENSE)
|
138
|
-
|
139
|
-
[npm-image]: https://img.shields.io/npm/v/finalhandler.svg
|
140
|
-
[npm-url]: https://npmjs.org/package/finalhandler
|
141
|
-
[node-image]: https://img.shields.io/node/v/finalhandler.svg
|
142
|
-
[node-url]: https://nodejs.org/en/download
|
143
|
-
[travis-image]: https://img.shields.io/travis/pillarjs/finalhandler.svg
|
144
|
-
[travis-url]: https://travis-ci.org/pillarjs/finalhandler
|
145
|
-
[coveralls-image]: https://img.shields.io/coveralls/pillarjs/finalhandler.svg
|
146
|
-
[coveralls-url]: https://coveralls.io/r/pillarjs/finalhandler?branch=master
|
147
|
-
[downloads-image]: https://img.shields.io/npm/dm/finalhandler.svg
|
148
|
-
[downloads-url]: https://npmjs.org/package/finalhandler
|