mirror of
				https://github.com/1disk/edp445.git
				synced 2024-08-14 22:47:02 +00:00 
			
		
		
		
	added a few messages that the bot would respond to
This commit is contained in:
		
							parent
							
								
									c63d9a6e13
								
							
						
					
					
						commit
						de29e2769c
					
				
					 384 changed files with 56249 additions and 43 deletions
				
			
		
							
								
								
									
										195
									
								
								node_modules/finalhandler/HISTORY.md
									
										
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										195
									
								
								node_modules/finalhandler/HISTORY.md
									
										
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							|  | @ -0,0 +1,195 @@ | |||
| 1.2.0 / 2022-03-22 | ||||
| ================== | ||||
| 
 | ||||
|   * Remove set content headers that break response | ||||
|   * deps: on-finished@2.4.1 | ||||
|   * deps: statuses@2.0.1 | ||||
|     - Rename `425 Unordered Collection` to standard `425 Too Early` | ||||
| 
 | ||||
| 1.1.2 / 2019-05-09 | ||||
| ================== | ||||
| 
 | ||||
|   * Set stricter `Content-Security-Policy` header | ||||
|   * deps: parseurl@~1.3.3 | ||||
|   * deps: statuses@~1.5.0 | ||||
| 
 | ||||
| 1.1.1 / 2018-03-06 | ||||
| ================== | ||||
| 
 | ||||
|   * Fix 404 output for bad / missing pathnames | ||||
|   * deps: encodeurl@~1.0.2 | ||||
|     - Fix encoding `%` as last character | ||||
|   * deps: statuses@~1.4.0 | ||||
| 
 | ||||
| 1.1.0 / 2017-09-24 | ||||
| ================== | ||||
| 
 | ||||
|   * Use `res.headersSent` when available | ||||
| 
 | ||||
| 1.0.6 / 2017-09-22 | ||||
| ================== | ||||
| 
 | ||||
|   * deps: debug@2.6.9 | ||||
| 
 | ||||
| 1.0.5 / 2017-09-15 | ||||
| ================== | ||||
| 
 | ||||
|   * deps: parseurl@~1.3.2 | ||||
|     - perf: reduce overhead for full URLs | ||||
|     - perf: unroll the "fast-path" `RegExp` | ||||
| 
 | ||||
| 1.0.4 / 2017-08-03 | ||||
| ================== | ||||
| 
 | ||||
|   * deps: debug@2.6.8 | ||||
| 
 | ||||
| 1.0.3 / 2017-05-16 | ||||
| ================== | ||||
| 
 | ||||
|   * deps: debug@2.6.7 | ||||
|     - deps: ms@2.0.0 | ||||
| 
 | ||||
| 1.0.2 / 2017-04-22 | ||||
| ================== | ||||
| 
 | ||||
|   * deps: debug@2.6.4 | ||||
|     - deps: ms@0.7.3 | ||||
| 
 | ||||
| 1.0.1 / 2017-03-21 | ||||
| ================== | ||||
| 
 | ||||
|   * Fix missing `</html>` in HTML document | ||||
|   * deps: debug@2.6.3 | ||||
|     - Fix: `DEBUG_MAX_ARRAY_LENGTH` | ||||
| 
 | ||||
| 1.0.0 / 2017-02-15 | ||||
| ================== | ||||
| 
 | ||||
|   * Fix exception when `err` cannot be converted to a string | ||||
|   * Fully URL-encode the pathname in the 404 message | ||||
|   * Only include the pathname in the 404 message | ||||
|   * Send complete HTML document | ||||
|   * Set `Content-Security-Policy: default-src 'self'` header | ||||
|   * deps: debug@2.6.1 | ||||
|     - 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 | ||||
| 
 | ||||
| 0.5.1 / 2016-11-12 | ||||
| ================== | ||||
| 
 | ||||
|   * Fix exception when `err.headers` is not an object | ||||
|   * deps: statuses@~1.3.1 | ||||
|   * perf: hoist regular expressions | ||||
|   * perf: remove duplicate validation path | ||||
| 
 | ||||
| 0.5.0 / 2016-06-15 | ||||
| ================== | ||||
| 
 | ||||
|   * Change invalid or non-numeric status code to 500 | ||||
|   * Overwrite status message to match set status code | ||||
|   * Prefer `err.statusCode` if `err.status` is invalid | ||||
|   * Set response headers from `err.headers` object | ||||
|   * Use `statuses` instead of `http` module for status messages | ||||
|     - Includes all defined status messages | ||||
| 
 | ||||
| 0.4.1 / 2015-12-02 | ||||
| ================== | ||||
| 
 | ||||
|   * deps: escape-html@~1.0.3 | ||||
|     - perf: enable strict mode | ||||
|     - perf: optimize string replacement | ||||
|     - perf: use faster string coercion | ||||
| 
 | ||||
| 0.4.0 / 2015-06-14 | ||||
| ================== | ||||
| 
 | ||||
|   * Fix a false-positive when unpiping in Node.js 0.8 | ||||
|   * Support `statusCode` property on `Error` objects | ||||
|   * Use `unpipe` module for unpiping requests | ||||
|   * deps: escape-html@1.0.2 | ||||
|   * deps: on-finished@~2.3.0 | ||||
|     - 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 argument reassignment | ||||
| 
 | ||||
| 0.3.6 / 2015-05-11 | ||||
| ================== | ||||
| 
 | ||||
|   * deps: debug@~2.2.0 | ||||
|     - deps: ms@0.7.1 | ||||
| 
 | ||||
| 0.3.5 / 2015-04-22 | ||||
| ================== | ||||
| 
 | ||||
|   * deps: on-finished@~2.2.1 | ||||
|     - Fix `isFinished(req)` when data buffered | ||||
| 
 | ||||
| 0.3.4 / 2015-03-15 | ||||
| ================== | ||||
| 
 | ||||
|   * deps: debug@~2.1.3 | ||||
|     - Fix high intensity foreground color for bold | ||||
|     - deps: ms@0.7.0 | ||||
| 
 | ||||
| 0.3.3 / 2015-01-01 | ||||
| ================== | ||||
| 
 | ||||
|   * deps: debug@~2.1.1 | ||||
|   * deps: on-finished@~2.2.0 | ||||
| 
 | ||||
| 0.3.2 / 2014-10-22 | ||||
| ================== | ||||
| 
 | ||||
|   * deps: on-finished@~2.1.1 | ||||
|     - Fix handling of pipelined requests | ||||
| 
 | ||||
| 0.3.1 / 2014-10-16 | ||||
| ================== | ||||
| 
 | ||||
|   * deps: debug@~2.1.0 | ||||
|     - Implement `DEBUG_FD` env variable support | ||||
| 
 | ||||
| 0.3.0 / 2014-09-17 | ||||
| ================== | ||||
| 
 | ||||
|   * Terminate in progress response only on error | ||||
|   * Use `on-finished` to determine request status | ||||
| 
 | ||||
| 0.2.0 / 2014-09-03 | ||||
| ================== | ||||
| 
 | ||||
|   * Set `X-Content-Type-Options: nosniff` header | ||||
|   * deps: debug@~2.0.0 | ||||
| 
 | ||||
| 0.1.0 / 2014-07-16 | ||||
| ================== | ||||
| 
 | ||||
|   * Respond after request fully read | ||||
|     - prevents hung responses and socket hang ups | ||||
|   * deps: debug@1.0.4 | ||||
| 
 | ||||
| 0.0.3 / 2014-07-11 | ||||
| ================== | ||||
| 
 | ||||
|   * deps: debug@1.0.3 | ||||
|     - Add support for multiple wildcards in namespaces | ||||
| 
 | ||||
| 0.0.2 / 2014-06-19 | ||||
| ================== | ||||
| 
 | ||||
|   * Handle invalid status codes | ||||
| 
 | ||||
| 0.0.1 / 2014-06-05 | ||||
| ================== | ||||
| 
 | ||||
|   * deps: debug@1.0.2 | ||||
| 
 | ||||
| 0.0.0 / 2014-06-05 | ||||
| ================== | ||||
| 
 | ||||
|   * Extracted from connect/express | ||||
							
								
								
									
										22
									
								
								node_modules/finalhandler/LICENSE
									
										
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										22
									
								
								node_modules/finalhandler/LICENSE
									
										
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							|  | @ -0,0 +1,22 @@ | |||
| (The MIT License) | ||||
| 
 | ||||
| Copyright (c) 2014-2022 Douglas Christopher Wilson <doug@somethingdoug.com> | ||||
| 
 | ||||
| Permission is hereby granted, free of charge, to any person obtaining | ||||
| a copy of this software and associated documentation files (the | ||||
| 'Software'), to deal in the Software without restriction, including | ||||
| without limitation the rights to use, copy, modify, merge, publish, | ||||
| distribute, sublicense, and/or sell copies of the Software, and to | ||||
| permit persons to whom the Software is furnished to do so, subject to | ||||
| the following conditions: | ||||
| 
 | ||||
| The above copyright notice and this permission notice shall be | ||||
| included in all copies or substantial portions of the Software. | ||||
| 
 | ||||
| THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, | ||||
| EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF | ||||
| MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. | ||||
| IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY | ||||
| CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, | ||||
| TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE | ||||
| SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. | ||||
							
								
								
									
										147
									
								
								node_modules/finalhandler/README.md
									
										
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										147
									
								
								node_modules/finalhandler/README.md
									
										
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							|  | @ -0,0 +1,147 @@ | |||
| # finalhandler | ||||
| 
 | ||||
| [![NPM Version][npm-image]][npm-url] | ||||
| [![NPM Downloads][downloads-image]][downloads-url] | ||||
| [![Node.js Version][node-image]][node-url] | ||||
| [![Build Status][github-actions-ci-image]][github-actions-ci-url] | ||||
| [![Test Coverage][coveralls-image]][coveralls-url] | ||||
| 
 | ||||
| Node.js function to invoke as the final step to respond to HTTP request. | ||||
| 
 | ||||
| ## Installation | ||||
| 
 | ||||
