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 +2 -0
- package/features/symbol/index.js +3 -0
- package/features/symbol/matcher.js +4 -0
- package/features/symbol/metadata.js +4 -0
- package/features/symbol/pattern-match.js +1 -0
- package/internals/array-buffer-view-core.js +5 -5
- package/internals/engine-is-browser.js +1 -0
- package/internals/engine-v8-version.js +1 -1
- package/internals/microtask.js +2 -0
- package/internals/native-symbol.js +3 -4
- package/internals/shared.js +1 -1
- package/modules/es.promise.finally.js +6 -3
- package/modules/es.promise.js +41 -30
- package/modules/esnext.symbol.matcher.js +5 -0
- package/modules/esnext.symbol.metadata.js +5 -0
- package/modules/esnext.symbol.pattern-match.js +1 -0
- package/package.json +2 -2
- package/proposals/decorators.js +2 -0
- package/proposals/pattern-matching.js +3 -0
- package/stage/2.js +1 -0
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');
|
package/features/symbol/index.js
CHANGED
|
@@ -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');
|
|
@@ -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 &&
|
|
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';
|
package/internals/microtask.js
CHANGED
|
@@ -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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
10
|
+
!Symbol.sham && V8_VERSION && V8_VERSION < 41;
|
|
12
11
|
});
|
package/internals/shared.js
CHANGED
|
@@ -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.
|
|
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
|
-
//
|
|
34
|
-
if (!IS_PURE && typeof NativePromise == 'function'
|
|
35
|
-
|
|
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
|
}
|
package/modules/es.promise.js
CHANGED
|
@@ -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
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
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 && !
|
|
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
|
|
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
|
-
|
|
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(
|
|
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 =
|
|
290
|
+
if (!IS_PURE && typeof NativePromise == 'function' && NativePromisePrototype !== Object.prototype) {
|
|
291
|
+
nativeThen = NativePromisePrototype.then;
|
|
288
292
|
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
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
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
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
|
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "core-js",
|
|
3
3
|
"description": "Standard library",
|
|
4
|
-
"version": "3.
|
|
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": "
|
|
58
|
+
"gitHead": "1aadb7b20d500abb53b6d721b75974571dd54b26"
|
|
59
59
|
}
|
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');
|