ember-source 2.7.2 → 2.8.0.beta.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: a7cb532fe97a500488f281fa6de36d58a302ecc0
4
- data.tar.gz: 39e3884b3e7ac287e86a9b04316cbeb106c9f08b
3
+ metadata.gz: ce9c9d778331b0fad53093b38c255df044a73634
4
+ data.tar.gz: 67ad6c615d1d46ca7c41e520c2347b6d93e0512b
5
5
  SHA512:
6
- metadata.gz: 9b80874624573b4f8b4181ce832a5678ed4d43c579a99c24023ffcb12dcedea8021d47030f398ee9b53844687c7ebf71d559e60d143c87895aaea414210773c6
7
- data.tar.gz: ee07938ec87b7fc4b116c2ce0227309e6260f123be0c3b3866a327c2eb18f7aaa4e7aacdfa3570c26e8734fe5446da4c874bfc876f342244d5c649e66cb3adad
6
+ metadata.gz: 14bcf07fc942da57fe2d92d99fe25589e3f4791fb81febf23059f0ba6b7026d0878d2ce993d5fe71ef3992bccb1a60f06cbccc7ea21395714945f2bd84a717a9
7
+ data.tar.gz: d2fdc4dc023657db5d1ccf792317dd3ff353066287359f492a751faa9ba52baea04e78621e92d03884b154e75d9ec089003a8a993154e1f8204d4d694fab6fd7
data/VERSION CHANGED
@@ -1 +1 @@
1
- 2.7.2
1
+ 2.8.0-beta.1
@@ -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.7.2
9
+ * @version 2.8.0-beta.1
10
10
  */
11
11
 
12
12
  var enifed, requireModule, require, Ember;
