core-js 3.38.1 → 3.40.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 (177) hide show
  1. package/LICENSE +1 -1
  2. package/actual/error/index.js +2 -0
  3. package/actual/error/is-error.js +6 -0
  4. package/actual/iterator/drop.js +2 -4
  5. package/actual/iterator/every.js +2 -4
  6. package/actual/iterator/filter.js +2 -4
  7. package/actual/iterator/find.js +2 -4
  8. package/actual/iterator/flat-map.js +2 -4
  9. package/actual/iterator/for-each.js +2 -4
  10. package/actual/iterator/from.js +2 -7
  11. package/actual/iterator/index.js +2 -7
  12. package/actual/iterator/map.js +2 -4
  13. package/actual/iterator/reduce.js +2 -4
  14. package/actual/iterator/some.js +2 -4
  15. package/actual/iterator/take.js +2 -4
  16. package/actual/iterator/to-array.js +2 -4
  17. package/actual/iterator/to-async.js +2 -0
  18. package/actual/math/index.js +2 -0
  19. package/actual/math/sum-precise.js +6 -0
  20. package/actual/promise/index.js +1 -0
  21. package/actual/promise/try.js +3 -10
  22. package/es/index.js +14 -0
  23. package/es/iterator/drop.js +8 -0
  24. package/es/iterator/every.js +8 -0
  25. package/es/iterator/filter.js +8 -0
  26. package/es/iterator/find.js +8 -0
  27. package/es/iterator/flat-map.js +8 -0
  28. package/es/iterator/for-each.js +8 -0
  29. package/es/iterator/from.js +21 -0
  30. package/es/iterator/index.js +21 -0
  31. package/es/iterator/map.js +8 -0
  32. package/es/iterator/reduce.js +8 -0
  33. package/es/iterator/some.js +8 -0
  34. package/es/iterator/take.js +8 -0
  35. package/es/iterator/to-array.js +8 -0
  36. package/es/promise/index.js +1 -0
  37. package/es/promise/try.js +15 -0
  38. package/features/error/is-error.js +2 -0
  39. package/features/iterator/concat.js +2 -0
  40. package/features/map/get-or-insert-computed.js +2 -0
  41. package/features/map/get-or-insert.js +2 -0
  42. package/features/weak-map/get-or-insert-computed.js +2 -0
  43. package/features/weak-map/get-or-insert.js +2 -0
  44. package/full/error/is-error.js +4 -0
  45. package/full/index.js +20 -0
  46. package/full/iterator/concat.js +20 -0
  47. package/full/iterator/index.js +1 -0
  48. package/full/map/from.js +2 -0
  49. package/full/map/get-or-insert-computed.js +6 -0
  50. package/full/map/get-or-insert.js +6 -0
  51. package/full/map/group-by.js +2 -0
  52. package/full/map/index.js +3 -1
  53. package/full/map/key-by.js +2 -0
  54. package/full/map/of.js +2 -0
  55. package/full/math/index.js +0 -2
  56. package/full/math/sum-precise.js +2 -4
  57. package/full/weak-map/from.js +2 -0
  58. package/full/weak-map/get-or-insert-computed.js +6 -0
  59. package/full/weak-map/get-or-insert.js +6 -0
  60. package/full/weak-map/index.js +3 -1
  61. package/full/weak-map/of.js +2 -0
  62. package/internals/add-disposable-resource.js +7 -1
  63. package/internals/array-buffer-is-detached.js +5 -7
  64. package/internals/array-buffer.js +2 -2
  65. package/internals/error-stack-clear.js +1 -1
  66. package/internals/function-apply.js +1 -1
  67. package/internals/function-call.js +1 -1
  68. package/internals/function-uncurry-this.js +1 -0
  69. package/internals/iterator-create-proxy.js +7 -5
  70. package/internals/math-float-round.js +1 -5
  71. package/internals/math-log2.js +10 -0
  72. package/internals/math-round-ties-to-even.js +7 -0
  73. package/internals/math-scale.js +1 -1
  74. package/internals/native-raw-json.js +2 -0
  75. package/internals/object-assign.js +1 -0
  76. package/internals/object-prototype-accessors-forced.js +1 -1
  77. package/internals/set-method-accept-set-like.js +25 -2
  78. package/internals/shared-store.js +3 -3
  79. package/internals/typed-array-constructors-require-wrappers.js +1 -1
  80. package/internals/typed-array-from-same-type-and-list.js +7 -0
  81. package/internals/use-symbol-as-uid.js +3 -3
  82. package/modules/es.array-buffer.detached.js +2 -0
  83. package/modules/es.array-buffer.slice.js +1 -2
  84. package/modules/es.iterator.constructor.js +65 -0
  85. package/modules/es.iterator.drop.js +36 -0
  86. package/modules/es.iterator.every.js +20 -0
  87. package/modules/es.iterator.filter.js +35 -0
  88. package/modules/es.iterator.find.js +20 -0
  89. package/modules/es.iterator.flat-map.js +45 -0
  90. package/modules/es.iterator.for-each.js +20 -0
  91. package/modules/es.iterator.from.js +24 -0
  92. package/modules/es.iterator.map.js +10 -0
  93. package/modules/es.iterator.reduce.js +32 -0
  94. package/modules/es.iterator.some.js +20 -0
  95. package/modules/es.iterator.take.js +33 -0
  96. package/modules/es.iterator.to-array.js +17 -0
  97. package/modules/es.map.group-by.js +1 -1
  98. package/modules/es.math.log2.js +2 -6
  99. package/modules/es.object.from-entries.js +1 -1
  100. package/modules/es.object.group-by.js +1 -1
  101. package/modules/es.promise.constructor.js +2 -0
  102. package/modules/es.promise.try.js +33 -0
  103. package/modules/es.promise.with-resolvers.js +1 -1
  104. package/modules/es.regexp.constructor.js +1 -1
  105. package/modules/es.set.difference.v2.js +6 -2
  106. package/modules/es.set.intersection.v2.js +5 -3
  107. package/modules/es.set.is-disjoint-from.v2.js +6 -2
  108. package/modules/es.set.is-subset-of.v2.js +6 -2
  109. package/modules/es.set.is-superset-of.v2.js +6 -2
  110. package/modules/es.set.symmetric-difference.v2.js +1 -1
  111. package/modules/es.set.union.v2.js +1 -1
  112. package/modules/es.string.is-well-formed.js +1 -1
  113. package/modules/es.string.to-well-formed.js +1 -1
  114. package/modules/es.symbol.description.js +1 -1
  115. package/modules/es.typed-array.filter.js +2 -2
  116. package/modules/es.typed-array.map.js +2 -2
  117. package/modules/es.typed-array.slice.js +2 -2
  118. package/modules/es.typed-array.subarray.js +2 -2
  119. package/modules/esnext.array.from-async.js +1 -0
  120. package/modules/esnext.data-view.get-float16.js +17 -2
  121. package/modules/esnext.data-view.set-float16.js +37 -4
  122. package/modules/esnext.error.is-error.js +36 -0
  123. package/modules/esnext.iterator.concat.js +57 -0
  124. package/modules/esnext.iterator.constructor.js +2 -64
  125. package/modules/esnext.iterator.drop.js +2 -35
  126. package/modules/esnext.iterator.every.js +2 -19
  127. package/modules/esnext.iterator.filter.js +2 -34
  128. package/modules/esnext.iterator.find.js +2 -19
  129. package/modules/esnext.iterator.flat-map.js +2 -44
  130. package/modules/esnext.iterator.for-each.js +2 -19
  131. package/modules/esnext.iterator.from.js +2 -23
  132. package/modules/esnext.iterator.map.js +2 -9
  133. package/modules/esnext.iterator.reduce.js +2 -31
  134. package/modules/esnext.iterator.some.js +2 -19
  135. package/modules/esnext.iterator.take.js +2 -32
  136. package/modules/esnext.iterator.to-array.js +2 -16
  137. package/modules/esnext.map.get-or-insert-computed.js +24 -0
  138. package/modules/esnext.map.get-or-insert.js +18 -0
  139. package/modules/esnext.math.f16round.js +10 -2
  140. package/modules/esnext.math.sum-precise.js +1 -1
  141. package/modules/esnext.promise.try.js +2 -32
  142. package/modules/esnext.regexp.escape.js +1 -0
  143. package/modules/esnext.string.dedent.js +1 -1
  144. package/modules/esnext.typed-array.filter-out.js +2 -2
  145. package/modules/esnext.typed-array.filter-reject.js +2 -2
  146. package/modules/esnext.typed-array.group-by.js +2 -2
  147. package/modules/esnext.typed-array.to-spliced.js +1 -17
  148. package/modules/esnext.weak-map.get-or-insert-computed.js +23 -0
  149. package/modules/esnext.weak-map.get-or-insert.js +18 -0
  150. package/modules/web.structured-clone.js +4 -0
  151. package/package.json +1 -1
  152. package/proposals/is-error.js +3 -0
  153. package/proposals/iterator-sequencing.js +3 -0
  154. package/proposals/map-upsert-v4.js +6 -0
  155. package/stable/index.js +14 -0
  156. package/stable/iterator/drop.js +4 -0
  157. package/stable/iterator/every.js +4 -0
  158. package/stable/iterator/filter.js +4 -0
  159. package/stable/iterator/find.js +4 -0
  160. package/stable/iterator/flat-map.js +4 -0
  161. package/stable/iterator/for-each.js +4 -0
  162. package/stable/iterator/from.js +5 -0
  163. package/stable/iterator/index.js +5 -0
  164. package/stable/iterator/map.js +4 -0
  165. package/stable/iterator/reduce.js +4 -0
  166. package/stable/iterator/some.js +4 -0
  167. package/stable/iterator/take.js +4 -0
  168. package/stable/iterator/to-array.js +4 -0
  169. package/stable/promise/try.js +4 -0
  170. package/stage/1.js +0 -1
  171. package/stage/2.7.js +1 -1
  172. package/stage/2.js +3 -1
  173. package/stage/3.js +2 -2
  174. package/stage/4.js +2 -0
  175. package/internals/math-f16round.js +0 -12
  176. package/internals/typed-array-from-species-and-list.js +0 -7
  177. package/internals/typed-array-species-constructor.js +0 -12
