# HISTORY

## 0.17.1 / 2019-05-10

* Set stricter CSP header in redirect & error responses
* deps: range-parser@\~1.2.1

## 0.17.0 / 2019-05-03

* deps: http-errors@\~1.7.2
  * Set constructor name when possible
  * Use `toidentifier` module to make class names
  * deps: depd@\~1.1.2
  * deps: setprototypeof\@1.1.1
  * deps: statuses@'>= 1.5.0 < 2'
* deps: mime\@1.6.0
  * Add extensions for JPEG-2000 images
  * Add new `font/*` types from IANA
  * Add WASM mapping
  * Update `.bdoc` to `application/bdoc`
  * Update `.bmp` to `image/bmp`
  * Update `.m4a` to `audio/mp4`
  * Update `.rtf` to `application/rtf`
  * Update `.wav` to `audio/wav`
  * Update `.xml` to `application/xml`
  * Update generic extensions to `application/octet-stream`: `.deb`, `.dll`, `.dmg`, `.exe`, `.iso`, `.msi`
  * Use mime-score module to resolve extension conflicts
* deps: ms\@2.1.1
  * Add `week`/`w` support
  * Fix negative number handling
* deps: statuses@\~1.5.0
* perf: remove redundant `path.normalize` call

## 0.16.2 / 2018-02-07

* Fix incorrect end tag in default error & redirects
* deps: depd@\~1.1.2
  * perf: remove argument reassignment
* deps: encodeurl@\~1.0.2
  * Fix encoding `%` as last character
* deps: statuses@\~1.4.0

## 0.16.1 / 2017-09-29

* Fix regression in edge-case behavior for empty `path`

## 0.16.0 / 2017-09-27

* Add `immutable` option
* Fix missing `</html>` in default error & redirects
* Use instance methods on steam to check for listeners
* deps: mime\@1.4.1
  * Add 70 new types for file extensions
  * Set charset as "UTF-8" for .js and .json
* perf: improve path validation speed

## 0.15.6 / 2017-09-22

* deps: debug\@2.6.9
* perf: improve `If-Match` token parsing

## 0.15.5 / 2017-09-20

* deps: etag@\~1.8.1
  * perf: replace regular expression with substring
* 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

## 0.15.4 / 2017-08-05

* deps: debug\@2.6.8
* deps: depd@\~1.1.1
  * Remove unnecessary `Buffer` loading
* deps: http-errors@\~1.6.2
  * deps: depd\@1.1.1

## 0.15.3 / 2017-05-16

* deps: debug\@2.6.7
  * deps: ms\@2.0.0
* deps: ms\@2.0.0

## 0.15.2 / 2017-04-26

* deps: debug\@2.6.4
  * Fix `DEBUG_MAX_ARRAY_LENGTH`
  * deps: ms\@0.7.3
* deps: ms\@1.0.0

## 0.15.1 / 2017-03-04

* Fix issue when `Date.parse` does not return `NaN` on invalid date
* Fix strict violation in broken environments

## 0.15.0 / 2017-02-25

* Support `If-Match` and `If-Unmodified-Since` headers
* Add `res` and `path` arguments to `directory` event
* Remove usage of `res._headers` private field
  * Improves compatibility with Node.js 8 nightly
* Send complete HTML document in redirect & error responses
* Set default CSP header in redirect & error responses
* Use `res.getHeaderNames()` when available
* Use `res.headersSent` when available
* 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
* 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: http-errors@\~1.6.1
  * Make `message` property enumerable for `HttpError`s
  * deps: setprototypeof\@1.0.3

## 0.14.2 / 2017-01-23

* deps: http-errors@\~1.5.1
  * deps: inherits\@2.0.3
  * deps: setprototypeof\@1.0.2
  * deps: statuses@'>= 1.3.1 < 2'
* deps: ms\@0.7.2
* deps: statuses@\~1.3.1

## 0.14.1 / 2016-06-09

* Fix redirect error when `path` contains raw non-URL characters
* Fix redirect when `path` starts with multiple forward slashes

## 0.14.0 / 2016-06-06

* 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
* Ignore non-byte `Range` headers
* deps: http-errors@\~1.5.0
  * Add `HttpError` export, for `err instanceof createError.HttpError`
  * Support new code `421 Misdirected Request`
  * Use `setprototypeof` module to replace `__proto__` setting
  * deps: inherits\@2.0.1
  * deps: statuses@'>= 1.3.0 < 2'
  * perf: enable strict mode
* deps: range-parser@\~1.2.0
  * Fix incorrectly returning -1 when there is at least one valid range
  * perf: remove internal function
* deps: statuses@\~1.3.0
  * Add `421 Misdirected Request`
  * perf: enable strict mode
* perf: remove argument reassignment

## 0.13.2 / 2016-03-05

* Fix invalid `Content-Type` header when `send.mime.default_type` unset

## 0.13.1 / 2016-01-16

* deps: depd@\~1.1.0
  * Support web browser loading
  * perf: enable strict mode
* deps: destroy@\~1.0.4
  * perf: enable strict mode
* deps: escape-html@\~1.0.3
  * perf: enable strict mode
  * perf: optimize string replacement
  * perf: use faster string coercion
* deps: range-parser@\~1.0.3
  * perf: enable strict mode

## 0.13.0 / 2015-06-16

* 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
  * Improve stat performance by removing hashing
* 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
* perf: enable strict mode
* perf: remove unnecessary array allocations

## 0.12.3 / 2015-05-13

* 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: ms\@0.7.1
  * Prevent extraordinarily long inputs
