ember-data-source 2.16.1 → 2.16.4
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 +4 -4
- data/dist/globals/ember-data.js +277 -128
- data/dist/globals/ember-data.min.js +5 -5
- data/dist/globals/ember-data.prod.js +274 -127
- data/package.json +9 -11
- metadata +3 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4c5b90c9ff97dfbcc9ed8c8ab13c9836ef49b207
|
4
|
+
data.tar.gz: 80b2b487ad5e627347751cb413ed0031e74a27c1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0244b9de6b874ad35c685c5bbefaaf2cf8258934b8807e24a8d8a906cab63829a8881b4bbe4c1f511951672403fa56f2247bf06ecbb38f105a30fcb82a73607d
|
7
|
+
data.tar.gz: 5e4b6be7d269ab882a74e9dff4c86e63890ed8b72f515af7a46ba7610d2b4c92347a1907aadd5eba10567c91a6cb2d38c18f2f862ccb159413b5b7866822caf7
|
data/dist/globals/ember-data.js
CHANGED
@@ -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.
|
9
|
+
* @version 2.16.4
|
10
10
|
*/
|
11
11
|
|
12
12
|
var loader, define, requireModule, require, requirejs;
|
@@ -4806,6 +4806,10 @@ 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
|
+
*/
|
4809
4813
|
meta.parentType = proto.constructor;
|
4810
4814
|
}
|
4811
4815
|
}
|
@@ -7595,7 +7599,7 @@ define('ember-data/-private/system/relationship-meta', ['exports', 'ember-inflec
|
|
7595
7599
|
}
|
7596
7600
|
|
7597
7601
|
function relationshipFromMeta(meta) {
|
7598
|
-
|
7602
|
+
return {
|
7599
7603
|
key: meta.key,
|
7600
7604
|
kind: meta.kind,
|
7601
7605
|
type: typeForRelationshipMeta(meta),
|
@@ -7604,12 +7608,6 @@ define('ember-data/-private/system/relationship-meta', ['exports', 'ember-inflec
|
|
7604
7608
|
parentType: meta.parentType,
|
7605
7609
|
isRelationship: true
|
7606
7610
|
};
|
7607
|
-
|
7608
|
-
if (false) {
|
7609
|
-
result.parentType = meta.parentType;
|
7610
|
-
}
|
7611
|
-
|
7612
|
-
return result;
|
7613
7611
|
}
|
7614
7612
|
});
|
7615
7613
|
define('ember-data/-private/system/relationships/belongs-to', ['exports', 'ember', 'ember-data/-private/system/normalize-model-name'], function (exports, _ember, _normalizeModelName) {
|
@@ -8015,7 +8013,8 @@ define('ember-data/-private/system/relationships/relationship-payloads-manager',
|
|
8015
8013
|
}
|
8016
8014
|
}
|
8017
8015
|
|
8018
|
-
var
|
8016
|
+
var get = _ember.default.get;
|
8017
|
+
var assert = _ember.default.assert;
|
8019
8018
|
|
8020
8019
|
/**
|
8021
8020
|
Manages relationship payloads for a given store, for uninitialized
|
@@ -8078,6 +8077,7 @@ define('ember-data/-private/system/relationships/relationship-payloads-manager',
|
|
8078
8077
|
this._store = store;
|
8079
8078
|
// cache of `RelationshipPayload`s
|
8080
8079
|
this._cache = Object.create(null);
|
8080
|
+
this._inverseLookupCache = new _relationshipPayloads.TypeCache();
|
8081
8081
|
}
|
8082
8082
|
|
8083
8083
|
/**
|
@@ -8098,9 +8098,7 @@ define('ember-data/-private/system/relationships/relationship-payloads-manager',
|
|
8098
8098
|
|
8099
8099
|
|
8100
8100
|
RelationshipPayloadsManager.prototype.get = function get(modelName, id, relationshipName) {
|
8101
|
-
var
|
8102
|
-
var relationshipsByName = _get(modelClass, 'relationshipsByName');
|
8103
|
-
var relationshipPayloads = this._getRelationshipPayloads(modelName, relationshipName, modelClass, relationshipsByName, false);
|
8101
|
+
var relationshipPayloads = this._getRelationshipPayloads(modelName, relationshipName, false);
|
8104
8102
|
return relationshipPayloads && relationshipPayloads.get(modelName, id, relationshipName);
|
8105
8103
|
};
|
8106
8104
|
|
@@ -8111,10 +8109,8 @@ define('ember-data/-private/system/relationships/relationship-payloads-manager',
|
|
8111
8109
|
return;
|
8112
8110
|
}
|
8113
8111
|
|
8114
|
-
var modelClass = this._store._modelFor(modelName);
|
8115
|
-
var relationshipsByName = _get(modelClass, 'relationshipsByName');
|
8116
8112
|
Object.keys(relationshipsData).forEach(function (key) {
|
8117
|
-
var relationshipPayloads = _this._getRelationshipPayloads(modelName, key,
|
8113
|
+
var relationshipPayloads = _this._getRelationshipPayloads(modelName, key, true);
|
8118
8114
|
if (relationshipPayloads) {
|
8119
8115
|
relationshipPayloads.push(modelName, id, key, relationshipsData[key]);
|
8120
8116
|
}
|
@@ -8125,51 +8121,153 @@ define('ember-data/-private/system/relationships/relationship-payloads-manager',
|
|
8125
8121
|
var _this2 = this;
|
8126
8122
|
|
8127
8123
|
var modelClass = this._store._modelFor(modelName);
|
8128
|
-
var relationshipsByName =
|
8124
|
+
var relationshipsByName = get(modelClass, 'relationshipsByName');
|
8129
8125
|
relationshipsByName.forEach(function (_, relationshipName) {
|
8130
|
-
var relationshipPayloads = _this2._getRelationshipPayloads(modelName, relationshipName,
|
8126
|
+
var relationshipPayloads = _this2._getRelationshipPayloads(modelName, relationshipName, false);
|
8131
8127
|
if (relationshipPayloads) {
|
8132
8128
|
relationshipPayloads.unload(modelName, id, relationshipName);
|
8133
8129
|
}
|
8134
8130
|
});
|
8135
8131
|
};
|
8136
8132
|
|
8137
|
-
RelationshipPayloadsManager.prototype._getRelationshipPayloads = function _getRelationshipPayloads(modelName, relationshipName,
|
8138
|
-
|
8133
|
+
RelationshipPayloadsManager.prototype._getRelationshipPayloads = function _getRelationshipPayloads(modelName, relationshipName, init) {
|
8134
|
+
var relInfo = this.getRelationshipInfo(modelName, relationshipName);
|
8135
|
+
|
8136
|
+
if (relInfo === null) {
|
8139
8137
|
return;
|
8140
8138
|
}
|
8141
8139
|
|
8142
|
-
var
|
8143
|
-
|
8144
|
-
|
8140
|
+
var cache = this._cache[relInfo.lhs_key];
|
8141
|
+
|
8142
|
+
if (!cache && init) {
|
8143
|
+
return this._initializeRelationshipPayloads(relInfo);
|
8145
8144
|
}
|
8146
8145
|
|
8147
|
-
return
|
8146
|
+
return cache;
|
8148
8147
|
};
|
8149
8148
|
|
8150
|
-
RelationshipPayloadsManager.prototype.
|
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);
|
8151
8169
|
var relationshipMeta = relationshipsByName.get(relationshipName);
|
8152
|
-
var
|
8153
|
-
|
8154
|
-
|
8155
|
-
|
8156
|
-
|
8157
|
-
|
8158
|
-
|
8159
|
-
|
8160
|
-
|
8161
|
-
|
8162
|
-
|
8163
|
-
|
8164
|
-
|
8165
|
-
|
8166
|
-
|
8167
|
-
|
8168
|
-
|
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;
|
8169
8196
|
}
|
8170
8197
|
|
8171
|
-
|
8172
|
-
|
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);
|
8210
|
+
}
|
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
|
+
|
8266
|
+
if (existingPayloads !== undefined) {
|
8267
|
+
this._cache[lhsKey] = existingPayloads;
|
8268
|
+
return existingPayloads;
|
8269
|
+
}
|
8270
|
+
}
|
8173
8271
|
|
8174
8272
|
// populate the cache for both sides of the relationship, as they both use
|
8175
8273
|
// the same `RelationshipPayloads`.
|
@@ -8177,7 +8275,13 @@ define('ember-data/-private/system/relationships/relationship-payloads-manager',
|
|
8177
8275
|
// This works out better than creating a single common key, because to
|
8178
8276
|
// compute that key we would need to do work to look up the inverse
|
8179
8277
|
//
|
8180
|
-
|
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;
|
8181
8285
|
};
|
8182
8286
|
|
8183
8287
|
return RelationshipPayloadsManager;
|
@@ -8190,12 +8294,6 @@ define('ember-data/-private/system/relationships/relationship-payloads', ['expor
|
|
8190
8294
|
|
8191
8295
|
exports.__esModule = true;
|
8192
8296
|
|
8193
|
-
function _classCallCheck(instance, Constructor) {
|
8194
|
-
if (!(instance instanceof Constructor)) {
|
8195
|
-
throw new TypeError("Cannot call a class as a function");
|
8196
|
-
}
|
8197
|
-
}
|
8198
|
-
|
8199
8297
|
var _createClass = function () {
|
8200
8298
|
function defineProperties(target, props) {
|
8201
8299
|
for (var i = 0; i < props.length; i++) {
|
@@ -8214,38 +8312,62 @@ define('ember-data/-private/system/relationships/relationship-payloads', ['expor
|
|
8214
8312
|
};
|
8215
8313
|
}();
|
8216
8314
|
|
8217
|
-
|
8218
|
-
|
8219
|
-
|
8315
|
+
function _classCallCheck(instance, Constructor) {
|
8316
|
+
if (!(instance instanceof Constructor)) {
|
8317
|
+
throw new TypeError("Cannot call a class as a function");
|
8318
|
+
}
|
8319
|
+
}
|
8220
8320
|
|
8221
|
-
|
8321
|
+
var TypeCache = exports.TypeCache = function () {
|
8322
|
+
function TypeCache() {
|
8323
|
+
_classCallCheck(this, TypeCache);
|
8222
8324
|
|
8223
|
-
this.
|
8224
|
-
|
8225
|
-
this._lhsRelationshipMeta = relationshipMeta;
|
8325
|
+
this.types = Object.create(null);
|
8326
|
+
}
|
8226
8327
|
|
8227
|
-
|
8228
|
-
|
8229
|
-
this._rhsRelationshipMeta = inverseRelationshipMeta;
|
8328
|
+
TypeCache.prototype.get = function get(modelName, id) {
|
8329
|
+
var types = this.types;
|
8230
8330
|
|
8231
|
-
|
8232
|
-
|
8233
|
-
|
8234
|
-
|
8235
|
-
|
8236
|
-
|
8237
|
-
|
8238
|
-
|
8239
|
-
|
8240
|
-
|
8241
|
-
|
8242
|
-
|
8243
|
-
|
8244
|
-
// about
|
8245
|
-
this._rhsPayloads = this._lhsPayloads;
|
8246
|
-
this._isReflexive = true;
|
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);
|
8247
8344
|
}
|
8248
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
|
+
var RelationshipPayloads = function () {
|
8362
|
+
function RelationshipPayloads(relInfo) {
|
8363
|
+
_classCallCheck(this, RelationshipPayloads);
|
8364
|
+
|
8365
|
+
this._relInfo = relInfo;
|
8366
|
+
|
8367
|
+
// 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();
|
8370
|
+
|
8249
8371
|
// When we push relationship payloads, just stash them in a queue until
|
8250
8372
|
// somebody actually asks for one of them.
|
8251
8373
|
//
|
@@ -8255,22 +8377,22 @@ define('ember-data/-private/system/relationships/relationship-payloads', ['expor
|
|
8255
8377
|
}
|
8256
8378
|
|
8257
8379
|
/**
|
8258
|
-
|
8259
|
-
|
8260
|
-
|
8261
|
-
|
8262
|
-
|
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
|
+
*/
|
8263
8385
|
|
8264
8386
|
|
8265
8387
|
RelationshipPayloads.prototype.get = function get(modelName, id, relationshipName) {
|
8266
8388
|
this._flushPending();
|
8267
8389
|
|
8268
8390
|
if (this._isLHS(modelName, relationshipName)) {
|
8269
|
-
return this.
|
8391
|
+
return this.lhs_payloads.get(modelName, id);
|
8270
8392
|
} else {
|
8271
|
-
(false && Ember.assert(modelName + ':' + relationshipName + ' is not either side of this relationship, ' + this.
|
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)));
|
8272
8394
|
|
8273
|
-
return this.
|
8395
|
+
return this.rhs_payloads.get(modelName, id);
|
8274
8396
|
}
|
8275
8397
|
};
|
8276
8398
|
|
@@ -8282,20 +8404,40 @@ define('ember-data/-private/system/relationships/relationship-payloads', ['expor
|
|
8282
8404
|
this._flushPending();
|
8283
8405
|
|
8284
8406
|
if (this._isLHS(modelName, relationshipName)) {
|
8285
|
-
delete this.
|
8407
|
+
delete this.lhs_payloads.delete(modelName, id);
|
8286
8408
|
} else {
|
8287
|
-
(false && Ember.assert(modelName + ':' + relationshipName + ' is not either side of this relationship, ' + this.
|
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)));
|
8288
8410
|
|
8289
|
-
delete this.
|
8411
|
+
delete this.rhs_payloads.delete(modelName, id);
|
8290
8412
|
}
|
8291
8413
|
};
|
8292
8414
|
|
8293
8415
|
RelationshipPayloads.prototype._isLHS = function _isLHS(modelName, relationshipName) {
|
8294
|
-
|
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;
|
8295
8427
|
};
|
8296
8428
|
|
8297
8429
|
RelationshipPayloads.prototype._isRHS = function _isRHS(modelName, relationshipName) {
|
8298
|
-
|
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;
|
8299
8441
|
};
|
8300
8442
|
|
8301
8443
|
RelationshipPayloads.prototype._flushPending = function _flushPending() {
|
@@ -8316,26 +8458,28 @@ define('ember-data/-private/system/relationships/relationship-payloads', ['expor
|
|
8316
8458
|
id: id,
|
8317
8459
|
type: modelName
|
8318
8460
|
}
|
8461
|
+
};
|
8319
8462
|
|
8320
|
-
|
8321
|
-
|
8322
|
-
|
8323
|
-
|
8324
|
-
|
8325
|
-
var
|
8326
|
-
var
|
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;
|
8327
8470
|
var inverseIsMany = void 0;
|
8471
|
+
|
8328
8472
|
if (this._isLHS(modelName, relationshipName)) {
|
8329
|
-
previousPayload = this.
|
8330
|
-
|
8331
|
-
|
8473
|
+
previousPayload = this.lhs_payloads.get(modelName, id);
|
8474
|
+
payloadMap = this.lhs_payloads;
|
8475
|
+
inversePayloadMap = this.rhs_payloads;
|
8332
8476
|
inverseIsMany = this._rhsRelationshipIsMany;
|
8333
8477
|
} else {
|
8334
|
-
(false && Ember.assert(modelName + ':' + relationshipName + ' is not either side of this relationship, ' + this.
|
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)));
|
8335
8479
|
|
8336
|
-
previousPayload = this.
|
8337
|
-
|
8338
|
-
|
8480
|
+
previousPayload = this.rhs_payloads.get(modelName, id);
|
8481
|
+
payloadMap = this.rhs_payloads;
|
8482
|
+
inversePayloadMap = this.lhs_payloads;
|
8339
8483
|
inverseIsMany = this._lhsRelationshipIsMany;
|
8340
8484
|
}
|
8341
8485
|
|
@@ -8379,14 +8523,14 @@ define('ember-data/-private/system/relationships/relationship-payloads', ['expor
|
|
8379
8523
|
// * undefined is NOT considered new information, we should keep original state
|
8380
8524
|
// * anything else is considered new information, and it should win
|
8381
8525
|
if (relationshipData.data !== undefined) {
|
8382
|
-
this._removeInverse(id, previousPayload,
|
8526
|
+
this._removeInverse(id, previousPayload, inversePayloadMap);
|
8383
8527
|
}
|
8384
|
-
|
8385
|
-
this._populateInverse(relationshipData, inverseRelationshipData,
|
8528
|
+
payloadMap.set(modelName, id, relationshipData);
|
8529
|
+
this._populateInverse(relationshipData, inverseRelationshipData, inversePayloadMap, inverseIsMany);
|
8386
8530
|
}
|
8387
8531
|
};
|
8388
8532
|
|
8389
|
-
RelationshipPayloads.prototype._populateInverse = function _populateInverse(relationshipData, inversePayload,
|
8533
|
+
RelationshipPayloads.prototype._populateInverse = function _populateInverse(relationshipData, inversePayload, inversePayloadMap, inverseIsMany) {
|
8390
8534
|
if (!relationshipData.data) {
|
8391
8535
|
// This id doesn't have an inverse, eg a belongsTo with a payload
|
8392
8536
|
// { data: null }, so there's nothing to populate
|
@@ -8395,22 +8539,24 @@ define('ember-data/-private/system/relationships/relationship-payloads', ['expor
|
|
8395
8539
|
|
8396
8540
|
if (Array.isArray(relationshipData.data)) {
|
8397
8541
|
for (var i = 0; i < relationshipData.data.length; ++i) {
|
8398
|
-
var
|
8399
|
-
this._addToInverse(inversePayload,
|
8542
|
+
var resourceIdentifier = relationshipData.data[i];
|
8543
|
+
this._addToInverse(inversePayload, resourceIdentifier, inversePayloadMap, inverseIsMany);
|
8400
8544
|
}
|
8401
8545
|
} else {
|
8402
|
-
var
|
8403
|
-
this._addToInverse(inversePayload,
|
8546
|
+
var _resourceIdentifier = relationshipData.data;
|
8547
|
+
this._addToInverse(inversePayload, _resourceIdentifier, inversePayloadMap, inverseIsMany);
|
8404
8548
|
}
|
8405
8549
|
};
|
8406
8550
|
|
8407
|
-
RelationshipPayloads.prototype._addToInverse = function _addToInverse(inversePayload,
|
8408
|
-
|
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) {
|
8409
8555
|
// eg <user:1>.friends = [{ id: 1, type: 'user' }]
|
8410
8556
|
return;
|
8411
8557
|
}
|
8412
8558
|
|
8413
|
-
var existingPayload =
|
8559
|
+
var existingPayload = inversePayloadMap.get(resourceIdentifier.type, resourceIdentifier.id);
|
8414
8560
|
var existingData = existingPayload && existingPayload.data;
|
8415
8561
|
|
8416
8562
|
if (existingData) {
|
@@ -8420,22 +8566,22 @@ define('ember-data/-private/system/relationships/relationship-payloads', ['expor
|
|
8420
8566
|
if (Array.isArray(existingData)) {
|
8421
8567
|
existingData.push(inversePayload.data);
|
8422
8568
|
} else {
|
8423
|
-
|
8569
|
+
inversePayloadMap.set(resourceIdentifier.type, resourceIdentifier.id, inversePayload);
|
8424
8570
|
}
|
8425
8571
|
} else {
|
8426
8572
|
// first time we're populating the inverse side
|
8427
8573
|
//
|
8428
8574
|
if (inverseIsMany) {
|
8429
|
-
|
8575
|
+
inversePayloadMap.set(resourceIdentifier.type, resourceIdentifier.id, {
|
8430
8576
|
data: [inversePayload.data]
|
8431
|
-
};
|
8577
|
+
});
|
8432
8578
|
} else {
|
8433
|
-
|
8579
|
+
inversePayloadMap.set(resourceIdentifier.type, resourceIdentifier.id, inversePayload);
|
8434
8580
|
}
|
8435
8581
|
}
|
8436
8582
|
};
|
8437
8583
|
|
8438
|
-
RelationshipPayloads.prototype._removeInverse = function _removeInverse(id, previousPayload,
|
8584
|
+
RelationshipPayloads.prototype._removeInverse = function _removeInverse(id, previousPayload, inversePayloadMap) {
|
8439
8585
|
var data = previousPayload && previousPayload.data;
|
8440
8586
|
if (!data) {
|
8441
8587
|
// either this is the first time we've seen a payload for this id, or its
|
@@ -8450,15 +8596,16 @@ define('ember-data/-private/system/relationships/relationship-payloads', ['expor
|
|
8450
8596
|
if (Array.isArray(data)) {
|
8451
8597
|
// TODO: diff rather than removeall addall?
|
8452
8598
|
for (var i = 0; i < data.length; ++i) {
|
8453
|
-
|
8599
|
+
var resourceIdentifier = data[i];
|
8600
|
+
this._removeFromInverse(id, resourceIdentifier, inversePayloadMap);
|
8454
8601
|
}
|
8455
8602
|
} else {
|
8456
|
-
this._removeFromInverse(id, data
|
8603
|
+
this._removeFromInverse(id, data, inversePayloadMap);
|
8457
8604
|
}
|
8458
8605
|
};
|
8459
8606
|
|
8460
|
-
RelationshipPayloads.prototype._removeFromInverse = function _removeFromInverse(id,
|
8461
|
-
var inversePayload = inversePayloads
|
8607
|
+
RelationshipPayloads.prototype._removeFromInverse = function _removeFromInverse(id, resourceIdentifier, inversePayloads) {
|
8608
|
+
var inversePayload = inversePayloads.get(resourceIdentifier.type, resourceIdentifier.id);
|
8462
8609
|
var data = inversePayload && inversePayload.data;
|
8463
8610
|
|
8464
8611
|
if (!data) {
|
@@ -8470,21 +8617,23 @@ define('ember-data/-private/system/relationships/relationship-payloads', ['expor
|
|
8470
8617
|
return x.id !== id;
|
8471
8618
|
});
|
8472
8619
|
} else {
|
8473
|
-
inversePayloads
|
8620
|
+
inversePayloads.set(resourceIdentifier.type, resourceIdentifier.id, {
|
8474
8621
|
data: null
|
8475
|
-
};
|
8622
|
+
});
|
8476
8623
|
}
|
8477
8624
|
};
|
8478
8625
|
|
8479
8626
|
_createClass(RelationshipPayloads, [{
|
8480
8627
|
key: '_lhsRelationshipIsMany',
|
8481
8628
|
get: function () {
|
8482
|
-
|
8629
|
+
var meta = this._relInfo.lhs_relationshipMeta;
|
8630
|
+
return meta !== null && meta.kind === 'hasMany';
|
8483
8631
|
}
|
8484
8632
|
}, {
|
8485
8633
|
key: '_rhsRelationshipIsMany',
|
8486
8634
|
get: function () {
|
8487
|
-
|
8635
|
+
var meta = this._relInfo.rhs_relationshipMeta;
|
8636
|
+
return meta !== null && meta.kind === 'hasMany';
|
8488
8637
|
}
|
8489
8638
|
}]);
|
8490
8639
|
|
@@ -18265,7 +18414,7 @@ define("ember-data/version", ["exports"], function (exports) {
|
|
18265
18414
|
"use strict";
|
18266
18415
|
|
18267
18416
|
exports.__esModule = true;
|
18268
|
-
exports.default = "2.16.
|
18417
|
+
exports.default = "2.16.4";
|
18269
18418
|
});
|
18270
18419
|
define("ember-inflector", ["module", "exports", "ember", "ember-inflector/lib/system", "ember-inflector/lib/ext/string"], function (module, exports, _ember, _system) {
|
18271
18420
|
"use strict";
|