core-js 2.2.2 → 2.3.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 (91) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/README.md +70 -65
  3. package/bower.json +1 -1
  4. package/build/config.js +3 -0
  5. package/client/core.js +1176 -1100
  6. package/client/core.min.js +4 -4
  7. package/client/core.min.js.map +1 -1
  8. package/client/library.js +1112 -1045
  9. package/client/library.min.js +4 -4
  10. package/client/library.min.js.map +1 -1
  11. package/client/shim.js +1118 -1042
  12. package/client/shim.min.js +4 -4
  13. package/client/shim.min.js.map +1 -1
  14. package/es7/asap.js +2 -0
  15. package/es7/index.js +3 -0
  16. package/es7/symbol.js +3 -0
  17. package/fn/asap.js +2 -0
  18. package/fn/symbol/async-iterator.js +2 -0
  19. package/fn/symbol/has-instance.js +2 -1
  20. package/fn/symbol/index.js +2 -0
  21. package/fn/symbol/is-concat-spreadable.js +1 -1
  22. package/fn/symbol/iterator.js +1 -1
  23. package/fn/symbol/match.js +1 -1
  24. package/fn/symbol/observable.js +2 -0
  25. package/fn/symbol/replace.js +1 -1
  26. package/fn/symbol/search.js +1 -1
  27. package/fn/symbol/species.js +1 -1
  28. package/fn/symbol/split.js +1 -1
  29. package/fn/symbol/to-primitive.js +1 -1
  30. package/fn/symbol/to-string-tag.js +1 -1
  31. package/fn/symbol/unscopables.js +1 -1
  32. package/library/es7/asap.js +2 -0
  33. package/library/es7/index.js +3 -0
  34. package/library/es7/symbol.js +3 -0
  35. package/library/fn/asap.js +2 -0
  36. package/library/fn/symbol/async-iterator.js +2 -0
  37. package/library/fn/symbol/has-instance.js +2 -1
  38. package/library/fn/symbol/index.js +2 -0
  39. package/library/fn/symbol/is-concat-spreadable.js +1 -1
  40. package/library/fn/symbol/iterator.js +1 -1
  41. package/library/fn/symbol/match.js +1 -1
  42. package/library/fn/symbol/observable.js +2 -0
  43. package/library/fn/symbol/replace.js +1 -1
  44. package/library/fn/symbol/search.js +1 -1
  45. package/library/fn/symbol/species.js +1 -1
  46. package/library/fn/symbol/split.js +1 -1
  47. package/library/fn/symbol/to-primitive.js +1 -1
  48. package/library/fn/symbol/to-string-tag.js +1 -1
  49. package/library/fn/symbol/unscopables.js +1 -1
  50. package/library/modules/_array-species-constructor.js +16 -0
  51. package/library/modules/_array-species-create.js +3 -13
  52. package/library/modules/_core.js +1 -1
  53. package/library/modules/_microtask.js +58 -48
  54. package/library/modules/_string-pad.js +1 -2
  55. package/library/modules/_wks-define.js +9 -0
  56. package/library/modules/_wks-ext.js +1 -0
  57. package/library/modules/_wks.js +5 -2
  58. package/library/modules/es6.array.filter.js +9 -9
  59. package/library/modules/es6.promise.js +1 -1
  60. package/library/modules/es6.symbol.js +45 -53
  61. package/library/modules/es7.asap.js +12 -0
  62. package/library/modules/es7.symbol.async-iterator.js +1 -0
  63. package/library/modules/es7.symbol.observable.js +1 -0
  64. package/library/shim.js +3 -0
  65. package/library/stage/0.js +1 -0
  66. package/library/stage/1.js +2 -2
  67. package/library/stage/2.js +3 -1
  68. package/library/stage/3.js +1 -3
  69. package/library/stage/4.js +3 -1
  70. package/modules/_array-species-constructor.js +16 -0
  71. package/modules/_array-species-create.js +3 -13
  72. package/modules/_core.js +1 -1
  73. package/modules/_microtask.js +58 -48
  74. package/modules/_string-pad.js +1 -2
  75. package/modules/_wks-define.js +9 -0
  76. package/modules/_wks-ext.js +1 -0
  77. package/modules/_wks.js +5 -2
  78. package/modules/es6.array.filter.js +9 -9
  79. package/modules/es6.function.name.js +13 -4
  80. package/modules/es6.promise.js +1 -1
  81. package/modules/es6.symbol.js +45 -53
  82. package/modules/es7.asap.js +12 -0
  83. package/modules/es7.symbol.async-iterator.js +1 -0
  84. package/modules/es7.symbol.observable.js +1 -0
  85. package/package.json +3 -3
  86. package/shim.js +3 -0
  87. package/stage/0.js +1 -0
  88. package/stage/1.js +2 -2
  89. package/stage/2.js +3 -1
  90. package/stage/3.js +1 -3
  91. package/stage/4.js +3 -1
