core-js 2.2.0 → 2.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (131) hide show
  1. package/CHANGELOG.md +25 -0
  2. package/bower.json +1 -1
  3. package/build/config.js +7 -3
  4. package/client/core.js +1463 -1128
  5. package/client/core.min.js +4 -4
  6. package/client/core.min.js.map +1 -1
  7. package/client/library.js +1400 -1074
  8. package/client/library.min.js +4 -4
  9. package/client/library.min.js.map +1 -1
  10. package/client/shim.js +1406 -1071
  11. package/client/shim.min.js +4 -4
  12. package/client/shim.min.js.map +1 -1
  13. package/es7/asap.js +2 -0
  14. package/es7/index.js +4 -0
  15. package/es7/observable.js +7 -0
  16. package/es7/symbol.js +3 -0
  17. package/fn/asap.js +2 -0
  18. package/fn/observable.js +7 -0
  19. package/fn/symbol/async-iterator.js +2 -0
  20. package/fn/symbol/has-instance.js +2 -1
  21. package/fn/symbol/index.js +2 -0
  22. package/fn/symbol/is-concat-spreadable.js +1 -1
  23. package/fn/symbol/iterator.js +1 -1
  24. package/fn/symbol/match.js +1 -1
  25. package/fn/symbol/observable.js +2 -0
  26. package/fn/symbol/replace.js +1 -1
  27. package/fn/symbol/search.js +1 -1
  28. package/fn/symbol/species.js +1 -1
  29. package/fn/symbol/split.js +1 -1
  30. package/fn/symbol/to-primitive.js +1 -1
  31. package/fn/symbol/to-string-tag.js +1 -1
  32. package/fn/symbol/unscopables.js +1 -1
  33. package/library/es7/asap.js +2 -0
  34. package/library/es7/index.js +4 -0
  35. package/library/es7/observable.js +7 -0
  36. package/library/es7/symbol.js +3 -0
  37. package/library/fn/asap.js +2 -0
  38. package/library/fn/observable.js +7 -0
  39. package/library/fn/symbol/async-iterator.js +2 -0
  40. package/library/fn/symbol/has-instance.js +2 -1
  41. package/library/fn/symbol/index.js +2 -0
  42. package/library/fn/symbol/is-concat-spreadable.js +1 -1
  43. package/library/fn/symbol/iterator.js +1 -1
  44. package/library/fn/symbol/match.js +1 -1
  45. package/library/fn/symbol/observable.js +2 -0
  46. package/library/fn/symbol/replace.js +1 -1
  47. package/library/fn/symbol/search.js +1 -1
  48. package/library/fn/symbol/species.js +1 -1
  49. package/library/fn/symbol/split.js +1 -1
  50. package/library/fn/symbol/to-primitive.js +1 -1
  51. package/library/fn/symbol/to-string-tag.js +1 -1
  52. package/library/fn/symbol/unscopables.js +1 -1
  53. package/library/modules/_array-includes.js +1 -1
  54. package/library/modules/_array-species-constructor.js +16 -0
  55. package/library/modules/_array-species-create.js +3 -13
  56. package/library/modules/_core.js +1 -1
  57. package/library/modules/_create-property.js +8 -0
  58. package/library/modules/_for-of.js +12 -6
  59. package/library/modules/_iter-detect.js +1 -1
  60. package/library/modules/_math-expm1.js +8 -2
  61. package/library/modules/_microtask.js +58 -48
  62. package/library/modules/_object-gopn-ext.js +2 -2
  63. package/library/modules/_string-pad.js +1 -2
  64. package/library/modules/_wks-define.js +9 -0
  65. package/library/modules/_wks-ext.js +1 -0
  66. package/library/modules/_wks.js +5 -2
  67. package/library/modules/es6.array.filter.js +9 -9
  68. package/library/modules/es6.array.from.js +11 -9
  69. package/library/modules/es6.array.index-of.js +9 -4
  70. package/library/modules/es6.array.last-index-of.js +10 -6
  71. package/library/modules/es6.array.of.js +3 -2
  72. package/library/modules/es6.math.acosh.js +6 -2
  73. package/library/modules/es6.math.asinh.js +4 -2
  74. package/library/modules/es6.math.atanh.js +4 -2
  75. package/library/modules/es6.math.expm1.js +3 -2
  76. package/library/modules/es6.promise.js +1 -1
  77. package/library/modules/es6.reflect.apply.js +5 -3
  78. package/library/modules/es6.reflect.construct.js +2 -1
  79. package/library/modules/es6.symbol.js +59 -59
  80. package/library/modules/es7.asap.js +12 -0
  81. package/library/modules/es7.object.get-own-property-descriptors.js +7 -11
  82. package/library/modules/es7.observable.js +199 -0
  83. package/library/modules/es7.symbol.async-iterator.js +1 -0
  84. package/library/modules/es7.symbol.observable.js +1 -0
  85. package/library/shim.js +4 -0
  86. package/library/stage/0.js +1 -0
  87. package/library/stage/1.js +3 -2
  88. package/library/stage/2.js +3 -1
  89. package/library/stage/3.js +1 -3
  90. package/library/stage/4.js +3 -1
  91. package/modules/_array-includes.js +1 -1
  92. package/modules/_array-species-constructor.js +16 -0
  93. package/modules/_array-species-create.js +3 -13
  94. package/modules/_core.js +1 -1
  95. package/modules/_create-property.js +8 -0
  96. package/modules/_for-of.js +12 -6
  97. package/modules/_iter-detect.js +1 -1
  98. package/modules/_math-expm1.js +8 -2
  99. package/modules/_microtask.js +58 -48
  100. package/modules/_object-gopn-ext.js +2 -2
  101. package/modules/_string-pad.js +1 -2
  102. package/modules/_wks-define.js +9 -0
  103. package/modules/_wks-ext.js +1 -0
  104. package/modules/_wks.js +5 -2
  105. package/modules/es6.array.filter.js +9 -9
  106. package/modules/es6.array.from.js +11 -9
  107. package/modules/es6.array.index-of.js +9 -4
  108. package/modules/es6.array.last-index-of.js +10 -6
  109. package/modules/es6.array.of.js +3 -2
  110. package/modules/es6.function.name.js +13 -4
  111. package/modules/es6.math.acosh.js +6 -2
  112. package/modules/es6.math.asinh.js +4 -2
  113. package/modules/es6.math.atanh.js +4 -2
  114. package/modules/es6.math.expm1.js +3 -2
  115. package/modules/es6.promise.js +1 -1
  116. package/modules/es6.reflect.apply.js +5 -3
  117. package/modules/es6.reflect.construct.js +2 -1
  118. package/modules/es6.symbol.js +59 -59
  119. package/modules/es7.asap.js +12 -0
  120. package/modules/es7.object.get-own-property-descriptors.js +7 -11
  121. package/modules/es7.observable.js +199 -0
  122. package/modules/es7.symbol.async-iterator.js +1 -0
  123. package/modules/es7.symbol.observable.js +1 -0
  124. package/package.json +14 -12
  125. package/shim.js +4 -0
  126. package/stage/0.js +1 -0
  127. package/stage/1.js +3 -2
  128. package/stage/2.js +3 -1
  129. package/stage/3.js +1 -3
  130. package/stage/4.js +3 -1
  131. package/README.md +0 -1981
