aboutsummaryrefslogtreecommitdiff
path: root/node_modules/qs
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/qs')
-rw-r--r--node_modules/qs/.eslintignore1
-rw-r--r--node_modules/qs/.eslintrc19
-rw-r--r--node_modules/qs/.jscs.json176
-rw-r--r--node_modules/qs/CHANGELOG.md120
-rw-r--r--node_modules/qs/CONTRIBUTING.md1
-rw-r--r--node_modules/qs/LICENSE28
-rw-r--r--node_modules/qs/dist/qs.js487
-rwxr-xr-xnode_modules/qs/lib/index.js9
-rwxr-xr-xnode_modules/qs/lib/parse.js167
-rwxr-xr-xnode_modules/qs/lib/stringify.js137
-rwxr-xr-xnode_modules/qs/lib/utils.js164
-rw-r--r--node_modules/qs/package.json118
-rw-r--r--node_modules/qs/test/index.js5
-rwxr-xr-xnode_modules/qs/test/parse.js423
-rwxr-xr-xnode_modules/qs/test/stringify.js305
-rwxr-xr-xnode_modules/qs/test/utils.js9
16 files changed, 0 insertions, 2169 deletions
diff --git a/node_modules/qs/.eslintignore b/node_modules/qs/.eslintignore
deleted file mode 100644
index 1521c8b..0000000
--- a/node_modules/qs/.eslintignore
+++ /dev/null
@@ -1 +0,0 @@
-dist
diff --git a/node_modules/qs/.eslintrc b/node_modules/qs/.eslintrc
deleted file mode 100644
index 1faac27..0000000
--- a/node_modules/qs/.eslintrc
+++ /dev/null
@@ -1,19 +0,0 @@
-{
- "root": true,
-
- "extends": "@ljharb",
-
- "rules": {
- "complexity": [2, 22],
- "consistent-return": [1],
- "id-length": [2, { "min": 1, "max": 25, "properties": "never" }],
- "indent": [2, 4],
- "max-params": [2, 9],
- "max-statements": [2, 36],
- "no-extra-parens": [1],
- "no-continue": [1],
- "no-magic-numbers": 0,
- "no-restricted-syntax": [2, "BreakStatement", "DebuggerStatement", "ForInStatement", "LabeledStatement", "WithStatement"],
- "operator-linebreak": 1
- }
-}
diff --git a/node_modules/qs/.jscs.json b/node_modules/qs/.jscs.json
deleted file mode 100644
index 3d099c4..0000000
--- a/node_modules/qs/.jscs.json
+++ /dev/null
@@ -1,176 +0,0 @@
-{
- "es3": true,
-
- "additionalRules": [],
-
- "requireSemicolons": true,
-
- "disallowMultipleSpaces": true,
-
- "disallowIdentifierNames": [],
-
- "requireCurlyBraces": {
- "allExcept": [],
- "keywords": ["if", "else", "for", "while", "do", "try", "catch"]
- },
-
- "requireSpaceAfterKeywords": ["if", "else", "for", "while", "do", "switch", "return", "try", "catch", "function"],
-
- "disallowSpaceAfterKeywords": [],
-
- "disallowSpaceBeforeComma": true,
- "disallowSpaceAfterComma": false,
- "disallowSpaceBeforeSemicolon": true,
-
- "disallowNodeTypes": [
- "DebuggerStatement",
- "ForInStatement",
- "LabeledStatement",
- "SwitchCase",
- "SwitchStatement",
- "WithStatement"
- ],
-
- "requireObjectKeysOnNewLine": { "allExcept": ["sameLine"] },
-
- "requireSpacesInAnonymousFunctionExpression": { "beforeOpeningRoundBrace": true, "beforeOpeningCurlyBrace": true },
- "requireSpacesInNamedFunctionExpression": { "beforeOpeningCurlyBrace": true },
- "disallowSpacesInNamedFunctionExpression": { "beforeOpeningRoundBrace": true },
- "requireSpacesInFunctionDeclaration": { "beforeOpeningCurlyBrace": true },
- "disallowSpacesInFunctionDeclaration": { "beforeOpeningRoundBrace": true },
-
- "requireSpaceBetweenArguments": true,
-
- "disallowSpacesInsideParentheses": true,
-
- "disallowSpacesInsideArrayBrackets": true,
-
- "disallowQuotedKeysInObjects": { "allExcept": ["reserved"] },
-
- "disallowSpaceAfterObjectKeys": true,
-
- "requireCommaBeforeLineBreak": true,
-
- "disallowSpaceAfterPrefixUnaryOperators": ["++", "--", "+", "-", "~", "!"],
- "requireSpaceAfterPrefixUnaryOperators": [],
-
- "disallowSpaceBeforePostfixUnaryOperators": ["++", "--"],
- "requireSpaceBeforePostfixUnaryOperators": [],
-
- "disallowSpaceBeforeBinaryOperators": [],
- "requireSpaceBeforeBinaryOperators": ["+", "-", "/", "*", "=", "==", "===", "!=", "!=="],
-
- "requireSpaceAfterBinaryOperators": ["+", "-", "/", "*", "=", "==", "===", "!=", "!=="],
- "disallowSpaceAfterBinaryOperators": [],
-
- "disallowImplicitTypeConversion": ["binary", "string"],
-
- "disallowKeywords": ["with", "eval"],
-
- "requireKeywordsOnNewLine": [],
- "disallowKeywordsOnNewLine": ["else"],
-
- "requireLineFeedAtFileEnd": true,
-
- "disallowTrailingWhitespace": true,
-
- "disallowTrailingComma": true,
-
- "excludeFiles": ["node_modules/**", "vendor/**"],
-
- "disallowMultipleLineStrings": true,
-
- "requireDotNotation": { "allExcept": ["keywords"] },
-
- "requireParenthesesAroundIIFE": true,
-
- "validateLineBreaks": "LF",
-
- "validateQuoteMarks": {
- "escape": true,
- "mark": "'"
- },
-
- "disallowOperatorBeforeLineBreak": [],
-
- "requireSpaceBeforeKeywords": [
- "do",
- "for",
- "if",
- "else",
- "switch",
- "case",
- "try",
- "catch",
- "finally",
- "while",
- "with",
- "return"
- ],
-
- "validateAlignedFunctionParameters": {
- "lineBreakAfterOpeningBraces": true,
- "lineBreakBeforeClosingBraces": true
- },
-
- "requirePaddingNewLinesBeforeExport": true,
-
- "validateNewlineAfterArrayElements": {
- "maximum": 1
- },
-
- "requirePaddingNewLinesAfterUseStrict": true,
-
- "disallowArrowFunctions": true,
-
- "disallowMultiLineTernary": true,
-
- "validateOrderInObjectKeys": "asc-insensitive",
-
- "disallowIdenticalDestructuringNames": true,
-
- "disallowNestedTernaries": { "maxLevel": 1 },
-
- "requireSpaceAfterComma": { "allExcept": ["trailing"] },
- "requireAlignedMultilineParams": false,
-
- "requireSpacesInGenerator": {
- "afterStar": true
- },
-
- "disallowSpacesInGenerator": {
- "beforeStar": true
- },
-
- "disallowVar": false,
-
- "requireArrayDestructuring": false,
-
- "requireEnhancedObjectLiterals": false,
-
- "requireObjectDestructuring": false,
-
- "requireEarlyReturn": false,
-
- "requireCapitalizedConstructorsNew": {
- "allExcept": ["Function", "String", "Object", "Symbol", "Number", "Date", "RegExp", "Error", "Boolean", "Array"]
- },
-
- "requireImportAlphabetized": false,
-
- "requireSpaceBeforeObjectValues": true,
- "requireSpaceBeforeDestructuredValues": true,
-
- "disallowSpacesInsideTemplateStringPlaceholders": true,
-
- "disallowArrayDestructuringReturn": false,
-
- "requireNewlineBeforeSingleStatementsInIf": false,
-
- "disallowUnusedVariables": true,
-
- "requireSpacesInsideImportedObjectBraces": true,
-
- "requireUseStrict": true
-}
-
diff --git a/node_modules/qs/CHANGELOG.md b/node_modules/qs/CHANGELOG.md
deleted file mode 100644
index e318a05..0000000
--- a/node_modules/qs/CHANGELOG.md
+++ /dev/null
@@ -1,120 +0,0 @@
-## [**6.2.0**](https://github.com/ljharb/qs/issues?milestone=36&state=closed)
-- [New] pass Buffers to the encoder/decoder directly (#161)
-- [New] add "encoder" and "decoder" options, for custom param encoding/decoding (#160)
-- [Fix] fix compacting of nested sparse arrays (#150)
-
-## [**6.1.0**](https://github.com/ljharb/qs/issues?milestone=35&state=closed)
-- [New] allowDots option for `stringify` (#151)
-- [Fix] "sort" option should work at a depth of 3 or more (#151)
-- [Fix] Restore `dist` directory; will be removed in v7 (#148)
-
-## [**6.0.2**](https://github.com/ljharb/qs/issues?milestone=33&state=closed)
-- Revert ES6 requirement and restore support for node down to v0.8.
-
-## [**6.0.1**](https://github.com/ljharb/qs/issues?milestone=32&state=closed)
-- [**#127**](https://github.com/ljharb/qs/pull/127) Fix engines definition in package.json
-
-## [**6.0.0**](https://github.com/ljharb/qs/issues?milestone=31&state=closed)
-- [**#124**](https://github.com/ljharb/qs/issues/124) Use ES6 and drop support for node < v4
-
-## [**5.2.0**](https://github.com/ljharb/qs/issues?milestone=30&state=closed)
-- [**#64**](https://github.com/ljharb/qs/issues/64) Add option to sort object keys in the query string
-
-## [**5.1.0**](https://github.com/ljharb/qs/issues?milestone=29&state=closed)
-- [**#117**](https://github.com/ljharb/qs/issues/117) make URI encoding stringified results optional
-- [**#106**](https://github.com/ljharb/qs/issues/106) Add flag `skipNulls` to optionally skip null values in stringify
-
-## [**5.0.0**](https://github.com/ljharb/qs/issues?milestone=28&state=closed)
-- [**#114**](https://github.com/ljharb/qs/issues/114) default allowDots to false
-- [**#100**](https://github.com/ljharb/qs/issues/100) include dist to npm
-
-## [**4.0.0**](https://github.com/ljharb/qs/issues?milestone=26&state=closed)
-- [**#98**](https://github.com/ljharb/qs/issues/98) make returning plain objects and allowing prototype overwriting properties optional
-
-## [**3.1.0**](https://github.com/ljharb/qs/issues?milestone=24&state=closed)
-- [**#89**](https://github.com/ljharb/qs/issues/89) Add option to disable "Transform dot notation to bracket notation"
-
-## [**3.0.0**](https://github.com/ljharb/qs/issues?milestone=23&state=closed)
-- [**#80**](https://github.com/ljharb/qs/issues/80) qs.parse silently drops properties
-- [**#77**](https://github.com/ljharb/qs/issues/77) Perf boost
-- [**#60**](https://github.com/ljharb/qs/issues/60) Add explicit option to disable array parsing
-- [**#74**](https://github.com/ljharb/qs/issues/74) Bad parse when turning array into object
-- [**#81**](https://github.com/ljharb/qs/issues/81) Add a `filter` option
-- [**#68**](https://github.com/ljharb/qs/issues/68) Fixed issue with recursion and passing strings into objects.
-- [**#66**](https://github.com/ljharb/qs/issues/66) Add mixed array and object dot notation support Closes: #47
-- [**#76**](https://github.com/ljharb/qs/issues/76) RFC 3986
-- [**#85**](https://github.com/ljharb/qs/issues/85) No equal sign
-- [**#84**](https://github.com/ljharb/qs/issues/84) update license attribute
-
-## [**2.4.1**](https://github.com/ljharb/qs/issues?milestone=20&state=closed)
-- [**#73**](https://github.com/ljharb/qs/issues/73) Property 'hasOwnProperty' of object #<Object> is not a function
-
-## [**2.4.0**](https://github.com/ljharb/qs/issues?milestone=19&state=closed)
-- [**#70**](https://github.com/ljharb/qs/issues/70) Add arrayFormat option
-
-## [**2.3.3**](https://github.com/ljharb/qs/issues?milestone=18&state=closed)
-- [**#59**](https://github.com/ljharb/qs/issues/59) make sure array indexes are >= 0, closes #57
-- [**#58**](https://github.com/ljharb/qs/issues/58) make qs usable for browser loader
-
-## [**2.3.2**](https://github.com/ljharb/qs/issues?milestone=17&state=closed)
-- [**#55**](https://github.com/ljharb/qs/issues/55) allow merging a string into an object
-
-## [**2.3.1**](https://github.com/ljharb/qs/issues?milestone=16&state=closed)
-- [**#52**](https://github.com/ljharb/qs/issues/52) Return "undefined" and "false" instead of throwing "TypeError".
-
-## [**2.3.0**](https://github.com/ljharb/qs/issues?milestone=15&state=closed)
-- [**#50**](https://github.com/ljharb/qs/issues/50) add option to omit array indices, closes #46
-
-## [**2.2.5**](https://github.com/ljharb/qs/issues?milestone=14&state=closed)
-- [**#39**](https://github.com/ljharb/qs/issues/39) Is there an alternative to Buffer.isBuffer?
-- [**#49**](https://github.com/ljharb/qs/issues/49) refactor utils.merge, fixes #45
-- [**#41**](https://github.com/ljharb/qs/issues/41) avoid browserifying Buffer, for #39
-
-## [**2.2.4**](https://github.com/ljharb/qs/issues?milestone=13&state=closed)
-- [**#38**](https://github.com/ljharb/qs/issues/38) how to handle object keys beginning with a number
-
-## [**2.2.3**](https://github.com/ljharb/qs/issues?milestone=12&state=closed)
-- [**#37**](https://github.com/ljharb/qs/issues/37) parser discards first empty value in array
-- [**#36**](https://github.com/ljharb/qs/issues/36) Update to lab 4.x
-
-## [**2.2.2**](https://github.com/ljharb/qs/issues?milestone=11&state=closed)
-- [**#33**](https://github.com/ljharb/qs/issues/33) Error when plain object in a value
-- [**#34**](https://github.com/ljharb/qs/issues/34) use Object.prototype.hasOwnProperty.call instead of obj.hasOwnProperty
-- [**#24**](https://github.com/ljharb/qs/issues/24) Changelog? Semver?
-
-## [**2.2.1**](https://github.com/ljharb/qs/issues?milestone=10&state=closed)
-- [**#32**](https://github.com/ljharb/qs/issues/32) account for circular references properly, closes #31
-- [**#31**](https://github.com/ljharb/qs/issues/31) qs.parse stackoverflow on circular objects
-
-## [**2.2.0**](https://github.com/ljharb/qs/issues?milestone=9&state=closed)
-- [**#26**](https://github.com/ljharb/qs/issues/26) Don't use Buffer global if it's not present
-- [**#30**](https://github.com/ljharb/qs/issues/30) Bug when merging non-object values into arrays
-- [**#29**](https://github.com/ljharb/qs/issues/29) Don't call Utils.clone at the top of Utils.merge
-- [**#23**](https://github.com/ljharb/qs/issues/23) Ability to not limit parameters?
-
-## [**2.1.0**](https://github.com/ljharb/qs/issues?milestone=8&state=closed)
-- [**#22**](https://github.com/ljharb/qs/issues/22) Enable using a RegExp as delimiter
-
-## [**2.0.0**](https://github.com/ljharb/qs/issues?milestone=7&state=closed)
-- [**#18**](https://github.com/ljharb/qs/issues/18) Why is there arrayLimit?
-- [**#20**](https://github.com/ljharb/qs/issues/20) Configurable parametersLimit
-- [**#21**](https://github.com/ljharb/qs/issues/21) make all limits optional, for #18, for #20
-
-## [**1.2.2**](https://github.com/ljharb/qs/issues?milestone=6&state=closed)
-- [**#19**](https://github.com/ljharb/qs/issues/19) Don't overwrite null values
-
-## [**1.2.1**](https://github.com/ljharb/qs/issues?milestone=5&state=closed)
-- [**#16**](https://github.com/ljharb/qs/issues/16) ignore non-string delimiters
-- [**#15**](https://github.com/ljharb/qs/issues/15) Close code block
-
-## [**1.2.0**](https://github.com/ljharb/qs/issues?milestone=4&state=closed)
-- [**#12**](https://github.com/ljharb/qs/issues/12) Add optional delim argument
-- [**#13**](https://github.com/ljharb/qs/issues/13) fix #11: flattened keys in array are now correctly parsed
-
-## [**1.1.0**](https://github.com/ljharb/qs/issues?milestone=3&state=closed)
-- [**#7**](https://github.com/ljharb/qs/issues/7) Empty values of a POST array disappear after being submitted
-- [**#9**](https://github.com/ljharb/qs/issues/9) Should not omit equals signs (=) when value is null
-- [**#6**](https://github.com/ljharb/qs/issues/6) Minor grammar fix in README
-
-## [**1.0.2**](https://github.com/ljharb/qs/issues?milestone=2&state=closed)
-- [**#5**](https://github.com/ljharb/qs/issues/5) array holes incorrectly copied into object on large index
diff --git a/node_modules/qs/CONTRIBUTING.md b/node_modules/qs/CONTRIBUTING.md
deleted file mode 100644
index 8928361..0000000
--- a/node_modules/qs/CONTRIBUTING.md
+++ /dev/null
@@ -1 +0,0 @@
-Please view our [hapijs contributing guide](https://github.com/hapijs/hapi/blob/master/CONTRIBUTING.md).
diff --git a/node_modules/qs/LICENSE b/node_modules/qs/LICENSE
deleted file mode 100644
index d456948..0000000
--- a/node_modules/qs/LICENSE
+++ /dev/null
@@ -1,28 +0,0 @@
-Copyright (c) 2014 Nathan LaFreniere and other contributors.
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
- * Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
- * The names of any contributors may not be used to endorse or promote
- products derived from this software without specific prior written
- permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS AND CONTRIBUTORS BE LIABLE FOR ANY
-DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
- * * *
-
-The complete list of contributors can be found at: https://github.com/hapijs/qs/graphs/contributors
diff --git a/node_modules/qs/dist/qs.js b/node_modules/qs/dist/qs.js
deleted file mode 100644
index 4cc6f30..0000000
--- a/node_modules/qs/dist/qs.js
+++ /dev/null
@@ -1,487 +0,0 @@
-(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.Qs = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){
-'use strict';
-
-var Stringify = require('./stringify');
-var Parse = require('./parse');
-
-module.exports = {
- stringify: Stringify,
- parse: Parse
-};
-
-},{"./parse":2,"./stringify":3}],2:[function(require,module,exports){
-'use strict';
-
-var Utils = require('./utils');
-
-var defaults = {
- delimiter: '&',
- depth: 5,
- arrayLimit: 20,
- parameterLimit: 1000,
- strictNullHandling: false,
- plainObjects: false,
- allowPrototypes: false,
- allowDots: false,
- decoder: Utils.decode
-};
-
-var parseValues = function parseValues(str, options) {
- var obj = {};
- var parts = str.split(options.delimiter, options.parameterLimit === Infinity ? undefined : options.parameterLimit);
-
- for (var i = 0; i < parts.length; ++i) {
- var part = parts[i];
- var pos = part.indexOf(']=') === -1 ? part.indexOf('=') : part.indexOf(']=') + 1;
-
- if (pos === -1) {
- obj[options.decoder(part)] = '';
-
- if (options.strictNullHandling) {
- obj[options.decoder(part)] = null;
- }
- } else {
- var key = options.decoder(part.slice(0, pos));
- var val = options.decoder(part.slice(pos + 1));
-
- if (Object.prototype.hasOwnProperty.call(obj, key)) {
- obj[key] = [].concat(obj[key]).concat(val);
- } else {
- obj[key] = val;
- }
- }
- }
-
- return obj;
-};
-
-var parseObject = function parseObject(chain, val, options) {
- if (!chain.length) {
- return val;
- }
-
- var root = chain.shift();
-
- var obj;
- if (root === '[]') {
- obj = [];
- obj = obj.concat(parseObject(chain, val, options));
- } else {
- obj = options.plainObjects ? Object.create(null) : {};
- var cleanRoot = root[0] === '[' && root[root.length - 1] === ']' ? root.slice(1, root.length - 1) : root;
- var index = parseInt(cleanRoot, 10);
- if (
- !isNaN(index) &&
- root !== cleanRoot &&
- String(index) === cleanRoot &&
- index >= 0 &&
- (options.parseArrays && index <= options.arrayLimit)
- ) {
- obj = [];
- obj[index] = parseObject(chain, val, options);
- } else {
- obj[cleanRoot] = parseObject(chain, val, options);
- }
- }
-
- return obj;
-};
-
-var parseKeys = function parseKeys(givenKey, val, options) {
- if (!givenKey) {
- return;
- }
-
- // Transform dot notation to bracket notation
- var key = options.allowDots ? givenKey.replace(/\.([^\.\[]+)/g, '[$1]') : givenKey;
-
- // The regex chunks
-
- var parent = /^([^\[\]]*)/;
- var child = /(\[[^\[\]]*\])/g;
-
- // Get the parent
-
- var segment = parent.exec(key);
-
- // Stash the parent if it exists
-
- var keys = [];
- if (segment[1]) {
- // If we aren't using plain objects, optionally prefix keys
- // that would overwrite object prototype properties
- if (!options.plainObjects && Object.prototype.hasOwnProperty(segment[1])) {
- if (!options.allowPrototypes) {
- return;
- }
- }
-
- keys.push(segment[1]);
- }
-
- // Loop through children appending to the array until we hit depth
-
- var i = 0;
- while ((segment = child.exec(key)) !== null && i < options.depth) {
- i += 1;
- if (!options.plainObjects && Object.prototype.hasOwnProperty(segment[1].replace(/\[|\]/g, ''))) {
- if (!options.allowPrototypes) {
- continue;
- }
- }
- keys.push(segment[1]);
- }
-
- // If there's a remainder, just add whatever is left
-
- if (segment) {
- keys.push('[' + key.slice(segment.index) + ']');
- }
-
- return parseObject(keys, val, options);
-};
-
-module.exports = function (str, opts) {
- var options = opts || {};
-
- if (options.decoder !== null && options.decoder !== undefined && typeof options.decoder !== 'function') {
- throw new TypeError('Decoder has to be a function.');
- }
-
- 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) : {};
- }
-
- var tempObj = typeof str === 'string' ? parseValues(str, options) : str;
- var obj = options.plainObjects ? Object.create(null) : {};
-
- // Iterate over the keys and setup the new object
-
- var keys = Object.keys(tempObj);
- for (var i = 0; i < keys.length; ++i) {
- var key = keys[i];
- var newObj = parseKeys(key, tempObj[key], options);
- obj = Utils.merge(obj, newObj, options);
- }
-
- return Utils.compact(obj);
-};
-
-},{"./utils":4}],3:[function(require,module,exports){
-'use strict';
-
-var Utils = require('./utils');
-
-var arrayPrefixGenerators = {
- brackets: function brackets(prefix) {
- return prefix + '[]';
- },
- indices: function indices(prefix, key) {
- return prefix + '[' + key + ']';
- },
- repeat: function repeat(prefix) {
- return prefix;
- }
-};
-
-var defaults = {
- delimiter: '&',
- strictNullHandling: false,
- skipNulls: false,
- encode: true,
- encoder: Utils.encode
-};
-
-var stringify = function stringify(object, prefix, generateArrayPrefix, strictNullHandling, skipNulls, encoder, filter, sort, allowDots) {
- var obj = object;
- if (typeof filter === 'function') {
- obj = filter(prefix, obj);
- } else if (obj instanceof Date) {
- obj = obj.toISOString();
- } else if (obj === null) {
- if (strictNullHandling) {
- return encoder ? encoder(prefix) : prefix;
- }
-
- obj = '';
- }
-
- if (typeof obj === 'string' || typeof obj === 'number' || typeof obj === 'boolean' || Utils.isBuffer(obj)) {
- if (encoder) {
- return [encoder(prefix) + '=' + encoder(obj)];
- }
- return [prefix + '=' + String(obj)];
- }
-
- var values = [];
-
- if (typeof obj === 'undefined') {
- return values;
- }
-
- var objKeys;
- if (Array.isArray(filter)) {
- objKeys = filter;
- } else {
- var keys = Object.keys(obj);
- objKeys = sort ? keys.sort(sort) : keys;
- }
-
- for (var i = 0; i < objKeys.length; ++i) {
- var key = objKeys[i];
-
- if (skipNulls && obj[key] === null) {
- continue;
- }
-
- if (Array.isArray(obj)) {
- values = values.concat(stringify(obj[key], generateArrayPrefix(prefix, key), generateArrayPrefix, strictNullHandling, skipNulls, encoder, filter, sort, allowDots));
- } else {
- values = values.concat(stringify(obj[key], prefix + (allowDots ? '.' + key : '[' + key + ']'), generateArrayPrefix, strictNullHandling, skipNulls, encoder, filter, sort, allowDots));
- }
- }
-
- return values;
-};
-
-module.exports = function (object, opts) {
- var obj = object;
- var options = opts || {};
- 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 = encode ? (typeof options.encoder === 'function' ? options.encoder : defaults.encoder) : null;
- var sort = typeof options.sort === 'function' ? options.sort : null;
- var allowDots = typeof options.allowDots === 'undefined' ? false : options.allowDots;
- var objKeys;
- var filter;
-
- if (options.encoder !== null && options.encoder !== undefined && typeof options.encoder !== 'function') {
- throw new TypeError('Encoder has to be a function.');
- }
-
- if (typeof options.filter === 'function') {
- filter = options.filter;
- obj = filter('', obj);
- } else if (Array.isArray(options.filter)) {
- objKeys = filter = options.filter;
- }
-
- var keys = [];
-
- if (typeof obj !== 'object' || obj === null) {
- return '';
- }
-
- var arrayFormat;
- if (options.arrayFormat in arrayPrefixGenerators) {
- arrayFormat = options.arrayFormat;
- } else if ('indices' in options) {
- arrayFormat = options.indices ? 'indices' : 'repeat';
- } else {
- arrayFormat = 'indices';
- }
-
- var generateArrayPrefix = arrayPrefixGenerators[arrayFormat];
-
- if (!objKeys) {
- objKeys = Object.keys(obj);
- }
-
- if (sort) {
- objKeys.sort(sort);
- }
-
- for (var i = 0; i < objKeys.length; ++i) {
- var key = objKeys[i];
-
- if (skipNulls && obj[key] === null) {
- continue;
- }
-
- keys = keys.concat(stringify(obj[key], key, generateArrayPrefix, strictNullHandling, skipNulls, encoder, filter, sort, allowDots));
- }
-
- return keys.join(delimiter);
-};
-
-},{"./utils":4}],4:[function(require,module,exports){
-'use strict';
-
-var hexTable = (function () {
- var array = new Array(256);
- for (var i = 0; i < 256; ++i) {
- array[i] = '%' + ((i < 16 ? '0' : '') + i.toString(16)).toUpperCase();
- }
-
- return array;
-}());
-
-exports.arrayToObject = function (source, options) {
- var obj = options.plainObjects ? Object.create(null) : {};
- for (var i = 0; i < source.length; ++i) {
- if (typeof source[i] !== 'undefined') {
- obj[i] = source[i];
- }
- }
-
- return obj;
-};
-
-exports.merge = function (target, source, options) {
- if (!source) {
- return target;
- }
-
- if (typeof source !== 'object') {
- if (Array.isArray(target)) {
- target.push(source);
- } else if (typeof target === 'object') {
- target[source] = true;
- } else {
- return [target, source];
- }
-
- return target;
- }
-
- if (typeof target !== 'object') {
- return [target].concat(source);
- }
-
- var mergeTarget = target;
- if (Array.isArray(target) && !Array.isArray(source)) {
- mergeTarget = exports.arrayToObject(target, options);
- }
-
- return Object.keys(source).reduce(function (acc, key) {
- var value = source[key];
-
- if (Object.prototype.hasOwnProperty.call(acc, key)) {
- acc[key] = exports.merge(acc[key], value, options);
- } else {
- acc[key] = value;
- }
- return acc;
- }, mergeTarget);
-};
-
-exports.decode = function (str) {
- try {
- return decodeURIComponent(str.replace(/\+/g, ' '));
- } catch (e) {
- return str;
- }
-};
-
-exports.encode = function (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) {
- return str;
- }
-
- var string = typeof str === 'string' ? str : String(str);
-
- var out = '';
- for (var i = 0; i < string.length; ++i) {
- var c = string.charCodeAt(i);
-
- if (
- c === 0x2D || // -
- c === 0x2E || // .
- c === 0x5F || // _
- c === 0x7E || // ~
- (c >= 0x30 && c <= 0x39) || // 0-9
- (c >= 0x41 && c <= 0x5A) || // a-z
- (c >= 0x61 && c <= 0x7A) // A-Z
- ) {
- out += string.charAt(i);
- continue;
- }
-
- if (c < 0x80) {
- out = out + hexTable[c];
- continue;
- }
-
- if (c < 0x800) {
- out = out + (hexTable[0xC0 | (c >> 6)] + hexTable[0x80 | (c & 0x3F)]);
- continue;
- }
-
- if (c < 0xD800 || c >= 0xE000) {
- out = out + (hexTable[0xE0 | (c >> 12)] + hexTable[0x80 | ((c >> 6) & 0x3F)] + hexTable[0x80 | (c & 0x3F)]);
- continue;
- }
-
- i += 1;
- c = 0x10000 + (((c & 0x3FF) << 10) | (string.charCodeAt(i) & 0x3FF));
- out += hexTable[0xF0 | (c >> 18)] + hexTable[0x80 | ((c >> 12) & 0x3F)] + hexTable[0x80 | ((c >> 6) & 0x3F)] + hexTable[0x80 | (c & 0x3F)];
- }
-
- return out;
-};
-
-exports.compact = function (obj, references) {
- if (typeof obj !== 'object' || obj === null) {
- return obj;
- }
-
- var refs = references || [];
- var lookup = refs.indexOf(obj);
- if (lookup !== -1) {
- return refs[lookup];
- }
-
- refs.push(obj);
-
- if (Array.isArray(obj)) {
- var compacted = [];
-
- for (var i = 0; i < obj.length; ++i) {
- if (obj[i] && typeof obj[i] === 'object') {
- compacted.push(exports.compact(obj[i], refs));
- } else if (typeof obj[i] !== 'undefined') {
- compacted.push(obj[i]);
- }
- }
-
- return compacted;
- }
-
- var keys = Object.keys(obj);
- for (var j = 0; j < keys.length; ++j) {
- var key = keys[j];
- obj[key] = exports.compact(obj[key], refs);
- }
-
- return obj;
-};
-
-exports.isRegExp = function (obj) {
- return Object.prototype.toString.call(obj) === '[object RegExp]';
-};
-
-exports.isBuffer = function (obj) {
- if (obj === null || typeof obj === 'undefined') {
- return false;
- }
-
- return !!(obj.constructor && obj.constructor.isBuffer && obj.constructor.isBuffer(obj));
-};
-
-},{}]},{},[1])(1)
-}); \ No newline at end of file
diff --git a/node_modules/qs/lib/index.js b/node_modules/qs/lib/index.js
deleted file mode 100755
index 1901959..0000000
--- a/node_modules/qs/lib/index.js
+++ /dev/null
@@ -1,9 +0,0 @@
-'use strict';
-
-var Stringify = require('./stringify');
-var Parse = require('./parse');
-
-module.exports = {
- stringify: Stringify,
- parse: Parse
-};
diff --git a/node_modules/qs/lib/parse.js b/node_modules/qs/lib/parse.js
deleted file mode 100755
index bf70fd8..0000000
--- a/node_modules/qs/lib/parse.js
+++ /dev/null
@@ -1,167 +0,0 @@
-'use strict';
-
-var Utils = require('./utils');
-
-var defaults = {
- delimiter: '&',
- depth: 5,
- arrayLimit: 20,
- parameterLimit: 1000,
- strictNullHandling: false,
- plainObjects: false,
- allowPrototypes: false,
- allowDots: false,
- decoder: Utils.decode
-};
-
-var parseValues = function parseValues(str, options) {
- var obj = {};
- var parts = str.split(options.delimiter, options.parameterLimit === Infinity ? undefined : options.parameterLimit);
-
- for (var i = 0; i < parts.length; ++i) {
- var part = parts[i];
- var pos = part.indexOf(']=') === -1 ? part.indexOf('=') : part.indexOf(']=') + 1;
-
- if (pos === -1) {
- obj[options.decoder(part)] = '';
-
- if (options.strictNullHandling) {
- obj[options.decoder(part)] = null;
- }
- } else {
- var key = options.decoder(part.slice(0, pos));
- var val = options.decoder(part.slice(pos + 1));
-
- if (Object.prototype.hasOwnProperty.call(obj, key)) {
- obj[key] = [].concat(obj[key]).concat(val);
- } else {
- obj[key] = val;
- }
- }
- }
-
- return obj;
-};
-
-var parseObject = function parseObject(chain, val, options) {
- if (!chain.length) {
- return val;
- }
-
- var root = chain.shift();
-
- var obj;
- if (root === '[]') {
- obj = [];
- obj = obj.concat(parseObject(chain, val, options));
- } else {
- obj = options.plainObjects ? Object.create(null) : {};
- var cleanRoot = root[0] === '[' && root[root.length - 1] === ']' ? root.slice(1, root.length - 1) : root;
- var index = parseInt(cleanRoot, 10);
- if (
- !isNaN(index) &&
- root !== cleanRoot &&
- String(index) === cleanRoot &&
- index >= 0 &&
- (options.parseArrays && index <= options.arrayLimit)
- ) {
- obj = [];
- obj[index] = parseObject(chain, val, options);
- } else {
- obj[cleanRoot] = parseObject(chain, val, options);
- }
- }
-
- return obj;
-};
-
-var parseKeys = function parseKeys(givenKey, val, options) {
- if (!givenKey) {
- return;
- }
-
- // Transform dot notation to bracket notation
- var key = options.allowDots ? givenKey.replace(/\.([^\.\[]+)/g, '[$1]') : givenKey;
-
- // The regex chunks
-
- var parent = /^([^\[\]]*)/;
- var child = /(\[[^\[\]]*\])/g;
-
- // Get the parent
-
- var segment = parent.exec(key);
-
- // Stash the parent if it exists
-
- var keys = [];
- if (segment[1]) {
- // If we aren't using plain objects, optionally prefix keys
- // that would overwrite object prototype properties
- if (!options.plainObjects && Object.prototype.hasOwnProperty(segment[1])) {
- if (!options.allowPrototypes) {
- return;
- }
- }
-
- keys.push(segment[1]);
- }
-
- // Loop through children appending to the array until we hit depth
-
- var i = 0;
- while ((segment = child.exec(key)) !== null && i < options.depth) {
- i += 1;
- if (!options.plainObjects && Object.prototype.hasOwnProperty(segment[1].replace(/\[|\]/g, ''))) {
- if (!options.allowPrototypes) {
- continue;
- }
- }
- keys.push(segment[1]);
- }
-
- // If there's a remainder, just add whatever is left
-
- if (segment) {
- keys.push('[' + key.slice(segment.index) + ']');
- }
-
- return parseObject(keys, val, options);
-};
-
-module.exports = function (str, opts) {
- var options = opts || {};
-
- if (options.decoder !== null && options.decoder !== undefined && typeof options.decoder !== 'function') {
- throw new TypeError('Decoder has to be a function.');
- }
-
- 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) : {};
- }
-
- var tempObj = typeof str === 'string' ? parseValues(str, options) : str;
- var obj = options.plainObjects ? Object.create(null) : {};
-
- // Iterate over the keys and setup the new object
-
- var keys = Object.keys(tempObj);
- for (var i = 0; i < keys.length; ++i) {
- var key = keys[i];
- var newObj = parseKeys(key, tempObj[key], options);
- obj = Utils.merge(obj, newObj, options);
- }
-
- return Utils.compact(obj);
-};
diff --git a/node_modules/qs/lib/stringify.js b/node_modules/qs/lib/stringify.js
deleted file mode 100755
index 6e1c9a2..0000000
--- a/node_modules/qs/lib/stringify.js
+++ /dev/null
@@ -1,137 +0,0 @@
-'use strict';
-
-var Utils = require('./utils');
-
-var arrayPrefixGenerators = {
- brackets: function brackets(prefix) {
- return prefix + '[]';
- },
- indices: function indices(prefix, key) {
- return prefix + '[' + key + ']';
- },
- repeat: function repeat(prefix) {
- return prefix;
- }
-};
-
-var defaults = {
- delimiter: '&',
- strictNullHandling: false,
- skipNulls: false,
- encode: true,
- encoder: Utils.encode
-};
-
-var stringify = function stringify(object, prefix, generateArrayPrefix, strictNullHandling, skipNulls, encoder, filter, sort, allowDots) {
- var obj = object;
- if (typeof filter === 'function') {
- obj = filter(prefix, obj);
- } else if (obj instanceof Date) {
- obj = obj.toISOString();
- } else if (obj === null) {
- if (strictNullHandling) {
- return encoder ? encoder(prefix) : prefix;
- }
-
- obj = '';
- }
-
- if (typeof obj === 'string' || typeof obj === 'number' || typeof obj === 'boolean' || Utils.isBuffer(obj)) {
- if (encoder) {
- return [encoder(prefix) + '=' + encoder(obj)];
- }
- return [prefix + '=' + String(obj)];
- }
-
- var values = [];
-
- if (typeof obj === 'undefined') {
- return values;
- }
-
- var objKeys;
- if (Array.isArray(filter)) {
- objKeys = filter;
- } else {
- var keys = Object.keys(obj);
- objKeys = sort ? keys.sort(sort) : keys;
- }
-
- for (var i = 0; i < objKeys.length; ++i) {
- var key = objKeys[i];
-
- if (skipNulls && obj[key] === null) {
- continue;
- }
-
- if (Array.isArray(obj)) {
- values = values.concat(stringify(obj[key], generateArrayPrefix(prefix, key), generateArrayPrefix, strictNullHandling, skipNulls, encoder, filter, sort, allowDots));
- } else {
- values = values.concat(stringify(obj[key], prefix + (allowDots ? '.' + key : '[' + key + ']'), generateArrayPrefix, strictNullHandling, skipNulls, encoder, filter, sort, allowDots));
- }
- }
-
- return values;
-};
-
-module.exports = function (object, opts) {
- var obj = object;
- var options = opts || {};
- 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 = encode ? (typeof options.encoder === 'function' ? options.encoder : defaults.encoder) : null;
- var sort = typeof options.sort === 'function' ? options.sort : null;
- var allowDots = typeof options.allowDots === 'undefined' ? false : options.allowDots;
- var objKeys;
- var filter;
-
- if (options.encoder !== null && options.encoder !== undefined && typeof options.encoder !== 'function') {
- throw new TypeError('Encoder has to be a function.');
- }
-
- if (typeof options.filter === 'function') {
- filter = options.filter;
- obj = filter('', obj);
- } else if (Array.isArray(options.filter)) {
- objKeys = filter = options.filter;
- }
-
- var keys = [];
-
- if (typeof obj !== 'object' || obj === null) {
- return '';
- }
-
- var arrayFormat;
- if (options.arrayFormat in arrayPrefixGenerators) {
- arrayFormat = options.arrayFormat;
- } else if ('indices' in options) {
- arrayFormat = options.indices ? 'indices' : 'repeat';
- } else {
- arrayFormat = 'indices';
- }
-
- var generateArrayPrefix = arrayPrefixGenerators[arrayFormat];
-
- if (!objKeys) {
- objKeys = Object.keys(obj);
- }
-
- if (sort) {
- objKeys.sort(sort);
- }
-
- for (var i = 0; i < objKeys.length; ++i) {
- var key = objKeys[i];
-
- if (skipNulls && obj[key] === null) {
- continue;
- }
-
- keys = keys.concat(stringify(obj[key], key, generateArrayPrefix, strictNullHandling, skipNulls, encoder, filter, sort, allowDots));
- }
-
- return keys.join(delimiter);
-};
diff --git a/node_modules/qs/lib/utils.js b/node_modules/qs/lib/utils.js
deleted file mode 100755
index 2c5c8ee..0000000
--- a/node_modules/qs/lib/utils.js
+++ /dev/null
@@ -1,164 +0,0 @@
-'use strict';
-
-var hexTable = (function () {
- var array = new Array(256);
- for (var i = 0; i < 256; ++i) {
- array[i] = '%' + ((i < 16 ? '0' : '') + i.toString(16)).toUpperCase();
- }
-
- return array;
-}());
-
-exports.arrayToObject = function (source, options) {
- var obj = options.plainObjects ? Object.create(null) : {};
- for (var i = 0; i < source.length; ++i) {
- if (typeof source[i] !== 'undefined') {
- obj[i] = source[i];
- }
- }
-
- return obj;
-};
-
-exports.merge = function (target, source, options) {
- if (!source) {
- return target;
- }
-
- if (typeof source !== 'object') {
- if (Array.isArray(target)) {
- target.push(source);
- } else if (typeof target === 'object') {
- target[source] = true;
- } else {
- return [target, source];
- }
-
- return target;
- }
-
- if (typeof target !== 'object') {
- return [target].concat(source);
- }
-
- var mergeTarget = target;
- if (Array.isArray(target) && !Array.isArray(source)) {
- mergeTarget = exports.arrayToObject(target, options);
- }
-
- return Object.keys(source).reduce(function (acc, key) {
- var value = source[key];
-
- if (Object.prototype.hasOwnProperty.call(acc, key)) {
- acc[key] = exports.merge(acc[key], value, options);
- } else {
- acc[key] = value;
- }
- return acc;
- }, mergeTarget);
-};
-
-exports.decode = function (str) {
- try {
- return decodeURIComponent(str.replace(/\+/g, ' '));
- } catch (e) {
- return str;
- }
-};
-
-exports.encode = function (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) {
- return str;
- }
-
- var string = typeof str === 'string' ? str : String(str);
-
- var out = '';
- for (var i = 0; i < string.length; ++i) {
- var c = string.charCodeAt(i);
-
- if (
- c === 0x2D || // -
- c === 0x2E || // .
- c === 0x5F || // _
- c === 0x7E || // ~
- (c >= 0x30 && c <= 0x39) || // 0-9
- (c >= 0x41 && c <= 0x5A) || // a-z
- (c >= 0x61 && c <= 0x7A) // A-Z
- ) {
- out += string.charAt(i);
- continue;
- }
-
- if (c < 0x80) {
- out = out + hexTable[c];
- continue;
- }
-
- if (c < 0x800) {
- out = out + (hexTable[0xC0 | (c >> 6)] + hexTable[0x80 | (c & 0x3F)]);
- continue;
- }
-
- if (c < 0xD800 || c >= 0xE000) {
- out = out + (hexTable[0xE0 | (c >> 12)] + hexTable[0x80 | ((c >> 6) & 0x3F)] + hexTable[0x80 | (c & 0x3F)]);
- continue;
- }
-
- i += 1;
- c = 0x10000 + (((c & 0x3FF) << 10) | (string.charCodeAt(i) & 0x3FF));
- out += hexTable[0xF0 | (c >> 18)] + hexTable[0x80 | ((c >> 12) & 0x3F)] + hexTable[0x80 | ((c >> 6) & 0x3F)] + hexTable[0x80 | (c & 0x3F)];
- }
-
- return out;
-};
-
-exports.compact = function (obj, references) {
- if (typeof obj !== 'object' || obj === null) {
- return obj;
- }
-
- var refs = references || [];
- var lookup = refs.indexOf(obj);
- if (lookup !== -1) {
- return refs[lookup];
- }
-
- refs.push(obj);
-
- if (Array.isArray(obj)) {
- var compacted = [];
-
- for (var i = 0; i < obj.length; ++i) {
- if (obj[i] && typeof obj[i] === 'object') {
- compacted.push(exports.compact(obj[i], refs));
- } else if (typeof obj[i] !== 'undefined') {
- compacted.push(obj[i]);
- }
- }
-
- return compacted;
- }
-
- var keys = Object.keys(obj);
- for (var j = 0; j < keys.length; ++j) {
- var key = keys[j];
- obj[key] = exports.compact(obj[key], refs);
- }
-
- return obj;
-};
-
-exports.isRegExp = function (obj) {
- return Object.prototype.toString.call(obj) === '[object RegExp]';
-};
-
-exports.isBuffer = function (obj) {
- if (obj === null || typeof obj === 'undefined') {
- return false;
- }
-
- return !!(obj.constructor && obj.constructor.isBuffer && obj.constructor.isBuffer(obj));
-};
diff --git a/node_modules/qs/package.json b/node_modules/qs/package.json
deleted file mode 100644
index 2e6236d..0000000
--- a/node_modules/qs/package.json
+++ /dev/null
@@ -1,118 +0,0 @@
-{
- "_args": [
- [
- {
- "name": "qs",
- "raw": "qs@6.2.0",
- "rawSpec": "6.2.0",
- "scope": null,
- "spec": "6.2.0",
- "type": "version"
- },
- "/Users/warefhaque/CSC309/solutions_repo/node_modules/express"
- ]
- ],
- "_from": "qs@6.2.0",
- "_id": "qs@6.2.0",
- "_inCache": true,
- "_installable": true,
- "_location": "/qs",
- "_nodeVersion": "6.1.0",
- "_npmOperationalInternal": {
- "host": "packages-12-west.internal.npmjs.com",
- "tmp": "tmp/qs-6.2.0.tgz_1462749349998_0.03372702235355973"
- },
- "_npmUser": {
- "email": "ljharb@gmail.com",
- "name": "ljharb"
- },
- "_npmVersion": "3.8.6",
- "_phantomChildren": {},
- "_requested": {
- "name": "qs",
- "raw": "qs@6.2.0",
- "rawSpec": "6.2.0",
- "scope": null,
- "spec": "6.2.0",
- "type": "version"
- },
- "_requiredBy": [
- "/express"
- ],
- "_resolved": "https://registry.npmjs.org/qs/-/qs-6.2.0.tgz",
- "_shasum": "3b7848c03c2dece69a9522b0fae8c4126d745f3b",
- "_shrinkwrap": null,
- "_spec": "qs@6.2.0",
- "_where": "/Users/warefhaque/CSC309/solutions_repo/node_modules/express",
- "bugs": {
- "url": "https://github.com/ljharb/qs/issues"
- },
- "contributors": [
- {
- "email": "ljharb@gmail.com",
- "name": "Jordan Harband",
- "url": "http://ljharb.codes"
- }
- ],
- "dependencies": {},
- "description": "A querystring parser that supports nesting and arrays, with a depth limit",
- "devDependencies": {
- "@ljharb/eslint-config": "^4.0.0",
- "browserify": "^13.0.1",
- "covert": "^1.1.0",
- "eslint": "^2.9.0",
- "evalmd": "^0.0.17",
- "iconv-lite": "^0.4.13",
- "mkdirp": "^0.5.1",
- "parallelshell": "^2.0.0",
- "tape": "^4.5.1"
- },
- "directories": {},
- "dist": {
- "shasum": "3b7848c03c2dece69a9522b0fae8c4126d745f3b",
- "tarball": "https://registry.npmjs.org/qs/-/qs-6.2.0.tgz"
- },
- "engines": {
- "node": ">=0.6"
- },
- "gitHead": "d67d315b606c6bb809fedcbeebbbdb7f863852aa",
- "homepage": "https://github.com/ljharb/qs",
- "keywords": [
- "querystring",
- "qs"
- ],
- "license": "BSD-3-Clause",
- "main": "lib/index.js",
- "maintainers": [
- {
- "email": "eran@hammer.io",
- "name": "hueniverse"
- },
- {
- "email": "ljharb@gmail.com",
- "name": "ljharb"
- },
- {
- "email": "quitlahok@gmail.com",
- "name": "nlf"
- }
- ],
- "name": "qs",
- "optionalDependencies": {},
- "readme": "ERROR: No README data found!",
- "repository": {
- "type": "git",
- "url": "git+https://github.com/ljharb/qs.git"
- },
- "scripts": {
- "coverage": "covert test",
- "dist": "mkdirp dist && browserify --standalone Qs lib/index.js > dist/qs.js",
- "lint": "eslint lib/*.js text/*.js",
- "prepublish": "npm run dist",
- "pretest": "parallelshell 'npm run --silent readme' 'npm run --silent lint'",
- "readme": "evalmd README.md",
- "test": "npm run --silent coverage",
- "tests-only": "node test"
- },
- "version": "6.2.0"
-}
diff --git a/node_modules/qs/test/index.js b/node_modules/qs/test/index.js
deleted file mode 100644
index b6a7d95..0000000
--- a/node_modules/qs/test/index.js
+++ /dev/null
@@ -1,5 +0,0 @@
-require('./parse');
-
-require('./stringify');
-
-require('./utils');
diff --git a/node_modules/qs/test/parse.js b/node_modules/qs/test/parse.js
deleted file mode 100755
index 1b79daf..0000000
--- a/node_modules/qs/test/parse.js
+++ /dev/null
@@ -1,423 +0,0 @@
-'use strict';
-
-var test = require('tape');
-var qs = require('../');
-var iconv = require('iconv-lite');
-
-test('parse()', function (t) {
- t.test('parses a simple string', function (st) {
- st.deepEqual(qs.parse('0=foo'), { '0': 'foo' });
- st.deepEqual(qs.parse('foo=c++'), { foo: 'c ' });
- st.deepEqual(qs.parse('a[>=]=23'), { a: { '>=': '23' } });
- st.deepEqual(qs.parse('a[<=>]==23'), { a: { '<=>': '=23' } });
- st.deepEqual(qs.parse('a[==]=23'), { a: { '==': '23' } });
- st.deepEqual(qs.parse('foo', { strictNullHandling: true }), { foo: null });
- st.deepEqual(qs.parse('foo'), { foo: '' });
- st.deepEqual(qs.parse('foo='), { foo: '' });
- st.deepEqual(qs.parse('foo=bar'), { foo: 'bar' });
- st.deepEqual(qs.parse(' foo = bar = baz '), { ' foo ': ' bar = baz ' });
- st.deepEqual(qs.parse('foo=bar=baz'), { foo: 'bar=baz' });
- st.deepEqual(qs.parse('foo=bar&bar=baz'), { foo: 'bar', bar: 'baz' });
- st.deepEqual(qs.parse('foo2=bar2&baz2='), { foo2: 'bar2', baz2: '' });
- st.deepEqual(qs.parse('foo=bar&baz', { strictNullHandling: true }), { foo: 'bar', baz: null });
- st.deepEqual(qs.parse('foo=bar&baz'), { foo: 'bar', baz: '' });
- st.deepEqual(qs.parse('cht=p3&chd=t:60,40&chs=250x100&chl=Hello|World'), {
- cht: 'p3',
- chd: 't:60,40',
- chs: '250x100',
- chl: 'Hello|World'
- });
- st.end();
- });
-
- t.test('allows enabling dot notation', function (st) {
- st.deepEqual(qs.parse('a.b=c'), { 'a.b': 'c' });
- st.deepEqual(qs.parse('a.b=c', { allowDots: true }), { a: { b: 'c' } });
- st.end();
- });
-
- t.deepEqual(qs.parse('a[b]=c'), { a: { b: 'c' } }, 'parses a single nested string');
- t.deepEqual(qs.parse('a[b][c]=d'), { a: { b: { c: 'd' } } }, 'parses a double nested string');
- t.deepEqual(
- qs.parse('a[b][c][d][e][f][g][h]=i'),
- { a: { b: { c: { d: { e: { f: { '[g][h]': 'i' } } } } } } },
- 'defaults to a depth of 5'
- );
-
- t.test('only parses one level when depth = 1', function (st) {
- st.deepEqual(qs.parse('a[b][c]=d', { depth: 1 }), { a: { b: { '[c]': 'd' } } });
- st.deepEqual(qs.parse('a[b][c][d]=e', { depth: 1 }), { a: { b: { '[c][d]': 'e' } } });
- st.end();
- });
-
- t.deepEqual(qs.parse('a=b&a=c'), { a: ['b', 'c'] }, 'parses a simple array');
-
- t.test('parses an explicit array', function (st) {
- st.deepEqual(qs.parse('a[]=b'), { a: ['b'] });
- st.deepEqual(qs.parse('a[]=b&a[]=c'), { a: ['b', 'c'] });
- st.deepEqual(qs.parse('a[]=b&a[]=c&a[]=d'), { a: ['b', 'c', 'd'] });
- st.end();
- });
-
- t.test('parses a mix of simple and explicit arrays', function (st) {
- st.deepEqual(qs.parse('a=b&a[]=c'), { a: ['b', 'c'] });
- st.deepEqual(qs.parse('a[]=b&a=c'), { a: ['b', 'c'] });
- st.deepEqual(qs.parse('a[0]=b&a=c'), { a: ['b', 'c'] });
- st.deepEqual(qs.parse('a=b&a[0]=c'), { a: ['b', 'c'] });
- st.deepEqual(qs.parse('a[1]=b&a=c'), { a: ['b', 'c'] });
- st.deepEqual(qs.parse('a=b&a[1]=c'), { a: ['b', 'c'] });
- st.end();
- });
-
- t.test('parses a nested array', function (st) {
- st.deepEqual(qs.parse('a[b][]=c&a[b][]=d'), { a: { b: ['c', 'd'] } });
- st.deepEqual(qs.parse('a[>=]=25'), { a: { '>=': '25' } });
- st.end();
- });
-
- t.test('allows to specify array indices', function (st) {
- st.deepEqual(qs.parse('a[1]=c&a[0]=b&a[2]=d'), { a: ['b', 'c', 'd'] });
- st.deepEqual(qs.parse('a[1]=c&a[0]=b'), { a: ['b', 'c'] });
- st.deepEqual(qs.parse('a[1]=c'), { a: ['c'] });
- st.end();
- });
-
- t.test('limits specific array indices to 20', function (st) {
- st.deepEqual(qs.parse('a[20]=a'), { a: ['a'] });
- st.deepEqual(qs.parse('a[21]=a'), { a: { '21': 'a' } });
- st.end();
- });
-
- t.deepEqual(qs.parse('a[12b]=c'), { a: { '12b': 'c' } }, 'supports keys that begin with a number');
-
- t.test('supports encoded = signs', function (st) {
- st.deepEqual(qs.parse('he%3Dllo=th%3Dere'), { 'he=llo': 'th=ere' });
- st.end();
- });
-
- t.test('is ok with url encoded strings', function (st) {
- st.deepEqual(qs.parse('a[b%20c]=d'), { a: { 'b c': 'd' } });
- st.deepEqual(qs.parse('a[b]=c%20d'), { a: { b: 'c d' } });
- st.end();
- });
-
- t.test('allows brackets in the value', function (st) {
- st.deepEqual(qs.parse('pets=["tobi"]'), { pets: '["tobi"]' });
- st.deepEqual(qs.parse('operators=[">=", "<="]'), { operators: '[">=", "<="]' });
- st.end();
- });
-
- t.test('allows empty values', function (st) {
- st.deepEqual(qs.parse(''), {});
- st.deepEqual(qs.parse(null), {});
- st.deepEqual(qs.parse(undefined), {});
- st.end();
- });
-
- t.test('transforms arrays to objects', function (st) {
- st.deepEqual(qs.parse('foo[0]=bar&foo[bad]=baz'), { foo: { '0': 'bar', bad: 'baz' } });
- st.deepEqual(qs.parse('foo[bad]=baz&foo[0]=bar'), { foo: { bad: 'baz', '0': 'bar' } });
- st.deepEqual(qs.parse('foo[bad]=baz&foo[]=bar'), { foo: { bad: 'baz', '0': 'bar' } });
- st.deepEqual(qs.parse('foo[]=bar&foo[bad]=baz'), { foo: { '0': 'bar', bad: 'baz' } });
- st.deepEqual(qs.parse('foo[bad]=baz&foo[]=bar&foo[]=foo'), { foo: { bad: 'baz', '0': 'bar', '1': 'foo' } });
- st.deepEqual(qs.parse('foo[0][a]=a&foo[0][b]=b&foo[1][a]=aa&foo[1][b]=bb'), { foo: [{ a: 'a', b: 'b' }, { a: 'aa', b: 'bb' }] });
- st.deepEqual(qs.parse('a[]=b&a[t]=u&a[hasOwnProperty]=c'), { a: { '0': 'b', t: 'u', c: true } });
- st.deepEqual(qs.parse('a[]=b&a[hasOwnProperty]=c&a[x]=y'), { a: { '0': 'b', '1': 'c', x: 'y' } });
- st.end();
- });
-
- t.test('transforms arrays to objects (dot notation)', function (st) {
- st.deepEqual(qs.parse('foo[0].baz=bar&fool.bad=baz', { allowDots: true }), { foo: [{ baz: 'bar' }], fool: { bad: 'baz' } });
- st.deepEqual(qs.parse('foo[0].baz=bar&fool.bad.boo=baz', { allowDots: true }), { foo: [{ baz: 'bar' }], fool: { bad: { boo: 'baz' } } });
- st.deepEqual(qs.parse('foo[0][0].baz=bar&fool.bad=baz', { allowDots: true }), { foo: [[{ baz: 'bar' }]], fool: { bad: 'baz' } });
- st.deepEqual(qs.parse('foo[0].baz[0]=15&foo[0].bar=2', { allowDots: true }), { foo: [{ baz: ['15'], bar: '2' }] });
- st.deepEqual(qs.parse('foo[0].baz[0]=15&foo[0].baz[1]=16&foo[0].bar=2', { allowDots: true }), { foo: [{ baz: ['15', '16'], bar: '2' }] });
- st.deepEqual(qs.parse('foo.bad=baz&foo[0]=bar', { allowDots: true }), { foo: { bad: 'baz', '0': 'bar' } });
- st.deepEqual(qs.parse('foo.bad=baz&foo[]=bar', { allowDots: true }), { foo: { bad: 'baz', '0': 'bar' } });
- st.deepEqual(qs.parse('foo[]=bar&foo.bad=baz', { allowDots: true }), { foo: { '0': 'bar', bad: 'baz' } });
- st.deepEqual(qs.parse('foo.bad=baz&foo[]=bar&foo[]=foo', { allowDots: true }), { foo: { bad: 'baz', '0': 'bar', '1': 'foo' } });
- st.deepEqual(qs.parse('foo[0].a=a&foo[0].b=b&foo[1].a=aa&foo[1].b=bb', { allowDots: true }), { foo: [{ a: 'a', b: 'b' }, { a: 'aa', b: 'bb' }] });
- st.end();
- });
-
- t.deepEqual(qs.parse('a[b]=c&a=d'), { a: { b: 'c', d: true } }, 'can add keys to objects');
-
- t.test('correctly prunes undefined values when converting an array to an object', function (st) {
- st.deepEqual(qs.parse('a[2]=b&a[99999999]=c'), { a: { '2': 'b', '99999999': 'c' } });
- st.end();
- });
-
- t.test('supports malformed uri characters', function (st) {
- st.deepEqual(qs.parse('{%:%}', { strictNullHandling: true }), { '{%:%}': null });
- st.deepEqual(qs.parse('{%:%}='), { '{%:%}': '' });
- st.deepEqual(qs.parse('foo=%:%}'), { foo: '%:%}' });
- st.end();
- });
-
- t.test('doesn\'t produce empty keys', function (st) {
- st.deepEqual(qs.parse('_r=1&'), { '_r': '1' });
- st.end();
- });
-
- t.test('cannot access Object prototype', function (st) {
- qs.parse('constructor[prototype][bad]=bad');
- qs.parse('bad[constructor][prototype][bad]=bad');
- st.equal(typeof Object.prototype.bad, 'undefined');
- st.end();
- });
-
- t.test('parses arrays of objects', function (st) {
- st.deepEqual(qs.parse('a[][b]=c'), { a: [{ b: 'c' }] });
- st.deepEqual(qs.parse('a[0][b]=c'), { a: [{ b: 'c' }] });
- st.end();
- });
-
- t.test('allows for empty strings in arrays', function (st) {
- st.deepEqual(qs.parse('a[]=b&a[]=&a[]=c'), { a: ['b', '', 'c'] });
- st.deepEqual(qs.parse('a[0]=b&a[1]&a[2]=c&a[19]=', { strictNullHandling: true }), { a: ['b', null, 'c', ''] });
- st.deepEqual(qs.parse('a[0]=b&a[1]=&a[2]=c&a[19]', { strictNullHandling: true }), { a: ['b', '', 'c', null] });
- st.deepEqual(qs.parse('a[]=&a[]=b&a[]=c'), { a: ['', 'b', 'c'] });
- st.end();
- });
-
- t.test('compacts sparse arrays', function (st) {
- st.deepEqual(qs.parse('a[10]=1&a[2]=2'), { a: ['2', '1'] });
- st.deepEqual(qs.parse('a[1][b][2][c]=1'), { a: [{ b: [{ c: '1' }] }] });
- st.deepEqual(qs.parse('a[1][2][3][c]=1'), { a: [[[{ c: '1' }]]] });
- st.deepEqual(qs.parse('a[1][2][3][c][1]=1'), { a: [[[{ c: ['1'] }]]] });
- st.end();
- });
-
- t.test('parses semi-parsed strings', function (st) {
- st.deepEqual(qs.parse({ 'a[b]': 'c' }), { a: { b: 'c' } });
- st.deepEqual(qs.parse({ 'a[b]': 'c', 'a[d]': 'e' }), { a: { b: 'c', d: 'e' } });
- st.end();
- });
-
- t.test('parses buffers correctly', function (st) {
- var b = new Buffer('test');
- st.deepEqual(qs.parse({ a: b }), { a: b });
- 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' });
- st.deepEqual(qs.parse('[foo]=bar'), { foo: 'bar' });
- st.end();
- });
-
- t.test('does not error when parsing a very long array', function (st) {
- var str = 'a[]=a';
- while (Buffer.byteLength(str) < 128 * 1024) {
- str = str + '&' + str;
- }
-
- st.doesNotThrow(function () { qs.parse(str); });
-
- st.end();
- });
-
- 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'));
- st.deepEqual(qs.parse('a=b'), { a: 'b' });
- st.doesNotThrow(qs.parse.bind(null, 'a[][b]=c'));
- st.deepEqual(qs.parse('a[][b]=c'), { a: [{ b: 'c' }] });
- delete Object.prototype.crash;
- delete Array.prototype.crash;
- st.end();
- });
-
- t.test('parses a string with an alternative string delimiter', function (st) {
- st.deepEqual(qs.parse('a=b;c=d', { delimiter: ';' }), { a: 'b', c: 'd' });
- st.end();
- });
-
- t.test('parses a string with an alternative RegExp delimiter', function (st) {
- st.deepEqual(qs.parse('a=b; c=d', { delimiter: /[;,] */ }), { a: 'b', c: 'd' });
- st.end();
- });
-
- t.test('does not use non-splittable objects as delimiters', function (st) {
- st.deepEqual(qs.parse('a=b&c=d', { delimiter: true }), { a: 'b', c: 'd' });
- st.end();
- });
-
- t.test('allows overriding parameter limit', function (st) {
- st.deepEqual(qs.parse('a=b&c=d', { parameterLimit: 1 }), { a: 'b' });
- st.end();
- });
-
- t.test('allows setting the parameter limit to Infinity', function (st) {
- st.deepEqual(qs.parse('a=b&c=d', { parameterLimit: Infinity }), { a: 'b', c: 'd' });
- st.end();
- });
-
- t.test('allows overriding array limit', function (st) {
- st.deepEqual(qs.parse('a[0]=b', { arrayLimit: -1 }), { a: { '0': 'b' } });
- st.deepEqual(qs.parse('a[-1]=b', { arrayLimit: -1 }), { a: { '-1': 'b' } });
- st.deepEqual(qs.parse('a[0]=b&a[1]=c', { arrayLimit: 0 }), { a: { '0': 'b', '1': 'c' } });
- st.end();
- });
-
- t.test('allows disabling array parsing', function (st) {
- st.deepEqual(qs.parse('a[0]=b&a[1]=c', { parseArrays: false }), { a: { '0': 'b', '1': 'c' } });
- st.end();
- });
-
- t.test('parses an object', function (st) {
- var input = {
- 'user[name]': { 'pop[bob]': 3 },
- 'user[email]': null
- };
-
- var expected = {
- user: {
- name: { 'pop[bob]': 3 },
- email: null
- }
- };
-
- var result = qs.parse(input);
-
- st.deepEqual(result, expected);
- st.end();
- });
-
- t.test('parses an object in dot notation', function (st) {
- var input = {
- 'user.name': { 'pop[bob]': 3 },
- 'user.email.': null
- };
-
- var expected = {
- user: {
- name: { 'pop[bob]': 3 },
- email: null
- }
- };
-
- var result = qs.parse(input, { allowDots: true });
-
- st.deepEqual(result, expected);
- st.end();
- });
-
- t.test('parses an object and not child values', function (st) {
- var input = {
- 'user[name]': { 'pop[bob]': { 'test': 3 } },
- 'user[email]': null
- };
-
- var expected = {
- user: {
- name: { 'pop[bob]': { 'test': 3 } },
- email: null
- }
- };
-
- var result = qs.parse(input);
-
- st.deepEqual(result, expected);
- st.end();
- });
-
- t.test('does not blow up when Buffer global is missing', function (st) {
- var tempBuffer = global.Buffer;
- delete global.Buffer;
- var result = qs.parse('a=b&c=d');
- global.Buffer = tempBuffer;
- st.deepEqual(result, { a: 'b', c: 'd' });
- st.end();
- });
-
- t.test('does not crash when parsing circular references', function (st) {
- var a = {};
- a.b = a;
-
- var parsed;
-
- st.doesNotThrow(function () {
- parsed = qs.parse({ 'foo[bar]': 'baz', 'foo[baz]': a });
- });
-
- st.equal('foo' in parsed, true, 'parsed has "foo" property');
- st.equal('bar' in parsed.foo, true);
- st.equal('baz' in parsed.foo, true);
- st.equal(parsed.foo.bar, 'baz');
- st.deepEqual(parsed.foo.baz, a);
- st.end();
- });
-
- t.test('parses plain objects correctly', function (st) {
- var a = Object.create(null);
- a.b = 'c';
-
- st.deepEqual(qs.parse(a), { b: 'c' });
- var result = qs.parse({ a: a });
- st.equal('a' in result, true, 'result has "a" property');
- st.deepEqual(result.a, a);
- st.end();
- });
-
- t.test('parses dates correctly', function (st) {
- var now = new Date();
- st.deepEqual(qs.parse({ a: now }), { a: now });
- st.end();
- });
-
- t.test('parses regular expressions correctly', function (st) {
- var re = /^test$/;
- st.deepEqual(qs.parse({ a: re }), { a: re });
- st.end();
- });
-
- t.test('can allow overwriting prototype properties', function (st) {
- st.deepEqual(qs.parse('a[hasOwnProperty]=b', { allowPrototypes: true }), { a: { hasOwnProperty: 'b' } }, { prototype: false });
- st.deepEqual(qs.parse('hasOwnProperty=b', { allowPrototypes: true }), { hasOwnProperty: 'b' }, { prototype: false });
- st.end();
- });
-
- t.test('can return plain objects', function (st) {
- var expected = Object.create(null);
- expected.a = Object.create(null);
- expected.a.b = 'c';
- expected.a.hasOwnProperty = 'd';
- st.deepEqual(qs.parse('a[b]=c&a[hasOwnProperty]=d', { plainObjects: true }), expected);
- st.deepEqual(qs.parse(null, { plainObjects: true }), Object.create(null));
- var expectedArray = Object.create(null);
- expectedArray.a = Object.create(null);
- expectedArray.a['0'] = 'b';
- expectedArray.a.c = 'd';
- st.deepEqual(qs.parse('a[]=b&a[c]=d', { plainObjects: true }), expectedArray);
- st.end();
- });
-
- t.test('can parse with custom encoding', function (st) {
- st.deepEqual(qs.parse('%8c%a7=%91%e5%8d%e3%95%7b', {
- decoder: function (str) {
- var reg = /\%([0-9A-F]{2})/ig;
- var result = [];
- var parts;
- var last = 0;
- while (parts = reg.exec(str)) {
- result.push(parseInt(parts[1], 16));
- last = parts.index + parts[0].length;
- }
- return iconv.decode(new Buffer(result), 'shift_jis').toString();
- }
- }), { 県: '大阪府' });
- st.end();
- });
-
- t.test('throws error with wrong decoder', function (st) {
- st.throws(function () {
- qs.parse({}, {
- decoder: 'string'
- });
- }, new TypeError('Decoder has to be a function.'));
- st.end();
- });
-});
diff --git a/node_modules/qs/test/stringify.js b/node_modules/qs/test/stringify.js
deleted file mode 100755
index 699397e..0000000
--- a/node_modules/qs/test/stringify.js
+++ /dev/null
@@ -1,305 +0,0 @@
-'use strict';
-
-var test = require('tape');
-var qs = require('../');
-var iconv = require('iconv-lite');
-
-test('stringify()', function (t) {
- t.test('stringifies a querystring object', function (st) {
- st.equal(qs.stringify({ a: 'b' }), 'a=b');
- st.equal(qs.stringify({ a: 1 }), 'a=1');
- st.equal(qs.stringify({ a: 1, b: 2 }), 'a=1&b=2');
- st.equal(qs.stringify({ a: 'A_Z' }), 'a=A_Z');
- st.equal(qs.stringify({ a: '€' }), 'a=%E2%82%AC');
- st.equal(qs.stringify({ a: '' }), 'a=%EE%80%80');
- st.equal(qs.stringify({ a: 'א' }), 'a=%D7%90');
- st.equal(qs.stringify({ a: '𐐷' }), 'a=%F0%90%90%B7');
- 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');
- st.end();
- });
-
- t.test('stringifies a nested object with dots notation', function (st) {
- st.equal(qs.stringify({ a: { b: 'c' } }, { allowDots: true }), 'a.b=c');
- st.equal(qs.stringify({ a: { b: { c: { d: 'e' } } } }, { allowDots: true }), 'a.b.c.d=e');
- st.end();
- });
-
- t.test('stringifies an array value', function (st) {
- st.equal(qs.stringify({ a: ['b', 'c', 'd'] }), 'a%5B0%5D=b&a%5B1%5D=c&a%5B2%5D=d');
- st.end();
- });
-
- t.test('omits nulls when asked', function (st) {
- st.equal(qs.stringify({ a: 'b', c: null }, { skipNulls: true }), 'a=b');
- st.end();
- });
-
-
- t.test('omits nested nulls when asked', function (st) {
- st.equal(qs.stringify({ a: { b: 'c', d: null } }, { skipNulls: true }), 'a%5Bb%5D=c');
- st.end();
- });
-
- t.test('omits array indices when asked', function (st) {
- st.equal(qs.stringify({ a: ['b', 'c', 'd'] }, { indices: false }), 'a=b&a=c&a=d');
- st.end();
- });
-
- t.test('stringifies a nested array value', function (st) {
- st.equal(qs.stringify({ a: { b: ['c', 'd'] } }), 'a%5Bb%5D%5B0%5D=c&a%5Bb%5D%5B1%5D=d');
- st.end();
- });
-
- t.test('stringifies a nested array value with dots notation', function (st) {
- st.equal(qs.stringify({ a: { b: ['c', 'd'] } }, { allowDots: true, encode: false }), 'a.b[0]=c&a.b[1]=d');
- st.end();
- });
-
- t.test('stringifies an object inside an array', function (st) {
- st.equal(qs.stringify({ a: [{ b: 'c' }] }), 'a%5B0%5D%5Bb%5D=c');
- st.equal(qs.stringify({ a: [{ b: { c: [1] } }] }), 'a%5B0%5D%5Bb%5D%5Bc%5D%5B0%5D=1');
- st.end();
- });
-
- t.test('stringifies an array with mixed objects and primitives', function (st) {
- st.equal(qs.stringify({ a: [{ b: 1 }, 2, 3] }, { encode: false }), 'a[0][b]=1&a[1]=2&a[2]=3');
- st.end();
- });
-
- t.test('stringifies an object inside an array with dots notation', function (st) {
- st.equal(qs.stringify({ a: [{ b: 'c' }] }, { allowDots: true, encode: false }), 'a[0].b=c');
- st.equal(qs.stringify({ a: [{ b: { c: [1] } }] }, { allowDots: true, encode: false }), 'a[0].b.c[0]=1');
- st.end();
- });
-
- t.test('does not omit object keys when indices = false', function (st) {
- st.equal(qs.stringify({ a: [{ b: 'c' }] }, { indices: false }), 'a%5Bb%5D=c');
- st.end();
- });
-
- t.test('uses indices notation for arrays when indices=true', function (st) {
- st.equal(qs.stringify({ a: ['b', 'c'] }, { indices: true }), 'a%5B0%5D=b&a%5B1%5D=c');
- st.end();
- });
-
- t.test('uses indices notation for arrays when no arrayFormat is specified', function (st) {
- st.equal(qs.stringify({ a: ['b', 'c'] }), 'a%5B0%5D=b&a%5B1%5D=c');
- st.end();
- });
-
- t.test('uses indices notation for arrays when no arrayFormat=indices', function (st) {
- st.equal(qs.stringify({ a: ['b', 'c'] }, { arrayFormat: 'indices' }), 'a%5B0%5D=b&a%5B1%5D=c');
- st.end();
- });
-
- t.test('uses repeat notation for arrays when no arrayFormat=repeat', function (st) {
- st.equal(qs.stringify({ a: ['b', 'c'] }, { arrayFormat: 'repeat' }), 'a=b&a=c');
- st.end();
- });
-
- t.test('uses brackets notation for arrays when no arrayFormat=brackets', function (st) {
- st.equal(qs.stringify({ a: ['b', 'c'] }, { arrayFormat: 'brackets' }), 'a%5B%5D=b&a%5B%5D=c');
- st.end();
- });
-
- t.test('stringifies a complicated object', function (st) {
- st.equal(qs.stringify({ a: { b: 'c', d: 'e' } }), 'a%5Bb%5D=c&a%5Bd%5D=e');
- st.end();
- });
-
- t.test('stringifies an empty value', function (st) {
- st.equal(qs.stringify({ a: '' }), 'a=');
- st.equal(qs.stringify({ a: null }, { strictNullHandling: true }), 'a');
-
- st.equal(qs.stringify({ a: '', b: '' }), 'a=&b=');
- st.equal(qs.stringify({ a: null, b: '' }, { strictNullHandling: true }), 'a&b=');
-
- st.equal(qs.stringify({ a: { b: '' } }), 'a%5Bb%5D=');
- st.equal(qs.stringify({ a: { b: null } }, { strictNullHandling: true }), 'a%5Bb%5D');
- st.equal(qs.stringify({ a: { b: null } }, { strictNullHandling: false }), 'a%5Bb%5D=');
-
- st.end();
- });
-
- t.test('stringifies an empty object', function (st) {
- var obj = Object.create(null);
- obj.a = 'b';
- st.equal(qs.stringify(obj), 'a=b');
- st.end();
- });
-
- t.test('returns an empty string for invalid input', function (st) {
- st.equal(qs.stringify(undefined), '');
- st.equal(qs.stringify(false), '');
- st.equal(qs.stringify(null), '');
- st.equal(qs.stringify(''), '');
- st.end();
- });
-
- t.test('stringifies an object with an empty object as a child', function (st) {
- var obj = {
- a: Object.create(null)
- };
-
- obj.a.b = 'c';
- st.equal(qs.stringify(obj), 'a%5Bb%5D=c');
- st.end();
- });
-
- t.test('drops keys with a value of undefined', function (st) {
- st.equal(qs.stringify({ a: undefined }), '');
-
- st.equal(qs.stringify({ a: { b: undefined, c: null } }, { strictNullHandling: true }), 'a%5Bc%5D');
- st.equal(qs.stringify({ a: { b: undefined, c: null } }, { strictNullHandling: false }), 'a%5Bc%5D=');
- st.equal(qs.stringify({ a: { b: undefined, c: '' } }), 'a%5Bc%5D=');
- st.end();
- });
-
- t.test('url encodes values', function (st) {
- st.equal(qs.stringify({ a: 'b c' }), 'a=b%20c');
- st.end();
- });
-
- t.test('stringifies a date', function (st) {
- var now = new Date();
- var str = 'a=' + encodeURIComponent(now.toISOString());
- st.equal(qs.stringify({ a: now }), str);
- st.end();
- });
-
- t.test('stringifies the weird object from qs', function (st) {
- st.equal(qs.stringify({ 'my weird field': '~q1!2"\'w$5&7/z8)?' }), 'my%20weird%20field=~q1%212%22%27w%245%267%2Fz8%29%3F');
- st.end();
- });
-
- t.test('skips properties that are part of the object prototype', function (st) {
- Object.prototype.crash = 'test';
- st.equal(qs.stringify({ a: 'b' }), 'a=b');
- st.equal(qs.stringify({ a: { b: 'c' } }), 'a%5Bb%5D=c');
- delete Object.prototype.crash;
- st.end();
- });
-
- t.test('stringifies boolean values', function (st) {
- st.equal(qs.stringify({ a: true }), 'a=true');
- st.equal(qs.stringify({ a: { b: true } }), 'a%5Bb%5D=true');
- st.equal(qs.stringify({ b: false }), 'b=false');
- st.equal(qs.stringify({ b: { c: false } }), 'b%5Bc%5D=false');
- st.end();
- });
-
- t.test('stringifies buffer values', function (st) {
- st.equal(qs.stringify({ a: new Buffer('test') }), 'a=test');
- st.equal(qs.stringify({ a: { b: new Buffer('test') } }), 'a%5Bb%5D=test');
- st.end();
- });
-
- t.test('stringifies an object using an alternative delimiter', function (st) {
- st.equal(qs.stringify({ a: 'b', c: 'd' }, { delimiter: ';' }), 'a=b;c=d');
- st.end();
- });
-
- t.test('doesn\'t blow up when Buffer global is missing', function (st) {
- var tempBuffer = global.Buffer;
- delete global.Buffer;
- var result = qs.stringify({ a: 'b', c: 'd' });
- global.Buffer = tempBuffer;
- st.equal(result, 'a=b&c=d');
- st.end();
- });
-
- t.test('selects properties when filter=array', function (st) {
- st.equal(qs.stringify({ a: 'b' }, { filter: ['a'] }), 'a=b');
- st.equal(qs.stringify({ a: 1 }, { filter: [] }), '');
- st.equal(qs.stringify({ a: { b: [1, 2, 3, 4], c: 'd' }, c: 'f' }, { filter: ['a', 'b', 0, 2] }), 'a%5Bb%5D%5B0%5D=1&a%5Bb%5D%5B2%5D=3');
- st.end();
- });
-
- t.test('supports custom representations when filter=function', function (st) {
- var calls = 0;
- var obj = { a: 'b', c: 'd', e: { f: new Date(1257894000000) } };
- var filterFunc = function (prefix, value) {
- calls++;
- if (calls === 1) {
- st.equal(prefix, '', 'prefix is empty');
- st.equal(value, obj);
- } else if (prefix === 'c') {
- return;
- } else if (value instanceof Date) {
- st.equal(prefix, 'e[f]');
- return value.getTime();
- }
- return value;
- };
-
- st.equal(qs.stringify(obj, { filter: filterFunc }), 'a=b&e%5Bf%5D=1257894000000');
- st.equal(calls, 5);
- st.end();
- });
-
- t.test('can disable uri encoding', function (st) {
- st.equal(qs.stringify({ a: 'b' }, { encode: false }), 'a=b');
- st.equal(qs.stringify({ a: { b: 'c' } }, { encode: false }), 'a[b]=c');
- st.equal(qs.stringify({ a: 'b', c: null }, { strictNullHandling: true, encode: false }), 'a=b&c');
- st.end();
- });
-
- t.test('can sort the keys', function (st) {
- var sort = function (a, b) { return a.localeCompare(b); };
- st.equal(qs.stringify({ a: 'c', z: 'y', b: 'f' }, { sort: sort }), 'a=c&b=f&z=y');
- st.equal(qs.stringify({ a: 'c', z: { j: 'a', i: 'b' }, b: 'f' }, { sort: sort }), 'a=c&b=f&z%5Bi%5D=b&z%5Bj%5D=a');
- st.end();
- });
-
- t.test('can sort the keys at depth 3 or more too', function (st) {
- var sort = function (a, b) { return a.localeCompare(b); };
- st.equal(qs.stringify({ a: 'a', z: { zj: {zjb: 'zjb', zja: 'zja'}, zi: {zib: 'zib', zia: 'zia'} }, b: 'b' }, { sort: sort, encode: false }), 'a=a&b=b&z[zi][zia]=zia&z[zi][zib]=zib&z[zj][zja]=zja&z[zj][zjb]=zjb');
- st.equal(qs.stringify({ a: 'a', z: { zj: {zjb: 'zjb', zja: 'zja'}, zi: {zib: 'zib', zia: 'zia'} }, b: 'b' }, { sort: null, encode: false }), 'a=a&z[zj][zjb]=zjb&z[zj][zja]=zja&z[zi][zib]=zib&z[zi][zia]=zia&b=b');
- st.end();
- });
-
- t.test('can stringify with custom encoding', function (st) {
- st.equal(qs.stringify({ 県: '大阪府', '': ''}, {
- encoder: function (str) {
- if (str.length === 0) {
- return '';
- }
- var buf = iconv.encode(str, 'shiftjis');
- var result = [];
- for (var i=0; i < buf.length; ++i) {
- result.push(buf.readUInt8(i).toString(16));
- }
- return '%' + result.join('%');
- }
- }), '%8c%a7=%91%e5%8d%e3%95%7b&=');
- st.end();
- });
-
- t.test('throws error with wrong encoder', function (st) {
- st.throws(function () {
- qs.stringify({}, {
- encoder: 'string'
- });
- }, new TypeError('Encoder has to be a function.'));
- st.end();
- });
-
- t.test('can use custom encoder for a buffer object', {
- skip: typeof Buffer === 'undefined'
- }, function (st) {
- st.equal(qs.stringify({ a: new Buffer([1]) }, {
- encoder: function (buffer) {
- if (typeof buffer === 'string') {
- return buffer;
- }
- return String.fromCharCode(buffer.readUInt8(0) + 97);
- }
- }), 'a=b');
- st.end();
- });
-});
diff --git a/node_modules/qs/test/utils.js b/node_modules/qs/test/utils.js
deleted file mode 100755
index 4a8d824..0000000
--- a/node_modules/qs/test/utils.js
+++ /dev/null
@@ -1,9 +0,0 @@
-'use strict';
-
-var test = require('tape');
-var utils = require('../lib/utils');
-
-test('merge()', function (t) {
- t.deepEqual(utils.merge({ a: 'b' }, { a: 'c' }), { a: ['b', 'c'] }, 'merges two objects with the same key');
- t.end();
-});