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
@@ -1,8 +1,11 @@
1
1
  'use strict';
2
2
  var $ = require('../internals/export');
3
+ var IS_PURE = require('../internals/is-pure');
4
+ var NativePromise = require('../internals/native-promise-constructor');
3
5
  var getBuiltIn = require('../internals/get-built-in');
4
6
  var speciesConstructor = require('../internals/species-constructor');
5
7
  var promiseResolve = require('../internals/promise-resolve');
8
+ var redefine = require('../internals/redefine');
6
9
 
7
10
  // `Promise.prototype.finally` method
8
11
  // https://tc39.github.io/ecma262/#sec-promise.prototype.finally
@@ -20,3 +23,8 @@ $({ target: 'Promise', proto: true, real: true }, {
20
23
  );
21
24
  }
22
25
  });
26
+
27
+ // patch native Promise.prototype for native async functions
28
+ if (!IS_PURE && typeof NativePromise == 'function' && !NativePromise.prototype['finally']) {
29
+ redefine(NativePromise.prototype, 'finally', getBuiltIn('Promise').prototype['finally']);
30
+ }
@@ -3,6 +3,8 @@ var $ = require('../internals/export');
3
3
  var IS_PURE = require('../internals/is-pure');
4
4
  var global = require('../internals/global');
5
5
  var path = require('../internals/path');
6
+ var NativePromise = require('../internals/native-promise-constructor');
7
+ var redefine = require('../internals/redefine');
6
8
  var redefineAll = require('../internals/redefine-all');
7
9
  var setToStringTag = require('../internals/set-to-string-tag');
8
10
  var setSpecies = require('../internals/set-species');
@@ -29,7 +31,7 @@ var PROMISE = 'Promise';
29
31
  var getInternalState = InternalStateModule.get;
30
32
  var setInternalState = InternalStateModule.set;
31
33
  var getInternalPromiseState = InternalStateModule.getterFor(PROMISE);
32
- var PromiseConstructor = global[PROMISE];
34
+ var PromiseConstructor = NativePromise;
33
35
  var TypeError = global.TypeError;
34
36
  var document = global.document;
35
37
  var process = global.process;
@@ -47,7 +49,7 @@ var FULFILLED = 1;
47
49
  var REJECTED = 2;
48
50
  var HANDLED = 1;
49
51
  var UNHANDLED = 2;
50
- var Internal, OwnPromiseCapability, PromiseWrapper;
52
+ var Internal, OwnPromiseCapability, PromiseWrapper, nativeThen;
51
53
 
