core-js 3.0.0 → 3.1.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 (110) hide show
  1. package/README.md +7 -5
  2. package/es/index.js +2 -0
  3. package/es/instance/match-all.js +8 -0
  4. package/es/number/max-safe-integer.js +1 -1
  5. package/es/number/min-safe-integer.js +1 -1
  6. package/es/string/index.js +1 -0
  7. package/es/string/match-all.js +3 -0
  8. package/es/string/virtual/index.js +1 -0
  9. package/es/string/virtual/match-all.js +3 -0
  10. package/es/symbol/index.js +1 -0
  11. package/es/symbol/match-all.js +4 -0
  12. package/features/array/flat-map.js +1 -1
  13. package/features/array/flat.js +1 -1
  14. package/features/index.js +1 -1
  15. package/features/instance/match-all.js +1 -8
  16. package/features/object/index.js +1 -1
  17. package/features/string/index.js +1 -0
  18. package/features/string/match-all.js +2 -1
  19. package/features/string/virtual/index.js +1 -0
  20. package/features/string/virtual/match-all.js +2 -1
  21. package/features/symbol/index.js +1 -0
  22. package/features/symbol/match-all.js +1 -0
  23. package/features/symbol/replace-all.js +3 -0
  24. package/internals/array-buffer-view-core.js +1 -1
  25. package/internals/array-buffer.js +3 -3
  26. package/internals/call-with-safe-iteration-closing.js +2 -2
  27. package/internals/check-correctness-of-iteration.js +2 -2
  28. package/internals/classof.js +1 -1
  29. package/internals/fails.js +1 -1
  30. package/internals/flatten-into-array.js +1 -1
  31. package/internals/forced-object-prototype-accessors-methods.js +6 -2
  32. package/internals/forced-string-trim-method.js +1 -1
  33. package/internals/global.js +12 -3
  34. package/internals/hide.js +2 -1
  35. package/internals/ie8-dom-define.js +6 -2
  36. package/internals/internal-metadata.js +2 -1
  37. package/internals/microtask.js +3 -3
  38. package/internals/native-symbol.js +5 -3
  39. package/internals/native-url.js +2 -1
  40. package/internals/object-assign.js +7 -2
  41. package/internals/object-create.js +2 -1
  42. package/internals/object-define-property.js +1 -1
  43. package/internals/object-get-own-property-descriptor.js +1 -1
  44. package/internals/object-get-own-property-names-external.js +1 -1
  45. package/internals/object-set-prototype-of.js +2 -2
  46. package/internals/object-to-array.js +8 -3
  47. package/internals/parse-int.js +1 -1
  48. package/internals/perform.js +3 -3
  49. package/internals/punycode-to-ascii.js +3 -3
  50. package/internals/redefine.js +2 -1
  51. package/internals/set-global.js +1 -1
  52. package/internals/shared.js +3 -2
  53. package/internals/sloppy-array-method.js +2 -2
  54. package/internals/string-at.js +3 -3
  55. package/internals/task.js +21 -11
  56. package/internals/to-length.js +1 -1
  57. package/internals/typed-array-constructor.js +1 -1
  58. package/internals/webkit-string-pad-bug.js +5 -0
  59. package/internals/whitespaces.js +1 -1
  60. package/modules/es.array.concat.js +1 -1
  61. package/modules/es.array.splice.js +1 -1
  62. package/modules/es.function.name.js +1 -1
  63. package/modules/es.math.imul.js +2 -2
  64. package/modules/es.number.is-safe-integer.js +1 -1
  65. package/modules/es.number.max-safe-integer.js +1 -1
  66. package/modules/es.number.min-safe-integer.js +1 -1
  67. package/modules/es.object.get-own-property-names.js +1 -1
  68. package/modules/es.promise.js +15 -13
  69. package/modules/es.reflect.define-property.js +1 -1
  70. package/modules/es.reflect.prevent-extensions.js +1 -1
  71. package/modules/es.reflect.set-prototype-of.js +1 -1
  72. package/modules/es.regexp.to-string.js +5 -3
  73. package/modules/es.string.from-code-point.js +2 -2
  74. package/modules/es.string.match-all.js +91 -0
  75. package/modules/es.string.pad-end.js +1 -4
  76. package/modules/es.string.pad-start.js +1 -4
  77. package/modules/es.string.replace.js +2 -2
  78. package/modules/es.string.split.js +1 -1
  79. package/modules/es.symbol.js +11 -1
  80. package/modules/es.symbol.match-all.js +2 -0
  81. package/modules/esnext.math.imulh.js +1 -1
  82. package/modules/esnext.math.umulh.js +1 -1
  83. package/modules/esnext.number.from-string.js +1 -1
  84. package/modules/esnext.observable.js +12 -12
  85. package/modules/esnext.promise.all-settled.js +4 -2
  86. package/modules/esnext.promise.any.js +4 -2
  87. package/modules/esnext.promise.try.js +8 -6
  88. package/modules/esnext.string.match-all.js +3 -87
  89. package/modules/esnext.string.replace-all.js +37 -8
  90. package/modules/esnext.symbol.replace-all.js +3 -0
  91. package/modules/web.dom-collections.for-each.js +1 -1
  92. package/modules/web.dom-collections.iterator.js +2 -2
  93. package/modules/web.url-search-params.js +19 -1
  94. package/modules/web.url.js +32 -36
  95. package/package.json +5 -2
  96. package/proposals/string-match-all.js +3 -0
  97. package/proposals/string-replace-all.js +1 -0
  98. package/scripts/postinstall.js +12 -0
  99. package/stable/array/flat-map.js +1 -1
  100. package/stable/array/flat.js +1 -1
  101. package/stable/instance/match-all.js +1 -0
  102. package/stable/object/index.js +1 -1
  103. package/stable/string/match-all.js +1 -0
  104. package/stable/string/virtual/match-all.js +1 -0
  105. package/stable/symbol/match-all.js +1 -0
  106. package/stage/0.js +0 -1
  107. package/stage/1.js +1 -1
  108. package/stage/2.js +1 -1
  109. package/stage/3.js +1 -1
  110. package/stage/4.js +2 -0
