{"version":3,"file":"../../desktop/url-search-params-polyfill.js","sources":["desktop/url-search-params-polyfill.js"],"sourcesContent":["/**\r\n *\r\n *\r\n * @author Jerry Bendy \r\n * @licence MIT\r\n *\r\n */\r\n\r\n(function(self) {\r\n 'use strict';\r\n\r\n var nativeURLSearchParams = (self.URLSearchParams && self.URLSearchParams.prototype.get) ? self.URLSearchParams : null,\r\n isSupportObjectConstructor = nativeURLSearchParams && (new nativeURLSearchParams({a: 1})).toString() === 'a=1',\r\n // There is a bug in safari 10.1 (and earlier) that incorrectly decodes `%2B` as an empty space and not a plus.\r\n decodesPlusesCorrectly = nativeURLSearchParams && (new nativeURLSearchParams('s=%2B').get('s') === '+'),\r\n __URLSearchParams__ = \"__URLSearchParams__\",\r\n // Fix bug in Edge which cannot encode ' &' correctly\r\n encodesAmpersandsCorrectly = nativeURLSearchParams ? (function() {\r\n var ampersandTest = new nativeURLSearchParams();\r\n ampersandTest.append('s', ' &');\r\n return ampersandTest.toString() === 's=+%26';\r\n })() : true,\r\n prototype = URLSearchParamsPolyfill.prototype,\r\n iterable = !!(self.Symbol && self.Symbol.iterator);\r\n\r\n if (nativeURLSearchParams && isSupportObjectConstructor && decodesPlusesCorrectly && encodesAmpersandsCorrectly) {\r\n return;\r\n }\r\n\r\n\r\n /**\r\n * Make a URLSearchParams instance\r\n *\r\n * @param {object|string|URLSearchParams} search\r\n * @constructor\r\n */\r\n function URLSearchParamsPolyfill(search) {\r\n search = search || \"\";\r\n\r\n // support construct object with another URLSearchParams instance\r\n if (search instanceof URLSearchParams || search instanceof URLSearchParamsPolyfill) {\r\n search = search.toString();\r\n }\r\n this [__URLSearchParams__] = parseToDict(search);\r\n }\r\n\r\n\r\n /**\r\n * Appends a specified key/value pair as a new search parameter.\r\n *\r\n * @param {string} name\r\n * @param {string} value\r\n */\r\n prototype.append = function(name, value) {\r\n appendTo(this [__URLSearchParams__], name, value);\r\n };\r\n\r\n /**\r\n * Deletes the given search parameter, and its associated value,\r\n * from the list of all search parameters.\r\n *\r\n * @param {string} name\r\n */\r\n prototype['delete'] = function(name) {\r\n delete this [__URLSearchParams__] [name];\r\n };\r\n\r\n /**\r\n * Returns the first value associated to the given search parameter.\r\n *\r\n * @param {string} name\r\n * @returns {string|null}\r\n */\r\n prototype.get = function(name) {\r\n var dict = this [__URLSearchParams__];\r\n return name in dict ? dict[name][0] : null;\r\n };\r\n\r\n /**\r\n * Returns all the values association with a given search parameter.\r\n *\r\n * @param {string} name\r\n * @returns {Array}\r\n */\r\n prototype.getAll = function(name) {\r\n var dict = this [__URLSearchParams__];\r\n return name in dict ? dict [name].slice(0) : [];\r\n };\r\n\r\n /**\r\n * Returns a Boolean indicating if such a search parameter exists.\r\n *\r\n * @param {string} name\r\n * @returns {boolean}\r\n */\r\n prototype.has = function(name) {\r\n return name in this [__URLSearchParams__];\r\n };\r\n\r\n /**\r\n * Sets the value associated to a given search parameter to\r\n * the given value. If there were several values, delete the\r\n * others.\r\n *\r\n * @param {string} name\r\n * @param {string} value\r\n */\r\n prototype.set = function set(name, value) {\r\n this [__URLSearchParams__][name] = ['' + value];\r\n };\r\n\r\n /**\r\n * Returns a string containg a query string suitable for use in a URL.\r\n *\r\n * @returns {string}\r\n */\r\n prototype.toString = function() {\r\n var dict = this[__URLSearchParams__], query = [], i, key, name, value;\r\n for (key in dict) {\r\n name = encode(key);\r\n for (i = 0, value = dict[key]; i < value.length; i++) {\r\n query.push(name + '=' + encode(value[i]));\r\n }\r\n }\r\n return query.join('&');\r\n };\r\n\r\n // There is a bug in Safari 10.1 and `Proxy`ing it is not enough.\r\n var forSureUsePolyfill = !decodesPlusesCorrectly;\r\n var useProxy = (!forSureUsePolyfill && nativeURLSearchParams && !isSupportObjectConstructor && self.Proxy)\r\n /*\r\n * Apply polifill to global object and append other prototype into it\r\n */\r\n Object.defineProperty(self, 'URLSearchParams', {\r\n value: (useProxy ?\r\n // Safari 10.0 doesn't support Proxy, so it won't extend URLSearchParams on safari 10.0\r\n new Proxy(nativeURLSearchParams, {\r\n construct: function(target, args) {\r\n return new target((new URLSearchParamsPolyfill(args[0]).toString()));\r\n }\r\n }) :\r\n URLSearchParamsPolyfill)\r\n });\r\n\r\n var USPProto = self.URLSearchParams.prototype;\r\n\r\n USPProto.polyfill = true;\r\n\r\n /**\r\n *\r\n * @param {function} callback\r\n * @param {object} thisArg\r\n */\r\n USPProto.forEach = USPProto.forEach || function(callback, thisArg) {\r\n var dict = parseToDict(this.toString());\r\n Object.getOwnPropertyNames(dict).forEach(function(name) {\r\n dict[name].forEach(function(value) {\r\n callback.call(thisArg, value, name, this);\r\n }, this);\r\n }, this);\r\n };\r\n\r\n /**\r\n * Sort all name-value pairs\r\n */\r\n USPProto.sort = USPProto.sort || function() {\r\n var dict = parseToDict(this.toString()), keys = [], k, i, j;\r\n for (k in dict) {\r\n keys.push(k);\r\n }\r\n keys.sort();\r\n\r\n for (i = 0; i < keys.length; i++) {\r\n this['delete'](keys[i]);\r\n }\r\n for (i = 0; i < keys.length; i++) {\r\n var key = keys[i], values = dict[key];\r\n for (j = 0; j < values.length; j++) {\r\n this.append(key, values[j]);\r\n }\r\n }\r\n };\r\n\r\n /**\r\n * Returns an iterator allowing to go through all keys of\r\n * the key/value pairs contained in this object.\r\n *\r\n * @returns {function}\r\n */\r\n USPProto.keys = USPProto.keys || function() {\r\n var items = [];\r\n this.forEach(function(item, name) {\r\n items.push(name);\r\n });\r\n return makeIterator(items);\r\n };\r\n\r\n /**\r\n * Returns an iterator allowing to go through all values of\r\n * the key/value pairs contained in this object.\r\n *\r\n * @returns {function}\r\n */\r\n USPProto.values = USPProto.values || function() {\r\n var items = [];\r\n this.forEach(function(item) {\r\n items.push(item);\r\n });\r\n return makeIterator(items);\r\n };\r\n\r\n /**\r\n * Returns an iterator allowing to go through all key/value\r\n * pairs contained in this object.\r\n *\r\n * @returns {function}\r\n */\r\n USPProto.entries = USPProto.entries || function() {\r\n var items = [];\r\n this.forEach(function(item, name) {\r\n items.push([name, item]);\r\n });\r\n return makeIterator(items);\r\n };\r\n\r\n\r\n if (iterable) {\r\n USPProto[self.Symbol.iterator] = USPProto[self.Symbol.iterator] || USPProto.entries;\r\n }\r\n\r\n\r\n function encode(str) {\r\n var replace = {\r\n '!': '%21',\r\n \"'\": '%27',\r\n '(': '%28',\r\n ')': '%29',\r\n '~': '%7E',\r\n '%20': '+',\r\n '%00': '\\x00'\r\n };\r\n return encodeURIComponent(str).replace(/[!'\\(\\)~]|%20|%00/g, function(match) {\r\n return replace[match];\r\n });\r\n }\r\n\r\n function decode(str) {\r\n return str\r\n .replace(/[ +]/g, '%20')\r\n .replace(/(%[a-f0-9]{2})+/ig, function(match) {\r\n return decodeURIComponent(match);\r\n });\r\n }\r\n\r\n function makeIterator(arr) {\r\n var iterator = {\r\n next: function() {\r\n var value = arr.shift();\r\n return {done: value === undefined, value: value};\r\n }\r\n };\r\n\r\n if (iterable) {\r\n iterator[self.Symbol.iterator] = function() {\r\n return iterator;\r\n };\r\n }\r\n\r\n return iterator;\r\n }\r\n\r\n function parseToDict(search) {\r\n var dict = {};\r\n\r\n if (typeof search === \"object\") {\r\n // if `search` is an array, treat it as a sequence\r\n if (isArray(search)) {\r\n for (var i = 0; i < search.length; i++) {\r\n var item = search[i];\r\n if (isArray(item) && item.length === 2) {\r\n appendTo(dict, item[0], item[1]);\r\n } else {\r\n throw new TypeError(\"Failed to construct 'URLSearchParams': Sequence initializer must only contain pair elements\");\r\n }\r\n }\r\n\r\n } else {\r\n for (var key in search) {\r\n if (search.hasOwnProperty(key)) {\r\n appendTo(dict, key, search[key]);\r\n }\r\n }\r\n }\r\n\r\n } else {\r\n // remove first '?'\r\n if (search.indexOf(\"?\") === 0) {\r\n search = search.slice(1);\r\n }\r\n\r\n var pairs = search.split(\"&\");\r\n for (var j = 0; j < pairs.length; j++) {\r\n var value = pairs [j],\r\n index = value.indexOf('=');\r\n\r\n if (-1 < index) {\r\n appendTo(dict, decode(value.slice(0, index)), decode(value.slice(index + 1)));\r\n\r\n } else {\r\n if (value) {\r\n appendTo(dict, decode(value), '');\r\n }\r\n }\r\n }\r\n }\r\n\r\n return dict;\r\n }\r\n\r\n function appendTo(dict, name, value) {\r\n var val = typeof value === 'string' ? value : (\r\n value !== null && value !== undefined && typeof value.toString === 'function' ? value.toString() : JSON.stringify(value)\r\n )\r\n\r\n if (name in dict) {\r\n dict[name].push(val);\r\n } else {\r\n dict[name] = [val];\r\n }\r\n }\r\n\r\n function isArray(val) {\r\n return !!val && '[object Array]' === Object.prototype.toString.call(val);\r\n }\r\n\r\n})(typeof global !== 'undefined' ? global : (typeof window !== 'undefined' ? window : this));\r\n"],"names":["self","nativeURLSearchParams","URLSearchParams","prototype","get","isSupportObjectConstructor","a","toString","decodesPlusesCorrectly","__URLSearchParams__","encodesAmpersandsCorrectly","ampersandTest","append","URLSearchParamsPolyfill","iterable","Symbol","iterator","search","this","parseToDict","encode","str","replace","!","'","(",")","~","%20","%00","encodeURIComponent","match","decode","decodeURIComponent","makeIterator","arr","next","value","shift","done","undefined","dict","isArray","i","length","item","TypeError","appendTo","key","hasOwnProperty","pairs","indexOf","slice","split","j","index","name","val","JSON","stringify","push","Object","call","getAll","has","set","query","join","useProxy","Proxy","defineProperty","construct","target","args","USPProto","polyfill","forEach","callback","thisArg","getOwnPropertyNames","sort","k","keys","values","items","entries","global","window"],"mappings":"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"}