core-js 3.11.0 → 3.12.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.
package/features/index.js CHANGED
@@ -326,6 +326,8 @@ require('../modules/esnext.string.match-all');
326
326
  require('../modules/esnext.string.replace-all');
327
327
  require('../modules/esnext.symbol.async-dispose');
328
328
  require('../modules/esnext.symbol.dispose');
329
+ require('../modules/esnext.symbol.matcher');
330
+ require('../modules/esnext.symbol.metadata');
329
331
  require('../modules/esnext.symbol.observable');
330
332
  require('../modules/esnext.symbol.pattern-match');
331
333
  require('../modules/esnext.symbol.replace-all');
@@ -1,7 +1,10 @@
1
1
  var parent = require('../../es/symbol');
2
2
  require('../../modules/esnext.symbol.async-dispose');
3
3
  require('../../modules/esnext.symbol.dispose');
4
+ require('../../modules/esnext.symbol.matcher');
5
+ require('../../modules/esnext.symbol.metadata');
4
6
  require('../../modules/esnext.symbol.observable');
7
+ // TODO: Remove from `core-js@4`
5
8
  require('../../modules/esnext.symbol.pattern-match');
6
9
  // TODO: Remove from `core-js@4`
7
10
  require('../../modules/esnext.symbol.replace-all');
@@ -0,0 +1,4 @@
1
+ require('../../modules/esnext.symbol.matcher');
2
+ var WrappedWellKnownSymbolModule = require('../../internals/well-known-symbol-wrapped');
3
+
4
+ module.exports = WrappedWellKnownSymbolModule.f('matcher');
@@ -0,0 +1,4 @@
1
+ require('../../modules/esnext.symbol.metadata');
2
+ var WrappedWellKnownSymbolModule = require('../../internals/well-known-symbol-wrapped');
3
+
4
+ module.exports = WrappedWellKnownSymbolModule.f('metadata');
@@ -1,3 +1,4 @@
1
+ // TODO: Remove from `core-js@4`
1
2
  require('../../modules/esnext.symbol.pattern-match');
2
3
  var WrappedWellKnownSymbolModule = require('../../internals/well-known-symbol-wrapped');
3
4
 
