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