core-js 3.37.1 → 3.38.1

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 (159) hide show
  1. package/actual/promise/index.js +1 -0
  2. package/actual/promise/try.js +13 -0
  3. package/actual/regexp/escape.js +5 -0
  4. package/actual/regexp/index.js +1 -0
  5. package/actual/typed-array/index.js +2 -0
  6. package/actual/typed-array/methods.js +2 -0
  7. package/actual/typed-array/set-from-base64.js +2 -0
  8. package/actual/typed-array/set-from-hex.js +2 -0
  9. package/es/global-this.js +1 -1
  10. package/es/typed-array/float32-array.js +1 -1
  11. package/es/typed-array/float64-array.js +1 -1
  12. package/es/typed-array/index.js +1 -1
  13. package/es/typed-array/int16-array.js +1 -1
  14. package/es/typed-array/int32-array.js +1 -1
  15. package/es/typed-array/int8-array.js +1 -1
  16. package/es/typed-array/uint16-array.js +1 -1
  17. package/es/typed-array/uint32-array.js +1 -1
  18. package/es/typed-array/uint8-array.js +1 -1
  19. package/es/typed-array/uint8-clamped-array.js +1 -1
  20. package/features/typed-array/set-from-base64.js +2 -0
  21. package/features/typed-array/set-from-hex.js +2 -0
  22. package/full/index.js +2 -0
  23. package/full/promise/index.js +0 -1
  24. package/full/promise/try.js +2 -11
  25. package/full/regexp/escape.js +2 -3
  26. package/full/regexp/index.js +0 -1
  27. package/full/typed-array/set-from-base64.js +4 -0
  28. package/full/typed-array/set-from-hex.js +4 -0
  29. package/internals/array-buffer-byte-length.js +5 -3
  30. package/internals/array-buffer-is-detached.js +6 -2
  31. package/internals/array-buffer-not-detached.js +9 -0
  32. package/internals/array-buffer-transfer.js +6 -7
  33. package/internals/array-buffer-view-core.js +14 -14
  34. package/internals/array-buffer.js +7 -7
  35. package/internals/array-method-has-species-support.js +1 -1
  36. package/internals/async-iterator-prototype.js +3 -3
  37. package/internals/collection-strong.js +7 -7
  38. package/internals/collection-weak.js +2 -2
  39. package/internals/collection.js +2 -2
  40. package/internals/define-global-property.js +3 -3
  41. package/internals/detach-transferable.js +6 -6
  42. package/internals/document-create-element.js +2 -2
  43. package/internals/entry-unbind.js +2 -2
  44. package/internals/entry-virtual.js +2 -2
  45. package/internals/{engine-ff-version.js → environment-ff-version.js} +1 -1
  46. package/internals/{engine-is-ie-or-edge.js → environment-is-ie-or-edge.js} +1 -1
  47. package/internals/{engine-is-ios-pebble.js → environment-is-ios-pebble.js} +1 -1
  48. package/internals/{engine-is-ios.js → environment-is-ios.js} +1 -1
  49. package/internals/environment-is-node.js +4 -0
  50. package/internals/{engine-is-webos-webkit.js → environment-is-webos-webkit.js} +1 -1
  51. package/internals/environment-user-agent.js +7 -0
  52. package/internals/{engine-v8-version.js → environment-v8-version.js} +4 -4
  53. package/internals/{engine-webkit-version.js → environment-webkit-version.js} +1 -1
  54. package/internals/environment.js +21 -0
  55. package/internals/export.js +4 -4
  56. package/internals/get-built-in-node-module.js +15 -0
  57. package/internals/get-built-in-prototype-method.js +2 -2
  58. package/internals/get-built-in.js +2 -2
  59. package/internals/ieee754.js +1 -1
  60. package/internals/internal-state.js +3 -3
  61. package/internals/microtask.js +10 -10
  62. package/internals/number-is-finite.js +2 -2
  63. package/internals/number-parse-float.js +3 -3
  64. package/internals/number-parse-int.js +3 -3
  65. package/internals/object-create.js +2 -1
  66. package/internals/object-prototype-accessors-forced.js +5 -4
  67. package/internals/path.js +2 -2
  68. package/internals/promise-constructor-detection.js +5 -6
  69. package/internals/promise-native-constructor.js +2 -2
  70. package/internals/regexp-sticky-helpers.js +2 -2
  71. package/internals/regexp-unsupported-dot-all.js +2 -2
  72. package/internals/regexp-unsupported-ncg.js +2 -2
  73. package/internals/safe-get-built-in.js +3 -3
  74. package/internals/schedulers-fix.js +6 -6
  75. package/internals/shared-store.js +3 -3
  76. package/internals/string-pad-webkit-bug.js +1 -1
  77. package/internals/structured-clone-proper-transfer.js +5 -7
  78. package/internals/symbol-constructor-detection.js +3 -3
  79. package/internals/task.js +16 -16
  80. package/internals/typed-array-constructor.js +3 -3
  81. package/internals/typed-array-constructors-require-wrappers.js +4 -4
  82. package/internals/uint8-from-base64.js +156 -0
  83. package/internals/uint8-from-hex.js +26 -0
  84. package/internals/url-constructor-detection.js +5 -5
  85. package/internals/weak-map-basic-detection.js +2 -2
  86. package/internals/well-known-symbol.js +2 -2
  87. package/modules/es.array-buffer.constructor.js +2 -2
  88. package/modules/es.array.concat.js +1 -1
  89. package/modules/es.array.iterator.js +1 -1
  90. package/modules/es.array.reduce-right.js +2 -2
  91. package/modules/es.array.reduce.js +2 -2
  92. package/modules/es.array.sort.js +4 -4
  93. package/modules/es.error.cause.js +2 -2
  94. package/modules/es.global-this.js +3 -3
  95. package/modules/es.json.to-string-tag.js +2 -2
  96. package/modules/es.number.constructor.js +3 -3
  97. package/modules/es.number.to-exponential.js +2 -6
  98. package/modules/es.object.group-by.js +1 -1
  99. package/modules/es.promise.constructor.js +11 -11
  100. package/modules/es.reflect.to-string-tag.js +2 -2
  101. package/modules/es.regexp.constructor.js +10 -5
  102. package/modules/es.regexp.flags.js +2 -2
  103. package/modules/es.string.at-alternative.js +1 -1
  104. package/modules/es.string.replace-all.js +3 -7
  105. package/modules/es.string.to-well-formed.js +1 -1
  106. package/modules/es.symbol.constructor.js +6 -6
  107. package/modules/es.symbol.description.js +3 -2
  108. package/modules/es.typed-array.iterator.js +2 -2
  109. package/modules/es.typed-array.set.js +3 -3
  110. package/modules/es.typed-array.sort.js +6 -6
  111. package/modules/es.typed-array.to-locale-string.js +2 -2
  112. package/modules/es.typed-array.to-string.js +2 -2
  113. package/modules/es.weak-map.constructor.js +2 -2
  114. package/modules/esnext.async-disposable-stack.constructor.js +2 -2
  115. package/modules/esnext.disposable-stack.constructor.js +2 -2
  116. package/modules/esnext.iterator.constructor.js +2 -2
  117. package/modules/esnext.json.parse.js +7 -7
  118. package/modules/esnext.json.raw-json.js +5 -3
  119. package/modules/esnext.observable.constructor.js +5 -5
  120. package/modules/esnext.promise.try.js +14 -2
  121. package/modules/esnext.regexp.escape.js +56 -11
  122. package/modules/esnext.string.dedent.js +1 -0
  123. package/modules/esnext.suppressed-error.constructor.js +1 -1
  124. package/modules/esnext.symbol.async-dispose.js +2 -2
  125. package/modules/esnext.symbol.dispose.js +2 -2
  126. package/modules/esnext.uint8-array.from-base64.js +6 -65
  127. package/modules/esnext.uint8-array.from-hex.js +4 -19
  128. package/modules/esnext.uint8-array.set-from-base64.js +19 -0
  129. package/modules/esnext.uint8-array.set-from-hex.js +19 -0
  130. package/modules/esnext.uint8-array.to-base64.js +7 -5
  131. package/modules/esnext.uint8-array.to-hex.js +4 -3
  132. package/modules/web.atob.js +2 -2
  133. package/modules/web.btoa.js +2 -2
  134. package/modules/web.clear-immediate.js +2 -2
  135. package/modules/web.dom-collections.for-each.js +2 -2
  136. package/modules/web.dom-collections.iterator.js +2 -2
  137. package/modules/web.dom-exception.constructor.js +2 -2
  138. package/modules/web.dom-exception.stack.js +2 -2
  139. package/modules/web.queue-microtask.js +1 -1
  140. package/modules/web.self.js +8 -8
  141. package/modules/web.set-immediate.js +3 -3
  142. package/modules/web.set-interval.js +3 -3
  143. package/modules/web.set-timeout.js +3 -3
  144. package/modules/web.structured-clone.js +18 -18
  145. package/modules/web.url-search-params.constructor.js +120 -25
  146. package/modules/web.url.constructor.js +14 -12
  147. package/package.json +4 -2
  148. package/proposals/array-buffer-base64.js +2 -0
  149. package/proposals/global-this.js +2 -2
  150. package/stage/2.7.js +0 -1
  151. package/stage/2.js +0 -1
  152. package/stage/3.js +2 -0
  153. package/internals/engine-is-browser.js +0 -7
  154. package/internals/engine-is-bun.js +0 -3
  155. package/internals/engine-is-deno.js +0 -3
  156. package/internals/engine-is-node.js +0 -5
  157. package/internals/engine-user-agent.js +0 -2
  158. package/internals/try-node-require.js +0 -9
  159. /package/internals/{global.js → global-this.js} +0 -0
