/
json2caml.min.js
2 lines (2 loc) · 3.37 KB
/
json2caml.min.js
1
2
/*! json2caml v0.10.0 | (c) Niklas Engblom | MIT License */
"use strict";var _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};!function(){function e(e,a){if(!e||"object"!=("undefined"==typeof e?"undefined":_typeof(e))||e instanceof Array)return void console.error("jsonToCaml only accepts object as a paramter.");a=Object.assign({includeViewAndQuery:!0},a);var t=e,o=u("view",t);o&&(t=o);var c=u("query",t);if(c&&(t=c),!t||!s())return console.error("Query is not valid. Make sure you have added all required nodes."),null;var i="",l=u("orderBy",t);if(l){var d=[];if(l instanceof Array)for(var m=0,p=l.length;m<p;m++)d.push(r({name:u("name",l[m]),ascending:!!u("ascending",l[m])}));else d.push(r({name:u("name",l),ascending:!!u("ascending",l)}));var y="".concat("<OrderBy>",d.join(""),"</OrderBy>");i+=y}var f=u("where",t);return f&&(i+="<Where>"+n(f)+"</Where>"),a.includeViewAndQuery?"<View><Query>"+i+"</Query></View>":i}function n(e){var o,c,s=u("operator",e).toLowerCase();switch(s){case"and":o="<And>{child}</And>";break;case"or":o="<Or>{child}</Or>";break;case"eq":case"neq":case"gt":case"geq":case"lt":case"leq":case"contains":case"includes":var i=s.charAt(0).toUpperCase()+s.substr(1);o=a({nodeName:i,fieldName:u("name",e),type:u("type",e),value:u("value",e)});break;case"in":var l=u("type",e);o="".concat("<In>",r({name:u("name",e)}),"<Values>",u("values",e).map(function(e){return t({type:l,value:e})}).join(""),"</Values>","</In>");break;case"isnotnull":case"isnull":var i="isnull"==s?"IsNull":"IsNotNull";o="".concat("<",i,">",r({name:u("name",e)}),"</",i,">");break;case"beginswith":case"notincludes":var i="beginswith"==s?"BeginsWith":"NotIncludes";o=a({nodeName:i,fieldName:u("name",e),type:u("type",e),value:u("value",e)});break;case"daterangesoverlap":o="".concat("<DateRangesOverlap>",u("fieldRefs",e).map(function(e){return r({name:e})}).join(""),t({type:"DateTime",value:"Now"}),"</DateRangesOverlap>");break;case"membership":o="".concat('<Membership Type="',u("type",e),'">',r({name:u("name",e)}),"</Membership>");break;default:throw new Error("Invalid operator: "+s)}if(c=u("children",e)){if(2!=c.length)throw new Error("Children property must have (only) two objects. Used operator: "+s+".");o=o.replace("{child}",[n(c[0]),n(c[1])].join(""))}return o}function a(e){return"".concat("<",e.nodeName,">",r({name:e.fieldName}),t({type:e.type,value:e.value}),"</",e.nodeName,">")}function r(e){return e.nodeName="FieldRef",e.closeTag=!0,c(e)}function t(e){var n;switch(e.type){case"Text":n="<![CDATA["+e.value+"]]>";break;case"DateTime":n=o(e.value);break;default:n=e.value}return"".concat('<Value Type="',e.type,'"',e.includeTimeValue?' IncludeTimeValue="true"':"",">",n,"</Value>")}function o(e){return"now"==e.toLowerCase()?e="<Now />":"today"==e.toLowerCase()?e="<Today />":"month"==e.toLowerCase()&&(e="<Month />"),e}function c(e){return"".concat("<",e.nodeName," ",Object.keys(e).map(function(n){return"nodeName"==n||"closeTag"==n?"":"".concat(n.charAt(0).toUpperCase(),n.substr(1),'="',e[n],'" ')}).join(""),e.closeTag?"/>":"")}function u(e,n){var a=Object.keys(n).filter(function(n){return n.toLowerCase()==e.toLowerCase()});return a.length?n[a[0]]:void 0}function s(){return!0}"undefined"!=typeof module&&module.exports?module.exports=e:window.json2caml=e}();