forked from dgeb/orbit-builds
-
Notifications
You must be signed in to change notification settings - Fork 0
/
orbit-common-jsonapi.amd.min.js
1 lines (1 loc) · 11.6 KB
/
orbit-common-jsonapi.amd.min.js
1
define("orbit-common/jsonapi-source",["orbit/main","orbit/lib/assert","orbit/lib/objects","./source","./serializer","./jsonapi-serializer","./lib/exceptions","exports"],function(a,b,c,d,e,f,g,h){"use strict";var i=a["default"],j=b.assert,k=c.isArray,l=d["default"],m=e["default"],n=f["default"],o=g.OperationNotAllowed,p=(g.RecordNotFoundException,g.RecordAlreadyExistsException,l.extend({init:function(a,b){j("JSONAPISource requires Orbit.Promise be defined",i.Promise),j("JSONAPISource requires Orbit.ajax be defined",i.ajax),this._super.apply(this,arguments),b=b||{},this.namespace=b.namespace||this.namespace,this.host=b.host||this.host,this.headers=b.headers||this.headers,this.usePatch=void 0!==b.usePatch?b.usePatch:this.usePatch,this.SerializerClass=b.SerializerClass||this.SerializerClass,this.SerializerClass&&this.SerializerClass.wrappedFunction&&(this.SerializerClass=this.SerializerClass.wrappedFunction),this.serializer=new this.SerializerClass(a),j("Serializer must be an instance of OC.Serializer",this.serializer instanceof m)},namespace:null,host:null,headers:null,SerializerClass:n,usePatch:!1,_transform:function(a){var b=this,c=a.op,d=a.path;if(d.length>2){if("__rel"!==d[2])return b._transformUpdateAttribute(a);if("add"===c)return b._transformAddLink(a);if("remove"===c)return b._transformRemoveLink(a)}else if(d.length>1){if("add"===c)return b._transformAdd(a);if("replace"===c)return b._transformReplace(a);if("remove"===c)return b._transformRemove(a)}throw new o("JSONAPISource#transform could not process operation: "+a.op+" with path: "+a.path.join("/"))},_find:function(a,b){if(!b||"number"!=typeof b&&"string"!=typeof b){if(b&&k(b))return this._findMany(a,b);var c=this.resourceKey(a);return b&&"object"==typeof b&&b[c]?this._findOne(a,b):this._findQuery(a,b)}return this._findOne(a,b)},_findLink:function(a,b,c){var d=this;return this.ajax(this.resourceLinkURL(a,b,c),"GET").then(function(b){var e=d.schema.models[a].links[c],f=d.deserializeLink(e.model,b);return d.settleTransforms().then(function(){return f})})},_transformAdd:function(a){return this.usePatch?this._transformAddWithPatch(a):this._transformAddStd(a)},_transformAddStd:function(a){var b=this,c=a.path[0],d=a.path[1],e=this.serialize(c,a.value);return this.ajax(this.resourceURL(c),"POST",{data:e}).then(function(a){b.deserialize(c,d,a)})},_transformAddWithPatch:function(a){var b=this,c=a.path[0],d=a.path[1],e={op:"add",path:"/-",value:this.serializer.serializeRecord(c,a.value)};return this.ajax(this.resourceURL(c),"PATCH",{data:[e]}).then(function(e){e&&k(e)?b.deserialize(c,d,e[0]):b._transformCache(a)})},_transformReplace:function(a){return this.usePatch?this._transformReplaceWithPatch(a):this._transformReplaceStd(a)},_transformReplaceStd:function(a){var b=this,c=a.path[0],d=a.path[1],e=a.value,f=this.serialize(c,e);return this.ajax(this.resourceURL(c,d),"PUT",{data:f}).then(function(a){b.deserialize(c,d,a)})},_transformReplaceWithPatch:function(a){var b=this,c=a.path[0],d=a.path[1],e=a.value,f={op:"replace",path:"/",value:this.serializer.serializeRecord(c,e)};return this.ajax(this.resourceURL(c,d),"PATCH",{data:[f]}).then(function(e){e&&k(e)?b.deserialize(c,d,e[0]):b._transformCache(a)})},_transformRemove:function(a){return this.usePatch?this._transformRemoveWithPatch(a):this._transformRemoveStd(a)},_transformRemoveStd:function(a){var b=this,c=a.path[0],d=a.path[1];return this.ajax(this.resourceURL(c,d),"DELETE").then(function(){b._transformCache({op:"remove",path:[c,d]})})},_transformRemoveWithPatch:function(a){var b=this,c=a.path[0],d=a.path[1],e={op:"remove",path:"/"};return this.ajax(this.resourceURL(c,d),"PATCH",{data:[e]}).then(function(){b._transformCache(a)})},_transformAddLink:function(a){return this.usePatch?this._transformAddLinkWithPatch(a):this._transformAddLinkStd(a)},_transformAddLinkStd:function(a){var b=this,c=a.path[0],d=a.path[1],e=a.path[3],f=a.path[4]||a.value,g=this.schema.models[c].links[e],h=g.model,i=this.resourceType(h),j=this.resourceId(h,f),k="hasMany"===g.type?"POST":"PUT",l={};return l[i]=j,this.ajax(this.resourceLinkURL(c,d,e),k,{data:l}).then(function(){b._transformCache(a)})},_transformAddLinkWithPatch:function(a){var b,c=this,d=a.path[0],e=a.path[1],f=a.path[3],g=a.path[4]||a.value,h=this.schema.models[d].links[f],i=h.model,j=this.resourceId(i,g);return b="hasMany"===h.type?{op:"add",path:"/-",value:j}:{op:"replace",path:"/",value:j},this.ajax(this.resourceLinkURL(d,e,f),"PATCH",{data:[b]}).then(function(){c._transformCache(a)})},_transformRemoveLink:function(a){return this.usePatch?this._transformRemoveLinkWithPatch(a):this._transformRemoveLinkStd(a)},_transformRemoveLinkStd:function(a){var b=this,c=a.path[0],d=a.path[1],e=a.path[3],f=a.path[4];return this.ajax(this.resourceLinkURL(c,d,e,f),"DELETE").then(function(){b._transformCache(a)})},_transformRemoveLinkWithPatch:function(a){var b,c=this,d=a.path[0],e=a.path[1],f=a.path[3],g=this.schema.models[d].links[f];if("hasMany"===g.type){var h=a.path[4],i=g.model,j=this.resourceId(i,h);b={op:"remove",path:"/"+j}}else b={op:"remove",path:"/"};return this.ajax(this.resourceLinkURL(d,e,f),"PATCH",{data:[b]}).then(function(){c._transformCache(a)})},_transformUpdateAttribute:function(a){return this.usePatch?this._transformUpdateAttributeWithPatch(a):this._transformUpdateAttributeStd(a)},_transformUpdateAttributeStd:function(a){var b=this,c=a.path[0],d=a.path[1],e=a.path[2],f={};f[e]=a.value;var g={};this.serializer.serializeAttribute(c,f,e,g);var h={},i=this.resourceType(c);return h[i]=g,this.ajax(this.resourceURL(c,d),"PUT",{data:h}).then(function(){b._transformCache(a)})},_transformUpdateAttributeWithPatch:function(a){var b=this,c=a.path[0],d=a.path[1],e=a.path[2],f={op:"replace",path:"/"+e,value:a.value};return this.ajax(this.resourceURL(c,d),"PATCH",{data:[f]}).then(function(){b._transformCache(a)})},_addRecordsToCache:function(a,b){var c=this;b.forEach(function(b){c._addRecordToCache(a,b)})},_addRecordToCache:function(a,b){this._transformCache({op:"add",path:[a,this.getId(a,b)],value:b})},_findOne:function(a,b){var c=this;return this.ajax(this.resourceURL(a,b),"GET").then(function(b){var d=c.deserialize(a,null,b);return c.settleTransforms().then(function(){return d})})},_findMany:function(a,b){var c=this;return this.ajax(this.resourceURL(a,b),"GET").then(function(b){var d=c.deserialize(a,null,b);return c.settleTransforms().then(function(){return d})})},_findQuery:function(a,b){var c=this;return this.ajax(this.resourceURL(a),"GET",{data:b}).then(function(b){var d=c.deserialize(a,null,b);return c.settleTransforms().then(function(){return d})})},_transformCache:function(a){var b;b="add"===a.op?a.path.slice(0,a.path.length-1):a.path,this.retrieve(b)?this._cache.transform(a):"replace"===a.op?(a.op="add",this._transformCache(a)):this.didTransform(a,[])},ajax:function(a,b,c){var d=this;return new i.Promise(function(e,f){if(c=c||{},c.url=a,c.type=b,c.dataType="json",c.context=d,c.data&&"GET"!==b&&(c.contentType||(c.contentType="PATCH"===b?"application/json-patch+json; charset=utf-8":"application/vnd.api+json; charset=utf-8"),c.data=JSON.stringify(c.data)),d.ajaxHeaders){var g=d.ajaxHeaders();c.beforeSend=function(a){for(var b in g)g.hasOwnProperty(b)&&a.setRequestHeader(b,g[b])}}c.success=function(a){e(a)},c.error=function(a){a&&(a.then=null),f(a)},i.ajax(c)})},ajaxHeaders:function(){return this.headers},resourceNamespace:function(){return this.namespace},resourceHost:function(){return this.host},resourceURL:function(a,b){var c=(this.resourceType(a),this.resourceHost(a)),d=this.resourceNamespace(a),e=[];return c&&e.push(c),d&&e.push(d),e.push(this.resourcePath(a)),b&&e.push(this.resourceIdURLSegment(a,b)),e=e.join("/"),c||(e="/"+e),e},resourceLinkURL:function(a,b,c,d){var e=this.resourceURL(a,b);if(e+="/links/"+c,d){var f=this.schema.models[a].links[c];e+="/"+this.resourceIdURLSegment(f.model,d)}return e},resourceIdURLSegment:function(a,b){if(k(b)){var c=[];return b.forEach(function(b){c.push(this.resourceId(a,b))},this),c.join(",")}return this.resourceId(a,b)},resourcePath:function(a){return this.schema.pluralize(a)},resourceId:function(a,b){return this.serializer.resourceId(a,b)},resourceKey:function(a){return this.serializer.resourceKey(a)},resourceType:function(a){return this.serializer.resourceType(a)},serialize:function(a,b){return this.serializer.serialize(a,b)},deserialize:function(a,b,c){var d=this.serializer.deserialize(a,b,c),e=d[a];return this._cache&&(k(e)?this._addRecordsToCache(a,e):this._addRecordToCache(a,e),d.linked&&Object.keys(d.linked).forEach(function(a){var b=d.linked[a];this._addRecordsToCache(a,b)},this)),e},deserializeLink:function(a,b){return this.serializer.deserializeLink(a,b)}}));h["default"]=p}),define("orbit-common/jsonapi-serializer",["./serializer","orbit/lib/objects","exports"],function(a,b,c){"use strict";var d=a["default"],e=(b.clone,b.isArray),f=d.extend({resourceKey:function(){return"id"},resourceType:function(a){return this.schema.pluralize(a)},typeFromResourceType:function(a){return this.schema.singularize(a)},resourceId:function(a,b){var c=this.schema.models[a].primaryKey.name,d=this.resourceKey(a);if(null!==b&&"object"==typeof b){if(b[d])return b[d];b=b[c]}return d===c?b:this.schema.primaryToSecondaryKey(a,d,b)},idFromResourceId:function(a,b){var c=this.schema.models[a].primaryKey,d=c.name,e=this.resourceKey(a);if(null!==b&&"object"==typeof b){if(b[d])return b[d];b=b[e]}var f;return f=e===d?b:this.schema.secondaryToPrimaryKey(a,e,b,!0)},serialize:function(a,b){var c={},d=this.resourceType(a);return c[d]=e(b)?this.serializeRecords(a,b):this.serializeRecord(a,b),c},serializeRecords:function(a,b){var c=[];return b.forEach(function(b){c.push(this.serializeRecord(a,b))},this),c},serializeRecord:function(a,b){var c={};return this.serializeKeys(a,b,c),this.serializeAttributes(a,b,c),this.serializeLinks(a,b,c),c},serializeKeys:function(a,b,c){var d=(this.schema.models[a],this.resourceKey(a)),e=b[d];e&&(c[d]=e)},serializeAttributes:function(a,b,c){var d=this.schema.models[a];Object.keys(d.attributes).forEach(function(d){this.serializeAttribute(a,b,d,c)},this)},serializeAttribute:function(a,b,c,d){d[c]=b[c]},serializeLinks:function(a,b,c){var d=this.schema.models[a],e=Object.keys(d.links);e.length>0&&(c.links={},e.forEach(function(a){var e=d.links[a],f=b.__rel[a];c.links[a]="hasMany"===e.type?Object.keys(f):f},this))},deserialize:function(a,b,c){var d={},f=(this.schema,this.resourceType(a)),g=c[f];d[a]=e(g)?this.deserializeRecords(a,b,g):this.deserializeRecord(a,b,g);var h=c.linked;if(h){var i,j;d.linked={},Object.keys(h).forEach(function(a){i=this.typeFromResourceType(a),j=h[a],d.linked[i]=this.deserializeRecords(i,null,j)},this)}return this.assignLinks(a,d),d},deserializeLink:function(a,b){var c=this.resourceType(a);return b[c]},deserializeRecords:function(a,b,c){var d=[];return c.forEach(function(c,e){var f=b&&b[e]?b[e]:null;d.push(this.deserializeRecord(a,f,c))},this),d},deserializeRecord:function(a,b,c){return b&&(c[this.schema.models[a].primaryKey.name]=b),this.schema.normalize(a,c)},assignLinks:function(a,b){var c=b[a],d=b.linked;e(c)?this.assignLinksToRecords(a,c):this.assignLinksToRecord(a,c),d&&Object.keys(d).forEach(function(a){this.assignLinksToRecords(a,d[a])},this)},assignLinksToRecords:function(a,b){b.forEach(function(b){this.assignLinksToRecord(a,b)},this)},assignLinksToRecord:function(a,b){if(b.links){b.__meta.links=b.__meta.links||{};var c,d,f,g=b.__meta.links,h=this.schema;Object.keys(b.links).forEach(function(i){if(d=b.links[i],c=h.models[a].links[i],"hasMany"===c.type&&e(d)){b.__rel[i]=b.__rel[i]||[];{b.__rel[i]}d.forEach(function(a){f=this.idFromResourceId(c.model,a),b.__rel[i][f]=f},this)}else"hasOne"!==c.type||"string"!=typeof d&&"number"!=typeof d?g[i]=d:(f=this.idFromResourceId(c.model,d),b.__rel[i]=f)},this),delete b.links}}});c["default"]=f});