ember-data-source 2.16.4 → 2.17.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: 4c5b90c9ff97dfbcc9ed8c8ab13c9836ef49b207
4
- data.tar.gz: 80b2b487ad5e627347751cb413ed0031e74a27c1
3
+ metadata.gz: fb8ec817c8395383752e1e1397d6581a9596f4b3
4
+ data.tar.gz: 93e81cf51390ab4538275bf51cf83123474e1c1e
5
5
  SHA512:
6
- metadata.gz: 0244b9de6b874ad35c685c5bbefaaf2cf8258934b8807e24a8d8a906cab63829a8881b4bbe4c1f511951672403fa56f2247bf06ecbb38f105a30fcb82a73607d
7
- data.tar.gz: 5e4b6be7d269ab882a74e9dff4c86e63890ed8b72f515af7a46ba7610d2b4c92347a1907aadd5eba10567c91a6cb2d38c18f2f862ccb159413b5b7866822caf7
6
+ metadata.gz: 55ab633c0d123c1f66da19ac8aa5551f7de53d240195a8f406f09bc002f41ed5f58fbecd8dacc66a392cdebd9709040efcead49a653191b8a355adffc3cf40ee
7
+ data.tar.gz: 42d78817cca4233b92e6179be7f90131a23789b2fe44404f6d1859a78daded567b19997c89b82925d4f55115ac556bebcea36ef6f1915b4abb9e1afd39f92f63
@@ -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.16.4
9
+ * @version 2.17.0-beta.1
10
10
  */
11
11
 
12
12
  var loader, define, requireModule, require, requirejs;
@@ -4806,10 +4806,6 @@ define('ember-data/-private/system/model/model', ['exports', 'ember', 'ember-dat
4806
4806
  // the computed property.
4807
4807
  var meta = value.meta();
4808
4808
 
4809
- /*
4810
- This is buggy because if the parent has never been looked up
4811
- via `modelFor` it will not have `modelName` set.
4812
- */
4813
4809
  meta.parentType = proto.constructor;
4814
4810
  }
4815
4811
  }
