core-js 3.48.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 (179) hide show
  1. package/README.md +2 -2
  2. package/actual/iterator/chunks.js +8 -0
  3. package/actual/iterator/concat.js +4 -0
  4. package/actual/iterator/from.js +4 -0
  5. package/actual/iterator/includes.js +8 -0
  6. package/actual/iterator/index.js +4 -1
  7. package/actual/iterator/join.js +8 -0
  8. package/actual/iterator/windows.js +8 -0
  9. package/actual/iterator/zip-keyed.js +6 -21
  10. package/actual/iterator/zip.js +6 -19
  11. package/actual/promise/all-keyed.js +16 -0
  12. package/actual/promise/all-settled-keyed.js +16 -0
  13. package/actual/promise/index.js +4 -0
  14. package/configurator.js +1 -1
  15. package/es/index.js +2 -0
  16. package/es/iterator/index.js +4 -0
  17. package/es/iterator/zip-keyed.js +24 -0
  18. package/es/iterator/zip.js +22 -0
  19. package/es/object/define-properties.js +2 -2
  20. package/es/object/define-property.js +2 -2
  21. package/es/object/get-own-property-descriptor.js +2 -2
  22. package/es/promise/try.js +2 -2
  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 +6 -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 +3 -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/advance-string-index.js +1 -1
  42. package/internals/array-buffer-transfer.js +4 -1
  43. package/internals/array-buffer-view-core.js +1 -1
  44. package/internals/array-buffer.js +1 -2
  45. package/internals/array-fill.js +2 -1
  46. package/internals/array-from-async.js +7 -9
  47. package/internals/array-from.js +15 -4
  48. package/internals/async-from-sync-iterator.js +28 -4
  49. package/internals/async-iterator-close.js +11 -3
  50. package/internals/async-iterator-create-proxy.js +61 -22
  51. package/internals/async-iterator-iteration.js +7 -4
  52. package/internals/async-iterator-map.js +20 -18
  53. package/internals/does-not-exceed-safe-integer.js +1 -1
  54. package/internals/environment-is-ios.js +1 -2
  55. package/internals/error-stack-clear.js +1 -1
  56. package/internals/function-bind-native.js +1 -1
  57. package/internals/function-name.js +1 -1
  58. package/internals/get-async-iterator-flattenable.js +1 -1
  59. package/internals/get-async-iterator.js +1 -1
  60. package/internals/get-internal-iterator.js +1 -0
  61. package/internals/get-iterator-flattenable.js +1 -1
  62. package/internals/get-iterator-internal.js +14 -0
  63. package/internals/get-iterator-method-internal.js +14 -0
  64. package/internals/get-iterator-method.js +4 -7
  65. package/internals/get-iterator-record.js +1 -1
  66. package/internals/get-iterator.js +4 -5
  67. package/internals/is-iterable.js +4 -10
  68. package/internals/iterate.js +10 -5
  69. package/internals/iterator-chunk-size-validation.js +17 -0
  70. package/internals/iterator-cleanup-state.js +6 -0
  71. package/internals/iterator-create-proxy.js +14 -5
  72. package/internals/iterator-window.js +4 -6
  73. package/internals/iterator-zip.js +4 -3
  74. package/internals/iterators.js +1 -1
  75. package/internals/math-log1p.js +3 -1
  76. package/internals/numeric-range-iterator.js +9 -4
  77. package/internals/regexp-exec.js +20 -13
  78. package/internals/set-difference.js +1 -1
  79. package/internals/set-is-disjoint-from.js +1 -1
  80. package/internals/set-is-superset-of.js +1 -1
  81. package/internals/shared-store.js +2 -2
  82. package/internals/shared.js +3 -1
  83. package/internals/string-pad.js +2 -1
  84. package/internals/string-parse.js +1 -1
  85. package/internals/string-repeat.js +2 -1
  86. package/internals/to-uint8-clamped.js +11 -3
  87. package/internals/typed-array-constructor.js +1 -2
  88. package/internals/typed-array-from.js +5 -3
  89. package/internals/uint8-from-base64.js +4 -2
  90. package/internals/uint8-from-hex.js +10 -10
  91. package/internals/url-percent-coding.js +171 -0
  92. package/modules/es.array.flat.js +2 -1
  93. package/modules/es.array.from-async.js +1 -1
  94. package/modules/es.array.includes.js +7 -1
  95. package/modules/es.array.sort.js +3 -1
  96. package/modules/es.data-view.get-float16.js +1 -1
  97. package/modules/es.data-view.set-float16.js +2 -1
  98. package/modules/es.date.set-year.js +4 -1
  99. package/modules/es.date.to-json.js +1 -1
  100. package/modules/es.error.is-error.js +1 -1
  101. package/modules/es.escape.js +10 -8
  102. package/modules/es.iterator.concat.js +5 -4
  103. package/modules/es.iterator.drop.js +16 -1
  104. package/modules/es.iterator.flat-map.js +12 -14
  105. package/modules/es.iterator.take.js +22 -2
  106. package/modules/es.iterator.zip-keyed.js +70 -0
  107. package/modules/es.iterator.zip.js +92 -0
  108. package/modules/es.json.parse.js +14 -2
  109. package/modules/es.json.stringify.js +157 -38
  110. package/modules/es.map.get-or-insert-computed.js +3 -4
  111. package/modules/es.map.get-or-insert.js +2 -3
  112. package/modules/es.map.group-by.js +2 -0
  113. package/modules/es.math.asinh.js +6 -1
  114. package/modules/es.math.atanh.js +2 -2
  115. package/modules/es.math.cbrt.js +3 -1
  116. package/modules/es.math.sum-precise.js +3 -3
  117. package/modules/es.number.to-exponential.js +15 -6
  118. package/modules/es.object.group-by.js +2 -0
  119. package/modules/es.object.proto.js +2 -1
  120. package/modules/es.promise.try.js +16 -8
  121. package/modules/es.reflect.construct.js +1 -1
  122. package/modules/es.reflect.define-property.js +10 -0
  123. package/modules/es.reflect.delete-property.js +5 -2
  124. package/modules/es.reflect.get.js +9 -7
  125. package/modules/es.reflect.set.js +14 -9
  126. package/modules/es.regexp.constructor.js +16 -5
  127. package/modules/es.string.ends-with.js +1 -1
  128. package/modules/es.string.from-code-point.js +2 -2
  129. package/modules/es.string.match-all.js +1 -1
  130. package/modules/es.string.match.js +5 -3
  131. package/modules/es.string.replace.js +9 -8
  132. package/modules/es.string.search.js +3 -1
  133. package/modules/es.string.split.js +7 -5
  134. package/modules/es.string.starts-with.js +1 -1
  135. package/modules/es.string.substr.js +5 -7
  136. package/modules/es.symbol.constructor.js +3 -2
  137. package/modules/es.symbol.description.js +9 -0
  138. package/modules/es.typed-array.sort.js +3 -3
  139. package/modules/es.uint8-array.from-base64.js +1 -1
  140. package/modules/es.uint8-array.from-hex.js +1 -1
  141. package/modules/es.uint8-array.set-from-base64.js +1 -1
  142. package/modules/es.uint8-array.set-from-hex.js +1 -1
  143. package/modules/es.uint8-array.to-base64.js +23 -6
  144. package/modules/es.uint8-array.to-hex.js +6 -4
  145. package/modules/es.weak-map.get-or-insert-computed.js +2 -2
  146. package/modules/es.weak-map.get-or-insert.js +2 -3
  147. package/modules/esnext.array.is-template-object.js +1 -1
  148. package/modules/esnext.async-iterator.reduce.js +2 -2
  149. package/modules/esnext.async-iterator.take.js +4 -2
  150. package/modules/esnext.bigint.range.js +1 -1
  151. package/modules/esnext.iterator.chunks.js +6 -8
  152. package/modules/esnext.iterator.includes.js +44 -0
  153. package/modules/esnext.iterator.join.js +31 -0
  154. package/modules/esnext.iterator.range.js +1 -1
  155. package/modules/esnext.iterator.windows.js +2 -1
  156. package/modules/esnext.iterator.zip-keyed.js +2 -70
  157. package/modules/esnext.iterator.zip.js +2 -90
  158. package/modules/esnext.number.from-string.js +30 -3
  159. package/modules/esnext.number.range.js +1 -1
  160. package/modules/esnext.observable.from.js +6 -3
  161. package/modules/esnext.promise.all-keyed.js +57 -0
  162. package/modules/esnext.promise.all-settled-keyed.js +60 -0
  163. package/modules/esnext.string.dedent.js +1 -1
  164. package/modules/web.atob.js +15 -6
  165. package/modules/web.btoa.js +10 -3
  166. package/modules/web.structured-clone.js +2 -2
  167. package/modules/web.url-search-params.constructor.js +13 -130
  168. package/modules/web.url-search-params.delete.js +6 -9
  169. package/modules/web.url.constructor.js +154 -39
  170. package/modules/web.url.parse.js +1 -1
  171. package/modules/web.url.to-json.js +4 -1
  172. package/package.json +8 -1
  173. package/proposals/await-dictionary.js +4 -0
  174. package/proposals/iterator-includes.js +3 -0
  175. package/proposals/iterator-join.js +3 -0
  176. package/stable/index.js +2 -0
  177. package/stable/iterator/zip-keyed.js +5 -0
  178. package/stable/iterator/zip.js +5 -0
  179. package/stage/3.js +4 -0
