core-js 3.6.5 → 3.7.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 (104) hide show
  1. package/es/aggregate-error.js +6 -0
  2. package/es/index.js +33 -29
  3. package/es/object/index.js +2 -1
  4. package/es/object/to-string.js +3 -2
  5. package/es/promise/any.js +12 -0
  6. package/es/promise/index.js +4 -2
  7. package/es/reflect/index.js +1 -0
  8. package/es/reflect/to-string-tag.js +3 -0
  9. package/es/string/index.js +1 -0
  10. package/es/string/replace-all.js +4 -0
  11. package/es/string/virtual/index.js +1 -0
  12. package/es/string/virtual/replace-all.js +4 -0
  13. package/es/symbol/index.js +2 -1
  14. package/es/symbol/to-string-tag.js +2 -1
  15. package/features/aggregate-error.js +4 -4
  16. package/features/map/emplace.js +5 -0
  17. package/features/map/index.js +2 -0
  18. package/features/promise/any.js +4 -9
  19. package/features/reflect/to-string-tag.js +3 -0
  20. package/features/string/replace-all.js +4 -2
  21. package/features/string/virtual/replace-all.js +4 -2
  22. package/features/weak-map/emplace.js +5 -0
  23. package/features/weak-map/index.js +2 -0
  24. package/internals/async-iterator-iteration.js +25 -6
  25. package/internals/call-with-safe-iteration-closing.js +2 -2
  26. package/internals/collection-from.js +5 -5
  27. package/internals/collection-strong.js +1 -1
  28. package/internals/collection-weak.js +1 -1
  29. package/internals/collection.js +1 -1
  30. package/internals/correct-is-regexp-logic.js +2 -2
  31. package/internals/engine-is-node.js +4 -0
  32. package/internals/global.js +1 -1
  33. package/internals/internal-state.js +4 -1
  34. package/internals/iterate.js +26 -11
  35. package/internals/iterator-close.js +8 -0
  36. package/internals/map-emplace.js +13 -0
  37. package/internals/microtask.js +8 -8
  38. package/internals/redefine.js +8 -2
  39. package/internals/shared.js +1 -1
  40. package/internals/task.js +4 -4
  41. package/modules/es.aggregate-error.js +31 -0
  42. package/modules/es.array.reduce-right.js +6 -1
  43. package/modules/es.array.reduce.js +6 -1
  44. package/modules/es.object.from-entries.js +1 -1
  45. package/modules/es.promise.all-settled.js +2 -2
  46. package/modules/es.promise.any.js +46 -0
  47. package/modules/es.promise.js +27 -25
  48. package/modules/es.reflect.set.js +3 -2
  49. package/modules/es.reflect.to-string-tag.js +9 -0
  50. package/modules/es.string.replace-all.js +50 -0
  51. package/modules/esnext.aggregate-error.js +2 -45
  52. package/modules/esnext.async-iterator.take.js +12 -3
  53. package/modules/esnext.iterator.every.js +3 -3
  54. package/modules/esnext.iterator.find.js +3 -3
  55. package/modules/esnext.iterator.flat-map.js +21 -15
  56. package/modules/esnext.iterator.for-each.js +1 -1
  57. package/modules/esnext.iterator.reduce.js +1 -1
  58. package/modules/esnext.iterator.some.js +3 -3
  59. package/modules/esnext.iterator.take.js +4 -2
  60. package/modules/esnext.iterator.to-array.js +1 -1
  61. package/modules/esnext.map.emplace.js +10 -0
  62. package/modules/esnext.map.every.js +3 -3
  63. package/modules/esnext.map.filter.js +1 -1
  64. package/modules/esnext.map.find-key.js +3 -3
  65. package/modules/esnext.map.find.js +3 -3
  66. package/modules/esnext.map.includes.js +3 -3
  67. package/modules/esnext.map.key-of.js +3 -3
  68. package/modules/esnext.map.map-keys.js +1 -1
  69. package/modules/esnext.map.map-values.js +1 -1
  70. package/modules/esnext.map.merge.js +1 -1
  71. package/modules/esnext.map.reduce.js +1 -1
  72. package/modules/esnext.map.some.js +3 -3
  73. package/modules/esnext.map.update-or-insert.js +1 -1
  74. package/modules/esnext.map.upsert.js +2 -1
  75. package/modules/esnext.observable.js +3 -3
  76. package/modules/esnext.promise.any.js +2 -46
  77. package/modules/esnext.reflect.get-metadata-keys.js +1 -1
  78. package/modules/esnext.set.every.js +3 -3
  79. package/modules/esnext.set.filter.js +1 -1
  80. package/modules/esnext.set.find.js +3 -3
  81. package/modules/esnext.set.is-disjoint-from.js +3 -3
  82. package/modules/esnext.set.is-subset-of.js +3 -3
  83. package/modules/esnext.set.is-superset-of.js +3 -3
  84. package/modules/esnext.set.join.js +1 -1
  85. package/modules/esnext.set.map.js +1 -1
  86. package/modules/esnext.set.reduce.js +1 -1
  87. package/modules/esnext.set.some.js +3 -3
  88. package/modules/esnext.set.union.js +1 -1
  89. package/modules/esnext.string.replace-all.js +2 -50
  90. package/modules/esnext.weak-map.emplace.js +10 -0
  91. package/modules/esnext.weak-map.upsert.js +3 -2
  92. package/modules/web.queue-microtask.js +2 -3
  93. package/modules/web.url-search-params.js +1 -1
  94. package/package.json +1 -1
  95. package/proposals/efficient-64-bit-arithmetic.js +1 -0
  96. package/proposals/map-upsert.js +4 -0
  97. package/proposals/object-iteration.js +1 -0
  98. package/stable/aggregate-error.js +6 -0
  99. package/stable/promise/any.js +3 -0
  100. package/stable/reflect/to-string-tag.js +3 -0
  101. package/stable/string/replace-all.js +3 -0
  102. package/stable/string/virtual/replace-all.js +3 -0
  103. package/stage/3.js +0 -2
  104. package/stage/4.js +2 -0