@@ -4,7 +4,7 @@ var fails = require('../internals/fails');
4
4
  module.exports = function (METHOD_NAME, argument) {
5
5
  var method = [][METHOD_NAME];
6
6
  return !method || !fails(function () {
7
- // eslint-disable-next-line no-useless-call
8
- method.call(null, argument || function () { throw Error(); }, 1);
7
+ // eslint-disable-next-line no-useless-call,no-throw-literal
8
+ method.call(null, argument || function () { throw 1; }, 1);
9
9
  });
10
10
  };
@@ -9,8 +9,8 @@ module.exports = function (that, pos, CONVERT_TO_STRING) {
9
9
  var first, second;
10
10
  if (position < 0 || position >= size) return CONVERT_TO_STRING ? '' : undefined;
11
11
  first = S.charCodeAt(position);
12
- return first < 0xd800 || first > 0xdbff || position + 1 === size
13
- || (second = S.charCodeAt(position + 1)) < 0xdc00 || second > 0xdfff
12
+ return first < 0xD800 || first > 0xDBFF || position + 1 === size
13
+ || (second = S.charCodeAt(position + 1)) < 0xDC00 || second > 0xDFFF
14
14
  ? CONVERT_TO_STRING ? S.charAt(position) : first
15
- : CONVERT_TO_STRING ? S.slice(position, position + 2) : (first - 0xd800 << 10) + (second - 0xdc00) + 0x10000;
15
+ : CONVERT_TO_STRING ? S.slice(position, position + 2) : (first - 0xD800 << 10) + (second - 0xDC00) + 0x10000;
16
16
  };
package/internals/task.js CHANGED
@@ -1,8 +1,10 @@
1
1
  var global = require('../internals/global');
2
+ var fails = require('../internals/fails');
2
3
  var classof = require('../internals/classof-raw');
3
4
  var bind = require('../internals/bind-context');
4
5
  var html = require('../internals/html');
5
6
  var createElement = require('../internals/document-create-element');
7
+ var location = global.location;
6
8
  var set = global.setImmediate;
7
9
  var clear = global.clearImmediate;
8
10
  var process = global.process;
@@ -13,8 +15,7 @@ var queue = {};
13
15
  var ONREADYSTATECHANGE = 'onreadystatechange';
14
16
  var defer, channel, port;
15
17
 
