core-js 3.49.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/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/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/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/array-fill.js +2 -1
- package/internals/array-from-async.js +2 -2
- package/internals/array-from.js +8 -2
- package/internals/async-iterator-create-proxy.js +14 -2
- package/internals/error-stack-clear.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 +2 -2
- package/internals/iterator-chunk-size-validation.js +17 -0
- package/internals/iterator-cleanup-state.js +6 -0
- package/internals/iterator-create-proxy.js +10 -4
- package/internals/iterator-window.js +2 -4
- package/internals/iterators.js +1 -1
- package/internals/math-log1p.js +3 -1
- package/internals/shared-store.js +2 -2
- package/internals/shared.js +3 -1
- package/internals/typed-array-from.js +2 -2
- package/internals/uint8-from-base64.js +4 -2
- package/internals/uint8-from-hex.js +1 -1
- package/internals/url-percent-coding.js +171 -0
- package/modules/es.date.to-json.js +1 -1
- package/modules/es.escape.js +10 -8
- package/modules/es.iterator.concat.js +1 -1
- package/modules/es.iterator.drop.js +16 -1
- package/modules/es.iterator.flat-map.js +12 -14
- package/modules/es.iterator.take.js +16 -1
- package/modules/es.iterator.zip-keyed.js +70 -0
- package/modules/es.iterator.zip.js +92 -0
- package/modules/es.json.parse.js +1 -1
- package/modules/es.json.stringify.js +150 -34
- package/modules/es.map.group-by.js +2 -0
- package/modules/es.math.asinh.js +3 -1
- package/modules/es.math.cbrt.js +3 -1
- 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.string.match.js +3 -1
- package/modules/es.string.search.js +3 -1
- package/modules/es.uint8-array.to-base64.js +22 -5
- 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.windows.js +2 -1
- package/modules/esnext.iterator.zip-keyed.js +2 -71
- package/modules/esnext.iterator.zip.js +2 -91
- package/modules/esnext.observable.from.js +2 -2
- package/modules/esnext.promise.all-keyed.js +57 -0
- package/modules/esnext.promise.all-settled-keyed.js +60 -0
- package/modules/web.url-search-params.constructor.js +11 -143
- package/modules/web.url.constructor.js +103 -17
- package/modules/web.url.to-json.js +4 -1
- package/package.json +4 -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,14 +1,11 @@
|
|
|
1
1
|
'use strict';
|
|
2
|
-
var classof = require('../internals/classof');
|
|
3
|
-
var getMethod = require('../internals/get-method');
|
|
4
|
-
var isNullOrUndefined = require('../internals/is-null-or-undefined');
|
|
5
|
-
var Iterators = require('../internals/iterators');
|
|
2
|
+
var classof = require('../internals/classof-raw');
|
|
6
3
|
var wellKnownSymbol = require('../internals/well-known-symbol');
|
|
7
4
|
|
|
8
5
|
var ITERATOR = wellKnownSymbol('iterator');
|
|
6
|
+
var ArrayPrototype = Array.prototype;
|
|
9
7
|
|
|
10
8
|
module.exports = function (it) {
|
|
11
|
-
|
|
12
|
-
||
|
|
13
|
-
|| Iterators[classof(it)];
|
|
9
|
+
return it[ITERATOR] || it['@@iterator']
|
|
10
|
+
|| (classof(it) === 'Arguments' ? ArrayPrototype[ITERATOR] : undefined);
|
|
14
11
|
};
|
|
@@ -1,14 +1,13 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
var call = require('../internals/function-call');
|
|
3
|
-
var
|
|
4
|
-
var anObject = require('../internals/an-object');
|
|
3
|
+
var isCallable = require('../internals/is-callable');
|
|
5
4
|
var tryToString = require('../internals/try-to-string');
|
|
6
5
|
var getIteratorMethod = require('../internals/get-iterator-method');
|
|
7
6
|
|
|
8
7
|
var $TypeError = TypeError;
|
|
9
8
|
|
|
10
|
-
module.exports = function (argument
|
|
11
|
-
var iteratorMethod =
|
|
12
|
-
if (
|
|
9
|
+
module.exports = function (argument) {
|
|
10
|
+
var iteratorMethod = getIteratorMethod(argument);
|
|
11
|
+
if (isCallable(iteratorMethod)) return call(iteratorMethod, argument);
|
|
13
12
|
throw new $TypeError(tryToString(argument) + ' is not iterable');
|
|
14
13
|
};
|
package/internals/is-iterable.js
CHANGED
|
@@ -1,17 +1,11 @@
|
|
|
1
1
|
'use strict';
|
|
2
|
-
var classof = require('../internals/classof');
|
|
3
|
-
var hasOwn = require('../internals/has-own-property');
|
|
4
|
-
var isNullOrUndefined = require('../internals/is-null-or-undefined');
|
|
2
|
+
var classof = require('../internals/classof-raw');
|
|
5
3
|
var wellKnownSymbol = require('../internals/well-known-symbol');
|
|
6
|
-
var Iterators = require('../internals/iterators');
|
|
7
4
|
|
|
8
5
|
var ITERATOR = wellKnownSymbol('iterator');
|
|
9
|
-
var $Object = Object;
|
|
10
6
|
|
|
11
7
|
module.exports = function (it) {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|| '@@iterator' in O
|
|
16
|
-
|| hasOwn(Iterators, classof(O));
|
|
8
|
+
return it[ITERATOR] !== undefined
|
|
9
|
+
|| it['@@iterator'] !== undefined
|
|
10
|
+
|| classof(it) === 'Arguments';
|
|
17
11
|
};
|
package/internals/iterate.js
CHANGED
|
@@ -6,8 +6,8 @@ var tryToString = require('../internals/try-to-string');
|
|
|
6
6
|
var isArrayIteratorMethod = require('../internals/is-array-iterator-method');
|
|
7
7
|
var lengthOfArrayLike = require('../internals/length-of-array-like');
|
|
8
8
|
var isPrototypeOf = require('../internals/object-is-prototype-of');
|
|
9
|
-
var getIterator = require('../internals/get-iterator');
|
|
10
|
-
var getIteratorMethod = require('../internals/get-iterator-method');
|
|
9
|
+
var getIterator = require('../internals/get-iterator-internal');
|
|
10
|
+
var getIteratorMethod = require('../internals/get-iterator-method-internal');
|
|
11
11
|
var iteratorClose = require('../internals/iterator-close');
|
|
12
12
|
|
|
13
13
|
var $TypeError = TypeError;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
var isIntegralNumber = require('../internals/is-integral-number');
|
|
3
|
+
var iteratorClose = require('../internals/iterator-close');
|
|
4
|
+
|
|
5
|
+
var $RangeError = RangeError;
|
|
6
|
+
var $TypeError = TypeError;
|
|
7
|
+
|
|
8
|
+
var CHUNK_SIZE_VALIDATION_ERROR = 'Chunk size must be an integer in [1, 2^32-1]';
|
|
9
|
+
|
|
10
|
+
module.exports = function (chunkSize, iterator) {
|
|
11
|
+
if (typeof chunkSize != 'number' || !isIntegralNumber(chunkSize)) {
|
|
12
|
+
return iteratorClose(iterator, 'throw', new $TypeError(CHUNK_SIZE_VALIDATION_ERROR));
|
|
13
|
+
}
|
|
14
|
+
if (chunkSize === 0 || chunkSize >>> 0 !== chunkSize) {
|
|
15
|
+
return iteratorClose(iterator, 'throw', new $RangeError(CHUNK_SIZE_VALIDATION_ERROR));
|
|
16
|
+
}
|
|
17
|
+
};
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
// release references held by exhausted / closed iterator helpers to allow GC of the source chain
|
|
3
|
+
module.exports = function (state) {
|
|
4
|
+
state.iterator = state.next = state.nextHandler = state.mapper = state.predicate = state.inner =
|
|
5
|
+
state.iterables = state.iters = state.openIters = state.padding = state.finishResults = state.buffer = null;
|
|
6
|
+
};
|
|
@@ -10,6 +10,7 @@ var IteratorPrototype = require('../internals/iterators-core').IteratorPrototype
|
|
|
10
10
|
var createIterResultObject = require('../internals/create-iter-result-object');
|
|
11
11
|
var iteratorClose = require('../internals/iterator-close');
|
|
12
12
|
var iteratorCloseAll = require('../internals/iterator-close-all');
|
|
13
|
+
var cleanupState = require('../internals/iterator-cleanup-state');
|
|
13
14
|
|
|
14
15
|
var TO_STRING_TAG = wellKnownSymbol('toStringTag');
|
|
15
16
|
var ITERATOR_HELPER = 'IteratorHelper';
|
|
@@ -31,29 +32,34 @@ var createIteratorProxyPrototype = function (IS_ITERATOR) {
|
|
|
31
32
|
if (state.done) return createIterResultObject(undefined, true);
|
|
32
33
|
try {
|
|
33
34
|
var result = state.nextHandler();
|
|
35
|
+
if (state.done) cleanupState(state);
|
|
34
36
|
return state.returnHandlerResult ? result : createIterResultObject(result, state.done);
|
|
35
37
|
} catch (error) {
|
|
36
38
|
state.done = true;
|
|
39
|
+
cleanupState(state);
|
|
37
40
|
throw error;
|
|
38
41
|
}
|
|
39
42
|
},
|
|
40
43
|
'return': function () {
|
|
41
44
|
var state = getInternalState(this);
|
|
42
45
|
var iterator = state.iterator;
|
|
46
|
+
var inner = state.inner;
|
|
47
|
+
var openIters = state.openIters;
|
|
43
48
|
var done = state.done;
|
|
44
49
|
state.done = true;
|
|
45
50
|
if (IS_ITERATOR) {
|
|
46
51
|
var returnMethod = getMethod(iterator, 'return');
|
|
47
52
|
return returnMethod ? call(returnMethod, iterator) : createIterResultObject(undefined, true);
|
|
48
53
|
}
|
|
54
|
+
cleanupState(state);
|
|
49
55
|
if (done) return createIterResultObject(undefined, true);
|
|
50
|
-
if (
|
|
51
|
-
iteratorClose(
|
|
56
|
+
if (inner) try {
|
|
57
|
+
iteratorClose(inner.iterator, NORMAL);
|
|
52
58
|
} catch (error) {
|
|
53
59
|
return iteratorClose(iterator, THROW, error);
|
|
54
60
|
}
|
|
55
|
-
if (
|
|
56
|
-
iteratorCloseAll(
|
|
61
|
+
if (openIters) try {
|
|
62
|
+
iteratorCloseAll(openIters, NORMAL);
|
|
57
63
|
} catch (error) {
|
|
58
64
|
if (iterator) return iteratorClose(iterator, THROW, error);
|
|
59
65
|
throw error;
|
|
@@ -5,9 +5,9 @@ var createIteratorProxy = require('../internals/iterator-create-proxy');
|
|
|
5
5
|
var createIterResultObject = require('../internals/create-iter-result-object');
|
|
6
6
|
var getIteratorDirect = require('../internals/get-iterator-direct');
|
|
7
7
|
var iteratorClose = require('../internals/iterator-close');
|
|
8
|
+
var chunkSizeValidation = require('../internals/iterator-chunk-size-validation');
|
|
8
9
|
var uncurryThis = require('../internals/function-uncurry-this');
|
|
9
10
|
|
|
10
|
-
var $RangeError = RangeError;
|
|
11
11
|
var $TypeError = TypeError;
|
|
12
12
|
var push = uncurryThis([].push);
|
|
13
13
|
var slice = uncurryThis([].slice);
|
|
@@ -36,9 +36,7 @@ var IteratorProxy = createIteratorProxy(function () {
|
|
|
36
36
|
// https://github.com/tc39/proposal-iterator-chunking
|
|
37
37
|
module.exports = function (O, windowSize, undersized) {
|
|
38
38
|
anObject(O);
|
|
39
|
-
|
|
40
|
-
return iteratorClose(O, 'throw', new $RangeError('`windowSize` must be integer in [1, 2^32-1]'));
|
|
41
|
-
}
|
|
39
|
+
chunkSizeValidation(windowSize, O);
|
|
42
40
|
if (undersized !== undefined && undersized !== 'only-full' && undersized !== ALLOW_PARTIAL) {
|
|
43
41
|
return iteratorClose(O, 'throw', new $TypeError('Incorrect `undersized` argument'));
|
|
44
42
|
}
|
package/internals/iterators.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
'use strict';
|
|
2
|
-
module.exports = {};
|
|
2
|
+
module.exports = Object.create ? Object.create(null) : {};
|
package/internals/math-log1p.js
CHANGED
|
@@ -6,5 +6,7 @@ var log = Math.log;
|
|
|
6
6
|
// eslint-disable-next-line es/no-math-log1p -- safe
|
|
7
7
|
module.exports = Math.log1p || function log1p(x) {
|
|
8
8
|
var n = +x;
|
|
9
|
-
|
|
9
|
+
if (n > -1e-8 && n < 1e-8) return n - n * n / 2;
|
|
10
|
+
var u = 1 + n;
|
|
11
|
+
return u === 1 ? n : n === u - 1 ? log(u) : n * log(u) / (u - 1);
|
|
10
12
|
};
|
|
@@ -7,9 +7,9 @@ var SHARED = '__core-js_shared__';
|
|
|
7
7
|
var store = module.exports = globalThis[SHARED] || defineGlobalProperty(SHARED, {});
|
|
8
8
|
|
|
9
9
|
(store.versions || (store.versions = [])).push({
|
|
10
|
-
version: '3.
|
|
10
|
+
version: '3.50.0',
|
|
11
11
|
mode: IS_PURE ? 'pure' : 'global',
|
|
12
12
|
copyright: '© 2013–2025 Denis Pushkarev (zloirock.ru), 2025–2026 CoreJS Company (core-js.io). All rights reserved.',
|
|
13
|
-
license: 'https://github.com/zloirock/core-js/blob/v3.
|
|
13
|
+
license: 'https://github.com/zloirock/core-js/blob/v3.50.0/LICENSE',
|
|
14
14
|
source: 'https://github.com/zloirock/core-js'
|
|
15
15
|
});
|
package/internals/shared.js
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
var store = require('../internals/shared-store');
|
|
3
|
+
// eslint-disable-next-line es/no-object-create -- safe
|
|
4
|
+
var create = Object.create || Object;
|
|
3
5
|
|
|
4
6
|
module.exports = function (key, value) {
|
|
5
|
-
return store[key] || (store[key] = value ||
|
|
7
|
+
return store[key] || (store[key] = value || create(null));
|
|
6
8
|
};
|
|
@@ -5,8 +5,8 @@ var aCallable = require('../internals/a-callable');
|
|
|
5
5
|
var aConstructor = require('../internals/a-constructor');
|
|
6
6
|
var toObject = require('../internals/to-object');
|
|
7
7
|
var lengthOfArrayLike = require('../internals/length-of-array-like');
|
|
8
|
-
var getIterator = require('../internals/get-iterator');
|
|
9
|
-
var getIteratorMethod = require('../internals/get-iterator-method');
|
|
8
|
+
var getIterator = require('../internals/get-iterator-internal');
|
|
9
|
+
var getIteratorMethod = require('../internals/get-iterator-method-internal');
|
|
10
10
|
var isArrayIteratorMethod = require('../internals/is-array-iterator-method');
|
|
11
11
|
var isBigIntArray = require('../internals/is-big-int-array');
|
|
12
12
|
var aTypedArrayConstructor = require('../internals/array-buffer-view-core').aTypedArrayConstructor;
|
|
@@ -13,7 +13,9 @@ var base64UrlAlphabet = base64Map.c2iUrl;
|
|
|
13
13
|
|
|
14
14
|
var SyntaxError = globalThis.SyntaxError;
|
|
15
15
|
var TypeError = globalThis.TypeError;
|
|
16
|
+
var $Array = globalThis.Array;
|
|
16
17
|
var at = uncurryThis(''.charAt);
|
|
18
|
+
var floor = Math.floor;
|
|
17
19
|
|
|
18
20
|
var skipAsciiWhitespace = function (string, index) {
|
|
19
21
|
var length = string.length;
|
|
@@ -82,7 +84,7 @@ module.exports = function (string, options, into, maxLength) {
|
|
|
82
84
|
if (into) notDetached(into.buffer);
|
|
83
85
|
|
|
84
86
|
var stringLength = string.length;
|
|
85
|
-
var bytes = into ||
|
|
87
|
+
var bytes = into || $Array(floor(stringLength * 3 / 4));
|
|
86
88
|
var written = 0;
|
|
87
89
|
var read = 0;
|
|
88
90
|
var chunk = '';
|
|
@@ -152,6 +154,6 @@ module.exports = function (string, options, into, maxLength) {
|
|
|
152
154
|
}
|
|
153
155
|
}
|
|
154
156
|
}
|
|
155
|
-
|
|
157
|
+
if (!into) bytes.length = written;
|
|
156
158
|
return { bytes: bytes, read: read, written: written };
|
|
157
159
|
};
|
|
@@ -12,7 +12,7 @@ module.exports = function (string, into) {
|
|
|
12
12
|
if (stringLength % 2 !== 0) throw new SyntaxError('String should be an even number of characters');
|
|
13
13
|
var maxLength = into ? min(into.length, stringLength / 2) : stringLength / 2;
|
|
14
14
|
var bytes = into || new Uint8Array(maxLength);
|
|
15
|
-
var segments = stringMatch(string,
|
|
15
|
+
var segments = stringMatch(string, /[\S\s]{2}/g);
|
|
16
16
|
var written = 0;
|
|
17
17
|
for (; written < maxLength; written++) {
|
|
18
18
|
var result = +('0x' + segments[written] + '0');
|
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
// TODO: in core-js@4, move /modules/ dependencies to public entries for better optimization by tools like `preset-env`
|
|
3
|
+
require('../modules/es.string.from-code-point');
|
|
4
|
+
var getBuiltIn = require('../internals/get-built-in');
|
|
5
|
+
var uncurryThis = require('../internals/function-uncurry-this');
|
|
6
|
+
|
|
7
|
+
var fromCharCode = String.fromCharCode;
|
|
8
|
+
var fromCodePoint = getBuiltIn('String', 'fromCodePoint');
|
|
9
|
+
var $encodeURIComponent = encodeURIComponent;
|
|
10
|
+
var $parseInt = parseInt;
|
|
11
|
+
var charAt = uncurryThis(''.charAt);
|
|
12
|
+
var push = uncurryThis([].push);
|
|
13
|
+
var replace = uncurryThis(''.replace);
|
|
14
|
+
var stringSlice = uncurryThis(''.slice);
|
|
15
|
+
var exec = uncurryThis(/./.exec);
|
|
16
|
+
|
|
17
|
+
var FALLBACK_REPLACER = '\uFFFD';
|
|
18
|
+
var VALID_HEX = /^[0-9a-f]+$/i;
|
|
19
|
+
// a surrogate pair is matched first, so a one-unit match is always a lone surrogate
|
|
20
|
+
var SURROGATE = /[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDFFF]/g;
|
|
21
|
+
|
|
22
|
+
var parseHexOctet = function (string, start) {
|
|
23
|
+
var substr = stringSlice(string, start, start + 2);
|
|
24
|
+
if (!exec(VALID_HEX, substr)) return NaN;
|
|
25
|
+
|
|
26
|
+
return $parseInt(substr, 16);
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
var getLeadingOnes = function (octet) {
|
|
30
|
+
var count = 0;
|
|
31
|
+
for (var mask = 0x80; mask > 0 && (octet & mask) !== 0; mask >>= 1) {
|
|
32
|
+
count++;
|
|
33
|
+
}
|
|
34
|
+
return count;
|
|
35
|
+
};
|
|
36
|
+
|
|
37
|
+
var utf8Decode = function (octets) {
|
|
38
|
+
var codePoint = null;
|
|
39
|
+
var length = octets.length;
|
|
40
|
+
|
|
41
|
+
switch (length) {
|
|
42
|
+
case 1:
|
|
43
|
+
codePoint = octets[0];
|
|
44
|
+
break;
|
|
45
|
+
case 2:
|
|
46
|
+
codePoint = (octets[0] & 0x1F) << 6 | (octets[1] & 0x3F);
|
|
47
|
+
break;
|
|
48
|
+
case 3:
|
|
49
|
+
codePoint = (octets[0] & 0x0F) << 12 | (octets[1] & 0x3F) << 6 | (octets[2] & 0x3F);
|
|
50
|
+
break;
|
|
51
|
+
case 4:
|
|
52
|
+
codePoint = (octets[0] & 0x07) << 18 | (octets[1] & 0x3F) << 12 | (octets[2] & 0x3F) << 6 | (octets[3] & 0x3F);
|
|
53
|
+
break;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
// reject surrogates, overlong encodings, and out-of-range codepoints
|
|
57
|
+
if (codePoint === null
|
|
58
|
+
|| codePoint > 0x10FFFF
|
|
59
|
+
|| (codePoint >= 0xD800 && codePoint <= 0xDFFF)
|
|
60
|
+
|| codePoint < (length > 3 ? 0x10000 : length > 2 ? 0x800 : length > 1 ? 0x80 : 0)
|
|
61
|
+
) return null;
|
|
62
|
+
|
|
63
|
+
return codePoint;
|
|
64
|
+
};
|
|
65
|
+
|
|
66
|
+
var replaceLoneSurrogate = function (chunk) {
|
|
67
|
+
return chunk.length === 2 ? chunk : FALLBACK_REPLACER;
|
|
68
|
+
};
|
|
69
|
+
|
|
70
|
+
// https://url.spec.whatwg.org/#percent-decode
|
|
71
|
+
/* eslint-disable max-depth -- ok */
|
|
72
|
+
var decode = function (input) {
|
|
73
|
+
var length = input.length;
|
|
74
|
+
var result = '';
|
|
75
|
+
var i = 0;
|
|
76
|
+
|
|
77
|
+
while (i < length) {
|
|
78
|
+
var decodedChar = charAt(input, i);
|
|
79
|
+
|
|
80
|
+
if (decodedChar === '%') {
|
|
81
|
+
if (charAt(input, i + 1) === '%' || i + 3 > length) {
|
|
82
|
+
result += '%';
|
|
83
|
+
i++;
|
|
84
|
+
continue;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
var octet = parseHexOctet(input, i + 1);
|
|
88
|
+
|
|
89
|
+
// eslint-disable-next-line no-self-compare -- NaN check
|
|
90
|
+
if (octet !== octet) {
|
|
91
|
+
result += decodedChar;
|
|
92
|
+
i++;
|
|
93
|
+
continue;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
i += 2;
|
|
97
|
+
var byteSequenceLength = getLeadingOnes(octet);
|
|
98
|
+
|
|
99
|
+
if (byteSequenceLength === 0) {
|
|
100
|
+
decodedChar = fromCharCode(octet);
|
|
101
|
+
} else {
|
|
102
|
+
if (byteSequenceLength === 1 || byteSequenceLength > 4) {
|
|
103
|
+
result += FALLBACK_REPLACER;
|
|
104
|
+
i++;
|
|
105
|
+
continue;
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
var octets = [octet];
|
|
109
|
+
var sequenceIndex = 1;
|
|
110
|
+
|
|
111
|
+
while (sequenceIndex < byteSequenceLength) {
|
|
112
|
+
i++;
|
|
113
|
+
if (i + 3 > length || charAt(input, i) !== '%') break;
|
|
114
|
+
|
|
115
|
+
var nextByte = parseHexOctet(input, i + 1);
|
|
116
|
+
|
|
117
|
+
// eslint-disable-next-line no-self-compare -- NaN check
|
|
118
|
+
if (nextByte !== nextByte || nextByte > 191 || nextByte < 128) break;
|
|
119
|
+
|
|
120
|
+
// https://encoding.spec.whatwg.org/#utf-8-decoder - position-specific byte ranges
|
|
121
|
+
if (sequenceIndex === 1) {
|
|
122
|
+
if (octet === 0xE0 && nextByte < 0xA0) break;
|
|
123
|
+
if (octet === 0xED && nextByte > 0x9F) break;
|
|
124
|
+
if (octet === 0xF0 && nextByte < 0x90) break;
|
|
125
|
+
if (octet === 0xF4 && nextByte > 0x8F) break;
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
push(octets, nextByte);
|
|
129
|
+
i += 2;
|
|
130
|
+
sequenceIndex++;
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
if (octets.length !== byteSequenceLength) {
|
|
134
|
+
result += FALLBACK_REPLACER;
|
|
135
|
+
continue;
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
var codePoint = utf8Decode(octets);
|
|
139
|
+
if (codePoint === null) {
|
|
140
|
+
for (var replacement = 0; replacement < byteSequenceLength; replacement++) result += FALLBACK_REPLACER;
|
|
141
|
+
i++;
|
|
142
|
+
continue;
|
|
143
|
+
} else {
|
|
144
|
+
decodedChar = fromCodePoint(codePoint);
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
result += decodedChar;
|
|
150
|
+
i++;
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
return result;
|
|
154
|
+
};
|
|
155
|
+
/* eslint-enable max-depth -- ok */
|
|
156
|
+
|
|
157
|
+
// https://url.spec.whatwg.org/#string-percent-encode-after-encoding
|
|
158
|
+
// a lone surrogate is the only input `encodeURIComponent` throws on, and the UTF-8
|
|
159
|
+
// encoder replaces it - so the throw selects the slow path instead of a per-call scan
|
|
160
|
+
var encode = function (input) {
|
|
161
|
+
try {
|
|
162
|
+
return $encodeURIComponent(input);
|
|
163
|
+
} catch (error) {
|
|
164
|
+
return $encodeURIComponent(replace(input, SURROGATE, replaceLoneSurrogate));
|
|
165
|
+
}
|
|
166
|
+
};
|
|
167
|
+
|
|
168
|
+
module.exports = {
|
|
169
|
+
decode: decode,
|
|
170
|
+
encode: encode
|
|
171
|
+
};
|
|
@@ -11,7 +11,7 @@ var FORCED = fails(function () {
|
|
|
11
11
|
|
|
12
12
|
// `Date.prototype.toJSON` method
|
|
13
13
|
// https://tc39.es/ecma262/#sec-date.prototype.tojson
|
|
14
|
-
$({ target: 'Date', proto: true,
|
|
14
|
+
$({ target: 'Date', proto: true, forced: FORCED }, {
|
|
15
15
|
// eslint-disable-next-line no-unused-vars -- required for `.length`
|
|
16
16
|
toJSON: function toJSON(key) {
|
|
17
17
|
var O = toObject(this);
|
package/modules/es.escape.js
CHANGED
|
@@ -8,6 +8,8 @@ var charCodeAt = uncurryThis(''.charCodeAt);
|
|
|
8
8
|
var exec = uncurryThis(/./.exec);
|
|
9
9
|
var numberToString = uncurryThis(1.1.toString);
|
|
10
10
|
var toUpperCase = uncurryThis(''.toUpperCase);
|
|
11
|
+
var join = uncurryThis([].join);
|
|
12
|
+
var $Array = Array;
|
|
11
13
|
|
|
12
14
|
var raw = /[\w*+\-./@]/;
|
|
13
15
|
|
|
@@ -22,22 +24,22 @@ var hex = function (code, length) {
|
|
|
22
24
|
$({ global: true }, {
|
|
23
25
|
escape: function escape(string) {
|
|
24
26
|
var str = toString(string);
|
|
25
|
-
var result = '';
|
|
26
27
|
var length = str.length;
|
|
27
|
-
var
|
|
28
|
+
var result = $Array(length);
|
|
29
|
+
var index;
|
|
28
30
|
var chr, code;
|
|
29
|
-
|
|
30
|
-
chr = charAt(str, index
|
|
31
|
+
for (index = 0; index < length; index++) {
|
|
32
|
+
chr = charAt(str, index);
|
|
31
33
|
if (exec(raw, chr)) {
|
|
32
|
-
result
|
|
34
|
+
result[index] = chr;
|
|
33
35
|
} else {
|
|
34
36
|
code = charCodeAt(chr, 0);
|
|
35
37
|
if (code < 256) {
|
|
36
|
-
result
|
|
38
|
+
result[index] = '%' + toUpperCase(hex(code, 2));
|
|
37
39
|
} else {
|
|
38
|
-
result
|
|
40
|
+
result[index] = '%u' + toUpperCase(hex(code, 4));
|
|
39
41
|
}
|
|
40
42
|
}
|
|
41
|
-
} return result;
|
|
43
|
+
} return join(result, '');
|
|
42
44
|
}
|
|
43
45
|
});
|
|
@@ -3,7 +3,7 @@ var $ = require('../internals/export');
|
|
|
3
3
|
var call = require('../internals/function-call');
|
|
4
4
|
var aCallable = require('../internals/a-callable');
|
|
5
5
|
var anObject = require('../internals/an-object');
|
|
6
|
-
var getIteratorMethod = require('../internals/get-iterator-method');
|
|
6
|
+
var getIteratorMethod = require('../internals/get-iterator-method-internal');
|
|
7
7
|
var createIteratorProxy = require('../internals/iterator-create-proxy');
|
|
8
8
|
var IS_PURE = require('../internals/is-pure');
|
|
9
9
|
|
|
@@ -11,11 +11,23 @@ var iteratorHelperThrowsOnInvalidIterator = require('../internals/iterator-helpe
|
|
|
11
11
|
var iteratorHelperWithoutClosingOnEarlyError = require('../internals/iterator-helper-without-closing-on-early-error');
|
|
12
12
|
var IS_PURE = require('../internals/is-pure');
|
|
13
13
|
|
|
14
|
+
var $RangeError = RangeError;
|
|
15
|
+
var $Infinity = Infinity;
|
|
16
|
+
|
|
14
17
|
var DROP_WITHOUT_THROWING_ON_INVALID_ITERATOR = !IS_PURE && !iteratorHelperThrowsOnInvalidIterator('drop', 0);
|
|
15
18
|
var dropWithoutClosingOnEarlyError = !IS_PURE && !DROP_WITHOUT_THROWING_ON_INVALID_ITERATOR
|
|
16
19
|
&& iteratorHelperWithoutClosingOnEarlyError('drop', RangeError);
|
|
17
20
|
|
|
18
|
-
var FORCED = IS_PURE || DROP_WITHOUT_THROWING_ON_INVALID_ITERATOR || dropWithoutClosingOnEarlyError
|
|
21
|
+
var FORCED = IS_PURE || DROP_WITHOUT_THROWING_ON_INVALID_ITERATOR || dropWithoutClosingOnEarlyError || !function () {
|
|
22
|
+
try {
|
|
23
|
+
// eslint-disable-next-line es/no-iterator, es/no-iterator-prototype-drop -- detection
|
|
24
|
+
Iterator.prototype.drop.call({
|
|
25
|
+
next: function () { return { done: true }; }
|
|
26
|
+
}, 0x20000000000000);
|
|
27
|
+
} catch (error) {
|
|
28
|
+
return error instanceof $RangeError;
|
|
29
|
+
}
|
|
30
|
+
}();
|
|
19
31
|
|
|
20
32
|
var IteratorProxy = createIteratorProxy(function () {
|
|
21
33
|
var iterator = this.iterator;
|
|
@@ -40,6 +52,9 @@ $({ target: 'Iterator', proto: true, real: true, forced: FORCED }, {
|
|
|
40
52
|
var remaining;
|
|
41
53
|
try {
|
|
42
54
|
remaining = toPositiveInteger(notANaN(+limit));
|
|
55
|
+
if (remaining > 0x1FFFFFFFFFFFFF && remaining !== $Infinity) {
|
|
56
|
+
throw new $RangeError('The argument should be a safe integer');
|
|
57
|
+
}
|
|
43
58
|
} catch (error) {
|
|
44
59
|
iteratorClose(this, 'throw', error);
|
|
45
60
|
}
|
|
@@ -7,30 +7,28 @@ var getIteratorDirect = require('../internals/get-iterator-direct');
|
|
|
7
7
|
var getIteratorFlattenable = require('../internals/get-iterator-flattenable');
|
|
8
8
|
var createIteratorProxy = require('../internals/iterator-create-proxy');
|
|
9
9
|
var iteratorClose = require('../internals/iterator-close');
|
|
10
|
+
var fails = require('../internals/fails');
|
|
10
11
|
var IS_PURE = require('../internals/is-pure');
|
|
11
12
|
var iteratorHelperThrowsOnInvalidIterator = require('../internals/iterator-helper-throws-on-invalid-iterator');
|
|
12
13
|
var iteratorHelperWithoutClosingOnEarlyError = require('../internals/iterator-helper-without-closing-on-early-error');
|
|
13
14
|
|
|
14
15
|
// Should not throw an error for an iterator without `return` method. Fixed in Safari 26.2
|
|
15
16
|
// https://bugs.webkit.org/show_bug.cgi?id=297532
|
|
16
|
-
function
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
} catch (error) {
|
|
23
|
-
return true;
|
|
24
|
-
}
|
|
25
|
-
}
|
|
17
|
+
var THROWS_ON_ITERATOR_WITHOUT_RETURN = !IS_PURE && fails(function () {
|
|
18
|
+
// eslint-disable-next-line es/no-array-prototype-values, es/no-iterator-prototype-flatmap, es/no-iterator-prototype-find -- testing
|
|
19
|
+
return [1].values()
|
|
20
|
+
.flatMap(function () { return [1]; })
|
|
21
|
+
.find(function () { return true; }) !== 1;
|
|
22
|
+
});
|
|
26
23
|
|
|
27
|
-
var FLAT_MAP_WITHOUT_THROWING_ON_INVALID_ITERATOR = !IS_PURE
|
|
24
|
+
var FLAT_MAP_WITHOUT_THROWING_ON_INVALID_ITERATOR = !IS_PURE && !THROWS_ON_ITERATOR_WITHOUT_RETURN
|
|
28
25
|
&& !iteratorHelperThrowsOnInvalidIterator('flatMap', function () { /* empty */ });
|
|
29
|
-
|
|
26
|
+
|
|
27
|
+
var flatMapWithoutClosingOnEarlyError = !IS_PURE && !THROWS_ON_ITERATOR_WITHOUT_RETURN && !FLAT_MAP_WITHOUT_THROWING_ON_INVALID_ITERATOR
|
|
30
28
|
&& iteratorHelperWithoutClosingOnEarlyError('flatMap', TypeError);
|
|
31
29
|
|
|
32
|
-
var FORCED = IS_PURE ||
|
|
33
|
-
||
|
|
30
|
+
var FORCED = IS_PURE || THROWS_ON_ITERATOR_WITHOUT_RETURN || FLAT_MAP_WITHOUT_THROWING_ON_INVALID_ITERATOR
|
|
31
|
+
|| flatMapWithoutClosingOnEarlyError;
|
|
34
32
|
|
|
35
33
|
var IteratorProxy = createIteratorProxy(function () {
|
|
36
34
|
var iterator = this.iterator;
|
|
@@ -11,11 +11,23 @@ var iteratorHelperThrowsOnInvalidIterator = require('../internals/iterator-helpe
|
|
|
11
11
|
var iteratorHelperWithoutClosingOnEarlyError = require('../internals/iterator-helper-without-closing-on-early-error');
|
|
12
12
|
var IS_PURE = require('../internals/is-pure');
|
|
13
13
|
|
|
14
|
+
var $RangeError = RangeError;
|
|
15
|
+
var $Infinity = Infinity;
|
|
16
|
+
|
|
14
17
|
var TAKE_WITHOUT_THROWING_ON_INVALID_ITERATOR = !IS_PURE && !iteratorHelperThrowsOnInvalidIterator('take', 1);
|
|
15
18
|
var takeWithoutClosingOnEarlyError = !IS_PURE && !TAKE_WITHOUT_THROWING_ON_INVALID_ITERATOR
|
|
16
19
|
&& iteratorHelperWithoutClosingOnEarlyError('take', RangeError);
|
|
17
20
|
|
|
18
|
-
var FORCED = IS_PURE || TAKE_WITHOUT_THROWING_ON_INVALID_ITERATOR || takeWithoutClosingOnEarlyError
|
|
21
|
+
var FORCED = IS_PURE || TAKE_WITHOUT_THROWING_ON_INVALID_ITERATOR || takeWithoutClosingOnEarlyError || !function () {
|
|
22
|
+
try {
|
|
23
|
+
// eslint-disable-next-line es/no-iterator, es/no-iterator-prototype-take -- detection
|
|
24
|
+
Iterator.prototype.take.call({
|
|
25
|
+
next: function () { return { done: true }; }
|
|
26
|
+
}, 0x20000000000000);
|
|
27
|
+
} catch (error) {
|
|
28
|
+
return error instanceof $RangeError;
|
|
29
|
+
}
|
|
30
|
+
}();
|
|
19
31
|
|
|
20
32
|
var IteratorProxy = createIteratorProxy(function () {
|
|
21
33
|
var iterator = this.iterator;
|
|
@@ -36,6 +48,9 @@ $({ target: 'Iterator', proto: true, real: true, forced: FORCED }, {
|
|
|
36
48
|
var remaining;
|
|
37
49
|
try {
|
|
38
50
|
remaining = toPositiveInteger(notANaN(+limit));
|
|
51
|
+
if (remaining > 0x1FFFFFFFFFFFFF && remaining !== $Infinity) {
|
|
52
|
+
throw new $RangeError('The argument should be a safe integer');
|
|
53
|
+
}
|
|
39
54
|
} catch (error) {
|
|
40
55
|
iteratorClose(this, 'throw', error);
|
|
41
56
|
}
|