@@ -15,7 +15,7 @@ module.exports = function(IS_INCLUDES){
15
15
  if(value != value)return true;
16
16
  // Array#toIndex ignores holes, Array#includes - not
17
17
  } else for(;length > index; index++)if(IS_INCLUDES || index in O){
18
- if(O[index] === el)return IS_INCLUDES || index;
18
+ if(O[index] === el)return IS_INCLUDES || index || 0;
19
19
  } return !IS_INCLUDES && -1;
20
20
  };
21
21
  };
@@ -0,0 +1,16 @@
1
+ var isObject = require('./_is-object')
2
+ , isArray = require('./_is-array')
3
+ , SPECIES = require('./_wks')('species');
4
+
5
+ module.exports = function(original){
6
+ var C;
7
+ if(isArray(original)){
8
+ C = original.constructor;
9
+ // cross-realm fallback
10
+ if(typeof C == 'function' && (C === Array || isArray(C.prototype)))C = undefined;
11
+ if(isObject(C)){
12
+ C = C[SPECIES];
13
+ if(C === null)C = undefined;
14
+ }
15
+ } return C === undefined ? Array : C;
16
+ };
@@ -1,16 +1,6 @@
1
1
  // 9.4.2.3 ArraySpeciesCreate(originalArray, length)
2
- var isObject = require('./_is-object')
3
- , isArray = require('./_is-array')
4
- , SPECIES = require('./_wks')('species');
2
+ var speciesConstructor = require('./_array-species-constructor');
3
+
5
4
  module.exports = function(original, length){
6
- var C;
7
- if(isArray(original)){
8
- C = original.constructor;
9
- // cross-realm fallback
10
- if(typeof C == 'function' && (C === Array || isArray(C.prototype)))C = undefined;
11
- if(isObject(C)){
12
- C = C[SPECIES];
13
- if(C === null)C = undefined;
14
- }
15
- } return new (C === undefined ? Array : C)(length);
5
+ return new (speciesConstructor(original))(length);
16
6
  };