16
- var run = function () {
17
- var id = +this;
18
+ var run = function (id) {
18
19
  // eslint-disable-next-line no-prototype-builtins
19
20
  if (queue.hasOwnProperty(id)) {
20
21
  var fn = queue[id];
@@ -23,8 +24,19 @@ var run = function () {
23
24
  }
24
25
  };
25
26
 
27
+ var runner = function (id) {
28
+ return function () {
29
+ run(id);
30
+ };
31
+ };
32
+
26
33
  var listener = function (event) {
27
- run.call(event.data);
34
+ run(event.data);
35
+ };
36
+
37
+ var post = function (id) {
38
+ // old engines have not location.origin
39
+ global.postMessage(id + '', location.protocol + '//' + location.host);
28
40
  };
29
41
 
30
42
  // Node.js 0.9+ & IE10+ has setImmediate, otherwise:
@@ -46,12 +58,12 @@ if (!set || !clear) {
46
58
  // Node.js 0.8-
47
59
  if (classof(process) == 'process') {
48
60
  defer = function (id) {
49
- process.nextTick(bind(run, id, 1));
61
+ process.nextTick(runner(id));
50
62
  };
51
63
  // Sphere (JS game engine) Dispatch API
52
64
  } else if (Dispatch && Dispatch.now) {
53
65
  defer = function (id) {
54
- Dispatch.now(bind(run, id, 1));
66
+ Dispatch.now(runner(id));
55
67
  };
56
68
  // Browsers with MessageChannel, includes WebWorkers
57
69
  } else if (MessageChannel) {
@@ -61,23 +73,21 @@ if (!set || !clear) {
61
73
  defer = bind(port.postMessage, port, 1);
62
74
  // Browsers with postMessage, skip WebWorkers
63
75
  // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'
64
- } else if (global.addEventListener && typeof postMessage == 'function' && !global.importScripts) {
65
- defer = function (id) {
66
- global.postMessage(id + '', '*');
67
- };
76
+ } else if (global.addEventListener && typeof postMessage == 'function' && !global.importScripts && !fails(post)) {
77
+ defer = post;
68
78
  global.addEventListener('message', listener, false);
69
79
  // IE8-
70
80
  } else if (ONREADYSTATECHANGE in createElement('script')) {
71
81
  defer = function (id) {
72
82
  html.appendChild(createElement('script'))[ONREADYSTATECHANGE] = function () {
73
83
  html.removeChild(this);
74
- run.call(id);
84
+ run(id);
75
85
  };
76
86
  };
77
87
  // Rest old browsers
78
88
  } else {
79
89
  defer = function (id) {
80
- setTimeout(bind(run, id, 1), 0);
90
+ setTimeout(runner(id), 0);
81
91
  };
82
92
  }
83
93
  }
@@ -4,5 +4,5 @@ var min = Math.min;
4
4
  // `ToLength` abstract operation
5
5
  // https://tc39.github.io/ecma262/#sec-tolength
6
6
  module.exports = function (argument) {
7
- return argument > 0 ? min(toInteger(argument), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991
7
+ return argument > 0 ? min(toInteger(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991
8
8
  };
@@ -119,7 +119,7 @@ if (require('../internals/descriptors')) {
119
119
 
120
120
  var setter = function (that, index, value) {
121
121
  var data = getInternalState(that);
122
- if (CLAMPED) value = (value = Math.round(value)) < 0 ? 0 : value > 0xff ? 0xff : value & 0xff;
122
+ if (CLAMPED) value = (value = Math.round(value)) < 0 ? 0 : value > 0xFF ? 0xFF : value & 0xFF;
123
123
  data.view[SETTER](index * BYTES + data.byteOffset, value, true);
124
124
  };
125
125
 
@@ -0,0 +1,5 @@
1
+ // https://github.com/zloirock/core-js/issues/280
2
+ var userAgent = require('../internals/user-agent');
3
+
4
+ // eslint-disable-next-line unicorn/no-unsafe-regex
5
+ module.exports = /Version\/10\.\d+(\.\d+)?( Mobile\/\w+)? Safari\//.test(userAgent);
@@ -1,3 +1,3 @@
1
1
  // a string of all valid unicode whitespaces
2
2
  // eslint-disable-next-line max-len
3
- module.exports = '\x09\x0A\x0B\x0C\x0D\x20\xA0\u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\u2028\u2029\uFEFF';
3
+ module.exports = '\u0009\u000A\u000B\u000C\u000D\u0020\u00A0\u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\u2028\u2029\uFEFF';
@@ -6,7 +6,7 @@ var toLength = require('../internals/to-length');
6
6
  var createProperty = require('../internals/create-property');
7
7
  var arraySpeciesCreate = require('../internals/array-species-create');
8
8
  var IS_CONCAT_SPREADABLE = require('../internals/well-known-symbol')('isConcatSpreadable');
9
- var MAX_SAFE_INTEGER = 0x1fffffffffffff;
9
+ var MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF;
10
10
  var MAXIMUM_ALLOWED_INDEX_EXCEEDED = 'Maximum allowed index exceeded';
11
11
 
12
12
  var IS_CONCAT_SPREADABLE_SUPPORT = !require('../internals/fails')(function () {
@@ -7,7 +7,7 @@ var arraySpeciesCreate = require('../internals/array-species-create');
7
7
  var createProperty = require('../internals/create-property');
8
8
  var max = Math.max;
9
9
  var min = Math.min;
10
- var MAX_SAFE_INTEGER = 0x1fffffffffffff;
10
+ var MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF;
11
11
  var MAXIMUM_ALLOWED_LENGTH_EXCEEDED = 'Maximum allowed length exceeded';
12
12
 
13
13
  var SPECIES_SUPPORT = require('../internals/array-method-has-species-support')('splice');
@@ -13,7 +13,7 @@ if (DESCRIPTORS && !(NAME in FunctionPrototype)) {
13
13
  get: function () {
14
14
  try {
15
15
  return FunctionPrototypeToString.call(this).match(nameRE)[1];
16
- } catch (e) {
16
+ } catch (error) {
17
17
  return '';
18
18
  }
19
19
  }
@@ -1,7 +1,7 @@
1
1
  var nativeImul = Math.imul;
2
2
 
3
3
  var FORCED = require('../internals/fails')(function () {
4
- return nativeImul(0xffffffff, 5) != -5 || nativeImul.length != 2;
4
+ return nativeImul(0xFFFFFFFF, 5) != -5 || nativeImul.length != 2;
5
5
  });
6
6
 
7
7
  // `Math.imul` method
@@ -9,7 +9,7 @@ var FORCED = require('../internals/fails')(function () {
9
9
  // some WebKit versions fails with big numbers, some has wrong arity
10
10
  require('../internals/export')({ target: 'Math', stat: true, forced: FORCED }, {
11
11
  imul: function imul(x, y) {
12
- var UINT16 = 0xffff;
12
+ var UINT16 = 0xFFFF;
13
13
  var xn = +x;
14
14
  var yn = +y;
15
15
  var xl = UINT16 & xn;
@@ -5,6 +5,6 @@ var abs = Math.abs;
5
5
  // https://tc39.github.io/ecma262/#sec-number.issafeinteger
6
6
  require('../internals/export')({ target: 'Number', stat: true }, {
7
7
  isSafeInteger: function isSafeInteger(number) {
8
- return isInteger(number) && abs(number) <= 0x1fffffffffffff;
8
+ return isInteger(number) && abs(number) <= 0x1FFFFFFFFFFFFF;
9
9
  }
10
10
  });
@@ -1,3 +1,3 @@
1
1
  // `Number.MAX_SAFE_INTEGER` constant
2
2
  // https://tc39.github.io/ecma262/#sec-number.max_safe_integer
3
- require('../internals/export')({ target: 'Number', stat: true }, { MAX_SAFE_INTEGER: 0x1fffffffffffff });
3
+ require('../internals/export')({ target: 'Number', stat: true }, { MAX_SAFE_INTEGER: 0x1FFFFFFFFFFFFF });
@@ -1,3 +1,3 @@
1
1
  // `Number.MIN_SAFE_INTEGER` constant
2
2
  // https://tc39.github.io/ecma262/#sec-number.min_safe_integer
3
- require('../internals/export')({ target: 'Number', stat: true }, { MIN_SAFE_INTEGER: -0x1fffffffffffff });
3
+ require('../internals/export')({ target: 'Number', stat: true }, { MIN_SAFE_INTEGER: -0x1FFFFFFFFFFFFF });
@@ -1,5 +1,5 @@
1
1
  var nativeGetOwnPropertyNames = require('../internals/object-get-own-property-names-external').f;
2
- var FAILS_ON_PRIMITIVES = require('../internals/fails')(function () { Object.getOwnPropertyNames(1); });
2
+ var FAILS_ON_PRIMITIVES = require('../internals/fails')(function () { return !Object.getOwnPropertyNames(1); });
3
3
 
4
4
  // `Object.getOwnPropertyNames` method
5
5
  // https://tc39.github.io/ecma262/#sec-object.getownpropertynames
@@ -106,9 +106,9 @@ var notify = function (promise, state, isReject) {
106
106
  then.call(result, resolve, reject);
107
107
  } else resolve(result);
108
108
  } else reject(value);
109
- } catch (e) {
109
+ } catch (error) {
110
110
  if (domain && !exited) domain.exit();
111
- reject(e);
111
+ reject(error);
112
112
  }
113
113
  };
114
114
  while (chain.length > i) run(chain[i++]); // variable length - can't use forEach
@@ -144,8 +144,8 @@ var onUnhandled = function (promise, state) {
144
144
  });
145
145
  // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should
146
146
  state.rejection = IS_NODE || isUnhandled(state) ? UNHANDLED : HANDLED;
147
+ if (result.error) throw result.value;
147
148
  }
148
- if (IS_UNHANDLED && result.e) throw result.v;
149
149
  });
150
150
  };
151
151
 
@@ -191,8 +191,8 @@ var internalResolve = function (promise, state, value, unwrap) {
191
191
  bind(internalResolve, promise, wrapper, state),
192
192
  bind(internalReject, promise, wrapper, state)
193
193
  );
194
- } catch (e) {
195
- internalReject(promise, wrapper, e, state);
194
+ } catch (error) {
195
+ internalReject(promise, wrapper, error, state);
196
196
  }
197
197
  });
198
198
  } else {
@@ -200,8 +200,8 @@ var internalResolve = function (promise, state, value, unwrap) {
200
200
  state.state = FULFILLED;
201
201
  notify(promise, state, false);
202
202
  }
203
- } catch (e) {
204
- internalReject(promise, { done: false }, e, state);
203
+ } catch (error) {
204
+ internalReject(promise, { done: false }, error, state);
205
205
  }
206
206
  };
207
207
 
@@ -215,8 +215,8 @@ if (FORCED) {
215
215
  var state = getInternalState(this);
216
216
  try {
217
217
  executor(bind(internalResolve, this, state), bind(internalReject, this, state));
218
- } catch (err) {
219
- internalReject(this, state, err);
218
+ } catch (error) {
219
+ internalReject(this, state, error);
220
220
  }
221
221
  };
222
222
  // eslint-disable-next-line no-unused-vars
@@ -309,6 +309,7 @@ $export({ target: PROMISE, stat: true, forced: INCORRECT_ITERATION }, {
309
309
  var resolve = capability.resolve;
310
310
  var reject = capability.reject;
311
311
  var result = perform(function () {
312
+ var $promiseResolve = aFunction(C.resolve);
312
313
  var values = [];
313
314
  var counter = 0;
314
315
  var remaining = 1;
@@ -317,7 +318,7 @@ $export({ target: PROMISE, stat: true, forced: INCORRECT_ITERATION }, {
317
318
  var alreadyCalled = false;
318
319
  values.push(undefined);
319
320
  remaining++;
320
- C.resolve(promise).then(function (value) {
321
+ $promiseResolve.call(C, promise).then(function (value) {
321
322
  if (alreadyCalled) return;
322
323
  alreadyCalled = true;
323
324
  values[index] = value;
@@ -326,7 +327,7 @@ $export({ target: PROMISE, stat: true, forced: INCORRECT_ITERATION }, {
326
327
  });
327
328
  --remaining || resolve(values);
328
329
  });
329
- if (result.e) reject(result.v);
330
+ if (result.error) reject(result.value);
330
331
  return capability.promise;
331
332
  },
332
333
  // `Promise.race` method
@@ -336,11 +337,12 @@ $export({ target: PROMISE, stat: true, forced: INCORRECT_ITERATION }, {
336
337
  var capability = newPromiseCapability(C);
337
338
  var reject = capability.reject;
338
339
  var result = perform(function () {
340
+ var $promiseResolve = aFunction(C.resolve);
339
341
  iterate(iterable, function (promise) {
340
- C.resolve(promise).then(capability.resolve, reject);
342
+ $promiseResolve.call(C, promise).then(capability.resolve, reject);
341
343
  });
342
344
  });
343
- if (result.e) reject(result.v);
345
+ if (result.error) reject(result.value);
344
346
  return capability.promise;
345
347
  }
346
348
  });
@@ -19,7 +19,7 @@ require('../internals/export')({ target: 'Reflect', stat: true, forced: ERROR_IN
19
19
  try {
20
20
  definePropertyModule.f(target, propertyKey, attributes);
21
21
  return true;
22
- } catch (e) {
22
+ } catch (error) {
23
23
  return false;
24
24
  }
25
25
  }
@@ -11,7 +11,7 @@ require('../internals/export')({ target: 'Reflect', stat: true, sham: !FREEZING
11
11
  var objectPreventExtensions = getBuiltIn('Object', 'preventExtensions');
12
12
  if (objectPreventExtensions) objectPreventExtensions(target);
13
13
  return true;
14
- } catch (e) {
14
+ } catch (error) {
15
15
  return false;
16
16
  }
17
17
  }
@@ -9,7 +9,7 @@ if (objectSetPrototypeOf) require('../internals/export')({ target: 'Reflect', st
9
9
  try {
10
10
  objectSetPrototypeOf(target, proto);
11
11
  return true;
12
- } catch (e) {
12
+ } catch (error) {
13
13
  return false;
14
14
  }
15
15
  }
@@ -2,9 +2,9 @@
2
2
  var anObject = require('../internals/an-object');
3
3
  var fails = require('../internals/fails');
4
4
  var flags = require('../internals/regexp-flags');
5
- var DESCRIPTORS = require('../internals/descriptors');
6
5
  var TO_STRING = 'toString';
7
6
  var nativeToString = /./[TO_STRING];
7
+ var RegExpPrototype = RegExp.prototype;
8
8
 
9
9
  var NOT_GENERIC = fails(function () { return nativeToString.call({ source: 'a', flags: 'b' }) != '/a/b'; });
10
10
  // FF44- RegExp#toString has a wrong name
@@ -15,7 +15,9 @@ var INCORRECT_NAME = nativeToString.name != TO_STRING;
15
15
  if (NOT_GENERIC || INCORRECT_NAME) {
16
16
  require('../internals/redefine')(RegExp.prototype, TO_STRING, function toString() {
17
17
  var R = anObject(this);
18
- return '/'.concat(R.source, '/',
19
- 'flags' in R ? R.flags : !DESCRIPTORS && R instanceof RegExp ? flags.call(R) : undefined);
18
+ var p = String(R.source);
19
+ var rf = R.flags;
20
+ var f = String(rf === undefined && R instanceof RegExp && !('flags' in RegExpPrototype) ? flags.call(R) : rf);
21
+ return '/' + p + '/' + f;
20
22
  }, { unsafe: true });
21
23
  }
@@ -15,10 +15,10 @@ require('../internals/export')({ target: 'String', stat: true, forced: INCORRECT
15
15
  var code;
16
16
  while (length > i) {
17
17
  code = +arguments[i++];
18
- if (toAbsoluteIndex(code, 0x10ffff) !== code) throw RangeError(code + ' is not a valid code point');
18
+ if (toAbsoluteIndex(code, 0x10FFFF) !== code) throw RangeError(code + ' is not a valid code point');
19
19
  elements.push(code < 0x10000
20
20
  ? fromCharCode(code)
21
- : fromCharCode(((code -= 0x10000) >> 10) + 0xd800, code % 0x400 + 0xdc00)
21
+ : fromCharCode(((code -= 0x10000) >> 10) + 0xD800, code % 0x400 + 0xDC00)
22
22
  );
23
23
  } return elements.join('');
24
24
  }
@@ -0,0 +1,91 @@
1
+ 'use strict';
2
+ var createIteratorConstructor = require('../internals/create-iterator-constructor');
3
+ var requireObjectCoercible = require('../internals/require-object-coercible');
4
+ var toLength = require('../internals/to-length');
5
+ var aFunction = require('../internals/a-function');
6
+ var anObject = require('../internals/an-object');
7
+ var classof = require('../internals/classof');
8
+ var getFlags = require('../internals/regexp-flags');
9
+ var hide = require('../internals/hide');
10
+ var speciesConstructor = require('../internals/species-constructor');
11
+ var advanceStringIndex = require('../internals/advance-string-index');
12
+ var MATCH_ALL = require('../internals/well-known-symbol')('matchAll');
13
+ var IS_PURE = require('../internals/is-pure');
14
+ var REGEXP_STRING = 'RegExp String';
15
+ var REGEXP_STRING_ITERATOR = REGEXP_STRING + ' Iterator';
16
+ var InternalStateModule = require('../internals/internal-state');
17
+ var setInternalState = InternalStateModule.set;
18
+ var getInternalState = InternalStateModule.getterFor(REGEXP_STRING_ITERATOR);
19
+ var RegExpPrototype = RegExp.prototype;
20
+ var regExpBuiltinExec = RegExpPrototype.exec;
21
+
22
+ var regExpExec = function (R, S) {
23
+ var exec = R.exec;
24
+ var result;
25
+ if (typeof exec == 'function') {
26
+ result = exec.call(R, S);
27
+ if (typeof result != 'object') throw TypeError('Incorrect exec result');
28
+ return result;
29
+ } return regExpBuiltinExec.call(R, S);
30
+ };
31
+
32
+ // eslint-disable-next-line max-len
33
+ var $RegExpStringIterator = createIteratorConstructor(function RegExpStringIterator(regexp, string, global, fullUnicode) {
34
+ setInternalState(this, {
35
+ type: REGEXP_STRING_ITERATOR,
36
+ regexp: regexp,
37
+ string: string,
38
+ global: global,
39
+ unicode: fullUnicode,
40
+ done: false
41
+ });
42
+ }, REGEXP_STRING, function next() {
43
+ var state = getInternalState(this);
44
+ if (state.done) return { value: undefined, done: true };
45
+ var R = state.regexp;
46
+ var S = state.string;
47
+ var match = regExpExec(R, S);
48
+ if (match === null) return { value: undefined, done: state.done = true };
49
+ if (state.global) {
50
+ if (String(match[0]) == '') R.lastIndex = advanceStringIndex(S, toLength(R.lastIndex), state.unicode);
51
+ return { value: match, done: false };
52
+ }
53
+ state.done = true;
54
+ return { value: match, done: false };
55
+ });
56
+
57
+ var $matchAll = function (string) {
58
+ var R = anObject(this);
59
+ var S = String(string);
60
+ var C, flagsValue, flags, matcher, global, fullUnicode;
61
+ C = speciesConstructor(R, RegExp);
62
+ flagsValue = R.flags;
63
+ if (flagsValue === undefined && R instanceof RegExp && !('flags' in RegExpPrototype)) {
64
+ flagsValue = getFlags.call(R);
65
+ }
66
+ flags = flagsValue === undefined ? '' : String(flagsValue);
67
+ matcher = new C(C === RegExp ? R.source : R, flags);
68
+ global = !!~flags.indexOf('g');
69
+ fullUnicode = !!~flags.indexOf('u');
70
+ matcher.lastIndex = toLength(R.lastIndex);
71
+ return new $RegExpStringIterator(matcher, S, global, fullUnicode);
72
+ };
73
+
74
+ // `String.prototype.matchAll` method
75
+ // https://github.com/tc39/proposal-string-matchall
76
+ require('../internals/export')({ target: 'String', proto: true }, {
77
+ matchAll: function matchAll(regexp) {
78
+ var O = requireObjectCoercible(this);
79
+ var S, matcher, rx;
80
+ if (regexp != null) {
81
+ matcher = regexp[MATCH_ALL];
82
+ if (matcher === undefined && IS_PURE && classof(regexp) == 'RegExp') matcher = $matchAll;
83
+ if (matcher != null) return aFunction(matcher).call(regexp, O);
84
+ }
85
+ S = String(O);
86
+ rx = new RegExp(regexp, 'g');
87
+ return IS_PURE ? $matchAll.call(rx, S) : rx[MATCH_ALL](S);
88
+ }
89
+ });
90
+
91
+ IS_PURE || MATCH_ALL in RegExpPrototype || hide(RegExpPrototype, MATCH_ALL, $matchAll);
@@ -1,9 +1,6 @@
1
1
  'use strict';
2
2
  var internalStringPad = require('../internals/string-pad');
3
- var userAgent = require('../internals/user-agent');
4
-
5
- // https://github.com/zloirock/core-js/issues/280
6
- var WEBKIT_BUG = /Version\/10\.\d+(\.\d+)?( Mobile\/\w+)? Safari\//.test(userAgent);
3
+ var WEBKIT_BUG = require('../internals/webkit-string-pad-bug');
7
4
 
8
5
  // `String.prototype.padEnd` method
9
6
  // https://tc39.github.io/ecma262/#sec-string.prototype.padend
@@ -1,9 +1,6 @@
1
1
  'use strict';
2
2
  var internalStringPad = require('../internals/string-pad');
3
- var userAgent = require('../internals/user-agent');
4
-
5
- // https://github.com/zloirock/core-js/issues/280
6
- var WEBKIT_BUG = /Version\/10\.\d+(\.\d+)?( Mobile\/\w+)? Safari\//.test(userAgent);
3
+ var WEBKIT_BUG = require('../internals/webkit-string-pad-bug');
7
4
 
8
5
  // `String.prototype.padStart` method
9
6
  // https://tc39.github.io/ecma262/#sec-string.prototype.padstart
@@ -10,8 +10,8 @@ var regExpExec = require('../internals/regexp-exec-abstract');
10
10
  var max = Math.max;
11
11
  var min = Math.min;
12
12
  var floor = Math.floor;
13
- var SUBSTITUTION_SYMBOLS = /\$([$&`']|\d\d?|<[^>]*>)/g;
14
- var SUBSTITUTION_SYMBOLS_NO_NAMED = /\$([$&`']|\d\d?)/g;
13
+ var SUBSTITUTION_SYMBOLS = /\$([$&'`]|\d\d?|<[^>]*>)/g;
14
+ var SUBSTITUTION_SYMBOLS_NO_NAMED = /\$([$&'`]|\d\d?)/g;
15
15
 
16
16
  var maybeToString = function (it) {
17
17
  return it === undefined ? it : String(it);
@@ -11,7 +11,7 @@ var regexpExec = require('../internals/regexp-exec');
11
11
  var fails = require('../internals/fails');
12
12
  var arrayPush = [].push;
13
13
  var min = Math.min;
14
- var MAX_UINT32 = 0xffffffff;
14
+ var MAX_UINT32 = 0xFFFFFFFF;
15
15
 
16
16
  // babel-minify transpiles RegExp('x', 'y') -> /x/y and it causes SyntaxError
17
17
  var SUPPORTS_Y = !fails(function () { return !RegExp(MAX_UINT32, 'y'); });
@@ -18,6 +18,7 @@ var enumKeys = require('../internals/enum-keys');
18
18
  var isArray = require('../internals/is-array');
19
19
  var anObject = require('../internals/an-object');
20
20
  var isObject = require('../internals/is-object');
21
+ var toObject = require('../internals/to-object');
21
22
  var toIndexedObject = require('../internals/to-indexed-object');
22
23
  var toPrimitive = require('../internals/to-primitive');
23
24
  var createPropertyDescriptor = require('../internals/create-property-descriptor');
@@ -36,6 +37,7 @@ var getInternalState = InternalStateModule.getterFor(SYMBOL);
36
37
  var nativeGetOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;
37
38
  var nativeDefineProperty = definePropertyModule.f;
38
39
  var nativeGetOwnPropertyNames = getOwnPropertyNamesExternal.f;
40
+ var getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');
39
41
  var $Symbol = global.Symbol;
40
42
  var JSON = global.JSON;
41
43
  var nativeJSONStringify = JSON && JSON.stringify;
@@ -172,7 +174,7 @@ if (!NATIVE_SYMBOL) {
172
174
  definePropertyModule.f = $defineProperty;
173
175
  getOwnPropertyDescriptorModule.f = $getOwnPropertyDescriptor;
174
176
  require('../internals/object-get-own-property-names').f = getOwnPropertyNamesExternal.f = $getOwnPropertyNames;
175
- require('../internals/object-get-own-property-symbols').f = $getOwnPropertySymbols;
177
+ getOwnPropertySymbolsModule.f = $getOwnPropertySymbols;
176
178
 
177
179
  if (DESCRIPTORS) {
178
180
  // https://github.com/tc39/proposal-Symbol-description
@@ -240,6 +242,14 @@ $export({ target: 'Object', stat: true, forced: !NATIVE_SYMBOL }, {
240
242
  getOwnPropertySymbols: $getOwnPropertySymbols
241
243
  });
242
244
 
245
+ // Chrome 38 and 39 `Object.getOwnPropertySymbols` fails on primitives
246
+ // https://bugs.chromium.org/p/v8/issues/detail?id=3443
247
+ $export({ target: 'Object', stat: true, forced: fails(function () { getOwnPropertySymbolsModule.f(1); }) }, {
248
+ getOwnPropertySymbols: function getOwnPropertySymbols(it) {
249
+ return getOwnPropertySymbolsModule.f(toObject(it));
250
+ }
251
+ });
252
+
243
253
  // `JSON.stringify` method behavior with symbols
244
254
  // https://tc39.github.io/ecma262/#sec-json.stringify
245
255
  JSON && $export({ target: 'JSON', stat: true, forced: !NATIVE_SYMBOL || fails(function () {
@@ -0,0 +1,2 @@
1
+ // `Symbol.matchAll` well-known symbol
2
+ require('../internals/define-well-known-symbol')('matchAll');
@@ -2,7 +2,7 @@
2
2
  // https://gist.github.com/BrendanEich/4294d5c212a6d2254703
3
3
  require('../internals/export')({ target: 'Math', stat: true }, {
4
4
  imulh: function imulh(u, v) {
5
- var UINT16 = 0xffff;
5
+ var UINT16 = 0xFFFF;
6
6
  var $u = +u;
7
7
  var $v = +v;
8
8
  var u0 = $u & UINT16;
@@ -2,7 +2,7 @@
2
2
  // https://gist.github.com/BrendanEich/4294d5c212a6d2254703
3
3
  require('../internals/export')({ target: 'Math', stat: true }, {
4
4
  umulh: function umulh(u, v) {
5
- var UINT16 = 0xffff;
5
+ var UINT16 = 0xFFFF;
6
6
  var $u = +u;
7
7
  var $v = +v;
8
8
  var u0 = $u & UINT16;
@@ -3,7 +3,7 @@ var toInteger = require('../internals/to-integer');
3
3
  var parseInt = require('../internals/parse-int');
4
4
  var INVALID_NUMBER_REPRESENTATION = 'Invalid number representation';
5
5
  var INVALID_RADIX = 'Invalid radix';
6
- var valid = /^[0-9a-z]+$/;
6
+ var valid = /^[\da-z]+$/;
7
7
 
8
8
  // `Number.fromString` method
9
9
  // https://github.com/tc39/proposal-number-fromstring