ember-data-source 2.15.4 → 2.16.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: 1380b8c09ae4eaa8a34d2f1fffeb7871e462460f
4
- data.tar.gz: 9bb17d836450a299cdfb416ec55c15c1139fafef
3
+ metadata.gz: f9028ed814e25a03806793b8a55f5317fd6cf71f
4
+ data.tar.gz: 628ba272f2c7cf6a5a946d421c6ca3765b9f820a
5
5
  SHA512:
6
- metadata.gz: b2855ad5fcabd0bb3830ce97b3bb06cec759c3e81f8267f46ae9f4096380fd4884d3f34b627bb565fb2d42ad5f0d02029ff0d9723fa204b34cb9440df5e0f593
7
- data.tar.gz: 56d7dd0e5c14a35a4b684ea9cef4985ba393cf25c49b7bfcbf86108d876fc357a3b437c749ab4f8cadb405931beeec2bb4b1fc278cd50849b9afca0406044907
6
+ metadata.gz: c0b7eadc0bcbca0a335358c177b3f4cf0cf05a4d656ae7a63cdf338fd65204cc9d265c70ff648c2f6fe330328c9f034093f245b2981e659b104525fccecd6aa5
7
+ data.tar.gz: 2a4395a7905d496f1dbcd84e7262ceb06915b53cb405bac77fbfae4b98b826a4da82d643a2e45b33bd6cb89fc6af9b114138bfb9ecf5d3eae2ae5b678ad89fca
@@ -6,7 +6,7 @@
6
6
  * @copyright Copyright 2011-2017 Tilde Inc. and contributors.
7
7
  * Portions Copyright 2011 LivingSocial Inc.
8
8
  * @license Licensed under MIT license (see license.js)
9
- * @version 2.15.4
9
+ * @version 2.16.0-beta.1
10
10
  */
11
11
 
12
12
  var loader, define, requireModule, require, requirejs;
@@ -14,6 +14,8 @@ var loader, define, requireModule, require, requirejs;
14
14
  (function (global) {
15
15
  'use strict';
16
16
 
17
+ var heimdall = global.heimdall;
18
+
17
19
  function dict() {
18
20
  var obj = Object.create(null);
19
21
  obj['__'] = undefined;
@@ -55,9 +57,7 @@ var loader, define, requireModule, require, requirejs;
55
57
  }
56
58
  }
57
59
  }
58
- },
59
- // Option to enable or disable the generation of default exports
60
- makeDefaultExport: true
60
+ }
61
61
  };
62
62
 
63
63
  var registry = dict();
@@ -107,7 +107,6 @@ var loader, define, requireModule, require, requirejs;
107
107
  return this.module.exports;
108
108
  }
109
109
 
110
-
111
110
  if (loader.wrapModules) {
112
111
  this.callback = loader.wrapModules(this.id, this.callback);
113
112
  }
@@ -121,9 +120,7 @@ var loader, define, requireModule, require, requirejs;
121
120
  if (!(this.hasExportsAsDep && result === undefined)) {
122
121
  this.module.exports = result;
123
122
  }
124
- if (loader.makeDefaultExport) {
125
- this.makeDefaultExport();
126
- }
123
+ this.makeDefaultExport();
127
124
  return this.module.exports;
128
125
  };
129
126
 
@@ -281,7 +278,6 @@ var loader, define, requireModule, require, requirejs;
281
278
  return child;
282
279
  }
283
280
 
284
-
285
281
  var parts = child.split('/');
286
282
  var nameParts = id.split('/');
287
283
  var parentBase = nameParts.slice(0, -1);
@@ -403,7 +399,7 @@ define('ember-data/-debug', ['exports', 'ember'], function (exports, _ember) {
403
399
 
404
400
  exports.assertPolymorphicType = assertPolymorphicType;
405
401
  });
