forked from dgeb/orbit-builds
-
Notifications
You must be signed in to change notification settings - Fork 0
/
orbit-common.amd.min.js
1 lines (1 loc) · 14.2 KB
/
orbit-common.amd.min.js
1
define("orbit-common",["orbit-common/main","orbit-common/cache","orbit-common/schema","orbit-common/serializer","orbit-common/source","orbit-common/memory-source","orbit-common/lib/exceptions","exports"],function(a,b,c,d,e,f,g,h){"use strict";var i=a["default"],j=b["default"],k=c["default"],l=d["default"],m=e["default"],n=f["default"],o=g.OperationNotAllowed,p=g.RecordNotFoundException,q=g.LinkNotFoundException,r=g.RecordAlreadyExistsException;i.Cache=j,i.Schema=k,i.Serializer=l,i.Source=m,i.MemorySource=n,i.OperationNotAllowed=o,i.RecordNotFoundException=p,i.LinkNotFoundException=q,i.RecordAlreadyExistsException=r,h["default"]=i}),define("orbit-common/cache",["orbit/document","orbit/evented","orbit/lib/objects","./lib/exceptions","exports"],function(a,b,c,d,e){"use strict";var f=a["default"],g=b["default"],h=c.Class,i=(c.expose,c.isArray),j=d.OperationNotAllowed,k=h.extend({init:function(a,b){b=b||{},this.trackChanges=void 0!==b.trackChanges?b.trackChanges:!0,this.trackRevLinks=void 0!==b.trackRevLinks?b.trackRevLinks:!0,this.trackRevLinkChanges=void 0!==b.trackRevLinkChanges?b.trackRevLinkChanges:!1,this._doc=new f(null,{arrayBasedPaths:!0}),g.extend(this),this.schema=a;for(var c in a.models)a.models.hasOwnProperty(c)&&this._registerModel(c);this.schema.on("modelRegistered",this._registerModel,this)},_registerModel:function(a){var b=[a];this.retrieve(b)||this._doc.add(b,{})},reset:function(a){this._doc.reset(a),this.schema.registerAllKeys(a)},length:function(a){var b=this.retrieve(a);return null===b?null:i(b)?b.length:Object.keys(b).length},retrieve:function(a){try{return this._doc.retrieve(a)}catch(b){return null}},transform:function(a){var b=a.op,c=a.path;if(c=this._doc.deserializePath(c),"add"!==b&&"remove"!==b&&"replace"!==b)throw new j('Cache#transform requires an "add", "remove" or "replace" operation.');if(c.length<2)throw new j("Cache#transform requires an operation with a path >= 2 segments.");!this.trackRevLinks||"remove"!==b&&"replace"!==b||this._removeRevLinks(c),this._transform(a,this.trackChanges),!this.trackRevLinks||"add"!==b&&"replace"!==b||this._addRevLinks(c,a.value)},_transform:function(a,b){if(b){var c=this._doc.transform(a,!0);this.emit("didTransform",a,c)}else this._doc.transform(a,!1)},_addRevLinks:function(a,b){if(b){var c,d,e=this,f=a[0],g=a[1];if(2===a.length)b.__rel&&Object.keys(b.__rel).forEach(function(a){c=e.schema.models[f].links[a],d=b.__rel[a],"hasMany"===c.type?Object.keys(d).forEach(function(b){e._addRevLink(c,f,g,a,b)}):e._addRevLink(c,f,g,a,d)});else if(a.length>3){var h=a[3];c=e.schema.models[f].links[h],d=5===a.length?a[4]:b,this._addRevLink(c,f,g,h,d)}}},_addRevLink:function(a,b,c,d,e){if(e&&"string"==typeof e){var f=[b,c,"__rel",d];"hasMany"===a.type&&f.push(e),f="/"+f.join("/");var g=[a.model,e,"__rev"],h=this.retrieve(g);h?(g.push(f),h=this.retrieve(g),h||this._transformRef("add",g,!0)):(h={},h[f]=!0,this._transformRef("add",g,h))}},_removeRevLinks:function(a){var b=this.retrieve(a);if(b){var c,d,e=this,f=a[0],g=a[1];if(2===a.length){if(b.__rev){var h;Object.keys(b.__rev).forEach(function(a){a=e._doc.deserializePath(a),h=4===a.length?{op:"replace",path:a,value:null}:{op:"remove",path:a};try{e._transform(h,e.trackChanges)}catch(b){console.log("Cache._transform() exception:",b,"operation:",h)}})}b.__rel&&Object.keys(b.__rel).forEach(function(a){c=e.schema.models[f].links[a],d=b.__rel[a],"hasMany"===c.type?Object.keys(d).forEach(function(b){e._removeRevLink(c,f,g,a,b)}):e._removeRevLink(c,f,g,a,d)})}else if(a.length>3){var i=a[3];c=e.schema.models[f].links[i],d=5===a.length?a[4]:b,this._removeRevLink(c,f,g,i,d)}}},_removeRevLink:function(a,b,c,d,e){if(e&&"string"==typeof e){var f=[b,c,"__rel",d];"hasMany"===a.type&&f.push(e),f="/"+f.join("/");var g=[a.model,e,"__rev",f];this._transformRef("remove",g)}},_transformRef:function(a,b,c){var d={op:a,path:b};c&&(d.value=c);try{this._transform(d,this.trackRevLinkChanges)}catch(e){}}});e["default"]=k}),define("orbit-common/lib/exceptions",["exports"],function(a){"use strict";var b=function(a){this.description=a};b.prototype={constructor:b};var c=function(a,b){this.type=a,this.record=b};c.prototype={constructor:c};var d=function(a,b,c){this.type=a,this.record=b,this.key=c};d.prototype={constructor:d};var e=function(a,b){this.type=a,this.record=b};e.prototype={constructor:e},a.OperationNotAllowed=b,a.RecordNotFoundException=c,a.LinkNotFoundException=d,a.RecordAlreadyExistsException=e}),define("orbit-common/main",["exports"],function(a){"use strict";var b={};a["default"]=b}),define("orbit-common/memory-source",["orbit/main","orbit/lib/assert","orbit/lib/objects","./source","./lib/exceptions","exports"],function(a,b,c,d,e,f){"use strict";var g=a["default"],h=b.assert,i=c.isArray,j=c.isNone,k=d["default"],l=e.RecordNotFoundException,m=e.LinkNotFoundException,n=k.extend({init:function(){h("MemorySource requires Orbit.Promise to be defined",g.Promise),this._super.apply(this,arguments)},_transform:function(a){this._transformRelatedInverseLinks(a),this._cache.transform(a)},_find:function(a,b){var c,d=this,e=this.schema.models[a],f=e.primaryKey.name;return new g.Promise(function(e,g){if(j(b))c=d._filter.call(d,a);else if(i(b)){var h,k,m;c=[],m=[];for(var n=0,o=b.length;o>n;n++)k=b[n],h=d.retrieve([a,k]),h?c.push(h):m.push(k);m.length>0&&(c=null,b=m)}else c=null!==b&&"object"==typeof b?b[f]?d.retrieve([a,b[f]]):d._filter.call(d,a,b):d.retrieve([a,b]);c?e(c):g(new l(a,b))})},_findLink:function(a,b,c){var d=this;return new g.Promise(function(e,f){b=d.getId(a,b);var g=d.retrieve([a,b]);if(g){var h;if(g.__rel&&(h=g.__rel[c])){var i=d.schema.models[a].links[c];"hasMany"===i.type&&(h=Object.keys(h))}h?e(h):f(new m(a,b,c))}else f(new l(a,b))})},_transformRelatedInverseLinks:function(a){var b,c,d,e=this,f=a.path,g=f[0];if("add"===a.op)f.length>3&&"__rel"===f[2]?(c=f[3],d=this.schema.models[g].links[c],d.inverse&&e._transformAddLink(d.model,"hasMany"===d.type?f[4]:a.value,d.inverse,f[1])):2===f.length&&(b=a.value,b.__rel&&Object.keys(b.__rel).forEach(function(a){if(d=e.schema.models[g].links[a],d.inverse)if("hasMany"===d.type)Object.keys(b.__rel[a]).forEach(function(a){e._transformAddLink(d.model,a,d.inverse,f[1])});else{var c=b.__rel[a];j(c)||e._transformAddLink(d.model,c,d.inverse,f[1])}}));else if("remove"===a.op)if(f.length>3&&"__rel"===f[2]){if(c=f[3],d=this.schema.models[g].links[c],d.inverse){var h;h="hasMany"===d.type?f[4]:this.retrieve(f),h&&e._transformRemoveLink(d.model,h,d.inverse,f[1])}}else 2===f.length&&(b=this.retrieve(f),b.__rel&&Object.keys(b.__rel).forEach(function(a){if(d=e.schema.models[g].links[a],d.inverse)if("hasMany"===d.type)Object.keys(b.__rel[a]).forEach(function(a){e._transformRemoveLink(d.model,a,d.inverse,f[1])});else{var c=b.__rel[a];j(c)||e._transformRemoveLink(d.model,c,d.inverse,f[1])}}))},_transformAddLink:function(a,b,c,d){this._cache.retrieve([a,b])&&this._cache.transform(this._addLinkOp(a,b,c,d))},_transformRemoveLink:function(a,b,c,d){var e=this._removeLinkOp(a,b,c,d);this._cache.retrieve(e.path)&&this._cache.transform(e)},_filter:function(a,b){var c,d,e,f,g,h=[];c=this.retrieve([a]);for(d in c)if(c.hasOwnProperty(d)){if(g=c[d],void 0===b)f=!0;else{f=!1;for(e in b){if(g[e]!==b[e]){f=!1;break}f=!0}}f&&h.push(g)}return h},_filterOne:function(a,b,c){var d,e,f;d=this.retrieve([a]);for(e in d)if(d.hasOwnProperty(e)&&(f=d[e],f[b]===c))return f}});f["default"]=n}),define("orbit-common/schema",["orbit/lib/objects","orbit/lib/uuid","./lib/exceptions","orbit/evented","exports"],function(a,b,c,d,e){"use strict";var f=a.Class,g=a.clone,h=(a.extend,b.uuid),i=c.OperationNotAllowed,j=d["default"],k=f.extend({init:function(a){if(a=a||{},this.modelDefaults=a.modelDefaults?a.modelDefaults:{keys:{id:{primaryKey:!0,defaultValue:h}}},a.pluralize&&(this.pluralize=a.pluralize),a.singularize&&(this.singularize=a.singularize),j.extend(this),this.models={},a.models)for(var b in a.models)a.models.hasOwnProperty(b)&&this.registerModel(b,a.models[b])},registerModel:function(a,b){var c=this._mergeModelSchemas({},this.modelDefaults,b);for(var d in c.keys){var e=c.keys[d];if(e.name=d,e.primaryKey){if(c.primaryKey)throw new i("Schema can only define one primaryKey per model");c.primaryKey=e}else e.primaryKey=!1,e.secondaryToPrimaryKeyMap={},e.primaryToSecondaryKeyMap={},c.secondaryKeys=c.secondaryKeys||{},c.secondaryKeys[d]=e;if(e.type=e.type||"string","string"!==e.type)throw new i('Model keys must be of type `"string"`')}if(!c.primaryKey||"function"!=typeof c.primaryKey.defaultValue)throw new i("Model schema ID defaultValue must be a function");this.models[a]=c,this.emit("modelRegistered",a)},normalize:function(a,b){if(b.__normalized)return b;var c=b;return c.__normalized=!0,c.__rev=c.__rev||{},c.__rel=c.__rel||{},c.__meta=c.__meta||{},this.initDefaults(a,c),c},initDefaults:function(a,b){if(!b.__normalized)throw new i("Schema.initDefaults requires a normalized record");var c=this.models[a],d=c.keys,e=c.attributes,f=c.links;this._initPrimaryKey(c,b);for(var g in d)void 0===b[g]&&(b[g]=this._defaultValue(b,d[g].defaultValue,null));if(e)for(var h in e)void 0===b[h]&&(b[h]=this._defaultValue(b,e[h].defaultValue,null));if(f)for(var j in f)void 0===b.__rel[j]&&(b.__rel[j]=this._defaultValue(b,f[j].defaultValue,"hasMany"===f[j].type?{}:null));this._mapKeys(c,b)},primaryToSecondaryKey:function(a,b,c,d){var e=this.models[a],f=e.keys[b],g=f.primaryToSecondaryKeyMap[c];return void 0===g&&d&&f.defaultValue&&(g=f.defaultValue(),this._registerKeyMapping(f,c,g)),g},secondaryToPrimaryKey:function(a,b,c,d){var e=this.models[a],f=e.keys[b],g=f.secondaryToPrimaryKeyMap[c];return void 0===g&&d&&e.primaryKey.defaultValue&&(g=e.primaryKey.defaultValue(),this._registerKeyMapping(f,g,c)),g},registerAllKeys:function(a){a&&Object.keys(a).forEach(function(b){var c=this.models[b];if(c&&c.secondaryKeys){var d=a[b];d.forEach(function(a){var b,d=a[c.primaryKey.name];Object.keys(c.secondaryKeys).forEach(function(e){if(b=a[e],void 0!==b&&null!==b){var f=c.secondaryKeys[e];this._registerKeyMapping(f,d,b)}},this)},this)}},this)},pluralize:function(a){return a+"s"},singularize:function(a){return a.lastIndexOf("s")===a.length-1?a.substr(0,a.length-1):a},_defaultValue:function(a,b,c){return void 0===b?c:"function"==typeof b?b.call(a):b},_initPrimaryKey:function(a,b){var c=a.primaryKey.name,d=b[c];if(!d&&a.secondaryKeys)for(var e=Object.keys(a.secondaryKeys),f=0,g=e.length;g>f;f++){var h=a.keys[e[f]],i=b[h.name];if(i&&(d=h.secondaryToPrimaryKeyMap[i]))return void(b[c]=d)}},_mapKeys:function(a,b){var c=b[a.primaryKey.name];a.secondaryKeys&&Object.keys(a.secondaryKeys).forEach(function(d){var e=b[d];if(e){var f=a.secondaryKeys[d];this._registerKeyMapping(f,c,e)}},this)},_registerKeyMapping:function(a,b,c){a.primaryToSecondaryKeyMap[b]=c,a.secondaryToPrimaryKeyMap[c]=b},_mergeModelSchemas:function(a){var b=Array.prototype.slice.call(arguments,1);return a.keys=a.keys||{},a.attributes=a.attributes||{},a.links=a.links||{},b.forEach(function(b){b=g(b),this._mergeModelFields(a.keys,b.keys),this._mergeModelFields(a.attributes,b.attributes),this._mergeModelFields(a.links,b.links)},this),a},_mergeModelFields:function(a,b){b&&Object.keys(b).forEach(function(c){if(b.hasOwnProperty(c)){var d=b[c];d?a[c]=d:delete a[c]}})}});e["default"]=k}),define("orbit-common/serializer",["orbit/lib/objects","orbit/lib/stubs","exports"],function(a,b,c){"use strict";var d=a.Class,e=b.required,f=d.extend({init:function(a){this.schema=a},serialize:e,deserialize:e});c["default"]=f}),define("orbit-common/source",["orbit/main","orbit/document","orbit/transformable","orbit/requestable","orbit/lib/assert","orbit/lib/stubs","orbit/lib/objects","./cache","exports"],function(a,b,c,d,e,f,g,h,i){"use strict";var j=a["default"],k=b["default"],l=c["default"],m=d["default"],n=e.assert,o=f.required,p=g.Class,q=g.expose,r=g.isNone,s=h["default"],t=p.extend({init:function(a,b){n("Source's `schema` must be specified",a),this.schema=a,b=b||{},this._cache=new s(a),q(this,this._cache,"length","reset","retrieve"),this._cache.on("didTransform",this._cacheDidTransform,this),l.extend(this),m.extend(this,["find","add","update","patch","remove","findLink","addLink","removeLink","findLinked"])},_transform:o,_find:o,_findLink:o,_findLinked:function(a,b,c,d){var e=this,f=e.schema.models[a].links[c],g=f.model;return b=this.getId(a,b),void 0===d&&(d=this.retrieveLink(a,b,c)),this._isLinkEmpty(f.type,d)?new j.Promise(function(a){a(d)}):d?this.find(g,d):this.findLink(a,b,c).then(function(a){return e._isLinkEmpty(f.type,a)?a:e.find(g,a)})},_add:function(a,b){b=b||{};var c=this.normalize(a,b),d=this.getId(a,c),e=[a,d],f=this;return this.transform({op:"add",path:e,value:c}).then(function(){return f.retrieve(e)})},_update:function(a,b){var c=this.normalize(a,b),d=this.getId(a,c),e=[a,d];return this.transform({op:"replace",path:e,value:c})},_patch:function(a,b,c,d){if(null!==b&&"object"==typeof b){var e=this.normalize(a,b);b=this.getId(a,e)}var f=[a,b].concat(k.prototype.deserializePath(c));return this.transform({op:"replace",path:f,value:d})},_remove:function(a,b){if(null!==b&&"object"==typeof b){var c=this.normalize(a,b);b=this.getId(a,c)}var d=[a,b];return this.transform({op:"remove",path:d})},_addLink:function(a,b,c,d){if(null!==b&&"object"==typeof b){var e=this.normalize(a,b);b=this.getId(a,e)}if(null!==d&&"object"==typeof d){var f=this.schema.models[a].links[c],g=this.normalize(f.model,d);d=this.getId(f.model,g)}return this.transform(this._addLinkOp(a,b,c,d))},_removeLink:function(a,b,c,d){if(null!==b&&"object"==typeof b){var e=this.normalize(a,b);b=this.getId(a,e)}if(null!==d&&"object"==typeof d){var f=this.schema.models[a].links[c],g=this.normalize(f.model,d);d=this.getId(f.model,g)}return this.transform(this._removeLinkOp(a,b,c,d))},_cacheDidTransform:function(a,b){this.didTransform(a,b)},normalize:function(a,b){return this.schema.normalize(a,b)},initDefaults:function(a,b){return this.schema.initDefaults(a,b)},getId:function(a,b){return null!==b&&"object"==typeof b?b[this.schema.models[a].primaryKey.name]:b},retrieveLink:function(a,b,c){var d=this.retrieve([a,b,"__rel",c]);return null!==d&&"object"==typeof d&&(d=Object.keys(d)),d},_isLinkEmpty:function(a,b){return"hasMany"===a&&b&&0===b.length||"hasOne"===a&&r(b)},_addLinkOp:function(a,b,c,d){var e=this.schema.models[a].links[c],f=[a,b,"__rel",c];return"hasMany"===e.type&&(f.push(d),d=!0),{op:"add",path:f,value:d}},_removeLinkOp:function(a,b,c,d){var e=this.schema.models[a].links[c],f=[a,b,"__rel",c];return"hasMany"===e.type&&f.push(d),{op:"remove",path:f}}});i["default"]=t});