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.
Files changed (334) hide show
  1. package/es/date/to-primitive.js +2 -3
  2. package/es/date/to-string.js +2 -4
  3. package/es/instance/at.js +6 -5
  4. package/es/instance/bind.js +3 -2
  5. package/es/instance/code-point-at.js +4 -3
  6. package/es/instance/concat.js +3 -2
  7. package/es/instance/copy-within.js +3 -2
  8. package/es/instance/ends-with.js +4 -3
  9. package/es/instance/entries.js +3 -2
  10. package/es/instance/every.js +3 -2
  11. package/es/instance/fill.js +3 -2
  12. package/es/instance/filter.js +3 -2
  13. package/es/instance/find-index.js +3 -2
  14. package/es/instance/find.js +3 -2
  15. package/es/instance/flags.js +2 -1
  16. package/es/instance/flat-map.js +3 -2
  17. package/es/instance/flat.js +3 -2
  18. package/es/instance/for-each.js +3 -2
  19. package/es/instance/includes.js +6 -5
  20. package/es/instance/index-of.js +3 -2
  21. package/es/instance/keys.js +3 -2
  22. package/es/instance/last-index-of.js +3 -2
  23. package/es/instance/map.js +3 -2
  24. package/es/instance/match-all.js +4 -3
  25. package/es/instance/pad-end.js +4 -3
  26. package/es/instance/pad-start.js +4 -3
  27. package/es/instance/reduce-right.js +3 -2
  28. package/es/instance/reduce.js +3 -2
  29. package/es/instance/repeat.js +4 -3
  30. package/es/instance/replace-all.js +4 -3
  31. package/es/instance/reverse.js +3 -2
  32. package/es/instance/slice.js +3 -2
  33. package/es/instance/some.js +3 -2
  34. package/es/instance/sort.js +3 -2
  35. package/es/instance/splice.js +3 -2
  36. package/es/instance/starts-with.js +4 -3
  37. package/es/instance/trim-end.js +4 -3
  38. package/es/instance/trim-left.js +4 -3
  39. package/es/instance/trim-right.js +4 -3
  40. package/es/instance/trim-start.js +4 -3
  41. package/es/instance/trim.js +4 -3
  42. package/es/instance/values.js +3 -2
  43. package/es/json/stringify.js +4 -3
  44. package/es/promise/all-settled.js +2 -1
  45. package/es/promise/any.js +2 -1
  46. package/es/regexp/flags.js +3 -4
  47. package/es/regexp/match.js +2 -1
  48. package/es/regexp/replace.js +2 -1
  49. package/es/regexp/search.js +2 -1
  50. package/es/regexp/split.js +2 -1
  51. package/es/regexp/test.js +2 -3
  52. package/es/regexp/to-string.js +2 -3
  53. package/es/string/iterator.js +2 -5
  54. package/features/instance/at.js +6 -5
  55. package/features/instance/code-points.js +4 -3
  56. package/features/instance/filter-out.js +3 -2
  57. package/features/instance/filter-reject.js +3 -2
  58. package/features/instance/find-last-index.js +3 -2
  59. package/features/instance/find-last.js +3 -2
  60. package/features/instance/group-by.js +3 -2
  61. package/features/instance/unique-by.js +3 -2
  62. package/features/map/from.js +3 -2
  63. package/features/map/group-by.js +2 -1
  64. package/features/map/key-by.js +2 -1
  65. package/features/map/of.js +3 -2
  66. package/features/promise/try.js +2 -1
  67. package/features/set/from.js +3 -2
  68. package/features/set/of.js +3 -2
  69. package/features/weak-map/from.js +3 -2
  70. package/features/weak-map/of.js +3 -2
  71. package/features/weak-set/from.js +3 -2
  72. package/features/weak-set/of.js +3 -2
  73. package/internals/a-callable.js +3 -0
  74. package/internals/a-constructor.js +3 -0
  75. package/internals/a-possible-prototype.js +5 -1
  76. package/internals/an-instance.js +8 -3
  77. package/internals/an-object.js +4 -0
  78. package/internals/array-buffer-native.js +1 -1
  79. package/internals/array-buffer-non-extensible.js +10 -0
  80. package/internals/array-buffer-view-core.js +3 -2
  81. package/internals/array-buffer.js +29 -16
  82. package/internals/array-from-async.js +1 -1
  83. package/internals/array-from.js +6 -2
  84. package/internals/array-group-by.js +6 -3
  85. package/internals/array-iteration-from-last.js +1 -1
  86. package/internals/array-iteration.js +5 -4
  87. package/internals/array-last-index-of.js +2 -1
  88. package/internals/array-reduce.js +3 -0
  89. package/internals/array-slice-simple.js +17 -0
  90. package/internals/array-slice.js +3 -0
  91. package/internals/array-sort.js +10 -11
  92. package/internals/array-species-constructor.js +2 -0
  93. package/internals/array-unique-by.js +13 -9
  94. package/internals/async-from-sync-iterator.js +4 -3
  95. package/internals/async-iterator-create-proxy.js +4 -3
  96. package/internals/async-iterator-iteration.js +5 -2
  97. package/internals/classof-raw.js +5 -2
  98. package/internals/classof.js +3 -0
  99. package/internals/clear-error-stack.js +20 -0
  100. package/internals/collection-add-all.js +3 -2
  101. package/internals/collection-delete-all.js +3 -2
  102. package/internals/collection-from.js +7 -4
  103. package/internals/collection-of.js +3 -4
  104. package/internals/collection-strong.js +11 -9
  105. package/internals/collection-weak.js +10 -6
  106. package/internals/collection.js +8 -7
  107. package/internals/composite-key.js +9 -2
  108. package/internals/create-html.js +3 -1
  109. package/internals/date-to-iso-string.js +23 -13
  110. package/internals/date-to-primitive.js +3 -0
  111. package/internals/define-iterator.js +2 -1
  112. package/internals/engine-v8-version.js +10 -4
  113. package/internals/entry-unbind.js +3 -5
  114. package/internals/error-stack-installable.js +10 -0
  115. package/internals/export.js +1 -1
  116. package/internals/fix-regexp-well-known-symbol-logic.js +5 -3
  117. package/internals/flatten-into-array.js +4 -1
  118. package/internals/function-apply.js +9 -0
  119. package/internals/function-bind-context.js +5 -17
  120. package/internals/function-bind.js +15 -9
  121. package/internals/function-call.js +5 -0
  122. package/internals/function-uncurry-this.js +12 -0
  123. package/internals/get-async-iterator.js +2 -1
  124. package/internals/get-iterator.js +7 -2
  125. package/internals/get-map-iterator.js +3 -1
  126. package/internals/get-set-iterator.js +3 -1
  127. package/internals/get-substitution.js +10 -7
  128. package/internals/has-own-property.js +3 -2
  129. package/internals/host-report-errors.js +1 -1
  130. package/internals/ieee754.js +24 -6
  131. package/internals/indexed-object.js +5 -2
  132. package/internals/inspect-source.js +3 -2
  133. package/internals/install-error-cause.js +1 -1
  134. package/internals/internal-metadata.js +4 -7
  135. package/internals/internal-state.js +9 -7
  136. package/internals/is-callable.js +1 -1
  137. package/internals/is-constructor.js +6 -4
  138. package/internals/is-iterable.js +4 -2
  139. package/internals/is-object.js +1 -1
  140. package/internals/is-symbol.js +6 -2
  141. package/internals/iterate.js +14 -6
  142. package/internals/iterator-close.js +2 -1
  143. package/internals/iterator-create-proxy.js +4 -3
  144. package/internals/map-emplace.js +8 -3
  145. package/internals/map-upsert.js +12 -4
  146. package/internals/math-scale.js +9 -12
  147. package/internals/microtask.js +6 -4
  148. package/internals/normalize-string-argument.js +5 -0
  149. package/internals/not-a-regexp.js +3 -0
  150. package/internals/number-parse-float.js +8 -6
  151. package/internals/number-parse-int.js +4 -2
  152. package/internals/numeric-range-iterator.js +4 -0
  153. package/internals/object-assign.js +5 -2
  154. package/internals/object-define-properties.js +3 -1
  155. package/internals/object-define-property.js +2 -0
  156. package/internals/object-get-own-property-descriptor.js +2 -1
  157. package/internals/object-get-own-property-names-external.js +4 -4
  158. package/internals/object-get-prototype-of.js +2 -1
  159. package/internals/object-is-extensible.js +16 -0
  160. package/internals/object-is-prototype-of.js +3 -0
  161. package/internals/object-keys-internal.js +5 -2
  162. package/internals/object-set-prototype-of.js +4 -3
  163. package/internals/object-to-array.js +7 -3
  164. package/internals/ordinary-to-primitive.js +7 -3
  165. package/internals/own-keys.js +4 -1
  166. package/internals/reflect-metadata.js +9 -3
  167. package/internals/regexp-exec-abstract.js +6 -2
  168. package/internals/regexp-exec.js +20 -16
  169. package/internals/regexp-sticky-helpers.js +14 -2
  170. package/internals/require-object-coercible.js +4 -0
  171. package/internals/set-global.js +4 -2
  172. package/internals/shared.js +1 -1
  173. package/internals/string-multibyte.js +13 -4
  174. package/internals/string-pad.js +6 -3
  175. package/internals/string-punycode-to-ascii.js +34 -20
  176. package/internals/string-repeat.js +3 -0
  177. package/internals/string-trim.js +4 -2
  178. package/internals/task.js +11 -11
  179. package/internals/this-number-value.js +2 -4
  180. package/internals/to-index.js +3 -0
  181. package/internals/to-object.js +3 -0
  182. package/internals/to-offset.js +3 -0
  183. package/internals/to-positive-integer.js +3 -0
  184. package/internals/to-primitive.js +4 -1
  185. package/internals/to-property-key.js +1 -1
  186. package/internals/to-string.js +3 -0
  187. package/internals/try-to-string.js +4 -0
  188. package/internals/typed-array-constructor.js +10 -6
  189. package/internals/typed-array-from.js +4 -3
  190. package/internals/uid.js +4 -1
  191. package/internals/well-known-symbol.js +5 -1
  192. package/modules/es.aggregate-error.js +27 -11
  193. package/modules/es.array-buffer.slice.js +8 -4
  194. package/modules/es.array.concat.js +2 -0
  195. package/modules/es.array.index-of.js +7 -5
  196. package/modules/es.array.join.js +3 -2
  197. package/modules/es.array.of.js +3 -1
  198. package/modules/es.array.reduce.js +2 -1
  199. package/modules/es.array.reverse.js +3 -2
  200. package/modules/es.array.slice.js +4 -2
  201. package/modules/es.array.sort.js +7 -4
  202. package/modules/es.array.splice.js +2 -0
  203. package/modules/es.date.get-year.js +3 -2
  204. package/modules/es.date.now.js +6 -1
  205. package/modules/es.date.set-year.js +6 -4
  206. package/modules/es.date.to-primitive.js +2 -1
  207. package/modules/es.date.to-string.js +5 -4
  208. package/modules/es.escape.js +12 -5
  209. package/modules/es.function.has-instance.js +3 -2
  210. package/modules/es.function.name.js +5 -3
  211. package/modules/es.json.stringify.js +18 -7
  212. package/modules/es.map.js +1 -1
  213. package/modules/es.number.constructor.js +12 -7
  214. package/modules/es.number.to-fixed.js +19 -13
  215. package/modules/es.number.to-precision.js +6 -5
  216. package/modules/es.object.is-extensible.js +4 -10
  217. package/modules/es.object.is-frozen.js +6 -2
  218. package/modules/es.object.is-sealed.js +6 -2
  219. package/modules/es.promise.all-settled.js +2 -2
  220. package/modules/es.promise.any.js +5 -4
  221. package/modules/es.promise.js +22 -18
  222. package/modules/es.reflect.apply.js +4 -10
  223. package/modules/es.reflect.construct.js +10 -5
  224. package/modules/es.reflect.get.js +2 -1
  225. package/modules/es.reflect.is-extensible.js +2 -4
  226. package/modules/es.reflect.set.js +2 -1
  227. package/modules/es.regexp.constructor.js +26 -16
  228. package/modules/es.regexp.dot-all.js +5 -1
  229. package/modules/es.regexp.flags.js +4 -2
  230. package/modules/es.regexp.sticky.js +7 -3
  231. package/modules/es.regexp.test.js +7 -3
  232. package/modules/es.regexp.to-string.js +8 -5
  233. package/modules/es.set.js +1 -1
  234. package/modules/es.string.at-alternative.js +4 -1
  235. package/modules/es.string.ends-with.js +6 -4
  236. package/modules/es.string.from-code-point.js +7 -4
  237. package/modules/es.string.includes.js +8 -2
  238. package/modules/es.string.match-all.js +25 -19
  239. package/modules/es.string.match.js +2 -1
  240. package/modules/es.string.raw.js +6 -6
  241. package/modules/es.string.replace-all.js +19 -13
  242. package/modules/es.string.replace.js +19 -12
  243. package/modules/es.string.search.js +2 -1
  244. package/modules/es.string.split.js +23 -16
  245. package/modules/es.string.starts-with.js +6 -4
  246. package/modules/es.string.substr.js +3 -2
  247. package/modules/es.symbol.description.js +20 -12
  248. package/modules/es.symbol.js +34 -21
  249. package/modules/es.typed-array.copy-within.js +4 -2
  250. package/modules/es.typed-array.fill.js +9 -2
  251. package/modules/es.typed-array.iterator.js +7 -6
  252. package/modules/es.typed-array.join.js +3 -3
  253. package/modules/es.typed-array.last-index-of.js +3 -2
  254. package/modules/es.typed-array.reduce-right.js +2 -1
  255. package/modules/es.typed-array.reduce.js +2 -1
  256. package/modules/es.typed-array.set.js +2 -0
  257. package/modules/es.typed-array.slice.js +2 -2
  258. package/modules/es.typed-array.sort.js +13 -28
  259. package/modules/es.typed-array.to-locale-string.js +7 -2
  260. package/modules/es.typed-array.to-string.js +3 -2
  261. package/modules/es.unescape.js +14 -9
  262. package/modules/es.weak-map.js +15 -15
  263. package/modules/esnext.array.is-template-object.js +1 -1
  264. package/modules/esnext.async-iterator.as-indexed-pairs.js +2 -1
  265. package/modules/esnext.async-iterator.constructor.js +1 -1
  266. package/modules/esnext.async-iterator.drop.js +2 -1
  267. package/modules/esnext.async-iterator.filter.js +2 -1
  268. package/modules/esnext.async-iterator.flat-map.js +3 -2
  269. package/modules/esnext.async-iterator.from.js +4 -4
  270. package/modules/esnext.async-iterator.map.js +2 -1
  271. package/modules/esnext.async-iterator.reduce.js +4 -1
  272. package/modules/esnext.async-iterator.take.js +4 -2
  273. package/modules/esnext.composite-key.js +5 -1
  274. package/modules/esnext.composite-symbol.js +3 -2
  275. package/modules/esnext.iterator.as-indexed-pairs.js +2 -1
  276. package/modules/esnext.iterator.constructor.js +1 -1
  277. package/modules/esnext.iterator.drop.js +4 -2
  278. package/modules/esnext.iterator.filter.js +2 -1
  279. package/modules/esnext.iterator.flat-map.js +7 -3
  280. package/modules/esnext.iterator.from.js +4 -4
  281. package/modules/esnext.iterator.map.js +2 -1
  282. package/modules/esnext.iterator.reduce.js +3 -0
  283. package/modules/esnext.iterator.take.js +2 -1
  284. package/modules/esnext.map.delete-all.js +2 -4
  285. package/modules/esnext.map.emplace.js +2 -2
  286. package/modules/esnext.map.every.js +1 -1
  287. package/modules/esnext.map.filter.js +5 -4
  288. package/modules/esnext.map.find-key.js +1 -1
  289. package/modules/esnext.map.find.js +1 -1
  290. package/modules/esnext.map.group-by.js +6 -2
  291. package/modules/esnext.map.includes.js +1 -1
  292. package/modules/esnext.map.key-by.js +2 -1
  293. package/modules/esnext.map.map-keys.js +5 -4
  294. package/modules/esnext.map.map-values.js +5 -4
  295. package/modules/esnext.map.reduce.js +3 -0
  296. package/modules/esnext.map.some.js +1 -1
  297. package/modules/esnext.map.update-or-insert.js +2 -2
  298. package/modules/esnext.map.update.js +11 -4
  299. package/modules/esnext.map.upsert.js +2 -2
  300. package/modules/esnext.math.seeded-prng.js +3 -1
  301. package/modules/esnext.number.from-string.js +12 -3
  302. package/modules/esnext.observable.js +14 -9
  303. package/modules/esnext.reflect.get-metadata-keys.js +5 -10
  304. package/modules/esnext.set.add-all.js +2 -4
  305. package/modules/esnext.set.delete-all.js +2 -4
  306. package/modules/esnext.set.difference.js +3 -2
  307. package/modules/esnext.set.every.js +1 -1
  308. package/modules/esnext.set.filter.js +4 -3
  309. package/modules/esnext.set.find.js +1 -1
  310. package/modules/esnext.set.intersection.js +3 -2
  311. package/modules/esnext.set.is-disjoint-from.js +3 -2
  312. package/modules/esnext.set.is-subset-of.js +3 -2
  313. package/modules/esnext.set.is-superset-of.js +3 -2
  314. package/modules/esnext.set.join.js +9 -4
  315. package/modules/esnext.set.map.js +5 -4
  316. package/modules/esnext.set.reduce.js +3 -0
  317. package/modules/esnext.set.some.js +1 -1
  318. package/modules/esnext.set.symmetric-difference.js +3 -2
  319. package/modules/esnext.typed-array.from-async.js +0 -1
  320. package/modules/esnext.typed-array.unique-by.js +4 -2
  321. package/modules/esnext.weak-map.delete-all.js +2 -4
  322. package/modules/esnext.weak-map.emplace.js +2 -2
  323. package/modules/esnext.weak-map.upsert.js +2 -2
  324. package/modules/esnext.weak-set.add-all.js +2 -4
  325. package/modules/esnext.weak-set.delete-all.js +2 -4
  326. package/modules/web.timers.js +5 -4
  327. package/modules/web.url-search-params.js +122 -104
  328. package/modules/web.url.js +664 -628
  329. package/modules/web.url.to-json.js +2 -1
  330. package/package.json +2 -2
  331. package/stable/instance/entries.js +6 -4
  332. package/stable/instance/for-each.js +6 -4
  333. package/stable/instance/keys.js +6 -4
  334. package/stable/instance/values.js +6 -4
