core-js 3.17.2 → 3.18.2
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/configurator.js +7 -3
- package/es/promise/all-settled.js +2 -1
- package/es/promise/any.js +2 -1
- package/features/array/from-async.js +8 -0
- package/features/array/index.js +2 -0
- package/features/index.js +2 -0
- package/features/map/from.js +2 -1
- package/features/map/group-by.js +2 -1
- package/features/map/key-by.js +2 -1
- package/features/map/of.js +2 -1
- package/features/promise/try.js +2 -1
- package/features/set/from.js +2 -1
- package/features/set/of.js +2 -1
- package/features/typed-array/from-async.js +1 -0
- package/features/typed-array/index.js +2 -0
- package/features/typed-array/methods.js +2 -0
- package/features/weak-map/from.js +2 -1
- package/features/weak-map/of.js +2 -1
- package/features/weak-set/from.js +2 -1
- package/features/weak-set/of.js +2 -1
- package/internals/a-callable.js +8 -0
- package/internals/a-constructor.js +8 -0
- package/internals/a-possible-prototype.js +4 -5
- package/internals/an-instance.js +2 -3
- package/internals/an-object.js +4 -4
- package/internals/array-buffer-view-core.js +13 -12
- package/internals/array-buffer.js +9 -3
- package/internals/array-copy-within.js +2 -2
- package/internals/array-fill.js +2 -2
- package/internals/array-from-async.js +36 -0
- package/internals/array-from.js +8 -7
- package/internals/array-group-by.js +2 -2
- package/internals/array-includes.js +2 -2
- package/internals/array-iteration-from-last.js +2 -2
- package/internals/array-iteration.js +2 -2
- package/internals/array-last-index-of.js +4 -4
- package/internals/array-reduce.js +4 -4
- package/internals/array-species-constructor.js +3 -2
- package/internals/array-unique-by.js +5 -5
- package/internals/async-from-sync-iterator.js +4 -4
- package/internals/async-iterator-create-proxy.js +7 -6
- package/internals/async-iterator-iteration.js +27 -15
- package/internals/async-iterator-prototype.js +16 -16
- package/internals/classof.js +2 -1
- package/internals/collection-add-all.js +2 -2
- package/internals/collection-delete-all.js +2 -2
- package/internals/collection-from.js +4 -3
- package/internals/collection-weak.js +3 -3
- package/internals/collection.js +2 -1
- package/internals/copy-constructor-properties.js +2 -2
- package/internals/define-iterator.js +21 -13
- package/internals/define-well-known-symbol.js +2 -2
- package/internals/dom-token-list-prototype.js +7 -0
- package/internals/export.js +1 -0
- package/internals/flatten-into-array.js +4 -3
- package/internals/function-bind-context.js +2 -2
- package/internals/function-bind.js +2 -2
- package/internals/function-name.js +17 -0
- package/internals/get-async-iterator.js +2 -5
- package/internals/get-built-in.js +3 -2
- package/internals/get-iterator-method.js +3 -2
- package/internals/get-iterator.js +5 -5
- package/internals/get-method.js +4 -3
- package/internals/{has.js → has-own-property.js} +2 -0
- package/internals/inherit-if-required.js +2 -1
- package/internals/inspect-source.js +2 -1
- package/internals/install-error-cause.js +10 -0
- package/internals/internal-metadata.js +4 -4
- package/internals/internal-state.js +4 -4
- package/internals/is-array.js +2 -2
- package/internals/is-callable.js +5 -0
- package/internals/is-constructor.js +41 -0
- package/internals/is-data-descriptor.js +2 -2
- package/internals/is-forced.js +2 -1
- package/internals/is-integral-number.js +10 -0
- package/internals/is-object.js +3 -1
- package/internals/is-symbol.js +2 -1
- package/internals/iterate.js +3 -3
- package/internals/iterator-close.js +3 -2
- package/internals/iterator-create-proxy.js +10 -9
- package/internals/iterators-core.js +8 -6
- package/internals/length-of-array-like.js +7 -0
- package/internals/map-upsert.js +4 -3
- package/internals/native-weak-map.js +2 -1
- package/internals/new-promise-capability.js +3 -3
- package/internals/number-parse-float.js +6 -1
- package/internals/number-parse-int.js +6 -1
- package/internals/object-get-own-property-descriptor.js +2 -2
- package/internals/object-get-prototype-of.js +8 -6
- package/internals/object-iterator.js +2 -2
- package/internals/object-keys-internal.js +3 -3
- package/internals/ordinary-to-primitive.js +4 -3
- package/internals/redefine.js +12 -6
- package/internals/regexp-exec-abstract.js +8 -13
- package/internals/regexp-unsupported-dot-all.js +1 -1
- package/internals/regexp-unsupported-ncg.js +1 -1
- package/internals/set-to-string-tag.js +2 -2
- package/internals/shared.js +1 -1
- package/internals/species-constructor.js +2 -2
- package/internals/string-multibyte.js +2 -3
- package/internals/string-pad-webkit-bug.js +0 -1
- package/internals/string-pad.js +1 -1
- package/internals/string-repeat.js +2 -2
- package/internals/string-trim-forced.js +4 -1
- package/internals/task.js +3 -2
- package/internals/to-absolute-index.js +2 -2
- package/internals/to-index.js +2 -2
- package/internals/to-integer-or-infinity.js +10 -0
- package/internals/to-length.js +2 -2
- package/internals/to-positive-integer.js +2 -2
- package/internals/to-primitive.js +3 -2
- package/internals/to-string.js +2 -2
- package/internals/try-to-string.js +7 -0
- package/internals/typed-array-constructor.js +8 -8
- package/internals/typed-array-from.js +6 -4
- package/internals/well-known-symbol.js +3 -3
- package/modules/es.aggregate-error.js +5 -2
- package/modules/es.array.at.js +4 -4
- package/modules/es.array.concat.js +2 -2
- package/modules/es.array.flat-map.js +4 -4
- package/modules/es.array.flat.js +4 -4
- package/modules/es.array.of.js +2 -1
- package/modules/es.array.slice.js +5 -4
- package/modules/es.array.sort.js +4 -4
- package/modules/es.array.splice.js +4 -4
- package/modules/es.date.set-year.js +2 -2
- package/modules/es.date.to-primitive.js +2 -2
- package/modules/es.function.has-instance.js +2 -1
- package/modules/es.function.name.js +2 -1
- package/modules/es.number.constructor.js +15 -14
- package/modules/es.number.is-integer.js +2 -2
- package/modules/es.number.is-safe-integer.js +2 -2
- package/modules/es.number.to-fixed.js +2 -2
- package/modules/es.object.define-getter.js +2 -2
- package/modules/es.object.define-setter.js +2 -2
- package/modules/es.object.has-own.js +1 -1
- package/modules/es.parse-float.js +3 -3
- package/modules/es.parse-int.js +3 -3
- package/modules/es.promise.all-settled.js +2 -2
- package/modules/es.promise.any.js +2 -2
- package/modules/es.promise.finally.js +3 -2
- package/modules/es.promise.js +10 -9
- package/modules/es.reflect.apply.js +2 -2
- package/modules/es.reflect.construct.js +3 -3
- package/modules/es.regexp.constructor.js +2 -2
- package/modules/es.regexp.test.js +4 -4
- package/modules/es.regexp.to-string.js +2 -1
- package/modules/es.string.at-alternative.js +3 -4
- package/modules/es.string.ends-with.js +1 -1
- package/modules/es.string.match-all.js +6 -16
- package/modules/es.string.match.js +3 -2
- package/modules/es.string.raw.js +12 -6
- package/modules/es.string.replace-all.js +5 -3
- package/modules/es.string.replace.js +7 -5
- package/modules/es.string.search.js +3 -2
- package/modules/es.string.split.js +3 -2
- package/modules/es.string.substr.js +7 -4
- package/modules/es.string.trim-end.js +1 -1
- package/modules/es.string.trim-start.js +1 -1
- package/modules/es.symbol.description.js +4 -3
- package/modules/es.symbol.js +20 -16
- package/modules/es.typed-array.at.js +4 -4
- package/modules/es.typed-array.iterator.js +4 -4
- package/modules/es.typed-array.set.js +2 -2
- package/modules/es.typed-array.sort.js +4 -4
- package/modules/esnext.aggregate-error.js +1 -1
- package/modules/esnext.array.from-async.js +8 -0
- package/modules/esnext.array.last-index.js +2 -2
- package/modules/esnext.array.last-item.js +3 -3
- package/modules/esnext.async-iterator.constructor.js +3 -3
- package/modules/esnext.async-iterator.filter.js +2 -2
- package/modules/esnext.async-iterator.flat-map.js +3 -3
- package/modules/esnext.async-iterator.from.js +7 -9
- package/modules/esnext.async-iterator.map.js +2 -2
- package/modules/esnext.async-iterator.reduce.js +3 -3
- package/modules/esnext.async-iterator.to-array.js +1 -1
- package/modules/esnext.global-this.js +1 -1
- package/modules/esnext.iterator.constructor.js +5 -12
- package/modules/esnext.iterator.every.js +2 -2
- package/modules/esnext.iterator.filter.js +2 -2
- package/modules/esnext.iterator.find.js +2 -2
- package/modules/esnext.iterator.flat-map.js +4 -4
- package/modules/esnext.iterator.from.js +5 -7
- package/modules/esnext.iterator.map.js +2 -2
- package/modules/esnext.iterator.reduce.js +2 -2
- package/modules/esnext.iterator.some.js +2 -2
- package/modules/esnext.map.filter.js +2 -2
- package/modules/esnext.map.group-by.js +9 -7
- package/modules/esnext.map.key-by.js +3 -3
- package/modules/esnext.map.key-of.js +1 -1
- package/modules/esnext.map.map-keys.js +2 -2
- package/modules/esnext.map.map-values.js +2 -2
- package/modules/esnext.map.merge.js +2 -2
- package/modules/esnext.map.reduce.js +2 -2
- package/modules/esnext.map.update-or-insert.js +1 -1
- package/modules/esnext.map.update.js +3 -3
- package/modules/esnext.number.from-string.js +2 -2
- package/modules/esnext.observable.js +16 -14
- package/modules/esnext.promise.all-settled.js +1 -1
- package/modules/esnext.promise.any.js +1 -1
- package/modules/esnext.set.difference.js +2 -2
- package/modules/esnext.set.filter.js +2 -2
- package/modules/esnext.set.intersection.js +3 -3
- package/modules/esnext.set.is-disjoint-from.js +2 -2
- package/modules/esnext.set.is-subset-of.js +4 -3
- package/modules/esnext.set.is-superset-of.js +2 -2
- package/modules/esnext.set.map.js +2 -2
- package/modules/esnext.set.reduce.js +2 -2
- package/modules/esnext.set.symmetric-difference.js +3 -3
- package/modules/esnext.set.union.js +2 -2
- package/modules/esnext.string.match-all.js +1 -1
- package/modules/esnext.string.replace-all.js +1 -1
- package/modules/esnext.typed-array.from-async.js +26 -0
- package/modules/web.dom-collections.for-each.js +10 -3
- package/modules/web.dom-collections.iterator.js +8 -3
- package/modules/web.timers.js +2 -1
- package/modules/web.url-search-params.js +7 -6
- package/modules/web.url.js +6 -6
- package/package.json +2 -2
- package/postinstall.js +1 -1
- package/proposals/array-from-async.js +3 -0
- package/stage/1.js +1 -0
- package/internals/a-function.js +0 -5
- package/internals/is-integer.js +0 -9
- package/internals/to-integer.js +0 -8
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
var bind = require('../internals/function-bind-context');
|
|
2
2
|
var IndexedObject = require('../internals/indexed-object');
|
|
3
3
|
var toObject = require('../internals/to-object');
|
|
4
|
-
var
|
|
4
|
+
var lengthOfArrayLike = require('../internals/length-of-array-like');
|
|
5
5
|
var arraySpeciesCreate = require('../internals/array-species-create');
|
|
6
6
|
|
|
7
7
|
var push = [].push;
|
|
@@ -19,7 +19,7 @@ var createMethod = function (TYPE) {
|
|
|
19
19
|
var O = toObject($this);
|
|
20
20
|
var self = IndexedObject(O);
|
|
21
21
|
var boundFunction = bind(callbackfn, that, 3);
|
|
22
|
-
var length =
|
|
22
|
+
var length = lengthOfArrayLike(self);
|
|
23
23
|
var index = 0;
|
|
24
24
|
var create = specificCreate || arraySpeciesCreate;
|
|
25
25
|
var target = IS_MAP ? create($this, length) : IS_FILTER || IS_FILTER_REJECT ? create($this, 0) : undefined;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
/* eslint-disable es/no-array-prototype-lastindexof -- safe */
|
|
3
3
|
var toIndexedObject = require('../internals/to-indexed-object');
|
|
4
|
-
var
|
|
5
|
-
var
|
|
4
|
+
var toIntegerOrInfinity = require('../internals/to-integer-or-infinity');
|
|
5
|
+
var lengthOfArrayLike = require('../internals/length-of-array-like');
|
|
6
6
|
var arrayMethodIsStrict = require('../internals/array-method-is-strict');
|
|
7
7
|
|
|
8
8
|
var min = Math.min;
|
|
@@ -17,9 +17,9 @@ module.exports = FORCED ? function lastIndexOf(searchElement /* , fromIndex = @[
|
|
|
17
17
|
// convert -0 to +0
|
|
18
18
|
if (NEGATIVE_ZERO) return $lastIndexOf.apply(this, arguments) || 0;
|
|
19
19
|
var O = toIndexedObject(this);
|
|
20
|
-
var length =
|
|
20
|
+
var length = lengthOfArrayLike(O);
|
|
21
21
|
var index = length - 1;
|
|
22
|
-
if (arguments.length > 1) index = min(index,
|
|
22
|
+
if (arguments.length > 1) index = min(index, toIntegerOrInfinity(arguments[1]));
|
|
23
23
|
if (index < 0) index = length + index;
|
|
24
24
|
for (;index >= 0; index--) if (index in O && O[index] === searchElement) return index || 0;
|
|
25
25
|
return -1;
|
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
var
|
|
1
|
+
var aCallable = require('../internals/a-callable');
|
|
2
2
|
var toObject = require('../internals/to-object');
|
|
3
3
|
var IndexedObject = require('../internals/indexed-object');
|
|
4
|
-
var
|
|
4
|
+
var lengthOfArrayLike = require('../internals/length-of-array-like');
|
|
5
5
|
|
|
6
6
|
// `Array.prototype.{ reduce, reduceRight }` methods implementation
|
|
7
7
|
var createMethod = function (IS_RIGHT) {
|
|
8
8
|
return function (that, callbackfn, argumentsLength, memo) {
|
|
9
|
-
|
|
9
|
+
aCallable(callbackfn);
|
|
10
10
|
var O = toObject(that);
|
|
11
11
|
var self = IndexedObject(O);
|
|
12
|
-
var length =
|
|
12
|
+
var length = lengthOfArrayLike(O);
|
|
13
13
|
var index = IS_RIGHT ? length - 1 : 0;
|
|
14
14
|
var i = IS_RIGHT ? -1 : 1;
|
|
15
15
|
if (argumentsLength < 2) while (true) {
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
var isObject = require('../internals/is-object');
|
|
2
1
|
var isArray = require('../internals/is-array');
|
|
2
|
+
var isConstructor = require('../internals/is-constructor');
|
|
3
|
+
var isObject = require('../internals/is-object');
|
|
3
4
|
var wellKnownSymbol = require('../internals/well-known-symbol');
|
|
4
5
|
|
|
5
6
|
var SPECIES = wellKnownSymbol('species');
|
|
@@ -11,7 +12,7 @@ module.exports = function (originalArray) {
|
|
|
11
12
|
if (isArray(originalArray)) {
|
|
12
13
|
C = originalArray.constructor;
|
|
13
14
|
// cross-realm fallback
|
|
14
|
-
if (
|
|
15
|
+
if (isConstructor(C) && (C === Array || isArray(C.prototype))) C = undefined;
|
|
15
16
|
else if (isObject(C)) {
|
|
16
17
|
C = C[SPECIES];
|
|
17
18
|
if (C === null) C = undefined;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
|
-
var
|
|
2
|
+
var aCallable = require('../internals/a-callable');
|
|
3
|
+
var lengthOfArrayLike = require('../internals/length-of-array-like');
|
|
3
4
|
var toObject = require('../internals/to-object');
|
|
4
5
|
var getBuiltIn = require('../internals/get-built-in');
|
|
5
6
|
var arraySpeciesCreate = require('../internals/array-species-create');
|
|
@@ -10,16 +11,15 @@ var push = [].push;
|
|
|
10
11
|
// https://github.com/tc39/proposal-array-unique
|
|
11
12
|
module.exports = function uniqueBy(resolver) {
|
|
12
13
|
var that = toObject(this);
|
|
13
|
-
var length =
|
|
14
|
+
var length = lengthOfArrayLike(that);
|
|
14
15
|
var result = arraySpeciesCreate(that, 0);
|
|
15
16
|
var Map = getBuiltIn('Map');
|
|
16
17
|
var map = new Map();
|
|
17
18
|
var resolverFunction, index, item, key;
|
|
18
|
-
if (
|
|
19
|
-
else
|
|
19
|
+
if (resolver != null) resolverFunction = aCallable(resolver);
|
|
20
|
+
else resolverFunction = function (value) {
|
|
20
21
|
return value;
|
|
21
22
|
};
|
|
22
|
-
else throw new TypeError('Incorrect resolver!');
|
|
23
23
|
for (index = 0; index < length; index++) {
|
|
24
24
|
item = that[index];
|
|
25
25
|
key = resolverFunction(item);
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
'use strict';
|
|
2
|
-
var path = require('../internals/path');
|
|
3
2
|
var anObject = require('../internals/an-object');
|
|
4
3
|
var create = require('../internals/object-create');
|
|
5
4
|
var getMethod = require('../internals/get-method');
|
|
6
5
|
var redefineAll = require('../internals/redefine-all');
|
|
7
6
|
var InternalStateModule = require('../internals/internal-state');
|
|
8
7
|
var getBuiltIn = require('../internals/get-built-in');
|
|
8
|
+
var AsyncIteratorPrototype = require('../internals/async-iterator-prototype');
|
|
9
9
|
|
|
10
10
|
var Promise = getBuiltIn('Promise');
|
|
11
11
|
|
|
@@ -26,7 +26,7 @@ var AsyncFromSyncIterator = function AsyncIterator(iterator) {
|
|
|
26
26
|
});
|
|
27
27
|
};
|
|
28
28
|
|
|
29
|
-
AsyncFromSyncIterator.prototype = redefineAll(create(
|
|
29
|
+
AsyncFromSyncIterator.prototype = redefineAll(create(AsyncIteratorPrototype), {
|
|
30
30
|
next: function next(arg) {
|
|
31
31
|
var state = getInternalState(this);
|
|
32
32
|
var hasArg = !!arguments.length;
|
|
@@ -39,7 +39,7 @@ AsyncFromSyncIterator.prototype = redefineAll(create(path.AsyncIterator.prototyp
|
|
|
39
39
|
var iterator = getInternalState(this).iterator;
|
|
40
40
|
var hasArg = !!arguments.length;
|
|
41
41
|
return new Promise(function (resolve, reject) {
|
|
42
|
-
var $return = getMethod(iterator
|
|
42
|
+
var $return = getMethod(iterator, 'return');
|
|
43
43
|
if ($return === undefined) return resolve({ done: true, value: arg });
|
|
44
44
|
var result = anObject($return.apply(iterator, hasArg ? [arg] : []));
|
|
45
45
|
asyncFromSyncIteratorContinuation(result, resolve, reject);
|
|
@@ -49,7 +49,7 @@ AsyncFromSyncIterator.prototype = redefineAll(create(path.AsyncIterator.prototyp
|
|
|
49
49
|
var iterator = getInternalState(this).iterator;
|
|
50
50
|
var hasArg = !!arguments.length;
|
|
51
51
|
return new Promise(function (resolve, reject) {
|
|
52
|
-
var $throw = getMethod(iterator
|
|
52
|
+
var $throw = getMethod(iterator, 'throw');
|
|
53
53
|
if ($throw === undefined) return reject(arg);
|
|
54
54
|
var result = anObject($throw.apply(iterator, hasArg ? [arg] : []));
|
|
55
55
|
asyncFromSyncIteratorContinuation(result, resolve, reject);
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
'use strict';
|
|
2
|
-
var
|
|
3
|
-
var aFunction = require('../internals/a-function');
|
|
2
|
+
var aCallable = require('../internals/a-callable');
|
|
4
3
|
var anObject = require('../internals/an-object');
|
|
5
4
|
var create = require('../internals/object-create');
|
|
6
5
|
var createNonEnumerableProperty = require('../internals/create-non-enumerable-property');
|
|
@@ -8,6 +7,8 @@ var redefineAll = require('../internals/redefine-all');
|
|
|
8
7
|
var wellKnownSymbol = require('../internals/well-known-symbol');
|
|
9
8
|
var InternalStateModule = require('../internals/internal-state');
|
|
10
9
|
var getBuiltIn = require('../internals/get-built-in');
|
|
10
|
+
var getMethod = require('../internals/get-method');
|
|
11
|
+
var AsyncIteratorPrototype = require('../internals/async-iterator-prototype');
|
|
11
12
|
|
|
12
13
|
var Promise = getBuiltIn('Promise');
|
|
13
14
|
|
|
@@ -18,13 +19,13 @@ var TO_STRING_TAG = wellKnownSymbol('toStringTag');
|
|
|
18
19
|
|
|
19
20
|
module.exports = function (nextHandler, IS_ITERATOR) {
|
|
20
21
|
var AsyncIteratorProxy = function AsyncIterator(state) {
|
|
21
|
-
state.next =
|
|
22
|
+
state.next = aCallable(state.iterator.next);
|
|
22
23
|
state.done = false;
|
|
23
24
|
state.ignoreArgument = !IS_ITERATOR;
|
|
24
25
|
setInternalState(this, state);
|
|
25
26
|
};
|
|
26
27
|
|
|
27
|
-
AsyncIteratorProxy.prototype = redefineAll(create(
|
|
28
|
+
AsyncIteratorProxy.prototype = redefineAll(create(AsyncIteratorPrototype), {
|
|
28
29
|
next: function next(arg) {
|
|
29
30
|
var that = this;
|
|
30
31
|
var hasArgument = !!arguments.length;
|
|
@@ -41,7 +42,7 @@ module.exports = function (nextHandler, IS_ITERATOR) {
|
|
|
41
42
|
var state = getInternalState(that);
|
|
42
43
|
var iterator = state.iterator;
|
|
43
44
|
state.done = true;
|
|
44
|
-
var $$return = iterator
|
|
45
|
+
var $$return = getMethod(iterator, 'return');
|
|
45
46
|
if ($$return === undefined) return resolve({ done: true, value: value });
|
|
46
47
|
Promise.resolve($$return.call(iterator, value)).then(function (result) {
|
|
47
48
|
anObject(result);
|
|
@@ -55,7 +56,7 @@ module.exports = function (nextHandler, IS_ITERATOR) {
|
|
|
55
56
|
var state = getInternalState(that);
|
|
56
57
|
var iterator = state.iterator;
|
|
57
58
|
state.done = true;
|
|
58
|
-
var $$throw = iterator
|
|
59
|
+
var $$throw = getMethod(iterator, 'throw');
|
|
59
60
|
if ($$throw === undefined) return reject(value);
|
|
60
61
|
resolve($$throw.call(iterator, value));
|
|
61
62
|
});
|
|
@@ -1,28 +1,31 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
// https://github.com/tc39/proposal-iterator-helpers
|
|
3
|
-
|
|
3
|
+
// https://github.com/tc39/proposal-array-from-async
|
|
4
|
+
var aCallable = require('../internals/a-callable');
|
|
4
5
|
var anObject = require('../internals/an-object');
|
|
5
6
|
var getBuiltIn = require('../internals/get-built-in');
|
|
7
|
+
var getMethod = require('../internals/get-method');
|
|
6
8
|
|
|
7
|
-
var
|
|
8
|
-
var push = [].push;
|
|
9
|
+
var MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF;
|
|
9
10
|
|
|
10
11
|
var createMethod = function (TYPE) {
|
|
11
12
|
var IS_TO_ARRAY = TYPE == 0;
|
|
12
13
|
var IS_FOR_EACH = TYPE == 1;
|
|
13
14
|
var IS_EVERY = TYPE == 2;
|
|
14
15
|
var IS_SOME = TYPE == 3;
|
|
15
|
-
return function (iterator, fn) {
|
|
16
|
+
return function (iterator, fn, target) {
|
|
16
17
|
anObject(iterator);
|
|
17
|
-
var
|
|
18
|
-
var
|
|
19
|
-
|
|
18
|
+
var Promise = getBuiltIn('Promise');
|
|
19
|
+
var next = aCallable(iterator.next);
|
|
20
|
+
var index = 0;
|
|
21
|
+
var MAPPING = fn !== undefined;
|
|
22
|
+
if (MAPPING || !IS_TO_ARRAY) aCallable(fn);
|
|
20
23
|
|
|
21
24
|
return new Promise(function (resolve, reject) {
|
|
22
25
|
var closeIteration = function (method, argument) {
|
|
23
26
|
try {
|
|
24
|
-
var returnMethod = iterator
|
|
25
|
-
if (returnMethod
|
|
27
|
+
var returnMethod = getMethod(iterator, 'return');
|
|
28
|
+
if (returnMethod) {
|
|
26
29
|
return Promise.resolve(returnMethod.call(iterator)).then(function () {
|
|
27
30
|
method(argument);
|
|
28
31
|
}, function (error) {
|
|
@@ -40,25 +43,34 @@ var createMethod = function (TYPE) {
|
|
|
40
43
|
|
|
41
44
|
var loop = function () {
|
|
42
45
|
try {
|
|
46
|
+
if (IS_TO_ARRAY && (index > MAX_SAFE_INTEGER) && MAPPING) {
|
|
47
|
+
throw TypeError('The allowed number of iterations has been exceeded');
|
|
48
|
+
}
|
|
43
49
|
Promise.resolve(anObject(next.call(iterator))).then(function (step) {
|
|
44
50
|
try {
|
|
45
51
|
if (anObject(step).done) {
|
|
46
|
-
|
|
52
|
+
if (IS_TO_ARRAY) {
|
|
53
|
+
target.length = index;
|
|
54
|
+
resolve(target);
|
|
55
|
+
} else resolve(IS_SOME ? false : IS_EVERY || undefined);
|
|
47
56
|
} else {
|
|
48
57
|
var value = step.value;
|
|
49
|
-
if (
|
|
50
|
-
|
|
51
|
-
loop();
|
|
52
|
-
} else {
|
|
53
|
-
Promise.resolve(fn(value)).then(function (result) {
|
|
58
|
+
if (MAPPING) {
|
|
59
|
+
Promise.resolve(IS_TO_ARRAY ? fn(value, index) : fn(value)).then(function (result) {
|
|
54
60
|
if (IS_FOR_EACH) {
|
|
55
61
|
loop();
|
|
56
62
|
} else if (IS_EVERY) {
|
|
57
63
|
result ? loop() : closeIteration(resolve, false);
|
|
64
|
+
} else if (IS_TO_ARRAY) {
|
|
65
|
+
target[index++] = result;
|
|
66
|
+
loop();
|
|
58
67
|
} else {
|
|
59
68
|
result ? closeIteration(resolve, IS_SOME || value) : loop();
|
|
60
69
|
}
|
|
61
70
|
}, onError);
|
|
71
|
+
} else {
|
|
72
|
+
target[index++] = value;
|
|
73
|
+
loop();
|
|
62
74
|
}
|
|
63
75
|
}
|
|
64
76
|
} catch (error) { onError(error); }
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
var global = require('../internals/global');
|
|
2
2
|
var shared = require('../internals/shared-store');
|
|
3
|
+
var isCallable = require('../internals/is-callable');
|
|
4
|
+
var create = require('../internals/object-create');
|
|
3
5
|
var getPrototypeOf = require('../internals/object-get-prototype-of');
|
|
4
|
-
var
|
|
5
|
-
var createNonEnumerableProperty = require('../internals/create-non-enumerable-property');
|
|
6
|
+
var redefine = require('../internals/redefine');
|
|
6
7
|
var wellKnownSymbol = require('../internals/well-known-symbol');
|
|
7
8
|
var IS_PURE = require('../internals/is-pure');
|
|
8
9
|
|
|
@@ -12,24 +13,23 @@ var AsyncIterator = global.AsyncIterator;
|
|
|
12
13
|
var PassedAsyncIteratorPrototype = shared.AsyncIteratorPrototype;
|
|
13
14
|
var AsyncIteratorPrototype, prototype;
|
|
14
15
|
|
|
15
|
-
if (
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
} catch (error) { /* empty */ }
|
|
26
|
-
}
|
|
16
|
+
if (PassedAsyncIteratorPrototype) {
|
|
17
|
+
AsyncIteratorPrototype = PassedAsyncIteratorPrototype;
|
|
18
|
+
} else if (isCallable(AsyncIterator)) {
|
|
19
|
+
AsyncIteratorPrototype = AsyncIterator.prototype;
|
|
20
|
+
} else if (shared[USE_FUNCTION_CONSTRUCTOR] || global[USE_FUNCTION_CONSTRUCTOR]) {
|
|
21
|
+
try {
|
|
22
|
+
// eslint-disable-next-line no-new-func -- we have no alternatives without usage of modern syntax
|
|
23
|
+
prototype = getPrototypeOf(getPrototypeOf(getPrototypeOf(Function('return async function*(){}()')())));
|
|
24
|
+
if (getPrototypeOf(prototype) === Object.prototype) AsyncIteratorPrototype = prototype;
|
|
25
|
+
} catch (error) { /* empty */ }
|
|
27
26
|
}
|
|
28
27
|
|
|
29
28
|
if (!AsyncIteratorPrototype) AsyncIteratorPrototype = {};
|
|
29
|
+
else if (IS_PURE) AsyncIteratorPrototype = create(AsyncIteratorPrototype);
|
|
30
30
|
|
|
31
|
-
if (!
|
|
32
|
-
|
|
31
|
+
if (!isCallable(AsyncIteratorPrototype[ASYNC_ITERATOR])) {
|
|
32
|
+
redefine(AsyncIteratorPrototype, ASYNC_ITERATOR, function () {
|
|
33
33
|
return this;
|
|
34
34
|
});
|
|
35
35
|
}
|
package/internals/classof.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
var TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');
|
|
2
|
+
var isCallable = require('../internals/is-callable');
|
|
2
3
|
var classofRaw = require('../internals/classof-raw');
|
|
3
4
|
var wellKnownSymbol = require('../internals/well-known-symbol');
|
|
4
5
|
|
|
@@ -22,5 +23,5 @@ module.exports = TO_STRING_TAG_SUPPORT ? classofRaw : function (it) {
|
|
|
22
23
|
// builtinTag case
|
|
23
24
|
: CORRECT_ARGUMENTS ? classofRaw(O)
|
|
24
25
|
// ES3 arguments fallback
|
|
25
|
-
: (result = classofRaw(O)) == 'Object' &&
|
|
26
|
+
: (result = classofRaw(O)) == 'Object' && isCallable(O.callee) ? 'Arguments' : result;
|
|
26
27
|
};
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
'use strict';
|
|
2
|
+
var aCallable = require('../internals/a-callable');
|
|
2
3
|
var anObject = require('../internals/an-object');
|
|
3
|
-
var aFunction = require('../internals/a-function');
|
|
4
4
|
|
|
5
5
|
// https://github.com/tc39/collection-methods
|
|
6
6
|
module.exports = function (/* ...elements */) {
|
|
7
7
|
var set = anObject(this);
|
|
8
|
-
var adder =
|
|
8
|
+
var adder = aCallable(set.add);
|
|
9
9
|
for (var k = 0, len = arguments.length; k < len; k++) {
|
|
10
10
|
adder.call(set, arguments[k]);
|
|
11
11
|
}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
'use strict';
|
|
2
|
+
var aCallable = require('../internals/a-callable');
|
|
2
3
|
var anObject = require('../internals/an-object');
|
|
3
|
-
var aFunction = require('../internals/a-function');
|
|
4
4
|
|
|
5
5
|
// https://github.com/tc39/collection-methods
|
|
6
6
|
module.exports = function (/* ...elements */) {
|
|
7
7
|
var collection = anObject(this);
|
|
8
|
-
var remover =
|
|
8
|
+
var remover = aCallable(collection['delete']);
|
|
9
9
|
var allDeleted = true;
|
|
10
10
|
var wasDeleted;
|
|
11
11
|
for (var k = 0, len = arguments.length; k < len; k++) {
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
// https://tc39.github.io/proposal-setmap-offrom/
|
|
3
|
-
var
|
|
3
|
+
var aCallable = require('../internals/a-callable');
|
|
4
|
+
var aConstructor = require('../internals/a-constructor');
|
|
4
5
|
var bind = require('../internals/function-bind-context');
|
|
5
6
|
var iterate = require('../internals/iterate');
|
|
6
7
|
|
|
@@ -8,9 +9,9 @@ module.exports = function from(source /* , mapFn, thisArg */) {
|
|
|
8
9
|
var length = arguments.length;
|
|
9
10
|
var mapFn = length > 1 ? arguments[1] : undefined;
|
|
10
11
|
var mapping, array, n, boundFunction;
|
|
11
|
-
|
|
12
|
+
aConstructor(this);
|
|
12
13
|
mapping = mapFn !== undefined;
|
|
13
|
-
if (mapping)
|
|
14
|
+
if (mapping) aCallable(mapFn);
|
|
14
15
|
if (source == undefined) return new this();
|
|
15
16
|
array = [];
|
|
16
17
|
if (mapping) {
|
|
@@ -6,7 +6,7 @@ var isObject = require('../internals/is-object');
|
|
|
6
6
|
var anInstance = require('../internals/an-instance');
|
|
7
7
|
var iterate = require('../internals/iterate');
|
|
8
8
|
var ArrayIterationModule = require('../internals/array-iteration');
|
|
9
|
-
var
|
|
9
|
+
var hasOwn = require('../internals/has-own-property');
|
|
10
10
|
var InternalStateModule = require('../internals/internal-state');
|
|
11
11
|
|
|
12
12
|
var setInternalState = InternalStateModule.set;
|
|
@@ -83,7 +83,7 @@ module.exports = {
|
|
|
83
83
|
if (!isObject(key)) return false;
|
|
84
84
|
var data = getWeakData(key);
|
|
85
85
|
if (data === true) return uncaughtFrozenStore(state)['delete'](key);
|
|
86
|
-
return data &&
|
|
86
|
+
return data && hasOwn(data, state.id) && delete data[state.id];
|
|
87
87
|
},
|
|
88
88
|
// `{ WeakMap, WeakSet }.prototype.has(key)` methods
|
|
89
89
|
// https://tc39.es/ecma262/#sec-weakmap.prototype.has
|
|
@@ -93,7 +93,7 @@ module.exports = {
|
|
|
93
93
|
if (!isObject(key)) return false;
|
|
94
94
|
var data = getWeakData(key);
|
|
95
95
|
if (data === true) return uncaughtFrozenStore(state).has(key);
|
|
96
|
-
return data &&
|
|
96
|
+
return data && hasOwn(data, state.id);
|
|
97
97
|
}
|
|
98
98
|
});
|
|
99
99
|
|
package/internals/collection.js
CHANGED
|
@@ -6,6 +6,7 @@ var redefine = require('../internals/redefine');
|
|
|
6
6
|
var InternalMetadataModule = require('../internals/internal-metadata');
|
|
7
7
|
var iterate = require('../internals/iterate');
|
|
8
8
|
var anInstance = require('../internals/an-instance');
|
|
9
|
+
var isCallable = require('../internals/is-callable');
|
|
9
10
|
var isObject = require('../internals/is-object');
|
|
10
11
|
var fails = require('../internals/fails');
|
|
11
12
|
var checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');
|
|
@@ -42,7 +43,7 @@ module.exports = function (CONSTRUCTOR_NAME, wrapper, common) {
|
|
|
42
43
|
|
|
43
44
|
var REPLACE = isForced(
|
|
44
45
|
CONSTRUCTOR_NAME,
|
|
45
|
-
|
|
46
|
+
!isCallable(NativeConstructor) || !(IS_WEAK || NativePrototype.forEach && !fails(function () {
|
|
46
47
|
new NativeConstructor().entries().next();
|
|
47
48
|
}))
|
|
48
49
|
);
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
var
|
|
1
|
+
var hasOwn = require('../internals/has-own-property');
|
|
2
2
|
var ownKeys = require('../internals/own-keys');
|
|
3
3
|
var getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');
|
|
4
4
|
var definePropertyModule = require('../internals/object-define-property');
|
|
@@ -9,6 +9,6 @@ module.exports = function (target, source) {
|
|
|
9
9
|
var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;
|
|
10
10
|
for (var i = 0; i < keys.length; i++) {
|
|
11
11
|
var key = keys[i];
|
|
12
|
-
if (!
|
|
12
|
+
if (!hasOwn(target, key)) defineProperty(target, key, getOwnPropertyDescriptor(source, key));
|
|
13
13
|
}
|
|
14
14
|
};
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
var $ = require('../internals/export');
|
|
3
|
+
var IS_PURE = require('../internals/is-pure');
|
|
4
|
+
var FunctionName = require('../internals/function-name');
|
|
5
|
+
var isCallable = require('../internals/is-callable');
|
|
3
6
|
var createIteratorConstructor = require('../internals/create-iterator-constructor');
|
|
4
7
|
var getPrototypeOf = require('../internals/object-get-prototype-of');
|
|
5
8
|
var setPrototypeOf = require('../internals/object-set-prototype-of');
|
|
@@ -7,10 +10,11 @@ var setToStringTag = require('../internals/set-to-string-tag');
|
|
|
7
10
|
var createNonEnumerableProperty = require('../internals/create-non-enumerable-property');
|
|
8
11
|
var redefine = require('../internals/redefine');
|
|
9
12
|
var wellKnownSymbol = require('../internals/well-known-symbol');
|
|
10
|
-
var IS_PURE = require('../internals/is-pure');
|
|
11
13
|
var Iterators = require('../internals/iterators');
|
|
12
14
|
var IteratorsCore = require('../internals/iterators-core');
|
|
13
15
|
|
|
16
|
+
var PROPER_FUNCTION_NAME = FunctionName.PROPER;
|
|
17
|
+
var CONFIGURABLE_FUNCTION_NAME = FunctionName.CONFIGURABLE;
|
|
14
18
|
var IteratorPrototype = IteratorsCore.IteratorPrototype;
|
|
15
19
|
var BUGGY_SAFARI_ITERATORS = IteratorsCore.BUGGY_SAFARI_ITERATORS;
|
|
16
20
|
var ITERATOR = wellKnownSymbol('iterator');
|
|
@@ -46,12 +50,12 @@ module.exports = function (Iterable, NAME, IteratorConstructor, next, DEFAULT, I
|
|
|
46
50
|
// fix native
|
|
47
51
|
if (anyNativeIterator) {
|
|
48
52
|
CurrentIteratorPrototype = getPrototypeOf(anyNativeIterator.call(new Iterable()));
|
|
49
|
-
if (
|
|
53
|
+
if (CurrentIteratorPrototype !== Object.prototype && CurrentIteratorPrototype.next) {
|
|
50
54
|
if (!IS_PURE && getPrototypeOf(CurrentIteratorPrototype) !== IteratorPrototype) {
|
|
51
55
|
if (setPrototypeOf) {
|
|
52
56
|
setPrototypeOf(CurrentIteratorPrototype, IteratorPrototype);
|
|
53
|
-
} else if (
|
|
54
|
-
|
|
57
|
+
} else if (!isCallable(CurrentIteratorPrototype[ITERATOR])) {
|
|
58
|
+
redefine(CurrentIteratorPrototype, ITERATOR, returnThis);
|
|
55
59
|
}
|
|
56
60
|
}
|
|
57
61
|
// Set @@toStringTag to native iterators
|
|
@@ -61,17 +65,15 @@ module.exports = function (Iterable, NAME, IteratorConstructor, next, DEFAULT, I
|
|
|
61
65
|
}
|
|
62
66
|
|
|
63
67
|
// fix Array.prototype.{ values, @@iterator }.name in V8 / FF
|
|
64
|
-
if (DEFAULT == VALUES && nativeIterator && nativeIterator.name !== VALUES) {
|
|
65
|
-
|
|
66
|
-
|
|
68
|
+
if (PROPER_FUNCTION_NAME && DEFAULT == VALUES && nativeIterator && nativeIterator.name !== VALUES) {
|
|
69
|
+
if (!IS_PURE && CONFIGURABLE_FUNCTION_NAME) {
|
|
70
|
+
createNonEnumerableProperty(IterablePrototype, 'name', VALUES);
|
|
71
|
+
} else {
|
|
72
|
+
INCORRECT_VALUES_NAME = true;
|
|
73
|
+
defaultIterator = function values() { return nativeIterator.call(this); };
|
|
74
|
+
}
|
|
67
75
|
}
|
|
68
76
|
|
|
69
|
-
// define iterator
|
|
70
|
-
if ((!IS_PURE || FORCED) && IterablePrototype[ITERATOR] !== defaultIterator) {
|
|
71
|
-
createNonEnumerableProperty(IterablePrototype, ITERATOR, defaultIterator);
|
|
72
|
-
}
|
|
73
|
-
Iterators[NAME] = defaultIterator;
|
|
74
|
-
|
|
75
77
|
// export additional methods
|
|
76
78
|
if (DEFAULT) {
|
|
77
79
|
methods = {
|
|
@@ -86,5 +88,11 @@ module.exports = function (Iterable, NAME, IteratorConstructor, next, DEFAULT, I
|
|
|
86
88
|
} else $({ target: NAME, proto: true, forced: BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME }, methods);
|
|
87
89
|
}
|
|
88
90
|
|
|
91
|
+
// define iterator
|
|
92
|
+
if ((!IS_PURE || FORCED) && IterablePrototype[ITERATOR] !== defaultIterator) {
|
|
93
|
+
redefine(IterablePrototype, ITERATOR, defaultIterator, { name: DEFAULT });
|
|
94
|
+
}
|
|
95
|
+
Iterators[NAME] = defaultIterator;
|
|
96
|
+
|
|
89
97
|
return methods;
|
|
90
98
|
};
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
var path = require('../internals/path');
|
|
2
|
-
var
|
|
2
|
+
var hasOwn = require('../internals/has-own-property');
|
|
3
3
|
var wrappedWellKnownSymbolModule = require('../internals/well-known-symbol-wrapped');
|
|
4
4
|
var defineProperty = require('../internals/object-define-property').f;
|
|
5
5
|
|
|
6
6
|
module.exports = function (NAME) {
|
|
7
7
|
var Symbol = path.Symbol || (path.Symbol = {});
|
|
8
|
-
if (!
|
|
8
|
+
if (!hasOwn(Symbol, NAME)) defineProperty(Symbol, NAME, {
|
|
9
9
|
value: wrappedWellKnownSymbolModule.f(NAME)
|
|
10
10
|
});
|
|
11
11
|
};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
// in old WebKit versions, `element.classList` is not an instance of global `DOMTokenList`
|
|
2
|
+
var documentCreateElement = require('../internals/document-create-element');
|
|
3
|
+
|
|
4
|
+
var classList = documentCreateElement('span').classList;
|
|
5
|
+
var DOMTokenListPrototype = classList && classList.constructor && classList.constructor.prototype;
|
|
6
|
+
|
|
7
|
+
module.exports = DOMTokenListPrototype === Object.prototype ? undefined : DOMTokenListPrototype;
|
package/internals/export.js
CHANGED
|
@@ -19,6 +19,7 @@ var isForced = require('../internals/is-forced');
|
|
|
19
19
|
options.sham - add a flag to not completely full polyfills
|
|
20
20
|
options.enumerable - export as enumerable property
|
|
21
21
|
options.noTargetGet - prevent calling a getter on target
|
|
22
|
+
options.name - the .name of the function if it does not match the key
|
|
22
23
|
*/
|
|
23
24
|
module.exports = function (options, source) {
|
|
24
25
|
var TARGET = options.target;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
var isArray = require('../internals/is-array');
|
|
3
|
-
var
|
|
3
|
+
var lengthOfArrayLike = require('../internals/length-of-array-like');
|
|
4
4
|
var bind = require('../internals/function-bind-context');
|
|
5
5
|
|
|
6
6
|
// `FlattenIntoArray` abstract operation
|
|
@@ -9,14 +9,15 @@ var flattenIntoArray = function (target, original, source, sourceLen, start, dep
|
|
|
9
9
|
var targetIndex = start;
|
|
10
10
|
var sourceIndex = 0;
|
|
11
11
|
var mapFn = mapper ? bind(mapper, thisArg, 3) : false;
|
|
12
|
-
var element;
|
|
12
|
+
var element, elementLen;
|
|
13
13
|
|
|
14
14
|
while (sourceIndex < sourceLen) {
|
|
15
15
|
if (sourceIndex in source) {
|
|
16
16
|
element = mapFn ? mapFn(source[sourceIndex], sourceIndex, original) : source[sourceIndex];
|
|
17
17
|
|
|
18
18
|
if (depth > 0 && isArray(element)) {
|
|
19
|
-
|
|
19
|
+
elementLen = lengthOfArrayLike(element);
|
|
20
|
+
targetIndex = flattenIntoArray(target, original, element, elementLen, targetIndex, depth - 1) - 1;
|
|
20
21
|
} else {
|
|
21
22
|
if (targetIndex >= 0x1FFFFFFFFFFFFF) throw TypeError('Exceed the acceptable array length');
|
|
22
23
|
target[targetIndex] = element;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
var
|
|
1
|
+
var aCallable = require('../internals/a-callable');
|
|
2
2
|
|
|
3
3
|
// optional / simple context binding
|
|
4
4
|
module.exports = function (fn, that, length) {
|
|
5
|
-
|
|
5
|
+
aCallable(fn);
|
|
6
6
|
if (that === undefined) return fn;
|
|
7
7
|
switch (length) {
|
|
8
8
|
case 0: return function () {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
'use strict';
|
|
2
|
-
var
|
|
2
|
+
var aCallable = require('../internals/a-callable');
|
|
3
3
|
var isObject = require('../internals/is-object');
|
|
4
4
|
|
|
5
5
|
var slice = [].slice;
|
|
@@ -16,7 +16,7 @@ var construct = function (C, argsLength, args) {
|
|
|
16
16
|
// `Function.prototype.bind` method implementation
|
|
17
17
|
// https://tc39.es/ecma262/#sec-function.prototype.bind
|
|
18
18
|
module.exports = Function.bind || function bind(that /* , ...args */) {
|
|
19
|
-
var fn =
|
|
19
|
+
var fn = aCallable(this);
|
|
20
20
|
var partArgs = slice.call(arguments, 1);
|
|
21
21
|
var boundFunction = function bound(/* args... */) {
|
|
22
22
|
var args = partArgs.concat(slice.call(arguments));
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
var DESCRIPTORS = require('../internals/descriptors');
|
|
2
|
+
var hasOwn = require('../internals/has-own-property');
|
|
3
|
+
|
|
4
|
+
var FunctionPrototype = Function.prototype;
|
|
5
|
+
// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe
|
|
6
|
+
var getDescriptor = DESCRIPTORS && Object.getOwnPropertyDescriptor;
|
|
7
|
+
|
|
8
|
+
var EXISTS = hasOwn(FunctionPrototype, 'name');
|
|
9
|
+
// additional protection from minified / mangled / dropped function names
|
|
10
|
+
var PROPER = EXISTS && (function something() { /* empty */ }).name === 'something';
|
|
11
|
+
var CONFIGURABLE = EXISTS && (!DESCRIPTORS || (DESCRIPTORS && getDescriptor(FunctionPrototype, 'name').configurable));
|
|
12
|
+
|
|
13
|
+
module.exports = {
|
|
14
|
+
EXISTS: EXISTS,
|
|
15
|
+
PROPER: PROPER,
|
|
16
|
+
CONFIGURABLE: CONFIGURABLE
|
|
17
|
+
};
|