core-js 3.49.0 → 3.50.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 (101) hide show
  1. package/actual/iterator/chunks.js +8 -0
  2. package/actual/iterator/concat.js +4 -0
  3. package/actual/iterator/from.js +4 -0
  4. package/actual/iterator/includes.js +8 -0
  5. package/actual/iterator/index.js +4 -1
  6. package/actual/iterator/join.js +8 -0
  7. package/actual/iterator/windows.js +8 -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 +2 -0
  14. package/es/iterator/index.js +4 -0
  15. package/es/iterator/zip-keyed.js +24 -0
  16. package/es/iterator/zip.js +22 -0
  17. package/features/iterator/includes.js +2 -0
  18. package/features/iterator/join.js +2 -0
  19. package/features/promise/all-keyed.js +2 -0
  20. package/features/promise/all-settled-keyed.js +2 -0
  21. package/full/index.js +6 -0
  22. package/full/iterator/chunks.js +2 -6
  23. package/full/iterator/concat.js +0 -2
  24. package/full/iterator/from.js +0 -2
  25. package/full/iterator/includes.js +4 -0
  26. package/full/iterator/index.js +0 -2
  27. package/full/iterator/join.js +4 -0
  28. package/full/iterator/range.js +3 -1
  29. package/full/iterator/windows.js +2 -6
  30. package/full/iterator/zip-keyed.js +0 -2
  31. package/full/iterator/zip.js +0 -2
  32. package/full/promise/all-keyed.js +4 -0
  33. package/full/promise/all-settled-keyed.js +4 -0
  34. package/internals/add-disposable-resource.js +1 -1
  35. package/internals/array-fill.js +2 -1
  36. package/internals/array-from-async.js +2 -2
  37. package/internals/array-from.js +8 -2
  38. package/internals/async-iterator-create-proxy.js +14 -2
  39. package/internals/error-stack-clear.js +1 -1
  40. package/internals/get-async-iterator-flattenable.js +1 -1
  41. package/internals/get-async-iterator.js +1 -1
  42. package/internals/get-internal-iterator.js +1 -0
  43. package/internals/get-iterator-flattenable.js +1 -1
  44. package/internals/get-iterator-internal.js +14 -0
  45. package/internals/get-iterator-method-internal.js +14 -0
  46. package/internals/get-iterator-method.js +4 -7
  47. package/internals/get-iterator-record.js +1 -1
  48. package/internals/get-iterator.js +4 -5
  49. package/internals/is-iterable.js +4 -10
  50. package/internals/iterate.js +2 -2
  51. package/internals/iterator-chunk-size-validation.js +17 -0
  52. package/internals/iterator-cleanup-state.js +6 -0
  53. package/internals/iterator-create-proxy.js +10 -4
  54. package/internals/iterator-window.js +2 -4
  55. package/internals/iterators.js +1 -1
  56. package/internals/math-log1p.js +3 -1
  57. package/internals/shared-store.js +2 -2
  58. package/internals/shared.js +3 -1
  59. package/internals/typed-array-from.js +2 -2
  60. package/internals/uint8-from-base64.js +4 -2
  61. package/internals/uint8-from-hex.js +1 -1
  62. package/internals/url-percent-coding.js +171 -0
  63. package/modules/es.date.to-json.js +1 -1
  64. package/modules/es.escape.js +10 -8
  65. package/modules/es.iterator.concat.js +1 -1
  66. package/modules/es.iterator.drop.js +16 -1
  67. package/modules/es.iterator.flat-map.js +12 -14
  68. package/modules/es.iterator.take.js +16 -1
  69. package/modules/es.iterator.zip-keyed.js +70 -0
  70. package/modules/es.iterator.zip.js +92 -0
  71. package/modules/es.json.parse.js +1 -1
  72. package/modules/es.json.stringify.js +150 -34
  73. package/modules/es.map.group-by.js +2 -0
  74. package/modules/es.math.asinh.js +3 -1
  75. package/modules/es.math.cbrt.js +3 -1
  76. package/modules/es.object.group-by.js +2 -0
  77. package/modules/es.object.proto.js +2 -1
  78. package/modules/es.promise.try.js +16 -8
  79. package/modules/es.string.match.js +3 -1
  80. package/modules/es.string.search.js +3 -1
  81. package/modules/es.uint8-array.to-base64.js +22 -5
  82. package/modules/esnext.iterator.chunks.js +6 -8
  83. package/modules/esnext.iterator.includes.js +44 -0
  84. package/modules/esnext.iterator.join.js +31 -0
  85. package/modules/esnext.iterator.windows.js +2 -1
  86. package/modules/esnext.iterator.zip-keyed.js +2 -71
  87. package/modules/esnext.iterator.zip.js +2 -91
  88. package/modules/esnext.observable.from.js +2 -2
  89. package/modules/esnext.promise.all-keyed.js +57 -0
  90. package/modules/esnext.promise.all-settled-keyed.js +60 -0
  91. package/modules/web.url-search-params.constructor.js +11 -143
  92. package/modules/web.url.constructor.js +103 -17
  93. package/modules/web.url.to-json.js +4 -1
  94. package/package.json +4 -1
  95. package/proposals/await-dictionary.js +4 -0
  96. package/proposals/iterator-includes.js +3 -0
  97. package/proposals/iterator-join.js +3 -0
  98. package/stable/index.js +2 -0
  99. package/stable/iterator/zip-keyed.js +5 -0
  100. package/stable/iterator/zip.js +5 -0
  101. package/stage/3.js +4 -0
