core-js 3.18.1 → 3.19.1
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/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/typed-array/methods.js +2 -0
- 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 +11 -10
- package/internals/array-buffer.js +31 -18
- package/internals/array-copy-within.js +2 -2
- package/internals/array-fill.js +2 -2
- package/internals/array-from-async.js +14 -9
- package/internals/array-from.js +8 -4
- package/internals/array-group-by.js +8 -5
- package/internals/array-includes.js +2 -2
- package/internals/array-iteration-from-last.js +3 -3
- package/internals/array-iteration.js +7 -6
- package/internals/array-last-index-of.js +6 -5
- package/internals/array-reduce.js +5 -2
- 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 +15 -11
- 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 +13 -9
- package/internals/collection.js +8 -7
- package/internals/composite-key.js +9 -2
- package/internals/copy-constructor-properties.js +2 -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/define-well-known-symbol.js +2 -2
- 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 +8 -4
- 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-name.js +2 -2
- 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 +10 -0
- package/internals/host-report-errors.js +1 -1
- package/internals/ieee754.js +4 -1
- 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 +8 -11
- package/internals/internal-state.js +13 -11
- package/internals/is-callable.js +1 -1
- package/internals/is-constructor.js +6 -4
- package/internals/is-data-descriptor.js +2 -2
- package/internals/is-integral-number.js +10 -0
- 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 +16 -8
- package/internals/iterator-close.js +2 -1
- package/internals/iterator-create-proxy.js +4 -3
- package/internals/length-of-array-like.js +7 -0
- 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 +3 -2
- package/internals/object-get-own-property-names-external.js +4 -4
- package/internals/object-get-prototype-of.js +4 -3
- package/internals/object-is-extensible.js +16 -0
- package/internals/object-is-prototype-of.js +3 -0
- package/internals/object-iterator.js +2 -2
- package/internals/object-keys-internal.js +7 -4
- 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/redefine.js +2 -2
- package/internals/reflect-metadata.js +9 -3
- package/internals/regexp-exec-abstract.js +6 -2
- package/internals/regexp-exec.js +19 -14
- package/internals/require-object-coercible.js +4 -0
- package/internals/set-global.js +4 -2
- package/internals/set-to-string-tag.js +2 -2
- package/internals/shared.js +1 -1
- package/internals/string-multibyte.js +15 -7
- package/internals/string-pad.js +7 -4
- package/internals/string-punycode-to-ascii.js +26 -14
- package/internals/string-repeat.js +5 -2
- package/internals/string-trim.js +4 -2
- package/internals/task.js +11 -11
- package/internals/this-number-value.js +2 -4
- package/internals/to-absolute-index.js +2 -2
- package/internals/to-index.js +5 -2
- package/internals/to-integer-or-infinity.js +10 -0
- package/internals/to-length.js +2 -2
- package/internals/to-object.js +3 -0
- package/internals/to-offset.js +3 -0
- package/internals/to-positive-integer.js +5 -2
- 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 +18 -14
- package/internals/typed-array-from.js +6 -5
- package/internals/uid.js +4 -1
- package/internals/well-known-symbol.js +8 -4
- package/modules/es.aggregate-error.js +29 -12
- package/modules/es.array-buffer.slice.js +8 -4
- package/modules/es.array.at.js +4 -4
- package/modules/es.array.concat.js +4 -2
- package/modules/es.array.flat-map.js +2 -2
- package/modules/es.array.flat.js +4 -4
- 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 +6 -4
- package/modules/es.array.sort.js +9 -6
- package/modules/es.array.splice.js +6 -4
- package/modules/es.date.get-year.js +3 -2
- package/modules/es.date.now.js +6 -1
- package/modules/es.date.set-year.js +8 -6
- 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 +4 -2
- package/modules/es.json.stringify.js +18 -7
- package/modules/es.map.js +1 -1
- package/modules/es.number.constructor.js +25 -19
- 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 +21 -15
- package/modules/es.number.to-precision.js +6 -5
- package/modules/es.object.has-own.js +1 -1
- 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 +25 -16
- package/modules/es.regexp.dot-all.js +5 -1
- package/modules/es.regexp.flags.js +4 -2
- package/modules/es.regexp.sticky.js +5 -1
- 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 +7 -5
- package/modules/es.string.ends-with.js +7 -5
- 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 +9 -8
- package/modules/es.string.replace-all.js +19 -13
- package/modules/es.string.replace.js +21 -14
- 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 +6 -5
- package/modules/es.symbol.description.js +22 -14
- package/modules/es.symbol.js +47 -33
- package/modules/es.typed-array.at.js +4 -4
- 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 +4 -2
- 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.array.last-index.js +2 -2
- package/modules/esnext.array.last-item.js +3 -3
- package/modules/esnext.async-iterator.as-indexed-pairs.js +2 -1
- package/modules/esnext.async-iterator.constructor.js +4 -4
- 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 +4 -4
- 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 +14 -5
- 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 +9 -3
- 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 +63 -54
- package/modules/web.url.js +110 -96
- 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/internals/has.js +0 -7
- package/internals/is-integer.js +0 -9
- package/internals/to-integer.js +0 -8
|
@@ -1,17 +1,27 @@
|
|
|
1
1
|
var $ = require('../internals/export');
|
|
2
|
+
var global = require('../internals/global');
|
|
2
3
|
var getBuiltIn = require('../internals/get-built-in');
|
|
4
|
+
var apply = require('../internals/function-apply');
|
|
5
|
+
var uncurryThis = require('../internals/function-uncurry-this');
|
|
3
6
|
var fails = require('../internals/fails');
|
|
4
7
|
|
|
8
|
+
var Array = global.Array;
|
|
5
9
|
var $stringify = getBuiltIn('JSON', 'stringify');
|
|
6
|
-
var
|
|
10
|
+
var exec = uncurryThis(/./.exec);
|
|
11
|
+
var charAt = uncurryThis(''.charAt);
|
|
12
|
+
var charCodeAt = uncurryThis(''.charCodeAt);
|
|
13
|
+
var replace = uncurryThis(''.replace);
|
|
14
|
+
var numberToString = uncurryThis(1.0.toString);
|
|
15
|
+
|
|
16
|
+
var tester = /[\uD800-\uDFFF]/g;
|
|
7
17
|
var low = /^[\uD800-\uDBFF]$/;
|
|
8
18
|
var hi = /^[\uDC00-\uDFFF]$/;
|
|
9
19
|
|
|
10
20
|
var fix = function (match, offset, string) {
|
|
11
|
-
var prev =
|
|
12
|
-
var next =
|
|
13
|
-
if ((low
|
|
14
|
-
return '\\u' +
|
|
21
|
+
var prev = charAt(string, offset - 1);
|
|
22
|
+
var next = charAt(string, offset + 1);
|
|
23
|
+
if ((exec(low, match) && !exec(hi, next)) || (exec(hi, match) && !exec(low, prev))) {
|
|
24
|
+
return '\\u' + numberToString(charCodeAt(match, 0), 16);
|
|
15
25
|
} return match;
|
|
16
26
|
};
|
|
17
27
|
|
|
@@ -27,8 +37,9 @@ if ($stringify) {
|
|
|
27
37
|
$({ target: 'JSON', stat: true, forced: FORCED }, {
|
|
28
38
|
// eslint-disable-next-line no-unused-vars -- required for `.length`
|
|
29
39
|
stringify: function stringify(it, replacer, space) {
|
|
30
|
-
var
|
|
31
|
-
|
|
40
|
+
for (var i = 0, l = arguments.length, args = Array(l); i < l; i++) args[i] = arguments[i];
|
|
41
|
+
var result = apply($stringify, null, args);
|
|
42
|
+
return typeof result == 'string' ? replace(result, tester, fix) : result;
|
|
32
43
|
}
|
|
33
44
|
});
|
|
34
45
|
}
|
package/modules/es.map.js
CHANGED
|
@@ -4,6 +4,6 @@ var collectionStrong = require('../internals/collection-strong');
|
|
|
4
4
|
|
|
5
5
|
// `Map` constructor
|
|
6
6
|
// https://tc39.es/ecma262/#sec-map-objects
|
|
7
|
-
|
|
7
|
+
collection('Map', function (init) {
|
|
8
8
|
return function Map() { return init(this, arguments.length ? arguments[0] : undefined); };
|
|
9
9
|
}, collectionStrong);
|
|
@@ -1,49 +1,57 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
var DESCRIPTORS = require('../internals/descriptors');
|
|
3
3
|
var global = require('../internals/global');
|
|
4
|
+
var uncurryThis = require('../internals/function-uncurry-this');
|
|
4
5
|
var isForced = require('../internals/is-forced');
|
|
5
6
|
var redefine = require('../internals/redefine');
|
|
6
|
-
var
|
|
7
|
-
var classof = require('../internals/classof-raw');
|
|
7
|
+
var hasOwn = require('../internals/has-own-property');
|
|
8
8
|
var inheritIfRequired = require('../internals/inherit-if-required');
|
|
9
|
+
var isPrototypeOf = require('../internals/object-is-prototype-of');
|
|
9
10
|
var isSymbol = require('../internals/is-symbol');
|
|
10
11
|
var toPrimitive = require('../internals/to-primitive');
|
|
11
12
|
var fails = require('../internals/fails');
|
|
12
|
-
var create = require('../internals/object-create');
|
|
13
13
|
var getOwnPropertyNames = require('../internals/object-get-own-property-names').f;
|
|
14
14
|
var getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;
|
|
15
15
|
var defineProperty = require('../internals/object-define-property').f;
|
|
16
|
+
var thisNumberValue = require('../internals/this-number-value');
|
|
16
17
|
var trim = require('../internals/string-trim').trim;
|
|
17
18
|
|
|
18
19
|
var NUMBER = 'Number';
|
|
19
20
|
var NativeNumber = global[NUMBER];
|
|
20
21
|
var NumberPrototype = NativeNumber.prototype;
|
|
22
|
+
var TypeError = global.TypeError;
|
|
23
|
+
var arraySlice = uncurryThis(''.slice);
|
|
24
|
+
var charCodeAt = uncurryThis(''.charCodeAt);
|
|
21
25
|
|
|
22
|
-
//
|
|
23
|
-
|
|
26
|
+
// `ToNumeric` abstract operation
|
|
27
|
+
// https://tc39.es/ecma262/#sec-tonumeric
|
|
28
|
+
var toNumeric = function (value) {
|
|
29
|
+
var primValue = toPrimitive(value, 'number');
|
|
30
|
+
return typeof primValue == 'bigint' ? primValue : toNumber(primValue);
|
|
31
|
+
};
|
|
24
32
|
|
|
25
33
|
// `ToNumber` abstract operation
|
|
26
34
|
// https://tc39.es/ecma262/#sec-tonumber
|
|
27
35
|
var toNumber = function (argument) {
|
|
28
|
-
if (isSymbol(argument)) throw TypeError('Cannot convert a Symbol value to a number');
|
|
29
36
|
var it = toPrimitive(argument, 'number');
|
|
30
37
|
var first, third, radix, maxCode, digits, length, index, code;
|
|
38
|
+
if (isSymbol(it)) throw TypeError('Cannot convert a Symbol value to a number');
|
|
31
39
|
if (typeof it == 'string' && it.length > 2) {
|
|
32
40
|
it = trim(it);
|
|
33
|
-
first =
|
|
41
|
+
first = charCodeAt(it, 0);
|
|
34
42
|
if (first === 43 || first === 45) {
|
|
35
|
-
third =
|
|
43
|
+
third = charCodeAt(it, 2);
|
|
36
44
|
if (third === 88 || third === 120) return NaN; // Number('+0x1') should be NaN, old V8 fix
|
|
37
45
|
} else if (first === 48) {
|
|
38
|
-
switch (
|
|
46
|
+
switch (charCodeAt(it, 1)) {
|
|
39
47
|
case 66: case 98: radix = 2; maxCode = 49; break; // fast equal of /^0b[01]+$/i
|
|
40
48
|
case 79: case 111: radix = 8; maxCode = 55; break; // fast equal of /^0o[0-7]+$/i
|
|
41
49
|
default: return +it;
|
|
42
50
|
}
|
|
43
|
-
digits = it
|
|
51
|
+
digits = arraySlice(it, 2);
|
|
44
52
|
length = digits.length;
|
|
45
53
|
for (index = 0; index < length; index++) {
|
|
46
|
-
code =
|
|
54
|
+
code = charCodeAt(digits, index);
|
|
47
55
|
// parseInt parses a string to a first unavailable symbol
|
|
48
56
|
// but ToNumber should return NaN if a string contains unavailable symbols
|
|
49
57
|
if (code < 48 || code > maxCode) return NaN;
|
|
@@ -56,23 +64,21 @@ var toNumber = function (argument) {
|
|
|
56
64
|
// https://tc39.es/ecma262/#sec-number-constructor
|
|
57
65
|
if (isForced(NUMBER, !NativeNumber(' 0o1') || !NativeNumber('0b1') || NativeNumber('+0x1'))) {
|
|
58
66
|
var NumberWrapper = function Number(value) {
|
|
59
|
-
var
|
|
67
|
+
var n = arguments.length < 1 ? 0 : NativeNumber(toNumeric(value));
|
|
60
68
|
var dummy = this;
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
? inheritIfRequired(new NativeNumber(toNumber(it)), dummy, NumberWrapper) : toNumber(it);
|
|
69
|
+
// check on 1..constructor(foo) case
|
|
70
|
+
return isPrototypeOf(NumberPrototype, dummy) && fails(function () { thisNumberValue(dummy); })
|
|
71
|
+
? inheritIfRequired(Object(n), dummy, NumberWrapper) : n;
|
|
65
72
|
};
|
|
66
73
|
for (var keys = DESCRIPTORS ? getOwnPropertyNames(NativeNumber) : (
|
|
67
74
|
// ES3:
|
|
68
75
|
'MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,' +
|
|
69
76
|
// ES2015 (in case, if modules with ES2015 Number statics required before):
|
|
70
|
-
'EPSILON,isFinite,isInteger,isNaN,isSafeInteger,
|
|
71
|
-
'MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger,' +
|
|
77
|
+
'EPSILON,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,isFinite,isInteger,isNaN,isSafeInteger,parseFloat,parseInt,' +
|
|
72
78
|
// ESNext
|
|
73
79
|
'fromString,range'
|
|
74
80
|
).split(','), j = 0, key; keys.length > j; j++) {
|
|
75
|
-
if (
|
|
81
|
+
if (hasOwn(NativeNumber, key = keys[j]) && !hasOwn(NumberWrapper, key)) {
|
|
76
82
|
defineProperty(NumberWrapper, key, getOwnPropertyDescriptor(NativeNumber, key));
|
|
77
83
|
}
|
|
78
84
|
}
|
|
@@ -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,12 +1,18 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
var $ = require('../internals/export');
|
|
3
|
-
var
|
|
3
|
+
var global = require('../internals/global');
|
|
4
|
+
var uncurryThis = require('../internals/function-uncurry-this');
|
|
5
|
+
var toIntegerOrInfinity = require('../internals/to-integer-or-infinity');
|
|
4
6
|
var thisNumberValue = require('../internals/this-number-value');
|
|
5
|
-
var repeat = require('../internals/string-repeat');
|
|
7
|
+
var $repeat = require('../internals/string-repeat');
|
|
6
8
|
var fails = require('../internals/fails');
|
|
7
9
|
|
|
8
|
-
var
|
|
10
|
+
var RangeError = global.RangeError;
|
|
11
|
+
var String = global.String;
|
|
9
12
|
var floor = Math.floor;
|
|
13
|
+
var repeat = uncurryThis($repeat);
|
|
14
|
+
var stringSlice = uncurryThis(''.slice);
|
|
15
|
+
var un$ToFixed = uncurryThis(1.0.toFixed);
|
|
10
16
|
|
|
11
17
|
var pow = function (x, n, acc) {
|
|
12
18
|
return n === 0 ? acc : n % 2 === 1 ? pow(x, n - 1, acc * x) : pow(x * x, n / 2, acc);
|
|
@@ -51,19 +57,19 @@ var dataToString = function (data) {
|
|
|
51
57
|
while (--index >= 0) {
|
|
52
58
|
if (s !== '' || index === 0 || data[index] !== 0) {
|
|
53
59
|
var t = String(data[index]);
|
|
54
|
-
s = s === '' ? t : s + repeat
|
|
60
|
+
s = s === '' ? t : s + repeat('0', 7 - t.length) + t;
|
|
55
61
|
}
|
|
56
62
|
} return s;
|
|
57
63
|
};
|
|
58
64
|
|
|
59
|
-
var FORCED =
|
|
60
|
-
0.00008
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
) || !fails(function () {
|
|
65
|
+
var FORCED = fails(function () {
|
|
66
|
+
return un$ToFixed(0.00008, 3) !== '0.000' ||
|
|
67
|
+
un$ToFixed(0.9, 0) !== '1' ||
|
|
68
|
+
un$ToFixed(1.255, 2) !== '1.25' ||
|
|
69
|
+
un$ToFixed(1000000000000000128.0, 0) !== '1000000000000000128';
|
|
70
|
+
}) || !fails(function () {
|
|
65
71
|
// V8 ~ Android 4.3-
|
|
66
|
-
|
|
72
|
+
un$ToFixed({});
|
|
67
73
|
});
|
|
68
74
|
|
|
69
75
|
// `Number.prototype.toFixed` method
|
|
@@ -71,7 +77,7 @@ var FORCED = nativeToFixed && (
|
|
|
71
77
|
$({ target: 'Number', proto: true, forced: FORCED }, {
|
|
72
78
|
toFixed: function toFixed(fractionDigits) {
|
|
73
79
|
var number = thisNumberValue(this);
|
|
74
|
-
var fractDigits =
|
|
80
|
+
var fractDigits = toIntegerOrInfinity(fractionDigits);
|
|
75
81
|
var data = [0, 0, 0, 0, 0, 0];
|
|
76
82
|
var sign = '';
|
|
77
83
|
var result = '0';
|
|
@@ -110,14 +116,14 @@ $({ target: 'Number', proto: true, forced: FORCED }, {
|
|
|
110
116
|
} else {
|
|
111
117
|
multiply(data, 0, z);
|
|
112
118
|
multiply(data, 1 << -e, 0);
|
|
113
|
-
result = dataToString(data) + repeat
|
|
119
|
+
result = dataToString(data) + repeat('0', fractDigits);
|
|
114
120
|
}
|
|
115
121
|
}
|
|
116
122
|
if (fractDigits > 0) {
|
|
117
123
|
k = result.length;
|
|
118
124
|
result = sign + (k <= fractDigits
|
|
119
|
-
? '0.' + repeat
|
|
120
|
-
: result
|
|
125
|
+
? '0.' + repeat('0', fractDigits - k) + result
|
|
126
|
+
: stringSlice(result, 0, k - fractDigits) + '.' + stringSlice(result, k - fractDigits));
|
|
121
127
|
} else {
|
|
122
128
|
result = sign + result;
|
|
123
129
|
} return result;
|
|
@@ -1,16 +1,17 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
var $ = require('../internals/export');
|
|
3
|
+
var uncurryThis = require('../internals/function-uncurry-this');
|
|
3
4
|
var fails = require('../internals/fails');
|
|
4
5
|
var thisNumberValue = require('../internals/this-number-value');
|
|
5
6
|
|
|
6
|
-
var
|
|
7
|
+
var un$ToPrecision = uncurryThis(1.0.toPrecision);
|
|
7
8
|
|
|
8
9
|
var FORCED = fails(function () {
|
|
9
10
|
// IE7-
|
|
10
|
-
return
|
|
11
|
+
return un$ToPrecision(1, undefined) !== '1';
|
|
11
12
|
}) || !fails(function () {
|
|
12
13
|
// V8 ~ Android 4.3-
|
|
13
|
-
|
|
14
|
+
un$ToPrecision({});
|
|
14
15
|
});
|
|
15
16
|
|
|
16
17
|
// `Number.prototype.toPrecision` method
|
|
@@ -18,7 +19,7 @@ var FORCED = fails(function () {
|
|
|
18
19
|
$({ target: 'Number', proto: true, forced: FORCED }, {
|
|
19
20
|
toPrecision: function toPrecision(precision) {
|
|
20
21
|
return precision === undefined
|
|
21
|
-
?
|
|
22
|
-
:
|
|
22
|
+
? un$ToPrecision(thisNumberValue(this))
|
|
23
|
+
: un$ToPrecision(thisNumberValue(this), precision);
|
|
23
24
|
}
|
|
24
25
|
});
|
|
@@ -1,15 +1,9 @@
|
|
|
1
1
|
var $ = require('../internals/export');
|
|
2
|
-
var
|
|
3
|
-
var isObject = require('../internals/is-object');
|
|
4
|
-
|
|
5
|
-
// eslint-disable-next-line es/no-object-isextensible -- safe
|
|
6
|
-
var $isExtensible = Object.isExtensible;
|
|
7
|
-
var FAILS_ON_PRIMITIVES = fails(function () { $isExtensible(1); });
|
|
2
|
+
var $isExtensible = require('../internals/object-is-extensible');
|
|
8
3
|
|
|
9
4
|
// `Object.isExtensible` method
|
|
10
5
|
// https://tc39.es/ecma262/#sec-object.isextensible
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
}
|
|
6
|
+
// eslint-disable-next-line es/no-object-isextensible -- safe
|
|
7
|
+
$({ target: 'Object', stat: true, forced: Object.isExtensible !== $isExtensible }, {
|
|
8
|
+
isExtensible: $isExtensible
|
|
15
9
|
});
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
var $ = require('../internals/export');
|
|
2
2
|
var fails = require('../internals/fails');
|
|
3
3
|
var isObject = require('../internals/is-object');
|
|
4
|
+
var classof = require('../internals/classof-raw');
|
|
5
|
+
var ARRAY_BUFFER_NON_EXTENSIBLE = require('../internals/array-buffer-non-extensible');
|
|
4
6
|
|
|
5
7
|
// eslint-disable-next-line es/no-object-isfrozen -- safe
|
|
6
8
|
var $isFrozen = Object.isFrozen;
|
|
@@ -8,8 +10,10 @@ var FAILS_ON_PRIMITIVES = fails(function () { $isFrozen(1); });
|
|
|
8
10
|
|
|
9
11
|
// `Object.isFrozen` method
|
|
10
12
|
// https://tc39.es/ecma262/#sec-object.isfrozen
|
|
11
|
-
$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES }, {
|
|
13
|
+
$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES || ARRAY_BUFFER_NON_EXTENSIBLE }, {
|
|
12
14
|
isFrozen: function isFrozen(it) {
|
|
13
|
-
|
|
15
|
+
if (!isObject(it)) return true;
|
|
16
|
+
if (ARRAY_BUFFER_NON_EXTENSIBLE && classof(it) == 'ArrayBuffer') return true;
|
|
17
|
+
return $isFrozen ? $isFrozen(it) : false;
|
|
14
18
|
}
|
|
15
19
|
});
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
var $ = require('../internals/export');
|
|
2
2
|
var fails = require('../internals/fails');
|
|
3
3
|
var isObject = require('../internals/is-object');
|
|
4
|
+
var classof = require('../internals/classof-raw');
|
|
5
|
+
var ARRAY_BUFFER_NON_EXTENSIBLE = require('../internals/array-buffer-non-extensible');
|
|
4
6
|
|
|
5
7
|
// eslint-disable-next-line es/no-object-issealed -- safe
|
|
6
8
|
var $isSealed = Object.isSealed;
|
|
@@ -8,8 +10,10 @@ var FAILS_ON_PRIMITIVES = fails(function () { $isSealed(1); });
|
|
|
8
10
|
|
|
9
11
|
// `Object.isSealed` method
|
|
10
12
|
// https://tc39.es/ecma262/#sec-object.issealed
|
|
11
|
-
$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES }, {
|
|
13
|
+
$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES || ARRAY_BUFFER_NON_EXTENSIBLE }, {
|
|
12
14
|
isSealed: function isSealed(it) {
|
|
13
|
-
|
|
15
|
+
if (!isObject(it)) return true;
|
|
16
|
+
if (ARRAY_BUFFER_NON_EXTENSIBLE && classof(it) == 'ArrayBuffer') return true;
|
|
17
|
+
return $isSealed ? $isSealed(it) : false;
|
|
14
18
|
}
|
|
15
19
|
});
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
var $ = require('../internals/export');
|
|
3
|
+
var call = require('../internals/function-call');
|
|
3
4
|
var aCallable = require('../internals/a-callable');
|
|
4
5
|
var newPromiseCapabilityModule = require('../internals/new-promise-capability');
|
|
5
6
|
var perform = require('../internals/perform');
|
|
@@ -21,9 +22,8 @@ $({ target: 'Promise', stat: true }, {
|
|
|
21
22
|
iterate(iterable, function (promise) {
|
|
22
23
|
var index = counter++;
|
|
23
24
|
var alreadyCalled = false;
|
|
24
|
-
values.push(undefined);
|
|
25
25
|
remaining++;
|
|
26
|
-
|
|
26
|
+
call(promiseResolve, C, promise).then(function (value) {
|
|
27
27
|
if (alreadyCalled) return;
|
|
28
28
|
alreadyCalled = true;
|
|
29
29
|
values[index] = { status: 'fulfilled', value: value };
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
var $ = require('../internals/export');
|
|
3
3
|
var aCallable = require('../internals/a-callable');
|
|
4
4
|
var getBuiltIn = require('../internals/get-built-in');
|
|
5
|
+
var call = require('../internals/function-call');
|
|
5
6
|
var newPromiseCapabilityModule = require('../internals/new-promise-capability');
|
|
6
7
|
var perform = require('../internals/perform');
|
|
7
8
|
var iterate = require('../internals/iterate');
|
|
@@ -13,6 +14,7 @@ var PROMISE_ANY_ERROR = 'No one promise resolved';
|
|
|
13
14
|
$({ target: 'Promise', stat: true }, {
|
|
14
15
|
any: function any(iterable) {
|
|
15
16
|
var C = this;
|
|
17
|
+
var AggregateError = getBuiltIn('AggregateError');
|
|
16
18
|
var capability = newPromiseCapabilityModule.f(C);
|
|
17
19
|
var resolve = capability.resolve;
|
|
18
20
|
var reject = capability.reject;
|
|
@@ -25,9 +27,8 @@ $({ target: 'Promise', stat: true }, {
|
|
|
25
27
|
iterate(iterable, function (promise) {
|
|
26
28
|
var index = counter++;
|
|
27
29
|
var alreadyRejected = false;
|
|
28
|
-
errors.push(undefined);
|
|
29
30
|
remaining++;
|
|
30
|
-
|
|
31
|
+
call(promiseResolve, C, promise).then(function (value) {
|
|
31
32
|
if (alreadyRejected || alreadyResolved) return;
|
|
32
33
|
alreadyResolved = true;
|
|
33
34
|
resolve(value);
|
|
@@ -35,10 +36,10 @@ $({ target: 'Promise', stat: true }, {
|
|
|
35
36
|
if (alreadyRejected || alreadyResolved) return;
|
|
36
37
|
alreadyRejected = true;
|
|
37
38
|
errors[index] = error;
|
|
38
|
-
--remaining || reject(new
|
|
39
|
+
--remaining || reject(new AggregateError(errors, PROMISE_ANY_ERROR));
|
|
39
40
|
});
|
|
40
41
|
});
|
|
41
|
-
--remaining || reject(new
|
|
42
|
+
--remaining || reject(new AggregateError(errors, PROMISE_ANY_ERROR));
|
|
42
43
|
});
|
|
43
44
|
if (result.error) reject(result.value);
|
|
44
45
|
return capability.promise;
|
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
|
});
|