@@ -81,9 +81,9 @@ var exportTypedArrayMethod = function (KEY, property, forced) {
81
81
  if (!DESCRIPTORS) return;
82
82
  if (forced) for (var ARRAY in TypedArrayConstructorsList) {
83
83
  var TypedArrayConstructor = global[ARRAY];
84
- if (TypedArrayConstructor && has(TypedArrayConstructor.prototype, KEY)) {
84
+ if (TypedArrayConstructor && has(TypedArrayConstructor.prototype, KEY)) try {
85
85
  delete TypedArrayConstructor.prototype[KEY];
86
- }
86
+ } catch (error) { /* empty */ }
87
87
  }
88
88
  if (!TypedArrayPrototype[KEY] || forced) {
89
89
  redefine(TypedArrayPrototype, KEY, forced ? property
@@ -97,14 +97,14 @@ var exportTypedArrayStaticMethod = function (KEY, property, forced) {
97
97
  if (setPrototypeOf) {
98
98
  if (forced) for (ARRAY in TypedArrayConstructorsList) {
99
99
  TypedArrayConstructor = global[ARRAY];
100
- if (TypedArrayConstructor && has(TypedArrayConstructor, KEY)) {
100
+ if (TypedArrayConstructor && has(TypedArrayConstructor, KEY)) try {
101
101
  delete TypedArrayConstructor[KEY];
102
- }
102
+ } catch (error) { /* empty */ }
103
103
  }
104
104
  if (!TypedArray[KEY] || forced) {
105
105
  // V8 ~ Chrome 49-50 `%TypedArray%` methods are non-writable non-configurable
106
106
  try {
107
- return redefine(TypedArray, KEY, forced ? property : NATIVE_ARRAY_BUFFER_VIEWS && Int8Array[KEY] || property);
107
+ return redefine(TypedArray, KEY, forced ? property : NATIVE_ARRAY_BUFFER_VIEWS && TypedArray[KEY] || property);
108
108
  } catch (error) { /* empty */ }
109
109
  } else return;
110
110
  }
@@ -0,0 +1 @@
1
+ module.exports = typeof window == 'object';
@@ -8,7 +8,7 @@ var match, version;
8
8
 
9
9
  if (v8) {
10
10
  match = v8.split('.');
11
- version = match[0] + match[1];
11
+ version = match[0] < 4 ? 1 : match[0] + match[1];
12
12
  } else if (userAgent) {
13
13
  match = userAgent.match(/Edge\/(\d+)/);
14
14
  if (!match || match[1] >= 74) {
@@ -47,6 +47,8 @@ if (!queueMicrotask) {
47
47
  } else if (Promise && Promise.resolve) {
48
48
  // Promise.resolve without an argument throws an error in LG WebOS 2
49
49
  promise = Promise.resolve(undefined);
50
+ // workaround of WebKit ~ iOS Safari 10.1 bug
51
+ promise.constructor = Promise;
50
52
  then = promise.then;
51
53
  notify = function () {
52
54
  then.call(promise, flush);
@@ -1,12 +1,11 @@
1
- var IS_NODE = require('../internals/engine-is-node');
1
+ /* eslint-disable es/no-symbol -- required for testing */
2
2
  var V8_VERSION = require('../internals/engine-v8-version');
3
3
  var fails = require('../internals/fails');
4
4
 
5
5
  // eslint-disable-next-line es/no-object-getownpropertysymbols -- required for testing
6
6
  module.exports = !!Object.getOwnPropertySymbols && !fails(function () {
7
- // eslint-disable-next-line es/no-symbol -- required for testing
8
- return !Symbol.sham &&
7
+ return !String(Symbol()) ||
9
8
  // Chrome 38 Symbol has incorrect toString conversion
10
9
  // Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances
11
- (IS_NODE ? V8_VERSION === 38 : V8_VERSION > 37 && V8_VERSION < 41);
10
+ !Symbol.sham && V8_VERSION && V8_VERSION < 41;
12
11
  });
@@ -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.11.0',
7
+ version: '3.12.0',
8
8
  mode: IS_PURE ? 'pure' : 'global',
9
9
  copyright: '© 2021 Denis Pushkarev (zloirock.ru)'
10
10
  });
@@ -30,7 +30,10 @@ $({ target: 'Promise', proto: true, real: true, forced: NON_GENERIC }, {
30
30
  }
31
31
  });
32
32
 
33
- // patch native Promise.prototype for native async functions
34
- if (!IS_PURE && typeof NativePromise == 'function' && !NativePromise.prototype['finally']) {
35
- redefine(NativePromise.prototype, 'finally', getBuiltIn('Promise').prototype['finally']);
33
+ // makes sure that native promise-based APIs `Promise#finally` properly works with patched `Promise#then`
34
+ if (!IS_PURE && typeof NativePromise == 'function') {
35
+ var method = getBuiltIn('Promise').prototype['finally'];
36
+ if (NativePromise.prototype['finally'] !== method) {
37
+ redefine(NativePromise.prototype, 'finally', method, { unsafe: true });
38
+ }
36
39
  }
@@ -6,6 +6,7 @@ var getBuiltIn = require('../internals/get-built-in');
6
6
  var NativePromise = require('../internals/native-promise-constructor');
7
7
  var redefine = require('../internals/redefine');
8
8
  var redefineAll = require('../internals/redefine-all');
9
+ var setPrototypeOf = require('../internals/object-set-prototype-of');
9
10
  var setToStringTag = require('../internals/set-to-string-tag');
10
11
  var setSpecies = require('../internals/set-species');
11
12
  var isObject = require('../internals/is-object');
@@ -24,6 +25,7 @@ var perform = require('../internals/perform');
24
25
  var InternalStateModule = require('../internals/internal-state');
25
26
  var isForced = require('../internals/is-forced');
26
27
  var wellKnownSymbol = require('../internals/well-known-symbol');
28
+ var IS_BROWSER = require('../internals/engine-is-browser');
27
29
  var IS_NODE = require('../internals/engine-is-node');
28
30
  var V8_VERSION = require('../internals/engine-v8-version');
29
31
 
@@ -32,11 +34,12 @@ var PROMISE = 'Promise';
32
34
  var getInternalState = InternalStateModule.get;
33
35
  var setInternalState = InternalStateModule.set;
34
36
  var getInternalPromiseState = InternalStateModule.getterFor(PROMISE);
37
+ var NativePromisePrototype = NativePromise && NativePromise.prototype;
35
38
  var PromiseConstructor = NativePromise;
39
+ var PromiseConstructorPrototype = NativePromisePrototype;
36
40
  var TypeError = global.TypeError;
37
41
  var document = global.document;
38
42
  var process = global.process;
39
- var $fetch = getBuiltIn('fetch');
40
43
  var newPromiseCapability = newPromiseCapabilityModule.f;
41
44
  var newGenericPromiseCapability = newPromiseCapability;
42
45
  var DISPATCH_EVENT = !!(document && document.createEvent && global.dispatchEvent);
@@ -48,32 +51,32 @@ var FULFILLED = 1;
48
51
  var REJECTED = 2;
49
52
  var HANDLED = 1;
50
53
  var UNHANDLED = 2;
54
+ var SUBCLASSING = false;
51
55
  var Internal, OwnPromiseCapability, PromiseWrapper, nativeThen;
52
56
 
53
57
  var FORCED = isForced(PROMISE, function () {
54
58
  var GLOBAL_CORE_JS_PROMISE = inspectSource(PromiseConstructor) !== String(PromiseConstructor);
55
- if (!GLOBAL_CORE_JS_PROMISE) {
56
- // V8 6.6 (Node 10 and Chrome 66) have a bug with resolving custom thenables
57
- // https://bugs.chromium.org/p/chromium/issues/detail?id=830565
58
- // We can't detect it synchronously, so just check versions
59
- if (V8_VERSION === 66) return true;
60
- // Unhandled rejections tracking support, NodeJS Promise without it fails @@species test
61
- if (!IS_NODE && !NATIVE_REJECTION_EVENT) return true;
62
- }
59
+ // V8 6.6 (Node 10 and Chrome 66) have a bug with resolving custom thenables
60
+ // https://bugs.chromium.org/p/chromium/issues/detail?id=830565
61
+ // We can't detect it synchronously, so just check versions
62
+ if (!GLOBAL_CORE_JS_PROMISE && V8_VERSION === 66) return true;
63
63
  // We need Promise#finally in the pure version for preventing prototype pollution
64
- if (IS_PURE && !PromiseConstructor.prototype['finally']) return true;
64
+ if (IS_PURE && !PromiseConstructorPrototype['finally']) return true;
65
65
  // We can't use @@species feature detection in V8 since it causes
66
66
  // deoptimization and performance degradation
67
67
  // https://github.com/zloirock/core-js/issues/679
68
68
  if (V8_VERSION >= 51 && /native code/.test(PromiseConstructor)) return false;
69
69
  // Detect correctness of subclassing with @@species support
70
- var promise = PromiseConstructor.resolve(1);
70
+ var promise = new PromiseConstructor(function (resolve) { resolve(1); });
71
71
  var FakePromise = function (exec) {
72
72
  exec(function () { /* empty */ }, function () { /* empty */ });
73
73
  };
74
74
  var constructor = promise.constructor = {};
75
75
  constructor[SPECIES] = FakePromise;
76
- return !(promise.then(function () { /* empty */ }) instanceof FakePromise);
76
+ SUBCLASSING = promise.then(function () { /* empty */ }) instanceof FakePromise;
77
+ if (!SUBCLASSING) return true;
78
+ // Unhandled rejections tracking support, NodeJS Promise without it fails @@species test
79
+ return !GLOBAL_CORE_JS_PROMISE && IS_BROWSER && !NATIVE_REJECTION_EVENT;
77
80
  });
78
81
 
79
82
  var INCORRECT_ITERATION = FORCED || !checkCorrectnessOfIteration(function (iterable) {
@@ -237,6 +240,7 @@ if (FORCED) {
237
240
  internalReject(state, error);
238
241
  }
239
242
  };
243
+ PromiseConstructorPrototype = PromiseConstructor.prototype;
240
244
  // eslint-disable-next-line no-unused-vars -- required for `.length`
241
245
  Internal = function Promise(executor) {
242
246
  setInternalState(this, {
@@ -250,7 +254,7 @@ if (FORCED) {
250
254
  value: undefined
251
255
  });
252
256
  };
253
- Internal.prototype = redefineAll(PromiseConstructor.prototype, {
257
+ Internal.prototype = redefineAll(PromiseConstructorPrototype, {
254
258
  // `Promise.prototype.then` method
255
259
  // https://tc39.es/ecma262/#sec-promise.prototype.then
256
260
  then: function then(onFulfilled, onRejected) {
@@ -283,25 +287,32 @@ if (FORCED) {
283
287
  : newGenericPromiseCapability(C);
284
288
  };
285
289
 
286
- if (!IS_PURE && typeof NativePromise == 'function') {
287
- nativeThen = NativePromise.prototype.then;
290
+ if (!IS_PURE && typeof NativePromise == 'function' && NativePromisePrototype !== Object.prototype) {
291
+ nativeThen = NativePromisePrototype.then;
288
292
 
289
- // wrap native Promise#then for native async functions
290
- redefine(NativePromise.prototype, 'then', function then(onFulfilled, onRejected) {
291
- var that = this;
292
- return new PromiseConstructor(function (resolve, reject) {
293
- nativeThen.call(that, resolve, reject);
294
- }).then(onFulfilled, onRejected);
295
- // https://github.com/zloirock/core-js/issues/640
296
- }, { unsafe: true });
293
+ if (!SUBCLASSING) {
294
+ // make `Promise#then` return a polyfilled `Promise` for native promise-based APIs
295
+ redefine(NativePromisePrototype, 'then', function then(onFulfilled, onRejected) {
296
+ var that = this;
297
+ return new PromiseConstructor(function (resolve, reject) {
298
+ nativeThen.call(that, resolve, reject);
299
+ }).then(onFulfilled, onRejected);
300
+ // https://github.com/zloirock/core-js/issues/640
301
+ }, { unsafe: true });
297
302
 
298
- // wrap fetch result
299
- if (typeof $fetch == 'function') $({ global: true, enumerable: true, forced: true }, {
300
- // eslint-disable-next-line no-unused-vars -- required for `.length`
301
- fetch: function fetch(input /* , init */) {
302
- return promiseResolve(PromiseConstructor, $fetch.apply(global, arguments));
303
- }
304
- });
303
+ // makes sure that native promise-based APIs `Promise#catch` properly works with patched `Promise#then`
304
+ redefine(NativePromisePrototype, 'catch', PromiseConstructorPrototype['catch'], { unsafe: true });
305
+ }
306
+
307
+ // make `.constructor === Promise` work for native promise-based APIs
308
+ try {
309
+ delete NativePromisePrototype.constructor;
310
+ } catch (error) { /* empty */ }
311
+
312
+ // make `instanceof Promise` work for native promise-based APIs
313
+ if (setPrototypeOf) {
314
+ setPrototypeOf(NativePromisePrototype, PromiseConstructorPrototype);
315
+ }
305
316
  }
306
317
  }
307
318
 
@@ -0,0 +1,5 @@
1
+ var defineWellKnownSymbol = require('../internals/define-well-known-symbol');
2
+
3
+ // `Symbol.matcher` well-known symbol
4
+ // https://github.com/tc39/proposal-pattern-matching
5
+ defineWellKnownSymbol('matcher');
@@ -0,0 +1,5 @@
1
+ var defineWellKnownSymbol = require('../internals/define-well-known-symbol');
2
+
3
+ // `Symbol.metadata` well-known symbol
4
+ // https://github.com/tc39/proposal-decorators
5
+ defineWellKnownSymbol('metadata');
@@ -1,3 +1,4 @@
1
+ // TODO: remove from `core-js@4`
1
2
  var defineWellKnownSymbol = require('../internals/define-well-known-symbol');
2
3
 
3
4
  // `Symbol.patternMatch` well-known symbol
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "core-js",
3
3
  "description": "Standard library",
4
- "version": "3.11.0",
4
+ "version": "3.12.0",
5
5
  "repository": {
6
6
  "type": "git",
7
7
  "url": "https://github.com/zloirock/core-js.git",
@@ -55,5 +55,5 @@
55
55
  "scripts": {
56
56
  "postinstall": "node -e \"try{require('./postinstall')}catch(e){}\""
57
57
  },
58
- "gitHead": "e94a771bfe1c88f1c37c4fa05505e82e84739493"
58
+ "gitHead": "1aadb7b20d500abb53b6d721b75974571dd54b26"
59
59
  }
@@ -0,0 +1,2 @@
1
+ // https://github.com/tc39/proposal-decorators
2
+ require('../modules/esnext.symbol.metadata');
@@ -1 +1,4 @@
1
+ // https://github.com/tc39/proposal-pattern-matching
2
+ require('../modules/esnext.symbol.matcher');
3
+ // TODO: remove from `core-js@4`
1
4
  require('../modules/esnext.symbol.pattern-match');
package/stage/2.js CHANGED
@@ -1,6 +1,7 @@
1
1
  require('../proposals/accessible-object-hasownproperty');
2
2
  require('../proposals/array-find-from-last');
3
3
  require('../proposals/array-is-template-object');
4
+ require('../proposals/decorators');
4
5
  require('../proposals/iterator-helpers');
5
6
  require('../proposals/map-upsert');
6
7
  require('../proposals/set-methods');