ember-data-source 2.17.0 → 2.17.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 +4 -4
- data/dist/globals/ember-data.js +276 -128
- data/dist/globals/ember-data.min.js +5 -5
- data/dist/globals/ember-data.prod.js +273 -127
- data/package.json +1 -1
- 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: 4574a31748687aa7ebae8d3617103105219a4540
|
|
4
|
+
data.tar.gz: 55782e6526a409427b5f98aef12c813da5ce648f
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 15e8aa24026fa58124c18e6ca74360e8d7ef0a5da6edb9cc07cb54383502a7fcf231faf09cafb8677141642455287cd799ef639224372698ee13312d9b807cc2
|
|
7
|
+
data.tar.gz: bb8aafb9ddcf131b6b8d7ca165c0e2277e72329b36c7800b41d4e06c72289f67f7c149b35a8c81dc9cf8758cb21b0b127d2b220047fcb05430f9672f1ceeceeb
|
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.17.
|
|
9
|
+
* @version 2.17.1
|
|
10
10
|
*/
|
|
11
11
|
|
|
12
12
|
var loader, define, requireModule, require, requirejs;
|
|
@@ -4802,6 +4802,10 @@ define('ember-data/-private/system/model/model', ['exports', 'ember-data/-privat
|
|
|
4802
4802
|
// the computed property.
|
|
4803
4803
|
var meta = value.meta();
|
|
4804
4804
|
|
|
4805
|
+
/*
|
|
4806
|
+
This is buggy because if the parent has never been looked up
|
|
4807
|
+
via `modelFor` it will not have `modelName` set.
|
|
4808
|
+
*/
|
|
4805
4809
|
meta.parentType = proto.constructor;
|
|
4806
4810
|
}
|
|
4807
4811
|
}
|
|
@@ -7614,7 +7618,7 @@ define('ember-data/-private/system/relationship-meta', ['exports', 'ember-inflec
|
|
|
7614
7618
|
}
|
|
7615
7619
|
|
|
7616
7620
|
function relationshipFromMeta(meta) {
|
|
7617
|
-
|
|
7621
|
+
return {
|
|
7618
7622
|
key: meta.key,
|
|
7619
7623
|
kind: meta.kind,
|
|
7620
7624
|
type: typeForRelationshipMeta(meta),
|
|
@@ -7623,12 +7627,6 @@ define('ember-data/-private/system/relationship-meta', ['exports', 'ember-inflec
|
|
|
7623
7627
|
parentType: meta.parentType,
|
|
7624
7628
|
isRelationship: true
|
|
7625
7629
|
};
|
|
7626
|
-
|
|
7627
|
-
if (false) {
|
|
7628
|
-
result.parentType = meta.parentType;
|
|
7629
|
-
}
|
|
7630
|
-
|
|
7631
|
-
return result;
|
|
7632
7630
|
}
|
|
7633
7631
|
});
|
|
7634
7632
|
define('ember-data/-private/system/relationships/belongs-to', ['exports', 'ember-data/-private/system/normalize-model-name'], function (exports, _normalizeModelName) {
|
|
@@ -8038,7 +8036,7 @@ define('ember-data/-private/system/relationships/relationship-payloads-manager',
|
|
|
8038
8036
|
}
|
|
8039
8037
|
}
|
|
8040
8038
|
|
|
8041
|
-
var
|
|
8039
|
+
var get = Ember.get;
|
|
8042
8040
|
|
|
8043
8041
|
var RelationshipPayloadsManager = function () {
|
|
8044
8042
|
function RelationshipPayloadsManager(store) {
|
|
@@ -8047,6 +8045,7 @@ define('ember-data/-private/system/relationships/relationship-payloads-manager',
|
|
|
8047
8045
|
this._store = store;
|
|
8048
8046
|
// cache of `RelationshipPayload`s
|
|
8049
8047
|
this._cache = Object.create(null);
|
|
8048
|
+
this._inverseLookupCache = new _relationshipPayloads.TypeCache();
|
|
8050
8049
|
}
|
|
8051
8050
|
|
|
8052
8051
|
/**
|
|
@@ -8067,9 +8066,7 @@ define('ember-data/-private/system/relationships/relationship-payloads-manager',
|
|
|
8067
8066
|
|
|
8068
8067
|
|
|
8069
8068
|
RelationshipPayloadsManager.prototype.get = function get(modelName, id, relationshipName) {
|
|
8070
|
-
var
|
|
8071
|
-
var relationshipsByName = _get(modelClass, 'relationshipsByName');
|
|
8072
|
-
var relationshipPayloads = this._getRelationshipPayloads(modelName, relationshipName, modelClass, relationshipsByName, false);
|
|
8069
|
+
var relationshipPayloads = this._getRelationshipPayloads(modelName, relationshipName, false);
|
|
8073
8070
|
return relationshipPayloads && relationshipPayloads.get(modelName, id, relationshipName);
|
|
8074
8071
|
};
|
|
8075
8072
|
|
|
@@ -8080,10 +8077,8 @@ define('ember-data/-private/system/relationships/relationship-payloads-manager',
|
|
|
8080
8077
|
return;
|
|
8081
8078
|
}
|
|
8082
8079
|
|
|
8083
|
-
var modelClass = this._store._modelFor(modelName);
|
|
8084
|
-
var relationshipsByName = _get(modelClass, 'relationshipsByName');
|
|
8085
8080
|
Object.keys(relationshipsData).forEach(function (key) {
|
|
8086
|
-
var relationshipPayloads = _this._getRelationshipPayloads(modelName, key,
|
|
8081
|
+
var relationshipPayloads = _this._getRelationshipPayloads(modelName, key, true);
|
|
8087
8082
|
if (relationshipPayloads) {
|
|
8088
8083
|
relationshipPayloads.push(modelName, id, key, relationshipsData[key]);
|
|
8089
8084
|
}
|
|
@@ -8094,51 +8089,153 @@ define('ember-data/-private/system/relationships/relationship-payloads-manager',
|
|
|
8094
8089
|
var _this2 = this;
|
|
8095
8090
|
|
|
8096
8091
|
var modelClass = this._store._modelFor(modelName);
|
|
8097
|
-
var relationshipsByName =
|
|
8092
|
+
var relationshipsByName = get(modelClass, 'relationshipsByName');
|
|
8098
8093
|
relationshipsByName.forEach(function (_, relationshipName) {
|
|
8099
|
-
var relationshipPayloads = _this2._getRelationshipPayloads(modelName, relationshipName,
|
|
8094
|
+
var relationshipPayloads = _this2._getRelationshipPayloads(modelName, relationshipName, false);
|
|
8100
8095
|
if (relationshipPayloads) {
|
|
8101
8096
|
relationshipPayloads.unload(modelName, id, relationshipName);
|
|
8102
8097
|
}
|
|
8103
8098
|
});
|
|
8104
8099
|
};
|
|
8105
8100
|
|
|
8106
|
-
RelationshipPayloadsManager.prototype._getRelationshipPayloads = function _getRelationshipPayloads(modelName, relationshipName,
|
|
8107
|
-
|
|
8101
|
+
RelationshipPayloadsManager.prototype._getRelationshipPayloads = function _getRelationshipPayloads(modelName, relationshipName, init) {
|
|
8102
|
+
var relInfo = this.getRelationshipInfo(modelName, relationshipName);
|
|
8103
|
+
|
|
8104
|
+
if (relInfo === null) {
|
|
8108
8105
|
return;
|
|
8109
8106
|
}
|
|
8110
8107
|
|
|
8111
|
-
var
|
|
8112
|
-
|
|
8113
|
-
|
|
8108
|
+
var cache = this._cache[relInfo.lhs_key];
|
|
8109
|
+
|
|
8110
|
+
if (!cache && init) {
|
|
8111
|
+
return this._initializeRelationshipPayloads(relInfo);
|
|
8114
8112
|
}
|
|
8115
8113
|
|
|
8116
|
-
return
|
|
8114
|
+
return cache;
|
|
8117
8115
|
};
|
|
8118
8116
|
|
|
8119
|
-
RelationshipPayloadsManager.prototype.
|
|
8117
|
+
RelationshipPayloadsManager.prototype.getRelationshipInfo = function getRelationshipInfo(modelName, relationshipName) {
|
|
8118
|
+
var inverseCache = this._inverseLookupCache;
|
|
8119
|
+
var store = this._store;
|
|
8120
|
+
var cached = inverseCache.get(modelName, relationshipName);
|
|
8121
|
+
|
|
8122
|
+
// CASE: We have a cached resolution (null if no relationship exists)
|
|
8123
|
+
if (cached !== undefined) {
|
|
8124
|
+
return cached;
|
|
8125
|
+
}
|
|
8126
|
+
|
|
8127
|
+
var modelClass = store._modelFor(modelName);
|
|
8128
|
+
var relationshipsByName = get(modelClass, 'relationshipsByName');
|
|
8129
|
+
|
|
8130
|
+
// CASE: We don't have a relationship at all
|
|
8131
|
+
if (!relationshipsByName.has(relationshipName)) {
|
|
8132
|
+
inverseCache.set(modelName, relationshipName, null);
|
|
8133
|
+
return null;
|
|
8134
|
+
}
|
|
8135
|
+
|
|
8136
|
+
var inverseMeta = modelClass.inverseFor(relationshipName, store);
|
|
8120
8137
|
var relationshipMeta = relationshipsByName.get(relationshipName);
|
|
8121
|
-
var
|
|
8122
|
-
|
|
8123
|
-
|
|
8124
|
-
|
|
8125
|
-
|
|
8126
|
-
|
|
8127
|
-
|
|
8128
|
-
|
|
8129
|
-
|
|
8130
|
-
|
|
8131
|
-
|
|
8132
|
-
|
|
8133
|
-
|
|
8134
|
-
|
|
8135
|
-
|
|
8136
|
-
|
|
8137
|
-
|
|
8138
|
+
var selfIsPolymorphic = relationshipMeta.options !== undefined && relationshipMeta.options.polymorphic === true;
|
|
8139
|
+
var inverseBaseModelName = relationshipMeta.type;
|
|
8140
|
+
|
|
8141
|
+
// CASE: We have no inverse
|
|
8142
|
+
if (!inverseMeta) {
|
|
8143
|
+
var _info = {
|
|
8144
|
+
lhs_key: modelName + ':' + relationshipName,
|
|
8145
|
+
lhs_modelNames: [modelName],
|
|
8146
|
+
lhs_baseModelName: modelName,
|
|
8147
|
+
lhs_relationshipName: relationshipName,
|
|
8148
|
+
lhs_relationshipMeta: relationshipMeta,
|
|
8149
|
+
lhs_isPolymorphic: selfIsPolymorphic,
|
|
8150
|
+
rhs_key: '',
|
|
8151
|
+
rhs_modelNames: [],
|
|
8152
|
+
rhs_baseModelName: inverseBaseModelName,
|
|
8153
|
+
rhs_relationshipName: '',
|
|
8154
|
+
rhs_relationshipMeta: null,
|
|
8155
|
+
rhs_isPolymorphic: false,
|
|
8156
|
+
hasInverse: false,
|
|
8157
|
+
isSelfReferential: false, // modelName === inverseBaseModelName,
|
|
8158
|
+
isReflexive: false
|
|
8159
|
+
};
|
|
8160
|
+
|
|
8161
|
+
inverseCache.set(modelName, relationshipName, _info);
|
|
8162
|
+
|
|
8163
|
+
return _info;
|
|
8138
8164
|
}
|
|
8139
8165
|
|
|
8140
|
-
|
|
8141
|
-
|
|
8166
|
+
// CASE: We do have an inverse
|
|
8167
|
+
|
|
8168
|
+
var inverseRelationshipName = inverseMeta.name;
|
|
8169
|
+
var inverseRelationshipMeta = get(inverseMeta.type, 'relationshipsByName').get(inverseRelationshipName);
|
|
8170
|
+
var baseModelName = inverseRelationshipMeta.type;
|
|
8171
|
+
var isSelfReferential = baseModelName === inverseBaseModelName;
|
|
8172
|
+
|
|
8173
|
+
// TODO we want to assert this but this breaks all of our shoddily written tests
|
|
8174
|
+
/*
|
|
8175
|
+
if (DEBUG) {
|
|
8176
|
+
let inverseDoubleCheck = inverseMeta.type.inverseFor(inverseRelationshipName, store);
|
|
8177
|
+
assert(`The ${inverseBaseModelName}:${inverseRelationshipName} relationship declares 'inverse: null', but it was resolved as the inverse for ${baseModelName}:${relationshipName}.`, inverseDoubleCheck);
|
|
8178
|
+
}
|
|
8179
|
+
*/
|
|
8180
|
+
|
|
8181
|
+
// CASE: We may have already discovered the inverse for the baseModelName
|
|
8182
|
+
// CASE: We have already discovered the inverse
|
|
8183
|
+
cached = inverseCache.get(baseModelName, relationshipName) || inverseCache.get(inverseBaseModelName, inverseRelationshipName);
|
|
8184
|
+
if (cached) {
|
|
8185
|
+
(false && Ember.assert('The ' + inverseBaseModelName + ':' + inverseRelationshipName + ' relationship declares \'inverse: null\', but it was resolved as the inverse for ' + baseModelName + ':' + relationshipName + '.', cached.hasInverse !== false));
|
|
8186
|
+
|
|
8187
|
+
|
|
8188
|
+
var isLHS = cached.lhs_baseModelName === baseModelName;
|
|
8189
|
+
var modelNames = isLHS ? cached.lhs_modelNames : cached.rhs_modelNames;
|
|
8190
|
+
// make this lookup easier in the future by caching the key
|
|
8191
|
+
modelNames.push(modelName);
|
|
8192
|
+
inverseCache.set(modelName, relationshipName, cached);
|
|
8193
|
+
|
|
8194
|
+
return cached;
|
|
8195
|
+
}
|
|
8196
|
+
|
|
8197
|
+
var info = {
|
|
8198
|
+
lhs_key: baseModelName + ':' + relationshipName,
|
|
8199
|
+
lhs_modelNames: [modelName],
|
|
8200
|
+
lhs_baseModelName: baseModelName,
|
|
8201
|
+
lhs_relationshipName: relationshipName,
|
|
8202
|
+
lhs_relationshipMeta: relationshipMeta,
|
|
8203
|
+
lhs_isPolymorphic: selfIsPolymorphic,
|
|
8204
|
+
rhs_key: inverseBaseModelName + ':' + inverseRelationshipName,
|
|
8205
|
+
rhs_modelNames: [],
|
|
8206
|
+
rhs_baseModelName: inverseBaseModelName,
|
|
8207
|
+
rhs_relationshipName: inverseRelationshipName,
|
|
8208
|
+
rhs_relationshipMeta: inverseRelationshipMeta,
|
|
8209
|
+
rhs_isPolymorphic: inverseRelationshipMeta.options !== undefined && inverseRelationshipMeta.options.polymorphic === true,
|
|
8210
|
+
hasInverse: true,
|
|
8211
|
+
isSelfReferential: isSelfReferential,
|
|
8212
|
+
isReflexive: isSelfReferential && relationshipName === inverseRelationshipName
|
|
8213
|
+
};
|
|
8214
|
+
|
|
8215
|
+
// Create entries for the baseModelName as well as modelName to speed up
|
|
8216
|
+
// inverse lookups
|
|
8217
|
+
inverseCache.set(baseModelName, relationshipName, info);
|
|
8218
|
+
inverseCache.set(modelName, relationshipName, info);
|
|
8219
|
+
|
|
8220
|
+
// Greedily populate the inverse
|
|
8221
|
+
inverseCache.set(inverseBaseModelName, inverseRelationshipName, info);
|
|
8222
|
+
|
|
8223
|
+
return info;
|
|
8224
|
+
};
|
|
8225
|
+
|
|
8226
|
+
RelationshipPayloadsManager.prototype._initializeRelationshipPayloads = function _initializeRelationshipPayloads(relInfo) {
|
|
8227
|
+
var lhsKey = relInfo.lhs_key;
|
|
8228
|
+
var rhsKey = relInfo.rhs_key;
|
|
8229
|
+
var existingPayloads = this._cache[lhsKey];
|
|
8230
|
+
|
|
8231
|
+
if (relInfo.hasInverse === true && relInfo.rhs_isPolymorphic === true) {
|
|
8232
|
+
existingPayloads = this._cache[rhsKey];
|
|
8233
|
+
|
|
8234
|
+
if (existingPayloads !== undefined) {
|
|
8235
|
+
this._cache[lhsKey] = existingPayloads;
|
|
8236
|
+
return existingPayloads;
|
|
8237
|
+
}
|
|
8238
|
+
}
|
|
8142
8239
|
|
|
8143
8240
|
// populate the cache for both sides of the relationship, as they both use
|
|
8144
8241
|
// the same `RelationshipPayloads`.
|
|
@@ -8146,7 +8243,13 @@ define('ember-data/-private/system/relationships/relationship-payloads-manager',
|
|
|
8146
8243
|
// This works out better than creating a single common key, because to
|
|
8147
8244
|
// compute that key we would need to do work to look up the inverse
|
|
8148
8245
|
//
|
|
8149
|
-
|
|
8246
|
+
var cache = this._cache[lhsKey] = new _relationshipPayloads.default(relInfo);
|
|
8247
|
+
|
|
8248
|
+
if (relInfo.hasInverse === true) {
|
|
8249
|
+
this._cache[rhsKey] = cache;
|
|
8250
|
+
}
|
|
8251
|
+
|
|
8252
|
+
return cache;
|
|
8150
8253
|
};
|
|
8151
8254
|
|
|
8152
8255
|
return RelationshipPayloadsManager;
|
|
@@ -8159,12 +8262,6 @@ define('ember-data/-private/system/relationships/relationship-payloads', ['expor
|
|
|
8159
8262
|
|
|
8160
8263
|
exports.__esModule = true;
|
|
8161
8264
|
|
|
8162
|
-
function _classCallCheck(instance, Constructor) {
|
|
8163
|
-
if (!(instance instanceof Constructor)) {
|
|
8164
|
-
throw new TypeError("Cannot call a class as a function");
|
|
8165
|
-
}
|
|
8166
|
-
}
|
|
8167
|
-
|
|
8168
8265
|
var _createClass = function () {
|
|
8169
8266
|
function defineProperties(target, props) {
|
|
8170
8267
|
for (var i = 0; i < props.length; i++) {
|
|
@@ -8183,38 +8280,62 @@ define('ember-data/-private/system/relationships/relationship-payloads', ['expor
|
|
|
8183
8280
|
};
|
|
8184
8281
|
}();
|
|
8185
8282
|
|
|
8186
|
-
|
|
8187
|
-
|
|
8188
|
-
|
|
8283
|
+
function _classCallCheck(instance, Constructor) {
|
|
8284
|
+
if (!(instance instanceof Constructor)) {
|
|
8285
|
+
throw new TypeError("Cannot call a class as a function");
|
|
8286
|
+
}
|
|
8287
|
+
}
|
|
8189
8288
|
|
|
8190
|
-
|
|
8289
|
+
var TypeCache = exports.TypeCache = function () {
|
|
8290
|
+
function TypeCache() {
|
|
8291
|
+
_classCallCheck(this, TypeCache);
|
|
8191
8292
|
|
|
8192
|
-
this.
|
|
8193
|
-
|
|
8194
|
-
this._lhsRelationshipMeta = relationshipMeta;
|
|
8293
|
+
this.types = Object.create(null);
|
|
8294
|
+
}
|
|
8195
8295
|
|
|
8196
|
-
|
|
8197
|
-
|
|
8198
|
-
this._rhsRelationshipMeta = inverseRelationshipMeta;
|
|
8296
|
+
TypeCache.prototype.get = function get(modelName, id) {
|
|
8297
|
+
var types = this.types;
|
|
8199
8298
|
|
|
8200
|
-
|
|
8201
|
-
|
|
8202
|
-
|
|
8203
|
-
|
|
8204
|
-
|
|
8205
|
-
|
|
8206
|
-
|
|
8207
|
-
|
|
8208
|
-
|
|
8209
|
-
|
|
8210
|
-
|
|
8211
|
-
|
|
8212
|
-
|
|
8213
|
-
// about
|
|
8214
|
-
this._rhsPayloads = this._lhsPayloads;
|
|
8215
|
-
this._isReflexive = true;
|
|
8299
|
+
|
|
8300
|
+
if (types[modelName] !== undefined) {
|
|
8301
|
+
return types[modelName][id];
|
|
8302
|
+
}
|
|
8303
|
+
};
|
|
8304
|
+
|
|
8305
|
+
TypeCache.prototype.set = function set(modelName, id, payload) {
|
|
8306
|
+
var types = this.types;
|
|
8307
|
+
|
|
8308
|
+
var typeMap = types[modelName];
|
|
8309
|
+
|
|
8310
|
+
if (typeMap === undefined) {
|
|
8311
|
+
typeMap = types[modelName] = Object.create(null);
|
|
8216
8312
|
}
|
|
8217
8313
|
|
|
8314
|
+
typeMap[id] = payload;
|
|
8315
|
+
};
|
|
8316
|
+
|
|
8317
|
+
TypeCache.prototype.delete = function _delete(modelName, id) {
|
|
8318
|
+
var types = this.types;
|
|
8319
|
+
|
|
8320
|
+
|
|
8321
|
+
if (types[modelName] !== undefined) {
|
|
8322
|
+
delete types[modelName][id];
|
|
8323
|
+
}
|
|
8324
|
+
};
|
|
8325
|
+
|
|
8326
|
+
return TypeCache;
|
|
8327
|
+
}();
|
|
8328
|
+
|
|
8329
|
+
var RelationshipPayloads = function () {
|
|
8330
|
+
function RelationshipPayloads(relInfo) {
|
|
8331
|
+
_classCallCheck(this, RelationshipPayloads);
|
|
8332
|
+
|
|
8333
|
+
this._relInfo = relInfo;
|
|
8334
|
+
|
|
8335
|
+
// a map of id -> payloads for the left hand side of the relationship.
|
|
8336
|
+
this.lhs_payloads = new TypeCache();
|
|
8337
|
+
this.rhs_payloads = relInfo.isReflexive ? this.lhs_payloads : new TypeCache();
|
|
8338
|
+
|
|
8218
8339
|
// When we push relationship payloads, just stash them in a queue until
|
|
8219
8340
|
// somebody actually asks for one of them.
|
|
8220
8341
|
//
|
|
@@ -8224,22 +8345,22 @@ define('ember-data/-private/system/relationships/relationship-payloads', ['expor
|
|
|
8224
8345
|
}
|
|
8225
8346
|
|
|
8226
8347
|
/**
|
|
8227
|
-
|
|
8228
|
-
|
|
8229
|
-
|
|
8230
|
-
|
|
8231
|
-
|
|
8348
|
+
Get the payload for the relationship of an individual record.
|
|
8349
|
+
This might return the raw payload as pushed into the store, or one computed
|
|
8350
|
+
from the payload of the inverse relationship.
|
|
8351
|
+
@method
|
|
8352
|
+
*/
|
|
8232
8353
|
|
|
8233
8354
|
|
|
8234
8355
|
RelationshipPayloads.prototype.get = function get(modelName, id, relationshipName) {
|
|
8235
8356
|
this._flushPending();
|
|
8236
8357
|
|
|
8237
8358
|
if (this._isLHS(modelName, relationshipName)) {
|
|
8238
|
-
return this.
|
|
8359
|
+
return this.lhs_payloads.get(modelName, id);
|
|
8239
8360
|
} else {
|
|
8240
|
-
(false && Ember.assert(modelName + ':' + relationshipName + ' is not either side of this relationship, ' + this.
|
|
8361
|
+
(false && Ember.assert(modelName + ':' + relationshipName + ' is not either side of this relationship, ' + this._relInfo.lhs_key + '<->' + this._relInfo.rhs_key, this._isRHS(modelName, relationshipName)));
|
|
8241
8362
|
|
|
8242
|
-
return this.
|
|
8363
|
+
return this.rhs_payloads.get(modelName, id);
|
|
8243
8364
|
}
|
|
8244
8365
|
};
|
|
8245
8366
|
|
|
@@ -8251,20 +8372,40 @@ define('ember-data/-private/system/relationships/relationship-payloads', ['expor
|
|
|
8251
8372
|
this._flushPending();
|
|
8252
8373
|
|
|
8253
8374
|
if (this._isLHS(modelName, relationshipName)) {
|
|
8254
|
-
delete this.
|
|
8375
|
+
delete this.lhs_payloads.delete(modelName, id);
|
|
8255
8376
|
} else {
|
|
8256
|
-
(false && Ember.assert(modelName + ':' + relationshipName + ' is not either side of this relationship, ' + this.
|
|
8377
|
+
(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)));
|
|
8257
8378
|
|
|
8258
|
-
delete this.
|
|
8379
|
+
delete this.rhs_payloads.delete(modelName, id);
|
|
8259
8380
|
}
|
|
8260
8381
|
};
|
|
8261
8382
|
|
|
8262
8383
|
RelationshipPayloads.prototype._isLHS = function _isLHS(modelName, relationshipName) {
|
|
8263
|
-
|
|
8384
|
+
var relInfo = this._relInfo;
|
|
8385
|
+
var isSelfReferential = relInfo.isSelfReferential;
|
|
8386
|
+
var isRelationship = relationshipName === relInfo.lhs_relationshipName;
|
|
8387
|
+
|
|
8388
|
+
if (isRelationship === true) {
|
|
8389
|
+
return isSelfReferential === true || // itself
|
|
8390
|
+
modelName === relInfo.lhs_baseModelName || // base or non-polymorphic
|
|
8391
|
+
relInfo.lhs_modelNames.indexOf(modelName) !== -1; // polymorphic
|
|
8392
|
+
}
|
|
8393
|
+
|
|
8394
|
+
return false;
|
|
8264
8395
|
};
|
|
8265
8396
|
|
|
8266
8397
|
RelationshipPayloads.prototype._isRHS = function _isRHS(modelName, relationshipName) {
|
|
8267
|
-
|
|
8398
|
+
var relInfo = this._relInfo;
|
|
8399
|
+
var isSelfReferential = relInfo.isSelfReferential;
|
|
8400
|
+
var isRelationship = relationshipName === relInfo.rhs_relationshipName;
|
|
8401
|
+
|
|
8402
|
+
if (isRelationship === true) {
|
|
8403
|
+
return isSelfReferential === true || // itself
|
|
8404
|
+
modelName === relInfo.rhs_baseModelName || // base or non-polymorphic
|
|
8405
|
+
relInfo.rhs_modelNames.indexOf(modelName) !== -1; // polymorphic
|
|
8406
|
+
}
|
|
8407
|
+
|
|
8408
|
+
return false;
|
|
8268
8409
|
};
|
|
8269
8410
|
|
|
8270
8411
|
RelationshipPayloads.prototype._flushPending = function _flushPending() {
|
|
@@ -8285,26 +8426,28 @@ define('ember-data/-private/system/relationships/relationship-payloads', ['expor
|
|
|
8285
8426
|
id: id,
|
|
8286
8427
|
type: modelName
|
|
8287
8428
|
}
|
|
8429
|
+
};
|
|
8288
8430
|
|
|
8289
|
-
|
|
8290
|
-
|
|
8291
|
-
|
|
8292
|
-
|
|
8293
|
-
|
|
8294
|
-
var
|
|
8295
|
-
var
|
|
8431
|
+
// start flushing this individual payload. The logic is the same whether
|
|
8432
|
+
// it's for the left hand side of the relationship or the right hand side,
|
|
8433
|
+
// except the role of primary and inverse idToPayloads is reversed
|
|
8434
|
+
//
|
|
8435
|
+
var previousPayload = void 0;
|
|
8436
|
+
var payloadMap = void 0;
|
|
8437
|
+
var inversePayloadMap = void 0;
|
|
8296
8438
|
var inverseIsMany = void 0;
|
|
8439
|
+
|
|
8297
8440
|
if (this._isLHS(modelName, relationshipName)) {
|
|
8298
|
-
previousPayload = this.
|
|
8299
|
-
|
|
8300
|
-
|
|
8441
|
+
previousPayload = this.lhs_payloads.get(modelName, id);
|
|
8442
|
+
payloadMap = this.lhs_payloads;
|
|
8443
|
+
inversePayloadMap = this.rhs_payloads;
|
|
8301
8444
|
inverseIsMany = this._rhsRelationshipIsMany;
|
|
8302
8445
|
} else {
|
|
8303
|
-
(false && Ember.assert(modelName + ':' + relationshipName + ' is not either side of this relationship, ' + this.
|
|
8446
|
+
(false && Ember.assert(modelName + ':' + relationshipName + ' is not either side of this relationship, ' + this._relInfo.lhs_key + '<->' + this._relInfo.rhs_key, this._isRHS(modelName, relationshipName)));
|
|
8304
8447
|
|
|
8305
|
-
previousPayload = this.
|
|
8306
|
-
|
|
8307
|
-
|
|
8448
|
+
previousPayload = this.rhs_payloads.get(modelName, id);
|
|
8449
|
+
payloadMap = this.rhs_payloads;
|
|
8450
|
+
inversePayloadMap = this.lhs_payloads;
|
|
8308
8451
|
inverseIsMany = this._lhsRelationshipIsMany;
|
|
8309
8452
|
}
|
|
8310
8453
|
|
|
@@ -8348,14 +8491,14 @@ define('ember-data/-private/system/relationships/relationship-payloads', ['expor
|
|
|
8348
8491
|
// * undefined is NOT considered new information, we should keep original state
|
|
8349
8492
|
// * anything else is considered new information, and it should win
|
|
8350
8493
|
if (relationshipData.data !== undefined) {
|
|
8351
|
-
this._removeInverse(id, previousPayload,
|
|
8494
|
+
this._removeInverse(id, previousPayload, inversePayloadMap);
|
|
8352
8495
|
}
|
|
8353
|
-
|
|
8354
|
-
this._populateInverse(relationshipData, inverseRelationshipData,
|
|
8496
|
+
payloadMap.set(modelName, id, relationshipData);
|
|
8497
|
+
this._populateInverse(relationshipData, inverseRelationshipData, inversePayloadMap, inverseIsMany);
|
|
8355
8498
|
}
|
|
8356
8499
|
};
|
|
8357
8500
|
|
|
8358
|
-
RelationshipPayloads.prototype._populateInverse = function _populateInverse(relationshipData, inversePayload,
|
|
8501
|
+
RelationshipPayloads.prototype._populateInverse = function _populateInverse(relationshipData, inversePayload, inversePayloadMap, inverseIsMany) {
|
|
8359
8502
|
if (!relationshipData.data) {
|
|
8360
8503
|
// This id doesn't have an inverse, eg a belongsTo with a payload
|
|
8361
8504
|
// { data: null }, so there's nothing to populate
|
|
@@ -8364,22 +8507,24 @@ define('ember-data/-private/system/relationships/relationship-payloads', ['expor
|
|
|
8364
8507
|
|
|
8365
8508
|
if (Array.isArray(relationshipData.data)) {
|
|
8366
8509
|
for (var i = 0; i < relationshipData.data.length; ++i) {
|
|
8367
|
-
var
|
|
8368
|
-
this._addToInverse(inversePayload,
|
|
8510
|
+
var resourceIdentifier = relationshipData.data[i];
|
|
8511
|
+
this._addToInverse(inversePayload, resourceIdentifier, inversePayloadMap, inverseIsMany);
|
|
8369
8512
|
}
|
|
8370
8513
|
} else {
|
|
8371
|
-
var
|
|
8372
|
-
this._addToInverse(inversePayload,
|
|
8514
|
+
var _resourceIdentifier = relationshipData.data;
|
|
8515
|
+
this._addToInverse(inversePayload, _resourceIdentifier, inversePayloadMap, inverseIsMany);
|
|
8373
8516
|
}
|
|
8374
8517
|
};
|
|
8375
8518
|
|
|
8376
|
-
RelationshipPayloads.prototype._addToInverse = function _addToInverse(inversePayload,
|
|
8377
|
-
|
|
8519
|
+
RelationshipPayloads.prototype._addToInverse = function _addToInverse(inversePayload, resourceIdentifier, inversePayloadMap, inverseIsMany) {
|
|
8520
|
+
var relInfo = this._relInfo;
|
|
8521
|
+
|
|
8522
|
+
if (relInfo.isReflexive && inversePayload.data.id === resourceIdentifier.id) {
|
|
8378
8523
|
// eg <user:1>.friends = [{ id: 1, type: 'user' }]
|
|
8379
8524
|
return;
|
|
8380
8525
|
}
|
|
8381
8526
|
|
|
8382
|
-
var existingPayload =
|
|
8527
|
+
var existingPayload = inversePayloadMap.get(resourceIdentifier.type, resourceIdentifier.id);
|
|
8383
8528
|
var existingData = existingPayload && existingPayload.data;
|
|
8384
8529
|
|
|
8385
8530
|
if (existingData) {
|
|
@@ -8389,22 +8534,22 @@ define('ember-data/-private/system/relationships/relationship-payloads', ['expor
|
|
|
8389
8534
|
if (Array.isArray(existingData)) {
|
|
8390
8535
|
existingData.push(inversePayload.data);
|
|
8391
8536
|
} else {
|
|
8392
|
-
|
|
8537
|
+
inversePayloadMap.set(resourceIdentifier.type, resourceIdentifier.id, inversePayload);
|
|
8393
8538
|
}
|
|
8394
8539
|
} else {
|
|
8395
8540
|
// first time we're populating the inverse side
|
|
8396
8541
|
//
|
|
8397
8542
|
if (inverseIsMany) {
|
|
8398
|
-
|
|
8543
|
+
inversePayloadMap.set(resourceIdentifier.type, resourceIdentifier.id, {
|
|
8399
8544
|
data: [inversePayload.data]
|
|
8400
|
-
};
|
|
8545
|
+
});
|
|
8401
8546
|
} else {
|
|
8402
|
-
|
|
8547
|
+
inversePayloadMap.set(resourceIdentifier.type, resourceIdentifier.id, inversePayload);
|
|
8403
8548
|
}
|
|
8404
8549
|
}
|
|
8405
8550
|
};
|
|
8406
8551
|
|
|
8407
|
-
RelationshipPayloads.prototype._removeInverse = function _removeInverse(id, previousPayload,
|
|
8552
|
+
RelationshipPayloads.prototype._removeInverse = function _removeInverse(id, previousPayload, inversePayloadMap) {
|
|
8408
8553
|
var data = previousPayload && previousPayload.data;
|
|
8409
8554
|
if (!data) {
|
|
8410
8555
|
// either this is the first time we've seen a payload for this id, or its
|
|
@@ -8419,15 +8564,16 @@ define('ember-data/-private/system/relationships/relationship-payloads', ['expor
|
|
|
8419
8564
|
if (Array.isArray(data)) {
|
|
8420
8565
|
// TODO: diff rather than removeall addall?
|
|
8421
8566
|
for (var i = 0; i < data.length; ++i) {
|
|
8422
|
-
|
|
8567
|
+
var resourceIdentifier = data[i];
|
|
8568
|
+
this._removeFromInverse(id, resourceIdentifier, inversePayloadMap);
|
|
8423
8569
|
}
|
|
8424
8570
|
} else {
|
|
8425
|
-
this._removeFromInverse(id, data
|
|
8571
|
+
this._removeFromInverse(id, data, inversePayloadMap);
|
|
8426
8572
|
}
|
|
8427
8573
|
};
|
|
8428
8574
|
|
|
8429
|
-
RelationshipPayloads.prototype._removeFromInverse = function _removeFromInverse(id,
|
|
8430
|
-
var inversePayload = inversePayloads
|
|
8575
|
+
RelationshipPayloads.prototype._removeFromInverse = function _removeFromInverse(id, resourceIdentifier, inversePayloads) {
|
|
8576
|
+
var inversePayload = inversePayloads.get(resourceIdentifier.type, resourceIdentifier.id);
|
|
8431
8577
|
var data = inversePayload && inversePayload.data;
|
|
8432
8578
|
|
|
8433
8579
|
if (!data) {
|
|
@@ -8439,21 +8585,23 @@ define('ember-data/-private/system/relationships/relationship-payloads', ['expor
|
|
|
8439
8585
|
return x.id !== id;
|
|
8440
8586
|
});
|
|
8441
8587
|
} else {
|
|
8442
|
-
inversePayloads
|
|
8588
|
+
inversePayloads.set(resourceIdentifier.type, resourceIdentifier.id, {
|
|
8443
8589
|
data: null
|
|
8444
|
-
};
|
|
8590
|
+
});
|
|
8445
8591
|
}
|
|
8446
8592
|
};
|
|
8447
8593
|
|
|
8448
8594
|
_createClass(RelationshipPayloads, [{
|
|
8449
8595
|
key: '_lhsRelationshipIsMany',
|
|
8450
8596
|
get: function () {
|
|
8451
|
-
|
|
8597
|
+
var meta = this._relInfo.lhs_relationshipMeta;
|
|
8598
|
+
return meta !== null && meta.kind === 'hasMany';
|
|
8452
8599
|
}
|
|
8453
8600
|
}, {
|
|
8454
8601
|
key: '_rhsRelationshipIsMany',
|
|
8455
8602
|
get: function () {
|
|
8456
|
-
|
|
8603
|
+
var meta = this._relInfo.rhs_relationshipMeta;
|
|
8604
|
+
return meta !== null && meta.kind === 'hasMany';
|
|
8457
8605
|
}
|
|
8458
8606
|
}]);
|
|
8459
8607
|
|
|
@@ -18250,7 +18398,7 @@ define("ember-data/version", ["exports"], function (exports) {
|
|
|
18250
18398
|
"use strict";
|
|
18251
18399
|
|
|
18252
18400
|
exports.__esModule = true;
|
|
18253
|
-
exports.default = "2.17.
|
|
18401
|
+
exports.default = "2.17.1";
|
|
18254
18402
|
});
|
|
18255
18403
|
define("ember-inflector", ["module", "exports", "ember-inflector/lib/system", "ember-inflector/lib/ext/string"], function (module, exports, _system) {
|
|
18256
18404
|
"use strict";
|