ember-data-source 2.16.4 → 2.17.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: 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";