@@ -0,0 +1,45 @@
1
+ 'use strict';
2
+ var $ = require('../internals/export');
3
+ var call = require('../internals/function-call');
4
+ var aCallable = require('../internals/a-callable');
5
+ var anObject = require('../internals/an-object');
6
+ var getIteratorDirect = require('../internals/get-iterator-direct');
7
+ var getIteratorFlattenable = require('../internals/get-iterator-flattenable');
8
+ var createIteratorProxy = require('../internals/iterator-create-proxy');
9
+ var iteratorClose = require('../internals/iterator-close');
10
+ var IS_PURE = require('../internals/is-pure');
11
+
12
+ var IteratorProxy = createIteratorProxy(function () {
13
+ var iterator = this.iterator;
14
+ var mapper = this.mapper;
15
+ var result, inner;
16
+
17
+ while (true) {
18
+ if (inner = this.inner) try {
19
+ result = anObject(call(inner.next, inner.iterator));
20
+ if (!result.done) return result.value;
21
+ this.inner = null;
22
+ } catch (error) { iteratorClose(iterator, 'throw', error); }
23
+
24
+ result = anObject(call(this.next, iterator));
25
+
26
+ if (this.done = !!result.done) return;
27
+
28
+ try {
29
+ this.inner = getIteratorFlattenable(mapper(result.value, this.counter++), false);
30
+ } catch (error) { iteratorClose(iterator, 'throw', error); }
31
+ }
32
+ });
33
+
34
+ // `Iterator.prototype.flatMap` method
35
+ // https://tc39.es/ecma262/#sec-iterator.prototype.flatmap
36
+ $({ target: 'Iterator', proto: true, real: true, forced: IS_PURE }, {
37
+ flatMap: function flatMap(mapper) {
38
+ anObject(this);
39
+ aCallable(mapper);
40
+ return new IteratorProxy(getIteratorDirect(this), {
41
+ mapper: mapper,
42
+ inner: null
43
+ });
44
+ }
45
+ });
@@ -0,0 +1,20 @@
1
+ 'use strict';
2
+ var $ = require('../internals/export');
3
+ var iterate = require('../internals/iterate');
4
+ var aCallable = require('../internals/a-callable');
5
+ var anObject = require('../internals/an-object');
6
+ var getIteratorDirect = require('../internals/get-iterator-direct');
7
+
8
+ // `Iterator.prototype.forEach` method
9
+ // https://tc39.es/ecma262/#sec-iterator.prototype.foreach
10
+ $({ target: 'Iterator', proto: true, real: true }, {
11
+ forEach: function forEach(fn) {
12
+ anObject(this);
13
+ aCallable(fn);
14
+ var record = getIteratorDirect(this);
15
+ var counter = 0;
16
+ iterate(record, function (value) {
17
+ fn(value, counter++);
18
+ }, { IS_RECORD: true });
19
+ }
20
+ });
@@ -0,0 +1,24 @@
1
+ 'use strict';
2
+ var $ = require('../internals/export');
3
+ var call = require('../internals/function-call');
4
+ var toObject = require('../internals/to-object');
5
+ var isPrototypeOf = require('../internals/object-is-prototype-of');
6
+ var IteratorPrototype = require('../internals/iterators-core').IteratorPrototype;
7
+ var createIteratorProxy = require('../internals/iterator-create-proxy');
8
+ var getIteratorFlattenable = require('../internals/get-iterator-flattenable');
9
+ var IS_PURE = require('../internals/is-pure');
10
+
11
+ var IteratorProxy = createIteratorProxy(function () {
12
+ return call(this.next, this.iterator);
13
+ }, true);
14
+
15
+ // `Iterator.from` method
16
+ // https://tc39.es/ecma262/#sec-iterator.from
17
+ $({ target: 'Iterator', stat: true, forced: IS_PURE }, {
18
+ from: function from(O) {
19
+ var iteratorRecord = getIteratorFlattenable(typeof O == 'string' ? toObject(O) : O, true);
20
+ return isPrototypeOf(IteratorPrototype, iteratorRecord.iterator)
21
+ ? iteratorRecord.iterator
22
+ : new IteratorProxy(iteratorRecord);
23
+ }
24
+ });
@@ -0,0 +1,10 @@
1
+ 'use strict';
2
+ var $ = require('../internals/export');
3
+ var map = require('../internals/iterator-map');
4
+ var IS_PURE = require('../internals/is-pure');
5
+
6
+ // `Iterator.prototype.map` method
7
+ // https://tc39.es/ecma262/#sec-iterator.prototype.map
8
+ $({ target: 'Iterator', proto: true, real: true, forced: IS_PURE }, {
9
+ map: map
10
+ });
@@ -0,0 +1,32 @@
1
+ 'use strict';
2
+ var $ = require('../internals/export');
3
+ var iterate = require('../internals/iterate');
4
+ var aCallable = require('../internals/a-callable');
5
+ var anObject = require('../internals/an-object');
6
+ var getIteratorDirect = require('../internals/get-iterator-direct');
7
+
8
+ var $TypeError = TypeError;
9
+
10
+ // `Iterator.prototype.reduce` method
11
+ // https://tc39.es/ecma262/#sec-iterator.prototype.reduce
12
+ $({ target: 'Iterator', proto: true, real: true }, {
13
+ reduce: function reduce(reducer /* , initialValue */) {
14
+ anObject(this);
15
+ aCallable(reducer);
16
+ var record = getIteratorDirect(this);
17
+ var noInitial = arguments.length < 2;
18
+ var accumulator = noInitial ? undefined : arguments[1];
19
+ var counter = 0;
20
+ iterate(record, function (value) {
21
+ if (noInitial) {
22
+ noInitial = false;
23
+ accumulator = value;
24
+ } else {
25
+ accumulator = reducer(accumulator, value, counter);
26
+ }
27
+ counter++;
28
+ }, { IS_RECORD: true });
29
+ if (noInitial) throw new $TypeError('Reduce of empty iterator with no initial value');
30
+ return accumulator;
31
+ }
32
+ });
@@ -0,0 +1,20 @@
1
+ 'use strict';
2
+ var $ = require('../internals/export');
3
+ var iterate = require('../internals/iterate');
4
+ var aCallable = require('../internals/a-callable');
5
+ var anObject = require('../internals/an-object');
6
+ var getIteratorDirect = require('../internals/get-iterator-direct');
7
+
8
+ // `Iterator.prototype.some` method
9
+ // https://tc39.es/ecma262/#sec-iterator.prototype.some
10
+ $({ target: 'Iterator', proto: true, real: true }, {
11
+ some: function some(predicate) {
12
+ anObject(this);
13
+ aCallable(predicate);
14
+ var record = getIteratorDirect(this);
15
+ var counter = 0;
16
+ return iterate(record, function (value, stop) {
17
+ if (predicate(value, counter++)) return stop();
18
+ }, { IS_RECORD: true, INTERRUPTED: true }).stopped;
19
+ }
20
+ });
@@ -0,0 +1,33 @@
1
+ 'use strict';
2
+ var $ = require('../internals/export');
3
+ var call = require('../internals/function-call');
4
+ var anObject = require('../internals/an-object');
5
+ var getIteratorDirect = require('../internals/get-iterator-direct');
6
+ var notANaN = require('../internals/not-a-nan');
7
+ var toPositiveInteger = require('../internals/to-positive-integer');
8
+ var createIteratorProxy = require('../internals/iterator-create-proxy');
9
+ var iteratorClose = require('../internals/iterator-close');
10
+ var IS_PURE = require('../internals/is-pure');
11
+
12
+ var IteratorProxy = createIteratorProxy(function () {
13
+ var iterator = this.iterator;
14
+ if (!this.remaining--) {
15
+ this.done = true;
16
+ return iteratorClose(iterator, 'normal', undefined);
17
+ }
18
+ var result = anObject(call(this.next, iterator));
19
+ var done = this.done = !!result.done;
20
+ if (!done) return result.value;
21
+ });
22
+
23
+ // `Iterator.prototype.take` method
24
+ // https://tc39.es/ecma262/#sec-iterator.prototype.take
25
+ $({ target: 'Iterator', proto: true, real: true, forced: IS_PURE }, {
26
+ take: function take(limit) {
27
+ anObject(this);
28
+ var remaining = toPositiveInteger(notANaN(+limit));
29
+ return new IteratorProxy(getIteratorDirect(this), {
30
+ remaining: remaining
31
+ });
32
+ }
33
+ });
@@ -0,0 +1,17 @@
1
+ 'use strict';
2
+ var $ = require('../internals/export');
3
+ var anObject = require('../internals/an-object');
4
+ var iterate = require('../internals/iterate');
5
+ var getIteratorDirect = require('../internals/get-iterator-direct');
6
+
7
+ var push = [].push;
8
+
9
+ // `Iterator.prototype.toArray` method
10
+ // https://tc39.es/ecma262/#sec-iterator.prototype.toarray
11
+ $({ target: 'Iterator', proto: true, real: true }, {
12
+ toArray: function toArray() {
13
+ var result = [];
14
+ iterate(getIteratorDirect(anObject(this)), push, { that: result, IS_RECORD: true });
15
+ return result;
16
+ }
17
+ });
@@ -21,7 +21,7 @@ var DOES_NOT_WORK_WITH_PRIMITIVES = IS_PURE || fails(function () {
21
21
  });
