core-js 3.49.0 → 3.51.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (119) hide show
  1. package/actual/iterator/chunks.js +5 -0
  2. package/actual/iterator/concat.js +4 -0
  3. package/actual/iterator/from.js +4 -0
  4. package/actual/iterator/includes.js +5 -0
  5. package/actual/iterator/index.js +4 -1
  6. package/actual/iterator/join.js +5 -0
  7. package/actual/iterator/windows.js +5 -0
  8. package/actual/iterator/zip-keyed.js +6 -21
  9. package/actual/iterator/zip.js +6 -19
  10. package/actual/promise/all-keyed.js +16 -0
  11. package/actual/promise/all-settled-keyed.js +16 -0
  12. package/actual/promise/index.js +4 -0
  13. package/es/index.js +6 -0
  14. package/es/iterator/chunks.js +8 -0
  15. package/es/iterator/concat.js +4 -0
  16. package/es/iterator/from.js +4 -0
  17. package/es/iterator/includes.js +8 -0
  18. package/es/iterator/index.js +8 -0
  19. package/es/iterator/join.js +8 -0
  20. package/es/iterator/windows.js +8 -0
  21. package/es/iterator/zip-keyed.js +28 -0
  22. package/es/iterator/zip.js +26 -0
  23. package/features/iterator/includes.js +2 -0
  24. package/features/iterator/join.js +2 -0
  25. package/features/promise/all-keyed.js +2 -0
  26. package/features/promise/all-settled-keyed.js +2 -0
  27. package/full/index.js +10 -0
  28. package/full/iterator/chunks.js +2 -6
  29. package/full/iterator/concat.js +0 -2
  30. package/full/iterator/from.js +0 -2
  31. package/full/iterator/includes.js +4 -0
  32. package/full/iterator/index.js +0 -2
  33. package/full/iterator/join.js +4 -0
  34. package/full/iterator/range.js +7 -1
  35. package/full/iterator/windows.js +2 -6
  36. package/full/iterator/zip-keyed.js +0 -2
  37. package/full/iterator/zip.js +0 -2
  38. package/full/promise/all-keyed.js +4 -0
  39. package/full/promise/all-settled-keyed.js +4 -0
  40. package/internals/add-disposable-resource.js +1 -1
  41. package/internals/array-fill.js +2 -1
  42. package/internals/array-from-async.js +2 -2
  43. package/internals/array-from.js +8 -2
  44. package/internals/async-iterator-create-proxy.js +14 -2
  45. package/internals/error-stack-clear.js +1 -1
  46. package/internals/get-async-iterator-flattenable.js +1 -1
  47. package/internals/get-async-iterator.js +1 -1
  48. package/internals/get-internal-iterator.js +1 -0
  49. package/internals/get-iterator-flattenable.js +1 -1
  50. package/internals/get-iterator-internal.js +14 -0
  51. package/internals/get-iterator-method-internal.js +14 -0
  52. package/internals/get-iterator-method.js +4 -7
  53. package/internals/get-iterator-record.js +1 -1
  54. package/internals/get-iterator.js +4 -5
  55. package/internals/is-iterable.js +4 -10
  56. package/internals/iterate.js +2 -2
  57. package/internals/iterator-chunk-size-validation.js +17 -0
  58. package/internals/iterator-cleanup-state.js +6 -0
  59. package/internals/iterator-create-proxy.js +10 -4
  60. package/internals/iterator-window.js +2 -4
  61. package/internals/iterators.js +1 -1
  62. package/internals/math-log1p.js +3 -1
  63. package/internals/shared-store.js +2 -2
  64. package/internals/shared.js +3 -1
  65. package/internals/typed-array-from.js +2 -2
  66. package/internals/uint8-from-base64.js +4 -2
  67. package/internals/uint8-from-hex.js +1 -1
  68. package/internals/url-percent-coding.js +171 -0
  69. package/modules/es.date.to-json.js +1 -1
  70. package/modules/es.escape.js +10 -8
  71. package/modules/es.iterator.chunks.js +42 -0
  72. package/modules/es.iterator.concat.js +1 -1
  73. package/modules/es.iterator.drop.js +16 -1
  74. package/modules/es.iterator.flat-map.js +12 -14
  75. package/modules/es.iterator.includes.js +44 -0
  76. package/modules/es.iterator.join.js +31 -0
  77. package/modules/es.iterator.take.js +16 -1
  78. package/modules/es.iterator.windows.js +12 -0
  79. package/modules/es.iterator.zip-keyed.js +70 -0
  80. package/modules/es.iterator.zip.js +92 -0
  81. package/modules/es.json.parse.js +1 -1
  82. package/modules/es.json.stringify.js +150 -34
  83. package/modules/es.map.group-by.js +2 -0
  84. package/modules/es.math.asinh.js +7 -3
  85. package/modules/es.math.cbrt.js +9 -2
  86. package/modules/es.math.sum-precise.js +27 -1
  87. package/modules/es.object.group-by.js +2 -0
  88. package/modules/es.object.proto.js +2 -1
  89. package/modules/es.promise.try.js +16 -8
  90. package/modules/es.regexp.escape.js +2 -1
  91. package/modules/es.string.match-all.js +3 -4
  92. package/modules/es.string.match.js +3 -1
  93. package/modules/es.string.search.js +3 -1
  94. package/modules/es.uint8-array.to-base64.js +22 -5
  95. package/modules/esnext.iterator.chunks.js +2 -43
  96. package/modules/esnext.iterator.includes.js +3 -0
  97. package/modules/esnext.iterator.join.js +3 -0
  98. package/modules/esnext.iterator.windows.js +2 -10
  99. package/modules/esnext.iterator.zip-keyed.js +2 -71
  100. package/modules/esnext.iterator.zip.js +2 -91
  101. package/modules/esnext.observable.from.js +2 -2
  102. package/modules/esnext.promise.all-keyed.js +57 -0
  103. package/modules/esnext.promise.all-settled-keyed.js +62 -0
  104. package/modules/web.url-search-params.constructor.js +11 -143
  105. package/modules/web.url.constructor.js +103 -17
  106. package/modules/web.url.to-json.js +4 -1
  107. package/package.json +4 -1
  108. package/proposals/await-dictionary.js +4 -0
  109. package/proposals/iterator-includes.js +3 -0
  110. package/proposals/iterator-join.js +3 -0
  111. package/stable/index.js +6 -0
  112. package/stable/iterator/chunks.js +4 -0
  113. package/stable/iterator/includes.js +4 -0
  114. package/stable/iterator/join.js +4 -0
  115. package/stable/iterator/windows.js +4 -0
  116. package/stable/iterator/zip-keyed.js +5 -0
  117. package/stable/iterator/zip.js +5 -0
  118. package/stage/3.js +1 -0
  119. package/stage/4.js +3 -0
