clean old files

This commit is contained in:
Daniel Rodriguez 2021-04-25 19:48:07 +02:00
parent 2d7b1e34d0
commit cc79cf906f
203 changed files with 12300 additions and 13288 deletions

17
node_modules/accepts/package.json generated vendored
View file

@ -1,5 +1,5 @@
{
"_from": "accepts@~1.3.7",
"_from": "accepts@~1.3.5",
"_id": "accepts@1.3.7",
"_inBundle": false,
"_integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==",
@ -8,20 +8,23 @@
"_requested": {
"type": "range",
"registry": true,
"raw": "accepts@~1.3.7",
"raw": "accepts@~1.3.5",
"name": "accepts",
"escapedName": "accepts",
"rawSpec": "~1.3.7",
"rawSpec": "~1.3.5",
"saveSpec": null,
"fetchSpec": "~1.3.7"
"fetchSpec": "~1.3.5"
},
"_requiredBy": [
"/express"
"/compression",
"/engine.io",
"/express",
"/serve-index"
],
"_resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz",
"_shasum": "531bc726517a3b2b41f850021c6cc15eaab507cd",
"_spec": "accepts@~1.3.7",
"_where": "D:\\tftapp\\node_modules\\express",
"_spec": "accepts@~1.3.5",
"_where": "D:\\TFTPaths\\node_modules\\compression",
"bugs": {
"url": "https://github.com/jshttp/accepts/issues"
},

13
node_modules/array-flatten/README.md generated vendored
View file

@ -5,7 +5,7 @@
[![Build status][travis-image]][travis-url]
[![Test coverage][coveralls-image]][coveralls-url]
> Flatten an array of nested arrays into a single flat array. Accepts an optional depth.
> Flatten nested arrays.
## Installation
@ -21,14 +21,21 @@ var flatten = require('array-flatten')
flatten([1, [2, [3, [4, [5], 6], 7], 8], 9])
//=> [1, 2, 3, 4, 5, 6, 7, 8, 9]
flatten([1, [2, [3, [4, [5], 6], 7], 8], 9], 2)
flatten.depth([1, [2, [3, [4, [5], 6], 7], 8], 9], 2)
//=> [1, 2, 3, [4, [5], 6], 7, 8, 9]
(function () {
flatten(arguments) //=> [1, 2, 3]
flatten.from(arguments) //=> [1, 2, 3]
})(1, [2, 3])
```
### Methods
* **flatten(array)** Flatten a nested array structure
* **flatten.from(arrayish)** Flatten an array-like structure (E.g. arguments)
* **flatten.depth(array, depth)** Flatten a nested array structure with a specific depth
* **flatten.fromDepth(arrayish, depth)** Flatten an array-like structure with a specific depth
## License
MIT

View file

@ -3,43 +3,78 @@
/**
* Expose `arrayFlatten`.
*/
module.exports = arrayFlatten
module.exports = flatten
module.exports.from = flattenFrom
module.exports.depth = flattenDepth
module.exports.fromDepth = flattenFromDepth
/**
* Recursive flatten function with depth.
* Flatten an array.
*
* @param {Array} array
* @param {Array} result
* @param {Number} depth
* @param {Array} array
* @return {Array}
*/
function flattenWithDepth (array, result, depth) {
for (var i = 0; i < array.length; i++) {
var value = array[i]
if (depth > 0 && Array.isArray(value)) {
flattenWithDepth(value, result, depth - 1)
} else {
result.push(value)
}
function flatten (array) {
if (!Array.isArray(array)) {
throw new TypeError('Expected value to be an array')
}
return result
return flattenFrom(array)
}
/**
* Recursive flatten function. Omitting depth is slightly faster.
* Flatten an array-like structure.
*
* @param {Array} array
* @return {Array}
*/
function flattenFrom (array) {
return flattenDown(array, [])
}
/**
* Flatten an array-like structure with depth.
*
* @param {Array} array
* @param {number} depth
* @return {Array}
*/
function flattenDepth (array, depth) {
if (!Array.isArray(array)) {
throw new TypeError('Expected value to be an array')
}
return flattenFromDepth(array, depth)
}
/**
* Flatten an array-like structure with depth.
*
* @param {Array} array
* @param {number} depth
* @return {Array}
*/
function flattenFromDepth (array, depth) {
if (typeof depth !== 'number') {
throw new TypeError('Expected the depth to be a number')
}
return flattenDownDepth(array, [], depth)
}
/**
* Flatten an array indefinitely.
*
* @param {Array} array
* @param {Array} result
* @return {Array}
*/
function flattenForever (array, result) {
function flattenDown (array, result) {
for (var i = 0; i < array.length; i++) {
var value = array[i]
if (Array.isArray(value)) {
flattenForever(value, result)
flattenDown(value, result)
} else {
result.push(value)
}
@ -49,16 +84,25 @@ function flattenForever (array, result) {
}
/**
* Flatten an array, with the ability to define a depth.
* Flatten an array with depth.
*
* @param {Array} array
* @param {Number} depth
* @param {Array} result
* @param {number} depth
* @return {Array}
*/
function arrayFlatten (array, depth) {
if (depth == null) {
return flattenForever(array, [])
function flattenDownDepth (array, result, depth) {
depth--
for (var i = 0; i < array.length; i++) {
var value = array[i]
if (depth > -1 && Array.isArray(value)) {
flattenDownDepth(value, result, depth)
} else {
result.push(value)
}
}
return flattenWithDepth(array, [], depth)
return result
}

View file

@ -1,27 +1,27 @@
{
"_from": "array-flatten@1.1.1",
"_id": "array-flatten@1.1.1",
"_from": "array-flatten@^2.1.0",
"_id": "array-flatten@2.1.2",
"_inBundle": false,
"_integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=",
"_integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==",
"_location": "/array-flatten",
"_phantomChildren": {},
"_requested": {
"type": "version",
"type": "range",
"registry": true,
"raw": "array-flatten@1.1.1",
"raw": "array-flatten@^2.1.0",
"name": "array-flatten",
"escapedName": "array-flatten",
"rawSpec": "1.1.1",
"rawSpec": "^2.1.0",
"saveSpec": null,
"fetchSpec": "1.1.1"
"fetchSpec": "^2.1.0"
},
"_requiredBy": [
"/express"
"/bonjour"
],
"_resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
"_shasum": "9a5f699051b1e7073328f2a008968b64ea2955d2",
"_spec": "array-flatten@1.1.1",
"_where": "D:\\tftapp\\node_modules\\express",
"_resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz",
"_shasum": "24ef80a28c1a893617e2149b0c6d0d788293b099",
"_spec": "array-flatten@^2.1.0",
"_where": "D:\\TFTPaths\\node_modules\\bonjour",
"author": {
"name": "Blake Embrey",
"email": "hello@blakeembrey.com",
@ -32,15 +32,16 @@
},
"bundleDependencies": false,
"deprecated": false,
"description": "Flatten an array of nested arrays into a single flat array",
"description": "Flatten nested arrays",
"devDependencies": {
"istanbul": "^0.3.13",
"mocha": "^2.2.4",
"pre-commit": "^1.0.7",
"standard": "^3.7.3"
"benchmarked": "^2.0.0",
"istanbul": "^0.4.0",
"mocha": "^3.1.2",
"standard": "^10.0.0"
},
"files": [
"array-flatten.js",
"array-flatten.d.ts",
"LICENSE"
],
"homepage": "https://github.com/blakeembrey/array-flatten",
@ -48,7 +49,9 @@
"array",
"flatten",
"arguments",
"depth"
"depth",
"fast",
"for"
],
"license": "MIT",
"main": "array-flatten.js",
@ -58,7 +61,12 @@
"url": "git://github.com/blakeembrey/array-flatten.git"
},
"scripts": {
"test": "istanbul cover _mocha -- -R spec"
"benchmark": "node benchmark",
"lint": "standard",
"test": "npm run lint && npm run test-cov",
"test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- -R spec --bail",
"test-spec": "mocha -R spec --bail"
},
"version": "1.1.1"
"typings": "array-flatten.d.ts",
"version": "2.1.2"
}

View file

@ -16,12 +16,13 @@
"fetchSpec": "1.19.0"
},
"_requiredBy": [
"/express"
"/express",
"/karma"
],
"_resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz",
"_shasum": "96b2709e57c9c4e09a6fd66a8fd979844f69f08a",
"_spec": "body-parser@1.19.0",
"_where": "D:\\tftapp\\node_modules\\express",
"_where": "D:\\TFTPaths\\node_modules\\express",
"bugs": {
"url": "https://github.com/expressjs/body-parser/issues"
},

5
node_modules/bytes/History.md generated vendored
View file

@ -1,8 +1,3 @@
3.1.0 / 2019-01-22
==================
* Add petabyte (`pb`) support
3.0.0 / 2017-08-31
==================

13
node_modules/bytes/Readme.md generated vendored
View file

@ -83,7 +83,6 @@ Supported units and abbreviations are as follows and are case-insensitive:
* `mb` for megabytes
* `gb` for gigabytes
* `tb` for terabytes
* `pb` for petabytes
The units are in powers of two, not ten. This means 1kb = 1024b according to this parser.
@ -109,18 +108,18 @@ bytes('1024');
// output: 1024
bytes(1024);
// output: 1KB
// output: 1024
```
## License
[MIT](LICENSE)
[coveralls-image]: https://badgen.net/coveralls/c/github/visionmedia/bytes.js/master
[coveralls-url]: https://coveralls.io/r/visionmedia/bytes.js?branch=master
[downloads-image]: https://badgen.net/npm/dm/bytes
[downloads-image]: https://img.shields.io/npm/dm/bytes.svg
[downloads-url]: https://npmjs.org/package/bytes
[npm-image]: https://badgen.net/npm/node/bytes
[npm-image]: https://img.shields.io/npm/v/bytes.svg
[npm-url]: https://npmjs.org/package/bytes
[travis-image]: https://badgen.net/travis/visionmedia/bytes.js/master
[travis-image]: https://img.shields.io/travis/visionmedia/bytes.js/master.svg
[travis-url]: https://travis-ci.org/visionmedia/bytes.js
[coveralls-image]: https://img.shields.io/coveralls/visionmedia/bytes.js/master.svg
[coveralls-url]: https://coveralls.io/r/visionmedia/bytes.js?branch=master

9
node_modules/bytes/index.js generated vendored
View file

@ -30,11 +30,10 @@ var map = {
kb: 1 << 10,
mb: 1 << 20,
gb: 1 << 30,
tb: Math.pow(1024, 4),
pb: Math.pow(1024, 5),
tb: ((1 << 30) * 1024)
};
var parseRegExp = /^((-|\+)?(\d+(?:\.\d+)?)) *(kb|mb|gb|tb|pb)$/i;
var parseRegExp = /^((-|\+)?(\d+(?:\.\d+)?)) *(kb|mb|gb|tb)$/i;
/**
* Convert the given value in bytes into a string or parse to string to an integer in bytes.
@ -94,9 +93,7 @@ function format(value, options) {
var unit = (options && options.unit) || '';
if (!unit || !map[unit.toLowerCase()]) {
if (mag >= map.pb) {
unit = 'PB';
} else if (mag >= map.tb) {
if (mag >= map.tb) {
unit = 'TB';
} else if (mag >= map.gb) {
unit = 'GB';

31
node_modules/bytes/package.json generated vendored
View file

@ -1,28 +1,27 @@
{
"_from": "bytes@3.1.0",
"_id": "bytes@3.1.0",
"_from": "bytes@3.0.0",
"_id": "bytes@3.0.0",
"_inBundle": false,
"_integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==",
"_integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=",
"_location": "/bytes",
"_phantomChildren": {},
"_requested": {
"type": "version",
"registry": true,
"raw": "bytes@3.1.0",
"raw": "bytes@3.0.0",
"name": "bytes",
"escapedName": "bytes",
"rawSpec": "3.1.0",
"rawSpec": "3.0.0",
"saveSpec": null,
"fetchSpec": "3.1.0"
"fetchSpec": "3.0.0"
},
"_requiredBy": [
"/body-parser",
"/raw-body"
"/compression"
],
"_resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz",
"_shasum": "f6cf7933a360e0588fa9fde85651cdc7f805d1f6",
"_spec": "bytes@3.1.0",
"_where": "D:\\tftapp\\node_modules\\body-parser",
"_resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz",
"_shasum": "d32815404d689699f85a4ea4fa8755dd13a96048",
"_spec": "bytes@3.0.0",
"_where": "D:\\TFTPaths\\node_modules\\compression",
"author": {
"name": "TJ Holowaychuk",
"email": "tj@vision-media.ca",
@ -45,9 +44,8 @@
"deprecated": false,
"description": "Utility to parse a string bytes to bytes and vice-versa",
"devDependencies": {
"eslint": "5.12.1",
"mocha": "5.2.0",
"nyc": "13.1.0"
"mocha": "2.5.3",
"nyc": "10.3.2"
},
"engines": {
"node": ">= 0.8"
@ -75,10 +73,9 @@
"url": "git+https://github.com/visionmedia/bytes.js.git"
},
"scripts": {
"lint": "eslint .",
"test": "mocha --check-leaks --reporter spec",
"test-ci": "nyc --reporter=text npm test",
"test-cov": "nyc --reporter=html --reporter=text npm test"
},
"version": "3.1.0"
"version": "3.0.0"
}

View file

@ -21,7 +21,7 @@
"_resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz",
"_shasum": "e130caf7e7279087c5616c2007d0485698984fbd",
"_spec": "content-disposition@0.5.3",
"_where": "D:\\tftapp\\node_modules\\express",
"_where": "D:\\TFTPaths\\node_modules\\express",
"author": {
"name": "Douglas Christopher Wilson",
"email": "doug@somethingdoug.com"

View file

@ -22,7 +22,7 @@
"_resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz",
"_shasum": "e138cc75e040c727b1966fe5e5f8c9aee256fe3b",
"_spec": "content-type@~1.0.4",
"_where": "D:\\tftapp\\node_modules\\express",
"_where": "D:\\TFTPaths\\node_modules\\express",
"author": {
"name": "Douglas Christopher Wilson",
"email": "doug@somethingdoug.com"

View file

@ -21,7 +21,7 @@
"_resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
"_shasum": "e303a882b342cc3ee8ca513a79999734dab3ae2c",
"_spec": "cookie-signature@1.0.6",
"_where": "D:\\tftapp\\node_modules\\express",
"_where": "D:\\TFTPaths\\node_modules\\express",
"author": {
"name": "TJ Holowaychuk",
"email": "tj@learnboost.com"

2
node_modules/cookie/package.json generated vendored
View file

@ -21,7 +21,7 @@
"_resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz",
"_shasum": "beb437e7022b3b6d49019d088665303ebe9c14ba",
"_spec": "cookie@0.4.0",
"_where": "D:\\tftapp\\node_modules\\express",
"_where": "D:\\TFTPaths\\node_modules\\express",
"author": {
"name": "Roman Shtylman",
"email": "shtylman@gmail.com"

24
node_modules/debug/package.json generated vendored
View file

@ -1,30 +1,38 @@
{
"_from": "debug@2.6.9",
"_from": "debug@^2.6.8",
"_id": "debug@2.6.9",
"_inBundle": false,
"_integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
"_location": "/debug",
"_phantomChildren": {},
"_requested": {
"type": "version",
"type": "range",
"registry": true,
"raw": "debug@2.6.9",
"raw": "debug@^2.6.8",
"name": "debug",
"escapedName": "debug",
"rawSpec": "2.6.9",
"rawSpec": "^2.6.8",
"saveSpec": null,
"fetchSpec": "2.6.9"
"fetchSpec": "^2.6.8"
},
"_requiredBy": [
"/babel-traverse",
"/body-parser",
"/compression",
"/connect",
"/expand-brackets",
"/express",
"/finalhandler",
"/send"
"/portfinder",
"/send",
"/serve-index",
"/snapdragon",
"/stylus"
],
"_resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
"_shasum": "5d128515df134ff327e90a4c93f4e077a536341f",
"_spec": "debug@2.6.9",
"_where": "D:\\tftapp\\node_modules\\express",
"_spec": "debug@^2.6.8",
"_where": "D:\\TFTPaths\\node_modules\\babel-traverse",
"author": {
"name": "TJ Holowaychuk",
"email": "tj@vision-media.ca"

5
node_modules/depd/package.json generated vendored
View file

@ -19,12 +19,13 @@
"/body-parser",
"/express",
"/http-errors",
"/send"
"/send",
"/serve-index/http-errors"
],
"_resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
"_shasum": "9bcd52e14c097763e749b274c4346ed2e560b5a9",
"_spec": "depd@~1.1.2",
"_where": "D:\\tftapp\\node_modules\\express",
"_where": "D:\\TFTPaths\\node_modules\\express",
"author": {
"name": "Douglas Christopher Wilson",
"email": "doug@somethingdoug.com"

2
node_modules/destroy/package.json generated vendored
View file

@ -21,7 +21,7 @@
"_resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz",
"_shasum": "978857442c44749e4206613e37946205826abd80",
"_spec": "destroy@~1.0.4",
"_where": "D:\\tftapp\\node_modules\\send",
"_where": "D:\\TFTPaths\\node_modules\\send",
"author": {
"name": "Jonathan Ong",
"email": "me@jongleberry.com",

2
node_modules/ee-first/package.json generated vendored
View file

@ -21,7 +21,7 @@
"_resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
"_shasum": "590c61156b0ae2f4f0255732a158b266bc56b21d",
"_spec": "ee-first@1.1.1",
"_where": "D:\\tftapp\\node_modules\\on-finished",
"_where": "D:\\TFTPaths\\node_modules\\on-finished",
"author": {
"name": "Jonathan Ong",
"email": "me@jongleberry.com",

View file

@ -24,7 +24,7 @@
"_resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
"_shasum": "ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59",
"_spec": "encodeurl@~1.0.2",
"_where": "D:\\tftapp\\node_modules\\express",
"_where": "D:\\TFTPaths\\node_modules\\express",
"bugs": {
"url": "https://github.com/pillarjs/encodeurl/issues"
},

View file

@ -19,12 +19,13 @@
"/express",
"/finalhandler",
"/send",
"/serve-index",
"/serve-static"
],
"_resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
"_shasum": "0258eae4d3d0c0974de1c169188ef0051d1d1988",
"_spec": "escape-html@~1.0.3",
"_where": "D:\\tftapp\\node_modules\\express",
"_where": "D:\\TFTPaths\\node_modules\\express",
"bugs": {
"url": "https://github.com/component/escape-html/issues"
},

2
node_modules/etag/package.json generated vendored
View file

@ -22,7 +22,7 @@
"_resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
"_shasum": "41ae2eeb65efa62268aebfea83ac7d79299b0887",
"_spec": "etag@~1.8.1",
"_where": "D:\\tftapp\\node_modules\\express",
"_where": "D:\\TFTPaths\\node_modules\\express",
"bugs": {
"url": "https://github.com/jshttp/etag/issues"
},

17
node_modules/express/package.json generated vendored
View file

@ -1,28 +1,27 @@
{
"_from": "express",
"_from": "express@^4.17.1",
"_id": "express@4.17.1",
"_inBundle": false,
"_integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==",
"_location": "/express",
"_phantomChildren": {},
"_requested": {
"type": "tag",
"type": "range",
"registry": true,
"raw": "express",
"raw": "express@^4.17.1",
"name": "express",
"escapedName": "express",
"rawSpec": "",
"rawSpec": "^4.17.1",
"saveSpec": null,
"fetchSpec": "latest"
"fetchSpec": "^4.17.1"
},
"_requiredBy": [
"#USER",
"/"
"/webpack-dev-server"
],
"_resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz",
"_shasum": "4491fc38605cf51f8629d39c2b5d026f98a4c134",
"_spec": "express",
"_where": "D:\\tftapp",
"_spec": "express@^4.17.1",
"_where": "D:\\TFTPaths\\node_modules\\webpack-dev-server",
"author": {
"name": "TJ Holowaychuk",
"email": "tj@vision-media.ca"

View file

@ -16,12 +16,13 @@
"fetchSpec": "~1.1.2"
},
"_requiredBy": [
"/connect",
"/express"
],
"_resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz",
"_shasum": "b7e7d000ffd11938d0fdb053506f6ebabe9f587d",
"_spec": "finalhandler@~1.1.2",
"_where": "D:\\tftapp\\node_modules\\express",
"_where": "D:\\TFTPaths\\node_modules\\express",
"author": {
"name": "Douglas Christopher Wilson",
"email": "doug@somethingdoug.com"

View file

@ -21,7 +21,7 @@
"_resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz",
"_shasum": "98c23dab1175657b8c0573e8ceccd91b0ff18c84",
"_spec": "forwarded@~0.1.2",
"_where": "D:\\tftapp\\node_modules\\proxy-addr",
"_where": "D:\\TFTPaths\\node_modules\\proxy-addr",
"bugs": {
"url": "https://github.com/jshttp/forwarded/issues"
},

2
node_modules/fresh/package.json generated vendored
View file

@ -22,7 +22,7 @@
"_resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
"_shasum": "3d8cadd90d976569fa835ab1f8e4b23a105605a7",
"_spec": "fresh@0.5.2",
"_where": "D:\\tftapp\\node_modules\\express",
"_where": "D:\\TFTPaths\\node_modules\\express",
"author": {
"name": "TJ Holowaychuk",
"email": "tj@vision-media.ca",

View file

@ -23,7 +23,7 @@
"_resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz",
"_shasum": "4f5029cf13239f31036e5b2e55292bcfbcc85c8f",
"_spec": "http-errors@1.7.2",
"_where": "D:\\tftapp\\node_modules\\body-parser",
"_where": "D:\\TFTPaths\\node_modules\\body-parser",
"author": {
"name": "Jonathan Ong",
"email": "me@jongleberry.com",

View file

@ -17,12 +17,14 @@
},
"_requiredBy": [
"/body-parser",
"/encoding",
"/external-editor",
"/raw-body"
],
"_resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
"_shasum": "2022b4b25fbddc21d2f524974a474aafe733908b",
"_spec": "iconv-lite@0.4.24",
"_where": "D:\\tftapp\\node_modules\\body-parser",
"_where": "D:\\TFTPaths\\node_modules\\body-parser",
"author": {
"name": "Alexander Shtuchkin",
"email": "ashtuchkin@gmail.com"

2
node_modules/inherits/inherits.js generated vendored
View file

@ -1,7 +1,9 @@
try {
var util = require('util');
/* istanbul ignore next */
if (typeof util.inherits !== 'function') throw '';
module.exports = util.inherits;
} catch (e) {
/* istanbul ignore next */
module.exports = require('./inherits_browser.js');
}

