ember-source 1.7.0.beta.5 → 1.7.0

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: 06a4d91eb9e239671ab30de164893a1127886cb7
4
- data.tar.gz: 48a889ea5bdbf9cbddf202beb73a3c3d3f41f815
3
+ metadata.gz: 0d6ff9f4eb4af89c66ed6a548d9628eb0802e036
4
+ data.tar.gz: 783d7d84bea121ce0e42385938b415a8c367c346
5
5
  SHA512:
6
- metadata.gz: 2d3962a46bdfe154268da29d12fdf5ef4fad0efda25a0585f0503fb35a79e75ac2c0b3057c86d186cc350c4267a24ae409556e7c77fe38fb80c5e770f776b549
7
- data.tar.gz: 18f0587d6406112a9556d6eb850fd5673992ce88b792c0d95e19d5849dfb4656b5c5fa3c5b220159525218be5a3db0da8c68465e5ad7009f27b449f192654947
6
+ metadata.gz: f95ef7b9d2869b857bdfd4d25af936c8ca2ea75060d2cfe3565f54c63679331d2663797127fc71939aeff79e523a105b3fff621a1c7a241e787689f95fc780db
7
+ data.tar.gz: 8f9a3338317a2b772e26fe7ee5421784a04ef589b85fed97535a1849d2d5d7c5355c9ecbb5ec216e3c49dc28a989111cb6419693ff8c470272770e70cd242f2d
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.7.0-beta.5
1
+ 1.7.0
@@ -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.7.0-beta.5
8
+ * @version 1.7.0
9
9
  */
10
10
 
11
11
  (function() {
@@ -868,6 +868,47 @@ define("backburner/utils",
868
868
  };
869
869
  });
870
870
 