@@ -1,72 +1,3 @@
1
1
  'use strict';
2
- var $ = require('../internals/export');
3
- var anObject = require('../internals/an-object');
4
- var anObjectOrUndefined = require('../internals/an-object-or-undefined');
5
- var createProperty = require('../internals/create-property');
6
- var call = require('../internals/function-call');
7
- var uncurryThis = require('../internals/function-uncurry-this');
8
- var getBuiltIn = require('../internals/get-built-in');
9
- var propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');
10
- var getIteratorFlattenable = require('../internals/get-iterator-flattenable');
11
- var getModeOption = require('../internals/get-mode-option');
12
- var iteratorCloseAll = require('../internals/iterator-close-all');
13
- var iteratorZip = require('../internals/iterator-zip');
14
- var IS_PURE = require('../internals/is-pure');
15
-
16
- var create = getBuiltIn('Object', 'create');
17
- var ownKeys = getBuiltIn('Reflect', 'ownKeys');
18
- var push = uncurryThis([].push);
19
- var THROW = 'throw';
20
-
21
- // `Iterator.zipKeyed` method
22
- // https://github.com/tc39/proposal-joint-iteration
23
- $({ target: 'Iterator', stat: true, forced: IS_PURE }, {
24
- zipKeyed: function zipKeyed(iterables /* , options */) {
25
- anObject(iterables);
26
- var options = arguments.length > 1 ? anObjectOrUndefined(arguments[1]) : undefined;
27
- var mode = getModeOption(options);
28
- var paddingOption = mode === 'longest' ? anObjectOrUndefined(options && options.padding) : undefined;
29
-
30
- var iters = [];
31
- var padding = [];
32
- var allKeys = ownKeys(iterables);
33
- var keys = [];
34
- var propertyIsEnumerable = propertyIsEnumerableModule.f;
35
- var i, key, value;
36
- for (i = 0; i < allKeys.length; i++) try {
37
- key = allKeys[i];
38
- if (!call(propertyIsEnumerable, iterables, key)) continue;
39
- value = iterables[key];
40
- if (value !== undefined) {
41
- push(keys, key);
42
- push(iters, getIteratorFlattenable(value, false));
43
- }
44
- } catch (error) {
45
- return iteratorCloseAll(iters, THROW, error);
46
- }
47
-
48
- var iterCount = iters.length;
49
- if (mode === 'longest') {
50
- if (paddingOption === undefined) {
51
- for (i = 0; i < iterCount; i++) push(padding, undefined);
52
- } else {
53
- for (i = 0; i < keys.length; i++) {
54
- try {
55
- value = paddingOption[keys[i]];
56
- } catch (error) {
57
- return iteratorCloseAll(iters, THROW, error);
58
- }
59
- push(padding, value);
60
- }
61
- }
62
- }
63
-
64
- return iteratorZip(iters, mode, padding, function (results) {
65
- var obj = create(null);
66
- for (var j = 0; j < iterCount; j++) {
67
- createProperty(obj, keys[j], results[j]);
68
- }
69
- return obj;
70
- });
71
- }
72
- });
2
+ // TODO: Remove from `core-js@4`
3
+ require('../modules/es.iterator.zip-keyed');
@@ -1,92 +1,3 @@
1
1
  'use strict';
