| 1234567891011121314151617181920212223242526272829303132333435363738 | var typecast = require('../string/typecast');var isString = require('../lang/isString');var isArray = require('../lang/isArray');var hasOwn = require('../object/hasOwn');    /**     * Decode query string into an object of keys => vals.     */    function decode(queryStr, shouldTypecast) {        var queryArr = (queryStr || '').replace('?', '').split('&'),            count = -1,            length = queryArr.length,            obj = {},            item, pValue, pName, toSet;        while (++count < length) {            item = queryArr[count].split('=');            pName = item[0];            if (!pName || !pName.length){                continue;            }            pValue = shouldTypecast === false ? item[1] : typecast(item[1]);            toSet = isString(pValue) ? decodeURIComponent(pValue) : pValue;            if (hasOwn(obj,pName)){                if(isArray(obj[pName])){                    obj[pName].push(toSet);                } else {                    obj[pName] = [obj[pName],toSet];                }            } else {                obj[pName] = toSet;           }        }        return obj;    }    module.exports = decode;
 |