core-js 3.18.2 → 3.19.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/es/date/to-primitive.js +2 -3
- package/es/date/to-string.js +2 -4
- package/es/instance/at.js +6 -5
- package/es/instance/bind.js +3 -2
- package/es/instance/code-point-at.js +4 -3
- package/es/instance/concat.js +3 -2
- package/es/instance/copy-within.js +3 -2
- package/es/instance/ends-with.js +4 -3
- package/es/instance/entries.js +3 -2
- package/es/instance/every.js +3 -2
- package/es/instance/fill.js +3 -2
- package/es/instance/filter.js +3 -2
- package/es/instance/find-index.js +3 -2
- package/es/instance/find.js +3 -2
- package/es/instance/flags.js +2 -1
- package/es/instance/flat-map.js +3 -2
- package/es/instance/flat.js +3 -2
- package/es/instance/for-each.js +3 -2
- package/es/instance/includes.js +6 -5
- package/es/instance/index-of.js +3 -2
- package/es/instance/keys.js +3 -2
- package/es/instance/last-index-of.js +3 -2
- package/es/instance/map.js +3 -2
- package/es/instance/match-all.js +4 -3
- package/es/instance/pad-end.js +4 -3
- package/es/instance/pad-start.js +4 -3
- package/es/instance/reduce-right.js +3 -2
- package/es/instance/reduce.js +3 -2
- package/es/instance/repeat.js +4 -3
- package/es/instance/replace-all.js +4 -3
- package/es/instance/reverse.js +3 -2
- package/es/instance/slice.js +3 -2
- package/es/instance/some.js +3 -2
- package/es/instance/sort.js +3 -2
- package/es/instance/splice.js +3 -2
- package/es/instance/starts-with.js +4 -3
- package/es/instance/trim-end.js +4 -3
- package/es/instance/trim-left.js +4 -3
- package/es/instance/trim-right.js +4 -3
- package/es/instance/trim-start.js +4 -3
- package/es/instance/trim.js +4 -3
- package/es/instance/values.js +3 -2
- package/es/json/stringify.js +4 -3
- package/es/promise/all-settled.js +2 -1
- package/es/promise/any.js +2 -1
- package/es/regexp/flags.js +3 -4
- package/es/regexp/match.js +2 -1
- package/es/regexp/replace.js +2 -1
- package/es/regexp/search.js +2 -1
- package/es/regexp/split.js +2 -1
- package/es/regexp/test.js +2 -3
- package/es/regexp/to-string.js +2 -3
- package/es/string/iterator.js +2 -5
- package/features/instance/at.js +6 -5
- package/features/instance/code-points.js +4 -3
- package/features/instance/filter-out.js +3 -2
- package/features/instance/filter-reject.js +3 -2
- package/features/instance/find-last-index.js +3 -2
- package/features/instance/find-last.js +3 -2
- package/features/instance/group-by.js +3 -2
- package/features/instance/unique-by.js +3 -2
- package/features/map/from.js +3 -2
- package/features/map/group-by.js +2 -1
- package/features/map/key-by.js +2 -1
- package/features/map/of.js +3 -2
- package/features/promise/try.js +2 -1
- package/features/set/from.js +3 -2
- package/features/set/of.js +3 -2
- package/features/weak-map/from.js +3 -2
- package/features/weak-map/of.js +3 -2
- package/features/weak-set/from.js +3 -2
- package/features/weak-set/of.js +3 -2
- package/internals/a-callable.js +3 -0
- package/internals/a-constructor.js +3 -0
- package/internals/a-possible-prototype.js +5 -1
- package/internals/an-instance.js +8 -3
- package/internals/an-object.js +4 -0
- package/internals/array-buffer-native.js +1 -1
- package/internals/array-buffer-non-extensible.js +10 -0
- package/internals/array-buffer-view-core.js +3 -2
- package/internals/array-buffer.js +29 -16
- package/internals/array-from-async.js +1 -1
- package/internals/array-from.js +6 -2
- package/internals/array-group-by.js +6 -3
- package/internals/array-iteration-from-last.js +1 -1
- package/internals/array-iteration.js +5 -4
- package/internals/array-last-index-of.js +2 -1
- package/internals/array-reduce.js +3 -0
- package/internals/array-slice-simple.js +17 -0
- package/internals/array-slice.js +3 -0
- package/internals/array-sort.js +10 -11
- package/internals/array-species-constructor.js +2 -0
- package/internals/array-unique-by.js +13 -9
- package/internals/async-from-sync-iterator.js +4 -3
- package/internals/async-iterator-create-proxy.js +4 -3
- package/internals/async-iterator-iteration.js +5 -2
- package/internals/classof-raw.js +5 -2
- package/internals/classof.js +3 -0
- package/internals/clear-error-stack.js +20 -0
- package/internals/collection-add-all.js +3 -2
- package/internals/collection-delete-all.js +3 -2
- package/internals/collection-from.js +7 -4
- package/internals/collection-of.js +3 -4
- package/internals/collection-strong.js +11 -9
- package/internals/collection-weak.js +10 -6
- package/internals/collection.js +8 -7
- package/internals/composite-key.js +9 -2
- package/internals/create-html.js +3 -1
- package/internals/date-to-iso-string.js +23 -13
- package/internals/date-to-primitive.js +3 -0
- package/internals/define-iterator.js +2 -1
- package/internals/engine-v8-version.js +10 -4
- package/internals/entry-unbind.js +3 -5
- package/internals/error-stack-installable.js +10 -0
- package/internals/export.js +1 -1
- package/internals/fix-regexp-well-known-symbol-logic.js +5 -3
- package/internals/flatten-into-array.js +4 -1
- package/internals/function-apply.js +9 -0
- package/internals/function-bind-context.js +5 -17
- package/internals/function-bind.js +15 -9
- package/internals/function-call.js +5 -0
- package/internals/function-uncurry-this.js +12 -0
- package/internals/get-async-iterator.js +2 -1
- package/internals/get-iterator.js +7 -2
- package/internals/get-map-iterator.js +3 -1
- package/internals/get-set-iterator.js +3 -1
- package/internals/get-substitution.js +10 -7
- package/internals/has-own-property.js +3 -2
- package/internals/host-report-errors.js +1 -1
- package/internals/ieee754.js +24 -6
- package/internals/indexed-object.js +5 -2
- package/internals/inspect-source.js +3 -2
- package/internals/install-error-cause.js +1 -1
- package/internals/internal-metadata.js +4 -7
- package/internals/internal-state.js +9 -7
- package/internals/is-callable.js +1 -1
- package/internals/is-constructor.js +6 -4
- package/internals/is-iterable.js +4 -2
- package/internals/is-object.js +1 -1
- package/internals/is-symbol.js +6 -2
- package/internals/iterate.js +14 -6
- package/internals/iterator-close.js +2 -1
- package/internals/iterator-create-proxy.js +4 -3
- package/internals/map-emplace.js +8 -3
- package/internals/map-upsert.js +12 -4
- package/internals/math-scale.js +9 -12
- package/internals/microtask.js +6 -4
- package/internals/normalize-string-argument.js +5 -0
- package/internals/not-a-regexp.js +3 -0
- package/internals/number-parse-float.js +8 -6
- package/internals/number-parse-int.js +4 -2
- package/internals/numeric-range-iterator.js +4 -0
- package/internals/object-assign.js +5 -2
- package/internals/object-define-properties.js +3 -1
- package/internals/object-define-property.js +2 -0
- package/internals/object-get-own-property-descriptor.js +2 -1
- package/internals/object-get-own-property-names-external.js +4 -4
- package/internals/object-get-prototype-of.js +2 -1
- package/internals/object-is-extensible.js +16 -0
- package/internals/object-is-prototype-of.js +3 -0
- package/internals/object-keys-internal.js +5 -2
- package/internals/object-set-prototype-of.js +4 -3
- package/internals/object-to-array.js +7 -3
- package/internals/ordinary-to-primitive.js +7 -3
- package/internals/own-keys.js +4 -1
- package/internals/reflect-metadata.js +9 -3
- package/internals/regexp-exec-abstract.js +6 -2
- package/internals/regexp-exec.js +20 -16
- package/internals/regexp-sticky-helpers.js +14 -2
- package/internals/require-object-coercible.js +4 -0
- package/internals/set-global.js +4 -2
- package/internals/shared.js +1 -1
- package/internals/string-multibyte.js +13 -4
- package/internals/string-pad.js +6 -3
- package/internals/string-punycode-to-ascii.js +34 -20
- package/internals/string-repeat.js +3 -0
- package/internals/string-trim.js +4 -2
- package/internals/task.js +11 -11
- package/internals/this-number-value.js +2 -4
- package/internals/to-index.js +3 -0
- package/internals/to-object.js +3 -0
- package/internals/to-offset.js +3 -0
- package/internals/to-positive-integer.js +3 -0
- package/internals/to-primitive.js +4 -1
- package/internals/to-property-key.js +1 -1
- package/internals/to-string.js +3 -0
- package/internals/try-to-string.js +4 -0
- package/internals/typed-array-constructor.js +10 -6
- package/internals/typed-array-from.js +4 -3
- package/internals/uid.js +4 -1
- package/internals/well-known-symbol.js +5 -1
- package/modules/es.aggregate-error.js +27 -11
- package/modules/es.array-buffer.slice.js +8 -4
- package/modules/es.array.concat.js +2 -0
- package/modules/es.array.index-of.js +7 -5
- package/modules/es.array.join.js +3 -2
- package/modules/es.array.of.js +3 -1
- package/modules/es.array.reduce.js +2 -1
- package/modules/es.array.reverse.js +3 -2
- package/modules/es.array.slice.js +4 -2
- package/modules/es.array.sort.js +7 -4
- package/modules/es.array.splice.js +2 -0
- package/modules/es.date.get-year.js +3 -2
- package/modules/es.date.now.js +6 -1
- package/modules/es.date.set-year.js +6 -4
- package/modules/es.date.to-primitive.js +2 -1
- package/modules/es.date.to-string.js +5 -4
- package/modules/es.escape.js +12 -5
- package/modules/es.function.has-instance.js +3 -2
- package/modules/es.function.name.js +5 -3
- package/modules/es.json.stringify.js +18 -7
- package/modules/es.map.js +1 -1
- package/modules/es.number.constructor.js +12 -7
- package/modules/es.number.to-fixed.js +19 -13
- package/modules/es.number.to-precision.js +6 -5
- package/modules/es.object.is-extensible.js +4 -10
- package/modules/es.object.is-frozen.js +6 -2
- package/modules/es.object.is-sealed.js +6 -2
- package/modules/es.promise.all-settled.js +2 -2
- package/modules/es.promise.any.js +5 -4
- package/modules/es.promise.js +22 -18
- package/modules/es.reflect.apply.js +4 -10
- package/modules/es.reflect.construct.js +10 -5
- package/modules/es.reflect.get.js +2 -1
- package/modules/es.reflect.is-extensible.js +2 -4
- package/modules/es.reflect.set.js +2 -1
- package/modules/es.regexp.constructor.js +26 -16
- package/modules/es.regexp.dot-all.js +5 -1
- package/modules/es.regexp.flags.js +4 -2
- package/modules/es.regexp.sticky.js +7 -3
- package/modules/es.regexp.test.js +7 -3
- package/modules/es.regexp.to-string.js +8 -5
- package/modules/es.set.js +1 -1
- package/modules/es.string.at-alternative.js +4 -1
- package/modules/es.string.ends-with.js +6 -4
- package/modules/es.string.from-code-point.js +7 -4
- package/modules/es.string.includes.js +8 -2
- package/modules/es.string.match-all.js +25 -19
- package/modules/es.string.match.js +2 -1
- package/modules/es.string.raw.js +6 -6
- package/modules/es.string.replace-all.js +19 -13
- package/modules/es.string.replace.js +19 -12
- package/modules/es.string.search.js +2 -1
- package/modules/es.string.split.js +23 -16
- package/modules/es.string.starts-with.js +6 -4
- package/modules/es.string.substr.js +3 -2
- package/modules/es.symbol.description.js +20 -12
- package/modules/es.symbol.js +34 -21
- package/modules/es.typed-array.copy-within.js +4 -2
- package/modules/es.typed-array.fill.js +9 -2
- package/modules/es.typed-array.iterator.js +7 -6
- package/modules/es.typed-array.join.js +3 -3
- package/modules/es.typed-array.last-index-of.js +3 -2
- package/modules/es.typed-array.reduce-right.js +2 -1
- package/modules/es.typed-array.reduce.js +2 -1
- package/modules/es.typed-array.set.js +2 -0
- package/modules/es.typed-array.slice.js +2 -2
- package/modules/es.typed-array.sort.js +13 -28
- package/modules/es.typed-array.to-locale-string.js +7 -2
- package/modules/es.typed-array.to-string.js +3 -2
- package/modules/es.unescape.js +14 -9
- package/modules/es.weak-map.js +15 -15
- package/modules/esnext.array.is-template-object.js +1 -1
- package/modules/esnext.async-iterator.as-indexed-pairs.js +2 -1
- package/modules/esnext.async-iterator.constructor.js +1 -1
- package/modules/esnext.async-iterator.drop.js +2 -1
- package/modules/esnext.async-iterator.filter.js +2 -1
- package/modules/esnext.async-iterator.flat-map.js +3 -2
- package/modules/esnext.async-iterator.from.js +4 -4
- package/modules/esnext.async-iterator.map.js +2 -1
- package/modules/esnext.async-iterator.reduce.js +4 -1
- package/modules/esnext.async-iterator.take.js +4 -2
- package/modules/esnext.composite-key.js +5 -1
- package/modules/esnext.composite-symbol.js +3 -2
- package/modules/esnext.iterator.as-indexed-pairs.js +2 -1
- package/modules/esnext.iterator.constructor.js +1 -1
- package/modules/esnext.iterator.drop.js +4 -2
- package/modules/esnext.iterator.filter.js +2 -1
- package/modules/esnext.iterator.flat-map.js +7 -3
- package/modules/esnext.iterator.from.js +4 -4
- package/modules/esnext.iterator.map.js +2 -1
- package/modules/esnext.iterator.reduce.js +3 -0
- package/modules/esnext.iterator.take.js +2 -1
- package/modules/esnext.map.delete-all.js +2 -4
- package/modules/esnext.map.emplace.js +2 -2
- package/modules/esnext.map.every.js +1 -1
- package/modules/esnext.map.filter.js +5 -4
- package/modules/esnext.map.find-key.js +1 -1
- package/modules/esnext.map.find.js +1 -1
- package/modules/esnext.map.group-by.js +6 -2
- package/modules/esnext.map.includes.js +1 -1
- package/modules/esnext.map.key-by.js +2 -1
- package/modules/esnext.map.map-keys.js +5 -4
- package/modules/esnext.map.map-values.js +5 -4
- package/modules/esnext.map.reduce.js +3 -0
- package/modules/esnext.map.some.js +1 -1
- package/modules/esnext.map.update-or-insert.js +2 -2
- package/modules/esnext.map.update.js +11 -4
- package/modules/esnext.map.upsert.js +2 -2
- package/modules/esnext.math.seeded-prng.js +3 -1
- package/modules/esnext.number.from-string.js +12 -3
- package/modules/esnext.observable.js +14 -9
- package/modules/esnext.reflect.get-metadata-keys.js +5 -10
- package/modules/esnext.set.add-all.js +2 -4
- package/modules/esnext.set.delete-all.js +2 -4
- package/modules/esnext.set.difference.js +3 -2
- package/modules/esnext.set.every.js +1 -1
- package/modules/esnext.set.filter.js +4 -3
- package/modules/esnext.set.find.js +1 -1
- package/modules/esnext.set.intersection.js +3 -2
- package/modules/esnext.set.is-disjoint-from.js +3 -2
- package/modules/esnext.set.is-subset-of.js +3 -2
- package/modules/esnext.set.is-superset-of.js +3 -2
- package/modules/esnext.set.join.js +9 -4
- package/modules/esnext.set.map.js +5 -4
- package/modules/esnext.set.reduce.js +3 -0
- package/modules/esnext.set.some.js +1 -1
- package/modules/esnext.set.symmetric-difference.js +3 -2
- package/modules/esnext.typed-array.from-async.js +0 -1
- package/modules/esnext.typed-array.unique-by.js +4 -2
- package/modules/esnext.weak-map.delete-all.js +2 -4
- package/modules/esnext.weak-map.emplace.js +2 -2
- package/modules/esnext.weak-map.upsert.js +2 -2
- package/modules/esnext.weak-set.add-all.js +2 -4
- package/modules/esnext.weak-set.delete-all.js +2 -4
- package/modules/web.timers.js +5 -4
- package/modules/web.url-search-params.js +122 -104
- package/modules/web.url.js +664 -628
- package/modules/web.url.to-json.js +2 -1
- package/package.json +2 -2
- package/stable/instance/entries.js +6 -4
- package/stable/instance/for-each.js +6 -4
- package/stable/instance/keys.js +6 -4
- package/stable/instance/values.js +6 -4
package/modules/es.promise.js
CHANGED
|
@@ -3,6 +3,7 @@ var $ = require('../internals/export');
|
|
|
3
3
|
var IS_PURE = require('../internals/is-pure');
|
|
4
4
|
var global = require('../internals/global');
|
|
5
5
|
var getBuiltIn = require('../internals/get-built-in');
|
|
6
|
+
var call = require('../internals/function-call');
|
|
6
7
|
var NativePromise = require('../internals/native-promise-constructor');
|
|
7
8
|
var redefine = require('../internals/redefine');
|
|
8
9
|
var redefineAll = require('../internals/redefine-all');
|
|
@@ -32,17 +33,19 @@ var V8_VERSION = require('../internals/engine-v8-version');
|
|
|
32
33
|
|
|
33
34
|
var SPECIES = wellKnownSymbol('species');
|
|
34
35
|
var PROMISE = 'Promise';
|
|
36
|
+
|
|
35
37
|
var getInternalState = InternalStateModule.get;
|
|
36
38
|
var setInternalState = InternalStateModule.set;
|
|
37
39
|
var getInternalPromiseState = InternalStateModule.getterFor(PROMISE);
|
|
38
40
|
var NativePromisePrototype = NativePromise && NativePromise.prototype;
|
|
39
41
|
var PromiseConstructor = NativePromise;
|
|
40
|
-
var
|
|
42
|
+
var PromisePrototype = NativePromisePrototype;
|
|
41
43
|
var TypeError = global.TypeError;
|
|
42
44
|
var document = global.document;
|
|
43
45
|
var process = global.process;
|
|
44
46
|
var newPromiseCapability = newPromiseCapabilityModule.f;
|
|
45
47
|
var newGenericPromiseCapability = newPromiseCapability;
|
|
48
|
+
|
|
46
49
|
var DISPATCH_EVENT = !!(document && document.createEvent && global.dispatchEvent);
|
|
47
50
|
var NATIVE_REJECTION_EVENT = isCallable(global.PromiseRejectionEvent);
|
|
48
51
|
var UNHANDLED_REJECTION = 'unhandledrejection';
|
|
@@ -53,6 +56,7 @@ var REJECTED = 2;
|
|
|
53
56
|
var HANDLED = 1;
|
|
54
57
|
var UNHANDLED = 2;
|
|
55
58
|
var SUBCLASSING = false;
|
|
59
|
+
|
|
56
60
|
var Internal, OwnPromiseCapability, PromiseWrapper, nativeThen;
|
|
57
61
|
|
|
58
62
|
var FORCED = isForced(PROMISE, function () {
|
|
@@ -63,7 +67,7 @@ var FORCED = isForced(PROMISE, function () {
|
|
|
63
67
|
// We can't detect it synchronously, so just check versions
|
|
64
68
|
if (!GLOBAL_CORE_JS_PROMISE && V8_VERSION === 66) return true;
|
|
65
69
|
// We need Promise#finally in the pure version for preventing prototype pollution
|
|
66
|
-
if (IS_PURE && !
|
|
70
|
+
if (IS_PURE && !PromisePrototype['finally']) return true;
|
|
67
71
|
// We can't use @@species feature detection in V8 since it causes
|
|
68
72
|
// deoptimization and performance degradation
|
|
69
73
|
// https://github.com/zloirock/core-js/issues/679
|
|
@@ -125,7 +129,7 @@ var notify = function (state, isReject) {
|
|
|
125
129
|
if (result === reaction.promise) {
|
|
126
130
|
reject(TypeError('Promise-chain cycle'));
|
|
127
131
|
} else if (then = isThenable(result)) {
|
|
128
|
-
|
|
132
|
+
call(then, result, resolve, reject);
|
|
129
133
|
} else resolve(result);
|
|
130
134
|
} else reject(value);
|
|
131
135
|
} catch (error) {
|
|
@@ -153,7 +157,7 @@ var dispatchEvent = function (name, promise, reason) {
|
|
|
153
157
|
};
|
|
154
158
|
|
|
155
159
|
var onUnhandled = function (state) {
|
|
156
|
-
|
|
160
|
+
call(task, global, function () {
|
|
157
161
|
var promise = state.facade;
|
|
158
162
|
var value = state.value;
|
|
159
163
|
var IS_UNHANDLED = isUnhandled(state);
|
|
@@ -176,7 +180,7 @@ var isUnhandled = function (state) {
|
|
|
176
180
|
};
|
|
177
181
|
|
|
178
182
|
var onHandleUnhandled = function (state) {
|
|
179
|
-
|
|
183
|
+
call(task, global, function () {
|
|
180
184
|
var promise = state.facade;
|
|
181
185
|
if (IS_NODE) {
|
|
182
186
|
process.emit('rejectionHandled', promise);
|
|
@@ -210,7 +214,7 @@ var internalResolve = function (state, value, unwrap) {
|
|
|
210
214
|
microtask(function () {
|
|
211
215
|
var wrapper = { done: false };
|
|
212
216
|
try {
|
|
213
|
-
|
|
217
|
+
call(then, value,
|
|
214
218
|
bind(internalResolve, wrapper, state),
|
|
215
219
|
bind(internalReject, wrapper, state)
|
|
216
220
|
);
|
|
@@ -232,9 +236,9 @@ var internalResolve = function (state, value, unwrap) {
|
|
|
232
236
|
if (FORCED) {
|
|
233
237
|
// 25.4.3.1 Promise(executor)
|
|
234
238
|
PromiseConstructor = function Promise(executor) {
|
|
235
|
-
anInstance(this,
|
|
239
|
+
anInstance(this, PromisePrototype);
|
|
236
240
|
aCallable(executor);
|
|
237
|
-
|
|
241
|
+
call(Internal, this);
|
|
238
242
|
var state = getInternalState(this);
|
|
239
243
|
try {
|
|
240
244
|
executor(bind(internalResolve, state), bind(internalReject, state));
|
|
@@ -242,7 +246,7 @@ if (FORCED) {
|
|
|
242
246
|
internalReject(state, error);
|
|
243
247
|
}
|
|
244
248
|
};
|
|
245
|
-
|
|
249
|
+
PromisePrototype = PromiseConstructor.prototype;
|
|
246
250
|
// eslint-disable-next-line no-unused-vars -- required for `.length`
|
|
247
251
|
Internal = function Promise(executor) {
|
|
248
252
|
setInternalState(this, {
|
|
@@ -256,17 +260,18 @@ if (FORCED) {
|
|
|
256
260
|
value: undefined
|
|
257
261
|
});
|
|
258
262
|
};
|
|
259
|
-
Internal.prototype = redefineAll(
|
|
263
|
+
Internal.prototype = redefineAll(PromisePrototype, {
|
|
260
264
|
// `Promise.prototype.then` method
|
|
261
265
|
// https://tc39.es/ecma262/#sec-promise.prototype.then
|
|
262
266
|
then: function then(onFulfilled, onRejected) {
|
|
263
267
|
var state = getInternalPromiseState(this);
|
|
268
|
+
var reactions = state.reactions;
|
|
264
269
|
var reaction = newPromiseCapability(speciesConstructor(this, PromiseConstructor));
|
|
265
270
|
reaction.ok = isCallable(onFulfilled) ? onFulfilled : true;
|
|
266
271
|
reaction.fail = isCallable(onRejected) && onRejected;
|
|
267
272
|
reaction.domain = IS_NODE ? process.domain : undefined;
|
|
268
273
|
state.parent = true;
|
|
269
|
-
|
|
274
|
+
reactions[reactions.length] = reaction;
|
|
270
275
|
if (state.state != PENDING) notify(state, false);
|
|
271
276
|
return reaction.promise;
|
|
272
277
|
},
|
|
@@ -297,13 +302,13 @@ if (FORCED) {
|
|
|
297
302
|
redefine(NativePromisePrototype, 'then', function then(onFulfilled, onRejected) {
|
|
298
303
|
var that = this;
|
|
299
304
|
return new PromiseConstructor(function (resolve, reject) {
|
|
300
|
-
|
|
305
|
+
call(nativeThen, that, resolve, reject);
|
|
301
306
|
}).then(onFulfilled, onRejected);
|
|
302
307
|
// https://github.com/zloirock/core-js/issues/640
|
|
303
308
|
}, { unsafe: true });
|
|
304
309
|
|
|
305
310
|
// makes sure that native promise-based APIs `Promise#catch` properly works with patched `Promise#then`
|
|
306
|
-
redefine(NativePromisePrototype, 'catch',
|
|
311
|
+
redefine(NativePromisePrototype, 'catch', PromisePrototype['catch'], { unsafe: true });
|
|
307
312
|
}
|
|
308
313
|
|
|
309
314
|
// make `.constructor === Promise` work for native promise-based APIs
|
|
@@ -313,7 +318,7 @@ if (FORCED) {
|
|
|
313
318
|
|
|
314
319
|
// make `instanceof Promise` work for native promise-based APIs
|
|
315
320
|
if (setPrototypeOf) {
|
|
316
|
-
setPrototypeOf(NativePromisePrototype,
|
|
321
|
+
setPrototypeOf(NativePromisePrototype, PromisePrototype);
|
|
317
322
|
}
|
|
318
323
|
}
|
|
319
324
|
}
|
|
@@ -333,7 +338,7 @@ $({ target: PROMISE, stat: true, forced: FORCED }, {
|
|
|
333
338
|
// https://tc39.es/ecma262/#sec-promise.reject
|
|
334
339
|
reject: function reject(r) {
|
|
335
340
|
var capability = newPromiseCapability(this);
|
|
336
|
-
capability.reject
|
|
341
|
+
call(capability.reject, undefined, r);
|
|
337
342
|
return capability.promise;
|
|
338
343
|
}
|
|
339
344
|
});
|
|
@@ -362,9 +367,8 @@ $({ target: PROMISE, stat: true, forced: INCORRECT_ITERATION }, {
|
|
|
362
367
|
iterate(iterable, function (promise) {
|
|
363
368
|
var index = counter++;
|
|
364
369
|
var alreadyCalled = false;
|
|
365
|
-
values.push(undefined);
|
|
366
370
|
remaining++;
|
|
367
|
-
$promiseResolve
|
|
371
|
+
call($promiseResolve, C, promise).then(function (value) {
|
|
368
372
|
if (alreadyCalled) return;
|
|
369
373
|
alreadyCalled = true;
|
|
370
374
|
values[index] = value;
|
|
@@ -385,7 +389,7 @@ $({ target: PROMISE, stat: true, forced: INCORRECT_ITERATION }, {
|
|
|
385
389
|
var result = perform(function () {
|
|
386
390
|
var $promiseResolve = aCallable(C.resolve);
|
|
387
391
|
iterate(iterable, function (promise) {
|
|
388
|
-
$promiseResolve
|
|
392
|
+
call($promiseResolve, C, promise).then(capability.resolve, reject);
|
|
389
393
|
});
|
|
390
394
|
});
|
|
391
395
|
if (result.error) reject(result.value);
|
|
@@ -1,25 +1,19 @@
|
|
|
1
1
|
var $ = require('../internals/export');
|
|
2
|
-
var
|
|
2
|
+
var functionApply = require('../internals/function-apply');
|
|
3
3
|
var aCallable = require('../internals/a-callable');
|
|
4
4
|
var anObject = require('../internals/an-object');
|
|
5
5
|
var fails = require('../internals/fails');
|
|
6
6
|
|
|
7
|
-
var nativeApply = getBuiltIn('Reflect', 'apply');
|
|
8
|
-
var functionApply = Function.apply;
|
|
9
|
-
|
|
10
7
|
// MS Edge argumentsList argument is optional
|
|
11
8
|
var OPTIONAL_ARGUMENTS_LIST = !fails(function () {
|
|
12
|
-
|
|
9
|
+
// eslint-disable-next-line es/no-reflect -- required for testing
|
|
10
|
+
Reflect.apply(function () { /* empty */ });
|
|
13
11
|
});
|
|
14
12
|
|
|
15
13
|
// `Reflect.apply` method
|
|
16
14
|
// https://tc39.es/ecma262/#sec-reflect.apply
|
|
17
15
|
$({ target: 'Reflect', stat: true, forced: OPTIONAL_ARGUMENTS_LIST }, {
|
|
18
16
|
apply: function apply(target, thisArgument, argumentsList) {
|
|
19
|
-
aCallable(target);
|
|
20
|
-
anObject(argumentsList);
|
|
21
|
-
return nativeApply
|
|
22
|
-
? nativeApply(target, thisArgument, argumentsList)
|
|
23
|
-
: functionApply.call(target, thisArgument, argumentsList);
|
|
17
|
+
return functionApply(aCallable(target), thisArgument, anObject(argumentsList));
|
|
24
18
|
}
|
|
25
19
|
});
|
|
@@ -1,13 +1,16 @@
|
|
|
1
1
|
var $ = require('../internals/export');
|
|
2
2
|
var getBuiltIn = require('../internals/get-built-in');
|
|
3
|
+
var apply = require('../internals/function-apply');
|
|
4
|
+
var bind = require('../internals/function-bind');
|
|
3
5
|
var aConstructor = require('../internals/a-constructor');
|
|
4
6
|
var anObject = require('../internals/an-object');
|
|
5
7
|
var isObject = require('../internals/is-object');
|
|
6
8
|
var create = require('../internals/object-create');
|
|
7
|
-
var bind = require('../internals/function-bind');
|
|
8
9
|
var fails = require('../internals/fails');
|
|
9
10
|
|
|
10
11
|
var nativeConstruct = getBuiltIn('Reflect', 'construct');
|
|
12
|
+
var ObjectPrototype = Object.prototype;
|
|
13
|
+
var push = [].push;
|
|
11
14
|
|
|
12
15
|
// `Reflect.construct` method
|
|
13
16
|
// https://tc39.es/ecma262/#sec-reflect.construct
|
|
@@ -17,9 +20,11 @@ var NEW_TARGET_BUG = fails(function () {
|
|
|
17
20
|
function F() { /* empty */ }
|
|
18
21
|
return !(nativeConstruct(function () { /* empty */ }, [], F) instanceof F);
|
|
19
22
|
});
|
|
23
|
+
|
|
20
24
|
var ARGS_BUG = !fails(function () {
|
|
21
25
|
nativeConstruct(function () { /* empty */ });
|
|
22
26
|
});
|
|
27
|
+
|
|
23
28
|
var FORCED = NEW_TARGET_BUG || ARGS_BUG;
|
|
24
29
|
|
|
25
30
|
$({ target: 'Reflect', stat: true, forced: FORCED, sham: FORCED }, {
|
|
@@ -39,13 +44,13 @@ $({ target: 'Reflect', stat: true, forced: FORCED, sham: FORCED }, {
|
|
|
39
44
|
}
|
|
40
45
|
// w/o altered newTarget, lot of arguments case
|
|
41
46
|
var $args = [null];
|
|
42
|
-
|
|
43
|
-
return new (
|
|
47
|
+
apply(push, $args, args);
|
|
48
|
+
return new (apply(bind, Target, $args))();
|
|
44
49
|
}
|
|
45
50
|
// with altered newTarget, not support built-in constructors
|
|
46
51
|
var proto = newTarget.prototype;
|
|
47
|
-
var instance = create(isObject(proto) ? proto :
|
|
48
|
-
var result =
|
|
52
|
+
var instance = create(isObject(proto) ? proto : ObjectPrototype);
|
|
53
|
+
var result = apply(Target, instance, args);
|
|
49
54
|
return isObject(result) ? result : instance;
|
|
50
55
|
}
|
|
51
56
|
});
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
var $ = require('../internals/export');
|
|
2
|
+
var call = require('../internals/function-call');
|
|
2
3
|
var isObject = require('../internals/is-object');
|
|
3
4
|
var anObject = require('../internals/an-object');
|
|
4
5
|
var isDataDescriptor = require('../internals/is-data-descriptor');
|
|
@@ -14,7 +15,7 @@ function get(target, propertyKey /* , receiver */) {
|
|
|
14
15
|
descriptor = getOwnPropertyDescriptorModule.f(target, propertyKey);
|
|
15
16
|
if (descriptor) return isDataDescriptor(descriptor)
|
|
16
17
|
? descriptor.value
|
|
17
|
-
: descriptor.get === undefined ? undefined : descriptor.get
|
|
18
|
+
: descriptor.get === undefined ? undefined : call(descriptor.get, receiver);
|
|
18
19
|
if (isObject(prototype = getPrototypeOf(target))) return get(prototype, propertyKey, receiver);
|
|
19
20
|
}
|
|
20
21
|
|
|
@@ -1,14 +1,12 @@
|
|
|
1
1
|
var $ = require('../internals/export');
|
|
2
2
|
var anObject = require('../internals/an-object');
|
|
3
|
-
|
|
4
|
-
// eslint-disable-next-line es/no-object-isextensible -- safe
|
|
5
|
-
var objectIsExtensible = Object.isExtensible;
|
|
3
|
+
var $isExtensible = require('../internals/object-is-extensible');
|
|
6
4
|
|
|
7
5
|
// `Reflect.isExtensible` method
|
|
8
6
|
// https://tc39.es/ecma262/#sec-reflect.isextensible
|
|
9
7
|
$({ target: 'Reflect', stat: true }, {
|
|
10
8
|
isExtensible: function isExtensible(target) {
|
|
11
9
|
anObject(target);
|
|
12
|
-
return
|
|
10
|
+
return $isExtensible(target);
|
|
13
11
|
}
|
|
14
12
|
});
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
var $ = require('../internals/export');
|
|
2
|
+
var call = require('../internals/function-call');
|
|
2
3
|
var anObject = require('../internals/an-object');
|
|
3
4
|
var isObject = require('../internals/is-object');
|
|
4
5
|
var isDataDescriptor = require('../internals/is-data-descriptor');
|
|
@@ -30,7 +31,7 @@ function set(target, propertyKey, V /* , receiver */) {
|
|
|
30
31
|
} else {
|
|
31
32
|
setter = ownDescriptor.set;
|
|
32
33
|
if (setter === undefined) return false;
|
|
33
|
-
|
|
34
|
+
call(setter, receiver, V);
|
|
34
35
|
} return true;
|
|
35
36
|
}
|
|
36
37
|
|
|
@@ -1,13 +1,15 @@
|
|
|
1
1
|
var DESCRIPTORS = require('../internals/descriptors');
|
|
2
2
|
var global = require('../internals/global');
|
|
3
|
+
var uncurryThis = require('../internals/function-uncurry-this');
|
|
3
4
|
var isForced = require('../internals/is-forced');
|
|
4
5
|
var inheritIfRequired = require('../internals/inherit-if-required');
|
|
5
6
|
var createNonEnumerableProperty = require('../internals/create-non-enumerable-property');
|
|
6
7
|
var defineProperty = require('../internals/object-define-property').f;
|
|
7
8
|
var getOwnPropertyNames = require('../internals/object-get-own-property-names').f;
|
|
9
|
+
var isPrototypeOf = require('../internals/object-is-prototype-of');
|
|
8
10
|
var isRegExp = require('../internals/is-regexp');
|
|
9
11
|
var toString = require('../internals/to-string');
|
|
10
|
-
var
|
|
12
|
+
var regExpFlags = require('../internals/regexp-flags');
|
|
11
13
|
var stickyHelpers = require('../internals/regexp-sticky-helpers');
|
|
12
14
|
var redefine = require('../internals/redefine');
|
|
13
15
|
var fails = require('../internals/fails');
|
|
@@ -21,6 +23,13 @@ var UNSUPPORTED_NCG = require('../internals/regexp-unsupported-ncg');
|
|
|
21
23
|
var MATCH = wellKnownSymbol('match');
|
|
22
24
|
var NativeRegExp = global.RegExp;
|
|
23
25
|
var RegExpPrototype = NativeRegExp.prototype;
|
|
26
|
+
var SyntaxError = global.SyntaxError;
|
|
27
|
+
var getFlags = uncurryThis(regExpFlags);
|
|
28
|
+
var exec = uncurryThis(RegExpPrototype.exec);
|
|
29
|
+
var charAt = uncurryThis(''.charAt);
|
|
30
|
+
var replace = uncurryThis(''.replace);
|
|
31
|
+
var stringIndexOf = uncurryThis(''.indexOf);
|
|
32
|
+
var stringSlice = uncurryThis(''.slice);
|
|
24
33
|
// TODO: Use only propper RegExpIdentifierName
|
|
25
34
|
var IS_NCG = /^\?<[^\s\d!#%&*+<=>@^][^\s!#%&*+<=>@^]*>/;
|
|
26
35
|
var re1 = /a/g;
|
|
@@ -29,10 +38,11 @@ var re2 = /a/g;
|
|
|
29
38
|
// "new" should create a new object, old webkit bug
|
|
30
39
|
var CORRECT_NEW = new NativeRegExp(re1) !== re1;
|
|
31
40
|
|
|
41
|
+
var MISSED_STICKY = stickyHelpers.MISSED_STICKY;
|
|
32
42
|
var UNSUPPORTED_Y = stickyHelpers.UNSUPPORTED_Y;
|
|
33
43
|
|
|
34
44
|
var BASE_FORCED = DESCRIPTORS &&
|
|
35
|
-
(!CORRECT_NEW ||
|
|
45
|
+
(!CORRECT_NEW || MISSED_STICKY || UNSUPPORTED_DOT_ALL || UNSUPPORTED_NCG || fails(function () {
|
|
36
46
|
re2[MATCH] = false;
|
|
37
47
|
// RegExp constructor can alter flags and IsRegExp works correct with @@match
|
|
38
48
|
return NativeRegExp(re1) != re1 || NativeRegExp(re2) == re2 || NativeRegExp(re1, 'i') != '/a/i';
|
|
@@ -45,9 +55,9 @@ var handleDotAll = function (string) {
|
|
|
45
55
|
var brackets = false;
|
|
46
56
|
var chr;
|
|
47
57
|
for (; index <= length; index++) {
|
|
48
|
-
chr =
|
|
58
|
+
chr = charAt(string, index);
|
|
49
59
|
if (chr === '\\') {
|
|
50
|
-
result += chr +
|
|
60
|
+
result += chr + charAt(string, ++index);
|
|
51
61
|
continue;
|
|
52
62
|
}
|
|
53
63
|
if (!brackets && chr === '.') {
|
|
@@ -74,9 +84,9 @@ var handleNCG = function (string) {
|
|
|
74
84
|
var groupname = '';
|
|
75
85
|
var chr;
|
|
76
86
|
for (; index <= length; index++) {
|
|
77
|
-
chr =
|
|
87
|
+
chr = charAt(string, index);
|
|
78
88
|
if (chr === '\\') {
|
|
79
|
-
chr = chr +
|
|
89
|
+
chr = chr + charAt(string, ++index);
|
|
80
90
|
} else if (chr === ']') {
|
|
81
91
|
brackets = false;
|
|
82
92
|
} else if (!brackets) switch (true) {
|
|
@@ -84,7 +94,7 @@ var handleNCG = function (string) {
|
|
|
84
94
|
brackets = true;
|
|
85
95
|
break;
|
|
86
96
|
case chr === '(':
|
|
87
|
-
if (IS_NCG
|
|
97
|
+
if (exec(IS_NCG, stringSlice(string, index + 1))) {
|
|
88
98
|
index += 2;
|
|
89
99
|
ncg = true;
|
|
90
100
|
}
|
|
@@ -96,7 +106,7 @@ var handleNCG = function (string) {
|
|
|
96
106
|
throw new SyntaxError('Invalid capture group name');
|
|
97
107
|
}
|
|
98
108
|
names[groupname] = true;
|
|
99
|
-
named.
|
|
109
|
+
named[named.length] = [groupname, groupid];
|
|
100
110
|
ncg = false;
|
|
101
111
|
groupname = '';
|
|
102
112
|
continue;
|
|
@@ -110,7 +120,7 @@ var handleNCG = function (string) {
|
|
|
110
120
|
// https://tc39.es/ecma262/#sec-regexp-constructor
|
|
111
121
|
if (isForced('RegExp', BASE_FORCED)) {
|
|
112
122
|
var RegExpWrapper = function RegExp(pattern, flags) {
|
|
113
|
-
var thisIsRegExp = this
|
|
123
|
+
var thisIsRegExp = isPrototypeOf(RegExpPrototype, this);
|
|
114
124
|
var patternIsRegExp = isRegExp(pattern);
|
|
115
125
|
var flagsAreUndefined = flags === undefined;
|
|
116
126
|
var groups = [];
|
|
@@ -121,9 +131,9 @@ if (isForced('RegExp', BASE_FORCED)) {
|
|
|
121
131
|
return pattern;
|
|
122
132
|
}
|
|
123
133
|
|
|
124
|
-
if (patternIsRegExp || pattern
|
|
134
|
+
if (patternIsRegExp || isPrototypeOf(RegExpPrototype, pattern)) {
|
|
125
135
|
pattern = pattern.source;
|
|
126
|
-
if (flagsAreUndefined) flags = 'flags' in rawPattern ? rawPattern.flags : getFlags
|
|
136
|
+
if (flagsAreUndefined) flags = 'flags' in rawPattern ? rawPattern.flags : getFlags(rawPattern);
|
|
127
137
|
}
|
|
128
138
|
|
|
129
139
|
pattern = pattern === undefined ? '' : toString(pattern);
|
|
@@ -131,15 +141,15 @@ if (isForced('RegExp', BASE_FORCED)) {
|
|
|
131
141
|
rawPattern = pattern;
|
|
132
142
|
|
|
133
143
|
if (UNSUPPORTED_DOT_ALL && 'dotAll' in re1) {
|
|
134
|
-
dotAll = !!flags && flags
|
|
135
|
-
if (dotAll) flags =
|
|
144
|
+
dotAll = !!flags && stringIndexOf(flags, 's') > -1;
|
|
145
|
+
if (dotAll) flags = replace(flags, /s/g, '');
|
|
136
146
|
}
|
|
137
147
|
|
|
138
148
|
rawFlags = flags;
|
|
139
149
|
|
|
140
|
-
if (
|
|
141
|
-
sticky = !!flags && flags
|
|
142
|
-
if (sticky) flags =
|
|
150
|
+
if (MISSED_STICKY && 'sticky' in re1) {
|
|
151
|
+
sticky = !!flags && stringIndexOf(flags, 'y') > -1;
|
|
152
|
+
if (sticky && UNSUPPORTED_Y) flags = replace(flags, /y/g, '');
|
|
143
153
|
}
|
|
144
154
|
|
|
145
155
|
if (UNSUPPORTED_NCG) {
|
|
@@ -1,8 +1,12 @@
|
|
|
1
|
+
var global = require('../internals/global');
|
|
1
2
|
var DESCRIPTORS = require('../internals/descriptors');
|
|
2
3
|
var UNSUPPORTED_DOT_ALL = require('../internals/regexp-unsupported-dot-all');
|
|
4
|
+
var classof = require('../internals/classof-raw');
|
|
3
5
|
var defineProperty = require('../internals/object-define-property').f;
|
|
4
6
|
var getInternalState = require('../internals/internal-state').get;
|
|
7
|
+
|
|
5
8
|
var RegExpPrototype = RegExp.prototype;
|
|
9
|
+
var TypeError = global.TypeError;
|
|
6
10
|
|
|
7
11
|
// `RegExp.prototype.dotAll` getter
|
|
8
12
|
// https://tc39.es/ecma262/#sec-get-regexp.prototype.dotall
|
|
@@ -13,7 +17,7 @@ if (DESCRIPTORS && UNSUPPORTED_DOT_ALL) {
|
|
|
13
17
|
if (this === RegExpPrototype) return undefined;
|
|
14
18
|
// We can't use InternalStateModule.getterFor because
|
|
15
19
|
// we don't add metadata for regexps created by a literal.
|
|
16
|
-
if (this
|
|
20
|
+
if (classof(this) === 'RegExp') {
|
|
17
21
|
return !!getInternalState(this).dotAll;
|
|
18
22
|
}
|
|
19
23
|
throw TypeError('Incompatible receiver, RegExp required');
|
|
@@ -3,14 +3,16 @@ var objectDefinePropertyModule = require('../internals/object-define-property');
|
|
|
3
3
|
var regExpFlags = require('../internals/regexp-flags');
|
|
4
4
|
var fails = require('../internals/fails');
|
|
5
5
|
|
|
6
|
+
var RegExpPrototype = RegExp.prototype;
|
|
7
|
+
|
|
6
8
|
var FORCED = DESCRIPTORS && fails(function () {
|
|
7
9
|
// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe
|
|
8
|
-
return Object.getOwnPropertyDescriptor(
|
|
10
|
+
return Object.getOwnPropertyDescriptor(RegExpPrototype, 'flags').get.call({ dotAll: true, sticky: true }) !== 'sy';
|
|
9
11
|
});
|
|
10
12
|
|
|
11
13
|
// `RegExp.prototype.flags` getter
|
|
12
14
|
// https://tc39.es/ecma262/#sec-get-regexp.prototype.flags
|
|
13
|
-
if (FORCED) objectDefinePropertyModule.f(
|
|
15
|
+
if (FORCED) objectDefinePropertyModule.f(RegExpPrototype, 'flags', {
|
|
14
16
|
configurable: true,
|
|
15
17
|
get: regExpFlags
|
|
16
18
|
});
|
|
@@ -1,19 +1,23 @@
|
|
|
1
|
+
var global = require('../internals/global');
|
|
1
2
|
var DESCRIPTORS = require('../internals/descriptors');
|
|
2
|
-
var
|
|
3
|
+
var MISSED_STICKY = require('../internals/regexp-sticky-helpers').MISSED_STICKY;
|
|
4
|
+
var classof = require('../internals/classof-raw');
|
|
3
5
|
var defineProperty = require('../internals/object-define-property').f;
|
|
4
6
|
var getInternalState = require('../internals/internal-state').get;
|
|
7
|
+
|
|
5
8
|
var RegExpPrototype = RegExp.prototype;
|
|
9
|
+
var TypeError = global.TypeError;
|
|
6
10
|
|
|
7
11
|
// `RegExp.prototype.sticky` getter
|
|
8
12
|
// https://tc39.es/ecma262/#sec-get-regexp.prototype.sticky
|
|
9
|
-
if (DESCRIPTORS &&
|
|
13
|
+
if (DESCRIPTORS && MISSED_STICKY) {
|
|
10
14
|
defineProperty(RegExpPrototype, 'sticky', {
|
|
11
15
|
configurable: true,
|
|
12
16
|
get: function () {
|
|
13
17
|
if (this === RegExpPrototype) return undefined;
|
|
14
18
|
// We can't use InternalStateModule.getterFor because
|
|
15
19
|
// we don't add metadata for regexps created by a literal.
|
|
16
|
-
if (this
|
|
20
|
+
if (classof(this) === 'RegExp') {
|
|
17
21
|
return !!getInternalState(this).sticky;
|
|
18
22
|
}
|
|
19
23
|
throw TypeError('Incompatible receiver, RegExp required');
|
|
@@ -2,6 +2,9 @@
|
|
|
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 global = require('../internals/global');
|
|
6
|
+
var call = require('../internals/function-call');
|
|
7
|
+
var uncurryThis = require('../internals/function-uncurry-this');
|
|
5
8
|
var isCallable = require('../internals/is-callable');
|
|
6
9
|
var isObject = require('../internals/is-object');
|
|
7
10
|
|
|
@@ -15,15 +18,16 @@ var DELEGATES_TO_EXEC = function () {
|
|
|
15
18
|
return re.test('abc') === true && execCalled;
|
|
16
19
|
}();
|
|
17
20
|
|
|
18
|
-
var
|
|
21
|
+
var Error = global.Error;
|
|
22
|
+
var un$Test = uncurryThis(/./.test);
|
|
19
23
|
|
|
20
24
|
// `RegExp.prototype.test` method
|
|
21
25
|
// https://tc39.es/ecma262/#sec-regexp.prototype.test
|
|
22
26
|
$({ target: 'RegExp', proto: true, forced: !DELEGATES_TO_EXEC }, {
|
|
23
27
|
test: function (str) {
|
|
24
28
|
var exec = this.exec;
|
|
25
|
-
if (!isCallable(exec)) return
|
|
26
|
-
var result =
|
|
29
|
+
if (!isCallable(exec)) return un$Test(this, str);
|
|
30
|
+
var result = call(exec, this, str);
|
|
27
31
|
if (result !== null && !isObject(result)) {
|
|
28
32
|
throw new Error('RegExp exec method returned something other than an Object or null');
|
|
29
33
|
}
|
|
@@ -1,18 +1,21 @@
|
|
|
1
1
|
'use strict';
|
|
2
|
+
var uncurryThis = require('../internals/function-uncurry-this');
|
|
2
3
|
var PROPER_FUNCTION_NAME = require('../internals/function-name').PROPER;
|
|
3
4
|
var redefine = require('../internals/redefine');
|
|
4
5
|
var anObject = require('../internals/an-object');
|
|
6
|
+
var isPrototypeOf = require('../internals/object-is-prototype-of');
|
|
5
7
|
var $toString = require('../internals/to-string');
|
|
6
8
|
var fails = require('../internals/fails');
|
|
7
|
-
var
|
|
9
|
+
var regExpFlags = require('../internals/regexp-flags');
|
|
8
10
|
|
|
9
11
|
var TO_STRING = 'toString';
|
|
10
12
|
var RegExpPrototype = RegExp.prototype;
|
|
11
|
-
var
|
|
13
|
+
var n$ToString = RegExpPrototype[TO_STRING];
|
|
14
|
+
var getFlags = uncurryThis(regExpFlags);
|
|
12
15
|
|
|
13
|
-
var NOT_GENERIC = fails(function () { return
|
|
16
|
+
var NOT_GENERIC = fails(function () { return n$ToString.call({ source: 'a', flags: 'b' }) != '/a/b'; });
|
|
14
17
|
// FF44- RegExp#toString has a wrong name
|
|
15
|
-
var INCORRECT_NAME = PROPER_FUNCTION_NAME &&
|
|
18
|
+
var INCORRECT_NAME = PROPER_FUNCTION_NAME && n$ToString.name != TO_STRING;
|
|
16
19
|
|
|
17
20
|
// `RegExp.prototype.toString` method
|
|
18
21
|
// https://tc39.es/ecma262/#sec-regexp.prototype.tostring
|
|
@@ -21,7 +24,7 @@ if (NOT_GENERIC || INCORRECT_NAME) {
|
|
|
21
24
|
var R = anObject(this);
|
|
22
25
|
var p = $toString(R.source);
|
|
23
26
|
var rf = R.flags;
|
|
24
|
-
var f = $toString(rf === undefined && R
|
|
27
|
+
var f = $toString(rf === undefined && isPrototypeOf(RegExpPrototype, R) && !('flags' in RegExpPrototype) ? getFlags(R) : rf);
|
|
25
28
|
return '/' + p + '/' + f;
|
|
26
29
|
}, { unsafe: true });
|
|
27
30
|
}
|
package/modules/es.set.js
CHANGED
|
@@ -4,6 +4,6 @@ var collectionStrong = require('../internals/collection-strong');
|
|
|
4
4
|
|
|
5
5
|
// `Set` constructor
|
|
6
6
|
// https://tc39.es/ecma262/#sec-set-objects
|
|
7
|
-
|
|
7
|
+
collection('Set', function (init) {
|
|
8
8
|
return function Set() { return init(this, arguments.length ? arguments[0] : undefined); };
|
|
9
9
|
}, collectionStrong);
|
|
@@ -1,10 +1,13 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
var $ = require('../internals/export');
|
|
3
|
+
var uncurryThis = require('../internals/function-uncurry-this');
|
|
3
4
|
var requireObjectCoercible = require('../internals/require-object-coercible');
|
|
4
5
|
var toIntegerOrInfinity = require('../internals/to-integer-or-infinity');
|
|
5
6
|
var toString = require('../internals/to-string');
|
|
6
7
|
var fails = require('../internals/fails');
|
|
7
8
|
|
|
9
|
+
var charAt = uncurryThis(''.charAt);
|
|
10
|
+
|
|
8
11
|
var FORCED = fails(function () {
|
|
9
12
|
return '𠮷'.at(0) !== '\uD842';
|
|
10
13
|
});
|
|
@@ -17,6 +20,6 @@ $({ target: 'String', proto: true, forced: FORCED }, {
|
|
|
17
20
|
var len = S.length;
|
|
18
21
|
var relativeIndex = toIntegerOrInfinity(index);
|
|
19
22
|
var k = relativeIndex >= 0 ? relativeIndex : len + relativeIndex;
|
|
20
|
-
return (k < 0 || k >= len) ? undefined :
|
|
23
|
+
return (k < 0 || k >= len) ? undefined : charAt(S, k);
|
|
21
24
|
}
|
|
22
25
|
});
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
var $ = require('../internals/export');
|
|
3
|
+
var uncurryThis = require('../internals/function-uncurry-this');
|
|
3
4
|
var getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;
|
|
4
5
|
var toLength = require('../internals/to-length');
|
|
5
6
|
var toString = require('../internals/to-string');
|
|
@@ -9,7 +10,8 @@ var correctIsRegExpLogic = require('../internals/correct-is-regexp-logic');
|
|
|
9
10
|
var IS_PURE = require('../internals/is-pure');
|
|
10
11
|
|
|
11
12
|
// eslint-disable-next-line es/no-string-prototype-endswith -- safe
|
|
12
|
-
var $
|
|
13
|
+
var un$EndsWith = uncurryThis(''.endsWith);
|
|
14
|
+
var slice = uncurryThis(''.slice);
|
|
13
15
|
var min = Math.min;
|
|
14
16
|
|
|
15
17
|
var CORRECT_IS_REGEXP_LOGIC = correctIsRegExpLogic('endsWith');
|
|
@@ -29,8 +31,8 @@ $({ target: 'String', proto: true, forced: !MDN_POLYFILL_BUG && !CORRECT_IS_REGE
|
|
|
29
31
|
var len = that.length;
|
|
30
32
|
var end = endPosition === undefined ? len : min(toLength(endPosition), len);
|
|
31
33
|
var search = toString(searchString);
|
|
32
|
-
return $
|
|
33
|
-
? $
|
|
34
|
-
:
|
|
34
|
+
return un$EndsWith
|
|
35
|
+
? un$EndsWith(that, search, end)
|
|
36
|
+
: slice(that, end - search.length, end) === search;
|
|
35
37
|
}
|
|
36
38
|
});
|
|
@@ -1,9 +1,13 @@
|
|
|
1
1
|
var $ = require('../internals/export');
|
|
2
|
+
var global = require('../internals/global');
|
|
3
|
+
var uncurryThis = require('../internals/function-uncurry-this');
|
|
2
4
|
var toAbsoluteIndex = require('../internals/to-absolute-index');
|
|
3
5
|
|
|
6
|
+
var RangeError = global.RangeError;
|
|
4
7
|
var fromCharCode = String.fromCharCode;
|
|
5
8
|
// eslint-disable-next-line es/no-string-fromcodepoint -- required for testing
|
|
6
9
|
var $fromCodePoint = String.fromCodePoint;
|
|
10
|
+
var join = uncurryThis([].join);
|
|
7
11
|
|
|
8
12
|
// length should be 1, old FF problem
|
|
9
13
|
var INCORRECT_LENGTH = !!$fromCodePoint && $fromCodePoint.length != 1;
|
|
@@ -20,10 +24,9 @@ $({ target: 'String', stat: true, forced: INCORRECT_LENGTH }, {
|
|
|
20
24
|
while (length > i) {
|
|
21
25
|
code = +arguments[i++];
|
|
22
26
|
if (toAbsoluteIndex(code, 0x10FFFF) !== code) throw RangeError(code + ' is not a valid code point');
|
|
23
|
-
elements
|
|
27
|
+
elements[i] = code < 0x10000
|
|
24
28
|
? fromCharCode(code)
|
|
25
|
-
: fromCharCode(((code -= 0x10000) >> 10) + 0xD800, code % 0x400 + 0xDC00)
|
|
26
|
-
|
|
27
|
-
} return elements.join('');
|
|
29
|
+
: fromCharCode(((code -= 0x10000) >> 10) + 0xD800, code % 0x400 + 0xDC00);
|
|
30
|
+
} return join(elements, '');
|
|
28
31
|
}
|
|
29
32
|
});
|