2
- var $ = require('../internals/export');
3
- var anObject = require('../internals/an-object');
4
- var anObjectOrUndefined = require('../internals/an-object-or-undefined');
5
- var call = require('../internals/function-call');
6
- var uncurryThis = require('../internals/function-uncurry-this');
7
- var getIteratorRecord = require('../internals/get-iterator-record');
8
- var getIteratorFlattenable = require('../internals/get-iterator-flattenable');
9
- var getModeOption = require('../internals/get-mode-option');
10
- var iteratorClose = require('../internals/iterator-close');
11
- var iteratorCloseAll = require('../internals/iterator-close-all');
12
- var iteratorZip = require('../internals/iterator-zip');
13
- var IS_PURE = require('../internals/is-pure');
14
-
15
- var concat = uncurryThis([].concat);
16
- var push = uncurryThis([].push);
17
- var THROW = 'throw';
18
-
19
- // `Iterator.zip` method
20
- // https://github.com/tc39/proposal-joint-iteration
21
- $({ target: 'Iterator', stat: true, forced: IS_PURE }, {
22
- zip: function zip(iterables /* , options */) {
23
- anObject(iterables);
24
- var options = arguments.length > 1 ? anObjectOrUndefined(arguments[1]) : undefined;
25
- var mode = getModeOption(options);
26
- var paddingOption = mode === 'longest' ? anObjectOrUndefined(options && options.padding) : undefined;
27
-
28
- var iters = [];
29
- var padding = [];
30
- var inputIter = getIteratorRecord(iterables);
31
- var iter, done, next;
32
- while (!done) {
33
- try {
34
- next = anObject(call(inputIter.next, inputIter.iterator));
35
- done = next.done;
36
- } catch (error) {
37
- return iteratorCloseAll(iters, THROW, error);
38
- }
39
- if (!done) {
40
- try {
41
- iter = getIteratorFlattenable(next.value, false);
42
- } catch (error) {
43
- return iteratorCloseAll(concat([inputIter], iters), THROW, error);
44
- }
45
- push(iters, iter);
46
- }
47
- }
48
-
49
- var iterCount = iters.length;
50
- var i, paddingDone, paddingIter;
51
- if (mode === 'longest') {
52
- if (paddingOption === undefined) {
53
- for (i = 0; i < iterCount; i++) push(padding, undefined);
54
- } else {
55
- try {
56
- paddingIter = getIteratorRecord(paddingOption);
57
- } catch (error) {
58
- return iteratorCloseAll(iters, THROW, error);
59
- }
60
- var usingIterator = true;
61
- for (i = 0; i < iterCount; i++) {
62
- if (usingIterator) {
63
- try {
64
- next = anObject(call(paddingIter.next, paddingIter.iterator));
65
- paddingDone = next.done;
66
- next = next.value;
67
- } catch (error) {
68
- return iteratorCloseAll(iters, THROW, error);
69
- }
70
- if (paddingDone) {
71
- usingIterator = false;
72
- } else {
73
- push(padding, next);
74
- }
75
- } else {
76
- push(padding, undefined);
77
- }
78
- }
79
-
80
- if (usingIterator) {
81
- try {
82
- iteratorClose(paddingIter.iterator, 'normal');
83
- } catch (error) {
84
- return iteratorCloseAll(iters, THROW, error);
85
- }
86
- }
87
- }
88
- }
89
-
90
- return iteratorZip(iters, mode, padding);
91
- }
92
- });
2
+ // TODO: Remove from `core-js@4`
3
+ require('../modules/es.iterator.zip');
@@ -4,8 +4,8 @@ var getBuiltIn = require('../internals/get-built-in');
4
4
  var call = require('../internals/function-call');