@@ -0,0 +1,44 @@
1
+ 'use strict';
2
+ var $ = require('../internals/export');
3
+ var anObject = require('../internals/an-object');
4
+ var isIntegralNumber = require('../internals/is-integral-number');
5
+ var iterate = require('../internals/iterate');
6
+ var iteratorClose = require('../internals/iterator-close');
7
+ var sameValueZero = require('../internals/same-value-zero');
8
+ var IS_PURE = require('../internals/is-pure');
9
+
10
+ var $RangeError = RangeError;
11
+ var $TypeError = TypeError;
12
+ var $Infinity = Infinity;
13
+
14
+ var INVALID_SKIPPED_ELEMENTS = 'skippedElements should be a positive safe integer';
15
+
16
+ // `Iterator.prototype.includes` method
17
+ // https://github.com/tc39/proposal-iterator-includes
18
+ $({ target: 'Iterator', proto: true, real: true, forced: IS_PURE }, {
19
+ includes: function includes(searchElement /* , skippedElements */) {
20
+ anObject(this);
21
+ var skippedElements = arguments.length > 1 ? arguments[1] : undefined;
22
+ var skipped = 0;
23
+ var toSkip;
24
+ try {
25
+ if (skippedElements === undefined) {
26
+ toSkip = 0;
27
+ } else if (skippedElements === $Infinity || skippedElements === -$Infinity || isIntegralNumber(skippedElements)) {
28
+ toSkip = skippedElements;
29
+ } else {
30
+ throw new $TypeError(INVALID_SKIPPED_ELEMENTS);
31
+ }
32
+ if (toSkip < 0 || (toSkip !== $Infinity && toSkip > 0x1FFFFFFFFFFFFF)) {
33
+ throw new $RangeError(INVALID_SKIPPED_ELEMENTS);
34
+ }
35
+ } catch (error) {
36
+ iteratorClose(this, 'throw', error);
37
+ }
38
+
39
+ return iterate(this, function (value, stop) {
40
+ if (skipped < toSkip) skipped++;
41
+ else if (sameValueZero(value, searchElement)) return stop();
42
+ }, { IS_ITERATOR: true, INTERRUPTED: true }).stopped;
43
+ }
44
+ });
@@ -0,0 +1,31 @@
1
+ 'use strict';
2
+ var $ = require('../internals/export');
3
+ var $toString = require('../internals/to-string');
4
+ var anObject = require('../internals/an-object');
5
+ var isNullOrUndefined = require('../internals/is-null-or-undefined');
6
+ var iterate = require('../internals/iterate');
7
+ var iteratorClose = require('../internals/iterator-close');
8
+ var uncurryThis = require('../internals/function-uncurry-this');
9
+ var IS_PURE = require('../internals/is-pure');
10
+
11
+ var $join = uncurryThis([].join);
12
+ var push = uncurryThis([].push);
13
+
14
+ // `Iterator.prototype.join` method
15
+ // https://github.com/tc39/proposal-iterator-join
16
+ $({ target: 'Iterator', proto: true, real: true, forced: IS_PURE }, {
17
+ join: function join(separator) {
18
+ anObject(this);
19
+ var sep;
20
+ try {
21
+ sep = separator === undefined ? ',' : $toString(separator);
22
+ } catch (error) {
23
+ iteratorClose(this, 'throw', error);
24
+ }
25
+ var result = [];
26
+ iterate(this, function (value) {
27
+ push(result, isNullOrUndefined(value) ? '' : $toString(value));
28
+ }, { IS_ITERATOR: true });
29
+ return $join(result, sep);
30
+ }
31
+ });
@@ -6,7 +6,7 @@ var NumericRangeIterator = require('../internals/numeric-range-iterator');
6
6
  var $TypeError = TypeError;