@@ -0,0 +1,19 @@
1
+ 'use strict';
2
+ var $ = require('../internals/export');
3
+ var globalThis = require('../internals/global-this');
4
+ var aString = require('../internals/a-string');
5
+ var anUint8Array = require('../internals/an-uint8-array');
6
+ var notDetached = require('../internals/array-buffer-not-detached');
7
+ var $fromHex = require('../internals/uint8-from-hex');
8
+
9
+ // `Uint8Array.prototype.setFromHex` method
10
+ // https://github.com/tc39/proposal-arraybuffer-base64
11
+ if (globalThis.Uint8Array) $({ target: 'Uint8Array', proto: true }, {
12
+ setFromHex: function setFromHex(string) {
13
+ anUint8Array(this);
14
+ aString(string);
15
+ notDetached(this.buffer);
16
+ var read = $fromHex(string, this).read;
17
+ return { read: read, written: read / 2 };
18
+ }
19
+ });
@@ -1,25 +1,27 @@
1
1
  'use strict';
2
2
  var $ = require('../internals/export');
3
- var global = require('../internals/global');
3
+ var globalThis = require('../internals/global-this');
4
4
  var uncurryThis = require('../internals/function-uncurry-this');
5
5
  var anObjectOrUndefined = require('../internals/an-object-or-undefined');
