core-js 3.1.3 → 3.3.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 (307) hide show
  1. package/README.md +1 -1
  2. package/configurator.js +7 -0
  3. package/es/global-this.js +3 -0
  4. package/es/index.js +2 -0
  5. package/es/promise/all-settled.js +11 -0
  6. package/es/promise/index.js +1 -0
  7. package/features/array/index.js +1 -0
  8. package/features/array/is-template-object.js +4 -0
  9. package/features/async-iterator/as-indexed-pairs.js +10 -0
  10. package/features/async-iterator/drop.js +10 -0
  11. package/features/async-iterator/every.js +10 -0
  12. package/features/async-iterator/filter.js +10 -0
  13. package/features/async-iterator/find.js +10 -0
  14. package/features/async-iterator/flat-map.js +10 -0
  15. package/features/async-iterator/for-each.js +10 -0
  16. package/features/async-iterator/from.js +10 -0
  17. package/features/async-iterator/index.js +22 -0
  18. package/features/async-iterator/map.js +10 -0
  19. package/features/async-iterator/reduce.js +10 -0
  20. package/features/async-iterator/some.js +10 -0
  21. package/features/async-iterator/take.js +10 -0
  22. package/features/async-iterator/to-array.js +10 -0
  23. package/features/global-this.js +1 -3
  24. package/features/iterator/as-indexed-pairs.js +10 -0
  25. package/features/iterator/drop.js +9 -0
  26. package/features/iterator/every.js +9 -0
  27. package/features/iterator/filter.js +9 -0
  28. package/features/iterator/find.js +9 -0
  29. package/features/iterator/flat-map.js +9 -0
  30. package/features/iterator/for-each.js +9 -0
  31. package/features/iterator/from.js +9 -0
  32. package/features/iterator/index.js +21 -0
  33. package/features/iterator/map.js +9 -0
  34. package/features/iterator/reduce.js +9 -0
  35. package/features/iterator/some.js +9 -0
  36. package/features/iterator/take.js +9 -0
  37. package/features/iterator/to-array.js +9 -0
  38. package/features/map/from.js +2 -0
  39. package/features/map/index.js +3 -0
  40. package/features/map/of.js +2 -0
  41. package/features/map/update-or-insert.js +6 -0
  42. package/features/map/upsert.js +5 -0
  43. package/features/promise/all-settled.js +2 -9
  44. package/features/promise/index.js +1 -0
  45. package/features/set/difference.js +2 -0
  46. package/features/set/from.js +2 -0
  47. package/features/set/is-subset-of.js +2 -0
  48. package/features/set/of.js +2 -0
  49. package/features/set/symmetric-difference.js +2 -0
  50. package/features/set/union.js +2 -0
  51. package/features/symbol/async-dispose.js +4 -0
  52. package/features/symbol/index.js +1 -0
  53. package/features/weak-map/from.js +2 -0
  54. package/features/weak-map/index.js +1 -0
  55. package/features/weak-map/of.js +2 -0
  56. package/features/weak-map/upsert.js +5 -0
  57. package/features/weak-set/from.js +2 -0
  58. package/features/weak-set/of.js +2 -0
  59. package/internals/a-possible-prototype.js +7 -0
  60. package/internals/add-to-unscopables.js +2 -2
  61. package/internals/advance-string-index.js +2 -2
  62. package/internals/array-buffer-view-core.js +5 -4
  63. package/internals/array-buffer.js +21 -16
  64. package/internals/array-copy-within.js +3 -1
  65. package/internals/array-for-each.js +3 -6
  66. package/internals/array-from.js +4 -3
  67. package/internals/array-includes.js +12 -7
  68. package/internals/{array-methods.js → array-iteration.js} +30 -18
  69. package/internals/array-last-index-of.js +3 -2
  70. package/internals/array-reduce.js +30 -21
  71. package/internals/async-iterator-iteration.js +61 -0
  72. package/internals/async-iterator-prototype.js +37 -0
  73. package/internals/collection-delete-all.js +3 -1
  74. package/internals/collection-from.js +3 -2
  75. package/internals/collection-weak.js +5 -5
  76. package/internals/collection.js +14 -14
  77. package/internals/composite-key.js +1 -0
  78. package/internals/create-async-iterator-proxy.js +61 -0
  79. package/internals/create-iterator-proxy.js +51 -0
  80. package/internals/{hide.js → create-non-enumerable-property.js} +0 -0
  81. package/internals/date-to-iso-string.js +12 -14
  82. package/internals/define-iterator.js +3 -3
  83. package/internals/document-create-element.js +2 -2
  84. package/internals/export.js +2 -2
  85. package/internals/fix-regexp-well-known-symbol-logic.js +2 -2
  86. package/internals/function-bind.js +3 -3
  87. package/internals/get-async-iterator-method.js +9 -0
  88. package/internals/global.js +4 -5
  89. package/internals/html.js +2 -4
  90. package/internals/indexed-object.js +1 -1
  91. package/internals/inherit-if-required.js +13 -6
  92. package/internals/internal-state.js +2 -2
  93. package/internals/iterate.js +21 -12
  94. package/internals/iterators-core.js +4 -2
  95. package/internals/map-upsert.js +23 -0
  96. package/internals/math-expm1.js +2 -1
  97. package/internals/math-fround.js +2 -1
  98. package/internals/math-log1p.js +3 -1
  99. package/internals/microtask.js +4 -3
  100. package/internals/native-promise-constructor.js +3 -0
  101. package/internals/native-url.js +13 -4
  102. package/internals/not-a-regexp.js +7 -0
  103. package/internals/object-assign.js +2 -1
  104. package/internals/object-create.js +2 -1
  105. package/internals/object-define-properties.js +4 -2
  106. package/internals/object-define-property.js +2 -0
  107. package/internals/object-get-own-property-descriptor.js +2 -0
  108. package/internals/object-get-own-property-names.js +2 -1
  109. package/internals/object-get-prototype-of.js +2 -1
  110. package/internals/object-keys-internal.js +2 -4
  111. package/internals/object-keys.js +2 -1
  112. package/internals/object-property-is-enumerable.js +2 -0
  113. package/internals/object-set-prototype-of.js +9 -5
  114. package/internals/object-to-array.js +25 -15
  115. package/internals/own-keys.js +2 -4
  116. package/internals/parse-float.js +7 -5
  117. package/internals/parse-int.js +6 -4
  118. package/internals/punycode-to-ascii.js +2 -4
  119. package/internals/redefine.js +3 -3
  120. package/internals/reflect-metadata.js +1 -0
  121. package/internals/regexp-flags.js +1 -0
  122. package/internals/set-global.js +2 -2
  123. package/internals/set-species.js +8 -5
  124. package/internals/shared-store.js +7 -0
  125. package/internals/shared.js +2 -6
  126. package/internals/string-multibyte.js +27 -0
  127. package/internals/string-pad.js +25 -11
  128. package/internals/string-trim.js +20 -8
  129. package/internals/task.js +3 -1
  130. package/internals/to-offset.js +3 -3
  131. package/internals/to-positive-integer.js +7 -0
  132. package/internals/to-primitive.js +7 -6
  133. package/internals/typed-array-constructor.js +15 -12
  134. package/internals/typed-array-from.js +3 -2
  135. package/internals/uid.js +1 -1
  136. package/internals/user-agent.js +2 -4
  137. package/modules/es.array.every.js +3 -6
  138. package/modules/es.array.fill.js +3 -1
  139. package/modules/es.array.filter.js +3 -6
  140. package/modules/es.array.find-index.js +2 -3
  141. package/modules/es.array.find.js +2 -3
  142. package/modules/es.array.flat-map.js +1 -1
  143. package/modules/es.array.flat.js +1 -1
  144. package/modules/es.array.includes.js +2 -4
  145. package/modules/es.array.index-of.js +2 -3
  146. package/modules/es.array.is-array.js +3 -1
  147. package/modules/es.array.map.js +3 -6
  148. package/modules/es.array.reduce-right.js +3 -4
  149. package/modules/es.array.reduce.js +3 -5
  150. package/modules/es.array.slice.js +1 -3
  151. package/modules/es.array.some.js +3 -6
  152. package/modules/es.array.splice.js +1 -3
  153. package/modules/es.date.to-primitive.js +4 -2
  154. package/modules/es.global-this.js +8 -0
  155. package/modules/es.map.js +1 -1
  156. package/modules/es.math.hypot.js +6 -1
  157. package/modules/es.number.constructor.js +9 -10
  158. package/modules/es.number.to-fixed.js +57 -53
  159. package/modules/es.object.entries.js +2 -2
  160. package/modules/es.object.get-own-property-descriptors.js +3 -3
  161. package/modules/es.object.get-prototype-of.js +1 -0
  162. package/modules/es.object.values.js +2 -2
  163. package/modules/es.promise.all-settled.js +43 -0
  164. package/modules/es.promise.finally.js +8 -0
  165. package/modules/es.promise.js +30 -14
  166. package/modules/es.reflect.apply.js +2 -2
  167. package/modules/es.reflect.construct.js +4 -4
  168. package/modules/es.reflect.define-property.js +5 -5
  169. package/modules/es.reflect.delete-property.js +1 -1
  170. package/modules/es.reflect.get-own-property-descriptor.js +2 -2
  171. package/modules/es.reflect.get-prototype-of.js +1 -1
  172. package/modules/es.reflect.get.js +3 -3
  173. package/modules/es.reflect.set-prototype-of.js +4 -2
  174. package/modules/es.reflect.set.js +3 -3
  175. package/modules/es.regexp.constructor.js +3 -3
  176. package/modules/es.regexp.to-string.js +1 -1
  177. package/modules/es.set.js +1 -1
  178. package/modules/es.string.code-point-at.js +2 -2
  179. package/modules/es.string.ends-with.js +6 -5
  180. package/modules/es.string.includes.js +4 -3
  181. package/modules/es.string.iterator.js +2 -2
  182. package/modules/es.string.match-all.js +22 -7
  183. package/modules/es.string.pad-end.js +2 -2
  184. package/modules/es.string.pad-start.js +2 -2
  185. package/modules/es.string.starts-with.js +8 -6
  186. package/modules/es.string.trim-end.js +2 -2
  187. package/modules/es.string.trim-start.js +2 -2
  188. package/modules/es.string.trim.js +3 -5
  189. package/modules/es.symbol.js +97 -87
  190. package/modules/es.typed-array.copy-within.js +2 -2
  191. package/modules/es.typed-array.every.js +2 -3
  192. package/modules/es.typed-array.fill.js +2 -2
  193. package/modules/es.typed-array.filter.js +3 -4
  194. package/modules/es.typed-array.find-index.js +2 -3
  195. package/modules/es.typed-array.find.js +2 -3
  196. package/modules/es.typed-array.for-each.js +2 -3
  197. package/modules/es.typed-array.includes.js +2 -3
  198. package/modules/es.typed-array.index-of.js +2 -3
  199. package/modules/es.typed-array.iterator.js +1 -1
  200. package/modules/es.typed-array.join.js +2 -2
  201. package/modules/es.typed-array.last-index-of.js +2 -2
  202. package/modules/es.typed-array.map.js +5 -7
  203. package/modules/es.typed-array.of.js +1 -1
  204. package/modules/es.typed-array.reduce-right.js +2 -2
  205. package/modules/es.typed-array.reduce.js +2 -2
  206. package/modules/es.typed-array.reverse.js +2 -1
  207. package/modules/es.typed-array.set.js +2 -2
  208. package/modules/es.typed-array.slice.js +3 -3
  209. package/modules/es.typed-array.some.js +2 -3
  210. package/modules/es.typed-array.sort.js +2 -2
  211. package/modules/es.typed-array.subarray.js +1 -1
  212. package/modules/es.typed-array.to-locale-string.js +7 -6
  213. package/modules/es.weak-map.js +1 -1
  214. package/modules/es.weak-set.js +1 -1
  215. package/modules/esnext.aggregate-error.js +28 -4
  216. package/modules/esnext.array.is-template-object.js +28 -0
  217. package/modules/esnext.async-iterator.as-indexed-pairs.js +27 -0
  218. package/modules/esnext.async-iterator.constructor.js +25 -0
  219. package/modules/esnext.async-iterator.drop.js +41 -0
  220. package/modules/esnext.async-iterator.every.js +10 -0
  221. package/modules/esnext.async-iterator.filter.js +42 -0
  222. package/modules/esnext.async-iterator.find.js +10 -0
  223. package/modules/esnext.async-iterator.flat-map.js +67 -0
  224. package/modules/esnext.async-iterator.for-each.js +10 -0
  225. package/modules/esnext.async-iterator.from.js +30 -0
  226. package/modules/esnext.async-iterator.map.js +30 -0
  227. package/modules/esnext.async-iterator.reduce.js +46 -0
  228. package/modules/esnext.async-iterator.some.js +10 -0
  229. package/modules/esnext.async-iterator.take.js +22 -0
  230. package/modules/esnext.async-iterator.to-array.js +10 -0
  231. package/modules/esnext.global-this.js +2 -6
  232. package/modules/esnext.iterator.as-indexed-pairs.js +20 -0
  233. package/modules/esnext.iterator.constructor.js +39 -0
  234. package/modules/esnext.iterator.drop.js +30 -0
  235. package/modules/esnext.iterator.every.js +16 -0
  236. package/modules/esnext.iterator.filter.js +30 -0
  237. package/modules/esnext.iterator.find.js +16 -0
  238. package/modules/esnext.iterator.flat-map.js +45 -0
  239. package/modules/esnext.iterator.for-each.js +11 -0
  240. package/modules/esnext.iterator.from.js +32 -0
  241. package/modules/esnext.iterator.map.js +23 -0
  242. package/modules/esnext.iterator.reduce.js +25 -0
  243. package/modules/esnext.iterator.some.js +16 -0
  244. package/modules/esnext.iterator.take.js +25 -0
  245. package/modules/esnext.iterator.to-array.js +15 -0
  246. package/modules/esnext.map.every.js +4 -5
  247. package/modules/esnext.map.filter.js +4 -5
  248. package/modules/esnext.map.find-key.js +4 -5
  249. package/modules/esnext.map.find.js +4 -5
  250. package/modules/esnext.map.includes.js +4 -7
  251. package/modules/esnext.map.key-of.js +4 -7
  252. package/modules/esnext.map.map-keys.js +4 -5
  253. package/modules/esnext.map.map-values.js +4 -5
  254. package/modules/esnext.map.reduce.js +12 -11
  255. package/modules/esnext.map.some.js +4 -5
  256. package/modules/esnext.map.update-or-insert.js +11 -0
  257. package/modules/esnext.map.update.js +3 -2
  258. package/modules/esnext.map.upsert.js +10 -0
  259. package/modules/esnext.math.signbit.js +0 -1
  260. package/modules/esnext.observable.js +26 -25
  261. package/modules/esnext.promise.all-settled.js +2 -43
  262. package/modules/esnext.reflect.get-metadata-keys.js +1 -0
  263. package/modules/esnext.set.every.js +4 -4
  264. package/modules/esnext.set.filter.js +4 -4
  265. package/modules/esnext.set.find.js +4 -4
  266. package/modules/esnext.set.is-disjoint-from.js +3 -5
  267. package/modules/esnext.set.is-subset-of.js +3 -5
  268. package/modules/esnext.set.is-superset-of.js +3 -5
  269. package/modules/esnext.set.join.js +2 -2
  270. package/modules/esnext.set.map.js +4 -4
  271. package/modules/esnext.set.reduce.js +12 -10
  272. package/modules/esnext.set.some.js +4 -4
  273. package/modules/esnext.string.at.js +2 -2
  274. package/modules/esnext.string.code-points.js +5 -3
  275. package/modules/esnext.string.match-all.js +0 -1
  276. package/modules/esnext.string.replace-all.js +16 -22
  277. package/modules/esnext.symbol.async-dispose.js +5 -0
  278. package/modules/esnext.symbol.dispose.js +1 -1
  279. package/modules/esnext.symbol.replace-all.js +1 -2
  280. package/modules/esnext.weak-map.upsert.js +10 -0
  281. package/modules/web.dom-collections.for-each.js +2 -2
  282. package/modules/web.dom-collections.iterator.js +6 -4
  283. package/modules/web.immediate.js +5 -0
  284. package/modules/web.timers.js +12 -7
  285. package/modules/web.url-search-params.js +52 -41
  286. package/modules/web.url.js +45 -43
  287. package/package.json +2 -2
  288. package/postinstall.js +49 -0
  289. package/proposals/array-is-template-object.js +1 -0
  290. package/proposals/iterator-helpers.js +20 -0
  291. package/proposals/map-update-or-insert.js +2 -0
  292. package/proposals/map-upsert.js +5 -0
  293. package/proposals/promise-all-settled.js +1 -0
  294. package/proposals/string-match-all.js +0 -2
  295. package/proposals/using-statement.js +1 -0
  296. package/stable/global-this.js +1 -3
  297. package/stable/promise/all-settled.js +1 -0
  298. package/stage/1.js +1 -3
  299. package/stage/2.js +4 -1
  300. package/stage/3.js +2 -2
  301. package/stage/4.js +2 -0
  302. package/LICENSE +0 -19
  303. package/internals/enum-keys.js +0 -16
  304. package/internals/string-at.js +0 -17
  305. package/internals/validate-set-prototype-of-arguments.js +0 -9
  306. package/internals/validate-string-method-arguments.js +0 -9
  307. package/scripts/postinstall.js +0 -23
