ember-source 2.16.1 → 2.16.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/VERSION +1 -1
- data/dist/ember-runtime.js +287 -331
- data/dist/ember-template-compiler.js +2 -2
- data/dist/ember-testing.js +1 -1
- data/dist/ember-tests.js +239 -19
- data/dist/ember-tests.prod.js +240 -19
- data/dist/ember.debug.js +298 -340
- data/dist/ember.min.js +159 -171
- data/dist/ember.prod.js +311 -349
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3cae6aadab3a9b1f89304fc6ac6790e785131d5c
|
4
|
+
data.tar.gz: cb65a1ac3894e4b4b95a6c87c9a96bbcffa4d49a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 64632d3193ec7c79e042309d1d8ac04998d448365bbffa6fe78a756598854502d8a79369ca9366ed9ca8a0684aa26cd6ff3a3f6d76ea8df4ca31feb790dfdc66
|
7
|
+
data.tar.gz: 95f80c4940c73cce104fceb0ddbbfc44a7550530fd2458185e5ba09188d720799f0a4b5bae2e8b284146fb617bae6b968549a0a1dba4ab97771a628c9dac15f5
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
2.16.
|
1
|
+
2.16.2
|
data/dist/ember-runtime.js
CHANGED
@@ -6,7 +6,7 @@
|
|
6
6
|
* Portions Copyright 2008-2011 Apple Inc. All rights reserved.
|
7
7
|
* @license Licensed under MIT license
|
8
8
|
* See https://raw.github.com/emberjs/ember.js/master/LICENSE
|
9
|
-
* @version 2.16.
|
9
|
+
* @version 2.16.2
|
10
10
|
*/
|
11
11
|
|
12
12
|
var enifed, requireModule, Ember;
|
@@ -8776,16 +8776,6 @@ enifed('rsvp', ['exports', 'ember-babel', 'node-module'], function (exports, _em
|
|
8776
8776
|
|
8777
8777
|
var _rsvp;
|
8778
8778
|
|
8779
|
-
function indexOf(callbacks, callback) {
|
8780
|
-
for (var i = 0, l = callbacks.length; i < l; i++) {
|
8781
|
-
if (callbacks[i] === callback) {
|
8782
|
-
return i;
|
8783
|
-
}
|
8784
|
-
}
|
8785
|
-
|
8786
|
-
return -1;
|
8787
|
-
}
|
8788
|
-
|
8789
8779
|
function callbacksFor(object) {
|
8790
8780
|
var callbacks = object._promiseCallbacks;
|
8791
8781
|
|
@@ -8821,7 +8811,7 @@ enifed('rsvp', ['exports', 'ember-babel', 'node-module'], function (exports, _em
|
|
8821
8811
|
callbacks = allCallbacks[eventName] = [];
|
8822
8812
|
}
|
8823
8813
|
|
8824
|
-
if (indexOf(
|
8814
|
+
if (callbacks.indexOf(callback)) {
|
8825
8815
|
callbacks.push(callback);
|
8826
8816
|
}
|
8827
8817
|
},
|
@@ -8837,7 +8827,7 @@ enifed('rsvp', ['exports', 'ember-babel', 'node-module'], function (exports, _em
|
|
8837
8827
|
|
8838
8828
|
callbacks = allCallbacks[eventName];
|
8839
8829
|
|
8840
|
-
index = indexOf(
|
8830
|
+
index = callbacks.indexOf(callback);
|
8841
8831
|
|
8842
8832
|
if (index !== -1) {
|
8843
8833
|
callbacks.splice(index, 1);
|
@@ -8873,40 +8863,6 @@ enifed('rsvp', ['exports', 'ember-babel', 'node-module'], function (exports, _em
|
|
8873
8863
|
}
|
8874
8864
|
}
|
8875
8865
|
|
8876
|
-
function objectOrFunction(x) {
|
8877
|
-
var type = typeof x;
|
8878
|
-
return x !== null && (type === 'object' || type === 'function');
|
8879
|
-
}
|
8880
|
-
|
8881
|
-
function isFunction(x) {
|
8882
|
-
return typeof x === 'function';
|
8883
|
-
}
|
8884
|
-
|
8885
|
-
function isObject(x) {
|
8886
|
-
return x !== null && typeof x === 'object';
|
8887
|
-
}
|
8888
|
-
|
8889
|
-
function isMaybeThenable(x) {
|
8890
|
-
return x !== null && typeof x === 'object';
|
8891
|
-
}
|
8892
|
-
|
8893
|
-
var _isArray = void 0;
|
8894
|
-
if (Array.isArray) {
|
8895
|
-
_isArray = Array.isArray;
|
8896
|
-
} else {
|
8897
|
-
_isArray = function (x) {
|
8898
|
-
return Object.prototype.toString.call(x) === '[object Array]';
|
8899
|
-
};
|
8900
|
-
}
|
8901
|
-
|
8902
|
-
var isArray = _isArray;
|
8903
|
-
|
8904
|
-
// Date.now is not available in browsers < IE9
|
8905
|
-
// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/now#Compatibility
|
8906
|
-
var now = Date.now || function () {
|
8907
|
-
return new Date().getTime();
|
8908
|
-
};
|
8909
|
-
|
8910
8866
|
var queue = [];
|
8911
8867
|
|
8912
8868
|
function scheduleFlush() {
|
@@ -8938,7 +8894,7 @@ enifed('rsvp', ['exports', 'ember-babel', 'node-module'], function (exports, _em
|
|
8938
8894
|
detail: promise._result,
|
8939
8895
|
childId: child && child._id,
|
8940
8896
|
label: promise._label,
|
8941
|
-
timeStamp: now(),
|
8897
|
+
timeStamp: Date.now(),
|
8942
8898
|
error: config["instrument-with-stack"] ? new Error(promise._label) : null
|
8943
8899
|
} })) {
|
8944
8900
|
scheduleFlush();
|
@@ -8994,12 +8950,21 @@ enifed('rsvp', ['exports', 'ember-babel', 'node-module'], function (exports, _em
|
|
8994
8950
|
return new TypeError('A promises callback cannot return that same promise.');
|
8995
8951
|
}
|
8996
8952
|
|
8953
|
+
function objectOrFunction(x) {
|
8954
|
+
var type = typeof x;
|
8955
|
+
return x !== null && (type === 'object' || type === 'function');
|
8956
|
+
}
|
8957
|
+
|
8997
8958
|
function noop() {}
|
8998
8959
|
|
8999
8960
|
var PENDING = void 0;
|
9000
8961
|
var FULFILLED = 1;
|
9001
8962
|
var REJECTED = 2;
|
9002
8963
|
|
8964
|
+
function ErrorObject() {
|
8965
|
+
this.error = null;
|
8966
|
+
}
|
8967
|
+
|
9003
8968
|
var GET_THEN_ERROR = new ErrorObject();
|
9004
8969
|
|
9005
8970
|
function getThen(promise) {
|
@@ -9011,6 +8976,25 @@ enifed('rsvp', ['exports', 'ember-babel', 'node-module'], function (exports, _em
|
|
9011
8976
|
}
|
9012
8977
|
}
|
9013
8978
|
|
8979
|
+
var TRY_CATCH_ERROR = new ErrorObject();
|
8980
|
+
|
8981
|
+
var tryCatchCallback = void 0;
|
8982
|
+
function tryCatcher() {
|
8983
|
+
try {
|
8984
|
+
var target = tryCatchCallback;
|
8985
|
+
tryCatchCallback = null;
|
8986
|
+
return target.apply(this, arguments);
|
8987
|
+
} catch (e) {
|
8988
|
+
TRY_CATCH_ERROR.error = e;
|
8989
|
+
return TRY_CATCH_ERROR;
|
8990
|
+
}
|
8991
|
+
}
|
8992
|
+
|
8993
|
+
function tryCatch(fn) {
|
8994
|
+
tryCatchCallback = fn;
|
8995
|
+
return tryCatcher;
|
8996
|
+
}
|
8997
|
+
|
9014
8998
|
function tryThen(then$$1, value, fulfillmentHandler, rejectionHandler) {
|
9015
8999
|
try {
|
9016
9000
|
then$$1.call(value, fulfillmentHandler, rejectionHandler);
|
@@ -9056,10 +9040,10 @@ enifed('rsvp', ['exports', 'ember-babel', 'node-module'], function (exports, _em
|
|
9056
9040
|
reject(promise, thenable._result);
|
9057
9041
|
} else {
|
9058
9042
|
subscribe(thenable, undefined, function (value) {
|
9059
|
-
if (thenable
|
9060
|
-
resolve(promise, value, undefined);
|
9061
|
-
} else {
|
9043
|
+
if (thenable === value) {
|
9062
9044
|
fulfill(promise, value);
|
9045
|
+
} else {
|
9046
|
+
resolve(promise, value);
|
9063
9047
|
}
|
9064
9048
|
}, function (reason) {
|
9065
9049
|
return reject(promise, reason);
|
@@ -9073,9 +9057,10 @@ enifed('rsvp', ['exports', 'ember-babel', 'node-module'], function (exports, _em
|
|
9073
9057
|
if (isOwnThenable) {
|
9074
9058
|
handleOwnThenable(promise, maybeThenable);
|
9075
9059
|
} else if (then$$1 === GET_THEN_ERROR) {
|
9076
|
-
|
9060
|
+
var error = GET_THEN_ERROR.error;
|
9077
9061
|
GET_THEN_ERROR.error = null;
|
9078
|
-
|
9062
|
+
reject(promise, error);
|
9063
|
+
} else if (typeof then$$1 === 'function') {
|
9079
9064
|
handleForeignThenable(promise, maybeThenable, then$$1);
|
9080
9065
|
} else {
|
9081
9066
|
fulfill(promise, maybeThenable);
|
@@ -9171,46 +9156,26 @@ enifed('rsvp', ['exports', 'ember-babel', 'node-module'], function (exports, _em
|
|
9171
9156
|
promise._subscribers.length = 0;
|
9172
9157
|
}
|
9173
9158
|
|
9174
|
-
function ErrorObject() {
|
9175
|
-
this.error = null;
|
9176
|
-
}
|
9177
|
-
|
9178
|
-
var TRY_CATCH_ERROR = new ErrorObject();
|
9179
|
-
|
9180
|
-
function tryCatch(callback, result) {
|
9181
|
-
try {
|
9182
|
-
return callback(result);
|
9183
|
-
} catch (e) {
|
9184
|
-
TRY_CATCH_ERROR.error = e;
|
9185
|
-
return TRY_CATCH_ERROR;
|
9186
|
-
}
|
9187
|
-
}
|
9188
|
-
|
9189
9159
|
function invokeCallback(state, promise, callback, result) {
|
9190
|
-
var hasCallback =
|
9191
|
-
var value = void 0
|
9192
|
-
error = void 0;
|
9160
|
+
var hasCallback = typeof callback === 'function';
|
9161
|
+
var value = void 0;
|
9193
9162
|
|
9194
9163
|
if (hasCallback) {
|
9195
|
-
value = tryCatch(callback
|
9196
|
-
|
9197
|
-
if (value === TRY_CATCH_ERROR) {
|
9198
|
-
error = value.error;
|
9199
|
-
value.error = null; // release
|
9200
|
-
} else if (value === promise) {
|
9201
|
-
reject(promise, withOwnPromise());
|
9202
|
-
return;
|
9203
|
-
}
|
9164
|
+
value = tryCatch(callback)(result);
|
9204
9165
|
} else {
|
9205
9166
|
value = result;
|
9206
9167
|
}
|
9207
9168
|
|
9208
9169
|
if (promise._state !== PENDING) {
|
9209
9170
|
// noop
|
9210
|
-
} else if (
|
9211
|
-
|
9212
|
-
} else if (
|
9171
|
+
} else if (value === promise) {
|
9172
|
+
reject(promise, withOwnPromise());
|
9173
|
+
} else if (value === TRY_CATCH_ERROR) {
|
9174
|
+
var error = value.error;
|
9175
|
+
value.error = null; // release
|
9213
9176
|
reject(promise, error);
|
9177
|
+
} else if (hasCallback) {
|
9178
|
+
resolve(promise, value);
|
9214
9179
|
} else if (state === FULFILLED) {
|
9215
9180
|
fulfill(promise, value);
|
9216
9181
|
} else if (state === REJECTED) {
|
@@ -9267,109 +9232,118 @@ enifed('rsvp', ['exports', 'ember-babel', 'node-module'], function (exports, _em
|
|
9267
9232
|
return child;
|
9268
9233
|
}
|
9269
9234
|
|
9270
|
-
|
9271
|
-
|
9272
|
-
|
9273
|
-
this._abortOnReject = abortOnReject;
|
9235
|
+
var Enumerator = function () {
|
9236
|
+
function Enumerator(Constructor, input, abortOnReject, label) {
|
9237
|
+
(0, _emberBabel.classCallCheck)(this, Enumerator);
|
9274
9238
|
|
9275
|
-
|
9276
|
-
|
9239
|
+
this._instanceConstructor = Constructor;
|
9240
|
+
this.promise = new Constructor(noop, label);
|
9241
|
+
this._abortOnReject = abortOnReject;
|
9242
|
+
this.isUsingOwnPromise = Constructor === Promise;
|
9277
9243
|
|
9278
|
-
|
9279
|
-
var len = input.length || 0;
|
9280
|
-
this.length = len;
|
9281
|
-
this._remaining = len;
|
9282
|
-
this._result = new Array(len);
|
9283
|
-
|
9284
|
-
this._enumerate(input);
|
9285
|
-
if (this._remaining === 0) {
|
9286
|
-
fulfill(this.promise, this._result);
|
9244
|
+
this._init.apply(this, arguments);
|
9287
9245
|
}
|
9288
|
-
};
|
9289
9246
|
|
9290
|
-
|
9291
|
-
|
9292
|
-
|
9247
|
+
Enumerator.prototype._init = function _init(Constructor, input) {
|
9248
|
+
var len = input.length || 0;
|
9249
|
+
this.length = len;
|
9250
|
+
this._remaining = len;
|
9251
|
+
this._result = new Array(len);
|
9293
9252
|
|
9294
|
-
|
9295
|
-
|
9296
|
-
|
9297
|
-
|
9253
|
+
this._enumerate(input);
|
9254
|
+
};
|
9255
|
+
|
9256
|
+
Enumerator.prototype._enumerate = function _enumerate(input) {
|
9257
|
+
var length = this.length;
|
9258
|
+
var promise = this.promise;
|
9298
9259
|
|
9299
|
-
|
9300
|
-
|
9301
|
-
|
9260
|
+
for (var i = 0; promise._state === PENDING && i < length; i++) {
|
9261
|
+
this._eachEntry(input[i], i, true);
|
9262
|
+
}
|
9302
9263
|
|
9303
|
-
|
9304
|
-
|
9264
|
+
this._checkFullfillment();
|
9265
|
+
};
|
9305
9266
|
|
9306
|
-
|
9307
|
-
|
9308
|
-
this.
|
9309
|
-
} else if (typeof then$$1 !== 'function') {
|
9310
|
-
this._remaining--;
|
9311
|
-
this._result[i] = this._makeResult(FULFILLED, i, entry);
|
9312
|
-
} else if (c === Promise) {
|
9313
|
-
var promise = new c(noop);
|
9314
|
-
handleMaybeThenable(promise, entry, then$$1);
|
9315
|
-
this._willSettleAt(promise, i);
|
9316
|
-
} else {
|
9317
|
-
this._willSettleAt(new c(function (resolve$$1) {
|
9318
|
-
return resolve$$1(entry);
|
9319
|
-
}), i);
|
9267
|
+
Enumerator.prototype._checkFullfillment = function _checkFullfillment() {
|
9268
|
+
if (this._remaining === 0) {
|
9269
|
+
fulfill(this.promise, this._result);
|
9320
9270
|
}
|
9321
|
-
}
|
9322
|
-
this._willSettleAt(resolve$$1(entry), i);
|
9323
|
-
}
|
9324
|
-
};
|
9271
|
+
};
|
9325
9272
|
|
9326
|
-
|
9327
|
-
|
9328
|
-
|
9329
|
-
} else {
|
9330
|
-
this._remaining--;
|
9331
|
-
this._result[i] = this._makeResult(FULFILLED, i, entry);
|
9332
|
-
}
|
9333
|
-
};
|
9273
|
+
Enumerator.prototype._settleMaybeThenable = function _settleMaybeThenable(entry, i, firstPass) {
|
9274
|
+
var c = this._instanceConstructor;
|
9275
|
+
var resolve$$1 = c.resolve;
|
9334
9276
|
|
9335
|
-
|
9336
|
-
|
9277
|
+
if (resolve$$1 === resolve$1) {
|
9278
|
+
var then$$1 = getThen(entry);
|
9337
9279
|
|
9338
|
-
|
9339
|
-
|
9340
|
-
|
9280
|
+
if (then$$1 === then && entry._state !== PENDING) {
|
9281
|
+
entry._onError = null;
|
9282
|
+
this._settledAt(entry._state, i, entry._result, firstPass);
|
9283
|
+
} else if (typeof then$$1 !== 'function') {
|
9284
|
+
this._settledAt(FULFILLED, i, entry, firstPass);
|
9285
|
+
} else if (this.isUsingOwnPromise) {
|
9286
|
+
var promise = new c(noop);
|
9287
|
+
handleMaybeThenable(promise, entry, then$$1);
|
9288
|
+
this._willSettleAt(promise, i, firstPass);
|
9289
|
+
} else {
|
9290
|
+
this._willSettleAt(new c(function (resolve$$1) {
|
9291
|
+
return resolve$$1(entry);
|
9292
|
+
}), i, firstPass);
|
9293
|
+
}
|
9341
9294
|
} else {
|
9342
|
-
this.
|
9343
|
-
|
9344
|
-
|
9345
|
-
|
9295
|
+
this._willSettleAt(resolve$$1(entry), i, firstPass);
|
9296
|
+
}
|
9297
|
+
};
|
9298
|
+
|
9299
|
+
Enumerator.prototype._eachEntry = function _eachEntry(entry, i, firstPass) {
|
9300
|
+
if (entry !== null && typeof entry === 'object') {
|
9301
|
+
this._settleMaybeThenable(entry, i, firstPass);
|
9302
|
+
} else {
|
9303
|
+
this._setResultAt(FULFILLED, i, entry, firstPass);
|
9304
|
+
}
|
9305
|
+
};
|
9306
|
+
|
9307
|
+
Enumerator.prototype._settledAt = function _settledAt(state, i, value, firstPass) {
|
9308
|
+
var promise = this.promise;
|
9309
|
+
|
9310
|
+
if (promise._state === PENDING) {
|
9311
|
+
if (this._abortOnReject && state === REJECTED) {
|
9312
|
+
reject(promise, value);
|
9313
|
+
} else {
|
9314
|
+
this._setResultAt(state, i, value, firstPass);
|
9315
|
+
this._checkFullfillment();
|
9346
9316
|
}
|
9347
9317
|
}
|
9348
|
-
}
|
9349
|
-
};
|
9318
|
+
};
|
9350
9319
|
|
9351
|
-
|
9352
|
-
|
9353
|
-
|
9320
|
+
Enumerator.prototype._setResultAt = function _setResultAt(state, i, value, firstPass) {
|
9321
|
+
this._remaining--;
|
9322
|
+
this._result[i] = value;
|
9323
|
+
};
|
9354
9324
|
|
9355
|
-
|
9356
|
-
|
9325
|
+
Enumerator.prototype._willSettleAt = function _willSettleAt(promise, i, firstPass) {
|
9326
|
+
var _this = this;
|
9357
9327
|
|
9358
|
-
|
9359
|
-
|
9360
|
-
|
9361
|
-
|
9362
|
-
|
9363
|
-
|
9328
|
+
subscribe(promise, undefined, function (value) {
|
9329
|
+
return _this._settledAt(FULFILLED, i, value, firstPass);
|
9330
|
+
}, function (reason) {
|
9331
|
+
return _this._settledAt(REJECTED, i, reason, firstPass);
|
9332
|
+
});
|
9333
|
+
};
|
9364
9334
|
|
9365
|
-
|
9335
|
+
return Enumerator;
|
9336
|
+
}();
|
9337
|
+
|
9338
|
+
function setSettledResult(state, i, value) {
|
9339
|
+
this._remaining--;
|
9366
9340
|
if (state === FULFILLED) {
|
9367
|
-
|
9341
|
+
this._result[i] = {
|
9368
9342
|
state: 'fulfilled',
|
9369
9343
|
value: value
|
9370
9344
|
};
|
9371
9345
|
} else {
|
9372
|
-
|
9346
|
+
this._result[i] = {
|
9373
9347
|
state: 'rejected',
|
9374
9348
|
reason: value
|
9375
9349
|
};
|
@@ -9424,7 +9398,7 @@ enifed('rsvp', ['exports', 'ember-babel', 'node-module'], function (exports, _em
|
|
9424
9398
|
@static
|
9425
9399
|
*/
|
9426
9400
|
function all(entries, label) {
|
9427
|
-
if (!isArray(entries)) {
|
9401
|
+
if (!Array.isArray(entries)) {
|
9428
9402
|
return this.reject(new TypeError("Promise.all must be called with an array"), label);
|
9429
9403
|
}
|
9430
9404
|
return new Enumerator(this, entries, true /* abort on reject */, label).promise;
|
@@ -9502,7 +9476,7 @@ enifed('rsvp', ['exports', 'ember-babel', 'node-module'], function (exports, _em
|
|
9502
9476
|
|
9503
9477
|
var promise = new Constructor(noop, label);
|
9504
9478
|
|
9505
|
-
if (!isArray(entries)) {
|
9479
|
+
if (!Array.isArray(entries)) {
|
9506
9480
|
reject(promise, new TypeError('Promise.race must be called with an array'));
|
9507
9481
|
return promise;
|
9508
9482
|
}
|
@@ -9561,7 +9535,7 @@ enifed('rsvp', ['exports', 'ember-babel', 'node-module'], function (exports, _em
|
|
9561
9535
|
return promise;
|
9562
9536
|
}
|
9563
9537
|
|
9564
|
-
var guidKey = 'rsvp_' + now() + '-';
|
9538
|
+
var guidKey = 'rsvp_' + Date.now() + '-';
|
9565
9539
|
var counter = 0;
|
9566
9540
|
|
9567
9541
|
function needsResolver() {
|
@@ -9676,117 +9650,56 @@ enifed('rsvp', ['exports', 'ember-babel', 'node-module'], function (exports, _em
|
|
9676
9650
|
Useful for tooling.
|
9677
9651
|
@constructor
|
9678
9652
|
*/
|
9679
|
-
function Promise(resolver, label) {
|
9680
|
-
this._id = counter++;
|
9681
|
-
this._label = label;
|
9682
|
-
this._state = undefined;
|
9683
|
-
this._result = undefined;
|
9684
|
-
this._subscribers = [];
|
9685
9653
|
|
9686
|
-
|
9654
|
+
var Promise = function () {
|
9655
|
+
function Promise(resolver, label) {
|
9656
|
+
(0, _emberBabel.classCallCheck)(this, Promise);
|
9687
9657
|
|
9688
|
-
|
9689
|
-
|
9690
|
-
this
|
9691
|
-
|
9692
|
-
|
9658
|
+
this._id = counter++;
|
9659
|
+
this._label = label;
|
9660
|
+
this._state = undefined;
|
9661
|
+
this._result = undefined;
|
9662
|
+
this._subscribers = [];
|
9693
9663
|
|
9694
|
-
|
9695
|
-
var _this = this;
|
9664
|
+
config.instrument && instrument('created', this);
|
9696
9665
|
|
9697
|
-
|
9698
|
-
|
9699
|
-
|
9666
|
+
if (noop !== resolver) {
|
9667
|
+
typeof resolver !== 'function' && needsResolver();
|
9668
|
+
this instanceof Promise ? initializePromise(this, resolver) : needsNew();
|
9700
9669
|
}
|
9701
|
-
});
|
9702
|
-
};
|
9703
|
-
|
9704
|
-
/**
|
9705
|
-
`catch` is simply sugar for `then(undefined, onRejection)` which makes it the same
|
9706
|
-
as the catch block of a try/catch statement.
|
9707
|
-
|
9708
|
-
```js
|
9709
|
-
function findAuthor(){
|
9710
|
-
throw new Error('couldn\'t find that author');
|
9711
9670
|
}
|
9712
|
-
|
9713
|
-
// synchronous
|
9714
|
-
try {
|
9715
|
-
findAuthor();
|
9716
|
-
} catch(reason) {
|
9717
|
-
// something went wrong
|
9718
|
-
}
|
9719
|
-
|
9720
|
-
// async with promises
|
9721
|
-
findAuthor().catch(function(reason){
|
9722
|
-
// something went wrong
|
9723
|
-
});
|
9724
|
-
```
|
9725
|
-
|
9726
|
-
@method catch
|
9727
|
-
@param {Function} onRejection
|
9728
|
-
@param {String} label optional string for labeling the promise.
|
9729
|
-
Useful for tooling.
|
9730
|
-
@return {Promise}
|
9731
|
-
*/
|
9732
|
-
Promise.prototype.catch = function (onRejection, label) {
|
9733
|
-
return this.then(undefined, onRejection, label);
|
9734
|
-
};
|
9735
9671
|
|
9736
|
-
|
9737
|
-
|
9738
|
-
try/catch/finally behaves
|
9739
|
-
|
9740
|
-
Synchronous example:
|
9741
|
-
|
9742
|
-
```js
|
9743
|
-
findAuthor() {
|
9744
|
-
if (Math.random() > 0.5) {
|
9745
|
-
throw new Error();
|
9746
|
-
}
|
9747
|
-
return new Author();
|
9748
|
-
}
|
9749
|
-
|
9750
|
-
try {
|
9751
|
-
return findAuthor(); // succeed or fail
|
9752
|
-
} catch(error) {
|
9753
|
-
return findOtherAuthor();
|
9754
|
-
} finally {
|
9755
|
-
// always runs
|
9756
|
-
// doesn't affect the return value
|
9757
|
-
}
|
9758
|
-
```
|
9759
|
-
|
9760
|
-
Asynchronous example:
|
9761
|
-
|
9762
|
-
```js
|
9763
|
-
findAuthor().catch(function(reason){
|
9764
|
-
return findOtherAuthor();
|
9765
|
-
}).finally(function(){
|
9766
|
-
// author was either found, or not
|
9767
|
-
});
|
9768
|
-
```
|
9769
|
-
|
9770
|
-
@method finally
|
9771
|
-
@param {Function} callback
|
9772
|
-
@param {String} label optional string for labeling the promise.
|
9773
|
-
Useful for tooling.
|
9774
|
-
@return {Promise}
|
9775
|
-
*/
|
9776
|
-
Promise.prototype.finally = function (callback, label) {
|
9777
|
-
var promise = this;
|
9778
|
-
var constructor = promise.constructor;
|
9672
|
+
Promise.prototype._onError = function _onError(reason) {
|
9673
|
+
var _this2 = this;
|
9779
9674
|
|
9780
|
-
|
9781
|
-
|
9782
|
-
|
9783
|
-
|
9784
|
-
}, function (reason) {
|
9785
|
-
return constructor.resolve(callback()).then(function () {
|
9786
|
-
throw reason;
|
9675
|
+
config.after(function () {
|
9676
|
+
if (_this2._onError) {
|
9677
|
+
config.trigger('error', reason, _this2._label);
|
9678
|
+
}
|
9787
9679
|
});
|
9788
|
-
}
|
9789
|
-
|
9680
|
+
};
|
9681
|
+
|
9682
|
+
Promise.prototype.catch = function _catch(onRejection, label) {
|
9683
|
+
return this.then(undefined, onRejection, label);
|
9684
|
+
};
|
9685
|
+
|
9686
|
+
Promise.prototype.finally = function _finally(callback, label) {
|
9687
|
+
var promise = this;
|
9688
|
+
var constructor = promise.constructor;
|
9689
|
+
|
9690
|
+
return promise.then(function (value) {
|
9691
|
+
return constructor.resolve(callback()).then(function () {
|
9692
|
+
return value;
|
9693
|
+
});
|
9694
|
+
}, function (reason) {
|
9695
|
+
return constructor.resolve(callback()).then(function () {
|
9696
|
+
throw reason;
|
9697
|
+
});
|
9698
|
+
}, label);
|
9699
|
+
};
|
9700
|
+
|
9701
|
+
return Promise;
|
9702
|
+
}();
|
9790
9703
|
|
9791
9704
|
Promise.cast = resolve$1; // deprecated
|
9792
9705
|
Promise.all = all;
|
@@ -10208,7 +10121,7 @@ enifed('rsvp', ['exports', 'ember-babel', 'node-module'], function (exports, _em
|
|
10208
10121
|
var promise = new Promise(noop);
|
10209
10122
|
|
10210
10123
|
args[l] = function (err, val) {
|
10211
|
-
if (err) reject(promise, err);else if (options === undefined) resolve(promise, val);else if (options === true) resolve(promise, arrayResult(arguments));else if (isArray(options)) resolve(promise, makeObject(arguments, options));else resolve(promise, val);
|
10124
|
+
if (err) reject(promise, err);else if (options === undefined) resolve(promise, val);else if (options === true) resolve(promise, arrayResult(arguments));else if (Array.isArray(options)) resolve(promise, makeObject(arguments, options));else resolve(promise, val);
|
10212
10125
|
};
|
10213
10126
|
|
10214
10127
|
if (promiseInput) {
|
@@ -10279,7 +10192,7 @@ enifed('rsvp', ['exports', 'ember-babel', 'node-module'], function (exports, _em
|
|
10279
10192
|
return AllSettled;
|
10280
10193
|
}(Enumerator);
|
10281
10194
|
|
10282
|
-
AllSettled.prototype.
|
10195
|
+
AllSettled.prototype._setResultAt = setSettledResult;
|
10283
10196
|
|
10284
10197
|
/**
|
10285
10198
|
`RSVP.allSettled` is similar to `RSVP.all`, but instead of implementing
|
@@ -10327,7 +10240,7 @@ enifed('rsvp', ['exports', 'ember-babel', 'node-module'], function (exports, _em
|
|
10327
10240
|
*/
|
10328
10241
|
|
10329
10242
|
function allSettled(entries, label) {
|
10330
|
-
if (!isArray(entries)) {
|
10243
|
+
if (!Array.isArray(entries)) {
|
10331
10244
|
return Promise.reject(new TypeError("Promise.allSettled must be called with an array"), label);
|
10332
10245
|
}
|
10333
10246
|
|
@@ -10484,7 +10397,7 @@ enifed('rsvp', ['exports', 'ember-babel', 'node-module'], function (exports, _em
|
|
10484
10397
|
have been fulfilled, or rejected if any of them become rejected.
|
10485
10398
|
*/
|
10486
10399
|
function hash(object, label) {
|
10487
|
-
if (
|
10400
|
+
if (object === null || typeof object !== 'object') {
|
10488
10401
|
return Promise.reject(new TypeError("Promise.hash must be called with an object"), label);
|
10489
10402
|
}
|
10490
10403
|
|
@@ -10502,7 +10415,7 @@ enifed('rsvp', ['exports', 'ember-babel', 'node-module'], function (exports, _em
|
|
10502
10415
|
return HashSettled;
|
10503
10416
|
}(PromiseHash);
|
10504
10417
|
|
10505
|
-
HashSettled.prototype.
|
10418
|
+
HashSettled.prototype._setResultAt = setSettledResult;
|
10506
10419
|
|
10507
10420
|
/**
|
10508
10421
|
`RSVP.hashSettled` is similar to `RSVP.allSettled`, but takes an object
|
@@ -10607,7 +10520,7 @@ enifed('rsvp', ['exports', 'ember-babel', 'node-module'], function (exports, _em
|
|
10607
10520
|
*/
|
10608
10521
|
|
10609
10522
|
function hashSettled(object, label) {
|
10610
|
-
if (
|
10523
|
+
if (object === null || typeof object !== 'object') {
|
10611
10524
|
return Promise.reject(new TypeError("RSVP.hashSettled must be called with an object"), label);
|
10612
10525
|
}
|
10613
10526
|
|
@@ -10705,12 +10618,46 @@ enifed('rsvp', ['exports', 'ember-babel', 'node-module'], function (exports, _em
|
|
10705
10618
|
return deferred;
|
10706
10619
|
}
|
10707
10620
|
|
10621
|
+
var MapEnumerator = function (_Enumerator3) {
|
10622
|
+
(0, _emberBabel.inherits)(MapEnumerator, _Enumerator3);
|
10623
|
+
|
10624
|
+
function MapEnumerator(Constructor, entries, mapFn, label) {
|
10625
|
+
(0, _emberBabel.classCallCheck)(this, MapEnumerator);
|
10626
|
+
return (0, _emberBabel.possibleConstructorReturn)(this, _Enumerator3.call(this, Constructor, entries, true, label, mapFn));
|
10627
|
+
}
|
10628
|
+
|
10629
|
+
MapEnumerator.prototype._init = function _init(Constructor, input, bool, label, mapFn) {
|
10630
|
+
var len = input.length || 0;
|
10631
|
+
this.length = len;
|
10632
|
+
this._remaining = len;
|
10633
|
+
this._result = new Array(len);
|
10634
|
+
this._mapFn = mapFn;
|
10635
|
+
|
10636
|
+
this._enumerate(input);
|
10637
|
+
};
|
10638
|
+
|
10639
|
+
MapEnumerator.prototype._setResultAt = function _setResultAt(state, i, value, firstPass) {
|
10640
|
+
if (firstPass) {
|
10641
|
+
var val = tryCatch(this._mapFn)(value, i);
|
10642
|
+
if (val === TRY_CATCH_ERROR) {
|
10643
|
+
this._settledAt(REJECTED, i, val.error, false);
|
10644
|
+
} else {
|
10645
|
+
this._eachEntry(val, i, false);
|
10646
|
+
}
|
10647
|
+
} else {
|
10648
|
+
this._remaining--;
|
10649
|
+
this._result[i] = value;
|
10650
|
+
}
|
10651
|
+
};
|
10652
|
+
|
10653
|
+
return MapEnumerator;
|
10654
|
+
}(Enumerator);
|
10655
|
+
|
10708
10656
|
/**
|
10709
|
-
`RSVP.map` is similar to JavaScript's native `map` method
|
10710
|
-
|
10711
|
-
|
10712
|
-
|
10713
|
-
become fulfilled with.
|
10657
|
+
`RSVP.map` is similar to JavaScript's native `map` method. `mapFn` is eagerly called
|
10658
|
+
meaning that as soon as any promise resolves its value will be passed to `mapFn`.
|
10659
|
+
`RSVP.map` returns a promise that will become fulfilled with the result of running
|
10660
|
+
`mapFn` on the values the promises become fulfilled with.
|
10714
10661
|
|
10715
10662
|
For example:
|
10716
10663
|
|
@@ -10784,24 +10731,15 @@ enifed('rsvp', ['exports', 'ember-babel', 'node-module'], function (exports, _em
|
|
10784
10731
|
@static
|
10785
10732
|
*/
|
10786
10733
|
function map(promises, mapFn, label) {
|
10787
|
-
if (!isArray(promises)) {
|
10734
|
+
if (!Array.isArray(promises)) {
|
10788
10735
|
return Promise.reject(new TypeError("RSVP.map must be called with an array"), label);
|
10789
10736
|
}
|
10790
10737
|
|
10791
|
-
if (
|
10738
|
+
if (typeof mapFn !== 'function') {
|
10792
10739
|
return Promise.reject(new TypeError("RSVP.map expects a function as a second argument"), label);
|
10793
10740
|
}
|
10794
10741
|
|
10795
|
-
return Promise
|
10796
|
-
var length = values.length;
|
10797
|
-
var results = new Array(length);
|
10798
|
-
|
10799
|
-
for (var i = 0; i < length; i++) {
|
10800
|
-
results[i] = mapFn(values[i]);
|
10801
|
-
}
|
10802
|
-
|
10803
|
-
return Promise.all(results, label);
|
10804
|
-
});
|
10742
|
+
return new MapEnumerator(Promise, promises, mapFn, label).promise;
|
10805
10743
|
}
|
10806
10744
|
|
10807
10745
|
/**
|
@@ -10835,12 +10773,62 @@ enifed('rsvp', ['exports', 'ember-babel', 'node-module'], function (exports, _em
|
|
10835
10773
|
return Promise.reject(reason, label);
|
10836
10774
|
}
|
10837
10775
|
|
10776
|
+
var EMPTY_OBJECT = {};
|
10777
|
+
|
10778
|
+
var FilterEnumerator = function (_Enumerator4) {
|
10779
|
+
(0, _emberBabel.inherits)(FilterEnumerator, _Enumerator4);
|
10780
|
+
|
10781
|
+
function FilterEnumerator(Constructor, entries, filterFn, label) {
|
10782
|
+
(0, _emberBabel.classCallCheck)(this, FilterEnumerator);
|
10783
|
+
return (0, _emberBabel.possibleConstructorReturn)(this, _Enumerator4.call(this, Constructor, entries, true, label, filterFn));
|
10784
|
+
}
|
10785
|
+
|
10786
|
+
FilterEnumerator.prototype._init = function _init(Constructor, input, bool, label, filterFn) {
|
10787
|
+
var len = input.length || 0;
|
10788
|
+
this.length = len;
|
10789
|
+
this._remaining = len;
|
10790
|
+
|
10791
|
+
this._result = new Array(len);
|
10792
|
+
this._filterFn = filterFn;
|
10793
|
+
|
10794
|
+
this._enumerate(input);
|
10795
|
+
};
|
10796
|
+
|
10797
|
+
FilterEnumerator.prototype._checkFullfillment = function _checkFullfillment() {
|
10798
|
+
if (this._remaining === 0) {
|
10799
|
+
this._result = this._result.filter(function (val) {
|
10800
|
+
return val !== EMPTY_OBJECT;
|
10801
|
+
});
|
10802
|
+
fulfill(this.promise, this._result);
|
10803
|
+
}
|
10804
|
+
};
|
10805
|
+
|
10806
|
+
FilterEnumerator.prototype._setResultAt = function _setResultAt(state, i, value, firstPass) {
|
10807
|
+
if (firstPass) {
|
10808
|
+
this._result[i] = value;
|
10809
|
+
var val = tryCatch(this._filterFn)(value, i);
|
10810
|
+
if (val === TRY_CATCH_ERROR) {
|
10811
|
+
this._settledAt(REJECTED, i, val.error, false);
|
10812
|
+
} else {
|
10813
|
+
this._eachEntry(val, i, false);
|
10814
|
+
}
|
10815
|
+
} else {
|
10816
|
+
this._remaining--;
|
10817
|
+
if (!value) {
|
10818
|
+
this._result[i] = EMPTY_OBJECT;
|
10819
|
+
}
|
10820
|
+
}
|
10821
|
+
};
|
10822
|
+
|
10823
|
+
return FilterEnumerator;
|
10824
|
+
}(Enumerator);
|
10825
|
+
|
10838
10826
|
/**
|
10839
|
-
`RSVP.filter` is similar to JavaScript's native `filter` method
|
10840
|
-
|
10841
|
-
|
10842
|
-
become fulfilled with the result of running
|
10843
|
-
promises become fulfilled with.
|
10827
|
+
`RSVP.filter` is similar to JavaScript's native `filter` method.
|
10828
|
+
`filterFn` is eagerly called meaning that as soon as any promise
|
10829
|
+
resolves its value will be passed to `filterFn`. `RSVP.filter` returns
|
10830
|
+
a promise that will become fulfilled with the result of running
|
10831
|
+
`filterFn` on the values the promises become fulfilled with.
|
10844
10832
|
|
10845
10833
|
For example:
|
10846
10834
|
|
@@ -10921,49 +10909,17 @@ enifed('rsvp', ['exports', 'ember-babel', 'node-module'], function (exports, _em
|
|
10921
10909
|
@return {Promise}
|
10922
10910
|
*/
|
10923
10911
|
|
10924
|
-
function resolveAll(promises, label) {
|
10925
|
-
return Promise.all(promises, label);
|
10926
|
-
}
|
10927
|
-
|
10928
|
-
function resolveSingle(promise, label) {
|
10929
|
-
return Promise.resolve(promise, label).then(function (promises) {
|
10930
|
-
return resolveAll(promises, label);
|
10931
|
-
});
|
10932
|
-
}
|
10933
|
-
|
10934
10912
|
function filter(promises, filterFn, label) {
|
10935
|
-
if (!isArray(promises) && !(
|
10913
|
+
if (!Array.isArray(promises) && !(promises !== null && typeof promises === 'object' && promises.then !== undefined)) {
|
10936
10914
|
return Promise.reject(new TypeError("RSVP.filter must be called with an array or promise"), label);
|
10937
10915
|
}
|
10938
10916
|
|
10939
|
-
if (
|
10917
|
+
if (typeof filterFn !== 'function') {
|
10940
10918
|
return Promise.reject(new TypeError("RSVP.filter expects function as a second argument"), label);
|
10941
10919
|
}
|
10942
10920
|
|
10943
|
-
|
10944
|
-
|
10945
|
-
var length = values.length;
|
10946
|
-
var filtered = new Array(length);
|
10947
|
-
|
10948
|
-
for (var i = 0; i < length; i++) {
|
10949
|
-
filtered[i] = filterFn(values[i]);
|
10950
|
-
}
|
10951
|
-
|
10952
|
-
return resolveAll(filtered, label).then(function (filtered) {
|
10953
|
-
var results = new Array(length);
|
10954
|
-
var newLength = 0;
|
10955
|
-
|
10956
|
-
for (var _i = 0; _i < length; _i++) {
|
10957
|
-
if (filtered[_i]) {
|
10958
|
-
results[newLength] = values[_i];
|
10959
|
-
newLength++;
|
10960
|
-
}
|
10961
|
-
}
|
10962
|
-
|
10963
|
-
results.length = newLength;
|
10964
|
-
|
10965
|
-
return results;
|
10966
|
-
});
|
10921
|
+
return Promise.resolve(promises, label).then(function (promises) {
|
10922
|
+
return new FilterEnumerator(Promise, promises, filterFn, label).promise;
|
10967
10923
|
});
|
10968
10924
|
}
|
10969
10925
|
|