Updated some dependencies and package.json

This commit is contained in:
Kasper Rynning-Tønnesen
2015-06-20 17:11:23 +02:00
parent f1a98831fb
commit 45079cb4d9
545 changed files with 3390 additions and 63388 deletions

72
server/node_modules/express/node_modules/accepts/HISTORY.md generated vendored Executable file → Normal file
View File

@@ -1,3 +1,75 @@
1.2.9 / 2015-06-08
==================
* deps: mime-types@~2.1.1
- perf: fix deopt during mapping
1.2.8 / 2015-06-07
==================
* deps: mime-types@~2.1.0
- deps: mime-db@~1.13.0
* perf: avoid argument reassignment & argument slice
* perf: avoid negotiator recursive construction
* perf: enable strict mode
* perf: remove unnecessary bitwise operator
1.2.7 / 2015-05-10
==================
* deps: negotiator@0.5.3
- Fix media type parameter matching to be case-insensitive
1.2.6 / 2015-05-07
==================
* deps: mime-types@~2.0.11
- deps: mime-db@~1.9.1
* deps: negotiator@0.5.2
- Fix comparing media types with quoted values
- Fix splitting media types with quoted commas
1.2.5 / 2015-03-13
==================
* deps: mime-types@~2.0.10
- deps: mime-db@~1.8.0
1.2.4 / 2015-02-14
==================
* Support Node.js 0.6
* deps: mime-types@~2.0.9
- deps: mime-db@~1.7.0
* deps: negotiator@0.5.1
- Fix preference sorting to be stable for long acceptable lists
1.2.3 / 2015-01-31
==================
* deps: mime-types@~2.0.8
- deps: mime-db@~1.6.0
1.2.2 / 2014-12-30
==================
* deps: mime-types@~2.0.7
- deps: mime-db@~1.5.0
1.2.1 / 2014-12-30
==================
* deps: mime-types@~2.0.5
- deps: mime-db@~1.3.1
1.2.0 / 2014-12-19
==================
* deps: negotiator@0.5.0
- Fix list return order when large accepted list
- Fix missing identity encoding when q=0 exists
- Remove dynamic building of Negotiator class
1.1.4 / 2014-12-10
==================

1
server/node_modules/express/node_modules/accepts/LICENSE generated vendored Executable file → Normal file
View File

@@ -1,6 +1,7 @@
(The MIT License)
Copyright (c) 2014 Jonathan Ong <me@jongleberry.com>
Copyright (c) 2015 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

161
server/node_modules/express/node_modules/accepts/README.md generated vendored Executable file → Normal file
View File

