123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523 |
- (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){
- // Load modules
- var Stringify = require('./stringify');
- var Parse = require('./parse');
- // Declare internals
- var internals = {};
- module.exports = {
- stringify: Stringify,
- parse: Parse
- };
- },{"./parse":2,"./stringify":3}],2:[function(require,module,exports){
- // Load modules
- var Utils = require('./utils');
- // Declare internals
- var internals = {
- delimiter: '&',
- depth: 5,
- arrayLimit: 20,
- parameterLimit: 1000,
- strictNullHandling: false,
- plainObjects: false,
- allowPrototypes: false,
- allowDots: false
- };
- internals.parseValues = function (str, options) {
- var obj = {};
- var parts = str.split(options.delimiter, options.parameterLimit === Infinity ? undefined : options.parameterLimit);
- for (var i = 0, il = parts.length; i < il; ++i) {
- var part = parts[i];
- var pos = part.indexOf(']=') === -1 ? part.indexOf('=') : part.indexOf(']=') + 1;
- if (pos === -1) {
- obj[Utils.decode(part)] = '';
- if (options.strictNullHandling) {
- obj[Utils.decode(part)] = null;
- }
- }
- else {
- var key = Utils.decode(part.slice(0, pos));
- var val = Utils.decode(part.slice(pos + 1));
- if (!Object.prototype.hasOwnProperty.call(obj, key)) {
- obj[key] = val;
- }
- else {
- obj[key] = [].concat(obj[key]).concat(val);
- }
- }
- }
- return obj;
- };
- internals.parseObject = function (chain, val, options) {
- if (!chain.length) {
- return val;
- }
- var root = chain.shift();
- var obj;
- if (root === '[]') {
- obj = [];
- obj = obj.concat(internals.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);
- var indexString = '' + index;
- if (!isNaN(index) &&
- root !== cleanRoot &&
- indexString === cleanRoot &&
- index >= 0 &&
- (options.parseArrays &&
- index <= options.arrayLimit)) {
- obj = [];
- obj[index] = internals.parseObject(chain, val, options);
- }
- else {
- obj[cleanRoot] = internals.parseObject(chain, val, options);
- }
- }
- return obj;
- };
- internals.parseKeys = function (key, val, options) {
- if (!key) {
- return;
- }
- // Transform dot notation to bracket notation
- if (options.allowDots) {
- key = key.replace(/\.([^\.\[]+)/g, '[$1]');
- }
- // 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;
- 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 internals.parseObject(keys, val, options);
- };
- module.exports = function (str, options) {
- options = options || {};
- options.delimiter = typeof options.delimiter === 'string' || Utils.isRegExp(options.delimiter) ? options.delimiter : internals.delimiter;
- options.depth = typeof options.depth === 'number' ? options.depth : internals.depth;
- options.arrayLimit = typeof options.arrayLimit === 'number' ? options.arrayLimit : internals.arrayLimit;
- options.parseArrays = options.parseArrays !== false;
- options.allowDots = typeof options.allowDots === 'boolean' ? options.allowDots : internals.allowDots;
- options.plainObjects = typeof options.plainObjects === 'boolean' ? options.plainObjects : internals.plainObjects;
- options.allowPrototypes = typeof options.allowPrototypes === 'boolean' ? options.allowPrototypes : internals.allowPrototypes;
- options.parameterLimit = typeof options.parameterLimit === 'number' ? options.parameterLimit : internals.parameterLimit;
- options.strictNullHandling = typeof options.strictNullHandling === 'boolean' ? options.strictNullHandling : internals.strictNullHandling;
- if (str === '' ||
- str === null ||
- typeof str === 'undefined') {
- return options.plainObjects ? Object.create(null) : {};
- }
- var tempObj = typeof str === 'string' ? internals.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, il = keys.length; i < il; ++i) {
- var key = keys[i];
- var newObj = internals.parseKeys(key, tempObj[key], options);
- obj = Utils.merge(obj, newObj, options);
- }
- return Utils.compact(obj);
- };
- },{"./utils":4}],3:[function(require,module,exports){
- // Load modules
- var Utils = require('./utils');
- // Declare internals
- var internals = {
- delimiter: '&',
- arrayPrefixGenerators: {
- brackets: function (prefix, key) {
- return prefix + '[]';
- },
- indices: function (prefix, key) {
- return prefix + '[' + key + ']';
- },
- repeat: function (prefix, key) {
- return prefix;
- }
- },
- strictNullHandling: false
- };
- internals.stringify = function (obj, prefix, generateArrayPrefix, strictNullHandling, filter) {
- if (typeof filter === 'function') {
- obj = filter(prefix, obj);
- }
- else if (Utils.isBuffer(obj)) {
- obj = obj.toString();
- }
- else if (obj instanceof Date) {
- obj = obj.toISOString();
- }
- else if (obj === null) {
- if (strictNullHandling) {
- return Utils.encode(prefix);
- }
- obj = '';
- }
- if (typeof obj === 'string' ||
- typeof obj === 'number' ||
- typeof obj === 'boolean') {
- return [Utils.encode(prefix) + '=' + Utils.encode(obj)];
- }
- var values = [];
- if (typeof obj === 'undefined') {
- return values;
- }
- var objKeys = Array.isArray(filter) ? filter : Object.keys(obj);
- for (var i = 0, il = objKeys.length; i < il; ++i) {
- var key = objKeys[i];
- if (Array.isArray(obj)) {
- values = values.concat(internals.stringify(obj[key], generateArrayPrefix(prefix, key), generateArrayPrefix, strictNullHandling, filter));
- }
- else {
- values = values.concat(internals.stringify(obj[key], prefix + '[' + key + ']', generateArrayPrefix, strictNullHandling, filter));
- }
- }
- return values;
- };
- module.exports = function (obj, options) {
- options = options || {};
- var delimiter = typeof options.delimiter === 'undefined' ? internals.delimiter : options.delimiter;
- var strictNullHandling = typeof options.strictNullHandling === 'boolean' ? options.strictNullHandling : internals.strictNullHandling;
- var objKeys;
- var filter;
- 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 internals.arrayPrefixGenerators) {
- arrayFormat = options.arrayFormat;
- }
- else if ('indices' in options) {
- arrayFormat = options.indices ? 'indices' : 'repeat';
- }
- else {
- arrayFormat = 'indices';
- }
- var generateArrayPrefix = internals.arrayPrefixGenerators[arrayFormat];
- if (!objKeys) {
- objKeys = Object.keys(obj);
- }
- for (var i = 0, il = objKeys.length; i < il; ++i) {
- var key = objKeys[i];
- keys = keys.concat(internals.stringify(obj[key], key, generateArrayPrefix, strictNullHandling, filter));
- }
- return keys.join(delimiter);
- };
- },{"./utils":4}],4:[function(require,module,exports){
- // Load modules
- // Declare internals
- var internals = {};
- internals.hexTable = new Array(256);
- for (var h = 0; h < 256; ++h) {
- internals.hexTable[h] = '%' + ((h < 16 ? '0' : '') + h.toString(16)).toUpperCase();
- }
- exports.arrayToObject = function (source, options) {
- var obj = options.plainObjects ? Object.create(null) : {};
- for (var i = 0, il = source.length; i < il; ++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 {
- target = [target, source];
- }
- return target;
- }
- if (typeof target !== 'object') {
- target = [target].concat(source);
- return target;
- }
- if (Array.isArray(target) &&
- !Array.isArray(source)) {
- target = exports.arrayToObject(target, options);
- }
- var keys = Object.keys(source);
- for (var k = 0, kl = keys.length; k < kl; ++k) {
- var key = keys[k];
- var value = source[key];
- if (!Object.prototype.hasOwnProperty.call(target, key)) {
- target[key] = value;
- }
- else {
- target[key] = exports.merge(target[key], value, options);
- }
- }
- return target;
- };
- 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;
- }
- if (typeof str !== 'string') {
- str = '' + str;
- }
- var out = '';
- for (var i = 0, il = str.length; i < il; ++i) {
- var c = str.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 += str[i];
- continue;
- }
- if (c < 0x80) {
- out += internals.hexTable[c];
- continue;
- }
- if (c < 0x800) {
- out += internals.hexTable[0xC0 | (c >> 6)] + internals.hexTable[0x80 | (c & 0x3F)];
- continue;
- }
- if (c < 0xD800 || c >= 0xE000) {
- out += internals.hexTable[0xE0 | (c >> 12)] + internals.hexTable[0x80 | ((c >> 6) & 0x3F)] + internals.hexTable[0x80 | (c & 0x3F)];
- continue;
- }
- ++i;
- c = 0x10000 + (((c & 0x3FF) << 10) | (str.charCodeAt(i) & 0x3FF));
- out += internals.hexTable[0xF0 | (c >> 18)] + internals.hexTable[0x80 | ((c >> 12) & 0x3F)] + internals.hexTable[0x80 | ((c >> 6) & 0x3F)] + internals.hexTable[0x80 | (c & 0x3F)];
- }
- return out;
- };
- exports.compact = function (obj, refs) {
- if (typeof obj !== 'object' ||
- obj === null) {
- return obj;
- }
- refs = refs || [];
- var lookup = refs.indexOf(obj);
- if (lookup !== -1) {
- return refs[lookup];
- }
- refs.push(obj);
- if (Array.isArray(obj)) {
- var compacted = [];
- for (var i = 0, il = obj.length; i < il; ++i) {
- if (typeof obj[i] !== 'undefined') {
- compacted.push(obj[i]);
- }
- }
- return compacted;
- }
- var keys = Object.keys(obj);
- for (i = 0, il = keys.length; i < il; ++i) {
- var key = keys[i];
- 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)
- });
|