package/modules/_core.js CHANGED
@@ -1,2 +1,2 @@
1
- var core = module.exports = {version: '2.2.0'};
1
+ var core = module.exports = {version: '2.4.0'};
2
2
  if(typeof __e == 'number')__e = core; // eslint-disable-line no-undef
@@ -0,0 +1,8 @@
1
+ 'use strict';
2
+ var $defineProperty = require('./_object-dp')
3
+ , createDesc = require('./_property-desc');
4
+
5
+ module.exports = function(object, index, value){
6
+ if(index in object)$defineProperty.f(object, index, createDesc(0, value));
7
+ else object[index] = value;
8
+ };
@@ -3,17 +3,23 @@ var ctx = require('./_ctx')
3
3
  , isArrayIter = require('./_is-array-iter')
4
4
  , anObject = require('./_an-object')
5
5
  , toLength = require('./_to-length')
6
- , getIterFn = require('./core.get-iterator-method');
7
- module.exports = function(iterable, entries, fn, that, ITERATOR){
6
+ , getIterFn = require('./core.get-iterator-method')
7
+ , BREAK = {}
8
+ , RETURN = {};
9
+ var exports = module.exports = function(iterable, entries, fn, that, ITERATOR){
8
10
  var iterFn = ITERATOR ? function(){ return iterable; } : getIterFn(iterable)
9
11
  , f = ctx(fn, that, entries ? 2 : 1)
10
12
  , index = 0
11
- , length, step, iterator;
13
+ , length, step, iterator, result;
12
14
  if(typeof iterFn != 'function')throw TypeError(iterable + ' is not iterable!');
13
15
  // fast case for arrays with default iterator
14
16
  if(isArrayIter(iterFn))for(length = toLength(iterable.length); length > index; index++){
15
- entries ? f(anObject(step = iterable[index])[0], step[1]) : f(iterable[index]);
17
+ result = entries ? f(anObject(step = iterable[index])[0], step[1]) : f(iterable[index]);
18
+ if(result === BREAK || result === RETURN)return result;
16
19
  } else for(iterator = iterFn.call(iterable); !(step = iterator.next()).done; ){
17
- call(iterator, f, step.value, entries);
20
+ result = call(iterator, f, step.value, entries);
21
+ if(result === BREAK || result === RETURN)return result;
18
22
  }
19
- };
23
+ };
24
+ exports.BREAK = BREAK;
25
+ exports.RETURN = RETURN;
@@ -13,7 +13,7 @@ module.exports = function(exec, skipClosing){
13
13
  try {
14
14
  var arr = [7]
15
15
  , iter = arr[ITERATOR]();
16
- iter.next = function(){ safe = true; };
16
+ iter.next = function(){ return {done: safe = true}; };
17
17
  arr[ITERATOR] = function(){ return iter; };
18
18
  exec(arr);
19
19
  } catch(e){ /* empty */ }
@@ -1,4 +1,10 @@
1
1
  // 20.2.2.14 Math.expm1(x)
2
- module.exports = Math.expm1 || function expm1(x){
2
+ var $expm1 = Math.expm1;
3
+ module.exports = (!$expm1
4
+ // Old FF bug
5
+ || $expm1(10) > 22025.465794806719 || $expm1(10) < 22025.4657948067165168
6
+ // Tor Browser bug
7
+ || $expm1(-2e-17) != -2e-17
8
+ ) ? function expm1(x){
3
9
  return (x = +x) == 0 ? x : x > -1e-6 && x < 1e-6 ? x + x * x / 2 : Math.exp(x) - 1;
4
- };
10
+ } : $expm1;
@@ -3,56 +3,66 @@ var global = require('./_global')
3
3
  , Observer = global.MutationObserver || global.WebKitMutationObserver
4
4
  , process = global.process
5
5
  , Promise = global.Promise
6
- , isNode = require('./_cof')(process) == 'process'
7
- , head, last, notify;
6
+ , isNode = require('./_cof')(process) == 'process';
8
7
 
9
- var flush = function(){
10
- var parent, fn;
11
- if(isNode && (parent = process.domain))parent.exit();
12
- while(head){
13
- fn = head.fn;
14
- fn(); // <- currently we use it only for Promise - try / catch not required
15
- head = head.next;
16
- } last = undefined;
17
- if(parent)parent.enter();
18
- };
8
+ module.exports = function(){
9
+ var head, last, notify;
19
10
 
20
- // Node.js
21
- if(isNode){
22
- notify = function(){
23
- process.nextTick(flush);
11
+ var flush = function(){
12
+ var parent, fn;
13
+ if(isNode && (parent = process.domain))parent.exit();
14
+ while(head){
15
+ fn = head.fn;
16
+ head = head.next;
17
+ try {
18
+ fn();
19
+ } catch(e){
20
+ if(head)notify();
21
+ else last = undefined;
22
+ throw e;
23
+ }
24
+ } last = undefined;
25
+ if(parent)parent.enter();
24
26
  };
25
- // browsers with MutationObserver
26
- } else if(Observer){
27
- var toggle = true
28
- , node = document.createTextNode('');
29
- new Observer(flush).observe(node, {characterData: true}); // eslint-disable-line no-new
30
- notify = function(){
31
- node.data = toggle = !toggle;
32
- };
33
- // environments with maybe non-completely correct, but existent Promise
34
- } else if(Promise && Promise.resolve){
35
- notify = function(){
36
- Promise.resolve().then(flush);
37
- };
38
- // for other environments - macrotask based on:
39
- // - setImmediate
40
- // - MessageChannel
41
- // - window.postMessag
42
- // - onreadystatechange
43
- // - setTimeout
44
- } else {
45
- notify = function(){
46
- // strange IE + webpack dev server bug - use .call(global)
47
- macrotask.call(global, flush);
48
- };
49
- }
50
27
 
51
- module.exports = function(fn){
52
- var task = {fn: fn, next: undefined};
53
- if(last)last.next = task;
54
- if(!head){
55
- head = task;
56
- notify();
57
- } last = task;
28
+ // Node.js
29
+ if(isNode){
30
+ notify = function(){
31
+ process.nextTick(flush);
32
+ };
33
+ // browsers with MutationObserver
34
+ } else if(Observer){
35
+ var toggle = true
36
+ , node = document.createTextNode('');
37
+ new Observer(flush).observe(node, {characterData: true}); // eslint-disable-line no-new
38
+ notify = function(){
39
+ node.data = toggle = !toggle;
40
+ };
41
+ // environments with maybe non-completely correct, but existent Promise
42
+ } else if(Promise && Promise.resolve){
43
+ var promise = Promise.resolve();
44
+ notify = function(){
45
+ promise.then(flush);
46
+ };
47
+ // for other environments - macrotask based on:
48
+ // - setImmediate
49
+ // - MessageChannel
50
+ // - window.postMessag
51
+ // - onreadystatechange
52
+ // - setTimeout
53
+ } else {
54
+ notify = function(){
55
+ // strange IE + webpack dev server bug - use .call(global)
56
+ macrotask.call(global, flush);
57
+ };
58
+ }
59
+
60
+ return function(fn){
61
+ var task = {fn: fn, next: undefined};
62
+ if(last)last.next = task;
63
+ if(!head){
64
+ head = task;
65
+ notify();
66
+ } last = task;
67
+ };
58
68
  };
@@ -8,7 +8,7 @@ var windowNames = typeof window == 'object' && window && Object.getOwnPropertyNa
8
8
 
9
9
  var getWindowNames = function(it){
10
10
  try {
11
- return gOPN.f(it);
11
+ return gOPN(it);
12
12
  } catch(e){
13
13
  return windowNames.slice();
14
14
  }
@@ -16,4 +16,4 @@ var getWindowNames = function(it){
16
16
 
17
17
  module.exports.f = function getOwnPropertyNames(it){
18
18
  return windowNames && toString.call(it) == '[object Window]' ? getWindowNames(it) : gOPN(toIObject(it));
19
- };
19
+ };
@@ -8,8 +8,7 @@ module.exports = function(that, maxLength, fillString, left){
8
8
  , stringLength = S.length
9
9
  , fillStr = fillString === undefined ? ' ' : String(fillString)
10
10
  , intMaxLength = toLength(maxLength);
11
- if(intMaxLength <= stringLength)return S;
12
- if(fillStr == '')fillStr = ' ';
11
+ if(intMaxLength <= stringLength || fillStr == '')return S;
13
12
  var fillLen = intMaxLength - stringLength
14
13
  , stringFiller = repeat.call(fillStr, Math.ceil(fillLen / fillStr.length));
15
14
  if(stringFiller.length > fillLen)stringFiller = stringFiller.slice(0, fillLen);
@@ -0,0 +1,9 @@
1
+ var global = require('./_global')
2
+ , core = require('./_core')
3
+ , LIBRARY = require('./_library')
4
+ , wksExt = require('./_wks-ext')
5
+ , defineProperty = require('./_object-dp').f;
6
+ module.exports = function(name){
7
+ var $Symbol = core.Symbol || (core.Symbol = LIBRARY ? {} : global.Symbol || {});
8
+ if(name.charAt(0) != '_' && !(name in $Symbol))defineProperty($Symbol, name, {value: wksExt.f(name)});
9
+ };
@@ -0,0 +1 @@
1
+ exports.f = require('./_wks');
package/modules/_wks.js CHANGED
@@ -2,7 +2,10 @@ var store = require('./_shared')('wks')
2
2
  , uid = require('./_uid')
3
3
  , Symbol = require('./_global').Symbol
4
4
  , USE_SYMBOL = typeof Symbol == 'function';
5
- module.exports = function(name){
5
+
6
+ var $exports = module.exports = function(name){
6
7
  return store[name] || (store[name] =
7
8
  USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));
8
- };
9
+ };
10
+
11
+ $exports.store = store;
@@ -1,10 +1,10 @@
1
- 'use strict';
2
- var $export = require('./_export')
3
- , $filter = require('./_array-methods')(2);
4
-
5
- $export($export.P + $export.F * !require('./_strict-method')([].filter, true), 'Array', {
6
- // 22.1.3.7 / 15.4.4.20 Array.prototype.filter(callbackfn [, thisArg])
7
- filter: function filter(callbackfn /* , thisArg */){
8
- return $filter(this, callbackfn, arguments[1]);
9
- }
1
+ 'use strict';
2
+ var $export = require('./_export')
3
+ , $filter = require('./_array-methods')(2);
4
+
5
+ $export($export.P + $export.F * !require('./_strict-method')([].filter, true), 'Array', {
6
+ // 22.1.3.7 / 15.4.4.20 Array.prototype.filter(callbackfn [, thisArg])
7
+ filter: function filter(callbackfn /* , thisArg */){
8
+ return $filter(this, callbackfn, arguments[1]);
9
+ }
10
10
  });
@@ -1,11 +1,13 @@
1
1
  'use strict';
2
- var ctx = require('./_ctx')
3
- , $export = require('./_export')
4
- , toObject = require('./_to-object')
5
- , call = require('./_iter-call')
6
- , isArrayIter = require('./_is-array-iter')
7
- , toLength = require('./_to-length')
8
- , getIterFn = require('./core.get-iterator-method');
2
+ var ctx = require('./_ctx')
3
+ , $export = require('./_export')
4
+ , toObject = require('./_to-object')
5
+ , call = require('./_iter-call')
6
+ , isArrayIter = require('./_is-array-iter')
7
+ , toLength = require('./_to-length')
8
+ , createProperty = require('./_create-property')
9
+ , getIterFn = require('./core.get-iterator-method');
10
+
9
11
  $export($export.S + $export.F * !require('./_iter-detect')(function(iter){ Array.from(iter); }), 'Array', {
10
12
  // 22.1.2.1 Array.from(arrayLike, mapfn = undefined, thisArg = undefined)
11
13
  from: function from(arrayLike/*, mapfn = undefined, thisArg = undefined*/){
@@ -21,12 +23,12 @@ $export($export.S + $export.F * !require('./_iter-detect')(function(iter){ Array
21
23
  // if object isn't iterable or it's array with default iterator - use simple case
22
24
  if(iterFn != undefined && !(C == Array && isArrayIter(iterFn))){
23
25
  for(iterator = iterFn.call(O), result = new C; !(step = iterator.next()).done; index++){
24
- result[index] = mapping ? call(iterator, mapfn, [step.value, index], true) : step.value;
26
+ createProperty(result, index, mapping ? call(iterator, mapfn, [step.value, index], true) : step.value);
25
27
  }
26
28
  } else {
27
29
  length = toLength(O.length);
28
30
  for(result = new C(length); length > index; index++){
29
- result[index] = mapping ? mapfn(O[index], index) : O[index];
31
+ createProperty(result, index, mapping ? mapfn(O[index], index) : O[index]);
30
32
  }
31
33
  }
32
34
  result.length = index;
@@ -1,10 +1,15 @@
1
1
  'use strict';
2
- var $export = require('./_export')
3
- , $indexOf = require('./_array-includes')(false);
2
+ var $export = require('./_export')
3
+ , $indexOf = require('./_array-includes')(false)
4
+ , $native = [].indexOf
5
+ , NEGATIVE_ZERO = !!$native && 1 / [1].indexOf(1, -0) < 0;
4
6
 
5
- $export($export.P + $export.F * !require('./_strict-method')([].indexOf), 'Array', {
7
+ $export($export.P + $export.F * (NEGATIVE_ZERO || !require('./_strict-method')($native)), 'Array', {
6
8
  // 22.1.3.11 / 15.4.4.14 Array.prototype.indexOf(searchElement [, fromIndex])
7
9
  indexOf: function indexOf(searchElement /*, fromIndex = 0 */){
8
- return $indexOf(this, searchElement, arguments[1]);
10
+ return NEGATIVE_ZERO
11
+ // convert -0 to +0
12
+ ? $native.apply(this, arguments) || 0
13
+ : $indexOf(this, searchElement, arguments[1]);
9
14
  }
10
15
  });
@@ -1,18 +1,22 @@
1
1
  'use strict';
2
- var $export = require('./_export')
3
- , toIObject = require('./_to-iobject')
4
- , toInteger = require('./_to-integer')
5
- , toLength = require('./_to-length');
2
+ var $export = require('./_export')
3
+ , toIObject = require('./_to-iobject')
4
+ , toInteger = require('./_to-integer')
5
+ , toLength = require('./_to-length')
6
+ , $native = [].lastIndexOf
7
+ , NEGATIVE_ZERO = !!$native && 1 / [1].lastIndexOf(1, -0) < 0;
6
8
 
7
- $export($export.P + $export.F * !require('./_strict-method')([].lastIndexOf), 'Array', {
9
+ $export($export.P + $export.F * (NEGATIVE_ZERO || !require('./_strict-method')($native)), 'Array', {
8
10
  // 22.1.3.14 / 15.4.4.15 Array.prototype.lastIndexOf(searchElement [, fromIndex])
9
11
  lastIndexOf: function lastIndexOf(searchElement /*, fromIndex = @[*-1] */){
12
+ // convert -0 to +0
13
+ if(NEGATIVE_ZERO)return $native.apply(this, arguments) || 0;
10
14
  var O = toIObject(this)
11
15
  , length = toLength(O.length)
12
16
  , index = length - 1;
13
17
  if(arguments.length > 1)index = Math.min(index, toInteger(arguments[1]));
14
18
  if(index < 0)index = length + index;
15
- for(;index >= 0; index--)if(index in O)if(O[index] === searchElement)return index;
19
+ for(;index >= 0; index--)if(index in O)if(O[index] === searchElement)return index || 0;
16
20
  return -1;
17
21
  }
18
22
  });
@@ -1,5 +1,6 @@
1
1
  'use strict';
2
- var $export = require('./_export');
2
+ var $export = require('./_export')
3
+ , createProperty = require('./_create-property');
3
4
 
4
5
  // WebKit Array.of isn't generic
5
6
  $export($export.S + $export.F * require('./_fails')(function(){
@@ -11,7 +12,7 @@ $export($export.S + $export.F * require('./_fails')(function(){
11
12
  var index = 0
12
13
  , aLen = arguments.length
13
14
  , result = new (typeof this == 'function' ? this : Array)(aLen);
14
- while(aLen > index)result[index] = arguments[index++];
15
+ while(aLen > index)createProperty(result, index, arguments[index++]);
15
16
  result.length = aLen;
16
17
  return result;
17
18
  }
@@ -4,13 +4,22 @@ var dP = require('./_object-dp').f
4
4
  , FProto = Function.prototype
5
5
  , nameRE = /^\s*function ([^ (]*)/
6
6
  , NAME = 'name';
7
+
8
+ var isExtensible = Object.isExtensible || function(){
9
+ return true;
10
+ };
11
+
7
12
  // 19.2.4.2 name
8
13
  NAME in FProto || require('./_descriptors') && dP(FProto, NAME, {
9
14
  configurable: true,
10
15
  get: function(){
11
- var match = ('' + this).match(nameRE)
12
- , name = match ? match[1] : '';
13
- has(this, NAME) || dP(this, NAME, createDesc(5, name));
14
- return name;
16
+ try {
17
+ var that = this
18
+ , name = ('' + that).match(nameRE)[1];
19
+ has(that, NAME) || !isExtensible(that) || dP(that, NAME, createDesc(5, name));
20
+ return name;
21
+ } catch(e){
22
+ return '';
23
+ }
15
24
  }
16
25
  });
@@ -4,8 +4,12 @@ var $export = require('./_export')
4
4
  , sqrt = Math.sqrt
5
5
  , $acosh = Math.acosh;
6
6
 
7
- // V8 bug https://code.google.com/p/v8/issues/detail?id=3509
8
- $export($export.S + $export.F * !($acosh && Math.floor($acosh(Number.MAX_VALUE)) == 710), 'Math', {
7
+ $export($export.S + $export.F * !($acosh
8
+ // V8 bug: https://code.google.com/p/v8/issues/detail?id=3509
9
+ && Math.floor($acosh(Number.MAX_VALUE)) == 710
10
+ // Tor Browser bug: Math.acosh(Infinity) -> NaN
11
+ && $acosh(Infinity) == Infinity
12
+ ), 'Math', {
9
13
  acosh: function acosh(x){
10
14
  return (x = +x) < 1 ? NaN : x > 94906265.62425156
11
15
  ? Math.log(x) + Math.LN2
@@ -1,8 +1,10 @@
1
1
  // 20.2.2.5 Math.asinh(x)
2
- var $export = require('./_export');
2
+ var $export = require('./_export')
3
+ , $asinh = Math.asinh;
3
4
 
4
5
  function asinh(x){
5
6
  return !isFinite(x = +x) || x == 0 ? x : x < 0 ? -asinh(-x) : Math.log(x + Math.sqrt(x * x + 1));
6
7
  }
7
8
 
8
- $export($export.S, 'Math', {asinh: asinh});
9
+ // Tor Browser bug: Math.asinh(0) -> -0
10
+ $export($export.S + $export.F * !($asinh && 1 / $asinh(0) > 0), 'Math', {asinh: asinh});
@@ -1,7 +1,9 @@
1
1
  // 20.2.2.7 Math.atanh(x)
2
- var $export = require('./_export');
2
+ var $export = require('./_export')
3
+ , $atanh = Math.atanh;
3
4
 
4
- $export($export.S, 'Math', {
5
+ // Tor Browser bug: Math.atanh(-0) -> 0
6
+ $export($export.S + $export.F * !($atanh && 1 / $atanh(-0) < 0), 'Math', {
5
7
  atanh: function atanh(x){
6
8
  return (x = +x) == 0 ? x : Math.log((1 + x) / (1 - x)) / 2;
7
9
  }
@@ -1,4 +1,5 @@
1
1
  // 20.2.2.14 Math.expm1(x)
2
- var $export = require('./_export');
2
+ var $export = require('./_export')
3
+ , $expm1 = require('./_math-expm1');
3
4
 
4
- $export($export.S, 'Math', {expm1: require('./_math-expm1')});
5
+ $export($export.S + $export.F * ($expm1 != Math.expm1), 'Math', {expm1: $expm1});
@@ -12,7 +12,7 @@ var LIBRARY = require('./_library')
12
12
  , setProto = require('./_set-proto').set
13
13
  , speciesConstructor = require('./_species-constructor')
14
14
  , task = require('./_task').set
15
- , microtask = require('./_microtask')
15
+ , microtask = require('./_microtask')()
16
16
  , PROMISE = 'Promise'
17
17
  , TypeError = global.TypeError
18
18
  , process = global.process
@@ -1,9 +1,11 @@
1
1
  // 26.1.1 Reflect.apply(target, thisArgument, argumentsList)
2
- var $export = require('./_export')
3
- , _apply = Function.apply;
2
+ var $export = require('./_export')
3
+ , aFunction = require('./_a-function')
4
+ , anObject = require('./_an-object')
5
+ , _apply = Function.apply;
4
6
 
5
7
  $export($export.S, 'Reflect', {
6
8
  apply: function apply(target, thisArgument, argumentsList){
7
- return _apply.call(target, thisArgument, argumentsList);
9
+ return _apply.call(aFunction(target), thisArgument, anObject(argumentsList));
8
10
  }
9
11
  });
@@ -14,10 +14,11 @@ $export($export.S + $export.F * require('./_fails')(function(){
14
14
  }), 'Reflect', {
15
15
  construct: function construct(Target, args /*, newTarget*/){
16
16
  aFunction(Target);
17
+ anObject(args);
17
18
  var newTarget = arguments.length < 3 ? Target : aFunction(arguments[2]);
18
19
  if(Target == newTarget){
19
20
  // w/o altered newTarget, optimization for 0-4 arguments
20
- if(args != undefined)switch(anObject(args).length){
21
+ switch(args.length){
21
22
  case 0: return new Target;
22
23
  case 1: return new Target(args[0]);
23
24
  case 2: return new Target(args[0], args[1]);