@@ -3,12 +3,14 @@ var definePropertyModule = require('../internals/object-define-property');
3
3
  var anObject = require('../internals/an-object');
4
4
  var objectKeys = require('../internals/object-keys');
5
5
 
6
+ // `Object.defineProperties` method
7
+ // https://tc39.github.io/ecma262/#sec-object.defineproperties
6
8
  module.exports = DESCRIPTORS ? Object.defineProperties : function defineProperties(O, Properties) {
7
9
  anObject(O);
8
10
  var keys = objectKeys(Properties);
9
11
  var length = keys.length;
10
- var i = 0;
12
+ var index = 0;
11
13
  var key;
12
- while (length > i) definePropertyModule.f(O, key = keys[i++], Properties[key]);
14
+ while (length > index) definePropertyModule.f(O, key = keys[index++], Properties[key]);
13
15
  return O;
14
16
  };
@@ -5,6 +5,8 @@ var toPrimitive = require('../internals/to-primitive');
5
5
 
6
6
  var nativeDefineProperty = Object.defineProperty;
7
7
 
8
+ // `Object.defineProperty` method
9
+ // https://tc39.github.io/ecma262/#sec-object.defineproperty
8
10
  exports.f = DESCRIPTORS ? nativeDefineProperty : function defineProperty(O, P, Attributes) {
9
11
  anObject(O);
10
12
  P = toPrimitive(P, true);
@@ -8,6 +8,8 @@ var IE8_DOM_DEFINE = require('../internals/ie8-dom-define');
8
8
 
9
9
  var nativeGetOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;
10
10
 
11
+ // `Object.getOwnPropertyDescriptor` method
12
+ // https://tc39.github.io/ecma262/#sec-object.getownpropertydescriptor
11
13
  exports.f = DESCRIPTORS ? nativeGetOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {
12
14
  O = toIndexedObject(O);
13
15
  P = toPrimitive(P, true);
@@ -1,9 +1,10 @@
1
- // 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O)
2
1
  var internalObjectKeys = require('../internals/object-keys-internal');
3
2
  var enumBugKeys = require('../internals/enum-bug-keys');
4
3
 
5
4
  var hiddenKeys = enumBugKeys.concat('length', 'prototype');
6
5
 
6
+ // `Object.getOwnPropertyNames` method
7
+ // https://tc39.github.io/ecma262/#sec-object.getownpropertynames
7
8
  exports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {
8
9
  return internalObjectKeys(O, hiddenKeys);
9
10
  };
@@ -6,7 +6,8 @@ var CORRECT_PROTOTYPE_GETTER = require('../internals/correct-prototype-getter');
6
6
  var IE_PROTO = sharedKey('IE_PROTO');
7
7
  var ObjectPrototype = Object.prototype;
8
8
 
9
- // 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)
9
+ // `Object.getPrototypeOf` method
10
+ // https://tc39.github.io/ecma262/#sec-object.getprototypeof
10
11
  module.exports = CORRECT_PROTOTYPE_GETTER ? Object.getPrototypeOf : function (O) {
11
12
  O = toObject(O);
12
13
  if (has(O, IE_PROTO)) return O[IE_PROTO];
@@ -1,10 +1,8 @@
1
1
  var has = require('../internals/has');
2
2
  var toIndexedObject = require('../internals/to-indexed-object');
3
- var arrayIncludes = require('../internals/array-includes');
3
+ var indexOf = require('../internals/array-includes').indexOf;
4
4
  var hiddenKeys = require('../internals/hidden-keys');
5
5
 
6
- var arrayIndexOf = arrayIncludes(false);
7
-
8
6
  module.exports = function (object, names) {
9
7
  var O = toIndexedObject(object);
10
8
  var i = 0;
@@ -13,7 +11,7 @@ module.exports = function (object, names) {
13
11
  for (key in O) !has(hiddenKeys, key) && has(O, key) && result.push(key);
14
12
  // Don't enum bug & hidden keys
15
13
  while (names.length > i) if (has(O, key = names[i++])) {
16
- ~arrayIndexOf(result, key) || result.push(key);
14
+ ~indexOf(result, key) || result.push(key);
17
15
  }
18
16
  return result;
19
17
  };
@@ -1,7 +1,8 @@
1
1
  var internalObjectKeys = require('../internals/object-keys-internal');
2
2
  var enumBugKeys = require('../internals/enum-bug-keys');
3
3
 
4
- // 19.1.2.14 / 15.2.3.14 Object.keys(O)
4
+ // `Object.keys` method
5
+ // https://tc39.github.io/ecma262/#sec-object.keys
5
6
  module.exports = Object.keys || function keys(O) {
6
7
  return internalObjectKeys(O, enumBugKeys);
7
8
  };
@@ -5,6 +5,8 @@ var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;
5
5
  // Nashorn ~ JDK8 bug
6
6
  var NASHORN_BUG = getOwnPropertyDescriptor && !nativePropertyIsEnumerable.call({ 1: 2 }, 1);
7
7
 
8
+ // `Object.prototype.propertyIsEnumerable` method implementation
9
+ // https://tc39.github.io/ecma262/#sec-object.prototype.propertyisenumerable
8
10
  exports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {
9
11
  var descriptor = getOwnPropertyDescriptor(this, V);
10
12
  return !!descriptor && descriptor.enumerable;
@@ -1,19 +1,23 @@
1
- var validateSetPrototypeOfArguments = require('../internals/validate-set-prototype-of-arguments');
1
+ var anObject = require('../internals/an-object');
2
+ var aPossiblePrototype = require('../internals/a-possible-prototype');
2
3
 
4
+ // `Object.setPrototypeOf` method
5
+ // https://tc39.github.io/ecma262/#sec-object.setprototypeof
3
6
  // Works with __proto__ only. Old v8 can't work with null proto objects.
4
7
  /* eslint-disable no-proto */
5
8
  module.exports = Object.setPrototypeOf || ('__proto__' in {} ? function () {
6
- var correctSetter = false;
9
+ var CORRECT_SETTER = false;
7
10
  var test = {};
8
11
  var setter;
9
12
  try {
10
13
  setter = Object.getOwnPropertyDescriptor(Object.prototype, '__proto__').set;
11
14
  setter.call(test, []);
12
- correctSetter = test instanceof Array;
15
+ CORRECT_SETTER = test instanceof Array;
13
16
  } catch (error) { /* empty */ }
14
17
  return function setPrototypeOf(O, proto) {
15
- validateSetPrototypeOfArguments(O, proto);
16
- if (correctSetter) setter.call(O, proto);
18
+ anObject(O);
19
+ aPossiblePrototype(proto);
20
+ if (CORRECT_SETTER) setter.call(O, proto);
17
21
  else O.__proto__ = proto;
18
22
  return O;
19
23
  };
@@ -3,20 +3,30 @@ var objectKeys = require('../internals/object-keys');
3
3
  var toIndexedObject = require('../internals/to-indexed-object');
4
4
  var propertyIsEnumerable = require('../internals/object-property-is-enumerable').f;
5
5
 
6
- // TO_ENTRIES: true -> Object.entries
7
- // TO_ENTRIES: false -> Object.values
8
- module.exports = function (it, TO_ENTRIES) {
9
- var O = toIndexedObject(it);
10
- var keys = objectKeys(O);
11
- var length = keys.length;
12
- var i = 0;
13
- var result = [];
14
- var key;
15
- while (length > i) {
16
- key = keys[i++];
17
- if (!DESCRIPTORS || propertyIsEnumerable.call(O, key)) {
18
- result.push(TO_ENTRIES ? [key, O[key]] : O[key]);
6
+ // `Object.{ entries, values }` methods implementation
7
+ var createMethod = function (TO_ENTRIES) {
8
+ return function (it) {
9
+ var O = toIndexedObject(it);
10
+ var keys = objectKeys(O);
11
+ var length = keys.length;
12
+ var i = 0;
13
+ var result = [];
14
+ var key;
15
+ while (length > i) {
16
+ key = keys[i++];
17
+ if (!DESCRIPTORS || propertyIsEnumerable.call(O, key)) {
18
+ result.push(TO_ENTRIES ? [key, O[key]] : O[key]);
19
+ }
19
20
  }
20
- }
21
- return result;
21
+ return result;
22
+ };
23
+ };
24
+
25
+ module.exports = {
26
+ // `Object.entries` method
27
+ // https://tc39.github.io/ecma262/#sec-object.entries
28
+ entries: createMethod(true),
29
+ // `Object.values` method
30
+ // https://tc39.github.io/ecma262/#sec-object.values
31
+ values: createMethod(false)
22
32
  };
@@ -1,12 +1,10 @@
1
- var global = require('../internals/global');
1
+ var getBuiltIn = require('../internals/get-built-in');
2
2
  var getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');
3
3
  var getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');
4
4
  var anObject = require('../internals/an-object');
5
5
 
6
- var Reflect = global.Reflect;
7
-
8
6
  // all object keys, includes non-enumerable and symbols
9
- module.exports = Reflect && Reflect.ownKeys || function ownKeys(it) {
7
+ module.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {
10
8
  var keys = getOwnPropertyNamesModule.f(anObject(it));
11
9
  var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;
12
10
  return getOwnPropertySymbols ? keys.concat(getOwnPropertySymbols(it)) : keys;
@@ -1,12 +1,14 @@
1
1
  var global = require('../internals/global');
2
- var internalStringTrim = require('../internals/string-trim');
2
+ var trim = require('../internals/string-trim').trim;
3
3
  var whitespaces = require('../internals/whitespaces');
4
4
 
5
5
  var nativeParseFloat = global.parseFloat;
6
6
  var FORCED = 1 / nativeParseFloat(whitespaces + '-0') !== -Infinity;
7
7
 
8
- module.exports = FORCED ? function parseFloat(str) {
9
- var string = internalStringTrim(String(str), 3);
10
- var result = nativeParseFloat(string);
11
- return result === 0 && string.charAt(0) == '-' ? -0 : result;
8
+ // `parseFloat` method
9
+ // https://tc39.github.io/ecma262/#sec-parsefloat-string
10
+ module.exports = FORCED ? function parseFloat(string) {
11
+ var trimmedString = trim(String(string));
12
+ var result = nativeParseFloat(trimmedString);
13
+ return result === 0 && trimmedString.charAt(0) == '-' ? -0 : result;
12
14
  } : nativeParseFloat;
@@ -1,12 +1,14 @@
1
1
  var global = require('../internals/global');
2
- var internalStringTrim = require('../internals/string-trim');
2
+ var trim = require('../internals/string-trim').trim;
3
3
  var whitespaces = require('../internals/whitespaces');
4
4
 
5
5
  var nativeParseInt = global.parseInt;
6
6
  var hex = /^[+-]?0[Xx]/;
7
7
  var FORCED = nativeParseInt(whitespaces + '08') !== 8 || nativeParseInt(whitespaces + '0x16') !== 22;
8
8
 
9
- module.exports = FORCED ? function parseInt(str, radix) {
10
- var string = internalStringTrim(String(str), 3);
11
- return nativeParseInt(string, (radix >>> 0) || (hex.test(string) ? 16 : 10));
9
+ // `parseInt` method
10
+ // https://tc39.github.io/ecma262/#sec-parseint-string-radix
11
+ module.exports = FORCED ? function parseInt(string, radix) {
12
+ var S = trim(String(string));
13
+ return nativeParseInt(S, (radix >>> 0) || (hex.test(S) ? 16 : 10));
12
14
  } : nativeParseInt;
@@ -64,7 +64,7 @@ var adapt = function (delta, numPoints, firstTime) {
64
64
  var k = 0;
65
65
  delta = firstTime ? floor(delta / damp) : delta >> 1;
66
66
  delta += floor(delta / numPoints);
67
- for (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) {
67
+ for (; delta > baseMinusTMin * tMax >> 1; k += base) {
68
68
  delta = floor(delta / baseMinusTMin);
69
69
  }
70
70
  return floor(k + (baseMinusTMin + 1) * delta / (delta + skew));
@@ -136,9 +136,7 @@ var encode = function (input) {
136
136
  var q = delta;
137
137
  for (var k = base; /* no condition */; k += base) {
138
138
  var t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);
139
- if (q < t) {
140
- break;
141
- }
139
+ if (q < t) break;
142
140
  var qMinusT = q - t;
143
141
  var baseMinusT = base - t;
144
142
  output.push(stringFromCharCode(digitToBasic(t + qMinusT % baseMinusT)));
@@ -1,6 +1,6 @@
1
1
  var global = require('../internals/global');
2
2
  var shared = require('../internals/shared');
3
- var hide = require('../internals/hide');
3
+ var createNonEnumerableProperty = require('../internals/create-non-enumerable-property');
4
4
  var has = require('../internals/has');
5
5
  var setGlobal = require('../internals/set-global');
6
6
  var nativeFunctionToString = require('../internals/function-to-string');
@@ -19,7 +19,7 @@ shared('inspectSource', function (it) {
19
19
  var simple = options ? !!options.enumerable : false;
20
20
  var noTargetGet = options ? !!options.noTargetGet : false;
21
21
  if (typeof value == 'function') {
22
- if (typeof key == 'string' && !has(value, 'name')) hide(value, 'name', key);
22
+ if (typeof key == 'string' && !has(value, 'name')) createNonEnumerableProperty(value, 'name', key);
23
23
  enforceInternalState(value).source = TEMPLATE.join(typeof key == 'string' ? key : '');
24
24
  }
25
25
  if (O === global) {
@@ -32,7 +32,7 @@ shared('inspectSource', function (it) {
32
32
  simple = true;
33
33
  }
34
34
  if (simple) O[key] = value;
35
- else hide(O, key, value);
35
+ else createNonEnumerableProperty(O, key, value);
36
36
  // add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative
37
37
  })(Function.prototype, 'toString', function toString() {
38
38
  return typeof this == 'function' && getInternalState(this).source || nativeFunctionToString.call(this);
@@ -1,3 +1,4 @@
1
+ // TODO: in core-js@4, move /modules/ dependencies to public entries for better optimization by tools like `preset-env`
1
2
  var Map = require('../modules/es.map');
2
3
  var WeakMap = require('../modules/es.weak-map');
3
4
  var shared = require('../internals/shared');
@@ -9,6 +9,7 @@ module.exports = function () {
9
9
  if (that.global) result += 'g';
10
10
  if (that.ignoreCase) result += 'i';
11
11
  if (that.multiline) result += 'm';
12
+ if (that.dotAll) result += 's';
12
13
  if (that.unicode) result += 'u';
13
14
  if (that.sticky) result += 'y';
14
15
  return result;
@@ -1,9 +1,9 @@
1
1
  var global = require('../internals/global');
2
- var hide = require('../internals/hide');
2
+ var createNonEnumerableProperty = require('../internals/create-non-enumerable-property');
3
3
 
4
4
  module.exports = function (key, value) {
5
5
  try {
6
- hide(global, key, value);
6
+ createNonEnumerableProperty(global, key, value);
7
7
  } catch (error) {
8
8
  global[key] = value;
9
9
  } return value;
@@ -7,10 +7,13 @@ var DESCRIPTORS = require('../internals/descriptors');
7
7
  var SPECIES = wellKnownSymbol('species');
8
8
 
9
9
  module.exports = function (CONSTRUCTOR_NAME) {
10
- var C = getBuiltIn(CONSTRUCTOR_NAME);
10
+ var Constructor = getBuiltIn(CONSTRUCTOR_NAME);
11
11
  var defineProperty = definePropertyModule.f;
12
- if (DESCRIPTORS && C && !C[SPECIES]) defineProperty(C, SPECIES, {
13
- configurable: true,
14
- get: function () { return this; }
15
- });
12
+
13
+ if (DESCRIPTORS && Constructor && !Constructor[SPECIES]) {
14
+ defineProperty(Constructor, SPECIES, {
15
+ configurable: true,
16
+ get: function () { return this; }
17
+ });
18
+ }
16
19
  };
@@ -0,0 +1,7 @@
1
+ var global = require('../internals/global');
2
+ var setGlobal = require('../internals/set-global');
3
+
4
+ var SHARED = '__core-js_shared__';
5
+ var store = global[SHARED] || setGlobal(SHARED, {});
6
+
7
+ module.exports = store;
@@ -1,14 +1,10 @@
1
- var global = require('../internals/global');
2
- var setGlobal = require('../internals/set-global');
3
1
  var IS_PURE = require('../internals/is-pure');
4
-
5
- var SHARED = '__core-js_shared__';
6
- var store = global[SHARED] || setGlobal(SHARED, {});
2
+ var store = require('../internals/shared-store');
7
3
 
8
4
  (module.exports = function (key, value) {
9
5
  return store[key] || (store[key] = value !== undefined ? value : {});
10
6
  })('versions', []).push({
11
- version: '3.1.3',
7
+ version: '3.3.0',
12
8
  mode: IS_PURE ? 'pure' : 'global',
13
9
  copyright: '© 2019 Denis Pushkarev (zloirock.ru)'
14
10
  });
@@ -0,0 +1,27 @@
1
+ var toInteger = require('../internals/to-integer');
2
+ var requireObjectCoercible = require('../internals/require-object-coercible');
3
+
4
+ // `String.prototype.{ codePointAt, at }` methods implementation
5
+ var createMethod = function (CONVERT_TO_STRING) {
6
+ return function ($this, pos) {
7
+ var S = String(requireObjectCoercible($this));
8
+ var position = toInteger(pos);
9
+ var size = S.length;
10
+ var first, second;
11
+ if (position < 0 || position >= size) return CONVERT_TO_STRING ? '' : undefined;
12
+ first = S.charCodeAt(position);
13
+ return first < 0xD800 || first > 0xDBFF || position + 1 === size
14
+ || (second = S.charCodeAt(position + 1)) < 0xDC00 || second > 0xDFFF
15
+ ? CONVERT_TO_STRING ? S.charAt(position) : first
16
+ : CONVERT_TO_STRING ? S.slice(position, position + 2) : (first - 0xD800 << 10) + (second - 0xDC00) + 0x10000;
17
+ };
18
+ };
19
+
20
+ module.exports = {
21
+ // `String.prototype.codePointAt` method
22
+ // https://tc39.github.io/ecma262/#sec-string.prototype.codepointat
23
+ codeAt: createMethod(false),
24
+ // `String.prototype.at` method
25
+ // https://github.com/mathiasbynens/String.prototype.at
26
+ charAt: createMethod(true)
27
+ };
@@ -3,15 +3,29 @@ var toLength = require('../internals/to-length');
3
3
  var repeat = require('../internals/string-repeat');
4
4
  var requireObjectCoercible = require('../internals/require-object-coercible');
5
5
 
6
- module.exports = function (that, maxLength, fillString, left) {
7
- var S = String(requireObjectCoercible(that));
8
- var stringLength = S.length;
9
- var fillStr = fillString === undefined ? ' ' : String(fillString);
10
- var intMaxLength = toLength(maxLength);
11
- var fillLen, stringFiller;
12
- if (intMaxLength <= stringLength || fillStr == '') return S;
13
- fillLen = intMaxLength - stringLength;
14
- stringFiller = repeat.call(fillStr, Math.ceil(fillLen / fillStr.length));
15
- if (stringFiller.length > fillLen) stringFiller = stringFiller.slice(0, fillLen);
16
- return left ? stringFiller + S : S + stringFiller;
6
+ var ceil = Math.ceil;
7
+
8
+ // `String.prototype.{ padStart, padEnd }` methods implementation
9
+ var createMethod = function (IS_END) {
10
+ return function ($this, maxLength, fillString) {
11
+ var S = String(requireObjectCoercible($this));
12
+ var stringLength = S.length;
13
+ var fillStr = fillString === undefined ? ' ' : String(fillString);
14
+ var intMaxLength = toLength(maxLength);
15
+ var fillLen, stringFiller;
16
+ if (intMaxLength <= stringLength || fillStr == '') return S;
17
+ fillLen = intMaxLength - stringLength;
18
+ stringFiller = repeat.call(fillStr, ceil(fillLen / fillStr.length));
19
+ if (stringFiller.length > fillLen) stringFiller = stringFiller.slice(0, fillLen);
20
+ return IS_END ? S + stringFiller : stringFiller + S;
21
+ };
22
+ };
23
+
24
+ module.exports = {
25
+ // `String.prototype.padStart` method
26
+ // https://tc39.github.io/ecma262/#sec-string.prototype.padstart
27
+ start: createMethod(false),
28
+ // `String.prototype.padEnd` method
29
+ // https://tc39.github.io/ecma262/#sec-string.prototype.padend
30
+ end: createMethod(true)
17
31
  };
@@ -5,12 +5,24 @@ var whitespace = '[' + whitespaces + ']';
5
5
  var ltrim = RegExp('^' + whitespace + whitespace + '*');
6
6
  var rtrim = RegExp(whitespace + whitespace + '*$');
7
7
 
8
- // 1 -> String#trimStart
9
- // 2 -> String#trimEnd
10
- // 3 -> String#trim
11
- module.exports = function (string, TYPE) {
12
- string = String(requireObjectCoercible(string));
13
- if (TYPE & 1) string = string.replace(ltrim, '');
14
- if (TYPE & 2) string = string.replace(rtrim, '');
15
- return string;
8
+ // `String.prototype.{ trim, trimStart, trimEnd, trimLeft, trimRight }` methods implementation
9
+ var createMethod = function (TYPE) {
10
+ return function ($this) {
11
+ var string = String(requireObjectCoercible($this));
12
+ if (TYPE & 1) string = string.replace(ltrim, '');
13
+ if (TYPE & 2) string = string.replace(rtrim, '');
14
+ return string;
15
+ };
16
+ };
17
+
18
+ module.exports = {
19
+ // `String.prototype.{ trimLeft, trimStart }` methods
20
+ // https://tc39.github.io/ecma262/#sec-string.prototype.trimstart
21
+ start: createMethod(1),
22
+ // `String.prototype.{ trimRight, trimEnd }` methods
23
+ // https://tc39.github.io/ecma262/#sec-string.prototype.trimend
24
+ end: createMethod(2),
25
+ // `String.prototype.trim` method
26
+ // https://tc39.github.io/ecma262/#sec-string.prototype.trim
27
+ trim: createMethod(3)
16
28
  };
package/internals/task.js CHANGED
@@ -4,6 +4,7 @@ var classof = require('../internals/classof-raw');
4
4
  var bind = require('../internals/bind-context');
5
5
  var html = require('../internals/html');
6
6
  var createElement = require('../internals/document-create-element');
7
+ var userAgent = require('../internals/user-agent');
7
8
 
8
9
  var location = global.location;
9
10
  var set = global.setImmediate;
@@ -67,7 +68,8 @@ if (!set || !clear) {
67
68
  Dispatch.now(runner(id));
68
69
  };
69
70
  // Browsers with MessageChannel, includes WebWorkers
70
- } else if (MessageChannel) {
71
+ // except iOS - https://github.com/zloirock/core-js/issues/624
72
+ } else if (MessageChannel && !/(iphone|ipod|ipad).*applewebkit/i.test(userAgent)) {
71
73
  channel = new MessageChannel();
72
74
  port = channel.port2;
73
75
  channel.port1.onmessage = listener;
@@ -1,7 +1,7 @@
1
- var toInteger = require('../internals/to-integer');
1
+ var toPositiveInteger = require('../internals/to-positive-integer');
2
2
 
3
3
  module.exports = function (it, BYTES) {
4
- var offset = toInteger(it);
5
- if (offset < 0 || offset % BYTES) throw RangeError('Wrong offset');
4
+ var offset = toPositiveInteger(it);
5
+ if (offset % BYTES) throw RangeError('Wrong offset');
6
6
  return offset;
7
7
  };
@@ -0,0 +1,7 @@
1
+ var toInteger = require('../internals/to-integer');
2
+
3
+ module.exports = function (it) {
4
+ var result = toInteger(it);
5
+ if (result < 0) throw RangeError("The argument can't be less than 0");
6
+ return result;
7
+ };
@@ -1,13 +1,14 @@
1
1
  var isObject = require('../internals/is-object');
2
2
 
3
- // 7.1.1 ToPrimitive(input [, PreferredType])
3
+ // `ToPrimitive` abstract operation
4
+ // https://tc39.github.io/ecma262/#sec-toprimitive
4
5
  // instead of the ES6 spec version, we didn't implement @@toPrimitive case
5
6
  // and the second argument - flag - preferred type is a string
6
- module.exports = function (it, S) {
7
- if (!isObject(it)) return it;
7
+ module.exports = function (input, PREFERRED_STRING) {
8
+ if (!isObject(input)) return input;
8
9
  var fn, val;
9
- if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;
10
- if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;
11
- if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;
10
+ if (PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val;
11
+ if (typeof (fn = input.valueOf) == 'function' && !isObject(val = fn.call(input))) return val;
12
+ if (!PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val;
12
13
  throw TypeError("Can't convert object to primitive value");
13
14
  };
@@ -7,7 +7,7 @@ var ArrayBufferViewCore = require('../internals/array-buffer-view-core');
7
7
  var ArrayBufferModule = require('../internals/array-buffer');
8
8
  var anInstance = require('../internals/an-instance');
9
9
  var createPropertyDescriptor = require('../internals/create-property-descriptor');
10
- var hide = require('../internals/hide');
10
+ var createNonEnumerableProperty = require('../internals/create-non-enumerable-property');
11
11
  var toLength = require('../internals/to-length');
12
12
  var toIndex = require('../internals/to-index');
13
13
  var toOffset = require('../internals/to-offset');
@@ -19,7 +19,7 @@ var create = require('../internals/object-create');
19
19
  var setPrototypeOf = require('../internals/object-set-prototype-of');
20
20
  var getOwnPropertyNames = require('../internals/object-get-own-property-names').f;
21
21
  var typedArrayFrom = require('../internals/typed-array-from');
22
- var arrayMethods = require('../internals/array-methods');
22
+ var forEach = require('../internals/array-iteration').forEach;
23
23
  var setSpecies = require('../internals/set-species');
24
24
  var definePropertyModule = require('../internals/object-define-property');
25
25
  var getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');
@@ -29,7 +29,7 @@ var getInternalState = InternalStateModule.get;
29
29
  var setInternalState = InternalStateModule.set;
30
30
  var nativeDefineProperty = definePropertyModule.f;
31
31
  var nativeGetOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;
32
- var forEach = arrayMethods(0);
32
+ var round = Math.round;
33
33
  var RangeError = global.RangeError;
34
34
  var ArrayBuffer = ArrayBufferModule.ArrayBuffer;
35
35
  var DataView = ArrayBufferModule.DataView;
@@ -105,7 +105,6 @@ if (DESCRIPTORS) {
105
105
  defineProperty: wrappedDefineProperty
106
106
  });
107
107
 
108
- // eslint-disable-next-line max-statements
109
108
  module.exports = function (TYPE, BYTES, wrapper, CLAMPED) {
110
109
  var CONSTRUCTOR_NAME = TYPE + (CLAMPED ? 'Clamped' : '') + 'Array';
111
110
  var GETTER = 'get' + TYPE;
@@ -122,7 +121,7 @@ if (DESCRIPTORS) {
122
121
 
123
122
  var setter = function (that, index, value) {
124
123
  var data = getInternalState(that);
125
- if (CLAMPED) value = (value = Math.round(value)) < 0 ? 0 : value > 0xFF ? 0xFF : value & 0xFF;
124
+ if (CLAMPED) value = (value = round(value)) < 0 ? 0 : value > 0xFF ? 0xFF : value & 0xFF;
126
125
  data.view[SETTER](index * BYTES + data.byteOffset, value, true);
127
126
  };
128
127
 
@@ -179,8 +178,8 @@ if (DESCRIPTORS) {
179
178
  if (setPrototypeOf) setPrototypeOf(TypedArrayConstructor, TypedArray);
180
179
  TypedArrayConstructorPrototype = TypedArrayConstructor.prototype = create(TypedArrayPrototype);
181
180
  } else if (TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS) {
182
- TypedArrayConstructor = wrapper(function (that, data, typedArrayOffset, $length) {
183
- anInstance(that, TypedArrayConstructor, CONSTRUCTOR_NAME);
181
+ TypedArrayConstructor = wrapper(function (dummy, data, typedArrayOffset, $length) {
182
+ anInstance(dummy, TypedArrayConstructor, CONSTRUCTOR_NAME);
184
183
  if (!isObject(data)) return new NativeTypedArrayConstructor(toIndex(data));
185
184
  if (isArrayBuffer(data)) return $length !== undefined
186
185
  ? new NativeTypedArrayConstructor(data, toOffset(typedArrayOffset, BYTES), $length)
@@ -193,16 +192,20 @@ if (DESCRIPTORS) {
193
192
 
194
193
  if (setPrototypeOf) setPrototypeOf(TypedArrayConstructor, TypedArray);
195
194
  forEach(getOwnPropertyNames(NativeTypedArrayConstructor), function (key) {
196
- if (!(key in TypedArrayConstructor)) hide(TypedArrayConstructor, key, NativeTypedArrayConstructor[key]);
195
+ if (!(key in TypedArrayConstructor)) {
196
+ createNonEnumerableProperty(TypedArrayConstructor, key, NativeTypedArrayConstructor[key]);
197
+ }
197
198
  });
198
199
  TypedArrayConstructor.prototype = TypedArrayConstructorPrototype;
199
200
  }
200
201
 
201
202
  if (TypedArrayConstructorPrototype.constructor !== TypedArrayConstructor) {
202
- hide(TypedArrayConstructorPrototype, 'constructor', TypedArrayConstructor);
203
+ createNonEnumerableProperty(TypedArrayConstructorPrototype, 'constructor', TypedArrayConstructor);
203
204
  }
204
205
 
205
- if (TYPED_ARRAY_TAG) hide(TypedArrayConstructorPrototype, TYPED_ARRAY_TAG, CONSTRUCTOR_NAME);
206
+ if (TYPED_ARRAY_TAG) {
207
+ createNonEnumerableProperty(TypedArrayConstructorPrototype, TYPED_ARRAY_TAG, CONSTRUCTOR_NAME);
208
+ }
206
209
 
207
210
  exported[CONSTRUCTOR_NAME] = TypedArrayConstructor;
208
211
 
@@ -211,11 +214,11 @@ if (DESCRIPTORS) {
211
214
  }, exported);
212
215
 
213
216
  if (!(BYTES_PER_ELEMENT in TypedArrayConstructor)) {
214
- hide(TypedArrayConstructor, BYTES_PER_ELEMENT, BYTES);
217
+ createNonEnumerableProperty(TypedArrayConstructor, BYTES_PER_ELEMENT, BYTES);
215
218
  }
216
219
 
217
220
  if (!(BYTES_PER_ELEMENT in TypedArrayConstructorPrototype)) {
218
- hide(TypedArrayConstructorPrototype, BYTES_PER_ELEMENT, BYTES);
221
+ createNonEnumerableProperty(TypedArrayConstructorPrototype, BYTES_PER_ELEMENT, BYTES);
219
222
  }
220
223
 
221
224
  setSpecies(CONSTRUCTOR_NAME);
@@ -11,11 +11,12 @@ module.exports = function from(source /* , mapfn, thisArg */) {
11
11
  var mapfn = argumentsLength > 1 ? arguments[1] : undefined;
12
12
  var mapping = mapfn !== undefined;
13
13
  var iteratorMethod = getIteratorMethod(O);
14
- var i, length, result, step, iterator;
14
+ var i, length, result, step, iterator, next;
15
15
  if (iteratorMethod != undefined && !isArrayIteratorMethod(iteratorMethod)) {
16
16
  iterator = iteratorMethod.call(O);
17
+ next = iterator.next;
17
18
  O = [];
18
- while (!(step = iterator.next()).done) {
19
+ while (!(step = next.call(iterator)).done) {
19
20
  O.push(step.value);
20
21
  }
21
22
  }