core-js-pure 3.17.2 → 3.18.2

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 (202) hide show
  1. package/configurator.js +7 -3
  2. package/es/promise/all-settled.js +2 -1
  3. package/es/promise/any.js +2 -1
  4. package/features/array/from-async.js +8 -0
  5. package/features/array/index.js +2 -0
  6. package/features/index.js +2 -0
  7. package/features/map/from.js +2 -1
  8. package/features/map/group-by.js +2 -1
  9. package/features/map/key-by.js +2 -1
  10. package/features/map/of.js +2 -1
  11. package/features/promise/try.js +2 -1
  12. package/features/set/from.js +2 -1
  13. package/features/set/of.js +2 -1
  14. package/features/typed-array/from-async.js +1 -0
  15. package/features/typed-array/index.js +2 -0
  16. package/features/typed-array/methods.js +2 -0
  17. package/features/weak-map/from.js +2 -1
  18. package/features/weak-map/of.js +2 -1
  19. package/features/weak-set/from.js +2 -1
  20. package/features/weak-set/of.js +2 -1
  21. package/internals/a-callable.js +8 -0
  22. package/internals/a-constructor.js +8 -0
  23. package/internals/a-possible-prototype.js +4 -5
  24. package/internals/an-instance.js +2 -3
  25. package/internals/an-object.js +4 -4
  26. package/internals/array-copy-within.js +2 -2
  27. package/internals/array-fill.js +2 -2
  28. package/internals/array-from-async.js +36 -0
  29. package/internals/array-from.js +8 -7
  30. package/internals/array-group-by.js +2 -2
  31. package/internals/array-includes.js +2 -2
  32. package/internals/array-iteration-from-last.js +2 -2
  33. package/internals/array-iteration.js +2 -2
  34. package/internals/array-last-index-of.js +4 -4
  35. package/internals/array-reduce.js +4 -4
  36. package/internals/array-species-constructor.js +3 -2
  37. package/internals/array-unique-by.js +5 -5
  38. package/internals/async-from-sync-iterator.js +4 -4
  39. package/internals/async-iterator-create-proxy.js +7 -6
  40. package/internals/async-iterator-iteration.js +27 -15
  41. package/internals/async-iterator-prototype.js +16 -16
  42. package/internals/classof.js +2 -1
  43. package/internals/collection-add-all.js +2 -2
  44. package/internals/collection-delete-all.js +2 -2
  45. package/internals/collection-from.js +4 -3
  46. package/internals/collection-weak.js +3 -3
  47. package/internals/collection.js +3 -2
  48. package/internals/copy-constructor-properties.js +2 -2
  49. package/internals/define-iterator.js +21 -13
  50. package/internals/define-well-known-symbol.js +2 -2
  51. package/internals/dom-token-list-prototype.js +7 -0
  52. package/internals/export.js +6 -4
  53. package/internals/flatten-into-array.js +4 -3
  54. package/internals/function-bind-context.js +2 -2
  55. package/internals/function-bind.js +2 -2
  56. package/internals/function-name.js +17 -0
  57. package/internals/get-async-iterator.js +2 -5
  58. package/internals/get-built-in.js +2 -1
  59. package/internals/get-iterator-method.js +3 -2
  60. package/internals/get-iterator.js +5 -5
  61. package/internals/get-method.js +4 -3
  62. package/internals/{has.js → has-own-property.js} +2 -0
  63. package/internals/inherit-if-required.js +2 -1
  64. package/internals/inspect-source.js +2 -1
  65. package/internals/install-error-cause.js +10 -0
  66. package/internals/internal-metadata.js +4 -4
  67. package/internals/internal-state.js +4 -4
  68. package/internals/is-array.js +2 -2
  69. package/internals/is-callable.js +5 -0
  70. package/internals/is-constructor.js +41 -0
  71. package/internals/is-data-descriptor.js +2 -2
  72. package/internals/is-forced.js +2 -1
  73. package/internals/is-integral-number.js +10 -0
  74. package/internals/is-object.js +3 -1
  75. package/internals/is-symbol.js +2 -1
  76. package/internals/iterate.js +3 -3
  77. package/internals/iterator-close.js +3 -2
  78. package/internals/iterator-create-proxy.js +10 -9
  79. package/internals/iterators-core.js +8 -6
  80. package/internals/length-of-array-like.js +7 -0
  81. package/internals/map-upsert.js +4 -3
  82. package/internals/native-weak-map.js +2 -1
  83. package/internals/new-promise-capability.js +3 -3
  84. package/internals/number-parse-float.js +6 -1
  85. package/internals/number-parse-int.js +6 -1
  86. package/internals/object-get-own-property-descriptor.js +2 -2
  87. package/internals/object-get-prototype-of.js +8 -6
  88. package/internals/object-iterator.js +2 -2
  89. package/internals/object-keys-internal.js +3 -3
  90. package/internals/ordinary-to-primitive.js +4 -3
  91. package/internals/regexp-exec-abstract.js +17 -1
  92. package/internals/regexp-exec.js +1 -1
  93. package/internals/regexp-unsupported-ncg.js +1 -1
  94. package/internals/set-to-string-tag.js +2 -2
  95. package/internals/shared.js +1 -1
  96. package/internals/species-constructor.js +2 -2
  97. package/internals/string-multibyte.js +2 -3
  98. package/internals/string-pad-webkit-bug.js +0 -1
  99. package/internals/string-pad.js +1 -1
  100. package/internals/string-repeat.js +2 -2
  101. package/internals/string-trim-forced.js +4 -1
  102. package/internals/task.js +3 -2
  103. package/internals/to-absolute-index.js +2 -2
  104. package/internals/to-index.js +2 -2
  105. package/internals/to-integer-or-infinity.js +10 -0
  106. package/internals/to-length.js +2 -2
  107. package/internals/to-positive-integer.js +2 -2
  108. package/internals/to-primitive.js +3 -2
  109. package/internals/to-string.js +2 -2
  110. package/internals/try-to-string.js +7 -0
  111. package/internals/well-known-symbol.js +3 -3
  112. package/modules/es.aggregate-error.js +5 -2
  113. package/modules/es.array.at.js +4 -4
  114. package/modules/es.array.concat.js +2 -2
  115. package/modules/es.array.flat-map.js +4 -4
  116. package/modules/es.array.flat.js +4 -4
  117. package/modules/es.array.of.js +2 -1
  118. package/modules/es.array.slice.js +5 -4
  119. package/modules/es.array.sort.js +4 -4
  120. package/modules/es.array.splice.js +4 -4
  121. package/modules/es.date.set-year.js +2 -2
  122. package/modules/es.function.has-instance.js +2 -1
  123. package/modules/es.number.is-integer.js +2 -2
  124. package/modules/es.number.is-safe-integer.js +2 -2
  125. package/modules/es.number.to-fixed.js +2 -2
  126. package/modules/es.object.define-getter.js +2 -2
  127. package/modules/es.object.define-setter.js +2 -2
  128. package/modules/es.object.has-own.js +1 -1
  129. package/modules/es.parse-float.js +3 -3
  130. package/modules/es.parse-int.js +3 -3
  131. package/modules/es.promise.all-settled.js +2 -2
  132. package/modules/es.promise.any.js +2 -2
  133. package/modules/es.promise.finally.js +3 -2
  134. package/modules/es.promise.js +10 -9
  135. package/modules/es.reflect.apply.js +2 -2
  136. package/modules/es.reflect.construct.js +3 -3
  137. package/modules/es.string.at-alternative.js +3 -4
  138. package/modules/es.string.ends-with.js +1 -1
  139. package/modules/es.string.match-all.js +6 -16
  140. package/modules/es.string.raw.js +12 -6
  141. package/modules/es.string.replace-all.js +5 -3
  142. package/modules/es.string.substr.js +7 -4
  143. package/modules/es.string.trim-end.js +1 -1
  144. package/modules/es.string.trim-start.js +1 -1
  145. package/modules/es.symbol.js +20 -16
  146. package/modules/esnext.aggregate-error.js +1 -1
  147. package/modules/esnext.array.from-async.js +8 -0
  148. package/modules/esnext.async-iterator.constructor.js +3 -3
  149. package/modules/esnext.async-iterator.filter.js +2 -2
  150. package/modules/esnext.async-iterator.flat-map.js +3 -3
  151. package/modules/esnext.async-iterator.from.js +7 -9
  152. package/modules/esnext.async-iterator.map.js +2 -2
  153. package/modules/esnext.async-iterator.reduce.js +3 -3
  154. package/modules/esnext.async-iterator.to-array.js +1 -1
  155. package/modules/esnext.global-this.js +1 -1
  156. package/modules/esnext.iterator.constructor.js +5 -12
  157. package/modules/esnext.iterator.every.js +2 -2
  158. package/modules/esnext.iterator.filter.js +2 -2
  159. package/modules/esnext.iterator.find.js +2 -2
  160. package/modules/esnext.iterator.flat-map.js +4 -4
  161. package/modules/esnext.iterator.from.js +5 -7
  162. package/modules/esnext.iterator.map.js +2 -2
  163. package/modules/esnext.iterator.reduce.js +2 -2
  164. package/modules/esnext.iterator.some.js +2 -2
  165. package/modules/esnext.map.filter.js +2 -2
  166. package/modules/esnext.map.group-by.js +9 -7
  167. package/modules/esnext.map.key-by.js +3 -3
  168. package/modules/esnext.map.key-of.js +1 -1
  169. package/modules/esnext.map.map-keys.js +2 -2
  170. package/modules/esnext.map.map-values.js +2 -2
  171. package/modules/esnext.map.merge.js +2 -2
  172. package/modules/esnext.map.reduce.js +2 -2
  173. package/modules/esnext.map.update-or-insert.js +1 -1
  174. package/modules/esnext.map.update.js +3 -3
  175. package/modules/esnext.number.from-string.js +2 -2
  176. package/modules/esnext.observable.js +16 -14
  177. package/modules/esnext.promise.all-settled.js +1 -1
  178. package/modules/esnext.promise.any.js +1 -1
  179. package/modules/esnext.set.difference.js +2 -2
  180. package/modules/esnext.set.filter.js +2 -2
  181. package/modules/esnext.set.intersection.js +3 -3
  182. package/modules/esnext.set.is-disjoint-from.js +2 -2
  183. package/modules/esnext.set.is-subset-of.js +4 -3
  184. package/modules/esnext.set.is-superset-of.js +2 -2
  185. package/modules/esnext.set.map.js +2 -2
  186. package/modules/esnext.set.reduce.js +2 -2
  187. package/modules/esnext.set.symmetric-difference.js +3 -3
  188. package/modules/esnext.set.union.js +2 -2
  189. package/modules/esnext.string.match-all.js +1 -1
  190. package/modules/esnext.string.replace-all.js +1 -1
  191. package/modules/esnext.typed-array.from-async.js +1 -0
  192. package/modules/web.dom-collections.iterator.js +1 -1
  193. package/modules/web.timers.js +2 -1
  194. package/modules/web.url-search-params.js +7 -6
  195. package/modules/web.url.js +6 -6
  196. package/package.json +2 -2
  197. package/postinstall.js +1 -1
  198. package/proposals/array-from-async.js +3 -0
  199. package/stage/1.js +1 -0
  200. package/internals/a-function.js +0 -5
  201. package/internals/is-integer.js +0 -9
  202. package/internals/to-integer.js +0 -8
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
  var $ = require('../internals/export');