5
5
  var anObject = require('../internals/an-object');
6
6
  var isConstructor = require('../internals/is-constructor');
7
- var getIterator = require('../internals/get-iterator');
8
- var getIteratorMethod = require('../internals/get-iterator-method');
7
+ var getIterator = require('../internals/get-iterator-internal');
8
+ var getIteratorMethod = require('../internals/get-iterator-method-internal');
9
9
  var getMethod = require('../internals/get-method');
10
10
  var iterate = require('../internals/iterate');
11
11
  var wellKnownSymbol = require('../internals/well-known-symbol');
@@ -0,0 +1,57 @@
1
+ 'use strict';
2
+ var $ = require('../internals/export');
3
+ var aCallable = require('../internals/a-callable');
4
+ var anObject = require('../internals/an-object');
5
+ var call = require('../internals/function-call');
6
+ var createProperty = require('../internals/create-property');
7
+ var getBuiltIn = require('../internals/get-built-in');
8
+ var getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor');
9
+ var newPromiseCapabilityModule = require('../internals/new-promise-capability');
10
+ var perform = require('../internals/perform');
11
+
12
+ var create = getBuiltIn('Object', 'create');
13
+ var ownKeys = getBuiltIn('Reflect', 'ownKeys');
14
+
15
+ // `Promise.allKeyed` method
16
+ // https://github.com/tc39/proposal-await-dictionary
17
+ $({ target: 'Promise', stat: true }, {
18
+ allKeyed: function allKeyed(promises) {
19
+ var C = this;
20
+ var capability = newPromiseCapabilityModule.f(C);
21
+ var resolve = capability.resolve;
22
+ var reject = capability.reject;
23
+ var result = perform(function () {
24
+ var promiseResolve = aCallable(C.resolve);
25
+ var allKeys = ownKeys(anObject(promises));
26
+ var keys = [];
27
+ var values = [];
28
+ var remaining = 1;
29
+ var counter = 0;
30
+ var resolveResult = function () {
31
+ var res = create(null);
32
+ for (var j = 0; j < keys.length; j++) createProperty(res, keys[j], values[j]);
33
+ resolve(res);
34
+ };
35
+ for (var i = 0; i < allKeys.length; i++) (function (key) {
36
+ var desc = getOwnPropertyDescriptor.f(promises, key);
37
+ if (desc && desc.enumerable) {
38
+ var index = counter;
39
+ var alreadyCalled = false;
40
+ remaining++;
41
+ keys[index] = key;
42
+ values[index] = undefined;
43
+ call(promiseResolve, C, promises[key]).then(function (value) {
44
+ if (alreadyCalled) return;
45
+ alreadyCalled = true;
46
+ values[index] = value;
47
+ --remaining || resolveResult();
48
+ }, reject);
49
+ counter++;
50
+ }
51
+ })(allKeys[i]);
52
+ --remaining || resolveResult();
53
+ });
54
+ if (result.error) reject(result.value);
55
+ return capability.promise;
56
+ }
57
+ });
@@ -0,0 +1,62 @@
1
+ 'use strict';
2
+ var $ = require('../internals/export');
3
+ var aCallable = require('../internals/a-callable');
4
+ var anObject = require('../internals/an-object');
5
+ var call = require('../internals/function-call');
6
+ var createProperty = require('../internals/create-property');
7
+ var getBuiltIn = require('../internals/get-built-in');
8
+ var getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor');
9
+ var newPromiseCapabilityModule = require('../internals/new-promise-capability');
10
+ var perform = require('../internals/perform');
11
+
12
+ var create = getBuiltIn('Object', 'create');
13
+ var ownKeys = getBuiltIn('Reflect', 'ownKeys');
14
+
15
+ // `Promise.allSettledKeyed` method
16
+ // https://github.com/tc39/proposal-await-dictionary
17
+ $({ target: 'Promise', stat: true }, {
18
+ allSettledKeyed: function allSettledKeyed(promises) {
19
+ var C = this;
20
+ var capability = newPromiseCapabilityModule.f(C);
21
+ var resolve = capability.resolve;
22
+ var reject = capability.reject;
23
+ var result = perform(function () {
24
+ var promiseResolve = aCallable(C.resolve);
25
+ var allKeys = ownKeys(anObject(promises));
26
+ var keys = [];
27
+ var values = [];
28
+ var remaining = 1;
29
+ var counter = 0;
30
+ var resolveResult = function () {
31
+ var res = create(null);
32
+ for (var j = 0; j < keys.length; j++) createProperty(res, keys[j], values[j]);
33
+ resolve(res);
34
+ };
35
+ for (var i = 0; i < allKeys.length; i++) (function (key) {
36
+ var desc = getOwnPropertyDescriptor.f(promises, key);
37
+ if (desc && desc.enumerable) {
38
+ var createElementResolver = function (rejection) {
39
+ return function (value) {
40
+ if (alreadyCalled) return;
41
+ alreadyCalled = true;
42
+ values[index] = rejection
43
+ ? { status: 'rejected', reason: value }
44
+ : { status: 'fulfilled', value: value };
45
+ --remaining || resolveResult();
46
+ };
47
+ };
48
+ var index = counter;
49
+ var alreadyCalled = false;
50
+ remaining++;
51
+ keys[index] = key;
52
+ values[index] = undefined;
53
+ call(promiseResolve, C, promises[key]).then(createElementResolver(false), createElementResolver(true));
54
+ counter++;
55
+ }
56
+ })(allKeys[i]);
57
+ --remaining || resolveResult();
58
+ });
59
+ if (result.error) reject(result.value);
60
+ return capability.promise;
61
+ }
62
+ });
@@ -1,15 +1,14 @@
1
1
  'use strict';
