UNPKG

jaydata

Version:

Cross-platform HTML5 data-management, JavaScript Language Query (JSLQ) support for OData, SQLite, WebSQL, IndexedDB, YQL and Facebook (packaged for Node.JS)

17 lines (16 loc) 35.7 kB
// JayData 1.5.10 // Dual licensed under MIT and GPL v2 // Copyright JayStack Technologies (http://jaydata.org/licensing) // // JayData is a standards-based, cross-platform Javascript library and a set of // practices to access and manipulate data from various online and offline sources. // // Credits: // Hajnalka Battancs, Dániel József, János Roden, László Horváth, Péter Nochta // Péter Zentai, Róbert Bónay, Szabolcs Czinege, Viktor Borza, Viktor Lázár, // Zoltán Gyebrovszki, Gábor Dolla // // More info: http://jaydata.org !function(e){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define("jaydata/webapi",["jaydata/core"],e);else{var t;t="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,t.$data=e()}}(function(){return function e(t,a,r){function i(s,o){if(!a[s]){if(!t[s]){var p="function"==typeof require&&require;if(!o&&p)return p(s,!0);if(n)return n(s,!0);var d=new Error("Cannot find module '"+s+"'");throw d.code="MODULE_NOT_FOUND",d}var l=a[s]={exports:{}};t[s][0].call(l.exports,function(e){var a=t[s][1][e];return i(a?a:e)},l,l.exports,e,t,a,r)}return a[s].exports}for(var n="function"==typeof require&&require,s=0;s<r.length;s++)i(r[s]);return i}({1:[function(e,t,a){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}var i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol?"symbol":typeof e},n=e("jaydata/core"),s=r(n);s["default"].WebApiConverter={fromDb:{"$data.Byte":s["default"].Container.proxyConverter,"$data.SByte":s["default"].Container.proxyConverter,"$data.Decimal":s["default"].Container.proxyConverter,"$data.Float":s["default"].Container.proxyConverter,"$data.Int16":s["default"].Container.proxyConverter,"$data.Int64":s["default"].Container.proxyConverter,"$data.Integer":s["default"].Container.proxyConverter,"$data.Int32":s["default"].Container.proxyConverter,"$data.Number":s["default"].Container.proxyConverter,"$data.Date":function(e){return e?e instanceof Date?e:"/Date("===e.substring(0,6)?new Date(parseInt(e.substr(6))):(-1!==e.indexOf("Z")||e.match("T.*[+-]")||(e+="Z"),new Date(e)):e},"$data.DateTimeOffset":function(e){return e?e instanceof Date?e:"/Date("===e.substring(0,6)?new Date(parseInt(e.substr(6))):(-1!==e.indexOf("Z")||e.match("T.*[+-]")||(e+="Z"),new Date(e)):e},"$data.Time":s["default"].Container.proxyConverter,"$data.String":s["default"].Container.proxyConverter,"$data.Boolean":s["default"].Container.proxyConverter,"$data.Blob":function(e){if("string"!=typeof e)return e;try{return s["default"].Container.convertTo(atob(e),"$data.Blob")}catch(t){return e}},"$data.Object":function(e){return void 0===e?new s["default"].Object:"string"==typeof e?JSON.parse(e):e},"$data.Array":function(e){return void 0===e?new s["default"].Array:e instanceof s["default"].Array?e:JSON.parse(e)},"$data.GeographyPoint":function(e){return e&&"object"===("undefined"==typeof e?"undefined":i(e))&&Array.isArray(e.coordinates)?new s["default"].GeographyPoint(e.coordinates):e},"$data.Guid":function(e){return e?e.toString():e}},toDb:{"$data.Entity":s["default"].Container.proxyConverter,"$data.Byte":s["default"].Container.proxyConverter,"$data.SByte":s["default"].Container.proxyConverter,"$data.Decimal":s["default"].Container.proxyConverter,"$data.Float":s["default"].Container.proxyConverter,"$data.Int16":s["default"].Container.proxyConverter,"$data.Int64":s["default"].Container.proxyConverter,"$data.ObjectID":s["default"].Container.proxyConverter,"$data.Integer":s["default"].Container.proxyConverter,"$data.Int32":s["default"].Container.proxyConverter,"$data.Number":s["default"].Container.proxyConverter,"$data.Date":function(e){return e?e.toISOString().replace("Z",""):e},"$data.Time":s["default"].Container.proxyConverter,"$data.DateTimeOffset":function(e){return e?e.toISOString():e},"$data.String":s["default"].Container.proxyConverter,"$data.Boolean":s["default"].Container.proxyConverter,"$data.Blob":function(e){return e?s["default"].Blob.toBase64(e):e},"$data.Object":s["default"].Container.proxyConverter,"$data.Array":s["default"].Container.proxyConverter,"$data.GeographyPoint":s["default"].Container.proxyConverter,"$data.Guid":s["default"].Container.proxyConverter},escape:{"$data.Entity":function(e){return JSON.stringify(e)},"$data.Integer":s["default"].Container.proxyConverter,"$data.Int32":s["default"].Container.proxyConverter,"$data.Number":s["default"].Container.proxyConverter,"$data.Int16":s["default"].Container.proxyConverter,"$data.Byte":s["default"].Container.proxyConverter,"$data.SByte":s["default"].Container.proxyConverter,"$data.Decimal":function(e){return e?e+"m":e},"$data.Float":function(e){return e?e+"f":e},"$data.Int64":function(e){return e?e+"L":e},"$data.Time":function(e){return e?"time'"+e+"'":e},"$data.DateTimeOffset":function(e){return e?"datetimeoffset'"+e+"'":e},"$data.Date":function(e){return e?"datetime'"+e+"'":e},"$data.String":function(e){return"string"==typeof e?"'"+e.replace(/'/g,"''")+"'":e},"$data.ObjectID":function(e){return"string"==typeof e?"'"+e.replace(/'/g,"''")+"'":e},"$data.Boolean":function(e){return"boolean"==typeof e?e.toString():e},"$data.Blob":function(e){return e?"X'"+s["default"].Blob.toHexString(s["default"].Container.convertTo(atob(e),s["default"].Blob))+"'":e},"$data.Object":function(e){return JSON.stringify(e)},"$data.Array":function(e){return JSON.stringify(e)},"$data.GeographyPoint":function(e){return e?s["default"].GeographyBase.stringifyToUrl(e):e},"$data.Guid":function(e){return e?"guid'"+e.toString()+"'":e}}}},{"jaydata/core":"jaydata/core"}],2:[function(e,t,a){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}var i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol?"symbol":typeof e},n=e("jaydata/core"),s=r(n);(0,n.$C)("$data.Expressions.ExpressionWalker",s["default"].Expressions.EntityExpressionVisitor,null,{constructor:function(e){this.Visit=function(t,a){var r,i=t;this.canVisit(t)&&(e.VisitExpressionNode&&e.VisitExpressionNode.apply(e,arguments),r="Visit"+t.getType().name,r in e&&(i=e[r].apply(e,arguments)));var n=arguments;if(i!==t&&(n=[i,a]),i=s["default"].Expressions.EntityExpressionVisitor.prototype.Visit.apply(this,n),n=[i,a],this.canVisit(i)){var o=i.getType().name;e.MonitorExpressionNode&&e.MonitorExpressionNode.apply(e,n),r="Monitor"+o,r in e&&e[r].apply(e,n),e.MutateExpressionNode&&e.MutateExpressionNode.apply(e,n),r="Mutate"+o,r in e&&(i=e[r].apply(e,n))}return i}}}),s["default"].Expressions.ExpressionNode.prototype.walk=function(e,t){var a=n.Container.createExpressionWalker(e);return a.Visit(this,t)},s["default"].Expressions.ExpressionNode.prototype.dig=function(e){var t=[];return this.walk({MonitorExpressionNode:function(a){var r;(r=e(a))&&t.push(r)}}),t},(0,n.$C)("$data.storageProviders.webApi.webApiProvider",s["default"].StorageProviderBase,null,{constructor:function(e,t){this.context=t,this.providerConfiguration=s["default"].typeSystem.extend({dbCreation:s["default"].storageProviders.DbCreationType.DropTableIfChanged,apiUrl:"/odata.svc",serviceUrl:"",maxDataServiceVersion:"2.0",user:null,password:null,withCredentials:!1,enableJSONP:!1},e),this.context&&this.context._buildDbType_generateConvertToFunction&&this.buildDbType_generateConvertToFunction&&(this.context._buildDbType_generateConvertToFunction=this.buildDbType_generateConvertToFunction),this.context&&this.context._buildDbType_modifyInstanceDefinition&&this.buildDbType_modifyInstanceDefinition&&(this.context._buildDbType_modifyInstanceDefinition=this.buildDbType_modifyInstanceDefinition)},initializeStore:function(e){e=s["default"].PromiseHandlerBase.createCallbackSettings(e),e.success(this.context)},buildDbType_generateConvertToFunction:function(e,t){return function(a,r){var i=new e.PhysicalType;return i.entityState=a.entityState,e.PhysicalType.memberDefinitions.getPublicMappedProperties().forEach(function(e){i.initData[e.name]=a[e.name]},this),e.Associations&&e.Associations.forEach(function(e){if("*"==e.FromMultiplicity&&"0..1"==e.ToMultiplicity||"0..1"==e.FromMultiplicity&&"1"==e.ToMultiplicity||"$$unbound"==e.FromMultiplicity){var o=a[e.FromPropertyName];if(null!==o&&void 0!==o)if(o instanceof s["default"].Array)i.initData[e.FromPropertyName]=i[e.FromPropertyName]||[],o.forEach(function(t){var a=r.indexOf(t);0>a&&n.Guard.raise("Dependency graph error"),i.initData[e.FromPropertyName].push({__metadata:{uri:"$"+(a+1)}})},this);else if(o.entityState===s["default"].EntityState.Modified){var p=t._storageModel.getStorageModel(o.getType()),d=p.TableName,l="("+t.storageProvider.getEntityKeysValue({data:o,entitySet:t.getEntitySetFromElementType(o.getType())})+")";i.initData[e.FromPropertyName]={__metadata:{uri:d+l}}}else{var u=r.indexOf(o);0>u&&n.Guard.raise("Dependency graph error"),i.initData[e.FromPropertyName]={__metadata:{uri:"$"+(u+1)}}}}},this),e.ComplexTypes&&e.ComplexTypes.forEach(function(e){i.initData[e.FromPropertyName]=a[e.FromPropertyName]},this),i}},buildDbType_modifyInstanceDefinition:function(){},executeQuery:function(e,t){function a(e){var t=s["default"].Expressions,a=0,i=e.expression.dig(function(r){if(r instanceof t.SimpleBinaryExpression&&a++,"equal"==r.nodeType){var i=null,n=null;if(r.left instanceof t.ConstantExpression&&(i=r.left),r.left instanceof t.EntityFieldExpression&&(n=r.left),r.right instanceof t.ConstantExpression&&(i=r.right),r.right instanceof t.EntityFieldExpression&&(n=r.right),n&&i&&n.source.entityType===e.defaultType&&n.selector.memberName==e.defaultType.memberDefinitions.getKeyProperties()[0].name)return i.value}});1==a&&1==i.length&&(r.queryText="/"+e.context.getEntitySetFromElementType(e.defaultType).tableName+"/"+i[0].toString())}t=s["default"].PromiseHandlerBase.createCallbackSettings(t);var r;try{r=this._compile(e)}catch(i){return void t.error(i)}this.context;a(e);var n={url:this.providerConfiguration.apiUrl+r.queryText,type:r.method,success:function(a){t.success&&(e.rawDataList="string"==typeof a?[{cnt:a}]:a,t.success(e))},error:function(){console.dir(arguments),t.error(arguments)}};this.appendBasicAuth(n,this.providerConfiguration.user,this.providerConfiguration.password,this.providerConfiguration.withCredentials),this.context.prepareRequest.call(this,n),s["default"].ajax(n)},_compile:function(e,t){var a=new s["default"].storageProviders.webApi.webApiCompiler,r=a.compile(e);return r},saveChanges:function(e,t){if(t.length>0){var a=this.buildIndependentBlocks(t);this.saveInternal(a,0,e)}else e.success(0)},saveInternal:function(e,t,a){(this.providerConfiguration.disableBatch===!0||"object"===i(s["default"].defaults)&&s["default"].defaults.disableBatch===!0)&&"function"==typeof this._saveRestMany?this._saveRestMany(e,t,a):e.length>1||1==e.length&&e[0].length>1?this._saveBatch(e,t,a):this._saveRest(e,t,a)},_saveRest:function(e,t,a){for(var r,i=[],o=0;o<e.length;o++)for(var p=0;p<e[o].length;p++){switch(i.push(e[o][p].data),r={url:this.providerConfiguration.apiUrl+"/",headers:{},contentType:"application/json",dataType:"json"},e[o][p].data.entityState){case s["default"].EntityState.Unchanged:continue;case s["default"].EntityState.Added:r.type="POST",r.url+=e[o][p].entitySet.tableName,r.data=this.save_getInitData(e[o][p],i);break;case s["default"].EntityState.Modified:r.type="PUT",r.url+=e[o][p].entitySet.tableName,r.url+="/"+this.getEntityKeysValue(e[o][p]),this.save_addConcurrencyHeader(e[o][p],r.headers),r.data=this.save_getInitData(e[o][p],i);break;case s["default"].EntityState.Deleted:r.type="DELETE",r.url+=e[o][p].entitySet.tableName,r.url+="/"+this.getEntityKeysValue(e[o][p]),this.save_addConcurrencyHeader(e[o][p],r.headers);break;default:n.Guard.raise(new n.Exception("Not supported Entity state"))}r.data&&(r.data=JSON.stringify(r.data))}var d=this;r.success=function(e,t,r){var s=r.status;if(s>=200&&300>s){if(e){var o=i[0];o.getType().memberDefinitions.getPublicMappedProperties().forEach(function(t){var a=n.Container.resolveType(t.type);if(t.computed||t.key||!a.isAssignableTo&&!t.inverseProperty){var r=d.fieldConverter.fromDb[n.Container.resolveName(t.type)];o[t.name]=r?r(e[t.name]):e[t.name]}},this)}a.success&&a.success(i.length)}else a.error(response)},r.error=function(e){a.error(new n.Exception((e.response||{}).body,e.message,e))},this.appendBasicAuth(r,this.providerConfiguration.user,this.providerConfiguration.password,this.providerConfiguration.withCredentials),this.context.prepareRequest.call(this,r),s["default"].ajax(r)},_saveBatch:function(e,t,a){for(var r=[],i=[],o=0;o<e.length;o++)for(var p=0;p<e[o].length;p++){i.push(e[o][p].data);var d={};switch(d.headers={"Content-Id":i.length},e[o][p].data.entityState){case s["default"].EntityState.Unchanged:continue;case s["default"].EntityState.Added:d.method="POST",d.requestUri=e[o][p].entitySet.tableName,d.data=this.save_getInitData(e[o][p],i);break;case s["default"].EntityState.Modified:d.method="MERGE",d.requestUri=e[o][p].entitySet.tableName,d.requestUri+="("+this.getEntityKeysValue(e[o][p])+")",this.save_addConcurrencyHeader(e[o][p],d.headers),d.data=this.save_getInitData(e[o][p],i);break;case s["default"].EntityState.Deleted:d.method="DELETE",d.requestUri=e[o][p].entitySet.tableName,d.requestUri+="("+this.getEntityKeysValue(e[o][p])+")",this.save_addConcurrencyHeader(e[o][p],d.headers);break;default:n.Guard.raise(new n.Exception("Not supported Entity state"))}r.push(d)}var l=this,u=[{requestUri:this.providerConfiguration.apiUrl+"/$batch",method:"POST",data:{__batchRequests:[{__changeRequests:r}]}},function(e,t){if(202==t.statusCode){for(var r=e.__batchResponses[0].__changeResponses,o=[],p=0;p<r.length;p++)if(r[p].statusCode>200&&r[p].statusCode<300){var d=i[p];if(204==r[p].statusCode){if(r[p].headers.ETag||r[p].headers.Etag||r[p].headers.etag){var u=d.getType().memberDefinitions.getPublicMappedProperties().filter(function(e){return e.concurrencyMode===s["default"].ConcurrencyMode.Fixed});u&&u[0]&&(d[u[0].name]=r[p].headers.ETag||r[p].headers.Etag||r[p].headers.etag)}continue}d.getType().memberDefinitions.getPublicMappedProperties().forEach(function(e){if(e.computed||e.key)if(e.concurrencyMode===s["default"].ConcurrencyMode.Fixed)d[e.name]=r[p].headers.ETag||r[p].headers.Etag||r[p].headers.etag;else{var t=l.fieldConverter.fromDb[n.Container.resolveType(e.type)];d[e.name]=t?t(r[p].data[e.name]):r[p].data[e.name]}},this)}else o.push(new n.Exception((r[p].response||{}).body,r[p].message,r[p]));o.length>0?a.error(new n.Exception("See inner exceptions","Batch failed",o)):a.success&&a.success(i.length)}else a.error(t)},function(e){a.error(new n.Exception((e.response||{}).body,e.message,e))},OData.batchHandler];this.appendBasicAuth(u[0],this.providerConfiguration.user,this.providerConfiguration.password,this.providerConfiguration.withCredentials),this.context.prepareRequest.call(this,u),OData.request.apply(this,u)},save_getInitData:function(e,t){e.physicalData=this.context._storageModel.getStorageModel(e.data.getType()).PhysicalType.convertTo(e.data,t);var a={};return e.physicalData.getType().memberDefinitions.asArray().forEach(function(t){(t.kind==s["default"].MemberTypes.navProperty||t.kind==s["default"].MemberTypes.complexProperty||t.kind==s["default"].MemberTypes.property&&!t.notMapped)&&(a[t.name]=e.physicalData[t.name])},this),a},save_addConcurrencyHeader:function(e,t){var a=e.data.getType().memberDefinitions.getPublicMappedProperties().filter(function(e){return e.concurrencyMode===s["default"].ConcurrencyMode.Fixed});a&&a[0]&&(t["If-Match"]=e.data[a[0].name])},getTraceString:function(e){this._compile(e);return e},supportedDataTypes:{value:[s["default"].Integer,s["default"].String,s["default"].Number,s["default"].Blob,s["default"].Boolean,s["default"].Date,s["default"].Object,s["default"].GeographyPoint,s["default"].Guid,s["default"].Byte,s["default"].SByte,s["default"].Decimal,s["default"].Float,s["default"].Int16,s["default"].Int32,s["default"].Int64,s["default"].Time,s["default"].DateTimeOffset],writable:!1},supportedBinaryOperators:{value:{equal:{mapTo:"eq",dataType:"boolean",allowedIn:[s["default"].Expressions.FilterExpression,s["default"].Expressions.OrderExpression]},notEqual:{mapTo:"ne",dataType:"boolean",allowedIn:[s["default"].Expressions.FilterExpression,s["default"].Expressions.OrderExpression]},equalTyped:{mapTo:"eq",dataType:"boolean",allowedIn:[s["default"].Expressions.FilterExpression,s["default"].Expressions.OrderExpression]},notEqualTyped:{mapTo:"ne",dataType:"boolean",allowedIn:[s["default"].Expressions.FilterExpression,s["default"].Expressions.OrderExpression]},greaterThan:{mapTo:"gt",dataType:"boolean",allowedIn:[s["default"].Expressions.FilterExpression,s["default"].Expressions.OrderExpression]},greaterThanOrEqual:{mapTo:"ge",dataType:"boolean",allowedIn:[s["default"].Expressions.FilterExpression,s["default"].Expressions.OrderExpression]},lessThan:{mapTo:"lt",dataType:"boolean",allowedIn:[s["default"].Expressions.FilterExpression,s["default"].Expressions.OrderExpression]},lessThenOrEqual:{mapTo:"le",dataType:"boolean",allowedIn:[s["default"].Expressions.FilterExpression,s["default"].Expressions.OrderExpression]},or:{mapTo:"or",dataType:"boolean",allowedIn:[s["default"].Expressions.FilterExpression,s["default"].Expressions.OrderExpression]},and:{mapTo:"and",dataType:"boolean",allowedIn:[s["default"].Expressions.FilterExpression,s["default"].Expressions.OrderExpression]},add:{mapTo:"add",dataType:"number",allowedIn:[s["default"].Expressions.FilterExpression,s["default"].Expressions.OrderExpression]},divide:{mapTo:"div",allowedIn:[s["default"].Expressions.FilterExpression,s["default"].Expressions.OrderExpression]},multiply:{mapTo:"mul",allowedIn:[s["default"].Expressions.FilterExpression,s["default"].Expressions.OrderExpression]},subtract:{mapTo:"sub",allowedIn:[s["default"].Expressions.FilterExpression,s["default"].Expressions.OrderExpression]},modulo:{mapTo:"mod",allowedIn:[s["default"].Expressions.FilterExpression,s["default"].Expressions.OrderExpression]},"in":{mapTo:"in",allowedIn:[s["default"].Expressions.FilterExpression,s["default"].Expressions.OrderExpression]}}},supportedUnaryOperators:{value:{not:{mapTo:"not"}}},supportedFieldOperations:{value:{contains:{mapTo:"substringof",dataType:"boolean",allowedIn:[s["default"].Expressions.FilterExpression,s["default"].Expressions.OrderExpression],parameters:[{name:"substring",dataType:"string"},{name:"@expression"}]},startsWith:{mapTo:"startswith",dataType:"string",allowedIn:[s["default"].Expressions.FilterExpression,s["default"].Expressions.OrderExpression],parameters:[{name:"@expression",dataType:"string"},{name:"strFragment",dataType:"string"}]},endsWith:{mapTo:"endswith",dataType:"string",allowedIn:[s["default"].Expressions.FilterExpression,s["default"].Expressions.OrderExpression],parameters:[{name:"@expression",dataType:"string"},{name:"strFragment",dataType:"string"}]},length:{dataType:"number",allowedIn:[s["default"].Expressions.FilterExpression,s["default"].Expressions.ProjectionExpression],parameters:[{name:"@expression",dataType:"string"}]},strLength:{mapTo:"length",dataType:"number",allowedIn:[s["default"].Expressions.FilterExpression,s["default"].Expressions.ProjectionExpression],parameters:[{name:"@expression",dataType:"string"}]},indexOf:{dataType:"number",allowedIn:[s["default"].Expressions.FilterExpression,s["default"].Expressions.OrderExpression],mapTo:"indexof",baseIndex:1,parameters:[{name:"@expression",dataType:"string"},{name:"strFragment",dataType:"string"}]},replace:{dataType:"string",allowedIn:[s["default"].Expressions.FilterExpression,s["default"].Expressions.OrderExpression],parameters:[{name:"@expression",dataType:"string"},{name:"strFrom",dataType:"string"},{name:"strTo",dataType:"string"}]},substr:{mapTo:"substring",dataType:"string",allowedIn:[s["default"].Expressions.FilterExpression,s["default"].Expressions.OrderExpression],parameters:[{name:"@expression",dataType:"string"},{name:"startFrom",dataType:"number"},{name:"length",dataType:"number",optional:"true"}]},toLowerCase:{mapTo:"tolower",dataType:"string",allowedIn:[s["default"].Expressions.FilterExpression,s["default"].Expressions.OrderExpression],parameters:[{name:"@expression",dataType:"string"}]},toUpperCase:{mapTo:"toupper",dataType:"string",allowedIn:[s["default"].Expressions.FilterExpression,s["default"].Expressions.OrderExpression],parameters:[{name:"@expression",dataType:"string"}]},trim:{dataType:"string",allowedIn:[s["default"].Expressions.FilterExpression,s["default"].Expressions.OrderExpression],parameters:[{name:"@expression",dataType:"string"}]},concat:{dataType:"string",allowedIn:[s["default"].Expressions.FilterExpression,s["default"].Expressions.OrderExpression],parameters:[{name:"@expression",dataType:"string"},{name:"strFragment",dataType:"string"}]},day:{allowedIn:[s["default"].Expressions.FilterExpression,s["default"].Expressions.OrderExpression],parameters:[{name:"@expression",dataType:"date"}]},hour:{allowedIn:[s["default"].Expressions.FilterExpression,s["default"].Expressions.OrderExpression],parameters:[{name:"@expression",dataType:"date"}]},minute:{allowedIn:[s["default"].Expressions.FilterExpression,s["default"].Expressions.OrderExpression],parameters:[{name:"@expression",dataType:"date"}]},month:{allowedIn:[s["default"].Expressions.FilterExpression,s["default"].Expressions.OrderExpression],parameters:[{name:"@expression",dataType:"date"}]},second:{allowedIn:[s["default"].Expressions.FilterExpression,s["default"].Expressions.OrderExpression],parameters:[{name:"@expression",dataType:"date"}]},year:{allowedIn:[s["default"].Expressions.FilterExpression,s["default"].Expressions.OrderExpression],parameters:[{name:"@expression",dataType:"date"}]},round:{allowedIn:[s["default"].Expressions.FilterExpression,s["default"].Expressions.OrderExpression],parameters:[{name:"@expression",dataType:"date"}]},floor:{allowedIn:[s["default"].Expressions.FilterExpression,s["default"].Expressions.OrderExpression],parameters:[{name:"@expression",dataType:"date"}]},ceiling:{allowedIn:[s["default"].Expressions.FilterExpression,s["default"].Expressions.OrderExpression],parameters:[{name:"@expression",dataType:"date"}]}},enumerable:!0,writable:!0},supportedSetOperations:{value:{filter:{},map:{},length:{},forEach:{},toArray:{},single:{},some:{invokable:!1,allowedIn:[s["default"].Expressions.FilterExpression],parameters:[{name:"filter",dataType:"$data.Queryable"}],mapTo:"any",frameType:s["default"].Expressions.SomeExpression},every:{invokable:!1,allowedIn:[s["default"].Expressions.FilterExpression],parameters:[{name:"filter",dataType:"$data.Queryable"}],mapTo:"all",frameType:s["default"].Expressions.EveryExpression},take:{},skip:{},orderBy:{},orderByDescending:{},first:{},include:{},batchDelete:{}},enumerable:!0,writable:!0},fieldConverter:{value:s["default"].WebApiConverter},getEntityKeysValue:function(e){for(var t=[],a=void 0,r=e.entitySet.createNew.memberDefinitions.asArray(),i=0,s=r.length;s>i;i++){var o=r[i];if(o.key){switch(a=e.data[o.name],n.Container.getName(o.originalType)){case"$data.Guid":case"Edm.Guid":a="guid'"+(a?a.value:a)+"'";break;case"$data.Blob":case"Edm.Binary":a="binary'"+a+"'";break;case"Edm.Byte":var p="0123456789ABCDEF";a=p[i>>4&15]+p[15&i];break;case"$data.Date":case"Edm.DateTime":a="datetime'"+a.toISOString()+"'";break;case"Edm.Decimal":a+="M";break;case"Edm.Single":a+="f";break;case"Edm.Int64":a+="L";break;case"Edm.String":case"$data.String":a="'"+a+"'"}t.push(o.name+"="+a)}}return t.length>1?t.join(","):a},appendBasicAuth:function(e,t,a,r){e.headers=e.headers||{},!e.headers.Authorization&&t&&a&&(e.headers.Authorization="Basic "+this.__encodeBase64(t+":"+a),e.withCredentials=r)},__encodeBase64:function(e){var t,a,r,i,n,s="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",o=e,p="",d="",l="",u=0;do t=o.charCodeAt(u++),a=o.charCodeAt(u++),d=o.charCodeAt(u++),r=t>>2,i=(3&t)<<4|a>>4,n=(15&a)<<2|d>>6,l=63&d,isNaN(a)?n=l=64:isNaN(d)&&(l=64),p=p+s.charAt(r)+s.charAt(i)+s.charAt(n)+s.charAt(l),t=a=d="",r=i=n=l="";while(u<o.length);return p}},null),s["default"].StorageProviderBase.registerProvider("webApi",s["default"].storageProviders.webApi.webApiProvider),(0,n.$C)("$data.storageProviders.webApi.webApiCompiler",s["default"].Expressions.EntityExpressionVisitor,null,{constructor:function(){this.context={},this.provider={},this.includes=null,this.mainEntitySet=null},compile:function(e){this.provider=e.context.storageProvider,this.context=e.context,this.mainEntitySet=e.context.getEntitySetFromElementType(e.defaultType);var t={urlText:""};this.Visit(e.expression,t),e.modelBinderConfig={};var a=n.Container.createModelBinderConfigCompiler(e,this.includes,!0);a.Visit(e.expression);var r=t.urlText,i=!1;for(var s in t)"urlText"!=s&&"actionPack"!=s&&"data"!=s&&"lambda"!=s&&"method"!=s&&""!=t[s]&&(r+=i?"&":"?",i=!0,r+="$urlParams"!=s?s+"="+t[s]:t[s]);return e.queryText=r,{queryText:r,method:t.method||"GET",params:[]}},VisitOrderExpression:function(e,t){this.Visit(e.source,t);var a=n.Container.createwebApiOrderCompiler(this.provider);a.compile(e,t)},VisitPagingExpression:function(e,t){this.Visit(e.source,t);var a=n.Container.createwebApiPagingCompiler();a.compile(e,t)},VisitIncludeExpression:function(e,t){if(this.Visit(e.source,t),!t.$select){t.$expand?t.$expand+=",":t.$expand="",t.$expand+=e.selector.value.replace(/\./g,"/"),this.includes=this.includes||[];for(var a=e.selector.value.split("."),r=null,i=this.mainEntitySet.entityContext._storageModel.getStorageModel(this.mainEntitySet.createNew),s=0;s<a.length;s++){r?r+="."+a[s]:r=a[s];var o=i.Associations[a[s]];o?this.includes.some(function(e){return e.name==r},this)||this.includes.push({name:r,type:o.ToType}):n.Guard.raise(new n.Exception("The given include path is invalid: "+e.selector.value+", invalid point: "+r)),i=this.mainEntitySet.entityContext._storageModel.getStorageModel(o.ToType)}}},VisitProjectionExpression:function(e,t){this.Visit(e.source,t);var a=n.Container.createwebApiProjectionCompiler(this.context);a.compile(e,t)},VisitFilterExpression:function(e,t){this.Visit(e.source,t);var a=n.Container.createwebApiWhereCompiler(this.provider);t.data="",a.compile(e.selector,t),t.$filter=t.data,t.data=""},VisitEntitySetExpression:function(e,t){if(t.urlText+="/"+e.instance.tableName,e.params)for(var a=0;a<e.params.length;a++)this.Visit(e.params[a],t)},VisitServiceOperationExpression:function(e,t){if(t.urlText+="/"+e.cfg.serviceName,e.params)for(var a=0;a<e.params.length;a++)this.Visit(e.params[a],t)},VisitBatchDeleteExpression:function(e,t){this.Visit(e.source,t),t.urlText+="/$batchDelete",t.method="DELETE"},VisitConstantExpression:function(e,t){t.$urlParams?t.$urlParams+="&":t.$urlParams="";var a=n.Container.resolveName(e.type);e.value instanceof s["default"].Entity&&(a=s["default"].Entity.fullName);var r=this.provider.fieldConverter.toDb[a],i=r?r(e.value):e.value;r=this.provider.fieldConverter.escape[a],i=r?r(i):i,t.$urlParams+=e.name+"="+i},VisitCountExpression:function(e,t){this.Visit(e.source,t),t.urlText+="/$count"}},{}),(0,n.$C)("$data.storageProviders.webApi.webApiWhereCompiler",s["default"].Expressions.EntityExpressionVisitor,null,{constructor:function(e,t){this.provider=e,this.lambdaPrefix=t},compile:function(e,t){this.Visit(e,t)},VisitParametricQueryExpression:function(e,t){this.Visit(e.expression,t)},VisitUnaryExpression:function(e,t){t.data+=e.resolution.mapTo,t.data+="(",this.Visit(e.operand,t),t.data+=")"},VisitSimpleBinaryExpression:function(e,t){if(t.data+="(","in"==e.nodeType){n.Guard.requireType("expression.right",e.type,s["default"].Expressions.ConstantExpression);var a=e.right.value;a instanceof Array||n.Guard.raise(new n.Exception("Right to the 'in' operator must be an array value"));var r=null,i={mapTo:"or",dataType:"boolean",name:"or"},o={mapTo:"eq",dataType:"boolean",name:"equal"};a.forEach(function(t){var a=t,p=n.Container.createSimpleBinaryExpression(e.left,a,s["default"].Expressions.ExpressionType.Equal,"==","boolean",o);r=r?n.Container.createSimpleBinaryExpression(r,p,s["default"].Expressions.ExpressionType.Or,"||","boolean",i):p});var p=t.data;t.data="",this.Visit(r,t),t.data=p+t.data.replace(/\(/g,"").replace(/\)/g,"")}else this.Visit(e.left,t),t.data+=" ",t.data+=e.resolution.mapTo,t.data+=" ",this.Visit(e.right,t);t.data+=")"},VisitEntityFieldExpression:function(e,t){this.Visit(e.source,t),e.source instanceof s["default"].Expressions.ComplexTypeExpression&&(t.data+="/"),this.Visit(e.selector,t)},VisitAssociationInfoExpression:function(e,t){t.data+=e.associationInfo.FromPropertyName},VisitMemberInfoExpression:function(e,t){t.data+=e.memberName},VisitQueryParameterExpression:function(e,t){var a=n.Container.resolveName(e.type),r=this.provider.fieldConverter.toDb[a],i=r?r(e.value):e.value;r=this.provider.fieldConverter.escape[a],t.data+=r?r(i):i},VisitEntityFieldOperationExpression:function(e,t){n.Guard.requireType("expression.operation",e.operation,s["default"].Expressions.MemberInfoExpression);var a=e.operation.memberDefinition,r=a.mapTo||a.name;t.data+=r,t.data+="(";var i=0,o=a.parameters||[{name:"@expression"}],p=o.map(function(t,a){return"@expression"===t.name?e.source:e.parameters[i++]});p.forEach(function(e,a){a>0&&(t.data+=","),this.Visit(e,t)},this),t.data+=")"},VisitConstantExpression:function(e,t){var a=n.Container.resolveName(e.type),r=this.provider.fieldConverter.toDb[a],i=r?r(e.value):e.value;r=this.provider.fieldConverter.escape[a],t.data+=r?r(i):i},VisitEntityExpression:function(e,t){this.Visit(e.source,t),this.lambdaPrefix&&e.selector.lambda&&(t.lambda=e.selector.lambda,t.data+=e.selector.lambda+"/")},VisitEntitySetExpression:function(e,t){this.Visit(e.source,t),e.selector instanceof s["default"].Expressions.AssociationInfoExpression&&(this.Visit(e.selector,t),t.data+="/")},VisitFrameOperationExpression:function(e,t){this.Visit(e.source,t),n.Guard.requireType("expression.operation",e.operation,s["default"].Expressions.MemberInfoExpression);var a=e.operation.memberDefinition,r=a.mapTo||a.name;t.data+=r,t.data+="(";for(var i=0,o=a.parameters||[{name:"@expression"}],p=o.map(function(t,a){return"@expression"===t.name?e.source:e.parameters[i++]}),d=0;d<p.length;d++){var l=p[d];if(l&&l.value instanceof s["default"].Queryable){var u=new a.frameType(l.value.expression),f=n.Container.createQueryExpressionCreator(l.value.entityContext),c=f.Visit(u),x=new s["default"].storageProviders.webApi.webApiWhereCompiler(this.provider,!0),y={data:""};x.compile(c,y);t.data+=y.lambda+": "+y.data}}t.data+=")"}}),(0,n.$C)("$data.storageProviders.webApi.webApiOrderCompiler",s["default"].storageProviders.webApi.webApiWhereCompiler,null,{constructor:function(e){this.provider=e},compile:function(e,t){this.Visit(e,t)},VisitOrderExpression:function(e,t){var a={data:""};this.Visit(e.selector,a),t.$orderby?t.$orderby+=",":t.$orderby="",t.$orderby+=a.data+(e.nodeType==s["default"].Expressions.ExpressionType.OrderByDescending?" desc":"")},VisitParametricQueryExpression:function(e,t){this.Visit(e.expression,t)},VisitEntityFieldExpression:function(e,t){this.Visit(e.source,t),this.Visit(e.selector,t)},VisitComplexTypeExpression:function(e,t){this.Visit(e.source,t),this.Visit(e.selector,t),t.data+="/"},VisitEntitySetExpression:function(e,t){e.selector instanceof s["default"].Expressions.AssociationInfoExpression&&(this.Visit(e.source,t),this.Visit(e.selector,t))},VisitAssociationInfoExpression:function(e,t){t.data+=e.associationInfo.FromPropertyName+"/"},VisitEntityExpression:function(e,t){this.Visit(e.source,t),this.Visit(e.selector,t)},VisitMemberInfoExpression:function(e,t){t.data+=e.memberName}}),(0,n.$C)("$data.storageProviders.webApi.webApiPagingCompiler",s["default"].Expressions.EntityExpressionVisitor,null,{constructor:function(e){this.provider=e},compile:function(e,t){this.Visit(e,t)},VisitPagingExpression:function(e,t){var a={data:""};switch(this.Visit(e.amount,a),e.nodeType){case s["default"].Expressions.ExpressionType.Skip:t.$skip=a.data;break;case s["default"].Expressions.ExpressionType.Take:t.$top=a.data;break;default:n.Guard.raise("Not supported nodeType")}},VisitConstantExpression:function(e,t){t.data+=e.value}}),(0,n.$C)("$data.storageProviders.webApi.webApiProjectionCompiler",s["default"].Expressions.EntityExpressionVisitor,null,{constructor:function(e){this.entityContext=e, this.hasObjectLiteral=!1,this.ObjectLiteralPath="",this.modelBinderMapping=[]},compile:function(e,t){this.Visit(e,t)},VisitProjectionExpression:function(e,t){t.data="",this.mapping="",this.Visit(e.selector,t),t.$select?t.$select+=",":t.$select="",t.$select+=t.data,t.data=""},VisitParametricQueryExpression:function(e,t){if(this.Visit(e.expression,t),(e.expression instanceof s["default"].Expressions.EntityExpression||e.expression instanceof s["default"].Expressions.EntitySetExpression)&&(t.$expand?t.$expand+=",":t.$expand="",t.$expand+=this.mapping.replace(/\./g,"/")),e.expression instanceof s["default"].Expressions.ComplexTypeExpression){var a=this.mapping.split(".");a.pop(),a.length>0&&(t.$expand?t.$expand+=",":t.$expand="",t.$expand+=a.join("/"))}else{var a=this.mapping.split(".");a.pop(),a.length>0&&(t.$expand?t.$expand+=",":t.$expand="",t.$expand+=a.join("/"))}},VisitObjectLiteralExpression:function(e,t){var a=this.ObjectLiteralPath;this.hasObjectLiteral=!0,e.members.forEach(function(a,r){this.Visit(a,t),r<e.members.length-1&&(t.data+=","),this.mapping=""},this),this.ObjectLiteralPath=a},VisitObjectFieldExpression:function(e,t){if(this.ObjectLiteralPath?this.ObjectLiteralPath+="."+e.fieldName:this.ObjectLiteralPath=e.fieldName,this.Visit(e.expression,t),e.expression instanceof s["default"].Expressions.EntityExpression||e.expression instanceof s["default"].Expressions.EntitySetExpression)t.$expand?t.$expand+=",":t.$expand="",t.$expand+=this.mapping.replace(/\./g,"/");else{var a=this.mapping.split(".");a.pop(),a.length>0&&(t.$expand?t.$expand+=",":t.$expand="",t.$expand+=a.join("/"))}},VisitComplexTypeExpression:function(e,t){this.Visit(e.source,t),this.Visit(e.selector,t)},VisitEntityFieldExpression:function(e,t){this.Visit(e.source,t),this.Visit(e.selector,t)},VisitEntityExpression:function(e,t){this.Visit(e.source,t)},VisitEntitySetExpression:function(e,t){e.source instanceof s["default"].Expressions.EntityExpression&&this.Visit(e.source,t),e.selector instanceof s["default"].Expressions.AssociationInfoExpression&&this.Visit(e.selector,t)},VisitAssociationInfoExpression:function(e,t){t.data&&t.data.length>0&&","!=t.data[t.data.length-1]&&(t.data+="/"),t.data+=e.associationInfo.FromPropertyName,this.mapping&&this.mapping.length>0&&(this.mapping+="."),this.mapping+=e.associationInfo.FromPropertyName},VisitMemberInfoExpression:function(e,t){t.data&&t.data.length>0&&","!=t.data[t.data.length-1]&&(t.data+="/"),t.data+=e.memberName,this.mapping&&this.mapping.length>0&&(this.mapping+="."),this.mapping+=e.memberName},VisitConstantExpression:function(e,t){t.data=t.data.slice(0,t.data.length-1)}})},{"jaydata/core":"jaydata/core"}],3:[function(e,t,a){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}Object.defineProperty(a,"__esModule",{value:!0});var i=e("jaydata/core"),n=r(i),s=e("./WebApiConverter.js"),o=(r(s),e("./WebApiProvider.js"));r(o);a["default"]=n["default"],t.exports=a["default"]},{"./WebApiConverter.js":1,"./WebApiProvider.js":2,"jaydata/core":"jaydata/core"}]},{},[3])(3)}); //# sourceMappingURL=WebApiProvider.min.js.map