core-js 3.14.0 → 3.16.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/README.md +2 -3
- package/es/aggregate-error.js +1 -1
- package/es/array/entries.js +1 -0
- package/es/array/index.js +2 -1
- package/es/array/iterator.js +1 -0
- package/es/array/keys.js +1 -0
- package/es/array/values.js +1 -0
- package/es/array/virtual/entries.js +1 -0
- package/es/array/virtual/index.js +1 -0
- package/es/array/virtual/iterator.js +1 -0
- package/es/array/virtual/keys.js +1 -0
- package/es/array/virtual/values.js +1 -0
- package/es/date/get-year.js +4 -0
- package/es/date/index.js +4 -1
- package/es/date/set-year.js +4 -0
- package/es/date/to-gmt-string.js +4 -0
- package/es/escape.js +4 -0
- package/es/index.js +7 -0
- package/es/map/index.js +1 -1
- package/es/promise/all-settled.js +2 -1
- package/es/promise/any.js +2 -1
- package/es/promise/finally.js +1 -0
- package/es/promise/index.js +1 -1
- package/es/reflect/index.js +1 -0
- package/es/reflect/to-string-tag.js +1 -0
- package/es/regexp/constructor.js +3 -0
- package/es/regexp/dot-all.js +7 -0
- package/es/regexp/index.js +1 -0
- package/es/regexp/match.js +1 -0
- package/es/regexp/replace.js +1 -0
- package/es/regexp/search.js +1 -0
- package/es/regexp/split.js +1 -0
- package/es/regexp/sticky.js +2 -0
- package/es/set/index.js +2 -2
- package/es/string/index.js +2 -0
- package/es/string/iterator.js +1 -0
- package/es/string/match-all.js +2 -0
- package/es/string/replace-all.js +2 -0
- package/es/string/substr.js +4 -0
- package/es/string/virtual/index.js +3 -0
- package/es/string/virtual/iterator.js +1 -0
- package/es/string/virtual/match-all.js +2 -0
- package/es/string/virtual/replace-all.js +2 -0
- package/es/string/virtual/substr.js +4 -0
- package/es/symbol/is-concat-spreadable.js +1 -1
- package/es/symbol/iterator.js +3 -2
- package/es/symbol/match-all.js +2 -0
- package/es/symbol/match.js +1 -0
- package/es/symbol/replace.js +1 -0
- package/es/symbol/search.js +1 -0
- package/es/symbol/split.js +1 -0
- package/es/symbol/to-primitive.js +1 -0
- package/es/symbol/to-string-tag.js +2 -2
- package/es/typed-array/entries.js +1 -0
- package/es/typed-array/iterator.js +1 -0
- package/es/typed-array/keys.js +1 -0
- package/es/typed-array/methods.js +2 -1
- package/es/typed-array/values.js +1 -0
- package/es/unescape.js +4 -0
- package/es/weak-map/index.js +1 -1
- package/es/weak-set/index.js +1 -1
- package/features/array/filter-out.js +1 -0
- package/features/array/filter-reject.js +4 -0
- package/features/array/group-by.js +4 -0
- package/features/array/index.js +3 -0
- package/features/array/virtual/filter-out.js +1 -0
- package/features/array/virtual/filter-reject.js +4 -0
- package/features/array/virtual/group-by.js +4 -0
- package/features/array/virtual/index.js +3 -0
- package/features/async-iterator/as-indexed-pairs.js +0 -2
- package/features/async-iterator/drop.js +0 -2
- package/features/async-iterator/every.js +0 -2
- package/features/async-iterator/filter.js +0 -2
- package/features/async-iterator/find.js +0 -2
- package/features/async-iterator/flat-map.js +0 -2
- package/features/async-iterator/for-each.js +0 -2
- package/features/async-iterator/from.js +1 -0
- package/features/async-iterator/index.js +1 -0
- package/features/async-iterator/map.js +0 -2
- package/features/async-iterator/reduce.js +0 -2
- package/features/async-iterator/some.js +0 -2
- package/features/async-iterator/take.js +0 -2
- package/features/async-iterator/to-array.js +0 -2
- package/features/date/get-year.js +3 -0
- package/features/date/set-year.js +3 -0
- package/features/date/to-gmt-string.js +3 -0
- package/features/escape.js +3 -0
- package/features/get-iterator-method.js +2 -1
- package/features/get-iterator.js +2 -1
- package/features/index.js +11 -0
- package/features/instance/filter-out.js +1 -0
- package/features/instance/filter-reject.js +8 -0
- package/features/instance/group-by.js +8 -0
- package/features/is-iterable.js +2 -1
- package/features/iterator/as-indexed-pairs.js +0 -2
- package/features/iterator/drop.js +0 -2
- package/features/iterator/every.js +0 -2
- package/features/iterator/filter.js +0 -2
- package/features/iterator/find.js +0 -2
- package/features/iterator/flat-map.js +0 -2
- package/features/iterator/for-each.js +0 -2
- package/features/iterator/from.js +1 -0
- package/features/iterator/index.js +1 -0
- package/features/iterator/map.js +0 -2
- package/features/iterator/reduce.js +0 -2
- package/features/iterator/some.js +0 -2
- package/features/iterator/take.js +0 -2
- package/features/iterator/to-array.js +0 -2
- package/features/map/from.js +1 -0
- package/features/map/of.js +1 -2
- package/features/number/range.js +1 -0
- package/features/regexp/dot-all.js +3 -0
- package/features/set/difference.js +1 -0
- package/features/set/from.js +1 -0
- package/features/set/intersection.js +3 -0
- package/features/set/is-disjoint-from.js +3 -0
- package/features/set/is-subset-of.js +1 -0
- package/features/set/is-superset-of.js +3 -0
- package/features/set/of.js +1 -2
- package/features/set/symmetric-difference.js +1 -0
- package/features/set/union.js +1 -0
- package/features/string/code-points.js +1 -0
- package/features/string/substr.js +3 -0
- package/features/string/virtual/code-points.js +1 -0
- package/features/string/virtual/substr.js +3 -0
- package/features/typed-array/copy-within.js +3 -1
- package/features/typed-array/entries.js +3 -1
- package/features/typed-array/every.js +3 -1
- package/features/typed-array/fill.js +3 -1
- package/features/typed-array/filter-out.js +1 -0
- package/features/typed-array/filter-reject.js +1 -0
- package/features/typed-array/filter.js +3 -1
- package/features/typed-array/find-index.js +3 -1
- package/features/typed-array/find.js +3 -1
- package/features/typed-array/float32-array.js +1 -1
- package/features/typed-array/float64-array.js +1 -1
- package/features/typed-array/for-each.js +3 -1
- package/features/typed-array/from.js +3 -1
- package/features/typed-array/group-by.js +1 -0
- package/features/typed-array/includes.js +3 -1
- package/features/typed-array/index-of.js +3 -1
- package/features/typed-array/index.js +4 -1
- package/features/typed-array/int16-array.js +1 -1
- package/features/typed-array/int32-array.js +1 -1
- package/features/typed-array/int8-array.js +1 -1
- package/features/typed-array/iterator.js +3 -1
- package/features/typed-array/join.js +3 -1
- package/features/typed-array/keys.js +3 -1
- package/features/typed-array/last-index-of.js +3 -1
- package/features/typed-array/map.js +3 -1
- package/features/typed-array/of.js +3 -1
- package/features/typed-array/reduce-right.js +3 -1
- package/features/typed-array/reduce.js +3 -1
- package/features/typed-array/reverse.js +3 -1
- package/features/typed-array/set.js +3 -1
- package/features/typed-array/slice.js +3 -1
- package/features/typed-array/some.js +3 -1
- package/features/typed-array/sort.js +3 -1
- package/features/typed-array/subarray.js +3 -1
- package/features/typed-array/to-locale-string.js +3 -1
- package/features/typed-array/to-string.js +3 -1
- package/features/typed-array/uint16-array.js +1 -1
- package/features/typed-array/uint32-array.js +1 -1
- package/features/typed-array/uint8-array.js +1 -1
- package/features/typed-array/uint8-clamped-array.js +1 -1
- package/features/typed-array/values.js +3 -1
- package/features/unescape.js +3 -0
- package/features/weak-map/from.js +1 -0
- package/features/weak-map/index.js +1 -0
- package/features/weak-map/of.js +1 -2
- package/features/weak-set/from.js +1 -0
- package/features/weak-set/index.js +1 -0
- package/features/weak-set/of.js +1 -2
- package/internals/array-buffer-view-core.js +16 -10
- package/internals/array-from-constructor-and-list.js +7 -0
- package/internals/array-group-by.js +33 -0
- package/internals/array-iteration-from-last.js +6 -6
- package/internals/array-iteration.js +6 -6
- package/internals/array-species-constructor.js +20 -0
- package/internals/array-species-create.js +2 -15
- package/internals/collection.js +1 -1
- package/internals/create-html.js +3 -2
- package/internals/create-property.js +2 -2
- package/internals/date-to-primitive.js +5 -4
- package/internals/engine-v8-version.js +2 -1
- package/internals/fix-regexp-well-known-symbol-logic.js +5 -62
- package/internals/get-built-in.js +1 -3
- package/internals/get-map-iterator.js +1 -4
- package/internals/get-set-iterator.js +1 -4
- package/internals/internal-metadata.js +33 -3
- package/internals/is-symbol.js +9 -0
- package/internals/number-parse-float.js +2 -1
- package/internals/number-parse-int.js +2 -1
- package/internals/object-create.js +17 -12
- package/internals/object-define-property.js +2 -2
- package/internals/object-get-own-property-descriptor.js +2 -2
- package/internals/ordinary-to-primitive.js +11 -0
- package/internals/regexp-exec.js +34 -8
- package/internals/regexp-sticky-helpers.js +3 -7
- package/internals/regexp-unsupported-dot-all.js +7 -0
- package/internals/regexp-unsupported-ncg.js +8 -0
- package/internals/set-global.js +2 -2
- package/internals/shared.js +1 -1
- package/internals/string-multibyte.js +3 -2
- package/internals/string-pad.js +3 -2
- package/internals/string-repeat.js +2 -1
- package/internals/string-trim.js +2 -1
- package/internals/task.js +9 -4
- package/internals/to-primitive.js +17 -9
- package/internals/to-property-key.js +9 -0
- package/internals/to-string.js +6 -0
- package/internals/typed-array-constructor.js +13 -5
- package/internals/typed-array-from-species-and-list.js +3 -8
- package/internals/typed-array-species-constructor.js +11 -0
- package/modules/es.aggregate-error.js +2 -1
- package/modules/es.array.sort.js +2 -1
- package/modules/es.date.get-year.js +17 -0
- package/modules/es.date.set-year.js +18 -0
- package/modules/es.date.to-gmt-string.js +7 -0
- package/modules/es.date.to-json.js +1 -1
- package/modules/es.date.to-string.js +1 -1
- package/modules/es.escape.js +36 -0
- package/modules/es.number.constructor.js +3 -1
- package/modules/es.object.lookup-getter.js +2 -2
- package/modules/es.object.lookup-setter.js +2 -2
- package/modules/es.promise.js +3 -2
- package/modules/es.reflect.define-property.js +2 -2
- package/modules/es.regexp.constructor.js +126 -24
- package/modules/es.regexp.dot-all.js +22 -0
- package/modules/es.regexp.flags.js +10 -8
- package/modules/es.regexp.sticky.js +1 -1
- package/modules/es.regexp.to-string.js +3 -2
- package/modules/es.string.ends-with.js +3 -2
- package/modules/es.string.includes.js +3 -2
- package/modules/es.string.iterator.js +2 -1
- package/modules/es.string.match-all.js +6 -5
- package/modules/es.string.match.js +9 -8
- package/modules/es.string.raw.js +3 -2
- package/modules/es.string.replace-all.js +7 -6
- package/modules/es.string.replace.js +45 -17
- package/modules/es.string.search.js +8 -7
- package/modules/es.string.split.js +22 -8
- package/modules/es.string.starts-with.js +3 -2
- package/modules/es.string.substr.js +26 -0
- package/modules/es.symbol.js +8 -13
- package/modules/es.typed-array.map.js +2 -3
- package/modules/es.typed-array.slice.js +3 -4
- package/modules/es.typed-array.subarray.js +3 -2
- package/modules/es.unescape.js +40 -0
- package/modules/es.weak-map.js +1 -1
- package/modules/esnext.array.filter-out.js +3 -2
- package/modules/esnext.array.filter-reject.js +14 -0
- package/modules/esnext.array.group-by.js +16 -0
- package/modules/esnext.map.merge.js +2 -1
- package/modules/esnext.string.at-alternative.js +3 -2
- package/modules/esnext.string.code-points.js +2 -1
- package/modules/esnext.typed-array.filter-out.js +3 -2
- package/modules/esnext.typed-array.filter-reject.js +14 -0
- package/modules/esnext.typed-array.group-by.js +14 -0
- package/modules/web.url-search-params.js +56 -36
- package/modules/web.url.js +17 -16
- package/package.json +3 -4
- package/postinstall.js +4 -2
- package/proposals/array-filtering.js +4 -0
- package/proposals/array-grouping.js +3 -0
- package/stable/aggregate-error.js +1 -0
- package/stable/date/get-year.js +3 -0
- package/stable/date/set-year.js +3 -0
- package/stable/date/to-gmt-string.js +3 -0
- package/stable/dom-collections/index.js +1 -0
- package/stable/dom-collections/iterator.js +1 -0
- package/stable/escape.js +3 -0
- package/stable/index.js +7 -0
- package/stable/map/index.js +1 -0
- package/stable/object/from-entries.js +1 -0
- package/stable/object/index.js +1 -0
- package/stable/promise/all-settled.js +1 -0
- package/stable/promise/any.js +1 -0
- package/stable/promise/index.js +1 -0
- package/stable/regexp/dot-all.js +3 -0
- package/stable/set/index.js +1 -0
- package/stable/string/substr.js +3 -0
- package/stable/string/virtual/substr.js +3 -0
- package/stable/symbol/index.js +1 -0
- package/stable/symbol/iterator.js +1 -0
- package/stable/typed-array/copy-within.js +3 -1
- package/stable/typed-array/entries.js +3 -1
- package/stable/typed-array/every.js +3 -1
- package/stable/typed-array/fill.js +3 -1
- package/stable/typed-array/filter.js +3 -1
- package/stable/typed-array/find-index.js +3 -1
- package/stable/typed-array/find.js +3 -1
- package/stable/typed-array/for-each.js +3 -1
- package/stable/typed-array/from.js +3 -1
- package/stable/typed-array/includes.js +3 -1
- package/stable/typed-array/index-of.js +3 -1
- package/stable/typed-array/iterator.js +3 -1
- package/stable/typed-array/join.js +3 -1
- package/stable/typed-array/keys.js +3 -1
- package/stable/typed-array/last-index-of.js +3 -1
- package/stable/typed-array/map.js +3 -1
- package/stable/typed-array/of.js +3 -1
- package/stable/typed-array/reduce-right.js +3 -1
- package/stable/typed-array/reduce.js +3 -1
- package/stable/typed-array/reverse.js +3 -1
- package/stable/typed-array/set.js +3 -1
- package/stable/typed-array/slice.js +3 -1
- package/stable/typed-array/some.js +3 -1
- package/stable/typed-array/sort.js +3 -1
- package/stable/typed-array/subarray.js +3 -1
- package/stable/typed-array/to-locale-string.js +3 -1
- package/stable/typed-array/to-string.js +3 -1
- package/stable/typed-array/values.js +3 -1
- package/stable/unescape.js +3 -0
- package/stable/url-search-params/index.js +1 -0
- package/stable/weak-map/index.js +1 -0
- package/stable/weak-set/index.js +1 -0
- package/stage/1.js +1 -0
- package/stage/2.js +0 -1
- package/stage/3.js +1 -0
- package/es/array/virtual/filter-out.js +0 -4
|
@@ -2,28 +2,29 @@
|
|
|
2
2
|
var fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');
|
|
3
3
|
var anObject = require('../internals/an-object');
|
|
4
4
|
var toLength = require('../internals/to-length');
|
|
5
|
+
var toString = require('../internals/to-string');
|
|
5
6
|
var requireObjectCoercible = require('../internals/require-object-coercible');
|
|
6
7
|
var advanceStringIndex = require('../internals/advance-string-index');
|
|
7
8
|
var regExpExec = require('../internals/regexp-exec-abstract');
|
|
8
9
|
|
|
9
10
|
// @@match logic
|
|
10
|
-
fixRegExpWellKnownSymbolLogic('match',
|
|
11
|
+
fixRegExpWellKnownSymbolLogic('match', function (MATCH, nativeMatch, maybeCallNative) {
|
|
11
12
|
return [
|
|
12
13
|
// `String.prototype.match` method
|
|
13
14
|
// https://tc39.es/ecma262/#sec-string.prototype.match
|
|
14
15
|
function match(regexp) {
|
|
15
16
|
var O = requireObjectCoercible(this);
|
|
16
17
|
var matcher = regexp == undefined ? undefined : regexp[MATCH];
|
|
17
|
-
return matcher !== undefined ? matcher.call(regexp, O) : new RegExp(regexp)[MATCH](
|
|
18
|
+
return matcher !== undefined ? matcher.call(regexp, O) : new RegExp(regexp)[MATCH](toString(O));
|
|
18
19
|
},
|
|
19
20
|
// `RegExp.prototype[@@match]` method
|
|
20
21
|
// https://tc39.es/ecma262/#sec-regexp.prototype-@@match
|
|
21
|
-
function (
|
|
22
|
-
var
|
|
23
|
-
|
|
22
|
+
function (string) {
|
|
23
|
+
var rx = anObject(this);
|
|
24
|
+
var S = toString(string);
|
|
25
|
+
var res = maybeCallNative(nativeMatch, rx, S);
|
|
24
26
|
|
|
25
|
-
|
|
26
|
-
var S = String(this);
|
|
27
|
+
if (res.done) return res.value;
|
|
27
28
|
|
|
28
29
|
if (!rx.global) return regExpExec(rx, S);
|
|
29
30
|
|
|
@@ -33,7 +34,7 @@ fixRegExpWellKnownSymbolLogic('match', 1, function (MATCH, nativeMatch, maybeCal
|
|
|
33
34
|
var n = 0;
|
|
34
35
|
var result;
|
|
35
36
|
while ((result = regExpExec(rx, S)) !== null) {
|
|
36
|
-
var matchStr =
|
|
37
|
+
var matchStr = toString(result[0]);
|
|
37
38
|
A[n] = matchStr;
|
|
38
39
|
if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);
|
|
39
40
|
n++;
|
package/modules/es.string.raw.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
var $ = require('../internals/export');
|
|
2
2
|
var toIndexedObject = require('../internals/to-indexed-object');
|
|
3
3
|
var toLength = require('../internals/to-length');
|
|
4
|
+
var toString = require('../internals/to-string');
|
|
4
5
|
|
|
5
6
|
// `String.raw` method
|
|
6
7
|
// https://tc39.es/ecma262/#sec-string.raw
|
|
@@ -12,8 +13,8 @@ $({ target: 'String', stat: true }, {
|
|
|
12
13
|
var elements = [];
|
|
13
14
|
var i = 0;
|
|
14
15
|
while (literalSegments > i) {
|
|
15
|
-
elements.push(
|
|
16
|
-
if (i < argumentsLength) elements.push(
|
|
16
|
+
elements.push(toString(rawTemplate[i++]));
|
|
17
|
+
if (i < argumentsLength) elements.push(toString(arguments[i]));
|
|
17
18
|
} return elements.join('');
|
|
18
19
|
}
|
|
19
20
|
});
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
var $ = require('../internals/export');
|
|
3
3
|
var requireObjectCoercible = require('../internals/require-object-coercible');
|
|
4
4
|
var isRegExp = require('../internals/is-regexp');
|
|
5
|
+
var toString = require('../internals/to-string');
|
|
5
6
|
var getRegExpFlags = require('../internals/regexp-flags');
|
|
6
7
|
var getSubstitution = require('../internals/get-substitution');
|
|
7
8
|
var wellKnownSymbol = require('../internals/well-known-symbol');
|
|
@@ -29,7 +30,7 @@ $({ target: 'String', proto: true }, {
|
|
|
29
30
|
if (searchValue != null) {
|
|
30
31
|
IS_REG_EXP = isRegExp(searchValue);
|
|
31
32
|
if (IS_REG_EXP) {
|
|
32
|
-
flags =
|
|
33
|
+
flags = toString(requireObjectCoercible('flags' in RegExpPrototype
|
|
33
34
|
? searchValue.flags
|
|
34
35
|
: getRegExpFlags.call(searchValue)
|
|
35
36
|
));
|
|
@@ -39,19 +40,19 @@ $({ target: 'String', proto: true }, {
|
|
|
39
40
|
if (replacer !== undefined) {
|
|
40
41
|
return replacer.call(searchValue, O, replaceValue);
|
|
41
42
|
} else if (IS_PURE && IS_REG_EXP) {
|
|
42
|
-
return
|
|
43
|
+
return toString(O).replace(searchValue, replaceValue);
|
|
43
44
|
}
|
|
44
45
|
}
|
|
45
|
-
string =
|
|
46
|
-
searchString =
|
|
46
|
+
string = toString(O);
|
|
47
|
+
searchString = toString(searchValue);
|
|
47
48
|
functionalReplace = typeof replaceValue === 'function';
|
|
48
|
-
if (!functionalReplace) replaceValue =
|
|
49
|
+
if (!functionalReplace) replaceValue = toString(replaceValue);
|
|
49
50
|
searchLength = searchString.length;
|
|
50
51
|
advanceBy = max(1, searchLength);
|
|
51
52
|
position = stringIndexOf(string, searchString, 0);
|
|
52
53
|
while (position !== -1) {
|
|
53
54
|
if (functionalReplace) {
|
|
54
|
-
replacement =
|
|
55
|
+
replacement = toString(replaceValue(searchString, position, string));
|
|
55
56
|
} else {
|
|
56
57
|
replacement = getSubstitution(searchString, string, position, [], undefined, replaceValue);
|
|
57
58
|
}
|
|
@@ -1,13 +1,17 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
var fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');
|
|
3
|
+
var fails = require('../internals/fails');
|
|
3
4
|
var anObject = require('../internals/an-object');
|
|
4
|
-
var toLength = require('../internals/to-length');
|
|
5
5
|
var toInteger = require('../internals/to-integer');
|
|
6
|
+
var toLength = require('../internals/to-length');
|
|
7
|
+
var toString = require('../internals/to-string');
|
|
6
8
|
var requireObjectCoercible = require('../internals/require-object-coercible');
|
|
7
9
|
var advanceStringIndex = require('../internals/advance-string-index');
|
|
8
10
|
var getSubstitution = require('../internals/get-substitution');
|
|
9
11
|
var regExpExec = require('../internals/regexp-exec-abstract');
|
|
12
|
+
var wellKnownSymbol = require('../internals/well-known-symbol');
|
|
10
13
|
|
|
14
|
+
var REPLACE = wellKnownSymbol('replace');
|
|
11
15
|
var max = Math.max;
|
|
12
16
|
var min = Math.min;
|
|
13
17
|
|
|
@@ -15,10 +19,33 @@ var maybeToString = function (it) {
|
|
|
15
19
|
return it === undefined ? it : String(it);
|
|
16
20
|
};
|
|
17
21
|
|
|
22
|
+
// IE <= 11 replaces $0 with the whole match, as if it was $&
|
|
23
|
+
// https://stackoverflow.com/questions/6024666/getting-ie-to-replace-a-regex-with-the-literal-string-0
|
|
24
|
+
var REPLACE_KEEPS_$0 = (function () {
|
|
25
|
+
// eslint-disable-next-line regexp/prefer-escape-replacement-dollar-char -- required for testing
|
|
26
|
+
return 'a'.replace(/./, '$0') === '$0';
|
|
27
|
+
})();
|
|
28
|
+
|
|
29
|
+
// Safari <= 13.0.3(?) substitutes nth capture where n>m with an empty string
|
|
30
|
+
var REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE = (function () {
|
|
31
|
+
if (/./[REPLACE]) {
|
|
32
|
+
return /./[REPLACE]('a', '$0') === '';
|
|
33
|
+
}
|
|
34
|
+
return false;
|
|
35
|
+
})();
|
|
36
|
+
|
|
37
|
+
var REPLACE_SUPPORTS_NAMED_GROUPS = !fails(function () {
|
|
38
|
+
var re = /./;
|
|
39
|
+
re.exec = function () {
|
|
40
|
+
var result = [];
|
|
41
|
+
result.groups = { a: '7' };
|
|
42
|
+
return result;
|
|
43
|
+
};
|
|
44
|
+
return ''.replace(re, '$<a>') !== '7';
|
|
45
|
+
});
|
|
46
|
+
|
|
18
47
|
// @@replace logic
|
|
19
|
-
fixRegExpWellKnownSymbolLogic('replace',
|
|
20
|
-
var REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE = reason.REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE;
|
|
21
|
-
var REPLACE_KEEPS_$0 = reason.REPLACE_KEEPS_$0;
|
|
48
|
+
fixRegExpWellKnownSymbolLogic('replace', function (_, nativeReplace, maybeCallNative) {
|
|
22
49
|
var UNSAFE_SUBSTITUTE = REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE ? '$' : '$0';
|
|
23
50
|
|
|
24
51
|
return [
|
|
@@ -29,24 +56,25 @@ fixRegExpWellKnownSymbolLogic('replace', 2, function (REPLACE, nativeReplace, ma
|
|
|
29
56
|
var replacer = searchValue == undefined ? undefined : searchValue[REPLACE];
|
|
30
57
|
return replacer !== undefined
|
|
31
58
|
? replacer.call(searchValue, O, replaceValue)
|
|
32
|
-
: nativeReplace.call(
|
|
59
|
+
: nativeReplace.call(toString(O), searchValue, replaceValue);
|
|
33
60
|
},
|
|
34
61
|
// `RegExp.prototype[@@replace]` method
|
|
35
62
|
// https://tc39.es/ecma262/#sec-regexp.prototype-@@replace
|
|
36
|
-
function (
|
|
63
|
+
function (string, replaceValue) {
|
|
64
|
+
var rx = anObject(this);
|
|
65
|
+
var S = toString(string);
|
|
66
|
+
|
|
37
67
|
if (
|
|
38
|
-
|
|
39
|
-
|
|
68
|
+
typeof replaceValue === 'string' &&
|
|
69
|
+
replaceValue.indexOf(UNSAFE_SUBSTITUTE) === -1 &&
|
|
70
|
+
replaceValue.indexOf('$<') === -1
|
|
40
71
|
) {
|
|
41
|
-
var res = maybeCallNative(nativeReplace,
|
|
72
|
+
var res = maybeCallNative(nativeReplace, rx, S, replaceValue);
|
|
42
73
|
if (res.done) return res.value;
|
|
43
74
|
}
|
|
44
75
|
|
|
45
|
-
var rx = anObject(regexp);
|
|
46
|
-
var S = String(this);
|
|
47
|
-
|
|
48
76
|
var functionalReplace = typeof replaceValue === 'function';
|
|
49
|
-
if (!functionalReplace) replaceValue =
|
|
77
|
+
if (!functionalReplace) replaceValue = toString(replaceValue);
|
|
50
78
|
|
|
51
79
|
var global = rx.global;
|
|
52
80
|
if (global) {
|
|
@@ -61,7 +89,7 @@ fixRegExpWellKnownSymbolLogic('replace', 2, function (REPLACE, nativeReplace, ma
|
|
|
61
89
|
results.push(result);
|
|
62
90
|
if (!global) break;
|
|
63
91
|
|
|
64
|
-
var matchStr =
|
|
92
|
+
var matchStr = toString(result[0]);
|
|
65
93
|
if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);
|
|
66
94
|
}
|
|
67
95
|
|
|
@@ -70,7 +98,7 @@ fixRegExpWellKnownSymbolLogic('replace', 2, function (REPLACE, nativeReplace, ma
|
|
|
70
98
|
for (var i = 0; i < results.length; i++) {
|
|
71
99
|
result = results[i];
|
|
72
100
|
|
|
73
|
-
var matched =
|
|
101
|
+
var matched = toString(result[0]);
|
|
74
102
|
var position = max(min(toInteger(result.index), S.length), 0);
|
|
75
103
|
var captures = [];
|
|
76
104
|
// NOTE: This is equivalent to
|
|
@@ -83,7 +111,7 @@ fixRegExpWellKnownSymbolLogic('replace', 2, function (REPLACE, nativeReplace, ma
|
|
|
83
111
|
if (functionalReplace) {
|
|
84
112
|
var replacerArgs = [matched].concat(captures, position, S);
|
|
85
113
|
if (namedCaptures !== undefined) replacerArgs.push(namedCaptures);
|
|
86
|
-
var replacement =
|
|
114
|
+
var replacement = toString(replaceValue.apply(undefined, replacerArgs));
|
|
87
115
|
} else {
|
|
88
116
|
replacement = getSubstitution(matched, S, position, captures, namedCaptures, replaceValue);
|
|
89
117
|
}
|
|
@@ -95,4 +123,4 @@ fixRegExpWellKnownSymbolLogic('replace', 2, function (REPLACE, nativeReplace, ma
|
|
|
95
123
|
return accumulatedResult + S.slice(nextSourcePosition);
|
|
96
124
|
}
|
|
97
125
|
];
|
|
98
|
-
});
|
|
126
|
+
}, !REPLACE_SUPPORTS_NAMED_GROUPS || !REPLACE_KEEPS_$0 || REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE);
|
|
@@ -3,26 +3,27 @@ var fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-
|
|
|
3
3
|
var anObject = require('../internals/an-object');
|
|
4
4
|
var requireObjectCoercible = require('../internals/require-object-coercible');
|
|
5
5
|
var sameValue = require('../internals/same-value');
|
|
6
|
+
var toString = require('../internals/to-string');
|
|
6
7
|
var regExpExec = require('../internals/regexp-exec-abstract');
|
|
7
8
|
|
|
8
9
|
// @@search logic
|
|
9
|
-
fixRegExpWellKnownSymbolLogic('search',
|
|
10
|
+
fixRegExpWellKnownSymbolLogic('search', function (SEARCH, nativeSearch, maybeCallNative) {
|
|
10
11
|
return [
|
|
11
12
|
// `String.prototype.search` method
|
|
12
13
|
// https://tc39.es/ecma262/#sec-string.prototype.search
|
|
13
14
|
function search(regexp) {
|
|
14
15
|
var O = requireObjectCoercible(this);
|
|
15
16
|
var searcher = regexp == undefined ? undefined : regexp[SEARCH];
|
|
16
|
-
return searcher !== undefined ? searcher.call(regexp, O) : new RegExp(regexp)[SEARCH](
|
|
17
|
+
return searcher !== undefined ? searcher.call(regexp, O) : new RegExp(regexp)[SEARCH](toString(O));
|
|
17
18
|
},
|
|
18
19
|
// `RegExp.prototype[@@search]` method
|
|
19
20
|
// https://tc39.es/ecma262/#sec-regexp.prototype-@@search
|
|
20
|
-
function (
|
|
21
|
-
var
|
|
22
|
-
|
|
21
|
+
function (string) {
|
|
22
|
+
var rx = anObject(this);
|
|
23
|
+
var S = toString(string);
|
|
24
|
+
var res = maybeCallNative(nativeSearch, rx, S);
|
|
23
25
|
|
|
24
|
-
|
|
25
|
-
var S = String(this);
|
|
26
|
+
if (res.done) return res.value;
|
|
26
27
|
|
|
27
28
|
var previousLastIndex = rx.lastIndex;
|
|
28
29
|
if (!sameValue(previousLastIndex, 0)) rx.lastIndex = 0;
|
|
@@ -6,17 +6,30 @@ var requireObjectCoercible = require('../internals/require-object-coercible');
|
|
|
6
6
|
var speciesConstructor = require('../internals/species-constructor');
|
|
7
7
|
var advanceStringIndex = require('../internals/advance-string-index');
|
|
8
8
|
var toLength = require('../internals/to-length');
|
|
9
|
+
var toString = require('../internals/to-string');
|
|
9
10
|
var callRegExpExec = require('../internals/regexp-exec-abstract');
|
|
10
11
|
var regexpExec = require('../internals/regexp-exec');
|
|
11
12
|
var stickyHelpers = require('../internals/regexp-sticky-helpers');
|
|
13
|
+
var fails = require('../internals/fails');
|
|
12
14
|
|
|
13
15
|
var UNSUPPORTED_Y = stickyHelpers.UNSUPPORTED_Y;
|
|
14
16
|
var arrayPush = [].push;
|
|
15
17
|
var min = Math.min;
|
|
16
18
|
var MAX_UINT32 = 0xFFFFFFFF;
|
|
17
19
|
|
|
20
|
+
// Chrome 51 has a buggy "split" implementation when RegExp#exec !== nativeExec
|
|
21
|
+
// Weex JS has frozen built-in prototypes, so use try / catch wrapper
|
|
22
|
+
var SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = !fails(function () {
|
|
23
|
+
// eslint-disable-next-line regexp/no-empty-group -- required for testing
|
|
24
|
+
var re = /(?:)/;
|
|
25
|
+
var originalExec = re.exec;
|
|
26
|
+
re.exec = function () { return originalExec.apply(this, arguments); };
|
|
27
|
+
var result = 'ab'.split(re);
|
|
28
|
+
return result.length !== 2 || result[0] !== 'a' || result[1] !== 'b';
|
|
29
|
+
});
|
|
30
|
+
|
|
18
31
|
// @@split logic
|
|
19
|
-
fixRegExpWellKnownSymbolLogic('split',
|
|
32
|
+
fixRegExpWellKnownSymbolLogic('split', function (SPLIT, nativeSplit, maybeCallNative) {
|
|
20
33
|
var internalSplit;
|
|
21
34
|
if (
|
|
22
35
|
'abbc'.split(/(b)*/)[1] == 'c' ||
|
|
@@ -30,7 +43,7 @@ fixRegExpWellKnownSymbolLogic('split', 2, function (SPLIT, nativeSplit, maybeCal
|
|
|
30
43
|
) {
|
|
31
44
|
// based on es5-shim implementation, need to rework it
|
|
32
45
|
internalSplit = function (separator, limit) {
|
|
33
|
-
var string =
|
|
46
|
+
var string = toString(requireObjectCoercible(this));
|
|
34
47
|
var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;
|
|
35
48
|
if (lim === 0) return [];
|
|
36
49
|
if (separator === undefined) return [string];
|
|
@@ -78,19 +91,20 @@ fixRegExpWellKnownSymbolLogic('split', 2, function (SPLIT, nativeSplit, maybeCal
|
|
|
78
91
|
var splitter = separator == undefined ? undefined : separator[SPLIT];
|
|
79
92
|
return splitter !== undefined
|
|
80
93
|
? splitter.call(separator, O, limit)
|
|
81
|
-
: internalSplit.call(
|
|
94
|
+
: internalSplit.call(toString(O), separator, limit);
|
|
82
95
|
},
|
|
83
96
|
// `RegExp.prototype[@@split]` method
|
|
84
97
|
// https://tc39.es/ecma262/#sec-regexp.prototype-@@split
|
|
85
98
|
//
|
|
86
99
|
// NOTE: This cannot be properly polyfilled in engines that don't support
|
|
87
100
|
// the 'y' flag.
|
|
88
|
-
function (
|
|
89
|
-
var
|
|
101
|
+
function (string, limit) {
|
|
102
|
+
var rx = anObject(this);
|
|
103
|
+
var S = toString(string);
|
|
104
|
+
var res = maybeCallNative(internalSplit, rx, S, limit, internalSplit !== nativeSplit);
|
|
105
|
+
|
|
90
106
|
if (res.done) return res.value;
|
|
91
107
|
|
|
92
|
-
var rx = anObject(regexp);
|
|
93
|
-
var S = String(this);
|
|
94
108
|
var C = speciesConstructor(rx, RegExp);
|
|
95
109
|
|
|
96
110
|
var unicodeMatching = rx.unicode;
|
|
@@ -131,4 +145,4 @@ fixRegExpWellKnownSymbolLogic('split', 2, function (SPLIT, nativeSplit, maybeCal
|
|
|
131
145
|
return A;
|
|
132
146
|
}
|
|
133
147
|
];
|
|
134
|
-
}, UNSUPPORTED_Y);
|
|
148
|
+
}, !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC, UNSUPPORTED_Y);
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
var $ = require('../internals/export');
|
|
3
3
|
var getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;
|
|
4
4
|
var toLength = require('../internals/to-length');
|
|
5
|
+
var toString = require('../internals/to-string');
|
|
5
6
|
var notARegExp = require('../internals/not-a-regexp');
|
|
6
7
|
var requireObjectCoercible = require('../internals/require-object-coercible');
|
|
7
8
|
var correctIsRegExpLogic = require('../internals/correct-is-regexp-logic');
|
|
@@ -22,10 +23,10 @@ var MDN_POLYFILL_BUG = !IS_PURE && !CORRECT_IS_REGEXP_LOGIC && !!function () {
|
|
|
22
23
|
// https://tc39.es/ecma262/#sec-string.prototype.startswith
|
|
23
24
|
$({ target: 'String', proto: true, forced: !MDN_POLYFILL_BUG && !CORRECT_IS_REGEXP_LOGIC }, {
|
|
24
25
|
startsWith: function startsWith(searchString /* , position = 0 */) {
|
|
25
|
-
var that =
|
|
26
|
+
var that = toString(requireObjectCoercible(this));
|
|
26
27
|
notARegExp(searchString);
|
|
27
28
|
var index = toLength(min(arguments.length > 1 ? arguments[1] : undefined, that.length));
|
|
28
|
-
var search =
|
|
29
|
+
var search = toString(searchString);
|
|
29
30
|
return $startsWith
|
|
30
31
|
? $startsWith.call(that, search, index)
|
|
31
32
|
: that.slice(index, index + search.length) === search;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
var $ = require('../internals/export');
|
|
3
|
+
var requireObjectCoercible = require('../internals/require-object-coercible');
|
|
4
|
+
var toInteger = require('../internals/to-integer');
|
|
5
|
+
var toString = require('../internals/to-string');
|
|
6
|
+
|
|
7
|
+
var slice = ''.slice;
|
|
8
|
+
var max = Math.max;
|
|
9
|
+
var min = Math.min;
|
|
10
|
+
|
|
11
|
+
// `String.prototype.substr` method
|
|
12
|
+
// https://tc39.es/ecma262/#sec-string.prototype.substr
|
|
13
|
+
$({ target: 'String', proto: true }, {
|
|
14
|
+
substr: function substr(start, length) {
|
|
15
|
+
var that = toString(requireObjectCoercible(this));
|
|
16
|
+
var size = that.length;
|
|
17
|
+
var intStart = toInteger(start);
|
|
18
|
+
var intLength, intEnd;
|
|
19
|
+
if (intStart === Infinity) intStart = 0;
|
|
20
|
+
if (intStart < 0) intStart = max(size + intStart, 0);
|
|
21
|
+
intLength = length === undefined ? size : toInteger(length);
|
|
22
|
+
if (intLength <= 0 || intLength === Infinity) return '';
|
|
23
|
+
intEnd = min(intStart + intLength, size);
|
|
24
|
+
return intStart >= intEnd ? '' : slice.call(that, intStart, intEnd);
|
|
25
|
+
}
|
|
26
|
+
});
|
package/modules/es.symbol.js
CHANGED
|
@@ -5,15 +5,16 @@ var getBuiltIn = require('../internals/get-built-in');
|
|
|
5
5
|
var IS_PURE = require('../internals/is-pure');
|
|
6
6
|
var DESCRIPTORS = require('../internals/descriptors');
|
|
7
7
|
var NATIVE_SYMBOL = require('../internals/native-symbol');
|
|
8
|
-
var USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');
|
|
9
8
|
var fails = require('../internals/fails');
|
|
10
9
|
var has = require('../internals/has');
|
|
11
10
|
var isArray = require('../internals/is-array');
|
|
12
11
|
var isObject = require('../internals/is-object');
|
|
12
|
+
var isSymbol = require('../internals/is-symbol');
|
|
13
13
|
var anObject = require('../internals/an-object');
|
|
14
14
|
var toObject = require('../internals/to-object');
|
|
15
15
|
var toIndexedObject = require('../internals/to-indexed-object');
|
|
16
|
-
var
|
|
16
|
+
var toPropertyKey = require('../internals/to-property-key');
|
|
17
|
+
var $toString = require('../internals/to-string');
|
|
17
18
|
var createPropertyDescriptor = require('../internals/create-property-descriptor');
|
|
18
19
|
var nativeObjectCreate = require('../internals/object-create');
|
|
19
20
|
var objectKeys = require('../internals/object-keys');
|
|
@@ -83,16 +84,10 @@ var wrap = function (tag, description) {
|
|
|
83
84
|
return symbol;
|
|
84
85
|
};
|
|
85
86
|
|
|
86
|
-
var isSymbol = USE_SYMBOL_AS_UID ? function (it) {
|
|
87
|
-
return typeof it == 'symbol';
|
|
88
|
-
} : function (it) {
|
|
89
|
-
return Object(it) instanceof $Symbol;
|
|
90
|
-
};
|
|
91
|
-
|
|
92
87
|
var $defineProperty = function defineProperty(O, P, Attributes) {
|
|
93
88
|
if (O === ObjectPrototype) $defineProperty(ObjectPrototypeSymbols, P, Attributes);
|
|
94
89
|
anObject(O);
|
|
95
|
-
var key =
|
|
90
|
+
var key = toPropertyKey(P);
|
|
96
91
|
anObject(Attributes);
|
|
97
92
|
if (has(AllSymbols, key)) {
|
|
98
93
|
if (!Attributes.enumerable) {
|
|
@@ -120,7 +115,7 @@ var $create = function create(O, Properties) {
|
|
|
120
115
|
};
|
|
121
116
|
|
|
122
117
|
var $propertyIsEnumerable = function propertyIsEnumerable(V) {
|
|
123
|
-
var P =
|
|
118
|
+
var P = toPropertyKey(V);
|
|
124
119
|
var enumerable = nativePropertyIsEnumerable.call(this, P);
|
|
125
120
|
if (this === ObjectPrototype && has(AllSymbols, P) && !has(ObjectPrototypeSymbols, P)) return false;
|
|
126
121
|
return enumerable || !has(this, P) || !has(AllSymbols, P) || has(this, HIDDEN) && this[HIDDEN][P] ? enumerable : true;
|
|
@@ -128,7 +123,7 @@ var $propertyIsEnumerable = function propertyIsEnumerable(V) {
|
|
|
128
123
|
|
|
129
124
|
var $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(O, P) {
|
|
130
125
|
var it = toIndexedObject(O);
|
|
131
|
-
var key =
|
|
126
|
+
var key = toPropertyKey(P);
|
|
132
127
|
if (it === ObjectPrototype && has(AllSymbols, key) && !has(ObjectPrototypeSymbols, key)) return;
|
|
133
128
|
var descriptor = nativeGetOwnPropertyDescriptor(it, key);
|
|
134
129
|
if (descriptor && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) {
|
|
@@ -163,7 +158,7 @@ var $getOwnPropertySymbols = function getOwnPropertySymbols(O) {
|
|
|
163
158
|
if (!NATIVE_SYMBOL) {
|
|
164
159
|
$Symbol = function Symbol() {
|
|
165
160
|
if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor');
|
|
166
|
-
var description = !arguments.length || arguments[0] === undefined ? undefined :
|
|
161
|
+
var description = !arguments.length || arguments[0] === undefined ? undefined : $toString(arguments[0]);
|
|
167
162
|
var tag = uid(description);
|
|
168
163
|
var setter = function (value) {
|
|
169
164
|
if (this === ObjectPrototype) setter.call(ObjectPrototypeSymbols, value);
|
|
@@ -218,7 +213,7 @@ $({ target: SYMBOL, stat: true, forced: !NATIVE_SYMBOL }, {
|
|
|
218
213
|
// `Symbol.for` method
|
|
219
214
|
// https://tc39.es/ecma262/#sec-symbol.for
|
|
220
215
|
'for': function (key) {
|
|
221
|
-
var string =
|
|
216
|
+
var string = $toString(key);
|
|
222
217
|
if (has(StringToSymbolRegistry, string)) return StringToSymbolRegistry[string];
|
|
223
218
|
var symbol = $Symbol(string);
|
|
224
219
|
StringToSymbolRegistry[string] = symbol;
|
|
@@ -1,16 +1,15 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
var ArrayBufferViewCore = require('../internals/array-buffer-view-core');
|
|
3
3
|
var $map = require('../internals/array-iteration').map;
|
|
4
|
-
var
|
|
4
|
+
var typedArraySpeciesConstructor = require('../internals/typed-array-species-constructor');
|
|
5
5
|
|
|
6
6
|
var aTypedArray = ArrayBufferViewCore.aTypedArray;
|
|
7
|
-
var aTypedArrayConstructor = ArrayBufferViewCore.aTypedArrayConstructor;
|
|
8
7
|
var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;
|
|
9
8
|
|
|
10
9
|
// `%TypedArray%.prototype.map` method
|
|
11
10
|
// https://tc39.es/ecma262/#sec-%typedarray%.prototype.map
|
|
12
11
|
exportTypedArrayMethod('map', function map(mapfn /* , thisArg */) {
|
|
13
12
|
return $map(aTypedArray(this), mapfn, arguments.length > 1 ? arguments[1] : undefined, function (O, length) {
|
|
14
|
-
return new (
|
|
13
|
+
return new (typedArraySpeciesConstructor(O))(length);
|
|
15
14
|
});
|
|
16
15
|
});
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
var ArrayBufferViewCore = require('../internals/array-buffer-view-core');
|
|
3
|
-
var
|
|
3
|
+
var typedArraySpeciesConstructor = require('../internals/typed-array-species-constructor');
|
|
4
4
|
var fails = require('../internals/fails');
|
|
5
5
|
|
|
6
6
|
var aTypedArray = ArrayBufferViewCore.aTypedArray;
|
|
7
|
-
var aTypedArrayConstructor = ArrayBufferViewCore.aTypedArrayConstructor;
|
|
8
7
|
var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;
|
|
9
8
|
var $slice = [].slice;
|
|
10
9
|
|
|
@@ -17,10 +16,10 @@ var FORCED = fails(function () {
|
|
|
17
16
|
// https://tc39.es/ecma262/#sec-%typedarray%.prototype.slice
|
|
18
17
|
exportTypedArrayMethod('slice', function slice(start, end) {
|
|
19
18
|
var list = $slice.call(aTypedArray(this), start, end);
|
|
20
|
-
var C =
|
|
19
|
+
var C = typedArraySpeciesConstructor(this);
|
|
21
20
|
var index = 0;
|
|
22
21
|
var length = list.length;
|
|
23
|
-
var result = new
|
|
22
|
+
var result = new C(length);
|
|
24
23
|
while (length > index) result[index] = list[index++];
|
|
25
24
|
return result;
|
|
26
25
|
}, FORCED);
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
var ArrayBufferViewCore = require('../internals/array-buffer-view-core');
|
|
3
3
|
var toLength = require('../internals/to-length');
|
|
4
4
|
var toAbsoluteIndex = require('../internals/to-absolute-index');
|
|
5
|
-
var
|
|
5
|
+
var typedArraySpeciesConstructor = require('../internals/typed-array-species-constructor');
|
|
6
6
|
|
|
7
7
|
var aTypedArray = ArrayBufferViewCore.aTypedArray;
|
|
8
8
|
var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;
|
|
@@ -13,7 +13,8 @@ exportTypedArrayMethod('subarray', function subarray(begin, end) {
|
|
|
13
13
|
var O = aTypedArray(this);
|
|
14
14
|
var length = O.length;
|
|
15
15
|
var beginIndex = toAbsoluteIndex(begin, length);
|
|
16
|
-
|
|
16
|
+
var C = typedArraySpeciesConstructor(O);
|
|
17
|
+
return new C(
|
|
17
18
|
O.buffer,
|
|
18
19
|
O.byteOffset + beginIndex * O.BYTES_PER_ELEMENT,
|
|
19
20
|
toLength((end === undefined ? length : toAbsoluteIndex(end, length)) - beginIndex)
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
var $ = require('../internals/export');
|
|
3
|
+
var toString = require('../internals/to-string');
|
|
4
|
+
|
|
5
|
+
var fromCharCode = String.fromCharCode;
|
|
6
|
+
var hex2 = /^[\da-f]{2}$/i;
|
|
7
|
+
var hex4 = /^[\da-f]{4}$/i;
|
|
8
|
+
|
|
9
|
+
// `unescape` method
|
|
10
|
+
// https://tc39.es/ecma262/#sec-unescape-string
|
|
11
|
+
$({ global: true }, {
|
|
12
|
+
unescape: function unescape(string) {
|
|
13
|
+
var str = toString(string);
|
|
14
|
+
var result = '';
|
|
15
|
+
var length = str.length;
|
|
16
|
+
var index = 0;
|
|
17
|
+
var chr, slice;
|
|
18
|
+
while (index < length) {
|
|
19
|
+
chr = str.charAt(index++);
|
|
20
|
+
if (chr === '%') {
|
|
21
|
+
if (str.charAt(index) === 'u') {
|
|
22
|
+
slice = str.slice(index + 1, index + 5);
|
|
23
|
+
if (hex4.test(slice)) {
|
|
24
|
+
result += fromCharCode(parseInt(slice, 16));
|
|
25
|
+
index += 5;
|
|
26
|
+
continue;
|
|
27
|
+
}
|
|
28
|
+
} else {
|
|
29
|
+
slice = str.slice(index, index + 2);
|
|
30
|
+
if (hex2.test(slice)) {
|
|
31
|
+
result += fromCharCode(parseInt(slice, 16));
|
|
32
|
+
index += 2;
|
|
33
|
+
continue;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
result += chr;
|
|
38
|
+
} return result;
|
|
39
|
+
}
|
|
40
|
+
});
|
package/modules/es.weak-map.js
CHANGED
|
@@ -28,7 +28,7 @@ var $WeakMap = module.exports = collection('WeakMap', wrapper, collectionWeak);
|
|
|
28
28
|
// https://github.com/zloirock/core-js/issues/485
|
|
29
29
|
if (NATIVE_WEAK_MAP && IS_IE11) {
|
|
30
30
|
InternalWeakMap = collectionWeak.getConstructor(wrapper, 'WeakMap', true);
|
|
31
|
-
InternalMetadataModule.
|
|
31
|
+
InternalMetadataModule.enable();
|
|
32
32
|
var WeakMapPrototype = $WeakMap.prototype;
|
|
33
33
|
var nativeDelete = WeakMapPrototype['delete'];
|
|
34
34
|
var nativeHas = WeakMapPrototype.has;
|
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
'use strict';
|
|
2
|
+
// TODO: remove from `core-js@4`
|
|
2
3
|
var $ = require('../internals/export');
|
|
3
|
-
var $
|
|
4
|
+
var $filterReject = require('../internals/array-iteration').filterReject;
|
|
4
5
|
var addToUnscopables = require('../internals/add-to-unscopables');
|
|
5
6
|
|
|
6
7
|
// `Array.prototype.filterOut` method
|
|
7
8
|
// https://github.com/tc39/proposal-array-filtering
|
|
8
9
|
$({ target: 'Array', proto: true }, {
|
|
9
10
|
filterOut: function filterOut(callbackfn /* , thisArg */) {
|
|
10
|
-
return $
|
|
11
|
+
return $filterReject(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);
|
|
11
12
|
}
|
|
12
13
|
});
|
|
13
14
|
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
var $ = require('../internals/export');
|
|
3
|
+
var $filterReject = require('../internals/array-iteration').filterReject;
|
|
4
|
+
var addToUnscopables = require('../internals/add-to-unscopables');
|
|
5
|
+
|
|
6
|
+
// `Array.prototype.filterReject` method
|
|
7
|
+
// https://github.com/tc39/proposal-array-filtering
|
|
8
|
+
$({ target: 'Array', proto: true }, {
|
|
9
|
+
filterReject: function filterReject(callbackfn /* , thisArg */) {
|
|
10
|
+
return $filterReject(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);
|
|
11
|
+
}
|
|
12
|
+
});
|
|
13
|
+
|
|
14
|
+
addToUnscopables('filterReject');
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
var $ = require('../internals/export');
|
|
3
|
+
var $groupBy = require('../internals/array-group-by');
|
|
4
|
+
var arraySpeciesConstructor = require('../internals/array-species-constructor');
|
|
5
|
+
var addToUnscopables = require('../internals/add-to-unscopables');
|
|
6
|
+
|
|
7
|
+
// `Array.prototype.groupBy` method
|
|
8
|
+
// https://github.com/tc39/proposal-array-grouping
|
|
9
|
+
$({ target: 'Array', proto: true }, {
|
|
10
|
+
groupBy: function groupBy(callbackfn /* , thisArg */) {
|
|
11
|
+
var thisArg = arguments.length > 1 ? arguments[1] : undefined;
|
|
12
|
+
return $groupBy(this, callbackfn, thisArg, arraySpeciesConstructor);
|
|
13
|
+
}
|
|
14
|
+
});
|
|
15
|
+
|
|
16
|
+
addToUnscopables('groupBy');
|
|
@@ -12,8 +12,9 @@ $({ target: 'Map', proto: true, real: true, forced: IS_PURE }, {
|
|
|
12
12
|
merge: function merge(iterable /* ...iterbles */) {
|
|
13
13
|
var map = anObject(this);
|
|
14
14
|
var setter = aFunction(map.set);
|
|
15
|
+
var argumentsLength = arguments.length;
|
|
15
16
|
var i = 0;
|
|
16
|
-
while (i <
|
|
17
|
+
while (i < argumentsLength) {
|
|
17
18
|
iterate(arguments[i++], setter, { that: map, AS_ENTRIES: true });
|
|
18
19
|
}
|
|
19
20
|
return map;
|