forked from dachan/dach
		
	a lot of changes
This commit is contained in:
		
							
								
								
									
										39
									
								
								node_modules/vary/HISTORY.md
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										39
									
								
								node_modules/vary/HISTORY.md
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,39 @@
 | 
			
		||||
1.1.2 / 2017-09-23
 | 
			
		||||
==================
 | 
			
		||||
 | 
			
		||||
  * perf: improve header token parsing speed
 | 
			
		||||
 | 
			
		||||
1.1.1 / 2017-03-20
 | 
			
		||||
==================
 | 
			
		||||
 | 
			
		||||
  * perf: hoist regular expression
 | 
			
		||||
 | 
			
		||||
1.1.0 / 2015-09-29
 | 
			
		||||
==================
 | 
			
		||||
 | 
			
		||||
  * Only accept valid field names in the `field` argument
 | 
			
		||||
    - Ensures the resulting string is a valid HTTP header value
 | 
			
		||||
 | 
			
		||||
1.0.1 / 2015-07-08
 | 
			
		||||
==================
 | 
			
		||||
 | 
			
		||||
  * Fix setting empty header from empty `field`
 | 
			
		||||
  * perf: enable strict mode
 | 
			
		||||
  * perf: remove argument reassignments
 | 
			
		||||
 | 
			
		||||
1.0.0 / 2014-08-10
 | 
			
		||||
==================
 | 
			
		||||
 | 
			
		||||
  * Accept valid `Vary` header string as `field`
 | 
			
		||||
  * Add `vary.append` for low-level string manipulation
 | 
			
		||||
  * Move to `jshttp` orgainzation
 | 
			
		||||
 | 
			
		||||
0.1.0 / 2014-06-05
 | 
			
		||||
==================
 | 
			
		||||
 | 
			
		||||
  * Support array of fields to set
 | 
			
		||||
 | 
			
		||||
0.0.0 / 2014-06-04
 | 
			
		||||
==================
 | 
			
		||||
 | 
			
		||||
  * Initial release
 | 
			
		||||
							
								
								
									
										22
									
								
								node_modules/vary/LICENSE
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										22
									
								
								node_modules/vary/LICENSE
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,22 @@
 | 
			
		||||
(The MIT License)
 | 
			
		||||
 | 
			
		||||
Copyright (c) 2014-2017 Douglas Christopher Wilson
 | 
			
		||||
 | 
			
		||||
Permission is hereby granted, free of charge, to any person obtaining
 | 
			
		||||
a copy of this software and associated documentation files (the
 | 
			
		||||
'Software'), to deal in the Software without restriction, including
 | 
			
		||||
without limitation the rights to use, copy, modify, merge, publish,
 | 
			
		||||
distribute, sublicense, and/or sell copies of the Software, and to
 | 
			
		||||
permit persons to whom the Software is furnished to do so, subject to
 | 
			
		||||
the following conditions:
 | 
			
		||||
 | 
			
		||||
The above copyright notice and this permission notice shall be
 | 
			
		||||
included in all copies or substantial portions of the Software.
 | 
			
		||||
 | 
			
		||||
THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
 | 
			
		||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 | 
			
		||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
 | 
			
		||||
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
 | 
			
		||||
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
 | 
			
		||||
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
 | 
			
		||||
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 | 
			
		||||
							
								
								
									
										101
									
								
								node_modules/vary/README.md
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										101
									
								
								node_modules/vary/README.md
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,101 @@
 | 
			
		||||
# vary
 | 
			
		||||
 | 
			
		||||
[![NPM Version][npm-image]][npm-url]
 | 
			
		||||
[![NPM Downloads][downloads-image]][downloads-url]
 | 
			
		||||
[![Node.js Version][node-version-image]][node-version-url]
 | 
			
		||||
[![Build Status][travis-image]][travis-url]
 | 
			
		||||
[![Test Coverage][coveralls-image]][coveralls-url]
 | 
			
		||||
 | 
			
		||||