| This is a [Node.js](https://nodejs.org/en/) module available through the | ||||
| [npm registry](https://www.npmjs.com/). Installation is done using the | ||||
| [`npm install` command](https://docs.npmjs.com/getting-started/installing-npm-packages-locally): | ||||
| 
 | ||||
| ```sh | ||||
| $ npm install finalhandler | ||||
| ``` | ||||
| 
 | ||||
| ## API | ||||
| 
 | ||||
| ```js | ||||
| var finalhandler = require('finalhandler') | ||||
| ``` | ||||
| 
 | ||||
| ### finalhandler(req, res, [options]) | ||||
| 
 | ||||
| Returns function to be invoked as the final step for the given `req` and `res`. | ||||
| This function is to be invoked as `fn(err)`. If `err` is falsy, the handler will | ||||
| write out a 404 response to the `res`. If it is truthy, an error response will | ||||
| be written out to the `res` or `res` will be terminated if a response has already | ||||
| started. | ||||
| 
 | ||||
| When an error is written, the following information is added to the response: | ||||
| 
 | ||||
|   * The `res.statusCode` is set from `err.status` (or `err.statusCode`). If | ||||
|     this value is outside the 4xx or 5xx range, it will be set to 500. | ||||
|   * The `res.statusMessage` is set according to the status code. | ||||
|   * The body will be the HTML of the status code message if `env` is | ||||
|     `'production'`, otherwise will be `err.stack`. | ||||
|   * Any headers specified in an `err.headers` object. | ||||
| 
 | ||||
| The final handler will also unpipe anything from `req` when it is invoked. | ||||
| 
 | ||||
| #### options.env | ||||
| 
 | ||||
| By default, the environment is determined by `NODE_ENV` variable, but it can be | ||||
| overridden by this option. | ||||
| 
 | ||||
| #### options.onerror | ||||
| 
 | ||||
| Provide a function to be called with the `err` when it exists. Can be used for | ||||
| writing errors to a central location without excessive function generation. Called | ||||
| as `onerror(err, req, res)`. | ||||
| 
 | ||||
| ## Examples | ||||
| 
 | ||||
| ### always 404 | ||||
| 
 | ||||
| ```js | ||||
| var finalhandler = require('finalhandler') | ||||
| var http = require('http') | ||||
| 
 | ||||
| var server = http.createServer(function (req, res) { | ||||
|   var done = finalhandler(req, res) | ||||
|   done() | ||||
| }) | ||||
| 
 | ||||
| server.listen(3000) | ||||
| ``` | ||||
| 
 | ||||
| ### perform simple action | ||||
| 
 | ||||
| ```js | ||||
| var finalhandler = require('finalhandler') | ||||
| var fs = require('fs') | ||||
| var http = require('http') | ||||
| 
 | ||||
| var server = http.createServer(function (req, res) { | ||||
|   var done = finalhandler(req, res) | ||||
| 
 | ||||
|   fs.readFile('index.html', function (err, buf) { | ||||
|     if (err) return done(err) | ||||
|     res.setHeader('Content-Type', 'text/html') | ||||
|     res.end(buf) | ||||
|   }) | ||||
| }) | ||||
| 
 | ||||
| server.listen(3000) | ||||
| ``` | ||||
| 
 | ||||
| ### use with middleware-style functions | ||||
| 
 | ||||
| ```js | ||||
| var finalhandler = require('finalhandler') | ||||
| var http = require('http') | ||||
| var serveStatic = require('serve-static') | ||||
| 
 | ||||
| var serve = serveStatic('public') | ||||
| 
 | ||||
| var server = http.createServer(function (req, res) { | ||||
|   var done = finalhandler(req, res) | ||||
|   serve(req, res, done) | ||||
| }) | ||||
| 
 | ||||
| server.listen(3000) | ||||
| ``` | ||||
| 
 | ||||
| ### keep log of all errors | ||||
| 
 | ||||
| ```js | ||||
| var finalhandler = require('finalhandler') | ||||
| var fs = require('fs') | ||||
| var http = require('http') | ||||
| 
 | ||||
| var server = http.createServer(function (req, res) { | ||||
|   var done = finalhandler(req, res, { onerror: logerror }) | ||||
| 
 | ||||
|   fs.readFile('index.html', function (err, buf) { | ||||
|     if (err) return done(err) | ||||
|     res.setHeader('Content-Type', 'text/html') | ||||
|     res.end(buf) | ||||
|   }) | ||||
| }) | ||||
| 
 | ||||
| server.listen(3000) | ||||
| 
 | ||||
| function logerror (err) { | ||||
|   console.error(err.stack || err.toString()) | ||||
| } | ||||
| ``` | ||||
| 
 | ||||
| ## License | ||||
| 
 | ||||
| [MIT](LICENSE) | ||||
| 
 | ||||
| [npm-image]: https://img.shields.io/npm/v/finalhandler.svg | ||||
| [npm-url]: https://npmjs.org/package/finalhandler | ||||
| [node-image]: https://img.shields.io/node/v/finalhandler.svg | ||||
| [node-url]: https://nodejs.org/en/download | ||||
| [coveralls-image]: https://img.shields.io/coveralls/pillarjs/finalhandler.svg | ||||
| [coveralls-url]: https://coveralls.io/r/pillarjs/finalhandler?branch=master | ||||
| [downloads-image]: https://img.shields.io/npm/dm/finalhandler.svg | ||||
| [downloads-url]: https://npmjs.org/package/finalhandler | ||||
| [github-actions-ci-image]: https://img.shields.io/github/workflow/status/pillarjs/finalhandler/ci/master?label=ci | ||||
| [github-actions-ci-url]: https://github.com/jshttp/pillarjs/finalhandler?query=workflow%3Aci | ||||
							
								
								
									
										25
									
								
								node_modules/finalhandler/SECURITY.md
									
										
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										25
									
								
								node_modules/finalhandler/SECURITY.md
									
										
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							|  | @ -0,0 +1,25 @@ | |||
| # Security Policies and Procedures | ||||
| 
 | ||||
| ## Reporting a Bug | ||||
| 
 | ||||
| The `finalhandler` 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 `finalhandler`. This | ||||
| information can be found in the npm registry using the command | ||||
| `npm owner ls finalhandler`. | ||||
| If unsure or unable to get the information from the above, open an issue | ||||
| in the [project issue tracker](https://github.com/pillarjs/finalhandler/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. | ||||
							
								
								
									
										336
									
								
								node_modules/finalhandler/index.js
									
										
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										336
									
								
								node_modules/finalhandler/index.js
									
										
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							|  | @ -0,0 +1,336 @@ | |||
| /*! | ||||
|  * finalhandler | ||||
|  * Copyright(c) 2014-2022 Douglas Christopher Wilson | ||||
|  * MIT Licensed | ||||
|  */ | ||||
| 
 | ||||
| 'use strict' | ||||
| 
 | ||||
| /** | ||||
|  * Module dependencies. | ||||
|  * @private | ||||
|  */ | ||||
| 
 | ||||
| var debug = require('debug')('finalhandler') | ||||
| var encodeUrl = require('encodeurl') | ||||
| var escapeHtml = require('escape-html') | ||||
| var onFinished = require('on-finished') | ||||
| var parseUrl = require('parseurl') | ||||
| var statuses = require('statuses') | ||||
| var unpipe = require('unpipe') | ||||
| 
 | ||||
| /** | ||||
|  * Module variables. | ||||
|  * @private | ||||
|  */ | ||||
| 
 | ||||
| var DOUBLE_SPACE_REGEXP = /\x20{2}/g | ||||
| var NEWLINE_REGEXP = /\n/g | ||||
| 
 | ||||
| /* istanbul ignore next */ | ||||
| var defer = typeof setImmediate === 'function' | ||||
|   ? setImmediate | ||||
|   : function (fn) { process.nextTick(fn.bind.apply(fn, arguments)) } | ||||
| var isFinished = onFinished.isFinished | ||||
| 
 | ||||
| /** | ||||
|  * Create a minimal HTML document. | ||||
|  * | ||||
|  * @param {string} message | ||||
|  * @private | ||||
|  */ | ||||
| 
 | ||||
| function createHtmlDocument (message) { | ||||
|   var body = escapeHtml(message) | ||||
|     .replace(NEWLINE_REGEXP, '<br>') | ||||
|     .replace(DOUBLE_SPACE_REGEXP, '  ') | ||||
| 
 | ||||
|   return '<!DOCTYPE html>\n' + | ||||
|     '<html lang="en">\n' + | ||||
|     '<head>\n' + | ||||
|     '<meta charset="utf-8">\n' + | ||||
|     '<title>Error</title>\n' + | ||||
|     '</head>\n' + | ||||
|     '<body>\n' + | ||||
|     '<pre>' + body + '</pre>\n' + | ||||
|     '</body>\n' + | ||||
|     '</html>\n' | ||||
| } | ||||
| 
 | ||||
| /** | ||||
|  * Module exports. | ||||
|  * @public | ||||
|  */ | ||||
| 
 | ||||
| module.exports = finalhandler | ||||
| 
 | ||||
| /** | ||||
|  * Create a function to handle the final response. | ||||
|  * | ||||
|  * @param {Request} req | ||||
|  * @param {Response} res | ||||
|  * @param {Object} [options] | ||||
|  * @return {Function} | ||||
|  * @public | ||||
|  */ | ||||
| 
 | ||||
| function finalhandler (req, res, options) { | ||||
|   var opts = options || {} | ||||
| 
 | ||||
|   // get environment
 | ||||
|   var env = opts.env || process.env.NODE_ENV || 'development' | ||||
| 
 | ||||
|   // get error callback
 | ||||
|   var onerror = opts.onerror | ||||
| 
 | ||||
|   return function (err) { | ||||
|     var headers | ||||
|     var msg | ||||
|     var status | ||||
| 
 | ||||
|     // ignore 404 on in-flight response
 | ||||
|     if (!err && headersSent(res)) { | ||||
|       debug('cannot 404 after headers sent') | ||||
|       return | ||||
|     } | ||||
| 
 | ||||
|     // unhandled error
 | ||||
|     if (err) { | ||||
|       // respect status code from error
 | ||||
|       status = getErrorStatusCode(err) | ||||
| 
 | ||||
|       if (status === undefined) { | ||||
|         // fallback to status code on response
 | ||||
|         status = getResponseStatusCode(res) | ||||
|       } else { | ||||
|         // respect headers from error
 | ||||
|         headers = getErrorHeaders(err) | ||||
|       } | ||||
| 
 | ||||
|       // get error message
 | ||||
|       msg = getErrorMessage(err, status, env) | ||||
|     } else { | ||||
|       // not found
 | ||||
|       status = 404 | ||||
|       msg = 'Cannot ' + req.method + ' ' + encodeUrl(getResourceName(req)) | ||||
|     } | ||||
| 
 | ||||
|     debug('default %s', status) | ||||
| 
 | ||||
|     // schedule onerror callback
 | ||||
|     if (err && onerror) { | ||||
|       defer(onerror, err, req, res) | ||||
|     } | ||||
| 
 | ||||
|     // cannot actually respond
 | ||||
|     if (headersSent(res)) { | ||||
|       debug('cannot %d after headers sent', status) | ||||
|       req.socket.destroy() | ||||
|       return | ||||
|     } | ||||
| 
 | ||||
|     // send response
 | ||||
|     send(req, res, status, headers, msg) | ||||
|   } | ||||
| } | ||||
| 
 | ||||
| /** | ||||
|  * Get headers from Error object. | ||||
|  * | ||||
|  * @param {Error} err | ||||
|  * @return {object} | ||||
|  * @private | ||||
|  */ | ||||
| 
 | ||||
| function getErrorHeaders (err) { | ||||
|   if (!err.headers || typeof err.headers !== 'object') { | ||||
|     return undefined | ||||
|   } | ||||
| 
 | ||||
|   var headers = Object.create(null) | ||||
|   var keys = Object.keys(err.headers) | ||||
| 
 | ||||
|   for (var i = 0; i < keys.length; i++) { | ||||
|     var key = keys[i] | ||||
|     headers[key] = err.headers[key] | ||||
|   } | ||||
| 
 | ||||
|   return headers | ||||
| } | ||||
| 
 | ||||
| /** | ||||
|  * Get message from Error object, fallback to status message. | ||||
|  * | ||||
|  * @param {Error} err | ||||
|  * @param {number} status | ||||
|  * @param {string} env | ||||
|  * @return {string} | ||||
|  * @private | ||||
|  */ | ||||
| 
 | ||||
| function getErrorMessage (err, status, env) { | ||||
|   var msg | ||||
| 
 | ||||
|   if (env !== 'production') { | ||||
|     // use err.stack, which typically includes err.message
 | ||||
|     msg = err.stack | ||||
| 
 | ||||
|     // fallback to err.toString() when possible
 | ||||
|     if (!msg && typeof err.toString === 'function') { | ||||
|       msg = err.toString() | ||||
|     } | ||||
|   } | ||||
| 
 | ||||
|   return msg || statuses.message[status] | ||||
| } | ||||
| 
 | ||||
| /** | ||||
|  * Get status code from Error object. | ||||
|  * | ||||
|  * @param {Error} err | ||||
|  * @return {number} | ||||
|  * @private | ||||
|  */ | ||||
| 
 | ||||
| function getErrorStatusCode (err) { | ||||
|   // check err.status
 | ||||
|   if (typeof err.status === 'number' && err.status >= 400 && err.status < 600) { | ||||
|     return err.status | ||||
|   } | ||||
| 
 | ||||
|   // check err.statusCode
 | ||||
|   if (typeof err.statusCode === 'number' && err.statusCode >= 400 && err.statusCode < 600) { | ||||
|     return err.statusCode | ||||
|   } | ||||
| 
 | ||||
|   return undefined | ||||
| } | ||||
| 
 | ||||
| /** | ||||
|  * Get resource name for the request. | ||||
|  * | ||||
|  * This is typically just the original pathname of the request | ||||
|  * but will fallback to "resource" is that cannot be determined. | ||||
|  * | ||||
|  * @param {IncomingMessage} req | ||||
|  * @return {string} | ||||
|  * @private | ||||
|  */ | ||||
| 
 | ||||
| function getResourceName (req) { | ||||
|   try { | ||||
|     return parseUrl.original(req).pathname | ||||
|   } catch (e) { | ||||
|     return 'resource' | ||||
|   } | ||||
| } | ||||
| 
 | ||||
| /** | ||||
|  * Get status code from response. | ||||
|  * | ||||
|  * @param {OutgoingMessage} res | ||||
|  * @return {number} | ||||
|  * @private | ||||
|  */ | ||||
| 
 | ||||
| function getResponseStatusCode (res) { | ||||
|   var status = res.statusCode | ||||
| 
 | ||||
|   // default status code to 500 if outside valid range
 | ||||
|   if (typeof status !== 'number' || status < 400 || status > 599) { | ||||
|     status = 500 | ||||
|   } | ||||
| 
 | ||||
|   return status | ||||
| } | ||||
| 
 | ||||
| /** | ||||
|  * Determine if the response headers have been sent. | ||||
|  * | ||||
|  * @param {object} res | ||||
|  * @returns {boolean} | ||||
|  * @private | ||||
|  */ | ||||
| 
 | ||||
| function headersSent (res) { | ||||
|   return typeof res.headersSent !== 'boolean' | ||||
|     ? Boolean(res._header) | ||||
|     : res.headersSent | ||||
| } | ||||
| 
 | ||||
| /** | ||||
|  * Send response. | ||||
|  * | ||||
|  * @param {IncomingMessage} req | ||||
|  * @param {OutgoingMessage} res | ||||
|  * @param {number} status | ||||
|  * @param {object} headers | ||||
|  * @param {string} message | ||||
|  * @private | ||||
|  */ | ||||
| 
 | ||||
| function send (req, res, status, headers, message) { | ||||
|   function write () { | ||||
|     // response body
 | ||||
|     var body = createHtmlDocument(message) | ||||
| 
 | ||||
|     // response status
 | ||||
|     res.statusCode = status | ||||
|     res.statusMessage = statuses.message[status] | ||||
| 
 | ||||
|     // remove any content headers
 | ||||
|     res.removeHeader('Content-Encoding') | ||||
|     res.removeHeader('Content-Language') | ||||
|     res.removeHeader('Content-Range') | ||||
| 
 | ||||
|     // response headers
 | ||||
|     setHeaders(res, headers) | ||||
| 
 | ||||
|     // security headers
 | ||||
|     res.setHeader('Content-Security-Policy', "default-src 'none'") | ||||
|     res.setHeader('X-Content-Type-Options', 'nosniff') | ||||
| 
 | ||||
|     // standard headers
 | ||||
|     res.setHeader('Content-Type', 'text/html; charset=utf-8') | ||||
|     res.setHeader('Content-Length', Buffer.byteLength(body, 'utf8')) | ||||
| 
 | ||||
|     if (req.method === 'HEAD') { | ||||
|       res.end() | ||||
|       return | ||||
|     } | ||||
| 
 | ||||
|     res.end(body, 'utf8') | ||||
|   } | ||||
| 
 | ||||
|   if (isFinished(req)) { | ||||
|     write() | ||||
|     return | ||||
|   } | ||||
| 
 | ||||
|   // unpipe everything from the request
 | ||||
|   unpipe(req) | ||||
| 
 | ||||
|   // flush the request
 | ||||
|   onFinished(req, write) | ||||
|   req.resume() | ||||
| } | ||||
| 
 | ||||
| /** | ||||
|  * Set response headers from an object. | ||||
|  * | ||||
|  * @param {OutgoingMessage} res | ||||
|  * @param {object} headers | ||||
|  * @private | ||||
|  */ | ||||
| 
 | ||||
| function setHeaders (res, headers) { | ||||
|   if (!headers) { | ||||
|     return | ||||
|   } | ||||
| 
 | ||||
|   var keys = Object.keys(headers) | ||||
|   for (var i = 0; i < keys.length; i++) { | ||||
|     var key = keys[i] | ||||
|     res.setHeader(key, headers[key]) | ||||
|   } | ||||
| } | ||||
							
								
								
									
										1
									
								
								node_modules/finalhandler/node_modules/debug/.coveralls.yml
									
										
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								node_modules/finalhandler/node_modules/debug/.coveralls.yml
									
										
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							|  | @ -0,0 +1 @@ | |||
| repo_token: SIAeZjKYlHK74rbcFvNHMUzjRiMpflxve | ||||
							
								
								
									
										11
									
								
								node_modules/finalhandler/node_modules/debug/.eslintrc
									
										
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								node_modules/finalhandler/node_modules/debug/.eslintrc
									
										
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							|  | @ -0,0 +1,11 @@ | |||
| { | ||||
|   "env": { | ||||
|     "browser": true, | ||||
|     "node": true | ||||
|   }, | ||||
|   "rules": { | ||||
|     "no-console": 0, | ||||
|     "no-empty": [1, { "allowEmptyCatch": true }] | ||||
|   }, | ||||
|   "extends": "eslint:recommended" | ||||
| } | ||||
							
								
								
									
										9
									
								
								node_modules/finalhandler/node_modules/debug/.npmignore
									
										
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								node_modules/finalhandler/node_modules/debug/.npmignore
									
										
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							|  | @ -0,0 +1,9 @@ | |||
| support | ||||
| test | ||||
| examples | ||||
| example | ||||
| *.sock | ||||
| dist | ||||
| yarn.lock | ||||
| coverage | ||||
| bower.json | ||||
							
								
								
									
										14
									
								
								node_modules/finalhandler/node_modules/debug/.travis.yml
									
										
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										14
									
								
								node_modules/finalhandler/node_modules/debug/.travis.yml
									
										
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							|  | @ -0,0 +1,14 @@ | |||
| 
 | ||||
| language: node_js | ||||
| node_js: | ||||
|   - "6" | ||||
|   - "5" | ||||
|   - "4" | ||||
| 
 | ||||
| install: | ||||
|   - make node_modules | ||||
| 
 | ||||
| script: | ||||
|   - make lint | ||||
|   - make test | ||||
|   - make coveralls | ||||
							
								
								
									
										362
									
								
								node_modules/finalhandler/node_modules/debug/CHANGELOG.md
									
										
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										362
									
								
								node_modules/finalhandler/node_modules/debug/CHANGELOG.md
									
										
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							|  | @ -0,0 +1,362 @@ | |||
| 
 | ||||
| 2.6.9 / 2017-09-22 | ||||
| ================== | ||||
| 
 | ||||
|   * remove ReDoS regexp in %o formatter (#504) | ||||
| 
 | ||||
| 2.6.8 / 2017-05-18 | ||||
| ================== | ||||
| 
 | ||||
|   * Fix: Check for undefined on browser globals (#462, @marbemac) | ||||
| 
 | ||||
| 2.6.7 / 2017-05-16 | ||||
| ================== | ||||
| 
 | ||||
|   * Fix: Update ms to 2.0.0 to fix regular expression denial of service vulnerability (#458, @hubdotcom) | ||||
|   * Fix: Inline extend function in node implementation (#452, @dougwilson) | ||||
|   * Docs: Fix typo (#455, @msasad) | ||||
| 
 | ||||
| 2.6.5 / 2017-04-27 | ||||
| ================== | ||||
|    | ||||
|   * Fix: null reference check on window.documentElement.style.WebkitAppearance (#447, @thebigredgeek) | ||||
|   * Misc: clean up browser reference checks (#447, @thebigredgeek) | ||||
|   * Misc: add npm-debug.log to .gitignore (@thebigredgeek) | ||||
| 
 | ||||
| 
 | ||||
| 2.6.4 / 2017-04-20 | ||||
| ================== | ||||
| 
 | ||||
|   * Fix: bug that would occure if process.env.DEBUG is a non-string value. (#444, @LucianBuzzo) | ||||
|   * Chore: ignore bower.json in npm installations. (#437, @joaovieira) | ||||
|   * Misc: update "ms" to v0.7.3 (@tootallnate) | ||||
| 
 | ||||
| 2.6.3 / 2017-03-13 | ||||
| ================== | ||||
| 
 | ||||
|   * Fix: Electron reference to `process.env.DEBUG` (#431, @paulcbetts) | ||||
|   * Docs: Changelog fix (@thebigredgeek) | ||||
| 
 | ||||
| 2.6.2 / 2017-03-10 | ||||
| ================== | ||||
| 
 | ||||
|   * Fix: DEBUG_MAX_ARRAY_LENGTH (#420, @slavaGanzin) | ||||
|   * Docs: Add backers and sponsors from Open Collective (#422, @piamancini) | ||||
|   * Docs: Add Slackin invite badge (@tootallnate) | ||||
| 
 | ||||
| 2.6.1 / 2017-02-10 | ||||
| ================== | ||||
| 
 | ||||
|   * Fix: Module's `export default` syntax fix for IE8 `Expected identifier` error | ||||
|   * Fix: Whitelist DEBUG_FD for values 1 and 2 only (#415, @pi0) | ||||
|   * Fix: IE8 "Expected identifier" error (#414, @vgoma) | ||||
|   * Fix: Namespaces would not disable once enabled (#409, @musikov) | ||||
| 
 | ||||
| 2.6.0 / 2016-12-28 | ||||
| ================== | ||||
| 
 | ||||
|   * Fix: added better null pointer checks for browser useColors (@thebigredgeek) | ||||
|   * Improvement: removed explicit `window.debug` export (#404, @tootallnate) | ||||
|   * Improvement: deprecated `DEBUG_FD` environment variable (#405, @tootallnate) | ||||
| 
 | ||||
| 2.5.2 / 2016-12-25 | ||||
| ================== | ||||
| 
 | ||||
|   * Fix: reference error on window within webworkers (#393, @KlausTrainer) | ||||
|   * Docs: fixed README typo (#391, @lurch) | ||||
|   * Docs: added notice about v3 api discussion (@thebigredgeek) | ||||
| 
 | ||||
| 2.5.1 / 2016-12-20 | ||||
| ================== | ||||
| 
 | ||||
|   * Fix: babel-core compatibility | ||||
| 
 | ||||
| 2.5.0 / 2016-12-20 | ||||
| ================== | ||||
| 
 | ||||
|   * Fix: wrong reference in bower file (@thebigredgeek) | ||||
|   * Fix: webworker compatibility (@thebigredgeek) | ||||
|   * Fix: output formatting issue (#388, @kribblo) | ||||
|   * Fix: babel-loader compatibility (#383, @escwald) | ||||
|   * Misc: removed built asset from repo and publications (@thebigredgeek) | ||||
|   * Misc: moved source files to /src (#378, @yamikuronue) | ||||
|   * Test: added karma integration and replaced babel with browserify for browser tests (#378, @yamikuronue) | ||||
|   * Test: coveralls integration (#378, @yamikuronue) | ||||
|   * Docs: simplified language in the opening paragraph (#373, @yamikuronue) | ||||
| 
 | ||||
| 2.4.5 / 2016-12-17 | ||||
| ================== | ||||
| 
 | ||||
|   * Fix: `navigator` undefined in Rhino (#376, @jochenberger) | ||||
|   * Fix: custom log function (#379, @hsiliev) | ||||
|   * Improvement: bit of cleanup + linting fixes (@thebigredgeek) | ||||
|   * Improvement: rm non-maintainted `dist/` dir (#375, @freewil) | ||||
|   * Docs: simplified language in the opening paragraph. (#373, @yamikuronue) | ||||
| 
 | ||||
| 2.4.4 / 2016-12-14 | ||||
| ================== | ||||
| 
 | ||||
|   * Fix: work around debug being loaded in preload scripts for electron (#368, @paulcbetts) | ||||
| 
 | ||||
| 2.4.3 / 2016-12-14 | ||||
| ================== | ||||
| 
 | ||||
|   * Fix: navigation.userAgent error for react native (#364, @escwald) | ||||
| 
 | ||||
| 2.4.2 / 2016-12-14 | ||||
| ================== | ||||
| 
 | ||||
|   * Fix: browser colors (#367, @tootallnate) | ||||
|   * Misc: travis ci integration (@thebigredgeek) | ||||
|   * Misc: added linting and testing boilerplate with sanity check (@thebigredgeek) | ||||
| 
 | ||||
| 2.4.1 / 2016-12-13 | ||||
| ================== | ||||
| 
 | ||||
|   * Fix: typo that broke the package (#356) | ||||
| 
 | ||||
| 2.4.0 / 2016-12-13 | ||||
| ================== | ||||
| 
 | ||||
|   * Fix: bower.json references unbuilt src entry point (#342, @justmatt) | ||||
|   * Fix: revert "handle regex special characters" (@tootallnate) | ||||
|   * Feature: configurable util.inspect()`options for NodeJS (#327, @tootallnate) | ||||
|   * Feature: %O`(big O) pretty-prints objects (#322, @tootallnate) | ||||
|   * Improvement: allow colors in workers (#335, @botverse) | ||||
|   * Improvement: use same color for same namespace. (#338, @lchenay) | ||||
| 
 | ||||
| 2.3.3 / 2016-11-09 | ||||
| ================== | ||||
| 
 | ||||
|   * Fix: Catch `JSON.stringify()` errors (#195, Jovan Alleyne) | ||||
|   * Fix: Returning `localStorage` saved values (#331, Levi Thomason) | ||||
|   * Improvement: Don't create an empty object when no `process` (Nathan Rajlich) | ||||
| 
 | ||||
| 2.3.2 / 2016-11-09 | ||||
| ================== | ||||
| 
 | ||||
|   * Fix: be super-safe in index.js as well (@TooTallNate) | ||||
|   * Fix: should check whether process exists (Tom Newby) | ||||
| 
 | ||||
| 2.3.1 / 2016-11-09 | ||||
| ================== | ||||
| 
 | ||||
|   * Fix: Added electron compatibility (#324, @paulcbetts) | ||||
|   * Improvement: Added performance optimizations (@tootallnate) | ||||
|   * Readme: Corrected PowerShell environment variable example (#252, @gimre) | ||||
|   * Misc: Removed yarn lock file from source control (#321, @fengmk2) | ||||
| 
 | ||||
| 2.3.0 / 2016-11-07 | ||||
| ================== | ||||
| 
 | ||||
|   * Fix: Consistent placement of ms diff at end of output (#215, @gorangajic) | ||||
|   * Fix: Escaping of regex special characters in namespace strings (#250, @zacronos) | ||||
|   * Fix: Fixed bug causing crash on react-native (#282, @vkarpov15) | ||||
|   * Feature: Enabled ES6+ compatible import via default export (#212 @bucaran) | ||||
|   * Feature: Added %O formatter to reflect Chrome's console.log capability (#279, @oncletom) | ||||
|   * Package: Update "ms" to 0.7.2 (#315, @DevSide) | ||||
|   * Package: removed superfluous version property from bower.json (#207 @kkirsche) | ||||
|   * Readme: fix USE_COLORS to DEBUG_COLORS | ||||
|   * Readme: Doc fixes for format string sugar (#269, @mlucool) | ||||
|   * Readme: Updated docs for DEBUG_FD and DEBUG_COLORS environment variables (#232, @mattlyons0) | ||||
|   * Readme: doc fixes for PowerShell (#271 #243, @exoticknight @unreadable) | ||||
|   * Readme: better docs for browser support (#224, @matthewmueller) | ||||
|   * Tooling: Added yarn integration for development (#317, @thebigredgeek) | ||||
|   * Misc: Renamed History.md to CHANGELOG.md (@thebigredgeek) | ||||
|   * Misc: Added license file (#226 #274, @CantemoInternal @sdaitzman) | ||||
|   * Misc: Updated contributors (@thebigredgeek) | ||||
| 
 | ||||
| 2.2.0 / 2015-05-09 | ||||
| ================== | ||||
| 
 | ||||
|   * package: update "ms" to v0.7.1 (#202, @dougwilson) | ||||
|   * README: add logging to file example (#193, @DanielOchoa) | ||||
|   * README: fixed a typo (#191, @amir-s) | ||||
|   * browser: expose `storage` (#190, @stephenmathieson) | ||||
|   * Makefile: add a `distclean` target (#189, @stephenmathieson) | ||||
| 
 | ||||
| 2.1.3 / 2015-03-13 | ||||
| ================== | ||||
| 
 | ||||
|   * Updated stdout/stderr example (#186) | ||||
|   * Updated example/stdout.js to match debug current behaviour | ||||
|   * Renamed example/stderr.js to stdout.js | ||||
|   * Update Readme.md (#184) | ||||
|   * replace high intensity foreground color for bold (#182, #183) | ||||
| 
 | ||||
| 2.1.2 / 2015-03-01 | ||||
| ================== | ||||
| 
 | ||||
|   * dist: recompile | ||||
|   * update "ms" to v0.7.0 | ||||
|   * package: update "browserify" to v9.0.3 | ||||
|   * component: fix "ms.js" repo location | ||||
|   * changed bower package name | ||||
|   * updated documentation about using debug in a browser | ||||
|   * fix: security error on safari (#167, #168, @yields) | ||||
| 
 | ||||
| 2.1.1 / 2014-12-29 | ||||
| ================== | ||||
| 
 | ||||
|   * browser: use `typeof` to check for `console` existence | ||||
|   * browser: check for `console.log` truthiness (fix IE 8/9) | ||||
|   * browser: add support for Chrome apps | ||||
|   * Readme: added Windows usage remarks | ||||
|   * Add `bower.json` to properly support bower install | ||||
| 
 | ||||
| 2.1.0 / 2014-10-15 | ||||
| ================== | ||||
| 
 | ||||
|   * node: implement `DEBUG_FD` env variable support | ||||
|   * package: update "browserify" to v6.1.0 | ||||
|   * package: add "license" field to package.json (#135, @panuhorsmalahti) | ||||
| 
 | ||||
| 2.0.0 / 2014-09-01 | ||||
| ================== | ||||
| 
 | ||||
|   * package: update "browserify" to v5.11.0 | ||||
|   * node: use stderr rather than stdout for logging (#29, @stephenmathieson) | ||||
| 
 | ||||
| 1.0.4 / 2014-07-15 | ||||
| ================== | ||||
| 
 | ||||
|   * dist: recompile | ||||
|   * example: remove `console.info()` log usage | ||||
|   * example: add "Content-Type" UTF-8 header to browser example | ||||
|   * browser: place %c marker after the space character | ||||
|   * browser: reset the "content" color via `color: inherit` | ||||
|   * browser: add colors support for Firefox >= v31 | ||||
|   * debug: prefer an instance `log()` function over the global one (#119) | ||||
|   * Readme: update documentation about styled console logs for FF v31 (#116, @wryk) | ||||
| 
 | ||||
| 1.0.3 / 2014-07-09 | ||||
| ================== | ||||
| 
 | ||||
|   * Add support for multiple wildcards in namespaces (#122, @seegno) | ||||
|   * browser: fix lint | ||||
| 
 | ||||
| 1.0.2 / 2014-06-10 | ||||
| ================== | ||||
| 
 | ||||
|   * browser: update color palette (#113, @gscottolson) | ||||
|   * common: make console logging function configurable (#108, @timoxley) | ||||
|   * node: fix %o colors on old node <= 0.8.x | ||||
|   * Makefile: find node path using shell/which (#109, @timoxley) | ||||
| 
 | ||||
| 1.0.1 / 2014-06-06 | ||||
| ================== | ||||
| 
 | ||||
|   * browser: use `removeItem()` to clear localStorage | ||||
|   * browser, node: don't set DEBUG if namespaces is undefined (#107, @leedm777) | ||||
|   * package: add "contributors" section | ||||
|   * node: fix comment typo | ||||
|   * README: list authors | ||||
| 
 | ||||
| 1.0.0 / 2014-06-04 | ||||
| ================== | ||||
| 
 | ||||
|   * make ms diff be global, not be scope | ||||
|   * debug: ignore empty strings in enable() | ||||
|   * node: make DEBUG_COLORS able to disable coloring | ||||
|   * *: export the `colors` array | ||||
|   * npmignore: don't publish the `dist` dir | ||||
|   * Makefile: refactor to use browserify | ||||
|   * package: add "browserify" as a dev dependency | ||||
|   * Readme: add Web Inspector Colors section | ||||
|   * node: reset terminal color for the debug content | ||||
|   * node: map "%o" to `util.inspect()` | ||||
|   * browser: map "%j" to `JSON.stringify()` | ||||
|   * debug: add custom "formatters" | ||||
|   * debug: use "ms" module for humanizing the diff | ||||
|   * Readme: add "bash" syntax highlighting | ||||
|   * browser: add Firebug color support | ||||
|   * browser: add colors for WebKit browsers | ||||
|   * node: apply log to `console` | ||||
|   * rewrite: abstract common logic for Node & browsers | ||||
|   * add .jshintrc file | ||||
| 
 | ||||
| 0.8.1 / 2014-04-14 | ||||
| ================== | ||||
| 
 | ||||
|   * package: re-add the "component" section | ||||
| 
 | ||||
| 0.8.0 / 2014-03-30 | ||||
| ================== | ||||
| 
 | ||||
|   * add `enable()` method for nodejs. Closes #27 | ||||
|   * change from stderr to stdout | ||||
|   * remove unnecessary index.js file | ||||
| 
 | ||||
| 0.7.4 / 2013-11-13 | ||||
| ================== | ||||
| 
 | ||||
|   * remove "browserify" key from package.json (fixes something in browserify) | ||||
| 
 | ||||
| 0.7.3 / 2013-10-30 | ||||
| ================== | ||||
| 
 | ||||
|   * fix: catch localStorage security error when cookies are blocked (Chrome) | ||||
|   * add debug(err) support. Closes #46 | ||||
|   * add .browser prop to package.json. Closes #42 | ||||
| 
 | ||||
| 0.7.2 / 2013-02-06 | ||||
| ================== | ||||
| 
 | ||||
|   * fix package.json | ||||
|   * fix: Mobile Safari (private mode) is broken with debug | ||||
|   * fix: Use unicode to send escape character to shell instead of octal to work with strict mode javascript | ||||
| 
 | ||||
| 0.7.1 / 2013-02-05 | ||||
| ================== | ||||
| 
 | ||||
|   * add repository URL to package.json | ||||
|   * add DEBUG_COLORED to force colored output | ||||
|   * add browserify support | ||||
|   * fix component. Closes #24 | ||||
| 
 | ||||
| 0.7.0 / 2012-05-04 | ||||
| ================== | ||||
| 
 | ||||
|   * Added .component to package.json | ||||
|   * Added debug.component.js build | ||||
| 
 | ||||
| 0.6.0 / 2012-03-16 | ||||
| ================== | ||||
| 
 | ||||
|   * Added support for "-" prefix in DEBUG [Vinay Pulim] | ||||
|   * Added `.enabled` flag to the node version [TooTallNate] | ||||
| 
 | ||||
| 0.5.0 / 2012-02-02 | ||||
| ================== | ||||
| 
 | ||||
|   * Added: humanize diffs. Closes #8 | ||||
|   * Added `debug.disable()` to the CS variant | ||||
|   * Removed padding. Closes #10 | ||||
|   * Fixed: persist client-side variant again. Closes #9 | ||||
| 
 | ||||
| 0.4.0 / 2012-02-01 | ||||
| ================== | ||||
| 
 | ||||
|   * Added browser variant support for older browsers [TooTallNate] | ||||
|   * Added `debug.enable('project:*')` to browser variant [TooTallNate] | ||||
|   * Added padding to diff (moved it to the right) | ||||
| 
 | ||||
| 0.3.0 / 2012-01-26 | ||||
| ================== | ||||
| 
 | ||||
|   * Added millisecond diff when isatty, otherwise UTC string | ||||
| 
 | ||||
| 0.2.0 / 2012-01-22 | ||||
| ================== | ||||
| 
 | ||||
|   * Added wildcard support | ||||
| 
 | ||||
| 0.1.0 / 2011-12-02 | ||||
| ================== | ||||
| 
 | ||||
|   * Added: remove colors unless stderr isatty [TooTallNate] | ||||
| 
 | ||||
| 0.0.1 / 2010-01-03 | ||||
| ================== | ||||
| 
 | ||||
|   * Initial release | ||||
							
								
								
									
										19
									
								
								node_modules/finalhandler/node_modules/debug/LICENSE
									
										
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								node_modules/finalhandler/node_modules/debug/LICENSE
									
										
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							|  | @ -0,0 +1,19 @@ | |||
| (The MIT License) | ||||
| 
 | ||||
| Copyright (c) 2014 TJ Holowaychuk <tj@vision-media.ca> | ||||
| 
 | ||||
| Permission is hereby granted, free of charge, to any person obtaining a copy of this software  | ||||
| and associated documentation files (the 'Software'), to deal in the Software without restriction,  | ||||
| including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense,  | ||||
| and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, | ||||
| subject to the following conditions: | ||||
| 
 | ||||
| The above copyright notice and this permission notice shall be included in all copies or substantial  | ||||
| portions of the Software. | ||||
| 
 | ||||
| THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT  | ||||
| LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  | ||||
| IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,  | ||||
| WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE  | ||||
| SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. | ||||
| 
 | ||||
							
								
								
									
										50
									
								
								node_modules/finalhandler/node_modules/debug/Makefile
									
										
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										50
									
								
								node_modules/finalhandler/node_modules/debug/Makefile
									
										
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							|  | @ -0,0 +1,50 @@ | |||
| # get Makefile directory name: http://stackoverflow.com/a/5982798/376773
 | ||||
| THIS_MAKEFILE_PATH:=$(word $(words $(MAKEFILE_LIST)),$(MAKEFILE_LIST)) | ||||
| THIS_DIR:=$(shell cd $(dir $(THIS_MAKEFILE_PATH));pwd) | ||||
| 
 | ||||
| # BIN directory
 | ||||
| BIN := $(THIS_DIR)/node_modules/.bin | ||||
| 
 | ||||
| # Path
 | ||||
| PATH := node_modules/.bin:$(PATH) | ||||
| SHELL := /bin/bash | ||||
| 
 | ||||
| # applications
 | ||||
| NODE ?= $(shell which node) | ||||
| YARN ?= $(shell which yarn) | ||||
| PKG ?= $(if $(YARN),$(YARN),$(NODE) $(shell which npm)) | ||||
| BROWSERIFY ?= $(NODE) $(BIN)/browserify | ||||
| 
 | ||||
| .FORCE: | ||||
| 
 | ||||
| install: node_modules | ||||
| 
 | ||||
| node_modules: package.json | ||||
| 	@NODE_ENV= $(PKG) install | ||||
| 	@touch node_modules | ||||
| 
 | ||||
| lint: .FORCE | ||||
| 	eslint browser.js debug.js index.js node.js | ||||
| 
 | ||||
| test-node: .FORCE | ||||
| 	istanbul cover node_modules/mocha/bin/_mocha -- test/**.js | ||||
| 
 | ||||
| test-browser: .FORCE | ||||
| 	mkdir -p dist | ||||
| 
 | ||||
| 	@$(BROWSERIFY) \
 | ||||
| 		--standalone debug \
 | ||||
| 		. > dist/debug.js | ||||
| 
 | ||||
| 	karma start --single-run | ||||
| 	rimraf dist | ||||
| 
 | ||||
| test: .FORCE | ||||
| 	concurrently \
 | ||||
| 		"make test-node" \
 | ||||
| 		"make test-browser" | ||||
| 
 | ||||
| coveralls: | ||||
| 	cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js | ||||
| 
 | ||||
| .PHONY: all install clean distclean | ||||
							
								
								
									
										312
									
								
								node_modules/finalhandler/node_modules/debug/README.md
									
										
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										312
									
								
								node_modules/finalhandler/node_modules/debug/README.md
									
										
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							|  | @ -0,0 +1,312 @@ | |||
| # debug | ||||
| [](https://travis-ci.org/visionmedia/debug)  [](https://coveralls.io/github/visionmedia/debug?branch=master)  [](https://visionmedia-community-slackin.now.sh/) [](#backers)  | ||||
| [](#sponsors) | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| A tiny node.js debugging utility modelled after node core's debugging technique. | ||||
| 
 | ||||
| **Discussion around the V3 API is under way [here](https://github.com/visionmedia/debug/issues/370)** | ||||
| 
 | ||||
| ## Installation | ||||
| 
 | ||||
| ```bash | ||||
| $ npm install debug | ||||
| ``` | ||||
| 
 | ||||
| ## Usage | ||||
| 
 | ||||
| `debug` exposes a function; simply pass this function the name of your module, and it will return a decorated version of `console.error` for you to pass debug statements to. This will allow you to toggle the debug output for different parts of your module as well as the module as a whole. | ||||
| 
 | ||||
| Example _app.js_: | ||||
| 
 | ||||
| ```js | ||||
| var debug = require('debug')('http') | ||||
|   , http = require('http') | ||||
|   , name = 'My App'; | ||||
| 
 | ||||
| // fake app | ||||
| 
 | ||||
| debug('booting %s', name); | ||||
| 
 | ||||
| http.createServer(function(req, res){ | ||||
|   debug(req.method + ' ' + req.url); | ||||
|   res.end('hello\n'); | ||||
| }).listen(3000, function(){ | ||||
|   debug('listening'); | ||||
| }); | ||||
| 
 | ||||
| // fake worker of some kind | ||||
| 
 | ||||
| require('./worker'); | ||||
| ``` | ||||
| 
 | ||||
| Example _worker.js_: | ||||
| 
 | ||||
| ```js | ||||
| var debug = require('debug')('worker'); | ||||
| 
 | ||||
| setInterval(function(){ | ||||
|   debug('doing some work'); | ||||
| }, 1000); | ||||
| ``` | ||||
| 
 | ||||
|  The __DEBUG__ environment variable is then used to enable these based on space or comma-delimited names. Here are some examples: | ||||
| 
 | ||||
|    | ||||
| 
 | ||||
|    | ||||
| 
 | ||||
| #### Windows note | ||||
| 
 | ||||
|  On Windows the environment variable is set using the `set` command. | ||||
| 
 | ||||
|  ```cmd | ||||
|  set DEBUG=*,-not_this | ||||
|  ``` | ||||
| 
 | ||||
|  Note that PowerShell uses different syntax to set environment variables. | ||||
| 
 | ||||
|  ```cmd | ||||
|  $env:DEBUG = "*,-not_this" | ||||
|   ``` | ||||
| 
 | ||||
| Then, run the program to be debugged as usual. | ||||
| 
 | ||||
| ## Millisecond diff | ||||
| 
 | ||||
|   When actively developing an application it can be useful to see when the time spent between one `debug()` call and the next. Suppose for example you invoke `debug()` before requesting a resource, and after as well, the "+NNNms" will show you how much time was spent between calls. | ||||
| 
 | ||||
|    | ||||
| 
 | ||||
|   When stdout is not a TTY, `Date#toUTCString()` is used, making it more useful for logging the debug information as shown below: | ||||
| 
 | ||||
|    | ||||
| 
 | ||||
| ## Conventions | ||||
| 
 | ||||
|   If you're using this in one or more of your libraries, you _should_ use the name of your library so that developers may toggle debugging as desired without guessing names. If you have more than one debuggers you _should_ prefix them with your library name and use ":" to separate features. For example "bodyParser" from Connect would then be "connect:bodyParser". | ||||
| 
 | ||||
| ## Wildcards | ||||
| 
 | ||||
|   The `*` character may be used as a wildcard. Suppose for example your library has debuggers named "connect:bodyParser", "connect:compress", "connect:session", instead of listing all three with `DEBUG=connect:bodyParser,connect:compress,connect:session`, you may simply do `DEBUG=connect:*`, or to run everything using this module simply use `DEBUG=*`. | ||||
| 
 | ||||
|   You can also exclude specific debuggers by prefixing them with a "-" character.  For example, `DEBUG=*,-connect:*` would include all debuggers except those starting with "connect:". | ||||
| 
 | ||||
| ## Environment Variables | ||||
| 
 | ||||
|   When running through Node.js, you can set a few environment variables that will | ||||
|   change the behavior of the debug logging: | ||||
| 
 | ||||
| | Name      | Purpose                                         | | ||||
| |-----------|-------------------------------------------------| | ||||
| | `DEBUG`   | Enables/disables specific debugging namespaces. | | ||||
| | `DEBUG_COLORS`| Whether or not to use colors in the debug output. | | ||||
| | `DEBUG_DEPTH` | Object inspection depth. | | ||||
| | `DEBUG_SHOW_HIDDEN` | Shows hidden properties on inspected objects. | | ||||
| 
 | ||||
| 
 | ||||
|   __Note:__ The environment variables beginning with `DEBUG_` end up being | ||||
|   converted into an Options object that gets used with `%o`/`%O` formatters. | ||||
|   See the Node.js documentation for | ||||
|   [`util.inspect()`](https://nodejs.org/api/util.html#util_util_inspect_object_options) | ||||
|   for the complete list. | ||||
| 
 | ||||
| ## Formatters | ||||
| 
 | ||||
| 
 | ||||
|   Debug uses [printf-style](https://wikipedia.org/wiki/Printf_format_string) formatting. Below are the officially supported formatters: | ||||
| 
 | ||||
| | Formatter | Representation | | ||||
| |-----------|----------------| | ||||
| | `%O`      | Pretty-print an Object on multiple lines. | | ||||
| | `%o`      | Pretty-print an Object all on a single line. | | ||||
| | `%s`      | String. | | ||||
| | `%d`      | Number (both integer and float). | | ||||
| | `%j`      | JSON. Replaced with the string '[Circular]' if the argument contains circular references. | | ||||
| | `%%`      | Single percent sign ('%'). This does not consume an argument. | | ||||
| 
 | ||||
| ### Custom formatters | ||||
| 
 | ||||
|   You can add custom formatters by extending the `debug.formatters` object. For example, if you wanted to add support for rendering a Buffer as hex with `%h`, you could do something like: | ||||
| 
 | ||||
| ```js | ||||
| const createDebug = require('debug') | ||||
| createDebug.formatters.h = (v) => { | ||||
|   return v.toString('hex') | ||||
| } | ||||
| 
 | ||||
| // …elsewhere | ||||
| const debug = createDebug('foo') | ||||
| debug('this is hex: %h', new Buffer('hello world')) | ||||
| //   foo this is hex: 68656c6c6f20776f726c6421 +0ms | ||||
| ``` | ||||
| 
 | ||||
| ## Browser support | ||||
|   You can build a browser-ready script using [browserify](https://github.com/substack/node-browserify), | ||||
|   or just use the [browserify-as-a-service](https://wzrd.in/) [build](https://wzrd.in/standalone/debug@latest), | ||||
|   if you don't want to build it yourself. | ||||
| 
 | ||||
|   Debug's enable state is currently persisted by `localStorage`. | ||||
|   Consider the situation shown below where you have `worker:a` and `worker:b`, | ||||
|   and wish to debug both. You can enable this using `localStorage.debug`: | ||||
| 
 | ||||
| ```js | ||||
| localStorage.debug = 'worker:*' | ||||
| ``` | ||||
| 
 | ||||
| And then refresh the page. | ||||
| 
 | ||||
| ```js | ||||
| a = debug('worker:a'); | ||||
| b = debug('worker:b'); | ||||
| 
 | ||||
| setInterval(function(){ | ||||
|   a('doing some work'); | ||||
| }, 1000); | ||||
| 
 | ||||
| setInterval(function(){ | ||||
|   b('doing some work'); | ||||
| }, 1200); | ||||
| ``` | ||||
| 
 | ||||
| #### Web Inspector Colors | ||||
| 
 | ||||
|   Colors are also enabled on "Web Inspectors" that understand the `%c` formatting | ||||
|   option. These are WebKit web inspectors, Firefox ([since version | ||||
|   31](https://hacks.mozilla.org/2014/05/editable-box-model-multiple-selection-sublime-text-keys-much-more-firefox-developer-tools-episode-31/)) | ||||
|   and the Firebug plugin for Firefox (any version). | ||||
| 
 | ||||
|   Colored output looks something like: | ||||
| 
 | ||||
|    | ||||
| 
 | ||||
| 
 | ||||
| ## Output streams | ||||
| 
 | ||||
|   By default `debug` will log to stderr, however this can be configured per-namespace by overriding the `log` method: | ||||
| 
 | ||||
| Example _stdout.js_: | ||||
| 
 | ||||
| ```js | ||||
| var debug = require('debug'); | ||||
| var error = debug('app:error'); | ||||
| 
 | ||||
| // by default stderr is used | ||||
| error('goes to stderr!'); | ||||
| 
 | ||||
| var log = debug('app:log'); | ||||
| // set this namespace to log via console.log | ||||
| log.log = console.log.bind(console); // don't forget to bind to console! | ||||
| log('goes to stdout'); | ||||
| error('still goes to stderr!'); | ||||
| 
 | ||||
| // set all output to go via console.info | ||||
| // overrides all per-namespace log settings | ||||
| debug.log = console.info.bind(console); | ||||
| error('now goes to stdout via console.info'); | ||||
| log('still goes to stdout, but via console.info now'); | ||||
| ``` | ||||
| 
 | ||||
| 
 | ||||
| ## Authors | ||||
| 
 | ||||
|  - TJ Holowaychuk | ||||
|  - Nathan Rajlich | ||||
|  - Andrew Rhyne | ||||
|   | ||||
| ## Backers | ||||
| 
 | ||||
| Support us with a monthly donation and help us continue our activities. [[Become a backer](https://opencollective.com/debug#backer)] | ||||
| 
 | ||||
| <a href="https://opencollective.com/debug/backer/0/website" target="_blank"><img src="https://opencollective.com/debug/backer/0/avatar.svg"></a> | ||||
| <a href="https://opencollective.com/debug/backer/1/website" target="_blank"><img src="https://opencollective.com/debug/backer/1/avatar.svg"></a> | ||||
| <a href="https://opencollective.com/debug/backer/2/website" target="_blank"><img src="https://opencollective.com/debug/backer/2/avatar.svg"></a> | ||||
| <a href="https://opencollective.com/debug/backer/3/website" target="_blank"><img src="https://opencollective.com/debug/backer/3/avatar.svg"></a> | ||||
| <a href="https://opencollective.com/debug/backer/4/website" target="_blank"><img src="https://opencollective.com/debug/backer/4/avatar.svg"></a> | ||||
| <a href="https://opencollective.com/debug/backer/5/website" target="_blank"><img src="https://opencollective.com/debug/backer/5/avatar.svg"></a> | ||||
| <a href="https://opencollective.com/debug/backer/6/website" target="_blank"><img src="https://opencollective.com/debug/backer/6/avatar.svg"></a> | ||||
| <a href="https://opencollective.com/debug/backer/7/website" target="_blank"><img src="https://opencollective.com/debug/backer/7/avatar.svg"></a> | ||||
| <a href="https://opencollective.com/debug/backer/8/website" target="_blank"><img src="https://opencollective.com/debug/backer/8/avatar.svg"></a> | ||||
| <a href="https://opencollective.com/debug/backer/9/website" target="_blank"><img src="https://opencollective.com/debug/backer/9/avatar.svg"></a> | ||||
| <a href="https://opencollective.com/debug/backer/10/website" target="_blank"><img src="https://opencollective.com/debug/backer/10/avatar.svg"></a> | ||||
| <a href="https://opencollective.com/debug/backer/11/website" target="_blank"><img src="https://opencollective.com/debug/backer/11/avatar.svg"></a> | ||||
| <a href="https://opencollective.com/debug/backer/12/website" target="_blank"><img src="https://opencollective.com/debug/backer/12/avatar.svg"></a> | ||||
| <a href="https://opencollective.com/debug/backer/13/website" target="_blank"><img src="https://opencollective.com/debug/backer/13/avatar.svg"></a> | ||||
| <a href="https://opencollective.com/debug/backer/14/website" target="_blank"><img src="https://opencollective.com/debug/backer/14/avatar.svg"></a> | ||||
| <a href="https://opencollective.com/debug/backer/15/website" target="_blank"><img src="https://opencollective.com/debug/backer/15/avatar.svg"></a> | ||||
| <a href="https://opencollective.com/debug/backer/16/website" target="_blank"><img src="https://opencollective.com/debug/backer/16/avatar.svg"></a> | ||||
| <a href="https://opencollective.com/debug/backer/17/website" target="_blank"><img src="https://opencollective.com/debug/backer/17/avatar.svg"></a> | ||||
| <a href="https://opencollective.com/debug/backer/18/website" target="_blank"><img src="https://opencollective.com/debug/backer/18/avatar.svg"></a> | ||||
| <a href="https://opencollective.com/debug/backer/19/website" target="_blank"><img src="https://opencollective.com/debug/backer/19/avatar.svg"></a> | ||||
| <a href="https://opencollective.com/debug/backer/20/website" target="_blank"><img src="https://opencollective.com/debug/backer/20/avatar.svg"></a> | ||||
| <a href="https://opencollective.com/debug/backer/21/website" target="_blank"><img src="https://opencollective.com/debug/backer/21/avatar.svg"></a> | ||||
| <a href="https://opencollective.com/debug/backer/22/website" target="_blank"><img src="https://opencollective.com/debug/backer/22/avatar.svg"></a> | ||||
| <a href="https://opencollective.com/debug/backer/23/website" target="_blank"><img src="https://opencollective.com/debug/backer/23/avatar.svg"></a> | ||||
| <a href="https://opencollective.com/debug/backer/24/website" target="_blank"><img src="https://opencollective.com/debug/backer/24/avatar.svg"></a> | ||||
| <a href="https://opencollective.com/debug/backer/25/website" target="_blank"><img src="https://opencollective.com/debug/backer/25/avatar.svg"></a> | ||||
| <a href="https://opencollective.com/debug/backer/26/website" target="_blank"><img src="https://opencollective.com/debug/backer/26/avatar.svg"></a> | ||||
| <a href="https://opencollective.com/debug/backer/27/website" target="_blank"><img src="https://opencollective.com/debug/backer/27/avatar.svg"></a> | ||||
| <a href="https://opencollective.com/debug/backer/28/website" target="_blank"><img src="https://opencollective.com/debug/backer/28/avatar.svg"></a> | ||||
| <a href="https://opencollective.com/debug/backer/29/website" target="_blank"><img src="https://opencollective.com/debug/backer/29/avatar.svg"></a> | ||||
| 
 | ||||
| 
 | ||||
| ## Sponsors | ||||
| 
 | ||||
| Become a sponsor and get your logo on our README on Github with a link to your site. [[Become a sponsor](https://opencollective.com/debug#sponsor)] | ||||
| 
 | ||||
| <a href="https://opencollective.com/debug/sponsor/0/website" target="_blank"><img src="https://opencollective.com/debug/sponsor/0/avatar.svg"></a> | ||||
| <a href="https://opencollective.com/debug/sponsor/1/website" target="_blank"><img src="https://opencollective.com/debug/sponsor/1/avatar.svg"></a> | ||||
| <a href="https://opencollective.com/debug/sponsor/2/website" target="_blank"><img src="https://opencollective.com/debug/sponsor/2/avatar.svg"></a> | ||||
| <a href="https://opencollective.com/debug/sponsor/3/website" target="_blank"><img src="https://opencollective.com/debug/sponsor/3/avatar.svg"></a> | ||||
| <a href="https://opencollective.com/debug/sponsor/4/website" target="_blank"><img src="https://opencollective.com/debug/sponsor/4/avatar.svg"></a> | ||||
| <a href="https://opencollective.com/debug/sponsor/5/website" target="_blank"><img src="https://opencollective.com/debug/sponsor/5/avatar.svg"></a> | ||||
| <a href="https://opencollective.com/debug/sponsor/6/website" target="_blank"><img src="https://opencollective.com/debug/sponsor/6/avatar.svg"></a> | ||||
| <a href="https://opencollective.com/debug/sponsor/7/website" target="_blank"><img src="https://opencollective.com/debug/sponsor/7/avatar.svg"></a> | ||||
| <a href="https://opencollective.com/debug/sponsor/8/website" target="_blank"><img src="https://opencollective.com/debug/sponsor/8/avatar.svg"></a> | ||||
| <a href="https://opencollective.com/debug/sponsor/9/website" target="_blank"><img src="https://opencollective.com/debug/sponsor/9/avatar.svg"></a> | ||||
| <a href="https://opencollective.com/debug/sponsor/10/website" target="_blank"><img src="https://opencollective.com/debug/sponsor/10/avatar.svg"></a> | ||||
| <a href="https://opencollective.com/debug/sponsor/11/website" target="_blank"><img src="https://opencollective.com/debug/sponsor/11/avatar.svg"></a> | ||||
| <a href="https://opencollective.com/debug/sponsor/12/website" target="_blank"><img src="https://opencollective.com/debug/sponsor/12/avatar.svg"></a> | ||||
| <a href="https://opencollective.com/debug/sponsor/13/website" target="_blank"><img src="https://opencollective.com/debug/sponsor/13/avatar.svg"></a> | ||||
| <a href="https://opencollective.com/debug/sponsor/14/website" target="_blank"><img src="https://opencollective.com/debug/sponsor/14/avatar.svg"></a> | ||||
| <a href="https://opencollective.com/debug/sponsor/15/website" target="_blank"><img src="https://opencollective.com/debug/sponsor/15/avatar.svg"></a> | ||||
| <a href="https://opencollective.com/debug/sponsor/16/website" target="_blank"><img src="https://opencollective.com/debug/sponsor/16/avatar.svg"></a> | ||||
| <a href="https://opencollective.com/debug/sponsor/17/website" target="_blank"><img src="https://opencollective.com/debug/sponsor/17/avatar.svg"></a> | ||||
| <a href="https://opencollective.com/debug/sponsor/18/website" target="_blank"><img src="https://opencollective.com/debug/sponsor/18/avatar.svg"></a> | ||||
| <a href="https://opencollective.com/debug/sponsor/19/website" target="_blank"><img src="https://opencollective.com/debug/sponsor/19/avatar.svg"></a> | ||||
| <a href="https://opencollective.com/debug/sponsor/20/website" target="_blank"><img src="https://opencollective.com/debug/sponsor/20/avatar.svg"></a> | ||||
| <a href="https://opencollective.com/debug/sponsor/21/website" target="_blank"><img src="https://opencollective.com/debug/sponsor/21/avatar.svg"></a> | ||||
| <a href="https://opencollective.com/debug/sponsor/22/website" target="_blank"><img src="https://opencollective.com/debug/sponsor/22/avatar.svg"></a> | ||||
| <a href="https://opencollective.com/debug/sponsor/23/website" target="_blank"><img src="https://opencollective.com/debug/sponsor/23/avatar.svg"></a> | ||||
| <a href="https://opencollective.com/debug/sponsor/24/website" target="_blank"><img src="https://opencollective.com/debug/sponsor/24/avatar.svg"></a> | ||||
| <a href="https://opencollective.com/debug/sponsor/25/website" target="_blank"><img src="https://opencollective.com/debug/sponsor/25/avatar.svg"></a> | ||||
| <a href="https://opencollective.com/debug/sponsor/26/website" target="_blank"><img src="https://opencollective.com/debug/sponsor/26/avatar.svg"></a> | ||||
| <a href="https://opencollective.com/debug/sponsor/27/website" target="_blank"><img src="https://opencollective.com/debug/sponsor/27/avatar.svg"></a> | ||||
| <a href="https://opencollective.com/debug/sponsor/28/website" target="_blank"><img src="https://opencollective.com/debug/sponsor/28/avatar.svg"></a> | ||||
| <a href="https://opencollective.com/debug/sponsor/29/website" target="_blank"><img src="https://opencollective.com/debug/sponsor/29/avatar.svg"></a> | ||||
| 
 | ||||
| ## License | ||||
| 
 | ||||
| (The MIT License) | ||||
| 
 | ||||
| Copyright (c) 2014-2016 TJ Holowaychuk <tj@vision-media.ca> | ||||
| 
 | ||||
| Permission is hereby granted, free of charge, to any person obtaining | ||||
| a copy of this software and associated documentation files (the | ||||
| 'Software'), to deal in the Software without restriction, including | ||||
| without limitation the rights to use, copy, modify, merge, publish, | ||||
| distribute, sublicense, and/or sell copies of the Software, and to | ||||
| permit persons to whom the Software is furnished to do so, subject to | ||||
| the following conditions: | ||||
| 
 | ||||
| The above copyright notice and this permission notice shall be | ||||
| included in all copies or substantial portions of the Software. | ||||
| 
 | ||||
| THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, | ||||
| EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF | ||||
| MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. | ||||
| IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY | ||||
| CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, | ||||
| TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE | ||||
| SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. | ||||
							
								
								
									
										19
									
								
								node_modules/finalhandler/node_modules/debug/component.json
									
										
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								node_modules/finalhandler/node_modules/debug/component.json
									
										
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							|  | @ -0,0 +1,19 @@ | |||
| { | ||||
|   "name": "debug", | ||||
|   "repo": "visionmedia/debug", | ||||
|   "description": "small debugging utility", | ||||
|   "version": "2.6.9", | ||||
|   "keywords": [ | ||||
|     "debug", | ||||
|     "log", | ||||
|     "debugger" | ||||
|   ], | ||||
|   "main": "src/browser.js", | ||||
|   "scripts": [ | ||||
|     "src/browser.js", | ||||
|     "src/debug.js" | ||||
|   ], | ||||
|   "dependencies": { | ||||
|     "rauchg/ms.js": "0.7.1" | ||||
|   } | ||||
| } | ||||
							
								
								
									
										70
									
								
								node_modules/finalhandler/node_modules/debug/karma.conf.js
									
										
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										70
									
								
								node_modules/finalhandler/node_modules/debug/karma.conf.js
									
										
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							|  | @ -0,0 +1,70 @@ | |||
| // Karma configuration
 | ||||
| // Generated on Fri Dec 16 2016 13:09:51 GMT+0000 (UTC)
 | ||||
| 
 | ||||
| module.exports = function(config) { | ||||
|   config.set({ | ||||
| 
 | ||||
|     // base path that will be used to resolve all patterns (eg. files, exclude)
 | ||||
|     basePath: '', | ||||
| 
 | ||||
| 
 | ||||
|     // frameworks to use
 | ||||
|     // available frameworks: https://npmjs.org/browse/keyword/karma-adapter
 | ||||
|     frameworks: ['mocha', 'chai', 'sinon'], | ||||
| 
 | ||||
| 
 | ||||
|     // list of files / patterns to load in the browser
 | ||||
|     files: [ | ||||
|       'dist/debug.js', | ||||
|       'test/*spec.js' | ||||
|     ], | ||||
| 
 | ||||
| 
 | ||||
|     // list of files to exclude
 | ||||
|     exclude: [ | ||||
|       'src/node.js' | ||||
|     ], | ||||
| 
 | ||||
| 
 | ||||
|     // preprocess matching files before serving them to the browser
 | ||||
|     // available preprocessors: https://npmjs.org/browse/keyword/karma-preprocessor
 | ||||
|     preprocessors: { | ||||
|     }, | ||||
| 
 | ||||
|     // test results reporter to use
 | ||||
|     // possible values: 'dots', 'progress'
 | ||||
|     // available reporters: https://npmjs.org/browse/keyword/karma-reporter
 | ||||
|     reporters: ['progress'], | ||||
| 
 | ||||
| 
 | ||||
|     // web server port
 | ||||
|     port: 9876, | ||||
| 
 | ||||
| 
 | ||||
|     // enable / disable colors in the output (reporters and logs)
 | ||||
|     colors: true, | ||||
| 
 | ||||
| 
 | ||||
|     // level of logging
 | ||||
|     // possible values: config.LOG_DISABLE || config.LOG_ERROR || config.LOG_WARN || config.LOG_INFO || config.LOG_DEBUG
 | ||||
|     logLevel: config.LOG_INFO, | ||||
| 
 | ||||
| 
 | ||||
|     // enable / disable watching file and executing tests whenever any file changes
 | ||||
|     autoWatch: true, | ||||
| 
 | ||||
| 
 | ||||
|     // start these browsers
 | ||||
|     // available browser launchers: https://npmjs.org/browse/keyword/karma-launcher
 | ||||
|     browsers: ['PhantomJS'], | ||||
| 
 | ||||
| 
 | ||||
|     // Continuous Integration mode
 | ||||
|     // if true, Karma captures browsers, runs the tests and exits
 | ||||
|     singleRun: false, | ||||
| 
 | ||||
|     // Concurrency level
 | ||||
|     // how many browser should be started simultaneous
 | ||||
|     concurrency: Infinity | ||||
|   }) | ||||
| } | ||||
							
								
								
									
										1
									
								
								node_modules/finalhandler/node_modules/debug/node.js
									
										
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								node_modules/finalhandler/node_modules/debug/node.js
									
										
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							|  | @ -0,0 +1 @@ | |||
| module.exports = require('./src/node'); | ||||
							
								
								
									
										49
									
								
								node_modules/finalhandler/node_modules/debug/package.json
									
										
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										49
									
								
								node_modules/finalhandler/node_modules/debug/package.json
									
										
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							|  | @ -0,0 +1,49 @@ | |||
| { | ||||
|   "name": "debug", | ||||
|   "version": "2.6.9", | ||||
|   "repository": { | ||||
|     "type": "git", | ||||
|     "url": "git://github.com/visionmedia/debug.git" | ||||
|   }, | ||||
|   "description": "small debugging utility", | ||||
|   "keywords": [ | ||||
|     "debug", | ||||
|     "log", | ||||
|     "debugger" | ||||
|   ], | ||||
|   "author": "TJ Holowaychuk <tj@vision-media.ca>", | ||||
|   "contributors": [ | ||||
|     "Nathan Rajlich <nathan@tootallnate.net> (http://n8.io)", | ||||
|     "Andrew Rhyne <rhyneandrew@gmail.com>" | ||||
|   ], | ||||
|   "license": "MIT", | ||||
|   "dependencies": { | ||||
|     "ms": "2.0.0" | ||||
|   }, | ||||
|   "devDependencies": { | ||||
|     "browserify": "9.0.3", | ||||
|     "chai": "^3.5.0", | ||||
|     "concurrently": "^3.1.0", | ||||
|     "coveralls": "^2.11.15", | ||||
|     "eslint": "^3.12.1", | ||||
|     "istanbul": "^0.4.5", | ||||
|     "karma": "^1.3.0", | ||||
|     "karma-chai": "^0.1.0", | ||||
|     "karma-mocha": "^1.3.0", | ||||
|     "karma-phantomjs-launcher": "^1.0.2", | ||||
|     "karma-sinon": "^1.0.5", | ||||
|     "mocha": "^3.2.0", | ||||
|     "mocha-lcov-reporter": "^1.2.0", | ||||
|     "rimraf": "^2.5.4", | ||||
|     "sinon": "^1.17.6", | ||||
|     "sinon-chai": "^2.8.0" | ||||
|   }, | ||||
|   "main": "./src/index.js", | ||||
|   "browser": "./src/browser.js", | ||||
|   "component": { | ||||
|     "scripts": { | ||||
|       "debug/index.js": "browser.js", | ||||
|       "debug/debug.js": "debug.js" | ||||
|     } | ||||
|   } | ||||
| } | ||||
							
								
								
									
										185
									
								
								node_modules/finalhandler/node_modules/debug/src/browser.js
									
										
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										185
									
								
								node_modules/finalhandler/node_modules/debug/src/browser.js
									
										
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							|  | @ -0,0 +1,185 @@ | |||
| /** | ||||
|  * This is the web browser implementation of `debug()`. | ||||
|  * | ||||
|  * Expose `debug()` as the module. | ||||
|  */ | ||||
| 
 | ||||
| exports = module.exports = require('./debug'); | ||||
| exports.log = log; | ||||
| exports.formatArgs = formatArgs; | ||||
| exports.save = save; | ||||
| exports.load = load; | ||||
| exports.useColors = useColors; | ||||
| exports.storage = 'undefined' != typeof chrome | ||||
|                && 'undefined' != typeof chrome.storage | ||||
|                   ? chrome.storage.local | ||||
|                   : localstorage(); | ||||
| 
 | ||||
| /** | ||||
|  * Colors. | ||||
|  */ | ||||
| 
 | ||||
| exports.colors = [ | ||||
|   'lightseagreen', | ||||
|   'forestgreen', | ||||
|   'goldenrod', | ||||
|   'dodgerblue', | ||||
|   'darkorchid', | ||||
|   'crimson' | ||||
| ]; | ||||
| 
 | ||||
| /** | ||||
|  * Currently only WebKit-based Web Inspectors, Firefox >= v31, | ||||
|  * and the Firebug extension (any Firefox version) are known | ||||
|  * to support "%c" CSS customizations. | ||||
|  * | ||||
|  * TODO: add a `localStorage` variable to explicitly enable/disable colors | ||||
|  */ | ||||
| 
 | ||||
| function useColors() { | ||||
|   // NB: In an Electron preload script, document will be defined but not fully
 | ||||
|   // initialized. Since we know we're in Chrome, we'll just detect this case
 | ||||
|   // explicitly
 | ||||
|   if (typeof window !== 'undefined' && window.process && window.process.type === 'renderer') { | ||||
|     return true; | ||||
|   } | ||||
| 
 | ||||
|   // is webkit? http://stackoverflow.com/a/16459606/376773
 | ||||
|   // document is undefined in react-native: https://github.com/facebook/react-native/pull/1632
 | ||||
|   return (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) || | ||||
|     // is firebug? http://stackoverflow.com/a/398120/376773
 | ||||
|     (typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) || | ||||
|     // is firefox >= v31?
 | ||||
|     // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages
 | ||||
|     (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/) && parseInt(RegExp.$1, 10) >= 31) || | ||||
|     // double check webkit in userAgent just in case we are in a worker
 | ||||
|     (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)); | ||||
| } | ||||
| 
 | ||||
| /** | ||||
|  * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default. | ||||
|  */ | ||||
| 
 | ||||
| exports.formatters.j = function(v) { | ||||
|   try { | ||||
|     return JSON.stringify(v); | ||||
|   } catch (err) { | ||||
|     return '[UnexpectedJSONParseError]: ' + err.message; | ||||
|   } | ||||
| }; | ||||
| 
 | ||||
| 
 | ||||
| /** | ||||
|  * Colorize log arguments if enabled. | ||||
|  * | ||||
|  * @api public | ||||
|  */ | ||||
| 
 | ||||
| function formatArgs(args) { | ||||
|   var useColors = this.useColors; | ||||
| 
 | ||||
|   args[0] = (useColors ? '%c' : '') | ||||
|     + this.namespace | ||||
|     + (useColors ? ' %c' : ' ') | ||||
|     + args[0] | ||||
|     + (useColors ? '%c ' : ' ') | ||||
|     + '+' + exports.humanize(this.diff); | ||||
| 
 | ||||
|   if (!useColors) return; | ||||
| 
 | ||||
|   var c = 'color: ' + this.color; | ||||
|   args.splice(1, 0, c, 'color: inherit') | ||||
| 
 | ||||
|   // the final "%c" is somewhat tricky, because there could be other
 | ||||
|   // arguments passed either before or after the %c, so we need to
 | ||||
|   // figure out the correct index to insert the CSS into
 | ||||
|   var index = 0; | ||||
|   var lastC = 0; | ||||
|   args[0].replace(/%[a-zA-Z%]/g, function(match) { | ||||
|     if ('%%' === match) return; | ||||
|     index++; | ||||
|     if ('%c' === match) { | ||||
|       // we only are interested in the *last* %c
 | ||||
|       // (the user may have provided their own)
 | ||||
|       lastC = index; | ||||
|     } | ||||
|   }); | ||||
| 
 | ||||
|   args.splice(lastC, 0, c); | ||||
| } | ||||
| 
 | ||||
| /** | ||||
|  * Invokes `console.log()` when available. | ||||
|  * No-op when `console.log` is not a "function". | ||||
|  * | ||||
|  * @api public | ||||
|  */ | ||||
| 
 | ||||
| function log() { | ||||
|   // this hackery is required for IE8/9, where
 | ||||
|   // the `console.log` function doesn't have 'apply'
 | ||||
|   return 'object' === typeof console | ||||
|     && console.log | ||||
|     && Function.prototype.apply.call(console.log, console, arguments); | ||||
| } | ||||
| 
 | ||||
| /** | ||||
|  * Save `namespaces`. | ||||
|  * | ||||
|  * @param {String} namespaces | ||||
|  * @api private | ||||
|  */ | ||||
| 
 | ||||
| function save(namespaces) { | ||||
|   try { | ||||
|     if (null == namespaces) { | ||||
|       exports.storage.removeItem('debug'); | ||||
|     } else { | ||||
|       exports.storage.debug = namespaces; | ||||
|     } | ||||
|   } catch(e) {} | ||||
| } | ||||
| 
 | ||||
| /** | ||||
|  * Load `namespaces`. | ||||
|  * | ||||
|  * @return {String} returns the previously persisted debug modes | ||||
|  * @api private | ||||
|  */ | ||||
| 
 | ||||
| function load() { | ||||
|   var r; | ||||
|   try { | ||||
|     r = exports.storage.debug; | ||||
|   } catch(e) {} | ||||
| 
 | ||||
|   // If debug isn't set in LS, and we're in Electron, try to load $DEBUG
 | ||||
|   if (!r && typeof process !== 'undefined' && 'env' in process) { | ||||
|     r = process.env.DEBUG; | ||||
|   } | ||||
| 
 | ||||
|   return r; | ||||
| } | ||||
| 
 | ||||
| /** | ||||
|  * Enable namespaces listed in `localStorage.debug` initially. | ||||
|  */ | ||||
| 
 | ||||
| exports.enable(load()); | ||||
| 
 | ||||
| /** | ||||
|  * Localstorage attempts to return the localstorage. | ||||
|  * | ||||
|  * This is necessary because safari throws | ||||
|  * when a user disables cookies/localstorage | ||||
|  * and you attempt to access it. | ||||
|  * | ||||
|  * @return {LocalStorage} | ||||
|  * @api private | ||||
|  */ | ||||
| 
 | ||||
| function localstorage() { | ||||
|   try { | ||||
|     return window.localStorage; | ||||
|   } catch (e) {} | ||||
| } | ||||
							
								
								
									
										202
									
								
								node_modules/finalhandler/node_modules/debug/src/debug.js
									
										
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										202
									
								
								node_modules/finalhandler/node_modules/debug/src/debug.js
									
										
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							|  | @ -0,0 +1,202 @@ | |||
| 
 | ||||
| /** | ||||
|  * This is the common logic for both the Node.js and web browser | ||||
|  * implementations of `debug()`. | ||||
|  * | ||||
|  * Expose `debug()` as the module. | ||||
|  */ | ||||
| 
 | ||||
| exports = module.exports = createDebug.debug = createDebug['default'] = createDebug; | ||||
| exports.coerce = coerce; | ||||
| exports.disable = disable; | ||||
| exports.enable = enable; | ||||
| exports.enabled = enabled; | ||||
| exports.humanize = require('ms'); | ||||
| 
 | ||||
| /** | ||||
|  * The currently active debug mode names, and names to skip. | ||||
|  */ | ||||
| 
 | ||||
| exports.names = []; | ||||
| exports.skips = []; | ||||
| 
 | ||||
| /** | ||||
|  * Map of special "%n" handling functions, for the debug "format" argument. | ||||
|  * | ||||
|  * Valid key names are a single, lower or upper-case letter, i.e. "n" and "N". | ||||
|  */ | ||||
| 
 | ||||
| exports.formatters = {}; | ||||
| 
 | ||||
| /** | ||||
|  * Previous log timestamp. | ||||
|  */ | ||||
| 
 | ||||
| var prevTime; | ||||
| 
 | ||||
| /** | ||||
|  * Select a color. | ||||
|  * @param {String} namespace | ||||
|  * @return {Number} | ||||
|  * @api private | ||||
|  */ | ||||
| 
 | ||||
| function selectColor(namespace) { | ||||
|   var hash = 0, i; | ||||
| 
 | ||||
|   for (i in namespace) { | ||||
|     hash  = ((hash << 5) - hash) + namespace.charCodeAt(i); | ||||
|     hash |= 0; // Convert to 32bit integer
 | ||||
|   } | ||||
| 
 | ||||
|   return exports.colors[Math.abs(hash) % exports.colors.length]; | ||||
| } | ||||
| 
 | ||||
| /** | ||||
|  * Create a debugger with the given `namespace`. | ||||
|  * | ||||
|  * @param {String} namespace | ||||
|  * @return {Function} | ||||
|  * @api public | ||||
|  */ | ||||
| 
 | ||||
| function createDebug(namespace) { | ||||
| 
 | ||||
|   function debug() { | ||||
|     // disabled?
 | ||||
|     if (!debug.enabled) return; | ||||
| 
 | ||||
|     var self = debug; | ||||
| 
 | ||||
|     // set `diff` timestamp
 | ||||
|     var curr = +new Date(); | ||||
|     var ms = curr - (prevTime || curr); | ||||
|     self.diff = ms; | ||||
|     self.prev = prevTime; | ||||
|     self.curr = curr; | ||||
|     prevTime = curr; | ||||
| 
 | ||||
|     // turn the `arguments` into a proper Array
 | ||||
|     var args = new Array(arguments.length); | ||||
|     for (var i = 0; i < args.length; i++) { | ||||
|       args[i] = arguments[i]; | ||||
|     } | ||||
| 
 | ||||
|     args[0] = exports.coerce(args[0]); | ||||
| 
 | ||||
|     if ('string' !== typeof args[0]) { | ||||
|       // anything else let's inspect with %O
 | ||||
|       args.unshift('%O'); | ||||
|     } | ||||
| 
 | ||||
|     // apply any `formatters` transformations
 | ||||
|     var index = 0; | ||||
|     args[0] = args[0].replace(/%([a-zA-Z%])/g, function(match, format) { | ||||
|       // if we encounter an escaped % then don't increase the array index
 | ||||
|       if (match === '%%') return match; | ||||
|       index++; | ||||
|       var formatter = exports.formatters[format]; | ||||
|       if ('function' === typeof formatter) { | ||||
|         var val = args[index]; | ||||
|         match = formatter.call(self, val); | ||||
| 
 | ||||
|         // now we need to remove `args[index]` since it's inlined in the `format`
 | ||||
|         args.splice(index, 1); | ||||
|         index--; | ||||
|       } | ||||
|       return match; | ||||
|     }); | ||||
| 
 | ||||
|     // apply env-specific formatting (colors, etc.)
 | ||||
|     exports.formatArgs.call(self, args); | ||||
| 
 | ||||
|     var logFn = debug.log || exports.log || console.log.bind(console); | ||||
|     logFn.apply(self, args); | ||||
|   } | ||||
| 
 | ||||
|   debug.namespace = namespace; | ||||
|   debug.enabled = exports.enabled(namespace); | ||||
|   debug.useColors = exports.useColors(); | ||||
|   debug.color = selectColor(namespace); | ||||
| 
 | ||||
|   // env-specific initialization logic for debug instances
 | ||||
|   if ('function' === typeof exports.init) { | ||||
|     exports.init(debug); | ||||
|   } | ||||
| 
 | ||||
|   return debug; | ||||
| } | ||||
| 
 | ||||
| /** | ||||
|  * Enables a debug mode by namespaces. This can include modes | ||||
|  * separated by a colon and wildcards. | ||||
|  * | ||||
|  * @param {String} namespaces | ||||
|  * @api public | ||||
|  */ | ||||
| 
 | ||||
| function enable(namespaces) { | ||||
|   exports.save(namespaces); | ||||
| 
 | ||||
|   exports.names = []; | ||||
|   exports.skips = []; | ||||
| 
 | ||||
|   var split = (typeof namespaces === 'string' ? namespaces : '').split(/[\s,]+/); | ||||
|   var len = split.length; | ||||
| 
 | ||||
|   for (var i = 0; i < len; i++) { | ||||
|     if (!split[i]) continue; // ignore empty strings
 | ||||
|     namespaces = split[i].replace(/\*/g, '.*?'); | ||||
|     if (namespaces[0] === '-') { | ||||
|       exports.skips.push(new RegExp('^' + namespaces.substr(1) + '$')); | ||||
|     } else { | ||||
|       exports.names.push(new RegExp('^' + namespaces + '$')); | ||||
|     } | ||||
|   } | ||||
| } | ||||
| 
 | ||||
| /** | ||||
|  * Disable debug output. | ||||
|  * | ||||
|  * @api public | ||||
|  */ | ||||
| 
 | ||||
| function disable() { | ||||
|   exports.enable(''); | ||||
| } | ||||
| 
 | ||||
| /** | ||||
|  * Returns true if the given mode name is enabled, false otherwise. | ||||
|  * | ||||
|  * @param {String} name | ||||
|  * @return {Boolean} | ||||
|  * @api public | ||||
|  */ | ||||
| 
 | ||||
| function enabled(name) { | ||||
|   var i, len; | ||||
|   for (i = 0, len = exports.skips.length; i < len; i++) { | ||||
|     if (exports.skips[i].test(name)) { | ||||
|       return false; | ||||
|     } | ||||
|   } | ||||
|   for (i = 0, len = exports.names.length; i < len; i++) { | ||||
|     if (exports.names[i].test(name)) { | ||||
|       return true; | ||||
|     } | ||||
|   } | ||||
|   return false; | ||||
| } | ||||
| 
 | ||||
| /** | ||||
|  * Coerce `val`. | ||||
|  * | ||||
|  * @param {Mixed} val | ||||
|  * @return {Mixed} | ||||
|  * @api private | ||||
|  */ | ||||
| 
 | ||||
| function coerce(val) { | ||||
|   if (val instanceof Error) return val.stack || val.message; | ||||
|   return val; | ||||
| } | ||||
							
								
								
									
										10
									
								
								node_modules/finalhandler/node_modules/debug/src/index.js
									
										
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								node_modules/finalhandler/node_modules/debug/src/index.js
									
										
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							|  | @ -0,0 +1,10 @@ | |||
| /** | ||||
|  * Detect Electron renderer process, which is node, but we should | ||||
|  * treat as a browser. | ||||
|  */ | ||||
| 
 | ||||
| if (typeof process !== 'undefined' && process.type === 'renderer') { | ||||
|   module.exports = require('./browser.js'); | ||||
| } else { | ||||
|   module.exports = require('./node.js'); | ||||
| } | ||||
							
								
								
									
										15
									
								
								node_modules/finalhandler/node_modules/debug/src/inspector-log.js
									
										
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								node_modules/finalhandler/node_modules/debug/src/inspector-log.js
									
										
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							|  | @ -0,0 +1,15 @@ | |||
| module.exports = inspectorLog; | ||||
| 
 | ||||
| // black hole
 | ||||
| const nullStream = new (require('stream').Writable)(); | ||||
| nullStream._write = () => {}; | ||||
| 
 | ||||
| /** | ||||
|  * Outputs a `console.log()` to the Node.js Inspector console *only*. | ||||
|  */ | ||||
| function inspectorLog() { | ||||
|   const stdout = console._stdout; | ||||
|   console._stdout = nullStream; | ||||
|   console.log.apply(console, arguments); | ||||
|   console._stdout = stdout; | ||||
| } | ||||
							
								
								
									
										248
									
								
								node_modules/finalhandler/node_modules/debug/src/node.js
									
										
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										248
									
								
								node_modules/finalhandler/node_modules/debug/src/node.js
									
										
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							|  | @ -0,0 +1,248 @@ | |||
| /** | ||||
|  * Module dependencies. | ||||
|  */ | ||||
| 
 | ||||
| var tty = require('tty'); | ||||
| var util = require('util'); | ||||
| 
 | ||||
| /** | ||||
|  * This is the Node.js implementation of `debug()`. | ||||
|  * | ||||
|  * Expose `debug()` as the module. | ||||
|  */ | ||||
| 
 | ||||
| exports = module.exports = require('./debug'); | ||||
| exports.init = init; | ||||
| exports.log = log; | ||||
| exports.formatArgs = formatArgs; | ||||
| exports.save = save; | ||||
| exports.load = load; | ||||
| exports.useColors = useColors; | ||||
| 
 | ||||
| /** | ||||
|  * Colors. | ||||
|  */ | ||||
| 
 | ||||
| exports.colors = [6, 2, 3, 4, 5, 1]; | ||||
| 
 | ||||
| /** | ||||
|  * Build up the default `inspectOpts` object from the environment variables. | ||||
|  * | ||||
|  *   $ DEBUG_COLORS=no DEBUG_DEPTH=10 DEBUG_SHOW_HIDDEN=enabled node script.js | ||||
|  */ | ||||
| 
 | ||||
| exports.inspectOpts = Object.keys(process.env).filter(function (key) { | ||||
|   return /^debug_/i.test(key); | ||||
| }).reduce(function (obj, key) { | ||||
|   // camel-case
 | ||||
|   var prop = key | ||||
|     .substring(6) | ||||
|     .toLowerCase() | ||||
|     .replace(/_([a-z])/g, function (_, k) { return k.toUpperCase() }); | ||||
| 
 | ||||
|   // coerce string value into JS value
 | ||||
|   var val = process.env[key]; | ||||
|   if (/^(yes|on|true|enabled)$/i.test(val)) val = true; | ||||
|   else if (/^(no|off|false|disabled)$/i.test(val)) val = false; | ||||
|   else if (val === 'null') val = null; | ||||
|   else val = Number(val); | ||||
| 
 | ||||
|   obj[prop] = val; | ||||
|   return obj; | ||||
| }, {}); | ||||
| 
 | ||||
| /** | ||||
|  * The file descriptor to write the `debug()` calls to. | ||||
|  * Set the `DEBUG_FD` env variable to override with another value. i.e.: | ||||
|  * | ||||
|  *   $ DEBUG_FD=3 node script.js 3>debug.log | ||||
|  */ | ||||
| 
 | ||||
| var fd = parseInt(process.env.DEBUG_FD, 10) || 2; | ||||
| 
 | ||||
| if (1 !== fd && 2 !== fd) { | ||||
|   util.deprecate(function(){}, 'except for stderr(2) and stdout(1), any other usage of DEBUG_FD is deprecated. Override debug.log if you want to use a different log function (https://git.io/debug_fd)')() | ||||
| } | ||||
| 
 | ||||
| var stream = 1 === fd ? process.stdout : | ||||
|              2 === fd ? process.stderr : | ||||
|              createWritableStdioStream(fd); | ||||
| 
 | ||||
| /** | ||||
|  * Is stdout a TTY? Colored output is enabled when `true`. | ||||
|  */ | ||||
| 
 | ||||
| function useColors() { | ||||
|   return 'colors' in exports.inspectOpts | ||||
|     ? Boolean(exports.inspectOpts.colors) | ||||
|     : tty.isatty(fd); | ||||
| } | ||||
| 
 | ||||
| /** | ||||
|  * Map %o to `util.inspect()`, all on a single line. | ||||
|  */ | ||||
| 
 | ||||
| exports.formatters.o = function(v) { | ||||
|   this.inspectOpts.colors = this.useColors; | ||||
|   return util.inspect(v, this.inspectOpts) | ||||
|     .split('\n').map(function(str) { | ||||
|       return str.trim() | ||||
|     }).join(' '); | ||||
| }; | ||||
| 
 | ||||
| /** | ||||
|  * Map %o to `util.inspect()`, allowing multiple lines if needed. | ||||
|  */ | ||||
| 
 | ||||
| exports.formatters.O = function(v) { | ||||
|   this.inspectOpts.colors = this.useColors; | ||||
|   return util.inspect(v, this.inspectOpts); | ||||
| }; | ||||
| 
 | ||||
| /** | ||||
|  * Adds ANSI color escape codes if enabled. | ||||
|  * | ||||
|  * @api public | ||||
|  */ | ||||
| 
 | ||||
| function formatArgs(args) { | ||||
|   var name = this.namespace; | ||||
|   var useColors = this.useColors; | ||||
| 
 | ||||
|   if (useColors) { | ||||
|     var c = this.color; | ||||
|     var prefix = '  \u001b[3' + c + ';1m' + name + ' ' + '\u001b[0m'; | ||||
| 
 | ||||
|     args[0] = prefix + args[0].split('\n').join('\n' + prefix); | ||||
|     args.push('\u001b[3' + c + 'm+' + exports.humanize(this.diff) + '\u001b[0m'); | ||||
|   } else { | ||||
|     args[0] = new Date().toUTCString() | ||||
|       + ' ' + name + ' ' + args[0]; | ||||
|   } | ||||
| } | ||||
| 
 | ||||
| /** | ||||
|  * Invokes `util.format()` with the specified arguments and writes to `stream`. | ||||
|  */ | ||||
| 
 | ||||
| function log() { | ||||
|   return stream.write(util.format.apply(util, arguments) + '\n'); | ||||
| } | ||||
| 
 | ||||
| /** | ||||
|  * Save `namespaces`. | ||||
|  * | ||||
|  * @param {String} namespaces | ||||
|  * @api private | ||||
|  */ | ||||
| 
 | ||||
| function save(namespaces) { | ||||
|   if (null == namespaces) { | ||||
|     // If you set a process.env field to null or undefined, it gets cast to the
 | ||||
|     // string 'null' or 'undefined'. Just delete instead.
 | ||||
|     delete process.env.DEBUG; | ||||
|   } else { | ||||
|     process.env.DEBUG = namespaces; | ||||
|   } | ||||
| } | ||||
| 
 | ||||
| /** | ||||
|  * Load `namespaces`. | ||||
|  * | ||||
|  * @return {String} returns the previously persisted debug modes | ||||
|  * @api private | ||||
|  */ | ||||
| 
 | ||||
| function load() { | ||||
|   return process.env.DEBUG; | ||||
| } | ||||
| 
 | ||||
| /** | ||||
|  * Copied from `node/src/node.js`. | ||||
|  * | ||||
|  * XXX: It's lame that node doesn't expose this API out-of-the-box. It also | ||||
|  * relies on the undocumented `tty_wrap.guessHandleType()` which is also lame. | ||||
|  */ | ||||
| 
 | ||||
| function createWritableStdioStream (fd) { | ||||
|   var stream; | ||||
|   var tty_wrap = process.binding('tty_wrap'); | ||||
| 
 | ||||
|   // Note stream._type is used for test-module-load-list.js
 | ||||
| 
 | ||||
|   switch (tty_wrap.guessHandleType(fd)) { | ||||
|     case 'TTY': | ||||
|       stream = new tty.WriteStream(fd); | ||||
|       stream._type = 'tty'; | ||||
| 
 | ||||
|       // Hack to have stream not keep the event loop alive.
 | ||||
|       // See https://github.com/joyent/node/issues/1726
 | ||||
|       if (stream._handle && stream._handle.unref) { | ||||
|         stream._handle.unref(); | ||||
|       } | ||||
|       break; | ||||
| 
 | ||||
|     case 'FILE': | ||||
|       var fs = require('fs'); | ||||
|       stream = new fs.SyncWriteStream(fd, { autoClose: false }); | ||||
|       stream._type = 'fs'; | ||||
|       break; | ||||
| 
 | ||||
|     case 'PIPE': | ||||
|     case 'TCP': | ||||
|       var net = require('net'); | ||||
|       stream = new net.Socket({ | ||||
|         fd: fd, | ||||
|         readable: false, | ||||
|         writable: true | ||||
|       }); | ||||
| 
 | ||||
|       // FIXME Should probably have an option in net.Socket to create a
 | ||||
|       // stream from an existing fd which is writable only. But for now
 | ||||
|       // we'll just add this hack and set the `readable` member to false.
 | ||||
|       // Test: ./node test/fixtures/echo.js < /etc/passwd
 | ||||
|       stream.readable = false; | ||||
|       stream.read = null; | ||||
|       stream._type = 'pipe'; | ||||
| 
 | ||||
|       // FIXME Hack to have stream not keep the event loop alive.
 | ||||
|       // See https://github.com/joyent/node/issues/1726
 | ||||
|       if (stream._handle && stream._handle.unref) { | ||||
|         stream._handle.unref(); | ||||
|       } | ||||
|       break; | ||||
| 
 | ||||
|     default: | ||||
|       // Probably an error on in uv_guess_handle()
 | ||||
|       throw new Error('Implement me. Unknown stream file type!'); | ||||
|   } | ||||
| 
 | ||||
|   // For supporting legacy API we put the FD here.
 | ||||
|   stream.fd = fd; | ||||
| 
 | ||||
|   stream._isStdio = true; | ||||
| 
 | ||||
|   return stream; | ||||
| } | ||||
| 
 | ||||
| /** | ||||
|  * Init logic for `debug` instances. | ||||
|  * | ||||
|  * Create a new `inspectOpts` object in case `useColors` is set | ||||
|  * differently for a particular `debug` instance. | ||||
|  */ | ||||
| 
 | ||||
| function init (debug) { | ||||
|   debug.inspectOpts = {}; | ||||
| 
 | ||||
|   var keys = Object.keys(exports.inspectOpts); | ||||
|   for (var i = 0; i < keys.length; i++) { | ||||
|     debug.inspectOpts[keys[i]] = exports.inspectOpts[keys[i]]; | ||||
|   } | ||||
| } | ||||
| 
 | ||||
| /** | ||||
|  * Enable namespaces listed in `process.env.DEBUG` initially. | ||||
|  */ | ||||
| 
 | ||||
| exports.enable(load()); | ||||
							
								
								
									
										152
									
								
								node_modules/finalhandler/node_modules/ms/index.js
									
										
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										152
									
								
								node_modules/finalhandler/node_modules/ms/index.js
									
										
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							|  | @ -0,0 +1,152 @@ | |||
| /** | ||||
|  * Helpers. | ||||
|  */ | ||||
| 
 | ||||
| var s = 1000; | ||||
| var m = s * 60; | ||||
| var h = m * 60; | ||||
| var d = h * 24; | ||||
| 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' && isNaN(val) === false) { | ||||
|     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|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 '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) { | ||||
|   if (ms >= d) { | ||||
|     return Math.round(ms / d) + 'd'; | ||||
|   } | ||||
|   if (ms >= h) { | ||||
|     return Math.round(ms / h) + 'h'; | ||||
|   } | ||||
|   if (ms >= m) { | ||||
|     return Math.round(ms / m) + 'm'; | ||||
|   } | ||||
|   if (ms >= s) { | ||||
|     return Math.round(ms / s) + 's'; | ||||
|   } | ||||
|   return ms + 'ms'; | ||||
| } | ||||
| 
 | ||||
| /** | ||||
|  * Long format for `ms`. | ||||
|  * | ||||
|  * @param {Number} ms | ||||
|  * @return {String} | ||||
|  * @api private | ||||
|  */ | ||||
| 
 | ||||
| function fmtLong(ms) { | ||||
|   return plural(ms, d, 'day') || | ||||
|     plural(ms, h, 'hour') || | ||||
|     plural(ms, m, 'minute') || | ||||
|     plural(ms, s, 'second') || | ||||
|     ms + ' ms'; | ||||
| } | ||||
| 
 | ||||
| /** | ||||
|  * Pluralization helper. | ||||
|  */ | ||||
| 
 | ||||
| function plural(ms, n, name) { | ||||
|   if (ms < n) { | ||||
|     return; | ||||
|   } | ||||
|   if (ms < n * 1.5) { | ||||
|     return Math.floor(ms / n) + ' ' + name; | ||||
|   } | ||||
|   return Math.ceil(ms / n) + ' ' + name + 's'; | ||||
| } | ||||
							
								
								
									
										21
									
								
								node_modules/finalhandler/node_modules/ms/license.md
									
										
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								node_modules/finalhandler/node_modules/ms/license.md
									
										
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							|  | @ -0,0 +1,21 @@ | |||
| The MIT License (MIT) | ||||
| 
 | ||||
| Copyright (c) 2016 Zeit, 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. | ||||
							
								
								
									
										37
									
								
								node_modules/finalhandler/node_modules/ms/package.json
									
										
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										37
									
								
								node_modules/finalhandler/node_modules/ms/package.json
									
										
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							|  | @ -0,0 +1,37 @@ | |||
| { | ||||
|   "name": "ms", | ||||
|   "version": "2.0.0", | ||||
|   "description": "Tiny milisecond conversion utility", | ||||
|   "repository": "zeit/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": "3.19.0", | ||||
|     "expect.js": "0.3.1", | ||||
|     "husky": "0.13.3", | ||||
|     "lint-staged": "3.4.1", | ||||
|     "mocha": "3.4.1" | ||||
|   } | ||||
| } | ||||
							
								
								
									
										51
									
								
								node_modules/finalhandler/node_modules/ms/readme.md
									
										
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										51
									
								
								node_modules/finalhandler/node_modules/ms/readme.md
									
										
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							|  | @ -0,0 +1,51 @@ | |||
| # ms | ||||
| 
 | ||||
| [](https://travis-ci.org/zeit/ms) | ||||
| [](https://zeit.chat/) | ||||
| 
 | ||||
| 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 | ||||
| ``` | ||||
| 
 | ||||
| ### Convert from milliseconds | ||||
| 
 | ||||
| ```js | ||||
| ms(60000)             // "1m" | ||||
| ms(2 * 60000)         // "2m" | ||||
| ms(ms('10 hours'))    // "10h" | ||||
| ``` | ||||
| 
 | ||||
| ### Time format written-out | ||||
| 
 | ||||
| ```js | ||||
| ms(60000, { long: true })             // "1 minute" | ||||
| ms(2 * 60000, { long: true })         // "2 minutes" | ||||
| ms(ms('10 hours'), { long: true })    // "10 hours" | ||||
| ``` | ||||
| 
 | ||||
| ## Features | ||||
| 
 | ||||
| - Works both in [node](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 ms is returned. | ||||
| 
 | ||||
| ## 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 will now use your clone of ms! | ||||
| 
 | ||||
| As always, you can run the tests using: `npm test` | ||||
							
								
								
									
										46
									
								
								node_modules/finalhandler/package.json
									
										
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										46
									
								
								node_modules/finalhandler/package.json
									
										
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							|  | @ -0,0 +1,46 @@ | |||
| { | ||||
|   "name": "finalhandler", | ||||
|   "description": "Node.js final http responder", | ||||
|   "version": "1.2.0", | ||||
|   "author": "Douglas Christopher Wilson <doug@somethingdoug.com>", | ||||
|   "license": "MIT", | ||||
|   "repository": "pillarjs/finalhandler", | ||||
|   "dependencies": { | ||||
|     "debug": "2.6.9", | ||||
|     "encodeurl": "~1.0.2", | ||||
|     "escape-html": "~1.0.3", | ||||
|     "on-finished": "2.4.1", | ||||
|     "parseurl": "~1.3.3", | ||||
|     "statuses": "2.0.1", | ||||
|     "unpipe": "~1.0.0" | ||||
|   }, | ||||
|   "devDependencies": { | ||||
|     "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", | ||||
|     "readable-stream": "2.3.6", | ||||
|     "safe-buffer": "5.2.1", | ||||
|     "supertest": "6.2.2" | ||||
|   }, | ||||
|   "files": [ | ||||
|     "LICENSE", | ||||
|     "HISTORY.md", | ||||
|     "SECURITY.md", | ||||
|     "index.js" | ||||
|   ], | ||||
|   "engines": { | ||||
|     "node": ">= 0.8" | ||||
|   }, | ||||
|   "scripts": { | ||||
|     "lint": "eslint .", | ||||
|     "test": "mocha --reporter spec --bail --check-leaks test/", | ||||
|     "test-ci": "nyc --reporter=lcovonly --reporter=text npm test", | ||||
|     "test-cov": "nyc --reporter=html --reporter=text npm test" | ||||
|   } | ||||
| } | ||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue