ember-source 1.8.0.beta.1 → 1.8.0.beta.2

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: 371b04b1547eeaf3f16b146ee600f914fb95d6a5
4
- data.tar.gz: f64518e3bb802fcd64ede98479525522709f2197
3
+ metadata.gz: 613b60c2b0774caf727b16cacf6577128f45ab65
4
+ data.tar.gz: a8b4e3b1d83d93bec8ed02a3ae4d2d0529b8d9ac
5
5
  SHA512:
6
- metadata.gz: 860483848018dcff2f35189af4b6b1309ae11ebb38a96238754d6bb15e60e55b45952d223bcb9e2b4f5df153eb3d4b35d9bd38e6b6a9c9d9b98fd88b3078b2ef
7
- data.tar.gz: 94273083073d77f10beb7c44fcd55fcc624ad78fd11187da6e687288c5fa6eaaaccf2e145d92448b3137661d247a032b4f38e497e60a0e80d51567781512e1f5
6
+ metadata.gz: 8459838e131e049f616a7789be7552c4fc5949896b648ae21c5d831dc3d8de8898043ad6335bf2c3020528b5a054b2b2c6fd677fa2e3b064f6422cba21e41ce3
7
+ data.tar.gz: dc0f4e244ed30e5fe524f42e25ac6f4f806d205804d02a31a0b70ae99ba57f30d0cc6f87e78d631322e1b353c147c9941ee11838ad23fa6ca34226053f0d4257
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.8.0-beta.1
1
+ 1.8.0-beta.2
@@ -5,7 +5,7 @@
5
5
  * Portions Copyright 2008-2011 Apple Inc. All rights reserved.
6
6
  * @license Licensed under MIT license
7
7
  * See https://raw.github.com/emberjs/ember.js/master/LICENSE
8
- * @version 1.8.0-beta.1
8
+ * @version 1.8.0-beta.2
9
9
  */
10
10
 
11
11
  (function() {
@@ -704,7 +704,7 @@ define("backburner/deferred-action-queues",
704
704
  queue = queues[queueName];
705
705
  queueItems = queue._queueBeingFlushed = queue._queue.slice();
706
706
  queue._queue = [];
707
- queue.guidBucket = Object.create(null);
707
+ queue.targetQueues = Object.create(null);
708
708
 
709
709
  var queueOptions = queue.options; // TODO: write a test for this
710
710
  var before = queueOptions && queueOptions.before;
@@ -1069,12 +1069,13 @@ define("container",
1069
1069
  __exports__["default"] = Container;
1070
1070
  });
1071
1071
  define("container/container",
1072
- ["ember-metal/core","ember-metal/dictionary","exports"],
1073
- function(__dependency1__, __dependency2__, __exports__) {
1072
+ ["ember-metal/core","ember-metal/keys","ember-metal/dictionary","exports"],
1073
+ function(__dependency1__, __dependency2__, __dependency3__, __exports__) {
1074
1074
  "use strict";
1075
1075
  var Ember = __dependency1__["default"];
1076
1076
  // Ember.assert
1077
- var dictionary = __dependency2__["default"];
1077
+ var emberKeys = __dependency2__["default"];
1078
+ var dictionary = __dependency3__["default"];
1078
1079
 
1079
1080
  // A lightweight container that helps to assemble and decouple components.
1080
1081
  // Public api for the container is still in flux.
@@ -1871,7 +1872,7 @@ define("container/container",
1871
1872
 
1872
1873
  function eachDestroyable(container, callback) {
1873
1874
  var cache = container.cache;
1874
- var keys = Ember.keys(cache);
1875
+ var keys = emberKeys(cache);
1875
1876
  var key, value;
1876
1877
 
1877
1878
  for (var i = 0, l = keys.length; i < l; i++) {
@@ -3726,81 +3727,124 @@ define("ember-metal/computed",
3726
3727
  Generally speaking if you intend for your computed property to be set
3727
3728
  your backing function should accept either two or three arguments.
3728
3729
 
3730
+ ```javascript
3731
+ var Person = Ember.Object.extend({
3732
+ // these will be supplied by `create`
3733
+ firstName: null,
3734
+ lastName: null,
3735
+
3736
+ fullName: function(key, value, oldValue) {
3737
+ // getter
3738
+ if (arguments.length === 1) {
3739
+ var firstName = this.get('firstName');
3740
+ var lastName = this.get('lastName');
3741
+
3742
+ return firstName + ' ' + lastName;
3743
+
3744
+ // setter
3745
+ } else {
3746
+ var name = value.split(' ');
3747
+
3748
+ this.set('firstName', name[0]);
3749
+ this.set('lastName', name[1]);
3750
+
3751
+ return value;
3752
+ }
3753
+ }.property('firstName', 'lastName')
3754
+ });
3755
+
3756
+ var person = Person.create();
3757
+
3758
+ person.set('fullName', 'Peter Wagenet');
3759
+ person.get('firstName'); // 'Peter'
3760
+ person.get('lastName'); // 'Wagenet'
3761
+ ```
3762
+
3729
3763
  @method set
3730
3764
  @param {String} keyName The key being accessed.
3731
3765
  @param {Object} newValue The new value being assigned.
3732
3766
  @param {String} oldValue The old value being replaced.
3733
3767
  @return {Object} The return value of the function backing the CP.
3734
3768
  */
3735
- ComputedPropertyPrototype.set = function(obj, keyName, value) {
3736
- var cacheable = this._cacheable;
3737
- var func = this.func;
3738
- var meta = metaFor(obj, cacheable);
3769
+ ComputedPropertyPrototype.set = function computedPropertySetWithSuspend(obj, keyName, value) {
3739
3770
  var oldSuspended = this._suspended;
3771
+
3772
+ this._suspended = obj;
3773
+
3774
+ try {
3775
+ this._set(obj, keyName, value);
3776
+ } finally {
3777
+ this._suspended = oldSuspended;
3778
+ }
3779
+ };
3780
+
3781
+ ComputedPropertyPrototype._set = function computedPropertySet(obj, keyName, value) {
3782
+ var cacheable = this._cacheable;
3783
+ var func = this.func;
3784
+ var meta = metaFor(obj, cacheable);
3785
+ var cache = meta.cache;
3740
3786
  var hadCachedValue = false;
3741
- var cache = meta.cache;
3787
+
3742
3788
  var funcArgLength, cachedValue, ret;
3743
3789
 
3744
3790
  if (this._readOnly) {
3745
3791
  throw new EmberError('Cannot set read-only property "' + keyName + '" on object: ' + inspect(obj));
3746
3792
  }
3747
3793
 
3748
- this._suspended = obj;
3749
-
3750
- try {
3794
+ if (cacheable && cache[keyName] !== undefined) {
3795
+ if(cache[keyName] !== UNDEFINED) {
3796
+ cachedValue = cache[keyName];
3797
+ }
3751
3798
 
3752
- if (cacheable && cache[keyName] !== undefined) {
3753
- if(cache[keyName] !== UNDEFINED) {
3754
- cachedValue = cache[keyName];
3755
- }
3799
+ hadCachedValue = true;
3800
+ }
3756
3801
 
3757
- hadCachedValue = true;
3758
- }
3802
+ // Check if the CP has been wrapped. If it has, use the
3803
+ // length from the wrapped function.
3759
3804
 
3760
- // Check if the CP has been wrapped. If it has, use the
3761
- // length from the wrapped function.
3805
+ funcArgLength = func.wrappedFunction ? func.wrappedFunction.__ember_arity__ : func.__ember_arity__;
3762
3806
 
3763
- funcArgLength = func.wrappedFunction ? func.wrappedFunction.__ember_arity__ : func.__ember_arity__;
3807
+ // For backwards-compatibility with computed properties
3808
+ // that check for arguments.length === 2 to determine if
3809
+ // they are being get or set, only pass the old cached
3810
+ // value if the computed property opts into a third
3811
+ // argument.
3812
+ if (funcArgLength === 3) {
3813
+ ret = func.call(obj, keyName, value, cachedValue);
3814
+ } else if (funcArgLength === 2) {
3815
+ ret = func.call(obj, keyName, value);
3816
+ } else {
3817
+ defineProperty(obj, keyName, null, cachedValue);
3818
+ set(obj, keyName, value);
3819
+ return;
3820
+ }
3764
3821
 
3765
- // For backwards-compatibility with computed properties
3766
- // that check for arguments.length === 2 to determine if
3767
- // they are being get or set, only pass the old cached
3768
- // value if the computed property opts into a third
3769
- // argument.
3770
- if (funcArgLength === 3) {
3771
- ret = func.call(obj, keyName, value, cachedValue);
3772
- } else if (funcArgLength === 2) {
3773
- ret = func.call(obj, keyName, value);
3774
- } else {
3775
- defineProperty(obj, keyName, null, cachedValue);
3776
- set(obj, keyName, value);
3777
- return;
3778
- }
3822
+ if (hadCachedValue && cachedValue === ret) { return; }
3779
3823
 
3780
- if (hadCachedValue && cachedValue === ret) { return; }
3824
+ var watched = meta.watching[keyName];
3825
+ if (watched) {
3826
+ propertyWillChange(obj, keyName);
3827
+ }
3781
3828
 
3782
- var watched = meta.watching[keyName];
3783
- if (watched) { propertyWillChange(obj, keyName); }
3829
+ if (hadCachedValue) {
3830
+ cache[keyName] = undefined;
3831
+ }
3784
3832
 
3785
- if (hadCachedValue) {
3786
- cache[keyName] = undefined;
3833
+ if (cacheable) {
3834
+ if (!hadCachedValue) {
3835
+ addDependentKeys(this, obj, keyName, meta);
3787
3836
  }
3788
-
3789
- if (cacheable) {
3790
- if (!hadCachedValue) {
3791
- addDependentKeys(this, obj, keyName, meta);
3792
- }
3793
- if (ret === undefined) {
3794
- cache[keyName] = UNDEFINED;
3795
- } else {
3796
- cache[keyName] = ret;
3797
- }
3837
+ if (ret === undefined) {
3838
+ cache[keyName] = UNDEFINED;
3839
+ } else {
3840
+ cache[keyName] = ret;
3798
3841
  }
3842
+ }
3799
3843
 
3800
- if (watched) { propertyDidChange(obj, keyName); }
3801
- } finally {
3802
- this._suspended = oldSuspended;
3844
+ if (watched) {
3845
+ propertyDidChange(obj, keyName);
3803
3846
  }
3847
+
3804
3848
  return ret;
3805
3849
  };
3806
3850
 
@@ -3827,9 +3871,45 @@ define("ember-metal/computed",
3827
3871
  The function should accept two parameters, key and value. If value is not
3828
3872
  undefined you should set the value first. In either case return the
3829
3873
  current value of the property.
3874
+
3875
+ A computed property defined in this way might look like this:
3876
+
3877
+ ```js
3878
+ var Person = Ember.Object.extend({
3879
+ firstName: 'Betty',
3880
+ lastName: 'Jones',
3881
+
3882
+ fullName: Ember.computed('firstName', 'lastName', function(key, value) {
3883
+ return this.get('firstName') + ' ' + this.get('lastName');
3884
+ })
3885
+ });
3886
+
3887
+ var client = Person.create();
3888
+
3889
+ client.get('fullName'); // 'Betty Jones'
3890
+
3891
+ client.set('lastName', 'Fuller');
3892
+ client.get('fullName'); // 'Betty Fuller'
3893
+ ```
3894
+
3895
+ _Note: This is the prefered way to define computed properties when writing third-party
3896
+ libraries that depend on or use Ember, since there is no guarantee that the user
3897
+ will have prototype extensions enabled._
3898
+
3899
+ You might use this method if you disabled
3900
+ [Prototype Extensions](http://emberjs.com/guides/configuring-ember/disabling-prototype-extensions/).
3901
+ The alternative syntax might look like this
3902
+ (if prototype extensions are enabled, which is the default behavior):
3903
+
3904
+ ```js
3905
+ fullName: function () {
3906
+ return this.get('firstName') + ' ' + this.get('lastName');
3907
+ }.property('firstName', 'lastName')
3908
+ ```
3830
3909
 
3831
3910
  @method computed
3832
3911
  @for Ember
3912
+ @param {String} [dependentKeys*] Optional dependent keys that trigger this computed property.
3833
3913
  @param {Function} func The computed property function.
3834
3914
  @return {Ember.ComputedProperty} property descriptor instance
3835
3915
  */
@@ -4162,7 +4242,7 @@ define("ember-metal/computed_macros",
4162
4242
  });
4163
4243
 
4164
4244
  /**
4165
- A computed property that returns true if the provied dependent property
4245
+ A computed property that returns true if the provided dependent property
4166
4246
  is greater than the provided value.
4167
4247
 
4168
4248
  Example
@@ -4186,7 +4266,7 @@ define("ember-metal/computed_macros",
4186
4266
  @param {String} dependentKey
4187
4267
  @param {Number} value
4188
4268
  @return {Ember.ComputedProperty} computed property which returns true if
4189
- the original value for property is greater then given value.
4269
+ the original value for property is greater than given value.
4190
4270
  */
4191
4271
  registerComputed('gt', function(dependentKey, value) {
4192
4272
  return get(this, dependentKey) > value;
@@ -4279,7 +4359,7 @@ define("ember-metal/computed_macros",
4279
4359
  @param {String} dependentKey
4280
4360
  @param {Number} value
4281
4361
  @return {Ember.ComputedProperty} computed property which returns true if
4282
- the original value for property is less or equal then given value.
4362
+ the original value for property is less or equal than given value.
4283
4363
  */
4284
4364
  registerComputed('lte', function(dependentKey, value) {
4285
4365
  return get(this, dependentKey) <= value;
@@ -4631,7 +4711,7 @@ define("ember-metal/core",
4631
4711
 
4632
4712
  @class Ember
4633
4713
  @static
4634
- @version 1.8.0-beta.1
4714
+ @version 1.8.0-beta.2
4635
4715
  */
4636
4716
 
4637
4717
  if ('undefined' === typeof Ember) {
@@ -4658,10 +4738,10 @@ define("ember-metal/core",
4658
4738
  /**
4659
4739
  @property VERSION
4660
4740
  @type String
4661
- @default '1.8.0-beta.1'
4741
+ @default '1.8.0-beta.2'
4662
4742
  @static
4663
4743
  */
4664
- Ember.VERSION = '1.8.0-beta.1';
4744
+ Ember.VERSION = '1.8.0-beta.2';
4665
4745
 
4666
4746
  /**
4667
4747
  Standard environmental variables. You can define these in a global `EmberENV`
@@ -4905,6 +4985,50 @@ define("ember-metal/dependent_keys",
4905
4985
 
4906
4986
  __exports__.removeDependentKeys = removeDependentKeys;
4907
4987
  });
4988
+ define("ember-metal/deprecate_property",
4989
+ ["ember-metal/core","ember-metal/platform","ember-metal/properties","ember-metal/property_get","ember-metal/property_set","exports"],
4990
+ function(__dependency1__, __dependency2__, __dependency3__, __dependency4__, __dependency5__, __exports__) {
4991
+ "use strict";
4992
+ /**
4993
+ @module ember-metal
4994
+ */
4995
+
4996
+ var Ember = __dependency1__["default"];
4997
+ var hasPropertyAccessors = __dependency2__.hasPropertyAccessors;
4998
+ var defineProperty = __dependency3__.defineProperty;
4999
+ var get = __dependency4__.get;
5000
+ var set = __dependency5__.set;
5001
+
5002
+
5003
+ /**
5004
+ Used internally to allow changing properties in a backwards compatible way, and print a helpful
5005
+ deprecation warning.
5006
+
5007
+ @method deprecateProperty
5008
+ @param {Object} object The object to add the deprecated property to.
5009
+ @param {String} deprecatedKey The property to add (and print deprecation warnings upon accessing).
5010
+ @param {String} newKey The property that will be aliased.
5011
+ @private
5012
+ @since 1.7.0
5013
+ */
5014
+
5015
+ function deprecateProperty(object, deprecatedKey, newKey) {
5016
+ function deprecate() {
5017
+ Ember.deprecate('Usage of `' + deprecatedKey + '` is deprecated, use `' + newKey + '` instead.');
5018
+ }
5019
+
5020
+ if (hasPropertyAccessors) {
5021
+ defineProperty(object, deprecatedKey, {
5022
+ configurable: true,
5023
+ enumerable: false,
5024
+ set: function(value) { deprecate(); set(this, newKey, value); },
5025
+ get: function() { deprecate(); return get(this, newKey); }
5026
+ });
5027
+ }
5028
+ }
5029
+
5030
+ __exports__.deprecateProperty = deprecateProperty;
5031
+ });
4908
5032
  define("ember-metal/dictionary",
4909
5033
  ["exports"],
4910
5034
  function(__exports__) {
@@ -5858,7 +5982,7 @@ define("ember-metal/instrumentation",
5858
5982
  */
5859
5983
  function instrument(name, _payload, callback, binding) {
5860
5984
  if (subscribers.length === 0) {
5861
- return;
5985
+ return callback.call(binding);
5862
5986
  }
5863
5987
  var payload = _payload || {};
5864
5988
  var finalizer = _instrumentStart(name, function () {
@@ -5872,6 +5996,8 @@ define("ember-metal/instrumentation",
5872
5996
  payload.exception = e;
5873
5997
  };
5874
5998
  return tryCatchFinally(tryable, catchable, finalizer);
5999
+ } else {
6000
+ return callback.call(binding);
5875
6001
  }
5876
6002
  }
5877
6003
 
@@ -6141,11 +6267,11 @@ define("ember-metal/is_present",
6141
6267
  __exports__["default"] = isPresent;
6142
6268
  });
6143
6269
  define("ember-metal/keys",
6144
- ["ember-metal/enumerable_utils","ember-metal/platform","exports"],
6270
+ ["ember-metal/array","ember-metal/platform","exports"],
6145
6271
  function(__dependency1__, __dependency2__, __exports__) {
6146
6272
  "use strict";
6147
- var EnumerableUtils = __dependency1__["default"];
6148
- var create = __dependency2__.create;
6273
+ var indexOf = __dependency1__.indexOf;
6274
+ var canDefineNonEnumerableProperties = __dependency2__.canDefineNonEnumerableProperties;
6149
6275
 
6150
6276
  /**
6151
6277
  Returns all of the keys defined on an object or hash. This is useful
@@ -6159,7 +6285,7 @@ define("ember-metal/keys",
6159
6285
  */
6160
6286
  var keys = Object.keys;
6161
6287
 
6162
- if (!keys || create.isSimulated) {
6288
+ if (!keys || !canDefineNonEnumerableProperties) {
6163
6289
  var prototypeProperties = [
6164
6290
  'constructor',
6165
6291
  'hasOwnProperty',
@@ -6180,7 +6306,7 @@ define("ember-metal/keys",
6180
6306
  return;
6181
6307
  }
6182
6308
 
6183
- if (EnumerableUtils.indexOf(array, key) >= 0) {
6309
+ if (indexOf(array, key) >= 0) {
6184
6310
  return;
6185
6311
  }
6186
6312
 
@@ -7895,65 +8021,62 @@ define("ember-metal/path_cache",
7895
8021
  __exports__.isPath = isPath;
7896
8022
  });
7897
8023
  define("ember-metal/platform",
7898
- ["ember-metal/core","exports"],
7899
- function(__dependency1__, __exports__) {
8024
+ ["exports"],
8025
+ function(__exports__) {
7900
8026
  "use strict";
7901
8027
  /*globals Node */
7902
8028
 
7903
- var Ember = __dependency1__["default"];
7904
-
7905
8029
  /**
7906
8030
  @module ember-metal
7907
8031
  */
7908
-
7909
- /**
7910
- Platform specific methods and feature detectors needed by the framework.
7911
-
7912
- @class platform
7913
- @namespace Ember
7914
- @static
7915
- */
7916
- // TODO remove this
7917
- var platform = {};
7918
-
7919
- var defineProperty = Object.defineProperty;
7920
- var canRedefineProperties, canDefinePropertyOnDOM;
7921
-
7922
- // Catch IE8 where Object.defineProperty exists but only works on DOM elements
7923
- if (defineProperty) {
8032
+ var defineProperty = (function checkCompliance(defineProperty) {
8033
+ if (!defineProperty) return;
7924
8034
  try {
7925
- defineProperty({}, 'a',{get:function() {}});
7926
- } catch (e) {
7927
- defineProperty = null;
7928
- }
7929
- }
7930
-
7931
- if (defineProperty) {
7932
- // Detects a bug in Android <3.2 where you cannot redefine a property using
7933
- // Object.defineProperty once accessors have already been set.
7934
- canRedefineProperties = (function() {
8035
+ var a = 5;
7935
8036
  var obj = {};
7936
-
7937
8037
  defineProperty(obj, 'a', {
7938
8038
  configurable: true,
7939
8039
  enumerable: true,
7940
- get: function() { },
7941
- set: function() { }
8040
+ get: function () {
8041
+ return a;
8042
+ },
8043
+ set: function (v) {
8044
+ a = v;
8045
+ }
7942
8046
  });
8047
+ if (obj.a !== 5) return;
8048
+ obj.a = 10;
8049
+ if (a !== 10) return;
7943
8050
 
8051
+ // check non-enumerability
7944
8052
  defineProperty(obj, 'a', {
7945
8053
  configurable: true,
7946
- enumerable: true,
8054
+ enumerable: false,
7947
8055
  writable: true,
7948
8056
  value: true
7949
8057
  });
8058
+ for (var key in obj) {
8059
+ if (key === 'a') return;
8060
+ }
7950
8061
 
7951
- return obj.a === true;
7952
- })();
8062
+ // Detects a bug in Android <3.2 where you cannot redefine a property using
8063
+ // Object.defineProperty once accessors have already been set.
8064
+ if (obj.a !== true) return;
8065
+
8066
+ // defineProperty is compliant
8067
+ return defineProperty;
8068
+ } catch (e) {
8069
+ // IE8 defines Object.defineProperty but calling it on an Object throws
8070
+ return;
8071
+ }
8072
+ })(Object.defineProperty);
7953
8073
 
8074
+ var hasES5CompliantDefineProperty = !!defineProperty;
8075
+
8076
+ if (hasES5CompliantDefineProperty && typeof document !== 'undefined') {
7954
8077
  // This is for Safari 5.0, which supports Object.defineProperty, but not
7955
8078
  // on DOM nodes.
7956
- canDefinePropertyOnDOM = (function() {
8079
+ var canDefinePropertyOnDOM = (function() {
7957
8080
  try {
7958
8081
  defineProperty(document.createElement('div'), 'definePropertyOnDOM', {});
7959
8082
  return true;
@@ -7962,9 +8085,7 @@ define("ember-metal/platform",
7962
8085
  return false;
7963
8086
  })();
7964
8087
 
7965
- if (!canRedefineProperties) {
7966
- defineProperty = null;
7967
- } else if (!canDefinePropertyOnDOM) {
8088
+ if (!canDefinePropertyOnDOM) {
7968
8089
  defineProperty = function(obj, keyName, desc) {
7969
8090
  var isNode;
7970
8091
 
@@ -7984,6 +8105,12 @@ define("ember-metal/platform",
7984
8105
  }
7985
8106
  }
7986
8107
 
8108
+ if (!hasES5CompliantDefineProperty) {
8109
+ defineProperty = function defineProperty(obj, keyName, desc) {
8110
+ if (!desc.get) { obj[keyName] = desc.value; }
8111
+ };
8112
+ }
8113
+
7987
8114
  // ES5 15.2.3.7
7988
8115
  // http://es5.github.com/#x15.2.3.7
7989
8116
  if (!Object.defineProperties) {
@@ -8079,17 +8206,28 @@ define("ember-metal/platform",
8079
8206
 
8080
8207
  return object;
8081
8208
  };
8082
- create.isSimulated = true;
8083
8209
  } else {
8084
8210
  create = Object.create;
8085
8211
  }
8086
8212
 
8213
+ var hasPropertyAccessors = hasES5CompliantDefineProperty;
8214
+ var canDefineNonEnumerableProperties = hasES5CompliantDefineProperty;
8087
8215
 
8088
8216
  /**
8089
8217
  @class platform
8090
8218
  @namespace Ember
8091
8219
  */
8092
8220
 
8221
+ /**
8222
+ Platform specific methods and feature detectors needed by the framework.
8223
+
8224
+ @class platform
8225
+ @namespace Ember
8226
+ @static
8227
+ */
8228
+ // TODO remove this
8229
+ var platform = {};
8230
+
8093
8231
  /**
8094
8232
  Identical to `Object.defineProperty()`. Implements as much functionality
8095
8233
  as possible if not available natively.
@@ -8108,45 +8246,27 @@ define("ember-metal/platform",
8108
8246
  @property hasPropertyAccessors
8109
8247
  @final
8110
8248
  */
8111
- platform.hasPropertyAccessors = true;
8112
-
8113
- if (!platform.defineProperty) {
8114
- platform.hasPropertyAccessors = false;
8115
-
8116
- defineProperty = platform.defineProperty = function(obj, keyName, desc) {
8117
- if (!desc.get) { obj[keyName] = desc.value; }
8118
- };
8119
-
8120
- platform.defineProperty.isSimulated = true;
8121
- }
8122
-
8123
- if (Ember.ENV.MANDATORY_SETTER && !platform.hasPropertyAccessors) {
8124
- Ember.ENV.MANDATORY_SETTER = false;
8125
- }
8249
+ platform.hasPropertyAccessors = hasPropertyAccessors;
8126
8250
 
8127
8251
  __exports__.create = create;
8252
+ __exports__.defineProperty = defineProperty;
8253
+ __exports__.hasPropertyAccessors = hasPropertyAccessors;
8254
+ __exports__.canDefineNonEnumerableProperties = canDefineNonEnumerableProperties;
8128
8255
  __exports__.platform = platform;
8129
8256
  });
8130
8257
  define("ember-metal/properties",
8131
- ["ember-metal/core","ember-metal/utils","ember-metal/platform","ember-metal/property_events","ember-metal/property_get","ember-metal/property_set","exports"],
8132
- function(__dependency1__, __dependency2__, __dependency3__, __dependency4__, __dependency5__, __dependency6__, __exports__) {
8258
+ ["ember-metal/core","ember-metal/utils","ember-metal/platform","ember-metal/property_events","exports"],
8259
+ function(__dependency1__, __dependency2__, __dependency3__, __dependency4__, __exports__) {
8133
8260
  "use strict";
8134
8261
  /**
8135
8262
  @module ember-metal
8136
8263
  */
8137
8264
 
8138
8265
  var Ember = __dependency1__["default"];
8139
- var meta = __dependency2__.meta;
8140
- var platform = __dependency3__.platform;
8266
+ var metaFor = __dependency2__.meta;
8267
+ var objectDefineProperty = __dependency3__.defineProperty;
8268
+ var hasPropertyAccessors = __dependency3__.hasPropertyAccessors;
8141
8269
  var overrideChains = __dependency4__.overrideChains;
8142
- var get = __dependency5__.get;
8143
- var set = __dependency6__.set;
8144
-
8145
- var metaFor = meta;
8146
- var objectDefineProperty = platform.defineProperty;
8147
-
8148
- var MANDATORY_SETTER = Ember.ENV.MANDATORY_SETTER;
8149
-
8150
8270
  // ..........................................................
8151
8271
  // DESCRIPTOR
8152
8272
  //
@@ -8168,18 +8288,18 @@ define("ember-metal/properties",
8168
8288
  // DEFINING PROPERTIES API
8169
8289
  //
8170
8290
 
8171
- var MANDATORY_SETTER_FUNCTION = Ember.MANDATORY_SETTER_FUNCTION = function(value) {
8291
+ function MANDATORY_SETTER_FUNCTION(value) {
8172
8292
  Ember.assert("You must use Ember.set() to access this property (of " + this + ")", false);
8173
- };
8293
+ }
8174
8294
 
8175
- var DEFAULT_GETTER_FUNCTION = Ember.DEFAULT_GETTER_FUNCTION = function DEFAULT_GETTER_FUNCTION(name) {
8176
- return function() {
8295
+ __exports__.MANDATORY_SETTER_FUNCTION = MANDATORY_SETTER_FUNCTION;function DEFAULT_GETTER_FUNCTION(name) {
8296
+ return function GETTER_FUNCTION() {
8177
8297
  var meta = this['__ember_meta__'];
8178
8298
  return meta && meta.values[name];
8179
8299
  };
8180
- };
8300
+ }
8181
8301
 
8182
- /**
8302
+ __exports__.DEFAULT_GETTER_FUNCTION = DEFAULT_GETTER_FUNCTION;/**
8183
8303
  NOTE: This is a low-level method used by other parts of the API. You almost
8184
8304
  never want to call this method directly. Instead you should use
8185
8305
  `Ember.mixin()` to define new properties.
@@ -8242,34 +8362,36 @@ define("ember-metal/properties",
8242
8362
  value = desc;
8243
8363
 
8244
8364
  descs[keyName] = desc;
8245
- if (MANDATORY_SETTER && watching) {
8246
- objectDefineProperty(obj, keyName, {
8247
- configurable: true,
8248
- enumerable: true,
8249
- writable: true,
8250
- value: undefined // make enumerable
8251
- });
8252
- } else {
8253
- obj[keyName] = undefined; // make enumerable
8254
- }
8255
- if (desc.setup) { desc.setup(obj, keyName); }
8256
- } else {
8257
- descs[keyName] = undefined; // shadow descriptor in proto
8258
- if (desc == null) {
8259
- value = data;
8260
-
8261
- if (MANDATORY_SETTER && watching) {
8262
- meta.values[keyName] = data;
8365
+
8366
+ if (watching && hasPropertyAccessors) {
8263
8367
  objectDefineProperty(obj, keyName, {
8264
8368
  configurable: true,
8265
8369
  enumerable: true,
8266
- set: MANDATORY_SETTER_FUNCTION,
8267
- get: DEFAULT_GETTER_FUNCTION(keyName)
8370
+ writable: true,
8371
+ value: undefined // make enumerable
8268
8372
  });
8269
8373
  } else {
8270
- obj[keyName] = data;
8374
+ obj[keyName] = undefined; // make enumerable
8271
8375
  }
8272
- } else {
8376
+ if (desc.setup) { desc.setup(obj, keyName); }
8377
+ } else {
8378
+ descs[keyName] = undefined; // shadow descriptor in proto
8379
+ if (desc == null) {
8380
+ value = data;
8381
+
8382
+
8383
+ if (watching && hasPropertyAccessors) {
8384
+ meta.values[keyName] = data;
8385
+ objectDefineProperty(obj, keyName, {
8386
+ configurable: true,
8387
+ enumerable: true,
8388
+ set: MANDATORY_SETTER_FUNCTION,
8389
+ get: DEFAULT_GETTER_FUNCTION(keyName)
8390
+ });
8391
+ } else {
8392
+ obj[keyName] = data;
8393
+ }
8394
+ } else {
8273
8395
  value = desc;
8274
8396
 
8275
8397
  // compatibility with ES5
@@ -8287,35 +8409,7 @@ define("ember-metal/properties",
8287
8409
 
8288
8410
  return this;
8289
8411
  }
8290
-
8291
- __exports__.defineProperty = defineProperty;/**
8292
- Used internally to allow changing properties in a backwards compatible way, and print a helpful
8293
- deprecation warning.
8294
-
8295
- @method deprecateProperty
8296
- @param {Object} object The object to add the deprecated property to.
8297
- @param {String} deprecatedKey The property to add (and print deprecation warnings upon accessing).
8298
- @param {String} newKey The property that will be aliased.
8299
- @private
8300
- @since 1.7.0
8301
- */
8302
-
8303
- function deprecateProperty(object, deprecatedKey, newKey) {
8304
- function deprecate() {
8305
- Ember.deprecate('Usage of `' + deprecatedKey + '` is deprecated, use `' + newKey + '` instead.');
8306
- }
8307
-
8308
- if (platform.hasPropertyAccessors) {
8309
- defineProperty(object, deprecatedKey, {
8310
- configurable: true,
8311
- enumerable: false,
8312
- set: function(value) { deprecate(); set(object, newKey, value); },
8313
- get: function() { deprecate(); return get(object, newKey); }
8314
- });
8315
- }
8316
- }
8317
-
8318
- __exports__.deprecateProperty = deprecateProperty;
8412
+ __exports__.defineProperty = defineProperty;
8319
8413
  });
8320
8414
  define("ember-metal/property_events",
8321
8415
  ["ember-metal/utils","ember-metal/events","ember-metal/observer_set","exports"],
@@ -8577,8 +8671,8 @@ define("ember-metal/property_events",
8577
8671
  __exports__.changeProperties = changeProperties;
8578
8672
  });
8579
8673
  define("ember-metal/property_get",
8580
- ["ember-metal/core","ember-metal/error","ember-metal/path_cache","exports"],
8581
- function(__dependency1__, __dependency2__, __dependency3__, __exports__) {
8674
+ ["ember-metal/core","ember-metal/error","ember-metal/path_cache","ember-metal/platform","exports"],
8675
+ function(__dependency1__, __dependency2__, __dependency3__, __dependency4__, __exports__) {
8582
8676
  "use strict";
8583
8677
  /**
8584
8678
  @module ember-metal
@@ -8589,8 +8683,8 @@ define("ember-metal/property_get",
8589
8683
  var isGlobalPath = __dependency3__.isGlobalPath;
8590
8684
  var isPath = __dependency3__.isPath;
8591
8685
  var pathHasThis = __dependency3__.hasThis;
8686
+ var hasPropertyAccessors = __dependency4__.hasPropertyAccessors;
8592
8687
 
8593
- var MANDATORY_SETTER = Ember.ENV.MANDATORY_SETTER;
8594
8688
  var FIRST_KEY = /^([^\.]+)/;
8595
8689
 
8596
8690
  // ..........................................................
@@ -8658,12 +8752,13 @@ define("ember-metal/property_get",
8658
8752
  if (desc) {
8659
8753
  return desc.get(obj, keyName);
8660
8754
  } else {
8661
- if (MANDATORY_SETTER && meta && meta.watching[keyName] > 0) {
8662
- ret = meta.values[keyName];
8663
- } else {
8664
- ret = obj[keyName];
8665
- }
8666
-
8755
+
8756
+ if (hasPropertyAccessors && meta && meta.watching[keyName] > 0) {
8757
+ ret = meta.values[keyName];
8758
+ } else {
8759
+ ret = obj[keyName];
8760
+ }
8761
+
8667
8762
  if (ret === undefined &&
8668
8763
  'object' === typeof obj && !(keyName in obj) && 'function' === typeof obj.unknownProperty) {
8669
8764
  return obj.unknownProperty(keyName);
@@ -8760,8 +8855,8 @@ define("ember-metal/property_get",
8760
8855
  __exports__._getPath = _getPath;
8761
8856
  });
8762
8857
  define("ember-metal/property_set",
8763
- ["ember-metal/core","ember-metal/property_get","ember-metal/property_events","ember-metal/properties","ember-metal/error","ember-metal/path_cache","exports"],
8764
- function(__dependency1__, __dependency2__, __dependency3__, __dependency4__, __dependency5__, __dependency6__, __exports__) {
8858
+ ["ember-metal/core","ember-metal/property_get","ember-metal/property_events","ember-metal/properties","ember-metal/error","ember-metal/path_cache","ember-metal/platform","exports"],
8859
+ function(__dependency1__, __dependency2__, __dependency3__, __dependency4__, __dependency5__, __dependency6__, __dependency7__, __exports__) {
8765
8860
  "use strict";
8766
8861
  var Ember = __dependency1__["default"];
8767
8862
  var getPath = __dependency2__._getPath;
@@ -8770,9 +8865,8 @@ define("ember-metal/property_set",
8770
8865
  var defineProperty = __dependency4__.defineProperty;
8771
8866
  var EmberError = __dependency5__["default"];
8772
8867
  var isPath = __dependency6__.isPath;
8868
+ var hasPropertyAccessors = __dependency7__.hasPropertyAccessors;
8773
8869
 
8774
-
8775
- var MANDATORY_SETTER = Ember.ENV.MANDATORY_SETTER;
8776
8870
  var IS_GLOBAL = /^([A-Z$]|([0-9][A-Z$]))/;
8777
8871
 
8778
8872
  /**
@@ -8829,24 +8923,26 @@ define("ember-metal/property_set",
8829
8923
  if (isUnknown && 'function' === typeof obj.setUnknownProperty) {
8830
8924
  obj.setUnknownProperty(keyName, value);
8831
8925
  } else if (meta && meta.watching[keyName] > 0) {
8832
- if (MANDATORY_SETTER) {
8833
- currentValue = meta.values[keyName];
8834
- } else {
8835
- currentValue = obj[keyName];
8836
- }
8837
- // only trigger a change if the value has changed
8926
+
8927
+ if (hasPropertyAccessors) {
8928
+ currentValue = meta.values[keyName];
8929
+ } else {
8930
+ currentValue = obj[keyName];
8931
+ }
8932
+ // only trigger a change if the value has changed
8838
8933
  if (value !== currentValue) {
8839
8934
  propertyWillChange(obj, keyName);
8840
- if (MANDATORY_SETTER) {
8841
- if ((currentValue === undefined && !(keyName in obj)) || !obj.propertyIsEnumerable(keyName)) {
8842
- defineProperty(obj, keyName, null, value); // setup mandatory setter
8935
+
8936
+ if (hasPropertyAccessors) {
8937
+ if ((currentValue === undefined && !(keyName in obj)) || !obj.propertyIsEnumerable(keyName)) {
8938
+ defineProperty(obj, keyName, null, value); // setup mandatory setter
8939
+ } else {
8940
+ meta.values[keyName] = value;
8941
+ }
8843
8942
  } else {
8844
- meta.values[keyName] = value;
8943
+ obj[keyName] = value;
8845
8944
  }
8846
- } else {
8847
- obj[keyName] = value;
8848
- }
8849
- propertyDidChange(obj, keyName);
8945
+ propertyDidChange(obj, keyName);
8850
8946
  }
8851
8947
  } else {
8852
8948
  obj[keyName] = value;
@@ -9203,7 +9299,7 @@ define("ember-metal/run_loop",
9203
9299
 
9204
9300
  /**
9205
9301
  Invokes the passed target/method and optional arguments after a specified
9206
- period if time. The last parameter of this method must always be a number
9302
+ period of time. The last parameter of this method must always be a number
9207
9303
  of milliseconds.
9208
9304
 
9209
9305
  You should use this method whenever you need to run some action after a
@@ -9577,16 +9673,17 @@ define("ember-metal/set_properties",
9577
9673
  }
9578
9674
  });
9579
9675
  define("ember-metal/utils",
9580
- ["ember-metal/core","ember-metal/platform","ember-metal/array","ember-metal/keys","exports"],
9581
- function(__dependency1__, __dependency2__, __dependency3__, __dependency4__, __exports__) {
9676
+ ["ember-metal/core","ember-metal/platform","ember-metal/array","exports"],
9677
+ function(__dependency1__, __dependency2__, __dependency3__, __exports__) {
9582
9678
  "use strict";
9583
9679
  var Ember = __dependency1__["default"];
9584
- var platform = __dependency2__.platform;
9680
+ var o_defineProperty = __dependency2__.defineProperty;
9681
+ var canDefineNonEnumerableProperties = __dependency2__.canDefineNonEnumerableProperties;
9682
+ var hasPropertyAccessors = __dependency2__.hasPropertyAccessors;
9585
9683
  var create = __dependency2__.create;
9586
9684
 
9587
9685
  var forEach = __dependency3__.forEach;
9588
9686
 
9589
- var keys = __dependency4__["default"];
9590
9687
  /**
9591
9688
  @module ember-metal
9592
9689
  */
@@ -9623,12 +9720,10 @@ define("ember-metal/utils",
9623
9720
  */
9624
9721
  var GUID_PREFIX = 'ember';
9625
9722
 
9626
- var o_defineProperty = platform.defineProperty;
9627
9723
  var o_create = create;
9628
9724
  // Used for guid generation...
9629
9725
  var numberCache = [];
9630
9726
  var stringCache = {};
9631
- var MANDATORY_SETTER = Ember.ENV.MANDATORY_SETTER;
9632
9727
 
9633
9728
  /**
9634
9729
  Strongly hint runtimes to intern the provided string.
@@ -9669,10 +9764,13 @@ define("ember-metal/utils",
9669
9764
  @private
9670
9765
  @return {String} interned version of the provided string
9671
9766
  */
9672
- function intern(string) {
9673
- var obj = Object.create(null);
9674
- obj[string] = true;
9675
- return keys(obj)[0];
9767
+ function intern(str) {
9768
+ var obj = {};
9769
+ obj[str] = 1;
9770
+ for (var key in obj) {
9771
+ if (key === str) return key;
9772
+ }
9773
+ return str;
9676
9774
  }
9677
9775
 
9678
9776
  /**
@@ -9794,8 +9892,6 @@ define("ember-metal/utils",
9794
9892
  value: null
9795
9893
  };
9796
9894
 
9797
- var isDefinePropertySimulated = platform.defineProperty.isSimulated;
9798
-
9799
9895
  function Meta(obj) {
9800
9896
  this.descs = {};
9801
9897
  this.watching = {};
@@ -9820,7 +9916,7 @@ define("ember-metal/utils",
9820
9916
  proto: null
9821
9917
  };
9822
9918
 
9823
- if (isDefinePropertySimulated) {
9919
+ if (!canDefineNonEnumerableProperties) {
9824
9920
  // on platforms that don't support enumerable false
9825
9921
  // make meta fail jQuery.isPlainObject() to hide from
9826
9922
  // jQuery.extend() by having a property that fails
@@ -9835,7 +9931,11 @@ define("ember-metal/utils",
9835
9931
  // Placeholder for non-writable metas.
9836
9932
  var EMPTY_META = new Meta(null);
9837
9933
 
9838
- if (MANDATORY_SETTER) { EMPTY_META.values = {}; }
9934
+
9935
+ if (hasPropertyAccessors) {
9936
+ EMPTY_META.values = {};
9937
+ }
9938
+
9839
9939
 
9840
9940
  /**
9841
9941
  Retrieves the meta hash for an object. If `writable` is true ensures the
@@ -9861,11 +9961,15 @@ define("ember-metal/utils",
9861
9961
  if (writable===false) return ret || EMPTY_META;
9862
9962
 
9863
9963
  if (!ret) {
9864
- if (!isDefinePropertySimulated) o_defineProperty(obj, '__ember_meta__', META_DESC);
9964
+ if (canDefineNonEnumerableProperties) o_defineProperty(obj, '__ember_meta__', META_DESC);
9865
9965
 
9866
9966
  ret = new Meta(obj);
9867
9967
 
9868
- if (MANDATORY_SETTER) { ret.values = {}; }
9968
+
9969
+ if (hasPropertyAccessors) {
9970
+ ret.values = {};
9971
+ }
9972
+
9869
9973
 
9870
9974
  obj['__ember_meta__'] = ret;
9871
9975
 
@@ -9873,7 +9977,7 @@ define("ember-metal/utils",
9873
9977
  ret.descs.constructor = null;
9874
9978
 
9875
9979
  } else if (ret.source !== obj) {
9876
- if (!isDefinePropertySimulated) o_defineProperty(obj, '__ember_meta__', META_DESC);
9980
+ if (canDefineNonEnumerableProperties) o_defineProperty(obj, '__ember_meta__', META_DESC);
9877
9981
 
9878
9982
  ret = o_create(ret);
9879
9983
  ret.descs = o_create(ret.descs);
@@ -9882,7 +9986,11 @@ define("ember-metal/utils",
9882
9986
  ret.cacheMeta = {};
9883
9987
  ret.source = obj;
9884
9988
 
9885
- if (MANDATORY_SETTER) { ret.values = o_create(ret.values); }
9989
+
9990
+ if (hasPropertyAccessors) {
9991
+ ret.values = o_create(ret.values);
9992
+ }
9993
+
9886
9994
 
9887
9995
  obj['__ember_meta__'] = ret;
9888
9996
  }
@@ -10388,7 +10496,12 @@ define("ember-metal/utils",
10388
10496
  v = obj[key];
10389
10497
  if (v === 'toString') { continue; } // ignore useless items
10390
10498
  if (typeOf(v) === 'function') { v = "function() { ... }"; }
10391
- ret.push(key + ": " + v);
10499
+
10500
+ if (v && typeof v.toString !== 'function') {
10501
+ ret.push(key + ": " + toString.call(v));
10502
+ } else {
10503
+ ret.push(key + ": " + v);
10504
+ }
10392
10505
  }
10393
10506
  }
10394
10507
  return "{" + ret.join(", ") + "}";
@@ -10434,17 +10547,19 @@ define("ember-metal/utils",
10434
10547
  __exports__.tryFinally = tryFinally;
10435
10548
  });
10436
10549
  define("ember-metal/watch_key",
10437
- ["ember-metal/core","ember-metal/utils","ember-metal/platform","exports"],
10438
- function(__dependency1__, __dependency2__, __dependency3__, __exports__) {
10550
+ ["ember-metal/core","ember-metal/utils","ember-metal/platform","ember-metal/properties","exports"],
10551
+ function(__dependency1__, __dependency2__, __dependency3__, __dependency4__, __exports__) {
10439
10552
  "use strict";
10440
10553
  var Ember = __dependency1__["default"];
10441
10554
  var meta = __dependency2__.meta;
10442
10555
  var typeOf = __dependency2__.typeOf;
10443
- var platform = __dependency3__.platform;
10556
+ var o_defineProperty = __dependency3__.defineProperty;
10557
+ var hasPropertyAccessors = __dependency3__.hasPropertyAccessors;
10558
+ var MANDATORY_SETTER_FUNCTION = __dependency4__.MANDATORY_SETTER_FUNCTION;
10559
+ var DEFAULT_GETTER_FUNCTION = __dependency4__.DEFAULT_GETTER_FUNCTION;
10444
10560
 
10445
10561
  var metaFor = meta; // utils.js
10446
- var MANDATORY_SETTER = Ember.ENV.MANDATORY_SETTER;
10447
- var o_defineProperty = platform.defineProperty;
10562
+
10448
10563
 
10449
10564
  function watchKey(obj, keyName, meta) {
10450
10565
  // can't watch length on Array - it is special...
@@ -10463,21 +10578,33 @@ define("ember-metal/watch_key",
10463
10578
  obj.willWatchProperty(keyName);
10464
10579
  }
10465
10580
 
10466
- if (MANDATORY_SETTER && keyName in obj) {
10581
+
10582
+ if (hasPropertyAccessors) {
10583
+ handleMandatorySetter(m, obj, keyName);
10584
+ }
10585
+
10586
+ } else {
10587
+ watching[keyName] = (watching[keyName] || 0) + 1;
10588
+ }
10589
+ }
10590
+
10591
+ __exports__.watchKey = watchKey;
10592
+
10593
+ var handleMandatorySetter = function handleMandatorySetter(m, obj, keyName) {
10594
+ // this x in Y deopts, so keeping it in this function is better;
10595
+ if (keyName in obj) {
10467
10596
  m.values[keyName] = obj[keyName];
10468
10597
  o_defineProperty(obj, keyName, {
10469
10598
  configurable: true,
10470
10599
  enumerable: obj.propertyIsEnumerable(keyName),
10471
- set: Ember.MANDATORY_SETTER_FUNCTION,
10472
- get: Ember.DEFAULT_GETTER_FUNCTION(keyName)
10600
+ set: MANDATORY_SETTER_FUNCTION,
10601
+ get: DEFAULT_GETTER_FUNCTION(keyName)
10473
10602
  });
10474
10603
  }
10475
- } else {
10476
- watching[keyName] = (watching[keyName] || 0) + 1;
10477
- }
10478
- }
10604
+ };
10605
+
10479
10606
 
10480
- __exports__.watchKey = watchKey;function unwatchKey(obj, keyName, meta) {
10607
+ function unwatchKey(obj, keyName, meta) {
10481
10608
  var m = meta || metaFor(obj), watching = m.watching;
10482
10609
 
10483
10610
  if (watching[keyName] === 1) {
@@ -10490,23 +10617,25 @@ define("ember-metal/watch_key",
10490
10617
  obj.didUnwatchProperty(keyName);
10491
10618
  }
10492
10619
 
10493
- if (MANDATORY_SETTER && keyName in obj) {
10494
- o_defineProperty(obj, keyName, {
10495
- configurable: true,
10496
- enumerable: obj.propertyIsEnumerable(keyName),
10497
- set: function(val) {
10498
- // redefine to set as enumerable
10499
- o_defineProperty(obj, keyName, {
10500
- configurable: true,
10501
- writable: true,
10502
- enumerable: true,
10503
- value: val
10504
- });
10505
- delete m.values[keyName];
10506
- },
10507
- get: Ember.DEFAULT_GETTER_FUNCTION(keyName)
10508
- });
10509
- }
10620
+
10621
+ if (hasPropertyAccessors && keyName in obj) {
10622
+ o_defineProperty(obj, keyName, {
10623
+ configurable: true,
10624
+ enumerable: obj.propertyIsEnumerable(keyName),
10625
+ set: function(val) {
10626
+ // redefine to set as enumerable
10627
+ o_defineProperty(obj, keyName, {
10628
+ configurable: true,
10629
+ writable: true,
10630
+ enumerable: true,
10631
+ value: val
10632
+ });
10633
+ delete m.values[keyName];
10634
+ },
10635
+ get: DEFAULT_GETTER_FUNCTION(keyName)
10636
+ });
10637
+ }
10638
+
10510
10639
  } else if (watching[keyName] > 1) {
10511
10640
  watching[keyName]--;
10512
10641
  }
@@ -15177,7 +15306,7 @@ define("ember-runtime/mixins/enumerable",
15177
15306
  - `index` is the current index in the iteration.
15178
15307
  - `enumerable` is the enumerable object itself.
15179
15308
 
15180
- It should return the `true` to include the item in the results, `false`
15309
+ It should return `true` to include the item in the results, `false`
15181
15310
  otherwise.
15182
15311
 
15183
15312
  Note that in addition to a callback, you can also pass an optional target
@@ -16738,7 +16867,7 @@ define("ember-runtime/mixins/observable",
16738
16867
  },
16739
16868
 
16740
16869
  /**
16741
- To get multiple properties at once, call `getProperties`
16870
+ To get the values of multiple properties at once, call `getProperties`
16742
16871
  with a list of strings or an array:
16743
16872
 
16744
16873
  ```javascript
@@ -18183,7 +18312,7 @@ define("ember-runtime/system/core_object",
18183
18312
  */
18184
18313
 
18185
18314
  var Ember = __dependency1__["default"];
18186
- // Ember.ENV.MANDATORY_SETTER, Ember.assert, Ember.K, Ember.config
18315
+ // Ember.assert, Ember.K, Ember.config
18187
18316
 
18188
18317
  // NOTE: this object should never be included directly. Instead use `Ember.Object`.
18189
18318
  // We only define this separately so that `Ember.Set` can depend on it.
@@ -18204,7 +18333,7 @@ define("ember-runtime/system/core_object",
18204
18333
  var required = __dependency9__.required;
18205
18334
  var indexOf = __dependency10__.indexOf;
18206
18335
  var EmberError = __dependency11__["default"];
18207
- var platform = __dependency5__.platform;
18336
+ var o_defineProperty = __dependency5__.defineProperty;
18208
18337
  var keys = __dependency12__["default"];
18209
18338
  var ActionHandler = __dependency13__["default"];
18210
18339
  var defineProperty = __dependency14__.defineProperty;
@@ -18212,14 +18341,13 @@ define("ember-runtime/system/core_object",
18212
18341
  var ComputedProperty = __dependency16__.ComputedProperty;
18213
18342
  var run = __dependency17__["default"];
18214
18343
  var destroy = __dependency6__.destroy;
18215
-
18216
18344
  var K = __dependency1__.K;
18217
- var o_defineProperty = platform.defineProperty;
18345
+ var hasPropertyAccessors = __dependency5__.hasPropertyAccessors;
18346
+
18218
18347
  var schedule = run.schedule;
18219
18348
  var applyMixin = Mixin._apply;
18220
18349
  var finishPartial = Mixin.finishPartial;
18221
18350
  var reopen = Mixin.prototype.reopen;
18222
- var MANDATORY_SETTER = Ember.ENV.MANDATORY_SETTER;
18223
18351
  var hasCachedComputedProperties = false;
18224
18352
 
18225
18353
  var undefinedDescriptor = {
@@ -18323,11 +18451,14 @@ define("ember-runtime/system/core_object",
18323
18451
  } else {
18324
18452
  if (typeof this.setUnknownProperty === 'function' && !(keyName in this)) {
18325
18453
  this.setUnknownProperty(keyName, value);
18326
- } else if (MANDATORY_SETTER) {
18327
- defineProperty(this, keyName, null, value); // setup mandatory setter
18328
18454
  } else {
18329
- this[keyName] = value;
18330
- }
18455
+
18456
+ if (hasPropertyAccessors) {
18457
+ defineProperty(this, keyName, null, value); // setup mandatory setter
18458
+ } else {
18459
+ this[keyName] = value;
18460
+ }
18461
+ }
18331
18462
  }
18332
18463
  }
18333
18464
  }
@@ -19022,12 +19153,9 @@ define("ember-runtime/system/core_object",
19022
19153
  cache._computedProperties = undefined;
19023
19154
  }
19024
19155
  }
19025
-
19026
- this._super();
19027
19156
  }
19028
19157
  });
19029
19158
 
19030
-
19031
19159
  __exports__["default"] = CoreObject;
19032
19160
  });
19033
19161
  define("ember-runtime/system/deferred",
@@ -23881,4 +24009,5 @@ define("rsvp/utils",
23881
24009
  });
23882
24010
  requireModule("ember-runtime");
23883
24011
 
23884
- })();
24012
+ })();
24013
+ ;module.exports = Ember;