ember-data-source 3.0.2 → 3.1.0.beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 597dcc9886fdc5cdbb166c0d4d120bd680b5b75e
4
- data.tar.gz: a5b9cac4299df0891fc04c08cd88b34ed95fa4d8
3
+ metadata.gz: 442c4caf0795074faa3d43e249d038608d8e8ea8
4
+ data.tar.gz: 7d1278741187c5cb9b30825a8725704a3d5cb2d5
5
5
  SHA512:
6
- metadata.gz: 449da7d60bdb77852138fb0ad3c11fd7faedee99e9703fed1029ecccb61daab8ebf8e3d82bed20bf57b8d39939305bc72a8d2a6adb9b5052f3c0c75bd24cc24f
7
- data.tar.gz: ff4163f377ffd3beed2fef38a4e9c6fd6a1321a17cc836e2c63042f56f1a9e77d87d0a68c2afa3c30b39297d9307a08077cfa931ba26e865271158e12038cd74
6
+ metadata.gz: 0d0820aaa6d2bedc1a98d2543ed176bb6122252efb9acc454158e13c522a69a769476fb964e1e35bc4d9be9fbda86ef73885c9348d3f01da996f640dd7310e60
7
+ data.tar.gz: 447a16f2a0c9aa740f9c1814470751a432d0b738228b9fed637f97f3b7f52823ad59b1f9a90ec7ff18aba5b624089e80f3e4ed97a9d40a0e2f3553db75f10fb9
@@ -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 3.0.2
9
+ * @version 3.1.0-beta.1
10
10
  */
11
11
 
12
12
  var loader, define, requireModule, require, requirejs;