871
+ define("calculateVersion",
872
+ [],
873
+ function() {
874
+ "use strict";
875
+ 'use strict';
876
+
877
+ var fs = require('fs');
878
+ var path = require('path');
879
+
880
+ module.exports = function () {
881
+ var packageVersion = require('../package.json').version;
882
+ var output = [packageVersion];
883
+ var gitPath = path.join(__dirname,'..','.git');
884
+ var headFilePath = path.join(gitPath, 'HEAD');
885
+
886
+ if (packageVersion.indexOf('+') > -1) {
887
+ try {
888
+ if (fs.existsSync(headFilePath)) {
889
+ var headFile = fs.readFileSync(headFilePath, {encoding: 'utf8'});
890
+ var branchName = headFile.split('/').slice(-1)[0].trim();
891
+ var refPath = headFile.split(' ')[1];
892
+ var branchSHA;
893
+
894
+ if (refPath) {
895
+ var branchPath = path.join(gitPath, refPath.trim());
896
+ branchSHA = fs.readFileSync(branchPath);
897
+ } else {
898
+ branchSHA = branchName;
899
+ }
900
+
901
+ output.push(branchSHA.slice(0,10));
902
+ }
903
+ } catch (err) {
904
+ console.error(err.stack);
905
+ }
906
+ return output.join('.');
907
+ } else {
908
+ return packageVersion;
909
+ }
910
+ };
911
+ });
871
912
  define("container",
872
913
  ["container/container","exports"],
873
914
  function(__dependency1__, __exports__) {
@@ -2700,7 +2741,7 @@ define("ember-metal/binding",
2700
2741
 
2701
2742
  Properties ending in a `Binding` suffix will be converted to `Ember.Binding`
2702
2743
  instances. The value of this property should be a string representing a path
2703
- to another object or a custom binding instanced created using Binding helpers
2744
+ to another object or a custom binding instance created using Binding helpers
2704
2745
  (see "One Way Bindings"):
2705
2746
 
2706
2747
  ```
@@ -2756,7 +2797,7 @@ define("ember-metal/binding",
2756
2797
  something like this on your binding:
2757
2798
 
2758
2799
  ```javascript
2759
- binding = Ember.Binding.from(this.valueBinding).to("value");
2800
+ binding = Ember.Binding.from("valueBinding").to("value");
2760
2801
  ```
2761
2802
 
2762
2803
  This creates a new binding instance based on the template you provide, and
@@ -2773,6 +2814,19 @@ define("ember-metal/binding",
2773
2814
  to side of the binding when inspecting relative paths. This allows the
2774
2815
  binding to be automatically inherited by subclassed objects as well.
2775
2816
 
2817
+ This also allows you to bind between objects using the paths you declare in
2818
+ `from` and `to`:
2819
+
2820
+ ```javascript
2821
+ // Example 1
2822
+ binding = Ember.Binding.from("App.someObject.value").to("value");
2823
+ binding.connect(this);
2824
+
2825
+ // Example 2
2826
+ binding = Ember.Binding.from("parentView.value").to("App.someObject.value");
2827
+ binding.connect(this);
2828
+ ```
2829
+
2776
2830
  Now that the binding is connected, it will observe both the from and to side
2777
2831
  and relay changes.
2778
2832
 
@@ -3351,7 +3405,7 @@ define("ember-metal/computed",
3351
3405
  @return {Ember.ComputedProperty} this
3352
3406
  @chainable
3353
3407
  */
3354
- ComputedPropertyPrototype["volatile"] = function() {
3408
+ ComputedPropertyPrototype.volatile = function() {
3355
3409
  return this.cacheable(false);
3356
3410
  };
3357
3411
 
@@ -3798,15 +3852,11 @@ define("ember-metal/computed_macros",
3798
3852
  A computed property that returns true if the value of the dependent
3799
3853
  property is NOT null, an empty string, empty array, or empty function.
3800
3854
 
3801
- Note: When using `computed.notEmpty` to watch an array make sure to
3802
- use the `array.[]` syntax so the computed can subscribe to transitions
3803
- from empty to non-empty states.
3804
-
3805
3855
  Example
3806
3856
 
3807
3857
  ```javascript
3808
3858
  var Hamster = Ember.Object.extend({
3809
- hasStuff: Ember.computed.notEmpty('backpack.[]')
3859
+ hasStuff: Ember.computed.notEmpty('backpack')
3810
3860
  });
3811
3861
 
3812
3862
  var hamster = Hamster.create({ backpack: ['Food', 'Sleeping Bag', 'Tent'] });
@@ -3822,9 +3872,11 @@ define("ember-metal/computed_macros",
3822
3872
  @return {Ember.ComputedProperty} computed property which returns true if
3823
3873
  original value for property is not empty.
3824
3874
  */
3825
- registerComputed('notEmpty', function(dependentKey) {
3826
- return !isEmpty(get(this, dependentKey));
3827
- });
3875
+ computed.notEmpty = function(dependentKey) {
3876
+ return computed(dependentKey + '.length', function () {
3877
+ return !isEmpty(get(this, dependentKey));
3878
+ });
3879
+ };
3828
3880
 
3829
3881
  /**
3830
3882
  A computed property that returns true if the value of the dependent
@@ -4405,6 +4457,7 @@ define("ember-metal/computed_macros",
4405
4457
  @param {String} dependentKey
4406
4458
  @return {Ember.ComputedProperty} computed property which creates an
4407
4459
  alias with a deprecation to the original value for property.
4460
+ @since 1.7.0
4408
4461
  */
4409
4462
  computed.deprecatingAlias = function(dependentKey) {
4410
4463
  return computed(dependentKey, function(key, value) {
@@ -4447,7 +4500,7 @@ define("ember-metal/core",
4447
4500
 
4448
4501
  @class Ember
4449
4502
  @static
4450
- @version 1.7.0-beta.5
4503
+ @version 1.7.0
4451
4504
  */
4452
4505
 
4453
4506
  if ('undefined' === typeof Ember) {
@@ -4474,10 +4527,10 @@ define("ember-metal/core",
4474
4527
  /**
4475
4528
  @property VERSION
4476
4529
  @type String
4477
- @default '1.7.0-beta.5'
4530
+ @default '1.7.0'
4478
4531
  @static
4479
4532
  */
4480
- Ember.VERSION = '1.7.0-beta.5';
4533
+ Ember.VERSION = '1.7.0';
4481
4534
 
4482
4535
  /**
4483
4536
  Standard environmental variables. You can define these in a global `EmberENV`
@@ -4514,7 +4567,7 @@ define("ember-metal/core",
4514
4567
  MetamorphENV.DISABLE_RANGE_API = Ember.ENV.DISABLE_RANGE_API;
4515
4568
 
4516
4569
  /**
4517
- Hash of enabled Canary features. Add to before creating your application.
4570
+ Hash of enabled Canary features. Add to this before creating your application.
4518
4571
 
4519
4572
  You can also define `ENV.FEATURES` if you need to enable features flagged at runtime.
4520
4573
 
@@ -7798,6 +7851,7 @@ define("ember-metal/properties",
7798
7851
  @param {String} deprecatedKey The property to add (and print deprecation warnings upon accessing).
7799
7852
  @param {String} newKey The property that will be aliased.
7800
7853
  @private
7854
+ @since 1.7.0
7801
7855
  */
7802
7856
 
7803
7857
  function deprecateProperty(object, deprecatedKey, newKey) {
@@ -11926,12 +11980,6 @@ define("ember-runtime/computed/reduce_computed_macros",
11926
11980
  duplicated elements from the dependent arrays
11927
11981
  */
11928
11982
  function intersect() {
11929
- var getDependentKeyGuids = function (changeMeta) {
11930
- return map(changeMeta.property._dependentKeys, function (dependentKey) {
11931
- return guidFor(dependentKey);
11932
- });
11933
- };
11934
-
11935
11983
  var args = a_slice.call(arguments);
11936
11984
  args.push({
11937
11985
  initialize: function (array, changeMeta, instanceMeta) {
@@ -11939,11 +11987,10 @@ define("ember-runtime/computed/reduce_computed_macros",
11939
11987
  },
11940
11988
 
11941
11989
  addedItem: function(array, item, changeMeta, instanceMeta) {
11942
- var itemGuid = guidFor(item),
11943
- dependentGuids = getDependentKeyGuids(changeMeta),
11944
- dependentGuid = guidFor(changeMeta.arrayChanged),
11945
- numberOfDependentArrays = changeMeta.property._dependentKeys.length,
11946
- itemCounts = instanceMeta.itemCounts;
11990
+ var itemGuid = guidFor(item);
11991
+ var dependentGuid = guidFor(changeMeta.arrayChanged);
11992
+ var numberOfDependentArrays = changeMeta.property._dependentKeys.length;
11993
+ var itemCounts = instanceMeta.itemCounts;
11947
11994
 
11948
11995
  if (!itemCounts[itemGuid]) { itemCounts[itemGuid] = {}; }
11949
11996
  if (itemCounts[itemGuid][dependentGuid] === undefined) { itemCounts[itemGuid][dependentGuid] = 0; }
@@ -11956,14 +12003,16 @@ define("ember-runtime/computed/reduce_computed_macros",
11956
12003
  return array;
11957
12004
  },
11958
12005
  removedItem: function(array, item, changeMeta, instanceMeta) {
11959
- var itemGuid = guidFor(item),
11960
- dependentGuids = getDependentKeyGuids(changeMeta),
11961
- dependentGuid = guidFor(changeMeta.arrayChanged),
11962
- numberOfDependentArrays = changeMeta.property._dependentKeys.length,
11963
- numberOfArraysItemAppearsIn,
11964
- itemCounts = instanceMeta.itemCounts;
12006
+ var itemGuid = guidFor(item);
12007
+ var dependentGuid = guidFor(changeMeta.arrayChanged);
12008
+ var numberOfDependentArrays = changeMeta.property._dependentKeys.length;
12009
+ var numberOfArraysItemAppearsIn;
12010
+ var itemCounts = instanceMeta.itemCounts;
12011
+
12012
+ if (itemCounts[itemGuid][dependentGuid] === undefined) {
12013
+ itemCounts[itemGuid][dependentGuid] = 0;
12014
+ }
11965
12015
 
11966
- if (itemCounts[itemGuid][dependentGuid] === undefined) { itemCounts[itemGuid][dependentGuid] = 0; }
11967
12016
  if (--itemCounts[itemGuid][dependentGuid] === 0) {
11968
12017
  delete itemCounts[itemGuid][dependentGuid];
11969
12018
  numberOfArraysItemAppearsIn = keys(itemCounts[itemGuid]).length;
@@ -13103,7 +13152,7 @@ define("ember-runtime/keys",
13103
13152
  if (key.substring(0,2) === '__') return;
13104
13153
  if (key === '_super') return;
13105
13154
  if (EnumerableUtils.indexOf(array, key) >= 0) return;
13106
- if (typeof obj.hasOwnProperty === 'function' && !obj.hasOwnProperty(key)) return;
13155
+ if (!Object.prototype.hasOwnProperty.call(obj, key)) return;
13107
13156
 
13108
13157
  array.push(key);
13109
13158
  };
@@ -13912,7 +13961,18 @@ define("ember-runtime/mixins/controller",
13912
13961
 
13913
13962
  store: null,
13914
13963
 
13964
+ /**
13965
+ The controller's current model. When retrieving or modifying a controller's
13966
+ model, this property should be used instead of the `content` property.
13967
+
13968
+ @property model
13969
+ @public
13970
+ */
13915
13971
  model: null,
13972
+
13973
+ /**
13974
+ @private
13975
+ */
13916
13976
  content: computed.alias('model'),
13917
13977
 
13918
13978
  deprecatedSendHandles: function(actionName) {
@@ -13955,6 +14015,8 @@ define("ember-runtime/mixins/controller_content_model_alias_deprecation",
13955
14015
 
13956
14016
  @class ControllerContentModelAliasDeprecation
13957
14017
  @namespace Ember
14018
+ @private
14019
+ @since 1.7.0
13958
14020
  */
13959
14021
  __exports__["default"] = Mixin.create({
13960
14022
  /**
@@ -20563,226 +20625,370 @@ define("ember-runtime/system/tracked_array",
20563
20625
  this.rangeStart = rangeStart;
20564
20626
  }
20565
20627
  });
20566
- /**
20567
- @class RSVP
20568
- @module RSVP
20569
- */
20570
- define('rsvp/-internal', [
20571
- './utils',
20572
- './instrument',
20573
- './config',
20574
- 'exports'
20575
- ], function (__dependency1__, __dependency2__, __dependency3__, __exports__) {
20576
- 'use strict';
20628
+ define("rsvp",
20629
+ ["./rsvp/promise","./rsvp/events","./rsvp/node","./rsvp/all","./rsvp/all-settled","./rsvp/race","./rsvp/hash","./rsvp/hash-settled","./rsvp/rethrow","./rsvp/defer","./rsvp/config","./rsvp/map","./rsvp/resolve","./rsvp/reject","./rsvp/filter","./rsvp/asap","exports"],
20630
+ function(__dependency1__, __dependency2__, __dependency3__, __dependency4__, __dependency5__, __dependency6__, __dependency7__, __dependency8__, __dependency9__, __dependency10__, __dependency11__, __dependency12__, __dependency13__, __dependency14__, __dependency15__, __dependency16__, __exports__) {
20631
+ "use strict";
20632
+ var Promise = __dependency1__["default"];
20633
+ var EventTarget = __dependency2__["default"];
20634
+ var denodeify = __dependency3__["default"];
20635
+ var all = __dependency4__["default"];
20636
+ var allSettled = __dependency5__["default"];
20637
+ var race = __dependency6__["default"];
20638
+ var hash = __dependency7__["default"];
20639
+ var hashSettled = __dependency8__["default"];
20640
+ var rethrow = __dependency9__["default"];
20641
+ var defer = __dependency10__["default"];
20642
+ var config = __dependency11__.config;
20643
+ var configure = __dependency11__.configure;
20644
+ var map = __dependency12__["default"];
20645
+ var resolve = __dependency13__["default"];
20646
+ var reject = __dependency14__["default"];
20647
+ var filter = __dependency15__["default"];
20648
+ var asap = __dependency16__["default"];
20649
+
20650
+ config.async = asap; // default async is asap;
20651
+ var cast = resolve;
20652
+ function async(callback, arg) {
20653
+ config.async(callback, arg);
20654
+ }
20655
+
20656
+ function on() {
20657
+ config.on.apply(config, arguments);
20658
+ }
20659
+
20660
+ function off() {
20661
+ config.off.apply(config, arguments);
20662
+ }
20663
+
20664
+ // Set up instrumentation through `window.__PROMISE_INTRUMENTATION__`
20665
+ if (typeof window !== 'undefined' && typeof window['__PROMISE_INSTRUMENTATION__'] === 'object') {
20666
+ var callbacks = window['__PROMISE_INSTRUMENTATION__'];
20667
+ configure('instrument', true);
20668
+ for (var eventName in callbacks) {
20669
+ if (callbacks.hasOwnProperty(eventName)) {
20670
+ on(eventName, callbacks[eventName]);
20671
+ }
20672
+ }
20673
+ }
20674
+
20675
+ __exports__.cast = cast;
20676
+ __exports__.Promise = Promise;
20677
+ __exports__.EventTarget = EventTarget;
20678
+ __exports__.all = all;
20679
+ __exports__.allSettled = allSettled;
20680
+ __exports__.race = race;
20681
+ __exports__.hash = hash;
20682
+ __exports__.hashSettled = hashSettled;
20683
+ __exports__.rethrow = rethrow;
20684
+ __exports__.defer = defer;
20685
+ __exports__.denodeify = denodeify;
20686
+ __exports__.configure = configure;
20687
+ __exports__.on = on;
20688
+ __exports__.off = off;
20689
+ __exports__.resolve = resolve;
20690
+ __exports__.reject = reject;
20691
+ __exports__.async = async;
20692
+ __exports__.map = map;
20693
+ __exports__.filter = filter;
20694
+ });
20695
+ define("rsvp.umd",
20696
+ ["./rsvp"],
20697
+ function(__dependency1__) {
20698
+ "use strict";
20699
+ var Promise = __dependency1__.Promise;
20700
+ var allSettled = __dependency1__.allSettled;
20701
+ var hash = __dependency1__.hash;
20702
+ var hashSettled = __dependency1__.hashSettled;
20703
+ var denodeify = __dependency1__.denodeify;
20704
+ var on = __dependency1__.on;
20705
+ var off = __dependency1__.off;
20706
+ var map = __dependency1__.map;
20707
+ var filter = __dependency1__.filter;
20708
+ var resolve = __dependency1__.resolve;
20709
+ var reject = __dependency1__.reject;
20710
+ var rethrow = __dependency1__.rethrow;
20711
+ var all = __dependency1__.all;
20712
+ var defer = __dependency1__.defer;
20713
+ var EventTarget = __dependency1__.EventTarget;
20714
+ var configure = __dependency1__.configure;
20715
+ var race = __dependency1__.race;
20716
+ var async = __dependency1__.async;
20717
+
20718
+ var RSVP = {
20719
+ 'race': race,
20720
+ 'Promise': Promise,
20721
+ 'allSettled': allSettled,
20722
+ 'hash': hash,
20723
+ 'hashSettled': hashSettled,
20724
+ 'denodeify': denodeify,
20725
+ 'on': on,
20726
+ 'off': off,
20727
+ 'map': map,
20728
+ 'filter': filter,
20729
+ 'resolve': resolve,
20730
+ 'reject': reject,
20731
+ 'all': all,
20732
+ 'rethrow': rethrow,
20733
+ 'defer': defer,
20734
+ 'EventTarget': EventTarget,
20735
+ 'configure': configure,
20736
+ 'async': async
20737
+ };
20738
+
20739
+ /* global define:true module:true window: true */
20740
+ if (typeof define === 'function' && define.amd) {
20741
+ define(function() { return RSVP; });
20742
+ } else if (typeof module !== 'undefined' && module.exports) {
20743
+ module.exports = RSVP;
20744
+ } else if (typeof this !== 'undefined') {
20745
+ this['RSVP'] = RSVP;
20746
+ }
20747
+ });
20748
+ define("rsvp/-internal",
20749
+ ["./utils","./instrument","./config","exports"],
20750
+ function(__dependency1__, __dependency2__, __dependency3__, __exports__) {
20751
+ "use strict";
20577
20752
  var objectOrFunction = __dependency1__.objectOrFunction;
20578
20753
  var isFunction = __dependency1__.isFunction;
20579
- var now = __dependency1__.now;
20580
- var instrument = __dependency2__['default'];
20754
+
20755
+ var instrument = __dependency2__["default"];
20756
+
20581
20757
  var config = __dependency3__.config;
20582
- function noop() {
20583
- }
20584
- var PENDING = void 0;
20758
+
20759
+ function noop() {}
20760
+
20761
+ var PENDING = void 0;
20585
20762
  var FULFILLED = 1;
20586
- var REJECTED = 2;
20763
+ var REJECTED = 2;
20764
+
20587
20765
  var GET_THEN_ERROR = new ErrorObject();
20766
+
20588
20767
  function getThen(promise) {
20589
- try {
20590
- return promise.then;
20591
- } catch (error) {
20592
- GET_THEN_ERROR.error = error;
20593
- return GET_THEN_ERROR;
20594
- }
20768
+ try {
20769
+ return promise.then;
20770
+ } catch(error) {
20771
+ GET_THEN_ERROR.error = error;
20772
+ return GET_THEN_ERROR;
20773
+ }
20595
20774
  }
20775
+
20596
20776
  function tryThen(then, value, fulfillmentHandler, rejectionHandler) {
20597
- try {
20598
- then.call(value, fulfillmentHandler, rejectionHandler);
20599
- } catch (e) {
20600
- return e;
20601
- }
20777
+ try {
20778
+ then.call(value, fulfillmentHandler, rejectionHandler);
20779
+ } catch(e) {
20780
+ return e;
20781
+ }
20602
20782
  }
20783
+
20603
20784
  function handleForeignThenable(promise, thenable, then) {
20604
- config.async(function (promise$2) {
20605
- var sealed = false;
20606
- var error = tryThen(then, thenable, function (value) {
20607
- if (sealed) {
20608
- return;
20609
- }
20610
- sealed = true;
20611
- if (thenable !== value) {
20612
- resolve(promise$2, value);
20613
- } else {
20614
- fulfill(promise$2, value);
20615
- }
20616
- }, function (reason) {
20617
- if (sealed) {
20618
- return;
20619
- }
20620
- sealed = true;
20621
- reject(promise$2, reason);
20622
- }, 'Settle: ' + (promise$2._label || ' unknown promise'));
20623
- if (!sealed && error) {
20624
- sealed = true;
20625
- reject(promise$2, error);
20626
- }
20627
- }, promise);
20785
+ config.async(function(promise) {
20786
+ var sealed = false;
20787
+ var error = tryThen(then, thenable, function(value) {
20788
+ if (sealed) { return; }
20789
+ sealed = true;
20790
+ if (thenable !== value) {
20791
+ resolve(promise, value);
20792
+ } else {
20793
+ fulfill(promise, value);
20794
+ }
20795
+ }, function(reason) {
20796
+ if (sealed) { return; }
20797
+ sealed = true;
20798
+
20799
+ reject(promise, reason);
20800
+ }, 'Settle: ' + (promise._label || ' unknown promise'));
20801
+
20802
+ if (!sealed && error) {
20803
+ sealed = true;
20804
+ reject(promise, error);
20805
+ }
20806
+ }, promise);
20628
20807
  }
20808
+
20629
20809
  function handleOwnThenable(promise, thenable) {
20630
- promise._onerror = null;
20631
- if (thenable._state === FULFILLED) {
20632
- fulfill(promise, thenable._result);
20633
- } else if (promise._state === REJECTED) {
20634
- reject(promise, thenable._result);
20635
- } else {
20636
- subscribe(thenable, undefined, function (value) {
20637
- if (thenable !== value) {
20638
- resolve(promise, value);
20639
- } else {
20640
- fulfill(promise, value);
20641
- }
20642
- }, function (reason) {
20643
- reject(promise, reason);
20644
- });
20645
- }
20810
+ if (thenable._state === FULFILLED) {
20811
+ fulfill(promise, thenable._result);
20812
+ } else if (promise._state === REJECTED) {
20813
+ reject(promise, thenable._result);
20814
+ } else {
20815
+ subscribe(thenable, undefined, function(value) {
20816
+ if (thenable !== value) {
20817
+ resolve(promise, value);
20818
+ } else {
20819
+ fulfill(promise, value);
20820
+ }
20821
+ }, function(reason) {
20822
+ reject(promise, reason);
20823
+ });
20824
+ }
20646
20825
  }
20826
+
20647
20827
  function handleMaybeThenable(promise, maybeThenable) {
20648
- if (maybeThenable instanceof promise.constructor) {
20649
- handleOwnThenable(promise, maybeThenable);
20828
+ if (maybeThenable.constructor === promise.constructor) {
20829
+ handleOwnThenable(promise, maybeThenable);
20830
+ } else {
20831
+ var then = getThen(maybeThenable);
20832
+
20833
+ if (then === GET_THEN_ERROR) {
20834
+ reject(promise, GET_THEN_ERROR.error);
20835
+ } else if (then === undefined) {
20836
+ fulfill(promise, maybeThenable);
20837
+ } else if (isFunction(then)) {
20838
+ handleForeignThenable(promise, maybeThenable, then);
20650
20839
  } else {
20651
- var then = getThen(maybeThenable);
20652
- if (then === GET_THEN_ERROR) {
20653
- reject(promise, GET_THEN_ERROR.error);
20654
- } else if (then === undefined) {
20655
- fulfill(promise, maybeThenable);
20656
- } else if (isFunction(then)) {
20657
- handleForeignThenable(promise, maybeThenable, then);
20658
- } else {
20659
- fulfill(promise, maybeThenable);
20660
- }
20840
+ fulfill(promise, maybeThenable);
20661
20841
  }
20842
+ }
20662
20843
  }
20844
+
20663
20845
  function resolve(promise, value) {
20664
- if (promise === value) {
20665
- fulfill(promise, value);
20666
- } else if (objectOrFunction(value)) {
20667
- handleMaybeThenable(promise, value);
20668
- } else {
20669
- fulfill(promise, value);
20670
- }
20846
+ if (promise === value) {
20847
+ fulfill(promise, value);
20848
+ } else if (objectOrFunction(value)) {
20849
+ handleMaybeThenable(promise, value);
20850
+ } else {
20851
+ fulfill(promise, value);
20852
+ }
20671
20853
  }
20854
+
20672
20855
  function publishRejection(promise) {
20673
- if (promise._onerror) {
20674
- promise._onerror(promise._result);
20675
- }
20676
- publish(promise);
20856
+ if (promise._onerror) {
20857
+ promise._onerror(promise._result);
20858
+ }
20859
+
20860
+ publish(promise);
20677
20861
  }
20862
+
20678
20863
  function fulfill(promise, value) {
20679
- if (promise._state !== PENDING) {
20680
- return;
20681
- }
20682
- promise._result = value;
20683
- promise._state = FULFILLED;
20684
- if (promise._subscribers.length === 0) {
20685
- if (config.instrument) {
20686
- instrument('fulfilled', promise);
20687
- }
20688
- } else {
20689
- config.async(publish, promise);
20864
+ if (promise._state !== PENDING) { return; }
20865
+
20866
+ promise._result = value;
20867
+ promise._state = FULFILLED;
20868
+
20869
+ if (promise._subscribers.length === 0) {
20870
+ if (config.instrument) {
20871
+ instrument('fulfilled', promise);
20690
20872
  }
20873
+ } else {
20874
+ config.async(publish, promise);
20875
+ }
20691
20876
  }
20877
+
20692
20878
  function reject(promise, reason) {
20693
- if (promise._state !== PENDING) {
20694
- return;
20695
- }
20696
- promise._state = REJECTED;
20697
- promise._result = reason;
20698
- config.async(publishRejection, promise);
20879
+ if (promise._state !== PENDING) { return; }
20880
+ promise._state = REJECTED;
20881
+ promise._result = reason;
20882
+
20883
+ config.async(publishRejection, promise);
20699
20884
  }
20885
+
20700
20886
  function subscribe(parent, child, onFulfillment, onRejection) {
20701
- var subscribers = parent._subscribers;
20702
- var length = subscribers.length;
20703
- parent._onerror = null;
20704
- subscribers[length] = child;
20705
- subscribers[length + FULFILLED] = onFulfillment;
20706
- subscribers[length + REJECTED] = onRejection;
20707
- if (length === 0 && parent._state) {
20708
- config.async(publish, parent);
20709
- }
20887
+ var subscribers = parent._subscribers;
20888
+ var length = subscribers.length;
20889
+
20890
+ parent._onerror = null;
20891
+
20892
+ subscribers[length] = child;
20893
+ subscribers[length + FULFILLED] = onFulfillment;
20894
+ subscribers[length + REJECTED] = onRejection;
20895
+
20896
+ if (length === 0 && parent._state) {
20897
+ config.async(publish, parent);
20898
+ }
20710
20899
  }
20900
+
20711
20901
  function publish(promise) {
20712
- var subscribers = promise._subscribers;
20713
- var settled = promise._state;
20714
- if (config.instrument) {
20715
- instrument(settled === FULFILLED ? 'fulfilled' : 'rejected', promise);
20716
- }
20717
- if (subscribers.length === 0) {
20718
- return;
20719
- }
20720
- var child, callback, detail = promise._result;
20721
- for (var i = 0; i < subscribers.length; i += 3) {
20722
- child = subscribers[i];
20723
- callback = subscribers[i + settled];
20724
- if (child) {
20725
- invokeCallback(settled, child, callback, detail);
20726
- } else {
20727
- callback(detail);
20728
- }
20902
+ var subscribers = promise._subscribers;
20903
+ var settled = promise._state;
20904
+
20905
+ if (config.instrument) {
20906
+ instrument(settled === FULFILLED ? 'fulfilled' : 'rejected', promise);
20907
+ }
20908
+
20909
+ if (subscribers.length === 0) { return; }
20910
+
20911
+ var child, callback, detail = promise._result;
20912
+
20913
+ for (var i = 0; i < subscribers.length; i += 3) {
20914
+ child = subscribers[i];
20915
+ callback = subscribers[i + settled];
20916
+
20917
+ if (child) {
20918
+ invokeCallback(settled, child, callback, detail);
20919
+ } else {
20920
+ callback(detail);
20729
20921
  }
20730
- promise._subscribers.length = 0;
20922
+ }
20923
+
20924
+ promise._subscribers.length = 0;
20731
20925
  }
20926
+
20732
20927
  function ErrorObject() {
20733
- this.error = null;
20928
+ this.error = null;
20734
20929
  }
20930
+
20735
20931
  var TRY_CATCH_ERROR = new ErrorObject();
20932
+
20736
20933
  function tryCatch(callback, detail) {
20737
- try {
20738
- return callback(detail);
20739
- } catch (e) {
20740
- TRY_CATCH_ERROR.error = e;
20741
- return TRY_CATCH_ERROR;
20742
- }
20934
+ try {
20935
+ return callback(detail);
20936
+ } catch(e) {
20937
+ TRY_CATCH_ERROR.error = e;
20938
+ return TRY_CATCH_ERROR;
20939
+ }
20743
20940
  }
20941
+
20744
20942
  function invokeCallback(settled, promise, callback, detail) {
20745
- var hasCallback = isFunction(callback), value, error, succeeded, failed;
20746
- if (hasCallback) {
20747
- value = tryCatch(callback, detail);
20748
- if (value === TRY_CATCH_ERROR) {
20749
- failed = true;
20750
- error = value.error;
20751
- value = null;
20752
- } else {
20753
- succeeded = true;
20754
- }
20755
- if (promise === value) {
20756
- reject(promise, new TypeError('A promises callback cannot return that same promise.'));
20757
- return;
20758
- }
20943
+ var hasCallback = isFunction(callback),
20944
+ value, error, succeeded, failed;
20945
+
20946
+ if (hasCallback) {
20947
+ value = tryCatch(callback, detail);
20948
+
20949
+ if (value === TRY_CATCH_ERROR) {
20950
+ failed = true;
20951
+ error = value.error;
20952
+ value = null;
20759
20953
  } else {
20760
- value = detail;
20761
- succeeded = true;
20954
+ succeeded = true;
20762
20955
  }
20763
- if (promise._state !== PENDING) {
20764
- } // noop
20765
- else if (hasCallback && succeeded) {
20766
- resolve(promise, value);
20767
- } else if (failed) {
20768
- reject(promise, error);
20769
- } else if (settled === FULFILLED) {
20770
- fulfill(promise, value);
20771
- } else if (settled === REJECTED) {
20772
- reject(promise, value);
20956
+
20957
+ if (promise === value) {
20958
+ reject(promise, new TypeError('A promises callback cannot return that same promise.'));
20959
+ return;
20773
20960
  }
20961
+
20962
+ } else {
20963
+ value = detail;
20964
+ succeeded = true;
20965
+ }
20966
+
20967
+ if (promise._state !== PENDING) {
20968
+ // noop
20969
+ } else if (hasCallback && succeeded) {
20970
+ resolve(promise, value);
20971
+ } else if (failed) {
20972
+ reject(promise, error);
20973
+ } else if (settled === FULFILLED) {
20974
+ fulfill(promise, value);
20975
+ } else if (settled === REJECTED) {
20976
+ reject(promise, value);
20977
+ }
20774
20978
  }
20979
+
20775
20980
  function initializePromise(promise, resolver) {
20776
- try {
20777
- resolver(function resolvePromise(value) {
20778
- resolve(promise, value);
20779
- }, function rejectPromise(reason) {
20780
- reject(promise, reason);
20781
- });
20782
- } catch (e) {
20783
- reject(promise, e);
20784
- }
20981
+ try {
20982
+ resolver(function resolvePromise(value){
20983
+ resolve(promise, value);
20984
+ }, function rejectPromise(reason) {
20985
+ reject(promise, reason);
20986
+ });
20987
+ } catch(e) {
20988
+ reject(promise, e);
20989
+ }
20785
20990
  }
20991
+
20786
20992
  __exports__.noop = noop;
20787
20993
  __exports__.resolve = resolve;
20788
20994
  __exports__.reject = reject;
@@ -20794,27 +21000,28 @@ define('rsvp/-internal', [
20794
21000
  __exports__.invokeCallback = invokeCallback;
20795
21001
  __exports__.FULFILLED = FULFILLED;
20796
21002
  __exports__.REJECTED = REJECTED;
20797
- });
20798
- define('rsvp/all-settled', [
20799
- './enumerator',
20800
- './promise',
20801
- './utils',
20802
- 'exports'
20803
- ], function (__dependency1__, __dependency2__, __dependency3__, __exports__) {
20804
- 'use strict';
20805
- var Enumerator = __dependency1__['default'];
21003
+ __exports__.PENDING = PENDING;
21004
+ });
21005
+ define("rsvp/all-settled",
21006
+ ["./enumerator","./promise","./utils","exports"],
21007
+ function(__dependency1__, __dependency2__, __dependency3__, __exports__) {
21008
+ "use strict";
21009
+ var Enumerator = __dependency1__["default"];
20806
21010
  var makeSettledResult = __dependency1__.makeSettledResult;
20807
- var Promise = __dependency2__['default'];
21011
+ var Promise = __dependency2__["default"];
20808
21012
  var o_create = __dependency3__.o_create;
21013
+
20809
21014
  function AllSettled(Constructor, entries, label) {
20810
- this._superConstructor(Constructor, entries, false, label);
21015
+ this._superConstructor(Constructor, entries, false /* don't abort on reject */, label);
20811
21016
  }
21017
+
20812
21018
  AllSettled.prototype = o_create(Enumerator.prototype);
20813
21019
  AllSettled.prototype._superConstructor = Enumerator;
20814
21020
  AllSettled.prototype._makeResult = makeSettledResult;
20815
- AllSettled.prototype._validationError = function () {
20816
- return new Error('allSettled must be called with an array');
21021
+ AllSettled.prototype._validationError = function() {
21022
+ return new Error('allSettled must be called with an array');
20817
21023
  };
21024
+
20818
21025
  /**
20819
21026
  `RSVP.allSettled` is similar to `RSVP.all`, but instead of implementing
20820
21027
  a fail-fast method, it waits until all the promises have returned and
@@ -20849,8 +21056,8 @@ define('rsvp/all-settled', [
20849
21056
  // { state: 'rejected', reason: Error },
20850
21057
  // { state: 'rejected', reason: Error }
20851
21058
  // ]
20852
- // Note that for the second item, reason.message will be "2", and for the
20853
- // third item, reason.message will be "3".
21059
+ // Note that for the second item, reason.message will be '2', and for the
21060
+ // third item, reason.message will be '3'.
20854
21061
  }, function(error) {
20855
21062
  // Not run. (This block would only be called if allSettled had failed,
20856
21063
  // for instance if passed an incorrect argument type.)
@@ -20866,16 +21073,17 @@ define('rsvp/all-settled', [
20866
21073
  @return {Promise} promise that is fulfilled with an array of the settled
20867
21074
  states of the constituent promises.
20868
21075
  */
20869
- __exports__['default'] = function allSettled(entries, label) {
20870
- return new AllSettled(Promise, entries, label).promise;
20871
- };
20872
- });
20873
- define('rsvp/all', [
20874
- './promise',
20875
- 'exports'
20876
- ], function (__dependency1__, __exports__) {
20877
- 'use strict';
20878
- var Promise = __dependency1__['default'];
21076
+
21077
+ __exports__["default"] = function allSettled(entries, label) {
21078
+ return new AllSettled(Promise, entries, label).promise;
21079
+ }
21080
+ });
21081
+ define("rsvp/all",
21082
+ ["./promise","exports"],
21083
+ function(__dependency1__, __exports__) {
21084
+ "use strict";
21085
+ var Promise = __dependency1__["default"];
21086
+
20879
21087
  /**
20880
21088
  This is a convenient alias for `RSVP.Promise.all`.
20881
21089
 
@@ -20886,110 +21094,134 @@ define('rsvp/all', [
20886
21094
  @param {String} label An optional label. This is useful
20887
21095
  for tooling.
20888
21096
  */
20889
- __exports__['default'] = function all(array, label) {
20890
- return Promise.all(array, label);
20891
- };
20892
- });
20893
- define('rsvp/asap', ['exports'], function (__exports__) {
20894
- 'use strict';
20895
- var length = 0;
20896
- __exports__['default'] = function asap(callback, arg) {
20897
- queue[length] = callback;
20898
- queue[length + 1] = arg;
20899
- length += 2;
20900
- if (length === 2) {
20901
- // If length is 1, that means that we need to schedule an async flush.
20902
- // If additional callbacks are queued before the queue is flushed, they
20903
- // will be processed by this flush that we are scheduling.
20904
- scheduleFlush();
20905
- }
20906
- };
20907
- var browserGlobal = typeof window !== 'undefined' ? window : {};
21097
+ __exports__["default"] = function all(array, label) {
21098
+ return Promise.all(array, label);
21099
+ }
21100
+ });
21101
+ define("rsvp/asap",
21102
+ ["exports"],
21103
+ function(__exports__) {
21104
+ "use strict";
21105
+ var len = 0;
21106
+
21107
+ __exports__["default"] = function asap(callback, arg) {
21108
+ queue[len] = callback;
21109
+ queue[len + 1] = arg;
21110
+ len += 2;
21111
+ if (len === 2) {
21112
+ // If len is 1, that means that we need to schedule an async flush.
21113
+ // If additional callbacks are queued before the queue is flushed, they
21114
+ // will be processed by this flush that we are scheduling.
21115
+ scheduleFlush();
21116
+ }
21117
+ }
21118
+
21119
+ var browserGlobal = (typeof window !== 'undefined') ? window : {};
20908
21120
  var BrowserMutationObserver = browserGlobal.MutationObserver || browserGlobal.WebKitMutationObserver;
21121
+
20909
21122
  // test for web worker but not in IE10
20910
- var isWorker = typeof Uint8ClampedArray !== 'undefined' && typeof importScripts !== 'undefined' && typeof MessageChannel !== 'undefined';
21123
+ var isWorker = typeof Uint8ClampedArray !== 'undefined' &&
21124
+ typeof importScripts !== 'undefined' &&
21125
+ typeof MessageChannel !== 'undefined';
21126
+
20911
21127
  // node
20912
21128
  function useNextTick() {
20913
- return function () {
20914
- process.nextTick(flush);
20915
- };
21129
+ return function() {
21130
+ process.nextTick(flush);
21131
+ };
20916
21132
  }
21133
+
20917
21134
  function useMutationObserver() {
20918
- var iterations = 0;
20919
- var observer = new BrowserMutationObserver(flush);
20920
- var node = document.createTextNode('');
20921
- observer.observe(node, { characterData: true });
20922
- return function () {
20923
- node.data = iterations = ++iterations % 2;
20924
- };
21135
+ var iterations = 0;
21136
+ var observer = new BrowserMutationObserver(flush);
21137
+ var node = document.createTextNode('');
21138
+ observer.observe(node, { characterData: true });
21139
+
21140
+ return function() {
21141
+ node.data = (iterations = ++iterations % 2);
21142
+ };
20925
21143
  }
21144
+
20926
21145
  // web worker
20927
21146
  function useMessageChannel() {
20928
- var channel = new MessageChannel();
20929
- channel.port1.onmessage = flush;
20930
- return function () {
20931
- channel.port2.postMessage(0);
20932
- };
21147
+ var channel = new MessageChannel();
21148
+ channel.port1.onmessage = flush;
21149
+ return function () {
21150
+ channel.port2.postMessage(0);
21151
+ };
20933
21152
  }
21153
+
20934
21154
  function useSetTimeout() {
20935
- return function () {
20936
- setTimeout(flush, 1);
20937
- };
21155
+ return function() {
21156
+ setTimeout(flush, 1);
21157
+ };
20938
21158
  }
21159
+
20939
21160
  var queue = new Array(1000);
20940
21161
  function flush() {
20941
- for (var i = 0; i < length; i += 2) {
20942
- var callback = queue[i];
20943
- var arg = queue[i + 1];
20944
- callback(arg);
20945
- queue[i] = undefined;
20946
- queue[i + 1] = undefined;
20947
- }
20948
- length = 0;
21162
+ for (var i = 0; i < len; i+=2) {
21163
+ var callback = queue[i];
21164
+ var arg = queue[i+1];
21165
+
21166
+ callback(arg);
21167
+
21168
+ queue[i] = undefined;
21169
+ queue[i+1] = undefined;
21170
+ }
21171
+
21172
+ len = 0;
20949
21173
  }
21174
+
20950
21175
  var scheduleFlush;
21176
+
20951
21177
  // Decide what async method to use to triggering processing of queued callbacks:
20952
21178
  if (typeof process !== 'undefined' && {}.toString.call(process) === '[object process]') {
20953
- scheduleFlush = useNextTick();
21179
+ scheduleFlush = useNextTick();
20954
21180
  } else if (BrowserMutationObserver) {
20955
- scheduleFlush = useMutationObserver();
21181
+ scheduleFlush = useMutationObserver();
20956
21182
  } else if (isWorker) {
20957
- scheduleFlush = useMessageChannel();
21183
+ scheduleFlush = useMessageChannel();
20958
21184
  } else {
20959
- scheduleFlush = useSetTimeout();
21185
+ scheduleFlush = useSetTimeout();
20960
21186
  }
20961
- });
20962
- define('rsvp/config', [
20963
- './events',
20964
- 'exports'
20965
- ], function (__dependency1__, __exports__) {
20966
- 'use strict';
20967
- var EventTarget = __dependency1__['default'];
20968
- var config = { instrument: false };
21187
+ });
21188
+ define("rsvp/config",
21189
+ ["./events","exports"],
21190
+ function(__dependency1__, __exports__) {
21191
+ "use strict";
21192
+ var EventTarget = __dependency1__["default"];
21193
+
21194
+ var config = {
21195
+ instrument: false
21196
+ };
21197
+
20969
21198
  EventTarget.mixin(config);
21199
+
20970
21200
  function configure(name, value) {
20971
- if (name === 'onerror') {
20972
- // handle for legacy users that expect the actual
20973
- // error to be passed to their function added via
20974
- // `RSVP.configure('onerror', someFunctionHere);`
20975
- config.on('error', value);
20976
- return;
20977
- }
20978
- if (arguments.length === 2) {
20979
- config[name] = value;
20980
- } else {
20981
- return config[name];
20982
- }
21201
+ if (name === 'onerror') {
21202
+ // handle for legacy users that expect the actual
21203
+ // error to be passed to their function added via
21204
+ // `RSVP.configure('onerror', someFunctionHere);`
21205
+ config.on('error', value);
21206
+ return;
21207
+ }
21208
+
21209
+ if (arguments.length === 2) {
21210
+ config[name] = value;
21211
+ } else {
21212
+ return config[name];
21213
+ }
20983
21214
  }
21215
+
20984
21216
  __exports__.config = config;
20985
21217
  __exports__.configure = configure;
20986
- });
20987
- define('rsvp/defer', [
20988
- './promise',
20989
- 'exports'
20990
- ], function (__dependency1__, __exports__) {
20991
- 'use strict';
20992
- var Promise = __dependency1__['default'];
21218
+ });
21219
+ define("rsvp/defer",
21220
+ ["./promise","exports"],
21221
+ function(__dependency1__, __exports__) {
21222
+ "use strict";
21223
+ var Promise = __dependency1__["default"];
21224
+
20993
21225
  /**
20994
21226
  `RSVP.defer` returns an object similar to jQuery's `$.Deferred`.
20995
21227
  `RSVP.defer` should be used when porting over code reliant on `$.Deferred`'s
@@ -21022,23 +21254,25 @@ define('rsvp/defer', [
21022
21254
  Useful for tooling.
21023
21255
  @return {Object}
21024
21256
  */
21025
- __exports__['default'] = function defer(label) {
21026
- var deferred = {};
21027
- deferred.promise = new Promise(function (resolve, reject) {
21028
- deferred.resolve = resolve;
21029
- deferred.reject = reject;
21030
- }, label);
21031
- return deferred;
21032
- };
21033
- });
21034
- define('rsvp/enumerator', [
21035
- './utils',
21036
- './-internal',
21037
- 'exports'
21038
- ], function (__dependency1__, __dependency2__, __exports__) {
21039
- 'use strict';
21257
+
21258
+ __exports__["default"] = function defer(label) {
21259
+ var deferred = { };
21260
+
21261
+ deferred.promise = new Promise(function(resolve, reject) {
21262
+ deferred.resolve = resolve;
21263
+ deferred.reject = reject;
21264
+ }, label);
21265
+
21266
+ return deferred;
21267
+ }
21268
+ });
21269
+ define("rsvp/enumerator",
21270
+ ["./utils","./-internal","exports"],
21271
+ function(__dependency1__, __dependency2__, __exports__) {
21272
+ "use strict";
21040
21273
  var isArray = __dependency1__.isArray;
21041
21274
  var isMaybeThenable = __dependency1__.isMaybeThenable;
21275
+
21042
21276
  var noop = __dependency2__.noop;
21043
21277
  var reject = __dependency2__.reject;
21044
21278
  var fulfill = __dependency2__.fulfill;
@@ -21046,173 +21280,331 @@ define('rsvp/enumerator', [
21046
21280
  var FULFILLED = __dependency2__.FULFILLED;
21047
21281
  var REJECTED = __dependency2__.REJECTED;
21048
21282
  var PENDING = __dependency2__.PENDING;
21049
- var ABORT_ON_REJECTION = true;
21050
- __exports__.ABORT_ON_REJECTION = ABORT_ON_REJECTION;
21283
+
21051
21284
  function makeSettledResult(state, position, value) {
21052
- if (state === FULFILLED) {
21053
- return {
21054
- state: 'fulfilled',
21055
- value: value
21056
- };
21057
- } else {
21058
- return {
21059
- state: 'rejected',
21060
- reason: value
21061
- };
21062
- }
21063
- }
21064
- __exports__.makeSettledResult = makeSettledResult;
21065
- function Enumerator(Constructor, input, abortOnReject, label) {
21066
- this._instanceConstructor = Constructor;
21067
- this.promise = new Constructor(noop, label);
21068
- this._abortOnReject = abortOnReject;
21069
- if (this._validateInput(input)) {
21070
- this._input = input;
21071
- this.length = input.length;
21072
- this._remaining = input.length;
21073
- this._init();
21074
- if (this.length === 0) {
21075
- fulfill(this.promise, this._result);
21076
- } else {
21077
- this.length = this.length || 0;
21078
- this._enumerate();
21079
- if (this._remaining === 0) {
21080
- fulfill(this.promise, this._result);
21081
- }
21082
- }
21285
+ if (state === FULFILLED) {
21286
+ return {
21287
+ state: 'fulfilled',
21288
+ value: value
21289
+ };
21290
+ } else {
21291
+ return {
21292
+ state: 'rejected',
21293
+ reason: value
21294
+ };
21295
+ }
21296
+ }
21297
+
21298
+ __exports__.makeSettledResult = makeSettledResult;function Enumerator(Constructor, input, abortOnReject, label) {
21299
+ this._instanceConstructor = Constructor;
21300
+ this.promise = new Constructor(noop, label);
21301
+ this._abortOnReject = abortOnReject;
21302
+
21303
+ if (this._validateInput(input)) {
21304
+ this._input = input;
21305
+ this.length = input.length;
21306
+ this._remaining = input.length;
21307
+
21308
+ this._init();
21309
+
21310
+ if (this.length === 0) {
21311
+ fulfill(this.promise, this._result);
21083
21312
  } else {
21084
- reject(this.promise, this._validationError());
21313
+ this.length = this.length || 0;
21314
+ this._enumerate();
21315
+ if (this._remaining === 0) {
21316
+ fulfill(this.promise, this._result);
21317
+ }
21085
21318
  }
21319
+ } else {
21320
+ reject(this.promise, this._validationError());
21321
+ }
21086
21322
  }
21087
- Enumerator.prototype._validateInput = function (input) {
21088
- return isArray(input);
21323
+
21324
+ Enumerator.prototype._validateInput = function(input) {
21325
+ return isArray(input);
21089
21326
  };
21090
- Enumerator.prototype._validationError = function () {
21091
- return new Error('Array Methods must be provided an Array');
21327
+
21328
+ Enumerator.prototype._validationError = function() {
21329
+ return new Error('Array Methods must be provided an Array');
21092
21330
  };
21093
- Enumerator.prototype._init = function () {
21094
- this._result = new Array(this.length);
21331
+
21332
+ Enumerator.prototype._init = function() {
21333
+ this._result = new Array(this.length);
21095
21334
  };
21096
- __exports__['default'] = Enumerator;
21097
- Enumerator.prototype._enumerate = function () {
21098
- var length = this.length;
21099
- var promise = this.promise;
21100
- var input = this._input;
21101
- for (var i = 0; promise._state === PENDING && i < length; i++) {
21102
- this._eachEntry(input[i], i);
21103
- }
21335
+
21336
+ __exports__["default"] = Enumerator;
21337
+
21338
+ Enumerator.prototype._enumerate = function() {
21339
+ var length = this.length;
21340
+ var promise = this.promise;
21341
+ var input = this._input;
21342
+
21343
+ for (var i = 0; promise._state === PENDING && i < length; i++) {
21344
+ this._eachEntry(input[i], i);
21345
+ }
21104
21346
  };
21105
- Enumerator.prototype._eachEntry = function (entry, i) {
21106
- var c = this._instanceConstructor;
21107
- if (isMaybeThenable(entry)) {
21108
- if (entry.constructor === c && entry._state !== PENDING) {
21109
- entry._onerror = null;
21110
- this._settledAt(entry._state, i, entry._result);
21111
- } else {
21112
- this._willSettleAt(c.resolve(entry), i);
21113
- }
21347
+
21348
+ Enumerator.prototype._eachEntry = function(entry, i) {
21349
+ var c = this._instanceConstructor;
21350
+ if (isMaybeThenable(entry)) {
21351
+ if (entry.constructor === c && entry._state !== PENDING) {
21352
+ entry._onerror = null;
21353
+ this._settledAt(entry._state, i, entry._result);
21114
21354
  } else {
21115
- this._remaining--;
21116
- this._result[i] = this._makeResult(FULFILLED, i, entry);
21355
+ this._willSettleAt(c.resolve(entry), i);
21117
21356
  }
21357
+ } else {
21358
+ this._remaining--;
21359
+ this._result[i] = this._makeResult(FULFILLED, i, entry);
21360
+ }
21118
21361
  };
21119
- Enumerator.prototype._settledAt = function (state, i, value) {
21120
- var promise = this.promise;
21121
- if (promise._state === PENDING) {
21122
- this._remaining--;
21123
- if (this._abortOnReject && state === REJECTED) {
21124
- reject(promise, value);
21125
- } else {
21126
- this._result[i] = this._makeResult(state, i, value);
21127
- }
21128
- }
21129
- if (this._remaining === 0) {
21130
- fulfill(promise, this._result);
21362
+
21363
+ Enumerator.prototype._settledAt = function(state, i, value) {
21364
+ var promise = this.promise;
21365
+
21366
+ if (promise._state === PENDING) {
21367
+ this._remaining--;
21368
+
21369
+ if (this._abortOnReject && state === REJECTED) {
21370
+ reject(promise, value);
21371
+ } else {
21372
+ this._result[i] = this._makeResult(state, i, value);
21131
21373
  }
21374
+ }
21375
+
21376
+ if (this._remaining === 0) {
21377
+ fulfill(promise, this._result);
21378
+ }
21132
21379
  };
21133
- Enumerator.prototype._makeResult = function (state, i, value) {
21134
- return value;
21380
+
21381
+ Enumerator.prototype._makeResult = function(state, i, value) {
21382
+ return value;
21135
21383
  };
21136
- Enumerator.prototype._willSettleAt = function (promise, i) {
21137
- var enumerator = this;
21138
- subscribe(promise, undefined, function (value) {
21139
- enumerator._settledAt(FULFILLED, i, value);
21140
- }, function (reason) {
21141
- enumerator._settledAt(REJECTED, i, reason);
21142
- });
21384
+
21385
+ Enumerator.prototype._willSettleAt = function(promise, i) {
21386
+ var enumerator = this;
21387
+
21388
+ subscribe(promise, undefined, function(value) {
21389
+ enumerator._settledAt(FULFILLED, i, value);
21390
+ }, function(reason) {
21391
+ enumerator._settledAt(REJECTED, i, reason);
21392
+ });
21143
21393
  };
21144
- });
21145
- define('rsvp/events', ['exports'], function (__exports__) {
21146
- 'use strict';
21394
+ });
21395
+ define("rsvp/events",
21396
+ ["exports"],
21397
+ function(__exports__) {
21398
+ "use strict";
21147
21399
  function indexOf(callbacks, callback) {
21148
- for (var i = 0, l = callbacks.length; i < l; i++) {
21149
- if (callbacks[i] === callback) {
21150
- return i;
21151
- }
21152
- }
21153
- return -1;
21400
+ for (var i=0, l=callbacks.length; i<l; i++) {
21401
+ if (callbacks[i] === callback) { return i; }
21402
+ }
21403
+
21404
+ return -1;
21154
21405
  }
21406
+
21155
21407
  function callbacksFor(object) {
21156
- var callbacks = object._promiseCallbacks;
21157
- if (!callbacks) {
21158
- callbacks = object._promiseCallbacks = {};
21159
- }
21160
- return callbacks;
21408
+ var callbacks = object._promiseCallbacks;
21409
+
21410
+ if (!callbacks) {
21411
+ callbacks = object._promiseCallbacks = {};
21412
+ }
21413
+
21414
+ return callbacks;
21161
21415
  }
21416
+
21162
21417
  /**
21163
21418
  @class RSVP.EventTarget
21164
21419
  */
21165
- __exports__['default'] = {
21166
- mixin: function (object) {
21167
- object.on = this.on;
21168
- object.off = this.off;
21169
- object.trigger = this.trigger;
21170
- object._promiseCallbacks = undefined;
21171
- return object;
21172
- },
21173
- on: function (eventName, callback) {
21174
- var allCallbacks = callbacksFor(this), callbacks;
21175
- callbacks = allCallbacks[eventName];
21176
- if (!callbacks) {
21177
- callbacks = allCallbacks[eventName] = [];
21178
- }
21179
- if (indexOf(callbacks, callback) === -1) {
21180
- callbacks.push(callback);
21181
- }
21182
- },
21183
- off: function (eventName, callback) {
21184
- var allCallbacks = callbacksFor(this), callbacks, index;
21185
- if (!callback) {
21186
- allCallbacks[eventName] = [];
21187
- return;
21188
- }
21189
- callbacks = allCallbacks[eventName];
21190
- index = indexOf(callbacks, callback);
21191
- if (index !== -1) {
21192
- callbacks.splice(index, 1);
21193
- }
21194
- },
21195
- trigger: function (eventName, options) {
21196
- var allCallbacks = callbacksFor(this), callbacks, callbackTuple, callback, binding;
21197
- if (callbacks = allCallbacks[eventName]) {
21198
- // Don't cache the callbacks.length since it may grow
21199
- for (var i = 0; i < callbacks.length; i++) {
21200
- callback = callbacks[i];
21201
- callback(options);
21202
- }
21203
- }
21420
+ __exports__["default"] = {
21421
+
21422
+ /**
21423
+ `RSVP.EventTarget.mixin` extends an object with EventTarget methods. For
21424
+ Example:
21425
+
21426
+ ```javascript
21427
+ var object = {};
21428
+
21429
+ RSVP.EventTarget.mixin(object);
21430
+
21431
+ object.on('finished', function(event) {
21432
+ // handle event
21433
+ });
21434
+
21435
+ object.trigger('finished', { detail: value });
21436
+ ```
21437
+
21438
+ `EventTarget.mixin` also works with prototypes:
21439
+
21440
+ ```javascript
21441
+ var Person = function() {};
21442
+ RSVP.EventTarget.mixin(Person.prototype);
21443
+
21444
+ var yehuda = new Person();
21445
+ var tom = new Person();
21446
+
21447
+ yehuda.on('poke', function(event) {
21448
+ console.log('Yehuda says OW');
21449
+ });
21450
+
21451
+ tom.on('poke', function(event) {
21452
+ console.log('Tom says OW');
21453
+ });
21454
+
21455
+ yehuda.trigger('poke');
21456
+ tom.trigger('poke');
21457
+ ```
21458
+
21459
+ @method mixin
21460
+ @for RSVP.EventTarget
21461
+ @private
21462
+ @param {Object} object object to extend with EventTarget methods
21463
+ */
21464
+ mixin: function(object) {
21465
+ object.on = this.on;
21466
+ object.off = this.off;
21467
+ object.trigger = this.trigger;
21468
+ object._promiseCallbacks = undefined;
21469
+ return object;
21470
+ },
21471
+
21472
+ /**
21473
+ Registers a callback to be executed when `eventName` is triggered
21474
+
21475
+ ```javascript
21476
+ object.on('event', function(eventInfo){
21477
+ // handle the event
21478
+ });
21479
+
21480
+ object.trigger('event');
21481
+ ```
21482
+
21483
+ @method on
21484
+ @for RSVP.EventTarget
21485
+ @private
21486
+ @param {String} eventName name of the event to listen for
21487
+ @param {Function} callback function to be called when the event is triggered.
21488
+ */
21489
+ on: function(eventName, callback) {
21490
+ var allCallbacks = callbacksFor(this), callbacks;
21491
+
21492
+ callbacks = allCallbacks[eventName];
21493
+
21494
+ if (!callbacks) {
21495
+ callbacks = allCallbacks[eventName] = [];
21496
+ }
21497
+
21498
+ if (indexOf(callbacks, callback) === -1) {
21499
+ callbacks.push(callback);
21500
+ }
21501
+ },
21502
+
21503
+ /**
21504
+ You can use `off` to stop firing a particular callback for an event:
21505
+
21506
+ ```javascript
21507
+ function doStuff() { // do stuff! }
21508
+ object.on('stuff', doStuff);
21509
+
21510
+ object.trigger('stuff'); // doStuff will be called
21511
+
21512
+ // Unregister ONLY the doStuff callback
21513
+ object.off('stuff', doStuff);
21514
+ object.trigger('stuff'); // doStuff will NOT be called
21515
+ ```
21516
+
21517
+ If you don't pass a `callback` argument to `off`, ALL callbacks for the
21518
+ event will not be executed when the event fires. For example:
21519
+
21520
+ ```javascript
21521
+ var callback1 = function(){};
21522
+ var callback2 = function(){};
21523
+
21524
+ object.on('stuff', callback1);
21525
+ object.on('stuff', callback2);
21526
+
21527
+ object.trigger('stuff'); // callback1 and callback2 will be executed.
21528
+
21529
+ object.off('stuff');
21530
+ object.trigger('stuff'); // callback1 and callback2 will not be executed!
21531
+ ```
21532
+
21533
+ @method off
21534
+ @for RSVP.EventTarget
21535
+ @private
21536
+ @param {String} eventName event to stop listening to
21537
+ @param {Function} callback optional argument. If given, only the function
21538
+ given will be removed from the event's callback queue. If no `callback`
21539
+ argument is given, all callbacks will be removed from the event's callback
21540
+ queue.
21541
+ */
21542
+ off: function(eventName, callback) {
21543
+ var allCallbacks = callbacksFor(this), callbacks, index;
21544
+
21545
+ if (!callback) {
21546
+ allCallbacks[eventName] = [];
21547
+ return;
21548
+ }
21549
+
21550
+ callbacks = allCallbacks[eventName];
21551
+
21552
+ index = indexOf(callbacks, callback);
21553
+
21554
+ if (index !== -1) { callbacks.splice(index, 1); }
21555
+ },
21556
+
21557
+ /**
21558
+ Use `trigger` to fire custom events. For example:
21559
+
21560
+ ```javascript
21561
+ object.on('foo', function(){
21562
+ console.log('foo event happened!');
21563
+ });
21564
+ object.trigger('foo');
21565
+ // 'foo event happened!' logged to the console
21566
+ ```
21567
+
21568
+ You can also pass a value as a second argument to `trigger` that will be
21569
+ passed as an argument to all event listeners for the event:
21570
+
21571
+ ```javascript
21572
+ object.on('foo', function(value){
21573
+ console.log(value.name);
21574
+ });
21575
+
21576
+ object.trigger('foo', { name: 'bar' });
21577
+ // 'bar' logged to the console
21578
+ ```
21579
+
21580
+ @method trigger
21581
+ @for RSVP.EventTarget
21582
+ @private
21583
+ @param {String} eventName name of the event to be triggered
21584
+ @param {Any} options optional value to be passed to any event handlers for
21585
+ the given `eventName`
21586
+ */
21587
+ trigger: function(eventName, options) {
21588
+ var allCallbacks = callbacksFor(this), callbacks, callback;
21589
+
21590
+ if (callbacks = allCallbacks[eventName]) {
21591
+ // Don't cache the callbacks.length since it may grow
21592
+ for (var i=0; i<callbacks.length; i++) {
21593
+ callback = callbacks[i];
21594
+
21595
+ callback(options);
21596
+ }
21204
21597
  }
21598
+ }
21205
21599
  };
21206
- });
21207
- define('rsvp/filter', [
21208
- './promise',
21209
- './utils',
21210
- 'exports'
21211
- ], function (__dependency1__, __dependency2__, __exports__) {
21212
- 'use strict';
21213
- var Promise = __dependency1__['default'];
21600
+ });
21601
+ define("rsvp/filter",
21602
+ ["./promise","./utils","exports"],
21603
+ function(__dependency1__, __dependency2__, __exports__) {
21604
+ "use strict";
21605
+ var Promise = __dependency1__["default"];
21214
21606
  var isFunction = __dependency2__.isFunction;
21215
- var isMaybeThenable = __dependency2__.isMaybeThenable;
21607
+
21216
21608
  /**
21217
21609
  `RSVP.filter` is similar to JavaScript's native `filter` method, except that it
21218
21610
  waits for all promises to become fulfilled before running the `filterFn` on
@@ -21245,8 +21637,8 @@ define('rsvp/filter', [
21245
21637
 
21246
21638
  ```javascript
21247
21639
  var promise1 = RSVP.resolve(1);
21248
- var promise2 = RSVP.reject(new Error("2"));
21249
- var promise3 = RSVP.reject(new Error("3"));
21640
+ var promise2 = RSVP.reject(new Error('2'));
21641
+ var promise3 = RSVP.reject(new Error('3'));
21250
21642
  var promises = [ promise1, promise2, promise3 ];
21251
21643
 
21252
21644
  var filterFn = function(item){
@@ -21256,7 +21648,7 @@ define('rsvp/filter', [
21256
21648
  RSVP.filter(promises, filterFn).then(function(array){
21257
21649
  // Code here never runs because there are rejected promises!
21258
21650
  }, function(reason) {
21259
- // reason.message === "2"
21651
+ // reason.message === '2'
21260
21652
  });
21261
21653
  ```
21262
21654
 
@@ -21298,53 +21690,59 @@ define('rsvp/filter', [
21298
21690
  tooling.
21299
21691
  @return {Promise}
21300
21692
  */
21301
- __exports__['default'] = function filter(promises, filterFn, label) {
21302
- return Promise.all(promises, label).then(function (values) {
21303
- if (!isFunction(filterFn)) {
21304
- throw new TypeError('You must pass a function as filter\'s second argument.');
21305
- }
21306
- var length = values.length;
21307
- var filtered = new Array(length);
21308
- for (var i = 0; i < length; i++) {
21309
- filtered[i] = filterFn(values[i]);
21693
+ __exports__["default"] = function filter(promises, filterFn, label) {
21694
+ return Promise.all(promises, label).then(function(values) {
21695
+ if (!isFunction(filterFn)) {
21696
+ throw new TypeError("You must pass a function as filter's second argument.");
21697
+ }
21698
+
21699
+ var length = values.length;
21700
+ var filtered = new Array(length);
21701
+
21702
+ for (var i = 0; i < length; i++) {
21703
+ filtered[i] = filterFn(values[i]);
21704
+ }
21705
+
21706
+ return Promise.all(filtered, label).then(function(filtered) {
21707
+ var results = new Array(length);
21708
+ var newLength = 0;
21709
+
21710
+ for (var i = 0; i < length; i++) {
21711
+ if (filtered[i]) {
21712
+ results[newLength] = values[i];
21713
+ newLength++;
21310
21714
  }
21311
- return Promise.all(filtered, label).then(function (filtered$2) {
21312
- var results = new Array(length);
21313
- var newLength = 0;
21314
- for (var i$2 = 0; i$2 < length; i$2++) {
21315
- if (filtered$2[i$2]) {
21316
- results[newLength] = values[i$2];
21317
- newLength++;
21318
- }
21319
- }
21320
- results.length = newLength;
21321
- return results;
21322
- });
21715
+ }
21716
+
21717
+ results.length = newLength;
21718
+
21719
+ return results;
21323
21720
  });
21324
- };
21325
- });
21326
- define('rsvp/hash-settled', [
21327
- './promise',
21328
- './enumerator',
21329
- './promise-hash',
21330
- './utils',
21331
- 'exports'
21332
- ], function (__dependency1__, __dependency2__, __dependency3__, __dependency4__, __exports__) {
21333
- 'use strict';
21334
- var Promise = __dependency1__['default'];
21721
+ });
21722
+ }
21723
+ });
21724
+ define("rsvp/hash-settled",
21725
+ ["./promise","./enumerator","./promise-hash","./utils","exports"],
21726
+ function(__dependency1__, __dependency2__, __dependency3__, __dependency4__, __exports__) {
21727
+ "use strict";
21728
+ var Promise = __dependency1__["default"];
21335
21729
  var makeSettledResult = __dependency2__.makeSettledResult;
21336
- var PromiseHash = __dependency3__['default'];
21337
- var Enumerator = __dependency2__['default'];
21730
+ var PromiseHash = __dependency3__["default"];
21731
+ var Enumerator = __dependency2__["default"];
21338
21732
  var o_create = __dependency4__.o_create;
21733
+
21339
21734
  function HashSettled(Constructor, object, label) {
21340
- this._superConstructor(Constructor, object, false, label);
21735
+ this._superConstructor(Constructor, object, false, label);
21341
21736
  }
21737
+
21342
21738
  HashSettled.prototype = o_create(PromiseHash.prototype);
21343
21739
  HashSettled.prototype._superConstructor = Enumerator;
21344
21740
  HashSettled.prototype._makeResult = makeSettledResult;
21345
- HashSettled.prototype._validationError = function () {
21346
- return new Error('hashSettled must be called with an object');
21741
+
21742
+ HashSettled.prototype._validationError = function() {
21743
+ return new Error('hashSettled must be called with an object');
21347
21744
  };
21745
+
21348
21746
  /**
21349
21747
  `RSVP.hashSettled` is similar to `RSVP.allSettled`, but takes an object
21350
21748
  instead of an array for its `promises` argument.
@@ -21393,7 +21791,7 @@ define('rsvp/hash-settled', [
21393
21791
  var promises = {
21394
21792
  myPromise: RSVP.Promise.resolve(1),
21395
21793
  rejectedPromise: RSVP.Promise.reject(new Error('rejection')),
21396
- anotherRejectedPromise: RSVP.Promise.reject(new Error('more rejection'))
21794
+ anotherRejectedPromise: RSVP.Promise.reject(new Error('more rejection')),
21397
21795
  };
21398
21796
 
21399
21797
  RSVP.hashSettled(promises).then(function(hash){
@@ -21446,20 +21844,17 @@ define('rsvp/hash-settled', [
21446
21844
  have been settled.
21447
21845
  @static
21448
21846
  */
21449
- __exports__['default'] = function hashSettled(object, label) {
21450
- return new HashSettled(Promise, object, label).promise;
21451
- };
21452
- });
21453
- define('rsvp/hash', [
21454
- './promise',
21455
- './promise-hash',
21456
- './enumerator',
21457
- 'exports'
21458
- ], function (__dependency1__, __dependency2__, __dependency3__, __exports__) {
21459
- 'use strict';
21460
- var Promise = __dependency1__['default'];
21461
- var PromiseHash = __dependency2__['default'];
21462
- var ABORT_ON_REJECTION = __dependency3__.ABORT_ON_REJECTION;
21847
+ __exports__["default"] = function hashSettled(object, label) {
21848
+ return new HashSettled(Promise, object, label).promise;
21849
+ }
21850
+ });
21851
+ define("rsvp/hash",
21852
+ ["./promise","./promise-hash","exports"],
21853
+ function(__dependency1__, __dependency2__, __exports__) {
21854
+ "use strict";
21855
+ var Promise = __dependency1__["default"];
21856
+ var PromiseHash = __dependency2__["default"];
21857
+
21463
21858
  /**
21464
21859
  `RSVP.hash` is similar to `RSVP.all`, but takes an object instead of an array
21465
21860
  for its `promises` argument.
@@ -21499,14 +21894,14 @@ define('rsvp/hash', [
21499
21894
  ```javascript
21500
21895
  var promises = {
21501
21896
  myPromise: RSVP.resolve(1),
21502
- rejectedPromise: RSVP.reject(new Error("rejectedPromise")),
21503
- anotherRejectedPromise: RSVP.reject(new Error("anotherRejectedPromise"))
21897
+ rejectedPromise: RSVP.reject(new Error('rejectedPromise')),
21898
+ anotherRejectedPromise: RSVP.reject(new Error('anotherRejectedPromise')),
21504
21899
  };
21505
21900
 
21506
21901
  RSVP.hash(promises).then(function(hash){
21507
21902
  // Code here never runs because there are rejected promises!
21508
21903
  }, function(reason) {
21509
- // reason.message === "rejectedPromise"
21904
+ // reason.message === 'rejectedPromise'
21510
21905
  });
21511
21906
  ```
21512
21907
 
@@ -21518,11 +21913,11 @@ define('rsvp/hash', [
21518
21913
 
21519
21914
  ```javascript
21520
21915
  function MyConstructor(){
21521
- this.example = RSVP.resolve("Example");
21916
+ this.example = RSVP.resolve('Example');
21522
21917
  }
21523
21918
 
21524
21919
  MyConstructor.prototype = {
21525
- protoProperty: RSVP.resolve("Proto Property")
21920
+ protoProperty: RSVP.resolve('Proto Property')
21526
21921
  };
21527
21922
 
21528
21923
  var myObject = new MyConstructor();
@@ -21531,7 +21926,7 @@ define('rsvp/hash', [
21531
21926
  // protoProperty will not be present, instead you will just have an
21532
21927
  // object that looks like:
21533
21928
  // {
21534
- // example: "Example"
21929
+ // example: 'Example'
21535
21930
  // }
21536
21931
  //
21537
21932
  // hash.hasOwnProperty('protoProperty'); // false
@@ -21548,52 +21943,50 @@ define('rsvp/hash', [
21548
21943
  @return {Promise} promise that is fulfilled when all properties of `promises`
21549
21944
  have been fulfilled, or rejected if any of them become rejected.
21550
21945
  */
21551
- __exports__['default'] = function hash(object, label) {
21552
- return new PromiseHash(Promise, object, label).promise;
21553
- };
21554
- });
21555
- define('rsvp/instrument', [
21556
- './config',
21557
- './utils',
21558
- 'exports'
21559
- ], function (__dependency1__, __dependency2__, __exports__) {
21560
- 'use strict';
21946
+ __exports__["default"] = function hash(object, label) {
21947
+ return new PromiseHash(Promise, object, label).promise;
21948
+ }
21949
+ });
21950
+ define("rsvp/instrument",
21951
+ ["./config","./utils","exports"],
21952
+ function(__dependency1__, __dependency2__, __exports__) {
21953
+ "use strict";
21561
21954
  var config = __dependency1__.config;
21562
21955
  var now = __dependency2__.now;
21956
+
21563
21957
  var queue = [];
21564
- __exports__['default'] = function instrument(eventName, promise, child) {
21565
- if (1 === queue.push({
21566
- name: eventName,
21567
- payload: {
21568
- guid: promise._guidKey + promise._id,
21569
- eventName: eventName,
21570
- detail: promise._result,
21571
- childGuid: child && promise._guidKey + child._id,
21572
- label: promise._label,
21573
- timeStamp: now(),
21574
- stack: new Error(promise._label).stack
21575
- }
21576
- })) {
21577
- setTimeout(function () {
21578
- var entry;
21579
- for (var i = 0; i < queue.length; i++) {
21580
- entry = queue[i];
21581
- config.trigger(entry.name, entry.payload);
21582
- }
21583
- queue.length = 0;
21958
+
21959
+ __exports__["default"] = function instrument(eventName, promise, child) {
21960
+ if (1 === queue.push({
21961
+ name: eventName,
21962
+ payload: {
21963
+ guid: promise._guidKey + promise._id,
21964
+ eventName: eventName,
21965
+ detail: promise._result,
21966
+ childGuid: child && promise._guidKey + child._id,
21967
+ label: promise._label,
21968
+ timeStamp: now(),
21969
+ stack: new Error(promise._label).stack
21970
+ }})) {
21971
+
21972
+ setTimeout(function() {
21973
+ var entry;
21974
+ for (var i = 0; i < queue.length; i++) {
21975
+ entry = queue[i];
21976
+ config.trigger(entry.name, entry.payload);
21977
+ }
21978
+ queue.length = 0;
21584
21979
  }, 50);
21585
- }
21586
- };
21587
- });
21588
- define('rsvp/map', [
21589
- './promise',
21590
- './utils',
21591
- 'exports'
21592
- ], function (__dependency1__, __dependency2__, __exports__) {
21593
- 'use strict';
21594
- var Promise = __dependency1__['default'];
21595
- var isArray = __dependency2__.isArray;
21980
+ }
21981
+ }
21982
+ });
21983
+ define("rsvp/map",
21984
+ ["./promise","./utils","exports"],
21985
+ function(__dependency1__, __dependency2__, __exports__) {
21986
+ "use strict";
21987
+ var Promise = __dependency1__["default"];
21596
21988
  var isFunction = __dependency2__.isFunction;
21989
+
21597
21990
  /**
21598
21991
  `RSVP.map` is similar to JavaScript's native `map` method, except that it
21599
21992
  waits for all promises to become fulfilled before running the `mapFn` on
@@ -21625,8 +22018,8 @@ define('rsvp/map', [
21625
22018
 
21626
22019
  ```javascript
21627
22020
  var promise1 = RSVP.resolve(1);
21628
- var promise2 = RSVP.reject(new Error("2"));
21629
- var promise3 = RSVP.reject(new Error("3"));
22021
+ var promise2 = RSVP.reject(new Error('2'));
22022
+ var promise3 = RSVP.reject(new Error('3'));
21630
22023
  var promises = [ promise1, promise2, promise3 ];
21631
22024
 
21632
22025
  var mapFn = function(item){
@@ -21636,7 +22029,7 @@ define('rsvp/map', [
21636
22029
  RSVP.map(promises, mapFn).then(function(array){
21637
22030
  // Code here never runs because there are rejected promises!
21638
22031
  }, function(reason) {
21639
- // reason.message === "2"
22032
+ // reason.message === '2'
21640
22033
  });
21641
22034
  ```
21642
22035
 
@@ -21672,31 +22065,99 @@ define('rsvp/map', [
21672
22065
  The promise will be rejected if any of the given `promises` become rejected.
21673
22066
  @static
21674
22067
  */
21675
- __exports__['default'] = function map(promises, mapFn, label) {
21676
- return Promise.all(promises, label).then(function (values) {
21677
- if (!isFunction(mapFn)) {
21678
- throw new TypeError('You must pass a function as map\'s second argument.');
21679
- }
21680
- var length = values.length;
21681
- var results = new Array(length);
21682
- for (var i = 0; i < length; i++) {
21683
- results[i] = mapFn(values[i]);
21684
- }
21685
- return Promise.all(results, label);
21686
- });
21687
- };
21688
- });
21689
- define('rsvp/node', [
21690
- './promise',
21691
- './utils',
21692
- 'exports'
21693
- ], function (__dependency1__, __dependency2__, __exports__) {
21694
- 'use strict';
21695
- /* global arraySlice */
21696
- var Promise = __dependency1__['default'];
21697
- var isArray = __dependency2__.isArray;
22068
+ __exports__["default"] = function map(promises, mapFn, label) {
22069
+ return Promise.all(promises, label).then(function(values) {
22070
+ if (!isFunction(mapFn)) {
22071
+ throw new TypeError("You must pass a function as map's second argument.");
22072
+ }
22073
+
22074
+ var length = values.length;
22075
+ var results = new Array(length);
22076
+
22077
+ for (var i = 0; i < length; i++) {
22078
+ results[i] = mapFn(values[i]);
22079
+ }
22080
+
22081
+ return Promise.all(results, label);
22082
+ });
22083
+ }
22084
+ });
22085
+ define("rsvp/node",
22086
+ ["./promise","./-internal","./utils","exports"],
22087
+ function(__dependency1__, __dependency2__, __dependency3__, __exports__) {
22088
+ "use strict";
22089
+ var Promise = __dependency1__["default"];
22090
+ var noop = __dependency2__.noop;
22091
+ var resolve = __dependency2__.resolve;
22092
+ var reject = __dependency2__.reject;
22093
+ var isArray = __dependency3__.isArray;
22094
+
22095
+ function Result() {
22096
+ this.value = undefined;
22097
+ }
22098
+
22099
+ var ERROR = new Result();
22100
+ var GET_THEN_ERROR = new Result();
22101
+
22102
+ function getThen(obj) {
22103
+ try {
22104
+ return obj.then;
22105
+ } catch(error) {
22106
+ ERROR.value= error;
22107
+ return ERROR;
22108
+ }
22109
+ }
22110
+
22111
+
22112
+ function tryApply(f, s, a) {
22113
+ try {
22114
+ f.apply(s, a);
22115
+ } catch(error) {
22116
+ ERROR.value = error;
22117
+ return ERROR;
22118
+ }
22119
+ }
22120
+
22121
+ function makeObject(_, argumentNames) {
22122
+ var obj = {};
22123
+ var name;
22124
+ var i;
22125
+ var length = _.length;
22126
+ var args = new Array(length);
22127
+
22128
+ for (var x = 0; x < length; x++) {
22129
+ args[x] = _[x];
22130
+ }
22131
+
22132
+ for (i = 0; i < argumentNames.length; i++) {
22133
+ name = argumentNames[i];
22134
+ obj[name] = args[i + 1];
22135
+ }
22136
+
22137
+ return obj;
22138
+ }
22139
+
22140
+ function arrayResult(_) {
22141
+ var length = _.length;
22142
+ var args = new Array(length - 1);
22143
+
22144
+ for (var i = 1; i < length; i++) {
22145
+ args[i - 1] = _[i];
22146
+ }
22147
+
22148
+ return args;
22149
+ }
22150
+
22151
+ function wrapThenable(then, promise) {
22152
+ return {
22153
+ then: function(onFulFillment, onRejection) {
22154
+ return then.call(promise, onFulFillment, onRejection);
22155
+ }
22156
+ };
22157
+ }
22158
+
21698
22159
  /**
21699
- `RSVP.denodeify` takes a "node-style" function and returns a function that
22160
+ `RSVP.denodeify` takes a 'node-style' function and returns a function that
21700
22161
  will return an `RSVP.Promise`. You can use `denodeify` in Node.js or the
21701
22162
  browser when you'd prefer to use promises over using callbacks. For example,
21702
22163
  `denodeify` transforms the following:
@@ -21809,10 +22270,10 @@ define('rsvp/node', [
21809
22270
  @method denodeify
21810
22271
  @static
21811
22272
  @for RSVP
21812
- @param {Function} nodeFunc a "node-style" function that takes a callback as
22273
+ @param {Function} nodeFunc a 'node-style' function that takes a callback as
21813
22274
  its last argument. The callback expects an error to be passed as its first
21814
22275
  argument (if an error occurred, otherwise null), and the value from the
21815
- operation as its second argument ("function(err, value){ }").
22276
+ operation as its second argument ('function(err, value){ }').
21816
22277
  @param {Boolean|Array} argumentNames An optional paramter that if set
21817
22278
  to `true` causes the promise to fulfill with the callback's success arguments
21818
22279
  as an array. This is useful if the node function has multiple success
@@ -21823,153 +22284,173 @@ define('rsvp/node', [
21823
22284
  `RSVP.Promise`
21824
22285
  @static
21825
22286
  */
21826
- __exports__['default'] = function denodeify(nodeFunc, argumentNames) {
21827
- var asArray = argumentNames === true;
21828
- var asHash = isArray(argumentNames);
21829
- function denodeifiedFunction() {
21830
- var length = arguments.length;
21831
- var nodeArgs = new Array(length);
21832
- for (var i = 0; i < length; i++) {
21833
- nodeArgs[i] = arguments[i];
21834
- }
21835
- var thisArg;
21836
- if (!asArray && !asHash && argumentNames) {
21837
- if (typeof console === 'object') {
21838
- console.warn('Deprecation: RSVP.denodeify() doesn\'t allow setting the ' + '"this" binding anymore. Use yourFunction.bind(yourThis) instead.');
21839
- }
21840
- thisArg = argumentNames;
21841
- } else {
21842
- thisArg = this;
22287
+ __exports__["default"] = function denodeify(nodeFunc, options) {
22288
+ var fn = function() {
22289
+ var self = this;
22290
+ var l = arguments.length;
22291
+ var args = new Array(l + 1);
22292
+ var arg;
22293
+ var promiseInput = false;
22294
+
22295
+ for (var i = 0; i < l; ++i) {
22296
+ arg = arguments[i];
22297
+
22298
+ if (!promiseInput) {
22299
+ // TODO: clean this up
22300
+ promiseInput = needsPromiseInput(arg);
22301
+ if (promiseInput === GET_THEN_ERROR) {
22302
+ var p = new Promise(noop);
22303
+ reject(p, GET_THEN_ERROR.value);
22304
+ return p;
22305
+ } else if (promiseInput && promiseInput !== true) {
22306
+ arg = wrapThenable(promiseInput, arg);
21843
22307
  }
21844
- return Promise.all(nodeArgs).then(function (nodeArgs$2) {
21845
- return new Promise(resolver);
21846
- // sweet.js has a bug, this resolver can't be defined in the constructor
21847
- // or the arraySlice macro doesn't work
21848
- function resolver(resolve, reject) {
21849
- function callback() {
21850
- var length$2 = arguments.length;
21851
- var args = new Array(length$2);
21852
- for (var i$2 = 0; i$2 < length$2; i$2++) {
21853
- args[i$2] = arguments[i$2];
21854
- }
21855
- var error = args[0];
21856
- var value = args[1];
21857
- if (error) {
21858
- reject(error);
21859
- } else if (asArray) {
21860
- resolve(args.slice(1));
21861
- } else if (asHash) {
21862
- var obj = {};
21863
- var successArguments = args.slice(1);
21864
- var name;
21865
- var i$3;
21866
- for (i$3 = 0; i$3 < argumentNames.length; i$3++) {
21867
- name = argumentNames[i$3];
21868
- obj[name] = successArguments[i$3];
21869
- }
21870
- resolve(obj);
21871
- } else {
21872
- resolve(value);
21873
- }
21874
- }
21875
- nodeArgs$2.push(callback);
21876
- nodeFunc.apply(thisArg, nodeArgs$2);
21877
- }
21878
- });
22308
+ }
22309
+ args[i] = arg;
22310
+ }
22311
+
22312
+ var promise = new Promise(noop);
22313
+
22314
+ args[l] = function(err, val) {
22315
+ if (err)
22316
+ reject(promise, err);
22317
+ else if (options === undefined)
22318
+ resolve(promise, val);
22319
+ else if (options === true)
22320
+ resolve(promise, arrayResult(arguments));
22321
+ else if (isArray(options))
22322
+ resolve(promise, makeObject(arguments, options));
22323
+ else
22324
+ resolve(promise, val);
22325
+ };
22326
+
22327
+ if (promiseInput) {
22328
+ return handlePromiseInput(promise, args, nodeFunc, self);
22329
+ } else {
22330
+ return handleValueInput(promise, args, nodeFunc, self);
21879
22331
  }
21880
- denodeifiedFunction.__proto__ = nodeFunc;
21881
- return denodeifiedFunction;
21882
- };
21883
- });
21884
- define('rsvp/promise-hash', [
21885
- './enumerator',
21886
- './-internal',
21887
- './utils',
21888
- 'exports'
21889
- ], function (__dependency1__, __dependency2__, __dependency3__, __exports__) {
21890
- 'use strict';
21891
- var Enumerator = __dependency1__['default'];
22332
+ };
22333
+
22334
+ fn.__proto__ = nodeFunc;
22335
+
22336
+ return fn;
22337
+ }
22338
+
22339
+ function handleValueInput(promise, args, nodeFunc, self) {
22340
+ var result = tryApply(nodeFunc, self, args);
22341
+ if (result === ERROR) {
22342
+ reject(promise, result.value);
22343
+ }
22344
+ return promise;
22345
+ }
22346
+
22347
+ function handlePromiseInput(promise, args, nodeFunc, self){
22348
+ return Promise.all(args).then(function(args){
22349
+ var result = tryApply(nodeFunc, self, args);
22350
+ if (result === ERROR) {
22351
+ reject(promise, result.value);
22352
+ }
22353
+ return promise;
22354
+ });
22355
+ }
22356
+
22357
+ function needsPromiseInput(arg) {
22358
+ if (arg && typeof arg === 'object') {
22359
+ if (arg.constructor === Promise) {
22360
+ return true;
22361
+ } else {
22362
+ return getThen(arg);
22363
+ }
22364
+ } else {
22365
+ return false;
22366
+ }
22367
+ }
22368
+ });
22369
+ define("rsvp/promise-hash",
22370
+ ["./enumerator","./-internal","./utils","exports"],
22371
+ function(__dependency1__, __dependency2__, __dependency3__, __exports__) {
22372
+ "use strict";
22373
+ var Enumerator = __dependency1__["default"];
21892
22374
  var PENDING = __dependency2__.PENDING;
21893
- var FULFILLED = __dependency2__.FULFILLED;
21894
22375
  var o_create = __dependency3__.o_create;
22376
+
21895
22377
  function PromiseHash(Constructor, object, label) {
21896
- this._superConstructor(Constructor, object, true, label);
22378
+ this._superConstructor(Constructor, object, true, label);
21897
22379
  }
21898
- __exports__['default'] = PromiseHash;
22380
+
22381
+ __exports__["default"] = PromiseHash;
22382
+
21899
22383
  PromiseHash.prototype = o_create(Enumerator.prototype);
21900
22384
  PromiseHash.prototype._superConstructor = Enumerator;
21901
- PromiseHash.prototype._init = function () {
21902
- this._result = {};
22385
+ PromiseHash.prototype._init = function() {
22386
+ this._result = {};
21903
22387
  };
21904
- PromiseHash.prototype._validateInput = function (input) {
21905
- return input && typeof input === 'object';
22388
+
22389
+ PromiseHash.prototype._validateInput = function(input) {
22390
+ return input && typeof input === 'object';
21906
22391
  };
21907
- PromiseHash.prototype._validationError = function () {
21908
- return new Error('Promise.hash must be called with an object');
22392
+
22393
+ PromiseHash.prototype._validationError = function() {
22394
+ return new Error('Promise.hash must be called with an object');
21909
22395
  };
21910
- PromiseHash.prototype._enumerate = function () {
21911
- var promise = this.promise;
21912
- var input = this._input;
21913
- var results = [];
21914
- for (var key in input) {
21915
- if (promise._state === PENDING && input.hasOwnProperty(key)) {
21916
- results.push({
21917
- position: key,
21918
- entry: input[key]
21919
- });
21920
- }
21921
- }
21922
- var length = results.length;
21923
- this._remaining = length;
21924
- var result;
21925
- for (var i = 0; promise._state === PENDING && i < length; i++) {
21926
- result = results[i];
21927
- this._eachEntry(result.entry, result.position);
22396
+
22397
+ PromiseHash.prototype._enumerate = function() {
22398
+ var promise = this.promise;
22399
+ var input = this._input;
22400
+ var results = [];
22401
+
22402
+ for (var key in input) {
22403
+ if (promise._state === PENDING && input.hasOwnProperty(key)) {
22404
+ results.push({
22405
+ position: key,
22406
+ entry: input[key]
22407
+ });
21928
22408
  }
22409
+ }
22410
+
22411
+ var length = results.length;
22412
+ this._remaining = length;
22413
+ var result;
22414
+
22415
+ for (var i = 0; promise._state === PENDING && i < length; i++) {
22416
+ result = results[i];
22417
+ this._eachEntry(result.entry, result.position);
22418
+ }
21929
22419
  };
21930
- });
21931
- define('rsvp/promise', [
21932
- './config',
21933
- './events',
21934
- './instrument',
21935
- './utils',
21936
- './-internal',
21937
- './promise/cast',
21938
- './promise/all',
21939
- './promise/race',
21940
- './promise/resolve',
21941
- './promise/reject',
21942
- 'exports'
21943
- ], function (__dependency1__, __dependency2__, __dependency3__, __dependency4__, __dependency5__, __dependency6__, __dependency7__, __dependency8__, __dependency9__, __dependency10__, __exports__) {
21944
- 'use strict';
22420
+ });
22421
+ define("rsvp/promise",
22422
+ ["./config","./instrument","./utils","./-internal","./promise/all","./promise/race","./promise/resolve","./promise/reject","exports"],
22423
+ function(__dependency1__, __dependency2__, __dependency3__, __dependency4__, __dependency5__, __dependency6__, __dependency7__, __dependency8__, __exports__) {
22424
+ "use strict";
21945
22425
  var config = __dependency1__.config;
21946
- var EventTarget = __dependency2__['default'];
21947
- var instrument = __dependency3__['default'];
21948
- var objectOrFunction = __dependency4__.objectOrFunction;
21949
- var isFunction = __dependency4__.isFunction;
21950
- var now = __dependency4__.now;
21951
- var noop = __dependency5__.noop;
21952
- var resolve = __dependency5__.resolve;
21953
- var reject = __dependency5__.reject;
21954
- var fulfill = __dependency5__.fulfill;
21955
- var subscribe = __dependency5__.subscribe;
21956
- var initializePromise = __dependency5__.initializePromise;
21957
- var invokeCallback = __dependency5__.invokeCallback;
21958
- var FULFILLED = __dependency5__.FULFILLED;
21959
- var cast = __dependency6__['default'];
21960
- var all = __dependency7__['default'];
21961
- var race = __dependency8__['default'];
21962
- var Resolve = __dependency9__['default'];
21963
- var Reject = __dependency10__['default'];
22426
+ var instrument = __dependency2__["default"];
22427
+
22428
+ var isFunction = __dependency3__.isFunction;
22429
+ var now = __dependency3__.now;
22430
+
22431
+ var noop = __dependency4__.noop;
22432
+ var subscribe = __dependency4__.subscribe;
22433
+ var initializePromise = __dependency4__.initializePromise;
22434
+ var invokeCallback = __dependency4__.invokeCallback;
22435
+ var FULFILLED = __dependency4__.FULFILLED;
22436
+ var REJECTED = __dependency4__.REJECTED;
22437
+
22438
+ var all = __dependency5__["default"];
22439
+ var race = __dependency6__["default"];
22440
+ var Resolve = __dependency7__["default"];
22441
+ var Reject = __dependency8__["default"];
22442
+
21964
22443
  var guidKey = 'rsvp_' + now() + '-';
21965
22444
  var counter = 0;
22445
+
21966
22446
  function needsResolver() {
21967
- throw new TypeError('You must pass a resolver function as the first argument to the promise constructor');
22447
+ throw new TypeError('You must pass a resolver function as the first argument to the promise constructor');
21968
22448
  }
22449
+
21969
22450
  function needsNew() {
21970
- throw new TypeError('Failed to construct \'Promise\': Please use the \'new\' operator, this object constructor cannot be called as a function.');
22451
+ throw new TypeError("Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function.");
21971
22452
  }
21972
- __exports__['default'] = Promise;
22453
+ __exports__["default"] = Promise;
21973
22454
  /**
21974
22455
  Promise objects represent the eventual result of an asynchronous operation. The
21975
22456
  primary way of interacting with a promise is through its `then` method, which
@@ -22040,7 +22521,7 @@ define('rsvp/promise', [
22040
22521
  if (this.status === 200) {
22041
22522
  resolve(this.response);
22042
22523
  } else {
22043
- reject(new Error("getJSON: `" + url + "` failed with status: [" + this.status + "]"));
22524
+ reject(new Error('getJSON: `' + url + '` failed with status: [' + this.status + ']'));
22044
22525
  }
22045
22526
  }
22046
22527
  };
@@ -22075,79 +22556,363 @@ define('rsvp/promise', [
22075
22556
  @constructor
22076
22557
  */
22077
22558
  function Promise(resolver, label) {
22078
- this._id = counter++;
22079
- this._label = label;
22080
- this._subscribers = [];
22081
- if (config.instrument) {
22082
- instrument('created', this);
22559
+ this._id = counter++;
22560
+ this._label = label;
22561
+ this._state = undefined;
22562
+ this._result = undefined;
22563
+ this._subscribers = [];
22564
+
22565
+ if (config.instrument) {
22566
+ instrument('created', this);
22567
+ }
22568
+
22569
+ if (noop !== resolver) {
22570
+ if (!isFunction(resolver)) {
22571
+ needsResolver();
22083
22572
  }
22084
- if (noop !== resolver) {
22085
- if (!isFunction(resolver)) {
22086
- needsResolver();
22087
- }
22088
- if (!(this instanceof Promise)) {
22089
- needsNew();
22090
- }
22091
- initializePromise(this, resolver);
22573
+
22574
+ if (!(this instanceof Promise)) {
22575
+ needsNew();
22092
22576
  }
22577
+
22578
+ initializePromise(this, resolver);
22579
+ }
22093
22580
  }
22094
- Promise.cast = cast;
22581
+
22582
+ Promise.cast = Resolve; // deprecated
22095
22583
  Promise.all = all;
22096
22584
  Promise.race = race;
22097
22585
  Promise.resolve = Resolve;
22098
22586
  Promise.reject = Reject;
22587
+
22099
22588
  Promise.prototype = {
22100
- constructor: Promise,
22101
- _id: undefined,
22102
- _guidKey: guidKey,
22103
- _label: undefined,
22104
- _state: undefined,
22105
- _result: undefined,
22106
- _subscribers: undefined,
22107
- _onerror: function (reason) {
22108
- config.trigger('error', reason);
22109
- },
22110
- then: function (onFulfillment, onRejection, label) {
22111
- var parent = this;
22112
- parent._onerror = null;
22113
- var child = new this.constructor(noop, label);
22114
- var state = parent._state;
22115
- var result = parent._result;
22116
- if (config.instrument) {
22117
- instrument('chained', parent, child);
22118
- }
22119
- if (state === FULFILLED && onFulfillment) {
22120
- config.async(function () {
22121
- invokeCallback(state, child, onFulfillment, result);
22122
- });
22123
- } else {
22124
- subscribe(parent, child, onFulfillment, onRejection);
22125
- }
22126
- return child;
22127
- },
22128
- 'catch': function (onRejection, label) {
22129
- return this.then(null, onRejection, label);
22130
- },
22131
- 'finally': function (callback, label) {
22132
- var constructor = this.constructor;
22133
- return this.then(function (value) {
22134
- return constructor.resolve(callback()).then(function () {
22135
- return value;
22136
- });
22137
- }, function (reason) {
22138
- return constructor.resolve(callback()).then(function () {
22139
- throw reason;
22140
- });
22141
- }, label);
22589
+ constructor: Promise,
22590
+
22591
+ _guidKey: guidKey,
22592
+
22593
+ _onerror: function (reason) {
22594
+ config.trigger('error', reason);
22595
+ },
22596
+
22597
+ /**
22598
+ The primary way of interacting with a promise is through its `then` method,
22599
+ which registers callbacks to receive either a promise's eventual value or the
22600
+ reason why the promise cannot be fulfilled.
22601
+
22602
+ ```js
22603
+ findUser().then(function(user){
22604
+ // user is available
22605
+ }, function(reason){
22606
+ // user is unavailable, and you are given the reason why
22607
+ });
22608
+ ```
22609
+
22610
+ Chaining
22611
+ --------
22612
+
22613
+ The return value of `then` is itself a promise. This second, 'downstream'
22614
+ promise is resolved with the return value of the first promise's fulfillment
22615
+ or rejection handler, or rejected if the handler throws an exception.
22616
+
22617
+ ```js
22618
+ findUser().then(function (user) {
22619
+ return user.name;
22620
+ }, function (reason) {
22621
+ return 'default name';
22622
+ }).then(function (userName) {
22623
+ // If `findUser` fulfilled, `userName` will be the user's name, otherwise it
22624
+ // will be `'default name'`
22625
+ });
22626
+
22627
+ findUser().then(function (user) {
22628
+ throw new Error('Found user, but still unhappy');
22629
+ }, function (reason) {
22630
+ throw new Error('`findUser` rejected and we're unhappy');
22631
+ }).then(function (value) {
22632
+ // never reached
22633
+ }, function (reason) {
22634
+ // if `findUser` fulfilled, `reason` will be 'Found user, but still unhappy'.
22635
+ // If `findUser` rejected, `reason` will be '`findUser` rejected and we're unhappy'.
22636
+ });
22637
+ ```
22638
+ If the downstream promise does not specify a rejection handler, rejection reasons will be propagated further downstream.
22639
+
22640
+ ```js
22641
+ findUser().then(function (user) {
22642
+ throw new PedagogicalException('Upstream error');
22643
+ }).then(function (value) {
22644
+ // never reached
22645
+ }).then(function (value) {
22646
+ // never reached
22647
+ }, function (reason) {
22648
+ // The `PedgagocialException` is propagated all the way down to here
22649
+ });
22650
+ ```
22651
+
22652
+ Assimilation
22653
+ ------------
22654
+
22655
+ Sometimes the value you want to propagate to a downstream promise can only be
22656
+ retrieved asynchronously. This can be achieved by returning a promise in the
22657
+ fulfillment or rejection handler. The downstream promise will then be pending
22658
+ until the returned promise is settled. This is called *assimilation*.
22659
+
22660
+ ```js
22661
+ findUser().then(function (user) {
22662
+ return findCommentsByAuthor(user);
22663
+ }).then(function (comments) {
22664
+ // The user's comments are now available
22665
+ });
22666
+ ```
22667
+
22668
+ If the assimliated promise rejects, then the downstream promise will also reject.
22669
+
22670
+ ```js
22671
+ findUser().then(function (user) {
22672
+ return findCommentsByAuthor(user);
22673
+ }).then(function (comments) {
22674
+ // If `findCommentsByAuthor` fulfills, we'll have the value here
22675
+ }, function (reason) {
22676
+ // If `findCommentsByAuthor` rejects, we'll have the reason here
22677
+ });
22678
+ ```
22679
+
22680
+ Simple Example
22681
+ --------------
22682
+
22683
+ Synchronous Example
22684
+
22685
+ ```javascript
22686
+ var result;
22687
+
22688
+ try {
22689
+ result = findResult();
22690
+ // success
22691
+ } catch(reason) {
22692
+ // failure
22693
+ }
22694
+ ```
22695
+
22696
+ Errback Example
22697
+
22698
+ ```js
22699
+ findResult(function(result, err){
22700
+ if (err) {
22701
+ // failure
22702
+ } else {
22703
+ // success
22704
+ }
22705
+ });
22706
+ ```
22707
+
22708
+ Promise Example;
22709
+
22710
+ ```javascript
22711
+ findResult().then(function(result){
22712
+ // success
22713
+ }, function(reason){
22714
+ // failure
22715
+ });
22716
+ ```
22717
+
22718
+ Advanced Example
22719
+ --------------
22720
+
22721
+ Synchronous Example
22722
+
22723
+ ```javascript
22724
+ var author, books;
22725
+
22726
+ try {
22727
+ author = findAuthor();
22728
+ books = findBooksByAuthor(author);
22729
+ // success
22730
+ } catch(reason) {
22731
+ // failure
22732
+ }
22733
+ ```
22734
+
22735
+ Errback Example
22736
+
22737
+ ```js
22738
+
22739
+ function foundBooks(books) {
22740
+
22741
+ }
22742
+
22743
+ function failure(reason) {
22744
+
22745
+ }
22746
+
22747
+ findAuthor(function(author, err){
22748
+ if (err) {
22749
+ failure(err);
22750
+ // failure
22751
+ } else {
22752
+ try {
22753
+ findBoooksByAuthor(author, function(books, err) {
22754
+ if (err) {
22755
+ failure(err);
22756
+ } else {
22757
+ try {
22758
+ foundBooks(books);
22759
+ } catch(reason) {
22760
+ failure(reason);
22761
+ }
22762
+ }
22763
+ });
22764
+ } catch(error) {
22765
+ failure(err);
22766
+ }
22767
+ // success
22768
+ }
22769
+ });
22770
+ ```
22771
+
22772
+ Promise Example;
22773
+
22774
+ ```javascript
22775
+ findAuthor().
22776
+ then(findBooksByAuthor).
22777
+ then(function(books){
22778
+ // found books
22779
+ }).catch(function(reason){
22780
+ // something went wrong
22781
+ });
22782
+ ```
22783
+
22784
+ @method then
22785
+ @param {Function} onFulfilled
22786
+ @param {Function} onRejected
22787
+ @param {String} label optional string for labeling the promise.
22788
+ Useful for tooling.
22789
+ @return {Promise}
22790
+ */
22791
+ then: function(onFulfillment, onRejection, label) {
22792
+ var parent = this;
22793
+ var state = parent._state;
22794
+
22795
+ if (state === FULFILLED && !onFulfillment || state === REJECTED && !onRejection) {
22796
+ if (config.instrument) {
22797
+ instrument('chained', this, this);
22798
+ }
22799
+ return this;
22800
+ }
22801
+
22802
+ parent._onerror = null;
22803
+
22804
+ var child = new this.constructor(noop, label);
22805
+ var result = parent._result;
22806
+
22807
+ if (config.instrument) {
22808
+ instrument('chained', parent, child);
22809
+ }
22810
+
22811
+ if (state) {
22812
+ var callback = arguments[state - 1];
22813
+ config.async(function(){
22814
+ invokeCallback(state, child, callback, result);
22815
+ });
22816
+ } else {
22817
+ subscribe(parent, child, onFulfillment, onRejection);
22142
22818
  }
22819
+
22820
+ return child;
22821
+ },
22822
+
22823
+ /**
22824
+ `catch` is simply sugar for `then(undefined, onRejection)` which makes it the same
22825
+ as the catch block of a try/catch statement.
22826
+
22827
+ ```js
22828
+ function findAuthor(){
22829
+ throw new Error('couldn't find that author');
22830
+ }
22831
+
22832
+ // synchronous
22833
+ try {
22834
+ findAuthor();
22835
+ } catch(reason) {
22836
+ // something went wrong
22837
+ }
22838
+
22839
+ // async with promises
22840
+ findAuthor().catch(function(reason){
22841
+ // something went wrong
22842
+ });
22843
+ ```
22844
+
22845
+ @method catch
22846
+ @param {Function} onRejection
22847
+ @param {String} label optional string for labeling the promise.
22848
+ Useful for tooling.
22849
+ @return {Promise}
22850
+ */
22851
+ 'catch': function(onRejection, label) {
22852
+ return this.then(null, onRejection, label);
22853
+ },
22854
+
22855
+ /**
22856
+ `finally` will be invoked regardless of the promise's fate just as native
22857
+ try/catch/finally behaves
22858
+
22859
+ Synchronous example:
22860
+
22861
+ ```js
22862
+ findAuthor() {
22863
+ if (Math.random() > 0.5) {
22864
+ throw new Error();
22865
+ }
22866
+ return new Author();
22867
+ }
22868
+
22869
+ try {
22870
+ return findAuthor(); // succeed or fail
22871
+ } catch(error) {
22872
+ return findOtherAuther();
22873
+ } finally {
22874
+ // always runs
22875
+ // doesn't affect the return value
22876
+ }
22877
+ ```
22878
+
22879
+ Asynchronous example:
22880
+
22881
+ ```js
22882
+ findAuthor().catch(function(reason){
22883
+ return findOtherAuther();
22884
+ }).finally(function(){
22885
+ // author was either found, or not
22886
+ });
22887
+ ```
22888
+
22889
+ @method finally
22890
+ @param {Function} callback
22891
+ @param {String} label optional string for labeling the promise.
22892
+ Useful for tooling.
22893
+ @return {Promise}
22894
+ */
22895
+ 'finally': function(callback, label) {
22896
+ var constructor = this.constructor;
22897
+
22898
+ return this.then(function(value) {
22899
+ return constructor.resolve(callback()).then(function(){
22900
+ return value;
22901
+ });
22902
+ }, function(reason) {
22903
+ return constructor.resolve(callback()).then(function(){
22904
+ throw reason;
22905
+ });
22906
+ }, label);
22907
+ }
22143
22908
  };
22144
- });
22145
- define('rsvp/promise/all', [
22146
- '../enumerator',
22147
- 'exports'
22148
- ], function (__dependency1__, __exports__) {
22149
- 'use strict';
22150
- var Enumerator = __dependency1__['default'];
22909
+ });
22910
+ define("rsvp/promise/all",
22911
+ ["../enumerator","exports"],
22912
+ function(__dependency1__, __exports__) {
22913
+ "use strict";
22914
+ var Enumerator = __dependency1__["default"];
22915
+
22151
22916
  /**
22152
22917
  `RSVP.Promise.all` accepts an array of promises, and returns a new promise which
22153
22918
  is fulfilled with an array of fulfillment values for the passed promises, or
@@ -22195,100 +22960,22 @@ define('rsvp/promise/all', [
22195
22960
  fulfilled, or rejected if any of them become rejected.
22196
22961
  @static
22197
22962
  */
22198
- __exports__['default'] = function all(entries, label) {
22199
- return new Enumerator(this, entries, true, label).promise;
22200
- };
22201
- });
22202
- define('rsvp/promise/cast', [
22203
- './resolve',
22204
- 'exports'
22205
- ], function (__dependency1__, __exports__) {
22206
- 'use strict';
22207
- var resolve = __dependency1__['default'];
22208
- /**
22209
- @deprecated
22210
-
22211
- `RSVP.Promise.cast` coerces its argument to a promise, or returns the
22212
- argument if it is already a promise which shares a constructor with the caster.
22213
-
22214
- Example:
22215
-
22216
- ```javascript
22217
- var promise = RSVP.Promise.resolve(1);
22218
- var casted = RSVP.Promise.cast(promise);
22219
-
22220
- console.log(promise === casted); // true
22221
- ```
22222
-
22223
- In the case of a promise whose constructor does not match, it is assimilated.
22224
- The resulting promise will fulfill or reject based on the outcome of the
22225
- promise being casted.
22226
-
22227
- Example:
22228
-
22229
- ```javascript
22230
- var thennable = $.getJSON('/api/foo');
22231
- var casted = RSVP.Promise.cast(thennable);
22232
-
22233
- console.log(thennable === casted); // false
22234
- console.log(casted instanceof RSVP.Promise) // true
22235
-
22236
- casted.then(function(data) {
22237
- // data is the value getJSON fulfills with
22238
- });
22239
- ```
22240
-
22241
- In the case of a non-promise, a promise which will fulfill with that value is
22242
- returned.
22243
-
22244
- Example:
22245
-
22246
- ```javascript
22247
- var value = 1; // could be a number, boolean, string, undefined...
22248
- var casted = RSVP.Promise.cast(value);
22249
-
22250
- console.log(value === casted); // false
22251
- console.log(casted instanceof RSVP.Promise) // true
22252
-
22253
- casted.then(function(val) {
22254
- val === value // => true
22255
- });
22256
- ```
22257
-
22258
- `RSVP.Promise.cast` is similar to `RSVP.Promise.resolve`, but `RSVP.Promise.cast` differs in the
22259
- following ways:
22260
-
22261
- * `RSVP.Promise.cast` serves as a memory-efficient way of getting a promise, when you
22262
- have something that could either be a promise or a value. RSVP.resolve
22263
- will have the same effect but will create a new promise wrapper if the
22264
- argument is a promise.
22265
- * `RSVP.Promise.cast` is a way of casting incoming thenables or promise subclasses to
22266
- promises of the exact class specified, so that the resulting object's `then` is
22267
- ensured to have the behavior of the constructor you are calling cast on (i.e., RSVP.Promise).
22268
-
22269
- @method cast
22270
- @static
22271
- @param {Object} object to be casted
22272
- @param {String} label optional string for labeling the promise.
22273
- Useful for tooling.
22274
- @return {Promise} promise
22275
- */
22276
- __exports__['default'] = resolve;
22277
- });
22278
- define('rsvp/promise/race', [
22279
- '../utils',
22280
- '../-internal',
22281
- 'exports'
22282
- ], function (__dependency1__, __dependency2__, __exports__) {
22283
- 'use strict';
22963
+ __exports__["default"] = function all(entries, label) {
22964
+ return new Enumerator(this, entries, true /* abort on reject */, label).promise;
22965
+ }
22966
+ });
22967
+ define("rsvp/promise/race",
22968
+ ["../utils","../-internal","exports"],
22969
+ function(__dependency1__, __dependency2__, __exports__) {
22970
+ "use strict";
22284
22971
  var isArray = __dependency1__.isArray;
22285
- var isFunction = __dependency1__.isFunction;
22286
- var isMaybeThenable = __dependency1__.isMaybeThenable;
22972
+
22287
22973
  var noop = __dependency2__.noop;
22288
22974
  var resolve = __dependency2__.resolve;
22289
22975
  var reject = __dependency2__.reject;
22290
22976
  var subscribe = __dependency2__.subscribe;
22291
22977
  var PENDING = __dependency2__.PENDING;
22978
+
22292
22979
  /**
22293
22980
  `RSVP.Promise.race` returns a new promise which is settled in the same way as the
22294
22981
  first passed promise to settle.
@@ -22298,18 +22985,18 @@ define('rsvp/promise/race', [
22298
22985
  ```javascript
22299
22986
  var promise1 = new RSVP.Promise(function(resolve, reject){
22300
22987
  setTimeout(function(){
22301
- resolve("promise 1");
22988
+ resolve('promise 1');
22302
22989
  }, 200);
22303
22990
  });
22304
22991
 
22305
22992
  var promise2 = new RSVP.Promise(function(resolve, reject){
22306
22993
  setTimeout(function(){
22307
- resolve("promise 2");
22994
+ resolve('promise 2');
22308
22995
  }, 100);
22309
22996
  });
22310
22997
 
22311
22998
  RSVP.Promise.race([promise1, promise2]).then(function(result){
22312
- // result === "promise 2" because it was resolved before promise1
22999
+ // result === 'promise 2' because it was resolved before promise1
22313
23000
  // was resolved.
22314
23001
  });
22315
23002
  ```
@@ -22323,20 +23010,20 @@ define('rsvp/promise/race', [
22323
23010
  ```javascript
22324
23011
  var promise1 = new RSVP.Promise(function(resolve, reject){
22325
23012
  setTimeout(function(){
22326
- resolve("promise 1");
23013
+ resolve('promise 1');
22327
23014
  }, 200);
22328
23015
  });
22329
23016
 
22330
23017
  var promise2 = new RSVP.Promise(function(resolve, reject){
22331
23018
  setTimeout(function(){
22332
- reject(new Error("promise 2"));
23019
+ reject(new Error('promise 2'));
22333
23020
  }, 100);
22334
23021
  });
22335
23022
 
22336
23023
  RSVP.Promise.race([promise1, promise2]).then(function(result){
22337
23024
  // Code here never runs
22338
23025
  }, function(reason){
22339
- // reason.message === "promise 2" because promise 2 became rejected before
23026
+ // reason.message === 'promise 2' because promise 2 became rejected before
22340
23027
  // promise 1 became fulfilled
22341
23028
  });
22342
23029
  ```
@@ -22355,34 +23042,41 @@ define('rsvp/promise/race', [
22355
23042
  @return {Promise} a promise which settles in the same way as the first passed
22356
23043
  promise to settle.
22357
23044
  */
22358
- __exports__['default'] = function race(entries, label) {
22359
- /*jshint validthis:true */
22360
- var Constructor = this, entry;
22361
- var promise = new Constructor(noop, label);
22362
- if (!isArray(entries)) {
22363
- reject(promise, new TypeError('You must pass an array to race.'));
22364
- return promise;
22365
- }
22366
- var length = entries.length;
22367
- function onFulfillment(value) {
22368
- resolve(promise, value);
22369
- }
22370
- function onRejection(reason) {
22371
- reject(promise, reason);
22372
- }
22373
- for (var i = 0; promise._state === PENDING && i < length; i++) {
22374
- subscribe(Constructor.resolve(entries[i]), undefined, onFulfillment, onRejection);
22375
- }
23045
+ __exports__["default"] = function race(entries, label) {
23046
+ /*jshint validthis:true */
23047
+ var Constructor = this;
23048
+
23049
+ var promise = new Constructor(noop, label);
23050
+
23051
+ if (!isArray(entries)) {
23052
+ reject(promise, new TypeError('You must pass an array to race.'));
22376
23053
  return promise;
22377
- };
22378
- });
22379
- define('rsvp/promise/reject', [
22380
- '../-internal',
22381
- 'exports'
22382
- ], function (__dependency1__, __exports__) {
22383
- 'use strict';
23054
+ }
23055
+
23056
+ var length = entries.length;
23057
+
23058
+ function onFulfillment(value) {
23059
+ resolve(promise, value);
23060
+ }
23061
+
23062
+ function onRejection(reason) {
23063
+ reject(promise, reason);
23064
+ }
23065
+
23066
+ for (var i = 0; promise._state === PENDING && i < length; i++) {
23067
+ subscribe(Constructor.resolve(entries[i]), undefined, onFulfillment, onRejection);
23068
+ }
23069
+
23070
+ return promise;
23071
+ }
23072
+ });
23073
+ define("rsvp/promise/reject",
23074
+ ["../-internal","exports"],
23075
+ function(__dependency1__, __exports__) {
23076
+ "use strict";
22384
23077
  var noop = __dependency1__.noop;
22385
23078
  var _reject = __dependency1__.reject;
23079
+
22386
23080
  /**
22387
23081
  `RSVP.Promise.reject` returns a promise rejected with the passed `reason`.
22388
23082
  It is shorthand for the following:
@@ -22418,21 +23112,21 @@ define('rsvp/promise/reject', [
22418
23112
  Useful for tooling.
22419
23113
  @return {Promise} a promise rejected with the given `reason`.
22420
23114
  */
22421
- __exports__['default'] = function reject(reason, label) {
22422
- /*jshint validthis:true */
22423
- var Constructor = this;
22424
- var promise = new Constructor(noop, label);
22425
- _reject(promise, reason);
22426
- return promise;
22427
- };
22428
- });
22429
- define('rsvp/promise/resolve', [
22430
- '../-internal',
22431
- 'exports'
22432
- ], function (__dependency1__, __exports__) {
22433
- 'use strict';
23115
+ __exports__["default"] = function reject(reason, label) {
23116
+ /*jshint validthis:true */
23117
+ var Constructor = this;
23118
+ var promise = new Constructor(noop, label);
23119
+ _reject(promise, reason);
23120
+ return promise;
23121
+ }
23122
+ });
23123
+ define("rsvp/promise/resolve",
23124
+ ["../-internal","exports"],
23125
+ function(__dependency1__, __exports__) {
23126
+ "use strict";
22434
23127
  var noop = __dependency1__.noop;
22435
23128
  var _resolve = __dependency1__.resolve;
23129
+
22436
23130
  /**
22437
23131
  `RSVP.Promise.resolve` returns a promise that will become resolved with the
22438
23132
  passed `value`. It is shorthand for the following:
@@ -22465,23 +23159,25 @@ define('rsvp/promise/resolve', [
22465
23159
  @return {Promise} a promise that will become fulfilled with the given
22466
23160
  `value`
22467
23161
  */
22468
- __exports__['default'] = function resolve(object, label) {
22469
- /*jshint validthis:true */
22470
- var Constructor = this;
22471
- if (object && typeof object === 'object' && object.constructor === Constructor) {
22472
- return object;
22473
- }
22474
- var promise = new Constructor(noop, label);
22475
- _resolve(promise, object);
22476
- return promise;
22477
- };
22478
- });
22479
- define('rsvp/race', [
22480
- './promise',
22481
- 'exports'
22482
- ], function (__dependency1__, __exports__) {
22483
- 'use strict';
22484
- var Promise = __dependency1__['default'];
23162
+ __exports__["default"] = function resolve(object, label) {
23163
+ /*jshint validthis:true */
23164
+ var Constructor = this;
23165
+
23166
+ if (object && typeof object === 'object' && object.constructor === Constructor) {
23167
+ return object;
23168
+ }
23169
+
23170
+ var promise = new Constructor(noop, label);
23171
+ _resolve(promise, object);
23172
+ return promise;
23173
+ }
23174
+ });
23175
+ define("rsvp/race",
23176
+ ["./promise","exports"],
23177
+ function(__dependency1__, __exports__) {
23178
+ "use strict";
23179
+ var Promise = __dependency1__["default"];
23180
+
22485
23181
  /**
22486
23182
  This is a convenient alias for `RSVP.Promise.race`.
22487
23183
 
@@ -22492,16 +23188,16 @@ define('rsvp/race', [
22492
23188
  @param {String} label An optional label. This is useful
22493
23189
  for tooling.
22494
23190
  */
22495
- __exports__['default'] = function race(array, label) {
22496
- return Promise.race(array, label);
22497
- };
22498
- });
22499
- define('rsvp/reject', [
22500
- './promise',
22501
- 'exports'
22502
- ], function (__dependency1__, __exports__) {
22503
- 'use strict';
22504
- var Promise = __dependency1__['default'];
23191
+ __exports__["default"] = function race(array, label) {
23192
+ return Promise.race(array, label);
23193
+ }
23194
+ });
23195
+ define("rsvp/reject",
23196
+ ["./promise","exports"],
23197
+ function(__dependency1__, __exports__) {
23198
+ "use strict";
23199
+ var Promise = __dependency1__["default"];
23200
+
22505
23201
  /**
22506
23202
  This is a convenient alias for `RSVP.Promise.reject`.
22507
23203
 
@@ -22513,16 +23209,16 @@ define('rsvp/reject', [
22513
23209
  Useful for tooling.
22514
23210
  @return {Promise} a promise rejected with the given `reason`.
22515
23211
  */
22516
- __exports__['default'] = function reject(reason, label) {
22517
- return Promise.reject(reason, label);
22518
- };
22519
- });
22520
- define('rsvp/resolve', [
22521
- './promise',
22522
- 'exports'
22523
- ], function (__dependency1__, __exports__) {
22524
- 'use strict';
22525
- var Promise = __dependency1__['default'];
23212
+ __exports__["default"] = function reject(reason, label) {
23213
+ return Promise.reject(reason, label);
23214
+ }
23215
+ });
23216
+ define("rsvp/resolve",
23217
+ ["./promise","exports"],
23218
+ function(__dependency1__, __exports__) {
23219
+ "use strict";
23220
+ var Promise = __dependency1__["default"];
23221
+
22526
23222
  /**
22527
23223
  This is a convenient alias for `RSVP.Promise.resolve`.
22528
23224
 
@@ -22535,12 +23231,14 @@ define('rsvp/resolve', [
22535
23231
  @return {Promise} a promise that will become fulfilled with the given
22536
23232
  `value`
22537
23233
  */
22538
- __exports__['default'] = function resolve(value, label) {
22539
- return Promise.resolve(value, label);
22540
- };
22541
- });
22542
- define('rsvp/rethrow', ['exports'], function (__exports__) {
22543
- 'use strict';
23234
+ __exports__["default"] = function resolve(value, label) {
23235
+ return Promise.resolve(value, label);
23236
+ }
23237
+ });
23238
+ define("rsvp/rethrow",
23239
+ ["exports"],
23240
+ function(__exports__) {
23241
+ "use strict";
22544
23242
  /**
22545
23243
  `RSVP.rethrow` will rethrow an error on the next turn of the JavaScript event
22546
23244
  loop in order to aid debugging.
@@ -22581,129 +23279,58 @@ define('rsvp/rethrow', ['exports'], function (__exports__) {
22581
23279
  @throws Error
22582
23280
  @static
22583
23281
  */
22584
- __exports__['default'] = function rethrow(reason) {
22585
- setTimeout(function () {
22586
- throw reason;
22587
- });
23282
+ __exports__["default"] = function rethrow(reason) {
23283
+ setTimeout(function() {
22588
23284
  throw reason;
22589
- };
22590
- });
22591
- define('rsvp/utils', ['exports'], function (__exports__) {
22592
- 'use strict';
23285
+ });
23286
+ throw reason;
23287
+ }
23288
+ });
23289
+ define("rsvp/utils",
23290
+ ["exports"],
23291
+ function(__exports__) {
23292
+ "use strict";
22593
23293
  function objectOrFunction(x) {
22594
- return typeof x === 'function' || typeof x === 'object' && x !== null;
23294
+ return typeof x === 'function' || (typeof x === 'object' && x !== null);
22595
23295
  }
22596
- __exports__.objectOrFunction = objectOrFunction;
22597
- function isFunction(x) {
22598
- return typeof x === 'function';
23296
+
23297
+ __exports__.objectOrFunction = objectOrFunction;function isFunction(x) {
23298
+ return typeof x === 'function';
22599
23299
  }
22600
- __exports__.isFunction = isFunction;
22601
- function isMaybeThenable(x) {
22602
- return typeof x === 'object' && x !== null;
23300
+
23301
+ __exports__.isFunction = isFunction;function isMaybeThenable(x) {
23302
+ return typeof x === 'object' && x !== null;
22603
23303
  }
22604
- __exports__.isMaybeThenable = isMaybeThenable;
22605
- var _isArray;
23304
+
23305
+ __exports__.isMaybeThenable = isMaybeThenable;var _isArray;
22606
23306
  if (!Array.isArray) {
22607
- _isArray = function (x) {
22608
- return Object.prototype.toString.call(x) === '[object Array]';
22609
- };
23307
+ _isArray = function (x) {
23308
+ return Object.prototype.toString.call(x) === '[object Array]';
23309
+ };
22610
23310
  } else {
22611
- _isArray = Array.isArray;
23311
+ _isArray = Array.isArray;
22612
23312
  }
23313
+
22613
23314
  var isArray = _isArray;
22614
23315
  __exports__.isArray = isArray;
22615
23316
  // Date.now is not available in browsers < IE9
22616
23317
  // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/now#Compatibility
22617
- var now = Date.now || function () {
22618
- return new Date().getTime();
22619
- };
23318
+ var now = Date.now || function() { return new Date().getTime(); };
22620
23319
  __exports__.now = now;
22621
- var o_create = Object.create || function (object) {
22622
- var o = function () {
22623
- };
22624
- o.prototype = object;
22625
- return o;
22626
- };
22627
- __exports__.o_create = o_create;
22628
- });
22629
- define('rsvp', [
22630
- './rsvp/promise',
22631
- './rsvp/events',
22632
- './rsvp/node',
22633
- './rsvp/all',
22634
- './rsvp/all-settled',
22635
- './rsvp/race',
22636
- './rsvp/hash',
22637
- './rsvp/hash-settled',
22638
- './rsvp/rethrow',
22639
- './rsvp/defer',
22640
- './rsvp/config',
22641
- './rsvp/map',
22642
- './rsvp/resolve',
22643
- './rsvp/reject',
22644
- './rsvp/filter',
22645
- './rsvp/asap',
22646
- 'exports'
22647
- ], function (__dependency1__, __dependency2__, __dependency3__, __dependency4__, __dependency5__, __dependency6__, __dependency7__, __dependency8__, __dependency9__, __dependency10__, __dependency11__, __dependency12__, __dependency13__, __dependency14__, __dependency15__, __dependency16__, __exports__) {
22648
- 'use strict';
22649
- var Promise = __dependency1__['default'];
22650
- var EventTarget = __dependency2__['default'];
22651
- var denodeify = __dependency3__['default'];
22652
- var all = __dependency4__['default'];
22653
- var allSettled = __dependency5__['default'];
22654
- var race = __dependency6__['default'];
22655
- var hash = __dependency7__['default'];
22656
- var hashSettled = __dependency8__['default'];
22657
- var rethrow = __dependency9__['default'];
22658
- var defer = __dependency10__['default'];
22659
- var config = __dependency11__.config;
22660
- var configure = __dependency11__.configure;
22661
- var map = __dependency12__['default'];
22662
- var resolve = __dependency13__['default'];
22663
- var reject = __dependency14__['default'];
22664
- var filter = __dependency15__['default'];
22665
- var asap = __dependency16__['default'];
22666
- config.async = asap;
22667
- // default async is asap;
22668
- function async(callback, arg) {
22669
- config.async(callback, arg);
22670
- }
22671
- function on() {
22672
- config.on.apply(config, arguments);
22673
- }
22674
- function off() {
22675
- config.off.apply(config, arguments);
22676
- }
22677
- // Set up instrumentation through `window.__PROMISE_INTRUMENTATION__`
22678
- if (typeof window !== 'undefined' && typeof window.__PROMISE_INSTRUMENTATION__ === 'object') {
22679
- var callbacks = window.__PROMISE_INSTRUMENTATION__;
22680
- configure('instrument', true);
22681
- for (var eventName in callbacks) {
22682
- if (callbacks.hasOwnProperty(eventName)) {
22683
- on(eventName, callbacks[eventName]);
22684
- }
22685
- }
22686
- }
22687
- __exports__.Promise = Promise;
22688
- __exports__.EventTarget = EventTarget;
22689
- __exports__.all = all;
22690
- __exports__.allSettled = allSettled;
22691
- __exports__.race = race;
22692
- __exports__.hash = hash;
22693
- __exports__.hashSettled = hashSettled;
22694
- __exports__.rethrow = rethrow;
22695
- __exports__.defer = defer;
22696
- __exports__.denodeify = denodeify;
22697
- __exports__.configure = configure;
22698
- __exports__.on = on;
22699
- __exports__.off = off;
22700
- __exports__.resolve = resolve;
22701
- __exports__.reject = reject;
22702
- __exports__.async = async;
22703
- __exports__.map = map;
22704
- __exports__.filter = filter;
22705
- });
23320
+ function F() { }
22706
23321
 
23322
+ var o_create = (Object.create || function (o) {
23323
+ if (arguments.length > 1) {
23324
+ throw new Error('Second argument not supported');
23325
+ }
23326
+ if (typeof o !== 'object') {
23327
+ throw new TypeError('Argument must be an object');
23328
+ }
23329
+ F.prototype = o;
23330
+ return new F();
23331
+ });
23332
+ __exports__.o_create = o_create;
23333
+ });
22707
23334
  requireModule("ember-runtime");
22708
23335
 
22709
23336
  })();