@@ -3,6 +3,7 @@ var $ = require('../internals/export');
3
3
  var IS_PURE = require('../internals/is-pure');
4
4
  var global = require('../internals/global');
5
5
  var getBuiltIn = require('../internals/get-built-in');
6
+ var call = require('../internals/function-call');
6
7
  var NativePromise = require('../internals/native-promise-constructor');
7
8
  var redefine = require('../internals/redefine');
8
9
  var redefineAll = require('../internals/redefine-all');
@@ -32,17 +33,19 @@ var V8_VERSION = require('../internals/engine-v8-version');
32
33
 
33
34
  var SPECIES = wellKnownSymbol('species');
34
35
  var PROMISE = 'Promise';
36
+
35
37
  var getInternalState = InternalStateModule.get;
36
38
  var setInternalState = InternalStateModule.set;
37
39
  var getInternalPromiseState = InternalStateModule.getterFor(PROMISE);
38
40
  var NativePromisePrototype = NativePromise && NativePromise.prototype;
39
41
  var PromiseConstructor = NativePromise;
40
- var PromiseConstructorPrototype = NativePromisePrototype;
42
+ var PromisePrototype = NativePromisePrototype;
41
43
  var TypeError = global.TypeError;
42
44
  var document = global.document;
43
45
  var process = global.process;
