core-js 2.2.1 → 2.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (235) hide show
  1. package/CHANGELOG.md +30 -0
  2. package/bower.json +1 -1
  3. package/build/config.js +13 -3
  4. package/client/core.js +1980 -1641
  5. package/client/core.min.js +4 -4
  6. package/client/core.min.js.map +1 -1
  7. package/client/library.js +1877 -1547
  8. package/client/library.min.js +4 -4
  9. package/client/library.min.js.map +1 -1
  10. package/client/shim.js +1907 -1582
  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/date/to-string.js +2 -2
  19. package/fn/observable.js +7 -0
  20. package/fn/symbol/async-iterator.js +2 -0
  21. package/fn/symbol/has-instance.js +2 -1
  22. package/fn/symbol/index.js +2 -0
  23. package/fn/symbol/is-concat-spreadable.js +1 -1
  24. package/fn/symbol/iterator.js +1 -1
  25. package/fn/symbol/match.js +1 -1
  26. package/fn/symbol/observable.js +2 -0
  27. package/fn/symbol/replace.js +1 -1
  28. package/fn/symbol/search.js +1 -1
  29. package/fn/symbol/species.js +1 -1
  30. package/fn/symbol/split.js +1 -1
  31. package/fn/symbol/to-primitive.js +1 -1
  32. package/fn/symbol/to-string-tag.js +1 -1
  33. package/fn/symbol/unscopables.js +1 -1
  34. package/library/es7/asap.js +2 -0
  35. package/library/es7/index.js +4 -0
  36. package/library/es7/observable.js +7 -0
  37. package/library/es7/symbol.js +3 -0
  38. package/library/fn/asap.js +2 -0
  39. package/library/fn/date/to-string.js +2 -2
  40. package/library/fn/observable.js +7 -0
  41. package/library/fn/symbol/async-iterator.js +2 -0
  42. package/library/fn/symbol/has-instance.js +2 -1
  43. package/library/fn/symbol/index.js +2 -0
  44. package/library/fn/symbol/is-concat-spreadable.js +1 -1
  45. package/library/fn/symbol/iterator.js +1 -1
  46. package/library/fn/symbol/match.js +1 -1
  47. package/library/fn/symbol/observable.js +2 -0
  48. package/library/fn/symbol/replace.js +1 -1
  49. package/library/fn/symbol/search.js +1 -1
  50. package/library/fn/symbol/species.js +1 -1
  51. package/library/fn/symbol/split.js +1 -1
  52. package/library/fn/symbol/to-primitive.js +1 -1
  53. package/library/fn/symbol/to-string-tag.js +1 -1
  54. package/library/fn/symbol/unscopables.js +1 -1
  55. package/library/modules/_a-number-value.js +4 -4
  56. package/library/modules/_array-includes.js +1 -1
  57. package/library/modules/_array-reduce.js +27 -27
  58. package/library/modules/_array-species-constructor.js +16 -0
  59. package/library/modules/_array-species-create.js +3 -13
  60. package/library/modules/_collection-strong.js +0 -1
  61. package/library/modules/_core.js +1 -1
  62. package/library/modules/_create-property.js +8 -0
  63. package/library/modules/_date-to-primitive.js +8 -8
  64. package/library/modules/_enum-bug-keys.js +3 -3
  65. package/library/modules/_for-of.js +12 -6
  66. package/library/modules/_ie8-dom-define.js +2 -2
  67. package/library/modules/_inherit-if-required.js +7 -7
  68. package/library/modules/_iter-detect.js +1 -1
  69. package/library/modules/_math-expm1.js +8 -2
  70. package/library/modules/_microtask.js +58 -48
  71. package/library/modules/_object-create.js +41 -40
  72. package/library/modules/_object-dps.js +12 -12
  73. package/library/modules/_object-forced-pam.js +6 -6
  74. package/library/modules/_object-gopd.js +15 -15
  75. package/library/modules/_object-gopn.js +6 -6
  76. package/library/modules/_object-gpo.js +12 -12
  77. package/library/modules/_object-keys-internal.js +16 -16
  78. package/library/modules/_object-keys.js +6 -6
  79. package/library/modules/_shared-key.js +4 -4
  80. package/library/modules/_strict-method.js +6 -6
  81. package/library/modules/_string-pad.js +1 -2
  82. package/library/modules/_string-ws.js +1 -1
  83. package/library/modules/_typed-array.js +0 -2
  84. package/library/modules/_typed-buffer.js +0 -2
  85. package/library/modules/_wks-define.js +9 -0
  86. package/library/modules/_wks-ext.js +1 -0
  87. package/library/modules/_wks.js +5 -2
  88. package/library/modules/es6.array.every.js +9 -9
  89. package/library/modules/es6.array.filter.js +9 -9
  90. package/library/modules/es6.array.for-each.js +10 -10
  91. package/library/modules/es6.array.from.js +11 -9
  92. package/library/modules/es6.array.index-of.js +14 -9
  93. package/library/modules/es6.array.is-array.js +3 -3
  94. package/library/modules/es6.array.join.js +11 -11
  95. package/library/modules/es6.array.last-index-of.js +21 -17
  96. package/library/modules/es6.array.map.js +9 -9
  97. package/library/modules/es6.array.of.js +3 -2
  98. package/library/modules/es6.array.reduce-right.js +9 -9
  99. package/library/modules/es6.array.reduce.js +9 -9
  100. package/library/modules/es6.array.slice.js +27 -27
  101. package/library/modules/es6.array.some.js +9 -9
  102. package/library/modules/es6.array.sort.js +22 -22
  103. package/library/modules/es6.date.now.js +3 -3
  104. package/library/modules/es6.date.to-iso-string.js +27 -27
  105. package/library/modules/es6.function.bind.js +3 -3
  106. package/library/modules/es6.math.acosh.js +6 -2
  107. package/library/modules/es6.math.asinh.js +4 -2
  108. package/library/modules/es6.math.atanh.js +4 -2
  109. package/library/modules/es6.math.expm1.js +3 -2
  110. package/library/modules/es6.number.to-fixed.js +112 -113
  111. package/library/modules/es6.number.to-precision.js +17 -17
  112. package/library/modules/es6.object.create.js +2 -2
  113. package/library/modules/es6.object.define-properties.js +2 -2
  114. package/library/modules/es6.object.define-property.js +2 -2
  115. package/library/modules/es6.parse-float.js +3 -3
  116. package/library/modules/es6.parse-int.js +3 -3
  117. package/library/modules/es6.promise.js +1 -3
  118. package/library/modules/es6.reflect.apply.js +12 -5
  119. package/library/modules/es6.reflect.construct.js +20 -11
  120. package/library/modules/es6.symbol.js +59 -59
  121. package/library/modules/es6.typed.array-buffer.js +0 -1
  122. package/library/modules/es6.weak-map.js +0 -1
  123. package/library/modules/es7.asap.js +12 -0
  124. package/library/modules/es7.object.define-getter.js +11 -11
  125. package/library/modules/es7.object.define-setter.js +11 -11
  126. package/library/modules/es7.object.enumerable-entries.js +12 -0
  127. package/library/modules/es7.object.enumerable-keys.js +12 -0
  128. package/library/modules/es7.object.enumerable-values.js +12 -0
  129. package/library/modules/es7.object.get-own-property-descriptors.js +8 -12
  130. package/library/modules/es7.object.lookup-getter.js +17 -17
  131. package/library/modules/es7.object.lookup-setter.js +17 -17
  132. package/library/modules/es7.observable.js +199 -0
  133. package/library/modules/es7.string.match-all.js +29 -29
  134. package/library/modules/es7.symbol.async-iterator.js +1 -0
  135. package/library/modules/es7.symbol.observable.js +1 -0
  136. package/library/shim.js +4 -0
  137. package/library/stage/0.js +1 -0
  138. package/library/stage/1.js +3 -2
  139. package/library/stage/2.js +3 -1
  140. package/library/stage/3.js +1 -3
  141. package/library/stage/4.js +3 -1
  142. package/library/stage/pre.js +9 -9
  143. package/modules/_a-number-value.js +4 -4
  144. package/modules/_array-includes.js +1 -1
  145. package/modules/_array-reduce.js +27 -27
  146. package/modules/_array-species-constructor.js +16 -0
  147. package/modules/_array-species-create.js +3 -13
  148. package/modules/_collection-strong.js +0 -1
  149. package/modules/_core.js +1 -1
  150. package/modules/_create-property.js +8 -0
  151. package/modules/_date-to-primitive.js +8 -8
  152. package/modules/_enum-bug-keys.js +3 -3
  153. package/modules/_for-of.js +12 -6
  154. package/modules/_ie8-dom-define.js +2 -2
  155. package/modules/_inherit-if-required.js +7 -7
  156. package/modules/_iter-detect.js +1 -1
  157. package/modules/_math-expm1.js +8 -2
  158. package/modules/_microtask.js +58 -48
  159. package/modules/_object-create.js +41 -40
  160. package/modules/_object-dps.js +12 -12
  161. package/modules/_object-forced-pam.js +6 -6
  162. package/modules/_object-gopd.js +15 -15
  163. package/modules/_object-gopn.js +6 -6
  164. package/modules/_object-gpo.js +12 -12
  165. package/modules/_object-keys-internal.js +16 -16
  166. package/modules/_object-keys.js +6 -6
  167. package/modules/_shared-key.js +4 -4
  168. package/modules/_strict-method.js +6 -6
  169. package/modules/_string-pad.js +1 -2
  170. package/modules/_string-ws.js +1 -1
  171. package/modules/_typed-array.js +0 -2
  172. package/modules/_typed-buffer.js +0 -2
  173. package/modules/_wks-define.js +9 -0
  174. package/modules/_wks-ext.js +1 -0
  175. package/modules/_wks.js +5 -2
  176. package/modules/es6.array.every.js +9 -9
  177. package/modules/es6.array.filter.js +9 -9
  178. package/modules/es6.array.for-each.js +10 -10
  179. package/modules/es6.array.from.js +11 -9
  180. package/modules/es6.array.index-of.js +14 -9
  181. package/modules/es6.array.is-array.js +3 -3
  182. package/modules/es6.array.join.js +11 -11
  183. package/modules/es6.array.last-index-of.js +21 -17
  184. package/modules/es6.array.map.js +9 -9
  185. package/modules/es6.array.of.js +3 -2
  186. package/modules/es6.array.reduce-right.js +9 -9
  187. package/modules/es6.array.reduce.js +9 -9
  188. package/modules/es6.array.slice.js +27 -27
  189. package/modules/es6.array.some.js +9 -9
  190. package/modules/es6.array.sort.js +22 -22
  191. package/modules/es6.date.now.js +3 -3
  192. package/modules/es6.date.to-iso-string.js +27 -27
  193. package/modules/es6.date.to-primitive.js +3 -3
  194. package/modules/es6.function.bind.js +3 -3
  195. package/modules/es6.function.name.js +13 -4
  196. package/modules/es6.math.acosh.js +6 -2
  197. package/modules/es6.math.asinh.js +4 -2
  198. package/modules/es6.math.atanh.js +4 -2
  199. package/modules/es6.math.expm1.js +3 -2
  200. package/modules/es6.number.to-fixed.js +112 -113
  201. package/modules/es6.number.to-precision.js +17 -17
  202. package/modules/es6.object.create.js +2 -2
  203. package/modules/es6.object.define-properties.js +2 -2
  204. package/modules/es6.object.define-property.js +2 -2
  205. package/modules/es6.parse-float.js +3 -3
  206. package/modules/es6.parse-int.js +3 -3
  207. package/modules/es6.promise.js +1 -3
  208. package/modules/es6.reflect.apply.js +12 -5
  209. package/modules/es6.reflect.construct.js +20 -11
  210. package/modules/es6.regexp.to-string.js +24 -24
  211. package/modules/es6.symbol.js +59 -59
  212. package/modules/es6.typed.array-buffer.js +0 -1
  213. package/modules/es6.weak-map.js +0 -1
  214. package/modules/es7.asap.js +12 -0
  215. package/modules/es7.object.define-getter.js +11 -11
  216. package/modules/es7.object.define-setter.js +11 -11
  217. package/modules/es7.object.enumerable-entries.js +12 -0
  218. package/modules/es7.object.enumerable-keys.js +12 -0
  219. package/modules/es7.object.enumerable-values.js +12 -0
  220. package/modules/es7.object.get-own-property-descriptors.js +8 -12
  221. package/modules/es7.object.lookup-getter.js +17 -17
  222. package/modules/es7.object.lookup-setter.js +17 -17
  223. package/modules/es7.observable.js +199 -0
  224. package/modules/es7.string.match-all.js +29 -29
  225. package/modules/es7.symbol.async-iterator.js +1 -0
  226. package/modules/es7.symbol.observable.js +1 -0
  227. package/package.json +15 -13
  228. package/shim.js +4 -0
  229. package/stage/0.js +1 -0
  230. package/stage/1.js +3 -2
  231. package/stage/2.js +3 -1
  232. package/stage/3.js +1 -3
  233. package/stage/4.js +3 -1
  234. package/stage/pre.js +9 -9
  235. package/README.md +0 -1981