@@ -13,9 +13,15 @@ var TEMPLATE = String(String).split('String');
13
13
  var unsafe = options ? !!options.unsafe : false;
14
14
  var simple = options ? !!options.enumerable : false;
15
15
  var noTargetGet = options ? !!options.noTargetGet : false;
16
+ var state;
16
17
  if (typeof value == 'function') {
17
- if (typeof key == 'string' && !has(value, 'name')) createNonEnumerableProperty(value, 'name', key);
18
- enforceInternalState(value).source = TEMPLATE.join(typeof key == 'string' ? key : '');
18
+ if (typeof key == 'string' && !has(value, 'name')) {
19
+ createNonEnumerableProperty(value, 'name', key);
20
+ }
21
+ state = enforceInternalState(value);
22
+ if (!state.source) {
23
+ state.source = TEMPLATE.join(typeof key == 'string' ? key : '');
24
+ }
19
25
  }
20
26
  if (O === global) {
21
27
  if (simple) O[key] = value;
@@ -4,7 +4,7 @@ var store = require('../internals/shared-store');
4
4
  (module.exports = function (key, value) {
5
5
  return store[key] || (store[key] = value !== undefined ? value : {});
6
6
  })('versions', []).push({
7
- version: '3.6.5',
7
+ version: '3.7.0',
8
8
  mode: IS_PURE ? 'pure' : 'global',
9
9
  copyright: '© 2020 Denis Pushkarev (zloirock.ru)'
10
10
  });
package/internals/task.js CHANGED
@@ -1,10 +1,10 @@
1
1
  var global = require('../internals/global');
2
2
  var fails = require('../internals/fails');
3
- var classof = require('../internals/classof-raw');
4
3
  var bind = require('../internals/function-bind-context');
5
4
  var html = require('../internals/html');
6
5
  var createElement = require('../internals/document-create-element');
7
6
  var IS_IOS = require('../internals/engine-is-ios');
7
+ var IS_NODE = require('../internals/engine-is-node');
8
8
 
9
9
  var location = global.location;
10
10
  var set = global.setImmediate;
@@ -58,7 +58,7 @@ if (!set || !clear) {
58
58
  delete queue[id];
59
59
  };
60
60
  // Node.js 0.8-
61
- if (classof(process) == 'process') {
61
+ if (IS_NODE) {
62
62
  defer = function (id) {
63
63
  process.nextTick(runner(id));
64
64
  };
@@ -80,8 +80,8 @@ if (!set || !clear) {
80
80
  global.addEventListener &&
81
81
  typeof postMessage == 'function' &&
82
82
  !global.importScripts &&
83
- !fails(post) &&
84
- location.protocol !== 'file:'
83
+ location && location.protocol !== 'file:' &&
84
+ !fails(post)
85
85
  ) {
86
86
  defer = post;
87
87
  global.addEventListener('message', listener, false);
@@ -0,0 +1,31 @@
1
+ 'use strict';
2
+ var $ = require('../internals/export');
3
+ var getPrototypeOf = require('../internals/object-get-prototype-of');
4
+ var setPrototypeOf = require('../internals/object-set-prototype-of');
5
+ var create = require('../internals/object-create');
6
+ var createNonEnumerableProperty = require('../internals/create-non-enumerable-property');
7
+ var createPropertyDescriptor = require('../internals/create-property-descriptor');
8
+ var iterate = require('../internals/iterate');
9
+
10
+ var $AggregateError = function AggregateError(errors, message) {
11
+ var that = this;
12
+ if (!(that instanceof $AggregateError)) return new $AggregateError(errors, message);
13
+ if (setPrototypeOf) {
14
+ that = setPrototypeOf(new Error(undefined), getPrototypeOf(that));
15
+ }
16
+ if (message !== undefined) createNonEnumerableProperty(that, 'message', String(message));
17
+ var errorsArray = [];
18
+ iterate(errors, errorsArray.push, { that: errorsArray });
19
+ createNonEnumerableProperty(that, 'errors', errorsArray);
20
+ return that;
21
+ };
22
+
23
+ $AggregateError.prototype = create(Error.prototype, {
24
+ constructor: createPropertyDescriptor(5, $AggregateError),
25
+ message: createPropertyDescriptor(5, ''),
26
+ name: createPropertyDescriptor(5, 'AggregateError')
27
+ });
28
+
29
+ $({ global: true }, {
30
+ AggregateError: $AggregateError
31
+ });
@@ -3,14 +3,19 @@ var $ = require('../internals/export');
3
3
  var $reduceRight = require('../internals/array-reduce').right;
4
4
  var arrayMethodIsStrict = require('../internals/array-method-is-strict');
5
5
  var arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');
6
+ var CHROME_VERSION = require('../internals/engine-v8-version');
7
+ var IS_NODE = require('../internals/engine-is-node');
6
8
 
7
9
  var STRICT_METHOD = arrayMethodIsStrict('reduceRight');
8
10
  // For preventing possible almost infinite loop in non-standard implementations, test the forward version of the method
9
11
  var USES_TO_LENGTH = arrayMethodUsesToLength('reduce', { 1: 0 });
12
+ // Chrome 80-82 has a critical bug
13
+ // https://bugs.chromium.org/p/chromium/issues/detail?id=1049982
14
+ var CHROME_BUG = !IS_NODE && CHROME_VERSION > 79 && CHROME_VERSION < 83;
10
15
 
11
16
  // `Array.prototype.reduceRight` method
12
17
  // https://tc39.github.io/ecma262/#sec-array.prototype.reduceright
13
- $({ target: 'Array', proto: true, forced: !STRICT_METHOD || !USES_TO_LENGTH }, {
18
+ $({ target: 'Array', proto: true, forced: !STRICT_METHOD || !USES_TO_LENGTH || CHROME_BUG }, {
14
19
  reduceRight: function reduceRight(callbackfn /* , initialValue */) {
15
20
  return $reduceRight(this, callbackfn, arguments.length, arguments.length > 1 ? arguments[1] : undefined);
16
21
  }
@@ -3,13 +3,18 @@ var $ = require('../internals/export');
3
3
  var $reduce = require('../internals/array-reduce').left;
4
4
  var arrayMethodIsStrict = require('../internals/array-method-is-strict');
5
5
  var arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');
6
+ var CHROME_VERSION = require('../internals/engine-v8-version');
7
+ var IS_NODE = require('../internals/engine-is-node');
6
8
 
7
9
  var STRICT_METHOD = arrayMethodIsStrict('reduce');
8
10
  var USES_TO_LENGTH = arrayMethodUsesToLength('reduce', { 1: 0 });
11
+ // Chrome 80-82 has a critical bug
12
+ // https://bugs.chromium.org/p/chromium/issues/detail?id=1049982
13
+ var CHROME_BUG = !IS_NODE && CHROME_VERSION > 79 && CHROME_VERSION < 83;
9
14
 
10
15
  // `Array.prototype.reduce` method
11
16
  // https://tc39.github.io/ecma262/#sec-array.prototype.reduce
12
- $({ target: 'Array', proto: true, forced: !STRICT_METHOD || !USES_TO_LENGTH }, {
17
+ $({ target: 'Array', proto: true, forced: !STRICT_METHOD || !USES_TO_LENGTH || CHROME_BUG }, {
13
18
  reduce: function reduce(callbackfn /* , initialValue */) {
14
19
  return $reduce(this, callbackfn, arguments.length, arguments.length > 1 ? arguments[1] : undefined);
15
20
  }
@@ -9,7 +9,7 @@ $({ target: 'Object', stat: true }, {
9
9
  var obj = {};
10
10
  iterate(iterable, function (k, v) {
11
11
  createProperty(obj, k, v);
12
- }, undefined, true);
12
+ }, { AS_ENTRIES: true });
13
13
  return obj;
14
14
  }
15
15
  });
@@ -28,10 +28,10 @@ $({ target: 'Promise', stat: true }, {
28
28
  alreadyCalled = true;
29
29
  values[index] = { status: 'fulfilled', value: value };
30
30
  --remaining || resolve(values);
31
- }, function (e) {
31
+ }, function (error) {
32
32
  if (alreadyCalled) return;
33
33
  alreadyCalled = true;
34
- values[index] = { status: 'rejected', reason: e };
34
+ values[index] = { status: 'rejected', reason: error };
35
35
  --remaining || resolve(values);
36
36
  });
37
37
  });
@@ -0,0 +1,46 @@
1
+ 'use strict';
2
+ var $ = require('../internals/export');
3
+ var aFunction = require('../internals/a-function');
4
+ var getBuiltIn = require('../internals/get-built-in');
5
+ var newPromiseCapabilityModule = require('../internals/new-promise-capability');
6
+ var perform = require('../internals/perform');
7
+ var iterate = require('../internals/iterate');
8
+
9
+ var PROMISE_ANY_ERROR = 'No one promise resolved';
10
+
11
+ // `Promise.any` method
12
+ // https://github.com/tc39/proposal-promise-any
13
+ $({ target: 'Promise', stat: true }, {
14
+ any: function any(iterable) {
15
+ var C = this;
16
+ var capability = newPromiseCapabilityModule.f(C);
17
+ var resolve = capability.resolve;
18
+ var reject = capability.reject;
19
+ var result = perform(function () {
20
+ var promiseResolve = aFunction(C.resolve);
21
+ var errors = [];
22
+ var counter = 0;
23
+ var remaining = 1;
24
+ var alreadyResolved = false;
25
+ iterate(iterable, function (promise) {
26
+ var index = counter++;
27
+ var alreadyRejected = false;
28
+ errors.push(undefined);
29
+ remaining++;
30
+ promiseResolve.call(C, promise).then(function (value) {
31
+ if (alreadyRejected || alreadyResolved) return;
32
+ alreadyResolved = true;
33
+ resolve(value);
34
+ }, function (error) {
35
+ if (alreadyRejected || alreadyResolved) return;
36
+ alreadyRejected = true;
37
+ errors[index] = error;
38
+ --remaining || reject(new (getBuiltIn('AggregateError'))(errors, PROMISE_ANY_ERROR));
39
+ });
40
+ });
41
+ --remaining || reject(new (getBuiltIn('AggregateError'))(errors, PROMISE_ANY_ERROR));
42
+ });
43
+ if (result.error) reject(result.value);
44
+ return capability.promise;
45
+ }
46
+ });
@@ -11,7 +11,6 @@ var setSpecies = require('../internals/set-species');
11
11
  var isObject = require('../internals/is-object');
12
12
  var aFunction = require('../internals/a-function');
13
13
  var anInstance = require('../internals/an-instance');
14
- var classof = require('../internals/classof-raw');
15
14
  var inspectSource = require('../internals/inspect-source');
16
15
  var iterate = require('../internals/iterate');
17
16
  var checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');
@@ -25,6 +24,7 @@ var perform = require('../internals/perform');
25
24
  var InternalStateModule = require('../internals/internal-state');
26
25
  var isForced = require('../internals/is-forced');
27
26
  var wellKnownSymbol = require('../internals/well-known-symbol');
27
+ var IS_NODE = require('../internals/engine-is-node');
28
28
  var V8_VERSION = require('../internals/engine-v8-version');
29
29
 
30
30
  var SPECIES = wellKnownSymbol('species');
@@ -39,8 +39,8 @@ var process = global.process;
39
39
  var $fetch = getBuiltIn('fetch');
40
40
  var newPromiseCapability = newPromiseCapabilityModule.f;
41
41
  var newGenericPromiseCapability = newPromiseCapability;
42
- var IS_NODE = classof(process) == 'process';
43
42
  var DISPATCH_EVENT = !!(document && document.createEvent && global.dispatchEvent);
43
+ var NATIVE_REJECTION_EVENT = typeof PromiseRejectionEvent == 'function';
44
44
  var UNHANDLED_REJECTION = 'unhandledrejection';
45
45
  var REJECTION_HANDLED = 'rejectionhandled';
46
46
  var PENDING = 0;
@@ -58,7 +58,7 @@ var FORCED = isForced(PROMISE, function () {
58
58
  // We can't detect it synchronously, so just check versions
59
59
  if (V8_VERSION === 66) return true;
60
60
  // Unhandled rejections tracking support, NodeJS Promise without it fails @@species test
61
- if (!IS_NODE && typeof PromiseRejectionEvent != 'function') return true;
61
+ if (!IS_NODE && !NATIVE_REJECTION_EVENT) return true;
62
62
  }
63
63
  // We need Promise#finally in the pure version for preventing prototype pollution
64
64
  if (IS_PURE && !PromiseConstructor.prototype['finally']) return true;
@@ -86,7 +86,7 @@ var isThenable = function (it) {
86
86
  return isObject(it) && typeof (then = it.then) == 'function' ? then : false;
87
87
  };
88
88
 
89
- var notify = function (promise, state, isReject) {
89
+ var notify = function (state, isReject) {
90
90
  if (state.notified) return;
91
91
  state.notified = true;
92
92
  var chain = state.reactions;
@@ -105,7 +105,7 @@ var notify = function (promise, state, isReject) {
105
105
  try {
106
106
  if (handler) {
107
107
  if (!ok) {
108
- if (state.rejection === UNHANDLED) onHandleUnhandled(promise, state);
108
+ if (state.rejection === UNHANDLED) onHandleUnhandled(state);
109
109
  state.rejection = HANDLED;
110
110
  }
111
111
  if (handler === true) result = value;
@@ -130,7 +130,7 @@ var notify = function (promise, state, isReject) {
130
130
  }
131
131
  state.reactions = [];
132
132
  state.notified = false;
133
- if (isReject && !state.rejection) onUnhandled(promise, state);
133
+ if (isReject && !state.rejection) onUnhandled(state);
134
134
  });
135
135
  };
136
136
 
@@ -143,12 +143,13 @@ var dispatchEvent = function (name, promise, reason) {
143
143
  event.initEvent(name, false, true);
144
144
  global.dispatchEvent(event);
145
145
  } else event = { promise: promise, reason: reason };
146
- if (handler = global['on' + name]) handler(event);
146
+ if (!NATIVE_REJECTION_EVENT && (handler = global['on' + name])) handler(event);
147
147
  else if (name === UNHANDLED_REJECTION) hostReportErrors('Unhandled promise rejection', reason);
148
148
  };
149
149
 
150
- var onUnhandled = function (promise, state) {
150
+ var onUnhandled = function (state) {
151
151
  task.call(global, function () {
152
+ var promise = state.facade;
152
153
  var value = state.value;
153
154
  var IS_UNHANDLED = isUnhandled(state);
154
155
  var result;
@@ -169,55 +170,56 @@ var isUnhandled = function (state) {
169
170
  return state.rejection !== HANDLED && !state.parent;
170
171
  };
171
172
 
172
- var onHandleUnhandled = function (promise, state) {
173
+ var onHandleUnhandled = function (state) {
173
174
  task.call(global, function () {
175
+ var promise = state.facade;
174
176
  if (IS_NODE) {
175
177
  process.emit('rejectionHandled', promise);
176
178
  } else dispatchEvent(REJECTION_HANDLED, promise, state.value);
177
179
  });
178
180
  };
179
181
 
180
- var bind = function (fn, promise, state, unwrap) {
182
+ var bind = function (fn, state, unwrap) {
181
183
  return function (value) {
182
- fn(promise, state, value, unwrap);
184
+ fn(state, value, unwrap);
183
185
  };
184
186
  };
185
187
 
186
- var internalReject = function (promise, state, value, unwrap) {
188
+ var internalReject = function (state, value, unwrap) {
187
189
  if (state.done) return;
188
190
  state.done = true;
189
191
  if (unwrap) state = unwrap;
190
192
  state.value = value;
191
193
  state.state = REJECTED;
192
- notify(promise, state, true);
194
+ notify(state, true);
193
195
  };
194
196
 
195
- var internalResolve = function (promise, state, value, unwrap) {
197
+ var internalResolve = function (state, value, unwrap) {
196
198
  if (state.done) return;
197
199
  state.done = true;
198
200
  if (unwrap) state = unwrap;
199
201
  try {
200
- if (promise === value) throw TypeError("Promise can't be resolved itself");
202
+ if (state.facade === value) throw TypeError("Promise can't be resolved itself");
201
203
  var then = isThenable(value);
202
204
  if (then) {
203
205
  microtask(function () {
204
206
  var wrapper = { done: false };
205
207
  try {
206
208
  then.call(value,
207
- bind(internalResolve, promise, wrapper, state),
208
- bind(internalReject, promise, wrapper, state)
209
+ bind(internalResolve, wrapper, state),
210
+ bind(internalReject, wrapper, state)
209
211
  );
210
212
  } catch (error) {
211
- internalReject(promise, wrapper, error, state);
213
+ internalReject(wrapper, error, state);
212
214
  }
213
215
  });
214
216
  } else {
215
217
  state.value = value;
216
218
  state.state = FULFILLED;
217
- notify(promise, state, false);
219
+ notify(state, false);
218
220
  }
219
221
  } catch (error) {
220
- internalReject(promise, { done: false }, error, state);
222
+ internalReject({ done: false }, error, state);
221
223
  }
222
224
  };
223
225
 
@@ -230,9 +232,9 @@ if (FORCED) {
230
232
  Internal.call(this);
231
233
  var state = getInternalState(this);
232
234
  try {
233
- executor(bind(internalResolve, this, state), bind(internalReject, this, state));
235
+ executor(bind(internalResolve, state), bind(internalReject, state));
234
236
  } catch (error) {
235
- internalReject(this, state, error);
237
+ internalReject(state, error);
236
238
  }
237
239
  };
238
240
  // eslint-disable-next-line no-unused-vars
@@ -259,7 +261,7 @@ if (FORCED) {
259
261
  reaction.domain = IS_NODE ? process.domain : undefined;
260
262
  state.parent = true;
261
263
  state.reactions.push(reaction);
262
- if (state.state != PENDING) notify(this, state, false);
264
+ if (state.state != PENDING) notify(state, false);
263
265
  return reaction.promise;
264
266
  },
265
267
  // `Promise.prototype.catch` method
@@ -272,8 +274,8 @@ if (FORCED) {
272
274
  var promise = new Internal();
273
275
  var state = getInternalState(promise);
274
276
  this.promise = promise;
275
- this.resolve = bind(internalResolve, promise, state);
276
- this.reject = bind(internalReject, promise, state);
277
+ this.resolve = bind(internalResolve, state);
278
+ this.reject = bind(internalReject, state);
277
279
  };
278
280
  newPromiseCapabilityModule.f = newPromiseCapability = function (C) {
279
281
  return C === PromiseConstructor || C === PromiseWrapper
@@ -35,9 +35,10 @@ function set(target, propertyKey, V /* , receiver */) {
35
35
  // MS Edge 17-18 Reflect.set allows setting the property to object
36
36
  // with non-writable property on the prototype
37
37
  var MS_EDGE_BUG = fails(function () {
38
- var object = definePropertyModule.f({}, 'a', { configurable: true });
38
+ var Constructor = function () { /* empty */ };
39
+ var object = definePropertyModule.f(new Constructor(), 'a', { configurable: true });
39
40
  // eslint-disable-next-line no-undef
40
- return Reflect.set(getPrototypeOf(object), 'a', 1, object) !== false;
41
+ return Reflect.set(Constructor.prototype, 'a', 1, object) !== false;
41
42
  });
42
43
 
43
44
  $({ target: 'Reflect', stat: true, forced: MS_EDGE_BUG }, {
@@ -0,0 +1,9 @@
1
+ var $ = require('../internals/export');
2
+ var global = require('../internals/global');
3
+ var setToStringTag = require('../internals/set-to-string-tag');
4
+
5
+ $({ global: true }, { Reflect: {} });
6
+
7
+ // Reflect[@@toStringTag] property
8
+ // https://tc39.es/ecma262/#sec-reflect-@@tostringtag
9
+ setToStringTag(global.Reflect, 'Reflect', true);
@@ -0,0 +1,50 @@
1
+ 'use strict';
2
+ var $ = require('../internals/export');
3
+ var requireObjectCoercible = require('../internals/require-object-coercible');
4
+ var isRegExp = require('../internals/is-regexp');
5
+ var getRegExpFlags = require('../internals/regexp-flags');
6
+ var wellKnownSymbol = require('../internals/well-known-symbol');
7
+ var IS_PURE = require('../internals/is-pure');
8
+
9
+ var REPLACE = wellKnownSymbol('replace');
10
+ var RegExpPrototype = RegExp.prototype;
11
+
12
+ // `String.prototype.replaceAll` method
13
+ // https://github.com/tc39/proposal-string-replace-all
14
+ $({ target: 'String', proto: true }, {
15
+ replaceAll: function replaceAll(searchValue, replaceValue) {
16
+ var O = requireObjectCoercible(this);
17
+ var IS_REG_EXP, flags, replacer, string, searchString, template, result, position, index;
18
+ if (searchValue != null) {
19
+ IS_REG_EXP = isRegExp(searchValue);
20
+ if (IS_REG_EXP) {
21
+ flags = String(requireObjectCoercible('flags' in RegExpPrototype
22
+ ? searchValue.flags
23
+ : getRegExpFlags.call(searchValue)
24
+ ));
25
+ if (!~flags.indexOf('g')) throw TypeError('`.replaceAll` does not allow non-global regexes');
26
+ }
27
+ replacer = searchValue[REPLACE];
28
+ if (replacer !== undefined) {
29
+ return replacer.call(searchValue, O, replaceValue);
30
+ } else if (IS_PURE && IS_REG_EXP) {
31
+ return String(O).replace(searchValue, replaceValue);
32
+ }
33
+ }
34
+ string = String(O);
35
+ searchString = String(searchValue);
36
+ if (searchString === '') return replaceAll.call(string, /(?:)/g, replaceValue);
37
+ template = string.split(searchString);
38
+ if (typeof replaceValue !== 'function') {
39
+ return template.join(String(replaceValue));
40
+ }
41
+ result = template[0];
42
+ position = result.length;
43
+ for (index = 1; index < template.length; index++) {
44
+ result += String(replaceValue(searchString, position, string));
45
+ position += searchString.length + template[index].length;
46
+ result += template[index];
47
+ }
48
+ return result;
49
+ }
50
+ });
@@ -1,45 +1,2 @@
1
- 'use strict';
2
- var $ = require('../internals/export');
3
- var DESCRIPTORS = require('../internals/descriptors');
4
- var getPrototypeOf = require('../internals/object-get-prototype-of');
5
- var setPrototypeOf = require('../internals/object-set-prototype-of');
6
- var create = require('../internals/object-create');
7
- var defineProperty = require('../internals/object-define-property');
8
- var createPropertyDescriptor = require('../internals/create-property-descriptor');
9
- var iterate = require('../internals/iterate');
10
- var createNonEnumerableProperty = require('../internals/create-non-enumerable-property');
11
- var InternalStateModule = require('../internals/internal-state');
12
-
13
- var setInternalState = InternalStateModule.set;
14
- var getInternalAggregateErrorState = InternalStateModule.getterFor('AggregateError');
15
-
16
- var $AggregateError = function AggregateError(errors, message) {
17
- var that = this;
18
- if (!(that instanceof $AggregateError)) return new $AggregateError(errors, message);
19
- if (setPrototypeOf) {
20
- that = setPrototypeOf(new Error(message), getPrototypeOf(that));
21
- }
22
- var errorsArray = [];
23
- iterate(errors, errorsArray.push, errorsArray);
24
- if (DESCRIPTORS) setInternalState(that, { errors: errorsArray, type: 'AggregateError' });
25
- else that.errors = errorsArray;
26
- if (message !== undefined) createNonEnumerableProperty(that, 'message', String(message));
27
- return that;
28
- };
29
-
30
- $AggregateError.prototype = create(Error.prototype, {
31
- constructor: createPropertyDescriptor(5, $AggregateError),
32
- message: createPropertyDescriptor(5, ''),
33
- name: createPropertyDescriptor(5, 'AggregateError')
34
- });
35
-
36
- if (DESCRIPTORS) defineProperty.f($AggregateError.prototype, 'errors', {
37
- get: function () {
38
- return getInternalAggregateErrorState(this).errors;
39
- },
40
- configurable: true
41
- });
42
-
43
- $({ global: true }, {
44
- AggregateError: $AggregateError
45
- });
1
+ // TODO: Remove from `core-js@4`
2
+ require('./es.aggregate-error');
@@ -5,11 +5,20 @@ var anObject = require('../internals/an-object');
5
5
  var toPositiveInteger = require('../internals/to-positive-integer');
6
6
  var createAsyncIteratorProxy = require('../internals/async-iterator-create-proxy');
7
7
 
8
- var AsyncIteratorProxy = createAsyncIteratorProxy(function (arg) {
8
+ var AsyncIteratorProxy = createAsyncIteratorProxy(function (arg, Promise) {
9
+ var iterator = this.iterator;
10
+ var returnMethod, result;
9
11
  if (!this.remaining--) {
12
+ result = { done: true, value: undefined };
10
13
  this.done = true;
11
- return { done: true, value: undefined };
12
- } return this.next.call(this.iterator, arg);
14
+ returnMethod = iterator['return'];
15
+ if (returnMethod !== undefined) {
16
+ return Promise.resolve(returnMethod.call(iterator)).then(function () {
17
+ return result;
18
+ });
19
+ }
20
+ return result;
21
+ } return this.next.call(iterator, arg);
13
22
  });
14
23
 
15
24
  $({ target: 'AsyncIterator', proto: true, real: true }, {
@@ -9,8 +9,8 @@ $({ target: 'Iterator', proto: true, real: true }, {
9
9
  every: function every(fn) {
10
10
  anObject(this);
11
11
  aFunction(fn);
12
- return !iterate(this, function (value) {
13
- if (!fn(value)) return iterate.stop();
14
- }, undefined, false, true).stopped;
12
+ return !iterate(this, function (value, stop) {
13
+ if (!fn(value)) return stop();
14
+ }, { IS_ITERATOR: true, INTERRUPTED: true }).stopped;
15
15
  }
16
16
  });
@@ -9,8 +9,8 @@ $({ target: 'Iterator', proto: true, real: true }, {
9
9
  find: function find(fn) {
10
10
  anObject(this);
11
11
  aFunction(fn);
12
- return iterate(this, function (value) {
13
- if (fn(value)) return iterate.stop(value);
14
- }, undefined, false, true).result;
12
+ return iterate(this, function (value, stop) {
13
+ if (fn(value)) return stop(value);
14
+ }, { IS_ITERATOR: true, INTERRUPTED: true }).result;
15
15
  }
16
16
  });
@@ -5,32 +5,38 @@ var aFunction = require('../internals/a-function');
5
5
  var anObject = require('../internals/an-object');
6
6
  var getIteratorMethod = require('../internals/get-iterator-method');
7
7
  var createIteratorProxy = require('../internals/iterator-create-proxy');
8
- var callWithSafeIterationClosing = require('../internals/call-with-safe-iteration-closing');
8
+ var iteratorClose = require('../internals/iterator-close');
9
9
 
10
10
  var IteratorProxy = createIteratorProxy(function (arg) {
11
11
  var iterator = this.iterator;
12
+ var mapper = this.mapper;
12
13
  var result, mapped, iteratorMethod, innerIterator;
13
14
 
14
15
  while (true) {
15
- if (innerIterator = this.innerIterator) {
16
- result = anObject(this.innerNext.call(innerIterator));
17
- if (!result.done) return result.value;
18
- this.innerIterator = this.innerNext = null;
19
- }
16
+ try {
17
+ if (innerIterator = this.innerIterator) {
18
+ result = anObject(this.innerNext.call(innerIterator));
19
+ if (!result.done) return result.value;
20
+ this.innerIterator = this.innerNext = null;
21
+ }
20
22
 
21
- result = anObject(this.next.call(iterator, arg));
23
+ result = anObject(this.next.call(iterator, arg));
22
24
 
23
- if (this.done = !!result.done) return;
25
+ if (this.done = !!result.done) return;
24
26
 
25
- mapped = callWithSafeIterationClosing(iterator, this.mapper, result.value);
26
- iteratorMethod = getIteratorMethod(mapped);
27
+ mapped = mapper(result.value);
28
+ iteratorMethod = getIteratorMethod(mapped);
27
29
 
28
- if (iteratorMethod === undefined) {
29
- throw TypeError('.flatMap callback should return an iterable object');
30
- }
30
+ if (iteratorMethod === undefined) {
31
+ throw TypeError('.flatMap callback should return an iterable object');
32
+ }
31
33
 
32
- this.innerIterator = innerIterator = anObject(iteratorMethod.call(mapped));
33
- this.innerNext = aFunction(innerIterator.next);
34
+ this.innerIterator = innerIterator = anObject(iteratorMethod.call(mapped));
35
+ this.innerNext = aFunction(innerIterator.next);
36
+ } catch (error) {
37
+ iteratorClose(iterator);
38
+ throw error;
39
+ }
34
40
  }
35
41
  });
36
42
 
@@ -6,6 +6,6 @@ var anObject = require('../internals/an-object');
6
6
 
7
7
  $({ target: 'Iterator', proto: true, real: true }, {
8
8
  forEach: function forEach(fn) {
9
- iterate(anObject(this), fn, undefined, false, true);
9
+ iterate(anObject(this), fn, { IS_ITERATOR: true });
10
10
  }
11
11
  });
@@ -18,7 +18,7 @@ $({ target: 'Iterator', proto: true, real: true }, {
18
18
  } else {
19
19
  accumulator = reducer(accumulator, value);
20
20
  }
21
- }, undefined, false, true);
21
+ }, { IS_ITERATOR: true });
22
22
  if (noInitial) throw TypeError('Reduce of empty iterator with no initial value');
23
23
  return accumulator;
24
24
  }
@@ -9,8 +9,8 @@ $({ target: 'Iterator', proto: true, real: true }, {
9
9
  some: function some(fn) {
10
10
  anObject(this);
11
11
  aFunction(fn);
12
- return iterate(this, function (value) {
13
- if (fn(value)) return iterate.stop();
14
- }, undefined, false, true).stopped;
12
+ return iterate(this, function (value, stop) {
13
+ if (fn(value)) return stop();
14
+ }, { IS_ITERATOR: true, INTERRUPTED: true }).stopped;
15
15
  }
16
16
  });