@@ -1799,7 +1799,7 @@ define('ember-data/-private/system/identity-map', ['exports', 'ember-data/-priva
1799
1799
  similar to `getWithDefault` or `get` on a `MapWithDefault`
1800
1800
  @method retrieve
1801
1801
  @param modelName a previously normalized modelName
1802
- @returns {InternalModelMap} the InternalModelMap for the given modelName
1802
+ @return {InternalModelMap} the InternalModelMap for the given modelName
1803
1803
  */
1804
1804
 
1805
1805
 
@@ -1868,9 +1868,9 @@ define('ember-data/-private/system/internal-model-map', ['exports', 'ember-data/
1868
1868
  }
1869
1869
 
1870
1870
  /**
1871
- *
1872
- * @param id
1873
- * @returns {InternalModel}
1871
+ * @method get
1872
+ * @param id {String}
1873
+ * @return {InternalModel}
1874
1874
  */
1875
1875
 
1876
1876
 
@@ -4754,10 +4754,6 @@ define('ember-data/-private/system/model/model', ['exports', 'ember-data/-privat
4754
4754
  // the computed property.
4755
4755
  var meta = value.meta();
4756
4756
 
4757
- /*
4758
- This is buggy because if the parent has never been looked up
4759
- via `modelFor` it will not have `modelName` set.
4760
- */
4761
4757
  meta.parentType = proto.constructor;
4762
4758
  }
4763
4759
  }
@@ -7457,7 +7453,7 @@ define('ember-data/-private/system/references/record', ['exports', 'ember-data/-
7457
7453
  ```
7458
7454
 
7459
7455
  @method push
7460
- @param {Promise|Object}
7456
+ @param objectOrPromise {Promise|Object}
7461
7457
  @return Promise<record> a promise for the value (record or relationship)
7462
7458
  */
7463
7459
  RecordReference.prototype.push = function (objectOrPromise) {
@@ -7570,7 +7566,7 @@ define('ember-data/-private/system/relationship-meta', ['exports', 'ember-inflec
7570
7566
  }
7571
7567
 
7572
7568
  function relationshipFromMeta(meta) {
7573
- return {
7569
+ var result = {
7574
7570
  key: meta.key,
7575
7571
  kind: meta.kind,
7576
7572
  type: typeForRelationshipMeta(meta),
@@ -7579,6 +7575,12 @@ define('ember-data/-private/system/relationship-meta', ['exports', 'ember-inflec
7579
7575
  parentType: meta.parentType,
7580
7576
  isRelationship: true
7581
7577
  };
7578
+
7579
+ if (false) {
7580
+ result.parentType = meta.parentType;
7581
+ }
7582
+
7583
+ return result;
7582
7584
  }
7583
7585
  });
7584
7586
  define('ember-data/-private/system/relationships/belongs-to', ['exports', 'ember-data/-private/system/normalize-model-name'], function (exports, _normalizeModelName) {
@@ -7980,7 +7982,7 @@ define('ember-data/-private/system/relationships/relationship-payloads-manager',
7980
7982
  }
7981
7983
  }
7982
7984
 
7983
- var get = Ember.get;
7985
+ var _get = Ember.get;
7984
7986
 
7985
7987
  var RelationshipPayloadsManager = function () {
7986
7988
  function RelationshipPayloadsManager(store) {
@@ -7989,7 +7991,6 @@ define('ember-data/-private/system/relationships/relationship-payloads-manager',
7989
7991
  this._store = store;
7990
7992
  // cache of `RelationshipPayload`s
7991
7993
  this._cache = Object.create(null);
7992
- this._inverseLookupCache = new _relationshipPayloads.TypeCache();
7993
7994
  }
7994
7995
 
7995
7996
  /**
@@ -8010,7 +8011,9 @@ define('ember-data/-private/system/relationships/relationship-payloads-manager',
8010
8011
 
8011
8012
 
8012
8013
  RelationshipPayloadsManager.prototype.get = function get(modelName, id, relationshipName) {
8013
- var relationshipPayloads = this._getRelationshipPayloads(modelName, relationshipName, false);
8014
+ var modelClass = this._store._modelFor(modelName);
8015
+ var relationshipsByName = _get(modelClass, 'relationshipsByName');
8016
+ var relationshipPayloads = this._getRelationshipPayloads(modelName, relationshipName, modelClass, relationshipsByName, false);
8014
8017
  return relationshipPayloads && relationshipPayloads.get(modelName, id, relationshipName);
8015
8018
  };
8016
8019
 
@@ -8021,8 +8024,10 @@ define('ember-data/-private/system/relationships/relationship-payloads-manager',
8021
8024
  return;
8022
8025
  }
8023
8026
 
8027
+ var modelClass = this._store._modelFor(modelName);
8028
+ var relationshipsByName = _get(modelClass, 'relationshipsByName');
8024
8029
  Object.keys(relationshipsData).forEach(function (key) {
8025
- var relationshipPayloads = _this._getRelationshipPayloads(modelName, key, true);
8030
+ var relationshipPayloads = _this._getRelationshipPayloads(modelName, key, modelClass, relationshipsByName, true);
8026
8031
  if (relationshipPayloads) {
8027
8032
  relationshipPayloads.push(modelName, id, key, relationshipsData[key]);
8028
8033
  }
@@ -8033,153 +8038,51 @@ define('ember-data/-private/system/relationships/relationship-payloads-manager',
8033
8038
  var _this2 = this;
8034
8039
 
8035
8040
  var modelClass = this._store._modelFor(modelName);
8036
- var relationshipsByName = get(modelClass, 'relationshipsByName');
8041
+ var relationshipsByName = _get(modelClass, 'relationshipsByName');
8037
8042
  relationshipsByName.forEach(function (_, relationshipName) {
8038
- var relationshipPayloads = _this2._getRelationshipPayloads(modelName, relationshipName, false);
8043
+ var relationshipPayloads = _this2._getRelationshipPayloads(modelName, relationshipName, modelClass, relationshipsByName, false);
8039
8044
  if (relationshipPayloads) {
8040
8045
  relationshipPayloads.unload(modelName, id, relationshipName);
8041
8046
  }
8042
8047
  });
8043
8048
  };
8044
8049
 
8045
- RelationshipPayloadsManager.prototype._getRelationshipPayloads = function _getRelationshipPayloads(modelName, relationshipName, init) {
8046
- var relInfo = this.getRelationshipInfo(modelName, relationshipName);
8047
-
8048
- if (relInfo === null) {
8050
+ RelationshipPayloadsManager.prototype._getRelationshipPayloads = function _getRelationshipPayloads(modelName, relationshipName, modelClass, relationshipsByName, init) {
8051
+ if (!relationshipsByName.has(relationshipName)) {
8049
8052
  return;
8050
8053
  }
8051
8054
 
8052
- var cache = this._cache[relInfo.lhs_key];
8053
-
8054
- if (!cache && init) {
8055
- return this._initializeRelationshipPayloads(relInfo);
8055
+ var key = modelName + ':' + relationshipName;
8056
+ if (!this._cache[key] && init) {
8057
+ return this._initializeRelationshipPayloads(modelName, relationshipName, modelClass, relationshipsByName);
8056
8058
  }
8057
8059
 
8058
- return cache;
8060
+ return this._cache[key];
8059
8061
  };
8060
8062
 
8061
- RelationshipPayloadsManager.prototype.getRelationshipInfo = function getRelationshipInfo(modelName, relationshipName) {
8062
- var inverseCache = this._inverseLookupCache;
8063
- var store = this._store;
8064
- var cached = inverseCache.get(modelName, relationshipName);
8065
-
8066
- // CASE: We have a cached resolution (null if no relationship exists)
8067
- if (cached !== undefined) {
8068
- return cached;
8069
- }
8070
-
8071
- var modelClass = store._modelFor(modelName);
8072
- var relationshipsByName = get(modelClass, 'relationshipsByName');
8073
-
8074
- // CASE: We don't have a relationship at all
8075
- if (!relationshipsByName.has(relationshipName)) {
8076
- inverseCache.set(modelName, relationshipName, null);
8077
- return null;
8078
- }
8079
-
8080
- var inverseMeta = modelClass.inverseFor(relationshipName, store);
8063
+ RelationshipPayloadsManager.prototype._initializeRelationshipPayloads = function _initializeRelationshipPayloads(modelName, relationshipName, modelClass, relationshipsByName) {
8081
8064
  var relationshipMeta = relationshipsByName.get(relationshipName);
8082
- var selfIsPolymorphic = relationshipMeta.options !== undefined && relationshipMeta.options.polymorphic === true;
8083
- var inverseBaseModelName = relationshipMeta.type;
8084
-
8085
- // CASE: We have no inverse
8086
- if (!inverseMeta) {
8087
- var _info = {
8088
- lhs_key: modelName + ':' + relationshipName,
8089
- lhs_modelNames: [modelName],
8090
- lhs_baseModelName: modelName,
8091
- lhs_relationshipName: relationshipName,
8092
- lhs_relationshipMeta: relationshipMeta,
8093
- lhs_isPolymorphic: selfIsPolymorphic,
8094
- rhs_key: '',
8095
- rhs_modelNames: [],
8096
- rhs_baseModelName: inverseBaseModelName,
8097
- rhs_relationshipName: '',
8098
- rhs_relationshipMeta: null,
8099
- rhs_isPolymorphic: false,
8100
- hasInverse: false,
8101
- isSelfReferential: false, // modelName === inverseBaseModelName,
8102
- isReflexive: false
8103
- };
8104
-
8105
- inverseCache.set(modelName, relationshipName, _info);
8106
-
8107
- return _info;
8108
- }
8109
-
8110
- // CASE: We do have an inverse
8111
-
8112
- var inverseRelationshipName = inverseMeta.name;
8113
- var inverseRelationshipMeta = get(inverseMeta.type, 'relationshipsByName').get(inverseRelationshipName);
8114
- var baseModelName = inverseRelationshipMeta.type;
8115
- var isSelfReferential = baseModelName === inverseBaseModelName;
8116
-
8117
- // TODO we want to assert this but this breaks all of our shoddily written tests
8118
- /*
8119
- if (DEBUG) {
8120
- let inverseDoubleCheck = inverseMeta.type.inverseFor(inverseRelationshipName, store);
8121
- assert(`The ${inverseBaseModelName}:${inverseRelationshipName} relationship declares 'inverse: null', but it was resolved as the inverse for ${baseModelName}:${relationshipName}.`, inverseDoubleCheck);
8065
+ var inverseMeta = modelClass.inverseFor(relationshipName, this._store);
8066
+
8067
+ var inverseModelName = void 0;
8068
+ var inverseRelationshipName = void 0;
8069
+ var inverseRelationshipMeta = void 0;
8070
+
8071
+ // figure out the inverse relationship; we need two things
8072
+ // a) the inverse model name
8073
+ //- b) the name of the inverse relationship
8074
+ if (inverseMeta) {
8075
+ inverseRelationshipName = inverseMeta.name;
8076
+ inverseModelName = relationshipMeta.type;
8077
+ inverseRelationshipMeta = _get(inverseMeta.type, 'relationshipsByName').get(inverseRelationshipName);
8078
+ } else {
8079
+ // relationship has no inverse
8080
+ inverseModelName = inverseRelationshipName = '';
8081
+ inverseRelationshipMeta = null;
8122
8082
  }
8123
- */
8124
-
8125
- // CASE: We may have already discovered the inverse for the baseModelName
8126
- // CASE: We have already discovered the inverse
8127
- cached = inverseCache.get(baseModelName, relationshipName) || inverseCache.get(inverseBaseModelName, inverseRelationshipName);
8128
- if (cached) {
8129
- (false && Ember.assert('The ' + inverseBaseModelName + ':' + inverseRelationshipName + ' relationship declares \'inverse: null\', but it was resolved as the inverse for ' + baseModelName + ':' + relationshipName + '.', cached.hasInverse !== false));
8130
-
8131
-
8132
- var isLHS = cached.lhs_baseModelName === baseModelName;
8133
- var modelNames = isLHS ? cached.lhs_modelNames : cached.rhs_modelNames;
8134
- // make this lookup easier in the future by caching the key
8135
- modelNames.push(modelName);
8136
- inverseCache.set(modelName, relationshipName, cached);
8137
-
8138
- return cached;
8139
- }
8140
-
8141
- var info = {
8142
- lhs_key: baseModelName + ':' + relationshipName,
8143
- lhs_modelNames: [modelName],
8144
- lhs_baseModelName: baseModelName,
8145
- lhs_relationshipName: relationshipName,
8146
- lhs_relationshipMeta: relationshipMeta,
8147
- lhs_isPolymorphic: selfIsPolymorphic,
8148
- rhs_key: inverseBaseModelName + ':' + inverseRelationshipName,
8149
- rhs_modelNames: [],
8150
- rhs_baseModelName: inverseBaseModelName,
8151
- rhs_relationshipName: inverseRelationshipName,
8152
- rhs_relationshipMeta: inverseRelationshipMeta,
8153
- rhs_isPolymorphic: inverseRelationshipMeta.options !== undefined && inverseRelationshipMeta.options.polymorphic === true,
8154
- hasInverse: true,
8155
- isSelfReferential: isSelfReferential,
8156
- isReflexive: isSelfReferential && relationshipName === inverseRelationshipName
8157
- };
8158
-
8159
- // Create entries for the baseModelName as well as modelName to speed up
8160
- // inverse lookups
8161
- inverseCache.set(baseModelName, relationshipName, info);
8162
- inverseCache.set(modelName, relationshipName, info);
8163
-
8164
- // Greedily populate the inverse
8165
- inverseCache.set(inverseBaseModelName, inverseRelationshipName, info);
8166
-
8167
- return info;
8168
- };
8169
-
8170
- RelationshipPayloadsManager.prototype._initializeRelationshipPayloads = function _initializeRelationshipPayloads(relInfo) {
8171
- var lhsKey = relInfo.lhs_key;
8172
- var rhsKey = relInfo.rhs_key;
8173
- var existingPayloads = this._cache[lhsKey];
8174
8083
 
8175
- if (relInfo.hasInverse === true && relInfo.rhs_isPolymorphic === true) {
8176
- existingPayloads = this._cache[rhsKey];
8177
-
8178
- if (existingPayloads !== undefined) {
8179
- this._cache[lhsKey] = existingPayloads;
8180
- return existingPayloads;
8181
- }
8182
- }
8084
+ var lhsKey = modelName + ':' + relationshipName;
8085
+ var rhsKey = inverseModelName + ':' + inverseRelationshipName;
8183
8086
 
8184
8087
  // populate the cache for both sides of the relationship, as they both use
8185
8088
  // the same `RelationshipPayloads`.
@@ -8187,13 +8090,7 @@ define('ember-data/-private/system/relationships/relationship-payloads-manager',
8187
8090
  // This works out better than creating a single common key, because to
8188
8091
  // compute that key we would need to do work to look up the inverse
8189
8092
  //
8190
- var cache = this._cache[lhsKey] = new _relationshipPayloads.default(relInfo);
8191
-
8192
- if (relInfo.hasInverse === true) {
8193
- this._cache[rhsKey] = cache;
8194
- }
8195
-
8196
- return cache;
8093
+ return this._cache[lhsKey] = this._cache[rhsKey] = new _relationshipPayloads.default(this._store, modelName, relationshipName, relationshipMeta, inverseModelName, inverseRelationshipName, inverseRelationshipMeta);
8197
8094
  };
8198
8095
 
8199
8096
  return RelationshipPayloadsManager;
@@ -8206,6 +8103,12 @@ define('ember-data/-private/system/relationships/relationship-payloads', ['expor
8206
8103
 
8207
8104
  exports.__esModule = true;
8208
8105
 
8106
+ function _classCallCheck(instance, Constructor) {
8107
+ if (!(instance instanceof Constructor)) {
8108
+ throw new TypeError("Cannot call a class as a function");
8109
+ }
8110
+ }
8111
+
8209
8112
  var _createClass = function () {
8210
8113
  function defineProperties(target, props) {
8211
8114
  for (var i = 0; i < props.length; i++) {
@@ -8224,61 +8127,37 @@ define('ember-data/-private/system/relationships/relationship-payloads', ['expor
8224
8127
  };
8225
8128
  }();
8226
8129
 
8227
- function _classCallCheck(instance, Constructor) {
8228
- if (!(instance instanceof Constructor)) {
8229
- throw new TypeError("Cannot call a class as a function");
8230
- }
8231
- }
8232
-
8233
- var TypeCache = exports.TypeCache = function () {
8234
- function TypeCache() {
8235
- _classCallCheck(this, TypeCache);
8236
-
8237
- this.types = Object.create(null);
8238
- }
8239
-
8240
- TypeCache.prototype.get = function get(modelName, id) {
8241
- var types = this.types;
8242
-
8243
-
8244
- if (types[modelName] !== undefined) {
8245
- return types[modelName][id];
8246
- }
8247
- };
8248
-
8249
- TypeCache.prototype.set = function set(modelName, id, payload) {
8250
- var types = this.types;
8251
-
8252
- var typeMap = types[modelName];
8253
-
8254
- if (typeMap === undefined) {
8255
- typeMap = types[modelName] = Object.create(null);
8256
- }
8257
-
8258
- typeMap[id] = payload;
8259
- };
8260
-
8261
- TypeCache.prototype.delete = function _delete(modelName, id) {
8262
- var types = this.types;
8263
-
8264
-
8265
- if (types[modelName] !== undefined) {
8266
- delete types[modelName][id];
8267
- }
8268
- };
8269
-
8270
- return TypeCache;
8271
- }();
8272
-
8273
8130
  var RelationshipPayloads = function () {
8274
- function RelationshipPayloads(relInfo) {
8131
+ function RelationshipPayloads(store, modelName, relationshipName, relationshipMeta, inverseModelName, inverseRelationshipName, inverseRelationshipMeta) {
8275
8132
  _classCallCheck(this, RelationshipPayloads);
8276
8133
 
8277
- this._relInfo = relInfo;
8134
+ this._store = store;
8135
+
8136
+ this._lhsModelName = modelName;
8137
+ this._lhsRelationshipName = relationshipName;
8138
+ this._lhsRelationshipMeta = relationshipMeta;
8139
+
8140
+ this._rhsModelName = inverseModelName;
8141
+ this._rhsRelationshipName = inverseRelationshipName;
8142
+ this._rhsRelationshipMeta = inverseRelationshipMeta;
8278
8143
 
8279
8144
  // a map of id -> payloads for the left hand side of the relationship.
8280
- this.lhs_payloads = new TypeCache();
8281
- this.rhs_payloads = relInfo.isReflexive ? this.lhs_payloads : new TypeCache();
8145
+ this._lhsPayloads = Object.create(null);
8146
+ if (modelName !== inverseModelName || relationshipName !== inverseRelationshipName) {
8147
+ // The common case of a non-reflexive relationship, or a reflexive
8148
+ // relationship whose inverse is not itself
8149
+ this._rhsPayloads = Object.create(null);
8150
+ this._isReflexive = false;
8151
+ } else {
8152
+ // Edge case when we have a reflexive relationship to itself
8153
+ // eg user hasMany friends inverse friends
8154
+ //
8155
+ // In this case there aren't really two sides to the relationship, but
8156
+ // we set `_rhsPayloads = _lhsPayloads` to make things easier to reason
8157
+ // about
8158
+ this._rhsPayloads = this._lhsPayloads;
8159
+ this._isReflexive = true;
8160
+ }
8282
8161
 
8283
8162
  // When we push relationship payloads, just stash them in a queue until
8284
8163
  // somebody actually asks for one of them.
@@ -8289,22 +8168,22 @@ define('ember-data/-private/system/relationships/relationship-payloads', ['expor
8289
8168
  }
8290
8169
 
8291
8170
  /**
8292
- Get the payload for the relationship of an individual record.
8293
- This might return the raw payload as pushed into the store, or one computed
8294
- from the payload of the inverse relationship.
8295
- @method
8296
- */
8171
+ Get the payload for the relationship of an individual record.
8172
+ This might return the raw payload as pushed into the store, or one computed
8173
+ from the payload of the inverse relationship.
8174
+ @method
8175
+ */
8297
8176
 
8298
8177
 
8299
8178
  RelationshipPayloads.prototype.get = function get(modelName, id, relationshipName) {
8300
8179
  this._flushPending();
8301
8180
 
8302
8181
  if (this._isLHS(modelName, relationshipName)) {
8303
- return this.lhs_payloads.get(modelName, id);
8182
+ return this._lhsPayloads[id];
8304
8183
  } else {
8305
- (false && Ember.assert(modelName + ':' + relationshipName + ' is not either side of this relationship, ' + this._relInfo.lhs_key + '<->' + this._relInfo.rhs_key, this._isRHS(modelName, relationshipName)));
8184
+ (false && Ember.assert(modelName + ':' + relationshipName + ' is not either side of this relationship, ' + this._lhsModelName + ':' + this._lhsRelationshipName + '<->' + this._rhsModelName + ':' + this._rhsRelationshipName, this._isRHS(modelName, relationshipName)));
8306
8185
 
8307
- return this.rhs_payloads.get(modelName, id);
8186
+ return this._rhsPayloads[id];
8308
8187
  }
8309
8188
  };
8310
8189
 
@@ -8316,40 +8195,20 @@ define('ember-data/-private/system/relationships/relationship-payloads', ['expor
8316
8195
  this._flushPending();
8317
8196
 
8318
8197
  if (this._isLHS(modelName, relationshipName)) {
8319
- delete this.lhs_payloads.delete(modelName, id);
8198
+ delete this._lhsPayloads[id];
8320
8199
  } else {
8321
- (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)));
8200
+ (false && Ember.assert(modelName + ':' + relationshipName + ' is not either side of this relationship, ' + this._lhsModelName + ':' + this._lhsRelationshipName + '<->' + this._rhsModelName + ':' + this._rhsRelationshipName, this._isRHS(modelName, relationshipName)));
8322
8201
 
8323
- delete this.rhs_payloads.delete(modelName, id);
8202
+ delete this._rhsPayloads[id];
8324
8203
  }
8325
8204
  };
8326
8205
 
8327
8206
  RelationshipPayloads.prototype._isLHS = function _isLHS(modelName, relationshipName) {
8328
- var relInfo = this._relInfo;
8329
- var isSelfReferential = relInfo.isSelfReferential;
8330
- var isRelationship = relationshipName === relInfo.lhs_relationshipName;
8331
-
8332
- if (isRelationship === true) {
8333
- return isSelfReferential === true || // itself
8334
- modelName === relInfo.lhs_baseModelName || // base or non-polymorphic
8335
- relInfo.lhs_modelNames.indexOf(modelName) !== -1; // polymorphic
8336
- }
8337
-
8338
- return false;
8207
+ return modelName === this._lhsModelName && relationshipName === this._lhsRelationshipName;
8339
8208
  };
8340
8209
 
8341
8210
  RelationshipPayloads.prototype._isRHS = function _isRHS(modelName, relationshipName) {
8342
- var relInfo = this._relInfo;
8343
- var isSelfReferential = relInfo.isSelfReferential;
8344
- var isRelationship = relationshipName === relInfo.rhs_relationshipName;
8345
-
8346
- if (isRelationship === true) {
8347
- return isSelfReferential === true || // itself
8348
- modelName === relInfo.rhs_baseModelName || // base or non-polymorphic
8349
- relInfo.rhs_modelNames.indexOf(modelName) !== -1; // polymorphic
8350
- }
8351
-
8352
- return false;
8211
+ return modelName === this._rhsModelName && relationshipName === this._rhsRelationshipName;
8353
8212
  };
8354
8213
 
8355
8214
  RelationshipPayloads.prototype._flushPending = function _flushPending() {
@@ -8370,28 +8229,26 @@ define('ember-data/-private/system/relationships/relationship-payloads', ['expor
8370
8229
  id: id,
8371
8230
  type: modelName
8372
8231
  }
8373
- };
8374
8232
 
8375
- // start flushing this individual payload. The logic is the same whether
8376
- // it's for the left hand side of the relationship or the right hand side,
8377
- // except the role of primary and inverse idToPayloads is reversed
8378
- //
8379
- var previousPayload = void 0;
8380
- var payloadMap = void 0;
8381
- var inversePayloadMap = void 0;
8233
+ // start flushing this individual payload. The logic is the same whether
8234
+ // it's for the left hand side of the relationship or the right hand side,
8235
+ // except the role of primary and inverse idToPayloads is reversed
8236
+ //
8237
+ };var previousPayload = void 0;
8238
+ var idToPayloads = void 0;
8239
+ var inverseIdToPayloads = void 0;
8382
8240
  var inverseIsMany = void 0;
8383
-
8384
8241
  if (this._isLHS(modelName, relationshipName)) {
8385
- previousPayload = this.lhs_payloads.get(modelName, id);
8386
- payloadMap = this.lhs_payloads;
8387
- inversePayloadMap = this.rhs_payloads;
8242
+ previousPayload = this._lhsPayloads[id];
8243
+ idToPayloads = this._lhsPayloads;
8244
+ inverseIdToPayloads = this._rhsPayloads;
8388
8245
  inverseIsMany = this._rhsRelationshipIsMany;
8389
8246
  } else {
8390
- (false && Ember.assert(modelName + ':' + relationshipName + ' is not either side of this relationship, ' + this._relInfo.lhs_key + '<->' + this._relInfo.rhs_key, this._isRHS(modelName, relationshipName)));
8247
+ (false && Ember.assert(modelName + ':' + relationshipName + ' is not either side of this relationship, ' + this._lhsModelName + ':' + this._lhsRelationshipName + '<->' + this._rhsModelName + ':' + this._rhsRelationshipName, this._isRHS(modelName, relationshipName)));
8391
8248
 
8392
- previousPayload = this.rhs_payloads.get(modelName, id);
8393
- payloadMap = this.rhs_payloads;
8394
- inversePayloadMap = this.lhs_payloads;
8249
+ previousPayload = this._rhsPayloads[id];
8250
+ idToPayloads = this._rhsPayloads;
8251
+ inverseIdToPayloads = this._lhsPayloads;
8395
8252
  inverseIsMany = this._lhsRelationshipIsMany;
8396
8253
  }
8397
8254
 
@@ -8435,14 +8292,14 @@ define('ember-data/-private/system/relationships/relationship-payloads', ['expor
8435
8292
  // * undefined is NOT considered new information, we should keep original state
8436
8293
  // * anything else is considered new information, and it should win
8437
8294
  if (relationshipData.data !== undefined) {
8438
- this._removeInverse(id, previousPayload, inversePayloadMap);
8295
+ this._removeInverse(id, previousPayload, inverseIdToPayloads);
8439
8296
  }
8440
- payloadMap.set(modelName, id, relationshipData);
8441
- this._populateInverse(relationshipData, inverseRelationshipData, inversePayloadMap, inverseIsMany);
8297
+ idToPayloads[id] = relationshipData;
8298
+ this._populateInverse(relationshipData, inverseRelationshipData, inverseIdToPayloads, inverseIsMany);
8442
8299
  }
8443
8300
  };
8444
8301
 
8445
- RelationshipPayloads.prototype._populateInverse = function _populateInverse(relationshipData, inversePayload, inversePayloadMap, inverseIsMany) {
8302
+ RelationshipPayloads.prototype._populateInverse = function _populateInverse(relationshipData, inversePayload, inverseIdToPayloads, inverseIsMany) {
8446
8303
  if (!relationshipData.data) {
8447
8304
  // This id doesn't have an inverse, eg a belongsTo with a payload
8448
8305
  // { data: null }, so there's nothing to populate
@@ -8451,24 +8308,22 @@ define('ember-data/-private/system/relationships/relationship-payloads', ['expor
8451
8308
 
8452
8309
  if (Array.isArray(relationshipData.data)) {
8453
8310
  for (var i = 0; i < relationshipData.data.length; ++i) {
8454
- var resourceIdentifier = relationshipData.data[i];
8455
- this._addToInverse(inversePayload, resourceIdentifier, inversePayloadMap, inverseIsMany);
8311
+ var inverseId = relationshipData.data[i].id;
8312
+ this._addToInverse(inversePayload, inverseId, inverseIdToPayloads, inverseIsMany);
8456
8313
  }
8457
8314
  } else {
8458
- var _resourceIdentifier = relationshipData.data;
8459
- this._addToInverse(inversePayload, _resourceIdentifier, inversePayloadMap, inverseIsMany);
8315
+ var _inverseId = relationshipData.data.id;
8316
+ this._addToInverse(inversePayload, _inverseId, inverseIdToPayloads, inverseIsMany);
8460
8317
  }
8461
8318
  };
8462
8319
 
8463
- RelationshipPayloads.prototype._addToInverse = function _addToInverse(inversePayload, resourceIdentifier, inversePayloadMap, inverseIsMany) {
8464
- var relInfo = this._relInfo;
8465
-
8466
- if (relInfo.isReflexive && inversePayload.data.id === resourceIdentifier.id) {
8320
+ RelationshipPayloads.prototype._addToInverse = function _addToInverse(inversePayload, inverseId, inverseIdToPayloads, inverseIsMany) {
8321
+ if (this._isReflexive && inversePayload.data.id === inverseId) {
8467
8322
  // eg <user:1>.friends = [{ id: 1, type: 'user' }]
8468
8323
  return;
8469
8324
  }
8470
8325
 
8471
- var existingPayload = inversePayloadMap.get(resourceIdentifier.type, resourceIdentifier.id);
8326
+ var existingPayload = inverseIdToPayloads[inverseId];
8472
8327
  var existingData = existingPayload && existingPayload.data;
8473
8328
 
8474
8329
  if (existingData) {
@@ -8478,22 +8333,22 @@ define('ember-data/-private/system/relationships/relationship-payloads', ['expor
8478
8333
  if (Array.isArray(existingData)) {
8479
8334
  existingData.push(inversePayload.data);
8480
8335
  } else {
8481
- inversePayloadMap.set(resourceIdentifier.type, resourceIdentifier.id, inversePayload);
8336
+ inverseIdToPayloads[inverseId] = inversePayload;
8482
8337
  }
8483
8338
  } else {
8484
8339
  // first time we're populating the inverse side
8485
8340
  //
8486
8341
  if (inverseIsMany) {
8487
- inversePayloadMap.set(resourceIdentifier.type, resourceIdentifier.id, {
8342
+ inverseIdToPayloads[inverseId] = {
8488
8343
  data: [inversePayload.data]
8489
- });
8344
+ };
8490
8345
  } else {
8491
- inversePayloadMap.set(resourceIdentifier.type, resourceIdentifier.id, inversePayload);
8346
+ inverseIdToPayloads[inverseId] = inversePayload;
8492
8347
  }
8493
8348
  }
8494
8349
  };
8495
8350
 
8496
- RelationshipPayloads.prototype._removeInverse = function _removeInverse(id, previousPayload, inversePayloadMap) {
8351
+ RelationshipPayloads.prototype._removeInverse = function _removeInverse(id, previousPayload, inverseIdToPayloads) {
8497
8352
  var data = previousPayload && previousPayload.data;
8498
8353
  if (!data) {
8499
8354
  // either this is the first time we've seen a payload for this id, or its
@@ -8508,16 +8363,15 @@ define('ember-data/-private/system/relationships/relationship-payloads', ['expor
8508
8363
  if (Array.isArray(data)) {
8509
8364
  // TODO: diff rather than removeall addall?
8510
8365
  for (var i = 0; i < data.length; ++i) {
8511
- var resourceIdentifier = data[i];
8512
- this._removeFromInverse(id, resourceIdentifier, inversePayloadMap);
8366
+ this._removeFromInverse(id, data[i].id, inverseIdToPayloads);
8513
8367
  }
8514
8368
  } else {
8515
- this._removeFromInverse(id, data, inversePayloadMap);
8369
+ this._removeFromInverse(id, data.id, inverseIdToPayloads);
8516
8370
  }
8517
8371
  };
8518
8372
 
8519
- RelationshipPayloads.prototype._removeFromInverse = function _removeFromInverse(id, resourceIdentifier, inversePayloads) {
8520
- var inversePayload = inversePayloads.get(resourceIdentifier.type, resourceIdentifier.id);
8373
+ RelationshipPayloads.prototype._removeFromInverse = function _removeFromInverse(id, inverseId, inversePayloads) {
8374
+ var inversePayload = inversePayloads[inverseId];
8521
8375
  var data = inversePayload && inversePayload.data;
8522
8376
 
8523
8377
  if (!data) {
@@ -8529,23 +8383,21 @@ define('ember-data/-private/system/relationships/relationship-payloads', ['expor
8529
8383
  return x.id !== id;
8530
8384
  });
8531
8385
  } else {
8532
- inversePayloads.set(resourceIdentifier.type, resourceIdentifier.id, {
8386
+ inversePayloads[inverseId] = {
8533
8387
  data: null
8534
- });
8388
+ };
8535
8389
  }
8536
8390
  };
8537
8391
 
8538
8392
  _createClass(RelationshipPayloads, [{
8539
8393
  key: '_lhsRelationshipIsMany',
8540
8394
  get: function () {
8541
- var meta = this._relInfo.lhs_relationshipMeta;
8542
- return meta !== null && meta.kind === 'hasMany';
8395
+ return this._lhsRelationshipMeta && this._lhsRelationshipMeta.kind === 'hasMany';
8543
8396
  }
8544
8397
  }, {
8545
8398
  key: '_rhsRelationshipIsMany',
8546
8399
  get: function () {
8547
- var meta = this._relInfo.rhs_relationshipMeta;
8548
- return meta !== null && meta.kind === 'hasMany';
8400
+ return this._rhsRelationshipMeta && this._rhsRelationshipMeta.kind === 'hasMany';
8549
8401
  }
8550
8402
  }]);
8551
8403
 
@@ -10634,9 +10486,7 @@ define('ember-data/-private/system/store', ['exports', 'ember-data/-private/adap
10634
10486
  (false && Ember.assert('Passing classes to store methods has been removed. Please pass a dasherized string instead of ' + modelName, typeof modelName === 'string'));
10635
10487
 
10636
10488
 
10637
- var normalizedModelName = (0, _normalizeModelName.default)(modelName);
10638
-
10639
- return this.findRecord(normalizedModelName, id);
10489
+ return this.findRecord(modelName, id);
10640
10490
  },
10641
10491
 
10642
10492
 
@@ -16718,8 +16568,9 @@ define('ember-data/serializers/json-api', ['exports', 'ember-inflector', 'ember-
16718
16568
 
16719
16569
  if (this._canSerialize(key)) {
16720
16570
  var belongsTo = snapshot.belongsTo(key);
16721
- if (belongsTo !== undefined) {
16571
+ var belongsToIsNotNew = belongsTo && belongsTo.record && !belongsTo.record.get('isNew');
16722
16572
 
16573
+ if (belongsTo === null || belongsToIsNotNew) {
16723
16574
  json.relationships = json.relationships || {};
16724
16575
 
16725
16576
  var payloadKey = this._getMappedKey(key, snapshot.type);
@@ -18261,7 +18112,7 @@ define("ember-data/version", ["exports"], function (exports) {
18261
18112
  "use strict";
18262
18113
 
18263
18114
  exports.__esModule = true;
18264
- exports.default = "3.0.2";
18115
+ exports.default = "3.1.0-beta.1";
18265
18116
  });
18266
18117
  define("ember-inflector", ["module", "exports", "ember-inflector/lib/system", "ember-inflector/lib/ext/string"], function (module, exports, _system) {
18267
18118
  "use strict";