@@ -1,18 +1,18 @@
1
- 'use strict';
2
- var $export = require('./_export')
3
- , $fails = require('./_fails')
4
- , aNumberValue = require('./_a-number-value')
5
- , $toPrecision = 1..toPrecision;
6
-
7
- $export($export.P + $export.F * ($fails(function(){
8
- // IE7-
9
- return $toPrecision.call(1, undefined) !== '1';
10
- }) || !$fails(function(){
11
- // V8 ~ Android 4.3-
12
- $toPrecision.call({});
13
- })), 'Number', {
14
- toPrecision: function toPrecision(precision){
15
- var that = aNumberValue(this, 'Number#toPrecision: incorrect invocation!');
16
- return precision === undefined ? $toPrecision.call(that) : $toPrecision.call(that, precision);
17
- }
1
+ 'use strict';
2
+ var $export = require('./_export')
3
+ , $fails = require('./_fails')
4
+ , aNumberValue = require('./_a-number-value')
5
+ , $toPrecision = 1..toPrecision;
6
+
7
+ $export($export.P + $export.F * ($fails(function(){
8
+ // IE7-
9
+ return $toPrecision.call(1, undefined) !== '1';
10
+ }) || !$fails(function(){
11
+ // V8 ~ Android 4.3-
12
+ $toPrecision.call({});
13
+ })), 'Number', {
14
+ toPrecision: function toPrecision(precision){
15
+ var that = aNumberValue(this, 'Number#toPrecision: incorrect invocation!');
16
+ return precision === undefined ? $toPrecision.call(that) : $toPrecision.call(that, precision);
17
+ }
18
18
  });
@@ -1,3 +1,3 @@
1
- var $export = require('./_export')
2
- // 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])
1
+ var $export = require('./_export')
2
+ // 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])
3
3
  $export($export.S, 'Object', {create: require('./_object-create')});
@@ -1,3 +1,3 @@
1
- var $export = require('./_export');
2
- // 19.1.2.3 / 15.2.3.7 Object.defineProperties(O, Properties)
1
+ var $export = require('./_export');
2
+ // 19.1.2.3 / 15.2.3.7 Object.defineProperties(O, Properties)
3
3
  $export($export.S + $export.F * !require('./_descriptors'), 'Object', {defineProperties: require('./_object-dps')});
@@ -1,3 +1,3 @@
1
- var $export = require('./_export');
2
- // 19.1.2.4 / 15.2.3.6 Object.defineProperty(O, P, Attributes)
1
+ var $export = require('./_export');
2
+ // 19.1.2.4 / 15.2.3.6 Object.defineProperty(O, P, Attributes)
3
3
  $export($export.S + $export.F * !require('./_descriptors'), 'Object', {defineProperty: require('./_object-dp').f});
@@ -1,4 +1,4 @@
1
- var $export = require('./_export')
2
- , $parseFloat = require('./_parse-float');
3
- // 18.2.4 parseFloat(string)
1
+ var $export = require('./_export')
2
+ , $parseFloat = require('./_parse-float');
3
+ // 18.2.4 parseFloat(string)
4
4
  $export($export.G + $export.F * (parseFloat != $parseFloat), {parseFloat: $parseFloat});
@@ -1,4 +1,4 @@
1
- var $export = require('./_export')
2
- , $parseInt = require('./_parse-int');
3
- // 18.2.5 parseInt(string, radix)
1
+ var $export = require('./_export')
2
+ , $parseInt = require('./_parse-int');
3
+ // 18.2.5 parseInt(string, radix)
4
4
  $export($export.G + $export.F * (parseInt != $parseInt), {parseInt: $parseInt});
@@ -5,14 +5,12 @@ var LIBRARY = require('./_library')
5
5
  , classof = require('./_classof')
6
6
  , $export = require('./_export')
7
7
  , isObject = require('./_is-object')
8
- , anObject = require('./_an-object')
9
8
  , aFunction = require('./_a-function')
10
9
  , anInstance = require('./_an-instance')
11
10
  , forOf = require('./_for-of')
12
- , setProto = require('./_set-proto').set
13
11
  , speciesConstructor = require('./_species-constructor')
14
12
  , task = require('./_task').set
15
- , microtask = require('./_microtask')
13
+ , microtask = require('./_microtask')()
16
14
  , PROMISE = 'Promise'
17
15
  , TypeError = global.TypeError
18
16
  , process = global.process
@@ -1,9 +1,16 @@
1
1
  // 26.1.1 Reflect.apply(target, thisArgument, argumentsList)
2
- var $export = require('./_export')
3
- , _apply = Function.apply;
4
-
5
- $export($export.S, 'Reflect', {
2
+ var $export = require('./_export')
3
+ , aFunction = require('./_a-function')
4
+ , anObject = require('./_an-object')
5
+ , rApply = (require('./_global').Reflect || {}).apply
6
+ , fApply = Function.apply;
7
+ // MS Edge argumentsList argument is optional
8
+ $export($export.S + $export.F * !require('./_fails')(function(){
9
+ rApply(function(){});
10
+ }), 'Reflect', {
6
11
  apply: function apply(target, thisArgument, argumentsList){
7
- return _apply.call(target, thisArgument, argumentsList);
12
+ var T = aFunction(target)
13
+ , L = anObject(argumentsList);
14
+ return rApply ? rApply(T, thisArgument, L) : fApply.call(T, thisArgument, L);
8
15
  }
9
16
  });
@@ -1,23 +1,32 @@
1
1
  // 26.1.2 Reflect.construct(target, argumentsList [, newTarget])
2
- var $export = require('./_export')
3
- , create = require('./_object-create')
4
- , aFunction = require('./_a-function')
5
- , anObject = require('./_an-object')
6
- , isObject = require('./_is-object')
7
- , bind = require('./_bind');
2
+ var $export = require('./_export')
3
+ , create = require('./_object-create')
4
+ , aFunction = require('./_a-function')
5
+ , anObject = require('./_an-object')
6
+ , isObject = require('./_is-object')
7
+ , fails = require('./_fails')
8
+ , bind = require('./_bind')
9
+ , rConstruct = (require('./_global').Reflect || {}).construct;
8
10
 
9
- // MS Edge supports only 2 arguments
11
+ // MS Edge supports only 2 arguments and argumentsList argument is optional
10
12
  // FF Nightly sets third argument as `new.target`, but does not create `this` from it
11
- $export($export.S + $export.F * require('./_fails')(function(){
13
+ var NEW_TARGET_BUG = fails(function(){
12
14
  function F(){}
13
- return !(Reflect.construct(function(){}, [], F) instanceof F);
14
- }), 'Reflect', {
15
+ return !(rConstruct(function(){}, [], F) instanceof F);
16
+ });
17
+ var ARGS_BUG = !fails(function(){
18
+ rConstruct(function(){});
19
+ });
20
+
21
+ $export($export.S + $export.F * (NEW_TARGET_BUG || ARGS_BUG), 'Reflect', {
15
22
  construct: function construct(Target, args /*, newTarget*/){
16
23
  aFunction(Target);
24
+ anObject(args);
17
25
  var newTarget = arguments.length < 3 ? Target : aFunction(arguments[2]);
26
+ if(ARGS_BUG && !NEW_TARGET_BUG)return rConstruct(Target, args, newTarget);
18
27
  if(Target == newTarget){
19
28
  // w/o altered newTarget, optimization for 0-4 arguments
20
- if(args != undefined)switch(anObject(args).length){
29
+ switch(args.length){
21
30
  case 0: return new Target;
22
31
  case 1: return new Target(args[0]);
23
32
  case 2: return new Target(args[0], args[1]);
@@ -1,25 +1,25 @@
1
- 'use strict';
2
- require('./es6.regexp.flags');
3
- var anObject = require('./_an-object')
4
- , $flags = require('./_flags')
5
- , DESCRIPTORS = require('./_descriptors')
6
- , TO_STRING = 'toString'
7
- , $toString = /./[TO_STRING];
8
-
9
- var define = function(fn){
10
- require('./_redefine')(RegExp.prototype, TO_STRING, fn, true);
11
- };
12
-
13
- // 21.2.5.14 RegExp.prototype.toString()
14
- if(require('./_fails')(function(){ return $toString.call({source: 'a', flags: 'b'}) != '/a/b'; })){
15
- define(function toString(){
16
- var R = anObject(this);
17
- return '/'.concat(R.source, '/',
18
- 'flags' in R ? R.flags : !DESCRIPTORS && R instanceof RegExp ? $flags.call(R) : undefined);
19
- });
20
- // FF44- RegExp#toString has a wrong name
21
- } else if($toString.name != TO_STRING){
22
- define(function toString(){
23
- return $toString.call(this);
24
- });
1
+ 'use strict';
2
+ require('./es6.regexp.flags');
3
+ var anObject = require('./_an-object')
4
+ , $flags = require('./_flags')
5
+ , DESCRIPTORS = require('./_descriptors')
6
+ , TO_STRING = 'toString'
7
+ , $toString = /./[TO_STRING];
8
+
9
+ var define = function(fn){
10
+ require('./_redefine')(RegExp.prototype, TO_STRING, fn, true);
11
+ };
12
+
13
+ // 21.2.5.14 RegExp.prototype.toString()
14
+ if(require('./_fails')(function(){ return $toString.call({source: 'a', flags: 'b'}) != '/a/b'; })){
15
+ define(function toString(){
16
+ var R = anObject(this);
17
+ return '/'.concat(R.source, '/',
18
+ 'flags' in R ? R.flags : !DESCRIPTORS && R instanceof RegExp ? $flags.call(R) : undefined);
19
+ });
20
+ // FF44- RegExp#toString has a wrong name
21
+ } else if($toString.name != TO_STRING){
22
+ define(function toString(){
23
+ return $toString.call(this);
24
+ });
25
25
  }
@@ -1,7 +1,6 @@
1
1
  'use strict';
2
2
  // ECMAScript 6 symbols shim
3
3
  var global = require('./_global')
4
- , core = require('./_core')
5
4
  , has = require('./_has')
6
5
  , DESCRIPTORS = require('./_descriptors')
7
6
  , $export = require('./_export')
@@ -12,6 +11,8 @@ var global = require('./_global')
12
11
  , setToStringTag = require('./_set-to-string-tag')
13
12
  , uid = require('./_uid')
14
13
  , wks = require('./_wks')
14
+ , wksExt = require('./_wks-ext')
15
+ , wksDefine = require('./_wks-define')
15
16
  , keyOf = require('./_keyof')
16
17
  , enumKeys = require('./_enum-keys')
17
18
  , isArray = require('./_is-array')
@@ -23,22 +24,25 @@ var global = require('./_global')
23
24
  , gOPNExt = require('./_object-gopn-ext')
24
25
  , $GOPD = require('./_object-gopd')
25
26
  , $DP = require('./_object-dp')
27
+ , $keys = require('./_object-keys')
26
28
  , gOPD = $GOPD.f
27
29
  , dP = $DP.f
28
30
  , gOPN = gOPNExt.f
29
31
  , $Symbol = global.Symbol
30
32
  , $JSON = global.JSON
31
33
  , _stringify = $JSON && $JSON.stringify
32
- , setter = false
33
34
  , PROTOTYPE = 'prototype'
34
35
  , HIDDEN = wks('_hidden')
35
36
  , TO_PRIMITIVE = wks('toPrimitive')
36
37
  , isEnum = {}.propertyIsEnumerable
37
38
  , SymbolRegistry = shared('symbol-registry')
38
39
  , AllSymbols = shared('symbols')
40
+ , OPSymbols = shared('op-symbols')
39
41
  , ObjectProto = Object[PROTOTYPE]
40
42
  , USE_NATIVE = typeof $Symbol == 'function'
41
43
  , QObject = global.QObject;
44
+ // Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173
45
+ var setter = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;
42
46
 
43
47
  // fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687
44
48
  var setSymbolDesc = DESCRIPTORS && $fails(function(){
@@ -55,13 +59,6 @@ var setSymbolDesc = DESCRIPTORS && $fails(function(){
55
59
  var wrap = function(tag){
56
60
  var sym = AllSymbols[tag] = _create($Symbol[PROTOTYPE]);
57
61
  sym._k = tag;
58
- DESCRIPTORS && setter && setSymbolDesc(ObjectProto, tag, {
59
- configurable: true,
60
- set: function(value){
61
- if(has(this, HIDDEN) && has(this[HIDDEN], tag))this[HIDDEN][tag] = false;
62
- setSymbolDesc(this, tag, createDesc(1, value));
63
- }
64
- });
65
62
  return sym;
66
63
  };
67
64
 
@@ -72,6 +69,7 @@ var isSymbol = USE_NATIVE && typeof $Symbol.iterator == 'symbol' ? function(it){
72
69
  };
73
70
 
74
71
  var $defineProperty = function defineProperty(it, key, D){
72
+ if(it === ObjectProto)$defineProperty(OPSymbols, key, D);
75
73
  anObject(it);
76
74
  key = toPrimitive(key, true);
77
75
  anObject(D);
@@ -99,10 +97,14 @@ var $create = function create(it, P){
99
97
  };
100
98
  var $propertyIsEnumerable = function propertyIsEnumerable(key){
101
99
  var E = isEnum.call(this, key = toPrimitive(key, true));
100
+ if(this === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key))return false;
102
101
  return E || !has(this, key) || !has(AllSymbols, key) || has(this, HIDDEN) && this[HIDDEN][key] ? E : true;
103
102
  };
104
103
  var $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key){
105
- var D = gOPD(it = toIObject(it), key = toPrimitive(key, true));
104
+ it = toIObject(it);
105
+ key = toPrimitive(key, true);
106
+ if(it === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key))return;
107
+ var D = gOPD(it, key);
106
108
  if(D && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key]))D.enumerable = true;
107
109
  return D;
108
110
  };
@@ -111,45 +113,33 @@ var $getOwnPropertyNames = function getOwnPropertyNames(it){
111
113
  , result = []
112
114
  , i = 0
113
115
  , key;
114
- while(names.length > i)if(!has(AllSymbols, key = names[i++]) && key != HIDDEN && key != META)result.push(key);
115
- return result;
116
+ while(names.length > i){
117
+ if(!has(AllSymbols, key = names[i++]) && key != HIDDEN && key != META)result.push(key);
118
+ } return result;
116
119
  };
117
120
  var $getOwnPropertySymbols = function getOwnPropertySymbols(it){
118
- var names = gOPN(toIObject(it))
121
+ var IS_OP = it === ObjectProto
122
+ , names = gOPN(IS_OP ? OPSymbols : toIObject(it))
119
123
  , result = []
120
124
  , i = 0
121
125
  , key;
122
- while(names.length > i)if(has(AllSymbols, key = names[i++]))result.push(AllSymbols[key]);
123
- return result;
124
- };
125
- var $stringify = function stringify(it){
126
- if(it === undefined || isSymbol(it))return; // IE8 returns string on undefined
127
- var args = [it]
128
- , i = 1
129
- , replacer, $replacer;
130
- while(arguments.length > i)args.push(arguments[i++]);
131
- replacer = args[1];
132
- if(typeof replacer == 'function')$replacer = replacer;
133
- if($replacer || !isArray(replacer))replacer = function(key, value){
134
- if($replacer)value = $replacer.call(this, key, value);
135
- if(!isSymbol(value))return value;
136
- };
137
- args[1] = replacer;
138
- return _stringify.apply($JSON, args);
126
+ while(names.length > i){
127
+ if(has(AllSymbols, key = names[i++]) && (IS_OP ? has(ObjectProto, key) : true))result.push(AllSymbols[key]);
128
+ } return result;
139
129
  };
140
- var BUGGY_JSON = $fails(function(){
141
- var S = $Symbol();
142
- // MS Edge converts symbol values to JSON as {}
143
- // WebKit converts symbol values to JSON as null
144
- // V8 throws on boxed symbols
145
- return _stringify([S]) != '[null]' || _stringify({a: S}) != '{}' || _stringify(Object(S)) != '{}';
146
- });
147
130
 
148
131
  // 19.4.1.1 Symbol([description])
149
132
  if(!USE_NATIVE){
150
133
  $Symbol = function Symbol(){
151
134
  if(this instanceof $Symbol)throw TypeError('Symbol is not a constructor!');
152
- return wrap(uid(arguments.length > 0 ? arguments[0] : undefined));
135
+ var tag = uid(arguments.length > 0 ? arguments[0] : undefined);
136
+ var $set = function(value){
137
+ if(this === ObjectProto)$set.call(OPSymbols, value);
138
+ if(has(this, HIDDEN) && has(this[HIDDEN], tag))this[HIDDEN][tag] = false;
139
+ setSymbolDesc(this, tag, createDesc(1, value));
140
+ };
141
+ if(DESCRIPTORS && setter)setSymbolDesc(ObjectProto, tag, {configurable: true, set: $set});
142
+ return wrap(tag);
153
143
  };
154
144
  redefine($Symbol[PROTOTYPE], 'toString', function toString(){
155
145
  return this._k;
@@ -158,38 +148,26 @@ if(!USE_NATIVE){
158
148
  $GOPD.f = $getOwnPropertyDescriptor;
159
149
  $DP.f = $defineProperty;
160
150
  require('./_object-gopn').f = gOPNExt.f = $getOwnPropertyNames;
161
- require('./_object-pie').f = $propertyIsEnumerable
151
+ require('./_object-pie').f = $propertyIsEnumerable;
162
152
  require('./_object-gops').f = $getOwnPropertySymbols;
163
153
 
164
154
  if(DESCRIPTORS && !require('./_library')){
165
155
  redefine(ObjectProto, 'propertyIsEnumerable', $propertyIsEnumerable, true);
166
156
  }
157
+
158
+ wksExt.f = function(name){
159
+ return wrap(wks(name));
160
+ }
167
161
  }
168
162
 
169
163
  $export($export.G + $export.W + $export.F * !USE_NATIVE, {Symbol: $Symbol});
170
164
 
171
- // 19.4.2.2 Symbol.hasInstance
172
- // 19.4.2.3 Symbol.isConcatSpreadable
173
- // 19.4.2.4 Symbol.iterator
174
- // 19.4.2.6 Symbol.match
175
- // 19.4.2.8 Symbol.replace
176
- // 19.4.2.9 Symbol.search
177
- // 19.4.2.10 Symbol.species
178
- // 19.4.2.11 Symbol.split
179
- // 19.4.2.12 Symbol.toPrimitive
180
- // 19.4.2.13 Symbol.toStringTag
181
- // 19.4.2.14 Symbol.unscopables
182
165
  for(var symbols = (
166
+ // 19.4.2.2, 19.4.2.3, 19.4.2.4, 19.4.2.6, 19.4.2.8, 19.4.2.9, 19.4.2.10, 19.4.2.11, 19.4.2.12, 19.4.2.13, 19.4.2.14
183
167
  'hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables'
184
- ).split(','), i = 0; symbols.length > i; ){
185
- var key = symbols[i++]
186
- , Wrapper = core.Symbol
187
- , sym = wks(key);
188
- if(!(key in Wrapper))dP(Wrapper, key, {value: USE_NATIVE ? sym : wrap(sym)});
189
- };
168
+ ).split(','), i = 0; symbols.length > i; )wks(symbols[i++]);
190
169
 
191
- // Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173
192
- if(!QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild)setter = true;
170
+ for(var symbols = $keys(wks.store), i = 0; symbols.length > i; )wksDefine(symbols[i++]);
193
171
 
194
172
  $export($export.S + $export.F * !USE_NATIVE, 'Symbol', {
195
173
  // 19.4.2.1 Symbol.for(key)
@@ -223,7 +201,29 @@ $export($export.S + $export.F * !USE_NATIVE, 'Object', {
223
201
  });
224
202
 
225
203
  // 24.3.2 JSON.stringify(value [, replacer [, space]])
226
- $JSON && $export($export.S + $export.F * (!USE_NATIVE || BUGGY_JSON), 'JSON', {stringify: $stringify});
204
+ $JSON && $export($export.S + $export.F * (!USE_NATIVE || $fails(function(){
205
+ var S = $Symbol();
206
+ // MS Edge converts symbol values to JSON as {}
207
+ // WebKit converts symbol values to JSON as null
208
+ // V8 throws on boxed symbols
209
+ return _stringify([S]) != '[null]' || _stringify({a: S}) != '{}' || _stringify(Object(S)) != '{}';
210
+ })), 'JSON', {
211
+ stringify: function stringify(it){
212
+ if(it === undefined || isSymbol(it))return; // IE8 returns string on undefined
213
+ var args = [it]
214
+ , i = 1
215
+ , replacer, $replacer;
216
+ while(arguments.length > i)args.push(arguments[i++]);
217
+ replacer = args[1];
218
+ if(typeof replacer == 'function')$replacer = replacer;
219
+ if($replacer || !isArray(replacer))replacer = function(key, value){
220
+ if($replacer)value = $replacer.call(this, key, value);
221
+ if(!isSymbol(value))return value;
222
+ };
223
+ args[1] = replacer;
224
+ return _stringify.apply($JSON, args);
225
+ }
226
+ });
227
227
 
228
228
  // 19.4.3.4 Symbol.prototype[@@toPrimitive](hint)
229
229
  $Symbol[PROTOTYPE][TO_PRIMITIVE] || require('./_hide')($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);
@@ -6,7 +6,6 @@ var $export = require('./_export')
6
6
  , toIndex = require('./_to-index')
7
7
  , toLength = require('./_to-length')
8
8
  , isObject = require('./_is-object')
9
- , TYPED_ARRAY = require('./_wks')('typed_array')
10
9
  , ArrayBuffer = require('./_global').ArrayBuffer
11
10
  , speciesConstructor = require('./_species-constructor')
12
11
  , $ArrayBuffer = buffer.ArrayBuffer
@@ -5,7 +5,6 @@ var each = require('./_array-methods')(0)
5
5
  , assign = require('./_object-assign')
6
6
  , weak = require('./_collection-weak')
7
7
  , isObject = require('./_is-object')
8
- , has = require('./_has')
9
8
  , getWeak = meta.getWeak
10
9
  , isExtensible = Object.isExtensible
11
10
  , uncaughtFrozenStore = weak.ufstore
@@ -0,0 +1,12 @@
1
+ // https://github.com/rwaldron/tc39-notes/blob/master/es6/2014-09/sept-25.md#510-globalasap-for-enqueuing-a-microtask
2
+ var $export = require('./_export')
3
+ , microtask = require('./_microtask')()
4
+ , process = require('./_global').process
5
+ , isNode = require('./_cof')(process) == 'process';
6
+
7
+ $export($export.G, {
8
+ asap: function asap(fn){
9
+ var domain = isNode && process.domain;
10
+ microtask(domain ? domain.bind(fn) : fn);
11
+ }
12
+ });
@@ -1,12 +1,12 @@
1
- 'use strict';
2
- var $export = require('./_export')
3
- , toObject = require('./_to-object')
4
- , aFunction = require('./_a-function')
5
- , $defineProperty = require('./_object-dp');
6
-
7
- // B.2.2.2 Object.prototype.__defineGetter__(P, getter)
8
- require('./_descriptors') && $export($export.P + require('./_object-forced-pam'), 'Object', {
9
- __defineGetter__: function __defineGetter__(P, getter){
10
- $defineProperty.f(toObject(this), P, {get: aFunction(getter), enumerable: true, configurable: true});
11
- }
1
+ 'use strict';
2
+ var $export = require('./_export')
3
+ , toObject = require('./_to-object')
4
+ , aFunction = require('./_a-function')
5
+ , $defineProperty = require('./_object-dp');
6
+
7
+ // B.2.2.2 Object.prototype.__defineGetter__(P, getter)
8
+ require('./_descriptors') && $export($export.P + require('./_object-forced-pam'), 'Object', {
9
+ __defineGetter__: function __defineGetter__(P, getter){
10
+ $defineProperty.f(toObject(this), P, {get: aFunction(getter), enumerable: true, configurable: true});
11
+ }
12
12
  });
@@ -1,12 +1,12 @@
1
- 'use strict';
2
- var $export = require('./_export')
3
- , toObject = require('./_to-object')
4
- , aFunction = require('./_a-function')
5
- , $defineProperty = require('./_object-dp');
6
-
7
- // B.2.2.3 Object.prototype.__defineSetter__(P, setter)
8
- require('./_descriptors') && $export($export.P + require('./_object-forced-pam'), 'Object', {
9
- __defineSetter__: function __defineSetter__(P, setter){
10
- $defineProperty.f(toObject(this), P, {set: aFunction(setter), enumerable: true, configurable: true});
11
- }
1
+ 'use strict';
2
+ var $export = require('./_export')
3
+ , toObject = require('./_to-object')
4
+ , aFunction = require('./_a-function')
5
+ , $defineProperty = require('./_object-dp');
6
+
7
+ // B.2.2.3 Object.prototype.__defineSetter__(P, setter)
8
+ require('./_descriptors') && $export($export.P + require('./_object-forced-pam'), 'Object', {
9
+ __defineSetter__: function __defineSetter__(P, setter){
10
+ $defineProperty.f(toObject(this), P, {set: aFunction(setter), enumerable: true, configurable: true});
11
+ }
12
12
  });
@@ -0,0 +1,12 @@
1
+ // https://github.com/leobalter/object-enumerables
2
+ var $export = require('./_export')
3
+ , toObject = require('./_to-object');
4
+
5
+ $export($export.S, 'Object', {
6
+ enumerableEntries: function enumerableEntries(O){
7
+ var T = toObject(O)
8
+ , properties = [];
9
+ for(var key in T)properties.push([key, T[key]]);
10
+ return properties;
11
+ }
12
+ });
@@ -0,0 +1,12 @@
1
+ // https://github.com/leobalter/object-enumerables
2
+ var $export = require('./_export')
3
+ , toObject = require('./_to-object');
4
+
5
+ $export($export.S, 'Object', {
6
+ enumerableKeys: function enumerableKeys(O){
7
+ var T = toObject(O)
8
+ , properties = [];
9
+ for(var key in T)properties.push(key);
10
+ return properties;
11
+ }
12
+ });
@@ -0,0 +1,12 @@
1
+ // https://github.com/leobalter/object-enumerables
2
+ var $export = require('./_export')
3
+ , toObject = require('./_to-object');
4
+
5
+ $export($export.S, 'Object', {
6
+ enumerableValues: function enumerableValues(O){
7
+ var T = toObject(O)
8
+ , properties = [];
9
+ for(var key in T)properties.push(T[key]);
10
+ return properties;
11
+ }
12
+ });
@@ -1,10 +1,9 @@
1
1
  // https://github.com/tc39/proposal-object-getownpropertydescriptors
2
- var $export = require('./_export')
3
- , ownKeys = require('./_own-keys')
4
- , toIObject = require('./_to-iobject')
5
- , createDesc = require('./_property-desc')
6
- , gOPD = require('./_object-gopd')
7
- , dP = require('./_object-dp');
2
+ var $export = require('./_export')
3
+ , ownKeys = require('./_own-keys')
4
+ , toIObject = require('./_to-iobject')
5
+ , gOPD = require('./_object-gopd')
6
+ , createProperty = require('./_create-property');
8
7
 
9
8
  $export($export.S, 'Object', {
10
9
  getOwnPropertyDescriptors: function getOwnPropertyDescriptors(object){
@@ -13,11 +12,8 @@ $export($export.S, 'Object', {
13
12
  , keys = ownKeys(O)
14
13
  , result = {}
15
14
  , i = 0
16
- , key, D;
17
- while(keys.length > i){
18
- D = getDesc(O, key = keys[i++]);
19
- if(key in result)dP.f(result, key, createDesc(0, D));
20
- else result[key] = D;
21
- } return result;
15
+ , key;
16
+ while(keys.length > i)createProperty(result, key = keys[i++], getDesc(O, key));
17
+ return result;
22
18
  }
23
19
  });
@@ -1,18 +1,18 @@
1
- 'use strict';
2
- var $export = require('./_export')
3
- , toObject = require('./_to-object')
4
- , toPrimitive = require('./_to-primitive')
5
- , getPrototypeOf = require('./_object-gpo')
6
- , getOwnPropertyDescriptor = require('./_object-gopd').f;
7
-
8
- // B.2.2.4 Object.prototype.__lookupGetter__(P)
9
- require('./_descriptors') && $export($export.P + require('./_object-forced-pam'), 'Object', {
10
- __lookupGetter__: function __lookupGetter__(P){
11
- var O = toObject(this)
12
- , K = toPrimitive(P, true)
13
- , D;
14
- do {
15
- if(D = getOwnPropertyDescriptor(O, K))return D.get;
16
- } while(O = getPrototypeOf(O));
17
- }
1
+ 'use strict';
2
+ var $export = require('./_export')
3
+ , toObject = require('./_to-object')
4
+ , toPrimitive = require('./_to-primitive')
5
+ , getPrototypeOf = require('./_object-gpo')
6
+ , getOwnPropertyDescriptor = require('./_object-gopd').f;
7
+
8
+ // B.2.2.4 Object.prototype.__lookupGetter__(P)
9
+ require('./_descriptors') && $export($export.P + require('./_object-forced-pam'), 'Object', {
10
+ __lookupGetter__: function __lookupGetter__(P){
11
+ var O = toObject(this)
12
+ , K = toPrimitive(P, true)
13
+ , D;
14
+ do {
15
+ if(D = getOwnPropertyDescriptor(O, K))return D.get;
16
+ } while(O = getPrototypeOf(O));
17
+ }
18
18
  });