44
46
  var newPromiseCapability = newPromiseCapabilityModule.f;
45
47
  var newGenericPromiseCapability = newPromiseCapability;
48
+
46
49
  var DISPATCH_EVENT = !!(document && document.createEvent && global.dispatchEvent);
47
50
  var NATIVE_REJECTION_EVENT = isCallable(global.PromiseRejectionEvent);
48
51
  var UNHANDLED_REJECTION = 'unhandledrejection';
@@ -53,6 +56,7 @@ var REJECTED = 2;
53
56
  var HANDLED = 1;
54
57
  var UNHANDLED = 2;
55
58
  var SUBCLASSING = false;
59
+
56
60
  var Internal, OwnPromiseCapability, PromiseWrapper, nativeThen;
57
61
 
58
62
  var FORCED = isForced(PROMISE, function () {
@@ -63,7 +67,7 @@ var FORCED = isForced(PROMISE, function () {
63
67
  // We can't detect it synchronously, so just check versions
64
68
  if (!GLOBAL_CORE_JS_PROMISE && V8_VERSION === 66) return true;
65
69
  // We need Promise#finally in the pure version for preventing prototype pollution
66
- if (IS_PURE && !PromiseConstructorPrototype['finally']) return true;
70
+ if (IS_PURE && !PromisePrototype['finally']) return true;
67
71
  // We can't use @@species feature detection in V8 since it causes
68
72
  // deoptimization and performance degradation
69
73
  // https://github.com/zloirock/core-js/issues/679
@@ -125,7 +129,7 @@ var notify = function (state, isReject) {
125
129
  if (result === reaction.promise) {
126
130
  reject(TypeError('Promise-chain cycle'));
127
131
  } else if (then = isThenable(result)) {
128
- then.call(result, resolve, reject);
132
+ call(then, result, resolve, reject);
129
133
  } else resolve(result);
130
134
  } else reject(value);
131
135
  } catch (error) {
@@ -153,7 +157,7 @@ var dispatchEvent = function (name, promise, reason) {
153
157
  };
154
158
 
155
159
  var onUnhandled = function (state) {
156
- task.call(global, function () {
160
+ call(task, global, function () {
157
161
  var promise = state.facade;
158
162
  var value = state.value;
159
163
  var IS_UNHANDLED = isUnhandled(state);
@@ -176,7 +180,7 @@ var isUnhandled = function (state) {
176
180
  };
177
181
 
178
182
  var onHandleUnhandled = function (state) {
179
- task.call(global, function () {
183
+ call(task, global, function () {
180
184
  var promise = state.facade;
181
185
  if (IS_NODE) {
182
186
  process.emit('rejectionHandled', promise);
@@ -210,7 +214,7 @@ var internalResolve = function (state, value, unwrap) {
210
214
  microtask(function () {
211
215
  var wrapper = { done: false };
212
216
  try {
213
- then.call(value,
217
+ call(then, value,
214
218
  bind(internalResolve, wrapper, state),
215
219
  bind(internalReject, wrapper, state)
216
220
  );
@@ -232,9 +236,9 @@ var internalResolve = function (state, value, unwrap) {
232
236
  if (FORCED) {
233
237
  // 25.4.3.1 Promise(executor)
234
238
  PromiseConstructor = function Promise(executor) {
235
- anInstance(this, PromiseConstructor, PROMISE);
239
+ anInstance(this, PromisePrototype);
236
240
  aCallable(executor);
237
- Internal.call(this);
241
+ call(Internal, this);
238
242
  var state = getInternalState(this);
239
243
  try {
240
244
  executor(bind(internalResolve, state), bind(internalReject, state));
@@ -242,7 +246,7 @@ if (FORCED) {
242
246
  internalReject(state, error);
243
247
  }
244
248
  };
245
- PromiseConstructorPrototype = PromiseConstructor.prototype;
249
+ PromisePrototype = PromiseConstructor.prototype;
246
250
  // eslint-disable-next-line no-unused-vars -- required for `.length`
247
251
  Internal = function Promise(executor) {
248
252
  setInternalState(this, {
@@ -256,17 +260,18 @@ if (FORCED) {
256
260
  value: undefined
257
261
  });
258
262
  };
259
- Internal.prototype = redefineAll(PromiseConstructorPrototype, {
263
+ Internal.prototype = redefineAll(PromisePrototype, {
260
264
  // `Promise.prototype.then` method
261
265
  // https://tc39.es/ecma262/#sec-promise.prototype.then
262
266
  then: function then(onFulfilled, onRejected) {
263
267
  var state = getInternalPromiseState(this);
268
+ var reactions = state.reactions;
264
269
  var reaction = newPromiseCapability(speciesConstructor(this, PromiseConstructor));
265
270
  reaction.ok = isCallable(onFulfilled) ? onFulfilled : true;
266
271
  reaction.fail = isCallable(onRejected) && onRejected;
267
272
  reaction.domain = IS_NODE ? process.domain : undefined;
268
273
  state.parent = true;
269
- state.reactions.push(reaction);
274
+ reactions[reactions.length] = reaction;
270
275
  if (state.state != PENDING) notify(state, false);
271
276
  return reaction.promise;
272
277
  },
@@ -297,13 +302,13 @@ if (FORCED) {
297
302
  redefine(NativePromisePrototype, 'then', function then(onFulfilled, onRejected) {
298
303
  var that = this;
299
304
  return new PromiseConstructor(function (resolve, reject) {
300
- nativeThen.call(that, resolve, reject);
305
+ call(nativeThen, that, resolve, reject);
301
306
  }).then(onFulfilled, onRejected);
302
307
  // https://github.com/zloirock/core-js/issues/640
303
308
  }, { unsafe: true });
304
309
 
305
310
  // makes sure that native promise-based APIs `Promise#catch` properly works with patched `Promise#then`
306
- redefine(NativePromisePrototype, 'catch', PromiseConstructorPrototype['catch'], { unsafe: true });
311
+ redefine(NativePromisePrototype, 'catch', PromisePrototype['catch'], { unsafe: true });
307
312
  }
308
313
 
309
314
  // make `.constructor === Promise` work for native promise-based APIs
@@ -313,7 +318,7 @@ if (FORCED) {
313
318
 
314
319
  // make `instanceof Promise` work for native promise-based APIs
315
320
  if (setPrototypeOf) {
316
- setPrototypeOf(NativePromisePrototype, PromiseConstructorPrototype);
321
+ setPrototypeOf(NativePromisePrototype, PromisePrototype);
317
322
  }
318
323
  }
319
324
  }
@@ -333,7 +338,7 @@ $({ target: PROMISE, stat: true, forced: FORCED }, {
333
338
  // https://tc39.es/ecma262/#sec-promise.reject
334
339
  reject: function reject(r) {
335
340
  var capability = newPromiseCapability(this);
336
- capability.reject.call(undefined, r);
341
+ call(capability.reject, undefined, r);
337
342
  return capability.promise;
338
343
  }
339
344
  });
@@ -362,9 +367,8 @@ $({ target: PROMISE, stat: true, forced: INCORRECT_ITERATION }, {
362
367
  iterate(iterable, function (promise) {
363
368
  var index = counter++;
364
369
  var alreadyCalled = false;
365
- values.push(undefined);
366
370
  remaining++;
367
- $promiseResolve.call(C, promise).then(function (value) {
371
+ call($promiseResolve, C, promise).then(function (value) {
368
372
  if (alreadyCalled) return;
369
373
  alreadyCalled = true;
370
374
  values[index] = value;
@@ -385,7 +389,7 @@ $({ target: PROMISE, stat: true, forced: INCORRECT_ITERATION }, {
385
389
  var result = perform(function () {
386
390
  var $promiseResolve = aCallable(C.resolve);
387
391
  iterate(iterable, function (promise) {
388
- $promiseResolve.call(C, promise).then(capability.resolve, reject);
392
+ call($promiseResolve, C, promise).then(capability.resolve, reject);
389
393
  });
390
394
  });
391
395
  if (result.error) reject(result.value);
@@ -1,25 +1,19 @@
1
1
  var $ = require('../internals/export');
2
- var getBuiltIn = require('../internals/get-built-in');
2
+ var functionApply = require('../internals/function-apply');
3
3
  var aCallable = require('../internals/a-callable');
4
4
  var anObject = require('../internals/an-object');
5
5
  var fails = require('../internals/fails');
6
6
 
7
- var nativeApply = getBuiltIn('Reflect', 'apply');
8
- var functionApply = Function.apply;
9
-
10
7
  // MS Edge argumentsList argument is optional
11
8
  var OPTIONAL_ARGUMENTS_LIST = !fails(function () {
12
- nativeApply(function () { /* empty */ });
9
+ // eslint-disable-next-line es/no-reflect -- required for testing
10
+ Reflect.apply(function () { /* empty */ });
13
11
  });
14
12
 
15
13
  // `Reflect.apply` method
16
14
  // https://tc39.es/ecma262/#sec-reflect.apply
17
15
  $({ target: 'Reflect', stat: true, forced: OPTIONAL_ARGUMENTS_LIST }, {
18
16
  apply: function apply(target, thisArgument, argumentsList) {
19
- aCallable(target);
20
- anObject(argumentsList);
21
- return nativeApply
22
- ? nativeApply(target, thisArgument, argumentsList)
23
- : functionApply.call(target, thisArgument, argumentsList);
17
+ return functionApply(aCallable(target), thisArgument, anObject(argumentsList));
24
18
  }
25
19
  });
@@ -1,13 +1,16 @@
1
1
  var $ = require('../internals/export');
2
2
  var getBuiltIn = require('../internals/get-built-in');
3
+ var apply = require('../internals/function-apply');
4
+ var bind = require('../internals/function-bind');
3
5
  var aConstructor = require('../internals/a-constructor');
4
6
  var anObject = require('../internals/an-object');
5
7
  var isObject = require('../internals/is-object');
6
8
  var create = require('../internals/object-create');
7
- var bind = require('../internals/function-bind');
8
9
  var fails = require('../internals/fails');
9
10
 
10
11
  var nativeConstruct = getBuiltIn('Reflect', 'construct');
12
+ var ObjectPrototype = Object.prototype;
13
+ var push = [].push;
11
14
 
12
15
  // `Reflect.construct` method
13
16
  // https://tc39.es/ecma262/#sec-reflect.construct
@@ -17,9 +20,11 @@ var NEW_TARGET_BUG = fails(function () {
17
20
  function F() { /* empty */ }
18
21
  return !(nativeConstruct(function () { /* empty */ }, [], F) instanceof F);
19
22
  });
23
+
20
24
  var ARGS_BUG = !fails(function () {
21
25
  nativeConstruct(function () { /* empty */ });
22
26
  });
27
+
23
28
  var FORCED = NEW_TARGET_BUG || ARGS_BUG;
24
29
 
25
30
  $({ target: 'Reflect', stat: true, forced: FORCED, sham: FORCED }, {
@@ -39,13 +44,13 @@ $({ target: 'Reflect', stat: true, forced: FORCED, sham: FORCED }, {
39
44
  }
40
45
  // w/o altered newTarget, lot of arguments case
41
46
  var $args = [null];
42
- $args.push.apply($args, args);
43
- return new (bind.apply(Target, $args))();
47
+ apply(push, $args, args);
48
+ return new (apply(bind, Target, $args))();
44
49
  }
45
50
  // with altered newTarget, not support built-in constructors
46
51
  var proto = newTarget.prototype;
47
- var instance = create(isObject(proto) ? proto : Object.prototype);
48
- var result = Function.apply.call(Target, instance, args);
52
+ var instance = create(isObject(proto) ? proto : ObjectPrototype);
53
+ var result = apply(Target, instance, args);
49
54
  return isObject(result) ? result : instance;
50
55
  }
51
56
  });
@@ -1,4 +1,5 @@
1
1
  var $ = require('../internals/export');
2
+ var call = require('../internals/function-call');
2
3
  var isObject = require('../internals/is-object');
3
4
  var anObject = require('../internals/an-object');
4
5
  var isDataDescriptor = require('../internals/is-data-descriptor');
@@ -14,7 +15,7 @@ function get(target, propertyKey /* , receiver */) {
14
15
  descriptor = getOwnPropertyDescriptorModule.f(target, propertyKey);
15
16
  if (descriptor) return isDataDescriptor(descriptor)
16
17
  ? descriptor.value
17
- : descriptor.get === undefined ? undefined : descriptor.get.call(receiver);
18
+ : descriptor.get === undefined ? undefined : call(descriptor.get, receiver);
18
19
  if (isObject(prototype = getPrototypeOf(target))) return get(prototype, propertyKey, receiver);
19
20
  }
20
21
 
@@ -1,14 +1,12 @@
1
1
  var $ = require('../internals/export');
2
2
  var anObject = require('../internals/an-object');
3
-
4
- // eslint-disable-next-line es/no-object-isextensible -- safe
5
- var objectIsExtensible = Object.isExtensible;
3
+ var $isExtensible = require('../internals/object-is-extensible');
6
4
 
7
5
  // `Reflect.isExtensible` method
8
6
  // https://tc39.es/ecma262/#sec-reflect.isextensible
9
7
  $({ target: 'Reflect', stat: true }, {
10
8
  isExtensible: function isExtensible(target) {
11
9
  anObject(target);
12
- return objectIsExtensible ? objectIsExtensible(target) : true;
10
+ return $isExtensible(target);
13
11
  }
14
12
  });
@@ -1,4 +1,5 @@
1
1
  var $ = require('../internals/export');
2
+ var call = require('../internals/function-call');
2
3
  var anObject = require('../internals/an-object');
3
4
  var isObject = require('../internals/is-object');
4
5
  var isDataDescriptor = require('../internals/is-data-descriptor');
@@ -30,7 +31,7 @@ function set(target, propertyKey, V /* , receiver */) {
30
31
  } else {
31
32
  setter = ownDescriptor.set;
32
33
  if (setter === undefined) return false;
33
- setter.call(receiver, V);
34
+ call(setter, receiver, V);
34
35
  } return true;
35
36
  }
36
37
 
@@ -1,13 +1,15 @@
1
1
  var DESCRIPTORS = require('../internals/descriptors');
2
2
  var global = require('../internals/global');
3
+ var uncurryThis = require('../internals/function-uncurry-this');
3
4
  var isForced = require('../internals/is-forced');
4
5
  var inheritIfRequired = require('../internals/inherit-if-required');
5
6
  var createNonEnumerableProperty = require('../internals/create-non-enumerable-property');
6
7
  var defineProperty = require('../internals/object-define-property').f;
7
8
  var getOwnPropertyNames = require('../internals/object-get-own-property-names').f;
9
+ var isPrototypeOf = require('../internals/object-is-prototype-of');
8
10
  var isRegExp = require('../internals/is-regexp');
9
11
  var toString = require('../internals/to-string');
10
- var getFlags = require('../internals/regexp-flags');
12
+ var regExpFlags = require('../internals/regexp-flags');
11
13
  var stickyHelpers = require('../internals/regexp-sticky-helpers');
12
14
  var redefine = require('../internals/redefine');
13
15
  var fails = require('../internals/fails');
@@ -21,6 +23,13 @@ var UNSUPPORTED_NCG = require('../internals/regexp-unsupported-ncg');
21
23
  var MATCH = wellKnownSymbol('match');
22
24
  var NativeRegExp = global.RegExp;
23
25
  var RegExpPrototype = NativeRegExp.prototype;
26
+ var SyntaxError = global.SyntaxError;
27
+ var getFlags = uncurryThis(regExpFlags);
28
+ var exec = uncurryThis(RegExpPrototype.exec);
29
+ var charAt = uncurryThis(''.charAt);
30
+ var replace = uncurryThis(''.replace);
31
+ var stringIndexOf = uncurryThis(''.indexOf);
32
+ var stringSlice = uncurryThis(''.slice);
24
33
  // TODO: Use only propper RegExpIdentifierName
25
34
  var IS_NCG = /^\?<[^\s\d!#%&*+<=>@^][^\s!#%&*+<=>@^]*>/;
26
35
  var re1 = /a/g;
@@ -29,10 +38,11 @@ var re2 = /a/g;
29
38
  // "new" should create a new object, old webkit bug
30
39
  var CORRECT_NEW = new NativeRegExp(re1) !== re1;
31
40
 
41
+ var MISSED_STICKY = stickyHelpers.MISSED_STICKY;
32
42
  var UNSUPPORTED_Y = stickyHelpers.UNSUPPORTED_Y;
33
43
 
34
44
  var BASE_FORCED = DESCRIPTORS &&
35
- (!CORRECT_NEW || UNSUPPORTED_Y || UNSUPPORTED_DOT_ALL || UNSUPPORTED_NCG || fails(function () {
45
+ (!CORRECT_NEW || MISSED_STICKY || UNSUPPORTED_DOT_ALL || UNSUPPORTED_NCG || fails(function () {
36
46
  re2[MATCH] = false;
37
47
  // RegExp constructor can alter flags and IsRegExp works correct with @@match
38
48
  return NativeRegExp(re1) != re1 || NativeRegExp(re2) == re2 || NativeRegExp(re1, 'i') != '/a/i';
@@ -45,9 +55,9 @@ var handleDotAll = function (string) {
45
55
  var brackets = false;
46
56
  var chr;
47
57
  for (; index <= length; index++) {
48
- chr = string.charAt(index);
58
+ chr = charAt(string, index);
49
59
  if (chr === '\\') {
50
- result += chr + string.charAt(++index);
60
+ result += chr + charAt(string, ++index);
51
61
  continue;
52
62
  }
53
63
  if (!brackets && chr === '.') {
@@ -74,9 +84,9 @@ var handleNCG = function (string) {
74
84
  var groupname = '';
75
85
  var chr;
76
86
  for (; index <= length; index++) {
77
- chr = string.charAt(index);
87
+ chr = charAt(string, index);
78
88
  if (chr === '\\') {
79
- chr = chr + string.charAt(++index);
89
+ chr = chr + charAt(string, ++index);
80
90
  } else if (chr === ']') {
81
91
  brackets = false;
82
92
  } else if (!brackets) switch (true) {
@@ -84,7 +94,7 @@ var handleNCG = function (string) {
84
94
  brackets = true;
85
95
  break;
86
96
  case chr === '(':
87
- if (IS_NCG.test(string.slice(index + 1))) {
97
+ if (exec(IS_NCG, stringSlice(string, index + 1))) {
88
98
  index += 2;
89
99
  ncg = true;
90
100
  }
@@ -96,7 +106,7 @@ var handleNCG = function (string) {
96
106
  throw new SyntaxError('Invalid capture group name');
97
107
  }
98
108
  names[groupname] = true;
99
- named.push([groupname, groupid]);
109
+ named[named.length] = [groupname, groupid];
100
110
  ncg = false;
101
111
  groupname = '';
102
112
  continue;
@@ -110,7 +120,7 @@ var handleNCG = function (string) {
110
120
  // https://tc39.es/ecma262/#sec-regexp-constructor
111
121
  if (isForced('RegExp', BASE_FORCED)) {
112
122
  var RegExpWrapper = function RegExp(pattern, flags) {
113
- var thisIsRegExp = this instanceof RegExpWrapper;
123
+ var thisIsRegExp = isPrototypeOf(RegExpPrototype, this);
114
124
  var patternIsRegExp = isRegExp(pattern);
115
125
  var flagsAreUndefined = flags === undefined;
116
126
  var groups = [];
@@ -121,9 +131,9 @@ if (isForced('RegExp', BASE_FORCED)) {
121
131
  return pattern;
122
132
  }
123
133
 
124
- if (patternIsRegExp || pattern instanceof RegExpWrapper) {
134
+ if (patternIsRegExp || isPrototypeOf(RegExpPrototype, pattern)) {
125
135
  pattern = pattern.source;
126
- if (flagsAreUndefined) flags = 'flags' in rawPattern ? rawPattern.flags : getFlags.call(rawPattern);
136
+ if (flagsAreUndefined) flags = 'flags' in rawPattern ? rawPattern.flags : getFlags(rawPattern);
127
137
  }
128
138
 
129
139
  pattern = pattern === undefined ? '' : toString(pattern);
@@ -131,15 +141,15 @@ if (isForced('RegExp', BASE_FORCED)) {
131
141
  rawPattern = pattern;
132
142
 
133
143
  if (UNSUPPORTED_DOT_ALL && 'dotAll' in re1) {
134
- dotAll = !!flags && flags.indexOf('s') > -1;
135
- if (dotAll) flags = flags.replace(/s/g, '');
144
+ dotAll = !!flags && stringIndexOf(flags, 's') > -1;
145
+ if (dotAll) flags = replace(flags, /s/g, '');
136
146
  }
137
147
 
138
148
  rawFlags = flags;
139
149
 
140
- if (UNSUPPORTED_Y && 'sticky' in re1) {
141
- sticky = !!flags && flags.indexOf('y') > -1;
142
- if (sticky) flags = flags.replace(/y/g, '');
150
+ if (MISSED_STICKY && 'sticky' in re1) {
151
+ sticky = !!flags && stringIndexOf(flags, 'y') > -1;
152
+ if (sticky && UNSUPPORTED_Y) flags = replace(flags, /y/g, '');
143
153
  }
144
154
 
145
155
  if (UNSUPPORTED_NCG) {
@@ -1,8 +1,12 @@
1
+ var global = require('../internals/global');
1
2
  var DESCRIPTORS = require('../internals/descriptors');
2
3
  var UNSUPPORTED_DOT_ALL = require('../internals/regexp-unsupported-dot-all');
4
+ var classof = require('../internals/classof-raw');
3
5
  var defineProperty = require('../internals/object-define-property').f;
4
6
  var getInternalState = require('../internals/internal-state').get;
7
+
5
8
  var RegExpPrototype = RegExp.prototype;
9
+ var TypeError = global.TypeError;
6
10
 
7
11
  // `RegExp.prototype.dotAll` getter
8
12
  // https://tc39.es/ecma262/#sec-get-regexp.prototype.dotall
@@ -13,7 +17,7 @@ if (DESCRIPTORS && UNSUPPORTED_DOT_ALL) {
13
17
  if (this === RegExpPrototype) return undefined;
14
18
  // We can't use InternalStateModule.getterFor because
15
19
  // we don't add metadata for regexps created by a literal.
16
- if (this instanceof RegExp) {
20
+ if (classof(this) === 'RegExp') {
17
21
  return !!getInternalState(this).dotAll;
18
22
  }
19
23
  throw TypeError('Incompatible receiver, RegExp required');
@@ -3,14 +3,16 @@ var objectDefinePropertyModule = require('../internals/object-define-property');
3
3
  var regExpFlags = require('../internals/regexp-flags');
4
4
  var fails = require('../internals/fails');
5
5
 
6
+ var RegExpPrototype = RegExp.prototype;
7
+
6
8
  var FORCED = DESCRIPTORS && fails(function () {
7
9
  // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe
8
- return Object.getOwnPropertyDescriptor(RegExp.prototype, 'flags').get.call({ dotAll: true, sticky: true }) !== 'sy';
10
+ return Object.getOwnPropertyDescriptor(RegExpPrototype, 'flags').get.call({ dotAll: true, sticky: true }) !== 'sy';
9
11
  });
10
12
 
11
13
  // `RegExp.prototype.flags` getter
12
14
  // https://tc39.es/ecma262/#sec-get-regexp.prototype.flags
13
- if (FORCED) objectDefinePropertyModule.f(RegExp.prototype, 'flags', {
15
+ if (FORCED) objectDefinePropertyModule.f(RegExpPrototype, 'flags', {
14
16
  configurable: true,
15
17
  get: regExpFlags
16
18
  });
@@ -1,19 +1,23 @@
1
+ var global = require('../internals/global');
1
2
  var DESCRIPTORS = require('../internals/descriptors');
2
- var UNSUPPORTED_Y = require('../internals/regexp-sticky-helpers').UNSUPPORTED_Y;
3
+ var MISSED_STICKY = require('../internals/regexp-sticky-helpers').MISSED_STICKY;
4
+ var classof = require('../internals/classof-raw');
3
5
  var defineProperty = require('../internals/object-define-property').f;
4
6
  var getInternalState = require('../internals/internal-state').get;
7
+
5
8
  var RegExpPrototype = RegExp.prototype;
9
+ var TypeError = global.TypeError;
6
10
 
7
11
  // `RegExp.prototype.sticky` getter
8
12
  // https://tc39.es/ecma262/#sec-get-regexp.prototype.sticky
9
- if (DESCRIPTORS && UNSUPPORTED_Y) {
13
+ if (DESCRIPTORS && MISSED_STICKY) {
10
14
  defineProperty(RegExpPrototype, 'sticky', {
11
15
  configurable: true,
12
16
  get: function () {
13
17
  if (this === RegExpPrototype) return undefined;
14
18
  // We can't use InternalStateModule.getterFor because
15
19
  // we don't add metadata for regexps created by a literal.
16
- if (this instanceof RegExp) {
20
+ if (classof(this) === 'RegExp') {
17
21
  return !!getInternalState(this).sticky;
18
22
  }
19
23
  throw TypeError('Incompatible receiver, RegExp required');
@@ -2,6 +2,9 @@
2
2
  // TODO: Remove from `core-js@4` since it's moved to entry points
3
3
  require('../modules/es.regexp.exec');
4
4
  var $ = require('../internals/export');
5
+ var global = require('../internals/global');
6
+ var call = require('../internals/function-call');
7
+ var uncurryThis = require('../internals/function-uncurry-this');
5
8
  var isCallable = require('../internals/is-callable');
6
9
  var isObject = require('../internals/is-object');
7
10
 
@@ -15,15 +18,16 @@ var DELEGATES_TO_EXEC = function () {
15
18
  return re.test('abc') === true && execCalled;
16
19
  }();
17
20
 
18
- var nativeTest = /./.test;
21
+ var Error = global.Error;
22
+ var un$Test = uncurryThis(/./.test);
19
23
 
20
24
  // `RegExp.prototype.test` method
21
25
  // https://tc39.es/ecma262/#sec-regexp.prototype.test
22
26
  $({ target: 'RegExp', proto: true, forced: !DELEGATES_TO_EXEC }, {
23
27
  test: function (str) {
24
28
  var exec = this.exec;
25
- if (!isCallable(exec)) return nativeTest.call(this, str);
26
- var result = exec.call(this, str);
29
+ if (!isCallable(exec)) return un$Test(this, str);
30
+ var result = call(exec, this, str);
27
31
  if (result !== null && !isObject(result)) {
28
32
  throw new Error('RegExp exec method returned something other than an Object or null');
29
33
  }
@@ -1,18 +1,21 @@
1
1
  'use strict';
2
+ var uncurryThis = require('../internals/function-uncurry-this');
2
3
  var PROPER_FUNCTION_NAME = require('../internals/function-name').PROPER;
3
4
  var redefine = require('../internals/redefine');
4
5
  var anObject = require('../internals/an-object');
6
+ var isPrototypeOf = require('../internals/object-is-prototype-of');
5
7
  var $toString = require('../internals/to-string');
6
8
  var fails = require('../internals/fails');
7
- var flags = require('../internals/regexp-flags');
9
+ var regExpFlags = require('../internals/regexp-flags');
8
10
 
9
11
  var TO_STRING = 'toString';
10
12
  var RegExpPrototype = RegExp.prototype;
11
- var nativeToString = RegExpPrototype[TO_STRING];
13
+ var n$ToString = RegExpPrototype[TO_STRING];
14
+ var getFlags = uncurryThis(regExpFlags);
12
15
 
13
- var NOT_GENERIC = fails(function () { return nativeToString.call({ source: 'a', flags: 'b' }) != '/a/b'; });
16
+ var NOT_GENERIC = fails(function () { return n$ToString.call({ source: 'a', flags: 'b' }) != '/a/b'; });
14
17
  // FF44- RegExp#toString has a wrong name
15
- var INCORRECT_NAME = PROPER_FUNCTION_NAME && nativeToString.name != TO_STRING;
18
+ var INCORRECT_NAME = PROPER_FUNCTION_NAME && n$ToString.name != TO_STRING;
16
19
 
17
20
  // `RegExp.prototype.toString` method
18
21
  // https://tc39.es/ecma262/#sec-regexp.prototype.tostring
@@ -21,7 +24,7 @@ if (NOT_GENERIC || INCORRECT_NAME) {
21
24
  var R = anObject(this);
22
25
  var p = $toString(R.source);
23
26
  var rf = R.flags;
24
- var f = $toString(rf === undefined && R instanceof RegExp && !('flags' in RegExpPrototype) ? flags.call(R) : rf);
27
+ var f = $toString(rf === undefined && isPrototypeOf(RegExpPrototype, R) && !('flags' in RegExpPrototype) ? getFlags(R) : rf);
25
28
  return '/' + p + '/' + f;
26
29
  }, { unsafe: true });
27
30
  }
package/modules/es.set.js CHANGED
@@ -4,6 +4,6 @@ var collectionStrong = require('../internals/collection-strong');
4
4
 
5
5
  // `Set` constructor
6
6
  // https://tc39.es/ecma262/#sec-set-objects
7
- module.exports = collection('Set', function (init) {
7
+ collection('Set', function (init) {
8
8
  return function Set() { return init(this, arguments.length ? arguments[0] : undefined); };
9
9
  }, collectionStrong);
@@ -1,10 +1,13 @@
1
1
  'use strict';
2
2
  var $ = require('../internals/export');
3
+ var uncurryThis = require('../internals/function-uncurry-this');
3
4
  var requireObjectCoercible = require('../internals/require-object-coercible');
4
5
  var toIntegerOrInfinity = require('../internals/to-integer-or-infinity');
5
6
  var toString = require('../internals/to-string');
6
7
  var fails = require('../internals/fails');
7
8
 
9
+ var charAt = uncurryThis(''.charAt);
10
+
8
11
  var FORCED = fails(function () {
9
12
  return '𠮷'.at(0) !== '\uD842';
10
13
  });
@@ -17,6 +20,6 @@ $({ target: 'String', proto: true, forced: FORCED }, {
17
20
  var len = S.length;
18
21
  var relativeIndex = toIntegerOrInfinity(index);
19
22
  var k = relativeIndex >= 0 ? relativeIndex : len + relativeIndex;
20
- return (k < 0 || k >= len) ? undefined : S.charAt(k);
23
+ return (k < 0 || k >= len) ? undefined : charAt(S, k);
21
24
  }
22
25
  });
@@ -1,5 +1,6 @@
1
1
  'use strict';
2
2
  var $ = require('../internals/export');
3
+ var uncurryThis = require('../internals/function-uncurry-this');
3
4
  var getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;
4
5
  var toLength = require('../internals/to-length');
5
6
  var toString = require('../internals/to-string');
@@ -9,7 +10,8 @@ var correctIsRegExpLogic = require('../internals/correct-is-regexp-logic');
9
10
  var IS_PURE = require('../internals/is-pure');
10
11
 
11
12
  // eslint-disable-next-line es/no-string-prototype-endswith -- safe
12
- var $endsWith = ''.endsWith;
13
+ var un$EndsWith = uncurryThis(''.endsWith);
14
+ var slice = uncurryThis(''.slice);
13
15
  var min = Math.min;
14
16
 
15
17
  var CORRECT_IS_REGEXP_LOGIC = correctIsRegExpLogic('endsWith');
@@ -29,8 +31,8 @@ $({ target: 'String', proto: true, forced: !MDN_POLYFILL_BUG && !CORRECT_IS_REGE
29
31
  var len = that.length;
30
32
  var end = endPosition === undefined ? len : min(toLength(endPosition), len);
31
33
  var search = toString(searchString);
32
- return $endsWith
33
- ? $endsWith.call(that, search, end)
34
- : that.slice(end - search.length, end) === search;
34
+ return un$EndsWith
35
+ ? un$EndsWith(that, search, end)
36
+ : slice(that, end - search.length, end) === search;
35
37
  }
36
38
  });
@@ -1,9 +1,13 @@
1
1
  var $ = require('../internals/export');
2
+ var global = require('../internals/global');
3
+ var uncurryThis = require('../internals/function-uncurry-this');
2
4
  var toAbsoluteIndex = require('../internals/to-absolute-index');
3
5
 
6
+ var RangeError = global.RangeError;
4
7
  var fromCharCode = String.fromCharCode;
5
8
  // eslint-disable-next-line es/no-string-fromcodepoint -- required for testing
6
9
  var $fromCodePoint = String.fromCodePoint;
10
+ var join = uncurryThis([].join);
7
11
 
8
12
  // length should be 1, old FF problem
9
13
  var INCORRECT_LENGTH = !!$fromCodePoint && $fromCodePoint.length != 1;
@@ -20,10 +24,9 @@ $({ target: 'String', stat: true, forced: INCORRECT_LENGTH }, {
20
24
  while (length > i) {
21
25
  code = +arguments[i++];
22
26
  if (toAbsoluteIndex(code, 0x10FFFF) !== code) throw RangeError(code + ' is not a valid code point');
23
- elements.push(code < 0x10000
27
+ elements[i] = code < 0x10000
24
28
  ? fromCharCode(code)
25
- : fromCharCode(((code -= 0x10000) >> 10) + 0xD800, code % 0x400 + 0xDC00)
26
- );
27
- } return elements.join('');
29
+ : fromCharCode(((code -= 0x10000) >> 10) + 0xD800, code % 0x400 + 0xDC00);
30
+ } return join(elements, '');
28
31
  }
29
32
  });