ember-source 1.7.0.beta.5 → 1.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/VERSION +1 -1
- data/dist/ember-runtime.js +1704 -1077
- data/dist/ember-tests.js +72 -15
- data/dist/ember.js +1853 -1126
- data/dist/ember.min.js +19 -19
- data/dist/ember.prod.js +1852 -1125
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0d6ff9f4eb4af89c66ed6a548d9628eb0802e036
|
4
|
+
data.tar.gz: 783d7d84bea121ce0e42385938b415a8c367c346
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f95ef7b9d2869b857bdfd4d25af936c8ca2ea75060d2cfe3565f54c63679331d2663797127fc71939aeff79e523a105b3fff621a1c7a241e787689f95fc780db
|
7
|
+
data.tar.gz: 8f9a3338317a2b772e26fe7ee5421784a04ef589b85fed97535a1849d2d5d7c5355c9ecbb5ec216e3c49dc28a989111cb6419693ff8c470272770e70cd242f2d
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.7.0
|
1
|
+
1.7.0
|
data/dist/ember-runtime.js
CHANGED
@@ -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
|
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
|
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(
|
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
|
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
|
-
|
3826
|
-
return
|
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
|
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
|
4530
|
+
@default '1.7.0'
|
4478
4531
|
@static
|
4479
4532
|
*/
|
4480
|
-
Ember.VERSION = '1.7.0
|
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
|
-
|
11944
|
-
|
11945
|
-
|
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
|
-
|
11961
|
-
|
11962
|
-
|
11963
|
-
|
11964
|
-
|
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 (
|
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
|
-
|
20568
|
-
|
20569
|
-
|
20570
|
-
|
20571
|
-
|
20572
|
-
|
20573
|
-
|
20574
|
-
|
20575
|
-
|
20576
|
-
|
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
|
-
|
20580
|
-
var instrument = __dependency2__[
|
20754
|
+
|
20755
|
+
var instrument = __dependency2__["default"];
|
20756
|
+
|
20581
20757
|
var config = __dependency3__.config;
|
20582
|
-
|
20583
|
-
}
|
20584
|
-
|
20758
|
+
|
20759
|
+
function noop() {}
|
20760
|
+
|
20761
|
+
var PENDING = void 0;
|
20585
20762
|
var FULFILLED = 1;
|
20586
|
-
var REJECTED
|
20763
|
+
var REJECTED = 2;
|
20764
|
+
|
20587
20765
|
var GET_THEN_ERROR = new ErrorObject();
|
20766
|
+
|
20588
20767
|
function getThen(promise) {
|
20589
|
-
|
20590
|
-
|
20591
|
-
|
20592
|
-
|
20593
|
-
|
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
|
-
|
20598
|
-
|
20599
|
-
|
20600
|
-
|
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
|
-
|
20605
|
-
|
20606
|
-
|
20607
|
-
|
20608
|
-
|
20609
|
-
|
20610
|
-
|
20611
|
-
|
20612
|
-
|
20613
|
-
|
20614
|
-
|
20615
|
-
|
20616
|
-
|
20617
|
-
|
20618
|
-
|
20619
|
-
|
20620
|
-
|
20621
|
-
|
20622
|
-
|
20623
|
-
|
20624
|
-
|
20625
|
-
|
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
|
-
|
20631
|
-
|
20632
|
-
|
20633
|
-
|
20634
|
-
|
20635
|
-
|
20636
|
-
|
20637
|
-
|
20638
|
-
|
20639
|
-
|
20640
|
-
|
20641
|
-
|
20642
|
-
|
20643
|
-
|
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
|
-
|
20649
|
-
|
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
|
-
|
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
|
-
|
20665
|
-
|
20666
|
-
|
20667
|
-
|
20668
|
-
|
20669
|
-
|
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
|
-
|
20674
|
-
|
20675
|
-
|
20676
|
-
|
20856
|
+
if (promise._onerror) {
|
20857
|
+
promise._onerror(promise._result);
|
20858
|
+
}
|
20859
|
+
|
20860
|
+
publish(promise);
|
20677
20861
|
}
|
20862
|
+
|
20678
20863
|
function fulfill(promise, value) {
|
20679
|
-
|
20680
|
-
|
20681
|
-
|
20682
|
-
|
20683
|
-
|
20684
|
-
|
20685
|
-
|
20686
|
-
|
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
|
-
|
20694
|
-
|
20695
|
-
|
20696
|
-
|
20697
|
-
|
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
|
-
|
20702
|
-
|
20703
|
-
|
20704
|
-
|
20705
|
-
|
20706
|
-
|
20707
|
-
|
20708
|
-
|
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
|
-
|
20713
|
-
|
20714
|
-
|
20715
|
-
|
20716
|
-
|
20717
|
-
|
20718
|
-
|
20719
|
-
|
20720
|
-
|
20721
|
-
|
20722
|
-
|
20723
|
-
|
20724
|
-
|
20725
|
-
|
20726
|
-
|
20727
|
-
|
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
|
-
|
20922
|
+
}
|
20923
|
+
|
20924
|
+
promise._subscribers.length = 0;
|
20731
20925
|
}
|
20926
|
+
|
20732
20927
|
function ErrorObject() {
|
20733
|
-
|
20928
|
+
this.error = null;
|
20734
20929
|
}
|
20930
|
+
|
20735
20931
|
var TRY_CATCH_ERROR = new ErrorObject();
|
20932
|
+
|
20736
20933
|
function tryCatch(callback, detail) {
|
20737
|
-
|
20738
|
-
|
20739
|
-
|
20740
|
-
|
20741
|
-
|
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
|
-
|
20746
|
-
|
20747
|
-
|
20748
|
-
|
20749
|
-
|
20750
|
-
|
20751
|
-
|
20752
|
-
|
20753
|
-
|
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
|
-
|
20761
|
-
succeeded = true;
|
20954
|
+
succeeded = true;
|
20762
20955
|
}
|
20763
|
-
|
20764
|
-
|
20765
|
-
|
20766
|
-
|
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
|
-
|
20777
|
-
|
20778
|
-
|
20779
|
-
|
20780
|
-
|
20781
|
-
|
20782
|
-
|
20783
|
-
|
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
|
-
|
20799
|
-
|
20800
|
-
|
20801
|
-
|
20802
|
-
|
20803
|
-
|
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__[
|
21011
|
+
var Promise = __dependency2__["default"];
|
20808
21012
|
var o_create = __dependency3__.o_create;
|
21013
|
+
|
20809
21014
|
function AllSettled(Constructor, entries, label) {
|
20810
|
-
|
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
|
-
|
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
|
20853
|
-
// third item, reason.message will be
|
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
|
-
|
20870
|
-
|
20871
|
-
|
20872
|
-
}
|
20873
|
-
|
20874
|
-
|
20875
|
-
|
20876
|
-
|
20877
|
-
|
20878
|
-
var Promise = __dependency1__[
|
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__[
|
20890
|
-
|
20891
|
-
}
|
20892
|
-
});
|
20893
|
-
define(
|
20894
|
-
|
20895
|
-
|
20896
|
-
|
20897
|
-
|
20898
|
-
|
20899
|
-
|
20900
|
-
|
20901
|
-
|
20902
|
-
|
20903
|
-
|
20904
|
-
|
20905
|
-
|
20906
|
-
|
20907
|
-
|
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' &&
|
21123
|
+
var isWorker = typeof Uint8ClampedArray !== 'undefined' &&
|
21124
|
+
typeof importScripts !== 'undefined' &&
|
21125
|
+
typeof MessageChannel !== 'undefined';
|
21126
|
+
|
20911
21127
|
// node
|
20912
21128
|
function useNextTick() {
|
20913
|
-
|
20914
|
-
|
20915
|
-
|
21129
|
+
return function() {
|
21130
|
+
process.nextTick(flush);
|
21131
|
+
};
|
20916
21132
|
}
|
21133
|
+
|
20917
21134
|
function useMutationObserver() {
|
20918
|
-
|
20919
|
-
|
20920
|
-
|
20921
|
-
|
20922
|
-
|
20923
|
-
|
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
|
-
|
20929
|
-
|
20930
|
-
|
20931
|
-
|
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
|
-
|
20936
|
-
|
20937
|
-
|
21155
|
+
return function() {
|
21156
|
+
setTimeout(flush, 1);
|
21157
|
+
};
|
20938
21158
|
}
|
21159
|
+
|
20939
21160
|
var queue = new Array(1000);
|
20940
21161
|
function flush() {
|
20941
|
-
|
20942
|
-
|
20943
|
-
|
20944
|
-
|
20945
|
-
|
20946
|
-
|
20947
|
-
|
20948
|
-
|
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
|
-
|
21179
|
+
scheduleFlush = useNextTick();
|
20954
21180
|
} else if (BrowserMutationObserver) {
|
20955
|
-
|
21181
|
+
scheduleFlush = useMutationObserver();
|
20956
21182
|
} else if (isWorker) {
|
20957
|
-
|
21183
|
+
scheduleFlush = useMessageChannel();
|
20958
21184
|
} else {
|
20959
|
-
|
21185
|
+
scheduleFlush = useSetTimeout();
|
20960
21186
|
}
|
20961
|
-
});
|
20962
|
-
define(
|
20963
|
-
|
20964
|
-
|
20965
|
-
|
20966
|
-
|
20967
|
-
|
20968
|
-
var config = {
|
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
|
-
|
20972
|
-
|
20973
|
-
|
20974
|
-
|
20975
|
-
|
20976
|
-
|
20977
|
-
|
20978
|
-
|
20979
|
-
|
20980
|
-
|
20981
|
-
|
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(
|
20988
|
-
|
20989
|
-
|
20990
|
-
|
20991
|
-
|
20992
|
-
|
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
|
-
|
21026
|
-
|
21027
|
-
|
21028
|
-
|
21029
|
-
|
21030
|
-
|
21031
|
-
|
21032
|
-
|
21033
|
-
|
21034
|
-
|
21035
|
-
|
21036
|
-
|
21037
|
-
|
21038
|
-
|
21039
|
-
|
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
|
-
|
21050
|
-
__exports__.ABORT_ON_REJECTION = ABORT_ON_REJECTION;
|
21283
|
+
|
21051
21284
|
function makeSettledResult(state, position, value) {
|
21052
|
-
|
21053
|
-
|
21054
|
-
|
21055
|
-
|
21056
|
-
|
21057
|
-
|
21058
|
-
|
21059
|
-
|
21060
|
-
|
21061
|
-
|
21062
|
-
|
21063
|
-
}
|
21064
|
-
|
21065
|
-
function Enumerator(Constructor, input, abortOnReject, label) {
|
21066
|
-
|
21067
|
-
|
21068
|
-
|
21069
|
-
|
21070
|
-
|
21071
|
-
|
21072
|
-
|
21073
|
-
|
21074
|
-
|
21075
|
-
|
21076
|
-
|
21077
|
-
|
21078
|
-
|
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
|
-
|
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
|
-
|
21088
|
-
|
21323
|
+
|
21324
|
+
Enumerator.prototype._validateInput = function(input) {
|
21325
|
+
return isArray(input);
|
21089
21326
|
};
|
21090
|
-
|
21091
|
-
|
21327
|
+
|
21328
|
+
Enumerator.prototype._validationError = function() {
|
21329
|
+
return new Error('Array Methods must be provided an Array');
|
21092
21330
|
};
|
21093
|
-
|
21094
|
-
|
21331
|
+
|
21332
|
+
Enumerator.prototype._init = function() {
|
21333
|
+
this._result = new Array(this.length);
|
21095
21334
|
};
|
21096
|
-
|
21097
|
-
|
21098
|
-
|
21099
|
-
|
21100
|
-
|
21101
|
-
|
21102
|
-
|
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
|
-
|
21106
|
-
|
21107
|
-
|
21108
|
-
|
21109
|
-
|
21110
|
-
|
21111
|
-
|
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
|
-
|
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
|
-
|
21120
|
-
|
21121
|
-
|
21122
|
-
|
21123
|
-
|
21124
|
-
|
21125
|
-
|
21126
|
-
|
21127
|
-
|
21128
|
-
}
|
21129
|
-
|
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
|
-
|
21134
|
-
|
21380
|
+
|
21381
|
+
Enumerator.prototype._makeResult = function(state, i, value) {
|
21382
|
+
return value;
|
21135
21383
|
};
|
21136
|
-
|
21137
|
-
|
21138
|
-
|
21139
|
-
|
21140
|
-
|
21141
|
-
|
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(
|
21146
|
-
|
21394
|
+
});
|
21395
|
+
define("rsvp/events",
|
21396
|
+
["exports"],
|
21397
|
+
function(__exports__) {
|
21398
|
+
"use strict";
|
21147
21399
|
function indexOf(callbacks, callback) {
|
21148
|
-
|
21149
|
-
|
21150
|
-
|
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
|
-
|
21157
|
-
|
21158
|
-
|
21159
|
-
}
|
21160
|
-
|
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__[
|
21166
|
-
|
21167
|
-
|
21168
|
-
|
21169
|
-
|
21170
|
-
|
21171
|
-
|
21172
|
-
}
|
21173
|
-
|
21174
|
-
|
21175
|
-
|
21176
|
-
|
21177
|
-
|
21178
|
-
|
21179
|
-
|
21180
|
-
|
21181
|
-
|
21182
|
-
|
21183
|
-
|
21184
|
-
|
21185
|
-
|
21186
|
-
|
21187
|
-
|
21188
|
-
|
21189
|
-
|
21190
|
-
|
21191
|
-
|
21192
|
-
|
21193
|
-
|
21194
|
-
}
|
21195
|
-
|
21196
|
-
|
21197
|
-
|
21198
|
-
|
21199
|
-
|
21200
|
-
|
21201
|
-
|
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(
|
21208
|
-
|
21209
|
-
|
21210
|
-
|
21211
|
-
|
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
|
-
|
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(
|
21249
|
-
var promise3 = RSVP.reject(new Error(
|
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 ===
|
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__[
|
21302
|
-
|
21303
|
-
|
21304
|
-
|
21305
|
-
|
21306
|
-
|
21307
|
-
|
21308
|
-
|
21309
|
-
|
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
|
-
|
21312
|
-
|
21313
|
-
|
21314
|
-
|
21315
|
-
|
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
|
-
|
21327
|
-
|
21328
|
-
|
21329
|
-
|
21330
|
-
|
21331
|
-
|
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__[
|
21337
|
-
var Enumerator = __dependency2__[
|
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
|
-
|
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
|
-
|
21346
|
-
|
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__[
|
21450
|
-
|
21451
|
-
}
|
21452
|
-
});
|
21453
|
-
define(
|
21454
|
-
|
21455
|
-
|
21456
|
-
|
21457
|
-
|
21458
|
-
|
21459
|
-
|
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(
|
21503
|
-
anotherRejectedPromise: RSVP.reject(new Error(
|
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 ===
|
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(
|
21916
|
+
this.example = RSVP.resolve('Example');
|
21522
21917
|
}
|
21523
21918
|
|
21524
21919
|
MyConstructor.prototype = {
|
21525
|
-
protoProperty: RSVP.resolve(
|
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:
|
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__[
|
21552
|
-
|
21553
|
-
}
|
21554
|
-
});
|
21555
|
-
define(
|
21556
|
-
|
21557
|
-
|
21558
|
-
|
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
|
-
|
21565
|
-
|
21566
|
-
|
21567
|
-
|
21568
|
-
|
21569
|
-
|
21570
|
-
|
21571
|
-
|
21572
|
-
|
21573
|
-
|
21574
|
-
|
21575
|
-
|
21576
|
-
|
21577
|
-
|
21578
|
-
|
21579
|
-
|
21580
|
-
|
21581
|
-
|
21582
|
-
|
21583
|
-
|
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(
|
21589
|
-
|
21590
|
-
|
21591
|
-
|
21592
|
-
|
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(
|
21629
|
-
var promise3 = RSVP.reject(new Error(
|
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 ===
|
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__[
|
21676
|
-
|
21677
|
-
|
21678
|
-
|
21679
|
-
|
21680
|
-
|
21681
|
-
|
21682
|
-
|
21683
|
-
|
21684
|
-
|
21685
|
-
|
21686
|
-
}
|
21687
|
-
|
21688
|
-
|
21689
|
-
|
21690
|
-
|
21691
|
-
|
21692
|
-
|
21693
|
-
|
21694
|
-
|
21695
|
-
|
21696
|
-
var Promise = __dependency1__[
|
21697
|
-
var
|
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
|
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
|
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 (
|
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__[
|
21827
|
-
|
21828
|
-
var
|
21829
|
-
|
21830
|
-
|
21831
|
-
|
21832
|
-
|
21833
|
-
|
21834
|
-
|
21835
|
-
|
21836
|
-
|
21837
|
-
|
21838
|
-
|
21839
|
-
|
21840
|
-
|
21841
|
-
|
21842
|
-
|
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
|
-
|
21845
|
-
|
21846
|
-
|
21847
|
-
|
21848
|
-
|
21849
|
-
|
21850
|
-
|
21851
|
-
|
21852
|
-
|
21853
|
-
|
21854
|
-
|
21855
|
-
|
21856
|
-
|
21857
|
-
|
21858
|
-
|
21859
|
-
|
21860
|
-
|
21861
|
-
|
21862
|
-
|
21863
|
-
|
21864
|
-
|
21865
|
-
|
21866
|
-
|
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
|
-
|
21881
|
-
|
21882
|
-
|
21883
|
-
|
21884
|
-
|
21885
|
-
|
21886
|
-
|
21887
|
-
|
21888
|
-
|
21889
|
-
|
21890
|
-
|
21891
|
-
|
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
|
-
|
22378
|
+
this._superConstructor(Constructor, object, true, label);
|
21897
22379
|
}
|
21898
|
-
|
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
|
-
|
22385
|
+
PromiseHash.prototype._init = function() {
|
22386
|
+
this._result = {};
|
21903
22387
|
};
|
21904
|
-
|
21905
|
-
|
22388
|
+
|
22389
|
+
PromiseHash.prototype._validateInput = function(input) {
|
22390
|
+
return input && typeof input === 'object';
|
21906
22391
|
};
|
21907
|
-
|
21908
|
-
|
22392
|
+
|
22393
|
+
PromiseHash.prototype._validationError = function() {
|
22394
|
+
return new Error('Promise.hash must be called with an object');
|
21909
22395
|
};
|
21910
|
-
|
21911
|
-
|
21912
|
-
|
21913
|
-
|
21914
|
-
|
21915
|
-
|
21916
|
-
|
21917
|
-
|
21918
|
-
|
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(
|
21932
|
-
|
21933
|
-
|
21934
|
-
|
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
|
21947
|
-
|
21948
|
-
var
|
21949
|
-
var
|
21950
|
-
|
21951
|
-
var noop =
|
21952
|
-
var
|
21953
|
-
var
|
21954
|
-
var
|
21955
|
-
var
|
21956
|
-
var
|
21957
|
-
|
21958
|
-
var
|
21959
|
-
var
|
21960
|
-
var
|
21961
|
-
var
|
21962
|
-
|
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
|
-
|
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
|
-
|
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__[
|
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(
|
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
|
-
|
22079
|
-
|
22080
|
-
|
22081
|
-
|
22082
|
-
|
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
|
-
|
22085
|
-
|
22086
|
-
|
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
|
-
|
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
|
-
|
22101
|
-
|
22102
|
-
|
22103
|
-
|
22104
|
-
|
22105
|
-
|
22106
|
-
|
22107
|
-
|
22108
|
-
|
22109
|
-
|
22110
|
-
|
22111
|
-
|
22112
|
-
|
22113
|
-
|
22114
|
-
|
22115
|
-
|
22116
|
-
|
22117
|
-
|
22118
|
-
|
22119
|
-
|
22120
|
-
|
22121
|
-
|
22122
|
-
|
22123
|
-
|
22124
|
-
|
22125
|
-
|
22126
|
-
|
22127
|
-
|
22128
|
-
|
22129
|
-
|
22130
|
-
|
22131
|
-
|
22132
|
-
|
22133
|
-
|
22134
|
-
|
22135
|
-
|
22136
|
-
|
22137
|
-
|
22138
|
-
|
22139
|
-
|
22140
|
-
|
22141
|
-
|
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(
|
22146
|
-
|
22147
|
-
|
22148
|
-
|
22149
|
-
|
22150
|
-
|
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__[
|
22199
|
-
|
22200
|
-
}
|
22201
|
-
});
|
22202
|
-
define(
|
22203
|
-
|
22204
|
-
|
22205
|
-
|
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
|
-
|
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(
|
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(
|
22994
|
+
resolve('promise 2');
|
22308
22995
|
}, 100);
|
22309
22996
|
});
|
22310
22997
|
|
22311
22998
|
RSVP.Promise.race([promise1, promise2]).then(function(result){
|
22312
|
-
// result ===
|
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(
|
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(
|
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 ===
|
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__[
|
22359
|
-
|
22360
|
-
|
22361
|
-
|
22362
|
-
|
22363
|
-
|
22364
|
-
|
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
|
-
|
22380
|
-
|
22381
|
-
|
22382
|
-
|
22383
|
-
|
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__[
|
22422
|
-
|
22423
|
-
|
22424
|
-
|
22425
|
-
|
22426
|
-
|
22427
|
-
}
|
22428
|
-
});
|
22429
|
-
define(
|
22430
|
-
|
22431
|
-
|
22432
|
-
|
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__[
|
22469
|
-
|
22470
|
-
|
22471
|
-
|
22472
|
-
|
22473
|
-
|
22474
|
-
|
22475
|
-
|
22476
|
-
|
22477
|
-
|
22478
|
-
|
22479
|
-
|
22480
|
-
|
22481
|
-
|
22482
|
-
],
|
22483
|
-
|
22484
|
-
|
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__[
|
22496
|
-
|
22497
|
-
}
|
22498
|
-
});
|
22499
|
-
define(
|
22500
|
-
|
22501
|
-
|
22502
|
-
|
22503
|
-
|
22504
|
-
|
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__[
|
22517
|
-
|
22518
|
-
}
|
22519
|
-
});
|
22520
|
-
define(
|
22521
|
-
|
22522
|
-
|
22523
|
-
|
22524
|
-
|
22525
|
-
|
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__[
|
22539
|
-
|
22540
|
-
}
|
22541
|
-
});
|
22542
|
-
define(
|
22543
|
-
|
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__[
|
22585
|
-
|
22586
|
-
throw reason;
|
22587
|
-
});
|
23282
|
+
__exports__["default"] = function rethrow(reason) {
|
23283
|
+
setTimeout(function() {
|
22588
23284
|
throw reason;
|
22589
|
-
|
22590
|
-
|
22591
|
-
|
22592
|
-
|
23285
|
+
});
|
23286
|
+
throw reason;
|
23287
|
+
}
|
23288
|
+
});
|
23289
|
+
define("rsvp/utils",
|
23290
|
+
["exports"],
|
23291
|
+
function(__exports__) {
|
23292
|
+
"use strict";
|
22593
23293
|
function objectOrFunction(x) {
|
22594
|
-
|
23294
|
+
return typeof x === 'function' || (typeof x === 'object' && x !== null);
|
22595
23295
|
}
|
22596
|
-
|
22597
|
-
function isFunction(x) {
|
22598
|
-
|
23296
|
+
|
23297
|
+
__exports__.objectOrFunction = objectOrFunction;function isFunction(x) {
|
23298
|
+
return typeof x === 'function';
|
22599
23299
|
}
|
22600
|
-
|
22601
|
-
function isMaybeThenable(x) {
|
22602
|
-
|
23300
|
+
|
23301
|
+
__exports__.isFunction = isFunction;function isMaybeThenable(x) {
|
23302
|
+
return typeof x === 'object' && x !== null;
|
22603
23303
|
}
|
22604
|
-
|
22605
|
-
var _isArray;
|
23304
|
+
|
23305
|
+
__exports__.isMaybeThenable = isMaybeThenable;var _isArray;
|
22606
23306
|
if (!Array.isArray) {
|
22607
|
-
|
22608
|
-
|
22609
|
-
|
23307
|
+
_isArray = function (x) {
|
23308
|
+
return Object.prototype.toString.call(x) === '[object Array]';
|
23309
|
+
};
|
22610
23310
|
} else {
|
22611
|
-
|
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
|
-
|
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
|
})();
|