ember-source 2.16.1 → 2.16.2
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 +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
|
|