core-js 3.1.3 → 3.1.4

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 (160) hide show
  1. package/internals/a-possible-prototype.js +7 -0
  2. package/internals/advance-string-index.js +2 -2
  3. package/internals/array-buffer-view-core.js +1 -1
  4. package/internals/array-buffer.js +12 -12
  5. package/internals/array-copy-within.js +3 -1
  6. package/internals/array-for-each.js +3 -6
  7. package/internals/array-from.js +1 -1
  8. package/internals/array-includes.js +12 -7
  9. package/internals/{array-methods.js → array-iteration.js} +30 -18
  10. package/internals/array-last-index-of.js +3 -2
  11. package/internals/array-reduce.js +30 -21
  12. package/internals/collection-from.js +3 -2
  13. package/internals/collection-weak.js +5 -5
  14. package/internals/collection.js +3 -3
  15. package/internals/composite-key.js +1 -0
  16. package/internals/date-to-iso-string.js +12 -14
  17. package/internals/document-create-element.js +2 -2
  18. package/internals/function-bind.js +3 -3
  19. package/internals/html.js +2 -4
  20. package/internals/indexed-object.js +1 -1
  21. package/internals/inherit-if-required.js +13 -6
  22. package/internals/iterate.js +18 -10
  23. package/internals/math-expm1.js +2 -1
  24. package/internals/math-fround.js +2 -1
  25. package/internals/math-log1p.js +3 -1
  26. package/internals/not-a-regexp.js +7 -0
  27. package/internals/object-assign.js +2 -1
  28. package/internals/object-create.js +2 -1
  29. package/internals/object-define-properties.js +4 -2
  30. package/internals/object-define-property.js +2 -0
  31. package/internals/object-get-own-property-descriptor.js +2 -0
  32. package/internals/object-get-own-property-names.js +2 -1
  33. package/internals/object-get-prototype-of.js +2 -1
  34. package/internals/object-keys-internal.js +2 -4
  35. package/internals/object-keys.js +2 -1
  36. package/internals/object-property-is-enumerable.js +2 -0
  37. package/internals/object-set-prototype-of.js +9 -5
  38. package/internals/object-to-array.js +25 -15
  39. package/internals/own-keys.js +2 -4
  40. package/internals/parse-float.js +7 -5
  41. package/internals/parse-int.js +6 -4
  42. package/internals/punycode-to-ascii.js +2 -4
  43. package/internals/reflect-metadata.js +1 -0
  44. package/internals/regexp-flags.js +1 -0
  45. package/internals/set-species.js +8 -5
  46. package/internals/string-multibyte.js +27 -0
  47. package/internals/string-pad.js +25 -11
  48. package/internals/string-trim.js +20 -8
  49. package/internals/to-primitive.js +7 -6
  50. package/internals/typed-array-constructor.js +5 -5
  51. package/internals/uid.js +1 -1
  52. package/internals/user-agent.js +2 -4
  53. package/modules/es.array.every.js +3 -6
  54. package/modules/es.array.fill.js +3 -1
  55. package/modules/es.array.filter.js +3 -6
  56. package/modules/es.array.find-index.js +2 -3
  57. package/modules/es.array.find.js +2 -3
  58. package/modules/es.array.flat-map.js +1 -1
  59. package/modules/es.array.flat.js +1 -1
  60. package/modules/es.array.includes.js +2 -4
  61. package/modules/es.array.index-of.js +2 -3
  62. package/modules/es.array.is-array.js +3 -1
  63. package/modules/es.array.map.js +3 -6
  64. package/modules/es.array.reduce-right.js +3 -4
  65. package/modules/es.array.reduce.js +3 -5
  66. package/modules/es.array.slice.js +1 -3
  67. package/modules/es.array.some.js +3 -6
  68. package/modules/es.array.splice.js +1 -3
  69. package/modules/es.map.js +1 -1
  70. package/modules/es.number.constructor.js +9 -10
  71. package/modules/es.number.to-fixed.js +57 -53
  72. package/modules/es.object.entries.js +2 -2
  73. package/modules/es.object.get-own-property-descriptors.js +3 -3
  74. package/modules/es.object.get-prototype-of.js +1 -0
  75. package/modules/es.object.values.js +2 -2
  76. package/modules/es.promise.js +6 -5
  77. package/modules/es.reflect.apply.js +2 -2
  78. package/modules/es.reflect.construct.js +4 -4
  79. package/modules/es.reflect.define-property.js +5 -5
  80. package/modules/es.reflect.delete-property.js +1 -1
  81. package/modules/es.reflect.get-own-property-descriptor.js +2 -2
  82. package/modules/es.reflect.get-prototype-of.js +1 -1
  83. package/modules/es.reflect.get.js +3 -3
  84. package/modules/es.reflect.set-prototype-of.js +4 -2
  85. package/modules/es.reflect.set.js +3 -3
  86. package/modules/es.regexp.constructor.js +3 -3
  87. package/modules/es.regexp.to-string.js +1 -1
  88. package/modules/es.set.js +1 -1
  89. package/modules/es.string.code-point-at.js +2 -2
  90. package/modules/es.string.ends-with.js +6 -5
  91. package/modules/es.string.includes.js +4 -3
  92. package/modules/es.string.iterator.js +2 -2
  93. package/modules/es.string.pad-end.js +2 -2
  94. package/modules/es.string.pad-start.js +2 -2
  95. package/modules/es.string.starts-with.js +8 -6
  96. package/modules/es.string.trim-end.js +2 -2
  97. package/modules/es.string.trim-start.js +2 -2
  98. package/modules/es.string.trim.js +3 -5
  99. package/modules/es.symbol.js +93 -85
  100. package/modules/es.typed-array.copy-within.js +2 -2
  101. package/modules/es.typed-array.every.js +2 -3
  102. package/modules/es.typed-array.fill.js +2 -2
  103. package/modules/es.typed-array.filter.js +3 -4
  104. package/modules/es.typed-array.find-index.js +2 -3
  105. package/modules/es.typed-array.find.js +2 -3
  106. package/modules/es.typed-array.for-each.js +2 -3
  107. package/modules/es.typed-array.includes.js +2 -3
  108. package/modules/es.typed-array.index-of.js +2 -3
  109. package/modules/es.typed-array.iterator.js +1 -1
  110. package/modules/es.typed-array.join.js +2 -2
  111. package/modules/es.typed-array.last-index-of.js +2 -2
  112. package/modules/es.typed-array.map.js +5 -7
  113. package/modules/es.typed-array.of.js +1 -1
  114. package/modules/es.typed-array.reduce-right.js +2 -2
  115. package/modules/es.typed-array.reduce.js +2 -2
  116. package/modules/es.typed-array.reverse.js +2 -1
  117. package/modules/es.typed-array.set.js +2 -2
  118. package/modules/es.typed-array.slice.js +3 -3
  119. package/modules/es.typed-array.some.js +2 -3
  120. package/modules/es.typed-array.sort.js +2 -2
  121. package/modules/es.typed-array.subarray.js +1 -1
  122. package/modules/es.typed-array.to-locale-string.js +7 -6
  123. package/modules/es.weak-map.js +1 -1
  124. package/modules/es.weak-set.js +1 -1
  125. package/modules/esnext.global-this.js +3 -1
  126. package/modules/esnext.map.every.js +4 -5
  127. package/modules/esnext.map.filter.js +4 -5
  128. package/modules/esnext.map.find-key.js +4 -5
  129. package/modules/esnext.map.find.js +4 -5
  130. package/modules/esnext.map.includes.js +4 -7
  131. package/modules/esnext.map.key-of.js +4 -7
  132. package/modules/esnext.map.map-keys.js +4 -5
  133. package/modules/esnext.map.map-values.js +4 -5
  134. package/modules/esnext.map.reduce.js +5 -5
  135. package/modules/esnext.map.some.js +4 -5
  136. package/modules/esnext.map.update.js +3 -2
  137. package/modules/esnext.observable.js +25 -24
  138. package/modules/esnext.reflect.get-metadata-keys.js +1 -0
  139. package/modules/esnext.set.every.js +4 -4
  140. package/modules/esnext.set.filter.js +4 -4
  141. package/modules/esnext.set.find.js +4 -4
  142. package/modules/esnext.set.is-disjoint-from.js +3 -5
  143. package/modules/esnext.set.is-subset-of.js +3 -5
  144. package/modules/esnext.set.is-superset-of.js +3 -5
  145. package/modules/esnext.set.join.js +2 -2
  146. package/modules/esnext.set.map.js +4 -4
  147. package/modules/esnext.set.reduce.js +5 -4
  148. package/modules/esnext.set.some.js +4 -4
  149. package/modules/esnext.string.at.js +2 -2
  150. package/modules/esnext.string.code-points.js +5 -3
  151. package/modules/esnext.string.replace-all.js +4 -4
  152. package/modules/web.immediate.js +5 -0
  153. package/modules/web.timers.js +12 -7
  154. package/modules/web.url-search-params.js +45 -36
  155. package/modules/web.url.js +45 -43
  156. package/package.json +1 -1
  157. package/internals/enum-keys.js +0 -16
  158. package/internals/string-at.js +0 -17
  159. package/internals/validate-set-prototype-of-arguments.js +0 -9
  160. package/internals/validate-string-method-arguments.js +0 -9
