babel-source 4.4.5 → 4.4.6

Sign up to get free protection for your applications and to get access to all the features.
@@ -13,7 +13,7 @@ require("regenerator-babel/runtime");
13
13
  }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
14
14
  },{"core-js/shim":2,"regenerator-babel/runtime":3}],2:[function(require,module,exports){
15
15
  /**
16
- * Core.js 0.5.4
16
+ * Core.js 0.6.1
17
17
  * https://github.com/zloirock/core-js
18
18
  * License: http://rock.mit-license.org
19
19
  * © 2015 Denis Pushkarev
@@ -79,16 +79,12 @@ var OBJECT = 'Object'
79
79
  , html = document && document.documentElement
80
80
  , navigator = global.navigator
81
81
  , define = global.define
82
+ , console = global.console || {}
82
83
  , ArrayProto = Array[PROTOTYPE]
83
84
  , ObjectProto = Object[PROTOTYPE]
84
85
  , FunctionProto = Function[PROTOTYPE]
85
86
  , Infinity = 1 / 0
86
- , DOT = '.'
87
- // Methods from https://github.com/DeveloperToolsWG/console-object/blob/master/api.md
88
- , CONSOLE_METHODS = 'assert,clear,count,debug,dir,dirxml,error,exception,' +
89
- 'group,groupCollapsed,groupEnd,info,isIndependentlyComposed,log,' +
90
- 'markTimeline,profile,profileEnd,table,time,timeEnd,timeline,' +
91
- 'timelineEnd,timeStamp,trace,warn';
87
+ , DOT = '.';
92
88
 
93
89
  // http://jsperf.com/core-js-isobject
94
90
  function isObject(it){
@@ -176,12 +172,6 @@ function invoke(fn, args, that){
176
172
  : fn.call(that, args[0], args[1], args[2], args[3], args[4]);
177
173
  } return fn.apply(that, args);
178
174
  }
179
- function construct(target, argumentsList /*, newTarget*/){
180
- var proto = assertFunction(arguments.length < 3 ? target : arguments[2])[PROTOTYPE]
181
- , instance = create(isObject(proto) ? proto : ObjectProto)
182
- , result = apply.call(target, instance, argumentsList);
183
- return isObject(result) ? result : instance;
184
- }
185
175
 
186
176
  // Object:
187
177
  var create = Object.create
@@ -423,32 +413,97 @@ function assignHidden(target, src){
423
413
 
424
414
  var SYMBOL_UNSCOPABLES = getWellKnownSymbol('unscopables')
425
415
  , ArrayUnscopables = ArrayProto[SYMBOL_UNSCOPABLES] || {}
426
- , SYMBOL_SPECIES = getWellKnownSymbol('species');
416
+ , SYMBOL_TAG = getWellKnownSymbol(TO_STRING_TAG)
417
+ , SYMBOL_SPECIES = getWellKnownSymbol('species')
418
+ , SYMBOL_ITERATOR;
427
419
  function setSpecies(C){
428
- if(framework || !isNative(C))defineProperty(C, SYMBOL_SPECIES, {
420
+ if(DESC && (framework || !isNative(C)))defineProperty(C, SYMBOL_SPECIES, {
429
421
  configurable: true,
430
422
  get: returnThis
431
423
  });
424
+ }
425
+
426
+ /******************************************************************************
427
+ * Module : common.export *
428
+ ******************************************************************************/
429
+
430
+ var NODE = cof(process) == PROCESS
431
+ , core = {}
432
+ , path = framework ? global : core
433
+ , old = global.core
434
+ , exportGlobal
435
+ // type bitmap
436
+ , FORCED = 1
437
+ , GLOBAL = 2
438
+ , STATIC = 4
439
+ , PROTO = 8
440
+ , BIND = 16
441
+ , WRAP = 32;
442
+ function $define(type, name, source){
443
+ var key, own, out, exp
444
+ , isGlobal = type & GLOBAL
445
+ , target = isGlobal ? global : (type & STATIC)
446
+ ? global[name] : (global[name] || ObjectProto)[PROTOTYPE]
447
+ , exports = isGlobal ? core : core[name] || (core[name] = {});
448
+ if(isGlobal)source = name;
449
+ for(key in source){
450
+ // there is a similar native
451
+ own = !(type & FORCED) && target && key in target
452
+ && (!isFunction(target[key]) || isNative(target[key]));
453
+ // export native or passed
454
+ out = (own ? target : source)[key];
455
+ // prevent global pollution for namespaces
456
+ if(!framework && isGlobal && !isFunction(target[key]))exp = source[key];
457
+ // bind timers to global for call from export context
458
+ else if(type & BIND && own)exp = ctx(out, global);
459
+ // wrap global constructors for prevent change them in library
460
+ else if(type & WRAP && !framework && target[key] == out){
461
+ exp = function(param){
462
+ return this instanceof out ? new out(param) : out(param);
463
+ }
464
+ exp[PROTOTYPE] = out[PROTOTYPE];
465
+ } else exp = type & PROTO && isFunction(out) ? ctx(call, out) : out;
466
+ // extend global
467
+ if(framework && target && !own){
468
+ if(isGlobal)target[key] = out;
469
+ else delete target[key] && hidden(target, key, out);
470
+ }
471
+ // export
472
+ if(exports[key] != out)hidden(exports, key, exp);
473
+ }
432
474
  }
433
-
434
- // Iterators
435
- var SYMBOL_ITERATOR = getWellKnownSymbol(ITERATOR)
436
- , SYMBOL_TAG = getWellKnownSymbol(TO_STRING_TAG)
437
- , SUPPORT_FF_ITER = FF_ITERATOR in ArrayProto
438
- , ITER = safeSymbol('iter')
475
+ // CommonJS export
476
+ if(typeof module != 'undefined' && module.exports)module.exports = core;
477
+ // RequireJS export
478
+ else if(isFunction(define) && define.amd)define(function(){return core});
479
+ // Export to global object
480
+ else exportGlobal = true;
481
+ if(exportGlobal || framework){
482
+ core.noConflict = function(){
483
+ global.core = old;
484
+ return core;
485
+ }
486
+ global.core = core;
487
+ }
488
+
489
+ /******************************************************************************
490
+ * Module : common.iterators *
491
+ ******************************************************************************/
492
+
493
+ SYMBOL_ITERATOR = getWellKnownSymbol(ITERATOR);
494
+ var ITER = safeSymbol('iter')
439
495
  , KEY = 1
440
496
  , VALUE = 2
441
497
  , Iterators = {}
442
498
  , IteratorPrototype = {}
443
- , NATIVE_ITERATORS = SYMBOL_ITERATOR in ArrayProto
444
- // Safari define byggy iterators w/o `next`
499
+ // Safari has byggy iterators w/o `next`
445
500
  , BUGGY_ITERATORS = 'keys' in ArrayProto && !('next' in [].keys());
446
501
  // 25.1.2.1.1 %IteratorPrototype%[@@iterator]()
447
502
  setIterator(IteratorPrototype, returnThis);
448
503
  function setIterator(O, value){
449
504
  hidden(O, SYMBOL_ITERATOR, value);
450
505
  // Add iterator for FF iterator protocol
451
- SUPPORT_FF_ITER && hidden(O, FF_ITERATOR, value);
506
+ FF_ITERATOR in ArrayProto && hidden(O, FF_ITERATOR, value);
452
507
  }
453
508
  function createIterator(Constructor, NAME, next, proto){
454
509
  Constructor[PROTOTYPE] = create(proto || IteratorPrototype, {next: descriptor(1, next)});
@@ -511,72 +566,38 @@ function getIterator(it){
511
566
  function stepCall(fn, value, entries){
512
567
  return entries ? invoke(fn, value) : fn(value);
513
568
  }
514
- function forOf(iterable, entries, fn, that){
515
- var iterator = getIterator(iterable)
516
- , f = ctx(fn, that, entries ? 2 : 1)
517
- , step;
518
- while(!(step = iterator.next()).done)if(stepCall(f, step.value, entries) === false)return;
569
+ function checkDangerIterClosing(fn){
570
+ var danger = true;
571
+ var O = {
572
+ next: function(){ throw 1 },
573
+ 'return': function(){ danger = false }
574
+ };
575
+ O[SYMBOL_ITERATOR] = returnThis;
576
+ try {
577
+ fn(O);
578
+ } catch(e){}
579
+ return danger;
519
580
  }
520
-
521
- // core
522
- var NODE = cof(process) == PROCESS
523
- , core = {}
524
- , path = framework ? global : core
525
- , old = global.core
526
- , exportGlobal
527
- // type bitmap
528
- , FORCED = 1
529
- , GLOBAL = 2
530
- , STATIC = 4
531
- , PROTO = 8
532
- , BIND = 16
533
- , WRAP = 32
534
- , SIMPLE = 64;
535
- function $define(type, name, source){
536
- var key, own, out, exp
537
- , isGlobal = type & GLOBAL
538
- , target = isGlobal ? global : (type & STATIC)
539
- ? global[name] : (global[name] || ObjectProto)[PROTOTYPE]
540
- , exports = isGlobal ? core : core[name] || (core[name] = {});
541
- if(isGlobal)source = name;
542
- for(key in source){
543
- // there is a similar native
544
- own = !(type & FORCED) && target && key in target
545
- && (!isFunction(target[key]) || isNative(target[key]));
546
- // export native or passed
547
- out = (own ? target : source)[key];
548
- // prevent global pollution for namespaces
549
- if(!framework && isGlobal && !isFunction(target[key]))exp = source[key];
550
- // bind timers to global for call from export context
551
- else if(type & BIND && own)exp = ctx(out, global);
552
- // wrap global constructors for prevent change them in library
553
- else if(type & WRAP && !framework && target[key] == out){
554
- exp = function(param){
555
- return this instanceof out ? new out(param) : out(param);
556
- }
557
- exp[PROTOTYPE] = out[PROTOTYPE];
558
- } else exp = type & PROTO && isFunction(out) ? ctx(call, out) : out;
559
- // extend global
560
- if(framework && target && !own){
561
- if(isGlobal || type & SIMPLE)target[key] = out;
562
- else delete target[key] && hidden(target, key, out);
563
- }
564
- // export
565
- if(exports[key] != out)hidden(exports, key, exp);
566
- }
581
+ function closeIterator(iterator){
582
+ var ret = iterator['return'];
583
+ if(ret !== undefined)ret.call(iterator);
567
584
  }
568
- // CommonJS export
569
- if(typeof module != 'undefined' && module.exports)module.exports = core;
570
- // RequireJS export
571
- else if(isFunction(define) && define.amd)define(function(){return core});
572
- // Export to global object
573
- else exportGlobal = true;
574
- if(exportGlobal || framework){
575
- core.noConflict = function(){
576
- global.core = old;
577
- return core;
585
+ function safeIterClose(exec, iterator){
586
+ try {
587
+ exec(iterator);
588
+ } catch(e){
589
+ closeIterator(iterator);
590
+ throw e;
578
591
  }
579
- global.core = core;
592
+ }
593
+ function forOf(iterable, entries, fn, that){
594
+ safeIterClose(function(iterator){
595
+ var f = ctx(fn, that, entries ? 2 : 1)
596
+ , step;
597
+ while(!(step = iterator.next()).done)if(stepCall(f, step.value, entries) === false){
598
+ return closeIterator(iterator);
599
+ }
600
+ }, getIterator(iterable));
580
601
  }
581
602
 
582
603
  /******************************************************************************
@@ -614,7 +635,7 @@ if(exportGlobal || framework){
614
635
  : SymbolRegistry[key] = Symbol(key);
615
636
  },
616
637
  // 19.4.2.4 Symbol.iterator
617
- iterator: SYMBOL_ITERATOR,
638
+ iterator: SYMBOL_ITERATOR || getWellKnownSymbol(ITERATOR),
618
639
  // 19.4.2.5 Symbol.keyFor(sym)
619
640
  keyFor: part.call(keyOf, SymbolRegistry),
620
641
  // 19.4.2.10 Symbol.species
@@ -658,13 +679,18 @@ if(exportGlobal || framework){
658
679
  return result;
659
680
  }
660
681
  });
682
+
683
+ // 20.2.1.9 Math[@@toStringTag]
684
+ setToStringTag(Math, MATH, true);
685
+ // 24.3.3 JSON[@@toStringTag]
686
+ setToStringTag(global.JSON, 'JSON', true);
661
687
  }(safeSymbol('tag'), {}, {}, true);
662
688
 
663
689
  /******************************************************************************
664
- * Module : es6.object *
690
+ * Module : es6.object.statics *
665
691
  ******************************************************************************/
666
692
 
667
- !function(tmp){
693
+ !function(){
668
694
  var objectStatic = {
669
695
  // 19.1.3.1 Object.assign(target, source)
670
696
  assign: assign,
@@ -689,19 +715,18 @@ if(exportGlobal || framework){
689
715
  }
690
716
  }();
691
717
  $define(STATIC, OBJECT, objectStatic);
692
-
693
- if(framework){
694
- // 19.1.3.6 Object.prototype.toString()
695
- tmp[SYMBOL_TAG] = DOT;
696
- if(cof(tmp) != DOT)hidden(ObjectProto, TO_STRING, function(){
697
- return '[object ' + classof(this) + ']';
698
- });
699
- }
700
-
701
- // 20.2.1.9 Math[@@toStringTag]
702
- setToStringTag(Math, MATH, true);
703
- // 24.3.3 JSON[@@toStringTag]
704
- setToStringTag(global.JSON, 'JSON', true);
718
+ }();
719
+
720
+ /******************************************************************************
721
+ * Module : es6.object.prototype *
722
+ ******************************************************************************/
723
+
724
+ !function(tmp){
725
+ // 19.1.3.6 Object.prototype.toString()
726
+ tmp[SYMBOL_TAG] = DOT;
727
+ if(cof(tmp) != DOT)hidden(ObjectProto, TO_STRING, function(){
728
+ return '[object ' + classof(this) + ']';
729
+ });
705
730
  }({});
706
731
 
707
732
  /******************************************************************************
@@ -750,7 +775,7 @@ if(exportGlobal || framework){
750
775
 
751
776
  !function(NAME){
752
777
  // 19.2.4.2 name
753
- NAME in FunctionProto || defineProperty(FunctionProto, NAME, {
778
+ NAME in FunctionProto || (DESC && defineProperty(FunctionProto, NAME, {
754
779
  configurable: true,
755
780
  get: function(){
756
781
  var match = String(this).match(/^\s*function ([^ (]*)/)
@@ -761,7 +786,7 @@ if(exportGlobal || framework){
761
786
  set: function(value){
762
787
  has(this, NAME) || defineProperty(this, NAME, descriptor(0, value));
763
788
  }
764
- });
789
+ }));
765
790
  }('name');
766
791
 
767
792
  /******************************************************************************
@@ -798,7 +823,7 @@ Number('0o1') && Number('0b1') || function(_Number, NumberProto){
798
823
  }(Number, Number[PROTOTYPE]);
799
824
 
800
825
  /******************************************************************************
801
- * Module : es6.number *
826
+ * Module : es6.number.statics *
802
827
  ******************************************************************************/
803
828
 
804
829
  !function(isInteger){
@@ -1018,11 +1043,11 @@ Number('0o1') && Number('0b1') || function(_Number, NumberProto){
1018
1043
  }(String.fromCharCode);
1019
1044
 
1020
1045
  /******************************************************************************
1021
- * Module : es6.array *
1046
+ * Module : es6.array.statics *
1022
1047
  ******************************************************************************/
1023
1048
 
1024
1049
  !function(){
1025
- $define(STATIC, ARRAY, {
1050
+ $define(STATIC + FORCED * checkDangerIterClosing(Array.from), ARRAY, {
1026
1051
  // 22.1.2.1 Array.from(arrayLike, mapfn = undefined, thisArg = undefined)
1027
1052
  from: function(arrayLike/*, mapfn = undefined, thisArg = undefined*/){
1028
1053
  var O = Object(assertDefined(arrayLike))
@@ -1030,15 +1055,26 @@ Number('0o1') && Number('0b1') || function(_Number, NumberProto){
1030
1055
  , mapping = mapfn !== undefined
1031
1056
  , f = mapping ? ctx(mapfn, arguments[2], 2) : undefined
1032
1057
  , index = 0
1033
- , length, result, iter, step;
1034
- if(isIterable(O))for(iter = getIterator(O), result = new (generic(this, Array)); !(step = iter.next()).done; index++){
1035
- result[index] = mapping ? f(step.value, index) : step.value;
1036
- } else for(result = new (generic(this, Array))(length = toLength(O.length)); length > index; index++){
1037
- result[index] = mapping ? f(O[index], index) : O[index];
1058
+ , length, result, step;
1059
+ if(isIterable(O)){
1060
+ result = new (generic(this, Array));
1061
+ safeIterClose(function(iterator){
1062
+ for(; !(step = iterator.next()).done; index++){
1063
+ result[index] = mapping ? f(step.value, index) : step.value;
1064
+ }
1065
+ }, getIterator(O));
1066
+ } else {
1067
+ result = new (generic(this, Array))(length = toLength(O.length));
1068
+ for(; length > index; index++){
1069
+ result[index] = mapping ? f(O[index], index) : O[index];
1070
+ }
1038
1071
  }
1039
1072
  result.length = index;
1040
1073
  return result;
1041
- },
1074
+ }
1075
+ });
1076
+
1077
+ $define(STATIC, ARRAY, {
1042
1078
  // 22.1.2.3 Array.of( ...items)
1043
1079
  of: function(/* ...args */){
1044
1080
  var index = 0
@@ -1050,6 +1086,14 @@ Number('0o1') && Number('0b1') || function(_Number, NumberProto){
1050
1086
  }
1051
1087
  });
1052
1088
 
1089
+ setSpecies(Array);
1090
+ }();
1091
+
1092
+ /******************************************************************************
1093
+ * Module : es6.array.prototype *
1094
+ ******************************************************************************/
1095
+
1096
+ !function(){
1053
1097
  $define(PROTO, ARRAY, {
1054
1098
  // 22.1.3.3 Array.prototype.copyWithin(target, start, end = this.length)
1055
1099
  copyWithin: function(target /* = 0 */, start /* = 0, end = @length */){
@@ -1095,9 +1139,7 @@ Number('0o1') && Number('0b1') || function(_Number, NumberProto){
1095
1139
  ArrayUnscopables[it] = true;
1096
1140
  });
1097
1141
  SYMBOL_UNSCOPABLES in ArrayProto || hidden(ArrayProto, SYMBOL_UNSCOPABLES, ArrayUnscopables);
1098
- }
1099
-
1100
- setSpecies(Array);
1142
+ }
1101
1143
  }();
1102
1144
 
1103
1145
  /******************************************************************************
@@ -1149,16 +1191,9 @@ Number('0o1') && Number('0b1') || function(_Number, NumberProto){
1149
1191
  * Module : es6.regexp *
1150
1192
  ******************************************************************************/
1151
1193
 
1152
- !function(RegExpProto, _RegExp){
1153
- function assertRegExpWrapper(fn){
1154
- return function(){
1155
- assert(cof(this) === REGEXP);
1156
- return fn(this);
1157
- }
1158
- }
1159
-
1194
+ DESC && !function(RegExpProto, _RegExp){
1160
1195
  // RegExp allows a regex with flags as the pattern
1161
- if(DESC && !function(){try{return RegExp(/a/g, 'i') == '/a/i'}catch(e){}}()){
1196
+ if(!function(){try{return RegExp(/a/g, 'i') == '/a/i'}catch(e){}}()){
1162
1197
  RegExp = function RegExp(pattern, flags){
1163
1198
  return new _RegExp(cof(pattern) == REGEXP && flags !== undefined
1164
1199
  ? pattern.source : pattern, flags);
@@ -1178,18 +1213,7 @@ Number('0o1') && Number('0b1') || function(_Number, NumberProto){
1178
1213
  // 21.2.5.3 get RegExp.prototype.flags()
1179
1214
  if(/./g.flags != 'g')defineProperty(RegExpProto, 'flags', {
1180
1215
  configurable: true,
1181
- get: assertRegExpWrapper(createReplacer(/^.*\/(\w*)$/, '$1', true))
1182
- });
1183
-
1184
- // 21.2.5.12 get RegExp.prototype.sticky()
1185
- // 21.2.5.15 get RegExp.prototype.unicode()
1186
- forEach.call(array('sticky,unicode'), function(key){
1187
- key in /./ || defineProperty(RegExpProto, key, DESC ? {
1188
- configurable: true,
1189
- get: assertRegExpWrapper(function(){
1190
- return false;
1191
- })
1192
- } : descriptor(5, false));
1216
+ get: createReplacer(/^.*\/(\w*)$/, '$1')
1193
1217
  });
1194
1218
 
1195
1219
  setSpecies(RegExp);
@@ -1277,30 +1301,55 @@ $define(GLOBAL + BIND, {
1277
1301
  !function(Promise, test){
1278
1302
  isFunction(Promise) && isFunction(Promise.resolve)
1279
1303
  && Promise.resolve(test = new Promise(function(){})) == test
1280
- || function(asap, DEF){
1281
- function isThenable(o){
1304
+ || function(asap, RECORD){
1305
+ function isThenable(it){
1282
1306
  var then;
1283
- if(isObject(o))then = o.then;
1307
+ if(isObject(it))then = it.then;
1284
1308
  return isFunction(then) ? then : false;
1285
1309
  }
1286
- function notify(def){
1287
- var chain = def.chain;
1288
- chain.length && asap(function(){
1289
- var msg = def.msg
1290
- , ok = def.state == 1
1291
- , i = 0;
1292
- while(chain.length > i)!function(react){
1310
+ function handledRejectionOrHasOnRejected(promise){
1311
+ var record = promise[RECORD]
1312
+ , chain = record.c
1313
+ , i = 0
1314
+ , react;
1315
+ if(record.h)return true;
1316
+ while(chain.length > i){
1317
+ react = chain[i++];
1318
+ if(react.fail || handledRejectionOrHasOnRejected(react.P))return true;
1319
+ }
1320
+ }
1321
+ function notify(record, reject){
1322
+ var chain = record.c;
1323
+ if(reject || chain.length)asap(function(){
1324
+ var promise = record.p
1325
+ , value = record.v
1326
+ , ok = record.s == 1
1327
+ , i = 0;
1328
+ if(reject && !handledRejectionOrHasOnRejected(promise)){
1329
+ setTimeout(function(){
1330
+ if(!handledRejectionOrHasOnRejected(promise)){
1331
+ if(NODE){
1332
+ if(!process.emit('unhandledRejection', value, promise)){
1333
+ // default node.js behavior
1334
+ }
1335
+ } else if(isFunction(console.error)){
1336
+ console.error('Unhandled promise rejection', value);
1337
+ }
1338
+ }
1339
+ }, 1e3);
1340
+ } else while(chain.length > i)!function(react){
1293
1341
  var cb = ok ? react.ok : react.fail
1294
1342
  , ret, then;
1295
1343
  try {
1296
1344
  if(cb){
1297
- ret = cb === true ? msg : cb(msg);
1345
+ if(!ok)record.h = true;
1346
+ ret = cb === true ? value : cb(value);
1298
1347
  if(ret === react.P){
1299
1348
  react.rej(TypeError(PROMISE + '-chain cycle'));
1300
1349
  } else if(then = isThenable(ret)){
1301
1350
  then.call(ret, react.res, react.rej);
1302
1351
  } else react.res(ret);
1303
- } else react.rej(msg);
1352
+ } else react.rej(value);
1304
1353
  } catch(err){
1305
1354
  react.rej(err);
1306
1355
  }
@@ -1308,33 +1357,33 @@ $define(GLOBAL + BIND, {
1308
1357
  chain.length = 0;
1309
1358
  });
1310
1359
  }
1311
- function resolve(msg){
1312
- var def = this
1360
+ function resolve(value){
1361
+ var record = this
1313
1362
  , then, wrapper;
1314
- if(def.done)return;
1315
- def.done = true;
1316
- def = def.def || def; // unwrap
1363
+ if(record.d)return;
1364
+ record.d = true;
1365
+ record = record.r || record; // unwrap
1317
1366
  try {
1318
- if(then = isThenable(msg)){
1319
- wrapper = {def: def, done: false}; // wrap
1320
- then.call(msg, ctx(resolve, wrapper, 1), ctx(reject, wrapper, 1));
1367
+ if(then = isThenable(value)){
1368
+ wrapper = {r: record, d: false}; // wrap
1369
+ then.call(value, ctx(resolve, wrapper, 1), ctx(reject, wrapper, 1));
1321
1370
  } else {
1322
- def.msg = msg;
1323
- def.state = 1;
1324
- notify(def);
1371
+ record.v = value;
1372
+ record.s = 1;
1373
+ notify(record);
1325
1374
  }
1326
1375
  } catch(err){
1327
- reject.call(wrapper || {def: def, done: false}, err); // wrap
1376
+ reject.call(wrapper || {r: record, d: false}, err); // wrap
1328
1377
  }
1329
1378
  }
1330
- function reject(msg){
1331
- var def = this;
1332
- if(def.done)return;
1333
- def.done = true;
1334
- def = def.def || def; // unwrap
1335
- def.msg = msg;
1336
- def.state = 2;
1337
- notify(def);
1379
+ function reject(value){
1380
+ var record = this;
1381
+ if(record.d)return;
1382
+ record.d = true;
1383
+ record = record.r || record; // unwrap
1384
+ record.v = value;
1385
+ record.s = 2;
1386
+ notify(record, true);
1338
1387
  }
1339
1388
  function getConstructor(C){
1340
1389
  var S = assertObject(C)[SYMBOL_SPECIES];
@@ -1344,12 +1393,19 @@ $define(GLOBAL + BIND, {
1344
1393
  Promise = function(executor){
1345
1394
  assertFunction(executor);
1346
1395
  assertInstance(this, Promise, PROMISE);
1347
- var def = {chain: [], state: 0, done: false, msg: undefined};
1348
- hidden(this, DEF, def);
1396
+ var record = {
1397
+ p: this, // promise
1398
+ c: [], // chain
1399
+ s: 0, // state
1400
+ d: false, // done
1401
+ v: undefined, // value
1402
+ h: false // handled rejection
1403
+ };
1404
+ hidden(this, RECORD, record);
1349
1405
  try {
1350
- executor(ctx(resolve, def, 1), ctx(reject, def, 1));
1406
+ executor(ctx(resolve, record, 1), ctx(reject, record, 1));
1351
1407
  } catch(err){
1352
- reject.call(def, err);
1408
+ reject.call(record, err);
1353
1409
  }
1354
1410
  }
1355
1411
  assignHidden(Promise[PROTOTYPE], {
@@ -1362,9 +1418,9 @@ $define(GLOBAL + BIND, {
1362
1418
  } , P = react.P = new (S != undefined ? S : Promise)(function(resolve, reject){
1363
1419
  react.res = assertFunction(resolve);
1364
1420
  react.rej = assertFunction(reject);
1365
- }), def = this[DEF];
1366
- def.chain.push(react);
1367
- def.state && notify(def);
1421
+ }), record = this[RECORD];
1422
+ record.c.push(react);
1423
+ record.s && notify(record);
1368
1424
  return P;
1369
1425
  },
1370
1426
  // 25.4.5.1 Promise.prototype.catch(onRejected)
@@ -1407,13 +1463,13 @@ $define(GLOBAL + BIND, {
1407
1463
  },
1408
1464
  // 25.4.4.6 Promise.resolve(x)
1409
1465
  resolve: function(x){
1410
- return isObject(x) && DEF in x && getPrototypeOf(x) === this[PROTOTYPE]
1466
+ return isObject(x) && RECORD in x && getPrototypeOf(x) === this[PROTOTYPE]
1411
1467
  ? x : new (getConstructor(this))(function(resolve, reject){
1412
1468
  resolve(x);
1413
1469
  });
1414
1470
  }
1415
1471
  });
1416
- }(nextTick || setImmediate, safeSymbol('def'));
1472
+ }(nextTick || setImmediate, safeSymbol('record'));
1417
1473
  setToStringTag(Promise, PROMISE);
1418
1474
  setSpecies(Promise);
1419
1475
  $define(GLOBAL + FORCED * !isNative(Promise), {Promise: Promise});
@@ -1468,7 +1524,7 @@ $define(GLOBAL + BIND, {
1468
1524
  initFromIterable(that, iterable);
1469
1525
  };
1470
1526
  assignHidden(assignHidden(C[PROTOTYPE], methods), commonMethods);
1471
- isWeak || defineProperty(C[PROTOTYPE], 'size', {get: function(){
1527
+ isWeak || !DESC || defineProperty(C[PROTOTYPE], 'size', {get: function(){
1472
1528
  return assertDefined(this[SIZE]);
1473
1529
  }});
1474
1530
  } else {
@@ -1477,7 +1533,7 @@ $define(GLOBAL + BIND, {
1477
1533
  , chain = inst[ADDER](isWeak ? {} : -0, 1)
1478
1534
  , buggyZero;
1479
1535
  // wrap to init collections from iterable
1480
- if(!NATIVE_ITERATORS || !C.length){
1536
+ if(checkDangerIterClosing(function(O){ new C(O) })){
1481
1537
  C = function(iterable){
1482
1538
  assertInstance(this, C, NAME);
1483
1539
  return initFromIterable(new Native, iterable);
@@ -1777,7 +1833,12 @@ $define(GLOBAL + BIND, {
1777
1833
  // 26.1.1 Reflect.apply(target, thisArgument, argumentsList)
1778
1834
  apply: ctx(call, apply, 3),
1779
1835
  // 26.1.2 Reflect.construct(target, argumentsList [, newTarget])
1780
- construct: construct,
1836
+ construct: function(target, argumentsList /*, newTarget*/){
1837
+ var proto = assertFunction(arguments.length < 3 ? target : arguments[2])[PROTOTYPE]
1838
+ , instance = create(isObject(proto) ? proto : ObjectProto)
1839
+ , result = apply.call(target, instance, argumentsList);
1840
+ return isObject(result) ? result : instance;
1841
+ },
1781
1842
  // 26.1.3 Reflect.defineProperty(target, propertyKey, attributes)
1782
1843
  defineProperty: wrap(defineProperty),
1783
1844
  // 26.1.4 Reflect.deleteProperty(target, propertyKey)
@@ -1851,8 +1912,17 @@ $define(GLOBAL + BIND, {
1851
1912
  }
1852
1913
  }
1853
1914
  $define(STATIC, OBJECT, {
1915
+ // https://gist.github.com/WebReflection/9353781
1916
+ getOwnPropertyDescriptors: function(object){
1917
+ var O = toObject(object)
1918
+ , result = {};
1919
+ forEach.call(ownKeys(O), function(key){
1920
+ defineProperty(result, key, descriptor(0, getOwnDescriptor(O, key)));
1921
+ });
1922
+ return result;
1923
+ },
1854
1924
  // https://github.com/rwaldron/tc39-notes/blob/master/es6/2014-04/apr-9.md#51-objectentries-objectvalues
1855
- values: createObjectToArray(false),
1925
+ values: createObjectToArray(false),
1856
1926
  entries: createObjectToArray(true)
1857
1927
  });
1858
1928
  $define(STATIC, REGEXP, {
@@ -2363,27 +2433,33 @@ $define(GLOBAL + BIND, {
2363
2433
  }
2364
2434
  },
2365
2435
 
2366
- _findFinallyEntry: function(finallyLoc) {
2436
+ abrupt: function(type, arg) {
2367
2437
  for (var i = this.tryEntries.length - 1; i >= 0; --i) {
2368
2438
  var entry = this.tryEntries[i];
2369
2439
  if (entry.tryLoc <= this.prev &&
2370
- hasOwn.call(entry, "finallyLoc") && (
2371
- entry.finallyLoc === finallyLoc ||
2372
- this.prev < entry.finallyLoc)) {
2373
- return entry;
2440
+ hasOwn.call(entry, "finallyLoc") &&
2441
+ this.prev < entry.finallyLoc) {
2442
+ var finallyEntry = entry;
2443
+ break;
2374
2444
  }
2375
2445
  }
2376
- },
2377
2446
 
2378
- abrupt: function(type, arg) {
2379
- var entry = this._findFinallyEntry();
2380
- var record = entry ? entry.completion : {};
2447
+ if (finallyEntry &&
2448
+ (type === "break" ||
2449
+ type === "continue") &&
2450
+ finallyEntry.tryLoc <= arg &&
2451
+ arg < finallyEntry.finallyLoc) {
2452
+ // Ignore the finally entry if control is not jumping to a
2453
+ // location outside the try/catch block.
2454
+ finallyEntry = null;
2455
+ }
2381
2456
 
2457
+ var record = finallyEntry ? finallyEntry.completion : {};
2382
2458
  record.type = type;
2383
2459
  record.arg = arg;
2384
2460
 
2385
- if (entry) {
2386
- this.next = entry.finallyLoc;
2461
+ if (finallyEntry) {
2462
+ this.next = finallyEntry.finallyLoc;
2387
2463
  } else {
2388
2464
  this.complete(record);
2389
2465
  }
@@ -2410,8 +2486,12 @@ $define(GLOBAL + BIND, {
2410
2486
  },
2411
2487
 
2412
2488
  finish: function(finallyLoc) {
2413
- var entry = this._findFinallyEntry(finallyLoc);
2414
- return this.complete(entry.completion, entry.afterLoc);
2489
+ for (var i = this.tryEntries.length - 1; i >= 0; --i) {
2490
+ var entry = this.tryEntries[i];
2491
+ if (entry.finallyLoc === finallyLoc) {
2492
+ return this.complete(entry.completion, entry.afterLoc);
2493
+ }
2494
+ }
2415
2495
  },
2416
2496
 
2417
2497
  "catch": function(tryLoc) {