2
2
  // TODO: in core-js@4, move /modules/ dependencies to public entries for better optimization by tools like `preset-env`
3
3
  require('../modules/es.array.iterator');
4
- require('../modules/es.string.from-code-point');
5
4
  var $ = require('../internals/export');
6
5
  var globalThis = require('../internals/global-this');
7
6
  var safeGetBuiltIn = require('../internals/safe-get-built-in');
8
- var getBuiltIn = require('../internals/get-built-in');
9
7
  var call = require('../internals/function-call');
10
8
  var uncurryThis = require('../internals/function-uncurry-this');
11
9
  var DESCRIPTORS = require('../internals/descriptors');
12
10
  var USE_NATIVE_URL = require('../internals/url-constructor-detection');
11
+ var percentCoding = require('../internals/url-percent-coding');
13
12
  var defineBuiltIn = require('../internals/define-built-in');
14
13
  var defineBuiltInAccessor = require('../internals/define-built-in-accessor');
15
14
  var defineBuiltIns = require('../internals/define-built-ins');
@@ -26,8 +25,8 @@ var isObject = require('../internals/is-object');
26
25
  var $toString = require('../internals/to-string');
27
26
  var create = require('../internals/object-create');
28
27
  var createPropertyDescriptor = require('../internals/create-property-descriptor');
