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.
@@ -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.1
9
+ * @version 2.16.2
10
10
  */
11
11
 
12
12
  var enifed, requireModule, Ember;
@@ -5109,26 +5109,28 @@ enifed('@glimmer/runtime', ['exports', '@glimmer/util', '@glimmer/reference', '@
5109
5109
  var partial = _partial;
5110
5110
  var partialSymbols = partial.symbolTable.symbols;
5111
5111
  var outerScope = vm.scope();
5112
+ var evalScope = outerScope.getEvalScope();
5112
5113
  var partialScope = vm.pushRootScope(partialSymbols.length, false);
5113
5114
  partialScope.bindCallerScope(outerScope.getCallerScope());
5114
- partialScope.bindEvalScope(outerScope.getEvalScope());
5115
+ partialScope.bindEvalScope(evalScope);
5115
5116
  partialScope.bindSelf(outerScope.getSelf());
5116
5117
  var evalInfo = this.evalInfo,
5117
5118
  outerSymbols = this.outerSymbols;
5118
5119
 
5119
- var locals = (0, _util.dict)();
5120
+ var locals = Object.create(outerScope.getPartialMap());
5120
5121
  for (var i = 0; i < evalInfo.length; i++) {
5121
5122
  var slot = evalInfo[i];
5122
5123
  var name = outerSymbols[slot - 1];
5123
5124
  var ref = outerScope.getSymbol(slot);
5124
5125
  locals[name] = ref;
5125
5126
  }
5126
- var evalScope = outerScope.getEvalScope();
5127
- for (var _i2 = 0; _i2 < partialSymbols.length; _i2++) {
5128
- var _name = partialSymbols[_i2];
5129
- var symbol = _i2 + 1;
5130
- var value = evalScope[_name];
5131
- if (value !== undefined) partialScope.bind(symbol, value);
5127
+ if (evalScope) {
5128
+ for (var _i2 = 0; _i2 < partialSymbols.length; _i2++) {
5129
+ var _name = partialSymbols[_i2];
5130
+ var symbol = _i2 + 1;
5131
+ var value = evalScope[_name];
5132
+ if (value !== undefined) partialScope.bind(symbol, value);
5133
+ }
5132
5134
  }
5133
5135
  partialScope.bindPartialMap(locals);
5134
5136
  vm.pushFrame();
@@ -48437,7 +48439,7 @@ enifed('ember/index', ['exports', 'require', 'ember-environment', 'node-module',
48437
48439
  enifed("ember/version", ["exports"], function (exports) {
48438
48440
  "use strict";
48439
48441
 
48440
- exports.default = "2.16.1";
48442
+ exports.default = "2.16.2";
48441
48443
  });
48442
48444
  enifed("handlebars", ["exports"], function (exports) {
48443
48445
  "use strict";
@@ -52752,16 +52754,6 @@ enifed('rsvp', ['exports', 'ember-babel', 'node-module'], function (exports, _em
52752
52754
 
52753
52755
  var _rsvp;
52754
52756
 
52755
- function indexOf(callbacks, callback) {
52756
- for (var i = 0, l = callbacks.length; i < l; i++) {
52757
- if (callbacks[i] === callback) {
52758
- return i;
52759
- }
52760
- }
52761
-
52762
- return -1;
52763
- }
52764
-
52765
52757
  function callbacksFor(object) {
52766
52758
  var callbacks = object._promiseCallbacks;
52767
52759
 
@@ -52797,7 +52789,7 @@ enifed('rsvp', ['exports', 'ember-babel', 'node-module'], function (exports, _em
52797
52789
  callbacks = allCallbacks[eventName] = [];
52798
52790
  }
52799
52791
 
52800
- if (indexOf(callbacks, callback) === -1) {
52792
+ if (callbacks.indexOf(callback)) {
52801
52793
  callbacks.push(callback);
52802
52794
  }
52803
52795
  },
@@ -52813,7 +52805,7 @@ enifed('rsvp', ['exports', 'ember-babel', 'node-module'], function (exports, _em
52813
52805
 
52814
52806
  callbacks = allCallbacks[eventName];
52815
52807
 
52816
- index = indexOf(callbacks, callback);
52808
+ index = callbacks.indexOf(callback);
52817
52809
 
52818
52810
  if (index !== -1) {
52819
52811
  callbacks.splice(index, 1);
@@ -52849,40 +52841,6 @@ enifed('rsvp', ['exports', 'ember-babel', 'node-module'], function (exports, _em
52849
52841
  }
52850
52842
  }
52851
52843
 
52852
- function objectOrFunction(x) {
52853
- var type = typeof x;
52854
- return x !== null && (type === 'object' || type === 'function');
52855
- }
52856
-
52857
- function isFunction(x) {
52858
- return typeof x === 'function';
52859
- }
52860
-
52861
- function isObject(x) {
52862
- return x !== null && typeof x === 'object';
52863
- }
52864
-
52865
- function isMaybeThenable(x) {
52866
- return x !== null && typeof x === 'object';
52867
- }
52868
-
52869
- var _isArray = void 0;
52870
- if (Array.isArray) {
52871
- _isArray = Array.isArray;
52872
- } else {
52873
- _isArray = function (x) {
52874
- return Object.prototype.toString.call(x) === '[object Array]';
52875
- };
52876
- }
52877
-
52878
- var isArray = _isArray;
52879
-
52880
- // Date.now is not available in browsers < IE9
52881
- // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/now#Compatibility
52882
- var now = Date.now || function () {
52883
- return new Date().getTime();
52884
- };
52885
-
52886
52844
  var queue = [];
52887
52845
 
52888
52846
  function scheduleFlush() {
@@ -52914,7 +52872,7 @@ enifed('rsvp', ['exports', 'ember-babel', 'node-module'], function (exports, _em
52914
52872
  detail: promise._result,
52915
52873
  childId: child && child._id,
52916
52874
  label: promise._label,
52917
- timeStamp: now(),
52875
+ timeStamp: Date.now(),
52918
52876
  error: config["instrument-with-stack"] ? new Error(promise._label) : null
52919
52877
  } })) {
52920
52878
  scheduleFlush();
@@ -52970,12 +52928,21 @@ enifed('rsvp', ['exports', 'ember-babel', 'node-module'], function (exports, _em
52970
52928
  return new TypeError('A promises callback cannot return that same promise.');
52971
52929
  }
52972
52930
 
52931
+ function objectOrFunction(x) {
52932
+ var type = typeof x;
52933
+ return x !== null && (type === 'object' || type === 'function');
52934
+ }
52935
+
52973
52936
  function noop() {}
52974
52937
 
52975
52938
  var PENDING = void 0;
52976
52939
  var FULFILLED = 1;
52977
52940
  var REJECTED = 2;
52978
52941
 
52942
+ function ErrorObject() {
52943
+ this.error = null;
52944
+ }
52945
+
52979
52946
  var GET_THEN_ERROR = new ErrorObject();
52980
52947
 
52981
52948
  function getThen(promise) {
@@ -52987,6 +52954,25 @@ enifed('rsvp', ['exports', 'ember-babel', 'node-module'], function (exports, _em
52987
52954
  }
52988
52955
  }
52989
52956
 
52957
+ var TRY_CATCH_ERROR = new ErrorObject();
52958
+
52959
+ var tryCatchCallback = void 0;
52960
+ function tryCatcher() {
52961
+ try {
52962
+ var target = tryCatchCallback;
52963
+ tryCatchCallback = null;
52964
+ return target.apply(this, arguments);
52965
+ } catch (e) {
52966
+ TRY_CATCH_ERROR.error = e;
52967
+ return TRY_CATCH_ERROR;
52968
+ }
52969
+ }
52970
+
52971
+ function tryCatch(fn) {
52972
+ tryCatchCallback = fn;
52973
+ return tryCatcher;
52974
+ }
52975
+
52990
52976
  function tryThen(then$$1, value, fulfillmentHandler, rejectionHandler) {
52991
52977
  try {
52992
52978
  then$$1.call(value, fulfillmentHandler, rejectionHandler);
@@ -53032,10 +53018,10 @@ enifed('rsvp', ['exports', 'ember-babel', 'node-module'], function (exports, _em
53032
53018
  reject(promise, thenable._result);
53033
53019
  } else {
53034
53020
  subscribe(thenable, undefined, function (value) {
53035
- if (thenable !== value) {
53036
- resolve(promise, value, undefined);
53037
- } else {
53021
+ if (thenable === value) {
53038
53022
  fulfill(promise, value);
53023
+ } else {
53024
+ resolve(promise, value);
53039
53025
  }
53040
53026
  }, function (reason) {
53041
53027
  return reject(promise, reason);
@@ -53049,9 +53035,10 @@ enifed('rsvp', ['exports', 'ember-babel', 'node-module'], function (exports, _em
53049
53035
  if (isOwnThenable) {
53050
53036
  handleOwnThenable(promise, maybeThenable);
53051
53037
  } else if (then$$1 === GET_THEN_ERROR) {
53052
- reject(promise, GET_THEN_ERROR.error);
53038
+ var error = GET_THEN_ERROR.error;
53053
53039
  GET_THEN_ERROR.error = null;
53054
- } else if (isFunction(then$$1)) {
53040
+ reject(promise, error);
53041
+ } else if (typeof then$$1 === 'function') {
53055
53042
  handleForeignThenable(promise, maybeThenable, then$$1);
53056
53043
  } else {
53057
53044
  fulfill(promise, maybeThenable);
@@ -53147,46 +53134,26 @@ enifed('rsvp', ['exports', 'ember-babel', 'node-module'], function (exports, _em
53147
53134
  promise._subscribers.length = 0;
53148
53135
  }
53149
53136
 
53150
- function ErrorObject() {
53151
- this.error = null;
53152
- }
53153
-
53154
- var TRY_CATCH_ERROR = new ErrorObject();
53155
-
53156
- function tryCatch(callback, result) {
53157
- try {
53158
- return callback(result);
53159
- } catch (e) {
53160
- TRY_CATCH_ERROR.error = e;
53161
- return TRY_CATCH_ERROR;
53162
- }
53163
- }
53164
-
53165
53137
  function invokeCallback(state, promise, callback, result) {
53166
- var hasCallback = isFunction(callback);
53167
- var value = void 0,
53168
- error = void 0;
53138
+ var hasCallback = typeof callback === 'function';
53139
+ var value = void 0;
53169
53140
 
53170
53141
  if (hasCallback) {
53171
- value = tryCatch(callback, result);
53172
-
53173
- if (value === TRY_CATCH_ERROR) {
53174
- error = value.error;
53175
- value.error = null; // release
53176
- } else if (value === promise) {
53177
- reject(promise, withOwnPromise());
53178
- return;
53179
- }
53142
+ value = tryCatch(callback)(result);
53180
53143
  } else {
53181
53144
  value = result;
53182
53145
  }
53183
53146
 
53184
53147
  if (promise._state !== PENDING) {
53185
53148
  // noop
53186
- } else if (hasCallback && error === undefined) {
53187
- resolve(promise, value);
53188
- } else if (error !== undefined) {
53149
+ } else if (value === promise) {
53150
+ reject(promise, withOwnPromise());
53151
+ } else if (value === TRY_CATCH_ERROR) {
53152
+ var error = value.error;
53153
+ value.error = null; // release
53189
53154
  reject(promise, error);
53155
+ } else if (hasCallback) {
53156
+ resolve(promise, value);
53190
53157
  } else if (state === FULFILLED) {
53191
53158
  fulfill(promise, value);
53192
53159
  } else if (state === REJECTED) {
@@ -53243,109 +53210,118 @@ enifed('rsvp', ['exports', 'ember-babel', 'node-module'], function (exports, _em
53243
53210
  return child;
53244
53211
  }
53245
53212
 
53246
- function Enumerator(Constructor, input, abortOnReject, label) {
53247
- this._instanceConstructor = Constructor;
53248
- this.promise = new Constructor(noop, label);
53249
- this._abortOnReject = abortOnReject;
53250
-
53251
- this._init.apply(this, arguments);
53252
- }
53213
+ var Enumerator = function () {
53214
+ function Enumerator(Constructor, input, abortOnReject, label) {
53215
+ (0, _emberBabel.classCallCheck)(this, Enumerator);
53253
53216
 
53254
- Enumerator.prototype._init = function (Constructor, input) {
53255
- var len = input.length || 0;
53256
- this.length = len;
53257
- this._remaining = len;
53258
- this._result = new Array(len);
53217
+ this._instanceConstructor = Constructor;
53218
+ this.promise = new Constructor(noop, label);
53219
+ this._abortOnReject = abortOnReject;
53220
+ this.isUsingOwnPromise = Constructor === Promise;
53259
53221
 
53260
- this._enumerate(input);
53261
- if (this._remaining === 0) {
53262
- fulfill(this.promise, this._result);
53222
+ this._init.apply(this, arguments);
53263
53223
  }
53264
- };
53265
53224
 
53266
- Enumerator.prototype._enumerate = function (input) {
53267
- var length = this.length;
53268
- var promise = this.promise;
53225
+ Enumerator.prototype._init = function _init(Constructor, input) {
53226
+ var len = input.length || 0;
53227
+ this.length = len;
53228
+ this._remaining = len;
53229
+ this._result = new Array(len);
53269
53230
 
53270
- for (var i = 0; promise._state === PENDING && i < length; i++) {
53271
- this._eachEntry(input[i], i);
53272
- }
53273
- };
53231
+ this._enumerate(input);
53232
+ };
53233
+
53234
+ Enumerator.prototype._enumerate = function _enumerate(input) {
53235
+ var length = this.length;
53236
+ var promise = this.promise;
53274
53237
 
53275
- Enumerator.prototype._settleMaybeThenable = function (entry, i) {
53276
- var c = this._instanceConstructor;
53277
- var resolve$$1 = c.resolve;
53238
+ for (var i = 0; promise._state === PENDING && i < length; i++) {
53239
+ this._eachEntry(input[i], i, true);
53240
+ }
53278
53241
 
53279
- if (resolve$$1 === resolve$1) {
53280
- var then$$1 = getThen(entry);
53242
+ this._checkFullfillment();
53243
+ };
53281
53244
 
53282
- if (then$$1 === then && entry._state !== PENDING) {
53283
- entry._onError = null;
53284
- this._settledAt(entry._state, i, entry._result);
53285
- } else if (typeof then$$1 !== 'function') {
53286
- this._remaining--;
53287
- this._result[i] = this._makeResult(FULFILLED, i, entry);
53288
- } else if (c === Promise) {
53289
- var promise = new c(noop);
53290
- handleMaybeThenable(promise, entry, then$$1);
53291
- this._willSettleAt(promise, i);
53292
- } else {
53293
- this._willSettleAt(new c(function (resolve$$1) {
53294
- return resolve$$1(entry);
53295
- }), i);
53245
+ Enumerator.prototype._checkFullfillment = function _checkFullfillment() {
53246
+ if (this._remaining === 0) {
53247
+ fulfill(this.promise, this._result);
53296
53248
  }
53297
- } else {
53298
- this._willSettleAt(resolve$$1(entry), i);
53299
- }
53300
- };
53249
+ };
53301
53250
 
53302
- Enumerator.prototype._eachEntry = function (entry, i) {
53303
- if (isMaybeThenable(entry)) {
53304
- this._settleMaybeThenable(entry, i);
53305
- } else {
53306
- this._remaining--;
53307
- this._result[i] = this._makeResult(FULFILLED, i, entry);
53308
- }
53309
- };
53251
+ Enumerator.prototype._settleMaybeThenable = function _settleMaybeThenable(entry, i, firstPass) {
53252
+ var c = this._instanceConstructor;
53253
+ var resolve$$1 = c.resolve;
53310
53254
 
53311
- Enumerator.prototype._settledAt = function (state, i, value) {
53312
- var promise = this.promise;
53255
+ if (resolve$$1 === resolve$1) {
53256
+ var then$$1 = getThen(entry);
53313
53257
 
53314
- if (promise._state === PENDING) {
53315
- if (this._abortOnReject && state === REJECTED) {
53316
- reject(promise, value);
53258
+ if (then$$1 === then && entry._state !== PENDING) {
53259
+ entry._onError = null;
53260
+ this._settledAt(entry._state, i, entry._result, firstPass);
53261
+ } else if (typeof then$$1 !== 'function') {
53262
+ this._settledAt(FULFILLED, i, entry, firstPass);
53263
+ } else if (this.isUsingOwnPromise) {
53264
+ var promise = new c(noop);
53265
+ handleMaybeThenable(promise, entry, then$$1);
53266
+ this._willSettleAt(promise, i, firstPass);
53267
+ } else {
53268
+ this._willSettleAt(new c(function (resolve$$1) {
53269
+ return resolve$$1(entry);
53270
+ }), i, firstPass);
53271
+ }
53317
53272
  } else {
53318
- this._remaining--;
53319
- this._result[i] = this._makeResult(state, i, value);
53320
- if (this._remaining === 0) {
53321
- fulfill(promise, this._result);
53273
+ this._willSettleAt(resolve$$1(entry), i, firstPass);
53274
+ }
53275
+ };
53276
+
53277
+ Enumerator.prototype._eachEntry = function _eachEntry(entry, i, firstPass) {
53278
+ if (entry !== null && typeof entry === 'object') {
53279
+ this._settleMaybeThenable(entry, i, firstPass);
53280
+ } else {
53281
+ this._setResultAt(FULFILLED, i, entry, firstPass);
53282
+ }
53283
+ };
53284
+
53285
+ Enumerator.prototype._settledAt = function _settledAt(state, i, value, firstPass) {
53286
+ var promise = this.promise;
53287
+
53288
+ if (promise._state === PENDING) {
53289
+ if (this._abortOnReject && state === REJECTED) {
53290
+ reject(promise, value);
53291
+ } else {
53292
+ this._setResultAt(state, i, value, firstPass);
53293
+ this._checkFullfillment();
53322
53294
  }
53323
53295
  }
53324
- }
53325
- };
53296
+ };
53326
53297
 
53327
- Enumerator.prototype._makeResult = function (state, i, value) {
53328
- return value;
53329
- };
53298
+ Enumerator.prototype._setResultAt = function _setResultAt(state, i, value, firstPass) {
53299
+ this._remaining--;
53300
+ this._result[i] = value;
53301
+ };
53330
53302
 
53331
- Enumerator.prototype._willSettleAt = function (promise, i) {
53332
- var enumerator = this;
53303
+ Enumerator.prototype._willSettleAt = function _willSettleAt(promise, i, firstPass) {
53304
+ var _this = this;
53333
53305
 
53334
- subscribe(promise, undefined, function (value) {
53335
- return enumerator._settledAt(FULFILLED, i, value);
53336
- }, function (reason) {
53337
- return enumerator._settledAt(REJECTED, i, reason);
53338
- });
53339
- };
53306
+ subscribe(promise, undefined, function (value) {
53307
+ return _this._settledAt(FULFILLED, i, value, firstPass);
53308
+ }, function (reason) {
53309
+ return _this._settledAt(REJECTED, i, reason, firstPass);
53310
+ });
53311
+ };
53312
+
53313
+ return Enumerator;
53314
+ }();
53340
53315
 
53341
- function makeSettledResult(state, position, value) {
53316
+ function setSettledResult(state, i, value) {
53317
+ this._remaining--;
53342
53318
  if (state === FULFILLED) {
53343
- return {
53319
+ this._result[i] = {
53344
53320
  state: 'fulfilled',
53345
53321
  value: value
53346
53322
  };
53347
53323
  } else {
53348
- return {
53324
+ this._result[i] = {
53349
53325
  state: 'rejected',
53350
53326
  reason: value
53351
53327
  };
@@ -53400,7 +53376,7 @@ enifed('rsvp', ['exports', 'ember-babel', 'node-module'], function (exports, _em
53400
53376
  @static
53401
53377
  */
53402
53378
  function all(entries, label) {
53403
- if (!isArray(entries)) {
53379
+ if (!Array.isArray(entries)) {
53404
53380
  return this.reject(new TypeError("Promise.all must be called with an array"), label);
53405
53381
  }
53406
53382
  return new Enumerator(this, entries, true /* abort on reject */, label).promise;
@@ -53478,7 +53454,7 @@ enifed('rsvp', ['exports', 'ember-babel', 'node-module'], function (exports, _em
53478
53454
 
53479
53455
  var promise = new Constructor(noop, label);
53480
53456
 
53481
- if (!isArray(entries)) {
53457
+ if (!Array.isArray(entries)) {
53482
53458
  reject(promise, new TypeError('Promise.race must be called with an array'));
53483
53459
  return promise;
53484
53460
  }
@@ -53537,7 +53513,7 @@ enifed('rsvp', ['exports', 'ember-babel', 'node-module'], function (exports, _em
53537
53513
  return promise;
53538
53514
  }
53539
53515
 
53540
- var guidKey = 'rsvp_' + now() + '-';
53516
+ var guidKey = 'rsvp_' + Date.now() + '-';
53541
53517
  var counter = 0;
53542
53518
 
53543
53519
  function needsResolver() {
@@ -53652,117 +53628,56 @@ enifed('rsvp', ['exports', 'ember-babel', 'node-module'], function (exports, _em
53652
53628
  Useful for tooling.
53653
53629
  @constructor
53654
53630
  */
53655
- function Promise(resolver, label) {
53656
- this._id = counter++;
53657
- this._label = label;
53658
- this._state = undefined;
53659
- this._result = undefined;
53660
- this._subscribers = [];
53661
53631
 
53662
- config.instrument && instrument('created', this);
53632
+ var Promise = function () {
53633
+ function Promise(resolver, label) {
53634
+ (0, _emberBabel.classCallCheck)(this, Promise);
53663
53635
 
53664
- if (noop !== resolver) {
53665
- typeof resolver !== 'function' && needsResolver();
53666
- this instanceof Promise ? initializePromise(this, resolver) : needsNew();
53667
- }
53668
- }
53636
+ this._id = counter++;
53637
+ this._label = label;
53638
+ this._state = undefined;
53639
+ this._result = undefined;
53640
+ this._subscribers = [];
53669
53641
 
53670
- Promise.prototype._onError = function (reason) {
53671
- var _this = this;
53642
+ config.instrument && instrument('created', this);
53672
53643
 
53673
- config.after(function () {
53674
- if (_this._onError) {
53675
- config.trigger('error', reason, _this._label);
53644
+ if (noop !== resolver) {
53645
+ typeof resolver !== 'function' && needsResolver();
53646
+ this instanceof Promise ? initializePromise(this, resolver) : needsNew();
53676
53647
  }
53677
- });
53678
- };
53679
-
53680
- /**
53681
- `catch` is simply sugar for `then(undefined, onRejection)` which makes it the same
53682
- as the catch block of a try/catch statement.
53683
-
53684
- ```js
53685
- function findAuthor(){
53686
- throw new Error('couldn\'t find that author');
53687
- }
53688
-
53689
- // synchronous
53690
- try {
53691
- findAuthor();
53692
- } catch(reason) {
53693
- // something went wrong
53694
53648
  }
53695
-
53696
- // async with promises
53697
- findAuthor().catch(function(reason){
53698
- // something went wrong
53699
- });
53700
- ```
53701
-
53702
- @method catch
53703
- @param {Function} onRejection
53704
- @param {String} label optional string for labeling the promise.
53705
- Useful for tooling.
53706
- @return {Promise}
53707
- */
53708
- Promise.prototype.catch = function (onRejection, label) {
53709
- return this.then(undefined, onRejection, label);
53710
- };
53711
53649
 
53712
- /**
53713
- `finally` will be invoked regardless of the promise's fate just as native
53714
- try/catch/finally behaves
53715
-
53716
- Synchronous example:
53717
-
53718
- ```js
53719
- findAuthor() {
53720
- if (Math.random() > 0.5) {
53721
- throw new Error();
53722
- }
53723
- return new Author();
53724
- }
53725
-
53726
- try {
53727
- return findAuthor(); // succeed or fail
53728
- } catch(error) {
53729
- return findOtherAuthor();
53730
- } finally {
53731
- // always runs
53732
- // doesn't affect the return value
53733
- }
53734
- ```
53735
-
53736
- Asynchronous example:
53737
-
53738
- ```js
53739
- findAuthor().catch(function(reason){
53740
- return findOtherAuthor();
53741
- }).finally(function(){
53742
- // author was either found, or not
53743
- });
53744
- ```
53745
-
53746
- @method finally
53747
- @param {Function} callback
53748
- @param {String} label optional string for labeling the promise.
53749
- Useful for tooling.
53750
- @return {Promise}
53751
- */
53752
- Promise.prototype.finally = function (callback, label) {
53753
- var promise = this;
53754
- var constructor = promise.constructor;
53650
+ Promise.prototype._onError = function _onError(reason) {
53651
+ var _this2 = this;
53755
53652
 
53756
- return promise.then(function (value) {
53757
- return constructor.resolve(callback()).then(function () {
53758
- return value;
53759
- });
53760
- }, function (reason) {
53761
- return constructor.resolve(callback()).then(function () {
53762
- throw reason;
53653
+ config.after(function () {
53654
+ if (_this2._onError) {
53655
+ config.trigger('error', reason, _this2._label);
53656
+ }
53763
53657
  });
53764
- }, label);
53765
- };
53658
+ };
53659
+
53660
+ Promise.prototype.catch = function _catch(onRejection, label) {
53661
+ return this.then(undefined, onRejection, label);
53662
+ };
53663
+
53664
+ Promise.prototype.finally = function _finally(callback, label) {
53665
+ var promise = this;
53666
+ var constructor = promise.constructor;
53667
+
53668
+ return promise.then(function (value) {
53669
+ return constructor.resolve(callback()).then(function () {
53670
+ return value;
53671
+ });
53672
+ }, function (reason) {
53673
+ return constructor.resolve(callback()).then(function () {
53674
+ throw reason;
53675
+ });
53676
+ }, label);
53677
+ };
53678
+
53679
+ return Promise;
53680
+ }();
53766
53681
 
53767
53682
  Promise.cast = resolve$1; // deprecated
53768
53683
  Promise.all = all;
@@ -54184,7 +54099,7 @@ enifed('rsvp', ['exports', 'ember-babel', 'node-module'], function (exports, _em
54184
54099
  var promise = new Promise(noop);
54185
54100
 
54186
54101
  args[l] = function (err, val) {
54187
- 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);
54102
+ 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);
54188
54103
  };
54189
54104
 
54190
54105
  if (promiseInput) {
@@ -54255,7 +54170,7 @@ enifed('rsvp', ['exports', 'ember-babel', 'node-module'], function (exports, _em
54255
54170
  return AllSettled;
54256
54171
  }(Enumerator);
54257
54172
 
54258
- AllSettled.prototype._makeResult = makeSettledResult;
54173
+ AllSettled.prototype._setResultAt = setSettledResult;
54259
54174
 
54260
54175
  /**
54261
54176
  `RSVP.allSettled` is similar to `RSVP.all`, but instead of implementing
@@ -54303,7 +54218,7 @@ enifed('rsvp', ['exports', 'ember-babel', 'node-module'], function (exports, _em
54303
54218
  */
54304
54219
 
54305
54220
  function allSettled(entries, label) {
54306
- if (!isArray(entries)) {
54221
+ if (!Array.isArray(entries)) {
54307
54222
  return Promise.reject(new TypeError("Promise.allSettled must be called with an array"), label);
54308
54223
  }
54309
54224
 
@@ -54460,7 +54375,7 @@ enifed('rsvp', ['exports', 'ember-babel', 'node-module'], function (exports, _em
54460
54375
  have been fulfilled, or rejected if any of them become rejected.
54461
54376
  */
54462
54377
  function hash(object, label) {
54463
- if (!isObject(object)) {
54378
+ if (object === null || typeof object !== 'object') {
54464
54379
  return Promise.reject(new TypeError("Promise.hash must be called with an object"), label);
54465
54380
  }
54466
54381
 
@@ -54478,7 +54393,7 @@ enifed('rsvp', ['exports', 'ember-babel', 'node-module'], function (exports, _em
54478
54393
  return HashSettled;
54479
54394
  }(PromiseHash);
54480
54395
 
54481
- HashSettled.prototype._makeResult = makeSettledResult;
54396
+ HashSettled.prototype._setResultAt = setSettledResult;
54482
54397
 
54483
54398
  /**
54484
54399
  `RSVP.hashSettled` is similar to `RSVP.allSettled`, but takes an object
@@ -54583,7 +54498,7 @@ enifed('rsvp', ['exports', 'ember-babel', 'node-module'], function (exports, _em
54583
54498
  */
54584
54499
 
54585
54500
  function hashSettled(object, label) {
54586
- if (!isObject(object)) {
54501
+ if (object === null || typeof object !== 'object') {
54587
54502
  return Promise.reject(new TypeError("RSVP.hashSettled must be called with an object"), label);
54588
54503
  }
54589
54504
 
@@ -54681,12 +54596,46 @@ enifed('rsvp', ['exports', 'ember-babel', 'node-module'], function (exports, _em
54681
54596
  return deferred;
54682
54597
  }
54683
54598
 
54599
+ var MapEnumerator = function (_Enumerator3) {
54600
+ (0, _emberBabel.inherits)(MapEnumerator, _Enumerator3);
54601
+
54602
+ function MapEnumerator(Constructor, entries, mapFn, label) {
54603
+ (0, _emberBabel.classCallCheck)(this, MapEnumerator);
54604
+ return (0, _emberBabel.possibleConstructorReturn)(this, _Enumerator3.call(this, Constructor, entries, true, label, mapFn));
54605
+ }
54606
+
54607
+ MapEnumerator.prototype._init = function _init(Constructor, input, bool, label, mapFn) {
54608
+ var len = input.length || 0;
54609
+ this.length = len;
54610
+ this._remaining = len;
54611
+ this._result = new Array(len);
54612
+ this._mapFn = mapFn;
54613
+
54614
+ this._enumerate(input);
54615
+ };
54616
+
54617
+ MapEnumerator.prototype._setResultAt = function _setResultAt(state, i, value, firstPass) {
54618
+ if (firstPass) {
54619
+ var val = tryCatch(this._mapFn)(value, i);
54620
+ if (val === TRY_CATCH_ERROR) {
54621
+ this._settledAt(REJECTED, i, val.error, false);
54622
+ } else {
54623
+ this._eachEntry(val, i, false);
54624
+ }
54625
+ } else {
54626
+ this._remaining--;
54627
+ this._result[i] = value;
54628
+ }
54629
+ };
54630
+
54631
+ return MapEnumerator;
54632
+ }(Enumerator);
54633
+
54684
54634
  /**
54685
- `RSVP.map` is similar to JavaScript's native `map` method, except that it
54686
- waits for all promises to become fulfilled before running the `mapFn` on
54687
- each item in given to `promises`. `RSVP.map` returns a promise that will
54688
- become fulfilled with the result of running `mapFn` on the values the promises
54689
- become fulfilled with.
54635
+ `RSVP.map` is similar to JavaScript's native `map` method. `mapFn` is eagerly called
54636
+ meaning that as soon as any promise resolves its value will be passed to `mapFn`.
54637
+ `RSVP.map` returns a promise that will become fulfilled with the result of running
54638
+ `mapFn` on the values the promises become fulfilled with.
54690
54639
 
54691
54640
  For example:
54692
54641
 
@@ -54760,24 +54709,15 @@ enifed('rsvp', ['exports', 'ember-babel', 'node-module'], function (exports, _em
54760
54709
  @static
54761
54710
  */
54762
54711
  function map(promises, mapFn, label) {
54763
- if (!isArray(promises)) {
54712
+ if (!Array.isArray(promises)) {
54764
54713
  return Promise.reject(new TypeError("RSVP.map must be called with an array"), label);
54765
54714
  }
54766
54715
 
54767
- if (!isFunction(mapFn)) {
54716
+ if (typeof mapFn !== 'function') {
54768
54717
  return Promise.reject(new TypeError("RSVP.map expects a function as a second argument"), label);
54769
54718
  }
54770
54719
 
54771
- return Promise.all(promises, label).then(function (values) {
54772
- var length = values.length;
54773
- var results = new Array(length);
54774
-
54775
- for (var i = 0; i < length; i++) {
54776
- results[i] = mapFn(values[i]);
54777
- }
54778
-
54779
- return Promise.all(results, label);
54780
- });
54720
+ return new MapEnumerator(Promise, promises, mapFn, label).promise;
54781
54721
  }
54782
54722
 
54783
54723
  /**
@@ -54811,12 +54751,62 @@ enifed('rsvp', ['exports', 'ember-babel', 'node-module'], function (exports, _em
54811
54751
  return Promise.reject(reason, label);
54812
54752
  }
54813
54753
 
54754
+ var EMPTY_OBJECT = {};
54755
+
54756
+ var FilterEnumerator = function (_Enumerator4) {
54757
+ (0, _emberBabel.inherits)(FilterEnumerator, _Enumerator4);
54758
+
54759
+ function FilterEnumerator(Constructor, entries, filterFn, label) {
54760
+ (0, _emberBabel.classCallCheck)(this, FilterEnumerator);
54761
+ return (0, _emberBabel.possibleConstructorReturn)(this, _Enumerator4.call(this, Constructor, entries, true, label, filterFn));
54762
+ }
54763
+
54764
+ FilterEnumerator.prototype._init = function _init(Constructor, input, bool, label, filterFn) {
54765
+ var len = input.length || 0;
54766
+ this.length = len;
54767
+ this._remaining = len;
54768
+
54769
+ this._result = new Array(len);
54770
+ this._filterFn = filterFn;
54771
+
54772
+ this._enumerate(input);
54773
+ };
54774
+
54775
+ FilterEnumerator.prototype._checkFullfillment = function _checkFullfillment() {
54776
+ if (this._remaining === 0) {
54777
+ this._result = this._result.filter(function (val) {
54778
+ return val !== EMPTY_OBJECT;
54779
+ });
54780
+ fulfill(this.promise, this._result);
54781
+ }
54782
+ };
54783
+
54784
+ FilterEnumerator.prototype._setResultAt = function _setResultAt(state, i, value, firstPass) {
54785
+ if (firstPass) {
54786
+ this._result[i] = value;
54787
+ var val = tryCatch(this._filterFn)(value, i);
54788
+ if (val === TRY_CATCH_ERROR) {
54789
+ this._settledAt(REJECTED, i, val.error, false);
54790
+ } else {
54791
+ this._eachEntry(val, i, false);
54792
+ }
54793
+ } else {
54794
+ this._remaining--;
54795
+ if (!value) {
54796
+ this._result[i] = EMPTY_OBJECT;
54797
+ }
54798
+ }
54799
+ };
54800
+
54801
+ return FilterEnumerator;
54802
+ }(Enumerator);
54803
+
54814
54804
  /**
54815
- `RSVP.filter` is similar to JavaScript's native `filter` method, except that it
54816
- waits for all promises to become fulfilled before running the `filterFn` on
54817
- each item in given to `promises`. `RSVP.filter` returns a promise that will
54818
- become fulfilled with the result of running `filterFn` on the values the
54819
- promises become fulfilled with.
54805
+ `RSVP.filter` is similar to JavaScript's native `filter` method.
54806
+ `filterFn` is eagerly called meaning that as soon as any promise
54807
+ resolves its value will be passed to `filterFn`. `RSVP.filter` returns
54808
+ a promise that will become fulfilled with the result of running
54809
+ `filterFn` on the values the promises become fulfilled with.
54820
54810
 
54821
54811
  For example:
54822
54812
 
@@ -54897,49 +54887,17 @@ enifed('rsvp', ['exports', 'ember-babel', 'node-module'], function (exports, _em
54897
54887
  @return {Promise}
54898
54888
  */
54899
54889
 
54900
- function resolveAll(promises, label) {
54901
- return Promise.all(promises, label);
54902
- }
54903
-
54904
- function resolveSingle(promise, label) {
54905
- return Promise.resolve(promise, label).then(function (promises) {
54906
- return resolveAll(promises, label);
54907
- });
54908
- }
54909
-
54910
54890
  function filter(promises, filterFn, label) {
54911
- if (!isArray(promises) && !(isObject(promises) && promises.then !== undefined)) {
54891
+ if (!Array.isArray(promises) && !(promises !== null && typeof promises === 'object' && promises.then !== undefined)) {
54912
54892
  return Promise.reject(new TypeError("RSVP.filter must be called with an array or promise"), label);
54913
54893
  }
54914
54894
 
54915
- if (!isFunction(filterFn)) {
54895
+ if (typeof filterFn !== 'function') {
54916
54896
  return Promise.reject(new TypeError("RSVP.filter expects function as a second argument"), label);
54917
54897
  }
54918
54898
 
54919
- var promise = isArray(promises) ? resolveAll(promises, label) : resolveSingle(promises, label);
54920
- return promise.then(function (values) {
54921
- var length = values.length;
54922
- var filtered = new Array(length);
54923
-
54924
- for (var i = 0; i < length; i++) {
54925
- filtered[i] = filterFn(values[i]);
54926
- }
54927
-
54928
- return resolveAll(filtered, label).then(function (filtered) {
54929
- var results = new Array(length);
54930
- var newLength = 0;
54931
-
54932
- for (var _i = 0; _i < length; _i++) {
54933
- if (filtered[_i]) {
54934
- results[newLength] = values[_i];
54935
- newLength++;
54936
- }
54937
- }
54938
-
54939
- results.length = newLength;
54940
-
54941
- return results;
54942
- });
54899
+ return Promise.resolve(promises, label).then(function (promises) {
54900
+ return new FilterEnumerator(Promise, promises, filterFn, label).promise;
54943
54901
  });
54944
54902
  }
54945
54903