| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424 | 
							- 'use strict';
 
- // TODO: in core-js@4, move /modules/ dependencies to public entries for better optimization by tools like `preset-env`
 
- require('../modules/es.array.iterator');
 
- var $ = require('../internals/export');
 
- var global = require('../internals/global');
 
- var call = require('../internals/function-call');
 
- var uncurryThis = require('../internals/function-uncurry-this');
 
- var DESCRIPTORS = require('../internals/descriptors');
 
- var USE_NATIVE_URL = require('../internals/url-constructor-detection');
 
- var defineBuiltIn = require('../internals/define-built-in');
 
- var defineBuiltInAccessor = require('../internals/define-built-in-accessor');
 
- var defineBuiltIns = require('../internals/define-built-ins');
 
- var setToStringTag = require('../internals/set-to-string-tag');
 
- var createIteratorConstructor = require('../internals/iterator-create-constructor');
 
- var InternalStateModule = require('../internals/internal-state');
 
- var anInstance = require('../internals/an-instance');
 
- var isCallable = require('../internals/is-callable');
 
- var hasOwn = require('../internals/has-own-property');
 
- var bind = require('../internals/function-bind-context');
 
- var classof = require('../internals/classof');
 
- var anObject = require('../internals/an-object');
 
- var isObject = require('../internals/is-object');
 
- var $toString = require('../internals/to-string');
 
- var create = require('../internals/object-create');
 
- var createPropertyDescriptor = require('../internals/create-property-descriptor');
 
- var getIterator = require('../internals/get-iterator');
 
- var getIteratorMethod = require('../internals/get-iterator-method');
 
- var createIterResultObject = require('../internals/create-iter-result-object');
 
- var validateArgumentsLength = require('../internals/validate-arguments-length');
 
- var wellKnownSymbol = require('../internals/well-known-symbol');
 
- var arraySort = require('../internals/array-sort');
 
- var ITERATOR = wellKnownSymbol('iterator');
 
- var URL_SEARCH_PARAMS = 'URLSearchParams';
 
- var URL_SEARCH_PARAMS_ITERATOR = URL_SEARCH_PARAMS + 'Iterator';
 
- var setInternalState = InternalStateModule.set;
 
- var getInternalParamsState = InternalStateModule.getterFor(URL_SEARCH_PARAMS);
 
- var getInternalIteratorState = InternalStateModule.getterFor(URL_SEARCH_PARAMS_ITERATOR);
 
- // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe
 
- var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;
 
- // Avoid NodeJS experimental warning
 
- var safeGetBuiltIn = function (name) {
 
-   if (!DESCRIPTORS) return global[name];
 
-   var descriptor = getOwnPropertyDescriptor(global, name);
 
-   return descriptor && descriptor.value;
 
- };
 
- var nativeFetch = safeGetBuiltIn('fetch');
 
- var NativeRequest = safeGetBuiltIn('Request');
 
- var Headers = safeGetBuiltIn('Headers');
 
- var RequestPrototype = NativeRequest && NativeRequest.prototype;
 
- var HeadersPrototype = Headers && Headers.prototype;
 
- var RegExp = global.RegExp;
 
- var TypeError = global.TypeError;
 
- var decodeURIComponent = global.decodeURIComponent;
 
- var encodeURIComponent = global.encodeURIComponent;
 
- var charAt = uncurryThis(''.charAt);
 
- var join = uncurryThis([].join);
 
- var push = uncurryThis([].push);
 
- var replace = uncurryThis(''.replace);
 
- var shift = uncurryThis([].shift);
 
- var splice = uncurryThis([].splice);
 
- var split = uncurryThis(''.split);
 
- var stringSlice = uncurryThis(''.slice);
 
- var plus = /\+/g;
 
- var sequences = Array(4);
 
- var percentSequence = function (bytes) {
 
-   return sequences[bytes - 1] || (sequences[bytes - 1] = RegExp('((?:%[\\da-f]{2}){' + bytes + '})', 'gi'));
 
- };
 
- var percentDecode = function (sequence) {
 
-   try {
 
-     return decodeURIComponent(sequence);
 
-   } catch (error) {
 
-     return sequence;
 
-   }
 
- };
 
- var deserialize = function (it) {
 
-   var result = replace(it, plus, ' ');
 
-   var bytes = 4;
 
-   try {
 
-     return decodeURIComponent(result);
 
-   } catch (error) {
 
-     while (bytes) {
 
-       result = replace(result, percentSequence(bytes--), percentDecode);
 
-     }
 
-     return result;
 
-   }
 
- };
 
