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
package/modules/es.string.raw.js
CHANGED
|
@@ -1,20 +1,26 @@
|
|
|
1
1
|
var $ = require('../internals/export');
|
|
2
2
|
var toIndexedObject = require('../internals/to-indexed-object');
|
|
3
|
-
var
|
|
3
|
+
var toObject = require('../internals/to-object');
|
|
4
4
|
var toString = require('../internals/to-string');
|
|
5
|
+
var lengthOfArrayLike = require('../internals/length-of-array-like');
|
|
6
|
+
|
|
7
|
+
var ArrayPrototype = Array.prototype;
|
|
8
|
+
var push = ArrayPrototype.push;
|
|
9
|
+
var join = ArrayPrototype.join;
|
|
5
10
|
|
|
6
11
|
// `String.raw` method
|
|
7
12
|
// https://tc39.es/ecma262/#sec-string.raw
|
|
8
13
|
$({ target: 'String', stat: true }, {
|
|
9
14
|
raw: function raw(template) {
|
|
10
|
-
var rawTemplate = toIndexedObject(template.raw);
|
|
11
|
-
var literalSegments =
|
|
15
|
+
var rawTemplate = toIndexedObject(toObject(template).raw);
|
|
16
|
+
var literalSegments = lengthOfArrayLike(rawTemplate);
|
|
12
17
|
var argumentsLength = arguments.length;
|
|
13
18
|
var elements = [];
|
|
14
19
|
var i = 0;
|
|
15
20
|
while (literalSegments > i) {
|
|
16
|
-
|
|
17
|
-
if (i
|
|
18
|
-
|
|
21
|
+
push.call(elements, toString(rawTemplate[i++]));
|
|
22
|
+
if (i === literalSegments) return join.call(elements, '');
|
|
23
|
+
if (i < argumentsLength) push.call(elements, toString(arguments[i]));
|
|
24
|
+
}
|
|
19
25
|
}
|
|
20
26
|
});
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
var $ = require('../internals/export');
|
|
3
3
|
var requireObjectCoercible = require('../internals/require-object-coercible');
|
|
4
|
+
var isCallable = require('../internals/is-callable');
|
|
4
5
|
var isRegExp = require('../internals/is-regexp');
|
|
5
6
|
var toString = require('../internals/to-string');
|
|
7
|
+
var getMethod = require('../internals/get-method');
|
|
6
8
|
var getRegExpFlags = require('../internals/regexp-flags');
|
|
7
9
|
var getSubstitution = require('../internals/get-substitution');
|
|
8
10
|
var wellKnownSymbol = require('../internals/well-known-symbol');
|
|
@@ -36,8 +38,8 @@ $({ target: 'String', proto: true }, {
|
|
|
36
38
|
));
|
|
37
39
|
if (!~flags.indexOf('g')) throw TypeError('`.replaceAll` does not allow non-global regexes');
|
|
38
40
|
}
|
|
39
|
-
replacer = searchValue
|
|
40
|
-
if (replacer
|
|
41
|
+
replacer = getMethod(searchValue, REPLACE);
|
|
42
|
+
if (replacer) {
|
|
41
43
|
return replacer.call(searchValue, O, replaceValue);
|
|
42
44
|
} else if (IS_PURE && IS_REG_EXP) {
|
|
43
45
|
return toString(O).replace(searchValue, replaceValue);
|
|
@@ -45,7 +47,7 @@ $({ target: 'String', proto: true }, {
|
|
|
45
47
|
}
|
|
46
48
|
string = toString(O);
|
|
47
49
|
searchString = toString(searchValue);
|
|
48
|
-
functionalReplace =
|
|
50
|
+
functionalReplace = isCallable(replaceValue);
|
|
49
51
|
if (!functionalReplace) replaceValue = toString(replaceValue);
|
|
50
52
|
searchLength = searchString.length;
|
|
51
53
|
advanceBy = max(1, searchLength);
|
|
@@ -2,11 +2,13 @@
|
|
|
2
2
|
var fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');
|
|
3
3
|
var fails = require('../internals/fails');
|
|
4
4
|
var anObject = require('../internals/an-object');
|
|
5
|
-
var
|
|
5
|
+
var isCallable = require('../internals/is-callable');
|
|
6
|
+
var toIntegerOrInfinity = require('../internals/to-integer-or-infinity');
|
|
6
7
|
var toLength = require('../internals/to-length');
|
|
7
8
|
var toString = require('../internals/to-string');
|
|
8
9
|
var requireObjectCoercible = require('../internals/require-object-coercible');
|
|
9
10
|
var advanceStringIndex = require('../internals/advance-string-index');
|
|
11
|
+
var getMethod = require('../internals/get-method');
|
|
10
12
|
var getSubstitution = require('../internals/get-substitution');
|
|
11
13
|
var regExpExec = require('../internals/regexp-exec-abstract');
|
|
12
14
|
var wellKnownSymbol = require('../internals/well-known-symbol');
|
|
@@ -54,8 +56,8 @@ fixRegExpWellKnownSymbolLogic('replace', function (_, nativeReplace, maybeCallNa
|
|
|
54
56
|
// https://tc39.es/ecma262/#sec-string.prototype.replace
|
|
55
57
|
function replace(searchValue, replaceValue) {
|
|
56
58
|
var O = requireObjectCoercible(this);
|
|
57
|
-
var replacer = searchValue == undefined ? undefined : searchValue
|
|
58
|
-
return replacer
|
|
59
|
+
var replacer = searchValue == undefined ? undefined : getMethod(searchValue, REPLACE);
|
|
60
|
+
return replacer
|
|
59
61
|
? replacer.call(searchValue, O, replaceValue)
|
|
60
62
|
: nativeReplace.call(toString(O), searchValue, replaceValue);
|
|
61
63
|
},
|
|
@@ -74,7 +76,7 @@ fixRegExpWellKnownSymbolLogic('replace', function (_, nativeReplace, maybeCallNa
|
|
|
74
76
|
if (res.done) return res.value;
|
|
75
77
|
}
|
|
76
78
|
|
|
77
|
-
var functionalReplace =
|
|
79
|
+
var functionalReplace = isCallable(replaceValue);
|
|
78
80
|
if (!functionalReplace) replaceValue = toString(replaceValue);
|
|
79
81
|
|
|
80
82
|
var global = rx.global;
|
|
@@ -100,7 +102,7 @@ fixRegExpWellKnownSymbolLogic('replace', function (_, nativeReplace, maybeCallNa
|
|
|
100
102
|
result = results[i];
|
|
101
103
|
|
|
102
104
|
var matched = toString(result[0]);
|
|
103
|
-
var position = max(min(
|
|
105
|
+
var position = max(min(toIntegerOrInfinity(result.index), S.length), 0);
|
|
104
106
|
var captures = [];
|
|
105
107
|
// NOTE: This is equivalent to
|
|
106
108
|
// captures = result.slice(1).map(maybeToString)
|
|
@@ -4,6 +4,7 @@ var anObject = require('../internals/an-object');
|
|
|
4
4
|
var requireObjectCoercible = require('../internals/require-object-coercible');
|
|
5
5
|
var sameValue = require('../internals/same-value');
|
|
6
6
|
var toString = require('../internals/to-string');
|
|
7
|
+
var getMethod = require('../internals/get-method');
|
|
7
8
|
var regExpExec = require('../internals/regexp-exec-abstract');
|
|
8
9
|
|
|
9
10
|
// @@search logic
|
|
@@ -13,8 +14,8 @@ fixRegExpWellKnownSymbolLogic('search', function (SEARCH, nativeSearch, maybeCal
|
|
|
13
14
|
// https://tc39.es/ecma262/#sec-string.prototype.search
|
|
14
15
|
function search(regexp) {
|
|
15
16
|
var O = requireObjectCoercible(this);
|
|
16
|
-
var searcher = regexp == undefined ? undefined : regexp
|
|
17
|
-
return searcher
|
|
17
|
+
var searcher = regexp == undefined ? undefined : getMethod(regexp, SEARCH);
|
|
18
|
+
return searcher ? searcher.call(regexp, O) : new RegExp(regexp)[SEARCH](toString(O));
|
|
18
19
|
},
|
|
19
20
|
// `RegExp.prototype[@@search]` method
|
|
20
21
|
// https://tc39.es/ecma262/#sec-regexp.prototype-@@search
|
|
@@ -7,6 +7,7 @@ var speciesConstructor = require('../internals/species-constructor');
|
|
|
7
7
|
var advanceStringIndex = require('../internals/advance-string-index');
|
|
8
8
|
var toLength = require('../internals/to-length');
|
|
9
9
|
var toString = require('../internals/to-string');
|
|
10
|
+
var getMethod = require('../internals/get-method');
|
|
10
11
|
var callRegExpExec = require('../internals/regexp-exec-abstract');
|
|
11
12
|
var regexpExec = require('../internals/regexp-exec');
|
|
12
13
|
var stickyHelpers = require('../internals/regexp-sticky-helpers');
|
|
@@ -88,8 +89,8 @@ fixRegExpWellKnownSymbolLogic('split', function (SPLIT, nativeSplit, maybeCallNa
|
|
|
88
89
|
// https://tc39.es/ecma262/#sec-string.prototype.split
|
|
89
90
|
function split(separator, limit) {
|
|
90
91
|
var O = requireObjectCoercible(this);
|
|
91
|
-
var splitter = separator == undefined ? undefined : separator
|
|
92
|
-
return splitter
|
|
92
|
+
var splitter = separator == undefined ? undefined : getMethod(separator, SPLIT);
|
|
93
|
+
return splitter
|
|
93
94
|
? splitter.call(separator, O, limit)
|
|
94
95
|
: internalSplit.call(toString(O), separator, limit);
|
|
95
96
|
},
|
|
@@ -1,24 +1,27 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
var $ = require('../internals/export');
|
|
3
3
|
var requireObjectCoercible = require('../internals/require-object-coercible');
|
|
4
|
-
var
|
|
4
|
+
var toIntegerOrInfinity = require('../internals/to-integer-or-infinity');
|
|
5
5
|
var toString = require('../internals/to-string');
|
|
6
6
|
|
|
7
7
|
var slice = ''.slice;
|
|
8
8
|
var max = Math.max;
|
|
9
9
|
var min = Math.min;
|
|
10
10
|
|
|
11
|
+
// eslint-disable-next-line unicorn/prefer-string-slice -- required for testing
|
|
12
|
+
var FORCED = !''.substr || 'ab'.substr(-1) !== 'b';
|
|
13
|
+
|
|
11
14
|
// `String.prototype.substr` method
|
|
12
15
|
// https://tc39.es/ecma262/#sec-string.prototype.substr
|
|
13
|
-
$({ target: 'String', proto: true }, {
|
|
16
|
+
$({ target: 'String', proto: true, forced: FORCED }, {
|
|
14
17
|
substr: function substr(start, length) {
|
|
15
18
|
var that = toString(requireObjectCoercible(this));
|
|
16
19
|
var size = that.length;
|
|
17
|
-
var intStart =
|
|
20
|
+
var intStart = toIntegerOrInfinity(start);
|
|
18
21
|
var intLength, intEnd;
|
|
19
22
|
if (intStart === Infinity) intStart = 0;
|
|
20
23
|
if (intStart < 0) intStart = max(size + intStart, 0);
|
|
21
|
-
intLength = length === undefined ? size :
|
|
24
|
+
intLength = length === undefined ? size : toIntegerOrInfinity(length);
|
|
22
25
|
if (intLength <= 0 || intLength === Infinity) return '';
|
|
23
26
|
intEnd = min(intStart + intLength, size);
|
|
24
27
|
return intStart >= intEnd ? '' : slice.call(that, intStart, intEnd);
|
|
@@ -13,7 +13,7 @@ var trimEnd = FORCED ? function trimEnd() {
|
|
|
13
13
|
// `String.prototype.{ trimEnd, trimRight }` methods
|
|
14
14
|
// https://tc39.es/ecma262/#sec-string.prototype.trimend
|
|
15
15
|
// https://tc39.es/ecma262/#String.prototype.trimright
|
|
16
|
-
$({ target: 'String', proto: true, forced: FORCED }, {
|
|
16
|
+
$({ target: 'String', proto: true, name: 'trimEnd', forced: FORCED }, {
|
|
17
17
|
trimEnd: trimEnd,
|
|
18
18
|
trimRight: trimEnd
|
|
19
19
|
});
|
|
@@ -13,7 +13,7 @@ var trimStart = FORCED ? function trimStart() {
|
|
|
13
13
|
// `String.prototype.{ trimStart, trimLeft }` methods
|
|
14
14
|
// https://tc39.es/ecma262/#sec-string.prototype.trimstart
|
|
15
15
|
// https://tc39.es/ecma262/#String.prototype.trimleft
|
|
16
|
-
$({ target: 'String', proto: true, forced: FORCED }, {
|
|
16
|
+
$({ target: 'String', proto: true, name: 'trimStart', forced: FORCED }, {
|
|
17
17
|
trimStart: trimStart,
|
|
18
18
|
trimLeft: trimStart
|
|
19
19
|
});
|
|
@@ -4,14 +4,15 @@
|
|
|
4
4
|
var $ = require('../internals/export');
|
|
5
5
|
var DESCRIPTORS = require('../internals/descriptors');
|
|
6
6
|
var global = require('../internals/global');
|
|
7
|
-
var
|
|
7
|
+
var hasOwn = require('../internals/has-own-property');
|
|
8
|
+
var isCallable = require('../internals/is-callable');
|
|
8
9
|
var isObject = require('../internals/is-object');
|
|
9
10
|
var defineProperty = require('../internals/object-define-property').f;
|
|
10
11
|
var copyConstructorProperties = require('../internals/copy-constructor-properties');
|
|
11
12
|
|
|
12
13
|
var NativeSymbol = global.Symbol;
|
|
13
14
|
|
|
14
|
-
if (DESCRIPTORS &&
|
|
15
|
+
if (DESCRIPTORS && isCallable(NativeSymbol) && (!('description' in NativeSymbol.prototype) ||
|
|
15
16
|
// Safari 12 bug
|
|
16
17
|
NativeSymbol().description !== undefined
|
|
17
18
|
)) {
|
|
@@ -38,7 +39,7 @@ if (DESCRIPTORS && typeof NativeSymbol == 'function' && (!('description' in Nati
|
|
|
38
39
|
get: function description() {
|
|
39
40
|
var symbol = isObject(this) ? this.valueOf() : this;
|
|
40
41
|
var string = symbolToString.call(symbol);
|
|
41
|
-
if (
|
|
42
|
+
if (hasOwn(EmptyStringDescriptionStore, symbol)) return '';
|
|
42
43
|
var desc = nativeSymbol ? string.slice(7, -1) : string.replace(regexp, '$1');
|
|
43
44
|
return desc === '' ? undefined : desc;
|
|
44
45
|
}
|
package/modules/es.symbol.js
CHANGED
|
@@ -6,8 +6,9 @@ var IS_PURE = require('../internals/is-pure');
|
|
|
6
6
|
var DESCRIPTORS = require('../internals/descriptors');
|
|
7
7
|
var NATIVE_SYMBOL = require('../internals/native-symbol');
|
|
8
8
|
var fails = require('../internals/fails');
|
|
9
|
-
var
|
|
9
|
+
var hasOwn = require('../internals/has-own-property');
|
|
10
10
|
var isArray = require('../internals/is-array');
|
|
11
|
+
var isCallable = require('../internals/is-callable');
|
|
11
12
|
var isObject = require('../internals/is-object');
|
|
12
13
|
var isSymbol = require('../internals/is-symbol');
|
|
13
14
|
var anObject = require('../internals/an-object');
|
|
@@ -24,7 +25,6 @@ var getOwnPropertySymbolsModule = require('../internals/object-get-own-property-
|
|
|
24
25
|
var getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');
|
|
25
26
|
var definePropertyModule = require('../internals/object-define-property');
|
|
26
27
|
var propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');
|
|
27
|
-
var createNonEnumerableProperty = require('../internals/create-non-enumerable-property');
|
|
28
28
|
var redefine = require('../internals/redefine');
|
|
29
29
|
var shared = require('../internals/shared');
|
|
30
30
|
var sharedKey = require('../internals/shared-key');
|
|
@@ -89,12 +89,12 @@ var $defineProperty = function defineProperty(O, P, Attributes) {
|
|
|
89
89
|
anObject(O);
|
|
90
90
|
var key = toPropertyKey(P);
|
|
91
91
|
anObject(Attributes);
|
|
92
|
-
if (
|
|
92
|
+
if (hasOwn(AllSymbols, key)) {
|
|
93
93
|
if (!Attributes.enumerable) {
|
|
94
|
-
if (!
|
|
94
|
+
if (!hasOwn(O, HIDDEN)) nativeDefineProperty(O, HIDDEN, createPropertyDescriptor(1, {}));
|
|
95
95
|
O[HIDDEN][key] = true;
|
|
96
96
|
} else {
|
|
97
|
-
if (
|
|
97
|
+
if (hasOwn(O, HIDDEN) && O[HIDDEN][key]) O[HIDDEN][key] = false;
|
|
98
98
|
Attributes = nativeObjectCreate(Attributes, { enumerable: createPropertyDescriptor(0, false) });
|
|
99
99
|
} return setSymbolDescriptor(O, key, Attributes);
|
|
100
100
|
} return nativeDefineProperty(O, key, Attributes);
|
|
@@ -117,16 +117,17 @@ var $create = function create(O, Properties) {
|
|
|
117
117
|
var $propertyIsEnumerable = function propertyIsEnumerable(V) {
|
|
118
118
|
var P = toPropertyKey(V);
|
|
119
119
|
var enumerable = nativePropertyIsEnumerable.call(this, P);
|
|
120
|
-
if (this === ObjectPrototype &&
|
|
121
|
-
return enumerable || !
|
|
120
|
+
if (this === ObjectPrototype && hasOwn(AllSymbols, P) && !hasOwn(ObjectPrototypeSymbols, P)) return false;
|
|
121
|
+
return enumerable || !hasOwn(this, P) || !hasOwn(AllSymbols, P) || hasOwn(this, HIDDEN) && this[HIDDEN][P]
|
|
122
|
+
? enumerable : true;
|
|
122
123
|
};
|
|
123
124
|
|
|
124
125
|
var $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(O, P) {
|
|
125
126
|
var it = toIndexedObject(O);
|
|
126
127
|
var key = toPropertyKey(P);
|
|
127
|
-
if (it === ObjectPrototype &&
|
|
128
|
+
if (it === ObjectPrototype && hasOwn(AllSymbols, key) && !hasOwn(ObjectPrototypeSymbols, key)) return;
|
|
128
129
|
var descriptor = nativeGetOwnPropertyDescriptor(it, key);
|
|
129
|
-
if (descriptor &&
|
|
130
|
+
if (descriptor && hasOwn(AllSymbols, key) && !(hasOwn(it, HIDDEN) && it[HIDDEN][key])) {
|
|
130
131
|
descriptor.enumerable = true;
|
|
131
132
|
}
|
|
132
133
|
return descriptor;
|
|
@@ -136,7 +137,7 @@ var $getOwnPropertyNames = function getOwnPropertyNames(O) {
|
|
|
136
137
|
var names = nativeGetOwnPropertyNames(toIndexedObject(O));
|
|
137
138
|
var result = [];
|
|
138
139
|
$forEach(names, function (key) {
|
|
139
|
-
if (!
|
|
140
|
+
if (!hasOwn(AllSymbols, key) && !hasOwn(hiddenKeys, key)) result.push(key);
|
|
140
141
|
});
|
|
141
142
|
return result;
|
|
142
143
|
};
|
|
@@ -146,7 +147,7 @@ var $getOwnPropertySymbols = function getOwnPropertySymbols(O) {
|
|
|
146
147
|
var names = nativeGetOwnPropertyNames(IS_OBJECT_PROTOTYPE ? ObjectPrototypeSymbols : toIndexedObject(O));
|
|
147
148
|
var result = [];
|
|
148
149
|
$forEach(names, function (key) {
|
|
149
|
-
if (
|
|
150
|
+
if (hasOwn(AllSymbols, key) && (!IS_OBJECT_PROTOTYPE || hasOwn(ObjectPrototype, key))) {
|
|
150
151
|
result.push(AllSymbols[key]);
|
|
151
152
|
}
|
|
152
153
|
});
|
|
@@ -162,7 +163,7 @@ if (!NATIVE_SYMBOL) {
|
|
|
162
163
|
var tag = uid(description);
|
|
163
164
|
var setter = function (value) {
|
|
164
165
|
if (this === ObjectPrototype) setter.call(ObjectPrototypeSymbols, value);
|
|
165
|
-
if (
|
|
166
|
+
if (hasOwn(this, HIDDEN) && hasOwn(this[HIDDEN], tag)) this[HIDDEN][tag] = false;
|
|
166
167
|
setSymbolDescriptor(this, tag, createPropertyDescriptor(1, value));
|
|
167
168
|
};
|
|
168
169
|
if (DESCRIPTORS && USE_SETTER) setSymbolDescriptor(ObjectPrototype, tag, { configurable: true, set: setter });
|
|
@@ -214,7 +215,7 @@ $({ target: SYMBOL, stat: true, forced: !NATIVE_SYMBOL }, {
|
|
|
214
215
|
// https://tc39.es/ecma262/#sec-symbol.for
|
|
215
216
|
'for': function (key) {
|
|
216
217
|
var string = $toString(key);
|
|
217
|
-
if (
|
|
218
|
+
if (hasOwn(StringToSymbolRegistry, string)) return StringToSymbolRegistry[string];
|
|
218
219
|
var symbol = $Symbol(string);
|
|
219
220
|
StringToSymbolRegistry[string] = symbol;
|
|
220
221
|
SymbolToStringRegistry[symbol] = string;
|
|
@@ -224,7 +225,7 @@ $({ target: SYMBOL, stat: true, forced: !NATIVE_SYMBOL }, {
|
|
|
224
225
|
// https://tc39.es/ecma262/#sec-symbol.keyfor
|
|
225
226
|
keyFor: function keyFor(sym) {
|
|
226
227
|
if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol');
|
|
227
|
-
if (
|
|
228
|
+
if (hasOwn(SymbolToStringRegistry, sym)) return SymbolToStringRegistry[sym];
|
|
228
229
|
},
|
|
229
230
|
useSetter: function () { USE_SETTER = true; },
|
|
230
231
|
useSimple: function () { USE_SETTER = false; }
|
|
@@ -285,7 +286,7 @@ if ($stringify) {
|
|
|
285
286
|
$replacer = replacer;
|
|
286
287
|
if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined
|
|
287
288
|
if (!isArray(replacer)) replacer = function (key, value) {
|
|
288
|
-
if (
|
|
289
|
+
if (isCallable($replacer)) value = $replacer.call(this, key, value);
|
|
289
290
|
if (!isSymbol(value)) return value;
|
|
290
291
|
};
|
|
291
292
|
args[1] = replacer;
|
|
@@ -297,7 +298,10 @@ if ($stringify) {
|
|
|
297
298
|
// `Symbol.prototype[@@toPrimitive]` method
|
|
298
299
|
// https://tc39.es/ecma262/#sec-symbol.prototype-@@toprimitive
|
|
299
300
|
if (!$Symbol[PROTOTYPE][TO_PRIMITIVE]) {
|
|
300
|
-
|
|
301
|
+
var valueOf = $Symbol[PROTOTYPE].valueOf;
|
|
302
|
+
redefine($Symbol[PROTOTYPE], TO_PRIMITIVE, function () {
|
|
303
|
+
return valueOf.apply(this, arguments);
|
|
304
|
+
});
|
|
301
305
|
}
|
|
302
306
|
// `Symbol.prototype[@@toStringTag]` property
|
|
303
307
|
// https://tc39.es/ecma262/#sec-symbol.prototype-@@tostringtag
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
var ArrayBufferViewCore = require('../internals/array-buffer-view-core');
|
|
3
|
-
var
|
|
4
|
-
var
|
|
3
|
+
var lengthOfArrayLike = require('../internals/length-of-array-like');
|
|
4
|
+
var toIntegerOrInfinity = require('../internals/to-integer-or-infinity');
|
|
5
5
|
|
|
6
6
|
var aTypedArray = ArrayBufferViewCore.aTypedArray;
|
|
7
7
|
var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;
|
|
@@ -10,8 +10,8 @@ var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;
|
|
|
10
10
|
// https://github.com/tc39/proposal-relative-indexing-method
|
|
11
11
|
exportTypedArrayMethod('at', function at(index) {
|
|
12
12
|
var O = aTypedArray(this);
|
|
13
|
-
var len =
|
|
14
|
-
var relativeIndex =
|
|
13
|
+
var len = lengthOfArrayLike(O);
|
|
14
|
+
var relativeIndex = toIntegerOrInfinity(index);
|
|
15
15
|
var k = relativeIndex >= 0 ? relativeIndex : len + relativeIndex;
|
|
16
16
|
return (k < 0 || k >= len) ? undefined : O[k];
|
|
17
17
|
});
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
var global = require('../internals/global');
|
|
3
|
+
var PROPER_FUNCTION_NAME = require('../internals/function-name').PROPER;
|
|
3
4
|
var ArrayBufferViewCore = require('../internals/array-buffer-view-core');
|
|
4
5
|
var ArrayIterators = require('../modules/es.array.iterator');
|
|
5
6
|
var wellKnownSymbol = require('../internals/well-known-symbol');
|
|
@@ -13,8 +14,7 @@ var aTypedArray = ArrayBufferViewCore.aTypedArray;
|
|
|
13
14
|
var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;
|
|
14
15
|
var nativeTypedArrayIterator = Uint8Array && Uint8Array.prototype[ITERATOR];
|
|
15
16
|
|
|
16
|
-
var
|
|
17
|
-
&& (nativeTypedArrayIterator.name == 'values' || nativeTypedArrayIterator.name == undefined);
|
|
17
|
+
var PROPER_ARRAY_VALUES_NAME = !!nativeTypedArrayIterator && nativeTypedArrayIterator.name === 'values';
|
|
18
18
|
|
|
19
19
|
var typedArrayValues = function values() {
|
|
20
20
|
return arrayValues.call(aTypedArray(this));
|
|
@@ -32,7 +32,7 @@ exportTypedArrayMethod('keys', function keys() {
|
|
|
32
32
|
});
|
|
33
33
|
// `%TypedArray%.prototype.values` method
|
|
34
34
|
// https://tc39.es/ecma262/#sec-%typedarray%.prototype.values
|
|
35
|
-
exportTypedArrayMethod('values', typedArrayValues, !
|
|
35
|
+
exportTypedArrayMethod('values', typedArrayValues, PROPER_FUNCTION_NAME && !PROPER_ARRAY_VALUES_NAME);
|
|
36
36
|
// `%TypedArray%.prototype[@@iterator]` method
|
|
37
37
|
// https://tc39.es/ecma262/#sec-%typedarray%.prototype-@@iterator
|
|
38
|
-
exportTypedArrayMethod(ITERATOR, typedArrayValues, !
|
|
38
|
+
exportTypedArrayMethod(ITERATOR, typedArrayValues, PROPER_FUNCTION_NAME && !PROPER_ARRAY_VALUES_NAME);
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
var ArrayBufferViewCore = require('../internals/array-buffer-view-core');
|
|
3
|
-
var
|
|
3
|
+
var lengthOfArrayLike = require('../internals/length-of-array-like');
|
|
4
4
|
var toOffset = require('../internals/to-offset');
|
|
5
5
|
var toObject = require('../internals/to-object');
|
|
6
6
|
var fails = require('../internals/fails');
|
|
@@ -20,7 +20,7 @@ exportTypedArrayMethod('set', function set(arrayLike /* , offset */) {
|
|
|
20
20
|
var offset = toOffset(arguments.length > 1 ? arguments[1] : undefined, 1);
|
|
21
21
|
var length = this.length;
|
|
22
22
|
var src = toObject(arrayLike);
|
|
23
|
-
var len =
|
|
23
|
+
var len = lengthOfArrayLike(src);
|
|
24
24
|
var index = 0;
|
|
25
25
|
if (len + offset > length) throw RangeError('Wrong length');
|
|
26
26
|
while (index < len) this[offset + index] = src[index++];
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
var ArrayBufferViewCore = require('../internals/array-buffer-view-core');
|
|
3
3
|
var global = require('../internals/global');
|
|
4
4
|
var fails = require('../internals/fails');
|
|
5
|
-
var
|
|
6
|
-
var
|
|
5
|
+
var aCallable = require('../internals/a-callable');
|
|
6
|
+
var lengthOfArrayLike = require('../internals/length-of-array-like');
|
|
7
7
|
var internalSort = require('../internals/array-sort');
|
|
8
8
|
var FF = require('../internals/engine-ff-version');
|
|
9
9
|
var IE_OR_EDGE = require('../internals/engine-is-ie-or-edge');
|
|
@@ -64,11 +64,11 @@ var getSortCompare = function (comparefn) {
|
|
|
64
64
|
// https://tc39.es/ecma262/#sec-%typedarray%.prototype.sort
|
|
65
65
|
exportTypedArrayMethod('sort', function sort(comparefn) {
|
|
66
66
|
var array = this;
|
|
67
|
-
if (comparefn !== undefined)
|
|
67
|
+
if (comparefn !== undefined) aCallable(comparefn);
|
|
68
68
|
if (STABLE_SORT) return nativeSort.call(array, comparefn);
|
|
69
69
|
|
|
70
70
|
aTypedArray(array);
|
|
71
|
-
var arrayLength =
|
|
71
|
+
var arrayLength = lengthOfArrayLike(array);
|
|
72
72
|
var items = Array(arrayLength);
|
|
73
73
|
var index;
|
|
74
74
|
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
// TODO: Remove from `core-js@4`
|
|
2
|
-
require('
|
|
2
|
+
require('../modules/es.aggregate-error');
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
var DESCRIPTORS = require('../internals/descriptors');
|
|
3
3
|
var addToUnscopables = require('../internals/add-to-unscopables');
|
|
4
4
|
var toObject = require('../internals/to-object');
|
|
5
|
-
var
|
|
5
|
+
var lengthOfArrayLike = require('../internals/length-of-array-like');
|
|
6
6
|
var defineProperty = require('../internals/object-define-property').f;
|
|
7
7
|
|
|
8
8
|
// `Array.prototype.lastIndex` getter
|
|
@@ -12,7 +12,7 @@ if (DESCRIPTORS && !('lastIndex' in [])) {
|
|
|
12
12
|
configurable: true,
|
|
13
13
|
get: function lastIndex() {
|
|
14
14
|
var O = toObject(this);
|
|
15
|
-
var len =
|
|
15
|
+
var len = lengthOfArrayLike(O);
|
|
16
16
|
return len == 0 ? 0 : len - 1;
|
|
17
17
|
}
|
|
18
18
|
});
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
var DESCRIPTORS = require('../internals/descriptors');
|
|
3
3
|
var addToUnscopables = require('../internals/add-to-unscopables');
|
|
4
4
|
var toObject = require('../internals/to-object');
|
|
5
|
-
var
|
|
5
|
+
var lengthOfArrayLike = require('../internals/length-of-array-like');
|
|
6
6
|
var defineProperty = require('../internals/object-define-property').f;
|
|
7
7
|
|
|
8
8
|
// `Array.prototype.lastIndex` accessor
|
|
@@ -12,12 +12,12 @@ if (DESCRIPTORS && !('lastItem' in [])) {
|
|
|
12
12
|
configurable: true,
|
|
13
13
|
get: function lastItem() {
|
|
14
14
|
var O = toObject(this);
|
|
15
|
-
var len =
|
|
15
|
+
var len = lengthOfArrayLike(O);
|
|
16
16
|
return len == 0 ? undefined : O[len - 1];
|
|
17
17
|
},
|
|
18
18
|
set: function lastItem(value) {
|
|
19
19
|
var O = toObject(this);
|
|
20
|
-
var len =
|
|
20
|
+
var len = lengthOfArrayLike(O);
|
|
21
21
|
return O[len == 0 ? 0 : len - 1] = value;
|
|
22
22
|
}
|
|
23
23
|
});
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
var $ = require('../internals/export');
|
|
4
4
|
var anInstance = require('../internals/an-instance');
|
|
5
5
|
var createNonEnumerableProperty = require('../internals/create-non-enumerable-property');
|
|
6
|
-
var
|
|
6
|
+
var hasOwn = require('../internals/has-own-property');
|
|
7
7
|
var wellKnownSymbol = require('../internals/well-known-symbol');
|
|
8
8
|
var AsyncIteratorPrototype = require('../internals/async-iterator-prototype');
|
|
9
9
|
var IS_PURE = require('../internals/is-pure');
|
|
@@ -16,11 +16,11 @@ var AsyncIteratorConstructor = function AsyncIterator() {
|
|
|
16
16
|
|
|
17
17
|
AsyncIteratorConstructor.prototype = AsyncIteratorPrototype;
|
|
18
18
|
|
|
19
|
-
if (!
|
|
19
|
+
if (!hasOwn(AsyncIteratorPrototype, TO_STRING_TAG)) {
|
|
20
20
|
createNonEnumerableProperty(AsyncIteratorPrototype, TO_STRING_TAG, 'AsyncIterator');
|
|
21
21
|
}
|
|
22
22
|
|
|
23
|
-
if (!
|
|
23
|
+
if (IS_PURE || !hasOwn(AsyncIteratorPrototype, 'constructor') || AsyncIteratorPrototype.constructor === Object) {
|
|
24
24
|
createNonEnumerableProperty(AsyncIteratorPrototype, 'constructor', AsyncIteratorConstructor);
|
|
25
25
|
}
|
|
26
26
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
// https://github.com/tc39/proposal-iterator-helpers
|
|
3
3
|
var $ = require('../internals/export');
|
|
4
|
-
var
|
|
4
|
+
var aCallable = require('../internals/a-callable');
|
|
5
5
|
var anObject = require('../internals/an-object');
|
|
6
6
|
var createAsyncIteratorProxy = require('../internals/async-iterator-create-proxy');
|
|
7
7
|
|
|
@@ -36,7 +36,7 @@ $({ target: 'AsyncIterator', proto: true, real: true }, {
|
|
|
36
36
|
filter: function filter(filterer) {
|
|
37
37
|
return new AsyncIteratorProxy({
|
|
38
38
|
iterator: anObject(this),
|
|
39
|
-
filterer:
|
|
39
|
+
filterer: aCallable(filterer)
|
|
40
40
|
});
|
|
41
41
|
}
|
|
42
42
|
});
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
// https://github.com/tc39/proposal-iterator-helpers
|
|
3
3
|
var $ = require('../internals/export');
|
|
4
|
-
var
|
|
4
|
+
var aCallable = require('../internals/a-callable');
|
|
5
5
|
var anObject = require('../internals/an-object');
|
|
6
6
|
var createAsyncIteratorProxy = require('../internals/async-iterator-create-proxy');
|
|
7
7
|
var getAsyncIterator = require('../internals/get-async-iterator');
|
|
@@ -23,7 +23,7 @@ var AsyncIteratorProxy = createAsyncIteratorProxy(function (Promise) {
|
|
|
23
23
|
Promise.resolve(mapper(step.value)).then(function (mapped) {
|
|
24
24
|
try {
|
|
25
25
|
state.innerIterator = innerIterator = getAsyncIterator(mapped);
|
|
26
|
-
state.innerNext =
|
|
26
|
+
state.innerNext = aCallable(innerIterator.next);
|
|
27
27
|
return innerLoop();
|
|
28
28
|
} catch (error2) { reject(error2); }
|
|
29
29
|
}, reject);
|
|
@@ -56,7 +56,7 @@ $({ target: 'AsyncIterator', proto: true, real: true }, {
|
|
|
56
56
|
flatMap: function flatMap(mapper) {
|
|
57
57
|
return new AsyncIteratorProxy({
|
|
58
58
|
iterator: anObject(this),
|
|
59
|
-
mapper:
|
|
59
|
+
mapper: aCallable(mapper),
|
|
60
60
|
innerIterator: null,
|
|
61
61
|
innerNext: null
|
|
62
62
|
});
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
// https://github.com/tc39/proposal-iterator-helpers
|
|
2
2
|
var $ = require('../internals/export');
|
|
3
|
-
var path = require('../internals/path');
|
|
4
3
|
var anObject = require('../internals/an-object');
|
|
5
4
|
var toObject = require('../internals/to-object');
|
|
5
|
+
var AsyncIteratorPrototype = require('../internals/async-iterator-prototype');
|
|
6
6
|
var createAsyncIteratorProxy = require('../internals/async-iterator-create-proxy');
|
|
7
7
|
var getAsyncIterator = require('../internals/get-async-iterator');
|
|
8
8
|
var getIterator = require('../internals/get-iterator');
|
|
@@ -13,7 +13,7 @@ var AsyncFromSyncIterator = require('../internals/async-from-sync-iterator');
|
|
|
13
13
|
|
|
14
14
|
var ASYNC_ITERATOR = wellKnownSymbol('asyncIterator');
|
|
15
15
|
|
|
16
|
-
var
|
|
16
|
+
var isPrototypeOf = {}.isPrototypeOf;
|
|
17
17
|
|
|
18
18
|
var AsyncIteratorProxy = createAsyncIteratorProxy(function (Promise, args) {
|
|
19
19
|
return anObject(this.next.apply(this.iterator, args));
|
|
@@ -22,18 +22,16 @@ var AsyncIteratorProxy = createAsyncIteratorProxy(function (Promise, args) {
|
|
|
22
22
|
$({ target: 'AsyncIterator', stat: true }, {
|
|
23
23
|
from: function from(O) {
|
|
24
24
|
var object = toObject(O);
|
|
25
|
-
var usingIterator = getMethod(object
|
|
25
|
+
var usingIterator = getMethod(object, ASYNC_ITERATOR);
|
|
26
26
|
var iterator;
|
|
27
|
-
if (usingIterator
|
|
27
|
+
if (usingIterator) {
|
|
28
28
|
iterator = getAsyncIterator(object, usingIterator);
|
|
29
|
-
if (iterator
|
|
29
|
+
if (isPrototypeOf.call(AsyncIteratorPrototype, iterator)) return iterator;
|
|
30
30
|
}
|
|
31
31
|
if (iterator === undefined) {
|
|
32
32
|
usingIterator = getIteratorMethod(object);
|
|
33
|
-
if (usingIterator
|
|
33
|
+
if (usingIterator) return new AsyncFromSyncIterator(getIterator(object, usingIterator));
|
|
34
34
|
}
|
|
35
|
-
return new AsyncIteratorProxy({
|
|
36
|
-
iterator: iterator !== undefined ? iterator : object
|
|
37
|
-
});
|
|
35
|
+
return new AsyncIteratorProxy({ iterator: iterator !== undefined ? iterator : object });
|
|
38
36
|
}
|
|
39
37
|
});
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
// https://github.com/tc39/proposal-iterator-helpers
|
|
3
3
|
var $ = require('../internals/export');
|
|
4
|
-
var
|
|
4
|
+
var aCallable = require('../internals/a-callable');
|
|
5
5
|
var anObject = require('../internals/an-object');
|
|
6
6
|
var createAsyncIteratorProxy = require('../internals/async-iterator-create-proxy');
|
|
7
7
|
|
|
@@ -24,7 +24,7 @@ $({ target: 'AsyncIterator', proto: true, real: true }, {
|
|
|
24
24
|
map: function map(mapper) {
|
|
25
25
|
return new AsyncIteratorProxy({
|
|
26
26
|
iterator: anObject(this),
|
|
27
|
-
mapper:
|
|
27
|
+
mapper: aCallable(mapper)
|
|
28
28
|
});
|
|
29
29
|
}
|
|
30
30
|
});
|