ember-source 1.8.0.beta.3 → 1.8.0.beta.4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: bd3e19939120975296f3c49573a60ff1077afaa4
4
- data.tar.gz: 8a0bb39c6f5d4efd9a3029dcfc7a09577769b44a
3
+ metadata.gz: 1ffeb5cdfb2eb08e6473fc492c7492620bb6dab8
4
+ data.tar.gz: 097e80d0bed3b23bc532d963ac4236d2bc68003e
5
5
  SHA512:
6
- metadata.gz: 8e846f081643523a71dce8176e31685dac4b0489b9949d1faf97447c44cd55e2bb0a88274b72ef1dd1ab29ad689d3029413cd90833bc5fc1bacedbb738bbacec
7
- data.tar.gz: 98682ebc8f75b651af4eb556b8cf80856ec137ea4e484de0c0f286aa6aa7840e2e94fb80d8bffc9fda189d14019d5666187c3afba91b479e50638b93321f9217
6
+ metadata.gz: 633d7ca1d371f1a22efc8647b307c03e682ae4ec52c557e200f5a84b6bfc460f7cbd8a2019e451d6b15abdd1154445d4b5833bc776832caff8f4340552c37c02
7
+ data.tar.gz: 9c16f7819ee9d7cea4deb894fcc2be592063eff8e6abb1c7d1b63949f079f92fb55ce8ad99c9a1a5e7742a1ec116efc34888bb821f78d677b35493630186cec4
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.8.0-beta.3
1
+ 1.8.0-beta.4
@@ -5,7 +5,7 @@
5
5
  * Portions Copyright 2008-2011 Apple Inc. All rights reserved.
6
6
  * @license Licensed under MIT license
7
7
  * See https://raw.github.com/emberjs/ember.js/master/LICENSE
8
- * @version 1.8.0-beta.3
8
+ * @version 1.8.0-beta.4
9
9
  */
10
10
 
