4 * deps: body-parser@~1.13.3
6 * deps: compression@~1.5.2
7 - deps: accepts@~1.2.12
8 - deps: compressible@~2.0.5
10 * deps: errorhandler@~1.4.2
11 - deps: accepts@~1.2.12
12 * deps: method-override@~2.3.5
14 - perf: enable strict mode
15 * deps: serve-index@~1.7.2
16 - deps: accepts@~1.2.12
17 - deps: mime-types@~2.1.4
18 * deps: type-is@~1.6.6
19 - deps: mime-types@~2.1.4
21 - perf: enable strict mode
26 * deps: body-parser@~1.13.2
27 - deps: iconv-lite@0.4.11
29 - deps: raw-body@~2.1.2
30 - deps: type-is@~1.6.4
31 * deps: compression@~1.5.1
32 - deps: accepts@~1.2.10
33 - deps: compressible@~2.0.4
34 * deps: errorhandler@~1.4.1
35 - deps: accepts@~1.2.10
37 - Fix dropping parameters like `hasOwnProperty`
38 - Fix various parsing edge cases
40 - deps: basic-auth@~1.0.3
42 - Re-emit events with all original arguments
44 - perf: enable strict mode
45 * deps: serve-index@~1.7.1
46 - deps: accepts@~1.2.10
47 - deps: mime-types@~2.1.2
48 * deps: type-is@~1.6.4
49 - deps: mime-types@~2.1.2
50 - perf: enable strict mode
51 - perf: remove argument reassignment
56 * deps: body-parser@~1.13.1
57 - Add `statusCode` property on `Error`s, in addition to `status`
58 - Change `type` default to `application/json` for JSON parser
59 - Change `type` default to `application/x-www-form-urlencoded` for urlencoded parser
60 - Provide static `require` analysis
61 - Use the `http-errors` module to generate errors
63 - deps: iconv-lite@0.4.10
64 - deps: on-finished@~2.3.0
65 - deps: raw-body@~2.1.1
66 - deps: type-is@~1.6.3
67 - perf: enable strict mode
68 - perf: remove argument reassignment
69 - perf: remove delete call
71 - Slight optimizations
72 - Units no longer case sensitive when parsing
73 * deps: compression@~1.5.0
74 - Fix return value from `.end` and `.write` after end
75 - Improve detection of zero-length body without `Content-Length`
76 - deps: accepts@~1.2.9
78 - deps: compressible@~2.0.3
79 - perf: enable strict mode
80 - perf: remove flush reassignment
81 - perf: simplify threshold detection
83 - Slight optimizations
84 * deps: cookie-parser@~1.3.5
87 - Add `sessionKey` option
90 * deps: errorhandler@~1.4.0
91 - Add charset to the `Content-Type` header
92 - Support `statusCode` property on `Error` objects
93 - deps: accepts@~1.2.9
94 - deps: escape-html@1.0.2
95 * deps: express-session@~1.11.3
96 - Support an array in `secret` option for key rotation
101 - deps: uid-safe@~2.0.0
102 * deps: finalhandler@0.4.0
103 - Fix a false-positive when unpiping in Node.js 0.8
104 - Support `statusCode` property on `Error` objects
105 - Use `unpipe` module for unpiping requests
106 - deps: escape-html@1.0.2
107 - deps: on-finished@~2.3.0
108 - perf: enable strict mode
109 - perf: remove argument reassignment
111 - Add weak `ETag` matching support
112 * deps: morgan@~1.6.0
113 - Add `morgan.compile(format)` export
114 - Do not color 1xx status codes in `dev` format
115 - Fix `response-time` token to not include response latency
116 - Fix `status` token incorrectly displaying before response in `dev` format
117 - Fix token return values to be `undefined` or a string
118 - Improve representation of multiple headers in `req` and `res` tokens
119 - Use `res.getHeader` in `res` token
120 - deps: basic-auth@~1.0.2
121 - deps: on-finished@~2.3.0
122 - pref: enable strict mode
123 - pref: reduce function closure scopes
124 - pref: remove dynamic compile on every request for `dev` format
125 - pref: remove an argument reassignment
126 - pref: skip function call without `skip` option
127 * deps: serve-favicon@~2.3.0
128 - Send non-chunked response for `OPTIONS`
131 - perf: enable strict mode
132 - perf: remove argument reassignment
133 - perf: remove bitwise operations
134 * deps: serve-index@~1.7.0
135 - Accept `function` value for `template` option
136 - Send non-chunked response for `OPTIONS`
137 - Stat parent directory when necessary
138 - Use `Date.prototype.toLocaleDateString` to format date
139 - deps: accepts@~1.2.9
140 - deps: escape-html@1.0.2
141 - deps: mime-types@~2.1.1
142 - perf: enable strict mode
143 - perf: remove argument reassignment
144 * deps: serve-static@~1.10.0
145 - Add `fallthrough` option
146 - Fix reading options from options prototype
147 - Improve the default redirect response headers
148 - Malformed URLs now `next()` instead of 400
149 - deps: escape-html@1.0.2
151 - perf: enable strict mode
152 - perf: remove argument reassignment
153 * deps: type-is@~1.6.3
154 - deps: mime-types@~2.1.1
155 - perf: reduce try block size
156 - perf: remove bitwise operations
161 * deps: body-parser@~1.12.4
162 - Slight efficiency improvement when not debugging
165 - deps: iconv-lite@0.4.8
166 - deps: on-finished@~2.2.1
168 - deps: raw-body@~2.0.1
169 - deps: type-is@~1.6.2
170 * deps: compression@~1.4.4
171 - deps: accepts@~1.2.7
173 * deps: connect-timeout@~1.6.2
179 * deps: errorhandler@~1.3.6
180 - deps: accepts@~1.2.7
181 * deps: finalhandler@0.3.6
183 - deps: on-finished@~2.2.1
184 * deps: method-override@~2.3.3
186 * deps: morgan@~1.5.3
187 - deps: basic-auth@~1.0.1
190 - deps: on-finished@~2.2.1
192 - Fix allowing parameters like `constructor`
193 * deps: response-time@~2.3.1
195 * deps: serve-favicon@~2.2.1
198 * deps: serve-index@~1.6.4
199 - deps: accepts@~1.2.7
201 - deps: mime-types@~2.0.11
202 * deps: serve-static@~1.9.3
204 * deps: type-is@~1.6.2
205 - deps: mime-types@~2.0.11
210 * deps: body-parser@~1.12.2
213 - deps: type-is@~1.6.1
214 * deps: compression@~1.4.3
215 - Fix error when code calls `res.end(str, encoding)`
216 - deps: accepts@~1.2.5
218 * deps: connect-timeout@~1.6.1
221 - Fix high intensity foreground color for bold
223 * deps: errorhandler@~1.3.5
224 - deps: accepts@~1.2.5
225 * deps: express-session@~1.10.4
227 * deps: finalhandler@0.3.4
229 * deps: method-override@~2.3.2
231 * deps: morgan@~1.5.2
234 - Fix error when parameter `hasOwnProperty` is present
235 * deps: serve-index@~1.6.3
236 - Properly escape file names in HTML
237 - deps: accepts@~1.2.5
239 - deps: escape-html@1.0.1
240 - deps: mime-types@~2.0.10
241 * deps: serve-static@~1.9.2
243 * deps: type-is@~1.6.1
244 - deps: mime-types@~2.0.10
249 * Use `content-type` to parse `Content-Type` headers
250 * deps: body-parser@~1.12.0
251 - add `debug` messages
252 - accept a function for the `type` option
253 - make internal `extended: true` depth limit infinity
254 - use `content-type` to parse `Content-Type` headers
255 - deps: iconv-lite@0.4.7
256 - deps: raw-body@1.3.3
257 - deps: type-is@~1.6.0
258 * deps: compression@~1.4.1
259 - Prefer `gzip` over `deflate` on the server
260 - deps: accepts@~1.2.4
261 * deps: connect-timeout@~1.6.0
262 - deps: http-errors@~1.3.1
263 * deps: cookie-parser@~1.3.4
264 - deps: cookie-signature@1.0.6
265 * deps: cookie-signature@1.0.6
267 - Accept `CSRF-Token` and `XSRF-Token` request headers
268 - Default `cookie.path` to `'/'`, if using cookies
269 - deps: cookie-signature@1.0.6
271 - deps: http-errors@~1.3.1
272 * deps: errorhandler@~1.3.4
273 - deps: accepts@~1.2.4
274 * deps: express-session@~1.10.3
275 - deps: cookie-signature@1.0.6
276 - deps: uid-safe@1.1.0
277 * deps: http-errors@~1.3.1
278 - Construct errors using defined constructors from `createError`
279 - Fix error names that are not identifiers
280 - Set a meaningful `name` property on constructed errors
281 * deps: response-time@~2.3.0
282 - Add function argument to support recording of response time
283 * deps: serve-index@~1.6.2
284 - deps: accepts@~1.2.4
285 - deps: http-errors@~1.3.1
286 - deps: mime-types@~2.0.9
287 * deps: serve-static@~1.9.1
289 * deps: type-is@~1.6.0
290 - fix argument reassignment
291 - fix false-positives in `hasBody` `Transfer-Encoding` check
292 - support wildcard for both type and subtype (`*/*`)
293 - deps: mime-types@~2.0.9
298 * deps: compression@~1.3.1
299 - deps: accepts@~1.2.3
300 - deps: compressible@~2.0.2
303 * deps: errorhandler@~1.3.3
304 - deps: accepts@~1.2.3
305 * deps: express-session@~1.10.2
306 - deps: uid-safe@1.0.3
307 * deps: serve-index@~1.6.1
308 - deps: accepts@~1.2.3
309 - deps: mime-types@~2.0.8
310 * deps: type-is@~1.5.6
311 - deps: mime-types@~2.0.8
316 * deps: body-parser@~1.10.2
317 - deps: iconv-lite@0.4.6
318 - deps: raw-body@1.3.2
319 * deps: serve-static@~1.8.1
320 - Fix redirect loop in Node.js 0.11.14
321 - Fix root path disclosure
329 * deps: express-session@~1.10.1
330 - deps: uid-safe@~1.0.2
335 * deps: body-parser@~1.10.1
336 - Make internal `extended: true` array limit dynamic
337 - deps: on-finished@~2.2.0
338 - deps: type-is@~1.5.5
339 * deps: compression@~1.3.0
340 - Export the default `filter` function for wrapping
341 - deps: accepts@~1.2.2
343 * deps: connect-timeout@~1.5.0
345 - deps: http-errors@~1.2.8
349 - deps: http-errors@~1.2.8
351 * deps: errorhandler@~1.3.2
353 - Fix heading content to not include stack
354 - deps: accepts@~1.2.2
355 * deps: express-session@~1.10.0
356 - Add `store.touch` interface for session stores
357 - Fix `MemoryStore` expiration with `resave: false`
359 * deps: finalhandler@0.3.3
361 - deps: on-finished@~2.2.0
362 * deps: method-override@~2.3.1
364 - deps: methods@~1.1.1
365 * deps: morgan@~1.5.1
366 - Add multiple date formats `clf`, `iso`, and `web`
367 - Deprecate `buffer` option
368 - Fix date format in `common` and `combined` formats
369 - Fix token arguments to accept values with `"`
371 - deps: on-finished@~2.2.0
372 * deps: serve-favicon@~2.2.0
373 - Support query string in the URL
376 * deps: serve-index@~1.6.0
377 - Add link to root directory
378 - deps: accepts@~1.2.2
381 - deps: mime-types@~2.0.7
382 * deps: serve-static@~1.8.0
383 - Fix potential open redirect when mounted at root
385 * deps: type-is@~1.5.5
386 - deps: mime-types@~2.0.7
391 * deps: serve-index@~1.5.3
392 - deps: accepts@~1.1.4
393 - deps: http-errors@~1.2.8
394 - deps: mime-types@~2.0.4
399 * deps: compression@~1.2.2
400 - Fix `.end` to only proxy to `.end`
401 - deps: accepts@~1.1.4
402 * deps: express-session@~1.9.3
403 - Fix error when `req.sessionID` contains a non-string value
404 * deps: http-errors@~1.2.8
405 - Fix stack trace from exported function
406 - Remove `arguments.callee` usage
407 * deps: serve-index@~1.5.2
408 - Fix icon name background alignment on mobile view
409 * deps: type-is@~1.5.4
410 - deps: mime-types@~2.0.4
415 * deps: body-parser@~1.9.3
416 - deps: iconv-lite@0.4.5
418 - deps: raw-body@1.3.1
419 - deps: type-is@~1.5.3
420 * deps: compression@~1.2.1
421 - deps: accepts@~1.1.3
422 * deps: errorhandler@~1.2.3
423 - deps: accepts@~1.1.3
424 * deps: express-session@~1.9.2
427 - Fix `arrayLimit` behavior
428 * deps: serve-favicon@~2.1.7
429 - Avoid errors from enumerables on `Object.prototype`
430 * deps: serve-index@~1.5.1
431 - deps: accepts@~1.1.3
432 - deps: mime-types@~2.0.3
433 * deps: type-is@~1.5.3
434 - deps: mime-types@~2.0.3
439 * Correctly invoke async callback asynchronously
447 * Fix handling of URLs containing `://` in the path
448 * deps: body-parser@~1.9.2
451 - Fix parsing of mixed objects and values
456 * deps: body-parser@~1.9.1
457 - deps: on-finished@~2.1.1
459 - deps: type-is@~1.5.2
460 * deps: express-session@~1.9.1
461 - Remove unnecessary empty write call
462 * deps: finalhandler@0.3.2
463 - deps: on-finished@~2.1.1
464 * deps: morgan@~1.4.1
465 - deps: on-finished@~2.1.1
467 - Fix parsing of mixed implicit and explicit arrays
468 * deps: serve-static@~1.7.1
474 * Use `http-errors` module for creating errors
475 * Use `utils-merge` module for merging objects
476 * deps: body-parser@~1.9.0
477 - include the charset in "unsupported charset" error message
478 - include the encoding in "unsupported content encoding" error message
480 * deps: compression@~1.2.0
482 * deps: connect-timeout@~1.4.0
483 - Create errors with `http-errors`
486 - Implement `DEBUG_FD` env variable support
488 * deps: express-session@~1.9.0
491 * deps: finalhandler@0.3.1
492 - Terminate in progress response only on error
493 - Use `on-finished` to determine request status
495 * deps: method-override@~2.3.0
497 * deps: morgan@~1.4.0
498 - Add `debug` messages
500 * deps: response-time@~2.2.0
501 - Add `header` option for custom header name
502 - Add `suffix` option
503 - Change `digits` argument to an `options` argument
505 * deps: serve-favicon@~2.1.6
507 * deps: serve-index@~1.5.0
508 - Add `dir` argument to `filter` function
509 - Add icon for mkv files
510 - Create errors with `http-errors`
511 - Fix incorrect 403 on Windows and Node.js 0.11
512 - Lookup icon by mime type for greater icon support
513 - Support using tokens multiple times
514 - deps: accepts@~1.1.2
516 - deps: mime-types@~2.0.2
517 * deps: serve-static@~1.7.0
523 * deps: compression@~1.1.2
524 - deps: accepts@~1.1.2
525 - deps: compressible@~2.0.1
528 - fix cookie name when using `cookie: true`
529 * deps: errorhandler@~1.2.2
530 - deps: accepts@~1.1.2
535 * Fix accepting non-object arguments to `logger`
536 * deps: serve-static@~1.6.4
537 - Fix redirect loop when index file serving disabled
542 * deps: morgan@~1.3.2
543 - Fix `req.ip` integration when `immediate: false`
544 * deps: type-is@~1.5.2
545 - deps: mime-types@~2.0.2
550 * deps: body-parser@~1.8.4
551 - fix content encoding to be case-insensitive
552 * deps: serve-favicon@~2.1.5
554 * deps: serve-static@~1.6.3
560 * deps: body-parser@~1.8.3
563 - Fix issue with object keys starting with numbers truncated
568 * deps: body-parser@~1.8.2
571 * deps: express-session@~1.8.2
572 - Use `crc` instead of `buffer-crc32` for speed
574 * deps: morgan@~1.3.1
575 - Remove un-used `bytes` dependency
577 * deps: serve-favicon@~2.1.4
578 - Fix content headers being sent in 304 response
580 * deps: serve-static@~1.6.2
586 * deps: body-parser@~1.8.1
587 - add `parameterLimit` option to `urlencoded` parser
588 - change `urlencoded` extended array limit to 100
589 - make empty-body-handling consistent between chunked requests
590 - respond with 415 when over `parameterLimit` in `urlencoded`
591 - deps: media-typer@0.3.0
593 - deps: type-is@~1.5.1
594 * deps: compression@~1.1.0
595 - deps: accepts@~1.1.0
596 - deps: compressible@~2.0.0
598 * deps: connect-timeout@~1.3.0
600 * deps: cookie-parser@~1.3.3
601 - deps: cookie-signature@1.0.5
602 * deps: cookie-signature@1.0.5
604 - add `ignoreMethods` option
605 - bump cookie-signature
606 - csrf-tokens -> csrf
607 - set `code` property on CSRF token errors
609 * deps: errorhandler@~1.2.0
610 - Display error using `util.inspect` if no other representation
611 - deps: accepts@~1.1.0
612 * deps: express-session@~1.8.1
613 - Do not resave already-saved session at end of request
614 - Prevent session prototype methods from being overwritten
615 - deps: cookie-signature@1.0.5
617 * deps: finalhandler@0.2.0
618 - Set `X-Content-Type-Options: nosniff` header
621 * deps: media-typer@0.3.0
622 - Throw error when parameter format invalid on parse
623 * deps: method-override@~2.2.0
625 * deps: morgan@~1.3.0
626 - Assert if `format` is not a function or string
628 - Fix issue where first empty value in array is discarded
629 * deps: serve-favicon@~2.1.3
630 - Accept string for `maxAge` (converted by `ms`)
631 - Use `etag` to generate `ETag` header
633 * deps: serve-index@~1.2.1
634 - Add `debug` messages
635 - Resolve relative paths at middleware setup
636 - deps: accepts@~1.1.0
637 * deps: serve-static@~1.6.1
638 - Add `lastModified` option
640 * deps: type-is@~1.5.1
641 - fix `hasbody` to be true for `content-length: 0`
642 - deps: media-typer@0.3.0
643 - deps: mime-types@~2.0.1
649 * deps: serve-static@~1.5.4
655 * deps: body-parser@~1.6.7
662 * deps: body-parser@~1.6.6
667 - Performance improvements
672 * deps: body-parser@~1.6.5
673 - deps: on-finished@2.1.0
674 * deps: express-session@~1.7.6
675 - Fix exception on `res.end(null)` calls
676 * deps: morgan@~1.2.3
677 - deps: on-finished@2.1.0
678 * deps: serve-static@~1.5.3
684 * deps: body-parser@~1.6.4
687 * deps: serve-static@~1.5.2
693 * Fix backwards compatibility in `logger`
698 * Fix `query` middleware breaking with argument
699 - It never really took one in the first place
700 * deps: body-parser@~1.6.3
702 * deps: compression@~1.0.11
703 - deps: on-headers@~1.0.0
704 - deps: parseurl@~1.3.0
705 * deps: connect-timeout@~1.2.2
706 - deps: on-headers@~1.0.0
707 * deps: express-session@~1.7.5
708 - Fix parsing original URL
709 - deps: on-headers@~1.0.0
710 - deps: parseurl@~1.3.0
711 * deps: method-override@~2.1.3
712 * deps: on-headers@~1.0.0
713 * deps: parseurl@~1.3.0
715 * deps: response-time@~2.0.1
716 - deps: on-headers@~1.0.0
717 * deps: serve-index@~1.1.6
719 * deps: serve-static@~1.5.1
720 - Fix parsing of weird `req.originalUrl` values
721 - deps: parseurl@~1.3.0
722 = deps: utils-merge@1.0.0
727 * deps: multiparty@3.3.2
728 - Fix potential double-callback
733 * deps: body-parser@~1.6.2
736 - Fix parsing array of objects
741 * deps: body-parser@~1.6.1
744 - Accept urlencoded square brackets
745 - Accept empty values in implicit array notation
750 * deps: body-parser@~1.6.0
752 * deps: compression@~1.0.10
753 - Fix upper-case Content-Type characters prevent compression
754 - deps: compressible@~1.1.1
756 - Support changing `req.session` after `csurf` middleware
757 - Calling `res.csrfToken()` after `req.session.destroy()` will now work
758 * deps: express-session@~1.7.4
759 - Fix `res.end` patch to call correct upstream `res.write`
760 - Fix response end delay for non-chunked responses
763 - Limits array length to 20
764 - Limits object depth to 5
765 - Limits parameters to 1,000
766 * deps: serve-static@~1.5.0
767 - Add `extensions` option
773 * deps: serve-index@~1.1.5
774 - Fix Content-Length calculation for multi-byte file names
775 - deps: accepts@~1.0.7
776 * deps: serve-static@~1.4.4
777 - Fix incorrect 403 on Windows and Node.js 0.11
783 * deps: body-parser@~1.5.2
785 - Work-around v8 generating empty stack traces
786 * deps: express-session@~1.7.2
787 * deps: morgan@~1.2.2
788 * deps: serve-static@~1.4.2
793 * deps: body-parser@~1.5.1
795 - Fix exception when global `Error.stackTraceLimit` is too low
796 * deps: express-session@~1.7.1
797 * deps: morgan@~1.2.1
798 * deps: serve-index@~1.1.4
799 * deps: serve-static@~1.4.1
804 * deps: body-parser@~1.5.0
806 - deps: iconv-lite@0.4.4
807 - deps: raw-body@1.3.0
808 - deps: type-is@~1.3.2
809 * deps: compression@~1.0.9
810 - Add `debug` messages
811 - deps: accepts@~1.0.7
812 * deps: connect-timeout@~1.2.1
813 - Accept string for `time` (converted by `ms`)
817 - Add `TRACE_DEPRECATION` environment variable
818 - Remove non-standard grey color from color output
819 - Support `--no-deprecation` argument
820 - Support `--trace-deprecation` argument
821 * deps: express-session@~1.7.0
822 - Improve session-ending error handling
825 * deps: finalhandler@0.1.0
826 - Respond after request fully read
828 * deps: method-override@~2.1.2
830 - deps: parseurl@~1.2.0
831 * deps: morgan@~1.2.0
832 - Add `:remote-user` token
833 - Add `combined` log format
834 - Add `common` log format
835 - Remove non-standard grey color from `dev` format
836 * deps: multiparty@3.3.1
837 * deps: parseurl@~1.2.0
838 - Cache URLs based on original value
839 - Remove no-longer-needed URL mis-parse work-around
840 - Simplify the "fast-path" `RegExp`
841 * deps: serve-static@~1.4.0
842 - Add `dotfiles` option
843 - deps: parseurl@~1.2.0
850 - Add support for multiple wildcards in namespaces
851 * deps: express-session@~1.6.4
852 * deps: method-override@~2.1.0
853 - add simple debug output
854 - deps: methods@1.1.0
855 - deps: parseurl@~1.1.3
856 * deps: parseurl@~1.1.3
857 - faster parsing of href-only URLs
858 * deps: serve-static@~1.3.1
859 - deps: parseurl@~1.1.3
865 - Fix `cookie.signed` option to actually sign cookie
866 * deps: express-session@~1.6.1
867 - Fix `res.end` patch to return correct value
868 - Fix `res.end` patch to handle multiple `res.end` calls
869 - Reject cookies with missing signatures
870 * deps: multiparty@3.3.0
871 - Always emit close after all parts ended
872 - Fix callback hang in node.js 0.8 on errors
873 * deps: serve-static@~1.3.0
874 - Accept string for `maxAge` (converted by `ms`)
875 - Add `setHeaders` option
876 - Include HTML link in redirect response
882 * deps: cookie-parser@1.3.2
883 - deps: cookie-signature@1.0.4
884 * deps: cookie-signature@1.0.4
885 - fix for timing attacks
886 * deps: express-session@~1.5.2
887 - deps: cookie-signature@1.0.4
888 * deps: type-is@~1.3.2
894 * deprecate `connect(middleware)` -- use `app.use(middleware)` instead
895 * deprecate `connect.createServer()` -- use `connect()` instead
896 * fix `res.setHeader()` patch to work with get -> append -> set pattern
897 * deps: compression@~1.0.8
898 * deps: errorhandler@~1.1.1
899 * deps: express-session@~1.5.0
900 - Deprecate integration with `cookie-parser` middleware
901 - Deprecate looking for secret in `req.secret`
902 - Directly read cookies; `cookie-parser` no longer required
903 - Directly set cookies; `res.cookie` no longer required
904 - Generate session IDs with `uid-safe`, faster and even less collisions
905 * deps: serve-index@~1.1.3
910 * deps: body-parser@1.4.3
911 - deps: type-is@1.3.1
916 * deps: type-is@1.3.1
917 - fix global variable leak
922 * deprecate `verify` option to `json` -- use `body-parser` npm module instead
923 * deprecate `verify` option to `urlencoded` -- use `body-parser` npm module instead
924 * deprecate things with `depd` module
925 * use `finalhandler` for final response handling
926 * use `media-typer` to parse `content-type` for charset
927 * deps: body-parser@1.4.2
928 - check accepted charset in content-type (accepts utf-8)
929 - check accepted encoding in content-encoding (accepts identity)
930 - deprecate `urlencoded()` without provided `extended` option
931 - lazy-load urlencoded parsers
932 - support gzip and deflate bodies
933 - set `inflate: false` to turn off
934 - deps: raw-body@1.2.2
935 - deps: type-is@1.3.0
936 - Support all encodings from `iconv-lite`
937 * deps: connect-timeout@1.1.1
939 * deps: cookie-parser@1.3.1
940 - export parsing functions
941 - `req.cookies` and `req.signedCookies` are now plain objects
942 - slightly faster parsing of many cookies
944 * deps: errorhandler@1.1.0
945 - Display error on console formatted like `throw`
946 - Escape HTML in stack trace
947 - Escape HTML in title
948 - Fix up edge cases with error sent in response
949 - Set `X-Content-Type-Options: nosniff` header
950 - Use accepts for negotiation
951 * deps: express-session@1.4.0
952 - Add `genid` option to generate custom session IDs
953 - Add `saveUninitialized` option to control saving uninitialized sessions
954 - Add `unset` option to control unsetting `req.session`
955 - Generate session IDs with `rand-token` by default; reduce collisions
956 - Integrate with express "trust proxy" by default
957 - deps: buffer-crc32@0.2.3
959 * deps: multiparty@3.2.9
960 * deps: serve-index@1.1.2
962 * deps: type-is@1.3.0
963 - improve type parsing
965 - Accept `RegExp` object for `hostname`
966 - Provide `req.vhost` object
967 - Support IPv6 literal in `Host` header
972 * deps: body-parser@1.3.1
973 - deps: type-is@1.2.1
974 * deps: compression@1.0.7
975 - use vary module for better `Vary` behavior
976 - deps: accepts@1.0.3
977 - deps: compressible@1.1.0
979 * deps: serve-index@1.1.1
980 - deps: accepts@1.0.3
981 * deps: serve-static@1.2.3
982 - Do not throw un-catchable error on file open race condition
989 - refactor to use csrf-tokens@~1.0.2
991 * deps: serve-static@1.2.2
992 - fix "event emitter leak" warnings
994 * deps: type-is@1.2.1
995 - Switch dependency from `mime` to `mime-types@1.0.0`
1000 * deps: errorhandler@1.0.2
1001 - Pass on errors from reading error files
1002 * deps: method-override@2.0.2
1003 - use vary module for better `Vary` behavior
1004 * deps: serve-favicon@2.0.1
1005 - Reduce byte size of `ETag` header
1010 * deps: compression@1.0.6
1011 - fix listeners for delayed stream creation
1012 - fix regression for certain `stream.pipe(res)` situations
1013 - fix regression when negotiation fails
1018 * deps: compression@1.0.4
1019 - fix adding `Vary` when value stored as array
1020 - fix back-pressure behavior
1021 - fix length check for `res.end`
1026 * fix deprecated `utils.escape`
1031 * deprecate `methodOverride()` -- use `method-override` npm module instead
1032 * deps: body-parser@1.3.0
1033 - add `extended` option to urlencoded parser
1034 * deps: method-override@2.0.1
1036 - deps: methods@1.0.1
1037 * deps: multiparty@3.2.8
1038 * deps: response-time@2.0.0
1039 - add `digits` argument
1040 - do not override existing `X-Response-Time` header
1041 - timer not subject to clock drift
1042 - timer resolution down to nanoseconds
1043 * deps: serve-static@1.2.1
1044 - send max-age in Cache-Control in correct format
1045 - use `escape-html` for escaping
1051 * deps: compression@1.0.3
1052 * deps: serve-index@1.1.0
1053 - Fix content negotiation when no `Accept` header
1054 - Properly support all HTTP methods
1055 - Support vanilla node.js http servers
1056 - Treat `ENAMETOOLONG` as code 414
1057 - Use accepts for negotiation
1058 * deps: serve-static@1.2.0
1059 - Calculate ETag with md5 for reduced collisions
1060 - Fix wrong behavior when index file matches directory
1061 - Ignore stream errors after request ends
1062 - Skip directories in index file search
1068 * deps: express-session@1.2.1
1069 - Fix `resave` such that `resave: true` works
1074 * deps: body-parser@1.2.2
1075 - invoke `next(err)` after request fully read
1076 - deps: raw-body@1.1.6
1077 * deps: method-override@1.0.2
1078 - Handle `req.body` key referencing array or object
1079 - Handle multiple HTTP headers
1084 * fix `res.charset` appending charset when `content-type` has one
1089 * deps: express-session@1.2.0
1090 - Add `resave` option to control saving unmodified sessions
1091 * deps: morgan@1.1.1
1092 - "dev" format will use same tokens as other formats
1093 - `:response-time` token is now empty when immediate used
1094 - `:response-time` token is now monotonic
1095 - `:response-time` token has precision to 1 μs
1096 - fix `:status` + immediate output in node.js 0.8
1097 - improve `buffer` option to prevent indefinite event loop holding
1098 - simplify method to get remote address
1100 * deps: serve-index@1.0.3
1101 - Fix error from non-statable files in HTML view
1106 * fix edge-case in `res.appendHeader` that would append in wrong order
1107 * deps: method-override@1.0.1
1112 * remove usages of `res.headerSent` from core
1117 * deprecate `res.headerSent` -- use `res.headersSent`
1118 * deprecate `res.on("header")` -- use on-headers module instead
1119 * fix `connect.version` to reflect the actual version
1120 * json: use body-parser
1122 - fix repeated limit parsing with every request
1123 - improve parser speed
1124 * urlencoded: use body-parser
1126 - fix repeated limit parsing with every request
1128 * add negative support
1129 * dep: cookie-parser@1.1.0
1130 - deps: cookie@0.1.2
1132 - add support for double-submit cookie
1133 * dep: express-session@1.1.0
1134 - Add `name` option; replacement for `key` option
1135 - Use `setImmediate` in MemoryStore for node.js >= 0.10
1140 * Add simple `res.cookie` support
1141 * Add `res.appendHeader`
1142 * Call error stack even when response has been sent
1143 * Patch `res.headerSent` to return Boolean
1144 * Patch `res.headersSent` for node.js 0.8
1145 * Prevent default 404 handler after response sent
1146 * dep: compression@1.0.2
1147 * support headers given to `res.writeHead`
1149 * deps: negotiator@0.4.3
1150 * dep: connect-timeout@1.1.0
1151 * Add `req.timedout` property
1152 * Add `respond` option to constructor
1153 * Clear timer on socket destroy
1156 * add `enable()` method
1157 * change from stderr to stdout
1158 * dep: errorhandler@1.0.1
1159 * Clean up error CSS
1160 * Do not respond after headers sent
1161 * dep: express-session@1.0.4
1162 * Remove import of `setImmediate`
1163 * Use `res.cookie()` instead of `res.setHeader()`
1164 * deps: cookie@0.1.2
1167 * Make buffer unique per morgan instance
1169 * dep: serve-favicon@2.0.0
1170 * Accept `Buffer` of icon as first argument
1171 * Non-GET and HEAD requests are denied
1172 * Send valid max-age value
1173 * Support conditional requests
1175 * Support OPTIONS method
1176 * Throw if `path` argument is directory
1177 * dep: serve-index@1.0.2
1178 * Add stylesheet option
1179 * deps: negotiator@0.4.3
1184 * dep: raw-body@1.1.4
1185 * allow true as an option
1187 * dep: serve-static@1.1.0
1188 * Accept options directly to `send` module
1195 * added terabyte support
1197 * add constant-time string compare
1198 * dep: serve-static@1.0.4
1199 * Resolve relative paths at middleware setup
1200 * Use parseurl to parse the URL from request
1201 * fix node.js 0.8 compatibility with memory session
1206 * dep: static-favicon@1.0.2
1207 * Fixed content of default icon
1212 * dep: static-favicon@1.0.1
1213 * Fixed path to default icon
1220 * dep: serve-index@1.0.1
1221 * deps: negotiator@0.4.2
1222 * dep: serve-static@1.0.2
1228 * basicAuth: use basic-auth-connect
1229 * cookieParser: use cookie-parser
1230 * compress: use compression
1232 * dep: cookie-signature@1.0.3
1233 * directory: use serve-index
1234 * errorHandler: use errorhandler
1235 * favicon: use static-favicon
1236 * logger: use morgan
1237 * methodOverride: use method-override
1238 * responseTime: use response-time
1239 * session: use express-session
1240 * static: use serve-static
1241 * timeout: use connect-timeout
1247 * cookieSession: compare full value rather than crc32
1248 * deps: raw-body@1.1.3
1253 * fix typo in memory store warning #974 @rvagg
1254 * compress: use compressible
1255 * directory: add template option #990 @gottaloveit @Earl-Brown
1256 * csrf: prevent deprecated warning with old sessions
1262 * directory: sort folders before files
1263 * directory: add folder icons
1264 * directory: de-duplicate icons, details/mobile views #968 @simov
1265 * errorHandler: end default 404 handler with a newline #972 @rlidwka
1266 * session: remove long cookie expire check #870 @undoZen
1277 * errorHandler: use `res.setHeader()` instead of `res.writeHead()` #949 @lo1tuma
1285 * sessions: add rolling session option #944 @ilmeo
1286 * sessions: property set cookies when given FQDN
1287 * cookieSessions: properly set cookies when given FQDN #948 @bmancini55
1288 * proto: fix FQDN mounting when multiple handlers #945 @bmancini55
1293 * fixed; fixed a bug with static middleware at root and trailing slashes #942 (@dougwilson)
1298 * fixed: set headers written by writeHead before emitting 'header'
1299 * fixed: mounted path should ignore querystrings on FQDNs #940 (@dougwilson)
1300 * fixed: parsing protocol-relative URLs with @ as pathnames #938 (@dougwilson)
1301 * fixed: fix static directory redirect for mount's root #937 (@dougwilson)
1302 * fixed: setting set-cookie header when mixing arrays and strings #893 (@anuj123)
1303 * bodyParser: optional verify function for urlencoded and json parsers for signing request bodies
1304 * compress: compress checks content-length to check threshold
1305 * compress: expose `res.flush()` for flushing responses
1306 * cookieParser: pass options into node-cookie #803 (@cauldrath)
1307 * errorHandler: replace `\n`s with `<br/>`s in error handler
1312 * warn about multiparty and limit middleware deprecation for v3
1313 * fix fully qualified domain name mounting. #920 (@dougwilson)
1314 * directory: Fix potential security issue with serving files outside the root. #929 (@dougwilson)
1315 * logger: store IP at beginning in case socket prematurely closes #930 (@dougwilson)
1321 * compress: Set vary header only if Content-Type passes filter #904
1322 * directory: Fix directory middleware URI escaping #917 (@dougwilson)
1323 * directory: Fix directory seperators for Windows #914 (@dougwilson)
1324 * directory: Keep query string intact during directory redirect #913 (@dougwilson)
1325 * directory: Fix paths in links #730 (@JacksonTian)
1326 * errorHandler: Don't escape text/plain as HTML #875 (@johan)
1327 * logger: Write '0' instead of '-' when response time is zero #910 (@dougwilson)
1328 * logger: Log even when connections are aborted #760 (@dylanahsmith)
1329 * methodOverride: Check req.body is an object #907 (@kbjr)
1330 * multipart: Add .type back to file parts for backwards compatibility #912 (@dougwilson)
1331 * multipart: Allow passing options to the Multiparty constructor #902 (@niftylettuce)
1336 * multipart: add docs regarding tmpfiles
1337 * multipart: add .name back to file parts
1338 * multipart: use multiparty instead of formidable
1343 * csrf: change to math.random() salt and remove csrfToken() callback
1348 * csrf: prevent salt generation on every request, and add async req.csrfToken(fn)
1353 * csrf: refactor to use HMAC tokens (BREACH attack)
1354 * compress: add compression of SVG and common font files by default.
1359 * add: compress Dart source files by default
1370 * add a name back to static middleware ("staticMiddleware")
1371 * fix .hasBody() utility to require transfer-encoding or content-length
1377 * update cookie dep.
1378 * add better debug() for middleware
1379 * add whitelisting of supported methods to methodOverride()
1384 * fix: escape req.method in 404 response
1389 * add `threshold` option to `compress()` to prevent compression of small responses
1390 * add support for vendor JSON mime types in json()
1391 * add X-Forwarded-Proto initial https proxy support
1392 * change static redirect to 303
1393 * change octal escape sequences for strict mode
1394 * change: replace utils.uid() with uid2 lib
1395 * remove other "static" function name. Fixes #794
1396 * fix: hasBody() should return false if Content-Length: 0
1408 * fix: write/end to noop() when request aborted
1414 * drop support for node < v0.8
1424 * update qs dependency
1425 * remove "static" function name. Closes #794
1426 * update node-formidable
1427 * update buffer-crc32
1432 * revert cookie signature which was creating session race conditions
1437 * update cookie-signature
1438 * limit: do not consume request in node 0.10.x
1443 * session: add long expires check and prevent excess set-cookie
1444 * session: add console.error() of session#save() errors
1449 * add name to compress middleware
1450 * add appending Accept-Encoding to Vary when set but missing
1451 * add tests for csrf middleware
1452 * add 'next' support for connect() server handler
1453 * change utils.uid() to return url-safe chars. Closes #753
1454 * fix treating '.' as a regexp in vhost()
1455 * fix duplicate bytes dep in package.json. Closes #743
1456 * fix #733 - parse x-forwarded-proto in a more generally compatibly way
1457 * revert "add support for `next(status[, msg])`"; makes composition hard
1462 * add support for `next(status[, msg])` back
1463 * add utf-8 meta tag to support foreign characters in filenames/directories
1464 * change `timeout()` 408 to 503
1465 * replace 'node-crc' with 'buffer-crc32', fixes licensing
1466 * fix directory.html IE support
1471 * add directory() tests
1472 * add support for bodyParser to ignore Content-Type if no body is present (jquery primarily does this poorely)
1473 * fix errorHandler signature
1478 * add support for leading JSON whitespace
1479 * add logging of `req.ip` when present
1480 * add basicAuth support for `:`-delimited string
1481 * update cookie module. Closes #688
1486 * add `debug()` for disconnected session store
1487 * fix session regeneration bug. Closes #681
1492 * add passing of `connect.timeout()` errors to `next()`
1493 * replace signature utils with cookie-signature module
1498 * add `defer` option to `multipart()` [Blake Miner]
1499 * fix mount path case sensitivity. Closes #663
1500 * fix default of ascii encoding from `logger()`, now utf8. Closes #293
1505 * add `err.status = 400` to multipart() errors
1506 * add double-encoding protection to `compress()`. Closes #659
1507 * add graceful handling cookie parsing errors [shtylman]
1508 * fix typo X-Response-time to X-Response-Time
1518 * add session store "connect" / "disconnect" support [louischatriot]
1519 * fix `:url` log token
1524 * fix `static()` pause regression from "send" integration
1529 * fix `.write()` encoding for zlib inconstancy. Closes #561
1534 * remove limit default from `urlencoded()`
1535 * remove limit default from `json()`
1536 * remove limit default from `multipart()`
1537 * fix `cookieSession()` clear cookie path / domain bug. Closes #636
1542 * fix `options` mutation in `static()`
1547 * add `connect.timeout()`
1548 * add __GET__ / __HEAD__ check to `directory()`. Closes #634
1549 * add "pause" util dep
1550 * update send dep for normalization bug
1555 * add more descriptive invalid json error message
1556 * update send dep for root normalization regression
1557 * fix staticCache fresh dep
1562 * fix `connect.static()` 404 regression, pass `next()`. Closes #629
1567 * add `json()` utf-8 illustration test. Closes #621
1568 * add "send" dependency
1569 * change `connect.static()` internals to use "send"
1570 * fix `session()` req.session generation with pathname mismatch
1571 * fix `cookieSession()` req.session generation with pathname mismatch
1572 * fix mime export. Closes #618
1577 * Fixed cookieSession() with cookieParser() secret regression. Closes #602
1578 * Fixed set-cookie header fields on cookie.path mismatch. Closes #615
1583 * Remove `logger()` mount check
1584 * Fixed `staticCache()` dont cache responses with set-cookie. Closes #607
1585 * Fixed `staticCache()` when Cookie is present
1590 * Added `err.buf` to urlencoded() and json()
1591 * Update cookie to 0.0.4. Closes #604
1592 * Fixed: only send 304 if original response in 2xx or 304 [timkuijsten]
1597 * Added ETags back to `static()` [timkuijsten]
1598 * Replaced `utils.parseRange()` with `range-parser` module
1599 * Replaced `utils.parseBytes()` with `bytes` module
1600 * Replaced `utils.modified()` with `fresh` module
1601 * Fixed `cookieSession()` regression with invalid cookie signing [shtylman]
1606 * expose mime module
1607 * Update crc dep (which bundled nodeunit)
1612 * Added `secret` option to `cookieSession` middleware [shtylman]
1613 * Added `secret` option to `session` middleware [shtylman]
1614 * Added `req.remoteUser` back to `basicAuth()` as alias of `req.user`
1615 * Performance: improve signed cookie parsing
1616 * Update `cookie` dependency [shtylman]
1621 * Added limit option to `json()`
1622 * Added limit option to `urlencoded()`
1623 * Added limit option to `multipart()`
1624 * Fixed: remove socket error event listener on callback
1625 * Fixed __ENOTDIR__ error on `static` middleware
1630 * Added support to csrf middle for pre-flight CORS requests
1631 * Updated `engines` to allow newer version of node
1632 * Removed duplicate repo prop. Closes #560
1637 * Fixed `static()` redirect when mounted. Closes #554
1642 * Added `make benchmark`
1643 * Perf: memoize url parsing (~20% increase)
1644 * Fixed `connect(fn, fn2, ...)`. Closes #549
1649 * Added optional json() `reviver` function to be passed to JSON.parse [jed]
1650 * Fixed: emit drain in compress middleware [nsabovic]
1655 * Fixed cookieParser() `req.cookies` regression
1660 * Fixed `session()` browser-session length cookies & examples
1661 * Fixed: make `query()` "self-aware" [jed]
1666 * Added `debug()` calls to `.use()` (`DEBUG=connect:displatcher`)
1667 * Added `urlencoded()` support for GET
1668 * Added `json()` support for GET. Closes #497
1669 * Added `strict` option to `json()`
1670 * Changed: `session()` only set-cookie when modified
1671 * Removed `Session#lastAccess` property. Closes #399
1676 * Added: `cookieSession()` only sets cookie on change. Closes #442
1677 * Added `connect:dispatcher` debug() probes
1682 * Added test for __ENAMETOOLONG__ now that node is fixed
1683 * Fixed static() index "/" check on windows. Closes #498
1684 * Fixed Content-Range behaviour to match RFC2616 [matthiasdg / visionmedia]
1689 * Added test coverage for `vhost()` middleware
1690 * Changed `cookieParser()` signed cookie support to use SHA-2 [senotrusov]
1691 * Fixed `static()` Range: respond with 416 when unsatisfiable
1692 * Fixed `vhost()` middleware. Closes #494
1697 * Added `cookieSession()` middleware for cookie-only sessions
1698 * Added `compress()` middleware for gzip / deflate support
1699 * Added `session()` "proxy" setting to trust `X-Forwarded-Proto`
1700 * Added `json()` middleware to parse "application/json"
1701 * Added `urlencoded()` middleware to parse "application/x-www-form-urlencoded"
1702 * Added `multipart()` middleware to parse "multipart/form-data"
1703 * Added `cookieParser(secret)` support so anything using this middleware may access signed cookies
1704 * Added signed cookie support to `cookieParser()`
1705 * Added support for JSON-serialized cookies to `cookieParser()`
1706 * Added `err.status` support in Connect's default end-point
1707 * Added X-Cache MISS / HIT to `staticCache()`
1708 * Added public `res.headerSent` checking nodes `res._headerSent` until node does
1709 * Changed `basicAuth()` req.remoteUser to req.user
1710 * Changed: default `session()` to a browser-session cookie. Closes #475
1711 * Changed: no longer lowercase cookie names
1712 * Changed `bodyParser()` to use `json()`, `urlencoded()`, and `multipart()`
1713 * Changed: `errorHandler()` is now a development-only middleware
1714 * Changed middleware to `next()` errors when possible so applications can unify logging / handling
1715 * Removed `http[s].Server` inheritance, now just a function, making it easy to have an app providing both http and https
1716 * Removed `.createServer()` (use `connect()`)
1717 * Removed `secret` option from `session()`, use `cookieParser(secret)`
1718 * Removed `connect.session.ignore` array support
1719 * Removed `router()` middleware. Closes #262
1720 * Fixed: set-cookie only once for browser-session cookies
1721 * Fixed FQDN support. dont add leading "/"
1722 * Fixed 404 XSS attack vector. Closes #473
1723 * Fixed __HEAD__ support for 404s and 500s generated by Connect's end-point
1728 * Fixed: actually allow empty body for json
1733 * Changed: allow empty body for json/urlencoded requests. Backport for #443
1738 * Fixed `static()` _index.html_ support on windows
1743 * Fixed potential security issue, store files in req.files. Closes #431 [reported by dobesv]
1748 * Added nesting support for _multipart/form-data_ [jackyz]
1753 * Added _multipart/form-data_ support to `bodyParser()` using formidable
1758 * Fixed `req.body`, always default to {}
1759 * Fixed HEAD support for 404s and 500s
1764 * "node": ">= 0.4.1 < 0.7.0"
1765 * Added `static()` redirect option. Closes #398
1766 * Changed `limit()`: respond with 413 when content-length exceeds the limit
1767 * Removed socket error listener in static(). Closes #389
1768 * Fixed `staticCache()` Age header field
1769 * Fixed race condition causing errors reported in #329.
1774 * Added: make `Store` inherit from `EventEmitter`
1775 * Added session `Store#load(sess, fn)` to fetch a `Session` instance
1776 * Added backpressure support to `staticCache()`
1777 * Changed `res.socket.destroy()` to `req.socket.destroy()`
1782 * Added `staticCache()` middleware, a memory cache for `static()`
1783 * Added public `res.headerSent` checking nodes `res._headerSent` (remove when node adds this)
1784 * Changed: ignore error handling middleware when header is sent
1785 * Changed: dispatcher errors after header is sent destroy the sock
1790 * Revert "Added double-next reporting"
1795 * Added double-`next()` reporting
1796 * Added `immediate` option to `logger()`. Closes #321
1797 * Dependency `qs >= 0.3.1`
1802 * Fixed `connect.static()` null byte vulnerability
1803 * Fixed `connect.directory()` null byte vulnerability
1804 * Changed: 301 redirect in `static()` to postfix "/" on directory. Closes #289
1809 * Added: allow retval `== null` from logger callback to ignore line
1810 * Added `getOnly` option to `connect.static.send()`
1811 * Added response "header" event allowing augmentation
1812 * Added `X-CSRF-Token` header field check
1813 * Changed dep `qs >= 0.3.0`
1814 * Changed: persist csrf token. Closes #322
1815 * Changed: sort directory middleware files alphabetically
1820 * Added :response-time to "dev" logger format
1821 * Added simple `csrf()` middleware. Closes #315
1822 * Fixed `res._headers` logger regression. Closes #318
1823 * Removed support for multiple middleware being passed to `.use()`
1828 * Added `filter` function option to `directory()` [David Rio Deiros]
1829 * Changed: re-write of the `logger()` middleware, with extensible tokens and formats
1830 * Changed: `static.send()` ".." in path without root considered malicious
1831 * Fixed quotes in docs. Closes #312
1832 * Fixed urls when mounting `directory()`, use `originalUrl` [Daniel Dickison]
1838 * Added malicious path check to `directory()` middleware
1839 * Added `utils.forbidden(res)`
1840 * Added `connect.query()` middleware
1845 * Added `connect.directory()` middleware for serving directory listings
1850 * Fixed `connect.static()` root with `..`
1851 * Fixed `connect.static()` __EBADF__
1856 * Fixed EBADF in `connect.static()`. Closes #297
1861 * Changed `connect.static()` to check resolved dirname. Closes #294
1866 * Fixed fd leak in `connect.static()` when the socket is closed
1867 * Fixed; `bodyParser()` ignoring __GET/HEAD__. Closes #285
1872 * Changed to `devDependencies`
1873 * Fixed stream creation on `static()` __HEAD__ request. [Andreas Lind Petersen]
1874 * Fixed Win32 support for `static()`
1875 * Fixed monkey-patch issue. Closes #261
1880 * Added "hidden" option to `static()`. ignores hidden files by default. Closes * Added; expose `connect.static.mime.define()`. Closes #251
1881 * Fixed `errorHandler` middleware for missing stack traces. [aseemk]
1887 * Added route-middleware `next('route')` support to jump passed the route itself
1888 * Added Content-Length support to `limit()`
1889 * Added route-specific middleware support (used to be in express)
1890 * Changed; refactored duplicate session logic
1891 * Changed; prevent redefining `store.generate` per request
1892 * Fixed; `static()` does not set Content-Type when explicitly set [nateps]
1893 * Fixed escape `errorHandler()` {error} contents
1894 * NOTE: `router` will be removed in 2.0
1900 * Added `router.remove(path[, method])` to remove a route
1905 * Fixed basicAuth realm issue when passing strings. Closes #253
1910 * Added `basicAuth(username, password)` support
1911 * Added `errorHandler.title` defaulting to "Connect"
1912 * Changed `errorHandler` css
1917 * Fixed `logger()` https `remoteAddress` logging [Alexander Simmerl]
1922 * Added `router.lookup(path[, method])`
1923 * Added `router.match(url[, method])`
1924 * Added basicAuth async support. Closes #223
1929 * Added; allow `logger()` callback function to return an empty string to ignore logging
1930 * Fixed; utilizing `mime.charsets.lookup()` for `static()`. Closes 245
1935 * Added `logger()` support for format function
1936 * Fixed `logger()` to support mess of writeHead()/progressive api for node 0.4.x
1941 * Changed; `limit()` now calls `req.destroy()`
1946 * Added request "limit" event to `limit()` middleware
1947 * Changed; `limit()` middleware will `next(err)` on failure
1952 * Fixed session middleware for HTTPS. Closes #241 [reported by mt502]
1957 * Added `Session#reload(fn)`
1962 * Fixed `res.setHeader()` patch, preserve casing
1967 * Fixed; `logger()` using `req.originalUrl` instead of `req.url`
1972 * Added `res.charset`
1973 * Added conditional sessions example
1974 * Added support for `session.ignore` to be replaced. Closes #227
1975 * Fixed `Cache-Control` delimiters. Closes #228
1980 * Fixed; `static.send()` invokes callback with connection error
1985 * Fixed exported connect function
1986 * Fixed package.json; node ">= 0.4.1 < 0.5.0"
1991 * Added `Session#save(fn)`. Closes #213
1992 * Added callback support to `connect.static.send()` for express
1993 * Added `connect.static.send()` "path" option
1994 * Fixed content-type in `static()` for _index.html_
1999 * Added `stack`, `message`, and `dump` errorHandler option aliases
2000 * Added `req.originalMethod` to methodOverride
2001 * Added `favicon()` maxAge option support
2002 * Added `connect()` alternative to `connect.createServer()`
2003 * Added new [documentation](http://senchalabs.github.com/connect)
2004 * Added Range support to `static()`
2005 * Added HTTPS support
2006 * Rewrote session middleware. The session API now allows for
2007 session-specific cookies, so you may alter each individually.
2008 Click to view the new [session api](http://senchalabs.github.com/connect/middleware-session.html).
2009 * Added middleware self-awareness. This helps prevent
2010 middleware breakage when used within mounted servers.
2011 For example `cookieParser()` will not parse cookies more
2012 than once even when within a mounted server.
2013 * Added new examples in the `./examples` directory
2014 * Added [limit()](http://senchalabs.github.com/connect/middleware-limit.html) middleware
2015 * Added [profiler()](http://senchalabs.github.com/connect/middleware-profiler.html) middleware
2016 * Added [responseTime()](http://senchalabs.github.com/connect/middleware-responseTime.html) middleware
2017 * Renamed `staticProvider` to `static`
2018 * Renamed `bodyDecoder` to `bodyParser`
2019 * Renamed `cookieDecoder` to `cookieParser`
2020 * Fixed ETag quotes. [reported by papandreou]
2021 * Fixed If-None-Match comma-delimited ETag support. [reported by papandreou]
2022 * Fixed; only set req.originalUrl once. Closes #124
2023 * Fixed symlink support for `static()`. Closes #123
2028 * Fixed SID space issue. Closes #196
2029 * Fixed; proxy `res.end()` to commit session data
2030 * Fixed directory traversal attack in `staticProvider`. Closes #198
2040 * Added `qs` dependency
2041 * Fixed router race-condition causing possible failure
2042 when `next()`ing to one or more routes with parallel
2048 * Added `onvhost()` call so Express (and others) can know when they are
2049 * Revert "Added stylus support" (use the middleware which ships with stylus)
2050 * Removed custom `Server#listen()` to allow regular `http.Server#listen()` args to work properly
2051 * Fixed long standing router issue (#83) that causes '.' to be disallowed within named placeholders in routes [Andreas Lind Petersen]
2052 * Fixed `utils.uid()` length error [Jxck]
2058 * Added stylus support to `compiler`
2059 * _favicon.js_ cleanup
2060 * _compiler.js_ cleanup
2061 * _bodyDecoder.js_ cleanup
2066 * Changed; using sha256 HMAC instead of md5. [Paul Querna]
2067 * Changed; generated a longer random UID, without time influence. [Paul Querna]
2068 * Fixed; session middleware throws when secret is not present. [Paul Querna]
2073 * Added; throw when router path or callback is missing
2074 * Fixed; `next(err)` on cookie parse exception instead of ignoring
2075 * Revert "Added utils.pathname(), memoized url.parse(str).pathname"
2080 * Added _docs/api.html_
2081 * Added `utils.pathname()`, memoized url.parse(str).pathname
2082 * Fixed `session.id` issue. Closes #183
2083 * Changed; Defaulting `staticProvider` maxAge to 0 not 1 year. Closes #179
2084 * Removed bad outdated docs, we need something new / automated eventually
2089 * Added default __OPTIONS__ support to _router_ middleware
2094 * Added `req.session.id` mirroring `req.sessionID`
2095 * Refactored router, exposing `connect.router.methods`
2096 * Exclude non-lib files from npm
2097 * Removed imposed headers `X-Powered-By`, `Server`, etc
2102 * Added _./index.js_
2103 * Added route segment precondition support and example
2104 * Added named capture group support to router
2109 * Added `basicAuth` middleware
2110 * Added more HTTP methods to the `router` middleware
2115 * Added _staticGzip_ middleware
2116 * Added `connect.utils` to expose utils
2117 * Added `connect.session.Session`
2118 * Added `connect.session.Store`
2119 * Added `connect.session.MemoryStore`
2120 * Added `connect.middleware` to expose the middleware getters
2121 * Added `buffer` option to _logger_ for performance increase
2122 * Added _favicon_ middleware for serving your own favicon or the connect default
2123 * Added option support to _staticProvider_, can now pass _root_ and _lifetime_.
2124 * Added; mounted `Server` instances now have the `route` property exposed for reflection
2125 * Added support for callback as first arg to `Server#use()`
2126 * Added support for `next(true)` in _router_ to bypass match attempts
2127 * Added `Server#listen()` _host_ support
2128 * Added `Server#route` when `Server#use()` is called with a route on a `Server` instance
2129 * Added _methodOverride_ X-HTTP-Method-Override support
2130 * Refactored session internals, adds _secret_ option
2131 * Renamed `lifetime` option to `maxAge` in _staticProvider_
2132 * Removed connect(1), it is now [spark(1)](http://github.com/senchalabs/spark)
2133 * Removed connect(1) dependency on examples, they can all now run with node(1)
2134 * Remove a typo that was leaking a global.
2135 * Removed `Object.prototype` forEach() and map() methods
2136 * Removed a few utils not used
2137 * Removed `connect.createApp()`
2138 * Removed `res.simpleBody()`
2139 * Removed _format_ middleware
2140 * Removed _flash_ middleware
2141 * Removed _redirect_ middleware
2142 * Removed _jsonrpc_ middleware, use [visionmedia/connect-jsonrpc](http://github.com/visionmedia/connect-jsonrpc)
2143 * Removed _pubsub_ middleware
2144 * Removed need for `params.{captures,splat}` in _router_ middleware, `params` is an array
2145 * Changed; _compiler_ no longer 404s
2146 * Changed; _router_ signature now matches connect middleware signature
2147 * Fixed a require in _session_ for default `MemoryStore`
2148 * Fixed nasty request body bug in _router_. Closes #54
2149 * Fixed _less_ support in _compiler_
2150 * Fixed bug preventing proper bubbling of exceptions in mounted servers
2151 * Fixed bug in `Server#use()` preventing `Server` instances as the first arg
2152 * Fixed **ENOENT** special case, is now treated as any other exception
2153 * Fixed spark env support
2158 * Added support for _router_ `next()` to continue calling matched routes
2159 * Added mime type for _cache.manifest_ files.
2160 * Changed _compiler_ middleware to use async require
2161 * Changed session api, stores now only require `#get()`, and `#set()`
2162 * Fixed _cacheManifest_ by adding `utils.find()` back
2167 * Added calls to `Session()` casts the given object as a `Session` instance
2168 * Added passing of `next()` to _router_ callbacks. Closes #46
2169 * Changed; `MemoryStore#destroy()` removes `req.session`
2170 * Changed `res.redirect("back")` to default to "/" when Referr?er is not present
2171 * Fixed _staticProvider_ urlencoded paths issue. Closes #47
2172 * Fixed _staticProvider_ middleware responding to **GET** requests
2173 * Fixed _jsonrpc_ middleware `Accept` header check. Closes #43
2174 * Fixed _logger_ format option
2175 * Fixed typo in _compiler_ middleware preventing the _dest_ option from working
2180 * Revamped the api, view the [Connect documentation](http://extjs.github.com/Connect/index.html#Middleware-Authoring) for more info (hover on the right for menu)
2181 * Added [extended api docs](http://extjs.github.com/Connect/api.html)
2182 * Added docs for several more middleware layers
2183 * Added `connect.Server#use()`
2184 * Added _compiler_ middleware which provides arbitrary static compilation
2185 * Added `req.originalUrl`
2186 * Removed _blog_ example
2187 * Removed _sass_ middleware (use _compiler_)
2188 * Removed _less_ middleware (use _compiler_)
2189 * Renamed middleware to be camelcase, _body-decoder_ is now _bodyDecoder_ etc.
2190 * Fixed `req.url` mutation bug when matching `connect.Server#use()` routes
2191 * Fixed `mkdir -p` implementation used in _bin/connect_. Closes #39
2192 * Fixed bug in _bodyDecoder_ throwing exceptions on request empty bodies
2193 * `make install` installing lib to $LIB_PREFIX aka $HOME/.node_libraries
2198 * Added _static_ middleware usage example
2199 * Added support for regular expressions as paths for _router_
2200 * Added `util.merge()`
2201 * Increased performance of _static_ by ~ 200 rps
2202 * Renamed the _rest_ middleware to _router_
2203 * Changed _rest_ api to accept a callback function
2204 * Removed _router_ middleware
2205 * Removed _proto.js_, only `Object#forEach()` remains
2210 * Added Server#use() which contains the Layer normalization logic
2211 * Added documentation for several middleware
2212 * Added several new examples
2213 * Added _less_ middleware
2214 * Added _repl_ middleware
2215 * Added _vhost_ middleware
2216 * Added _flash_ middleware
2217 * Added _cookie_ middleware
2218 * Added _session_ middleware
2219 * Added `utils.htmlEscape()`
2220 * Added `utils.base64Decode()`
2221 * Added `utils.base64Encode()`
2222 * Added `utils.uid()`
2223 * Added bin/connect app path and --config path support for .js suffix, although optional. Closes #26
2224 * Moved mime code to `utils.mime`, ex `utils.mime.types`, and `utils.mime.type()`
2225 * Renamed req.redirect() to res.redirect(). Closes #29
2226 * Fixed _sass_ 404 on **ENOENT**
2227 * Fixed +new Date duplication. Closes #24
2232 * Added workerPidfile() to bin/connect
2233 * Added --workers support to bin/connect stop and status commands
2234 * Added _redirect_ middleware
2235 * Added better --config support to bin/connect. All flags can be utilized
2236 * Added auto-detection of _./config.js_
2237 * Added config example
2238 * Added `net.Server` support to bin/connect
2239 * Writing worker pids relative to `env.pidfile`
2240 * s/parseQuery/parse/g
2246 * Fixed node dependency in package.json, now _">= 0.1.98-0"_ to support __HEAD__
2251 * Added `-V, --version` to bin/connect
2252 * Added `utils.parseCookie()`
2253 * Added `utils.serializeCookie()`
2254 * Added `utils.toBoolean()`
2255 * Added _sass_ middleware
2256 * Added _cookie_ middleware
2257 * Added _format_ middleware
2258 * Added _lint_ middleware
2259 * Added _rest_ middleware
2260 * Added _./package.json_ (npm install connect)
2261 * Added `handleError()` support
2262 * Added `process.connectEnv`
2263 * Added custom log format support to _log_ middleware
2264 * Added arbitrary env variable support to bin/connect (ext: --logFormat ":method :url")
2265 * Added -w, --workers to bin/connect
2266 * Added bin/connect support for --user NAME and --group NAME
2267 * Fixed url re-writing support