6
6
  var anUint8Array = require('../internals/an-uint8-array');
7
+ var notDetached = require('../internals/array-buffer-not-detached');
7
8
  var base64Map = require('../internals/base64-map');
8
9
  var getAlphabetOption = require('../internals/get-alphabet-option');
9
10
 
10
11
  var base64Alphabet = base64Map.i2c;
11
12
  var base64UrlAlphabet = base64Map.i2cUrl;
12
13
 
13
- var Uint8Array = global.Uint8Array;
14
14
  var charAt = uncurryThis(''.charAt);
15
15
 
16
16
  // `Uint8Array.prototype.toBase64` method
17
17
  // https://github.com/tc39/proposal-arraybuffer-base64
18
- if (Uint8Array) $({ target: 'Uint8Array', proto: true, forced: true }, {
18
+ if (globalThis.Uint8Array) $({ target: 'Uint8Array', proto: true }, {
19
19
  toBase64: function toBase64(/* options */) {
20
20
  var array = anUint8Array(this);
21
21
  var options = arguments.length ? anObjectOrUndefined(arguments[0]) : undefined;
22
22
  var alphabet = getAlphabetOption(options) === 'base64' ? base64Alphabet : base64UrlAlphabet;
23
+ var omitPadding = !!options && !!options.omitPadding;
24
+ notDetached(this.buffer);
23
25
 
24
26
  var result = '';
25
27
  var i = 0;
@@ -36,10 +38,10 @@ if (Uint8Array) $({ target: 'Uint8Array', proto: true, forced: true }, {
36
38
  }
37
39
  if (i + 2 === length) {
38
40
  triplet = (array[i] << 16) + (array[i + 1] << 8);
39
- result += at(3) + at(2) + at(1) + '=';
41
+ result += at(3) + at(2) + at(1) + (omitPadding ? '' : '=');
40
42
  } else if (i + 1 === length) {
41
43
  triplet = array[i] << 16;
42
- result += at(3) + at(2) + '==';
44
+ result += at(3) + at(2) + (omitPadding ? '' : '==');
43
45
  }
44
46
 
45
47
  return result;
@@ -1,17 +1,18 @@
1
1
  'use strict';
2
2
  var $ = require('../internals/export');
3
- var global = require('../internals/global');
3
+ var globalThis = require('../internals/global-this');
4
4
  var uncurryThis = require('../internals/function-uncurry-this');
5
5
  var anUint8Array = require('../internals/an-uint8-array');
6
+ var notDetached = require('../internals/array-buffer-not-detached');
6
7
 
7
- var Uint8Array = global.Uint8Array;
8
8
  var numberToString = uncurryThis(1.0.toString);
9
9
 
10
10
  // `Uint8Array.prototype.toHex` method
11
11
  // https://github.com/tc39/proposal-arraybuffer-base64
12
- if (Uint8Array) $({ target: 'Uint8Array', proto: true, forced: true }, {
12
+ if (globalThis.Uint8Array) $({ target: 'Uint8Array', proto: true }, {
13
13
  toHex: function toHex() {
14
14
  anUint8Array(this);
15
+ notDetached(this.buffer);
15
16
  var result = '';
16
17
  for (var i = 0, length = this.length; i < length; i++) {
17
18
  var hex = numberToString(this[i], 16);
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
  var $ = require('../internals/export');
3
- var global = require('../internals/global');
3
+ var globalThis = require('../internals/global-this');
4
4
  var getBuiltIn = require('../internals/get-built-in');
5
5
  var uncurryThis = require('../internals/function-uncurry-this');
6
6
  var call = require('../internals/function-call');
@@ -45,7 +45,7 @@ $({ global: true, bind: true, enumerable: true, forced: FORCED }, {
45
45
  atob: function atob(data) {
46
46
  validateArgumentsLength(arguments.length, 1);
47
47
  // `webpack` dev server bug on IE global methods - use call(fn, global, ...)
48
- if (BASIC && !NO_SPACES_IGNORE && !NO_ENCODING_CHECK) return call($atob, global, data);
48
+ if (BASIC && !NO_SPACES_IGNORE && !NO_ENCODING_CHECK) return call($atob, globalThis, data);
49
49
  var string = replace(toString(data), whitespaces, '');
50
50
  var output = '';
51
51
  var position = 0;
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
  var $ = require('../internals/export');
3
- var global = require('../internals/global');
3
+ var globalThis = require('../internals/global-this');
4
4
  var getBuiltIn = require('../internals/get-built-in');
5
5
  var uncurryThis = require('../internals/function-uncurry-this');
6
6
  var call = require('../internals/function-call');
@@ -33,7 +33,7 @@ $({ global: true, bind: true, enumerable: true, forced: !BASIC || NO_ARG_RECEIVI
33
33
  btoa: function btoa(data) {
34
34
  validateArgumentsLength(arguments.length, 1);
35
35
  // `webpack` dev server bug on IE global methods - use call(fn, global, ...)
36
- if (BASIC) return call($btoa, global, toString(data));
36
+ if (BASIC) return call($btoa, globalThis, toString(data));
37
37
  var string = toString(data);
38
38
  var output = '';
39
39
  var position = 0;
@@ -1,10 +1,10 @@
1
1
  'use strict';
2
2
  var $ = require('../internals/export');
3
- var global = require('../internals/global');
3
+ var globalThis = require('../internals/global-this');
4
4
  var clearImmediate = require('../internals/task').clear;
5
5
 
6
6
  // `clearImmediate` method
7
7
  // http://w3c.github.io/setImmediate/#si-clearImmediate
8
- $({ global: true, bind: true, enumerable: true, forced: global.clearImmediate !== clearImmediate }, {
8
+ $({ global: true, bind: true, enumerable: true, forced: globalThis.clearImmediate !== clearImmediate }, {
9
9
  clearImmediate: clearImmediate
10
10
  });
@@ -1,5 +1,5 @@
1
1
  'use strict';
2
- var global = require('../internals/global');
2
+ var globalThis = require('../internals/global-this');
3
3
  var DOMIterables = require('../internals/dom-iterables');
4
4
  var DOMTokenListPrototype = require('../internals/dom-token-list-prototype');
5
5
  var forEach = require('../internals/array-for-each');
@@ -16,7 +16,7 @@ var handlePrototype = function (CollectionPrototype) {
16
16
 
17
17
  for (var COLLECTION_NAME in DOMIterables) {
18
18
  if (DOMIterables[COLLECTION_NAME]) {
19
- handlePrototype(global[COLLECTION_NAME] && global[COLLECTION_NAME].prototype);
19
+ handlePrototype(globalThis[COLLECTION_NAME] && globalThis[COLLECTION_NAME].prototype);
20
20
  }
21
21
  }
22
22
 
@@ -1,5 +1,5 @@
1
1
  'use strict';
2
- var global = require('../internals/global');
2
+ var globalThis = require('../internals/global-this');
3
3
  var DOMIterables = require('../internals/dom-iterables');
4
4
  var DOMTokenListPrototype = require('../internals/dom-token-list-prototype');
5
5
  var ArrayIteratorMethods = require('../modules/es.array.iterator');
@@ -31,7 +31,7 @@ var handlePrototype = function (CollectionPrototype, COLLECTION_NAME) {
31
31
  };
32
32
 
33
33
  for (var COLLECTION_NAME in DOMIterables) {
34
- handlePrototype(global[COLLECTION_NAME] && global[COLLECTION_NAME].prototype, COLLECTION_NAME);
34
+ handlePrototype(globalThis[COLLECTION_NAME] && globalThis[COLLECTION_NAME].prototype, COLLECTION_NAME);
35
35
  }
36
36
 
37
37
  handlePrototype(DOMTokenListPrototype, 'DOMTokenList');
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
  var $ = require('../internals/export');
3
- var tryNodeRequire = require('../internals/try-node-require');
4
3
  var getBuiltIn = require('../internals/get-built-in');
4
+ var getBuiltInNodeModule = require('../internals/get-built-in-node-module');
5
5
  var fails = require('../internals/fails');
6
6
  var create = require('../internals/object-create');
7
7
  var createPropertyDescriptor = require('../internals/create-property-descriptor');
@@ -26,7 +26,7 @@ var Error = getBuiltIn('Error');
26
26
  var NativeDOMException = getBuiltIn(DOM_EXCEPTION) || (function () {
27
27
  try {
28
28
  // NodeJS < 15.0 does not expose `MessageChannel` to global
29
- var MessageChannel = getBuiltIn('MessageChannel') || tryNodeRequire('worker_threads').MessageChannel;
29
+ var MessageChannel = getBuiltIn('MessageChannel') || getBuiltInNodeModule('worker_threads').MessageChannel;
30
30
  // eslint-disable-next-line es/no-weak-map, unicorn/require-post-message-target-origin -- safe
31
31
  new MessageChannel().port1.postMessage(new WeakMap());
32
32
  } catch (error) {
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
  var $ = require('../internals/export');
3
- var global = require('../internals/global');
3
+ var globalThis = require('../internals/global-this');
4
4
  var getBuiltIn = require('../internals/get-built-in');
5
5
  var createPropertyDescriptor = require('../internals/create-property-descriptor');
6
6
  var defineProperty = require('../internals/object-define-property').f;
@@ -36,7 +36,7 @@ var ERROR_HAS_STACK = 'stack' in new Error(DOM_EXCEPTION);
36
36
  var DOM_EXCEPTION_HAS_STACK = 'stack' in new NativeDOMException(1, 2);
37
37
 
38
38
  // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe
39
- var descriptor = NativeDOMException && DESCRIPTORS && Object.getOwnPropertyDescriptor(global, DOM_EXCEPTION);
39
+ var descriptor = NativeDOMException && DESCRIPTORS && Object.getOwnPropertyDescriptor(globalThis, DOM_EXCEPTION);
40
40
 
41
41
  // Bun ~ 0.1.1 DOMException have incorrect descriptor and we can't redefine it
42
42
  // https://github.com/Jarred-Sumner/bun/issues/399
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
  var $ = require('../internals/export');
3
- var globalThis = require('../internals/global');
3
+ var globalThis = require('../internals/global-this');
4
4
  var microtask = require('../internals/microtask');
5
5
  var aCallable = require('../internals/a-callable');
6
6
  var validateArgumentsLength = require('../internals/validate-arguments-length');
@@ -1,30 +1,30 @@
1
1
  'use strict';
2
2
  var $ = require('../internals/export');
3
- var global = require('../internals/global');
3
+ var globalThis = require('../internals/global-this');
4
4
  var defineBuiltInAccessor = require('../internals/define-built-in-accessor');
5
5
  var DESCRIPTORS = require('../internals/descriptors');
6
6
 
7
7
  var $TypeError = TypeError;
8
8
  // eslint-disable-next-line es/no-object-defineproperty -- safe
9
9
  var defineProperty = Object.defineProperty;
10
- var INCORRECT_VALUE = global.self !== global;
10
+ var INCORRECT_VALUE = globalThis.self !== globalThis;
11
11
 
12
12
  // `self` getter
13
13
  // https://html.spec.whatwg.org/multipage/window-object.html#dom-self
14
14
  try {
15
15
  if (DESCRIPTORS) {
16
16
  // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe
17
- var descriptor = Object.getOwnPropertyDescriptor(global, 'self');
17
+ var descriptor = Object.getOwnPropertyDescriptor(globalThis, 'self');
18
18
  // some engines have `self`, but with incorrect descriptor
19
19
  // https://github.com/denoland/deno/issues/15765
20
20
  if (INCORRECT_VALUE || !descriptor || !descriptor.get || !descriptor.enumerable) {
21
- defineBuiltInAccessor(global, 'self', {
21
+ defineBuiltInAccessor(globalThis, 'self', {
22
22
  get: function self() {
23
- return global;
23
+ return globalThis;
24
24
  },
25
25
  set: function self(value) {
26
- if (this !== global) throw new $TypeError('Illegal invocation');
27
- defineProperty(global, 'self', {
26
+ if (this !== globalThis) throw new $TypeError('Illegal invocation');
27
+ defineProperty(globalThis, 'self', {
28
28
  value: value,
29
29
  writable: true,
30
30
  configurable: true,
@@ -36,6 +36,6 @@ try {
36
36
  });
37
37
  }
38
38
  } else $({ global: true, simple: true, forced: INCORRECT_VALUE }, {
39
- self: global
39
+ self: globalThis
40
40
  });
41
41
  } catch (error) { /* empty */ }
@@ -1,14 +1,14 @@
1
1
  'use strict';
2
2
  var $ = require('../internals/export');
3
- var global = require('../internals/global');
3
+ var globalThis = require('../internals/global-this');
4
4
  var setTask = require('../internals/task').set;
5
5
  var schedulersFix = require('../internals/schedulers-fix');
6
6
 
7
7
  // https://github.com/oven-sh/bun/issues/1633
8
- var setImmediate = global.setImmediate ? schedulersFix(setTask, false) : setTask;
8
+ var setImmediate = globalThis.setImmediate ? schedulersFix(setTask, false) : setTask;
9
9
 
10
10
  // `setImmediate` method
11
11
  // http://w3c.github.io/setImmediate/#si-setImmediate
12
- $({ global: true, bind: true, enumerable: true, forced: global.setImmediate !== setImmediate }, {
12
+ $({ global: true, bind: true, enumerable: true, forced: globalThis.setImmediate !== setImmediate }, {
13
13
  setImmediate: setImmediate
14
14
  });
@@ -1,12 +1,12 @@
1
1
  'use strict';
2
2
  var $ = require('../internals/export');
3
- var global = require('../internals/global');
3
+ var globalThis = require('../internals/global-this');
4
4
  var schedulersFix = require('../internals/schedulers-fix');
5
5
 
6
- var setInterval = schedulersFix(global.setInterval, true);
6
+ var setInterval = schedulersFix(globalThis.setInterval, true);
7
7
 
8
8
  // Bun / IE9- setInterval additional parameters fix
9
9
  // https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#dom-setinterval
10
- $({ global: true, bind: true, forced: global.setInterval !== setInterval }, {
10
+ $({ global: true, bind: true, forced: globalThis.setInterval !== setInterval }, {
11
11
  setInterval: setInterval
12
12
  });
@@ -1,12 +1,12 @@
1
1
  'use strict';
2
2
  var $ = require('../internals/export');
3
- var global = require('../internals/global');
3
+ var globalThis = require('../internals/global-this');
4
4
  var schedulersFix = require('../internals/schedulers-fix');
5
5
 
6
- var setTimeout = schedulersFix(global.setTimeout, true);
6
+ var setTimeout = schedulersFix(globalThis.setTimeout, true);
7
7
 
8
8
  // Bun / IE9- setTimeout additional parameters fix
9
9
  // https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#dom-settimeout
10
- $({ global: true, bind: true, forced: global.setTimeout !== setTimeout }, {
10
+ $({ global: true, bind: true, forced: globalThis.setTimeout !== setTimeout }, {
11
11
  setTimeout: setTimeout
12
12
  });
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
  var IS_PURE = require('../internals/is-pure');
3
3
  var $ = require('../internals/export');
4
- var global = require('../internals/global');
4
+ var globalThis = require('../internals/global-this');
5
5
  var getBuiltIn = require('../internals/get-built-in');
6
6
  var uncurryThis = require('../internals/function-uncurry-this');
7
7
  var fails = require('../internals/fails');
@@ -27,12 +27,12 @@ var detachTransferable = require('../internals/detach-transferable');
27
27
  var ERROR_STACK_INSTALLABLE = require('../internals/error-stack-installable');
28
28
  var PROPER_STRUCTURED_CLONE_TRANSFER = require('../internals/structured-clone-proper-transfer');
29
29
 
30
- var Object = global.Object;
31
- var Array = global.Array;
32
- var Date = global.Date;
33
- var Error = global.Error;
34
- var TypeError = global.TypeError;
35
- var PerformanceMark = global.PerformanceMark;
30
+ var Object = globalThis.Object;
31
+ var Array = globalThis.Array;
32
+ var Date = globalThis.Date;
33
+ var Error = globalThis.Error;
34
+ var TypeError = globalThis.TypeError;
35
+ var PerformanceMark = globalThis.PerformanceMark;
36
36
  var DOMException = getBuiltIn('DOMException');
37
37
  var Map = MapHelpers.Map;
38
38
  var mapHas = MapHelpers.has;
@@ -53,7 +53,7 @@ var TRANSFERRING = 'Transferring';
53
53
 
54
54
  var checkBasicSemantic = function (structuredCloneImplementation) {
55
55
  return !fails(function () {
56
- var set1 = new global.Set([7]);
56
+ var set1 = new globalThis.Set([7]);
57
57
  var set2 = structuredCloneImplementation(set1);
58
58
  var number = structuredCloneImplementation(Object(7));
59
59
  return set2 === set1 || !set2.has(7) || !isObject(number) || +number !== 7;
@@ -71,7 +71,7 @@ var checkErrorsCloning = function (structuredCloneImplementation, $Error) {
71
71
  // https://github.com/whatwg/html/pull/5749
72
72
  var checkNewErrorsCloningSemantic = function (structuredCloneImplementation) {
73
73
  return !fails(function () {
74
- var test = structuredCloneImplementation(new global.AggregateError([1], PERFORMANCE_MARK, { cause: 3 }));
74
+ var test = structuredCloneImplementation(new globalThis.AggregateError([1], PERFORMANCE_MARK, { cause: 3 }));
75
75
  return test.name !== 'AggregateError' || test.errors[0] !== 1 || test.message !== PERFORMANCE_MARK || test.cause !== 3;
76
76
  });
77
77
  };
@@ -88,7 +88,7 @@ var checkNewErrorsCloningSemantic = function (structuredCloneImplementation) {
88
88
  // NodeJS implementation can't clone DOMExceptions
89
89
  // https://github.com/nodejs/node/issues/41038
90
90
  // only FF103+ supports new (html/5749) error cloning semantic
91
- var nativeStructuredClone = global.structuredClone;
91
+ var nativeStructuredClone = globalThis.structuredClone;
92
92
 
93
93
  var FORCED_REPLACEMENT = IS_PURE
94
94
  || !checkErrorsCloning(nativeStructuredClone, Error)
@@ -128,10 +128,10 @@ var tryNativeRestrictedStructuredClone = function (value, type) {
128
128
  var createDataTransfer = function () {
129
129
  var dataTransfer;
130
130
  try {
131
- dataTransfer = new global.DataTransfer();
131
+ dataTransfer = new globalThis.DataTransfer();
132
132
  } catch (error) {
133
133
  try {
134
- dataTransfer = new global.ClipboardEvent('').clipboardData;
134
+ dataTransfer = new globalThis.ClipboardEvent('').clipboardData;
135
135
  } catch (error2) { /* empty */ }
136
136
  }
137
137
  return dataTransfer && dataTransfer.items && dataTransfer.files ? dataTransfer : null;
@@ -148,7 +148,7 @@ var cloneBuffer = function (value, map, $type) {
148
148
  // SharedArrayBuffer should use shared memory, we can't polyfill it, so return the original
149
149
  else clone = value;
150
150
  } else {
151
- var DataView = global.DataView;
151
+ var DataView = globalThis.DataView;
152
152
 
153
153
  // `ArrayBuffer#slice` is not available in IE10
154
154
  // `ArrayBuffer#slice` and `DataView` are not available in old FF
@@ -179,7 +179,7 @@ var cloneBuffer = function (value, map, $type) {
179
179
  };
180
180
 
181
181
  var cloneView = function (value, type, offset, length, map) {
182
- var C = global[type];
182
+ var C = globalThis[type];
183
183
  // in some old engines like Safari 9, typeof C is 'object'
184
184
  // on Uint8ClampedArray or some other constructors
185
185
  if (!isObject(C)) throwUnpolyfillable(type);
@@ -334,7 +334,7 @@ var structuredCloneInternal = function (value, map) {
334
334
  } break;
335
335
  case 'DOMPoint':
336
336
  case 'DOMPointReadOnly':
337
- C = global[type];
337
+ C = globalThis[type];
338
338
  try {
339
339
  cloned = C.fromPoint
340
340
  ? C.fromPoint(value)
@@ -344,7 +344,7 @@ var structuredCloneInternal = function (value, map) {
344
344
  } break;
345
345
  case 'DOMRect':
346
346
  case 'DOMRectReadOnly':
347
- C = global[type];
347
+ C = globalThis[type];
348
348
  try {
349
349
  cloned = C.fromRect
350
350
  ? C.fromRect(value)
@@ -354,7 +354,7 @@ var structuredCloneInternal = function (value, map) {
354
354
  } break;
355
355
  case 'DOMMatrix':
356
356
  case 'DOMMatrixReadOnly':
357
- C = global[type];
357
+ C = globalThis[type];
358
358
  try {
359
359
  cloned = C.fromMatrix
360
360
  ? C.fromMatrix(value)
@@ -459,7 +459,7 @@ var tryToTransfer = function (rawTransfer, map) {
459
459
  transferred = nativeStructuredClone(value, { transfer: [value] });
460
460
  } else switch (type) {
461
461
  case 'ImageBitmap':
462
- C = global.OffscreenCanvas;
462
+ C = globalThis.OffscreenCanvas;
463
463
  if (!isConstructor(C)) throwUnpolyfillable(type, TRANSFERRING);
464
464
  try {
465
465
  canvas = new C(value.width, value.height);
@@ -1,9 +1,11 @@
1
1
  'use strict';
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
+ require('../modules/es.string.from-code-point');
4
5
  var $ = require('../internals/export');
5
- var global = require('../internals/global');
6
+ var globalThis = require('../internals/global-this');
6
7
  var safeGetBuiltIn = require('../internals/safe-get-built-in');
8
+ var getBuiltIn = require('../internals/get-built-in');
7
9
  var call = require('../internals/function-call');
8
10
  var uncurryThis = require('../internals/function-uncurry-this');
9
11
  var DESCRIPTORS = require('../internals/descriptors');
@@ -43,10 +45,11 @@ var NativeRequest = safeGetBuiltIn('Request');
43
45
  var Headers = safeGetBuiltIn('Headers');
44
46
  var RequestPrototype = NativeRequest && NativeRequest.prototype;
45
47
  var HeadersPrototype = Headers && Headers.prototype;
46
- var RegExp = global.RegExp;
47
- var TypeError = global.TypeError;
48
- var decodeURIComponent = global.decodeURIComponent;
49
- var encodeURIComponent = global.encodeURIComponent;
48
+ var TypeError = globalThis.TypeError;
49
+ var encodeURIComponent = globalThis.encodeURIComponent;
50
+ var fromCharCode = String.fromCharCode;
51
+ var fromCodePoint = getBuiltIn('String', 'fromCodePoint');
52
+ var $parseInt = parseInt;
50
53
  var charAt = uncurryThis(''.charAt);
51
54
  var join = uncurryThis([].join);
52
55
  var push = uncurryThis([].push);
@@ -55,33 +58,125 @@ var shift = uncurryThis([].shift);
55
58
  var splice = uncurryThis([].splice);
56
59
  var split = uncurryThis(''.split);
57
60
  var stringSlice = uncurryThis(''.slice);
61
+ var exec = uncurryThis(/./.exec);
58
62
 
59
63
  var plus = /\+/g;
60
- var sequences = Array(4);
64
+ var FALLBACK_REPLACER = '\uFFFD';
65
+ var VALID_HEX = /^[0-9a-f]+$/i;
61
66
 
62
- var percentSequence = function (bytes) {
63
- return sequences[bytes - 1] || (sequences[bytes - 1] = RegExp('((?:%[\\da-f]{2}){' + bytes + '})', 'gi'));
67
+ var parseHexOctet = function (string, start) {
68
+ var substr = stringSlice(string, start, start + 2);
69
+ if (!exec(VALID_HEX, substr)) return NaN;
70
+
71
+ return $parseInt(substr, 16);
72
+ };
73
+
74
+ var getLeadingOnes = function (octet) {
75
+ var count = 0;
76
+ for (var mask = 0x80; mask > 0 && (octet & mask) !== 0; mask >>= 1) {
77
+ count++;
78
+ }
79
+ return count;
64
80
  };
65
81
 
66
- var percentDecode = function (sequence) {
67
- try {
68
- return decodeURIComponent(sequence);
69
- } catch (error) {
70
- return sequence;
82
+ var utf8Decode = function (octets) {
83
+ var codePoint = null;
84
+
85
+ switch (octets.length) {
86
+ case 1:
87
+ codePoint = octets[0];
88
+ break;
89
+ case 2:
90
+ codePoint = (octets[0] & 0x1F) << 6 | (octets[1] & 0x3F);
91
+ break;
92
+ case 3:
93
+ codePoint = (octets[0] & 0x0F) << 12 | (octets[1] & 0x3F) << 6 | (octets[2] & 0x3F);
94
+ break;
95
+ case 4:
96
+ codePoint = (octets[0] & 0x07) << 18 | (octets[1] & 0x3F) << 12 | (octets[2] & 0x3F) << 6 | (octets[3] & 0x3F);
97
+ break;
71
98
  }
99
+
100
+ return codePoint > 0x10FFFF ? null : codePoint;
72
101
  };
73
102
 
74
- var deserialize = function (it) {
75
- var result = replace(it, plus, ' ');
76
- var bytes = 4;
77
- try {
78
- return decodeURIComponent(result);
79
- } catch (error) {
80
- while (bytes) {
81
- result = replace(result, percentSequence(bytes--), percentDecode);
103
+ var decode = function (input) {
104
+ input = replace(input, plus, ' ');
105
+ var length = input.length;
106
+ var result = '';
107
+ var i = 0;
108
+
109
+ while (i < length) {
110
+ var decodedChar = charAt(input, i);
111
+
112
+ if (decodedChar === '%') {
113
+ if (charAt(input, i + 1) === '%' || i + 3 > length) {
114
+ result += '%';
115
+ i++;
116
+ continue;
117
+ }
118
+
119
+ var octet = parseHexOctet(input, i + 1);
120
+
121
+ // eslint-disable-next-line no-self-compare -- NaN check
122
+ if (octet !== octet) {
123
+ result += decodedChar;
124
+ i++;
125
+ continue;
126
+ }
127
+
128
+ i += 2;
129
+ var byteSequenceLength = getLeadingOnes(octet);
130
+
131
+ if (byteSequenceLength === 0) {
132
+ decodedChar = fromCharCode(octet);
133
+ } else {
134
+ if (byteSequenceLength === 1 || byteSequenceLength > 4) {
135
+ result += FALLBACK_REPLACER;
136
+ i++;
137
+ continue;
138
+ }
139
+
140
+ var octets = [octet];
141
+ var sequenceIndex = 1;
142
+
143
+ while (sequenceIndex < byteSequenceLength) {
144
+ i++;
145
+ if (i + 3 > length || charAt(input, i) !== '%') break;
146
+
147
+ var nextByte = parseHexOctet(input, i + 1);
148
+
149
+ // eslint-disable-next-line no-self-compare -- NaN check
150
+ if (nextByte !== nextByte) {
151
+ i += 3;
152
+ break;
153
+ }
154
+ if (nextByte > 191 || nextByte < 128) break;
155
+
156
+ push(octets, nextByte);
157
+ i += 2;
158
+ sequenceIndex++;
159
+ }
160
+
161
+ if (octets.length !== byteSequenceLength) {
162
+ result += FALLBACK_REPLACER;
163
+ continue;
164
+ }
165
+
166
+ var codePoint = utf8Decode(octets);
167
+ if (codePoint === null) {
168
+ result += FALLBACK_REPLACER;
169
+ } else {
170
+ decodedChar = fromCodePoint(codePoint);
171
+ }
172
+ }
82
173
  }
83
- return result;
174
+
175
+ result += decodedChar;
176
+ i++;
84
177
  }
178
+
179
+ return result;
85
180
  };
86
181
 
87
182
  var find = /[!'()~]|%20/g;
@@ -115,7 +210,7 @@ var URLSearchParamsIterator = createIteratorConstructor(function Iterator(params
115
210
  var target = state.target;
116
211
  var index = state.index++;
117
212
  if (!target || index >= target.length) {
118
- state.target = undefined;
213
+ state.target = null;
119
214
  return createIterResultObject(undefined, true);
120
215
  }
121
216
  var entry = target[index];
@@ -174,8 +269,8 @@ URLSearchParamsState.prototype = {
174
269
  if (attribute.length) {
175
270
  entry = split(attribute, '=');
176
271
  push(entries, {
177
- key: deserialize(shift(entry)),
178
- value: deserialize(join(entry, '='))
272
+ key: decode(shift(entry)),
273
+ value: decode(join(entry, '='))
179
274
  });
180
275
  }
181
276
  }