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
@@ -8,9 +8,10 @@ var isConstructor = require('../internals/is-constructor');
8
8
  var lengthOfArrayLike = require('../internals/length-of-array-like');
9
9
  var createProperty = require('../internals/create-property');
10
10
  var setArrayLength = require('../internals/array-set-length');
11
- var getIterator = require('../internals/get-iterator');
12
- var getIteratorMethod = require('../internals/get-iterator-method');
11
+ var getIterator = require('../internals/get-iterator-internal');
12
+ var getIteratorMethod = require('../internals/get-iterator-method-internal');
13
13
  var iteratorClose = require('../internals/iterator-close');
14
+ var doesNotExceedSafeInteger = require('../internals/does-not-exceed-safe-integer');
14
15
 
15
16
  var $Array = Array;
16
17
 
@@ -32,6 +33,11 @@ module.exports = function from(arrayLike /* , mapfn = undefined, thisArg = undef
32
33
  iterator = getIterator(O, iteratorMethod);
33
34
  next = iterator.next;
34
35
  for (;!(step = call(next, iterator)).done; index++) {
36
+ try {
37
+ doesNotExceedSafeInteger(index);
38
+ } catch (error) {
39
+ iteratorClose(iterator, 'throw', error);
40
+ }
35
41
  value = mapping ? callWithSafeIterationClosing(iterator, mapfn, [step.value, index], true) : step.value;
36
42
  try {
37
43
  createProperty(result, index, value);
@@ -11,6 +11,7 @@ var getBuiltIn = require('../internals/get-built-in');
11
11
  var getMethod = require('../internals/get-method');
12
12
  var AsyncIteratorPrototype = require('../internals/async-iterator-prototype');
13
13
  var createIterResultObject = require('../internals/create-iter-result-object');
14
+ var cleanupState = require('../internals/iterator-cleanup-state');
14
15
 
15
16
  var Promise = getBuiltIn('Promise');
16
17
 
@@ -46,8 +47,18 @@ var createAsyncIteratorProxyPrototype = function (IS_ITERATOR) {
46
47
  });
47
48
  var handlerError = handlerCompletion.error;
48
49
  var value = handlerCompletion.value;
49
- if (handlerError) state.done = true;
50
- return handlerError ? Promise.reject(value) : Promise.resolve(value);
50
+ if (handlerError) {
51
+ state.done = true;
52
+ if (IS_GENERATOR) cleanupState(state);
53
+ return Promise.reject(value);
54
+ }
55
+ return IS_GENERATOR ? Promise.resolve(value).then(function (result) {
56
+ if (state.done) cleanupState(state);
57
+ return result;
58
+ }, function (error) {
59
+ cleanupState(state);
60
+ throw error;
61
+ }) : Promise.resolve(value);
51
62
  },
52
63
  'return': function () {
53
64
  var stateCompletion = getStateOrEarlyExit(this);
@@ -56,6 +67,7 @@ var createAsyncIteratorProxyPrototype = function (IS_ITERATOR) {
56
67
  state.done = true;
57
68
  var iterator = state.iterator;
58
69
  var inner = state.inner;
70
+ if (IS_GENERATOR) cleanupState(state);
59
71
  var returnMethod, result;
60
72
  var closeOuterIterator = function () {
61
73
  var completion = perform(function () {
@@ -5,7 +5,7 @@ var $Error = Error;
5
5
  var replace = uncurryThis(''.replace);
6
6
 
7
7
  var TEST = (function (arg) { return String(new $Error(arg).stack); })('zxcasd');
8
- // eslint-disable-next-line redos/no-vulnerable, sonarjs/slow-regex -- safe
8
+ // eslint-disable-next-line redos/no-vulnerable -- safe
9
9
  var V8_OR_CHAKRA_STACK_ENTRY = /\n\s*at [^:]*:[^\n]*/;
10
10
  var IS_V8_OR_CHAKRA_STACK = V8_OR_CHAKRA_STACK_ENTRY.test(TEST);
11
11
 
@@ -3,7 +3,7 @@ var call = require('../internals/function-call');
3
3
  var isCallable = require('../internals/is-callable');
4
4
  var anObject = require('../internals/an-object');
5
5
  var getIteratorDirect = require('../internals/get-iterator-direct');
6
- var getIteratorMethod = require('../internals/get-iterator-method');
6
+ var getIteratorMethod = require('../internals/get-iterator-method-internal');
7
7
  var getMethod = require('../internals/get-method');
8
8
  var wellKnownSymbol = require('../internals/well-known-symbol');
9
9
  var AsyncFromSyncIterator = require('../internals/async-from-sync-iterator');
@@ -2,7 +2,7 @@
2
2
  var call = require('../internals/function-call');
3
3
  var AsyncFromSyncIterator = require('../internals/async-from-sync-iterator');
4
4
  var anObject = require('../internals/an-object');
5
- var getIterator = require('../internals/get-iterator');
5
+ var getIterator = require('../internals/get-iterator-internal');
6
6
  var getIteratorDirect = require('../internals/get-iterator-direct');
7
7
  var getMethod = require('../internals/get-method');
8
8
  var wellKnownSymbol = require('../internals/well-known-symbol');
@@ -0,0 +1 @@
1
+ // empty
@@ -2,7 +2,7 @@
2
2
  var call = require('../internals/function-call');
3
3
  var anObject = require('../internals/an-object');
4
4
  var getIteratorDirect = require('../internals/get-iterator-direct');
5
- var getIteratorMethod = require('../internals/get-iterator-method');
5
+ var getIteratorMethod = require('../internals/get-iterator-method-internal');
6
6
 
7
7
  module.exports = function (obj, stringHandling) {
8
8
  if (!stringHandling || typeof obj !== 'string') anObject(obj);
@@ -0,0 +1,14 @@
1
+ 'use strict';
2
+ var call = require('../internals/function-call');
3
+ var isCallable = require('../internals/is-callable');
4
+ var anObject = require('../internals/an-object');
5
+ var tryToString = require('../internals/try-to-string');
6
+ var getIteratorMethod = require('../internals/get-iterator-method-internal');
7
+
8
+ var $TypeError = TypeError;
9
+
10
+ module.exports = function (argument, usingIterator) {
11
+ var iteratorMethod = arguments.length < 2 ? getIteratorMethod(argument) : usingIterator;
12
+ if (isCallable(iteratorMethod)) return anObject(call(iteratorMethod, argument));
13
+ throw new $TypeError(tryToString(argument) + ' is not iterable');
14
+ };
@@ -0,0 +1,14 @@
1
+ 'use strict';
2
+ var classof = require('../internals/classof-raw');
3
+ var isNullOrUndefined = require('../internals/is-null-or-undefined');
4
+ var getMethod = require('../internals/get-method');
5
+ var wellKnownSymbol = require('../internals/well-known-symbol');
6
+
7
+ var ITERATOR = wellKnownSymbol('iterator');
8
+ var ArrayPrototype = Array.prototype;
9
+
10
+ module.exports = function (it) {
11
+ if (!isNullOrUndefined(it)) return getMethod(it, ITERATOR)
12
+ || getMethod(it, '@@iterator')
13
+ || (classof(it) === 'Arguments' ? ArrayPrototype[ITERATOR] : undefined);
14
+ };
@@ -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.51.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.51.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
  });