forked from dachan/dach
		
	a lot of changes
This commit is contained in:
		
							
								
								
									
										521
									
								
								node_modules/send/HISTORY.md
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										521
									
								
								node_modules/send/HISTORY.md
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,521 @@
 | 
			
		||||
0.18.0 / 2022-03-23
 | 
			
		||||
===================
 | 
			
		||||
 | 
			
		||||
  * Fix emitted 416 error missing headers property
 | 
			
		||||
  * Limit the headers removed for 304 response
 | 
			
		||||
  * deps: depd@2.0.0
 | 
			
		||||
    - Replace internal `eval` usage with `Function` constructor
 | 
			
		||||
    - Use instance methods on `process` to check for listeners
 | 
			
		||||
  * deps: destroy@1.2.0
 | 
			
		||||
  * deps: http-errors@2.0.0
 | 
			
		||||
    - deps: depd@2.0.0
 | 
			
		||||
    - deps: statuses@2.0.1
 | 
			
		||||
  * deps: on-finished@2.4.1
 | 
			
		||||
  * deps: statuses@2.0.1
 | 
			
		||||
 | 
			
		||||
0.17.2 / 2021-12-11
 | 
			
		||||
===================
 | 
			
		||||
 | 
			
		||||
  * pref: ignore empty http tokens
 | 
			
		||||
  * deps: http-errors@1.8.1
 | 
			
		||||
    - deps: inherits@2.0.4
 | 
			
		||||
    - deps: toidentifier@1.0.1
 | 
			
		||||
    - deps: setprototypeof@1.2.0
 | 
			
		||||
  * deps: ms@2.1.3
 | 
			
		||||
 | 
			
		||||
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
 | 
			
		||||
							
								
								
									
										23
									
								
								node_modules/send/LICENSE
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										23
									
								
								node_modules/send/LICENSE
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,23 @@
 | 
			
		||||
(The MIT License)
 | 
			
		||||
 | 
			
		||||
Copyright (c) 2012 TJ Holowaychuk
 | 
			
		||||
Copyright (c) 2014-2022 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.
 | 
			
		||||
							
								
								
									
										327
									
								
								node_modules/send/README.md
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										327
									
								
								node_modules/send/README.md
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,327 @@
 | 
			
		||||
# send
 | 
			
		||||
 | 
			
		||||
[![NPM Version][npm-version-image]][npm-url]
 | 
			
		||||
[![NPM Downloads][npm-downloads-image]][npm-url]
 | 
			
		||||
[![Linux Build][github-actions-ci-image]][github-actions-ci-url]
 | 
			
		||||
[![Windows Build][appveyor-image]][appveyor-url]
 | 
			
		||||
[![Test Coverage][coveralls-image]][coveralls-url]
 | 
			
		||||
 | 
			
		||||
Send is a library for streaming files from the file system as a http response
 | 
			
		||||
supporting partial responses (Ranges), conditional-GET negotiation (If-Match,
 | 
			
		||||
If-Unmodified-Since, If-None-Match, If-Modified-Since), high test coverage,
 | 
			
		||||
and granular events which may be leveraged to take appropriate actions in your
 | 
			
		||||
application or framework.
 | 
			
		||||
 | 
			
		||||
