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