29
- var getIterator = require('../internals/get-iterator');
30
- var getIteratorMethod = require('../internals/get-iterator-method');
28
+ var getIterator = require('../internals/get-iterator-internal');
29
+ var getIteratorMethod = require('../internals/get-iterator-method-internal');
31
30
  var createIterResultObject = require('../internals/create-iter-result-object');
32
31
  var validateArgumentsLength = require('../internals/validate-arguments-length');
33
32
  var wellKnownSymbol = require('../internals/well-known-symbol');
@@ -39,6 +38,8 @@ var URL_SEARCH_PARAMS_ITERATOR = URL_SEARCH_PARAMS + 'Iterator';
39
38
  var setInternalState = InternalStateModule.set;
40
39
  var getInternalParamsState = InternalStateModule.getterFor(URL_SEARCH_PARAMS);
41
40
  var getInternalIteratorState = InternalStateModule.getterFor(URL_SEARCH_PARAMS_ITERATOR);
41
+ var percentDecode = percentCoding.decode;
42
+ var percentEncode = percentCoding.encode;
42
43
 
43
44
  var nativeFetch = safeGetBuiltIn('fetch');
44
45
  var NativeRequest = safeGetBuiltIn('Request');
@@ -46,10 +47,6 @@ var Headers = safeGetBuiltIn('Headers');
46
47
  var RequestPrototype = NativeRequest && NativeRequest.prototype;
47
48
  var HeadersPrototype = Headers && Headers.prototype;
48
49
  var TypeError = globalThis.TypeError;
49
- var encodeURIComponent = globalThis.encodeURIComponent;
50
- var fromCharCode = String.fromCharCode;
51
- var fromCodePoint = getBuiltIn('String', 'fromCodePoint');
52
- var $parseInt = parseInt;
53
50
  var charAt = uncurryThis(''.charAt);
54
51
  var join = uncurryThis([].join);
55
52
  var push = uncurryThis([].push);
@@ -58,142 +55,13 @@ var shift = uncurryThis([].shift);
58
55
  var splice = uncurryThis([].splice);
59
56
  var split = uncurryThis(''.split);
60
57
  var stringSlice = uncurryThis(''.slice);
61
- var exec = uncurryThis(/./.exec);
62
58
 
63
59
  var plus = /\+/g;
64
- var FALLBACK_REPLACER = '\uFFFD';
65
- var VALID_HEX = /^[0-9a-f]+$/i;
66
60
 