package/library/shim.js CHANGED
@@ -142,6 +142,8 @@ require('./modules/es7.string.pad-end');
142
142
  require('./modules/es7.string.trim-left');
143
143
  require('./modules/es7.string.trim-right');
144
144
  require('./modules/es7.string.match-all');
145
+ require('./modules/es7.symbol.async-iterator');
146
+ require('./modules/es7.symbol.observable');
145
147
  require('./modules/es7.object.get-own-property-descriptors');
146
148
  require('./modules/es7.object.values');
147
149
  require('./modules/es7.object.entries');
@@ -166,6 +168,7 @@ require('./modules/es7.reflect.get-own-metadata-keys');
166
168
  require('./modules/es7.reflect.has-metadata');
167
169
  require('./modules/es7.reflect.has-own-metadata');
168
170
  require('./modules/es7.reflect.metadata');
171
+ require('./modules/es7.asap');
169
172
  require('./modules/web.timers');
170
173
  require('./modules/web.immediate');
171
174
  require('./modules/web.dom.iterable');
@@ -6,4 +6,5 @@ require('../modules/es7.math.iaddh');
6
6
  require('../modules/es7.math.isubh');
7
7
  require('../modules/es7.math.imulh');
8
8
  require('../modules/es7.math.umulh');
9
+ require('../modules/es7.asap');
9
10
  module.exports = require('./1');
@@ -1,5 +1,5 @@
1
1
  require('../modules/es7.string.trim-left');
2
2
  require('../modules/es7.string.trim-right');
3
3
  require('../modules/es7.string.match-all');
4
- require('../modules/es7.system.global');
5
- module.exports = require('./2');
4
+ require('../modules/es7.symbol.observable');
5
+ module.exports = require('./2');
@@ -1 +1,3 @@
1
- module.exports = require('./3');
1
+ require('../modules/es7.system.global');
2
+ require('../modules/es7.symbol.async-iterator');
3
+ module.exports = require('./3');
@@ -1,6 +1,4 @@
1
1
  require('../modules/es7.object.get-own-property-descriptors');
2
- require('../modules/es7.object.values');
3
- require('../modules/es7.object.entries');
4
2
  require('../modules/es7.string.pad-start');
5
3
  require('../modules/es7.string.pad-end');
6
- module.exports = require('./4');
4
+ module.exports = require('./4');
@@ -2,5 +2,7 @@ require('../modules/es7.object.define-getter');
2
2
  require('../modules/es7.object.define-setter');
3
3
  require('../modules/es7.object.lookup-getter');
4
4
  require('../modules/es7.object.lookup-setter');
5
+ require('../modules/es7.object.values');
6
+ require('../modules/es7.object.entries');
5
7
  require('../modules/es7.array.includes');
6
- module.exports = require('../modules/_core');
8
+ module.exports = require('../modules/_core');
@@ -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.2'};
1
+ var core = module.exports = {version: '2.3.0'};
2
2
  if(typeof __e == 'number')__e = core; // eslint-disable-line no-undef
@@ -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,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
  });
@@ -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
  });
@@ -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,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,13 +24,13 @@ 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')
@@ -39,6 +40,8 @@ var global = require('./_global')
39
40
  , ObjectProto = Object[PROTOTYPE]
40
41
  , USE_NATIVE = typeof $Symbol == 'function'
41
42
  , QObject = global.QObject;
43
+ // Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173
44
+ var setter = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;
42
45
 
43
46
  // fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687