52
54
  var FORCED = isForced(PROMISE, function () {
53
55
  // correct subclassing with @@species support
@@ -84,8 +86,10 @@ var notify = function (promise, state, isReject) {
84
86
  microtask(function () {
85
87
  var value = state.value;
86
88
  var ok = state.state == FULFILLED;
87
- var i = 0;
88
- var run = function (reaction) {
89
+ var index = 0;
90
+ // variable length - can't use forEach
91
+ while (chain.length > index) {
92
+ var reaction = chain[index++];
89
93
  var handler = ok ? reaction.ok : reaction.fail;
90
94
  var resolve = reaction.resolve;
91
95
  var reject = reaction.reject;
@@ -100,7 +104,7 @@ var notify = function (promise, state, isReject) {
100
104
  if (handler === true) result = value;
101
105
  else {
102
106
  if (domain) domain.enter();
103
- result = handler(value); // may throw
107
+ result = handler(value); // can throw
104
108
  if (domain) {
105
109
  domain.exit();
106
110
  exited = true;
@@ -116,8 +120,7 @@ var notify = function (promise, state, isReject) {
116
120
  if (domain && !exited) domain.exit();
117
121
  reject(error);
118
122
  }
119
- };
120
- while (chain.length > i) run(chain[i++]); // variable length - can't use forEach
123
+ }
121
124
  state.reactions = [];
122
125
  state.notified = false;
123
126
  if (isReject && !state.rejection) onUnhandled(promise, state);
@@ -271,13 +274,26 @@ if (FORCED) {
271
274
  : newGenericPromiseCapability(C);
272
275
  };
273
276
 
274
- // wrap fetch result
275
- if (!IS_PURE && typeof $fetch == 'function') $({ global: true, enumerable: true, forced: true }, {
276
- // eslint-disable-next-line no-unused-vars
277
- fetch: function fetch(input) {
278
- return promiseResolve(PromiseConstructor, $fetch.apply(global, arguments));
279
- }
280
- });
277
+ if (!IS_PURE && typeof NativePromise == 'function') {
278
+ nativeThen = NativePromise.prototype.then;
279
+
280
+ // wrap native Promise#then for native async functions
281
+ redefine(NativePromise.prototype, 'then', function then(onFulfilled, onRejected) {
282
+ var that = this;
283
+ return new PromiseConstructor(function (resolve, reject) {
284
+ nativeThen.call(that, resolve, reject);
285
+ }).then(onFulfilled, onRejected);
286
+ // https://github.com/zloirock/core-js/issues/640
287
+ }, { unsafe: true });
288
+
289
+ // wrap fetch result
290
+ if (typeof $fetch == 'function') $({ global: true, enumerable: true, forced: true }, {
291
+ // eslint-disable-next-line no-unused-vars
292
+ fetch: function fetch(input) {
293
+ return promiseResolve(PromiseConstructor, $fetch.apply(global, arguments));
294
+ }
295
+ });
296
+ }
281
297
  }
282
298
 
283
299
  $({ global: true, wrap: true, forced: FORCED }, {
@@ -1,10 +1,10 @@
1
1
  var $ = require('../internals/export');
2
- var global = require('../internals/global');
2
+ var getBuiltIn = require('../internals/get-built-in');
3
3
  var aFunction = require('../internals/a-function');
4
4
  var anObject = require('../internals/an-object');
5
5
  var fails = require('../internals/fails');
6
6
 
7
- var nativeApply = (global.Reflect || {}).apply;
7
+ var nativeApply = getBuiltIn('Reflect', 'apply');
8
8
  var functionApply = Function.apply;
9
9
 
10
10
  // MS Edge argumentsList argument is optional
@@ -1,13 +1,13 @@
1
1
  var $ = require('../internals/export');
2
- var global = require('../internals/global');
3
- var create = require('../internals/object-create');
2
+ var getBuiltIn = require('../internals/get-built-in');
4
3
  var aFunction = require('../internals/a-function');
5
4
  var anObject = require('../internals/an-object');
6
5
  var isObject = require('../internals/is-object');
7
- var fails = require('../internals/fails');
6
+ var create = require('../internals/object-create');
8
7
  var bind = require('../internals/function-bind');
8
+ var fails = require('../internals/fails');
9
9
 
10
- var nativeConstruct = (global.Reflect || {}).construct;
10
+ var nativeConstruct = getBuiltIn('Reflect', 'construct');
11
11
 
12
12
  // `Reflect.construct` method
13
13
  // https://tc39.github.io/ecma262/#sec-reflect.construct
@@ -1,9 +1,9 @@
1
1
  var $ = require('../internals/export');
2
- var fails = require('../internals/fails');
3
- var definePropertyModule = require('../internals/object-define-property');
2
+ var DESCRIPTORS = require('../internals/descriptors');
4
3
  var anObject = require('../internals/an-object');
5
4
  var toPrimitive = require('../internals/to-primitive');
6
- var DESCRIPTORS = require('../internals/descriptors');
5
+ var definePropertyModule = require('../internals/object-define-property');
6
+ var fails = require('../internals/fails');
7
7
 
8
8
  // MS Edge has broken Reflect.defineProperty - throwing instead of returning false
9
9
  var ERROR_INSTEAD_OF_FALSE = fails(function () {
@@ -16,10 +16,10 @@ var ERROR_INSTEAD_OF_FALSE = fails(function () {
16
16
  $({ target: 'Reflect', stat: true, forced: ERROR_INSTEAD_OF_FALSE, sham: !DESCRIPTORS }, {
17
17
  defineProperty: function defineProperty(target, propertyKey, attributes) {
18
18
  anObject(target);
19
- propertyKey = toPrimitive(propertyKey, true);
19
+ var key = toPrimitive(propertyKey, true);
20
20
  anObject(attributes);
21
21
  try {
22
- definePropertyModule.f(target, propertyKey, attributes);
22
+ definePropertyModule.f(target, key, attributes);
23
23
  return true;
24
24
  } catch (error) {
25
25
  return false;
@@ -1,6 +1,6 @@
1
1
  var $ = require('../internals/export');
2
- var getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;
3
2
  var anObject = require('../internals/an-object');
3
+ var getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;
4
4
 
5
5
  // `Reflect.deleteProperty` method
6
6
  // https://tc39.github.io/ecma262/#sec-reflect.deleteproperty
@@ -1,7 +1,7 @@
1
1
  var $ = require('../internals/export');
2
- var getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');
3
- var anObject = require('../internals/an-object');
4
2
  var DESCRIPTORS = require('../internals/descriptors');
3
+ var anObject = require('../internals/an-object');
4
+ var getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');
5
5
 
6
6
  // `Reflect.getOwnPropertyDescriptor` method
7
7
  // https://tc39.github.io/ecma262/#sec-reflect.getownpropertydescriptor
@@ -1,6 +1,6 @@
1
1
  var $ = require('../internals/export');
2
- var objectGetPrototypeOf = require('../internals/object-get-prototype-of');
3
2
  var anObject = require('../internals/an-object');
3
+ var objectGetPrototypeOf = require('../internals/object-get-prototype-of');
4
4
  var CORRECT_PROTOTYPE_GETTER = require('../internals/correct-prototype-getter');
5
5
 
6
6
  // `Reflect.getPrototypeOf` method
@@ -1,9 +1,9 @@
1
1
  var $ = require('../internals/export');
2
- var getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');
3
- var getPrototypeOf = require('../internals/object-get-prototype-of');
4
- var has = require('../internals/has');
5
2
  var isObject = require('../internals/is-object');
6
3
  var anObject = require('../internals/an-object');
4
+ var has = require('../internals/has');
5
+ var getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');
6
+ var getPrototypeOf = require('../internals/object-get-prototype-of');
7
7
 
8
8
  // `Reflect.get` method
9
9
  // https://tc39.github.io/ecma262/#sec-reflect.get
@@ -1,12 +1,14 @@
1
1
  var $ = require('../internals/export');
2
+ var anObject = require('../internals/an-object');
3
+ var aPossiblePrototype = require('../internals/a-possible-prototype');
2
4
  var objectSetPrototypeOf = require('../internals/object-set-prototype-of');
3
- var validateSetPrototypeOfArguments = require('../internals/validate-set-prototype-of-arguments');
4
5
 
5
6
  // `Reflect.setPrototypeOf` method
6
7
  // https://tc39.github.io/ecma262/#sec-reflect.setprototypeof
7
8
  if (objectSetPrototypeOf) $({ target: 'Reflect', stat: true }, {
8
9
  setPrototypeOf: function setPrototypeOf(target, proto) {
9
- validateSetPrototypeOfArguments(target, proto);
10
+ anObject(target);
11
+ aPossiblePrototype(proto);
10
12
  try {
11
13
  objectSetPrototypeOf(target, proto);
12
14
  return true;
@@ -1,11 +1,11 @@
1
1
  var $ = require('../internals/export');
2
+ var anObject = require('../internals/an-object');
3
+ var isObject = require('../internals/is-object');
4
+ var has = require('../internals/has');
2
5
  var definePropertyModule = require('../internals/object-define-property');
3
6
  var getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');
4
7
  var getPrototypeOf = require('../internals/object-get-prototype-of');
5
- var has = require('../internals/has');
6
8
  var createPropertyDescriptor = require('../internals/create-property-descriptor');
7
- var anObject = require('../internals/an-object');
8
- var isObject = require('../internals/is-object');
9
9
 
10
10
  // `Reflect.set` method
11
11
  // https://tc39.github.io/ecma262/#sec-reflect.set
@@ -20,7 +20,7 @@ var re2 = /a/g;
20
20
  // "new" should create a new object, old webkit bug
21
21
  var CORRECT_NEW = new NativeRegExp(re1) !== re1;
22
22
 
23
- var FORCED = isForced('RegExp', DESCRIPTORS && (!CORRECT_NEW || fails(function () {
23
+ var FORCED = DESCRIPTORS && isForced('RegExp', (!CORRECT_NEW || fails(function () {
24
24
  re2[MATCH] = false;
25
25
  // RegExp constructor can alter flags and IsRegExp works correct with @@match
26
26
  return NativeRegExp(re1) != re1 || NativeRegExp(re2) == re2 || NativeRegExp(re1, 'i') != '/a/i';
@@ -49,8 +49,8 @@ if (FORCED) {
49
49
  });
50
50
  };
51
51
  var keys = getOwnPropertyNames(NativeRegExp);
52
- var i = 0;
53
- while (i < keys.length) proxy(keys[i++]);
52
+ var index = 0;
53
+ while (keys.length > index) proxy(keys[index++]);
54
54
  RegExpPrototype.constructor = RegExpWrapper;
55
55
  RegExpWrapper.prototype = RegExpPrototype;
56
56
  redefine(global, 'RegExp', RegExpWrapper);
@@ -5,8 +5,8 @@ var fails = require('../internals/fails');
5
5
  var flags = require('../internals/regexp-flags');
6
6
 
7
7
  var TO_STRING = 'toString';
8
- var nativeToString = /./[TO_STRING];
9
8
  var RegExpPrototype = RegExp.prototype;
9
+ var nativeToString = RegExpPrototype[TO_STRING];
10
10
 
11
11
  var NOT_GENERIC = fails(function () { return nativeToString.call({ source: 'a', flags: 'b' }) != '/a/b'; });
12
12
  // FF44- RegExp#toString has a wrong name
package/modules/es.set.js CHANGED
@@ -5,5 +5,5 @@ var collectionStrong = require('../internals/collection-strong');
5
5
  // `Set` constructor
6
6
  // https://tc39.github.io/ecma262/#sec-set-objects
7
7
  module.exports = collection('Set', function (get) {
8
- return function Set() { return get(this, arguments.length > 0 ? arguments[0] : undefined); };
8
+ return function Set() { return get(this, arguments.length ? arguments[0] : undefined); };
9
9
  }, collectionStrong);
@@ -1,11 +1,11 @@
1
1
  'use strict';
2
2
  var $ = require('../internals/export');
3
- var internalCodePointAt = require('../internals/string-at');
3
+ var codeAt = require('../internals/string-multibyte').codeAt;
4
4
 
5
5
  // `String.prototype.codePointAt` method
6
6
  // https://tc39.github.io/ecma262/#sec-string.prototype.codepointat
7
7
  $({ target: 'String', proto: true }, {
8
8
  codePointAt: function codePointAt(pos) {
9
- return internalCodePointAt(this, pos);
9
+ return codeAt(this, pos);
10
10
  }
11
11
  });
@@ -1,18 +1,19 @@
1
1
  'use strict';
2
2
  var $ = require('../internals/export');
3
3
  var toLength = require('../internals/to-length');
4
- var validateArguments = require('../internals/validate-string-method-arguments');
4
+ var notARegExp = require('../internals/not-a-regexp');
5
+ var requireObjectCoercible = require('../internals/require-object-coercible');
5
6
  var correctIsRegExpLogic = require('../internals/correct-is-regexp-logic');
6
7
 
7
- var ENDS_WITH = 'endsWith';
8
- var nativeEndsWith = ''[ENDS_WITH];
8
+ var nativeEndsWith = ''.endsWith;
9
9
  var min = Math.min;
10
10
 
11
11
  // `String.prototype.endsWith` method
12
12
  // https://tc39.github.io/ecma262/#sec-string.prototype.endswith
13
- $({ target: 'String', proto: true, forced: !correctIsRegExpLogic(ENDS_WITH) }, {
13
+ $({ target: 'String', proto: true, forced: !correctIsRegExpLogic('endsWith') }, {
14
14
  endsWith: function endsWith(searchString /* , endPosition = @length */) {
15
- var that = validateArguments(this, searchString, ENDS_WITH);
15
+ var that = String(requireObjectCoercible(this));
16
+ notARegExp(searchString);
16
17
  var endPosition = arguments.length > 1 ? arguments[1] : undefined;
17
18
  var len = toLength(that.length);
18
19
  var end = endPosition === undefined ? len : min(toLength(endPosition), len);
@@ -1,13 +1,14 @@
1
1
  'use strict';
2
2
  var $ = require('../internals/export');
3
- var validateArguments = require('../internals/validate-string-method-arguments');
3
+ var notARegExp = require('../internals/not-a-regexp');
4
+ var requireObjectCoercible = require('../internals/require-object-coercible');
4
5
  var correctIsRegExpLogic = require('../internals/correct-is-regexp-logic');
5
6
 
6
7
  // `String.prototype.includes` method
7
8
  // https://tc39.github.io/ecma262/#sec-string.prototype.includes
8
9
  $({ target: 'String', proto: true, forced: !correctIsRegExpLogic('includes') }, {
9
10
  includes: function includes(searchString /* , position = 0 */) {
10
- return !!~validateArguments(this, searchString, 'includes')
11
- .indexOf(searchString, arguments.length > 1 ? arguments[1] : undefined);
11
+ return !!~String(requireObjectCoercible(this))
12
+ .indexOf(notARegExp(searchString), arguments.length > 1 ? arguments[1] : undefined);
12
13
  }
13
14
  });
@@ -1,5 +1,5 @@
1
1
  'use strict';
2
- var codePointAt = require('../internals/string-at');
2
+ var charAt = require('../internals/string-multibyte').charAt;
3
3
  var InternalStateModule = require('../internals/internal-state');
4
4
  var defineIterator = require('../internals/define-iterator');
5
5
 
@@ -23,7 +23,7 @@ defineIterator(String, 'String', function (iterated) {
23
23
  var index = state.index;
24
24
  var point;
25
25
  if (index >= string.length) return { value: undefined, done: true };
26
- point = codePointAt(string, index, true);
26
+ point = charAt(string, index);
27
27
  state.index += point.length;
28
28
  return { value: point, done: false };
29
29
  });
@@ -6,8 +6,10 @@ var toLength = require('../internals/to-length');
6
6
  var aFunction = require('../internals/a-function');
7
7
  var anObject = require('../internals/an-object');
8
8
  var classof = require('../internals/classof');
9
- var getFlags = require('../internals/regexp-flags');
10
- var hide = require('../internals/hide');
9
+ var isRegExp = require('../internals/is-regexp');
10
+ var getRegExpFlags = require('../internals/regexp-flags');
11
+ var createNonEnumerableProperty = require('../internals/create-non-enumerable-property');
12
+ var fails = require('../internals/fails');
11
13
  var wellKnownSymbol = require('../internals/well-known-symbol');
12
14
  var speciesConstructor = require('../internals/species-constructor');
13
15
  var advanceStringIndex = require('../internals/advance-string-index');
@@ -21,6 +23,11 @@ var setInternalState = InternalStateModule.set;
21
23
  var getInternalState = InternalStateModule.getterFor(REGEXP_STRING_ITERATOR);
22
24
  var RegExpPrototype = RegExp.prototype;
23
25
  var regExpBuiltinExec = RegExpPrototype.exec;
26
+ var nativeMatchAll = ''.matchAll;
27
+
28
+ var WORKS_WITH_NON_GLOBAL_REGEX = !!nativeMatchAll && !fails(function () {
29
+ 'a'.matchAll(/./);
30
+ });
24
31
 
25
32
  var regExpExec = function (R, S) {
26
33
  var exec = R.exec;
@@ -64,7 +71,7 @@ var $matchAll = function (string) {
64
71
  C = speciesConstructor(R, RegExp);
65
72
  flagsValue = R.flags;
66
73
  if (flagsValue === undefined && R instanceof RegExp && !('flags' in RegExpPrototype)) {
67
- flagsValue = getFlags.call(R);
74
+ flagsValue = getRegExpFlags.call(R);
68
75
  }
69
76
  flags = flagsValue === undefined ? '' : String(flagsValue);
70
77
  matcher = new C(C === RegExp ? R.source : R, flags);
@@ -76,19 +83,27 @@ var $matchAll = function (string) {
76
83
 
77
84
  // `String.prototype.matchAll` method
78
85
  // https://github.com/tc39/proposal-string-matchall
79
- $({ target: 'String', proto: true }, {
86
+ $({ target: 'String', proto: true, forced: WORKS_WITH_NON_GLOBAL_REGEX }, {
80
87
  matchAll: function matchAll(regexp) {
81
88
  var O = requireObjectCoercible(this);
82
- var S, matcher, rx;
89
+ var flags, S, matcher, rx;
83
90
  if (regexp != null) {
91
+ if (isRegExp(regexp)) {
92
+ flags = String(requireObjectCoercible('flags' in RegExpPrototype
93
+ ? regexp.flags
94
+ : getRegExpFlags.call(regexp)
95
+ ));
96
+ if (!~flags.indexOf('g')) throw TypeError('`.matchAll` does not allow non-global regexes');
97
+ }
98
+ if (WORKS_WITH_NON_GLOBAL_REGEX) return nativeMatchAll.apply(O, arguments);
84
99
  matcher = regexp[MATCH_ALL];
85
100
  if (matcher === undefined && IS_PURE && classof(regexp) == 'RegExp') matcher = $matchAll;
86
101
  if (matcher != null) return aFunction(matcher).call(regexp, O);
87
- }
102
+ } else if (WORKS_WITH_NON_GLOBAL_REGEX) return nativeMatchAll.apply(O, arguments);
88
103
  S = String(O);
89
104
  rx = new RegExp(regexp, 'g');
90
105
  return IS_PURE ? $matchAll.call(rx, S) : rx[MATCH_ALL](S);
91
106
  }
92
107
  });
93
108
 
94
- IS_PURE || MATCH_ALL in RegExpPrototype || hide(RegExpPrototype, MATCH_ALL, $matchAll);
109
+ IS_PURE || MATCH_ALL in RegExpPrototype || createNonEnumerableProperty(RegExpPrototype, MATCH_ALL, $matchAll);
@@ -1,12 +1,12 @@
1
1
  'use strict';
2
2
  var $ = require('../internals/export');
3
- var internalStringPad = require('../internals/string-pad');
3
+ var $padEnd = require('../internals/string-pad').end;
4
4
  var WEBKIT_BUG = require('../internals/webkit-string-pad-bug');
5
5
 
6
6
  // `String.prototype.padEnd` method
7
7
  // https://tc39.github.io/ecma262/#sec-string.prototype.padend
8
8
  $({ target: 'String', proto: true, forced: WEBKIT_BUG }, {
9
9
  padEnd: function padEnd(maxLength /* , fillString = ' ' */) {
10
- return internalStringPad(this, maxLength, arguments.length > 1 ? arguments[1] : undefined, false);
10
+ return $padEnd(this, maxLength, arguments.length > 1 ? arguments[1] : undefined);
11
11
  }
12
12
  });
@@ -1,12 +1,12 @@
1
1
  'use strict';
2
2
  var $ = require('../internals/export');
3
- var internalStringPad = require('../internals/string-pad');
3
+ var $padStart = require('../internals/string-pad').start;
4
4
  var WEBKIT_BUG = require('../internals/webkit-string-pad-bug');
5
5
 
6
6
  // `String.prototype.padStart` method
7
7
  // https://tc39.github.io/ecma262/#sec-string.prototype.padstart
8
8
  $({ target: 'String', proto: true, forced: WEBKIT_BUG }, {
9
9
  padStart: function padStart(maxLength /* , fillString = ' ' */) {
10
- return internalStringPad(this, maxLength, arguments.length > 1 ? arguments[1] : undefined, true);
10
+ return $padStart(this, maxLength, arguments.length > 1 ? arguments[1] : undefined);
11
11
  }
12
12
  });
@@ -1,18 +1,20 @@
1
1
  'use strict';
2
2
  var $ = require('../internals/export');
3
3
  var toLength = require('../internals/to-length');
4
- var validateArguments = require('../internals/validate-string-method-arguments');
4
+ var notARegExp = require('../internals/not-a-regexp');
5
+ var requireObjectCoercible = require('../internals/require-object-coercible');
5
6
  var correctIsRegExpLogic = require('../internals/correct-is-regexp-logic');
6
7
 
7
- var STARTS_WITH = 'startsWith';
8
- var nativeStartsWith = ''[STARTS_WITH];
8
+ var nativeStartsWith = ''.startsWith;
9
+ var min = Math.min;
9
10
 
10
11
  // `String.prototype.startsWith` method
11
12
  // https://tc39.github.io/ecma262/#sec-string.prototype.startswith
12
- $({ target: 'String', proto: true, forced: !correctIsRegExpLogic(STARTS_WITH) }, {
13
+ $({ target: 'String', proto: true, forced: !correctIsRegExpLogic('startsWith') }, {
13
14
  startsWith: function startsWith(searchString /* , position = 0 */) {
14
- var that = validateArguments(this, searchString, STARTS_WITH);
15
- var index = toLength(Math.min(arguments.length > 1 ? arguments[1] : undefined, that.length));
15
+ var that = String(requireObjectCoercible(this));
16
+ notARegExp(searchString);
17
+ var index = toLength(min(arguments.length > 1 ? arguments[1] : undefined, that.length));
16
18
  var search = String(searchString);
17
19
  return nativeStartsWith
18
20
  ? nativeStartsWith.call(that, search, index)
@@ -1,12 +1,12 @@
1
1
  'use strict';
2
2
  var $ = require('../internals/export');
3
- var internalStringTrim = require('../internals/string-trim');
3
+ var $trimEnd = require('../internals/string-trim').end;
4
4
  var forcedStringTrimMethod = require('../internals/forced-string-trim-method');
5
5
 
6
6
  var FORCED = forcedStringTrimMethod('trimEnd');
7
7
 
8
8
  var trimEnd = FORCED ? function trimEnd() {
9
- return internalStringTrim(this, 2);
9
+ return $trimEnd(this);
10
10
  } : ''.trimEnd;
11
11
 
12
12
  // `String.prototype.{ trimEnd, trimRight }` methods
@@ -1,12 +1,12 @@
1
1
  'use strict';
2
2
  var $ = require('../internals/export');
3
- var internalStringTrim = require('../internals/string-trim');
3
+ var $trimStart = require('../internals/string-trim').start;
4
4
  var forcedStringTrimMethod = require('../internals/forced-string-trim-method');
5
5
 
6
6
  var FORCED = forcedStringTrimMethod('trimStart');
7
7
 
8
8
  var trimStart = FORCED ? function trimStart() {
9
- return internalStringTrim(this, 1);
9
+ return $trimStart(this);
10
10
  } : ''.trimStart;
11
11
 
12
12
  // `String.prototype.{ trimStart, trimLeft }` methods
@@ -1,14 +1,12 @@
1
1
  'use strict';
2
2
  var $ = require('../internals/export');
3
- var internalStringTrim = require('../internals/string-trim');
3
+ var $trim = require('../internals/string-trim').trim;
4
4
  var forcedStringTrimMethod = require('../internals/forced-string-trim-method');
5
5
 
6
- var FORCED = forcedStringTrimMethod('trim');
7
-
8
6
  // `String.prototype.trim` method
9
7
  // https://tc39.github.io/ecma262/#sec-string.prototype.trim
10
- $({ target: 'String', proto: true, forced: FORCED }, {
8
+ $({ target: 'String', proto: true, forced: forcedStringTrimMethod('trim') }, {
11
9
  trim: function trim() {
12
- return internalStringTrim(this, 3);
10
+ return $trim(this);
13
11
  }
14
12
  });