core-js 3.48.0 → 3.50.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/actual/iterator/chunks.js +8 -0
- package/actual/iterator/concat.js +4 -0
- package/actual/iterator/from.js +4 -0
- package/actual/iterator/includes.js +8 -0
- package/actual/iterator/index.js +4 -1
- package/actual/iterator/join.js +8 -0
- package/actual/iterator/windows.js +8 -0
- package/actual/iterator/zip-keyed.js +6 -21
- package/actual/iterator/zip.js +6 -19
- package/actual/promise/all-keyed.js +16 -0
- package/actual/promise/all-settled-keyed.js +16 -0
- package/actual/promise/index.js +4 -0
- package/configurator.js +1 -1
- package/es/index.js +2 -0
- package/es/iterator/index.js +4 -0
- package/es/iterator/zip-keyed.js +24 -0
- package/es/iterator/zip.js +22 -0
- package/es/object/define-properties.js +2 -2
- package/es/object/define-property.js +2 -2
- package/es/object/get-own-property-descriptor.js +2 -2
- package/es/promise/try.js +2 -2
- package/features/iterator/includes.js +2 -0
- package/features/iterator/join.js +2 -0
- package/features/promise/all-keyed.js +2 -0
- package/features/promise/all-settled-keyed.js +2 -0
- package/full/index.js +6 -0
- package/full/iterator/chunks.js +2 -6
- package/full/iterator/concat.js +0 -2
- package/full/iterator/from.js +0 -2
- package/full/iterator/includes.js +4 -0
- package/full/iterator/index.js +0 -2
- package/full/iterator/join.js +4 -0
- package/full/iterator/range.js +3 -1
- package/full/iterator/windows.js +2 -6
- package/full/iterator/zip-keyed.js +0 -2
- package/full/iterator/zip.js +0 -2
- package/full/promise/all-keyed.js +4 -0
- package/full/promise/all-settled-keyed.js +4 -0
- package/internals/add-disposable-resource.js +1 -1
- package/internals/advance-string-index.js +1 -1
- package/internals/array-buffer-transfer.js +4 -1
- package/internals/array-buffer-view-core.js +1 -1
- package/internals/array-buffer.js +1 -2
- package/internals/array-fill.js +2 -1
- package/internals/array-from-async.js +7 -9
- package/internals/array-from.js +15 -4
- package/internals/async-from-sync-iterator.js +28 -4
- package/internals/async-iterator-close.js +11 -3
- package/internals/async-iterator-create-proxy.js +61 -22
- package/internals/async-iterator-iteration.js +7 -4
- package/internals/async-iterator-map.js +20 -18
- package/internals/does-not-exceed-safe-integer.js +1 -1
- package/internals/environment-is-ios.js +1 -2
- package/internals/error-stack-clear.js +1 -1
- package/internals/function-bind-native.js +1 -1
- package/internals/function-name.js +1 -1
- package/internals/get-async-iterator-flattenable.js +1 -1
- package/internals/get-async-iterator.js +1 -1
- package/internals/get-internal-iterator.js +1 -0
- package/internals/get-iterator-flattenable.js +1 -1
- package/internals/get-iterator-internal.js +14 -0
- package/internals/get-iterator-method-internal.js +14 -0
- package/internals/get-iterator-method.js +4 -7
- package/internals/get-iterator-record.js +1 -1
- package/internals/get-iterator.js +4 -5
- package/internals/is-iterable.js +4 -10
- package/internals/iterate.js +10 -5
- package/internals/iterator-chunk-size-validation.js +17 -0
- package/internals/iterator-cleanup-state.js +6 -0
- package/internals/iterator-create-proxy.js +14 -5
- package/internals/iterator-window.js +4 -6
- package/internals/iterator-zip.js +4 -3
- package/internals/iterators.js +1 -1
- package/internals/math-log1p.js +3 -1
- package/internals/numeric-range-iterator.js +9 -4
- package/internals/regexp-exec.js +20 -13
- package/internals/set-difference.js +1 -1
- package/internals/set-is-disjoint-from.js +1 -1
- package/internals/set-is-superset-of.js +1 -1
- package/internals/shared-store.js +2 -2
- package/internals/shared.js +3 -1
- package/internals/string-pad.js +2 -1
- package/internals/string-parse.js +1 -1
- package/internals/string-repeat.js +2 -1
- package/internals/to-uint8-clamped.js +11 -3
- package/internals/typed-array-constructor.js +1 -2
- package/internals/typed-array-from.js +5 -3
- package/internals/uint8-from-base64.js +4 -2
- package/internals/uint8-from-hex.js +10 -10
- package/internals/url-percent-coding.js +171 -0
- package/modules/es.array.flat.js +2 -1
- package/modules/es.array.from-async.js +1 -1
- package/modules/es.array.includes.js +7 -1
- package/modules/es.array.sort.js +3 -1
- package/modules/es.data-view.get-float16.js +1 -1
- package/modules/es.data-view.set-float16.js +2 -1
- package/modules/es.date.set-year.js +4 -1
- package/modules/es.date.to-json.js +1 -1
- package/modules/es.error.is-error.js +1 -1
- package/modules/es.escape.js +10 -8
- package/modules/es.iterator.concat.js +5 -4
- package/modules/es.iterator.drop.js +16 -1
- package/modules/es.iterator.flat-map.js +12 -14
- package/modules/es.iterator.take.js +22 -2
- package/modules/es.iterator.zip-keyed.js +70 -0
- package/modules/es.iterator.zip.js +92 -0
- package/modules/es.json.parse.js +14 -2
- package/modules/es.json.stringify.js +157 -38
- package/modules/es.map.get-or-insert-computed.js +3 -4
- package/modules/es.map.get-or-insert.js +2 -3
- package/modules/es.map.group-by.js +2 -0
- package/modules/es.math.asinh.js +6 -1
- package/modules/es.math.atanh.js +2 -2
- package/modules/es.math.cbrt.js +3 -1
- package/modules/es.math.sum-precise.js +3 -3
- package/modules/es.number.to-exponential.js +15 -6
- package/modules/es.object.group-by.js +2 -0
- package/modules/es.object.proto.js +2 -1
- package/modules/es.promise.try.js +16 -8
- package/modules/es.reflect.construct.js +1 -1
- package/modules/es.reflect.define-property.js +10 -0
- package/modules/es.reflect.delete-property.js +5 -2
- package/modules/es.reflect.get.js +9 -7
- package/modules/es.reflect.set.js +14 -9
- package/modules/es.regexp.constructor.js +16 -5
- package/modules/es.string.ends-with.js +1 -1
- package/modules/es.string.from-code-point.js +2 -2
- package/modules/es.string.match-all.js +1 -1
- package/modules/es.string.match.js +5 -3
- package/modules/es.string.replace.js +9 -8
- package/modules/es.string.search.js +3 -1
- package/modules/es.string.split.js +7 -5
- package/modules/es.string.starts-with.js +1 -1
- package/modules/es.string.substr.js +5 -7
- package/modules/es.symbol.constructor.js +3 -2
- package/modules/es.symbol.description.js +9 -0
- package/modules/es.typed-array.sort.js +3 -3
- package/modules/es.uint8-array.from-base64.js +1 -1
- package/modules/es.uint8-array.from-hex.js +1 -1
- package/modules/es.uint8-array.set-from-base64.js +1 -1
- package/modules/es.uint8-array.set-from-hex.js +1 -1
- package/modules/es.uint8-array.to-base64.js +23 -6
- package/modules/es.uint8-array.to-hex.js +6 -4
- package/modules/es.weak-map.get-or-insert-computed.js +2 -2
- package/modules/es.weak-map.get-or-insert.js +2 -3
- package/modules/esnext.array.is-template-object.js +1 -1
- package/modules/esnext.async-iterator.reduce.js +2 -2
- package/modules/esnext.async-iterator.take.js +4 -2
- package/modules/esnext.bigint.range.js +1 -1
- package/modules/esnext.iterator.chunks.js +6 -8
- package/modules/esnext.iterator.includes.js +44 -0
- package/modules/esnext.iterator.join.js +31 -0
- package/modules/esnext.iterator.range.js +1 -1
- package/modules/esnext.iterator.windows.js +2 -1
- package/modules/esnext.iterator.zip-keyed.js +2 -70
- package/modules/esnext.iterator.zip.js +2 -90
- package/modules/esnext.number.from-string.js +30 -3
- package/modules/esnext.number.range.js +1 -1
- package/modules/esnext.observable.from.js +6 -3
- package/modules/esnext.promise.all-keyed.js +57 -0
- package/modules/esnext.promise.all-settled-keyed.js +60 -0
- package/modules/esnext.string.dedent.js +1 -1
- package/modules/web.atob.js +15 -6
- package/modules/web.btoa.js +10 -3
- package/modules/web.structured-clone.js +2 -2
- package/modules/web.url-search-params.constructor.js +13 -130
- package/modules/web.url-search-params.delete.js +6 -9
- package/modules/web.url.constructor.js +154 -39
- package/modules/web.url.parse.js +1 -1
- package/modules/web.url.to-json.js +4 -1
- package/package.json +8 -1
- package/proposals/await-dictionary.js +4 -0
- package/proposals/iterator-includes.js +3 -0
- package/proposals/iterator-join.js +3 -0
- package/stable/index.js +2 -0
- package/stable/iterator/zip-keyed.js +5 -0
- package/stable/iterator/zip.js +5 -0
- package/stage/3.js +4 -0
|
@@ -1,38 +1,54 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
var $ = require('../internals/export');
|
|
3
3
|
var getBuiltIn = require('../internals/get-built-in');
|
|
4
|
-
var apply = require('../internals/function-apply');
|
|
5
4
|
var call = require('../internals/function-call');
|
|
6
5
|
var uncurryThis = require('../internals/function-uncurry-this');
|
|
7
6
|
var fails = require('../internals/fails');
|
|
8
7
|
var isArray = require('../internals/is-array');
|
|
9
8
|
var isCallable = require('../internals/is-callable');
|
|
9
|
+
var isObject = require('../internals/is-object');
|
|
10
|
+
var create = require('../internals/object-create');
|
|
10
11
|
var isRawJSON = require('../internals/is-raw-json');
|
|
11
12
|
var isSymbol = require('../internals/is-symbol');
|
|
12
13
|
var classof = require('../internals/classof-raw');
|
|
14
|
+
var thisNumberValue = require('../internals/this-number-value');
|
|
15
|
+
var includes = require('../internals/array-includes').includes;
|
|
16
|
+
var hasOwn = require('../internals/has-own-property');
|
|
13
17
|
var toString = require('../internals/to-string');
|
|
14
|
-
var arraySlice = require('../internals/array-slice');
|
|
15
18
|
var parseJSONString = require('../internals/parse-json-string');
|
|
16
19
|
var uid = require('../internals/uid');
|
|
17
20
|
var NATIVE_SYMBOL = require('../internals/symbol-constructor-detection');
|
|
18
21
|
var NATIVE_RAW_JSON = require('../internals/native-raw-json');
|
|
19
22
|
|
|
20
23
|
var $String = String;
|
|
24
|
+
var $TypeError = TypeError;
|
|
21
25
|
var $stringify = getBuiltIn('JSON', 'stringify');
|
|
26
|
+
var $BigInt = getBuiltIn('BigInt');
|
|
27
|
+
var stringValueOf = uncurryThis(''.valueOf);
|
|
28
|
+
var booleanValueOf = uncurryThis(true.valueOf);
|
|
29
|
+
var bigIntValueOf = $BigInt && uncurryThis($BigInt.prototype.valueOf);
|
|
22
30
|
var exec = uncurryThis(/./.exec);
|
|
23
31
|
var charAt = uncurryThis(''.charAt);
|
|
24
32
|
var charCodeAt = uncurryThis(''.charCodeAt);
|
|
25
33
|
var replace = uncurryThis(''.replace);
|
|
26
34
|
var slice = uncurryThis(''.slice);
|
|
27
35
|
var push = uncurryThis([].push);
|
|
36
|
+
var pop = uncurryThis([].pop);
|
|
28
37
|
var numberToString = uncurryThis(1.1.toString);
|
|
29
38
|
|
|
30
39
|
var surrogates = /[\uD800-\uDFFF]/g;
|
|
31
|
-
var
|
|
32
|
-
var
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
40
|
+
var leadingSurrogates = /^[\uD800-\uDBFF]$/;
|
|
41
|
+
var trailingSurrogates = /^[\uDC00-\uDFFF]$/;
|
|
42
|
+
var digits = /^\d+$/;
|
|
43
|
+
|
|
44
|
+
// a placeholder of a raw JSON value
|
|
45
|
+
var RAW_MARK = uid();
|
|
46
|
+
// a prefix of keys of a reordered object, see `createOrderedObject`
|
|
47
|
+
var KEY_MARK = uid();
|
|
48
|
+
// the last key of a reordered object, marks the end of its serialization
|
|
49
|
+
var END_MARK = uid();
|
|
50
|
+
var RAW_MARK_LENGTH = RAW_MARK.length;
|
|
51
|
+
var KEY_MARK_LENGTH = KEY_MARK.length;
|
|
36
52
|
|
|
37
53
|
var WRONG_SYMBOLS_CONVERSION = !NATIVE_SYMBOL || fails(function () {
|
|
38
54
|
var symbol = getBuiltIn('Symbol')('stringify detection');
|
|
@@ -50,67 +66,170 @@ var ILL_FORMED_UNICODE = fails(function () {
|
|
|
50
66
|
|| $stringify('\uDEAD') !== '"\\udead"';
|
|
51
67
|
});
|
|
52
68
|
|
|
53
|
-
var
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
if (!isSymbol(value)) return value;
|
|
61
|
-
};
|
|
62
|
-
return apply($stringify, null, args);
|
|
69
|
+
var isRawJSONValue = NATIVE_RAW_JSON ? getBuiltIn('JSON', 'isRawJSON') : isRawJSON;
|
|
70
|
+
|
|
71
|
+
var stringifyWithProperSymbolsConversion = WRONG_SYMBOLS_CONVERSION ? function (it, replacer, space) {
|
|
72
|
+
return $stringify(it, function (key, value) {
|
|
73
|
+
var replaced = call(replacer, this, key, value);
|
|
74
|
+
if (!isSymbol(replaced)) return replaced;
|
|
75
|
+
}, space);
|
|
63
76
|
} : $stringify;
|
|
64
77
|
|
|
65
78
|
var fixIllFormedJSON = function (match, offset, string) {
|
|
66
79
|
var prev = charAt(string, offset - 1);
|
|
67
80
|
var next = charAt(string, offset + 1);
|
|
68
|
-
if (
|
|
81
|
+
if (
|
|
82
|
+
(exec(leadingSurrogates, match) && !exec(trailingSurrogates, next)) ||
|
|
83
|
+
(exec(trailingSurrogates, match) && !exec(leadingSurrogates, prev))
|
|
84
|
+
) {
|
|
69
85
|
return '\\u' + numberToString(charCodeAt(match, 0), 16);
|
|
70
86
|
} return match;
|
|
71
87
|
};
|
|
72
88
|
|
|
73
|
-
|
|
74
|
-
|
|
89
|
+
// `PropertyList` of `JSON.stringify`
|
|
90
|
+
// https://tc39.es/ecma262/#sec-json.stringify
|
|
91
|
+
var getPropertyList = function (replacer) {
|
|
75
92
|
if (!isArray(replacer)) return;
|
|
76
93
|
var rawLength = replacer.length;
|
|
77
|
-
var
|
|
94
|
+
var propertyList = [];
|
|
95
|
+
// a null prototype object is used as a set of already added keys to keep the deduplication linear
|
|
96
|
+
var addedKeys = create(null);
|
|
78
97
|
for (var i = 0; i < rawLength; i++) {
|
|
79
98
|
var element = replacer[i];
|
|
80
|
-
|
|
81
|
-
|
|
99
|
+
var key;
|
|
100
|
+
if (typeof element == 'string') key = element;
|
|
101
|
+
else if (typeof element == 'number' || classof(element) === 'Number' || classof(element) === 'String') key = toString(element);
|
|
102
|
+
else continue;
|
|
103
|
+
if (!hasOwn(addedKeys, key)) {
|
|
104
|
+
addedKeys[key] = true;
|
|
105
|
+
push(propertyList, key);
|
|
106
|
+
}
|
|
82
107
|
}
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
108
|
+
return propertyList;
|
|
109
|
+
};
|
|
110
|
+
|
|
111
|
+
// values with such an internal slot are unwrapped by `SerializeJSONProperty` instead of being serialized as objects
|
|
112
|
+
var hasInternalSlot = function (valueOf, it) {
|
|
113
|
+
try {
|
|
114
|
+
valueOf(it);
|
|
115
|
+
return true;
|
|
116
|
+
} catch (error) {
|
|
117
|
+
return false;
|
|
118
|
+
}
|
|
119
|
+
};
|
|
120
|
+
|
|
121
|
+
// the slot check is expensive, so it's performed only for the kind reported by the value itself -
|
|
122
|
+
// a value lying about its kind via `Symbol.toStringTag` is serialized as an ordinary object
|
|
123
|
+
var isBoxedPrimitive = function (it) {
|
|
124
|
+
var kind = classof(it);
|
|
125
|
+
return (kind === 'Number' && hasInternalSlot(thisNumberValue, it))
|
|
126
|
+
|| (kind === 'String' && hasInternalSlot(stringValueOf, it))
|
|
127
|
+
|| (kind === 'Boolean' && hasInternalSlot(booleanValueOf, it))
|
|
128
|
+
|| (!!bigIntValueOf && kind === 'BigInt' && hasInternalSlot(bigIntValueOf, it));
|
|
129
|
+
};
|
|
130
|
+
|
|
131
|
+
// only objects serialized by `SerializeJSONObject` are affected by the property list
|
|
132
|
+
var isSerializedAsObject = function (it) {
|
|
133
|
+
if (!isObject(it) || isCallable(it) || isArray(it)) return false;
|
|
134
|
+
try {
|
|
135
|
+
return !isBoxedPrimitive(it);
|
|
136
|
+
// `classof` reads `Symbol.toStringTag`, so a proxy could throw - it has no internal slots anyway
|
|
137
|
+
} catch (error) {
|
|
138
|
+
return true;
|
|
139
|
+
}
|
|
140
|
+
};
|
|
141
|
+
|
|
142
|
+
// the engine unwraps it in the same order as it would read the original property,
|
|
143
|
+
// so the property is read lazily and `toJSON` is called once and with the original key
|
|
144
|
+
var createElementHolder = function (holder, key) {
|
|
145
|
+
return {
|
|
146
|
+
toJSON: function () {
|
|
147
|
+
var element = holder[key];
|
|
148
|
+
if (isObject(element) || typeof element == 'bigint') {
|
|
149
|
+
var elementToJSON = element.toJSON;
|
|
150
|
+
if (isCallable(elementToJSON)) element = call(elementToJSON, element, key);
|
|
151
|
+
} return element;
|
|
89
152
|
}
|
|
90
|
-
if (isArray(this)) return value;
|
|
91
|
-
for (var j = 0; j < keysLength; j++) if (keys[j] === key) return value;
|
|
92
153
|
};
|
|
93
154
|
};
|
|
94
155
|
|
|
156
|
+
// own keys of objects are sorted - integer-like keys are moved to the beginning,
|
|
157
|
+
// so such keys should be marked and restored in the serialized string
|
|
158
|
+
var getKeyPrefix = function (propertyList) {
|
|
159
|
+
for (var i = 0, length = propertyList.length; i < length; i++) {
|
|
160
|
+
if (exec(digits, propertyList[i])) return KEY_MARK;
|
|
161
|
+
} return '';
|
|
162
|
+
};
|
|
163
|
+
|
|
164
|
+
// `SerializeJSONObject` iterates the property list, so the value is replaced with an object with keys in this order
|
|
165
|
+
var createOrderedObject = function (value, propertyList, keyPrefix) {
|
|
166
|
+
// keys are not marked if the property list has no integer-like keys, so `Object.prototype`
|
|
167
|
+
// with a setter, a non-writable property or `__proto__` should not intercept the assignment
|
|
168
|
+
var ordered = create(null);
|
|
169
|
+
for (var i = 0, length = propertyList.length; i < length; i++) {
|
|
170
|
+
var key = propertyList[i];
|
|
171
|
+
ordered[keyPrefix + key] = createElementHolder(value, key);
|
|
172
|
+
}
|
|
173
|
+
ordered[END_MARK] = null;
|
|
174
|
+
return ordered;
|
|
175
|
+
};
|
|
176
|
+
|
|
95
177
|
// `JSON.stringify` method
|
|
96
178
|
// https://tc39.es/ecma262/#sec-json.stringify
|
|
97
179
|
// https://github.com/tc39/proposal-json-parse-with-source
|
|
98
180
|
if ($stringify) $({ target: 'JSON', stat: true, arity: 3, forced: WRONG_SYMBOLS_CONVERSION || ILL_FORMED_UNICODE || !NATIVE_RAW_JSON }, {
|
|
99
181
|
stringify: function stringify(text, replacer, space) {
|
|
100
|
-
var replacerFunction =
|
|
182
|
+
var replacerFunction = isCallable(replacer) ? replacer : undefined;
|
|
183
|
+
var propertyList = replacerFunction ? undefined : getPropertyList(replacer);
|
|
184
|
+
var keyPrefix = propertyList && getKeyPrefix(propertyList);
|
|
101
185
|
var rawStrings = [];
|
|
186
|
+
var openObjects = [];
|
|
187
|
+
var parentOrdered = [];
|
|
188
|
+
var currentOrdered;
|
|
189
|
+
var marked = false;
|
|
190
|
+
var root = true;
|
|
102
191
|
|
|
103
192
|
var json = stringifyWithProperSymbolsConversion(text, function (key, value) {
|
|
104
193
|
// some old implementations (like WebKit) could pass numbers as keys
|
|
105
|
-
|
|
106
|
-
|
|
194
|
+
key = $String(key);
|
|
195
|
+
|
|
196
|
+
if (propertyList) {
|
|
197
|
+
if (key === END_MARK) {
|
|
198
|
+
pop(openObjects);
|
|
199
|
+
currentOrdered = pop(parentOrdered);
|
|
200
|
+
return;
|
|
201
|
+
}
|
|
202
|
+
if (root) root = false;
|
|
203
|
+
// the innermost reordered object already contains only keys of the property list and arrays are not
|
|
204
|
+
// affected by it, the rest of objects (like objects with a fake `Symbol.toStringTag`) are filtered here
|
|
205
|
+
else if (this !== currentOrdered && !isArray(this) && !includes(propertyList, key)) return;
|
|
206
|
+
} else if (replacerFunction) value = call(replacerFunction, this, key, value);
|
|
207
|
+
|
|
208
|
+
if (isRawJSONValue(value)) {
|
|
209
|
+
if (NATIVE_RAW_JSON) return value;
|
|
210
|
+
marked = true;
|
|
211
|
+
return RAW_MARK + (push(rawStrings, value.rawJSON) - 1);
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
if (propertyList && isSerializedAsObject(value)) {
|
|
215
|
+
// reordered objects are new each time, so cycles should be detected before the engine does it
|
|
216
|
+
if (includes(openObjects, value)) throw new $TypeError('Converting circular structure to JSON');
|
|
217
|
+
var ordered = createOrderedObject(value, propertyList, keyPrefix);
|
|
218
|
+
push(openObjects, value);
|
|
219
|
+
push(parentOrdered, currentOrdered);
|
|
220
|
+
currentOrdered = ordered;
|
|
221
|
+
if (keyPrefix) marked = true;
|
|
222
|
+
return ordered;
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
return value;
|
|
107
226
|
}, space);
|
|
108
227
|
|
|
109
228
|
if (typeof json != 'string') return json;
|
|
110
229
|
|
|
111
230
|
if (ILL_FORMED_UNICODE) json = replace(json, surrogates, fixIllFormedJSON);
|
|
112
231
|
|
|
113
|
-
if (
|
|
232
|
+
if (!marked) return json;
|
|
114
233
|
|
|
115
234
|
var result = '';
|
|
116
235
|
var length = json.length;
|
|
@@ -120,9 +239,9 @@ if ($stringify) $({ target: 'JSON', stat: true, arity: 3, forced: WRONG_SYMBOLS_
|
|
|
120
239
|
if (chr === '"') {
|
|
121
240
|
var end = parseJSONString(json, ++i).end - 1;
|
|
122
241
|
var string = slice(json, i, end);
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
242
|
+
if (slice(string, 0, RAW_MARK_LENGTH) === RAW_MARK) result += rawStrings[slice(string, RAW_MARK_LENGTH)];
|
|
243
|
+
else if (slice(string, 0, KEY_MARK_LENGTH) === KEY_MARK) result += '"' + slice(string, KEY_MARK_LENGTH) + '"';
|
|
244
|
+
else result += '"' + string + '"';
|
|
126
245
|
i = end;
|
|
127
246
|
} else result += chr;
|
|
128
247
|
}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
var $ = require('../internals/export');
|
|
3
3
|
var aCallable = require('../internals/a-callable');
|
|
4
|
-
var aMap = require('../internals/a-map');
|
|
5
4
|
var MapHelpers = require('../internals/map-helpers');
|
|
6
5
|
var IS_PURE = require('../internals/is-pure');
|
|
7
6
|
|
|
@@ -10,12 +9,12 @@ var has = MapHelpers.has;
|
|
|
10
9
|
var set = MapHelpers.set;
|
|
11
10
|
|
|
12
11
|
// `Map.prototype.getOrInsertComputed` method
|
|
13
|
-
// https://
|
|
12
|
+
// https://tc39.es/ecma262/#sec-map.prototype.getorinsertcomputed
|
|
14
13
|
$({ target: 'Map', proto: true, real: true, forced: IS_PURE }, {
|
|
15
14
|
getOrInsertComputed: function getOrInsertComputed(key, callbackfn) {
|
|
16
|
-
|
|
15
|
+
var hasKey = has(this, key);
|
|
17
16
|
aCallable(callbackfn);
|
|
18
|
-
if (
|
|
17
|
+
if (hasKey) return get(this, key);
|
|
19
18
|
// CanonicalizeKeyedCollectionKey
|
|
20
19
|
if (key === 0 && 1 / key === -Infinity) key = 0;
|
|
21
20
|
var value = callbackfn(key);
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
var $ = require('../internals/export');
|
|
3
|
-
var aMap = require('../internals/a-map');
|
|
4
3
|
var MapHelpers = require('../internals/map-helpers');
|
|
5
4
|
var IS_PURE = require('../internals/is-pure');
|
|
6
5
|
|
|
@@ -9,10 +8,10 @@ var has = MapHelpers.has;
|
|
|
9
8
|
var set = MapHelpers.set;
|
|
10
9
|
|
|
11
10
|
// `Map.prototype.getOrInsert` method
|
|
12
|
-
// https://
|
|
11
|
+
// https://tc39.es/ecma262/#sec-map.prototype.getorinsert
|
|
13
12
|
$({ target: 'Map', proto: true, real: true, forced: IS_PURE }, {
|
|
14
13
|
getOrInsert: function getOrInsert(key, value) {
|
|
15
|
-
if (has(
|
|
14
|
+
if (has(this, key)) return get(this, key);
|
|
16
15
|
set(this, key, value);
|
|
17
16
|
return value;
|
|
18
17
|
}
|
|
@@ -4,6 +4,7 @@ var uncurryThis = require('../internals/function-uncurry-this');
|
|
|
4
4
|
var aCallable = require('../internals/a-callable');
|
|
5
5
|
var requireObjectCoercible = require('../internals/require-object-coercible');
|
|
6
6
|
var iterate = require('../internals/iterate');
|
|
7
|
+
var doesNotExceedSafeInteger = require('../internals/does-not-exceed-safe-integer');
|
|
7
8
|
var MapHelpers = require('../internals/map-helpers');
|
|
8
9
|
var IS_PURE = require('../internals/is-pure');
|
|
9
10
|
var fails = require('../internals/fails');
|
|
@@ -30,6 +31,7 @@ $({ target: 'Map', stat: true, forced: IS_PURE || DOES_NOT_WORK_WITH_PRIMITIVES
|
|
|
30
31
|
var map = new Map();
|
|
31
32
|
var k = 0;
|
|
32
33
|
iterate(items, function (value) {
|
|
34
|
+
doesNotExceedSafeInteger(k);
|
|
33
35
|
var key = callbackfn(value, k++);
|
|
34
36
|
if (!has(map, key)) set(map, key, [value]);
|
|
35
37
|
else push(get(map, key), value);
|
package/modules/es.math.asinh.js
CHANGED
|
@@ -1,14 +1,19 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
var $ = require('../internals/export');
|
|
3
|
+
var log1p = require('../internals/math-log1p');
|
|
3
4
|
|
|
4
5
|
// eslint-disable-next-line es/no-math-asinh -- required for testing
|
|
5
6
|
var $asinh = Math.asinh;
|
|
6
7
|
var log = Math.log;
|
|
7
8
|
var sqrt = Math.sqrt;
|
|
9
|
+
var LN2 = Math.LN2;
|
|
10
|
+
// sqrt(2 ** 53) - prevent n * n overflow
|
|
11
|
+
var SQRT_2_POW_53 = 94906265.62425156;
|
|
8
12
|
|
|
9
13
|
function asinh(x) {
|
|
10
14
|
var n = +x;
|
|
11
|
-
return !isFinite(n) || n === 0 ? n : n < 0 ? -asinh(-n) :
|
|
15
|
+
return !isFinite(n) || n === 0 ? n : n < 0 ? -asinh(-n) : n > SQRT_2_POW_53 ? log(n) + LN2
|
|
16
|
+
: n < 1e-8 ? n : log1p(n + n * n / (1 + sqrt(n * n + 1)));
|
|
12
17
|
}
|
|
13
18
|
|
|
14
19
|
var FORCED = !($asinh && 1 / $asinh(0) > 0);
|
package/modules/es.math.atanh.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
var $ = require('../internals/export');
|
|
3
|
+
var log1p = require('../internals/math-log1p');
|
|
3
4
|
|
|
4
5
|
// eslint-disable-next-line es/no-math-atanh -- required for testing
|
|
5
6
|
var $atanh = Math.atanh;
|
|
6
|
-
var log = Math.log;
|
|
7
7
|
|
|
8
8
|
var FORCED = !($atanh && 1 / $atanh(-0) < 0);
|
|
9
9
|
|
|
@@ -13,6 +13,6 @@ var FORCED = !($atanh && 1 / $atanh(-0) < 0);
|
|
|
13
13
|
$({ target: 'Math', stat: true, forced: FORCED }, {
|
|
14
14
|
atanh: function atanh(x) {
|
|
15
15
|
var n = +x;
|
|
16
|
-
return n === 0 ? n :
|
|
16
|
+
return n === 0 ? n : log1p(2 * n / (1 - n)) / 2;
|
|
17
17
|
}
|
|
18
18
|
});
|
package/modules/es.math.cbrt.js
CHANGED
|
@@ -10,6 +10,8 @@ var pow = Math.pow;
|
|
|
10
10
|
$({ target: 'Math', stat: true }, {
|
|
11
11
|
cbrt: function cbrt(x) {
|
|
12
12
|
var n = +x;
|
|
13
|
-
|
|
13
|
+
var y = sign(n) * pow(abs(n), 1 / 3);
|
|
14
|
+
// Newton-Raphson refinement for better precision
|
|
15
|
+
return n !== 0 && isFinite(n) ? (2 * y + n / (y * y)) / 3 : y;
|
|
14
16
|
}
|
|
15
17
|
});
|
|
@@ -14,7 +14,7 @@ var pow = Math.pow;
|
|
|
14
14
|
var push = uncurryThis([].push);
|
|
15
15
|
|
|
16
16
|
var POW_2_1023 = pow(2, 1023);
|
|
17
|
-
var MAX_SAFE_INTEGER = pow(2, 53) - 1; // 2 ** 53 - 1 ===
|
|
17
|
+
var MAX_SAFE_INTEGER = pow(2, 53) - 1; // 2 ** 53 - 1 === 9007199254740991
|
|
18
18
|
var MAX_DOUBLE = Number.MAX_VALUE; // 2 ** 1024 - 2 ** (1023 - 52) === 1.79769313486231570815e+308
|
|
19
19
|
var MAX_ULP = pow(2, 971); // 2 ** (1023 - 52) === 1.99584030953471981166e+292
|
|
20
20
|
|
|
@@ -32,7 +32,7 @@ var twosum = function (x, y) {
|
|
|
32
32
|
};
|
|
33
33
|
|
|
34
34
|
// `Math.sumPrecise` method
|
|
35
|
-
// https://
|
|
35
|
+
// https://tc39.es/ecma262/#sec-math.sumprecise
|
|
36
36
|
$({ target: 'Math', stat: true }, {
|
|
37
37
|
// eslint-disable-next-line max-statements -- ok
|
|
38
38
|
sumPrecise: function sumPrecise(items) {
|
|
@@ -41,7 +41,7 @@ $({ target: 'Math', stat: true }, {
|
|
|
41
41
|
var state = MINUS_ZERO;
|
|
42
42
|
|
|
43
43
|
iterate(items, function (n) {
|
|
44
|
-
if (++count
|
|
44
|
+
if (++count > MAX_SAFE_INTEGER) throw new $RangeError('Maximum allowed index exceeded');
|
|
45
45
|
if (typeof n != 'number') throw new $TypeError('Value is not a number');
|
|
46
46
|
if (state !== NOT_A_NUMBER) {
|
|
47
47
|
// eslint-disable-next-line no-self-compare -- NaN check
|
|
@@ -18,6 +18,8 @@ var nativeToExponential = uncurryThis(1.1.toExponential);
|
|
|
18
18
|
var repeat = uncurryThis($repeat);
|
|
19
19
|
var stringSlice = uncurryThis(''.slice);
|
|
20
20
|
|
|
21
|
+
var POW_10_308 = pow(10, 308);
|
|
22
|
+
|
|
21
23
|
// Edge 17-
|
|
22
24
|
var ROUNDS_PROPERLY = nativeToExponential(-6.9e-11, 4) === '-6.9000e-11'
|
|
23
25
|
// IE11- && Edge 14-
|
|
@@ -58,7 +60,7 @@ $({ target: 'Number', proto: true, forced: FORCED }, {
|
|
|
58
60
|
if (f < 0 || f > 20) throw new $RangeError('Incorrect fraction digits');
|
|
59
61
|
if (ROUNDS_PROPERLY) return nativeToExponential(x, f);
|
|
60
62
|
var s = '';
|
|
61
|
-
var m, e, c, d;
|
|
63
|
+
var m, e, c, d, l, n, xScaled;
|
|
62
64
|
if (x < 0) {
|
|
63
65
|
s = '-';
|
|
64
66
|
x = -x;
|
|
@@ -67,13 +69,20 @@ $({ target: 'Number', proto: true, forced: FORCED }, {
|
|
|
67
69
|
e = 0;
|
|
68
70
|
m = repeat('0', f + 1);
|
|
69
71
|
} else {
|
|
70
|
-
// this block is based on https://gist.github.com/SheetJSDev/1100ad56b9f856c95299ed0e068eea08
|
|
71
72
|
// TODO: improve accuracy with big fraction digits
|
|
72
|
-
|
|
73
|
+
l = log10(x);
|
|
73
74
|
e = floor(l);
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
75
|
+
// compute x / pow(10, e - f) and round, avoiding underflow/overflow
|
|
76
|
+
if (f - e >= 308) {
|
|
77
|
+
// pow(10, e - f) would underflow to a subnormal or zero; split computation
|
|
78
|
+
xScaled = x * POW_10_308 * pow(10, f - e - 308);
|
|
79
|
+
} else {
|
|
80
|
+
xScaled = x / pow(10, e - f);
|
|
81
|
+
}
|
|
82
|
+
n = round(xScaled);
|
|
83
|
+
// correct tie-breaking: round half up
|
|
84
|
+
// avoids `2 * x` overflow for values near MAX_VALUE
|
|
85
|
+
if (xScaled - n >= 0.5) {
|
|
77
86
|
n += 1;
|
|
78
87
|
}
|
|
79
88
|
if (n >= pow(10, f + 1)) {
|
|
@@ -7,6 +7,7 @@ var aCallable = require('../internals/a-callable');
|
|
|
7
7
|
var requireObjectCoercible = require('../internals/require-object-coercible');
|
|
8
8
|
var toPropertyKey = require('../internals/to-property-key');
|
|
9
9
|
var iterate = require('../internals/iterate');
|
|
10
|
+
var doesNotExceedSafeInteger = require('../internals/does-not-exceed-safe-integer');
|
|
10
11
|
var fails = require('../internals/fails');
|
|
11
12
|
|
|
12
13
|
// eslint-disable-next-line es/no-object-groupby -- testing
|
|
@@ -30,6 +31,7 @@ $({ target: 'Object', stat: true, forced: DOES_NOT_WORK_WITH_PRIMITIVES }, {
|
|
|
30
31
|
var obj = create(null);
|
|
31
32
|
var k = 0;
|
|
32
33
|
iterate(items, function (value) {
|
|
34
|
+
doesNotExceedSafeInteger(k);
|
|
33
35
|
var key = toPropertyKey(callbackfn(value, k++));
|
|
34
36
|
// in some IE versions, `hasOwnProperty` returns incorrect result on integer keys
|
|
35
37
|
// but since it's a `null` prototype object, we can safely use `in`
|
|
@@ -15,7 +15,8 @@ var PROTO = '__proto__';
|
|
|
15
15
|
|
|
16
16
|
// `Object.prototype.__proto__` accessor
|
|
17
17
|
// https://tc39.es/ecma262/#sec-object.prototype.__proto__
|
|
18
|
-
|
|
18
|
+
// Deno 2.9+ patch this accessor, so we can't use `in` for feature detection
|
|
19
|
+
if (DESCRIPTORS && getPrototypeOf && setPrototypeOf && ({}[PROTO] !== ObjectPrototype)) try {
|
|
19
20
|
defineBuiltInAccessor(ObjectPrototype, PROTO, {
|
|
20
21
|
configurable: true,
|
|
21
22
|
get: function __proto__() {
|
|
@@ -3,31 +3,39 @@ var $ = require('../internals/export');
|
|
|
3
3
|
var globalThis = require('../internals/global-this');
|
|
4
4
|
var apply = require('../internals/function-apply');
|
|
5
5
|
var slice = require('../internals/array-slice');
|
|
6
|
+
var promiseResolve = require('../internals/promise-resolve');
|
|
6
7
|
var newPromiseCapabilityModule = require('../internals/new-promise-capability');
|
|
7
8
|
var aCallable = require('../internals/a-callable');
|
|
8
9
|
var perform = require('../internals/perform');
|
|
10
|
+
var fails = require('../internals/fails');
|
|
9
11
|
|
|
10
12
|
var Promise = globalThis.Promise;
|
|
11
13
|
|
|
12
14
|
var ACCEPT_ARGUMENTS = false;
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
15
|
+
var FORCED = !Promise || !Promise['try'] || fails(function () {
|
|
16
|
+
var p = Promise.resolve();
|
|
17
|
+
return Promise['try'](function (argument) {
|
|
18
|
+
// avoiding the use of polyfills of the previous iteration of this proposal
|
|
19
|
+
// that does not accept arguments of the callback
|
|
17
20
|
ACCEPT_ARGUMENTS = argument === 8;
|
|
18
|
-
|
|
19
|
-
|
|
21
|
+
return p;
|
|
22
|
+
// it should use `PromiseResolve`
|
|
23
|
+
// https://github.com/tc39/ecma262/pull/3883
|
|
24
|
+
}, 8) !== p;
|
|
25
|
+
}) || !ACCEPT_ARGUMENTS;
|
|
20
26
|
|
|
21
27
|
// `Promise.try` method
|
|
22
28
|
// https://tc39.es/ecma262/#sec-promise.try
|
|
23
29
|
$({ target: 'Promise', stat: true, forced: FORCED }, {
|
|
24
30
|
'try': function (callbackfn /* , ...args */) {
|
|
25
31
|
var args = arguments.length > 1 ? slice(arguments, 1) : [];
|
|
26
|
-
var promiseCapability = newPromiseCapabilityModule.f(this);
|
|
27
32
|
var result = perform(function () {
|
|
28
33
|
return apply(aCallable(callbackfn), undefined, args);
|
|
29
34
|
});
|
|
30
|
-
(result.error
|
|
35
|
+
if (!result.error) return promiseResolve(this, result.value);
|
|
36
|
+
var promiseCapability = newPromiseCapabilityModule.f(this);
|
|
37
|
+
var reject = promiseCapability.reject;
|
|
38
|
+
reject(result.value);
|
|
31
39
|
return promiseCapability.promise;
|
|
32
40
|
}
|
|
33
41
|
});
|
|
@@ -31,8 +31,8 @@ var FORCED = NEW_TARGET_BUG || ARGS_BUG;
|
|
|
31
31
|
$({ target: 'Reflect', stat: true, forced: FORCED, sham: FORCED }, {
|
|
32
32
|
construct: function construct(Target, args /* , newTarget */) {
|
|
33
33
|
aConstructor(Target);
|
|
34
|
-
anObject(args);
|
|
35
34
|
var newTarget = arguments.length < 3 ? Target : aConstructor(arguments[2]);
|
|
35
|
+
anObject(args);
|
|
36
36
|
if (ARGS_BUG && !NEW_TARGET_BUG) return nativeConstruct(Target, args, newTarget);
|
|
37
37
|
if (Target === newTarget) {
|
|
38
38
|
// w/o altered newTarget, optimization for 0-4 arguments
|
|
@@ -4,8 +4,11 @@ var DESCRIPTORS = require('../internals/descriptors');
|
|
|
4
4
|
var anObject = require('../internals/an-object');
|
|
5
5
|
var toPropertyKey = require('../internals/to-property-key');
|
|
6
6
|
var definePropertyModule = require('../internals/object-define-property');
|
|
7
|
+
var isCallable = require('../internals/is-callable');
|
|
7
8
|
var fails = require('../internals/fails');
|
|
8
9
|
|
|
10
|
+
var $TypeError = TypeError;
|
|
11
|
+
|
|
9
12
|
// MS Edge has broken Reflect.defineProperty - throwing instead of returning false
|
|
10
13
|
var ERROR_INSTEAD_OF_FALSE = fails(function () {
|
|
11
14
|
// eslint-disable-next-line es/no-reflect -- required for testing
|
|
@@ -18,7 +21,14 @@ $({ target: 'Reflect', stat: true, forced: ERROR_INSTEAD_OF_FALSE, sham: !DESCRI
|
|
|
18
21
|
defineProperty: function defineProperty(target, propertyKey, attributes) {
|
|
19
22
|
anObject(target);
|
|
20
23
|
var key = toPropertyKey(propertyKey);
|
|
24
|
+
var get, set;
|
|
21
25
|
anObject(attributes);
|
|
26
|
+
// propagate `ToPropertyDescriptor` errors instead of catching them
|
|
27
|
+
if (('get' in attributes || 'set' in attributes) && (
|
|
28
|
+
('get' in attributes && !isCallable(get = attributes.get) && get !== undefined) ||
|
|
29
|
+
('set' in attributes && !isCallable(set = attributes.set) && set !== undefined) ||
|
|
30
|
+
('value' in attributes || 'writable' in attributes)
|
|
31
|
+
)) throw new $TypeError('Invalid property descriptor');
|
|
22
32
|
try {
|
|
23
33
|
definePropertyModule.f(target, key, attributes);
|
|
24
34
|
return true;
|
|
@@ -2,12 +2,15 @@
|
|
|
2
2
|
var $ = require('../internals/export');
|
|
3
3
|
var anObject = require('../internals/an-object');
|
|
4
4
|
var getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;
|
|
5
|
+
var toPropertyKey = require('../internals/to-property-key');
|
|
5
6
|
|
|
6
7
|
// `Reflect.deleteProperty` method
|
|
7
8
|
// https://tc39.es/ecma262/#sec-reflect.deleteproperty
|
|
8
9
|
$({ target: 'Reflect', stat: true }, {
|
|
9
10
|
deleteProperty: function deleteProperty(target, propertyKey) {
|
|
10
|
-
|
|
11
|
-
|
|
11
|
+
anObject(target);
|
|
12
|
+
var key = toPropertyKey(propertyKey);
|
|
13
|
+
var descriptor = getOwnPropertyDescriptor(target, key);
|
|
14
|
+
return descriptor && !descriptor.configurable ? false : delete target[key];
|
|
12
15
|
}
|
|
13
16
|
});
|
|
@@ -6,20 +6,22 @@ var anObject = require('../internals/an-object');
|
|
|
6
6
|
var isDataDescriptor = require('../internals/is-data-descriptor');
|
|
7
7
|
var getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');
|
|
8
8
|
var getPrototypeOf = require('../internals/object-get-prototype-of');
|
|
9
|
+
var toPropertyKey = require('../internals/to-property-key');
|
|
9
10
|
|
|
10
11
|
// `Reflect.get` method
|
|
11
12
|
// https://tc39.es/ecma262/#sec-reflect.get
|
|
12
|
-
function
|
|
13
|
-
var receiver = arguments.length < 3 ? target : arguments[2];
|
|
14
|
-
var descriptor, prototype;
|
|
13
|
+
var $get = function (target, propertyKey, receiver) {
|
|
15
14
|
if (anObject(target) === receiver) return target[propertyKey];
|
|
16
|
-
descriptor = getOwnPropertyDescriptorModule.f(target, propertyKey);
|
|
15
|
+
var descriptor = getOwnPropertyDescriptorModule.f(target, propertyKey);
|
|
17
16
|
if (descriptor) return isDataDescriptor(descriptor)
|
|
18
17
|
? descriptor.value
|
|
19
18
|
: descriptor.get === undefined ? undefined : call(descriptor.get, receiver);
|
|
20
|
-
|
|
21
|
-
|
|
19
|
+
var prototype = getPrototypeOf(target);
|
|
20
|
+
if (isObject(prototype)) return $get(prototype, propertyKey, receiver);
|
|
21
|
+
};
|
|
22
22
|
|
|
23
23
|
$({ target: 'Reflect', stat: true }, {
|
|
24
|
-
get: get
|
|
24
|
+
get: function get(target, propertyKey /* , receiver */) {
|
|
25
|
+
return $get(anObject(target), toPropertyKey(propertyKey), arguments.length < 3 ? target : arguments[2]);
|
|
26
|
+
}
|
|
25
27
|
});
|