22
22
 
23
23
  // `Map.groupBy` method
24
- // https://github.com/tc39/proposal-array-grouping
24
+ // https://tc39.es/ecma262/#sec-map.groupby
25
25
  $({ target: 'Map', stat: true, forced: IS_PURE || DOES_NOT_WORK_WITH_PRIMITIVES }, {
26
26
  groupBy: function groupBy(items, callbackfn) {
27
27
  requireObjectCoercible(items);
@@ -1,13 +1,9 @@
1
1
  'use strict';
2
2
  var $ = require('../internals/export');
3
-
4
- var log = Math.log;
5
- var LN2 = Math.LN2;
3
+ var log2 = require('../internals/math-log2');
6
4
 
7
5
  // `Math.log2` method
8
6
  // https://tc39.es/ecma262/#sec-math.log2
9
7
  $({ target: 'Math', stat: true }, {
10
- log2: function log2(x) {
11
- return log(x) / LN2;
12
- }
8
+ log2: log2
13
9
  });
@@ -4,7 +4,7 @@ var iterate = require('../internals/iterate');
4
4
  var createProperty = require('../internals/create-property');
5
5
 
6
6
  // `Object.fromEntries` method
7
- // https://github.com/tc39/proposal-object-from-entries
7
+ // https://tc39.es/ecma262/#sec-object.fromentries
8
8
  $({ target: 'Object', stat: true }, {
9
9
  fromEntries: function fromEntries(iterable) {
10
10
  var obj = {};
@@ -20,7 +20,7 @@ var DOES_NOT_WORK_WITH_PRIMITIVES = !nativeGroupBy || fails(function () {
20
20
  });
21
21
 
22
22
  // `Object.groupBy` method
23
- // https://github.com/tc39/proposal-array-grouping
23
+ // https://tc39.es/ecma262/#sec-object.groupby
24
24
  $({ target: 'Object', stat: true, forced: DOES_NOT_WORK_WITH_PRIMITIVES }, {
25
25
  groupBy: function groupBy(items, callbackfn) {
26
26
  requireObjectCoercible(items);
@@ -280,6 +280,8 @@ if (FORCED_PROMISE_CONSTRUCTOR) {
280
280
  }
281
281
  }
282
282
 
283
+ // `Promise` constructor
284
+ // https://tc39.es/ecma262/#sec-promise-executor
283
285
  $({ global: true, constructor: true, wrap: true, forced: FORCED_PROMISE_CONSTRUCTOR }, {
284
286
  Promise: PromiseConstructor
285
287
  });
@@ -0,0 +1,33 @@
1
+ 'use strict';
2
+ var $ = require('../internals/export');
3
+ var globalThis = require('../internals/global-this');
4
+ var apply = require('../internals/function-apply');
5
+ var slice = require('../internals/array-slice');
6
+ var newPromiseCapabilityModule = require('../internals/new-promise-capability');
7
+ var aCallable = require('../internals/a-callable');
8
+ var perform = require('../internals/perform');
9
+
10
+ var Promise = globalThis.Promise;
11
+
12
+ var ACCEPT_ARGUMENTS = false;
13
+ // Avoiding the use of polyfills of the previous iteration of this proposal
14
+ // that does not accept arguments of the callback
15
+ var FORCED = !Promise || !Promise['try'] || perform(function () {
16
+ Promise['try'](function (argument) {
17
+ ACCEPT_ARGUMENTS = argument === 8;
18
+ }, 8);
19
+ }).error || !ACCEPT_ARGUMENTS;
20
+
21
+ // `Promise.try` method
22
+ // https://tc39.es/ecma262/#sec-promise.try
23
+ $({ target: 'Promise', stat: true, forced: FORCED }, {
24
+ 'try': function (callbackfn /* , ...args */) {
25
+ var args = arguments.length > 1 ? slice(arguments, 1) : [];
26
+ var promiseCapability = newPromiseCapabilityModule.f(this);
27
+ var result = perform(function () {
28
+ return apply(aCallable(callbackfn), undefined, args);
29
+ });
30
+ (result.error ? promiseCapability.reject : promiseCapability.resolve)(result.value);
31
+ return promiseCapability.promise;
32
+ }
33
+ });
@@ -3,7 +3,7 @@ var $ = require('../internals/export');
3
3
  var newPromiseCapabilityModule = require('../internals/new-promise-capability');
4
4
 
5
5
  // `Promise.withResolvers` method
6
- // https://github.com/tc39/proposal-promise-with-resolvers
6
+ // https://tc39.es/ecma262/#sec-promise.withResolvers
7
7
  $({ target: 'Promise', stat: true }, {
8
8
  withResolvers: function withResolvers() {
9
9
  var promiseCapability = newPromiseCapabilityModule.f(this);
@@ -46,7 +46,7 @@ var BASE_FORCED = DESCRIPTORS &&
46
46
  (!CORRECT_NEW || MISSED_STICKY || UNSUPPORTED_DOT_ALL || UNSUPPORTED_NCG || fails(function () {
47
47
  re2[MATCH] = false;
48
48
  // RegExp constructor can alter flags and IsRegExp works correct with @@match
49
- // eslint-disable-next-line sonar/inconsistent-function-call -- required for testing
49
+ // eslint-disable-next-line sonarjs/inconsistent-function-call -- required for testing
50
50
  return NativeRegExp(re1) !== re1 || NativeRegExp(re2) === re2 || String(NativeRegExp(re1, 'i')) !== '/a/i';
51
51
  }));
52
52
 
@@ -3,8 +3,12 @@ var $ = require('../internals/export');
3
3
  var difference = require('../internals/set-difference');
4
4
  var setMethodAcceptSetLike = require('../internals/set-method-accept-set-like');
5
5
 
6
+ var INCORRECT = !setMethodAcceptSetLike('difference', function (result) {
7
+ return result.size === 0;
8
+ });
9
+
6
10
  // `Set.prototype.difference` method
7
- // https://github.com/tc39/proposal-set-methods
8
- $({ target: 'Set', proto: true, real: true, forced: !setMethodAcceptSetLike('difference') }, {
11
+ // https://tc39.es/ecma262/#sec-set.prototype.difference
12
+ $({ target: 'Set', proto: true, real: true, forced: INCORRECT }, {
9
13
  difference: difference
10
14
  });
@@ -4,13 +4,15 @@ var fails = require('../internals/fails');
4
4
  var intersection = require('../internals/set-intersection');
5
5
  var setMethodAcceptSetLike = require('../internals/set-method-accept-set-like');
6
6
 
7
- var INCORRECT = !setMethodAcceptSetLike('intersection') || fails(function () {
8
- // eslint-disable-next-line es/no-array-from, es/no-set -- testing
7
+ var INCORRECT = !setMethodAcceptSetLike('intersection', function (result) {
8
+ return result.size === 2 && result.has(1) && result.has(2);
9
+ }) || fails(function () {
10
+ // eslint-disable-next-line es/no-array-from, es/no-set, es/no-set-prototype-intersection -- testing
9
11
  return String(Array.from(new Set([1, 2, 3]).intersection(new Set([3, 2])))) !== '3,2';
10
12
  });
11
13
 
12
14
  // `Set.prototype.intersection` method
13
- // https://github.com/tc39/proposal-set-methods
15
+ // https://tc39.es/ecma262/#sec-set.prototype.intersection
14
16
  $({ target: 'Set', proto: true, real: true, forced: INCORRECT }, {
15
17
  intersection: intersection
16
18
  });
@@ -3,8 +3,12 @@ var $ = require('../internals/export');
3
3
  var isDisjointFrom = require('../internals/set-is-disjoint-from');
4
4
  var setMethodAcceptSetLike = require('../internals/set-method-accept-set-like');
5
5
 
6
+ var INCORRECT = !setMethodAcceptSetLike('isDisjointFrom', function (result) {
7
+ return !result;
8
+ });
9
+
6
10
  // `Set.prototype.isDisjointFrom` method
7
- // https://github.com/tc39/proposal-set-methods
8
- $({ target: 'Set', proto: true, real: true, forced: !setMethodAcceptSetLike('isDisjointFrom') }, {
11
+ // https://tc39.es/ecma262/#sec-set.prototype.isdisjointfrom
12
+ $({ target: 'Set', proto: true, real: true, forced: INCORRECT }, {
9
13
  isDisjointFrom: isDisjointFrom
10
14
  });
@@ -3,8 +3,12 @@ var $ = require('../internals/export');
3
3
  var isSubsetOf = require('../internals/set-is-subset-of');
4
4
  var setMethodAcceptSetLike = require('../internals/set-method-accept-set-like');
5
5
 
6
+ var INCORRECT = !setMethodAcceptSetLike('isSubsetOf', function (result) {
7
+ return result;
8
+ });
9
+
6
10
  // `Set.prototype.isSubsetOf` method
7
- // https://github.com/tc39/proposal-set-methods
8
- $({ target: 'Set', proto: true, real: true, forced: !setMethodAcceptSetLike('isSubsetOf') }, {
11
+ // https://tc39.es/ecma262/#sec-set.prototype.issubsetof
12
+ $({ target: 'Set', proto: true, real: true, forced: INCORRECT }, {
9
13
  isSubsetOf: isSubsetOf
10
14
  });
@@ -3,8 +3,12 @@ var $ = require('../internals/export');
3
3
  var isSupersetOf = require('../internals/set-is-superset-of');
4
4
  var setMethodAcceptSetLike = require('../internals/set-method-accept-set-like');
5
5
 
6
+ var INCORRECT = !setMethodAcceptSetLike('isSupersetOf', function (result) {
7
+ return !result;
8
+ });
9
+
6
10
  // `Set.prototype.isSupersetOf` method
7
- // https://github.com/tc39/proposal-set-methods
8
- $({ target: 'Set', proto: true, real: true, forced: !setMethodAcceptSetLike('isSupersetOf') }, {
11
+ // https://tc39.es/ecma262/#sec-set.prototype.issupersetof
12
+ $({ target: 'Set', proto: true, real: true, forced: INCORRECT }, {
9
13
  isSupersetOf: isSupersetOf
10
14
  });
@@ -4,7 +4,7 @@ var symmetricDifference = require('../internals/set-symmetric-difference');
4
4
  var setMethodAcceptSetLike = require('../internals/set-method-accept-set-like');
5
5
 
6
6
  // `Set.prototype.symmetricDifference` method
7
- // https://github.com/tc39/proposal-set-methods
7
+ // https://tc39.es/ecma262/#sec-set.prototype.symmetricdifference
8
8
  $({ target: 'Set', proto: true, real: true, forced: !setMethodAcceptSetLike('symmetricDifference') }, {
9
9
  symmetricDifference: symmetricDifference
10
10
  });
@@ -4,7 +4,7 @@ var union = require('../internals/set-union');
4
4
  var setMethodAcceptSetLike = require('../internals/set-method-accept-set-like');
5
5
 
6
6
  // `Set.prototype.union` method
7
- // https://github.com/tc39/proposal-set-methods
7
+ // https://tc39.es/ecma262/#sec-set.prototype.union
8
8
  $({ target: 'Set', proto: true, real: true, forced: !setMethodAcceptSetLike('union') }, {
9
9
  union: union
10
10
  });
@@ -7,7 +7,7 @@ var toString = require('../internals/to-string');
7
7
  var charCodeAt = uncurryThis(''.charCodeAt);
8
8
 
9
9
  // `String.prototype.isWellFormed` method
10
- // https://github.com/tc39/proposal-is-usv-string
10
+ // https://tc39.es/ecma262/#sec-string.prototype.iswellformed
11
11
  $({ target: 'String', proto: true }, {
12
12
  isWellFormed: function isWellFormed() {
13
13
  var S = toString(requireObjectCoercible(this));
@@ -20,7 +20,7 @@ var TO_STRING_CONVERSION_BUG = $toWellFormed && fails(function () {
20
20
  });
21
21
 
22
22
  // `String.prototype.toWellFormed` method
23
- // https://github.com/tc39/proposal-is-usv-string
23
+ // https://tc39.es/ecma262/#sec-string.prototype.towellformed
24
24
  $({ target: 'String', proto: true, forced: TO_STRING_CONVERSION_BUG }, {
25
25
  toWellFormed: function toWellFormed() {
26
26
  var S = toString(requireObjectCoercible(this));
@@ -24,7 +24,7 @@ if (DESCRIPTORS && isCallable(NativeSymbol) && (!('description' in SymbolPrototy
24
24
  var SymbolWrapper = function Symbol() {
25
25
  var description = arguments.length < 1 || arguments[0] === undefined ? undefined : toString(arguments[0]);
26
26
  var result = isPrototypeOf(SymbolPrototype, this)
27
- // eslint-disable-next-line sonar/inconsistent-function-call -- ok
27
+ // eslint-disable-next-line sonarjs/inconsistent-function-call -- ok
28
28
  ? new NativeSymbol(description)
29
29
  // in Edge 13, String(Symbol(undefined)) === 'Symbol(undefined)'
30
30
  : description === undefined ? NativeSymbol() : NativeSymbol(description);
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
  var ArrayBufferViewCore = require('../internals/array-buffer-view-core');
3
3
  var $filter = require('../internals/array-iteration').filter;
4
- var fromSpeciesAndList = require('../internals/typed-array-from-species-and-list');
4
+ var fromSameTypeAndList = require('../internals/typed-array-from-same-type-and-list');
5
5
 
6
6
  var aTypedArray = ArrayBufferViewCore.aTypedArray;
7
7
  var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;
@@ -10,5 +10,5 @@ var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;
10
10
  // https://tc39.es/ecma262/#sec-%typedarray%.prototype.filter
11
11
  exportTypedArrayMethod('filter', function filter(callbackfn /* , thisArg */) {
12
12
  var list = $filter(aTypedArray(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);
13
- return fromSpeciesAndList(this, list);
13
+ return fromSameTypeAndList(this, list);
14
14
  });
@@ -1,15 +1,15 @@
1
1
  'use strict';
2
2
  var ArrayBufferViewCore = require('../internals/array-buffer-view-core');
3
3
  var $map = require('../internals/array-iteration').map;
4
- var typedArraySpeciesConstructor = require('../internals/typed-array-species-constructor');
5
4
 
6
5
  var aTypedArray = ArrayBufferViewCore.aTypedArray;
6
+ var getTypedArrayConstructor = ArrayBufferViewCore.getTypedArrayConstructor;
7
7
  var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;
8
8
 
9
9
  // `%TypedArray%.prototype.map` method
10
10
  // https://tc39.es/ecma262/#sec-%typedarray%.prototype.map
11
11
  exportTypedArrayMethod('map', function map(mapfn /* , thisArg */) {
12
12
  return $map(aTypedArray(this), mapfn, arguments.length > 1 ? arguments[1] : undefined, function (O, length) {
13
- return new (typedArraySpeciesConstructor(O))(length);
13
+ return new (getTypedArrayConstructor(O))(length);
14
14
  });
15
15
  });
@@ -1,10 +1,10 @@
1
1
  'use strict';
2
2
  var ArrayBufferViewCore = require('../internals/array-buffer-view-core');
3
- var typedArraySpeciesConstructor = require('../internals/typed-array-species-constructor');
4
3
  var fails = require('../internals/fails');
5
4
  var arraySlice = require('../internals/array-slice');
6
5
 
7
6
  var aTypedArray = ArrayBufferViewCore.aTypedArray;
7
+ var getTypedArrayConstructor = ArrayBufferViewCore.getTypedArrayConstructor;
8
8
  var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;
9
9
 
10
10
  var FORCED = fails(function () {
@@ -16,7 +16,7 @@ var FORCED = fails(function () {
16
16
  // https://tc39.es/ecma262/#sec-%typedarray%.prototype.slice
17
17
  exportTypedArrayMethod('slice', function slice(start, end) {
18
18
  var list = arraySlice(aTypedArray(this), start, end);
19
- var C = typedArraySpeciesConstructor(this);
19
+ var C = getTypedArrayConstructor(this);
20
20
  var index = 0;
21
21
  var length = list.length;
22
22
  var result = new C(length);
@@ -2,9 +2,9 @@
2
2
  var ArrayBufferViewCore = require('../internals/array-buffer-view-core');
3
3
  var toLength = require('../internals/to-length');
4
4
  var toAbsoluteIndex = require('../internals/to-absolute-index');
5
- var typedArraySpeciesConstructor = require('../internals/typed-array-species-constructor');
6
5
 
7
6
  var aTypedArray = ArrayBufferViewCore.aTypedArray;
7
+ var getTypedArrayConstructor = ArrayBufferViewCore.getTypedArrayConstructor;
8
8
  var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;
9
9
 
10
10
  // `%TypedArray%.prototype.subarray` method
@@ -13,7 +13,7 @@ exportTypedArrayMethod('subarray', function subarray(begin, end) {
13
13
  var O = aTypedArray(this);
14
14
  var length = O.length;
15
15
  var beginIndex = toAbsoluteIndex(begin, length);
16
- var C = typedArraySpeciesConstructor(O);
16
+ var C = getTypedArrayConstructor(O);
17
17
  return new C(
18
18
  O.buffer,
19
19
  O.byteOffset + beginIndex * O.BYTES_PER_ELEMENT,
@@ -3,6 +3,7 @@ var $ = require('../internals/export');
3
3
  var fromAsync = require('../internals/array-from-async');
4
4
  var fails = require('../internals/fails');
5
5
 
6
+ // eslint-disable-next-line es/no-nonstandard-array-properties -- safe
6
7
  var nativeFromAsync = Array.fromAsync;
7
8
  // https://bugs.webkit.org/show_bug.cgi?id=271703
8
9
  var INCORRECT_CONSTRUCTURING = !nativeFromAsync || fails(function () {
@@ -1,7 +1,22 @@
1
1
  'use strict';
2
2
  var $ = require('../internals/export');
3
3
  var uncurryThis = require('../internals/function-uncurry-this');
4
- var unpackIEEE754 = require('../internals/ieee754').unpack;
4
+
5
+ var pow = Math.pow;
6
+
7
+ var EXP_MASK16 = 31; // 2 ** 5 - 1
8
+ var SIGNIFICAND_MASK16 = 1023; // 2 ** 10 - 1
9
+ var MIN_SUBNORMAL16 = pow(2, -24); // 2 ** -10 * 2 ** -14
10
+ var SIGNIFICAND_DENOM16 = 0.0009765625; // 2 ** -10
11
+
12
+ var unpackFloat16 = function (bytes) {
13
+ var sign = bytes >>> 15;
14
+ var exponent = bytes >>> 10 & EXP_MASK16;
15
+ var significand = bytes & SIGNIFICAND_MASK16;
16
+ if (exponent === EXP_MASK16) return significand === 0 ? (sign === 0 ? Infinity : -Infinity) : NaN;
17
+ if (exponent === 0) return significand * (sign === 0 ? MIN_SUBNORMAL16 : -MIN_SUBNORMAL16);
18
+ return pow(2, exponent - 15) * (sign === 0 ? 1 + significand * SIGNIFICAND_DENOM16 : -1 - significand * SIGNIFICAND_DENOM16);
19
+ };
5
20
 
6
21
  // eslint-disable-next-line es/no-typed-arrays -- safe
7
22
  var getUint16 = uncurryThis(DataView.prototype.getUint16);
@@ -11,6 +26,6 @@ var getUint16 = uncurryThis(DataView.prototype.getUint16);
11
26
  $({ target: 'DataView', proto: true }, {
12
27
  getFloat16: function getFloat16(byteOffset /* , littleEndian */) {
13
28
  var uint16 = getUint16(this, byteOffset, arguments.length > 1 ? arguments[1] : false);
14
- return unpackIEEE754([uint16 & 0xFF, uint16 >> 8 & 0xFF], 10);
29
+ return unpackFloat16(uint16);
15
30
  }
16
31
  });
@@ -3,8 +3,41 @@ var $ = require('../internals/export');
3
3
  var uncurryThis = require('../internals/function-uncurry-this');
4
4
  var aDataView = require('../internals/a-data-view');
5
5
  var toIndex = require('../internals/to-index');
6
- var packIEEE754 = require('../internals/ieee754').pack;
7
- var f16round = require('../internals/math-f16round');
6
+ // TODO: Replace with module dependency in `core-js@4`
7
+ var log2 = require('../internals/math-log2');
8
+ var roundTiesToEven = require('../internals/math-round-ties-to-even');
9
+
10
+ var pow = Math.pow;
11
+
12
+ var MIN_INFINITY16 = 65520; // (2 - 2 ** -11) * 2 ** 15
13
+ var MIN_NORMAL16 = 0.000061005353927612305; // (1 - 2 ** -11) * 2 ** -14
14
+ var REC_MIN_SUBNORMAL16 = 16777216; // 2 ** 10 * 2 ** 14
15
+ var REC_SIGNIFICAND_DENOM16 = 1024; // 2 ** 10;
16
+
17
+ var packFloat16 = function (value) {
18
+ // eslint-disable-next-line no-self-compare -- NaN check
19
+ if (value !== value) return 0x7E00; // NaN
20
+ if (value === 0) return (1 / value === -Infinity) << 15; // +0 or -0
21
+
22
+ var neg = value < 0;
23
+ if (neg) value = -value;
24
+ if (value >= MIN_INFINITY16) return neg << 15 | 0x7C00; // Infinity
25
+ if (value < MIN_NORMAL16) return neg << 15 | roundTiesToEven(value * REC_MIN_SUBNORMAL16); // subnormal
26
+
27
+ // normal
28
+ var exponent = log2(value) | 0;
29
+ if (exponent === -15) {
30
+ // we round from a value between 2 ** -15 * (1 + 1022/1024) (the largest subnormal) and 2 ** -14 * (1 + 0/1024) (the smallest normal)
31
+ // to the latter (former impossible because of the subnormal check above)
32
+ return neg << 15 | REC_SIGNIFICAND_DENOM16;
33
+ }
34
+ var significand = roundTiesToEven((value * pow(2, -exponent) - 1) * REC_SIGNIFICAND_DENOM16);
35
+ if (significand === REC_SIGNIFICAND_DENOM16) {
36
+ // we round from a value between 2 ** n * (1 + 1023/1024) and 2 ** (n + 1) * (1 + 0/1024) to the latter
37
+ return neg << 15 | exponent + 16 << 10;
38
+ }
39
+ return neg << 15 | exponent + 15 << 10 | significand;
40
+ };
8
41
 
9
42
  // eslint-disable-next-line es/no-typed-arrays -- safe
10
43
  var setUint16 = uncurryThis(DataView.prototype.setUint16);
@@ -15,7 +48,7 @@ $({ target: 'DataView', proto: true }, {
15
48
  setFloat16: function setFloat16(byteOffset, value /* , littleEndian */) {
16
49
  aDataView(this);
17
50
  var offset = toIndex(byteOffset);
18
- var bytes = packIEEE754(f16round(value), 10, 2);
19
- return setUint16(this, offset, bytes[1] << 8 | bytes[0], arguments.length > 2 ? arguments[2] : false);
51
+ var bytes = packFloat16(+value);
52
+ return setUint16(this, offset, bytes, arguments.length > 2 ? arguments[2] : false);
20
53
  }
21
54
  });