Looking to serve up entire folders mapped to URLs? Try [serve-static](https://www.npmjs.org/package/serve-static).
 | 
			
		||||
 | 
			
		||||
## 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):
 | 
			
		||||
 | 
			
		||||
```bash
 | 
			
		||||
$ npm install send
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
## API
 | 
			
		||||
 | 
			
		||||
```js
 | 
			
		||||
var send = require('send')
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
### send(req, path, [options])
 | 
			
		||||
 | 
			
		||||
Create a new `SendStream` for the given path to send to a `res`. The `req` is
 | 
			
		||||
the Node.js HTTP request and the `path` is a urlencoded path to send (urlencoded,
 | 
			
		||||
not the actual file-system path).
 | 
			
		||||
 | 
			
		||||
#### Options
 | 
			
		||||
 | 
			
		||||
##### acceptRanges
 | 
			
		||||
 | 
			
		||||
Enable or disable accepting ranged requests, defaults to true.
 | 
			
		||||
Disabling this will not send `Accept-Ranges` and ignore the contents
 | 
			
		||||
of the `Range` request header.
 | 
			
		||||
 | 
			
		||||
##### cacheControl
 | 
			
		||||
 | 
			
		||||
Enable or disable setting `Cache-Control` response header, defaults to
 | 
			
		||||
true. Disabling this will ignore the `immutable` and `maxAge` options.
 | 
			
		||||
 | 
			
		||||
##### dotfiles
 | 
			
		||||
 | 
			
		||||
Set how "dotfiles" are treated when encountered. A dotfile is a file
 | 
			
		||||
or directory that begins with a dot ("."). Note this check is done on
 | 
			
		||||
the path itself without checking if the path actually exists on the
 | 
			
		||||
disk. If `root` is specified, only the dotfiles above the root are
 | 
			
		||||
checked (i.e. the root itself can be within a dotfile when when set
 | 
			
		||||
to "deny").
 | 
			
		||||
 | 
			
		||||
  - `'allow'` No special treatment for dotfiles.
 | 
			
		||||
  - `'deny'` Send a 403 for any request for a dotfile.
 | 
			
		||||
  - `'ignore'` Pretend like the dotfile does not exist and 404.
 | 
			
		||||
 | 
			
		||||
The default value is _similar_ to `'ignore'`, with the exception that
 | 
			
		||||
this default will not ignore the files within a directory that begins
 | 
			
		||||
with a dot, for backward-compatibility.
 | 
			
		||||
 | 
			
		||||
##### end
 | 
			
		||||
 | 
			
		||||
Byte offset at which the stream ends, defaults to the length of the file
 | 
			
		||||
minus 1. The end is inclusive in the stream, meaning `end: 3` will include
 | 
			
		||||
the 4th byte in the stream.
 | 
			
		||||
 | 
			
		||||
##### etag
 | 
			
		||||
 | 
			
		||||
Enable or disable etag generation, defaults to true.
 | 
			
		||||
 | 
			
		||||
##### extensions
 | 
			
		||||
 | 
			
		||||
If a given file doesn't exist, try appending one of the given extensions,
 | 
			
		||||
in the given order. By default, this is disabled (set to `false`). An
 | 
			
		||||
example value that will serve extension-less HTML files: `['html', 'htm']`.
 | 
			
		||||
This is skipped if the requested file already has an extension.
 | 
			
		||||
 | 
			
		||||
##### immutable
 | 
			
		||||
 | 
			
		||||
Enable or disable the `immutable` directive in the `Cache-Control` response
 | 
			
		||||
header, defaults to `false`. If set to `true`, the `maxAge` option should
 | 
			
		||||
also be specified to enable caching. The `immutable` directive will prevent
 | 
			
		||||
supported clients from making conditional requests during the life of the
 | 
			
		||||
`maxAge` option to check if the file has changed.
 | 
			
		||||
 | 
			
		||||
##### index
 | 
			
		||||
 | 
			
		||||
By default send supports "index.html" files, to disable this
 | 
			
		||||
set `false` or to supply a new index pass a string or an array
 | 
			
		||||
in preferred order.
 | 
			
		||||
 | 
			
		||||
##### lastModified
 | 
			
		||||
 | 
			
		||||
Enable or disable `Last-Modified` header, defaults to true. Uses the file
 | 
			
		||||
system's last modified value.
 | 
			
		||||
 | 
			
		||||
##### maxAge
 | 
			
		||||
 | 
			
		||||
Provide a max-age in milliseconds for http caching, defaults to 0.
 | 
			
		||||
This can also be a string accepted by the
 | 
			
		||||
[ms](https://www.npmjs.org/package/ms#readme) module.
 | 
			
		||||
 | 
			
		||||
##### root
 | 
			
		||||
 | 
			
		||||
Serve files relative to `path`.
 | 
			
		||||
 | 
			
		||||
##### start
 | 
			
		||||
 | 
			
		||||
Byte offset at which the stream starts, defaults to 0. The start is inclusive,
 | 
			
		||||
meaning `start: 2` will include the 3rd byte in the stream.
 | 
			
		||||
 | 
			
		||||
#### Events
 | 
			
		||||
 | 
			
		||||
The `SendStream` is an event emitter and will emit the following events:
 | 
			
		||||
 | 
			
		||||
  - `error` an error occurred `(err)`
 | 
			
		||||
  - `directory` a directory was requested `(res, path)`
 | 
			
		||||
  - `file` a file was requested `(path, stat)`
 | 
			
		||||
  - `headers` the headers are about to be set on a file `(res, path, stat)`
 | 
			
		||||
  - `stream` file streaming has started `(stream)`
 | 
			
		||||
  - `end` streaming has completed
 | 
			
		||||
 | 
			
		||||
#### .pipe
 | 
			
		||||
 | 
			
		||||
The `pipe` method is used to pipe the response into the Node.js HTTP response
 | 
			
		||||
object, typically `send(req, path, options).pipe(res)`.
 | 
			
		||||
 | 
			
		||||
### .mime
 | 
			
		||||
 | 
			
		||||
The `mime` export is the global instance of of the
 | 
			
		||||
[`mime` npm module](https://www.npmjs.com/package/mime).
 | 
			
		||||
 | 
			
		||||
This is used to configure the MIME types that are associated with file extensions
 | 
			
		||||
as well as other options for how to resolve the MIME type of a file (like the
 | 
			
		||||
default type to use for an unknown file extension).
 | 
			
		||||
 | 
			
		||||
## Error-handling
 | 
			
		||||
 | 
			
		||||
By default when no `error` listeners are present an automatic response will be
 | 
			
		||||
made, otherwise you have full control over the response, aka you may show a 5xx
 | 
			
		||||
page etc.
 | 
			
		||||
 | 
			
		||||
## Caching
 | 
			
		||||
 | 
			
		||||
It does _not_ perform internal caching, you should use a reverse proxy cache
 | 
			
		||||
such as Varnish for this, or those fancy things called CDNs. If your
 | 
			
		||||
application is small enough that it would benefit from single-node memory
 | 
			
		||||
caching, it's small enough that it does not need caching at all ;).
 | 
			
		||||
 | 
			
		||||
## Debugging
 | 
			
		||||
 | 
			
		||||
To enable `debug()` instrumentation output export __DEBUG__:
 | 
			
		||||
 | 
			
		||||
```
 | 
			
		||||
$ DEBUG=send node app
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
## Running tests
 | 
			
		||||
 | 
			
		||||
```
 | 
			
		||||
$ npm install
 | 
			
		||||
$ npm test
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
## Examples
 | 
			
		||||
 | 
			
		||||
### Serve a specific file
 | 
			
		||||
 | 
			
		||||
This simple example will send a specific file to all requests.
 | 
			
		||||
 | 
			
		||||
```js
 | 
			
		||||
var http = require('http')
 | 
			
		||||
var send = require('send')
 | 
			
		||||
 | 
			
		||||
var server = http.createServer(function onRequest (req, res) {
 | 
			
		||||
  send(req, '/path/to/index.html')
 | 
			
		||||
    .pipe(res)
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
server.listen(3000)
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
### Serve all files from a directory
 | 
			
		||||
 | 
			
		||||
This simple example will just serve up all the files in a
 | 
			
		||||
given directory as the top-level. For example, a request
 | 
			
		||||
`GET /foo.txt` will send back `/www/public/foo.txt`.
 | 
			
		||||
 | 
			
		||||
```js
 | 
			
		||||
var http = require('http')
 | 
			
		||||
var parseUrl = require('parseurl')
 | 
			
		||||
var send = require('send')
 | 
			
		||||
 | 
			
		||||
var server = http.createServer(function onRequest (req, res) {
 | 
			
		||||
  send(req, parseUrl(req).pathname, { root: '/www/public' })
 | 
			
		||||
    .pipe(res)
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
server.listen(3000)
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
### Custom file types
 | 
			
		||||
 | 
			
		||||
```js
 | 
			
		||||
var http = require('http')
 | 
			
		||||
var parseUrl = require('parseurl')
 | 
			
		||||
var send = require('send')
 | 
			
		||||
 | 
			
		||||
// Default unknown types to text/plain
 | 
			
		||||
send.mime.default_type = 'text/plain'
 | 
			
		||||
 | 
			
		||||
// Add a custom type
 | 
			
		||||
send.mime.define({
 | 
			
		||||
  'application/x-my-type': ['x-mt', 'x-mtt']
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
var server = http.createServer(function onRequest (req, res) {
 | 
			
		||||
  send(req, parseUrl(req).pathname, { root: '/www/public' })
 | 
			
		||||
    .pipe(res)
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
server.listen(3000)
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
### Custom directory index view
 | 
			
		||||
 | 
			
		||||
This is a example of serving up a structure of directories with a
 | 
			
		||||
custom function to render a listing of a directory.
 | 
			
		||||
 | 
			
		||||
```js
 | 
			
		||||
var http = require('http')
 | 
			
		||||
var fs = require('fs')
 | 
			
		||||
var parseUrl = require('parseurl')
 | 
			
		||||
var send = require('send')
 | 
			
		||||
 | 
			
		||||
// Transfer arbitrary files from within /www/example.com/public/*
 | 
			
		||||
// with a custom handler for directory listing
 | 
			
		||||
var server = http.createServer(function onRequest (req, res) {
 | 
			
		||||
  send(req, parseUrl(req).pathname, { index: false, root: '/www/public' })
 | 
			
		||||
    .once('directory', directory)
 | 
			
		||||
    .pipe(res)
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
server.listen(3000)
 | 
			
		||||
 | 
			
		||||
// Custom directory handler
 | 
			
		||||
function directory (res, path) {
 | 
			
		||||
  var stream = this
 | 
			
		||||
 | 
			
		||||
  // redirect to trailing slash for consistent url
 | 
			
		||||
  if (!stream.hasTrailingSlash()) {
 | 
			
		||||
    return stream.redirect(path)
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  // get directory list
 | 
			
		||||
  fs.readdir(path, function onReaddir (err, list) {
 | 
			
		||||
    if (err) return stream.error(err)
 | 
			
		||||
 | 
			
		||||
    // render an index for the directory
 | 
			
		||||
    res.setHeader('Content-Type', 'text/plain; charset=UTF-8')
 | 
			
		||||
    res.end(list.join('\n') + '\n')
 | 
			
		||||
  })
 | 
			
		||||
}
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
### Serving from a root directory with custom error-handling
 | 
			
		||||
 | 
			
		||||
```js
 | 
			
		||||
var http = require('http')
 | 
			
		||||
var parseUrl = require('parseurl')
 | 
			
		||||
var send = require('send')
 | 
			
		||||
 | 
			
		||||
var server = http.createServer(function onRequest (req, res) {
 | 
			
		||||
  // your custom error-handling logic:
 | 
			
		||||
  function error (err) {
 | 
			
		||||
    res.statusCode = err.status || 500
 | 
			
		||||
    res.end(err.message)
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  // your custom headers
 | 
			
		||||
  function headers (res, path, stat) {
 | 
			
		||||
    // serve all files for download
 | 
			
		||||
    res.setHeader('Content-Disposition', 'attachment')
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  // your custom directory handling logic:
 | 
			
		||||
  function redirect () {
 | 
			
		||||
    res.statusCode = 301
 | 
			
		||||
    res.setHeader('Location', req.url + '/')
 | 
			
		||||
    res.end('Redirecting to ' + req.url + '/')
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  // transfer arbitrary files from within
 | 
			
		||||
  // /www/example.com/public/*
 | 
			
		||||
  send(req, parseUrl(req).pathname, { root: '/www/public' })
 | 
			
		||||
    .on('error', error)
 | 
			
		||||
    .on('directory', redirect)
 | 
			
		||||
    .on('headers', headers)
 | 
			
		||||
    .pipe(res)
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
server.listen(3000)
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
## License
 | 
			
		||||
 | 
			
		||||
[MIT](LICENSE)
 | 
			
		||||
 | 
			
		||||
[appveyor-image]: https://badgen.net/appveyor/ci/dougwilson/send/master?label=windows
 | 
			
		||||
[appveyor-url]: https://ci.appveyor.com/project/dougwilson/send
 | 
			
		||||
[coveralls-image]: https://badgen.net/coveralls/c/github/pillarjs/send/master
 | 
			
		||||
[coveralls-url]: https://coveralls.io/r/pillarjs/send?branch=master
 | 
			
		||||
[github-actions-ci-image]: https://badgen.net/github/checks/pillarjs/send/master?label=linux
 | 
			
		||||
[github-actions-ci-url]: https://github.com/pillarjs/send/actions/workflows/ci.yml
 | 
			
		||||
[node-image]: https://badgen.net/npm/node/send
 | 
			
		||||
[node-url]: https://nodejs.org/en/download/
 | 
			
		||||
[npm-downloads-image]: https://badgen.net/npm/dm/send
 | 
			
		||||
[npm-url]: https://npmjs.org/package/send
 | 
			
		||||
[npm-version-image]: https://badgen.net/npm/v/send
 | 
			
		||||
							
								
								
									
										24
									
								
								node_modules/send/SECURITY.md
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										24
									
								
								node_modules/send/SECURITY.md
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,24 @@
 | 
			
		||||
# Security Policies and Procedures
 | 
			
		||||
 | 
			
		||||
## Reporting a Bug
 | 
			
		||||
 | 
			
		||||
The `send` team and community take all security bugs seriously. Thank you
 | 
			
		||||
for improving the security of Express. We appreciate your efforts and
 | 
			
		||||
responsible disclosure and will make every effort to acknowledge your
 | 
			
		||||
contributions.
 | 
			
		||||
 | 
			
		||||
Report security bugs by emailing the current owner(s) of `send`. This information
 | 
			
		||||
can be found in the npm registry using the command `npm owner ls send`.
 | 
			
		||||
If unsure or unable to get the information from the above, open an issue
 | 
			
		||||
in the [project issue tracker](https://github.com/pillarjs/send/issues)
 | 
			
		||||
asking for the current contact information.
 | 
			
		||||
 | 
			
		||||
To ensure the timely response to your report, please ensure that the entirety
 | 
			
		||||
of the report is contained within the email body and not solely behind a web
 | 
			
		||||
link or an attachment.
 | 
			
		||||
 | 
			
		||||
At least one owner will acknowledge your email within 48 hours, and will send a
 | 
			
		||||
more detailed response within 48 hours indicating the next steps in handling
 | 
			
		||||
your report. After the initial reply to your report, the owners will
 | 
			
		||||
endeavor to keep you informed of the progress towards a fix and full
 | 
			
		||||
announcement, and may ask for additional information or guidance.
 | 
			
		||||
							
								
								
									
										1143
									
								
								node_modules/send/index.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										1143
									
								
								node_modules/send/index.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										162
									
								
								node_modules/send/node_modules/ms/index.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										162
									
								
								node_modules/send/node_modules/ms/index.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,162 @@
 | 
			
		||||
/**
 | 
			
		||||
 * Helpers.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
var s = 1000;
 | 
			
		||||
var m = s * 60;
 | 
			
		||||
var h = m * 60;
 | 
			
		||||
var d = h * 24;
 | 
			
		||||
var w = d * 7;
 | 
			
		||||
var y = d * 365.25;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Parse or format the given `val`.
 | 
			
		||||
 *
 | 
			
		||||
 * Options:
 | 
			
		||||
 *
 | 
			
		||||
 *  - `long` verbose formatting [false]
 | 
			
		||||
 *
 | 
			
		||||
 * @param {String|Number} val
 | 
			
		||||
 * @param {Object} [options]
 | 
			
		||||
 * @throws {Error} throw an error if val is not a non-empty string or a number
 | 
			
		||||
 * @return {String|Number}
 | 
			
		||||
 * @api public
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
module.exports = function (val, options) {
 | 
			
		||||
  options = options || {};
 | 
			
		||||
  var type = typeof val;
 | 
			
		||||
  if (type === 'string' && val.length > 0) {
 | 
			
		||||
    return parse(val);
 | 
			
		||||
  } else if (type === 'number' && isFinite(val)) {
 | 
			
		||||
    return options.long ? fmtLong(val) : fmtShort(val);
 | 
			
		||||
  }
 | 
			
		||||
  throw new Error(
 | 
			
		||||
    'val is not a non-empty string or a valid number. val=' +
 | 
			
		||||
      JSON.stringify(val)
 | 
			
		||||
  );
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Parse the given `str` and return milliseconds.
 | 
			
		||||
 *
 | 
			
		||||
 * @param {String} str
 | 
			
		||||
 * @return {Number}
 | 
			
		||||
 * @api private
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
function parse(str) {
 | 
			
		||||
  str = String(str);
 | 
			
		||||
  if (str.length > 100) {
 | 
			
		||||
    return;
 | 
			
		||||
  }
 | 
			
		||||
  var match = /^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(
 | 
			
		||||
    str
 | 
			
		||||
  );
 | 
			
		||||
  if (!match) {
 | 
			
		||||
    return;
 | 
			
		||||
  }
 | 
			
		||||
  var n = parseFloat(match[1]);
 | 
			
		||||
  var type = (match[2] || 'ms').toLowerCase();
 | 
			
		||||
  switch (type) {
 | 
			
		||||
    case 'years':
 | 
			
		||||
    case 'year':
 | 
			
		||||
    case 'yrs':
 | 
			
		||||
    case 'yr':
 | 
			
		||||
    case 'y':
 | 
			
		||||
      return n * y;
 | 
			
		||||
    case 'weeks':
 | 
			
		||||
    case 'week':
 | 
			
		||||
    case 'w':
 | 
			
		||||
      return n * w;
 | 
			
		||||
    case 'days':
 | 
			
		||||
    case 'day':
 | 
			
		||||
    case 'd':
 | 
			
		||||
      return n * d;
 | 
			
		||||
    case 'hours':
 | 
			
		||||
    case 'hour':
 | 
			
		||||
    case 'hrs':
 | 
			
		||||
    case 'hr':
 | 
			
		||||
    case 'h':
 | 
			
		||||
      return n * h;
 | 
			
		||||
    case 'minutes':
 | 
			
		||||
    case 'minute':
 | 
			
		||||
    case 'mins':
 | 
			
		||||
    case 'min':
 | 
			
		||||
    case 'm':
 | 
			
		||||
      return n * m;
 | 
			
		||||
    case 'seconds':
 | 
			
		||||
    case 'second':
 | 
			
		||||
    case 'secs':
 | 
			
		||||
    case 'sec':
 | 
			
		||||
    case 's':
 | 
			
		||||
      return n * s;
 | 
			
		||||
    case 'milliseconds':
 | 
			
		||||
    case 'millisecond':
 | 
			
		||||
    case 'msecs':
 | 
			
		||||
    case 'msec':
 | 
			
		||||
    case 'ms':
 | 
			
		||||
      return n;
 | 
			
		||||
    default:
 | 
			
		||||
      return undefined;
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Short format for `ms`.
 | 
			
		||||
 *
 | 
			
		||||
 * @param {Number} ms
 | 
			
		||||
 * @return {String}
 | 
			
		||||
 * @api private
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
function fmtShort(ms) {
 | 
			
		||||
  var msAbs = Math.abs(ms);
 | 
			
		||||
  if (msAbs >= d) {
 | 
			
		||||
    return Math.round(ms / d) + 'd';
 | 
			
		||||
  }
 | 
			
		||||
  if (msAbs >= h) {
 | 
			
		||||
    return Math.round(ms / h) + 'h';
 | 
			
		||||
  }
 | 
			
		||||
  if (msAbs >= m) {
 | 
			
		||||
    return Math.round(ms / m) + 'm';
 | 
			
		||||
  }
 | 
			
		||||
  if (msAbs >= s) {
 | 
			
		||||
    return Math.round(ms / s) + 's';
 | 
			
		||||
  }
 | 
			
		||||
  return ms + 'ms';
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Long format for `ms`.
 | 
			
		||||
 *
 | 
			
		||||
 * @param {Number} ms
 | 
			
		||||
 * @return {String}
 | 
			
		||||
 * @api private
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
function fmtLong(ms) {
 | 
			
		||||
  var msAbs = Math.abs(ms);
 | 
			
		||||
  if (msAbs >= d) {
 | 
			
		||||
    return plural(ms, msAbs, d, 'day');
 | 
			
		||||
  }
 | 
			
		||||
  if (msAbs >= h) {
 | 
			
		||||
    return plural(ms, msAbs, h, 'hour');
 | 
			
		||||
  }
 | 
			
		||||
  if (msAbs >= m) {
 | 
			
		||||
    return plural(ms, msAbs, m, 'minute');
 | 
			
		||||
  }
 | 
			
		||||
  if (msAbs >= s) {
 | 
			
		||||
    return plural(ms, msAbs, s, 'second');
 | 
			
		||||
  }
 | 
			
		||||
  return ms + ' ms';
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Pluralization helper.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
function plural(ms, msAbs, n, name) {
 | 
			
		||||
  var isPlural = msAbs >= n * 1.5;
 | 
			
		||||
  return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : '');
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										21
									
								
								node_modules/send/node_modules/ms/license.md
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								node_modules/send/node_modules/ms/license.md
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,21 @@
 | 
			
		||||
The MIT License (MIT)
 | 
			
		||||
 | 
			
		||||
Copyright (c) 2020 Vercel, Inc.
 | 
			
		||||
 | 
			
		||||
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.
 | 
			
		||||
							
								
								
									
										38
									
								
								node_modules/send/node_modules/ms/package.json
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										38
									
								
								node_modules/send/node_modules/ms/package.json
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,38 @@
 | 
			
		||||
{
 | 
			
		||||
  "name": "ms",
 | 
			
		||||
  "version": "2.1.3",
 | 
			
		||||
  "description": "Tiny millisecond conversion utility",
 | 
			
		||||
  "repository": "vercel/ms",
 | 
			
		||||
  "main": "./index",
 | 
			
		||||
  "files": [
 | 
			
		||||
    "index.js"
 | 
			
		||||
  ],
 | 
			
		||||
  "scripts": {
 | 
			
		||||
    "precommit": "lint-staged",
 | 
			
		||||
    "lint": "eslint lib/* bin/*",
 | 
			
		||||
    "test": "mocha tests.js"
 | 
			
		||||
  },
 | 
			
		||||
  "eslintConfig": {
 | 
			
		||||
    "extends": "eslint:recommended",
 | 
			
		||||
    "env": {
 | 
			
		||||
      "node": true,
 | 
			
		||||
      "es6": true
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
  "lint-staged": {
 | 
			
		||||
    "*.js": [
 | 
			
		||||
      "npm run lint",
 | 
			
		||||
      "prettier --single-quote --write",
 | 
			
		||||
      "git add"
 | 
			
		||||
    ]
 | 
			
		||||
  },
 | 
			
		||||
  "license": "MIT",
 | 
			
		||||
  "devDependencies": {
 | 
			
		||||
    "eslint": "4.18.2",
 | 
			
		||||
    "expect.js": "0.3.1",
 | 
			
		||||
    "husky": "0.14.3",
 | 
			
		||||
    "lint-staged": "5.0.0",
 | 
			
		||||
    "mocha": "4.0.1",
 | 
			
		||||
    "prettier": "2.0.5"
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										59
									
								
								node_modules/send/node_modules/ms/readme.md
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										59
									
								
								node_modules/send/node_modules/ms/readme.md
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,59 @@
 | 
			
		||||
# ms
 | 
			
		||||
 | 
			
		||||

 | 
			
		||||
 | 
			
		||||
Use this package to easily convert various time formats to milliseconds.
 | 
			
		||||
 | 
			
		||||
## Examples
 | 
			
		||||
 | 
			
		||||
```js
 | 
			
		||||
ms('2 days')  // 172800000
 | 
			
		||||
ms('1d')      // 86400000
 | 
			
		||||
ms('10h')     // 36000000
 | 
			
		||||
ms('2.5 hrs') // 9000000
 | 
			
		||||
ms('2h')      // 7200000
 | 
			
		||||
ms('1m')      // 60000
 | 
			
		||||
ms('5s')      // 5000
 | 
			
		||||
ms('1y')      // 31557600000
 | 
			
		||||
ms('100')     // 100
 | 
			
		||||
ms('-3 days') // -259200000
 | 
			
		||||
ms('-1h')     // -3600000
 | 
			
		||||
ms('-200')    // -200
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
### Convert from Milliseconds
 | 
			
		||||
 | 
			
		||||
```js
 | 
			
		||||
ms(60000)             // "1m"
 | 
			
		||||
ms(2 * 60000)         // "2m"
 | 
			
		||||
ms(-3 * 60000)        // "-3m"
 | 
			
		||||
ms(ms('10 hours'))    // "10h"
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
### Time Format Written-Out
 | 
			
		||||
 | 
			
		||||
```js
 | 
			
		||||
ms(60000, { long: true })             // "1 minute"
 | 
			
		||||
ms(2 * 60000, { long: true })         // "2 minutes"
 | 
			
		||||
ms(-3 * 60000, { long: true })        // "-3 minutes"
 | 
			
		||||
ms(ms('10 hours'), { long: true })    // "10 hours"
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
## Features
 | 
			
		||||
 | 
			
		||||
- Works both in [Node.js](https://nodejs.org) and in the browser
 | 
			
		||||
- If a number is supplied to `ms`, a string with a unit is returned
 | 
			
		||||
- If a string that contains the number is supplied, it returns it as a number (e.g.: it returns `100` for `'100'`)
 | 
			
		||||
- If you pass a string with a number and a valid unit, the number of equivalent milliseconds is returned
 | 
			
		||||
 | 
			
		||||
## Related Packages
 | 
			
		||||
 | 
			
		||||
- [ms.macro](https://github.com/knpwrs/ms.macro) - Run `ms` as a macro at build-time.
 | 
			
		||||
 | 
			
		||||
## Caught a Bug?
 | 
			
		||||
 | 
			
		||||
1. [Fork](https://help.github.com/articles/fork-a-repo/) this repository to your own GitHub account and then [clone](https://help.github.com/articles/cloning-a-repository/) it to your local device
 | 
			
		||||
2. Link the package to the global module directory: `npm link`
 | 
			
		||||
3. Within the module you want to test your local development instance of ms, just link it to the dependencies: `npm link ms`. Instead of the default one from npm, Node.js will now use your clone of ms!
 | 
			
		||||
 | 
			
		||||
As always, you can run the tests using: `npm test`
 | 
			
		||||
							
								
								
									
										62
									
								
								node_modules/send/package.json
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										62
									
								
								node_modules/send/package.json
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,62 @@
 | 
			
		||||
{
 | 
			
		||||
  "name": "send",
 | 
			
		||||
  "description": "Better streaming static file server with Range and conditional-GET support",
 | 
			
		||||
  "version": "0.18.0",
 | 
			
		||||
  "author": "TJ Holowaychuk <tj@vision-media.ca>",
 | 
			
		||||
  "contributors": [
 | 
			
		||||
    "Douglas Christopher Wilson <doug@somethingdoug.com>",
 | 
			
		||||
    "James Wyatt Cready <jcready@gmail.com>",
 | 
			
		||||
    "Jesús Leganés Combarro <piranna@gmail.com>"
 | 
			
		||||
  ],
 | 
			
		||||
  "license": "MIT",
 | 
			
		||||
  "repository": "pillarjs/send",
 | 
			
		||||
  "keywords": [
 | 
			
		||||
    "static",
 | 
			
		||||
    "file",
 | 
			
		||||
    "server"
 | 
			
		||||
  ],
 | 
			
		||||
  "dependencies": {
 | 
			
		||||
    "debug": "2.6.9",
 | 
			
		||||
    "depd": "2.0.0",
 | 
			
		||||
    "destroy": "1.2.0",
 | 
			
		||||
    "encodeurl": "~1.0.2",
 | 
			
		||||
    "escape-html": "~1.0.3",
 | 
			
		||||
    "etag": "~1.8.1",
 | 
			
		||||
    "fresh": "0.5.2",
 | 
			
		||||
    "http-errors": "2.0.0",
 | 
			
		||||
    "mime": "1.6.0",
 | 
			
		||||
    "ms": "2.1.3",
 | 
			
		||||
    "on-finished": "2.4.1",
 | 
			
		||||
    "range-parser": "~1.2.1",
 | 
			
		||||
    "statuses": "2.0.1"
 | 
			
		||||
  },
 | 
			
		||||
  "devDependencies": {
 | 
			
		||||
    "after": "0.8.2",
 | 
			
		||||
    "eslint": "7.32.0",
 | 
			
		||||
    "eslint-config-standard": "14.1.1",
 | 
			
		||||
    "eslint-plugin-import": "2.25.4",
 | 
			
		||||
    "eslint-plugin-markdown": "2.2.1",
 | 
			
		||||
    "eslint-plugin-node": "11.1.0",
 | 
			
		||||
    "eslint-plugin-promise": "5.2.0",
 | 
			
		||||
    "eslint-plugin-standard": "4.1.0",
 | 
			
		||||
    "mocha": "9.2.2",
 | 
			
		||||
    "nyc": "15.1.0",
 | 
			
		||||
    "supertest": "6.2.2"
 | 
			
		||||
  },
 | 
			
		||||
  "files": [
 | 
			
		||||
    "HISTORY.md",
 | 
			
		||||
    "LICENSE",
 | 
			
		||||
    "README.md",
 | 
			
		||||
    "SECURITY.md",
 | 
			
		||||
    "index.js"
 | 
			
		||||
  ],
 | 
			
		||||
  "engines": {
 | 
			
		||||
    "node": ">= 0.8.0"
 | 
			
		||||
  },
 | 
			
		||||
  "scripts": {
 | 
			
		||||
    "lint": "eslint .",
 | 
			
		||||
    "test": "mocha --check-leaks --reporter spec --bail",
 | 
			
		||||
    "test-ci": "nyc --reporter=lcov --reporter=text npm test",
 | 
			
		||||
    "test-cov": "nyc --reporter=html --reporter=text npm test"
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user