11
11
  (function() {
@@ -82,6 +82,7 @@ define("backburner",
82
82
  var isNumber = __dependency1__.isNumber;
83
83
  var isCoercableNumber = __dependency1__.isCoercableNumber;
84
84
  var wrapInTryCatch = __dependency1__.wrapInTryCatch;
85
+ var now = __dependency1__.now;
85
86
 
86
87
  var needsIETryCatchFix = __dependency2__.needsIETryCatchFix;
87
88
 
@@ -251,9 +252,11 @@ define("backburner",
251
252
  setTimeout: function() {
252
253
  var l = arguments.length;
253
254
  var args = new Array(l);
255
+
254
256
  for (var x = 0; x < l; x++) {
255
257
  args[x] = arguments[x];
256
258
  }
259
+
257
260
  var length = args.length,
258
261
  method, wait, target,
259
262
  methodOrTarget, methodOrWait, methodOrArgs;
@@ -300,7 +303,7 @@ define("backburner",
300
303
  }
301
304
  }
302
305
 
303
- var executeAt = (+new Date()) + parseInt(wait, 10);
306
+ var executeAt = now() + parseInt(wait, 10);
304
307
 
305
308
  if (isString(method)) {
306
309
  method = target[method];
@@ -331,7 +334,7 @@ define("backburner",
331
334
  },
332
335
 
333
336
  throttle: function(target, method /* , args, wait, [immediate] */) {
334
- var self = this;
337
+ var backburner = this;
335
338
  var args = arguments;
336
339
  var immediate = pop.call(args);
337
340
  var wait, throttler, index, timer;
@@ -350,16 +353,16 @@ define("backburner",
350
353
 
351
354
  timer = global.setTimeout(function() {
352
355
  if (!immediate) {
353
- self.run.apply(self, args);
356
+ backburner.run.apply(backburner, args);
354
357
  }
355
- var index = findThrottler(target, method, self._throttlers);
358
+ var index = findThrottler(target, method, backburner._throttlers);
356
359
  if (index > -1) {
357
- self._throttlers.splice(index, 1);
360
+ backburner._throttlers.splice(index, 1);
358
361
  }
359
362
  }, wait);
360
363
 
361
364
  if (immediate) {
362
- self.run.apply(self, args);
365
+ this.run.apply(this, args);
363
366
  }
364
367
 
365
368
  throttler = [target, method, timer];
@@ -370,7 +373,7 @@ define("backburner",
370
373
  },
371
374
 
372
375
  debounce: function(target, method /* , args, wait, [immediate] */) {
373
- var self = this;
376
+ var backburner = this;
374
377
  var args = arguments;
375
378
  var immediate = pop.call(args);
376
379
  var wait, index, debouncee, timer;
@@ -394,16 +397,16 @@ define("backburner",
394
397
 
395
398
  timer = global.setTimeout(function() {
396
399
  if (!immediate) {
397
- self.run.apply(self, args);
400
+ backburner.run.apply(backburner, args);
398
401
  }
399
- var index = findDebouncee(target, method, self._debouncees);
402
+ var index = findDebouncee(target, method, backburner._debouncees);
400
403
  if (index > -1) {
401
- self._debouncees.splice(index, 1);
404
+ backburner._debouncees.splice(index, 1);
402
405
  }
403
406
  }, wait);
404
407
 
405
408
  if (immediate && index === -1) {
406
- self.run.apply(self, args);
409
+ backburner.run.apply(backburner, args);
407
410
  }
408
411
 
409
412
  debouncee = [
@@ -412,7 +415,7 @@ define("backburner",
412
415
  timer
413
416
  ];
414
417
 
415
- self._debouncees.push(debouncee);
418
+ backburner._debouncees.push(debouncee);
416
419
 
417
420
  return debouncee;
418
421
  },
@@ -459,7 +462,7 @@ define("backburner",
459
462
  this._laterTimer = null;
460
463
  }
461
464
  if (this._timers.length > 0) { // Update to next available timer when available
462
- updateLaterTimer(this, this._timers[0], this._timers[0] - (+new Date()));
465
+ updateLaterTimer(this, this._timers[0], this._timers[0] - now());
463
466
  }
464
467
  }
465
468
  return true;
@@ -519,48 +522,48 @@ define("backburner",
519
522
  });
520
523
  }
521
524
 
522
- function updateLaterTimer(self, executeAt, wait) {
523
- var now = (+new Date());
524
- if (!self._laterTimer || executeAt < self._laterTimerExpiresAt || self._laterTimerExpiresAt < now) {
525
+ function updateLaterTimer(backburner, executeAt, wait) {
526
+ var n = now();
527
+ if (!backburner._laterTimer || executeAt < backburner._laterTimerExpiresAt || backburner._laterTimerExpiresAt < n) {
525
528
 
526
- if (self._laterTimer) {
529
+ if (backburner._laterTimer) {
527
530
  // Clear when:
528
531
  // - Already expired
529
532
  // - New timer is earlier
530
- clearTimeout(self._laterTimer);
533
+ clearTimeout(backburner._laterTimer);
531
534
 
532
- if (self._laterTimerExpiresAt < now) { // If timer was never triggered
535
+ if (backburner._laterTimerExpiresAt < n) { // If timer was never triggered
533
536
  // Calculate the left-over wait-time
534
- wait = Math.max(0, executeAt - now);
537
+ wait = Math.max(0, executeAt - n);
535
538
  }
536
539
  }
537
540
 
538
- self._laterTimer = global.setTimeout(function() {
539
- self._laterTimer = null;
540
- self._laterTimerExpiresAt = null;
541
- executeTimers(self);
541
+ backburner._laterTimer = global.setTimeout(function() {
542
+ backburner._laterTimer = null;
543
+ backburner._laterTimerExpiresAt = null;
544
+ executeTimers(backburner);
542
545
  }, wait);
543
546
 
544
- self._laterTimerExpiresAt = now + wait;
547
+ backburner._laterTimerExpiresAt = n + wait;
545
548
  }
546
549
  }
547
550
 
548
- function executeTimers(self) {
549
- var now = +new Date();
551
+ function executeTimers(backburner) {
552
+ var n = now();
550
553
  var fns, i, l;
551
554
 
552
- self.run(function() {
553
- i = searchTimer(now, self._timers);
555
+ backburner.run(function() {
556
+ i = searchTimer(n, backburner._timers);
554
557
 
555
- fns = self._timers.splice(0, i);
558
+ fns = backburner._timers.splice(0, i);
556
559
 
557
560
  for (i = 1, l = fns.length; i < l; i += 2) {
558
- self.schedule(self.options.defaultQueue, null, fns[i]);
561
+ backburner.schedule(backburner.options.defaultQueue, null, fns[i]);
559
562
  }
560
563
  });
561
564
 
562
- if (self._timers.length) {
563
- updateLaterTimer(self, self._timers[0], self._timers[0] - now);
565
+ if (backburner._timers.length) {
566
+ updateLaterTimer(backburner, backburner._timers[0], backburner._timers[0] - n);
564
567
  }
565
568
  }
566
569
 
@@ -713,7 +716,9 @@ define("backburner/deferred-action-queues",
713
716
  var queueIndex = 0;
714
717
  var numberOfQueueItems = queueItems.length;
715
718
 
716
- if (numberOfQueueItems && before) { before(); }
719
+ if (numberOfQueueItems && before) {
720
+ before();
721
+ }
717
722
 
718
723
  while (queueIndex < numberOfQueueItems) {
719
724
  target = queueItems[queueIndex];
@@ -721,10 +726,26 @@ define("backburner/deferred-action-queues",
721
726
  args = queueItems[queueIndex+2];
722
727
  errorRecordedForStack = queueItems[queueIndex+3]; // Debugging assistance
723
728
 
724
- if (isString(method)) { method = target[method]; }
729
+ //
730
+
731
+ if (isString(method)) {
732
+ method = target[method];
733
+ }
725
734
 
726
735
  // method could have been nullified / canceled during flush
727
736
  if (method) {
737
+ //
738
+ // ** Attention intrepid developer **
739
+ //
740
+ // To find out the stack of this task when it was scheduled onto
741
+ // the run loop, add the following to your app.js:
742
+ //
743
+ // Ember.run.backburner.DEBUG = true; // NOTE: This slows your app, don't leave it on in production.
744
+ //
745
+ // Once that is in place, when you are at a breakpoint and navigate
746
+ // here in the stack explorer, you can look at `errorRecordedForStack.stack`,
747
+ // which will be the captured stack when this job was scheduled.
748
+ //
728
749
  invoke(target, method, args, onError, errorRecordedForStack);
729
750
  }
730
751
 
@@ -732,7 +753,9 @@ define("backburner/deferred-action-queues",
732
753
  }
733
754
 
734
755
  queue._queueBeingFlushed = null;
735
- if (numberOfQueueItems && after) { after(); }
756
+ if (numberOfQueueItems && after) {
757
+ after();
758
+ }
736
759
 
737
760
  if ((priorQueueNameIndex = indexOfPriorQueueWithActions(this, queueNameIndex)) !== -1) {
738
761
  queueNameIndex = priorQueueNameIndex;
@@ -927,12 +950,28 @@ define("backburner/queue",
927
950
 
928
951
  cancel: function(actionToCancel) {
929
952
  var queue = this._queue, currentTarget, currentMethod, i, l;
953
+ var target = actionToCancel.target;
954
+ var method = actionToCancel.method;
955
+ var GUID_KEY = this.globalOptions.GUID_KEY;
956
+
957
+ if (GUID_KEY && this.targetQueues && target) {
958
+ var targetQueue = this.targetQueues[target[GUID_KEY]];
959
+
960
+ if (targetQueue) {
961
+ for (i = 0, l = targetQueue.length; i < l; i++) {
962
+ if (targetQueue[i] === method) {
963
+ targetQueue.splice(i, 1);
964
+ }
965
+ }
966
+ }
967
+ }
930
968
 
931
969
  for (i = 0, l = queue.length; i < l; i += 4) {
932
970
  currentTarget = queue[i];
933
971
  currentMethod = queue[i+1];
934
972
 
935
- if (currentTarget === actionToCancel.target && currentMethod === actionToCancel.method) {
973
+ if (currentTarget === target &&
974
+ currentMethod === method) {
936
975
  queue.splice(i, 4);
937
976
  return true;
938
977
  }
@@ -948,7 +987,8 @@ define("backburner/queue",
948
987
  currentTarget = queue[i];
949
988
  currentMethod = queue[i+1];
950
989
 
951
- if (currentTarget === actionToCancel.target && currentMethod === actionToCancel.method) {
990
+ if (currentTarget === target &&
991
+ currentMethod === method) {
952
992
  // don't mess with array during flush
953
993
  // just nullify the method
954
994
  queue[i+1] = null;
@@ -972,7 +1012,11 @@ define("backburner/utils",
972
1012
  }
973
1013
  }
974
1014
 
975
- __exports__.each = each;function isString(suspect) {
1015
+ __exports__.each = each;// Date.now is not available in browsers < IE9
1016
+ // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/now#Compatibility
1017
+ var now = Date.now || function() { return new Date().getTime(); };
1018
+ __exports__.now = now;
1019
+ function isString(suspect) {
976
1020
  return typeof suspect === 'string';
977
1021
  }
978
1022
 
@@ -2473,7 +2517,7 @@ define("ember-metal/binding",
2473
2517
  var set = __dependency3__.set;
2474
2518
  var trySet = __dependency3__.trySet;
2475
2519
  var guidFor = __dependency4__.guidFor;
2476
- var Map = __dependency5__.Map;
2520
+ var Map = __dependency5__["default"];
2477
2521
  var addObserver = __dependency6__.addObserver;
2478
2522
  var removeObserver = __dependency6__.removeObserver;
2479
2523
  var _suspendObserver = __dependency6__._suspendObserver;
@@ -2525,7 +2569,7 @@ define("ember-metal/binding",
2525
2569
  this._direction = 'fwd';
2526
2570
  this._from = fromPath;
2527
2571
  this._to = toPath;
2528
- this._directionMap = Map.create();
2572
+ this._directionMap = new Map();
2529
2573
  this._readyToSync = undefined;
2530
2574
  this._oneWay = undefined;
2531
2575
  }
@@ -2711,7 +2755,7 @@ define("ember-metal/binding",
2711
2755
  var fromPath = this._from;
2712
2756
  var toPath = this._to;
2713
2757
 
2714
- directionMap.remove(obj);
2758
+ directionMap.delete(obj);
2715
2759
 
2716
2760
  // if we're synchronizing from the remote object...
2717
2761
  if (direction === 'fwd') {
@@ -3006,7 +3050,7 @@ define("ember-metal/cache",
3006
3050
  value = this.set(key, this.func(key));
3007
3051
  } else if (value === UNDEFINED) {
3008
3052
  this.hits ++;
3009
- value = UNDEFINED;
3053
+ value = undefined;
3010
3054
  } else {
3011
3055
  this.hits ++;
3012
3056
  // nothing to translate
@@ -4725,7 +4769,7 @@ define("ember-metal/core",
4725
4769
 
4726
4770
  @class Ember
4727
4771
  @static
4728
- @version 1.8.0-beta.3
4772
+ @version 1.8.0-beta.4
4729
4773
  */
4730
4774
 
4731
4775
  if ('undefined' === typeof Ember) {
@@ -4752,10 +4796,10 @@ define("ember-metal/core",
4752
4796
  /**
4753
4797
  @property VERSION
4754
4798
  @type String
4755
- @default '1.8.0-beta.3'
4799
+ @default '1.8.0-beta.4'
4756
4800
  @static
4757
4801
  */
4758
- Ember.VERSION = '1.8.0-beta.3';
4802
+ Ember.VERSION = '1.8.0-beta.4';
4759
4803
 
4760
4804
  /**
4761
4805
  Standard environmental variables. You can define these in a global `EmberENV`
@@ -6541,8 +6585,8 @@ define("ember-metal/logger",
6541
6585
  };
6542
6586
  });
6543
6587
  define("ember-metal/map",
6544
- ["ember-metal/utils","ember-metal/array","ember-metal/platform","exports"],
6545
- function(__dependency1__, __dependency2__, __dependency3__, __exports__) {
6588
+ ["ember-metal/utils","ember-metal/array","ember-metal/platform","ember-metal/deprecate_property","exports"],
6589
+ function(__dependency1__, __dependency2__, __dependency3__, __dependency4__, __exports__) {
6546
6590
  "use strict";
6547
6591
  /**
6548
6592
  @module ember-metal
@@ -6559,9 +6603,7 @@ define("ember-metal/map",
6559
6603
 
6560
6604
  This implementation follows the current iteration of the ES6 proposal for
6561
6605
  maps (http://wiki.ecmascript.org/doku.php?id=harmony:simple_maps_and_sets),
6562
- with two exceptions. First, because we need our implementation to be pleasant
6563
- on older browsers, we do not use the `delete` name (using `remove` instead).
6564
- Second, as we do not have the luxury of in-VM iteration, we implement a
6606
+ with one exception: as we do not have the luxury of in-VM iteration, we implement a
6565
6607
  forEach method for iteration.
6566
6608
 
6567
6609
  Map is mocked out to look like an Ember object, so you can do
@@ -6571,6 +6613,7 @@ define("ember-metal/map",
6571
6613
  var guidFor = __dependency1__.guidFor;
6572
6614
  var indexOf = __dependency2__.indexOf;
6573
6615
  var create = __dependency3__.create;
6616
+ var deprecateProperty = __dependency4__.deprecateProperty;
6574
6617
 
6575
6618
  function missingFunction(fn) {
6576
6619
  throw new TypeError('' + Object.prototype.toString.call(fn) + " is not a function");
@@ -6616,6 +6659,7 @@ define("ember-metal/map",
6616
6659
 
6617
6660
  if (this instanceof OrderedSet) {
6618
6661
  this.clear();
6662
+ this._silenceRemoveDeprecation = false;
6619
6663
  } else {
6620
6664
  missingNew("OrderedSet");
6621
6665
  }
@@ -6674,7 +6718,9 @@ define("ember-metal/map",
6674
6718
  @return {Boolean}
6675
6719
  */
6676
6720
  remove: function(obj, _guid) {
6677
- return this['delete'](obj, _guid);
6721
+ Ember.deprecate('Calling `OrderedSet.prototype.remove` has been deprecated, please use `OrderedSet.prototype.delete` instead.', this._silenceRemoveDeprecation);
6722
+
6723
+ return this.delete(obj, _guid);
6678
6724
  },
6679
6725
 
6680
6726
  /**
@@ -6683,7 +6729,7 @@ define("ember-metal/map",
6683
6729
  @param _guid (optional and for internal use only)
6684
6730
  @return {Boolean}
6685
6731
  */
6686
- 'delete': function(obj, _guid) {
6732
+ delete: function(obj, _guid) {
6687
6733
  var guid = _guid || guidFor(obj);
6688
6734
  var presenceSet = this.presenceSet;
6689
6735
  var list = this.list;
@@ -6715,6 +6761,8 @@ define("ember-metal/map",
6715
6761
  @return {Boolean}
6716
6762
  */
6717
6763
  has: function(obj) {
6764
+ if (this.size === 0) { return false; }
6765
+
6718
6766
  var guid = guidFor(obj);
6719
6767
  var presenceSet = this.presenceSet;
6720
6768
 
@@ -6726,14 +6774,20 @@ define("ember-metal/map",
6726
6774
  @param {Function} fn
6727
6775
  @param self
6728
6776
  */
6729
- forEach: function(fn, thisArg) {
6777
+ forEach: function(fn /*, thisArg*/) {
6778
+ if (typeof fn !== 'function') {
6779
+ missingFunction(fn);
6780
+ }
6781
+
6782
+ if (this.size === 0) { return; }
6783
+
6730
6784
  var list = this.list;
6731
6785
  var length = arguments.length;
6732
6786
  var i;
6733
6787
 
6734
6788
  if (length === 2) {
6735
6789
  for (i = 0; i < list.length; i++) {
6736
- fn.call(thisArg, list[i]);
6790
+ fn.call(arguments[1], list[i]);
6737
6791
  }
6738
6792
  } else {
6739
6793
  for (i = 0; i < list.length; i++) {
@@ -6758,13 +6812,17 @@ define("ember-metal/map",
6758
6812
  var Constructor = this.constructor;
6759
6813
  var set = new Constructor();
6760
6814
 
6815
+ set._silenceRemoveDeprecation = this._silenceRemoveDeprecation;
6761
6816
  set.presenceSet = copyNull(this.presenceSet);
6762
6817
  set.list = this.toArray();
6818
+ set.size = this.size;
6763
6819
 
6764
6820
  return set;
6765
6821
  }
6766
6822
  };
6767
6823
 
6824
+ deprecateProperty(OrderedSet.prototype, 'length', 'size');
6825
+
6768
6826
  /**
6769
6827
  A Map stores values indexed by keys. Unlike JavaScript's
6770
6828
  default Objects, the keys of a Map can be any JavaScript
@@ -6788,6 +6846,7 @@ define("ember-metal/map",
6788
6846
  function Map() {
6789
6847
  if (this instanceof this.constructor) {
6790
6848
  this.keys = OrderedSet.create();
6849
+ this.keys._silenceRemoveDeprecation = true;
6791
6850
  this.values = Object.create(null);
6792
6851
  this.size = 0;
6793
6852
  } else {
@@ -6826,6 +6885,8 @@ define("ember-metal/map",
6826
6885
  @return {*} the value associated with the key, or `undefined`
6827
6886
  */
6828
6887
  get: function(key) {
6888
+ if (this.size === 0) { return; }
6889
+
6829
6890
  var values = this.values;
6830
6891
  var guid = guidFor(key);
6831
6892
 
@@ -6846,7 +6907,11 @@ define("ember-metal/map",
6846
6907
  var values = this.values;
6847
6908
  var guid = guidFor(key);
6848
6909
 
6849
- keys.add(key, guid);
6910
+ // ensure we don't store -0
6911
+ var k = key === -0 ? 0 : key;
6912
+
6913
+ keys.add(k, guid);
6914
+
6850
6915
  values[guid] = value;
6851
6916
 
6852
6917
  this.size = keys.size;
@@ -6863,7 +6928,9 @@ define("ember-metal/map",
6863
6928
  @return {Boolean} true if an item was removed, false otherwise
6864
6929
  */
6865
6930
  remove: function(key) {
6866
- return this['delete'](key);
6931
+ Ember.deprecate('Calling `Map.prototype.remove` has been deprecated, please use `Map.prototype.delete` instead.');
6932
+
6933
+ return this.delete(key);
6867
6934
  },
6868
6935
 
6869
6936
  /**
@@ -6873,7 +6940,8 @@ define("ember-metal/map",
6873
6940
  @param {*} key
6874
6941
  @return {Boolean} true if an item was removed, false otherwise
6875
6942
  */
6876
- 'delete': function(key) {
6943
+ delete: function(key) {
6944
+ if (this.size === 0) { return false; }
6877
6945
  // don't use ES6 "delete" because it will be annoying
6878
6946
  // to use in browsers that are not ES6 friendly;
6879
6947
  var keys = this.keys;
@@ -6881,7 +6949,7 @@ define("ember-metal/map",
6881
6949
  var guid = guidFor(key);
6882
6950
 
6883
6951
  if (values[guid]) {
6884
- keys.remove(key, guid);
6952
+ keys.delete(key, guid);
6885
6953
  delete values[guid];
6886
6954
  this.size = keys.size;
6887
6955
  return true;
@@ -6898,6 +6966,7 @@ define("ember-metal/map",
6898
6966
  @return {Boolean} true if the item was present, false otherwise
6899
6967
  */
6900
6968
  has: function(key) {
6969
+ if (this.size === 0) { return false; }
6901
6970
  return this.keys.has(key);
6902
6971
  },
6903
6972
 
@@ -6912,16 +6981,19 @@ define("ember-metal/map",
6912
6981
  @param {*} self if passed, the `this` value inside the
6913
6982
  callback. By default, `this` is the map.
6914
6983
  */
6915
- forEach: function(callback, thisArg) {
6984
+ forEach: function(callback /*, thisArg*/) {
6916
6985
  if (typeof callback !== 'function') {
6917
6986
  missingFunction(callback);
6918
6987
  }
6919
6988
 
6989
+ if (this.size === 0) { return; }
6990
+
6920
6991
  var length = arguments.length;
6921
6992
  var map = this;
6922
- var cb;
6993
+ var cb, thisArg;
6923
6994
 
6924
6995
  if (length === 2) {
6996
+ thisArg = arguments[1];
6925
6997
  cb = function(key) {
6926
6998
  callback.call(thisArg, map.get(key), key);
6927
6999
  };
@@ -6934,6 +7006,15 @@ define("ember-metal/map",
6934
7006
  this.keys.forEach(cb);
6935
7007
  },
6936
7008
 
7009
+ /**
7010
+ @method clear
7011
+ */
7012
+ clear: function() {
7013
+ this.keys.clear();
7014
+ this.values = Object.create(null);
7015
+ this.size = 0;
7016
+ },
7017
+
6937
7018
  /**
6938
7019
  @method copy
6939
7020
  @return {Ember.Map}
@@ -6943,6 +7024,8 @@ define("ember-metal/map",
6943
7024
  }
6944
7025
  };
6945
7026
 
7027
+ deprecateProperty(Map.prototype, 'length', 'size');
7028
+
6946
7029
  /**
6947
7030
  @class MapWithDefault
6948
7031
  @namespace Ember
@@ -7008,6 +7091,8 @@ define("ember-metal/map",
7008
7091
  }));
7009
7092
  };
7010
7093
 
7094
+ __exports__["default"] = Map;
7095
+
7011
7096
  __exports__.OrderedSet = OrderedSet;
7012
7097
  __exports__.Map = Map;
7013
7098
  __exports__.MapWithDefault = MapWithDefault;
@@ -9421,8 +9506,7 @@ define("ember-metal/run_loop",
9421
9506
  target at the time the method is invoked.
9422
9507
  @param {Object} [args*] Optional arguments to pass to the timeout.
9423
9508
  @param {Number} wait Number of milliseconds to wait.
9424
- @return {String} a string you can use to cancel the timer in
9425
- `run.cancel` later.
9509
+ @return {Object} Timer information for use in cancelling, see `run.cancel`.
9426
9510
  */
9427
9511
  run.later = function(target, method) {
9428
9512
  return apply(backburner, backburner.later, arguments);
@@ -9738,11 +9822,12 @@ define("ember-metal/run_loop",
9738
9822
  };
9739
9823
  });
9740
9824
  define("ember-metal/set_properties",
9741
- ["ember-metal/property_events","ember-metal/property_set","exports"],
9742
- function(__dependency1__, __dependency2__, __exports__) {
9825
+ ["ember-metal/property_events","ember-metal/property_set","ember-metal/keys","exports"],
9826
+ function(__dependency1__, __dependency2__, __dependency3__, __exports__) {
9743
9827
  "use strict";
9744
9828
  var changeProperties = __dependency1__.changeProperties;
9745
9829
  var set = __dependency2__.set;
9830
+ var keys = __dependency3__["default"];
9746
9831
 
9747
9832
  /**
9748
9833
  Set a list of properties on an object. These properties are set inside
@@ -9766,8 +9851,13 @@ define("ember-metal/set_properties",
9766
9851
  */
9767
9852
  __exports__["default"] = function setProperties(self, hash) {
9768
9853
  changeProperties(function() {
9769
- for(var prop in hash) {
9770
- if (hash.hasOwnProperty(prop)) { set(self, prop, hash[prop]); }
9854
+ var props = keys(hash);
9855
+ var prop;
9856
+
9857
+ for (var i = 0, l = props.length; i < l; i++) {
9858
+ prop = props[i];
9859
+
9860
+ set(self, prop, hash[prop]);
9771
9861
  }
9772
9862
  });
9773
9863
  return self;
@@ -21577,10 +21667,10 @@ define("rsvp.umd",
21577
21667
  };
21578
21668
 
21579
21669
  /* global define:true module:true window: true */
21580
- if (typeof define === 'function' && define.amd) {
21670
+ if (typeof define === 'function' && define['amd']) {
21581
21671
  define(function() { return RSVP; });
21582
- } else if (typeof module !== 'undefined' && module.exports) {
21583
- module.exports = RSVP;
21672
+ } else if (typeof module !== 'undefined' && module['exports']) {
21673
+ module['exports'] = RSVP;
21584
21674
  } else if (typeof this !== 'undefined') {
21585
21675
  this['RSVP'] = RSVP;
21586
21676
  }
@@ -21596,6 +21686,10 @@ define("rsvp/-internal",
21596
21686
 
21597
21687
  var config = __dependency3__.config;
21598
21688
 
21689
+ function withOwnPromise() {
21690
+ return new TypeError('A promises callback cannot return that same promise.');
21691
+ }
21692
+
21599
21693
  function noop() {}
21600
21694
 
21601
21695
  var PENDING = void 0;
@@ -21795,7 +21889,7 @@ define("rsvp/-internal",
21795
21889
  }
21796
21890
 
21797
21891
  if (promise === value) {
21798
- reject(promise, new TypeError('A promises callback cannot return that same promise.'));
21892
+ reject(promise, withOwnPromise());
21799
21893
  return;
21800
21894
  }
21801
21895
 
@@ -21956,7 +22050,8 @@ define("rsvp/asap",
21956
22050
  }
21957
22051
  }
21958
22052
 
21959
- var browserGlobal = (typeof window !== 'undefined') ? window : {};
22053
+ var browserWindow = (typeof window !== 'undefined') ? window : undefined
22054
+ var browserGlobal = browserWindow || {};
21960
22055
  var BrowserMutationObserver = browserGlobal.MutationObserver || browserGlobal.WebKitMutationObserver;
21961
22056
 
21962
22057
  // test for web worker but not in IE10
@@ -21971,6 +22066,13 @@ define("rsvp/asap",
21971
22066
  };
21972
22067
  }
21973
22068
 
22069
+ // vertx
22070
+ function useVertxTimer() {
22071
+ return function() {
22072
+ vertxNext(flush);
22073
+ };
22074
+ }
22075
+
21974
22076
  function useMutationObserver() {
21975
22077
  var iterations = 0;
21976
22078
  var observer = new BrowserMutationObserver(flush);
@@ -22012,8 +22114,17 @@ define("rsvp/asap",
22012
22114
  len = 0;
22013
22115
  }
22014
22116
 
22015
- var scheduleFlush;
22117
+ function attemptVertex() {
22118
+ try {
22119
+ var vertx = require('vertx');
22120
+ var vertxNext = vertx.runOnLoop || vertx.runOnContext;
22121
+ return useVertxTimer();
22122
+ } catch(e) {
22123
+ return useSetTimeout();
22124
+ }
22125
+ }
22016
22126
 
22127
+ var scheduleFlush;
22017
22128
  // Decide what async method to use to triggering processing of queued callbacks:
22018
22129
  if (typeof process !== 'undefined' && {}.toString.call(process) === '[object process]') {
22019
22130
  scheduleFlush = useNextTick();
@@ -22021,6 +22132,8 @@ define("rsvp/asap",
22021
22132
  scheduleFlush = useMutationObserver();
22022
22133
  } else if (isWorker) {
22023
22134
  scheduleFlush = useMessageChannel();
22135
+ } else if (browserWindow === undefined && typeof require === 'function') {
22136
+ scheduleFlush = attemptVertex();
22024
22137
  } else {
22025
22138
  scheduleFlush = useSetTimeout();
22026
22139
  }
@@ -22098,9 +22211,9 @@ define("rsvp/defer",
22098
22211
  __exports__["default"] = function defer(label) {
22099
22212
  var deferred = { };
22100
22213
 
22101
- deferred.promise = new Promise(function(resolve, reject) {
22102
- deferred.resolve = resolve;
22103
- deferred.reject = reject;
22214
+ deferred['promise'] = new Promise(function(resolve, reject) {
22215
+ deferred['resolve'] = resolve;
22216
+ deferred['reject'] = reject;
22104
22217
  }, label);
22105
22218
 
22106
22219
  return deferred;
@@ -22796,27 +22909,40 @@ define("rsvp/instrument",
22796
22909
 
22797
22910
  var queue = [];
22798
22911
 
22912
+ function scheduleFlush() {
22913
+ setTimeout(function() {
22914
+ var entry;
22915
+ for (var i = 0; i < queue.length; i++) {
22916
+ entry = queue[i];
22917
+
22918
+ var payload = entry.payload;
22919
+
22920
+ payload.guid = payload.key + payload.id;
22921
+ payload.childGuid = payload.key + payload.childId;
22922
+ if (payload.error) {
22923
+ payload.stack = payload.error.stack;
22924
+ }
22925
+
22926
+ config.trigger(entry.name, entry.payload);
22927
+ }
22928
+ queue.length = 0;
22929
+ }, 50);
22930
+ }
22931
+
22799
22932
  __exports__["default"] = function instrument(eventName, promise, child) {
22800
22933
  if (1 === queue.push({
22801
22934
  name: eventName,
22802
22935
  payload: {
22803
- guid: promise._guidKey + promise._id,
22936
+ key: promise._guidKey,
22937
+ id: promise._id,
22804
22938
  eventName: eventName,
22805
22939
  detail: promise._result,
22806
- childGuid: child && promise._guidKey + child._id,
22940
+ childId: child && child._id,
22807
22941
  label: promise._label,
22808
22942
  timeStamp: now(),
22809
- stack: new Error(promise._label).stack
22943
+ error: config["instrument-with-stack"] ? new Error(promise._label) : null
22810
22944
  }})) {
22811
-
22812
- setTimeout(function() {
22813
- var entry;
22814
- for (var i = 0; i < queue.length; i++) {
22815
- entry = queue[i];
22816
- config.trigger(entry.name, entry.payload);
22817
- }
22818
- queue.length = 0;
22819
- }, 50);
22945
+ scheduleFlush();
22820
22946
  }
22821
22947
  }
22822
22948
  });