@@ -6,89 +6,130 @@
[![Build Status][travis-image]][travis-url]
[![Test Coverage][coveralls-image]][coveralls-url]
Higher level content negotation based on [negotiator](https://github.com/federomero/negotiator). Extracted from [koa](https://github.com/koajs/koa) for general use.
Higher level content negotiation based on [negotiator](https://www.npmjs.com/package/negotiator). Extracted from [koa](https://www.npmjs.com/package/koa) for general use.
In addition to negotatior, it allows:
In addition to negotiator, it allows:
- Allows types as an array or arguments list, ie `(['text/html', 'application/json'])` as well as `('text/html', 'application/json')`.
- Allows type shorthands such as `json`.
- Returns `false` when no types match
- Treats non-existent headers as `*`
## API
## Installation
### var accept = new Accepts(req)
```sh
npm install accepts
```
## API
```js
var accepts = require('accepts')
```
http.createServer(function (req, res) {
### accepts(req)
Create a new `Accepts` object for the given `req`.
#### .charset(charsets)
Return the first accepted charset. If nothing in `charsets` is accepted,
then `false` is returned.
#### .charsets()
Return the charsets that the request accepts, in the order of the client's
preference (most preferred first).
#### .encoding(encodings)
Return the first accepted encoding. If nothing in `encodings` is accepted,
then `false` is returned.
#### .encodings()
Return the encodings that the request accepts, in the order of the client's
preference (most preferred first).
#### .language(languages)
Return the first accepted language. If nothing in `languages` is accepted,
then `false` is returned.
#### .languages()
Return the languages that the request accepts, in the order of the client's
preference (most preferred first).
#### .type(types)
Return the first accepted type (and it is returned as the same text as what
appears in the `types` array). If nothing in `types` is accepted, then `false`
is returned.
The `types` array can contain full MIME types or file extensions. Any value
that is not a full MIME types is passed to `require('mime-types').lookup`.
#### .types()
Return the types that the request accepts, in the order of the client's
preference (most preferred first).
## Examples
### Simple type negotiation
This simple example shows how to use `accepts` to return a different typed
respond body based on what the client wants to accept. The server lists it's
preferences in order and will get back the best match between the client and
server.
```js
var accepts = require('accepts')
var http = require('http')
function app(req, res) {
var accept = accepts(req)
})
// the order of this list is significant; should be server preferred order
switch(accept.type(['json', 'html'])) {
case 'json':
res.setHeader('Content-Type', 'application/json')
res.write('{"hello":"world!"}')
break
case 'html':
res.setHeader('Content-Type', 'text/html')
res.write('<b>hello, world!</b>')
break
default:
// the fallback is text/plain, so no need to specify it above
res.setHeader('Content-Type', 'text/plain')
res.write('hello, world!')
break
}
res.end()
}
http.createServer(app).listen(3000)
```
### accept\[property\]\(\)
Returns all the explicitly accepted content property as an array in descending priority.
- `accept.types()`
- `accept.encodings()`
- `accept.charsets()`
- `accept.languages()`
They are also aliased in singular form such as `accept.type()`. `accept.languages()` is also aliased as `accept.langs()`, etc.
Note: you should almost never do this in a real app as it defeats the purpose of content negotiation.
Example:
```js
// in Google Chrome
var encodings = accept.encodings() // -> ['sdch', 'gzip', 'deflate']
```
Since you probably don't support `sdch`, you should just supply the encodings you support:
```js
var encoding = accept.encodings('gzip', 'deflate') // -> 'gzip', probably
```
### accept\[property\]\(values, ...\)
You can either have `values` be an array or have an argument list of values.
If the client does not accept any `values`, `false` will be returned.
If the client accepts any `values`, the preferred `value` will be return.
For `accept.types()`, shorthand mime types are allowed.
Example:
```js
// req.headers.accept = 'application/json'
accept.types('json') // -> 'json'
accept.types('html', 'json') // -> 'json'
accept.types('html') // -> false
// req.headers.accept = ''
// which is equivalent to `*`
accept.types() // -> [], no explicit types
accept.types('text/html', 'text/json') // -> 'text/html', since it was first
You can test this out with the cURL program:
```sh
curl -I -H'Accept: text/html' http://localhost:3000/
```
## License
[MIT](LICENSE)
[npm-image]: https://img.shields.io/npm/v/accepts.svg?style=flat
[npm-image]: https://img.shields.io/npm/v/accepts.svg
[npm-url]: https://npmjs.org/package/accepts
[node-version-image]: https://img.shields.io/node/v/accepts.svg?style=flat
[node-version-image]: https://img.shields.io/node/v/accepts.svg
[node-version-url]: http://nodejs.org/download/
[travis-image]: https://img.shields.io/travis/jshttp/accepts.svg?style=flat
[travis-image]: https://img.shields.io/travis/jshttp/accepts/master.svg
[travis-url]: https://travis-ci.org/jshttp/accepts
[coveralls-image]: https://img.shields.io/coveralls/jshttp/accepts.svg?style=flat
[coveralls-image]: https://img.shields.io/coveralls/jshttp/accepts/master.svg
[coveralls-url]: https://coveralls.io/r/jshttp/accepts
[downloads-image]: https://img.shields.io/npm/dm/accepts.svg?style=flat
[downloads-image]: https://img.shields.io/npm/dm/accepts.svg
[downloads-url]: https://npmjs.org/package/accepts

143
server/node_modules/express/node_modules/accepts/index.js generated vendored Executable file → Normal file
View File

@@ -1,16 +1,40 @@
/*!
* accepts
* Copyright(c) 2014 Jonathan Ong
* Copyright(c) 2015 Douglas Christopher Wilson
* MIT Licensed
*/
'use strict'
/**
* Module dependencies.
* @private
*/
var Negotiator = require('negotiator')
var mime = require('mime-types')
var slice = [].slice
/**
* Module exports.
* @public
*/
module.exports = Accepts
/**
* Create a new Accepts object for the given req.
*
* @param {object} req
* @public
*/
function Accepts(req) {
if (!(this instanceof Accepts))
return new Accepts(req)
this.headers = req.headers
this.negotiator = Negotiator(req)
this.negotiator = new Negotiator(req)
}
/**
@@ -49,19 +73,31 @@ function Accepts(req) {
* this.types('html', 'json');
* // => "json"
*
* @param {String|Array} type(s)...
* @param {String|Array} types...
* @return {String|Array|Boolean}
* @api public
* @public
*/
Accepts.prototype.type =
Accepts.prototype.types = function (types) {
if (!Array.isArray(types)) types = slice.call(arguments);
var n = this.negotiator;
if (!types.length) return n.mediaTypes();
Accepts.prototype.types = function (types_) {
var types = types_
// support flattened arguments
if (types && !Array.isArray(types)) {
types = new Array(arguments.length)
for (var i = 0; i < types.length; i++) {
types[i] = arguments[i]
}
}
// no types, return all requested types
if (!types || types.length === 0) {
return this.negotiator.mediaTypes()
}
if (!this.headers.accept) return types[0];
var mimes = types.map(extToMime);
var accepts = n.mediaTypes(mimes.filter(validMime));
var accepts = this.negotiator.mediaTypes(mimes.filter(validMime));
var first = accepts[0];
if (!first) return false;
return types[mimes.indexOf(first)];
@@ -75,17 +111,29 @@ Accepts.prototype.types = function (types) {
*
* ['gzip', 'deflate']
*
* @param {String|Array} encoding(s)...
* @param {String|Array} encodings...
* @return {String|Array}
* @api public
* @public
*/
Accepts.prototype.encoding =
Accepts.prototype.encodings = function (encodings) {
if (!Array.isArray(encodings)) encodings = slice.call(arguments);
var n = this.negotiator;
if (!encodings.length) return n.encodings();
return n.encodings(encodings)[0] || false;
Accepts.prototype.encodings = function (encodings_) {
var encodings = encodings_
// support flattened arguments
if (encodings && !Array.isArray(encodings)) {
encodings = new Array(arguments.length)
for (var i = 0; i < encodings.length; i++) {
encodings[i] = arguments[i]
}
}
// no encodings, return all requested encodings
if (!encodings || encodings.length === 0) {
return this.negotiator.encodings()
}
return this.negotiator.encodings(encodings)[0] || false
}
/**
@@ -96,18 +144,29 @@ Accepts.prototype.encodings = function (encodings) {
*
* ['utf-8', 'utf-7', 'iso-8859-1']
*
* @param {String|Array} charset(s)...
* @param {String|Array} charsets...
* @return {String|Array}
* @api public
* @public
*/
Accepts.prototype.charset =
Accepts.prototype.charsets = function (charsets) {
if (!Array.isArray(charsets)) charsets = [].slice.call(arguments);
var n = this.negotiator;
if (!charsets.length) return n.charsets();
if (!this.headers['accept-charset']) return charsets[0];
return n.charsets(charsets)[0] || false;
Accepts.prototype.charsets = function (charsets_) {
var charsets = charsets_
// support flattened arguments
if (charsets && !Array.isArray(charsets)) {
charsets = new Array(arguments.length)
for (var i = 0; i < charsets.length; i++) {
charsets[i] = arguments[i]
}
}
// no charsets, return all requested charsets
if (!charsets || charsets.length === 0) {
return this.negotiator.charsets()
}
return this.negotiator.charsets(charsets)[0] || false
}
/**
@@ -118,20 +177,31 @@ Accepts.prototype.charsets = function (charsets) {
*
* ['es', 'pt', 'en']
*
* @param {String|Array} lang(s)...
* @param {String|Array} langs...
* @return {Array|String}
* @api public
* @public
*/
Accepts.prototype.lang =
Accepts.prototype.langs =
Accepts.prototype.language =
Accepts.prototype.languages = function (langs) {
if (!Array.isArray(langs)) langs = slice.call(arguments);
var n = this.negotiator;
if (!langs.length) return n.languages();
if (!this.headers['accept-language']) return langs[0];
return n.languages(langs)[0] || false;
Accepts.prototype.languages = function (languages_) {
var languages = languages_
// support flattened arguments
if (languages && !Array.isArray(languages)) {
languages = new Array(arguments.length)
for (var i = 0; i < languages.length; i++) {
languages[i] = arguments[i]
}
}
// no languages, return all requested languages
if (!languages || languages.length === 0) {
return this.negotiator.languages()
}
return this.negotiator.languages(languages)[0] || false
}
/**
@@ -139,12 +209,13 @@ Accepts.prototype.languages = function (langs) {
*
* @param {String} type
* @return {String}
* @api private
* @private
*/
function extToMime(type) {
if (~type.indexOf('/')) return type;
return mime.lookup(type);
return type.indexOf('/') === -1
? mime.lookup(type)
: type
}
/**
@@ -152,7 +223,7 @@ function extToMime(type) {
*
* @param {String} type
* @return {String}
* @api private
* @private
*/
function validMime(type) {

44
server/node_modules/express/node_modules/accepts/node_modules/mime-types/HISTORY.md generated vendored Executable file → Normal file
View File

@@ -1,3 +1,47 @@
2.1.1 / 2015-06-08
==================
* perf: fix deopt during mapping
2.1.0 / 2015-06-07
==================
* Fix incorrectly treating extension-less file name as extension
- i.e. `'path/to/json'` will no longer return `application/json`
* Fix `.charset(type)` to accept parameters
* Fix `.charset(type)` to match case-insensitive
* Improve generation of extension to MIME mapping
* Refactor internals for readability and no argument reassignment
* Prefer `application/*` MIME types from the same source
* Prefer any type over `application/octet-stream`
* deps: mime-db@~1.13.0
- Add nginx as a source
- Add new mime types
2.0.14 / 2015-06-06
===================
* deps: mime-db@~1.12.0
- Add new mime types
2.0.13 / 2015-05-31
===================
* deps: mime-db@~1.11.0
- Add new mime types
2.0.12 / 2015-05-19
===================
* deps: mime-db@~1.10.0
- Add new mime types
2.0.11 / 2015-05-05
===================
* deps: mime-db@~1.9.1
- Add new mime types
2.0.10 / 2015-03-13
===================

37
server/node_modules/express/node_modules/accepts/node_modules/mime-types/LICENSE generated vendored Executable file → Normal file
View File

@@ -1,22 +1,23 @@
(The MIT License)
The MIT License (MIT)
Copyright (c) 2014 Jonathan Ong <me@jongleberry.com>
Copyright (c) 2015 Douglas Christopher Wilson <doug@somethingdoug.com>
Copyright (c) 2014 Jonathan Ong me@jongleberry.com
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
'Software'), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:
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 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.
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
server/node_modules/express/node_modules/accepts/node_modules/mime-types/README.md generated vendored Executable file → Normal file
View File

@@ -42,10 +42,11 @@ All functions return `false` if input is invalid or not found.
Lookup the content-type associated with a file.
```js
mime.lookup('json') // 'application/json'
mime.lookup('.md') // 'text/x-markdown'
mime.lookup('file.html') // 'text/html'
mime.lookup('folder/file.js') // 'application/javascript'
mime.lookup('json') // 'application/json'
mime.lookup('.md') // 'text/x-markdown'
mime.lookup('file.html') // 'text/html'
mime.lookup('folder/file.js') // 'application/javascript'
mime.lookup('folder/.htaccess') // false
mime.lookup('cats') // false
```
@@ -90,13 +91,13 @@ A map of extensions by content-type.
[MIT](LICENSE)
[npm-image]: https://img.shields.io/npm/v/mime-types.svg?style=flat
[npm-image]: https://img.shields.io/npm/v/mime-types.svg
[npm-url]: https://npmjs.org/package/mime-types
[node-version-image]: https://img.shields.io/badge/node.js-%3E%3D_0.6-brightgreen.svg?style=flat
[node-version-image]: https://img.shields.io/node/v/mime-types.svg
[node-version-url]: http://nodejs.org/download/
[travis-image]: https://img.shields.io/travis/jshttp/mime-types.svg?style=flat
[travis-image]: https://img.shields.io/travis/jshttp/mime-types/master.svg
[travis-url]: https://travis-ci.org/jshttp/mime-types
[coveralls-image]: https://img.shields.io/coveralls/jshttp/mime-types.svg?style=flat
[coveralls-image]: https://img.shields.io/coveralls/jshttp/mime-types/master.svg
[coveralls-url]: https://coveralls.io/r/jshttp/mime-types
[downloads-image]: https://img.shields.io/npm/dm/mime-types.svg?style=flat
[downloads-image]: https://img.shields.io/npm/dm/mime-types.svg
[downloads-url]: https://npmjs.org/package/mime-types

215
server/node_modules/express/node_modules/accepts/node_modules/mime-types/index.js generated vendored Executable file → Normal file
View File

@@ -1,63 +1,188 @@
/*!
* mime-types
* Copyright(c) 2014 Jonathan Ong
* Copyright(c) 2015 Douglas Christopher Wilson
* MIT Licensed
*/
'use strict'
/**
* Module dependencies.
* @private
*/
var db = require('mime-db')
var extname = require('path').extname
// types[extension] = type
exports.types = Object.create(null)
// extensions[type] = [extensions]
/**
* Module variables.
* @private
*/
var extractTypeRegExp = /^\s*([^;\s]*)(?:;|\s|$)/
var textTypeRegExp = /^text\//i
/**
* Module exports.
* @public
*/
exports.charset = charset
exports.charsets = { lookup: charset }
exports.contentType = contentType
exports.extension = extension
exports.extensions = Object.create(null)
exports.lookup = lookup
exports.types = Object.create(null)
Object.keys(db).forEach(function (name) {
var mime = db[name]
var exts = mime.extensions
if (!exts || !exts.length) return
exports.extensions[name] = exts
exts.forEach(function (ext) {
exports.types[ext] = name
})
})
// Populate the extensions/types maps
populateMaps(exports.extensions, exports.types)
exports.lookup = function (string) {
if (!string || typeof string !== "string") return false
// remove any leading paths, though we should just use path.basename
string = string.replace(/.*[\.\/\\]/, '').toLowerCase()
if (!string) return false
return exports.types[string] || false
}
/**
* Get the default charset for a MIME type.
*
* @param {string} type
* @return {boolean|string}
*/
exports.extension = function (type) {
if (!type || typeof type !== "string") return false
// to do: use media-typer
type = type.match(/^\s*([^;\s]*)(?:;|\s|$)/)
if (!type) return false
var exts = exports.extensions[type[1].toLowerCase()]
if (!exts || !exts.length) return false
return exts[0]
}
function charset(type) {
if (!type || typeof type !== 'string') {
return false
}
// type has to be an exact mime type
exports.charset = function (type) {
var mime = db[type]
if (mime && mime.charset) return mime.charset
// TODO: use media-typer
var match = extractTypeRegExp.exec(type)
var mime = match && db[match[1].toLowerCase()]
if (mime && mime.charset) {
return mime.charset
}
// default text/* to utf-8
if (/^text\//.test(type)) return 'UTF-8'
if (match && textTypeRegExp.test(match[1])) {
return 'UTF-8'
}
return false
}
// backwards compatibility
exports.charsets = {
lookup: exports.charset
/**
* Create a full Content-Type header given a MIME type or extension.
*
* @param {string} str
* @return {boolean|string}
*/
function contentType(str) {
// TODO: should this even be in this module?
if (!str || typeof str !== 'string') {
return false
}
var mime = str.indexOf('/') === -1
? exports.lookup(str)
: str
if (!mime) {
return false
}
// TODO: use content-type or other module
if (mime.indexOf('charset') === -1) {
var charset = exports.charset(mime)
if (charset) mime += '; charset=' + charset.toLowerCase()
}
return mime
}
// to do: maybe use set-type module or something
exports.contentType = function (type) {
if (!type || typeof type !== "string") return false
if (!~type.indexOf('/')) type = exports.lookup(type)
if (!type) return false
if (!~type.indexOf('charset')) {
var charset = exports.charset(type)
if (charset) type += '; charset=' + charset.toLowerCase()
/**
* Get the default extension for a MIME type.
*
* @param {string} type
* @return {boolean|string}
*/
function extension(type) {
if (!type || typeof type !== 'string') {
return false
}
return type
// TODO: use media-typer
var match = extractTypeRegExp.exec(type)
// get extensions
var exts = match && exports.extensions[match[1].toLowerCase()]
if (!exts || !exts.length) {
return false
}
return exts[0]
}
/**
* Lookup the MIME type for a file path/extension.
*
* @param {string} path
* @return {boolean|string}
*/
function lookup(path) {
if (!path || typeof path !== 'string') {
return false
}
// get the extension ("ext" or ".ext" or full path)
var extension = extname('x.' + path)
.toLowerCase()
.substr(1)
if (!extension) {
return false
}
return exports.types[extension] || false
}
/**
* Populate the extensions and types maps.
* @private
*/
function populateMaps(extensions, types) {
// source preference (least -> most)
var preference = ['nginx', 'apache', undefined, 'iana']
Object.keys(db).forEach(function forEachMimeType(type) {
var mime = db[type]
var exts = mime.extensions
if (!exts || !exts.length) {
return
}
// mime -> extensions
extensions[type] = exts
// extension -> mime
for (var i = 0; i < exts.length; i++) {
var extension = exts[i]
if (types[extension]) {
var from = preference.indexOf(db[types[extension]].source)
var to = preference.indexOf(mime.source)
if (types[extension] !== 'application/octet-stream'
&& from > to || (from === to && types[extension].substr(0, 12) === 'application/')) {
// skip the remapping
return
}
}
// set the extension -> mime
types[extension] = type
}
})
}

View File

@@ -1,3 +1,57 @@
1.13.0 / 2015-06-07
===================
* Add nginx as a source
* Add `application/x-cocoa`
* Add `application/x-java-archive-diff`
* Add `application/x-makeself`
* Add `application/x-perl`
* Add `application/x-pilot`
* Add `application/x-redhat-package-manager`
* Add `application/x-sea`
* Add `audio/x-m4a`
* Add `audio/x-realaudio`
* Add `image/x-jng`
* Add `text/mathml`
1.12.0 / 2015-06-05
===================
* Add `application/bdoc`
* Add `application/vnd.hyperdrive+json`
* Add `application/x-bdoc`
* Add extension `.rtf` to `text/rtf`
1.11.0 / 2015-05-31
===================
* Add `audio/wav`
* Add `audio/wave`
* Add extension `.litcoffee` to `text/coffeescript`
* Add extension `.sfd-hdstx` to `application/vnd.hydrostatix.sof-data`
* Add extension `.n-gage` to `application/vnd.nokia.n-gage.symbian.install`
1.10.0 / 2015-05-19
===================
* Add `application/vnd.balsamiq.bmpr`
* Add `application/vnd.microsoft.portable-executable`
* Add `application/x-ns-proxy-autoconfig`
1.9.1 / 2015-04-19
==================
* Remove `.json` extension from `application/manifest+json`
- This is causing bugs downstream
1.9.0 / 2015-04-19
==================
* Add `application/manifest+json`
* Add `application/vnd.micro+json`
* Add `image/vnd.zbrush.pcx`
* Add `image/x-ms-bmp`
1.8.0 / 2015-03-13
==================

View File

@@ -13,6 +13,7 @@ It aggregates data from the following sources:
- http://www.iana.org/assignments/media-types/media-types.xhtml
- http://svn.apache.org/repos/asf/httpd/httpd/trunk/docs/conf/mime.types
- http://hg.nginx.org/nginx/raw-file/default/conf/mime.types
## Installation
@@ -20,8 +21,12 @@ It aggregates data from the following sources:
npm install mime-db
```
If you're crazy enough to use this in the browser,
you can just grab the JSON file:
### Database Download
If you're crazy enough to use this in the browser, you can just grab the
JSON file using [RawGit](https://rawgit.com/). It is recommended to replace
`master` with [a release tag](https://github.com/jshttp/mime-db/tags) as the
JSON format may change in the future.
```
https://cdn.rawgit.com/jshttp/mime-db/master/db.json
@@ -45,6 +50,7 @@ Each mime type has the following properties:
If not set, it's probably a custom media type.
- `apache` - [Apache common media types](http://svn.apache.org/repos/asf/httpd/httpd/trunk/docs/conf/mime.types)
- `iana` - [IANA-defined media types](http://www.iana.org/assignments/media-types/media-types.xhtml)
- `nginx` - [nginx media types](http://hg.nginx.org/nginx/raw-file/default/conf/mime.types)
- `.extensions[]` - known extensions associated with this mime type.
- `.compressible` - whether a file of this type is can be gzipped.
- `.charset` - the default charset associated with this type, if any.
@@ -65,12 +71,12 @@ them with the IANA. The community registration procedure is outlined in
[RFC 6838 section 5](http://tools.ietf.org/html/rfc6838#section-5). Types
registered with the IANA are automatically pulled into this library.
[npm-version-image]: https://img.shields.io/npm/v/mime-db.svg?style=flat
[npm-downloads-image]: https://img.shields.io/npm/dm/mime-db.svg?style=flat
[npm-version-image]: https://img.shields.io/npm/v/mime-db.svg
[npm-downloads-image]: https://img.shields.io/npm/dm/mime-db.svg
[npm-url]: https://npmjs.org/package/mime-db
[travis-image]: https://img.shields.io/travis/jshttp/mime-db.svg?style=flat
[travis-image]: https://img.shields.io/travis/jshttp/mime-db/master.svg
[travis-url]: https://travis-ci.org/jshttp/mime-db
[coveralls-image]: https://img.shields.io/coveralls/jshttp/mime-db.svg?style=flat
[coveralls-image]: https://img.shields.io/coveralls/jshttp/mime-db/master.svg
[coveralls-url]: https://coveralls.io/r/jshttp/mime-db?branch=master
[node-image]: https://img.shields.io/node/v/mime-db.svg?style=flat
[node-image]: https://img.shields.io/node/v/mime-db.svg
[node-url]: http://nodejs.org/download/

View File

@@ -105,6 +105,10 @@
"application/batch-smtp": {
"source": "iana"
},
"application/bdoc": {
"compressible": false,
"extensions": ["bdoc"]
},
"application/beep+xml": {
"source": "iana"
},
@@ -410,7 +414,7 @@
"application/java-archive": {
"source": "apache",
"compressible": false,
"extensions": ["jar"]
"extensions": ["jar","war","ear"]
},
"application/java-serialized-object": {
"source": "apache",
@@ -513,6 +517,11 @@
"source": "iana",
"extensions": ["mads"]
},
"application/manifest+json": {
"charset": "UTF-8",
"compressible": true,
"extensions": ["webmanifest"]
},
"application/marc": {
"source": "iana",
"extensions": ["mrc"]
@@ -685,7 +694,7 @@
"application/octet-stream": {
"source": "iana",
"compressible": false,
"extensions": ["bin","dms","lrf","mar","so","dist","distz","pkg","bpk","dump","elc","deploy","buffer"]
"extensions": ["bin","dms","lrf","mar","so","dist","distz","pkg","bpk","dump","elc","deploy","exe","dll","deb","dmg","iso","img","msi","msp","msm","buffer"]
},
"application/oda": {
"source": "iana",
@@ -1307,6 +1316,9 @@
"application/vnd.balsamiq.bmml+xml": {
"source": "iana"
},
"application/vnd.balsamiq.bmpr": {
"source": "iana"
},
"application/vnd.bekitzur-stech+json": {
"source": "iana",
"compressible": true
@@ -2029,7 +2041,12 @@
"source": "iana"
},
"application/vnd.hydrostatix.sof-data": {
"source": "iana"
"source": "iana",
"extensions": ["sfd-hdstx"]
},
"application/vnd.hyperdrive+json": {
"source": "iana",
"compressible": true
},
"application/vnd.hzn-3d-crossword": {
"source": "iana"
@@ -2374,6 +2391,10 @@
"source": "iana",
"extensions": ["mfm"]
},
"application/vnd.micro+json": {
"source": "iana",
"compressible": true
},
"application/vnd.micrografx.flo": {
"source": "iana",
"extensions": ["flo"]
@@ -2382,6 +2403,9 @@
"source": "iana",
"extensions": ["igx"]
},
"application/vnd.microsoft.portable-executable": {
"source": "iana"
},
"application/vnd.miele+json": {
"source": "iana",
"compressible": true
@@ -2713,7 +2737,8 @@
"extensions": ["ngdat"]
},
"application/vnd.nokia.n-gage.symbian.install": {
"source": "iana"
"source": "iana",
"extensions": ["n-gage"]
},
"application/vnd.nokia.ncd": {
"source": "iana"
@@ -4068,6 +4093,10 @@
"source": "apache",
"extensions": ["bcpio"]
},
"application/x-bdoc": {
"compressible": false,
"extensions": ["bdoc"]
},
"application/x-bittorrent": {
"source": "apache",
"extensions": ["torrent"]
@@ -4109,6 +4138,10 @@
"application/x-chrome-extension": {
"extensions": ["crx"]
},
"application/x-cocoa": {
"source": "nginx",
"extensions": ["cco"]
},
"application/x-compress": {
"source": "apache"
},
@@ -4263,6 +4296,10 @@
"source": "apache",
"extensions": ["iso"]
},
"application/x-java-archive-diff": {
"source": "nginx",
"extensions": ["jardiff"]
},
"application/x-java-jnlp-file": {
"source": "apache",
"compressible": false,
@@ -4283,6 +4320,10 @@
"source": "apache",
"extensions": ["lzh","lha"]
},
"application/x-makeself": {
"source": "nginx",
"extensions": ["run"]
},
"application/x-mie": {
"source": "apache",
"extensions": ["mie"]
@@ -4366,10 +4407,22 @@
"source": "apache",
"extensions": ["nc","cdf"]
},
"application/x-ns-proxy-autoconfig": {
"compressible": true,
"extensions": ["pac"]
},
"application/x-nzb": {
"source": "apache",
"extensions": ["nzb"]
},
"application/x-perl": {
"source": "nginx",
"extensions": ["pl","pm"]
},
"application/x-pilot": {
"source": "nginx",
"extensions": ["prc","pdb"]
},
"application/x-pkcs12": {
"source": "apache",
"compressible": false,
@@ -4388,10 +4441,18 @@
"compressible": false,
"extensions": ["rar"]
},
"application/x-redhat-package-manager": {
"source": "nginx",
"extensions": ["rpm"]
},
"application/x-research-info-systems": {
"source": "apache",
"extensions": ["ris"]
},
"application/x-sea": {
"source": "nginx",
"extensions": ["sea"]
},
"application/x-sh": {
"source": "apache",
"compressible": true,
@@ -4450,7 +4511,7 @@
},
"application/x-tcl": {
"source": "apache",
"extensions": ["tcl"]
"extensions": ["tcl","tk"]
},
"application/x-tex": {
"source": "apache",
@@ -4486,7 +4547,7 @@
},
"application/x-x509-ca-cert": {
"source": "apache",
"extensions": ["der","crt"]
"extensions": ["der","crt","pem"]
},
"application/x-xfig": {
"source": "apache",
@@ -4554,7 +4615,7 @@
"extensions": ["xhtml","xht"]
},
"application/xhtml-voice+xml": {
"source": "iana"
"source": "apache"
},
"application/xml": {
"source": "iana",
@@ -4855,7 +4916,7 @@
"extensions": ["oga","ogg","spx"]
},
"audio/opus": {
"source": "apache"
"source": "iana"
},
"audio/parityfec": {
"source": "iana"
@@ -5081,6 +5142,14 @@
"audio/vorbis-config": {
"source": "iana"
},
"audio/wav": {
"compressible": false,
"extensions": ["wav"]
},
"audio/wave": {
"compressible": false,
"extensions": ["wav"]
},
"audio/webm": {
"source": "apache",
"compressible": false,
@@ -5104,6 +5173,10 @@
"source": "apache",
"extensions": ["flac"]
},
"audio/x-m4a": {
"source": "nginx",
"extensions": ["m4a"]
},
"audio/x-matroska": {
"source": "apache",
"extensions": ["mka"]
@@ -5128,6 +5201,10 @@
"source": "apache",
"extensions": ["rmp"]
},
"audio/x-realaudio": {
"source": "nginx",
"extensions": ["ra"]
},
"audio/x-tta": {
"source": "apache"
},
@@ -5355,6 +5432,9 @@
"source": "iana",
"extensions": ["xif"]
},
"image/vnd.zbrush.pcx": {
"source": "iana"
},
"image/webp": {
"source": "apache",
"extensions": ["webp"]
@@ -5380,10 +5460,19 @@
"compressible": true,
"extensions": ["ico"]
},
"image/x-jng": {
"source": "nginx",
"extensions": ["jng"]
},
"image/x-mrsid-image": {
"source": "apache",
"extensions": ["sid"]
},
"image/x-ms-bmp": {
"source": "nginx",
"compressible": true,
"extensions": ["bmp"]
},
"image/x-pcx": {
"source": "apache",
"extensions": ["pcx"]
@@ -5647,7 +5736,7 @@
"compressible": true
},
"text/coffeescript": {
"extensions": ["coffee"]
"extensions": ["coffee","litcoffee"]
},
"text/css": {
"source": "iana",
@@ -5689,7 +5778,7 @@
"text/html": {
"source": "iana",
"compressible": true,
"extensions": ["html","htm"]
"extensions": ["html","htm","shtml"]
},
"text/jade": {
"extensions": ["jade"]
@@ -5711,6 +5800,10 @@
"text/markdown": {
"source": "iana"
},
"text/mathml": {
"source": "nginx",
"extensions": ["mml"]
},
"text/mizar": {
"source": "iana"
},
@@ -5755,7 +5848,9 @@
"extensions": ["rtx"]
},
"text/rtf": {
"source": "iana"
"source": "iana",
"compressible": true,
"extensions": ["rtf"]
},
"text/rtp-enc-aescm128": {
"source": "iana"
@@ -5916,6 +6011,7 @@
"extensions": ["c","cc","cxx","cpp","h","hh","dic"]
},
"text/x-component": {
"source": "nginx",
"extensions": ["htc"]
},
"text/x-fortran": {
@@ -5982,7 +6078,8 @@
},
"text/xml": {
"source": "iana",
"compressible": true
"compressible": true,
"extensions": ["xml"]
},
"text/xml-external-parsed-entity": {
"source": "iana"
@@ -5995,7 +6092,7 @@
},
"video/3gpp": {
"source": "apache",
"extensions": ["3gp"]
"extensions": ["3gp","3gpp"]
},
"video/3gpp-tt": {
"source": "apache"

View File

@@ -1,7 +1,7 @@
{
"name": "mime-db",
"description": "Media Type Database",
"version": "1.8.0",
"version": "1.13.0",
"contributors": [
{
"name": "Douglas Christopher Wilson",
@@ -30,17 +30,17 @@
],
"repository": {
"type": "git",
"url": "https://github.com/jshttp/mime-db"
"url": "git://github.com/jshttp/mime-db"
},
"devDependencies": {
"bluebird": "~2.9.14",
"co": "~4.4.0",
"cogent": "1",
"csv-parse": "0.0.9",
"bluebird": "2.9.27",
"co": "4.5.4",
"cogent": "1.0.1",
"csv-parse": "0.1.2",
"gnode": "0.1.1",
"istanbul": "0.3.7",
"mocha": "~1.21.4",
"raw-body": "~1.3.3",
"istanbul": "0.3.14",
"mocha": "1.21.5",
"raw-body": "2.1.0",
"stream-to-array": "2"
},
"files": [
@@ -55,39 +55,21 @@
},
"scripts": {
"build": "node scripts/build",
"fetch": "gnode scripts/extensions && gnode scripts/types",
"fetch": "gnode scripts/fetch-apache && gnode scripts/fetch-iana && gnode scripts/fetch-nginx",
"test": "mocha --reporter spec --bail --check-leaks test/",
"test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --reporter dot --check-leaks test/",
"test-travis": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --reporter spec --check-leaks test/",
"update": "npm run fetch && npm run build"
},
"gitHead": "cd5730a475ff03d2ef49fc571d5510a548b63494",
"readme": "# mime-db\n\n[![NPM Version][npm-version-image]][npm-url]\n[![NPM Downloads][npm-downloads-image]][npm-url]\n[![Node.js Version][node-image]][node-url]\n[![Build Status][travis-image]][travis-url]\n[![Coverage Status][coveralls-image]][coveralls-url]\n\nThis is a database of all mime types.\nIt consists of a single, public JSON file and does not include any logic,\nallowing it to remain as un-opinionated as possible with an API.\nIt aggregates data from the following sources:\n\n- http://www.iana.org/assignments/media-types/media-types.xhtml\n- http://svn.apache.org/repos/asf/httpd/httpd/trunk/docs/conf/mime.types\n- http://hg.nginx.org/nginx/raw-file/default/conf/mime.types\n\n## Installation\n\n```bash\nnpm install mime-db\n```\n\n### Database Download\n\nIf you're crazy enough to use this in the browser, you can just grab the\nJSON file using [RawGit](https://rawgit.com/). It is recommended to replace\n`master` with [a release tag](https://github.com/jshttp/mime-db/tags) as the\nJSON format may change in the future.\n\n```\nhttps://cdn.rawgit.com/jshttp/mime-db/master/db.json\n```\n\n## Usage\n\n```js\nvar db = require('mime-db');\n\n// grab data on .js files\nvar data = db['application/javascript'];\n```\n\n## Data Structure\n\nThe JSON file is a map lookup for lowercased mime types.\nEach mime type has the following properties:\n\n- `.source` - where the mime type is defined.\n If not set, it's probably a custom media type.\n - `apache` - [Apache common media types](http://svn.apache.org/repos/asf/httpd/httpd/trunk/docs/conf/mime.types)\n - `iana` - [IANA-defined media types](http://www.iana.org/assignments/media-types/media-types.xhtml)\n - `nginx` - [nginx media types](http://hg.nginx.org/nginx/raw-file/default/conf/mime.types)\n- `.extensions[]` - known extensions associated with this mime type.\n- `.compressible` - whether a file of this type is can be gzipped.\n- `.charset` - the default charset associated with this type, if any.\n\nIf unknown, every property could be `undefined`.\n\n## Contributing\n\nTo edit the database, only make PRs against `src/custom.json` or\n`src/custom-suffix.json`.\n\nTo update the build, run `npm run update`.\n\n## Adding Custom Media Types\n\nThe best way to get new media types included in this library is to register\nthem with the IANA. The community registration procedure is outlined in\n[RFC 6838 section 5](http://tools.ietf.org/html/rfc6838#section-5). Types\nregistered with the IANA are automatically pulled into this library.\n\n[npm-version-image]: https://img.shields.io/npm/v/mime-db.svg\n[npm-downloads-image]: https://img.shields.io/npm/dm/mime-db.svg\n[npm-url]: https://npmjs.org/package/mime-db\n[travis-image]: https://img.shields.io/travis/jshttp/mime-db/master.svg\n[travis-url]: https://travis-ci.org/jshttp/mime-db\n[coveralls-image]: https://img.shields.io/coveralls/jshttp/mime-db/master.svg\n[coveralls-url]: https://coveralls.io/r/jshttp/mime-db?branch=master\n[node-image]: https://img.shields.io/node/v/mime-db.svg\n[node-url]: http://nodejs.org/download/\n",
"readmeFilename": "README.md",
"bugs": {
"url": "https://github.com/jshttp/mime-db/issues"
},
"homepage": "https://github.com/jshttp/mime-db",
"_id": "mime-db@1.8.0",
"_shasum": "82a9b385f22b0f5954dec4d445faba0722c4ad25",
"_from": "mime-db@~1.8.0",
"_npmVersion": "1.4.28",
"_npmUser": {
"name": "dougwilson",
"email": "doug@somethingdoug.com"
},
"maintainers": [
{
"name": "jongleberry",
"email": "jonathanrichardong@gmail.com"
},
{
"name": "dougwilson",
"email": "doug@somethingdoug.com"
}
],
"_id": "mime-db@1.13.0",
"dist": {
"shasum": "82a9b385f22b0f5954dec4d445faba0722c4ad25",
"tarball": "http://registry.npmjs.org/mime-db/-/mime-db-1.8.0.tgz"
"shasum": "b6b90fbdab177a601068c884408bea3118e3f407"
},
"directories": {},
"_resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.8.0.tgz"
"_from": "mime-db@~1.13.0",
"_resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.13.0.tgz"
}

View File

@@ -1,7 +1,7 @@
{
"name": "mime-types",
"description": "The ultimate javascript content-type utility.",
"version": "2.0.10",
"version": "2.1.1",
"contributors": [
{
"name": "Douglas Christopher Wilson",
@@ -25,13 +25,13 @@
],
"repository": {
"type": "git",
"url": "https://github.com/jshttp/mime-types"
"url": "git://github.com/jshttp/mime-types"
},
"dependencies": {
"mime-db": "~1.8.0"
"mime-db": "~1.13.0"
},
"devDependencies": {
"istanbul": "0.3.7",
"istanbul": "0.3.14",
"mocha": "~1.21.5"
},
"files": [
@@ -47,37 +47,15 @@
"test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --reporter dot test/test.js",
"test-travis": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --reporter dot test/test.js"
},
"gitHead": "9d4533a2b3a68af48a7f3ded9f8f525648e7bcc1",
"readme": "# mime-types\n\n[![NPM Version][npm-image]][npm-url]\n[![NPM Downloads][downloads-image]][downloads-url]\n[![Node.js Version][node-version-image]][node-version-url]\n[![Build Status][travis-image]][travis-url]\n[![Test Coverage][coveralls-image]][coveralls-url]\n\nThe ultimate javascript content-type utility.\n\nSimilar to [node-mime](https://github.com/broofa/node-mime), except:\n\n- __No fallbacks.__ Instead of naively returning the first available type, `mime-types` simply returns `false`,\n so do `var type = mime.lookup('unrecognized') || 'application/octet-stream'`.\n- No `new Mime()` business, so you could do `var lookup = require('mime-types').lookup`.\n- Additional mime types are added such as jade and stylus via [mime-db](https://github.com/jshttp/mime-db)\n- No `.define()` functionality\n\nOtherwise, the API is compatible.\n\n## Install\n\n```sh\n$ npm install mime-types\n```\n\n## Adding Types\n\nAll mime types are based on [mime-db](https://github.com/jshttp/mime-db),\nso open a PR there if you'd like to add mime types.\n\n## API\n\n```js\nvar mime = require('mime-types')\n```\n\nAll functions return `false` if input is invalid or not found.\n\n### mime.lookup(path)\n\nLookup the content-type associated with a file.\n\n```js\nmime.lookup('json') // 'application/json'\nmime.lookup('.md') // 'text/x-markdown'\nmime.lookup('file.html') // 'text/html'\nmime.lookup('folder/file.js') // 'application/javascript'\nmime.lookup('folder/.htaccess') // false\n\nmime.lookup('cats') // false\n```\n\n### mime.contentType(type)\n\nCreate a full content-type header given a content-type or extension.\n\n```js\nmime.contentType('markdown') // 'text/x-markdown; charset=utf-8'\nmime.contentType('file.json') // 'application/json; charset=utf-8'\n\n// from a full path\nmime.contentType(path.extname('/path/to/file.json')) // 'application/json; charset=utf-8'\n```\n\n### mime.extension(type)\n\nGet the default extension for a content-type.\n\n```js\nmime.extension('application/octet-stream') // 'bin'\n```\n\n### mime.charset(type)\n\nLookup the implied default charset of a content-type.\n\n```js\nmime.charset('text/x-markdown') // 'UTF-8'\n```\n\n### var type = mime.types[extension]\n\nA map of content-types by extension.\n\n### [extensions...] = mime.extensions[type]\n\nA map of extensions by content-type.\n\n## License\n\n[MIT](LICENSE)\n\n[npm-image]: https://img.shields.io/npm/v/mime-types.svg\n[npm-url]: https://npmjs.org/package/mime-types\n[node-version-image]: https://img.shields.io/node/v/mime-types.svg\n[node-version-url]: http://nodejs.org/download/\n[travis-image]: https://img.shields.io/travis/jshttp/mime-types/master.svg\n[travis-url]: https://travis-ci.org/jshttp/mime-types\n[coveralls-image]: https://img.shields.io/coveralls/jshttp/mime-types/master.svg\n[coveralls-url]: https://coveralls.io/r/jshttp/mime-types\n[downloads-image]: https://img.shields.io/npm/dm/mime-types.svg\n[downloads-url]: https://npmjs.org/package/mime-types\n",
"readmeFilename": "README.md",
"bugs": {
"url": "https://github.com/jshttp/mime-types/issues"
},
"homepage": "https://github.com/jshttp/mime-types",
"_id": "mime-types@2.0.10",
"_shasum": "eacd81bb73cab2a77447549a078d4f2018c67b4d",
"_from": "mime-types@~2.0.4",
"_npmVersion": "1.4.28",
"_npmUser": {
"name": "dougwilson",
"email": "doug@somethingdoug.com"
},
"maintainers": [
{
"name": "jongleberry",
"email": "jonathanrichardong@gmail.com"
},
{
"name": "fishrock123",
"email": "fishrock123@rocketmail.com"
},
{
"name": "dougwilson",
"email": "doug@somethingdoug.com"
}
],
"_id": "mime-types@2.1.1",
"dist": {
"shasum": "eacd81bb73cab2a77447549a078d4f2018c67b4d",
"tarball": "http://registry.npmjs.org/mime-types/-/mime-types-2.0.10.tgz"
"shasum": "07341942622db6e106a6f7f83922c1fdc54051cc"
},
"directories": {},
"_resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.0.10.tgz"
"_from": "mime-types@~2.1.1",
"_resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.1.tgz"
}

3
server/node_modules/express/node_modules/accepts/node_modules/negotiator/LICENSE generated vendored Executable file → Normal file
View File

@@ -1,7 +1,8 @@
(The MIT License)
Copyright (c) 2012 Federico Romero
Copyright (c) 2012-2014 Federico Romero
Copyright (c) 2012-2014 Isaac Z. Schlueter
Copyright (c) 2014-2015 Douglas Christopher Wilson
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the

84
server/node_modules/express/node_modules/accepts/node_modules/negotiator/README.md generated vendored Executable file → Normal file
View File

@@ -44,13 +44,22 @@ You can check a working example at `examples/accept.js`.
#### Methods
##### mediaTypes(availableMediaTypes):
##### mediaType()
Returns an array of preferred media types ordered by priority from a list of available media types.
Returns the most preferred media type from the client.
##### mediaType(availableMediaType):
##### mediaType(availableMediaType)
Returns the top preferred media type from a list of available media types.
Returns the most preferred media type from a list of available media types.
##### mediaTypes()
Returns an array of preferred media types ordered by the client preference.
##### mediaTypes(availableMediaTypes)
Returns an array of preferred media types ordered by priority from a list of
available media types.
### Accept-Language Negotiation
@@ -75,13 +84,22 @@ You can check a working example at `examples/language.js`.
#### Methods
##### languages(availableLanguages):
##### language()
Returns an array of preferred languages ordered by priority from a list of available languages.
Returns the most preferred language from the client.
##### language(availableLanguages):
##### language(availableLanguages)
Returns the top preferred language from a list of available languages.
Returns the most preferred language from a list of available languages.
##### languages()
Returns an array of preferred languages ordered by the client preference.
##### languages(availableLanguages)
Returns an array of preferred languages ordered by priority from a list of
available languages.
### Accept-Charset Negotiation
@@ -106,13 +124,22 @@ You can check a working example at `examples/charset.js`.
#### Methods
##### charsets(availableCharsets):
##### charset()
Returns an array of preferred charsets ordered by priority from a list of available charsets.
Returns the most preferred charset from the client.
##### charset(availableCharsets):
##### charset(availableCharsets)
Returns the top preferred charset from a list of available charsets.
Returns the most preferred charset from a list of available charsets.
##### charsets()
Returns an array of preferred charsets ordered by the client preference.
##### charsets(availableCharsets)
Returns an array of preferred charsets ordered by priority from a list of
available charsets.
### Accept-Encoding Negotiation
@@ -137,25 +164,40 @@ You can check a working example at `examples/encoding.js`.
#### Methods
##### encodings(availableEncodings):
##### encoding()
Returns an array of preferred encodings ordered by priority from a list of available encodings.
Returns the most preferred encoding from the client.
##### encoding(availableEncodings):
##### encoding(availableEncodings)
Returns the top preferred encoding from a list of available encodings.
Returns the most preferred encoding from a list of available encodings.
##### encodings()
Returns an array of preferred encodings ordered by the client preference.
##### encodings(availableEncodings)
Returns an array of preferred encodings ordered by priority from a list of
available encodings.
## See Also
The [accepts](https://npmjs.org/package/accepts#readme) module builds on
this module and provides an alternative interface, mime type validation,
and more.
## License
[MIT](LICENSE)
[npm-image]: https://img.shields.io/npm/v/negotiator.svg?style=flat
[npm-image]: https://img.shields.io/npm/v/negotiator.svg
[npm-url]: https://npmjs.org/package/negotiator
[node-version-image]: https://img.shields.io/node/v/negotiator.svg?style=flat
[node-version-image]: https://img.shields.io/node/v/negotiator.svg
[node-version-url]: http://nodejs.org/download/
[travis-image]: https://img.shields.io/travis/jshttp/negotiator.svg?style=flat
[travis-image]: https://img.shields.io/travis/jshttp/negotiator/master.svg
[travis-url]: https://travis-ci.org/jshttp/negotiator
[coveralls-image]: https://img.shields.io/coveralls/jshttp/negotiator.svg?style=flat
[coveralls-image]: https://img.shields.io/coveralls/jshttp/negotiator/master.svg
[coveralls-url]: https://coveralls.io/r/jshttp/negotiator?branch=master
[downloads-image]: https://img.shields.io/npm/dm/negotiator.svg?style=flat
[downloads-image]: https://img.shields.io/npm/dm/negotiator.svg
[downloads-url]: https://npmjs.org/package/negotiator

View File

@@ -2,11 +2,20 @@ module.exports = preferredCharsets;
preferredCharsets.preferredCharsets = preferredCharsets;
function parseAcceptCharset(accept) {
return accept.split(',').map(function(e, i) {
return parseCharset(e.trim(), i);
}).filter(function(e) {
return e;
});
var accepts = accept.split(',');
for (var i = 0, j = 0; i < accepts.length; i++) {
var charset = parseCharset(accepts[i].trim(), i);
if (charset) {
accepts[j++] = charset;
}
}
// trim accepts
accepts.length = j;
return accepts;
}
function parseCharset(s, i) {
@@ -33,19 +42,21 @@ function parseCharset(s, i) {
};
}
function getCharsetPriority(charset, accepted) {
return (accepted.map(function(a) {
return specify(charset, a);
}).filter(Boolean).sort(function (a, b) {
if(a.s == b.s) {
return a.q > b.q ? -1 : 1;
} else {
return a.s > b.s ? -1 : 1;
function getCharsetPriority(charset, accepted, index) {
var priority = {o: -1, q: 0, s: 0};
for (var i = 0; i < accepted.length; i++) {
var spec = specify(charset, accepted[i], index);
if (spec && (priority.s - spec.s || priority.q - spec.q || priority.o - spec.o) < 0) {
priority = spec;
}
})[0] || {s: 0, q:0});
}
return priority;
}
function specify(charset, spec) {
function specify(charset, spec, index) {
var s = 0;
if(spec.charset.toLowerCase() === charset.toLowerCase()){
s |= 1;
@@ -54,34 +65,38 @@ function specify(charset, spec) {
}
return {
s: s,
i: index,
o: spec.i,
q: spec.q,
s: s
}
}
function preferredCharsets(accept, provided) {
// RFC 2616 sec 14.2: no header = *
accept = parseAcceptCharset(accept === undefined ? '*' : accept || '');
if (provided) {
return provided.map(function(type) {
return [type, getCharsetPriority(type, accept)];
}).filter(function(pair) {
return pair[1].q > 0;
}).sort(function(a, b) {
var pa = a[1];
var pb = b[1];
return (pb.q - pa.q) || (pb.s - pa.s) || (pa.i - pb.i);
}).map(function(pair) {
return pair[0];
});
} else {
return accept.sort(function (a, b) {
// revsort
return (b.q - a.q) || (a.i - b.i);
}).filter(function(type) {
return type.q > 0;
}).map(function(type) {
return type.charset;
var accepts = parseAcceptCharset(accept === undefined ? '*' : accept || '');
if (!provided) {
// sorted list of all charsets
return accepts.filter(isQuality).sort(compareSpecs).map(function getCharset(spec) {
return spec.charset;
});
}
var priorities = provided.map(function getPriority(type, index) {
return getCharsetPriority(type, accepts, index);
});
// sorted list of accepted charsets
return priorities.filter(isQuality).sort(compareSpecs).map(function getCharset(priority) {
return provided[priorities.indexOf(priority)];
});
}
function compareSpecs(a, b) {
return (b.q - a.q) || (b.s - a.s) || (a.o - b.o) || (a.i - b.i) || 0;
}
function isQuality(spec) {
return spec.q > 0;
}

View File

@@ -2,41 +2,36 @@ module.exports = preferredEncodings;
preferredEncodings.preferredEncodings = preferredEncodings;
function parseAcceptEncoding(accept) {
var acceptableEncodings;
var accepts = accept.split(',');
var hasIdentity = false;
var minQuality = 1;
if (accept) {
acceptableEncodings = accept.split(',').map(function(e, i) {
return parseEncoding(e.trim(), i);
});
} else {
acceptableEncodings = [];
for (var i = 0, j = 0; i < accepts.length; i++) {
var encoding = parseEncoding(accepts[i].trim(), i);
if (encoding) {
accepts[j++] = encoding;
hasIdentity = hasIdentity || specify('identity', encoding);
minQuality = Math.min(minQuality, encoding.q || 1);
}
}
if (!acceptableEncodings.some(function(e) {
return e && specify('identity', e);
})) {
if (!hasIdentity) {
/*
* If identity doesn't explicitly appear in the accept-encoding header,
* it's added to the list of acceptable encoding with the lowest q
*
*/
var lowestQ = 1;
for(var i = 0; i < acceptableEncodings.length; i++){
var e = acceptableEncodings[i];
if(e && e.q < lowestQ){
lowestQ = e.q;
}
}
acceptableEncodings.push({
accepts[j++] = {
encoding: 'identity',
q: lowestQ / 2,
});
q: minQuality,
i: i
};
}
return acceptableEncodings.filter(function(e) {
return e;
});
// trim accepts
accepts.length = j;
return accepts;
}
function parseEncoding(s, i) {
@@ -64,19 +59,21 @@ function parseEncoding(s, i) {
};
}
function getEncodingPriority(encoding, accepted) {
return (accepted.map(function(a) {
return specify(encoding, a);
}).filter(Boolean).sort(function (a, b) {
if(a.s == b.s) {
return a.q > b.q ? -1 : 1;
} else {
return a.s > b.s ? -1 : 1;
function getEncodingPriority(encoding, accepted, index) {
var priority = {o: -1, q: 0, s: 0};
for (var i = 0; i < accepted.length; i++) {
var spec = specify(encoding, accepted[i], index);
if (spec && (priority.s - spec.s || priority.q - spec.q || priority.o - spec.o) < 0) {
priority = spec;
}
})[0] || {s: 0, q: 0});
}
return priority;
}
function specify(encoding, spec) {
function specify(encoding, spec, index) {
var s = 0;
if(spec.encoding.toLowerCase() === encoding.toLowerCase()){
s |= 1;
@@ -85,33 +82,37 @@ function specify(encoding, spec) {
}
return {
s: s,
i: index,
o: spec.i,
q: spec.q,
s: s
}
};
function preferredEncodings(accept, provided) {
accept = parseAcceptEncoding(accept || '');
if (provided) {
return provided.map(function(type) {
return [type, getEncodingPriority(type, accept)];
}).filter(function(pair) {
return pair[1].q > 0;
}).sort(function(a, b) {
var pa = a[1];
var pb = b[1];
return (pb.q - pa.q) || (pb.s - pa.s) || (pa.i - pb.i);
}).map(function(pair) {
return pair[0];
});
} else {
return accept.sort(function (a, b) {
// revsort
return (b.q - a.q) || (a.i - b.i);
}).filter(function(type){
return type.q > 0;
}).map(function(type) {
return type.encoding;
var accepts = parseAcceptEncoding(accept || '');
if (!provided) {
// sorted list of all encodings
return accepts.filter(isQuality).sort(compareSpecs).map(function getEncoding(spec) {
return spec.encoding;
});
}
var priorities = provided.map(function getPriority(type, index) {
return getEncodingPriority(type, accepts, index);
});
// sorted list of accepted encodings
return priorities.filter(isQuality).sort(compareSpecs).map(function getEncoding(priority) {
return provided[priorities.indexOf(priority)];
});
}
function compareSpecs(a, b) {
return (b.q - a.q) || (b.s - a.s) || (a.o - b.o) || (a.i - b.i) || 0;
}
function isQuality(spec) {
return spec.q > 0;
}

View File

@@ -2,11 +2,20 @@ module.exports = preferredLanguages;
preferredLanguages.preferredLanguages = preferredLanguages;
function parseAcceptLanguage(accept) {
return accept.split(',').map(function(e, i) {
return parseLanguage(e.trim(), i);
}).filter(function(e) {
return e;
});
var accepts = accept.split(',');
for (var i = 0, j = 0; i < accepts.length; i++) {
var langauge = parseLanguage(accepts[i].trim(), i);
if (langauge) {
accepts[j++] = langauge;
}
}
// trim accepts
accepts.length = j;
return accepts;
}
function parseLanguage(s, i) {
@@ -37,19 +46,21 @@ function parseLanguage(s, i) {
};
}
function getLanguagePriority(language, accepted) {
return (accepted.map(function(a){
return specify(language, a);
}).filter(Boolean).sort(function (a, b) {
if(a.s == b.s) {
return a.q > b.q ? -1 : 1;
} else {
return a.s > b.s ? -1 : 1;
function getLanguagePriority(language, accepted, index) {
var priority = {o: -1, q: 0, s: 0};
for (var i = 0; i < accepted.length; i++) {
var spec = specify(language, accepted[i], index);
if (spec && (priority.s - spec.s || priority.q - spec.q || priority.o - spec.o) < 0) {
priority = spec;
}
})[0] || {s: 0, q: 0});
}
return priority;
}
function specify(language, spec) {
function specify(language, spec, index) {
var p = parseLanguage(language)
if (!p) return null;
var s = 0;
@@ -64,37 +75,38 @@ function specify(language, spec) {
}
return {
s: s,
i: index,
o: spec.i,
q: spec.q,
s: s
}
};
function preferredLanguages(accept, provided) {
// RFC 2616 sec 14.4: no header = *
accept = parseAcceptLanguage(accept === undefined ? '*' : accept || '');
if (provided) {
var accepts = parseAcceptLanguage(accept === undefined ? '*' : accept || '');
var ret = provided.map(function(type) {
return [type, getLanguagePriority(type, accept)];
}).filter(function(pair) {
return pair[1].q > 0;
}).sort(function(a, b) {
var pa = a[1];
var pb = b[1];
return (pb.q - pa.q) || (pb.s - pa.s) || (pa.i - pb.i);
}).map(function(pair) {
return pair[0];
});
return ret;
} else {
return accept.sort(function (a, b) {
// revsort
return (b.q - a.q) || (a.i - b.i);
}).filter(function(type) {
return type.q > 0;
}).map(function(type) {
return type.full;
if (!provided) {
// sorted list of all languages
return accepts.filter(isQuality).sort(compareSpecs).map(function getLanguage(spec) {
return spec.full;
});
}
var priorities = provided.map(function getPriority(type, index) {
return getLanguagePriority(type, accepts, index);
});
// sorted list of accepted languages
return priorities.filter(isQuality).sort(compareSpecs).map(function getLanguage(priority) {
return provided[priorities.indexOf(priority)];
});
}
function compareSpecs(a, b) {
return (b.q - a.q) || (b.s - a.s) || (a.o - b.o) || (a.i - b.i) || 0;
}
function isQuality(spec) {
return spec.q > 0;
}

View File

@@ -1,12 +1,29 @@
/**
* negotiator
* Copyright(c) 2012 Isaac Z. Schlueter
* Copyright(c) 2014 Federico Romero
* Copyright(c) 2014-2015 Douglas Christopher Wilson
* MIT Licensed
*/
module.exports = preferredMediaTypes;
preferredMediaTypes.preferredMediaTypes = preferredMediaTypes;
function parseAccept(accept) {
return accept.split(',').map(function(e, i) {
return parseMediaType(e.trim(), i);
}).filter(function(e) {
return e;
});
var accepts = splitMediaTypes(accept);
for (var i = 0, j = 0; i < accepts.length; i++) {
var mediaType = parseMediaType(accepts[i].trim(), i);
if (mediaType) {
accepts[j++] = mediaType;
}
}
// trim accepts
accepts.length = j;
return accepts;
};
function parseMediaType(s, i) {
@@ -23,8 +40,14 @@ function parseMediaType(s, i) {
params = match[3].split(';').map(function(s) {
return s.trim().split('=');
}).reduce(function (set, p) {
set[p[0]] = p[1];
return set
var name = p[0].toLowerCase();
var value = p[1];
set[name] = value && value[0] === '"' && value[value.length - 1] === '"'
? value.substr(1, value.length - 2)
: value;
return set;
}, params);
if (params.q != null) {
@@ -43,19 +66,21 @@ function parseMediaType(s, i) {
};
}
function getMediaTypePriority(type, accepted) {
return (accepted.map(function(a) {
return specify(type, a);
}).filter(Boolean).sort(function (a, b) {
if(a.s == b.s) {
return a.q > b.q ? -1 : 1;
} else {
return a.s > b.s ? -1 : 1;
function getMediaTypePriority(type, accepted, index) {
var priority = {o: -1, q: 0, s: 0};
for (var i = 0; i < accepted.length; i++) {
var spec = specify(type, accepted[i], index);
if (spec && (priority.s - spec.s || priority.q - spec.q || priority.o - spec.o) < 0) {
priority = spec;
}
})[0] || {s: 0, q: 0});
}
return priority;
}
function specify(type, spec) {
function specify(type, spec, index) {
var p = parseMediaType(type);
var s = 0;
@@ -87,6 +112,8 @@ function specify(type, spec) {
}
return {
i: index,
o: spec.i,
q: spec.q,
s: s,
}
@@ -95,28 +122,58 @@ function specify(type, spec) {
function preferredMediaTypes(accept, provided) {
// RFC 2616 sec 14.2: no header = */*
accept = parseAccept(accept === undefined ? '*/*' : accept || '');
if (provided) {
return provided.map(function(type) {
return [type, getMediaTypePriority(type, accept)];
}).filter(function(pair) {
return pair[1].q > 0;
}).sort(function(a, b) {
var pa = a[1];
var pb = b[1];
return (pb.q - pa.q) || (pb.s - pa.s) || (pa.i - pb.i);
}).map(function(pair) {
return pair[0];
});
var accepts = parseAccept(accept === undefined ? '*/*' : accept || '');
} else {
return accept.sort(function (a, b) {
// revsort
return (b.q - a.q) || (a.i - b.i);
}).filter(function(type) {
return type.q > 0;
}).map(function(type) {
return type.full;
if (!provided) {
// sorted list of all types
return accepts.filter(isQuality).sort(compareSpecs).map(function getType(spec) {
return spec.full;
});
}
var priorities = provided.map(function getPriority(type, index) {
return getMediaTypePriority(type, accepts, index);
});
// sorted list of accepted types
return priorities.filter(isQuality).sort(compareSpecs).map(function getType(priority) {
return provided[priorities.indexOf(priority)];
});
}
function compareSpecs(a, b) {
return (b.q - a.q) || (b.s - a.s) || (a.o - b.o) || (a.i - b.i) || 0;
}
function isQuality(spec) {
return spec.q > 0;
}
function quoteCount(string) {
var count = 0;
var index = 0;
while ((index = string.indexOf('"', index)) !== -1) {
count++;
index++;
}
return count;
}
function splitMediaTypes(accept) {
var accepts = accept.split(',');
for (var i = 1, j = 0; i < accepts.length; i++) {
if (quoteCount(accepts[j]) % 2 == 0) {
accepts[++j] = accepts[i];
} else {
accepts[j] += ',' + accepts[i];
}
}
// trim accepts
accepts.length = j + 1;
return accepts;
}

View File

@@ -1,37 +0,0 @@
module.exports = Negotiator;
Negotiator.Negotiator = Negotiator;
function Negotiator(request) {
if (!(this instanceof Negotiator)) return new Negotiator(request);
this.request = request;
}
var set = { charset: 'accept-charset',
encoding: 'accept-encoding',
language: 'accept-language',
mediaType: 'accept' };
function capitalize(string){
return string.charAt(0).toUpperCase() + string.slice(1);
}
Object.keys(set).forEach(function (k) {
var header = set[k],
method = require('./'+k+'.js'),
singular = k,
plural = k + 's';
Negotiator.prototype[plural] = function (available) {
return method(this.request.headers[header], available);
};
Negotiator.prototype[singular] = function(available) {
var set = this[plural](available);
if (set) return set[0];
};
// Keep preferred* methods for legacy compatibility
Negotiator.prototype['preferred'+capitalize(plural)] = Negotiator.prototype[plural];
Negotiator.prototype['preferred'+capitalize(singular)] = Negotiator.prototype[singular];
})

File diff suppressed because one or more lines are too long

80
server/node_modules/express/node_modules/accepts/package.json generated vendored Executable file → Normal file
View File

@@ -1,24 +1,30 @@
{
"name": "accepts",
"description": "Higher-level content negotiation",
"version": "1.1.4",
"author": {
"name": "Jonathan Ong",
"email": "me@jongleberry.com",
"url": "http://jongleberry.com"
},
"version": "1.2.9",
"contributors": [
{
"name": "Douglas Christopher Wilson",
"email": "doug@somethingdoug.com"
},
{
"name": "Jonathan Ong",
"email": "me@jongleberry.com",
"url": "http://jongleberry.com"
}
],
"license": "MIT",
"repository": {
"type": "git",
"url": "https://github.com/jshttp/accepts"
"url": "git://github.com/jshttp/accepts"
},
"dependencies": {
"mime-types": "~2.0.4",
"negotiator": "0.4.9"
"mime-types": "~2.1.1",
"negotiator": "0.5.3"
},
"devDependencies": {
"istanbul": "~0.3.4",
"mocha": "~2.0.1"
"istanbul": "0.3.14",
"mocha": "~1.21.5"
},
"files": [
"LICENSE",
@@ -26,7 +32,7 @@
"index.js"
],
"engines": {
"node": ">= 0.8"
"node": ">= 0.6"
},
"scripts": {
"test": "mocha --reporter spec --check-leaks --bail test/",
@@ -39,53 +45,15 @@
"accept",
"accepts"
],
"gitHead": "df66414d80f096627b28f137127fce0a851d7900",
"readme": "# accepts\n\n[![NPM Version][npm-image]][npm-url]\n[![NPM Downloads][downloads-image]][downloads-url]\n[![Node.js Version][node-version-image]][node-version-url]\n[![Build Status][travis-image]][travis-url]\n[![Test Coverage][coveralls-image]][coveralls-url]\n\nHigher level content negotiation based on [negotiator](https://www.npmjs.com/package/negotiator). Extracted from [koa](https://www.npmjs.com/package/koa) for general use.\n\nIn addition to negotiator, it allows:\n\n- Allows types as an array or arguments list, ie `(['text/html', 'application/json'])` as well as `('text/html', 'application/json')`.\n- Allows type shorthands such as `json`.\n- Returns `false` when no types match\n- Treats non-existent headers as `*`\n\n## Installation\n\n```sh\nnpm install accepts\n```\n\n## API\n\n```js\nvar accepts = require('accepts')\n```\n\n### accepts(req)\n\nCreate a new `Accepts` object for the given `req`.\n\n#### .charset(charsets)\n\nReturn the first accepted charset. If nothing in `charsets` is accepted,\nthen `false` is returned.\n\n#### .charsets()\n\nReturn the charsets that the request accepts, in the order of the client's\npreference (most preferred first).\n\n#### .encoding(encodings)\n\nReturn the first accepted encoding. If nothing in `encodings` is accepted,\nthen `false` is returned.\n\n#### .encodings()\n\nReturn the encodings that the request accepts, in the order of the client's\npreference (most preferred first).\n\n#### .language(languages)\n\nReturn the first accepted language. If nothing in `languages` is accepted,\nthen `false` is returned.\n\n#### .languages()\n\nReturn the languages that the request accepts, in the order of the client's\npreference (most preferred first).\n\n#### .type(types)\n\nReturn the first accepted type (and it is returned as the same text as what\nappears in the `types` array). If nothing in `types` is accepted, then `false`\nis returned.\n\nThe `types` array can contain full MIME types or file extensions. Any value\nthat is not a full MIME types is passed to `require('mime-types').lookup`.\n\n#### .types()\n\nReturn the types that the request accepts, in the order of the client's\npreference (most preferred first).\n\n## Examples\n\n### Simple type negotiation\n\nThis simple example shows how to use `accepts` to return a different typed\nrespond body based on what the client wants to accept. The server lists it's\npreferences in order and will get back the best match between the client and\nserver.\n\n```js\nvar accepts = require('accepts')\nvar http = require('http')\n\nfunction app(req, res) {\n var accept = accepts(req)\n\n // the order of this list is significant; should be server preferred order\n switch(accept.type(['json', 'html'])) {\n case 'json':\n res.setHeader('Content-Type', 'application/json')\n res.write('{\"hello\":\"world!\"}')\n break\n case 'html':\n res.setHeader('Content-Type', 'text/html')\n res.write('<b>hello, world!</b>')\n break\n default:\n // the fallback is text/plain, so no need to specify it above\n res.setHeader('Content-Type', 'text/plain')\n res.write('hello, world!')\n break\n }\n\n res.end()\n}\n\nhttp.createServer(app).listen(3000)\n```\n\nYou can test this out with the cURL program:\n```sh\ncurl -I -H'Accept: text/html' http://localhost:3000/\n```\n\n## License\n\n[MIT](LICENSE)\n\n[npm-image]: https://img.shields.io/npm/v/accepts.svg\n[npm-url]: https://npmjs.org/package/accepts\n[node-version-image]: https://img.shields.io/node/v/accepts.svg\n[node-version-url]: http://nodejs.org/download/\n[travis-image]: https://img.shields.io/travis/jshttp/accepts/master.svg\n[travis-url]: https://travis-ci.org/jshttp/accepts\n[coveralls-image]: https://img.shields.io/coveralls/jshttp/accepts/master.svg\n[coveralls-url]: https://coveralls.io/r/jshttp/accepts\n[downloads-image]: https://img.shields.io/npm/dm/accepts.svg\n[downloads-url]: https://npmjs.org/package/accepts\n",
"readmeFilename": "README.md",
"bugs": {
"url": "https://github.com/jshttp/accepts/issues"
},
"homepage": "https://github.com/jshttp/accepts",
"_id": "accepts@1.1.4",
"_shasum": "d71c96f7d41d0feda2c38cd14e8a27c04158df4a",
"_from": "accepts@~1.1.3",
"_npmVersion": "1.4.21",
"_npmUser": {
"name": "dougwilson",
"email": "doug@somethingdoug.com"
},
"maintainers": [
{
"name": "jongleberry",
"email": "jonathanrichardong@gmail.com"
},
{
"name": "federomero",
"email": "federomero@gmail.com"
},
{
"name": "dougwilson",
"email": "doug@somethingdoug.com"
},
{
"name": "tjholowaychuk",
"email": "tj@vision-media.ca"
},
{
"name": "shtylman",
"email": "shtylman@gmail.com"
},
{
"name": "mscdex",
"email": "mscdex@mscdex.net"
},
{
"name": "fishrock123",
"email": "fishrock123@rocketmail.com"
}
],
"_id": "accepts@1.2.9",
"dist": {
"shasum": "d71c96f7d41d0feda2c38cd14e8a27c04158df4a",
"tarball": "http://registry.npmjs.org/accepts/-/accepts-1.1.4.tgz"
"shasum": "78c123eccee774e07d283f201b3227b2a6676658"
},
"directories": {},
"_resolved": "https://registry.npmjs.org/accepts/-/accepts-1.1.4.tgz"
"_from": "accepts@~1.2.7",
"_resolved": "https://registry.npmjs.org/accepts/-/accepts-1.2.9.tgz"
}

0
server/node_modules/express/node_modules/content-disposition/HISTORY.md generated vendored Executable file → Normal file
View File

0
server/node_modules/express/node_modules/content-disposition/LICENSE generated vendored Executable file → Normal file
View File

0
server/node_modules/express/node_modules/content-disposition/README.md generated vendored Executable file → Normal file
View File

0
server/node_modules/express/node_modules/content-disposition/index.js generated vendored Executable file → Normal file
View File

27
server/node_modules/express/node_modules/content-disposition/package.json generated vendored Executable file → Normal file

File diff suppressed because one or more lines are too long

0
server/node_modules/express/node_modules/cookie-signature/.npmignore generated vendored Executable file → Normal file
View File

13
server/node_modules/express/node_modules/cookie-signature/History.md generated vendored Executable file → Normal file
View File

@@ -1,9 +1,20 @@
1.0.6 / 2015-02-03
==================
* use `npm test` instead of `make test` to run tests
* clearer assertion messages when checking input
1.0.5 / 2014-09-05
==================
* add license to package.json
1.0.4 / 2014-06-25
==================
* corrected avoidance of timing attacks (thanks @tenbits!)
1.0.3 / 2014-01-28
==================

View File

@@ -1,7 +0,0 @@
test:
@./node_modules/.bin/mocha \
--require should \
--reporter spec
.PHONY: test

0
server/node_modules/express/node_modules/cookie-signature/Readme.md generated vendored Executable file → Normal file
View File

8
server/node_modules/express/node_modules/cookie-signature/index.js generated vendored Executable file → Normal file
View File

@@ -14,8 +14,8 @@ var crypto = require('crypto');
*/
exports.sign = function(val, secret){
if ('string' != typeof val) throw new TypeError('cookie required');
if ('string' != typeof secret) throw new TypeError('secret required');
if ('string' != typeof val) throw new TypeError("Cookie value must be provided as a string.");
if ('string' != typeof secret) throw new TypeError("Secret string must be provided.");
return val + '.' + crypto
.createHmac('sha256', secret)
.update(val)
@@ -34,8 +34,8 @@ exports.sign = function(val, secret){
*/
exports.unsign = function(val, secret){
if ('string' != typeof val) throw new TypeError('cookie required');
if ('string' != typeof secret) throw new TypeError('secret required');
if ('string' != typeof val) throw new TypeError("Signed cookie string must be provided.");
if ('string' != typeof secret) throw new TypeError("Secret string must be provided.");
var str = val.slice(0, val.lastIndexOf('.'))
, mac = exports.sign(str, secret);

37
server/node_modules/express/node_modules/cookie-signature/package.json generated vendored Executable file → Normal file
View File

@@ -1,6 +1,6 @@
{
"name": "cookie-signature",
"version": "1.0.5",
"version": "1.0.6",
"description": "Sign and unsign cookies",
"keywords": [
"cookie",
@@ -21,36 +21,15 @@
"mocha": "*",
"should": "*"
},
"scripts": {
"test": "mocha --require should --reporter spec"
},
"main": "index",
"gitHead": "73ed69b511b3ef47555d71b4ed1deea9e5ed6e1f",
"readme": "\n# cookie-signature\n\n Sign and unsign cookies.\n\n## Example\n\n```js\nvar cookie = require('cookie-signature');\n\nvar val = cookie.sign('hello', 'tobiiscool');\nval.should.equal('hello.DGDUkGlIkCzPz+C0B064FNgHdEjox7ch8tOBGslZ5QI');\n\nvar val = cookie.sign('hello', 'tobiiscool');\ncookie.unsign(val, 'tobiiscool').should.equal('hello');\ncookie.unsign(val, 'luna').should.be.false;\n```\n\n## License \n\n(The MIT License)\n\nCopyright (c) 2012 LearnBoost &lt;tj@learnboost.com&gt;\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.",
"readmeFilename": "Readme.md",
"bugs": {
"url": "https://github.com/visionmedia/node-cookie-signature/issues"
},
"homepage": "https://github.com/visionmedia/node-cookie-signature",
"_id": "cookie-signature@1.0.5",
"scripts": {},
"_shasum": "a122e3f1503eca0f5355795b0711bb2368d450f9",
"_from": "cookie-signature@1.0.5",
"_npmVersion": "1.4.20",
"_npmUser": {
"name": "natevw",
"email": "natevw@yahoo.com"
},
"maintainers": [
{
"name": "tjholowaychuk",
"email": "tj@vision-media.ca"
},
{
"name": "natevw",
"email": "natevw@yahoo.com"
}
],
"dist": {
"shasum": "a122e3f1503eca0f5355795b0711bb2368d450f9",
"tarball": "http://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.5.tgz"
},
"directories": {},
"_resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.5.tgz",
"readme": "ERROR: No README data found!"
"_id": "cookie-signature@1.0.6",
"_from": "cookie-signature@1.0.6"
}

0
server/node_modules/express/node_modules/cookie/.npmignore generated vendored Executable file → Normal file
View File

0
server/node_modules/express/node_modules/cookie/LICENSE generated vendored Executable file → Normal file
View File

0
server/node_modules/express/node_modules/cookie/README.md generated vendored Executable file → Normal file
View File

0
server/node_modules/express/node_modules/cookie/index.js generated vendored Executable file → Normal file
View File

22
server/node_modules/express/node_modules/cookie/package.json generated vendored Executable file → Normal file
View File

@@ -26,29 +26,15 @@
"engines": {
"node": "*"
},
"readme": "# cookie [![Build Status](https://secure.travis-ci.org/defunctzombie/node-cookie.png?branch=master)](http://travis-ci.org/defunctzombie/node-cookie) #\n\ncookie is a basic cookie parser and serializer. It doesn't make assumptions about how you are going to deal with your cookies. It basically just provides a way to read and write the HTTP cookie headers.\n\nSee [RFC6265](http://tools.ietf.org/html/rfc6265) for details about the http header for cookies.\n\n## how?\n\n```\nnpm install cookie\n```\n\n```javascript\nvar cookie = require('cookie');\n\nvar hdr = cookie.serialize('foo', 'bar');\n// hdr = 'foo=bar';\n\nvar cookies = cookie.parse('foo=bar; cat=meow; dog=ruff');\n// cookies = { foo: 'bar', cat: 'meow', dog: 'ruff' };\n```\n\n## more\n\nThe serialize function takes a third parameter, an object, to set cookie options. See the RFC for valid values.\n\n### path\n> cookie path\n\n### expires\n> absolute expiration date for the cookie (Date object)\n\n### maxAge\n> relative max age of the cookie from when the client receives it (seconds)\n\n### domain\n> domain for the cookie\n\n### secure\n> true or false\n\n### httpOnly\n> true or false\n\n",
"readmeFilename": "README.md",
"bugs": {
"url": "https://github.com/shtylman/node-cookie/issues"
},
"homepage": "https://github.com/shtylman/node-cookie",
"_id": "cookie@0.1.2",
"dist": {
"shasum": "72fec3d24e48a3432073d90c12642005061004b1",
"tarball": "http://registry.npmjs.org/cookie/-/cookie-0.1.2.tgz"
"shasum": "1eef0dec7e54f653c66b69d1428efc5e3c52c0ef"
},
"_from": "cookie@0.1.2",
"_npmVersion": "1.4.6",
"_npmUser": {
"name": "shtylman",
"email": "shtylman@gmail.com"
},
"maintainers": [
{
"name": "shtylman",
"email": "shtylman@gmail.com"
}
],
"directories": {},
"_shasum": "72fec3d24e48a3432073d90c12642005061004b1",
"_resolved": "https://registry.npmjs.org/cookie/-/cookie-0.1.2.tgz",
"readme": "ERROR: No README data found!"
"_resolved": "https://registry.npmjs.org/cookie/-/cookie-0.1.2.tgz"
}

0
server/node_modules/express/node_modules/debug/.jshintrc generated vendored Executable file → Normal file
View File

0
server/node_modules/express/node_modules/debug/.npmignore generated vendored Executable file → Normal file
View File

9
server/node_modules/express/node_modules/debug/History.md generated vendored Executable file → Normal file
View File

@@ -1,4 +1,13 @@
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
==================

7
server/node_modules/express/node_modules/debug/Makefile generated vendored Executable file → Normal file
View File

@@ -16,7 +16,7 @@ all: dist/debug.js
install: node_modules
clean:
@rm -rf node_modules dist
@rm -rf dist
dist:
@mkdir -p $@
@@ -26,8 +26,11 @@ dist/debug.js: node_modules browser.js debug.js dist
--standalone debug \
. > $@
distclean: clean
@rm -rf node_modules
node_modules: package.json
@NODE_ENV= $(NPM) install
@touch node_modules
.PHONY: all install clean
.PHONY: all install clean distclean

16
server/node_modules/express/node_modules/debug/Readme.md generated vendored Executable file → Normal file
View File

@@ -53,8 +53,8 @@ setInterval(function(){
#### Windows note
On Windows the environment variable is set using the `set` command.
On Windows the environment variable is set using the `set` command.
```cmd
set DEBUG=*,-not_this
```
@@ -77,7 +77,7 @@ Then, run the program to be debugged as usual.
## 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=*`.
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:".
@@ -147,6 +147,16 @@ error('now goes to stdout via console.info');
log('still goes to stdout, but via console.info now');
```
### Save debug output to a file
You can save all debug statements to a file by piping them.
Example:
```bash
$ DEBUG_FD=3 node your-app.js 3> whatever.log
```
## Authors
- TJ Holowaychuk

2
server/node_modules/express/node_modules/debug/bower.json generated vendored Executable file → Normal file
View File

@@ -1,7 +1,7 @@
{
"name": "visionmedia-debug",
"main": "dist/debug.js",
"version": "2.1.3",
"version": "2.2.0",
"homepage": "https://github.com/visionmedia/debug",
"authors": [
"TJ Holowaychuk <tj@vision-media.ca>"

21
server/node_modules/express/node_modules/debug/browser.js generated vendored Executable file → Normal file
View File

@@ -11,17 +11,10 @@ exports.formatArgs = formatArgs;
exports.save = save;
exports.load = load;
exports.useColors = useColors;
/**
* Use chrome.storage.local if we are in an app
*/
var storage;
if (typeof chrome !== 'undefined' && typeof chrome.storage !== 'undefined')
storage = chrome.storage.local;
else
storage = localstorage();
exports.storage = 'undefined' != typeof chrome
&& 'undefined' != typeof chrome.storage
? chrome.storage.local
: localstorage();
/**
* Colors.
@@ -129,9 +122,9 @@ function log() {
function save(namespaces) {
try {
if (null == namespaces) {
storage.removeItem('debug');
exports.storage.removeItem('debug');
} else {
storage.debug = namespaces;
exports.storage.debug = namespaces;
}
} catch(e) {}
}
@@ -146,7 +139,7 @@ function save(namespaces) {
function load() {
var r;
try {
r = storage.debug;
r = exports.storage.debug;
} catch(e) {}
return r;
}

4
server/node_modules/express/node_modules/debug/component.json generated vendored Executable file → Normal file
View File

@@ -2,7 +2,7 @@
"name": "debug",
"repo": "visionmedia/debug",
"description": "small debugging utility",
"version": "2.1.3",
"version": "2.2.0",
"keywords": [
"debug",
"log",
@@ -14,6 +14,6 @@
"debug.js"
],
"dependencies": {
"rauchg/ms.js": "0.7.0"
"rauchg/ms.js": "0.7.1"
}
}

0
server/node_modules/express/node_modules/debug/debug.js generated vendored Executable file → Normal file
View File

0
server/node_modules/express/node_modules/debug/node.js generated vendored Executable file → Normal file
View File

0
server/node_modules/express/node_modules/debug/node_modules/ms/.npmignore generated vendored Executable file → Normal file
View File

0
server/node_modules/express/node_modules/debug/node_modules/ms/LICENSE generated vendored Executable file → Normal file
View File

2
server/node_modules/express/node_modules/debug/node_modules/ms/README.md generated vendored Executable file → Normal file
View File

@@ -23,7 +23,7 @@ ms(2 * 60000, { long: true }) // "2 minutes"
ms(ms('10 hours'), { long: true }) // "10 hours"
```
- Node/Browser compatible. Published as [`ms`](https://www.npmjs.org/package/ms) in [NPM](nodejs.org/download).
- Node/Browser compatible. Published as [`ms`](https://www.npmjs.org/package/ms) in [NPM](http://nodejs.org/download).
- 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'`).

2
server/node_modules/express/node_modules/debug/node_modules/ms/index.js generated vendored Executable file → Normal file
View File

@@ -38,6 +38,8 @@ module.exports = function(val, options){
*/
function parse(str) {
str = '' + str;
if (str.length > 10000) 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]);

29
server/node_modules/express/node_modules/debug/node_modules/ms/package.json generated vendored Executable file → Normal file
View File

@@ -1,6 +1,6 @@
{
"name": "ms",
"version": "0.7.0",
"version": "0.7.1",
"description": "Tiny ms conversion utility",
"repository": {
"type": "git",
@@ -17,30 +17,15 @@
"ms/index.js": "index.js"
}
},
"gitHead": "1e9cd9b05ef0dc26f765434d2bfee42394376e52",
"readme": "# ms.js: miliseconds conversion utility\n\n```js\nms('2 days') // 172800000\nms('1d') // 86400000\nms('10h') // 36000000\nms('2.5 hrs') // 9000000\nms('2h') // 7200000\nms('1m') // 60000\nms('5s') // 5000\nms('100') // 100\n```\n\n```js\nms(60000) // \"1m\"\nms(2 * 60000) // \"2m\"\nms(ms('10 hours')) // \"10h\"\n```\n\n```js\nms(60000, { long: true }) // \"1 minute\"\nms(2 * 60000, { long: true }) // \"2 minutes\"\nms(ms('10 hours'), { long: true }) // \"10 hours\"\n```\n\n- Node/Browser compatible. Published as [`ms`](https://www.npmjs.org/package/ms) in [NPM](http://nodejs.org/download).\n- If a number is supplied to `ms`, a string with a unit is returned.\n- If a string that contains the number is supplied, it returns it as\na number (e.g: it returns `100` for `'100'`).\n- If you pass a string with a number and a valid unit, the number of\nequivalent ms is returned.\n\n## License\n\nMIT\n",
"readmeFilename": "README.md",
"bugs": {
"url": "https://github.com/guille/ms.js/issues"
},
"homepage": "https://github.com/guille/ms.js",
"_id": "ms@0.7.0",
"scripts": {},
"_shasum": "865be94c2e7397ad8a57da6a633a6e2f30798b83",
"_from": "ms@0.7.0",
"_npmVersion": "1.4.21",
"_npmUser": {
"name": "rauchg",
"email": "rauchg@gmail.com"
},
"maintainers": [
{
"name": "rauchg",
"email": "rauchg@gmail.com"
}
],
"_id": "ms@0.7.1",
"dist": {
"shasum": "865be94c2e7397ad8a57da6a633a6e2f30798b83",
"tarball": "http://registry.npmjs.org/ms/-/ms-0.7.0.tgz"
"shasum": "71c4b4174f5b6aa0101eb56e733ee5f6b4c1a917"
},
"directories": {},
"_resolved": "https://registry.npmjs.org/ms/-/ms-0.7.0.tgz"
"_from": "ms@0.7.1",
"_resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz"
}

36
server/node_modules/express/node_modules/debug/package.json generated vendored Executable file → Normal file

File diff suppressed because one or more lines are too long

0
server/node_modules/express/node_modules/depd/History.md generated vendored Executable file → Normal file
View File

0
server/node_modules/express/node_modules/depd/LICENSE generated vendored Executable file → Normal file
View File

0
server/node_modules/express/node_modules/depd/Readme.md generated vendored Executable file → Normal file
View File

0
server/node_modules/express/node_modules/depd/index.js generated vendored Executable file → Normal file
View File

0
server/node_modules/express/node_modules/depd/lib/compat/buffer-concat.js generated vendored Executable file → Normal file
View File

0
server/node_modules/express/node_modules/depd/lib/compat/callsite-tostring.js generated vendored Executable file → Normal file
View File

0
server/node_modules/express/node_modules/depd/lib/compat/index.js generated vendored Executable file → Normal file
View File

26
server/node_modules/express/node_modules/depd/package.json generated vendored Executable file → Normal file

File diff suppressed because one or more lines are too long

0
server/node_modules/express/node_modules/escape-html/.npmignore generated vendored Executable file → Normal file
View File

0
server/node_modules/express/node_modules/escape-html/Makefile generated vendored Executable file → Normal file
View File

0
server/node_modules/express/node_modules/escape-html/Readme.md generated vendored Executable file → Normal file
View File

0
server/node_modules/express/node_modules/escape-html/component.json generated vendored Executable file → Normal file
View File

0
server/node_modules/express/node_modules/escape-html/index.js generated vendored Executable file → Normal file
View File

22
server/node_modules/express/node_modules/escape-html/package.json generated vendored Executable file → Normal file
View File

@@ -18,29 +18,15 @@
"type": "git",
"url": "https://github.com/component/escape-html.git"
},
"readme": "\n# escape-html\n\n Escape HTML entities\n\n## Example\n\n```js\nvar escape = require('escape-html');\nescape(str);\n```\n\n## License\n\n MIT",
"readmeFilename": "Readme.md",
"bugs": {
"url": "https://github.com/component/escape-html/issues"
},
"homepage": "https://github.com/component/escape-html",
"_id": "escape-html@1.0.1",
"dist": {
"shasum": "181a286ead397a39a92857cfb1d43052e356bff0",
"tarball": "http://registry.npmjs.org/escape-html/-/escape-html-1.0.1.tgz"
"shasum": "777cf0da92d25aa00e7a1583bcd29fd16d71343a"
},
"_from": "escape-html@1.0.1",
"_npmVersion": "1.3.15",
"_npmUser": {
"name": "tjholowaychuk",
"email": "tj@vision-media.ca"
},
"maintainers": [
{
"name": "tjholowaychuk",
"email": "tj@vision-media.ca"
}
],
"directories": {},
"_shasum": "181a286ead397a39a92857cfb1d43052e356bff0",
"_resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.1.tgz",
"readme": "ERROR: No README data found!"
"_resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.1.tgz"
}

7
server/node_modules/express/node_modules/etag/HISTORY.md generated vendored Executable file → Normal file
View File

@@ -1,3 +1,10 @@
1.6.0 / 2015-05-10
==================
* Improve support for JXcore
* Remove requirement of `atime` in the stats object
* Support "fake" stats objects in environments without `fs`
1.5.1 / 2014-11-19
==================

2
server/node_modules/express/node_modules/etag/LICENSE generated vendored Executable file → Normal file
View File

@@ -1,6 +1,6 @@
(The MIT License)
Copyright (c) 2014 Douglas Christopher Wilson
Copyright (c) 2014-2015 Douglas Christopher Wilson
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the

21
server/node_modules/express/node_modules/etag/README.md generated vendored Executable file → Normal file
View File

@@ -51,9 +51,18 @@ $ npm test
```bash
$ npm run-script bench
> etag@1.5.1 bench nodejs-etag
> etag@1.6.0 bench nodejs-etag
> node benchmark/index.js
http_parser@1.0
node@0.10.33
v8@3.14.5.9
ares@1.9.0-DEV
uv@0.10.29
zlib@1.2.3
modules@11
openssl@1.0.1j
> node benchmark/body0-100b.js
100B body
@@ -129,13 +138,13 @@ $ npm run-script bench
[MIT](LICENSE)
[npm-image]: https://img.shields.io/npm/v/etag.svg?style=flat
[npm-image]: https://img.shields.io/npm/v/etag.svg
[npm-url]: https://npmjs.org/package/etag
[node-version-image]: https://img.shields.io/node/v/etag.svg?style=flat
[node-version-image]: https://img.shields.io/node/v/etag.svg
[node-version-url]: http://nodejs.org/download/
[travis-image]: https://img.shields.io/travis/jshttp/etag.svg?style=flat
[travis-image]: https://img.shields.io/travis/jshttp/etag/master.svg
[travis-url]: https://travis-ci.org/jshttp/etag
[coveralls-image]: https://img.shields.io/coveralls/jshttp/etag.svg?style=flat
[coveralls-image]: https://img.shields.io/coveralls/jshttp/etag/master.svg
[coveralls-url]: https://coveralls.io/r/jshttp/etag?branch=master
[downloads-image]: https://img.shields.io/npm/dm/etag.svg?style=flat
[downloads-image]: https://img.shields.io/npm/dm/etag.svg
[downloads-url]: https://npmjs.org/package/etag

11
server/node_modules/express/node_modules/etag/index.js generated vendored Executable file → Normal file
View File

@@ -1,6 +1,6 @@
/*!
* etag
* Copyright(c) 2014 Douglas Christopher Wilson
* Copyright(c) 2014-2015 Douglas Christopher Wilson
* MIT Licensed
*/
@@ -73,18 +73,13 @@ function etag(entity, options) {
*/
function isstats(obj) {
// not even an object
if (obj === null || typeof obj !== 'object') {
return false
}
// genuine fs.Stats
if (obj instanceof Stats) {
if (typeof Stats === 'function' && obj instanceof Stats) {
return true
}
// quack quack
return 'atime' in obj && toString.call(obj.atime) === '[object Date]'
return obj && typeof obj === 'object'
&& 'ctime' in obj && toString.call(obj.ctime) === '[object Date]'
&& 'mtime' in obj && toString.call(obj.mtime) === '[object Date]'
&& 'ino' in obj && typeof obj.ino === 'number'

0
server/node_modules/express/node_modules/etag/node_modules/crc/.npmignore generated vendored Executable file → Normal file
View File

0
server/node_modules/express/node_modules/etag/node_modules/crc/LICENSE generated vendored Executable file → Normal file
View File

0
server/node_modules/express/node_modules/etag/node_modules/crc/README.md generated vendored Executable file → Normal file
View File

0
server/node_modules/express/node_modules/etag/node_modules/crc/lib/crc.js generated vendored Executable file → Normal file
View File

0
server/node_modules/express/node_modules/etag/node_modules/crc/lib/crc1.js generated vendored Executable file → Normal file
View File

0
server/node_modules/express/node_modules/etag/node_modules/crc/lib/crc16.js generated vendored Executable file → Normal file
View File

0
server/node_modules/express/node_modules/etag/node_modules/crc/lib/crc16_ccitt.js generated vendored Executable file → Normal file
View File

0
server/node_modules/express/node_modules/etag/node_modules/crc/lib/crc16_modbus.js generated vendored Executable file → Normal file
View File

0
server/node_modules/express/node_modules/etag/node_modules/crc/lib/crc24.js generated vendored Executable file → Normal file
View File

0
server/node_modules/express/node_modules/etag/node_modules/crc/lib/crc32.js generated vendored Executable file → Normal file
View File

0
server/node_modules/express/node_modules/etag/node_modules/crc/lib/crc8.js generated vendored Executable file → Normal file
View File

0
server/node_modules/express/node_modules/etag/node_modules/crc/lib/crc8_1wire.js generated vendored Executable file → Normal file
View File

0
server/node_modules/express/node_modules/etag/node_modules/crc/lib/create.js generated vendored Executable file → Normal file
View File

0
server/node_modules/express/node_modules/etag/node_modules/crc/lib/hex.js generated vendored Executable file → Normal file
View File

0
server/node_modules/express/node_modules/etag/node_modules/crc/lib/index.js generated vendored Executable file → Normal file
View File

21
server/node_modules/express/node_modules/etag/node_modules/crc/package.json generated vendored Executable file → Normal file
View File

@@ -33,25 +33,12 @@
"url": "git://github.com/alexgorbatchev/node-crc.git"
},
"license": "MIT",
"gitHead": "71caf362b061992bfe4ca8706ee264e764d2e88e",
"readme": "# crc\n\n[![GitTip](http://img.shields.io/gittip/alexgorbatchev.svg?style=flat)](https://www.gittip.com/alexgorbatchev/)\n[![Dependency status](http://img.shields.io/david/alexgorbatchev/node-crc.svg?style=flat)](https://david-dm.org/alexgorbatchev/node-crc)\n[![devDependency Status](http://img.shields.io/david/dev/alexgorbatchev/node-crc.svg?style=flat)](https://david-dm.org/alexgorbatchev/node-crc#info=devDependencies)\n[![Build Status](http://img.shields.io/travis/alexgorbatchev/node-crc.svg?style=flat&branch=master)](https://travis-ci.org/alexgorbatchev/node-crc)\n\n[![NPM](https://nodei.co/npm/crc.svg?style=flat)](https://npmjs.org/package/node-crc)\n\nModule for calculating Cyclic Redundancy Check (CRC).\n\n## Features\n\n* Full test suite comparing values against reference `pycrc` implementation.\n* Version 3.x is 3x to 4x faster than version 2.x.\n* Pure JavaScript implementation, no dependencies.\n* Provides CRC Tables for optimized calculations.\n* Provides support for the following CRC algorithms:\n * CRC1 `crc.crc1(…)`\n * CRC8 `crc.crc8(…)`\n * CRC8 1-Wire `crc.crc81wire(…)`\n * CRC16 `crc.crc16(…)`\n * CRC16 CCITT `crc.crc16ccitt(…)`\n * CRC16 Modbus `crc.crc16modbus(…)`\n * CRC24 `crc.crc24(…)`\n * CRC32 `crc.crc32(…)`\n\n## IMPORTANT\n\nIf you've used `crc` module prior to version 2.x, you might have some inconsistentcies with the current implementation because it relied on very old code and wasn't checked against reference implementation. If you upgrading from 1.x, please take special care.\n\n## Support\n\n<a href=\"https://blockchain.info/address/1CZyBREeHTmy8C5zVGHZHPwqBuWFmEuUCQ\"><img src=\"bitcoin.png\" width=\"150\" align=\"right\"/></a> Please support me on [GitTip](https://www.gittip.com/alexgorbatchev/). I've spend days developing and grooming this module and hope to spend more time. If you have bitcoin, please use the QR code or this wallet address [`1CZyBREeHTmy8C5zVGHZHPwqBuWFmEuUCQ`](https://blockchain.info/address/1CZyBREeHTmy8C5zVGHZHPwqBuWFmEuUCQ):\n\n## Installation\n\n npm install crc\n\n## Running tests\n\n $ npm install\n $ npm test\n\n## Usage Example\n\nCalculate a CRC32:\n\n var crc = require('crc');\n\n crc.crc32('hello').toString(16);\n # => \"3610a686\"\n\nCalculate a CRC32 of a file:\n\n crc.crc32(fs.readFileSync('README.md', 'utf8')).toString(16);\n # => \"127ad531\"\n\nOr using a `Buffer`:\n\n crc.crc32(fs.readFileSync('README.md')).toString(16);\n # => \"127ad531\"\n\nIncrementally calculate a CRC32:\n\n value = crc32('one');\n value = crc32('two', value);\n value = crc32('three', value);\n value.toString(16);\n # => \"09e1c092\"\n\n## Thanks!\n\n[pycrc](http://www.tty1.net/pycrc/) library is which the source of all of the CRC tables.\n\n# License\n\nThe MIT License (MIT)\n\nCopyright (c) 2014 Alex Gorbatchev\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n",
"readmeFilename": "README.md",
"_id": "crc@3.2.1",
"_shasum": "5d9c8fb77a245cd5eca291e5d2d005334bab0082",
"_from": "crc@3.2.1",
"_npmVersion": "1.4.13",
"_npmUser": {
"name": "alexgorbatchev",
"email": "alex.gorbatchev@gmail.com"
},
"maintainers": [
{
"name": "alexgorbatchev",
"email": "alex.gorbatchev@gmail.com"
}
],
"dist": {
"shasum": "5d9c8fb77a245cd5eca291e5d2d005334bab0082",
"tarball": "http://registry.npmjs.org/crc/-/crc-3.2.1.tgz"
"shasum": "b99ed5c7165d6ad1bd269aa2274f28dd0ba2df01"
},
"directories": {},
"_from": "crc@3.2.1",
"_resolved": "https://registry.npmjs.org/crc/-/crc-3.2.1.tgz"
}

35
server/node_modules/express/node_modules/etag/package.json generated vendored Executable file → Normal file
View File

@@ -1,7 +1,7 @@
{
"name": "etag",
"description": "Create simple ETags",
"version": "1.5.1",
"version": "1.6.0",
"contributors": [
{
"name": "Douglas Christopher Wilson",
@@ -20,7 +20,7 @@
],
"repository": {
"type": "git",
"url": "https://github.com/jshttp/etag"
"url": "git://github.com/jshttp/etag"
},
"dependencies": {
"crc": "3.2.1"
@@ -28,13 +28,14 @@
"devDependencies": {
"benchmark": "1.0.0",
"beautify-benchmark": "0.2.4",
"istanbul": "0.3.2",
"istanbul": "0.3.9",
"mocha": "~1.21.4",
"seedrandom": "~2.3.6"
"seedrandom": "2.3.11"
},
"files": [
"LICENSE",
"HISTORY.md",
"README.md",
"index.js"
],
"engines": {
@@ -46,29 +47,11 @@
"test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --reporter dot --check-leaks test/",
"test-travis": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --reporter spec --check-leaks test/"
},
"gitHead": "27335e2265388109e50a9f037452081dc8a8260f",
"readme": "# etag\n\n[![NPM Version][npm-image]][npm-url]\n[![NPM Downloads][downloads-image]][downloads-url]\n[![Node.js Version][node-version-image]][node-version-url]\n[![Build Status][travis-image]][travis-url]\n[![Test Coverage][coveralls-image]][coveralls-url]\n\nCreate simple ETags\n\n## Installation\n\n```sh\n$ npm install etag\n```\n\n## API\n\n```js\nvar etag = require('etag')\n```\n\n### etag(entity, [options])\n\nGenerate a strong ETag for the given entity. This should be the complete\nbody of the entity. Strings, `Buffer`s, and `fs.Stats` are accepted. By\ndefault, a strong ETag is generated except for `fs.Stats`, which will\ngenerate a weak ETag (this can be overwritten by `options.weak`).\n\n```js\nres.setHeader('ETag', etag(body))\n```\n\n#### Options\n\n`etag` accepts these properties in the options object.\n\n##### weak\n\nSpecifies if a \"strong\" or a \"weak\" ETag will be generated. The ETag can only\nreally be a strong as the given input.\n\n## Testing\n\n```sh\n$ npm test\n```\n\n## Benchmark\n\n```bash\n$ npm run-script bench\n\n> etag@1.6.0 bench nodejs-etag\n> node benchmark/index.js\n\n http_parser@1.0\n node@0.10.33\n v8@3.14.5.9\n ares@1.9.0-DEV\n uv@0.10.29\n zlib@1.2.3\n modules@11\n openssl@1.0.1j\n\n> node benchmark/body0-100b.js\n\n 100B body\n\n 1 test completed.\n 2 tests completed.\n 3 tests completed.\n 4 tests completed.\n\n buffer - strong x 425,007 ops/sec ±1.47% (184 runs sampled)\n* buffer - weak x 1,009,859 ops/sec ±0.18% (197 runs sampled)\n string - strong x 442,096 ops/sec ±1.20% (181 runs sampled)\n string - weak x 325,063 ops/sec ±0.31% (192 runs sampled)\n\n> node benchmark/body1-1kb.js\n\n 1KB body\n\n 1 test completed.\n 2 tests completed.\n 3 tests completed.\n 4 tests completed.\n\n buffer - strong x 263,069 ops/sec ±1.60% (190 runs sampled)\n* buffer - weak x 295,732 ops/sec ±0.43% (199 runs sampled)\n string - strong x 274,822 ops/sec ±1.15% (191 runs sampled)\n string - weak x 169,473 ops/sec ±1.59% (194 runs sampled)\n\n> node benchmark/body2-5kb.js\n\n 5KB body\n\n 1 test completed.\n 2 tests completed.\n 3 tests completed.\n 4 tests completed.\n\n buffer - strong x 104,299 ops/sec ±0.60% (193 runs sampled)\n* buffer - weak x 108,126 ops/sec ±0.65% (196 runs sampled)\n string - strong x 101,736 ops/sec ±0.78% (194 runs sampled)\n string - weak x 101,266 ops/sec ±0.85% (192 runs sampled)\n\n> node benchmark/body3-10kb.js\n\n 10KB body\n\n 1 test completed.\n 2 tests completed.\n 3 tests completed.\n 4 tests completed.\n\n buffer - strong x 59,007 ops/sec ±0.29% (198 runs sampled)\n* buffer - weak x 60,968 ops/sec ±0.48% (197 runs sampled)\n string - strong x 51,873 ops/sec ±1.78% (178 runs sampled)\n string - weak x 52,307 ops/sec ±2.63% (193 runs sampled)\n\n> node benchmark/body4-100kb.js\n\n 100KB body\n\n 1 test completed.\n 2 tests completed.\n 3 tests completed.\n 4 tests completed.\n\n buffer - strong x 6,712 ops/sec ±0.11% (198 runs sampled)\n* buffer - weak x 6,716 ops/sec ±0.50% (196 runs sampled)\n string - strong x 6,397 ops/sec ±0.36% (196 runs sampled)\n string - weak x 6,635 ops/sec ±0.15% (198 runs sampled)\n```\n\n## License\n\n[MIT](LICENSE)\n\n[npm-image]: https://img.shields.io/npm/v/etag.svg\n[npm-url]: https://npmjs.org/package/etag\n[node-version-image]: https://img.shields.io/node/v/etag.svg\n[node-version-url]: http://nodejs.org/download/\n[travis-image]: https://img.shields.io/travis/jshttp/etag/master.svg\n[travis-url]: https://travis-ci.org/jshttp/etag\n[coveralls-image]: https://img.shields.io/coveralls/jshttp/etag/master.svg\n[coveralls-url]: https://coveralls.io/r/jshttp/etag?branch=master\n[downloads-image]: https://img.shields.io/npm/dm/etag.svg\n[downloads-url]: https://npmjs.org/package/etag\n",
"readmeFilename": "README.md",
"bugs": {
"url": "https://github.com/jshttp/etag/issues"
},
"homepage": "https://github.com/jshttp/etag",
"_id": "etag@1.5.1",
"_shasum": "54c50de04ee42695562925ac566588291be7e9ea",
"_from": "etag@~1.5.0",
"_npmVersion": "1.4.21",
"_npmUser": {
"name": "dougwilson",
"email": "doug@somethingdoug.com"
},
"maintainers": [
{
"name": "dougwilson",
"email": "doug@somethingdoug.com"
}
],
"dist": {
"shasum": "54c50de04ee42695562925ac566588291be7e9ea",
"tarball": "http://registry.npmjs.org/etag/-/etag-1.5.1.tgz"
},
"directories": {},
"_resolved": "https://registry.npmjs.org/etag/-/etag-1.5.1.tgz"
"_id": "etag@1.6.0",
"_from": "etag@~1.6.0"
}

25
server/node_modules/express/node_modules/finalhandler/HISTORY.md generated vendored Executable file → Normal file
View File

@@ -1,3 +1,28 @@
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
==================

0
server/node_modules/express/node_modules/finalhandler/LICENSE generated vendored Executable file → Normal file
View File

10
server/node_modules/express/node_modules/finalhandler/README.md generated vendored Executable file → Normal file
View File

@@ -121,13 +121,13 @@ function logerror(err) {
[MIT](LICENSE)
[npm-image]: https://img.shields.io/npm/v/finalhandler.svg?style=flat
[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?style=flat
[node-image]: https://img.shields.io/node/v/finalhandler.svg
[node-url]: http://nodejs.org/download/
[travis-image]: https://img.shields.io/travis/pillarjs/finalhandler.svg?style=flat
[travis-image]: https://img.shields.io/travis/pillarjs/finalhandler.svg
[travis-url]: https://travis-ci.org/pillarjs/finalhandler
[coveralls-image]: https://img.shields.io/coveralls/pillarjs/finalhandler.svg?style=flat
[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?style=flat
[downloads-image]: https://img.shields.io/npm/dm/finalhandler.svg
[downloads-url]: https://npmjs.org/package/finalhandler

0
server/node_modules/express/node_modules/finalhandler/index.js generated vendored Executable file → Normal file
View File

57
server/node_modules/express/node_modules/finalhandler/package.json generated vendored Executable file → Normal file
View File

@@ -1,7 +1,7 @@
{
"name": "finalhandler",
"description": "Node.js final http responder",
"version": "0.3.2",
"version": "0.3.6",
"author": {
"name": "Douglas Christopher Wilson",
"email": "doug@somethingdoug.com"
@@ -9,19 +9,18 @@
"license": "MIT",
"repository": {
"type": "git",
"url": "https://github.com/pillarjs/finalhandler"
"url": "git://github.com/pillarjs/finalhandler"
},
"dependencies": {
"debug": "~2.1.0",
"debug": "~2.2.0",
"escape-html": "1.0.1",
"on-finished": "~2.1.1"
"on-finished": "~2.2.1"
},
"devDependencies": {
"istanbul": "0.3.2",
"mocha": "~2.0.0",
"istanbul": "0.3.9",
"mocha": "~2.2.4",
"readable-stream": "~1.0.33",
"should": "~4.1.0",
"supertest": "~0.14.0"
"supertest": "~0.15.0"
},
"files": [
"LICENSE",
@@ -36,45 +35,15 @@
"test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --reporter dot --check-leaks test/",
"test-travis": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --reporter spec --check-leaks test/"
},
"gitHead": "1dc292faf576fade3b0218caab39060f4da5fe9c",
"readme": "# finalhandler\n\n[![NPM Version][npm-image]][npm-url]\n[![NPM Downloads][downloads-image]][downloads-url]\n[![Node.js Version][node-image]][node-url]\n[![Build Status][travis-image]][travis-url]\n[![Test Coverage][coveralls-image]][coveralls-url]\n\nNode.js function to invoke as the final step to respond to HTTP request.\n\n## Installation\n\n```sh\n$ npm install finalhandler\n```\n\n## API\n\n```js\nvar finalhandler = require('finalhandler')\n```\n\n### finalhandler(req, res, [options])\n\nReturns function to be invoked as the final step for the given `req` and `res`.\nThis function is to be invoked as `fn(err)`. If `err` is falsy, the handler will\nwrite out a 404 response to the `res`. If it is truthy, an error response will\nbe written out to the `res`, and `res.statusCode` is set from `err.status`.\n\nThe final handler will also unpipe anything from `req` when it is invoked.\n\n#### options.env\n\nBy default, the environment is determined by `NODE_ENV` variable, but it can be\noverridden by this option.\n\n#### options.onerror\n\nProvide a function to be called with the `err` when it exists. Can be used for\nwriting errors to a central location without excessive function generation. Called\nas `onerror(err, req, res)`.\n\n## Examples\n\n### always 404\n\n```js\nvar finalhandler = require('finalhandler')\nvar http = require('http')\n\nvar server = http.createServer(function (req, res) {\n var done = finalhandler(req, res)\n done()\n})\n\nserver.listen(3000)\n```\n\n### perform simple action\n\n```js\nvar finalhandler = require('finalhandler')\nvar fs = require('fs')\nvar http = require('http')\n\nvar server = http.createServer(function (req, res) {\n var done = finalhandler(req, res)\n\n fs.readFile('index.html', function (err, buf) {\n if (err) return done(err)\n res.setHeader('Content-Type', 'text/html')\n res.end(buf)\n })\n})\n\nserver.listen(3000)\n```\n\n### use with middleware-style functions\n\n```js\nvar finalhandler = require('finalhandler')\nvar http = require('http')\nvar serveStatic = require('serve-static')\n\nvar serve = serveStatic('public')\n\nvar server = http.createServer(function (req, res) {\n var done = finalhandler(req, res)\n serve(req, res, done)\n})\n\nserver.listen(3000)\n```\n\n### keep log of all errors\n\n```js\nvar finalhandler = require('finalhandler')\nvar fs = require('fs')\nvar http = require('http')\n\nvar server = http.createServer(function (req, res) {\n var done = finalhandler(req, res, {onerror: logerror})\n\n fs.readFile('index.html', function (err, buf) {\n if (err) return done(err)\n res.setHeader('Content-Type', 'text/html')\n res.end(buf)\n })\n})\n\nserver.listen(3000)\n\nfunction logerror(err) {\n console.error(err.stack || err.toString())\n}\n```\n\n## License\n\n[MIT](LICENSE)\n\n[npm-image]: https://img.shields.io/npm/v/finalhandler.svg\n[npm-url]: https://npmjs.org/package/finalhandler\n[node-image]: https://img.shields.io/node/v/finalhandler.svg\n[node-url]: http://nodejs.org/download/\n[travis-image]: https://img.shields.io/travis/pillarjs/finalhandler.svg\n[travis-url]: https://travis-ci.org/pillarjs/finalhandler\n[coveralls-image]: https://img.shields.io/coveralls/pillarjs/finalhandler.svg\n[coveralls-url]: https://coveralls.io/r/pillarjs/finalhandler?branch=master\n[downloads-image]: https://img.shields.io/npm/dm/finalhandler.svg\n[downloads-url]: https://npmjs.org/package/finalhandler\n",
"readmeFilename": "README.md",
"bugs": {
"url": "https://github.com/pillarjs/finalhandler/issues"
},
"homepage": "https://github.com/pillarjs/finalhandler",
"_id": "finalhandler@0.3.2",
"_shasum": "7b389b0fd3647a6f90bd564e22624bf8a4a77fb5",
"_from": "finalhandler@0.3.2",
"_npmVersion": "1.4.21",
"_npmUser": {
"name": "dougwilson",
"email": "doug@somethingdoug.com"
},
"maintainers": [
{
"name": "dougwilson",
"email": "doug@somethingdoug.com"
},
{
"name": "jongleberry",
"email": "jonathanrichardong@gmail.com"
},
{
"name": "shtylman",
"email": "shtylman@gmail.com"
},
{
"name": "tjholowaychuk",
"email": "tj@vision-media.ca"
},
{
"name": "fishrock123",
"email": "fishrock123@rocketmail.com"
}
],
"_id": "finalhandler@0.3.6",
"dist": {
"shasum": "7b389b0fd3647a6f90bd564e22624bf8a4a77fb5",
"tarball": "http://registry.npmjs.org/finalhandler/-/finalhandler-0.3.2.tgz"
"shasum": "bff149310534a66de70db21bfe568af11f10a434"
},
"directories": {},
"_resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-0.3.2.tgz"
"_from": "finalhandler@0.3.6",
"_resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-0.3.6.tgz"
}

0
server/node_modules/express/node_modules/fresh/HISTORY.md generated vendored Executable file → Normal file
View File

0
server/node_modules/express/node_modules/fresh/LICENSE generated vendored Executable file → Normal file
View File

0
server/node_modules/express/node_modules/fresh/README.md generated vendored Executable file → Normal file
View File

0
server/node_modules/express/node_modules/fresh/index.js generated vendored Executable file → Normal file
View File

Some files were not shown because too many files have changed in this diff Show More