core-js 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 (225) 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-buffer-view-core.js +13 -12
  27. package/internals/array-buffer.js +9 -3
  28. package/internals/array-copy-within.js +2 -2
  29. package/internals/array-fill.js +2 -2
  30. package/internals/array-from-async.js +36 -0
  31. package/internals/array-from.js +8 -7
  32. package/internals/array-group-by.js +2 -2
  33. package/internals/array-includes.js +2 -2
  34. package/internals/array-iteration-from-last.js +2 -2
  35. package/internals/array-iteration.js +2 -2
  36. package/internals/array-last-index-of.js +4 -4
  37. package/internals/array-reduce.js +4 -4
  38. package/internals/array-species-constructor.js +3 -2
  39. package/internals/array-unique-by.js +5 -5
  40. package/internals/async-from-sync-iterator.js +4 -4
  41. package/internals/async-iterator-create-proxy.js +7 -6
  42. package/internals/async-iterator-iteration.js +27 -15
  43. package/internals/async-iterator-prototype.js +16 -16
  44. package/internals/classof.js +2 -1
  45. package/internals/collection-add-all.js +2 -2
  46. package/internals/collection-delete-all.js +2 -2
  47. package/internals/collection-from.js +4 -3
  48. package/internals/collection-weak.js +3 -3
  49. package/internals/collection.js +2 -1
  50. package/internals/copy-constructor-properties.js +2 -2
  51. package/internals/define-iterator.js +21 -13
  52. package/internals/define-well-known-symbol.js +2 -2
  53. package/internals/dom-token-list-prototype.js +7 -0
  54. package/internals/export.js +1 -0
  55. package/internals/flatten-into-array.js +4 -3
  56. package/internals/function-bind-context.js +2 -2
  57. package/internals/function-bind.js +2 -2
  58. package/internals/function-name.js +17 -0
  59. package/internals/get-async-iterator.js +2 -5
  60. package/internals/get-built-in.js +3 -2
  61. package/internals/get-iterator-method.js +3 -2
  62. package/internals/get-iterator.js +5 -5
  63. package/internals/get-method.js +4 -3
  64. package/internals/{has.js → has-own-property.js} +2 -0
  65. package/internals/inherit-if-required.js +2 -1
  66. package/internals/inspect-source.js +2 -1
  67. package/internals/install-error-cause.js +10 -0
  68. package/internals/internal-metadata.js +4 -4
  69. package/internals/internal-state.js +4 -4
  70. package/internals/is-array.js +2 -2
  71. package/internals/is-callable.js +5 -0
  72. package/internals/is-constructor.js +41 -0
  73. package/internals/is-data-descriptor.js +2 -2
  74. package/internals/is-forced.js +2 -1
  75. package/internals/is-integral-number.js +10 -0
  76. package/internals/is-object.js +3 -1
  77. package/internals/is-symbol.js +2 -1
  78. package/internals/iterate.js +3 -3
  79. package/internals/iterator-close.js +3 -2
  80. package/internals/iterator-create-proxy.js +10 -9
  81. package/internals/iterators-core.js +8 -6
  82. package/internals/length-of-array-like.js +7 -0
  83. package/internals/map-upsert.js +4 -3
  84. package/internals/native-weak-map.js +2 -1
  85. package/internals/new-promise-capability.js +3 -3
  86. package/internals/number-parse-float.js +6 -1
  87. package/internals/number-parse-int.js +6 -1
  88. package/internals/object-get-own-property-descriptor.js +2 -2
  89. package/internals/object-get-prototype-of.js +8 -6
  90. package/internals/object-iterator.js +2 -2
  91. package/internals/object-keys-internal.js +3 -3
  92. package/internals/ordinary-to-primitive.js +4 -3
  93. package/internals/redefine.js +12 -6
  94. package/internals/regexp-exec-abstract.js +8 -13
  95. package/internals/regexp-unsupported-dot-all.js +1 -1
  96. package/internals/regexp-unsupported-ncg.js +1 -1
  97. package/internals/set-to-string-tag.js +2 -2
  98. package/internals/shared.js +1 -1
  99. package/internals/species-constructor.js +2 -2
  100. package/internals/string-multibyte.js +2 -3
  101. package/internals/string-pad-webkit-bug.js +0 -1
  102. package/internals/string-pad.js +1 -1
  103. package/internals/string-repeat.js +2 -2
  104. package/internals/string-trim-forced.js +4 -1
  105. package/internals/task.js +3 -2
  106. package/internals/to-absolute-index.js +2 -2
  107. package/internals/to-index.js +2 -2
  108. package/internals/to-integer-or-infinity.js +10 -0
  109. package/internals/to-length.js +2 -2
  110. package/internals/to-positive-integer.js +2 -2
  111. package/internals/to-primitive.js +3 -2
  112. package/internals/to-string.js +2 -2
  113. package/internals/try-to-string.js +7 -0
  114. package/internals/typed-array-constructor.js +8 -8
  115. package/internals/typed-array-from.js +6 -4
  116. package/internals/well-known-symbol.js +3 -3
  117. package/modules/es.aggregate-error.js +5 -2
  118. package/modules/es.array.at.js +4 -4
  119. package/modules/es.array.concat.js +2 -2
  120. package/modules/es.array.flat-map.js +4 -4
  121. package/modules/es.array.flat.js +4 -4
  122. package/modules/es.array.of.js +2 -1
  123. package/modules/es.array.slice.js +5 -4
  124. package/modules/es.array.sort.js +4 -4
  125. package/modules/es.array.splice.js +4 -4
  126. package/modules/es.date.set-year.js +2 -2
  127. package/modules/es.date.to-primitive.js +2 -2
  128. package/modules/es.function.has-instance.js +2 -1
  129. package/modules/es.function.name.js +2 -1
  130. package/modules/es.number.constructor.js +15 -14
  131. package/modules/es.number.is-integer.js +2 -2
  132. package/modules/es.number.is-safe-integer.js +2 -2
  133. package/modules/es.number.to-fixed.js +2 -2
  134. package/modules/es.object.define-getter.js +2 -2
  135. package/modules/es.object.define-setter.js +2 -2
  136. package/modules/es.object.has-own.js +1 -1
  137. package/modules/es.parse-float.js +3 -3
  138. package/modules/es.parse-int.js +3 -3
  139. package/modules/es.promise.all-settled.js +2 -2
  140. package/modules/es.promise.any.js +2 -2
  141. package/modules/es.promise.finally.js +3 -2
  142. package/modules/es.promise.js +10 -9
  143. package/modules/es.reflect.apply.js +2 -2
  144. package/modules/es.reflect.construct.js +3 -3
  145. package/modules/es.regexp.constructor.js +2 -2
  146. package/modules/es.regexp.test.js +4 -4
  147. package/modules/es.regexp.to-string.js +2 -1
  148. package/modules/es.string.at-alternative.js +3 -4
  149. package/modules/es.string.ends-with.js +1 -1
  150. package/modules/es.string.match-all.js +6 -16
  151. package/modules/es.string.match.js +3 -2
  152. package/modules/es.string.raw.js +12 -6
  153. package/modules/es.string.replace-all.js +5 -3
  154. package/modules/es.string.replace.js +7 -5
  155. package/modules/es.string.search.js +3 -2
  156. package/modules/es.string.split.js +3 -2
  157. package/modules/es.string.substr.js +7 -4
  158. package/modules/es.string.trim-end.js +1 -1
  159. package/modules/es.string.trim-start.js +1 -1
  160. package/modules/es.symbol.description.js +4 -3
  161. package/modules/es.symbol.js +20 -16
  162. package/modules/es.typed-array.at.js +4 -4
  163. package/modules/es.typed-array.iterator.js +4 -4
  164. package/modules/es.typed-array.set.js +2 -2
  165. package/modules/es.typed-array.sort.js +4 -4
  166. package/modules/esnext.aggregate-error.js +1 -1
  167. package/modules/esnext.array.from-async.js +8 -0
  168. package/modules/esnext.array.last-index.js +2 -2
  169. package/modules/esnext.array.last-item.js +3 -3
  170. package/modules/esnext.async-iterator.constructor.js +3 -3
  171. package/modules/esnext.async-iterator.filter.js +2 -2
  172. package/modules/esnext.async-iterator.flat-map.js +3 -3
  173. package/modules/esnext.async-iterator.from.js +7 -9
  174. package/modules/esnext.async-iterator.map.js +2 -2
  175. package/modules/esnext.async-iterator.reduce.js +3 -3
  176. package/modules/esnext.async-iterator.to-array.js +1 -1
  177. package/modules/esnext.global-this.js +1 -1
  178. package/modules/esnext.iterator.constructor.js +5 -12
  179. package/modules/esnext.iterator.every.js +2 -2
  180. package/modules/esnext.iterator.filter.js +2 -2
  181. package/modules/esnext.iterator.find.js +2 -2
  182. package/modules/esnext.iterator.flat-map.js +4 -4
  183. package/modules/esnext.iterator.from.js +5 -7
  184. package/modules/esnext.iterator.map.js +2 -2
  185. package/modules/esnext.iterator.reduce.js +2 -2
  186. package/modules/esnext.iterator.some.js +2 -2
  187. package/modules/esnext.map.filter.js +2 -2
  188. package/modules/esnext.map.group-by.js +9 -7
  189. package/modules/esnext.map.key-by.js +3 -3
  190. package/modules/esnext.map.key-of.js +1 -1
  191. package/modules/esnext.map.map-keys.js +2 -2
  192. package/modules/esnext.map.map-values.js +2 -2
  193. package/modules/esnext.map.merge.js +2 -2
  194. package/modules/esnext.map.reduce.js +2 -2
  195. package/modules/esnext.map.update-or-insert.js +1 -1
  196. package/modules/esnext.map.update.js +3 -3
  197. package/modules/esnext.number.from-string.js +2 -2
  198. package/modules/esnext.observable.js +16 -14
  199. package/modules/esnext.promise.all-settled.js +1 -1
  200. package/modules/esnext.promise.any.js +1 -1
  201. package/modules/esnext.set.difference.js +2 -2
  202. package/modules/esnext.set.filter.js +2 -2
  203. package/modules/esnext.set.intersection.js +3 -3
  204. package/modules/esnext.set.is-disjoint-from.js +2 -2
  205. package/modules/esnext.set.is-subset-of.js +4 -3
  206. package/modules/esnext.set.is-superset-of.js +2 -2
  207. package/modules/esnext.set.map.js +2 -2
  208. package/modules/esnext.set.reduce.js +2 -2
  209. package/modules/esnext.set.symmetric-difference.js +3 -3
  210. package/modules/esnext.set.union.js +2 -2
  211. package/modules/esnext.string.match-all.js +1 -1
  212. package/modules/esnext.string.replace-all.js +1 -1
  213. package/modules/esnext.typed-array.from-async.js +26 -0
  214. package/modules/web.dom-collections.for-each.js +10 -3
  215. package/modules/web.dom-collections.iterator.js +8 -3
  216. package/modules/web.timers.js +2 -1
  217. package/modules/web.url-search-params.js +7 -6
  218. package/modules/web.url.js +6 -6
  219. package/package.json +2 -2
  220. package/postinstall.js +1 -1
  221. package/proposals/array-from-async.js +3 -0
  222. package/stage/1.js +1 -0
  223. package/internals/a-function.js +0 -5
  224. package/internals/is-integer.js +0 -9
  225. package/internals/to-integer.js +0 -8
