From 0c176ed1e48e7a852cbeeebe6108960a8d13e973 Mon Sep 17 00:00:00 2001 From: chrissi Date: Wed, 11 Apr 2018 12:50:45 +0200 Subject: [PATCH] 1 --- .../\303\234bung 1/uebung1_vorlage/.DS_Store" | Bin 0 -> 6148 bytes .../.idea/codeStyles/Project.xml" | 28 + .../uebung1_vorlage/.idea/dbnavigator.xml" | 452 ++ .../uebung1_vorlage/.idea/misc.xml" | 6 + .../uebung1_vorlage/.idea/modules.xml" | 8 + .../.idea/typescript-compiler.xml" | 7 + .../uebung1_vorlage/.idea/vorlage.iml" | 12 + .../uebung1_vorlage/.idea/workspace.xml" | 313 + .../\303\234bung 1/uebung1_vorlage/names" | 1 + .../uebung1_vorlage/names.html" | 11 + .../uebung1_vorlage/node_modules/.bin/mime" | 8 + .../node_modules/@types/body-parser/LICENSE" | 21 + .../@types/body-parser/README.md" | 16 + .../@types/body-parser/index.d.ts" | 47 + .../@types/body-parser/package.json" | 99 + .../node_modules/@types/events/LICENSE" | 21 + .../node_modules/@types/events/README.md" | 16 + .../node_modules/@types/events/index.d.ts" | 21 + .../node_modules/@types/events/package.json" | 82 + .../@types/express-serve-static-core/LICENSE" | 21 + .../express-serve-static-core/README.md" | 16 + .../express-serve-static-core/index.d.ts" | 1069 +++ .../express-serve-static-core/package.json" | 100 + .../node_modules/@types/express/LICENSE" | 21 + .../node_modules/@types/express/README.md" | 16 + .../node_modules/@types/express/index.d.ts" | 87 + .../node_modules/@types/express/package.json" | 86 + .../node_modules/@types/mime/LICENSE" | 21 + .../node_modules/@types/mime/Mime.d.ts" | 9 + .../node_modules/@types/mime/README.md" | 16 + .../node_modules/@types/mime/index.d.ts" | 17 + .../node_modules/@types/mime/package.json" | 84 + .../node_modules/@types/node/LICENSE" | 21 + .../node_modules/@types/node/README.md" | 16 + .../node_modules/@types/node/index.d.ts" | 7220 +++++++++++++++++ .../node_modules/@types/node/inspector.d.ts" | 2488 ++++++ .../node_modules/@types/node/package.json" | 159 + .../node_modules/@types/serve-static/LICENSE" | 21 + .../@types/serve-static/README.md" | 16 + .../@types/serve-static/index.d.ts" | 98 + .../@types/serve-static/package.json" | 87 + .../node_modules/accepts/HISTORY.md" | 224 + .../node_modules/accepts/LICENSE" | 23 + .../node_modules/accepts/README.md" | 143 + .../node_modules/accepts/index.js" | 238 + .../node_modules/accepts/package.json" | 122 + .../node_modules/array-flatten/LICENSE" | 21 + .../node_modules/array-flatten/README.md" | 43 + .../array-flatten/array-flatten.js" | 64 + .../node_modules/array-flatten/package.json" | 96 + .../node_modules/body-parser/HISTORY.md" | 568 ++ .../node_modules/body-parser/LICENSE" | 23 + .../node_modules/body-parser/README.md" | 438 + .../node_modules/body-parser/index.js" | 157 + .../node_modules/body-parser/lib/read.js" | 181 + .../body-parser/lib/types/json.js" | 232 + .../body-parser/lib/types/raw.js" | 101 + .../body-parser/lib/types/text.js" | 121 + .../body-parser/lib/types/urlencoded.js" | 284 + .../node_modules/body-parser/package.json" | 126 + .../node_modules/bytes/History.md" | 82 + .../node_modules/bytes/LICENSE" | 23 + .../node_modules/bytes/Readme.md" | 125 + .../node_modules/bytes/index.js" | 159 + .../node_modules/bytes/package.json" | 122 + .../content-disposition/HISTORY.md" | 50 + .../node_modules/content-disposition/LICENSE" | 22 + .../content-disposition/README.md" | 141 + .../content-disposition/index.js" | 445 + .../content-disposition/package.json" | 110 + .../node_modules/content-type/HISTORY.md" | 24 + .../node_modules/content-type/LICENSE" | 22 + .../node_modules/content-type/README.md" | 92 + .../node_modules/content-type/index.js" | 222 + .../node_modules/content-type/package.json" | 113 + .../node_modules/cookie-signature/.npmignore" | 4 + .../node_modules/cookie-signature/History.md" | 38 + .../node_modules/cookie-signature/Readme.md" | 42 + .../node_modules/cookie-signature/index.js" | 51 + .../cookie-signature/package.json" | 92 + .../node_modules/cookie/HISTORY.md" | 118 + .../node_modules/cookie/LICENSE" | 24 + .../node_modules/cookie/README.md" | 220 + .../node_modules/cookie/index.js" | 195 + .../node_modules/cookie/package.json" | 106 + .../node_modules/debug/.coveralls.yml" | 1 + .../node_modules/debug/.eslintrc" | 11 + .../node_modules/debug/.npmignore" | 9 + .../node_modules/debug/.travis.yml" | 14 + .../node_modules/debug/CHANGELOG.md" | 362 + .../node_modules/debug/LICENSE" | 19 + .../node_modules/debug/Makefile" | 50 + .../node_modules/debug/README.md" | 312 + .../node_modules/debug/component.json" | 19 + .../node_modules/debug/karma.conf.js" | 70 + .../node_modules/debug/node.js" | 1 + .../node_modules/debug/package.json" | 139 + .../node_modules/debug/src/browser.js" | 185 + .../node_modules/debug/src/debug.js" | 202 + .../node_modules/debug/src/index.js" | 10 + .../node_modules/debug/src/inspector-log.js" | 15 + .../node_modules/debug/src/node.js" | 248 + .../node_modules/depd/History.md" | 96 + .../node_modules/depd/LICENSE" | 22 + .../node_modules/depd/Readme.md" | 280 + .../node_modules/depd/index.js" | 522 ++ .../node_modules/depd/lib/browser/index.js" | 77 + .../depd/lib/compat/callsite-tostring.js" | 103 + .../depd/lib/compat/event-listener-count.js" | 22 + .../node_modules/depd/lib/compat/index.js" | 79 + .../node_modules/depd/package.json" | 115 + .../node_modules/destroy/LICENSE" | 22 + .../node_modules/destroy/README.md" | 60 + .../node_modules/destroy/index.js" | 75 + .../node_modules/destroy/package.json" | 106 + .../node_modules/ee-first/LICENSE" | 22 + .../node_modules/ee-first/README.md" | 80 + .../node_modules/ee-first/index.js" | 95 + .../node_modules/ee-first/package.json" | 98 + .../node_modules/encodeurl/HISTORY.md" | 14 + .../node_modules/encodeurl/LICENSE" | 22 + .../node_modules/encodeurl/README.md" | 128 + .../node_modules/encodeurl/index.js" | 60 + .../node_modules/encodeurl/package.json" | 114 + .../node_modules/escape-html/LICENSE" | 24 + .../node_modules/escape-html/Readme.md" | 43 + .../node_modules/escape-html/index.js" | 78 + .../node_modules/escape-html/package.json" | 94 + .../node_modules/etag/HISTORY.md" | 83 + .../node_modules/etag/LICENSE" | 22 + .../node_modules/etag/README.md" | 159 + .../node_modules/etag/index.js" | 131 + .../node_modules/etag/package.json" | 122 + .../node_modules/express/History.md" | 3402 ++++++++ .../node_modules/express/LICENSE" | 24 + .../node_modules/express/Readme.md" | 153 + .../node_modules/express/index.js" | 11 + .../node_modules/express/lib/application.js" | 644 ++ .../node_modules/express/lib/express.js" | 112 + .../express/lib/middleware/init.js" | 43 + .../express/lib/middleware/query.js" | 47 + .../node_modules/express/lib/request.js" | 521 ++ .../node_modules/express/lib/response.js" | 1137 +++ .../node_modules/express/lib/router/index.js" | 662 ++ .../node_modules/express/lib/router/layer.js" | 181 + .../node_modules/express/lib/router/route.js" | 216 + .../node_modules/express/lib/utils.js" | 306 + .../node_modules/express/lib/view.js" | 182 + .../node_modules/express/package.json" | 203 + .../node_modules/finalhandler/HISTORY.md" | 180 + .../node_modules/finalhandler/LICENSE" | 22 + .../node_modules/finalhandler/README.md" | 148 + .../node_modules/finalhandler/index.js" | 331 + .../node_modules/finalhandler/package.json" | 118 + .../node_modules/forwarded/HISTORY.md" | 16 + .../node_modules/forwarded/LICENSE" | 22 + .../node_modules/forwarded/README.md" | 57 + .../node_modules/forwarded/index.js" | 76 + .../node_modules/forwarded/package.json" | 114 + .../node_modules/fresh/HISTORY.md" | 70 + .../node_modules/fresh/LICENSE" | 23 + .../node_modules/fresh/README.md" | 119 + .../node_modules/fresh/index.js" | 137 + .../node_modules/fresh/package.json" | 126 + .../node_modules/http-errors/HISTORY.md" | 132 + .../node_modules/http-errors/LICENSE" | 23 + .../node_modules/http-errors/README.md" | 135 + .../node_modules/http-errors/index.js" | 260 + .../node_modules/http-errors/package.json" | 136 + .../node_modules/iconv-lite/.npmignore" | 6 + .../node_modules/iconv-lite/.travis.yml" | 23 + .../node_modules/iconv-lite/Changelog.md" | 134 + .../node_modules/iconv-lite/LICENSE" | 21 + .../node_modules/iconv-lite/README.md" | 160 + .../iconv-lite/encodings/dbcs-codec.js" | 555 ++ .../iconv-lite/encodings/dbcs-data.js" | 176 + .../iconv-lite/encodings/index.js" | 22 + .../iconv-lite/encodings/internal.js" | 188 + .../iconv-lite/encodings/sbcs-codec.js" | 73 + .../encodings/sbcs-data-generated.js" | 451 + .../iconv-lite/encodings/sbcs-data.js" | 169 + .../encodings/tables/big5-added.json" | 122 + .../iconv-lite/encodings/tables/cp936.json" | 264 + .../iconv-lite/encodings/tables/cp949.json" | 273 + .../iconv-lite/encodings/tables/cp950.json" | 177 + .../iconv-lite/encodings/tables/eucjp.json" | 182 + .../encodings/tables/gb18030-ranges.json" | 1 + .../encodings/tables/gbk-added.json" | 55 + .../encodings/tables/shiftjis.json" | 125 + .../iconv-lite/encodings/utf16.js" | 177 + .../iconv-lite/encodings/utf7.js" | 290 + .../iconv-lite/lib/bom-handling.js" | 52 + .../iconv-lite/lib/extend-node.js" | 215 + .../node_modules/iconv-lite/lib/index.d.ts" | 24 + .../node_modules/iconv-lite/lib/index.js" | 148 + .../node_modules/iconv-lite/lib/streams.js" | 121 + .../node_modules/iconv-lite/package.json" | 161 + .../node_modules/inherits/LICENSE" | 16 + .../node_modules/inherits/README.md" | 42 + .../node_modules/inherits/inherits.js" | 7 + .../inherits/inherits_browser.js" | 23 + .../node_modules/inherits/package.json" | 98 + .../node_modules/ipaddr.js/.npmignore" | 2 + .../node_modules/ipaddr.js/.travis.yml" | 10 + .../node_modules/ipaddr.js/Cakefile" | 14 + .../node_modules/ipaddr.js/LICENSE" | 19 + .../node_modules/ipaddr.js/README.md" | 233 + .../node_modules/ipaddr.js/bower.json" | 29 + .../node_modules/ipaddr.js/ipaddr.min.js" | 1 + .../node_modules/ipaddr.js/lib/ipaddr.js" | 624 ++ .../ipaddr.js/lib/ipaddr.js.d.ts" | 71 + .../node_modules/ipaddr.js/package.json" | 98 + .../node_modules/ipaddr.js/src/ipaddr.coffee" | 554 ++ .../ipaddr.js/test/ipaddr.test.coffee" | 491 ++ .../node_modules/media-typer/HISTORY.md" | 22 + .../node_modules/media-typer/LICENSE" | 22 + .../node_modules/media-typer/README.md" | 81 + .../node_modules/media-typer/index.js" | 270 + .../node_modules/media-typer/package.json" | 92 + .../merge-descriptors/HISTORY.md" | 21 + .../node_modules/merge-descriptors/LICENSE" | 23 + .../node_modules/merge-descriptors/README.md" | 48 + .../node_modules/merge-descriptors/index.js" | 60 + .../merge-descriptors/package.json" | 172 + .../node_modules/methods/HISTORY.md" | 29 + .../node_modules/methods/LICENSE" | 24 + .../node_modules/methods/README.md" | 51 + .../node_modules/methods/index.js" | 69 + .../node_modules/methods/package.json" | 122 + .../node_modules/mime-db/HISTORY.md" | 368 + .../node_modules/mime-db/LICENSE" | 22 + .../node_modules/mime-db/README.md" | 94 + .../node_modules/mime-db/db.json" | 7088 ++++++++++++++++ .../node_modules/mime-db/index.js" | 11 + .../node_modules/mime-db/package.json" | 143 + .../node_modules/mime-types/HISTORY.md" | 260 + .../node_modules/mime-types/LICENSE" | 23 + .../node_modules/mime-types/README.md" | 108 + .../node_modules/mime-types/index.js" | 188 + .../node_modules/mime-types/package.json" | 133 + .../node_modules/mime/LICENSE" | 21 + .../node_modules/mime/README.md" | 90 + .../node_modules/mime/build/build.js" | 11 + .../node_modules/mime/build/test.js" | 60 + .../uebung1_vorlage/node_modules/mime/cli.js" | 8 + .../node_modules/mime/mime.js" | 108 + .../node_modules/mime/package.json" | 107 + .../node_modules/mime/types.json" | 1 + .../uebung1_vorlage/node_modules/ms/index.js" | 152 + .../node_modules/ms/license.md" | 21 + .../node_modules/ms/package.json" | 110 + .../node_modules/ms/readme.md" | 51 + .../node_modules/negotiator/HISTORY.md" | 98 + .../node_modules/negotiator/LICENSE" | 24 + .../node_modules/negotiator/README.md" | 203 + .../node_modules/negotiator/index.js" | 124 + .../node_modules/negotiator/lib/charset.js" | 169 + .../node_modules/negotiator/lib/encoding.js" | 184 + .../node_modules/negotiator/lib/language.js" | 179 + .../node_modules/negotiator/lib/mediaType.js" | 294 + .../node_modules/negotiator/package.json" | 125 + .../node_modules/on-finished/HISTORY.md" | 88 + .../node_modules/on-finished/LICENSE" | 23 + .../node_modules/on-finished/README.md" | 154 + .../node_modules/on-finished/index.js" | 196 + .../node_modules/on-finished/package.json" | 107 + .../node_modules/parseurl/HISTORY.md" | 53 + .../node_modules/parseurl/LICENSE" | 24 + .../node_modules/parseurl/README.md" | 124 + .../node_modules/parseurl/index.js" | 154 + .../node_modules/parseurl/package.json" | 117 + .../node_modules/path-to-regexp/History.md" | 36 + .../node_modules/path-to-regexp/LICENSE" | 21 + .../node_modules/path-to-regexp/Readme.md" | 35 + .../node_modules/path-to-regexp/index.js" | 129 + .../node_modules/path-to-regexp/package.json" | 219 + .../node_modules/proxy-addr/HISTORY.md" | 140 + .../node_modules/proxy-addr/LICENSE" | 22 + .../node_modules/proxy-addr/README.md" | 156 + .../node_modules/proxy-addr/index.js" | 327 + .../node_modules/proxy-addr/package.json" | 119 + .../node_modules/qs/.editorconfig" | 30 + .../node_modules/qs/.eslintignore" | 1 + .../node_modules/qs/.eslintrc" | 19 + .../node_modules/qs/CHANGELOG.md" | 221 + .../uebung1_vorlage/node_modules/qs/LICENSE" | 28 + .../node_modules/qs/README.md" | 475 ++ .../node_modules/qs/dist/qs.js" | 627 ++ .../node_modules/qs/lib/formats.js" | 18 + .../node_modules/qs/lib/index.js" | 11 + .../node_modules/qs/lib/parse.js" | 174 + .../node_modules/qs/lib/stringify.js" | 210 + .../node_modules/qs/lib/utils.js" | 202 + .../node_modules/qs/package.json" | 124 + .../node_modules/qs/test/.eslintrc" | 15 + .../node_modules/qs/test/index.js" | 7 + .../node_modules/qs/test/parse.js" | 573 ++ .../node_modules/qs/test/stringify.js" | 596 ++ .../node_modules/qs/test/utils.js" | 34 + .../node_modules/range-parser/HISTORY.md" | 51 + .../node_modules/range-parser/LICENSE" | 23 + .../node_modules/range-parser/README.md" | 75 + .../node_modules/range-parser/index.js" | 158 + .../node_modules/range-parser/package.json" | 134 + .../node_modules/raw-body/HISTORY.md" | 247 + .../node_modules/raw-body/LICENSE" | 22 + .../node_modules/raw-body/README.md" | 219 + .../node_modules/raw-body/index.d.ts" | 87 + .../node_modules/raw-body/index.js" | 286 + .../raw-body/node_modules/depd/History.md" | 90 + .../raw-body/node_modules/depd/LICENSE" | 22 + .../raw-body/node_modules/depd/Readme.md" | 283 + .../raw-body/node_modules/depd/index.js" | 520 ++ .../node_modules/depd/lib/browser/index.js" | 77 + .../depd/lib/compat/callsite-tostring.js" | 103 + .../depd/lib/compat/event-listener-count.js" | 22 + .../node_modules/depd/lib/compat/index.js" | 79 + .../raw-body/node_modules/depd/package.json" | 112 + .../node_modules/http-errors/HISTORY.md" | 124 + .../node_modules/http-errors/LICENSE" | 23 + .../node_modules/http-errors/README.md" | 135 + .../node_modules/http-errors/index.js" | 260 + .../node_modules/http-errors/package.json" | 133 + .../node_modules/setprototypeof/LICENSE" | 13 + .../node_modules/setprototypeof/README.md" | 21 + .../node_modules/setprototypeof/index.js" | 15 + .../node_modules/setprototypeof/package.json" | 88 + .../node_modules/raw-body/package.json" | 132 + .../node_modules/safe-buffer/.travis.yml" | 7 + .../node_modules/safe-buffer/LICENSE" | 21 + .../node_modules/safe-buffer/README.md" | 584 ++ .../node_modules/safe-buffer/index.js" | 62 + .../node_modules/safe-buffer/package.json" | 103 + .../node_modules/safe-buffer/test.js" | 101 + .../node_modules/send/HISTORY.md" | 462 ++ .../node_modules/send/LICENSE" | 23 + .../node_modules/send/README.md" | 306 + .../node_modules/send/index.js" | 1130 +++ .../node_modules/send/package.json" | 144 + .../node_modules/serve-static/HISTORY.md" | 433 + .../node_modules/serve-static/LICENSE" | 25 + .../node_modules/serve-static/README.md" | 258 + .../node_modules/serve-static/index.js" | 210 + .../node_modules/serve-static/package.json" | 113 + .../node_modules/setprototypeof/LICENSE" | 13 + .../node_modules/setprototypeof/README.md" | 26 + .../node_modules/setprototypeof/index.d.ts" | 2 + .../node_modules/setprototypeof/index.js" | 15 + .../node_modules/setprototypeof/package.json" | 91 + .../node_modules/statuses/HISTORY.md" | 60 + .../node_modules/statuses/LICENSE" | 23 + .../node_modules/statuses/README.md" | 127 + .../node_modules/statuses/codes.json" | 65 + .../node_modules/statuses/index.js" | 113 + .../node_modules/statuses/package.json" | 148 + .../node_modules/type-is/HISTORY.md" | 236 + .../node_modules/type-is/LICENSE" | 23 + .../node_modules/type-is/README.md" | 146 + .../node_modules/type-is/index.js" | 262 + .../node_modules/type-is/package.json" | 127 + .../node_modules/unpipe/HISTORY.md" | 4 + .../node_modules/unpipe/LICENSE" | 22 + .../node_modules/unpipe/README.md" | 43 + .../node_modules/unpipe/index.js" | 69 + .../node_modules/unpipe/package.json" | 94 + .../node_modules/utils-merge/.npmignore" | 9 + .../node_modules/utils-merge/LICENSE" | 20 + .../node_modules/utils-merge/README.md" | 34 + .../node_modules/utils-merge/index.js" | 23 + .../node_modules/utils-merge/package.json" | 101 + .../node_modules/vary/HISTORY.md" | 39 + .../node_modules/vary/LICENSE" | 22 + .../node_modules/vary/README.md" | 101 + .../node_modules/vary/index.js" | 149 + .../node_modules/vary/package.json" | 114 + .../\303\234bung 1/uebung1_vorlage/server.js" | 20 + .../uebung1_vorlage/server.js.map" | 1 + .../\303\234bung 1/uebung1_vorlage/server.ts" | 21 + .../uebung1_vorlage/tsconfig.json" | 6 + 379 files changed, 67324 insertions(+) create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/.DS_Store" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/.idea/codeStyles/Project.xml" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/.idea/dbnavigator.xml" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/.idea/misc.xml" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/.idea/modules.xml" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/.idea/typescript-compiler.xml" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/.idea/vorlage.iml" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/.idea/workspace.xml" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/names" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/names.html" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/.bin/mime" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/@types/body-parser/LICENSE" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/@types/body-parser/README.md" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/@types/body-parser/index.d.ts" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/@types/body-parser/package.json" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/@types/events/LICENSE" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/@types/events/README.md" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/@types/events/index.d.ts" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/@types/events/package.json" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/@types/express-serve-static-core/LICENSE" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/@types/express-serve-static-core/README.md" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/@types/express-serve-static-core/index.d.ts" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/@types/express-serve-static-core/package.json" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/@types/express/LICENSE" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/@types/express/README.md" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/@types/express/index.d.ts" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/@types/express/package.json" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/@types/mime/LICENSE" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/@types/mime/Mime.d.ts" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/@types/mime/README.md" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/@types/mime/index.d.ts" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/@types/mime/package.json" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/@types/node/LICENSE" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/@types/node/README.md" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/@types/node/index.d.ts" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/@types/node/inspector.d.ts" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/@types/node/package.json" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/@types/serve-static/LICENSE" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/@types/serve-static/README.md" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/@types/serve-static/index.d.ts" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/@types/serve-static/package.json" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/accepts/HISTORY.md" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/accepts/LICENSE" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/accepts/README.md" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/accepts/index.js" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/accepts/package.json" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/array-flatten/LICENSE" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/array-flatten/README.md" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/array-flatten/array-flatten.js" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/array-flatten/package.json" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/body-parser/HISTORY.md" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/body-parser/LICENSE" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/body-parser/README.md" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/body-parser/index.js" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/body-parser/lib/read.js" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/body-parser/lib/types/json.js" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/body-parser/lib/types/raw.js" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/body-parser/lib/types/text.js" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/body-parser/lib/types/urlencoded.js" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/body-parser/package.json" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/bytes/History.md" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/bytes/LICENSE" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/bytes/Readme.md" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/bytes/index.js" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/bytes/package.json" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/content-disposition/HISTORY.md" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/content-disposition/LICENSE" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/content-disposition/README.md" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/content-disposition/index.js" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/content-disposition/package.json" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/content-type/HISTORY.md" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/content-type/LICENSE" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/content-type/README.md" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/content-type/index.js" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/content-type/package.json" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/cookie-signature/.npmignore" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/cookie-signature/History.md" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/cookie-signature/Readme.md" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/cookie-signature/index.js" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/cookie-signature/package.json" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/cookie/HISTORY.md" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/cookie/LICENSE" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/cookie/README.md" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/cookie/index.js" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/cookie/package.json" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/debug/.coveralls.yml" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/debug/.eslintrc" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/debug/.npmignore" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/debug/.travis.yml" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/debug/CHANGELOG.md" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/debug/LICENSE" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/debug/Makefile" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/debug/README.md" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/debug/component.json" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/debug/karma.conf.js" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/debug/node.js" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/debug/package.json" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/debug/src/browser.js" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/debug/src/debug.js" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/debug/src/index.js" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/debug/src/inspector-log.js" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/debug/src/node.js" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/depd/History.md" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/depd/LICENSE" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/depd/Readme.md" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/depd/index.js" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/depd/lib/browser/index.js" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/depd/lib/compat/callsite-tostring.js" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/depd/lib/compat/event-listener-count.js" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/depd/lib/compat/index.js" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/depd/package.json" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/destroy/LICENSE" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/destroy/README.md" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/destroy/index.js" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/destroy/package.json" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/ee-first/LICENSE" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/ee-first/README.md" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/ee-first/index.js" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/ee-first/package.json" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/encodeurl/HISTORY.md" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/encodeurl/LICENSE" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/encodeurl/README.md" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/encodeurl/index.js" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/encodeurl/package.json" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/escape-html/LICENSE" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/escape-html/Readme.md" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/escape-html/index.js" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/escape-html/package.json" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/etag/HISTORY.md" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/etag/LICENSE" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/etag/README.md" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/etag/index.js" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/etag/package.json" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/express/History.md" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/express/LICENSE" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/express/Readme.md" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/express/index.js" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/express/lib/application.js" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/express/lib/express.js" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/express/lib/middleware/init.js" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/express/lib/middleware/query.js" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/express/lib/request.js" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/express/lib/response.js" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/express/lib/router/index.js" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/express/lib/router/layer.js" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/express/lib/router/route.js" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/express/lib/utils.js" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/express/lib/view.js" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/express/package.json" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/finalhandler/HISTORY.md" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/finalhandler/LICENSE" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/finalhandler/README.md" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/finalhandler/index.js" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/finalhandler/package.json" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/forwarded/HISTORY.md" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/forwarded/LICENSE" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/forwarded/README.md" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/forwarded/index.js" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/forwarded/package.json" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/fresh/HISTORY.md" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/fresh/LICENSE" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/fresh/README.md" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/fresh/index.js" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/fresh/package.json" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/http-errors/HISTORY.md" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/http-errors/LICENSE" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/http-errors/README.md" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/http-errors/index.js" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/http-errors/package.json" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/iconv-lite/.npmignore" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/iconv-lite/.travis.yml" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/iconv-lite/Changelog.md" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/iconv-lite/LICENSE" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/iconv-lite/README.md" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/iconv-lite/encodings/dbcs-codec.js" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/iconv-lite/encodings/dbcs-data.js" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/iconv-lite/encodings/index.js" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/iconv-lite/encodings/internal.js" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/iconv-lite/encodings/sbcs-codec.js" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/iconv-lite/encodings/sbcs-data-generated.js" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/iconv-lite/encodings/sbcs-data.js" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/iconv-lite/encodings/tables/big5-added.json" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/iconv-lite/encodings/tables/cp936.json" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/iconv-lite/encodings/tables/cp949.json" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/iconv-lite/encodings/tables/cp950.json" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/iconv-lite/encodings/tables/eucjp.json" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/iconv-lite/encodings/tables/gb18030-ranges.json" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/iconv-lite/encodings/tables/gbk-added.json" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/iconv-lite/encodings/tables/shiftjis.json" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/iconv-lite/encodings/utf16.js" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/iconv-lite/encodings/utf7.js" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/iconv-lite/lib/bom-handling.js" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/iconv-lite/lib/extend-node.js" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/iconv-lite/lib/index.d.ts" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/iconv-lite/lib/index.js" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/iconv-lite/lib/streams.js" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/iconv-lite/package.json" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/inherits/LICENSE" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/inherits/README.md" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/inherits/inherits.js" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/inherits/inherits_browser.js" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/inherits/package.json" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/ipaddr.js/.npmignore" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/ipaddr.js/.travis.yml" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/ipaddr.js/Cakefile" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/ipaddr.js/LICENSE" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/ipaddr.js/README.md" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/ipaddr.js/bower.json" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/ipaddr.js/ipaddr.min.js" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/ipaddr.js/lib/ipaddr.js" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/ipaddr.js/lib/ipaddr.js.d.ts" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/ipaddr.js/package.json" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/ipaddr.js/src/ipaddr.coffee" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/ipaddr.js/test/ipaddr.test.coffee" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/media-typer/HISTORY.md" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/media-typer/LICENSE" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/media-typer/README.md" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/media-typer/index.js" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/media-typer/package.json" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/merge-descriptors/HISTORY.md" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/merge-descriptors/LICENSE" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/merge-descriptors/README.md" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/merge-descriptors/index.js" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/merge-descriptors/package.json" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/methods/HISTORY.md" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/methods/LICENSE" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/methods/README.md" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/methods/index.js" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/methods/package.json" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/mime-db/HISTORY.md" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/mime-db/LICENSE" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/mime-db/README.md" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/mime-db/db.json" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/mime-db/index.js" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/mime-db/package.json" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/mime-types/HISTORY.md" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/mime-types/LICENSE" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/mime-types/README.md" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/mime-types/index.js" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/mime-types/package.json" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/mime/LICENSE" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/mime/README.md" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/mime/build/build.js" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/mime/build/test.js" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/mime/cli.js" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/mime/mime.js" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/mime/package.json" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/mime/types.json" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/ms/index.js" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/ms/license.md" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/ms/package.json" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/ms/readme.md" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/negotiator/HISTORY.md" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/negotiator/LICENSE" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/negotiator/README.md" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/negotiator/index.js" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/negotiator/lib/charset.js" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/negotiator/lib/encoding.js" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/negotiator/lib/language.js" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/negotiator/lib/mediaType.js" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/negotiator/package.json" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/on-finished/HISTORY.md" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/on-finished/LICENSE" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/on-finished/README.md" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/on-finished/index.js" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/on-finished/package.json" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/parseurl/HISTORY.md" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/parseurl/LICENSE" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/parseurl/README.md" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/parseurl/index.js" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/parseurl/package.json" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/path-to-regexp/History.md" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/path-to-regexp/LICENSE" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/path-to-regexp/Readme.md" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/path-to-regexp/index.js" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/path-to-regexp/package.json" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/proxy-addr/HISTORY.md" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/proxy-addr/LICENSE" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/proxy-addr/README.md" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/proxy-addr/index.js" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/proxy-addr/package.json" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/qs/.editorconfig" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/qs/.eslintignore" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/qs/.eslintrc" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/qs/CHANGELOG.md" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/qs/LICENSE" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/qs/README.md" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/qs/dist/qs.js" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/qs/lib/formats.js" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/qs/lib/index.js" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/qs/lib/parse.js" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/qs/lib/stringify.js" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/qs/lib/utils.js" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/qs/package.json" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/qs/test/.eslintrc" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/qs/test/index.js" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/qs/test/parse.js" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/qs/test/stringify.js" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/qs/test/utils.js" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/range-parser/HISTORY.md" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/range-parser/LICENSE" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/range-parser/README.md" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/range-parser/index.js" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/range-parser/package.json" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/raw-body/HISTORY.md" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/raw-body/LICENSE" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/raw-body/README.md" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/raw-body/index.d.ts" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/raw-body/index.js" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/raw-body/node_modules/depd/History.md" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/raw-body/node_modules/depd/LICENSE" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/raw-body/node_modules/depd/Readme.md" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/raw-body/node_modules/depd/index.js" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/raw-body/node_modules/depd/lib/browser/index.js" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/raw-body/node_modules/depd/lib/compat/callsite-tostring.js" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/raw-body/node_modules/depd/lib/compat/event-listener-count.js" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/raw-body/node_modules/depd/lib/compat/index.js" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/raw-body/node_modules/depd/package.json" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/raw-body/node_modules/http-errors/HISTORY.md" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/raw-body/node_modules/http-errors/LICENSE" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/raw-body/node_modules/http-errors/README.md" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/raw-body/node_modules/http-errors/index.js" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/raw-body/node_modules/http-errors/package.json" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/raw-body/node_modules/setprototypeof/LICENSE" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/raw-body/node_modules/setprototypeof/README.md" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/raw-body/node_modules/setprototypeof/index.js" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/raw-body/node_modules/setprototypeof/package.json" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/raw-body/package.json" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/safe-buffer/.travis.yml" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/safe-buffer/LICENSE" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/safe-buffer/README.md" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/safe-buffer/index.js" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/safe-buffer/package.json" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/safe-buffer/test.js" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/send/HISTORY.md" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/send/LICENSE" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/send/README.md" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/send/index.js" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/send/package.json" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/serve-static/HISTORY.md" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/serve-static/LICENSE" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/serve-static/README.md" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/serve-static/index.js" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/serve-static/package.json" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/setprototypeof/LICENSE" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/setprototypeof/README.md" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/setprototypeof/index.d.ts" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/setprototypeof/index.js" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/setprototypeof/package.json" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/statuses/HISTORY.md" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/statuses/LICENSE" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/statuses/README.md" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/statuses/codes.json" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/statuses/index.js" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/statuses/package.json" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/type-is/HISTORY.md" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/type-is/LICENSE" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/type-is/README.md" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/type-is/index.js" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/type-is/package.json" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/unpipe/HISTORY.md" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/unpipe/LICENSE" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/unpipe/README.md" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/unpipe/index.js" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/unpipe/package.json" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/utils-merge/.npmignore" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/utils-merge/LICENSE" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/utils-merge/README.md" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/utils-merge/index.js" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/utils-merge/package.json" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/vary/HISTORY.md" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/vary/LICENSE" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/vary/README.md" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/vary/index.js" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/node_modules/vary/package.json" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/server.js" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/server.js.map" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/server.ts" create mode 100644 "Christian/\303\234bung 1/uebung1_vorlage/tsconfig.json" diff --git "a/Christian/\303\234bung 1/uebung1_vorlage/.DS_Store" "b/Christian/\303\234bung 1/uebung1_vorlage/.DS_Store" new file mode 100644 index 0000000000000000000000000000000000000000..5008ddfcf53c02e82d7eee2e57c38e5672ef89f6 GIT binary patch literal 6148 zcmeH~Jr2S!425mzP>H1@V-^m;4Wg<&0T*E43hX&L&p$$qDprKhvt+--jT7}7np#A3 zem<@ulZcFPQ@L2!n>{z**++&mCkOWA81W14cNZlEfg7;MkzE(HCqgga^y>{tEnwC%0;vJ&^%eQ zLs35+`xjp>T0 + + + + + + + + + + + + + + \ No newline at end of file diff --git "a/Christian/\303\234bung 1/uebung1_vorlage/.idea/dbnavigator.xml" "b/Christian/\303\234bung 1/uebung1_vorlage/.idea/dbnavigator.xml" new file mode 100644 index 0000000..553d130 --- /dev/null +++ "b/Christian/\303\234bung 1/uebung1_vorlage/.idea/dbnavigator.xml" @@ -0,0 +1,452 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git "a/Christian/\303\234bung 1/uebung1_vorlage/.idea/misc.xml" "b/Christian/\303\234bung 1/uebung1_vorlage/.idea/misc.xml" new file mode 100644 index 0000000..28a804d --- /dev/null +++ "b/Christian/\303\234bung 1/uebung1_vorlage/.idea/misc.xml" @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git "a/Christian/\303\234bung 1/uebung1_vorlage/.idea/modules.xml" "b/Christian/\303\234bung 1/uebung1_vorlage/.idea/modules.xml" new file mode 100644 index 0000000..d9e310e --- /dev/null +++ "b/Christian/\303\234bung 1/uebung1_vorlage/.idea/modules.xml" @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git "a/Christian/\303\234bung 1/uebung1_vorlage/.idea/typescript-compiler.xml" "b/Christian/\303\234bung 1/uebung1_vorlage/.idea/typescript-compiler.xml" new file mode 100644 index 0000000..17ff836 --- /dev/null +++ "b/Christian/\303\234bung 1/uebung1_vorlage/.idea/typescript-compiler.xml" @@ -0,0 +1,7 @@ + + + + + \ No newline at end of file diff --git "a/Christian/\303\234bung 1/uebung1_vorlage/.idea/vorlage.iml" "b/Christian/\303\234bung 1/uebung1_vorlage/.idea/vorlage.iml" new file mode 100644 index 0000000..24643cc --- /dev/null +++ "b/Christian/\303\234bung 1/uebung1_vorlage/.idea/vorlage.iml" @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git "a/Christian/\303\234bung 1/uebung1_vorlage/.idea/workspace.xml" "b/Christian/\303\234bung 1/uebung1_vorlage/.idea/workspace.xml" new file mode 100644 index 0000000..37d5fcd --- /dev/null +++ "b/Christian/\303\234bung 1/uebung1_vorlage/.idea/workspace.xml" @@ -0,0 +1,313 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + DEFINITION_ORDER + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + '); + res.end(' values + * + * @param {string} str + * @param {object} [options] + * @return {object} + * @public + */ + +function parse(str, options) { + if (typeof str !== 'string') { + throw new TypeError('argument str must be a string'); + } + + var obj = {} + var opt = options || {}; + var pairs = str.split(pairSplitRegExp); + var dec = opt.decode || decode; + + for (var i = 0; i < pairs.length; i++) { + var pair = pairs[i]; + var eq_idx = pair.indexOf('='); + + // skip things that don't look like key=value + if (eq_idx < 0) { + continue; + } + + var key = pair.substr(0, eq_idx).trim() + var val = pair.substr(++eq_idx, pair.length).trim(); + + // quoted values + if ('"' == val[0]) { + val = val.slice(1, -1); + } + + // only assign once + if (undefined == obj[key]) { + obj[key] = tryDecode(val, dec); + } + } + + return obj; +} + +/** + * Serialize data into a cookie header. + * + * Serialize the a name value pair into a cookie string suitable for + * http headers. An optional options object specified cookie parameters. + * + * serialize('foo', 'bar', { httpOnly: true }) + * => "foo=bar; httpOnly" + * + * @param {string} name + * @param {string} val + * @param {object} [options] + * @return {string} + * @public + */ + +function serialize(name, val, options) { + var opt = options || {}; + var enc = opt.encode || encode; + + if (typeof enc !== 'function') { + throw new TypeError('option encode is invalid'); + } + + if (!fieldContentRegExp.test(name)) { + throw new TypeError('argument name is invalid'); + } + + var value = enc(val); + + if (value && !fieldContentRegExp.test(value)) { + throw new TypeError('argument val is invalid'); + } + + var str = name + '=' + value; + + if (null != opt.maxAge) { + var maxAge = opt.maxAge - 0; + if (isNaN(maxAge)) throw new Error('maxAge should be a Number'); + str += '; Max-Age=' + Math.floor(maxAge); + } + + if (opt.domain) { + if (!fieldContentRegExp.test(opt.domain)) { + throw new TypeError('option domain is invalid'); + } + + str += '; Domain=' + opt.domain; + } + + if (opt.path) { + if (!fieldContentRegExp.test(opt.path)) { + throw new TypeError('option path is invalid'); + } + + str += '; Path=' + opt.path; + } + + if (opt.expires) { + if (typeof opt.expires.toUTCString !== 'function') { + throw new TypeError('option expires is invalid'); + } + + str += '; Expires=' + opt.expires.toUTCString(); + } + + if (opt.httpOnly) { + str += '; HttpOnly'; + } + + if (opt.secure) { + str += '; Secure'; + } + + if (opt.sameSite) { + var sameSite = typeof opt.sameSite === 'string' + ? opt.sameSite.toLowerCase() : opt.sameSite; + + switch (sameSite) { + case true: + str += '; SameSite=Strict'; + break; + case 'lax': + str += '; SameSite=Lax'; + break; + case 'strict': + str += '; SameSite=Strict'; + break; + default: + throw new TypeError('option sameSite is invalid'); + } + } + + return str; +} + +/** + * Try decoding a string using a decoding function. + * + * @param {string} str + * @param {function} decode + * @private + */ + +function tryDecode(str, decode) { + try { + return decode(str); + } catch (e) { + return str; + } +} diff --git "a/Christian/\303\234bung 1/uebung1_vorlage/node_modules/cookie/package.json" "b/Christian/\303\234bung 1/uebung1_vorlage/node_modules/cookie/package.json" new file mode 100644 index 0000000..f598bb8 --- /dev/null +++ "b/Christian/\303\234bung 1/uebung1_vorlage/node_modules/cookie/package.json" @@ -0,0 +1,106 @@ +{ + "_args": [ + [ + { + "raw": "cookie@0.3.1", + "scope": null, + "escapedName": "cookie", + "name": "cookie", + "rawSpec": "0.3.1", + "spec": "0.3.1", + "type": "version" + }, + "/Users/samuel/Dropbox/Webbasierte Programmierung (IT1000)/SS18/WebP2/Uebungen/ubung1/loesung/node_modules/express" + ] + ], + "_from": "cookie@0.3.1", + "_id": "cookie@0.3.1", + "_inCache": true, + "_location": "/cookie", + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/cookie-0.3.1.tgz_1464323556714_0.6435900838114321" + }, + "_npmUser": { + "name": "dougwilson", + "email": "doug@somethingdoug.com" + }, + "_npmVersion": "1.4.28", + "_phantomChildren": {}, + "_requested": { + "raw": "cookie@0.3.1", + "scope": null, + "escapedName": "cookie", + "name": "cookie", + "rawSpec": "0.3.1", + "spec": "0.3.1", + "type": "version" + }, + "_requiredBy": [ + "/express" + ], + "_resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", + "_shasum": "e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb", + "_shrinkwrap": null, + "_spec": "cookie@0.3.1", + "_where": "/Users/samuel/Dropbox/Webbasierte Programmierung (IT1000)/SS18/WebP2/Uebungen/ubung1/loesung/node_modules/express", + "author": { + "name": "Roman Shtylman", + "email": "shtylman@gmail.com" + }, + "bugs": { + "url": "https://github.com/jshttp/cookie/issues" + }, + "contributors": [ + { + "name": "Douglas Christopher Wilson", + "email": "doug@somethingdoug.com" + } + ], + "dependencies": {}, + "description": "HTTP server cookie parsing and serialization", + "devDependencies": { + "istanbul": "0.4.3", + "mocha": "1.21.5" + }, + "directories": {}, + "dist": { + "shasum": "e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb", + "tarball": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz" + }, + "engines": { + "node": ">= 0.6" + }, + "files": [ + "HISTORY.md", + "LICENSE", + "README.md", + "index.js" + ], + "gitHead": "e3c77d497d66c8b8d4b677b8954c1b192a09f0b3", + "homepage": "https://github.com/jshttp/cookie", + "keywords": [ + "cookie", + "cookies" + ], + "license": "MIT", + "maintainers": [ + { + "name": "dougwilson", + "email": "doug@somethingdoug.com" + } + ], + "name": "cookie", + "optionalDependencies": {}, + "readme": "ERROR: No README data found!", + "repository": { + "type": "git", + "url": "git+https://github.com/jshttp/cookie.git" + }, + "scripts": { + "test": "mocha --reporter spec --bail --check-leaks test/", + "test-ci": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --reporter spec --check-leaks test/", + "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --reporter dot --check-leaks test/" + }, + "version": "0.3.1" +} diff --git "a/Christian/\303\234bung 1/uebung1_vorlage/node_modules/debug/.coveralls.yml" "b/Christian/\303\234bung 1/uebung1_vorlage/node_modules/debug/.coveralls.yml" new file mode 100644 index 0000000..20a7068 --- /dev/null +++ "b/Christian/\303\234bung 1/uebung1_vorlage/node_modules/debug/.coveralls.yml" @@ -0,0 +1 @@ +repo_token: SIAeZjKYlHK74rbcFvNHMUzjRiMpflxve diff --git "a/Christian/\303\234bung 1/uebung1_vorlage/node_modules/debug/.eslintrc" "b/Christian/\303\234bung 1/uebung1_vorlage/node_modules/debug/.eslintrc" new file mode 100644 index 0000000..8a37ae2 --- /dev/null +++ "b/Christian/\303\234bung 1/uebung1_vorlage/node_modules/debug/.eslintrc" @@ -0,0 +1,11 @@ +{ + "env": { + "browser": true, + "node": true + }, + "rules": { + "no-console": 0, + "no-empty": [1, { "allowEmptyCatch": true }] + }, + "extends": "eslint:recommended" +} diff --git "a/Christian/\303\234bung 1/uebung1_vorlage/node_modules/debug/.npmignore" "b/Christian/\303\234bung 1/uebung1_vorlage/node_modules/debug/.npmignore" new file mode 100644 index 0000000..5f60eec --- /dev/null +++ "b/Christian/\303\234bung 1/uebung1_vorlage/node_modules/debug/.npmignore" @@ -0,0 +1,9 @@ +support +test +examples +example +*.sock +dist +yarn.lock +coverage +bower.json diff --git "a/Christian/\303\234bung 1/uebung1_vorlage/node_modules/debug/.travis.yml" "b/Christian/\303\234bung 1/uebung1_vorlage/node_modules/debug/.travis.yml" new file mode 100644 index 0000000..6c6090c --- /dev/null +++ "b/Christian/\303\234bung 1/uebung1_vorlage/node_modules/debug/.travis.yml" @@ -0,0 +1,14 @@ + +language: node_js +node_js: + - "6" + - "5" + - "4" + +install: + - make node_modules + +script: + - make lint + - make test + - make coveralls diff --git "a/Christian/\303\234bung 1/uebung1_vorlage/node_modules/debug/CHANGELOG.md" "b/Christian/\303\234bung 1/uebung1_vorlage/node_modules/debug/CHANGELOG.md" new file mode 100644 index 0000000..eadaa18 --- /dev/null +++ "b/Christian/\303\234bung 1/uebung1_vorlage/node_modules/debug/CHANGELOG.md" @@ -0,0 +1,362 @@ + +2.6.9 / 2017-09-22 +================== + + * remove ReDoS regexp in %o formatter (#504) + +2.6.8 / 2017-05-18 +================== + + * Fix: Check for undefined on browser globals (#462, @marbemac) + +2.6.7 / 2017-05-16 +================== + + * Fix: Update ms to 2.0.0 to fix regular expression denial of service vulnerability (#458, @hubdotcom) + * Fix: Inline extend function in node implementation (#452, @dougwilson) + * Docs: Fix typo (#455, @msasad) + +2.6.5 / 2017-04-27 +================== + + * Fix: null reference check on window.documentElement.style.WebkitAppearance (#447, @thebigredgeek) + * Misc: clean up browser reference checks (#447, @thebigredgeek) + * Misc: add npm-debug.log to .gitignore (@thebigredgeek) + + +2.6.4 / 2017-04-20 +================== + + * Fix: bug that would occure if process.env.DEBUG is a non-string value. (#444, @LucianBuzzo) + * Chore: ignore bower.json in npm installations. (#437, @joaovieira) + * Misc: update "ms" to v0.7.3 (@tootallnate) + +2.6.3 / 2017-03-13 +================== + + * Fix: Electron reference to `process.env.DEBUG` (#431, @paulcbetts) + * Docs: Changelog fix (@thebigredgeek) + +2.6.2 / 2017-03-10 +================== + + * Fix: DEBUG_MAX_ARRAY_LENGTH (#420, @slavaGanzin) + * Docs: Add backers and sponsors from Open Collective (#422, @piamancini) + * Docs: Add Slackin invite badge (@tootallnate) + +2.6.1 / 2017-02-10 +================== + + * Fix: Module's `export default` syntax fix for IE8 `Expected identifier` error + * Fix: Whitelist DEBUG_FD for values 1 and 2 only (#415, @pi0) + * Fix: IE8 "Expected identifier" error (#414, @vgoma) + * Fix: Namespaces would not disable once enabled (#409, @musikov) + +2.6.0 / 2016-12-28 +================== + + * Fix: added better null pointer checks for browser useColors (@thebigredgeek) + * Improvement: removed explicit `window.debug` export (#404, @tootallnate) + * Improvement: deprecated `DEBUG_FD` environment variable (#405, @tootallnate) + +2.5.2 / 2016-12-25 +================== + + * Fix: reference error on window within webworkers (#393, @KlausTrainer) + * Docs: fixed README typo (#391, @lurch) + * Docs: added notice about v3 api discussion (@thebigredgeek) + +2.5.1 / 2016-12-20 +================== + + * Fix: babel-core compatibility + +2.5.0 / 2016-12-20 +================== + + * Fix: wrong reference in bower file (@thebigredgeek) + * Fix: webworker compatibility (@thebigredgeek) + * Fix: output formatting issue (#388, @kribblo) + * Fix: babel-loader compatibility (#383, @escwald) + * Misc: removed built asset from repo and publications (@thebigredgeek) + * Misc: moved source files to /src (#378, @yamikuronue) + * Test: added karma integration and replaced babel with browserify for browser tests (#378, @yamikuronue) + * Test: coveralls integration (#378, @yamikuronue) + * Docs: simplified language in the opening paragraph (#373, @yamikuronue) + +2.4.5 / 2016-12-17 +================== + + * Fix: `navigator` undefined in Rhino (#376, @jochenberger) + * Fix: custom log function (#379, @hsiliev) + * Improvement: bit of cleanup + linting fixes (@thebigredgeek) + * Improvement: rm non-maintainted `dist/` dir (#375, @freewil) + * Docs: simplified language in the opening paragraph. (#373, @yamikuronue) + +2.4.4 / 2016-12-14 +================== + + * Fix: work around debug being loaded in preload scripts for electron (#368, @paulcbetts) + +2.4.3 / 2016-12-14 +================== + + * Fix: navigation.userAgent error for react native (#364, @escwald) + +2.4.2 / 2016-12-14 +================== + + * Fix: browser colors (#367, @tootallnate) + * Misc: travis ci integration (@thebigredgeek) + * Misc: added linting and testing boilerplate with sanity check (@thebigredgeek) + +2.4.1 / 2016-12-13 +================== + + * Fix: typo that broke the package (#356) + +2.4.0 / 2016-12-13 +================== + + * Fix: bower.json references unbuilt src entry point (#342, @justmatt) + * Fix: revert "handle regex special characters" (@tootallnate) + * Feature: configurable util.inspect()`options for NodeJS (#327, @tootallnate) + * Feature: %O`(big O) pretty-prints objects (#322, @tootallnate) + * Improvement: allow colors in workers (#335, @botverse) + * Improvement: use same color for same namespace. (#338, @lchenay) + +2.3.3 / 2016-11-09 +================== + + * Fix: Catch `JSON.stringify()` errors (#195, Jovan Alleyne) + * Fix: Returning `localStorage` saved values (#331, Levi Thomason) + * Improvement: Don't create an empty object when no `process` (Nathan Rajlich) + +2.3.2 / 2016-11-09 +================== + + * Fix: be super-safe in index.js as well (@TooTallNate) + * Fix: should check whether process exists (Tom Newby) + +2.3.1 / 2016-11-09 +================== + + * Fix: Added electron compatibility (#324, @paulcbetts) + * Improvement: Added performance optimizations (@tootallnate) + * Readme: Corrected PowerShell environment variable example (#252, @gimre) + * Misc: Removed yarn lock file from source control (#321, @fengmk2) + +2.3.0 / 2016-11-07 +================== + + * Fix: Consistent placement of ms diff at end of output (#215, @gorangajic) + * Fix: Escaping of regex special characters in namespace strings (#250, @zacronos) + * Fix: Fixed bug causing crash on react-native (#282, @vkarpov15) + * Feature: Enabled ES6+ compatible import via default export (#212 @bucaran) + * Feature: Added %O formatter to reflect Chrome's console.log capability (#279, @oncletom) + * Package: Update "ms" to 0.7.2 (#315, @DevSide) + * Package: removed superfluous version property from bower.json (#207 @kkirsche) + * Readme: fix USE_COLORS to DEBUG_COLORS + * Readme: Doc fixes for format string sugar (#269, @mlucool) + * Readme: Updated docs for DEBUG_FD and DEBUG_COLORS environment variables (#232, @mattlyons0) + * Readme: doc fixes for PowerShell (#271 #243, @exoticknight @unreadable) + * Readme: better docs for browser support (#224, @matthewmueller) + * Tooling: Added yarn integration for development (#317, @thebigredgeek) + * Misc: Renamed History.md to CHANGELOG.md (@thebigredgeek) + * Misc: Added license file (#226 #274, @CantemoInternal @sdaitzman) + * Misc: Updated contributors (@thebigredgeek) + +2.2.0 / 2015-05-09 +================== + + * package: update "ms" to v0.7.1 (#202, @dougwilson) + * README: add logging to file example (#193, @DanielOchoa) + * README: fixed a typo (#191, @amir-s) + * browser: expose `storage` (#190, @stephenmathieson) + * Makefile: add a `distclean` target (#189, @stephenmathieson) + +2.1.3 / 2015-03-13 +================== + + * Updated stdout/stderr example (#186) + * Updated example/stdout.js to match debug current behaviour + * Renamed example/stderr.js to stdout.js + * Update Readme.md (#184) + * replace high intensity foreground color for bold (#182, #183) + +2.1.2 / 2015-03-01 +================== + + * dist: recompile + * update "ms" to v0.7.0 + * package: update "browserify" to v9.0.3 + * component: fix "ms.js" repo location + * changed bower package name + * updated documentation about using debug in a browser + * fix: security error on safari (#167, #168, @yields) + +2.1.1 / 2014-12-29 +================== + + * browser: use `typeof` to check for `console` existence + * browser: check for `console.log` truthiness (fix IE 8/9) + * browser: add support for Chrome apps + * Readme: added Windows usage remarks + * Add `bower.json` to properly support bower install + +2.1.0 / 2014-10-15 +================== + + * node: implement `DEBUG_FD` env variable support + * package: update "browserify" to v6.1.0 + * package: add "license" field to package.json (#135, @panuhorsmalahti) + +2.0.0 / 2014-09-01 +================== + + * package: update "browserify" to v5.11.0 + * node: use stderr rather than stdout for logging (#29, @stephenmathieson) + +1.0.4 / 2014-07-15 +================== + + * dist: recompile + * example: remove `console.info()` log usage + * example: add "Content-Type" UTF-8 header to browser example + * browser: place %c marker after the space character + * browser: reset the "content" color via `color: inherit` + * browser: add colors support for Firefox >= v31 + * debug: prefer an instance `log()` function over the global one (#119) + * Readme: update documentation about styled console logs for FF v31 (#116, @wryk) + +1.0.3 / 2014-07-09 +================== + + * Add support for multiple wildcards in namespaces (#122, @seegno) + * browser: fix lint + +1.0.2 / 2014-06-10 +================== + + * browser: update color palette (#113, @gscottolson) + * common: make console logging function configurable (#108, @timoxley) + * node: fix %o colors on old node <= 0.8.x + * Makefile: find node path using shell/which (#109, @timoxley) + +1.0.1 / 2014-06-06 +================== + + * browser: use `removeItem()` to clear localStorage + * browser, node: don't set DEBUG if namespaces is undefined (#107, @leedm777) + * package: add "contributors" section + * node: fix comment typo + * README: list authors + +1.0.0 / 2014-06-04 +================== + + * make ms diff be global, not be scope + * debug: ignore empty strings in enable() + * node: make DEBUG_COLORS able to disable coloring + * *: export the `colors` array + * npmignore: don't publish the `dist` dir + * Makefile: refactor to use browserify + * package: add "browserify" as a dev dependency + * Readme: add Web Inspector Colors section + * node: reset terminal color for the debug content + * node: map "%o" to `util.inspect()` + * browser: map "%j" to `JSON.stringify()` + * debug: add custom "formatters" + * debug: use "ms" module for humanizing the diff + * Readme: add "bash" syntax highlighting + * browser: add Firebug color support + * browser: add colors for WebKit browsers + * node: apply log to `console` + * rewrite: abstract common logic for Node & browsers + * add .jshintrc file + +0.8.1 / 2014-04-14 +================== + + * package: re-add the "component" section + +0.8.0 / 2014-03-30 +================== + + * add `enable()` method for nodejs. Closes #27 + * change from stderr to stdout + * remove unnecessary index.js file + +0.7.4 / 2013-11-13 +================== + + * remove "browserify" key from package.json (fixes something in browserify) + +0.7.3 / 2013-10-30 +================== + + * fix: catch localStorage security error when cookies are blocked (Chrome) + * add debug(err) support. Closes #46 + * add .browser prop to package.json. Closes #42 + +0.7.2 / 2013-02-06 +================== + + * fix package.json + * fix: Mobile Safari (private mode) is broken with debug + * fix: Use unicode to send escape character to shell instead of octal to work with strict mode javascript + +0.7.1 / 2013-02-05 +================== + + * add repository URL to package.json + * add DEBUG_COLORED to force colored output + * add browserify support + * fix component. Closes #24 + +0.7.0 / 2012-05-04 +================== + + * Added .component to package.json + * Added debug.component.js build + +0.6.0 / 2012-03-16 +================== + + * Added support for "-" prefix in DEBUG [Vinay Pulim] + * Added `.enabled` flag to the node version [TooTallNate] + +0.5.0 / 2012-02-02 +================== + + * Added: humanize diffs. Closes #8 + * Added `debug.disable()` to the CS variant + * Removed padding. Closes #10 + * Fixed: persist client-side variant again. Closes #9 + +0.4.0 / 2012-02-01 +================== + + * Added browser variant support for older browsers [TooTallNate] + * Added `debug.enable('project:*')` to browser variant [TooTallNate] + * Added padding to diff (moved it to the right) + +0.3.0 / 2012-01-26 +================== + + * Added millisecond diff when isatty, otherwise UTC string + +0.2.0 / 2012-01-22 +================== + + * Added wildcard support + +0.1.0 / 2011-12-02 +================== + + * Added: remove colors unless stderr isatty [TooTallNate] + +0.0.1 / 2010-01-03 +================== + + * Initial release diff --git "a/Christian/\303\234bung 1/uebung1_vorlage/node_modules/debug/LICENSE" "b/Christian/\303\234bung 1/uebung1_vorlage/node_modules/debug/LICENSE" new file mode 100644 index 0000000..658c933 --- /dev/null +++ "b/Christian/\303\234bung 1/uebung1_vorlage/node_modules/debug/LICENSE" @@ -0,0 +1,19 @@ +(The MIT License) + +Copyright (c) 2014 TJ Holowaychuk + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software +and associated documentation files (the 'Software'), to deal in the Software without restriction, +including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, +and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial +portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT +LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + diff --git "a/Christian/\303\234bung 1/uebung1_vorlage/node_modules/debug/Makefile" "b/Christian/\303\234bung 1/uebung1_vorlage/node_modules/debug/Makefile" new file mode 100644 index 0000000..584da8b --- /dev/null +++ "b/Christian/\303\234bung 1/uebung1_vorlage/node_modules/debug/Makefile" @@ -0,0 +1,50 @@ +# get Makefile directory name: http://stackoverflow.com/a/5982798/376773 +THIS_MAKEFILE_PATH:=$(word $(words $(MAKEFILE_LIST)),$(MAKEFILE_LIST)) +THIS_DIR:=$(shell cd $(dir $(THIS_MAKEFILE_PATH));pwd) + +# BIN directory +BIN := $(THIS_DIR)/node_modules/.bin + +# Path +PATH := node_modules/.bin:$(PATH) +SHELL := /bin/bash + +# applications +NODE ?= $(shell which node) +YARN ?= $(shell which yarn) +PKG ?= $(if $(YARN),$(YARN),$(NODE) $(shell which npm)) +BROWSERIFY ?= $(NODE) $(BIN)/browserify + +.FORCE: + +install: node_modules + +node_modules: package.json + @NODE_ENV= $(PKG) install + @touch node_modules + +lint: .FORCE + eslint browser.js debug.js index.js node.js + +test-node: .FORCE + istanbul cover node_modules/mocha/bin/_mocha -- test/**.js + +test-browser: .FORCE + mkdir -p dist + + @$(BROWSERIFY) \ + --standalone debug \ + . > dist/debug.js + + karma start --single-run + rimraf dist + +test: .FORCE + concurrently \ + "make test-node" \ + "make test-browser" + +coveralls: + cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js + +.PHONY: all install clean distclean diff --git "a/Christian/\303\234bung 1/uebung1_vorlage/node_modules/debug/README.md" "b/Christian/\303\234bung 1/uebung1_vorlage/node_modules/debug/README.md" new file mode 100644 index 0000000..f67be6b --- /dev/null +++ "b/Christian/\303\234bung 1/uebung1_vorlage/node_modules/debug/README.md" @@ -0,0 +1,312 @@ +# debug +[![Build Status](https://travis-ci.org/visionmedia/debug.svg?branch=master)](https://travis-ci.org/visionmedia/debug) [![Coverage Status](https://coveralls.io/repos/github/visionmedia/debug/badge.svg?branch=master)](https://coveralls.io/github/visionmedia/debug?branch=master) [![Slack](https://visionmedia-community-slackin.now.sh/badge.svg)](https://visionmedia-community-slackin.now.sh/) [![OpenCollective](https://opencollective.com/debug/backers/badge.svg)](#backers) +[![OpenCollective](https://opencollective.com/debug/sponsors/badge.svg)](#sponsors) + + + +A tiny node.js debugging utility modelled after node core's debugging technique. + +**Discussion around the V3 API is under way [here](https://github.com/visionmedia/debug/issues/370)** + +## Installation + +```bash +$ npm install debug +``` + +## Usage + +`debug` exposes a function; simply pass this function the name of your module, and it will return a decorated version of `console.error` for you to pass debug statements to. This will allow you to toggle the debug output for different parts of your module as well as the module as a whole. + +Example _app.js_: + +```js +var debug = require('debug')('http') + , http = require('http') + , name = 'My App'; + +// fake app + +debug('booting %s', name); + +http.createServer(function(req, res){ + debug(req.method + ' ' + req.url); + res.end('hello\n'); +}).listen(3000, function(){ + debug('listening'); +}); + +// fake worker of some kind + +require('./worker'); +``` + +Example _worker.js_: + +```js +var debug = require('debug')('worker'); + +setInterval(function(){ + debug('doing some work'); +}, 1000); +``` + + The __DEBUG__ environment variable is then used to enable these based on space or comma-delimited names. Here are some examples: + + ![debug http and worker](http://f.cl.ly/items/18471z1H402O24072r1J/Screenshot.png) + + ![debug worker](http://f.cl.ly/items/1X413v1a3M0d3C2c1E0i/Screenshot.png) + +#### Windows note + + On Windows the environment variable is set using the `set` command. + + ```cmd + set DEBUG=*,-not_this + ``` + + Note that PowerShell uses different syntax to set environment variables. + + ```cmd + $env:DEBUG = "*,-not_this" + ``` + +Then, run the program to be debugged as usual. + +## Millisecond diff + + When actively developing an application it can be useful to see when the time spent between one `debug()` call and the next. Suppose for example you invoke `debug()` before requesting a resource, and after as well, the "+NNNms" will show you how much time was spent between calls. + + ![](http://f.cl.ly/items/2i3h1d3t121M2Z1A3Q0N/Screenshot.png) + + When stdout is not a TTY, `Date#toUTCString()` is used, making it more useful for logging the debug information as shown below: + + ![](http://f.cl.ly/items/112H3i0e0o0P0a2Q2r11/Screenshot.png) + +## Conventions + + If you're using this in one or more of your libraries, you _should_ use the name of your library so that developers may toggle debugging as desired without guessing names. If you have more than one debuggers you _should_ prefix them with your library name and use ":" to separate features. For example "bodyParser" from Connect would then be "connect:bodyParser". + +## Wildcards + + The `*` character may be used as a wildcard. Suppose for example your library has debuggers named "connect:bodyParser", "connect:compress", "connect:session", instead of listing all three with `DEBUG=connect:bodyParser,connect:compress,connect:session`, you may simply do `DEBUG=connect:*`, or to run everything using this module simply use `DEBUG=*`. + + You can also exclude specific debuggers by prefixing them with a "-" character. For example, `DEBUG=*,-connect:*` would include all debuggers except those starting with "connect:". + +## Environment Variables + + When running through Node.js, you can set a few environment variables that will + change the behavior of the debug logging: + +| Name | Purpose | +|-----------|-------------------------------------------------| +| `DEBUG` | Enables/disables specific debugging namespaces. | +| `DEBUG_COLORS`| Whether or not to use colors in the debug output. | +| `DEBUG_DEPTH` | Object inspection depth. | +| `DEBUG_SHOW_HIDDEN` | Shows hidden properties on inspected objects. | + + + __Note:__ The environment variables beginning with `DEBUG_` end up being + converted into an Options object that gets used with `%o`/`%O` formatters. + See the Node.js documentation for + [`util.inspect()`](https://nodejs.org/api/util.html#util_util_inspect_object_options) + for the complete list. + +## Formatters + + + Debug uses [printf-style](https://wikipedia.org/wiki/Printf_format_string) formatting. Below are the officially supported formatters: + +| Formatter | Representation | +|-----------|----------------| +| `%O` | Pretty-print an Object on multiple lines. | +| `%o` | Pretty-print an Object all on a single line. | +| `%s` | String. | +| `%d` | Number (both integer and float). | +| `%j` | JSON. Replaced with the string '[Circular]' if the argument contains circular references. | +| `%%` | Single percent sign ('%'). This does not consume an argument. | + +### Custom formatters + + You can add custom formatters by extending the `debug.formatters` object. For example, if you wanted to add support for rendering a Buffer as hex with `%h`, you could do something like: + +```js +const createDebug = require('debug') +createDebug.formatters.h = (v) => { + return v.toString('hex') +} + +// …elsewhere +const debug = createDebug('foo') +debug('this is hex: %h', new Buffer('hello world')) +// foo this is hex: 68656c6c6f20776f726c6421 +0ms +``` + +## Browser support + You can build a browser-ready script using [browserify](https://github.com/substack/node-browserify), + or just use the [browserify-as-a-service](https://wzrd.in/) [build](https://wzrd.in/standalone/debug@latest), + if you don't want to build it yourself. + + Debug's enable state is currently persisted by `localStorage`. + Consider the situation shown below where you have `worker:a` and `worker:b`, + and wish to debug both. You can enable this using `localStorage.debug`: + +```js +localStorage.debug = 'worker:*' +``` + +And then refresh the page. + +```js +a = debug('worker:a'); +b = debug('worker:b'); + +setInterval(function(){ + a('doing some work'); +}, 1000); + +setInterval(function(){ + b('doing some work'); +}, 1200); +``` + +#### Web Inspector Colors + + Colors are also enabled on "Web Inspectors" that understand the `%c` formatting + option. These are WebKit web inspectors, Firefox ([since version + 31](https://hacks.mozilla.org/2014/05/editable-box-model-multiple-selection-sublime-text-keys-much-more-firefox-developer-tools-episode-31/)) + and the Firebug plugin for Firefox (any version). + + Colored output looks something like: + + ![](https://cloud.githubusercontent.com/assets/71256/3139768/b98c5fd8-e8ef-11e3-862a-f7253b6f47c6.png) + + +## Output streams + + By default `debug` will log to stderr, however this can be configured per-namespace by overriding the `log` method: + +Example _stdout.js_: + +```js +var debug = require('debug'); +var error = debug('app:error'); + +// by default stderr is used +error('goes to stderr!'); + +var log = debug('app:log'); +// set this namespace to log via console.log +log.log = console.log.bind(console); // don't forget to bind to console! +log('goes to stdout'); +error('still goes to stderr!'); + +// set all output to go via console.info +// overrides all per-namespace log settings +debug.log = console.info.bind(console); +error('now goes to stdout via console.info'); +log('still goes to stdout, but via console.info now'); +``` + + +## Authors + + - TJ Holowaychuk + - Nathan Rajlich + - Andrew Rhyne + +## Backers + +Support us with a monthly donation and help us continue our activities. [[Become a backer](https://opencollective.com/debug#backer)] + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +## Sponsors + +Become a sponsor and get your logo on our README on Github with a link to your site. [[Become a sponsor](https://opencollective.com/debug#sponsor)] + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +## License + +(The MIT License) + +Copyright (c) 2014-2016 TJ Holowaychuk <tj@vision-media.ca> + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git "a/Christian/\303\234bung 1/uebung1_vorlage/node_modules/debug/component.json" "b/Christian/\303\234bung 1/uebung1_vorlage/node_modules/debug/component.json" new file mode 100644 index 0000000..9de2641 --- /dev/null +++ "b/Christian/\303\234bung 1/uebung1_vorlage/node_modules/debug/component.json" @@ -0,0 +1,19 @@ +{ + "name": "debug", + "repo": "visionmedia/debug", + "description": "small debugging utility", + "version": "2.6.9", + "keywords": [ + "debug", + "log", + "debugger" + ], + "main": "src/browser.js", + "scripts": [ + "src/browser.js", + "src/debug.js" + ], + "dependencies": { + "rauchg/ms.js": "0.7.1" + } +} diff --git "a/Christian/\303\234bung 1/uebung1_vorlage/node_modules/debug/karma.conf.js" "b/Christian/\303\234bung 1/uebung1_vorlage/node_modules/debug/karma.conf.js" new file mode 100644 index 0000000..103a82d --- /dev/null +++ "b/Christian/\303\234bung 1/uebung1_vorlage/node_modules/debug/karma.conf.js" @@ -0,0 +1,70 @@ +// Karma configuration +// Generated on Fri Dec 16 2016 13:09:51 GMT+0000 (UTC) + +module.exports = function(config) { + config.set({ + + // base path that will be used to resolve all patterns (eg. files, exclude) + basePath: '', + + + // frameworks to use + // available frameworks: https://npmjs.org/browse/keyword/karma-adapter + frameworks: ['mocha', 'chai', 'sinon'], + + + // list of files / patterns to load in the browser + files: [ + 'dist/debug.js', + 'test/*spec.js' + ], + + + // list of files to exclude + exclude: [ + 'src/node.js' + ], + + + // preprocess matching files before serving them to the browser + // available preprocessors: https://npmjs.org/browse/keyword/karma-preprocessor + preprocessors: { + }, + + // test results reporter to use + // possible values: 'dots', 'progress' + // available reporters: https://npmjs.org/browse/keyword/karma-reporter + reporters: ['progress'], + + + // web server port + port: 9876, + + + // enable / disable colors in the output (reporters and logs) + colors: true, + + + // level of logging + // possible values: config.LOG_DISABLE || config.LOG_ERROR || config.LOG_WARN || config.LOG_INFO || config.LOG_DEBUG + logLevel: config.LOG_INFO, + + + // enable / disable watching file and executing tests whenever any file changes + autoWatch: true, + + + // start these browsers + // available browser launchers: https://npmjs.org/browse/keyword/karma-launcher + browsers: ['PhantomJS'], + + + // Continuous Integration mode + // if true, Karma captures browsers, runs the tests and exits + singleRun: false, + + // Concurrency level + // how many browser should be started simultaneous + concurrency: Infinity + }) +} diff --git "a/Christian/\303\234bung 1/uebung1_vorlage/node_modules/debug/node.js" "b/Christian/\303\234bung 1/uebung1_vorlage/node_modules/debug/node.js" new file mode 100644 index 0000000..7fc36fe --- /dev/null +++ "b/Christian/\303\234bung 1/uebung1_vorlage/node_modules/debug/node.js" @@ -0,0 +1 @@ +module.exports = require('./src/node'); diff --git "a/Christian/\303\234bung 1/uebung1_vorlage/node_modules/debug/package.json" "b/Christian/\303\234bung 1/uebung1_vorlage/node_modules/debug/package.json" new file mode 100644 index 0000000..3a48dda --- /dev/null +++ "b/Christian/\303\234bung 1/uebung1_vorlage/node_modules/debug/package.json" @@ -0,0 +1,139 @@ +{ + "_args": [ + [ + { + "raw": "debug@2.6.9", + "scope": null, + "escapedName": "debug", + "name": "debug", + "rawSpec": "2.6.9", + "spec": "2.6.9", + "type": "version" + }, + "/Users/samuel/Dropbox/Webbasierte Programmierung (IT1000)/SS18/WebP2/Uebungen/ubung1/loesung/node_modules/express" + ] + ], + "_from": "debug@2.6.9", + "_id": "debug@2.6.9", + "_inCache": true, + "_location": "/debug", + "_nodeVersion": "8.4.0", + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/debug-2.6.9.tgz_1506087154503_0.5196126794908196" + }, + "_npmUser": { + "name": "tootallnate", + "email": "nathan@tootallnate.net" + }, + "_npmVersion": "5.3.0", + "_phantomChildren": {}, + "_requested": { + "raw": "debug@2.6.9", + "scope": null, + "escapedName": "debug", + "name": "debug", + "rawSpec": "2.6.9", + "spec": "2.6.9", + "type": "version" + }, + "_requiredBy": [ + "/body-parser", + "/express", + "/finalhandler", + "/send" + ], + "_resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "_shasum": "5d128515df134ff327e90a4c93f4e077a536341f", + "_shrinkwrap": null, + "_spec": "debug@2.6.9", + "_where": "/Users/samuel/Dropbox/Webbasierte Programmierung (IT1000)/SS18/WebP2/Uebungen/ubung1/loesung/node_modules/express", + "author": { + "name": "TJ Holowaychuk", + "email": "tj@vision-media.ca" + }, + "browser": "./src/browser.js", + "bugs": { + "url": "https://github.com/visionmedia/debug/issues" + }, + "component": { + "scripts": { + "debug/index.js": "browser.js", + "debug/debug.js": "debug.js" + } + }, + "contributors": [ + { + "name": "Nathan Rajlich", + "email": "nathan@tootallnate.net", + "url": "http://n8.io" + }, + { + "name": "Andrew Rhyne", + "email": "rhyneandrew@gmail.com" + } + ], + "dependencies": { + "ms": "2.0.0" + }, + "description": "small debugging utility", + "devDependencies": { + "browserify": "9.0.3", + "chai": "^3.5.0", + "concurrently": "^3.1.0", + "coveralls": "^2.11.15", + "eslint": "^3.12.1", + "istanbul": "^0.4.5", + "karma": "^1.3.0", + "karma-chai": "^0.1.0", + "karma-mocha": "^1.3.0", + "karma-phantomjs-launcher": "^1.0.2", + "karma-sinon": "^1.0.5", + "mocha": "^3.2.0", + "mocha-lcov-reporter": "^1.2.0", + "rimraf": "^2.5.4", + "sinon": "^1.17.6", + "sinon-chai": "^2.8.0" + }, + "directories": {}, + "dist": { + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "shasum": "5d128515df134ff327e90a4c93f4e077a536341f", + "tarball": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" + }, + "gitHead": "13abeae468fea297d0dccc50bc55590809241083", + "homepage": "https://github.com/visionmedia/debug#readme", + "keywords": [ + "debug", + "log", + "debugger" + ], + "license": "MIT", + "main": "./src/index.js", + "maintainers": [ + { + "name": "thebigredgeek", + "email": "rhyneandrew@gmail.com" + }, + { + "name": "kolban", + "email": "kolban1@kolban.com" + }, + { + "name": "tootallnate", + "email": "nathan@tootallnate.net" + }, + { + "name": "tjholowaychuk", + "email": "tj@vision-media.ca" + } + ], + "name": "debug", + "optionalDependencies": {}, + "readme": "ERROR: No README data found!", + "repository": { + "type": "git", + "url": "git://github.com/visionmedia/debug.git" + }, + "version": "2.6.9" +} diff --git "a/Christian/\303\234bung 1/uebung1_vorlage/node_modules/debug/src/browser.js" "b/Christian/\303\234bung 1/uebung1_vorlage/node_modules/debug/src/browser.js" new file mode 100644 index 0000000..7106924 --- /dev/null +++ "b/Christian/\303\234bung 1/uebung1_vorlage/node_modules/debug/src/browser.js" @@ -0,0 +1,185 @@ +/** + * This is the web browser implementation of `debug()`. + * + * Expose `debug()` as the module. + */ + +exports = module.exports = require('./debug'); +exports.log = log; +exports.formatArgs = formatArgs; +exports.save = save; +exports.load = load; +exports.useColors = useColors; +exports.storage = 'undefined' != typeof chrome + && 'undefined' != typeof chrome.storage + ? chrome.storage.local + : localstorage(); + +/** + * Colors. + */ + +exports.colors = [ + 'lightseagreen', + 'forestgreen', + 'goldenrod', + 'dodgerblue', + 'darkorchid', + 'crimson' +]; + +/** + * Currently only WebKit-based Web Inspectors, Firefox >= v31, + * and the Firebug extension (any Firefox version) are known + * to support "%c" CSS customizations. + * + * TODO: add a `localStorage` variable to explicitly enable/disable colors + */ + +function useColors() { + // NB: In an Electron preload script, document will be defined but not fully + // initialized. Since we know we're in Chrome, we'll just detect this case + // explicitly + if (typeof window !== 'undefined' && window.process && window.process.type === 'renderer') { + return true; + } + + // is webkit? http://stackoverflow.com/a/16459606/376773 + // document is undefined in react-native: https://github.com/facebook/react-native/pull/1632 + return (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) || + // is firebug? http://stackoverflow.com/a/398120/376773 + (typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) || + // is firefox >= v31? + // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages + (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/) && parseInt(RegExp.$1, 10) >= 31) || + // double check webkit in userAgent just in case we are in a worker + (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)); +} + +/** + * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default. + */ + +exports.formatters.j = function(v) { + try { + return JSON.stringify(v); + } catch (err) { + return '[UnexpectedJSONParseError]: ' + err.message; + } +}; + + +/** + * Colorize log arguments if enabled. + * + * @api public + */ + +function formatArgs(args) { + var useColors = this.useColors; + + args[0] = (useColors ? '%c' : '') + + this.namespace + + (useColors ? ' %c' : ' ') + + args[0] + + (useColors ? '%c ' : ' ') + + '+' + exports.humanize(this.diff); + + if (!useColors) return; + + var c = 'color: ' + this.color; + args.splice(1, 0, c, 'color: inherit') + + // the final "%c" is somewhat tricky, because there could be other + // arguments passed either before or after the %c, so we need to + // figure out the correct index to insert the CSS into + var index = 0; + var lastC = 0; + args[0].replace(/%[a-zA-Z%]/g, function(match) { + if ('%%' === match) return; + index++; + if ('%c' === match) { + // we only are interested in the *last* %c + // (the user may have provided their own) + lastC = index; + } + }); + + args.splice(lastC, 0, c); +} + +/** + * Invokes `console.log()` when available. + * No-op when `console.log` is not a "function". + * + * @api public + */ + +function log() { + // this hackery is required for IE8/9, where + // the `console.log` function doesn't have 'apply' + return 'object' === typeof console + && console.log + && Function.prototype.apply.call(console.log, console, arguments); +} + +/** + * Save `namespaces`. + * + * @param {String} namespaces + * @api private + */ + +function save(namespaces) { + try { + if (null == namespaces) { + exports.storage.removeItem('debug'); + } else { + exports.storage.debug = namespaces; + } + } catch(e) {} +} + +/** + * Load `namespaces`. + * + * @return {String} returns the previously persisted debug modes + * @api private + */ + +function load() { + var r; + try { + r = exports.storage.debug; + } catch(e) {} + + // If debug isn't set in LS, and we're in Electron, try to load $DEBUG + if (!r && typeof process !== 'undefined' && 'env' in process) { + r = process.env.DEBUG; + } + + return r; +} + +/** + * Enable namespaces listed in `localStorage.debug` initially. + */ + +exports.enable(load()); + +/** + * Localstorage attempts to return the localstorage. + * + * This is necessary because safari throws + * when a user disables cookies/localstorage + * and you attempt to access it. + * + * @return {LocalStorage} + * @api private + */ + +function localstorage() { + try { + return window.localStorage; + } catch (e) {} +} diff --git "a/Christian/\303\234bung 1/uebung1_vorlage/node_modules/debug/src/debug.js" "b/Christian/\303\234bung 1/uebung1_vorlage/node_modules/debug/src/debug.js" new file mode 100644 index 0000000..6a5e3fc --- /dev/null +++ "b/Christian/\303\234bung 1/uebung1_vorlage/node_modules/debug/src/debug.js" @@ -0,0 +1,202 @@ + +/** + * This is the common logic for both the Node.js and web browser + * implementations of `debug()`. + * + * Expose `debug()` as the module. + */ + +exports = module.exports = createDebug.debug = createDebug['default'] = createDebug; +exports.coerce = coerce; +exports.disable = disable; +exports.enable = enable; +exports.enabled = enabled; +exports.humanize = require('ms'); + +/** + * The currently active debug mode names, and names to skip. + */ + +exports.names = []; +exports.skips = []; + +/** + * Map of special "%n" handling functions, for the debug "format" argument. + * + * Valid key names are a single, lower or upper-case letter, i.e. "n" and "N". + */ + +exports.formatters = {}; + +/** + * Previous log timestamp. + */ + +var prevTime; + +/** + * Select a color. + * @param {String} namespace + * @return {Number} + * @api private + */ + +function selectColor(namespace) { + var hash = 0, i; + + for (i in namespace) { + hash = ((hash << 5) - hash) + namespace.charCodeAt(i); + hash |= 0; // Convert to 32bit integer + } + + return exports.colors[Math.abs(hash) % exports.colors.length]; +} + +/** + * Create a debugger with the given `namespace`. + * + * @param {String} namespace + * @return {Function} + * @api public + */ + +function createDebug(namespace) { + + function debug() { + // disabled? + if (!debug.enabled) return; + + var self = debug; + + // set `diff` timestamp + var curr = +new Date(); + var ms = curr - (prevTime || curr); + self.diff = ms; + self.prev = prevTime; + self.curr = curr; + prevTime = curr; + + // turn the `arguments` into a proper Array + var args = new Array(arguments.length); + for (var i = 0; i < args.length; i++) { + args[i] = arguments[i]; + } + + args[0] = exports.coerce(args[0]); + + if ('string' !== typeof args[0]) { + // anything else let's inspect with %O + args.unshift('%O'); + } + + // apply any `formatters` transformations + var index = 0; + args[0] = args[0].replace(/%([a-zA-Z%])/g, function(match, format) { + // if we encounter an escaped % then don't increase the array index + if (match === '%%') return match; + index++; + var formatter = exports.formatters[format]; + if ('function' === typeof formatter) { + var val = args[index]; + match = formatter.call(self, val); + + // now we need to remove `args[index]` since it's inlined in the `format` + args.splice(index, 1); + index--; + } + return match; + }); + + // apply env-specific formatting (colors, etc.) + exports.formatArgs.call(self, args); + + var logFn = debug.log || exports.log || console.log.bind(console); + logFn.apply(self, args); + } + + debug.namespace = namespace; + debug.enabled = exports.enabled(namespace); + debug.useColors = exports.useColors(); + debug.color = selectColor(namespace); + + // env-specific initialization logic for debug instances + if ('function' === typeof exports.init) { + exports.init(debug); + } + + return debug; +} + +/** + * Enables a debug mode by namespaces. This can include modes + * separated by a colon and wildcards. + * + * @param {String} namespaces + * @api public + */ + +function enable(namespaces) { + exports.save(namespaces); + + exports.names = []; + exports.skips = []; + + var split = (typeof namespaces === 'string' ? namespaces : '').split(/[\s,]+/); + var len = split.length; + + for (var i = 0; i < len; i++) { + if (!split[i]) continue; // ignore empty strings + namespaces = split[i].replace(/\*/g, '.*?'); + if (namespaces[0] === '-') { + exports.skips.push(new RegExp('^' + namespaces.substr(1) + '$')); + } else { + exports.names.push(new RegExp('^' + namespaces + '$')); + } + } +} + +/** + * Disable debug output. + * + * @api public + */ + +function disable() { + exports.enable(''); +} + +/** + * Returns true if the given mode name is enabled, false otherwise. + * + * @param {String} name + * @return {Boolean} + * @api public + */ + +function enabled(name) { + var i, len; + for (i = 0, len = exports.skips.length; i < len; i++) { + if (exports.skips[i].test(name)) { + return false; + } + } + for (i = 0, len = exports.names.length; i < len; i++) { + if (exports.names[i].test(name)) { + return true; + } + } + return false; +} + +/** + * Coerce `val`. + * + * @param {Mixed} val + * @return {Mixed} + * @api private + */ + +function coerce(val) { + if (val instanceof Error) return val.stack || val.message; + return val; +} diff --git "a/Christian/\303\234bung 1/uebung1_vorlage/node_modules/debug/src/index.js" "b/Christian/\303\234bung 1/uebung1_vorlage/node_modules/debug/src/index.js" new file mode 100644 index 0000000..e12cf4d --- /dev/null +++ "b/Christian/\303\234bung 1/uebung1_vorlage/node_modules/debug/src/index.js" @@ -0,0 +1,10 @@ +/** + * Detect Electron renderer process, which is node, but we should + * treat as a browser. + */ + +if (typeof process !== 'undefined' && process.type === 'renderer') { + module.exports = require('./browser.js'); +} else { + module.exports = require('./node.js'); +} diff --git "a/Christian/\303\234bung 1/uebung1_vorlage/node_modules/debug/src/inspector-log.js" "b/Christian/\303\234bung 1/uebung1_vorlage/node_modules/debug/src/inspector-log.js" new file mode 100644 index 0000000..60ea6c0 --- /dev/null +++ "b/Christian/\303\234bung 1/uebung1_vorlage/node_modules/debug/src/inspector-log.js" @@ -0,0 +1,15 @@ +module.exports = inspectorLog; + +// black hole +const nullStream = new (require('stream').Writable)(); +nullStream._write = () => {}; + +/** + * Outputs a `console.log()` to the Node.js Inspector console *only*. + */ +function inspectorLog() { + const stdout = console._stdout; + console._stdout = nullStream; + console.log.apply(console, arguments); + console._stdout = stdout; +} diff --git "a/Christian/\303\234bung 1/uebung1_vorlage/node_modules/debug/src/node.js" "b/Christian/\303\234bung 1/uebung1_vorlage/node_modules/debug/src/node.js" new file mode 100644 index 0000000..b15109c --- /dev/null +++ "b/Christian/\303\234bung 1/uebung1_vorlage/node_modules/debug/src/node.js" @@ -0,0 +1,248 @@ +/** + * Module dependencies. + */ + +var tty = require('tty'); +var util = require('util'); + +/** + * This is the Node.js implementation of `debug()`. + * + * Expose `debug()` as the module. + */ + +exports = module.exports = require('./debug'); +exports.init = init; +exports.log = log; +exports.formatArgs = formatArgs; +exports.save = save; +exports.load = load; +exports.useColors = useColors; + +/** + * Colors. + */ + +exports.colors = [6, 2, 3, 4, 5, 1]; + +/** + * Build up the default `inspectOpts` object from the environment variables. + * + * $ DEBUG_COLORS=no DEBUG_DEPTH=10 DEBUG_SHOW_HIDDEN=enabled node script.js + */ + +exports.inspectOpts = Object.keys(process.env).filter(function (key) { + return /^debug_/i.test(key); +}).reduce(function (obj, key) { + // camel-case + var prop = key + .substring(6) + .toLowerCase() + .replace(/_([a-z])/g, function (_, k) { return k.toUpperCase() }); + + // coerce string value into JS value + var val = process.env[key]; + if (/^(yes|on|true|enabled)$/i.test(val)) val = true; + else if (/^(no|off|false|disabled)$/i.test(val)) val = false; + else if (val === 'null') val = null; + else val = Number(val); + + obj[prop] = val; + return obj; +}, {}); + +/** + * The file descriptor to write the `debug()` calls to. + * Set the `DEBUG_FD` env variable to override with another value. i.e.: + * + * $ DEBUG_FD=3 node script.js 3>debug.log + */ + +var fd = parseInt(process.env.DEBUG_FD, 10) || 2; + +if (1 !== fd && 2 !== fd) { + util.deprecate(function(){}, 'except for stderr(2) and stdout(1), any other usage of DEBUG_FD is deprecated. Override debug.log if you want to use a different log function (https://git.io/debug_fd)')() +} + +var stream = 1 === fd ? process.stdout : + 2 === fd ? process.stderr : + createWritableStdioStream(fd); + +/** + * Is stdout a TTY? Colored output is enabled when `true`. + */ + +function useColors() { + return 'colors' in exports.inspectOpts + ? Boolean(exports.inspectOpts.colors) + : tty.isatty(fd); +} + +/** + * Map %o to `util.inspect()`, all on a single line. + */ + +exports.formatters.o = function(v) { + this.inspectOpts.colors = this.useColors; + return util.inspect(v, this.inspectOpts) + .split('\n').map(function(str) { + return str.trim() + }).join(' '); +}; + +/** + * Map %o to `util.inspect()`, allowing multiple lines if needed. + */ + +exports.formatters.O = function(v) { + this.inspectOpts.colors = this.useColors; + return util.inspect(v, this.inspectOpts); +}; + +/** + * Adds ANSI color escape codes if enabled. + * + * @api public + */ + +function formatArgs(args) { + var name = this.namespace; + var useColors = this.useColors; + + if (useColors) { + var c = this.color; + var prefix = ' \u001b[3' + c + ';1m' + name + ' ' + '\u001b[0m'; + + args[0] = prefix + args[0].split('\n').join('\n' + prefix); + args.push('\u001b[3' + c + 'm+' + exports.humanize(this.diff) + '\u001b[0m'); + } else { + args[0] = new Date().toUTCString() + + ' ' + name + ' ' + args[0]; + } +} + +/** + * Invokes `util.format()` with the specified arguments and writes to `stream`. + */ + +function log() { + return stream.write(util.format.apply(util, arguments) + '\n'); +} + +/** + * Save `namespaces`. + * + * @param {String} namespaces + * @api private + */ + +function save(namespaces) { + if (null == namespaces) { + // If you set a process.env field to null or undefined, it gets cast to the + // string 'null' or 'undefined'. Just delete instead. + delete process.env.DEBUG; + } else { + process.env.DEBUG = namespaces; + } +} + +/** + * Load `namespaces`. + * + * @return {String} returns the previously persisted debug modes + * @api private + */ + +function load() { + return process.env.DEBUG; +} + +/** + * Copied from `node/src/node.js`. + * + * XXX: It's lame that node doesn't expose this API out-of-the-box. It also + * relies on the undocumented `tty_wrap.guessHandleType()` which is also lame. + */ + +function createWritableStdioStream (fd) { + var stream; + var tty_wrap = process.binding('tty_wrap'); + + // Note stream._type is used for test-module-load-list.js + + switch (tty_wrap.guessHandleType(fd)) { + case 'TTY': + stream = new tty.WriteStream(fd); + stream._type = 'tty'; + + // Hack to have stream not keep the event loop alive. + // See https://github.com/joyent/node/issues/1726 + if (stream._handle && stream._handle.unref) { + stream._handle.unref(); + } + break; + + case 'FILE': + var fs = require('fs'); + stream = new fs.SyncWriteStream(fd, { autoClose: false }); + stream._type = 'fs'; + break; + + case 'PIPE': + case 'TCP': + var net = require('net'); + stream = new net.Socket({ + fd: fd, + readable: false, + writable: true + }); + + // FIXME Should probably have an option in net.Socket to create a + // stream from an existing fd which is writable only. But for now + // we'll just add this hack and set the `readable` member to false. + // Test: ./node test/fixtures/echo.js < /etc/passwd + stream.readable = false; + stream.read = null; + stream._type = 'pipe'; + + // FIXME Hack to have stream not keep the event loop alive. + // See https://github.com/joyent/node/issues/1726 + if (stream._handle && stream._handle.unref) { + stream._handle.unref(); + } + break; + + default: + // Probably an error on in uv_guess_handle() + throw new Error('Implement me. Unknown stream file type!'); + } + + // For supporting legacy API we put the FD here. + stream.fd = fd; + + stream._isStdio = true; + + return stream; +} + +/** + * Init logic for `debug` instances. + * + * Create a new `inspectOpts` object in case `useColors` is set + * differently for a particular `debug` instance. + */ + +function init (debug) { + debug.inspectOpts = {}; + + var keys = Object.keys(exports.inspectOpts); + for (var i = 0; i < keys.length; i++) { + debug.inspectOpts[keys[i]] = exports.inspectOpts[keys[i]]; + } +} + +/** + * Enable namespaces listed in `process.env.DEBUG` initially. + */ + +exports.enable(load()); diff --git "a/Christian/\303\234bung 1/uebung1_vorlage/node_modules/depd/History.md" "b/Christian/\303\234bung 1/uebung1_vorlage/node_modules/depd/History.md" new file mode 100644 index 0000000..507ecb8 --- /dev/null +++ "b/Christian/\303\234bung 1/uebung1_vorlage/node_modules/depd/History.md" @@ -0,0 +1,96 @@ +1.1.2 / 2018-01-11 +================== + + * perf: remove argument reassignment + * Support Node.js 0.6 to 9.x + +1.1.1 / 2017-07-27 +================== + + * Remove unnecessary `Buffer` loading + * Support Node.js 0.6 to 8.x + +1.1.0 / 2015-09-14 +================== + + * Enable strict mode in more places + * Support io.js 3.x + * Support io.js 2.x + * Support web browser loading + - Requires bundler like Browserify or webpack + +1.0.1 / 2015-04-07 +================== + + * Fix `TypeError`s when under `'use strict'` code + * Fix useless type name on auto-generated messages + * Support io.js 1.x + * Support Node.js 0.12 + +1.0.0 / 2014-09-17 +================== + + * No changes + +0.4.5 / 2014-09-09 +================== + + * Improve call speed to functions using the function wrapper + * Support Node.js 0.6 + +0.4.4 / 2014-07-27 +================== + + * Work-around v8 generating empty stack traces + +0.4.3 / 2014-07-26 +================== + + * Fix exception when global `Error.stackTraceLimit` is too low + +0.4.2 / 2014-07-19 +================== + + * Correct call site for wrapped functions and properties + +0.4.1 / 2014-07-19 +================== + + * Improve automatic message generation for function properties + +0.4.0 / 2014-07-19 +================== + + * Add `TRACE_DEPRECATION` environment variable + * Remove non-standard grey color from color output + * Support `--no-deprecation` argument + * Support `--trace-deprecation` argument + * Support `deprecate.property(fn, prop, message)` + +0.3.0 / 2014-06-16 +================== + + * Add `NO_DEPRECATION` environment variable + +0.2.0 / 2014-06-15 +================== + + * Add `deprecate.property(obj, prop, message)` + * Remove `supports-color` dependency for node.js 0.8 + +0.1.0 / 2014-06-15 +================== + + * Add `deprecate.function(fn, message)` + * Add `process.on('deprecation', fn)` emitter + * Automatically generate message when omitted from `deprecate()` + +0.0.1 / 2014-06-15 +================== + + * Fix warning for dynamic calls at singe call site + +0.0.0 / 2014-06-15 +================== + + * Initial implementation diff --git "a/Christian/\303\234bung 1/uebung1_vorlage/node_modules/depd/LICENSE" "b/Christian/\303\234bung 1/uebung1_vorlage/node_modules/depd/LICENSE" new file mode 100644 index 0000000..84441fb --- /dev/null +++ "b/Christian/\303\234bung 1/uebung1_vorlage/node_modules/depd/LICENSE" @@ -0,0 +1,22 @@ +(The MIT License) + +Copyright (c) 2014-2017 Douglas Christopher Wilson + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git "a/Christian/\303\234bung 1/uebung1_vorlage/node_modules/depd/Readme.md" "b/Christian/\303\234bung 1/uebung1_vorlage/node_modules/depd/Readme.md" new file mode 100644 index 0000000..7790670 --- /dev/null +++ "b/Christian/\303\234bung 1/uebung1_vorlage/node_modules/depd/Readme.md" @@ -0,0 +1,280 @@ +# depd + +[![NPM Version][npm-version-image]][npm-url] +[![NPM Downloads][npm-downloads-image]][npm-url] +[![Node.js Version][node-image]][node-url] +[![Linux Build][travis-image]][travis-url] +[![Windows Build][appveyor-image]][appveyor-url] +[![Coverage Status][coveralls-image]][coveralls-url] + +Deprecate all the things + +> With great modules comes great responsibility; mark things deprecated! + +## Install + +This module is installed directly using `npm`: + +```sh +$ npm install depd +``` + +This module can also be bundled with systems like +[Browserify](http://browserify.org/) or [webpack](https://webpack.github.io/), +though by default this module will alter it's API to no longer display or +track deprecations. + +## API + + + +```js +var deprecate = require('depd')('my-module') +``` + +This library allows you to display deprecation messages to your users. +This library goes above and beyond with deprecation warnings by +introspection of the call stack (but only the bits that it is interested +in). + +Instead of just warning on the first invocation of a deprecated +function and never again, this module will warn on the first invocation +of a deprecated function per unique call site, making it ideal to alert +users of all deprecated uses across the code base, rather than just +whatever happens to execute first. + +The deprecation warnings from this module also include the file and line +information for the call into the module that the deprecated function was +in. + +**NOTE** this library has a similar interface to the `debug` module, and +this module uses the calling file to get the boundary for the call stacks, +so you should always create a new `deprecate` object in each file and not +within some central file. + +### depd(namespace) + +Create a new deprecate function that uses the given namespace name in the +messages and will display the call site prior to the stack entering the +file this function was called from. It is highly suggested you use the +name of your module as the namespace. + +### deprecate(message) + +Call this function from deprecated code to display a deprecation message. +This message will appear once per unique caller site. Caller site is the +first call site in the stack in a different file from the caller of this +function. + +If the message is omitted, a message is generated for you based on the site +of the `deprecate()` call and will display the name of the function called, +similar to the name displayed in a stack trace. + +### deprecate.function(fn, message) + +Call this function to wrap a given function in a deprecation message on any +call to the function. An optional message can be supplied to provide a custom +message. + +### deprecate.property(obj, prop, message) + +Call this function to wrap a given property on object in a deprecation message +on any accessing or setting of the property. An optional message can be supplied +to provide a custom message. + +The method must be called on the object where the property belongs (not +inherited from the prototype). + +If the property is a data descriptor, it will be converted to an accessor +descriptor in order to display the deprecation message. + +### process.on('deprecation', fn) + +This module will allow easy capturing of deprecation errors by emitting the +errors as the type "deprecation" on the global `process`. If there are no +listeners for this type, the errors are written to STDERR as normal, but if +there are any listeners, nothing will be written to STDERR and instead only +emitted. From there, you can write the errors in a different format or to a +logging source. + +The error represents the deprecation and is emitted only once with the same +rules as writing to STDERR. The error has the following properties: + + - `message` - This is the message given by the library + - `name` - This is always `'DeprecationError'` + - `namespace` - This is the namespace the deprecation came from + - `stack` - This is the stack of the call to the deprecated thing + +Example `error.stack` output: + +``` +DeprecationError: my-cool-module deprecated oldfunction + at Object. ([eval]-wrapper:6:22) + at Module._compile (module.js:456:26) + at evalScript (node.js:532:25) + at startup (node.js:80:7) + at node.js:902:3 +``` + +### process.env.NO_DEPRECATION + +As a user of modules that are deprecated, the environment variable `NO_DEPRECATION` +is provided as a quick solution to silencing deprecation warnings from being +output. The format of this is similar to that of `DEBUG`: + +```sh +$ NO_DEPRECATION=my-module,othermod node app.js +``` + +This will suppress deprecations from being output for "my-module" and "othermod". +The value is a list of comma-separated namespaces. To suppress every warning +across all namespaces, use the value `*` for a namespace. + +Providing the argument `--no-deprecation` to the `node` executable will suppress +all deprecations (only available in Node.js 0.8 or higher). + +**NOTE** This will not suppress the deperecations given to any "deprecation" +event listeners, just the output to STDERR. + +### process.env.TRACE_DEPRECATION + +As a user of modules that are deprecated, the environment variable `TRACE_DEPRECATION` +is provided as a solution to getting more detailed location information in deprecation +warnings by including the entire stack trace. The format of this is the same as +`NO_DEPRECATION`: + +```sh +$ TRACE_DEPRECATION=my-module,othermod node app.js +``` + +This will include stack traces for deprecations being output for "my-module" and +"othermod". The value is a list of comma-separated namespaces. To trace every +warning across all namespaces, use the value `*` for a namespace. + +Providing the argument `--trace-deprecation` to the `node` executable will trace +all deprecations (only available in Node.js 0.8 or higher). + +**NOTE** This will not trace the deperecations silenced by `NO_DEPRECATION`. + +## Display + +![message](files/message.png) + +When a user calls a function in your library that you mark deprecated, they +will see the following written to STDERR (in the given colors, similar colors +and layout to the `debug` module): + +``` +bright cyan bright yellow +| | reset cyan +| | | | +▼ ▼ ▼ ▼ +my-cool-module deprecated oldfunction [eval]-wrapper:6:22 +▲ ▲ ▲ ▲ +| | | | +namespace | | location of mycoolmod.oldfunction() call + | deprecation message + the word "deprecated" +``` + +If the user redirects their STDERR to a file or somewhere that does not support +colors, they see (similar layout to the `debug` module): + +``` +Sun, 15 Jun 2014 05:21:37 GMT my-cool-module deprecated oldfunction at [eval]-wrapper:6:22 +▲ ▲ ▲ ▲ ▲ +| | | | | +timestamp of message namespace | | location of mycoolmod.oldfunction() call + | deprecation message + the word "deprecated" +``` + +## Examples + +### Deprecating all calls to a function + +This will display a deprecated message about "oldfunction" being deprecated +from "my-module" on STDERR. + +```js +var deprecate = require('depd')('my-cool-module') + +// message automatically derived from function name +// Object.oldfunction +exports.oldfunction = deprecate.function(function oldfunction () { + // all calls to function are deprecated +}) + +// specific message +exports.oldfunction = deprecate.function(function () { + // all calls to function are deprecated +}, 'oldfunction') +``` + +### Conditionally deprecating a function call + +This will display a deprecated message about "weirdfunction" being deprecated +from "my-module" on STDERR when called with less than 2 arguments. + +```js +var deprecate = require('depd')('my-cool-module') + +exports.weirdfunction = function () { + if (arguments.length < 2) { + // calls with 0 or 1 args are deprecated + deprecate('weirdfunction args < 2') + } +} +``` + +When calling `deprecate` as a function, the warning is counted per call site +within your own module, so you can display different deprecations depending +on different situations and the users will still get all the warnings: + +```js +var deprecate = require('depd')('my-cool-module') + +exports.weirdfunction = function () { + if (arguments.length < 2) { + // calls with 0 or 1 args are deprecated + deprecate('weirdfunction args < 2') + } else if (typeof arguments[0] !== 'string') { + // calls with non-string first argument are deprecated + deprecate('weirdfunction non-string first arg') + } +} +``` + +### Deprecating property access + +This will display a deprecated message about "oldprop" being deprecated +from "my-module" on STDERR when accessed. A deprecation will be displayed +when setting the value and when getting the value. + +```js +var deprecate = require('depd')('my-cool-module') + +exports.oldprop = 'something' + +// message automatically derives from property name +deprecate.property(exports, 'oldprop') + +// explicit message +deprecate.property(exports, 'oldprop', 'oldprop >= 0.10') +``` + +## License + +[MIT](LICENSE) + +[npm-version-image]: https://img.shields.io/npm/v/depd.svg +[npm-downloads-image]: https://img.shields.io/npm/dm/depd.svg +[npm-url]: https://npmjs.org/package/depd +[travis-image]: https://img.shields.io/travis/dougwilson/nodejs-depd/master.svg?label=linux +[travis-url]: https://travis-ci.org/dougwilson/nodejs-depd +[appveyor-image]: https://img.shields.io/appveyor/ci/dougwilson/nodejs-depd/master.svg?label=windows +[appveyor-url]: https://ci.appveyor.com/project/dougwilson/nodejs-depd +[coveralls-image]: https://img.shields.io/coveralls/dougwilson/nodejs-depd/master.svg +[coveralls-url]: https://coveralls.io/r/dougwilson/nodejs-depd?branch=master +[node-image]: https://img.shields.io/node/v/depd.svg +[node-url]: https://nodejs.org/en/download/ diff --git "a/Christian/\303\234bung 1/uebung1_vorlage/node_modules/depd/index.js" "b/Christian/\303\234bung 1/uebung1_vorlage/node_modules/depd/index.js" new file mode 100644 index 0000000..d758d3c --- /dev/null +++ "b/Christian/\303\234bung 1/uebung1_vorlage/node_modules/depd/index.js" @@ -0,0 +1,522 @@ +/*! + * depd + * Copyright(c) 2014-2017 Douglas Christopher Wilson + * MIT Licensed + */ + +/** + * Module dependencies. + */ + +var callSiteToString = require('./lib/compat').callSiteToString +var eventListenerCount = require('./lib/compat').eventListenerCount +var relative = require('path').relative + +/** + * Module exports. + */ + +module.exports = depd + +/** + * Get the path to base files on. + */ + +var basePath = process.cwd() + +/** + * Determine if namespace is contained in the string. + */ + +function containsNamespace (str, namespace) { + var vals = str.split(/[ ,]+/) + var ns = String(namespace).toLowerCase() + + for (var i = 0; i < vals.length; i++) { + var val = vals[i] + + // namespace contained + if (val && (val === '*' || val.toLowerCase() === ns)) { + return true + } + } + + return false +} + +/** + * Convert a data descriptor to accessor descriptor. + */ + +function convertDataDescriptorToAccessor (obj, prop, message) { + var descriptor = Object.getOwnPropertyDescriptor(obj, prop) + var value = descriptor.value + + descriptor.get = function getter () { return value } + + if (descriptor.writable) { + descriptor.set = function setter (val) { return (value = val) } + } + + delete descriptor.value + delete descriptor.writable + + Object.defineProperty(obj, prop, descriptor) + + return descriptor +} + +/** + * Create arguments string to keep arity. + */ + +function createArgumentsString (arity) { + var str = '' + + for (var i = 0; i < arity; i++) { + str += ', arg' + i + } + + return str.substr(2) +} + +/** + * Create stack string from stack. + */ + +function createStackString (stack) { + var str = this.name + ': ' + this.namespace + + if (this.message) { + str += ' deprecated ' + this.message + } + + for (var i = 0; i < stack.length; i++) { + str += '\n at ' + callSiteToString(stack[i]) + } + + return str +} + +/** + * Create deprecate for namespace in caller. + */ + +function depd (namespace) { + if (!namespace) { + throw new TypeError('argument namespace is required') + } + + var stack = getStack() + var site = callSiteLocation(stack[1]) + var file = site[0] + + function deprecate (message) { + // call to self as log + log.call(deprecate, message) + } + + deprecate._file = file + deprecate._ignored = isignored(namespace) + deprecate._namespace = namespace + deprecate._traced = istraced(namespace) + deprecate._warned = Object.create(null) + + deprecate.function = wrapfunction + deprecate.property = wrapproperty + + return deprecate +} + +/** + * Determine if namespace is ignored. + */ + +function isignored (namespace) { + /* istanbul ignore next: tested in a child processs */ + if (process.noDeprecation) { + // --no-deprecation support + return true + } + + var str = process.env.NO_DEPRECATION || '' + + // namespace ignored + return containsNamespace(str, namespace) +} + +/** + * Determine if namespace is traced. + */ + +function istraced (namespace) { + /* istanbul ignore next: tested in a child processs */ + if (process.traceDeprecation) { + // --trace-deprecation support + return true + } + + var str = process.env.TRACE_DEPRECATION || '' + + // namespace traced + return containsNamespace(str, namespace) +} + +/** + * Display deprecation message. + */ + +function log (message, site) { + var haslisteners = eventListenerCount(process, 'deprecation') !== 0 + + // abort early if no destination + if (!haslisteners && this._ignored) { + return + } + + var caller + var callFile + var callSite + var depSite + var i = 0 + var seen = false + var stack = getStack() + var file = this._file + + if (site) { + // provided site + depSite = site + callSite = callSiteLocation(stack[1]) + callSite.name = depSite.name + file = callSite[0] + } else { + // get call site + i = 2 + depSite = callSiteLocation(stack[i]) + callSite = depSite + } + + // get caller of deprecated thing in relation to file + for (; i < stack.length; i++) { + caller = callSiteLocation(stack[i]) + callFile = caller[0] + + if (callFile === file) { + seen = true + } else if (callFile === this._file) { + file = this._file + } else if (seen) { + break + } + } + + var key = caller + ? depSite.join(':') + '__' + caller.join(':') + : undefined + + if (key !== undefined && key in this._warned) { + // already warned + return + } + + this._warned[key] = true + + // generate automatic message from call site + var msg = message + if (!msg) { + msg = callSite === depSite || !callSite.name + ? defaultMessage(depSite) + : defaultMessage(callSite) + } + + // emit deprecation if listeners exist + if (haslisteners) { + var err = DeprecationError(this._namespace, msg, stack.slice(i)) + process.emit('deprecation', err) + return + } + + // format and write message + var format = process.stderr.isTTY + ? formatColor + : formatPlain + var output = format.call(this, msg, caller, stack.slice(i)) + process.stderr.write(output + '\n', 'utf8') +} + +/** + * Get call site location as array. + */ + +function callSiteLocation (callSite) { + var file = callSite.getFileName() || '' + var line = callSite.getLineNumber() + var colm = callSite.getColumnNumber() + + if (callSite.isEval()) { + file = callSite.getEvalOrigin() + ', ' + file + } + + var site = [file, line, colm] + + site.callSite = callSite + site.name = callSite.getFunctionName() + + return site +} + +/** + * Generate a default message from the site. + */ + +function defaultMessage (site) { + var callSite = site.callSite + var funcName = site.name + + // make useful anonymous name + if (!funcName) { + funcName = '' + } + + var context = callSite.getThis() + var typeName = context && callSite.getTypeName() + + // ignore useless type name + if (typeName === 'Object') { + typeName = undefined + } + + // make useful type name + if (typeName === 'Function') { + typeName = context.name || typeName + } + + return typeName && callSite.getMethodName() + ? typeName + '.' + funcName + : funcName +} + +/** + * Format deprecation message without color. + */ + +function formatPlain (msg, caller, stack) { + var timestamp = new Date().toUTCString() + + var formatted = timestamp + + ' ' + this._namespace + + ' deprecated ' + msg + + // add stack trace + if (this._traced) { + for (var i = 0; i < stack.length; i++) { + formatted += '\n at ' + callSiteToString(stack[i]) + } + + return formatted + } + + if (caller) { + formatted += ' at ' + formatLocation(caller) + } + + return formatted +} + +/** + * Format deprecation message with color. + */ + +function formatColor (msg, caller, stack) { + var formatted = '\x1b[36;1m' + this._namespace + '\x1b[22;39m' + // bold cyan + ' \x1b[33;1mdeprecated\x1b[22;39m' + // bold yellow + ' \x1b[0m' + msg + '\x1b[39m' // reset + + // add stack trace + if (this._traced) { + for (var i = 0; i < stack.length; i++) { + formatted += '\n \x1b[36mat ' + callSiteToString(stack[i]) + '\x1b[39m' // cyan + } + + return formatted + } + + if (caller) { + formatted += ' \x1b[36m' + formatLocation(caller) + '\x1b[39m' // cyan + } + + return formatted +} + +/** + * Format call site location. + */ + +function formatLocation (callSite) { + return relative(basePath, callSite[0]) + + ':' + callSite[1] + + ':' + callSite[2] +} + +/** + * Get the stack as array of call sites. + */ + +function getStack () { + var limit = Error.stackTraceLimit + var obj = {} + var prep = Error.prepareStackTrace + + Error.prepareStackTrace = prepareObjectStackTrace + Error.stackTraceLimit = Math.max(10, limit) + + // capture the stack + Error.captureStackTrace(obj) + + // slice this function off the top + var stack = obj.stack.slice(1) + + Error.prepareStackTrace = prep + Error.stackTraceLimit = limit + + return stack +} + +/** + * Capture call site stack from v8. + */ + +function prepareObjectStackTrace (obj, stack) { + return stack +} + +/** + * Return a wrapped function in a deprecation message. + */ + +function wrapfunction (fn, message) { + if (typeof fn !== 'function') { + throw new TypeError('argument fn must be a function') + } + + var args = createArgumentsString(fn.length) + var deprecate = this // eslint-disable-line no-unused-vars + var stack = getStack() + var site = callSiteLocation(stack[1]) + + site.name = fn.name + + // eslint-disable-next-line no-eval + var deprecatedfn = eval('(function (' + args + ') {\n' + + '"use strict"\n' + + 'log.call(deprecate, message, site)\n' + + 'return fn.apply(this, arguments)\n' + + '})') + + return deprecatedfn +} + +/** + * Wrap property in a deprecation message. + */ + +function wrapproperty (obj, prop, message) { + if (!obj || (typeof obj !== 'object' && typeof obj !== 'function')) { + throw new TypeError('argument obj must be object') + } + + var descriptor = Object.getOwnPropertyDescriptor(obj, prop) + + if (!descriptor) { + throw new TypeError('must call property on owner object') + } + + if (!descriptor.configurable) { + throw new TypeError('property must be configurable') + } + + var deprecate = this + var stack = getStack() + var site = callSiteLocation(stack[1]) + + // set site name + site.name = prop + + // convert data descriptor + if ('value' in descriptor) { + descriptor = convertDataDescriptorToAccessor(obj, prop, message) + } + + var get = descriptor.get + var set = descriptor.set + + // wrap getter + if (typeof get === 'function') { + descriptor.get = function getter () { + log.call(deprecate, message, site) + return get.apply(this, arguments) + } + } + + // wrap setter + if (typeof set === 'function') { + descriptor.set = function setter () { + log.call(deprecate, message, site) + return set.apply(this, arguments) + } + } + + Object.defineProperty(obj, prop, descriptor) +} + +/** + * Create DeprecationError for deprecation + */ + +function DeprecationError (namespace, message, stack) { + var error = new Error() + var stackString + + Object.defineProperty(error, 'constructor', { + value: DeprecationError + }) + + Object.defineProperty(error, 'message', { + configurable: true, + enumerable: false, + value: message, + writable: true + }) + + Object.defineProperty(error, 'name', { + enumerable: false, + configurable: true, + value: 'DeprecationError', + writable: true + }) + + Object.defineProperty(error, 'namespace', { + configurable: true, + enumerable: false, + value: namespace, + writable: true + }) + + Object.defineProperty(error, 'stack', { + configurable: true, + enumerable: false, + get: function () { + if (stackString !== undefined) { + return stackString + } + + // prepare stack trace + return (stackString = createStackString.call(this, stack)) + }, + set: function setter (val) { + stackString = val + } + }) + + return error +} diff --git "a/Christian/\303\234bung 1/uebung1_vorlage/node_modules/depd/lib/browser/index.js" "b/Christian/\303\234bung 1/uebung1_vorlage/node_modules/depd/lib/browser/index.js" new file mode 100644 index 0000000..6be45cc --- /dev/null +++ "b/Christian/\303\234bung 1/uebung1_vorlage/node_modules/depd/lib/browser/index.js" @@ -0,0 +1,77 @@ +/*! + * depd + * Copyright(c) 2015 Douglas Christopher Wilson + * MIT Licensed + */ + +'use strict' + +/** + * Module exports. + * @public + */ + +module.exports = depd + +/** + * Create deprecate for namespace in caller. + */ + +function depd (namespace) { + if (!namespace) { + throw new TypeError('argument namespace is required') + } + + function deprecate (message) { + // no-op in browser + } + + deprecate._file = undefined + deprecate._ignored = true + deprecate._namespace = namespace + deprecate._traced = false + deprecate._warned = Object.create(null) + + deprecate.function = wrapfunction + deprecate.property = wrapproperty + + return deprecate +} + +/** + * Return a wrapped function in a deprecation message. + * + * This is a no-op version of the wrapper, which does nothing but call + * validation. + */ + +function wrapfunction (fn, message) { + if (typeof fn !== 'function') { + throw new TypeError('argument fn must be a function') + } + + return fn +} + +/** + * Wrap property in a deprecation message. + * + * This is a no-op version of the wrapper, which does nothing but call + * validation. + */ + +function wrapproperty (obj, prop, message) { + if (!obj || (typeof obj !== 'object' && typeof obj !== 'function')) { + throw new TypeError('argument obj must be object') + } + + var descriptor = Object.getOwnPropertyDescriptor(obj, prop) + + if (!descriptor) { + throw new TypeError('must call property on owner object') + } + + if (!descriptor.configurable) { + throw new TypeError('property must be configurable') + } +} diff --git "a/Christian/\303\234bung 1/uebung1_vorlage/node_modules/depd/lib/compat/callsite-tostring.js" "b/Christian/\303\234bung 1/uebung1_vorlage/node_modules/depd/lib/compat/callsite-tostring.js" new file mode 100644 index 0000000..73186dc --- /dev/null +++ "b/Christian/\303\234bung 1/uebung1_vorlage/node_modules/depd/lib/compat/callsite-tostring.js" @@ -0,0 +1,103 @@ +/*! + * depd + * Copyright(c) 2014 Douglas Christopher Wilson + * MIT Licensed + */ + +'use strict' + +/** + * Module exports. + */ + +module.exports = callSiteToString + +/** + * Format a CallSite file location to a string. + */ + +function callSiteFileLocation (callSite) { + var fileName + var fileLocation = '' + + if (callSite.isNative()) { + fileLocation = 'native' + } else if (callSite.isEval()) { + fileName = callSite.getScriptNameOrSourceURL() + if (!fileName) { + fileLocation = callSite.getEvalOrigin() + } + } else { + fileName = callSite.getFileName() + } + + if (fileName) { + fileLocation += fileName + + var lineNumber = callSite.getLineNumber() + if (lineNumber != null) { + fileLocation += ':' + lineNumber + + var columnNumber = callSite.getColumnNumber() + if (columnNumber) { + fileLocation += ':' + columnNumber + } + } + } + + return fileLocation || 'unknown source' +} + +/** + * Format a CallSite to a string. + */ + +function callSiteToString (callSite) { + var addSuffix = true + var fileLocation = callSiteFileLocation(callSite) + var functionName = callSite.getFunctionName() + var isConstructor = callSite.isConstructor() + var isMethodCall = !(callSite.isToplevel() || isConstructor) + var line = '' + + if (isMethodCall) { + var methodName = callSite.getMethodName() + var typeName = getConstructorName(callSite) + + if (functionName) { + if (typeName && functionName.indexOf(typeName) !== 0) { + line += typeName + '.' + } + + line += functionName + + if (methodName && functionName.lastIndexOf('.' + methodName) !== functionName.length - methodName.length - 1) { + line += ' [as ' + methodName + ']' + } + } else { + line += typeName + '.' + (methodName || '') + } + } else if (isConstructor) { + line += 'new ' + (functionName || '') + } else if (functionName) { + line += functionName + } else { + addSuffix = false + line += fileLocation + } + + if (addSuffix) { + line += ' (' + fileLocation + ')' + } + + return line +} + +/** + * Get constructor name of reviver. + */ + +function getConstructorName (obj) { + var receiver = obj.receiver + return (receiver.constructor && receiver.constructor.name) || null +} diff --git "a/Christian/\303\234bung 1/uebung1_vorlage/node_modules/depd/lib/compat/event-listener-count.js" "b/Christian/\303\234bung 1/uebung1_vorlage/node_modules/depd/lib/compat/event-listener-count.js" new file mode 100644 index 0000000..3a8925d --- /dev/null +++ "b/Christian/\303\234bung 1/uebung1_vorlage/node_modules/depd/lib/compat/event-listener-count.js" @@ -0,0 +1,22 @@ +/*! + * depd + * Copyright(c) 2015 Douglas Christopher Wilson + * MIT Licensed + */ + +'use strict' + +/** + * Module exports. + * @public + */ + +module.exports = eventListenerCount + +/** + * Get the count of listeners on an event emitter of a specific type. + */ + +function eventListenerCount (emitter, type) { + return emitter.listeners(type).length +} diff --git "a/Christian/\303\234bung 1/uebung1_vorlage/node_modules/depd/lib/compat/index.js" "b/Christian/\303\234bung 1/uebung1_vorlage/node_modules/depd/lib/compat/index.js" new file mode 100644 index 0000000..955b333 --- /dev/null +++ "b/Christian/\303\234bung 1/uebung1_vorlage/node_modules/depd/lib/compat/index.js" @@ -0,0 +1,79 @@ +/*! + * depd + * Copyright(c) 2014-2015 Douglas Christopher Wilson + * MIT Licensed + */ + +'use strict' + +/** + * Module dependencies. + * @private + */ + +var EventEmitter = require('events').EventEmitter + +/** + * Module exports. + * @public + */ + +lazyProperty(module.exports, 'callSiteToString', function callSiteToString () { + var limit = Error.stackTraceLimit + var obj = {} + var prep = Error.prepareStackTrace + + function prepareObjectStackTrace (obj, stack) { + return stack + } + + Error.prepareStackTrace = prepareObjectStackTrace + Error.stackTraceLimit = 2 + + // capture the stack + Error.captureStackTrace(obj) + + // slice the stack + var stack = obj.stack.slice() + + Error.prepareStackTrace = prep + Error.stackTraceLimit = limit + + return stack[0].toString ? toString : require('./callsite-tostring') +}) + +lazyProperty(module.exports, 'eventListenerCount', function eventListenerCount () { + return EventEmitter.listenerCount || require('./event-listener-count') +}) + +/** + * Define a lazy property. + */ + +function lazyProperty (obj, prop, getter) { + function get () { + var val = getter() + + Object.defineProperty(obj, prop, { + configurable: true, + enumerable: true, + value: val + }) + + return val + } + + Object.defineProperty(obj, prop, { + configurable: true, + enumerable: true, + get: get + }) +} + +/** + * Call toString() on the obj + */ + +function toString (obj) { + return obj.toString() +} diff --git "a/Christian/\303\234bung 1/uebung1_vorlage/node_modules/depd/package.json" "b/Christian/\303\234bung 1/uebung1_vorlage/node_modules/depd/package.json" new file mode 100644 index 0000000..a424827 --- /dev/null +++ "b/Christian/\303\234bung 1/uebung1_vorlage/node_modules/depd/package.json" @@ -0,0 +1,115 @@ +{ + "_args": [ + [ + { + "raw": "depd@~1.1.2", + "scope": null, + "escapedName": "depd", + "name": "depd", + "rawSpec": "~1.1.2", + "spec": ">=1.1.2 <1.2.0", + "type": "range" + }, + "/Users/samuel/Dropbox/Webbasierte Programmierung (IT1000)/SS18/WebP2/Uebungen/ubung1/loesung/node_modules/express" + ] + ], + "_from": "depd@>=1.1.2 <1.2.0", + "_id": "depd@1.1.2", + "_inCache": true, + "_location": "/depd", + "_nodeVersion": "6.11.1", + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/depd-1.1.2.tgz_1515736023686_0.5012104702182114" + }, + "_npmUser": { + "name": "dougwilson", + "email": "doug@somethingdoug.com" + }, + "_npmVersion": "3.10.10", + "_phantomChildren": {}, + "_requested": { + "raw": "depd@~1.1.2", + "scope": null, + "escapedName": "depd", + "name": "depd", + "rawSpec": "~1.1.2", + "spec": ">=1.1.2 <1.2.0", + "type": "range" + }, + "_requiredBy": [ + "/body-parser", + "/express", + "/http-errors", + "/send" + ], + "_resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "_shasum": "9bcd52e14c097763e749b274c4346ed2e560b5a9", + "_shrinkwrap": null, + "_spec": "depd@~1.1.2", + "_where": "/Users/samuel/Dropbox/Webbasierte Programmierung (IT1000)/SS18/WebP2/Uebungen/ubung1/loesung/node_modules/express", + "author": { + "name": "Douglas Christopher Wilson", + "email": "doug@somethingdoug.com" + }, + "browser": "lib/browser/index.js", + "bugs": { + "url": "https://github.com/dougwilson/nodejs-depd/issues" + }, + "dependencies": {}, + "description": "Deprecate all the things", + "devDependencies": { + "beautify-benchmark": "0.2.4", + "benchmark": "2.1.4", + "eslint": "3.19.0", + "eslint-config-standard": "7.1.0", + "eslint-plugin-markdown": "1.0.0-beta.7", + "eslint-plugin-promise": "3.6.0", + "eslint-plugin-standard": "3.0.1", + "istanbul": "0.4.5", + "mocha": "~1.21.5" + }, + "directories": {}, + "dist": { + "shasum": "9bcd52e14c097763e749b274c4346ed2e560b5a9", + "tarball": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz" + }, + "engines": { + "node": ">= 0.6" + }, + "files": [ + "lib/", + "History.md", + "LICENSE", + "index.js", + "Readme.md" + ], + "gitHead": "9a789740084d4f07a3a611432435ae4671f722ff", + "homepage": "https://github.com/dougwilson/nodejs-depd#readme", + "keywords": [ + "deprecate", + "deprecated" + ], + "license": "MIT", + "maintainers": [ + { + "name": "dougwilson", + "email": "doug@somethingdoug.com" + } + ], + "name": "depd", + "optionalDependencies": {}, + "readme": "ERROR: No README data found!", + "repository": { + "type": "git", + "url": "git+https://github.com/dougwilson/nodejs-depd.git" + }, + "scripts": { + "bench": "node benchmark/index.js", + "lint": "eslint --plugin markdown --ext js,md .", + "test": "mocha --reporter spec --bail test/", + "test-ci": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --reporter spec --no-exit test/", + "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --reporter dot test/" + }, + "version": "1.1.2" +} diff --git "a/Christian/\303\234bung 1/uebung1_vorlage/node_modules/destroy/LICENSE" "b/Christian/\303\234bung 1/uebung1_vorlage/node_modules/destroy/LICENSE" new file mode 100644 index 0000000..a7ae8ee --- /dev/null +++ "b/Christian/\303\234bung 1/uebung1_vorlage/node_modules/destroy/LICENSE" @@ -0,0 +1,22 @@ + +The MIT License (MIT) + +Copyright (c) 2014 Jonathan Ong me@jongleberry.com + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git "a/Christian/\303\234bung 1/uebung1_vorlage/node_modules/destroy/README.md" "b/Christian/\303\234bung 1/uebung1_vorlage/node_modules/destroy/README.md" new file mode 100644 index 0000000..6474bc3 --- /dev/null +++ "b/Christian/\303\234bung 1/uebung1_vorlage/node_modules/destroy/README.md" @@ -0,0 +1,60 @@ +# Destroy + +[![NPM version][npm-image]][npm-url] +[![Build status][travis-image]][travis-url] +[![Test coverage][coveralls-image]][coveralls-url] +[![License][license-image]][license-url] +[![Downloads][downloads-image]][downloads-url] +[![Gittip][gittip-image]][gittip-url] + +Destroy a stream. + +This module is meant to ensure a stream gets destroyed, handling different APIs +and Node.js bugs. + +## API + +```js +var destroy = require('destroy') +``` + +### destroy(stream) + +Destroy the given stream. In most cases, this is identical to a simple +`stream.destroy()` call. The rules are as follows for a given stream: + + 1. If the `stream` is an instance of `ReadStream`, then call `stream.destroy()` + and add a listener to the `open` event to call `stream.close()` if it is + fired. This is for a Node.js bug that will leak a file descriptor if + `.destroy()` is called before `open`. + 2. If the `stream` is not an instance of `Stream`, then nothing happens. + 3. If the `stream` has a `.destroy()` method, then call it. + +The function returns the `stream` passed in as the argument. + +## Example + +```js +var destroy = require('destroy') + +var fs = require('fs') +var stream = fs.createReadStream('package.json') + +// ... and later +destroy(stream) +``` + +[npm-image]: https://img.shields.io/npm/v/destroy.svg?style=flat-square +[npm-url]: https://npmjs.org/package/destroy +[github-tag]: http://img.shields.io/github/tag/stream-utils/destroy.svg?style=flat-square +[github-url]: https://github.com/stream-utils/destroy/tags +[travis-image]: https://img.shields.io/travis/stream-utils/destroy.svg?style=flat-square +[travis-url]: https://travis-ci.org/stream-utils/destroy +[coveralls-image]: https://img.shields.io/coveralls/stream-utils/destroy.svg?style=flat-square +[coveralls-url]: https://coveralls.io/r/stream-utils/destroy?branch=master +[license-image]: http://img.shields.io/npm/l/destroy.svg?style=flat-square +[license-url]: LICENSE.md +[downloads-image]: http://img.shields.io/npm/dm/destroy.svg?style=flat-square +[downloads-url]: https://npmjs.org/package/destroy +[gittip-image]: https://img.shields.io/gittip/jonathanong.svg?style=flat-square +[gittip-url]: https://www.gittip.com/jonathanong/ diff --git "a/Christian/\303\234bung 1/uebung1_vorlage/node_modules/destroy/index.js" "b/Christian/\303\234bung 1/uebung1_vorlage/node_modules/destroy/index.js" new file mode 100644 index 0000000..6da2d26 --- /dev/null +++ "b/Christian/\303\234bung 1/uebung1_vorlage/node_modules/destroy/index.js" @@ -0,0 +1,75 @@ +/*! + * destroy + * Copyright(c) 2014 Jonathan Ong + * MIT Licensed + */ + +'use strict' + +/** + * Module dependencies. + * @private + */ + +var ReadStream = require('fs').ReadStream +var Stream = require('stream') + +/** + * Module exports. + * @public + */ + +module.exports = destroy + +/** + * Destroy a stream. + * + * @param {object} stream + * @public + */ + +function destroy(stream) { + if (stream instanceof ReadStream) { + return destroyReadStream(stream) + } + + if (!(stream instanceof Stream)) { + return stream + } + + if (typeof stream.destroy === 'function') { + stream.destroy() + } + + return stream +} + +/** + * Destroy a ReadStream. + * + * @param {object} stream + * @private + */ + +function destroyReadStream(stream) { + stream.destroy() + + if (typeof stream.close === 'function') { + // node.js core bug work-around + stream.on('open', onOpenClose) + } + + return stream +} + +/** + * On open handler to close stream. + * @private + */ + +function onOpenClose() { + if (typeof this.fd === 'number') { + // actually close down the fd + this.close() + } +} diff --git "a/Christian/\303\234bung 1/uebung1_vorlage/node_modules/destroy/package.json" "b/Christian/\303\234bung 1/uebung1_vorlage/node_modules/destroy/package.json" new file mode 100644 index 0000000..92348e9 --- /dev/null +++ "b/Christian/\303\234bung 1/uebung1_vorlage/node_modules/destroy/package.json" @@ -0,0 +1,106 @@ +{ + "_args": [ + [ + { + "raw": "destroy@~1.0.4", + "scope": null, + "escapedName": "destroy", + "name": "destroy", + "rawSpec": "~1.0.4", + "spec": ">=1.0.4 <1.1.0", + "type": "range" + }, + "/Users/samuel/Dropbox/Webbasierte Programmierung (IT1000)/SS18/WebP2/Uebungen/ubung1/loesung/node_modules/send" + ] + ], + "_from": "destroy@>=1.0.4 <1.1.0", + "_id": "destroy@1.0.4", + "_inCache": true, + "_location": "/destroy", + "_npmUser": { + "name": "dougwilson", + "email": "doug@somethingdoug.com" + }, + "_npmVersion": "1.4.28", + "_phantomChildren": {}, + "_requested": { + "raw": "destroy@~1.0.4", + "scope": null, + "escapedName": "destroy", + "name": "destroy", + "rawSpec": "~1.0.4", + "spec": ">=1.0.4 <1.1.0", + "type": "range" + }, + "_requiredBy": [ + "/send" + ], + "_resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "_shasum": "978857442c44749e4206613e37946205826abd80", + "_shrinkwrap": null, + "_spec": "destroy@~1.0.4", + "_where": "/Users/samuel/Dropbox/Webbasierte Programmierung (IT1000)/SS18/WebP2/Uebungen/ubung1/loesung/node_modules/send", + "author": { + "name": "Jonathan Ong", + "email": "me@jongleberry.com", + "url": "http://jongleberry.com" + }, + "bugs": { + "url": "https://github.com/stream-utils/destroy/issues" + }, + "contributors": [ + { + "name": "Douglas Christopher Wilson", + "email": "doug@somethingdoug.com" + } + ], + "dependencies": {}, + "description": "destroy a stream if possible", + "devDependencies": { + "istanbul": "0.4.2", + "mocha": "2.3.4" + }, + "directories": {}, + "dist": { + "shasum": "978857442c44749e4206613e37946205826abd80", + "tarball": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz" + }, + "files": [ + "index.js", + "LICENSE" + ], + "gitHead": "86edea01456f5fa1027f6a47250c34c713cbcc3b", + "homepage": "https://github.com/stream-utils/destroy", + "keywords": [ + "stream", + "streams", + "destroy", + "cleanup", + "leak", + "fd" + ], + "license": "MIT", + "maintainers": [ + { + "name": "jongleberry", + "email": "jonathanrichardong@gmail.com" + }, + { + "name": "dougwilson", + "email": "doug@somethingdoug.com" + } + ], + "name": "destroy", + "optionalDependencies": {}, + "readme": "ERROR: No README data found!", + "repository": { + "type": "git", + "url": "git+https://github.com/stream-utils/destroy.git" + }, + "scripts": { + "test": "mocha --reporter spec", + "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --reporter dot", + "test-travis": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --reporter dot" + }, + "version": "1.0.4" +} diff --git "a/Christian/\303\234bung 1/uebung1_vorlage/node_modules/ee-first/LICENSE" "b/Christian/\303\234bung 1/uebung1_vorlage/node_modules/ee-first/LICENSE" new file mode 100644 index 0000000..a7ae8ee --- /dev/null +++ "b/Christian/\303\234bung 1/uebung1_vorlage/node_modules/ee-first/LICENSE" @@ -0,0 +1,22 @@ + +The MIT License (MIT) + +Copyright (c) 2014 Jonathan Ong me@jongleberry.com + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git "a/Christian/\303\234bung 1/uebung1_vorlage/node_modules/ee-first/README.md" "b/Christian/\303\234bung 1/uebung1_vorlage/node_modules/ee-first/README.md" new file mode 100644 index 0000000..cbd2478 --- /dev/null +++ "b/Christian/\303\234bung 1/uebung1_vorlage/node_modules/ee-first/README.md" @@ -0,0 +1,80 @@ +# EE First + +[![NPM version][npm-image]][npm-url] +[![Build status][travis-image]][travis-url] +[![Test coverage][coveralls-image]][coveralls-url] +[![License][license-image]][license-url] +[![Downloads][downloads-image]][downloads-url] +[![Gittip][gittip-image]][gittip-url] + +Get the first event in a set of event emitters and event pairs, +then clean up after itself. + +## Install + +```sh +$ npm install ee-first +``` + +## API + +```js +var first = require('ee-first') +``` + +### first(arr, listener) + +Invoke `listener` on the first event from the list specified in `arr`. `arr` is +an array of arrays, with each array in the format `[ee, ...event]`. `listener` +will be called only once, the first time any of the given events are emitted. If +`error` is one of the listened events, then if that fires first, the `listener` +will be given the `err` argument. + +The `listener` is invoked as `listener(err, ee, event, args)`, where `err` is the +first argument emitted from an `error` event, if applicable; `ee` is the event +emitter that fired; `event` is the string event name that fired; and `args` is an +array of the arguments that were emitted on the event. + +```js +var ee1 = new EventEmitter() +var ee2 = new EventEmitter() + +first([ + [ee1, 'close', 'end', 'error'], + [ee2, 'error'] +], function (err, ee, event, args) { + // listener invoked +}) +``` + +#### .cancel() + +The group of listeners can be cancelled before being invoked and have all the event +listeners removed from the underlying event emitters. + +```js +var thunk = first([ + [ee1, 'close', 'end', 'error'], + [ee2, 'error'] +], function (err, ee, event, args) { + // listener invoked +}) + +// cancel and clean up +thunk.cancel() +``` + +[npm-image]: https://img.shields.io/npm/v/ee-first.svg?style=flat-square +[npm-url]: https://npmjs.org/package/ee-first +[github-tag]: http://img.shields.io/github/tag/jonathanong/ee-first.svg?style=flat-square +[github-url]: https://github.com/jonathanong/ee-first/tags +[travis-image]: https://img.shields.io/travis/jonathanong/ee-first.svg?style=flat-square +[travis-url]: https://travis-ci.org/jonathanong/ee-first +[coveralls-image]: https://img.shields.io/coveralls/jonathanong/ee-first.svg?style=flat-square +[coveralls-url]: https://coveralls.io/r/jonathanong/ee-first?branch=master +[license-image]: http://img.shields.io/npm/l/ee-first.svg?style=flat-square +[license-url]: LICENSE.md +[downloads-image]: http://img.shields.io/npm/dm/ee-first.svg?style=flat-square +[downloads-url]: https://npmjs.org/package/ee-first +[gittip-image]: https://img.shields.io/gittip/jonathanong.svg?style=flat-square +[gittip-url]: https://www.gittip.com/jonathanong/ diff --git "a/Christian/\303\234bung 1/uebung1_vorlage/node_modules/ee-first/index.js" "b/Christian/\303\234bung 1/uebung1_vorlage/node_modules/ee-first/index.js" new file mode 100644 index 0000000..501287c --- /dev/null +++ "b/Christian/\303\234bung 1/uebung1_vorlage/node_modules/ee-first/index.js" @@ -0,0 +1,95 @@ +/*! + * ee-first + * Copyright(c) 2014 Jonathan Ong + * MIT Licensed + */ + +'use strict' + +/** + * Module exports. + * @public + */ + +module.exports = first + +/** + * Get the first event in a set of event emitters and event pairs. + * + * @param {array} stuff + * @param {function} done + * @public + */ + +function first(stuff, done) { + if (!Array.isArray(stuff)) + throw new TypeError('arg must be an array of [ee, events...] arrays') + + var cleanups = [] + + for (var i = 0; i < stuff.length; i++) { + var arr = stuff[i] + + if (!Array.isArray(arr) || arr.length < 2) + throw new TypeError('each array member must be [ee, events...]') + + var ee = arr[0] + + for (var j = 1; j < arr.length; j++) { + var event = arr[j] + var fn = listener(event, callback) + + // listen to the event + ee.on(event, fn) + // push this listener to the list of cleanups + cleanups.push({ + ee: ee, + event: event, + fn: fn, + }) + } + } + + function callback() { + cleanup() + done.apply(null, arguments) + } + + function cleanup() { + var x + for (var i = 0; i < cleanups.length; i++) { + x = cleanups[i] + x.ee.removeListener(x.event, x.fn) + } + } + + function thunk(fn) { + done = fn + } + + thunk.cancel = cleanup + + return thunk +} + +/** + * Create the event listener. + * @private + */ + +function listener(event, done) { + return function onevent(arg1) { + var args = new Array(arguments.length) + var ee = this + var err = event === 'error' + ? arg1 + : null + + // copy args to prevent arguments escaping scope + for (var i = 0; i < args.length; i++) { + args[i] = arguments[i] + } + + done(err, ee, event, args) + } +} diff --git "a/Christian/\303\234bung 1/uebung1_vorlage/node_modules/ee-first/package.json" "b/Christian/\303\234bung 1/uebung1_vorlage/node_modules/ee-first/package.json" new file mode 100644 index 0000000..b850495 --- /dev/null +++ "b/Christian/\303\234bung 1/uebung1_vorlage/node_modules/ee-first/package.json" @@ -0,0 +1,98 @@ +{ + "_args": [ + [ + { + "raw": "ee-first@1.1.1", + "scope": null, + "escapedName": "ee-first", + "name": "ee-first", + "rawSpec": "1.1.1", + "spec": "1.1.1", + "type": "version" + }, + "/Users/samuel/Dropbox/Webbasierte Programmierung (IT1000)/SS18/WebP2/Uebungen/ubung1/loesung/node_modules/on-finished" + ] + ], + "_from": "ee-first@1.1.1", + "_id": "ee-first@1.1.1", + "_inCache": true, + "_location": "/ee-first", + "_npmUser": { + "name": "dougwilson", + "email": "doug@somethingdoug.com" + }, + "_npmVersion": "1.4.28", + "_phantomChildren": {}, + "_requested": { + "raw": "ee-first@1.1.1", + "scope": null, + "escapedName": "ee-first", + "name": "ee-first", + "rawSpec": "1.1.1", + "spec": "1.1.1", + "type": "version" + }, + "_requiredBy": [ + "/on-finished" + ], + "_resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "_shasum": "590c61156b0ae2f4f0255732a158b266bc56b21d", + "_shrinkwrap": null, + "_spec": "ee-first@1.1.1", + "_where": "/Users/samuel/Dropbox/Webbasierte Programmierung (IT1000)/SS18/WebP2/Uebungen/ubung1/loesung/node_modules/on-finished", + "author": { + "name": "Jonathan Ong", + "email": "me@jongleberry.com", + "url": "http://jongleberry.com" + }, + "bugs": { + "url": "https://github.com/jonathanong/ee-first/issues" + }, + "contributors": [ + { + "name": "Douglas Christopher Wilson", + "email": "doug@somethingdoug.com" + } + ], + "dependencies": {}, + "description": "return the first event in a set of ee/event pairs", + "devDependencies": { + "istanbul": "0.3.9", + "mocha": "2.2.5" + }, + "directories": {}, + "dist": { + "shasum": "590c61156b0ae2f4f0255732a158b266bc56b21d", + "tarball": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz" + }, + "files": [ + "index.js", + "LICENSE" + ], + "gitHead": "512e0ce4cc3643f603708f965a97b61b1a9c0441", + "homepage": "https://github.com/jonathanong/ee-first", + "license": "MIT", + "maintainers": [ + { + "name": "jongleberry", + "email": "jonathanrichardong@gmail.com" + }, + { + "name": "dougwilson", + "email": "doug@somethingdoug.com" + } + ], + "name": "ee-first", + "optionalDependencies": {}, + "readme": "ERROR: No README data found!", + "repository": { + "type": "git", + "url": "git+https://github.com/jonathanong/ee-first.git" + }, + "scripts": { + "test": "mocha --reporter spec --bail --check-leaks test/", + "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --reporter dot --check-leaks test/", + "test-travis": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --reporter spec --check-leaks test/" + }, + "version": "1.1.1" +} diff --git "a/Christian/\303\234bung 1/uebung1_vorlage/node_modules/encodeurl/HISTORY.md" "b/Christian/\303\234bung 1/uebung1_vorlage/node_modules/encodeurl/HISTORY.md" new file mode 100644 index 0000000..41313b2 --- /dev/null +++ "b/Christian/\303\234bung 1/uebung1_vorlage/node_modules/encodeurl/HISTORY.md" @@ -0,0 +1,14 @@ +1.0.2 / 2018-01-21 +================== + + * Fix encoding `%` as last character + +1.0.1 / 2016-06-09 +================== + + * Fix encoding unpaired surrogates at start/end of string + +1.0.0 / 2016-06-08 +================== + + * Initial release diff --git "a/Christian/\303\234bung 1/uebung1_vorlage/node_modules/encodeurl/LICENSE" "b/Christian/\303\234bung 1/uebung1_vorlage/node_modules/encodeurl/LICENSE" new file mode 100644 index 0000000..8812229 --- /dev/null +++ "b/Christian/\303\234bung 1/uebung1_vorlage/node_modules/encodeurl/LICENSE" @@ -0,0 +1,22 @@ +(The MIT License) + +Copyright (c) 2016 Douglas Christopher Wilson + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git "a/Christian/\303\234bung 1/uebung1_vorlage/node_modules/encodeurl/README.md" "b/Christian/\303\234bung 1/uebung1_vorlage/node_modules/encodeurl/README.md" new file mode 100644 index 0000000..127c5a0 --- /dev/null +++ "b/Christian/\303\234bung 1/uebung1_vorlage/node_modules/encodeurl/README.md" @@ -0,0 +1,128 @@ +# encodeurl + +[![NPM Version][npm-image]][npm-url] +[![NPM Downloads][downloads-image]][downloads-url] +[![Node.js Version][node-version-image]][node-version-url] +[![Build Status][travis-image]][travis-url] +[![Test Coverage][coveralls-image]][coveralls-url] + +Encode a URL to a percent-encoded form, excluding already-encoded sequences + +## Installation + +This is a [Node.js](https://nodejs.org/en/) module available through the +[npm registry](https://www.npmjs.com/). Installation is done using the +[`npm install` command](https://docs.npmjs.com/getting-started/installing-npm-packages-locally): + +```sh +$ npm install encodeurl +``` + +## API + +```js +var encodeUrl = require('encodeurl') +``` + +### encodeUrl(url) + +Encode a URL to a percent-encoded form, excluding already-encoded sequences. + +This function will take an already-encoded URL and encode all the non-URL +code points (as UTF-8 byte sequences). This function will not encode the +"%" character unless it is not part of a valid sequence (`%20` will be +left as-is, but `%foo` will be encoded as `%25foo`). + +This encode is meant to be "safe" and does not throw errors. It will try as +hard as it can to properly encode the given URL, including replacing any raw, +unpaired surrogate pairs with the Unicode replacement character prior to +encoding. + +This function is _similar_ to the intrinsic function `encodeURI`, except it +will not encode the `%` character if that is part of a valid sequence, will +not encode `[` and `]` (for IPv6 hostnames) and will replace raw, unpaired +surrogate pairs with the Unicode replacement character (instead of throwing). + +## Examples + +### Encode a URL containing user-controled data + +```js +var encodeUrl = require('encodeurl') +var escapeHtml = require('escape-html') + +http.createServer(function onRequest (req, res) { + // get encoded form of inbound url + var url = encodeUrl(req.url) + + // create html message + var body = '

Location ' + escapeHtml(url) + ' not found

' + + // send a 404 + res.statusCode = 404 + res.setHeader('Content-Type', 'text/html; charset=UTF-8') + res.setHeader('Content-Length', String(Buffer.byteLength(body, 'utf-8'))) + res.end(body, 'utf-8') +}) +``` + +### Encode a URL for use in a header field + +```js +var encodeUrl = require('encodeurl') +var escapeHtml = require('escape-html') +var url = require('url') + +http.createServer(function onRequest (req, res) { + // parse inbound url + var href = url.parse(req) + + // set new host for redirect + href.host = 'localhost' + href.protocol = 'https:' + href.slashes = true + + // create location header + var location = encodeUrl(url.format(href)) + + // create html message + var body = '

Redirecting to new site: ' + escapeHtml(location) + '

' + + // send a 301 + res.statusCode = 301 + res.setHeader('Content-Type', 'text/html; charset=UTF-8') + res.setHeader('Content-Length', String(Buffer.byteLength(body, 'utf-8'))) + res.setHeader('Location', location) + res.end(body, 'utf-8') +}) +``` + +## Testing + +```sh +$ npm test +$ npm run lint +``` + +## References + +- [RFC 3986: Uniform Resource Identifier (URI): Generic Syntax][rfc-3986] +- [WHATWG URL Living Standard][whatwg-url] + +[rfc-3986]: https://tools.ietf.org/html/rfc3986 +[whatwg-url]: https://url.spec.whatwg.org/ + +## License + +[MIT](LICENSE) + +[npm-image]: https://img.shields.io/npm/v/encodeurl.svg +[npm-url]: https://npmjs.org/package/encodeurl +[node-version-image]: https://img.shields.io/node/v/encodeurl.svg +[node-version-url]: https://nodejs.org/en/download +[travis-image]: https://img.shields.io/travis/pillarjs/encodeurl.svg +[travis-url]: https://travis-ci.org/pillarjs/encodeurl +[coveralls-image]: https://img.shields.io/coveralls/pillarjs/encodeurl.svg +[coveralls-url]: https://coveralls.io/r/pillarjs/encodeurl?branch=master +[downloads-image]: https://img.shields.io/npm/dm/encodeurl.svg +[downloads-url]: https://npmjs.org/package/encodeurl diff --git "a/Christian/\303\234bung 1/uebung1_vorlage/node_modules/encodeurl/index.js" "b/Christian/\303\234bung 1/uebung1_vorlage/node_modules/encodeurl/index.js" new file mode 100644 index 0000000..fc4906c --- /dev/null +++ "b/Christian/\303\234bung 1/uebung1_vorlage/node_modules/encodeurl/index.js" @@ -0,0 +1,60 @@ +/*! + * encodeurl + * Copyright(c) 2016 Douglas Christopher Wilson + * MIT Licensed + */ + +'use strict' + +/** + * Module exports. + * @public + */ + +module.exports = encodeUrl + +/** + * RegExp to match non-URL code points, *after* encoding (i.e. not including "%") + * and including invalid escape sequences. + * @private + */ + +var ENCODE_CHARS_REGEXP = /(?:[^\x21\x25\x26-\x3B\x3D\x3F-\x5B\x5D\x5F\x61-\x7A\x7E]|%(?:[^0-9A-Fa-f]|[0-9A-Fa-f][^0-9A-Fa-f]|$))+/g + +/** + * RegExp to match unmatched surrogate pair. + * @private + */ + +var UNMATCHED_SURROGATE_PAIR_REGEXP = /(^|[^\uD800-\uDBFF])[\uDC00-\uDFFF]|[\uD800-\uDBFF]([^\uDC00-\uDFFF]|$)/g + +/** + * String to replace unmatched surrogate pair with. + * @private + */ + +var UNMATCHED_SURROGATE_PAIR_REPLACE = '$1\uFFFD$2' + +/** + * Encode a URL to a percent-encoded form, excluding already-encoded sequences. + * + * This function will take an already-encoded URL and encode all the non-URL + * code points. This function will not encode the "%" character unless it is + * not part of a valid sequence (`%20` will be left as-is, but `%foo` will + * be encoded as `%25foo`). + * + * This encode is meant to be "safe" and does not throw errors. It will try as + * hard as it can to properly encode the given URL, including replacing any raw, + * unpaired surrogate pairs with the Unicode replacement character prior to + * encoding. + * + * @param {string} url + * @return {string} + * @public + */ + +function encodeUrl (url) { + return String(url) + .replace(UNMATCHED_SURROGATE_PAIR_REGEXP, UNMATCHED_SURROGATE_PAIR_REPLACE) + .replace(ENCODE_CHARS_REGEXP, encodeURI) +} diff --git "a/Christian/\303\234bung 1/uebung1_vorlage/node_modules/encodeurl/package.json" "b/Christian/\303\234bung 1/uebung1_vorlage/node_modules/encodeurl/package.json" new file mode 100644 index 0000000..288a3b8 --- /dev/null +++ "b/Christian/\303\234bung 1/uebung1_vorlage/node_modules/encodeurl/package.json" @@ -0,0 +1,114 @@ +{ + "_args": [ + [ + { + "raw": "encodeurl@~1.0.2", + "scope": null, + "escapedName": "encodeurl", + "name": "encodeurl", + "rawSpec": "~1.0.2", + "spec": ">=1.0.2 <1.1.0", + "type": "range" + }, + "/Users/samuel/Dropbox/Webbasierte Programmierung (IT1000)/SS18/WebP2/Uebungen/ubung1/loesung/node_modules/express" + ] + ], + "_from": "encodeurl@>=1.0.2 <1.1.0", + "_id": "encodeurl@1.0.2", + "_inCache": true, + "_location": "/encodeurl", + "_nodeVersion": "6.11.1", + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/encodeurl-1.0.2.tgz_1516591169672_0.5424360500182956" + }, + "_npmUser": { + "name": "dougwilson", + "email": "doug@somethingdoug.com" + }, + "_npmVersion": "3.10.10", + "_phantomChildren": {}, + "_requested": { + "raw": "encodeurl@~1.0.2", + "scope": null, + "escapedName": "encodeurl", + "name": "encodeurl", + "rawSpec": "~1.0.2", + "spec": ">=1.0.2 <1.1.0", + "type": "range" + }, + "_requiredBy": [ + "/express", + "/finalhandler", + "/send", + "/serve-static" + ], + "_resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "_shasum": "ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59", + "_shrinkwrap": null, + "_spec": "encodeurl@~1.0.2", + "_where": "/Users/samuel/Dropbox/Webbasierte Programmierung (IT1000)/SS18/WebP2/Uebungen/ubung1/loesung/node_modules/express", + "bugs": { + "url": "https://github.com/pillarjs/encodeurl/issues" + }, + "contributors": [ + { + "name": "Douglas Christopher Wilson", + "email": "doug@somethingdoug.com" + } + ], + "dependencies": {}, + "description": "Encode a URL to a percent-encoded form, excluding already-encoded sequences", + "devDependencies": { + "eslint": "3.19.0", + "eslint-config-standard": "10.2.1", + "eslint-plugin-import": "2.8.0", + "eslint-plugin-node": "5.2.1", + "eslint-plugin-promise": "3.6.0", + "eslint-plugin-standard": "3.0.1", + "istanbul": "0.4.5", + "mocha": "2.5.3" + }, + "directories": {}, + "dist": { + "shasum": "ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59", + "tarball": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz" + }, + "engines": { + "node": ">= 0.8" + }, + "files": [ + "LICENSE", + "HISTORY.md", + "README.md", + "index.js" + ], + "gitHead": "1a7301e330bf20fd7c8c173102315e45cd1f5d1e", + "homepage": "https://github.com/pillarjs/encodeurl#readme", + "keywords": [ + "encode", + "encodeurl", + "url" + ], + "license": "MIT", + "maintainers": [ + { + "name": "dougwilson", + "email": "doug@somethingdoug.com" + } + ], + "name": "encodeurl", + "optionalDependencies": {}, + "readme": "ERROR: No README data found!", + "repository": { + "type": "git", + "url": "git+https://github.com/pillarjs/encodeurl.git" + }, + "scripts": { + "lint": "eslint .", + "test": "mocha --reporter spec --bail --check-leaks test/", + "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --reporter dot --check-leaks test/", + "test-travis": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --reporter spec --check-leaks test/" + }, + "version": "1.0.2" +} diff --git "a/Christian/\303\234bung 1/uebung1_vorlage/node_modules/escape-html/LICENSE" "b/Christian/\303\234bung 1/uebung1_vorlage/node_modules/escape-html/LICENSE" new file mode 100644 index 0000000..2e70de9 --- /dev/null +++ "b/Christian/\303\234bung 1/uebung1_vorlage/node_modules/escape-html/LICENSE" @@ -0,0 +1,24 @@ +(The MIT License) + +Copyright (c) 2012-2013 TJ Holowaychuk +Copyright (c) 2015 Andreas Lubbe +Copyright (c) 2015 Tiancheng "Timothy" Gu + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git "a/Christian/\303\234bung 1/uebung1_vorlage/node_modules/escape-html/Readme.md" "b/Christian/\303\234bung 1/uebung1_vorlage/node_modules/escape-html/Readme.md" new file mode 100644 index 0000000..653d9ea --- /dev/null +++ "b/Christian/\303\234bung 1/uebung1_vorlage/node_modules/escape-html/Readme.md" @@ -0,0 +1,43 @@ + +# escape-html + + Escape string for use in HTML + +## Example + +```js +var escape = require('escape-html'); +var html = escape('foo & bar'); +// -> foo & bar +``` + +## Benchmark + +``` +$ npm run-script bench + +> escape-html@1.0.3 bench nodejs-escape-html +> node benchmark/index.js + + + http_parser@1.0 + node@0.10.33 + v8@3.14.5.9 + ares@1.9.0-DEV + uv@0.10.29 + zlib@1.2.3 + modules@11 + openssl@1.0.1j + + 1 test completed. + 2 tests completed. + 3 tests completed. + + no special characters x 19,435,271 ops/sec ±0.85% (187 runs sampled) + single special character x 6,132,421 ops/sec ±0.67% (194 runs sampled) + many special characters x 3,175,826 ops/sec ±0.65% (193 runs sampled) +``` + +## License + + MIT \ No newline at end of file diff --git "a/Christian/\303\234bung 1/uebung1_vorlage/node_modules/escape-html/index.js" "b/Christian/\303\234bung 1/uebung1_vorlage/node_modules/escape-html/index.js" new file mode 100644 index 0000000..bf9e226 --- /dev/null +++ "b/Christian/\303\234bung 1/uebung1_vorlage/node_modules/escape-html/index.js" @@ -0,0 +1,78 @@ +/*! + * escape-html + * Copyright(c) 2012-2013 TJ Holowaychuk + * Copyright(c) 2015 Andreas Lubbe + * Copyright(c) 2015 Tiancheng "Timothy" Gu + * MIT Licensed + */ + +'use strict'; + +/** + * Module variables. + * @private + */ + +var matchHtmlRegExp = /["'&<>]/; + +/** + * Module exports. + * @public + */ + +module.exports = escapeHtml; + +/** + * Escape special characters in the given string of html. + * + * @param {string} string The string to escape for inserting into HTML + * @return {string} + * @public + */ + +function escapeHtml(string) { + var str = '' + string; + var match = matchHtmlRegExp.exec(str); + + if (!match) { + return str; + } + + var escape; + var html = ''; + var index = 0; + var lastIndex = 0; + + for (index = match.index; index < str.length; index++) { + switch (str.charCodeAt(index)) { + case 34: // " + escape = '"'; + break; + case 38: // & + escape = '&'; + break; + case 39: // ' + escape = '''; + break; + case 60: // < + escape = '<'; + break; + case 62: // > + escape = '>'; + break; + default: + continue; + } + + if (lastIndex !== index) { + html += str.substring(lastIndex, index); + } + + lastIndex = index + 1; + html += escape; + } + + return lastIndex !== index + ? html + str.substring(lastIndex, index) + : html; +} diff --git "a/Christian/\303\234bung 1/uebung1_vorlage/node_modules/escape-html/package.json" "b/Christian/\303\234bung 1/uebung1_vorlage/node_modules/escape-html/package.json" new file mode 100644 index 0000000..70a8d97 --- /dev/null +++ "b/Christian/\303\234bung 1/uebung1_vorlage/node_modules/escape-html/package.json" @@ -0,0 +1,94 @@ +{ + "_args": [ + [ + { + "raw": "escape-html@~1.0.3", + "scope": null, + "escapedName": "escape-html", + "name": "escape-html", + "rawSpec": "~1.0.3", + "spec": ">=1.0.3 <1.1.0", + "type": "range" + }, + "/Users/samuel/Dropbox/Webbasierte Programmierung (IT1000)/SS18/WebP2/Uebungen/ubung1/loesung/node_modules/express" + ] + ], + "_from": "escape-html@>=1.0.3 <1.1.0", + "_id": "escape-html@1.0.3", + "_inCache": true, + "_location": "/escape-html", + "_npmUser": { + "name": "dougwilson", + "email": "doug@somethingdoug.com" + }, + "_npmVersion": "1.4.28", + "_phantomChildren": {}, + "_requested": { + "raw": "escape-html@~1.0.3", + "scope": null, + "escapedName": "escape-html", + "name": "escape-html", + "rawSpec": "~1.0.3", + "spec": ">=1.0.3 <1.1.0", + "type": "range" + }, + "_requiredBy": [ + "/express", + "/finalhandler", + "/send", + "/serve-static" + ], + "_resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "_shasum": "0258eae4d3d0c0974de1c169188ef0051d1d1988", + "_shrinkwrap": null, + "_spec": "escape-html@~1.0.3", + "_where": "/Users/samuel/Dropbox/Webbasierte Programmierung (IT1000)/SS18/WebP2/Uebungen/ubung1/loesung/node_modules/express", + "bugs": { + "url": "https://github.com/component/escape-html/issues" + }, + "dependencies": {}, + "description": "Escape string for use in HTML", + "devDependencies": { + "beautify-benchmark": "0.2.4", + "benchmark": "1.0.0" + }, + "directories": {}, + "dist": { + "shasum": "0258eae4d3d0c0974de1c169188ef0051d1d1988", + "tarball": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz" + }, + "files": [ + "LICENSE", + "Readme.md", + "index.js" + ], + "gitHead": "7ac2ea3977fcac3d4c5be8d2a037812820c65f28", + "homepage": "https://github.com/component/escape-html", + "keywords": [ + "escape", + "html", + "utility" + ], + "license": "MIT", + "maintainers": [ + { + "name": "tjholowaychuk", + "email": "tj@vision-media.ca" + }, + { + "name": "dougwilson", + "email": "doug@somethingdoug.com" + } + ], + "name": "escape-html", + "optionalDependencies": {}, + "readme": "ERROR: No README data found!", + "repository": { + "type": "git", + "url": "git+https://github.com/component/escape-html.git" + }, + "scripts": { + "bench": "node benchmark/index.js" + }, + "version": "1.0.3" +} diff --git "a/Christian/\303\234bung 1/uebung1_vorlage/node_modules/etag/HISTORY.md" "b/Christian/\303\234bung 1/uebung1_vorlage/node_modules/etag/HISTORY.md" new file mode 100644 index 0000000..222b293 --- /dev/null +++ "b/Christian/\303\234bung 1/uebung1_vorlage/node_modules/etag/HISTORY.md" @@ -0,0 +1,83 @@ +1.8.1 / 2017-09-12 +================== + + * perf: replace regular expression with substring + +1.8.0 / 2017-02-18 +================== + + * Use SHA1 instead of MD5 for ETag hashing + - Improves performance for larger entities + - Works with FIPS 140-2 OpenSSL configuration + +1.7.0 / 2015-06-08 +================== + + * Always include entity length in ETags for hash length extensions + * Generate non-Stats ETags using MD5 only (no longer CRC32) + * Improve stat performance by removing hashing + * Remove base64 padding in ETags to shorten + * Use MD5 instead of MD4 in weak ETags over 1KB + +1.6.0 / 2015-05-10 +================== + + * Improve support for JXcore + * Remove requirement of `atime` in the stats object + * Support "fake" stats objects in environments without `fs` + +1.5.1 / 2014-11-19 +================== + + * deps: crc@3.2.1 + - Minor fixes + +1.5.0 / 2014-10-14 +================== + + * Improve string performance + * Slightly improve speed for weak ETags over 1KB + +1.4.0 / 2014-09-21 +================== + + * Support "fake" stats objects + * Support Node.js 0.6 + +1.3.1 / 2014-09-14 +================== + + * Use the (new and improved) `crc` for crc32 + +1.3.0 / 2014-08-29 +================== + + * Default strings to strong ETags + * Improve speed for weak ETags over 1KB + +1.2.1 / 2014-08-29 +================== + + * Use the (much faster) `buffer-crc32` for crc32 + +1.2.0 / 2014-08-24 +================== + + * Add support for file stat objects + +1.1.0 / 2014-08-24 +================== + + * Add fast-path for empty entity + * Add weak ETag generation + * Shrink size of generated ETags + +1.0.1 / 2014-08-24 +================== + + * Fix behavior of string containing Unicode + +1.0.0 / 2014-05-18 +================== + + * Initial release diff --git "a/Christian/\303\234bung 1/uebung1_vorlage/node_modules/etag/LICENSE" "b/Christian/\303\234bung 1/uebung1_vorlage/node_modules/etag/LICENSE" new file mode 100644 index 0000000..cab251c --- /dev/null +++ "b/Christian/\303\234bung 1/uebung1_vorlage/node_modules/etag/LICENSE" @@ -0,0 +1,22 @@ +(The MIT License) + +Copyright (c) 2014-2016 Douglas Christopher Wilson + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git "a/Christian/\303\234bung 1/uebung1_vorlage/node_modules/etag/README.md" "b/Christian/\303\234bung 1/uebung1_vorlage/node_modules/etag/README.md" new file mode 100644 index 0000000..09c2169 --- /dev/null +++ "b/Christian/\303\234bung 1/uebung1_vorlage/node_modules/etag/README.md" @@ -0,0 +1,159 @@ +# etag + +[![NPM Version][npm-image]][npm-url] +[![NPM Downloads][downloads-image]][downloads-url] +[![Node.js Version][node-version-image]][node-version-url] +[![Build Status][travis-image]][travis-url] +[![Test Coverage][coveralls-image]][coveralls-url] + +Create simple HTTP ETags + +This module generates HTTP ETags (as defined in RFC 7232) for use in +HTTP responses. + +## Installation + +This is a [Node.js](https://nodejs.org/en/) module available through the +[npm registry](https://www.npmjs.com/). Installation is done using the +[`npm install` command](https://docs.npmjs.com/getting-started/installing-npm-packages-locally): + +```sh +$ npm install etag +``` + +## API + + + +```js +var etag = require('etag') +``` + +### etag(entity, [options]) + +Generate a strong ETag for the given entity. This should be the complete +body of the entity. Strings, `Buffer`s, and `fs.Stats` are accepted. By +default, a strong ETag is generated except for `fs.Stats`, which will +generate a weak ETag (this can be overwritten by `options.weak`). + + + +```js +res.setHeader('ETag', etag(body)) +``` + +#### Options + +`etag` accepts these properties in the options object. + +##### weak + +Specifies if the generated ETag will include the weak validator mark (that +is, the leading `W/`). The actual entity tag is the same. The default value +is `false`, unless the `entity` is `fs.Stats`, in which case it is `true`. + +## Testing + +```sh +$ npm test +``` + +## Benchmark + +```bash +$ npm run-script bench + +> etag@1.8.1 bench nodejs-etag +> node benchmark/index.js + + http_parser@2.7.0 + node@6.11.1 + v8@5.1.281.103 + uv@1.11.0 + zlib@1.2.11 + ares@1.10.1-DEV + icu@58.2 + modules@48 + openssl@1.0.2k + +> node benchmark/body0-100b.js + + 100B body + + 4 tests completed. + + buffer - strong x 258,647 ops/sec ±1.07% (180 runs sampled) + buffer - weak x 263,812 ops/sec ±0.61% (184 runs sampled) + string - strong x 259,955 ops/sec ±1.19% (185 runs sampled) + string - weak x 264,356 ops/sec ±1.09% (184 runs sampled) + +> node benchmark/body1-1kb.js + + 1KB body + + 4 tests completed. + + buffer - strong x 189,018 ops/sec ±1.12% (182 runs sampled) + buffer - weak x 190,586 ops/sec ±0.81% (186 runs sampled) + string - strong x 144,272 ops/sec ±0.96% (188 runs sampled) + string - weak x 145,380 ops/sec ±1.43% (187 runs sampled) + +> node benchmark/body2-5kb.js + + 5KB body + + 4 tests completed. + + buffer - strong x 92,435 ops/sec ±0.42% (188 runs sampled) + buffer - weak x 92,373 ops/sec ±0.58% (189 runs sampled) + string - strong x 48,850 ops/sec ±0.56% (186 runs sampled) + string - weak x 49,380 ops/sec ±0.56% (190 runs sampled) + +> node benchmark/body3-10kb.js + + 10KB body + + 4 tests completed. + + buffer - strong x 55,989 ops/sec ±0.93% (188 runs sampled) + buffer - weak x 56,148 ops/sec ±0.55% (190 runs sampled) + string - strong x 27,345 ops/sec ±0.43% (188 runs sampled) + string - weak x 27,496 ops/sec ±0.45% (190 runs sampled) + +> node benchmark/body4-100kb.js + + 100KB body + + 4 tests completed. + + buffer - strong x 7,083 ops/sec ±0.22% (190 runs sampled) + buffer - weak x 7,115 ops/sec ±0.26% (191 runs sampled) + string - strong x 3,068 ops/sec ±0.34% (190 runs sampled) + string - weak x 3,096 ops/sec ±0.35% (190 runs sampled) + +> node benchmark/stats.js + + stat + + 4 tests completed. + + real - strong x 871,642 ops/sec ±0.34% (189 runs sampled) + real - weak x 867,613 ops/sec ±0.39% (190 runs sampled) + fake - strong x 401,051 ops/sec ±0.40% (189 runs sampled) + fake - weak x 400,100 ops/sec ±0.47% (188 runs sampled) +``` + +## License + +[MIT](LICENSE) + +[npm-image]: https://img.shields.io/npm/v/etag.svg +[npm-url]: https://npmjs.org/package/etag +[node-version-image]: https://img.shields.io/node/v/etag.svg +[node-version-url]: https://nodejs.org/en/download/ +[travis-image]: https://img.shields.io/travis/jshttp/etag/master.svg +[travis-url]: https://travis-ci.org/jshttp/etag +[coveralls-image]: https://img.shields.io/coveralls/jshttp/etag/master.svg +[coveralls-url]: https://coveralls.io/r/jshttp/etag?branch=master +[downloads-image]: https://img.shields.io/npm/dm/etag.svg +[downloads-url]: https://npmjs.org/package/etag diff --git "a/Christian/\303\234bung 1/uebung1_vorlage/node_modules/etag/index.js" "b/Christian/\303\234bung 1/uebung1_vorlage/node_modules/etag/index.js" new file mode 100644 index 0000000..2a585c9 --- /dev/null +++ "b/Christian/\303\234bung 1/uebung1_vorlage/node_modules/etag/index.js" @@ -0,0 +1,131 @@ +/*! + * etag + * Copyright(c) 2014-2016 Douglas Christopher Wilson + * MIT Licensed + */ + +'use strict' + +/** + * Module exports. + * @public + */ + +module.exports = etag + +/** + * Module dependencies. + * @private + */ + +var crypto = require('crypto') +var Stats = require('fs').Stats + +/** + * Module variables. + * @private + */ + +var toString = Object.prototype.toString + +/** + * Generate an entity tag. + * + * @param {Buffer|string} entity + * @return {string} + * @private + */ + +function entitytag (entity) { + if (entity.length === 0) { + // fast-path empty + return '"0-2jmj7l5rSw0yVb/vlWAYkK/YBwk"' + } + + // compute hash of entity + var hash = crypto + .createHash('sha1') + .update(entity, 'utf8') + .digest('base64') + .substring(0, 27) + + // compute length of entity + var len = typeof entity === 'string' + ? Buffer.byteLength(entity, 'utf8') + : entity.length + + return '"' + len.toString(16) + '-' + hash + '"' +} + +/** + * Create a simple ETag. + * + * @param {string|Buffer|Stats} entity + * @param {object} [options] + * @param {boolean} [options.weak] + * @return {String} + * @public + */ + +function etag (entity, options) { + if (entity == null) { + throw new TypeError('argument entity is required') + } + + // support fs.Stats object + var isStats = isstats(entity) + var weak = options && typeof options.weak === 'boolean' + ? options.weak + : isStats + + // validate argument + if (!isStats && typeof entity !== 'string' && !Buffer.isBuffer(entity)) { + throw new TypeError('argument entity must be string, Buffer, or fs.Stats') + } + + // generate entity tag + var tag = isStats + ? stattag(entity) + : entitytag(entity) + + return weak + ? 'W/' + tag + : tag +} + +/** + * Determine if object is a Stats object. + * + * @param {object} obj + * @return {boolean} + * @api private + */ + +function isstats (obj) { + // genuine fs.Stats + if (typeof Stats === 'function' && obj instanceof Stats) { + return true + } + + // quack quack + return obj && typeof obj === 'object' && + 'ctime' in obj && toString.call(obj.ctime) === '[object Date]' && + 'mtime' in obj && toString.call(obj.mtime) === '[object Date]' && + 'ino' in obj && typeof obj.ino === 'number' && + 'size' in obj && typeof obj.size === 'number' +} + +/** + * Generate a tag for a stat. + * + * @param {object} stat + * @return {string} + * @private + */ + +function stattag (stat) { + var mtime = stat.mtime.getTime().toString(16) + var size = stat.size.toString(16) + + return '"' + size + '-' + mtime + '"' +} diff --git "a/Christian/\303\234bung 1/uebung1_vorlage/node_modules/etag/package.json" "b/Christian/\303\234bung 1/uebung1_vorlage/node_modules/etag/package.json" new file mode 100644 index 0000000..ee12b4b --- /dev/null +++ "b/Christian/\303\234bung 1/uebung1_vorlage/node_modules/etag/package.json" @@ -0,0 +1,122 @@ +{ + "_args": [ + [ + { + "raw": "etag@~1.8.1", + "scope": null, + "escapedName": "etag", + "name": "etag", + "rawSpec": "~1.8.1", + "spec": ">=1.8.1 <1.9.0", + "type": "range" + }, + "/Users/samuel/Dropbox/Webbasierte Programmierung (IT1000)/SS18/WebP2/Uebungen/ubung1/loesung/node_modules/express" + ] + ], + "_from": "etag@>=1.8.1 <1.9.0", + "_id": "etag@1.8.1", + "_inCache": true, + "_location": "/etag", + "_nodeVersion": "6.11.1", + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/etag-1.8.1.tgz_1505270623443_0.24458415526896715" + }, + "_npmUser": { + "name": "dougwilson", + "email": "doug@somethingdoug.com" + }, + "_npmVersion": "3.10.10", + "_phantomChildren": {}, + "_requested": { + "raw": "etag@~1.8.1", + "scope": null, + "escapedName": "etag", + "name": "etag", + "rawSpec": "~1.8.1", + "spec": ">=1.8.1 <1.9.0", + "type": "range" + }, + "_requiredBy": [ + "/express", + "/send" + ], + "_resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "_shasum": "41ae2eeb65efa62268aebfea83ac7d79299b0887", + "_shrinkwrap": null, + "_spec": "etag@~1.8.1", + "_where": "/Users/samuel/Dropbox/Webbasierte Programmierung (IT1000)/SS18/WebP2/Uebungen/ubung1/loesung/node_modules/express", + "bugs": { + "url": "https://github.com/jshttp/etag/issues" + }, + "contributors": [ + { + "name": "Douglas Christopher Wilson", + "email": "doug@somethingdoug.com" + }, + { + "name": "David Björklund", + "email": "david.bjorklund@gmail.com" + } + ], + "dependencies": {}, + "description": "Create simple HTTP ETags", + "devDependencies": { + "beautify-benchmark": "0.2.4", + "benchmark": "2.1.4", + "eslint": "3.19.0", + "eslint-config-standard": "10.2.1", + "eslint-plugin-import": "2.7.0", + "eslint-plugin-markdown": "1.0.0-beta.6", + "eslint-plugin-node": "5.1.1", + "eslint-plugin-promise": "3.5.0", + "eslint-plugin-standard": "3.0.1", + "istanbul": "0.4.5", + "mocha": "1.21.5", + "safe-buffer": "5.1.1", + "seedrandom": "2.4.3" + }, + "directories": {}, + "dist": { + "shasum": "41ae2eeb65efa62268aebfea83ac7d79299b0887", + "tarball": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz" + }, + "engines": { + "node": ">= 0.6" + }, + "files": [ + "LICENSE", + "HISTORY.md", + "README.md", + "index.js" + ], + "gitHead": "9b1e3e41df31cda4080833c187120b91a7ce8327", + "homepage": "https://github.com/jshttp/etag#readme", + "keywords": [ + "etag", + "http", + "res" + ], + "license": "MIT", + "maintainers": [ + { + "name": "dougwilson", + "email": "doug@somethingdoug.com" + } + ], + "name": "etag", + "optionalDependencies": {}, + "readme": "ERROR: No README data found!", + "repository": { + "type": "git", + "url": "git+https://github.com/jshttp/etag.git" + }, + "scripts": { + "bench": "node benchmark/index.js", + "lint": "eslint --plugin markdown --ext js,md .", + "test": "mocha --reporter spec --bail --check-leaks test/", + "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --reporter dot --check-leaks test/", + "test-travis": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --reporter spec --check-leaks test/" + }, + "version": "1.8.1" +} diff --git "a/Christian/\303\234bung 1/uebung1_vorlage/node_modules/express/History.md" "b/Christian/\303\234bung 1/uebung1_vorlage/node_modules/express/History.md" new file mode 100644 index 0000000..e02fcd5 --- /dev/null +++ "b/Christian/\303\234bung 1/uebung1_vorlage/node_modules/express/History.md" @@ -0,0 +1,3402 @@ +4.16.3 / 2018-03-12 +=================== + + * deps: accepts@~1.3.5 + - deps: mime-types@~2.1.18 + * deps: depd@~1.1.2 + - perf: remove argument reassignment + * deps: encodeurl@~1.0.2 + - Fix encoding `%` as last character + * deps: finalhandler@1.1.1 + - Fix 404 output for bad / missing pathnames + - deps: encodeurl@~1.0.2 + - deps: statuses@~1.4.0 + * deps: proxy-addr@~2.0.3 + - deps: ipaddr.js@1.6.0 + * deps: send@0.16.2 + - Fix incorrect end tag in default error & redirects + - deps: depd@~1.1.2 + - deps: encodeurl@~1.0.2 + - deps: statuses@~1.4.0 + * deps: serve-static@1.13.2 + - Fix incorrect end tag in redirects + - deps: encodeurl@~1.0.2 + - deps: send@0.16.2 + * deps: statuses@~1.4.0 + * deps: type-is@~1.6.16 + - deps: mime-types@~2.1.18 + +4.16.2 / 2017-10-09 +=================== + + * Fix `TypeError` in `res.send` when given `Buffer` and `ETag` header set + * perf: skip parsing of entire `X-Forwarded-Proto` header + +4.16.1 / 2017-09-29 +=================== + + * deps: send@0.16.1 + * deps: serve-static@1.13.1 + - Fix regression when `root` is incorrectly set to a file + - deps: send@0.16.1 + +4.16.0 / 2017-09-28 +=================== + + * Add `"json escape"` setting for `res.json` and `res.jsonp` + * Add `express.json` and `express.urlencoded` to parse bodies + * Add `options` argument to `res.download` + * Improve error message when autoloading invalid view engine + * Improve error messages when non-function provided as middleware + * Skip `Buffer` encoding when not generating ETag for small response + * Use `safe-buffer` for improved Buffer API + * deps: accepts@~1.3.4 + - deps: mime-types@~2.1.16 + * deps: content-type@~1.0.4 + - perf: remove argument reassignment + - perf: skip parameter parsing when no parameters + * deps: etag@~1.8.1 + - perf: replace regular expression with substring + * deps: finalhandler@1.1.0 + - Use `res.headersSent` when available + * deps: parseurl@~1.3.2 + - perf: reduce overhead for full URLs + - perf: unroll the "fast-path" `RegExp` + * deps: proxy-addr@~2.0.2 + - Fix trimming leading / trailing OWS in `X-Forwarded-For` + - deps: forwarded@~0.1.2 + - deps: ipaddr.js@1.5.2 + - perf: reduce overhead when no `X-Forwarded-For` header + * deps: qs@6.5.1 + - Fix parsing & compacting very deep objects + * deps: send@0.16.0 + - Add 70 new types for file extensions + - Add `immutable` option + - Fix missing `` in default error & redirects + - Set charset as "UTF-8" for .js and .json + - Use instance methods on steam to check for listeners + - deps: mime@1.4.1 + - perf: improve path validation speed + * deps: serve-static@1.13.0 + - Add 70 new types for file extensions + - Add `immutable` option + - Set charset as "UTF-8" for .js and .json + - deps: send@0.16.0 + * deps: setprototypeof@1.1.0 + * deps: utils-merge@1.0.1 + * deps: vary@~1.1.2 + - perf: improve header token parsing speed + * perf: re-use options object when generating ETags + * perf: remove dead `.charset` set in `res.jsonp` + +4.15.5 / 2017-09-24 +=================== + + * deps: debug@2.6.9 + * deps: finalhandler@~1.0.6 + - deps: debug@2.6.9 + - deps: parseurl@~1.3.2 + * deps: fresh@0.5.2 + - Fix handling of modified headers with invalid dates + - perf: improve ETag match loop + - perf: improve `If-None-Match` token parsing + * deps: send@0.15.6 + - Fix handling of modified headers with invalid dates + - deps: debug@2.6.9 + - deps: etag@~1.8.1 + - deps: fresh@0.5.2 + - perf: improve `If-Match` token parsing + * deps: serve-static@1.12.6 + - deps: parseurl@~1.3.2 + - deps: send@0.15.6 + - perf: improve slash collapsing + +4.15.4 / 2017-08-06 +=================== + + * deps: debug@2.6.8 + * deps: depd@~1.1.1 + - Remove unnecessary `Buffer` loading + * deps: finalhandler@~1.0.4 + - deps: debug@2.6.8 + * deps: proxy-addr@~1.1.5 + - Fix array argument being altered + - deps: ipaddr.js@1.4.0 + * deps: qs@6.5.0 + * deps: send@0.15.4 + - deps: debug@2.6.8 + - deps: depd@~1.1.1 + - deps: http-errors@~1.6.2 + * deps: serve-static@1.12.4 + - deps: send@0.15.4 + +4.15.3 / 2017-05-16 +=================== + + * Fix error when `res.set` cannot add charset to `Content-Type` + * deps: debug@2.6.7 + - Fix `DEBUG_MAX_ARRAY_LENGTH` + - deps: ms@2.0.0 + * deps: finalhandler@~1.0.3 + - Fix missing `` in HTML document + - deps: debug@2.6.7 + * deps: proxy-addr@~1.1.4 + - deps: ipaddr.js@1.3.0 + * deps: send@0.15.3 + - deps: debug@2.6.7 + - deps: ms@2.0.0 + * deps: serve-static@1.12.3 + - deps: send@0.15.3 + * deps: type-is@~1.6.15 + - deps: mime-types@~2.1.15 + * deps: vary@~1.1.1 + - perf: hoist regular expression + +4.15.2 / 2017-03-06 +=================== + + * deps: qs@6.4.0 + - Fix regression parsing keys starting with `[` + +4.15.1 / 2017-03-05 +=================== + + * deps: send@0.15.1 + - Fix issue when `Date.parse` does not return `NaN` on invalid date + - Fix strict violation in broken environments + * deps: serve-static@1.12.1 + - Fix issue when `Date.parse` does not return `NaN` on invalid date + - deps: send@0.15.1 + +4.15.0 / 2017-03-01 +=================== + + * Add debug message when loading view engine + * Add `next("router")` to exit from router + * Fix case where `router.use` skipped requests routes did not + * Remove usage of `res._headers` private field + - Improves compatibility with Node.js 8 nightly + * Skip routing when `req.url` is not set + * Use `%o` in path debug to tell types apart + * Use `Object.create` to setup request & response prototypes + * Use `setprototypeof` module to replace `__proto__` setting + * Use `statuses` instead of `http` module for status messages + * deps: debug@2.6.1 + - Allow colors in workers + - Deprecated `DEBUG_FD` environment variable set to `3` or higher + - Fix error when running under React Native + - Use same color for same namespace + - deps: ms@0.7.2 + * deps: etag@~1.8.0 + - Use SHA1 instead of MD5 for ETag hashing + - Works with FIPS 140-2 OpenSSL configuration + * deps: finalhandler@~1.0.0 + - Fix exception when `err` cannot be converted to a string + - Fully URL-encode the pathname in the 404 + - Only include the pathname in the 404 message + - Send complete HTML document + - Set `Content-Security-Policy: default-src 'self'` header + - deps: debug@2.6.1 + * deps: fresh@0.5.0 + - Fix false detection of `no-cache` request directive + - Fix incorrect result when `If-None-Match` has both `*` and ETags + - Fix weak `ETag` matching to match spec + - perf: delay reading header values until needed + - perf: enable strict mode + - perf: hoist regular expressions + - perf: remove duplicate conditional + - perf: remove unnecessary boolean coercions + - perf: skip checking modified time if ETag check failed + - perf: skip parsing `If-None-Match` when no `ETag` header + - perf: use `Date.parse` instead of `new Date` + * deps: qs@6.3.1 + - Fix array parsing from skipping empty values + - Fix compacting nested arrays + * deps: send@0.15.0 + - Fix false detection of `no-cache` request directive + - Fix incorrect result when `If-None-Match` has both `*` and ETags + - Fix weak `ETag` matching to match spec + - Remove usage of `res._headers` private field + - Support `If-Match` and `If-Unmodified-Since` headers + - Use `res.getHeaderNames()` when available + - Use `res.headersSent` when available + - deps: debug@2.6.1 + - deps: etag@~1.8.0 + - deps: fresh@0.5.0 + - deps: http-errors@~1.6.1 + * deps: serve-static@1.12.0 + - Fix false detection of `no-cache` request directive + - Fix incorrect result when `If-None-Match` has both `*` and ETags + - Fix weak `ETag` matching to match spec + - Remove usage of `res._headers` private field + - Send complete HTML document in redirect response + - Set default CSP header in redirect response + - Support `If-Match` and `If-Unmodified-Since` headers + - Use `res.getHeaderNames()` when available + - Use `res.headersSent` when available + - deps: send@0.15.0 + * perf: add fast match path for `*` route + * perf: improve `req.ips` performance + +4.14.1 / 2017-01-28 +=================== + + * deps: content-disposition@0.5.2 + * deps: finalhandler@0.5.1 + - Fix exception when `err.headers` is not an object + - deps: statuses@~1.3.1 + - perf: hoist regular expressions + - perf: remove duplicate validation path + * deps: proxy-addr@~1.1.3 + - deps: ipaddr.js@1.2.0 + * deps: send@0.14.2 + - deps: http-errors@~1.5.1 + - deps: ms@0.7.2 + - deps: statuses@~1.3.1 + * deps: serve-static@~1.11.2 + - deps: send@0.14.2 + * deps: type-is@~1.6.14 + - deps: mime-types@~2.1.13 + +4.14.0 / 2016-06-16 +=================== + + * Add `acceptRanges` option to `res.sendFile`/`res.sendfile` + * Add `cacheControl` option to `res.sendFile`/`res.sendfile` + * Add `options` argument to `req.range` + - Includes the `combine` option + * Encode URL in `res.location`/`res.redirect` if not already encoded + * Fix some redirect handling in `res.sendFile`/`res.sendfile` + * Fix Windows absolute path check using forward slashes + * Improve error with invalid arguments to `req.get()` + * Improve performance for `res.json`/`res.jsonp` in most cases + * Improve `Range` header handling in `res.sendFile`/`res.sendfile` + * deps: accepts@~1.3.3 + - Fix including type extensions in parameters in `Accept` parsing + - Fix parsing `Accept` parameters with quoted equals + - Fix parsing `Accept` parameters with quoted semicolons + - Many performance improvments + - deps: mime-types@~2.1.11 + - deps: negotiator@0.6.1 + * deps: content-type@~1.0.2 + - perf: enable strict mode + * deps: cookie@0.3.1 + - Add `sameSite` option + - Fix cookie `Max-Age` to never be a floating point number + - Improve error message when `encode` is not a function + - Improve error message when `expires` is not a `Date` + - Throw better error for invalid argument to parse + - Throw on invalid values provided to `serialize` + - perf: enable strict mode + - perf: hoist regular expression + - perf: use for loop in parse + - perf: use string concatination for serialization + * deps: finalhandler@0.5.0 + - Change invalid or non-numeric status code to 500 + - Overwrite status message to match set status code + - Prefer `err.statusCode` if `err.status` is invalid + - Set response headers from `err.headers` object + - Use `statuses` instead of `http` module for status messages + * deps: proxy-addr@~1.1.2 + - Fix accepting various invalid netmasks + - Fix IPv6-mapped IPv4 validation edge cases + - IPv4 netmasks must be contingous + - IPv6 addresses cannot be used as a netmask + - deps: ipaddr.js@1.1.1 + * deps: qs@6.2.0 + - Add `decoder` option in `parse` function + * deps: range-parser@~1.2.0 + - Add `combine` option to combine overlapping ranges + - Fix incorrectly returning -1 when there is at least one valid range + - perf: remove internal function + * deps: send@0.14.1 + - Add `acceptRanges` option + - Add `cacheControl` option + - Attempt to combine multiple ranges into single range + - Correctly inherit from `Stream` class + - Fix `Content-Range` header in 416 responses when using `start`/`end` options + - Fix `Content-Range` header missing from default 416 responses + - Fix redirect error when `path` contains raw non-URL characters + - Fix redirect when `path` starts with multiple forward slashes + - Ignore non-byte `Range` headers + - deps: http-errors@~1.5.0 + - deps: range-parser@~1.2.0 + - deps: statuses@~1.3.0 + - perf: remove argument reassignment + * deps: serve-static@~1.11.1 + - Add `acceptRanges` option + - Add `cacheControl` option + - Attempt to combine multiple ranges into single range + - Fix redirect error when `req.url` contains raw non-URL characters + - Ignore non-byte `Range` headers + - Use status code 301 for redirects + - deps: send@0.14.1 + * deps: type-is@~1.6.13 + - Fix type error when given invalid type to match against + - deps: mime-types@~2.1.11 + * deps: vary@~1.1.0 + - Only accept valid field names in the `field` argument + * perf: use strict equality when possible + +4.13.4 / 2016-01-21 +=================== + + * deps: content-disposition@0.5.1 + - perf: enable strict mode + * deps: cookie@0.1.5 + - Throw on invalid values provided to `serialize` + * deps: depd@~1.1.0 + - Support web browser loading + - perf: enable strict mode + * deps: escape-html@~1.0.3 + - perf: enable strict mode + - perf: optimize string replacement + - perf: use faster string coercion + * deps: finalhandler@0.4.1 + - deps: escape-html@~1.0.3 + * deps: merge-descriptors@1.0.1 + - perf: enable strict mode + * deps: methods@~1.1.2 + - perf: enable strict mode + * deps: parseurl@~1.3.1 + - perf: enable strict mode + * deps: proxy-addr@~1.0.10 + - deps: ipaddr.js@1.0.5 + - perf: enable strict mode + * deps: range-parser@~1.0.3 + - perf: enable strict mode + * deps: send@0.13.1 + - deps: depd@~1.1.0 + - deps: destroy@~1.0.4 + - deps: escape-html@~1.0.3 + - deps: range-parser@~1.0.3 + * deps: serve-static@~1.10.2 + - deps: escape-html@~1.0.3 + - deps: parseurl@~1.3.0 + - deps: send@0.13.1 + +4.13.3 / 2015-08-02 +=================== + + * Fix infinite loop condition using `mergeParams: true` + * Fix inner numeric indices incorrectly altering parent `req.params` + +4.13.2 / 2015-07-31 +=================== + + * deps: accepts@~1.2.12 + - deps: mime-types@~2.1.4 + * deps: array-flatten@1.1.1 + - perf: enable strict mode + * deps: path-to-regexp@0.1.7 + - Fix regression with escaped round brackets and matching groups + * deps: type-is@~1.6.6 + - deps: mime-types@~2.1.4 + +4.13.1 / 2015-07-05 +=================== + + * deps: accepts@~1.2.10 + - deps: mime-types@~2.1.2 + * deps: qs@4.0.0 + - Fix dropping parameters like `hasOwnProperty` + - Fix various parsing edge cases + * deps: type-is@~1.6.4 + - deps: mime-types@~2.1.2 + - perf: enable strict mode + - perf: remove argument reassignment + +4.13.0 / 2015-06-20 +=================== + + * Add settings to debug output + * Fix `res.format` error when only `default` provided + * Fix issue where `next('route')` in `app.param` would incorrectly skip values + * Fix hiding platform issues with `decodeURIComponent` + - Only `URIError`s are a 400 + * Fix using `*` before params in routes + * Fix using capture groups before params in routes + * Simplify `res.cookie` to call `res.append` + * Use `array-flatten` module for flattening arrays + * deps: accepts@~1.2.9 + - deps: mime-types@~2.1.1 + - perf: avoid argument reassignment & argument slice + - perf: avoid negotiator recursive construction + - perf: enable strict mode + - perf: remove unnecessary bitwise operator + * deps: cookie@0.1.3 + - perf: deduce the scope of try-catch deopt + - perf: remove argument reassignments + * deps: escape-html@1.0.2 + * deps: etag@~1.7.0 + - Always include entity length in ETags for hash length extensions + - Generate non-Stats ETags using MD5 only (no longer CRC32) + - Improve stat performance by removing hashing + - Improve support for JXcore + - Remove base64 padding in ETags to shorten + - Support "fake" stats objects in environments without fs + - Use MD5 instead of MD4 in weak ETags over 1KB + * deps: finalhandler@0.4.0 + - Fix a false-positive when unpiping in Node.js 0.8 + - Support `statusCode` property on `Error` objects + - Use `unpipe` module for unpiping requests + - deps: escape-html@1.0.2 + - deps: on-finished@~2.3.0 + - perf: enable strict mode + - perf: remove argument reassignment + * deps: fresh@0.3.0 + - Add weak `ETag` matching support + * deps: on-finished@~2.3.0 + - Add defined behavior for HTTP `CONNECT` requests + - Add defined behavior for HTTP `Upgrade` requests + - deps: ee-first@1.1.1 + * deps: path-to-regexp@0.1.6 + * deps: send@0.13.0 + - Allow Node.js HTTP server to set `Date` response header + - Fix incorrectly removing `Content-Location` on 304 response + - Improve the default redirect response headers + - Send appropriate headers on default error response + - Use `http-errors` for standard emitted errors + - Use `statuses` instead of `http` module for status messages + - deps: escape-html@1.0.2 + - deps: etag@~1.7.0 + - deps: fresh@0.3.0 + - deps: on-finished@~2.3.0 + - perf: enable strict mode + - perf: remove unnecessary array allocations + * deps: serve-static@~1.10.0 + - Add `fallthrough` option + - Fix reading options from options prototype + - Improve the default redirect response headers + - Malformed URLs now `next()` instead of 400 + - deps: escape-html@1.0.2 + - deps: send@0.13.0 + - perf: enable strict mode + - perf: remove argument reassignment + * deps: type-is@~1.6.3 + - deps: mime-types@~2.1.1 + - perf: reduce try block size + - perf: remove bitwise operations + * perf: enable strict mode + * perf: isolate `app.render` try block + * perf: remove argument reassignments in application + * perf: remove argument reassignments in request prototype + * perf: remove argument reassignments in response prototype + * perf: remove argument reassignments in routing + * perf: remove argument reassignments in `View` + * perf: skip attempting to decode zero length string + * perf: use saved reference to `http.STATUS_CODES` + +4.12.4 / 2015-05-17 +=================== + + * deps: accepts@~1.2.7 + - deps: mime-types@~2.0.11 + - deps: negotiator@0.5.3 + * deps: debug@~2.2.0 + - deps: ms@0.7.1 + * deps: depd@~1.0.1 + * deps: etag@~1.6.0 + - Improve support for JXcore + - Support "fake" stats objects in environments without `fs` + * deps: finalhandler@0.3.6 + - deps: debug@~2.2.0 + - deps: on-finished@~2.2.1 + * deps: on-finished@~2.2.1 + - Fix `isFinished(req)` when data buffered + * deps: proxy-addr@~1.0.8 + - deps: ipaddr.js@1.0.1 + * deps: qs@2.4.2 + - Fix allowing parameters like `constructor` + * deps: send@0.12.3 + - deps: debug@~2.2.0 + - deps: depd@~1.0.1 + - deps: etag@~1.6.0 + - deps: ms@0.7.1 + - deps: on-finished@~2.2.1 + * deps: serve-static@~1.9.3 + - deps: send@0.12.3 + * deps: type-is@~1.6.2 + - deps: mime-types@~2.0.11 + +4.12.3 / 2015-03-17 +=================== + + * deps: accepts@~1.2.5 + - deps: mime-types@~2.0.10 + * deps: debug@~2.1.3 + - Fix high intensity foreground color for bold + - deps: ms@0.7.0 + * deps: finalhandler@0.3.4 + - deps: debug@~2.1.3 + * deps: proxy-addr@~1.0.7 + - deps: ipaddr.js@0.1.9 + * deps: qs@2.4.1 + - Fix error when parameter `hasOwnProperty` is present + * deps: send@0.12.2 + - Throw errors early for invalid `extensions` or `index` options + - deps: debug@~2.1.3 + * deps: serve-static@~1.9.2 + - deps: send@0.12.2 + * deps: type-is@~1.6.1 + - deps: mime-types@~2.0.10 + +4.12.2 / 2015-03-02 +=================== + + * Fix regression where `"Request aborted"` is logged using `res.sendFile` + +4.12.1 / 2015-03-01 +=================== + + * Fix constructing application with non-configurable prototype properties + * Fix `ECONNRESET` errors from `res.sendFile` usage + * Fix `req.host` when using "trust proxy" hops count + * Fix `req.protocol`/`req.secure` when using "trust proxy" hops count + * Fix wrong `code` on aborted connections from `res.sendFile` + * deps: merge-descriptors@1.0.0 + +4.12.0 / 2015-02-23 +=================== + + * Fix `"trust proxy"` setting to inherit when app is mounted + * Generate `ETag`s for all request responses + - No longer restricted to only responses for `GET` and `HEAD` requests + * Use `content-type` to parse `Content-Type` headers + * deps: accepts@~1.2.4 + - Fix preference sorting to be stable for long acceptable lists + - deps: mime-types@~2.0.9 + - deps: negotiator@0.5.1 + * deps: cookie-signature@1.0.6 + * deps: send@0.12.1 + - Always read the stat size from the file + - Fix mutating passed-in `options` + - deps: mime@1.3.4 + * deps: serve-static@~1.9.1 + - deps: send@0.12.1 + * deps: type-is@~1.6.0 + - fix argument reassignment + - fix false-positives in `hasBody` `Transfer-Encoding` check + - support wildcard for both type and subtype (`*/*`) + - deps: mime-types@~2.0.9 + +4.11.2 / 2015-02-01 +=================== + + * Fix `res.redirect` double-calling `res.end` for `HEAD` requests + * deps: accepts@~1.2.3 + - deps: mime-types@~2.0.8 + * deps: proxy-addr@~1.0.6 + - deps: ipaddr.js@0.1.8 + * deps: type-is@~1.5.6 + - deps: mime-types@~2.0.8 + +4.11.1 / 2015-01-20 +=================== + + * deps: send@0.11.1 + - Fix root path disclosure + * deps: serve-static@~1.8.1 + - Fix redirect loop in Node.js 0.11.14 + - Fix root path disclosure + - deps: send@0.11.1 + +4.11.0 / 2015-01-13 +=================== + + * Add `res.append(field, val)` to append headers + * Deprecate leading `:` in `name` for `app.param(name, fn)` + * Deprecate `req.param()` -- use `req.params`, `req.body`, or `req.query` instead + * Deprecate `app.param(fn)` + * Fix `OPTIONS` responses to include the `HEAD` method properly + * Fix `res.sendFile` not always detecting aborted connection + * Match routes iteratively to prevent stack overflows + * deps: accepts@~1.2.2 + - deps: mime-types@~2.0.7 + - deps: negotiator@0.5.0 + * deps: send@0.11.0 + - deps: debug@~2.1.1 + - deps: etag@~1.5.1 + - deps: ms@0.7.0 + - deps: on-finished@~2.2.0 + * deps: serve-static@~1.8.0 + - deps: send@0.11.0 + +4.10.8 / 2015-01-13 +=================== + + * Fix crash from error within `OPTIONS` response handler + * deps: proxy-addr@~1.0.5 + - deps: ipaddr.js@0.1.6 + +4.10.7 / 2015-01-04 +=================== + + * Fix `Allow` header for `OPTIONS` to not contain duplicate methods + * Fix incorrect "Request aborted" for `res.sendFile` when `HEAD` or 304 + * deps: debug@~2.1.1 + * deps: finalhandler@0.3.3 + - deps: debug@~2.1.1 + - deps: on-finished@~2.2.0 + * deps: methods@~1.1.1 + * deps: on-finished@~2.2.0 + * deps: serve-static@~1.7.2 + - Fix potential open redirect when mounted at root + * deps: type-is@~1.5.5 + - deps: mime-types@~2.0.7 + +4.10.6 / 2014-12-12 +=================== + + * Fix exception in `req.fresh`/`req.stale` without response headers + +4.10.5 / 2014-12-10 +=================== + + * Fix `res.send` double-calling `res.end` for `HEAD` requests + * deps: accepts@~1.1.4 + - deps: mime-types@~2.0.4 + * deps: type-is@~1.5.4 + - deps: mime-types@~2.0.4 + +4.10.4 / 2014-11-24 +=================== + + * Fix `res.sendfile` logging standard write errors + +4.10.3 / 2014-11-23 +=================== + + * Fix `res.sendFile` logging standard write errors + * deps: etag@~1.5.1 + * deps: proxy-addr@~1.0.4 + - deps: ipaddr.js@0.1.5 + * deps: qs@2.3.3 + - Fix `arrayLimit` behavior + +4.10.2 / 2014-11-09 +=================== + + * Correctly invoke async router callback asynchronously + * deps: accepts@~1.1.3 + - deps: mime-types@~2.0.3 + * deps: type-is@~1.5.3 + - deps: mime-types@~2.0.3 + +4.10.1 / 2014-10-28 +=================== + + * Fix handling of URLs containing `://` in the path + * deps: qs@2.3.2 + - Fix parsing of mixed objects and values + +4.10.0 / 2014-10-23 +=================== + + * Add support for `app.set('views', array)` + - Views are looked up in sequence in array of directories + * Fix `res.send(status)` to mention `res.sendStatus(status)` + * Fix handling of invalid empty URLs + * Use `content-disposition` module for `res.attachment`/`res.download` + - Sends standards-compliant `Content-Disposition` header + - Full Unicode support + * Use `path.resolve` in view lookup + * deps: debug@~2.1.0 + - Implement `DEBUG_FD` env variable support + * deps: depd@~1.0.0 + * deps: etag@~1.5.0 + - Improve string performance + - Slightly improve speed for weak ETags over 1KB + * deps: finalhandler@0.3.2 + - Terminate in progress response only on error + - Use `on-finished` to determine request status + - deps: debug@~2.1.0 + - deps: on-finished@~2.1.1 + * deps: on-finished@~2.1.1 + - Fix handling of pipelined requests + * deps: qs@2.3.0 + - Fix parsing of mixed implicit and explicit arrays + * deps: send@0.10.1 + - deps: debug@~2.1.0 + - deps: depd@~1.0.0 + - deps: etag@~1.5.0 + - deps: on-finished@~2.1.1 + * deps: serve-static@~1.7.1 + - deps: send@0.10.1 + +4.9.8 / 2014-10-17 +================== + + * Fix `res.redirect` body when redirect status specified + * deps: accepts@~1.1.2 + - Fix error when media type has invalid parameter + - deps: negotiator@0.4.9 + +4.9.7 / 2014-10-10 +================== + + * Fix using same param name in array of paths + +4.9.6 / 2014-10-08 +================== + + * deps: accepts@~1.1.1 + - deps: mime-types@~2.0.2 + - deps: negotiator@0.4.8 + * deps: serve-static@~1.6.4 + - Fix redirect loop when index file serving disabled + * deps: type-is@~1.5.2 + - deps: mime-types@~2.0.2 + +4.9.5 / 2014-09-24 +================== + + * deps: etag@~1.4.0 + * deps: proxy-addr@~1.0.3 + - Use `forwarded` npm module + * deps: send@0.9.3 + - deps: etag@~1.4.0 + * deps: serve-static@~1.6.3 + - deps: send@0.9.3 + +4.9.4 / 2014-09-19 +================== + + * deps: qs@2.2.4 + - Fix issue with object keys starting with numbers truncated + +4.9.3 / 2014-09-18 +================== + + * deps: proxy-addr@~1.0.2 + - Fix a global leak when multiple subnets are trusted + - deps: ipaddr.js@0.1.3 + +4.9.2 / 2014-09-17 +================== + + * Fix regression for empty string `path` in `app.use` + * Fix `router.use` to accept array of middleware without path + * Improve error message for bad `app.use` arguments + +4.9.1 / 2014-09-16 +================== + + * Fix `app.use` to accept array of middleware without path + * deps: depd@0.4.5 + * deps: etag@~1.3.1 + * deps: send@0.9.2 + - deps: depd@0.4.5 + - deps: etag@~1.3.1 + - deps: range-parser@~1.0.2 + * deps: serve-static@~1.6.2 + - deps: send@0.9.2 + +4.9.0 / 2014-09-08 +================== + + * Add `res.sendStatus` + * Invoke callback for sendfile when client aborts + - Applies to `res.sendFile`, `res.sendfile`, and `res.download` + - `err` will be populated with request aborted error + * Support IP address host in `req.subdomains` + * Use `etag` to generate `ETag` headers + * deps: accepts@~1.1.0 + - update `mime-types` + * deps: cookie-signature@1.0.5 + * deps: debug@~2.0.0 + * deps: finalhandler@0.2.0 + - Set `X-Content-Type-Options: nosniff` header + - deps: debug@~2.0.0 + * deps: fresh@0.2.4 + * deps: media-typer@0.3.0 + - Throw error when parameter format invalid on parse + * deps: qs@2.2.3 + - Fix issue where first empty value in array is discarded + * deps: range-parser@~1.0.2 + * deps: send@0.9.1 + - Add `lastModified` option + - Use `etag` to generate `ETag` header + - deps: debug@~2.0.0 + - deps: fresh@0.2.4 + * deps: serve-static@~1.6.1 + - Add `lastModified` option + - deps: send@0.9.1 + * deps: type-is@~1.5.1 + - fix `hasbody` to be true for `content-length: 0` + - deps: media-typer@0.3.0 + - deps: mime-types@~2.0.1 + * deps: vary@~1.0.0 + - Accept valid `Vary` header string as `field` + +4.8.8 / 2014-09-04 +================== + + * deps: send@0.8.5 + - Fix a path traversal issue when using `root` + - Fix malicious path detection for empty string path + * deps: serve-static@~1.5.4 + - deps: send@0.8.5 + +4.8.7 / 2014-08-29 +================== + + * deps: qs@2.2.2 + - Remove unnecessary cloning + +4.8.6 / 2014-08-27 +================== + + * deps: qs@2.2.0 + - Array parsing fix + - Performance improvements + +4.8.5 / 2014-08-18 +================== + + * deps: send@0.8.3 + - deps: destroy@1.0.3 + - deps: on-finished@2.1.0 + * deps: serve-static@~1.5.3 + - deps: send@0.8.3 + +4.8.4 / 2014-08-14 +================== + + * deps: qs@1.2.2 + * deps: send@0.8.2 + - Work around `fd` leak in Node.js 0.10 for `fs.ReadStream` + * deps: serve-static@~1.5.2 + - deps: send@0.8.2 + +4.8.3 / 2014-08-10 +================== + + * deps: parseurl@~1.3.0 + * deps: qs@1.2.1 + * deps: serve-static@~1.5.1 + - Fix parsing of weird `req.originalUrl` values + - deps: parseurl@~1.3.0 + - deps: utils-merge@1.0.0 + +4.8.2 / 2014-08-07 +================== + + * deps: qs@1.2.0 + - Fix parsing array of objects + +4.8.1 / 2014-08-06 +================== + + * fix incorrect deprecation warnings on `res.download` + * deps: qs@1.1.0 + - Accept urlencoded square brackets + - Accept empty values in implicit array notation + +4.8.0 / 2014-08-05 +================== + + * add `res.sendFile` + - accepts a file system path instead of a URL + - requires an absolute path or `root` option specified + * deprecate `res.sendfile` -- use `res.sendFile` instead + * support mounted app as any argument to `app.use()` + * deps: qs@1.0.2 + - Complete rewrite + - Limits array length to 20 + - Limits object depth to 5 + - Limits parameters to 1,000 + * deps: send@0.8.1 + - Add `extensions` option + * deps: serve-static@~1.5.0 + - Add `extensions` option + - deps: send@0.8.1 + +4.7.4 / 2014-08-04 +================== + + * fix `res.sendfile` regression for serving directory index files + * deps: send@0.7.4 + - Fix incorrect 403 on Windows and Node.js 0.11 + - Fix serving index files without root dir + * deps: serve-static@~1.4.4 + - deps: send@0.7.4 + +4.7.3 / 2014-08-04 +================== + + * deps: send@0.7.3 + - Fix incorrect 403 on Windows and Node.js 0.11 + * deps: serve-static@~1.4.3 + - Fix incorrect 403 on Windows and Node.js 0.11 + - deps: send@0.7.3 + +4.7.2 / 2014-07-27 +================== + + * deps: depd@0.4.4 + - Work-around v8 generating empty stack traces + * deps: send@0.7.2 + - deps: depd@0.4.4 + * deps: serve-static@~1.4.2 + +4.7.1 / 2014-07-26 +================== + + * deps: depd@0.4.3 + - Fix exception when global `Error.stackTraceLimit` is too low + * deps: send@0.7.1 + - deps: depd@0.4.3 + * deps: serve-static@~1.4.1 + +4.7.0 / 2014-07-25 +================== + + * fix `req.protocol` for proxy-direct connections + * configurable query parser with `app.set('query parser', parser)` + - `app.set('query parser', 'extended')` parse with "qs" module + - `app.set('query parser', 'simple')` parse with "querystring" core module + - `app.set('query parser', false)` disable query string parsing + - `app.set('query parser', true)` enable simple parsing + * deprecate `res.json(status, obj)` -- use `res.status(status).json(obj)` instead + * deprecate `res.jsonp(status, obj)` -- use `res.status(status).jsonp(obj)` instead + * deprecate `res.send(status, body)` -- use `res.status(status).send(body)` instead + * deps: debug@1.0.4 + * deps: depd@0.4.2 + - Add `TRACE_DEPRECATION` environment variable + - Remove non-standard grey color from color output + - Support `--no-deprecation` argument + - Support `--trace-deprecation` argument + * deps: finalhandler@0.1.0 + - Respond after request fully read + - deps: debug@1.0.4 + * deps: parseurl@~1.2.0 + - Cache URLs based on original value + - Remove no-longer-needed URL mis-parse work-around + - Simplify the "fast-path" `RegExp` + * deps: send@0.7.0 + - Add `dotfiles` option + - Cap `maxAge` value to 1 year + - deps: debug@1.0.4 + - deps: depd@0.4.2 + * deps: serve-static@~1.4.0 + - deps: parseurl@~1.2.0 + - deps: send@0.7.0 + * perf: prevent multiple `Buffer` creation in `res.send` + +4.6.1 / 2014-07-12 +================== + + * fix `subapp.mountpath` regression for `app.use(subapp)` + +4.6.0 / 2014-07-11 +================== + + * accept multiple callbacks to `app.use()` + * add explicit "Rosetta Flash JSONP abuse" protection + - previous versions are not vulnerable; this is just explicit protection + * catch errors in multiple `req.param(name, fn)` handlers + * deprecate `res.redirect(url, status)` -- use `res.redirect(status, url)` instead + * fix `res.send(status, num)` to send `num` as json (not error) + * remove unnecessary escaping when `res.jsonp` returns JSON response + * support non-string `path` in `app.use(path, fn)` + - supports array of paths + - supports `RegExp` + * router: fix optimization on router exit + * router: refactor location of `try` blocks + * router: speed up standard `app.use(fn)` + * deps: debug@1.0.3 + - Add support for multiple wildcards in namespaces + * deps: finalhandler@0.0.3 + - deps: debug@1.0.3 + * deps: methods@1.1.0 + - add `CONNECT` + * deps: parseurl@~1.1.3 + - faster parsing of href-only URLs + * deps: path-to-regexp@0.1.3 + * deps: send@0.6.0 + - deps: debug@1.0.3 + * deps: serve-static@~1.3.2 + - deps: parseurl@~1.1.3 + - deps: send@0.6.0 + * perf: fix arguments reassign deopt in some `res` methods + +4.5.1 / 2014-07-06 +================== + + * fix routing regression when altering `req.method` + +4.5.0 / 2014-07-04 +================== + + * add deprecation message to non-plural `req.accepts*` + * add deprecation message to `res.send(body, status)` + * add deprecation message to `res.vary()` + * add `headers` option to `res.sendfile` + - use to set headers on successful file transfer + * add `mergeParams` option to `Router` + - merges `req.params` from parent routes + * add `req.hostname` -- correct name for what `req.host` returns + * deprecate things with `depd` module + * deprecate `req.host` -- use `req.hostname` instead + * fix behavior when handling request without routes + * fix handling when `route.all` is only route + * invoke `router.param()` only when route matches + * restore `req.params` after invoking router + * use `finalhandler` for final response handling + * use `media-typer` to alter content-type charset + * deps: accepts@~1.0.7 + * deps: send@0.5.0 + - Accept string for `maxage` (converted by `ms`) + - Include link in default redirect response + * deps: serve-static@~1.3.0 + - Accept string for `maxAge` (converted by `ms`) + - Add `setHeaders` option + - Include HTML link in redirect response + - deps: send@0.5.0 + * deps: type-is@~1.3.2 + +4.4.5 / 2014-06-26 +================== + + * deps: cookie-signature@1.0.4 + - fix for timing attacks + +4.4.4 / 2014-06-20 +================== + + * fix `res.attachment` Unicode filenames in Safari + * fix "trim prefix" debug message in `express:router` + * deps: accepts@~1.0.5 + * deps: buffer-crc32@0.2.3 + +4.4.3 / 2014-06-11 +================== + + * fix persistence of modified `req.params[name]` from `app.param()` + * deps: accepts@1.0.3 + - deps: negotiator@0.4.6 + * deps: debug@1.0.2 + * deps: send@0.4.3 + - Do not throw un-catchable error on file open race condition + - Use `escape-html` for HTML escaping + - deps: debug@1.0.2 + - deps: finished@1.2.2 + - deps: fresh@0.2.2 + * deps: serve-static@1.2.3 + - Do not throw un-catchable error on file open race condition + - deps: send@0.4.3 + +4.4.2 / 2014-06-09 +================== + + * fix catching errors from top-level handlers + * use `vary` module for `res.vary` + * deps: debug@1.0.1 + * deps: proxy-addr@1.0.1 + * deps: send@0.4.2 + - fix "event emitter leak" warnings + - deps: debug@1.0.1 + - deps: finished@1.2.1 + * deps: serve-static@1.2.2 + - fix "event emitter leak" warnings + - deps: send@0.4.2 + * deps: type-is@1.2.1 + +4.4.1 / 2014-06-02 +================== + + * deps: methods@1.0.1 + * deps: send@0.4.1 + - Send `max-age` in `Cache-Control` in correct format + * deps: serve-static@1.2.1 + - use `escape-html` for escaping + - deps: send@0.4.1 + +4.4.0 / 2014-05-30 +================== + + * custom etag control with `app.set('etag', val)` + - `app.set('etag', function(body, encoding){ return '"etag"' })` custom etag generation + - `app.set('etag', 'weak')` weak tag + - `app.set('etag', 'strong')` strong etag + - `app.set('etag', false)` turn off + - `app.set('etag', true)` standard etag + * mark `res.send` ETag as weak and reduce collisions + * update accepts to 1.0.2 + - Fix interpretation when header not in request + * update send to 0.4.0 + - Calculate ETag with md5 for reduced collisions + - Ignore stream errors after request ends + - deps: debug@0.8.1 + * update serve-static to 1.2.0 + - Calculate ETag with md5 for reduced collisions + - Ignore stream errors after request ends + - deps: send@0.4.0 + +4.3.2 / 2014-05-28 +================== + + * fix handling of errors from `router.param()` callbacks + +4.3.1 / 2014-05-23 +================== + + * revert "fix behavior of multiple `app.VERB` for the same path" + - this caused a regression in the order of route execution + +4.3.0 / 2014-05-21 +================== + + * add `req.baseUrl` to access the path stripped from `req.url` in routes + * fix behavior of multiple `app.VERB` for the same path + * fix issue routing requests among sub routers + * invoke `router.param()` only when necessary instead of every match + * proper proxy trust with `app.set('trust proxy', trust)` + - `app.set('trust proxy', 1)` trust first hop + - `app.set('trust proxy', 'loopback')` trust loopback addresses + - `app.set('trust proxy', '10.0.0.1')` trust single IP + - `app.set('trust proxy', '10.0.0.1/16')` trust subnet + - `app.set('trust proxy', '10.0.0.1, 10.0.0.2')` trust list + - `app.set('trust proxy', false)` turn off + - `app.set('trust proxy', true)` trust everything + * set proper `charset` in `Content-Type` for `res.send` + * update type-is to 1.2.0 + - support suffix matching + +4.2.0 / 2014-05-11 +================== + + * deprecate `app.del()` -- use `app.delete()` instead + * deprecate `res.json(obj, status)` -- use `res.json(status, obj)` instead + - the edge-case `res.json(status, num)` requires `res.status(status).json(num)` + * deprecate `res.jsonp(obj, status)` -- use `res.jsonp(status, obj)` instead + - the edge-case `res.jsonp(status, num)` requires `res.status(status).jsonp(num)` + * fix `req.next` when inside router instance + * include `ETag` header in `HEAD` requests + * keep previous `Content-Type` for `res.jsonp` + * support PURGE method + - add `app.purge` + - add `router.purge` + - include PURGE in `app.all` + * update debug to 0.8.0 + - add `enable()` method + - change from stderr to stdout + * update methods to 1.0.0 + - add PURGE + +4.1.2 / 2014-05-08 +================== + + * fix `req.host` for IPv6 literals + * fix `res.jsonp` error if callback param is object + +4.1.1 / 2014-04-27 +================== + + * fix package.json to reflect supported node version + +4.1.0 / 2014-04-24 +================== + + * pass options from `res.sendfile` to `send` + * preserve casing of headers in `res.header` and `res.set` + * support unicode file names in `res.attachment` and `res.download` + * update accepts to 1.0.1 + - deps: negotiator@0.4.0 + * update cookie to 0.1.2 + - Fix for maxAge == 0 + - made compat with expires field + * update send to 0.3.0 + - Accept API options in options object + - Coerce option types + - Control whether to generate etags + - Default directory access to 403 when index disabled + - Fix sending files with dots without root set + - Include file path in etag + - Make "Can't set headers after they are sent." catchable + - Send full entity-body for multi range requests + - Set etags to "weak" + - Support "If-Range" header + - Support multiple index paths + - deps: mime@1.2.11 + * update serve-static to 1.1.0 + - Accept options directly to `send` module + - Resolve relative paths at middleware setup + - Use parseurl to parse the URL from request + - deps: send@0.3.0 + * update type-is to 1.1.0 + - add non-array values support + - add `multipart` as a shorthand + +4.0.0 / 2014-04-09 +================== + + * remove: + - node 0.8 support + - connect and connect's patches except for charset handling + - express(1) - moved to [express-generator](https://github.com/expressjs/generator) + - `express.createServer()` - it has been deprecated for a long time. Use `express()` + - `app.configure` - use logic in your own app code + - `app.router` - is removed + - `req.auth` - use `basic-auth` instead + - `req.accepted*` - use `req.accepts*()` instead + - `res.location` - relative URL resolution is removed + - `res.charset` - include the charset in the content type when using `res.set()` + - all bundled middleware except `static` + * change: + - `app.route` -> `app.mountpath` when mounting an express app in another express app + - `json spaces` no longer enabled by default in development + - `req.accepts*` -> `req.accepts*s` - i.e. `req.acceptsEncoding` -> `req.acceptsEncodings` + - `req.params` is now an object instead of an array + - `res.locals` is no longer a function. It is a plain js object. Treat it as such. + - `res.headerSent` -> `res.headersSent` to match node.js ServerResponse object + * refactor: + - `req.accepts*` with [accepts](https://github.com/expressjs/accepts) + - `req.is` with [type-is](https://github.com/expressjs/type-is) + - [path-to-regexp](https://github.com/component/path-to-regexp) + * add: + - `app.router()` - returns the app Router instance + - `app.route()` - Proxy to the app's `Router#route()` method to create a new route + - Router & Route - public API + +3.21.2 / 2015-07-31 +=================== + + * deps: connect@2.30.2 + - deps: body-parser@~1.13.3 + - deps: compression@~1.5.2 + - deps: errorhandler@~1.4.2 + - deps: method-override@~2.3.5 + - deps: serve-index@~1.7.2 + - deps: type-is@~1.6.6 + - deps: vhost@~3.0.1 + * deps: vary@~1.0.1 + - Fix setting empty header from empty `field` + - perf: enable strict mode + - perf: remove argument reassignments + +3.21.1 / 2015-07-05 +=================== + + * deps: basic-auth@~1.0.3 + * deps: connect@2.30.1 + - deps: body-parser@~1.13.2 + - deps: compression@~1.5.1 + - deps: errorhandler@~1.4.1 + - deps: morgan@~1.6.1 + - deps: pause@0.1.0 + - deps: qs@4.0.0 + - deps: serve-index@~1.7.1 + - deps: type-is@~1.6.4 + +3.21.0 / 2015-06-18 +=================== + + * deps: basic-auth@1.0.2 + - perf: enable strict mode + - perf: hoist regular expression + - perf: parse with regular expressions + - perf: remove argument reassignment + * deps: connect@2.30.0 + - deps: body-parser@~1.13.1 + - deps: bytes@2.1.0 + - deps: compression@~1.5.0 + - deps: cookie@0.1.3 + - deps: cookie-parser@~1.3.5 + - deps: csurf@~1.8.3 + - deps: errorhandler@~1.4.0 + - deps: express-session@~1.11.3 + - deps: finalhandler@0.4.0 + - deps: fresh@0.3.0 + - deps: morgan@~1.6.0 + - deps: serve-favicon@~2.3.0 + - deps: serve-index@~1.7.0 + - deps: serve-static@~1.10.0 + - deps: type-is@~1.6.3 + * deps: cookie@0.1.3 + - perf: deduce the scope of try-catch deopt + - perf: remove argument reassignments + * deps: escape-html@1.0.2 + * deps: etag@~1.7.0 + - Always include entity length in ETags for hash length extensions + - Generate non-Stats ETags using MD5 only (no longer CRC32) + - Improve stat performance by removing hashing + - Improve support for JXcore + - Remove base64 padding in ETags to shorten + - Support "fake" stats objects in environments without fs + - Use MD5 instead of MD4 in weak ETags over 1KB + * deps: fresh@0.3.0 + - Add weak `ETag` matching support + * deps: mkdirp@0.5.1 + - Work in global strict mode + * deps: send@0.13.0 + - Allow Node.js HTTP server to set `Date` response header + - Fix incorrectly removing `Content-Location` on 304 response + - Improve the default redirect response headers + - Send appropriate headers on default error response + - Use `http-errors` for standard emitted errors + - Use `statuses` instead of `http` module for status messages + - deps: escape-html@1.0.2 + - deps: etag@~1.7.0 + - deps: fresh@0.3.0 + - deps: on-finished@~2.3.0 + - perf: enable strict mode + - perf: remove unnecessary array allocations + +3.20.3 / 2015-05-17 +=================== + + * deps: connect@2.29.2 + - deps: body-parser@~1.12.4 + - deps: compression@~1.4.4 + - deps: connect-timeout@~1.6.2 + - deps: debug@~2.2.0 + - deps: depd@~1.0.1 + - deps: errorhandler@~1.3.6 + - deps: finalhandler@0.3.6 + - deps: method-override@~2.3.3 + - deps: morgan@~1.5.3 + - deps: qs@2.4.2 + - deps: response-time@~2.3.1 + - deps: serve-favicon@~2.2.1 + - deps: serve-index@~1.6.4 + - deps: serve-static@~1.9.3 + - deps: type-is@~1.6.2 + * deps: debug@~2.2.0 + - deps: ms@0.7.1 + * deps: depd@~1.0.1 + * deps: proxy-addr@~1.0.8 + - deps: ipaddr.js@1.0.1 + * deps: send@0.12.3 + - deps: debug@~2.2.0 + - deps: depd@~1.0.1 + - deps: etag@~1.6.0 + - deps: ms@0.7.1 + - deps: on-finished@~2.2.1 + +3.20.2 / 2015-03-16 +=================== + + * deps: connect@2.29.1 + - deps: body-parser@~1.12.2 + - deps: compression@~1.4.3 + - deps: connect-timeout@~1.6.1 + - deps: debug@~2.1.3 + - deps: errorhandler@~1.3.5 + - deps: express-session@~1.10.4 + - deps: finalhandler@0.3.4 + - deps: method-override@~2.3.2 + - deps: morgan@~1.5.2 + - deps: qs@2.4.1 + - deps: serve-index@~1.6.3 + - deps: serve-static@~1.9.2 + - deps: type-is@~1.6.1 + * deps: debug@~2.1.3 + - Fix high intensity foreground color for bold + - deps: ms@0.7.0 + * deps: merge-descriptors@1.0.0 + * deps: proxy-addr@~1.0.7 + - deps: ipaddr.js@0.1.9 + * deps: send@0.12.2 + - Throw errors early for invalid `extensions` or `index` options + - deps: debug@~2.1.3 + +3.20.1 / 2015-02-28 +=================== + + * Fix `req.host` when using "trust proxy" hops count + * Fix `req.protocol`/`req.secure` when using "trust proxy" hops count + +3.20.0 / 2015-02-18 +=================== + + * Fix `"trust proxy"` setting to inherit when app is mounted + * Generate `ETag`s for all request responses + - No longer restricted to only responses for `GET` and `HEAD` requests + * Use `content-type` to parse `Content-Type` headers + * deps: connect@2.29.0 + - Use `content-type` to parse `Content-Type` headers + - deps: body-parser@~1.12.0 + - deps: compression@~1.4.1 + - deps: connect-timeout@~1.6.0 + - deps: cookie-parser@~1.3.4 + - deps: cookie-signature@1.0.6 + - deps: csurf@~1.7.0 + - deps: errorhandler@~1.3.4 + - deps: express-session@~1.10.3 + - deps: http-errors@~1.3.1 + - deps: response-time@~2.3.0 + - deps: serve-index@~1.6.2 + - deps: serve-static@~1.9.1 + - deps: type-is@~1.6.0 + * deps: cookie-signature@1.0.6 + * deps: send@0.12.1 + - Always read the stat size from the file + - Fix mutating passed-in `options` + - deps: mime@1.3.4 + +3.19.2 / 2015-02-01 +=================== + + * deps: connect@2.28.3 + - deps: compression@~1.3.1 + - deps: csurf@~1.6.6 + - deps: errorhandler@~1.3.3 + - deps: express-session@~1.10.2 + - deps: serve-index@~1.6.1 + - deps: type-is@~1.5.6 + * deps: proxy-addr@~1.0.6 + - deps: ipaddr.js@0.1.8 + +3.19.1 / 2015-01-20 +=================== + + * deps: connect@2.28.2 + - deps: body-parser@~1.10.2 + - deps: serve-static@~1.8.1 + * deps: send@0.11.1 + - Fix root path disclosure + +3.19.0 / 2015-01-09 +=================== + + * Fix `OPTIONS` responses to include the `HEAD` method property + * Use `readline` for prompt in `express(1)` + * deps: commander@2.6.0 + * deps: connect@2.28.1 + - deps: body-parser@~1.10.1 + - deps: compression@~1.3.0 + - deps: connect-timeout@~1.5.0 + - deps: csurf@~1.6.4 + - deps: debug@~2.1.1 + - deps: errorhandler@~1.3.2 + - deps: express-session@~1.10.1 + - deps: finalhandler@0.3.3 + - deps: method-override@~2.3.1 + - deps: morgan@~1.5.1 + - deps: serve-favicon@~2.2.0 + - deps: serve-index@~1.6.0 + - deps: serve-static@~1.8.0 + - deps: type-is@~1.5.5 + * deps: debug@~2.1.1 + * deps: methods@~1.1.1 + * deps: proxy-addr@~1.0.5 + - deps: ipaddr.js@0.1.6 + * deps: send@0.11.0 + - deps: debug@~2.1.1 + - deps: etag@~1.5.1 + - deps: ms@0.7.0 + - deps: on-finished@~2.2.0 + +3.18.6 / 2014-12-12 +=================== + + * Fix exception in `req.fresh`/`req.stale` without response headers + +3.18.5 / 2014-12-11 +=================== + + * deps: connect@2.27.6 + - deps: compression@~1.2.2 + - deps: express-session@~1.9.3 + - deps: http-errors@~1.2.8 + - deps: serve-index@~1.5.3 + - deps: type-is@~1.5.4 + +3.18.4 / 2014-11-23 +=================== + + * deps: connect@2.27.4 + - deps: body-parser@~1.9.3 + - deps: compression@~1.2.1 + - deps: errorhandler@~1.2.3 + - deps: express-session@~1.9.2 + - deps: qs@2.3.3 + - deps: serve-favicon@~2.1.7 + - deps: serve-static@~1.5.1 + - deps: type-is@~1.5.3 + * deps: etag@~1.5.1 + * deps: proxy-addr@~1.0.4 + - deps: ipaddr.js@0.1.5 + +3.18.3 / 2014-11-09 +=================== + + * deps: connect@2.27.3 + - Correctly invoke async callback asynchronously + - deps: csurf@~1.6.3 + +3.18.2 / 2014-10-28 +=================== + + * deps: connect@2.27.2 + - Fix handling of URLs containing `://` in the path + - deps: body-parser@~1.9.2 + - deps: qs@2.3.2 + +3.18.1 / 2014-10-22 +=================== + + * Fix internal `utils.merge` deprecation warnings + * deps: connect@2.27.1 + - deps: body-parser@~1.9.1 + - deps: express-session@~1.9.1 + - deps: finalhandler@0.3.2 + - deps: morgan@~1.4.1 + - deps: qs@2.3.0 + - deps: serve-static@~1.7.1 + * deps: send@0.10.1 + - deps: on-finished@~2.1.1 + +3.18.0 / 2014-10-17 +=================== + + * Use `content-disposition` module for `res.attachment`/`res.download` + - Sends standards-compliant `Content-Disposition` header + - Full Unicode support + * Use `etag` module to generate `ETag` headers + * deps: connect@2.27.0 + - Use `http-errors` module for creating errors + - Use `utils-merge` module for merging objects + - deps: body-parser@~1.9.0 + - deps: compression@~1.2.0 + - deps: connect-timeout@~1.4.0 + - deps: debug@~2.1.0 + - deps: depd@~1.0.0 + - deps: express-session@~1.9.0 + - deps: finalhandler@0.3.1 + - deps: method-override@~2.3.0 + - deps: morgan@~1.4.0 + - deps: response-time@~2.2.0 + - deps: serve-favicon@~2.1.6 + - deps: serve-index@~1.5.0 + - deps: serve-static@~1.7.0 + * deps: debug@~2.1.0 + - Implement `DEBUG_FD` env variable support + * deps: depd@~1.0.0 + * deps: send@0.10.0 + - deps: debug@~2.1.0 + - deps: depd@~1.0.0 + - deps: etag@~1.5.0 + +3.17.8 / 2014-10-15 +=================== + + * deps: connect@2.26.6 + - deps: compression@~1.1.2 + - deps: csurf@~1.6.2 + - deps: errorhandler@~1.2.2 + +3.17.7 / 2014-10-08 +=================== + + * deps: connect@2.26.5 + - Fix accepting non-object arguments to `logger` + - deps: serve-static@~1.6.4 + +3.17.6 / 2014-10-02 +=================== + + * deps: connect@2.26.4 + - deps: morgan@~1.3.2 + - deps: type-is@~1.5.2 + +3.17.5 / 2014-09-24 +=================== + + * deps: connect@2.26.3 + - deps: body-parser@~1.8.4 + - deps: serve-favicon@~2.1.5 + - deps: serve-static@~1.6.3 + * deps: proxy-addr@~1.0.3 + - Use `forwarded` npm module + * deps: send@0.9.3 + - deps: etag@~1.4.0 + +3.17.4 / 2014-09-19 +=================== + + * deps: connect@2.26.2 + - deps: body-parser@~1.8.3 + - deps: qs@2.2.4 + +3.17.3 / 2014-09-18 +=================== + + * deps: proxy-addr@~1.0.2 + - Fix a global leak when multiple subnets are trusted + - deps: ipaddr.js@0.1.3 + +3.17.2 / 2014-09-15 +=================== + + * Use `crc` instead of `buffer-crc32` for speed + * deps: connect@2.26.1 + - deps: body-parser@~1.8.2 + - deps: depd@0.4.5 + - deps: express-session@~1.8.2 + - deps: morgan@~1.3.1 + - deps: serve-favicon@~2.1.3 + - deps: serve-static@~1.6.2 + * deps: depd@0.4.5 + * deps: send@0.9.2 + - deps: depd@0.4.5 + - deps: etag@~1.3.1 + - deps: range-parser@~1.0.2 + +3.17.1 / 2014-09-08 +=================== + + * Fix error in `req.subdomains` on empty host + +3.17.0 / 2014-09-08 +=================== + + * Support `X-Forwarded-Host` in `req.subdomains` + * Support IP address host in `req.subdomains` + * deps: connect@2.26.0 + - deps: body-parser@~1.8.1 + - deps: compression@~1.1.0 + - deps: connect-timeout@~1.3.0 + - deps: cookie-parser@~1.3.3 + - deps: cookie-signature@1.0.5 + - deps: csurf@~1.6.1 + - deps: debug@~2.0.0 + - deps: errorhandler@~1.2.0 + - deps: express-session@~1.8.1 + - deps: finalhandler@0.2.0 + - deps: fresh@0.2.4 + - deps: media-typer@0.3.0 + - deps: method-override@~2.2.0 + - deps: morgan@~1.3.0 + - deps: qs@2.2.3 + - deps: serve-favicon@~2.1.3 + - deps: serve-index@~1.2.1 + - deps: serve-static@~1.6.1 + - deps: type-is@~1.5.1 + - deps: vhost@~3.0.0 + * deps: cookie-signature@1.0.5 + * deps: debug@~2.0.0 + * deps: fresh@0.2.4 + * deps: media-typer@0.3.0 + - Throw error when parameter format invalid on parse + * deps: range-parser@~1.0.2 + * deps: send@0.9.1 + - Add `lastModified` option + - Use `etag` to generate `ETag` header + - deps: debug@~2.0.0 + - deps: fresh@0.2.4 + * deps: vary@~1.0.0 + - Accept valid `Vary` header string as `field` + +3.16.10 / 2014-09-04 +==================== + + * deps: connect@2.25.10 + - deps: serve-static@~1.5.4 + * deps: send@0.8.5 + - Fix a path traversal issue when using `root` + - Fix malicious path detection for empty string path + +3.16.9 / 2014-08-29 +=================== + + * deps: connect@2.25.9 + - deps: body-parser@~1.6.7 + - deps: qs@2.2.2 + +3.16.8 / 2014-08-27 +=================== + + * deps: connect@2.25.8 + - deps: body-parser@~1.6.6 + - deps: csurf@~1.4.1 + - deps: qs@2.2.0 + +3.16.7 / 2014-08-18 +=================== + + * deps: connect@2.25.7 + - deps: body-parser@~1.6.5 + - deps: express-session@~1.7.6 + - deps: morgan@~1.2.3 + - deps: serve-static@~1.5.3 + * deps: send@0.8.3 + - deps: destroy@1.0.3 + - deps: on-finished@2.1.0 + +3.16.6 / 2014-08-14 +=================== + + * deps: connect@2.25.6 + - deps: body-parser@~1.6.4 + - deps: qs@1.2.2 + - deps: serve-static@~1.5.2 + * deps: send@0.8.2 + - Work around `fd` leak in Node.js 0.10 for `fs.ReadStream` + +3.16.5 / 2014-08-11 +=================== + + * deps: connect@2.25.5 + - Fix backwards compatibility in `logger` + +3.16.4 / 2014-08-10 +=================== + + * Fix original URL parsing in `res.location` + * deps: connect@2.25.4 + - Fix `query` middleware breaking with argument + - deps: body-parser@~1.6.3 + - deps: compression@~1.0.11 + - deps: connect-timeout@~1.2.2 + - deps: express-session@~1.7.5 + - deps: method-override@~2.1.3 + - deps: on-headers@~1.0.0 + - deps: parseurl@~1.3.0 + - deps: qs@1.2.1 + - deps: response-time@~2.0.1 + - deps: serve-index@~1.1.6 + - deps: serve-static@~1.5.1 + * deps: parseurl@~1.3.0 + +3.16.3 / 2014-08-07 +=================== + + * deps: connect@2.25.3 + - deps: multiparty@3.3.2 + +3.16.2 / 2014-08-07 +=================== + + * deps: connect@2.25.2 + - deps: body-parser@~1.6.2 + - deps: qs@1.2.0 + +3.16.1 / 2014-08-06 +=================== + + * deps: connect@2.25.1 + - deps: body-parser@~1.6.1 + - deps: qs@1.1.0 + +3.16.0 / 2014-08-05 +=================== + + * deps: connect@2.25.0 + - deps: body-parser@~1.6.0 + - deps: compression@~1.0.10 + - deps: csurf@~1.4.0 + - deps: express-session@~1.7.4 + - deps: qs@1.0.2 + - deps: serve-static@~1.5.0 + * deps: send@0.8.1 + - Add `extensions` option + +3.15.3 / 2014-08-04 +=================== + + * fix `res.sendfile` regression for serving directory index files + * deps: connect@2.24.3 + - deps: serve-index@~1.1.5 + - deps: serve-static@~1.4.4 + * deps: send@0.7.4 + - Fix incorrect 403 on Windows and Node.js 0.11 + - Fix serving index files