core-js 3.18.2 → 3.19.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/es/date/to-primitive.js +2 -3
- package/es/date/to-string.js +2 -4
- package/es/instance/at.js +6 -5
- package/es/instance/bind.js +3 -2
- package/es/instance/code-point-at.js +4 -3
- package/es/instance/concat.js +3 -2
- package/es/instance/copy-within.js +3 -2
- package/es/instance/ends-with.js +4 -3
- package/es/instance/entries.js +3 -2
- package/es/instance/every.js +3 -2
- package/es/instance/fill.js +3 -2
- package/es/instance/filter.js +3 -2
- package/es/instance/find-index.js +3 -2
- package/es/instance/find.js +3 -2
- package/es/instance/flags.js +2 -1
- package/es/instance/flat-map.js +3 -2
- package/es/instance/flat.js +3 -2
- package/es/instance/for-each.js +3 -2
- package/es/instance/includes.js +6 -5
- package/es/instance/index-of.js +3 -2
- package/es/instance/keys.js +3 -2
- package/es/instance/last-index-of.js +3 -2
- package/es/instance/map.js +3 -2
- package/es/instance/match-all.js +4 -3
- package/es/instance/pad-end.js +4 -3
- package/es/instance/pad-start.js +4 -3
- package/es/instance/reduce-right.js +3 -2
- package/es/instance/reduce.js +3 -2
- package/es/instance/repeat.js +4 -3
- package/es/instance/replace-all.js +4 -3
- package/es/instance/reverse.js +3 -2
- package/es/instance/slice.js +3 -2
- package/es/instance/some.js +3 -2
- package/es/instance/sort.js +3 -2
- package/es/instance/splice.js +3 -2
- package/es/instance/starts-with.js +4 -3
- package/es/instance/trim-end.js +4 -3
- package/es/instance/trim-left.js +4 -3
- package/es/instance/trim-right.js +4 -3
- package/es/instance/trim-start.js +4 -3
- package/es/instance/trim.js +4 -3
- package/es/instance/values.js +3 -2
- package/es/json/stringify.js +4 -3
- package/es/promise/all-settled.js +2 -1
- package/es/promise/any.js +2 -1
- package/es/regexp/flags.js +3 -4
- package/es/regexp/match.js +2 -1
- package/es/regexp/replace.js +2 -1
- package/es/regexp/search.js +2 -1
- package/es/regexp/split.js +2 -1
- package/es/regexp/test.js +2 -3
- package/es/regexp/to-string.js +2 -3
- package/es/string/iterator.js +2 -5
- package/features/instance/at.js +6 -5
- package/features/instance/code-points.js +4 -3
- package/features/instance/filter-out.js +3 -2
- package/features/instance/filter-reject.js +3 -2
- package/features/instance/find-last-index.js +3 -2
- package/features/instance/find-last.js +3 -2
- package/features/instance/group-by.js +3 -2
- package/features/instance/unique-by.js +3 -2
- package/features/map/from.js +3 -2
- package/features/map/group-by.js +2 -1
- package/features/map/key-by.js +2 -1
- package/features/map/of.js +3 -2
- package/features/promise/try.js +2 -1
- package/features/set/from.js +3 -2
- package/features/set/of.js +3 -2
- package/features/weak-map/from.js +3 -2
- package/features/weak-map/of.js +3 -2
- package/features/weak-set/from.js +3 -2
- package/features/weak-set/of.js +3 -2
- package/internals/a-callable.js +3 -0
- package/internals/a-constructor.js +3 -0
- package/internals/a-possible-prototype.js +5 -1
- package/internals/an-instance.js +8 -3
- package/internals/an-object.js +4 -0
- package/internals/array-buffer-native.js +1 -1
- package/internals/array-buffer-non-extensible.js +10 -0
- package/internals/array-buffer-view-core.js +3 -2
- package/internals/array-buffer.js +29 -16
- package/internals/array-from-async.js +1 -1
- package/internals/array-from.js +6 -2
- package/internals/array-group-by.js +6 -3
- package/internals/array-iteration-from-last.js +1 -1
- package/internals/array-iteration.js +5 -4
- package/internals/array-last-index-of.js +2 -1
- package/internals/array-reduce.js +3 -0
- package/internals/array-slice-simple.js +17 -0
- package/internals/array-slice.js +3 -0
- package/internals/array-sort.js +10 -11
- package/internals/array-species-constructor.js +2 -0
- package/internals/array-unique-by.js +13 -9
- package/internals/async-from-sync-iterator.js +4 -3
- package/internals/async-iterator-create-proxy.js +4 -3
- package/internals/async-iterator-iteration.js +5 -2
- package/internals/classof-raw.js +5 -2
- package/internals/classof.js +3 -0
- package/internals/clear-error-stack.js +20 -0
- package/internals/collection-add-all.js +3 -2
- package/internals/collection-delete-all.js +3 -2
- package/internals/collection-from.js +7 -4
- package/internals/collection-of.js +3 -4
- package/internals/collection-strong.js +11 -9
- package/internals/collection-weak.js +10 -6
- package/internals/collection.js +8 -7
- package/internals/composite-key.js +9 -2
- package/internals/create-html.js +3 -1
- package/internals/date-to-iso-string.js +23 -13
- package/internals/date-to-primitive.js +3 -0
- package/internals/define-iterator.js +2 -1
- package/internals/engine-v8-version.js +10 -4
- package/internals/entry-unbind.js +3 -5
- package/internals/error-stack-installable.js +10 -0
- package/internals/export.js +1 -1
- package/internals/fix-regexp-well-known-symbol-logic.js +5 -3
- package/internals/flatten-into-array.js +4 -1
- package/internals/function-apply.js +9 -0
- package/internals/function-bind-context.js +5 -17
- package/internals/function-bind.js +15 -9
- package/internals/function-call.js +5 -0
- package/internals/function-uncurry-this.js +12 -0
- package/internals/get-async-iterator.js +2 -1
- package/internals/get-iterator.js +7 -2
- package/internals/get-map-iterator.js +3 -1
- package/internals/get-set-iterator.js +3 -1
- package/internals/get-substitution.js +10 -7
- package/internals/has-own-property.js +3 -2
- package/internals/host-report-errors.js +1 -1
- package/internals/ieee754.js +24 -6
- package/internals/indexed-object.js +5 -2
- package/internals/inspect-source.js +3 -2
- package/internals/install-error-cause.js +1 -1
- package/internals/internal-metadata.js +4 -7
- package/internals/internal-state.js +9 -7
- package/internals/is-callable.js +1 -1
- package/internals/is-constructor.js +6 -4
- package/internals/is-iterable.js +4 -2
- package/internals/is-object.js +1 -1
- package/internals/is-symbol.js +6 -2
- package/internals/iterate.js +14 -6
- package/internals/iterator-close.js +2 -1
- package/internals/iterator-create-proxy.js +4 -3
- package/internals/map-emplace.js +8 -3
- package/internals/map-upsert.js +12 -4
- package/internals/math-scale.js +9 -12
- package/internals/microtask.js +6 -4
- package/internals/normalize-string-argument.js +5 -0
- package/internals/not-a-regexp.js +3 -0
- package/internals/number-parse-float.js +8 -6
- package/internals/number-parse-int.js +4 -2
- package/internals/numeric-range-iterator.js +4 -0
- package/internals/object-assign.js +5 -2
- package/internals/object-define-properties.js +3 -1
- package/internals/object-define-property.js +2 -0
- package/internals/object-get-own-property-descriptor.js +2 -1
- package/internals/object-get-own-property-names-external.js +4 -4
- package/internals/object-get-prototype-of.js +2 -1
- package/internals/object-is-extensible.js +16 -0
- package/internals/object-is-prototype-of.js +3 -0
- package/internals/object-keys-internal.js +5 -2
- package/internals/object-set-prototype-of.js +4 -3
- package/internals/object-to-array.js +7 -3
- package/internals/ordinary-to-primitive.js +7 -3
- package/internals/own-keys.js +4 -1
- package/internals/reflect-metadata.js +9 -3
- package/internals/regexp-exec-abstract.js +6 -2
- package/internals/regexp-exec.js +20 -16
- package/internals/regexp-sticky-helpers.js +14 -2
- package/internals/require-object-coercible.js +4 -0
- package/internals/set-global.js +4 -2
- package/internals/shared.js +1 -1
- package/internals/string-multibyte.js +13 -4
- package/internals/string-pad.js +6 -3
- package/internals/string-punycode-to-ascii.js +34 -20
- package/internals/string-repeat.js +3 -0
- package/internals/string-trim.js +4 -2
- package/internals/task.js +11 -11
- package/internals/this-number-value.js +2 -4
- package/internals/to-index.js +3 -0
- package/internals/to-object.js +3 -0
- package/internals/to-offset.js +3 -0
- package/internals/to-positive-integer.js +3 -0
- package/internals/to-primitive.js +4 -1
- package/internals/to-property-key.js +1 -1
- package/internals/to-string.js +3 -0
- package/internals/try-to-string.js +4 -0
- package/internals/typed-array-constructor.js +10 -6
- package/internals/typed-array-from.js +4 -3
- package/internals/uid.js +4 -1
- package/internals/well-known-symbol.js +5 -1
- package/modules/es.aggregate-error.js +27 -11
- package/modules/es.array-buffer.slice.js +8 -4
- package/modules/es.array.concat.js +2 -0
- package/modules/es.array.index-of.js +7 -5
- package/modules/es.array.join.js +3 -2
- package/modules/es.array.of.js +3 -1
- package/modules/es.array.reduce.js +2 -1
- package/modules/es.array.reverse.js +3 -2
- package/modules/es.array.slice.js +4 -2
- package/modules/es.array.sort.js +7 -4
- package/modules/es.array.splice.js +2 -0
- package/modules/es.date.get-year.js +3 -2
- package/modules/es.date.now.js +6 -1
- package/modules/es.date.set-year.js +6 -4
- package/modules/es.date.to-primitive.js +2 -1
- package/modules/es.date.to-string.js +5 -4
- package/modules/es.escape.js +12 -5
- package/modules/es.function.has-instance.js +3 -2
- package/modules/es.function.name.js +5 -3
- package/modules/es.json.stringify.js +18 -7
- package/modules/es.map.js +1 -1
- package/modules/es.number.constructor.js +12 -7
- package/modules/es.number.to-fixed.js +19 -13
- package/modules/es.number.to-precision.js +6 -5
- package/modules/es.object.is-extensible.js +4 -10
- package/modules/es.object.is-frozen.js +6 -2
- package/modules/es.object.is-sealed.js +6 -2
- package/modules/es.promise.all-settled.js +2 -2
- package/modules/es.promise.any.js +5 -4
- package/modules/es.promise.js +22 -18
- package/modules/es.reflect.apply.js +4 -10
- package/modules/es.reflect.construct.js +10 -5
- package/modules/es.reflect.get.js +2 -1
- package/modules/es.reflect.is-extensible.js +2 -4
- package/modules/es.reflect.set.js +2 -1
- package/modules/es.regexp.constructor.js +26 -16
- package/modules/es.regexp.dot-all.js +5 -1
- package/modules/es.regexp.flags.js +4 -2
- package/modules/es.regexp.sticky.js +7 -3
- package/modules/es.regexp.test.js +7 -3
- package/modules/es.regexp.to-string.js +8 -5
- package/modules/es.set.js +1 -1
- package/modules/es.string.at-alternative.js +4 -1
- package/modules/es.string.ends-with.js +6 -4
- package/modules/es.string.from-code-point.js +7 -4
- package/modules/es.string.includes.js +8 -2
- package/modules/es.string.match-all.js +25 -19
- package/modules/es.string.match.js +2 -1
- package/modules/es.string.raw.js +6 -6
- package/modules/es.string.replace-all.js +19 -13
- package/modules/es.string.replace.js +19 -12
- package/modules/es.string.search.js +2 -1
- package/modules/es.string.split.js +23 -16
- package/modules/es.string.starts-with.js +6 -4
- package/modules/es.string.substr.js +3 -2
- package/modules/es.symbol.description.js +20 -12
- package/modules/es.symbol.js +34 -21
- package/modules/es.typed-array.copy-within.js +4 -2
- package/modules/es.typed-array.fill.js +9 -2
- package/modules/es.typed-array.iterator.js +7 -6
- package/modules/es.typed-array.join.js +3 -3
- package/modules/es.typed-array.last-index-of.js +3 -2
- package/modules/es.typed-array.reduce-right.js +2 -1
- package/modules/es.typed-array.reduce.js +2 -1
- package/modules/es.typed-array.set.js +2 -0
- package/modules/es.typed-array.slice.js +2 -2
- package/modules/es.typed-array.sort.js +13 -28
- package/modules/es.typed-array.to-locale-string.js +7 -2
- package/modules/es.typed-array.to-string.js +3 -2
- package/modules/es.unescape.js +14 -9
- package/modules/es.weak-map.js +15 -15
- package/modules/esnext.array.is-template-object.js +1 -1
- package/modules/esnext.async-iterator.as-indexed-pairs.js +2 -1
- package/modules/esnext.async-iterator.constructor.js +1 -1
- package/modules/esnext.async-iterator.drop.js +2 -1
- package/modules/esnext.async-iterator.filter.js +2 -1
- package/modules/esnext.async-iterator.flat-map.js +3 -2
- package/modules/esnext.async-iterator.from.js +4 -4
- package/modules/esnext.async-iterator.map.js +2 -1
- package/modules/esnext.async-iterator.reduce.js +4 -1
- package/modules/esnext.async-iterator.take.js +4 -2
- package/modules/esnext.composite-key.js +5 -1
- package/modules/esnext.composite-symbol.js +3 -2
- package/modules/esnext.iterator.as-indexed-pairs.js +2 -1
- package/modules/esnext.iterator.constructor.js +1 -1
- package/modules/esnext.iterator.drop.js +4 -2
- package/modules/esnext.iterator.filter.js +2 -1
- package/modules/esnext.iterator.flat-map.js +7 -3
- package/modules/esnext.iterator.from.js +4 -4
- package/modules/esnext.iterator.map.js +2 -1
- package/modules/esnext.iterator.reduce.js +3 -0
- package/modules/esnext.iterator.take.js +2 -1
- package/modules/esnext.map.delete-all.js +2 -4
- package/modules/esnext.map.emplace.js +2 -2
- package/modules/esnext.map.every.js +1 -1
- package/modules/esnext.map.filter.js +5 -4
- package/modules/esnext.map.find-key.js +1 -1
- package/modules/esnext.map.find.js +1 -1
- package/modules/esnext.map.group-by.js +6 -2
- package/modules/esnext.map.includes.js +1 -1
- package/modules/esnext.map.key-by.js +2 -1
- package/modules/esnext.map.map-keys.js +5 -4
- package/modules/esnext.map.map-values.js +5 -4
- package/modules/esnext.map.reduce.js +3 -0
- package/modules/esnext.map.some.js +1 -1
- package/modules/esnext.map.update-or-insert.js +2 -2
- package/modules/esnext.map.update.js +11 -4
- package/modules/esnext.map.upsert.js +2 -2
- package/modules/esnext.math.seeded-prng.js +3 -1
- package/modules/esnext.number.from-string.js +12 -3
- package/modules/esnext.observable.js +14 -9
- package/modules/esnext.reflect.get-metadata-keys.js +5 -10
- package/modules/esnext.set.add-all.js +2 -4
- package/modules/esnext.set.delete-all.js +2 -4
- package/modules/esnext.set.difference.js +3 -2
- package/modules/esnext.set.every.js +1 -1
- package/modules/esnext.set.filter.js +4 -3
- package/modules/esnext.set.find.js +1 -1
- package/modules/esnext.set.intersection.js +3 -2
- package/modules/esnext.set.is-disjoint-from.js +3 -2
- package/modules/esnext.set.is-subset-of.js +3 -2
- package/modules/esnext.set.is-superset-of.js +3 -2
- package/modules/esnext.set.join.js +9 -4
- package/modules/esnext.set.map.js +5 -4
- package/modules/esnext.set.reduce.js +3 -0
- package/modules/esnext.set.some.js +1 -1
- package/modules/esnext.set.symmetric-difference.js +3 -2
- package/modules/esnext.typed-array.from-async.js +0 -1
- package/modules/esnext.typed-array.unique-by.js +4 -2
- package/modules/esnext.weak-map.delete-all.js +2 -4
- package/modules/esnext.weak-map.emplace.js +2 -2
- package/modules/esnext.weak-map.upsert.js +2 -2
- package/modules/esnext.weak-set.add-all.js +2 -4
- package/modules/esnext.weak-set.delete-all.js +2 -4
- package/modules/web.timers.js +5 -4
- package/modules/web.url-search-params.js +122 -104
- package/modules/web.url.js +664 -628
- package/modules/web.url.to-json.js +2 -1
- package/package.json +2 -2
- package/stable/instance/entries.js +6 -4
- package/stable/instance/for-each.js +6 -4
- package/stable/instance/keys.js +6 -4
- package/stable/instance/values.js +6 -4
|
@@ -2,7 +2,10 @@
|
|
|
2
2
|
// TODO: in core-js@4, move /modules/ dependencies to public entries for better optimization by tools like `preset-env`
|
|
3
3
|
require('../modules/es.array.iterator');
|
|
4
4
|
var $ = require('../internals/export');
|
|
5
|
+
var global = require('../internals/global');
|
|
5
6
|
var getBuiltIn = require('../internals/get-built-in');
|
|
7
|
+
var call = require('../internals/function-call');
|
|
8
|
+
var uncurryThis = require('../internals/function-uncurry-this');
|
|
6
9
|
var USE_NATIVE_URL = require('../internals/native-url');
|
|
7
10
|
var redefine = require('../internals/redefine');
|
|
8
11
|
var redefineAll = require('../internals/redefine-all');
|
|
@@ -22,11 +25,8 @@ var createPropertyDescriptor = require('../internals/create-property-descriptor'
|
|
|
22
25
|
var getIterator = require('../internals/get-iterator');
|
|
23
26
|
var getIteratorMethod = require('../internals/get-iterator-method');
|
|
24
27
|
var wellKnownSymbol = require('../internals/well-known-symbol');
|
|
28
|
+
var arraySort = require('../internals/array-sort');
|
|
25
29
|
|
|
26
|
-
var nativeFetch = getBuiltIn('fetch');
|
|
27
|
-
var NativeRequest = getBuiltIn('Request');
|
|
28
|
-
var RequestPrototype = NativeRequest && NativeRequest.prototype;
|
|
29
|
-
var Headers = getBuiltIn('Headers');
|
|
30
30
|
var ITERATOR = wellKnownSymbol('iterator');
|
|
31
31
|
var URL_SEARCH_PARAMS = 'URLSearchParams';
|
|
32
32
|
var URL_SEARCH_PARAMS_ITERATOR = URL_SEARCH_PARAMS + 'Iterator';
|
|
@@ -34,6 +34,24 @@ var setInternalState = InternalStateModule.set;
|
|
|
34
34
|
var getInternalParamsState = InternalStateModule.getterFor(URL_SEARCH_PARAMS);
|
|
35
35
|
var getInternalIteratorState = InternalStateModule.getterFor(URL_SEARCH_PARAMS_ITERATOR);
|
|
36
36
|
|
|
37
|
+
var n$Fetch = getBuiltIn('fetch');
|
|
38
|
+
var N$Request = getBuiltIn('Request');
|
|
39
|
+
var Headers = getBuiltIn('Headers');
|
|
40
|
+
var RequestPrototype = N$Request && N$Request.prototype;
|
|
41
|
+
var HeadersPrototype = Headers && Headers.prototype;
|
|
42
|
+
var RegExp = global.RegExp;
|
|
43
|
+
var TypeError = global.TypeError;
|
|
44
|
+
var decodeURIComponent = global.decodeURIComponent;
|
|
45
|
+
var encodeURIComponent = global.encodeURIComponent;
|
|
46
|
+
var charAt = uncurryThis(''.charAt);
|
|
47
|
+
var join = uncurryThis([].join);
|
|
48
|
+
var push = uncurryThis([].push);
|
|
49
|
+
var replace = uncurryThis(''.replace);
|
|
50
|
+
var shift = uncurryThis([].shift);
|
|
51
|
+
var splice = uncurryThis([].splice);
|
|
52
|
+
var split = uncurryThis(''.split);
|
|
53
|
+
var stringSlice = uncurryThis(''.slice);
|
|
54
|
+
|
|
37
55
|
var plus = /\+/g;
|
|
38
56
|
var sequences = Array(4);
|
|
39
57
|
|
|
@@ -50,13 +68,13 @@ var percentDecode = function (sequence) {
|
|
|
50
68
|
};
|
|
51
69
|
|
|
52
70
|
var deserialize = function (it) {
|
|
53
|
-
var result =
|
|
71
|
+
var result = replace(it, plus, ' ');
|
|
54
72
|
var bytes = 4;
|
|
55
73
|
try {
|
|
56
74
|
return decodeURIComponent(result);
|
|
57
75
|
} catch (error) {
|
|
58
76
|
while (bytes) {
|
|
59
|
-
result =
|
|
77
|
+
result = replace(result, percentSequence(bytes--), percentDecode);
|
|
60
78
|
}
|
|
61
79
|
return result;
|
|
62
80
|
}
|
|
@@ -64,7 +82,7 @@ var deserialize = function (it) {
|
|
|
64
82
|
|
|
65
83
|
var find = /[!'()~]|%20/g;
|
|
66
84
|
|
|
67
|
-
var
|
|
85
|
+
var replacements = {
|
|
68
86
|
'!': '%21',
|
|
69
87
|
"'": '%27',
|
|
70
88
|
'(': '%28',
|
|
@@ -74,34 +92,11 @@ var replace = {
|
|
|
74
92
|
};
|
|
75
93
|
|
|
76
94
|
var replacer = function (match) {
|
|
77
|
-
return
|
|
95
|
+
return replacements[match];
|
|
78
96
|
};
|
|
79
97
|
|
|
80
98
|
var serialize = function (it) {
|
|
81
|
-
return encodeURIComponent(it)
|
|
82
|
-
};
|
|
83
|
-
|
|
84
|
-
var parseSearchParams = function (result, query) {
|
|
85
|
-
if (query) {
|
|
86
|
-
var attributes = query.split('&');
|
|
87
|
-
var index = 0;
|
|
88
|
-
var attribute, entry;
|
|
89
|
-
while (index < attributes.length) {
|
|
90
|
-
attribute = attributes[index++];
|
|
91
|
-
if (attribute.length) {
|
|
92
|
-
entry = attribute.split('=');
|
|
93
|
-
result.push({
|
|
94
|
-
key: deserialize(entry.shift()),
|
|
95
|
-
value: deserialize(entry.join('='))
|
|
96
|
-
});
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
};
|
|
101
|
-
|
|
102
|
-
var updateSearchParams = function (query) {
|
|
103
|
-
this.entries.length = 0;
|
|
104
|
-
parseSearchParams(this.entries, query);
|
|
99
|
+
return replace(encodeURIComponent(it), find, replacer);
|
|
105
100
|
};
|
|
106
101
|
|
|
107
102
|
var validateArgumentsLength = function (passed, required) {
|
|
@@ -124,48 +119,87 @@ var URLSearchParamsIterator = createIteratorConstructor(function Iterator(params
|
|
|
124
119
|
} return step;
|
|
125
120
|
});
|
|
126
121
|
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
anInstance(this, URLSearchParamsConstructor, URL_SEARCH_PARAMS);
|
|
131
|
-
var init = arguments.length > 0 ? arguments[0] : undefined;
|
|
132
|
-
var that = this;
|
|
133
|
-
var entries = [];
|
|
134
|
-
var iteratorMethod, iterator, next, step, entryIterator, entryNext, first, second, key;
|
|
135
|
-
|
|
136
|
-
setInternalState(that, {
|
|
137
|
-
type: URL_SEARCH_PARAMS,
|
|
138
|
-
entries: entries,
|
|
139
|
-
updateURL: function () { /* empty */ },
|
|
140
|
-
updateSearchParams: updateSearchParams
|
|
141
|
-
});
|
|
122
|
+
var URLSearchParamsState = function (init) {
|
|
123
|
+
this.entries = [];
|
|
124
|
+
this.url = null;
|
|
142
125
|
|
|
143
126
|
if (init !== undefined) {
|
|
144
|
-
if (isObject(init))
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
127
|
+
if (isObject(init)) this.parseObject(init);
|
|
128
|
+
else this.parseQuery(typeof init == 'string' ? charAt(init, 0) === '?' ? stringSlice(init, 1) : init : $toString(init));
|
|
129
|
+
}
|
|
130
|
+
};
|
|
131
|
+
|
|
132
|
+
URLSearchParamsState.prototype = {
|
|
133
|
+
type: URL_SEARCH_PARAMS,
|
|
134
|
+
bindURL: function (url) {
|
|
135
|
+
this.url = url;
|
|
136
|
+
this.update();
|
|
137
|
+
},
|
|
138
|
+
parseObject: function (object) {
|
|
139
|
+
var iteratorMethod = getIteratorMethod(object);
|
|
140
|
+
var iterator, next, step, entryIterator, entryNext, first, second;
|
|
141
|
+
|
|
142
|
+
if (iteratorMethod) {
|
|
143
|
+
iterator = getIterator(object, iteratorMethod);
|
|
144
|
+
next = iterator.next;
|
|
145
|
+
while (!(step = call(next, iterator)).done) {
|
|
146
|
+
entryIterator = getIterator(anObject(step.value));
|
|
147
|
+
entryNext = entryIterator.next;
|
|
148
|
+
if (
|
|
149
|
+
(first = call(entryNext, entryIterator)).done ||
|
|
150
|
+
(second = call(entryNext, entryIterator)).done ||
|
|
151
|
+
!call(entryNext, entryIterator).done
|
|
152
|
+
) throw TypeError('Expected sequence with length 2');
|
|
153
|
+
push(this.entries, { key: $toString(first.value), value: $toString(second.value) });
|
|
154
|
+
}
|
|
155
|
+
} else for (var key in object) if (hasOwn(object, key)) {
|
|
156
|
+
push(this.entries, { key: key, value: $toString(object[key]) });
|
|
157
|
+
}
|
|
158
|
+
},
|
|
159
|
+
parseQuery: function (query) {
|
|
160
|
+
if (query) {
|
|
161
|
+
var attributes = split(query, '&');
|
|
162
|
+
var index = 0;
|
|
163
|
+
var attribute, entry;
|
|
164
|
+
while (index < attributes.length) {
|
|
165
|
+
attribute = attributes[index++];
|
|
166
|
+
if (attribute.length) {
|
|
167
|
+
entry = split(attribute, '=');
|
|
168
|
+
push(this.entries, {
|
|
169
|
+
key: deserialize(shift(entry)),
|
|
170
|
+
value: deserialize(join(entry, '='))
|
|
171
|
+
});
|
|
158
172
|
}
|
|
159
|
-
}
|
|
160
|
-
} else {
|
|
161
|
-
parseSearchParams(
|
|
162
|
-
entries,
|
|
163
|
-
typeof init === 'string' ? init.charAt(0) === '?' ? init.slice(1) : init : $toString(init)
|
|
164
|
-
);
|
|
173
|
+
}
|
|
165
174
|
}
|
|
175
|
+
},
|
|
176
|
+
serialize: function () {
|
|
177
|
+
var entries = this.entries;
|
|
178
|
+
var result = [];
|
|
179
|
+
var index = 0;
|
|
180
|
+
var entry;
|
|
181
|
+
while (index < entries.length) {
|
|
182
|
+
entry = entries[index++];
|
|
183
|
+
push(result, serialize(entry.key) + '=' + serialize(entry.value));
|
|
184
|
+
} return join(result, '&');
|
|
185
|
+
},
|
|
186
|
+
update: function () {
|
|
187
|
+
this.entries.length = 0;
|
|
188
|
+
this.parseQuery(this.url.query);
|
|
189
|
+
},
|
|
190
|
+
updateURL: function () {
|
|
191
|
+
if (this.url) this.url.update();
|
|
166
192
|
}
|
|
167
193
|
};
|
|
168
194
|
|
|
195
|
+
// `URLSearchParams` constructor
|
|
196
|
+
// https://url.spec.whatwg.org/#interface-urlsearchparams
|
|
197
|
+
var URLSearchParamsConstructor = function URLSearchParams(/* init */) {
|
|
198
|
+
anInstance(this, URLSearchParamsPrototype);
|
|
199
|
+
var init = arguments.length > 0 ? arguments[0] : undefined;
|
|
200
|
+
setInternalState(this, new URLSearchParamsState(init));
|
|
201
|
+
};
|
|
202
|
+
|
|
169
203
|
var URLSearchParamsPrototype = URLSearchParamsConstructor.prototype;
|
|
170
204
|
|
|
171
205
|
redefineAll(URLSearchParamsPrototype, {
|
|
@@ -174,7 +208,7 @@ redefineAll(URLSearchParamsPrototype, {
|
|
|
174
208
|
append: function append(name, value) {
|
|
175
209
|
validateArgumentsLength(arguments.length, 2);
|
|
176
210
|
var state = getInternalParamsState(this);
|
|
177
|
-
state.entries
|
|
211
|
+
push(state.entries, { key: $toString(name), value: $toString(value) });
|
|
178
212
|
state.updateURL();
|
|
179
213
|
},
|
|
180
214
|
// `URLSearchParams.prototype.delete` method
|
|
@@ -186,7 +220,7 @@ redefineAll(URLSearchParamsPrototype, {
|
|
|
186
220
|
var key = $toString(name);
|
|
187
221
|
var index = 0;
|
|
188
222
|
while (index < entries.length) {
|
|
189
|
-
if (entries[index].key === key)
|
|
223
|
+
if (entries[index].key === key) splice(entries, index, 1);
|
|
190
224
|
else index++;
|
|
191
225
|
}
|
|
192
226
|
state.updateURL();
|
|
@@ -212,7 +246,7 @@ redefineAll(URLSearchParamsPrototype, {
|
|
|
212
246
|
var result = [];
|
|
213
247
|
var index = 0;
|
|
214
248
|
for (; index < entries.length; index++) {
|
|
215
|
-
if (entries[index].key === key)
|
|
249
|
+
if (entries[index].key === key) push(result, entries[index].value);
|
|
216
250
|
}
|
|
217
251
|
return result;
|
|
218
252
|
},
|
|
@@ -242,41 +276,29 @@ redefineAll(URLSearchParamsPrototype, {
|
|
|
242
276
|
for (; index < entries.length; index++) {
|
|
243
277
|
entry = entries[index];
|
|
244
278
|
if (entry.key === key) {
|
|
245
|
-
if (found)
|
|
279
|
+
if (found) splice(entries, index--, 1);
|
|
246
280
|
else {
|
|
247
281
|
found = true;
|
|
248
282
|
entry.value = val;
|
|
249
283
|
}
|
|
250
284
|
}
|
|
251
285
|
}
|
|
252
|
-
if (!found)
|
|
286
|
+
if (!found) push(entries, { key: key, value: val });
|
|
253
287
|
state.updateURL();
|
|
254
288
|
},
|
|
255
289
|
// `URLSearchParams.prototype.sort` method
|
|
256
290
|
// https://url.spec.whatwg.org/#dom-urlsearchparams-sort
|
|
257
291
|
sort: function sort() {
|
|
258
292
|
var state = getInternalParamsState(this);
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
var entry, entriesIndex, sliceIndex;
|
|
263
|
-
entries.length = 0;
|
|
264
|
-
for (sliceIndex = 0; sliceIndex < slice.length; sliceIndex++) {
|
|
265
|
-
entry = slice[sliceIndex];
|
|
266
|
-
for (entriesIndex = 0; entriesIndex < sliceIndex; entriesIndex++) {
|
|
267
|
-
if (entries[entriesIndex].key > entry.key) {
|
|
268
|
-
entries.splice(entriesIndex, 0, entry);
|
|
269
|
-
break;
|
|
270
|
-
}
|
|
271
|
-
}
|
|
272
|
-
if (entriesIndex === sliceIndex) entries.push(entry);
|
|
273
|
-
}
|
|
293
|
+
arraySort(state.entries, function (a, b) {
|
|
294
|
+
return a.key > b.key ? 1 : -1;
|
|
295
|
+
});
|
|
274
296
|
state.updateURL();
|
|
275
297
|
},
|
|
276
298
|
// `URLSearchParams.prototype.forEach` method
|
|
277
299
|
forEach: function forEach(callback /* , thisArg */) {
|
|
278
300
|
var entries = getInternalParamsState(this).entries;
|
|
279
|
-
var boundFunction = bind(callback, arguments.length > 1 ? arguments[1] : undefined
|
|
301
|
+
var boundFunction = bind(callback, arguments.length > 1 ? arguments[1] : undefined);
|
|
280
302
|
var index = 0;
|
|
281
303
|
var entry;
|
|
282
304
|
while (index < entries.length) {
|
|
@@ -304,14 +326,7 @@ redefine(URLSearchParamsPrototype, ITERATOR, URLSearchParamsPrototype.entries, {
|
|
|
304
326
|
// `URLSearchParams.prototype.toString` method
|
|
305
327
|
// https://url.spec.whatwg.org/#urlsearchparams-stringification-behavior
|
|
306
328
|
redefine(URLSearchParamsPrototype, 'toString', function toString() {
|
|
307
|
-
|
|
308
|
-
var result = [];
|
|
309
|
-
var index = 0;
|
|
310
|
-
var entry;
|
|
311
|
-
while (index < entries.length) {
|
|
312
|
-
entry = entries[index++];
|
|
313
|
-
result.push(serialize(entry.key) + '=' + serialize(entry.value));
|
|
314
|
-
} return result.join('&');
|
|
329
|
+
return getInternalParamsState(this).serialize();
|
|
315
330
|
}, { enumerable: true });
|
|
316
331
|
|
|
317
332
|
setToStringTag(URLSearchParamsConstructor, URL_SEARCH_PARAMS);
|
|
@@ -322,35 +337,38 @@ $({ global: true, forced: !USE_NATIVE_URL }, {
|
|
|
322
337
|
|
|
323
338
|
// Wrap `fetch` and `Request` for correct work with polyfilled `URLSearchParams`
|
|
324
339
|
if (!USE_NATIVE_URL && isCallable(Headers)) {
|
|
340
|
+
var headersHas = uncurryThis(HeadersPrototype.has);
|
|
341
|
+
var headersSet = uncurryThis(HeadersPrototype.set);
|
|
342
|
+
|
|
325
343
|
var wrapRequestOptions = function (init) {
|
|
326
344
|
if (isObject(init)) {
|
|
327
345
|
var body = init.body;
|
|
328
346
|
var headers;
|
|
329
347
|
if (classof(body) === URL_SEARCH_PARAMS) {
|
|
330
348
|
headers = init.headers ? new Headers(init.headers) : new Headers();
|
|
331
|
-
if (!headers
|
|
332
|
-
headers
|
|
349
|
+
if (!headersHas(headers, 'content-type')) {
|
|
350
|
+
headersSet(headers, 'content-type', 'application/x-www-form-urlencoded;charset=UTF-8');
|
|
333
351
|
}
|
|
334
352
|
return create(init, {
|
|
335
|
-
body: createPropertyDescriptor(0,
|
|
353
|
+
body: createPropertyDescriptor(0, $toString(body)),
|
|
336
354
|
headers: createPropertyDescriptor(0, headers)
|
|
337
355
|
});
|
|
338
356
|
}
|
|
339
357
|
} return init;
|
|
340
358
|
};
|
|
341
359
|
|
|
342
|
-
if (isCallable(
|
|
360
|
+
if (isCallable(n$Fetch)) {
|
|
343
361
|
$({ global: true, enumerable: true, forced: true }, {
|
|
344
362
|
fetch: function fetch(input /* , init */) {
|
|
345
|
-
return
|
|
363
|
+
return n$Fetch(input, arguments.length > 1 ? wrapRequestOptions(arguments[1]) : {});
|
|
346
364
|
}
|
|
347
365
|
});
|
|
348
366
|
}
|
|
349
367
|
|
|
350
|
-
if (isCallable(
|
|
368
|
+
if (isCallable(N$Request)) {
|
|
351
369
|
var RequestConstructor = function Request(input /* , init */) {
|
|
352
|
-
anInstance(this,
|
|
353
|
-
return new
|
|
370
|
+
anInstance(this, RequestPrototype);
|
|
371
|
+
return new N$Request(input, arguments.length > 1 ? wrapRequestOptions(arguments[1]) : {});
|
|
354
372
|
};
|
|
355
373
|
|
|
356
374
|
RequestPrototype.constructor = RequestConstructor;
|