3
- var aFunction = require('../internals/a-function');
3
+ var aCallable = require('../internals/a-callable');
4
4
  var getBuiltIn = require('../internals/get-built-in');
5
5
  var newPromiseCapabilityModule = require('../internals/new-promise-capability');
6
6
  var perform = require('../internals/perform');
@@ -17,7 +17,7 @@ $({ target: 'Promise', stat: true }, {
17
17
  var resolve = capability.resolve;
18
18
  var reject = capability.reject;
19
19
  var result = perform(function () {
20
- var promiseResolve = aFunction(C.resolve);
20
+ var promiseResolve = aCallable(C.resolve);
21
21
  var errors = [];
22
22
  var counter = 0;
23
23
  var remaining = 1;
@@ -4,6 +4,7 @@ var IS_PURE = require('../internals/is-pure');
4
4
  var NativePromise = require('../internals/native-promise-constructor');
5
5
  var fails = require('../internals/fails');
6
6
  var getBuiltIn = require('../internals/get-built-in');
7
+ var isCallable = require('../internals/is-callable');
7
8
  var speciesConstructor = require('../internals/species-constructor');
8
9
  var promiseResolve = require('../internals/promise-resolve');
9
10
  var redefine = require('../internals/redefine');
@@ -18,7 +19,7 @@ var NON_GENERIC = !!NativePromise && fails(function () {
18
19
  $({ target: 'Promise', proto: true, real: true, forced: NON_GENERIC }, {
19
20
  'finally': function (onFinally) {
20
21
  var C = speciesConstructor(this, getBuiltIn('Promise'));
21
- var isFunction = typeof onFinally == 'function';
22
+ var isFunction = isCallable(onFinally);
22
23
  return this.then(
23
24
  isFunction ? function (x) {
24
25
  return promiseResolve(C, onFinally()).then(function () { return x; });
@@ -31,7 +32,7 @@ $({ target: 'Promise', proto: true, real: true, forced: NON_GENERIC }, {
31
32
  });
32
33
 
33
34
  // makes sure that native promise-based APIs `Promise#finally` properly works with patched `Promise#then`
34
- if (!IS_PURE && typeof NativePromise == 'function') {
35
+ if (!IS_PURE && isCallable(NativePromise)) {
35
36
  var method = getBuiltIn('Promise').prototype['finally'];
36
37
  if (NativePromise.prototype['finally'] !== method) {
37
38
  redefine(NativePromise.prototype, 'finally', method, { unsafe: true });
@@ -9,8 +9,9 @@ var redefineAll = require('../internals/redefine-all');
9
9
  var setPrototypeOf = require('../internals/object-set-prototype-of');
10
10
  var setToStringTag = require('../internals/set-to-string-tag');
11
11
  var setSpecies = require('../internals/set-species');
12
+ var aCallable = require('../internals/a-callable');
13
+ var isCallable = require('../internals/is-callable');
12
14
  var isObject = require('../internals/is-object');
13
- var aFunction = require('../internals/a-function');
14
15
  var anInstance = require('../internals/an-instance');
15
16
  var inspectSource = require('../internals/inspect-source');
16
17
  var iterate = require('../internals/iterate');
@@ -43,7 +44,7 @@ var process = global.process;
43
44
  var newPromiseCapability = newPromiseCapabilityModule.f;
44
45
  var newGenericPromiseCapability = newPromiseCapability;
45
46
  var DISPATCH_EVENT = !!(document && document.createEvent && global.dispatchEvent);
46
- var NATIVE_REJECTION_EVENT = typeof PromiseRejectionEvent == 'function';
47
+ var NATIVE_REJECTION_EVENT = isCallable(global.PromiseRejectionEvent);
47
48
  var UNHANDLED_REJECTION = 'unhandledrejection';
48
49
  var REJECTION_HANDLED = 'rejectionhandled';
49
50
  var PENDING = 0;
@@ -87,7 +88,7 @@ var INCORRECT_ITERATION = FORCED || !checkCorrectnessOfIteration(function (itera
87
88
  // helpers
88
89
  var isThenable = function (it) {
89
90
  var then;
90
- return isObject(it) && typeof (then = it.then) == 'function' ? then : false;
91
+ return isObject(it) && isCallable(then = it.then) ? then : false;
91
92
  };
92
93
 
93
94
  var notify = function (state, isReject) {
@@ -232,7 +233,7 @@ if (FORCED) {
232
233
  // 25.4.3.1 Promise(executor)
233
234
  PromiseConstructor = function Promise(executor) {
234
235
  anInstance(this, PromiseConstructor, PROMISE);
235
- aFunction(executor);
236
+ aCallable(executor);
236
237
  Internal.call(this);
237
238
  var state = getInternalState(this);
238
239
  try {
@@ -261,8 +262,8 @@ if (FORCED) {
261
262
  then: function then(onFulfilled, onRejected) {
262
263
  var state = getInternalPromiseState(this);
263
264
  var reaction = newPromiseCapability(speciesConstructor(this, PromiseConstructor));
264
- reaction.ok = typeof onFulfilled == 'function' ? onFulfilled : true;
265
- reaction.fail = typeof onRejected == 'function' && onRejected;
265
+ reaction.ok = isCallable(onFulfilled) ? onFulfilled : true;
266
+ reaction.fail = isCallable(onRejected) && onRejected;
266
267
  reaction.domain = IS_NODE ? process.domain : undefined;
267
268
  state.parent = true;
268
269
  state.reactions.push(reaction);
@@ -288,7 +289,7 @@ if (FORCED) {
288
289
  : newGenericPromiseCapability(C);
289
290
  };
290
291
 
291
- if (!IS_PURE && typeof NativePromise == 'function' && NativePromisePrototype !== Object.prototype) {
292
+ if (!IS_PURE && isCallable(NativePromise) && NativePromisePrototype !== Object.prototype) {
292
293
  nativeThen = NativePromisePrototype.then;
293
294
 
294
295
  if (!SUBCLASSING) {
@@ -354,7 +355,7 @@ $({ target: PROMISE, stat: true, forced: INCORRECT_ITERATION }, {
354
355
  var resolve = capability.resolve;
355
356
  var reject = capability.reject;
356
357
  var result = perform(function () {
357
- var $promiseResolve = aFunction(C.resolve);
358
+ var $promiseResolve = aCallable(C.resolve);
358
359
  var values = [];
359
360
  var counter = 0;
360
361
  var remaining = 1;
@@ -382,7 +383,7 @@ $({ target: PROMISE, stat: true, forced: INCORRECT_ITERATION }, {
382
383
  var capability = newPromiseCapability(C);
383
384
  var reject = capability.reject;
384
385
  var result = perform(function () {
385
- var $promiseResolve = aFunction(C.resolve);
386
+ var $promiseResolve = aCallable(C.resolve);
386
387
  iterate(iterable, function (promise) {
387
388
  $promiseResolve.call(C, promise).then(capability.resolve, reject);
388
389
  });
@@ -1,6 +1,6 @@
1
1
  var $ = require('../internals/export');
2
2
  var getBuiltIn = require('../internals/get-built-in');
3
- var aFunction = require('../internals/a-function');
3
+ var aCallable = require('../internals/a-callable');
4
4
  var anObject = require('../internals/an-object');
5
5
  var fails = require('../internals/fails');
6
6
 
@@ -16,7 +16,7 @@ var OPTIONAL_ARGUMENTS_LIST = !fails(function () {
16
16
  // https://tc39.es/ecma262/#sec-reflect.apply
17
17
  $({ target: 'Reflect', stat: true, forced: OPTIONAL_ARGUMENTS_LIST }, {
18
18
  apply: function apply(target, thisArgument, argumentsList) {
19
- aFunction(target);
19
+ aCallable(target);
20
20
  anObject(argumentsList);
21
21
  return nativeApply
22
22
  ? nativeApply(target, thisArgument, argumentsList)
@@ -1,6 +1,6 @@
1
1
  var $ = require('../internals/export');
2
2
  var getBuiltIn = require('../internals/get-built-in');
3
- var aFunction = require('../internals/a-function');
3
+ var aConstructor = require('../internals/a-constructor');
4
4
  var anObject = require('../internals/an-object');
5
5
  var isObject = require('../internals/is-object');
6
6
  var create = require('../internals/object-create');
@@ -24,9 +24,9 @@ var FORCED = NEW_TARGET_BUG || ARGS_BUG;
24
24
 
25
25
  $({ target: 'Reflect', stat: true, forced: FORCED, sham: FORCED }, {
26
26
  construct: function construct(Target, args /* , newTarget */) {
27
- aFunction(Target);
27
+ aConstructor(Target);
28
28
  anObject(args);
29
- var newTarget = arguments.length < 3 ? Target : aFunction(arguments[2]);
29
+ var newTarget = arguments.length < 3 ? Target : aConstructor(arguments[2]);
30
30
  if (ARGS_BUG && !NEW_TARGET_BUG) return nativeConstruct(Target, args, newTarget);
31
31
  if (Target == newTarget) {
32
32
  // w/o altered newTarget, optimization for 0-4 arguments
@@ -1,8 +1,7 @@
1
1
  'use strict';
2
2
  var $ = require('../internals/export');
3
3
  var requireObjectCoercible = require('../internals/require-object-coercible');
4
- var toInteger = require('../internals/to-integer');
5
- var toLength = require('../internals/to-length');
4
+ var toIntegerOrInfinity = require('../internals/to-integer-or-infinity');
6
5
  var toString = require('../internals/to-string');
7
6
  var fails = require('../internals/fails');
8
7
 
@@ -15,8 +14,8 @@ var FORCED = fails(function () {
15
14
  $({ target: 'String', proto: true, forced: FORCED }, {
16
15
  at: function at(index) {
17
16
  var S = toString(requireObjectCoercible(this));
18
- var len = toLength(S.length);
19
- var relativeIndex = toInteger(index);
17
+ var len = S.length;
18
+ var relativeIndex = toIntegerOrInfinity(index);
20
19
  var k = relativeIndex >= 0 ? relativeIndex : len + relativeIndex;
21
20
  return (k < 0 || k >= len) ? undefined : S.charAt(k);
22
21
  }
@@ -26,7 +26,7 @@ $({ target: 'String', proto: true, forced: !MDN_POLYFILL_BUG && !CORRECT_IS_REGE
26
26
  var that = toString(requireObjectCoercible(this));
27
27
  notARegExp(searchString);
28
28
  var endPosition = arguments.length > 1 ? arguments[1] : undefined;
29
- var len = toLength(that.length);
29
+ var len = that.length;
30
30
  var end = endPosition === undefined ? len : min(toLength(endPosition), len);
31
31
  var search = toString(searchString);
32
32
  return $endsWith
@@ -5,16 +5,17 @@ var createIteratorConstructor = require('../internals/create-iterator-constructo
5
5
  var requireObjectCoercible = require('../internals/require-object-coercible');
6
6
  var toLength = require('../internals/to-length');
7
7
  var toString = require('../internals/to-string');
8
- var aFunction = require('../internals/a-function');
9
8
  var anObject = require('../internals/an-object');
10
9
  var classof = require('../internals/classof-raw');
11
10
  var isRegExp = require('../internals/is-regexp');
12
11
  var getRegExpFlags = require('../internals/regexp-flags');
13
- var createNonEnumerableProperty = require('../internals/create-non-enumerable-property');
12
+ var getMethod = require('../internals/get-method');
13
+ var redefine = require('../internals/redefine');
14
14
  var fails = require('../internals/fails');
15
15
  var wellKnownSymbol = require('../internals/well-known-symbol');
16
16
  var speciesConstructor = require('../internals/species-constructor');
17
17
  var advanceStringIndex = require('../internals/advance-string-index');
18
+ var regExpExec = require('../internals/regexp-exec-abstract');
18
19
  var InternalStateModule = require('../internals/internal-state');
19
20
  var IS_PURE = require('../internals/is-pure');
20
21
 
@@ -24,23 +25,12 @@ var REGEXP_STRING_ITERATOR = REGEXP_STRING + ' Iterator';
24
25
  var setInternalState = InternalStateModule.set;
25
26
  var getInternalState = InternalStateModule.getterFor(REGEXP_STRING_ITERATOR);
26
27
  var RegExpPrototype = RegExp.prototype;
27
- var regExpBuiltinExec = RegExpPrototype.exec;
28
28
  var nativeMatchAll = ''.matchAll;
29
29
 
30
30
  var WORKS_WITH_NON_GLOBAL_REGEX = !!nativeMatchAll && !fails(function () {
31
31
  'a'.matchAll(/./);
32
32
  });
33
33
 
34
- var regExpExec = function (R, S) {
35
- var exec = R.exec;
36
- var result;
37
- if (typeof exec == 'function') {
38
- result = exec.call(R, S);
39
- if (typeof result != 'object') throw TypeError('Incorrect exec result');
40
- return result;
41
- } return regExpBuiltinExec.call(R, S);
42
- };
43
-
44
34
  // eslint-disable-next-line max-len -- ignore
45
35
  var $RegExpStringIterator = createIteratorConstructor(function RegExpStringIterator(regexp, string, global, fullUnicode) {
46
36
  setInternalState(this, {
@@ -98,9 +88,9 @@ $({ target: 'String', proto: true, forced: WORKS_WITH_NON_GLOBAL_REGEX }, {
98
88
  if (!~flags.indexOf('g')) throw TypeError('`.matchAll` does not allow non-global regexes');
99
89
  }
100
90
  if (WORKS_WITH_NON_GLOBAL_REGEX) return nativeMatchAll.apply(O, arguments);
101
- matcher = regexp[MATCH_ALL];
91
+ matcher = getMethod(regexp, MATCH_ALL);
102
92
  if (matcher === undefined && IS_PURE && classof(regexp) == 'RegExp') matcher = $matchAll;
103
- if (matcher != null) return aFunction(matcher).call(regexp, O);
93
+ if (matcher) return matcher.call(regexp, O);
104
94
  } else if (WORKS_WITH_NON_GLOBAL_REGEX) return nativeMatchAll.apply(O, arguments);
105
95
  S = toString(O);
106
96
  rx = new RegExp(regexp, 'g');
@@ -108,4 +98,4 @@ $({ target: 'String', proto: true, forced: WORKS_WITH_NON_GLOBAL_REGEX }, {
108
98
  }
109
99
  });
110
100
 
111
- IS_PURE || MATCH_ALL in RegExpPrototype || createNonEnumerableProperty(RegExpPrototype, MATCH_ALL, $matchAll);
101
+ IS_PURE || MATCH_ALL in RegExpPrototype || redefine(RegExpPrototype, MATCH_ALL, $matchAll);
@@ -1,20 +1,26 @@
1
1
  var $ = require('../internals/export');
2
2
  var toIndexedObject = require('../internals/to-indexed-object');
3
- var toLength = require('../internals/to-length');
3
+ var toObject = require('../internals/to-object');
4
4
  var toString = require('../internals/to-string');
5
+ var lengthOfArrayLike = require('../internals/length-of-array-like');
6
+
7
+ var ArrayPrototype = Array.prototype;
8
+ var push = ArrayPrototype.push;
9
+ var join = ArrayPrototype.join;
5
10
 
6
11
  // `String.raw` method
7
12
  // https://tc39.es/ecma262/#sec-string.raw
8
13
  $({ target: 'String', stat: true }, {
9
14
  raw: function raw(template) {
10
- var rawTemplate = toIndexedObject(template.raw);
11
- var literalSegments = toLength(rawTemplate.length);
15
+ var rawTemplate = toIndexedObject(toObject(template).raw);
16
+ var literalSegments = lengthOfArrayLike(rawTemplate);
12
17
  var argumentsLength = arguments.length;
13
18
  var elements = [];
14
19
  var i = 0;
15
20
  while (literalSegments > i) {
16
- elements.push(toString(rawTemplate[i++]));
17
- if (i < argumentsLength) elements.push(toString(arguments[i]));
18
- } return elements.join('');
21
+ push.call(elements, toString(rawTemplate[i++]));
22
+ if (i === literalSegments) return join.call(elements, '');
23
+ if (i < argumentsLength) push.call(elements, toString(arguments[i]));
24
+ }
19
25
  }
20
26
  });
@@ -1,8 +1,10 @@
1
1
  'use strict';
2
2
  var $ = require('../internals/export');
3
3
  var requireObjectCoercible = require('../internals/require-object-coercible');
4
+ var isCallable = require('../internals/is-callable');
4
5
  var isRegExp = require('../internals/is-regexp');
5
6
  var toString = require('../internals/to-string');
7
+ var getMethod = require('../internals/get-method');
6
8
  var getRegExpFlags = require('../internals/regexp-flags');
7
9
  var getSubstitution = require('../internals/get-substitution');
8
10
  var wellKnownSymbol = require('../internals/well-known-symbol');
@@ -36,8 +38,8 @@ $({ target: 'String', proto: true }, {
36
38
  ));
37
39
  if (!~flags.indexOf('g')) throw TypeError('`.replaceAll` does not allow non-global regexes');
38
40
  }
39
- replacer = searchValue[REPLACE];
40
- if (replacer !== undefined) {
41
+ replacer = getMethod(searchValue, REPLACE);
42
+ if (replacer) {
41
43
  return replacer.call(searchValue, O, replaceValue);
42
44
  } else if (IS_PURE && IS_REG_EXP) {
43
45
  return toString(O).replace(searchValue, replaceValue);
@@ -45,7 +47,7 @@ $({ target: 'String', proto: true }, {
45
47
  }
46
48
  string = toString(O);
47
49
  searchString = toString(searchValue);
48
- functionalReplace = typeof replaceValue === 'function';
50
+ functionalReplace = isCallable(replaceValue);
49
51
  if (!functionalReplace) replaceValue = toString(replaceValue);
50
52
  searchLength = searchString.length;
51
53
  advanceBy = max(1, searchLength);
@@ -1,24 +1,27 @@
1
1
  'use strict';
2
2
  var $ = require('../internals/export');
3
3
  var requireObjectCoercible = require('../internals/require-object-coercible');
4
- var toInteger = require('../internals/to-integer');
4
+ var toIntegerOrInfinity = require('../internals/to-integer-or-infinity');
5
5
  var toString = require('../internals/to-string');
6
6
 
7
7
  var slice = ''.slice;
8
8
  var max = Math.max;
9
9
  var min = Math.min;
10
10
 
11
+ // eslint-disable-next-line unicorn/prefer-string-slice -- required for testing
12
+ var FORCED = !''.substr || 'ab'.substr(-1) !== 'b';
13
+
11
14
  // `String.prototype.substr` method
12
15
  // https://tc39.es/ecma262/#sec-string.prototype.substr
13
- $({ target: 'String', proto: true }, {
16
+ $({ target: 'String', proto: true, forced: FORCED }, {
14
17
  substr: function substr(start, length) {
15
18
  var that = toString(requireObjectCoercible(this));
16
19
  var size = that.length;
17
- var intStart = toInteger(start);
20
+ var intStart = toIntegerOrInfinity(start);
18
21
  var intLength, intEnd;
19
22
  if (intStart === Infinity) intStart = 0;
20
23
  if (intStart < 0) intStart = max(size + intStart, 0);
21
- intLength = length === undefined ? size : toInteger(length);
24
+ intLength = length === undefined ? size : toIntegerOrInfinity(length);
22
25
  if (intLength <= 0 || intLength === Infinity) return '';
23
26
  intEnd = min(intStart + intLength, size);
24
27
  return intStart >= intEnd ? '' : slice.call(that, intStart, intEnd);
@@ -13,7 +13,7 @@ var trimEnd = FORCED ? function trimEnd() {
13
13
  // `String.prototype.{ trimEnd, trimRight }` methods
14
14
  // https://tc39.es/ecma262/#sec-string.prototype.trimend
15
15
  // https://tc39.es/ecma262/#String.prototype.trimright
16
- $({ target: 'String', proto: true, forced: FORCED }, {
16
+ $({ target: 'String', proto: true, name: 'trimEnd', forced: FORCED }, {
17
17
  trimEnd: trimEnd,
18
18
  trimRight: trimEnd
19
19
  });
@@ -13,7 +13,7 @@ var trimStart = FORCED ? function trimStart() {
13
13
  // `String.prototype.{ trimStart, trimLeft }` methods
14
14
  // https://tc39.es/ecma262/#sec-string.prototype.trimstart
15
15
  // https://tc39.es/ecma262/#String.prototype.trimleft
16
- $({ target: 'String', proto: true, forced: FORCED }, {
16
+ $({ target: 'String', proto: true, name: 'trimStart', forced: FORCED }, {
17
17
  trimStart: trimStart,
18
18
  trimLeft: trimStart
19
19
  });
@@ -6,8 +6,9 @@ var IS_PURE = require('../internals/is-pure');
6
6
  var DESCRIPTORS = require('../internals/descriptors');
7
7
  var NATIVE_SYMBOL = require('../internals/native-symbol');
8
8
  var fails = require('../internals/fails');
9
- var has = require('../internals/has');
9
+ var hasOwn = require('../internals/has-own-property');
10
10
  var isArray = require('../internals/is-array');
11
+ var isCallable = require('../internals/is-callable');
11
12
  var isObject = require('../internals/is-object');
12
13
  var isSymbol = require('../internals/is-symbol');
13
14
  var anObject = require('../internals/an-object');
@@ -24,7 +25,6 @@ var getOwnPropertySymbolsModule = require('../internals/object-get-own-property-
24
25
  var getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');
25
26
  var definePropertyModule = require('../internals/object-define-property');
26
27
  var propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');
27
- var createNonEnumerableProperty = require('../internals/create-non-enumerable-property');
28
28
  var redefine = require('../internals/redefine');
29
29
  var shared = require('../internals/shared');
30
30
  var sharedKey = require('../internals/shared-key');
@@ -89,12 +89,12 @@ var $defineProperty = function defineProperty(O, P, Attributes) {
89
89
  anObject(O);
90
90
  var key = toPropertyKey(P);
91
91
  anObject(Attributes);
92
- if (has(AllSymbols, key)) {
92
+ if (hasOwn(AllSymbols, key)) {
93
93
  if (!Attributes.enumerable) {
94
- if (!has(O, HIDDEN)) nativeDefineProperty(O, HIDDEN, createPropertyDescriptor(1, {}));
94
+ if (!hasOwn(O, HIDDEN)) nativeDefineProperty(O, HIDDEN, createPropertyDescriptor(1, {}));
95
95
  O[HIDDEN][key] = true;
96
96
  } else {
97
- if (has(O, HIDDEN) && O[HIDDEN][key]) O[HIDDEN][key] = false;
97
+ if (hasOwn(O, HIDDEN) && O[HIDDEN][key]) O[HIDDEN][key] = false;
98
98
  Attributes = nativeObjectCreate(Attributes, { enumerable: createPropertyDescriptor(0, false) });
99
99
  } return setSymbolDescriptor(O, key, Attributes);
100
100
  } return nativeDefineProperty(O, key, Attributes);
@@ -117,16 +117,17 @@ var $create = function create(O, Properties) {
117
117
  var $propertyIsEnumerable = function propertyIsEnumerable(V) {
118
118
  var P = toPropertyKey(V);
119
119
  var enumerable = nativePropertyIsEnumerable.call(this, P);
120
- if (this === ObjectPrototype && has(AllSymbols, P) && !has(ObjectPrototypeSymbols, P)) return false;
121
- return enumerable || !has(this, P) || !has(AllSymbols, P) || has(this, HIDDEN) && this[HIDDEN][P] ? enumerable : true;
120
+ if (this === ObjectPrototype && hasOwn(AllSymbols, P) && !hasOwn(ObjectPrototypeSymbols, P)) return false;
121
+ return enumerable || !hasOwn(this, P) || !hasOwn(AllSymbols, P) || hasOwn(this, HIDDEN) && this[HIDDEN][P]
122
+ ? enumerable : true;
122
123
  };
123
124
 
124
125
  var $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(O, P) {
125
126
  var it = toIndexedObject(O);
126
127
  var key = toPropertyKey(P);
127
- if (it === ObjectPrototype && has(AllSymbols, key) && !has(ObjectPrototypeSymbols, key)) return;
128
+ if (it === ObjectPrototype && hasOwn(AllSymbols, key) && !hasOwn(ObjectPrototypeSymbols, key)) return;
128
129
  var descriptor = nativeGetOwnPropertyDescriptor(it, key);
129
- if (descriptor && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) {
130
+ if (descriptor && hasOwn(AllSymbols, key) && !(hasOwn(it, HIDDEN) && it[HIDDEN][key])) {
130
131
  descriptor.enumerable = true;
131
132
  }
132
133
  return descriptor;
@@ -136,7 +137,7 @@ var $getOwnPropertyNames = function getOwnPropertyNames(O) {
136
137
  var names = nativeGetOwnPropertyNames(toIndexedObject(O));
137
138
  var result = [];
138
139
  $forEach(names, function (key) {
139
- if (!has(AllSymbols, key) && !has(hiddenKeys, key)) result.push(key);
140
+ if (!hasOwn(AllSymbols, key) && !hasOwn(hiddenKeys, key)) result.push(key);
140
141
  });
141
142
  return result;
142
143
  };
@@ -146,7 +147,7 @@ var $getOwnPropertySymbols = function getOwnPropertySymbols(O) {
146
147
  var names = nativeGetOwnPropertyNames(IS_OBJECT_PROTOTYPE ? ObjectPrototypeSymbols : toIndexedObject(O));
147
148
  var result = [];
148
149
  $forEach(names, function (key) {
149
- if (has(AllSymbols, key) && (!IS_OBJECT_PROTOTYPE || has(ObjectPrototype, key))) {
150
+ if (hasOwn(AllSymbols, key) && (!IS_OBJECT_PROTOTYPE || hasOwn(ObjectPrototype, key))) {
150
151
  result.push(AllSymbols[key]);
151
152
  }
152
153
  });
@@ -162,7 +163,7 @@ if (!NATIVE_SYMBOL) {
162
163
  var tag = uid(description);
163
164
  var setter = function (value) {
164
165
  if (this === ObjectPrototype) setter.call(ObjectPrototypeSymbols, value);
165
- if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false;
166
+ if (hasOwn(this, HIDDEN) && hasOwn(this[HIDDEN], tag)) this[HIDDEN][tag] = false;
166
167
  setSymbolDescriptor(this, tag, createPropertyDescriptor(1, value));
167
168
  };
168
169
  if (DESCRIPTORS && USE_SETTER) setSymbolDescriptor(ObjectPrototype, tag, { configurable: true, set: setter });
@@ -214,7 +215,7 @@ $({ target: SYMBOL, stat: true, forced: !NATIVE_SYMBOL }, {
214
215
  // https://tc39.es/ecma262/#sec-symbol.for
215
216
  'for': function (key) {
216
217
  var string = $toString(key);
217
- if (has(StringToSymbolRegistry, string)) return StringToSymbolRegistry[string];
218
+ if (hasOwn(StringToSymbolRegistry, string)) return StringToSymbolRegistry[string];
218
219
  var symbol = $Symbol(string);
219
220
  StringToSymbolRegistry[string] = symbol;
220
221
  SymbolToStringRegistry[symbol] = string;
@@ -224,7 +225,7 @@ $({ target: SYMBOL, stat: true, forced: !NATIVE_SYMBOL }, {
224
225
  // https://tc39.es/ecma262/#sec-symbol.keyfor
225
226
  keyFor: function keyFor(sym) {
226
227
  if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol');
227
- if (has(SymbolToStringRegistry, sym)) return SymbolToStringRegistry[sym];
228
+ if (hasOwn(SymbolToStringRegistry, sym)) return SymbolToStringRegistry[sym];
228
229
  },
229
230
  useSetter: function () { USE_SETTER = true; },
230
231
  useSimple: function () { USE_SETTER = false; }
@@ -285,7 +286,7 @@ if ($stringify) {
285
286
  $replacer = replacer;
286
287
  if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined
287
288
  if (!isArray(replacer)) replacer = function (key, value) {
288
- if (typeof $replacer == 'function') value = $replacer.call(this, key, value);
289
+ if (isCallable($replacer)) value = $replacer.call(this, key, value);
289
290
  if (!isSymbol(value)) return value;
290
291
  };
291
292
  args[1] = replacer;
@@ -297,7 +298,10 @@ if ($stringify) {
297
298
  // `Symbol.prototype[@@toPrimitive]` method
298
299
  // https://tc39.es/ecma262/#sec-symbol.prototype-@@toprimitive
299
300
  if (!$Symbol[PROTOTYPE][TO_PRIMITIVE]) {
300
- createNonEnumerableProperty($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);
301
+ var valueOf = $Symbol[PROTOTYPE].valueOf;
302
+ redefine($Symbol[PROTOTYPE], TO_PRIMITIVE, function () {
303
+ return valueOf.apply(this, arguments);
304
+ });
301
305
  }
302
306
  // `Symbol.prototype[@@toStringTag]` property
303
307
  // https://tc39.es/ecma262/#sec-symbol.prototype-@@tostringtag
@@ -1,2 +1,2 @@
1
1
  // TODO: Remove from `core-js@4`
2
- require('./es.aggregate-error');
2
+ require('../modules/es.aggregate-error');
@@ -0,0 +1,8 @@
1
+ var $ = require('../internals/export');
2
+ var fromAsync = require('../internals/array-from-async');
3
+
4
+ // `Array.fromAsync` method
5
+ // https://github.com/tc39/proposal-array-from-async
6
+ $({ target: 'Array', stat: true }, {
7
+ fromAsync: fromAsync
8
+ });
@@ -3,7 +3,7 @@
3
3
  var $ = require('../internals/export');
4
4
  var anInstance = require('../internals/an-instance');
5
5
  var createNonEnumerableProperty = require('../internals/create-non-enumerable-property');
6
- var has = require('../internals/has');
6
+ var hasOwn = require('../internals/has-own-property');
7
7
  var wellKnownSymbol = require('../internals/well-known-symbol');
8
8
  var AsyncIteratorPrototype = require('../internals/async-iterator-prototype');
9
9
  var IS_PURE = require('../internals/is-pure');
@@ -16,11 +16,11 @@ var AsyncIteratorConstructor = function AsyncIterator() {
16
16
 
17
17
  AsyncIteratorConstructor.prototype = AsyncIteratorPrototype;
18
18
 
19
- if (!has(AsyncIteratorPrototype, TO_STRING_TAG)) {
19
+ if (!hasOwn(AsyncIteratorPrototype, TO_STRING_TAG)) {
20
20
  createNonEnumerableProperty(AsyncIteratorPrototype, TO_STRING_TAG, 'AsyncIterator');
21
21
  }
22
22
 
23
- if (!has(AsyncIteratorPrototype, 'constructor') || AsyncIteratorPrototype.constructor === Object) {
23
+ if (IS_PURE || !hasOwn(AsyncIteratorPrototype, 'constructor') || AsyncIteratorPrototype.constructor === Object) {
24
24
  createNonEnumerableProperty(AsyncIteratorPrototype, 'constructor', AsyncIteratorConstructor);
25
25
  }
26
26
 
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
  // https://github.com/tc39/proposal-iterator-helpers
3
3
  var $ = require('../internals/export');
4
- var aFunction = require('../internals/a-function');
4
+ var aCallable = require('../internals/a-callable');
5
5
  var anObject = require('../internals/an-object');
6
6
  var createAsyncIteratorProxy = require('../internals/async-iterator-create-proxy');
7
7
 
@@ -36,7 +36,7 @@ $({ target: 'AsyncIterator', proto: true, real: true }, {
36
36
  filter: function filter(filterer) {
37
37
  return new AsyncIteratorProxy({
38
38
  iterator: anObject(this),
39
- filterer: aFunction(filterer)
39
+ filterer: aCallable(filterer)
40
40
  });
41
41
  }
42
42
  });
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
  // https://github.com/tc39/proposal-iterator-helpers
3
3
  var $ = require('../internals/export');
4
- var aFunction = require('../internals/a-function');
4
+ var aCallable = require('../internals/a-callable');
5
5
  var anObject = require('../internals/an-object');
6
6
  var createAsyncIteratorProxy = require('../internals/async-iterator-create-proxy');
7
7
  var getAsyncIterator = require('../internals/get-async-iterator');
@@ -23,7 +23,7 @@ var AsyncIteratorProxy = createAsyncIteratorProxy(function (Promise) {
23
23
  Promise.resolve(mapper(step.value)).then(function (mapped) {
24
24
  try {
25
25
  state.innerIterator = innerIterator = getAsyncIterator(mapped);
26
- state.innerNext = aFunction(innerIterator.next);
26
+ state.innerNext = aCallable(innerIterator.next);
27
27
  return innerLoop();
28
28
  } catch (error2) { reject(error2); }
29
29
  }, reject);
@@ -56,7 +56,7 @@ $({ target: 'AsyncIterator', proto: true, real: true }, {
56
56
  flatMap: function flatMap(mapper) {
57
57
  return new AsyncIteratorProxy({
58
58
  iterator: anObject(this),
59
- mapper: aFunction(mapper),
59
+ mapper: aCallable(mapper),
60
60
  innerIterator: null,
61
61
  innerNext: null
62
62
  });
@@ -1,8 +1,8 @@
1
1
  // https://github.com/tc39/proposal-iterator-helpers
2
2
  var $ = require('../internals/export');
3
- var path = require('../internals/path');
4
3
  var anObject = require('../internals/an-object');
5
4
  var toObject = require('../internals/to-object');
5
+ var AsyncIteratorPrototype = require('../internals/async-iterator-prototype');
6
6
  var createAsyncIteratorProxy = require('../internals/async-iterator-create-proxy');
7
7
  var getAsyncIterator = require('../internals/get-async-iterator');
8
8
  var getIterator = require('../internals/get-iterator');
@@ -13,7 +13,7 @@ var AsyncFromSyncIterator = require('../internals/async-from-sync-iterator');
13
13
 
14
14
  var ASYNC_ITERATOR = wellKnownSymbol('asyncIterator');
15
15
 
16
- var AsyncIterator = path.AsyncIterator;
16
+ var isPrototypeOf = {}.isPrototypeOf;
17
17
 
18
18
  var AsyncIteratorProxy = createAsyncIteratorProxy(function (Promise, args) {
19
19
  return anObject(this.next.apply(this.iterator, args));
@@ -22,18 +22,16 @@ var AsyncIteratorProxy = createAsyncIteratorProxy(function (Promise, args) {
22
22
  $({ target: 'AsyncIterator', stat: true }, {
23
23
  from: function from(O) {
24
24
  var object = toObject(O);
25
- var usingIterator = getMethod(object[ASYNC_ITERATOR]);
25
+ var usingIterator = getMethod(object, ASYNC_ITERATOR);
26
26
  var iterator;
27
- if (usingIterator !== undefined) {
27
+ if (usingIterator) {
28
28
  iterator = getAsyncIterator(object, usingIterator);
29
- if (iterator instanceof AsyncIterator) return iterator;
29
+ if (isPrototypeOf.call(AsyncIteratorPrototype, iterator)) return iterator;
30
30
  }
31
31
  if (iterator === undefined) {
32
32
  usingIterator = getIteratorMethod(object);
33
- if (usingIterator !== undefined) return new AsyncFromSyncIterator(getIterator(object, usingIterator));
33
+ if (usingIterator) return new AsyncFromSyncIterator(getIterator(object, usingIterator));
34
34
  }
35
- return new AsyncIteratorProxy({
36
- iterator: iterator !== undefined ? iterator : object
37
- });
35
+ return new AsyncIteratorProxy({ iterator: iterator !== undefined ? iterator : object });
38
36
  }
39
37
  });
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
  // https://github.com/tc39/proposal-iterator-helpers
3
3
  var $ = require('../internals/export');
4
- var aFunction = require('../internals/a-function');
4
+ var aCallable = require('../internals/a-callable');
5
5
  var anObject = require('../internals/an-object');
6
6
  var createAsyncIteratorProxy = require('../internals/async-iterator-create-proxy');
7
7
 
@@ -24,7 +24,7 @@ $({ target: 'AsyncIterator', proto: true, real: true }, {
24
24
  map: function map(mapper) {
25
25
  return new AsyncIteratorProxy({
26
26
  iterator: anObject(this),
27
- mapper: aFunction(mapper)
27
+ mapper: aCallable(mapper)
28
28
  });
29
29
  }
30
30
  });