dist/globals/ember-data.prod.js in ember-data-source-2.12.0.beta.3 vs dist/globals/ember-data.prod.js in ember-data-source-2.12.0.beta.4

- old
+ new

@@ -4,11 +4,11 @@ /*! * @overview Ember Data * @copyright Copyright 2011-2016 Tilde Inc. and contributors. * Portions Copyright 2011 LivingSocial Inc. * @license Licensed under MIT license (see license.js) - * @version 2.12.0-beta.3 + * @version 2.12.0-beta.4 */ var loader, define, requireModule, require, requirejs; (function(global) { @@ -2199,11 +2199,11 @@ setOwner(createOptions, (0, _emberDataPrivateUtils.getOwner)(this.store)); } else { createOptions.container = this.store.container; } - this._record = this.modelClass._create(createOptions); + this._record = this.store.modelFactoryFor(this.modelName).create(createOptions); this._triggerDeferredTriggers(); } return this._record; @@ -3128,10 +3128,40 @@ /** @module ember-data */ + function findPossibleInverses(type, inverseType, name, relationshipsSoFar) { + var possibleRelationships = relationshipsSoFar || []; + + var relationshipMap = get(inverseType, 'relationships'); + if (!relationshipMap) { + return possibleRelationships; + } + + var relationships = relationshipMap.get(type.modelName).filter(function (relationship) { + var optionsForRelationship = inverseType.metaForProperty(relationship.name).options; + + if (!optionsForRelationship.inverse) { + return true; + } + + return name === optionsForRelationship.inverse; + }); + + if (relationships) { + possibleRelationships.push.apply(possibleRelationships, relationships); + } + + //Recurse to support polymorphism + if (type.superclass) { + findPossibleInverses(type.superclass, inverseType, name, possibleRelationships); + } + + return possibleRelationships; + } + function intersection(array1, array2) { var result = []; array1.forEach(function (element) { if (array2.indexOf(element) >= 0) { result.push(element); @@ -4117,19 +4147,11 @@ return this._internalModel._data; } }); Model.reopenClass({ - /** - Alias DS.Model's `create` method to `_create`. This allows us to create DS.Model - instances from within the store, but if end users accidentally call `create()` - (instead of `createRecord()`), we can raise an error. - @method _create - @private - @static - */ - _create: Model.create, + isModel: true, /** Override the class' `create()` method to raise an error. This prevents end users from inadvertently calling `create()` instead of `createRecord()`. The store is still able to create instances @@ -4137,14 +4159,10 @@ `DS.Model` use [store.createRecord](DS.Store.html#method_createRecord). @method create @private @static */ - create: function () { - throw new _ember.default.Error("You should not call `create` on a model. Instead, call `store.createRecord` with the attributes you would like to set."); - }, - /** Represents the model's class name as a string. This can be used to look up the model through DS.Store's modelFor method. `modelName` is generated for you by Ember Data. It will be a lowercased, dasherized string. For example: @@ -4268,11 +4286,11 @@ inverseKind = inverse.kind; } else { //No inverse was specified manually, we need to use a heuristic to guess one if (propertyMeta.type === propertyMeta.parentType.modelName) {} - var possibleRelationships = findPossibleInverses(this, inverseType); + var possibleRelationships = findPossibleInverses(this, inverseType, name); if (possibleRelationships.length === 0) { return null; } @@ -4287,42 +4305,10 @@ inverseName = possibleRelationships[0].name; inverseKind = possibleRelationships[0].kind; } - function findPossibleInverses(type, inverseType, relationshipsSoFar) { - var possibleRelationships = relationshipsSoFar || []; - - var relationshipMap = get(inverseType, 'relationships'); - if (!relationshipMap) { - return possibleRelationships; - } - - var relationships = relationshipMap.get(type.modelName); - - relationships = relationships.filter(function (relationship) { - var optionsForRelationship = inverseType.metaForProperty(relationship.name).options; - - if (!optionsForRelationship.inverse) { - return true; - } - - return name === optionsForRelationship.inverse; - }); - - if (relationships) { - possibleRelationships.push.apply(possibleRelationships, relationships); - } - - //Recurse to support polymorphism - if (type.superclass) { - findPossibleInverses(type.superclass, inverseType, possibleRelationships); - } - - return possibleRelationships; - } - return { type: inverseType, name: inverseName, kind: inverseKind }; @@ -11114,20 +11100,21 @@ } else { mixin = owner._lookupFactory('mixin:' + normalizedModelName); } if (mixin) { + var ModelForMixin = _emberDataModel.default.extend(mixin); + ModelForMixin.reopenClass({ + __isMixin: true, + __mixin: mixin + }); + //Cache the class as a model - owner.register('model:' + normalizedModelName, _emberDataModel.default.extend(mixin)); + owner.register('model:' + normalizedModelName, ModelForMixin); } - var factory = this.modelFactoryFor(normalizedModelName); - if (factory) { - factory.__isMixin = true; - factory.__mixin = mixin; - } - return factory; + return this.modelFactoryFor(normalizedModelName); }, /** Returns the model class for the particular `modelName`. The class of a model might be useful if you want to get a list of all the @@ -11147,10 +11134,16 @@ /* @private */ _modelFor: function (modelName) { + var maybeFactory = this._modelFactoryFor(modelName); + // for factorFor factory/class split + return maybeFactory.class ? maybeFactory.class : maybeFactory; + }, + + _modelFactoryFor: function (modelName) { var factory = this._modelClassCache[modelName]; if (!factory) { factory = this.modelFactoryFor(modelName); @@ -11160,12 +11153,16 @@ } if (!factory) { throw new EmberError('No model was found for \'' + modelName + '\''); } - factory.modelName = factory.modelName || modelName; + // interopt with the future + var klass = (0, _emberDataPrivateUtils.getOwner)(this).factoryFor ? factory.class : factory; + // TODO: deprecate this + klass.modelName = klass.modelName || modelName; + this._modelClassCache[modelName] = factory; } return factory; }, @@ -11176,14 +11173,11 @@ modelFactoryFor: function (modelName) { var trueModelName = this._classKeyFor(modelName); var owner = (0, _emberDataPrivateUtils.getOwner)(this); if (owner.factoryFor) { - var MaybeModel = owner.factoryFor('model:' + trueModelName); - var MaybeModelFactory = MaybeModel && MaybeModel.class; - - return MaybeModelFactory; + return owner.factoryFor('model:' + trueModelName); } else { return owner._lookupFactory('model:' + trueModelName); } }, @@ -19377,10 +19371,10 @@ */ deserialize: null }); }); define("ember-data/version", ["exports"], function (exports) { - exports.default = "2.12.0-beta.3"; + exports.default = "2.12.0-beta.4"; }); define("ember-inflector", ["exports", "ember", "ember-inflector/lib/system", "ember-inflector/lib/ext/string"], function (exports, _ember, _emberInflectorLibSystem, _emberInflectorLibExtString) { _emberInflectorLibSystem.Inflector.defaultRules = _emberInflectorLibSystem.defaultRules; _ember.default.Inflector = _emberInflectorLibSystem.Inflector;