- var find = /[!'()~]|%20/g;
 
- var replacements = {
 
-   '!': '%21',
 
-   "'": '%27',
 
-   '(': '%28',
 
-   ')': '%29',
 
-   '~': '%7E',
 
-   '%20': '+'
 
- };
 
- var replacer = function (match) {
 
-   return replacements[match];
 
- };
 
- var serialize = function (it) {
 
-   return replace(encodeURIComponent(it), find, replacer);
 
- };
 
- var URLSearchParamsIterator = createIteratorConstructor(function Iterator(params, kind) {
 
-   setInternalState(this, {
 
-     type: URL_SEARCH_PARAMS_ITERATOR,
 
-     target: getInternalParamsState(params).entries,
 
-     index: 0,
 
-     kind: kind
 
-   });
 
- }, URL_SEARCH_PARAMS, function next() {
 
-   var state = getInternalIteratorState(this);
 
-   var target = state.target;
 
-   var index = state.index++;
 
-   if (!target || index >= target.length) {
 
-     state.target = undefined;
 
-     return createIterResultObject(undefined, true);
 
-   }
 
-   var entry = target[index];
 
-   switch (state.kind) {
 
-     case 'keys': return createIterResultObject(entry.key, false);
 
-     case 'values': return createIterResultObject(entry.value, false);
 
-   } return createIterResultObject([entry.key, entry.value], false);
 
- }, true);
 
- var URLSearchParamsState = function (init) {
 
-   this.entries = [];
 
-   this.url = null;
 
-   if (init !== undefined) {
 
-     if (isObject(init)) this.parseObject(init);
 
-     else this.parseQuery(typeof init == 'string' ? charAt(init, 0) === '?' ? stringSlice(init, 1) : init : $toString(init));
 
-   }
 
- };
 
- URLSearchParamsState.prototype = {
 
-   type: URL_SEARCH_PARAMS,
 
-   bindURL: function (url) {
 
-     this.url = url;
 
-     this.update();
 
-   },
 
-   parseObject: function (object) {
 
-     var entries = this.entries;
 
-     var iteratorMethod = getIteratorMethod(object);
 
-     var iterator, next, step, entryIterator, entryNext, first, second;
 
-     if (iteratorMethod) {
 
-       iterator = getIterator(object, iteratorMethod);
 
-       next = iterator.next;
 
-       while (!(step = call(next, iterator)).done) {
 
-         entryIterator = getIterator(anObject(step.value));
 
-         entryNext = entryIterator.next;
 
-         if (
 
-           (first = call(entryNext, entryIterator)).done ||
 
-           (second = call(entryNext, entryIterator)).done ||
 
-           !call(entryNext, entryIterator).done
 
-         ) throw new TypeError('Expected sequence with length 2');
 
-         push(entries, { key: $toString(first.value), value: $toString(second.value) });
 
-       }
 
-     } else for (var key in object) if (hasOwn(object, key)) {
 
-       push(entries, { key: key, value: $toString(object[key]) });
 
-     }
 
-   },
 
-   parseQuery: function (query) {
 
-     if (query) {
 
-       var entries = this.entries;
 
-       var attributes = split(query, '&');
 
-       var index = 0;
 
-       var attribute, entry;
 
-       while (index < attributes.length) {
 
-         attribute = attributes[index++];
 
-         if (attribute.length) {
 
-           entry = split(attribute, '=');
 
-           push(entries, {
 
-             key: deserialize(shift(entry)),
 
-             value: deserialize(join(entry, '='))
 
-           });
 
-         }
 
-       }
 
-     }
 
-   },
 
-   serialize: function () {
 
-     var entries = this.entries;
 
-     var result = [];
 
-     var index = 0;
 
-     var entry;
 
-     while (index < entries.length) {
 
-       entry = entries[index++];
 
-       push(result, serialize(entry.key) + '=' + serialize(entry.value));
 
-     } return join(result, '&');
 
-   },
 
-   update: function () {
 
-     this.entries.length = 0;
 
-     this.parseQuery(this.url.query);
 
-   },
 
-   updateURL: function () {
 
-     if (this.url) this.url.update();
 
-   }
 
- };
 
- // `URLSearchParams` constructor
 
- // https://url.spec.whatwg.org/#interface-urlsearchparams
 
- var URLSearchParamsConstructor = function URLSearchParams(/* init */) {
 
-   anInstance(this, URLSearchParamsPrototype);
 
-   var init = arguments.length > 0 ? arguments[0] : undefined;
 
-   var state = setInternalState(this, new URLSearchParamsState(init));
 
-   if (!DESCRIPTORS) this.size = state.entries.length;
 
- };
 
- var URLSearchParamsPrototype = URLSearchParamsConstructor.prototype;
 
- defineBuiltIns(URLSearchParamsPrototype, {
 
-   // `URLSearchParams.prototype.append` method
 
-   // https://url.spec.whatwg.org/#dom-urlsearchparams-append
 
-   append: function append(name, value) {
 
-     var state = getInternalParamsState(this);
 
-     validateArgumentsLength(arguments.length, 2);
 
-     push(state.entries, { key: $toString(name), value: $toString(value) });
 
-     if (!DESCRIPTORS) this.length++;
 
-     state.updateURL();
 
-   },
 
-   // `URLSearchParams.prototype.delete` method
 
-   // https://url.spec.whatwg.org/#dom-urlsearchparams-delete
 
-   'delete': function (name /* , value */) {
 
-     var state = getInternalParamsState(this);
 
-     var length = validateArgumentsLength(arguments.length, 1);
 
-     var entries = state.entries;
 
-     var key = $toString(name);
 
-     var $value = length < 2 ? undefined : arguments[1];
 
-     var value = $value === undefined ? $value : $toString($value);
 
-     var index = 0;
 
-     while (index < entries.length) {
 
-       var entry = entries[index];
 
-       if (entry.key === key && (value === undefined || entry.value === value)) {
 
-         splice(entries, index, 1);
 
-         if (value !== undefined) break;
 
-       } else index++;
 
-     }
 
-     if (!DESCRIPTORS) this.size = entries.length;
 
-     state.updateURL();
 
-   },
 
-   // `URLSearchParams.prototype.get` method
 
-   // https://url.spec.whatwg.org/#dom-urlsearchparams-get
 
-   get: function get(name) {
 
-     var entries = getInternalParamsState(this).entries;
 
-     validateArgumentsLength(arguments.length, 1);
 
-     var key = $toString(name);
 
-     var index = 0;
 
-     for (; index < entries.length; index++) {
 
-       if (entries[index].key === key) return entries[index].value;
 
-     }
 
-     return null;
 
-   },
 
-   // `URLSearchParams.prototype.getAll` method
 
-   // https://url.spec.whatwg.org/#dom-urlsearchparams-getall
 
-   getAll: function getAll(name) {
 
-     var entries = getInternalParamsState(this).entries;
 
-     validateArgumentsLength(arguments.length, 1);
 
-     var key = $toString(name);
 
-     var result = [];
 
-     var index = 0;
 
-     for (; index < entries.length; index++) {
 
-       if (entries[index].key === key) push(result, entries[index].value);
 
-     }
 
-     return result;
 
-   },
 
-   // `URLSearchParams.prototype.has` method
 
-   // https://url.spec.whatwg.org/#dom-urlsearchparams-has
 
-   has: function has(name /* , value */) {
 
-     var entries = getInternalParamsState(this).entries;
 
-     var length = validateArgumentsLength(arguments.length, 1);
 
-     var key = $toString(name);
 
-     var $value = length < 2 ? undefined : arguments[1];
 
-     var value = $value === undefined ? $value : $toString($value);
 
-     var index = 0;
 
-     while (index < entries.length) {
 
-       var entry = entries[index++];
 
-       if (entry.key === key && (value === undefined || entry.value === value)) return true;
 
-     }
 
-     return false;
 
-   },
 
-   // `URLSearchParams.prototype.set` method
 
-   // https://url.spec.whatwg.org/#dom-urlsearchparams-set
 
-   set: function set(name, value) {
 
-     var state = getInternalParamsState(this);
 
-     validateArgumentsLength(arguments.length, 1);
 
-     var entries = state.entries;
 
-     var found = false;
 
-     var key = $toString(name);
 
-     var val = $toString(value);
 
-     var index = 0;
 
-     var entry;
 
-     for (; index < entries.length; index++) {
 
-       entry = entries[index];
 
-       if (entry.key === key) {
 
-         if (found) splice(entries, index--, 1);
 
-         else {
 
-           found = true;
 
-           entry.value = val;
 
-         }
 
-       }
 
-     }
 
-     if (!found) push(entries, { key: key, value: val });
 
-     if (!DESCRIPTORS) this.size = entries.length;
 
-     state.updateURL();
 
-   },
 
-   // `URLSearchParams.prototype.sort` method
 
-   // https://url.spec.whatwg.org/#dom-urlsearchparams-sort
 
-   sort: function sort() {
 
-     var state = getInternalParamsState(this);
 
-     arraySort(state.entries, function (a, b) {
 
-       return a.key > b.key ? 1 : -1;
 
-     });
 
-     state.updateURL();
 
-   },
 
-   // `URLSearchParams.prototype.forEach` method
 
-   forEach: function forEach(callback /* , thisArg */) {
 
-     var entries = getInternalParamsState(this).entries;
 
-     var boundFunction = bind(callback, arguments.length > 1 ? arguments[1] : undefined);
 
-     var index = 0;
 
-     var entry;
 
-     while (index < entries.length) {
 
-       entry = entries[index++];
 
-       boundFunction(entry.value, entry.key, this);
 
-     }
 
-   },
 
-   // `URLSearchParams.prototype.keys` method
 
-   keys: function keys() {
 
-     return new URLSearchParamsIterator(this, 'keys');
 
-   },
 
-   // `URLSearchParams.prototype.values` method
 
-   values: function values() {
 
-     return new URLSearchParamsIterator(this, 'values');
 
-   },
 
-   // `URLSearchParams.prototype.entries` method
 
-   entries: function entries() {
 
-     return new URLSearchParamsIterator(this, 'entries');
 
-   }
 
- }, { enumerable: true });
 
- // `URLSearchParams.prototype[@@iterator]` method
 
- defineBuiltIn(URLSearchParamsPrototype, ITERATOR, URLSearchParamsPrototype.entries, { name: 'entries' });
 
- // `URLSearchParams.prototype.toString` method
 
- // https://url.spec.whatwg.org/#urlsearchparams-stringification-behavior
 
- defineBuiltIn(URLSearchParamsPrototype, 'toString', function toString() {
 
-   return getInternalParamsState(this).serialize();
 
- }, { enumerable: true });
 
- // `URLSearchParams.prototype.size` getter
 
- // https://github.com/whatwg/url/pull/734
 
- if (DESCRIPTORS) defineBuiltInAccessor(URLSearchParamsPrototype, 'size', {
 
-   get: function size() {
 
-     return getInternalParamsState(this).entries.length;
 
-   },
 
-   configurable: true,
 
-   enumerable: true
 
- });
 
- setToStringTag(URLSearchParamsConstructor, URL_SEARCH_PARAMS);
 
- $({ global: true, constructor: true, forced: !USE_NATIVE_URL }, {
 
-   URLSearchParams: URLSearchParamsConstructor
 
- });
 
- // Wrap `fetch` and `Request` for correct work with polyfilled `URLSearchParams`
 
- if (!USE_NATIVE_URL && isCallable(Headers)) {
 
-   var headersHas = uncurryThis(HeadersPrototype.has);
 
-   var headersSet = uncurryThis(HeadersPrototype.set);
 
-   var wrapRequestOptions = function (init) {
 
-     if (isObject(init)) {
 
-       var body = init.body;
 
-       var headers;
 
-       if (classof(body) === URL_SEARCH_PARAMS) {
 
-         headers = init.headers ? new Headers(init.headers) : new Headers();
 
-         if (!headersHas(headers, 'content-type')) {
 
-           headersSet(headers, 'content-type', 'application/x-www-form-urlencoded;charset=UTF-8');
 
-         }
 
-         return create(init, {
 
-           body: createPropertyDescriptor(0, $toString(body)),
 
-           headers: createPropertyDescriptor(0, headers)
 
-         });
 
-       }
 
-     } return init;
 
-   };
 
-   if (isCallable(nativeFetch)) {
 
-     $({ global: true, enumerable: true, dontCallGetSet: true, forced: true }, {
 
-       fetch: function fetch(input /* , init */) {
 
-         return nativeFetch(input, arguments.length > 1 ? wrapRequestOptions(arguments[1]) : {});
 
-       }
 
-     });
 
-   }
 
-   if (isCallable(NativeRequest)) {
 
-     var RequestConstructor = function Request(input /* , init */) {
 
-       anInstance(this, RequestPrototype);
 
-       return new NativeRequest(input, arguments.length > 1 ? wrapRequestOptions(arguments[1]) : {});
 
-     };
 
-     RequestPrototype.constructor = RequestConstructor;
 
-     RequestConstructor.prototype = RequestPrototype;
 
-     $({ global: true, constructor: true, dontCallGetSet: true, forced: true }, {
 
-       Request: RequestConstructor
 
-     });
 
-   }
 
- }
 
- module.exports = {
 
-   URLSearchParams: URLSearchParamsConstructor,
 
-   getState: getInternalParamsState
 
- };
 
 
  |