View file

@ -1,23 +1,27 @@
if (typeof Object.create === 'function') {
// implementation from standard node.js 'util' module
module.exports = function inherits(ctor, superCtor) {
ctor.super_ = superCtor
ctor.prototype = Object.create(superCtor.prototype, {
constructor: {
value: ctor,
enumerable: false,
writable: true,
configurable: true
}
});
if (superCtor) {
ctor.super_ = superCtor
ctor.prototype = Object.create(superCtor.prototype, {
constructor: {
value: ctor,
enumerable: false,
writable: true,
configurable: true
}
})
}
};
} else {
// old school shim for old browsers
module.exports = function inherits(ctor, superCtor) {
ctor.super_ = superCtor
var TempCtor = function () {}
TempCtor.prototype = superCtor.prototype
ctor.prototype = new TempCtor()
ctor.prototype.constructor = ctor
if (superCtor) {
ctor.super_ = superCtor
var TempCtor = function () {}
TempCtor.prototype = superCtor.prototype
ctor.prototype = new TempCtor()
ctor.prototype.constructor = ctor
}
}
}

62
node_modules/inherits/package.json generated vendored
View file

@ -1,27 +1,59 @@
{
"_from": "inherits@2.0.3",
"_id": "inherits@2.0.3",
"_from": "inherits@~2.0.3",
"_id": "inherits@2.0.4",
"_inBundle": false,
"_integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
"_integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
"_location": "/inherits",
"_phantomChildren": {},
"_requested": {
"type": "version",
"type": "range",
"registry": true,
"raw": "inherits@2.0.3",
"raw": "inherits@~2.0.3",
"name": "inherits",
"escapedName": "inherits",
"rawSpec": "2.0.3",
"rawSpec": "~2.0.3",
"saveSpec": null,
"fetchSpec": "2.0.3"
"fetchSpec": "~2.0.3"
},
"_requiredBy": [
"/http-errors"
"/@angular/compiler-cli/chokidar",
"/asn1.js",
"/browserify-aes",
"/browserify-des",
"/browserify-sign",
"/cipher-base",
"/concat-stream",
"/create-hash",
"/create-hmac",
"/crypto-browserify",
"/des.js",
"/duplexify",
"/elliptic",
"/flush-write-stream",
"/from2",
"/glob",
"/hash-base",
"/hash.js",
"/hpack.js",
"/karma/chokidar",
"/md5.js",
"/parallel-transform",
"/pumpify",
"/readable-stream",
"/ripemd160",
"/sha.js",
"/sockjs-client",
"/spdy-transport/readable-stream",
"/stream-browserify",
"/stream-http",
"/stylus/glob",
"/watchpack/chokidar",
"/webpack-dev-server/chokidar"
],
"_resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
"_shasum": "633c2c83e3da42a502f52466022480f4208261de",
"_spec": "inherits@2.0.3",
"_where": "D:\\tftapp\\node_modules\\http-errors",
"_resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
"_shasum": "0fa2c64f932917c3433a0ded55363aae37416b7c",
"_spec": "inherits@~2.0.3",
"_where": "D:\\TFTPaths\\node_modules\\readable-stream",
"browser": "./inherits_browser.js",
"bugs": {
"url": "https://github.com/isaacs/inherits/issues"
@ -30,7 +62,7 @@
"deprecated": false,
"description": "Browser-friendly inheritance fully compatible with standard node.js inherits()",
"devDependencies": {
"tap": "^7.1.0"
"tap": "^14.2.4"
},
"files": [
"inherits.js",
@ -55,7 +87,7 @@
"url": "git://github.com/isaacs/inherits.git"
},
"scripts": {
"test": "node test"
"test": "tap"
},
"version": "2.0.3"
"version": "2.0.4"
}

View file

@ -16,12 +16,13 @@
"fetchSpec": "1.9.0"
},
"_requiredBy": [
"/internal-ip",
"/proxy-addr"
],
"_resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.0.tgz",
"_shasum": "37df74e430a0e47550fe54a2defe30d8acd95f65",
"_spec": "ipaddr.js@1.9.0",
"_where": "D:\\tftapp\\node_modules\\proxy-addr",
"_where": "D:\\TFTPaths\\node_modules\\proxy-addr",
"author": {
"name": "whitequark",
"email": "whitequark@whitequark.org"

View file

@ -21,7 +21,7 @@
"_resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
"_shasum": "8710d7af0aa626f8fffa1ce00168545263255748",
"_spec": "media-typer@0.3.0",
"_where": "D:\\tftapp\\node_modules\\type-is",
"_where": "D:\\TFTPaths\\node_modules\\type-is",
"author": {
"name": "Douglas Christopher Wilson",
"email": "doug@somethingdoug.com"

View file

@ -21,7 +21,7 @@
"_resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
"_shasum": "b00aaa556dd8b44568150ec9d1b953f3f90cbb61",
"_spec": "merge-descriptors@1.0.1",
"_where": "D:\\tftapp\\node_modules\\express",
"_where": "D:\\TFTPaths\\node_modules\\express",
"author": {
"name": "Jonathan Ong",
"email": "me@jongleberry.com",

2
node_modules/methods/package.json generated vendored
View file

@ -21,7 +21,7 @@
"_resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
"_shasum": "5529a4d67654134edcc5266656835b0f851afcee",
"_spec": "methods@~1.1.2",
"_where": "D:\\tftapp\\node_modules\\express",
"_where": "D:\\TFTPaths\\node_modules\\express",
"browser": {
"http": false
},

3
node_modules/mime-db/package.json generated vendored
View file

@ -16,12 +16,13 @@
"fetchSpec": "1.40.0"
},
"_requiredBy": [
"/compressible",
"/mime-types"
],
"_resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.40.0.tgz",
"_shasum": "a65057e998db090f732a68f6c276d387d4126c32",
"_spec": "mime-db@1.40.0",
"_where": "D:\\tftapp\\node_modules\\mime-types",
"_where": "D:\\TFTPaths\\node_modules\\mime-types",
"bugs": {
"url": "https://github.com/jshttp/mime-db/issues"
},

15
node_modules/mime-types/package.json generated vendored
View file

@ -1,5 +1,5 @@
{
"_from": "mime-types@~2.1.24",
"_from": "mime-types@~2.1.19",
"_id": "mime-types@2.1.24",
"_inBundle": false,
"_integrity": "sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ==",
@ -8,21 +8,24 @@
"_requested": {
"type": "range",
"registry": true,
"raw": "mime-types@~2.1.24",
"raw": "mime-types@~2.1.19",
"name": "mime-types",
"escapedName": "mime-types",
"rawSpec": "~2.1.24",
"rawSpec": "~2.1.19",
"saveSpec": null,
"fetchSpec": "~2.1.24"
"fetchSpec": "~2.1.19"
},
"_requiredBy": [
"/accepts",
"/form-data",
"/request",
"/serve-index",
"/type-is"
],
"_resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.24.tgz",
"_shasum": "b6f8d0b3e951efb77dedeca194cff6d16f676f81",
"_spec": "mime-types@~2.1.24",
"_where": "D:\\tftapp\\node_modules\\accepts",
"_spec": "mime-types@~2.1.19",
"_where": "D:\\TFTPaths\\node_modules\\request",
"bugs": {
"url": "https://github.com/jshttp/mime-types/issues"
},

15
node_modules/mime/package.json generated vendored
View file

@ -1,27 +1,28 @@
{
"_from": "mime@1.6.0",
"_from": "mime@^1.4.1",
"_id": "mime@1.6.0",
"_inBundle": false,
"_integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
"_location": "/mime",
"_phantomChildren": {},
"_requested": {
"type": "version",
"type": "range",
"registry": true,
"raw": "mime@1.6.0",
"raw": "mime@^1.4.1",
"name": "mime",
"escapedName": "mime",
"rawSpec": "1.6.0",
"rawSpec": "^1.4.1",
"saveSpec": null,
"fetchSpec": "1.6.0"
"fetchSpec": "^1.4.1"
},
"_requiredBy": [
"/less",
"/send"
],
"_resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
"_shasum": "32cd9e5c64553bd58d19a568af452acff04981b1",
"_spec": "mime@1.6.0",
"_where": "D:\\tftapp\\node_modules\\send",
"_spec": "mime@^1.4.1",
"_where": "D:\\TFTPaths\\node_modules\\less",
"author": {
"name": "Robert Kieffer",
"email": "robert@broofa.com",

11
node_modules/ms/package.json generated vendored
View file

@ -16,12 +16,19 @@
"fetchSpec": "2.0.0"
},
"_requiredBy": [
"/debug"
"/debug",
"/engine.io-client/debug",
"/engine.io/debug",
"/http-proxy-agent/debug",
"/humanize-ms",
"/socket.io-client/debug",
"/socket.io-parser/debug",
"/socket.io/debug"
],
"_resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
"_shasum": "5608aeadfc00be6c2901df5f9861788de0d597c8",
"_spec": "ms@2.0.0",
"_where": "D:\\tftapp\\node_modules\\debug",
"_where": "D:\\TFTPaths\\node_modules\\debug",
"bugs": {
"url": "https://github.com/zeit/ms/issues"
},

View file

@ -21,7 +21,7 @@
"_resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz",
"_shasum": "feacf7ccf525a77ae9634436a64883ffeca346fb",
"_spec": "negotiator@0.6.2",
"_where": "D:\\tftapp\\node_modules\\accepts",
"_where": "D:\\TFTPaths\\node_modules\\accepts",
"bugs": {
"url": "https://github.com/jshttp/negotiator/issues"
},

View file

@ -24,7 +24,7 @@
"_resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
"_shasum": "20f1336481b083cd75337992a16971aa2d906947",
"_spec": "on-finished@~2.3.0",
"_where": "D:\\tftapp\\node_modules\\express",
"_where": "D:\\TFTPaths\\node_modules\\express",
"bugs": {
"url": "https://github.com/jshttp/on-finished/issues"
},

4
node_modules/parseurl/package.json generated vendored
View file

@ -16,14 +16,16 @@
"fetchSpec": "~1.3.3"
},
"_requiredBy": [
"/connect",
"/express",
"/finalhandler",
"/serve-index",
"/serve-static"
],
"_resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
"_shasum": "9da19e7bee8d12dff0513ed5b76957793bc2e8d4",
"_spec": "parseurl@~1.3.3",
"_where": "D:\\tftapp\\node_modules\\express",
"_where": "D:\\TFTPaths\\node_modules\\express",
"bugs": {
"url": "https://github.com/pillarjs/parseurl/issues"
},

View file

@ -21,7 +21,7 @@
"_resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
"_shasum": "df604178005f522f15eb4490e7247a1bfaa67f8c",
"_spec": "path-to-regexp@0.1.7",
"_where": "D:\\tftapp\\node_modules\\express",
"_where": "D:\\TFTPaths\\node_modules\\express",
"bugs": {
"url": "https://github.com/component/path-to-regexp/issues"
},

View file

@ -21,7 +21,7 @@
"_resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.5.tgz",
"_shasum": "34cbd64a2d81f4b1fd21e76f9f06c8a45299ee34",
"_spec": "proxy-addr@~2.0.5",
"_where": "D:\\tftapp\\node_modules\\express",
"_where": "D:\\TFTPaths\\node_modules\\express",
"author": {
"name": "Douglas Christopher Wilson",
"email": "doug@somethingdoug.com"

2
node_modules/qs/.editorconfig generated vendored
View file

@ -7,7 +7,7 @@ end_of_line = lf
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true
max_line_length = 160
max_line_length = 140
[test/*]
max_line_length = off

6
node_modules/qs/.eslintrc generated vendored
View file

@ -9,10 +9,8 @@
"func-name-matching": 0,
"id-length": [2, { "min": 1, "max": 25, "properties": "never" }],
"indent": [2, 4],
"max-lines-per-function": [2, { "max": 150 }],
"max-params": [2, 14],
"max-statements": [2, 52],
"multiline-comment-style": 0,
"max-params": [2, 12],
"max-statements": [2, 45],
"no-continue": 1,
"no-magic-numbers": 0,
"no-restricted-syntax": [2, "BreakStatement", "DebuggerStatement", "ForInStatement", "LabeledStatement", "WithStatement"],

30
node_modules/qs/CHANGELOG.md generated vendored
View file

@ -1,33 +1,3 @@
## **6.7.0**
- [New] `stringify`/`parse`: add `comma` as an `arrayFormat` option (#276, #219)
- [Fix] correctly parse nested arrays (#212)
- [Fix] `utils.merge`: avoid a crash with a null target and a truthy non-array source, also with an array source
- [Robustness] `stringify`: cache `Object.prototype.hasOwnProperty`
- [Refactor] `utils`: `isBuffer`: small tweak; add tests
- [Refactor] use cached `Array.isArray`
- [Refactor] `parse`/`stringify`: make a function to normalize the options
- [Refactor] `utils`: reduce observable [[Get]]s
- [Refactor] `stringify`/`utils`: cache `Array.isArray`
- [Tests] always use `String(x)` over `x.toString()`
- [Tests] fix Buffer tests to work in node < 4.5 and node < 5.10
- [Tests] temporarily allow coverage to fail
## **6.6.0**
- [New] Add support for iso-8859-1, utf8 "sentinel" and numeric entities (#268)
- [New] move two-value combine to a `utils` function (#189)
- [Fix] `stringify`: fix a crash with `strictNullHandling` and a custom `filter`/`serializeDate` (#279)
- [Fix] when `parseArrays` is false, properly handle keys ending in `[]` (#260)
- [Fix] `stringify`: do not crash in an obscure combo of `interpretNumericEntities`, a bad custom `decoder`, & `iso-8859-1`
- [Fix] `utils`: `merge`: fix crash when `source` is a truthy primitive & no options are provided
- [refactor] `stringify`: Avoid arr = arr.concat(...), push to the existing instance (#269)
- [Refactor] `parse`: only need to reassign the var once
- [Refactor] `parse`/`stringify`: clean up `charset` options checking; fix defaults
- [Refactor] add missing defaults
- [Refactor] `parse`: one less `concat` call
- [Refactor] `utils`: `compactQueue`: make it explicitly side-effecting
- [Dev Deps] update `browserify`, `eslint`, `@ljharb/eslint-config`, `iconv-lite`, `safe-publish-latest`, `tape`
- [Tests] up to `node` `v10.10`, `v9.11`, `v8.12`, `v6.14`, `v4.9`; pin included builds to LTS
## **6.5.2**
- [Fix] use `safer-buffer` instead of `Buffer` constructor
- [Refactor] utils: `module.exports` one thing, instead of mutating `exports` (#230)

101
node_modules/qs/README.md generated vendored
View file

@ -146,62 +146,6 @@ var withDots = qs.parse('a.b=c', { allowDots: true });
assert.deepEqual(withDots, { a: { b: 'c' } });
```
If you have to deal with legacy browsers or services, there's
also support for decoding percent-encoded octets as iso-8859-1:
```javascript
var oldCharset = qs.parse('a=%A7', { charset: 'iso-8859-1' });
assert.deepEqual(oldCharset, { a: '§' });
```
Some services add an initial `utf8=✓` value to forms so that old
Internet Explorer versions are more likely to submit the form as
utf-8. Additionally, the server can check the value against wrong
encodings of the checkmark character and detect that a query string
or `application/x-www-form-urlencoded` body was *not* sent as
utf-8, eg. if the form had an `accept-charset` parameter or the
containing page had a different character set.
**qs** supports this mechanism via the `charsetSentinel` option.
If specified, the `utf8` parameter will be omitted from the
returned object. It will be used to switch to `iso-8859-1`/`utf-8`
mode depending on how the checkmark is encoded.
**Important**: When you specify both the `charset` option and the
`charsetSentinel` option, the `charset` will be overridden when
the request contains a `utf8` parameter from which the actual
charset can be deduced. In that sense the `charset` will behave
as the default charset rather than the authoritative charset.
```javascript
var detectedAsUtf8 = qs.parse('utf8=%E2%9C%93&a=%C3%B8', {
charset: 'iso-8859-1',
charsetSentinel: true
});
assert.deepEqual(detectedAsUtf8, { a: 'ø' });
// Browsers encode the checkmark as &#10003; when submitting as iso-8859-1:
var detectedAsIso8859_1 = qs.parse('utf8=%26%2310003%3B&a=%F8', {
charset: 'utf-8',
charsetSentinel: true
});
assert.deepEqual(detectedAsIso8859_1, { a: 'ø' });
```
If you want to decode the `&#...;` syntax to the actual character,
you can specify the `interpretNumericEntities` option as well:
```javascript
var detectedAsIso8859_1 = qs.parse('a=%26%239786%3B', {
charset: 'iso-8859-1',
interpretNumericEntities: true
});
assert.deepEqual(detectedAsIso8859_1, { a: '☺' });
```
It also works when the charset has been detected in `charsetSentinel`
mode.
### Parsing Arrays
**qs** can also parse arrays using a similar `[]` notation:
@ -238,7 +182,7 @@ assert.deepEqual(withIndexedEmptyString, { a: ['b', '', 'c'] });
```
**qs** will also limit specifying indices in an array to a maximum index of `20`. Any array members with an index of greater than `20` will
instead be converted to an object with the index as the key. This is needed to handle cases when someone sent, for example, `a[999999999]` and it will take significant time to iterate over this huge array.
instead be converted to an object with the index as the key:
```javascript
var withMaxIndex = qs.parse('a[100]=b');
@ -273,13 +217,6 @@ var arraysOfObjects = qs.parse('a[][b]=c');
assert.deepEqual(arraysOfObjects, { a: [{ b: 'c' }] });
```
Some people use comma to join array, **qs** can parse it:
```javascript
var arraysOfObjects = qs.parse('a=b,c', { comma: true })
assert.deepEqual(arraysOfObjects, { a: ['b', 'c'] })
```
(_this cannot convert nested objects, such as `a={b:1},{c:d}`_)
### Stringifying
[](#preventEval)
@ -355,8 +292,6 @@ qs.stringify({ a: ['b', 'c'] }, { arrayFormat: 'brackets' })
// 'a[]=b&a[]=c'
qs.stringify({ a: ['b', 'c'] }, { arrayFormat: 'repeat' })
// 'a=b&a=c'
qs.stringify({ a: ['b', 'c'] }, { arrayFormat: 'comma' })
// 'a=b,c'
```
When objects are stringified, by default they use bracket notation:
@ -491,40 +426,10 @@ var nullsSkipped = qs.stringify({ a: 'b', c: null}, { skipNulls: true });
assert.equal(nullsSkipped, 'a=b');
```
If you're communicating with legacy systems, you can switch to `iso-8859-1`
using the `charset` option:
```javascript
var iso = qs.stringify({ æ: 'æ' }, { charset: 'iso-8859-1' });
assert.equal(iso, '%E6=%E6');
```
Characters that don't exist in `iso-8859-1` will be converted to numeric
entities, similar to what browsers do:
```javascript
var numeric = qs.stringify({ a: '☺' }, { charset: 'iso-8859-1' });
assert.equal(numeric, 'a=%26%239786%3B');
```
You can use the `charsetSentinel` option to announce the character by
including an `utf8=✓` parameter with the proper encoding if the checkmark,
similar to what Ruby on Rails and others do when submitting forms.
```javascript
var sentinel = qs.stringify({ a: '☺' }, { charsetSentinel: true });
assert.equal(sentinel, 'utf8=%E2%9C%93&a=%E2%98%BA');
var isoSentinel = qs.stringify({ a: 'æ' }, { charsetSentinel: true, charset: 'iso-8859-1' });
assert.equal(isoSentinel, 'utf8=%26%2310003%3B&a=%E6');
```
### Dealing with special character sets
By default the encoding and decoding of characters is done in `utf-8`,
and `iso-8859-1` support is also built in via the `charset` parameter.
If you wish to encode querystrings to a different character set (i.e.
By default the encoding and decoding of characters is done in `utf-8`. If you
wish to encode querystrings to a different character set (i.e.
[Shift JIS](https://en.wikipedia.org/wiki/Shift_JIS)) you can use the
[`qs-iconv`](https://github.com/martinheidegger/qs-iconv) library:

338
node_modules/qs/dist/qs.js generated vendored
View file

@ -42,63 +42,21 @@ var defaults = {
allowDots: false,
allowPrototypes: false,
arrayLimit: 20,
charset: 'utf-8',
charsetSentinel: false,
comma: false,
decoder: utils.decode,
delimiter: '&',
depth: 5,
ignoreQueryPrefix: false,
interpretNumericEntities: false,
parameterLimit: 1000,
parseArrays: true,
plainObjects: false,
strictNullHandling: false
};
var interpretNumericEntities = function (str) {
return str.replace(/&#(\d+);/g, function ($0, numberStr) {
return String.fromCharCode(parseInt(numberStr, 10));
});
};
// This is what browsers will submit when the ✓ character occurs in an
// application/x-www-form-urlencoded body and the encoding of the page containing
// the form is iso-8859-1, or when the submitted form has an accept-charset
// attribute of iso-8859-1. Presumably also with other charsets that do not contain
// the ✓ character, such as us-ascii.
var isoSentinel = 'utf8=%26%2310003%3B'; // encodeURIComponent('&#10003;')
// These are the percent-encoded utf-8 octets representing a checkmark, indicating that the request actually is utf-8 encoded.
var charsetSentinel = 'utf8=%E2%9C%93'; // encodeURIComponent('✓')
var parseValues = function parseQueryStringValues(str, options) {
var obj = {};
var cleanStr = options.ignoreQueryPrefix ? str.replace(/^\?/, '') : str;
var limit = options.parameterLimit === Infinity ? undefined : options.parameterLimit;
var parts = cleanStr.split(options.delimiter, limit);
var skipIndex = -1; // Keep track of where the utf8 sentinel was found
var i;
var charset = options.charset;
if (options.charsetSentinel) {
for (i = 0; i < parts.length; ++i) {
if (parts[i].indexOf('utf8=') === 0) {
if (parts[i] === charsetSentinel) {
charset = 'utf-8';
} else if (parts[i] === isoSentinel) {
charset = 'iso-8859-1';
}
skipIndex = i;
i = parts.length; // The eslint settings do not allow break;
}
}
}
for (i = 0; i < parts.length; ++i) {
if (i === skipIndex) {
continue;
}
for (var i = 0; i < parts.length; ++i) {
var part = parts[i];
var bracketEqualsPos = part.indexOf(']=');
@ -106,23 +64,14 @@ var parseValues = function parseQueryStringValues(str, options) {
var key, val;
if (pos === -1) {
key = options.decoder(part, defaults.decoder, charset);
key = options.decoder(part, defaults.decoder);
val = options.strictNullHandling ? null : '';
} else {
key = options.decoder(part.slice(0, pos), defaults.decoder, charset);
val = options.decoder(part.slice(pos + 1), defaults.decoder, charset);
key = options.decoder(part.slice(0, pos), defaults.decoder);
val = options.decoder(part.slice(pos + 1), defaults.decoder);
}
if (val && options.interpretNumericEntities && charset === 'iso-8859-1') {
val = interpretNumericEntities(val);
}
if (val && options.comma && val.indexOf(',') > -1) {
val = val.split(',');
}
if (has.call(obj, key)) {
obj[key] = utils.combine(obj[key], val);
obj[key] = [].concat(obj[key]).concat(val);
} else {
obj[key] = val;
}
@ -138,15 +87,14 @@ var parseObject = function (chain, val, options) {
var obj;
var root = chain[i];
if (root === '[]' && options.parseArrays) {
obj = [].concat(leaf);
if (root === '[]') {
obj = [];
obj = obj.concat(leaf);
} else {
obj = options.plainObjects ? Object.create(null) : {};
var cleanRoot = root.charAt(0) === '[' && root.charAt(root.length - 1) === ']' ? root.slice(1, -1) : root;
var index = parseInt(cleanRoot, 10);
if (!options.parseArrays && cleanRoot === '') {
obj = { 0: leaf };
} else if (
if (
!isNaN(index)
&& root !== cleanRoot
&& String(index) === cleanRoot
@ -188,7 +136,8 @@ var parseKeys = function parseQueryStringKeys(givenKey, val, options) {
var keys = [];
if (parent) {
// If we aren't using plain objects, optionally prefix keys that would overwrite object prototype properties
// If we aren't using plain objects, optionally prefix keys
// that would overwrite object prototype properties
if (!options.plainObjects && has.call(Object.prototype, parent)) {
if (!options.allowPrototypes) {
return;
@ -220,41 +169,24 @@ var parseKeys = function parseQueryStringKeys(givenKey, val, options) {
return parseObject(keys, val, options);
};
var normalizeParseOptions = function normalizeParseOptions(opts) {
if (!opts) {
return defaults;
}
module.exports = function (str, opts) {
var options = opts ? utils.assign({}, opts) : {};
if (opts.decoder !== null && opts.decoder !== undefined && typeof opts.decoder !== 'function') {
if (options.decoder !== null && options.decoder !== undefined && typeof options.decoder !== 'function') {
throw new TypeError('Decoder has to be a function.');
}
if (typeof opts.charset !== 'undefined' && opts.charset !== 'utf-8' && opts.charset !== 'iso-8859-1') {
throw new Error('The charset option must be either utf-8, iso-8859-1, or undefined');
}
var charset = typeof opts.charset === 'undefined' ? defaults.charset : opts.charset;
return {
allowDots: typeof opts.allowDots === 'undefined' ? defaults.allowDots : !!opts.allowDots,
allowPrototypes: typeof opts.allowPrototypes === 'boolean' ? opts.allowPrototypes : defaults.allowPrototypes,
arrayLimit: typeof opts.arrayLimit === 'number' ? opts.arrayLimit : defaults.arrayLimit,
charset: charset,
charsetSentinel: typeof opts.charsetSentinel === 'boolean' ? opts.charsetSentinel : defaults.charsetSentinel,
comma: typeof opts.comma === 'boolean' ? opts.comma : defaults.comma,
decoder: typeof opts.decoder === 'function' ? opts.decoder : defaults.decoder,
delimiter: typeof opts.delimiter === 'string' || utils.isRegExp(opts.delimiter) ? opts.delimiter : defaults.delimiter,
depth: typeof opts.depth === 'number' ? opts.depth : defaults.depth,
ignoreQueryPrefix: opts.ignoreQueryPrefix === true,
interpretNumericEntities: typeof opts.interpretNumericEntities === 'boolean' ? opts.interpretNumericEntities : defaults.interpretNumericEntities,
parameterLimit: typeof opts.parameterLimit === 'number' ? opts.parameterLimit : defaults.parameterLimit,
parseArrays: opts.parseArrays !== false,
plainObjects: typeof opts.plainObjects === 'boolean' ? opts.plainObjects : defaults.plainObjects,
strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults.strictNullHandling
};
};
module.exports = function (str, opts) {
var options = normalizeParseOptions(opts);
options.ignoreQueryPrefix = options.ignoreQueryPrefix === true;
options.delimiter = typeof options.delimiter === 'string' || utils.isRegExp(options.delimiter) ? options.delimiter : defaults.delimiter;
options.depth = typeof options.depth === 'number' ? options.depth : defaults.depth;
options.arrayLimit = typeof options.arrayLimit === 'number' ? options.arrayLimit : defaults.arrayLimit;
options.parseArrays = options.parseArrays !== false;
options.decoder = typeof options.decoder === 'function' ? options.decoder : defaults.decoder;
options.allowDots = typeof options.allowDots === 'boolean' ? options.allowDots : defaults.allowDots;
options.plainObjects = typeof options.plainObjects === 'boolean' ? options.plainObjects : defaults.plainObjects;
options.allowPrototypes = typeof options.allowPrototypes === 'boolean' ? options.allowPrototypes : defaults.allowPrototypes;
options.parameterLimit = typeof options.parameterLimit === 'number' ? options.parameterLimit : defaults.parameterLimit;
options.strictNullHandling = typeof options.strictNullHandling === 'boolean' ? options.strictNullHandling : defaults.strictNullHandling;
if (str === '' || str === null || typeof str === 'undefined') {
return options.plainObjects ? Object.create(null) : {};
@ -280,13 +212,11 @@ module.exports = function (str, opts) {
var utils = require('./utils');
var formats = require('./formats');
var has = Object.prototype.hasOwnProperty;
var arrayPrefixGenerators = {
brackets: function brackets(prefix) { // eslint-disable-line func-name-matching
return prefix + '[]';
},
comma: 'comma',
indices: function indices(prefix, key) { // eslint-disable-line func-name-matching
return prefix + '[' + key + ']';
},
@ -295,26 +225,13 @@ var arrayPrefixGenerators = {
}
};
var isArray = Array.isArray;
var push = Array.prototype.push;
var pushToArray = function (arr, valueOrArray) {
push.apply(arr, isArray(valueOrArray) ? valueOrArray : [valueOrArray]);
};
var toISO = Date.prototype.toISOString;
var defaults = {
addQueryPrefix: false,
allowDots: false,
charset: 'utf-8',
charsetSentinel: false,
delimiter: '&',
encode: true,
encoder: utils.encode,
encodeValuesOnly: false,
formatter: formats.formatters[formats['default']],
// deprecated
indices: false,
serializeDate: function serializeDate(date) { // eslint-disable-line func-name-matching
return toISO.call(date);
},
@ -334,21 +251,16 @@ var stringify = function stringify( // eslint-disable-line func-name-matching
allowDots,
serializeDate,
formatter,
encodeValuesOnly,
charset
encodeValuesOnly
) {
var obj = object;
if (typeof filter === 'function') {
obj = filter(prefix, obj);
} else if (obj instanceof Date) {
obj = serializeDate(obj);
} else if (generateArrayPrefix === 'comma' && isArray(obj)) {
obj = obj.join(',');
}
if (obj === null) {
} else if (obj === null) {
if (strictNullHandling) {
return encoder && !encodeValuesOnly ? encoder(prefix, defaults.encoder, charset) : prefix;
return encoder && !encodeValuesOnly ? encoder(prefix, defaults.encoder) : prefix;
}
obj = '';
@ -356,8 +268,8 @@ var stringify = function stringify( // eslint-disable-line func-name-matching
if (typeof obj === 'string' || typeof obj === 'number' || typeof obj === 'boolean' || utils.isBuffer(obj)) {
if (encoder) {
var keyValue = encodeValuesOnly ? prefix : encoder(prefix, defaults.encoder, charset);
return [formatter(keyValue) + '=' + formatter(encoder(obj, defaults.encoder, charset))];
var keyValue = encodeValuesOnly ? prefix : encoder(prefix, defaults.encoder);
return [formatter(keyValue) + '=' + formatter(encoder(obj, defaults.encoder))];
}
return [formatter(prefix) + '=' + formatter(String(obj))];
}
@ -369,7 +281,7 @@ var stringify = function stringify( // eslint-disable-line func-name-matching
}
var objKeys;
if (isArray(filter)) {
if (Array.isArray(filter)) {
objKeys = filter;
} else {
var keys = Object.keys(obj);
@ -383,10 +295,10 @@ var stringify = function stringify( // eslint-disable-line func-name-matching
continue;
}
if (isArray(obj)) {
pushToArray(values, stringify(
if (Array.isArray(obj)) {
values = values.concat(stringify(
obj[key],
typeof generateArrayPrefix === 'function' ? generateArrayPrefix(prefix, key) : prefix,
generateArrayPrefix(prefix, key),
generateArrayPrefix,
strictNullHandling,
skipNulls,
@ -396,11 +308,10 @@ var stringify = function stringify( // eslint-disable-line func-name-matching
allowDots,
serializeDate,
formatter,
encodeValuesOnly,
charset
encodeValuesOnly
));
} else {
pushToArray(values, stringify(
values = values.concat(stringify(
obj[key],
prefix + (allowDots ? '.' + key : '[' + key + ']'),
generateArrayPrefix,
@ -412,8 +323,7 @@ var stringify = function stringify( // eslint-disable-line func-name-matching
allowDots,
serializeDate,
formatter,
encodeValuesOnly,
charset
encodeValuesOnly
));
}
}
@ -421,63 +331,36 @@ var stringify = function stringify( // eslint-disable-line func-name-matching
return values;
};
var normalizeStringifyOptions = function normalizeStringifyOptions(opts) {
if (!opts) {
return defaults;
}
module.exports = function (object, opts) {
var obj = object;
var options = opts ? utils.assign({}, opts) : {};
if (opts.encoder !== null && opts.encoder !== undefined && typeof opts.encoder !== 'function') {
if (options.encoder !== null && options.encoder !== undefined && typeof options.encoder !== 'function') {
throw new TypeError('Encoder has to be a function.');
}
var charset = opts.charset || defaults.charset;
if (typeof opts.charset !== 'undefined' && opts.charset !== 'utf-8' && opts.charset !== 'iso-8859-1') {
throw new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined');
var delimiter = typeof options.delimiter === 'undefined' ? defaults.delimiter : options.delimiter;
var strictNullHandling = typeof options.strictNullHandling === 'boolean' ? options.strictNullHandling : defaults.strictNullHandling;
var skipNulls = typeof options.skipNulls === 'boolean' ? options.skipNulls : defaults.skipNulls;
var encode = typeof options.encode === 'boolean' ? options.encode : defaults.encode;
var encoder = typeof options.encoder === 'function' ? options.encoder : defaults.encoder;
var sort = typeof options.sort === 'function' ? options.sort : null;
var allowDots = typeof options.allowDots === 'undefined' ? false : options.allowDots;
var serializeDate = typeof options.serializeDate === 'function' ? options.serializeDate : defaults.serializeDate;
var encodeValuesOnly = typeof options.encodeValuesOnly === 'boolean' ? options.encodeValuesOnly : defaults.encodeValuesOnly;
if (typeof options.format === 'undefined') {
options.format = formats['default'];
} else if (!Object.prototype.hasOwnProperty.call(formats.formatters, options.format)) {
throw new TypeError('Unknown format option provided.');
}
var format = formats['default'];
if (typeof opts.format !== 'undefined') {
if (!has.call(formats.formatters, opts.format)) {
throw new TypeError('Unknown format option provided.');
}
format = opts.format;
}
var formatter = formats.formatters[format];
var filter = defaults.filter;
if (typeof opts.filter === 'function' || isArray(opts.filter)) {
filter = opts.filter;
}
return {
addQueryPrefix: typeof opts.addQueryPrefix === 'boolean' ? opts.addQueryPrefix : defaults.addQueryPrefix,
allowDots: typeof opts.allowDots === 'undefined' ? defaults.allowDots : !!opts.allowDots,
charset: charset,
charsetSentinel: typeof opts.charsetSentinel === 'boolean' ? opts.charsetSentinel : defaults.charsetSentinel,
delimiter: typeof opts.delimiter === 'undefined' ? defaults.delimiter : opts.delimiter,
encode: typeof opts.encode === 'boolean' ? opts.encode : defaults.encode,
encoder: typeof opts.encoder === 'function' ? opts.encoder : defaults.encoder,
encodeValuesOnly: typeof opts.encodeValuesOnly === 'boolean' ? opts.encodeValuesOnly : defaults.encodeValuesOnly,
filter: filter,
formatter: formatter,
serializeDate: typeof opts.serializeDate === 'function' ? opts.serializeDate : defaults.serializeDate,
skipNulls: typeof opts.skipNulls === 'boolean' ? opts.skipNulls : defaults.skipNulls,
sort: typeof opts.sort === 'function' ? opts.sort : null,
strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults.strictNullHandling
};
};
module.exports = function (object, opts) {
var obj = object;
var options = normalizeStringifyOptions(opts);
var formatter = formats.formatters[options.format];
var objKeys;
var filter;
if (typeof options.filter === 'function') {
filter = options.filter;
obj = filter('', obj);
} else if (isArray(options.filter)) {
} else if (Array.isArray(options.filter)) {
filter = options.filter;
objKeys = filter;
}
@ -489,10 +372,10 @@ module.exports = function (object, opts) {
}
var arrayFormat;
if (opts && opts.arrayFormat in arrayPrefixGenerators) {
arrayFormat = opts.arrayFormat;
} else if (opts && 'indices' in opts) {
arrayFormat = opts.indices ? 'indices' : 'repeat';
if (options.arrayFormat in arrayPrefixGenerators) {
arrayFormat = options.arrayFormat;
} else if ('indices' in options) {
arrayFormat = options.indices ? 'indices' : 'repeat';
} else {
arrayFormat = 'indices';
}
@ -503,46 +386,36 @@ module.exports = function (object, opts) {
objKeys = Object.keys(obj);
}
if (options.sort) {
objKeys.sort(options.sort);
if (sort) {
objKeys.sort(sort);
}
for (var i = 0; i < objKeys.length; ++i) {
var key = objKeys[i];
if (options.skipNulls && obj[key] === null) {
if (skipNulls && obj[key] === null) {
continue;
}
pushToArray(keys, stringify(
keys = keys.concat(stringify(
obj[key],
key,
generateArrayPrefix,
options.strictNullHandling,
options.skipNulls,
options.encode ? options.encoder : null,
options.filter,
options.sort,
options.allowDots,
options.serializeDate,
options.formatter,
options.encodeValuesOnly,
options.charset
strictNullHandling,
skipNulls,
encode ? encoder : null,
filter,
sort,
allowDots,
serializeDate,
formatter,
encodeValuesOnly
));
}
var joined = keys.join(options.delimiter);
var joined = keys.join(delimiter);
var prefix = options.addQueryPrefix === true ? '?' : '';
if (options.charsetSentinel) {
if (options.charset === 'iso-8859-1') {
// encodeURIComponent('&#10003;'), the "numeric entity" representation of a checkmark
prefix += 'utf8=%26%2310003%3B&';
} else {
// encodeURIComponent('✓')
prefix += 'utf8=%E2%9C%93&';
}
}
return joined.length > 0 ? prefix + joined : '';
};
@ -550,7 +423,6 @@ module.exports = function (object, opts) {
'use strict';
var has = Object.prototype.hasOwnProperty;
var isArray = Array.isArray;
var hexTable = (function () {
var array = [];
@ -562,11 +434,13 @@ var hexTable = (function () {
}());
var compactQueue = function compactQueue(queue) {
while (queue.length > 1) {
var item = queue.pop();
var obj = item.obj[item.prop];
var obj;
if (isArray(obj)) {
while (queue.length) {
var item = queue.pop();
obj = item.obj[item.prop];
if (Array.isArray(obj)) {
var compacted = [];
for (var j = 0; j < obj.length; ++j) {
@ -578,6 +452,8 @@ var compactQueue = function compactQueue(queue) {
item.obj[item.prop] = compacted;
}
}
return obj;
};
var arrayToObject = function arrayToObject(source, options) {
@ -597,10 +473,10 @@ var merge = function merge(target, source, options) {
}
if (typeof source !== 'object') {
if (isArray(target)) {
if (Array.isArray(target)) {
target.push(source);
} else if (target && typeof target === 'object') {
if ((options && (options.plainObjects || options.allowPrototypes)) || !has.call(Object.prototype, source)) {
} else if (typeof target === 'object') {
if (options.plainObjects || options.allowPrototypes || !has.call(Object.prototype, source)) {
target[source] = true;
}
} else {
@ -610,21 +486,20 @@ var merge = function merge(target, source, options) {
return target;
}
if (!target || typeof target !== 'object') {
if (typeof target !== 'object') {
return [target].concat(source);
}
var mergeTarget = target;
if (isArray(target) && !isArray(source)) {
if (Array.isArray(target) && !Array.isArray(source)) {
mergeTarget = arrayToObject(target, options);
}
if (isArray(target) && isArray(source)) {
if (Array.isArray(target) && Array.isArray(source)) {
source.forEach(function (item, i) {
if (has.call(target, i)) {
var targetItem = target[i];
if (targetItem && typeof targetItem === 'object' && item && typeof item === 'object') {
target[i] = merge(targetItem, item, options);
if (target[i] && typeof target[i] === 'object') {
target[i] = merge(target[i], item, options);
} else {
target.push(item);
}
@ -654,21 +529,15 @@ var assign = function assignSingleSource(target, source) {
}, target);
};
var decode = function (str, decoder, charset) {
var strWithoutPlus = str.replace(/\+/g, ' ');
if (charset === 'iso-8859-1') {
// unescape never throws, no try...catch needed:
return strWithoutPlus.replace(/%[0-9a-f]{2}/gi, unescape);
}
// utf-8
var decode = function (str) {
try {
return decodeURIComponent(strWithoutPlus);
return decodeURIComponent(str.replace(/\+/g, ' '));
} catch (e) {
return strWithoutPlus;
return str;
}
};
var encode = function encode(str, defaultEncoder, charset) {
var encode = function encode(str) {
// This code was originally written by Brian White (mscdex) for the io.js core querystring library.
// It has been adapted here for stricter adherence to RFC 3986
if (str.length === 0) {
@ -677,12 +546,6 @@ var encode = function encode(str, defaultEncoder, charset) {
var string = typeof str === 'string' ? str : String(str);
if (charset === 'iso-8859-1') {
return escape(string).replace(/%u[0-9a-f]{4}/gi, function ($0) {
return '%26%23' + parseInt($0.slice(2), 16) + '%3B';
});
}
var out = '';
for (var i = 0; i < string.length; ++i) {
var c = string.charCodeAt(i);
@ -745,9 +608,7 @@ var compact = function compact(value) {
}
}
compactQueue(queue);
return value;
return compactQueue(queue);
};
var isRegExp = function isRegExp(obj) {
@ -755,21 +616,16 @@ var isRegExp = function isRegExp(obj) {
};
var isBuffer = function isBuffer(obj) {
if (!obj || typeof obj !== 'object') {
if (obj === null || typeof obj === 'undefined') {
return false;
}
return !!(obj.constructor && obj.constructor.isBuffer && obj.constructor.isBuffer(obj));
};
var combine = function combine(a, b) {
return [].concat(a, b);
};
module.exports = {
arrayToObject: arrayToObject,
assign: assign,
combine: combine,
compact: compact,
decode: decode,
encode: encode,

118
node_modules/qs/lib/parse.js generated vendored
View file

@ -8,63 +8,21 @@ var defaults = {
allowDots: false,
allowPrototypes: false,
arrayLimit: 20,
charset: 'utf-8',
charsetSentinel: false,
comma: false,
decoder: utils.decode,
delimiter: '&',
depth: 5,
ignoreQueryPrefix: false,
interpretNumericEntities: false,
parameterLimit: 1000,
parseArrays: true,
plainObjects: false,
strictNullHandling: false
};
var interpretNumericEntities = function (str) {
return str.replace(/&#(\d+);/g, function ($0, numberStr) {
return String.fromCharCode(parseInt(numberStr, 10));
});
};
// This is what browsers will submit when the ✓ character occurs in an
// application/x-www-form-urlencoded body and the encoding of the page containing
// the form is iso-8859-1, or when the submitted form has an accept-charset
// attribute of iso-8859-1. Presumably also with other charsets that do not contain
// the ✓ character, such as us-ascii.
var isoSentinel = 'utf8=%26%2310003%3B'; // encodeURIComponent('&#10003;')
// These are the percent-encoded utf-8 octets representing a checkmark, indicating that the request actually is utf-8 encoded.
var charsetSentinel = 'utf8=%E2%9C%93'; // encodeURIComponent('✓')
var parseValues = function parseQueryStringValues(str, options) {
var obj = {};
var cleanStr = options.ignoreQueryPrefix ? str.replace(/^\?/, '') : str;
var limit = options.parameterLimit === Infinity ? undefined : options.parameterLimit;
var parts = cleanStr.split(options.delimiter, limit);
var skipIndex = -1; // Keep track of where the utf8 sentinel was found
var i;
var charset = options.charset;
if (options.charsetSentinel) {
for (i = 0; i < parts.length; ++i) {
if (parts[i].indexOf('utf8=') === 0) {
if (parts[i] === charsetSentinel) {
charset = 'utf-8';
} else if (parts[i] === isoSentinel) {
charset = 'iso-8859-1';
}
skipIndex = i;
i = parts.length; // The eslint settings do not allow break;
}
}
}
for (i = 0; i < parts.length; ++i) {
if (i === skipIndex) {
continue;
}
for (var i = 0; i < parts.length; ++i) {
var part = parts[i];
var bracketEqualsPos = part.indexOf(']=');
@ -72,23 +30,14 @@ var parseValues = function parseQueryStringValues(str, options) {
var key, val;
if (pos === -1) {
key = options.decoder(part, defaults.decoder, charset);
key = options.decoder(part, defaults.decoder);
val = options.strictNullHandling ? null : '';
} else {
key = options.decoder(part.slice(0, pos), defaults.decoder, charset);
val = options.decoder(part.slice(pos + 1), defaults.decoder, charset);
key = options.decoder(part.slice(0, pos), defaults.decoder);
val = options.decoder(part.slice(pos + 1), defaults.decoder);
}
if (val && options.interpretNumericEntities && charset === 'iso-8859-1') {
val = interpretNumericEntities(val);
}
if (val && options.comma && val.indexOf(',') > -1) {
val = val.split(',');
}
if (has.call(obj, key)) {
obj[key] = utils.combine(obj[key], val);
obj[key] = [].concat(obj[key]).concat(val);
} else {
obj[key] = val;
}
@ -104,15 +53,14 @@ var parseObject = function (chain, val, options) {
var obj;
var root = chain[i];
if (root === '[]' && options.parseArrays) {
obj = [].concat(leaf);
if (root === '[]') {
obj = [];
obj = obj.concat(leaf);
} else {
obj = options.plainObjects ? Object.create(null) : {};
var cleanRoot = root.charAt(0) === '[' && root.charAt(root.length - 1) === ']' ? root.slice(1, -1) : root;
var index = parseInt(cleanRoot, 10);
if (!options.parseArrays && cleanRoot === '') {
obj = { 0: leaf };
} else if (
if (
!isNaN(index)
&& root !== cleanRoot
&& String(index) === cleanRoot
@ -154,7 +102,8 @@ var parseKeys = function parseQueryStringKeys(givenKey, val, options) {
var keys = [];
if (parent) {
// If we aren't using plain objects, optionally prefix keys that would overwrite object prototype properties
// If we aren't using plain objects, optionally prefix keys
// that would overwrite object prototype properties
if (!options.plainObjects && has.call(Object.prototype, parent)) {
if (!options.allowPrototypes) {
return;
@ -186,41 +135,24 @@ var parseKeys = function parseQueryStringKeys(givenKey, val, options) {
return parseObject(keys, val, options);
};
var normalizeParseOptions = function normalizeParseOptions(opts) {
if (!opts) {
return defaults;
}
module.exports = function (str, opts) {
var options = opts ? utils.assign({}, opts) : {};
if (opts.decoder !== null && opts.decoder !== undefined && typeof opts.decoder !== 'function') {
if (options.decoder !== null && options.decoder !== undefined && typeof options.decoder !== 'function') {
throw new TypeError('Decoder has to be a function.');
}
if (typeof opts.charset !== 'undefined' && opts.charset !== 'utf-8' && opts.charset !== 'iso-8859-1') {
throw new Error('The charset option must be either utf-8, iso-8859-1, or undefined');
}
var charset = typeof opts.charset === 'undefined' ? defaults.charset : opts.charset;
return {
allowDots: typeof opts.allowDots === 'undefined' ? defaults.allowDots : !!opts.allowDots,
allowPrototypes: typeof opts.allowPrototypes === 'boolean' ? opts.allowPrototypes : defaults.allowPrototypes,
arrayLimit: typeof opts.arrayLimit === 'number' ? opts.arrayLimit : defaults.arrayLimit,
charset: charset,
charsetSentinel: typeof opts.charsetSentinel === 'boolean' ? opts.charsetSentinel : defaults.charsetSentinel,
comma: typeof opts.comma === 'boolean' ? opts.comma : defaults.comma,
decoder: typeof opts.decoder === 'function' ? opts.decoder : defaults.decoder,
delimiter: typeof opts.delimiter === 'string' || utils.isRegExp(opts.delimiter) ? opts.delimiter : defaults.delimiter,
depth: typeof opts.depth === 'number' ? opts.depth : defaults.depth,
ignoreQueryPrefix: opts.ignoreQueryPrefix === true,
interpretNumericEntities: typeof opts.interpretNumericEntities === 'boolean' ? opts.interpretNumericEntities : defaults.interpretNumericEntities,
parameterLimit: typeof opts.parameterLimit === 'number' ? opts.parameterLimit : defaults.parameterLimit,
parseArrays: opts.parseArrays !== false,
plainObjects: typeof opts.plainObjects === 'boolean' ? opts.plainObjects : defaults.plainObjects,
strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults.strictNullHandling
};
};
module.exports = function (str, opts) {
var options = normalizeParseOptions(opts);
options.ignoreQueryPrefix = options.ignoreQueryPrefix === true;
options.delimiter = typeof options.delimiter === 'string' || utils.isRegExp(options.delimiter) ? options.delimiter : defaults.delimiter;
options.depth = typeof options.depth === 'number' ? options.depth : defaults.depth;
options.arrayLimit = typeof options.arrayLimit === 'number' ? options.arrayLimit : defaults.arrayLimit;
options.parseArrays = options.parseArrays !== false;
options.decoder = typeof options.decoder === 'function' ? options.decoder : defaults.decoder;
options.allowDots = typeof options.allowDots === 'boolean' ? options.allowDots : defaults.allowDots;
options.plainObjects = typeof options.plainObjects === 'boolean' ? options.plainObjects : defaults.plainObjects;
options.allowPrototypes = typeof options.allowPrototypes === 'boolean' ? options.allowPrototypes : defaults.allowPrototypes;
options.parameterLimit = typeof options.parameterLimit === 'number' ? options.parameterLimit : defaults.parameterLimit;
options.strictNullHandling = typeof options.strictNullHandling === 'boolean' ? options.strictNullHandling : defaults.strictNullHandling;
if (str === '' || str === null || typeof str === 'undefined') {
return options.plainObjects ? Object.create(null) : {};

159
node_modules/qs/lib/stringify.js generated vendored
View file

@ -2,13 +2,11 @@
var utils = require('./utils');
var formats = require('./formats');
var has = Object.prototype.hasOwnProperty;
var arrayPrefixGenerators = {
brackets: function brackets(prefix) { // eslint-disable-line func-name-matching
return prefix + '[]';
},
comma: 'comma',
indices: function indices(prefix, key) { // eslint-disable-line func-name-matching
return prefix + '[' + key + ']';
},
@ -17,26 +15,13 @@ var arrayPrefixGenerators = {
}
};
var isArray = Array.isArray;
var push = Array.prototype.push;
var pushToArray = function (arr, valueOrArray) {
push.apply(arr, isArray(valueOrArray) ? valueOrArray : [valueOrArray]);
};
var toISO = Date.prototype.toISOString;
var defaults = {
addQueryPrefix: false,
allowDots: false,
charset: 'utf-8',
charsetSentinel: false,
delimiter: '&',
encode: true,
encoder: utils.encode,
encodeValuesOnly: false,
formatter: formats.formatters[formats['default']],
// deprecated
indices: false,
serializeDate: function serializeDate(date) { // eslint-disable-line func-name-matching
return toISO.call(date);
},
@ -56,21 +41,16 @@ var stringify = function stringify( // eslint-disable-line func-name-matching
allowDots,
serializeDate,
formatter,
encodeValuesOnly,
charset
encodeValuesOnly
) {
var obj = object;
if (typeof filter === 'function') {
obj = filter(prefix, obj);
} else if (obj instanceof Date) {
obj = serializeDate(obj);
} else if (generateArrayPrefix === 'comma' && isArray(obj)) {
obj = obj.join(',');
}
if (obj === null) {
} else if (obj === null) {
if (strictNullHandling) {
return encoder && !encodeValuesOnly ? encoder(prefix, defaults.encoder, charset) : prefix;
return encoder && !encodeValuesOnly ? encoder(prefix, defaults.encoder) : prefix;
}
obj = '';
@ -78,8 +58,8 @@ var stringify = function stringify( // eslint-disable-line func-name-matching
if (typeof obj === 'string' || typeof obj === 'number' || typeof obj === 'boolean' || utils.isBuffer(obj)) {
if (encoder) {
var keyValue = encodeValuesOnly ? prefix : encoder(prefix, defaults.encoder, charset);
return [formatter(keyValue) + '=' + formatter(encoder(obj, defaults.encoder, charset))];
var keyValue = encodeValuesOnly ? prefix : encoder(prefix, defaults.encoder);
return [formatter(keyValue) + '=' + formatter(encoder(obj, defaults.encoder))];
}
return [formatter(prefix) + '=' + formatter(String(obj))];
}
@ -91,7 +71,7 @@ var stringify = function stringify( // eslint-disable-line func-name-matching
}
var objKeys;
if (isArray(filter)) {
if (Array.isArray(filter)) {
objKeys = filter;
} else {
var keys = Object.keys(obj);
@ -105,10 +85,10 @@ var stringify = function stringify( // eslint-disable-line func-name-matching
continue;
}
if (isArray(obj)) {
pushToArray(values, stringify(
if (Array.isArray(obj)) {
values = values.concat(stringify(
obj[key],
typeof generateArrayPrefix === 'function' ? generateArrayPrefix(prefix, key) : prefix,
generateArrayPrefix(prefix, key),
generateArrayPrefix,
strictNullHandling,
skipNulls,
@ -118,11 +98,10 @@ var stringify = function stringify( // eslint-disable-line func-name-matching
allowDots,
serializeDate,
formatter,
encodeValuesOnly,
charset
encodeValuesOnly
));
} else {
pushToArray(values, stringify(
values = values.concat(stringify(
obj[key],
prefix + (allowDots ? '.' + key : '[' + key + ']'),
generateArrayPrefix,
@ -134,8 +113,7 @@ var stringify = function stringify( // eslint-disable-line func-name-matching
allowDots,
serializeDate,
formatter,
encodeValuesOnly,
charset
encodeValuesOnly
));
}
}
@ -143,63 +121,36 @@ var stringify = function stringify( // eslint-disable-line func-name-matching
return values;
};
var normalizeStringifyOptions = function normalizeStringifyOptions(opts) {
if (!opts) {
return defaults;
}
module.exports = function (object, opts) {
var obj = object;
var options = opts ? utils.assign({}, opts) : {};
if (opts.encoder !== null && opts.encoder !== undefined && typeof opts.encoder !== 'function') {
if (options.encoder !== null && options.encoder !== undefined && typeof options.encoder !== 'function') {
throw new TypeError('Encoder has to be a function.');
}
var charset = opts.charset || defaults.charset;
if (typeof opts.charset !== 'undefined' && opts.charset !== 'utf-8' && opts.charset !== 'iso-8859-1') {
throw new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined');
var delimiter = typeof options.delimiter === 'undefined' ? defaults.delimiter : options.delimiter;
var strictNullHandling = typeof options.strictNullHandling === 'boolean' ? options.strictNullHandling : defaults.strictNullHandling;
var skipNulls = typeof options.skipNulls === 'boolean' ? options.skipNulls : defaults.skipNulls;
var encode = typeof options.encode === 'boolean' ? options.encode : defaults.encode;
var encoder = typeof options.encoder === 'function' ? options.encoder : defaults.encoder;
var sort = typeof options.sort === 'function' ? options.sort : null;
var allowDots = typeof options.allowDots === 'undefined' ? false : options.allowDots;
var serializeDate = typeof options.serializeDate === 'function' ? options.serializeDate : defaults.serializeDate;
var encodeValuesOnly = typeof options.encodeValuesOnly === 'boolean' ? options.encodeValuesOnly : defaults.encodeValuesOnly;
if (typeof options.format === 'undefined') {
options.format = formats['default'];
} else if (!Object.prototype.hasOwnProperty.call(formats.formatters, options.format)) {
throw new TypeError('Unknown format option provided.');
}
var format = formats['default'];
if (typeof opts.format !== 'undefined') {
if (!has.call(formats.formatters, opts.format)) {
throw new TypeError('Unknown format option provided.');
}
format = opts.format;
}
var formatter = formats.formatters[format];
var filter = defaults.filter;
if (typeof opts.filter === 'function' || isArray(opts.filter)) {
filter = opts.filter;
}
return {
addQueryPrefix: typeof opts.addQueryPrefix === 'boolean' ? opts.addQueryPrefix : defaults.addQueryPrefix,
allowDots: typeof opts.allowDots === 'undefined' ? defaults.allowDots : !!opts.allowDots,
charset: charset,
charsetSentinel: typeof opts.charsetSentinel === 'boolean' ? opts.charsetSentinel : defaults.charsetSentinel,
delimiter: typeof opts.delimiter === 'undefined' ? defaults.delimiter : opts.delimiter,
encode: typeof opts.encode === 'boolean' ? opts.encode : defaults.encode,
encoder: typeof opts.encoder === 'function' ? opts.encoder : defaults.encoder,
encodeValuesOnly: typeof opts.encodeValuesOnly === 'boolean' ? opts.encodeValuesOnly : defaults.encodeValuesOnly,
filter: filter,
formatter: formatter,
serializeDate: typeof opts.serializeDate === 'function' ? opts.serializeDate : defaults.serializeDate,
skipNulls: typeof opts.skipNulls === 'boolean' ? opts.skipNulls : defaults.skipNulls,
sort: typeof opts.sort === 'function' ? opts.sort : null,
strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults.strictNullHandling
};
};
module.exports = function (object, opts) {
var obj = object;
var options = normalizeStringifyOptions(opts);
var formatter = formats.formatters[options.format];
var objKeys;
var filter;
if (typeof options.filter === 'function') {
filter = options.filter;
obj = filter('', obj);
} else if (isArray(options.filter)) {
} else if (Array.isArray(options.filter)) {
filter = options.filter;
objKeys = filter;
}
@ -211,10 +162,10 @@ module.exports = function (object, opts) {
}
var arrayFormat;
if (opts && opts.arrayFormat in arrayPrefixGenerators) {
arrayFormat = opts.arrayFormat;
} else if (opts && 'indices' in opts) {
arrayFormat = opts.indices ? 'indices' : 'repeat';
if (options.arrayFormat in arrayPrefixGenerators) {
arrayFormat = options.arrayFormat;
} else if ('indices' in options) {
arrayFormat = options.indices ? 'indices' : 'repeat';
} else {
arrayFormat = 'indices';
}
@ -225,45 +176,35 @@ module.exports = function (object, opts) {
objKeys = Object.keys(obj);
}
if (options.sort) {
objKeys.sort(options.sort);
if (sort) {
objKeys.sort(sort);
}
for (var i = 0; i < objKeys.length; ++i) {
var key = objKeys[i];
if (options.skipNulls && obj[key] === null) {
if (skipNulls && obj[key] === null) {
continue;
}
pushToArray(keys, stringify(
keys = keys.concat(stringify(
obj[key],
key,
generateArrayPrefix,
options.strictNullHandling,
options.skipNulls,
options.encode ? options.encoder : null,
options.filter,
options.sort,
options.allowDots,
options.serializeDate,
options.formatter,
options.encodeValuesOnly,
options.charset
strictNullHandling,
skipNulls,
encode ? encoder : null,
filter,
sort,
allowDots,
serializeDate,
formatter,
encodeValuesOnly
));
}
var joined = keys.join(options.delimiter);
var joined = keys.join(delimiter);
var prefix = options.addQueryPrefix === true ? '?' : '';
if (options.charsetSentinel) {
if (options.charset === 'iso-8859-1') {
// encodeURIComponent('&#10003;'), the "numeric entity" representation of a checkmark
prefix += 'utf8=%26%2310003%3B&';
} else {
// encodeURIComponent('✓')
prefix += 'utf8=%E2%9C%93&';
}
}
return joined.length > 0 ? prefix + joined : '';
};

61
node_modules/qs/lib/utils.js generated vendored
View file

@ -1,7 +1,6 @@
'use strict';
var has = Object.prototype.hasOwnProperty;
var isArray = Array.isArray;
var hexTable = (function () {
var array = [];
@ -13,11 +12,13 @@ var hexTable = (function () {
}());
var compactQueue = function compactQueue(queue) {
while (queue.length > 1) {
var item = queue.pop();
var obj = item.obj[item.prop];
var obj;
if (isArray(obj)) {
while (queue.length) {
var item = queue.pop();
obj = item.obj[item.prop];
if (Array.isArray(obj)) {
var compacted = [];
for (var j = 0; j < obj.length; ++j) {
@ -29,6 +30,8 @@ var compactQueue = function compactQueue(queue) {
item.obj[item.prop] = compacted;
}
}
return obj;
};
var arrayToObject = function arrayToObject(source, options) {
@ -48,10 +51,10 @@ var merge = function merge(target, source, options) {
}
if (typeof source !== 'object') {
if (isArray(target)) {
if (Array.isArray(target)) {
target.push(source);
} else if (target && typeof target === 'object') {
if ((options && (options.plainObjects || options.allowPrototypes)) || !has.call(Object.prototype, source)) {
} else if (typeof target === 'object') {
if (options.plainObjects || options.allowPrototypes || !has.call(Object.prototype, source)) {
target[source] = true;
}
} else {
@ -61,21 +64,20 @@ var merge = function merge(target, source, options) {
return target;
}
if (!target || typeof target !== 'object') {
if (typeof target !== 'object') {
return [target].concat(source);
}
var mergeTarget = target;
if (isArray(target) && !isArray(source)) {
if (Array.isArray(target) && !Array.isArray(source)) {
mergeTarget = arrayToObject(target, options);
}
if (isArray(target) && isArray(source)) {
if (Array.isArray(target) && Array.isArray(source)) {
source.forEach(function (item, i) {
if (has.call(target, i)) {
var targetItem = target[i];
if (targetItem && typeof targetItem === 'object' && item && typeof item === 'object') {
target[i] = merge(targetItem, item, options);
if (target[i] && typeof target[i] === 'object') {
target[i] = merge(target[i], item, options);
} else {
target.push(item);
}
@ -105,21 +107,15 @@ var assign = function assignSingleSource(target, source) {
}, target);
};
var decode = function (str, decoder, charset) {
var strWithoutPlus = str.replace(/\+/g, ' ');
if (charset === 'iso-8859-1') {
// unescape never throws, no try...catch needed:
return strWithoutPlus.replace(/%[0-9a-f]{2}/gi, unescape);
}
// utf-8
var decode = function (str) {
try {
return decodeURIComponent(strWithoutPlus);
return decodeURIComponent(str.replace(/\+/g, ' '));
} catch (e) {
return strWithoutPlus;
return str;
}
};
var encode = function encode(str, defaultEncoder, charset) {
var encode = function encode(str) {
// This code was originally written by Brian White (mscdex) for the io.js core querystring library.
// It has been adapted here for stricter adherence to RFC 3986
if (str.length === 0) {
@ -128,12 +124,6 @@ var encode = function encode(str, defaultEncoder, charset) {
var string = typeof str === 'string' ? str : String(str);
if (charset === 'iso-8859-1') {
return escape(string).replace(/%u[0-9a-f]{4}/gi, function ($0) {
return '%26%23' + parseInt($0.slice(2), 16) + '%3B';
});
}
var out = '';
for (var i = 0; i < string.length; ++i) {
var c = string.charCodeAt(i);
@ -196,9 +186,7 @@ var compact = function compact(value) {
}
}
compactQueue(queue);
return value;
return compactQueue(queue);
};
var isRegExp = function isRegExp(obj) {
@ -206,21 +194,16 @@ var isRegExp = function isRegExp(obj) {
};
var isBuffer = function isBuffer(obj) {
if (!obj || typeof obj !== 'object') {
if (obj === null || typeof obj === 'undefined') {
return false;
}
return !!(obj.constructor && obj.constructor.isBuffer && obj.constructor.isBuffer(obj));
};
var combine = function combine(a, b) {
return [].concat(a, b);
};
module.exports = {
arrayToObject: arrayToObject,
assign: assign,
combine: combine,
compact: compact,
decode: decode,
encode: encode,

51
node_modules/qs/package.json generated vendored
View file

@ -1,28 +1,27 @@
{
"_from": "qs@6.7.0",
"_id": "qs@6.7.0",
"_from": "qs@~6.5.2",
"_id": "qs@6.5.2",
"_inBundle": false,
"_integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==",
"_integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==",
"_location": "/qs",
"_phantomChildren": {},
"_requested": {
"type": "version",
"type": "range",
"registry": true,
"raw": "qs@6.7.0",
"raw": "qs@~6.5.2",
"name": "qs",
"escapedName": "qs",
"rawSpec": "6.7.0",
"rawSpec": "~6.5.2",
"saveSpec": null,
"fetchSpec": "6.7.0"
"fetchSpec": "~6.5.2"
},
"_requiredBy": [
"/body-parser",
"/express"
"/request"
],
"_resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz",
"_shasum": "41dc1a015e3d581f1621776be31afb2876a9b1bc",
"_spec": "qs@6.7.0",
"_where": "D:\\tftapp\\node_modules\\express",
"_resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz",
"_shasum": "cb3ae806e8740444584ef154ce8ee98d403f3e36",
"_spec": "qs@~6.5.2",
"_where": "D:\\TFTPaths\\node_modules\\request",
"bugs": {
"url": "https://github.com/ljharb/qs/issues"
},
@ -38,20 +37,18 @@
"deprecated": false,
"description": "A querystring parser that supports nesting and arrays, with a depth limit",
"devDependencies": {
"@ljharb/eslint-config": "^13.1.1",
"browserify": "^16.2.3",
"covert": "^1.1.1",
"@ljharb/eslint-config": "^12.2.1",
"browserify": "^16.2.0",
"covert": "^1.1.0",
"editorconfig-tools": "^0.1.1",
"eslint": "^5.15.3",
"eslint": "^4.19.1",
"evalmd": "^0.0.17",
"for-each": "^0.3.3",
"iconv-lite": "^0.4.24",
"iconv-lite": "^0.4.21",
"mkdirp": "^0.5.1",
"object-inspect": "^1.6.0",
"qs-iconv": "^1.0.4",
"safe-publish-latest": "^1.1.2",
"safe-publish-latest": "^1.1.1",
"safer-buffer": "^2.1.2",
"tape": "^4.10.1"
"tape": "^4.9.0"
},
"engines": {
"node": ">=0.6"
@ -59,11 +56,7 @@
"homepage": "https://github.com/ljharb/qs",
"keywords": [
"querystring",
"qs",
"query",
"url",
"parse",
"stringify"
"qs"
],
"license": "BSD-3-Clause",
"main": "lib/index.js",
@ -76,12 +69,12 @@
"coverage": "covert test",
"dist": "mkdirp dist && browserify --standalone Qs lib/index.js > dist/qs.js",
"lint": "eslint lib/*.js test/*.js",
"postlint": "editorconfig-tools check * lib/* test/*",
"prelint": "editorconfig-tools check * lib/* test/*",
"prepublish": "safe-publish-latest && npm run dist",
"pretest": "npm run --silent readme && npm run --silent lint",
"readme": "evalmd README.md",
"test": "npm run --silent coverage",
"tests-only": "node test"
},
"version": "6.7.0"
"version": "6.5.2"
}

2
node_modules/qs/test/.eslintrc generated vendored
View file

@ -3,9 +3,7 @@
"array-bracket-newline": 0,
"array-element-newline": 0,
"consistent-return": 2,
"function-paren-newline": 0,
"max-lines": 0,
"max-lines-per-function": 0,
"max-nested-callbacks": [2, 3],
"max-statements": 0,
"no-buffer-constructor": 0,

108
node_modules/qs/test/parse.js generated vendored
View file

@ -237,14 +237,6 @@ test('parse()', function (t) {
st.end();
});
t.test('parses jquery-param strings', function (st) {
// readable = 'filter[0][]=int1&filter[0][]==&filter[0][]=77&filter[]=and&filter[2][]=int2&filter[2][]==&filter[2][]=8'
var encoded = 'filter%5B0%5D%5B%5D=int1&filter%5B0%5D%5B%5D=%3D&filter%5B0%5D%5B%5D=77&filter%5B%5D=and&filter%5B2%5D%5B%5D=int2&filter%5B2%5D%5B%5D=%3D&filter%5B2%5D%5B%5D=8';
var expected = { filter: [['int1', '=', '77'], 'and', ['int2', '=', '8']] };
st.deepEqual(qs.parse(encoded), expected);
st.end();
});
t.test('continues parsing when no parent is found', function (st) {
st.deepEqual(qs.parse('[]=&a=b'), { 0: '', a: 'b' });
st.deepEqual(qs.parse('[]&a=b', { strictNullHandling: true }), { 0: null, a: 'b' });
@ -265,7 +257,7 @@ test('parse()', function (t) {
st.end();
});
t.test('should not throw when a native prototype has an enumerable property', function (st) {
t.test('should not throw when a native prototype has an enumerable property', { parallel: false }, function (st) {
Object.prototype.crash = '';
Array.prototype.crash = '';
st.doesNotThrow(qs.parse.bind(null, 'a=b'));
@ -310,14 +302,7 @@ test('parse()', function (t) {
});
t.test('allows disabling array parsing', function (st) {
var indices = qs.parse('a[0]=b&a[1]=c', { parseArrays: false });
st.deepEqual(indices, { a: { 0: 'b', 1: 'c' } });
st.equal(Array.isArray(indices.a), false, 'parseArrays:false, indices case is not an array');
var emptyBrackets = qs.parse('a[]=b', { parseArrays: false });
st.deepEqual(emptyBrackets, { a: { 0: 'b' } });
st.equal(Array.isArray(emptyBrackets.a), false, 'parseArrays:false, empty brackets case is not an array');
st.deepEqual(qs.parse('a[0]=b&a[1]=c', { parseArrays: false }), { a: { 0: 'b', 1: 'c' } });
st.end();
});
@ -347,15 +332,6 @@ test('parse()', function (t) {
st.end();
});
t.test('parses string with comma as array divider', function (st) {
st.deepEqual(qs.parse('foo=bar,tee', { comma: true }), { foo: ['bar', 'tee'] });
st.deepEqual(qs.parse('foo[bar]=coffee,tee', { comma: true }), { foo: { bar: ['coffee', 'tee'] } });
st.deepEqual(qs.parse('foo=', { comma: true }), { foo: '' });
st.deepEqual(qs.parse('foo', { comma: true }), { foo: '' });
st.deepEqual(qs.parse('foo', { comma: true, strictNullHandling: true }), { foo: null });
st.end();
});
t.test('parses an object in dot notation', function (st) {
var input = {
'user.name': { 'pop[bob]': 3 },
@ -564,7 +540,7 @@ test('parse()', function (t) {
result.push(parseInt(parts[1], 16));
parts = reg.exec(str);
}
return String(iconv.decode(SaferBuffer.from(result), 'shift_jis'));
return iconv.decode(SaferBuffer.from(result), 'shift_jis').toString();
}
}), { : '大阪府' });
st.end();
@ -594,83 +570,5 @@ test('parse()', function (t) {
st.end();
});
t.test('throws if an invalid charset is specified', function (st) {
st['throws'](function () {
qs.parse('a=b', { charset: 'foobar' });
}, new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined'));
st.end();
});
t.test('parses an iso-8859-1 string if asked to', function (st) {
st.deepEqual(qs.parse('%A2=%BD', { charset: 'iso-8859-1' }), { '¢': '½' });
st.end();
});
var urlEncodedCheckmarkInUtf8 = '%E2%9C%93';
var urlEncodedOSlashInUtf8 = '%C3%B8';
var urlEncodedNumCheckmark = '%26%2310003%3B';
var urlEncodedNumSmiley = '%26%239786%3B';
t.test('prefers an utf-8 charset specified by the utf8 sentinel to a default charset of iso-8859-1', function (st) {
st.deepEqual(qs.parse('utf8=' + urlEncodedCheckmarkInUtf8 + '&' + urlEncodedOSlashInUtf8 + '=' + urlEncodedOSlashInUtf8, { charsetSentinel: true, charset: 'iso-8859-1' }), { ø: 'ø' });
st.end();
});
t.test('prefers an iso-8859-1 charset specified by the utf8 sentinel to a default charset of utf-8', function (st) {
st.deepEqual(qs.parse('utf8=' + urlEncodedNumCheckmark + '&' + urlEncodedOSlashInUtf8 + '=' + urlEncodedOSlashInUtf8, { charsetSentinel: true, charset: 'utf-8' }), { 'ø': 'ø' });
st.end();
});
t.test('does not require the utf8 sentinel to be defined before the parameters whose decoding it affects', function (st) {
st.deepEqual(qs.parse('a=' + urlEncodedOSlashInUtf8 + '&utf8=' + urlEncodedNumCheckmark, { charsetSentinel: true, charset: 'utf-8' }), { a: 'ø' });
st.end();
});
t.test('should ignore an utf8 sentinel with an unknown value', function (st) {
st.deepEqual(qs.parse('utf8=foo&' + urlEncodedOSlashInUtf8 + '=' + urlEncodedOSlashInUtf8, { charsetSentinel: true, charset: 'utf-8' }), { ø: 'ø' });
st.end();
});
t.test('uses the utf8 sentinel to switch to utf-8 when no default charset is given', function (st) {
st.deepEqual(qs.parse('utf8=' + urlEncodedCheckmarkInUtf8 + '&' + urlEncodedOSlashInUtf8 + '=' + urlEncodedOSlashInUtf8, { charsetSentinel: true }), { ø: 'ø' });
st.end();
});
t.test('uses the utf8 sentinel to switch to iso-8859-1 when no default charset is given', function (st) {
st.deepEqual(qs.parse('utf8=' + urlEncodedNumCheckmark + '&' + urlEncodedOSlashInUtf8 + '=' + urlEncodedOSlashInUtf8, { charsetSentinel: true }), { 'ø': 'ø' });
st.end();
});
t.test('interprets numeric entities in iso-8859-1 when `interpretNumericEntities`', function (st) {
st.deepEqual(qs.parse('foo=' + urlEncodedNumSmiley, { charset: 'iso-8859-1', interpretNumericEntities: true }), { foo: '☺' });
st.end();
});
t.test('handles a custom decoder returning `null`, in the `iso-8859-1` charset, when `interpretNumericEntities`', function (st) {
st.deepEqual(qs.parse('foo=&bar=' + urlEncodedNumSmiley, {
charset: 'iso-8859-1',
decoder: function (str, defaultDecoder, charset) {
return str ? defaultDecoder(str, defaultDecoder, charset) : null;
},
interpretNumericEntities: true
}), { foo: null, bar: '☺' });
st.end();
});
t.test('does not interpret numeric entities in iso-8859-1 when `interpretNumericEntities` is absent', function (st) {
st.deepEqual(qs.parse('foo=' + urlEncodedNumSmiley, { charset: 'iso-8859-1' }), { foo: '&#9786;' });
st.end();
});
t.test('does not interpret numeric entities when the charset is utf-8, even when `interpretNumericEntities`', function (st) {
st.deepEqual(qs.parse('foo=' + urlEncodedNumSmiley, { charset: 'utf-8', interpretNumericEntities: true }), { foo: '&#9786;' });
st.end();
});
t.test('does not interpret %uXXXX syntax in iso-8859-1 mode', function (st) {
st.deepEqual(qs.parse('%u263A=%u263A', { charset: 'iso-8859-1' }), { '%u263A': '%u263A' });
st.end();
});
t.end();
});

86
node_modules/qs/test/stringify.js generated vendored
View file

@ -19,15 +19,6 @@ test('stringify()', function (t) {
st.end();
});
t.test('stringifies falsy values', function (st) {
st.equal(qs.stringify(undefined), '');
st.equal(qs.stringify(null), '');
st.equal(qs.stringify(null, { strictNullHandling: true }), '');
st.equal(qs.stringify(false), '');
st.equal(qs.stringify(0), '');
st.end();
});
t.test('adds query prefix', function (st) {
st.equal(qs.stringify({ a: 'b' }, { addQueryPrefix: true }), '?a=b');
st.end();
@ -38,13 +29,6 @@ test('stringify()', function (t) {
st.end();
});
t.test('stringifies nested falsy values', function (st) {
st.equal(qs.stringify({ a: { b: { c: null } } }), 'a%5Bb%5D%5Bc%5D=');
st.equal(qs.stringify({ a: { b: { c: null } } }, { strictNullHandling: true }), 'a%5Bb%5D%5Bc%5D');
st.equal(qs.stringify({ a: { b: { c: false } } }), 'a%5Bb%5D%5Bc%5D=false');
st.end();
});
t.test('stringifies a nested object', function (st) {
st.equal(qs.stringify({ a: { b: 'c' } }), 'a%5Bb%5D=c');
st.equal(qs.stringify({ a: { b: { c: { d: 'e' } } } }), 'a%5Bb%5D%5Bc%5D%5Bd%5D=e');
@ -68,11 +52,6 @@ test('stringify()', function (t) {
'a%5B%5D=b&a%5B%5D=c&a%5B%5D=d',
'brackets => brackets'
);
st.equal(
qs.stringify({ a: ['b', 'c', 'd'] }, { arrayFormat: 'comma' }),
'a=b%2Cc%2Cd',
'comma => comma'
);
st.equal(
qs.stringify({ a: ['b', 'c', 'd'] }),
'a%5B0%5D=b&a%5B1%5D=c&a%5B2%5D=d',
@ -99,7 +78,6 @@ test('stringify()', function (t) {
t.test('stringifies a nested array value', function (st) {
st.equal(qs.stringify({ a: { b: ['c', 'd'] } }, { arrayFormat: 'indices' }), 'a%5Bb%5D%5B0%5D=c&a%5Bb%5D%5B1%5D=d');
st.equal(qs.stringify({ a: { b: ['c', 'd'] } }, { arrayFormat: 'brackets' }), 'a%5Bb%5D%5B%5D=c&a%5Bb%5D%5B%5D=d');
st.equal(qs.stringify({ a: { b: ['c', 'd'] } }, { arrayFormat: 'comma' }), 'a%5Bb%5D=c%2Cd'); // a[b]=c,d
st.equal(qs.stringify({ a: { b: ['c', 'd'] } }), 'a%5Bb%5D%5B0%5D=c&a%5Bb%5D%5B1%5D=d');
st.end();
});
@ -121,14 +99,6 @@ test('stringify()', function (t) {
'a.b[]=c&a.b[]=d',
'brackets: stringifies with dots + brackets'
);
st.equal(
qs.stringify(
{ a: { b: ['c', 'd'] } },
{ allowDots: true, encode: false, arrayFormat: 'comma' }
),
'a.b=c,d',
'comma: stringifies with dots + comma'
);
st.equal(
qs.stringify(
{ a: { b: ['c', 'd'] } },
@ -143,12 +113,12 @@ test('stringify()', function (t) {
t.test('stringifies an object inside an array', function (st) {
st.equal(
qs.stringify({ a: [{ b: 'c' }] }, { arrayFormat: 'indices' }),
'a%5B0%5D%5Bb%5D=c', // a[0][b]=c
'a%5B0%5D%5Bb%5D=c',
'indices => brackets'
);
st.equal(
qs.stringify({ a: [{ b: 'c' }] }, { arrayFormat: 'brackets' }),
'a%5B%5D%5Bb%5D=c', // a[][b]=c
'a%5B%5D%5Bb%5D=c',
'brackets => brackets'
);
st.equal(
@ -616,38 +586,6 @@ test('stringify()', function (t) {
st.end();
});
t.test('throws if an invalid charset is specified', function (st) {
st['throws'](function () {
qs.stringify({ a: 'b' }, { charset: 'foobar' });
}, new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined'));
st.end();
});
t.test('respects a charset of iso-8859-1', function (st) {
st.equal(qs.stringify({ æ: 'æ' }, { charset: 'iso-8859-1' }), '%E6=%E6');
st.end();
});
t.test('encodes unrepresentable chars as numeric entities in iso-8859-1 mode', function (st) {
st.equal(qs.stringify({ a: '☺' }, { charset: 'iso-8859-1' }), 'a=%26%239786%3B');
st.end();
});
t.test('respects an explicit charset of utf-8 (the default)', function (st) {
st.equal(qs.stringify({ a: 'æ' }, { charset: 'utf-8' }), 'a=%C3%A6');
st.end();
});
t.test('adds the right sentinel when instructed to and the charset is utf-8', function (st) {
st.equal(qs.stringify({ a: 'æ' }, { charsetSentinel: true, charset: 'utf-8' }), 'utf8=%E2%9C%93&a=%C3%A6');
st.end();
});
t.test('adds the right sentinel when instructed to and the charset is iso-8859-1', function (st) {
st.equal(qs.stringify({ a: 'æ' }, { charsetSentinel: true, charset: 'iso-8859-1' }), 'utf8=%26%2310003%3B&a=%E6');
st.end();
});
t.test('does not mutate the options argument', function (st) {
var options = {};
qs.stringify({}, options);
@ -655,25 +593,5 @@ test('stringify()', function (t) {
st.end();
});
t.test('strictNullHandling works with custom filter', function (st) {
var filter = function (prefix, value) {
return value;
};
var options = { strictNullHandling: true, filter: filter };
st.equal(qs.stringify({ key: null }, options), 'key');
st.end();
});
t.test('strictNullHandling works with null serializeDate', function (st) {
var serializeDate = function () {
return null;
};
var options = { strictNullHandling: true, serializeDate: serializeDate };
var date = new Date();
st.equal(qs.stringify({ key: date }, options), 'key');
st.end();
});
t.end();
});

102
node_modules/qs/test/utils.js generated vendored
View file

@ -1,16 +1,9 @@
'use strict';
var test = require('tape');
var inspect = require('object-inspect');
var SaferBuffer = require('safer-buffer').Buffer;
var forEach = require('for-each');
var utils = require('../lib/utils');
test('merge()', function (t) {
t.deepEqual(utils.merge(null, true), [null, true], 'merges true into null');
t.deepEqual(utils.merge(null, [42]), [null, 42], 'merges null into an array');
t.deepEqual(utils.merge({ a: 'b' }, { a: 'c' }), { a: ['b', 'c'] }, 'merges two objects with the same key');
var oneMerged = utils.merge({ foo: 'bar' }, { foo: { first: '123' } });
@ -25,33 +18,6 @@ test('merge()', function (t) {
var nestedArrays = utils.merge({ foo: ['baz'] }, { foo: ['bar', 'xyzzy'] });
t.deepEqual(nestedArrays, { foo: ['baz', 'bar', 'xyzzy'] });
var noOptionsNonObjectSource = utils.merge({ foo: 'baz' }, 'bar');
t.deepEqual(noOptionsNonObjectSource, { foo: 'baz', bar: true });
t.test(
'avoids invoking array setters unnecessarily',
{ skip: typeof Object.defineProperty !== 'function' },
function (st) {
var setCount = 0;
var getCount = 0;
var observed = [];
Object.defineProperty(observed, 0, {
get: function () {
getCount += 1;
return { bar: 'baz' };
},
set: function () { setCount += 1; }
});
utils.merge(observed, [null]);
st.equal(setCount, 0);
st.equal(getCount, 1);
observed[0] = observed[0]; // eslint-disable-line no-self-assign
st.equal(setCount, 1);
st.equal(getCount, 2);
st.end();
}
);
t.end();
});
@ -66,71 +32,3 @@ test('assign()', function (t) {
t.end();
});
test('combine()', function (t) {
t.test('both arrays', function (st) {
var a = [1];
var b = [2];
var combined = utils.combine(a, b);
st.deepEqual(a, [1], 'a is not mutated');
st.deepEqual(b, [2], 'b is not mutated');
st.notEqual(a, combined, 'a !== combined');
st.notEqual(b, combined, 'b !== combined');
st.deepEqual(combined, [1, 2], 'combined is a + b');
st.end();
});
t.test('one array, one non-array', function (st) {
var aN = 1;
var a = [aN];
var bN = 2;
var b = [bN];
var combinedAnB = utils.combine(aN, b);
st.deepEqual(b, [bN], 'b is not mutated');
st.notEqual(aN, combinedAnB, 'aN + b !== aN');
st.notEqual(a, combinedAnB, 'aN + b !== a');
st.notEqual(bN, combinedAnB, 'aN + b !== bN');
st.notEqual(b, combinedAnB, 'aN + b !== b');
st.deepEqual([1, 2], combinedAnB, 'first argument is array-wrapped when not an array');
var combinedABn = utils.combine(a, bN);
st.deepEqual(a, [aN], 'a is not mutated');
st.notEqual(aN, combinedABn, 'a + bN !== aN');
st.notEqual(a, combinedABn, 'a + bN !== a');
st.notEqual(bN, combinedABn, 'a + bN !== bN');
st.notEqual(b, combinedABn, 'a + bN !== b');
st.deepEqual([1, 2], combinedABn, 'second argument is array-wrapped when not an array');
st.end();
});
t.test('neither is an array', function (st) {
var combined = utils.combine(1, 2);
st.notEqual(1, combined, '1 + 2 !== 1');
st.notEqual(2, combined, '1 + 2 !== 2');
st.deepEqual([1, 2], combined, 'both arguments are array-wrapped when not an array');
st.end();
});
t.end();
});
test('isBuffer()', function (t) {
forEach([null, undefined, true, false, '', 'abc', 42, 0, NaN, {}, [], function () {}, /a/g], function (x) {
t.equal(utils.isBuffer(x), false, inspect(x) + ' is not a buffer');
});
var fakeBuffer = { constructor: Buffer };
t.equal(utils.isBuffer(fakeBuffer), false, 'fake buffer is not a buffer');
var saferBuffer = SaferBuffer.from('abc');
t.equal(utils.isBuffer(saferBuffer), true, 'SaferBuffer instance is a buffer');
var buffer = Buffer.from ? Buffer.from('abc') : new Buffer('abc');
t.equal(utils.isBuffer(buffer), true, 'real Buffer instance is a buffer');
t.end();
});

View file

@ -1,5 +1,5 @@
{
"_from": "range-parser@~1.2.1",
"_from": "range-parser@^1.2.1",
"_id": "range-parser@1.2.1",
"_inBundle": false,
"_integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==",
@ -8,21 +8,23 @@
"_requested": {
"type": "range",
"registry": true,
"raw": "range-parser@~1.2.1",
"raw": "range-parser@^1.2.1",
"name": "range-parser",
"escapedName": "range-parser",
"rawSpec": "~1.2.1",
"rawSpec": "^1.2.1",
"saveSpec": null,
"fetchSpec": "~1.2.1"
"fetchSpec": "^1.2.1"
},
"_requiredBy": [
"/express",
"/send"
"/karma",
"/send",
"/webpack-dev-middleware"
],
"_resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
"_shasum": "3cf37023d199e1c24d1a55b84800c2f3e6468031",
"_spec": "range-parser@~1.2.1",
"_where": "D:\\tftapp\\node_modules\\express",
"_spec": "range-parser@^1.2.1",
"_where": "D:\\TFTPaths\\node_modules\\webpack-dev-middleware",
"author": {
"name": "TJ Holowaychuk",
"email": "tj@vision-media.ca",

2
node_modules/raw-body/package.json generated vendored
View file

@ -21,7 +21,7 @@
"_resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz",
"_shasum": "a1ce6fb9c9bc356ca52e89256ab59059e13d0332",
"_spec": "raw-body@2.4.0",
"_where": "D:\\tftapp\\node_modules\\body-parser",
"_where": "D:\\TFTPaths\\node_modules\\body-parser",
"author": {
"name": "Jonathan Ong",
"email": "me@jongleberry.com",

View file

@ -1,28 +1,55 @@
{
"_from": "safe-buffer@5.1.2",
"_from": "safe-buffer@~5.1.1",
"_id": "safe-buffer@5.1.2",
"_inBundle": false,
"_integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
"_location": "/safe-buffer",
"_phantomChildren": {},
"_requested": {
"type": "version",
"type": "range",
"registry": true,
"raw": "safe-buffer@5.1.2",
"raw": "safe-buffer@~5.1.1",
"name": "safe-buffer",
"escapedName": "safe-buffer",
"rawSpec": "5.1.2",
"rawSpec": "~5.1.1",
"saveSpec": null,
"fetchSpec": "5.1.2"
"fetchSpec": "~5.1.1"
},
"_requiredBy": [
"/browserify-aes",
"/browserify-des",
"/cipher-base",
"/compression",
"/content-disposition",
"/express"
"/convert-source-map",
"/create-hmac",
"/dns-packet",
"/evp_bytestokey",
"/express",
"/hash-base",
"/karma",
"/md5.js",
"/minipass",
"/node-fetch-npm",
"/pacote",
"/parse-asn1",
"/pbkdf2",
"/public-encrypt",
"/randombytes",
"/randomfill",
"/readable-stream",
"/request",
"/sha.js",
"/string_decoder",
"/tar",
"/tunnel-agent",
"/websocket-driver",
"/ws"
],
"_resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
"_shasum": "991ec69d296e0313747d59bdfd2b745c35f8828d",
"_spec": "safe-buffer@5.1.2",
"_where": "D:\\tftapp\\node_modules\\express",
"_spec": "safe-buffer@~5.1.1",
"_where": "D:\\TFTPaths\\node_modules\\readable-stream",
"author": {
"name": "Feross Aboukhadijeh",
"email": "feross@feross.org",

View file

@ -1,5 +1,5 @@
{
"_from": "safer-buffer@>= 2.1.2 < 3",
"_from": "safer-buffer@^2.0.2",
"_id": "safer-buffer@2.1.2",
"_inBundle": false,
"_integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
@ -8,20 +8,23 @@
"_requested": {
"type": "range",
"registry": true,
"raw": "safer-buffer@>= 2.1.2 < 3",
"raw": "safer-buffer@^2.0.2",
"name": "safer-buffer",
"escapedName": "safer-buffer",
"rawSpec": ">= 2.1.2 < 3",
"rawSpec": "^2.0.2",
"saveSpec": null,
"fetchSpec": ">= 2.1.2 < 3"
"fetchSpec": "^2.0.2"
},
"_requiredBy": [
"/iconv-lite"
"/asn1",
"/ecc-jsbn",
"/iconv-lite",
"/sshpk"
],
"_resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
"_shasum": "44fa161b0187b9549dd84bb91802f9bd8385cd6a",
"_spec": "safer-buffer@>= 2.1.2 < 3",
"_where": "D:\\tftapp\\node_modules\\iconv-lite",
"_spec": "safer-buffer@^2.0.2",
"_where": "D:\\TFTPaths\\node_modules\\sshpk",
"author": {
"name": "Nikita Skovoroda",
"email": "chalkerx@gmail.com",

View file

@ -21,7 +21,7 @@
"_resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
"_shasum": "30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a",
"_spec": "ms@2.1.1",
"_where": "D:\\tftapp\\node_modules\\send",
"_where": "D:\\TFTPaths\\node_modules\\send",
"bugs": {
"url": "https://github.com/zeit/ms/issues"
},

2
node_modules/send/package.json generated vendored
View file

@ -22,7 +22,7 @@
"_resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz",
"_shasum": "c1d8b059f7900f7466dd4938bdc44e11ddb376c8",
"_spec": "send@0.17.1",
"_where": "D:\\tftapp\\node_modules\\express",
"_where": "D:\\TFTPaths\\node_modules\\express",
"author": {
"name": "TJ Holowaychuk",
"email": "tj@vision-media.ca"

View file

@ -21,7 +21,7 @@
"_resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz",
"_shasum": "666e636dc4f010f7ef29970a88a674320898b2f9",
"_spec": "serve-static@1.14.1",
"_where": "D:\\tftapp\\node_modules\\express",
"_where": "D:\\TFTPaths\\node_modules\\express",
"author": {
"name": "Douglas Christopher Wilson",
"email": "doug@somethingdoug.com"

View file

@ -22,7 +22,7 @@
"_resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz",
"_shasum": "7e95acb24aa92f5885e0abef5ba131330d4ae683",
"_spec": "setprototypeof@1.1.1",
"_where": "D:\\tftapp\\node_modules\\express",
"_where": "D:\\TFTPaths\\node_modules\\express",
"author": {
"name": "Wes Todd"
},

5
node_modules/statuses/package.json generated vendored
View file

@ -19,12 +19,13 @@
"/express",
"/finalhandler",
"/http-errors",
"/send"
"/send",
"/serve-index/http-errors"
],
"_resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
"_shasum": "161c7dac177659fd9811f43771fa99381478628c",
"_spec": "statuses@~1.5.0",
"_where": "D:\\tftapp\\node_modules\\express",
"_where": "D:\\TFTPaths\\node_modules\\express",
"bugs": {
"url": "https://github.com/jshttp/statuses/issues"
},

View file

@ -21,7 +21,7 @@
"_resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz",
"_shasum": "7e1be3470f1e77948bc43d94a3c8f4d7752ba553",
"_spec": "toidentifier@1.0.0",
"_where": "D:\\tftapp\\node_modules\\http-errors",
"_where": "D:\\TFTPaths\\node_modules\\http-errors",
"author": {
"name": "Douglas Christopher Wilson",
"email": "doug@somethingdoug.com"

2
node_modules/type-is/package.json generated vendored
View file

@ -22,7 +22,7 @@
"_resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
"_shasum": "4e552cd05df09467dcbc4ef739de89f2cf37c131",
"_spec": "type-is@~1.6.18",
"_where": "D:\\tftapp\\node_modules\\express",
"_where": "D:\\TFTPaths\\node_modules\\express",
"bugs": {
"url": "https://github.com/jshttp/type-is/issues"
},

2
node_modules/unpipe/package.json generated vendored
View file

@ -22,7 +22,7 @@
"_resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
"_shasum": "b2bf4ee8514aae6165b4817829d21b2ef49904ec",
"_spec": "unpipe@1.0.0",
"_where": "D:\\tftapp\\node_modules\\raw-body",
"_where": "D:\\TFTPaths\\node_modules\\raw-body",
"author": {
"name": "Douglas Christopher Wilson",
"email": "doug@somethingdoug.com"

View file

@ -16,12 +16,13 @@
"fetchSpec": "1.0.1"
},
"_requiredBy": [
"/connect",
"/express"
],
"_resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
"_shasum": "9f95710f50a267947b2ccc124741c1028427e713",
"_spec": "utils-merge@1.0.1",
"_where": "D:\\tftapp\\node_modules\\express",
"_where": "D:\\TFTPaths\\node_modules\\express",
"author": {
"name": "Jared Hanson",
"email": "jaredhanson@gmail.com",

3
node_modules/vary/package.json generated vendored
View file

@ -16,12 +16,13 @@
"fetchSpec": "~1.1.2"
},
"_requiredBy": [
"/compression",
"/express"
],
"_resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
"_shasum": "2299f02c6ded30d4a5961b0b9f74524a18f634fc",
"_spec": "vary@~1.1.2",
"_where": "D:\\tftapp\\node_modules\\express",
"_where": "D:\\TFTPaths\\node_modules\\compression",
"author": {
"name": "Douglas Christopher Wilson",
"email": "doug@somethingdoug.com"