@@ -1156,6 +1156,8 @@ enifed('backburner/utils', ['exports'], function (exports) {
1156
1156
  enifed('container/container', ['exports', 'ember-environment', 'ember-metal/debug', 'ember-metal/dictionary', 'container/owner', 'ember-runtime/mixins/container_proxy', 'ember-metal/symbol'], function (exports, _emberEnvironment, _emberMetalDebug, _emberMetalDictionary, _containerOwner, _emberRuntimeMixinsContainer_proxy, _emberMetalSymbol) {
1157
1157
  'use strict';
1158
1158
 
1159
+ exports.default = Container;
1160
+
1159
1161
  var CONTAINER_OVERRIDE = _emberMetalSymbol.default('CONTAINER_OVERRIDE');
1160
1162
 
1161
1163
  /**
@@ -1171,6 +1173,7 @@ enifed('container/container', ['exports', 'ember-environment', 'ember-metal/debu
1171
1173
  @private
1172
1174
  @class Container
1173
1175
  */
1176
+
1174
1177
  function Container(registry, options) {
1175
1178
  this.registry = registry;
1176
1179
  this.owner = options && options.owner ? options.owner : null;
@@ -1179,6 +1182,7 @@ enifed('container/container', ['exports', 'ember-environment', 'ember-metal/debu
1179
1182
  this.validationCache = _emberMetalDictionary.default(options && options.validationCache ? options.validationCache : null);
1180
1183
  this._fakeContainerToInject = _emberRuntimeMixinsContainer_proxy.buildFakeContainerWithDeprecations(this);
1181
1184
  this[CONTAINER_OVERRIDE] = undefined;
1185
+ this.isDestroyed = false;
1182
1186
  }
1183
1187
 
1184
1188
  Container.prototype = {
@@ -1224,23 +1228,23 @@ enifed('container/container', ['exports', 'ember-environment', 'ember-metal/debu
1224
1228
  The singleton is scoped to the container, allowing multiple containers
1225
1229
  to all have their own locally scoped singletons.
1226
1230
  ```javascript
1227
- var registry = new Registry();
1228
- var container = registry.container();
1231
+ let registry = new Registry();
1232
+ let container = registry.container();
1229
1233
  registry.register('api:twitter', Twitter);
1230
- var twitter = container.lookup('api:twitter');
1234
+ let twitter = container.lookup('api:twitter');
1231
1235
  twitter instanceof Twitter; // => true
1232
1236
  // by default the container will return singletons
1233
- var twitter2 = container.lookup('api:twitter');
1237
+ let twitter2 = container.lookup('api:twitter');
1234
1238
  twitter2 instanceof Twitter; // => true
1235
1239
  twitter === twitter2; //=> true
1236
1240
  ```
1237
1241
  If singletons are not wanted, an optional flag can be provided at lookup.
1238
1242
  ```javascript
1239
- var registry = new Registry();
1240
- var container = registry.container();
1243
+ let registry = new Registry();
1244
+ let container = registry.container();
1241
1245
  registry.register('api:twitter', Twitter);
1242
- var twitter = container.lookup('api:twitter', { singleton: false });
1243
- var twitter2 = container.lookup('api:twitter', { singleton: false });
1246
+ let twitter = container.lookup('api:twitter', { singleton: false });
1247
+ let twitter2 = container.lookup('api:twitter', { singleton: false });
1244
1248
  twitter === twitter2; //=> false
1245
1249
  ```
1246
1250
  @private
@@ -1360,7 +1364,7 @@ enifed('container/container', ['exports', 'ember-environment', 'ember-metal/debu
1360
1364
  if (arguments.length > 1) {
1361
1365
  var container = arguments[0];
1362
1366
  var injections = [];
1363
- var injection;
1367
+ var injection = undefined;
1364
1368
 
1365
1369
  for (var i = 1; i < arguments.length; i++) {
1366
1370
  if (arguments[i]) {
@@ -1370,7 +1374,7 @@ enifed('container/container', ['exports', 'ember-environment', 'ember-metal/debu
1370
1374
 
1371
1375
  container.registry.validateInjections(injections);
1372
1376
 
1373
- for (i = 0; i < injections.length; i++) {
1377
+ for (var i = 0; i < injections.length; i++) {
1374
1378
  injection = injections[i];
1375
1379
  hash[injection.property] = lookup(container, injection.fullName);
1376
1380
  if (!isSingleton(container, injection.fullName)) {
@@ -1466,7 +1470,8 @@ enifed('container/container', ['exports', 'ember-environment', 'ember-metal/debu
1466
1470
 
1467
1471
  function instantiate(container, fullName) {
1468
1472
  var factory = factoryFor(container, fullName);
1469
- var lazyInjections, validationCache;
1473
+ var lazyInjections = undefined,
1474
+ validationCache = undefined;
1470
1475
 
1471
1476
  if (container.registry.getOption(fullName, 'instantiate') === false) {
1472
1477
  return factory;
@@ -1474,7 +1479,7 @@ enifed('container/container', ['exports', 'ember-environment', 'ember-metal/debu
1474
1479
 
1475
1480
  if (factory) {
1476
1481
  if (typeof factory.create !== 'function') {
1477
- throw new Error('Failed to create an instance of \'' + fullName + '\'. ' + 'Most likely an improperly defined class or an invalid module export.');
1482
+ throw new Error('Failed to create an instance of \'' + fullName + '\'. Most likely an improperly defined class or' + ' an invalid module export.');
1478
1483
  }
1479
1484
 
1480
1485
  validationCache = container.validationCache;
@@ -1542,11 +1547,10 @@ enifed('container/container', ['exports', 'ember-environment', 'ember-metal/debu
1542
1547
  function eachDestroyable(container, callback) {
1543
1548
  var cache = container.cache;
1544
1549
  var keys = Object.keys(cache);
1545
- var key, value;
1546
1550
 
1547
1551
  for (var i = 0; i < keys.length; i++) {
1548
- key = keys[i];
1549
- value = cache[key];
1552
+ var key = keys[i];
1553
+ var value = cache[key];
1550
1554
 
1551
1555
  if (container.registry.getOption(key, 'instantiate') !== false) {
1552
1556
  callback(value);
@@ -1577,8 +1581,6 @@ enifed('container/container', ['exports', 'ember-environment', 'ember-metal/debu
1577
1581
  }
1578
1582
  }
1579
1583
  }
1580
-
1581
- exports.default = Container;
1582
1584
  });
1583
1585
  enifed('container/index', ['exports', 'container/registry', 'container/container', 'container/owner'], function (exports, _containerRegistry, _containerContainer, _containerOwner) {
1584
1586
  /*
@@ -1642,9 +1644,10 @@ enifed('container/owner', ['exports', 'ember-metal/symbol'], function (exports,
1642
1644
  ```
1643
1645
 
1644
1646
  @method getOwner
1647
+ @for Ember
1645
1648
  @param {Object} object An object with an owner.
1646
1649
  @return {Object} An owner object.
1647
- @for Ember
1650
+ @since 2.3.0
1648
1651
  @public
1649
1652
  */
1650
1653
 
@@ -1657,9 +1660,10 @@ enifed('container/owner', ['exports', 'ember-metal/symbol'], function (exports,
1657
1660
  useful in some testing cases.
1658
1661
 
1659
1662
  @method setOwner
1663
+ @for Ember
1660
1664
  @param {Object} object An object with an owner.
1661
1665
  @return {Object} An owner object.
1662
- @for Ember
1666
+ @since 2.3.0
1663
1667
  @public
1664
1668
  */
1665
1669
 
@@ -1670,6 +1674,7 @@ enifed('container/owner', ['exports', 'ember-metal/symbol'], function (exports,
1670
1674
  enifed('container/registry', ['exports', 'ember-metal/debug', 'ember-metal/dictionary', 'ember-metal/empty_object', 'ember-metal/assign', 'container/container', 'ember-metal/utils'], function (exports, _emberMetalDebug, _emberMetalDictionary, _emberMetalEmpty_object, _emberMetalAssign, _containerContainer, _emberMetalUtils) {
1671
1675
  'use strict';
1672
1676
 
1677
+ exports.default = Registry;
1673
1678
  exports.privatize = privatize;
1674
1679
 
1675
1680
  var VALID_FULL_NAME_REGEXP = /^[^:]+:[^:]+$/;
@@ -1687,6 +1692,7 @@ enifed('container/registry', ['exports', 'ember-metal/debug', 'ember-metal/dicti
1687
1692
  @class Registry
1688
1693
  @since 1.11.0
1689
1694
  */
1695
+
1690
1696
  function Registry(options) {
1691
1697
  this.fallback = options && options.fallback ? options.fallback : null;
1692
1698
 
@@ -1809,7 +1815,7 @@ enifed('container/registry', ['exports', 'ember-metal/debug', 'ember-metal/dicti
1809
1815
  Registers a factory for later injection.
1810
1816
  Example:
1811
1817
  ```javascript
1812
- var registry = new Registry();
1818
+ let registry = new Registry();
1813
1819
  registry.register('model:user', Person, {singleton: false });
1814
1820
  registry.register('fruit:favorite', Orange);
1815
1821
  registry.register('communication:main', Email, {singleton: false});
@@ -1826,13 +1832,13 @@ enifed('container/registry', ['exports', 'ember-metal/debug', 'ember-metal/dicti
1826
1832
  _emberMetalDebug.assert('fullName must be a proper full name', this.validateFullName(fullName));
1827
1833
 
1828
1834
  if (factory === undefined) {
1829
- throw new TypeError('Attempting to register an unknown factory: `' + fullName + '`');
1835
+ throw new TypeError('Attempting to register an unknown factory: \'' + fullName + '\'');
1830
1836
  }
1831
1837
 
1832
1838
  var normalizedName = this.normalize(fullName);
1833
1839
 
1834
1840
  if (this._resolveCache[normalizedName]) {
1835
- throw new Error('Cannot re-register: `' + fullName + '`, as it has already been resolved.');
1841
+ throw new Error('Cannot re-register: \'' + fullName + '\', as it has already been resolved.');
1836
1842
  }
1837
1843
 
1838
1844
  delete this._failCache[normalizedName];
@@ -1843,7 +1849,7 @@ enifed('container/registry', ['exports', 'ember-metal/debug', 'ember-metal/dicti
1843
1849
  /**
1844
1850
  Unregister a fullName
1845
1851
  ```javascript
1846
- var registry = new Registry();
1852
+ let registry = new Registry();
1847
1853
  registry.register('model:user', User);
1848
1854
  registry.resolve('model:user').create() instanceof User //=> true
1849
1855
  registry.unregister('model:user')
@@ -1871,7 +1877,7 @@ enifed('container/registry', ['exports', 'ember-metal/debug', 'ember-metal/dicti
1871
1877
  By default `resolve` will retrieve the factory from
1872
1878
  the registry.
1873
1879
  ```javascript
1874
- var registry = new Registry();
1880
+ let registry = new Registry();
1875
1881
  registry.register('api:twitter', Twitter);
1876
1882
  registry.resolve('api:twitter') // => Twitter
1877
1883
  ```
@@ -1880,7 +1886,7 @@ enifed('container/registry', ['exports', 'ember-metal/debug', 'ember-metal/dicti
1880
1886
  the opportunity to resolve the fullName, otherwise it will fallback
1881
1887
  to the registry.
1882
1888
  ```javascript
1883
- var registry = new Registry();
1889
+ let registry = new Registry();
1884
1890
  registry.resolver = function(fullName) {
1885
1891
  // lookup via the module system of choice
1886
1892
  };
@@ -1994,17 +2000,17 @@ enifed('container/registry', ['exports', 'ember-metal/debug', 'ember-metal/dicti
1994
2000
  /**
1995
2001
  Allow registering options for all factories of a type.
1996
2002
  ```javascript
1997
- var registry = new Registry();
1998
- var container = registry.container();
2003
+ let registry = new Registry();
2004
+ let container = registry.container();
1999
2005
  // if all of type `connection` must not be singletons
2000
2006
  registry.optionsForType('connection', { singleton: false });
2001
2007
  registry.register('connection:twitter', TwitterConnection);
2002
2008
  registry.register('connection:facebook', FacebookConnection);
2003
- var twitter = container.lookup('connection:twitter');
2004
- var twitter2 = container.lookup('connection:twitter');
2009
+ let twitter = container.lookup('connection:twitter');
2010
+ let twitter2 = container.lookup('connection:twitter');
2005
2011
  twitter === twitter2; // => false
2006
- var facebook = container.lookup('connection:facebook');
2007
- var facebook2 = container.lookup('connection:facebook');
2012
+ let facebook = container.lookup('connection:facebook');
2013
+ let facebook2 = container.lookup('connection:facebook');
2008
2014
  facebook === facebook2; // => false
2009
2015
  ```
2010
2016
  @private
@@ -2040,6 +2046,7 @@ enifed('container/registry', ['exports', 'ember-metal/debug', 'ember-metal/dicti
2040
2046
  getOptions: function (fullName) {
2041
2047
  var normalizedName = this.normalize(fullName);
2042
2048
  var options = this._options[normalizedName];
2049
+
2043
2050
  if (options === undefined && this.fallback) {
2044
2051
  options = this.fallback.getOptions(fullName);
2045
2052
  }
@@ -2071,14 +2078,14 @@ enifed('container/registry', ['exports', 'ember-metal/debug', 'ember-metal/dicti
2071
2078
  For example, provided each object of type `controller` needed a `router`.
2072
2079
  one would do the following:
2073
2080
  ```javascript
2074
- var registry = new Registry();
2075
- var container = registry.container();
2081
+ let registry = new Registry();
2082
+ let container = registry.container();
2076
2083
  registry.register('router:main', Router);
2077
2084
  registry.register('controller:user', UserController);
2078
2085
  registry.register('controller:post', PostController);
2079
2086
  registry.typeInjection('controller', 'router', 'router:main');
2080
- var user = container.lookup('controller:user');
2081
- var post = container.lookup('controller:post');
2087
+ let user = container.lookup('controller:user');
2088
+ let post = container.lookup('controller:post');
2082
2089
  user.router instanceof Router; //=> true
2083
2090
  post.router instanceof Router; //=> true
2084
2091
  // both controllers share the same router
@@ -2095,7 +2102,7 @@ enifed('container/registry', ['exports', 'ember-metal/debug', 'ember-metal/dicti
2095
2102
 
2096
2103
  var fullNameType = fullName.split(':')[0];
2097
2104
  if (fullNameType === type) {
2098
- throw new Error('Cannot inject a `' + fullName + '` on other ' + type + '(s).');
2105
+ throw new Error('Cannot inject a \'' + fullName + '\' on other ' + type + '(s).');
2099
2106
  }
2100
2107
 
2101
2108
  var injections = this._typeInjections[type] || (this._typeInjections[type] = []);
@@ -2115,8 +2122,8 @@ enifed('container/registry', ['exports', 'ember-metal/debug', 'ember-metal/dicti
2115
2122
  * Injecting one fullName on a type
2116
2123
  Example:
2117
2124
  ```javascript
2118
- var registry = new Registry();
2119
- var container = registry.container();
2125
+ let registry = new Registry();
2126
+ let container = registry.container();
2120
2127
  registry.register('source:main', Source);
2121
2128
  registry.register('model:user', User);
2122
2129
  registry.register('model:post', Post);
@@ -2125,8 +2132,8 @@ enifed('container/registry', ['exports', 'ember-metal/debug', 'ember-metal/dicti
2125
2132
  registry.injection('model:user', 'post', 'model:post');
2126
2133
  // injecting one fullName on another type
2127
2134
  registry.injection('model', 'source', 'source:main');
2128
- var user = container.lookup('model:user');
2129
- var post = container.lookup('model:post');
2135
+ let user = container.lookup('model:user');
2136
+ let post = container.lookup('model:post');
2130
2137
  user.source instanceof Source; //=> true
2131
2138
  post.source instanceof Source; //=> true
2132
2139
  user.post instanceof Post; //=> true
@@ -2166,11 +2173,11 @@ enifed('container/registry', ['exports', 'ember-metal/debug', 'ember-metal/dicti
2166
2173
  For example, provided each factory of type `model` needed a `store`.
2167
2174
  one would do the following:
2168
2175
  ```javascript
2169
- var registry = new Registry();
2176
+ let registry = new Registry();
2170
2177
  registry.register('store:main', SomeStore);
2171
2178
  registry.factoryTypeInjection('model', 'store', 'store:main');
2172
- var store = registry.lookup('store:main');
2173
- var UserFactory = registry.lookupFactory('model:user');
2179
+ let store = registry.lookup('store:main');
2180
+ let UserFactory = registry.lookupFactory('model:user');
2174
2181
  UserFactory.store instanceof SomeStore; //=> true
2175
2182
  ```
2176
2183
  @private
@@ -2199,8 +2206,8 @@ enifed('container/registry', ['exports', 'ember-metal/debug', 'ember-metal/dicti
2199
2206
  * Injecting one fullName on a type
2200
2207
  Example:
2201
2208
  ```javascript
2202
- var registry = new Registry();
2203
- var container = registry.container();
2209
+ let registry = new Registry();
2210
+ let container = registry.container();
2204
2211
  registry.register('store:main', Store);
2205
2212
  registry.register('store:secondary', OtherStore);
2206
2213
  registry.register('model:user', User);
@@ -2209,9 +2216,9 @@ enifed('container/registry', ['exports', 'ember-metal/debug', 'ember-metal/dicti
2209
2216
  registry.factoryInjection('model', 'store', 'store:main');
2210
2217
  // injecting one fullName on another fullName
2211
2218
  registry.factoryInjection('model:post', 'secondaryStore', 'store:secondary');
2212
- var UserFactory = container.lookupFactory('model:user');
2213
- var PostFactory = container.lookupFactory('model:post');
2214
- var store = container.lookup('store:main');
2219
+ let UserFactory = container.lookupFactory('model:user');
2220
+ let PostFactory = container.lookupFactory('model:post');
2221
+ let store = container.lookup('store:main');
2215
2222
  UserFactory.store instanceof Store; //=> true
2216
2223
  UserFactory.secondaryStore instanceof OtherStore; //=> false
2217
2224
  PostFactory.store instanceof Store; //=> true
@@ -2276,7 +2283,7 @@ enifed('container/registry', ['exports', 'ember-metal/debug', 'ember-metal/dicti
2276
2283
 
2277
2284
  validateFullName: function (fullName) {
2278
2285
  if (!this.isValidFullName(fullName)) {
2279
- throw new TypeError('Invalid Fullname, expected: `type:name` got: ' + fullName);
2286
+ throw new TypeError('Invalid Fullname, expected: \'type:name\' got: ' + fullName);
2280
2287
  }
2281
2288
 
2282
2289
  return true;
@@ -2291,13 +2298,13 @@ enifed('container/registry', ['exports', 'ember-metal/debug', 'ember-metal/dicti
2291
2298
  return;
2292
2299
  }
2293
2300
 
2294
- var fullName;
2301
+ var fullName = undefined;
2295
2302
 
2296
2303
  for (var i = 0; i < injections.length; i++) {
2297
2304
  fullName = injections[i].fullName;
2298
2305
 
2299
2306
  if (!this.has(fullName)) {
2300
- throw new Error('Attempting to inject an unknown injection: `' + fullName + '`');
2307
+ throw new Error('Attempting to inject an unknown injection: \'' + fullName + '\'');
2301
2308
  }
2302
2309
  }
2303
2310
  },
@@ -2364,7 +2371,7 @@ enifed('container/registry', ['exports', 'ember-metal/debug', 'ember-metal/dicti
2364
2371
  fullName. Used to allow for local lookup.
2365
2372
 
2366
2373
  ```javascript
2367
- var registry = new Registry();
2374
+ let registry = new Registry();
2368
2375
 
2369
2376
  // the twitter factory is added to the module system
2370
2377
  registry.expandLocalLookup('component:post-title', { source: 'template:post' }) // => component:post/post-title
@@ -2457,7 +2464,7 @@ enifed('container/registry', ['exports', 'ember-metal/debug', 'ember-metal/dicti
2457
2464
  }
2458
2465
 
2459
2466
  var privateNames = _emberMetalDictionary.default(null);
2460
- var privateSuffix = Math.floor(Math.random() * new Date()) + '';
2467
+ var privateSuffix = '' + Math.random() + Date.now();
2461
2468
 
2462
2469
  function privatize(_ref) {
2463
2470
  var fullName = _ref[0];
@@ -2474,8 +2481,6 @@ enifed('container/registry', ['exports', 'ember-metal/debug', 'ember-metal/dicti
2474
2481
 
2475
2482
  return privateNames[fullName] = _emberMetalUtils.intern(type + ':' + rawName + '-' + privateSuffix);
2476
2483
  }
2477
-
2478
- exports.default = Registry;
2479
2484
  });
2480
2485
  enifed('ember-console/index', ['exports', 'ember-environment'], function (exports, _emberEnvironment) {
2481
2486
  'use strict';
@@ -2866,10 +2871,10 @@ enifed("ember-metal/assign", ["exports"], function (exports) {
2866
2871
  Copy properties from a source object to a target object.
2867
2872
 
2868
2873
  ```javascript
2869
- var a = {first: 'Yehuda'};
2870
- var b = {last: 'Katz'};
2871
- var c = {company: 'Tilde Inc.'};
2872
- Ember.assign(a, b, c); // a === {first: 'Yehuda', last: 'Katz', company: 'Tilde Inc.'}, b === {last: 'Katz'}, c === {company: 'Tilde Inc.'}
2874
+ var a = { first: 'Yehuda' };
2875
+ var b = { last: 'Katz' };
2876
+ var c = { company: 'Tilde Inc.' };
2877
+ Ember.assign(a, b, c); // a === { first: 'Yehuda', last: 'Katz', company: 'Tilde Inc.' }, b === { last: 'Katz' }, c === { company: 'Tilde Inc.' }
2873
2878
  ```
2874
2879
 
2875
2880
  @method assign
@@ -3066,7 +3071,7 @@ enifed('ember-metal/binding', ['exports', 'ember-console', 'ember-environment',
3066
3071
 
3067
3072
  _emberMetalEvents.addListener(obj, 'willDestroy', this, 'disconnect');
3068
3073
 
3069
- fireDeprecations(obj, this._to, this._from, possibleGlobal, this._oneWay, !possibleGlobal && !this._oneWay);
3074
+ fireDeprecations(possibleGlobal, this._oneWay, !possibleGlobal && !this._oneWay);
3070
3075
 
3071
3076
  this._readyToSync = true;
3072
3077
  this._fromObj = fromObj;
@@ -3175,23 +3180,22 @@ enifed('ember-metal/binding', ['exports', 'ember-console', 'ember-environment',
3175
3180
 
3176
3181
  };
3177
3182
 
3178
- function fireDeprecations(obj, toPath, fromPath, deprecateGlobal, deprecateOneWay, deprecateAlias) {
3183
+ function fireDeprecations(deprecateGlobal, deprecateOneWay, deprecateAlias) {
3179
3184
  var deprecateGlobalMessage = '`Ember.Binding` is deprecated. Since you' + ' are binding to a global consider using a service instead.';
3180
3185
  var deprecateOneWayMessage = '`Ember.Binding` is deprecated. Since you' + ' are using a `oneWay` binding consider using a `readOnly` computed' + ' property instead.';
3181
3186
  var deprecateAliasMessage = '`Ember.Binding` is deprecated. Consider' + ' using an `alias` computed property instead.';
3182
3187
 
3183
- var objectInfo = 'The `' + toPath + '` property of `' + obj + '` is an `Ember.Binding` connected to `' + fromPath + '`, but ';
3184
- _emberMetalDebug.deprecate(objectInfo + deprecateGlobalMessage, !deprecateGlobal, {
3188
+ _emberMetalDebug.deprecate(deprecateGlobalMessage, !deprecateGlobal, {
3185
3189
  id: 'ember-metal.binding',
3186
3190
  until: '3.0.0',
3187
3191
  url: 'http://emberjs.com/deprecations/v2.x#toc_ember-binding'
3188
3192
  });
3189
- _emberMetalDebug.deprecate(objectInfo + deprecateOneWayMessage, !deprecateOneWay, {
3193
+ _emberMetalDebug.deprecate(deprecateOneWayMessage, !deprecateOneWay, {
3190
3194
  id: 'ember-metal.binding',
3191
3195
  until: '3.0.0',
3192
3196
  url: 'http://emberjs.com/deprecations/v2.x#toc_ember-binding'
3193
3197
  });
3194
- _emberMetalDebug.deprecate(objectInfo + deprecateAliasMessage, !deprecateAlias, {
3198
+ _emberMetalDebug.deprecate(deprecateAliasMessage, !deprecateAlias, {
3195
3199
  id: 'ember-metal.binding',
3196
3200
  until: '3.0.0',
3197
3201
  url: 'http://emberjs.com/deprecations/v2.x#toc_ember-binding'
@@ -3384,39 +3388,40 @@ enifed('ember-metal/binding', ['exports', 'ember-console', 'ember-environment',
3384
3388
  enifed('ember-metal/cache', ['exports', 'ember-metal/empty_object'], function (exports, _emberMetalEmpty_object) {
3385
3389
  'use strict';
3386
3390
 
3387
- exports.default = Cache;
3391
+ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }
3388
3392
 
3389
- function Cache(limit, func) {
3390
- this.store = new _emberMetalEmpty_object.default();
3391
- this.size = 0;
3392
- this.misses = 0;
3393
- this.hits = 0;
3394
- this.limit = limit;
3395
- this.func = func;
3396
- }
3393
+ var Cache = (function () {
3394
+ function Cache(limit, func, key, store) {
3395
+ _classCallCheck(this, Cache);
3397
3396
 
3398
- var UNDEFINED = function () {};
3397
+ this.size = 0;
3398
+ this.misses = 0;
3399
+ this.hits = 0;
3400
+ this.limit = limit;
3401
+ this.func = func;
3402
+ this.key = key;
3403
+ this.store = store || new DefaultStore();
3404
+ }
3399
3405
 
3400
- Cache.prototype = {
3401
- set: function (key, value) {
3406
+ Cache.prototype.set = function set(obj, value) {
3402
3407
  if (this.limit > this.size) {
3408
+ var key = this.key === undefined ? obj : this.key(obj);
3403
3409
  this.size++;
3404
3410
  if (value === undefined) {
3405
- this.store[key] = UNDEFINED;
3411
+ this.store.set(key, UNDEFINED);
3406
3412
  } else {
3407
- this.store[key] = value;
3413
+ this.store.set(key, value);
3408
3414
  }
3409
3415
  }
3410
-
3411
3416
  return value;
3412
- },
3413
-
3414
- get: function (key) {
3415
- var value = this.store[key];
3417
+ };
3416
3418
 
3419
+ Cache.prototype.get = function get(obj) {
3420
+ var key = this.key === undefined ? obj : this.key(obj);
3421
+ var value = this.store.get(key);
3417
3422
  if (value === undefined) {
3418
3423
  this.misses++;
3419
- value = this.set(key, this.func(key));
3424
+ value = this.set(key, this.func(obj));
3420
3425
  } else if (value === UNDEFINED) {
3421
3426
  this.hits++;
3422
3427
  value = undefined;
@@ -3426,15 +3431,43 @@ enifed('ember-metal/cache', ['exports', 'ember-metal/empty_object'], function (e
3426
3431
  }
3427
3432
 
3428
3433
  return value;
3429
- },
3434
+ };
3430
3435
 
3431
- purge: function () {
3432
- this.store = new _emberMetalEmpty_object.default();
3436
+ Cache.prototype.purge = function purge() {
3437
+ this.store.clear();
3433
3438
  this.size = 0;
3434
3439
  this.hits = 0;
3435
3440
  this.misses = 0;
3441
+ };
3442
+
3443
+ return Cache;
3444
+ })();
3445
+
3446
+ exports.default = Cache;
3447
+
3448
+ function UNDEFINED() {}
3449
+
3450
+ var DefaultStore = (function () {
3451
+ function DefaultStore() {
3452
+ _classCallCheck(this, DefaultStore);
3453
+
3454
+ this.data = new _emberMetalEmpty_object.default();
3436
3455
  }
3437
- };
3456
+
3457
+ DefaultStore.prototype.get = function get(key) {
3458
+ return this.data[key];
3459
+ };
3460
+
3461
+ DefaultStore.prototype.set = function set(key, value) {
3462
+ this.data[key] = value;
3463
+ };
3464
+
3465
+ DefaultStore.prototype.clear = function clear() {
3466
+ this.data = new _emberMetalEmpty_object.default();
3467
+ };
3468
+
3469
+ return DefaultStore;
3470
+ })();
3438
3471
  });
3439
3472
  enifed('ember-metal/chains', ['exports', 'ember-metal/property_get', 'ember-metal/meta', 'ember-metal/watch_key', 'ember-metal/empty_object', 'ember-metal/watch_path'], function (exports, _emberMetalProperty_get, _emberMetalMeta, _emberMetalWatch_key, _emberMetalEmpty_object, _emberMetalWatch_path) {
3440
3473
  'use strict';
@@ -3649,7 +3682,7 @@ enifed('ember-metal/chains', ['exports', 'ember-metal/property_get', 'ember-meta
3649
3682
  copy: function (obj) {
3650
3683
  var ret = new ChainNode(null, null, obj);
3651
3684
  var paths = this._paths;
3652
- var path;
3685
+ var path = undefined;
3653
3686
 
3654
3687
  for (path in paths) {
3655
3688
  // this check will also catch non-number vals.
@@ -3689,7 +3722,7 @@ enifed('ember-metal/chains', ['exports', 'ember-metal/property_get', 'ember-meta
3689
3722
 
3690
3723
  chain: function (key, path) {
3691
3724
  var chains = this._chains;
3692
- var node;
3725
+ var node = undefined;
3693
3726
  if (chains === undefined) {
3694
3727
  chains = this._chains = new _emberMetalEmpty_object.default();
3695
3728
  } else {
@@ -3742,7 +3775,7 @@ enifed('ember-metal/chains', ['exports', 'ember-metal/property_get', 'ember-meta
3742
3775
 
3743
3776
  // then notify chains...
3744
3777
  var chains = this._chains;
3745
- var node;
3778
+ var node = undefined;
3746
3779
  if (chains) {
3747
3780
  for (var key in chains) {
3748
3781
  node = chains[key];
@@ -3918,7 +3951,7 @@ enifed('ember-metal/computed', ['exports', 'ember-metal/debug', 'ember-metal/pro
3918
3951
  this._getter = config;
3919
3952
  } else {
3920
3953
  _emberMetalDebug.assert('Ember.computed expects a function or an object as last argument.', typeof config === 'object' && !Array.isArray(config));
3921
- _emberMetalDebug.assert('Config object pased to a Ember.computed can only contain `get` or `set` keys.', (function () {
3954
+ _emberMetalDebug.assert('Config object passed to an Ember.computed can only contain `get` or `set` keys.', (function () {
3922
3955
  var keys = Object.keys(config);
3923
3956
  for (var i = 0; i < keys.length; i++) {
3924
3957
  if (keys[i] !== 'get' && keys[i] !== 'set') {
@@ -4027,14 +4060,13 @@ enifed('ember-metal/computed', ['exports', 'ember-metal/debug', 'ember-metal/pro
4027
4060
  @public
4028
4061
  */
4029
4062
  ComputedPropertyPrototype.property = function () {
4030
- var args;
4063
+ var args = [];
4031
4064
 
4032
- var addArg = function (property) {
4065
+ function addArg(property) {
4033
4066
  _emberMetalDebug.warn('Dependent keys containing @each only work one level deep. ' + 'You cannot use nested forms like todos.@each.owner.name or todos.@each.owner.@each.name. ' + 'Please create an intermediary computed property.', DEEP_EACH_REGEX.test(property) === false, { id: 'ember-metal.computed-deep-each' });
4034
4067
  args.push(property);
4035
- };
4068
+ }
4036
4069
 
4037
- args = [];
4038
4070
  for (var i = 0; i < arguments.length; i++) {
4039
4071
  _emberMetalExpand_properties.default(arguments[i], addArg);
4040
4072
  }
@@ -4312,7 +4344,7 @@ enifed('ember-metal/computed', ['exports', 'ember-metal/debug', 'ember-metal/pro
4312
4344
  */
4313
4345
 
4314
4346
  function computed(func) {
4315
- var args;
4347
+ var args = undefined;
4316
4348
 
4317
4349
  if (arguments.length > 1) {
4318
4350
  args = [].slice.call(arguments);
@@ -4507,7 +4539,8 @@ enifed('ember-metal/dependent_keys', ['exports', 'ember-metal/watching'], functi
4507
4539
  function addDependentKeys(desc, obj, keyName, meta) {
4508
4540
  // the descriptor has a list of dependent keys, so
4509
4541
  // add all of its dependent keys.
4510
- var idx, depKey;
4542
+ var idx = undefined,
4543
+ depKey = undefined;
4511
4544
  var depKeys = desc._dependentKeys;
4512
4545
  if (!depKeys) {
4513
4546
  return;
@@ -4526,13 +4559,12 @@ enifed('ember-metal/dependent_keys', ['exports', 'ember-metal/watching'], functi
4526
4559
  // the descriptor has a list of dependent keys, so
4527
4560
  // remove all of its dependent keys.
4528
4561
  var depKeys = desc._dependentKeys;
4529
- var idx, depKey;
4530
4562
  if (!depKeys) {
4531
4563
  return;
4532
4564
  }
4533
4565
 
4534
- for (idx = 0; idx < depKeys.length; idx++) {
4535
- depKey = depKeys[idx];
4566
+ for (var idx = 0; idx < depKeys.length; idx++) {
4567
+ var depKey = depKeys[idx];
4536
4568
  // Decrement the number of times depKey depends on keyName.
4537
4569
  meta.writeDeps(depKey, keyName, (meta.peekDeps(depKey, keyName) || 0) - 1);
4538
4570
  // Unwatch the depKey
@@ -4593,7 +4625,7 @@ enifed('ember-metal/dictionary', ['exports', 'ember-metal/empty_object'], functi
4593
4625
  // only makes sense for long-lived dictionaries that aren't instantiated often.
4594
4626
 
4595
4627
  function makeDictionary(parent) {
4596
- var dict;
4628
+ var dict = undefined;
4597
4629
  if (parent === null) {
4598
4630
  dict = new _emberMetalEmpty_object.default();
4599
4631
  } else {
@@ -4672,6 +4704,18 @@ enifed('ember-metal/error_handler', ['exports', 'ember-console', 'ember-metal/te
4672
4704
  exports.dispatchError = dispatchError;
4673
4705
  exports.setDispatchOverride = setDispatchOverride;
4674
4706
 
4707
+ // To maintain stacktrace consistency across browsers
4708
+ var getStack = function (error) {
4709
+ var stack = error.stack;
4710
+ var message = error.message;
4711
+
4712
+ if (stack.indexOf(message) === -1) {
4713
+ stack = message + '\n' + stack;
4714
+ }
4715
+
4716
+ return stack;
4717
+ };
4718
+
4675
4719
  var onerror = undefined;
4676
4720
  // Ember.onerror getter
4677
4721
 
@@ -4709,7 +4753,7 @@ enifed('ember-metal/error_handler', ['exports', 'ember-console', 'ember-metal/te
4709
4753
  if (onerror) {
4710
4754
  onerror(error);
4711
4755
  } else {
4712
- _emberConsole.default.error(error.stack);
4756
+ _emberConsole.default.error(getStack(error));
4713
4757
  }
4714
4758
  }
4715
4759
  });
@@ -5023,13 +5067,13 @@ enifed('ember-metal/events', ['exports', 'ember-metal/debug', 'ember-metal/utils
5023
5067
 
5024
5068
 
5025
5069
  ``` javascript
5026
- var Job = Ember.Object.extend({
5070
+ let Job = Ember.Object.extend({
5027
5071
  logCompleted: Ember.on('completed', function() {
5028
5072
  console.log('Job completed!');
5029
5073
  })
5030
5074
  });
5031
5075
 
5032
- var job = Job.create();
5076
+ let job = Job.create();
5033
5077
 
5034
5078
  Ember.sendEvent(job, 'completed'); // Logs 'Job completed!'
5035
5079
  ```
@@ -5223,7 +5267,7 @@ enifed('ember-metal/get_properties', ['exports', 'ember-metal/property_get'], fu
5223
5267
  return ret;
5224
5268
  }
5225
5269
  });
5226
- enifed('ember-metal/index', ['exports', 'require', 'ember-environment', 'ember/version', 'ember-metal/core', 'ember-metal/debug', 'ember-metal/features', 'ember-metal/assign', 'ember-metal/merge', 'ember-metal/instrumentation', 'ember-metal/utils', 'ember-metal/meta', 'ember-metal/error', 'ember-metal/cache', 'ember-console', 'ember-metal/property_get', 'ember-metal/events', 'ember-metal/observer_set', 'ember-metal/property_events', 'ember-metal/properties', 'ember-metal/property_set', 'ember-metal/map', 'ember-metal/get_properties', 'ember-metal/set_properties', 'ember-metal/watch_key', 'ember-metal/chains', 'ember-metal/watch_path', 'ember-metal/watching', 'ember-metal/expand_properties', 'ember-metal/computed', 'ember-metal/alias', 'ember-metal/observer', 'ember-metal/mixin', 'ember-metal/binding', 'ember-metal/path_cache', 'ember-metal/testing', 'ember-metal/error_handler', 'ember-metal/run_loop', 'ember-metal/libraries', 'ember-metal/is_none', 'ember-metal/is_empty', 'ember-metal/is_blank', 'ember-metal/is_present', 'backburner'], function (exports, _require, _emberEnvironment, _emberVersion, _emberMetalCore, _emberMetalDebug, _emberMetalFeatures, _emberMetalAssign, _emberMetalMerge, _emberMetalInstrumentation, _emberMetalUtils, _emberMetalMeta, _emberMetalError, _emberMetalCache, _emberConsole, _emberMetalProperty_get, _emberMetalEvents, _emberMetalObserver_set, _emberMetalProperty_events, _emberMetalProperties, _emberMetalProperty_set, _emberMetalMap, _emberMetalGet_properties, _emberMetalSet_properties, _emberMetalWatch_key, _emberMetalChains, _emberMetalWatch_path, _emberMetalWatching, _emberMetalExpand_properties, _emberMetalComputed, _emberMetalAlias, _emberMetalObserver, _emberMetalMixin, _emberMetalBinding, _emberMetalPath_cache, _emberMetalTesting, _emberMetalError_handler, _emberMetalRun_loop, _emberMetalLibraries, _emberMetalIs_none, _emberMetalIs_empty, _emberMetalIs_blank, _emberMetalIs_present, _backburner) {
5270
+ enifed('ember-metal/index', ['exports', 'require', 'ember-environment', 'ember/version', 'ember-metal/core', 'ember-metal/debug', 'ember-metal/features', 'ember-metal/assign', 'ember-metal/merge', 'ember-metal/instrumentation', 'ember-metal/utils', 'ember-metal/meta', 'ember-metal/error', 'ember-metal/cache', 'ember-console', 'ember-metal/property_get', 'ember-metal/events', 'ember-metal/observer_set', 'ember-metal/property_events', 'ember-metal/properties', 'ember-metal/property_set', 'ember-metal/weak_map', 'ember-metal/map', 'ember-metal/get_properties', 'ember-metal/set_properties', 'ember-metal/watch_key', 'ember-metal/chains', 'ember-metal/watch_path', 'ember-metal/watching', 'ember-metal/expand_properties', 'ember-metal/computed', 'ember-metal/alias', 'ember-metal/observer', 'ember-metal/mixin', 'ember-metal/binding', 'ember-metal/path_cache', 'ember-metal/testing', 'ember-metal/error_handler', 'ember-metal/run_loop', 'ember-metal/libraries', 'ember-metal/is_none', 'ember-metal/is_empty', 'ember-metal/is_blank', 'ember-metal/is_present', 'backburner'], function (exports, _require, _emberEnvironment, _emberVersion, _emberMetalCore, _emberMetalDebug, _emberMetalFeatures, _emberMetalAssign, _emberMetalMerge, _emberMetalInstrumentation, _emberMetalUtils, _emberMetalMeta, _emberMetalError, _emberMetalCache, _emberConsole, _emberMetalProperty_get, _emberMetalEvents, _emberMetalObserver_set, _emberMetalProperty_events, _emberMetalProperties, _emberMetalProperty_set, _emberMetalWeak_map, _emberMetalMap, _emberMetalGet_properties, _emberMetalSet_properties, _emberMetalWatch_key, _emberMetalChains, _emberMetalWatch_path, _emberMetalWatching, _emberMetalExpand_properties, _emberMetalComputed, _emberMetalAlias, _emberMetalObserver, _emberMetalMixin, _emberMetalBinding, _emberMetalPath_cache, _emberMetalTesting, _emberMetalError_handler, _emberMetalRun_loop, _emberMetalLibraries, _emberMetalIs_none, _emberMetalIs_empty, _emberMetalIs_blank, _emberMetalIs_present, _backburner) {
5227
5271
  /**
5228
5272
  @module ember
5229
5273
  @submodule ember-metal
@@ -5302,6 +5346,9 @@ enifed('ember-metal/index', ['exports', 'require', 'ember-environment', 'ember/v
5302
5346
  _emberMetalCore.default.set = _emberMetalProperty_set.set;
5303
5347
  _emberMetalCore.default.trySet = _emberMetalProperty_set.trySet;
5304
5348
 
5349
+ if (_emberMetalFeatures.default('ember-metal-weakmap')) {
5350
+ _emberMetalCore.default.WeakMap = _emberMetalWeak_map.default;
5351
+ }
5305
5352
  _emberMetalCore.default.OrderedSet = _emberMetalMap.OrderedSet;
5306
5353
  _emberMetalCore.default.Map = _emberMetalMap.Map;
5307
5354
  _emberMetalCore.default.MapWithDefault = _emberMetalMap.MapWithDefault;
@@ -5337,7 +5384,6 @@ enifed('ember-metal/index', ['exports', 'require', 'ember-environment', 'ember/v
5337
5384
  _emberMetalCore.default._suspendObserver = _emberMetalObserver._suspendObserver;
5338
5385
  _emberMetalCore.default._suspendObservers = _emberMetalObserver._suspendObservers;
5339
5386
 
5340
- _emberMetalCore.default.IS_BINDING = _emberMetalMixin.IS_BINDING;
5341
5387
  _emberMetalCore.default.required = _emberMetalMixin.required;
5342
5388
  _emberMetalCore.default.aliasMethod = _emberMetalMixin.aliasMethod;
5343
5389
  _emberMetalCore.default.observer = _emberMetalMixin.observer;
@@ -5371,6 +5417,7 @@ enifed('ember-metal/index', ['exports', 'require', 'ember-environment', 'ember/v
5371
5417
 
5372
5418
  return new BackburnerAlias(arguments);
5373
5419
  };
5420
+
5374
5421
  _emberMetalCore.default._Backburner = _backburner.default;
5375
5422
 
5376
5423
  /**
@@ -5404,7 +5451,7 @@ enifed('ember-metal/index', ['exports', 'require', 'ember-environment', 'ember/v
5404
5451
  return _emberEnvironment.ENV.LOG_STACKTRACE_ON_DEPRECATION;
5405
5452
  },
5406
5453
  set: function (value) {
5407
- return _emberEnvironment.ENV.LOG_STACKTRACE_ON_DEPRECATION = !!value;
5454
+ _emberEnvironment.ENV.LOG_STACKTRACE_ON_DEPRECATION = !!value;
5408
5455
  },
5409
5456
  enumerable: false
5410
5457
  });
@@ -5414,7 +5461,7 @@ enifed('ember-metal/index', ['exports', 'require', 'ember-environment', 'ember/v
5414
5461
  return _emberEnvironment.ENV.LOG_VERSION;
5415
5462
  },
5416
5463
  set: function (value) {
5417
- return _emberEnvironment.ENV.LOG_VERSION = !!value;
5464
+ _emberEnvironment.ENV.LOG_VERSION = !!value;
5418
5465
  },
5419
5466
  enumerable: false
5420
5467
  });
@@ -5424,7 +5471,7 @@ enifed('ember-metal/index', ['exports', 'require', 'ember-environment', 'ember/v
5424
5471
  return _emberEnvironment.ENV.MODEL_FACTORY_INJECTIONS;
5425
5472
  },
5426
5473
  set: function (value) {
5427
- return _emberEnvironment.ENV.MODEL_FACTORY_INJECTIONS = !!value;
5474
+ _emberEnvironment.ENV.MODEL_FACTORY_INJECTIONS = !!value;
5428
5475
  },
5429
5476
  enumerable: false
5430
5477
  });
@@ -5434,7 +5481,7 @@ enifed('ember-metal/index', ['exports', 'require', 'ember-environment', 'ember/v
5434
5481
  return _emberEnvironment.ENV.LOG_BINDINGS;
5435
5482
  },
5436
5483
  set: function (value) {
5437
- return _emberEnvironment.ENV.LOG_BINDINGS = !!value;
5484
+ _emberEnvironment.ENV.LOG_BINDINGS = !!value;
5438
5485
  },
5439
5486
  enumerable: false
5440
5487
  });
@@ -5456,7 +5503,7 @@ enifed('ember-metal/index', ['exports', 'require', 'ember-environment', 'ember/v
5456
5503
  return _emberEnvironment.context.lookup;
5457
5504
  },
5458
5505
  set: function (value) {
5459
- return _emberEnvironment.context.lookup = value;
5506
+ _emberEnvironment.context.lookup = value;
5460
5507
  },
5461
5508
  enumerable: false
5462
5509
  });
@@ -5543,6 +5590,8 @@ enifed('ember-metal/index', ['exports', 'require', 'ember-environment', 'ember/v
5543
5590
  enifed('ember-metal/injected_property', ['exports', 'ember-metal/debug', 'ember-metal/computed', 'ember-metal/alias', 'ember-metal/properties', 'container/owner'], function (exports, _emberMetalDebug, _emberMetalComputed, _emberMetalAlias, _emberMetalProperties, _containerOwner) {
5544
5591
  'use strict';
5545
5592
 
5593
+ exports.default = InjectedProperty;
5594
+
5546
5595
  /**
5547
5596
  Read-only property that returns the result of a container lookup.
5548
5597
 
@@ -5554,6 +5603,7 @@ enifed('ember-metal/injected_property', ['exports', 'ember-metal/debug', 'ember-
5554
5603
  to the property's name
5555
5604
  @private
5556
5605
  */
5606
+
5557
5607
  function InjectedProperty(type, name) {
5558
5608
  this.type = type;
5559
5609
  this.name = name;
@@ -5582,10 +5632,7 @@ enifed('ember-metal/injected_property', ['exports', 'ember-metal/debug', 'ember-
5582
5632
 
5583
5633
  InjectedPropertyPrototype.get = ComputedPropertyPrototype.get;
5584
5634
  InjectedPropertyPrototype.readOnly = ComputedPropertyPrototype.readOnly;
5585
-
5586
5635
  InjectedPropertyPrototype.teardown = ComputedPropertyPrototype.teardown;
5587
-
5588
- exports.default = InjectedProperty;
5589
5636
  });
5590
5637
  enifed('ember-metal/instrumentation', ['exports', 'ember-environment', 'ember-metal/features'], function (exports, _emberEnvironment, _emberMetalFeatures) {
5591
5638
  'use strict';
@@ -5605,11 +5652,11 @@ enifed('ember-metal/instrumentation', ['exports', 'ember-environment', 'ember-me
5605
5652
 
5606
5653
  ```javascript
5607
5654
  Ember.subscribe("render", {
5608
- before: function(name, timestamp, payload) {
5655
+ before(name, timestamp, payload) {
5609
5656
 
5610
5657
  },
5611
5658
 
5612
- after: function(name, timestamp, payload) {
5659
+ after(name, timestamp, payload) {
5613
5660
 
5614
5661
  }
5615
5662
  });
@@ -5647,9 +5694,9 @@ enifed('ember-metal/instrumentation', ['exports', 'ember-environment', 'ember-me
5647
5694
  exports.subscribers = subscribers;
5648
5695
  var cache = {};
5649
5696
 
5650
- var populateListeners = function (name) {
5697
+ function populateListeners(name) {
5651
5698
  var listeners = [];
5652
- var subscriber;
5699
+ var subscriber = undefined;
5653
5700
 
5654
5701
  for (var i = 0; i < subscribers.length; i++) {
5655
5702
  subscriber = subscribers[i];
@@ -5660,7 +5707,7 @@ enifed('ember-metal/instrumentation', ['exports', 'ember-environment', 'ember-me
5660
5707
 
5661
5708
  cache[name] = listeners;
5662
5709
  return listeners;
5663
- };
5710
+ }
5664
5711
 
5665
5712
  var time = (function () {
5666
5713
  var perf = 'undefined' !== typeof window ? window.performance || {} : {};
@@ -5705,7 +5752,7 @@ enifed('ember-metal/instrumentation', ['exports', 'ember-environment', 'ember-me
5705
5752
  }
5706
5753
  }
5707
5754
 
5708
- var flaggedInstrument;
5755
+ var flaggedInstrument = undefined;
5709
5756
  if (_emberMetalFeatures.default('ember-improved-instrumentation')) {
5710
5757
  exports.flaggedInstrument = flaggedInstrument = instrument;
5711
5758
  } else {
@@ -5744,14 +5791,15 @@ enifed('ember-metal/instrumentation', ['exports', 'ember-environment', 'ember-me
5744
5791
  var payload = _payload();
5745
5792
 
5746
5793
  var STRUCTURED_PROFILE = _emberEnvironment.ENV.STRUCTURED_PROFILE;
5747
- var timeName;
5794
+ var timeName = undefined;
5748
5795
  if (STRUCTURED_PROFILE) {
5749
5796
  timeName = name + ': ' + payload.object;
5750
5797
  console.time(timeName);
5751
5798
  }
5752
5799
 
5753
5800
  var beforeValues = new Array(listeners.length);
5754
- var i, listener;
5801
+ var i = undefined,
5802
+ listener = undefined;
5755
5803
  var timestamp = time();
5756
5804
  for (i = 0; i < listeners.length; i++) {
5757
5805
  listener = listeners[i];
@@ -5759,7 +5807,8 @@ enifed('ember-metal/instrumentation', ['exports', 'ember-environment', 'ember-me
5759
5807
  }
5760
5808
 
5761
5809
  return function _instrumentEnd() {
5762
- var i, listener;
5810
+ var i = undefined,
5811
+ listener = undefined;
5763
5812
  var timestamp = time();
5764
5813
  for (i = 0; i < listeners.length; i++) {
5765
5814
  listener = listeners[i];
@@ -5789,7 +5838,7 @@ enifed('ember-metal/instrumentation', ['exports', 'ember-environment', 'ember-me
5789
5838
 
5790
5839
  function subscribe(pattern, object) {
5791
5840
  var paths = pattern.split('.');
5792
- var path;
5841
+ var path = undefined;
5793
5842
  var regex = [];
5794
5843
 
5795
5844
  for (var i = 0; i < paths.length; i++) {
@@ -5827,7 +5876,7 @@ enifed('ember-metal/instrumentation', ['exports', 'ember-environment', 'ember-me
5827
5876
  */
5828
5877
 
5829
5878
  function unsubscribe(subscriber) {
5830
- var index;
5879
+ var index = undefined;
5831
5880
 
5832
5881
  for (var i = 0; i < subscribers.length; i++) {
5833
5882
  if (subscribers[i] === subscriber) {
@@ -5889,6 +5938,8 @@ enifed('ember-metal/is_blank', ['exports', 'ember-metal/is_empty'], function (ex
5889
5938
  enifed('ember-metal/is_empty', ['exports', 'ember-metal/property_get', 'ember-metal/is_none'], function (exports, _emberMetalProperty_get, _emberMetalIs_none) {
5890
5939
  'use strict';
5891
5940
 
5941
+ exports.default = isEmpty;
5942
+
5892
5943
  /**
5893
5944
  Verifies that a value is `null` or an empty string, empty array,
5894
5945
  or empty function.
@@ -5915,6 +5966,7 @@ enifed('ember-metal/is_empty', ['exports', 'ember-metal/property_get', 'ember-me
5915
5966
  @return {Boolean}
5916
5967
  @public
5917
5968
  */
5969
+
5918
5970
  function isEmpty(obj) {
5919
5971
  var none = _emberMetalIs_none.default(obj);
5920
5972
  if (none) {
@@ -5939,16 +5991,14 @@ enifed('ember-metal/is_empty', ['exports', 'ember-metal/property_get', 'ember-me
5939
5991
  }
5940
5992
 
5941
5993
  if (objectType === 'object') {
5942
- var length = _emberMetalProperty_get.get(obj, 'length');
5943
- if (typeof length === 'number') {
5944
- return !length;
5994
+ var _length = _emberMetalProperty_get.get(obj, 'length');
5995
+ if (typeof _length === 'number') {
5996
+ return !_length;
5945
5997
  }
5946
5998
  }
5947
5999
 
5948
6000
  return false;
5949
6001
  }
5950
-
5951
- exports.default = isEmpty;
5952
6002
  });
5953
6003
  enifed("ember-metal/is_none", ["exports"], function (exports) {
5954
6004
  /**
@@ -6072,7 +6122,7 @@ enifed('ember-metal/libraries', ['exports', 'ember-metal/debug', 'ember-metal/fe
6072
6122
 
6073
6123
  deRegister: function (name) {
6074
6124
  var lib = this._getLibraryByName(name);
6075
- var index;
6125
+ var index = undefined;
6076
6126
 
6077
6127
  if (lib) {
6078
6128
  index = this._registry.indexOf(lib);
@@ -6275,14 +6325,13 @@ enifed('ember-metal/map', ['exports', 'ember-metal/utils', 'ember-metal/empty_ob
6275
6325
  }
6276
6326
 
6277
6327
  var list = this.list;
6278
- var i;
6279
6328
 
6280
6329
  if (arguments.length === 2) {
6281
- for (i = 0; i < list.length; i++) {
6330
+ for (var i = 0; i < list.length; i++) {
6282
6331
  fn.call(arguments[1], list[i]);
6283
6332
  }
6284
6333
  } else {
6285
- for (i = 0; i < list.length; i++) {
6334
+ for (var i = 0; i < list.length; i++) {
6286
6335
  fn(list[i]);
6287
6336
  }
6288
6337
  }
@@ -6472,16 +6521,17 @@ enifed('ember-metal/map', ['exports', 'ember-metal/utils', 'ember-metal/empty_ob
6472
6521
  }
6473
6522
 
6474
6523
  var map = this;
6475
- var cb, thisArg;
6524
+ var cb = undefined,
6525
+ thisArg = undefined;
6476
6526
 
6477
6527
  if (arguments.length === 2) {
6478
6528
  thisArg = arguments[1];
6479
6529
  cb = function (key) {
6480
- callback.call(thisArg, map.get(key), key, map);
6530
+ return callback.call(thisArg, map.get(key), key, map);
6481
6531
  };
6482
6532
  } else {
6483
6533
  cb = function (key) {
6484
- callback(map.get(key), key, map);
6534
+ return callback(map.get(key), key, map);
6485
6535
  };
6486
6536
  }
6487
6537
 
@@ -6586,10 +6636,10 @@ enifed('ember-metal/merge', ['exports'], function (exports) {
6586
6636
  Merge the contents of two objects together into the first object.
6587
6637
 
6588
6638
  ```javascript
6589
- Ember.merge({first: 'Tom'}, {last: 'Dale'}); // {first: 'Tom', last: 'Dale'}
6590
- var a = {first: 'Yehuda'};
6591
- var b = {last: 'Katz'};
6592
- Ember.merge(a, b); // a == {first: 'Yehuda', last: 'Katz'}, b == {last: 'Katz'}
6639
+ Ember.merge({ first: 'Tom' }, { last: 'Dale' }); // { first: 'Tom', last: 'Dale' }
6640
+ var a = { first: 'Yehuda' };
6641
+ var b = { last: 'Katz' };
6642
+ Ember.merge(a, b); // a == { first: 'Yehuda', last: 'Katz' }, b == { last: 'Katz' }
6593
6643
  ```
6594
6644
 
6595
6645
  @method merge
@@ -6609,7 +6659,7 @@ enifed('ember-metal/merge', ['exports'], function (exports) {
6609
6659
  }
6610
6660
 
6611
6661
  var props = Object.keys(updates);
6612
- var prop;
6662
+ var prop = undefined;
6613
6663
 
6614
6664
  for (var i = 0; i < props.length; i++) {
6615
6665
  prop = props[i];
@@ -7216,6 +7266,7 @@ enifed('ember-metal/mixin', ['exports', 'ember-metal/error', 'ember-metal/debug'
7216
7266
  @module ember
7217
7267
  @submodule ember-metal
7218
7268
  */
7269
+ exports.detectBinding = detectBinding;
7219
7270
  exports.mixin = mixin;
7220
7271
  exports.default = Mixin;
7221
7272
  exports.hasUnprocessedMixins = hasUnprocessedMixins;
@@ -7229,7 +7280,6 @@ enifed('ember-metal/mixin', ['exports', 'ember-metal/error', 'ember-metal/debug'
7229
7280
  function ROOT() {}
7230
7281
  ROOT.__hasSuper = false;
7231
7282
 
7232
- var REQUIRED;
7233
7283
  var a_slice = [].slice;
7234
7284
 
7235
7285
  function isMethod(obj) {
@@ -7239,7 +7289,7 @@ enifed('ember-metal/mixin', ['exports', 'ember-metal/error', 'ember-metal/debug'
7239
7289
  var CONTINUE = {};
7240
7290
 
7241
7291
  function mixinProperties(mixinsMeta, mixin) {
7242
- var guid;
7292
+ var guid = undefined;
7243
7293
 
7244
7294
  if (mixin instanceof Mixin) {
7245
7295
  guid = _emberMetalUtils.guidFor(mixin);
@@ -7254,7 +7304,7 @@ enifed('ember-metal/mixin', ['exports', 'ember-metal/error', 'ember-metal/debug'
7254
7304
  }
7255
7305
 
7256
7306
  function concatenatedMixinProperties(concatProp, props, values, base) {
7257
- var concats;
7307
+ var concats = undefined;
7258
7308
 
7259
7309
  // reset before adding each new mixin to pickup concats from previous
7260
7310
  concats = values[concatProp] || base[concatProp];
@@ -7266,7 +7316,7 @@ enifed('ember-metal/mixin', ['exports', 'ember-metal/error', 'ember-metal/debug'
7266
7316
  }
7267
7317
 
7268
7318
  function giveDescriptorSuper(meta, key, property, values, descs, base) {
7269
- var superProperty;
7319
+ var superProperty = undefined;
7270
7320
 
7271
7321
  // Computed properties override methods, and do not call super to them
7272
7322
  if (values[key] === undefined) {
@@ -7304,7 +7354,7 @@ enifed('ember-metal/mixin', ['exports', 'ember-metal/error', 'ember-metal/debug'
7304
7354
  }
7305
7355
 
7306
7356
  function giveMethodSuper(obj, key, method, values, descs) {
7307
- var superMethod;
7357
+ var superMethod = undefined;
7308
7358
 
7309
7359
  // Methods overwrite computed properties, and do not call super to them.
7310
7360
  if (descs[key] === undefined) {
@@ -7410,7 +7460,12 @@ enifed('ember-metal/mixin', ['exports', 'ember-metal/error', 'ember-metal/debug'
7410
7460
  }
7411
7461
 
7412
7462
  function mergeMixins(mixins, m, descs, values, base, keys) {
7413
- var currentMixin, props, key, concats, mergings, meta;
7463
+ var currentMixin = undefined,
7464
+ props = undefined,
7465
+ key = undefined,
7466
+ concats = undefined,
7467
+ mergings = undefined,
7468
+ meta = undefined;
7414
7469
 
7415
7470
  function removeKeys(keyName) {
7416
7471
  delete descs[keyName];
@@ -7455,14 +7510,16 @@ enifed('ember-metal/mixin', ['exports', 'ember-metal/error', 'ember-metal/debug'
7455
7510
  }
7456
7511
  }
7457
7512
 
7458
- var IS_BINDING = /^.+Binding$/;
7513
+ function detectBinding(key) {
7514
+ var length = key.length;
7459
7515
 
7460
- function detectBinding(obj, key, value, m) {
7461
- if (IS_BINDING.test(key)) {
7462
- m.writeBindings(key, value);
7463
- }
7516
+ return length > 7 && key.charCodeAt(length - 7) === 66 && key.indexOf('inding', length - 6) !== -1;
7464
7517
  }
7465
7518
 
7519
+ // warm both paths of above function
7520
+ detectBinding('notbound');
7521
+ detectBinding('fooBinding');
7522
+
7466
7523
  function connectBindings(obj, m) {
7467
7524
  // TODO Mixin.apply(instance) should disconnect binding if exists
7468
7525
  m.forEachBindings(function (key, binding) {
@@ -7490,8 +7547,8 @@ enifed('ember-metal/mixin', ['exports', 'ember-metal/error', 'ember-metal/debug'
7490
7547
 
7491
7548
  function followAlias(obj, desc, m, descs, values) {
7492
7549
  var altKey = desc.methodName;
7493
- var value;
7494
- var possibleDesc;
7550
+ var value = undefined;
7551
+ var possibleDesc = undefined;
7495
7552
  if (descs[altKey] || values[altKey]) {
7496
7553
  value = values[altKey];
7497
7554
  desc = descs[altKey];
@@ -7537,7 +7594,9 @@ enifed('ember-metal/mixin', ['exports', 'ember-metal/error', 'ember-metal/debug'
7537
7594
  var values = {};
7538
7595
  var m = _emberMetalMeta.meta(obj);
7539
7596
  var keys = [];
7540
- var key, value, desc;
7597
+ var key = undefined,
7598
+ value = undefined,
7599
+ desc = undefined;
7541
7600
 
7542
7601
  obj._super = ROOT;
7543
7602
 
@@ -7574,7 +7633,11 @@ enifed('ember-metal/mixin', ['exports', 'ember-metal/error', 'ember-metal/debug'
7574
7633
  }
7575
7634
 
7576
7635
  replaceObserversAndListeners(obj, key, value);
7577
- detectBinding(obj, key, value, m);
7636
+
7637
+ if (detectBinding(key)) {
7638
+ m.writeBindings(key, value);
7639
+ }
7640
+
7578
7641
  _emberMetalProperties.defineProperty(obj, key, desc, value, m);
7579
7642
  }
7580
7643
 
@@ -7736,7 +7799,7 @@ enifed('ember-metal/mixin', ['exports', 'ember-metal/error', 'ember-metal/debug'
7736
7799
  @private
7737
7800
  */
7738
7801
  MixinPrototype.reopen = function () {
7739
- var currentMixin;
7802
+ var currentMixin = undefined;
7740
7803
 
7741
7804
  if (this.properties) {
7742
7805
  currentMixin = new Mixin(undefined, this.properties);
@@ -7747,7 +7810,7 @@ enifed('ember-metal/mixin', ['exports', 'ember-metal/error', 'ember-metal/debug'
7747
7810
  }
7748
7811
 
7749
7812
  var mixins = this.mixins;
7750
- var idx;
7813
+ var idx = undefined;
7751
7814
 
7752
7815
  for (idx = 0; idx < arguments.length; idx++) {
7753
7816
  currentMixin = arguments[idx];
@@ -7880,7 +7943,7 @@ enifed('ember-metal/mixin', ['exports', 'ember-metal/error', 'ember-metal/debug'
7880
7943
  return ret;
7881
7944
  };
7882
7945
 
7883
- exports.REQUIRED = REQUIRED = new _emberMetalProperties.Descriptor();
7946
+ var REQUIRED = new _emberMetalProperties.Descriptor();
7884
7947
  REQUIRED.toString = function () {
7885
7948
  return '(Required Property)';
7886
7949
  };
@@ -7916,7 +7979,7 @@ enifed('ember-metal/mixin', ['exports', 'ember-metal/error', 'ember-metal/debug'
7916
7979
  moniker: Ember.aliasMethod('name')
7917
7980
  });
7918
7981
 
7919
- var goodGuy = App.Person.create();
7982
+ let goodGuy = App.Person.create();
7920
7983
 
7921
7984
  goodGuy.name(); // 'Tomhuda Katzdale'
7922
7985
  goodGuy.moniker(); // 'Tomhuda Katzdale'
@@ -7964,7 +8027,7 @@ enifed('ember-metal/mixin', ['exports', 'ember-metal/error', 'ember-metal/debug'
7964
8027
  }
7965
8028
 
7966
8029
  var func = args.slice(-1)[0];
7967
- var paths;
8030
+ var paths = undefined;
7968
8031
 
7969
8032
  var addWatchedProperty = function (path) {
7970
8033
  paths.push(path);
@@ -8047,7 +8110,7 @@ enifed('ember-metal/mixin', ['exports', 'ember-metal/error', 'ember-metal/debug'
8047
8110
  valueDidChange: Ember.observer('content.value', function(obj, keyName) {
8048
8111
  // only run if updating a value already in the DOM
8049
8112
  if (this.get('state') === 'inDOM') {
8050
- var color = obj.get(keyName) > this.changingFrom ? 'green' : 'red';
8113
+ let color = obj.get(keyName) > this.changingFrom ? 'green' : 'red';
8051
8114
  // logic
8052
8115
  }
8053
8116
  }),
@@ -8077,7 +8140,7 @@ enifed('ember-metal/mixin', ['exports', 'ember-metal/error', 'ember-metal/debug'
8077
8140
  }
8078
8141
 
8079
8142
  var func = args.slice(-1)[0];
8080
- var paths;
8143
+ var paths = undefined;
8081
8144
 
8082
8145
  var addWatchedProperty = function (path) {
8083
8146
  paths.push(path);
@@ -8106,7 +8169,6 @@ enifed('ember-metal/mixin', ['exports', 'ember-metal/error', 'ember-metal/debug'
8106
8169
  return func;
8107
8170
  }
8108
8171
 
8109
- exports.IS_BINDING = IS_BINDING;
8110
8172
  exports.Mixin = Mixin;
8111
8173
  exports.required = required;
8112
8174
  exports.REQUIRED = REQUIRED;
@@ -8228,6 +8290,8 @@ enifed('ember-metal/observer', ['exports', 'ember-metal/watching', 'ember-metal/
8228
8290
  enifed('ember-metal/observer_set', ['exports', 'ember-metal/utils', 'ember-metal/events'], function (exports, _emberMetalUtils, _emberMetalEvents) {
8229
8291
  'use strict';
8230
8292
 
8293
+ exports.default = ObserverSet;
8294
+
8231
8295
  /*
8232
8296
  this.observerSet = {
8233
8297
  [senderGuid]: { // variable name: `keySet`
@@ -8246,7 +8310,6 @@ enifed('ember-metal/observer_set', ['exports', 'ember-metal/utils', 'ember-metal
8246
8310
  ...
8247
8311
  ]
8248
8312
  */
8249
- exports.default = ObserverSet;
8250
8313
 
8251
8314
  function ObserverSet() {
8252
8315
  this.clear();
@@ -8257,7 +8320,7 @@ enifed('ember-metal/observer_set', ['exports', 'ember-metal/utils', 'ember-metal
8257
8320
  var observers = this.observers;
8258
8321
  var senderGuid = _emberMetalUtils.guidFor(sender);
8259
8322
  var keySet = observerSet[senderGuid];
8260
- var index;
8323
+ var index = undefined;
8261
8324
 
8262
8325
  if (!keySet) {
8263
8326
  observerSet[senderGuid] = keySet = {};
@@ -8277,7 +8340,9 @@ enifed('ember-metal/observer_set', ['exports', 'ember-metal/utils', 'ember-metal
8277
8340
 
8278
8341
  ObserverSet.prototype.flush = function () {
8279
8342
  var observers = this.observers;
8280
- var i, observer, sender;
8343
+ var i = undefined,
8344
+ observer = undefined,
8345
+ sender = undefined;
8281
8346
  this.clear();
8282
8347
  for (i = 0; i < observers.length; ++i) {
8283
8348
  observer = observers[i];
@@ -8311,15 +8376,12 @@ enifed('ember-metal/path_cache', ['exports', 'ember-metal/cache'], function (exp
8311
8376
  var isGlobalCache = new _emberMetalCache.default(1000, function (key) {
8312
8377
  return IS_GLOBAL.test(key);
8313
8378
  });
8314
-
8315
8379
  var isGlobalPathCache = new _emberMetalCache.default(1000, function (key) {
8316
8380
  return IS_GLOBAL_PATH.test(key);
8317
8381
  });
8318
-
8319
8382
  var hasThisCache = new _emberMetalCache.default(1000, function (key) {
8320
8383
  return key.lastIndexOf(HAS_THIS, 0) === 0;
8321
8384
  });
8322
-
8323
8385
  var firstDotIndexCache = new _emberMetalCache.default(1000, function (key) {
8324
8386
  return key.indexOf('.');
8325
8387
  });
@@ -8509,7 +8571,10 @@ enifed('ember-metal/properties', ['exports', 'ember-metal/debug', 'ember-metal/f
8509
8571
  */
8510
8572
 
8511
8573
  function defineProperty(obj, keyName, desc, data, meta) {
8512
- var possibleDesc, existingDesc, watching, value;
8574
+ var possibleDesc = undefined,
8575
+ existingDesc = undefined,
8576
+ watching = undefined,
8577
+ value = undefined;
8513
8578
 
8514
8579
  if (!meta) {
8515
8580
  meta = _emberMetalMeta.meta(obj);
@@ -8698,7 +8763,8 @@ enifed('ember-metal/property_events', ['exports', 'ember-metal/utils', 'ember-me
8698
8763
  _emberMetalTags.markObjectAsDirty(m);
8699
8764
  }
8700
8765
 
8701
- var WILL_SEEN, DID_SEEN;
8766
+ var WILL_SEEN = undefined,
8767
+ DID_SEEN = undefined;
8702
8768
  // called whenever a property is about to change to clear the cache of any dependent keys (and notify those properties of changes, etc...)
8703
8769
  function dependentKeysWillChange(obj, depKey, meta) {
8704
8770
  if (obj.isDestroying) {
@@ -8707,15 +8773,15 @@ enifed('ember-metal/property_events', ['exports', 'ember-metal/utils', 'ember-me
8707
8773
 
8708
8774
  if (meta && meta.hasDeps(depKey)) {
8709
8775
  var seen = WILL_SEEN;
8710
- var top = !seen;
8776
+ var _top = !seen;
8711
8777
 
8712
- if (top) {
8778
+ if (_top) {
8713
8779
  seen = WILL_SEEN = {};
8714
8780
  }
8715
8781
 
8716
8782
  iterDeps(propertyWillChange, obj, depKey, seen, meta);
8717
8783
 
8718
- if (top) {
8784
+ if (_top) {
8719
8785
  WILL_SEEN = null;
8720
8786
  }
8721
8787
  }
@@ -8729,22 +8795,23 @@ enifed('ember-metal/property_events', ['exports', 'ember-metal/utils', 'ember-me
8729
8795
 
8730
8796
  if (meta && meta.hasDeps(depKey)) {
8731
8797
  var seen = DID_SEEN;
8732
- var top = !seen;
8798
+ var _top2 = !seen;
8733
8799
 
8734
- if (top) {
8800
+ if (_top2) {
8735
8801
  seen = DID_SEEN = {};
8736
8802
  }
8737
8803
 
8738
8804
  iterDeps(propertyDidChange, obj, depKey, seen, meta);
8739
8805
 
8740
- if (top) {
8806
+ if (_top2) {
8741
8807
  DID_SEEN = null;
8742
8808
  }
8743
8809
  }
8744
8810
  }
8745
8811
 
8746
8812
  function iterDeps(method, obj, depKey, seen, meta) {
8747
- var possibleDesc, desc;
8813
+ var possibleDesc = undefined,
8814
+ desc = undefined;
8748
8815
  var guid = _emberMetalUtils.guidFor(obj);
8749
8816
  var current = seen[guid];
8750
8817
 
@@ -8847,7 +8914,8 @@ enifed('ember-metal/property_events', ['exports', 'ember-metal/utils', 'ember-me
8847
8914
  }
8848
8915
 
8849
8916
  var eventName = keyName + ':before';
8850
- var listeners, added;
8917
+ var listeners = undefined,
8918
+ added = undefined;
8851
8919
  if (deferred) {
8852
8920
  listeners = beforeObserverSet.add(obj, keyName, eventName);
8853
8921
  added = _emberMetalEvents.accumulateListeners(obj, eventName, listeners);
@@ -8863,7 +8931,7 @@ enifed('ember-metal/property_events', ['exports', 'ember-metal/utils', 'ember-me
8863
8931
  }
8864
8932
 
8865
8933
  var eventName = keyName + ':change';
8866
- var listeners;
8934
+ var listeners = undefined;
8867
8935
  if (deferred) {
8868
8936
  listeners = observerSet.add(obj, keyName, eventName);
8869
8937
  _emberMetalEvents.accumulateListeners(obj, eventName, listeners);
@@ -8942,7 +9010,7 @@ enifed('ember-metal/property_get', ['exports', 'ember-metal/debug', 'ember-metal
8942
9010
 
8943
9011
  var value = obj[keyName];
8944
9012
  var desc = value !== null && typeof value === 'object' && value.isDescriptor ? value : undefined;
8945
- var ret;
9013
+ var ret = undefined;
8946
9014
 
8947
9015
  if (desc === undefined && _emberMetalPath_cache.isPath(keyName)) {
8948
9016
  return _getPath(obj, keyName);
@@ -9105,10 +9173,8 @@ enifed('ember-metal/property_set', ['exports', 'ember-metal/debug', 'ember-metal
9105
9173
  }
9106
9174
 
9107
9175
  function setPath(root, path, value, tolerant) {
9108
- var keyName;
9109
-
9110
9176
  // get the last part of the path
9111
- keyName = path.slice(path.lastIndexOf('.') + 1);
9177
+ var keyName = path.slice(path.lastIndexOf('.') + 1);
9112
9178
 
9113
9179
  // get the first part of the part
9114
9180
  path = path === keyName ? keyName : path.slice(0, path.length - (keyName.length + 1));
@@ -9166,7 +9232,8 @@ enifed("ember-metal/replace", ["exports"], function (exports) {
9166
9232
  var size = 60000;
9167
9233
  var start = idx;
9168
9234
  var ends = amt;
9169
- var count, chunk;
9235
+ var count = undefined,
9236
+ chunk = undefined;
9170
9237
 
9171
9238
  while (args.length) {
9172
9239
  count = ends > size ? size : ends;
@@ -9682,43 +9749,43 @@ enifed('ember-metal/run_loop', ['exports', 'ember-metal/debug', 'ember-metal/tes
9682
9749
  `run.throttle()`.
9683
9750
 
9684
9751
  ```javascript
9685
- var runNext = run.next(myContext, function() {
9752
+ let runNext = run.next(myContext, function() {
9686
9753
  // will not be executed
9687
9754
  });
9688
9755
 
9689
9756
  run.cancel(runNext);
9690
9757
 
9691
- var runLater = run.later(myContext, function() {
9758
+ let runLater = run.later(myContext, function() {
9692
9759
  // will not be executed
9693
9760
  }, 500);
9694
9761
 
9695
9762
  run.cancel(runLater);
9696
9763
 
9697
- var runScheduleOnce = run.scheduleOnce('afterRender', myContext, function() {
9764
+ let runScheduleOnce = run.scheduleOnce('afterRender', myContext, function() {
9698
9765
  // will not be executed
9699
9766
  });
9700
9767
 
9701
9768
  run.cancel(runScheduleOnce);
9702
9769
 
9703
- var runOnce = run.once(myContext, function() {
9770
+ let runOnce = run.once(myContext, function() {
9704
9771
  // will not be executed
9705
9772
  });
9706
9773
 
9707
9774
  run.cancel(runOnce);
9708
9775
 
9709
- var throttle = run.throttle(myContext, function() {
9776
+ let throttle = run.throttle(myContext, function() {
9710
9777
  // will not be executed
9711
9778
  }, 1, false);
9712
9779
 
9713
9780
  run.cancel(throttle);
9714
9781
 
9715
- var debounce = run.debounce(myContext, function() {
9782
+ let debounce = run.debounce(myContext, function() {
9716
9783
  // will not be executed
9717
9784
  }, 1);
9718
9785
 
9719
9786
  run.cancel(debounce);
9720
9787
 
9721
- var debounceImmediate = run.debounce(myContext, function() {
9788
+ let debounceImmediate = run.debounce(myContext, function() {
9722
9789
  // will be executed since we passed in true (immediate)
9723
9790
  }, 100, true);
9724
9791
 
@@ -9751,7 +9818,7 @@ enifed('ember-metal/run_loop', ['exports', 'ember-metal/debug', 'ember-metal/tes
9751
9818
  console.log(this.name + ' ran.');
9752
9819
  }
9753
9820
 
9754
- var myContext = { name: 'debounce' };
9821
+ let myContext = { name: 'debounce' };
9755
9822
 
9756
9823
  run.debounce(myContext, whoRan, 150);
9757
9824
 
@@ -9774,7 +9841,7 @@ enifed('ember-metal/run_loop', ['exports', 'ember-metal/debug', 'ember-metal/tes
9774
9841
  console.log(this.name + ' ran.');
9775
9842
  }
9776
9843
 
9777
- var myContext = { name: 'debounce' };
9844
+ let myContext = { name: 'debounce' };
9778
9845
 
9779
9846
  run.debounce(myContext, whoRan, 150, true);
9780
9847
 
@@ -9817,7 +9884,7 @@ enifed('ember-metal/run_loop', ['exports', 'ember-metal/debug', 'ember-metal/tes
9817
9884
  console.log(this.name + ' ran.');
9818
9885
  }
9819
9886
 
9820
- var myContext = { name: 'throttle' };
9887
+ let myContext = { name: 'throttle' };
9821
9888
 
9822
9889
  run.throttle(myContext, whoRan, 150);
9823
9890
  // whoRan is invoked with context myContext
@@ -9878,7 +9945,7 @@ enifed('ember-metal/set_properties', ['exports', 'ember-metal/property_events',
9878
9945
  observers will be buffered.
9879
9946
 
9880
9947
  ```javascript
9881
- var anObject = Ember.Object.create();
9948
+ let anObject = Ember.Object.create();
9882
9949
 
9883
9950
  anObject.setProperties({
9884
9951
  firstName: 'Stanley',
@@ -9900,7 +9967,7 @@ enifed('ember-metal/set_properties', ['exports', 'ember-metal/property_events',
9900
9967
  }
9901
9968
  _emberMetalProperty_events.changeProperties(function () {
9902
9969
  var props = Object.keys(properties);
9903
- var propertyName;
9970
+ var propertyName = undefined;
9904
9971
 
9905
9972
  for (var i = 0; i < props.length; i++) {
9906
9973
  propertyName = props[i];
@@ -10220,7 +10287,7 @@ enifed('ember-metal/utils', ['exports'], function (exports) {
10220
10287
  return '(null)';
10221
10288
  }
10222
10289
 
10223
- var ret;
10290
+ var ret = undefined;
10224
10291
  var type = typeof obj;
10225
10292
 
10226
10293
  // Don't allow prototype changes to String etc. to change the guidFor
@@ -10347,7 +10414,7 @@ enifed('ember-metal/utils', ['exports'], function (exports) {
10347
10414
  Checks to see if the `methodName` exists on the `obj`.
10348
10415
 
10349
10416
  ```javascript
10350
- var foo = { bar: function() { return 'bar'; }, baz: null };
10417
+ let foo = { bar: function() { return 'bar'; }, baz: null };
10351
10418
 
10352
10419
  Ember.canInvoke(foo, 'bar'); // true
10353
10420
  Ember.canInvoke(foo, 'baz'); // false
@@ -10370,7 +10437,7 @@ enifed('ember-metal/utils', ['exports'], function (exports) {
10370
10437
  and if it does, invokes it with the arguments passed.
10371
10438
 
10372
10439
  ```javascript
10373
- var d = new Date('03/15/2013');
10440
+ let d = new Date('03/15/2013');
10374
10441
 
10375
10442
  Ember.tryInvoke(d, 'getTime'); // 1363320000000
10376
10443
  Ember.tryInvoke(d, 'setFullYear', [2014]); // 1394856000000
@@ -10410,7 +10477,7 @@ enifed('ember-metal/utils', ['exports'], function (exports) {
10410
10477
  Ember.makeArray('lindsay'); // ['lindsay']
10411
10478
  Ember.makeArray([1, 2, 42]); // [1, 2, 42]
10412
10479
 
10413
- var controller = Ember.ArrayProxy.create({ content: [] });
10480
+ let controller = Ember.ArrayProxy.create({ content: [] });
10414
10481
 
10415
10482
  Ember.makeArray(controller) === controller; // true
10416
10483
  ```
@@ -10465,7 +10532,7 @@ enifed('ember-metal/utils', ['exports'], function (exports) {
10465
10532
  }
10466
10533
 
10467
10534
  // Object.prototype.toString === {}.toString
10468
- var v;
10535
+ var v = undefined;
10469
10536
  var ret = [];
10470
10537
  for (var key in obj) {
10471
10538
  if (obj.hasOwnProperty(key)) {
@@ -10789,7 +10856,10 @@ enifed('ember-metal/watching', ['exports', 'ember-metal/chains', 'ember-metal/wa
10789
10856
 
10790
10857
  function destroy(obj) {
10791
10858
  var meta = _emberMetalMeta.peekMeta(obj);
10792
- var node, nodes, key, nodeObject;
10859
+ var node = undefined,
10860
+ nodes = undefined,
10861
+ key = undefined,
10862
+ nodeObject = undefined;
10793
10863
 
10794
10864
  if (meta) {
10795
10865
  _emberMetalMeta.deleteMeta(obj);
@@ -10821,7 +10891,7 @@ enifed('ember-metal/watching', ['exports', 'ember-metal/chains', 'ember-metal/wa
10821
10891
  }
10822
10892
  }
10823
10893
  });
10824
- enifed('ember-metal/weak_map', ['exports', 'ember-metal/debug', 'ember-metal/utils', 'ember-metal/meta'], function (exports, _emberMetalDebug, _emberMetalUtils, _emberMetalMeta) {
10894
+ enifed('ember-metal/weak_map', ['exports', 'ember-metal/utils', 'ember-metal/meta'], function (exports, _emberMetalUtils, _emberMetalMeta) {
10825
10895
  'use strict';
10826
10896
 
10827
10897
  exports.default = WeakMap;
@@ -10829,9 +10899,15 @@ enifed('ember-metal/weak_map', ['exports', 'ember-metal/debug', 'ember-metal/uti
10829
10899
  var id = 0;
10830
10900
  function UNDEFINED() {}
10831
10901
 
10902
+ // Returns whether Type(value) is Object according to the terminology in the spec
10903
+ function isObject(value) {
10904
+ return typeof value === 'object' && value !== null || typeof value === 'function';
10905
+ }
10906
+
10832
10907
  /*
10833
- * @private
10834
10908
  * @class Ember.WeakMap
10909
+ * @public
10910
+ * @category ember-metal-weakmap
10835
10911
  *
10836
10912
  * A partial polyfill for [WeakMap](http://www.ecma-international.org/ecma-262/6.0/#sec-weakmap-objects).
10837
10913
  *
@@ -10842,10 +10918,26 @@ enifed('ember-metal/weak_map', ['exports', 'ember-metal/debug', 'ember-metal/uti
10842
10918
  * in ember-metal.
10843
10919
  */
10844
10920
 
10845
- function WeakMap() {
10846
- _emberMetalDebug.assert('Invoking the WeakMap constructor with arguments is not supported at this time', arguments.length === 0);
10921
+ function WeakMap(iterable) {
10922
+ if (!(this instanceof WeakMap)) {
10923
+ throw new TypeError('Constructor WeakMap requires \'new\'');
10924
+ }
10847
10925
 
10848
10926
  this._id = _emberMetalUtils.GUID_KEY + id++;
10927
+
10928
+ if (iterable === null || iterable === undefined) {
10929
+ return;
10930
+ } else if (Array.isArray(iterable)) {
10931
+ for (var i = 0; i < iterable.length; i++) {
10932
+ var _iterable$i = iterable[i];
10933
+ var key = _iterable$i[0];
10934
+ var value = _iterable$i[1];
10935
+
10936
+ this.set(key, value);
10937
+ }
10938
+ } else {
10939
+ throw new TypeError('The weak map constructor polyfill only supports an array argument');
10940
+ }
10849
10941
  }
10850
10942
 
10851
10943
  /*
@@ -10854,6 +10946,10 @@ enifed('ember-metal/weak_map', ['exports', 'ember-metal/debug', 'ember-metal/uti
10854
10946
  * @return {Any} stored value
10855
10947
  */
10856
10948
  WeakMap.prototype.get = function (obj) {
10949
+ if (!isObject(obj)) {
10950
+ return undefined;
10951
+ }
10952
+
10857
10953
  var meta = _emberMetalMeta.peekMeta(obj);
10858
10954
  if (meta) {
10859
10955
  var map = meta.readableWeak();
@@ -10874,7 +10970,9 @@ enifed('ember-metal/weak_map', ['exports', 'ember-metal/debug', 'ember-metal/uti
10874
10970
  * @return {WeakMap} the weak map
10875
10971
  */
10876
10972
  WeakMap.prototype.set = function (obj, value) {
10877
- _emberMetalDebug.assert('Uncaught TypeError: Invalid value used as weak map key', obj && (typeof obj === 'object' || typeof obj === 'function'));
10973
+ if (!isObject(obj)) {
10974
+ throw new TypeError('Invalid value used as weak map key');
10975
+ }
10878
10976
 
10879
10977
  if (value === undefined) {
10880
10978
  value = UNDEFINED;
@@ -10891,6 +10989,10 @@ enifed('ember-metal/weak_map', ['exports', 'ember-metal/debug', 'ember-metal/uti
10891
10989
  * @return {boolean} if the key exists
10892
10990
  */
10893
10991
  WeakMap.prototype.has = function (obj) {
10992
+ if (!isObject(obj)) {
10993
+ return false;
10994
+ }
10995
+
10894
10996
  var meta = _emberMetalMeta.peekMeta(obj);
10895
10997
  if (meta) {
10896
10998
  var map = meta.readableWeak();
@@ -10915,6 +11017,14 @@ enifed('ember-metal/weak_map', ['exports', 'ember-metal/debug', 'ember-metal/uti
10915
11017
  return false;
10916
11018
  }
10917
11019
  };
11020
+
11021
+ /*
11022
+ * @method toString
11023
+ * @return {String}
11024
+ */
11025
+ WeakMap.prototype.toString = function () {
11026
+ return '[object WeakMap]';
11027
+ };
10918
11028
  });
10919
11029
  enifed('ember-runtime/compare', ['exports', 'ember-runtime/utils', 'ember-runtime/mixins/comparable'], function (exports, _emberRuntimeUtils, _emberRuntimeMixinsComparable) {
10920
11030
  'use strict';
@@ -11134,11 +11244,11 @@ enifed('ember-runtime/computed/computed_macros', ['exports', 'ember-metal/debug'
11134
11244
  Example
11135
11245
 
11136
11246
  ```javascript
11137
- var ToDoList = Ember.Object.extend({
11247
+ let ToDoList = Ember.Object.extend({
11138
11248
  isDone: Ember.computed.empty('todos')
11139
11249
  });
11140
11250
 
11141
- var todoList = ToDoList.create({
11251
+ let todoList = ToDoList.create({
11142
11252
  todos: ['Unit Test', 'Documentation', 'Release']
11143
11253
  });
11144
11254
 
@@ -11169,11 +11279,11 @@ enifed('ember-runtime/computed/computed_macros', ['exports', 'ember-metal/debug'
11169
11279
  Example
11170
11280
 
11171
11281
  ```javascript
11172
- var Hamster = Ember.Object.extend({
11282
+ let Hamster = Ember.Object.extend({
11173
11283
  hasStuff: Ember.computed.notEmpty('backpack')
11174
11284
  });
11175
11285
 
11176
- var hamster = Hamster.create({ backpack: ['Food', 'Sleeping Bag', 'Tent'] });
11286
+ let hamster = Hamster.create({ backpack: ['Food', 'Sleeping Bag', 'Tent'] });
11177
11287
 
11178
11288
  hamster.get('hasStuff'); // true
11179
11289
  hamster.get('backpack').clear(); // []
@@ -11202,11 +11312,11 @@ enifed('ember-runtime/computed/computed_macros', ['exports', 'ember-metal/debug'
11202
11312
  Example
11203
11313
 
11204
11314
  ```javascript
11205
- var Hamster = Ember.Object.extend({
11315
+ let Hamster = Ember.Object.extend({
11206
11316
  isHungry: Ember.computed.none('food')
11207
11317
  });
11208
11318
 
11209
- var hamster = Hamster.create();
11319
+ let hamster = Hamster.create();
11210
11320
 
11211
11321
  hamster.get('isHungry'); // true
11212
11322
  hamster.set('food', 'Banana');
@@ -11236,11 +11346,11 @@ enifed('ember-runtime/computed/computed_macros', ['exports', 'ember-metal/debug'
11236
11346
  Example
11237
11347
 
11238
11348
  ```javascript
11239
- var User = Ember.Object.extend({
11349
+ let User = Ember.Object.extend({
11240
11350
  isAnonymous: Ember.computed.not('loggedIn')
11241
11351
  });
11242
11352
 
11243
- var user = User.create({loggedIn: false});
11353
+ let user = User.create({loggedIn: false});
11244
11354
 
11245
11355
  user.get('isAnonymous'); // true
11246
11356
  user.set('loggedIn', true);
@@ -11266,11 +11376,11 @@ enifed('ember-runtime/computed/computed_macros', ['exports', 'ember-metal/debug'
11266
11376
  into a boolean value.
11267
11377
 
11268
11378
  ```javascript
11269
- var Hamster = Ember.Object.extend({
11379
+ let Hamster = Ember.Object.extend({
11270
11380
  hasBananas: Ember.computed.bool('numBananas')
11271
11381
  });
11272
11382
 
11273
- var hamster = Hamster.create();
11383
+ let hamster = Hamster.create();
11274
11384
 
11275
11385
  hamster.get('hasBananas'); // false
11276
11386
  hamster.set('numBananas', 0);
@@ -11303,11 +11413,11 @@ enifed('ember-runtime/computed/computed_macros', ['exports', 'ember-metal/debug'
11303
11413
  Example
11304
11414
 
11305
11415
  ```javascript
11306
- var User = Ember.Object.extend({
11416
+ let User = Ember.Object.extend({
11307
11417
  hasValidEmail: Ember.computed.match('email', /^.+@.+\..+$/)
11308
11418
  });
11309
11419
 
11310
- var user = User.create({loggedIn: false});
11420
+ let user = User.create({loggedIn: false});
11311
11421
 
11312
11422
  user.get('hasValidEmail'); // false
11313
11423
  user.set('email', '');
@@ -11340,11 +11450,11 @@ enifed('ember-runtime/computed/computed_macros', ['exports', 'ember-metal/debug'
11340
11450
  Example
11341
11451
 
11342
11452
  ```javascript
11343
- var Hamster = Ember.Object.extend({
11453
+ let Hamster = Ember.Object.extend({
11344
11454
  napTime: Ember.computed.equal('state', 'sleepy')
11345
11455
  });
11346
11456
 
11347
- var hamster = Hamster.create();
11457
+ let hamster = Hamster.create();
11348
11458
 
11349
11459
  hamster.get('napTime'); // false
11350
11460
  hamster.set('state', 'sleepy');
@@ -11375,11 +11485,11 @@ enifed('ember-runtime/computed/computed_macros', ['exports', 'ember-metal/debug'
11375
11485
  Example
11376
11486
 
11377
11487
  ```javascript
11378
- var Hamster = Ember.Object.extend({
11488
+ let Hamster = Ember.Object.extend({
11379
11489
  hasTooManyBananas: Ember.computed.gt('numBananas', 10)
11380
11490
  });
11381
11491
 
11382
- var hamster = Hamster.create();
11492
+ let hamster = Hamster.create();
11383
11493
 
11384
11494
  hamster.get('hasTooManyBananas'); // false
11385
11495
  hamster.set('numBananas', 3);
@@ -11410,11 +11520,11 @@ enifed('ember-runtime/computed/computed_macros', ['exports', 'ember-metal/debug'
11410
11520
  Example
11411
11521
 
11412
11522
  ```javascript
11413
- var Hamster = Ember.Object.extend({
11523
+ let Hamster = Ember.Object.extend({
11414
11524
  hasTooManyBananas: Ember.computed.gte('numBananas', 10)
11415
11525
  });
11416
11526
 
11417
- var hamster = Hamster.create();
11527
+ let hamster = Hamster.create();
11418
11528
 
11419
11529
  hamster.get('hasTooManyBananas'); // false
11420
11530
  hamster.set('numBananas', 3);
@@ -11445,11 +11555,11 @@ enifed('ember-runtime/computed/computed_macros', ['exports', 'ember-metal/debug'
11445
11555
  Example
11446
11556
 
11447
11557
  ```javascript
11448
- var Hamster = Ember.Object.extend({
11558
+ let Hamster = Ember.Object.extend({
11449
11559
  needsMoreBananas: Ember.computed.lt('numBananas', 3)
11450
11560
  });
11451
11561
 
11452
- var hamster = Hamster.create();
11562
+ let hamster = Hamster.create();
11453
11563
 
11454
11564
  hamster.get('needsMoreBananas'); // true
11455
11565
  hamster.set('numBananas', 3);
@@ -11480,11 +11590,11 @@ enifed('ember-runtime/computed/computed_macros', ['exports', 'ember-metal/debug'
11480
11590
  Example
11481
11591
 
11482
11592
  ```javascript
11483
- var Hamster = Ember.Object.extend({
11593
+ let Hamster = Ember.Object.extend({
11484
11594
  needsMoreBananas: Ember.computed.lte('numBananas', 3)
11485
11595
  });
11486
11596
 
11487
- var hamster = Hamster.create();
11597
+ let hamster = Hamster.create();
11488
11598
 
11489
11599
  hamster.get('needsMoreBananas'); // true
11490
11600
  hamster.set('numBananas', 5);
@@ -11515,17 +11625,17 @@ enifed('ember-runtime/computed/computed_macros', ['exports', 'ember-metal/debug'
11515
11625
  You may pass in more than two properties and even use
11516
11626
  property brace expansion. The computed property will
11517
11627
  return the first falsy value or last truthy value
11518
- just like JavaScript's `||` operator.
11628
+ just like JavaScript's `&&` operator.
11519
11629
 
11520
11630
  Example
11521
11631
 
11522
11632
  ```javascript
11523
- var Hamster = Ember.Object.extend({
11633
+ let Hamster = Ember.Object.extend({
11524
11634
  readyForCamp: Ember.computed.and('hasTent', 'hasBackpack'),
11525
11635
  readyForHike: Ember.computed.and('hasWalkingStick', 'hasBackpack')
11526
11636
  });
11527
11637
 
11528
- var tomster = Hamster.create();
11638
+ let tomster = Hamster.create();
11529
11639
 
11530
11640
  tomster.get('readyForCamp'); // false
11531
11641
  tomster.set('hasTent', true);
@@ -11562,12 +11672,12 @@ enifed('ember-runtime/computed/computed_macros', ['exports', 'ember-metal/debug'
11562
11672
  Example
11563
11673
 
11564
11674
  ```javascript
11565
- var Hamster = Ember.Object.extend({
11675
+ let Hamster = Ember.Object.extend({
11566
11676
  readyForRain: Ember.computed.or('hasJacket', 'hasUmbrella'),
11567
11677
  readyForBeach: Ember.computed.or('{hasSunscreen,hasUmbrella}')
11568
11678
  });
11569
11679
 
11570
- var tomster = Hamster.create();
11680
+ let tomster = Hamster.create();
11571
11681
 
11572
11682
  tomster.get('readyForRain'); // undefined
11573
11683
  tomster.set('hasUmbrella', true);
@@ -11596,12 +11706,12 @@ enifed('ember-runtime/computed/computed_macros', ['exports', 'ember-metal/debug'
11596
11706
  though they were called on the original property.
11597
11707
 
11598
11708
  ```javascript
11599
- var Person = Ember.Object.extend({
11709
+ let Person = Ember.Object.extend({
11600
11710
  name: 'Alex Matchneer',
11601
11711
  nomen: Ember.computed.alias('name')
11602
11712
  });
11603
11713
 
11604
- var alex = Person.create();
11714
+ let alex = Person.create();
11605
11715
 
11606
11716
  alex.get('nomen'); // 'Alex Matchneer'
11607
11717
  alex.get('name'); // 'Alex Matchneer'
@@ -11628,13 +11738,13 @@ enifed('ember-runtime/computed/computed_macros', ['exports', 'ember-metal/debug'
11628
11738
  Example
11629
11739
 
11630
11740
  ```javascript
11631
- var User = Ember.Object.extend({
11741
+ let User = Ember.Object.extend({
11632
11742
  firstName: null,
11633
11743
  lastName: null,
11634
11744
  nickName: Ember.computed.oneWay('firstName')
11635
11745
  });
11636
11746
 
11637
- var teddy = User.create({
11747
+ let teddy = User.create({
11638
11748
  firstName: 'Teddy',
11639
11749
  lastName: 'Zeenny'
11640
11750
  });
@@ -11678,13 +11788,13 @@ enifed('ember-runtime/computed/computed_macros', ['exports', 'ember-metal/debug'
11678
11788
  Example
11679
11789
 
11680
11790
  ```javascript
11681
- var User = Ember.Object.extend({
11791
+ let User = Ember.Object.extend({
11682
11792
  firstName: null,
11683
11793
  lastName: null,
11684
11794
  nickName: Ember.computed.readOnly('firstName')
11685
11795
  });
11686
11796
 
11687
- var teddy = User.create({
11797
+ let teddy = User.create({
11688
11798
  firstName: 'Teddy',
11689
11799
  lastName: 'Zeenny'
11690
11800
  });
@@ -11714,9 +11824,24 @@ enifed('ember-runtime/computed/computed_macros', ['exports', 'ember-metal/debug'
11714
11824
  though they were called on the original property, but also
11715
11825
  print a deprecation warning.
11716
11826
 
11827
+ ```javascript
11828
+ let Hamster = Ember.Object.extend({
11829
+ bananaCount: Ember.computed.deprecatingAlias('cavendishCount', {
11830
+ id: 'hamster.deprecate-banana',
11831
+ until: '3.0.0'
11832
+ })
11833
+ });
11834
+
11835
+ let hamster = Hamster.create();
11836
+
11837
+ hamster.set('bananaCount', 5); // Prints a deprecation warning.
11838
+ hamster.get('cavendishCount'); // 5
11839
+ ```
11840
+
11717
11841
  @method deprecatingAlias
11718
11842
  @for Ember.computed
11719
11843
  @param {String} dependentKey
11844
+ @param {Object} options Options for `Ember.deprecate`.
11720
11845
  @return {Ember.ComputedProperty} computed property which creates an
11721
11846
  alias with a deprecation to the original value for property.
11722
11847
  @since 1.7.0
@@ -11777,7 +11902,7 @@ enifed('ember-runtime/computed/reduce_computed_macros', ['exports', 'ember-metal
11777
11902
 
11778
11903
  function arrayMacro(dependentKey, callback) {
11779
11904
  // This is a bit ugly
11780
- var propertyName;
11905
+ var propertyName = undefined;
11781
11906
  if (/@each/.test(dependentKey)) {
11782
11907
  propertyName = dependentKey.replace(/\.@each.*$/, '');
11783
11908
  } else {
@@ -11831,12 +11956,12 @@ enifed('ember-runtime/computed/reduce_computed_macros', ['exports', 'ember-metal
11831
11956
  array is empty.
11832
11957
 
11833
11958
  ```javascript
11834
- var Person = Ember.Object.extend({
11959
+ let Person = Ember.Object.extend({
11835
11960
  childAges: Ember.computed.mapBy('children', 'age'),
11836
11961
  maxChildAge: Ember.computed.max('childAges')
11837
11962
  });
11838
11963
 
11839
- var lordByron = Person.create({ children: [] });
11964
+ let lordByron = Person.create({ children: [] });
11840
11965
 
11841
11966
  lordByron.get('maxChildAge'); // -Infinity
11842
11967
  lordByron.get('children').pushObject({
@@ -11879,12 +12004,12 @@ enifed('ember-runtime/computed/reduce_computed_macros', ['exports', 'ember-metal
11879
12004
  array is empty.
11880
12005
 
11881
12006
  ```javascript
11882
- var Person = Ember.Object.extend({
12007
+ let Person = Ember.Object.extend({
11883
12008
  childAges: Ember.computed.mapBy('children', 'age'),
11884
12009
  minChildAge: Ember.computed.min('childAges')
11885
12010
  });
11886
12011
 
11887
- var lordByron = Person.create({ children: [] });
12012
+ let lordByron = Person.create({ children: [] });
11888
12013
 
11889
12014
  lordByron.get('minChildAge'); // Infinity
11890
12015
  lordByron.get('children').pushObject({
@@ -11935,13 +12060,13 @@ enifed('ember-runtime/computed/reduce_computed_macros', ['exports', 'ember-metal
11935
12060
  Example
11936
12061
 
11937
12062
  ```javascript
11938
- var Hamster = Ember.Object.extend({
12063
+ let Hamster = Ember.Object.extend({
11939
12064
  excitingChores: Ember.computed.map('chores', function(chore, index) {
11940
12065
  return chore.toUpperCase() + '!';
11941
12066
  })
11942
12067
  });
11943
12068
 
11944
- var hamster = Hamster.create({
12069
+ let hamster = Hamster.create({
11945
12070
  chores: ['clean', 'write more unit tests']
11946
12071
  });
11947
12072
 
@@ -11966,11 +12091,11 @@ enifed('ember-runtime/computed/reduce_computed_macros', ['exports', 'ember-metal
11966
12091
  Returns an array mapped to the specified key.
11967
12092
 
11968
12093
  ```javascript
11969
- var Person = Ember.Object.extend({
12094
+ let Person = Ember.Object.extend({
11970
12095
  childAges: Ember.computed.mapBy('children', 'age')
11971
12096
  });
11972
12097
 
11973
- var lordByron = Person.create({ children: [] });
12098
+ let lordByron = Person.create({ children: [] });
11974
12099
 
11975
12100
  lordByron.get('childAges'); // []
11976
12101
  lordByron.get('children').pushObject({ name: 'Augusta Ada Byron', age: 7 });
@@ -12014,13 +12139,13 @@ enifed('ember-runtime/computed/reduce_computed_macros', ['exports', 'ember-metal
12014
12139
  ```
12015
12140
 
12016
12141
  ```javascript
12017
- var Hamster = Ember.Object.extend({
12142
+ let Hamster = Ember.Object.extend({
12018
12143
  remainingChores: Ember.computed.filter('chores', function(chore, index, array) {
12019
12144
  return !chore.done;
12020
12145
  })
12021
12146
  });
12022
12147
 
12023
- var hamster = Hamster.create({
12148
+ let hamster = Hamster.create({
12024
12149
  chores: [
12025
12150
  { name: 'cook', done: true },
12026
12151
  { name: 'clean', done: true },
@@ -12049,11 +12174,11 @@ enifed('ember-runtime/computed/reduce_computed_macros', ['exports', 'ember-metal
12049
12174
  Filters the array by the property and value
12050
12175
 
12051
12176
  ```javascript
12052
- var Hamster = Ember.Object.extend({
12177
+ let Hamster = Ember.Object.extend({
12053
12178
  remainingChores: Ember.computed.filterBy('chores', 'done', false)
12054
12179
  });
12055
12180
 
12056
- var hamster = Hamster.create({
12181
+ let hamster = Hamster.create({
12057
12182
  chores: [
12058
12183
  { name: 'cook', done: true },
12059
12184
  { name: 'clean', done: true },
@@ -12074,7 +12199,7 @@ enifed('ember-runtime/computed/reduce_computed_macros', ['exports', 'ember-metal
12074
12199
  */
12075
12200
 
12076
12201
  function filterBy(dependentKey, propertyKey, value) {
12077
- var callback;
12202
+ var callback = undefined;
12078
12203
 
12079
12204
  if (arguments.length === 2) {
12080
12205
  callback = function (item) {
@@ -12096,11 +12221,11 @@ enifed('ember-runtime/computed/reduce_computed_macros', ['exports', 'ember-metal
12096
12221
  Example
12097
12222
 
12098
12223
  ```javascript
12099
- var Hamster = Ember.Object.extend({
12224
+ let Hamster = Ember.Object.extend({
12100
12225
  uniqueFruits: Ember.computed.uniq('fruits')
12101
12226
  });
12102
12227
 
12103
- var hamster = Hamster.create({
12228
+ let hamster = Hamster.create({
12104
12229
  fruits: [
12105
12230
  'banana',
12106
12231
  'grape',
@@ -12148,12 +12273,14 @@ enifed('ember-runtime/computed/reduce_computed_macros', ['exports', 'ember-metal
12148
12273
  /**
12149
12274
  A computed property which returns a new array with all the unique
12150
12275
  elements from an array, with uniqueness determined by specific key.
12276
+
12151
12277
  Example
12278
+
12152
12279
  ```javascript
12153
- var Hamster = Ember.Object.extend({
12280
+ let Hamster = Ember.Object.extend({
12154
12281
  uniqueFruits: Ember.computed.uniqBy('fruits', 'id')
12155
12282
  });
12156
- var hamster = Hamster.create({
12283
+ let hamster = Hamster.create({
12157
12284
  fruits: [
12158
12285
  { id: 1, 'banana' },
12159
12286
  { id: 2, 'grape' },
@@ -12163,6 +12290,7 @@ enifed('ember-runtime/computed/reduce_computed_macros', ['exports', 'ember-metal
12163
12290
  });
12164
12291
  hamster.get('uniqueFruits'); // [ { id: 1, 'banana' }, { id: 2, 'grape' }, { id: 3, 'peach' }]
12165
12292
  ```
12293
+
12166
12294
  @method uniqBy
12167
12295
  @for Ember.computed
12168
12296
  @param {String} dependentKey
@@ -12210,7 +12338,7 @@ enifed('ember-runtime/computed/reduce_computed_macros', ['exports', 'ember-metal
12210
12338
  Example
12211
12339
 
12212
12340
  ```javascript
12213
- var obj = Ember.Object.extend({
12341
+ let obj = Ember.Object.extend({
12214
12342
  friendsInCommon: Ember.computed.intersect('adaFriends', 'charlesFriends')
12215
12343
  }).create({
12216
12344
  adaFriends: ['Charles Babbage', 'John Hobhouse', 'William King', 'Mary Somerville'],
@@ -12273,12 +12401,12 @@ enifed('ember-runtime/computed/reduce_computed_macros', ['exports', 'ember-metal
12273
12401
  Example
12274
12402
 
12275
12403
  ```javascript
12276
- var Hamster = Ember.Object.extend({
12404
+ let Hamster = Ember.Object.extend({
12277
12405
  likes: ['banana', 'grape', 'kale'],
12278
12406
  wants: Ember.computed.setDiff('likes', 'fruits')
12279
12407
  });
12280
12408
 
12281
- var hamster = Hamster.create({
12409
+ let hamster = Hamster.create({
12282
12410
  fruits: [
12283
12411
  'grape',
12284
12412
  'kale',
@@ -12327,11 +12455,11 @@ enifed('ember-runtime/computed/reduce_computed_macros', ['exports', 'ember-metal
12327
12455
  Example
12328
12456
 
12329
12457
  ```javascript
12330
- var Hamster = Ember.Object.extend({
12458
+ let Hamster = Ember.Object.extend({
12331
12459
  clothes: Ember.computed.collect('hat', 'shirt')
12332
12460
  });
12333
12461
 
12334
- var hamster = Hamster.create();
12462
+ let hamster = Hamster.create();
12335
12463
 
12336
12464
  hamster.get('clothes'); // [null, null]
12337
12465
  hamster.set('hat', 'Camp Hat');
@@ -12392,7 +12520,7 @@ enifed('ember-runtime/computed/reduce_computed_macros', ['exports', 'ember-metal
12392
12520
  Example
12393
12521
 
12394
12522
  ```javascript
12395
- var ToDoList = Ember.Object.extend({
12523
+ let ToDoList = Ember.Object.extend({
12396
12524
  // using standard ascending sort
12397
12525
  todosSorting: ['name'],
12398
12526
  sortedTodos: Ember.computed.sort('todos', 'todosSorting'),
@@ -12413,7 +12541,7 @@ enifed('ember-runtime/computed/reduce_computed_macros', ['exports', 'ember-metal
12413
12541
  })
12414
12542
  });
12415
12543
 
12416
- var todoList = ToDoList.create({todos: [
12544
+ let todoList = ToDoList.create({todos: [
12417
12545
  { name: 'Unit Test', priority: 2 },
12418
12546
  { name: 'Documentation', priority: 3 },
12419
12547
  { name: 'Release', priority: 1 }
@@ -12475,7 +12603,7 @@ enifed('ember-runtime/computed/reduce_computed_macros', ['exports', 'ember-metal
12475
12603
 
12476
12604
  if (activeObservers) {
12477
12605
  activeObservers.forEach(function (args) {
12478
- _emberMetalObserver.removeObserver.apply(null, args);
12606
+ return _emberMetalObserver.removeObserver.apply(null, args);
12479
12607
  });
12480
12608
  }
12481
12609
 
@@ -12603,7 +12731,9 @@ enifed('ember-runtime/copy', ['exports', 'ember-metal/debug', 'ember-runtime/sys
12603
12731
  exports.default = copy;
12604
12732
 
12605
12733
  function _copy(obj, deep, seen, copies) {
12606
- var ret, loc, key;
12734
+ var ret = undefined,
12735
+ loc = undefined,
12736
+ key = undefined;
12607
12737
 
12608
12738
  // primitive data types are immutable, just return them.
12609
12739
  if (typeof obj !== 'object' || obj === null) {
@@ -12717,7 +12847,7 @@ enifed('ember-runtime/ext/function', ['exports', 'ember-environment', 'ember-met
12717
12847
  return this.get('firstName') + ' ' + this.get('lastName');
12718
12848
  }.property() // Call this flag to mark the function as a property
12719
12849
  });
12720
- var president = MyApp.President.create({
12850
+ let president = MyApp.President.create({
12721
12851
  firstName: 'Barack',
12722
12852
  lastName: 'Obama'
12723
12853
  });
@@ -13233,18 +13363,17 @@ enifed('ember-runtime/inject', ['exports', 'ember-metal/debug', 'ember-metal/inj
13233
13363
  function validatePropertyInjections(factory) {
13234
13364
  var proto = factory.proto();
13235
13365
  var types = [];
13236
- var key, desc, validator, i;
13237
13366
 
13238
- for (key in proto) {
13239
- desc = proto[key];
13367
+ for (var key in proto) {
13368
+ var desc = proto[key];
13240
13369
  if (desc instanceof _emberMetalInjected_property.default && types.indexOf(desc.type) === -1) {
13241
13370
  types.push(desc.type);
13242
13371
  }
13243
13372
  }
13244
13373
 
13245
13374
  if (types.length) {
13246
- for (i = 0; i < types.length; i++) {
13247
- validator = typeValidators[types[i]];
13375
+ for (var i = 0; i < types.length; i++) {
13376
+ var validator = typeValidators[types[i]];
13248
13377
 
13249
13378
  if (typeof validator === 'function') {
13250
13379
  validator(factory);
@@ -13429,14 +13558,14 @@ enifed('ember-runtime/mixins/action_handler', ['exports', 'ember-metal/debug', '
13429
13558
  ```js
13430
13559
  App.CanDisplayBanner = Ember.Mixin.create({
13431
13560
  actions: {
13432
- displayBanner: function(msg) {
13561
+ displayBanner(msg) {
13433
13562
  // ...
13434
13563
  }
13435
13564
  }
13436
13565
  });
13437
13566
  App.WelcomeRoute = Ember.Route.extend(App.CanDisplayBanner, {
13438
13567
  actions: {
13439
- playMusic: function() {
13568
+ playMusic() {
13440
13569
  // ...
13441
13570
  }
13442
13571
  }
@@ -13453,7 +13582,7 @@ enifed('ember-runtime/mixins/action_handler', ['exports', 'ember-metal/debug', '
13453
13582
  ```js
13454
13583
  App.SongRoute = Ember.Route.extend({
13455
13584
  actions: {
13456
- myAction: function() {
13585
+ myAction() {
13457
13586
  this.controllerFor("song");
13458
13587
  this.transitionTo("other.route");
13459
13588
  ...
@@ -13468,14 +13597,14 @@ enifed('ember-runtime/mixins/action_handler', ['exports', 'ember-metal/debug', '
13468
13597
  ```js
13469
13598
  App.DebugRoute = Ember.Mixin.create({
13470
13599
  actions: {
13471
- debugRouteInformation: function() {
13600
+ debugRouteInformation() {
13472
13601
  console.debug("trololo");
13473
13602
  }
13474
13603
  }
13475
13604
  });
13476
13605
  App.AnnoyingDebugRoute = Ember.Route.extend(App.DebugRoute, {
13477
13606
  actions: {
13478
- debugRouteInformation: function() {
13607
+ debugRouteInformation() {
13479
13608
  // also call the debugRouteInformation of mixed in App.DebugRoute
13480
13609
  this._super(...arguments);
13481
13610
  // show additional annoyance
@@ -13502,7 +13631,7 @@ enifed('ember-runtime/mixins/action_handler', ['exports', 'ember-metal/debug', '
13502
13631
  });
13503
13632
  App.AlbumSongRoute = Ember.Route.extend({
13504
13633
  actions: {
13505
- startPlaying: function() {
13634
+ startPlaying() {
13506
13635
  // ...
13507
13636
  if (actionShouldAlsoBeTriggeredOnParentRoute) {
13508
13637
  return true;
@@ -13529,10 +13658,10 @@ enifed('ember-runtime/mixins/action_handler', ['exports', 'ember-metal/debug', '
13529
13658
  ```js
13530
13659
  App.WelcomeRoute = Ember.Route.extend({
13531
13660
  actions: {
13532
- playTheme: function() {
13661
+ playTheme() {
13533
13662
  this.send('playMusic', 'theme.mp3');
13534
13663
  },
13535
- playMusic: function(track) {
13664
+ playMusic(track) {
13536
13665
  // ...
13537
13666
  }
13538
13667
  }
@@ -13548,7 +13677,7 @@ enifed('ember-runtime/mixins/action_handler', ['exports', 'ember-metal/debug', '
13548
13677
  args[_key - 1] = arguments[_key];
13549
13678
  }
13550
13679
 
13551
- var target;
13680
+ var target = undefined;
13552
13681
 
13553
13682
  if (this.actions && this.actions[actionName]) {
13554
13683
  var shouldBubble = this.actions[actionName].apply(this, args) === true;
@@ -13609,6 +13738,8 @@ enifed('ember-runtime/mixins/array', ['exports', 'ember-metal/core', 'ember-meta
13609
13738
  exports.addArrayObserver = addArrayObserver;
13610
13739
  exports.removeArrayObserver = removeArrayObserver;
13611
13740
  exports.objectAt = objectAt;
13741
+ exports.arrayContentWillChange = arrayContentWillChange;
13742
+ exports.arrayContentDidChange = arrayContentDidChange;
13612
13743
  exports.isEmberArray = isEmberArray;
13613
13744
 
13614
13745
  function arrayObserversHelper(obj, target, opts, operation, notify) {
@@ -13646,6 +13777,100 @@ enifed('ember-runtime/mixins/array', ['exports', 'ember-metal/core', 'ember-meta
13646
13777
  return content[idx];
13647
13778
  }
13648
13779
 
13780
+ function arrayContentWillChange(array, startIdx, removeAmt, addAmt) {
13781
+ var removing = undefined,
13782
+ lim = undefined;
13783
+
13784
+ // if no args are passed assume everything changes
13785
+ if (startIdx === undefined) {
13786
+ startIdx = 0;
13787
+ removeAmt = addAmt = -1;
13788
+ } else {
13789
+ if (removeAmt === undefined) {
13790
+ removeAmt = -1;
13791
+ }
13792
+
13793
+ if (addAmt === undefined) {
13794
+ addAmt = -1;
13795
+ }
13796
+ }
13797
+
13798
+ if (array.__each) {
13799
+ array.__each.arrayWillChange(array, startIdx, removeAmt, addAmt);
13800
+ }
13801
+
13802
+ _emberMetalEvents.sendEvent(array, '@array:before', [array, startIdx, removeAmt, addAmt]);
13803
+
13804
+ if (startIdx >= 0 && removeAmt >= 0 && _emberMetalProperty_get.get(array, 'hasEnumerableObservers')) {
13805
+ removing = [];
13806
+ lim = startIdx + removeAmt;
13807
+
13808
+ for (var idx = startIdx; idx < lim; idx++) {
13809
+ removing.push(objectAt(array, idx));
13810
+ }
13811
+ } else {
13812
+ removing = removeAmt;
13813
+ }
13814
+
13815
+ array.enumerableContentWillChange(removing, addAmt);
13816
+
13817
+ return array;
13818
+ }
13819
+
13820
+ function arrayContentDidChange(array, startIdx, removeAmt, addAmt) {
13821
+ _emberMetalTags.markObjectAsDirty(_emberMetalMeta.meta(array));
13822
+
13823
+ // if no args are passed assume everything changes
13824
+ if (startIdx === undefined) {
13825
+ startIdx = 0;
13826
+ removeAmt = addAmt = -1;
13827
+ } else {
13828
+ if (removeAmt === undefined) {
13829
+ removeAmt = -1;
13830
+ }
13831
+
13832
+ if (addAmt === undefined) {
13833
+ addAmt = -1;
13834
+ }
13835
+ }
13836
+
13837
+ var adding = undefined;
13838
+ if (startIdx >= 0 && addAmt >= 0 && _emberMetalProperty_get.get(array, 'hasEnumerableObservers')) {
13839
+ adding = [];
13840
+ var lim = startIdx + addAmt;
13841
+
13842
+ for (var idx = startIdx; idx < lim; idx++) {
13843
+ adding.push(objectAt(array, idx));
13844
+ }
13845
+ } else {
13846
+ adding = addAmt;
13847
+ }
13848
+
13849
+ array.enumerableContentDidChange(removeAmt, adding);
13850
+
13851
+ if (array.__each) {
13852
+ array.__each.arrayDidChange(array, startIdx, removeAmt, addAmt);
13853
+ }
13854
+
13855
+ _emberMetalEvents.sendEvent(array, '@array:change', [array, startIdx, removeAmt, addAmt]);
13856
+
13857
+ var length = _emberMetalProperty_get.get(array, 'length');
13858
+ var cachedFirst = _emberMetalComputed.cacheFor(array, 'firstObject');
13859
+ var cachedLast = _emberMetalComputed.cacheFor(array, 'lastObject');
13860
+
13861
+ if (objectAt(array, 0) !== cachedFirst) {
13862
+ _emberMetalProperty_events.propertyWillChange(array, 'firstObject');
13863
+ _emberMetalProperty_events.propertyDidChange(array, 'firstObject');
13864
+ }
13865
+
13866
+ if (objectAt(array, length - 1) !== cachedLast) {
13867
+ _emberMetalProperty_events.propertyWillChange(array, 'lastObject');
13868
+ _emberMetalProperty_events.propertyDidChange(array, 'lastObject');
13869
+ }
13870
+
13871
+ return array;
13872
+ }
13873
+
13649
13874
  var EMBER_ARRAY = _emberMetalSymbol.default('EMBER_ARRAY');
13650
13875
 
13651
13876
  function isEmberArray(obj) {
@@ -13751,7 +13976,6 @@ enifed('ember-runtime/mixins/array', ['exports', 'ember-metal/core', 'ember-meta
13751
13976
  return ret;
13752
13977
  }, _Mixin$create.indexOf = function (object, startAt) {
13753
13978
  var len = _emberMetalProperty_get.get(this, 'length');
13754
- var idx;
13755
13979
 
13756
13980
  if (startAt === undefined) {
13757
13981
  startAt = 0;
@@ -13761,7 +13985,7 @@ enifed('ember-runtime/mixins/array', ['exports', 'ember-metal/core', 'ember-meta
13761
13985
  startAt += len;
13762
13986
  }
13763
13987
 
13764
- for (idx = startAt; idx < len; idx++) {
13988
+ for (var idx = startAt; idx < len; idx++) {
13765
13989
  if (objectAt(this, idx) === object) {
13766
13990
  return idx;
13767
13991
  }
@@ -13770,7 +13994,6 @@ enifed('ember-runtime/mixins/array', ['exports', 'ember-metal/core', 'ember-meta
13770
13994
  return -1;
13771
13995
  }, _Mixin$create.lastIndexOf = function (object, startAt) {
13772
13996
  var len = _emberMetalProperty_get.get(this, 'length');
13773
- var idx;
13774
13997
 
13775
13998
  if (startAt === undefined || startAt >= len) {
13776
13999
  startAt = len - 1;
@@ -13780,7 +14003,7 @@ enifed('ember-runtime/mixins/array', ['exports', 'ember-metal/core', 'ember-meta
13780
14003
  startAt += len;
13781
14004
  }
13782
14005
 
13783
- for (idx = startAt; idx >= 0; idx--) {
14006
+ for (var idx = startAt; idx >= 0; idx--) {
13784
14007
  if (objectAt(this, idx) === object) {
13785
14008
  return idx;
13786
14009
  }
@@ -13794,95 +14017,9 @@ enifed('ember-runtime/mixins/array', ['exports', 'ember-metal/core', 'ember-meta
13794
14017
  }, _Mixin$create.hasArrayObservers = _emberMetalComputed.computed(function () {
13795
14018
  return _emberMetalEvents.hasListeners(this, '@array:change') || _emberMetalEvents.hasListeners(this, '@array:before');
13796
14019
  }), _Mixin$create.arrayContentWillChange = function (startIdx, removeAmt, addAmt) {
13797
- var removing, lim;
13798
-
13799
- // if no args are passed assume everything changes
13800
- if (startIdx === undefined) {
13801
- startIdx = 0;
13802
- removeAmt = addAmt = -1;
13803
- } else {
13804
- if (removeAmt === undefined) {
13805
- removeAmt = -1;
13806
- }
13807
-
13808
- if (addAmt === undefined) {
13809
- addAmt = -1;
13810
- }
13811
- }
13812
-
13813
- if (this.__each) {
13814
- this.__each.arrayWillChange(this, startIdx, removeAmt, addAmt);
13815
- }
13816
-
13817
- _emberMetalEvents.sendEvent(this, '@array:before', [this, startIdx, removeAmt, addAmt]);
13818
-
13819
- if (startIdx >= 0 && removeAmt >= 0 && _emberMetalProperty_get.get(this, 'hasEnumerableObservers')) {
13820
- removing = [];
13821
- lim = startIdx + removeAmt;
13822
-
13823
- for (var idx = startIdx; idx < lim; idx++) {
13824
- removing.push(objectAt(this, idx));
13825
- }
13826
- } else {
13827
- removing = removeAmt;
13828
- }
13829
-
13830
- this.enumerableContentWillChange(removing, addAmt);
13831
-
13832
- return this;
14020
+ return arrayContentWillChange(this, startIdx, removeAmt, addAmt);
13833
14021
  }, _Mixin$create.arrayContentDidChange = function (startIdx, removeAmt, addAmt) {
13834
- var adding, lim;
13835
-
13836
- _emberMetalTags.markObjectAsDirty(_emberMetalMeta.meta(this));
13837
-
13838
- // if no args are passed assume everything changes
13839
- if (startIdx === undefined) {
13840
- startIdx = 0;
13841
- removeAmt = addAmt = -1;
13842
- } else {
13843
- if (removeAmt === undefined) {
13844
- removeAmt = -1;
13845
- }
13846
-
13847
- if (addAmt === undefined) {
13848
- addAmt = -1;
13849
- }
13850
- }
13851
-
13852
- if (startIdx >= 0 && addAmt >= 0 && _emberMetalProperty_get.get(this, 'hasEnumerableObservers')) {
13853
- adding = [];
13854
- lim = startIdx + addAmt;
13855
-
13856
- for (var idx = startIdx; idx < lim; idx++) {
13857
- adding.push(objectAt(this, idx));
13858
- }
13859
- } else {
13860
- adding = addAmt;
13861
- }
13862
-
13863
- this.enumerableContentDidChange(removeAmt, adding);
13864
-
13865
- if (this.__each) {
13866
- this.__each.arrayDidChange(this, startIdx, removeAmt, addAmt);
13867
- }
13868
-
13869
- _emberMetalEvents.sendEvent(this, '@array:change', [this, startIdx, removeAmt, addAmt]);
13870
-
13871
- var length = _emberMetalProperty_get.get(this, 'length');
13872
- var cachedFirst = _emberMetalComputed.cacheFor(this, 'firstObject');
13873
- var cachedLast = _emberMetalComputed.cacheFor(this, 'lastObject');
13874
-
13875
- if (objectAt(this, 0) !== cachedFirst) {
13876
- _emberMetalProperty_events.propertyWillChange(this, 'firstObject');
13877
- _emberMetalProperty_events.propertyDidChange(this, 'firstObject');
13878
- }
13879
-
13880
- if (objectAt(this, length - 1) !== cachedLast) {
13881
- _emberMetalProperty_events.propertyWillChange(this, 'lastObject');
13882
- _emberMetalProperty_events.propertyDidChange(this, 'lastObject');
13883
- }
13884
-
13885
- return this;
14022
+ return arrayContentDidChange(this, startIdx, removeAmt, addAmt);
13886
14023
  }, _Mixin$create['@each'] = _emberMetalComputed.computed(function () {
13887
14024
  // TODO use Symbol or add to meta
13888
14025
  if (!this.__each) {
@@ -13918,7 +14055,6 @@ enifed('ember-runtime/mixins/array', ['exports', 'ember-metal/core', 'ember-meta
13918
14055
  */
13919
14056
  includes: function (obj, startAt) {
13920
14057
  var len = _emberMetalProperty_get.get(this, 'length');
13921
- var idx, currentObj;
13922
14058
 
13923
14059
  if (startAt === undefined) {
13924
14060
  startAt = 0;
@@ -13928,8 +14064,8 @@ enifed('ember-runtime/mixins/array', ['exports', 'ember-metal/core', 'ember-meta
13928
14064
  startAt += len;
13929
14065
  }
13930
14066
 
13931
- for (idx = startAt; idx < len; idx++) {
13932
- currentObj = objectAt(this, idx);
14067
+ for (var idx = startAt; idx < len; idx++) {
14068
+ var currentObj = objectAt(this, idx);
13933
14069
 
13934
14070
  // SameValueZero comparison (NaN !== NaN)
13935
14071
  if (obj === currentObj || obj !== obj && currentObj !== currentObj) {
@@ -13962,7 +14098,7 @@ enifed('ember-runtime/mixins/array', ['exports', 'ember-metal/core', 'ember-meta
13962
14098
  (i.e. `myArray.get(0)`), then you do not need to implement this method
13963
14099
  yourself.
13964
14100
  ```javascript
13965
- var arr = ['a', 'b', 'c', 'd'];
14101
+ let arr = ['a', 'b', 'c', 'd'];
13966
14102
  arr.objectAt(0); // 'a'
13967
14103
  arr.objectAt(3); // 'd'
13968
14104
  arr.objectAt(-1); // undefined
@@ -13978,7 +14114,7 @@ enifed('ember-runtime/mixins/array', ['exports', 'ember-metal/core', 'ember-meta
13978
14114
  /**
13979
14115
  This returns the objects at the specified indexes, using `objectAt`.
13980
14116
  ```javascript
13981
- var arr = ['a', 'b', 'c', 'd'];
14117
+ let arr = ['a', 'b', 'c', 'd'];
13982
14118
  arr.objectsAt([0, 1, 2]); // ['a', 'b', 'c']
13983
14119
  arr.objectsAt([2, 3, 4]); // ['c', 'd', undefined]
13984
14120
  ```
@@ -14008,7 +14144,7 @@ enifed('ember-runtime/mixins/array', ['exports', 'ember-metal/core', 'ember-meta
14008
14144
  uses the observable array methods to retrieve the objects for the new
14009
14145
  slice.
14010
14146
  ```javascript
14011
- var arr = ['red', 'green', 'blue'];
14147
+ let arr = ['red', 'green', 'blue'];
14012
14148
  arr.slice(0); // ['red', 'green', 'blue']
14013
14149
  arr.slice(0, 2); // ['red', 'green']
14014
14150
  arr.slice(1, 100); // ['green', 'blue']
@@ -14026,7 +14162,7 @@ enifed('ember-runtime/mixins/array', ['exports', 'ember-metal/core', 'ember-meta
14026
14162
  search is 0. If it's negative, will count backward from
14027
14163
  the end of the array. Returns -1 if no match is found.
14028
14164
  ```javascript
14029
- var arr = ['a', 'b', 'c', 'd', 'a'];
14165
+ let arr = ['a', 'b', 'c', 'd', 'a'];
14030
14166
  arr.indexOf('a'); // 0
14031
14167
  arr.indexOf('z'); // -1
14032
14168
  arr.indexOf('a', 2); // 4
@@ -14047,7 +14183,7 @@ enifed('ember-runtime/mixins/array', ['exports', 'ember-metal/core', 'ember-meta
14047
14183
  the last position. If it's negative, will count backward
14048
14184
  from the end of the array. Returns -1 if no match is found.
14049
14185
  ```javascript
14050
- var arr = ['a', 'b', 'c', 'd', 'a'];
14186
+ let arr = ['a', 'b', 'c', 'd', 'a'];
14051
14187
  arr.lastIndexOf('a'); // 4
14052
14188
  arr.lastIndexOf('z'); // -1
14053
14189
  arr.lastIndexOf('a', 2); // 0
@@ -14245,23 +14381,23 @@ enifed('ember-runtime/mixins/container_proxy', ['exports', 'ember-metal/run_loop
14245
14381
  The singleton is scoped to the container, allowing multiple containers
14246
14382
  to all have their own locally scoped singletons.
14247
14383
  ```javascript
14248
- var registry = new Registry();
14249
- var container = registry.container();
14384
+ let registry = new Registry();
14385
+ let container = registry.container();
14250
14386
  registry.register('api:twitter', Twitter);
14251
- var twitter = container.lookup('api:twitter');
14387
+ let twitter = container.lookup('api:twitter');
14252
14388
  twitter instanceof Twitter; // => true
14253
14389
  // by default the container will return singletons
14254
- var twitter2 = container.lookup('api:twitter');
14390
+ let twitter2 = container.lookup('api:twitter');
14255
14391
  twitter2 instanceof Twitter; // => true
14256
14392
  twitter === twitter2; //=> true
14257
14393
  ```
14258
14394
  If singletons are not wanted an optional flag can be provided at lookup.
14259
14395
  ```javascript
14260
- var registry = new Registry();
14261
- var container = registry.container();
14396
+ let registry = new Registry();
14397
+ let container = registry.container();
14262
14398
  registry.register('api:twitter', Twitter);
14263
- var twitter = container.lookup('api:twitter', { singleton: false });
14264
- var twitter2 = container.lookup('api:twitter', { singleton: false });
14399
+ let twitter = container.lookup('api:twitter', { singleton: false });
14400
+ let twitter2 = container.lookup('api:twitter', { singleton: false });
14265
14401
  twitter === twitter2; //=> false
14266
14402
  ```
14267
14403
  @public
@@ -14285,6 +14421,20 @@ enifed('ember-runtime/mixins/container_proxy', ['exports', 'ember-metal/run_loop
14285
14421
  return this.__container__.lookupFactory(fullName, options);
14286
14422
  },
14287
14423
 
14424
+ /**
14425
+ Given a name and a source path, resolve the fullName
14426
+ @private
14427
+ @method _resolveLocalLookupName
14428
+ @param {String} fullName
14429
+ @param {String} source
14430
+ @return {String}
14431
+ */
14432
+ _resolveLocalLookupName: function (name, source) {
14433
+ return this.__container__.registry.expandLocalLookup('component:' + name, {
14434
+ source: source
14435
+ });
14436
+ },
14437
+
14288
14438
  /**
14289
14439
  @private
14290
14440
  */
@@ -14350,8 +14500,6 @@ enifed('ember-runtime/mixins/controller', ['exports', 'ember-metal/mixin', 'embe
14350
14500
  */
14351
14501
  target: null,
14352
14502
 
14353
- parentController: null,
14354
-
14355
14503
  store: null,
14356
14504
 
14357
14505
  /**
@@ -14591,9 +14739,9 @@ enifed('ember-runtime/mixins/enumerable', ['exports', 'ember-metal/property_get'
14591
14739
  contains only one object, this method should always return that object.
14592
14740
  If your enumerable is empty, this method should return `undefined`.
14593
14741
  ```javascript
14594
- var arr = ['a', 'b', 'c'];
14742
+ let arr = ['a', 'b', 'c'];
14595
14743
  arr.get('firstObject'); // 'a'
14596
- var arr = [];
14744
+ let arr = [];
14597
14745
  arr.get('firstObject'); // undefined
14598
14746
  ```
14599
14747
  @property firstObject
@@ -14620,9 +14768,9 @@ enifed('ember-runtime/mixins/enumerable', ['exports', 'ember-metal/property_get'
14620
14768
  contains only one object, this method should always return that object.
14621
14769
  If your enumerable is empty, this method should return `undefined`.
14622
14770
  ```javascript
14623
- var arr = ['a', 'b', 'c'];
14771
+ let arr = ['a', 'b', 'c'];
14624
14772
  arr.get('lastObject'); // 'c'
14625
- var arr = [];
14773
+ let arr = [];
14626
14774
  arr.get('lastObject'); // undefined
14627
14775
  ```
14628
14776
  @property lastObject
@@ -14640,7 +14788,7 @@ enifed('ember-runtime/mixins/enumerable', ['exports', 'ember-metal/property_get'
14640
14788
  var context = popCtx();
14641
14789
  var idx = 0;
14642
14790
  var last = null;
14643
- var cur;
14791
+ var cur = undefined;
14644
14792
 
14645
14793
  do {
14646
14794
  last = cur;
@@ -14657,11 +14805,12 @@ enifed('ember-runtime/mixins/enumerable', ['exports', 'ember-metal/property_get'
14657
14805
  default version will iterate through the enumerable until the object
14658
14806
  is found. You may want to override this with a more efficient version.
14659
14807
  ```javascript
14660
- var arr = ['a', 'b', 'c'];
14808
+ let arr = ['a', 'b', 'c'];
14661
14809
  arr.contains('a'); // true
14662
14810
  arr.contains('z'); // false
14663
14811
  ```
14664
14812
  @method contains
14813
+ @deprecated Use `Enumerable#includes` instead. See http://emberjs.com/deprecations/v2.x#toc_enumerable-contains
14665
14814
  @param {Object} obj The object to search for.
14666
14815
  @return {Boolean} `true` if object is found in enumerable.
14667
14816
  @public
@@ -14735,7 +14884,7 @@ enifed('ember-runtime/mixins/enumerable', ['exports', 'ember-metal/property_get'
14735
14884
 
14736
14885
  /**
14737
14886
  Sets the value on the named property for each member. This is more
14738
- ergonomic than using other methods defined on this helper. If the object
14887
+ efficient than using other methods defined on this helper. If the object
14739
14888
  implements Ember.Observable, the value will be changed to `set(),` otherwise
14740
14889
  it will be set directly. `null` objects are skipped.
14741
14890
  @method setEach
@@ -14746,7 +14895,7 @@ enifed('ember-runtime/mixins/enumerable', ['exports', 'ember-metal/property_get'
14746
14895
  */
14747
14896
  setEach: function (key, value) {
14748
14897
  return this.forEach(function (item) {
14749
- _emberMetalProperty_set.set(item, key, value);
14898
+ return _emberMetalProperty_set.set(item, key, value);
14750
14899
  });
14751
14900
  },
14752
14901
 
@@ -14775,7 +14924,7 @@ enifed('ember-runtime/mixins/enumerable', ['exports', 'ember-metal/property_get'
14775
14924
  var ret = emberA();
14776
14925
 
14777
14926
  this.forEach(function (x, idx, i) {
14778
- ret[idx] = callback.call(target, x, idx, i);
14927
+ return ret[idx] = callback.call(target, x, idx, i);
14779
14928
  });
14780
14929
 
14781
14930
  return ret;
@@ -14885,11 +15034,9 @@ enifed('ember-runtime/mixins/enumerable', ['exports', 'ember-metal/property_get'
14885
15034
  var exactValue = function (item) {
14886
15035
  return _emberMetalProperty_get.get(item, key) === value;
14887
15036
  };
14888
-
14889
15037
  var hasValue = function (item) {
14890
15038
  return !!_emberMetalProperty_get.get(item, key);
14891
15039
  };
14892
-
14893
15040
  var use = arguments.length === 2 ? exactValue : hasValue;
14894
15041
 
14895
15042
  return this.reject(use);
@@ -14928,7 +15075,8 @@ enifed('ember-runtime/mixins/enumerable', ['exports', 'ember-metal/property_get'
14928
15075
  var context = popCtx();
14929
15076
  var found = false;
14930
15077
  var last = null;
14931
- var next, ret;
15078
+ var next = undefined,
15079
+ ret = undefined;
14932
15080
 
14933
15081
  for (var idx = 0; idx < len && !found; idx++) {
14934
15082
  next = this.nextObject(idx, last, context);
@@ -15042,13 +15190,13 @@ enifed('ember-runtime/mixins/enumerable', ['exports', 'ember-metal/property_get'
15042
15190
  var context = popCtx();
15043
15191
  var found = false;
15044
15192
  var last = null;
15045
- var next, idx;
15193
+ var next = undefined;
15046
15194
 
15047
15195
  if (target === undefined) {
15048
15196
  target = null;
15049
15197
  }
15050
15198
 
15051
- for (idx = 0; idx < len && !found; idx++) {
15199
+ for (var idx = 0; idx < len && !found; idx++) {
15052
15200
  next = this.nextObject(idx, last, context);
15053
15201
  found = callback.call(target, next, idx, this);
15054
15202
  last = next;
@@ -15154,7 +15302,7 @@ enifed('ember-runtime/mixins/enumerable', ['exports', 'ember-metal/property_get'
15154
15302
  var ret = emberA();
15155
15303
 
15156
15304
  this.forEach(function (o, idx) {
15157
- ret[idx] = o;
15305
+ return ret[idx] = o;
15158
15306
  });
15159
15307
 
15160
15308
  return ret;
@@ -15163,7 +15311,7 @@ enifed('ember-runtime/mixins/enumerable', ['exports', 'ember-metal/property_get'
15163
15311
  /**
15164
15312
  Returns a copy of the array with all `null` and `undefined` elements removed.
15165
15313
  ```javascript
15166
- var arr = ['a', null, 'c', undefined];
15314
+ let arr = ['a', null, 'c', undefined];
15167
15315
  arr.compact(); // ['a', 'c']
15168
15316
  ```
15169
15317
  @method compact
@@ -15181,7 +15329,7 @@ enifed('ember-runtime/mixins/enumerable', ['exports', 'ember-metal/property_get'
15181
15329
  implementation returns an array regardless of the receiver type.
15182
15330
  If the receiver does not contain the value it returns the original enumerable.
15183
15331
  ```javascript
15184
- var arr = ['a', 'b', 'a', 'c'];
15332
+ let arr = ['a', 'b', 'a', 'c'];
15185
15333
  arr.without('a'); // ['b', 'c']
15186
15334
  ```
15187
15335
  @method without
@@ -15209,7 +15357,7 @@ enifed('ember-runtime/mixins/enumerable', ['exports', 'ember-metal/property_get'
15209
15357
  Returns a new enumerable that contains only unique values. The default
15210
15358
  implementation returns an array regardless of the receiver type.
15211
15359
  ```javascript
15212
- var arr = ['a', 'a', 'b', 'b'];
15360
+ let arr = ['a', 'a', 'b', 'b'];
15213
15361
  arr.uniq(); // ['a', 'b']
15214
15362
  ```
15215
15363
  This only works on primitive data types, e.g. Strings, Numbers, etc.
@@ -15329,7 +15477,9 @@ enifed('ember-runtime/mixins/enumerable', ['exports', 'ember-metal/property_get'
15329
15477
  @private
15330
15478
  */
15331
15479
  enumerableContentWillChange: function (removing, adding) {
15332
- var removeCnt, addCnt, hasDelta;
15480
+ var removeCnt = undefined,
15481
+ addCnt = undefined,
15482
+ hasDelta = undefined;
15333
15483
 
15334
15484
  if ('number' === typeof removing) {
15335
15485
  removeCnt = removing;
@@ -15383,7 +15533,9 @@ enifed('ember-runtime/mixins/enumerable', ['exports', 'ember-metal/property_get'
15383
15533
  @private
15384
15534
  */
15385
15535
  enumerableContentDidChange: function (removing, adding) {
15386
- var removeCnt, addCnt, hasDelta;
15536
+ var removeCnt = undefined,
15537
+ addCnt = undefined,
15538
+ hasDelta = undefined;
15387
15539
 
15388
15540
  if ('number' === typeof removing) {
15389
15541
  removeCnt = removing;
@@ -15458,7 +15610,7 @@ enifed('ember-runtime/mixins/enumerable', ['exports', 'ember-metal/property_get'
15458
15610
  Returns a new enumerable that contains only items containing a unique property value.
15459
15611
  The default implementation returns an array regardless of the receiver type.
15460
15612
  ```javascript
15461
- var arr = [{ value: 'a' }, { value: 'a' }, { value: 'b' }, { value: 'b' }];
15613
+ let arr = [{ value: 'a' }, { value: 'a' }, { value: 'b' }, { value: 'b' }];
15462
15614
  arr.uniqBy('value'); // [{ value: 'a' }, { value: 'b' }]
15463
15615
  ```
15464
15616
  @method uniqBy
@@ -15503,7 +15655,8 @@ enifed('ember-runtime/mixins/enumerable', ['exports', 'ember-metal/property_get'
15503
15655
  _emberMetalDebug.assert('Enumerable#includes cannot accept a second argument "startAt" as enumerable items are unordered.', arguments.length === 1);
15504
15656
 
15505
15657
  var len = _emberMetalProperty_get.get(this, 'length');
15506
- var idx, next;
15658
+ var idx = undefined,
15659
+ next = undefined;
15507
15660
  var last = null;
15508
15661
  var found = false;
15509
15662
 
@@ -15806,6 +15959,7 @@ enifed('ember-runtime/mixins/mutable_array', ['exports', 'ember-metal/property_g
15806
15959
 
15807
15960
  'use strict';
15808
15961
 
15962
+ exports.removeAt = removeAt;
15809
15963
  var OUT_OF_RANGE_EXCEPTION = 'Index out of range';
15810
15964
  var EMPTY = [];
15811
15965
 
@@ -15813,6 +15967,23 @@ enifed('ember-runtime/mixins/mutable_array', ['exports', 'ember-metal/property_g
15813
15967
  // HELPERS
15814
15968
  //
15815
15969
 
15970
+ function removeAt(array, start, len) {
15971
+ if ('number' === typeof start) {
15972
+ if (start < 0 || start >= _emberMetalProperty_get.get(array, 'length')) {
15973
+ throw new _emberMetalError.default(OUT_OF_RANGE_EXCEPTION);
15974
+ }
15975
+
15976
+ // fast case
15977
+ if (len === undefined) {
15978
+ len = 1;
15979
+ }
15980
+
15981
+ array.replace(start, len, EMPTY);
15982
+ }
15983
+
15984
+ return array;
15985
+ }
15986
+
15816
15987
  /**
15817
15988
  This mixin defines the API for modifying array-like objects. These methods
15818
15989
  can be applied only to a collection that keeps its items in an ordered set.
@@ -15856,7 +16027,7 @@ enifed('ember-runtime/mixins/mutable_array', ['exports', 'ember-metal/property_g
15856
16027
  Remove all elements from the array. This is useful if you
15857
16028
  want to reuse an existing array without having to recreate it.
15858
16029
  ```javascript
15859
- var colors = ['red', 'green', 'blue'];
16030
+ let colors = ['red', 'green', 'blue'];
15860
16031
  color.length(); // 3
15861
16032
  colors.clear(); // []
15862
16033
  colors.length(); // 0
@@ -15879,7 +16050,7 @@ enifed('ember-runtime/mixins/mutable_array', ['exports', 'ember-metal/property_g
15879
16050
  This will use the primitive `replace()` method to insert an object at the
15880
16051
  specified index.
15881
16052
  ```javascript
15882
- var colors = ['red', 'green', 'blue'];
16053
+ let colors = ['red', 'green', 'blue'];
15883
16054
  colors.insertAt(2, 'yellow'); // ['red', 'green', 'yellow', 'blue']
15884
16055
  colors.insertAt(5, 'orange'); // Error: Index out of range
15885
16056
  ```
@@ -15904,7 +16075,7 @@ enifed('ember-runtime/mixins/mutable_array', ['exports', 'ember-metal/property_g
15904
16075
  If you pass a start and length that is beyond the
15905
16076
  length this method will throw an `OUT_OF_RANGE_EXCEPTION`.
15906
16077
  ```javascript
15907
- var colors = ['red', 'green', 'blue', 'yellow', 'orange'];
16078
+ let colors = ['red', 'green', 'blue', 'yellow', 'orange'];
15908
16079
  colors.removeAt(0); // ['green', 'blue', 'yellow', 'orange']
15909
16080
  colors.removeAt(2, 2); // ['green', 'blue']
15910
16081
  colors.removeAt(4, 2); // Error: Index out of range
@@ -15916,27 +16087,14 @@ enifed('ember-runtime/mixins/mutable_array', ['exports', 'ember-metal/property_g
15916
16087
  @public
15917
16088
  */
15918
16089
  removeAt: function (start, len) {
15919
- if ('number' === typeof start) {
15920
- if (start < 0 || start >= _emberMetalProperty_get.get(this, 'length')) {
15921
- throw new _emberMetalError.default(OUT_OF_RANGE_EXCEPTION);
15922
- }
15923
-
15924
- // fast case
15925
- if (len === undefined) {
15926
- len = 1;
15927
- }
15928
-
15929
- this.replace(start, len, EMPTY);
15930
- }
15931
-
15932
- return this;
16090
+ return removeAt(this, start, len);
15933
16091
  },
15934
16092
 
15935
16093
  /**
15936
16094
  Push the object onto the end of the array. Works just like `push()` but it
15937
16095
  is KVO-compliant.
15938
16096
  ```javascript
15939
- var colors = ['red', 'green'];
16097
+ let colors = ['red', 'green'];
15940
16098
  colors.pushObject('black'); // ['red', 'green', 'black']
15941
16099
  colors.pushObject(['yellow']); // ['red', 'green', ['yellow']]
15942
16100
  ```
@@ -15954,7 +16112,7 @@ enifed('ember-runtime/mixins/mutable_array', ['exports', 'ember-metal/property_g
15954
16112
  Add the objects in the passed numerable to the end of the array. Defers
15955
16113
  notifying observers of the change until all objects are added.
15956
16114
  ```javascript
15957
- var colors = ['red'];
16115
+ let colors = ['red'];
15958
16116
  colors.pushObjects(['yellow', 'orange']); // ['red', 'yellow', 'orange']
15959
16117
  ```
15960
16118
  @method pushObjects
@@ -15974,7 +16132,7 @@ enifed('ember-runtime/mixins/mutable_array', ['exports', 'ember-metal/property_g
15974
16132
  Pop object from array or nil if none are left. Works just like `pop()` but
15975
16133
  it is KVO-compliant.
15976
16134
  ```javascript
15977
- var colors = ['red', 'green', 'blue'];
16135
+ let colors = ['red', 'green', 'blue'];
15978
16136
  colors.popObject(); // 'blue'
15979
16137
  console.log(colors); // ['red', 'green']
15980
16138
  ```
@@ -15997,7 +16155,7 @@ enifed('ember-runtime/mixins/mutable_array', ['exports', 'ember-metal/property_g
15997
16155
  Shift an object from start of array or nil if none are left. Works just
15998
16156
  like `shift()` but it is KVO-compliant.
15999
16157
  ```javascript
16000
- var colors = ['red', 'green', 'blue'];
16158
+ let colors = ['red', 'green', 'blue'];
16001
16159
  colors.shiftObject(); // 'red'
16002
16160
  console.log(colors); // ['green', 'blue']
16003
16161
  ```
@@ -16019,7 +16177,7 @@ enifed('ember-runtime/mixins/mutable_array', ['exports', 'ember-metal/property_g
16019
16177
  Unshift an object to start of array. Works just like `unshift()` but it is
16020
16178
  KVO-compliant.
16021
16179
  ```javascript
16022
- var colors = ['red'];
16180
+ let colors = ['red'];
16023
16181
  colors.unshiftObject('yellow'); // ['yellow', 'red']
16024
16182
  colors.unshiftObject(['black']); // [['black'], 'yellow', 'red']
16025
16183
  ```
@@ -16037,7 +16195,7 @@ enifed('ember-runtime/mixins/mutable_array', ['exports', 'ember-metal/property_g
16037
16195
  Adds the named objects to the beginning of the array. Defers notifying
16038
16196
  observers until all objects have been added.
16039
16197
  ```javascript
16040
- var colors = ['red'];
16198
+ let colors = ['red'];
16041
16199
  colors.unshiftObjects(['black', 'white']); // ['black', 'white', 'red']
16042
16200
  colors.unshiftObjects('yellow'); // Type Error: 'undefined' is not a function
16043
16201
  ```
@@ -16073,7 +16231,7 @@ enifed('ember-runtime/mixins/mutable_array', ['exports', 'ember-metal/property_g
16073
16231
  Replace all the receiver's content with content of the argument.
16074
16232
  If argument is an empty array receiver will be cleared.
16075
16233
  ```javascript
16076
- var colors = ['red', 'green', 'blue'];
16234
+ let colors = ['red', 'green', 'blue'];
16077
16235
  colors.setObjects(['black', 'white']); // ['black', 'white']
16078
16236
  colors.setObjects([]); // []
16079
16237
  ```
@@ -16100,7 +16258,7 @@ enifed('ember-runtime/mixins/mutable_array', ['exports', 'ember-metal/property_g
16100
16258
  /**
16101
16259
  Remove all occurrences of an object in the array.
16102
16260
  ```javascript
16103
- var cities = ['Chicago', 'Berlin', 'Lima', 'Chicago'];
16261
+ let cities = ['Chicago', 'Berlin', 'Lima', 'Chicago'];
16104
16262
  cities.removeObject('Chicago'); // ['Berlin', 'Lima']
16105
16263
  cities.removeObject('Lima'); // ['Berlin']
16106
16264
  cities.removeObject('Tokyo') // ['Berlin']
@@ -16126,7 +16284,7 @@ enifed('ember-runtime/mixins/mutable_array', ['exports', 'ember-metal/property_g
16126
16284
  Push the object onto the end of the array if it is not already
16127
16285
  present in the array.
16128
16286
  ```javascript
16129
- var cities = ['Chicago', 'Berlin'];
16287
+ let cities = ['Chicago', 'Berlin'];
16130
16288
  cities.addObject('Lima'); // ['Chicago', 'Berlin', 'Lima']
16131
16289
  cities.addObject('Berlin'); // ['Chicago', 'Berlin', 'Lima']
16132
16290
  ```
@@ -16136,7 +16294,7 @@ enifed('ember-runtime/mixins/mutable_array', ['exports', 'ember-metal/property_g
16136
16294
  @public
16137
16295
  */
16138
16296
  addObject: function (obj) {
16139
- var included;
16297
+ var included = undefined;
16140
16298
 
16141
16299
  if (_emberMetalFeatures.default('ember-runtime-enumerable-includes')) {
16142
16300
  included = this.includes(obj);
@@ -16738,10 +16896,10 @@ enifed('ember-runtime/mixins/promise_proxy', ['exports', 'ember-metal/property_g
16738
16896
  A low level mixin making ObjectProxy promise-aware.
16739
16897
 
16740
16898
  ```javascript
16741
- var ObjectPromiseProxy = Ember.ObjectProxy.extend(Ember.PromiseProxyMixin);
16899
+ let ObjectPromiseProxy = Ember.ObjectProxy.extend(Ember.PromiseProxyMixin);
16742
16900
 
16743
- var proxy = ObjectPromiseProxy.create({
16744
- promise: $.getJSON('/some/remote/data.json')
16901
+ let proxy = ObjectPromiseProxy.create({
16902
+ promise: Ember.RSVP.cast($.getJSON('/some/remote/data.json'))
16745
16903
  });
16746
16904
 
16747
16905
  proxy.then(function(json){
@@ -16763,6 +16921,9 @@ enifed('ember-runtime/mixins/promise_proxy', ['exports', 'ember-metal/property_g
16763
16921
 
16764
16922
  When the $.getJSON completes, and the promise is fulfilled
16765
16923
  with json, the life cycle attributes will update accordingly.
16924
+ Note that $.getJSON doesn't return an ECMA specified promise,
16925
+ it is useful to wrap this with an `RSVP.cast` so that it behaves
16926
+ as a spec compliant promise.
16766
16927
 
16767
16928
  ```javascript
16768
16929
  proxy.get('isPending') //=> false
@@ -16929,7 +17090,7 @@ enifed('ember-runtime/mixins/registry_proxy', ['exports', 'ember-metal/debug', '
16929
17090
  a full name including two parts: `type:name`.
16930
17091
  A simple example:
16931
17092
  ```javascript
16932
- var App = Ember.Application.create();
17093
+ let App = Ember.Application.create();
16933
17094
  App.Orange = Ember.Object.extend();
16934
17095
  App.register('fruit:favorite', App.Orange);
16935
17096
  ```
@@ -16938,8 +17099,8 @@ enifed('ember-runtime/mixins/registry_proxy', ['exports', 'ember-metal/debug', '
16938
17099
  an application requests `controller:cars`.
16939
17100
  An example of registering a controller with a non-standard name:
16940
17101
  ```javascript
16941
- var App = Ember.Application.create();
16942
- var Session = Ember.Controller.extend();
17102
+ let App = Ember.Application.create();
17103
+ let Session = Ember.Controller.extend();
16943
17104
  App.register('controller:session', Session);
16944
17105
  // The Session controller can now be treated like a normal controller,
16945
17106
  // despite its non-standard name.
@@ -16952,7 +17113,7 @@ enifed('ember-runtime/mixins/registry_proxy', ['exports', 'ember-metal/debug', '
16952
17113
  they are looked up they return the same instance.
16953
17114
  Some examples modifying that default behavior:
16954
17115
  ```javascript
16955
- var App = Ember.Application.create();
17116
+ let App = Ember.Application.create();
16956
17117
  App.Person = Ember.Object.extend();
16957
17118
  App.Orange = Ember.Object.extend();
16958
17119
  App.Email = Ember.Object.extend();
@@ -16973,8 +17134,8 @@ enifed('ember-runtime/mixins/registry_proxy', ['exports', 'ember-metal/debug', '
16973
17134
  /**
16974
17135
  Unregister a factory.
16975
17136
  ```javascript
16976
- var App = Ember.Application.create();
16977
- var User = Ember.Object.extend();
17137
+ let App = Ember.Application.create();
17138
+ let User = Ember.Object.extend();
16978
17139
  App.register('model:user', User);
16979
17140
  App.resolveRegistration('model:user').create() instanceof User //=> true
16980
17141
  App.unregister('model:user')
@@ -17036,17 +17197,17 @@ enifed('ember-runtime/mixins/registry_proxy', ['exports', 'ember-metal/debug', '
17036
17197
  /**
17037
17198
  Allow registering options for all factories of a type.
17038
17199
  ```javascript
17039
- var App = Ember.Application.create();
17040
- var appInstance = App.buildInstance();
17200
+ let App = Ember.Application.create();
17201
+ let appInstance = App.buildInstance();
17041
17202
  // if all of type `connection` must not be singletons
17042
17203
  appInstance.optionsForType('connection', { singleton: false });
17043
17204
  appInstance.register('connection:twitter', TwitterConnection);
17044
17205
  appInstance.register('connection:facebook', FacebookConnection);
17045
- var twitter = appInstance.lookup('connection:twitter');
17046
- var twitter2 = appInstance.lookup('connection:twitter');
17206
+ let twitter = appInstance.lookup('connection:twitter');
17207
+ let twitter2 = appInstance.lookup('connection:twitter');
17047
17208
  twitter === twitter2; // => false
17048
- var facebook = appInstance.lookup('connection:facebook');
17049
- var facebook2 = appInstance.lookup('connection:facebook');
17209
+ let facebook = appInstance.lookup('connection:facebook');
17210
+ let facebook2 = appInstance.lookup('connection:facebook');
17050
17211
  facebook === facebook2; // => false
17051
17212
  ```
17052
17213
  @public
@@ -17073,8 +17234,8 @@ enifed('ember-runtime/mixins/registry_proxy', ['exports', 'ember-metal/debug', '
17073
17234
  provide services to a set of framework components.
17074
17235
  An example of providing a session object to all controllers:
17075
17236
  ```javascript
17076
- var App = Ember.Application.create();
17077
- var Session = Ember.Object.extend({ isAuthenticated: false });
17237
+ let App = Ember.Application.create();
17238
+ let Session = Ember.Object.extend({ isAuthenticated: false });
17078
17239
  // A factory must be registered before it can be injected
17079
17240
  App.register('session:main', Session);
17080
17241
  // Inject 'session:main' onto all factories of the type 'controller'
@@ -17171,31 +17332,12 @@ enifed('ember-runtime/mixins/target_action_support', ['exports', 'ember-environm
17171
17332
  @extends Ember.Mixin
17172
17333
  @private
17173
17334
  */
17174
- var TargetActionSupport = _emberMetalMixin.Mixin.create({
17335
+ exports.default = _emberMetalMixin.Mixin.create({
17175
17336
  target: null,
17176
17337
  action: null,
17177
17338
  actionContext: null,
17178
17339
 
17179
- targetObject: _emberMetalComputed.computed('target', function () {
17180
- if (this._targetObject) {
17181
- return this._targetObject;
17182
- }
17183
-
17184
- var target = _emberMetalProperty_get.get(this, 'target');
17185
-
17186
- if (typeof target === 'string') {
17187
- var value = _emberMetalProperty_get.get(this, target);
17188
- if (value === undefined) {
17189
- value = _emberMetalProperty_get.get(_emberEnvironment.context.lookup, target);
17190
- }
17191
-
17192
- return value;
17193
- } else {
17194
- return target;
17195
- }
17196
- }),
17197
-
17198
- actionContextObject: _emberMetalComputed.computed(function () {
17340
+ actionContextObject: _emberMetalComputed.computed('actionContext', function () {
17199
17341
  var actionContext = _emberMetalProperty_get.get(this, 'actionContext');
17200
17342
 
17201
17343
  if (typeof actionContext === 'string') {
@@ -17207,7 +17349,7 @@ enifed('ember-runtime/mixins/target_action_support', ['exports', 'ember-environm
17207
17349
  } else {
17208
17350
  return actionContext;
17209
17351
  }
17210
- }).property('actionContext'),
17352
+ }),
17211
17353
 
17212
17354
  /**
17213
17355
  Send an `action` with an `actionContext` to a `target`. The action, actionContext
@@ -17217,7 +17359,7 @@ enifed('ember-runtime/mixins/target_action_support', ['exports', 'ember-environm
17217
17359
  target: Ember.computed.alias('controller'),
17218
17360
  action: 'save',
17219
17361
  actionContext: Ember.computed.alias('context'),
17220
- click: function() {
17362
+ click() {
17221
17363
  this.triggerAction(); // Sends the `save` action, along with the current context
17222
17364
  // to the current controller
17223
17365
  }
@@ -17227,7 +17369,7 @@ enifed('ember-runtime/mixins/target_action_support', ['exports', 'ember-environm
17227
17369
  an optional object argument to `triggerAction` as well.
17228
17370
  ```javascript
17229
17371
  App.SaveButtonView = Ember.View.extend(Ember.TargetActionSupport, {
17230
- click: function() {
17372
+ click() {
17231
17373
  this.triggerAction({
17232
17374
  action: 'save',
17233
17375
  target: this.get('controller'),
@@ -17243,7 +17385,7 @@ enifed('ember-runtime/mixins/target_action_support', ['exports', 'ember-environm
17243
17385
  ```javascript
17244
17386
  App.SaveButtonView = Ember.View.extend(Ember.TargetActionSupport, {
17245
17387
  target: Ember.computed.alias('controller'),
17246
- click: function() {
17388
+ click() {
17247
17389
  this.triggerAction({
17248
17390
  action: 'save'
17249
17391
  }); // Sends the `save` action, along with a reference to `this`,
@@ -17260,7 +17402,12 @@ enifed('ember-runtime/mixins/target_action_support', ['exports', 'ember-environm
17260
17402
  var opts = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];
17261
17403
 
17262
17404
  var action = opts.action || _emberMetalProperty_get.get(this, 'action');
17263
- var target = opts.target || _emberMetalProperty_get.get(this, 'targetObject');
17405
+ var target = opts.target;
17406
+
17407
+ if (!target) {
17408
+ target = getTarget(this);
17409
+ }
17410
+
17264
17411
  var actionContext = opts.actionContext;
17265
17412
 
17266
17413
  function args(options, actionName) {
@@ -17277,7 +17424,7 @@ enifed('ember-runtime/mixins/target_action_support', ['exports', 'ember-environm
17277
17424
  }
17278
17425
 
17279
17426
  if (target && action) {
17280
- var ret;
17427
+ var ret = undefined;
17281
17428
 
17282
17429
  if (target.send) {
17283
17430
  ret = target.send.apply(target, args(actionContext, action));
@@ -17297,7 +17444,36 @@ enifed('ember-runtime/mixins/target_action_support', ['exports', 'ember-environm
17297
17444
  }
17298
17445
  });
17299
17446
 
17300
- exports.default = TargetActionSupport;
17447
+ function getTarget(instance) {
17448
+ // TODO: Deprecate specifying `targetObject`
17449
+ var target = _emberMetalProperty_get.get(instance, 'targetObject');
17450
+
17451
+ // if a `targetObject` CP was provided, use it
17452
+ if (target) {
17453
+ return target;
17454
+ }
17455
+
17456
+ // if _targetObject use it
17457
+ if (instance._targetObject) {
17458
+ return instance._targetObject;
17459
+ }
17460
+
17461
+ target = _emberMetalProperty_get.get(instance, 'target');
17462
+ if (target) {
17463
+ if (typeof target === 'string') {
17464
+ var value = _emberMetalProperty_get.get(instance, target);
17465
+ if (value === undefined) {
17466
+ value = _emberMetalProperty_get.get(_emberEnvironment.context.lookup, target);
17467
+ }
17468
+
17469
+ return value;
17470
+ } else {
17471
+ return target;
17472
+ }
17473
+ }
17474
+
17475
+ return null;
17476
+ }
17301
17477
  });
17302
17478
  enifed("ember-runtime/string_registry", ["exports"], function (exports) {
17303
17479
  // STATE within a module is frowned apon, this exists
@@ -17351,8 +17527,8 @@ enifed('ember-runtime/system/array_proxy', ['exports', 'ember-metal/debug', 'emb
17351
17527
  A simple example of usage:
17352
17528
 
17353
17529
  ```javascript
17354
- var pets = ['dog', 'cat', 'fish'];
17355
- var ap = Ember.ArrayProxy.create({ content: Ember.A(pets) });
17530
+ let pets = ['dog', 'cat', 'fish'];
17531
+ let ap = Ember.ArrayProxy.create({ content: Ember.A(pets) });
17356
17532
 
17357
17533
  ap.get('firstObject'); // 'dog'
17358
17534
  ap.set('content', ['amoeba', 'paramecium']);
@@ -17364,8 +17540,8 @@ enifed('ember-runtime/system/array_proxy', ['exports', 'ember-metal/debug', 'emb
17364
17540
  `objectAtContent`:
17365
17541
 
17366
17542
  ```javascript
17367
- var pets = ['dog', 'cat', 'fish'];
17368
- var ap = Ember.ArrayProxy.create({
17543
+ let pets = ['dog', 'cat', 'fish'];
17544
+ let ap = Ember.ArrayProxy.create({
17369
17545
  content: Ember.A(pets),
17370
17546
  objectAtContent: function(idx) {
17371
17547
  return this.get('content').objectAt(idx).toUpperCase();
@@ -17381,7 +17557,7 @@ enifed('ember-runtime/system/array_proxy', ['exports', 'ember-metal/debug', 'emb
17381
17557
  @uses Ember.MutableArray
17382
17558
  @public
17383
17559
  */
17384
- var ArrayProxy = _emberRuntimeSystemObject.default.extend(_emberRuntimeMixinsMutable_array.default, {
17560
+ exports.default = _emberRuntimeSystemObject.default.extend(_emberRuntimeMixinsMutable_array.default, {
17385
17561
 
17386
17562
  /**
17387
17563
  The content array. Must be an object that implements `Ember.Array` and/or
@@ -17600,7 +17776,6 @@ enifed('ember-runtime/system/array_proxy', ['exports', 'ember-metal/debug', 'emb
17600
17776
  var content = _emberMetalProperty_get.get(this, 'content');
17601
17777
  var arrangedContent = _emberMetalProperty_get.get(this, 'arrangedContent');
17602
17778
  var indices = [];
17603
- var i;
17604
17779
 
17605
17780
  if (start < 0 || start >= _emberMetalProperty_get.get(this, 'length')) {
17606
17781
  throw new _emberMetalError.default(OUT_OF_RANGE_EXCEPTION);
@@ -17611,7 +17786,7 @@ enifed('ember-runtime/system/array_proxy', ['exports', 'ember-metal/debug', 'emb
17611
17786
  }
17612
17787
 
17613
17788
  // Get a list of indices in original content to remove
17614
- for (i = start; i < start + len; i++) {
17789
+ for (var i = start; i < start + len; i++) {
17615
17790
  // Use arrangedContent here so we avoid confusion with objects transformed by objectAtContent
17616
17791
  indices.push(content.indexOf(_emberRuntimeMixinsArray.objectAt(arrangedContent, i)));
17617
17792
  }
@@ -17622,7 +17797,7 @@ enifed('ember-runtime/system/array_proxy', ['exports', 'ember-metal/debug', 'emb
17622
17797
  });
17623
17798
 
17624
17799
  _emberMetalProperty_events.beginPropertyChanges();
17625
- for (i = 0; i < indices.length; i++) {
17800
+ for (var i = 0; i < indices.length; i++) {
17626
17801
  this._replace(indices[i], 1, EMPTY);
17627
17802
  }
17628
17803
  _emberMetalProperty_events.endPropertyChanges();
@@ -17670,11 +17845,11 @@ enifed('ember-runtime/system/array_proxy', ['exports', 'ember-metal/debug', 'emb
17670
17845
  },
17671
17846
 
17672
17847
  arrangedContentArrayWillChange: function (item, idx, removedCnt, addedCnt) {
17673
- this.arrayContentWillChange(idx, removedCnt, addedCnt);
17848
+ _emberRuntimeMixinsArray.arrayContentWillChange(this, idx, removedCnt, addedCnt);
17674
17849
  },
17675
17850
 
17676
17851
  arrangedContentArrayDidChange: function (item, idx, removedCnt, addedCnt) {
17677
- this.arrayContentDidChange(idx, removedCnt, addedCnt);
17852
+ _emberRuntimeMixinsArray.arrayContentDidChange(this, idx, removedCnt, addedCnt);
17678
17853
  },
17679
17854
 
17680
17855
  init: function () {
@@ -17688,8 +17863,6 @@ enifed('ember-runtime/system/array_proxy', ['exports', 'ember-metal/debug', 'emb
17688
17863
  this._teardownContent();
17689
17864
  }
17690
17865
  });
17691
-
17692
- exports.default = ArrayProxy;
17693
17866
  });
17694
17867
  enifed('ember-runtime/system/container', ['exports', 'ember-metal/property_set', 'container/registry', 'container/container', 'container/owner'], function (exports, _emberMetalProperty_set, _containerRegistry, _containerContainer, _containerOwner) {
17695
17868
  'use strict';
@@ -17773,7 +17946,7 @@ enifed('ember-runtime/system/core_object', ['exports', 'ember-metal/debug', 'emb
17773
17946
  var keyName = keyNames[j];
17774
17947
  var value = properties[keyName];
17775
17948
 
17776
- if (_emberMetalMixin.IS_BINDING.test(keyName)) {
17949
+ if (_emberMetalMixin.detectBinding(keyName)) {
17777
17950
  m.writeBindings(keyName, value);
17778
17951
  }
17779
17952
 
@@ -18524,6 +18697,8 @@ enifed('ember-runtime/system/core_object', ['exports', 'ember-metal/debug', 'emb
18524
18697
  enifed('ember-runtime/system/each_proxy', ['exports', 'ember-metal/debug', 'ember-metal/property_get', 'ember-metal/observer', 'ember-metal/property_events', 'ember-metal/empty_object', 'ember-runtime/mixins/array'], function (exports, _emberMetalDebug, _emberMetalProperty_get, _emberMetalObserver, _emberMetalProperty_events, _emberMetalEmpty_object, _emberRuntimeMixinsArray) {
18525
18698
  'use strict';
18526
18699
 
18700
+ exports.default = EachProxy;
18701
+
18527
18702
  /**
18528
18703
  This is the object instance returned when you get the `@each` property on an
18529
18704
  array. It uses the unknownProperty handler to automatically create
@@ -18531,6 +18706,7 @@ enifed('ember-runtime/system/each_proxy', ['exports', 'ember-metal/debug', 'embe
18531
18706
  @class EachProxy
18532
18707
  @private
18533
18708
  */
18709
+
18534
18710
  function EachProxy(content) {
18535
18711
  this._content = content;
18536
18712
  this._keys = undefined;
@@ -18640,8 +18816,6 @@ enifed('ember-runtime/system/each_proxy', ['exports', 'ember-metal/debug', 'embe
18640
18816
  }
18641
18817
  }
18642
18818
  }
18643
-
18644
- exports.default = EachProxy;
18645
18819
  });
18646
18820
  enifed('ember-runtime/system/lazy_load', ['exports', 'ember-environment'], function (exports, _emberEnvironment) {
18647
18821
  /*globals CustomEvent */
@@ -18708,8 +18882,8 @@ enifed('ember-runtime/system/lazy_load', ['exports', 'ember-environment'], funct
18708
18882
  var window = _emberEnvironment.environment.window;
18709
18883
 
18710
18884
  if (window && typeof CustomEvent === 'function') {
18711
- var event = new CustomEvent(name, { detail: object, name: name });
18712
- window.dispatchEvent(event);
18885
+ var _event = new CustomEvent(name, { detail: object, name: name });
18886
+ window.dispatchEvent(_event);
18713
18887
  }
18714
18888
 
18715
18889
  if (loadHooks[name]) {
@@ -18901,7 +19075,7 @@ enifed('ember-runtime/system/namespace', ['exports', 'ember-metal/core', 'ember-
18901
19075
  processAllNamespaces();
18902
19076
  }
18903
19077
 
18904
- var ret;
19078
+ var ret = undefined;
18905
19079
 
18906
19080
  if (this[_emberMetalMixin.NAME_KEY]) {
18907
19081
  ret = this[_emberMetalMixin.NAME_KEY];
@@ -18931,7 +19105,7 @@ enifed('ember-runtime/system/namespace', ['exports', 'ember-metal/core', 'ember-
18931
19105
 
18932
19106
  if (unprocessedNamespaces || unprocessedMixins) {
18933
19107
  var namespaces = Namespace.NAMESPACES;
18934
- var namespace;
19108
+ var namespace = undefined;
18935
19109
 
18936
19110
  for (var i = 0; i < namespaces.length; i++) {
18937
19111
  namespace = namespaces[i];
@@ -19004,7 +19178,7 @@ enifed('ember-runtime/system/native_array', ['exports', 'ember-metal/core', 'emb
19004
19178
  // replaced range. Otherwise, pass the full remaining array length
19005
19179
  // since everything has shifted
19006
19180
  var len = objects ? _emberMetalProperty_get.get(objects, 'length') : 0;
19007
- this.arrayContentWillChange(idx, amt, len);
19181
+ _emberRuntimeMixinsArray.arrayContentWillChange(this, idx, amt, len);
19008
19182
 
19009
19183
  if (len === 0) {
19010
19184
  this.splice(idx, amt);
@@ -19012,14 +19186,14 @@ enifed('ember-runtime/system/native_array', ['exports', 'ember-metal/core', 'emb
19012
19186
  _emberMetalReplace.default(this, idx, amt, objects);
19013
19187
  }
19014
19188
 
19015
- this.arrayContentDidChange(idx, amt, len);
19189
+ _emberRuntimeMixinsArray.arrayContentDidChange(this, idx, amt, len);
19016
19190
  return this;
19017
19191
  },
19018
19192
 
19019
19193
  // If you ask for an unknown property, then try to collect the value
19020
19194
  // from member items.
19021
19195
  unknownProperty: function (key, value) {
19022
- var ret; // = this.reducedProperty(key, value);
19196
+ var ret = undefined; // = this.reducedProperty(key, value);
19023
19197
  if (value !== undefined && ret === undefined) {
19024
19198
  ret = this[key] = value;
19025
19199
  }
@@ -19081,7 +19255,7 @@ enifed('ember-runtime/system/native_array', ['exports', 'ember-metal/core', 'emb
19081
19255
  @return {Ember.NativeArray}
19082
19256
  @public
19083
19257
  */
19084
- var A;
19258
+ var A = undefined;
19085
19259
 
19086
19260
  if (_emberEnvironment.ENV.EXTEND_PROTOTYPES.Array) {
19087
19261
  NativeArray.apply(Array.prototype);
@@ -19716,7 +19890,7 @@ enifed("ember/features", ["exports"], function (exports) {
19716
19890
  enifed("ember/version", ["exports"], function (exports) {
19717
19891
  "use strict";
19718
19892
 
19719
- exports.default = "2.7.2";
19893
+ exports.default = "2.8.0-beta.1";
19720
19894
  });
19721
19895
  enifed('rsvp', ['exports', 'rsvp/promise', 'rsvp/events', 'rsvp/node', 'rsvp/all', 'rsvp/all-settled', 'rsvp/race', 'rsvp/hash', 'rsvp/hash-settled', 'rsvp/rethrow', 'rsvp/defer', 'rsvp/config', 'rsvp/map', 'rsvp/resolve', 'rsvp/reject', 'rsvp/filter', 'rsvp/asap'], function (exports, _rsvpPromise, _rsvpEvents, _rsvpNode, _rsvpAll, _rsvpAllSettled, _rsvpRace, _rsvpHash, _rsvpHashSettled, _rsvpRethrow, _rsvpDefer, _rsvpConfig, _rsvpMap, _rsvpResolve, _rsvpReject, _rsvpFilter, _rsvpAsap) {
19722
19896
  'use strict';