@@ -1,14 +1,11 @@
1
1
  'use strict';
2
- var classof = require('../internals/classof');
3
- var getMethod = require('../internals/get-method');
4
- var isNullOrUndefined = require('../internals/is-null-or-undefined');
5
- var Iterators = require('../internals/iterators');
2
+ var classof = require('../internals/classof-raw');
6
3
  var wellKnownSymbol = require('../internals/well-known-symbol');
7
4
 
8
5
  var ITERATOR = wellKnownSymbol('iterator');
6
+ var ArrayPrototype = Array.prototype;
9
7
 
10
8
  module.exports = function (it) {
11
- if (!isNullOrUndefined(it)) return getMethod(it, ITERATOR)
12
- || getMethod(it, '@@iterator')
13
- || Iterators[classof(it)];
9
+ return it[ITERATOR] || it['@@iterator']
10
+ || (classof(it) === 'Arguments' ? ArrayPrototype[ITERATOR] : undefined);
14
11
  };
@@ -1,5 +1,5 @@
1
1
  'use strict';
2
- var getIterator = require('../internals/get-iterator');
2
+ var getIterator = require('../internals/get-iterator-internal');
3
3
  var getIteratorDirect = require('../internals/get-iterator-direct');
4
4
 
5
5
  module.exports = function (argument) {
@@ -1,14 +1,13 @@
1
1
  'use strict';
2
2
  var call = require('../internals/function-call');
3
- var aCallable = require('../internals/a-callable');
4
- var anObject = require('../internals/an-object');
3
+ var isCallable = require('../internals/is-callable');
5
4
  var tryToString = require('../internals/try-to-string');
6
5
  var getIteratorMethod = require('../internals/get-iterator-method');
7
6
 
8
7
  var $TypeError = TypeError;
9
8
 
10
- module.exports = function (argument, usingIterator) {
11
- var iteratorMethod = arguments.length < 2 ? getIteratorMethod(argument) : usingIterator;
12
- if (aCallable(iteratorMethod)) return anObject(call(iteratorMethod, argument));
9
+ module.exports = function (argument) {
10
+ var iteratorMethod = getIteratorMethod(argument);
11
+ if (isCallable(iteratorMethod)) return call(iteratorMethod, argument);
13
12
  throw new $TypeError(tryToString(argument) + ' is not iterable');
14
13
  };
@@ -1,17 +1,11 @@
1
1
  'use strict';
2
- var classof = require('../internals/classof');
3
- var hasOwn = require('../internals/has-own-property');
4
- var isNullOrUndefined = require('../internals/is-null-or-undefined');
2
+ var classof = require('../internals/classof-raw');
5
3
  var wellKnownSymbol = require('../internals/well-known-symbol');
6
- var Iterators = require('../internals/iterators');
7
4
 
8
5
  var ITERATOR = wellKnownSymbol('iterator');
9
- var $Object = Object;
10
6
 
11
7
  module.exports = function (it) {
12
- if (isNullOrUndefined(it)) return false;
13
- var O = $Object(it);
14
- return O[ITERATOR] !== undefined
15
- || '@@iterator' in O
16
- || hasOwn(Iterators, classof(O));
8
+ return it[ITERATOR] !== undefined
9
+ || it['@@iterator'] !== undefined
10
+ || classof(it) === 'Arguments';
17
11
  };
@@ -6,8 +6,8 @@ var tryToString = require('../internals/try-to-string');
6
6
  var isArrayIteratorMethod = require('../internals/is-array-iterator-method');
7
7
  var lengthOfArrayLike = require('../internals/length-of-array-like');
8
8
  var isPrototypeOf = require('../internals/object-is-prototype-of');
9
- var getIterator = require('../internals/get-iterator');
10
- var getIteratorMethod = require('../internals/get-iterator-method');
9
+ var getIterator = require('../internals/get-iterator-internal');
10
+ var getIteratorMethod = require('../internals/get-iterator-method-internal');
11
11
  var iteratorClose = require('../internals/iterator-close');
12
12
 
13
13
  var $TypeError = TypeError;
@@ -0,0 +1,17 @@
1
+ 'use strict';
2
+ var isIntegralNumber = require('../internals/is-integral-number');
3
+ var iteratorClose = require('../internals/iterator-close');
4
+
5
+ var $RangeError = RangeError;
6
+ var $TypeError = TypeError;
7
+
8
+ var CHUNK_SIZE_VALIDATION_ERROR = 'Chunk size must be an integer in [1, 2^32-1]';
9
+
10
+ module.exports = function (chunkSize, iterator) {
11
+ if (typeof chunkSize != 'number' || !isIntegralNumber(chunkSize)) {
12
+ return iteratorClose(iterator, 'throw', new $TypeError(CHUNK_SIZE_VALIDATION_ERROR));
13
+ }
14
+ if (chunkSize === 0 || chunkSize >>> 0 !== chunkSize) {
15
+ return iteratorClose(iterator, 'throw', new $RangeError(CHUNK_SIZE_VALIDATION_ERROR));
16
+ }
17
+ };
@@ -0,0 +1,6 @@
1
+ 'use strict';
2
+ // release references held by exhausted / closed iterator helpers to allow GC of the source chain
3
+ module.exports = function (state) {
4
+ state.iterator = state.next = state.nextHandler = state.mapper = state.predicate = state.inner =
5
+ state.iterables = state.iters = state.openIters = state.padding = state.finishResults = state.buffer = null;
6
+ };
@@ -10,6 +10,7 @@ var IteratorPrototype = require('../internals/iterators-core').IteratorPrototype
10
10
  var createIterResultObject = require('../internals/create-iter-result-object');
11
11
  var iteratorClose = require('../internals/iterator-close');
12
12
  var iteratorCloseAll = require('../internals/iterator-close-all');
13
+ var cleanupState = require('../internals/iterator-cleanup-state');
13
14
 
14
15
  var TO_STRING_TAG = wellKnownSymbol('toStringTag');
15
16
  var ITERATOR_HELPER = 'IteratorHelper';
@@ -31,29 +32,34 @@ var createIteratorProxyPrototype = function (IS_ITERATOR) {
31
32
  if (state.done) return createIterResultObject(undefined, true);
32
33
  try {
33
34
  var result = state.nextHandler();
35
+ if (state.done) cleanupState(state);
34
36
  return state.returnHandlerResult ? result : createIterResultObject(result, state.done);
35
37
  } catch (error) {
36
38
  state.done = true;
39
+ cleanupState(state);
37
40
  throw error;
38
41
  }
39
42
  },
40
43
  'return': function () {
41
44
  var state = getInternalState(this);
42
45
  var iterator = state.iterator;
46
+ var inner = state.inner;
47
+ var openIters = state.openIters;
43
48
  var done = state.done;
44
49
  state.done = true;
45
50
  if (IS_ITERATOR) {
46
51
  var returnMethod = getMethod(iterator, 'return');
47
52
  return returnMethod ? call(returnMethod, iterator) : createIterResultObject(undefined, true);
48
53
  }
54
+ cleanupState(state);
49
55
  if (done) return createIterResultObject(undefined, true);
50
- if (state.inner) try {
51
- iteratorClose(state.inner.iterator, NORMAL);
56
+ if (inner) try {
57
+ iteratorClose(inner.iterator, NORMAL);
52
58
  } catch (error) {
53
59
  return iteratorClose(iterator, THROW, error);
54
60
  }
55
- if (state.openIters) try {
56
- iteratorCloseAll(state.openIters, NORMAL);
61
+ if (openIters) try {
62
+ iteratorCloseAll(openIters, NORMAL);
57
63
  } catch (error) {
58
64
  if (iterator) return iteratorClose(iterator, THROW, error);
59
65
  throw error;
@@ -5,9 +5,9 @@ var createIteratorProxy = require('../internals/iterator-create-proxy');
5
5
  var createIterResultObject = require('../internals/create-iter-result-object');
6
6
  var getIteratorDirect = require('../internals/get-iterator-direct');
7
7
  var iteratorClose = require('../internals/iterator-close');
8
+ var chunkSizeValidation = require('../internals/iterator-chunk-size-validation');
8
9
  var uncurryThis = require('../internals/function-uncurry-this');
9
10
 
10
- var $RangeError = RangeError;
11
11
  var $TypeError = TypeError;
12
12
  var push = uncurryThis([].push);
13
13
  var slice = uncurryThis([].slice);
@@ -36,9 +36,7 @@ var IteratorProxy = createIteratorProxy(function () {
36
36
  // https://github.com/tc39/proposal-iterator-chunking
37
37
  module.exports = function (O, windowSize, undersized) {
38
38
  anObject(O);
39
- if (typeof windowSize != 'number' || !windowSize || windowSize >>> 0 !== windowSize) {
40
- return iteratorClose(O, 'throw', new $RangeError('`windowSize` must be integer in [1, 2^32-1]'));
41
- }
39
+ chunkSizeValidation(windowSize, O);
42
40
  if (undersized !== undefined && undersized !== 'only-full' && undersized !== ALLOW_PARTIAL) {
43
41
  return iteratorClose(O, 'throw', new $TypeError('Incorrect `undersized` argument'));
44
42
  }
@@ -1,2 +1,2 @@
1
1
  'use strict';
2
- module.exports = {};
2
+ module.exports = Object.create ? Object.create(null) : {};
@@ -6,5 +6,7 @@ var log = Math.log;
6
6
  // eslint-disable-next-line es/no-math-log1p -- safe
7
7
  module.exports = Math.log1p || function log1p(x) {
8
8
  var n = +x;
9
- return n > -1e-8 && n < 1e-8 ? n - n * n / 2 : log(1 + n);
9
+ if (n > -1e-8 && n < 1e-8) return n - n * n / 2;
10
+ var u = 1 + n;
11
+ return u === 1 ? n : n === u - 1 ? log(u) : n * log(u) / (u - 1);
10
12
  };
@@ -7,9 +7,9 @@ var SHARED = '__core-js_shared__';
7
7
  var store = module.exports = globalThis[SHARED] || defineGlobalProperty(SHARED, {});
8
8
 
9
9
  (store.versions || (store.versions = [])).push({
10
- version: '3.49.0',
10
+ version: '3.50.0',
11
11
  mode: IS_PURE ? 'pure' : 'global',
12
12
  copyright: '© 2013–2025 Denis Pushkarev (zloirock.ru), 2025–2026 CoreJS Company (core-js.io). All rights reserved.',
13
- license: 'https://github.com/zloirock/core-js/blob/v3.49.0/LICENSE',
13
+ license: 'https://github.com/zloirock/core-js/blob/v3.50.0/LICENSE',
14
14
  source: 'https://github.com/zloirock/core-js'
15
15
  });
@@ -1,6 +1,8 @@
1
1
  'use strict';
2
2
  var store = require('../internals/shared-store');
3
+ // eslint-disable-next-line es/no-object-create -- safe
4
+ var create = Object.create || Object;
3
5
 
4
6
  module.exports = function (key, value) {
5
- return store[key] || (store[key] = value || {});
7
+ return store[key] || (store[key] = value || create(null));
6
8
  };
@@ -5,8 +5,8 @@ var aCallable = require('../internals/a-callable');
5
5
  var aConstructor = require('../internals/a-constructor');
6
6
  var toObject = require('../internals/to-object');
7
7
  var lengthOfArrayLike = require('../internals/length-of-array-like');
8
- var getIterator = require('../internals/get-iterator');
9
- var getIteratorMethod = require('../internals/get-iterator-method');
8
+ var getIterator = require('../internals/get-iterator-internal');
9
+ var getIteratorMethod = require('../internals/get-iterator-method-internal');
10
10
  var isArrayIteratorMethod = require('../internals/is-array-iterator-method');
11
11
  var isBigIntArray = require('../internals/is-big-int-array');
12
12
  var aTypedArrayConstructor = require('../internals/array-buffer-view-core').aTypedArrayConstructor;
@@ -13,7 +13,9 @@ var base64UrlAlphabet = base64Map.c2iUrl;
13
13
 
14
14
  var SyntaxError = globalThis.SyntaxError;
15
15
  var TypeError = globalThis.TypeError;
16
+ var $Array = globalThis.Array;
16
17
  var at = uncurryThis(''.charAt);
18
+ var floor = Math.floor;
17
19
 
18
20
  var skipAsciiWhitespace = function (string, index) {
19
21
  var length = string.length;
@@ -82,7 +84,7 @@ module.exports = function (string, options, into, maxLength) {
82
84
  if (into) notDetached(into.buffer);
83
85
 
84
86
  var stringLength = string.length;
85
- var bytes = into || [];
87
+ var bytes = into || $Array(floor(stringLength * 3 / 4));
86
88
  var written = 0;
87
89
  var read = 0;
88
90
  var chunk = '';
@@ -152,6 +154,6 @@ module.exports = function (string, options, into, maxLength) {
152
154
  }
153
155
  }
154
156
  }
155
-
157
+ if (!into) bytes.length = written;
156
158
  return { bytes: bytes, read: read, written: written };
157
159
  };
@@ -12,7 +12,7 @@ module.exports = function (string, into) {
12
12
  if (stringLength % 2 !== 0) throw new SyntaxError('String should be an even number of characters');
13
13
  var maxLength = into ? min(into.length, stringLength / 2) : stringLength / 2;
14
14
  var bytes = into || new Uint8Array(maxLength);
15
- var segments = stringMatch(string, /.{2}/g);
15
+ var segments = stringMatch(string, /[\S\s]{2}/g);
16
16
  var written = 0;
17
17
  for (; written < maxLength; written++) {
18
18
  var result = +('0x' + segments[written] + '0');
@@ -0,0 +1,171 @@
1
+ 'use strict';
2
+ // TODO: in core-js@4, move /modules/ dependencies to public entries for better optimization by tools like `preset-env`
3
+ require('../modules/es.string.from-code-point');
4
+ var getBuiltIn = require('../internals/get-built-in');
5
+ var uncurryThis = require('../internals/function-uncurry-this');
6
+
7
+ var fromCharCode = String.fromCharCode;
8
+ var fromCodePoint = getBuiltIn('String', 'fromCodePoint');
9
+ var $encodeURIComponent = encodeURIComponent;
10
+ var $parseInt = parseInt;
11
+ var charAt = uncurryThis(''.charAt);
12
+ var push = uncurryThis([].push);
13
+ var replace = uncurryThis(''.replace);
14
+ var stringSlice = uncurryThis(''.slice);
15
+ var exec = uncurryThis(/./.exec);
16
+
17
+ var FALLBACK_REPLACER = '\uFFFD';
18
+ var VALID_HEX = /^[0-9a-f]+$/i;
19
+ // a surrogate pair is matched first, so a one-unit match is always a lone surrogate
20
+ var SURROGATE = /[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDFFF]/g;
21
+
22
+ var parseHexOctet = function (string, start) {
23
+ var substr = stringSlice(string, start, start + 2);
24
+ if (!exec(VALID_HEX, substr)) return NaN;
25
+
26
+ return $parseInt(substr, 16);
27
+ };
28
+
29
+ var getLeadingOnes = function (octet) {
30
+ var count = 0;
31
+ for (var mask = 0x80; mask > 0 && (octet & mask) !== 0; mask >>= 1) {
32
+ count++;
33
+ }
34
+ return count;
35
+ };
36
+
37
+ var utf8Decode = function (octets) {
38
+ var codePoint = null;
39
+ var length = octets.length;
40
+
41
+ switch (length) {
42
+ case 1:
43
+ codePoint = octets[0];
44
+ break;
45
+ case 2:
46
+ codePoint = (octets[0] & 0x1F) << 6 | (octets[1] & 0x3F);
47
+ break;
48
+ case 3:
49
+ codePoint = (octets[0] & 0x0F) << 12 | (octets[1] & 0x3F) << 6 | (octets[2] & 0x3F);
50
+ break;
51
+ case 4:
52
+ codePoint = (octets[0] & 0x07) << 18 | (octets[1] & 0x3F) << 12 | (octets[2] & 0x3F) << 6 | (octets[3] & 0x3F);
53
+ break;
54
+ }
55
+
56
+ // reject surrogates, overlong encodings, and out-of-range codepoints
57
+ if (codePoint === null
58
+ || codePoint > 0x10FFFF
59
+ || (codePoint >= 0xD800 && codePoint <= 0xDFFF)
60
+ || codePoint < (length > 3 ? 0x10000 : length > 2 ? 0x800 : length > 1 ? 0x80 : 0)
61
+ ) return null;
62
+
63
+ return codePoint;
64
+ };
65
+
66
+ var replaceLoneSurrogate = function (chunk) {
67
+ return chunk.length === 2 ? chunk : FALLBACK_REPLACER;
68
+ };
69
+
70
+ // https://url.spec.whatwg.org/#percent-decode
71
+ /* eslint-disable max-depth -- ok */
72
+ var decode = function (input) {
73
+ var length = input.length;
74
+ var result = '';
75
+ var i = 0;
76
+
77
+ while (i < length) {
78
+ var decodedChar = charAt(input, i);
79
+
80
+ if (decodedChar === '%') {
81
+ if (charAt(input, i + 1) === '%' || i + 3 > length) {
82
+ result += '%';
83
+ i++;
84
+ continue;
85
+ }
86
+
87
+ var octet = parseHexOctet(input, i + 1);
88
+
89
+ // eslint-disable-next-line no-self-compare -- NaN check
90
+ if (octet !== octet) {
91
+ result += decodedChar;
92
+ i++;
93
+ continue;
94
+ }
95
+
96
+ i += 2;
97
+ var byteSequenceLength = getLeadingOnes(octet);
98
+
99
+ if (byteSequenceLength === 0) {
100
+ decodedChar = fromCharCode(octet);
101
+ } else {
102
+ if (byteSequenceLength === 1 || byteSequenceLength > 4) {
103
+ result += FALLBACK_REPLACER;
104
+ i++;
105
+ continue;
106
+ }
107
+
108
+ var octets = [octet];
109
+ var sequenceIndex = 1;
110
+
111
+ while (sequenceIndex < byteSequenceLength) {
112
+ i++;
113
+ if (i + 3 > length || charAt(input, i) !== '%') break;
114
+
115
+ var nextByte = parseHexOctet(input, i + 1);
116
+
117
+ // eslint-disable-next-line no-self-compare -- NaN check
118
+ if (nextByte !== nextByte || nextByte > 191 || nextByte < 128) break;
119
+
120
+ // https://encoding.spec.whatwg.org/#utf-8-decoder - position-specific byte ranges
121
+ if (sequenceIndex === 1) {
122
+ if (octet === 0xE0 && nextByte < 0xA0) break;
123
+ if (octet === 0xED && nextByte > 0x9F) break;
124
+ if (octet === 0xF0 && nextByte < 0x90) break;
125
+ if (octet === 0xF4 && nextByte > 0x8F) break;
126
+ }
127
+
128
+ push(octets, nextByte);
129
+ i += 2;
130
+ sequenceIndex++;
131
+ }
132
+
133
+ if (octets.length !== byteSequenceLength) {
134
+ result += FALLBACK_REPLACER;
135
+ continue;
136
+ }
137
+
138
+ var codePoint = utf8Decode(octets);
139
+ if (codePoint === null) {
140
+ for (var replacement = 0; replacement < byteSequenceLength; replacement++) result += FALLBACK_REPLACER;
141
+ i++;
142
+ continue;
143
+ } else {
144
+ decodedChar = fromCodePoint(codePoint);
145
+ }
146
+ }
147
+ }
148
+
149
+ result += decodedChar;
150
+ i++;
151
+ }
152
+
153
+ return result;
154
+ };
155
+ /* eslint-enable max-depth -- ok */
156
+
157
+ // https://url.spec.whatwg.org/#string-percent-encode-after-encoding
158
+ // a lone surrogate is the only input `encodeURIComponent` throws on, and the UTF-8
159
+ // encoder replaces it - so the throw selects the slow path instead of a per-call scan
160
+ var encode = function (input) {
161
+ try {
162
+ return $encodeURIComponent(input);
163
+ } catch (error) {
164
+ return $encodeURIComponent(replace(input, SURROGATE, replaceLoneSurrogate));
165
+ }
166
+ };
167
+
168
+ module.exports = {
169
+ decode: decode,
170
+ encode: encode
171
+ };
@@ -11,7 +11,7 @@ var FORCED = fails(function () {
11
11
 
12
12
  // `Date.prototype.toJSON` method
13
13
  // https://tc39.es/ecma262/#sec-date.prototype.tojson
14
- $({ target: 'Date', proto: true, arity: 1, forced: FORCED }, {
14
+ $({ target: 'Date', proto: true, forced: FORCED }, {
15
15
  // eslint-disable-next-line no-unused-vars -- required for `.length`
16
16
  toJSON: function toJSON(key) {
17
17
  var O = toObject(this);
@@ -8,6 +8,8 @@ var charCodeAt = uncurryThis(''.charCodeAt);
8
8
  var exec = uncurryThis(/./.exec);
9
9
  var numberToString = uncurryThis(1.1.toString);
10
10
  var toUpperCase = uncurryThis(''.toUpperCase);
11
+ var join = uncurryThis([].join);
12
+ var $Array = Array;
11
13
 
12
14
  var raw = /[\w*+\-./@]/;
13
15
 
@@ -22,22 +24,22 @@ var hex = function (code, length) {
22
24
  $({ global: true }, {
23
25
  escape: function escape(string) {
24
26
  var str = toString(string);
25
- var result = '';
26
27
  var length = str.length;
27
- var index = 0;
28
+ var result = $Array(length);
29
+ var index;
28
30
  var chr, code;
29
- while (index < length) {
30
- chr = charAt(str, index++);
31
+ for (index = 0; index < length; index++) {
32
+ chr = charAt(str, index);
31
33
  if (exec(raw, chr)) {
32
- result += chr;
34
+ result[index] = chr;
33
35
  } else {
34
36
  code = charCodeAt(chr, 0);
35
37
  if (code < 256) {
36
- result += '%' + toUpperCase(hex(code, 2));
38
+ result[index] = '%' + toUpperCase(hex(code, 2));
37
39
  } else {
38
- result += '%u' + toUpperCase(hex(code, 4));
40
+ result[index] = '%u' + toUpperCase(hex(code, 4));
39
41
  }
40
42
  }
41
- } return result;
43
+ } return join(result, '');
42
44
  }
43
45
  });
@@ -3,7 +3,7 @@ var $ = require('../internals/export');
3
3
  var call = require('../internals/function-call');
4
4
  var aCallable = require('../internals/a-callable');
5
5
  var anObject = require('../internals/an-object');
6
- var getIteratorMethod = require('../internals/get-iterator-method');
6
+ var getIteratorMethod = require('../internals/get-iterator-method-internal');
7
7
  var createIteratorProxy = require('../internals/iterator-create-proxy');
8
8
  var IS_PURE = require('../internals/is-pure');
9
9
 
@@ -11,11 +11,23 @@ var iteratorHelperThrowsOnInvalidIterator = require('../internals/iterator-helpe
11
11
  var iteratorHelperWithoutClosingOnEarlyError = require('../internals/iterator-helper-without-closing-on-early-error');
12
12
  var IS_PURE = require('../internals/is-pure');
13
13
 
14
+ var $RangeError = RangeError;
15
+ var $Infinity = Infinity;
16
+
14
17
  var DROP_WITHOUT_THROWING_ON_INVALID_ITERATOR = !IS_PURE && !iteratorHelperThrowsOnInvalidIterator('drop', 0);
15
18
  var dropWithoutClosingOnEarlyError = !IS_PURE && !DROP_WITHOUT_THROWING_ON_INVALID_ITERATOR
16
19
  && iteratorHelperWithoutClosingOnEarlyError('drop', RangeError);
17
20
 
18
- var FORCED = IS_PURE || DROP_WITHOUT_THROWING_ON_INVALID_ITERATOR || dropWithoutClosingOnEarlyError;
21
+ var FORCED = IS_PURE || DROP_WITHOUT_THROWING_ON_INVALID_ITERATOR || dropWithoutClosingOnEarlyError || !function () {
22
+ try {
23
+ // eslint-disable-next-line es/no-iterator, es/no-iterator-prototype-drop -- detection
24
+ Iterator.prototype.drop.call({
25
+ next: function () { return { done: true }; }
26
+ }, 0x20000000000000);
27
+ } catch (error) {
28
+ return error instanceof $RangeError;
29
+ }
30
+ }();
19
31
 
20
32
  var IteratorProxy = createIteratorProxy(function () {
21
33
  var iterator = this.iterator;
@@ -40,6 +52,9 @@ $({ target: 'Iterator', proto: true, real: true, forced: FORCED }, {
40
52
  var remaining;
41
53
  try {
42
54
  remaining = toPositiveInteger(notANaN(+limit));
55
+ if (remaining > 0x1FFFFFFFFFFFFF && remaining !== $Infinity) {
56
+ throw new $RangeError('The argument should be a safe integer');
57
+ }
43
58
  } catch (error) {
44
59
  iteratorClose(this, 'throw', error);
45
60
  }
@@ -7,30 +7,28 @@ var getIteratorDirect = require('../internals/get-iterator-direct');
7
7
  var getIteratorFlattenable = require('../internals/get-iterator-flattenable');
8
8
  var createIteratorProxy = require('../internals/iterator-create-proxy');
9
9
  var iteratorClose = require('../internals/iterator-close');
10
+ var fails = require('../internals/fails');
10
11
  var IS_PURE = require('../internals/is-pure');
11
12
  var iteratorHelperThrowsOnInvalidIterator = require('../internals/iterator-helper-throws-on-invalid-iterator');
12
13
  var iteratorHelperWithoutClosingOnEarlyError = require('../internals/iterator-helper-without-closing-on-early-error');
13
14
 
14
15
  // Should not throw an error for an iterator without `return` method. Fixed in Safari 26.2
15
16
  // https://bugs.webkit.org/show_bug.cgi?id=297532
16
- function throwsOnIteratorWithoutReturn() {
17
- try {
18
- // eslint-disable-next-line es/no-map, es/no-iterator, es/no-iterator-prototype-flatmap -- required for testing
19
- var it = Iterator.prototype.flatMap.call(new Map([[4, 5]]).entries(), function (v) { return v; });
20
- it.next();
21
- it['return']();
22
- } catch (error) {
23
- return true;
24
- }
25
- }
17
+ var THROWS_ON_ITERATOR_WITHOUT_RETURN = !IS_PURE && fails(function () {
18
+ // eslint-disable-next-line es/no-array-prototype-values, es/no-iterator-prototype-flatmap, es/no-iterator-prototype-find -- testing
19
+ return [1].values()
20
+ .flatMap(function () { return [1]; })
21
+ .find(function () { return true; }) !== 1;
22
+ });
26
23
 
27
- var FLAT_MAP_WITHOUT_THROWING_ON_INVALID_ITERATOR = !IS_PURE
24
+ var FLAT_MAP_WITHOUT_THROWING_ON_INVALID_ITERATOR = !IS_PURE && !THROWS_ON_ITERATOR_WITHOUT_RETURN
28
25
  && !iteratorHelperThrowsOnInvalidIterator('flatMap', function () { /* empty */ });
29
- var flatMapWithoutClosingOnEarlyError = !IS_PURE && !FLAT_MAP_WITHOUT_THROWING_ON_INVALID_ITERATOR
26
+
27
+ var flatMapWithoutClosingOnEarlyError = !IS_PURE && !THROWS_ON_ITERATOR_WITHOUT_RETURN && !FLAT_MAP_WITHOUT_THROWING_ON_INVALID_ITERATOR
30
28
  && iteratorHelperWithoutClosingOnEarlyError('flatMap', TypeError);
31
29
 
32
- var FORCED = IS_PURE || FLAT_MAP_WITHOUT_THROWING_ON_INVALID_ITERATOR || flatMapWithoutClosingOnEarlyError
33
- || throwsOnIteratorWithoutReturn();
30
+ var FORCED = IS_PURE || THROWS_ON_ITERATOR_WITHOUT_RETURN || FLAT_MAP_WITHOUT_THROWING_ON_INVALID_ITERATOR
31
+ || flatMapWithoutClosingOnEarlyError;
34
32
 
35
33
  var IteratorProxy = createIteratorProxy(function () {
36
34
  var iterator = this.iterator;
@@ -11,11 +11,23 @@ var iteratorHelperThrowsOnInvalidIterator = require('../internals/iterator-helpe
11
11
  var iteratorHelperWithoutClosingOnEarlyError = require('../internals/iterator-helper-without-closing-on-early-error');
12
12
  var IS_PURE = require('../internals/is-pure');
13
13
 
14
+ var $RangeError = RangeError;
15
+ var $Infinity = Infinity;
16
+
14
17
  var TAKE_WITHOUT_THROWING_ON_INVALID_ITERATOR = !IS_PURE && !iteratorHelperThrowsOnInvalidIterator('take', 1);
15
18
  var takeWithoutClosingOnEarlyError = !IS_PURE && !TAKE_WITHOUT_THROWING_ON_INVALID_ITERATOR
16
19
  && iteratorHelperWithoutClosingOnEarlyError('take', RangeError);
17
20
 
18
- var FORCED = IS_PURE || TAKE_WITHOUT_THROWING_ON_INVALID_ITERATOR || takeWithoutClosingOnEarlyError;
21
+ var FORCED = IS_PURE || TAKE_WITHOUT_THROWING_ON_INVALID_ITERATOR || takeWithoutClosingOnEarlyError || !function () {
22
+ try {
23
+ // eslint-disable-next-line es/no-iterator, es/no-iterator-prototype-take -- detection
24
+ Iterator.prototype.take.call({
25
+ next: function () { return { done: true }; }
26
+ }, 0x20000000000000);
27
+ } catch (error) {
28
+ return error instanceof $RangeError;
29
+ }
30
+ }();
19
31
 
20
32
  var IteratorProxy = createIteratorProxy(function () {
21
33
  var iterator = this.iterator;
@@ -36,6 +48,9 @@ $({ target: 'Iterator', proto: true, real: true, forced: FORCED }, {
36
48
  var remaining;
37
49
  try {
38
50
  remaining = toPositiveInteger(notANaN(+limit));
51
+ if (remaining > 0x1FFFFFFFFFFFFF && remaining !== $Infinity) {
52
+ throw new $RangeError('The argument should be a safe integer');
53
+ }
39
54
  } catch (error) {
40
55
  iteratorClose(this, 'throw', error);
41
56
  }