7
7
 
8
8
  // `Iterator.range` method
9
- // https://github.com/tc39/proposal-Number.range
9
+ // https://github.com/tc39/proposal-iterator.range
10
10
  $({ target: 'Iterator', stat: true, forced: true }, {
11
11
  range: function range(start, end, option) {
12
12
  if (typeof start == 'number') return new NumericRangeIterator(start, end, option, 'number', 0, 1);
@@ -1,10 +1,11 @@
1
1
  'use strict';
2
2
  var $ = require('../internals/export');
3
3
  var iteratorWindow = require('../internals/iterator-window');
4
+ var IS_PURE = require('../internals/is-pure');
4
5
 
5
6
  // `Iterator.prototype.windows` method
6
7
  // https://github.com/tc39/proposal-iterator-chunking
7
- $({ target: 'Iterator', proto: true, real: true, forced: true }, {
8
+ $({ target: 'Iterator', proto: true, real: true, forced: IS_PURE }, {
8
9
  windows: function windows(windowSize /* , undersized */) {
9
10
  return iteratorWindow(this, windowSize, arguments.length < 2 ? undefined : arguments[1]);
10
11
  }
@@ -1,71 +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
-
15
- var create = getBuiltIn('Object', 'create');
16
- var ownKeys = getBuiltIn('Reflect', 'ownKeys');
17
- var push = uncurryThis([].push);
18
- var THROW = 'throw';
19
-
20
- // `Iterator.zipKeyed` method
21
- // https://github.com/tc39/proposal-joint-iteration
22
- $({ target: 'Iterator', stat: true }, {
23
- zipKeyed: function zipKeyed(iterables /* , options */) {
24
- anObject(iterables);
25
- var options = arguments.length > 1 ? anObjectOrUndefined(arguments[1]) : undefined;
26
- var mode = getModeOption(options);
27
- var paddingOption = mode === 'longest' ? anObjectOrUndefined(options && options.padding) : undefined;
28
-
29
- var iters = [];
30
- var padding = [];
31
- var allKeys = ownKeys(iterables);
32
- var keys = [];
33
- var propertyIsEnumerable = propertyIsEnumerableModule.f;
34
- var i, key, value;
35
- for (i = 0; i < allKeys.length; i++) try {
36
- key = allKeys[i];
37
- if (!call(propertyIsEnumerable, iterables, key)) continue;
38
- value = iterables[key];
39
- if (value !== undefined) {
40
- push(keys, key);
41
- push(iters, getIteratorFlattenable(value, true));
42
- }
43
- } catch (error) {
44
- return iteratorCloseAll(iters, THROW, error);
45
- }
46
-
47
- var iterCount = iters.length;
48
- if (mode === 'longest') {
49
- if (paddingOption === undefined) {
50
- for (i = 0; i < iterCount; i++) push(padding, undefined);
51
- } else {
52
- for (i = 0; i < keys.length; i++) {
53
- try {
54
- value = paddingOption[keys[i]];
55
- } catch (error) {
56
- return iteratorCloseAll(iters, THROW, error);
57
- }
58
- push(padding, value);
59
- }
60
- }
61
- }
62
-
63
- return iteratorZip(iters, mode, padding, function (results) {
64
- var obj = create(null);
65
- for (var j = 0; j < iterCount; j++) {
66
- createProperty(obj, keys[j], results[j]);
67
- }
68
- return obj;
69
- });
70
- }
71
- });
2
+ // TODO: Remove from `core-js@4`
3
+ require('../modules/es.iterator.zip-keyed');
@@ -1,91 +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
-
14
- var concat = uncurryThis([].concat);
15
- var push = uncurryThis([].push);
16
- var THROW = 'throw';
17
-
18
- // `Iterator.zip` method
19
- // https://github.com/tc39/proposal-joint-iteration
20
- $({ target: 'Iterator', stat: true }, {
21
- zip: function zip(iterables /* , options */) {
22
- anObject(iterables);
23
- var options = arguments.length > 1 ? anObjectOrUndefined(arguments[1]) : undefined;
24
- var mode = getModeOption(options);
25
- var paddingOption = mode === 'longest' ? anObjectOrUndefined(options && options.padding) : undefined;
26
-
27
- var iters = [];
28
- var padding = [];
29
- var inputIter = getIteratorRecord(iterables);
30
- var iter, done, next;
31
- while (!done) {
32
- try {
33
- next = anObject(call(inputIter.next, inputIter.iterator));
34
- done = next.done;
35
- } catch (error) {
36
- return iteratorCloseAll(iters, THROW, error);
37
- }
38
- if (!done) {
39
- try {
40
- iter = getIteratorFlattenable(next.value, true);
41
- } catch (error) {
42
- return iteratorCloseAll(concat([inputIter.iterator], iters), THROW, error);
43
- }
44
- push(iters, iter);
45
- }
46
- }
47
-
48
- var iterCount = iters.length;
49
- var i, paddingDone, paddingIter;
50
- if (mode === 'longest') {
51
- if (paddingOption === undefined) {
52
- for (i = 0; i < iterCount; i++) push(padding, undefined);
53
- } else {
54
- try {
55
- paddingIter = getIteratorRecord(paddingOption);
56
- } catch (error) {
57
- return iteratorCloseAll(iters, THROW, error);
58
- }
59
- var usingIterator = true;
60
- for (i = 0; i < iterCount; i++) {
61
- if (usingIterator) {
62
- try {
63
- next = anObject(call(paddingIter.next, paddingIter.iterator));
64
- paddingDone = next.done;
65
- next = next.value;
66
- } catch (error) {
67
- return iteratorCloseAll(iters, THROW, error);
68
- }
69
- if (paddingDone) {
70
- usingIterator = false;
71
- } else {
72
- push(padding, next);
73
- }
74
- } else {
75
- push(padding, undefined);
76
- }
77
- }
78
-
79
- if (usingIterator) {
80
- try {
81
- iteratorClose(paddingIter.iterator, 'normal');
82
- } catch (error) {
83
- return iteratorCloseAll(iters, THROW, error);
84
- }
85
- }
86
- }
87
- }
88
-
89
- return iteratorZip(iters, mode, padding);
90
- }
91
- });
2
+ // TODO: Remove from `core-js@4`
3
+ require('../modules/es.iterator.zip');
@@ -10,13 +10,30 @@ var $SyntaxError = SyntaxError;
10
10
  var $TypeError = TypeError;
11
11
  var $parseInt = parseInt;
12
12
  var pow = Math.pow;
13
- var valid = /^[\d.a-z]+$/;
13
+ var valid = /^[0-9a-z]+(\.[0-9a-z]+)?$/;
14
14
  var charAt = uncurryThis(''.charAt);
15
+ var charCodeAt = uncurryThis(''.charCodeAt);
15
16
  var exec = uncurryThis(valid.exec);
16
17
  var numberToString = uncurryThis(1.1.toString);
17
18
  var stringSlice = uncurryThis(''.slice);
18
19
  var split = uncurryThis(''.split);
19
20
 
21
+ var validDigitForRadix = function (string, R) {
22
+ for (var i = 0; i < string.length; i++) {
23
+ var code = charCodeAt(string, i);
24
+ // '.' is allowed
25
+ if (code === 0x2E) continue;
26
+ // '0'-'9' - digit value 0-9
27
+ if (code >= 0x30 && code <= 0x39) {
28
+ if (code - 0x30 >= R) return false;
29
+ // 'a'-'z' - digit value 10-35
30
+ } else if (code >= 0x61 && code <= 0x7A) {
31
+ if (code - 0x61 + 10 >= R) return false;
32
+ } else return false;
33
+ }
34
+ return true;
35
+ };
36
+
20
37
  // `Number.fromString` method
21
38
  // https://github.com/tc39/proposal-number-fromstring
22
39
  $({ target: 'Number', stat: true, forced: true }, {
@@ -31,11 +48,21 @@ $({ target: 'Number', stat: true, forced: true }, {
31
48
  }
32
49
  var R = radix === undefined ? 10 : toIntegerOrInfinity(radix);
33
50
  if (R < 2 || R > 36) throw new $RangeError(INVALID_RADIX);
34
- if (!exec(valid, string)) throw new $SyntaxError(INVALID_NUMBER_REPRESENTATION);
51
+ if (!exec(valid, string) || !validDigitForRadix(string, R)) throw new $SyntaxError(INVALID_NUMBER_REPRESENTATION);
35
52
  var parts = split(string, '.');
36
53
  var mathNum = $parseInt(parts[0], R);
37
54
  if (parts.length > 1) mathNum += $parseInt(parts[1], R) / pow(R, parts[1].length);
38
- if (R === 10 && numberToString(mathNum, R) !== string) throw new $SyntaxError(INVALID_NUMBER_REPRESENTATION);
55
+ if (R === 10) {
56
+ var compareString = string;
57
+ if (parts.length > 1) {
58
+ var fraction = parts[1];
59
+ while (fraction.length && charAt(fraction, fraction.length - 1) === '0') {
60
+ fraction = stringSlice(fraction, 0, -1);
61
+ }
62
+ compareString = fraction.length ? parts[0] + '.' + fraction : parts[0];
63
+ }
64
+ if (numberToString(mathNum, R) !== compareString) throw new $SyntaxError(INVALID_NUMBER_REPRESENTATION);
65
+ }
39
66
  return sign * mathNum;
40
67
  }
41
68
  });
@@ -3,7 +3,7 @@ var $ = require('../internals/export');
3
3
  var NumericRangeIterator = require('../internals/numeric-range-iterator');
4
4
 
5
5
  // `Number.range` method
6
- // https://github.com/tc39/proposal-Number.range
6
+ // https://github.com/tc39/proposal-iterator.range
7
7
  // TODO: Remove from `core-js@4`
8
8
  $({ target: 'Number', stat: true, forced: true }, {
9
9
  range: function range(start, end, option) {
@@ -4,7 +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');
7
+ var getIterator = require('../internals/get-iterator-internal');
8
+ var getIteratorMethod = require('../internals/get-iterator-method-internal');
8
9
  var getMethod = require('../internals/get-method');
9
10
  var iterate = require('../internals/iterate');
10
11
  var wellKnownSymbol = require('../internals/well-known-symbol');
@@ -23,9 +24,11 @@ $({ target: 'Observable', stat: true, forced: true }, {
23
24
  return observable.subscribe(observer);
24
25
  });
25
26
  }
26
- var iterator = getIterator(x);
27
+ var iteratorMethod = getIteratorMethod(x);
28
+ // validate that x is iterable synchronously during `from()` call
29
+ if (!iteratorMethod) getIterator(x);
27
30
  return new C(function (observer) {
28
- iterate(iterator, function (it, stop) {
31
+ iterate(getIterator(x, iteratorMethod), function (it, stop) {
29
32
  observer.next(it);
30
33
  if (observer.closed) return stop();
31
34
  }, { IS_ITERATOR: true, INTERRUPTED: true });
@@ -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
+ for (var i = 0; i < allKeys.length; i++) (function (key) {
31
+ var desc = getOwnPropertyDescriptor.f(promises, key);
32
+ if (desc && desc.enumerable) {
33
+ var index = counter;
34
+ var alreadyCalled = false;
35
+ remaining++;
36
+ keys[index] = key;
37
+ values[index] = undefined;
38
+ call(promiseResolve, C, promises[key]).then(function (value) {
39
+ if (alreadyCalled) return;
40
+ alreadyCalled = true;
41
+ values[index] = value;
42
+ --remaining;
43
+ if (remaining === 0) {
44
+ var res = create(null);
45
+ for (var j = 0; j < keys.length; j++) createProperty(res, keys[j], values[j]);
46
+ resolve(res);
47
+ }
48
+ }, reject);
49
+ counter++;
50
+ }
51
+ })(allKeys[i]);
52
+ --remaining || resolve(create(null));
53
+ });
54
+ if (result.error) reject(result.value);
55
+ return capability.promise;
56
+ }
57
+ });
@@ -0,0 +1,60 @@
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
+ for (var i = 0; i < allKeys.length; i++) (function (key) {
31
+ var desc = getOwnPropertyDescriptor.f(promises, key);
32
+ if (desc && desc.enumerable) {
33
+ var createElementResolver = function (rejection) {
34
+ return function (value) {
35
+ if (alreadyCalled) return;
36
+ alreadyCalled = true;
37
+ values[index] = rejection
38
+ ? { status: 'rejected', reason: value }
39
+ : { status: 'fulfilled', value: value };
40
+ if (--remaining) return;
41
+ var res = create(null);
42
+ for (var j = 0; j < keys.length; j++) createProperty(res, keys[j], values[j]);
43
+ resolve(res);
44
+ };
45
+ };
46
+ var index = counter;
47
+ var alreadyCalled = false;
48
+ remaining++;
49
+ keys[index] = key;
50
+ values[index] = undefined;
51
+ call(promiseResolve, C, promises[key]).then(createElementResolver(false), createElementResolver(true));
52
+ counter++;
53
+ }
54
+ })(allKeys[i]);
55
+ --remaining || resolve(create(null));
56
+ });
57
+ if (result.error) reject(result.value);
58
+ return capability.promise;
59
+ }
60
+ });
@@ -86,7 +86,7 @@ var dedentStringsArray = function (template) {
86
86
  lines[lines.length - 2] = '';
87
87
  lines[lines.length - 1] = '';
88
88
  }
89
- // eslint-disable-next-line sonarjs/no-redundant-assignments -- false positive, https://github.com/SonarSource/SonarJS/issues/4767
89
+
90
90
  for (var j = 2; j < lines.length; j += 2) {
91
91
  var text = lines[j];
92
92
  var lineContainsTemplateExpression = j + 1 === lines.length && !lastSplit;
@@ -14,9 +14,11 @@ var whitespaces = /[\t\n\f\r ]+/g;
14
14
  var finalEq = /[=]{1,2}$/;
15
15
 
16
16
  var $atob = getBuiltIn('atob');
17
+ var $Array = Array;
17
18
  var fromCharCode = String.fromCharCode;
18
19
  var charAt = uncurryThis(''.charAt);
19
20
  var replace = uncurryThis(''.replace);
21
+ var join = uncurryThis([].join);
20
22
  var exec = uncurryThis(disallowed.exec);
21
23
 
22
24
  var BASIC = !!$atob && !fails(function () {
@@ -47,21 +49,28 @@ $({ global: true, bind: true, enumerable: true, forced: FORCED }, {
47
49
  // `webpack` dev server bug on IE global methods - use call(fn, global, ...)
48
50
  if (BASIC && !NO_SPACES_IGNORE && !NO_ENCODING_CHECK) return call($atob, globalThis, data);
49
51
  var string = replace(toString(data), whitespaces, '');
50
- var output = '';
51
52
  var position = 0;
52
53
  var bc = 0;
53
54
  var length, chr, bs;
54
- if (string.length % 4 === 0) {
55
+ if (!(string.length & 3)) {
55
56
  string = replace(string, finalEq, '');
56
57
  }
57
58
  length = string.length;
58
- if (length % 4 === 1 || exec(disallowed, string)) {
59
+ var lenmod = length & 3;
60
+ if (lenmod === 1 || exec(disallowed, string)) {
59
61
  throw new (getBuiltIn('DOMException'))('The string is not correctly encoded', 'InvalidCharacterError');
60
62
  }
63
+ // (length >> 2) is equivalent for length / 4 floored; * 3 then multiplies the
64
+ // number of bytes for full quanta
65
+ // lenmod is length % 4; if there's 2 or 3 bytes it's 1 or 2 bytes of extra output
66
+ // respectively, so -1, however use a ternary to ensure 0 does not get -1 onto length
67
+ var output = new $Array((length >> 2) * 3 + (lenmod ? lenmod - 1 : 0));
68
+ var outputIndex = 0;
61
69
  while (position < length) {
62
70
  chr = charAt(string, position++);
63
- bs = bc % 4 ? bs * 64 + c2i[chr] : c2i[chr];
64
- if (bc++ % 4) output += fromCharCode(255 & bs >> (-2 * bc & 6));
65
- } return output;
71
+ bs = bc & 3 ? (bs << 6) + c2i[chr] : c2i[chr];
72
+ if (bc++ & 3) output[outputIndex++] = fromCharCode(255 & bs >> (-2 * bc & 6));
73
+ }
74
+ return join(output, '');
66
75
  }
67
76
  });
@@ -10,6 +10,8 @@ var validateArgumentsLength = require('../internals/validate-arguments-length');
10
10
  var i2c = require('../internals/base64-map').i2c;
11
11
 
12
12
  var $btoa = getBuiltIn('btoa');
13
+ var $Array = Array;
14
+ var join = uncurryThis([].join);
13
15
  var charAt = uncurryThis(''.charAt);
14
16
  var charCodeAt = uncurryThis(''.charCodeAt);
15
17
 
@@ -35,7 +37,12 @@ $({ global: true, bind: true, enumerable: true, forced: !BASIC || NO_ARG_RECEIVI
35
37
  // `webpack` dev server bug on IE global methods - use call(fn, global, ...)
36
38
  if (BASIC) return call($btoa, globalThis, toString(data));
37
39
  var string = toString(data);
38
- var output = '';
40
+ // (string.length + 2) / 3) and then truncating to integer
41
+ // does the ceil automatically. << 2 will truncate the integer
42
+ // while also doing *4. ceil(length / 3) quanta, 4 bytes output
43
+ // per quanta for base64.
44
+ var output = new $Array((string.length + 2) / 3 << 2);
45
+ var outputIndex = 0;
39
46
  var position = 0;
40
47
  var map = i2c;
41
48
  var block, charCode;
@@ -45,7 +52,7 @@ $({ global: true, bind: true, enumerable: true, forced: !BASIC || NO_ARG_RECEIVI
45
52
  throw new (getBuiltIn('DOMException'))('The string contains characters outside of the Latin1 range', 'InvalidCharacterError');
46
53
  }
47
54
  block = block << 8 | charCode;
48
- output += charAt(map, 63 & block >> 8 - position % 1 * 8);
49
- } return output;
55
+ output[outputIndex++] = charAt(map, 63 & block >> 8 - position % 1 * 8);
56
+ } return join(output, '');
50
57
  }
51
58
  });
@@ -443,8 +443,8 @@ var tryToTransfer = function (rawTransfer, map) {
443
443
 
444
444
  while (i < length) {
445
445
  value = transfer[i++];
446
-
447
446
  type = classof(value);
447
+ transferred = undefined;
448
448
 
449
449
  if (type === 'ArrayBuffer' ? setHas(buffers, value) : mapHas(map, value)) {
450
450
  throw new DOMException('Duplicate transferable', DATA_CLONE_ERROR);
@@ -500,7 +500,7 @@ var tryToTransfer = function (rawTransfer, map) {
500
500
  var detachBuffers = function (buffers) {
501
501
  setIterate(buffers, function (buffer) {
502
502
  if (PROPER_STRUCTURED_CLONE_TRANSFER) {
503
- nativeRestrictedStructuredClone(buffer, { transfer: [buffer] });
503
+ nativeStructuredClone(buffer, { transfer: [buffer] });
504
504
  } else if (isCallable(buffer.transfer)) {
505
505
  buffer.transfer();
506
506
  } else if (detachTransferable) {