Last active
December 12, 2015 10:09
-
-
Save bradleypriest/4756959 to your computer and use it in GitHub Desktop.
Ember-Data (2013-02-10 08:36:19 -0800)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| // ========================================================================== | |
| // Project: Ember Data | |
| // Copyright: ©2011-2012 Tilde Inc. and contributors. | |
| // Portions ©2011 Living Social Inc. and contributors. | |
| // License: Licensed under MIT license (see license.js) | |
| // ========================================================================== | |
| // Last commit: eaffebc (2013-02-10 08:36:19 -0800) | |
| (function(){window.DS=Ember.Namespace.create({CURRENT_API_REVISION:11})})(),function(){var e=Ember.DeferredMixin,t=Ember.Evented,n=Ember.run,r=Ember.get,i=Ember.Mixin.create(t,e,{init:function(){this._super.apply(this,arguments),this.one("didLoad",function(){n(this,"resolve",this)}),r(this,"isLoaded")&&this.trigger("didLoad")}});DS.LoadPromise=i}(),function(){var e=Ember.get,t=Ember.set,n=DS.LoadPromise;DS.RecordArray=Ember.ArrayProxy.extend(Ember.Evented,n,{type:null,content:null,isLoaded:!1,isUpdating:!1,store:null,objectAtContent:function(t){var n=e(this,"content"),r=n.objectAt(t),i=e(this,"store");if(r)return i.recordForReference(r)},materializedObjectAt:function(t){var n=e(this,"content").objectAt(t);if(!n)return;if(e(this,"store").recordIsMaterialized(n))return this.objectAt(t)},update:function(){if(e(this,"isUpdating"))return;var t=e(this,"store"),n=e(this,"type");t.fetchAll(n,this)},addReference:function(t){e(this,"content").addObject(t)},removeReference:function(t){e(this,"content").removeObject(t)}})}(),function(){var e=Ember.get;DS.FilteredRecordArray=DS.RecordArray.extend({filterFunction:null,isLoaded:!0,replace:function(){var t=e(this,"type").toString();throw new Error("The result of a client-side filter (on "+t+") is immutable.")},updateFilter:Ember.observer(function(){var t=e(this,"store");t.updateRecordArrayFilter(this,e(this,"type"),e(this,"filterFunction"))},"filterFunction")})}(),function(){var e=Ember.get,t=Ember.set;DS.AdapterPopulatedRecordArray=DS.RecordArray.extend({query:null,replace:function(){var t=e(this,"type").toString();throw new Error("The result of a server query (on "+t+") is immutable.")},load:function(n){var r=e(this,"store"),i=e(this,"type");this.beginPropertyChanges(),t(this,"content",Ember.A(n)),t(this,"isLoaded",!0),this.endPropertyChanges();var s=this;Ember.run.once(function(){s.trigger("didLoad")})}})}(),function(){var e=Ember.get,t=Ember.set;DS.ManyArray=DS.RecordArray.extend({init:function(){this._super.apply(this,arguments),this._changesToSync=Ember.OrderedSet.create()},owner:null,isLoaded:!1,loadingRecordsCount:function(e){this.loadingRecordsCount=e},loadedRecord:function(){this.loadingRecordsCount--,this.loadingRecordsCount===0&&(t(this,"isLoaded",!0),this.trigger("didLoad"))},fetch:function(){var t=e(this,"content"),n=e(this,"store"),r=e(this,"type"),i=e(this,"owner");n.fetchUnloadedReferences(r,t,i)},replaceContent:function(t,n,r){r=r.map(function(t){return e(t,"_reference")},this),this._super(t,n,r)},arrangedContentDidChange:function(){this.fetch()},arrayContentWillChange:function(t,n,r){var i=e(this,"owner"),s=e(this,"name");if(!i._suspendedRelationships)for(var o=t;o<t+n;o++){var u=e(this,"content").objectAt(o),a=DS.RelationshipChange.createChange(i.get("_reference"),u,e(this,"store"),{parentType:i.constructor,changeType:"remove",kind:"hasMany",key:s});this._changesToSync.add(a)}return this._super.apply(this,arguments)},arrayContentDidChange:function(t,n,r){this._super.apply(this,arguments);var i=e(this,"owner"),s=e(this,"name"),o=e(this,"store");if(!i._suspendedRelationships){for(var u=t;u<t+r;u++){var a=e(this,"content").objectAt(u),f=DS.RelationshipChange.createChange(i.get("_reference"),a,o,{parentType:i.constructor,changeType:"add",kind:"hasMany",key:s});f.hasManyName=s,this._changesToSync.add(f)}this._changesToSync.forEach(function(e){e.sync()}),DS.OneToManyChange.ensureSameTransaction(this._changesToSync,o),this._changesToSync.clear()}},createRecord:function(t,n){var r=e(this,"owner"),i=e(r,"store"),s=e(this,"type"),o;return n=n||e(r,"transaction"),o=i.createRecord.call(i,s,t,n),this.pushObject(o),o}})}(),function(){}(),function(){var e=Ember.get,t=Ember.set,n=Ember.String.fmt,r=Ember.EnumerableUtils.removeObject,i=Ember.EnumerableUtils.forEach,s=function(){return[]};DS.Transaction=Ember.Object.extend({init:function(){t(this,"buckets",{clean:Ember.OrderedSet.create(),created:Ember.OrderedSet.create(),updated:Ember.OrderedSet.create(),deleted:Ember.OrderedSet.create(),inflight:Ember.OrderedSet.create()}),t(this,"relationships",Ember.OrderedSet.create())},createRecord:function(t,n){var r=e(this,"store");return r.createRecord(t,n,this)},isEqualOrDefault:function(t){if(this===t||t===e(this,"store.defaultTransaction"))return!0},isDefault:Ember.computed(function(){return this===e(this,"store.defaultTransaction")}),add:function(t){var n=e(t,"transaction"),r=e(this,"store.defaultTransaction");if(n===this)return;this.adoptRecord(t)},relationshipBecameDirty:function(t){e(this,"relationships").add(t)},relationshipBecameClean:function(t){e(this,"relationships").remove(t)},commit:function(){var r=e(this,"store"),i=e(r,"_adapter"),s=e(r,"defaultTransaction"),o=function(e){var t=e.copy();return t.forEach(function(e){e.send("willCommit")}),t},u=e(this,"relationships"),a={created:o(this.bucketForType("created")),updated:o(this.bucketForType("updated")),deleted:o(this.bucketForType("deleted")),relationships:u};this===s&&t(r,"defaultTransaction",r.transaction()),this.removeCleanRecords();if(!a.created.isEmpty()||!a.updated.isEmpty()||!a.deleted.isEmpty()||!u.isEmpty()){if(!i||!i.commit)throw n("Adapter is either null or does not implement `commit` method",this);i.commit(r,a)}u.forEach(function(e){e.destroy()})},rollback:function(){["created","updated","deleted","inflight"].forEach(function(e){var t=this.bucketForType(e);i(t,function(e){e.send("rollback")}),t.clear()},this),this.removeCleanRecords()},remove:function(t){var n=e(this,"store.defaultTransaction");n.adoptRecord(t)},removeCleanRecords:function(){var e=this.bucketForType("clean");e.forEach(function(e){this.remove(e)},this),e.clear()},bucketForType:function(t){var n=e(this,"buckets");return e(n,t)},adoptRecord:function(n){var r=e(n,"transaction");r&&r.removeFromBucket("clean",n),this.addToBucket("clean",n),t(n,"transaction",this)},addToBucket:function(e,t){this.bucketForType(e).add(t)},removeFromBucket:function(e,t){this.bucketForType(e).remove(t)},recordBecameDirty:function(e,t){this.removeFromBucket("clean",t),this.addToBucket(e,t)},recordBecameInFlight:function(e,t){this.removeFromBucket(e,t),this.addToBucket("inflight",t)},recordIsMoving:function(e,t){this.removeFromBucket(e,t),this.addToBucket("clean",t)},recordBecameClean:function(e,t){this.removeFromBucket(e,t),this.remove(t)}})}(),function(){var e=Ember.String.classify,t=Ember.get,n=function(e,t,n){return e},r=function(e,t){return e},i=function(e,t){return t};DS._Mappable=Ember.Mixin.create({createInstanceMapFor:function(e){var t=Ember.metaPath(this,["DS.Mappable"],!0);t.values=t.values||{};if(t.values[e])return t.values[e];var n=t.values[e]=new Ember.Map,r=this.constructor;while(r&&r!==DS.Store)this._copyMap(e,r,n),r=r.superclass;return t.values[e]=n,n},_copyMap:function(e,t,s){function a(o,u){var a=(t.transformMapKey||r)(o,u),f=(t.transformMapValue||i)(o,u),l=s.get(a),c=f;l&&(c=(this.constructor.resolveMapConflict||n)(l,c,e)),s.set(a,c)}var o=Ember.metaPath(t,["DS.Mappable"],!0),u=o[e];u&&u.forEach(a,this)}}),DS._Mappable.generateMapFunctionFor=function(e,t){return function(n,r){var i=Ember.metaPath(this,["DS.Mappable"],!0),s=i[e]||Ember.MapWithDefault.create({defaultValue:function(){return{}}});t.call(this,n,r,s),i[e]=s}}}(),function(){var e=Ember.get,t=Ember.set,n=Ember.String.fmt,r=Ember.run.once,i=Ember.EnumerableUtils.forEach,s="unloaded",o="loading",u={materialized:!0},a={created:!0},f=function(e){return e==null?null:e+""},l=Ember.EnumerableUtils.map;DS.Store=Ember.Object.extend(DS._Mappable,{init:function(){var n=e(this,"revision");if(n!==DS.CURRENT_API_REVISION&&!Ember.ENV.TESTING)throw new Error("Error: The Ember Data library has had breaking API changes since the last time you updated the library. Please review the list of breaking changes at https://github.com/emberjs/data/blob/master/BREAKING_CHANGES.md, then update your store's `revision` property to "+DS.CURRENT_API_REVISION);(!e(DS,"defaultStore")||e(this,"isDefaultStore"))&&t(DS,"defaultStore",this),this.typeMaps={},this.recordCache=[],this.clientIdToId={},this.clientIdToType={},this.clientIdToData={},this.clientIdToPrematerializedData={},this.recordArraysByClientId={},this.relationshipChanges={},this.recordReferences={},this.loadingRecordArrays={},t(this,"defaultTransaction",this.transaction())},transaction:function(){return DS.Transaction.create({store:this})},ensureSameTransaction:function(t){var n=Ember.A();i(t,function(t){t&&n.pushObject(e(t,"transaction"))});var r=n.reduce(function(t,n){return!e(n,"isDefault")&&t===null?n:t},null);return r?i(t,function(e){e&&r.add(e)}):r=n.objectAt(0),r},materializeData:function(t){var n=e(t,"clientId"),r=this.clientIdToData,i=this.adapterForType(t.constructor),s=r[n];r[n]=u;var o=this.clientIdToPrematerializedData[n];t.setupData(),s!==a&&i.materialize(t,s,o)},recordIsMaterialized:function(e){return!!this.recordCache[e.clientId]},adapter:"DS.RESTAdapter",serialize:function(e,t){return this.adapterForType(e.constructor).serialize(e,t)},_adapter:Ember.computed(function(){var t=e(this,"adapter");return typeof t=="string"&&(t=e(this,t,!1)||e(Ember.lookup,t)),DS.Adapter.detect(t)&&(t=t.create()),t}).property("adapter"),clientIdCounter:1,createRecord:function(n,r,i){r=r||{};var s=n._create({store:this});i=i||e(this,"defaultTransaction"),i.adoptRecord(s);var o=r.id,u;Ember.isNone(o)&&(u=this.adapterForType(n),u&&u.generateIdForRecord&&(o=f(u.generateIdForRecord(this,s)),r.id=o)),o=f(o);var l=this.pushData(a,o,n);return t(s,"clientId",l),s.loadedData(),s.setupData(),this.recordCache[l]=s,s.setProperties(r),Ember.run(s,"resolve",s),s},deleteRecord:function(e){e.deleteRecord()},unloadRecord:function(e){e.unloadRecord()},find:function(e,t){return t===undefined?this.findAll(e):Ember.typeOf(t)==="object"?this.findQuery(e,t):this.findById(e,f(t))},findById:function(e,t){var n=this.typeMapFor(e).idToCid[t];if(n)return this.findByClientId(e,n);n=this.pushData(o,t,e);var r=this.materializeRecord(e,n,t),i=this.adapterForType(e);if(!i||!i.find)throw"Adapter is either null or does not implement `find` method";return i.find(this,e,t),r},reloadRecord:function(t){var n=t.constructor,r=this.adapterForType(n),i=e(t,"id");r.find(this,n,i)},findByClientId:function(e,t){var n,r,i;return r=this.recordCache[t],r||(i=this.clientIdToId[t],r=this.materializeRecord(e,t,i),n=this.clientIdToData,typeof n[t]=="object"&&r.loadedData()),r},neededReferences:function(e,t){var n=[],r=this.clientIdToData,i;for(var u=0,a=t.length;u<a;u++)i=t[u],r[i.clientId]===s&&(n.push(i),r[i.clientId]=o);return n},fetchUnloadedReferences:function(e,t,n){var r=this.neededReferences(e,t);this.fetchMany(e,r,n)},fetchMany:function(e,t,n){if(!t.length)return;var r=l(t,function(e){return e.id}),i=this.adapterForType(e);if(!i||!i.findMany)throw"Adapter is either null or does not implement `findMany` method";i.findMany(this,e,r,n)},referenceForId:function(e,t){var n=this.clientIdForId(e,t);return this.referenceForClientId(n)},referenceForClientId:function(e){var t=this.recordReferences;if(t[e])return t[e];var n=this.clientIdToType[e];return t[e]={id:this.idForClientId(e),clientId:e,type:n}},recordForReference:function(e){return this.findByClientId(e.type,e.clientId)},findMany:function(e,t,r,i){if(!Ember.isArray(t)){var s=this.adapterForType(e);if(!s||!s.findHasMany)throw n("Adapter is either null or does not implement `findHasMany` method",this);return s.findHasMany(this,r,i,t),this.createManyArray(e,Ember.A())}var o=l(t,function(t){return typeof t!="object"&&t!==null?this.referenceForId(e,t):t},this),u=this.neededReferences(e,o),a=this.createManyArray(e,Ember.A(o)),f=this.loadingRecordArrays,c,h,p,d;a.loadingRecordsCount(u.length);if(u.length){for(p=0,d=u.length;p<d;p++)c=u[p],h=c.clientId,f[h]?f[h].push(a):this.loadingRecordArrays[h]=[a];this.fetchMany(e,u,r)}else a.set("isLoaded",!0),Ember.run.once(function(){a.trigger("didLoad")});return a},findQuery:function(e,t){var n=DS.AdapterPopulatedRecordArray.create({type:e,query:t,content:Ember.A([]),store:this}),r=this.adapterForType(e);if(!r||!r.findQuery)throw"Adapter is either null or does not implement `findQuery` method";return r.findQuery(this,e,t,n),n},findAll:function(e){var t=this.all(e);return this.fetchAll(e,t),t},fetchAll:function(e,n){var r=this.typeMapFor(e).sinceToken,i=this.adapterForType(e);t(n,"isUpdating",!0);if(!i||!i.findAll)throw"Adapter is either null or does not implement `findAll` method";i.findAll(this,e,r)},sinceForType:function(e,t){this.typeMapFor(e).sinceToken=t},didUpdateAll:function(e){var n=this.typeMapFor(e).findAllCache;t(n,"isUpdating",!1)},all:function(e){var t=this.typeMapFor(e),n=t.findAllCache;if(n)return n;var r=DS.RecordArray.create({type:e,content:Ember.A([]),store:this,isLoaded:!0});return this.registerRecordArray(r,e),t.findAllCache=r,r},filter:function(e,t,n){arguments.length===3?this.findQuery(e,t):arguments.length===2&&(n=t);var r=DS.FilteredRecordArray.create({type:e,content:Ember.A([]),store:this,filterFunction:n});return this.registerRecordArray(r,e,n),r},recordIsLoaded:function(e,t){return!Ember.isNone(this.typeMapFor(e).idToCid[t])},dataWasUpdated:function(t,n,r){if(e(r,"isDeleted"))return;var i=this.clientIdToData,s=n.clientId,o=i[s];typeof o=="object"&&this.updateRecordArrays(t,s)},commit:function(){e(this,"defaultTransaction").commit()},didSaveRecord:function(e,t){e.adapterDidCommit(),t?(this.updateId(e,t),this.updateRecordData(e,t)):this.didUpdateAttributes(e)},didSaveRecords:function(e,t){var n=0;e.forEach(function(e){this.didSaveRecord(e,t&&t[n++])},this)},recordWasInvalid:function(e,t){e.adapterDidInvalidate(t)},recordWasError:function(e){e.adapterDidError()},didUpdateAttribute:function(e,t,n){e.adapterDidUpdateAttribute(t,n)},didUpdateAttributes:function(e){e.eachAttribute(function(t){this.didUpdateAttribute(e,t)},this)},didUpdateRelationship:function(t,n){var r=this.relationshipChangeFor(e(t,"clientId"),n);r&&r.adapterDidUpdate()},didUpdateRelationships:function(t){var n=this.relationshipChangesFor(e(t,"_reference"));for(var r in n){if(!n.hasOwnProperty(r))continue;n[r].adapterDidUpdate()}},didReceiveId:function(t,n){var r=this.typeMapFor(t.constructor),i=e(t,"clientId"),s=e(t,"id");r.idToCid[n]=i,this.clientIdToId[i]=n},updateRecordData:function(t,n){var r=e(t,"clientId"),i=this.clientIdToData;i[r]=n,t.didChangeData()},updateId:function(t,n){var r=this.typeMapFor(t.constructor),i=e(t,"clientId"),s=e(t,"id"),o=t.constructor,u=this.preprocessData(o,n);r.idToCid[u]=i,this.clientIdToId[i]=u,this.referenceForClientId(i).id=u},preprocessData:function(e,t){return this.adapterForType(e).extractId(e,t)},registerRecordArray:function(e,t,n){var r=this.typeMapFor(t).recordArrays;r.push(e),this.updateRecordArrayFilter(e,t,n)},createManyArray:function(e,t){var n=DS.ManyArray.create({type:e,content:t,store:this});return t.forEach(function(e){var t=this.recordArraysForClientId(e);t.add(n)},this),n},updateRecordArrayFilter:function(t,n,r){var i=this.typeMapFor(n),s=this.clientIdToData,o=i.clientIds,u,a,f,l;for(var c=0,h=o.length;c<h;c++)u=o[c],f=!1,a=s[u],typeof a=="object"&&((l=this.recordCache[u])?e(l,"isDeleted")||(f=!0):f=!0,f&&this.updateRecordArray(t,r,n,u))},updateRecordArraysLater:function(e,t){Ember.run.once(this,function(){this.updateRecordArrays(e,t)})},updateRecordArrays:function(t,n){var r=this.typeMapFor(t).recordArrays,i;r.forEach(function(r){i=e(r,"filterFunction"),this.updateRecordArray(r,i,t,n)},this);var s=this.loadingRecordArrays[n];if(s){for(var o=0,u=s.length;o<u;o++)s[o].loadedRecord();this.loadingRecordArrays[n]=null}},updateRecordArray:function(t,n,r,i){var s,o;n?(o=this.findByClientId(r,i),s=n(o)):s=!0;var u=e(t,"content"),a=u.indexOf(i)!==-1,f=this.recordArraysForClientId(i),l=this.referenceForClientId(i);s?(f.add(t),t.addReference(l)):s||(f.remove(t),t.removeReference(l))},removeFromRecordArrays:function(t){var n=e(t,"_reference"),r=this.recordArraysForClientId(n.clientId);r.forEach(function(e){e.removeReference(n)})},recordArraysForClientId:function(t){var n=e(this,"recordArraysByClientId"),r=n[t];return r||(r=n[t]=Ember.OrderedSet.create()),r},typeMapFor:function(t){var n=e(this,"typeMaps"),r=Ember.guidFor(t),i=n[r];return i?i:n[r]={idToCid:{},clientIds:[],recordArrays:[]}},clientIdForId:function(e,t){t=f(t);var n=this.typeMapFor(e).idToCid[t];return n!==undefined?n:this.pushData(s,t,e)},clientIdsForIds:function(e,t){var n=this.typeMapFor(e),r=n.idToCid;return l(t,function(t){t=f(t);var n=r[t];return n?n:this.pushData(s,t,e)},this)},typeForClientId:function(e){return this.clientIdToType[e]},idForClientId:function(e){return this.clientIdToId[e]},load:function(e,t,n){var i;if(typeof t=="number"||typeof t=="string")i=t,t=n,n=null;if(n&&n.id)i=n.id;else if(i===undefined){var s=this.adapterForType(e);i=this.preprocessData(e,t)}i=f(i);var o=this.typeMapFor(e),u=this.clientIdToData,a=o.idToCid[i],l=this.clientIdToPrematerializedData;if(a!==undefined){u[a]=t,l[a]=n;var c=this.recordCache[a];c&&r(c,"loadedData")}else a=this.pushData(t,i,e),l[a]=n;return this.updateRecordArraysLater(e,a),this.referenceForClientId(a)},prematerialize:function(e,t){this.clientIdToPrematerializedData[e.clientId]=t},loadMany:function(e,t,n){return n===undefined&&(n=t,t=l(n,function(t){return this.preprocessData(e,t)},this)),l(t,function(t,r){return this.load(e,t,n[r])},this)},loadHasMany:function(e,n,r){e.materializeHasMany(n,r),e.hasManyDidChange(n);var i=e.cacheFor(n);i&&t(i,"isLoaded",!0)},pushData:function(e,t,n){var r=this.typeMapFor(n),i=r.idToCid,s=this.clientIdToId,o=this.clientIdToType,u=r.clientIds,a=this.clientIdToData,f=++this.clientIdCounter;return a[f]=e,o[f]=n,t&&(i[t]=f,s[f]=t),u.push(f),f},materializeRecord:function(n,r,i){var s;return this.recordCache[r]=s=n._create({store:this,clientId:r}),t(s,"id",i),e(this,"defaultTransaction").adoptRecord(s),s.loadingData(),s},dematerializeRecord:function(t){var n=e(t,"id"),r=e(t,"clientId"),i=this.typeForClientId(r),s=this.typeMapFor(i);t.updateRecordArrays(),delete this.recordCache[r],delete this.clientIdToId[r],delete this.clientIdToType[r],delete this.clientIdToData[r],delete this.recordArraysByClientId[r],n&&delete s.idToCid[n]},willDestroy:function(){e(DS,"defaultStore")===this&&t(DS,"defaultStore",null)},addRelationshipChangeFor:function(e,t,n,r,i){var s=e.clientId,o=n?n.clientId:n,u=t+r,a=this.relationshipChanges;s in a||(a[s]={}),o in a[s]||(a[s][o]={}),u in a[s][o]||(a[s][o][u]={}),a[s][o][u][i.changeType]=i},removeRelationshipChangeFor:function(e,t,n,r,i){var s=e.clientId,o=n?n.clientId:n,u=this.relationshipChanges,a=t+r;if(!(s in u&&o in u[s]&&a in u[s][o]))return;delete u[s][o][a][i]},relationshipChangeFor:function(e,t,n,r,i){var s=this.relationshipChanges,o=t+r;if(e in s&&n in s[e])return i?s[e][n][o][i]:s[e][n][o].add||s[e][n][o].remove;return},relationshipChangePairsFor:function(e){var t=[];if(!e)return t;var n=this.relationshipChanges[e.clientId];for(var r in n)if(n.hasOwnProperty(r))for(var i in n[r])n[r].hasOwnProperty(i)&&t.push(n[r][i]);return t},relationshipChangesFor:function(e){var t=[];if(!e)return t;var n=this.relationshipChangePairsFor(e);return i(n,function(e){var n=e.add,r=e.remove;n&&t.push(n),r&&t.push(r)}),t},adapterForType:function(e){this._adaptersMap=this.createInstanceMapFor("adapters");var t=this._adaptersMap.get(e);return t?t:this.get("_adapter")},recordAttributeDidChange:function(e,t,n,r){var i=this.recordForReference(e),s=new Ember.OrderedSet,o=this.adapterForType(i.constructor);o.dirtyRecordsForAttributeChange&&o.dirtyRecordsForAttributeChange(s,i,t,n,r),s.forEach(function(e){e.adapterDidDirty()})},recordBelongsToDidChange:function(e,t,n){var r=this.adapterForType(t.constructor);r.dirtyRecordsForBelongsToChange&&r.dirtyRecordsForBelongsToChange(e,t,n)},recordHasManyDidChange:function(e,t,n){var r=this.adapterForType(t.constructor);r.dirtyRecordsForHasManyChange&&r.dirtyRecordsForHasManyChange(e,t,n)}}),DS.Store.reopenClass({registerAdapter:DS._Mappable.generateMapFunctionFor("adapters",function(e,t,n){n.set(e,t)}),transformMapKey:function(t){if(typeof t=="string"){var n;return n=e(Ember.lookup,t),n}return t},transformMapValue:function(e,t){return Ember.Object.detect(t)?t.create():t}})}(),function(){var e=Ember.get,t=Ember.set,n=Ember.guidFor,r=Ember.run.once,i=Ember.ArrayPolyfills.map,s=Ember.computed(function(t){var n=e(this,"parentState");if(n)return e(n,t)}).property(),o=function(e){for(var t in e)if(e.hasOwnProperty(t))return!1;return!0},u=function(e){for(var t in e)if(e.hasOwnProperty(t)&&e[t])return!0;return!1},a=function(t){var n=e(t,"record");n.materializeData()},f=function(t,n){n.oldValue=e(e(t,"record"),n.name);var r=DS.AttributeChange.createChange(n);e(t,"record")._changesToSync[n.attributeName]=r},l=function(t,n){var r=e(t,"record")._changesToSync[n.attributeName];r.value=e(e(t,"record"),n.name),r.sync()},c=function(e){var t=e.get("record");t.updateRecordArraysLater()};DS.State=Ember.State.extend({isLoaded:s,isReloading:s,isDirty:s,isSaving:s,isDeleted:s,isError:s,isNew:s,isValid:s,dirtyType:s});var h=DS.State.extend({initialState:"uncommitted",isDirty:!0,uncommitted:DS.State.extend({enter:function(t){var n=e(this,"dirtyType"),r=e(t,"record");r.withTransaction(function(e){e.recordBecameDirty(n,r)})},willSetProperty:f,didSetProperty:l,becomeDirty:Ember.K,willCommit:function(e){e.transitionTo("inFlight")},becameClean:function(t){var n=e(t,"record"),r=e(this,"dirtyType");n.withTransaction(function(e){e.recordBecameClean(r,n)}),t.transitionTo("loaded.materializing")},becameInvalid:function(t){var n=e(this,"dirtyType"),r=e(t,"record");r.withTransaction(function(e){e.recordBecameInFlight(n,r)}),t.transitionTo("invalid")},rollback:function(t){e(t,"record").rollback()}}),inFlight:DS.State.extend({isSaving:!0,enter:function(t){var n=e(this,"dirtyType"),r=e(t,"record");r.becameInFlight(),r.withTransaction(function(e){e.recordBecameInFlight(n,r)})},didCommit:function(t){var n=e(this,"dirtyType"),r=e(t,"record");r.withTransaction(function(e){e.recordBecameClean("inflight",r)}),t.transitionTo("saved"),t.send("invokeLifecycleCallbacks",n)},becameInvalid:function(n,r){var i=e(n,"record");t(i,"errors",r),n.transitionTo("invalid"),n.send("invokeLifecycleCallbacks")},becameError:function(e){e.transitionTo("error"),e.send("invokeLifecycleCallbacks")}}),invalid:DS.State.extend({isValid:!1,exit:function(t){var n=e(t,"record");n.withTransaction(function(e){e.recordBecameClean("inflight",n)})},deleteRecord:function(t){t.transitionTo("deleted"),e(t,"record").clearRelationships()},willSetProperty:f,didSetProperty:function(n,r){var i=e(n,"record"),s=e(i,"errors"),o=r.name;t(s,o,null),u(s)||n.send("becameValid"),l(n,r)},becomeDirty:Ember.K,rollback:function(e){e.send("becameValid"),e.send("rollback")},becameValid:function(e){e.transitionTo("uncommitted")},invokeLifecycleCallbacks:function(t){var n=e(t,"record");n.trigger("becameInvalid",n)}})}),p=h.create({dirtyType:"created",isNew:!0}),d=h.create({dirtyType:"updated"});p.states.uncommitted.reopen({deleteRecord:function(t){var n=e(t,"record");n.withTransaction(function(e){e.recordIsMoving("created",n)}),n.clearRelationships(),t.transitionTo("deleted.saved")}}),p.states.uncommitted.reopen({rollback:function(e){this._super(e),e.transitionTo("deleted.saved")}}),d.states.uncommitted.reopen({deleteRecord:function(t){var n=e(t,"record");n.withTransaction(function(e){e.recordIsMoving("updated",n)}),t.transitionTo("deleted"),e(t,"record").clearRelationships()}});var v={rootState:Ember.State.create({isLoaded:!1,isReloading:!1,isDirty:!1,isSaving:!1,isDeleted:!1,isError:!1,isNew:!1,isValid:!0,empty:DS.State.create({loadingData:function(e){e.transitionTo("loading")},loadedData:function(e){e.transitionTo("loaded.created")}}),loading:DS.State.create({loadedData:a,materializingData:function(e){e.transitionTo("loaded.materializing.firstTime")}}),loaded:DS.State.create({initialState:"saved",isLoaded:!0,materializing:DS.State.create({isLoaded:!1,willSetProperty:Ember.K,didSetProperty:Ember.K,didChangeData:a,finishedMaterializing:function(e){e.transitionTo("loaded.saved")},firstTime:DS.State.create({exit:function(t){var n=e(t,"record");Ember.run.once(function(){n.trigger("didLoad")})}})}),reloading:DS.State.create({isReloading:!0,enter:function(t){var n=e(t,"record"),r=e(n,"store");r.reloadRecord(n)},exit:function(t){var n=e(t,"record");r(n,"trigger","didReload")},loadedData:a,materializingData:function(e){e.transitionTo("loaded.materializing")}}),saved:DS.State.create({willSetProperty:f,didSetProperty:l,didChangeData:a,loadedData:a,reloadRecord:function(e){e.transitionTo("loaded.reloading")},materializingData:function(e){e.transitionTo("loaded.materializing")},becomeDirty:function(e){e.transitionTo("updated")},deleteRecord:function(t){t.transitionTo("deleted"),e(t,"record").clearRelationships()},unloadRecord:function(t){t.transitionTo("deleted.saved"),e(t,"record").clearRelationships()},invokeLifecycleCallbacks:function(t,n){var r=e(t,"record");n==="created"?r.trigger("didCreate",r):r.trigger("didUpdate",r)}}),created:p,updated:d}),deleted:DS.State.create({initialState:"uncommitted",dirtyType:"deleted",isDeleted:!0,isLoaded:!0,isDirty:!0,setup:function(t){var n=e(t,"record"),r=e(n,"store");r.removeFromRecordArrays(n)},uncommitted:DS.State.create({enter:function(t){var n=e(t,"record");n.withTransaction(function(e){e.recordBecameDirty("deleted",n)})},willCommit:function(e){e.transitionTo("inFlight")},rollback:function(t){e(t,"record").rollback()},becomeDirty:Ember.K,becameClean:function(t){var n=e(t,"record");n.withTransaction(function(e){e.recordBecameClean("deleted",n)}),t.transitionTo("loaded.materializing")}}),inFlight:DS.State.create({isSaving:!0,enter:function(t){var n=e(t,"record");n.becameInFlight(),n.withTransaction(function(e){e.recordBecameInFlight("deleted",n)})},didCommit:function(t){var n=e(t,"record");n.withTransaction(function(e){e.recordBecameClean("inflight",n)}),t.transitionTo("saved"),t.send("invokeLifecycleCallbacks")}}),saved:DS.State.create({isDirty:!1,setup:function(t){var n=e(t,"record"),r=e(n,"store");r.dematerializeRecord(n)},invokeLifecycleCallbacks:function(t){var n=e(t,"record");n.trigger("didDelete",n)}})}),error:DS.State.create({isError:!0,invokeLifecycleCallbacks:function(t){var n=e(t,"record");n.trigger("becameError",n)}})})};DS.StateManager=Ember.StateManager.extend({record:null,initialState:"rootState",states:v,unhandledEvent:function(t,n){var r=t.get("record"),s=[].slice.call(arguments,2),o;throw o="Attempted to handle event `"+n+"` ",o+="on "+r.toString()+" while in state ",o+=e(t,"currentState.path")+". Called with ",o+=i.call(s,function(e){return Ember.inspect(e)}).join(", "),new Ember.Error(o)}})}(),function(){var e=DS.LoadPromise,t=Ember.get,n=Ember.set,r=Ember.isNone,i=Ember.EnumerableUtils.map,s=Ember.computed(function(e){return t(t(this,"stateManager.currentState"),e)}).property("stateManager.currentState");DS.Model=Ember.Object.extend(Ember.Evented,e,{isLoaded:s,isReloading:s,isDirty:s,isSaving:s,isDeleted:s,isError:s,isNew:s,isValid:s,clientId:null,id:null,transaction:null,stateManager:null,errors:null,serialize:function(e){var n=t(this,"store");return n.serialize(this,e)},didLoad:Ember.K,didReload:Ember.K,didUpdate:Ember.K,didCreate:Ember.K,didDelete:Ember.K,becameInvalid:Ember.K,becameError:Ember.K,data:Ember.computed(function(){return this._data||this.materializeData(),this._data}).property(),materializeData:function(){this.send("materializingData"),t(this,"store").materializeData(this),this.suspendRelationshipObservers(function(){this.notifyPropertyChange("data")})},_data:null,init:function(){this._super();var e=DS.StateManager.create({record:this});n(this,"stateManager",e),this._setup(),e.goToState("empty")},_setup:function(){this._relationshipChanges={},this._changesToSync={}},send:function(e,n){return t(this,"stateManager").send(e,n)},withTransaction:function(e){var n=t(this,"transaction");n&&e(n)},loadingData:function(){this.send("loadingData")},loadedData:function(){this.send("loadedData")},didChangeData:function(){this.send("didChangeData")},setProperty:function(e,t,n){this.send("setProperty",{key:e,value:t,oldValue:n})},reload:function(){this.send("reloadRecord")},deleteRecord:function(){this.send("deleteRecord")},unloadRecord:function(){this.send("unloadRecord")},clearRelationships:function(){this.eachRelationship(function(e,r){r.kind==="belongsTo"?n(this,e,null):r.kind==="hasMany"&&t(this,e).clear()},this)},updateRecordArrays:function(){var e=t(this,"store");e&&e.dataWasUpdated(this.constructor,t(this,"_reference"),this)},adapterDidCommit:function(){var e=t(this,"data").attributes;t(this.constructor,"attributes").forEach(function(n,r){e[n]=t(this,n)},this),this.send("didCommit"),this.updateRecordArraysLater()},adapterDidDirty:function(){this.send("becomeDirty"),this.updateRecordArraysLater()},dataDidChange:Ember.observer(function(){var e=t(this.constructor,"relationshipsByName");this.updateRecordArraysLater(),e.forEach(function(e,t){t.kind==="hasMany"&&this.hasManyDidChange(t.key)},this),this.send("finishedMaterializing")},"data"),hasManyDidChange:function(e){var r=this.cacheFor(e);if(r){var s=t(this.constructor,"relationshipsByName").get(e).type,o=t(this,"store"),u=this._data.hasMany[e]||[],a=i(u,function(e){return typeof e=="object"?e:o.referenceForId(s,e)});n(r,"content",Ember.A(a))}},updateRecordArraysLater:function(){Ember.run.once(this,this.updateRecordArrays)},setupData:function(e){this._data={attributes:{},belongsTo:{},hasMany:{},id:null}},materializeId:function(e){n(this,"id",e)},materializeAttributes:function(e){this._data.attributes=e},materializeAttribute:function(e,t){this._data.attributes[e]=t},materializeHasMany:function(e,t){this._data.hasMany[e]=t},materializeBelongsTo:function(e,t){this._data.belongsTo[e]=t},rollback:function(){this._setup(),this.send("becameClean"),this.suspendRelationshipObservers(function(){this.notifyPropertyChange("data")})},toStringExtension:function(){return t(this,"id")},suspendRelationshipObservers:function(e,n){var r=t(this.constructor,"relationshipNames").belongsTo,i=this;try{this._suspendedRelationships=!0,Ember._suspendObservers(i,r,null,"belongsToDidChange",function(){Ember._suspendBeforeObservers(i,r,null,"belongsToWillChange",function(){e.call(n||i)})})}finally{this._suspendedRelationships=!1}},becameInFlight:function(){},adapterDidUpdateAttribute:function(e,n){n!==undefined?(t(this,"data.attributes")[e]=n,this.notifyPropertyChange(e)):(n=t(this,e),t(this,"data.attributes")[e]=n),this.updateRecordArraysLater()},_reference:Ember.computed(function(){return t(this,"store").referenceForClientId(t(this,"clientId"))}),adapterDidInvalidate:function(e){this.send("becameInvalid",e)},adapterDidError:function(){this.send("becameError")},trigger:function(e){Ember.tryInvoke(this,e,[].slice.call(arguments,1)),this._super.apply(this,arguments)}});var o=function(e){return function(){var n=t(DS,"defaultStore"),r=[].slice.call(arguments);return r.unshift(this),n[e].apply(n,r)}};DS.Model.reopenClass({isLoaded:o("recordIsLoaded"),find:o("find"),all:o("all"),filter:o("filter"),_create:DS.Model.create,create:function(){throw new Ember.Error("You should not call `create` on a model. Instead, call `createRecord` with the attributes you would like to set.")},createRecord:o("createRecord")})}(),function(){function n(t,n,r){var i=e(t,"data").attributes,s=i[r];return s===undefined&&(s=n.defaultValue),s}var e=Ember.get;DS.Model.reopenClass({attributes:Ember.computed(function(){var e=Ember.Map.create();return this.eachComputedProperty(function(t,n){n.isAttribute&&(n.name=t,e.set(t,n))}),e})});var t=DS.AttributeChange=function(e){this.reference=e.reference,this.store=e.store,this.name=e.name,this.oldValue=e.oldValue};t.createChange=function(e){return new t(e)},t.prototype={sync:function(){this.store.recordAttributeDidChange(this.reference,this.name,this.value,this.oldValue),this.destroy()},destroy:function(){delete this.store.recordForReference(this.reference)._changesToSync[this.name]}},DS.Model.reopen({eachAttribute:function(t,n){e(this.constructor,"attributes").forEach(function(e,r){t.call(n,e,r)},n)},attributeWillChange:Ember.beforeObserver(function(t,n){var r=e(t,"_reference"),i=e(t,"store");t.send("willSetProperty",{reference:r,store:i,name:n})}),attributeDidChange:Ember.observer(function(e,t){e.send("didSetProperty",{name:t})})}),DS.attr=function(e,t){t=t||{};var r={type:e,isAttribute:!0,options:t};return Ember.computed(function(e,r,i){var s;return arguments.length>1||(r=n(this,t,e)),r}).property("data").meta(r)}}(),function(){}(),function(){var e=Ember.get,t=Ember.set,n=Ember.isNone;DS.belongsTo=function(t,n){n=n||{};var r={type:t,isRelationship:!0,options:n,kind:"belongsTo"};return Ember.computed(function(n,r){if(arguments.length===2)return r=== | |
| undefined?null:r;var i=e(this,"data").belongsTo,s=e(this,"store"),o;return typeof t=="string"&&(t=e(this,t,!1)||e(Ember.lookup,t)),o=i[n],o?typeof o=="object"?s.recordForReference(o):s.find(t,o):null}).property("data").meta(r)},DS.Model.reopen({belongsToWillChange:Ember.beforeObserver(function(t,n){if(e(t,"isLoaded")){var r=e(t,n),i=e(t,"_reference"),s=e(t,"store");if(r){var o=DS.RelationshipChange.createChange(i,e(r,"_reference"),s,{key:n,kind:"belongsTo",changeType:"remove"});o.sync(),this._changesToSync[n]=o}}}),belongsToDidChange:Ember.immediateObserver(function(t,n){if(e(t,"isLoaded")){var r=e(t,n);if(r){var i=e(t,"_reference"),s=e(t,"store"),o=DS.RelationshipChange.createChange(i,e(r,"_reference"),s,{key:n,kind:"belongsTo",changeType:"add"});o.sync(),this._changesToSync[n]&&DS.OneToManyChange.ensureSameTransaction([o,this._changesToSync[n]],s)}}delete this._changesToSync[n]})})}(),function(){var e=Ember.get,t=Ember.set,n=function(n,r){r=r||{};var i={type:n,isRelationship:!0,options:r,kind:"hasMany"};return Ember.computed(function(r,s){var o=e(this,"data").hasMany,u=e(this,"store"),a,f;return typeof n=="string"&&(n=e(this,n,!1)||e(Ember.lookup,n)),a=o[r],f=u.findMany(n,a||[],this,i),t(f,"owner",this),t(f,"name",r),f}).property().meta(i)};DS.hasMany=function(e,t){return n(e,t)}}(),function(){var e=Ember.get,t=Ember.set;DS.Model.reopen({didDefineProperty:function(e,t,n){if(n instanceof Ember.Descriptor){var r=n.meta();r.isRelationship&&r.kind==="belongsTo"&&(Ember.addObserver(e,t,null,"belongsToDidChange"),Ember.addBeforeObserver(e,t,null,"belongsToWillChange")),r.isAttribute&&(Ember.addObserver(e,t,null,"attributeDidChange"),Ember.addBeforeObserver(e,t,null,"attributeWillChange")),r.parentType=e.constructor}}}),DS.Model.reopenClass({typeForRelationship:function(t){var n=e(this,"relationshipsByName").get(t);return n&&n.type},relationships:Ember.computed(function(){var e=new Ember.MapWithDefault({defaultValue:function(){return[]}});return this.eachComputedProperty(function(t,n){if(n.isRelationship){typeof n.type=="string"&&(n.type=Ember.get(Ember.lookup,n.type));var r=e.get(n.type);r.push({name:t,kind:n.kind})}}),e}),relationshipNames:Ember.computed(function(){var e={hasMany:[],belongsTo:[]};return this.eachComputedProperty(function(t,n){n.isRelationship&&e[n.kind].push(t)}),e}),relationshipsByName:Ember.computed(function(){var t=Ember.Map.create(),n;return this.eachComputedProperty(function(r,i){i.isRelationship&&(i.key=r,n=i.type,typeof n=="string"&&(n=e(this,n,!1)||e(Ember.lookup,n),i.type=n),t.set(r,i))}),t}),fields:Ember.computed(function(){var e=Ember.Map.create(),t;return this.eachComputedProperty(function(t,n){n.isRelationship?e.set(t,n.kind):n.isAttribute&&e.set(t,"attribute")}),e}),eachRelationship:function(t,n){e(this,"relationshipsByName").forEach(function(e,r){t.call(n,e,r)})}}),DS.Model.reopen({eachRelationship:function(e,t){this.constructor.eachRelationship(e,t)}}),DS._inverseRelationshipFor=function(t,n){var r=e(t,"relationships"),i=r.get(n),s,o,u;if(!i)return;if(i.length>1)return;return i[0]},DS._inverseTypeFor=function(t,n){var r=e(t,"relationshipsByName"),i=r.get(n);if(i)return i.type}}(),function(){function r(e,t,n){var r=e.metaForProperty(n).options,i;return(i=r.inverse)?i:DS._inverseRelationshipFor(t,e).name}function i(e,t,n){var r=t.metaForProperty(n).options,i;return(i=r.inverse)?i:DS._inverseRelationshipFor(e,t).name}var e=Ember.get,t=Ember.set,n=Ember.EnumerableUtils.forEach;DS.RelationshipChange=function(e){this.parentReference=e.parentReference,this.childReference=e.childReference,this.firstRecordReference=e.firstRecordReference,this.firstRecordKind=e.firstRecordKind,this.firstRecordName=e.firstRecordName,this.secondRecordReference=e.secondRecordReference,this.secondRecordKind=e.secondRecordKind,this.secondRecordName=e.secondRecordName,this.store=e.store,this.committed={},this.changeType=e.changeType},DS.RelationshipChangeAdd=function(e){DS.RelationshipChange.call(this,e)},DS.RelationshipChangeRemove=function(e){DS.RelationshipChange.call(this,e)},DS.RelationshipChange.create=function(e){return new DS.RelationshipChange(e)},DS.RelationshipChangeAdd.create=function(e){return new DS.RelationshipChangeAdd(e)},DS.RelationshipChangeRemove.create=function(e){return new DS.RelationshipChangeRemove(e)},DS.OneToManyChange={},DS.OneToNoneChange={},DS.ManyToNoneChange={},DS.OneToOneChange={},DS.ManyToManyChange={},DS.RelationshipChange._createChange=function(e){if(e.changeType==="add")return DS.RelationshipChangeAdd.create(e);if(e.changeType==="remove")return DS.RelationshipChangeRemove.create(e)},DS.RelationshipChange.determineRelationshipType=function(t,n){var r=n.key,i,s,o,u,a=n.kind,f=t.metaForProperty(r).options,l=DS._inverseTypeFor(t,r);if(f.inverse)i=f.inverse,o=e(l,"relationshipsByName").get(i).kind;else if(u=DS._inverseRelationshipFor(l,t))i=u.name,o=u.kind;return i?o==="belongsTo"?a==="belongsTo"?"oneToOne":"manyToOne":a==="belongsTo"?"oneToMany":"manyToMany":a==="belongsTo"?"oneToNone":"manyToNone"},DS.RelationshipChange.createChange=function(e,t,n,r){var i=e.type,s,o;o=DS.RelationshipChange.determineRelationshipType(i,r);if(o==="oneToMany")return DS.OneToManyChange.createChange(e,t,n,r);if(o==="manyToOne")return DS.OneToManyChange.createChange(t,e,n,r);if(o==="oneToNone")return DS.OneToNoneChange.createChange(e,t,n,r);if(o==="manyToNone")return DS.ManyToNoneChange.createChange(e,t,n,r);if(o==="oneToOne")return DS.OneToOneChange.createChange(e,t,n,r);if(o==="manyToMany")return DS.ManyToManyChange.createChange(e,t,n,r)},DS.OneToNoneChange.createChange=function(e,t,n,r){var i=r.key,s=DS.RelationshipChange._createChange({parentReference:t,childReference:e,firstRecordReference:e,store:n,changeType:r.changeType,firstRecordName:i,firstRecordKind:"belongsTo"});return n.addRelationshipChangeFor(e,i,t,null,s),s},DS.ManyToNoneChange.createChange=function(e,t,n,r){var i=r.key,s=DS.RelationshipChange._createChange({parentReference:e,childReference:t,secondRecordReference:e,store:n,changeType:r.changeType,secondRecordName:r.key,secondRecordKind:"hasMany"});return n.addRelationshipChangeFor(e,i,t,null,s),s},DS.ManyToManyChange.createChange=function(e,t,n,r){var i=e.type,s;s=r.key;var o=DS.RelationshipChange._createChange({parentReference:t,childReference:e,firstRecordReference:e,secondRecordReference:t,firstRecordKind:"hasMany",secondRecordKind:"hasMany",store:n,changeType:r.changeType,firstRecordName:s});return n.addRelationshipChangeFor(e,s,t,null,o),o},DS.OneToOneChange.createChange=function(e,t,n,i){var s=e.type,o;i.parentType?o=r(i.parentType,s,i.key):i.key&&(o=i.key);var u=DS.RelationshipChange._createChange({parentReference:t,childReference:e,firstRecordReference:e,secondRecordReference:t,firstRecordKind:"belongsTo",secondRecordKind:"belongsTo",store:n,changeType:i.changeType,firstRecordName:o});return n.addRelationshipChangeFor(e,o,t,null,u),u},DS.OneToOneChange.maintainInvariant=function(t,n,r,i){if(t.changeType==="add"&&n.recordIsMaterialized(r)){var s=n.recordForReference(r),o=e(s,i);if(o){var u=DS.OneToOneChange.createChange(r,o.get("_reference"),n,{parentType:t.parentType,hasManyName:t.hasManyName,changeType:"remove",key:t.key});n.addRelationshipChangeFor(r,i,t.parentReference,null,u),u.sync()}}},DS.OneToManyChange.createChange=function(e,t,n,i){var s=e.type,o;i.parentType?(o=r(i.parentType,s,i.key),DS.OneToManyChange.maintainInvariant(i,n,e,o)):i.key&&(o=i.key);var u=DS.RelationshipChange._createChange({parentReference:t,childReference:e,firstRecordReference:e,secondRecordReference:t,firstRecordKind:"belongsTo",secondRecordKind:"hasMany",store:n,changeType:i.changeType,firstRecordName:o});return n.addRelationshipChangeFor(e,o,t,null,u),u},DS.OneToManyChange.maintainInvariant=function(t,n,r,i){if(t.changeType==="add"&&n.recordIsMaterialized(r)){var s=n.recordForReference(r),o=e(s,i);if(o){var u=DS.OneToManyChange.createChange(r,o.get("_reference"),n,{parentType:t.parentType,hasManyName:t.hasManyName,changeType:"remove",key:t.key});n.addRelationshipChangeFor(r,i,t.parentReference,null,u),u.sync()}}},DS.OneToManyChange.ensureSameTransaction=function(e,t){var r=Ember.A();n(e,function(e){r.addObject(e.getSecondRecord()),r.addObject(e.getFirstRecord())});var i=t.ensureSameTransaction(r);n(e,function(e){e.transaction=i})},DS.RelationshipChange.prototype={getSecondRecordName:function(){var e=this.secondRecordName,t=this.store,n;if(!e){n=this.secondRecordReference;if(!n)return;var r=this.firstRecordReference.type,s=DS._inverseTypeFor(r,this.firstRecordName);e=i(s,r,this.firstRecordName),this.secondRecordName=e}return e},getFirstRecordName:function(){var e=this.firstRecordName,t=this.store,n,r;if(!e){n=this.secondRecordReference,r=this.firstRecordReference;if(!r||!n)return;e=DS._inverseRelationshipFor(r.type,n.type).name,this.firstRecordName=e}return e},destroy:function(){var e=this.childReference,t=this.getFirstRecordName(),n=this.getSecondRecordName(),r=this.store,i,s,o,u,a;r.removeRelationshipChangeFor(e,t,this.parentReference,n,this.changeType),(a=this.transaction)&&a.relationshipBecameClean(this)},getByReference:function(e){var t=this.store;if(!e)return e;if(t.recordIsMaterialized(e))return t.recordForReference(e)},getSecondRecord:function(){return this.getByReference(this.secondRecordReference)},getFirstRecord:function(){return this.getByReference(this.firstRecordReference)},ensureSameTransaction:function(){var e=this.getFirstRecord(),t=this.getSecondRecord(),n=this.store.ensureSameTransaction([e,t]);return this.transaction=n,n},callChangeEvents:function(){var t=this.getSecondRecordName(),n=this.getFirstRecordName(),r=this.getFirstRecord(),i=this.getSecondRecord(),s=new Ember.OrderedSet;i&&e(i,"isLoaded")&&this.store.recordHasManyDidChange(s,i,this),r&&this.store.recordBelongsToDidChange(s,r,this),s.forEach(function(e){e.adapterDidDirty()})},coalesce:function(){var e=this.store.relationshipChangePairsFor(this.firstRecordReference);n(e,function(e){var t=e.add,n=e.remove;t&&n&&(t.destroy(),n.destroy())})}},DS.RelationshipChangeAdd.prototype=Ember.create(DS.RelationshipChange.create({})),DS.RelationshipChangeRemove.prototype=Ember.create(DS.RelationshipChange.create({})),DS.RelationshipChangeAdd.prototype.changeType="add",DS.RelationshipChangeAdd.prototype.sync=function(){var n=this.getSecondRecordName(),r=this.getFirstRecordName(),i=this.getFirstRecord(),s=this.getSecondRecord(),o=this.ensureSameTransaction();o.relationshipBecameDirty(this),this.callChangeEvents(),s&&i&&(this.secondRecordKind==="belongsTo"?s.suspendRelationshipObservers(function(){t(s,n,i)}):this.secondRecordKind==="hasMany"&&s.suspendRelationshipObservers(function(){e(s,n).addObject(i)})),i&&s&&e(i,r)!==s&&(this.firstRecordKind==="belongsTo"?i.suspendRelationshipObservers(function(){t(i,r,s)}):this.firstdRecordKind==="hasMany"&&i.suspendRelationshipObservers(function(){e(i,r).addObject(s)})),this.coalesce()},DS.RelationshipChangeRemove.prototype.changeType="remove",DS.RelationshipChangeRemove.prototype.sync=function(){var n=this.getSecondRecordName(),r=this.getFirstRecordName(),i=this.getFirstRecord(),s=this.getSecondRecord(),o=this.ensureSameTransaction(i,s,n,r);o.relationshipBecameDirty(this),this.callChangeEvents(),s&&i&&(this.secondRecordKind==="belongsTo"?t(s,n,null):this.secondRecordKind==="hasMany"&&s.suspendRelationshipObservers(function(){e(s,n).removeObject(i)})),i&&e(i,r)&&(this.firstRecordKind==="belongsTo"?i.suspendRelationshipObservers(function(){t(i,r,null)}):this.firstdRecordKind==="hasMany"&&i.suspendRelationshipObservers(function(){e(i,r).removeObject(s)})),this.coalesce()}}(),function(){}(),function(){var e=Ember.set;Ember.onLoad("Ember.Application",function(t){t.registerInjection?(t.registerInjection({name:"store",before:"controllers",injection:function(t,n,r){if(!n)return;r==="Store"&&e(n,"store",t[r].create())}}),t.registerInjection({name:"giveStoreToControllers",after:["store","controllers"],injection:function(e,t,n){if(!t)return;if(/^[A-Z].*Controller$/.test(n)){var r=n.charAt(0).toLowerCase()+n.substr(1),i=t.get("store"),s=t.get(r);if(!s)return;s.set("store",i)}}})):t.initializer&&(t.initializer({name:"store",initialize:function(e,t){e.register("store","main",t.Store),e.lookup("store:main")}}),t.initializer({name:"injectStore",initialize:function(e){e.typeInjection("controller","store","store:main"),e.typeInjection("route","store","store:main")}}))})}(),function(){function i(e){return function(){throw new Ember.Error("Your serializer "+this.toString()+" does not implement the required method "+e)}}var e=Ember.get,t=Ember.set,n=Ember.ArrayPolyfills.map,r=Ember.isNone;DS.Serializer=Ember.Object.extend({init:function(){this.mappings=Ember.Map.create(),this.configurations=Ember.Map.create(),this.globalConfigurations={}},extract:i("extract"),extractMany:i("extractMany"),extractRecordRepresentation:function(e,t,n,i){var s=this.mappingForType(t),o,u={},a;return i?a=e.sideload(t,n):a=e.load(t,n),this.eachEmbeddedHasMany(t,function(t,i){var s=n[this.keyFor(i)];r(s)||this.extractEmbeddedHasMany(e,i,s,a,u)},this),this.eachEmbeddedBelongsTo(t,function(t,i){var s=n[this.keyFor(i)];r(s)||this.extractEmbeddedBelongsTo(e,i,s,a,u)},this),e.prematerialize(a,u),a},extractEmbeddedHasMany:function(e,t,r,i,s){var o=n.call(r,function(n){if(!n)return;var r=this.extractRecordRepresentation(e,t.type,n,!0),s=this.embeddedType(i.type,t.key);return s==="always"&&(r.parent=i),r},this);s[t.key]=o},extractEmbeddedBelongsTo:function(e,t,n,r,i){var s=this.extractRecordRepresentation(e,t.type,n,!0);i[t.key]=s;var o=this.embeddedType(r.type,t.key);o==="always"&&(s.parent=r)},serialize:function(t,n){n=n||{};var r=this.createSerializedForm(),i;return n.includeId&&(i=e(t,"id"))&&this._addId(r,t.constructor,i),this.addAttributes(r,t),this.addRelationships(r,t),r},serializeValue:function(e,t){var n=this.transforms?this.transforms[t]:null;return n.serialize(e)},serializeId:function(e){return isNaN(e)?e:+e},addAttributes:function(e,t){t.eachAttribute(function(n,r){this._addAttribute(e,t,n,r.type)},this)},addAttribute:Ember.K,addId:Ember.K,addRelationships:function(e,t){t.eachRelationship(function(n,r){r.kind==="belongsTo"?this._addBelongsTo(e,t,n,r):r.kind==="hasMany"&&this._addHasMany(e,t,n,r)},this)},addBelongsTo:Ember.K,addHasMany:Ember.K,keyForAttributeName:function(e,t){return t},primaryKey:function(e){return"id"},keyForBelongsTo:function(e,t){return this.keyForAttributeName(e,t)},keyForHasMany:function(e,t){return this.keyForAttributeName(e,t)},materialize:function(t,n,r){var i;Ember.isNone(e(t,"id"))&&(r&&r.hasOwnProperty("id")?i=r.id:i=this.extractId(t.constructor,n),t.materializeId(i)),this.materializeAttributes(t,n,r),this.materializeRelationships(t,n,r)},deserializeValue:function(e,t){var n=this.transforms?this.transforms[t]:null;return n.deserialize(e)},materializeAttributes:function(e,t,n){e.eachAttribute(function(r,i){n&&n.hasOwnProperty(r)?e.materializeAttribute(r,n[r]):this.materializeAttribute(e,t,r,i.type)},this)},materializeAttribute:function(e,t,n,r){var i=this.extractAttribute(e.constructor,t,n);i=this.deserializeValue(i,r),e.materializeAttribute(n,i)},materializeRelationships:function(e,t,n){e.eachRelationship(function(r,i){i.kind==="hasMany"?n&&n.hasOwnProperty(r)?e.materializeHasMany(r,n[r]):this.materializeHasMany(r,e,t,i,n):i.kind==="belongsTo"&&(n&&n.hasOwnProperty(r)?e.materializeBelongsTo(r,n[r]):this.materializeBelongsTo(r,e,t,i,n))},this)},materializeHasMany:function(e,t,n,r){var i=this._keyForHasMany(t.constructor,r.key);t.materializeHasMany(e,this.extractHasMany(t.constructor,n,i))},materializeBelongsTo:function(e,t,n,r){var i=this._keyForBelongsTo(t.constructor,r.key);t.materializeBelongsTo(e,this.extractBelongsTo(t.constructor,n,i))},_extractEmbeddedRelationship:function(e,t,n,r){var i=this["_keyFor"+r](e,n);if(this.embeddedType(e,n))return this["extractEmbedded"+r](e,t,i)},_extractEmbeddedBelongsTo:function(e,t,n){return this._extractEmbeddedRelationship(e,t,n,"BelongsTo")},_extractEmbeddedHasMany:function(e,t,n){return this._extractEmbeddedRelationship(e,t,n,"HasMany")},_primaryKey:function(e){var t=this.configurationForType(e),n=t&&t.primaryKey;return n?n:this.primaryKey(e)},_addAttribute:function(t,n,r,i){var s=this._keyForAttributeName(n.constructor,r),o=e(n,r);this.addAttribute(t,s,this.serializeValue(o,i))},_addId:function(e,t,n){var r=this._primaryKey(t);this.addId(e,r,this.serializeId(n))},_keyForAttributeName:function(e,t){return this._keyFromMappingOrHook("keyForAttributeName",e,t)},_keyForBelongsTo:function(e,t){return this._keyFromMappingOrHook("keyForBelongsTo",e,t)},keyFor:function(e){var t=e.parentType,n=e.key;switch(e.kind){case"belongsTo":return this._keyForBelongsTo(t,n);case"hasMany":return this._keyForHasMany(t,n)}},_keyForHasMany:function(e,t){return this._keyFromMappingOrHook("keyForHasMany",e,t)},_addBelongsTo:function(e,t,n,r){var i=this._keyForBelongsTo(t.constructor,n);this.addBelongsTo(e,t,i,r)},_addHasMany:function(e,t,n,r){var i=this._keyForHasMany(t.constructor,n);this.addHasMany(e,t,i,r)},_keyFromMappingOrHook:function(e,t,n){var r=this.mappingOption(t,n,"key");return r?r:this[e](t,n)},registerTransform:function(e,t){this.transforms[e]=t},registerEnumTransform:function(e,t){var n={deserialize:function(e){return Ember.A(t).objectAt(e)},serialize:function(e){return Ember.EnumerableUtils.indexOf(t,e)},values:t};this.registerTransform(e,n)},map:function(e,t){this.mappings.set(e,t)},configure:function(e,t){if(e&&!t){Ember.merge(this.globalConfigurations,e);return}var n=Ember.create(this.globalConfigurations);Ember.merge(n,t),this.configurations.set(e,n)},mappingForType:function(e){return this._reifyMappings(),this.mappings.get(e)||{}},configurationForType:function(e){return this._reifyConfigurations(),this.configurations.get(e)||this.globalConfigurations},_reifyMappings:function(){if(this._didReifyMappings)return;var e=this.mappings,t=Ember.Map.create();e.forEach(function(e,n){if(typeof e=="string"){var r=Ember.get(Ember.lookup,e);t.set(r,n)}else t.set(e,n)}),this.mappings=t,this._didReifyMappings=!0},_reifyConfigurations:function(){if(this._didReifyConfigurations)return;var e=this.configurations,t=Ember.Map.create();e.forEach(function(e,n){if(typeof e=="string"&&e!=="plurals"){var r=Ember.get(Ember.lookup,e);t.set(r,n)}else t.set(e,n)}),this.configurations=t,this._didReifyConfigurations=!0},mappingOption:function(e,t,n){var r=this.mappingForType(e)[t];return r&&r[n]},configOption:function(e,t){var n=this.configurationForType(e);return n[t]},embeddedType:function(e,t){return this.mappingOption(e,t,"embedded")},eachEmbeddedRecord:function(e,t,n){this.eachEmbeddedBelongsToRecord(e,t,n),this.eachEmbeddedHasManyRecord(e,t,n)},eachEmbeddedBelongsToRecord:function(t,n,r){var i=t.constructor;this.eachEmbeddedBelongsTo(t.constructor,function(i,s,o){var u=e(t,i);u&&n.call(r,u,o)})},eachEmbeddedHasManyRecord:function(t,n,r){var i=t.constructor;this.eachEmbeddedHasMany(t.constructor,function(i,s,o){var u=e(t,i);for(var a=0,f=e(u,"length");a<f;a++)n.call(r,u.objectAt(a),o)})},eachEmbeddedHasMany:function(e,t,n){this.eachEmbeddedRelationship(e,"hasMany",t,n)},eachEmbeddedBelongsTo:function(e,t,n){this.eachEmbeddedRelationship(e,"belongsTo",t,n)},eachEmbeddedRelationship:function(e,t,n,r){e.eachRelationship(function(i,s){var o=this.embeddedType(e,i);o&&s.kind===t&&n.call(r,i,s,o)},this)}})}(),function(){var e=Ember.isNone;DS.JSONTransforms={string:{deserialize:function(t){return e(t)?null:String(t)},serialize:function(t){return e(t)?null:String(t)}},number:{deserialize:function(t){return e(t)?null:Number(t)},serialize:function(t){return e(t)?null:Number(t)}},"boolean":{deserialize:function(e){var t=typeof e;return t==="boolean"?e:t==="string"?e.match(/^true$|^t$|^1$/i)!==null:t==="number"?e===1:!1},serialize:function(e){return Boolean(e)}},date:{deserialize:function(e){var t=typeof e,n=null;return t==="string"||t==="number"?(t==="string"&&e.search(/^\d{4}-\d{2}-\d{2}$/)!==-1&&(e+="T00:00:00Z"),n=new Date(e),t==="string"&&isNaN(n)&&(n=new Date(Date.parse(e.replace(/\-/ig,"/").replace(/Z$/,"").split(".")[0]))),n):e===null||e===undefined?e:null},serialize:function(e){if(e instanceof Date){var t=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],n=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],r=function(e){return e<10?"0"+e:""+e},i=e.getUTCFullYear(),s=e.getUTCMonth(),o=e.getUTCDate(),u=e.getUTCDay(),a=e.getUTCHours(),f=e.getUTCMinutes(),l=e.getUTCSeconds(),c=t[u],h=r(o),p=n[s];return c+", "+h+" "+p+" "+i+" "+r(a)+":"+r(f)+":"+r(l)+" GMT"}return e===undefined?undefined:null}}}}(),function(){var e=Ember.get,t=Ember.set,n=0;DS.JSONSerializer=DS.Serializer.extend({init:function(){this._super(),e(this,"transforms")||this.set("transforms",DS.JSONTransforms),this.sideloadMapping=Ember.Map.create(),this.configure({meta:"meta",since:"since"})},configure:function(e,t){if(e&&!t)return this._super(e);var n=t.sideloadAs;n&&(this.sideloadMapping.set(n,e),delete t.sideloadAs),this._super.apply(this,arguments)},addId:function(e,t,n){e[t]=n},addAttribute:function(e,t,n){e[t]=n},createSerializedForm:function(){return{}},extractAttribute:function(e,t,n){var r=this._keyForAttributeName(e,n);return t[r]},extractId:function(e,t){var n=this._primaryKey(e);return t.hasOwnProperty(n)?t[n]+"":null},extractHasMany:function(e,t,n){return t[n]},extractBelongsTo:function(e,t,n){return t[n]},addBelongsTo:function(t,n,r,i){var s=n.constructor,o=i.key,u=null,a;if(this.embeddedType(s,o)){if(a=e(n,o))u=this.serialize(a,{includeId:!0});t[r]=u}else{var f=e(n,i.key+".id");Ember.isNone(f)||(t[r]=f)}},addHasMany:function(t,n,r,i){var s=n.constructor,o=i.key,u=[],a,f;f=this.embeddedType(s,o);if(f!=="always")return;a=e(n,o),a.forEach(function(e){u.push(this.serialize(e,{includeId:!0}))},this),t[r]=u},extract:function(e,t,n,r){var i=this.rootForType(n);this.sideload(e,n,t,i),this.extractMeta(e,n,t),t[i]&&(r&&e.updateId(r,t[i]),this.extractRecordRepresentation(e,n,t[i]))},extractMany:function(e,t,n,r){var i=this.rootForType(n);i=this.pluralize(i),this.sideload(e,n,t,i),this.extractMeta(e,n,t);if(t[i]){var s=t[i],o=[];r&&(r=r.toArray());for(var u=0;u<s.length;u++){r&&e.updateId(r[u],s[u]);var a=this.extractRecordRepresentation(e,n,s[u]);o.push(a)}e.populateArray(o)}},extractMeta:function(e,t,n){var r=n[this.configOption(t,"meta")],i;if(!r)return;(i=r[this.configOption(t,"since")])&&e.sinceForType(t,i)},sideload:function(t,n,r,i){var s,o,u={};u[i]=!0;for(var a in r){if(!r.hasOwnProperty(a))continue;if(a===i)continue;if(a===this.configOption(n,"meta"))continue;s=n.typeForRelationship(a),s||(s=this.sideloadMapping.get(a),typeof s=="string"&&(s=e(Ember.lookup,s))),this.sideloadRelationships(t,s,r,a,u)}},sideloadRelationships:function(t,n,r,i,s){if(s[i])return;s[i]=!0,e(n,"relationshipsByName").forEach(function(e,n){e=n.key||e,n.kind==="belongsTo"&&(e=this.pluralize(e)),r[e]&&this.sideloadRelationships(t,n.type,r,e,s)},this),this.loadValue(t,n,r[i])},loadValue:function(e,t,n){if(n instanceof Array)for(var r=0;r<n.length;r++)e.sideload(t,n[r]);else e.sideload(t,n)},pluralize:function(e){var t=this.configurations.get("plurals");return t&&t[e]||e+"s"},rootForType:function(e){var t=e.toString(),n=t.split("."),r=n[n.length-1];return r.replace(/([A-Z])/g,"_$1").toLowerCase().slice(1)}})}(),function(){function e(e){return{load:function(t,n,r){return e.load(t,n,r)},loadMany:function(t,n){return e.loadMany(t,n)},updateId:function(t,n){return e.updateId(t,n)},populateArray:Ember.K,sideload:function(t,n){return e.load(t,n)},sideloadMany:function(t,n){return e.loadMany(t,n)},prematerialize:function(t,n){e.prematerialize(t,n)},sinceForType:function(t,n){e.sinceForType(t,n)}}}DS.loaderFor=e;var t=Ember.get,n=Ember.set,r=Ember.merge;DS.Adapter=Ember.Object.extend(DS._Mappable,{init:function(){var e=t(this,"serializer");Ember.Object.detect(e)&&(e=e.create(),n(this,"serializer",e)),this._attributesMap=this.createInstanceMapFor("attributes"),this._configurationsMap=this.createInstanceMapFor("configurations"),this._outstandingOperations=new Ember.MapWithDefault({defaultValue:function(){return 0}}),this._dependencies=new Ember.MapWithDefault({defaultValue:function(){return new Ember.OrderedSet}}),this.registerSerializerTransforms(this.constructor,e,{}),this.registerSerializerMappings(e)},load:function(n,r,i){var s=e(n);t(this,"serializer").extractRecordRepresentation(s,r,i)},didCreateRecord:function(e,n,r,i){e.didSaveRecord(r);if(i){var s=DS.loaderFor(e),o=t(this,"serializer");s.load=function(t,n,i){return e.updateId(r,n),e.load(t,n,i)},t(this,"serializer").extract(s,i,n)}},didCreateRecords:function(e,n,r,i){r.forEach(function(t){e.didSaveRecord(t)},this);if(i){var s=DS.loaderFor(e);t(this,"serializer").extractMany(s,i,n,r)}},didSaveRecord:function(e,n,r,i){e.didSaveRecord(r);var s=t(this,"serializer"),o=s.mappingForType(n);s.eachEmbeddedRecord(r,function(t,n){if(n==="load")return;this.didSaveRecord(e,t.constructor,t)},this);if(i){var u=DS.loaderFor(e);s.extract(u,i,n)}},didUpdateRecord:function(){this.didSaveRecord.apply(this,arguments)},didDeleteRecord:function(){this.didSaveRecord.apply(this,arguments)},didSaveRecords:function(e,n,r,i){r.forEach(function(t){e.didSaveRecord(t)},this);if(i){var s=DS.loaderFor(e);t(this,"serializer").extractMany(s,i,n)}},didUpdateRecords:function(){this.didSaveRecords.apply(this,arguments)},didDeleteRecords:function(){this.didSaveRecords.apply(this,arguments)},didFindRecord:function(e,n,r,i){var s=DS.loaderFor(e);s.load=function(t,n,r){return r=r||{},r.id=i,e.load(t,n,r)},t(this,"serializer").extract(s,r,n)},didFindAll:function(e,n,r){var i=DS.loaderFor(e),s=t(this,"serializer");e.didUpdateAll(n),s.extractMany(i,r,n)},didFindQuery:function(e,n,r,i){var s=DS.loaderFor(e);s.populateArray=function(e){i.load(e)},t(this,"serializer").extractMany(s,r,n)},didFindMany:function(e,n,r){var i=DS.loaderFor(e);t(this,"serializer").extractMany(i,r,n)},didError:function(e,t,n){e.recordWasError(n)},dirtyRecordsForAttributeChange:function(e,t,n,r,i){r!==i&&this.dirtyRecordsForRecordChange(e,t)},dirtyRecordsForRecordChange:function(e,t){e.add(t)},dirtyRecordsForBelongsToChange:function(e,t){this.dirtyRecordsForRecordChange(e,t)},dirtyRecordsForHasManyChange:function(e,t){this.dirtyRecordsForRecordChange(e,t)},registerSerializerTransforms:function(e,t,n){var r=e._registeredTransforms,i,s;for(s in r){if(!r.hasOwnProperty(s)||s in n)continue;n[s]=!0,t.registerTransform(s,r[s])}(i=e.superclass)&&this.registerSerializerTransforms(i,t,n)},registerSerializerMappings:function(e){var t=this._attributesMap,n=this._configurationsMap;t.forEach(e.map,e),n.forEach(e.configure,e)},find:null,serializer:DS.JSONSerializer,registerTransform:function(e,n){t(this,"serializer").registerTransform(e,n)},registerEnumTransform:function(e,n){t(this,"serializer").registerEnumTransform(e,n)},generateIdForRecord:null,materialize:function(e,n,r){t(this,"serializer").materialize(e,n,r)},serialize:function(e,n){return t(this,"serializer").serialize(e,n)},extractId:function(e,n){return t(this,"serializer").extractId(e,n)},groupByType:function(e){var t=Ember.MapWithDefault.create({defaultValue:function(){return Ember.OrderedSet.create()}});return e.forEach(function(e){t.get(e.constructor).add(e)}),t},commit:function(e,t){this.save(e,t)},save:function(e,t){function r(e){var t=Ember.OrderedSet.create();return e.forEach(function(e){n.shouldSave(e)&&t.add(e)}),t}var n=this;this.groupByType(t.created).forEach(function(t,n){this.createRecords(e,t,r(n))},this),this.groupByType(t.updated).forEach(function(t,n){this.updateRecords(e,t,r(n))},this),this.groupByType(t.deleted).forEach(function(t,n){this.deleteRecords(e,t,r(n))},this)},shouldSave:Ember.K,createRecords:function(e,t,n){n.forEach(function(n){this.createRecord(e,t,n)},this)},updateRecords:function(e,t,n){n.forEach(function(n){this.updateRecord(e,t,n)},this)},deleteRecords:function(e,t,n){n.forEach(function(n){this.deleteRecord(e,t,n)},this)},findMany:function(e,t,n){n.forEach(function(n){this.find(e,t,n)},this)}}),DS.Adapter.reopenClass({registerTransform:function(e,t){var n=this._registeredTransforms||{};n[e]=t,this._registeredTransforms=n},map:DS._Mappable.generateMapFunctionFor("attributes",function(e,t,n){var i=n.get(e);r(i,t)}),configure:DS._Mappable.generateMapFunctionFor("configurations",function(e,t,n){var i=n.get(e),s=t&&t.mappings;s&&(this.map(e,s),delete t.mappings),r(i,t)}),resolveMapConflict:function(e,t,n){return r(t,e),t}})}(),function(){var e=Ember.get,t=Ember.set;DS.FixtureSerializer=DS.Serializer.extend({extract:function(e,t,n,r){r&&e.updateId(r,t),this.extractRecordRepresentation(e,n,t)},extractMany:function(e,t,n,r){var i=t,s=[];r&&(r=r.toArray());for(var o=0;o<i.length;o++){r&&e.updateId(r[o],i[o]);var u=this.extractRecordRepresentation(e,n,i[o]);s.push(u)}e.populateArray(s)},deserializeValue:function(e,t){return e},serializeValue:function(e,t){return e},createSerializedForm:function(){return{}},extractAttribute:function(e,t,n){var r=this._keyForAttributeName(e,n);return t[r]},extractId:function(e,t){var n=this._primaryKey(e);return t.hasOwnProperty(n)?t[n]+"":null}})}(),function(){var e=Ember.get;DS.FixtureAdapter=DS.Adapter.extend({simulateRemoteResponse:!0,latency:50,serializer:DS.FixtureSerializer,fixturesForType:function(e){if(e.FIXTURES){var t=Ember.A(e.FIXTURES);return t.map(function(e){if(!e.id)throw new Error("the id property must be defined for fixture %@".fmt(e));return e.id=e.id+"",e})}return null},queryFixtures:function(e,t,n){return e},mockJSON:function(e,t){return this.serialize(t,{includeId:!0})},generateIdForRecord:function(e,t){return Ember.guidFor(t)},find:function(e,t,n){var r=this.fixturesForType(t),i;r&&(i=Ember.A(r).findProperty("id",n)),i&&this.simulateRemoteCall(function(){this.didFindRecord(e,t,i,n)},this)},findMany:function(e,t,n){var r=this.fixturesForType(t);r&&(r=r.filter(function(e){return n.indexOf(e.id)!==-1})),r&&this.simulateRemoteCall(function(){this.didFindMany(e,t,r)},this)},findAll:function(e,t){var n=this.fixturesForType(t);this.simulateRemoteCall(function(){this.didFindAll(e,t,n)},this)},findQuery:function(e,t,n,r){var i=this.fixturesForType(t);i=this.queryFixtures(i,n,t),i&&this.simulateRemoteCall(function(){this.didFindQuery(e,t,i,r)},this)},createRecord:function(e,t,n){var r=this.mockJSON(t,n);r.id=this.generateIdForRecord(e,n),this.simulateRemoteCall(function(){this.didCreateRecord(e,t,n,r)},this)},updateRecord:function(e,t,n){var r=this.mockJSON(t,n);this.simulateRemoteCall(function(){this.didUpdateRecord(e,t,n,r)},this)},deleteRecord:function(e,t,n){this.simulateRemoteCall(function(){this.didDeleteRecord(e,t,n)},this)},simulateRemoteCall:function(t,n){function r(){Ember.run(n,t)}e(this,"simulateRemoteResponse")?setTimeout(r,e(this,"latency")):r()}})}(),function(){DS.RESTSerializer=DS.JSONSerializer.extend({keyForAttributeName:function(e,t){return Ember.String.decamelize(t)},keyForBelongsTo:function(e,t){var n=this.keyForAttributeName(e,t);return this.embeddedType(e,t)?n:n+"_id"}})}(),function(){var e=Ember.get,t=Ember.set,n=Ember.merge;DS.RESTAdapter=DS.Adapter.extend({bulkCommit:!1,since:"since",serializer:DS.RESTSerializer,init:function(){this._super.apply(this,arguments)},shouldSave:function(t){var n=e(t,"_reference");return!n.parent},createRecord:function(e,t,n){var r=this.rootForType(t),i={};i[r]=this.serialize(n,{includeId:!0}),this.ajax(this.buildURL(r),"POST",{data:i,context:this,success:function(r){Ember.run(this,function(){this.didCreateRecord(e,t,n,r)})},error:function(r){this.didError(e,t,n,r)}})},dirtyRecordsForRecordChange:function(e,t){this._dirtyTree(e,t)},dirtyRecordsForHasManyChange:function(t,n,r){var i=e(this,"serializer").embeddedType(n.constructor,r.secondRecordName);i==="always"&&(r.childReference.parent=r.parentReference,this._dirtyTree(t,n))},_dirtyTree:function(t,n){t.add(n),e(this,"serializer").eachEmbeddedRecord(n,function(e,n){if(n!=="always")return;if(t.has(e))return;this._dirtyTree(t,e)},this);var r=n.get("_reference");if(r.parent){var i=e(n,"store"),s=i.recordForReference(r.parent);this._dirtyTree(t,s)}},createRecords:function(t,n,r){if(e(this,"bulkCommit")===!1)return this._super(t,n,r);var i=this.rootForType(n),s=this.pluralize(i),o={};o[s]=[],r.forEach(function(e){o[s].push(this.serialize(e,{includeId:!0}))},this),this.ajax(this.buildURL(i),"POST",{data:o,context:this,success:function(e){Ember.run(this,function(){this.didCreateRecords(t,n,r,e)})}})},updateRecord:function(t,n,r){var i=e(r,"id"),s=this.rootForType(n),o={};o[s]=this.serialize(r),this.ajax(this.buildURL(s,i),"PUT",{data:o,context:this,success:function(e){Ember.run(this,function(){this.didSaveRecord(t,n,r,e)})},error:function(e){this.didError(t,n,r,e)}})},updateRecords | |
| :function(t,n,r){if(e(this,"bulkCommit")===!1)return this._super(t,n,r);var i=this.rootForType(n),s=this.pluralize(i),o={};o[s]=[],r.forEach(function(e){o[s].push(this.serialize(e,{includeId:!0}))},this),this.ajax(this.buildURL(i,"bulk"),"PUT",{data:o,context:this,success:function(e){Ember.run(this,function(){this.didSaveRecords(t,n,r,e)})}})},deleteRecord:function(t,n,r){var i=e(r,"id"),s=this.rootForType(n);this.ajax(this.buildURL(s,i),"DELETE",{context:this,success:function(e){Ember.run(this,function(){this.didSaveRecord(t,n,r,e)})}})},deleteRecords:function(t,n,r){if(e(this,"bulkCommit")===!1)return this._super(t,n,r);var i=this.rootForType(n),s=this.pluralize(i),o=e(this,"serializer"),u={};u[s]=[],r.forEach(function(t){u[s].push(o.serializeId(e(t,"id")))}),this.ajax(this.buildURL(i,"bulk"),"DELETE",{data:u,context:this,success:function(e){Ember.run(this,function(){this.didSaveRecords(t,n,r,e)})}})},find:function(e,t,n){var r=this.rootForType(t);this.ajax(this.buildURL(r,n),"GET",{success:function(r){Ember.run(this,function(){this.didFindRecord(e,t,r,n)})}})},findAll:function(e,t,n){var r=this.rootForType(t);this.ajax(this.buildURL(r),"GET",{data:this.sinceQuery(n),success:function(n){Ember.run(this,function(){this.didFindAll(e,t,n)})}})},findQuery:function(e,t,n,r){var i=this.rootForType(t);this.ajax(this.buildURL(i),"GET",{data:n,success:function(n){Ember.run(this,function(){this.didFindQuery(e,t,n,r)})}})},findMany:function(e,t,n,r){var i=this.rootForType(t);n=this.serializeIds(n),this.ajax(this.buildURL(i),"GET",{data:{ids:n},success:function(n){Ember.run(this,function(){this.didFindMany(e,t,n)})}})},serializeIds:function(t){var n=e(this,"serializer");return Ember.EnumerableUtils.map(t,function(e){return n.serializeId(e)})},didError:function(e,t,n,r){if(r.status===422){var i=JSON.parse(r.responseText);e.recordWasInvalid(n,i.errors)}else this._super.apply(this,arguments)},ajax:function(e,t,n){n.url=e,n.type=t,n.dataType="json",n.contentType="application/json; charset=utf-8",n.context=this,n.data&&t!=="GET"&&(n.data=JSON.stringify(n.data)),jQuery.ajax(n)},url:"",rootForType:function(t){var n=e(this,"serializer");return n.rootForType(t)},pluralize:function(t){var n=e(this,"serializer");return n.pluralize(t)},buildURL:function(e,t){var n=[this.url];return this.namespace!==undefined&&n.push(this.namespace),n.push(this.pluralize(e)),t!==undefined&&n.push(t),n.join("/")},sinceQuery:function(t){var n={};return n[e(this,"since")]=t,t?n:null}})}(),function(){}(),function(){}(),typeof location!="undefined"&&(location.hostname==="localhost"||location.hostname==="127.0.0.1")&&console.warn("You are running a production build of Ember on localhost and won't receive detailed error messages. If you want full error messages please use the non-minified build provided on the Ember website."); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment