dist/globals/ember-data.prod.js in ember-data-source-2.18.3 vs dist/globals/ember-data.prod.js in ember-data-source-3.0.0.beta.1
- old
+ new
@@ -4,11 +4,11 @@
/*!
* @overview Ember Data
* @copyright Copyright 2011-2017 Tilde Inc. and contributors.
* Portions Copyright 2011 LivingSocial Inc.
* @license Licensed under MIT license (see license.js)
- * @version 2.18.3
+ * @version 3.0.0-beta.1
*/
var loader, define, requireModule, require, requirejs;
(function (global) {
@@ -1326,11 +1326,11 @@
}
// export real global
exports.default = checkGlobal(checkElementIdShadowing(typeof global === 'object' && global)) || checkGlobal(typeof self === 'object' && self) || checkGlobal(typeof window === 'object' && window) || new Function('return this')();
});
-define('ember-data/-private', ['exports', 'ember-data/-private/system/model/model', 'ember-data/-private/system/model/errors', 'ember-data/-private/system/store', 'ember-data/-private/core', 'ember-data/-private/system/relationships/belongs-to', 'ember-data/-private/system/relationships/has-many', 'ember-data/-private/adapters/build-url-mixin', 'ember-data/-private/system/snapshot', 'ember-data/-private/adapters/errors', 'ember-data/-private/system/normalize-model-name', 'ember-data/-private/utils', 'ember-data/-private/system/coerce-id', 'ember-data/-private/utils/parse-response-headers', 'ember-data/-private/global', 'ember-data/-private/features', 'ember-data/-private/system/model/states', 'ember-data/-private/system/model/internal-model', 'ember-data/-private/system/store/container-instance-cache', 'ember-data/-private/system/promise-proxies', 'ember-data/-private/system/record-arrays', 'ember-data/-private/system/many-array', 'ember-data/-private/system/record-array-manager', 'ember-data/-private/system/relationships/state/relationship', 'ember-data/-private/system/debug/debug-adapter', 'ember-data/-private/system/diff-array', 'ember-data/-private/system/relationships/relationship-payloads-manager', 'ember-data/-private/system/relationships/relationship-payloads', 'ember-data/-private/system/snapshot-record-array'], function (exports, _model, _errors, _store, _core, _belongsTo, _hasMany, _buildUrlMixin, _snapshot, _errors2, _normalizeModelName, _utils, _coerceId, _parseResponseHeaders, _global, _features, _states, _internalModel, _containerInstanceCache, _promiseProxies, _recordArrays, _manyArray, _recordArrayManager, _relationship, _debugAdapter, _diffArray, _relationshipPayloadsManager, _relationshipPayloads, _snapshotRecordArray) {
+define('ember-data/-private', ['exports', 'ember-data/-private/system/model/model', 'ember-data/-private/system/model/errors', 'ember-data/-private/system/store', 'ember-data/-private/core', 'ember-data/-private/system/relationships/belongs-to', 'ember-data/-private/system/relationships/has-many', 'ember-data/-private/adapters/build-url-mixin', 'ember-data/-private/system/snapshot', 'ember-data/-private/adapters/errors', 'ember-data/-private/system/normalize-model-name', 'ember-data/-private/utils', 'ember-data/-private/system/coerce-id', 'ember-data/-private/utils/parse-response-headers', 'ember-data/-private/global', 'ember-data/-private/features', 'ember-data/-private/system/model/states', 'ember-data/-private/system/model/internal-model', 'ember-data/-private/system/promise-proxies', 'ember-data/-private/system/record-arrays', 'ember-data/-private/system/many-array', 'ember-data/-private/system/record-array-manager', 'ember-data/-private/system/relationships/state/relationship', 'ember-data/-private/system/debug/debug-adapter', 'ember-data/-private/system/diff-array', 'ember-data/-private/system/relationships/relationship-payloads-manager', 'ember-data/-private/system/relationships/relationship-payloads', 'ember-data/-private/system/snapshot-record-array'], function (exports, _model, _errors, _store, _core, _belongsTo, _hasMany, _buildUrlMixin, _snapshot, _errors2, _normalizeModelName, _utils, _coerceId, _parseResponseHeaders, _global, _features, _states, _internalModel, _promiseProxies, _recordArrays, _manyArray, _recordArrayManager, _relationship, _debugAdapter, _diffArray, _relationshipPayloadsManager, _relationshipPayloads, _snapshotRecordArray) {
'use strict';
exports.__esModule = true;
Object.defineProperty(exports, 'Model', {
enumerable: true,
@@ -1498,16 +1498,10 @@
enumerable: true,
get: function () {
return _internalModel.default;
}
});
- Object.defineProperty(exports, 'ContainerInstanceCache', {
- enumerable: true,
- get: function () {
- return _containerInstanceCache.default;
- }
- });
Object.defineProperty(exports, 'PromiseArray', {
enumerable: true,
get: function () {
return _promiseProxies.PromiseArray;
}
@@ -2687,28 +2681,16 @@
}
}
return true;
}
- // Handle dematerialization for relationship `rel`. In all cases, notify the
- // relatinoship of the dematerialization: this is done so the relationship can
- // notify its inverse which needs to update state
- //
- // If the inverse is sync, unloading this record is treated as a client-side
- // delete, so we remove the inverse records from this relationship to
- // disconnect the graph. Because it's not async, we don't need to keep around
- // the internalModel as an id-wrapper for references and because the graph is
- // disconnected we can actually destroy the internalModel when checking for
- // orphaned models.
function destroyRelationship(rel) {
- rel.internalModelDidDematerialize();
-
- if (rel._inverseIsSync()) {
- // disconnect the graph so that the sync inverse relationship does not
- // prevent us from cleaning up during `_cleanupOrphanedInternalModels`
- rel.removeAllInternalModelsFromOwn();
- rel.removeAllCanonicalInternalModelsFromOwn();
+ if (rel._inverseIsAsync()) {
+ rel.removeInternalModelFromInverse(rel.inverseInternalModel);
+ rel.removeInverseRelationships();
+ } else {
+ rel.removeCompletelyFromInverse();
}
}
// this (and all heimdall instrumentation) will be stripped by a babel transform
// https://github.com/heimdalljs/babel5-plugin-strip-heimdall
@@ -2921,11 +2903,10 @@
});
};
InternalModel.prototype._directlyRelatedInternalModels = function _directlyRelatedInternalModels() {
var array = [];
-
this._relationships.forEach(function (name, rel) {
array = array.concat(rel.members.list, rel.canonicalMembers.list);
});
return array;
};
@@ -3170,11 +3151,11 @@
this._inFlightAttributes = null;
this.didCleanError();
}
if (this.isNew()) {
- this.removeFromInverseRelationships(true);
+ this.removeFromInverseRelationships();
}
if (this.isValid()) {
this._inFlightAttributes = null;
}
@@ -3287,29 +3268,23 @@
triggers.length = 0;
};
InternalModel.prototype.removeFromInverseRelationships = function removeFromInverseRelationships() {
- var isNew = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
-
this._relationships.forEach(function (name, rel) {
rel.removeCompletelyFromInverse();
- if (isNew === true) {
- rel.clear();
- }
+ rel.clear();
});
var implicitRelationships = this._implicitRelationships;
this.__implicitRelationships = null;
Object.keys(implicitRelationships).forEach(function (key) {
var rel = implicitRelationships[key];
rel.removeCompletelyFromInverse();
- if (isNew === true) {
- rel.clear();
- }
+ rel.clear();
});
};
InternalModel.prototype.destroyRelationships = function destroyRelationships() {
var relationships = this._relationships;
@@ -3319,11 +3294,14 @@
var implicitRelationships = this._implicitRelationships;
this.__implicitRelationships = null;
Object.keys(implicitRelationships).forEach(function (key) {
var rel = implicitRelationships[key];
+
destroyRelationship(rel);
+
+ rel.destroy();
});
};
InternalModel.prototype.preloadData = function preloadData(preload) {
var _this = this;
@@ -3724,11 +3702,11 @@
}
var relationships = relationshipMap.get(type.modelName).filter(function (relationship) {
var optionsForRelationship = inverseType.metaForProperty(relationship.name).options;
- if (!optionsForRelationship.inverse) {
+ if (!optionsForRelationship.inverse && optionsForRelationship.inverse !== null) {
return true;
}
return name === optionsForRelationship.inverse;
});
@@ -4804,14 +4782,10 @@
// If it is, get the metadata for the relationship. This is
// populated by the `DS.belongsTo` helper when it is creating
// the computed property.
var meta = value.meta();
- /*
- This is buggy because if the parent has never been looked up
- via `modelFor` it will not have `modelName` set.
- */
meta.parentType = proto.constructor;
}
}
});
}
@@ -6203,11 +6177,11 @@
// yes we are touching `this` before super, but ArrayProxy has a bug that requires this.
this.set('content', this.get('content') || A());
this._super.apply(this, arguments);
this.query = this.query || null;
- this.links = null;
+ this.links = this.links || null;
},
replace: function () {
throw new Error('The result of a server query (on ' + this.modelName + ') is immutable.');
},
_update: function () {
@@ -6801,11 +6775,11 @@
if (data instanceof _model.default) {
if ((0, _features.default)('ds-overhaul-references')) {
(false && !(false) && Ember.deprecate("BelongsToReference#push(DS.Model) is deprecated. Update relationship via `model.set('relationshipName', value)` instead.", false, {
id: 'ds.references.belongs-to.push-record',
- until: '3.0'
+ until: '4.0.0'
}));
}
record = data;
} else {
record = _this.store.push(data);
@@ -7216,11 +7190,11 @@
var array = payload;
if ((0, _features.default)("ds-overhaul-references")) {
(false && !(!Array.isArray(payload)) && Ember.deprecate("HasManyReference#push(array) is deprecated. Push a JSON-API document instead.", !Array.isArray(payload), {
id: 'ds.references.has-many.push-array',
- until: '3.0'
+ until: '4.0.0'
}));
}
var useLegacyArrayPush = true;
if (typeof payload === "object" && payload.data) {
@@ -7228,11 +7202,11 @@
useLegacyArrayPush = array.length && array[0].data;
if ((0, _features.default)('ds-overhaul-references')) {
(false && !(!useLegacyArrayPush) && Ember.deprecate("HasManyReference#push() expects a valid JSON-API document.", !useLegacyArrayPush, {
id: 'ds.references.has-many.push-invalid-json-api',
- until: '3.0'
+ until: '4.0.0'
}));
}
}
if (!(0, _features.default)('ds-overhaul-references')) {
@@ -7614,19 +7588,25 @@
}
return modelName;
}
function relationshipFromMeta(meta) {
- return {
+ var result = {
key: meta.key,
kind: meta.kind,
type: typeForRelationshipMeta(meta),
options: meta.options,
name: meta.name,
parentType: meta.parentType,
isRelationship: true
};
+
+ if (false) {
+ result.parentType = meta.parentType;
+ }
+
+ return result;
}
});
define('ember-data/-private/system/relationships/belongs-to', ['exports', 'ember-data/-private/system/normalize-model-name'], function (exports, _normalizeModelName) {
'use strict';
@@ -8032,18 +8012,17 @@
if (!(instance instanceof Constructor)) {
throw new TypeError("Cannot call a class as a function");
}
}
- var get = Ember.get;
+ var _get = Ember.get;
var RelationshipPayloadsManager = function () {
function RelationshipPayloadsManager(store) {
this._store = store;
// cache of `RelationshipPayload`s
this._cache = Object.create(null);
- this._inverseLookupCache = new _relationshipPayloads.TypeCache();
}
/**
Find the payload for the given relationship of the given model.
Returns the payload for the given relationship, whether raw or computed from
@@ -8060,194 +8039,90 @@
@method
*/
RelationshipPayloadsManager.prototype.get = function get(modelName, id, relationshipName) {
- var relationshipPayloads = this._getRelationshipPayloads(modelName, relationshipName, false);
+ var modelClass = this._store._modelFor(modelName);
+ var relationshipsByName = _get(modelClass, 'relationshipsByName');
+ var relationshipPayloads = this._getRelationshipPayloads(modelName, relationshipName, modelClass, relationshipsByName, false);
return relationshipPayloads && relationshipPayloads.get(modelName, id, relationshipName);
};
RelationshipPayloadsManager.prototype.push = function push(modelName, id, relationshipsData) {
var _this = this;
if (!relationshipsData) {
return;
}
+ var modelClass = this._store._modelFor(modelName);
+ var relationshipsByName = _get(modelClass, 'relationshipsByName');
Object.keys(relationshipsData).forEach(function (key) {
- var relationshipPayloads = _this._getRelationshipPayloads(modelName, key, true);
+ var relationshipPayloads = _this._getRelationshipPayloads(modelName, key, modelClass, relationshipsByName, true);
if (relationshipPayloads) {
relationshipPayloads.push(modelName, id, key, relationshipsData[key]);
}
});
};
RelationshipPayloadsManager.prototype.unload = function unload(modelName, id) {
var _this2 = this;
var modelClass = this._store._modelFor(modelName);
- var relationshipsByName = get(modelClass, 'relationshipsByName');
+ var relationshipsByName = _get(modelClass, 'relationshipsByName');
relationshipsByName.forEach(function (_, relationshipName) {
- var relationshipPayloads = _this2._getRelationshipPayloads(modelName, relationshipName, false);
+ var relationshipPayloads = _this2._getRelationshipPayloads(modelName, relationshipName, modelClass, relationshipsByName, false);
if (relationshipPayloads) {
relationshipPayloads.unload(modelName, id, relationshipName);
}
});
};
- RelationshipPayloadsManager.prototype._getRelationshipPayloads = function _getRelationshipPayloads(modelName, relationshipName, init) {
- var relInfo = this.getRelationshipInfo(modelName, relationshipName);
-
- if (relInfo === null) {
+ RelationshipPayloadsManager.prototype._getRelationshipPayloads = function _getRelationshipPayloads(modelName, relationshipName, modelClass, relationshipsByName, init) {
+ if (!relationshipsByName.has(relationshipName)) {
return;
}
- var cache = this._cache[relInfo.lhs_key];
-
- if (!cache && init) {
- return this._initializeRelationshipPayloads(relInfo);
+ var key = modelName + ':' + relationshipName;
+ if (!this._cache[key] && init) {
+ return this._initializeRelationshipPayloads(modelName, relationshipName, modelClass, relationshipsByName);
}
- return cache;
+ return this._cache[key];
};
- RelationshipPayloadsManager.prototype.getRelationshipInfo = function getRelationshipInfo(modelName, relationshipName) {
- var inverseCache = this._inverseLookupCache;
- var store = this._store;
- var cached = inverseCache.get(modelName, relationshipName);
-
- // CASE: We have a cached resolution (null if no relationship exists)
- if (cached !== undefined) {
- return cached;
- }
-
- var modelClass = store._modelFor(modelName);
- var relationshipsByName = get(modelClass, 'relationshipsByName');
-
- // CASE: We don't have a relationship at all
- if (!relationshipsByName.has(relationshipName)) {
- inverseCache.set(modelName, relationshipName, null);
- return null;
- }
-
- var inverseMeta = modelClass.inverseFor(relationshipName, store);
+ RelationshipPayloadsManager.prototype._initializeRelationshipPayloads = function _initializeRelationshipPayloads(modelName, relationshipName, modelClass, relationshipsByName) {
var relationshipMeta = relationshipsByName.get(relationshipName);
- var selfIsPolymorphic = relationshipMeta.options !== undefined && relationshipMeta.options.polymorphic === true;
- var inverseBaseModelName = relationshipMeta.type;
+ var inverseMeta = modelClass.inverseFor(relationshipName, this._store);
- // CASE: We have no inverse
- if (!inverseMeta) {
- var _info = {
- lhs_key: modelName + ':' + relationshipName,
- lhs_modelNames: [modelName],
- lhs_baseModelName: modelName,
- lhs_relationshipName: relationshipName,
- lhs_relationshipMeta: relationshipMeta,
- lhs_isPolymorphic: selfIsPolymorphic,
- rhs_key: '',
- rhs_modelNames: [],
- rhs_baseModelName: inverseBaseModelName,
- rhs_relationshipName: '',
- rhs_relationshipMeta: null,
- rhs_isPolymorphic: false,
- hasInverse: false,
- isSelfReferential: false, // modelName === inverseBaseModelName,
- isReflexive: false
- };
+ var inverseModelName = void 0;
+ var inverseRelationshipName = void 0;
+ var inverseRelationshipMeta = void 0;
- inverseCache.set(modelName, relationshipName, _info);
-
- return _info;
+ // figure out the inverse relationship; we need two things
+ // a) the inverse model name
+ //- b) the name of the inverse relationship
+ if (inverseMeta) {
+ inverseRelationshipName = inverseMeta.name;
+ inverseModelName = relationshipMeta.type;
+ inverseRelationshipMeta = _get(inverseMeta.type, 'relationshipsByName').get(inverseRelationshipName);
+ } else {
+ // relationship has no inverse
+ inverseModelName = inverseRelationshipName = '';
+ inverseRelationshipMeta = null;
}
- // CASE: We do have an inverse
+ var lhsKey = modelName + ':' + relationshipName;
+ var rhsKey = inverseModelName + ':' + inverseRelationshipName;
- var inverseRelationshipName = inverseMeta.name;
- var inverseRelationshipMeta = get(inverseMeta.type, 'relationshipsByName').get(inverseRelationshipName);
- var baseModelName = inverseRelationshipMeta.type;
- var isSelfReferential = baseModelName === inverseBaseModelName;
-
- // TODO we want to assert this but this breaks all of our shoddily written tests
- /*
- if (DEBUG) {
- let inverseDoubleCheck = inverseMeta.type.inverseFor(inverseRelationshipName, store);
- assert(`The ${inverseBaseModelName}:${inverseRelationshipName} relationship declares 'inverse: null', but it was resolved as the inverse for ${baseModelName}:${relationshipName}.`, inverseDoubleCheck);
- }
- */
-
- // CASE: We may have already discovered the inverse for the baseModelName
- // CASE: We have already discovered the inverse
- cached = inverseCache.get(baseModelName, relationshipName) || inverseCache.get(inverseBaseModelName, inverseRelationshipName);
- if (cached) {
- (false && Ember.assert('The ' + inverseBaseModelName + ':' + inverseRelationshipName + ' relationship declares \'inverse: null\', but it was resolved as the inverse for ' + baseModelName + ':' + relationshipName + '.', cached.hasInverse !== false));
-
-
- var isLHS = cached.lhs_baseModelName === baseModelName;
- var modelNames = isLHS ? cached.lhs_modelNames : cached.rhs_modelNames;
- // make this lookup easier in the future by caching the key
- modelNames.push(modelName);
- inverseCache.set(modelName, relationshipName, cached);
-
- return cached;
- }
-
- var info = {
- lhs_key: baseModelName + ':' + relationshipName,
- lhs_modelNames: [modelName],
- lhs_baseModelName: baseModelName,
- lhs_relationshipName: relationshipName,
- lhs_relationshipMeta: relationshipMeta,
- lhs_isPolymorphic: selfIsPolymorphic,
- rhs_key: inverseBaseModelName + ':' + inverseRelationshipName,
- rhs_modelNames: [],
- rhs_baseModelName: inverseBaseModelName,
- rhs_relationshipName: inverseRelationshipName,
- rhs_relationshipMeta: inverseRelationshipMeta,
- rhs_isPolymorphic: inverseRelationshipMeta.options !== undefined && inverseRelationshipMeta.options.polymorphic === true,
- hasInverse: true,
- isSelfReferential: isSelfReferential,
- isReflexive: isSelfReferential && relationshipName === inverseRelationshipName
- };
-
- // Create entries for the baseModelName as well as modelName to speed up
- // inverse lookups
- inverseCache.set(baseModelName, relationshipName, info);
- inverseCache.set(modelName, relationshipName, info);
-
- // Greedily populate the inverse
- inverseCache.set(inverseBaseModelName, inverseRelationshipName, info);
-
- return info;
- };
-
- RelationshipPayloadsManager.prototype._initializeRelationshipPayloads = function _initializeRelationshipPayloads(relInfo) {
- var lhsKey = relInfo.lhs_key;
- var rhsKey = relInfo.rhs_key;
- var existingPayloads = this._cache[lhsKey];
-
- if (relInfo.hasInverse === true && relInfo.rhs_isPolymorphic === true) {
- existingPayloads = this._cache[rhsKey];
-
- if (existingPayloads !== undefined) {
- this._cache[lhsKey] = existingPayloads;
- return existingPayloads;
- }
- }
-
// populate the cache for both sides of the relationship, as they both use
// the same `RelationshipPayloads`.
//
// This works out better than creating a single common key, because to
// compute that key we would need to do work to look up the inverse
//
- var cache = this._cache[lhsKey] = new _relationshipPayloads.default(relInfo);
-
- if (relInfo.hasInverse === true) {
- this._cache[rhsKey] = cache;
- }
-
- return cache;
+ return this._cache[lhsKey] = this._cache[rhsKey] = new _relationshipPayloads.default(this._store, modelName, relationshipName, relationshipMeta, inverseModelName, inverseRelationshipName, inverseRelationshipMeta);
};
return RelationshipPayloadsManager;
}();
@@ -8256,10 +8131,16 @@
define('ember-data/-private/system/relationships/relationship-payloads', ['exports'], function (exports) {
'use strict';
exports.__esModule = true;
+ function _classCallCheck(instance, Constructor) {
+ if (!(instance instanceof Constructor)) {
+ throw new TypeError("Cannot call a class as a function");
+ }
+ }
+
var _createClass = function () {
function defineProperties(target, props) {
for (var i = 0; i < props.length; i++) {
var descriptor = props[i];
descriptor.enumerable = descriptor.enumerable || false;
@@ -8274,87 +8155,65 @@
if (staticProps) defineProperties(Constructor, staticProps);
return Constructor;
};
}();
- function _classCallCheck(instance, Constructor) {
- if (!(instance instanceof Constructor)) {
- throw new TypeError("Cannot call a class as a function");
- }
- }
+ var RelationshipPayloads = function () {
+ function RelationshipPayloads(store, modelName, relationshipName, relationshipMeta, inverseModelName, inverseRelationshipName, inverseRelationshipMeta) {
+ this._store = store;
- var TypeCache = exports.TypeCache = function () {
- function TypeCache() {
- this.types = Object.create(null);
- }
+ this._lhsModelName = modelName;
+ this._lhsRelationshipName = relationshipName;
+ this._lhsRelationshipMeta = relationshipMeta;
- TypeCache.prototype.get = function get(modelName, id) {
- var types = this.types;
+ this._rhsModelName = inverseModelName;
+ this._rhsRelationshipName = inverseRelationshipName;
+ this._rhsRelationshipMeta = inverseRelationshipMeta;
-
- if (types[modelName] !== undefined) {
- return types[modelName][id];
+ // a map of id -> payloads for the left hand side of the relationship.
+ this._lhsPayloads = Object.create(null);
+ if (modelName !== inverseModelName || relationshipName !== inverseRelationshipName) {
+ // The common case of a non-reflexive relationship, or a reflexive
+ // relationship whose inverse is not itself
+ this._rhsPayloads = Object.create(null);
+ this._isReflexive = false;
+ } else {
+ // Edge case when we have a reflexive relationship to itself
+ // eg user hasMany friends inverse friends
+ //
+ // In this case there aren't really two sides to the relationship, but
+ // we set `_rhsPayloads = _lhsPayloads` to make things easier to reason
+ // about
+ this._rhsPayloads = this._lhsPayloads;
+ this._isReflexive = true;
}
- };
- TypeCache.prototype.set = function set(modelName, id, payload) {
- var types = this.types;
-
- var typeMap = types[modelName];
-
- if (typeMap === undefined) {
- typeMap = types[modelName] = Object.create(null);
- }
-
- typeMap[id] = payload;
- };
-
- TypeCache.prototype.delete = function _delete(modelName, id) {
- var types = this.types;
-
-
- if (types[modelName] !== undefined) {
- delete types[modelName][id];
- }
- };
-
- return TypeCache;
- }();
-
- var RelationshipPayloads = function () {
- function RelationshipPayloads(relInfo) {
- this._relInfo = relInfo;
-
- // a map of id -> payloads for the left hand side of the relationship.
- this.lhs_payloads = new TypeCache();
- this.rhs_payloads = relInfo.isReflexive ? this.lhs_payloads : new TypeCache();
-
// When we push relationship payloads, just stash them in a queue until
// somebody actually asks for one of them.
//
// This is a queue of the relationship payloads that have been pushed for
// either side of this relationship
this._pendingPayloads = [];
}
/**
- Get the payload for the relationship of an individual record.
- This might return the raw payload as pushed into the store, or one computed
- from the payload of the inverse relationship.
- @method
- */
+ Get the payload for the relationship of an individual record.
+ This might return the raw payload as pushed into the store, or one computed
+ from the payload of the inverse relationship.
+ @method
+ */
RelationshipPayloads.prototype.get = function get(modelName, id, relationshipName) {
this._flushPending();
if (this._isLHS(modelName, relationshipName)) {
- return this.lhs_payloads.get(modelName, id);
+ return this._lhsPayloads[id];
} else {
- (false && Ember.assert(modelName + ':' + relationshipName + ' is not either side of this relationship, ' + this._relInfo.lhs_key + '<->' + this._relInfo.rhs_key, this._isRHS(modelName, relationshipName)));
+ (false && Ember.assert(modelName + ':' + relationshipName + ' is not either side of this relationship, ' + this._lhsModelName + ':' + this._lhsRelationshipName + '<->' + this._rhsModelName + ':' + this._rhsRelationshipName, this._isRHS(modelName, relationshipName)));
- return this.rhs_payloads.get(modelName, id);
+ return this._rhsPayloads[id];
}
};
RelationshipPayloads.prototype.push = function push(modelName, id, relationshipName, relationshipData) {
this._pendingPayloads.push([modelName, id, relationshipName, relationshipData]);
@@ -8362,44 +8221,24 @@
RelationshipPayloads.prototype.unload = function unload(modelName, id, relationshipName) {
this._flushPending();
if (this._isLHS(modelName, relationshipName)) {
- delete this.lhs_payloads.delete(modelName, id);
+ delete this._lhsPayloads[id];
} else {
- (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)));
+ (false && Ember.assert(modelName + ':' + relationshipName + ' is not either side of this relationship, ' + this._lhsModelName + ':' + this._lhsRelationshipName + '<->' + this._rhsModelName + ':' + this._rhsRelationshipName, this._isRHS(modelName, relationshipName)));
- delete this.rhs_payloads.delete(modelName, id);
+ delete this._rhsPayloads[id];
}
};
RelationshipPayloads.prototype._isLHS = function _isLHS(modelName, relationshipName) {
- var relInfo = this._relInfo;
- var isSelfReferential = relInfo.isSelfReferential;
- var isRelationship = relationshipName === relInfo.lhs_relationshipName;
-
- if (isRelationship === true) {
- return isSelfReferential === true || // itself
- modelName === relInfo.lhs_baseModelName || // base or non-polymorphic
- relInfo.lhs_modelNames.indexOf(modelName) !== -1; // polymorphic
- }
-
- return false;
+ return modelName === this._lhsModelName && relationshipName === this._lhsRelationshipName;
};
RelationshipPayloads.prototype._isRHS = function _isRHS(modelName, relationshipName) {
- var relInfo = this._relInfo;
- var isSelfReferential = relInfo.isSelfReferential;
- var isRelationship = relationshipName === relInfo.rhs_relationshipName;
-
- if (isRelationship === true) {
- return isSelfReferential === true || // itself
- modelName === relInfo.rhs_baseModelName || // base or non-polymorphic
- relInfo.rhs_modelNames.indexOf(modelName) !== -1; // polymorphic
- }
-
- return false;
+ return modelName === this._rhsModelName && relationshipName === this._rhsRelationshipName;
};
RelationshipPayloads.prototype._flushPending = function _flushPending() {
if (this._pendingPayloads.length === 0) {
return;
@@ -8416,32 +8255,30 @@
var inverseRelationshipData = {
data: {
id: id,
type: modelName
}
- };
- // start flushing this individual payload. The logic is the same whether
- // it's for the left hand side of the relationship or the right hand side,
- // except the role of primary and inverse idToPayloads is reversed
- //
- var previousPayload = void 0;
- var payloadMap = void 0;
- var inversePayloadMap = void 0;
+ // start flushing this individual payload. The logic is the same whether
+ // it's for the left hand side of the relationship or the right hand side,
+ // except the role of primary and inverse idToPayloads is reversed
+ //
+ };var previousPayload = void 0;
+ var idToPayloads = void 0;
+ var inverseIdToPayloads = void 0;
var inverseIsMany = void 0;
-
if (this._isLHS(modelName, relationshipName)) {
- previousPayload = this.lhs_payloads.get(modelName, id);
- payloadMap = this.lhs_payloads;
- inversePayloadMap = this.rhs_payloads;
+ previousPayload = this._lhsPayloads[id];
+ idToPayloads = this._lhsPayloads;
+ inverseIdToPayloads = this._rhsPayloads;
inverseIsMany = this._rhsRelationshipIsMany;
} else {
- (false && Ember.assert(modelName + ':' + relationshipName + ' is not either side of this relationship, ' + this._relInfo.lhs_key + '<->' + this._relInfo.rhs_key, this._isRHS(modelName, relationshipName)));
+ (false && Ember.assert(modelName + ':' + relationshipName + ' is not either side of this relationship, ' + this._lhsModelName + ':' + this._lhsRelationshipName + '<->' + this._rhsModelName + ':' + this._rhsRelationshipName, this._isRHS(modelName, relationshipName)));
- previousPayload = this.rhs_payloads.get(modelName, id);
- payloadMap = this.rhs_payloads;
- inversePayloadMap = this.lhs_payloads;
+ previousPayload = this._rhsPayloads[id];
+ idToPayloads = this._rhsPayloads;
+ inverseIdToPayloads = this._lhsPayloads;
inverseIsMany = this._lhsRelationshipIsMany;
}
// actually flush this individual payload
//
@@ -8481,69 +8318,67 @@
// only remove relationship information before adding if there is relationshipData.data
// * null is considered new information "empty", and it should win
// * undefined is NOT considered new information, we should keep original state
// * anything else is considered new information, and it should win
if (relationshipData.data !== undefined) {
- this._removeInverse(id, previousPayload, inversePayloadMap);
+ this._removeInverse(id, previousPayload, inverseIdToPayloads);
}
- payloadMap.set(modelName, id, relationshipData);
- this._populateInverse(relationshipData, inverseRelationshipData, inversePayloadMap, inverseIsMany);
+ idToPayloads[id] = relationshipData;
+ this._populateInverse(relationshipData, inverseRelationshipData, inverseIdToPayloads, inverseIsMany);
}
};
- RelationshipPayloads.prototype._populateInverse = function _populateInverse(relationshipData, inversePayload, inversePayloadMap, inverseIsMany) {
+ RelationshipPayloads.prototype._populateInverse = function _populateInverse(relationshipData, inversePayload, inverseIdToPayloads, inverseIsMany) {
if (!relationshipData.data) {
// This id doesn't have an inverse, eg a belongsTo with a payload
// { data: null }, so there's nothing to populate
return;
}
if (Array.isArray(relationshipData.data)) {
for (var i = 0; i < relationshipData.data.length; ++i) {
- var resourceIdentifier = relationshipData.data[i];
- this._addToInverse(inversePayload, resourceIdentifier, inversePayloadMap, inverseIsMany);
+ var inverseId = relationshipData.data[i].id;
+ this._addToInverse(inversePayload, inverseId, inverseIdToPayloads, inverseIsMany);
}
} else {
- var _resourceIdentifier = relationshipData.data;
- this._addToInverse(inversePayload, _resourceIdentifier, inversePayloadMap, inverseIsMany);
+ var _inverseId = relationshipData.data.id;
+ this._addToInverse(inversePayload, _inverseId, inverseIdToPayloads, inverseIsMany);
}
};
- RelationshipPayloads.prototype._addToInverse = function _addToInverse(inversePayload, resourceIdentifier, inversePayloadMap, inverseIsMany) {
- var relInfo = this._relInfo;
-
- if (relInfo.isReflexive && inversePayload.data.id === resourceIdentifier.id) {
+ RelationshipPayloads.prototype._addToInverse = function _addToInverse(inversePayload, inverseId, inverseIdToPayloads, inverseIsMany) {
+ if (this._isReflexive && inversePayload.data.id === inverseId) {
// eg <user:1>.friends = [{ id: 1, type: 'user' }]
return;
}
- var existingPayload = inversePayloadMap.get(resourceIdentifier.type, resourceIdentifier.id);
+ var existingPayload = inverseIdToPayloads[inverseId];
var existingData = existingPayload && existingPayload.data;
if (existingData) {
// There already is an inverse, either add or overwrite depehnding on
// whether the inverse is a many relationship or not
//
if (Array.isArray(existingData)) {
existingData.push(inversePayload.data);
} else {
- inversePayloadMap.set(resourceIdentifier.type, resourceIdentifier.id, inversePayload);
+ inverseIdToPayloads[inverseId] = inversePayload;
}
} else {
// first time we're populating the inverse side
//
if (inverseIsMany) {
- inversePayloadMap.set(resourceIdentifier.type, resourceIdentifier.id, {
+ inverseIdToPayloads[inverseId] = {
data: [inversePayload.data]
- });
+ };
} else {
- inversePayloadMap.set(resourceIdentifier.type, resourceIdentifier.id, inversePayload);
+ inverseIdToPayloads[inverseId] = inversePayload;
}
}
};
- RelationshipPayloads.prototype._removeInverse = function _removeInverse(id, previousPayload, inversePayloadMap) {
+ RelationshipPayloads.prototype._removeInverse = function _removeInverse(id, previousPayload, inverseIdToPayloads) {
var data = previousPayload && previousPayload.data;
if (!data) {
// either this is the first time we've seen a payload for this id, or its
// previous payload indicated that it had no inverse, eg a belongsTo
// relationship with payload { data: null }
@@ -8554,20 +8389,19 @@
}
if (Array.isArray(data)) {
// TODO: diff rather than removeall addall?
for (var i = 0; i < data.length; ++i) {
- var resourceIdentifier = data[i];
- this._removeFromInverse(id, resourceIdentifier, inversePayloadMap);
+ this._removeFromInverse(id, data[i].id, inverseIdToPayloads);
}
} else {
- this._removeFromInverse(id, data, inversePayloadMap);
+ this._removeFromInverse(id, data.id, inverseIdToPayloads);
}
};
- RelationshipPayloads.prototype._removeFromInverse = function _removeFromInverse(id, resourceIdentifier, inversePayloads) {
- var inversePayload = inversePayloads.get(resourceIdentifier.type, resourceIdentifier.id);
+ RelationshipPayloads.prototype._removeFromInverse = function _removeFromInverse(id, inverseId, inversePayloads) {
+ var inversePayload = inversePayloads[inverseId];
var data = inversePayload && inversePayload.data;
if (!data) {
return;
}
@@ -8575,27 +8409,25 @@
if (Array.isArray(data)) {
inversePayload.data = data.filter(function (x) {
return x.id !== id;
});
} else {
- inversePayloads.set(resourceIdentifier.type, resourceIdentifier.id, {
+ inversePayloads[inverseId] = {
data: null
- });
+ };
}
};
_createClass(RelationshipPayloads, [{
key: '_lhsRelationshipIsMany',
get: function () {
- var meta = this._relInfo.lhs_relationshipMeta;
- return meta !== null && meta.kind === 'hasMany';
+ return this._lhsRelationshipMeta && this._lhsRelationshipMeta.kind === 'hasMany';
}
}, {
key: '_rhsRelationshipIsMany',
get: function () {
- var meta = this._relInfo.rhs_relationshipMeta;
- return meta !== null && meta.kind === 'hasMany';
+ return this._rhsRelationshipMeta && this._rhsRelationshipMeta.kind === 'hasMany';
}
}]);
return RelationshipPayloads;
}();
@@ -8698,11 +8530,10 @@
this.canonicalState = internalModel;
_Relationship.prototype.addCanonicalInternalModel.call(this, internalModel);
};
BelongsToRelationship.prototype.inverseDidDematerialize = function inverseDidDematerialize() {
- _Relationship.prototype.inverseDidDematerialize.call(this, this.inverseInternalModel);
this.notifyBelongsToChanged();
};
BelongsToRelationship.prototype.removeCompletelyFromOwn = function removeCompletelyFromOwn(internalModel) {
_Relationship.prototype.removeCompletelyFromOwn.call(this, internalModel);
@@ -8715,16 +8546,10 @@
this.inverseInternalModel = null;
this.notifyBelongsToChanged();
}
};
- BelongsToRelationship.prototype.removeCompletelyFromInverse = function removeCompletelyFromInverse() {
- _Relationship.prototype.removeCompletelyFromInverse.call(this);
-
- this.inverseInternalModel = null;
- };
-
BelongsToRelationship.prototype.flushCanonical = function flushCanonical() {
//temporary fix to not remove newly created records if server returned null.
//TODO remove once we have proper diffing
if (this.inverseInternalModel && this.inverseInternalModel.isNew() && !this.canonicalState) {
return;
@@ -8765,16 +8590,10 @@
this.inverseInternalModel = null;
_Relationship.prototype.removeInternalModelFromOwn.call(this, internalModel);
this.notifyBelongsToChanged();
};
- BelongsToRelationship.prototype.removeAllInternalModelsFromOwn = function removeAllInternalModelsFromOwn() {
- _Relationship.prototype.removeAllInternalModelsFromOwn.call(this);
- this.inverseInternalModel = null;
- this.notifyBelongsToChanged();
- };
-
BelongsToRelationship.prototype.notifyBelongsToChanged = function notifyBelongsToChanged() {
this.internalModel.notifyBelongsToChanged(this.key);
};
BelongsToRelationship.prototype.removeCanonicalInternalModelFromOwn = function removeCanonicalInternalModelFromOwn(internalModel) {
@@ -8783,15 +8602,10 @@
}
this.canonicalState = null;
_Relationship.prototype.removeCanonicalInternalModelFromOwn.call(this, internalModel);
};
- BelongsToRelationship.prototype.removeAllCanonicalInternalModelsFromOwn = function removeAllCanonicalInternalModelsFromOwn() {
- _Relationship.prototype.removeAllCanonicalInternalModelsFromOwn.call(this);
- this.canonicalState = null;
- };
-
BelongsToRelationship.prototype.findRecord = function findRecord() {
if (this.inverseInternalModel) {
return this.store._findByInternalModel(this.inverseInternalModel);
} else {
return EmberPromise.resolve(null);
@@ -9048,16 +8862,11 @@
var _this = _possibleConstructorReturn(this, _Relationship.call(this, store, internalModel, inverseKey, relationshipMeta));
_this.belongsToType = relationshipMeta.type;
_this.canonicalState = [];
_this.isPolymorphic = relationshipMeta.options.polymorphic;
- // The ManyArray for this relationship
_this._manyArray = null;
- // The previous ManyArray for this relationship. It will be destroyed when
- // we create a new many array, but in the interim it will be updated if
- // inverse internal models are unloaded.
- _this._retainedManyArray = null;
_this.__loadingPromise = null;
return _this;
}
ManyRelationship.prototype._updateLoadingPromise = function _updateLoadingPromise(promise, content) {
@@ -9105,18 +8914,14 @@
this.canonicalState.push(internalModel);
}
_Relationship.prototype.addCanonicalInternalModel.call(this, internalModel, idx);
};
- ManyRelationship.prototype.inverseDidDematerialize = function inverseDidDematerialize(inverseInternalModel) {
- _Relationship.prototype.inverseDidDematerialize.call(this, inverseInternalModel);
- if (this.isAsync) {
- if (this._manyArray) {
- this._retainedManyArray = this._manyArray;
- this._manyArray = null;
- }
- this._removeInternalModelFromManyArray(this._retainedManyArray, inverseInternalModel);
+ ManyRelationship.prototype.inverseDidDematerialize = function inverseDidDematerialize() {
+ if (this._manyArray) {
+ this._manyArray.destroy();
+ this._manyArray = null;
}
this.notifyHasManyChanged();
};
ManyRelationship.prototype.addInternalModel = function addInternalModel(internalModel, idx) {
@@ -9141,16 +8946,10 @@
this.canonicalState.splice(i, 1);
}
_Relationship.prototype.removeCanonicalInternalModelFromOwn.call(this, internalModel, idx);
};
- ManyRelationship.prototype.removeAllCanonicalInternalModelsFromOwn = function removeAllCanonicalInternalModelsFromOwn() {
- _Relationship.prototype.removeAllCanonicalInternalModelsFromOwn.call(this);
- this.canonicalMembers.clear();
- this.canonicalState.splice(0, this.canonicalState.length);
- };
-
ManyRelationship.prototype.removeCompletelyFromOwn = function removeCompletelyFromOwn(internalModel) {
_Relationship.prototype.removeCompletelyFromOwn.call(this, internalModel);
var canonicalIndex = this.canonicalState.indexOf(internalModel);
@@ -9179,37 +8978,11 @@
ManyRelationship.prototype.removeInternalModelFromOwn = function removeInternalModelFromOwn(internalModel, idx) {
if (!this.members.has(internalModel)) {
return;
}
_Relationship.prototype.removeInternalModelFromOwn.call(this, internalModel, idx);
- // note that ensuring the many array is created, via `this.manyArray`
- // (instead of `this._manyArray`) is intentional.
- //
- // Because we're removing from local, and not canonical, state, it is
- // important that the many array is initialized now with those changes,
- // otherwise it will be initialized with canonical state and we'll have
- // lost the fact that this internalModel was removed.
- this._removeInternalModelFromManyArray(this.manyArray, internalModel, idx);
- this._removeInternalModelFromManyArray(this._retainedManyArray, internalModel, idx);
- };
-
- ManyRelationship.prototype.removeAllInternalModelsFromOwn = function removeAllInternalModelsFromOwn() {
- _Relationship.prototype.removeAllInternalModelsFromOwn.call(this);
- // as with removeInternalModelFromOwn, we make sure the many array is
- // instantiated, or we'll lose local removals, as we're not updating
- // canonical state here.
- this.manyArray.clear();
- if (this._retainedManyArray) {
- this._retainedManyArray.clear();
- }
- };
-
- ManyRelationship.prototype._removeInternalModelFromManyArray = function _removeInternalModelFromManyArray(manyArray, internalModel, idx) {
- if (manyArray === null) {
- return;
- }
-
+ var manyArray = this.manyArray;
if (idx !== undefined) {
//TODO(Igor) not used currently, fix
manyArray.currentState.removeAt(idx);
} else {
manyArray._removeInternalModels([internalModel]);
@@ -9367,18 +9140,16 @@
ManyRelationship.prototype.destroy = function destroy() {
_Relationship.prototype.destroy.call(this);
var manyArray = this._manyArray;
if (manyArray) {
manyArray.destroy();
- this._manyArray = null;
}
var proxy = this.__loadingPromise;
if (proxy) {
proxy.destroy();
- this.__loadingPromise = null;
}
};
_createClass(ManyRelationship, [{
key: '_loadingPromise',
@@ -9386,30 +9157,21 @@
return this.__loadingPromise;
}
}, {
key: 'manyArray',
get: function () {
- (false && Ember.assert('Error: relationship ' + this.parentType + ':' + this.key + ' has both many array and retained many array', this._manyArray === null || this._retainedManyArray === null));
-
-
if (!this._manyArray) {
this._manyArray = _manyArray.default.create({
canonicalState: this.canonicalState,
store: this.store,
relationship: this,
type: this.store.modelFor(this.belongsToType),
record: this.internalModel,
meta: this.meta,
isPolymorphic: this.isPolymorphic
});
-
- if (this._retainedManyArray !== null) {
- this._retainedManyArray.destroy();
- this._retainedManyArray = null;
- }
}
-
return this._manyArray;
}
}]);
return ManyRelationship;
@@ -9458,11 +9220,10 @@
return Constructor;
};
}();
var guidFor = Ember.guidFor;
- var get = Ember.get;
var Relationship = function () {
function Relationship(store, internalModel, inverseKey, relationshipMeta) {
var async = relationshipMeta.options.async;
var polymorphic = relationshipMeta.options.polymorphic;
@@ -9480,56 +9241,38 @@
this.inverseKeyForImplicit = this.internalModel.modelName + this.key;
this.linkPromise = null;
this.meta = null;
this.hasData = false;
this.hasLoaded = false;
- this.__inverseMeta = undefined;
}
Relationship.prototype._inverseIsAsync = function _inverseIsAsync() {
- var inverseMeta = this._inverseMeta;
- if (!inverseMeta) {
+ if (!this.inverseKey || !this.inverseInternalModel) {
return false;
}
-
- var inverseAsync = inverseMeta.options.async;
- return typeof inverseAsync === 'undefined' ? true : inverseAsync;
+ return this.inverseInternalModel._relationships.get(this.inverseKey).isAsync;
};
- Relationship.prototype._inverseIsSync = function _inverseIsSync() {
- var inverseMeta = this._inverseMeta;
- if (!inverseMeta) {
- return false;
- }
-
- var inverseAsync = inverseMeta.options.async;
- return typeof inverseAsync === 'undefined' ? false : !inverseAsync;
- };
-
- Relationship.prototype.internalModelDidDematerialize = function internalModelDidDematerialize() {
- var _this = this;
-
+ Relationship.prototype.removeInverseRelationships = function removeInverseRelationships() {
if (!this.inverseKey) {
return;
}
- this.forAllMembers(function (inverseInternalModel) {
- var relationship = inverseInternalModel._relationships.get(_this.inverseKey);
- relationship.inverseDidDematerialize(_this.internalModel);
- });
- };
+ var allMembers =
+ // we actually want a union of members and canonicalMembers
+ // they should be disjoint but currently are not due to a bug
+ this.members.list.concat(this.canonicalMembers.list);
- Relationship.prototype.inverseDidDematerialize = function inverseDidDematerialize(inverseInternalModel) {
- if (!this.isAsync) {
- // unloading inverse of a sync relationship is treated as a client-side
- // delete, so actually remove the models don't merely invalidate the cp
- // cache.
- this.removeInternalModelFromOwn(inverseInternalModel);
- this.removeCanonicalInternalModelFromOwn(inverseInternalModel);
+ for (var i = 0; i < allMembers.length; i++) {
+ var inverseInternalModel = allMembers[i];
+ var relationship = inverseInternalModel._relationships.get(this.inverseKey);
+ relationship.inverseDidDematerialize();
}
};
+ Relationship.prototype.inverseDidDematerialize = function inverseDidDematerialize() {};
+
Relationship.prototype.updateMeta = function updateMeta(meta) {
this.meta = meta;
};
Relationship.prototype.clear = function clear() {
@@ -9545,33 +9288,23 @@
var _member = canonicalMembers[0];
this.removeCanonicalInternalModel(_member);
}
};
- Relationship.prototype.removeAllInternalModelsFromOwn = function removeAllInternalModelsFromOwn() {
- this.members.clear();
- this.internalModel.updateRecordArrays();
- };
-
- Relationship.prototype.removeAllCanonicalInternalModelsFromOwn = function removeAllCanonicalInternalModelsFromOwn() {
- this.canonicalMembers.clear();
- this.flushCanonicalLater();
- };
-
Relationship.prototype.removeInternalModels = function removeInternalModels(internalModels) {
- var _this2 = this;
+ var _this = this;
internalModels.forEach(function (internalModel) {
- return _this2.removeInternalModel(internalModel);
+ return _this.removeInternalModel(internalModel);
});
};
Relationship.prototype.addInternalModels = function addInternalModels(internalModels, idx) {
- var _this3 = this;
+ var _this2 = this;
internalModels.forEach(function (internalModel) {
- _this3.addInternalModel(internalModel, idx);
+ _this2.addInternalModel(internalModel, idx);
if (idx !== undefined) {
idx++;
}
});
};
@@ -9610,11 +9343,11 @@
}
} else {
var _relationships = internalModel._implicitRelationships;
var _relationship = _relationships[this.inverseKeyForImplicit];
if (!_relationship) {
- _relationship = _relationships[this.inverseKeyForImplicit] = new Relationship(this.store, internalModel, this.key, { options: { async: this.isAsync }, type: this.parentType });
+ _relationship = _relationships[this.inverseKeyForImplicit] = new Relationship(this.store, internalModel, this.key, { options: { async: this.isAsync } });
}
_relationship.addCanonicalInternalModel(this.internalModel);
}
};
@@ -9648,11 +9381,11 @@
this.notifyRecordRelationshipAdded(internalModel, idx);
if (this.inverseKey) {
internalModel._relationships.get(this.inverseKey).addInternalModel(this.internalModel);
} else {
if (!internalModel._implicitRelationships[this.inverseKeyForImplicit]) {
- internalModel._implicitRelationships[this.inverseKeyForImplicit] = new Relationship(this.store, internalModel, this.key, { options: { async: this.isAsync }, type: this.parentType });
+ internalModel._implicitRelationships[this.inverseKeyForImplicit] = new Relationship(this.store, internalModel, this.key, { options: { async: this.isAsync } });
}
internalModel._implicitRelationships[this.inverseKeyForImplicit].addInternalModel(this.internalModel);
}
this.internalModel.updateRecordArrays();
}
@@ -9697,11 +9430,11 @@
this.canonicalMembers.delete(internalModel);
this.flushCanonicalLater();
};
Relationship.prototype.removeCompletelyFromInverse = function removeCompletelyFromInverse() {
- var _this4 = this;
+ var _this3 = this;
if (!this.inverseKey) {
return;
}
@@ -9712,46 +9445,20 @@
var unload = function (inverseInternalModel) {
var id = guidFor(inverseInternalModel);
if (seen[id] === undefined) {
- var relationship = inverseInternalModel._relationships.get(_this4.inverseKey);
+ var relationship = inverseInternalModel._relationships.get(_this3.inverseKey);
relationship.removeCompletelyFromOwn(internalModel);
seen[id] = true;
}
};
this.members.forEach(unload);
this.canonicalMembers.forEach(unload);
-
- if (!this.isAsync) {
- this.clear();
- }
};
- Relationship.prototype.forAllMembers = function forAllMembers(callback) {
- var seen = Object.create(null);
-
- for (var i = 0; i < this.members.list.length; i++) {
- var inverseInternalModel = this.members.list[i];
- var id = guidFor(inverseInternalModel);
- if (!seen[id]) {
- seen[id] = true;
- callback(inverseInternalModel);
- }
- }
-
- for (var _i = 0; _i < this.canonicalMembers.list.length; _i++) {
- var _inverseInternalModel = this.canonicalMembers.list[_i];
- var _id = guidFor(_inverseInternalModel);
- if (!seen[_id]) {
- seen[_id] = true;
- callback(_inverseInternalModel);
- }
- }
- };
-
Relationship.prototype.removeCompletelyFromOwn = function removeCompletelyFromOwn(internalModel) {
this.canonicalMembers.delete(internalModel);
this.members.delete(internalModel);
this.internalModel.updateRecordArrays();
};
@@ -9768,12 +9475,12 @@
}
}
//TODO(Igor) make this less abysmally slow
this.members = this.canonicalMembers.copy();
- for (var _i2 = 0; _i2 < newInternalModels.length; _i2++) {
- this.members.add(newInternalModels[_i2]);
+ for (var _i = 0; _i < newInternalModels.length; _i++) {
+ this.members.add(newInternalModels[_i]);
}
};
Relationship.prototype.flushCanonicalLater = function flushCanonicalLater() {
if (this.willSync) {
@@ -9870,27 +9577,10 @@
Relationship.prototype.updateData = function updateData() {};
Relationship.prototype.destroy = function destroy() {};
_createClass(Relationship, [{
- key: '_inverseMeta',
- get: function () {
- if (this.__inverseMeta === undefined) {
- var inverseMeta = null;
-
- if (this.inverseKey) {
- var inverseModelClass = this.store.modelFor(this.relationshipMeta.type);
- var inverseRelationships = get(inverseModelClass, 'relationshipsByName');
- inverseMeta = inverseRelationships.get(this.inverseKey);
- }
-
- this.__inverseMeta = inverseMeta;
- }
-
- return this.__inverseMeta;
- }
- }, {
key: 'parentType',
get: function () {
return this.internalModel.modelName;
}
}]);
@@ -10288,11 +9978,11 @@
return Snapshot;
}();
exports.default = Snapshot;
});
-define('ember-data/-private/system/store', ['exports', 'ember-data/-private/adapters/errors', 'ember-data/-private/system/model/model', 'ember-data/-private/system/normalize-model-name', 'ember-data/-private/system/identity-map', 'ember-data/-private/system/promise-proxies', 'ember-data/-private/system/store/common', 'ember-data/-private/system/store/serializer-response', 'ember-data/-private/system/store/serializers', 'ember-data/-private/system/relationships/relationship-payloads-manager', 'ember-data/-private/system/store/finders', 'ember-data/-private/utils', 'ember-data/-private/system/coerce-id', 'ember-data/-private/system/record-array-manager', 'ember-data/-private/system/store/container-instance-cache', 'ember-data/-private/system/model/internal-model', 'ember-data/-private/features'], function (exports, _errors, _model, _normalizeModelName, _identityMap, _promiseProxies, _common, _serializerResponse, _serializers, _relationshipPayloadsManager, _finders, _utils, _coerceId, _recordArrayManager, _containerInstanceCache, _internalModel5, _features) {
+define('ember-data/-private/system/store', ['exports', 'ember-data/-private/adapters/errors', 'ember-data/-private/system/model/model', 'ember-data/-private/system/normalize-model-name', 'ember-data/-private/system/identity-map', 'ember-data/-private/system/promise-proxies', 'ember-data/-private/system/store/common', 'ember-data/-private/system/store/serializer-response', 'ember-data/-private/system/store/serializers', 'ember-data/-private/system/relationships/relationship-payloads-manager', 'ember-data/-private/system/store/finders', 'ember-data/-private/utils', 'ember-data/-private/system/coerce-id', 'ember-data/-private/system/record-array-manager', 'ember-data/-private/system/model/internal-model', 'ember-data/-private/features'], function (exports, _errors, _model, _normalizeModelName, _identityMap, _promiseProxies, _common, _serializerResponse, _serializers, _relationshipPayloadsManager, _finders, _utils, _coerceId, _recordArrayManager, _internalModel5, _features) {
'use strict';
exports.__esModule = true;
exports.Store = undefined;
var A = Ember.A;
@@ -10430,11 +10120,10 @@
this._backburner = new Backburner(['normalizeRelationships', 'syncRelationships', 'finished']);
// internal bookkeeping; not observable
this.recordArrayManager = new _recordArrayManager.default({ store: this });
this._identityMap = new _identityMap.default();
this._pendingSave = [];
- this._instanceCache = new _containerInstanceCache.default((0, _utils.getOwner)(this), this);
this._modelFactoryCache = Object.create(null);
this._relationshipsPayloads = new _relationshipPayloadsManager.default(this);
/*
Ember Data uses several specialized micro-queues for organizing
@@ -10456,11 +10145,12 @@
defaultValue: function () {
return [];
}
});
- this._instanceCache = new _containerInstanceCache.default((0, _utils.getOwner)(this), this);
+ this._adapterCache = Object.create(null);
+ this._serializerCache = Object.create(null);
},
/**
The default adapter to use to communicate to a backend server or
@@ -12668,11 +12358,53 @@
(false && Ember.assert('You need to pass a model name to the store\'s adapterFor method', isPresent(modelName)));
(false && Ember.assert('Passing classes to store.adapterFor has been removed. Please pass a dasherized string instead of ' + modelName, typeof modelName === 'string'));
var normalizedModelName = (0, _normalizeModelName.default)(modelName);
- return this._instanceCache.get('adapter', normalizedModelName);
+ var _adapterCache = this._adapterCache;
+
+ var adapter = _adapterCache[normalizedModelName];
+ if (adapter) {
+ return adapter;
+ }
+
+ var owner = (0, _utils.getOwner)(this);
+
+ adapter = owner.lookup('adapter:' + normalizedModelName);
+ if (adapter !== undefined) {
+ set(adapter, 'store', this);
+ _adapterCache[normalizedModelName] = adapter;
+ return adapter;
+ }
+
+ // no adapter found for the specific model, fallback and check for application adapter
+ adapter = _adapterCache.application || owner.lookup('adapter:application');
+ if (adapter !== undefined) {
+ set(adapter, 'store', this);
+ _adapterCache[normalizedModelName] = adapter;
+ _adapterCache.application = adapter;
+ return adapter;
+ }
+
+ // no model specific adapter or application adapter, check for an `adapter`
+ // property defined on the store
+ var adapterName = this.get('adapter');
+ adapter = _adapterCache[adapterName] || owner.lookup('adapter:' + adapterName);
+ if (adapter !== undefined) {
+ set(adapter, 'store', this);
+ _adapterCache[normalizedModelName] = adapter;
+ _adapterCache[adapterName] = adapter;
+ return adapter;
+ }
+
+ // final fallback, no model specific adapter, no application adapter, no
+ // `adapter` property on store: use json-api adapter
+ adapter = _adapterCache['-json-api'] || owner.lookup('adapter:-json-api');
+ set(adapter, 'store', this);
+ _adapterCache[normalizedModelName] = adapter;
+ _adapterCache['-json-api'] = adapter;
+ return adapter;
},
// ..............................
// . RECORD CHANGE NOTIFICATION .
@@ -12699,11 +12431,55 @@
(false && Ember.assert('You need to pass a model name to the store\'s serializerFor method', isPresent(modelName)));
(false && Ember.assert('Passing classes to store.serializerFor has been removed. Please pass a dasherized string instead of ' + modelName, typeof modelName === 'string'));
var normalizedModelName = (0, _normalizeModelName.default)(modelName);
- return this._instanceCache.get('serializer', normalizedModelName);
+ var _serializerCache = this._serializerCache;
+
+ var serializer = _serializerCache[normalizedModelName];
+ if (serializer) {
+ return serializer;
+ }
+
+ var owner = (0, _utils.getOwner)(this);
+
+ serializer = owner.lookup('serializer:' + normalizedModelName);
+ if (serializer !== undefined) {
+ set(serializer, 'store', this);
+ _serializerCache[normalizedModelName] = serializer;
+ return serializer;
+ }
+
+ // no serializer found for the specific model, fallback and check for application serializer
+ serializer = _serializerCache.application || owner.lookup('serializer:application');
+ if (serializer !== undefined) {
+ set(serializer, 'store', this);
+ _serializerCache[normalizedModelName] = serializer;
+ _serializerCache.application = serializer;
+ return serializer;
+ }
+
+ // no model specific serializer or application serializer, check for the `defaultSerializer`
+ // property defined on the adapter
+ var adapter = this.adapterFor(modelName);
+ var serializerName = get(adapter, 'defaultSerializer');
+ serializer = _serializerCache[serializerName] || owner.lookup('serializer:' + serializerName);
+ if (serializer !== undefined) {
+ set(serializer, 'store', this);
+ _serializerCache[normalizedModelName] = serializer;
+ _serializerCache[serializerName] = serializer;
+ return serializer;
+ }
+
+ // final fallback, no model specific serializer, no application serializer, no
+ // `serializer` property on store: use json-api serializer
+ serializer = _serializerCache['-default'] || owner.lookup('serializer:-default');
+ set(serializer, 'store', this);
+ _serializerCache[normalizedModelName] = serializer;
+ _serializerCache['-default'] = serializer;
+
+ return serializer;
},
lookupAdapter: function (name) {
(false && !(false) && Ember.deprecate('Use of lookupAdapter is deprecated, use adapterFor instead.', false, {
id: 'ds.store.lookupAdapter',
until: '3.0'
@@ -12721,12 +12497,14 @@
},
willDestroy: function () {
this._super.apply(this, arguments);
this._pushedInternalModels = null;
this.recordArrayManager.destroy();
- this._instanceCache.destroy();
+ this._adapterCache = null;
+ this._serializerCache = null;
+
this.unloadAll();
},
_updateRelationshipState: function (relationship) {
var _this2 = this;
@@ -12958,114 +12736,10 @@
function _objectIsAlive(object) {
return !(get(object, "isDestroyed") || get(object, "isDestroying"));
}
});
-define('ember-data/-private/system/store/container-instance-cache', ['exports'], function (exports) {
- 'use strict';
-
- exports.__esModule = true;
-
- function _classCallCheck(instance, Constructor) {
- if (!(instance instanceof Constructor)) {
- throw new TypeError("Cannot call a class as a function");
- }
- }
-
- var set = Ember.set;
-
- var ContainerInstanceCache = function () {
- function ContainerInstanceCache(owner, store) {
- this.isDestroying = false;
- this.isDestroyed = false;
- this._owner = owner;
- this._store = store;
- this._namespaces = {
- adapter: Object.create(null),
- serializer: Object.create(null)
- };
- }
-
- ContainerInstanceCache.prototype.get = function get(namespace, preferredKey) {
- var cache = this._namespaces[namespace];
-
- if (cache[preferredKey]) {
- return cache[preferredKey];
- }
-
- var preferredLookupKey = namespace + ':' + preferredKey;
-
- var instance = this._instanceFor(preferredLookupKey) || this._findInstance(namespace, this._fallbacksFor(namespace, preferredKey));
- if (instance) {
- cache[preferredKey] = instance;
- set(instance, 'store', this._store);
- }
-
- return cache[preferredKey];
- };
-
- ContainerInstanceCache.prototype._fallbacksFor = function _fallbacksFor(namespace, preferredKey) {
- if (namespace === 'adapter') {
- return ['application', this._store.get('adapter'), '-json-api'];
- }
-
- // serializer
- return ['application', this.get('adapter', preferredKey).get('defaultSerializer'), '-default'];
- };
-
- ContainerInstanceCache.prototype._findInstance = function _findInstance(namespace, fallbacks) {
- var cache = this._namespaces[namespace];
-
- for (var i = 0, length = fallbacks.length; i < length; i++) {
- var fallback = fallbacks[i];
-
- if (cache[fallback]) {
- return cache[fallback];
- }
-
- var lookupKey = namespace + ':' + fallback;
- var instance = this._instanceFor(lookupKey);
-
- if (instance) {
- cache[fallback] = instance;
- return instance;
- }
- }
- };
-
- ContainerInstanceCache.prototype._instanceFor = function _instanceFor(key) {
- return this._owner.lookup(key);
- };
-
- ContainerInstanceCache.prototype.destroyCache = function destroyCache(cache) {
- var cacheEntries = Object.keys(cache);
-
- for (var i = 0, length = cacheEntries.length; i < length; i++) {
- var cacheKey = cacheEntries[i];
- var cacheEntry = cache[cacheKey];
- if (cacheEntry) {
- cacheEntry.destroy();
- }
- }
- };
-
- ContainerInstanceCache.prototype.destroy = function destroy() {
- this.isDestroying = true;
- this.destroyCache(this._namespaces.adapter);
- this.destroyCache(this._namespaces.serializer);
- this.isDestroyed = true;
- };
-
- ContainerInstanceCache.prototype.toString = function toString() {
- return 'ContainerInstanceCache';
- };
-
- return ContainerInstanceCache;
- }();
-
- exports.default = ContainerInstanceCache;
-});
define('ember-data/-private/system/store/finders', ['exports', 'ember-data/-private/system/store/common', 'ember-data/-private/system/store/serializer-response', 'ember-data/-private/system/store/serializers'], function (exports, _common, _serializerResponse, _serializers) {
'use strict';
exports.__esModule = true;
exports._find = _find;
@@ -15392,14 +15066,11 @@
function getDefaultValue(record, options, key) {
if (typeof options.defaultValue === 'function') {
return options.defaultValue.apply(null, arguments);
} else {
var defaultValue = options.defaultValue;
- (false && !(typeof defaultValue !== 'object' || defaultValue === null) && Ember.deprecate('Non primitive defaultValues are deprecated because they are shared between all instances. If you would like to use a complex object as a default value please provide a function that returns the complex object.', typeof defaultValue !== 'object' || defaultValue === null, {
- id: 'ds.defaultValue.complex-object',
- until: '3.0.0'
- }));
+ (false && Ember.assert('Non primitive defaultValues are not supported because they are shared between all instances. If you would like to use a complex object as a default value please provide a function that returns the complex object.', typeof defaultValue !== 'object' || defaultValue === null));
return defaultValue;
}
}
@@ -15659,14 +15330,10 @@
define('ember-data/initialize-store-service', ['exports'], function (exports) {
'use strict';
exports.__esModule = true;
exports.default = initializeStoreService;
-
-
- var deprecateOldEmberDataInitializers = void 0;
-
/*
Configures a registry for use with an Ember-Data
store.
@method initializeStoreService
@@ -15677,104 +15344,21 @@
// instance.container supports Ember 1.11 - 2.0
var container = instance.lookup ? instance : instance.container;
// Eagerly generate the store so defaultStore is populated.
container.lookup('service:store');
-
- if (false) {
- // In Ember 2.4+ instance.base is the `Ember.Application` or `Ember.Engine` instance
- // In Ember 1.11 - 2.3 we fallback to `instance.application`
- var base = instance.base || instance.application;
- deprecateOldEmberDataInitializers(base.constructor.initializers);
- }
}
-
- if (false) {
- var DEPRECATED_INITIALIZER_NAMES = ['data-adapter', 'injectStore', 'transforms', 'store'];
-
- var matchesDeprecatedInititalizer = function matchesDeprecatedInititalizer(name) {
- return DEPRECATED_INITIALIZER_NAMES.indexOf(name) !== -1;
- };
-
- var warnForDeprecatedInitializers = function warnForDeprecatedInitializers(initializer) {
- var deprecatedBeforeInitializer = matchesDeprecatedInititalizer(initializer.before);
- var deprecatedAfterInitializer = matchesDeprecatedInititalizer(initializer.after);
- var deprecatedProp = deprecatedBeforeInitializer ? 'before' : 'after';
-
- (false && !(!(deprecatedBeforeInitializer || deprecatedAfterInitializer)) && Ember.deprecate('The initializer `' + initializer[deprecatedProp] + '` has been deprecated. Please update your `' + initializer.name + '` initializer to use use `' + deprecatedProp + ': \'ember-data\'` instead.', !(deprecatedBeforeInitializer || deprecatedAfterInitializer), {
- id: 'ds.deprecated-initializers',
- until: '3.0.0'
- }));
- };
-
- deprecateOldEmberDataInitializers = function deprecateOldEmberDataInitializers(initializers) {
- // collect all of the initializers
- var keys = Object.keys(initializers);
-
- for (var i = 0; i < keys.length; i++) {
- var name = keys[i];
-
- // filter out all of the Ember Data initializer. We have some
- // deprecated initializers that depend on other deprecated
- // initializers which may trigger the deprecation warning
- // unintentionally.
- if (!matchesDeprecatedInititalizer(name)) {
- warnForDeprecatedInitializers(initializers[name]);
- }
- }
- };
- }
});
-define('ember-data/initializers/data-adapter', ['exports'], function (exports) {
- 'use strict';
-
- exports.__esModule = true;
- exports.default = {
- name: 'data-adapter',
- before: 'store',
- initialize: function () {}
- };
-});
define('ember-data/initializers/ember-data', ['exports', 'ember-data/setup-container', 'ember-data'], function (exports, _setupContainer) {
'use strict';
exports.__esModule = true;
exports.default = {
name: 'ember-data',
initialize: _setupContainer.default
};
});
-define('ember-data/initializers/injectStore', ['exports'], function (exports) {
- 'use strict';
-
- exports.__esModule = true;
- exports.default = {
- name: 'injectStore',
- before: 'store',
- initialize: function () {}
- };
-});
-define('ember-data/initializers/store', ['exports'], function (exports) {
- 'use strict';
-
- exports.__esModule = true;
- exports.default = {
- name: 'store',
- after: 'ember-data',
- initialize: function () {}
- };
-});
-define('ember-data/initializers/transforms', ['exports'], function (exports) {
- 'use strict';
-
- exports.__esModule = true;
- exports.default = {
- name: 'transforms',
- before: 'store',
- initialize: function () {}
- };
-});
define("ember-data/instance-initializers/ember-data", ["exports", "ember-data/initialize-store-service"], function (exports, _initializeStoreService) {
"use strict";
exports.__esModule = true;
exports.default = {
@@ -16615,11 +16199,11 @@
var deprecatedModelNameLookup = this.modelNameFromPayloadKey(relationshipDataHash.type);
if (modelName !== deprecatedModelNameLookup && this._hasCustomModelNameFromPayloadKey()) {
(false && !(false) && Ember.deprecate("You are using modelNameFromPayloadKey to normalize the type for a relationship. This has been deprecated in favor of modelNameFromPayloadType", false, {
id: 'ds.json-api-serializer.deprecated-model-name-for-relationship',
- until: '3.0.0'
+ until: '4.0.0'
}));
modelName = deprecatedModelNameLookup;
}
@@ -16647,11 +16231,11 @@
usedLookup = 'modelNameFromPayloadType';
if (modelName !== deprecatedModelNameLookup && this._hasCustomModelNameFromPayloadKey()) {
(false && !(false) && Ember.deprecate("You are using modelNameFromPayloadKey to normalize the type for a resource. This has been deprecated in favor of modelNameFromPayloadType", false, {
id: 'ds.json-api-serializer.deprecated-model-name-for-resource',
- until: '3.0.0'
+ until: '4.0.0'
}));
modelName = deprecatedModelNameLookup;
usedLookup = 'modelNameFromPayloadKey';
@@ -16823,11 +16407,11 @@
var deprecatedPayloadTypeLookup = this.payloadKeyFromModelName(snapshot.modelName);
if (payloadType !== deprecatedPayloadTypeLookup && this._hasCustomPayloadKeyFromModelName()) {
(false && !(false) && Ember.deprecate("You used payloadKeyFromModelName to customize how a type is serialized. Use payloadTypeFromModelName instead.", false, {
id: 'ds.json-api-serializer.deprecated-payload-type-for-model',
- until: '3.0.0'
+ until: '4.0.0'
}));
payloadType = deprecatedPayloadTypeLookup;
}
@@ -16882,11 +16466,11 @@
var deprecatedPayloadTypeLookup = this.payloadKeyFromModelName(belongsTo.modelName);
if (payloadType !== deprecatedPayloadTypeLookup && this._hasCustomPayloadKeyFromModelName()) {
(false && !(false) && Ember.deprecate("You used payloadKeyFromModelName to serialize type for belongs-to relationship. Use payloadTypeFromModelName instead.", false, {
id: 'ds.json-api-serializer.deprecated-payload-type-for-belongs-to',
- until: '3.0.0'
+ until: '4.0.0'
}));
payloadType = deprecatedPayloadTypeLookup;
}
@@ -16904,16 +16488,12 @@
}
}
},
serializeHasMany: function (snapshot, json, relationship) {
var key = relationship.key;
- var shouldSerializeHasMany = '_shouldSerializeHasMany';
- if ((0, _private.isEnabled)("ds-check-should-serialize-relationships")) {
- shouldSerializeHasMany = 'shouldSerializeHasMany';
- }
- if (this[shouldSerializeHasMany](snapshot, key, relationship)) {
+ if (this.shouldSerializeHasMany(snapshot, key, relationship)) {
var hasMany = snapshot.hasMany(key);
if (hasMany !== undefined) {
json.relationships = json.relationships || {};
@@ -16934,11 +16514,11 @@
var deprecatedPayloadTypeLookup = this.payloadKeyFromModelName(item.modelName);
if (payloadType !== deprecatedPayloadTypeLookup && this._hasCustomPayloadKeyFromModelName()) {
(false && !(false) && Ember.deprecate("You used payloadKeyFromModelName to serialize type for belongs-to relationship. Use payloadTypeFromModelName instead.", false, {
id: 'ds.json-api-serializer.deprecated-payload-type-for-has-many',
- until: '3.0.0'
+ until: '4.0.0'
}));
payloadType = deprecatedPayloadTypeLookup;
}
@@ -17500,20 +17080,10 @@
var attrs = get(this, 'attrs');
return attrs && attrs[key] && attrs[key].serialize === true;
},
shouldSerializeHasMany: function (snapshot, key, relationship) {
- if (this._shouldSerializeHasMany !== JSONSerializer.prototype._shouldSerializeHasMany) {
- (false && !(false) && Ember.deprecate('The private method _shouldSerializeHasMany has been promoted to the public API. Please remove the underscore to use the public shouldSerializeHasMany method.', false, {
- id: 'ds.serializer.private-should-serialize-has-many',
- until: '3.0.0'
- }));
- }
-
- return this._shouldSerializeHasMany(snapshot, key, relationship);
- },
- _shouldSerializeHasMany: function (snapshot, key, relationship) {
var relationshipType = snapshot.type.determineRelationshipType(relationship, this.store);
if (this._mustSerialize(key)) {
return true;
}
return this._canSerialize(key) && (relationshipType === 'manyToNone' || relationshipType === 'manyToMany');
@@ -17597,16 +17167,12 @@
}
}
},
serializeHasMany: function (snapshot, json, relationship) {
var key = relationship.key;
- var shouldSerializeHasMany = '_shouldSerializeHasMany';
- if ((0, _private.isEnabled)("ds-check-should-serialize-relationships")) {
- shouldSerializeHasMany = 'shouldSerializeHasMany';
- }
- if (this[shouldSerializeHasMany](snapshot, key, relationship)) {
+ if (this.shouldSerializeHasMany(snapshot, key, relationship)) {
var hasMany = snapshot.hasMany(key, { ids: true });
if (hasMany !== undefined) {
// if provided, use the mapping provided by `attrs` in
// the serializer
var payloadKey = this._getMappedKey(key, snapshot.type);
@@ -18035,29 +17601,10 @@
serializePolymorphicType: function (snapshot, json, relationship) {
var key = relationship.key;
var typeKey = this.keyForPolymorphicType(key, relationship.type, 'serialize');
var belongsTo = snapshot.belongsTo(key);
- // old way of getting the key for the polymorphic type
- key = this.keyForAttribute ? this.keyForAttribute(key, "serialize") : key;
- key = key + 'Type';
-
- // The old way of serializing the type of a polymorphic record used
- // `keyForAttribute`, which is not correct. The next code checks if the old
- // way is used and if it differs from the new way of using
- // `keyForPolymorphicType`. If this is the case, a deprecation warning is
- // logged and the old way is restored (so nothing breaks).
- if (key !== typeKey && this.keyForPolymorphicType === RESTSerializer.prototype.keyForPolymorphicType) {
- (false && !(false) && Ember.deprecate("The key to serialize the type of a polymorphic record is created via keyForAttribute which has been deprecated. Use the keyForPolymorphicType hook instead.", false, {
- id: 'ds.rest-serializer.deprecated-key-for-polymorphic-type',
- until: '3.0.0'
- }));
-
-
- typeKey = key;
- }
-
if (isNone(belongsTo)) {
json[typeKey] = null;
} else {
if ((0, _private.isEnabled)("ds-payload-type-hooks")) {
json[typeKey] = this.payloadTypeFromModelName(belongsTo.modelName);
@@ -18185,16 +17732,13 @@
@method initializeStore
@param {Ember.Registry} registry
*/
function initializeStore(registry) {
- // registry.optionsForType for Ember < 2.1.0
- // application.registerOptionsForType for Ember 2.1.0+
var registerOptionsForType = registry.registerOptionsForType || registry.optionsForType;
registerOptionsForType.call(registry, 'serializer', { singleton: false });
registerOptionsForType.call(registry, 'adapter', { singleton: false });
-
registry.register('serializer:-default', _json.default);
registry.register('serializer:-rest', _rest.default);
registry.register('adapter:-rest', _rest2.default);
registry.register('adapter:-json-api', _jsonApi2.default);
@@ -18309,75 +17853,18 @@
});
define('ember-data/transforms/date', ['exports', 'ember-data/transforms/transform'], function (exports, _transform) {
'use strict';
exports.__esModule = true;
-
-
- Ember.Date = Ember.Date || {};
-
- /**
- Date.parse with progressive enhancement for ISO 8601 <https://github.com/csnover/js-iso8601>
-
- © 2011 Colin Snover <http://zetafleet.com>
-
- Released under MIT license.
-
- @class Date
- @namespace Ember
- @static
- @deprecated
- */
- Ember.Date.parse = function (date) {
- (false && !(false) && Ember.deprecate('Ember.Date.parse is deprecated because Safari 5-, IE8-, and\n Firefox 3.6- are no longer supported (see\n https://github.com/csnover/js-iso8601 for the history of this issue).\n Please use Date.parse instead', false, {
- id: 'ds.ember.date.parse-deprecate',
- until: '3.0.0'
- }));
-
-
- return Date.parse(date);
- };
-
- /**
- The `DS.DateTransform` class is used to serialize and deserialize
- date attributes on Ember Data record objects. This transform is used
- when `date` is passed as the type parameter to the
- [DS.attr](../../data#method_attr) function. It uses the [`ISO 8601`](https://en.wikipedia.org/wiki/ISO_8601)
- standard.
-
- ```app/models/score.js
- import DS from 'ember-data';
-
- export default DS.Model.extend({
- value: DS.attr('number'),
- player: DS.belongsTo('player'),
- date: DS.attr('date')
- });
- ```
-
- @class DateTransform
- @extends DS.Transform
- @namespace DS
- */
-
exports.default = _transform.default.extend({
deserialize: function (serialized) {
var type = typeof serialized;
if (type === "string") {
var offset = serialized.indexOf('+');
- if (offset !== -1 && serialized.length - 3 === offset) {
- (false && !(false) && Ember.deprecate('The ECMA2015 Spec for ISO 8601 dates does not allow for shorthand timezone offsets such as +00.\n Ember Data\'s normalization of date\'s allowing for this shorthand has been deprecated, please update your API to return\n UTC dates formatted with \xB1hh:mm timezone offsets or implement a custom UTC transform.', false, {
- id: 'ds.attr.date.normalize-utc',
- until: '3.0.0'
- }));
-
- return new Date(serialized + ':00');
-
- // this is a phantom specific bug fix in which +0000 is not supported
- } else if (offset !== -1 && serialized.length - 5 === offset) {
+ if (offset !== -1 && serialized.length - 5 === offset) {
offset += 3;
return new Date(serialized.slice(0, offset) + ':' + serialized.slice(offset));
}
return new Date(serialized);
} else if (type === "number") {
@@ -18513,10 +18000,10 @@
});
define("ember-data/version", ["exports"], function (exports) {
"use strict";
exports.__esModule = true;
- exports.default = "2.18.3";
+ exports.default = "3.0.0-beta.1";
});
define("ember-inflector", ["module", "exports", "ember-inflector/lib/system", "ember-inflector/lib/ext/string"], function (module, exports, _system) {
"use strict";
exports.__esModule = true;