@@ -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);
@@ -2,11 +2,13 @@
2
2
  var fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');
3
3
  var fails = require('../internals/fails');
4
4
  var anObject = require('../internals/an-object');
5
- var toInteger = require('../internals/to-integer');
5
+ var isCallable = require('../internals/is-callable');
6
+ var toIntegerOrInfinity = require('../internals/to-integer-or-infinity');
6
7
  var toLength = require('../internals/to-length');
7
8
  var toString = require('../internals/to-string');
8
9
  var requireObjectCoercible = require('../internals/require-object-coercible');
9
10
  var advanceStringIndex = require('../internals/advance-string-index');
11
+ var getMethod = require('../internals/get-method');
10
12
  var getSubstitution = require('../internals/get-substitution');
11
13
  var regExpExec = require('../internals/regexp-exec-abstract');
12
14
  var wellKnownSymbol = require('../internals/well-known-symbol');
@@ -54,8 +56,8 @@ fixRegExpWellKnownSymbolLogic('replace', function (_, nativeReplace, maybeCallNa
54
56
  // https://tc39.es/ecma262/#sec-string.prototype.replace
55
57
  function replace(searchValue, replaceValue) {
56
58
  var O = requireObjectCoercible(this);
57
- var replacer = searchValue == undefined ? undefined : searchValue[REPLACE];
58
- return replacer !== undefined
59
+ var replacer = searchValue == undefined ? undefined : getMethod(searchValue, REPLACE);
60
+ return replacer
59
61
  ? replacer.call(searchValue, O, replaceValue)
60
62
  : nativeReplace.call(toString(O), searchValue, replaceValue);
61
63
  },
@@ -74,7 +76,7 @@ fixRegExpWellKnownSymbolLogic('replace', function (_, nativeReplace, maybeCallNa
74
76
  if (res.done) return res.value;
75
77
  }
76
78
 
77
- var functionalReplace = typeof replaceValue === 'function';
79
+ var functionalReplace = isCallable(replaceValue);
78
80
  if (!functionalReplace) replaceValue = toString(replaceValue);
79
81
 
80
82
  var global = rx.global;
@@ -100,7 +102,7 @@ fixRegExpWellKnownSymbolLogic('replace', function (_, nativeReplace, maybeCallNa
100
102
  result = results[i];
101
103
 
102
104
  var matched = toString(result[0]);
103
- var position = max(min(toInteger(result.index), S.length), 0);
105
+ var position = max(min(toIntegerOrInfinity(result.index), S.length), 0);
104
106
  var captures = [];
105
107
  // NOTE: This is equivalent to
106
108
  // captures = result.slice(1).map(maybeToString)
@@ -4,6 +4,7 @@ var anObject = require('../internals/an-object');
4
4
  var requireObjectCoercible = require('../internals/require-object-coercible');
5
5
  var sameValue = require('../internals/same-value');
6
6
  var toString = require('../internals/to-string');
7
+ var getMethod = require('../internals/get-method');
7
8
  var regExpExec = require('../internals/regexp-exec-abstract');
8
9
 
9
10
  // @@search logic
@@ -13,8 +14,8 @@ fixRegExpWellKnownSymbolLogic('search', function (SEARCH, nativeSearch, maybeCal
13
14
  // https://tc39.es/ecma262/#sec-string.prototype.search
14
15
  function search(regexp) {
15
16
  var O = requireObjectCoercible(this);
16
- var searcher = regexp == undefined ? undefined : regexp[SEARCH];
17
- return searcher !== undefined ? searcher.call(regexp, O) : new RegExp(regexp)[SEARCH](toString(O));
17
+ var searcher = regexp == undefined ? undefined : getMethod(regexp, SEARCH);
18
+ return searcher ? searcher.call(regexp, O) : new RegExp(regexp)[SEARCH](toString(O));
18
19
  },
19
20
  // `RegExp.prototype[@@search]` method
20
21
  // https://tc39.es/ecma262/#sec-regexp.prototype-@@search
@@ -7,6 +7,7 @@ var speciesConstructor = require('../internals/species-constructor');
7
7
  var advanceStringIndex = require('../internals/advance-string-index');
8
8
  var toLength = require('../internals/to-length');
9
9
  var toString = require('../internals/to-string');
10
+ var getMethod = require('../internals/get-method');
10
11
  var callRegExpExec = require('../internals/regexp-exec-abstract');
11
12
  var regexpExec = require('../internals/regexp-exec');
12
13
  var stickyHelpers = require('../internals/regexp-sticky-helpers');
@@ -88,8 +89,8 @@ fixRegExpWellKnownSymbolLogic('split', function (SPLIT, nativeSplit, maybeCallNa
88
89
  // https://tc39.es/ecma262/#sec-string.prototype.split
89
90
  function split(separator, limit) {
90
91
  var O = requireObjectCoercible(this);
91
- var splitter = separator == undefined ? undefined : separator[SPLIT];
92
- return splitter !== undefined
92
+ var splitter = separator == undefined ? undefined : getMethod(separator, SPLIT);
93
+ return splitter
93
94
  ? splitter.call(separator, O, limit)
94
95
  : internalSplit.call(toString(O), separator, limit);
95
96
  },
@@ -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
  });
@@ -4,14 +4,15 @@
4
4
  var $ = require('../internals/export');
5
5
  var DESCRIPTORS = require('../internals/descriptors');
6
6
  var global = require('../internals/global');
7
- var has = require('../internals/has');
7
+ var hasOwn = require('../internals/has-own-property');
8
+ var isCallable = require('../internals/is-callable');
8
9
  var isObject = require('../internals/is-object');
9
10
  var defineProperty = require('../internals/object-define-property').f;
10
11
  var copyConstructorProperties = require('../internals/copy-constructor-properties');
11
12
 
12
13
  var NativeSymbol = global.Symbol;
13
14
 
14
- if (DESCRIPTORS && typeof NativeSymbol == 'function' && (!('description' in NativeSymbol.prototype) ||
15
+ if (DESCRIPTORS && isCallable(NativeSymbol) && (!('description' in NativeSymbol.prototype) ||
15
16
  // Safari 12 bug
16
17
  NativeSymbol().description !== undefined
17
18
  )) {
@@ -38,7 +39,7 @@ if (DESCRIPTORS && typeof NativeSymbol == 'function' && (!('description' in Nati
38
39
  get: function description() {
39
40
  var symbol = isObject(this) ? this.valueOf() : this;
40
41
  var string = symbolToString.call(symbol);
41
- if (has(EmptyStringDescriptionStore, symbol)) return '';
42
+ if (hasOwn(EmptyStringDescriptionStore, symbol)) return '';
42
43
  var desc = nativeSymbol ? string.slice(7, -1) : string.replace(regexp, '$1');
43
44
  return desc === '' ? undefined : desc;
44
45
  }
@@ -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,7 +1,7 @@
1
1
  'use strict';
2
2
  var ArrayBufferViewCore = require('../internals/array-buffer-view-core');
3
- var toLength = require('../internals/to-length');
4
- var toInteger = require('../internals/to-integer');
3
+ var lengthOfArrayLike = require('../internals/length-of-array-like');
4
+ var toIntegerOrInfinity = require('../internals/to-integer-or-infinity');
5
5
 
6
6
  var aTypedArray = ArrayBufferViewCore.aTypedArray;
7
7
  var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;
@@ -10,8 +10,8 @@ var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;
10
10
  // https://github.com/tc39/proposal-relative-indexing-method
11
11
  exportTypedArrayMethod('at', function at(index) {
12
12
  var O = aTypedArray(this);
13
- var len = toLength(O.length);
14
- var relativeIndex = toInteger(index);
13
+ var len = lengthOfArrayLike(O);
14
+ var relativeIndex = toIntegerOrInfinity(index);
15
15
  var k = relativeIndex >= 0 ? relativeIndex : len + relativeIndex;
16
16
  return (k < 0 || k >= len) ? undefined : O[k];
17
17
  });
@@ -1,5 +1,6 @@
1
1
  'use strict';
2
2
  var global = require('../internals/global');
3
+ var PROPER_FUNCTION_NAME = require('../internals/function-name').PROPER;
3
4
  var ArrayBufferViewCore = require('../internals/array-buffer-view-core');
4
5
  var ArrayIterators = require('../modules/es.array.iterator');
5
6
  var wellKnownSymbol = require('../internals/well-known-symbol');
@@ -13,8 +14,7 @@ var aTypedArray = ArrayBufferViewCore.aTypedArray;
13
14
  var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;
14
15
  var nativeTypedArrayIterator = Uint8Array && Uint8Array.prototype[ITERATOR];
15
16
 
16
- var CORRECT_ITER_NAME = !!nativeTypedArrayIterator
17
- && (nativeTypedArrayIterator.name == 'values' || nativeTypedArrayIterator.name == undefined);
17
+ var PROPER_ARRAY_VALUES_NAME = !!nativeTypedArrayIterator && nativeTypedArrayIterator.name === 'values';
18
18
 
19
19
  var typedArrayValues = function values() {
20
20
  return arrayValues.call(aTypedArray(this));
@@ -32,7 +32,7 @@ exportTypedArrayMethod('keys', function keys() {
32
32
  });
33
33
  // `%TypedArray%.prototype.values` method
34
34
  // https://tc39.es/ecma262/#sec-%typedarray%.prototype.values
35
- exportTypedArrayMethod('values', typedArrayValues, !CORRECT_ITER_NAME);
35
+ exportTypedArrayMethod('values', typedArrayValues, PROPER_FUNCTION_NAME && !PROPER_ARRAY_VALUES_NAME);
36
36
  // `%TypedArray%.prototype[@@iterator]` method
37
37
  // https://tc39.es/ecma262/#sec-%typedarray%.prototype-@@iterator
38
- exportTypedArrayMethod(ITERATOR, typedArrayValues, !CORRECT_ITER_NAME);
38
+ exportTypedArrayMethod(ITERATOR, typedArrayValues, PROPER_FUNCTION_NAME && !PROPER_ARRAY_VALUES_NAME);
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
  var ArrayBufferViewCore = require('../internals/array-buffer-view-core');
3
- var toLength = require('../internals/to-length');
3
+ var lengthOfArrayLike = require('../internals/length-of-array-like');
4
4
  var toOffset = require('../internals/to-offset');
5
5
  var toObject = require('../internals/to-object');
6
6
  var fails = require('../internals/fails');
@@ -20,7 +20,7 @@ exportTypedArrayMethod('set', function set(arrayLike /* , offset */) {
20
20
  var offset = toOffset(arguments.length > 1 ? arguments[1] : undefined, 1);
21
21
  var length = this.length;
22
22
  var src = toObject(arrayLike);
23
- var len = toLength(src.length);
23
+ var len = lengthOfArrayLike(src);
24
24
  var index = 0;
25
25
  if (len + offset > length) throw RangeError('Wrong length');
26
26
  while (index < len) this[offset + index] = src[index++];
@@ -2,8 +2,8 @@
2
2
  var ArrayBufferViewCore = require('../internals/array-buffer-view-core');
3
3
  var global = require('../internals/global');
4
4
  var fails = require('../internals/fails');
5
- var aFunction = require('../internals/a-function');
6
- var toLength = require('../internals/to-length');
5
+ var aCallable = require('../internals/a-callable');
6
+ var lengthOfArrayLike = require('../internals/length-of-array-like');
7
7
  var internalSort = require('../internals/array-sort');
8
8
  var FF = require('../internals/engine-ff-version');
9
9
  var IE_OR_EDGE = require('../internals/engine-is-ie-or-edge');
@@ -64,11 +64,11 @@ var getSortCompare = function (comparefn) {
64
64
  // https://tc39.es/ecma262/#sec-%typedarray%.prototype.sort
65
65
  exportTypedArrayMethod('sort', function sort(comparefn) {
66
66
  var array = this;
67
- if (comparefn !== undefined) aFunction(comparefn);
67
+ if (comparefn !== undefined) aCallable(comparefn);
68
68
  if (STABLE_SORT) return nativeSort.call(array, comparefn);
69
69
 
70
70
  aTypedArray(array);
71
- var arrayLength = toLength(array.length);
71
+ var arrayLength = lengthOfArrayLike(array);
72
72
  var items = Array(arrayLength);
73
73
  var index;
74
74
 
@@ -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
+ });
@@ -2,7 +2,7 @@
2
2
  var DESCRIPTORS = require('../internals/descriptors');
3
3
  var addToUnscopables = require('../internals/add-to-unscopables');
4
4
  var toObject = require('../internals/to-object');
5
- var toLength = require('../internals/to-length');
5
+ var lengthOfArrayLike = require('../internals/length-of-array-like');
6
6
  var defineProperty = require('../internals/object-define-property').f;
7
7
 
8
8
  // `Array.prototype.lastIndex` getter
@@ -12,7 +12,7 @@ if (DESCRIPTORS && !('lastIndex' in [])) {
12
12
  configurable: true,
13
13
  get: function lastIndex() {
14
14
  var O = toObject(this);
15
- var len = toLength(O.length);
15
+ var len = lengthOfArrayLike(O);
16
16
  return len == 0 ? 0 : len - 1;
17
17
  }
18
18
  });
@@ -2,7 +2,7 @@
2
2
  var DESCRIPTORS = require('../internals/descriptors');
3
3
  var addToUnscopables = require('../internals/add-to-unscopables');
4
4
  var toObject = require('../internals/to-object');
5
- var toLength = require('../internals/to-length');
5
+ var lengthOfArrayLike = require('../internals/length-of-array-like');
6
6
  var defineProperty = require('../internals/object-define-property').f;
7
7
 
8
8
  // `Array.prototype.lastIndex` accessor
@@ -12,12 +12,12 @@ if (DESCRIPTORS && !('lastItem' in [])) {
12
12
  configurable: true,
13
13
  get: function lastItem() {
14
14
  var O = toObject(this);
15
- var len = toLength(O.length);
15
+ var len = lengthOfArrayLike(O);
16
16
  return len == 0 ? undefined : O[len - 1];
17
17
  },
18
18
  set: function lastItem(value) {
19
19
  var O = toObject(this);
20
- var len = toLength(O.length);
20
+ var len = lengthOfArrayLike(O);
21
21
  return O[len == 0 ? 0 : len - 1] = value;
22
22
  }
23
23
  });
@@ -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
  });