* deps: on-finished@\~2.2.1

## 0.12.2 / 2015-03-13

* Throw errors early for invalid `extensions` or `index` options
* deps: debug@\~2.1.3
  * Fix high intensity foreground color for bold
  * deps: ms\@0.7.0

## 0.12.1 / 2015-02-17

* Fix regression sending zero-length files

## 0.12.0 / 2015-02-16

* Always read the stat size from the file
* Fix mutating passed-in `options`
* deps: mime\@1.3.4

## 0.11.1 / 2015-01-20

* Fix `root` path disclosure

## 0.11.0 / 2015-01-05

* deps: debug@\~2.1.1
* deps: etag@\~1.5.1
  * deps: crc\@3.2.1
* deps: ms\@0.7.0
  * Add `milliseconds`
  * Add `msecs`
  * Add `secs`
  * Add `mins`
  * Add `hrs`
  * Add `yrs`
* deps: on-finished@\~2.2.0

## 0.10.1 / 2014-10-22

* deps: on-finished@\~2.1.1
  * Fix handling of pipelined requests

## 0.10.0 / 2014-10-15

* 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

## 0.9.3 / 2014-09-24

* deps: etag@\~1.4.0
  * Support "fake" stats objects

## 0.9.2 / 2014-09-15

* deps: depd\@0.4.5
* deps: etag@\~1.3.1
* deps: range-parser@\~1.0.2

## 0.9.1 / 2014-09-07

* deps: fresh\@0.2.4

## 0.9.0 / 2014-09-07

* Add `lastModified` option
* Use `etag` to generate `ETag` header
* deps: debug@\~2.0.0

## 0.8.5 / 2014-09-04

* Fix malicious path detection for empty string path

## 0.8.4 / 2014-09-04

* Fix a path traversal issue when using `root`

## 0.8.3 / 2014-08-16

* deps: destroy\@1.0.3
  * renamed from dethroy
* deps: on-finished\@2.1.0

## 0.8.2 / 2014-08-14

* Work around `fd` leak in Node.js 0.10 for `fs.ReadStream`
* deps: dethroy\@1.0.2

## 0.8.1 / 2014-08-05

* Fix `extensions` behavior when file already has extension

## 0.8.0 / 2014-08-05

* Add `extensions` option

## 0.7.4 / 2014-08-04

* Fix serving index files without root dir

## 0.7.3 / 2014-07-29

* Fix incorrect 403 on Windows and Node.js 0.11

## 0.7.2 / 2014-07-27

* deps: depd\@0.4.4
  * Work-around v8 generating empty stack traces

## 0.7.1 / 2014-07-26

* deps: depd\@0.4.3
  * Fix exception when global `Error.stackTraceLimit` is too low

## 0.7.0 / 2014-07-20

* Deprecate `hidden` option; use `dotfiles` option
* Add `dotfiles` option
* 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

## 0.6.0 / 2014-07-11

* Deprecate `from` option; use `root` option
* Deprecate `send.etag()` -- use `etag` in `options`
* Deprecate `send.hidden()` -- use `hidden` in `options`
* Deprecate `send.index()` -- use `index` in `options`
* Deprecate `send.maxage()` -- use `maxAge` in `options`
* Deprecate `send.root()` -- use `root` in `options`
* Cap `maxAge` value to 1 year
* deps: debug\@1.0.3
  * Add support for multiple wildcards in namespaces

## 0.5.0 / 2014-06-28

* Accept string for `maxAge` (converted by `ms`)
* Add `headers` event
* Include link in default redirect response
* Use `EventEmitter.listenerCount` to count listeners

## 0.4.3 / 2014-06-11

* Do not throw un-catchable error on file open race condition
* Use `escape-html` for HTML escaping
* deps: debug\@1.0.2
  * fix some debugging output colors on node.js 0.8
* deps: finished\@1.2.2
* deps: fresh\@0.2.2

## 0.4.2 / 2014-06-09

* fix "event emitter leak" warnings
* deps: debug\@1.0.1
* deps: finished\@1.2.1

## 0.4.1 / 2014-06-02

* Send `max-age` in `Cache-Control` in correct format

## 0.4.0 / 2014-05-27

* Calculate ETag with md5 for reduced collisions
* Fix wrong behavior when index file matches directory
* Ignore stream errors after request ends
  * Goodbye `EBADF, read`
* Skip directories in index file search
* deps: debug\@0.8.1

## 0.3.0 / 2014-04-24

* Fix sending files with dots without root set
* Coerce option types
* Accept API options in options object
* Set etags to "weak"
* Include file path in etag
* Make "Can't set headers after they are sent." catchable
* Send full entity-body for multi range requests
* Default directory access to 403 when index disabled
* Support multiple index paths
* Support "If-Range" header
* Control whether to generate etags
* deps: mime\@1.2.11

## 0.2.0 / 2014-01-29

* update range-parser and fresh

## 0.1.4 / 2013-08-11

* update fresh

## 0.1.3 / 2013-07-08

* Revert "Fix fd leak"

## 0.1.2 / 2013-07-03

* Fix fd leak

## 0.1.0 / 2012-08-25

* add options parameter to send() that is passed to fs.createReadStream() \[kanongil]

## 0.0.4 / 2012-08-16

* allow custom "Accept-Ranges" definition

## 0.0.3 / 2012-07-16

* fix normalization of the root directory. Closes #3

## 0.0.2 / 2012-07-09

* add passing of req explicitly for now (YUCK)

## 0.0.1 / 2010-01-03

* Initial release