67
- var parseHexOctet = function (string, start) {
68
- var substr = stringSlice(string, start, start + 2);
69
- if (!exec(VALID_HEX, substr)) return NaN;
70
-
71
- return $parseInt(substr, 16);
72
- };
73
-
74
- var getLeadingOnes = function (octet) {
75
- var count = 0;
76
- for (var mask = 0x80; mask > 0 && (octet & mask) !== 0; mask >>= 1) {
77
- count++;
78
- }
79
- return count;
80
- };
81
-
82
- var utf8Decode = function (octets) {
83
- var codePoint = null;
84
- var length = octets.length;
85
-
86
- switch (length) {
87
- case 1:
88
- codePoint = octets[0];
89
- break;
90
- case 2:
91
- codePoint = (octets[0] & 0x1F) << 6 | (octets[1] & 0x3F);
92
- break;
93
- case 3:
94
- codePoint = (octets[0] & 0x0F) << 12 | (octets[1] & 0x3F) << 6 | (octets[2] & 0x3F);
95
- break;
96
- case 4:
97
- codePoint = (octets[0] & 0x07) << 18 | (octets[1] & 0x3F) << 12 | (octets[2] & 0x3F) << 6 | (octets[3] & 0x3F);
98
- break;
99
- }
100
-
101
- // reject surrogates, overlong encodings, and out-of-range codepoints
102
- if (codePoint === null
103
- || codePoint > 0x10FFFF
104
- || (codePoint >= 0xD800 && codePoint <= 0xDFFF)
105
- || codePoint < (length > 3 ? 0x10000 : length > 2 ? 0x800 : length > 1 ? 0x80 : 0)
106
- ) return null;
107
-
108
- return codePoint;
109
- };
110
-
111
- /* eslint-disable max-statements, max-depth -- ok */
112
- var decode = function (input) {
113
- input = replace(input, plus, ' ');
114
- var length = input.length;
115
- var result = '';
116
- var i = 0;
117
-
118
- while (i < length) {
119
- var decodedChar = charAt(input, i);
120
-
121
- if (decodedChar === '%') {
122
- if (charAt(input, i + 1) === '%' || i + 3 > length) {
123
- result += '%';
124
- i++;
125
- continue;
126
- }
127
-
128
- var octet = parseHexOctet(input, i + 1);
129
-
130
- // eslint-disable-next-line no-self-compare -- NaN check
131
- if (octet !== octet) {
132
- result += decodedChar;
133
- i++;
134
- continue;
135
- }
136
-
137
- i += 2;
138
- var byteSequenceLength = getLeadingOnes(octet);
139
-
140
- if (byteSequenceLength === 0) {
141
- decodedChar = fromCharCode(octet);
142
- } else {
143
- if (byteSequenceLength === 1 || byteSequenceLength > 4) {
144
- result += FALLBACK_REPLACER;
145
- i++;
146
- continue;
147
- }
148
-
149
- var octets = [octet];
150
- var sequenceIndex = 1;
151
-
152
- while (sequenceIndex < byteSequenceLength) {
153
- i++;
154
- if (i + 3 > length || charAt(input, i) !== '%') break;
155
-
156
- var nextByte = parseHexOctet(input, i + 1);
157
-
158
- // eslint-disable-next-line no-self-compare -- NaN check
159
- if (nextByte !== nextByte || nextByte > 191 || nextByte < 128) break;
160
-
161
- // https://encoding.spec.whatwg.org/#utf-8-decoder - position-specific byte ranges
162
- if (sequenceIndex === 1) {
163
- if (octet === 0xE0 && nextByte < 0xA0) break;
164
- if (octet === 0xED && nextByte > 0x9F) break;
165
- if (octet === 0xF0 && nextByte < 0x90) break;
166
- if (octet === 0xF4 && nextByte > 0x8F) break;
167
- }
168
-
169
- push(octets, nextByte);
170
- i += 2;
171
- sequenceIndex++;
172
- }
173
-
174
- if (octets.length !== byteSequenceLength) {
175
- result += FALLBACK_REPLACER;
176
- continue;
177
- }
178
-
179
- var codePoint = utf8Decode(octets);
180
- if (codePoint === null) {
181
- for (var replacement = 0; replacement < byteSequenceLength; replacement++) result += FALLBACK_REPLACER;
182
- i++;
183
- continue;
184
- } else {
185
- decodedChar = fromCodePoint(codePoint);
186
- }
187
- }
188
- }
189
-
190
- result += decodedChar;
191
- i++;
192
- }
193
-
194
- return result;
61
+ // https://url.spec.whatwg.org/#urlencoded-parsing - `+` decodes to a space
62
+ var decodeQueryComponent = function (input) {
63
+ return percentDecode(replace(input, plus, ' '));
195
64
  };
196
- /* eslint-enable max-statements, max-depth -- ok */
197
65
 
198
66
  var find = /[!'()~]|%20/g;
199
67
 
@@ -211,7 +79,7 @@ var replacer = function (match) {
211
79
  };
212
80
 
213
81
  var serialize = function (it) {
214
- return replace(encodeURIComponent(it), find, replacer);
82
+ return replace(percentEncode(it), find, replacer);
215
83
  };
216
84
 
217
85
  var URLSearchParamsIterator = createIteratorConstructor(function Iterator(params, kind) {
@@ -285,8 +153,8 @@ URLSearchParamsState.prototype = {
285
153
  if (attribute.length) {
286
154
  entry = split(attribute, '=');
287
155
  push(entries, {
288
- key: decode(shift(entry)),
289
- value: decode(join(entry, '='))
156
+ key: decodeQueryComponent(shift(entry)),
157
+ value: decodeQueryComponent(join(entry, '='))
290
158
  });
291
159
  }
292
160
  }