Manipulate the HTTP Vary header
 | 
			
		||||
 | 
			
		||||
## Installation
 | 
			
		||||
 | 
			
		||||
This is a [Node.js](https://nodejs.org/en/) module available through the
 | 
			
		||||
[npm registry](https://www.npmjs.com/). Installation is done using the
 | 
			
		||||
[`npm install` command](https://docs.npmjs.com/getting-started/installing-npm-packages-locally): 
 | 
			
		||||
 | 
			
		||||
```sh
 | 
			
		||||
$ npm install vary
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
## API
 | 
			
		||||
 | 
			
		||||
<!-- eslint-disable no-unused-vars -->
 | 
			
		||||
 | 
			
		||||
```js
 | 
			
		||||
var vary = require('vary')
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
### vary(res, field)
 | 
			
		||||
 | 
			
		||||
Adds the given header `field` to the `Vary` response header of `res`.
 | 
			
		||||
This can be a string of a single field, a string of a valid `Vary`
 | 
			
		||||
header, or an array of multiple fields.
 | 
			
		||||
 | 
			
		||||
This will append the header if not already listed, otherwise leaves
 | 
			
		||||
it listed in the current location.
 | 
			
		||||
 | 
			
		||||
<!-- eslint-disable no-undef -->
 | 
			
		||||
 | 
			
		||||
```js
 | 
			
		||||
// Append "Origin" to the Vary header of the response
 | 
			
		||||
vary(res, 'Origin')
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
### vary.append(header, field)
 | 
			
		||||
 | 
			
		||||
Adds the given header `field` to the `Vary` response header string `header`.
 | 
			
		||||
This can be a string of a single field, a string of a valid `Vary` header,
 | 
			
		||||
or an array of multiple fields.
 | 
			
		||||
 | 
			
		||||
This will append the header if not already listed, otherwise leaves
 | 
			
		||||
it listed in the current location. The new header string is returned.
 | 
			
		||||
 | 
			
		||||
<!-- eslint-disable no-undef -->
 | 
			
		||||
 | 
			
		||||
```js
 | 
			
		||||
// Get header string appending "Origin" to "Accept, User-Agent"
 | 
			
		||||
vary.append('Accept, User-Agent', 'Origin')
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
## Examples
 | 
			
		||||
 | 
			
		||||
### Updating the Vary header when content is based on it
 | 
			
		||||
 | 
			
		||||
```js
 | 
			
		||||
var http = require('http')
 | 
			
		||||
var vary = require('vary')
 | 
			
		||||
 | 
			
		||||
http.createServer(function onRequest (req, res) {
 | 
			
		||||
  // about to user-agent sniff
 | 
			
		||||
  vary(res, 'User-Agent')
 | 
			
		||||
 | 
			
		||||
  var ua = req.headers['user-agent'] || ''
 | 
			
		||||
  var isMobile = /mobi|android|touch|mini/i.test(ua)
 | 
			
		||||
 | 
			
		||||
  // serve site, depending on isMobile
 | 
			
		||||
  res.setHeader('Content-Type', 'text/html')
 | 
			
		||||
  res.end('You are (probably) ' + (isMobile ? '' : 'not ') + 'a mobile user')
 | 
			
		||||
})
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
## Testing
 | 
			
		||||
 | 
			
		||||
```sh
 | 
			
		||||
$ npm test
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
## License
 | 
			
		||||
 | 
			
		||||
[MIT](LICENSE)
 | 
			
		||||
 | 
			
		||||
[npm-image]: https://img.shields.io/npm/v/vary.svg
 | 
			
		||||
[npm-url]: https://npmjs.org/package/vary
 | 
			
		||||
[node-version-image]: https://img.shields.io/node/v/vary.svg
 | 
			
		||||
[node-version-url]: https://nodejs.org/en/download
 | 
			
		||||
[travis-image]: https://img.shields.io/travis/jshttp/vary/master.svg
 | 
			
		||||
[travis-url]: https://travis-ci.org/jshttp/vary
 | 
			
		||||
[coveralls-image]: https://img.shields.io/coveralls/jshttp/vary/master.svg
 | 
			
		||||
[coveralls-url]: https://coveralls.io/r/jshttp/vary
 | 
			
		||||
[downloads-image]: https://img.shields.io/npm/dm/vary.svg
 | 
			
		||||
[downloads-url]: https://npmjs.org/package/vary
 | 
			
		||||
							
								
								
									
										149
									
								
								node_modules/vary/index.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										149
									
								
								node_modules/vary/index.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,149 @@
 | 
			
		||||
/*!
 | 
			
		||||
 * vary
 | 
			
		||||
 * Copyright(c) 2014-2017 Douglas Christopher Wilson
 | 
			
		||||
 * MIT Licensed
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
'use strict'
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Module exports.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
module.exports = vary
 | 
			
		||||
module.exports.append = append
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * RegExp to match field-name in RFC 7230 sec 3.2
 | 
			
		||||
 *
 | 
			
		||||
 * field-name    = token
 | 
			
		||||
 * token         = 1*tchar
 | 
			
		||||
 * tchar         = "!" / "#" / "$" / "%" / "&" / "'" / "*"
 | 
			
		||||
 *               / "+" / "-" / "." / "^" / "_" / "`" / "|" / "~"
 | 
			
		||||
 *               / DIGIT / ALPHA
 | 
			
		||||
 *               ; any VCHAR, except delimiters
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
var FIELD_NAME_REGEXP = /^[!#$%&'*+\-.^_`|~0-9A-Za-z]+$/
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Append a field to a vary header.
 | 
			
		||||
 *
 | 
			
		||||
 * @param {String} header
 | 
			
		||||
 * @param {String|Array} field
 | 
			
		||||
 * @return {String}
 | 
			
		||||
 * @public
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
function append (header, field) {
 | 
			
		||||
  if (typeof header !== 'string') {
 | 
			
		||||
    throw new TypeError('header argument is required')
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  if (!field) {
 | 
			
		||||
    throw new TypeError('field argument is required')
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  // get fields array
 | 
			
		||||
  var fields = !Array.isArray(field)
 | 
			
		||||
    ? parse(String(field))
 | 
			
		||||
    : field
 | 
			
		||||
 | 
			
		||||
  // assert on invalid field names
 | 
			
		||||
  for (var j = 0; j < fields.length; j++) {
 | 
			
		||||
    if (!FIELD_NAME_REGEXP.test(fields[j])) {
 | 
			
		||||
      throw new TypeError('field argument contains an invalid header name')
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  // existing, unspecified vary
 | 
			
		||||
  if (header === '*') {
 | 
			
		||||
    return header
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  // enumerate current values
 | 
			
		||||
  var val = header
 | 
			
		||||
  var vals = parse(header.toLowerCase())
 | 
			
		||||
 | 
			
		||||
  // unspecified vary
 | 
			
		||||
  if (fields.indexOf('*') !== -1 || vals.indexOf('*') !== -1) {
 | 
			
		||||
    return '*'
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  for (var i = 0; i < fields.length; i++) {
 | 
			
		||||
    var fld = fields[i].toLowerCase()
 | 
			
		||||
 | 
			
		||||
    // append value (case-preserving)
 | 
			
		||||
    if (vals.indexOf(fld) === -1) {
 | 
			
		||||
      vals.push(fld)
 | 
			
		||||
      val = val
 | 
			
		||||
        ? val + ', ' + fields[i]
 | 
			
		||||
        : fields[i]
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  return val
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Parse a vary header into an array.
 | 
			
		||||
 *
 | 
			
		||||
 * @param {String} header
 | 
			
		||||
 * @return {Array}
 | 
			
		||||
 * @private
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
function parse (header) {
 | 
			
		||||
  var end = 0
 | 
			
		||||
  var list = []
 | 
			
		||||
  var start = 0
 | 
			
		||||
 | 
			
		||||
  // gather tokens
 | 
			
		||||
  for (var i = 0, len = header.length; i < len; i++) {
 | 
			
		||||
    switch (header.charCodeAt(i)) {
 | 
			
		||||
      case 0x20: /*   */
 | 
			
		||||
        if (start === end) {
 | 
			
		||||
          start = end = i + 1
 | 
			
		||||
        }
 | 
			
		||||
        break
 | 
			
		||||
      case 0x2c: /* , */
 | 
			
		||||
        list.push(header.substring(start, end))
 | 
			
		||||
        start = end = i + 1
 | 
			
		||||
        break
 | 
			
		||||
      default:
 | 
			
		||||
        end = i + 1
 | 
			
		||||
        break
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  // final token
 | 
			
		||||
  list.push(header.substring(start, end))
 | 
			
		||||
 | 
			
		||||
  return list
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Mark that a request is varied on a header field.
 | 
			
		||||
 *
 | 
			
		||||
 * @param {Object} res
 | 
			
		||||
 * @param {String|Array} field
 | 
			
		||||
 * @public
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
function vary (res, field) {
 | 
			
		||||
  if (!res || !res.getHeader || !res.setHeader) {
 | 
			
		||||
    // quack quack
 | 
			
		||||
    throw new TypeError('res argument is required')
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  // get existing header
 | 
			
		||||
  var val = res.getHeader('Vary') || ''
 | 
			
		||||
  var header = Array.isArray(val)
 | 
			
		||||
    ? val.join(', ')
 | 
			
		||||
    : String(val)
 | 
			
		||||
 | 
			
		||||
  // set new header
 | 
			
		||||
  if ((val = append(header, field))) {
 | 
			
		||||
    res.setHeader('Vary', val)
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										43
									
								
								node_modules/vary/package.json
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										43
									
								
								node_modules/vary/package.json
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,43 @@
 | 
			
		||||
{
 | 
			
		||||
  "name": "vary",
 | 
			
		||||
  "description": "Manipulate the HTTP Vary header",
 | 
			
		||||
  "version": "1.1.2",
 | 
			
		||||
  "author": "Douglas Christopher Wilson <doug@somethingdoug.com>",
 | 
			
		||||
  "license": "MIT",
 | 
			
		||||
  "keywords": [
 | 
			
		||||
    "http",
 | 
			
		||||
    "res",
 | 
			
		||||
    "vary"
 | 
			
		||||
  ],
 | 
			
		||||
  "repository": "jshttp/vary",
 | 
			
		||||
  "devDependencies": {
 | 
			
		||||
    "beautify-benchmark": "0.2.4",
 | 
			
		||||
    "benchmark": "2.1.4",
 | 
			
		||||
    "eslint": "3.19.0",
 | 
			
		||||
    "eslint-config-standard": "10.2.1",
 | 
			
		||||
    "eslint-plugin-import": "2.7.0",
 | 
			
		||||
    "eslint-plugin-markdown": "1.0.0-beta.6",
 | 
			
		||||
    "eslint-plugin-node": "5.1.1",
 | 
			
		||||
    "eslint-plugin-promise": "3.5.0",
 | 
			
		||||
    "eslint-plugin-standard": "3.0.1",
 | 
			
		||||
    "istanbul": "0.4.5",
 | 
			
		||||
    "mocha": "2.5.3",
 | 
			
		||||
    "supertest": "1.1.0"
 | 
			
		||||
  },
 | 
			
		||||
  "files": [
 | 
			
		||||
    "HISTORY.md",
 | 
			
		||||
    "LICENSE",
 | 
			
		||||
    "README.md",
 | 
			
		||||
    "index.js"
 | 
			
		||||
  ],
 | 
			
		||||
  "engines": {
 | 
			
		||||
    "node": ">= 0.8"
 | 
			
		||||
  },
 | 
			
		||||
  "scripts": {
 | 
			
		||||
    "bench": "node benchmark/index.js",
 | 
			
		||||
    "lint": "eslint --plugin markdown --ext js,md .",
 | 
			
		||||
    "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/"
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user