@@ -6845,7 +6841,6 @@ define('ember-data/-private/system/references/belongs-to', ['exports', 'ember-da
6845
6841
  ```
6846
6842
 
6847
6843
  @method value
6848
- @param {Object|Promise} objectOrPromise a promise that resolves to a JSONAPI document object describing the new value of this relationship.
6849
6844
  @return {DS.Model} the record in this relationship
6850
6845
  */
6851
6846
  BelongsToReference.prototype.value = function () {
@@ -7599,7 +7594,7 @@ define('ember-data/-private/system/relationship-meta', ['exports', 'ember-inflec
7599
7594
  }
7600
7595
 
7601
7596
  function relationshipFromMeta(meta) {
7602
- return {
7597
+ var result = {
7603
7598
  key: meta.key,
7604
7599
  kind: meta.kind,
7605
7600
  type: typeForRelationshipMeta(meta),
@@ -7608,6 +7603,12 @@ define('ember-data/-private/system/relationship-meta', ['exports', 'ember-inflec
7608
7603
  parentType: meta.parentType,
7609
7604
  isRelationship: true
7610
7605
  };
7606
+
7607
+ if (false) {
7608
+ result.parentType = meta.parentType;
7609
+ }
7610
+
7611
+ return result;
7611
7612
  }
7612
7613
  });
7613
7614
  define('ember-data/-private/system/relationships/belongs-to', ['exports', 'ember', 'ember-data/-private/system/normalize-model-name'], function (exports, _ember, _normalizeModelName) {
@@ -8013,8 +8014,7 @@ define('ember-data/-private/system/relationships/relationship-payloads-manager',
8013
8014
  }
8014
8015
  }
8015
8016
 
8016
- var get = _ember.default.get;
8017
- var assert = _ember.default.assert;
8017
+ var _get = _ember.default.get;
8018
8018
 
8019
8019
  /**
8020
8020
  Manages relationship payloads for a given store, for uninitialized
@@ -8077,7 +8077,6 @@ define('ember-data/-private/system/relationships/relationship-payloads-manager',
8077
8077
  this._store = store;
8078
8078
  // cache of `RelationshipPayload`s
8079
8079
  this._cache = Object.create(null);
8080
- this._inverseLookupCache = new _relationshipPayloads.TypeCache();
8081
8080
  }
8082
8081
 
8083
8082
  /**
@@ -8098,7 +8097,9 @@ define('ember-data/-private/system/relationships/relationship-payloads-manager',
8098
8097
 
8099
8098
 
8100
8099
  RelationshipPayloadsManager.prototype.get = function get(modelName, id, relationshipName) {
8101
- var relationshipPayloads = this._getRelationshipPayloads(modelName, relationshipName, false);
8100
+ var modelClass = this._store._modelFor(modelName);
8101
+ var relationshipsByName = _get(modelClass, 'relationshipsByName');
8102
+ var relationshipPayloads = this._getRelationshipPayloads(modelName, relationshipName, modelClass, relationshipsByName, false);
8102
8103
  return relationshipPayloads && relationshipPayloads.get(modelName, id, relationshipName);
8103
8104
  };
8104
8105
 
@@ -8109,8 +8110,10 @@ define('ember-data/-private/system/relationships/relationship-payloads-manager',
8109
8110
  return;
8110
8111
  }
8111
8112
 
8113
+ var modelClass = this._store._modelFor(modelName);
8114
+ var relationshipsByName = _get(modelClass, 'relationshipsByName');
8112
8115
  Object.keys(relationshipsData).forEach(function (key) {
8113
- var relationshipPayloads = _this._getRelationshipPayloads(modelName, key, true);
8116
+ var relationshipPayloads = _this._getRelationshipPayloads(modelName, key, modelClass, relationshipsByName, true);
8114
8117
  if (relationshipPayloads) {
8115
8118
  relationshipPayloads.push(modelName, id, key, relationshipsData[key]);
8116
8119
  }
@@ -8121,153 +8124,51 @@ define('ember-data/-private/system/relationships/relationship-payloads-manager',
8121
8124
  var _this2 = this;
8122
8125
 
8123
8126
  var modelClass = this._store._modelFor(modelName);
8124
- var relationshipsByName = get(modelClass, 'relationshipsByName');
8127
+ var relationshipsByName = _get(modelClass, 'relationshipsByName');
8125
8128
  relationshipsByName.forEach(function (_, relationshipName) {
8126
- var relationshipPayloads = _this2._getRelationshipPayloads(modelName, relationshipName, false);
8129
+ var relationshipPayloads = _this2._getRelationshipPayloads(modelName, relationshipName, modelClass, relationshipsByName, false);
8127
8130
  if (relationshipPayloads) {
8128
8131
  relationshipPayloads.unload(modelName, id, relationshipName);
8129
8132
  }
8130
8133
  });
8131
8134
  };
8132
8135
 
8133
- RelationshipPayloadsManager.prototype._getRelationshipPayloads = function _getRelationshipPayloads(modelName, relationshipName, init) {
8134
- var relInfo = this.getRelationshipInfo(modelName, relationshipName);
8135
-
8136
- if (relInfo === null) {
8136
+ RelationshipPayloadsManager.prototype._getRelationshipPayloads = function _getRelationshipPayloads(modelName, relationshipName, modelClass, relationshipsByName, init) {
8137
+ if (!relationshipsByName.has(relationshipName)) {
8137
8138
  return;
8138
8139
  }
8139
8140
 
8140
- var cache = this._cache[relInfo.lhs_key];
8141
-
8142
- if (!cache && init) {
8143
- return this._initializeRelationshipPayloads(relInfo);
8141
+ var key = modelName + ':' + relationshipName;
8142
+ if (!this._cache[key] && init) {
8143
+ return this._initializeRelationshipPayloads(modelName, relationshipName, modelClass, relationshipsByName);
8144
8144
  }
8145
8145
 
8146
- return cache;
8146
+ return this._cache[key];
8147
8147
  };
8148
8148
 
8149
- RelationshipPayloadsManager.prototype.getRelationshipInfo = function getRelationshipInfo(modelName, relationshipName) {
8150
- var inverseCache = this._inverseLookupCache;
8151
- var store = this._store;
8152
- var cached = inverseCache.get(modelName, relationshipName);
8153
-
8154
- // CASE: We have a cached resolution (null if no relationship exists)
8155
- if (cached !== undefined) {
8156
- return cached;
8157
- }
8158
-
8159
- var modelClass = store._modelFor(modelName);
8160
- var relationshipsByName = get(modelClass, 'relationshipsByName');
8161
-
8162
- // CASE: We don't have a relationship at all
8163
- if (!relationshipsByName.has(relationshipName)) {
8164
- inverseCache.set(modelName, relationshipName, null);
8165
- return null;
8166
- }
8167
-
8168
- var inverseMeta = modelClass.inverseFor(relationshipName, store);
8149
+ RelationshipPayloadsManager.prototype._initializeRelationshipPayloads = function _initializeRelationshipPayloads(modelName, relationshipName, modelClass, relationshipsByName) {
8169
8150
  var relationshipMeta = relationshipsByName.get(relationshipName);
8170
- var selfIsPolymorphic = relationshipMeta.options !== undefined && relationshipMeta.options.polymorphic === true;
8171
- var inverseBaseModelName = relationshipMeta.type;
8172
-
8173
- // CASE: We have no inverse
8174
- if (!inverseMeta) {
8175
- var _info = {
8176
- lhs_key: modelName + ':' + relationshipName,
8177
- lhs_modelNames: [modelName],
8178
- lhs_baseModelName: modelName,
8179
- lhs_relationshipName: relationshipName,
8180
- lhs_relationshipMeta: relationshipMeta,
8181
- lhs_isPolymorphic: selfIsPolymorphic,
8182
- rhs_key: '',
8183
- rhs_modelNames: [],
8184
- rhs_baseModelName: inverseBaseModelName,
8185
- rhs_relationshipName: '',
8186
- rhs_relationshipMeta: null,
8187
- rhs_isPolymorphic: false,
8188
- hasInverse: false,
8189
- isSelfReferential: false, // modelName === inverseBaseModelName,
8190
- isReflexive: false
8191
- };
8192
-
8193
- inverseCache.set(modelName, relationshipName, _info);
8194
-
8195
- return _info;
8196
- }
8197
-
8198
- // CASE: We do have an inverse
8199
-
8200
- var inverseRelationshipName = inverseMeta.name;
8201
- var inverseRelationshipMeta = get(inverseMeta.type, 'relationshipsByName').get(inverseRelationshipName);
8202
- var baseModelName = inverseRelationshipMeta.type;
8203
- var isSelfReferential = baseModelName === inverseBaseModelName;
8204
-
8205
- // TODO we want to assert this but this breaks all of our shoddily written tests
8206
- /*
8207
- if (DEBUG) {
8208
- let inverseDoubleCheck = inverseMeta.type.inverseFor(inverseRelationshipName, store);
8209
- assert(`The ${inverseBaseModelName}:${inverseRelationshipName} relationship declares 'inverse: null', but it was resolved as the inverse for ${baseModelName}:${relationshipName}.`, inverseDoubleCheck);
8151
+ var inverseMeta = modelClass.inverseFor(relationshipName, this._store);
8152
+
8153
+ var inverseModelName = void 0;
8154
+ var inverseRelationshipName = void 0;
8155
+ var inverseRelationshipMeta = void 0;
8156
+
8157
+ // figure out the inverse relationship; we need two things
8158
+ // a) the inverse model name
8159
+ //- b) the name of the inverse relationship
8160
+ if (inverseMeta) {
8161
+ inverseRelationshipName = inverseMeta.name;
8162
+ inverseModelName = relationshipMeta.type;
8163
+ inverseRelationshipMeta = _get(inverseMeta.type, 'relationshipsByName').get(inverseRelationshipName);
8164
+ } else {
8165
+ // relationship has no inverse
8166
+ inverseModelName = inverseRelationshipName = '';
8167
+ inverseRelationshipMeta = null;
8210
8168
  }
8211
- */
8212
-
8213
- // CASE: We may have already discovered the inverse for the baseModelName
8214
- // CASE: We have already discovered the inverse
8215
- cached = inverseCache.get(baseModelName, relationshipName) || inverseCache.get(inverseBaseModelName, inverseRelationshipName);
8216
- if (cached) {
8217
- // TODO this assert can be removed if the above assert is enabled
8218
- assert('The ' + inverseBaseModelName + ':' + inverseRelationshipName + ' relationship declares \'inverse: null\', but it was resolved as the inverse for ' + baseModelName + ':' + relationshipName + '.', cached.hasInverse !== false);
8219
-
8220
- var isLHS = cached.lhs_baseModelName === baseModelName;
8221
- var modelNames = isLHS ? cached.lhs_modelNames : cached.rhs_modelNames;
8222
- // make this lookup easier in the future by caching the key
8223
- modelNames.push(modelName);
8224
- inverseCache.set(modelName, relationshipName, cached);
8225
-
8226
- return cached;
8227
- }
8228
-
8229
- var info = {
8230
- lhs_key: baseModelName + ':' + relationshipName,
8231
- lhs_modelNames: [modelName],
8232
- lhs_baseModelName: baseModelName,
8233
- lhs_relationshipName: relationshipName,
8234
- lhs_relationshipMeta: relationshipMeta,
8235
- lhs_isPolymorphic: selfIsPolymorphic,
8236
- rhs_key: inverseBaseModelName + ':' + inverseRelationshipName,
8237
- rhs_modelNames: [],
8238
- rhs_baseModelName: inverseBaseModelName,
8239
- rhs_relationshipName: inverseRelationshipName,
8240
- rhs_relationshipMeta: inverseRelationshipMeta,
8241
- rhs_isPolymorphic: inverseRelationshipMeta.options !== undefined && inverseRelationshipMeta.options.polymorphic === true,
8242
- hasInverse: true,
8243
- isSelfReferential: isSelfReferential,
8244
- isReflexive: isSelfReferential && relationshipName === inverseRelationshipName
8245
- };
8246
-
8247
- // Create entries for the baseModelName as well as modelName to speed up
8248
- // inverse lookups
8249
- inverseCache.set(baseModelName, relationshipName, info);
8250
- inverseCache.set(modelName, relationshipName, info);
8251
-
8252
- // Greedily populate the inverse
8253
- inverseCache.set(inverseBaseModelName, inverseRelationshipName, info);
8254
-
8255
- return info;
8256
- };
8257
-
8258
- RelationshipPayloadsManager.prototype._initializeRelationshipPayloads = function _initializeRelationshipPayloads(relInfo) {
8259
- var lhsKey = relInfo.lhs_key;
8260
- var rhsKey = relInfo.rhs_key;
8261
- var existingPayloads = this._cache[lhsKey];
8262
-
8263
- if (relInfo.hasInverse === true && relInfo.rhs_isPolymorphic === true) {
8264
- existingPayloads = this._cache[rhsKey];
8265
8169
 
8266
- if (existingPayloads !== undefined) {
8267
- this._cache[lhsKey] = existingPayloads;
8268
- return existingPayloads;
8269
- }
8270
- }
8170
+ var lhsKey = modelName + ':' + relationshipName;
8171
+ var rhsKey = inverseModelName + ':' + inverseRelationshipName;
8271
8172
 
8272
8173
  // populate the cache for both sides of the relationship, as they both use
8273
8174
  // the same `RelationshipPayloads`.
@@ -8275,13 +8176,7 @@ define('ember-data/-private/system/relationships/relationship-payloads-manager',
8275
8176
  // This works out better than creating a single common key, because to
8276
8177
  // compute that key we would need to do work to look up the inverse
8277
8178
  //
8278
- var cache = this._cache[lhsKey] = new _relationshipPayloads.default(relInfo);
8279
-
8280
- if (relInfo.hasInverse === true) {
8281
- this._cache[rhsKey] = cache;
8282
- }
8283
-
8284
- return cache;
8179
+ return this._cache[lhsKey] = this._cache[rhsKey] = new _relationshipPayloads.default(this._store, modelName, relationshipName, relationshipMeta, inverseModelName, inverseRelationshipName, inverseRelationshipMeta);
8285
8180
  };
8286
8181
 
8287
8182
  return RelationshipPayloadsManager;
@@ -8294,6 +8189,12 @@ define('ember-data/-private/system/relationships/relationship-payloads', ['expor
8294
8189
 
8295
8190
  exports.__esModule = true;
8296
8191
 
8192
+ function _classCallCheck(instance, Constructor) {
8193
+ if (!(instance instanceof Constructor)) {
8194
+ throw new TypeError("Cannot call a class as a function");
8195
+ }
8196
+ }
8197
+
8297
8198
  var _createClass = function () {
8298
8199
  function defineProperties(target, props) {
8299
8200
  for (var i = 0; i < props.length; i++) {
@@ -8312,61 +8213,37 @@ define('ember-data/-private/system/relationships/relationship-payloads', ['expor
8312
8213
  };
8313
8214
  }();
8314
8215
 
8315
- function _classCallCheck(instance, Constructor) {
8316
- if (!(instance instanceof Constructor)) {
8317
- throw new TypeError("Cannot call a class as a function");
8318
- }
8319
- }
8320
-
8321
- var TypeCache = exports.TypeCache = function () {
8322
- function TypeCache() {
8323
- _classCallCheck(this, TypeCache);
8324
-
8325
- this.types = Object.create(null);
8326
- }
8327
-
8328
- TypeCache.prototype.get = function get(modelName, id) {
8329
- var types = this.types;
8330
-
8331
-
8332
- if (types[modelName] !== undefined) {
8333
- return types[modelName][id];
8334
- }
8335
- };
8336
-
8337
- TypeCache.prototype.set = function set(modelName, id, payload) {
8338
- var types = this.types;
8339
-
8340
- var typeMap = types[modelName];
8341
-
8342
- if (typeMap === undefined) {
8343
- typeMap = types[modelName] = Object.create(null);
8344
- }
8345
-
8346
- typeMap[id] = payload;
8347
- };
8348
-
8349
- TypeCache.prototype.delete = function _delete(modelName, id) {
8350
- var types = this.types;
8351
-
8352
-
8353
- if (types[modelName] !== undefined) {
8354
- delete types[modelName][id];
8355
- }
8356
- };
8357
-
8358
- return TypeCache;
8359
- }();
8360
-
8361
8216
  var RelationshipPayloads = function () {
8362
- function RelationshipPayloads(relInfo) {
8217
+ function RelationshipPayloads(store, modelName, relationshipName, relationshipMeta, inverseModelName, inverseRelationshipName, inverseRelationshipMeta) {
8363
8218
  _classCallCheck(this, RelationshipPayloads);
8364
8219
 
8365
- this._relInfo = relInfo;
8220
+ this._store = store;
8221
+
8222
+ this._lhsModelName = modelName;
8223
+ this._lhsRelationshipName = relationshipName;
8224
+ this._lhsRelationshipMeta = relationshipMeta;
8225
+
8226
+ this._rhsModelName = inverseModelName;
8227
+ this._rhsRelationshipName = inverseRelationshipName;
8228
+ this._rhsRelationshipMeta = inverseRelationshipMeta;
8366
8229
 
8367
8230
  // a map of id -> payloads for the left hand side of the relationship.
8368
- this.lhs_payloads = new TypeCache();
8369
- this.rhs_payloads = relInfo.isReflexive ? this.lhs_payloads : new TypeCache();
8231
+ this._lhsPayloads = Object.create(null);
8232
+ if (modelName !== inverseModelName || relationshipName !== inverseRelationshipName) {
8233
+ // The common case of a non-reflexive relationship, or a reflexive
8234
+ // relationship whose inverse is not itself
8235
+ this._rhsPayloads = Object.create(null);
8236
+ this._isReflexive = false;
8237
+ } else {
8238
+ // Edge case when we have a reflexive relationship to itself
8239
+ // eg user hasMany friends inverse friends
8240
+ //
8241
+ // In this case there aren't really two sides to the relationship, but
8242
+ // we set `_rhsPayloads = _lhsPayloads` to make things easier to reason
8243
+ // about
8244
+ this._rhsPayloads = this._lhsPayloads;
8245
+ this._isReflexive = true;
8246
+ }
8370
8247
 
8371
8248
  // When we push relationship payloads, just stash them in a queue until
8372
8249
  // somebody actually asks for one of them.
@@ -8377,22 +8254,22 @@ define('ember-data/-private/system/relationships/relationship-payloads', ['expor
8377
8254
  }
8378
8255
 
8379
8256
  /**
8380
- Get the payload for the relationship of an individual record.
8381
- This might return the raw payload as pushed into the store, or one computed
8382
- from the payload of the inverse relationship.
8383
- @method
8384
- */
8257
+ Get the payload for the relationship of an individual record.
8258
+ This might return the raw payload as pushed into the store, or one computed
8259
+ from the payload of the inverse relationship.
8260
+ @method
8261
+ */
8385
8262
 
8386
8263
 
8387
8264
  RelationshipPayloads.prototype.get = function get(modelName, id, relationshipName) {
8388
8265
  this._flushPending();
8389
8266
 
8390
8267
  if (this._isLHS(modelName, relationshipName)) {
8391
- return this.lhs_payloads.get(modelName, id);
8268
+ return this._lhsPayloads[id];
8392
8269
  } else {
8393
- (false && Ember.assert(modelName + ':' + relationshipName + ' is not either side of this relationship, ' + this._relInfo.lhs_key + '<->' + this._relInfo.rhs_key, this._isRHS(modelName, relationshipName)));
8270
+ (false && Ember.assert(modelName + ':' + relationshipName + ' is not either side of this relationship, ' + this._lhsModelName + ':' + this._lhsRelationshipName + '<->' + this._rhsModelName + ':' + this._rhsRelationshipName, this._isRHS(modelName, relationshipName)));
8394
8271
 
8395
- return this.rhs_payloads.get(modelName, id);
8272
+ return this._rhsPayloads[id];
8396
8273
  }
8397
8274
  };
8398
8275
 
@@ -8404,40 +8281,20 @@ define('ember-data/-private/system/relationships/relationship-payloads', ['expor
8404
8281
  this._flushPending();
8405
8282
 
8406
8283
  if (this._isLHS(modelName, relationshipName)) {
8407
- delete this.lhs_payloads.delete(modelName, id);
8284
+ delete this._lhsPayloads[id];
8408
8285
  } else {
8409
- (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)));
8286
+ (false && Ember.assert(modelName + ':' + relationshipName + ' is not either side of this relationship, ' + this._lhsModelName + ':' + this._lhsRelationshipName + '<->' + this._rhsModelName + ':' + this._rhsRelationshipName, this._isRHS(modelName, relationshipName)));
8410
8287
 
8411
- delete this.rhs_payloads.delete(modelName, id);
8288
+ delete this._rhsPayloads[id];
8412
8289
  }
8413
8290
  };
8414
8291
 
8415
8292
  RelationshipPayloads.prototype._isLHS = function _isLHS(modelName, relationshipName) {
8416
- var relInfo = this._relInfo;
8417
- var isSelfReferential = relInfo.isSelfReferential;
8418
- var isRelationship = relationshipName === relInfo.lhs_relationshipName;
8419
-
8420
- if (isRelationship === true) {
8421
- return isSelfReferential === true || // itself
8422
- modelName === relInfo.lhs_baseModelName || // base or non-polymorphic
8423
- relInfo.lhs_modelNames.indexOf(modelName) !== -1; // polymorphic
8424
- }
8425
-
8426
- return false;
8293
+ return modelName === this._lhsModelName && relationshipName === this._lhsRelationshipName;
8427
8294
  };
8428
8295
 
8429
8296
  RelationshipPayloads.prototype._isRHS = function _isRHS(modelName, relationshipName) {
8430
- var relInfo = this._relInfo;
8431
- var isSelfReferential = relInfo.isSelfReferential;
8432
- var isRelationship = relationshipName === relInfo.rhs_relationshipName;
8433
-
8434
- if (isRelationship === true) {
8435
- return isSelfReferential === true || // itself
8436
- modelName === relInfo.rhs_baseModelName || // base or non-polymorphic
8437
- relInfo.rhs_modelNames.indexOf(modelName) !== -1; // polymorphic
8438
- }
8439
-
8440
- return false;
8297
+ return modelName === this._rhsModelName && relationshipName === this._rhsRelationshipName;
8441
8298
  };
8442
8299
 
8443
8300
  RelationshipPayloads.prototype._flushPending = function _flushPending() {
@@ -8458,28 +8315,26 @@ define('ember-data/-private/system/relationships/relationship-payloads', ['expor
8458
8315
  id: id,
8459
8316
  type: modelName
8460
8317
  }
8461
- };
8462
8318
 
8463
- // start flushing this individual payload. The logic is the same whether
8464
- // it's for the left hand side of the relationship or the right hand side,
8465
- // except the role of primary and inverse idToPayloads is reversed
8466
- //
8467
- var previousPayload = void 0;
8468
- var payloadMap = void 0;
8469
- var inversePayloadMap = void 0;
8319
+ // start flushing this individual payload. The logic is the same whether
8320
+ // it's for the left hand side of the relationship or the right hand side,
8321
+ // except the role of primary and inverse idToPayloads is reversed
8322
+ //
8323
+ };var previousPayload = void 0;
8324
+ var idToPayloads = void 0;
8325
+ var inverseIdToPayloads = void 0;
8470
8326
  var inverseIsMany = void 0;
8471
-
8472
8327
  if (this._isLHS(modelName, relationshipName)) {
8473
- previousPayload = this.lhs_payloads.get(modelName, id);
8474
- payloadMap = this.lhs_payloads;
8475
- inversePayloadMap = this.rhs_payloads;
8328
+ previousPayload = this._lhsPayloads[id];
8329
+ idToPayloads = this._lhsPayloads;
8330
+ inverseIdToPayloads = this._rhsPayloads;
8476
8331
  inverseIsMany = this._rhsRelationshipIsMany;
8477
8332
  } else {
8478
- (false && Ember.assert(modelName + ':' + relationshipName + ' is not either side of this relationship, ' + this._relInfo.lhs_key + '<->' + this._relInfo.rhs_key, this._isRHS(modelName, relationshipName)));
8333
+ (false && Ember.assert(modelName + ':' + relationshipName + ' is not either side of this relationship, ' + this._lhsModelName + ':' + this._lhsRelationshipName + '<->' + this._rhsModelName + ':' + this._rhsRelationshipName, this._isRHS(modelName, relationshipName)));
8479
8334
 
8480
- previousPayload = this.rhs_payloads.get(modelName, id);
8481
- payloadMap = this.rhs_payloads;
8482
- inversePayloadMap = this.lhs_payloads;
8335
+ previousPayload = this._rhsPayloads[id];
8336
+ idToPayloads = this._rhsPayloads;
8337
+ inverseIdToPayloads = this._lhsPayloads;
8483
8338
  inverseIsMany = this._lhsRelationshipIsMany;
8484
8339
  }
8485
8340
 
@@ -8523,14 +8378,14 @@ define('ember-data/-private/system/relationships/relationship-payloads', ['expor
8523
8378
  // * undefined is NOT considered new information, we should keep original state
8524
8379
  // * anything else is considered new information, and it should win
8525
8380
  if (relationshipData.data !== undefined) {
8526
- this._removeInverse(id, previousPayload, inversePayloadMap);
8381
+ this._removeInverse(id, previousPayload, inverseIdToPayloads);
8527
8382
  }
8528
- payloadMap.set(modelName, id, relationshipData);
8529
- this._populateInverse(relationshipData, inverseRelationshipData, inversePayloadMap, inverseIsMany);
8383
+ idToPayloads[id] = relationshipData;
8384
+ this._populateInverse(relationshipData, inverseRelationshipData, inverseIdToPayloads, inverseIsMany);
8530
8385
  }
8531
8386
  };
8532
8387
 
8533
- RelationshipPayloads.prototype._populateInverse = function _populateInverse(relationshipData, inversePayload, inversePayloadMap, inverseIsMany) {
8388
+ RelationshipPayloads.prototype._populateInverse = function _populateInverse(relationshipData, inversePayload, inverseIdToPayloads, inverseIsMany) {
8534
8389
  if (!relationshipData.data) {
8535
8390
  // This id doesn't have an inverse, eg a belongsTo with a payload
8536
8391
  // { data: null }, so there's nothing to populate
@@ -8539,24 +8394,22 @@ define('ember-data/-private/system/relationships/relationship-payloads', ['expor
8539
8394
 
8540
8395
  if (Array.isArray(relationshipData.data)) {
8541
8396
  for (var i = 0; i < relationshipData.data.length; ++i) {
8542
- var resourceIdentifier = relationshipData.data[i];
8543
- this._addToInverse(inversePayload, resourceIdentifier, inversePayloadMap, inverseIsMany);
8397
+ var inverseId = relationshipData.data[i].id;
8398
+ this._addToInverse(inversePayload, inverseId, inverseIdToPayloads, inverseIsMany);
8544
8399
  }
8545
8400
  } else {
8546
- var _resourceIdentifier = relationshipData.data;
8547
- this._addToInverse(inversePayload, _resourceIdentifier, inversePayloadMap, inverseIsMany);
8401
+ var _inverseId = relationshipData.data.id;
8402
+ this._addToInverse(inversePayload, _inverseId, inverseIdToPayloads, inverseIsMany);
8548
8403
  }
8549
8404
  };
8550
8405
 
8551
- RelationshipPayloads.prototype._addToInverse = function _addToInverse(inversePayload, resourceIdentifier, inversePayloadMap, inverseIsMany) {
8552
- var relInfo = this._relInfo;
8553
-
8554
- if (relInfo.isReflexive && inversePayload.data.id === resourceIdentifier.id) {
8406
+ RelationshipPayloads.prototype._addToInverse = function _addToInverse(inversePayload, inverseId, inverseIdToPayloads, inverseIsMany) {
8407
+ if (this._isReflexive && inversePayload.data.id === inverseId) {
8555
8408
  // eg <user:1>.friends = [{ id: 1, type: 'user' }]
8556
8409
  return;
8557
8410
  }
8558
8411
 
8559
- var existingPayload = inversePayloadMap.get(resourceIdentifier.type, resourceIdentifier.id);
8412
+ var existingPayload = inverseIdToPayloads[inverseId];
8560
8413
  var existingData = existingPayload && existingPayload.data;
8561
8414
 
8562
8415
  if (existingData) {
@@ -8566,22 +8419,22 @@ define('ember-data/-private/system/relationships/relationship-payloads', ['expor
8566
8419
  if (Array.isArray(existingData)) {
8567
8420
  existingData.push(inversePayload.data);
8568
8421
  } else {
8569
- inversePayloadMap.set(resourceIdentifier.type, resourceIdentifier.id, inversePayload);
8422
+ inverseIdToPayloads[inverseId] = inversePayload;
8570
8423
  }
8571
8424
  } else {
8572
8425
  // first time we're populating the inverse side
8573
8426
  //
8574
8427
  if (inverseIsMany) {
8575
- inversePayloadMap.set(resourceIdentifier.type, resourceIdentifier.id, {
8428
+ inverseIdToPayloads[inverseId] = {
8576
8429
  data: [inversePayload.data]
8577
- });
8430
+ };
8578
8431
  } else {
8579
- inversePayloadMap.set(resourceIdentifier.type, resourceIdentifier.id, inversePayload);
8432
+ inverseIdToPayloads[inverseId] = inversePayload;
8580
8433
  }
8581
8434
  }
8582
8435
  };
8583
8436
 
8584
- RelationshipPayloads.prototype._removeInverse = function _removeInverse(id, previousPayload, inversePayloadMap) {
8437
+ RelationshipPayloads.prototype._removeInverse = function _removeInverse(id, previousPayload, inverseIdToPayloads) {
8585
8438
  var data = previousPayload && previousPayload.data;
8586
8439
  if (!data) {
8587
8440
  // either this is the first time we've seen a payload for this id, or its
@@ -8596,16 +8449,15 @@ define('ember-data/-private/system/relationships/relationship-payloads', ['expor
8596
8449
  if (Array.isArray(data)) {
8597
8450
  // TODO: diff rather than removeall addall?
8598
8451
  for (var i = 0; i < data.length; ++i) {
8599
- var resourceIdentifier = data[i];
8600
- this._removeFromInverse(id, resourceIdentifier, inversePayloadMap);
8452
+ this._removeFromInverse(id, data[i].id, inverseIdToPayloads);
8601
8453
  }
8602
8454
  } else {
8603
- this._removeFromInverse(id, data, inversePayloadMap);
8455
+ this._removeFromInverse(id, data.id, inverseIdToPayloads);
8604
8456
  }
8605
8457
  };
8606
8458
 
8607
- RelationshipPayloads.prototype._removeFromInverse = function _removeFromInverse(id, resourceIdentifier, inversePayloads) {
8608
- var inversePayload = inversePayloads.get(resourceIdentifier.type, resourceIdentifier.id);
8459
+ RelationshipPayloads.prototype._removeFromInverse = function _removeFromInverse(id, inverseId, inversePayloads) {
8460
+ var inversePayload = inversePayloads[inverseId];
8609
8461
  var data = inversePayload && inversePayload.data;
8610
8462
 
8611
8463
  if (!data) {
@@ -8617,23 +8469,21 @@ define('ember-data/-private/system/relationships/relationship-payloads', ['expor
8617
8469
  return x.id !== id;
8618
8470
  });
8619
8471
  } else {
8620
- inversePayloads.set(resourceIdentifier.type, resourceIdentifier.id, {
8472
+ inversePayloads[inverseId] = {
8621
8473
  data: null
8622
- });
8474
+ };
8623
8475
  }
8624
8476
  };
8625
8477
 
8626
8478
  _createClass(RelationshipPayloads, [{
8627
8479
  key: '_lhsRelationshipIsMany',
8628
8480
  get: function () {
8629
- var meta = this._relInfo.lhs_relationshipMeta;
8630
- return meta !== null && meta.kind === 'hasMany';
8481
+ return this._lhsRelationshipMeta && this._lhsRelationshipMeta.kind === 'hasMany';
8631
8482
  }
8632
8483
  }, {
8633
8484
  key: '_rhsRelationshipIsMany',
8634
8485
  get: function () {
8635
- var meta = this._relInfo.rhs_relationshipMeta;
8636
- return meta !== null && meta.kind === 'hasMany';
8486
+ return this._rhsRelationshipMeta && this._rhsRelationshipMeta.kind === 'hasMany';
8637
8487
  }
8638
8488
  }]);
8639
8489
 
@@ -16481,11 +16331,14 @@ define('ember-data/serializers/json-api', ['exports', 'ember', 'ember-inflector'
16481
16331
  }
16482
16332
 
16483
16333
  if (Array.isArray(documentHash.included)) {
16484
- var _ret = new Array(documentHash.included.length);
16485
-
16334
+ var _ret = new Array();
16486
16335
  for (var _i = 0; _i < documentHash.included.length; _i++) {
16487
16336
  var included = documentHash.included[_i];
16488
- _ret[_i] = this._normalizeResourceHelper(included);
16337
+ var normalized = this._normalizeResourceHelper(included);
16338
+ if (normalized !== null) {
16339
+ // can be null when unknown type is encountered
16340
+ _ret.push(normalized);
16341
+ }
16489
16342
  }
16490
16343
 
16491
16344
  documentHash.included = _ret;
@@ -18414,7 +18267,7 @@ define("ember-data/version", ["exports"], function (exports) {
18414
18267
  "use strict";
18415
18268
 
18416
18269
  exports.__esModule = true;
18417
- exports.default = "2.16.4";
18270
+ exports.default = "2.17.0-beta.1";
18418
18271
  });
18419
18272
  define("ember-inflector", ["module", "exports", "ember", "ember-inflector/lib/system", "ember-inflector/lib/ext/string"], function (module, exports, _ember, _system) {
18420
18273
  "use strict";