44
47
  var setSymbolDesc = DESCRIPTORS && $fails(function(){
@@ -55,13 +58,6 @@ var setSymbolDesc = DESCRIPTORS && $fails(function(){
55
58
  var wrap = function(tag){
56
59
  var sym = AllSymbols[tag] = _create($Symbol[PROTOTYPE]);
57
60
  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
61
  return sym;
66
62
  };
67
63
 
@@ -122,34 +118,20 @@ var $getOwnPropertySymbols = function getOwnPropertySymbols(it){
122
118
  while(names.length > i)if(has(AllSymbols, key = names[i++]))result.push(AllSymbols[key]);
123
119
  return result;
124
120
  };
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);
139
- };
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
121
 
148
122
  // 19.4.1.1 Symbol([description])
149
123
  if(!USE_NATIVE){
150
124
  $Symbol = function Symbol(){
151
125
  if(this instanceof $Symbol)throw TypeError('Symbol is not a constructor!');
152
- return wrap(uid(arguments.length > 0 ? arguments[0] : undefined));
126
+ var tag = uid(arguments.length > 0 ? arguments[0] : undefined);
127
+ DESCRIPTORS && setter && setSymbolDesc(ObjectProto, tag, {
128
+ configurable: true,
129
+ set: function(value){
130
+ if(has(this, HIDDEN) && has(this[HIDDEN], tag))this[HIDDEN][tag] = false;
131
+ setSymbolDesc(this, tag, createDesc(1, value));
132
+ }
133
+ });
134
+ return wrap(tag);
153
135
  };
154
136
  redefine($Symbol[PROTOTYPE], 'toString', function toString(){
155
137
  return this._k;
@@ -158,38 +140,26 @@ if(!USE_NATIVE){
158
140
  $GOPD.f = $getOwnPropertyDescriptor;
159
141
  $DP.f = $defineProperty;
160
142
  require('./_object-gopn').f = gOPNExt.f = $getOwnPropertyNames;
161
- require('./_object-pie').f = $propertyIsEnumerable
143
+ require('./_object-pie').f = $propertyIsEnumerable;
162
144
  require('./_object-gops').f = $getOwnPropertySymbols;
163
145
 
164
146
  if(DESCRIPTORS && !require('./_library')){
165
147
  redefine(ObjectProto, 'propertyIsEnumerable', $propertyIsEnumerable, true);
166
148
  }
149
+
150
+ wksExt.f = function(name){
151
+ return wrap(wks(name));
152
+ }
167
153
  }
168
154
 
169
155
  $export($export.G + $export.W + $export.F * !USE_NATIVE, {Symbol: $Symbol});
170
156
 
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
157
  for(var symbols = (
158
+ // 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
159
  '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
- };
160
+ ).split(','), i = 0; symbols.length > i; )wks(symbols[i++]);
190
161
 
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;
162
+ for(var symbols = $keys(wks.store), i = 0; symbols.length > i; )wksDefine(symbols[i++]);
193
163
 
194
164
  $export($export.S + $export.F * !USE_NATIVE, 'Symbol', {
195
165
  // 19.4.2.1 Symbol.for(key)
@@ -223,7 +193,29 @@ $export($export.S + $export.F * !USE_NATIVE, 'Object', {
223
193
  });
224
194
 
225
195
  // 24.3.2 JSON.stringify(value [, replacer [, space]])
226
- $JSON && $export($export.S + $export.F * (!USE_NATIVE || BUGGY_JSON), 'JSON', {stringify: $stringify});
196
+ $JSON && $export($export.S + $export.F * (!USE_NATIVE || $fails(function(){
197
+ var S = $Symbol();
198
+ // MS Edge converts symbol values to JSON as {}
199
+ // WebKit converts symbol values to JSON as null
200
+ // V8 throws on boxed symbols
201
+ return _stringify([S]) != '[null]' || _stringify({a: S}) != '{}' || _stringify(Object(S)) != '{}';
202
+ })), 'JSON', {
203
+ stringify: function stringify(it){
204
+ if(it === undefined || isSymbol(it))return; // IE8 returns string on undefined
205
+ var args = [it]
206
+ , i = 1
207
+ , replacer, $replacer;
208
+ while(arguments.length > i)args.push(arguments[i++]);
209
+ replacer = args[1];
210
+ if(typeof replacer == 'function')$replacer = replacer;
211
+ if($replacer || !isArray(replacer))replacer = function(key, value){
212
+ if($replacer)value = $replacer.call(this, key, value);
213
+ if(!isSymbol(value))return value;
214
+ };
215
+ args[1] = replacer;
216
+ return _stringify.apply($JSON, args);
217
+ }
218
+ });
227
219
 
228
220
  // 19.4.3.4 Symbol.prototype[@@toPrimitive](hint)
229
221
  $Symbol[PROTOTYPE][TO_PRIMITIVE] || require('./_hide')($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);
@@ -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
+ });
@@ -0,0 +1 @@
1
+ require('./_wks-define')('asyncIterator');
@@ -0,0 +1 @@
1
+ require('./_wks-define')('observable');
package/package.json CHANGED
@@ -1,14 +1,14 @@
1
1
  {
2
2
  "name": "core-js",
3
3
  "description": "Standard library",
4
- "version": "2.2.2",
4
+ "version": "2.3.0",
5
5
  "repository": {
6
6
  "type": "git",
7
7
  "url": "https://github.com/zloirock/core-js.git"
8
8
  },
9
9
  "main": "index.js",
10
10
  "devDependencies": {
11
- "webpack": "1.12.x",
11
+ "webpack": "1.13.x",
12
12
  "LiveScript": "1.3.x",
13
13
  "grunt": "1.0.x",
14
14
  "grunt-cli": "1.2.x",
@@ -27,7 +27,7 @@
27
27
  "qunitjs": "1.23.x",
28
28
  "phantomjs-prebuilt": "2.1.x",
29
29
  "promises-aplus-tests": "2.1.x",
30
- "eslint": "2.7.x",
30
+ "eslint": "2.8.x",
31
31
  "temp": "0.8.x"
32
32
  },
33
33
  "scripts": {
package/shim.js CHANGED
@@ -142,6 +142,8 @@ require('./modules/es7.string.pad-end');
142
142
  require('./modules/es7.string.trim-left');
143
143
  require('./modules/es7.string.trim-right');
144
144
  require('./modules/es7.string.match-all');
145
+ require('./modules/es7.symbol.async-iterator');
146
+ require('./modules/es7.symbol.observable');
145
147
  require('./modules/es7.object.get-own-property-descriptors');
146
148
  require('./modules/es7.object.values');
147
149
  require('./modules/es7.object.entries');
@@ -166,6 +168,7 @@ require('./modules/es7.reflect.get-own-metadata-keys');
166
168
  require('./modules/es7.reflect.has-metadata');
167
169
  require('./modules/es7.reflect.has-own-metadata');
168
170
  require('./modules/es7.reflect.metadata');
171
+ require('./modules/es7.asap');
169
172
  require('./modules/web.timers');
170
173
  require('./modules/web.immediate');
171
174
  require('./modules/web.dom.iterable');
package/stage/0.js CHANGED
@@ -6,4 +6,5 @@ require('../modules/es7.math.iaddh');
6
6
  require('../modules/es7.math.isubh');
7
7
  require('../modules/es7.math.imulh');
8
8
  require('../modules/es7.math.umulh');
9
+ require('../modules/es7.asap');
9
10
  module.exports = require('./1');
package/stage/1.js CHANGED
@@ -1,5 +1,5 @@
1
1
  require('../modules/es7.string.trim-left');
2
2
  require('../modules/es7.string.trim-right');
3
3
  require('../modules/es7.string.match-all');
4
- require('../modules/es7.system.global');
5
- module.exports = require('./2');
4
+ require('../modules/es7.symbol.observable');
5
+ module.exports = require('./2');
package/stage/2.js CHANGED
@@ -1 +1,3 @@
1
- module.exports = require('./3');
1
+ require('../modules/es7.system.global');
2
+ require('../modules/es7.symbol.async-iterator');
3
+ module.exports = require('./3');
package/stage/3.js CHANGED
@@ -1,6 +1,4 @@
1
1
  require('../modules/es7.object.get-own-property-descriptors');
2
- require('../modules/es7.object.values');
3
- require('../modules/es7.object.entries');
4
2
  require('../modules/es7.string.pad-start');
5
3
  require('../modules/es7.string.pad-end');
6
- module.exports = require('./4');
4
+ module.exports = require('./4');
package/stage/4.js CHANGED
@@ -2,5 +2,7 @@ require('../modules/es7.object.define-getter');
2
2
  require('../modules/es7.object.define-setter');
3
3
  require('../modules/es7.object.lookup-getter');
4
4
  require('../modules/es7.object.lookup-setter');
5
+ require('../modules/es7.object.values');
6
+ require('../modules/es7.object.entries');
5
7
  require('../modules/es7.array.includes');
6
- module.exports = require('../modules/_core');
8
+ module.exports = require('../modules/_core');