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,8 +1,8 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
var $ = require('../internals/export');
|
|
3
3
|
var toAbsoluteIndex = require('../internals/to-absolute-index');
|
|
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 toObject = require('../internals/to-object');
|
|
7
7
|
var arraySpeciesCreate = require('../internals/array-species-create');
|
|
8
8
|
var createProperty = require('../internals/create-property');
|
|
@@ -21,7 +21,7 @@ var MAXIMUM_ALLOWED_LENGTH_EXCEEDED = 'Maximum allowed length exceeded';
|
|
|
21
21
|
$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {
|
|
22
22
|
splice: function splice(start, deleteCount /* , ...items */) {
|
|
23
23
|
var O = toObject(this);
|
|
24
|
-
var len =
|
|
24
|
+
var len = lengthOfArrayLike(O);
|
|
25
25
|
var actualStart = toAbsoluteIndex(start, len);
|
|
26
26
|
var argumentsLength = arguments.length;
|
|
27
27
|
var insertCount, actualDeleteCount, A, k, from, to;
|
|
@@ -32,7 +32,7 @@ $({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {
|
|
|
32
32
|
actualDeleteCount = len - actualStart;
|
|
33
33
|
} else {
|
|
34
34
|
insertCount = argumentsLength - 2;
|
|
35
|
-
actualDeleteCount = min(max(
|
|
35
|
+
actualDeleteCount = min(max(toIntegerOrInfinity(deleteCount), 0), len - actualStart);
|
|
36
36
|
}
|
|
37
37
|
if (len + insertCount - actualDeleteCount > MAX_SAFE_INTEGER) {
|
|
38
38
|
throw TypeError(MAXIMUM_ALLOWED_LENGTH_EXCEEDED);
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
var $ = require('../internals/export');
|
|
3
|
-
var
|
|
3
|
+
var toIntegerOrInfinity = require('../internals/to-integer-or-infinity');
|
|
4
4
|
|
|
5
5
|
var getTime = Date.prototype.getTime;
|
|
6
6
|
var setFullYear = Date.prototype.setFullYear;
|
|
@@ -11,7 +11,7 @@ $({ target: 'Date', proto: true }, {
|
|
|
11
11
|
setYear: function setYear(year) {
|
|
12
12
|
// validate
|
|
13
13
|
getTime.call(this);
|
|
14
|
-
var yi =
|
|
14
|
+
var yi = toIntegerOrInfinity(year);
|
|
15
15
|
var yyyy = 0 <= yi && yi <= 99 ? yi + 1900 : yi;
|
|
16
16
|
return setFullYear.call(this, yyyy);
|
|
17
17
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
var
|
|
1
|
+
var redefine = require('../internals/redefine');
|
|
2
2
|
var dateToPrimitive = require('../internals/date-to-primitive');
|
|
3
3
|
var wellKnownSymbol = require('../internals/well-known-symbol');
|
|
4
4
|
|
|
@@ -8,5 +8,5 @@ var DatePrototype = Date.prototype;
|
|
|
8
8
|
// `Date.prototype[@@toPrimitive]` method
|
|
9
9
|
// https://tc39.es/ecma262/#sec-date.prototype-@@toprimitive
|
|
10
10
|
if (!(TO_PRIMITIVE in DatePrototype)) {
|
|
11
|
-
|
|
11
|
+
redefine(DatePrototype, TO_PRIMITIVE, dateToPrimitive);
|
|
12
12
|
}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
'use strict';
|
|
2
|
+
var isCallable = require('../internals/is-callable');
|
|
2
3
|
var isObject = require('../internals/is-object');
|
|
3
4
|
var definePropertyModule = require('../internals/object-define-property');
|
|
4
5
|
var getPrototypeOf = require('../internals/object-get-prototype-of');
|
|
@@ -11,7 +12,7 @@ var FunctionPrototype = Function.prototype;
|
|
|
11
12
|
// https://tc39.es/ecma262/#sec-function.prototype-@@hasinstance
|
|
12
13
|
if (!(HAS_INSTANCE in FunctionPrototype)) {
|
|
13
14
|
definePropertyModule.f(FunctionPrototype, HAS_INSTANCE, { value: function (O) {
|
|
14
|
-
if (
|
|
15
|
+
if (!isCallable(this) || !isObject(O)) return false;
|
|
15
16
|
if (!isObject(this.prototype)) return O instanceof this;
|
|
16
17
|
// for environment w/o native `@@hasInstance` logic enough `instanceof`, but add this:
|
|
17
18
|
while (O = getPrototypeOf(O)) if (this.prototype === O) return true;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
var DESCRIPTORS = require('../internals/descriptors');
|
|
2
|
+
var FUNCTION_NAME_EXISTS = require('../internals/function-name').EXISTS;
|
|
2
3
|
var defineProperty = require('../internals/object-define-property').f;
|
|
3
4
|
|
|
4
5
|
var FunctionPrototype = Function.prototype;
|
|
@@ -8,7 +9,7 @@ var NAME = 'name';
|
|
|
8
9
|
|
|
9
10
|
// Function instances `.name` property
|
|
10
11
|
// https://tc39.es/ecma262/#sec-function-instances-name
|
|
11
|
-
if (DESCRIPTORS && !
|
|
12
|
+
if (DESCRIPTORS && !FUNCTION_NAME_EXISTS) {
|
|
12
13
|
defineProperty(FunctionPrototype, NAME, {
|
|
13
14
|
configurable: true,
|
|
14
15
|
get: function () {
|
|
@@ -3,31 +3,34 @@ var DESCRIPTORS = require('../internals/descriptors');
|
|
|
3
3
|
var global = require('../internals/global');
|
|
4
4
|
var isForced = require('../internals/is-forced');
|
|
5
5
|
var redefine = require('../internals/redefine');
|
|
6
|
-
var
|
|
7
|
-
var classof = require('../internals/classof-raw');
|
|
6
|
+
var hasOwn = require('../internals/has-own-property');
|
|
8
7
|
var inheritIfRequired = require('../internals/inherit-if-required');
|
|
9
8
|
var isSymbol = require('../internals/is-symbol');
|
|
10
9
|
var toPrimitive = require('../internals/to-primitive');
|
|
11
10
|
var fails = require('../internals/fails');
|
|
12
|
-
var create = require('../internals/object-create');
|
|
13
11
|
var getOwnPropertyNames = require('../internals/object-get-own-property-names').f;
|
|
14
12
|
var getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;
|
|
15
13
|
var defineProperty = require('../internals/object-define-property').f;
|
|
14
|
+
var thisNumberValue = require('../internals/this-number-value');
|
|
16
15
|
var trim = require('../internals/string-trim').trim;
|
|
17
16
|
|
|
18
17
|
var NUMBER = 'Number';
|
|
19
18
|
var NativeNumber = global[NUMBER];
|
|
20
19
|
var NumberPrototype = NativeNumber.prototype;
|
|
21
20
|
|
|
22
|
-
//
|
|
23
|
-
|
|
21
|
+
// `ToNumeric` abstract operation
|
|
22
|
+
// https://tc39.es/ecma262/#sec-tonumeric
|
|
23
|
+
var toNumeric = function (value) {
|
|
24
|
+
var primValue = toPrimitive(value, 'number');
|
|
25
|
+
return typeof primValue === 'bigint' ? primValue : toNumber(primValue);
|
|
26
|
+
};
|
|
24
27
|
|
|
25
28
|
// `ToNumber` abstract operation
|
|
26
29
|
// https://tc39.es/ecma262/#sec-tonumber
|
|
27
30
|
var toNumber = function (argument) {
|
|
28
|
-
if (isSymbol(argument)) throw TypeError('Cannot convert a Symbol value to a number');
|
|
29
31
|
var it = toPrimitive(argument, 'number');
|
|
30
32
|
var first, third, radix, maxCode, digits, length, index, code;
|
|
33
|
+
if (isSymbol(it)) throw TypeError('Cannot convert a Symbol value to a number');
|
|
31
34
|
if (typeof it == 'string' && it.length > 2) {
|
|
32
35
|
it = trim(it);
|
|
33
36
|
first = it.charCodeAt(0);
|
|
@@ -56,23 +59,21 @@ var toNumber = function (argument) {
|
|
|
56
59
|
// https://tc39.es/ecma262/#sec-number-constructor
|
|
57
60
|
if (isForced(NUMBER, !NativeNumber(' 0o1') || !NativeNumber('0b1') || NativeNumber('+0x1'))) {
|
|
58
61
|
var NumberWrapper = function Number(value) {
|
|
59
|
-
var
|
|
62
|
+
var n = arguments.length < 1 ? 0 : NativeNumber(toNumeric(value));
|
|
60
63
|
var dummy = this;
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
? inheritIfRequired(new NativeNumber(toNumber(it)), dummy, NumberWrapper) : toNumber(it);
|
|
64
|
+
// check on 1..constructor(foo) case
|
|
65
|
+
return dummy instanceof NumberWrapper && fails(function () { thisNumberValue(dummy); })
|
|
66
|
+
? inheritIfRequired(Object(n), dummy, NumberWrapper) : n;
|
|
65
67
|
};
|
|
66
68
|
for (var keys = DESCRIPTORS ? getOwnPropertyNames(NativeNumber) : (
|
|
67
69
|
// ES3:
|
|
68
70
|
'MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,' +
|
|
69
71
|
// ES2015 (in case, if modules with ES2015 Number statics required before):
|
|
70
|
-
'EPSILON,isFinite,isInteger,isNaN,isSafeInteger,
|
|
71
|
-
'MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger,' +
|
|
72
|
+
'EPSILON,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,isFinite,isInteger,isNaN,isSafeInteger,parseFloat,parseInt,' +
|
|
72
73
|
// ESNext
|
|
73
74
|
'fromString,range'
|
|
74
75
|
).split(','), j = 0, key; keys.length > j; j++) {
|
|
75
|
-
if (
|
|
76
|
+
if (hasOwn(NativeNumber, key = keys[j]) && !hasOwn(NumberWrapper, key)) {
|
|
76
77
|
defineProperty(NumberWrapper, key, getOwnPropertyDescriptor(NativeNumber, key));
|
|
77
78
|
}
|
|
78
79
|
}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
var $ = require('../internals/export');
|
|
2
|
-
var
|
|
2
|
+
var isIntegralNumber = require('../internals/is-integral-number');
|
|
3
3
|
|
|
4
4
|
// `Number.isInteger` method
|
|
5
5
|
// https://tc39.es/ecma262/#sec-number.isinteger
|
|
6
6
|
$({ target: 'Number', stat: true }, {
|
|
7
|
-
isInteger:
|
|
7
|
+
isInteger: isIntegralNumber
|
|
8
8
|
});
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
var $ = require('../internals/export');
|
|
2
|
-
var
|
|
2
|
+
var isIntegralNumber = require('../internals/is-integral-number');
|
|
3
3
|
|
|
4
4
|
var abs = Math.abs;
|
|
5
5
|
|
|
@@ -7,6 +7,6 @@ var abs = Math.abs;
|
|
|
7
7
|
// https://tc39.es/ecma262/#sec-number.issafeinteger
|
|
8
8
|
$({ target: 'Number', stat: true }, {
|
|
9
9
|
isSafeInteger: function isSafeInteger(number) {
|
|
10
|
-
return
|
|
10
|
+
return isIntegralNumber(number) && abs(number) <= 0x1FFFFFFFFFFFFF;
|
|
11
11
|
}
|
|
12
12
|
});
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
var $ = require('../internals/export');
|
|
3
|
-
var
|
|
3
|
+
var toIntegerOrInfinity = require('../internals/to-integer-or-infinity');
|
|
4
4
|
var thisNumberValue = require('../internals/this-number-value');
|
|
5
5
|
var repeat = require('../internals/string-repeat');
|
|
6
6
|
var fails = require('../internals/fails');
|
|
@@ -71,7 +71,7 @@ var FORCED = nativeToFixed && (
|
|
|
71
71
|
$({ target: 'Number', proto: true, forced: FORCED }, {
|
|
72
72
|
toFixed: function toFixed(fractionDigits) {
|
|
73
73
|
var number = thisNumberValue(this);
|
|
74
|
-
var fractDigits =
|
|
74
|
+
var fractDigits = toIntegerOrInfinity(fractionDigits);
|
|
75
75
|
var data = [0, 0, 0, 0, 0, 0];
|
|
76
76
|
var sign = '';
|
|
77
77
|
var result = '0';
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
var $ = require('../internals/export');
|
|
3
3
|
var DESCRIPTORS = require('../internals/descriptors');
|
|
4
4
|
var FORCED = require('../internals/object-prototype-accessors-forced');
|
|
5
|
+
var aCallable = require('../internals/a-callable');
|
|
5
6
|
var toObject = require('../internals/to-object');
|
|
6
|
-
var aFunction = require('../internals/a-function');
|
|
7
7
|
var definePropertyModule = require('../internals/object-define-property');
|
|
8
8
|
|
|
9
9
|
// `Object.prototype.__defineGetter__` method
|
|
@@ -11,7 +11,7 @@ var definePropertyModule = require('../internals/object-define-property');
|
|
|
11
11
|
if (DESCRIPTORS) {
|
|
12
12
|
$({ target: 'Object', proto: true, forced: FORCED }, {
|
|
13
13
|
__defineGetter__: function __defineGetter__(P, getter) {
|
|
14
|
-
definePropertyModule.f(toObject(this), P, { get:
|
|
14
|
+
definePropertyModule.f(toObject(this), P, { get: aCallable(getter), enumerable: true, configurable: true });
|
|
15
15
|
}
|
|
16
16
|
});
|
|
17
17
|
}
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
var $ = require('../internals/export');
|
|
3
3
|
var DESCRIPTORS = require('../internals/descriptors');
|
|
4
4
|
var FORCED = require('../internals/object-prototype-accessors-forced');
|
|
5
|
+
var aCallable = require('../internals/a-callable');
|
|
5
6
|
var toObject = require('../internals/to-object');
|
|
6
|
-
var aFunction = require('../internals/a-function');
|
|
7
7
|
var definePropertyModule = require('../internals/object-define-property');
|
|
8
8
|
|
|
9
9
|
// `Object.prototype.__defineSetter__` method
|
|
@@ -11,7 +11,7 @@ var definePropertyModule = require('../internals/object-define-property');
|
|
|
11
11
|
if (DESCRIPTORS) {
|
|
12
12
|
$({ target: 'Object', proto: true, forced: FORCED }, {
|
|
13
13
|
__defineSetter__: function __defineSetter__(P, setter) {
|
|
14
|
-
definePropertyModule.f(toObject(this), P, { set:
|
|
14
|
+
definePropertyModule.f(toObject(this), P, { set: aCallable(setter), enumerable: true, configurable: true });
|
|
15
15
|
}
|
|
16
16
|
});
|
|
17
17
|
}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
var $ = require('../internals/export');
|
|
2
|
-
var
|
|
2
|
+
var $parseFloat = require('../internals/number-parse-float');
|
|
3
3
|
|
|
4
4
|
// `parseFloat` method
|
|
5
5
|
// https://tc39.es/ecma262/#sec-parsefloat-string
|
|
6
|
-
$({ global: true, forced: parseFloat !=
|
|
7
|
-
parseFloat:
|
|
6
|
+
$({ global: true, forced: parseFloat != $parseFloat }, {
|
|
7
|
+
parseFloat: $parseFloat
|
|
8
8
|
});
|
package/modules/es.parse-int.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
var $ = require('../internals/export');
|
|
2
|
-
var
|
|
2
|
+
var $parseInt = require('../internals/number-parse-int');
|
|
3
3
|
|
|
4
4
|
// `parseInt` method
|
|
5
5
|
// https://tc39.es/ecma262/#sec-parseint-string-radix
|
|
6
|
-
$({ global: true, forced: parseInt !=
|
|
7
|
-
parseInt:
|
|
6
|
+
$({ global: true, forced: parseInt != $parseInt }, {
|
|
7
|
+
parseInt: $parseInt
|
|
8
8
|
});
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
var $ = require('../internals/export');
|
|
3
|
-
var
|
|
3
|
+
var aCallable = require('../internals/a-callable');
|
|
4
4
|
var newPromiseCapabilityModule = require('../internals/new-promise-capability');
|
|
5
5
|
var perform = require('../internals/perform');
|
|
6
6
|
var iterate = require('../internals/iterate');
|
|
@@ -14,7 +14,7 @@ $({ target: 'Promise', stat: true }, {
|
|
|
14
14
|
var resolve = capability.resolve;
|
|
15
15
|
var reject = capability.reject;
|
|
16
16
|
var result = perform(function () {
|
|
17
|
-
var promiseResolve =
|
|
17
|
+
var promiseResolve = aCallable(C.resolve);
|
|
18
18
|
var values = [];
|
|
19
19
|
var counter = 0;
|
|
20
20
|
var remaining = 1;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
var $ = require('../internals/export');
|
|
3
|
-
var
|
|
3
|
+
var aCallable = require('../internals/a-callable');
|
|
4
4
|
var getBuiltIn = require('../internals/get-built-in');
|
|
5
5
|
var newPromiseCapabilityModule = require('../internals/new-promise-capability');
|
|
6
6
|
var perform = require('../internals/perform');
|
|
@@ -17,7 +17,7 @@ $({ target: 'Promise', stat: true }, {
|
|
|
17
17
|
var resolve = capability.resolve;
|
|
18
18
|
var reject = capability.reject;
|
|
19
19
|
var result = perform(function () {
|
|
20
|
-
var promiseResolve =
|
|
20
|
+
var promiseResolve = aCallable(C.resolve);
|
|
21
21
|
var errors = [];
|
|
22
22
|
var counter = 0;
|
|
23
23
|
var remaining = 1;
|
|
@@ -4,6 +4,7 @@ var IS_PURE = require('../internals/is-pure');
|
|
|
4
4
|
var NativePromise = require('../internals/native-promise-constructor');
|
|
5
5
|
var fails = require('../internals/fails');
|
|
6
6
|
var getBuiltIn = require('../internals/get-built-in');
|
|
7
|
+
var isCallable = require('../internals/is-callable');
|
|
7
8
|
var speciesConstructor = require('../internals/species-constructor');
|
|
8
9
|
var promiseResolve = require('../internals/promise-resolve');
|
|
9
10
|
var redefine = require('../internals/redefine');
|
|
@@ -18,7 +19,7 @@ var NON_GENERIC = !!NativePromise && fails(function () {
|
|
|
18
19
|
$({ target: 'Promise', proto: true, real: true, forced: NON_GENERIC }, {
|
|
19
20
|
'finally': function (onFinally) {
|
|
20
21
|
var C = speciesConstructor(this, getBuiltIn('Promise'));
|
|
21
|
-
var isFunction =
|
|
22
|
+
var isFunction = isCallable(onFinally);
|
|
22
23
|
return this.then(
|
|
23
24
|
isFunction ? function (x) {
|
|
24
25
|
return promiseResolve(C, onFinally()).then(function () { return x; });
|
|
@@ -31,7 +32,7 @@ $({ target: 'Promise', proto: true, real: true, forced: NON_GENERIC }, {
|
|
|
31
32
|
});
|
|
32
33
|
|
|
33
34
|
// makes sure that native promise-based APIs `Promise#finally` properly works with patched `Promise#then`
|
|
34
|
-
if (!IS_PURE &&
|
|
35
|
+
if (!IS_PURE && isCallable(NativePromise)) {
|
|
35
36
|
var method = getBuiltIn('Promise').prototype['finally'];
|
|
36
37
|
if (NativePromise.prototype['finally'] !== method) {
|
|
37
38
|
redefine(NativePromise.prototype, 'finally', method, { unsafe: true });
|
package/modules/es.promise.js
CHANGED
|
@@ -9,8 +9,9 @@ var redefineAll = require('../internals/redefine-all');
|
|
|
9
9
|
var setPrototypeOf = require('../internals/object-set-prototype-of');
|
|
10
10
|
var setToStringTag = require('../internals/set-to-string-tag');
|
|
11
11
|
var setSpecies = require('../internals/set-species');
|
|
12
|
+
var aCallable = require('../internals/a-callable');
|
|
13
|
+
var isCallable = require('../internals/is-callable');
|
|
12
14
|
var isObject = require('../internals/is-object');
|
|
13
|
-
var aFunction = require('../internals/a-function');
|
|
14
15
|
var anInstance = require('../internals/an-instance');
|
|
15
16
|
var inspectSource = require('../internals/inspect-source');
|
|
16
17
|
var iterate = require('../internals/iterate');
|
|
@@ -43,7 +44,7 @@ var process = global.process;
|
|
|
43
44
|
var newPromiseCapability = newPromiseCapabilityModule.f;
|
|
44
45
|
var newGenericPromiseCapability = newPromiseCapability;
|
|
45
46
|
var DISPATCH_EVENT = !!(document && document.createEvent && global.dispatchEvent);
|
|
46
|
-
var NATIVE_REJECTION_EVENT =
|
|
47
|
+
var NATIVE_REJECTION_EVENT = isCallable(global.PromiseRejectionEvent);
|
|
47
48
|
var UNHANDLED_REJECTION = 'unhandledrejection';
|
|
48
49
|
var REJECTION_HANDLED = 'rejectionhandled';
|
|
49
50
|
var PENDING = 0;
|
|
@@ -87,7 +88,7 @@ var INCORRECT_ITERATION = FORCED || !checkCorrectnessOfIteration(function (itera
|
|
|
87
88
|
// helpers
|
|
88
89
|
var isThenable = function (it) {
|
|
89
90
|
var then;
|
|
90
|
-
return isObject(it) &&
|
|
91
|
+
return isObject(it) && isCallable(then = it.then) ? then : false;
|
|
91
92
|
};
|
|
92
93
|
|
|
93
94
|
var notify = function (state, isReject) {
|
|
@@ -232,7 +233,7 @@ if (FORCED) {
|
|
|
232
233
|
// 25.4.3.1 Promise(executor)
|
|
233
234
|
PromiseConstructor = function Promise(executor) {
|
|
234
235
|
anInstance(this, PromiseConstructor, PROMISE);
|
|
235
|
-
|
|
236
|
+
aCallable(executor);
|
|
236
237
|
Internal.call(this);
|
|
237
238
|
var state = getInternalState(this);
|
|
238
239
|
try {
|
|
@@ -261,8 +262,8 @@ if (FORCED) {
|
|
|
261
262
|
then: function then(onFulfilled, onRejected) {
|
|
262
263
|
var state = getInternalPromiseState(this);
|
|
263
264
|
var reaction = newPromiseCapability(speciesConstructor(this, PromiseConstructor));
|
|
264
|
-
reaction.ok =
|
|
265
|
-
reaction.fail =
|
|
265
|
+
reaction.ok = isCallable(onFulfilled) ? onFulfilled : true;
|
|
266
|
+
reaction.fail = isCallable(onRejected) && onRejected;
|
|
266
267
|
reaction.domain = IS_NODE ? process.domain : undefined;
|
|
267
268
|
state.parent = true;
|
|
268
269
|
state.reactions.push(reaction);
|
|
@@ -288,7 +289,7 @@ if (FORCED) {
|
|
|
288
289
|
: newGenericPromiseCapability(C);
|
|
289
290
|
};
|
|
290
291
|
|
|
291
|
-
if (!IS_PURE &&
|
|
292
|
+
if (!IS_PURE && isCallable(NativePromise) && NativePromisePrototype !== Object.prototype) {
|
|
292
293
|
nativeThen = NativePromisePrototype.then;
|
|
293
294
|
|
|
294
295
|
if (!SUBCLASSING) {
|
|
@@ -354,7 +355,7 @@ $({ target: PROMISE, stat: true, forced: INCORRECT_ITERATION }, {
|
|
|
354
355
|
var resolve = capability.resolve;
|
|
355
356
|
var reject = capability.reject;
|
|
356
357
|
var result = perform(function () {
|
|
357
|
-
var $promiseResolve =
|
|
358
|
+
var $promiseResolve = aCallable(C.resolve);
|
|
358
359
|
var values = [];
|
|
359
360
|
var counter = 0;
|
|
360
361
|
var remaining = 1;
|
|
@@ -382,7 +383,7 @@ $({ target: PROMISE, stat: true, forced: INCORRECT_ITERATION }, {
|
|
|
382
383
|
var capability = newPromiseCapability(C);
|
|
383
384
|
var reject = capability.reject;
|
|
384
385
|
var result = perform(function () {
|
|
385
|
-
var $promiseResolve =
|
|
386
|
+
var $promiseResolve = aCallable(C.resolve);
|
|
386
387
|
iterate(iterable, function (promise) {
|
|
387
388
|
$promiseResolve.call(C, promise).then(capability.resolve, reject);
|
|
388
389
|
});
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
var $ = require('../internals/export');
|
|
2
2
|
var getBuiltIn = require('../internals/get-built-in');
|
|
3
|
-
var
|
|
3
|
+
var aCallable = require('../internals/a-callable');
|
|
4
4
|
var anObject = require('../internals/an-object');
|
|
5
5
|
var fails = require('../internals/fails');
|
|
6
6
|
|
|
@@ -16,7 +16,7 @@ var OPTIONAL_ARGUMENTS_LIST = !fails(function () {
|
|
|
16
16
|
// https://tc39.es/ecma262/#sec-reflect.apply
|
|
17
17
|
$({ target: 'Reflect', stat: true, forced: OPTIONAL_ARGUMENTS_LIST }, {
|
|
18
18
|
apply: function apply(target, thisArgument, argumentsList) {
|
|
19
|
-
|
|
19
|
+
aCallable(target);
|
|
20
20
|
anObject(argumentsList);
|
|
21
21
|
return nativeApply
|
|
22
22
|
? nativeApply(target, thisArgument, argumentsList)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
var $ = require('../internals/export');
|
|
2
2
|
var getBuiltIn = require('../internals/get-built-in');
|
|
3
|
-
var
|
|
3
|
+
var aConstructor = require('../internals/a-constructor');
|
|
4
4
|
var anObject = require('../internals/an-object');
|
|
5
5
|
var isObject = require('../internals/is-object');
|
|
6
6
|
var create = require('../internals/object-create');
|
|
@@ -24,9 +24,9 @@ var FORCED = NEW_TARGET_BUG || ARGS_BUG;
|
|
|
24
24
|
|
|
25
25
|
$({ target: 'Reflect', stat: true, forced: FORCED, sham: FORCED }, {
|
|
26
26
|
construct: function construct(Target, args /* , newTarget */) {
|
|
27
|
-
|
|
27
|
+
aConstructor(Target);
|
|
28
28
|
anObject(args);
|
|
29
|
-
var newTarget = arguments.length < 3 ? Target :
|
|
29
|
+
var newTarget = arguments.length < 3 ? Target : aConstructor(arguments[2]);
|
|
30
30
|
if (ARGS_BUG && !NEW_TARGET_BUG) return nativeConstruct(Target, args, newTarget);
|
|
31
31
|
if (Target == newTarget) {
|
|
32
32
|
// w/o altered newTarget, optimization for 0-4 arguments
|
|
@@ -11,7 +11,7 @@ var getFlags = require('../internals/regexp-flags');
|
|
|
11
11
|
var stickyHelpers = require('../internals/regexp-sticky-helpers');
|
|
12
12
|
var redefine = require('../internals/redefine');
|
|
13
13
|
var fails = require('../internals/fails');
|
|
14
|
-
var
|
|
14
|
+
var hasOwn = require('../internals/has-own-property');
|
|
15
15
|
var enforceInternalState = require('../internals/internal-state').enforce;
|
|
16
16
|
var setSpecies = require('../internals/set-species');
|
|
17
17
|
var wellKnownSymbol = require('../internals/well-known-symbol');
|
|
@@ -92,7 +92,7 @@ var handleNCG = function (string) {
|
|
|
92
92
|
groupid++;
|
|
93
93
|
continue;
|
|
94
94
|
case chr === '>' && ncg:
|
|
95
|
-
if (groupname === '' ||
|
|
95
|
+
if (groupname === '' || hasOwn(names, groupname)) {
|
|
96
96
|
throw new SyntaxError('Invalid capture group name');
|
|
97
97
|
}
|
|
98
98
|
names[groupname] = true;
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
// TODO: Remove from `core-js@4` since it's moved to entry points
|
|
3
3
|
require('../modules/es.regexp.exec');
|
|
4
4
|
var $ = require('../internals/export');
|
|
5
|
+
var isCallable = require('../internals/is-callable');
|
|
5
6
|
var isObject = require('../internals/is-object');
|
|
6
7
|
|
|
7
8
|
var DELEGATES_TO_EXEC = function () {
|
|
@@ -20,10 +21,9 @@ var nativeTest = /./.test;
|
|
|
20
21
|
// https://tc39.es/ecma262/#sec-regexp.prototype.test
|
|
21
22
|
$({ target: 'RegExp', proto: true, forced: !DELEGATES_TO_EXEC }, {
|
|
22
23
|
test: function (str) {
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
var result = this.exec(str);
|
|
24
|
+
var exec = this.exec;
|
|
25
|
+
if (!isCallable(exec)) return nativeTest.call(this, str);
|
|
26
|
+
var result = exec.call(this, str);
|
|
27
27
|
if (result !== null && !isObject(result)) {
|
|
28
28
|
throw new Error('RegExp exec method returned something other than an Object or null');
|
|
29
29
|
}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
'use strict';
|
|
2
|
+
var PROPER_FUNCTION_NAME = require('../internals/function-name').PROPER;
|
|
2
3
|
var redefine = require('../internals/redefine');
|
|
3
4
|
var anObject = require('../internals/an-object');
|
|
4
5
|
var $toString = require('../internals/to-string');
|
|
@@ -11,7 +12,7 @@ var nativeToString = RegExpPrototype[TO_STRING];
|
|
|
11
12
|
|
|
12
13
|
var NOT_GENERIC = fails(function () { return nativeToString.call({ source: 'a', flags: 'b' }) != '/a/b'; });
|
|
13
14
|
// FF44- RegExp#toString has a wrong name
|
|
14
|
-
var INCORRECT_NAME = nativeToString.name != TO_STRING;
|
|
15
|
+
var INCORRECT_NAME = PROPER_FUNCTION_NAME && nativeToString.name != TO_STRING;
|
|
15
16
|
|
|
16
17
|
// `RegExp.prototype.toString` method
|
|
17
18
|
// https://tc39.es/ecma262/#sec-regexp.prototype.tostring
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
var $ = require('../internals/export');
|
|
3
3
|
var requireObjectCoercible = require('../internals/require-object-coercible');
|
|
4
|
-
var
|
|
5
|
-
var toLength = require('../internals/to-length');
|
|
4
|
+
var toIntegerOrInfinity = require('../internals/to-integer-or-infinity');
|
|
6
5
|
var toString = require('../internals/to-string');
|
|
7
6
|
var fails = require('../internals/fails');
|
|
8
7
|
|
|
@@ -15,8 +14,8 @@ var FORCED = fails(function () {
|
|
|
15
14
|
$({ target: 'String', proto: true, forced: FORCED }, {
|
|
16
15
|
at: function at(index) {
|
|
17
16
|
var S = toString(requireObjectCoercible(this));
|
|
18
|
-
var len =
|
|
19
|
-
var relativeIndex =
|
|
17
|
+
var len = S.length;
|
|
18
|
+
var relativeIndex = toIntegerOrInfinity(index);
|
|
20
19
|
var k = relativeIndex >= 0 ? relativeIndex : len + relativeIndex;
|
|
21
20
|
return (k < 0 || k >= len) ? undefined : S.charAt(k);
|
|
22
21
|
}
|
|
@@ -26,7 +26,7 @@ $({ target: 'String', proto: true, forced: !MDN_POLYFILL_BUG && !CORRECT_IS_REGE
|
|
|
26
26
|
var that = toString(requireObjectCoercible(this));
|
|
27
27
|
notARegExp(searchString);
|
|
28
28
|
var endPosition = arguments.length > 1 ? arguments[1] : undefined;
|
|
29
|
-
var len =
|
|
29
|
+
var len = that.length;
|
|
30
30
|
var end = endPosition === undefined ? len : min(toLength(endPosition), len);
|
|
31
31
|
var search = toString(searchString);
|
|
32
32
|
return $endsWith
|
|
@@ -5,16 +5,17 @@ var createIteratorConstructor = require('../internals/create-iterator-constructo
|
|
|
5
5
|
var requireObjectCoercible = require('../internals/require-object-coercible');
|
|
6
6
|
var toLength = require('../internals/to-length');
|
|
7
7
|
var toString = require('../internals/to-string');
|
|
8
|
-
var aFunction = require('../internals/a-function');
|
|
9
8
|
var anObject = require('../internals/an-object');
|
|
10
9
|
var classof = require('../internals/classof-raw');
|
|
11
10
|
var isRegExp = require('../internals/is-regexp');
|
|
12
11
|
var getRegExpFlags = require('../internals/regexp-flags');
|
|
13
|
-
var
|
|
12
|
+
var getMethod = require('../internals/get-method');
|
|
13
|
+
var redefine = require('../internals/redefine');
|
|
14
14
|
var fails = require('../internals/fails');
|
|
15
15
|
var wellKnownSymbol = require('../internals/well-known-symbol');
|
|
16
16
|
var speciesConstructor = require('../internals/species-constructor');
|
|
17
17
|
var advanceStringIndex = require('../internals/advance-string-index');
|
|
18
|
+
var regExpExec = require('../internals/regexp-exec-abstract');
|
|
18
19
|
var InternalStateModule = require('../internals/internal-state');
|
|
19
20
|
var IS_PURE = require('../internals/is-pure');
|
|
20
21
|
|
|
@@ -24,23 +25,12 @@ var REGEXP_STRING_ITERATOR = REGEXP_STRING + ' Iterator';
|
|
|
24
25
|
var setInternalState = InternalStateModule.set;
|
|
25
26
|
var getInternalState = InternalStateModule.getterFor(REGEXP_STRING_ITERATOR);
|
|
26
27
|
var RegExpPrototype = RegExp.prototype;
|
|
27
|
-
var regExpBuiltinExec = RegExpPrototype.exec;
|
|
28
28
|
var nativeMatchAll = ''.matchAll;
|
|
29
29
|
|
|
30
30
|
var WORKS_WITH_NON_GLOBAL_REGEX = !!nativeMatchAll && !fails(function () {
|
|
31
31
|
'a'.matchAll(/./);
|
|
32
32
|
});
|
|
33
33
|
|
|
34
|
-
var regExpExec = function (R, S) {
|
|
35
|
-
var exec = R.exec;
|
|
36
|
-
var result;
|
|
37
|
-
if (typeof exec == 'function') {
|
|
38
|
-
result = exec.call(R, S);
|
|
39
|
-
if (typeof result != 'object') throw TypeError('Incorrect exec result');
|
|
40
|
-
return result;
|
|
41
|
-
} return regExpBuiltinExec.call(R, S);
|
|
42
|
-
};
|
|
43
|
-
|
|
44
34
|
// eslint-disable-next-line max-len -- ignore
|
|
45
35
|
var $RegExpStringIterator = createIteratorConstructor(function RegExpStringIterator(regexp, string, global, fullUnicode) {
|
|
46
36
|
setInternalState(this, {
|
|
@@ -98,9 +88,9 @@ $({ target: 'String', proto: true, forced: WORKS_WITH_NON_GLOBAL_REGEX }, {
|
|
|
98
88
|
if (!~flags.indexOf('g')) throw TypeError('`.matchAll` does not allow non-global regexes');
|
|
99
89
|
}
|
|
100
90
|
if (WORKS_WITH_NON_GLOBAL_REGEX) return nativeMatchAll.apply(O, arguments);
|
|
101
|
-
matcher = regexp
|
|
91
|
+
matcher = getMethod(regexp, MATCH_ALL);
|
|
102
92
|
if (matcher === undefined && IS_PURE && classof(regexp) == 'RegExp') matcher = $matchAll;
|
|
103
|
-
if (matcher
|
|
93
|
+
if (matcher) return matcher.call(regexp, O);
|
|
104
94
|
} else if (WORKS_WITH_NON_GLOBAL_REGEX) return nativeMatchAll.apply(O, arguments);
|
|
105
95
|
S = toString(O);
|
|
106
96
|
rx = new RegExp(regexp, 'g');
|
|
@@ -108,4 +98,4 @@ $({ target: 'String', proto: true, forced: WORKS_WITH_NON_GLOBAL_REGEX }, {
|
|
|
108
98
|
}
|
|
109
99
|
});
|
|
110
100
|
|
|
111
|
-
IS_PURE || MATCH_ALL in RegExpPrototype ||
|
|
101
|
+
IS_PURE || MATCH_ALL in RegExpPrototype || redefine(RegExpPrototype, MATCH_ALL, $matchAll);
|
|
@@ -4,6 +4,7 @@ var anObject = require('../internals/an-object');
|
|
|
4
4
|
var toLength = require('../internals/to-length');
|
|
5
5
|
var toString = require('../internals/to-string');
|
|
6
6
|
var requireObjectCoercible = require('../internals/require-object-coercible');
|
|
7
|
+
var getMethod = require('../internals/get-method');
|
|
7
8
|
var advanceStringIndex = require('../internals/advance-string-index');
|
|
8
9
|
var regExpExec = require('../internals/regexp-exec-abstract');
|
|
9
10
|
|
|
@@ -14,8 +15,8 @@ fixRegExpWellKnownSymbolLogic('match', function (MATCH, nativeMatch, maybeCallNa
|
|
|
14
15
|
// https://tc39.es/ecma262/#sec-string.prototype.match
|
|
15
16
|
function match(regexp) {
|
|
16
17
|
var O = requireObjectCoercible(this);
|
|
17
|
-
var matcher = regexp == undefined ? undefined : regexp
|
|
18
|
-
return matcher
|
|
18
|
+
var matcher = regexp == undefined ? undefined : getMethod(regexp, MATCH);
|
|
19
|
+
return matcher ? matcher.call(regexp, O) : new RegExp(regexp)[MATCH](toString(O));
|
|
19
20
|
},
|
|
20
21
|
// `RegExp.prototype[@@match]` method
|
|
21
22
|
// https://tc39.es/ecma262/#sec-regexp.prototype-@@match
|