406
- define('ember-data/-private/adapters/build-url-mixin', ['exports', 'ember'], function (exports, _ember) {
402
+ define('ember-data/-private/adapters/build-url-mixin', ['exports', 'ember', 'ember-inflector'], function (exports, _ember, _emberInflector) {
407
403
  'use strict';
408
404
 
409
405
  exports.__esModule = true;
@@ -803,10 +799,11 @@ define('ember-data/-private/adapters/build-url-mixin', ['exports', 'ember'], fun
803
799
  endpoint of "/line_items/".
804
800
  ```app/adapters/application.js
805
801
  import DS from 'ember-data';
802
+ import { pluralize } from 'ember-inflector';
806
803
  export default DS.RESTAdapter.extend({
807
804
  pathForType: function(modelName) {
808
805
  var decamelized = Ember.String.decamelize(modelName);
809
- return Ember.String.pluralize(decamelized);
806
+ return pluralize(decamelized);
810
807
  }
811
808
  });
812
809
  ```
@@ -816,7 +813,7 @@ define('ember-data/-private/adapters/build-url-mixin', ['exports', 'ember'], fun
816
813
  **/
817
814
  pathForType: function (modelName) {
818
815
  var camelized = _ember.default.String.camelize(modelName);
819
- return _ember.default.String.pluralize(camelized);
816
+ return (0, _emberInflector.pluralize)(camelized);
820
817
  }
821
818
  });
822
819
  });
@@ -1865,7 +1862,7 @@ define('ember-data/-private/system/identity-map', ['exports', 'ember-data/-priva
1865
1862
  IdentityMap.prototype.retrieve = function retrieve(modelName) {
1866
1863
  var map = this._map[modelName];
1867
1864
 
1868
- if (!map) {
1865
+ if (map === undefined) {
1869
1866
  map = this._map[modelName] = new _internalModelMap.default(modelName);
1870
1867
  }
1871
1868
 
@@ -1927,13 +1924,14 @@ define('ember-data/-private/system/internal-model-map', ['exports', 'ember-data/
1927
1924
  }
1928
1925
 
1929
1926
  /**
1930
- A "map" of records based on their ID for this modelName
1927
+ *
1928
+ * @param id
1929
+ * @returns {InternalModel}
1931
1930
  */
1932
1931
 
1933
1932
 
1934
1933
  InternalModelMap.prototype.get = function get(id) {
1935
- var r = this._idToModel[id];
1936
- return r;
1934
+ return this._idToModel[id];
1937
1935
  };
1938
1936
 
1939
1937
  InternalModelMap.prototype.has = function has(id) {
@@ -1962,9 +1960,7 @@ define('ember-data/-private/system/internal-model-map', ['exports', 'ember-data/
1962
1960
  };
1963
1961
 
1964
1962
  InternalModelMap.prototype.remove = function remove(internalModel, id) {
1965
- if (id) {
1966
- delete this._idToModel[id];
1967
- }
1963
+ delete this._idToModel[id];
1968
1964
 
1969
1965
  var loc = this._models.indexOf(internalModel);
1970
1966
 
@@ -1978,35 +1974,18 @@ define('ember-data/-private/system/internal-model-map', ['exports', 'ember-data/
1978
1974
  };
1979
1975
 
1980
1976
  InternalModelMap.prototype.clear = function clear() {
1981
- if (this._models) {
1982
- var models = this._models;
1983
- this._models = [];
1977
+ var models = this._models;
1978
+ this._models = [];
1984
1979
 
1985
- for (var i = 0; i < models.length; i++) {
1986
- var model = models[i];
1987
- model.unloadRecord();
1988
- }
1980
+ for (var i = 0; i < models.length; i++) {
1981
+ var model = models[i];
1982
+ model.unloadRecord();
1989
1983
  }
1990
1984
 
1991
1985
  this._metadata = null;
1992
1986
  };
1993
1987
 
1994
- InternalModelMap.prototype.destroy = function destroy() {
1995
- this._store = null;
1996
- this._modelClass = null;
1997
- };
1998
-
1999
1988
  _createClass(InternalModelMap, [{
2000
- key: 'idToRecord',
2001
- get: function () {
2002
- (false && !(false) && Ember.deprecate('Use of InternalModelMap.idToRecord is deprecated, use InternalModelMap.get(id) instead.', false, {
2003
- id: 'ds.record-map.idToRecord',
2004
- until: '2.13'
2005
- }));
2006
-
2007
- return this._idToModel;
2008
- }
2009
- }, {
2010
1989
  key: 'length',
2011
1990
  get: function () {
2012
1991
  return this._models.length;
@@ -2305,94 +2284,11 @@ define('ember-data/-private/system/model/errors', ['exports', 'ember'], function
2305
2284
  'use strict';
2306
2285
 
2307
2286
  exports.__esModule = true;
2308
-
2309
-
2310
- var get = _ember.default.get;
2311
- var set = _ember.default.set;
2312
- var isEmpty = _ember.default.isEmpty;
2313
- var makeArray = _ember.default.makeArray;
2314
-
2315
- var MapWithDefault = _ember.default.MapWithDefault;
2316
-
2317
- /**
2318
- @module ember-data
2319
- */
2320
-
2321
- /**
2322
- Holds validation errors for a given record, organized by attribute names.
2323
-
2324
- Every `DS.Model` has an `errors` property that is an instance of
2325
- `DS.Errors`. This can be used to display validation error
2326
- messages returned from the server when a `record.save()` rejects.
2327
-
2328
- For Example, if you had a `User` model that looked like this:
2329
-
2330
- ```app/models/user.js
2331
- import DS from 'ember-data';
2332
-
2333
- export default DS.Model.extend({
2334
- username: DS.attr('string'),
2335
- email: DS.attr('string')
2336
- });
2337
- ```
2338
- And you attempted to save a record that did not validate on the backend:
2339
-
2340
- ```javascript
2341
- let user = store.createRecord('user', {
2342
- username: 'tomster',
2343
- email: 'invalidEmail'
2344
- });
2345
- user.save();
2346
- ```
2347
-
2348
- Your backend would be expected to return an error response that described
2349
- the problem, so that error messages can be generated on the app.
2350
-
2351
- API responses will be translated into instances of `DS.Errors` differently,
2352
- depending on the specific combination of adapter and serializer used. You
2353
- may want to check the documentation or the source code of the libraries
2354
- that you are using, to know how they expect errors to be communicated.
2355
-
2356
- Errors can be displayed to the user by accessing their property name
2357
- to get an array of all the error objects for that property. Each
2358
- error object is a JavaScript object with two keys:
2359
-
2360
- - `message` A string containing the error message from the backend
2361
- - `attribute` The name of the property associated with this error message
2362
-
2363
- ```handlebars
2364
- <label>Username: {{input value=username}} </label>
2365
- {{#each model.errors.username as |error|}}
2366
- <div class="error">
2367
- {{error.message}}
2368
- </div>
2369
- {{/each}}
2370
-
2371
- <label>Email: {{input value=email}} </label>
2372
- {{#each model.errors.email as |error|}}
2373
- <div class="error">
2374
- {{error.message}}
2375
- </div>
2376
- {{/each}}
2377
- ```
2378
-
2379
- You can also access the special `messages` property on the error
2380
- object to get an array of all the error strings.
2381
-
2382
- ```handlebars
2383
- {{#each model.errors.messages as |message|}}
2384
- <div class="error">
2385
- {{message}}
2386
- </div>
2387
- {{/each}}
2388
- ```
2389
-
2390
- @class Errors
2391
- @namespace DS
2392
- @extends Ember.Object
2393
- @uses Ember.Enumerable
2394
- @uses Ember.Evented
2395
- */
2287
+ var get = _ember.default.get,
2288
+ set = _ember.default.set,
2289
+ isEmpty = _ember.default.isEmpty,
2290
+ makeArray = _ember.default.makeArray,
2291
+ MapWithDefault = _ember.default.MapWithDefault;
2396
2292
  exports.default = _ember.default.ArrayProxy.extend(_ember.default.Evented, {
2397
2293
  /**
2398
2294
  Register with target handler
@@ -3066,7 +2962,11 @@ define('ember-data/-private/system/model/internal-model', ['exports', 'ember', '
3066
2962
  this.dematerializeRecord();
3067
2963
 
3068
2964
  if (this._scheduledDestroy === null) {
3069
- this._scheduledDestroy = run.schedule('destroy', this, '_checkForOrphanedInternalModels');
2965
+ // TODO: use run.schedule once we drop 1.13
2966
+ if (!_ember.default.run.currentRunLoop) {
2967
+ (false && _ember.default.assert('You have turned on testing mode, which disabled the run-loop\'s autorun.\n You will need to wrap any code with asynchronous side-effects in a run', _ember.default.testing));
2968
+ }
2969
+ this._scheduledDestroy = _ember.default.run.backburner.schedule('destroy', this, '_checkForOrphanedInternalModels');
3070
2970
  }
3071
2971
  };
3072
2972
 
@@ -4502,7 +4402,7 @@ define('ember-data/-private/system/model/model', ['exports', 'ember', 'ember-dat
4502
4402
  } else {
4503
4403
  //No inverse was specified manually, we need to use a heuristic to guess one
4504
4404
  if (propertyMeta.parentType && propertyMeta.type === propertyMeta.parentType.modelName) {
4505
- (false && _ember.default.warn('Detected a reflexive relationship by the name of \'' + name + '\' without an inverse option. Look at http://emberjs.com/guides/models/defining-models/#toc_reflexive-relation for how to explicitly specify inverses.', false, {
4405
+ (false && _ember.default.warn('Detected a reflexive relationship by the name of \'' + name + '\' without an inverse option. Look at https://emberjs.com/guides/models/defining-models/#toc_reflexive-relation for how to explicitly specify inverses.', false, {
4506
4406
  id: 'ds.model.reflexive-relationship-without-inverse'
4507
4407
  }));
4508
4408
  }
@@ -4518,14 +4418,14 @@ define('ember-data/-private/system/model/model', ['exports', 'ember', 'ember-dat
4518
4418
  return name === optionsForRelationship.inverse;
4519
4419
  });
4520
4420
 
4521
- (false && _ember.default.assert("You defined the '" + name + "' relationship on " + this + ", but you defined the inverse relationships of type " + inverseType.toString() + " multiple times. Look at http://emberjs.com/guides/models/defining-models/#toc_explicit-inverses for how to explicitly specify inverses", filteredRelationships.length < 2));
4421
+ (false && _ember.default.assert("You defined the '" + name + "' relationship on " + this + ", but you defined the inverse relationships of type " + inverseType.toString() + " multiple times. Look at https://emberjs.com/guides/models/defining-models/#toc_explicit-inverses for how to explicitly specify inverses", filteredRelationships.length < 2));
4522
4422
 
4523
4423
 
4524
4424
  if (filteredRelationships.length === 1) {
4525
4425
  possibleRelationships = filteredRelationships;
4526
4426
  }
4527
4427
 
4528
- (false && _ember.default.assert("You defined the '" + name + "' relationship on " + this + ", but multiple possible inverse relationships of type " + this + " were found on " + inverseType + ". Look at http://emberjs.com/guides/models/defining-models/#toc_explicit-inverses for how to explicitly specify inverses", possibleRelationships.length === 1));
4428
+ (false && _ember.default.assert("You defined the '" + name + "' relationship on " + this + ", but multiple possible inverse relationships of type " + this + " were found on " + inverseType + ". Look at https://emberjs.com/guides/models/defining-models/#toc_explicit-inverses for how to explicitly specify inverses", possibleRelationships.length === 1));
4529
4429
 
4530
4430
 
4531
4431
  inverseName = possibleRelationships[0].name;
@@ -4902,10 +4802,6 @@ define('ember-data/-private/system/model/model', ['exports', 'ember', 'ember-dat
4902
4802
  // the computed property.
4903
4803
  var meta = value.meta();
4904
4804
 
4905
- /*
4906
- This is buggy because if the parent has never been looked up
4907
- via `modelFor` it will not have `modelName` set.
4908
- */
4909
4805
  meta.parentType = proto.constructor;
4910
4806
  }
4911
4807
  }
@@ -6180,7 +6076,7 @@ define("ember-data/-private/system/record-array-manager", ["exports", "ember", "
6180
6076
 
6181
6077
  RecordArrayManager.prototype.destroy = function destroy() {
6182
6078
  this.isDestroying = true;
6183
- _ember.default.run.schedule('actions', this, this.willDestroy);
6079
+ emberRun.schedule('actions', this, this.willDestroy);
6184
6080
  };
6185
6081
 
6186
6082
  return RecordArrayManager;
@@ -6985,6 +6881,7 @@ define('ember-data/-private/system/references/belongs-to', ['exports', 'ember-da
6985
6881
  userRef.load().then(function(user) {
6986
6882
  userRef.value() === user
6987
6883
  });
6884
+ ```
6988
6885
 
6989
6886
  @method load
6990
6887
  @return {Promise} a promise that resolves with the record in this belongs-to relationship.
@@ -7033,6 +6930,7 @@ define('ember-data/-private/system/references/belongs-to', ['exports', 'ember-da
7033
6930
  userRef.reload().then(function(user) {
7034
6931
  userRef.value() === user
7035
6932
  });
6933
+ ```
7036
6934
 
7037
6935
  @method reload
7038
6936
  @return {Promise} a promise that resolves with the record in this belongs-to relationship after the reload has completed.
@@ -7360,7 +7258,7 @@ define('ember-data/-private/system/references/has-many', ['exports', 'ember', 'e
7360
7258
  };
7361
7259
 
7362
7260
  /**
7363
- `value()` sycronously returns the current value of the has-many
7261
+ `value()` synchronously returns the current value of the has-many
7364
7262
  relationship. Unlike `record.get('relationshipName')`, calling
7365
7263
  `value()` on a reference does not trigger a fetch if the async
7366
7264
  relationship is not yet loaded. If the relationship is not loaded
@@ -7693,7 +7591,7 @@ define('ember-data/-private/system/relationship-meta', ['exports', 'ember-inflec
7693
7591
  }
7694
7592
 
7695
7593
  function relationshipFromMeta(meta) {
7696
- return {
7594
+ var result = {
7697
7595
  key: meta.key,
7698
7596
  kind: meta.kind,
7699
7597
  type: typeForRelationshipMeta(meta),
@@ -7702,6 +7600,12 @@ define('ember-data/-private/system/relationship-meta', ['exports', 'ember-inflec
7702
7600
  parentType: meta.parentType,
7703
7601
  isRelationship: true
7704
7602
  };
7603
+
7604
+ if (false) {
7605
+ result.parentType = meta.parentType;
7606
+ }
7607
+
7608
+ return result;
7705
7609
  }
7706
7610
  });
7707
7611
  define('ember-data/-private/system/relationships/belongs-to', ['exports', 'ember', 'ember-data/-private/system/normalize-model-name'], function (exports, _ember, _normalizeModelName) {
@@ -7815,13 +7719,13 @@ define('ember-data/-private/system/relationships/belongs-to', ['exports', 'ember
7815
7719
  return _ember.default.computed({
7816
7720
  get: function (key) {
7817
7721
  if (opts.hasOwnProperty('serialize')) {
7818
- (false && _ember.default.warn('You provided a serialize option on the "' + key + '" property in the "' + this._internalModel.modelName + '" class, this belongs in the serializer. See DS.Serializer and it\'s implementations http://emberjs.com/api/data/classes/DS.Serializer.html', false, {
7722
+ (false && _ember.default.warn('You provided a serialize option on the "' + key + '" property in the "' + this._internalModel.modelName + '" class, this belongs in the serializer. See DS.Serializer and it\'s implementations https://emberjs.com/api/data/classes/DS.Serializer.html', false, {
7819
7723
  id: 'ds.model.serialize-option-in-belongs-to'
7820
7724
  }));
7821
7725
  }
7822
7726
 
7823
7727
  if (opts.hasOwnProperty('embedded')) {
7824
- (false && _ember.default.warn('You provided an embedded option on the "' + key + '" property in the "' + this._internalModel.modelName + '" class, this belongs in the serializer. See DS.EmbeddedRecordsMixin http://emberjs.com/api/data/classes/DS.EmbeddedRecordsMixin.html', false, {
7728
+ (false && _ember.default.warn('You provided an embedded option on the "' + key + '" property in the "' + this._internalModel.modelName + '" class, this belongs in the serializer. See DS.EmbeddedRecordsMixin https://emberjs.com/api/data/classes/DS.EmbeddedRecordsMixin.html', false, {
7825
7729
  id: 'ds.model.embedded-option-in-belongs-to'
7826
7730
  }));
7827
7731
  }
@@ -8107,8 +8011,7 @@ define('ember-data/-private/system/relationships/relationship-payloads-manager',
8107
8011
  }
8108
8012
  }
8109
8013
 
8110
- var get = _ember.default.get;
8111
- var assert = _ember.default.assert;
8014
+ var _get = _ember.default.get;
8112
8015
 
8113
8016
  /**
8114
8017
  Manages relationship payloads for a given store, for uninitialized
@@ -8171,7 +8074,6 @@ define('ember-data/-private/system/relationships/relationship-payloads-manager',
8171
8074
  this._store = store;
8172
8075
  // cache of `RelationshipPayload`s
8173
8076
  this._cache = Object.create(null);
8174
- this._inverseLookupCache = new _relationshipPayloads.TypeCache();
8175
8077
  }
8176
8078
 
8177
8079
  /**
@@ -8192,7 +8094,9 @@ define('ember-data/-private/system/relationships/relationship-payloads-manager',
8192
8094
 
8193
8095
 
8194
8096
  RelationshipPayloadsManager.prototype.get = function get(modelName, id, relationshipName) {
8195
- var relationshipPayloads = this._getRelationshipPayloads(modelName, relationshipName, false);
8097
+ var modelClass = this._store._modelFor(modelName);
8098
+ var relationshipsByName = _get(modelClass, 'relationshipsByName');
8099
+ var relationshipPayloads = this._getRelationshipPayloads(modelName, relationshipName, modelClass, relationshipsByName, false);
8196
8100
  return relationshipPayloads && relationshipPayloads.get(modelName, id, relationshipName);
8197
8101
  };
8198
8102
 
@@ -8203,8 +8107,10 @@ define('ember-data/-private/system/relationships/relationship-payloads-manager',
8203
8107
  return;
8204
8108
  }
8205
8109
 
8110
+ var modelClass = this._store._modelFor(modelName);
8111
+ var relationshipsByName = _get(modelClass, 'relationshipsByName');
8206
8112
  Object.keys(relationshipsData).forEach(function (key) {
8207
- var relationshipPayloads = _this._getRelationshipPayloads(modelName, key, true);
8113
+ var relationshipPayloads = _this._getRelationshipPayloads(modelName, key, modelClass, relationshipsByName, true);
8208
8114
  if (relationshipPayloads) {
8209
8115
  relationshipPayloads.push(modelName, id, key, relationshipsData[key]);
8210
8116
  }
@@ -8215,153 +8121,51 @@ define('ember-data/-private/system/relationships/relationship-payloads-manager',
8215
8121
  var _this2 = this;
8216
8122
 
8217
8123
  var modelClass = this._store._modelFor(modelName);
8218
- var relationshipsByName = get(modelClass, 'relationshipsByName');
8124
+ var relationshipsByName = _get(modelClass, 'relationshipsByName');
8219
8125
  relationshipsByName.forEach(function (_, relationshipName) {
8220
- var relationshipPayloads = _this2._getRelationshipPayloads(modelName, relationshipName, false);
8126
+ var relationshipPayloads = _this2._getRelationshipPayloads(modelName, relationshipName, modelClass, relationshipsByName, false);
8221
8127
  if (relationshipPayloads) {
8222
8128
  relationshipPayloads.unload(modelName, id, relationshipName);
8223
8129
  }
8224
8130
  });
8225
8131
  };
8226
8132
 
8227
- RelationshipPayloadsManager.prototype._getRelationshipPayloads = function _getRelationshipPayloads(modelName, relationshipName, init) {
8228
- var relInfo = this.getRelationshipInfo(modelName, relationshipName);
8229
-
8230
- if (relInfo === null) {
8133
+ RelationshipPayloadsManager.prototype._getRelationshipPayloads = function _getRelationshipPayloads(modelName, relationshipName, modelClass, relationshipsByName, init) {
8134
+ if (!relationshipsByName.has(relationshipName)) {
8231
8135
  return;
8232
8136
  }
8233
8137
 
8234
- var cache = this._cache[relInfo.lhs_key];
8235
-
8236
- if (!cache && init) {
8237
- return this._initializeRelationshipPayloads(relInfo);
8138
+ var key = modelName + ':' + relationshipName;
8139
+ if (!this._cache[key] && init) {
8140
+ return this._initializeRelationshipPayloads(modelName, relationshipName, modelClass, relationshipsByName);
8238
8141
  }
8239
8142
 
8240
- return cache;
8143
+ return this._cache[key];
8241
8144
  };
8242
8145
 
8243
- RelationshipPayloadsManager.prototype.getRelationshipInfo = function getRelationshipInfo(modelName, relationshipName) {
8244
- var inverseCache = this._inverseLookupCache;
8245
- var store = this._store;
8246
- var cached = inverseCache.get(modelName, relationshipName);
8247
-
8248
- // CASE: We have a cached resolution (null if no relationship exists)
8249
- if (cached !== undefined) {
8250
- return cached;
8251
- }
8252
-
8253
- var modelClass = store._modelFor(modelName);
8254
- var relationshipsByName = get(modelClass, 'relationshipsByName');
8255
-
8256
- // CASE: We don't have a relationship at all
8257
- if (!relationshipsByName.has(relationshipName)) {
8258
- inverseCache.set(modelName, relationshipName, null);
8259
- return null;
8260
- }
8261
-
8262
- var inverseMeta = modelClass.inverseFor(relationshipName, store);
8146
+ RelationshipPayloadsManager.prototype._initializeRelationshipPayloads = function _initializeRelationshipPayloads(modelName, relationshipName, modelClass, relationshipsByName) {
8263
8147
  var relationshipMeta = relationshipsByName.get(relationshipName);
8264
- var selfIsPolymorphic = relationshipMeta.options !== undefined && relationshipMeta.options.polymorphic === true;
8265
- var inverseBaseModelName = relationshipMeta.type;
8266
-
8267
- // CASE: We have no inverse
8268
- if (!inverseMeta) {
8269
- var _info = {
8270
- lhs_key: modelName + ':' + relationshipName,
8271
- lhs_modelNames: [modelName],
8272
- lhs_baseModelName: modelName,
8273
- lhs_relationshipName: relationshipName,
8274
- lhs_relationshipMeta: relationshipMeta,
8275
- lhs_isPolymorphic: selfIsPolymorphic,
8276
- rhs_key: '',
8277
- rhs_modelNames: [],
8278
- rhs_baseModelName: inverseBaseModelName,
8279
- rhs_relationshipName: '',
8280
- rhs_relationshipMeta: null,
8281
- rhs_isPolymorphic: false,
8282
- hasInverse: false,
8283
- isSelfReferential: false, // modelName === inverseBaseModelName,
8284
- isReflexive: false
8285
- };
8286
-
8287
- inverseCache.set(modelName, relationshipName, _info);
8288
-
8289
- return _info;
8290
- }
8291
-
8292
- // CASE: We do have an inverse
8293
-
8294
- var inverseRelationshipName = inverseMeta.name;
8295
- var inverseRelationshipMeta = get(inverseMeta.type, 'relationshipsByName').get(inverseRelationshipName);
8296
- var baseModelName = inverseRelationshipMeta.type;
8297
- var isSelfReferential = baseModelName === inverseBaseModelName;
8298
-
8299
- // TODO we want to assert this but this breaks all of our shoddily written tests
8300
- /*
8301
- if (DEBUG) {
8302
- let inverseDoubleCheck = inverseMeta.type.inverseFor(inverseRelationshipName, store);
8303
- assert(`The ${inverseBaseModelName}:${inverseRelationshipName} relationship declares 'inverse: null', but it was resolved as the inverse for ${baseModelName}:${relationshipName}.`, inverseDoubleCheck);
8148
+ var inverseMeta = modelClass.inverseFor(relationshipName, this._store);
8149
+
8150
+ var inverseModelName = void 0;
8151
+ var inverseRelationshipName = void 0;
8152
+ var inverseRelationshipMeta = void 0;
8153
+
8154
+ // figure out the inverse relationship; we need two things
8155
+ // a) the inverse model name
8156
+ //- b) the name of the inverse relationship
8157
+ if (inverseMeta) {
8158
+ inverseRelationshipName = inverseMeta.name;
8159
+ inverseModelName = relationshipMeta.type;
8160
+ inverseRelationshipMeta = _get(inverseMeta.type, 'relationshipsByName').get(inverseRelationshipName);
8161
+ } else {
8162
+ // relationship has no inverse
8163
+ inverseModelName = inverseRelationshipName = '';
8164
+ inverseRelationshipMeta = null;
8304
8165
  }
8305
- */
8306
8166
 
8307
- // CASE: We may have already discovered the inverse for the baseModelName
8308
- // CASE: We have already discovered the inverse
8309
- cached = inverseCache.get(baseModelName, relationshipName) || inverseCache.get(inverseBaseModelName, inverseRelationshipName);
8310
- if (cached) {
8311
- // TODO this assert can be removed if the above assert is enabled
8312
- assert('The ' + inverseBaseModelName + ':' + inverseRelationshipName + ' relationship declares \'inverse: null\', but it was resolved as the inverse for ' + baseModelName + ':' + relationshipName + '.', cached.hasInverse !== false);
8313
-
8314
- var isLHS = cached.lhs_baseModelName === baseModelName;
8315
- var modelNames = isLHS ? cached.lhs_modelNames : cached.rhs_modelNames;
8316
- // make this lookup easier in the future by caching the key
8317
- modelNames.push(modelName);
8318
- inverseCache.set(modelName, relationshipName, cached);
8319
-
8320
- return cached;
8321
- }
8322
-
8323
- var info = {
8324
- lhs_key: baseModelName + ':' + relationshipName,
8325
- lhs_modelNames: [modelName],
8326
- lhs_baseModelName: baseModelName,
8327
- lhs_relationshipName: relationshipName,
8328
- lhs_relationshipMeta: relationshipMeta,
8329
- lhs_isPolymorphic: selfIsPolymorphic,
8330
- rhs_key: inverseBaseModelName + ':' + inverseRelationshipName,
8331
- rhs_modelNames: [],
8332
- rhs_baseModelName: inverseBaseModelName,
8333
- rhs_relationshipName: inverseRelationshipName,
8334
- rhs_relationshipMeta: inverseRelationshipMeta,
8335
- rhs_isPolymorphic: inverseRelationshipMeta.options !== undefined && inverseRelationshipMeta.options.polymorphic === true,
8336
- hasInverse: true,
8337
- isSelfReferential: isSelfReferential,
8338
- isReflexive: isSelfReferential && relationshipName === inverseRelationshipName
8339
- };
8340
-
8341
- // Create entries for the baseModelName as well as modelName to speed up
8342
- // inverse lookups
8343
- inverseCache.set(baseModelName, relationshipName, info);
8344
- inverseCache.set(modelName, relationshipName, info);
8345
-
8346
- // Greedily populate the inverse
8347
- inverseCache.set(inverseBaseModelName, inverseRelationshipName, info);
8348
-
8349
- return info;
8350
- };
8351
-
8352
- RelationshipPayloadsManager.prototype._initializeRelationshipPayloads = function _initializeRelationshipPayloads(relInfo) {
8353
- var lhsKey = relInfo.lhs_key;
8354
- var rhsKey = relInfo.rhs_key;
8355
- var existingPayloads = this._cache[lhsKey];
8356
-
8357
- if (relInfo.hasInverse === true && relInfo.rhs_isPolymorphic === true) {
8358
- existingPayloads = this._cache[rhsKey];
8359
-
8360
- if (existingPayloads !== undefined) {
8361
- this._cache[lhsKey] = existingPayloads;
8362
- return existingPayloads;
8363
- }
8364
- }
8167
+ var lhsKey = modelName + ':' + relationshipName;
8168
+ var rhsKey = inverseModelName + ':' + inverseRelationshipName;
8365
8169
 
8366
8170
  // populate the cache for both sides of the relationship, as they both use
8367
8171
  // the same `RelationshipPayloads`.
@@ -8369,13 +8173,7 @@ define('ember-data/-private/system/relationships/relationship-payloads-manager',
8369
8173
  // This works out better than creating a single common key, because to
8370
8174
  // compute that key we would need to do work to look up the inverse
8371
8175
  //
8372
- var cache = this._cache[lhsKey] = new _relationshipPayloads.default(relInfo);
8373
-
8374
- if (relInfo.hasInverse === true) {
8375
- this._cache[rhsKey] = cache;
8376
- }
8377
-
8378
- return cache;
8176
+ return this._cache[lhsKey] = this._cache[rhsKey] = new _relationshipPayloads.default(this._store, modelName, relationshipName, relationshipMeta, inverseModelName, inverseRelationshipName, inverseRelationshipMeta);
8379
8177
  };
8380
8178
 
8381
8179
  return RelationshipPayloadsManager;
@@ -8388,6 +8186,12 @@ define('ember-data/-private/system/relationships/relationship-payloads', ['expor
8388
8186
 
8389
8187
  exports.__esModule = true;
8390
8188
 
8189
+ function _classCallCheck(instance, Constructor) {
8190
+ if (!(instance instanceof Constructor)) {
8191
+ throw new TypeError("Cannot call a class as a function");
8192
+ }
8193
+ }
8194
+
8391
8195
  var _createClass = function () {
8392
8196
  function defineProperties(target, props) {
8393
8197
  for (var i = 0; i < props.length; i++) {
@@ -8406,61 +8210,37 @@ define('ember-data/-private/system/relationships/relationship-payloads', ['expor
8406
8210
  };
8407
8211
  }();
8408
8212
 
8409
- function _classCallCheck(instance, Constructor) {
8410
- if (!(instance instanceof Constructor)) {
8411
- throw new TypeError("Cannot call a class as a function");
8412
- }
8413
- }
8414
-
8415
- var TypeCache = exports.TypeCache = function () {
8416
- function TypeCache() {
8417
- _classCallCheck(this, TypeCache);
8418
-
8419
- this.types = Object.create(null);
8420
- }
8421
-
8422
- TypeCache.prototype.get = function get(modelName, id) {
8423
- var types = this.types;
8424
-
8425
-
8426
- if (types[modelName] !== undefined) {
8427
- return types[modelName][id];
8428
- }
8429
- };
8430
-
8431
- TypeCache.prototype.set = function set(modelName, id, payload) {
8432
- var types = this.types;
8433
-
8434
- var typeMap = types[modelName];
8435
-
8436
- if (typeMap === undefined) {
8437
- typeMap = types[modelName] = Object.create(null);
8438
- }
8439
-
8440
- typeMap[id] = payload;
8441
- };
8442
-
8443
- TypeCache.prototype.delete = function _delete(modelName, id) {
8444
- var types = this.types;
8445
-
8446
-
8447
- if (types[modelName] !== undefined) {
8448
- delete types[modelName][id];
8449
- }
8450
- };
8451
-
8452
- return TypeCache;
8453
- }();
8454
-
8455
8213
  var RelationshipPayloads = function () {
8456
- function RelationshipPayloads(relInfo) {
8214
+ function RelationshipPayloads(store, modelName, relationshipName, relationshipMeta, inverseModelName, inverseRelationshipName, inverseRelationshipMeta) {
8457
8215
  _classCallCheck(this, RelationshipPayloads);
8458
8216
 
8459
- this._relInfo = relInfo;
8217
+ this._store = store;
8218
+
8219
+ this._lhsModelName = modelName;
8220
+ this._lhsRelationshipName = relationshipName;
8221
+ this._lhsRelationshipMeta = relationshipMeta;
8222
+
8223
+ this._rhsModelName = inverseModelName;
8224
+ this._rhsRelationshipName = inverseRelationshipName;
8225
+ this._rhsRelationshipMeta = inverseRelationshipMeta;
8460
8226
 
8461
8227
  // a map of id -> payloads for the left hand side of the relationship.
8462
- this.lhs_payloads = new TypeCache();
8463
- this.rhs_payloads = relInfo.isReflexive ? this.lhs_payloads : new TypeCache();
8228
+ this._lhsPayloads = Object.create(null);
8229
+ if (modelName !== inverseModelName || relationshipName !== inverseRelationshipName) {
8230
+ // The common case of a non-reflexive relationship, or a reflexive
8231
+ // relationship whose inverse is not itself
8232
+ this._rhsPayloads = Object.create(null);
8233
+ this._isReflexive = false;
8234
+ } else {
8235
+ // Edge case when we have a reflexive relationship to itself
8236
+ // eg user hasMany friends inverse friends
8237
+ //
8238
+ // In this case there aren't really two sides to the relationship, but
8239
+ // we set `_rhsPayloads = _lhsPayloads` to make things easier to reason
8240
+ // about
8241
+ this._rhsPayloads = this._lhsPayloads;
8242
+ this._isReflexive = true;
8243
+ }
8464
8244
 
8465
8245
  // When we push relationship payloads, just stash them in a queue until
8466
8246
  // somebody actually asks for one of them.
@@ -8471,22 +8251,22 @@ define('ember-data/-private/system/relationships/relationship-payloads', ['expor
8471
8251
  }
8472
8252
 
8473
8253
  /**
8474
- Get the payload for the relationship of an individual record.
8475
- This might return the raw payload as pushed into the store, or one computed
8476
- from the payload of the inverse relationship.
8477
- @method
8478
- */
8254
+ Get the payload for the relationship of an individual record.
8255
+ This might return the raw payload as pushed into the store, or one computed
8256
+ from the payload of the inverse relationship.
8257
+ @method
8258
+ */
8479
8259
 
8480
8260
 
8481
8261
  RelationshipPayloads.prototype.get = function get(modelName, id, relationshipName) {
8482
8262
  this._flushPending();
8483
8263
 
8484
8264
  if (this._isLHS(modelName, relationshipName)) {
8485
- return this.lhs_payloads.get(modelName, id);
8265
+ return this._lhsPayloads[id];
8486
8266
  } else {
8487
- (false && Ember.assert(modelName + ':' + relationshipName + ' is not either side of this relationship, ' + this._relInfo.lhs_key + '<->' + this._relInfo.rhs_key, this._isRHS(modelName, relationshipName)));
8267
+ (false && Ember.assert(modelName + ':' + relationshipName + ' is not either side of this relationship, ' + this._lhsModelName + ':' + this._lhsRelationshipName + '<->' + this._rhsModelName + ':' + this._rhsRelationshipName, this._isRHS(modelName, relationshipName)));
8488
8268
 
8489
- return this.rhs_payloads.get(modelName, id);
8269
+ return this._rhsPayloads[id];
8490
8270
  }
8491
8271
  };
8492
8272
 
@@ -8498,40 +8278,20 @@ define('ember-data/-private/system/relationships/relationship-payloads', ['expor
8498
8278
  this._flushPending();
8499
8279
 
8500
8280
  if (this._isLHS(modelName, relationshipName)) {
8501
- delete this.lhs_payloads.delete(modelName, id);
8281
+ delete this._lhsPayloads[id];
8502
8282
  } else {
8503
- (false && Ember.assert(modelName + ':' + relationshipName + ' is not either side of this relationship, ' + this._relInfo.lhs_baseModelName + ':' + this._relInfo.lhs_relationshipName + '<->' + this._relInfo.rhs_baseModelName + ':' + this._relInfo.rhs_relationshipName, this._isRHS(modelName, relationshipName)));
8283
+ (false && Ember.assert(modelName + ':' + relationshipName + ' is not either side of this relationship, ' + this._lhsModelName + ':' + this._lhsRelationshipName + '<->' + this._rhsModelName + ':' + this._rhsRelationshipName, this._isRHS(modelName, relationshipName)));
8504
8284
 
8505
- delete this.rhs_payloads.delete(modelName, id);
8285
+ delete this._rhsPayloads[id];
8506
8286
  }
8507
8287
  };
8508
8288
 
8509
8289
  RelationshipPayloads.prototype._isLHS = function _isLHS(modelName, relationshipName) {
8510
- var relInfo = this._relInfo;
8511
- var isSelfReferential = relInfo.isSelfReferential;
8512
- var isRelationship = relationshipName === relInfo.lhs_relationshipName;
8513
-
8514
- if (isRelationship === true) {
8515
- return isSelfReferential === true || // itself
8516
- modelName === relInfo.lhs_baseModelName || // base or non-polymorphic
8517
- relInfo.lhs_modelNames.indexOf(modelName) !== -1; // polymorphic
8518
- }
8519
-
8520
- return false;
8290
+ return modelName === this._lhsModelName && relationshipName === this._lhsRelationshipName;
8521
8291
  };
8522
8292
 
8523
8293
  RelationshipPayloads.prototype._isRHS = function _isRHS(modelName, relationshipName) {
8524
- var relInfo = this._relInfo;
8525
- var isSelfReferential = relInfo.isSelfReferential;
8526
- var isRelationship = relationshipName === relInfo.rhs_relationshipName;
8527
-
8528
- if (isRelationship === true) {
8529
- return isSelfReferential === true || // itself
8530
- modelName === relInfo.rhs_baseModelName || // base or non-polymorphic
8531
- relInfo.rhs_modelNames.indexOf(modelName) !== -1; // polymorphic
8532
- }
8533
-
8534
- return false;
8294
+ return modelName === this._rhsModelName && relationshipName === this._rhsRelationshipName;
8535
8295
  };
8536
8296
 
8537
8297
  RelationshipPayloads.prototype._flushPending = function _flushPending() {
@@ -8552,28 +8312,26 @@ define('ember-data/-private/system/relationships/relationship-payloads', ['expor
8552
8312
  id: id,
8553
8313
  type: modelName
8554
8314
  }
8555
- };
8556
8315
 
8557
- // start flushing this individual payload. The logic is the same whether
8558
- // it's for the left hand side of the relationship or the right hand side,
8559
- // except the role of primary and inverse idToPayloads is reversed
8560
- //
8561
- var previousPayload = void 0;
8562
- var payloadMap = void 0;
8563
- var inversePayloadMap = void 0;
8316
+ // start flushing this individual payload. The logic is the same whether
8317
+ // it's for the left hand side of the relationship or the right hand side,
8318
+ // except the role of primary and inverse idToPayloads is reversed
8319
+ //
8320
+ };var previousPayload = void 0;
8321
+ var idToPayloads = void 0;
8322
+ var inverseIdToPayloads = void 0;
8564
8323
  var inverseIsMany = void 0;
8565
-
8566
8324
  if (this._isLHS(modelName, relationshipName)) {
8567
- previousPayload = this.lhs_payloads.get(modelName, id);
8568
- payloadMap = this.lhs_payloads;
8569
- inversePayloadMap = this.rhs_payloads;
8325
+ previousPayload = this._lhsPayloads[id];
8326
+ idToPayloads = this._lhsPayloads;
8327
+ inverseIdToPayloads = this._rhsPayloads;
8570
8328
  inverseIsMany = this._rhsRelationshipIsMany;
8571
8329
  } else {
8572
- (false && Ember.assert(modelName + ':' + relationshipName + ' is not either side of this relationship, ' + this._relInfo.lhs_key + '<->' + this._relInfo.rhs_key, this._isRHS(modelName, relationshipName)));
8330
+ (false && Ember.assert(modelName + ':' + relationshipName + ' is not either side of this relationship, ' + this._lhsModelName + ':' + this._lhsRelationshipName + '<->' + this._rhsModelName + ':' + this._rhsRelationshipName, this._isRHS(modelName, relationshipName)));
8573
8331
 
8574
- previousPayload = this.rhs_payloads.get(modelName, id);
8575
- payloadMap = this.rhs_payloads;
8576
- inversePayloadMap = this.lhs_payloads;
8332
+ previousPayload = this._rhsPayloads[id];
8333
+ idToPayloads = this._rhsPayloads;
8334
+ inverseIdToPayloads = this._lhsPayloads;
8577
8335
  inverseIsMany = this._lhsRelationshipIsMany;
8578
8336
  }
8579
8337
 
@@ -8617,14 +8375,14 @@ define('ember-data/-private/system/relationships/relationship-payloads', ['expor
8617
8375
  // * undefined is NOT considered new information, we should keep original state
8618
8376
  // * anything else is considered new information, and it should win
8619
8377
  if (relationshipData.data !== undefined) {
8620
- this._removeInverse(id, previousPayload, inversePayloadMap);
8378
+ this._removeInverse(id, previousPayload, inverseIdToPayloads);
8621
8379
  }
8622
- payloadMap.set(modelName, id, relationshipData);
8623
- this._populateInverse(relationshipData, inverseRelationshipData, inversePayloadMap, inverseIsMany);
8380
+ idToPayloads[id] = relationshipData;
8381
+ this._populateInverse(relationshipData, inverseRelationshipData, inverseIdToPayloads, inverseIsMany);
8624
8382
  }
8625
8383
  };
8626
8384
 
8627
- RelationshipPayloads.prototype._populateInverse = function _populateInverse(relationshipData, inversePayload, inversePayloadMap, inverseIsMany) {
8385
+ RelationshipPayloads.prototype._populateInverse = function _populateInverse(relationshipData, inversePayload, inverseIdToPayloads, inverseIsMany) {
8628
8386
  if (!relationshipData.data) {
8629
8387
  // This id doesn't have an inverse, eg a belongsTo with a payload
8630
8388
  // { data: null }, so there's nothing to populate
@@ -8633,24 +8391,22 @@ define('ember-data/-private/system/relationships/relationship-payloads', ['expor
8633
8391
 
8634
8392
  if (Array.isArray(relationshipData.data)) {
8635
8393
  for (var i = 0; i < relationshipData.data.length; ++i) {
8636
- var resourceIdentifier = relationshipData.data[i];
8637
- this._addToInverse(inversePayload, resourceIdentifier, inversePayloadMap, inverseIsMany);
8394
+ var inverseId = relationshipData.data[i].id;
8395
+ this._addToInverse(inversePayload, inverseId, inverseIdToPayloads, inverseIsMany);
8638
8396
  }
8639
8397
  } else {
8640
- var _resourceIdentifier = relationshipData.data;
8641
- this._addToInverse(inversePayload, _resourceIdentifier, inversePayloadMap, inverseIsMany);
8398
+ var _inverseId = relationshipData.data.id;
8399
+ this._addToInverse(inversePayload, _inverseId, inverseIdToPayloads, inverseIsMany);
8642
8400
  }
8643
8401
  };
8644
8402
 
8645
- RelationshipPayloads.prototype._addToInverse = function _addToInverse(inversePayload, resourceIdentifier, inversePayloadMap, inverseIsMany) {
8646
- var relInfo = this._relInfo;
8647
-
8648
- if (relInfo.isReflexive && inversePayload.data.id === resourceIdentifier.id) {
8403
+ RelationshipPayloads.prototype._addToInverse = function _addToInverse(inversePayload, inverseId, inverseIdToPayloads, inverseIsMany) {
8404
+ if (this._isReflexive && inversePayload.data.id === inverseId) {
8649
8405
  // eg <user:1>.friends = [{ id: 1, type: 'user' }]
8650
8406
  return;
8651
8407
  }
8652
8408
 
8653
- var existingPayload = inversePayloadMap.get(resourceIdentifier.type, resourceIdentifier.id);
8409
+ var existingPayload = inverseIdToPayloads[inverseId];
8654
8410
  var existingData = existingPayload && existingPayload.data;
8655
8411
 
8656
8412
  if (existingData) {
@@ -8660,22 +8416,22 @@ define('ember-data/-private/system/relationships/relationship-payloads', ['expor
8660
8416
  if (Array.isArray(existingData)) {
8661
8417
  existingData.push(inversePayload.data);
8662
8418
  } else {
8663
- inversePayloadMap.set(resourceIdentifier.type, resourceIdentifier.id, inversePayload);
8419
+ inverseIdToPayloads[inverseId] = inversePayload;
8664
8420
  }
8665
8421
  } else {
8666
8422
  // first time we're populating the inverse side
8667
8423
  //
8668
8424
  if (inverseIsMany) {
8669
- inversePayloadMap.set(resourceIdentifier.type, resourceIdentifier.id, {
8425
+ inverseIdToPayloads[inverseId] = {
8670
8426
  data: [inversePayload.data]
8671
- });
8427
+ };
8672
8428
  } else {
8673
- inversePayloadMap.set(resourceIdentifier.type, resourceIdentifier.id, inversePayload);
8429
+ inverseIdToPayloads[inverseId] = inversePayload;
8674
8430
  }
8675
8431
  }
8676
8432
  };
8677
8433
 
8678
- RelationshipPayloads.prototype._removeInverse = function _removeInverse(id, previousPayload, inversePayloadMap) {
8434
+ RelationshipPayloads.prototype._removeInverse = function _removeInverse(id, previousPayload, inverseIdToPayloads) {
8679
8435
  var data = previousPayload && previousPayload.data;
8680
8436
  if (!data) {
8681
8437
  // either this is the first time we've seen a payload for this id, or its
@@ -8690,16 +8446,15 @@ define('ember-data/-private/system/relationships/relationship-payloads', ['expor
8690
8446
  if (Array.isArray(data)) {
8691
8447
  // TODO: diff rather than removeall addall?
8692
8448
  for (var i = 0; i < data.length; ++i) {
8693
- var resourceIdentifier = data[i];
8694
- this._removeFromInverse(id, resourceIdentifier, inversePayloadMap);
8449
+ this._removeFromInverse(id, data[i].id, inverseIdToPayloads);
8695
8450
  }
8696
8451
  } else {
8697
- this._removeFromInverse(id, data, inversePayloadMap);
8452
+ this._removeFromInverse(id, data.id, inverseIdToPayloads);
8698
8453
  }
8699
8454
  };
8700
8455
 
8701
- RelationshipPayloads.prototype._removeFromInverse = function _removeFromInverse(id, resourceIdentifier, inversePayloads) {
8702
- var inversePayload = inversePayloads.get(resourceIdentifier.type, resourceIdentifier.id);
8456
+ RelationshipPayloads.prototype._removeFromInverse = function _removeFromInverse(id, inverseId, inversePayloads) {
8457
+ var inversePayload = inversePayloads[inverseId];
8703
8458
  var data = inversePayload && inversePayload.data;
8704
8459
 
8705
8460
  if (!data) {
@@ -8711,23 +8466,21 @@ define('ember-data/-private/system/relationships/relationship-payloads', ['expor
8711
8466
  return x.id !== id;
8712
8467
  });
8713
8468
  } else {
8714
- inversePayloads.set(resourceIdentifier.type, resourceIdentifier.id, {
8469
+ inversePayloads[inverseId] = {
8715
8470
  data: null
8716
- });
8471
+ };
8717
8472
  }
8718
8473
  };
8719
8474
 
8720
8475
  _createClass(RelationshipPayloads, [{
8721
8476
  key: '_lhsRelationshipIsMany',
8722
8477
  get: function () {
8723
- var meta = this._relInfo.lhs_relationshipMeta;
8724
- return meta !== null && meta.kind === 'hasMany';
8478
+ return this._lhsRelationshipMeta && this._lhsRelationshipMeta.kind === 'hasMany';
8725
8479
  }
8726
8480
  }, {
8727
8481
  key: '_rhsRelationshipIsMany',
8728
8482
  get: function () {
8729
- var meta = this._relInfo.rhs_relationshipMeta;
8730
- return meta !== null && meta.kind === 'hasMany';
8483
+ return this._rhsRelationshipMeta && this._rhsRelationshipMeta.kind === 'hasMany';
8731
8484
  }
8732
8485
  }]);
8733
8486
 
@@ -9183,7 +8936,7 @@ define('ember-data/-private/system/relationships/state/has-many', ['exports', 'e
9183
8936
  }
9184
8937
  this.__loadingPromise.set('promise', promise);
9185
8938
  } else {
9186
- this.__loadingPromise = new _promiseProxies.PromiseManyArray({
8939
+ this.__loadingPromise = _promiseProxies.PromiseManyArray.create({
9187
8940
  promise: promise,
9188
8941
  content: content
9189
8942
  });
@@ -9380,6 +9133,7 @@ define('ember-data/-private/system/relationships/state/has-many', ['exports', 'e
9380
9133
  _this2.store._backburner.join(function () {
9381
9134
  _this2.updateInternalModelsFromAdapter(records);
9382
9135
  _this2.manyArray.set('isLoaded', true);
9136
+ _this2.setHasData(true);
9383
9137
  });
9384
9138
  return _this2.manyArray;
9385
9139
  });
@@ -9827,6 +9581,7 @@ define('ember-data/-private/system/relationships/state/relationship', ['exports'
9827
9581
  };
9828
9582
 
9829
9583
  Relationship.prototype.updateInternalModelsFromAdapter = function updateInternalModelsFromAdapter(internalModels) {
9584
+ this.setHasData(true);
9830
9585
  //TODO(Igor) move this to a proper place
9831
9586
  //TODO Once we have adapter support, we need to handle updated and canonical changes
9832
9587
  this.computeChanges(internalModels);
@@ -10289,16 +10044,16 @@ define("ember-data/-private/system/snapshot", ["exports", "ember"], function (ex
10289
10044
 
10290
10045
  exports.default = Snapshot;
10291
10046
  });
10292
- define('ember-data/-private/system/store', ['exports', 'ember', 'ember-data/-private/adapters/errors', 'ember-data/-private/system/model/model', 'ember-data/-private/system/normalize-model-name', 'ember-data/-private/system/identity-map', 'ember-data/-private/system/promise-proxies', 'ember-data/-private/system/store/common', 'ember-data/-private/system/store/serializer-response', 'ember-data/-private/system/store/serializers', 'ember-data/-private/system/relationships/relationship-payloads-manager', 'ember-data/-private/system/store/finders', 'ember-data/-private/utils', 'ember-data/-private/system/coerce-id', 'ember-data/-private/system/record-array-manager', 'ember-data/-private/system/store/container-instance-cache', 'ember-data/-private/system/model/internal-model', 'ember-data/-private/features'], function (exports, _ember, _errors, _model, _normalizeModelName, _identityMap, _promiseProxies, _common, _serializerResponse, _serializers, _relationshipPayloadsManager, _finders, _utils, _coerceId, _recordArrayManager, _containerInstanceCache, _internalModel5, _features) {
10047
+ define('ember-data/-private/system/store', ['exports', 'ember', 'ember-data/-private/adapters/errors', 'ember-data/-debug', 'ember-data/-private/system/model/model', 'ember-data/-private/system/normalize-model-name', 'ember-data/-private/system/identity-map', 'ember-data/-private/system/promise-proxies', 'ember-data/-private/system/store/common', 'ember-data/-private/system/store/serializer-response', 'ember-data/-private/system/store/serializers', 'ember-data/-private/system/relationships/relationship-payloads-manager', 'ember-data/-private/system/store/finders', 'ember-data/-private/utils', 'ember-data/-private/system/coerce-id', 'ember-data/-private/system/record-array-manager', 'ember-data/-private/system/store/container-instance-cache', 'ember-data/-private/system/model/internal-model', 'ember-data/-private/features'], function (exports, _ember, _errors, _debug, _model, _normalizeModelName, _identityMap, _promiseProxies, _common, _serializerResponse, _serializers, _relationshipPayloadsManager, _finders, _utils, _coerceId, _recordArrayManager, _containerInstanceCache, _internalModel5, _features) {
10293
10048
  'use strict';
10294
10049
 
10295
10050
  exports.__esModule = true;
10296
10051
  exports.Store = undefined;
10052
+ /**
10053
+ @module ember-data
10054
+ */
10297
10055
 
10298
-
10299
- var badIdFormatAssertion = '`id` passed to `findRecord()` has to be non-empty string or number'; /**
10300
- @module ember-data
10301
- */
10056
+ var badIdFormatAssertion = '`id` passed to `findRecord()` has to be non-empty string or number';
10302
10057
 
10303
10058
  var A = _ember.default.A,
10304
10059
  Backburner = _ember.default._Backburner,
@@ -10411,7 +10166,7 @@ define('ember-data/-private/system/store', ['exports', 'ember', 'ember-data/-pri
10411
10166
 
10412
10167
  Note: When creating a new record using any of the above methods
10413
10168
  Ember Data will update `DS.RecordArray`s such as those returned by
10414
- `store#peekAll()`, `store#findAll()` or `store#filter()`. This means any
10169
+ `store#peekAll()` or `store#findAll()`. This means any
10415
10170
  data bindings or computed properties that depend on the RecordArray
10416
10171
  will automatically be synced to include the new or updated record
10417
10172
  values.
@@ -10809,7 +10564,7 @@ define('ember-data/-private/system/store', ['exports', 'ember', 'ember-data/-pri
10809
10564
  See [peekRecord](#method_peekRecord) to get the cached version of a record.
10810
10565
  ### Retrieving Related Model Records
10811
10566
  If you use an adapter such as Ember's default
10812
- [`JSONAPIAdapter`](http://emberjs.com/api/data/classes/DS.JSONAPIAdapter.html)
10567
+ [`JSONAPIAdapter`](https://emberjs.com/api/data/classes/DS.JSONAPIAdapter.html)
10813
10568
  that supports the [JSON API specification](http://jsonapi.org/) and if your server
10814
10569
  endpoint supports the use of an
10815
10570
  ['include' query parameter](http://jsonapi.org/format/#fetching-includes),
@@ -11380,7 +11135,7 @@ define('ember-data/-private/system/store', ['exports', 'ember', 'ember-data/-pri
11380
11135
  Parameters: { "ids" => ["1", "2", "3"] }
11381
11136
  ```
11382
11137
  This method returns a promise, which is resolved with an
11383
- [`AdapterPopulatedRecordArray`](http://emberjs.com/api/data/classes/DS.AdapterPopulatedRecordArray.html)
11138
+ [`AdapterPopulatedRecordArray`](https://emberjs.com/api/data/classes/DS.AdapterPopulatedRecordArray.html)
11384
11139
  once the server returns.
11385
11140
  @since 1.13.0
11386
11141
  @method query
@@ -11631,7 +11386,7 @@ define('ember-data/-private/system/store', ['exports', 'ember', 'ember-data/-pri
11631
11386
  store, without waiting until a reload is finished.
11632
11387
  ### Retrieving Related Model Records
11633
11388
  If you use an adapter such as Ember's default
11634
- [`JSONAPIAdapter`](http://emberjs.com/api/data/classes/DS.JSONAPIAdapter.html)
11389
+ [`JSONAPIAdapter`](https://emberjs.com/api/data/classes/DS.JSONAPIAdapter.html)
11635
11390
  that supports the [JSON API specification](http://jsonapi.org/) and if your server
11636
11391
  endpoint supports the use of an
11637
11392
  ['include' query parameter](http://jsonapi.org/format/#fetching-includes),
@@ -11932,7 +11687,8 @@ define('ember-data/-private/system/store', ['exports', 'ember', 'ember-data/-pri
11932
11687
  var operation = void 0;
11933
11688
 
11934
11689
  if (internalModel.currentState.stateName === 'root.deleted.saved') {
11935
- return resolver.resolve();
11690
+ resolver.resolve();
11691
+ continue;
11936
11692
  } else if (internalModel.isNew()) {
11937
11693
  operation = 'createRecord';
11938
11694
  } else if (internalModel.isDeleted()) {
@@ -12133,7 +11889,7 @@ define('ember-data/-private/system/store', ['exports', 'ember', 'ember-data/-pri
12133
11889
  Returns the model class for the particular `modelName`.
12134
11890
  The class of a model might be useful if you want to get a list of all the
12135
11891
  relationship names of the model, see
12136
- [`relationshipNames`](http://emberjs.com/api/data/classes/DS.Model.html#property_relationshipNames)
11892
+ [`relationshipNames`](https://emberjs.com/api/data/classes/DS.Model.html#property_relationshipNames)
12137
11893
  for example.
12138
11894
  @method modelFor
12139
11895
  @param {String} modelName
@@ -12466,9 +12222,10 @@ define('ember-data/-private/system/store', ['exports', 'ember', 'ember-data/-pri
12466
12222
  // payload push. In the common case where we are pushing many more
12467
12223
  // instances than types we want to minimize the cost of looking up the
12468
12224
  // inverse map and the overhead of Ember.get adds up.
12469
- var modelNameToInverseMap = Object.create(null);
12225
+ var modelNameToInverseMap = void 0;
12470
12226
 
12471
12227
  for (var i = 0, l = pushed.length; i < l; i += 2) {
12228
+ modelNameToInverseMap = modelNameToInverseMap || Object.create(null);
12472
12229
  // This will convert relationships specified as IDs into DS.Model instances
12473
12230
  // (possibly unloaded) and also create the data structures used to track
12474
12231
  // relationships.
@@ -12888,13 +12645,8 @@ define('ember-data/-private/system/store', ['exports', 'ember', 'ember-data/-pri
12888
12645
  }
12889
12646
 
12890
12647
  function setupRelationships(store, internalModel, data, modelNameToInverseMap) {
12891
- var relationships = internalModel._relationships;
12892
-
12893
- internalModel.type.eachRelationship(function (relationshipName) {
12894
- if (!data.relationships[relationshipName]) {
12895
- return;
12896
- }
12897
-
12648
+ Object.keys(data.relationships).forEach(function (relationshipName) {
12649
+ var relationships = internalModel._relationships;
12898
12650
  var relationshipRequiresNotification = relationships.has(relationshipName) || isInverseRelationshipInitialized(store, internalModel, data, relationshipName, modelNameToInverseMap);
12899
12651
 
12900
12652
  if (relationshipRequiresNotification) {
@@ -13105,7 +12857,7 @@ define('ember-data/-private/system/store/finders', ['exports', 'ember', 'ember-d
13105
12857
  var serializer = (0, _serializers.serializerForAdapter)(store, adapter, modelName);
13106
12858
  var payload = (0, _serializerResponse.normalizeResponseHelper)(serializer, store, modelClass, adapterPayload, id, 'findRecord');
13107
12859
  (false && _ember.default.assert('Ember Data expected the primary data returned from a \'findRecord\' response to be an object but instead it found an array.', !Array.isArray(payload.data)));
13108
- (false && _ember.default.warn('You requested a record of type \'' + modelName + '\' with id \'' + id + '\' but the adapter returned a payload with primary data having an id of \'' + payload.data.id + '\'. Use \'store.findRecord()\' when the requested id is the same as the one returned by the adapter. In other cases use \'store.queryRecord()\' instead http://emberjs.com/api/data/classes/DS.Store.html#method_queryRecord', payload.data.id === id, {
12860
+ (false && _ember.default.warn('You requested a record of type \'' + modelName + '\' with id \'' + id + '\' but the adapter returned a payload with primary data having an id of \'' + payload.data.id + '\'. Use \'store.findRecord()\' when the requested id is the same as the one returned by the adapter. In other cases use \'store.queryRecord()\' instead https://emberjs.com/api/data/classes/DS.Store.html#method_queryRecord', payload.data.id === id, {
13109
12861
  id: 'ds.store.findRecord.id-mismatch'
13110
12862
  }));
13111
12863
 
@@ -13413,7 +13165,12 @@ define('ember-data/-private/utils', ['exports', 'ember'], function (exports, _em
13413
13165
 
13414
13166
  if (owner && owner.lookupFactory && !owner._lookupFactory) {
13415
13167
  // `owner` is a container, we are just making this work
13416
- owner._lookupFactory = owner.lookupFactory;
13168
+ owner._lookupFactory = function () {
13169
+ var _owner;
13170
+
13171
+ return (_owner = owner).lookupFactory.apply(_owner, arguments);
13172
+ };
13173
+
13417
13174
  owner.register = function () {
13418
13175
  var registry = owner.registry || owner._registry || owner;
13419
13176
 
@@ -14066,7 +13823,7 @@ define('ember-data/adapters/errors', ['exports', 'ember-data/-private'], functio
14066
13823
  }
14067
13824
  });
14068
13825
  });
14069
- define('ember-data/adapters/json-api', ['exports', 'ember', 'ember-data/adapters/rest', 'ember-data/-private'], function (exports, _ember, _rest, _private) {
13826
+ define('ember-data/adapters/json-api', ['exports', 'ember', 'ember-inflector', 'ember-data/adapters/rest', 'ember-data/-private', 'ember-data/-debug'], function (exports, _ember, _emberInflector, _rest, _private, _debug) {
14070
13827
  'use strict';
14071
13828
 
14072
13829
  exports.__esModule = true;
@@ -14286,7 +14043,7 @@ define('ember-data/adapters/json-api', ['exports', 'ember', 'ember-data/adapters
14286
14043
  },
14287
14044
  pathForType: function (modelName) {
14288
14045
  var dasherized = _ember.default.String.dasherize(modelName);
14289
- return _ember.default.String.pluralize(dasherized);
14046
+ return (0, _emberInflector.pluralize)(dasherized);
14290
14047
  },
14291
14048
  updateRecord: function (store, type, snapshot) {
14292
14049
  if ((0, _private.isEnabled)('ds-improved-ajax') && !this._hasCustomizedAjax()) {
@@ -14385,12 +14142,13 @@ define('ember-data/adapters/json-api', ['exports', 'ember', 'ember-data/adapters
14385
14142
 
14386
14143
  exports.default = JSONAPIAdapter;
14387
14144
  });
14388
- define('ember-data/adapters/rest', ['exports', 'ember', 'ember-data/adapter', 'ember-data/-private'], function (exports, _ember, _adapter, _private) {
14145
+ define('ember-data/adapters/rest', ['exports', 'ember', 'ember-data/adapter', 'ember-data/-private', 'ember-data/-debug'], function (exports, _ember, _adapter, _private, _debug) {
14389
14146
  'use strict';
14390
14147
 
14391
14148
  exports.__esModule = true;
14392
14149
  var MapWithDefault = _ember.default.MapWithDefault,
14393
- get = _ember.default.get;
14150
+ get = _ember.default.get,
14151
+ run = _ember.default.run;
14394
14152
 
14395
14153
 
14396
14154
  var Promise = _ember.default.RSVP.Promise;
@@ -14995,7 +14753,7 @@ define('ember-data/adapters/rest', ['exports', 'ember', 'ember-data/adapter', 'e
14995
14753
 
14996
14754
  hash.success = function (payload, textStatus, jqXHR) {
14997
14755
  var response = ajaxSuccess(adapter, jqXHR, payload, requestData);
14998
- _ember.default.run.join(null, resolve, response);
14756
+ run.join(null, resolve, response);
14999
14757
  };
15000
14758
 
15001
14759
  hash.error = function (jqXHR, textStatus, errorThrown) {
@@ -15004,7 +14762,7 @@ define('ember-data/adapters/rest', ['exports', 'ember', 'ember-data/adapter', 'e
15004
14762
  errorThrown: errorThrown
15005
14763
  };
15006
14764
  var error = ajaxError(adapter, jqXHR, requestData, responseData);
15007
- _ember.default.run.join(null, reject, error);
14765
+ run.join(null, reject, error);
15008
14766
  };
15009
14767
 
15010
14768
  adapter._ajaxRequest(hash);
@@ -15280,11 +15038,11 @@ define('ember-data/adapters/rest', ['exports', 'ember', 'ember-data/adapter', 'e
15280
15038
 
15281
15039
  var requestData = { method: method, url: url };
15282
15040
 
15283
- return new _ember.default.RSVP.Promise(function (resolve, reject) {
15041
+ return new Promise(function (resolve, reject) {
15284
15042
 
15285
15043
  hash.success = function (payload, textStatus, jqXHR) {
15286
15044
  var response = ajaxSuccess(adapter, jqXHR, payload, requestData);
15287
- _ember.default.run.join(null, resolve, response);
15045
+ run.join(null, resolve, response);
15288
15046
  };
15289
15047
 
15290
15048
  hash.error = function (jqXHR, textStatus, errorThrown) {
@@ -15293,7 +15051,7 @@ define('ember-data/adapters/rest', ['exports', 'ember', 'ember-data/adapter', 'e
15293
15051
  errorThrown: errorThrown
15294
15052
  };
15295
15053
  var error = ajaxError(adapter, jqXHR, requestData, responseData);
15296
- _ember.default.run.join(null, reject, error);
15054
+ run.join(null, reject, error);
15297
15055
  };
15298
15056
 
15299
15057
  adapter._ajaxRequest(hash);
@@ -15923,102 +15681,9 @@ define('ember-data/serializers/embedded-records-mixin', ['exports', 'ember'], fu
15923
15681
  }
15924
15682
  }
15925
15683
 
15926
- var get = _ember.default.get;
15927
- var set = _ember.default.set;
15684
+ var get = _ember.default.get,
15685
+ set = _ember.default.set;
15928
15686
  var camelize = _ember.default.String.camelize;
15929
-
15930
- /**
15931
- ## Using Embedded Records
15932
-
15933
- `DS.EmbeddedRecordsMixin` supports serializing embedded records.
15934
-
15935
- To set up embedded records, include the mixin when extending a serializer,
15936
- then define and configure embedded (model) relationships.
15937
-
15938
- Note that embedded records will serialize with the serializer for their model instead of the serializer in which they are defined.
15939
-
15940
- Below is an example of a per-type serializer (`post` type).
15941
-
15942
- ```app/serializers/post.js
15943
- import DS from 'ember-data';
15944
-
15945
- export default DS.RESTSerializer.extend(DS.EmbeddedRecordsMixin, {
15946
- attrs: {
15947
- author: { embedded: 'always' },
15948
- comments: { serialize: 'ids' }
15949
- }
15950
- });
15951
- ```
15952
- Note that this use of `{ embedded: 'always' }` is unrelated to
15953
- the `{ embedded: 'always' }` that is defined as an option on `DS.attr` as part of
15954
- defining a model while working with the `ActiveModelSerializer`. Nevertheless,
15955
- using `{ embedded: 'always' }` as an option to `DS.attr` is not a valid way to setup
15956
- embedded records.
15957
-
15958
- The `attrs` option for a resource `{ embedded: 'always' }` is shorthand for:
15959
-
15960
- ```js
15961
- {
15962
- serialize: 'records',
15963
- deserialize: 'records'
15964
- }
15965
- ```
15966
-
15967
- ### Configuring Attrs
15968
-
15969
- A resource's `attrs` option may be set to use `ids`, `records` or false for the
15970
- `serialize` and `deserialize` settings.
15971
-
15972
- The `attrs` property can be set on the `ApplicationSerializer` or a per-type
15973
- serializer.
15974
-
15975
- In the case where embedded JSON is expected while extracting a payload (reading)
15976
- the setting is `deserialize: 'records'`, there is no need to use `ids` when
15977
- extracting as that is the default behavior without this mixin if you are using
15978
- the vanilla `EmbeddedRecordsMixin`. Likewise, to embed JSON in the payload while
15979
- serializing `serialize: 'records'` is the setting to use. There is an option of
15980
- not embedding JSON in the serialized payload by using `serialize: 'ids'`. If you
15981
- do not want the relationship sent at all, you can use `serialize: false`.
15982
-
15983
-
15984
- ### EmbeddedRecordsMixin defaults
15985
- If you do not overwrite `attrs` for a specific relationship, the `EmbeddedRecordsMixin`
15986
- will behave in the following way:
15987
-
15988
- BelongsTo: `{ serialize: 'id', deserialize: 'id' }`
15989
- HasMany: `{ serialize: false, deserialize: 'ids' }`
15990
-
15991
- ### Model Relationships
15992
-
15993
- Embedded records must have a model defined to be extracted and serialized. Note that
15994
- when defining any relationships on your model such as `belongsTo` and `hasMany`, you
15995
- should not both specify `async: true` and also indicate through the serializer's
15996
- `attrs` attribute that the related model should be embedded for deserialization.
15997
- If a model is declared embedded for deserialization (`embedded: 'always'` or `deserialize: 'records'`),
15998
- then do not use `async: true`.
15999
-
16000
- To successfully extract and serialize embedded records the model relationships
16001
- must be setup correcty. See the
16002
- [defining relationships](/guides/models/defining-models/#toc_defining-relationships)
16003
- section of the **Defining Models** guide page.
16004
-
16005
- Records without an `id` property are not considered embedded records, model
16006
- instances must have an `id` property to be used with Ember Data.
16007
-
16008
- ### Example JSON payloads, Models and Serializers
16009
-
16010
- **When customizing a serializer it is important to grok what the customizations
16011
- are. Please read the docs for the methods this mixin provides, in case you need
16012
- to modify it to fit your specific needs.**
16013
-
16014
- For example review the docs for each method of this mixin:
16015
- * [normalize](/api/data/classes/DS.EmbeddedRecordsMixin.html#method_normalize)
16016
- * [serializeBelongsTo](/api/data/classes/DS.EmbeddedRecordsMixin.html#method_serializeBelongsTo)
16017
- * [serializeHasMany](/api/data/classes/DS.EmbeddedRecordsMixin.html#method_serializeHasMany)
16018
-
16019
- @class EmbeddedRecordsMixin
16020
- @namespace DS
16021
- */
16022
15687
  exports.default = _ember.default.Mixin.create({
16023
15688
 
16024
15689
  /**
@@ -17044,7 +16709,7 @@ define('ember-data/serializers/json-api', ['exports', 'ember', 'ember-inflector'
17044
16709
  JSONAPISerializer.reopen({
17045
16710
  willMergeMixin: function (props) {
17046
16711
  var constructor = this.constructor;
17047
- (false && _ember.default.warn('You\'ve defined \'extractMeta\' in ' + constructor.toString() + ' which is not used for serializers extending JSONAPISerializer. Read more at http://emberjs.com/api/data/classes/DS.JSONAPISerializer.html#toc_customizing-meta on how to customize meta when using JSON API.', _ember.default.isNone(props.extractMeta) || props.extractMeta === _json.default.prototype.extractMeta, {
16712
+ (false && _ember.default.warn('You\'ve defined \'extractMeta\' in ' + constructor.toString() + ' which is not used for serializers extending JSONAPISerializer. Read more at https://emberjs.com/api/data/classes/DS.JSONAPISerializer.html#toc_customizing-meta on how to customize meta when using JSON API.', _ember.default.isNone(props.extractMeta) || props.extractMeta === _json.default.prototype.extractMeta, {
17048
16713
  id: 'ds.serializer.json-api.extractMeta'
17049
16714
  }));
17050
16715
  (false && _ember.default.warn('The JSONAPISerializer does not work with the EmbeddedRecordsMixin because the JSON API spec does not describe how to format embedded resources.', !props.isEmbeddedRecordsMixin, {
@@ -17778,6 +17443,7 @@ define('ember-data/serializers/rest', ['exports', 'ember', 'ember-inflector', 'e
17778
17443
 
17779
17444
  var camelize = _ember.default.String.camelize;
17780
17445
 
17446
+
17781
17447
  /**
17782
17448
  Normally, applications will use the `RESTSerializer` by implementing
17783
17449
  the `normalize` method.
@@ -18593,7 +18259,7 @@ define("ember-data/version", ["exports"], function (exports) {
18593
18259
  "use strict";
18594
18260
 
18595
18261
  exports.__esModule = true;
18596
- exports.default = "2.15.4";
18262
+ exports.default = "2.16.0-beta.1";
18597
18263
  });
18598
18264
  define("ember-inflector", ["module", "exports", "ember", "ember-inflector/lib/system", "ember-inflector/lib/ext/string"], function (module, exports, _ember, _system) {
18599
18265
  "use strict";