@@ -32,7 +32,8 @@ var createDict = function () {
32
32
  return createDict();
33
33
  };
34
34
 
35
- // 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])
35
+ // `Object.create` method
36
+ // https://tc39.github.io/ecma262/#sec-object.create
36
37
  module.exports = Object.create || function create(O, Properties) {
37
38
  var result;
38
39
  if (O !== null) {
@@ -3,12 +3,14 @@ var definePropertyModule = require('../internals/object-define-property');
3
3
  var anObject = require('../internals/an-object');
4
4
  var objectKeys = require('../internals/object-keys');
5
5
 
6
+ // `Object.defineProperties` method
7
+ // https://tc39.github.io/ecma262/#sec-object.defineproperties
6
8
  module.exports = DESCRIPTORS ? Object.defineProperties : function defineProperties(O, Properties) {
7
9
  anObject(O);
8
10
  var keys = objectKeys(Properties);
9
11
  var length = keys.length;
10
- var i = 0;
12
+ var index = 0;
11
13
  var key;
12
- while (length > i) definePropertyModule.f(O, key = keys[i++], Properties[key]);
14
+ while (length > index) definePropertyModule.f(O, key = keys[index++], Properties[key]);
13
15
  return O;
14
16
  };
@@ -5,6 +5,8 @@ var toPrimitive = require('../internals/to-primitive');
5
5
 
6
6
  var nativeDefineProperty = Object.defineProperty;
7
7
 
8
+ // `Object.defineProperty` method
9
+ // https://tc39.github.io/ecma262/#sec-object.defineproperty
8
10
  exports.f = DESCRIPTORS ? nativeDefineProperty : function defineProperty(O, P, Attributes) {
9
11
  anObject(O);
10
12
  P = toPrimitive(P, true);
@@ -8,6 +8,8 @@ var IE8_DOM_DEFINE = require('../internals/ie8-dom-define');
8
8
 
9
9
  var nativeGetOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;
10
10
 
11
+ // `Object.getOwnPropertyDescriptor` method
12
+ // https://tc39.github.io/ecma262/#sec-object.getownpropertydescriptor
11
13
  exports.f = DESCRIPTORS ? nativeGetOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {
12
14
  O = toIndexedObject(O);
13
15
  P = toPrimitive(P, true);
@@ -1,9 +1,10 @@
1
- // 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O)
2
1
  var internalObjectKeys = require('../internals/object-keys-internal');
3
2
  var enumBugKeys = require('../internals/enum-bug-keys');
4
3
 
5
4
  var hiddenKeys = enumBugKeys.concat('length', 'prototype');
6
5
 
6
+ // `Object.getOwnPropertyNames` method
7
+ // https://tc39.github.io/ecma262/#sec-object.getownpropertynames
7
8
  exports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {
8
9
  return internalObjectKeys(O, hiddenKeys);
9
10
  };
@@ -6,7 +6,8 @@ var CORRECT_PROTOTYPE_GETTER = require('../internals/correct-prototype-getter');
6
6
  var IE_PROTO = sharedKey('IE_PROTO');
7
7
  var ObjectPrototype = Object.prototype;
8
8
 
9
- // 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)
9
+ // `Object.getPrototypeOf` method
10
+ // https://tc39.github.io/ecma262/#sec-object.getprototypeof
10
11
  module.exports = CORRECT_PROTOTYPE_GETTER ? Object.getPrototypeOf : function (O) {
11
12
  O = toObject(O);
12
13
  if (has(O, IE_PROTO)) return O[IE_PROTO];
@@ -1,10 +1,8 @@
1
1
  var has = require('../internals/has');
2
2
  var toIndexedObject = require('../internals/to-indexed-object');
3
- var arrayIncludes = require('../internals/array-includes');
3
+ var indexOf = require('../internals/array-includes').indexOf;
4
4
  var hiddenKeys = require('../internals/hidden-keys');
5
5
 
6
- var arrayIndexOf = arrayIncludes(false);
7
-
8
6
  module.exports = function (object, names) {
9
7
  var O = toIndexedObject(object);
10
8
  var i = 0;
@@ -13,7 +11,7 @@ module.exports = function (object, names) {
13
11
  for (key in O) !has(hiddenKeys, key) && has(O, key) && result.push(key);
14
12
  // Don't enum bug & hidden keys
15
13
  while (names.length > i) if (has(O, key = names[i++])) {
16
- ~arrayIndexOf(result, key) || result.push(key);
14
+ ~indexOf(result, key) || result.push(key);
17
15
  }
18
16
  return result;
19
17
  };
@@ -1,7 +1,8 @@
1
1
  var internalObjectKeys = require('../internals/object-keys-internal');
2
2
  var enumBugKeys = require('../internals/enum-bug-keys');
3
3
 
4
- // 19.1.2.14 / 15.2.3.14 Object.keys(O)
4
+ // `Object.keys` method
5
+ // https://tc39.github.io/ecma262/#sec-object.keys
5
6
  module.exports = Object.keys || function keys(O) {
6
7
  return internalObjectKeys(O, enumBugKeys);
7
8
  };
@@ -5,6 +5,8 @@ var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;
5
5
  // Nashorn ~ JDK8 bug
6
6
  var NASHORN_BUG = getOwnPropertyDescriptor && !nativePropertyIsEnumerable.call({ 1: 2 }, 1);
7
7
 
8
+ // `Object.prototype.propertyIsEnumerable` method implementation
9
+ // https://tc39.github.io/ecma262/#sec-object.prototype.propertyisenumerable
8
10
  exports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {
9
11
  var descriptor = getOwnPropertyDescriptor(this, V);
10
12
  return !!descriptor && descriptor.enumerable;
@@ -1,19 +1,23 @@
1
- var validateSetPrototypeOfArguments = require('../internals/validate-set-prototype-of-arguments');
1
+ var anObject = require('../internals/an-object');
2
+ var aPossiblePrototype = require('../internals/a-possible-prototype');
2
3
 
4
+ // `Object.setPrototypeOf` method
5
+ // https://tc39.github.io/ecma262/#sec-object.setprototypeof
3
6
  // Works with __proto__ only. Old v8 can't work with null proto objects.
4
7
  /* eslint-disable no-proto */
5
8
  module.exports = Object.setPrototypeOf || ('__proto__' in {} ? function () {
6
- var correctSetter = false;
9
+ var CORRECT_SETTER = false;
7
10
  var test = {};
8
11
  var setter;
9
12
  try {
10
13
  setter = Object.getOwnPropertyDescriptor(Object.prototype, '__proto__').set;
11
14
  setter.call(test, []);
12
- correctSetter = test instanceof Array;
15
+ CORRECT_SETTER = test instanceof Array;
13
16
  } catch (error) { /* empty */ }
14
17
  return function setPrototypeOf(O, proto) {
15
- validateSetPrototypeOfArguments(O, proto);
16
- if (correctSetter) setter.call(O, proto);
18
+ anObject(O);
19
+ aPossiblePrototype(proto);
20
+ if (CORRECT_SETTER) setter.call(O, proto);
17
21
  else O.__proto__ = proto;
18
22
  return O;
19
23
  };
@@ -3,20 +3,30 @@ var objectKeys = require('../internals/object-keys');
3
3
  var toIndexedObject = require('../internals/to-indexed-object');
4
4
  var propertyIsEnumerable = require('../internals/object-property-is-enumerable').f;
5
5
 
6
- // TO_ENTRIES: true -> Object.entries
7
- // TO_ENTRIES: false -> Object.values
8
- module.exports = function (it, TO_ENTRIES) {
9
- var O = toIndexedObject(it);
10
- var keys = objectKeys(O);
11
- var length = keys.length;
12
- var i = 0;
13
- var result = [];
14
- var key;
15
- while (length > i) {
16
- key = keys[i++];
17
- if (!DESCRIPTORS || propertyIsEnumerable.call(O, key)) {
18
- result.push(TO_ENTRIES ? [key, O[key]] : O[key]);
6
+ // `Object.{ entries, values }` methods implementation
7
+ var createMethod = function (TO_ENTRIES) {
8
+ return function (it) {
9
+ var O = toIndexedObject(it);
10
+ var keys = objectKeys(O);
11
+ var length = keys.length;
12
+ var i = 0;
13
+ var result = [];
14
+ var key;
15
+ while (length > i) {
16
+ key = keys[i++];
17
+ if (!DESCRIPTORS || propertyIsEnumerable.call(O, key)) {
18
+ result.push(TO_ENTRIES ? [key, O[key]] : O[key]);
19
+ }
19
20
  }
20
- }
21
- return result;
21
+ return result;
22
+ };
23
+ };
24
+
25
+ module.exports = {
26
+ // `Object.entries` method
27
+ // https://tc39.github.io/ecma262/#sec-object.entries
28
+ entries: createMethod(true),
29
+ // `Object.values` method
30
+ // https://tc39.github.io/ecma262/#sec-object.values
31
+ values: createMethod(false)
22
32
  };
@@ -1,12 +1,10 @@
1
- var global = require('../internals/global');
1
+ var getBuiltIn = require('../internals/get-built-in');
2
2
  var getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');
3
3
  var getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');
4
4
  var anObject = require('../internals/an-object');
5
5
 
6
- var Reflect = global.Reflect;
7
-
8
6
  // all object keys, includes non-enumerable and symbols
9
- module.exports = Reflect && Reflect.ownKeys || function ownKeys(it) {
7
+ module.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {
10
8
  var keys = getOwnPropertyNamesModule.f(anObject(it));
11
9
  var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;
12
10
  return getOwnPropertySymbols ? keys.concat(getOwnPropertySymbols(it)) : keys;
@@ -1,12 +1,14 @@
1
1
  var global = require('../internals/global');
2
- var internalStringTrim = require('../internals/string-trim');
2
+ var trim = require('../internals/string-trim').trim;
3
3
  var whitespaces = require('../internals/whitespaces');
4
4
 
5
5
  var nativeParseFloat = global.parseFloat;
6
6
  var FORCED = 1 / nativeParseFloat(whitespaces + '-0') !== -Infinity;
7
7
 
8
- module.exports = FORCED ? function parseFloat(str) {
9
- var string = internalStringTrim(String(str), 3);
10
- var result = nativeParseFloat(string);
11
- return result === 0 && string.charAt(0) == '-' ? -0 : result;
8
+ // `parseFloat` method
9
+ // https://tc39.github.io/ecma262/#sec-parsefloat-string
10
+ module.exports = FORCED ? function parseFloat(string) {
11
+ var trimmedString = trim(String(string));
12
+ var result = nativeParseFloat(trimmedString);
13
+ return result === 0 && trimmedString.charAt(0) == '-' ? -0 : result;
12
14
  } : nativeParseFloat;
@@ -1,12 +1,14 @@
1
1
  var global = require('../internals/global');
2
- var internalStringTrim = require('../internals/string-trim');
2
+ var trim = require('../internals/string-trim').trim;
3
3
  var whitespaces = require('../internals/whitespaces');
4
4
 
5
5
  var nativeParseInt = global.parseInt;
6
6
  var hex = /^[+-]?0[Xx]/;
7
7
  var FORCED = nativeParseInt(whitespaces + '08') !== 8 || nativeParseInt(whitespaces + '0x16') !== 22;
8
8
 
9
- module.exports = FORCED ? function parseInt(str, radix) {
10
- var string = internalStringTrim(String(str), 3);
11
- return nativeParseInt(string, (radix >>> 0) || (hex.test(string) ? 16 : 10));
9
+ // `parseInt` method
10
+ // https://tc39.github.io/ecma262/#sec-parseint-string-radix
11
+ module.exports = FORCED ? function parseInt(string, radix) {
12
+ var S = trim(String(string));
13
+ return nativeParseInt(S, (radix >>> 0) || (hex.test(S) ? 16 : 10));
12
14
  } : nativeParseInt;
@@ -64,7 +64,7 @@ var adapt = function (delta, numPoints, firstTime) {
64
64
  var k = 0;
65
65
  delta = firstTime ? floor(delta / damp) : delta >> 1;
66
66
  delta += floor(delta / numPoints);
67
- for (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) {
67
+ for (; delta > baseMinusTMin * tMax >> 1; k += base) {
68
68
  delta = floor(delta / baseMinusTMin);
69
69
  }
70
70
  return floor(k + (baseMinusTMin + 1) * delta / (delta + skew));
@@ -136,9 +136,7 @@ var encode = function (input) {
136
136
  var q = delta;
137
137
  for (var k = base; /* no condition */; k += base) {
138
138
  var t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);
139
- if (q < t) {
140
- break;
141
- }
139
+ if (q < t) break;
142
140
  var qMinusT = q - t;
143
141
  var baseMinusT = base - t;
144
142
  output.push(stringFromCharCode(digitToBasic(t + qMinusT % baseMinusT)));
@@ -1,3 +1,4 @@
1
+ // TODO: in core-js@4, move /modules/ dependencies to public entries for better optimization by tools like `preset-env`
1
2
  var Map = require('../modules/es.map');
2
3
  var WeakMap = require('../modules/es.weak-map');
3
4
  var shared = require('../internals/shared');
@@ -9,6 +9,7 @@ module.exports = function () {
9
9
  if (that.global) result += 'g';
10
10
  if (that.ignoreCase) result += 'i';
11
11
  if (that.multiline) result += 'm';
12
+ if (that.dotAll) result += 's';
12
13
  if (that.unicode) result += 'u';
13
14
  if (that.sticky) result += 'y';
14
15
  return result;
@@ -7,10 +7,13 @@ var DESCRIPTORS = require('../internals/descriptors');
7
7
  var SPECIES = wellKnownSymbol('species');
8
8
 
9
9
  module.exports = function (CONSTRUCTOR_NAME) {
10
- var C = getBuiltIn(CONSTRUCTOR_NAME);
10
+ var Constructor = getBuiltIn(CONSTRUCTOR_NAME);
11
11
  var defineProperty = definePropertyModule.f;
12
- if (DESCRIPTORS && C && !C[SPECIES]) defineProperty(C, SPECIES, {
13
- configurable: true,
14
- get: function () { return this; }
15
- });
12
+
13
+ if (DESCRIPTORS && Constructor && !Constructor[SPECIES]) {
14
+ defineProperty(Constructor, SPECIES, {
15
+ configurable: true,
16
+ get: function () { return this; }
17
+ });
18
+ }
16
19
  };
@@ -0,0 +1,27 @@
1
+ var toInteger = require('../internals/to-integer');
2
+ var requireObjectCoercible = require('../internals/require-object-coercible');
3
+
4
+ // `String.prototype.{ codePointAt, at }` methods implementation
5
+ var createMethod = function (CONVERT_TO_STRING) {
6
+ return function ($this, pos) {
7
+ var S = String(requireObjectCoercible($this));
8
+ var position = toInteger(pos);
9
+ var size = S.length;
10
+ var first, second;
11
+ if (position < 0 || position >= size) return CONVERT_TO_STRING ? '' : undefined;
12
+ first = S.charCodeAt(position);
13
+ return first < 0xD800 || first > 0xDBFF || position + 1 === size
14
+ || (second = S.charCodeAt(position + 1)) < 0xDC00 || second > 0xDFFF
15
+ ? CONVERT_TO_STRING ? S.charAt(position) : first
16
+ : CONVERT_TO_STRING ? S.slice(position, position + 2) : (first - 0xD800 << 10) + (second - 0xDC00) + 0x10000;
17
+ };
18
+ };
19
+
20
+ module.exports = {
21
+ // `String.prototype.codePointAt` method
22
+ // https://tc39.github.io/ecma262/#sec-string.prototype.codepointat
23
+ codeAt: createMethod(false),
24
+ // `String.prototype.at` method
25
+ // https://github.com/mathiasbynens/String.prototype.at
26
+ charAt: createMethod(true)
27
+ };
@@ -3,15 +3,29 @@ var toLength = require('../internals/to-length');
3
3
  var repeat = require('../internals/string-repeat');
4
4
  var requireObjectCoercible = require('../internals/require-object-coercible');
5
5
 
6
- module.exports = function (that, maxLength, fillString, left) {
7
- var S = String(requireObjectCoercible(that));
8
- var stringLength = S.length;
9
- var fillStr = fillString === undefined ? ' ' : String(fillString);
10
- var intMaxLength = toLength(maxLength);
11
- var fillLen, stringFiller;
12
- if (intMaxLength <= stringLength || fillStr == '') return S;
13
- fillLen = intMaxLength - stringLength;
14
- stringFiller = repeat.call(fillStr, Math.ceil(fillLen / fillStr.length));
15
- if (stringFiller.length > fillLen) stringFiller = stringFiller.slice(0, fillLen);
16
- return left ? stringFiller + S : S + stringFiller;
6
+ var ceil = Math.ceil;
7
+
8
+ // `String.prototype.{ padStart, padEnd }` methods implementation
9
+ var createMethod = function (IS_END) {
10
+ return function ($this, maxLength, fillString) {
11
+ var S = String(requireObjectCoercible($this));
12
+ var stringLength = S.length;
13
+ var fillStr = fillString === undefined ? ' ' : String(fillString);
14
+ var intMaxLength = toLength(maxLength);
15
+ var fillLen, stringFiller;
16
+ if (intMaxLength <= stringLength || fillStr == '') return S;
17
+ fillLen = intMaxLength - stringLength;
18
+ stringFiller = repeat.call(fillStr, ceil(fillLen / fillStr.length));
19
+ if (stringFiller.length > fillLen) stringFiller = stringFiller.slice(0, fillLen);
20
+ return IS_END ? S + stringFiller : stringFiller + S;
21
+ };
22
+ };
23
+
24
+ module.exports = {
25
+ // `String.prototype.padStart` method
26
+ // https://tc39.github.io/ecma262/#sec-string.prototype.padstart
27
+ start: createMethod(false),
28
+ // `String.prototype.padEnd` method
29
+ // https://tc39.github.io/ecma262/#sec-string.prototype.padend
30
+ end: createMethod(true)
17
31
  };
@@ -5,12 +5,24 @@ var whitespace = '[' + whitespaces + ']';
5
5
  var ltrim = RegExp('^' + whitespace + whitespace + '*');
6
6
  var rtrim = RegExp(whitespace + whitespace + '*$');
7
7
 
8
- // 1 -> String#trimStart
9
- // 2 -> String#trimEnd
10
- // 3 -> String#trim
11
- module.exports = function (string, TYPE) {
12
- string = String(requireObjectCoercible(string));
13
- if (TYPE & 1) string = string.replace(ltrim, '');
14
- if (TYPE & 2) string = string.replace(rtrim, '');
15
- return string;
8
+ // `String.prototype.{ trim, trimStart, trimEnd, trimLeft, trimRight }` methods implementation
9
+ var createMethod = function (TYPE) {
10
+ return function ($this) {
11
+ var string = String(requireObjectCoercible($this));
12
+ if (TYPE & 1) string = string.replace(ltrim, '');
13
+ if (TYPE & 2) string = string.replace(rtrim, '');
14
+ return string;
15
+ };
16
+ };
17
+
18
+ module.exports = {
19
+ // `String.prototype.{ trimLeft, trimStart }` methods
20
+ // https://tc39.github.io/ecma262/#sec-string.prototype.trimstart
21
+ start: createMethod(1),
22
+ // `String.prototype.{ trimRight, trimEnd }` methods
23
+ // https://tc39.github.io/ecma262/#sec-string.prototype.trimend
24
+ end: createMethod(2),
25
+ // `String.prototype.trim` method
26
+ // https://tc39.github.io/ecma262/#sec-string.prototype.trim
27
+ trim: createMethod(3)
16
28
  };
@@ -1,13 +1,14 @@
1
1
  var isObject = require('../internals/is-object');
2
2
 
3
- // 7.1.1 ToPrimitive(input [, PreferredType])
3
+ // `ToPrimitive` abstract operation
4
+ // https://tc39.github.io/ecma262/#sec-toprimitive
4
5
  // instead of the ES6 spec version, we didn't implement @@toPrimitive case
5
6
  // and the second argument - flag - preferred type is a string
6
- module.exports = function (it, S) {
7
- if (!isObject(it)) return it;
7
+ module.exports = function (input, PREFERRED_STRING) {
8
+ if (!isObject(input)) return input;
8
9
  var fn, val;
9
- if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;
10
- if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;
11
- if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;
10
+ if (PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val;
11
+ if (typeof (fn = input.valueOf) == 'function' && !isObject(val = fn.call(input))) return val;
12
+ if (!PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val;
12
13
  throw TypeError("Can't convert object to primitive value");
13
14
  };
@@ -19,7 +19,7 @@ var create = require('../internals/object-create');
19
19
  var setPrototypeOf = require('../internals/object-set-prototype-of');
20
20
  var getOwnPropertyNames = require('../internals/object-get-own-property-names').f;
21
21
  var typedArrayFrom = require('../internals/typed-array-from');
22
- var arrayMethods = require('../internals/array-methods');
22
+ var forEach = require('../internals/array-iteration').forEach;
23
23
  var setSpecies = require('../internals/set-species');
24
24
  var definePropertyModule = require('../internals/object-define-property');
25
25
  var getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');
@@ -29,7 +29,7 @@ var getInternalState = InternalStateModule.get;
29
29
  var setInternalState = InternalStateModule.set;
30
30
  var nativeDefineProperty = definePropertyModule.f;
31
31
  var nativeGetOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;
32
- var forEach = arrayMethods(0);
32
+ var round = Math.round;
33
33
  var RangeError = global.RangeError;
34
34
  var ArrayBuffer = ArrayBufferModule.ArrayBuffer;
35
35
  var DataView = ArrayBufferModule.DataView;
@@ -122,7 +122,7 @@ if (DESCRIPTORS) {
122
122
 
123
123
  var setter = function (that, index, value) {
124
124
  var data = getInternalState(that);
125
- if (CLAMPED) value = (value = Math.round(value)) < 0 ? 0 : value > 0xFF ? 0xFF : value & 0xFF;
125
+ if (CLAMPED) value = (value = round(value)) < 0 ? 0 : value > 0xFF ? 0xFF : value & 0xFF;
126
126
  data.view[SETTER](index * BYTES + data.byteOffset, value, true);
127
127
  };
128
128
 
@@ -179,8 +179,8 @@ if (DESCRIPTORS) {
179
179
  if (setPrototypeOf) setPrototypeOf(TypedArrayConstructor, TypedArray);
180
180
  TypedArrayConstructorPrototype = TypedArrayConstructor.prototype = create(TypedArrayPrototype);
181
181
  } else if (TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS) {
182
- TypedArrayConstructor = wrapper(function (that, data, typedArrayOffset, $length) {
183
- anInstance(that, TypedArrayConstructor, CONSTRUCTOR_NAME);
182
+ TypedArrayConstructor = wrapper(function (dummy, data, typedArrayOffset, $length) {
183
+ anInstance(dummy, TypedArrayConstructor, CONSTRUCTOR_NAME);
184
184
  if (!isObject(data)) return new NativeTypedArrayConstructor(toIndex(data));
185
185
  if (isArrayBuffer(data)) return $length !== undefined
186
186
  ? new NativeTypedArrayConstructor(data, toOffset(typedArrayOffset, BYTES), $length)
package/internals/uid.js CHANGED
@@ -2,5 +2,5 @@ var id = 0;
2
2
  var postfix = Math.random();
3
3
 
4
4
  module.exports = function (key) {
5
- return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + postfix).toString(36));
5
+ return 'Symbol(' + String(key === undefined ? '' : key) + ')_' + (++id + postfix).toString(36);
6
6
  };
@@ -1,5 +1,3 @@
1
- var global = require('../internals/global');
1
+ var getBuiltIn = require('../internals/get-built-in');
2
2
 
3
- var navigator = global.navigator;
4
-
5
- module.exports = navigator && navigator.userAgent || '';
3
+ module.exports = getBuiltIn('navigator', 'userAgent') || '';
@@ -1,15 +1,12 @@
1
1
  'use strict';
2
2
  var $ = require('../internals/export');
3
- var arrayMethods = require('../internals/array-methods');
3
+ var $every = require('../internals/array-iteration').every;
4
4
  var sloppyArrayMethod = require('../internals/sloppy-array-method');
5
5
 
6
- var internalEvery = arrayMethods(4);
7
- var SLOPPY_METHOD = sloppyArrayMethod('every');
8
-
9
6
  // `Array.prototype.every` method
10
7
  // https://tc39.github.io/ecma262/#sec-array.prototype.every
11
- $({ target: 'Array', proto: true, forced: SLOPPY_METHOD }, {
8
+ $({ target: 'Array', proto: true, forced: sloppyArrayMethod('every') }, {
12
9
  every: function every(callbackfn /* , thisArg */) {
13
- return internalEvery(this, callbackfn, arguments[1]);
10
+ return $every(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);
14
11
  }
15
12
  });
@@ -4,7 +4,9 @@ var addToUnscopables = require('../internals/add-to-unscopables');
4
4
 
5
5
  // `Array.prototype.fill` method
6
6
  // https://tc39.github.io/ecma262/#sec-array.prototype.fill
7
- $({ target: 'Array', proto: true }, { fill: fill });
7
+ $({ target: 'Array', proto: true }, {
8
+ fill: fill
9
+ });
8
10
 
9
11
  // https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables
10
12
  addToUnscopables('fill');
@@ -1,16 +1,13 @@
1
1
  'use strict';
2
2
  var $ = require('../internals/export');
3
- var arrayMethods = require('../internals/array-methods');
3
+ var $filter = require('../internals/array-iteration').filter;
4
4
  var arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');
5
5
 
6
- var internalFilter = arrayMethods(2);
7
- var SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('filter');
8
-
9
6
  // `Array.prototype.filter` method
10
7
  // https://tc39.github.io/ecma262/#sec-array.prototype.filter
11
8
  // with adding support of @@species
12
- $({ target: 'Array', proto: true, forced: !SPECIES_SUPPORT }, {
9
+ $({ target: 'Array', proto: true, forced: !arrayMethodHasSpeciesSupport('filter') }, {
13
10
  filter: function filter(callbackfn /* , thisArg */) {
14
- return internalFilter(this, callbackfn, arguments[1]);
11
+ return $filter(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);
15
12
  }
16
13
  });
@@ -1,9 +1,8 @@
1
1
  'use strict';
2
2
  var $ = require('../internals/export');
3
- var arrayMethods = require('../internals/array-methods');
3
+ var $findIndex = require('../internals/array-iteration').findIndex;
4
4
  var addToUnscopables = require('../internals/add-to-unscopables');
5
5
 
6
- var internalFindIndex = arrayMethods(6);
7
6
  var FIND_INDEX = 'findIndex';
8
7
  var SKIPS_HOLES = true;
9
8
 
@@ -14,7 +13,7 @@ if (FIND_INDEX in []) Array(1)[FIND_INDEX](function () { SKIPS_HOLES = false; })
14
13
  // https://tc39.github.io/ecma262/#sec-array.prototype.findindex
15
14
  $({ target: 'Array', proto: true, forced: SKIPS_HOLES }, {
16
15
  findIndex: function findIndex(callbackfn /* , that = undefined */) {
17
- return internalFindIndex(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);
16
+ return $findIndex(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);
18
17
  }
19
18
  });
20
19
 
@@ -1,9 +1,8 @@
1
1
  'use strict';
2
2
  var $ = require('../internals/export');
3
- var arrayMethods = require('../internals/array-methods');
3
+ var $find = require('../internals/array-iteration').find;
4
4
  var addToUnscopables = require('../internals/add-to-unscopables');
5
5
 
6
- var internalFind = arrayMethods(5);
7
6
  var FIND = 'find';
8
7
  var SKIPS_HOLES = true;
9
8
 
@@ -14,7 +13,7 @@ if (FIND in []) Array(1)[FIND](function () { SKIPS_HOLES = false; });
14
13
  // https://tc39.github.io/ecma262/#sec-array.prototype.find
15
14
  $({ target: 'Array', proto: true, forced: SKIPS_HOLES }, {
16
15
  find: function find(callbackfn /* , that = undefined */) {
17
- return internalFind(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);
16
+ return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);
18
17
  }
19
18
  });
20
19
 
@@ -15,7 +15,7 @@ $({ target: 'Array', proto: true }, {
15
15
  var A;
16
16
  aFunction(callbackfn);
17
17
  A = arraySpeciesCreate(O, 0);
18
- A.length = flattenIntoArray(A, O, O, sourceLen, 0, 1, callbackfn, arguments[1]);
18
+ A.length = flattenIntoArray(A, O, O, sourceLen, 0, 1, callbackfn, arguments.length > 1 ? arguments[1] : undefined);
19
19
  return A;
20
20
  }
21
21
  });
@@ -10,7 +10,7 @@ var arraySpeciesCreate = require('../internals/array-species-create');
10
10
  // https://github.com/tc39/proposal-flatMap
11
11
  $({ target: 'Array', proto: true }, {
12
12
  flat: function flat(/* depthArg = 1 */) {
13
- var depthArg = arguments[0];
13
+ var depthArg = arguments.length ? arguments[0] : undefined;
14
14
  var O = toObject(this);
15
15
  var sourceLen = toLength(O.length);
16
16
  var A = arraySpeciesCreate(O, 0);
@@ -1,15 +1,13 @@
1
1
  'use strict';
2
2
  var $ = require('../internals/export');
3
- var arrayIncludes = require('../internals/array-includes');
3
+ var $includes = require('../internals/array-includes').includes;
4
4
  var addToUnscopables = require('../internals/add-to-unscopables');
5
5
 
6
- var internalIncludes = arrayIncludes(true);
7
-
8
6
  // `Array.prototype.includes` method
9
7
  // https://tc39.github.io/ecma262/#sec-array.prototype.includes
10
8
  $({ target: 'Array', proto: true }, {
11
9
  includes: function includes(el /* , fromIndex = 0 */) {
12
- return internalIncludes(this, el, arguments.length > 1 ? arguments[1] : undefined);
10
+ return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);
13
11
  }
14
12
  });
15
13