From d38031d1744275d6b62f434856acb70c2d99df5f Mon Sep 17 00:00:00 2001 From: Umut Ozel Date: Thu, 21 Aug 2014 17:33:00 +0300 Subject: [PATCH] Revert "Minor bug fix: Local query inline count calculation." This reverts commit 512dd6306c4c08389e0420e6bfe23cd637f1ac83. --- Beetle.Client/App_Data/Test.sdf | Bin 282624 -> 282624 bytes Beetle.Client/Scripts/beetle/beetle.js | 24 ++++++---------- Beetle.Client/Scripts/beetle/beetle.min.js | 2 +- .../Scripts/beetle.js | 26 +++++++----------- .../Scripts/beetle.min.js | 2 +- .../Scripts/beetle.js | 26 +++++++----------- .../Scripts/beetle.min.js | 2 +- .../Scripts/beetle.js | 26 +++++++----------- .../Scripts/beetle.min.js | 2 +- _NuGet Packages/content/Scripts/beetle.js | 26 +++++++----------- _NuGet Packages/content/Scripts/beetle.min.js | 2 +- 11 files changed, 54 insertions(+), 84 deletions(-) diff --git a/Beetle.Client/App_Data/Test.sdf b/Beetle.Client/App_Data/Test.sdf index acf6338b22e8e1bed5333f6aa7dd4109e5ee27b9..ee06a4418b6865b22854af71a7f58647d8eee284 100644 GIT binary patch delta 7329 zcmeHMdvsGp8lSm0X_H%;M;|GzeWXYQO0h|rwh0wz3Wb)op;1AqLf`VHFI13661JeO zg6&?QK3FM79)hs6q!22Kt$^#grwZ#?kzK)p!0~ykx-QiPyYtOW)5|4`d-fd9**~0f zrk(lC_uYAXkNLidt5xf2)hheD>aq|ix_0GNoL;gp7_}E7RQ&;i_N_)p_GdjiKPMAy zed03)sGyyf$RQ;ed!Z%>ZT?h_Vw)Y|!AAF&hzX7MXfL*hDr5G3a6%_DpahRnlZtUQ zZ`DqgAK!vdx5uq@#yh`{?<|axWuspBBq=%>Lh|fT+Gfe${;~pu!dR@?L7|~Pt{L@J z)%Et8Qe!%Rl(t-;Z9VkV5FNDqwCQH(QrZeiI|{dLT@2Vz@e^lS0i?v0{7%CtT;=I8 z#H-`>xfrIA)Y)AOlR_#Y)%4h#dlY1w4|F`)Jv4Ux`rO=f zuHt--i8neX@#l&ccxoL@D&@?)rB%bpw%+HJWeG`TxR!9ZP(eB4YgDklMy1TxsPYt* zdDPC+A5|no6M_HJxBnO-a4uU-dvMm*@`!SP(4o-7&mRO_#q~8+4_7WDLbv*ber-A# z2EqI33kCrZy?IcUPIRr1jDz(33`K*0h#|w|AGVX>N}zWYml_O)Ar+c&<3O69qnHd- z4RH*8%CUv)sLF%u22|W1FB<2?5S8g!=;2&nbl+1(S81AUhG4h{1Jf$Ty@$p#m^!+{(S(IXe$7oW9Sv z>#5o2H~$i^au|Tpvr+))GgPPFQiB1No}e5+!F-3T z7Xv7@UJZa!>y-g0wO$s$-S)ytJ+u4pwDGpol9EyHt_cIQ=g`N)-?P5{WmL|Y@cYMT z2h;$5*Y}5{XCHVqd2i0tZiTk*vJyZ+szXBcoanwQ-ub&4ex#OIbgWN!a#{AUh^Bnn z14Zjapg@jyMi;s3gp-bV2BTO-H`@3T8Ft-U-LR~>zLeUPKo5>-qoOr$$5mm&k+-6E zk_o_Pb`+OSIr4>|G`c_x)CC9=oa5GvDQ)bW?pAn;R2kbkq5{!p!VUy_@PFxCZtnW^ z!nqC?(L4P+5HWzio%oinV9&>b9HT`HetOH$1mMbvLoage5tJz=5PilFJs27eOS1Eu z8=chtZVSXfouse>xE35l?e;GhbTBp$y+{OLvvI_F`4U0sae?URf}Fwxt4>dA+n#lD z+M%gqxlg$6 zW*xTn0bBcrg2j#uL@!cO@GlouA1~;?@0swZoY%h;O!|&M45A(U zycOu})*vjflEm(8E@NtSnxEX$O7!@Zr<>ZgedUKSFZ6# z8`lZmdNdhZ=o%uGZG-!>2%b|Q^sGz`m(t74fp%rY*_ zpC1@uG%YfJ6GmK5I9LWL3KC2xdgEz3nEdUNdJ^8)tE)C;PF}EVMQKK6dWI!ahzuyP z)Qiy1xRfr9ONVr5a?Qg_m({N*wFt~2|O%q%rX zx~y~)r8Q-wn~j;7)Vk>a78>>P{jj|b(goseHF^WSd0U-vBK}$+W_!`AZU&G;j%z)Rcos+tYJ0gkpZKLOmkP31a6h?cbiTb3* zBGnO$T$5{-)Rr$@K|3t~`jlk#hFEP zBcoDk2`x#X1LV?!DRim7A>`7ZtzP&v0 z)y!~b%eZ&bAYF*@EgI5=@KZUoC&U<1_xEeMKocZUC@GB!eoYsoDWvr3{WV?iozVY( zx&UGS))0TlPaFdt3i&yEZzz2>>-IgH*@b7bP2|~Zqt~rvoT?DZjGyjO#L!4pP^8ua`2chTFgU z@Bl;7iO2g}xLRgxY~s%)pvpU*oJ8}9V6W1}TutC?Q`Wu)KXGX$@!Lm6l0-p^d4pDg z%OG_LI!02L&Mlt0$j@0U_axrUb6m;9@(PIi-rdsd(6#7W8AZ}iWakg@Zf=mEuS3n{ zAD#<88yr~3kdG#jsoV-CPjG@8i4$xjIRbHlN=5ijbHE9{)I$1EE&47-ardo!*)81M zErtXSxT}}ZIF2#%df*@*?1xkop-|+)h@|sG8W=^AU-nQFhM?~@)Qb^0<PB{ltoYxU?2qjL delta 7278 zcmcIp3s_WD9zXZa49r|$9`ce$fVPAI>dXMcOi1z&N8~Nlx2_LB#WLijSlO4|8OmBT z3wDgzG8NyiRBVD-A78<$t!A}YOXQY@mX97QD4N=*?VkU+mzm)*LSLKb`_6do@BIJw zoO{my@%y8xNo8tM$zqg}WeB%1`(!t$gqAW-bT}KK_Rneb9>)C&Mv1=8Nkj>v?`e>N z@$JzJ3c+)gRUT-@cM=rZP~hw7yXi;ti6Y3>kh;%D_F$>@Xn)(&RvK3hIVe;uauANTT*3V-fzn`D7MCBSe&PGl85xro2V-N*Co; z7U>fKB(i0k>=zzSIptvFkWJ9TBavN5WFMgZdjCSeoXsKZlr6VxRYy@3wolYyiZHax zMAI+e{>NsTj%}l9gnQDd_?=SxnXlSpDT^t|^J)q`WizL;a`wZAemNi$7o)#m$hArN z2T?>S%8;F&o_u-r?(5gHj;4P({z@zbV0f_RO7N7{{Y#BqiaCdVVi17OZk$v7Ikn>S z$(*jtwhWe$0BB;{cT7I9-ajd?=Z%wLA6Ps9+QVj?Y6F*IHPuL*55n<{iqH0IAI?3RJMrVFF=7BOtvXhJJIXq{&REqK#M-hg znu3Xz)A9&V3?u+h%TH<+9|$v5XvxXl$~k#gx>#AE8FvEhonW z*i8PPiY(QU(RlDA!-{<}@0zjev ziUAb*uNQ#dRzH94Yt>uNjLj*$HqIV3odK}lsg3E$fp5j3Ln&c8 z59_mtv{0 zbw7817EN!!7>$MqYcy(2ye2^hZzjSJt&ZkCoO__1I|CxD=iaO}=o7R$y;B$>>(TV< zS-Y=uhDC%8@#M`qjX|Gi;C!0A8A4uFU!Bo9n>#Zi9H%D2iE4vJ7w58P2)aFQB;~F5 z=gfl$>kLF#8yBb1#~aj+Jwq&xGj`?FZsRP3dvhGW4Ye-85U+6vLyRt%I5m4^3wQG% ztVrPAoS=)3*XXrcoN2%CVc$6`qHA#1;eNAQL?6KYIouz{9pRpIc>D$xzNAoiH*OMf zinm{VCO5{v-3Yv)uI7h~&0U<6q`XF5Rqv>FMVdEq`Q+R(N=<3_yVChOme3{41(K`&>}M2 z$&(Dj$wRz(Vp&q|nweY_n(UOv>-Qg#%L3rcZMzSrZqafsZgeWRl?U$&i4HKXPv(4b ziaU9d!nh4VTy8kCDs#D*TkmXA$zIL&u_U{ z$mO(0@Z3Uv4zj@aecQJL@8EL7qj+w`@e6jfAMNL5Y3>OfF?ODaR?;H6n-bB@xF3nL zoaq_OTs>$1jz$qE=GN;B6%&d%o*bpnC=xS!ltQ8V5abFPjY4R2O98c4;Z%6f&h(mRFTj zEXCweLtLBaIUR}fBcT=0M33bab%{j_D=Qv{Wr?=Xh=qY}z^ZX1gc3cWvj~lwTa{ll zUWX?1FDNu>p<54FP_HAqwOuKGM;?B@1E&Los3j&5t>?$*PpZV4K# z#wQ{(WKWIHs%;O+YhqHahkhyo(7Qx(=0-%DVRvR$#YFGV4k7@RXI@8Fds~l9$knXb zk{IAe0myc}Kh1h%*DKLkd4X+@t%wmT(@@6M?)fnnMRvA{GAo$3yL`8L<4uoiwKL7s zB1*ENokDeX^F9h!%Ck&$$xtbu;dVqSWs#aIBT0F5Z!6`{p(^E;5^B04(6t~wSe1Fi z2OsFBc4AWgtT+W9fsng101COgCx9FSak6w8Kp{)_08m(wNB|TPY7q;lkWotk6!K&W zKp`VW01C|o*cZxmiEOk!Ke6^!-36#y}8*%Y9RMp&H zEH7{jY&pd?1)H^{?FXouukuy^RkH_@kteW%dt5a?h<0z$A0Y*< zFJIu!;R@VCxWH|-n@7>C+-u6`b%!7Vos6X{MazF<0P2r2Glm#&0f_Bb?Rf{ta4>(2 zK!$xg(#R8+b^k9iJRBEhQ8yCih~JY8566XBcU<*%B*SjGtqT`sNxggT$nbDnnC0$R zm^FVlGCUj?W?d^P7dkKG5x0lT^lNnf*OLT>9ZjtU@CZblI)8pt%H|GdEH ztX;2gq<~Bl%1@?&Tr@EudA02vt*QBRkUnlw>EgMI7F5+NsH`Z8a};2`!otG6 zw$@cUk!+o;Eu`6lv_F|f2N|>puIe01C+d8yUx9TRozjl^$M$Z;VoFn;(DE{ zw$}0Yj$W7eMZ(u0b$o6Q#ONIE+$;3vK?<;*byq$uk9H~z$~yvE;5HdQ;DEV`f}D`B zUKg4Yr>-6Fjq%R=5f&uw)incF*Eo$sSeCd~PaI%d3C;@=7N)?bUG3a{xR6$PN2Brg zOTZDRm7^uJ0ryKP32ntaW0Zuxrj*bdBP4VI{?}~3Q$&lD3{z1^(YTt3yk%vo=$O#^ zhbus3AB~(w%84Mm%tYS^mnoN7o&w%>&T8I32U;VVX=$XBnmIVy-~nN6USsx_6~UkQ zsWRGD?H@^5)MhC?lcPbcm8yDhA3i;#zibM4j5Tp>)O(A?_QK%kH-KCkxb2K0^2*uh9 jdg;B2t=+UzwKt-WoSz^5&p~Ko?W$s`NAaR)vpD~MX_Wk; diff --git a/Beetle.Client/Scripts/beetle/beetle.js b/Beetle.Client/Scripts/beetle/beetle.js index 05a089e2..bd8b6e55 100644 --- a/Beetle.Client/Scripts/beetle/beetle.js +++ b/Beetle.Client/Scripts/beetle/beetle.js @@ -8423,8 +8423,8 @@ // if option need local and server results both, after server query re-run same query on local. if (execution == enums.executionStrategy.Both) { newEntities = that.executeQueryLocally(query); - if (inlineCount != null && newEntities.$inlineCountDiff != null) - inlineCount += newEntities.$inlineCountDiff; + if (inlineCount) + inlineCount += newEntities.$addedCount - newEntities.$deletedCount; } if (newEntities) { if (query.inlineCountEnabled && inlineCount != null) @@ -8470,29 +8470,23 @@ } else throw helper.createError(i18N.typeRequiredForLocalQueries); - var array = [], serverArray = [], modifiedClient = false; + var array = [], addedCount = 0, deletedCount = 0; helper.forEach(entities, function (entity) { if (entity.$tracker.entityState == enums.entityStates.Added) { - modifiedClient = true; + addedCount++; array.push(entity); } - else if (entity.$tracker.entityState == enums.entityStates.Deleted) { - modifiedClient = true; - serverArray.push(entity); - } - else { + else if (entity.$tracker.entityState == enums.entityStates.Deleted) + deletedCount++; + else array.push(entity); - serverArray.push(entity); - } }); // get array handling function for query var func = query.toFunction(); // run function against entities array = func(array, varContext); - if (array.$inlineCount && modifiedClient) { - var serverResult = func(serverArray, varContext); - array.$inlineCountDiff = array.$inlineCount - serverResult.$inlineCount; - } + array.$addedCount = addedCount; + array.$deletedCount = deletedCount; return array; }; diff --git a/Beetle.Client/Scripts/beetle/beetle.min.js b/Beetle.Client/Scripts/beetle/beetle.min.js index 172e216e..d2dc1ac5 100644 --- a/Beetle.Client/Scripts/beetle/beetle.min.js +++ b/Beetle.Client/Scripts/beetle/beetle.min.js @@ -1,4 +1,4 @@ -(function(n){"use strict";var t=function(){return{assertPrm:function(n,t){return new f(n,t)},combine:function(n,i){var r,e,u;if(n==i)return n;if(r={},n!=null)for(e in n)r[e]=n[e];if(i!=null)for(u in i){var s=r[u],o=i[u],h=f.isTypeOf(s,"object")&&f.isTypeOf(o,"object")?t.combine(s,o):o;r[u]=h}return r},objEquals:function(n,i){var u,e,r,o;if(n==i)return!0;if(n==null||i==null)return!1;if(f.isObject(n)&&f.isObject(i)){u=0;e=0;for(r in n){if(!i.hasOwnProperty(r)||!t.objEquals(t.getValue(n,r),t.getValue(i,r)))return!1;u++}for(o in i)e++;return u==e}return!1},equals:function(n,t,i,r){var u,f;return typeof n=="string"&&typeof t=="string"&&(u=r&&r.isCaseSensitive,u==null&&(u=s.isCaseSensitive),f=r&&r.ignoreWhiteSpaces,f==null&&(f=s.ignoreWhiteSpaces),u||(n=n.toLowerCase(),t=t.toLowerCase()),f&&(n=n.trim(),t=t.trim())),i?n===t:n==t},formatString:function(n){var t=arguments,i=RegExp("%([0-"+(arguments.length-1)+"])","g"),r=RegExp("{([0-"+(arguments.length-2)+"])}","g");return n.replace(i,function(n,i){return t[Number(i)+1]||""}).replace(r,function(n,i){return t[Number(i)+1]||""})},tryFreeze:function(n,t){var r,i;if(!n||!Object.freeze)return n;if(Object.freeze(n),t===!0)for(r in n)i=n[r],f.isArray(i)?this.tryFreezeArray(i,t):f.isObject(i)&&this.tryFreeze(i,t);return n},tryFreezeArray:function(n,t){if(n&&Object.freeze)for(var i=0;i=0;u--)n.splice(r[u],1);return r.length},mapArray:function(n,t){for(var r,u=[],i=0;i0&&(u.splice(0,0,n),n=t.formatString.apply(null,u)),o=new Error(n),e)for(s in e)o[s]=e[s];return a.error.notify(o),o},setForeignKeys:function(n,t,i){for(var u,f,e,o,r=0;r")return i.aliases.push(n.left.name),it=t.jsepToODataQuery(n.right,i),i.aliases.pop(),it;if(k=u.langOperators.find(n.operator).oData,!k)throw t.createError(r.operatorNotSupportedForOData,[n.operator],{expression:n});return"("+t.jsepToODataQuery(n.left,i)+" "+k+" "+t.jsepToODataQuery(n.right,i)+")"}if(n.type=="UnaryExpression")return n.operator+t.jsepToODataQuery(n.argument,i);if(n.type=="Identifier"){if(l=n.name,l[0]=="@"){if(a=undefined,v=l.slice(1),i.expVarContext&&i.expVarContext[v]!==undefined?a=i.expVarContext[v]:i.varContext&&(a=i.varContext[v]),a===undefined)throw t.createError(r.unknownParameter,[l],{expression:n,queryContext:i});return e.dataTypes.toODataValue(a)}return l}if(n.type=="Literal")return e.dataTypes.toODataValue(n.value);if(n.type=="MemberExpression")return n.object.name&&n.object.name!=i.currentAlias&&t.findInArray(i.aliases,n.object.name)?n.property.name:t.jsepToODataQuery(n.object,i)+"/"+n.property.name;if(n.type=="Compound"){for(f=[],h=0;h"&&(c=s[0].left.name,s=[s[0].right]),c&&(i.currentAlias=c,i.aliases.push(c)),p=0;p"?(i.aliases.push(n.left.name),tt=t.jsepToBeetleQuery(n.right,i),i.aliases.pop(),tt):(it=u.langOperators.find(n.operator).code,"("+t.jsepToBeetleQuery(n.left,i)+" "+it+" "+t.jsepToBeetleQuery(n.right,i)+")");if(n.type=="UnaryExpression")return n.operator+t.jsepToBeetleQuery(n.argument,i);if(n.type=="Identifier"){if(c=n.name,c[0]=="@"){if(l=undefined,v=c.slice(1),i.expVarContext&&i.expVarContext[v]!==undefined?l=i.expVarContext[v]:i.varContext&&(l=i.varContext[v]),l===undefined)throw t.createError(r.unknownParameter,[c],{expression:n,queryContext:i});return e.dataTypes.toBeetleValue(l)}return c}if(n.type=="Literal")return e.dataTypes.toBeetleValue(n.value);if(n.type=="MemberExpression")return n.object.name&&t.findInArray(i.aliases,n.object.name)?n.property.name:t.jsepToBeetleQuery(n.object,i)+"."+n.property.name;if(n.type=="Compound"){for(f=[],h=0;h"&&(a=s[0].left.name,s=[s[0].right]),a&&(i.currentAlias=a,i.aliases.push(a)),y=0;y")return i.currentAlias&&i.aliases.push(i.currentAlias),i.currentAlias={alias:n.left.name},nt=t.jsepToFunction(n.right,i)(f),i.currentAlias=i.aliases.pop(),nt;var ut=u.langOperators.find(n.operator),tt=i.varContext,ft=function(){return t.jsepToFunction(n.left,i)(f)},et=function(){return t.jsepToFunction(n.right,i)(f)};return ut.asFunc.call(tt,ft,et)}if(n.type=="UnaryExpression")return it=function(){return t.jsepToFunction(n.argument,i)(f)},rt=u.langOperators.find(n.operator),rt.asFunc.call(tt,it);if(n.type=="Identifier"){if(e=n.name,e=="null")return null;if(e=="true")return!0;if(e=="false")return!1;if(e[0]=="@"){if(v=undefined,y=e.slice(1),i.expVarContext&&i.expVarContext[y]!==undefined?v=i.expVarContext[y]:i.varContext&&(v=i.varContext[y]),v===undefined)throw t.createError(r.unknownParameter,[e],{expression:n,queryContext:i});return v}return i.currentAlias&&i.currentAlias.alias==e?f:(w=t.findInArray(i.aliases,e,"alias"),w)?w.value:(b=t.getValue(f,e),b===undefined)?window[e]:b}if(n.type=="Literal")return n.value;if(n.type=="MemberExpression"){if(n.object.name){if(i.currentAlias&&n.object.name==i.currentAlias.alias)return t.getValue(f,n.property.name);if(k=t.findInArray(i.aliases,n.object.name,"alias"),k)return t.getValue(k.value,n.property.name)}return t.getValue(t.jsepToFunction(n.object,i)(f),n.property.name)}if(n.type=="CallExpression"){var s=n.arguments,h=[],p=null;if(s.length==1&&s[0]&&s[0].type=="BinaryExpression"&&s[0].operator=="=>"&&(p=s[0].left.name,s=[s[0].right]),p&&(i.currentAlias&&i.aliases.push(i.currentAlias),i.currentAlias={alias:p}),t.forEach(s,function(n){n!=null&&h.push(t.jsepToFunction(n,i))}),l=n.callee.type=="MemberExpression"?n.callee.property.name:n.callee.name,c=o.queryFuncs.getFunc(l,!1),c)n.callee.type=="MemberExpression"&&h.splice(0,0,t.jsepToFunction(n.callee.object,i)),h.splice(0,0,f),d=c.impl.apply(i,h);else{if(l[0]=="@")if(a=l.slice(1),i.expVarContext&&i.expVarContext[a])c=i.expVarContext[a];else if(i.varContext&&i.varContext[a])c=i.varContext[a];else throw t.createError(r.unknownParameter,[a],{expression:n,queryContext:i});else if(g=n.callee.type=="MemberExpression"?t.jsepToFunction(n.callee.object,i)(f):window,g==null||(c=g[l])==null)throw t.createError(r.unknownFunction,[l]);h=t.mapArray(h,function(){return this(f)});d=c.apply(i,h)}return p&&(i.currentAlias=i.aliases.pop()),d}throw t.createError(r.unknownExpression,{expression:n});}},jsepToProjector:function(n,i){var h=[],u,e,o,s;for(f.isArray(n)||(n=[n]),u=0;uu+2&&n[u+1].name&&n[u+1].name.toLowerCase()=="as"){if(u=u+2,s=n[u],s.type!="Identifier")throw t.createError(r.invalidPropertyAlias,{expressions:n,aliasExpression:s});e=s.name}if(n.length>1&&!e)throw t.createError(r.projectionsMustHaveAlias,{expressions:n,expression:o});h.push({p:e,func:t.jsepToFunction(o,i)})}return function(t){for(var r,u,f={},i=0;i0)throw t.createError(this.errors.join("\n"),{name:this.name,value:this.value});},n.hasValue=function(n,i,u){return n==null?(i&&i.push(t.formatString(r.valueCannotBeNull,u)),!1):!0},n.isObject=function(n,i,u){return e.dataTypes.object.isValid(n)?!0:(i&&i.push(t.formatString(r.typeError,u,"object")),!1)},n.isFunction=function(n,i,u){return e.dataTypes.function.isValid(n)?!0:(i&&i.push(t.formatString(r.typeError,u,"function")),!1)},n.isNotEmptyString=function(i,u,f){return!n.isTypeOf(i,"string",u)||i===""?(u&&u.push(t.formatString(r.cannotBeEmptyString,f)),!1):!0},n.isTypeOf=function(i,u,f,o){if(!n.hasValue(i))return!1;var s=e.dataTypes.byName(u);return s.isValid(i)?!0:(f&&f.push(t.formatString(r.typeMismatch,o,u,s,i)),!1)},n.isArray=function(n,i,u){return e.dataTypes.array.isValid(n)?!0:(i&&i.push(t.formatString(r.typeError,u,"array")),!1)},n.isEnum=function(n,i,u){return i.contains(n)?!0:(u&&u.push(t.formatString(r.invalidEnumValue,i,n)),!1)},n.isInstanceOf=function(n,i,u,f){return n==null?(u&&u.push(r.cannotCheckInstanceOnNull),!1):(n instanceof i)?!0:(u&&u.push(t.formatString(r.instanceError,f,i)),!1)},n}(),h=function(){var i={};return i.enums=function(){function r(n,t){for(var i in t)n[i]=t[i];return n}function n(n,i){this.name=n;i&&r(this,i);t.tryFreeze(this)}n.prototype={};n.prototype.constructor=n;n.prototype.toString=function(){return this.name};t.tryFreeze(n.prototype);var i=function(i){var u=this,r;if(arguments.length===1&&i!==null&&typeof i=="object")for(r in i)u[r]=new n(r,i[r]);else t.forEach(arguments,function(t){u[t]=new n(t)});t.tryFreeze(this)};return i.prototype.symbols=function(){var t=[],i,n;for(i in this)(n=this[i],f.isFunction(n))||t.push(n);return t},i.prototype.contains=function(t){return(t instanceof n)?this[t.name]===t:!1},i}(),i.jsep=function(t){var a="Compound",k="Identifier",v="MemberExpression",h="Literal",d="ThisExpression",g="CallExpression",nt="UnaryExpression",tt="BinaryExpression",it="LogicalExpression",u=!0,f={"-":u,"!":u,"~":u,"+":u},r={"=>":0,"||":1,"&&":2,"|":3,"^":4,"&":5,"==":6,"!=":6,"===":6,"!==":6,"<":7,">":7,"<=":7,">=":7,"<<":8,">>":8,">>>":8,"+":9,"-":9,"*":10,"/":10,"%":10},s=function(n){var t=0,i;for(var r in n)(i=r.length)>t&&n.hasOwnProperty(r)&&(t=i);return t},c=s(f),e=s(r),y={"true":!0,"false":!1,"null":null},rt="this",p=function(n){return r[n]||0},w=function(n,t,i){var r=n==="||"||n==="&&"?it:tt;return{type:r,operator:n,left:t,right:i}},o=function(n){return n>=48&&n<=57},l=function(n){return n===36||n===95||n===64||n>=65&&n<=90||n>=97&&n<=122},ut=function(n){return n===36||n===95||n>=65&&n<=90||n>=97&&n<=122||n>=48&&n<=57},i=function(n){for(var t=0,ct=n.charAt,lt=n.charCodeAt,i=function(t){return ct.call(n,t)},u=function(t){return lt.call(n,t)},b=n.length,s=function(){for(var n=u(t);n===32||n===9;)n=u(++t)},ot=function(){s();for(var i=n.substr(t,e),u=i.length;u>0;){if(r.hasOwnProperty(i))return t+=u,i;i=i.substr(0,--u)}return!1},tt=function(){var r,i,o,n,s,f,e,u;if(f=it(),i=ot(),!i)return f;if(s={value:i,prec:p(i)},e=it(),!e)throw new Error("Expected expression after "+i+" at character "+t);for(n=[f,s,e];i=ot();){if(o=p(i),o===0)break;for(s={value:i,prec:o};n.length>2&&o<=n[n.length-2].prec;)e=n.pop(),i=n.pop().value,f=n.pop(),r=w(i,f,e),n.push(r);if(r=it(),!r)throw new Error("Expected expression after "+i+" at character "+t);n.push(s);n.push(r)}for(u=n.length-1,r=n[u];u>1;)r=w(n[u-1].value,n[u-2],r),u-=2;return r},it=function(){var i,r,e;if(s(),i=u(t),o(i)||i===46)return at();if(i===39||i===34)return vt();if(l(i))return pt();if(i===40)return wt();for(r=n.substr(t,c),e=r.length;e>0;){if(f.hasOwnProperty(r))return t+=e,{type:nt,operator:r,argument:it(),prefix:!0};r=r.substr(0,--e)}return!1},at=function(){for(var n="";o(u(t));)n+=i(t++);if(i(t)===".")for(n+=i(t++);o(u(t));)n+=i(t++);if(i(t)==="e"||i(t)==="E"){for(n+=i(t++),(i(t)==="+"||i(t)==="-")&&(n+=i(t++));o(u(t));)n+=i(t++);if(!o(u(t-1)))throw new Error("Expected exponent ("+n+i(t)+") at character "+t);}if(l(u(t)))throw new Error("Variable names cannot start with a number ("+n+i(t)+") at character "+t);return{type:h,value:parseFloat(n),raw:n}},vt=function(){for(var n="",u=i(t++),f=!1,r;t=0;t--)i=this.expressions[t],f.isInstanceOf(i,n)&&this.expressions.splice(t,1);return this},u}(),observableProviderBase:function(){var i=function(n){this.name=n||"observableProviderBase"},n=i.prototype;return n.toString=function(){return this.name},n.isObservable=function(){throw t.createError(r.notImplemented,[this.name,"isObservable"]);},n.toObservable=function(){throw t.createError(r.notImplemented,[this.name,"toObservable"]);},n.getValue=function(){throw t.createError(r.notImplemented,[this.name,"getValue"]);},n.setValue=function(){throw t.createError(r.notImplemented,[this.name,"setValue"]);},i}(),ajaxProviderBase:function(){var n=function(n){this.name=n||"ajaxProviderBase"},i=n.prototype;return i.toString=function(){return this.name},i.doAjax=function(){throw t.createError(r.notImplemented,[this.name,"doAjax"]);},n}(),serializationServiceBase:function(){var i=function(n){this.name=n||"serializationServiceBase"},n=i.prototype;return n.toString=function(){return this.name},n.serialize=function(){throw t.createError(r.notImplemented,[this.name,"serialize"]);},n.deserialize=function(){throw t.createError(r.notImplemented,[this.name,"deserialize"]);},i}(),promiseProviderBase:function(){var i=function(n){this.name=n||"promiseProviderBase"},n=i.prototype;return n.toString=function(){return this.name},n.deferred=function(){throw t.createError(r.notImplemented,[this.name,"deferred"]);},n.getPromise=function(){throw t.createError(r.notImplemented,[this.name,"getPromise"]);},n.resolve=function(){throw t.createError(r.notImplemented,[this.name,"resolve"]);},n.reject=function(){throw t.createError(r.notImplemented,[this.name,"reject"]);},i}(),dataServiceBase:function(){function a(n,e,o,s){var v,w;n==null?n="":n[n.length-1]!="/"&&(n+="/");s.uri=n;var h=null,a=null,y=null,p=null;if(o&&(h=o.ajaxProvider,a=o.serializationService,y=o.dataType,p=o.dataType),s.ajaxProvider=h&&f.isInstanceOf(h,i.ajaxProviderBase)?h:l.jQueryAjaxProviderInstance,s.serializationService=a&&f.isInstanceOf(a,i.SerializationService)?a:l.jsonSerializationServiceInstance,!(e===!0))if(e){if(f.isInstanceOf(e,c.metadataManager))s.metadataManager=e;else if(f.isObject(e))try{s.metadataManager=new c.metadataManager(e)}catch(b){throw t.createError(r.invalidArguments,{exception:b,args:arguments,dataService:this});}}else v=t.findInArray(u,n,"uri"),v?s.metadataManager=v.data:(w=s.fetchMetadata(),s.metadataManager=new c.metadataManager(w),u.push({uri:n,data:s.metadataManager}));s.dataType=y||"json";s.contentType=p||"application/json; charset=utf-8"}var u=[],h=function(n,t,i){a(n,t,i,this)},n=h.prototype;return n.toString=function(){return this.uri},n.getEntityType=function(n){return this.metadataManager?this.metadataManager.getEntityTypeByShortName(n):null},n.createQuery=function(n,i,r){return(t.assertPrm(n,"resourceName").isNotEmptyString().check(),i)?this.createEntityQuery(i,n,r):(this.metadataManager&&this.metadataManager.createQuery(n,null,r),new o.entityQuery(n,null,r))},n.createEntityQuery=function(n,i,u){if(t.assertPrm(n,"shortName").isNotEmptyString().check(),!this.metadataManager)throw t.createError(r.noMetadataEntityQuery,{dataService:this});return this.metadataManager.createQuery(i,n,u)},n.registerCtor=function(n,i,u){if(this.metadataManager==null)throw t.createError(r.noMetadataEntityQuery);this.metadataManager.registerCtor(n,i,u)},n.createEntity=function(n,i){if(!this.metadataManager)throw t.createError(r.noMetadataEntityQuery,{dataService:this});return this.metadataManager.createEntity(n,i)},n.createRawEntity=function(n,i){if(!this.metadataManager)throw t.createError(r.noMetadataEntityQuery,{dataService:this});return this.metadataManager.createRawEntity(n,i)},n.toEntity=function(n,t){var i=null;return this.metadataManager&&(i=this.metadataManager.getEntityType(t)),i||(i=new c.entityType(t)),e.entityTracker.toEntity(n,i,s.getObservableProvider())},n.toODataQueryParams=function(n,i){if(n.isMultiTyped===!0)throw t.createError(r.oDataNotSupportMultiTyped,{query:n});var u={varContext:i},f=[];return t.forEach(n.parameters,function(n){f.push({name:n.name,value:n.value==null?"":n.value})}),n.inlineCountEnabled===!0&&f.push({name:"$inlinecount",value:"allpages"}),t.forEach(n.expressions,function(n,t){u.expVarContext=n.varContext;var r,i;n.onlyBeetle===!0?(r="!e"+t,i=n.toBeetleQuery(u),i=n.name+":"+i):(r="$"+n.name,i=n.toODataQuery(u));f.push({name:r,value:i});u.expVarContext=undefined}),f},n.toBeetleQueryParams=function(n,i){var u={varContext:i},r=[];return t.forEach(n.parameters,function(n){r.push({name:n.name,value:n.value==null?"":n.value})}),n.inlineCountEnabled===!0&&r.push({name:"!e0",value:"inlinecount:allpages"}),t.forEach(n.expressions,function(n,t){u.expVarContext=n.varContext;r.push({name:"!e"+(t+1),value:n.name+":"+n.toBeetleQuery(u)});u.expVarContext=undefined}),r},n.fetchMetadata=function(){throw t.createError(r.notImplemented,["dataServiceBase","fetchMetadata"]);},n.createEntityAsync=function(){throw t.createError(r.notImplemented,["dataServiceBase","createEntityAsync"]);},n.executeQuery=function(){throw t.createError(r.notImplemented,["dataServiceBase","executeQuery"]);},n.executeQueryParams=function(){throw t.createError(r.notImplemented,["dataServiceBase","executeQueryParams"]);},n.saveChanges=function(){throw t.createError(r.notImplemented,["dataServiceBase","saveChanges"]);},h}()}}(),l=function(){return{defaultDateConverterInstance:function(){var n=function(){i.dateConverterBase.call(this,"Default Date Converter")},r;return t.inherit(n,i.dateConverterBase),r=n.prototype,r.parse=function(n){if(typeof n!="string"||n.length<10||!/^\d{4}[\/\-](0?[1-9]|1[012])[\/\-](0?[1-9]|[12][0-9]|3[01])$/.test(n.substr(0,10)))return null;/.\d{3}$/.test(n)&&(n+="Z");try{var t=Date.parse(n);return isNaN(t)?null:new Date(t)}catch(i){return null}},r.toISOString=function(n){return n.toISOString()},new n}(),koObservableProviderInstance:function(n){var u,r;return n&&(n.extenders.intercept=function(t,i){return n.computed({read:t,write:function(n){var r=i&&i.callback;r&&r(i.object,i.property,t,n)}})}),u=function(){i.observableProviderBase.call(this,"Knockout Observable Provider");t.tryFreeze(this)},t.inherit(u,i.observableProviderBase),r=u.prototype,r.isObservable=function(t,i){return n.isObservable(t[i])},r.toObservable=function(i,r,u){function s(t,r,u){var f=n.observable(r);return u?n.observable(r).extend({intercept:{object:i,property:t,callback:u}}):f}function c(t,r,u,f,o){var s;return u=u||[],f&&(u=new e.trackableArray(u,i,t,function(n,t,u,e,o){s.$fromKo!==!0&&i[r].valueHasMutated();s.$fromKo=!1;f(n,t,u,e,o)})),s=n.observableArray(u),s.subscribe(function(){s.$fromKo=!0},null,"beforeChange"),o&&(s.equalityComparer=function(n,r){o(i,t,n,r)}),s}var l=u&&u.propertyChange,a=u&&u.arrayChange,v=u&&u.dataPropertyChange,y=u&&u.scalarNavigationPropertyChange,p=u&&u.pluralNavigationPropertyChange,h=u&&u.arraySet,o=[];t.forEachProperty(i,function(n,t){o.push({p:n,v:t})});r&&r.hasMetadata&&(t.forEach(r.dataProperties,function(n){var r=i[n.name];r=r===undefined?null:n.handle(r);i[n.name]=s(n,r,v);t.removeFromArray(o,n.name,"p")}),t.forEach(r.navigationProperties,function(n){var r=i[n.name];r===undefined&&(r=null);i[n.name]=n.isScalar?s(n,r,y):c(n,n.name,r,p,h);t.removeFromArray(o,n.name,"p")}));t.forEach(o,function(n){var u=n.p,e=n.v;i[u]=f.isArray(e)?c(u,u,e,a,h):s(u,e,l);t.findInArray(r.properties,u)||r.properties.push(u)})},r.getValue=function(t,i){return n.utils.unwrapObservable(t[i])},r.setValue=function(n,t,i){n[t](i)},new u}(n.ko),propertyObservableProviderInstance:function(){var r=function(){i.observableProviderBase.call(this,"Property Observable Provider");t.tryFreeze(this)},n;return t.inherit(r,i.observableProviderBase),n=r.prototype,n.isObservable=function(n,t){return n.$fields!==undefined&&n.$fields[t]!==undefined},n.toObservable=function(n,i,r){function s(t,i,r){return Object.defineProperty(n,i,{get:function(){return n.$fields[i]},set:function(u){if(r){var f=w(n,i);r(n,t,f,u)}else n.$fields[i]=u},enumerable:!0,configurable:!0})}function c(t,i,r,f,o){return r=r||[],f&&(r=new e.trackableArray(r,n,t,f)),u[i]=r,Object.defineProperty(n,i,{get:function(){return n.$fields[i]},set:function(r){o?o(n,t,items,r):n.$fields[i]=r}})}function w(n,t){return function(){return arguments.length==0?n.$fields[t]:n.$fields[t]=arguments[0]}}var l=r&&r.propertyChange,a=r&&r.arrayChange,v=r&&r.dataPropertyChange,y=r&&r.scalarNavigationPropertyChange,p=r&&r.pluralNavigationPropertyChange,h=r&&r.arraySet,u={},o=[];return t.forEachProperty(n,function(n,t){o.push({p:n,v:t})}),i&&i.hasMetadata&&(t.forEach(i.dataProperties,function(i){var r=n[i.name];r=r===undefined?null:i.handle(r);delete n[i.name];s(i,i.name,v);t.removeFromArray(o,i.name,"p");u[i.name]=r}),t.forEach(i.navigationProperties,function(i){var r=n[i.name];r===undefined&&(r=null);delete n[i.name];i.isScalar?(s(i,i.name,y),u[i.name]=r):c(i,i.name,r,p,h);t.removeFromArray(o,i.name,"p")})),t.forEach(o,function(r){var e=r.p,o=r.v;delete n[e];f.isArray(o)?c(e,e,o,a,h):(s(e,e,l),u[e]=o);t.findInArray(i.properties,e)||i.properties.push(e)}),n.$fields=u,n},n.getValue=function(n,t){return n[t]},n.setValue=function(n,t,i){n[t]=i},new r}(),backboneObservableProviderInstance:function(){var r=function(){i.observableProviderBase.call("Backbone Observable Provider");t.tryFreeze(this)},n;return t.inherit(r,i.observableProviderBase),n=r.prototype,n.isObservable=function(n,t){return n.$fields!==undefined&&n.$fields[t]!==undefined},n.toObservable=function(n,i,r){function s(t,i,r){return Object.defineProperty(n,i,{get:function(){return n.$fields[i]},set:function(u){if(r){var f=w(n,i);r(n,t,f,u)}else n.$fields[i]=u},enumerable:!0,configurable:!0})}function c(t,i,r,f,o){return r=r||[],f&&(r=new e.trackableArray(r,n,t,f)),u[i]=r,Object.defineProperty(n,i,{get:function(){return n.$fields[i]},set:function(r){o?o(n,t,items,r):n.$fields[i]=r}})}function w(n,t){return function(){return arguments.length==0?n.$fields[t]:n.$fields[t]=arguments[0]}}var l=r&&r.propertyChange,a=r&&r.arrayChange,v=r&&r.dataPropertyChange,y=r&&r.scalarNavigationPropertyChange,p=r&&r.pluralNavigationPropertyChange,h=r&&r.arraySet,u={},o=[];return t.forEachProperty(n,function(n,t){o.push({p:n,v:t})}),i&&i.hasMetadata&&(t.forEach(i.dataProperties,function(i){var r=n[i.name];r=r===undefined?null:i.handle(r);delete n[i.name];s(i,i.name,v);t.removeFromArray(o,i.name,"p");u[i.name]=r}),t.forEach(i.navigationProperties,function(i){var r=n[i.name];r===undefined&&(r=null);delete n[i.name];i.isScalar?(s(i,i.name,y),u[i.name]=r):c(i,i.name,r,p,h);t.removeFromArray(o,i.name,"p")})),t.forEach(o,function(r){var e=r.p,o=r.v;delete n[e];f.isArray(o)?c(e,e,o,a,h):(s(e,e,l),u[e]=o);t.findInArray(i.properties,e)||i.properties.push(e)}),n.$fields=u,n},n.getValue=function(n,t){return n[t]},n.setValue=function(n,t,i){n[t]=i},new r}(),jQueryAjaxProviderInstance:function(n){function f(n){var i={status:n.status};if(n.responseText)try{i.detail=JSON.parse(n.responseText)}catch(r){}return t.createError(n.statusText,i)}var r=function(){i.ajaxProviderBase.call(this,"jQuery Ajax Provider");t.tryFreeze(this)},u;return t.inherit(r,i.ajaxProviderBase),u=r.prototype,u.doAjax=function(t,i,r,u,e,o,s,h,c,l){var a={url:t,accepts:{json:"application/json; odata=verbose",xml:"text/xml; application/xhtml+xml;application/xml",text:"text/xml"},type:i,dataType:r,contentType:u,traditional:!1,data:e,cache:!1,async:o,timeout:s,success:function(n,t,i){if(i.onreadystatechange=null,i.abort=null,n&&n.Error){var r=f(i);r.message=n.Error;l(r)}else c(n,i)},error:function(n){n.onreadystatechange=null;n.abort=null;l(f(n))}};return h!=null&&n.extend(a,h),n.ajax(a)},new r}(n.$),jsonSerializationServiceInstance:function(){var n=function(){i.serializationServiceBase.call(this,"Json Serializer");t.tryFreeze(this)},r;return t.inherit(n,i.serializationServiceBase),r=n.prototype,r.serialize=function(n){return JSON.stringify(n)},r.deserialize=function(n){return f.isTypeOf(n,"string")?JSON.parse(n):n},new n}(),qPromiseProviderInstance:function(n){var u=function(){i.promiseProviderBase.call(this,"Q Promise Provider");t.tryFreeze(this)},r;return t.inherit(u,i.promiseProviderBase),r=u.prototype,r.toString=function(){return this.name},r.deferred=function(){return n.defer()},r.getPromise=function(n){return n.promise},r.resolve=function(n,t){n.resolve(t)},r.reject=function(n,t){n.reject(t)},new u}(n.Q),jQueryPromiseProviderInstance:function(n){var u=function(){i.promiseProviderBase.call(this,"jQuery Promise Provider");t.tryFreeze(this)},r;return t.inherit(u,i.promiseProviderBase),r=u.prototype,r.toString=function(){return this.name},r.deferred=function(){return n.Deferred()},r.getPromise=function(n){return n.promise()},r.resolve=function(n,t){n.resolve(t)},r.reject=function(n,t){n.reject(t)},new u}(n.$)}}(),c=function(){return{dataProperty:function(){var i=function(n,t,i,r,u,f,o,s,h){this.owner=n;this.name=t;this.displayName=i||t;this.dataType=r;this.isNullable=u;this.isKeyPart=f;this.generationPattern=o;this.defaultValue=s;this.useForConcurrency=h;this.relatedNavigationProperties=[];this.validators=[];this.isEnum=r instanceof e.dataTypes.enum;this.isComplex=r.isComplex},n=i.prototype;return n.toString=function(){return this.displayName},n.isValid=function(n){return n==null?!this.isNullable:this.dataType.isValid(n,this)},n.handle=function(n){if(n==null){if(!this.isNullable)throw t.createError(r.notNullable,[this.displayName],{property:this});return null}if(n=this.dataType.handle(n,this),this.dataType==e.dataTypes.number&&this.precision&&n.toString().replace(/\./g,"").length>this.precision)throw t.createError(r.maxPrecisionError,[n,this.precision],{dataType:dataType,value:n});return this.dataType==e.dataTypes.number&&this.scale!=null&&(n=Number(n.toFixed(this.scale))),n},n.getDefaultValue=function(){return this.defaultValue?this.defaultValue:this.isNullable?null:this.generationPattern==u.generationPattern.Identity&&this.isKeyPart===!0?this.dataType.autoValue():this.dataType.defaultValue()},n.addValidation=function(n,i,r,u){t.assertPrm(n,"name").isNotEmptyString().check();t.assertPrm(i,"func").isFunction().check();this.validators.push(new e.validator(n,i,r,u))},n.validate=function(n){var u=[],i,r;return this.validators.length>0&&(i=this,r=t.getValue(n,i.name),t.forEach(this.validators,function(f){var e=f.validate(r,n);e&&u.push(t.createValidationError(n,r,i,e,f))})),u},i}(),navigationProperty:function(){var i=function(n,t,i,r,u,f,e,o){this.owner=n;this.name=t;this.displayName=i||t;this.entityTypeName=r;this.entityType=null;this.isScalar=u;this.isComplex=f===undefined;this.associationName=f;this.cascadeDelete=e===!0;this.foreignKeyNames=o||[];this.inverse=null;this.foreignKeys=[];this.validators=[];this.triggerOwnerModify=!1},n=i.prototype;return n.toString=function(){return this.displayName},n.checkAssign=function(n){if(n!=null){if(!n.$tracker)throw t.createError(r.assignErrorNotEntity,[this],{property:this,value:n});var i=n.$tracker.entityType;if(!this.entityType.isAssignableWith(i))throw t.createError(r.assignError,[this.name,i.shortName],{property:this,value:n});}},n.addValidation=function(n,i,r,u){t.assertPrm(n,"name").isNotEmptyString().check();t.assertPrm(i,"func").isFunction().check();this.validators.push(new e.validator(n,i,r,u))},n.validate=function(n){var u=[],i,r;return this.validators.length>0&&(i=this,r=t.getValue(n,i.name),t.forEach(this.validators,function(f){var e=f.validate(r);e&&u.push(t.createValidationError(n,r,i,e,f))})),u},i}(),entityType:function(){function u(n,t){n.baseType&&u(n.baseType,t);n.constructor&&n.constructor.call(t,t)}function a(n,i){for(var u,f,e,o=n.length,r=0;r0&&t.forEach(this.validators,function(r){var u=r.validate(n);u&&i.push(t.createValidationError(n,null,null,u,r))}),t.forEach(this.dataProperties,function(t){var r=t.validate(n);r&&(i=i.concat(r))}),t.forEach(this.navigationProperties,function(t){var r=t.validate(n);r&&(i=i.concat(r))}),i},i}(),metadataManager:function(){var i=function(n){this.types=[];this.enums={};this.name=null;this.displayName=null;n&&this.parseBeetleMetadata(n)},n=i.prototype;return n.toString=function(){return this.types.join(", ")},n.getEntityType=function(n,i){var u=t.findInArray(this.types,n,"name");if(!u&&i===!0)throw t.createError(r.notFoundInMetadata,[n],{metadataManager:this,typeName:n});return u},n.getEntityTypeByShortName=function(n,i){var u=t.findInArray(this.types,n,"shortName");if(!u&&i===!0)throw t.createError(r.notFoundInMetadata,[n],{metadataManager:this,typeShortName:n});return u},n.createQuery=function(n,i,r){if(i)return this.getEntityTypeByShortName(i,!0).createQuery(n,r);var u=t.filterArray(this.types,function(t){return t.setName==n});return u.length==1?u[0].createQuery(n,r):new o.entityQuery(n,null,r)},n.registerCtor=function(n,t,i){var r=this.getEntityTypeByShortName(n,!0);r.registerCtor(t,i)},n.createEntity=function(n,t){var i=this.getEntityTypeByShortName(n,!0);return i?i.createEntity(t):null},n.createRawEntity=function(n,t){var i=this.getEntityTypeByShortName(n,!0);return i?i.createRawEntity(t):null},n.parseBeetleMetadata=function(n){var o,a,s,r,v,y,p,w,l,i,f,b,k;if(this.types=[],this.enums={},this.name=n.n,this.displayName=t.getResourceValue(n.r,n.l||n.n),o=n.e,a={},o)for(s=0;s0&&a(n,t,r);i.currentGroup?i.currentGroup.filterItems.push(r):i.groups.push(r);i.currentGroup=r;i.openGroups.push(r)}function a(n,i,o){var h,p,v,a,y,c,w;if(n.length==3||n.length==4){if(h=n[1],f.isTypeOf(h,"string"))for(h=h.toLowerCase(),p=u.filterOps.symbols(),v=0;vs?i?-1:1:i?1:-1}}(c,s),o.push(l);return e=[],e.push.apply(e,n),e.sort(function(n,t){for(var r,i=0;i0},n}(),avgExp:function(){var n=function(n){i.expressionBase.call(this,"exec;avg",3,!0,!0);this.expStr=n;n&&(this.exp=h.jsep(n));this.isExecuter=!0},r;return t.inherit(n,i.expressionBase),r=n.prototype,r.toBeetleQuery=function(n){return this.exp?t.jsepToBeetleQuery(this.exp,n):""},r.clone=function(){return new n(this.expStr)},r.execute=function(t,i){return n.execute(t,this.exp,i)},n.execute=function(n,i,r){var u=i?t.jsepToFunction(i,r):function(n){return n};return o.queryFuncs.avg.impl(n,function(){return n},u)},n}(),maxExp:function(){var n=function(n){i.expressionBase.call(this,"exec;max",3,!0,!0);this.expStr=n;n&&(this.exp=h.jsep(n));this.isExecuter=!0},r;return t.inherit(n,i.expressionBase),r=n.prototype,r.toBeetleQuery=function(n){return this.exp?t.jsepToBeetleQuery(this.exp,n):""},r.clone=function(){return new n(this.expStr)},r.execute=function(t,i){return n.execute(t,this.exp,i)},n.execute=function(n,i,r){var u=i?t.jsepToFunction(i,r):function(n){return n};return o.queryFuncs.max.impl(n,function(){return n},u)},n}(),minExp:function(){var n=function(n){i.expressionBase.call(this,"exec;min",3,!0,!0);this.expStr=n;n&&(this.exp=h.jsep(n));this.isExecuter=!0},r;return t.inherit(n,i.expressionBase),r=n.prototype,r.toBeetleQuery=function(n){return this.exp?t.jsepToBeetleQuery(this.exp,n):""},r.clone=function(){return new n(this.expStr)},r.execute=function(t,i){return n.execute(t,this.exp,i)},n.execute=function(n,i,r){var u=i?t.jsepToFunction(i,r):function(n){return n};return o.queryFuncs.min.impl(n,function(){return n},u)},n}(),sumExp:function(){var n=function(n){i.expressionBase.call(this,"exec;sum",3,!0,!0);this.expStr=n;n&&(this.exp=h.jsep(n));this.isExecuter=!0},r;return t.inherit(n,i.expressionBase),r=n.prototype,r.toBeetleQuery=function(n){return this.exp?t.jsepToBeetleQuery(this.exp,n):""},r.clone=function(){return new n(this.expStr)},r.execute=function(t,i){return n.execute(t,this.exp,i)},n.execute=function(n,i,r){var u=i?t.jsepToFunction(i,r):function(n){return n};return o.queryFuncs.sum.impl(n,function(){return n},u)},n}(),countExp:function(){var n=function(n,t){i.expressionBase.call(this,"exec;count",3,!0,!0);this.expStr=n;n&&(this.exp=h.jsep(n));this.varContext=t;this.isExecuter=!0},r;return t.inherit(n,i.expressionBase),r=n.prototype,r.toBeetleQuery=function(n){return this.exp?t.jsepToBeetleQuery(this.exp,n):""},r.clone=function(){return new n(this.expStr,this.varContext)},r.execute=function(t,i){return n.execute(t,this.exp,i)},n.execute=function(n,i,r){return i&&(n=t.filterArray(n,t.jsepToFunction(i,r))),n.length},n}(),firstExp:function(){var n=function(n,t){i.expressionBase.call(this,"exec;first",3,!0,!1);this.expStr=n;n&&(this.exp=h.jsep(n));this.varContext=t;this.isExecuter=!0},u;return t.inherit(n,i.expressionBase),u=n.prototype,u.toBeetleQuery=function(n){return this.exp?t.jsepToBeetleQuery(this.exp,n):""},u.clone=function(){return new n(this.expStr,this.varContext)},u.execute=function(t,i){return n.execute(t,this.exp,i)},n.execute=function(n,i,u){if(i&&(n=t.filterArray(n,t.jsepToFunction(i,u))),n.length==0)throw t.createError(r.arrayEmpty,{array:n,expression:this});return n[0]},n}(),firstOrDefaultExp:function(){var n=function(n,t){i.expressionBase.call(this,"exec;firstOD",3,!0,!1);this.expStr=n;n&&(this.exp=h.jsep(n));this.varContext=t;this.isExecuter=!0},r;return t.inherit(n,i.expressionBase),r=n.prototype,r.toBeetleQuery=function(n){return this.exp?t.jsepToBeetleQuery(this.exp,n):""},r.clone=function(){return new n(this.expStr,this.varContext)},r.execute=function(t,i){return n.execute(t,this.exp,i)},n.execute=function(n,i,r){return i&&(n=t.filterArray(n,t.jsepToFunction(i,r))),n.length==0?null:n[0]},n}(),singleExp:function(){var n=function(n,t){i.expressionBase.call(this,"exec;single",3,!0,!1);this.expStr=n;n&&(this.exp=h.jsep(n));this.varContext=t;this.isExecuter=!0},u;return t.inherit(n,i.expressionBase),u=n.prototype,u.toBeetleQuery=function(n){return this.exp?t.jsepToBeetleQuery(this.exp,n):""},u.clone=function(){return new n(this.expStr,this.varContext)},u.execute=function(t,i){return n.execute(t,this.exp,i)},n.execute=function(n,i,u){if(i&&(n=t.filterArray(n,t.jsepToFunction(i,u))),n.length!=1)throw t.createError(r.arrayNotSingle,{array:n,expression:this});return n[0]},n}(),singleOrDefaultExp:function(){var n=function(n,t){i.expressionBase.call(this,"exec;singleOD",3,!0,!1);this.expStr=n;n&&(this.exp=h.jsep(n));this.varContext=t;this.isExecuter=!0},u;return t.inherit(n,i.expressionBase),u=n.prototype,u.toBeetleQuery=function(n){return this.exp?t.jsepToBeetleQuery(this.exp,n):""},u.clone=function(){return new n(this.expStr,this.varContext)},u.execute=function(t,i){return n.execute(t,this.exp,i)},n.execute=function(n,i,u){if(i&&(n=t.filterArray(n,t.jsepToFunction(i,u))),n.length>1)throw t.createError(r.arrayNotSingleOrEmpty,{array:n,expression:this});return n.length==0?null:n[0]},n}(),lastExp:function(){var n=function(n,t){i.expressionBase.call(this,"exec;last",3,!0,!1);this.expStr=n;n&&(this.exp=h.jsep(n));this.varContext=t;this.isExecuter=!0},u;return t.inherit(n,i.expressionBase),u=n.prototype,u.toBeetleQuery=function(n){return this.exp?t.jsepToBeetleQuery(this.exp,n):""},u.clone=function(){return new n(this.expStr,this.varContext)},u.execute=function(t,i){return n.execute(t,this.exp,i)},n.execute=function(n,i,u){if(i&&(n=t.filterArray(n,t.jsepToFunction(i,u))),n.length==0)throw t.createError(r.arrayEmpty,{array:n,expression:this});return n[n.length-1]},n}(),lastOrDefaultExp:function(){var n=function(n,t){i.expressionBase.call(this,"exec;lastOD",3,!0,!1);this.expStr=n;n&&(this.exp=h.jsep(n));this.varContext=t;this.isExecuter=!0},r;return t.inherit(n,i.expressionBase),r=n.prototype,r.toBeetleQuery=function(n){return this.exp?t.jsepToBeetleQuery(this.exp,n):""},r.clone=function(){return new n(this.expStr,this.varContext)},r.execute=function(t,i){return n.execute(t,this.exp,i)},n.execute=function(n,i,r){return i&&(n=t.filterArray(n,t.jsepToFunction(i,r))),n.length==0?null:n[n.length-1]},n}()}}(),queryFuncs:function(){var n={};return n.toupper=function(){var n=function(){i.queryFuncBase.call(this,"toupper","ToUpper",1)},r;return t.inherit(n,i.queryFuncBase),r=n.prototype,r.impl=function(n,t){return(t?t(n):n).toUpperCase()},new n}(),n.tolower=function(){var n=function(){i.queryFuncBase.call(this,"tolower","ToLower",1)},r;return t.inherit(n,i.queryFuncBase),r=n.prototype,r.impl=function(n,t){return(t?t(n):n).toLowerCase()},new n}(),n.substring=function(){var n=function(){i.queryFuncBase.call(this,"substring","Substring",3)},r;return t.inherit(n,i.queryFuncBase),r=n.prototype,r.impl=function(n,t,i,r){arguments.length==3?(r=i,i=t,t=n):t=t(n);i=i(n);r=r(n);var u=Number(i)+Number(r);return t&&t.substring(i,u)},new n}(),n.substringof=function(){var n=function(){i.queryFuncBase.call(this,"substringof","Contains",2)},r;return t.inherit(n,i.queryFuncBase),r=n.prototype,r.toBeetleFunction=function(n,t){return t=t?t+".":"",t+"Contains("+n+")"},r.impl=function(n,t,i){return i=i?i(n):n,i&&i.indexOf(t(n))>=0},new n}(),n.length=function(){var n=function(){i.queryFuncBase.call(this,"length","Length",1)},r;return t.inherit(n,i.queryFuncBase),r=n.prototype,r.toBeetleFunction=function(n){return n=n?n+".":"",n+"Length"},r.impl=function(n,t){return(t?t(n):n).length},new n}(),n.trim=function(){var n=function(){i.queryFuncBase.call(this,"trim","Trim",1)},r;return t.inherit(n,i.queryFuncBase),r=n.prototype,r.impl=function(n,t){return(t?t(n):n).trim()},new n}(),n.concat=function(){var n=function(){i.queryFuncBase.call(this,"concat","Concat",null)},r;return t.inherit(n,i.queryFuncBase),r=n.prototype,r.toBeetleFunction=function(){return"string.Concat("+Array.prototype.slice.call(arguments).join(", ")+")"},r.impl=function(n){for(var i=arguments[1](n).toString(),r=Array.prototype.slice.call(arguments,2),u=[],t=0;t=0},new u}(),n.round=function(){var n=function(){i.queryFuncBase.call(this,"round","Math.Round",1)},r;return t.inherit(n,i.queryFuncBase),r=n.prototype,r.toBeetleFunction=function(n){return"Math.Round("+n+")"},r.impl=function(n,t){return Math.round(t?t(n):n)},new n}(),n.ceiling=function(){var n=function(){i.queryFuncBase.call(this,"ceiling","Math.Ceiling(%1)",1)},r;return t.inherit(n,i.queryFuncBase),r=n.prototype,r.toBeetleFunction=function(n){return"Math.Ceiling("+n+")"},r.impl=function(n,t){return Math.ceil(t?t(n):n)},new n}(),n.floor=function(){var n=function(){i.queryFuncBase.call(this,"floor","Math.Floor",1)},r;return t.inherit(n,i.queryFuncBase),r=n.prototype,r.toBeetleFunction=function(n){return"Math.Floor("+n+")"},r.impl=function(n,t){return Math.floor(t?t(n):n)},new n}(),n.second=function(){var n=function(){i.queryFuncBase.call(this,"second","Second",1)},r;return t.inherit(n,i.queryFuncBase),r=n.prototype,r.toBeetleFunction=function(n){return n=n?n+".":"",n+"Second"},r.impl=function(n,t){return t=e.dataTypes.date.handle(t?t(n):n),t.getSeconds()},new n}(),n.minute=function(){var n=function(){i.queryFuncBase.call(this,"minute","Minute",1)},r;return t.inherit(n,i.queryFuncBase),r=n.prototype,r.toBeetleFunction=function(n){return n=n?n+".":"",n+"Minute"},r.impl=function(n,t){return t=e.dataTypes.date.handle(t?t(n):n),t.getMinutes()},new n}(),n.hour=function(){var n=function(){i.queryFuncBase.call(this,"hour","Hour",1)},r;return t.inherit(n,i.queryFuncBase),r=n.prototype,r.toBeetleFunction=function(n){return n=n?n+".":"",n+"Hour"},r.impl=function(n,t){return t=e.dataTypes.date.handle(t?t(n):n),t.getHours()},new n}(),n.day=function(){var n=function(){i.queryFuncBase.call(this,"day","Day",1)},r;return t.inherit(n,i.queryFuncBase),r=n.prototype,r.toBeetleFunction=function(n){return n=n?n+".":"",n+"Day"},r.impl=function(n,t){return t=e.dataTypes.date.handle(t?t(n):n),t.getDate()},new n}(),n.month=function(){var n=function(){i.queryFuncBase.call(this,"month","Month",1)},r;return t.inherit(n,i.queryFuncBase),r=n.prototype,r.toBeetleFunction=function(n){return n=n?n+".":"",n+"Month"},r.impl=function(n,t){return t=e.dataTypes.date.handle(t?t(n):n),t.getMonth()+1},new n}(),n.year=function(){var n=function(){i.queryFuncBase.call(this,"year","Year",1)},r;return t.inherit(n,i.queryFuncBase),r=n.prototype,r.toBeetleFunction=function(n){return n=n?n+".":"",n+"Year"},r.impl=function(n,t){return t=e.dataTypes.date.handle(t?t(n):n),t.getFullYear()},new n}(),n.max=function(){var n=function(){i.queryFuncBase.call(this,"max","Max",2)},u;return t.inherit(n,i.queryFuncBase),u=n.prototype,u.toODataFunction=function(){throw t.createError(r.functionNotSupportedForOData,["Max"]);},u.impl=function(n,t,i){var u,r,f;if(arguments.length==1?t=n:arguments.length==2?(i=t,t=n):t=t(n),t.length==0)return null;for(u=i?i(t[0]):t[0],r=1;ru&&(u=f);return u},new n}(),n.min=function(){var n=function(){i.queryFuncBase.call(this,"min","Min",2)},u;return t.inherit(n,i.queryFuncBase),u=n.prototype,u.toODataFunction=function(){throw t.createError(r.functionNotSupportedForOData,["Min"]);},u.impl=function(n,t,i){var u,r,f;if(arguments.length==1?t=n:arguments.length==2?(i=t,t=n):t=t(n),t.length==0)return null;for(u=i?i(t[0]):t[0],r=1;r0;for(r=0;r2&&(i=Array.prototype.slice.call(arguments).slice(2)),u=this.slice(n,n+t),this.changing.notify({added:i,removed:u}),i&&r(i,this),f=Array.prototype.splice.apply(this,arguments),this.after(this.object,this.property,this,u,i),this.changed.notify({added:i,removed:u}),f},n.remove=function(){var n=[],i=this;return this.changing.notify({added:[],removed:arguments}),t.forEach(arguments,function(r){var u=t.indexOf(i,r);u>=0&&(Array.prototype.splice.call(i,u,1),n.push(r))}),this.after(this.object,this.property,this,n,null),this.changed.notify({added:[],removed:arguments}),n},n.load=function(n,t,i,r,u){return this.entity.$tracker.loadNavigationProperty(this.propertyName,n,t,i,r,u)},i}(),event:function(){var i=function(n,t){this.name=n;this.subscribers=[];this.publisher=t},n=i.prototype;return n.toString=function(){return this.name},n.subscribe=function(n){t.findInArray(this.subscribers,n)||this.subscribers.push(n)},n.unsubscribe=function(n){t.removeFromArray(this.subscribers,n)},n.notify=function(){var n=arguments;t.forEach(this.subscribers,function(t){t.apply(t,n)})},i}(),dataTypes:function(){function u(n,i){throw t.createError(r.assignError,[n.name,i],{dataType:n,value:i});}var e=function(){var r=function(n){i.dataTypeBase.call(this,"dateBase");this.name=n},n;return t.inherit(r,i.dataTypeBase),n=r.prototype,n.defaultValue=function(){return new Date(-6847812e6)},n.isValid=function(n){return Object.prototype.toString.call(n)==="[object Date]"},n.handle=function(n){if(!this.isValid(n)){var t=n;n=this.tryParse(t);n||u(this,t)}return n},n.autoValue=function(){return new Date},n.getRawValue=function(n){return n==null?null:s.getDateConverter().toISOString(n)},n.tryParse=function(n){return s.getDateConverter().parse(n)},n.toODataValue=function(n){return n=this.handle(n),"datetime'"+s.getDateConverter().toISOString(n)+"'"},n.toBeetleValue=function(n){return n=this.handle(n),'"'+s.getDateConverter().toISOString(n)+'"'},r}(),n={};return n.object=function(){var n=function(){i.dataTypeBase.call(this,"object");t.tryFreeze(this)};return t.inherit(n,i.dataTypeBase),new n}(),n.array=function(){var u=function(){i.dataTypeBase.call(this,"array");t.tryFreeze(this)},n;return t.inherit(u,i.dataTypeBase),n=u.prototype,n.isValid=function(n){return n instanceof Array},n.defaultValue=function(){return[]},n.handle=function(n){return this.isValid(n)||(n=n.split(",")),n},n.autoValue=function(){throw t.createError(r.notImplemented,[this.name,"defaultValue"]);},n.toODataValue=function(n){return n},n.toBeetleValue=function(n){return n},new u}(),n.function=function(){var n=function(){i.dataTypeBase.call(this,"function");t.tryFreeze(this)};return t.inherit(n,i.dataTypeBase),new n}(),n.string=function(){var u=0,r=function(){i.dataTypeBase.call(this,"string");t.tryFreeze(this)},n;return t.inherit(r,i.dataTypeBase),n=r.prototype,n.defaultValue=function(){return""},n.handle=function(n){return this.isValid(n)||(n=n.toString()),n},n.autoValue=function(){return"key_"+--u},n.toODataValue=function(n){return"'"+n.replace(/'/g,"''")+"'"},n.toBeetleValue=function(n){return'"'+n.replace(/"/g,'""')+'"'},new r}(),n.guid=function(){var r=function(){i.dataTypeBase.call(this,"guid");t.tryFreeze(this)},n;return t.inherit(r,i.dataTypeBase),n=r.prototype,n.defaultValue=function(){return"00000000-0000-0000-0000-000000000000"},n.isValid=function(n){return typeof n=="string"&&n.match(/^\{?[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}\}?$/i)},n.handle=function(n){return this.isValid(n)||u(this,n),n},n.autoValue=function(){return t.createGuid()},n.toODataValue=function(n){return"guid'"+n+"'"},n.toBeetleValue=function(n){return'"'+n+'"'},new r}(),n.date=function(){var n=function(){e.call(this,"date");t.tryFreeze(this)};return t.inherit(n,e),new n}(),n.dateTimeOffset=function(){var n=function(){e.call(this,"dateTimeOffset");t.tryFreeze(this)},i;return t.inherit(n,e),i=n.prototype,i.toODataValue=function(n){return n=this.handle(n),"datetimeoffset'"+s.getDateConverter().toISOString(n)+"'"},new n}(),n.time=function(){var r=function(){i.dataTypeBase.call(this,"time");t.tryFreeze(this)},n;return t.inherit(r,i.dataTypeBase),n=r.prototype,n.defaultValue=function(){return"00:00:00"},n.isValid=function(n){return/^([01]?\d|2[0-3])(((:[0-5]?\d){2}(\.\d{1,3}){0,1})|(:[0-5]?\d){0,2})?$/.test(n)},n.handle=function(n){return this.isValid(n)||u(this,n),n},n.autoValue=function(){return"00:00:00"},n.toODataValue=function(n){return"time'"+n+"'"},n.toBeetleValue=function(n){return'"'+n+'"'},new r}(),n.boolean=function(){var r=function(){i.dataTypeBase.call(this,"boolean");t.tryFreeze(this)},f;return t.inherit(r,i.dataTypeBase),f=r.prototype,f.defaultValue=function(){return!1},f.handle=function(t){if(!this.isValid(t)){if(n.String.isValid(t)){var i=t.toLowerCase();if(i=="true"||i=="1")return!0;if(i=="false"||i=="0")return!1}throw u(this,t);}return t},new r}(),n.int=function(){var f=0,r=function(){i.dataTypeBase.call(this,"int");t.tryFreeze(this)},n;return t.inherit(r,i.dataTypeBase),n=r.prototype,n.defaultValue=function(){return 0},n.isValid=function(n){return typeof n=="number"&&n%1==0},n.handle=function(n){return typeof n!="number"&&(n=Number(n)),this.isValid(n)||u(this,n),n},n.autoValue=function(){return--f},new r}(),n.number=function(){var f=0,r=function(){i.dataTypeBase.call(this,"number");t.tryFreeze(this)},n;return t.inherit(r,i.dataTypeBase),n=r.prototype,n.defaultValue=function(){return 0},n.isValid=function(n){return!isNaN(n)&&typeof n=="number"},n.handle=function(n){return typeof n!="number"&&(n=Number(n)),this.isValid(n)||u(this,n),n},n.autoValue=function(){return--f},new r}(),n.byte=function(){var f=0,r=function(){i.dataTypeBase.call(this,"byte");t.tryFreeze(this)},n;return t.inherit(r,i.dataTypeBase),n=r.prototype,n.defaultValue=function(){return 0},n.isValid=function(n){return typeof n=="number"&&n%1==0&&n>=0&&n<256},n.handle=function(n){return typeof n!="number"&&(n=Number(n)),this.isValid(n)||u(this,n),n},n.autoValue=function(){return--f},new r}(),n.binary=function(){var r=function(){i.dataTypeBase.call(this,"binary");t.tryFreeze(this)},n;return t.inherit(r,i.dataTypeBase),n=r.prototype,n.defaultValue=function(){return'"AAAAAAAAAAA="'},n.isValid=function(){return!0},n.handle=function(n){return n},n.toODataValue=function(n){return n=this.handle(n),"X'"+s.getDateConverter().toISOString(n)+"'"},n.toBeetleValue=function(n){return'"'+n+'"'},new r}(),n.enum=function(){function e(n,i){var e,r,u,o;if(f.isArray(n))return e=0,t.forEach(n,function(n){e|=n.value}),e;if(f.isTypeOf(n,"string")){if(r=n.split(", "),r.length==1)return i[n];for(u=0;u0?this.name+" ("+n.join(", ")+")":this.name},u.validate=function(n,t){return this.func(n,t)==!0?null:this.message},n.byCode=function(i,u,f,e,o,h){var c=s.getLocalizeFunction();c&&(f=e&&c(e)||f,o=h&&c(h)||o);u=u||[];u.push(f);u.push(o);switch(i){case"re":return n.required.apply(null,u);case"sl":return n.stringLength.apply(null,u);case"ma":return n.maxLength.apply(null,u);case"mi":return n.minLength.apply(null,u);case"ra":return n.range.apply(null,u);case"rx":return n.regularExpression.apply(null,u);case"ea":return n.emailAddress.apply(null,u);case"cc":return n.creditCard.apply(null,u);case"ur":return n.url.apply(null,u);case"ph":return n.phone.apply(null,u);case"po":return n.postalCode.apply(null,u);case"ti":return n.time.apply(null,u);case"co":return n.compare.apply(null,u);default:throw t.createError(r.unknownValidator,[i]);}},n.required=function(i,u,e){var o=function(n){return n==null?!1:f.isTypeOf(n,"string")&&!i&&n==""?!1:!0};return u=t.formatString(u||r.requiredError,e),new n("Required",o,u,{allowEmptyStrings:i})},n.stringLength=function(i,u,e,o){var s=function(n){return!i&&!u?!0:f.isNotEmptyString(n)?i&&n.lengthu?!1:!0:!1};return e=t.formatString(e||r.stringLengthError,o,i,u),new n("StringLength",s,e,{min:i,max:u})},n.maxLength=function(i,u,f){var e=function(n){return n==null?!0:i&&n.length>i?!1:!0};return u=t.formatString(u||r.maxLenError,f,i),new n("MaxLength",e,u,{length:i})},n.minLength=function(i,u,f){var e=function(n){return n==null?!1:i&&n.lengthu?!1:!0};return f=t.formatString(f||r.rangeError,e,i,u),new n("Range",o,f,{min:i,max:u})},n.regularExpression=function(n,t,r){return f.isTypeOf(n,"string")&&(n=new RegExp(n)),i("RegularExpression",n,t,r)},n.emailAddress=function(n,t){return i("EmailAddress",/^\w+@[a-zA-Z_]+?\.[a-zA-Z]{2,3}$/,n,t)},n.creditCard=function(n,t){return i("CreditCard",/^((4\d{3})|(5[1-5]\d{2})|(6011)|(3[68]\d{2})|(30[012345]\d))[ -]?(\d{4})[ -]?(\d{4})[ -]?(\d{4}|3[4,7]\d{13})$/,n,t)},n.url=function(n,t){return i("Url",/(http|ftp|https):\/\/[\w-]+(\.[\w-]+)+([\w.,@?^=%&:\/~+#-]*[\w@?^=%&\/~+#-])?/,n,t)},n.phone=function(n,t){return i("Phone",/^(?!.*-.*-.*-)(?=(?:\d{8,10}$)|(?:(?=.{9,11}$)[^-]*-[^-]*$)|(?:(?=.{10,12}$)[^-]*-[^-]*-[^-]*$) )[\d-]+$/,n,t)},n.postalCode=function(n,t){return i("PostalCode",/^\d{5}([\-]?\d{4})?$/,n,t)},n.time=function(n,t){return i("Time",/^([01]?\d|2[0-3])(((:[0-5]?\d){2}(\.\d{1,3}){0,1})|(:[0-5]?\d){0,2})?$/,n,t)},n.compare=function(i,u,f){var o=function(n,r){var u=t.getValue(r,i);return n==u},e=s.getLocalizeFunction(),h=e&&e(i)||i;return u=t.formatString(u||r.compareError,f,h),new n("Compare",o,u,{property:i})},n}(),entityContainer:function(){function r(n,t){var i=new u(n);return t.push(i),i}var u=function(){function u(n,t){var i=r(n,t);return i>-1?t[i]:null}function r(n,t){var f=t.length,r,u,i;if(f>0)for(r=0,u=f-1;r<=u;){if(i=Math.floor((r+u)/2),t[i].keyn){u=i-1;continue}return i}return-1}function f(n,t){for(var i=0;it[i].key;)i++;return i}var i=function(n){this.typeName=n.name;this.keyIndex=[];t.tryFreeze(this)},n=i.prototype;return n.toString=function(){return this.typeName+": "+this.keyIndex.length},n.push=function(n,t){var i=f(n,this.keyIndex);this.keyIndex.splice(i,0,{key:n,entity:t})},n.remove=function(n){var t=r(n,this.keyIndex);this.keyIndex.splice(t,1)},n.getEntity=function(n){var t=u(n,this.keyIndex);return t?t.entity:null},n.getRelations=function(n,t){var f=t.inverse,r,i,u;if(!f)return null;for(r=[],i=0;i0)&&n.$tracker.isChanged()})},n.count=function(){return this.allEntities.length},n.findEntitySet=function(n){return t.findInArray(this.entitySets,n.name,"typeName")},i}(),entityTracker:function(){function y(n,t,i,r){r.entity=n;n.$tracker=r;r.entityType=t;r.entityState=u.entityStates.Detached;r.observableProvider=i;r.forceUpdate=!1;r.originalValues=[];r.changedValues=[];r.manager=null;r.owners=[];r.validationErrors=[];r.validationErrorsChanged=new e.event("validationErrorsChanged",r);r.entityStateChanged=new e.event("entityStateChanged",r);r.propertyChanged=new e.event("propertyChanged",r);r.arrayChanged=new e.event("arrayChanged",r);t.hasMetadata&&(r.key=l(r))}function p(n,t,i){var r={propertyChange:w,arrayChange:b,dataPropertyChange:k,scalarNavigationPropertyChange:d,pluralNavigationPropertyChange:g,arraySet:nt};return i.observableProvider.toObservable(n,t,r)}function c(n,t){n.baseType&&c(n.baseType,t);n.initializer&&n.initializer.call(t,t)}function l(n,t,i){var e=n.entityType,o,r,u,f;if(e.keys.length==0)return null;for(o=[],r=0;r=0;p--)k=y[p],k.entity==n&&k.property==u&&y.splice(p,1);y.length==0&&a.$tracker.manager&&a.$tracker.manager.detachEntity(a);h.$tracker.owners.push({entity:n,property:u})}c.manager&&(d=s.autoFixScalar,t.forEach(u.relatedNavigationProperties,function(n){var t,i,r;if(n.isScalar===!0)if(t=c.foreignKey(n),t){if(i=c.getValue(n.name),i&&i.$tracker.key===t)return;r=null;c.manager&&d&&(r=c.manager.getEntityByKey(t,n.entityType));r?c.setValue(n.name,r):i&&c.setValue(n.name,new e.valueNotifyWrapper(null))}else c.setValue(n.name,null)}))}}function d(n,u,h,c){var y=n.$tracker,d=!1,l,w,p,b,a,k;if(f.isInstanceOf(c,e.valueNotifyWrapper)&&(d=!0,c=c.value),l=h(),l!=c)if(u.checkAssign(c),h(c),s.liveValidate===!0&&o(u.validate(n),y,u),y.propertyChanged.notify({entity:n,property:u,oldValue:l,newValue:c}),v(c,y.manager),u.isComplex){if(c==null)throw t.createError(r.complexCannotBeNull,[u.displayName],{entity:n,property:u});for(w=l.$tracker.owners,p=w.length-1;p>=0;p--)b=w[p],b.entity==n&&b.property==u&&w.splice(p,1);l.$tracker.owners.length==0&&l.$tracker.manager&&l.$tracker.manager.detachEntity(l);c.$tracker.owners.push({entity:n,property:u});i(n,u.name,c.$tracker.toRaw(),y)}else d||(u.triggerOwnerModify&&u.foreignKeys.length==0&&i(n,null,null,y),t.setForeignKeys(n,u,c)),a=u.inverse,a&&(a.isScalar?(l&&l.$tracker.setValue(a.name,null),c&&c.$tracker.setValue(a.name,n)):(l&&l.$tracker.getValue(a.name).remove(n),c&&(k=c.$tracker.getValue(a.name),t.findInArray(k,n)||k.push(n))))}function g(n,r,u,f,e){var c=n.$tracker,h;s.liveValidate===!0&&o(r.validate(n),c,r);r.triggerOwnerModify&&i(n,null,null,c);c.arrayChanged.notify({entity:n,property:r,items:u,removedItems:f,addedItems:e});h=r.inverse;h&&(f&&t.forEach(f,function(t){t.$tracker.getValue(h.name)==n&&t.$tracker.setValue(h.name,null)}),e&&t.forEach(e,function(t){v(t,c.manager);t.$tracker.setValue(h.name,n)}))}function nt(n,i,f,e){var l=s.getArraySetBehaviour(),h,o,c;if(l==u.arraySetBehaviour.NotAllowed)throw t.createError(r.settingArrayNotAllowed,{entity:n,property:e});if(h=[],o=t.filterArray(f,function(){return!0}),l==u.arraySetBehaviour.Replace&&t.forEach(i,function(n){t.findInArray(o,n)?t.removeFromArray(o,n):h.push(n)}),l==u.arraySetBehaviour.Append&&t.forEach(f,function(n){t.findInArray(i,n)&&t.removeFromArray(o,n)}),h.length>0)for(c=h.length-1;c>=0;c--)i.splice(t.indexOf(i,h[c]),1);o.length>0&&i.push.apply(i,o)}function tt(n){var i=n.$tracker;t.forEach(i.entityType.navigationProperties,function(r){var f,e,u;r.inverse&&(f=r.inverse,r.isScalar?(e=i.getValue(r.name),e&&t.setForeignKeys(e,f,n)):(u=i.getValue(r.name),u&&u.length>0&&t.forEach(u,function(i){t.setForeignKeys(i,f,n)})))})}function v(n,i){if(n&&i&&!n.$tracker.entityType.isComplexType&&!i.isInManager(n)){if(n.$tracker.manager)throw t.createError(r.entityAlreadyBeingTracked,null,{entity:n,manager:i});i.addEntity(n)}}function i(n,r,f,e){var o=e.entityState;o==u.entityStates.Unchanged&&(t.forEach(e.entityType.navigationProperties,function(n){var u=n.inverse,r;u&&u.triggerOwnerModify&&(r=e.getValue(n.name),r&&(n.isScalar?i(r,null,null,r.$tracker):t.forEach(r,function(n){i(n,null,null,n.$tracker)})))}),e.toModified());it(r,f,e.originalValues,e.changedValues)}function it(n,i,r,u){var f,e;n!=null&&(i==null||i.$tracker==null||i.$tracker.entityType.isComplexType)&&(f=t.findInArray(r,n,"p"),f||r.push({p:n,v:i}),e=t.findInArray(u,n,"p"),e||u.push({p:n,v:i}))}function o(n,i,r){var u=[],f=r?t.filterArray(i.validationErrors,function(n){return n.property===r}):t.filterArray(i.validationErrors,function(){return!0});t.forEach(f,function(r){t.findInArray(n,r.validator,"validator")?t.removeFromArray(n,r.validator,"validator"):(t.removeFromArray(i.validationErrors,r),u.push(r))});i.validationErrors=i.validationErrors.concat(n);(u.length>0||n.length>0)&&i.validationErrorsChanged.notify({errors:i.validationErrors,added:n,removed:u})}var h=function(n,t,i){delete n.$type;delete n.$id;y(n,t,i||s.getObservableProvider(),this);p(n,t,this);c(t,n)},n=h.prototype;return n.toString=function(){return"EntityTracker: "+this.entityType.shortName+", key: "+this.key},n.setManagerInfo=function(n){if(this.manager)throw t.createError(r.entityAlreadyBeingTracked,{otherManager:this.manager});t.assertPrm(n,"manager").isInstanceOf(e.entityManager).check();this.manager=n},n.isChanged=function(){return this.entityState===u.entityStates.Added||this.entityState===u.entityStates.Deleted||this.entityState===u.entityStates.Modified},n.toAdded=function(){if(this.entityState!=u.entityStates.Added){var n={entity:this.entity,oldState:this.entityState,newState:u.entityStates.Added,newChanged:!this.isChanged()};this.entityState=u.entityStates.Added;this.entityStateChanged.notify(n)}},n.toModified=function(){if(this.entityState!=u.entityStates.Modified){var n={entity:this.entity,oldState:this.entityState,newState:u.entityStates.Modified,newChanged:!this.isChanged()};this.entityState=u.entityStates.Modified;this.entityStateChanged.notify(n)}},n.toDeleted=function(){if(this.entityState!=u.entityStates.Deleted){var n={entity:this.entity,oldState:this.entityState,newState:u.entityStates.Deleted,newChanged:!this.isChanged()};this.entityState=u.entityStates.Deleted;this.entityStateChanged.notify(n)}},n.toUnchanged=function(){if(this.entityState!=u.entityStates.Unchanged){var n={entity:this.entity,oldState:this.entityState,newState:u.entityStates.Unchanged,newUnchanged:this.isChanged()};this.originalValues.length=0;this.changedValues.length=0;this.entityState=u.entityStates.Unchanged;this.entityStateChanged.notify(n)}},n.toDetached=function(){if(this.entityState!=u.entityStates.Detached){var n={entity:this.entity,oldState:this.entityState,newState:u.entityStates.Detached,newUnchanged:this.isChanged()};this.entityState=u.entityStates.Detached;this.entityStateChanged.notify(n)}},n.undoChanges=function(){var n=this;t.forEach(this.changedValues,function(t){n.setValue(t.p,t.v)});this.changedValues.length=0},n.acceptChanges=function(){this.changedValues.length=0},n.getValue=function(n){return this.observableProvider.getValue(this.entity,n)},n.setValue=function(n,t){this.observableProvider.setValue(this.entity,n,t)},n.foreignKey=function(n){var r=n.entityType,u,t,e,f,o,i;if(r.keys.length==0)return null;for(u=[],t=0;t2)throw t.createError(r.managerInvalidArgs,{entityManager:u});var o=n[0],s=n[1];if(f.isInstanceOf(o,i.dataServiceBase))u.dataService=o;else if(f.isTypeOf(o,"string"))u.dataService=s?new v.webApiService(o,s):new v.webApiService(o,!1);else throw t.createError(r.managerInvalidArgs,{entityManager:this});u.pendingChangeCount=0;u.entities=new e.entityContainer;u.validationErrors=[];u.entityStateChanged=new e.event("entityStateChanged",u);u.validationErrorsChanged=new e.event("validationErrorsChanged",u);u.hasChangesChanged=new e.event("hasChangesChanged",u);u.queryExecuting=new e.event("queryExecuting",u);u.queryExecuted=new e.event("queryExecuted",u);u.saving=new e.event("saving",u);u.saved=new e.event("saved",u)}function o(n,i,e,o,h,c,l){e||(e=u.mergeStrategy.Preserve);o&&o!==u.entityStates.Detached||(o=u.entityStates.Added);c==null&&(c=s.autoFixScalar);l==null&&(l=s.autoFixPlural);i=i||h.flatEntities(f.isArray(n)?n:[n]);var y=[],p=[],v=[],w=h.entities.count(),a=h;t.forEach(i,function(n){var f=n.$tracker;if(!f&&n.$type)f=a.toEntity(n,n.$type).$tracker;else if(f.entityType.isComplexType||h.isInManager(n))return;var o=f.entityType,s=f.key,i=null;if(w>0&&s&&(i=a.entities.getEntityByKey(s,o.floorType)),i){if(o.name!==i.$tracker.entityType.name)throw t.createError(r.sameKeyOnDifferentTypesError,[i.$tracker.entityType.shortName,o.shortName],{existingEntity:i,entity:n,manager:a});if(e===u.mergeStrategy.ThrowError)throw t.createError(r.sameKeyExists,{existingEntity:i,entity:n,manager:a});else e===u.mergeStrategy.Preserve?v.push({o:n,n:i}):(v.push({o:n,n:i}),p.push({o:i,n:n}))}else a.entities.push(n),n.$tracker.setManagerInfo(a),y.push(n)});t.forEach(y,function(n){d(n,c,l,a);lt(n,a);k(n,o);s.validateOnMerge===!0&&n.$tracker.validate()});t.forEach(p,function(n){ot(n.o,n.n);k(n.o,o)});t.forEach(v,function(i){var r=t.indexOf(n,i.o);r>=0&&(n[r]=i.n);st(i.o,i.n,c,l,a)})}function b(n,i){if(!i.isInManager(n))throw t.createError(r.entityNotBeingTracked,{entity:n,manager:i});}function k(n,i){if(i===u.entityStates.Unchanged)n.$tracker.toUnchanged();else if(i===u.entityStates.Modified)n.$tracker.toModified();else if(i===u.entityStates.Added)n.$tracker.toAdded();else throw t.createError(r.mergeStateError,[i],{entity:n,state:i});}function ot(n,i){var r=i.$tracker;t.forEach(r.entityType.dataProperties,function(t){n.$tracker.setValue(t.name,r.getValue(t.name))})}function d(n,i,r,u){if(i==!0||r==!0){var e=n.$tracker,o=e.entityType;t.forEach(o.navigationProperties,function(t){var f=e.getValue(t.name),o,h,s,c,l;if(t.isComplex){for(o=f.$tracker.owners,h=!1,s=0;s=0;u--)r=t[u],r&&r.$tracker&&r.$tracker.entityType.hasMetadata&&r.$tracker.manager!=i&&(f=i.getEntityByKey(r.$tracker.key,r.$tracker.entityType),f?t.splice(u,1,f):t.splice(u,1))}function st(n,i,r,u,f){var c=n.$tracker.entityType,h,s,e,o;t.forEach(c.navigationProperties,function(c){var y,p,l,a,v;c.isComplex||(h=n.$tracker,s=i.$tracker,e=h.getValue(c.name),o=s.getValue(c.name),c.isScalar?o||(r==!0?tt(i,c,null,f):r===!0&&c.inverse&&c.inverse.isScalar||u===!0&&c.inverse&&!c.inverse.isScalar||(y=h.foreignKey(c),p=s.foreignKey(c),y==p&&e!=null&&f.isInManager(e)&&(l=c.inverse,l?l.isScalar?e.$tracker.setValue(l.name,i):(a=e.$tracker.getValue(l.name),v=t.indexOf(a,n),v>=0&&a.splice(v,1,i)):s.setValue(c.name,e)))):u?it(i,c,o,f):r===!0&&c.inverse||t.forEach(e,function(n){f.isInManager(n)&&!t.findInArray(o,n)&&o.push(n)}))})}function tt(n,t,i,r){var f=n.$tracker,u=f.foreignKey(t);i?u!=i.$tracker.key&&setForeignKeys(n,t,i):u&&f.setValue(t.name,r.entities.getEntityByKey(u,t.entityType))}function it(n,i,r,u){var f=u.entities.getRelations(n,i);f&&t.forEach(f,function(n){t.findInArray(r,n)||r.push(n)})}function rt(n,i){var r=n.$tracker,u=r.entityType,f=i?new e.valueNotifyWrapper(null):null;u.hasMetadata&&t.forEach(u.navigationProperties,function(n){n.isScalar?r.setValue(n.name,f):r.getValue(n.name).splice(0)})}function ht(n,i,r){t.forEach(n,function(n){n.$tracker.entityState==u.entityStates.Deleted?(n.$tracker.toDetached(),ut(n,r),i.remove(n)):n.$tracker.toUnchanged()})}function ct(n,i,r){if(i.removed.length>0)for(var u=i.removed.length-1;u>=0;u--)r.validationErrors.splice(t.indexOf(r.validationErrors,i.removed[u]),1);i.added.length>0&&r.validationErrors.push.apply(r.validationErrors,i.added);(i.removed.length>0||i.added.length>0)&&r.validationErrorsChanged.notify({errors:r.validationErrors,added:i.added,removed:i.removed})}function lt(n,t){n.$tracker.entityStateChanged.subscribe(function(n){var i=t.pendingChangeCount;n.newChanged===!0?t.pendingChangeCount++:n.newUnchanged===!0&&t.pendingChangeCount--;t.entityStateChanged.notify(n);i==0&&t.pendingChangeCount>0?t.hasChangesChanged.notify({hasChanges:!0}):i>0&&t.pendingChangeCount==0&&t.hasChangesChanged.notify({hasChanges:!1})});n.$tracker.validationErrorsChanged.subscribe(function(i){ct(n,i,t)})}function ut(n,i){n.$tracker.entityStateChanged.unsubscribe(i.entityStateChanged.notify);n.$tracker.validationErrorsChanged.unsubscribe(i.validationErrorsChanged.notify);var r=t.filterArray(i.validationErrors,function(t){return t.entity==n});t.removeFromArray(i.validationErrors,n,"entity");i.validationErrorsChanged.notify({errors:i.validationErrors,removed:r,added:[]})}function at(n,t,i){var r={manager:n,query:t,options:i};return n.queryExecuting.notify(r),a.queryExecuting.notify(r),r}function ft(n,t,i,r){var u={manager:n,query:t,options:i,result:r};return n.queryExecuted.notify(u),a.queryExecuted.notify(u),u.result}function vt(n,t,i){var r={manager:n,changes:t,options:i};return n.saving.notify(r),a.saving.notify(r),r.options}function yt(n,t,i){var r={manager:n,changes:t,options:i};n.saved.notify(r);a.saved.notify(r)}function l(n,t,i,r){n&&n(r);t&&t.resolve(i,r)}function h(n,t,i,r,u){if(n&&n(r),t&&t.reject(i,r),r.manager=u,!n&&!t)throw new r;}var y=function(){et(arguments,this)},n=y.prototype;return n.toString=function(){return this.dataService.toString()+", "+r.pendingChanges+": "+this.pendingChangeCount+", "+r.validationErrors+": "+this.validationErrors.length},n.getEntityType=function(n){return this.dataService.getEntityType(n)},n.createQuery=function(n,t){return this.dataService.createQuery(n,t,this)},n.createEntityQuery=function(n,t){return this.dataService.createEntityQuery(n,t,this)},n.registerCtor=function(n,t,i){this.dataService.registerCtor(n,t,i)},n.createEntity=function(n,t){var i=this.dataService.createEntity(n,t),r=[i];return o(r,null,u.mergeStrategy.ThrowError,u.entityStates.Added,this),i},n.createDetachedEntity=function(n,t){return this.dataService.createEntity(n,t)},n.createRawEntity=function(n,t){return this.dataService.createRawEntity(n,t)},n.createEntityAsync=function(n,t,i,r,u){return p(n,t,i,r,u,this)},n.createRawEntityAsync=function(n,t,i,r,u){return i?i.makeObservable=!1:i={makeObservable:!1},p(n,t,i,r,u,this)},n.executeQuery=function(n,i,e,c){var k,a,p,d,g,b;n.options&&(i=t.combine(n.options,i));k=at(this,n,i);n=k.query;i=k.options;a=i&&i.async==!1?null:s.getPromiseProvider();p=null;a&&(p=a.deferred());var y=u.mergeStrategy.Preserve,v=u.executionStrategy.Server,w=null,nt,tt;if(f.isEnum(i,u.mergeStrategy)?(y=i,i={makeObservable:y!=u.mergeStrategy.NoTrackingRaw}):f.isEnum(i,u.executionStrategy)?v=i:i&&(i.merge&&(y=i.merge),i.execution&&(v=i.execution),i.autoFixScalar!=null&&(nt=i.autoFixScalar),i.autoFixPlural!=null&&(tt=i.autoFixPlural),i.makeObservable=y!=u.mergeStrategy.NoTrackingRaw),d=y==u.mergeStrategy.NoTracking||y==u.mergeStrategy.NoTrackingRaw,d&&v==u.executionStrategy.Both)throw t.createError(r.executionBothNotAllowedForNoTracking,{executionStrategy:v,mergeStrategy:y});return((v==u.executionStrategy.Local||v==u.executionStrategy.LocalIfEmptyServer)&&(w=this.executeQueryLocally(n)),g=null,v==u.executionStrategy.Local||v==u.executionStrategy.LocalIfEmptyServer&&w&&(w.length==null||w.length>0)?(w=ft(this,n,i,w),l(e,a,p,w)):(b=this,this.dataService.executeQuery(n,i,function(t,r,s,w){try{var k=!1;t&&(d||(f.isArray(t)||(t=[t],k=!0),o(t,r,y,u.entityStates.Unchanged,b,nt,tt),k&&(t=t[0])));v==u.executionStrategy.Both&&(t=b.executeQueryLocally(n),s!=null&&t.$inlineCountDiff!=null&&(s+=t.$inlineCountDiff));t&&(n.inlineCountEnabled&&s!=null&&(t.$inlineCount=s),w&&(t.$extra=w));t=ft(b,n,i,t);l(e,a,p,t);a||(g=t)}catch(it){h(c,a,p,it,b)}},function(t){t.query=n;h(c,a,p,t,b)})),a)?a.getPromise(p):g},n.executeQueryLocally=function(n,i){var c=n.entityType,l,e,h,a;if(c)if(e=this.entities.findEntitySet(c),e)l=e.getEntities();else return[];else throw t.createError(r.typeRequiredForLocalQueries);var f=[],o=[],s=!1;return t.forEach(l,function(n){n.$tracker.entityState==u.entityStates.Added?(s=!0,f.push(n)):n.$tracker.entityState==u.entityStates.Deleted?(s=!0,o.push(n)):(f.push(n),o.push(n))}),h=n.toFunction(),f=h(f,i),f.$inlineCount&&s&&(a=h(o,i),f.$inlineCountDiff=f.$inlineCount-a.$inlineCount),f},n.getEntityByKey=function(n,t){var i=f.isInstanceOf(t,c.entityType)?t:this.getEntityType(t,!0);return this.entities.getEntityByKey(n,i)},n.deleteEntity=function(n){var i,f,e;for(b(n,this),i=this,f=[],t.forEach(n.$tracker.entityType.navigationProperties,function(u){var e,o;if(u.cascadeDelete){if(u.inverse&&u.inverse.cascadeDelete)throw t.createError(r.twoEndCascadeDeleteNotAllowed,{entity:n,property:u});e=n.$tracker.getValue(u.name);e&&(u.isScalar?u.foreignKeys!=null&&u.foreignKeys.length>0?f.push(e):i.deleteEntity(e):(o=t.filterArray(e,function(){return!0}),t.forEach(o,function(n){i.deleteEntity(n)})))}}),n.$tracker.entityState===u.entityStates.Added?this.detachEntity(n):(rt(n,!0),n.$tracker.toDeleted()),e=0;e0)throw t.createError(r.cannotDetachComplexTypeWithOwners);b(n,this);rt(n,!0);ut(n,this);n.$tracker.toDetached();n.$tracker.manager=null;this.entities.remove(n)},n.createSavePackage=function(n,t){var f=t&&t.userData||null,i=t&&t.forceUpdate,r,u;return i==null&&(i=s.forceUpdate),r={userData:f,forceUpdate:i},u=this.exportEntities(n||this.getChanges(),t),r.entities=u,r},n.rejectChanges=function(n,i){var e=this,r;f.isArray(n)||(n=[n]);r=i===!0?this.flatEntities(n):n;t.forEach(r,function(n){var t=n.$tracker;t.entityState==u.entityStates.Added?e.detachEntity(n):t.entityState==u.entityStates.Modified&&(t.undoChanges(),t.toUnchanged())})},n.undoChanges=function(n,i){f.isArray(n)||(n=[n]);var r=i===!0?this.flatEntities(n):n;t.forEach(r,function(n){n.$tracker.undoChanges()})},n.acceptChanges=function(n,i){f.isArray(n)||(n=[n]);var r=i===!0?this.flatEntities(n):n;t.forEach(r,function(n){n.$tracker.acceptChanges()})},n.exportEntities=function(n,i){var e=[],r,f;return n=n||this.entities.getEntities(),r=i&&i.forceUpdate,r==null&&(r=s.forceUpdate),f=i&&i.minimizePackage,f==null&&(f=s.minimizePackage),t.forEach(n,function(n,i){var o=n.$tracker,a=o.entityType,h=o.entityState,c,s,l;if(r===!1&&(r=o.forceUpdate),c={},f===!0)if(h==u.entityStates.Modified)if(o.originalValues.length>0)s={},t.forEach(o.originalValues,function(t){var f,r=t.p.split("."),e,u,i;if(r.length>1){for(e=0;e0},n.getChanges=function(){return this.entities.getChanges()},n.saveChanges=function(n,i,e){var c=n&&n.entities||this.getChanges(),a,v,p,w,y;n=vt(this,c,n);a=n&&n.async==!1?null:s.getPromiseProvider();v=null;a&&(v=a.deferred());var b=n&&n.autoFixScalar,k=n&&n.autoFixPlural,d=null;return(f.isArray(c)||(c=[c]),c&&c.length>0?(p=[],s.validateOnSave===!0&&t.forEach(c,function(n){if(n.$tracker.entityState!=u.entityStates.Deleted){var t=n.$tracker.validate();t&&t.length>0&&p.push({entity:n,validationErrors:t})}}),p.length>0?(w=new t.createError(r.validationFailed,{entities:c,validationErrors:p}),w.entitiesInError=p,h(e,a,v,w,this)):(y=this,this.dataService.saveChanges(this.createSavePackage(c,n),n,function(r){try{r.GeneratedEntities!=null&&r.GeneratedEntities.length>0&&o(r.GeneratedEntities,null,u.mergeStrategy.Preserve,u.entityStates.Unchanged,y,b,k);r.GeneratedValues&&t.forEach(r.GeneratedValues,function(n){var r=c[n.Index],f,t=n.Property.split("."),i,s,e;if(t.length>1){for(i=0;i",function(n,t){return n()>t()},"gt")),i.push(new n("Lesser","<",function(n,t){return n()=",function(n,t){var i=n(),r=t();return i==r||i>r},"ge")),i.push(new n("LesserEqual","<=",function(n,t){var i=n(),r=t();return i==r||i>",function(n,t){return n()>>t()})),n.find=function(n){var r=t.filterArray(i,function(t){return t.code==n||t.oData==n||t.js==n});return r.length>0?r[0]:null},n}(),filterOps:new h.enums({Equals:{oData:"eq",code:"=="},NotEqual:{oData:"ne",code:"!="},Greater:{oData:"gt",code:">"},Lesser:{oData:"lt",code:"<"},GreaterEqual:{oData:"ge",code:">="},LesserEqual:{oData:"le",code:"<="},Contains:{oData:"substringof",code:"contains",isFunc:!0},StartsWith:{oData:"startswith",code:"startswith",isFunc:!0},EndsWith:{oData:"endswith",code:"endswith",isFunc:!0}}),mergeStrategy:new h.enums("Preserve","Overwrite","ThrowError","NoTracking","NoTrackingRaw"),executionStrategy:new h.enums("Server","Local","Both","LocalIfEmptyServer"),generationPattern:new h.enums("Identity","Computed"),arraySetBehaviour:new h.enums("NotAllowed","Replace","Append")}}(),a=function(){return{queryExecuting:new e.event("beetleQueryExecuting",this),queryExecuted:new e.event("beetleQueryExecuted",this),saving:new e.event("beetleSaving",this),saved:new e.event("beetleSaved",this),info:new e.event("beetleInfo",this),warning:new e.event("beetleWarning",this),error:new e.event("beetleError",this)}}(),s=function(){var s,o;s=n.ko?l.koObservableProviderInstance:n.Backbone?l.backboneObservableProviderInstance:l.propertyObservableProviderInstance;n.Q?o=l.qPromiseProviderInstance:n.jQuery&&(o=l.jQueryPromiseProviderInstance);var h=u.arraySetBehaviour.NotAllowed,c=l.defaultDateConverterInstance,a,e={};return e.autoFixScalar=!0,e.autoFixPlural=!1,e.validateOnMerge=!0,e.validateOnSave=!0,e.liveValidate=!0,e.handleUnmappedProperties=!0,e.isCaseSensitive=!1,e.ignoreWhiteSpaces=!1,e.forceUpdate=!1,e.workAsync=!0,e.ajaxTimeout=null,e.minimizePackage=!1,e.getObservableProvider=function(){return s},e.setObservableProvider=function(n){var h,e,o;if(f.isInstanceOf(n,i.observableProviderBase))s=n;else{if(f.isNotEmptyString(n))for(h=u.observableProviders.symbols(),e=0;e p.Name.",functionNotSupportedForOData:"OData does not support %0 function, please use Beetle Query Strings (like: manager.executeQuery(query, {useBeetleQueryStrings: true}))",instanceError:"%0 is not an instance of %1.",invalidArguments:"Invalid arguments.",invalidDefaultValue:"%0 is not a valid default value for %0.",invalidEnumValue:"Invalid enum value, %0 cannot be found in %1.",invalidExpression:"%0 can only have %1 type expressions.",invalidPropertyAlias:"Invalid property alias.",invalidStatement:"Invalid statement.",invalidValue:"Invalid value for %0 property.",managerInvalidArgs:"Invalid arguments. Valid args are: {DataService} or {Uri, [MetadataManager]} or {Uri, [metadataString (string)]} or {Uri, [doNotUseMetadata (bool)]}.",maxLenError:"%0 property length cannot exceed %1.",maxPrecisionError:"Value %0 exceeded maximum precision of %1.",mergeStateError:"Cannot merge entities with %0 state.",minLenError:"%0 property length must be greater than %1.",noMetadataEntityQuery:"Cannot create entity query when no metadata is available.",noMetadataRegisterCtor:"Cannot register constructor when no metadata is available.",noOpenGroup:"Could not find any open group.",notFoundInMetadata:"Could not find %0 in metadata.",notImplemented:"%0 %1 is not implemented.",notNullable:"Cannot set %0 with null, property is not nullable.",oDataNotSupportMultiTyped:"Multi-Typed queries cannot be used for OData services.",onlyManagerCreatedCanBeExecuted:"Only queries which are created from a manager can be directly executed.",onlyManagerCreatedCanAcceptEntityShortName:"Only queries which are created from a manager can accept entity type short name parameter.",pendingChanges:"Pending changes",pluralNeedsInverse:"To load plural relations, navigation property must have inverse.",projectionsMustHaveAlias:"All projected values must have a property name or alias.",propertyNotFound:"Could not find property: %0.",queryClosed:"Query is closed, expression cannot be added. Queries must be executed after some expressions like first, single, any, all etc..",rangeError:"%0 property value must be between %1 and %2.",requiredError:"%0 property is required.",sameKeyExists:"There is already an entity with same key in the manager.",sameKeyOnDifferentTypesError:"Two different types of entities cannot have same keys when they are from same inheritance root (%0, %1).",settingArrayNotAllowed:"Setting array property is not allowed, you may change this via beetle.settings.setArraySetBehaviour(behavior).",stringLengthError:"%0 property length must be between %1 and %2.",twoEndCascadeDeleteNotAllowed:"Two-end cascade deletes are not supported.",typeError:"%0 type is not %1.",typeMismatch:"%0 value type mismatch. expected type: %1, given type: %2, value: %3",typeRequiredForLocalQueries:'To execute queries locally, entity type must be provided (createQuery("Entities", "Entity") or createEntityQuery("Entity")).',unclosedQuote:'Unclosed quote in "%0".',unclosedToken:'Unclosed "%0".',unexpectedProperty:'Unexpected property "%0".',unexpectedToken:"Unexpected %0.",unknownDataType:"Unknown data type: %0.",unknownExpression:"Unknown expression.",unknownFunction:"Unknown function: %0.",unknownParameter:"Unknown parameter: %0.",unknownValidator:"Unknown validator type: %0.",unsoppertedState:"Unsupported entity state: %0.",validationErrors:"Validation errors",validationFailed:"Validation failed.",valueCannotBeNull:"Value cannot be null: %0.",operatorNotSupportedForOData:"Operator is not supported for OData: %0."}),n.beetleI18N}(),y=function(){return{version:"1.0",i18N:r,helper:t,assert:f,libs:h,baseTypes:i,impls:l,metadata:c,querying:o,core:e,services:v,enums:u,events:a,settings:s,MetadataManager:c.metadataManager,entityManager:e.entityManager,EntityManager:e.entityManager,WebApiService:v.webApiService,MvcService:v.mvcService,EntityStates:u.entityStates,FilterOps:u.filterOps,MergeStrategy:u.mergeStrategy}}();return t.tryFreeze(y),n.beetle=y,y})(window); +(function(n){"use strict";var t=function(){return{assertPrm:function(n,t){return new f(n,t)},combine:function(n,i){var r,e,u;if(n==i)return n;if(r={},n!=null)for(e in n)r[e]=n[e];if(i!=null)for(u in i){var s=r[u],o=i[u],h=f.isTypeOf(s,"object")&&f.isTypeOf(o,"object")?t.combine(s,o):o;r[u]=h}return r},objEquals:function(n,i){var u,e,r,o;if(n==i)return!0;if(n==null||i==null)return!1;if(f.isObject(n)&&f.isObject(i)){u=0;e=0;for(r in n){if(!i.hasOwnProperty(r)||!t.objEquals(t.getValue(n,r),t.getValue(i,r)))return!1;u++}for(o in i)e++;return u==e}return!1},equals:function(n,t,i,r){var u,f;return typeof n=="string"&&typeof t=="string"&&(u=r&&r.isCaseSensitive,u==null&&(u=s.isCaseSensitive),f=r&&r.ignoreWhiteSpaces,f==null&&(f=s.ignoreWhiteSpaces),u||(n=n.toLowerCase(),t=t.toLowerCase()),f&&(n=n.trim(),t=t.trim())),i?n===t:n==t},formatString:function(n){var t=arguments,i=RegExp("%([0-"+(arguments.length-1)+"])","g"),r=RegExp("{([0-"+(arguments.length-2)+"])}","g");return n.replace(i,function(n,i){return t[Number(i)+1]||""}).replace(r,function(n,i){return t[Number(i)+1]||""})},tryFreeze:function(n,t){var r,i;if(!n||!Object.freeze)return n;if(Object.freeze(n),t===!0)for(r in n)i=n[r],f.isArray(i)?this.tryFreezeArray(i,t):f.isObject(i)&&this.tryFreeze(i,t);return n},tryFreezeArray:function(n,t){if(n&&Object.freeze)for(var i=0;i=0;u--)n.splice(r[u],1);return r.length},mapArray:function(n,t){for(var r,u=[],i=0;i0&&(u.splice(0,0,n),n=t.formatString.apply(null,u)),o=new Error(n),e)for(s in e)o[s]=e[s];return a.error.notify(o),o},setForeignKeys:function(n,t,i){for(var u,f,e,o,r=0;r")return i.aliases.push(n.left.name),it=t.jsepToODataQuery(n.right,i),i.aliases.pop(),it;if(k=u.langOperators.find(n.operator).oData,!k)throw t.createError(r.operatorNotSupportedForOData,[n.operator],{expression:n});return"("+t.jsepToODataQuery(n.left,i)+" "+k+" "+t.jsepToODataQuery(n.right,i)+")"}if(n.type=="UnaryExpression")return n.operator+t.jsepToODataQuery(n.argument,i);if(n.type=="Identifier"){if(l=n.name,l[0]=="@"){if(a=undefined,v=l.slice(1),i.expVarContext&&i.expVarContext[v]!==undefined?a=i.expVarContext[v]:i.varContext&&(a=i.varContext[v]),a===undefined)throw t.createError(r.unknownParameter,[l],{expression:n,queryContext:i});return e.dataTypes.toODataValue(a)}return l}if(n.type=="Literal")return e.dataTypes.toODataValue(n.value);if(n.type=="MemberExpression")return n.object.name&&n.object.name!=i.currentAlias&&t.findInArray(i.aliases,n.object.name)?n.property.name:t.jsepToODataQuery(n.object,i)+"/"+n.property.name;if(n.type=="Compound"){for(f=[],h=0;h"&&(c=s[0].left.name,s=[s[0].right]),c&&(i.currentAlias=c,i.aliases.push(c)),p=0;p"?(i.aliases.push(n.left.name),tt=t.jsepToBeetleQuery(n.right,i),i.aliases.pop(),tt):(it=u.langOperators.find(n.operator).code,"("+t.jsepToBeetleQuery(n.left,i)+" "+it+" "+t.jsepToBeetleQuery(n.right,i)+")");if(n.type=="UnaryExpression")return n.operator+t.jsepToBeetleQuery(n.argument,i);if(n.type=="Identifier"){if(c=n.name,c[0]=="@"){if(l=undefined,v=c.slice(1),i.expVarContext&&i.expVarContext[v]!==undefined?l=i.expVarContext[v]:i.varContext&&(l=i.varContext[v]),l===undefined)throw t.createError(r.unknownParameter,[c],{expression:n,queryContext:i});return e.dataTypes.toBeetleValue(l)}return c}if(n.type=="Literal")return e.dataTypes.toBeetleValue(n.value);if(n.type=="MemberExpression")return n.object.name&&t.findInArray(i.aliases,n.object.name)?n.property.name:t.jsepToBeetleQuery(n.object,i)+"."+n.property.name;if(n.type=="Compound"){for(f=[],h=0;h"&&(a=s[0].left.name,s=[s[0].right]),a&&(i.currentAlias=a,i.aliases.push(a)),y=0;y")return i.currentAlias&&i.aliases.push(i.currentAlias),i.currentAlias={alias:n.left.name},nt=t.jsepToFunction(n.right,i)(f),i.currentAlias=i.aliases.pop(),nt;var ut=u.langOperators.find(n.operator),tt=i.varContext,ft=function(){return t.jsepToFunction(n.left,i)(f)},et=function(){return t.jsepToFunction(n.right,i)(f)};return ut.asFunc.call(tt,ft,et)}if(n.type=="UnaryExpression")return it=function(){return t.jsepToFunction(n.argument,i)(f)},rt=u.langOperators.find(n.operator),rt.asFunc.call(tt,it);if(n.type=="Identifier"){if(e=n.name,e=="null")return null;if(e=="true")return!0;if(e=="false")return!1;if(e[0]=="@"){if(v=undefined,y=e.slice(1),i.expVarContext&&i.expVarContext[y]!==undefined?v=i.expVarContext[y]:i.varContext&&(v=i.varContext[y]),v===undefined)throw t.createError(r.unknownParameter,[e],{expression:n,queryContext:i});return v}return i.currentAlias&&i.currentAlias.alias==e?f:(w=t.findInArray(i.aliases,e,"alias"),w)?w.value:(b=t.getValue(f,e),b===undefined)?window[e]:b}if(n.type=="Literal")return n.value;if(n.type=="MemberExpression"){if(n.object.name){if(i.currentAlias&&n.object.name==i.currentAlias.alias)return t.getValue(f,n.property.name);if(k=t.findInArray(i.aliases,n.object.name,"alias"),k)return t.getValue(k.value,n.property.name)}return t.getValue(t.jsepToFunction(n.object,i)(f),n.property.name)}if(n.type=="CallExpression"){var s=n.arguments,h=[],p=null;if(s.length==1&&s[0]&&s[0].type=="BinaryExpression"&&s[0].operator=="=>"&&(p=s[0].left.name,s=[s[0].right]),p&&(i.currentAlias&&i.aliases.push(i.currentAlias),i.currentAlias={alias:p}),t.forEach(s,function(n){n!=null&&h.push(t.jsepToFunction(n,i))}),l=n.callee.type=="MemberExpression"?n.callee.property.name:n.callee.name,c=o.queryFuncs.getFunc(l,!1),c)n.callee.type=="MemberExpression"&&h.splice(0,0,t.jsepToFunction(n.callee.object,i)),h.splice(0,0,f),d=c.impl.apply(i,h);else{if(l[0]=="@")if(a=l.slice(1),i.expVarContext&&i.expVarContext[a])c=i.expVarContext[a];else if(i.varContext&&i.varContext[a])c=i.varContext[a];else throw t.createError(r.unknownParameter,[a],{expression:n,queryContext:i});else if(g=n.callee.type=="MemberExpression"?t.jsepToFunction(n.callee.object,i)(f):window,g==null||(c=g[l])==null)throw t.createError(r.unknownFunction,[l]);h=t.mapArray(h,function(){return this(f)});d=c.apply(i,h)}return p&&(i.currentAlias=i.aliases.pop()),d}throw t.createError(r.unknownExpression,{expression:n});}},jsepToProjector:function(n,i){var h=[],u,e,o,s;for(f.isArray(n)||(n=[n]),u=0;uu+2&&n[u+1].name&&n[u+1].name.toLowerCase()=="as"){if(u=u+2,s=n[u],s.type!="Identifier")throw t.createError(r.invalidPropertyAlias,{expressions:n,aliasExpression:s});e=s.name}if(n.length>1&&!e)throw t.createError(r.projectionsMustHaveAlias,{expressions:n,expression:o});h.push({p:e,func:t.jsepToFunction(o,i)})}return function(t){for(var r,u,f={},i=0;i0)throw t.createError(this.errors.join("\n"),{name:this.name,value:this.value});},n.hasValue=function(n,i,u){return n==null?(i&&i.push(t.formatString(r.valueCannotBeNull,u)),!1):!0},n.isObject=function(n,i,u){return e.dataTypes.object.isValid(n)?!0:(i&&i.push(t.formatString(r.typeError,u,"object")),!1)},n.isFunction=function(n,i,u){return e.dataTypes.function.isValid(n)?!0:(i&&i.push(t.formatString(r.typeError,u,"function")),!1)},n.isNotEmptyString=function(i,u,f){return!n.isTypeOf(i,"string",u)||i===""?(u&&u.push(t.formatString(r.cannotBeEmptyString,f)),!1):!0},n.isTypeOf=function(i,u,f,o){if(!n.hasValue(i))return!1;var s=e.dataTypes.byName(u);return s.isValid(i)?!0:(f&&f.push(t.formatString(r.typeMismatch,o,u,s,i)),!1)},n.isArray=function(n,i,u){return e.dataTypes.array.isValid(n)?!0:(i&&i.push(t.formatString(r.typeError,u,"array")),!1)},n.isEnum=function(n,i,u){return i.contains(n)?!0:(u&&u.push(t.formatString(r.invalidEnumValue,i,n)),!1)},n.isInstanceOf=function(n,i,u,f){return n==null?(u&&u.push(r.cannotCheckInstanceOnNull),!1):(n instanceof i)?!0:(u&&u.push(t.formatString(r.instanceError,f,i)),!1)},n}(),h=function(){var i={};return i.enums=function(){function r(n,t){for(var i in t)n[i]=t[i];return n}function n(n,i){this.name=n;i&&r(this,i);t.tryFreeze(this)}n.prototype={};n.prototype.constructor=n;n.prototype.toString=function(){return this.name};t.tryFreeze(n.prototype);var i=function(i){var u=this,r;if(arguments.length===1&&i!==null&&typeof i=="object")for(r in i)u[r]=new n(r,i[r]);else t.forEach(arguments,function(t){u[t]=new n(t)});t.tryFreeze(this)};return i.prototype.symbols=function(){var t=[],i,n;for(i in this)(n=this[i],f.isFunction(n))||t.push(n);return t},i.prototype.contains=function(t){return(t instanceof n)?this[t.name]===t:!1},i}(),i.jsep=function(t){var a="Compound",k="Identifier",v="MemberExpression",h="Literal",d="ThisExpression",g="CallExpression",nt="UnaryExpression",tt="BinaryExpression",it="LogicalExpression",u=!0,f={"-":u,"!":u,"~":u,"+":u},r={"=>":0,"||":1,"&&":2,"|":3,"^":4,"&":5,"==":6,"!=":6,"===":6,"!==":6,"<":7,">":7,"<=":7,">=":7,"<<":8,">>":8,">>>":8,"+":9,"-":9,"*":10,"/":10,"%":10},s=function(n){var t=0,i;for(var r in n)(i=r.length)>t&&n.hasOwnProperty(r)&&(t=i);return t},c=s(f),e=s(r),y={"true":!0,"false":!1,"null":null},rt="this",p=function(n){return r[n]||0},w=function(n,t,i){var r=n==="||"||n==="&&"?it:tt;return{type:r,operator:n,left:t,right:i}},o=function(n){return n>=48&&n<=57},l=function(n){return n===36||n===95||n===64||n>=65&&n<=90||n>=97&&n<=122},ut=function(n){return n===36||n===95||n>=65&&n<=90||n>=97&&n<=122||n>=48&&n<=57},i=function(n){for(var t=0,ct=n.charAt,lt=n.charCodeAt,i=function(t){return ct.call(n,t)},u=function(t){return lt.call(n,t)},b=n.length,s=function(){for(var n=u(t);n===32||n===9;)n=u(++t)},ot=function(){s();for(var i=n.substr(t,e),u=i.length;u>0;){if(r.hasOwnProperty(i))return t+=u,i;i=i.substr(0,--u)}return!1},tt=function(){var r,i,o,n,s,f,e,u;if(f=it(),i=ot(),!i)return f;if(s={value:i,prec:p(i)},e=it(),!e)throw new Error("Expected expression after "+i+" at character "+t);for(n=[f,s,e];i=ot();){if(o=p(i),o===0)break;for(s={value:i,prec:o};n.length>2&&o<=n[n.length-2].prec;)e=n.pop(),i=n.pop().value,f=n.pop(),r=w(i,f,e),n.push(r);if(r=it(),!r)throw new Error("Expected expression after "+i+" at character "+t);n.push(s);n.push(r)}for(u=n.length-1,r=n[u];u>1;)r=w(n[u-1].value,n[u-2],r),u-=2;return r},it=function(){var i,r,e;if(s(),i=u(t),o(i)||i===46)return at();if(i===39||i===34)return vt();if(l(i))return pt();if(i===40)return wt();for(r=n.substr(t,c),e=r.length;e>0;){if(f.hasOwnProperty(r))return t+=e,{type:nt,operator:r,argument:it(),prefix:!0};r=r.substr(0,--e)}return!1},at=function(){for(var n="";o(u(t));)n+=i(t++);if(i(t)===".")for(n+=i(t++);o(u(t));)n+=i(t++);if(i(t)==="e"||i(t)==="E"){for(n+=i(t++),(i(t)==="+"||i(t)==="-")&&(n+=i(t++));o(u(t));)n+=i(t++);if(!o(u(t-1)))throw new Error("Expected exponent ("+n+i(t)+") at character "+t);}if(l(u(t)))throw new Error("Variable names cannot start with a number ("+n+i(t)+") at character "+t);return{type:h,value:parseFloat(n),raw:n}},vt=function(){for(var n="",u=i(t++),f=!1,r;t=0;t--)i=this.expressions[t],f.isInstanceOf(i,n)&&this.expressions.splice(t,1);return this},u}(),observableProviderBase:function(){var i=function(n){this.name=n||"observableProviderBase"},n=i.prototype;return n.toString=function(){return this.name},n.isObservable=function(){throw t.createError(r.notImplemented,[this.name,"isObservable"]);},n.toObservable=function(){throw t.createError(r.notImplemented,[this.name,"toObservable"]);},n.getValue=function(){throw t.createError(r.notImplemented,[this.name,"getValue"]);},n.setValue=function(){throw t.createError(r.notImplemented,[this.name,"setValue"]);},i}(),ajaxProviderBase:function(){var n=function(n){this.name=n||"ajaxProviderBase"},i=n.prototype;return i.toString=function(){return this.name},i.doAjax=function(){throw t.createError(r.notImplemented,[this.name,"doAjax"]);},n}(),serializationServiceBase:function(){var i=function(n){this.name=n||"serializationServiceBase"},n=i.prototype;return n.toString=function(){return this.name},n.serialize=function(){throw t.createError(r.notImplemented,[this.name,"serialize"]);},n.deserialize=function(){throw t.createError(r.notImplemented,[this.name,"deserialize"]);},i}(),promiseProviderBase:function(){var i=function(n){this.name=n||"promiseProviderBase"},n=i.prototype;return n.toString=function(){return this.name},n.deferred=function(){throw t.createError(r.notImplemented,[this.name,"deferred"]);},n.getPromise=function(){throw t.createError(r.notImplemented,[this.name,"getPromise"]);},n.resolve=function(){throw t.createError(r.notImplemented,[this.name,"resolve"]);},n.reject=function(){throw t.createError(r.notImplemented,[this.name,"reject"]);},i}(),dataServiceBase:function(){function a(n,e,o,s){var v,w;n==null?n="":n[n.length-1]!="/"&&(n+="/");s.uri=n;var h=null,a=null,y=null,p=null;if(o&&(h=o.ajaxProvider,a=o.serializationService,y=o.dataType,p=o.dataType),s.ajaxProvider=h&&f.isInstanceOf(h,i.ajaxProviderBase)?h:l.jQueryAjaxProviderInstance,s.serializationService=a&&f.isInstanceOf(a,i.SerializationService)?a:l.jsonSerializationServiceInstance,!(e===!0))if(e){if(f.isInstanceOf(e,c.metadataManager))s.metadataManager=e;else if(f.isObject(e))try{s.metadataManager=new c.metadataManager(e)}catch(b){throw t.createError(r.invalidArguments,{exception:b,args:arguments,dataService:this});}}else v=t.findInArray(u,n,"uri"),v?s.metadataManager=v.data:(w=s.fetchMetadata(),s.metadataManager=new c.metadataManager(w),u.push({uri:n,data:s.metadataManager}));s.dataType=y||"json";s.contentType=p||"application/json; charset=utf-8"}var u=[],h=function(n,t,i){a(n,t,i,this)},n=h.prototype;return n.toString=function(){return this.uri},n.getEntityType=function(n){return this.metadataManager?this.metadataManager.getEntityTypeByShortName(n):null},n.createQuery=function(n,i,r){return(t.assertPrm(n,"resourceName").isNotEmptyString().check(),i)?this.createEntityQuery(i,n,r):(this.metadataManager&&this.metadataManager.createQuery(n,null,r),new o.entityQuery(n,null,r))},n.createEntityQuery=function(n,i,u){if(t.assertPrm(n,"shortName").isNotEmptyString().check(),!this.metadataManager)throw t.createError(r.noMetadataEntityQuery,{dataService:this});return this.metadataManager.createQuery(i,n,u)},n.registerCtor=function(n,i,u){if(this.metadataManager==null)throw t.createError(r.noMetadataEntityQuery);this.metadataManager.registerCtor(n,i,u)},n.createEntity=function(n,i){if(!this.metadataManager)throw t.createError(r.noMetadataEntityQuery,{dataService:this});return this.metadataManager.createEntity(n,i)},n.createRawEntity=function(n,i){if(!this.metadataManager)throw t.createError(r.noMetadataEntityQuery,{dataService:this});return this.metadataManager.createRawEntity(n,i)},n.toEntity=function(n,t){var i=null;return this.metadataManager&&(i=this.metadataManager.getEntityType(t)),i||(i=new c.entityType(t)),e.entityTracker.toEntity(n,i,s.getObservableProvider())},n.toODataQueryParams=function(n,i){if(n.isMultiTyped===!0)throw t.createError(r.oDataNotSupportMultiTyped,{query:n});var u={varContext:i},f=[];return t.forEach(n.parameters,function(n){f.push({name:n.name,value:n.value==null?"":n.value})}),n.inlineCountEnabled===!0&&f.push({name:"$inlinecount",value:"allpages"}),t.forEach(n.expressions,function(n,t){u.expVarContext=n.varContext;var r,i;n.onlyBeetle===!0?(r="!e"+t,i=n.toBeetleQuery(u),i=n.name+":"+i):(r="$"+n.name,i=n.toODataQuery(u));f.push({name:r,value:i});u.expVarContext=undefined}),f},n.toBeetleQueryParams=function(n,i){var u={varContext:i},r=[];return t.forEach(n.parameters,function(n){r.push({name:n.name,value:n.value==null?"":n.value})}),n.inlineCountEnabled===!0&&r.push({name:"!e0",value:"inlinecount:allpages"}),t.forEach(n.expressions,function(n,t){u.expVarContext=n.varContext;r.push({name:"!e"+(t+1),value:n.name+":"+n.toBeetleQuery(u)});u.expVarContext=undefined}),r},n.fetchMetadata=function(){throw t.createError(r.notImplemented,["dataServiceBase","fetchMetadata"]);},n.createEntityAsync=function(){throw t.createError(r.notImplemented,["dataServiceBase","createEntityAsync"]);},n.executeQuery=function(){throw t.createError(r.notImplemented,["dataServiceBase","executeQuery"]);},n.executeQueryParams=function(){throw t.createError(r.notImplemented,["dataServiceBase","executeQueryParams"]);},n.saveChanges=function(){throw t.createError(r.notImplemented,["dataServiceBase","saveChanges"]);},h}()}}(),l=function(){return{defaultDateConverterInstance:function(){var n=function(){i.dateConverterBase.call(this,"Default Date Converter")},r;return t.inherit(n,i.dateConverterBase),r=n.prototype,r.parse=function(n){if(typeof n!="string"||n.length<10||!/^\d{4}[\/\-](0?[1-9]|1[012])[\/\-](0?[1-9]|[12][0-9]|3[01])$/.test(n.substr(0,10)))return null;/.\d{3}$/.test(n)&&(n+="Z");try{var t=Date.parse(n);return isNaN(t)?null:new Date(t)}catch(i){return null}},r.toISOString=function(n){return n.toISOString()},new n}(),koObservableProviderInstance:function(n){var u,r;return n&&(n.extenders.intercept=function(t,i){return n.computed({read:t,write:function(n){var r=i&&i.callback;r&&r(i.object,i.property,t,n)}})}),u=function(){i.observableProviderBase.call(this,"Knockout Observable Provider");t.tryFreeze(this)},t.inherit(u,i.observableProviderBase),r=u.prototype,r.isObservable=function(t,i){return n.isObservable(t[i])},r.toObservable=function(i,r,u){function s(t,r,u){var f=n.observable(r);return u?n.observable(r).extend({intercept:{object:i,property:t,callback:u}}):f}function c(t,r,u,f,o){var s;return u=u||[],f&&(u=new e.trackableArray(u,i,t,function(n,t,u,e,o){s.$fromKo!==!0&&i[r].valueHasMutated();s.$fromKo=!1;f(n,t,u,e,o)})),s=n.observableArray(u),s.subscribe(function(){s.$fromKo=!0},null,"beforeChange"),o&&(s.equalityComparer=function(n,r){o(i,t,n,r)}),s}var l=u&&u.propertyChange,a=u&&u.arrayChange,v=u&&u.dataPropertyChange,y=u&&u.scalarNavigationPropertyChange,p=u&&u.pluralNavigationPropertyChange,h=u&&u.arraySet,o=[];t.forEachProperty(i,function(n,t){o.push({p:n,v:t})});r&&r.hasMetadata&&(t.forEach(r.dataProperties,function(n){var r=i[n.name];r=r===undefined?null:n.handle(r);i[n.name]=s(n,r,v);t.removeFromArray(o,n.name,"p")}),t.forEach(r.navigationProperties,function(n){var r=i[n.name];r===undefined&&(r=null);i[n.name]=n.isScalar?s(n,r,y):c(n,n.name,r,p,h);t.removeFromArray(o,n.name,"p")}));t.forEach(o,function(n){var u=n.p,e=n.v;i[u]=f.isArray(e)?c(u,u,e,a,h):s(u,e,l);t.findInArray(r.properties,u)||r.properties.push(u)})},r.getValue=function(t,i){return n.utils.unwrapObservable(t[i])},r.setValue=function(n,t,i){n[t](i)},new u}(n.ko),propertyObservableProviderInstance:function(){var r=function(){i.observableProviderBase.call(this,"Property Observable Provider");t.tryFreeze(this)},n;return t.inherit(r,i.observableProviderBase),n=r.prototype,n.isObservable=function(n,t){return n.$fields!==undefined&&n.$fields[t]!==undefined},n.toObservable=function(n,i,r){function s(t,i,r){return Object.defineProperty(n,i,{get:function(){return n.$fields[i]},set:function(u){if(r){var f=w(n,i);r(n,t,f,u)}else n.$fields[i]=u},enumerable:!0,configurable:!0})}function c(t,i,r,f,o){return r=r||[],f&&(r=new e.trackableArray(r,n,t,f)),u[i]=r,Object.defineProperty(n,i,{get:function(){return n.$fields[i]},set:function(r){o?o(n,t,items,r):n.$fields[i]=r}})}function w(n,t){return function(){return arguments.length==0?n.$fields[t]:n.$fields[t]=arguments[0]}}var l=r&&r.propertyChange,a=r&&r.arrayChange,v=r&&r.dataPropertyChange,y=r&&r.scalarNavigationPropertyChange,p=r&&r.pluralNavigationPropertyChange,h=r&&r.arraySet,u={},o=[];return t.forEachProperty(n,function(n,t){o.push({p:n,v:t})}),i&&i.hasMetadata&&(t.forEach(i.dataProperties,function(i){var r=n[i.name];r=r===undefined?null:i.handle(r);delete n[i.name];s(i,i.name,v);t.removeFromArray(o,i.name,"p");u[i.name]=r}),t.forEach(i.navigationProperties,function(i){var r=n[i.name];r===undefined&&(r=null);delete n[i.name];i.isScalar?(s(i,i.name,y),u[i.name]=r):c(i,i.name,r,p,h);t.removeFromArray(o,i.name,"p")})),t.forEach(o,function(r){var e=r.p,o=r.v;delete n[e];f.isArray(o)?c(e,e,o,a,h):(s(e,e,l),u[e]=o);t.findInArray(i.properties,e)||i.properties.push(e)}),n.$fields=u,n},n.getValue=function(n,t){return n[t]},n.setValue=function(n,t,i){n[t]=i},new r}(),backboneObservableProviderInstance:function(){var r=function(){i.observableProviderBase.call("Backbone Observable Provider");t.tryFreeze(this)},n;return t.inherit(r,i.observableProviderBase),n=r.prototype,n.isObservable=function(n,t){return n.$fields!==undefined&&n.$fields[t]!==undefined},n.toObservable=function(n,i,r){function s(t,i,r){return Object.defineProperty(n,i,{get:function(){return n.$fields[i]},set:function(u){if(r){var f=w(n,i);r(n,t,f,u)}else n.$fields[i]=u},enumerable:!0,configurable:!0})}function c(t,i,r,f,o){return r=r||[],f&&(r=new e.trackableArray(r,n,t,f)),u[i]=r,Object.defineProperty(n,i,{get:function(){return n.$fields[i]},set:function(r){o?o(n,t,items,r):n.$fields[i]=r}})}function w(n,t){return function(){return arguments.length==0?n.$fields[t]:n.$fields[t]=arguments[0]}}var l=r&&r.propertyChange,a=r&&r.arrayChange,v=r&&r.dataPropertyChange,y=r&&r.scalarNavigationPropertyChange,p=r&&r.pluralNavigationPropertyChange,h=r&&r.arraySet,u={},o=[];return t.forEachProperty(n,function(n,t){o.push({p:n,v:t})}),i&&i.hasMetadata&&(t.forEach(i.dataProperties,function(i){var r=n[i.name];r=r===undefined?null:i.handle(r);delete n[i.name];s(i,i.name,v);t.removeFromArray(o,i.name,"p");u[i.name]=r}),t.forEach(i.navigationProperties,function(i){var r=n[i.name];r===undefined&&(r=null);delete n[i.name];i.isScalar?(s(i,i.name,y),u[i.name]=r):c(i,i.name,r,p,h);t.removeFromArray(o,i.name,"p")})),t.forEach(o,function(r){var e=r.p,o=r.v;delete n[e];f.isArray(o)?c(e,e,o,a,h):(s(e,e,l),u[e]=o);t.findInArray(i.properties,e)||i.properties.push(e)}),n.$fields=u,n},n.getValue=function(n,t){return n[t]},n.setValue=function(n,t,i){n[t]=i},new r}(),jQueryAjaxProviderInstance:function(n){function f(n){var i={status:n.status};if(n.responseText)try{i.detail=JSON.parse(n.responseText)}catch(r){}return t.createError(n.statusText,i)}var r=function(){i.ajaxProviderBase.call(this,"jQuery Ajax Provider");t.tryFreeze(this)},u;return t.inherit(r,i.ajaxProviderBase),u=r.prototype,u.doAjax=function(t,i,r,u,e,o,s,h,c,l){var a={url:t,accepts:{json:"application/json; odata=verbose",xml:"text/xml; application/xhtml+xml;application/xml",text:"text/xml"},type:i,dataType:r,contentType:u,traditional:!1,data:e,cache:!1,async:o,timeout:s,success:function(n,t,i){if(i.onreadystatechange=null,i.abort=null,n&&n.Error){var r=f(i);r.message=n.Error;l(r)}else c(n,i)},error:function(n){n.onreadystatechange=null;n.abort=null;l(f(n))}};return h!=null&&n.extend(a,h),n.ajax(a)},new r}(n.$),jsonSerializationServiceInstance:function(){var n=function(){i.serializationServiceBase.call(this,"Json Serializer");t.tryFreeze(this)},r;return t.inherit(n,i.serializationServiceBase),r=n.prototype,r.serialize=function(n){return JSON.stringify(n)},r.deserialize=function(n){return f.isTypeOf(n,"string")?JSON.parse(n):n},new n}(),qPromiseProviderInstance:function(n){var u=function(){i.promiseProviderBase.call(this,"Q Promise Provider");t.tryFreeze(this)},r;return t.inherit(u,i.promiseProviderBase),r=u.prototype,r.toString=function(){return this.name},r.deferred=function(){return n.defer()},r.getPromise=function(n){return n.promise},r.resolve=function(n,t){n.resolve(t)},r.reject=function(n,t){n.reject(t)},new u}(n.Q),jQueryPromiseProviderInstance:function(n){var u=function(){i.promiseProviderBase.call(this,"jQuery Promise Provider");t.tryFreeze(this)},r;return t.inherit(u,i.promiseProviderBase),r=u.prototype,r.toString=function(){return this.name},r.deferred=function(){return n.Deferred()},r.getPromise=function(n){return n.promise()},r.resolve=function(n,t){n.resolve(t)},r.reject=function(n,t){n.reject(t)},new u}(n.$)}}(),c=function(){return{dataProperty:function(){var i=function(n,t,i,r,u,f,o,s,h){this.owner=n;this.name=t;this.displayName=i||t;this.dataType=r;this.isNullable=u;this.isKeyPart=f;this.generationPattern=o;this.defaultValue=s;this.useForConcurrency=h;this.relatedNavigationProperties=[];this.validators=[];this.isEnum=r instanceof e.dataTypes.enum;this.isComplex=r.isComplex},n=i.prototype;return n.toString=function(){return this.displayName},n.isValid=function(n){return n==null?!this.isNullable:this.dataType.isValid(n,this)},n.handle=function(n){if(n==null){if(!this.isNullable)throw t.createError(r.notNullable,[this.displayName],{property:this});return null}if(n=this.dataType.handle(n,this),this.dataType==e.dataTypes.number&&this.precision&&n.toString().replace(/\./g,"").length>this.precision)throw t.createError(r.maxPrecisionError,[n,this.precision],{dataType:dataType,value:n});return this.dataType==e.dataTypes.number&&this.scale!=null&&(n=Number(n.toFixed(this.scale))),n},n.getDefaultValue=function(){return this.defaultValue?this.defaultValue:this.isNullable?null:this.generationPattern==u.generationPattern.Identity&&this.isKeyPart===!0?this.dataType.autoValue():this.dataType.defaultValue()},n.addValidation=function(n,i,r,u){t.assertPrm(n,"name").isNotEmptyString().check();t.assertPrm(i,"func").isFunction().check();this.validators.push(new e.validator(n,i,r,u))},n.validate=function(n){var u=[],i,r;return this.validators.length>0&&(i=this,r=t.getValue(n,i.name),t.forEach(this.validators,function(f){var e=f.validate(r,n);e&&u.push(t.createValidationError(n,r,i,e,f))})),u},i}(),navigationProperty:function(){var i=function(n,t,i,r,u,f,e,o){this.owner=n;this.name=t;this.displayName=i||t;this.entityTypeName=r;this.entityType=null;this.isScalar=u;this.isComplex=f===undefined;this.associationName=f;this.cascadeDelete=e===!0;this.foreignKeyNames=o||[];this.inverse=null;this.foreignKeys=[];this.validators=[];this.triggerOwnerModify=!1},n=i.prototype;return n.toString=function(){return this.displayName},n.checkAssign=function(n){if(n!=null){if(!n.$tracker)throw t.createError(r.assignErrorNotEntity,[this],{property:this,value:n});var i=n.$tracker.entityType;if(!this.entityType.isAssignableWith(i))throw t.createError(r.assignError,[this.name,i.shortName],{property:this,value:n});}},n.addValidation=function(n,i,r,u){t.assertPrm(n,"name").isNotEmptyString().check();t.assertPrm(i,"func").isFunction().check();this.validators.push(new e.validator(n,i,r,u))},n.validate=function(n){var u=[],i,r;return this.validators.length>0&&(i=this,r=t.getValue(n,i.name),t.forEach(this.validators,function(f){var e=f.validate(r);e&&u.push(t.createValidationError(n,r,i,e,f))})),u},i}(),entityType:function(){function u(n,t){n.baseType&&u(n.baseType,t);n.constructor&&n.constructor.call(t,t)}function a(n,i){for(var u,f,e,o=n.length,r=0;r0&&t.forEach(this.validators,function(r){var u=r.validate(n);u&&i.push(t.createValidationError(n,null,null,u,r))}),t.forEach(this.dataProperties,function(t){var r=t.validate(n);r&&(i=i.concat(r))}),t.forEach(this.navigationProperties,function(t){var r=t.validate(n);r&&(i=i.concat(r))}),i},i}(),metadataManager:function(){var i=function(n){this.types=[];this.enums={};this.name=null;this.displayName=null;n&&this.parseBeetleMetadata(n)},n=i.prototype;return n.toString=function(){return this.types.join(", ")},n.getEntityType=function(n,i){var u=t.findInArray(this.types,n,"name");if(!u&&i===!0)throw t.createError(r.notFoundInMetadata,[n],{metadataManager:this,typeName:n});return u},n.getEntityTypeByShortName=function(n,i){var u=t.findInArray(this.types,n,"shortName");if(!u&&i===!0)throw t.createError(r.notFoundInMetadata,[n],{metadataManager:this,typeShortName:n});return u},n.createQuery=function(n,i,r){if(i)return this.getEntityTypeByShortName(i,!0).createQuery(n,r);var u=t.filterArray(this.types,function(t){return t.setName==n});return u.length==1?u[0].createQuery(n,r):new o.entityQuery(n,null,r)},n.registerCtor=function(n,t,i){var r=this.getEntityTypeByShortName(n,!0);r.registerCtor(t,i)},n.createEntity=function(n,t){var i=this.getEntityTypeByShortName(n,!0);return i?i.createEntity(t):null},n.createRawEntity=function(n,t){var i=this.getEntityTypeByShortName(n,!0);return i?i.createRawEntity(t):null},n.parseBeetleMetadata=function(n){var o,a,s,r,v,y,p,w,l,i,f,b,k;if(this.types=[],this.enums={},this.name=n.n,this.displayName=t.getResourceValue(n.r,n.l||n.n),o=n.e,a={},o)for(s=0;s0&&a(n,t,r);i.currentGroup?i.currentGroup.filterItems.push(r):i.groups.push(r);i.currentGroup=r;i.openGroups.push(r)}function a(n,i,o){var h,p,v,a,y,c,w;if(n.length==3||n.length==4){if(h=n[1],f.isTypeOf(h,"string"))for(h=h.toLowerCase(),p=u.filterOps.symbols(),v=0;vs?i?-1:1:i?1:-1}}(c,s),o.push(l);return e=[],e.push.apply(e,n),e.sort(function(n,t){for(var r,i=0;i0},n}(),avgExp:function(){var n=function(n){i.expressionBase.call(this,"exec;avg",3,!0,!0);this.expStr=n;n&&(this.exp=h.jsep(n));this.isExecuter=!0},r;return t.inherit(n,i.expressionBase),r=n.prototype,r.toBeetleQuery=function(n){return this.exp?t.jsepToBeetleQuery(this.exp,n):""},r.clone=function(){return new n(this.expStr)},r.execute=function(t,i){return n.execute(t,this.exp,i)},n.execute=function(n,i,r){var u=i?t.jsepToFunction(i,r):function(n){return n};return o.queryFuncs.avg.impl(n,function(){return n},u)},n}(),maxExp:function(){var n=function(n){i.expressionBase.call(this,"exec;max",3,!0,!0);this.expStr=n;n&&(this.exp=h.jsep(n));this.isExecuter=!0},r;return t.inherit(n,i.expressionBase),r=n.prototype,r.toBeetleQuery=function(n){return this.exp?t.jsepToBeetleQuery(this.exp,n):""},r.clone=function(){return new n(this.expStr)},r.execute=function(t,i){return n.execute(t,this.exp,i)},n.execute=function(n,i,r){var u=i?t.jsepToFunction(i,r):function(n){return n};return o.queryFuncs.max.impl(n,function(){return n},u)},n}(),minExp:function(){var n=function(n){i.expressionBase.call(this,"exec;min",3,!0,!0);this.expStr=n;n&&(this.exp=h.jsep(n));this.isExecuter=!0},r;return t.inherit(n,i.expressionBase),r=n.prototype,r.toBeetleQuery=function(n){return this.exp?t.jsepToBeetleQuery(this.exp,n):""},r.clone=function(){return new n(this.expStr)},r.execute=function(t,i){return n.execute(t,this.exp,i)},n.execute=function(n,i,r){var u=i?t.jsepToFunction(i,r):function(n){return n};return o.queryFuncs.min.impl(n,function(){return n},u)},n}(),sumExp:function(){var n=function(n){i.expressionBase.call(this,"exec;sum",3,!0,!0);this.expStr=n;n&&(this.exp=h.jsep(n));this.isExecuter=!0},r;return t.inherit(n,i.expressionBase),r=n.prototype,r.toBeetleQuery=function(n){return this.exp?t.jsepToBeetleQuery(this.exp,n):""},r.clone=function(){return new n(this.expStr)},r.execute=function(t,i){return n.execute(t,this.exp,i)},n.execute=function(n,i,r){var u=i?t.jsepToFunction(i,r):function(n){return n};return o.queryFuncs.sum.impl(n,function(){return n},u)},n}(),countExp:function(){var n=function(n,t){i.expressionBase.call(this,"exec;count",3,!0,!0);this.expStr=n;n&&(this.exp=h.jsep(n));this.varContext=t;this.isExecuter=!0},r;return t.inherit(n,i.expressionBase),r=n.prototype,r.toBeetleQuery=function(n){return this.exp?t.jsepToBeetleQuery(this.exp,n):""},r.clone=function(){return new n(this.expStr,this.varContext)},r.execute=function(t,i){return n.execute(t,this.exp,i)},n.execute=function(n,i,r){return i&&(n=t.filterArray(n,t.jsepToFunction(i,r))),n.length},n}(),firstExp:function(){var n=function(n,t){i.expressionBase.call(this,"exec;first",3,!0,!1);this.expStr=n;n&&(this.exp=h.jsep(n));this.varContext=t;this.isExecuter=!0},u;return t.inherit(n,i.expressionBase),u=n.prototype,u.toBeetleQuery=function(n){return this.exp?t.jsepToBeetleQuery(this.exp,n):""},u.clone=function(){return new n(this.expStr,this.varContext)},u.execute=function(t,i){return n.execute(t,this.exp,i)},n.execute=function(n,i,u){if(i&&(n=t.filterArray(n,t.jsepToFunction(i,u))),n.length==0)throw t.createError(r.arrayEmpty,{array:n,expression:this});return n[0]},n}(),firstOrDefaultExp:function(){var n=function(n,t){i.expressionBase.call(this,"exec;firstOD",3,!0,!1);this.expStr=n;n&&(this.exp=h.jsep(n));this.varContext=t;this.isExecuter=!0},r;return t.inherit(n,i.expressionBase),r=n.prototype,r.toBeetleQuery=function(n){return this.exp?t.jsepToBeetleQuery(this.exp,n):""},r.clone=function(){return new n(this.expStr,this.varContext)},r.execute=function(t,i){return n.execute(t,this.exp,i)},n.execute=function(n,i,r){return i&&(n=t.filterArray(n,t.jsepToFunction(i,r))),n.length==0?null:n[0]},n}(),singleExp:function(){var n=function(n,t){i.expressionBase.call(this,"exec;single",3,!0,!1);this.expStr=n;n&&(this.exp=h.jsep(n));this.varContext=t;this.isExecuter=!0},u;return t.inherit(n,i.expressionBase),u=n.prototype,u.toBeetleQuery=function(n){return this.exp?t.jsepToBeetleQuery(this.exp,n):""},u.clone=function(){return new n(this.expStr,this.varContext)},u.execute=function(t,i){return n.execute(t,this.exp,i)},n.execute=function(n,i,u){if(i&&(n=t.filterArray(n,t.jsepToFunction(i,u))),n.length!=1)throw t.createError(r.arrayNotSingle,{array:n,expression:this});return n[0]},n}(),singleOrDefaultExp:function(){var n=function(n,t){i.expressionBase.call(this,"exec;singleOD",3,!0,!1);this.expStr=n;n&&(this.exp=h.jsep(n));this.varContext=t;this.isExecuter=!0},u;return t.inherit(n,i.expressionBase),u=n.prototype,u.toBeetleQuery=function(n){return this.exp?t.jsepToBeetleQuery(this.exp,n):""},u.clone=function(){return new n(this.expStr,this.varContext)},u.execute=function(t,i){return n.execute(t,this.exp,i)},n.execute=function(n,i,u){if(i&&(n=t.filterArray(n,t.jsepToFunction(i,u))),n.length>1)throw t.createError(r.arrayNotSingleOrEmpty,{array:n,expression:this});return n.length==0?null:n[0]},n}(),lastExp:function(){var n=function(n,t){i.expressionBase.call(this,"exec;last",3,!0,!1);this.expStr=n;n&&(this.exp=h.jsep(n));this.varContext=t;this.isExecuter=!0},u;return t.inherit(n,i.expressionBase),u=n.prototype,u.toBeetleQuery=function(n){return this.exp?t.jsepToBeetleQuery(this.exp,n):""},u.clone=function(){return new n(this.expStr,this.varContext)},u.execute=function(t,i){return n.execute(t,this.exp,i)},n.execute=function(n,i,u){if(i&&(n=t.filterArray(n,t.jsepToFunction(i,u))),n.length==0)throw t.createError(r.arrayEmpty,{array:n,expression:this});return n[n.length-1]},n}(),lastOrDefaultExp:function(){var n=function(n,t){i.expressionBase.call(this,"exec;lastOD",3,!0,!1);this.expStr=n;n&&(this.exp=h.jsep(n));this.varContext=t;this.isExecuter=!0},r;return t.inherit(n,i.expressionBase),r=n.prototype,r.toBeetleQuery=function(n){return this.exp?t.jsepToBeetleQuery(this.exp,n):""},r.clone=function(){return new n(this.expStr,this.varContext)},r.execute=function(t,i){return n.execute(t,this.exp,i)},n.execute=function(n,i,r){return i&&(n=t.filterArray(n,t.jsepToFunction(i,r))),n.length==0?null:n[n.length-1]},n}()}}(),queryFuncs:function(){var n={};return n.toupper=function(){var n=function(){i.queryFuncBase.call(this,"toupper","ToUpper",1)},r;return t.inherit(n,i.queryFuncBase),r=n.prototype,r.impl=function(n,t){return(t?t(n):n).toUpperCase()},new n}(),n.tolower=function(){var n=function(){i.queryFuncBase.call(this,"tolower","ToLower",1)},r;return t.inherit(n,i.queryFuncBase),r=n.prototype,r.impl=function(n,t){return(t?t(n):n).toLowerCase()},new n}(),n.substring=function(){var n=function(){i.queryFuncBase.call(this,"substring","Substring",3)},r;return t.inherit(n,i.queryFuncBase),r=n.prototype,r.impl=function(n,t,i,r){arguments.length==3?(r=i,i=t,t=n):t=t(n);i=i(n);r=r(n);var u=Number(i)+Number(r);return t&&t.substring(i,u)},new n}(),n.substringof=function(){var n=function(){i.queryFuncBase.call(this,"substringof","Contains",2)},r;return t.inherit(n,i.queryFuncBase),r=n.prototype,r.toBeetleFunction=function(n,t){return t=t?t+".":"",t+"Contains("+n+")"},r.impl=function(n,t,i){return i=i?i(n):n,i&&i.indexOf(t(n))>=0},new n}(),n.length=function(){var n=function(){i.queryFuncBase.call(this,"length","Length",1)},r;return t.inherit(n,i.queryFuncBase),r=n.prototype,r.toBeetleFunction=function(n){return n=n?n+".":"",n+"Length"},r.impl=function(n,t){return(t?t(n):n).length},new n}(),n.trim=function(){var n=function(){i.queryFuncBase.call(this,"trim","Trim",1)},r;return t.inherit(n,i.queryFuncBase),r=n.prototype,r.impl=function(n,t){return(t?t(n):n).trim()},new n}(),n.concat=function(){var n=function(){i.queryFuncBase.call(this,"concat","Concat",null)},r;return t.inherit(n,i.queryFuncBase),r=n.prototype,r.toBeetleFunction=function(){return"string.Concat("+Array.prototype.slice.call(arguments).join(", ")+")"},r.impl=function(n){for(var i=arguments[1](n).toString(),r=Array.prototype.slice.call(arguments,2),u=[],t=0;t=0},new u}(),n.round=function(){var n=function(){i.queryFuncBase.call(this,"round","Math.Round",1)},r;return t.inherit(n,i.queryFuncBase),r=n.prototype,r.toBeetleFunction=function(n){return"Math.Round("+n+")"},r.impl=function(n,t){return Math.round(t?t(n):n)},new n}(),n.ceiling=function(){var n=function(){i.queryFuncBase.call(this,"ceiling","Math.Ceiling(%1)",1)},r;return t.inherit(n,i.queryFuncBase),r=n.prototype,r.toBeetleFunction=function(n){return"Math.Ceiling("+n+")"},r.impl=function(n,t){return Math.ceil(t?t(n):n)},new n}(),n.floor=function(){var n=function(){i.queryFuncBase.call(this,"floor","Math.Floor",1)},r;return t.inherit(n,i.queryFuncBase),r=n.prototype,r.toBeetleFunction=function(n){return"Math.Floor("+n+")"},r.impl=function(n,t){return Math.floor(t?t(n):n)},new n}(),n.second=function(){var n=function(){i.queryFuncBase.call(this,"second","Second",1)},r;return t.inherit(n,i.queryFuncBase),r=n.prototype,r.toBeetleFunction=function(n){return n=n?n+".":"",n+"Second"},r.impl=function(n,t){return t=e.dataTypes.date.handle(t?t(n):n),t.getSeconds()},new n}(),n.minute=function(){var n=function(){i.queryFuncBase.call(this,"minute","Minute",1)},r;return t.inherit(n,i.queryFuncBase),r=n.prototype,r.toBeetleFunction=function(n){return n=n?n+".":"",n+"Minute"},r.impl=function(n,t){return t=e.dataTypes.date.handle(t?t(n):n),t.getMinutes()},new n}(),n.hour=function(){var n=function(){i.queryFuncBase.call(this,"hour","Hour",1)},r;return t.inherit(n,i.queryFuncBase),r=n.prototype,r.toBeetleFunction=function(n){return n=n?n+".":"",n+"Hour"},r.impl=function(n,t){return t=e.dataTypes.date.handle(t?t(n):n),t.getHours()},new n}(),n.day=function(){var n=function(){i.queryFuncBase.call(this,"day","Day",1)},r;return t.inherit(n,i.queryFuncBase),r=n.prototype,r.toBeetleFunction=function(n){return n=n?n+".":"",n+"Day"},r.impl=function(n,t){return t=e.dataTypes.date.handle(t?t(n):n),t.getDate()},new n}(),n.month=function(){var n=function(){i.queryFuncBase.call(this,"month","Month",1)},r;return t.inherit(n,i.queryFuncBase),r=n.prototype,r.toBeetleFunction=function(n){return n=n?n+".":"",n+"Month"},r.impl=function(n,t){return t=e.dataTypes.date.handle(t?t(n):n),t.getMonth()+1},new n}(),n.year=function(){var n=function(){i.queryFuncBase.call(this,"year","Year",1)},r;return t.inherit(n,i.queryFuncBase),r=n.prototype,r.toBeetleFunction=function(n){return n=n?n+".":"",n+"Year"},r.impl=function(n,t){return t=e.dataTypes.date.handle(t?t(n):n),t.getFullYear()},new n}(),n.max=function(){var n=function(){i.queryFuncBase.call(this,"max","Max",2)},u;return t.inherit(n,i.queryFuncBase),u=n.prototype,u.toODataFunction=function(){throw t.createError(r.functionNotSupportedForOData,["Max"]);},u.impl=function(n,t,i){var u,r,f;if(arguments.length==1?t=n:arguments.length==2?(i=t,t=n):t=t(n),t.length==0)return null;for(u=i?i(t[0]):t[0],r=1;ru&&(u=f);return u},new n}(),n.min=function(){var n=function(){i.queryFuncBase.call(this,"min","Min",2)},u;return t.inherit(n,i.queryFuncBase),u=n.prototype,u.toODataFunction=function(){throw t.createError(r.functionNotSupportedForOData,["Min"]);},u.impl=function(n,t,i){var u,r,f;if(arguments.length==1?t=n:arguments.length==2?(i=t,t=n):t=t(n),t.length==0)return null;for(u=i?i(t[0]):t[0],r=1;r0;for(r=0;r2&&(i=Array.prototype.slice.call(arguments).slice(2)),u=this.slice(n,n+t),this.changing.notify({added:i,removed:u}),i&&r(i,this),f=Array.prototype.splice.apply(this,arguments),this.after(this.object,this.property,this,u,i),this.changed.notify({added:i,removed:u}),f},n.remove=function(){var n=[],i=this;return this.changing.notify({added:[],removed:arguments}),t.forEach(arguments,function(r){var u=t.indexOf(i,r);u>=0&&(Array.prototype.splice.call(i,u,1),n.push(r))}),this.after(this.object,this.property,this,n,null),this.changed.notify({added:[],removed:arguments}),n},n.load=function(n,t,i,r,u){return this.entity.$tracker.loadNavigationProperty(this.propertyName,n,t,i,r,u)},i}(),event:function(){var i=function(n,t){this.name=n;this.subscribers=[];this.publisher=t},n=i.prototype;return n.toString=function(){return this.name},n.subscribe=function(n){t.findInArray(this.subscribers,n)||this.subscribers.push(n)},n.unsubscribe=function(n){t.removeFromArray(this.subscribers,n)},n.notify=function(){var n=arguments;t.forEach(this.subscribers,function(t){t.apply(t,n)})},i}(),dataTypes:function(){function u(n,i){throw t.createError(r.assignError,[n.name,i],{dataType:n,value:i});}var e=function(){var r=function(n){i.dataTypeBase.call(this,"dateBase");this.name=n},n;return t.inherit(r,i.dataTypeBase),n=r.prototype,n.defaultValue=function(){return new Date(-6847812e6)},n.isValid=function(n){return Object.prototype.toString.call(n)==="[object Date]"},n.handle=function(n){if(!this.isValid(n)){var t=n;n=this.tryParse(t);n||u(this,t)}return n},n.autoValue=function(){return new Date},n.getRawValue=function(n){return n==null?null:s.getDateConverter().toISOString(n)},n.tryParse=function(n){return s.getDateConverter().parse(n)},n.toODataValue=function(n){return n=this.handle(n),"datetime'"+s.getDateConverter().toISOString(n)+"'"},n.toBeetleValue=function(n){return n=this.handle(n),'"'+s.getDateConverter().toISOString(n)+'"'},r}(),n={};return n.object=function(){var n=function(){i.dataTypeBase.call(this,"object");t.tryFreeze(this)};return t.inherit(n,i.dataTypeBase),new n}(),n.array=function(){var u=function(){i.dataTypeBase.call(this,"array");t.tryFreeze(this)},n;return t.inherit(u,i.dataTypeBase),n=u.prototype,n.isValid=function(n){return n instanceof Array},n.defaultValue=function(){return[]},n.handle=function(n){return this.isValid(n)||(n=n.split(",")),n},n.autoValue=function(){throw t.createError(r.notImplemented,[this.name,"defaultValue"]);},n.toODataValue=function(n){return n},n.toBeetleValue=function(n){return n},new u}(),n.function=function(){var n=function(){i.dataTypeBase.call(this,"function");t.tryFreeze(this)};return t.inherit(n,i.dataTypeBase),new n}(),n.string=function(){var u=0,r=function(){i.dataTypeBase.call(this,"string");t.tryFreeze(this)},n;return t.inherit(r,i.dataTypeBase),n=r.prototype,n.defaultValue=function(){return""},n.handle=function(n){return this.isValid(n)||(n=n.toString()),n},n.autoValue=function(){return"key_"+--u},n.toODataValue=function(n){return"'"+n.replace(/'/g,"''")+"'"},n.toBeetleValue=function(n){return'"'+n.replace(/"/g,'""')+'"'},new r}(),n.guid=function(){var r=function(){i.dataTypeBase.call(this,"guid");t.tryFreeze(this)},n;return t.inherit(r,i.dataTypeBase),n=r.prototype,n.defaultValue=function(){return"00000000-0000-0000-0000-000000000000"},n.isValid=function(n){return typeof n=="string"&&n.match(/^\{?[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}\}?$/i)},n.handle=function(n){return this.isValid(n)||u(this,n),n},n.autoValue=function(){return t.createGuid()},n.toODataValue=function(n){return"guid'"+n+"'"},n.toBeetleValue=function(n){return'"'+n+'"'},new r}(),n.date=function(){var n=function(){e.call(this,"date");t.tryFreeze(this)};return t.inherit(n,e),new n}(),n.dateTimeOffset=function(){var n=function(){e.call(this,"dateTimeOffset");t.tryFreeze(this)},i;return t.inherit(n,e),i=n.prototype,i.toODataValue=function(n){return n=this.handle(n),"datetimeoffset'"+s.getDateConverter().toISOString(n)+"'"},new n}(),n.time=function(){var r=function(){i.dataTypeBase.call(this,"time");t.tryFreeze(this)},n;return t.inherit(r,i.dataTypeBase),n=r.prototype,n.defaultValue=function(){return"00:00:00"},n.isValid=function(n){return/^([01]?\d|2[0-3])(((:[0-5]?\d){2}(\.\d{1,3}){0,1})|(:[0-5]?\d){0,2})?$/.test(n)},n.handle=function(n){return this.isValid(n)||u(this,n),n},n.autoValue=function(){return"00:00:00"},n.toODataValue=function(n){return"time'"+n+"'"},n.toBeetleValue=function(n){return'"'+n+'"'},new r}(),n.boolean=function(){var r=function(){i.dataTypeBase.call(this,"boolean");t.tryFreeze(this)},f;return t.inherit(r,i.dataTypeBase),f=r.prototype,f.defaultValue=function(){return!1},f.handle=function(t){if(!this.isValid(t)){if(n.String.isValid(t)){var i=t.toLowerCase();if(i=="true"||i=="1")return!0;if(i=="false"||i=="0")return!1}throw u(this,t);}return t},new r}(),n.int=function(){var f=0,r=function(){i.dataTypeBase.call(this,"int");t.tryFreeze(this)},n;return t.inherit(r,i.dataTypeBase),n=r.prototype,n.defaultValue=function(){return 0},n.isValid=function(n){return typeof n=="number"&&n%1==0},n.handle=function(n){return typeof n!="number"&&(n=Number(n)),this.isValid(n)||u(this,n),n},n.autoValue=function(){return--f},new r}(),n.number=function(){var f=0,r=function(){i.dataTypeBase.call(this,"number");t.tryFreeze(this)},n;return t.inherit(r,i.dataTypeBase),n=r.prototype,n.defaultValue=function(){return 0},n.isValid=function(n){return!isNaN(n)&&typeof n=="number"},n.handle=function(n){return typeof n!="number"&&(n=Number(n)),this.isValid(n)||u(this,n),n},n.autoValue=function(){return--f},new r}(),n.byte=function(){var f=0,r=function(){i.dataTypeBase.call(this,"byte");t.tryFreeze(this)},n;return t.inherit(r,i.dataTypeBase),n=r.prototype,n.defaultValue=function(){return 0},n.isValid=function(n){return typeof n=="number"&&n%1==0&&n>=0&&n<256},n.handle=function(n){return typeof n!="number"&&(n=Number(n)),this.isValid(n)||u(this,n),n},n.autoValue=function(){return--f},new r}(),n.binary=function(){var r=function(){i.dataTypeBase.call(this,"binary");t.tryFreeze(this)},n;return t.inherit(r,i.dataTypeBase),n=r.prototype,n.defaultValue=function(){return'"AAAAAAAAAAA="'},n.isValid=function(){return!0},n.handle=function(n){return n},n.toODataValue=function(n){return n=this.handle(n),"X'"+s.getDateConverter().toISOString(n)+"'"},n.toBeetleValue=function(n){return'"'+n+'"'},new r}(),n.enum=function(){function e(n,i){var e,r,u,o;if(f.isArray(n))return e=0,t.forEach(n,function(n){e|=n.value}),e;if(f.isTypeOf(n,"string")){if(r=n.split(", "),r.length==1)return i[n];for(u=0;u0?this.name+" ("+n.join(", ")+")":this.name},u.validate=function(n,t){return this.func(n,t)==!0?null:this.message},n.byCode=function(i,u,f,e,o,h){var c=s.getLocalizeFunction();c&&(f=e&&c(e)||f,o=h&&c(h)||o);u=u||[];u.push(f);u.push(o);switch(i){case"re":return n.required.apply(null,u);case"sl":return n.stringLength.apply(null,u);case"ma":return n.maxLength.apply(null,u);case"mi":return n.minLength.apply(null,u);case"ra":return n.range.apply(null,u);case"rx":return n.regularExpression.apply(null,u);case"ea":return n.emailAddress.apply(null,u);case"cc":return n.creditCard.apply(null,u);case"ur":return n.url.apply(null,u);case"ph":return n.phone.apply(null,u);case"po":return n.postalCode.apply(null,u);case"ti":return n.time.apply(null,u);case"co":return n.compare.apply(null,u);default:throw t.createError(r.unknownValidator,[i]);}},n.required=function(i,u,e){var o=function(n){return n==null?!1:f.isTypeOf(n,"string")&&!i&&n==""?!1:!0};return u=t.formatString(u||r.requiredError,e),new n("Required",o,u,{allowEmptyStrings:i})},n.stringLength=function(i,u,e,o){var s=function(n){return!i&&!u?!0:f.isNotEmptyString(n)?i&&n.lengthu?!1:!0:!1};return e=t.formatString(e||r.stringLengthError,o,i,u),new n("StringLength",s,e,{min:i,max:u})},n.maxLength=function(i,u,f){var e=function(n){return n==null?!0:i&&n.length>i?!1:!0};return u=t.formatString(u||r.maxLenError,f,i),new n("MaxLength",e,u,{length:i})},n.minLength=function(i,u,f){var e=function(n){return n==null?!1:i&&n.lengthu?!1:!0};return f=t.formatString(f||r.rangeError,e,i,u),new n("Range",o,f,{min:i,max:u})},n.regularExpression=function(n,t,r){return f.isTypeOf(n,"string")&&(n=new RegExp(n)),i("RegularExpression",n,t,r)},n.emailAddress=function(n,t){return i("EmailAddress",/^\w+@[a-zA-Z_]+?\.[a-zA-Z]{2,3}$/,n,t)},n.creditCard=function(n,t){return i("CreditCard",/^((4\d{3})|(5[1-5]\d{2})|(6011)|(3[68]\d{2})|(30[012345]\d))[ -]?(\d{4})[ -]?(\d{4})[ -]?(\d{4}|3[4,7]\d{13})$/,n,t)},n.url=function(n,t){return i("Url",/(http|ftp|https):\/\/[\w-]+(\.[\w-]+)+([\w.,@?^=%&:\/~+#-]*[\w@?^=%&\/~+#-])?/,n,t)},n.phone=function(n,t){return i("Phone",/^(?!.*-.*-.*-)(?=(?:\d{8,10}$)|(?:(?=.{9,11}$)[^-]*-[^-]*$)|(?:(?=.{10,12}$)[^-]*-[^-]*-[^-]*$) )[\d-]+$/,n,t)},n.postalCode=function(n,t){return i("PostalCode",/^\d{5}([\-]?\d{4})?$/,n,t)},n.time=function(n,t){return i("Time",/^([01]?\d|2[0-3])(((:[0-5]?\d){2}(\.\d{1,3}){0,1})|(:[0-5]?\d){0,2})?$/,n,t)},n.compare=function(i,u,f){var o=function(n,r){var u=t.getValue(r,i);return n==u},e=s.getLocalizeFunction(),h=e&&e(i)||i;return u=t.formatString(u||r.compareError,f,h),new n("Compare",o,u,{property:i})},n}(),entityContainer:function(){function r(n,t){var i=new u(n);return t.push(i),i}var u=function(){function u(n,t){var i=r(n,t);return i>-1?t[i]:null}function r(n,t){var f=t.length,r,u,i;if(f>0)for(r=0,u=f-1;r<=u;){if(i=Math.floor((r+u)/2),t[i].keyn){u=i-1;continue}return i}return-1}function f(n,t){for(var i=0;it[i].key;)i++;return i}var i=function(n){this.typeName=n.name;this.keyIndex=[];t.tryFreeze(this)},n=i.prototype;return n.toString=function(){return this.typeName+": "+this.keyIndex.length},n.push=function(n,t){var i=f(n,this.keyIndex);this.keyIndex.splice(i,0,{key:n,entity:t})},n.remove=function(n){var t=r(n,this.keyIndex);this.keyIndex.splice(t,1)},n.getEntity=function(n){var t=u(n,this.keyIndex);return t?t.entity:null},n.getRelations=function(n,t){var f=t.inverse,r,i,u;if(!f)return null;for(r=[],i=0;i0)&&n.$tracker.isChanged()})},n.count=function(){return this.allEntities.length},n.findEntitySet=function(n){return t.findInArray(this.entitySets,n.name,"typeName")},i}(),entityTracker:function(){function y(n,t,i,r){r.entity=n;n.$tracker=r;r.entityType=t;r.entityState=u.entityStates.Detached;r.observableProvider=i;r.forceUpdate=!1;r.originalValues=[];r.changedValues=[];r.manager=null;r.owners=[];r.validationErrors=[];r.validationErrorsChanged=new e.event("validationErrorsChanged",r);r.entityStateChanged=new e.event("entityStateChanged",r);r.propertyChanged=new e.event("propertyChanged",r);r.arrayChanged=new e.event("arrayChanged",r);t.hasMetadata&&(r.key=l(r))}function p(n,t,i){var r={propertyChange:w,arrayChange:b,dataPropertyChange:k,scalarNavigationPropertyChange:d,pluralNavigationPropertyChange:g,arraySet:nt};return i.observableProvider.toObservable(n,t,r)}function c(n,t){n.baseType&&c(n.baseType,t);n.initializer&&n.initializer.call(t,t)}function l(n,t,i){var e=n.entityType,o,r,u,f;if(e.keys.length==0)return null;for(o=[],r=0;r=0;p--)k=y[p],k.entity==n&&k.property==u&&y.splice(p,1);y.length==0&&a.$tracker.manager&&a.$tracker.manager.detachEntity(a);h.$tracker.owners.push({entity:n,property:u})}c.manager&&(d=s.autoFixScalar,t.forEach(u.relatedNavigationProperties,function(n){var t,i,r;if(n.isScalar===!0)if(t=c.foreignKey(n),t){if(i=c.getValue(n.name),i&&i.$tracker.key===t)return;r=null;c.manager&&d&&(r=c.manager.getEntityByKey(t,n.entityType));r?c.setValue(n.name,r):i&&c.setValue(n.name,new e.valueNotifyWrapper(null))}else c.setValue(n.name,null)}))}}function d(n,u,h,c){var y=n.$tracker,d=!1,l,w,p,b,a,k;if(f.isInstanceOf(c,e.valueNotifyWrapper)&&(d=!0,c=c.value),l=h(),l!=c)if(u.checkAssign(c),h(c),s.liveValidate===!0&&o(u.validate(n),y,u),y.propertyChanged.notify({entity:n,property:u,oldValue:l,newValue:c}),v(c,y.manager),u.isComplex){if(c==null)throw t.createError(r.complexCannotBeNull,[u.displayName],{entity:n,property:u});for(w=l.$tracker.owners,p=w.length-1;p>=0;p--)b=w[p],b.entity==n&&b.property==u&&w.splice(p,1);l.$tracker.owners.length==0&&l.$tracker.manager&&l.$tracker.manager.detachEntity(l);c.$tracker.owners.push({entity:n,property:u});i(n,u.name,c.$tracker.toRaw(),y)}else d||(u.triggerOwnerModify&&u.foreignKeys.length==0&&i(n,null,null,y),t.setForeignKeys(n,u,c)),a=u.inverse,a&&(a.isScalar?(l&&l.$tracker.setValue(a.name,null),c&&c.$tracker.setValue(a.name,n)):(l&&l.$tracker.getValue(a.name).remove(n),c&&(k=c.$tracker.getValue(a.name),t.findInArray(k,n)||k.push(n))))}function g(n,r,u,f,e){var c=n.$tracker,h;s.liveValidate===!0&&o(r.validate(n),c,r);r.triggerOwnerModify&&i(n,null,null,c);c.arrayChanged.notify({entity:n,property:r,items:u,removedItems:f,addedItems:e});h=r.inverse;h&&(f&&t.forEach(f,function(t){t.$tracker.getValue(h.name)==n&&t.$tracker.setValue(h.name,null)}),e&&t.forEach(e,function(t){v(t,c.manager);t.$tracker.setValue(h.name,n)}))}function nt(n,i,f,e){var l=s.getArraySetBehaviour(),h,o,c;if(l==u.arraySetBehaviour.NotAllowed)throw t.createError(r.settingArrayNotAllowed,{entity:n,property:e});if(h=[],o=t.filterArray(f,function(){return!0}),l==u.arraySetBehaviour.Replace&&t.forEach(i,function(n){t.findInArray(o,n)?t.removeFromArray(o,n):h.push(n)}),l==u.arraySetBehaviour.Append&&t.forEach(f,function(n){t.findInArray(i,n)&&t.removeFromArray(o,n)}),h.length>0)for(c=h.length-1;c>=0;c--)i.splice(t.indexOf(i,h[c]),1);o.length>0&&i.push.apply(i,o)}function tt(n){var i=n.$tracker;t.forEach(i.entityType.navigationProperties,function(r){var f,e,u;r.inverse&&(f=r.inverse,r.isScalar?(e=i.getValue(r.name),e&&t.setForeignKeys(e,f,n)):(u=i.getValue(r.name),u&&u.length>0&&t.forEach(u,function(i){t.setForeignKeys(i,f,n)})))})}function v(n,i){if(n&&i&&!n.$tracker.entityType.isComplexType&&!i.isInManager(n)){if(n.$tracker.manager)throw t.createError(r.entityAlreadyBeingTracked,null,{entity:n,manager:i});i.addEntity(n)}}function i(n,r,f,e){var o=e.entityState;o==u.entityStates.Unchanged&&(t.forEach(e.entityType.navigationProperties,function(n){var u=n.inverse,r;u&&u.triggerOwnerModify&&(r=e.getValue(n.name),r&&(n.isScalar?i(r,null,null,r.$tracker):t.forEach(r,function(n){i(n,null,null,n.$tracker)})))}),e.toModified());it(r,f,e.originalValues,e.changedValues)}function it(n,i,r,u){var f,e;n!=null&&(i==null||i.$tracker==null||i.$tracker.entityType.isComplexType)&&(f=t.findInArray(r,n,"p"),f||r.push({p:n,v:i}),e=t.findInArray(u,n,"p"),e||u.push({p:n,v:i}))}function o(n,i,r){var u=[],f=r?t.filterArray(i.validationErrors,function(n){return n.property===r}):t.filterArray(i.validationErrors,function(){return!0});t.forEach(f,function(r){t.findInArray(n,r.validator,"validator")?t.removeFromArray(n,r.validator,"validator"):(t.removeFromArray(i.validationErrors,r),u.push(r))});i.validationErrors=i.validationErrors.concat(n);(u.length>0||n.length>0)&&i.validationErrorsChanged.notify({errors:i.validationErrors,added:n,removed:u})}var h=function(n,t,i){delete n.$type;delete n.$id;y(n,t,i||s.getObservableProvider(),this);p(n,t,this);c(t,n)},n=h.prototype;return n.toString=function(){return"EntityTracker: "+this.entityType.shortName+", key: "+this.key},n.setManagerInfo=function(n){if(this.manager)throw t.createError(r.entityAlreadyBeingTracked,{otherManager:this.manager});t.assertPrm(n,"manager").isInstanceOf(e.entityManager).check();this.manager=n},n.isChanged=function(){return this.entityState===u.entityStates.Added||this.entityState===u.entityStates.Deleted||this.entityState===u.entityStates.Modified},n.toAdded=function(){if(this.entityState!=u.entityStates.Added){var n={entity:this.entity,oldState:this.entityState,newState:u.entityStates.Added,newChanged:!this.isChanged()};this.entityState=u.entityStates.Added;this.entityStateChanged.notify(n)}},n.toModified=function(){if(this.entityState!=u.entityStates.Modified){var n={entity:this.entity,oldState:this.entityState,newState:u.entityStates.Modified,newChanged:!this.isChanged()};this.entityState=u.entityStates.Modified;this.entityStateChanged.notify(n)}},n.toDeleted=function(){if(this.entityState!=u.entityStates.Deleted){var n={entity:this.entity,oldState:this.entityState,newState:u.entityStates.Deleted,newChanged:!this.isChanged()};this.entityState=u.entityStates.Deleted;this.entityStateChanged.notify(n)}},n.toUnchanged=function(){if(this.entityState!=u.entityStates.Unchanged){var n={entity:this.entity,oldState:this.entityState,newState:u.entityStates.Unchanged,newUnchanged:this.isChanged()};this.originalValues.length=0;this.changedValues.length=0;this.entityState=u.entityStates.Unchanged;this.entityStateChanged.notify(n)}},n.toDetached=function(){if(this.entityState!=u.entityStates.Detached){var n={entity:this.entity,oldState:this.entityState,newState:u.entityStates.Detached,newUnchanged:this.isChanged()};this.entityState=u.entityStates.Detached;this.entityStateChanged.notify(n)}},n.undoChanges=function(){var n=this;t.forEach(this.changedValues,function(t){n.setValue(t.p,t.v)});this.changedValues.length=0},n.acceptChanges=function(){this.changedValues.length=0},n.getValue=function(n){return this.observableProvider.getValue(this.entity,n)},n.setValue=function(n,t){this.observableProvider.setValue(this.entity,n,t)},n.foreignKey=function(n){var r=n.entityType,u,t,e,f,o,i;if(r.keys.length==0)return null;for(u=[],t=0;t2)throw t.createError(r.managerInvalidArgs,{entityManager:u});var o=n[0],s=n[1];if(f.isInstanceOf(o,i.dataServiceBase))u.dataService=o;else if(f.isTypeOf(o,"string"))u.dataService=s?new v.webApiService(o,s):new v.webApiService(o,!1);else throw t.createError(r.managerInvalidArgs,{entityManager:this});u.pendingChangeCount=0;u.entities=new e.entityContainer;u.validationErrors=[];u.entityStateChanged=new e.event("entityStateChanged",u);u.validationErrorsChanged=new e.event("validationErrorsChanged",u);u.hasChangesChanged=new e.event("hasChangesChanged",u);u.queryExecuting=new e.event("queryExecuting",u);u.queryExecuted=new e.event("queryExecuted",u);u.saving=new e.event("saving",u);u.saved=new e.event("saved",u)}function o(n,i,e,o,h,c,l){e||(e=u.mergeStrategy.Preserve);o&&o!==u.entityStates.Detached||(o=u.entityStates.Added);c==null&&(c=s.autoFixScalar);l==null&&(l=s.autoFixPlural);i=i||h.flatEntities(f.isArray(n)?n:[n]);var y=[],p=[],v=[],w=h.entities.count(),a=h;t.forEach(i,function(n){var f=n.$tracker;if(!f&&n.$type)f=a.toEntity(n,n.$type).$tracker;else if(f.entityType.isComplexType||h.isInManager(n))return;var o=f.entityType,s=f.key,i=null;if(w>0&&s&&(i=a.entities.getEntityByKey(s,o.floorType)),i){if(o.name!==i.$tracker.entityType.name)throw t.createError(r.sameKeyOnDifferentTypesError,[i.$tracker.entityType.shortName,o.shortName],{existingEntity:i,entity:n,manager:a});if(e===u.mergeStrategy.ThrowError)throw t.createError(r.sameKeyExists,{existingEntity:i,entity:n,manager:a});else e===u.mergeStrategy.Preserve?v.push({o:n,n:i}):(v.push({o:n,n:i}),p.push({o:i,n:n}))}else a.entities.push(n),n.$tracker.setManagerInfo(a),y.push(n)});t.forEach(y,function(n){d(n,c,l,a);lt(n,a);k(n,o);s.validateOnMerge===!0&&n.$tracker.validate()});t.forEach(p,function(n){ot(n.o,n.n);k(n.o,o)});t.forEach(v,function(i){var r=t.indexOf(n,i.o);r>=0&&(n[r]=i.n);st(i.o,i.n,c,l,a)})}function b(n,i){if(!i.isInManager(n))throw t.createError(r.entityNotBeingTracked,{entity:n,manager:i});}function k(n,i){if(i===u.entityStates.Unchanged)n.$tracker.toUnchanged();else if(i===u.entityStates.Modified)n.$tracker.toModified();else if(i===u.entityStates.Added)n.$tracker.toAdded();else throw t.createError(r.mergeStateError,[i],{entity:n,state:i});}function ot(n,i){var r=i.$tracker;t.forEach(r.entityType.dataProperties,function(t){n.$tracker.setValue(t.name,r.getValue(t.name))})}function d(n,i,r,u){if(i==!0||r==!0){var e=n.$tracker,o=e.entityType;t.forEach(o.navigationProperties,function(t){var f=e.getValue(t.name),o,h,s,c,l;if(t.isComplex){for(o=f.$tracker.owners,h=!1,s=0;s=0;u--)r=t[u],r&&r.$tracker&&r.$tracker.entityType.hasMetadata&&r.$tracker.manager!=i&&(f=i.getEntityByKey(r.$tracker.key,r.$tracker.entityType),f?t.splice(u,1,f):t.splice(u,1))}function st(n,i,r,u,f){var c=n.$tracker.entityType,h,s,e,o;t.forEach(c.navigationProperties,function(c){var y,p,l,a,v;c.isComplex||(h=n.$tracker,s=i.$tracker,e=h.getValue(c.name),o=s.getValue(c.name),c.isScalar?o||(r==!0?tt(i,c,null,f):r===!0&&c.inverse&&c.inverse.isScalar||u===!0&&c.inverse&&!c.inverse.isScalar||(y=h.foreignKey(c),p=s.foreignKey(c),y==p&&e!=null&&f.isInManager(e)&&(l=c.inverse,l?l.isScalar?e.$tracker.setValue(l.name,i):(a=e.$tracker.getValue(l.name),v=t.indexOf(a,n),v>=0&&a.splice(v,1,i)):s.setValue(c.name,e)))):u?it(i,c,o,f):r===!0&&c.inverse||t.forEach(e,function(n){f.isInManager(n)&&!t.findInArray(o,n)&&o.push(n)}))})}function tt(n,t,i,r){var f=n.$tracker,u=f.foreignKey(t);i?u!=i.$tracker.key&&setForeignKeys(n,t,i):u&&f.setValue(t.name,r.entities.getEntityByKey(u,t.entityType))}function it(n,i,r,u){var f=u.entities.getRelations(n,i);f&&t.forEach(f,function(n){t.findInArray(r,n)||r.push(n)})}function rt(n,i){var r=n.$tracker,u=r.entityType,f=i?new e.valueNotifyWrapper(null):null;u.hasMetadata&&t.forEach(u.navigationProperties,function(n){n.isScalar?r.setValue(n.name,f):r.getValue(n.name).splice(0)})}function ht(n,i,r){t.forEach(n,function(n){n.$tracker.entityState==u.entityStates.Deleted?(n.$tracker.toDetached(),ut(n,r),i.remove(n)):n.$tracker.toUnchanged()})}function ct(n,i,r){if(i.removed.length>0)for(var u=i.removed.length-1;u>=0;u--)r.validationErrors.splice(t.indexOf(r.validationErrors,i.removed[u]),1);i.added.length>0&&r.validationErrors.push.apply(r.validationErrors,i.added);(i.removed.length>0||i.added.length>0)&&r.validationErrorsChanged.notify({errors:r.validationErrors,added:i.added,removed:i.removed})}function lt(n,t){n.$tracker.entityStateChanged.subscribe(function(n){var i=t.pendingChangeCount;n.newChanged===!0?t.pendingChangeCount++:n.newUnchanged===!0&&t.pendingChangeCount--;t.entityStateChanged.notify(n);i==0&&t.pendingChangeCount>0?t.hasChangesChanged.notify({hasChanges:!0}):i>0&&t.pendingChangeCount==0&&t.hasChangesChanged.notify({hasChanges:!1})});n.$tracker.validationErrorsChanged.subscribe(function(i){ct(n,i,t)})}function ut(n,i){n.$tracker.entityStateChanged.unsubscribe(i.entityStateChanged.notify);n.$tracker.validationErrorsChanged.unsubscribe(i.validationErrorsChanged.notify);var r=t.filterArray(i.validationErrors,function(t){return t.entity==n});t.removeFromArray(i.validationErrors,n,"entity");i.validationErrorsChanged.notify({errors:i.validationErrors,removed:r,added:[]})}function at(n,t,i){var r={manager:n,query:t,options:i};return n.queryExecuting.notify(r),a.queryExecuting.notify(r),r}function ft(n,t,i,r){var u={manager:n,query:t,options:i,result:r};return n.queryExecuted.notify(u),a.queryExecuted.notify(u),u.result}function vt(n,t,i){var r={manager:n,changes:t,options:i};return n.saving.notify(r),a.saving.notify(r),r.options}function yt(n,t,i){var r={manager:n,changes:t,options:i};n.saved.notify(r);a.saved.notify(r)}function l(n,t,i,r){n&&n(r);t&&t.resolve(i,r)}function h(n,t,i,r,u){if(n&&n(r),t&&t.reject(i,r),r.manager=u,!n&&!t)throw new r;}var y=function(){et(arguments,this)},n=y.prototype;return n.toString=function(){return this.dataService.toString()+", "+r.pendingChanges+": "+this.pendingChangeCount+", "+r.validationErrors+": "+this.validationErrors.length},n.getEntityType=function(n){return this.dataService.getEntityType(n)},n.createQuery=function(n,t){return this.dataService.createQuery(n,t,this)},n.createEntityQuery=function(n,t){return this.dataService.createEntityQuery(n,t,this)},n.registerCtor=function(n,t,i){this.dataService.registerCtor(n,t,i)},n.createEntity=function(n,t){var i=this.dataService.createEntity(n,t),r=[i];return o(r,null,u.mergeStrategy.ThrowError,u.entityStates.Added,this),i},n.createDetachedEntity=function(n,t){return this.dataService.createEntity(n,t)},n.createRawEntity=function(n,t){return this.dataService.createRawEntity(n,t)},n.createEntityAsync=function(n,t,i,r,u){return p(n,t,i,r,u,this)},n.createRawEntityAsync=function(n,t,i,r,u){return i?i.makeObservable=!1:i={makeObservable:!1},p(n,t,i,r,u,this)},n.executeQuery=function(n,i,e,c){var k,a,p,d,g,b;n.options&&(i=t.combine(n.options,i));k=at(this,n,i);n=k.query;i=k.options;a=i&&i.async==!1?null:s.getPromiseProvider();p=null;a&&(p=a.deferred());var y=u.mergeStrategy.Preserve,v=u.executionStrategy.Server,w=null,nt,tt;if(f.isEnum(i,u.mergeStrategy)?(y=i,i={makeObservable:y!=u.mergeStrategy.NoTrackingRaw}):f.isEnum(i,u.executionStrategy)?v=i:i&&(i.merge&&(y=i.merge),i.execution&&(v=i.execution),i.autoFixScalar!=null&&(nt=i.autoFixScalar),i.autoFixPlural!=null&&(tt=i.autoFixPlural),i.makeObservable=y!=u.mergeStrategy.NoTrackingRaw),d=y==u.mergeStrategy.NoTracking||y==u.mergeStrategy.NoTrackingRaw,d&&v==u.executionStrategy.Both)throw t.createError(r.executionBothNotAllowedForNoTracking,{executionStrategy:v,mergeStrategy:y});return((v==u.executionStrategy.Local||v==u.executionStrategy.LocalIfEmptyServer)&&(w=this.executeQueryLocally(n)),g=null,v==u.executionStrategy.Local||v==u.executionStrategy.LocalIfEmptyServer&&w&&(w.length==null||w.length>0)?(w=ft(this,n,i,w),l(e,a,p,w)):(b=this,this.dataService.executeQuery(n,i,function(t,r,s,w){try{var k=!1;t&&(d||(f.isArray(t)||(t=[t],k=!0),o(t,r,y,u.entityStates.Unchanged,b,nt,tt),k&&(t=t[0])));v==u.executionStrategy.Both&&(t=b.executeQueryLocally(n),s&&(s+=t.$addedCount-t.$deletedCount));t&&(n.inlineCountEnabled&&s!=null&&(t.$inlineCount=s),w&&(t.$extra=w));t=ft(b,n,i,t);l(e,a,p,t);a||(g=t)}catch(it){h(c,a,p,it,b)}},function(t){t.query=n;h(c,a,p,t,b)})),a)?a.getPromise(p):g},n.executeQueryLocally=function(n,i){var o=n.entityType,s,e,l;if(o)if(e=this.entities.findEntitySet(o),e)s=e.getEntities();else return[];else throw t.createError(r.typeRequiredForLocalQueries);var f=[],h=0,c=0;return t.forEach(s,function(n){n.$tracker.entityState==u.entityStates.Added?(h++,f.push(n)):n.$tracker.entityState==u.entityStates.Deleted?c++:f.push(n)}),l=n.toFunction(),f=l(f,i),f.$addedCount=h,f.$deletedCount=c,f},n.getEntityByKey=function(n,t){var i=f.isInstanceOf(t,c.entityType)?t:this.getEntityType(t,!0);return this.entities.getEntityByKey(n,i)},n.deleteEntity=function(n){var i,f,e;for(b(n,this),i=this,f=[],t.forEach(n.$tracker.entityType.navigationProperties,function(u){var e,o;if(u.cascadeDelete){if(u.inverse&&u.inverse.cascadeDelete)throw t.createError(r.twoEndCascadeDeleteNotAllowed,{entity:n,property:u});e=n.$tracker.getValue(u.name);e&&(u.isScalar?u.foreignKeys!=null&&u.foreignKeys.length>0?f.push(e):i.deleteEntity(e):(o=t.filterArray(e,function(){return!0}),t.forEach(o,function(n){i.deleteEntity(n)})))}}),n.$tracker.entityState===u.entityStates.Added?this.detachEntity(n):(rt(n,!0),n.$tracker.toDeleted()),e=0;e0)throw t.createError(r.cannotDetachComplexTypeWithOwners);b(n,this);rt(n,!0);ut(n,this);n.$tracker.toDetached();n.$tracker.manager=null;this.entities.remove(n)},n.createSavePackage=function(n,t){var f=t&&t.userData||null,i=t&&t.forceUpdate,r,u;return i==null&&(i=s.forceUpdate),r={userData:f,forceUpdate:i},u=this.exportEntities(n||this.getChanges(),t),r.entities=u,r},n.rejectChanges=function(n,i){var e=this,r;f.isArray(n)||(n=[n]);r=i===!0?this.flatEntities(n):n;t.forEach(r,function(n){var t=n.$tracker;t.entityState==u.entityStates.Added?e.detachEntity(n):t.entityState==u.entityStates.Modified&&(t.undoChanges(),t.toUnchanged())})},n.undoChanges=function(n,i){f.isArray(n)||(n=[n]);var r=i===!0?this.flatEntities(n):n;t.forEach(r,function(n){n.$tracker.undoChanges()})},n.acceptChanges=function(n,i){f.isArray(n)||(n=[n]);var r=i===!0?this.flatEntities(n):n;t.forEach(r,function(n){n.$tracker.acceptChanges()})},n.exportEntities=function(n,i){var e=[],r,f;return n=n||this.entities.getEntities(),r=i&&i.forceUpdate,r==null&&(r=s.forceUpdate),f=i&&i.minimizePackage,f==null&&(f=s.minimizePackage),t.forEach(n,function(n,i){var o=n.$tracker,a=o.entityType,h=o.entityState,c,s,l;if(r===!1&&(r=o.forceUpdate),c={},f===!0)if(h==u.entityStates.Modified)if(o.originalValues.length>0)s={},t.forEach(o.originalValues,function(t){var f,r=t.p.split("."),e,u,i;if(r.length>1){for(e=0;e0},n.getChanges=function(){return this.entities.getChanges()},n.saveChanges=function(n,i,e){var c=n&&n.entities||this.getChanges(),a,v,p,w,y;n=vt(this,c,n);a=n&&n.async==!1?null:s.getPromiseProvider();v=null;a&&(v=a.deferred());var b=n&&n.autoFixScalar,k=n&&n.autoFixPlural,d=null;return(f.isArray(c)||(c=[c]),c&&c.length>0?(p=[],s.validateOnSave===!0&&t.forEach(c,function(n){if(n.$tracker.entityState!=u.entityStates.Deleted){var t=n.$tracker.validate();t&&t.length>0&&p.push({entity:n,validationErrors:t})}}),p.length>0?(w=new t.createError(r.validationFailed,{entities:c,validationErrors:p}),w.entitiesInError=p,h(e,a,v,w,this)):(y=this,this.dataService.saveChanges(this.createSavePackage(c,n),n,function(r){try{r.GeneratedEntities!=null&&r.GeneratedEntities.length>0&&o(r.GeneratedEntities,null,u.mergeStrategy.Preserve,u.entityStates.Unchanged,y,b,k);r.GeneratedValues&&t.forEach(r.GeneratedValues,function(n){var r=c[n.Index],f,t=n.Property.split("."),i,s,e;if(t.length>1){for(i=0;i",function(n,t){return n()>t()},"gt")),i.push(new n("Lesser","<",function(n,t){return n()=",function(n,t){var i=n(),r=t();return i==r||i>r},"ge")),i.push(new n("LesserEqual","<=",function(n,t){var i=n(),r=t();return i==r||i>",function(n,t){return n()>>t()})),n.find=function(n){var r=t.filterArray(i,function(t){return t.code==n||t.oData==n||t.js==n});return r.length>0?r[0]:null},n}(),filterOps:new h.enums({Equals:{oData:"eq",code:"=="},NotEqual:{oData:"ne",code:"!="},Greater:{oData:"gt",code:">"},Lesser:{oData:"lt",code:"<"},GreaterEqual:{oData:"ge",code:">="},LesserEqual:{oData:"le",code:"<="},Contains:{oData:"substringof",code:"contains",isFunc:!0},StartsWith:{oData:"startswith",code:"startswith",isFunc:!0},EndsWith:{oData:"endswith",code:"endswith",isFunc:!0}}),mergeStrategy:new h.enums("Preserve","Overwrite","ThrowError","NoTracking","NoTrackingRaw"),executionStrategy:new h.enums("Server","Local","Both","LocalIfEmptyServer"),generationPattern:new h.enums("Identity","Computed"),arraySetBehaviour:new h.enums("NotAllowed","Replace","Append")}}(),a=function(){return{queryExecuting:new e.event("beetleQueryExecuting",this),queryExecuted:new e.event("beetleQueryExecuted",this),saving:new e.event("beetleSaving",this),saved:new e.event("beetleSaved",this),info:new e.event("beetleInfo",this),warning:new e.event("beetleWarning",this),error:new e.event("beetleError",this)}}(),s=function(){var s,o;s=n.ko?l.koObservableProviderInstance:n.Backbone?l.backboneObservableProviderInstance:l.propertyObservableProviderInstance;n.Q?o=l.qPromiseProviderInstance:n.jQuery&&(o=l.jQueryPromiseProviderInstance);var h=u.arraySetBehaviour.NotAllowed,c=l.defaultDateConverterInstance,a,e={};return e.autoFixScalar=!0,e.autoFixPlural=!1,e.validateOnMerge=!0,e.validateOnSave=!0,e.liveValidate=!0,e.handleUnmappedProperties=!0,e.isCaseSensitive=!1,e.ignoreWhiteSpaces=!1,e.forceUpdate=!1,e.workAsync=!0,e.ajaxTimeout=null,e.minimizePackage=!1,e.getObservableProvider=function(){return s},e.setObservableProvider=function(n){var h,e,o;if(f.isInstanceOf(n,i.observableProviderBase))s=n;else{if(f.isNotEmptyString(n))for(h=u.observableProviders.symbols(),e=0;e p.Name.",functionNotSupportedForOData:"OData does not support %0 function, please use Beetle Query Strings (like: manager.executeQuery(query, {useBeetleQueryStrings: true}))",instanceError:"%0 is not an instance of %1.",invalidArguments:"Invalid arguments.",invalidDefaultValue:"%0 is not a valid default value for %0.",invalidEnumValue:"Invalid enum value, %0 cannot be found in %1.",invalidExpression:"%0 can only have %1 type expressions.",invalidPropertyAlias:"Invalid property alias.",invalidStatement:"Invalid statement.",invalidValue:"Invalid value for %0 property.",managerInvalidArgs:"Invalid arguments. Valid args are: {DataService} or {Uri, [MetadataManager]} or {Uri, [metadataString (string)]} or {Uri, [doNotUseMetadata (bool)]}.",maxLenError:"%0 property length cannot exceed %1.",maxPrecisionError:"Value %0 exceeded maximum precision of %1.",mergeStateError:"Cannot merge entities with %0 state.",minLenError:"%0 property length must be greater than %1.",noMetadataEntityQuery:"Cannot create entity query when no metadata is available.",noMetadataRegisterCtor:"Cannot register constructor when no metadata is available.",noOpenGroup:"Could not find any open group.",notFoundInMetadata:"Could not find %0 in metadata.",notImplemented:"%0 %1 is not implemented.",notNullable:"Cannot set %0 with null, property is not nullable.",oDataNotSupportMultiTyped:"Multi-Typed queries cannot be used for OData services.",onlyManagerCreatedCanBeExecuted:"Only queries which are created from a manager can be directly executed.",onlyManagerCreatedCanAcceptEntityShortName:"Only queries which are created from a manager can accept entity type short name parameter.",pendingChanges:"Pending changes",pluralNeedsInverse:"To load plural relations, navigation property must have inverse.",projectionsMustHaveAlias:"All projected values must have a property name or alias.",propertyNotFound:"Could not find property: %0.",queryClosed:"Query is closed, expression cannot be added. Queries must be executed after some expressions like first, single, any, all etc..",rangeError:"%0 property value must be between %1 and %2.",requiredError:"%0 property is required.",sameKeyExists:"There is already an entity with same key in the manager.",sameKeyOnDifferentTypesError:"Two different types of entities cannot have same keys when they are from same inheritance root (%0, %1).",settingArrayNotAllowed:"Setting array property is not allowed, you may change this via beetle.settings.setArraySetBehaviour(behavior).",stringLengthError:"%0 property length must be between %1 and %2.",twoEndCascadeDeleteNotAllowed:"Two-end cascade deletes are not supported.",typeError:"%0 type is not %1.",typeMismatch:"%0 value type mismatch. expected type: %1, given type: %2, value: %3",typeRequiredForLocalQueries:'To execute queries locally, entity type must be provided (createQuery("Entities", "Entity") or createEntityQuery("Entity")).',unclosedQuote:'Unclosed quote in "%0".',unclosedToken:'Unclosed "%0".',unexpectedProperty:'Unexpected property "%0".',unexpectedToken:"Unexpected %0.",unknownDataType:"Unknown data type: %0.",unknownExpression:"Unknown expression.",unknownFunction:"Unknown function: %0.",unknownParameter:"Unknown parameter: %0.",unknownValidator:"Unknown validator type: %0.",unsoppertedState:"Unsupported entity state: %0.",validationErrors:"Validation errors",validationFailed:"Validation failed.",valueCannotBeNull:"Value cannot be null: %0.",operatorNotSupportedForOData:"Operator is not supported for OData: %0."}),n.beetleI18N}(),y=function(){return{version:"1.0",i18N:r,helper:t,assert:f,libs:h,baseTypes:i,impls:l,metadata:c,querying:o,core:e,services:v,enums:u,events:a,settings:s,MetadataManager:c.metadataManager,entityManager:e.entityManager,EntityManager:e.entityManager,WebApiService:v.webApiService,MvcService:v.mvcService,EntityStates:u.entityStates,FilterOps:u.filterOps,MergeStrategy:u.mergeStrategy}}();return t.tryFreeze(y),n.beetle=y,y})(window); /* //# sourceMappingURL=beetle.min.js.map */ \ No newline at end of file diff --git a/Samples/Beetle.Samples.Northwind/Scripts/beetle.js b/Samples/Beetle.Samples.Northwind/Scripts/beetle.js index 05a089e2..7253f9f5 100644 --- a/Samples/Beetle.Samples.Northwind/Scripts/beetle.js +++ b/Samples/Beetle.Samples.Northwind/Scripts/beetle.js @@ -5447,7 +5447,7 @@ } return false; } - return items && items.indexOf(item) >= 0; + return items && items.indexOf(item) > 0; }; return new ctor(); @@ -8423,8 +8423,8 @@ // if option need local and server results both, after server query re-run same query on local. if (execution == enums.executionStrategy.Both) { newEntities = that.executeQueryLocally(query); - if (inlineCount != null && newEntities.$inlineCountDiff != null) - inlineCount += newEntities.$inlineCountDiff; + if (inlineCount) + inlineCount += newEntities.$addedCount - newEntities.$deletedCount; } if (newEntities) { if (query.inlineCountEnabled && inlineCount != null) @@ -8470,29 +8470,23 @@ } else throw helper.createError(i18N.typeRequiredForLocalQueries); - var array = [], serverArray = [], modifiedClient = false; + var array = [], addedCount = 0, deletedCount = 0; helper.forEach(entities, function (entity) { if (entity.$tracker.entityState == enums.entityStates.Added) { - modifiedClient = true; + addedCount++; array.push(entity); } - else if (entity.$tracker.entityState == enums.entityStates.Deleted) { - modifiedClient = true; - serverArray.push(entity); - } - else { + else if (entity.$tracker.entityState == enums.entityStates.Deleted) + deletedCount++; + else array.push(entity); - serverArray.push(entity); - } }); // get array handling function for query var func = query.toFunction(); // run function against entities array = func(array, varContext); - if (array.$inlineCount && modifiedClient) { - var serverResult = func(serverArray, varContext); - array.$inlineCountDiff = array.$inlineCount - serverResult.$inlineCount; - } + array.$addedCount = addedCount; + array.$deletedCount = deletedCount; return array; }; diff --git a/Samples/Beetle.Samples.Northwind/Scripts/beetle.min.js b/Samples/Beetle.Samples.Northwind/Scripts/beetle.min.js index 172e216e..5c7c2d4b 100644 --- a/Samples/Beetle.Samples.Northwind/Scripts/beetle.min.js +++ b/Samples/Beetle.Samples.Northwind/Scripts/beetle.min.js @@ -1,4 +1,4 @@ -(function(n){"use strict";var t=function(){return{assertPrm:function(n,t){return new f(n,t)},combine:function(n,i){var r,e,u;if(n==i)return n;if(r={},n!=null)for(e in n)r[e]=n[e];if(i!=null)for(u in i){var s=r[u],o=i[u],h=f.isTypeOf(s,"object")&&f.isTypeOf(o,"object")?t.combine(s,o):o;r[u]=h}return r},objEquals:function(n,i){var u,e,r,o;if(n==i)return!0;if(n==null||i==null)return!1;if(f.isObject(n)&&f.isObject(i)){u=0;e=0;for(r in n){if(!i.hasOwnProperty(r)||!t.objEquals(t.getValue(n,r),t.getValue(i,r)))return!1;u++}for(o in i)e++;return u==e}return!1},equals:function(n,t,i,r){var u,f;return typeof n=="string"&&typeof t=="string"&&(u=r&&r.isCaseSensitive,u==null&&(u=s.isCaseSensitive),f=r&&r.ignoreWhiteSpaces,f==null&&(f=s.ignoreWhiteSpaces),u||(n=n.toLowerCase(),t=t.toLowerCase()),f&&(n=n.trim(),t=t.trim())),i?n===t:n==t},formatString:function(n){var t=arguments,i=RegExp("%([0-"+(arguments.length-1)+"])","g"),r=RegExp("{([0-"+(arguments.length-2)+"])}","g");return n.replace(i,function(n,i){return t[Number(i)+1]||""}).replace(r,function(n,i){return t[Number(i)+1]||""})},tryFreeze:function(n,t){var r,i;if(!n||!Object.freeze)return n;if(Object.freeze(n),t===!0)for(r in n)i=n[r],f.isArray(i)?this.tryFreezeArray(i,t):f.isObject(i)&&this.tryFreeze(i,t);return n},tryFreezeArray:function(n,t){if(n&&Object.freeze)for(var i=0;i=0;u--)n.splice(r[u],1);return r.length},mapArray:function(n,t){for(var r,u=[],i=0;i0&&(u.splice(0,0,n),n=t.formatString.apply(null,u)),o=new Error(n),e)for(s in e)o[s]=e[s];return a.error.notify(o),o},setForeignKeys:function(n,t,i){for(var u,f,e,o,r=0;r")return i.aliases.push(n.left.name),it=t.jsepToODataQuery(n.right,i),i.aliases.pop(),it;if(k=u.langOperators.find(n.operator).oData,!k)throw t.createError(r.operatorNotSupportedForOData,[n.operator],{expression:n});return"("+t.jsepToODataQuery(n.left,i)+" "+k+" "+t.jsepToODataQuery(n.right,i)+")"}if(n.type=="UnaryExpression")return n.operator+t.jsepToODataQuery(n.argument,i);if(n.type=="Identifier"){if(l=n.name,l[0]=="@"){if(a=undefined,v=l.slice(1),i.expVarContext&&i.expVarContext[v]!==undefined?a=i.expVarContext[v]:i.varContext&&(a=i.varContext[v]),a===undefined)throw t.createError(r.unknownParameter,[l],{expression:n,queryContext:i});return e.dataTypes.toODataValue(a)}return l}if(n.type=="Literal")return e.dataTypes.toODataValue(n.value);if(n.type=="MemberExpression")return n.object.name&&n.object.name!=i.currentAlias&&t.findInArray(i.aliases,n.object.name)?n.property.name:t.jsepToODataQuery(n.object,i)+"/"+n.property.name;if(n.type=="Compound"){for(f=[],h=0;h"&&(c=s[0].left.name,s=[s[0].right]),c&&(i.currentAlias=c,i.aliases.push(c)),p=0;p"?(i.aliases.push(n.left.name),tt=t.jsepToBeetleQuery(n.right,i),i.aliases.pop(),tt):(it=u.langOperators.find(n.operator).code,"("+t.jsepToBeetleQuery(n.left,i)+" "+it+" "+t.jsepToBeetleQuery(n.right,i)+")");if(n.type=="UnaryExpression")return n.operator+t.jsepToBeetleQuery(n.argument,i);if(n.type=="Identifier"){if(c=n.name,c[0]=="@"){if(l=undefined,v=c.slice(1),i.expVarContext&&i.expVarContext[v]!==undefined?l=i.expVarContext[v]:i.varContext&&(l=i.varContext[v]),l===undefined)throw t.createError(r.unknownParameter,[c],{expression:n,queryContext:i});return e.dataTypes.toBeetleValue(l)}return c}if(n.type=="Literal")return e.dataTypes.toBeetleValue(n.value);if(n.type=="MemberExpression")return n.object.name&&t.findInArray(i.aliases,n.object.name)?n.property.name:t.jsepToBeetleQuery(n.object,i)+"."+n.property.name;if(n.type=="Compound"){for(f=[],h=0;h"&&(a=s[0].left.name,s=[s[0].right]),a&&(i.currentAlias=a,i.aliases.push(a)),y=0;y")return i.currentAlias&&i.aliases.push(i.currentAlias),i.currentAlias={alias:n.left.name},nt=t.jsepToFunction(n.right,i)(f),i.currentAlias=i.aliases.pop(),nt;var ut=u.langOperators.find(n.operator),tt=i.varContext,ft=function(){return t.jsepToFunction(n.left,i)(f)},et=function(){return t.jsepToFunction(n.right,i)(f)};return ut.asFunc.call(tt,ft,et)}if(n.type=="UnaryExpression")return it=function(){return t.jsepToFunction(n.argument,i)(f)},rt=u.langOperators.find(n.operator),rt.asFunc.call(tt,it);if(n.type=="Identifier"){if(e=n.name,e=="null")return null;if(e=="true")return!0;if(e=="false")return!1;if(e[0]=="@"){if(v=undefined,y=e.slice(1),i.expVarContext&&i.expVarContext[y]!==undefined?v=i.expVarContext[y]:i.varContext&&(v=i.varContext[y]),v===undefined)throw t.createError(r.unknownParameter,[e],{expression:n,queryContext:i});return v}return i.currentAlias&&i.currentAlias.alias==e?f:(w=t.findInArray(i.aliases,e,"alias"),w)?w.value:(b=t.getValue(f,e),b===undefined)?window[e]:b}if(n.type=="Literal")return n.value;if(n.type=="MemberExpression"){if(n.object.name){if(i.currentAlias&&n.object.name==i.currentAlias.alias)return t.getValue(f,n.property.name);if(k=t.findInArray(i.aliases,n.object.name,"alias"),k)return t.getValue(k.value,n.property.name)}return t.getValue(t.jsepToFunction(n.object,i)(f),n.property.name)}if(n.type=="CallExpression"){var s=n.arguments,h=[],p=null;if(s.length==1&&s[0]&&s[0].type=="BinaryExpression"&&s[0].operator=="=>"&&(p=s[0].left.name,s=[s[0].right]),p&&(i.currentAlias&&i.aliases.push(i.currentAlias),i.currentAlias={alias:p}),t.forEach(s,function(n){n!=null&&h.push(t.jsepToFunction(n,i))}),l=n.callee.type=="MemberExpression"?n.callee.property.name:n.callee.name,c=o.queryFuncs.getFunc(l,!1),c)n.callee.type=="MemberExpression"&&h.splice(0,0,t.jsepToFunction(n.callee.object,i)),h.splice(0,0,f),d=c.impl.apply(i,h);else{if(l[0]=="@")if(a=l.slice(1),i.expVarContext&&i.expVarContext[a])c=i.expVarContext[a];else if(i.varContext&&i.varContext[a])c=i.varContext[a];else throw t.createError(r.unknownParameter,[a],{expression:n,queryContext:i});else if(g=n.callee.type=="MemberExpression"?t.jsepToFunction(n.callee.object,i)(f):window,g==null||(c=g[l])==null)throw t.createError(r.unknownFunction,[l]);h=t.mapArray(h,function(){return this(f)});d=c.apply(i,h)}return p&&(i.currentAlias=i.aliases.pop()),d}throw t.createError(r.unknownExpression,{expression:n});}},jsepToProjector:function(n,i){var h=[],u,e,o,s;for(f.isArray(n)||(n=[n]),u=0;uu+2&&n[u+1].name&&n[u+1].name.toLowerCase()=="as"){if(u=u+2,s=n[u],s.type!="Identifier")throw t.createError(r.invalidPropertyAlias,{expressions:n,aliasExpression:s});e=s.name}if(n.length>1&&!e)throw t.createError(r.projectionsMustHaveAlias,{expressions:n,expression:o});h.push({p:e,func:t.jsepToFunction(o,i)})}return function(t){for(var r,u,f={},i=0;i0)throw t.createError(this.errors.join("\n"),{name:this.name,value:this.value});},n.hasValue=function(n,i,u){return n==null?(i&&i.push(t.formatString(r.valueCannotBeNull,u)),!1):!0},n.isObject=function(n,i,u){return e.dataTypes.object.isValid(n)?!0:(i&&i.push(t.formatString(r.typeError,u,"object")),!1)},n.isFunction=function(n,i,u){return e.dataTypes.function.isValid(n)?!0:(i&&i.push(t.formatString(r.typeError,u,"function")),!1)},n.isNotEmptyString=function(i,u,f){return!n.isTypeOf(i,"string",u)||i===""?(u&&u.push(t.formatString(r.cannotBeEmptyString,f)),!1):!0},n.isTypeOf=function(i,u,f,o){if(!n.hasValue(i))return!1;var s=e.dataTypes.byName(u);return s.isValid(i)?!0:(f&&f.push(t.formatString(r.typeMismatch,o,u,s,i)),!1)},n.isArray=function(n,i,u){return e.dataTypes.array.isValid(n)?!0:(i&&i.push(t.formatString(r.typeError,u,"array")),!1)},n.isEnum=function(n,i,u){return i.contains(n)?!0:(u&&u.push(t.formatString(r.invalidEnumValue,i,n)),!1)},n.isInstanceOf=function(n,i,u,f){return n==null?(u&&u.push(r.cannotCheckInstanceOnNull),!1):(n instanceof i)?!0:(u&&u.push(t.formatString(r.instanceError,f,i)),!1)},n}(),h=function(){var i={};return i.enums=function(){function r(n,t){for(var i in t)n[i]=t[i];return n}function n(n,i){this.name=n;i&&r(this,i);t.tryFreeze(this)}n.prototype={};n.prototype.constructor=n;n.prototype.toString=function(){return this.name};t.tryFreeze(n.prototype);var i=function(i){var u=this,r;if(arguments.length===1&&i!==null&&typeof i=="object")for(r in i)u[r]=new n(r,i[r]);else t.forEach(arguments,function(t){u[t]=new n(t)});t.tryFreeze(this)};return i.prototype.symbols=function(){var t=[],i,n;for(i in this)(n=this[i],f.isFunction(n))||t.push(n);return t},i.prototype.contains=function(t){return(t instanceof n)?this[t.name]===t:!1},i}(),i.jsep=function(t){var a="Compound",k="Identifier",v="MemberExpression",h="Literal",d="ThisExpression",g="CallExpression",nt="UnaryExpression",tt="BinaryExpression",it="LogicalExpression",u=!0,f={"-":u,"!":u,"~":u,"+":u},r={"=>":0,"||":1,"&&":2,"|":3,"^":4,"&":5,"==":6,"!=":6,"===":6,"!==":6,"<":7,">":7,"<=":7,">=":7,"<<":8,">>":8,">>>":8,"+":9,"-":9,"*":10,"/":10,"%":10},s=function(n){var t=0,i;for(var r in n)(i=r.length)>t&&n.hasOwnProperty(r)&&(t=i);return t},c=s(f),e=s(r),y={"true":!0,"false":!1,"null":null},rt="this",p=function(n){return r[n]||0},w=function(n,t,i){var r=n==="||"||n==="&&"?it:tt;return{type:r,operator:n,left:t,right:i}},o=function(n){return n>=48&&n<=57},l=function(n){return n===36||n===95||n===64||n>=65&&n<=90||n>=97&&n<=122},ut=function(n){return n===36||n===95||n>=65&&n<=90||n>=97&&n<=122||n>=48&&n<=57},i=function(n){for(var t=0,ct=n.charAt,lt=n.charCodeAt,i=function(t){return ct.call(n,t)},u=function(t){return lt.call(n,t)},b=n.length,s=function(){for(var n=u(t);n===32||n===9;)n=u(++t)},ot=function(){s();for(var i=n.substr(t,e),u=i.length;u>0;){if(r.hasOwnProperty(i))return t+=u,i;i=i.substr(0,--u)}return!1},tt=function(){var r,i,o,n,s,f,e,u;if(f=it(),i=ot(),!i)return f;if(s={value:i,prec:p(i)},e=it(),!e)throw new Error("Expected expression after "+i+" at character "+t);for(n=[f,s,e];i=ot();){if(o=p(i),o===0)break;for(s={value:i,prec:o};n.length>2&&o<=n[n.length-2].prec;)e=n.pop(),i=n.pop().value,f=n.pop(),r=w(i,f,e),n.push(r);if(r=it(),!r)throw new Error("Expected expression after "+i+" at character "+t);n.push(s);n.push(r)}for(u=n.length-1,r=n[u];u>1;)r=w(n[u-1].value,n[u-2],r),u-=2;return r},it=function(){var i,r,e;if(s(),i=u(t),o(i)||i===46)return at();if(i===39||i===34)return vt();if(l(i))return pt();if(i===40)return wt();for(r=n.substr(t,c),e=r.length;e>0;){if(f.hasOwnProperty(r))return t+=e,{type:nt,operator:r,argument:it(),prefix:!0};r=r.substr(0,--e)}return!1},at=function(){for(var n="";o(u(t));)n+=i(t++);if(i(t)===".")for(n+=i(t++);o(u(t));)n+=i(t++);if(i(t)==="e"||i(t)==="E"){for(n+=i(t++),(i(t)==="+"||i(t)==="-")&&(n+=i(t++));o(u(t));)n+=i(t++);if(!o(u(t-1)))throw new Error("Expected exponent ("+n+i(t)+") at character "+t);}if(l(u(t)))throw new Error("Variable names cannot start with a number ("+n+i(t)+") at character "+t);return{type:h,value:parseFloat(n),raw:n}},vt=function(){for(var n="",u=i(t++),f=!1,r;t=0;t--)i=this.expressions[t],f.isInstanceOf(i,n)&&this.expressions.splice(t,1);return this},u}(),observableProviderBase:function(){var i=function(n){this.name=n||"observableProviderBase"},n=i.prototype;return n.toString=function(){return this.name},n.isObservable=function(){throw t.createError(r.notImplemented,[this.name,"isObservable"]);},n.toObservable=function(){throw t.createError(r.notImplemented,[this.name,"toObservable"]);},n.getValue=function(){throw t.createError(r.notImplemented,[this.name,"getValue"]);},n.setValue=function(){throw t.createError(r.notImplemented,[this.name,"setValue"]);},i}(),ajaxProviderBase:function(){var n=function(n){this.name=n||"ajaxProviderBase"},i=n.prototype;return i.toString=function(){return this.name},i.doAjax=function(){throw t.createError(r.notImplemented,[this.name,"doAjax"]);},n}(),serializationServiceBase:function(){var i=function(n){this.name=n||"serializationServiceBase"},n=i.prototype;return n.toString=function(){return this.name},n.serialize=function(){throw t.createError(r.notImplemented,[this.name,"serialize"]);},n.deserialize=function(){throw t.createError(r.notImplemented,[this.name,"deserialize"]);},i}(),promiseProviderBase:function(){var i=function(n){this.name=n||"promiseProviderBase"},n=i.prototype;return n.toString=function(){return this.name},n.deferred=function(){throw t.createError(r.notImplemented,[this.name,"deferred"]);},n.getPromise=function(){throw t.createError(r.notImplemented,[this.name,"getPromise"]);},n.resolve=function(){throw t.createError(r.notImplemented,[this.name,"resolve"]);},n.reject=function(){throw t.createError(r.notImplemented,[this.name,"reject"]);},i}(),dataServiceBase:function(){function a(n,e,o,s){var v,w;n==null?n="":n[n.length-1]!="/"&&(n+="/");s.uri=n;var h=null,a=null,y=null,p=null;if(o&&(h=o.ajaxProvider,a=o.serializationService,y=o.dataType,p=o.dataType),s.ajaxProvider=h&&f.isInstanceOf(h,i.ajaxProviderBase)?h:l.jQueryAjaxProviderInstance,s.serializationService=a&&f.isInstanceOf(a,i.SerializationService)?a:l.jsonSerializationServiceInstance,!(e===!0))if(e){if(f.isInstanceOf(e,c.metadataManager))s.metadataManager=e;else if(f.isObject(e))try{s.metadataManager=new c.metadataManager(e)}catch(b){throw t.createError(r.invalidArguments,{exception:b,args:arguments,dataService:this});}}else v=t.findInArray(u,n,"uri"),v?s.metadataManager=v.data:(w=s.fetchMetadata(),s.metadataManager=new c.metadataManager(w),u.push({uri:n,data:s.metadataManager}));s.dataType=y||"json";s.contentType=p||"application/json; charset=utf-8"}var u=[],h=function(n,t,i){a(n,t,i,this)},n=h.prototype;return n.toString=function(){return this.uri},n.getEntityType=function(n){return this.metadataManager?this.metadataManager.getEntityTypeByShortName(n):null},n.createQuery=function(n,i,r){return(t.assertPrm(n,"resourceName").isNotEmptyString().check(),i)?this.createEntityQuery(i,n,r):(this.metadataManager&&this.metadataManager.createQuery(n,null,r),new o.entityQuery(n,null,r))},n.createEntityQuery=function(n,i,u){if(t.assertPrm(n,"shortName").isNotEmptyString().check(),!this.metadataManager)throw t.createError(r.noMetadataEntityQuery,{dataService:this});return this.metadataManager.createQuery(i,n,u)},n.registerCtor=function(n,i,u){if(this.metadataManager==null)throw t.createError(r.noMetadataEntityQuery);this.metadataManager.registerCtor(n,i,u)},n.createEntity=function(n,i){if(!this.metadataManager)throw t.createError(r.noMetadataEntityQuery,{dataService:this});return this.metadataManager.createEntity(n,i)},n.createRawEntity=function(n,i){if(!this.metadataManager)throw t.createError(r.noMetadataEntityQuery,{dataService:this});return this.metadataManager.createRawEntity(n,i)},n.toEntity=function(n,t){var i=null;return this.metadataManager&&(i=this.metadataManager.getEntityType(t)),i||(i=new c.entityType(t)),e.entityTracker.toEntity(n,i,s.getObservableProvider())},n.toODataQueryParams=function(n,i){if(n.isMultiTyped===!0)throw t.createError(r.oDataNotSupportMultiTyped,{query:n});var u={varContext:i},f=[];return t.forEach(n.parameters,function(n){f.push({name:n.name,value:n.value==null?"":n.value})}),n.inlineCountEnabled===!0&&f.push({name:"$inlinecount",value:"allpages"}),t.forEach(n.expressions,function(n,t){u.expVarContext=n.varContext;var r,i;n.onlyBeetle===!0?(r="!e"+t,i=n.toBeetleQuery(u),i=n.name+":"+i):(r="$"+n.name,i=n.toODataQuery(u));f.push({name:r,value:i});u.expVarContext=undefined}),f},n.toBeetleQueryParams=function(n,i){var u={varContext:i},r=[];return t.forEach(n.parameters,function(n){r.push({name:n.name,value:n.value==null?"":n.value})}),n.inlineCountEnabled===!0&&r.push({name:"!e0",value:"inlinecount:allpages"}),t.forEach(n.expressions,function(n,t){u.expVarContext=n.varContext;r.push({name:"!e"+(t+1),value:n.name+":"+n.toBeetleQuery(u)});u.expVarContext=undefined}),r},n.fetchMetadata=function(){throw t.createError(r.notImplemented,["dataServiceBase","fetchMetadata"]);},n.createEntityAsync=function(){throw t.createError(r.notImplemented,["dataServiceBase","createEntityAsync"]);},n.executeQuery=function(){throw t.createError(r.notImplemented,["dataServiceBase","executeQuery"]);},n.executeQueryParams=function(){throw t.createError(r.notImplemented,["dataServiceBase","executeQueryParams"]);},n.saveChanges=function(){throw t.createError(r.notImplemented,["dataServiceBase","saveChanges"]);},h}()}}(),l=function(){return{defaultDateConverterInstance:function(){var n=function(){i.dateConverterBase.call(this,"Default Date Converter")},r;return t.inherit(n,i.dateConverterBase),r=n.prototype,r.parse=function(n){if(typeof n!="string"||n.length<10||!/^\d{4}[\/\-](0?[1-9]|1[012])[\/\-](0?[1-9]|[12][0-9]|3[01])$/.test(n.substr(0,10)))return null;/.\d{3}$/.test(n)&&(n+="Z");try{var t=Date.parse(n);return isNaN(t)?null:new Date(t)}catch(i){return null}},r.toISOString=function(n){return n.toISOString()},new n}(),koObservableProviderInstance:function(n){var u,r;return n&&(n.extenders.intercept=function(t,i){return n.computed({read:t,write:function(n){var r=i&&i.callback;r&&r(i.object,i.property,t,n)}})}),u=function(){i.observableProviderBase.call(this,"Knockout Observable Provider");t.tryFreeze(this)},t.inherit(u,i.observableProviderBase),r=u.prototype,r.isObservable=function(t,i){return n.isObservable(t[i])},r.toObservable=function(i,r,u){function s(t,r,u){var f=n.observable(r);return u?n.observable(r).extend({intercept:{object:i,property:t,callback:u}}):f}function c(t,r,u,f,o){var s;return u=u||[],f&&(u=new e.trackableArray(u,i,t,function(n,t,u,e,o){s.$fromKo!==!0&&i[r].valueHasMutated();s.$fromKo=!1;f(n,t,u,e,o)})),s=n.observableArray(u),s.subscribe(function(){s.$fromKo=!0},null,"beforeChange"),o&&(s.equalityComparer=function(n,r){o(i,t,n,r)}),s}var l=u&&u.propertyChange,a=u&&u.arrayChange,v=u&&u.dataPropertyChange,y=u&&u.scalarNavigationPropertyChange,p=u&&u.pluralNavigationPropertyChange,h=u&&u.arraySet,o=[];t.forEachProperty(i,function(n,t){o.push({p:n,v:t})});r&&r.hasMetadata&&(t.forEach(r.dataProperties,function(n){var r=i[n.name];r=r===undefined?null:n.handle(r);i[n.name]=s(n,r,v);t.removeFromArray(o,n.name,"p")}),t.forEach(r.navigationProperties,function(n){var r=i[n.name];r===undefined&&(r=null);i[n.name]=n.isScalar?s(n,r,y):c(n,n.name,r,p,h);t.removeFromArray(o,n.name,"p")}));t.forEach(o,function(n){var u=n.p,e=n.v;i[u]=f.isArray(e)?c(u,u,e,a,h):s(u,e,l);t.findInArray(r.properties,u)||r.properties.push(u)})},r.getValue=function(t,i){return n.utils.unwrapObservable(t[i])},r.setValue=function(n,t,i){n[t](i)},new u}(n.ko),propertyObservableProviderInstance:function(){var r=function(){i.observableProviderBase.call(this,"Property Observable Provider");t.tryFreeze(this)},n;return t.inherit(r,i.observableProviderBase),n=r.prototype,n.isObservable=function(n,t){return n.$fields!==undefined&&n.$fields[t]!==undefined},n.toObservable=function(n,i,r){function s(t,i,r){return Object.defineProperty(n,i,{get:function(){return n.$fields[i]},set:function(u){if(r){var f=w(n,i);r(n,t,f,u)}else n.$fields[i]=u},enumerable:!0,configurable:!0})}function c(t,i,r,f,o){return r=r||[],f&&(r=new e.trackableArray(r,n,t,f)),u[i]=r,Object.defineProperty(n,i,{get:function(){return n.$fields[i]},set:function(r){o?o(n,t,items,r):n.$fields[i]=r}})}function w(n,t){return function(){return arguments.length==0?n.$fields[t]:n.$fields[t]=arguments[0]}}var l=r&&r.propertyChange,a=r&&r.arrayChange,v=r&&r.dataPropertyChange,y=r&&r.scalarNavigationPropertyChange,p=r&&r.pluralNavigationPropertyChange,h=r&&r.arraySet,u={},o=[];return t.forEachProperty(n,function(n,t){o.push({p:n,v:t})}),i&&i.hasMetadata&&(t.forEach(i.dataProperties,function(i){var r=n[i.name];r=r===undefined?null:i.handle(r);delete n[i.name];s(i,i.name,v);t.removeFromArray(o,i.name,"p");u[i.name]=r}),t.forEach(i.navigationProperties,function(i){var r=n[i.name];r===undefined&&(r=null);delete n[i.name];i.isScalar?(s(i,i.name,y),u[i.name]=r):c(i,i.name,r,p,h);t.removeFromArray(o,i.name,"p")})),t.forEach(o,function(r){var e=r.p,o=r.v;delete n[e];f.isArray(o)?c(e,e,o,a,h):(s(e,e,l),u[e]=o);t.findInArray(i.properties,e)||i.properties.push(e)}),n.$fields=u,n},n.getValue=function(n,t){return n[t]},n.setValue=function(n,t,i){n[t]=i},new r}(),backboneObservableProviderInstance:function(){var r=function(){i.observableProviderBase.call("Backbone Observable Provider");t.tryFreeze(this)},n;return t.inherit(r,i.observableProviderBase),n=r.prototype,n.isObservable=function(n,t){return n.$fields!==undefined&&n.$fields[t]!==undefined},n.toObservable=function(n,i,r){function s(t,i,r){return Object.defineProperty(n,i,{get:function(){return n.$fields[i]},set:function(u){if(r){var f=w(n,i);r(n,t,f,u)}else n.$fields[i]=u},enumerable:!0,configurable:!0})}function c(t,i,r,f,o){return r=r||[],f&&(r=new e.trackableArray(r,n,t,f)),u[i]=r,Object.defineProperty(n,i,{get:function(){return n.$fields[i]},set:function(r){o?o(n,t,items,r):n.$fields[i]=r}})}function w(n,t){return function(){return arguments.length==0?n.$fields[t]:n.$fields[t]=arguments[0]}}var l=r&&r.propertyChange,a=r&&r.arrayChange,v=r&&r.dataPropertyChange,y=r&&r.scalarNavigationPropertyChange,p=r&&r.pluralNavigationPropertyChange,h=r&&r.arraySet,u={},o=[];return t.forEachProperty(n,function(n,t){o.push({p:n,v:t})}),i&&i.hasMetadata&&(t.forEach(i.dataProperties,function(i){var r=n[i.name];r=r===undefined?null:i.handle(r);delete n[i.name];s(i,i.name,v);t.removeFromArray(o,i.name,"p");u[i.name]=r}),t.forEach(i.navigationProperties,function(i){var r=n[i.name];r===undefined&&(r=null);delete n[i.name];i.isScalar?(s(i,i.name,y),u[i.name]=r):c(i,i.name,r,p,h);t.removeFromArray(o,i.name,"p")})),t.forEach(o,function(r){var e=r.p,o=r.v;delete n[e];f.isArray(o)?c(e,e,o,a,h):(s(e,e,l),u[e]=o);t.findInArray(i.properties,e)||i.properties.push(e)}),n.$fields=u,n},n.getValue=function(n,t){return n[t]},n.setValue=function(n,t,i){n[t]=i},new r}(),jQueryAjaxProviderInstance:function(n){function f(n){var i={status:n.status};if(n.responseText)try{i.detail=JSON.parse(n.responseText)}catch(r){}return t.createError(n.statusText,i)}var r=function(){i.ajaxProviderBase.call(this,"jQuery Ajax Provider");t.tryFreeze(this)},u;return t.inherit(r,i.ajaxProviderBase),u=r.prototype,u.doAjax=function(t,i,r,u,e,o,s,h,c,l){var a={url:t,accepts:{json:"application/json; odata=verbose",xml:"text/xml; application/xhtml+xml;application/xml",text:"text/xml"},type:i,dataType:r,contentType:u,traditional:!1,data:e,cache:!1,async:o,timeout:s,success:function(n,t,i){if(i.onreadystatechange=null,i.abort=null,n&&n.Error){var r=f(i);r.message=n.Error;l(r)}else c(n,i)},error:function(n){n.onreadystatechange=null;n.abort=null;l(f(n))}};return h!=null&&n.extend(a,h),n.ajax(a)},new r}(n.$),jsonSerializationServiceInstance:function(){var n=function(){i.serializationServiceBase.call(this,"Json Serializer");t.tryFreeze(this)},r;return t.inherit(n,i.serializationServiceBase),r=n.prototype,r.serialize=function(n){return JSON.stringify(n)},r.deserialize=function(n){return f.isTypeOf(n,"string")?JSON.parse(n):n},new n}(),qPromiseProviderInstance:function(n){var u=function(){i.promiseProviderBase.call(this,"Q Promise Provider");t.tryFreeze(this)},r;return t.inherit(u,i.promiseProviderBase),r=u.prototype,r.toString=function(){return this.name},r.deferred=function(){return n.defer()},r.getPromise=function(n){return n.promise},r.resolve=function(n,t){n.resolve(t)},r.reject=function(n,t){n.reject(t)},new u}(n.Q),jQueryPromiseProviderInstance:function(n){var u=function(){i.promiseProviderBase.call(this,"jQuery Promise Provider");t.tryFreeze(this)},r;return t.inherit(u,i.promiseProviderBase),r=u.prototype,r.toString=function(){return this.name},r.deferred=function(){return n.Deferred()},r.getPromise=function(n){return n.promise()},r.resolve=function(n,t){n.resolve(t)},r.reject=function(n,t){n.reject(t)},new u}(n.$)}}(),c=function(){return{dataProperty:function(){var i=function(n,t,i,r,u,f,o,s,h){this.owner=n;this.name=t;this.displayName=i||t;this.dataType=r;this.isNullable=u;this.isKeyPart=f;this.generationPattern=o;this.defaultValue=s;this.useForConcurrency=h;this.relatedNavigationProperties=[];this.validators=[];this.isEnum=r instanceof e.dataTypes.enum;this.isComplex=r.isComplex},n=i.prototype;return n.toString=function(){return this.displayName},n.isValid=function(n){return n==null?!this.isNullable:this.dataType.isValid(n,this)},n.handle=function(n){if(n==null){if(!this.isNullable)throw t.createError(r.notNullable,[this.displayName],{property:this});return null}if(n=this.dataType.handle(n,this),this.dataType==e.dataTypes.number&&this.precision&&n.toString().replace(/\./g,"").length>this.precision)throw t.createError(r.maxPrecisionError,[n,this.precision],{dataType:dataType,value:n});return this.dataType==e.dataTypes.number&&this.scale!=null&&(n=Number(n.toFixed(this.scale))),n},n.getDefaultValue=function(){return this.defaultValue?this.defaultValue:this.isNullable?null:this.generationPattern==u.generationPattern.Identity&&this.isKeyPart===!0?this.dataType.autoValue():this.dataType.defaultValue()},n.addValidation=function(n,i,r,u){t.assertPrm(n,"name").isNotEmptyString().check();t.assertPrm(i,"func").isFunction().check();this.validators.push(new e.validator(n,i,r,u))},n.validate=function(n){var u=[],i,r;return this.validators.length>0&&(i=this,r=t.getValue(n,i.name),t.forEach(this.validators,function(f){var e=f.validate(r,n);e&&u.push(t.createValidationError(n,r,i,e,f))})),u},i}(),navigationProperty:function(){var i=function(n,t,i,r,u,f,e,o){this.owner=n;this.name=t;this.displayName=i||t;this.entityTypeName=r;this.entityType=null;this.isScalar=u;this.isComplex=f===undefined;this.associationName=f;this.cascadeDelete=e===!0;this.foreignKeyNames=o||[];this.inverse=null;this.foreignKeys=[];this.validators=[];this.triggerOwnerModify=!1},n=i.prototype;return n.toString=function(){return this.displayName},n.checkAssign=function(n){if(n!=null){if(!n.$tracker)throw t.createError(r.assignErrorNotEntity,[this],{property:this,value:n});var i=n.$tracker.entityType;if(!this.entityType.isAssignableWith(i))throw t.createError(r.assignError,[this.name,i.shortName],{property:this,value:n});}},n.addValidation=function(n,i,r,u){t.assertPrm(n,"name").isNotEmptyString().check();t.assertPrm(i,"func").isFunction().check();this.validators.push(new e.validator(n,i,r,u))},n.validate=function(n){var u=[],i,r;return this.validators.length>0&&(i=this,r=t.getValue(n,i.name),t.forEach(this.validators,function(f){var e=f.validate(r);e&&u.push(t.createValidationError(n,r,i,e,f))})),u},i}(),entityType:function(){function u(n,t){n.baseType&&u(n.baseType,t);n.constructor&&n.constructor.call(t,t)}function a(n,i){for(var u,f,e,o=n.length,r=0;r0&&t.forEach(this.validators,function(r){var u=r.validate(n);u&&i.push(t.createValidationError(n,null,null,u,r))}),t.forEach(this.dataProperties,function(t){var r=t.validate(n);r&&(i=i.concat(r))}),t.forEach(this.navigationProperties,function(t){var r=t.validate(n);r&&(i=i.concat(r))}),i},i}(),metadataManager:function(){var i=function(n){this.types=[];this.enums={};this.name=null;this.displayName=null;n&&this.parseBeetleMetadata(n)},n=i.prototype;return n.toString=function(){return this.types.join(", ")},n.getEntityType=function(n,i){var u=t.findInArray(this.types,n,"name");if(!u&&i===!0)throw t.createError(r.notFoundInMetadata,[n],{metadataManager:this,typeName:n});return u},n.getEntityTypeByShortName=function(n,i){var u=t.findInArray(this.types,n,"shortName");if(!u&&i===!0)throw t.createError(r.notFoundInMetadata,[n],{metadataManager:this,typeShortName:n});return u},n.createQuery=function(n,i,r){if(i)return this.getEntityTypeByShortName(i,!0).createQuery(n,r);var u=t.filterArray(this.types,function(t){return t.setName==n});return u.length==1?u[0].createQuery(n,r):new o.entityQuery(n,null,r)},n.registerCtor=function(n,t,i){var r=this.getEntityTypeByShortName(n,!0);r.registerCtor(t,i)},n.createEntity=function(n,t){var i=this.getEntityTypeByShortName(n,!0);return i?i.createEntity(t):null},n.createRawEntity=function(n,t){var i=this.getEntityTypeByShortName(n,!0);return i?i.createRawEntity(t):null},n.parseBeetleMetadata=function(n){var o,a,s,r,v,y,p,w,l,i,f,b,k;if(this.types=[],this.enums={},this.name=n.n,this.displayName=t.getResourceValue(n.r,n.l||n.n),o=n.e,a={},o)for(s=0;s0&&a(n,t,r);i.currentGroup?i.currentGroup.filterItems.push(r):i.groups.push(r);i.currentGroup=r;i.openGroups.push(r)}function a(n,i,o){var h,p,v,a,y,c,w;if(n.length==3||n.length==4){if(h=n[1],f.isTypeOf(h,"string"))for(h=h.toLowerCase(),p=u.filterOps.symbols(),v=0;vs?i?-1:1:i?1:-1}}(c,s),o.push(l);return e=[],e.push.apply(e,n),e.sort(function(n,t){for(var r,i=0;i0},n}(),avgExp:function(){var n=function(n){i.expressionBase.call(this,"exec;avg",3,!0,!0);this.expStr=n;n&&(this.exp=h.jsep(n));this.isExecuter=!0},r;return t.inherit(n,i.expressionBase),r=n.prototype,r.toBeetleQuery=function(n){return this.exp?t.jsepToBeetleQuery(this.exp,n):""},r.clone=function(){return new n(this.expStr)},r.execute=function(t,i){return n.execute(t,this.exp,i)},n.execute=function(n,i,r){var u=i?t.jsepToFunction(i,r):function(n){return n};return o.queryFuncs.avg.impl(n,function(){return n},u)},n}(),maxExp:function(){var n=function(n){i.expressionBase.call(this,"exec;max",3,!0,!0);this.expStr=n;n&&(this.exp=h.jsep(n));this.isExecuter=!0},r;return t.inherit(n,i.expressionBase),r=n.prototype,r.toBeetleQuery=function(n){return this.exp?t.jsepToBeetleQuery(this.exp,n):""},r.clone=function(){return new n(this.expStr)},r.execute=function(t,i){return n.execute(t,this.exp,i)},n.execute=function(n,i,r){var u=i?t.jsepToFunction(i,r):function(n){return n};return o.queryFuncs.max.impl(n,function(){return n},u)},n}(),minExp:function(){var n=function(n){i.expressionBase.call(this,"exec;min",3,!0,!0);this.expStr=n;n&&(this.exp=h.jsep(n));this.isExecuter=!0},r;return t.inherit(n,i.expressionBase),r=n.prototype,r.toBeetleQuery=function(n){return this.exp?t.jsepToBeetleQuery(this.exp,n):""},r.clone=function(){return new n(this.expStr)},r.execute=function(t,i){return n.execute(t,this.exp,i)},n.execute=function(n,i,r){var u=i?t.jsepToFunction(i,r):function(n){return n};return o.queryFuncs.min.impl(n,function(){return n},u)},n}(),sumExp:function(){var n=function(n){i.expressionBase.call(this,"exec;sum",3,!0,!0);this.expStr=n;n&&(this.exp=h.jsep(n));this.isExecuter=!0},r;return t.inherit(n,i.expressionBase),r=n.prototype,r.toBeetleQuery=function(n){return this.exp?t.jsepToBeetleQuery(this.exp,n):""},r.clone=function(){return new n(this.expStr)},r.execute=function(t,i){return n.execute(t,this.exp,i)},n.execute=function(n,i,r){var u=i?t.jsepToFunction(i,r):function(n){return n};return o.queryFuncs.sum.impl(n,function(){return n},u)},n}(),countExp:function(){var n=function(n,t){i.expressionBase.call(this,"exec;count",3,!0,!0);this.expStr=n;n&&(this.exp=h.jsep(n));this.varContext=t;this.isExecuter=!0},r;return t.inherit(n,i.expressionBase),r=n.prototype,r.toBeetleQuery=function(n){return this.exp?t.jsepToBeetleQuery(this.exp,n):""},r.clone=function(){return new n(this.expStr,this.varContext)},r.execute=function(t,i){return n.execute(t,this.exp,i)},n.execute=function(n,i,r){return i&&(n=t.filterArray(n,t.jsepToFunction(i,r))),n.length},n}(),firstExp:function(){var n=function(n,t){i.expressionBase.call(this,"exec;first",3,!0,!1);this.expStr=n;n&&(this.exp=h.jsep(n));this.varContext=t;this.isExecuter=!0},u;return t.inherit(n,i.expressionBase),u=n.prototype,u.toBeetleQuery=function(n){return this.exp?t.jsepToBeetleQuery(this.exp,n):""},u.clone=function(){return new n(this.expStr,this.varContext)},u.execute=function(t,i){return n.execute(t,this.exp,i)},n.execute=function(n,i,u){if(i&&(n=t.filterArray(n,t.jsepToFunction(i,u))),n.length==0)throw t.createError(r.arrayEmpty,{array:n,expression:this});return n[0]},n}(),firstOrDefaultExp:function(){var n=function(n,t){i.expressionBase.call(this,"exec;firstOD",3,!0,!1);this.expStr=n;n&&(this.exp=h.jsep(n));this.varContext=t;this.isExecuter=!0},r;return t.inherit(n,i.expressionBase),r=n.prototype,r.toBeetleQuery=function(n){return this.exp?t.jsepToBeetleQuery(this.exp,n):""},r.clone=function(){return new n(this.expStr,this.varContext)},r.execute=function(t,i){return n.execute(t,this.exp,i)},n.execute=function(n,i,r){return i&&(n=t.filterArray(n,t.jsepToFunction(i,r))),n.length==0?null:n[0]},n}(),singleExp:function(){var n=function(n,t){i.expressionBase.call(this,"exec;single",3,!0,!1);this.expStr=n;n&&(this.exp=h.jsep(n));this.varContext=t;this.isExecuter=!0},u;return t.inherit(n,i.expressionBase),u=n.prototype,u.toBeetleQuery=function(n){return this.exp?t.jsepToBeetleQuery(this.exp,n):""},u.clone=function(){return new n(this.expStr,this.varContext)},u.execute=function(t,i){return n.execute(t,this.exp,i)},n.execute=function(n,i,u){if(i&&(n=t.filterArray(n,t.jsepToFunction(i,u))),n.length!=1)throw t.createError(r.arrayNotSingle,{array:n,expression:this});return n[0]},n}(),singleOrDefaultExp:function(){var n=function(n,t){i.expressionBase.call(this,"exec;singleOD",3,!0,!1);this.expStr=n;n&&(this.exp=h.jsep(n));this.varContext=t;this.isExecuter=!0},u;return t.inherit(n,i.expressionBase),u=n.prototype,u.toBeetleQuery=function(n){return this.exp?t.jsepToBeetleQuery(this.exp,n):""},u.clone=function(){return new n(this.expStr,this.varContext)},u.execute=function(t,i){return n.execute(t,this.exp,i)},n.execute=function(n,i,u){if(i&&(n=t.filterArray(n,t.jsepToFunction(i,u))),n.length>1)throw t.createError(r.arrayNotSingleOrEmpty,{array:n,expression:this});return n.length==0?null:n[0]},n}(),lastExp:function(){var n=function(n,t){i.expressionBase.call(this,"exec;last",3,!0,!1);this.expStr=n;n&&(this.exp=h.jsep(n));this.varContext=t;this.isExecuter=!0},u;return t.inherit(n,i.expressionBase),u=n.prototype,u.toBeetleQuery=function(n){return this.exp?t.jsepToBeetleQuery(this.exp,n):""},u.clone=function(){return new n(this.expStr,this.varContext)},u.execute=function(t,i){return n.execute(t,this.exp,i)},n.execute=function(n,i,u){if(i&&(n=t.filterArray(n,t.jsepToFunction(i,u))),n.length==0)throw t.createError(r.arrayEmpty,{array:n,expression:this});return n[n.length-1]},n}(),lastOrDefaultExp:function(){var n=function(n,t){i.expressionBase.call(this,"exec;lastOD",3,!0,!1);this.expStr=n;n&&(this.exp=h.jsep(n));this.varContext=t;this.isExecuter=!0},r;return t.inherit(n,i.expressionBase),r=n.prototype,r.toBeetleQuery=function(n){return this.exp?t.jsepToBeetleQuery(this.exp,n):""},r.clone=function(){return new n(this.expStr,this.varContext)},r.execute=function(t,i){return n.execute(t,this.exp,i)},n.execute=function(n,i,r){return i&&(n=t.filterArray(n,t.jsepToFunction(i,r))),n.length==0?null:n[n.length-1]},n}()}}(),queryFuncs:function(){var n={};return n.toupper=function(){var n=function(){i.queryFuncBase.call(this,"toupper","ToUpper",1)},r;return t.inherit(n,i.queryFuncBase),r=n.prototype,r.impl=function(n,t){return(t?t(n):n).toUpperCase()},new n}(),n.tolower=function(){var n=function(){i.queryFuncBase.call(this,"tolower","ToLower",1)},r;return t.inherit(n,i.queryFuncBase),r=n.prototype,r.impl=function(n,t){return(t?t(n):n).toLowerCase()},new n}(),n.substring=function(){var n=function(){i.queryFuncBase.call(this,"substring","Substring",3)},r;return t.inherit(n,i.queryFuncBase),r=n.prototype,r.impl=function(n,t,i,r){arguments.length==3?(r=i,i=t,t=n):t=t(n);i=i(n);r=r(n);var u=Number(i)+Number(r);return t&&t.substring(i,u)},new n}(),n.substringof=function(){var n=function(){i.queryFuncBase.call(this,"substringof","Contains",2)},r;return t.inherit(n,i.queryFuncBase),r=n.prototype,r.toBeetleFunction=function(n,t){return t=t?t+".":"",t+"Contains("+n+")"},r.impl=function(n,t,i){return i=i?i(n):n,i&&i.indexOf(t(n))>=0},new n}(),n.length=function(){var n=function(){i.queryFuncBase.call(this,"length","Length",1)},r;return t.inherit(n,i.queryFuncBase),r=n.prototype,r.toBeetleFunction=function(n){return n=n?n+".":"",n+"Length"},r.impl=function(n,t){return(t?t(n):n).length},new n}(),n.trim=function(){var n=function(){i.queryFuncBase.call(this,"trim","Trim",1)},r;return t.inherit(n,i.queryFuncBase),r=n.prototype,r.impl=function(n,t){return(t?t(n):n).trim()},new n}(),n.concat=function(){var n=function(){i.queryFuncBase.call(this,"concat","Concat",null)},r;return t.inherit(n,i.queryFuncBase),r=n.prototype,r.toBeetleFunction=function(){return"string.Concat("+Array.prototype.slice.call(arguments).join(", ")+")"},r.impl=function(n){for(var i=arguments[1](n).toString(),r=Array.prototype.slice.call(arguments,2),u=[],t=0;t=0},new u}(),n.round=function(){var n=function(){i.queryFuncBase.call(this,"round","Math.Round",1)},r;return t.inherit(n,i.queryFuncBase),r=n.prototype,r.toBeetleFunction=function(n){return"Math.Round("+n+")"},r.impl=function(n,t){return Math.round(t?t(n):n)},new n}(),n.ceiling=function(){var n=function(){i.queryFuncBase.call(this,"ceiling","Math.Ceiling(%1)",1)},r;return t.inherit(n,i.queryFuncBase),r=n.prototype,r.toBeetleFunction=function(n){return"Math.Ceiling("+n+")"},r.impl=function(n,t){return Math.ceil(t?t(n):n)},new n}(),n.floor=function(){var n=function(){i.queryFuncBase.call(this,"floor","Math.Floor",1)},r;return t.inherit(n,i.queryFuncBase),r=n.prototype,r.toBeetleFunction=function(n){return"Math.Floor("+n+")"},r.impl=function(n,t){return Math.floor(t?t(n):n)},new n}(),n.second=function(){var n=function(){i.queryFuncBase.call(this,"second","Second",1)},r;return t.inherit(n,i.queryFuncBase),r=n.prototype,r.toBeetleFunction=function(n){return n=n?n+".":"",n+"Second"},r.impl=function(n,t){return t=e.dataTypes.date.handle(t?t(n):n),t.getSeconds()},new n}(),n.minute=function(){var n=function(){i.queryFuncBase.call(this,"minute","Minute",1)},r;return t.inherit(n,i.queryFuncBase),r=n.prototype,r.toBeetleFunction=function(n){return n=n?n+".":"",n+"Minute"},r.impl=function(n,t){return t=e.dataTypes.date.handle(t?t(n):n),t.getMinutes()},new n}(),n.hour=function(){var n=function(){i.queryFuncBase.call(this,"hour","Hour",1)},r;return t.inherit(n,i.queryFuncBase),r=n.prototype,r.toBeetleFunction=function(n){return n=n?n+".":"",n+"Hour"},r.impl=function(n,t){return t=e.dataTypes.date.handle(t?t(n):n),t.getHours()},new n}(),n.day=function(){var n=function(){i.queryFuncBase.call(this,"day","Day",1)},r;return t.inherit(n,i.queryFuncBase),r=n.prototype,r.toBeetleFunction=function(n){return n=n?n+".":"",n+"Day"},r.impl=function(n,t){return t=e.dataTypes.date.handle(t?t(n):n),t.getDate()},new n}(),n.month=function(){var n=function(){i.queryFuncBase.call(this,"month","Month",1)},r;return t.inherit(n,i.queryFuncBase),r=n.prototype,r.toBeetleFunction=function(n){return n=n?n+".":"",n+"Month"},r.impl=function(n,t){return t=e.dataTypes.date.handle(t?t(n):n),t.getMonth()+1},new n}(),n.year=function(){var n=function(){i.queryFuncBase.call(this,"year","Year",1)},r;return t.inherit(n,i.queryFuncBase),r=n.prototype,r.toBeetleFunction=function(n){return n=n?n+".":"",n+"Year"},r.impl=function(n,t){return t=e.dataTypes.date.handle(t?t(n):n),t.getFullYear()},new n}(),n.max=function(){var n=function(){i.queryFuncBase.call(this,"max","Max",2)},u;return t.inherit(n,i.queryFuncBase),u=n.prototype,u.toODataFunction=function(){throw t.createError(r.functionNotSupportedForOData,["Max"]);},u.impl=function(n,t,i){var u,r,f;if(arguments.length==1?t=n:arguments.length==2?(i=t,t=n):t=t(n),t.length==0)return null;for(u=i?i(t[0]):t[0],r=1;ru&&(u=f);return u},new n}(),n.min=function(){var n=function(){i.queryFuncBase.call(this,"min","Min",2)},u;return t.inherit(n,i.queryFuncBase),u=n.prototype,u.toODataFunction=function(){throw t.createError(r.functionNotSupportedForOData,["Min"]);},u.impl=function(n,t,i){var u,r,f;if(arguments.length==1?t=n:arguments.length==2?(i=t,t=n):t=t(n),t.length==0)return null;for(u=i?i(t[0]):t[0],r=1;r0;for(r=0;r2&&(i=Array.prototype.slice.call(arguments).slice(2)),u=this.slice(n,n+t),this.changing.notify({added:i,removed:u}),i&&r(i,this),f=Array.prototype.splice.apply(this,arguments),this.after(this.object,this.property,this,u,i),this.changed.notify({added:i,removed:u}),f},n.remove=function(){var n=[],i=this;return this.changing.notify({added:[],removed:arguments}),t.forEach(arguments,function(r){var u=t.indexOf(i,r);u>=0&&(Array.prototype.splice.call(i,u,1),n.push(r))}),this.after(this.object,this.property,this,n,null),this.changed.notify({added:[],removed:arguments}),n},n.load=function(n,t,i,r,u){return this.entity.$tracker.loadNavigationProperty(this.propertyName,n,t,i,r,u)},i}(),event:function(){var i=function(n,t){this.name=n;this.subscribers=[];this.publisher=t},n=i.prototype;return n.toString=function(){return this.name},n.subscribe=function(n){t.findInArray(this.subscribers,n)||this.subscribers.push(n)},n.unsubscribe=function(n){t.removeFromArray(this.subscribers,n)},n.notify=function(){var n=arguments;t.forEach(this.subscribers,function(t){t.apply(t,n)})},i}(),dataTypes:function(){function u(n,i){throw t.createError(r.assignError,[n.name,i],{dataType:n,value:i});}var e=function(){var r=function(n){i.dataTypeBase.call(this,"dateBase");this.name=n},n;return t.inherit(r,i.dataTypeBase),n=r.prototype,n.defaultValue=function(){return new Date(-6847812e6)},n.isValid=function(n){return Object.prototype.toString.call(n)==="[object Date]"},n.handle=function(n){if(!this.isValid(n)){var t=n;n=this.tryParse(t);n||u(this,t)}return n},n.autoValue=function(){return new Date},n.getRawValue=function(n){return n==null?null:s.getDateConverter().toISOString(n)},n.tryParse=function(n){return s.getDateConverter().parse(n)},n.toODataValue=function(n){return n=this.handle(n),"datetime'"+s.getDateConverter().toISOString(n)+"'"},n.toBeetleValue=function(n){return n=this.handle(n),'"'+s.getDateConverter().toISOString(n)+'"'},r}(),n={};return n.object=function(){var n=function(){i.dataTypeBase.call(this,"object");t.tryFreeze(this)};return t.inherit(n,i.dataTypeBase),new n}(),n.array=function(){var u=function(){i.dataTypeBase.call(this,"array");t.tryFreeze(this)},n;return t.inherit(u,i.dataTypeBase),n=u.prototype,n.isValid=function(n){return n instanceof Array},n.defaultValue=function(){return[]},n.handle=function(n){return this.isValid(n)||(n=n.split(",")),n},n.autoValue=function(){throw t.createError(r.notImplemented,[this.name,"defaultValue"]);},n.toODataValue=function(n){return n},n.toBeetleValue=function(n){return n},new u}(),n.function=function(){var n=function(){i.dataTypeBase.call(this,"function");t.tryFreeze(this)};return t.inherit(n,i.dataTypeBase),new n}(),n.string=function(){var u=0,r=function(){i.dataTypeBase.call(this,"string");t.tryFreeze(this)},n;return t.inherit(r,i.dataTypeBase),n=r.prototype,n.defaultValue=function(){return""},n.handle=function(n){return this.isValid(n)||(n=n.toString()),n},n.autoValue=function(){return"key_"+--u},n.toODataValue=function(n){return"'"+n.replace(/'/g,"''")+"'"},n.toBeetleValue=function(n){return'"'+n.replace(/"/g,'""')+'"'},new r}(),n.guid=function(){var r=function(){i.dataTypeBase.call(this,"guid");t.tryFreeze(this)},n;return t.inherit(r,i.dataTypeBase),n=r.prototype,n.defaultValue=function(){return"00000000-0000-0000-0000-000000000000"},n.isValid=function(n){return typeof n=="string"&&n.match(/^\{?[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}\}?$/i)},n.handle=function(n){return this.isValid(n)||u(this,n),n},n.autoValue=function(){return t.createGuid()},n.toODataValue=function(n){return"guid'"+n+"'"},n.toBeetleValue=function(n){return'"'+n+'"'},new r}(),n.date=function(){var n=function(){e.call(this,"date");t.tryFreeze(this)};return t.inherit(n,e),new n}(),n.dateTimeOffset=function(){var n=function(){e.call(this,"dateTimeOffset");t.tryFreeze(this)},i;return t.inherit(n,e),i=n.prototype,i.toODataValue=function(n){return n=this.handle(n),"datetimeoffset'"+s.getDateConverter().toISOString(n)+"'"},new n}(),n.time=function(){var r=function(){i.dataTypeBase.call(this,"time");t.tryFreeze(this)},n;return t.inherit(r,i.dataTypeBase),n=r.prototype,n.defaultValue=function(){return"00:00:00"},n.isValid=function(n){return/^([01]?\d|2[0-3])(((:[0-5]?\d){2}(\.\d{1,3}){0,1})|(:[0-5]?\d){0,2})?$/.test(n)},n.handle=function(n){return this.isValid(n)||u(this,n),n},n.autoValue=function(){return"00:00:00"},n.toODataValue=function(n){return"time'"+n+"'"},n.toBeetleValue=function(n){return'"'+n+'"'},new r}(),n.boolean=function(){var r=function(){i.dataTypeBase.call(this,"boolean");t.tryFreeze(this)},f;return t.inherit(r,i.dataTypeBase),f=r.prototype,f.defaultValue=function(){return!1},f.handle=function(t){if(!this.isValid(t)){if(n.String.isValid(t)){var i=t.toLowerCase();if(i=="true"||i=="1")return!0;if(i=="false"||i=="0")return!1}throw u(this,t);}return t},new r}(),n.int=function(){var f=0,r=function(){i.dataTypeBase.call(this,"int");t.tryFreeze(this)},n;return t.inherit(r,i.dataTypeBase),n=r.prototype,n.defaultValue=function(){return 0},n.isValid=function(n){return typeof n=="number"&&n%1==0},n.handle=function(n){return typeof n!="number"&&(n=Number(n)),this.isValid(n)||u(this,n),n},n.autoValue=function(){return--f},new r}(),n.number=function(){var f=0,r=function(){i.dataTypeBase.call(this,"number");t.tryFreeze(this)},n;return t.inherit(r,i.dataTypeBase),n=r.prototype,n.defaultValue=function(){return 0},n.isValid=function(n){return!isNaN(n)&&typeof n=="number"},n.handle=function(n){return typeof n!="number"&&(n=Number(n)),this.isValid(n)||u(this,n),n},n.autoValue=function(){return--f},new r}(),n.byte=function(){var f=0,r=function(){i.dataTypeBase.call(this,"byte");t.tryFreeze(this)},n;return t.inherit(r,i.dataTypeBase),n=r.prototype,n.defaultValue=function(){return 0},n.isValid=function(n){return typeof n=="number"&&n%1==0&&n>=0&&n<256},n.handle=function(n){return typeof n!="number"&&(n=Number(n)),this.isValid(n)||u(this,n),n},n.autoValue=function(){return--f},new r}(),n.binary=function(){var r=function(){i.dataTypeBase.call(this,"binary");t.tryFreeze(this)},n;return t.inherit(r,i.dataTypeBase),n=r.prototype,n.defaultValue=function(){return'"AAAAAAAAAAA="'},n.isValid=function(){return!0},n.handle=function(n){return n},n.toODataValue=function(n){return n=this.handle(n),"X'"+s.getDateConverter().toISOString(n)+"'"},n.toBeetleValue=function(n){return'"'+n+'"'},new r}(),n.enum=function(){function e(n,i){var e,r,u,o;if(f.isArray(n))return e=0,t.forEach(n,function(n){e|=n.value}),e;if(f.isTypeOf(n,"string")){if(r=n.split(", "),r.length==1)return i[n];for(u=0;u0?this.name+" ("+n.join(", ")+")":this.name},u.validate=function(n,t){return this.func(n,t)==!0?null:this.message},n.byCode=function(i,u,f,e,o,h){var c=s.getLocalizeFunction();c&&(f=e&&c(e)||f,o=h&&c(h)||o);u=u||[];u.push(f);u.push(o);switch(i){case"re":return n.required.apply(null,u);case"sl":return n.stringLength.apply(null,u);case"ma":return n.maxLength.apply(null,u);case"mi":return n.minLength.apply(null,u);case"ra":return n.range.apply(null,u);case"rx":return n.regularExpression.apply(null,u);case"ea":return n.emailAddress.apply(null,u);case"cc":return n.creditCard.apply(null,u);case"ur":return n.url.apply(null,u);case"ph":return n.phone.apply(null,u);case"po":return n.postalCode.apply(null,u);case"ti":return n.time.apply(null,u);case"co":return n.compare.apply(null,u);default:throw t.createError(r.unknownValidator,[i]);}},n.required=function(i,u,e){var o=function(n){return n==null?!1:f.isTypeOf(n,"string")&&!i&&n==""?!1:!0};return u=t.formatString(u||r.requiredError,e),new n("Required",o,u,{allowEmptyStrings:i})},n.stringLength=function(i,u,e,o){var s=function(n){return!i&&!u?!0:f.isNotEmptyString(n)?i&&n.lengthu?!1:!0:!1};return e=t.formatString(e||r.stringLengthError,o,i,u),new n("StringLength",s,e,{min:i,max:u})},n.maxLength=function(i,u,f){var e=function(n){return n==null?!0:i&&n.length>i?!1:!0};return u=t.formatString(u||r.maxLenError,f,i),new n("MaxLength",e,u,{length:i})},n.minLength=function(i,u,f){var e=function(n){return n==null?!1:i&&n.lengthu?!1:!0};return f=t.formatString(f||r.rangeError,e,i,u),new n("Range",o,f,{min:i,max:u})},n.regularExpression=function(n,t,r){return f.isTypeOf(n,"string")&&(n=new RegExp(n)),i("RegularExpression",n,t,r)},n.emailAddress=function(n,t){return i("EmailAddress",/^\w+@[a-zA-Z_]+?\.[a-zA-Z]{2,3}$/,n,t)},n.creditCard=function(n,t){return i("CreditCard",/^((4\d{3})|(5[1-5]\d{2})|(6011)|(3[68]\d{2})|(30[012345]\d))[ -]?(\d{4})[ -]?(\d{4})[ -]?(\d{4}|3[4,7]\d{13})$/,n,t)},n.url=function(n,t){return i("Url",/(http|ftp|https):\/\/[\w-]+(\.[\w-]+)+([\w.,@?^=%&:\/~+#-]*[\w@?^=%&\/~+#-])?/,n,t)},n.phone=function(n,t){return i("Phone",/^(?!.*-.*-.*-)(?=(?:\d{8,10}$)|(?:(?=.{9,11}$)[^-]*-[^-]*$)|(?:(?=.{10,12}$)[^-]*-[^-]*-[^-]*$) )[\d-]+$/,n,t)},n.postalCode=function(n,t){return i("PostalCode",/^\d{5}([\-]?\d{4})?$/,n,t)},n.time=function(n,t){return i("Time",/^([01]?\d|2[0-3])(((:[0-5]?\d){2}(\.\d{1,3}){0,1})|(:[0-5]?\d){0,2})?$/,n,t)},n.compare=function(i,u,f){var o=function(n,r){var u=t.getValue(r,i);return n==u},e=s.getLocalizeFunction(),h=e&&e(i)||i;return u=t.formatString(u||r.compareError,f,h),new n("Compare",o,u,{property:i})},n}(),entityContainer:function(){function r(n,t){var i=new u(n);return t.push(i),i}var u=function(){function u(n,t){var i=r(n,t);return i>-1?t[i]:null}function r(n,t){var f=t.length,r,u,i;if(f>0)for(r=0,u=f-1;r<=u;){if(i=Math.floor((r+u)/2),t[i].keyn){u=i-1;continue}return i}return-1}function f(n,t){for(var i=0;it[i].key;)i++;return i}var i=function(n){this.typeName=n.name;this.keyIndex=[];t.tryFreeze(this)},n=i.prototype;return n.toString=function(){return this.typeName+": "+this.keyIndex.length},n.push=function(n,t){var i=f(n,this.keyIndex);this.keyIndex.splice(i,0,{key:n,entity:t})},n.remove=function(n){var t=r(n,this.keyIndex);this.keyIndex.splice(t,1)},n.getEntity=function(n){var t=u(n,this.keyIndex);return t?t.entity:null},n.getRelations=function(n,t){var f=t.inverse,r,i,u;if(!f)return null;for(r=[],i=0;i0)&&n.$tracker.isChanged()})},n.count=function(){return this.allEntities.length},n.findEntitySet=function(n){return t.findInArray(this.entitySets,n.name,"typeName")},i}(),entityTracker:function(){function y(n,t,i,r){r.entity=n;n.$tracker=r;r.entityType=t;r.entityState=u.entityStates.Detached;r.observableProvider=i;r.forceUpdate=!1;r.originalValues=[];r.changedValues=[];r.manager=null;r.owners=[];r.validationErrors=[];r.validationErrorsChanged=new e.event("validationErrorsChanged",r);r.entityStateChanged=new e.event("entityStateChanged",r);r.propertyChanged=new e.event("propertyChanged",r);r.arrayChanged=new e.event("arrayChanged",r);t.hasMetadata&&(r.key=l(r))}function p(n,t,i){var r={propertyChange:w,arrayChange:b,dataPropertyChange:k,scalarNavigationPropertyChange:d,pluralNavigationPropertyChange:g,arraySet:nt};return i.observableProvider.toObservable(n,t,r)}function c(n,t){n.baseType&&c(n.baseType,t);n.initializer&&n.initializer.call(t,t)}function l(n,t,i){var e=n.entityType,o,r,u,f;if(e.keys.length==0)return null;for(o=[],r=0;r=0;p--)k=y[p],k.entity==n&&k.property==u&&y.splice(p,1);y.length==0&&a.$tracker.manager&&a.$tracker.manager.detachEntity(a);h.$tracker.owners.push({entity:n,property:u})}c.manager&&(d=s.autoFixScalar,t.forEach(u.relatedNavigationProperties,function(n){var t,i,r;if(n.isScalar===!0)if(t=c.foreignKey(n),t){if(i=c.getValue(n.name),i&&i.$tracker.key===t)return;r=null;c.manager&&d&&(r=c.manager.getEntityByKey(t,n.entityType));r?c.setValue(n.name,r):i&&c.setValue(n.name,new e.valueNotifyWrapper(null))}else c.setValue(n.name,null)}))}}function d(n,u,h,c){var y=n.$tracker,d=!1,l,w,p,b,a,k;if(f.isInstanceOf(c,e.valueNotifyWrapper)&&(d=!0,c=c.value),l=h(),l!=c)if(u.checkAssign(c),h(c),s.liveValidate===!0&&o(u.validate(n),y,u),y.propertyChanged.notify({entity:n,property:u,oldValue:l,newValue:c}),v(c,y.manager),u.isComplex){if(c==null)throw t.createError(r.complexCannotBeNull,[u.displayName],{entity:n,property:u});for(w=l.$tracker.owners,p=w.length-1;p>=0;p--)b=w[p],b.entity==n&&b.property==u&&w.splice(p,1);l.$tracker.owners.length==0&&l.$tracker.manager&&l.$tracker.manager.detachEntity(l);c.$tracker.owners.push({entity:n,property:u});i(n,u.name,c.$tracker.toRaw(),y)}else d||(u.triggerOwnerModify&&u.foreignKeys.length==0&&i(n,null,null,y),t.setForeignKeys(n,u,c)),a=u.inverse,a&&(a.isScalar?(l&&l.$tracker.setValue(a.name,null),c&&c.$tracker.setValue(a.name,n)):(l&&l.$tracker.getValue(a.name).remove(n),c&&(k=c.$tracker.getValue(a.name),t.findInArray(k,n)||k.push(n))))}function g(n,r,u,f,e){var c=n.$tracker,h;s.liveValidate===!0&&o(r.validate(n),c,r);r.triggerOwnerModify&&i(n,null,null,c);c.arrayChanged.notify({entity:n,property:r,items:u,removedItems:f,addedItems:e});h=r.inverse;h&&(f&&t.forEach(f,function(t){t.$tracker.getValue(h.name)==n&&t.$tracker.setValue(h.name,null)}),e&&t.forEach(e,function(t){v(t,c.manager);t.$tracker.setValue(h.name,n)}))}function nt(n,i,f,e){var l=s.getArraySetBehaviour(),h,o,c;if(l==u.arraySetBehaviour.NotAllowed)throw t.createError(r.settingArrayNotAllowed,{entity:n,property:e});if(h=[],o=t.filterArray(f,function(){return!0}),l==u.arraySetBehaviour.Replace&&t.forEach(i,function(n){t.findInArray(o,n)?t.removeFromArray(o,n):h.push(n)}),l==u.arraySetBehaviour.Append&&t.forEach(f,function(n){t.findInArray(i,n)&&t.removeFromArray(o,n)}),h.length>0)for(c=h.length-1;c>=0;c--)i.splice(t.indexOf(i,h[c]),1);o.length>0&&i.push.apply(i,o)}function tt(n){var i=n.$tracker;t.forEach(i.entityType.navigationProperties,function(r){var f,e,u;r.inverse&&(f=r.inverse,r.isScalar?(e=i.getValue(r.name),e&&t.setForeignKeys(e,f,n)):(u=i.getValue(r.name),u&&u.length>0&&t.forEach(u,function(i){t.setForeignKeys(i,f,n)})))})}function v(n,i){if(n&&i&&!n.$tracker.entityType.isComplexType&&!i.isInManager(n)){if(n.$tracker.manager)throw t.createError(r.entityAlreadyBeingTracked,null,{entity:n,manager:i});i.addEntity(n)}}function i(n,r,f,e){var o=e.entityState;o==u.entityStates.Unchanged&&(t.forEach(e.entityType.navigationProperties,function(n){var u=n.inverse,r;u&&u.triggerOwnerModify&&(r=e.getValue(n.name),r&&(n.isScalar?i(r,null,null,r.$tracker):t.forEach(r,function(n){i(n,null,null,n.$tracker)})))}),e.toModified());it(r,f,e.originalValues,e.changedValues)}function it(n,i,r,u){var f,e;n!=null&&(i==null||i.$tracker==null||i.$tracker.entityType.isComplexType)&&(f=t.findInArray(r,n,"p"),f||r.push({p:n,v:i}),e=t.findInArray(u,n,"p"),e||u.push({p:n,v:i}))}function o(n,i,r){var u=[],f=r?t.filterArray(i.validationErrors,function(n){return n.property===r}):t.filterArray(i.validationErrors,function(){return!0});t.forEach(f,function(r){t.findInArray(n,r.validator,"validator")?t.removeFromArray(n,r.validator,"validator"):(t.removeFromArray(i.validationErrors,r),u.push(r))});i.validationErrors=i.validationErrors.concat(n);(u.length>0||n.length>0)&&i.validationErrorsChanged.notify({errors:i.validationErrors,added:n,removed:u})}var h=function(n,t,i){delete n.$type;delete n.$id;y(n,t,i||s.getObservableProvider(),this);p(n,t,this);c(t,n)},n=h.prototype;return n.toString=function(){return"EntityTracker: "+this.entityType.shortName+", key: "+this.key},n.setManagerInfo=function(n){if(this.manager)throw t.createError(r.entityAlreadyBeingTracked,{otherManager:this.manager});t.assertPrm(n,"manager").isInstanceOf(e.entityManager).check();this.manager=n},n.isChanged=function(){return this.entityState===u.entityStates.Added||this.entityState===u.entityStates.Deleted||this.entityState===u.entityStates.Modified},n.toAdded=function(){if(this.entityState!=u.entityStates.Added){var n={entity:this.entity,oldState:this.entityState,newState:u.entityStates.Added,newChanged:!this.isChanged()};this.entityState=u.entityStates.Added;this.entityStateChanged.notify(n)}},n.toModified=function(){if(this.entityState!=u.entityStates.Modified){var n={entity:this.entity,oldState:this.entityState,newState:u.entityStates.Modified,newChanged:!this.isChanged()};this.entityState=u.entityStates.Modified;this.entityStateChanged.notify(n)}},n.toDeleted=function(){if(this.entityState!=u.entityStates.Deleted){var n={entity:this.entity,oldState:this.entityState,newState:u.entityStates.Deleted,newChanged:!this.isChanged()};this.entityState=u.entityStates.Deleted;this.entityStateChanged.notify(n)}},n.toUnchanged=function(){if(this.entityState!=u.entityStates.Unchanged){var n={entity:this.entity,oldState:this.entityState,newState:u.entityStates.Unchanged,newUnchanged:this.isChanged()};this.originalValues.length=0;this.changedValues.length=0;this.entityState=u.entityStates.Unchanged;this.entityStateChanged.notify(n)}},n.toDetached=function(){if(this.entityState!=u.entityStates.Detached){var n={entity:this.entity,oldState:this.entityState,newState:u.entityStates.Detached,newUnchanged:this.isChanged()};this.entityState=u.entityStates.Detached;this.entityStateChanged.notify(n)}},n.undoChanges=function(){var n=this;t.forEach(this.changedValues,function(t){n.setValue(t.p,t.v)});this.changedValues.length=0},n.acceptChanges=function(){this.changedValues.length=0},n.getValue=function(n){return this.observableProvider.getValue(this.entity,n)},n.setValue=function(n,t){this.observableProvider.setValue(this.entity,n,t)},n.foreignKey=function(n){var r=n.entityType,u,t,e,f,o,i;if(r.keys.length==0)return null;for(u=[],t=0;t2)throw t.createError(r.managerInvalidArgs,{entityManager:u});var o=n[0],s=n[1];if(f.isInstanceOf(o,i.dataServiceBase))u.dataService=o;else if(f.isTypeOf(o,"string"))u.dataService=s?new v.webApiService(o,s):new v.webApiService(o,!1);else throw t.createError(r.managerInvalidArgs,{entityManager:this});u.pendingChangeCount=0;u.entities=new e.entityContainer;u.validationErrors=[];u.entityStateChanged=new e.event("entityStateChanged",u);u.validationErrorsChanged=new e.event("validationErrorsChanged",u);u.hasChangesChanged=new e.event("hasChangesChanged",u);u.queryExecuting=new e.event("queryExecuting",u);u.queryExecuted=new e.event("queryExecuted",u);u.saving=new e.event("saving",u);u.saved=new e.event("saved",u)}function o(n,i,e,o,h,c,l){e||(e=u.mergeStrategy.Preserve);o&&o!==u.entityStates.Detached||(o=u.entityStates.Added);c==null&&(c=s.autoFixScalar);l==null&&(l=s.autoFixPlural);i=i||h.flatEntities(f.isArray(n)?n:[n]);var y=[],p=[],v=[],w=h.entities.count(),a=h;t.forEach(i,function(n){var f=n.$tracker;if(!f&&n.$type)f=a.toEntity(n,n.$type).$tracker;else if(f.entityType.isComplexType||h.isInManager(n))return;var o=f.entityType,s=f.key,i=null;if(w>0&&s&&(i=a.entities.getEntityByKey(s,o.floorType)),i){if(o.name!==i.$tracker.entityType.name)throw t.createError(r.sameKeyOnDifferentTypesError,[i.$tracker.entityType.shortName,o.shortName],{existingEntity:i,entity:n,manager:a});if(e===u.mergeStrategy.ThrowError)throw t.createError(r.sameKeyExists,{existingEntity:i,entity:n,manager:a});else e===u.mergeStrategy.Preserve?v.push({o:n,n:i}):(v.push({o:n,n:i}),p.push({o:i,n:n}))}else a.entities.push(n),n.$tracker.setManagerInfo(a),y.push(n)});t.forEach(y,function(n){d(n,c,l,a);lt(n,a);k(n,o);s.validateOnMerge===!0&&n.$tracker.validate()});t.forEach(p,function(n){ot(n.o,n.n);k(n.o,o)});t.forEach(v,function(i){var r=t.indexOf(n,i.o);r>=0&&(n[r]=i.n);st(i.o,i.n,c,l,a)})}function b(n,i){if(!i.isInManager(n))throw t.createError(r.entityNotBeingTracked,{entity:n,manager:i});}function k(n,i){if(i===u.entityStates.Unchanged)n.$tracker.toUnchanged();else if(i===u.entityStates.Modified)n.$tracker.toModified();else if(i===u.entityStates.Added)n.$tracker.toAdded();else throw t.createError(r.mergeStateError,[i],{entity:n,state:i});}function ot(n,i){var r=i.$tracker;t.forEach(r.entityType.dataProperties,function(t){n.$tracker.setValue(t.name,r.getValue(t.name))})}function d(n,i,r,u){if(i==!0||r==!0){var e=n.$tracker,o=e.entityType;t.forEach(o.navigationProperties,function(t){var f=e.getValue(t.name),o,h,s,c,l;if(t.isComplex){for(o=f.$tracker.owners,h=!1,s=0;s=0;u--)r=t[u],r&&r.$tracker&&r.$tracker.entityType.hasMetadata&&r.$tracker.manager!=i&&(f=i.getEntityByKey(r.$tracker.key,r.$tracker.entityType),f?t.splice(u,1,f):t.splice(u,1))}function st(n,i,r,u,f){var c=n.$tracker.entityType,h,s,e,o;t.forEach(c.navigationProperties,function(c){var y,p,l,a,v;c.isComplex||(h=n.$tracker,s=i.$tracker,e=h.getValue(c.name),o=s.getValue(c.name),c.isScalar?o||(r==!0?tt(i,c,null,f):r===!0&&c.inverse&&c.inverse.isScalar||u===!0&&c.inverse&&!c.inverse.isScalar||(y=h.foreignKey(c),p=s.foreignKey(c),y==p&&e!=null&&f.isInManager(e)&&(l=c.inverse,l?l.isScalar?e.$tracker.setValue(l.name,i):(a=e.$tracker.getValue(l.name),v=t.indexOf(a,n),v>=0&&a.splice(v,1,i)):s.setValue(c.name,e)))):u?it(i,c,o,f):r===!0&&c.inverse||t.forEach(e,function(n){f.isInManager(n)&&!t.findInArray(o,n)&&o.push(n)}))})}function tt(n,t,i,r){var f=n.$tracker,u=f.foreignKey(t);i?u!=i.$tracker.key&&setForeignKeys(n,t,i):u&&f.setValue(t.name,r.entities.getEntityByKey(u,t.entityType))}function it(n,i,r,u){var f=u.entities.getRelations(n,i);f&&t.forEach(f,function(n){t.findInArray(r,n)||r.push(n)})}function rt(n,i){var r=n.$tracker,u=r.entityType,f=i?new e.valueNotifyWrapper(null):null;u.hasMetadata&&t.forEach(u.navigationProperties,function(n){n.isScalar?r.setValue(n.name,f):r.getValue(n.name).splice(0)})}function ht(n,i,r){t.forEach(n,function(n){n.$tracker.entityState==u.entityStates.Deleted?(n.$tracker.toDetached(),ut(n,r),i.remove(n)):n.$tracker.toUnchanged()})}function ct(n,i,r){if(i.removed.length>0)for(var u=i.removed.length-1;u>=0;u--)r.validationErrors.splice(t.indexOf(r.validationErrors,i.removed[u]),1);i.added.length>0&&r.validationErrors.push.apply(r.validationErrors,i.added);(i.removed.length>0||i.added.length>0)&&r.validationErrorsChanged.notify({errors:r.validationErrors,added:i.added,removed:i.removed})}function lt(n,t){n.$tracker.entityStateChanged.subscribe(function(n){var i=t.pendingChangeCount;n.newChanged===!0?t.pendingChangeCount++:n.newUnchanged===!0&&t.pendingChangeCount--;t.entityStateChanged.notify(n);i==0&&t.pendingChangeCount>0?t.hasChangesChanged.notify({hasChanges:!0}):i>0&&t.pendingChangeCount==0&&t.hasChangesChanged.notify({hasChanges:!1})});n.$tracker.validationErrorsChanged.subscribe(function(i){ct(n,i,t)})}function ut(n,i){n.$tracker.entityStateChanged.unsubscribe(i.entityStateChanged.notify);n.$tracker.validationErrorsChanged.unsubscribe(i.validationErrorsChanged.notify);var r=t.filterArray(i.validationErrors,function(t){return t.entity==n});t.removeFromArray(i.validationErrors,n,"entity");i.validationErrorsChanged.notify({errors:i.validationErrors,removed:r,added:[]})}function at(n,t,i){var r={manager:n,query:t,options:i};return n.queryExecuting.notify(r),a.queryExecuting.notify(r),r}function ft(n,t,i,r){var u={manager:n,query:t,options:i,result:r};return n.queryExecuted.notify(u),a.queryExecuted.notify(u),u.result}function vt(n,t,i){var r={manager:n,changes:t,options:i};return n.saving.notify(r),a.saving.notify(r),r.options}function yt(n,t,i){var r={manager:n,changes:t,options:i};n.saved.notify(r);a.saved.notify(r)}function l(n,t,i,r){n&&n(r);t&&t.resolve(i,r)}function h(n,t,i,r,u){if(n&&n(r),t&&t.reject(i,r),r.manager=u,!n&&!t)throw new r;}var y=function(){et(arguments,this)},n=y.prototype;return n.toString=function(){return this.dataService.toString()+", "+r.pendingChanges+": "+this.pendingChangeCount+", "+r.validationErrors+": "+this.validationErrors.length},n.getEntityType=function(n){return this.dataService.getEntityType(n)},n.createQuery=function(n,t){return this.dataService.createQuery(n,t,this)},n.createEntityQuery=function(n,t){return this.dataService.createEntityQuery(n,t,this)},n.registerCtor=function(n,t,i){this.dataService.registerCtor(n,t,i)},n.createEntity=function(n,t){var i=this.dataService.createEntity(n,t),r=[i];return o(r,null,u.mergeStrategy.ThrowError,u.entityStates.Added,this),i},n.createDetachedEntity=function(n,t){return this.dataService.createEntity(n,t)},n.createRawEntity=function(n,t){return this.dataService.createRawEntity(n,t)},n.createEntityAsync=function(n,t,i,r,u){return p(n,t,i,r,u,this)},n.createRawEntityAsync=function(n,t,i,r,u){return i?i.makeObservable=!1:i={makeObservable:!1},p(n,t,i,r,u,this)},n.executeQuery=function(n,i,e,c){var k,a,p,d,g,b;n.options&&(i=t.combine(n.options,i));k=at(this,n,i);n=k.query;i=k.options;a=i&&i.async==!1?null:s.getPromiseProvider();p=null;a&&(p=a.deferred());var y=u.mergeStrategy.Preserve,v=u.executionStrategy.Server,w=null,nt,tt;if(f.isEnum(i,u.mergeStrategy)?(y=i,i={makeObservable:y!=u.mergeStrategy.NoTrackingRaw}):f.isEnum(i,u.executionStrategy)?v=i:i&&(i.merge&&(y=i.merge),i.execution&&(v=i.execution),i.autoFixScalar!=null&&(nt=i.autoFixScalar),i.autoFixPlural!=null&&(tt=i.autoFixPlural),i.makeObservable=y!=u.mergeStrategy.NoTrackingRaw),d=y==u.mergeStrategy.NoTracking||y==u.mergeStrategy.NoTrackingRaw,d&&v==u.executionStrategy.Both)throw t.createError(r.executionBothNotAllowedForNoTracking,{executionStrategy:v,mergeStrategy:y});return((v==u.executionStrategy.Local||v==u.executionStrategy.LocalIfEmptyServer)&&(w=this.executeQueryLocally(n)),g=null,v==u.executionStrategy.Local||v==u.executionStrategy.LocalIfEmptyServer&&w&&(w.length==null||w.length>0)?(w=ft(this,n,i,w),l(e,a,p,w)):(b=this,this.dataService.executeQuery(n,i,function(t,r,s,w){try{var k=!1;t&&(d||(f.isArray(t)||(t=[t],k=!0),o(t,r,y,u.entityStates.Unchanged,b,nt,tt),k&&(t=t[0])));v==u.executionStrategy.Both&&(t=b.executeQueryLocally(n),s!=null&&t.$inlineCountDiff!=null&&(s+=t.$inlineCountDiff));t&&(n.inlineCountEnabled&&s!=null&&(t.$inlineCount=s),w&&(t.$extra=w));t=ft(b,n,i,t);l(e,a,p,t);a||(g=t)}catch(it){h(c,a,p,it,b)}},function(t){t.query=n;h(c,a,p,t,b)})),a)?a.getPromise(p):g},n.executeQueryLocally=function(n,i){var c=n.entityType,l,e,h,a;if(c)if(e=this.entities.findEntitySet(c),e)l=e.getEntities();else return[];else throw t.createError(r.typeRequiredForLocalQueries);var f=[],o=[],s=!1;return t.forEach(l,function(n){n.$tracker.entityState==u.entityStates.Added?(s=!0,f.push(n)):n.$tracker.entityState==u.entityStates.Deleted?(s=!0,o.push(n)):(f.push(n),o.push(n))}),h=n.toFunction(),f=h(f,i),f.$inlineCount&&s&&(a=h(o,i),f.$inlineCountDiff=f.$inlineCount-a.$inlineCount),f},n.getEntityByKey=function(n,t){var i=f.isInstanceOf(t,c.entityType)?t:this.getEntityType(t,!0);return this.entities.getEntityByKey(n,i)},n.deleteEntity=function(n){var i,f,e;for(b(n,this),i=this,f=[],t.forEach(n.$tracker.entityType.navigationProperties,function(u){var e,o;if(u.cascadeDelete){if(u.inverse&&u.inverse.cascadeDelete)throw t.createError(r.twoEndCascadeDeleteNotAllowed,{entity:n,property:u});e=n.$tracker.getValue(u.name);e&&(u.isScalar?u.foreignKeys!=null&&u.foreignKeys.length>0?f.push(e):i.deleteEntity(e):(o=t.filterArray(e,function(){return!0}),t.forEach(o,function(n){i.deleteEntity(n)})))}}),n.$tracker.entityState===u.entityStates.Added?this.detachEntity(n):(rt(n,!0),n.$tracker.toDeleted()),e=0;e0)throw t.createError(r.cannotDetachComplexTypeWithOwners);b(n,this);rt(n,!0);ut(n,this);n.$tracker.toDetached();n.$tracker.manager=null;this.entities.remove(n)},n.createSavePackage=function(n,t){var f=t&&t.userData||null,i=t&&t.forceUpdate,r,u;return i==null&&(i=s.forceUpdate),r={userData:f,forceUpdate:i},u=this.exportEntities(n||this.getChanges(),t),r.entities=u,r},n.rejectChanges=function(n,i){var e=this,r;f.isArray(n)||(n=[n]);r=i===!0?this.flatEntities(n):n;t.forEach(r,function(n){var t=n.$tracker;t.entityState==u.entityStates.Added?e.detachEntity(n):t.entityState==u.entityStates.Modified&&(t.undoChanges(),t.toUnchanged())})},n.undoChanges=function(n,i){f.isArray(n)||(n=[n]);var r=i===!0?this.flatEntities(n):n;t.forEach(r,function(n){n.$tracker.undoChanges()})},n.acceptChanges=function(n,i){f.isArray(n)||(n=[n]);var r=i===!0?this.flatEntities(n):n;t.forEach(r,function(n){n.$tracker.acceptChanges()})},n.exportEntities=function(n,i){var e=[],r,f;return n=n||this.entities.getEntities(),r=i&&i.forceUpdate,r==null&&(r=s.forceUpdate),f=i&&i.minimizePackage,f==null&&(f=s.minimizePackage),t.forEach(n,function(n,i){var o=n.$tracker,a=o.entityType,h=o.entityState,c,s,l;if(r===!1&&(r=o.forceUpdate),c={},f===!0)if(h==u.entityStates.Modified)if(o.originalValues.length>0)s={},t.forEach(o.originalValues,function(t){var f,r=t.p.split("."),e,u,i;if(r.length>1){for(e=0;e0},n.getChanges=function(){return this.entities.getChanges()},n.saveChanges=function(n,i,e){var c=n&&n.entities||this.getChanges(),a,v,p,w,y;n=vt(this,c,n);a=n&&n.async==!1?null:s.getPromiseProvider();v=null;a&&(v=a.deferred());var b=n&&n.autoFixScalar,k=n&&n.autoFixPlural,d=null;return(f.isArray(c)||(c=[c]),c&&c.length>0?(p=[],s.validateOnSave===!0&&t.forEach(c,function(n){if(n.$tracker.entityState!=u.entityStates.Deleted){var t=n.$tracker.validate();t&&t.length>0&&p.push({entity:n,validationErrors:t})}}),p.length>0?(w=new t.createError(r.validationFailed,{entities:c,validationErrors:p}),w.entitiesInError=p,h(e,a,v,w,this)):(y=this,this.dataService.saveChanges(this.createSavePackage(c,n),n,function(r){try{r.GeneratedEntities!=null&&r.GeneratedEntities.length>0&&o(r.GeneratedEntities,null,u.mergeStrategy.Preserve,u.entityStates.Unchanged,y,b,k);r.GeneratedValues&&t.forEach(r.GeneratedValues,function(n){var r=c[n.Index],f,t=n.Property.split("."),i,s,e;if(t.length>1){for(i=0;i",function(n,t){return n()>t()},"gt")),i.push(new n("Lesser","<",function(n,t){return n()=",function(n,t){var i=n(),r=t();return i==r||i>r},"ge")),i.push(new n("LesserEqual","<=",function(n,t){var i=n(),r=t();return i==r||i>",function(n,t){return n()>>t()})),n.find=function(n){var r=t.filterArray(i,function(t){return t.code==n||t.oData==n||t.js==n});return r.length>0?r[0]:null},n}(),filterOps:new h.enums({Equals:{oData:"eq",code:"=="},NotEqual:{oData:"ne",code:"!="},Greater:{oData:"gt",code:">"},Lesser:{oData:"lt",code:"<"},GreaterEqual:{oData:"ge",code:">="},LesserEqual:{oData:"le",code:"<="},Contains:{oData:"substringof",code:"contains",isFunc:!0},StartsWith:{oData:"startswith",code:"startswith",isFunc:!0},EndsWith:{oData:"endswith",code:"endswith",isFunc:!0}}),mergeStrategy:new h.enums("Preserve","Overwrite","ThrowError","NoTracking","NoTrackingRaw"),executionStrategy:new h.enums("Server","Local","Both","LocalIfEmptyServer"),generationPattern:new h.enums("Identity","Computed"),arraySetBehaviour:new h.enums("NotAllowed","Replace","Append")}}(),a=function(){return{queryExecuting:new e.event("beetleQueryExecuting",this),queryExecuted:new e.event("beetleQueryExecuted",this),saving:new e.event("beetleSaving",this),saved:new e.event("beetleSaved",this),info:new e.event("beetleInfo",this),warning:new e.event("beetleWarning",this),error:new e.event("beetleError",this)}}(),s=function(){var s,o;s=n.ko?l.koObservableProviderInstance:n.Backbone?l.backboneObservableProviderInstance:l.propertyObservableProviderInstance;n.Q?o=l.qPromiseProviderInstance:n.jQuery&&(o=l.jQueryPromiseProviderInstance);var h=u.arraySetBehaviour.NotAllowed,c=l.defaultDateConverterInstance,a,e={};return e.autoFixScalar=!0,e.autoFixPlural=!1,e.validateOnMerge=!0,e.validateOnSave=!0,e.liveValidate=!0,e.handleUnmappedProperties=!0,e.isCaseSensitive=!1,e.ignoreWhiteSpaces=!1,e.forceUpdate=!1,e.workAsync=!0,e.ajaxTimeout=null,e.minimizePackage=!1,e.getObservableProvider=function(){return s},e.setObservableProvider=function(n){var h,e,o;if(f.isInstanceOf(n,i.observableProviderBase))s=n;else{if(f.isNotEmptyString(n))for(h=u.observableProviders.symbols(),e=0;e p.Name.",functionNotSupportedForOData:"OData does not support %0 function, please use Beetle Query Strings (like: manager.executeQuery(query, {useBeetleQueryStrings: true}))",instanceError:"%0 is not an instance of %1.",invalidArguments:"Invalid arguments.",invalidDefaultValue:"%0 is not a valid default value for %0.",invalidEnumValue:"Invalid enum value, %0 cannot be found in %1.",invalidExpression:"%0 can only have %1 type expressions.",invalidPropertyAlias:"Invalid property alias.",invalidStatement:"Invalid statement.",invalidValue:"Invalid value for %0 property.",managerInvalidArgs:"Invalid arguments. Valid args are: {DataService} or {Uri, [MetadataManager]} or {Uri, [metadataString (string)]} or {Uri, [doNotUseMetadata (bool)]}.",maxLenError:"%0 property length cannot exceed %1.",maxPrecisionError:"Value %0 exceeded maximum precision of %1.",mergeStateError:"Cannot merge entities with %0 state.",minLenError:"%0 property length must be greater than %1.",noMetadataEntityQuery:"Cannot create entity query when no metadata is available.",noMetadataRegisterCtor:"Cannot register constructor when no metadata is available.",noOpenGroup:"Could not find any open group.",notFoundInMetadata:"Could not find %0 in metadata.",notImplemented:"%0 %1 is not implemented.",notNullable:"Cannot set %0 with null, property is not nullable.",oDataNotSupportMultiTyped:"Multi-Typed queries cannot be used for OData services.",onlyManagerCreatedCanBeExecuted:"Only queries which are created from a manager can be directly executed.",onlyManagerCreatedCanAcceptEntityShortName:"Only queries which are created from a manager can accept entity type short name parameter.",pendingChanges:"Pending changes",pluralNeedsInverse:"To load plural relations, navigation property must have inverse.",projectionsMustHaveAlias:"All projected values must have a property name or alias.",propertyNotFound:"Could not find property: %0.",queryClosed:"Query is closed, expression cannot be added. Queries must be executed after some expressions like first, single, any, all etc..",rangeError:"%0 property value must be between %1 and %2.",requiredError:"%0 property is required.",sameKeyExists:"There is already an entity with same key in the manager.",sameKeyOnDifferentTypesError:"Two different types of entities cannot have same keys when they are from same inheritance root (%0, %1).",settingArrayNotAllowed:"Setting array property is not allowed, you may change this via beetle.settings.setArraySetBehaviour(behavior).",stringLengthError:"%0 property length must be between %1 and %2.",twoEndCascadeDeleteNotAllowed:"Two-end cascade deletes are not supported.",typeError:"%0 type is not %1.",typeMismatch:"%0 value type mismatch. expected type: %1, given type: %2, value: %3",typeRequiredForLocalQueries:'To execute queries locally, entity type must be provided (createQuery("Entities", "Entity") or createEntityQuery("Entity")).',unclosedQuote:'Unclosed quote in "%0".',unclosedToken:'Unclosed "%0".',unexpectedProperty:'Unexpected property "%0".',unexpectedToken:"Unexpected %0.",unknownDataType:"Unknown data type: %0.",unknownExpression:"Unknown expression.",unknownFunction:"Unknown function: %0.",unknownParameter:"Unknown parameter: %0.",unknownValidator:"Unknown validator type: %0.",unsoppertedState:"Unsupported entity state: %0.",validationErrors:"Validation errors",validationFailed:"Validation failed.",valueCannotBeNull:"Value cannot be null: %0.",operatorNotSupportedForOData:"Operator is not supported for OData: %0."}),n.beetleI18N}(),y=function(){return{version:"1.0",i18N:r,helper:t,assert:f,libs:h,baseTypes:i,impls:l,metadata:c,querying:o,core:e,services:v,enums:u,events:a,settings:s,MetadataManager:c.metadataManager,entityManager:e.entityManager,EntityManager:e.entityManager,WebApiService:v.webApiService,MvcService:v.mvcService,EntityStates:u.entityStates,FilterOps:u.filterOps,MergeStrategy:u.mergeStrategy}}();return t.tryFreeze(y),n.beetle=y,y})(window); +(function(n){"use strict";var t=function(){return{assertPrm:function(n,t){return new f(n,t)},combine:function(n,i){var r,e,u;if(n==i)return n;if(r={},n!=null)for(e in n)r[e]=n[e];if(i!=null)for(u in i){var s=r[u],o=i[u],h=f.isTypeOf(s,"object")&&f.isTypeOf(o,"object")?t.combine(s,o):o;r[u]=h}return r},objEquals:function(n,i){var u,e,r,o;if(n==i)return!0;if(n==null||i==null)return!1;if(f.isObject(n)&&f.isObject(i)){u=0;e=0;for(r in n){if(!i.hasOwnProperty(r)||!t.objEquals(t.getValue(n,r),t.getValue(i,r)))return!1;u++}for(o in i)e++;return u==e}return!1},equals:function(n,t,i,r){var u,f;return typeof n=="string"&&typeof t=="string"&&(u=r&&r.isCaseSensitive,u==null&&(u=s.isCaseSensitive),f=r&&r.ignoreWhiteSpaces,f==null&&(f=s.ignoreWhiteSpaces),u||(n=n.toLowerCase(),t=t.toLowerCase()),f&&(n=n.trim(),t=t.trim())),i?n===t:n==t},formatString:function(n){var t=arguments,i=RegExp("%([0-"+(arguments.length-1)+"])","g"),r=RegExp("{([0-"+(arguments.length-2)+"])}","g");return n.replace(i,function(n,i){return t[Number(i)+1]||""}).replace(r,function(n,i){return t[Number(i)+1]||""})},tryFreeze:function(n,t){var r,i;if(!n||!Object.freeze)return n;if(Object.freeze(n),t===!0)for(r in n)i=n[r],f.isArray(i)?this.tryFreezeArray(i,t):f.isObject(i)&&this.tryFreeze(i,t);return n},tryFreezeArray:function(n,t){if(n&&Object.freeze)for(var i=0;i=0;u--)n.splice(r[u],1);return r.length},mapArray:function(n,t){for(var r,u=[],i=0;i0&&(u.splice(0,0,n),n=t.formatString.apply(null,u)),o=new Error(n),e)for(s in e)o[s]=e[s];return a.error.notify(o),o},setForeignKeys:function(n,t,i){for(var u,f,e,o,r=0;r")return i.aliases.push(n.left.name),it=t.jsepToODataQuery(n.right,i),i.aliases.pop(),it;if(k=u.langOperators.find(n.operator).oData,!k)throw t.createError(r.operatorNotSupportedForOData,[n.operator],{expression:n});return"("+t.jsepToODataQuery(n.left,i)+" "+k+" "+t.jsepToODataQuery(n.right,i)+")"}if(n.type=="UnaryExpression")return n.operator+t.jsepToODataQuery(n.argument,i);if(n.type=="Identifier"){if(l=n.name,l[0]=="@"){if(a=undefined,v=l.slice(1),i.expVarContext&&i.expVarContext[v]!==undefined?a=i.expVarContext[v]:i.varContext&&(a=i.varContext[v]),a===undefined)throw t.createError(r.unknownParameter,[l],{expression:n,queryContext:i});return e.dataTypes.toODataValue(a)}return l}if(n.type=="Literal")return e.dataTypes.toODataValue(n.value);if(n.type=="MemberExpression")return n.object.name&&n.object.name!=i.currentAlias&&t.findInArray(i.aliases,n.object.name)?n.property.name:t.jsepToODataQuery(n.object,i)+"/"+n.property.name;if(n.type=="Compound"){for(f=[],h=0;h"&&(c=s[0].left.name,s=[s[0].right]),c&&(i.currentAlias=c,i.aliases.push(c)),p=0;p"?(i.aliases.push(n.left.name),tt=t.jsepToBeetleQuery(n.right,i),i.aliases.pop(),tt):(it=u.langOperators.find(n.operator).code,"("+t.jsepToBeetleQuery(n.left,i)+" "+it+" "+t.jsepToBeetleQuery(n.right,i)+")");if(n.type=="UnaryExpression")return n.operator+t.jsepToBeetleQuery(n.argument,i);if(n.type=="Identifier"){if(c=n.name,c[0]=="@"){if(l=undefined,v=c.slice(1),i.expVarContext&&i.expVarContext[v]!==undefined?l=i.expVarContext[v]:i.varContext&&(l=i.varContext[v]),l===undefined)throw t.createError(r.unknownParameter,[c],{expression:n,queryContext:i});return e.dataTypes.toBeetleValue(l)}return c}if(n.type=="Literal")return e.dataTypes.toBeetleValue(n.value);if(n.type=="MemberExpression")return n.object.name&&t.findInArray(i.aliases,n.object.name)?n.property.name:t.jsepToBeetleQuery(n.object,i)+"."+n.property.name;if(n.type=="Compound"){for(f=[],h=0;h"&&(a=s[0].left.name,s=[s[0].right]),a&&(i.currentAlias=a,i.aliases.push(a)),y=0;y")return i.currentAlias&&i.aliases.push(i.currentAlias),i.currentAlias={alias:n.left.name},nt=t.jsepToFunction(n.right,i)(f),i.currentAlias=i.aliases.pop(),nt;var ut=u.langOperators.find(n.operator),tt=i.varContext,ft=function(){return t.jsepToFunction(n.left,i)(f)},et=function(){return t.jsepToFunction(n.right,i)(f)};return ut.asFunc.call(tt,ft,et)}if(n.type=="UnaryExpression")return it=function(){return t.jsepToFunction(n.argument,i)(f)},rt=u.langOperators.find(n.operator),rt.asFunc.call(tt,it);if(n.type=="Identifier"){if(e=n.name,e=="null")return null;if(e=="true")return!0;if(e=="false")return!1;if(e[0]=="@"){if(v=undefined,y=e.slice(1),i.expVarContext&&i.expVarContext[y]!==undefined?v=i.expVarContext[y]:i.varContext&&(v=i.varContext[y]),v===undefined)throw t.createError(r.unknownParameter,[e],{expression:n,queryContext:i});return v}return i.currentAlias&&i.currentAlias.alias==e?f:(w=t.findInArray(i.aliases,e,"alias"),w)?w.value:(b=t.getValue(f,e),b===undefined)?window[e]:b}if(n.type=="Literal")return n.value;if(n.type=="MemberExpression"){if(n.object.name){if(i.currentAlias&&n.object.name==i.currentAlias.alias)return t.getValue(f,n.property.name);if(k=t.findInArray(i.aliases,n.object.name,"alias"),k)return t.getValue(k.value,n.property.name)}return t.getValue(t.jsepToFunction(n.object,i)(f),n.property.name)}if(n.type=="CallExpression"){var s=n.arguments,h=[],p=null;if(s.length==1&&s[0]&&s[0].type=="BinaryExpression"&&s[0].operator=="=>"&&(p=s[0].left.name,s=[s[0].right]),p&&(i.currentAlias&&i.aliases.push(i.currentAlias),i.currentAlias={alias:p}),t.forEach(s,function(n){n!=null&&h.push(t.jsepToFunction(n,i))}),l=n.callee.type=="MemberExpression"?n.callee.property.name:n.callee.name,c=o.queryFuncs.getFunc(l,!1),c)n.callee.type=="MemberExpression"&&h.splice(0,0,t.jsepToFunction(n.callee.object,i)),h.splice(0,0,f),d=c.impl.apply(i,h);else{if(l[0]=="@")if(a=l.slice(1),i.expVarContext&&i.expVarContext[a])c=i.expVarContext[a];else if(i.varContext&&i.varContext[a])c=i.varContext[a];else throw t.createError(r.unknownParameter,[a],{expression:n,queryContext:i});else if(g=n.callee.type=="MemberExpression"?t.jsepToFunction(n.callee.object,i)(f):window,g==null||(c=g[l])==null)throw t.createError(r.unknownFunction,[l]);h=t.mapArray(h,function(){return this(f)});d=c.apply(i,h)}return p&&(i.currentAlias=i.aliases.pop()),d}throw t.createError(r.unknownExpression,{expression:n});}},jsepToProjector:function(n,i){var h=[],u,e,o,s;for(f.isArray(n)||(n=[n]),u=0;uu+2&&n[u+1].name&&n[u+1].name.toLowerCase()=="as"){if(u=u+2,s=n[u],s.type!="Identifier")throw t.createError(r.invalidPropertyAlias,{expressions:n,aliasExpression:s});e=s.name}if(n.length>1&&!e)throw t.createError(r.projectionsMustHaveAlias,{expressions:n,expression:o});h.push({p:e,func:t.jsepToFunction(o,i)})}return function(t){for(var r,u,f={},i=0;i0)throw t.createError(this.errors.join("\n"),{name:this.name,value:this.value});},n.hasValue=function(n,i,u){return n==null?(i&&i.push(t.formatString(r.valueCannotBeNull,u)),!1):!0},n.isObject=function(n,i,u){return e.dataTypes.object.isValid(n)?!0:(i&&i.push(t.formatString(r.typeError,u,"object")),!1)},n.isFunction=function(n,i,u){return e.dataTypes.function.isValid(n)?!0:(i&&i.push(t.formatString(r.typeError,u,"function")),!1)},n.isNotEmptyString=function(i,u,f){return!n.isTypeOf(i,"string",u)||i===""?(u&&u.push(t.formatString(r.cannotBeEmptyString,f)),!1):!0},n.isTypeOf=function(i,u,f,o){if(!n.hasValue(i))return!1;var s=e.dataTypes.byName(u);return s.isValid(i)?!0:(f&&f.push(t.formatString(r.typeMismatch,o,u,s,i)),!1)},n.isArray=function(n,i,u){return e.dataTypes.array.isValid(n)?!0:(i&&i.push(t.formatString(r.typeError,u,"array")),!1)},n.isEnum=function(n,i,u){return i.contains(n)?!0:(u&&u.push(t.formatString(r.invalidEnumValue,i,n)),!1)},n.isInstanceOf=function(n,i,u,f){return n==null?(u&&u.push(r.cannotCheckInstanceOnNull),!1):(n instanceof i)?!0:(u&&u.push(t.formatString(r.instanceError,f,i)),!1)},n}(),h=function(){var i={};return i.enums=function(){function r(n,t){for(var i in t)n[i]=t[i];return n}function n(n,i){this.name=n;i&&r(this,i);t.tryFreeze(this)}n.prototype={};n.prototype.constructor=n;n.prototype.toString=function(){return this.name};t.tryFreeze(n.prototype);var i=function(i){var u=this,r;if(arguments.length===1&&i!==null&&typeof i=="object")for(r in i)u[r]=new n(r,i[r]);else t.forEach(arguments,function(t){u[t]=new n(t)});t.tryFreeze(this)};return i.prototype.symbols=function(){var t=[],i,n;for(i in this)(n=this[i],f.isFunction(n))||t.push(n);return t},i.prototype.contains=function(t){return(t instanceof n)?this[t.name]===t:!1},i}(),i.jsep=function(t){var a="Compound",k="Identifier",v="MemberExpression",h="Literal",d="ThisExpression",g="CallExpression",nt="UnaryExpression",tt="BinaryExpression",it="LogicalExpression",u=!0,f={"-":u,"!":u,"~":u,"+":u},r={"=>":0,"||":1,"&&":2,"|":3,"^":4,"&":5,"==":6,"!=":6,"===":6,"!==":6,"<":7,">":7,"<=":7,">=":7,"<<":8,">>":8,">>>":8,"+":9,"-":9,"*":10,"/":10,"%":10},s=function(n){var t=0,i;for(var r in n)(i=r.length)>t&&n.hasOwnProperty(r)&&(t=i);return t},c=s(f),e=s(r),y={"true":!0,"false":!1,"null":null},rt="this",p=function(n){return r[n]||0},w=function(n,t,i){var r=n==="||"||n==="&&"?it:tt;return{type:r,operator:n,left:t,right:i}},o=function(n){return n>=48&&n<=57},l=function(n){return n===36||n===95||n===64||n>=65&&n<=90||n>=97&&n<=122},ut=function(n){return n===36||n===95||n>=65&&n<=90||n>=97&&n<=122||n>=48&&n<=57},i=function(n){for(var t=0,ct=n.charAt,lt=n.charCodeAt,i=function(t){return ct.call(n,t)},u=function(t){return lt.call(n,t)},b=n.length,s=function(){for(var n=u(t);n===32||n===9;)n=u(++t)},ot=function(){s();for(var i=n.substr(t,e),u=i.length;u>0;){if(r.hasOwnProperty(i))return t+=u,i;i=i.substr(0,--u)}return!1},tt=function(){var r,i,o,n,s,f,e,u;if(f=it(),i=ot(),!i)return f;if(s={value:i,prec:p(i)},e=it(),!e)throw new Error("Expected expression after "+i+" at character "+t);for(n=[f,s,e];i=ot();){if(o=p(i),o===0)break;for(s={value:i,prec:o};n.length>2&&o<=n[n.length-2].prec;)e=n.pop(),i=n.pop().value,f=n.pop(),r=w(i,f,e),n.push(r);if(r=it(),!r)throw new Error("Expected expression after "+i+" at character "+t);n.push(s);n.push(r)}for(u=n.length-1,r=n[u];u>1;)r=w(n[u-1].value,n[u-2],r),u-=2;return r},it=function(){var i,r,e;if(s(),i=u(t),o(i)||i===46)return at();if(i===39||i===34)return vt();if(l(i))return pt();if(i===40)return wt();for(r=n.substr(t,c),e=r.length;e>0;){if(f.hasOwnProperty(r))return t+=e,{type:nt,operator:r,argument:it(),prefix:!0};r=r.substr(0,--e)}return!1},at=function(){for(var n="";o(u(t));)n+=i(t++);if(i(t)===".")for(n+=i(t++);o(u(t));)n+=i(t++);if(i(t)==="e"||i(t)==="E"){for(n+=i(t++),(i(t)==="+"||i(t)==="-")&&(n+=i(t++));o(u(t));)n+=i(t++);if(!o(u(t-1)))throw new Error("Expected exponent ("+n+i(t)+") at character "+t);}if(l(u(t)))throw new Error("Variable names cannot start with a number ("+n+i(t)+") at character "+t);return{type:h,value:parseFloat(n),raw:n}},vt=function(){for(var n="",u=i(t++),f=!1,r;t=0;t--)i=this.expressions[t],f.isInstanceOf(i,n)&&this.expressions.splice(t,1);return this},u}(),observableProviderBase:function(){var i=function(n){this.name=n||"observableProviderBase"},n=i.prototype;return n.toString=function(){return this.name},n.isObservable=function(){throw t.createError(r.notImplemented,[this.name,"isObservable"]);},n.toObservable=function(){throw t.createError(r.notImplemented,[this.name,"toObservable"]);},n.getValue=function(){throw t.createError(r.notImplemented,[this.name,"getValue"]);},n.setValue=function(){throw t.createError(r.notImplemented,[this.name,"setValue"]);},i}(),ajaxProviderBase:function(){var n=function(n){this.name=n||"ajaxProviderBase"},i=n.prototype;return i.toString=function(){return this.name},i.doAjax=function(){throw t.createError(r.notImplemented,[this.name,"doAjax"]);},n}(),serializationServiceBase:function(){var i=function(n){this.name=n||"serializationServiceBase"},n=i.prototype;return n.toString=function(){return this.name},n.serialize=function(){throw t.createError(r.notImplemented,[this.name,"serialize"]);},n.deserialize=function(){throw t.createError(r.notImplemented,[this.name,"deserialize"]);},i}(),promiseProviderBase:function(){var i=function(n){this.name=n||"promiseProviderBase"},n=i.prototype;return n.toString=function(){return this.name},n.deferred=function(){throw t.createError(r.notImplemented,[this.name,"deferred"]);},n.getPromise=function(){throw t.createError(r.notImplemented,[this.name,"getPromise"]);},n.resolve=function(){throw t.createError(r.notImplemented,[this.name,"resolve"]);},n.reject=function(){throw t.createError(r.notImplemented,[this.name,"reject"]);},i}(),dataServiceBase:function(){function a(n,e,o,s){var v,w;n==null?n="":n[n.length-1]!="/"&&(n+="/");s.uri=n;var h=null,a=null,y=null,p=null;if(o&&(h=o.ajaxProvider,a=o.serializationService,y=o.dataType,p=o.dataType),s.ajaxProvider=h&&f.isInstanceOf(h,i.ajaxProviderBase)?h:l.jQueryAjaxProviderInstance,s.serializationService=a&&f.isInstanceOf(a,i.SerializationService)?a:l.jsonSerializationServiceInstance,!(e===!0))if(e){if(f.isInstanceOf(e,c.metadataManager))s.metadataManager=e;else if(f.isObject(e))try{s.metadataManager=new c.metadataManager(e)}catch(b){throw t.createError(r.invalidArguments,{exception:b,args:arguments,dataService:this});}}else v=t.findInArray(u,n,"uri"),v?s.metadataManager=v.data:(w=s.fetchMetadata(),s.metadataManager=new c.metadataManager(w),u.push({uri:n,data:s.metadataManager}));s.dataType=y||"json";s.contentType=p||"application/json; charset=utf-8"}var u=[],h=function(n,t,i){a(n,t,i,this)},n=h.prototype;return n.toString=function(){return this.uri},n.getEntityType=function(n){return this.metadataManager?this.metadataManager.getEntityTypeByShortName(n):null},n.createQuery=function(n,i,r){return(t.assertPrm(n,"resourceName").isNotEmptyString().check(),i)?this.createEntityQuery(i,n,r):(this.metadataManager&&this.metadataManager.createQuery(n,null,r),new o.entityQuery(n,null,r))},n.createEntityQuery=function(n,i,u){if(t.assertPrm(n,"shortName").isNotEmptyString().check(),!this.metadataManager)throw t.createError(r.noMetadataEntityQuery,{dataService:this});return this.metadataManager.createQuery(i,n,u)},n.registerCtor=function(n,i,u){if(this.metadataManager==null)throw t.createError(r.noMetadataEntityQuery);this.metadataManager.registerCtor(n,i,u)},n.createEntity=function(n,i){if(!this.metadataManager)throw t.createError(r.noMetadataEntityQuery,{dataService:this});return this.metadataManager.createEntity(n,i)},n.createRawEntity=function(n,i){if(!this.metadataManager)throw t.createError(r.noMetadataEntityQuery,{dataService:this});return this.metadataManager.createRawEntity(n,i)},n.toEntity=function(n,t){var i=null;return this.metadataManager&&(i=this.metadataManager.getEntityType(t)),i||(i=new c.entityType(t)),e.entityTracker.toEntity(n,i,s.getObservableProvider())},n.toODataQueryParams=function(n,i){if(n.isMultiTyped===!0)throw t.createError(r.oDataNotSupportMultiTyped,{query:n});var u={varContext:i},f=[];return t.forEach(n.parameters,function(n){f.push({name:n.name,value:n.value==null?"":n.value})}),n.inlineCountEnabled===!0&&f.push({name:"$inlinecount",value:"allpages"}),t.forEach(n.expressions,function(n,t){u.expVarContext=n.varContext;var r,i;n.onlyBeetle===!0?(r="!e"+t,i=n.toBeetleQuery(u),i=n.name+":"+i):(r="$"+n.name,i=n.toODataQuery(u));f.push({name:r,value:i});u.expVarContext=undefined}),f},n.toBeetleQueryParams=function(n,i){var u={varContext:i},r=[];return t.forEach(n.parameters,function(n){r.push({name:n.name,value:n.value==null?"":n.value})}),n.inlineCountEnabled===!0&&r.push({name:"!e0",value:"inlinecount:allpages"}),t.forEach(n.expressions,function(n,t){u.expVarContext=n.varContext;r.push({name:"!e"+(t+1),value:n.name+":"+n.toBeetleQuery(u)});u.expVarContext=undefined}),r},n.fetchMetadata=function(){throw t.createError(r.notImplemented,["dataServiceBase","fetchMetadata"]);},n.createEntityAsync=function(){throw t.createError(r.notImplemented,["dataServiceBase","createEntityAsync"]);},n.executeQuery=function(){throw t.createError(r.notImplemented,["dataServiceBase","executeQuery"]);},n.executeQueryParams=function(){throw t.createError(r.notImplemented,["dataServiceBase","executeQueryParams"]);},n.saveChanges=function(){throw t.createError(r.notImplemented,["dataServiceBase","saveChanges"]);},h}()}}(),l=function(){return{defaultDateConverterInstance:function(){var n=function(){i.dateConverterBase.call(this,"Default Date Converter")},r;return t.inherit(n,i.dateConverterBase),r=n.prototype,r.parse=function(n){if(typeof n!="string"||n.length<10||!/^\d{4}[\/\-](0?[1-9]|1[012])[\/\-](0?[1-9]|[12][0-9]|3[01])$/.test(n.substr(0,10)))return null;/.\d{3}$/.test(n)&&(n+="Z");try{var t=Date.parse(n);return isNaN(t)?null:new Date(t)}catch(i){return null}},r.toISOString=function(n){return n.toISOString()},new n}(),koObservableProviderInstance:function(n){var u,r;return n&&(n.extenders.intercept=function(t,i){return n.computed({read:t,write:function(n){var r=i&&i.callback;r&&r(i.object,i.property,t,n)}})}),u=function(){i.observableProviderBase.call(this,"Knockout Observable Provider");t.tryFreeze(this)},t.inherit(u,i.observableProviderBase),r=u.prototype,r.isObservable=function(t,i){return n.isObservable(t[i])},r.toObservable=function(i,r,u){function s(t,r,u){var f=n.observable(r);return u?n.observable(r).extend({intercept:{object:i,property:t,callback:u}}):f}function c(t,r,u,f,o){var s;return u=u||[],f&&(u=new e.trackableArray(u,i,t,function(n,t,u,e,o){s.$fromKo!==!0&&i[r].valueHasMutated();s.$fromKo=!1;f(n,t,u,e,o)})),s=n.observableArray(u),s.subscribe(function(){s.$fromKo=!0},null,"beforeChange"),o&&(s.equalityComparer=function(n,r){o(i,t,n,r)}),s}var l=u&&u.propertyChange,a=u&&u.arrayChange,v=u&&u.dataPropertyChange,y=u&&u.scalarNavigationPropertyChange,p=u&&u.pluralNavigationPropertyChange,h=u&&u.arraySet,o=[];t.forEachProperty(i,function(n,t){o.push({p:n,v:t})});r&&r.hasMetadata&&(t.forEach(r.dataProperties,function(n){var r=i[n.name];r=r===undefined?null:n.handle(r);i[n.name]=s(n,r,v);t.removeFromArray(o,n.name,"p")}),t.forEach(r.navigationProperties,function(n){var r=i[n.name];r===undefined&&(r=null);i[n.name]=n.isScalar?s(n,r,y):c(n,n.name,r,p,h);t.removeFromArray(o,n.name,"p")}));t.forEach(o,function(n){var u=n.p,e=n.v;i[u]=f.isArray(e)?c(u,u,e,a,h):s(u,e,l);t.findInArray(r.properties,u)||r.properties.push(u)})},r.getValue=function(t,i){return n.utils.unwrapObservable(t[i])},r.setValue=function(n,t,i){n[t](i)},new u}(n.ko),propertyObservableProviderInstance:function(){var r=function(){i.observableProviderBase.call(this,"Property Observable Provider");t.tryFreeze(this)},n;return t.inherit(r,i.observableProviderBase),n=r.prototype,n.isObservable=function(n,t){return n.$fields!==undefined&&n.$fields[t]!==undefined},n.toObservable=function(n,i,r){function s(t,i,r){return Object.defineProperty(n,i,{get:function(){return n.$fields[i]},set:function(u){if(r){var f=w(n,i);r(n,t,f,u)}else n.$fields[i]=u},enumerable:!0,configurable:!0})}function c(t,i,r,f,o){return r=r||[],f&&(r=new e.trackableArray(r,n,t,f)),u[i]=r,Object.defineProperty(n,i,{get:function(){return n.$fields[i]},set:function(r){o?o(n,t,items,r):n.$fields[i]=r}})}function w(n,t){return function(){return arguments.length==0?n.$fields[t]:n.$fields[t]=arguments[0]}}var l=r&&r.propertyChange,a=r&&r.arrayChange,v=r&&r.dataPropertyChange,y=r&&r.scalarNavigationPropertyChange,p=r&&r.pluralNavigationPropertyChange,h=r&&r.arraySet,u={},o=[];return t.forEachProperty(n,function(n,t){o.push({p:n,v:t})}),i&&i.hasMetadata&&(t.forEach(i.dataProperties,function(i){var r=n[i.name];r=r===undefined?null:i.handle(r);delete n[i.name];s(i,i.name,v);t.removeFromArray(o,i.name,"p");u[i.name]=r}),t.forEach(i.navigationProperties,function(i){var r=n[i.name];r===undefined&&(r=null);delete n[i.name];i.isScalar?(s(i,i.name,y),u[i.name]=r):c(i,i.name,r,p,h);t.removeFromArray(o,i.name,"p")})),t.forEach(o,function(r){var e=r.p,o=r.v;delete n[e];f.isArray(o)?c(e,e,o,a,h):(s(e,e,l),u[e]=o);t.findInArray(i.properties,e)||i.properties.push(e)}),n.$fields=u,n},n.getValue=function(n,t){return n[t]},n.setValue=function(n,t,i){n[t]=i},new r}(),backboneObservableProviderInstance:function(){var r=function(){i.observableProviderBase.call("Backbone Observable Provider");t.tryFreeze(this)},n;return t.inherit(r,i.observableProviderBase),n=r.prototype,n.isObservable=function(n,t){return n.$fields!==undefined&&n.$fields[t]!==undefined},n.toObservable=function(n,i,r){function s(t,i,r){return Object.defineProperty(n,i,{get:function(){return n.$fields[i]},set:function(u){if(r){var f=w(n,i);r(n,t,f,u)}else n.$fields[i]=u},enumerable:!0,configurable:!0})}function c(t,i,r,f,o){return r=r||[],f&&(r=new e.trackableArray(r,n,t,f)),u[i]=r,Object.defineProperty(n,i,{get:function(){return n.$fields[i]},set:function(r){o?o(n,t,items,r):n.$fields[i]=r}})}function w(n,t){return function(){return arguments.length==0?n.$fields[t]:n.$fields[t]=arguments[0]}}var l=r&&r.propertyChange,a=r&&r.arrayChange,v=r&&r.dataPropertyChange,y=r&&r.scalarNavigationPropertyChange,p=r&&r.pluralNavigationPropertyChange,h=r&&r.arraySet,u={},o=[];return t.forEachProperty(n,function(n,t){o.push({p:n,v:t})}),i&&i.hasMetadata&&(t.forEach(i.dataProperties,function(i){var r=n[i.name];r=r===undefined?null:i.handle(r);delete n[i.name];s(i,i.name,v);t.removeFromArray(o,i.name,"p");u[i.name]=r}),t.forEach(i.navigationProperties,function(i){var r=n[i.name];r===undefined&&(r=null);delete n[i.name];i.isScalar?(s(i,i.name,y),u[i.name]=r):c(i,i.name,r,p,h);t.removeFromArray(o,i.name,"p")})),t.forEach(o,function(r){var e=r.p,o=r.v;delete n[e];f.isArray(o)?c(e,e,o,a,h):(s(e,e,l),u[e]=o);t.findInArray(i.properties,e)||i.properties.push(e)}),n.$fields=u,n},n.getValue=function(n,t){return n[t]},n.setValue=function(n,t,i){n[t]=i},new r}(),jQueryAjaxProviderInstance:function(n){function f(n){var i={status:n.status};if(n.responseText)try{i.detail=JSON.parse(n.responseText)}catch(r){}return t.createError(n.statusText,i)}var r=function(){i.ajaxProviderBase.call(this,"jQuery Ajax Provider");t.tryFreeze(this)},u;return t.inherit(r,i.ajaxProviderBase),u=r.prototype,u.doAjax=function(t,i,r,u,e,o,s,h,c,l){var a={url:t,accepts:{json:"application/json; odata=verbose",xml:"text/xml; application/xhtml+xml;application/xml",text:"text/xml"},type:i,dataType:r,contentType:u,traditional:!1,data:e,cache:!1,async:o,timeout:s,success:function(n,t,i){if(i.onreadystatechange=null,i.abort=null,n&&n.Error){var r=f(i);r.message=n.Error;l(r)}else c(n,i)},error:function(n){n.onreadystatechange=null;n.abort=null;l(f(n))}};return h!=null&&n.extend(a,h),n.ajax(a)},new r}(n.$),jsonSerializationServiceInstance:function(){var n=function(){i.serializationServiceBase.call(this,"Json Serializer");t.tryFreeze(this)},r;return t.inherit(n,i.serializationServiceBase),r=n.prototype,r.serialize=function(n){return JSON.stringify(n)},r.deserialize=function(n){return f.isTypeOf(n,"string")?JSON.parse(n):n},new n}(),qPromiseProviderInstance:function(n){var u=function(){i.promiseProviderBase.call(this,"Q Promise Provider");t.tryFreeze(this)},r;return t.inherit(u,i.promiseProviderBase),r=u.prototype,r.toString=function(){return this.name},r.deferred=function(){return n.defer()},r.getPromise=function(n){return n.promise},r.resolve=function(n,t){n.resolve(t)},r.reject=function(n,t){n.reject(t)},new u}(n.Q),jQueryPromiseProviderInstance:function(n){var u=function(){i.promiseProviderBase.call(this,"jQuery Promise Provider");t.tryFreeze(this)},r;return t.inherit(u,i.promiseProviderBase),r=u.prototype,r.toString=function(){return this.name},r.deferred=function(){return n.Deferred()},r.getPromise=function(n){return n.promise()},r.resolve=function(n,t){n.resolve(t)},r.reject=function(n,t){n.reject(t)},new u}(n.$)}}(),c=function(){return{dataProperty:function(){var i=function(n,t,i,r,u,f,o,s,h){this.owner=n;this.name=t;this.displayName=i||t;this.dataType=r;this.isNullable=u;this.isKeyPart=f;this.generationPattern=o;this.defaultValue=s;this.useForConcurrency=h;this.relatedNavigationProperties=[];this.validators=[];this.isEnum=r instanceof e.dataTypes.enum;this.isComplex=r.isComplex},n=i.prototype;return n.toString=function(){return this.displayName},n.isValid=function(n){return n==null?!this.isNullable:this.dataType.isValid(n,this)},n.handle=function(n){if(n==null){if(!this.isNullable)throw t.createError(r.notNullable,[this.displayName],{property:this});return null}if(n=this.dataType.handle(n,this),this.dataType==e.dataTypes.number&&this.precision&&n.toString().replace(/\./g,"").length>this.precision)throw t.createError(r.maxPrecisionError,[n,this.precision],{dataType:dataType,value:n});return this.dataType==e.dataTypes.number&&this.scale!=null&&(n=Number(n.toFixed(this.scale))),n},n.getDefaultValue=function(){return this.defaultValue?this.defaultValue:this.isNullable?null:this.generationPattern==u.generationPattern.Identity&&this.isKeyPart===!0?this.dataType.autoValue():this.dataType.defaultValue()},n.addValidation=function(n,i,r,u){t.assertPrm(n,"name").isNotEmptyString().check();t.assertPrm(i,"func").isFunction().check();this.validators.push(new e.validator(n,i,r,u))},n.validate=function(n){var u=[],i,r;return this.validators.length>0&&(i=this,r=t.getValue(n,i.name),t.forEach(this.validators,function(f){var e=f.validate(r,n);e&&u.push(t.createValidationError(n,r,i,e,f))})),u},i}(),navigationProperty:function(){var i=function(n,t,i,r,u,f,e,o){this.owner=n;this.name=t;this.displayName=i||t;this.entityTypeName=r;this.entityType=null;this.isScalar=u;this.isComplex=f===undefined;this.associationName=f;this.cascadeDelete=e===!0;this.foreignKeyNames=o||[];this.inverse=null;this.foreignKeys=[];this.validators=[];this.triggerOwnerModify=!1},n=i.prototype;return n.toString=function(){return this.displayName},n.checkAssign=function(n){if(n!=null){if(!n.$tracker)throw t.createError(r.assignErrorNotEntity,[this],{property:this,value:n});var i=n.$tracker.entityType;if(!this.entityType.isAssignableWith(i))throw t.createError(r.assignError,[this.name,i.shortName],{property:this,value:n});}},n.addValidation=function(n,i,r,u){t.assertPrm(n,"name").isNotEmptyString().check();t.assertPrm(i,"func").isFunction().check();this.validators.push(new e.validator(n,i,r,u))},n.validate=function(n){var u=[],i,r;return this.validators.length>0&&(i=this,r=t.getValue(n,i.name),t.forEach(this.validators,function(f){var e=f.validate(r);e&&u.push(t.createValidationError(n,r,i,e,f))})),u},i}(),entityType:function(){function u(n,t){n.baseType&&u(n.baseType,t);n.constructor&&n.constructor.call(t,t)}function a(n,i){for(var u,f,e,o=n.length,r=0;r0&&t.forEach(this.validators,function(r){var u=r.validate(n);u&&i.push(t.createValidationError(n,null,null,u,r))}),t.forEach(this.dataProperties,function(t){var r=t.validate(n);r&&(i=i.concat(r))}),t.forEach(this.navigationProperties,function(t){var r=t.validate(n);r&&(i=i.concat(r))}),i},i}(),metadataManager:function(){var i=function(n){this.types=[];this.enums={};this.name=null;this.displayName=null;n&&this.parseBeetleMetadata(n)},n=i.prototype;return n.toString=function(){return this.types.join(", ")},n.getEntityType=function(n,i){var u=t.findInArray(this.types,n,"name");if(!u&&i===!0)throw t.createError(r.notFoundInMetadata,[n],{metadataManager:this,typeName:n});return u},n.getEntityTypeByShortName=function(n,i){var u=t.findInArray(this.types,n,"shortName");if(!u&&i===!0)throw t.createError(r.notFoundInMetadata,[n],{metadataManager:this,typeShortName:n});return u},n.createQuery=function(n,i,r){if(i)return this.getEntityTypeByShortName(i,!0).createQuery(n,r);var u=t.filterArray(this.types,function(t){return t.setName==n});return u.length==1?u[0].createQuery(n,r):new o.entityQuery(n,null,r)},n.registerCtor=function(n,t,i){var r=this.getEntityTypeByShortName(n,!0);r.registerCtor(t,i)},n.createEntity=function(n,t){var i=this.getEntityTypeByShortName(n,!0);return i?i.createEntity(t):null},n.createRawEntity=function(n,t){var i=this.getEntityTypeByShortName(n,!0);return i?i.createRawEntity(t):null},n.parseBeetleMetadata=function(n){var o,a,s,r,v,y,p,w,l,i,f,b,k;if(this.types=[],this.enums={},this.name=n.n,this.displayName=t.getResourceValue(n.r,n.l||n.n),o=n.e,a={},o)for(s=0;s0&&a(n,t,r);i.currentGroup?i.currentGroup.filterItems.push(r):i.groups.push(r);i.currentGroup=r;i.openGroups.push(r)}function a(n,i,o){var h,p,v,a,y,c,w;if(n.length==3||n.length==4){if(h=n[1],f.isTypeOf(h,"string"))for(h=h.toLowerCase(),p=u.filterOps.symbols(),v=0;vs?i?-1:1:i?1:-1}}(c,s),o.push(l);return e=[],e.push.apply(e,n),e.sort(function(n,t){for(var r,i=0;i0},n}(),avgExp:function(){var n=function(n){i.expressionBase.call(this,"exec;avg",3,!0,!0);this.expStr=n;n&&(this.exp=h.jsep(n));this.isExecuter=!0},r;return t.inherit(n,i.expressionBase),r=n.prototype,r.toBeetleQuery=function(n){return this.exp?t.jsepToBeetleQuery(this.exp,n):""},r.clone=function(){return new n(this.expStr)},r.execute=function(t,i){return n.execute(t,this.exp,i)},n.execute=function(n,i,r){var u=i?t.jsepToFunction(i,r):function(n){return n};return o.queryFuncs.avg.impl(n,function(){return n},u)},n}(),maxExp:function(){var n=function(n){i.expressionBase.call(this,"exec;max",3,!0,!0);this.expStr=n;n&&(this.exp=h.jsep(n));this.isExecuter=!0},r;return t.inherit(n,i.expressionBase),r=n.prototype,r.toBeetleQuery=function(n){return this.exp?t.jsepToBeetleQuery(this.exp,n):""},r.clone=function(){return new n(this.expStr)},r.execute=function(t,i){return n.execute(t,this.exp,i)},n.execute=function(n,i,r){var u=i?t.jsepToFunction(i,r):function(n){return n};return o.queryFuncs.max.impl(n,function(){return n},u)},n}(),minExp:function(){var n=function(n){i.expressionBase.call(this,"exec;min",3,!0,!0);this.expStr=n;n&&(this.exp=h.jsep(n));this.isExecuter=!0},r;return t.inherit(n,i.expressionBase),r=n.prototype,r.toBeetleQuery=function(n){return this.exp?t.jsepToBeetleQuery(this.exp,n):""},r.clone=function(){return new n(this.expStr)},r.execute=function(t,i){return n.execute(t,this.exp,i)},n.execute=function(n,i,r){var u=i?t.jsepToFunction(i,r):function(n){return n};return o.queryFuncs.min.impl(n,function(){return n},u)},n}(),sumExp:function(){var n=function(n){i.expressionBase.call(this,"exec;sum",3,!0,!0);this.expStr=n;n&&(this.exp=h.jsep(n));this.isExecuter=!0},r;return t.inherit(n,i.expressionBase),r=n.prototype,r.toBeetleQuery=function(n){return this.exp?t.jsepToBeetleQuery(this.exp,n):""},r.clone=function(){return new n(this.expStr)},r.execute=function(t,i){return n.execute(t,this.exp,i)},n.execute=function(n,i,r){var u=i?t.jsepToFunction(i,r):function(n){return n};return o.queryFuncs.sum.impl(n,function(){return n},u)},n}(),countExp:function(){var n=function(n,t){i.expressionBase.call(this,"exec;count",3,!0,!0);this.expStr=n;n&&(this.exp=h.jsep(n));this.varContext=t;this.isExecuter=!0},r;return t.inherit(n,i.expressionBase),r=n.prototype,r.toBeetleQuery=function(n){return this.exp?t.jsepToBeetleQuery(this.exp,n):""},r.clone=function(){return new n(this.expStr,this.varContext)},r.execute=function(t,i){return n.execute(t,this.exp,i)},n.execute=function(n,i,r){return i&&(n=t.filterArray(n,t.jsepToFunction(i,r))),n.length},n}(),firstExp:function(){var n=function(n,t){i.expressionBase.call(this,"exec;first",3,!0,!1);this.expStr=n;n&&(this.exp=h.jsep(n));this.varContext=t;this.isExecuter=!0},u;return t.inherit(n,i.expressionBase),u=n.prototype,u.toBeetleQuery=function(n){return this.exp?t.jsepToBeetleQuery(this.exp,n):""},u.clone=function(){return new n(this.expStr,this.varContext)},u.execute=function(t,i){return n.execute(t,this.exp,i)},n.execute=function(n,i,u){if(i&&(n=t.filterArray(n,t.jsepToFunction(i,u))),n.length==0)throw t.createError(r.arrayEmpty,{array:n,expression:this});return n[0]},n}(),firstOrDefaultExp:function(){var n=function(n,t){i.expressionBase.call(this,"exec;firstOD",3,!0,!1);this.expStr=n;n&&(this.exp=h.jsep(n));this.varContext=t;this.isExecuter=!0},r;return t.inherit(n,i.expressionBase),r=n.prototype,r.toBeetleQuery=function(n){return this.exp?t.jsepToBeetleQuery(this.exp,n):""},r.clone=function(){return new n(this.expStr,this.varContext)},r.execute=function(t,i){return n.execute(t,this.exp,i)},n.execute=function(n,i,r){return i&&(n=t.filterArray(n,t.jsepToFunction(i,r))),n.length==0?null:n[0]},n}(),singleExp:function(){var n=function(n,t){i.expressionBase.call(this,"exec;single",3,!0,!1);this.expStr=n;n&&(this.exp=h.jsep(n));this.varContext=t;this.isExecuter=!0},u;return t.inherit(n,i.expressionBase),u=n.prototype,u.toBeetleQuery=function(n){return this.exp?t.jsepToBeetleQuery(this.exp,n):""},u.clone=function(){return new n(this.expStr,this.varContext)},u.execute=function(t,i){return n.execute(t,this.exp,i)},n.execute=function(n,i,u){if(i&&(n=t.filterArray(n,t.jsepToFunction(i,u))),n.length!=1)throw t.createError(r.arrayNotSingle,{array:n,expression:this});return n[0]},n}(),singleOrDefaultExp:function(){var n=function(n,t){i.expressionBase.call(this,"exec;singleOD",3,!0,!1);this.expStr=n;n&&(this.exp=h.jsep(n));this.varContext=t;this.isExecuter=!0},u;return t.inherit(n,i.expressionBase),u=n.prototype,u.toBeetleQuery=function(n){return this.exp?t.jsepToBeetleQuery(this.exp,n):""},u.clone=function(){return new n(this.expStr,this.varContext)},u.execute=function(t,i){return n.execute(t,this.exp,i)},n.execute=function(n,i,u){if(i&&(n=t.filterArray(n,t.jsepToFunction(i,u))),n.length>1)throw t.createError(r.arrayNotSingleOrEmpty,{array:n,expression:this});return n.length==0?null:n[0]},n}(),lastExp:function(){var n=function(n,t){i.expressionBase.call(this,"exec;last",3,!0,!1);this.expStr=n;n&&(this.exp=h.jsep(n));this.varContext=t;this.isExecuter=!0},u;return t.inherit(n,i.expressionBase),u=n.prototype,u.toBeetleQuery=function(n){return this.exp?t.jsepToBeetleQuery(this.exp,n):""},u.clone=function(){return new n(this.expStr,this.varContext)},u.execute=function(t,i){return n.execute(t,this.exp,i)},n.execute=function(n,i,u){if(i&&(n=t.filterArray(n,t.jsepToFunction(i,u))),n.length==0)throw t.createError(r.arrayEmpty,{array:n,expression:this});return n[n.length-1]},n}(),lastOrDefaultExp:function(){var n=function(n,t){i.expressionBase.call(this,"exec;lastOD",3,!0,!1);this.expStr=n;n&&(this.exp=h.jsep(n));this.varContext=t;this.isExecuter=!0},r;return t.inherit(n,i.expressionBase),r=n.prototype,r.toBeetleQuery=function(n){return this.exp?t.jsepToBeetleQuery(this.exp,n):""},r.clone=function(){return new n(this.expStr,this.varContext)},r.execute=function(t,i){return n.execute(t,this.exp,i)},n.execute=function(n,i,r){return i&&(n=t.filterArray(n,t.jsepToFunction(i,r))),n.length==0?null:n[n.length-1]},n}()}}(),queryFuncs:function(){var n={};return n.toupper=function(){var n=function(){i.queryFuncBase.call(this,"toupper","ToUpper",1)},r;return t.inherit(n,i.queryFuncBase),r=n.prototype,r.impl=function(n,t){return(t?t(n):n).toUpperCase()},new n}(),n.tolower=function(){var n=function(){i.queryFuncBase.call(this,"tolower","ToLower",1)},r;return t.inherit(n,i.queryFuncBase),r=n.prototype,r.impl=function(n,t){return(t?t(n):n).toLowerCase()},new n}(),n.substring=function(){var n=function(){i.queryFuncBase.call(this,"substring","Substring",3)},r;return t.inherit(n,i.queryFuncBase),r=n.prototype,r.impl=function(n,t,i,r){arguments.length==3?(r=i,i=t,t=n):t=t(n);i=i(n);r=r(n);var u=Number(i)+Number(r);return t&&t.substring(i,u)},new n}(),n.substringof=function(){var n=function(){i.queryFuncBase.call(this,"substringof","Contains",2)},r;return t.inherit(n,i.queryFuncBase),r=n.prototype,r.toBeetleFunction=function(n,t){return t=t?t+".":"",t+"Contains("+n+")"},r.impl=function(n,t,i){return i=i?i(n):n,i&&i.indexOf(t(n))>=0},new n}(),n.length=function(){var n=function(){i.queryFuncBase.call(this,"length","Length",1)},r;return t.inherit(n,i.queryFuncBase),r=n.prototype,r.toBeetleFunction=function(n){return n=n?n+".":"",n+"Length"},r.impl=function(n,t){return(t?t(n):n).length},new n}(),n.trim=function(){var n=function(){i.queryFuncBase.call(this,"trim","Trim",1)},r;return t.inherit(n,i.queryFuncBase),r=n.prototype,r.impl=function(n,t){return(t?t(n):n).trim()},new n}(),n.concat=function(){var n=function(){i.queryFuncBase.call(this,"concat","Concat",null)},r;return t.inherit(n,i.queryFuncBase),r=n.prototype,r.toBeetleFunction=function(){return"string.Concat("+Array.prototype.slice.call(arguments).join(", ")+")"},r.impl=function(n){for(var i=arguments[1](n).toString(),r=Array.prototype.slice.call(arguments,2),u=[],t=0;t0},new u}(),n.round=function(){var n=function(){i.queryFuncBase.call(this,"round","Math.Round",1)},r;return t.inherit(n,i.queryFuncBase),r=n.prototype,r.toBeetleFunction=function(n){return"Math.Round("+n+")"},r.impl=function(n,t){return Math.round(t?t(n):n)},new n}(),n.ceiling=function(){var n=function(){i.queryFuncBase.call(this,"ceiling","Math.Ceiling(%1)",1)},r;return t.inherit(n,i.queryFuncBase),r=n.prototype,r.toBeetleFunction=function(n){return"Math.Ceiling("+n+")"},r.impl=function(n,t){return Math.ceil(t?t(n):n)},new n}(),n.floor=function(){var n=function(){i.queryFuncBase.call(this,"floor","Math.Floor",1)},r;return t.inherit(n,i.queryFuncBase),r=n.prototype,r.toBeetleFunction=function(n){return"Math.Floor("+n+")"},r.impl=function(n,t){return Math.floor(t?t(n):n)},new n}(),n.second=function(){var n=function(){i.queryFuncBase.call(this,"second","Second",1)},r;return t.inherit(n,i.queryFuncBase),r=n.prototype,r.toBeetleFunction=function(n){return n=n?n+".":"",n+"Second"},r.impl=function(n,t){return t=e.dataTypes.date.handle(t?t(n):n),t.getSeconds()},new n}(),n.minute=function(){var n=function(){i.queryFuncBase.call(this,"minute","Minute",1)},r;return t.inherit(n,i.queryFuncBase),r=n.prototype,r.toBeetleFunction=function(n){return n=n?n+".":"",n+"Minute"},r.impl=function(n,t){return t=e.dataTypes.date.handle(t?t(n):n),t.getMinutes()},new n}(),n.hour=function(){var n=function(){i.queryFuncBase.call(this,"hour","Hour",1)},r;return t.inherit(n,i.queryFuncBase),r=n.prototype,r.toBeetleFunction=function(n){return n=n?n+".":"",n+"Hour"},r.impl=function(n,t){return t=e.dataTypes.date.handle(t?t(n):n),t.getHours()},new n}(),n.day=function(){var n=function(){i.queryFuncBase.call(this,"day","Day",1)},r;return t.inherit(n,i.queryFuncBase),r=n.prototype,r.toBeetleFunction=function(n){return n=n?n+".":"",n+"Day"},r.impl=function(n,t){return t=e.dataTypes.date.handle(t?t(n):n),t.getDate()},new n}(),n.month=function(){var n=function(){i.queryFuncBase.call(this,"month","Month",1)},r;return t.inherit(n,i.queryFuncBase),r=n.prototype,r.toBeetleFunction=function(n){return n=n?n+".":"",n+"Month"},r.impl=function(n,t){return t=e.dataTypes.date.handle(t?t(n):n),t.getMonth()+1},new n}(),n.year=function(){var n=function(){i.queryFuncBase.call(this,"year","Year",1)},r;return t.inherit(n,i.queryFuncBase),r=n.prototype,r.toBeetleFunction=function(n){return n=n?n+".":"",n+"Year"},r.impl=function(n,t){return t=e.dataTypes.date.handle(t?t(n):n),t.getFullYear()},new n}(),n.max=function(){var n=function(){i.queryFuncBase.call(this,"max","Max",2)},u;return t.inherit(n,i.queryFuncBase),u=n.prototype,u.toODataFunction=function(){throw t.createError(r.functionNotSupportedForOData,["Max"]);},u.impl=function(n,t,i){var u,r,f;if(arguments.length==1?t=n:arguments.length==2?(i=t,t=n):t=t(n),t.length==0)return null;for(u=i?i(t[0]):t[0],r=1;ru&&(u=f);return u},new n}(),n.min=function(){var n=function(){i.queryFuncBase.call(this,"min","Min",2)},u;return t.inherit(n,i.queryFuncBase),u=n.prototype,u.toODataFunction=function(){throw t.createError(r.functionNotSupportedForOData,["Min"]);},u.impl=function(n,t,i){var u,r,f;if(arguments.length==1?t=n:arguments.length==2?(i=t,t=n):t=t(n),t.length==0)return null;for(u=i?i(t[0]):t[0],r=1;r0;for(r=0;r2&&(i=Array.prototype.slice.call(arguments).slice(2)),u=this.slice(n,n+t),this.changing.notify({added:i,removed:u}),i&&r(i,this),f=Array.prototype.splice.apply(this,arguments),this.after(this.object,this.property,this,u,i),this.changed.notify({added:i,removed:u}),f},n.remove=function(){var n=[],i=this;return this.changing.notify({added:[],removed:arguments}),t.forEach(arguments,function(r){var u=t.indexOf(i,r);u>=0&&(Array.prototype.splice.call(i,u,1),n.push(r))}),this.after(this.object,this.property,this,n,null),this.changed.notify({added:[],removed:arguments}),n},n.load=function(n,t,i,r,u){return this.entity.$tracker.loadNavigationProperty(this.propertyName,n,t,i,r,u)},i}(),event:function(){var i=function(n,t){this.name=n;this.subscribers=[];this.publisher=t},n=i.prototype;return n.toString=function(){return this.name},n.subscribe=function(n){t.findInArray(this.subscribers,n)||this.subscribers.push(n)},n.unsubscribe=function(n){t.removeFromArray(this.subscribers,n)},n.notify=function(){var n=arguments;t.forEach(this.subscribers,function(t){t.apply(t,n)})},i}(),dataTypes:function(){function u(n,i){throw t.createError(r.assignError,[n.name,i],{dataType:n,value:i});}var e=function(){var r=function(n){i.dataTypeBase.call(this,"dateBase");this.name=n},n;return t.inherit(r,i.dataTypeBase),n=r.prototype,n.defaultValue=function(){return new Date(-6847812e6)},n.isValid=function(n){return Object.prototype.toString.call(n)==="[object Date]"},n.handle=function(n){if(!this.isValid(n)){var t=n;n=this.tryParse(t);n||u(this,t)}return n},n.autoValue=function(){return new Date},n.getRawValue=function(n){return n==null?null:s.getDateConverter().toISOString(n)},n.tryParse=function(n){return s.getDateConverter().parse(n)},n.toODataValue=function(n){return n=this.handle(n),"datetime'"+s.getDateConverter().toISOString(n)+"'"},n.toBeetleValue=function(n){return n=this.handle(n),'"'+s.getDateConverter().toISOString(n)+'"'},r}(),n={};return n.object=function(){var n=function(){i.dataTypeBase.call(this,"object");t.tryFreeze(this)};return t.inherit(n,i.dataTypeBase),new n}(),n.array=function(){var u=function(){i.dataTypeBase.call(this,"array");t.tryFreeze(this)},n;return t.inherit(u,i.dataTypeBase),n=u.prototype,n.isValid=function(n){return n instanceof Array},n.defaultValue=function(){return[]},n.handle=function(n){return this.isValid(n)||(n=n.split(",")),n},n.autoValue=function(){throw t.createError(r.notImplemented,[this.name,"defaultValue"]);},n.toODataValue=function(n){return n},n.toBeetleValue=function(n){return n},new u}(),n.function=function(){var n=function(){i.dataTypeBase.call(this,"function");t.tryFreeze(this)};return t.inherit(n,i.dataTypeBase),new n}(),n.string=function(){var u=0,r=function(){i.dataTypeBase.call(this,"string");t.tryFreeze(this)},n;return t.inherit(r,i.dataTypeBase),n=r.prototype,n.defaultValue=function(){return""},n.handle=function(n){return this.isValid(n)||(n=n.toString()),n},n.autoValue=function(){return"key_"+--u},n.toODataValue=function(n){return"'"+n.replace(/'/g,"''")+"'"},n.toBeetleValue=function(n){return'"'+n.replace(/"/g,'""')+'"'},new r}(),n.guid=function(){var r=function(){i.dataTypeBase.call(this,"guid");t.tryFreeze(this)},n;return t.inherit(r,i.dataTypeBase),n=r.prototype,n.defaultValue=function(){return"00000000-0000-0000-0000-000000000000"},n.isValid=function(n){return typeof n=="string"&&n.match(/^\{?[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}\}?$/i)},n.handle=function(n){return this.isValid(n)||u(this,n),n},n.autoValue=function(){return t.createGuid()},n.toODataValue=function(n){return"guid'"+n+"'"},n.toBeetleValue=function(n){return'"'+n+'"'},new r}(),n.date=function(){var n=function(){e.call(this,"date");t.tryFreeze(this)};return t.inherit(n,e),new n}(),n.dateTimeOffset=function(){var n=function(){e.call(this,"dateTimeOffset");t.tryFreeze(this)},i;return t.inherit(n,e),i=n.prototype,i.toODataValue=function(n){return n=this.handle(n),"datetimeoffset'"+s.getDateConverter().toISOString(n)+"'"},new n}(),n.time=function(){var r=function(){i.dataTypeBase.call(this,"time");t.tryFreeze(this)},n;return t.inherit(r,i.dataTypeBase),n=r.prototype,n.defaultValue=function(){return"00:00:00"},n.isValid=function(n){return/^([01]?\d|2[0-3])(((:[0-5]?\d){2}(\.\d{1,3}){0,1})|(:[0-5]?\d){0,2})?$/.test(n)},n.handle=function(n){return this.isValid(n)||u(this,n),n},n.autoValue=function(){return"00:00:00"},n.toODataValue=function(n){return"time'"+n+"'"},n.toBeetleValue=function(n){return'"'+n+'"'},new r}(),n.boolean=function(){var r=function(){i.dataTypeBase.call(this,"boolean");t.tryFreeze(this)},f;return t.inherit(r,i.dataTypeBase),f=r.prototype,f.defaultValue=function(){return!1},f.handle=function(t){if(!this.isValid(t)){if(n.String.isValid(t)){var i=t.toLowerCase();if(i=="true"||i=="1")return!0;if(i=="false"||i=="0")return!1}throw u(this,t);}return t},new r}(),n.int=function(){var f=0,r=function(){i.dataTypeBase.call(this,"int");t.tryFreeze(this)},n;return t.inherit(r,i.dataTypeBase),n=r.prototype,n.defaultValue=function(){return 0},n.isValid=function(n){return typeof n=="number"&&n%1==0},n.handle=function(n){return typeof n!="number"&&(n=Number(n)),this.isValid(n)||u(this,n),n},n.autoValue=function(){return--f},new r}(),n.number=function(){var f=0,r=function(){i.dataTypeBase.call(this,"number");t.tryFreeze(this)},n;return t.inherit(r,i.dataTypeBase),n=r.prototype,n.defaultValue=function(){return 0},n.isValid=function(n){return!isNaN(n)&&typeof n=="number"},n.handle=function(n){return typeof n!="number"&&(n=Number(n)),this.isValid(n)||u(this,n),n},n.autoValue=function(){return--f},new r}(),n.byte=function(){var f=0,r=function(){i.dataTypeBase.call(this,"byte");t.tryFreeze(this)},n;return t.inherit(r,i.dataTypeBase),n=r.prototype,n.defaultValue=function(){return 0},n.isValid=function(n){return typeof n=="number"&&n%1==0&&n>=0&&n<256},n.handle=function(n){return typeof n!="number"&&(n=Number(n)),this.isValid(n)||u(this,n),n},n.autoValue=function(){return--f},new r}(),n.binary=function(){var r=function(){i.dataTypeBase.call(this,"binary");t.tryFreeze(this)},n;return t.inherit(r,i.dataTypeBase),n=r.prototype,n.defaultValue=function(){return'"AAAAAAAAAAA="'},n.isValid=function(){return!0},n.handle=function(n){return n},n.toODataValue=function(n){return n=this.handle(n),"X'"+s.getDateConverter().toISOString(n)+"'"},n.toBeetleValue=function(n){return'"'+n+'"'},new r}(),n.enum=function(){function e(n,i){var e,r,u,o;if(f.isArray(n))return e=0,t.forEach(n,function(n){e|=n.value}),e;if(f.isTypeOf(n,"string")){if(r=n.split(", "),r.length==1)return i[n];for(u=0;u0?this.name+" ("+n.join(", ")+")":this.name},u.validate=function(n,t){return this.func(n,t)==!0?null:this.message},n.byCode=function(i,u,f,e,o,h){var c=s.getLocalizeFunction();c&&(f=e&&c(e)||f,o=h&&c(h)||o);u=u||[];u.push(f);u.push(o);switch(i){case"re":return n.required.apply(null,u);case"sl":return n.stringLength.apply(null,u);case"ma":return n.maxLength.apply(null,u);case"mi":return n.minLength.apply(null,u);case"ra":return n.range.apply(null,u);case"rx":return n.regularExpression.apply(null,u);case"ea":return n.emailAddress.apply(null,u);case"cc":return n.creditCard.apply(null,u);case"ur":return n.url.apply(null,u);case"ph":return n.phone.apply(null,u);case"po":return n.postalCode.apply(null,u);case"ti":return n.time.apply(null,u);case"co":return n.compare.apply(null,u);default:throw t.createError(r.unknownValidator,[i]);}},n.required=function(i,u,e){var o=function(n){return n==null?!1:f.isTypeOf(n,"string")&&!i&&n==""?!1:!0};return u=t.formatString(u||r.requiredError,e),new n("Required",o,u,{allowEmptyStrings:i})},n.stringLength=function(i,u,e,o){var s=function(n){return!i&&!u?!0:f.isNotEmptyString(n)?i&&n.lengthu?!1:!0:!1};return e=t.formatString(e||r.stringLengthError,o,i,u),new n("StringLength",s,e,{min:i,max:u})},n.maxLength=function(i,u,f){var e=function(n){return n==null?!0:i&&n.length>i?!1:!0};return u=t.formatString(u||r.maxLenError,f,i),new n("MaxLength",e,u,{length:i})},n.minLength=function(i,u,f){var e=function(n){return n==null?!1:i&&n.lengthu?!1:!0};return f=t.formatString(f||r.rangeError,e,i,u),new n("Range",o,f,{min:i,max:u})},n.regularExpression=function(n,t,r){return f.isTypeOf(n,"string")&&(n=new RegExp(n)),i("RegularExpression",n,t,r)},n.emailAddress=function(n,t){return i("EmailAddress",/^\w+@[a-zA-Z_]+?\.[a-zA-Z]{2,3}$/,n,t)},n.creditCard=function(n,t){return i("CreditCard",/^((4\d{3})|(5[1-5]\d{2})|(6011)|(3[68]\d{2})|(30[012345]\d))[ -]?(\d{4})[ -]?(\d{4})[ -]?(\d{4}|3[4,7]\d{13})$/,n,t)},n.url=function(n,t){return i("Url",/(http|ftp|https):\/\/[\w-]+(\.[\w-]+)+([\w.,@?^=%&:\/~+#-]*[\w@?^=%&\/~+#-])?/,n,t)},n.phone=function(n,t){return i("Phone",/^(?!.*-.*-.*-)(?=(?:\d{8,10}$)|(?:(?=.{9,11}$)[^-]*-[^-]*$)|(?:(?=.{10,12}$)[^-]*-[^-]*-[^-]*$) )[\d-]+$/,n,t)},n.postalCode=function(n,t){return i("PostalCode",/^\d{5}([\-]?\d{4})?$/,n,t)},n.time=function(n,t){return i("Time",/^([01]?\d|2[0-3])(((:[0-5]?\d){2}(\.\d{1,3}){0,1})|(:[0-5]?\d){0,2})?$/,n,t)},n.compare=function(i,u,f){var o=function(n,r){var u=t.getValue(r,i);return n==u},e=s.getLocalizeFunction(),h=e&&e(i)||i;return u=t.formatString(u||r.compareError,f,h),new n("Compare",o,u,{property:i})},n}(),entityContainer:function(){function r(n,t){var i=new u(n);return t.push(i),i}var u=function(){function u(n,t){var i=r(n,t);return i>-1?t[i]:null}function r(n,t){var f=t.length,r,u,i;if(f>0)for(r=0,u=f-1;r<=u;){if(i=Math.floor((r+u)/2),t[i].keyn){u=i-1;continue}return i}return-1}function f(n,t){for(var i=0;it[i].key;)i++;return i}var i=function(n){this.typeName=n.name;this.keyIndex=[];t.tryFreeze(this)},n=i.prototype;return n.toString=function(){return this.typeName+": "+this.keyIndex.length},n.push=function(n,t){var i=f(n,this.keyIndex);this.keyIndex.splice(i,0,{key:n,entity:t})},n.remove=function(n){var t=r(n,this.keyIndex);this.keyIndex.splice(t,1)},n.getEntity=function(n){var t=u(n,this.keyIndex);return t?t.entity:null},n.getRelations=function(n,t){var f=t.inverse,r,i,u;if(!f)return null;for(r=[],i=0;i0)&&n.$tracker.isChanged()})},n.count=function(){return this.allEntities.length},n.findEntitySet=function(n){return t.findInArray(this.entitySets,n.name,"typeName")},i}(),entityTracker:function(){function y(n,t,i,r){r.entity=n;n.$tracker=r;r.entityType=t;r.entityState=u.entityStates.Detached;r.observableProvider=i;r.forceUpdate=!1;r.originalValues=[];r.changedValues=[];r.manager=null;r.owners=[];r.validationErrors=[];r.validationErrorsChanged=new e.event("validationErrorsChanged",r);r.entityStateChanged=new e.event("entityStateChanged",r);r.propertyChanged=new e.event("propertyChanged",r);r.arrayChanged=new e.event("arrayChanged",r);t.hasMetadata&&(r.key=l(r))}function p(n,t,i){var r={propertyChange:w,arrayChange:b,dataPropertyChange:k,scalarNavigationPropertyChange:d,pluralNavigationPropertyChange:g,arraySet:nt};return i.observableProvider.toObservable(n,t,r)}function c(n,t){n.baseType&&c(n.baseType,t);n.initializer&&n.initializer.call(t,t)}function l(n,t,i){var e=n.entityType,o,r,u,f;if(e.keys.length==0)return null;for(o=[],r=0;r=0;p--)k=y[p],k.entity==n&&k.property==u&&y.splice(p,1);y.length==0&&a.$tracker.manager&&a.$tracker.manager.detachEntity(a);h.$tracker.owners.push({entity:n,property:u})}c.manager&&(d=s.autoFixScalar,t.forEach(u.relatedNavigationProperties,function(n){var t,i,r;if(n.isScalar===!0)if(t=c.foreignKey(n),t){if(i=c.getValue(n.name),i&&i.$tracker.key===t)return;r=null;c.manager&&d&&(r=c.manager.getEntityByKey(t,n.entityType));r?c.setValue(n.name,r):i&&c.setValue(n.name,new e.valueNotifyWrapper(null))}else c.setValue(n.name,null)}))}}function d(n,u,h,c){var y=n.$tracker,d=!1,l,w,p,b,a,k;if(f.isInstanceOf(c,e.valueNotifyWrapper)&&(d=!0,c=c.value),l=h(),l!=c)if(u.checkAssign(c),h(c),s.liveValidate===!0&&o(u.validate(n),y,u),y.propertyChanged.notify({entity:n,property:u,oldValue:l,newValue:c}),v(c,y.manager),u.isComplex){if(c==null)throw t.createError(r.complexCannotBeNull,[u.displayName],{entity:n,property:u});for(w=l.$tracker.owners,p=w.length-1;p>=0;p--)b=w[p],b.entity==n&&b.property==u&&w.splice(p,1);l.$tracker.owners.length==0&&l.$tracker.manager&&l.$tracker.manager.detachEntity(l);c.$tracker.owners.push({entity:n,property:u});i(n,u.name,c.$tracker.toRaw(),y)}else d||(u.triggerOwnerModify&&u.foreignKeys.length==0&&i(n,null,null,y),t.setForeignKeys(n,u,c)),a=u.inverse,a&&(a.isScalar?(l&&l.$tracker.setValue(a.name,null),c&&c.$tracker.setValue(a.name,n)):(l&&l.$tracker.getValue(a.name).remove(n),c&&(k=c.$tracker.getValue(a.name),t.findInArray(k,n)||k.push(n))))}function g(n,r,u,f,e){var c=n.$tracker,h;s.liveValidate===!0&&o(r.validate(n),c,r);r.triggerOwnerModify&&i(n,null,null,c);c.arrayChanged.notify({entity:n,property:r,items:u,removedItems:f,addedItems:e});h=r.inverse;h&&(f&&t.forEach(f,function(t){t.$tracker.getValue(h.name)==n&&t.$tracker.setValue(h.name,null)}),e&&t.forEach(e,function(t){v(t,c.manager);t.$tracker.setValue(h.name,n)}))}function nt(n,i,f,e){var l=s.getArraySetBehaviour(),h,o,c;if(l==u.arraySetBehaviour.NotAllowed)throw t.createError(r.settingArrayNotAllowed,{entity:n,property:e});if(h=[],o=t.filterArray(f,function(){return!0}),l==u.arraySetBehaviour.Replace&&t.forEach(i,function(n){t.findInArray(o,n)?t.removeFromArray(o,n):h.push(n)}),l==u.arraySetBehaviour.Append&&t.forEach(f,function(n){t.findInArray(i,n)&&t.removeFromArray(o,n)}),h.length>0)for(c=h.length-1;c>=0;c--)i.splice(t.indexOf(i,h[c]),1);o.length>0&&i.push.apply(i,o)}function tt(n){var i=n.$tracker;t.forEach(i.entityType.navigationProperties,function(r){var f,e,u;r.inverse&&(f=r.inverse,r.isScalar?(e=i.getValue(r.name),e&&t.setForeignKeys(e,f,n)):(u=i.getValue(r.name),u&&u.length>0&&t.forEach(u,function(i){t.setForeignKeys(i,f,n)})))})}function v(n,i){if(n&&i&&!n.$tracker.entityType.isComplexType&&!i.isInManager(n)){if(n.$tracker.manager)throw t.createError(r.entityAlreadyBeingTracked,null,{entity:n,manager:i});i.addEntity(n)}}function i(n,r,f,e){var o=e.entityState;o==u.entityStates.Unchanged&&(t.forEach(e.entityType.navigationProperties,function(n){var u=n.inverse,r;u&&u.triggerOwnerModify&&(r=e.getValue(n.name),r&&(n.isScalar?i(r,null,null,r.$tracker):t.forEach(r,function(n){i(n,null,null,n.$tracker)})))}),e.toModified());it(r,f,e.originalValues,e.changedValues)}function it(n,i,r,u){var f,e;n!=null&&(i==null||i.$tracker==null||i.$tracker.entityType.isComplexType)&&(f=t.findInArray(r,n,"p"),f||r.push({p:n,v:i}),e=t.findInArray(u,n,"p"),e||u.push({p:n,v:i}))}function o(n,i,r){var u=[],f=r?t.filterArray(i.validationErrors,function(n){return n.property===r}):t.filterArray(i.validationErrors,function(){return!0});t.forEach(f,function(r){t.findInArray(n,r.validator,"validator")?t.removeFromArray(n,r.validator,"validator"):(t.removeFromArray(i.validationErrors,r),u.push(r))});i.validationErrors=i.validationErrors.concat(n);(u.length>0||n.length>0)&&i.validationErrorsChanged.notify({errors:i.validationErrors,added:n,removed:u})}var h=function(n,t,i){delete n.$type;delete n.$id;y(n,t,i||s.getObservableProvider(),this);p(n,t,this);c(t,n)},n=h.prototype;return n.toString=function(){return"EntityTracker: "+this.entityType.shortName+", key: "+this.key},n.setManagerInfo=function(n){if(this.manager)throw t.createError(r.entityAlreadyBeingTracked,{otherManager:this.manager});t.assertPrm(n,"manager").isInstanceOf(e.entityManager).check();this.manager=n},n.isChanged=function(){return this.entityState===u.entityStates.Added||this.entityState===u.entityStates.Deleted||this.entityState===u.entityStates.Modified},n.toAdded=function(){if(this.entityState!=u.entityStates.Added){var n={entity:this.entity,oldState:this.entityState,newState:u.entityStates.Added,newChanged:!this.isChanged()};this.entityState=u.entityStates.Added;this.entityStateChanged.notify(n)}},n.toModified=function(){if(this.entityState!=u.entityStates.Modified){var n={entity:this.entity,oldState:this.entityState,newState:u.entityStates.Modified,newChanged:!this.isChanged()};this.entityState=u.entityStates.Modified;this.entityStateChanged.notify(n)}},n.toDeleted=function(){if(this.entityState!=u.entityStates.Deleted){var n={entity:this.entity,oldState:this.entityState,newState:u.entityStates.Deleted,newChanged:!this.isChanged()};this.entityState=u.entityStates.Deleted;this.entityStateChanged.notify(n)}},n.toUnchanged=function(){if(this.entityState!=u.entityStates.Unchanged){var n={entity:this.entity,oldState:this.entityState,newState:u.entityStates.Unchanged,newUnchanged:this.isChanged()};this.originalValues.length=0;this.changedValues.length=0;this.entityState=u.entityStates.Unchanged;this.entityStateChanged.notify(n)}},n.toDetached=function(){if(this.entityState!=u.entityStates.Detached){var n={entity:this.entity,oldState:this.entityState,newState:u.entityStates.Detached,newUnchanged:this.isChanged()};this.entityState=u.entityStates.Detached;this.entityStateChanged.notify(n)}},n.undoChanges=function(){var n=this;t.forEach(this.changedValues,function(t){n.setValue(t.p,t.v)});this.changedValues.length=0},n.acceptChanges=function(){this.changedValues.length=0},n.getValue=function(n){return this.observableProvider.getValue(this.entity,n)},n.setValue=function(n,t){this.observableProvider.setValue(this.entity,n,t)},n.foreignKey=function(n){var r=n.entityType,u,t,e,f,o,i;if(r.keys.length==0)return null;for(u=[],t=0;t2)throw t.createError(r.managerInvalidArgs,{entityManager:u});var o=n[0],s=n[1];if(f.isInstanceOf(o,i.dataServiceBase))u.dataService=o;else if(f.isTypeOf(o,"string"))u.dataService=s?new v.webApiService(o,s):new v.webApiService(o,!1);else throw t.createError(r.managerInvalidArgs,{entityManager:this});u.pendingChangeCount=0;u.entities=new e.entityContainer;u.validationErrors=[];u.entityStateChanged=new e.event("entityStateChanged",u);u.validationErrorsChanged=new e.event("validationErrorsChanged",u);u.hasChangesChanged=new e.event("hasChangesChanged",u);u.queryExecuting=new e.event("queryExecuting",u);u.queryExecuted=new e.event("queryExecuted",u);u.saving=new e.event("saving",u);u.saved=new e.event("saved",u)}function o(n,i,e,o,h,c,l){e||(e=u.mergeStrategy.Preserve);o&&o!==u.entityStates.Detached||(o=u.entityStates.Added);c==null&&(c=s.autoFixScalar);l==null&&(l=s.autoFixPlural);i=i||h.flatEntities(f.isArray(n)?n:[n]);var y=[],p=[],v=[],w=h.entities.count(),a=h;t.forEach(i,function(n){var f=n.$tracker;if(!f&&n.$type)f=a.toEntity(n,n.$type).$tracker;else if(f.entityType.isComplexType||h.isInManager(n))return;var o=f.entityType,s=f.key,i=null;if(w>0&&s&&(i=a.entities.getEntityByKey(s,o.floorType)),i){if(o.name!==i.$tracker.entityType.name)throw t.createError(r.sameKeyOnDifferentTypesError,[i.$tracker.entityType.shortName,o.shortName],{existingEntity:i,entity:n,manager:a});if(e===u.mergeStrategy.ThrowError)throw t.createError(r.sameKeyExists,{existingEntity:i,entity:n,manager:a});else e===u.mergeStrategy.Preserve?v.push({o:n,n:i}):(v.push({o:n,n:i}),p.push({o:i,n:n}))}else a.entities.push(n),n.$tracker.setManagerInfo(a),y.push(n)});t.forEach(y,function(n){d(n,c,l,a);lt(n,a);k(n,o);s.validateOnMerge===!0&&n.$tracker.validate()});t.forEach(p,function(n){ot(n.o,n.n);k(n.o,o)});t.forEach(v,function(i){var r=t.indexOf(n,i.o);r>=0&&(n[r]=i.n);st(i.o,i.n,c,l,a)})}function b(n,i){if(!i.isInManager(n))throw t.createError(r.entityNotBeingTracked,{entity:n,manager:i});}function k(n,i){if(i===u.entityStates.Unchanged)n.$tracker.toUnchanged();else if(i===u.entityStates.Modified)n.$tracker.toModified();else if(i===u.entityStates.Added)n.$tracker.toAdded();else throw t.createError(r.mergeStateError,[i],{entity:n,state:i});}function ot(n,i){var r=i.$tracker;t.forEach(r.entityType.dataProperties,function(t){n.$tracker.setValue(t.name,r.getValue(t.name))})}function d(n,i,r,u){if(i==!0||r==!0){var e=n.$tracker,o=e.entityType;t.forEach(o.navigationProperties,function(t){var f=e.getValue(t.name),o,h,s,c,l;if(t.isComplex){for(o=f.$tracker.owners,h=!1,s=0;s=0;u--)r=t[u],r&&r.$tracker&&r.$tracker.entityType.hasMetadata&&r.$tracker.manager!=i&&(f=i.getEntityByKey(r.$tracker.key,r.$tracker.entityType),f?t.splice(u,1,f):t.splice(u,1))}function st(n,i,r,u,f){var c=n.$tracker.entityType,h,s,e,o;t.forEach(c.navigationProperties,function(c){var y,p,l,a,v;c.isComplex||(h=n.$tracker,s=i.$tracker,e=h.getValue(c.name),o=s.getValue(c.name),c.isScalar?o||(r==!0?tt(i,c,null,f):r===!0&&c.inverse&&c.inverse.isScalar||u===!0&&c.inverse&&!c.inverse.isScalar||(y=h.foreignKey(c),p=s.foreignKey(c),y==p&&e!=null&&f.isInManager(e)&&(l=c.inverse,l?l.isScalar?e.$tracker.setValue(l.name,i):(a=e.$tracker.getValue(l.name),v=t.indexOf(a,n),v>=0&&a.splice(v,1,i)):s.setValue(c.name,e)))):u?it(i,c,o,f):r===!0&&c.inverse||t.forEach(e,function(n){f.isInManager(n)&&!t.findInArray(o,n)&&o.push(n)}))})}function tt(n,t,i,r){var f=n.$tracker,u=f.foreignKey(t);i?u!=i.$tracker.key&&setForeignKeys(n,t,i):u&&f.setValue(t.name,r.entities.getEntityByKey(u,t.entityType))}function it(n,i,r,u){var f=u.entities.getRelations(n,i);f&&t.forEach(f,function(n){t.findInArray(r,n)||r.push(n)})}function rt(n,i){var r=n.$tracker,u=r.entityType,f=i?new e.valueNotifyWrapper(null):null;u.hasMetadata&&t.forEach(u.navigationProperties,function(n){n.isScalar?r.setValue(n.name,f):r.getValue(n.name).splice(0)})}function ht(n,i,r){t.forEach(n,function(n){n.$tracker.entityState==u.entityStates.Deleted?(n.$tracker.toDetached(),ut(n,r),i.remove(n)):n.$tracker.toUnchanged()})}function ct(n,i,r){if(i.removed.length>0)for(var u=i.removed.length-1;u>=0;u--)r.validationErrors.splice(t.indexOf(r.validationErrors,i.removed[u]),1);i.added.length>0&&r.validationErrors.push.apply(r.validationErrors,i.added);(i.removed.length>0||i.added.length>0)&&r.validationErrorsChanged.notify({errors:r.validationErrors,added:i.added,removed:i.removed})}function lt(n,t){n.$tracker.entityStateChanged.subscribe(function(n){var i=t.pendingChangeCount;n.newChanged===!0?t.pendingChangeCount++:n.newUnchanged===!0&&t.pendingChangeCount--;t.entityStateChanged.notify(n);i==0&&t.pendingChangeCount>0?t.hasChangesChanged.notify({hasChanges:!0}):i>0&&t.pendingChangeCount==0&&t.hasChangesChanged.notify({hasChanges:!1})});n.$tracker.validationErrorsChanged.subscribe(function(i){ct(n,i,t)})}function ut(n,i){n.$tracker.entityStateChanged.unsubscribe(i.entityStateChanged.notify);n.$tracker.validationErrorsChanged.unsubscribe(i.validationErrorsChanged.notify);var r=t.filterArray(i.validationErrors,function(t){return t.entity==n});t.removeFromArray(i.validationErrors,n,"entity");i.validationErrorsChanged.notify({errors:i.validationErrors,removed:r,added:[]})}function at(n,t,i){var r={manager:n,query:t,options:i};return n.queryExecuting.notify(r),a.queryExecuting.notify(r),r}function ft(n,t,i,r){var u={manager:n,query:t,options:i,result:r};return n.queryExecuted.notify(u),a.queryExecuted.notify(u),u.result}function vt(n,t,i){var r={manager:n,changes:t,options:i};return n.saving.notify(r),a.saving.notify(r),r.options}function yt(n,t,i){var r={manager:n,changes:t,options:i};n.saved.notify(r);a.saved.notify(r)}function l(n,t,i,r){n&&n(r);t&&t.resolve(i,r)}function h(n,t,i,r,u){if(n&&n(r),t&&t.reject(i,r),r.manager=u,!n&&!t)throw new r;}var y=function(){et(arguments,this)},n=y.prototype;return n.toString=function(){return this.dataService.toString()+", "+r.pendingChanges+": "+this.pendingChangeCount+", "+r.validationErrors+": "+this.validationErrors.length},n.getEntityType=function(n){return this.dataService.getEntityType(n)},n.createQuery=function(n,t){return this.dataService.createQuery(n,t,this)},n.createEntityQuery=function(n,t){return this.dataService.createEntityQuery(n,t,this)},n.registerCtor=function(n,t,i){this.dataService.registerCtor(n,t,i)},n.createEntity=function(n,t){var i=this.dataService.createEntity(n,t),r=[i];return o(r,null,u.mergeStrategy.ThrowError,u.entityStates.Added,this),i},n.createDetachedEntity=function(n,t){return this.dataService.createEntity(n,t)},n.createRawEntity=function(n,t){return this.dataService.createRawEntity(n,t)},n.createEntityAsync=function(n,t,i,r,u){return p(n,t,i,r,u,this)},n.createRawEntityAsync=function(n,t,i,r,u){return i?i.makeObservable=!1:i={makeObservable:!1},p(n,t,i,r,u,this)},n.executeQuery=function(n,i,e,c){var k,a,p,d,g,b;n.options&&(i=t.combine(n.options,i));k=at(this,n,i);n=k.query;i=k.options;a=i&&i.async==!1?null:s.getPromiseProvider();p=null;a&&(p=a.deferred());var y=u.mergeStrategy.Preserve,v=u.executionStrategy.Server,w=null,nt,tt;if(f.isEnum(i,u.mergeStrategy)?(y=i,i={makeObservable:y!=u.mergeStrategy.NoTrackingRaw}):f.isEnum(i,u.executionStrategy)?v=i:i&&(i.merge&&(y=i.merge),i.execution&&(v=i.execution),i.autoFixScalar!=null&&(nt=i.autoFixScalar),i.autoFixPlural!=null&&(tt=i.autoFixPlural),i.makeObservable=y!=u.mergeStrategy.NoTrackingRaw),d=y==u.mergeStrategy.NoTracking||y==u.mergeStrategy.NoTrackingRaw,d&&v==u.executionStrategy.Both)throw t.createError(r.executionBothNotAllowedForNoTracking,{executionStrategy:v,mergeStrategy:y});return((v==u.executionStrategy.Local||v==u.executionStrategy.LocalIfEmptyServer)&&(w=this.executeQueryLocally(n)),g=null,v==u.executionStrategy.Local||v==u.executionStrategy.LocalIfEmptyServer&&w&&(w.length==null||w.length>0)?(w=ft(this,n,i,w),l(e,a,p,w)):(b=this,this.dataService.executeQuery(n,i,function(t,r,s,w){try{var k=!1;t&&(d||(f.isArray(t)||(t=[t],k=!0),o(t,r,y,u.entityStates.Unchanged,b,nt,tt),k&&(t=t[0])));v==u.executionStrategy.Both&&(t=b.executeQueryLocally(n),s&&(s+=t.$addedCount-t.$deletedCount));t&&(n.inlineCountEnabled&&s!=null&&(t.$inlineCount=s),w&&(t.$extra=w));t=ft(b,n,i,t);l(e,a,p,t);a||(g=t)}catch(it){h(c,a,p,it,b)}},function(t){t.query=n;h(c,a,p,t,b)})),a)?a.getPromise(p):g},n.executeQueryLocally=function(n,i){var o=n.entityType,s,e,l;if(o)if(e=this.entities.findEntitySet(o),e)s=e.getEntities();else return[];else throw t.createError(r.typeRequiredForLocalQueries);var f=[],h=0,c=0;return t.forEach(s,function(n){n.$tracker.entityState==u.entityStates.Added?(h++,f.push(n)):n.$tracker.entityState==u.entityStates.Deleted?c++:f.push(n)}),l=n.toFunction(),f=l(f,i),f.$addedCount=h,f.$deletedCount=c,f},n.getEntityByKey=function(n,t){var i=f.isInstanceOf(t,c.entityType)?t:this.getEntityType(t,!0);return this.entities.getEntityByKey(n,i)},n.deleteEntity=function(n){var i,f,e;for(b(n,this),i=this,f=[],t.forEach(n.$tracker.entityType.navigationProperties,function(u){var e,o;if(u.cascadeDelete){if(u.inverse&&u.inverse.cascadeDelete)throw t.createError(r.twoEndCascadeDeleteNotAllowed,{entity:n,property:u});e=n.$tracker.getValue(u.name);e&&(u.isScalar?u.foreignKeys!=null&&u.foreignKeys.length>0?f.push(e):i.deleteEntity(e):(o=t.filterArray(e,function(){return!0}),t.forEach(o,function(n){i.deleteEntity(n)})))}}),n.$tracker.entityState===u.entityStates.Added?this.detachEntity(n):(rt(n,!0),n.$tracker.toDeleted()),e=0;e0)throw t.createError(r.cannotDetachComplexTypeWithOwners);b(n,this);rt(n,!0);ut(n,this);n.$tracker.toDetached();n.$tracker.manager=null;this.entities.remove(n)},n.createSavePackage=function(n,t){var f=t&&t.userData||null,i=t&&t.forceUpdate,r,u;return i==null&&(i=s.forceUpdate),r={userData:f,forceUpdate:i},u=this.exportEntities(n||this.getChanges(),t),r.entities=u,r},n.rejectChanges=function(n,i){var e=this,r;f.isArray(n)||(n=[n]);r=i===!0?this.flatEntities(n):n;t.forEach(r,function(n){var t=n.$tracker;t.entityState==u.entityStates.Added?e.detachEntity(n):t.entityState==u.entityStates.Modified&&(t.undoChanges(),t.toUnchanged())})},n.undoChanges=function(n,i){f.isArray(n)||(n=[n]);var r=i===!0?this.flatEntities(n):n;t.forEach(r,function(n){n.$tracker.undoChanges()})},n.acceptChanges=function(n,i){f.isArray(n)||(n=[n]);var r=i===!0?this.flatEntities(n):n;t.forEach(r,function(n){n.$tracker.acceptChanges()})},n.exportEntities=function(n,i){var e=[],r,f;return n=n||this.entities.getEntities(),r=i&&i.forceUpdate,r==null&&(r=s.forceUpdate),f=i&&i.minimizePackage,f==null&&(f=s.minimizePackage),t.forEach(n,function(n,i){var o=n.$tracker,a=o.entityType,h=o.entityState,c,s,l;if(r===!1&&(r=o.forceUpdate),c={},f===!0)if(h==u.entityStates.Modified)if(o.originalValues.length>0)s={},t.forEach(o.originalValues,function(t){var f,r=t.p.split("."),e,u,i;if(r.length>1){for(e=0;e0},n.getChanges=function(){return this.entities.getChanges()},n.saveChanges=function(n,i,e){var c=n&&n.entities||this.getChanges(),a,v,p,w,y;n=vt(this,c,n);a=n&&n.async==!1?null:s.getPromiseProvider();v=null;a&&(v=a.deferred());var b=n&&n.autoFixScalar,k=n&&n.autoFixPlural,d=null;return(f.isArray(c)||(c=[c]),c&&c.length>0?(p=[],s.validateOnSave===!0&&t.forEach(c,function(n){if(n.$tracker.entityState!=u.entityStates.Deleted){var t=n.$tracker.validate();t&&t.length>0&&p.push({entity:n,validationErrors:t})}}),p.length>0?(w=new t.createError(r.validationFailed,{entities:c,validationErrors:p}),w.entitiesInError=p,h(e,a,v,w,this)):(y=this,this.dataService.saveChanges(this.createSavePackage(c,n),n,function(r){try{r.GeneratedEntities!=null&&r.GeneratedEntities.length>0&&o(r.GeneratedEntities,null,u.mergeStrategy.Preserve,u.entityStates.Unchanged,y,b,k);r.GeneratedValues&&t.forEach(r.GeneratedValues,function(n){var r=c[n.Index],f,t=n.Property.split("."),i,s,e;if(t.length>1){for(i=0;i",function(n,t){return n()>t()},"gt")),i.push(new n("Lesser","<",function(n,t){return n()=",function(n,t){var i=n(),r=t();return i==r||i>r},"ge")),i.push(new n("LesserEqual","<=",function(n,t){var i=n(),r=t();return i==r||i>",function(n,t){return n()>>t()})),n.find=function(n){var r=t.filterArray(i,function(t){return t.code==n||t.oData==n||t.js==n});return r.length>0?r[0]:null},n}(),filterOps:new h.enums({Equals:{oData:"eq",code:"=="},NotEqual:{oData:"ne",code:"!="},Greater:{oData:"gt",code:">"},Lesser:{oData:"lt",code:"<"},GreaterEqual:{oData:"ge",code:">="},LesserEqual:{oData:"le",code:"<="},Contains:{oData:"substringof",code:"contains",isFunc:!0},StartsWith:{oData:"startswith",code:"startswith",isFunc:!0},EndsWith:{oData:"endswith",code:"endswith",isFunc:!0}}),mergeStrategy:new h.enums("Preserve","Overwrite","ThrowError","NoTracking","NoTrackingRaw"),executionStrategy:new h.enums("Server","Local","Both","LocalIfEmptyServer"),generationPattern:new h.enums("Identity","Computed"),arraySetBehaviour:new h.enums("NotAllowed","Replace","Append")}}(),a=function(){return{queryExecuting:new e.event("beetleQueryExecuting",this),queryExecuted:new e.event("beetleQueryExecuted",this),saving:new e.event("beetleSaving",this),saved:new e.event("beetleSaved",this),info:new e.event("beetleInfo",this),warning:new e.event("beetleWarning",this),error:new e.event("beetleError",this)}}(),s=function(){var s,o;s=n.ko?l.koObservableProviderInstance:n.Backbone?l.backboneObservableProviderInstance:l.propertyObservableProviderInstance;n.Q?o=l.qPromiseProviderInstance:n.jQuery&&(o=l.jQueryPromiseProviderInstance);var h=u.arraySetBehaviour.NotAllowed,c=l.defaultDateConverterInstance,a,e={};return e.autoFixScalar=!0,e.autoFixPlural=!1,e.validateOnMerge=!0,e.validateOnSave=!0,e.liveValidate=!0,e.handleUnmappedProperties=!0,e.isCaseSensitive=!1,e.ignoreWhiteSpaces=!1,e.forceUpdate=!1,e.workAsync=!0,e.ajaxTimeout=null,e.minimizePackage=!1,e.getObservableProvider=function(){return s},e.setObservableProvider=function(n){var h,e,o;if(f.isInstanceOf(n,i.observableProviderBase))s=n;else{if(f.isNotEmptyString(n))for(h=u.observableProviders.symbols(),e=0;e p.Name.",functionNotSupportedForOData:"OData does not support %0 function, please use Beetle Query Strings (like: manager.executeQuery(query, {useBeetleQueryStrings: true}))",instanceError:"%0 is not an instance of %1.",invalidArguments:"Invalid arguments.",invalidDefaultValue:"%0 is not a valid default value for %0.",invalidEnumValue:"Invalid enum value, %0 cannot be found in %1.",invalidExpression:"%0 can only have %1 type expressions.",invalidPropertyAlias:"Invalid property alias.",invalidStatement:"Invalid statement.",invalidValue:"Invalid value for %0 property.",managerInvalidArgs:"Invalid arguments. Valid args are: {DataService} or {Uri, [MetadataManager]} or {Uri, [metadataString (string)]} or {Uri, [doNotUseMetadata (bool)]}.",maxLenError:"%0 property length cannot exceed %1.",maxPrecisionError:"Value %0 exceeded maximum precision of %1.",mergeStateError:"Cannot merge entities with %0 state.",minLenError:"%0 property length must be greater than %1.",noMetadataEntityQuery:"Cannot create entity query when no metadata is available.",noMetadataRegisterCtor:"Cannot register constructor when no metadata is available.",noOpenGroup:"Could not find any open group.",notFoundInMetadata:"Could not find %0 in metadata.",notImplemented:"%0 %1 is not implemented.",notNullable:"Cannot set %0 with null, property is not nullable.",oDataNotSupportMultiTyped:"Multi-Typed queries cannot be used for OData services.",onlyManagerCreatedCanBeExecuted:"Only queries which are created from a manager can be directly executed.",onlyManagerCreatedCanAcceptEntityShortName:"Only queries which are created from a manager can accept entity type short name parameter.",pendingChanges:"Pending changes",pluralNeedsInverse:"To load plural relations, navigation property must have inverse.",projectionsMustHaveAlias:"All projected values must have a property name or alias.",propertyNotFound:"Could not find property: %0.",queryClosed:"Query is closed, expression cannot be added. Queries must be executed after some expressions like first, single, any, all etc..",rangeError:"%0 property value must be between %1 and %2.",requiredError:"%0 property is required.",sameKeyExists:"There is already an entity with same key in the manager.",sameKeyOnDifferentTypesError:"Two different types of entities cannot have same keys when they are from same inheritance root (%0, %1).",settingArrayNotAllowed:"Setting array property is not allowed, you may change this via beetle.settings.setArraySetBehaviour(behavior).",stringLengthError:"%0 property length must be between %1 and %2.",twoEndCascadeDeleteNotAllowed:"Two-end cascade deletes are not supported.",typeError:"%0 type is not %1.",typeMismatch:"%0 value type mismatch. expected type: %1, given type: %2, value: %3",typeRequiredForLocalQueries:'To execute queries locally, entity type must be provided (createQuery("Entities", "Entity") or createEntityQuery("Entity")).',unclosedQuote:'Unclosed quote in "%0".',unclosedToken:'Unclosed "%0".',unexpectedProperty:'Unexpected property "%0".',unexpectedToken:"Unexpected %0.",unknownDataType:"Unknown data type: %0.",unknownExpression:"Unknown expression.",unknownFunction:"Unknown function: %0.",unknownParameter:"Unknown parameter: %0.",unknownValidator:"Unknown validator type: %0.",unsoppertedState:"Unsupported entity state: %0.",validationErrors:"Validation errors",validationFailed:"Validation failed.",valueCannotBeNull:"Value cannot be null: %0.",operatorNotSupportedForOData:"Operator is not supported for OData: %0."}),n.beetleI18N}(),y=function(){return{version:"1.0",i18N:r,helper:t,assert:f,libs:h,baseTypes:i,impls:l,metadata:c,querying:o,core:e,services:v,enums:u,events:a,settings:s,MetadataManager:c.metadataManager,entityManager:e.entityManager,EntityManager:e.entityManager,WebApiService:v.webApiService,MvcService:v.mvcService,EntityStates:u.entityStates,FilterOps:u.filterOps,MergeStrategy:u.mergeStrategy}}();return t.tryFreeze(y),n.beetle=y,y})(window); /* //# sourceMappingURL=beetle.min.js.map */ \ No newline at end of file diff --git a/Samples/Todo/Beetle.Samples.Todo.Angular/Scripts/beetle.js b/Samples/Todo/Beetle.Samples.Todo.Angular/Scripts/beetle.js index 05a089e2..7253f9f5 100644 --- a/Samples/Todo/Beetle.Samples.Todo.Angular/Scripts/beetle.js +++ b/Samples/Todo/Beetle.Samples.Todo.Angular/Scripts/beetle.js @@ -5447,7 +5447,7 @@ } return false; } - return items && items.indexOf(item) >= 0; + return items && items.indexOf(item) > 0; }; return new ctor(); @@ -8423,8 +8423,8 @@ // if option need local and server results both, after server query re-run same query on local. if (execution == enums.executionStrategy.Both) { newEntities = that.executeQueryLocally(query); - if (inlineCount != null && newEntities.$inlineCountDiff != null) - inlineCount += newEntities.$inlineCountDiff; + if (inlineCount) + inlineCount += newEntities.$addedCount - newEntities.$deletedCount; } if (newEntities) { if (query.inlineCountEnabled && inlineCount != null) @@ -8470,29 +8470,23 @@ } else throw helper.createError(i18N.typeRequiredForLocalQueries); - var array = [], serverArray = [], modifiedClient = false; + var array = [], addedCount = 0, deletedCount = 0; helper.forEach(entities, function (entity) { if (entity.$tracker.entityState == enums.entityStates.Added) { - modifiedClient = true; + addedCount++; array.push(entity); } - else if (entity.$tracker.entityState == enums.entityStates.Deleted) { - modifiedClient = true; - serverArray.push(entity); - } - else { + else if (entity.$tracker.entityState == enums.entityStates.Deleted) + deletedCount++; + else array.push(entity); - serverArray.push(entity); - } }); // get array handling function for query var func = query.toFunction(); // run function against entities array = func(array, varContext); - if (array.$inlineCount && modifiedClient) { - var serverResult = func(serverArray, varContext); - array.$inlineCountDiff = array.$inlineCount - serverResult.$inlineCount; - } + array.$addedCount = addedCount; + array.$deletedCount = deletedCount; return array; }; diff --git a/Samples/Todo/Beetle.Samples.Todo.Angular/Scripts/beetle.min.js b/Samples/Todo/Beetle.Samples.Todo.Angular/Scripts/beetle.min.js index 172e216e..5c7c2d4b 100644 --- a/Samples/Todo/Beetle.Samples.Todo.Angular/Scripts/beetle.min.js +++ b/Samples/Todo/Beetle.Samples.Todo.Angular/Scripts/beetle.min.js @@ -1,4 +1,4 @@ -(function(n){"use strict";var t=function(){return{assertPrm:function(n,t){return new f(n,t)},combine:function(n,i){var r,e,u;if(n==i)return n;if(r={},n!=null)for(e in n)r[e]=n[e];if(i!=null)for(u in i){var s=r[u],o=i[u],h=f.isTypeOf(s,"object")&&f.isTypeOf(o,"object")?t.combine(s,o):o;r[u]=h}return r},objEquals:function(n,i){var u,e,r,o;if(n==i)return!0;if(n==null||i==null)return!1;if(f.isObject(n)&&f.isObject(i)){u=0;e=0;for(r in n){if(!i.hasOwnProperty(r)||!t.objEquals(t.getValue(n,r),t.getValue(i,r)))return!1;u++}for(o in i)e++;return u==e}return!1},equals:function(n,t,i,r){var u,f;return typeof n=="string"&&typeof t=="string"&&(u=r&&r.isCaseSensitive,u==null&&(u=s.isCaseSensitive),f=r&&r.ignoreWhiteSpaces,f==null&&(f=s.ignoreWhiteSpaces),u||(n=n.toLowerCase(),t=t.toLowerCase()),f&&(n=n.trim(),t=t.trim())),i?n===t:n==t},formatString:function(n){var t=arguments,i=RegExp("%([0-"+(arguments.length-1)+"])","g"),r=RegExp("{([0-"+(arguments.length-2)+"])}","g");return n.replace(i,function(n,i){return t[Number(i)+1]||""}).replace(r,function(n,i){return t[Number(i)+1]||""})},tryFreeze:function(n,t){var r,i;if(!n||!Object.freeze)return n;if(Object.freeze(n),t===!0)for(r in n)i=n[r],f.isArray(i)?this.tryFreezeArray(i,t):f.isObject(i)&&this.tryFreeze(i,t);return n},tryFreezeArray:function(n,t){if(n&&Object.freeze)for(var i=0;i=0;u--)n.splice(r[u],1);return r.length},mapArray:function(n,t){for(var r,u=[],i=0;i0&&(u.splice(0,0,n),n=t.formatString.apply(null,u)),o=new Error(n),e)for(s in e)o[s]=e[s];return a.error.notify(o),o},setForeignKeys:function(n,t,i){for(var u,f,e,o,r=0;r")return i.aliases.push(n.left.name),it=t.jsepToODataQuery(n.right,i),i.aliases.pop(),it;if(k=u.langOperators.find(n.operator).oData,!k)throw t.createError(r.operatorNotSupportedForOData,[n.operator],{expression:n});return"("+t.jsepToODataQuery(n.left,i)+" "+k+" "+t.jsepToODataQuery(n.right,i)+")"}if(n.type=="UnaryExpression")return n.operator+t.jsepToODataQuery(n.argument,i);if(n.type=="Identifier"){if(l=n.name,l[0]=="@"){if(a=undefined,v=l.slice(1),i.expVarContext&&i.expVarContext[v]!==undefined?a=i.expVarContext[v]:i.varContext&&(a=i.varContext[v]),a===undefined)throw t.createError(r.unknownParameter,[l],{expression:n,queryContext:i});return e.dataTypes.toODataValue(a)}return l}if(n.type=="Literal")return e.dataTypes.toODataValue(n.value);if(n.type=="MemberExpression")return n.object.name&&n.object.name!=i.currentAlias&&t.findInArray(i.aliases,n.object.name)?n.property.name:t.jsepToODataQuery(n.object,i)+"/"+n.property.name;if(n.type=="Compound"){for(f=[],h=0;h"&&(c=s[0].left.name,s=[s[0].right]),c&&(i.currentAlias=c,i.aliases.push(c)),p=0;p"?(i.aliases.push(n.left.name),tt=t.jsepToBeetleQuery(n.right,i),i.aliases.pop(),tt):(it=u.langOperators.find(n.operator).code,"("+t.jsepToBeetleQuery(n.left,i)+" "+it+" "+t.jsepToBeetleQuery(n.right,i)+")");if(n.type=="UnaryExpression")return n.operator+t.jsepToBeetleQuery(n.argument,i);if(n.type=="Identifier"){if(c=n.name,c[0]=="@"){if(l=undefined,v=c.slice(1),i.expVarContext&&i.expVarContext[v]!==undefined?l=i.expVarContext[v]:i.varContext&&(l=i.varContext[v]),l===undefined)throw t.createError(r.unknownParameter,[c],{expression:n,queryContext:i});return e.dataTypes.toBeetleValue(l)}return c}if(n.type=="Literal")return e.dataTypes.toBeetleValue(n.value);if(n.type=="MemberExpression")return n.object.name&&t.findInArray(i.aliases,n.object.name)?n.property.name:t.jsepToBeetleQuery(n.object,i)+"."+n.property.name;if(n.type=="Compound"){for(f=[],h=0;h"&&(a=s[0].left.name,s=[s[0].right]),a&&(i.currentAlias=a,i.aliases.push(a)),y=0;y")return i.currentAlias&&i.aliases.push(i.currentAlias),i.currentAlias={alias:n.left.name},nt=t.jsepToFunction(n.right,i)(f),i.currentAlias=i.aliases.pop(),nt;var ut=u.langOperators.find(n.operator),tt=i.varContext,ft=function(){return t.jsepToFunction(n.left,i)(f)},et=function(){return t.jsepToFunction(n.right,i)(f)};return ut.asFunc.call(tt,ft,et)}if(n.type=="UnaryExpression")return it=function(){return t.jsepToFunction(n.argument,i)(f)},rt=u.langOperators.find(n.operator),rt.asFunc.call(tt,it);if(n.type=="Identifier"){if(e=n.name,e=="null")return null;if(e=="true")return!0;if(e=="false")return!1;if(e[0]=="@"){if(v=undefined,y=e.slice(1),i.expVarContext&&i.expVarContext[y]!==undefined?v=i.expVarContext[y]:i.varContext&&(v=i.varContext[y]),v===undefined)throw t.createError(r.unknownParameter,[e],{expression:n,queryContext:i});return v}return i.currentAlias&&i.currentAlias.alias==e?f:(w=t.findInArray(i.aliases,e,"alias"),w)?w.value:(b=t.getValue(f,e),b===undefined)?window[e]:b}if(n.type=="Literal")return n.value;if(n.type=="MemberExpression"){if(n.object.name){if(i.currentAlias&&n.object.name==i.currentAlias.alias)return t.getValue(f,n.property.name);if(k=t.findInArray(i.aliases,n.object.name,"alias"),k)return t.getValue(k.value,n.property.name)}return t.getValue(t.jsepToFunction(n.object,i)(f),n.property.name)}if(n.type=="CallExpression"){var s=n.arguments,h=[],p=null;if(s.length==1&&s[0]&&s[0].type=="BinaryExpression"&&s[0].operator=="=>"&&(p=s[0].left.name,s=[s[0].right]),p&&(i.currentAlias&&i.aliases.push(i.currentAlias),i.currentAlias={alias:p}),t.forEach(s,function(n){n!=null&&h.push(t.jsepToFunction(n,i))}),l=n.callee.type=="MemberExpression"?n.callee.property.name:n.callee.name,c=o.queryFuncs.getFunc(l,!1),c)n.callee.type=="MemberExpression"&&h.splice(0,0,t.jsepToFunction(n.callee.object,i)),h.splice(0,0,f),d=c.impl.apply(i,h);else{if(l[0]=="@")if(a=l.slice(1),i.expVarContext&&i.expVarContext[a])c=i.expVarContext[a];else if(i.varContext&&i.varContext[a])c=i.varContext[a];else throw t.createError(r.unknownParameter,[a],{expression:n,queryContext:i});else if(g=n.callee.type=="MemberExpression"?t.jsepToFunction(n.callee.object,i)(f):window,g==null||(c=g[l])==null)throw t.createError(r.unknownFunction,[l]);h=t.mapArray(h,function(){return this(f)});d=c.apply(i,h)}return p&&(i.currentAlias=i.aliases.pop()),d}throw t.createError(r.unknownExpression,{expression:n});}},jsepToProjector:function(n,i){var h=[],u,e,o,s;for(f.isArray(n)||(n=[n]),u=0;uu+2&&n[u+1].name&&n[u+1].name.toLowerCase()=="as"){if(u=u+2,s=n[u],s.type!="Identifier")throw t.createError(r.invalidPropertyAlias,{expressions:n,aliasExpression:s});e=s.name}if(n.length>1&&!e)throw t.createError(r.projectionsMustHaveAlias,{expressions:n,expression:o});h.push({p:e,func:t.jsepToFunction(o,i)})}return function(t){for(var r,u,f={},i=0;i0)throw t.createError(this.errors.join("\n"),{name:this.name,value:this.value});},n.hasValue=function(n,i,u){return n==null?(i&&i.push(t.formatString(r.valueCannotBeNull,u)),!1):!0},n.isObject=function(n,i,u){return e.dataTypes.object.isValid(n)?!0:(i&&i.push(t.formatString(r.typeError,u,"object")),!1)},n.isFunction=function(n,i,u){return e.dataTypes.function.isValid(n)?!0:(i&&i.push(t.formatString(r.typeError,u,"function")),!1)},n.isNotEmptyString=function(i,u,f){return!n.isTypeOf(i,"string",u)||i===""?(u&&u.push(t.formatString(r.cannotBeEmptyString,f)),!1):!0},n.isTypeOf=function(i,u,f,o){if(!n.hasValue(i))return!1;var s=e.dataTypes.byName(u);return s.isValid(i)?!0:(f&&f.push(t.formatString(r.typeMismatch,o,u,s,i)),!1)},n.isArray=function(n,i,u){return e.dataTypes.array.isValid(n)?!0:(i&&i.push(t.formatString(r.typeError,u,"array")),!1)},n.isEnum=function(n,i,u){return i.contains(n)?!0:(u&&u.push(t.formatString(r.invalidEnumValue,i,n)),!1)},n.isInstanceOf=function(n,i,u,f){return n==null?(u&&u.push(r.cannotCheckInstanceOnNull),!1):(n instanceof i)?!0:(u&&u.push(t.formatString(r.instanceError,f,i)),!1)},n}(),h=function(){var i={};return i.enums=function(){function r(n,t){for(var i in t)n[i]=t[i];return n}function n(n,i){this.name=n;i&&r(this,i);t.tryFreeze(this)}n.prototype={};n.prototype.constructor=n;n.prototype.toString=function(){return this.name};t.tryFreeze(n.prototype);var i=function(i){var u=this,r;if(arguments.length===1&&i!==null&&typeof i=="object")for(r in i)u[r]=new n(r,i[r]);else t.forEach(arguments,function(t){u[t]=new n(t)});t.tryFreeze(this)};return i.prototype.symbols=function(){var t=[],i,n;for(i in this)(n=this[i],f.isFunction(n))||t.push(n);return t},i.prototype.contains=function(t){return(t instanceof n)?this[t.name]===t:!1},i}(),i.jsep=function(t){var a="Compound",k="Identifier",v="MemberExpression",h="Literal",d="ThisExpression",g="CallExpression",nt="UnaryExpression",tt="BinaryExpression",it="LogicalExpression",u=!0,f={"-":u,"!":u,"~":u,"+":u},r={"=>":0,"||":1,"&&":2,"|":3,"^":4,"&":5,"==":6,"!=":6,"===":6,"!==":6,"<":7,">":7,"<=":7,">=":7,"<<":8,">>":8,">>>":8,"+":9,"-":9,"*":10,"/":10,"%":10},s=function(n){var t=0,i;for(var r in n)(i=r.length)>t&&n.hasOwnProperty(r)&&(t=i);return t},c=s(f),e=s(r),y={"true":!0,"false":!1,"null":null},rt="this",p=function(n){return r[n]||0},w=function(n,t,i){var r=n==="||"||n==="&&"?it:tt;return{type:r,operator:n,left:t,right:i}},o=function(n){return n>=48&&n<=57},l=function(n){return n===36||n===95||n===64||n>=65&&n<=90||n>=97&&n<=122},ut=function(n){return n===36||n===95||n>=65&&n<=90||n>=97&&n<=122||n>=48&&n<=57},i=function(n){for(var t=0,ct=n.charAt,lt=n.charCodeAt,i=function(t){return ct.call(n,t)},u=function(t){return lt.call(n,t)},b=n.length,s=function(){for(var n=u(t);n===32||n===9;)n=u(++t)},ot=function(){s();for(var i=n.substr(t,e),u=i.length;u>0;){if(r.hasOwnProperty(i))return t+=u,i;i=i.substr(0,--u)}return!1},tt=function(){var r,i,o,n,s,f,e,u;if(f=it(),i=ot(),!i)return f;if(s={value:i,prec:p(i)},e=it(),!e)throw new Error("Expected expression after "+i+" at character "+t);for(n=[f,s,e];i=ot();){if(o=p(i),o===0)break;for(s={value:i,prec:o};n.length>2&&o<=n[n.length-2].prec;)e=n.pop(),i=n.pop().value,f=n.pop(),r=w(i,f,e),n.push(r);if(r=it(),!r)throw new Error("Expected expression after "+i+" at character "+t);n.push(s);n.push(r)}for(u=n.length-1,r=n[u];u>1;)r=w(n[u-1].value,n[u-2],r),u-=2;return r},it=function(){var i,r,e;if(s(),i=u(t),o(i)||i===46)return at();if(i===39||i===34)return vt();if(l(i))return pt();if(i===40)return wt();for(r=n.substr(t,c),e=r.length;e>0;){if(f.hasOwnProperty(r))return t+=e,{type:nt,operator:r,argument:it(),prefix:!0};r=r.substr(0,--e)}return!1},at=function(){for(var n="";o(u(t));)n+=i(t++);if(i(t)===".")for(n+=i(t++);o(u(t));)n+=i(t++);if(i(t)==="e"||i(t)==="E"){for(n+=i(t++),(i(t)==="+"||i(t)==="-")&&(n+=i(t++));o(u(t));)n+=i(t++);if(!o(u(t-1)))throw new Error("Expected exponent ("+n+i(t)+") at character "+t);}if(l(u(t)))throw new Error("Variable names cannot start with a number ("+n+i(t)+") at character "+t);return{type:h,value:parseFloat(n),raw:n}},vt=function(){for(var n="",u=i(t++),f=!1,r;t=0;t--)i=this.expressions[t],f.isInstanceOf(i,n)&&this.expressions.splice(t,1);return this},u}(),observableProviderBase:function(){var i=function(n){this.name=n||"observableProviderBase"},n=i.prototype;return n.toString=function(){return this.name},n.isObservable=function(){throw t.createError(r.notImplemented,[this.name,"isObservable"]);},n.toObservable=function(){throw t.createError(r.notImplemented,[this.name,"toObservable"]);},n.getValue=function(){throw t.createError(r.notImplemented,[this.name,"getValue"]);},n.setValue=function(){throw t.createError(r.notImplemented,[this.name,"setValue"]);},i}(),ajaxProviderBase:function(){var n=function(n){this.name=n||"ajaxProviderBase"},i=n.prototype;return i.toString=function(){return this.name},i.doAjax=function(){throw t.createError(r.notImplemented,[this.name,"doAjax"]);},n}(),serializationServiceBase:function(){var i=function(n){this.name=n||"serializationServiceBase"},n=i.prototype;return n.toString=function(){return this.name},n.serialize=function(){throw t.createError(r.notImplemented,[this.name,"serialize"]);},n.deserialize=function(){throw t.createError(r.notImplemented,[this.name,"deserialize"]);},i}(),promiseProviderBase:function(){var i=function(n){this.name=n||"promiseProviderBase"},n=i.prototype;return n.toString=function(){return this.name},n.deferred=function(){throw t.createError(r.notImplemented,[this.name,"deferred"]);},n.getPromise=function(){throw t.createError(r.notImplemented,[this.name,"getPromise"]);},n.resolve=function(){throw t.createError(r.notImplemented,[this.name,"resolve"]);},n.reject=function(){throw t.createError(r.notImplemented,[this.name,"reject"]);},i}(),dataServiceBase:function(){function a(n,e,o,s){var v,w;n==null?n="":n[n.length-1]!="/"&&(n+="/");s.uri=n;var h=null,a=null,y=null,p=null;if(o&&(h=o.ajaxProvider,a=o.serializationService,y=o.dataType,p=o.dataType),s.ajaxProvider=h&&f.isInstanceOf(h,i.ajaxProviderBase)?h:l.jQueryAjaxProviderInstance,s.serializationService=a&&f.isInstanceOf(a,i.SerializationService)?a:l.jsonSerializationServiceInstance,!(e===!0))if(e){if(f.isInstanceOf(e,c.metadataManager))s.metadataManager=e;else if(f.isObject(e))try{s.metadataManager=new c.metadataManager(e)}catch(b){throw t.createError(r.invalidArguments,{exception:b,args:arguments,dataService:this});}}else v=t.findInArray(u,n,"uri"),v?s.metadataManager=v.data:(w=s.fetchMetadata(),s.metadataManager=new c.metadataManager(w),u.push({uri:n,data:s.metadataManager}));s.dataType=y||"json";s.contentType=p||"application/json; charset=utf-8"}var u=[],h=function(n,t,i){a(n,t,i,this)},n=h.prototype;return n.toString=function(){return this.uri},n.getEntityType=function(n){return this.metadataManager?this.metadataManager.getEntityTypeByShortName(n):null},n.createQuery=function(n,i,r){return(t.assertPrm(n,"resourceName").isNotEmptyString().check(),i)?this.createEntityQuery(i,n,r):(this.metadataManager&&this.metadataManager.createQuery(n,null,r),new o.entityQuery(n,null,r))},n.createEntityQuery=function(n,i,u){if(t.assertPrm(n,"shortName").isNotEmptyString().check(),!this.metadataManager)throw t.createError(r.noMetadataEntityQuery,{dataService:this});return this.metadataManager.createQuery(i,n,u)},n.registerCtor=function(n,i,u){if(this.metadataManager==null)throw t.createError(r.noMetadataEntityQuery);this.metadataManager.registerCtor(n,i,u)},n.createEntity=function(n,i){if(!this.metadataManager)throw t.createError(r.noMetadataEntityQuery,{dataService:this});return this.metadataManager.createEntity(n,i)},n.createRawEntity=function(n,i){if(!this.metadataManager)throw t.createError(r.noMetadataEntityQuery,{dataService:this});return this.metadataManager.createRawEntity(n,i)},n.toEntity=function(n,t){var i=null;return this.metadataManager&&(i=this.metadataManager.getEntityType(t)),i||(i=new c.entityType(t)),e.entityTracker.toEntity(n,i,s.getObservableProvider())},n.toODataQueryParams=function(n,i){if(n.isMultiTyped===!0)throw t.createError(r.oDataNotSupportMultiTyped,{query:n});var u={varContext:i},f=[];return t.forEach(n.parameters,function(n){f.push({name:n.name,value:n.value==null?"":n.value})}),n.inlineCountEnabled===!0&&f.push({name:"$inlinecount",value:"allpages"}),t.forEach(n.expressions,function(n,t){u.expVarContext=n.varContext;var r,i;n.onlyBeetle===!0?(r="!e"+t,i=n.toBeetleQuery(u),i=n.name+":"+i):(r="$"+n.name,i=n.toODataQuery(u));f.push({name:r,value:i});u.expVarContext=undefined}),f},n.toBeetleQueryParams=function(n,i){var u={varContext:i},r=[];return t.forEach(n.parameters,function(n){r.push({name:n.name,value:n.value==null?"":n.value})}),n.inlineCountEnabled===!0&&r.push({name:"!e0",value:"inlinecount:allpages"}),t.forEach(n.expressions,function(n,t){u.expVarContext=n.varContext;r.push({name:"!e"+(t+1),value:n.name+":"+n.toBeetleQuery(u)});u.expVarContext=undefined}),r},n.fetchMetadata=function(){throw t.createError(r.notImplemented,["dataServiceBase","fetchMetadata"]);},n.createEntityAsync=function(){throw t.createError(r.notImplemented,["dataServiceBase","createEntityAsync"]);},n.executeQuery=function(){throw t.createError(r.notImplemented,["dataServiceBase","executeQuery"]);},n.executeQueryParams=function(){throw t.createError(r.notImplemented,["dataServiceBase","executeQueryParams"]);},n.saveChanges=function(){throw t.createError(r.notImplemented,["dataServiceBase","saveChanges"]);},h}()}}(),l=function(){return{defaultDateConverterInstance:function(){var n=function(){i.dateConverterBase.call(this,"Default Date Converter")},r;return t.inherit(n,i.dateConverterBase),r=n.prototype,r.parse=function(n){if(typeof n!="string"||n.length<10||!/^\d{4}[\/\-](0?[1-9]|1[012])[\/\-](0?[1-9]|[12][0-9]|3[01])$/.test(n.substr(0,10)))return null;/.\d{3}$/.test(n)&&(n+="Z");try{var t=Date.parse(n);return isNaN(t)?null:new Date(t)}catch(i){return null}},r.toISOString=function(n){return n.toISOString()},new n}(),koObservableProviderInstance:function(n){var u,r;return n&&(n.extenders.intercept=function(t,i){return n.computed({read:t,write:function(n){var r=i&&i.callback;r&&r(i.object,i.property,t,n)}})}),u=function(){i.observableProviderBase.call(this,"Knockout Observable Provider");t.tryFreeze(this)},t.inherit(u,i.observableProviderBase),r=u.prototype,r.isObservable=function(t,i){return n.isObservable(t[i])},r.toObservable=function(i,r,u){function s(t,r,u){var f=n.observable(r);return u?n.observable(r).extend({intercept:{object:i,property:t,callback:u}}):f}function c(t,r,u,f,o){var s;return u=u||[],f&&(u=new e.trackableArray(u,i,t,function(n,t,u,e,o){s.$fromKo!==!0&&i[r].valueHasMutated();s.$fromKo=!1;f(n,t,u,e,o)})),s=n.observableArray(u),s.subscribe(function(){s.$fromKo=!0},null,"beforeChange"),o&&(s.equalityComparer=function(n,r){o(i,t,n,r)}),s}var l=u&&u.propertyChange,a=u&&u.arrayChange,v=u&&u.dataPropertyChange,y=u&&u.scalarNavigationPropertyChange,p=u&&u.pluralNavigationPropertyChange,h=u&&u.arraySet,o=[];t.forEachProperty(i,function(n,t){o.push({p:n,v:t})});r&&r.hasMetadata&&(t.forEach(r.dataProperties,function(n){var r=i[n.name];r=r===undefined?null:n.handle(r);i[n.name]=s(n,r,v);t.removeFromArray(o,n.name,"p")}),t.forEach(r.navigationProperties,function(n){var r=i[n.name];r===undefined&&(r=null);i[n.name]=n.isScalar?s(n,r,y):c(n,n.name,r,p,h);t.removeFromArray(o,n.name,"p")}));t.forEach(o,function(n){var u=n.p,e=n.v;i[u]=f.isArray(e)?c(u,u,e,a,h):s(u,e,l);t.findInArray(r.properties,u)||r.properties.push(u)})},r.getValue=function(t,i){return n.utils.unwrapObservable(t[i])},r.setValue=function(n,t,i){n[t](i)},new u}(n.ko),propertyObservableProviderInstance:function(){var r=function(){i.observableProviderBase.call(this,"Property Observable Provider");t.tryFreeze(this)},n;return t.inherit(r,i.observableProviderBase),n=r.prototype,n.isObservable=function(n,t){return n.$fields!==undefined&&n.$fields[t]!==undefined},n.toObservable=function(n,i,r){function s(t,i,r){return Object.defineProperty(n,i,{get:function(){return n.$fields[i]},set:function(u){if(r){var f=w(n,i);r(n,t,f,u)}else n.$fields[i]=u},enumerable:!0,configurable:!0})}function c(t,i,r,f,o){return r=r||[],f&&(r=new e.trackableArray(r,n,t,f)),u[i]=r,Object.defineProperty(n,i,{get:function(){return n.$fields[i]},set:function(r){o?o(n,t,items,r):n.$fields[i]=r}})}function w(n,t){return function(){return arguments.length==0?n.$fields[t]:n.$fields[t]=arguments[0]}}var l=r&&r.propertyChange,a=r&&r.arrayChange,v=r&&r.dataPropertyChange,y=r&&r.scalarNavigationPropertyChange,p=r&&r.pluralNavigationPropertyChange,h=r&&r.arraySet,u={},o=[];return t.forEachProperty(n,function(n,t){o.push({p:n,v:t})}),i&&i.hasMetadata&&(t.forEach(i.dataProperties,function(i){var r=n[i.name];r=r===undefined?null:i.handle(r);delete n[i.name];s(i,i.name,v);t.removeFromArray(o,i.name,"p");u[i.name]=r}),t.forEach(i.navigationProperties,function(i){var r=n[i.name];r===undefined&&(r=null);delete n[i.name];i.isScalar?(s(i,i.name,y),u[i.name]=r):c(i,i.name,r,p,h);t.removeFromArray(o,i.name,"p")})),t.forEach(o,function(r){var e=r.p,o=r.v;delete n[e];f.isArray(o)?c(e,e,o,a,h):(s(e,e,l),u[e]=o);t.findInArray(i.properties,e)||i.properties.push(e)}),n.$fields=u,n},n.getValue=function(n,t){return n[t]},n.setValue=function(n,t,i){n[t]=i},new r}(),backboneObservableProviderInstance:function(){var r=function(){i.observableProviderBase.call("Backbone Observable Provider");t.tryFreeze(this)},n;return t.inherit(r,i.observableProviderBase),n=r.prototype,n.isObservable=function(n,t){return n.$fields!==undefined&&n.$fields[t]!==undefined},n.toObservable=function(n,i,r){function s(t,i,r){return Object.defineProperty(n,i,{get:function(){return n.$fields[i]},set:function(u){if(r){var f=w(n,i);r(n,t,f,u)}else n.$fields[i]=u},enumerable:!0,configurable:!0})}function c(t,i,r,f,o){return r=r||[],f&&(r=new e.trackableArray(r,n,t,f)),u[i]=r,Object.defineProperty(n,i,{get:function(){return n.$fields[i]},set:function(r){o?o(n,t,items,r):n.$fields[i]=r}})}function w(n,t){return function(){return arguments.length==0?n.$fields[t]:n.$fields[t]=arguments[0]}}var l=r&&r.propertyChange,a=r&&r.arrayChange,v=r&&r.dataPropertyChange,y=r&&r.scalarNavigationPropertyChange,p=r&&r.pluralNavigationPropertyChange,h=r&&r.arraySet,u={},o=[];return t.forEachProperty(n,function(n,t){o.push({p:n,v:t})}),i&&i.hasMetadata&&(t.forEach(i.dataProperties,function(i){var r=n[i.name];r=r===undefined?null:i.handle(r);delete n[i.name];s(i,i.name,v);t.removeFromArray(o,i.name,"p");u[i.name]=r}),t.forEach(i.navigationProperties,function(i){var r=n[i.name];r===undefined&&(r=null);delete n[i.name];i.isScalar?(s(i,i.name,y),u[i.name]=r):c(i,i.name,r,p,h);t.removeFromArray(o,i.name,"p")})),t.forEach(o,function(r){var e=r.p,o=r.v;delete n[e];f.isArray(o)?c(e,e,o,a,h):(s(e,e,l),u[e]=o);t.findInArray(i.properties,e)||i.properties.push(e)}),n.$fields=u,n},n.getValue=function(n,t){return n[t]},n.setValue=function(n,t,i){n[t]=i},new r}(),jQueryAjaxProviderInstance:function(n){function f(n){var i={status:n.status};if(n.responseText)try{i.detail=JSON.parse(n.responseText)}catch(r){}return t.createError(n.statusText,i)}var r=function(){i.ajaxProviderBase.call(this,"jQuery Ajax Provider");t.tryFreeze(this)},u;return t.inherit(r,i.ajaxProviderBase),u=r.prototype,u.doAjax=function(t,i,r,u,e,o,s,h,c,l){var a={url:t,accepts:{json:"application/json; odata=verbose",xml:"text/xml; application/xhtml+xml;application/xml",text:"text/xml"},type:i,dataType:r,contentType:u,traditional:!1,data:e,cache:!1,async:o,timeout:s,success:function(n,t,i){if(i.onreadystatechange=null,i.abort=null,n&&n.Error){var r=f(i);r.message=n.Error;l(r)}else c(n,i)},error:function(n){n.onreadystatechange=null;n.abort=null;l(f(n))}};return h!=null&&n.extend(a,h),n.ajax(a)},new r}(n.$),jsonSerializationServiceInstance:function(){var n=function(){i.serializationServiceBase.call(this,"Json Serializer");t.tryFreeze(this)},r;return t.inherit(n,i.serializationServiceBase),r=n.prototype,r.serialize=function(n){return JSON.stringify(n)},r.deserialize=function(n){return f.isTypeOf(n,"string")?JSON.parse(n):n},new n}(),qPromiseProviderInstance:function(n){var u=function(){i.promiseProviderBase.call(this,"Q Promise Provider");t.tryFreeze(this)},r;return t.inherit(u,i.promiseProviderBase),r=u.prototype,r.toString=function(){return this.name},r.deferred=function(){return n.defer()},r.getPromise=function(n){return n.promise},r.resolve=function(n,t){n.resolve(t)},r.reject=function(n,t){n.reject(t)},new u}(n.Q),jQueryPromiseProviderInstance:function(n){var u=function(){i.promiseProviderBase.call(this,"jQuery Promise Provider");t.tryFreeze(this)},r;return t.inherit(u,i.promiseProviderBase),r=u.prototype,r.toString=function(){return this.name},r.deferred=function(){return n.Deferred()},r.getPromise=function(n){return n.promise()},r.resolve=function(n,t){n.resolve(t)},r.reject=function(n,t){n.reject(t)},new u}(n.$)}}(),c=function(){return{dataProperty:function(){var i=function(n,t,i,r,u,f,o,s,h){this.owner=n;this.name=t;this.displayName=i||t;this.dataType=r;this.isNullable=u;this.isKeyPart=f;this.generationPattern=o;this.defaultValue=s;this.useForConcurrency=h;this.relatedNavigationProperties=[];this.validators=[];this.isEnum=r instanceof e.dataTypes.enum;this.isComplex=r.isComplex},n=i.prototype;return n.toString=function(){return this.displayName},n.isValid=function(n){return n==null?!this.isNullable:this.dataType.isValid(n,this)},n.handle=function(n){if(n==null){if(!this.isNullable)throw t.createError(r.notNullable,[this.displayName],{property:this});return null}if(n=this.dataType.handle(n,this),this.dataType==e.dataTypes.number&&this.precision&&n.toString().replace(/\./g,"").length>this.precision)throw t.createError(r.maxPrecisionError,[n,this.precision],{dataType:dataType,value:n});return this.dataType==e.dataTypes.number&&this.scale!=null&&(n=Number(n.toFixed(this.scale))),n},n.getDefaultValue=function(){return this.defaultValue?this.defaultValue:this.isNullable?null:this.generationPattern==u.generationPattern.Identity&&this.isKeyPart===!0?this.dataType.autoValue():this.dataType.defaultValue()},n.addValidation=function(n,i,r,u){t.assertPrm(n,"name").isNotEmptyString().check();t.assertPrm(i,"func").isFunction().check();this.validators.push(new e.validator(n,i,r,u))},n.validate=function(n){var u=[],i,r;return this.validators.length>0&&(i=this,r=t.getValue(n,i.name),t.forEach(this.validators,function(f){var e=f.validate(r,n);e&&u.push(t.createValidationError(n,r,i,e,f))})),u},i}(),navigationProperty:function(){var i=function(n,t,i,r,u,f,e,o){this.owner=n;this.name=t;this.displayName=i||t;this.entityTypeName=r;this.entityType=null;this.isScalar=u;this.isComplex=f===undefined;this.associationName=f;this.cascadeDelete=e===!0;this.foreignKeyNames=o||[];this.inverse=null;this.foreignKeys=[];this.validators=[];this.triggerOwnerModify=!1},n=i.prototype;return n.toString=function(){return this.displayName},n.checkAssign=function(n){if(n!=null){if(!n.$tracker)throw t.createError(r.assignErrorNotEntity,[this],{property:this,value:n});var i=n.$tracker.entityType;if(!this.entityType.isAssignableWith(i))throw t.createError(r.assignError,[this.name,i.shortName],{property:this,value:n});}},n.addValidation=function(n,i,r,u){t.assertPrm(n,"name").isNotEmptyString().check();t.assertPrm(i,"func").isFunction().check();this.validators.push(new e.validator(n,i,r,u))},n.validate=function(n){var u=[],i,r;return this.validators.length>0&&(i=this,r=t.getValue(n,i.name),t.forEach(this.validators,function(f){var e=f.validate(r);e&&u.push(t.createValidationError(n,r,i,e,f))})),u},i}(),entityType:function(){function u(n,t){n.baseType&&u(n.baseType,t);n.constructor&&n.constructor.call(t,t)}function a(n,i){for(var u,f,e,o=n.length,r=0;r0&&t.forEach(this.validators,function(r){var u=r.validate(n);u&&i.push(t.createValidationError(n,null,null,u,r))}),t.forEach(this.dataProperties,function(t){var r=t.validate(n);r&&(i=i.concat(r))}),t.forEach(this.navigationProperties,function(t){var r=t.validate(n);r&&(i=i.concat(r))}),i},i}(),metadataManager:function(){var i=function(n){this.types=[];this.enums={};this.name=null;this.displayName=null;n&&this.parseBeetleMetadata(n)},n=i.prototype;return n.toString=function(){return this.types.join(", ")},n.getEntityType=function(n,i){var u=t.findInArray(this.types,n,"name");if(!u&&i===!0)throw t.createError(r.notFoundInMetadata,[n],{metadataManager:this,typeName:n});return u},n.getEntityTypeByShortName=function(n,i){var u=t.findInArray(this.types,n,"shortName");if(!u&&i===!0)throw t.createError(r.notFoundInMetadata,[n],{metadataManager:this,typeShortName:n});return u},n.createQuery=function(n,i,r){if(i)return this.getEntityTypeByShortName(i,!0).createQuery(n,r);var u=t.filterArray(this.types,function(t){return t.setName==n});return u.length==1?u[0].createQuery(n,r):new o.entityQuery(n,null,r)},n.registerCtor=function(n,t,i){var r=this.getEntityTypeByShortName(n,!0);r.registerCtor(t,i)},n.createEntity=function(n,t){var i=this.getEntityTypeByShortName(n,!0);return i?i.createEntity(t):null},n.createRawEntity=function(n,t){var i=this.getEntityTypeByShortName(n,!0);return i?i.createRawEntity(t):null},n.parseBeetleMetadata=function(n){var o,a,s,r,v,y,p,w,l,i,f,b,k;if(this.types=[],this.enums={},this.name=n.n,this.displayName=t.getResourceValue(n.r,n.l||n.n),o=n.e,a={},o)for(s=0;s0&&a(n,t,r);i.currentGroup?i.currentGroup.filterItems.push(r):i.groups.push(r);i.currentGroup=r;i.openGroups.push(r)}function a(n,i,o){var h,p,v,a,y,c,w;if(n.length==3||n.length==4){if(h=n[1],f.isTypeOf(h,"string"))for(h=h.toLowerCase(),p=u.filterOps.symbols(),v=0;vs?i?-1:1:i?1:-1}}(c,s),o.push(l);return e=[],e.push.apply(e,n),e.sort(function(n,t){for(var r,i=0;i0},n}(),avgExp:function(){var n=function(n){i.expressionBase.call(this,"exec;avg",3,!0,!0);this.expStr=n;n&&(this.exp=h.jsep(n));this.isExecuter=!0},r;return t.inherit(n,i.expressionBase),r=n.prototype,r.toBeetleQuery=function(n){return this.exp?t.jsepToBeetleQuery(this.exp,n):""},r.clone=function(){return new n(this.expStr)},r.execute=function(t,i){return n.execute(t,this.exp,i)},n.execute=function(n,i,r){var u=i?t.jsepToFunction(i,r):function(n){return n};return o.queryFuncs.avg.impl(n,function(){return n},u)},n}(),maxExp:function(){var n=function(n){i.expressionBase.call(this,"exec;max",3,!0,!0);this.expStr=n;n&&(this.exp=h.jsep(n));this.isExecuter=!0},r;return t.inherit(n,i.expressionBase),r=n.prototype,r.toBeetleQuery=function(n){return this.exp?t.jsepToBeetleQuery(this.exp,n):""},r.clone=function(){return new n(this.expStr)},r.execute=function(t,i){return n.execute(t,this.exp,i)},n.execute=function(n,i,r){var u=i?t.jsepToFunction(i,r):function(n){return n};return o.queryFuncs.max.impl(n,function(){return n},u)},n}(),minExp:function(){var n=function(n){i.expressionBase.call(this,"exec;min",3,!0,!0);this.expStr=n;n&&(this.exp=h.jsep(n));this.isExecuter=!0},r;return t.inherit(n,i.expressionBase),r=n.prototype,r.toBeetleQuery=function(n){return this.exp?t.jsepToBeetleQuery(this.exp,n):""},r.clone=function(){return new n(this.expStr)},r.execute=function(t,i){return n.execute(t,this.exp,i)},n.execute=function(n,i,r){var u=i?t.jsepToFunction(i,r):function(n){return n};return o.queryFuncs.min.impl(n,function(){return n},u)},n}(),sumExp:function(){var n=function(n){i.expressionBase.call(this,"exec;sum",3,!0,!0);this.expStr=n;n&&(this.exp=h.jsep(n));this.isExecuter=!0},r;return t.inherit(n,i.expressionBase),r=n.prototype,r.toBeetleQuery=function(n){return this.exp?t.jsepToBeetleQuery(this.exp,n):""},r.clone=function(){return new n(this.expStr)},r.execute=function(t,i){return n.execute(t,this.exp,i)},n.execute=function(n,i,r){var u=i?t.jsepToFunction(i,r):function(n){return n};return o.queryFuncs.sum.impl(n,function(){return n},u)},n}(),countExp:function(){var n=function(n,t){i.expressionBase.call(this,"exec;count",3,!0,!0);this.expStr=n;n&&(this.exp=h.jsep(n));this.varContext=t;this.isExecuter=!0},r;return t.inherit(n,i.expressionBase),r=n.prototype,r.toBeetleQuery=function(n){return this.exp?t.jsepToBeetleQuery(this.exp,n):""},r.clone=function(){return new n(this.expStr,this.varContext)},r.execute=function(t,i){return n.execute(t,this.exp,i)},n.execute=function(n,i,r){return i&&(n=t.filterArray(n,t.jsepToFunction(i,r))),n.length},n}(),firstExp:function(){var n=function(n,t){i.expressionBase.call(this,"exec;first",3,!0,!1);this.expStr=n;n&&(this.exp=h.jsep(n));this.varContext=t;this.isExecuter=!0},u;return t.inherit(n,i.expressionBase),u=n.prototype,u.toBeetleQuery=function(n){return this.exp?t.jsepToBeetleQuery(this.exp,n):""},u.clone=function(){return new n(this.expStr,this.varContext)},u.execute=function(t,i){return n.execute(t,this.exp,i)},n.execute=function(n,i,u){if(i&&(n=t.filterArray(n,t.jsepToFunction(i,u))),n.length==0)throw t.createError(r.arrayEmpty,{array:n,expression:this});return n[0]},n}(),firstOrDefaultExp:function(){var n=function(n,t){i.expressionBase.call(this,"exec;firstOD",3,!0,!1);this.expStr=n;n&&(this.exp=h.jsep(n));this.varContext=t;this.isExecuter=!0},r;return t.inherit(n,i.expressionBase),r=n.prototype,r.toBeetleQuery=function(n){return this.exp?t.jsepToBeetleQuery(this.exp,n):""},r.clone=function(){return new n(this.expStr,this.varContext)},r.execute=function(t,i){return n.execute(t,this.exp,i)},n.execute=function(n,i,r){return i&&(n=t.filterArray(n,t.jsepToFunction(i,r))),n.length==0?null:n[0]},n}(),singleExp:function(){var n=function(n,t){i.expressionBase.call(this,"exec;single",3,!0,!1);this.expStr=n;n&&(this.exp=h.jsep(n));this.varContext=t;this.isExecuter=!0},u;return t.inherit(n,i.expressionBase),u=n.prototype,u.toBeetleQuery=function(n){return this.exp?t.jsepToBeetleQuery(this.exp,n):""},u.clone=function(){return new n(this.expStr,this.varContext)},u.execute=function(t,i){return n.execute(t,this.exp,i)},n.execute=function(n,i,u){if(i&&(n=t.filterArray(n,t.jsepToFunction(i,u))),n.length!=1)throw t.createError(r.arrayNotSingle,{array:n,expression:this});return n[0]},n}(),singleOrDefaultExp:function(){var n=function(n,t){i.expressionBase.call(this,"exec;singleOD",3,!0,!1);this.expStr=n;n&&(this.exp=h.jsep(n));this.varContext=t;this.isExecuter=!0},u;return t.inherit(n,i.expressionBase),u=n.prototype,u.toBeetleQuery=function(n){return this.exp?t.jsepToBeetleQuery(this.exp,n):""},u.clone=function(){return new n(this.expStr,this.varContext)},u.execute=function(t,i){return n.execute(t,this.exp,i)},n.execute=function(n,i,u){if(i&&(n=t.filterArray(n,t.jsepToFunction(i,u))),n.length>1)throw t.createError(r.arrayNotSingleOrEmpty,{array:n,expression:this});return n.length==0?null:n[0]},n}(),lastExp:function(){var n=function(n,t){i.expressionBase.call(this,"exec;last",3,!0,!1);this.expStr=n;n&&(this.exp=h.jsep(n));this.varContext=t;this.isExecuter=!0},u;return t.inherit(n,i.expressionBase),u=n.prototype,u.toBeetleQuery=function(n){return this.exp?t.jsepToBeetleQuery(this.exp,n):""},u.clone=function(){return new n(this.expStr,this.varContext)},u.execute=function(t,i){return n.execute(t,this.exp,i)},n.execute=function(n,i,u){if(i&&(n=t.filterArray(n,t.jsepToFunction(i,u))),n.length==0)throw t.createError(r.arrayEmpty,{array:n,expression:this});return n[n.length-1]},n}(),lastOrDefaultExp:function(){var n=function(n,t){i.expressionBase.call(this,"exec;lastOD",3,!0,!1);this.expStr=n;n&&(this.exp=h.jsep(n));this.varContext=t;this.isExecuter=!0},r;return t.inherit(n,i.expressionBase),r=n.prototype,r.toBeetleQuery=function(n){return this.exp?t.jsepToBeetleQuery(this.exp,n):""},r.clone=function(){return new n(this.expStr,this.varContext)},r.execute=function(t,i){return n.execute(t,this.exp,i)},n.execute=function(n,i,r){return i&&(n=t.filterArray(n,t.jsepToFunction(i,r))),n.length==0?null:n[n.length-1]},n}()}}(),queryFuncs:function(){var n={};return n.toupper=function(){var n=function(){i.queryFuncBase.call(this,"toupper","ToUpper",1)},r;return t.inherit(n,i.queryFuncBase),r=n.prototype,r.impl=function(n,t){return(t?t(n):n).toUpperCase()},new n}(),n.tolower=function(){var n=function(){i.queryFuncBase.call(this,"tolower","ToLower",1)},r;return t.inherit(n,i.queryFuncBase),r=n.prototype,r.impl=function(n,t){return(t?t(n):n).toLowerCase()},new n}(),n.substring=function(){var n=function(){i.queryFuncBase.call(this,"substring","Substring",3)},r;return t.inherit(n,i.queryFuncBase),r=n.prototype,r.impl=function(n,t,i,r){arguments.length==3?(r=i,i=t,t=n):t=t(n);i=i(n);r=r(n);var u=Number(i)+Number(r);return t&&t.substring(i,u)},new n}(),n.substringof=function(){var n=function(){i.queryFuncBase.call(this,"substringof","Contains",2)},r;return t.inherit(n,i.queryFuncBase),r=n.prototype,r.toBeetleFunction=function(n,t){return t=t?t+".":"",t+"Contains("+n+")"},r.impl=function(n,t,i){return i=i?i(n):n,i&&i.indexOf(t(n))>=0},new n}(),n.length=function(){var n=function(){i.queryFuncBase.call(this,"length","Length",1)},r;return t.inherit(n,i.queryFuncBase),r=n.prototype,r.toBeetleFunction=function(n){return n=n?n+".":"",n+"Length"},r.impl=function(n,t){return(t?t(n):n).length},new n}(),n.trim=function(){var n=function(){i.queryFuncBase.call(this,"trim","Trim",1)},r;return t.inherit(n,i.queryFuncBase),r=n.prototype,r.impl=function(n,t){return(t?t(n):n).trim()},new n}(),n.concat=function(){var n=function(){i.queryFuncBase.call(this,"concat","Concat",null)},r;return t.inherit(n,i.queryFuncBase),r=n.prototype,r.toBeetleFunction=function(){return"string.Concat("+Array.prototype.slice.call(arguments).join(", ")+")"},r.impl=function(n){for(var i=arguments[1](n).toString(),r=Array.prototype.slice.call(arguments,2),u=[],t=0;t=0},new u}(),n.round=function(){var n=function(){i.queryFuncBase.call(this,"round","Math.Round",1)},r;return t.inherit(n,i.queryFuncBase),r=n.prototype,r.toBeetleFunction=function(n){return"Math.Round("+n+")"},r.impl=function(n,t){return Math.round(t?t(n):n)},new n}(),n.ceiling=function(){var n=function(){i.queryFuncBase.call(this,"ceiling","Math.Ceiling(%1)",1)},r;return t.inherit(n,i.queryFuncBase),r=n.prototype,r.toBeetleFunction=function(n){return"Math.Ceiling("+n+")"},r.impl=function(n,t){return Math.ceil(t?t(n):n)},new n}(),n.floor=function(){var n=function(){i.queryFuncBase.call(this,"floor","Math.Floor",1)},r;return t.inherit(n,i.queryFuncBase),r=n.prototype,r.toBeetleFunction=function(n){return"Math.Floor("+n+")"},r.impl=function(n,t){return Math.floor(t?t(n):n)},new n}(),n.second=function(){var n=function(){i.queryFuncBase.call(this,"second","Second",1)},r;return t.inherit(n,i.queryFuncBase),r=n.prototype,r.toBeetleFunction=function(n){return n=n?n+".":"",n+"Second"},r.impl=function(n,t){return t=e.dataTypes.date.handle(t?t(n):n),t.getSeconds()},new n}(),n.minute=function(){var n=function(){i.queryFuncBase.call(this,"minute","Minute",1)},r;return t.inherit(n,i.queryFuncBase),r=n.prototype,r.toBeetleFunction=function(n){return n=n?n+".":"",n+"Minute"},r.impl=function(n,t){return t=e.dataTypes.date.handle(t?t(n):n),t.getMinutes()},new n}(),n.hour=function(){var n=function(){i.queryFuncBase.call(this,"hour","Hour",1)},r;return t.inherit(n,i.queryFuncBase),r=n.prototype,r.toBeetleFunction=function(n){return n=n?n+".":"",n+"Hour"},r.impl=function(n,t){return t=e.dataTypes.date.handle(t?t(n):n),t.getHours()},new n}(),n.day=function(){var n=function(){i.queryFuncBase.call(this,"day","Day",1)},r;return t.inherit(n,i.queryFuncBase),r=n.prototype,r.toBeetleFunction=function(n){return n=n?n+".":"",n+"Day"},r.impl=function(n,t){return t=e.dataTypes.date.handle(t?t(n):n),t.getDate()},new n}(),n.month=function(){var n=function(){i.queryFuncBase.call(this,"month","Month",1)},r;return t.inherit(n,i.queryFuncBase),r=n.prototype,r.toBeetleFunction=function(n){return n=n?n+".":"",n+"Month"},r.impl=function(n,t){return t=e.dataTypes.date.handle(t?t(n):n),t.getMonth()+1},new n}(),n.year=function(){var n=function(){i.queryFuncBase.call(this,"year","Year",1)},r;return t.inherit(n,i.queryFuncBase),r=n.prototype,r.toBeetleFunction=function(n){return n=n?n+".":"",n+"Year"},r.impl=function(n,t){return t=e.dataTypes.date.handle(t?t(n):n),t.getFullYear()},new n}(),n.max=function(){var n=function(){i.queryFuncBase.call(this,"max","Max",2)},u;return t.inherit(n,i.queryFuncBase),u=n.prototype,u.toODataFunction=function(){throw t.createError(r.functionNotSupportedForOData,["Max"]);},u.impl=function(n,t,i){var u,r,f;if(arguments.length==1?t=n:arguments.length==2?(i=t,t=n):t=t(n),t.length==0)return null;for(u=i?i(t[0]):t[0],r=1;ru&&(u=f);return u},new n}(),n.min=function(){var n=function(){i.queryFuncBase.call(this,"min","Min",2)},u;return t.inherit(n,i.queryFuncBase),u=n.prototype,u.toODataFunction=function(){throw t.createError(r.functionNotSupportedForOData,["Min"]);},u.impl=function(n,t,i){var u,r,f;if(arguments.length==1?t=n:arguments.length==2?(i=t,t=n):t=t(n),t.length==0)return null;for(u=i?i(t[0]):t[0],r=1;r0;for(r=0;r2&&(i=Array.prototype.slice.call(arguments).slice(2)),u=this.slice(n,n+t),this.changing.notify({added:i,removed:u}),i&&r(i,this),f=Array.prototype.splice.apply(this,arguments),this.after(this.object,this.property,this,u,i),this.changed.notify({added:i,removed:u}),f},n.remove=function(){var n=[],i=this;return this.changing.notify({added:[],removed:arguments}),t.forEach(arguments,function(r){var u=t.indexOf(i,r);u>=0&&(Array.prototype.splice.call(i,u,1),n.push(r))}),this.after(this.object,this.property,this,n,null),this.changed.notify({added:[],removed:arguments}),n},n.load=function(n,t,i,r,u){return this.entity.$tracker.loadNavigationProperty(this.propertyName,n,t,i,r,u)},i}(),event:function(){var i=function(n,t){this.name=n;this.subscribers=[];this.publisher=t},n=i.prototype;return n.toString=function(){return this.name},n.subscribe=function(n){t.findInArray(this.subscribers,n)||this.subscribers.push(n)},n.unsubscribe=function(n){t.removeFromArray(this.subscribers,n)},n.notify=function(){var n=arguments;t.forEach(this.subscribers,function(t){t.apply(t,n)})},i}(),dataTypes:function(){function u(n,i){throw t.createError(r.assignError,[n.name,i],{dataType:n,value:i});}var e=function(){var r=function(n){i.dataTypeBase.call(this,"dateBase");this.name=n},n;return t.inherit(r,i.dataTypeBase),n=r.prototype,n.defaultValue=function(){return new Date(-6847812e6)},n.isValid=function(n){return Object.prototype.toString.call(n)==="[object Date]"},n.handle=function(n){if(!this.isValid(n)){var t=n;n=this.tryParse(t);n||u(this,t)}return n},n.autoValue=function(){return new Date},n.getRawValue=function(n){return n==null?null:s.getDateConverter().toISOString(n)},n.tryParse=function(n){return s.getDateConverter().parse(n)},n.toODataValue=function(n){return n=this.handle(n),"datetime'"+s.getDateConverter().toISOString(n)+"'"},n.toBeetleValue=function(n){return n=this.handle(n),'"'+s.getDateConverter().toISOString(n)+'"'},r}(),n={};return n.object=function(){var n=function(){i.dataTypeBase.call(this,"object");t.tryFreeze(this)};return t.inherit(n,i.dataTypeBase),new n}(),n.array=function(){var u=function(){i.dataTypeBase.call(this,"array");t.tryFreeze(this)},n;return t.inherit(u,i.dataTypeBase),n=u.prototype,n.isValid=function(n){return n instanceof Array},n.defaultValue=function(){return[]},n.handle=function(n){return this.isValid(n)||(n=n.split(",")),n},n.autoValue=function(){throw t.createError(r.notImplemented,[this.name,"defaultValue"]);},n.toODataValue=function(n){return n},n.toBeetleValue=function(n){return n},new u}(),n.function=function(){var n=function(){i.dataTypeBase.call(this,"function");t.tryFreeze(this)};return t.inherit(n,i.dataTypeBase),new n}(),n.string=function(){var u=0,r=function(){i.dataTypeBase.call(this,"string");t.tryFreeze(this)},n;return t.inherit(r,i.dataTypeBase),n=r.prototype,n.defaultValue=function(){return""},n.handle=function(n){return this.isValid(n)||(n=n.toString()),n},n.autoValue=function(){return"key_"+--u},n.toODataValue=function(n){return"'"+n.replace(/'/g,"''")+"'"},n.toBeetleValue=function(n){return'"'+n.replace(/"/g,'""')+'"'},new r}(),n.guid=function(){var r=function(){i.dataTypeBase.call(this,"guid");t.tryFreeze(this)},n;return t.inherit(r,i.dataTypeBase),n=r.prototype,n.defaultValue=function(){return"00000000-0000-0000-0000-000000000000"},n.isValid=function(n){return typeof n=="string"&&n.match(/^\{?[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}\}?$/i)},n.handle=function(n){return this.isValid(n)||u(this,n),n},n.autoValue=function(){return t.createGuid()},n.toODataValue=function(n){return"guid'"+n+"'"},n.toBeetleValue=function(n){return'"'+n+'"'},new r}(),n.date=function(){var n=function(){e.call(this,"date");t.tryFreeze(this)};return t.inherit(n,e),new n}(),n.dateTimeOffset=function(){var n=function(){e.call(this,"dateTimeOffset");t.tryFreeze(this)},i;return t.inherit(n,e),i=n.prototype,i.toODataValue=function(n){return n=this.handle(n),"datetimeoffset'"+s.getDateConverter().toISOString(n)+"'"},new n}(),n.time=function(){var r=function(){i.dataTypeBase.call(this,"time");t.tryFreeze(this)},n;return t.inherit(r,i.dataTypeBase),n=r.prototype,n.defaultValue=function(){return"00:00:00"},n.isValid=function(n){return/^([01]?\d|2[0-3])(((:[0-5]?\d){2}(\.\d{1,3}){0,1})|(:[0-5]?\d){0,2})?$/.test(n)},n.handle=function(n){return this.isValid(n)||u(this,n),n},n.autoValue=function(){return"00:00:00"},n.toODataValue=function(n){return"time'"+n+"'"},n.toBeetleValue=function(n){return'"'+n+'"'},new r}(),n.boolean=function(){var r=function(){i.dataTypeBase.call(this,"boolean");t.tryFreeze(this)},f;return t.inherit(r,i.dataTypeBase),f=r.prototype,f.defaultValue=function(){return!1},f.handle=function(t){if(!this.isValid(t)){if(n.String.isValid(t)){var i=t.toLowerCase();if(i=="true"||i=="1")return!0;if(i=="false"||i=="0")return!1}throw u(this,t);}return t},new r}(),n.int=function(){var f=0,r=function(){i.dataTypeBase.call(this,"int");t.tryFreeze(this)},n;return t.inherit(r,i.dataTypeBase),n=r.prototype,n.defaultValue=function(){return 0},n.isValid=function(n){return typeof n=="number"&&n%1==0},n.handle=function(n){return typeof n!="number"&&(n=Number(n)),this.isValid(n)||u(this,n),n},n.autoValue=function(){return--f},new r}(),n.number=function(){var f=0,r=function(){i.dataTypeBase.call(this,"number");t.tryFreeze(this)},n;return t.inherit(r,i.dataTypeBase),n=r.prototype,n.defaultValue=function(){return 0},n.isValid=function(n){return!isNaN(n)&&typeof n=="number"},n.handle=function(n){return typeof n!="number"&&(n=Number(n)),this.isValid(n)||u(this,n),n},n.autoValue=function(){return--f},new r}(),n.byte=function(){var f=0,r=function(){i.dataTypeBase.call(this,"byte");t.tryFreeze(this)},n;return t.inherit(r,i.dataTypeBase),n=r.prototype,n.defaultValue=function(){return 0},n.isValid=function(n){return typeof n=="number"&&n%1==0&&n>=0&&n<256},n.handle=function(n){return typeof n!="number"&&(n=Number(n)),this.isValid(n)||u(this,n),n},n.autoValue=function(){return--f},new r}(),n.binary=function(){var r=function(){i.dataTypeBase.call(this,"binary");t.tryFreeze(this)},n;return t.inherit(r,i.dataTypeBase),n=r.prototype,n.defaultValue=function(){return'"AAAAAAAAAAA="'},n.isValid=function(){return!0},n.handle=function(n){return n},n.toODataValue=function(n){return n=this.handle(n),"X'"+s.getDateConverter().toISOString(n)+"'"},n.toBeetleValue=function(n){return'"'+n+'"'},new r}(),n.enum=function(){function e(n,i){var e,r,u,o;if(f.isArray(n))return e=0,t.forEach(n,function(n){e|=n.value}),e;if(f.isTypeOf(n,"string")){if(r=n.split(", "),r.length==1)return i[n];for(u=0;u0?this.name+" ("+n.join(", ")+")":this.name},u.validate=function(n,t){return this.func(n,t)==!0?null:this.message},n.byCode=function(i,u,f,e,o,h){var c=s.getLocalizeFunction();c&&(f=e&&c(e)||f,o=h&&c(h)||o);u=u||[];u.push(f);u.push(o);switch(i){case"re":return n.required.apply(null,u);case"sl":return n.stringLength.apply(null,u);case"ma":return n.maxLength.apply(null,u);case"mi":return n.minLength.apply(null,u);case"ra":return n.range.apply(null,u);case"rx":return n.regularExpression.apply(null,u);case"ea":return n.emailAddress.apply(null,u);case"cc":return n.creditCard.apply(null,u);case"ur":return n.url.apply(null,u);case"ph":return n.phone.apply(null,u);case"po":return n.postalCode.apply(null,u);case"ti":return n.time.apply(null,u);case"co":return n.compare.apply(null,u);default:throw t.createError(r.unknownValidator,[i]);}},n.required=function(i,u,e){var o=function(n){return n==null?!1:f.isTypeOf(n,"string")&&!i&&n==""?!1:!0};return u=t.formatString(u||r.requiredError,e),new n("Required",o,u,{allowEmptyStrings:i})},n.stringLength=function(i,u,e,o){var s=function(n){return!i&&!u?!0:f.isNotEmptyString(n)?i&&n.lengthu?!1:!0:!1};return e=t.formatString(e||r.stringLengthError,o,i,u),new n("StringLength",s,e,{min:i,max:u})},n.maxLength=function(i,u,f){var e=function(n){return n==null?!0:i&&n.length>i?!1:!0};return u=t.formatString(u||r.maxLenError,f,i),new n("MaxLength",e,u,{length:i})},n.minLength=function(i,u,f){var e=function(n){return n==null?!1:i&&n.lengthu?!1:!0};return f=t.formatString(f||r.rangeError,e,i,u),new n("Range",o,f,{min:i,max:u})},n.regularExpression=function(n,t,r){return f.isTypeOf(n,"string")&&(n=new RegExp(n)),i("RegularExpression",n,t,r)},n.emailAddress=function(n,t){return i("EmailAddress",/^\w+@[a-zA-Z_]+?\.[a-zA-Z]{2,3}$/,n,t)},n.creditCard=function(n,t){return i("CreditCard",/^((4\d{3})|(5[1-5]\d{2})|(6011)|(3[68]\d{2})|(30[012345]\d))[ -]?(\d{4})[ -]?(\d{4})[ -]?(\d{4}|3[4,7]\d{13})$/,n,t)},n.url=function(n,t){return i("Url",/(http|ftp|https):\/\/[\w-]+(\.[\w-]+)+([\w.,@?^=%&:\/~+#-]*[\w@?^=%&\/~+#-])?/,n,t)},n.phone=function(n,t){return i("Phone",/^(?!.*-.*-.*-)(?=(?:\d{8,10}$)|(?:(?=.{9,11}$)[^-]*-[^-]*$)|(?:(?=.{10,12}$)[^-]*-[^-]*-[^-]*$) )[\d-]+$/,n,t)},n.postalCode=function(n,t){return i("PostalCode",/^\d{5}([\-]?\d{4})?$/,n,t)},n.time=function(n,t){return i("Time",/^([01]?\d|2[0-3])(((:[0-5]?\d){2}(\.\d{1,3}){0,1})|(:[0-5]?\d){0,2})?$/,n,t)},n.compare=function(i,u,f){var o=function(n,r){var u=t.getValue(r,i);return n==u},e=s.getLocalizeFunction(),h=e&&e(i)||i;return u=t.formatString(u||r.compareError,f,h),new n("Compare",o,u,{property:i})},n}(),entityContainer:function(){function r(n,t){var i=new u(n);return t.push(i),i}var u=function(){function u(n,t){var i=r(n,t);return i>-1?t[i]:null}function r(n,t){var f=t.length,r,u,i;if(f>0)for(r=0,u=f-1;r<=u;){if(i=Math.floor((r+u)/2),t[i].keyn){u=i-1;continue}return i}return-1}function f(n,t){for(var i=0;it[i].key;)i++;return i}var i=function(n){this.typeName=n.name;this.keyIndex=[];t.tryFreeze(this)},n=i.prototype;return n.toString=function(){return this.typeName+": "+this.keyIndex.length},n.push=function(n,t){var i=f(n,this.keyIndex);this.keyIndex.splice(i,0,{key:n,entity:t})},n.remove=function(n){var t=r(n,this.keyIndex);this.keyIndex.splice(t,1)},n.getEntity=function(n){var t=u(n,this.keyIndex);return t?t.entity:null},n.getRelations=function(n,t){var f=t.inverse,r,i,u;if(!f)return null;for(r=[],i=0;i0)&&n.$tracker.isChanged()})},n.count=function(){return this.allEntities.length},n.findEntitySet=function(n){return t.findInArray(this.entitySets,n.name,"typeName")},i}(),entityTracker:function(){function y(n,t,i,r){r.entity=n;n.$tracker=r;r.entityType=t;r.entityState=u.entityStates.Detached;r.observableProvider=i;r.forceUpdate=!1;r.originalValues=[];r.changedValues=[];r.manager=null;r.owners=[];r.validationErrors=[];r.validationErrorsChanged=new e.event("validationErrorsChanged",r);r.entityStateChanged=new e.event("entityStateChanged",r);r.propertyChanged=new e.event("propertyChanged",r);r.arrayChanged=new e.event("arrayChanged",r);t.hasMetadata&&(r.key=l(r))}function p(n,t,i){var r={propertyChange:w,arrayChange:b,dataPropertyChange:k,scalarNavigationPropertyChange:d,pluralNavigationPropertyChange:g,arraySet:nt};return i.observableProvider.toObservable(n,t,r)}function c(n,t){n.baseType&&c(n.baseType,t);n.initializer&&n.initializer.call(t,t)}function l(n,t,i){var e=n.entityType,o,r,u,f;if(e.keys.length==0)return null;for(o=[],r=0;r=0;p--)k=y[p],k.entity==n&&k.property==u&&y.splice(p,1);y.length==0&&a.$tracker.manager&&a.$tracker.manager.detachEntity(a);h.$tracker.owners.push({entity:n,property:u})}c.manager&&(d=s.autoFixScalar,t.forEach(u.relatedNavigationProperties,function(n){var t,i,r;if(n.isScalar===!0)if(t=c.foreignKey(n),t){if(i=c.getValue(n.name),i&&i.$tracker.key===t)return;r=null;c.manager&&d&&(r=c.manager.getEntityByKey(t,n.entityType));r?c.setValue(n.name,r):i&&c.setValue(n.name,new e.valueNotifyWrapper(null))}else c.setValue(n.name,null)}))}}function d(n,u,h,c){var y=n.$tracker,d=!1,l,w,p,b,a,k;if(f.isInstanceOf(c,e.valueNotifyWrapper)&&(d=!0,c=c.value),l=h(),l!=c)if(u.checkAssign(c),h(c),s.liveValidate===!0&&o(u.validate(n),y,u),y.propertyChanged.notify({entity:n,property:u,oldValue:l,newValue:c}),v(c,y.manager),u.isComplex){if(c==null)throw t.createError(r.complexCannotBeNull,[u.displayName],{entity:n,property:u});for(w=l.$tracker.owners,p=w.length-1;p>=0;p--)b=w[p],b.entity==n&&b.property==u&&w.splice(p,1);l.$tracker.owners.length==0&&l.$tracker.manager&&l.$tracker.manager.detachEntity(l);c.$tracker.owners.push({entity:n,property:u});i(n,u.name,c.$tracker.toRaw(),y)}else d||(u.triggerOwnerModify&&u.foreignKeys.length==0&&i(n,null,null,y),t.setForeignKeys(n,u,c)),a=u.inverse,a&&(a.isScalar?(l&&l.$tracker.setValue(a.name,null),c&&c.$tracker.setValue(a.name,n)):(l&&l.$tracker.getValue(a.name).remove(n),c&&(k=c.$tracker.getValue(a.name),t.findInArray(k,n)||k.push(n))))}function g(n,r,u,f,e){var c=n.$tracker,h;s.liveValidate===!0&&o(r.validate(n),c,r);r.triggerOwnerModify&&i(n,null,null,c);c.arrayChanged.notify({entity:n,property:r,items:u,removedItems:f,addedItems:e});h=r.inverse;h&&(f&&t.forEach(f,function(t){t.$tracker.getValue(h.name)==n&&t.$tracker.setValue(h.name,null)}),e&&t.forEach(e,function(t){v(t,c.manager);t.$tracker.setValue(h.name,n)}))}function nt(n,i,f,e){var l=s.getArraySetBehaviour(),h,o,c;if(l==u.arraySetBehaviour.NotAllowed)throw t.createError(r.settingArrayNotAllowed,{entity:n,property:e});if(h=[],o=t.filterArray(f,function(){return!0}),l==u.arraySetBehaviour.Replace&&t.forEach(i,function(n){t.findInArray(o,n)?t.removeFromArray(o,n):h.push(n)}),l==u.arraySetBehaviour.Append&&t.forEach(f,function(n){t.findInArray(i,n)&&t.removeFromArray(o,n)}),h.length>0)for(c=h.length-1;c>=0;c--)i.splice(t.indexOf(i,h[c]),1);o.length>0&&i.push.apply(i,o)}function tt(n){var i=n.$tracker;t.forEach(i.entityType.navigationProperties,function(r){var f,e,u;r.inverse&&(f=r.inverse,r.isScalar?(e=i.getValue(r.name),e&&t.setForeignKeys(e,f,n)):(u=i.getValue(r.name),u&&u.length>0&&t.forEach(u,function(i){t.setForeignKeys(i,f,n)})))})}function v(n,i){if(n&&i&&!n.$tracker.entityType.isComplexType&&!i.isInManager(n)){if(n.$tracker.manager)throw t.createError(r.entityAlreadyBeingTracked,null,{entity:n,manager:i});i.addEntity(n)}}function i(n,r,f,e){var o=e.entityState;o==u.entityStates.Unchanged&&(t.forEach(e.entityType.navigationProperties,function(n){var u=n.inverse,r;u&&u.triggerOwnerModify&&(r=e.getValue(n.name),r&&(n.isScalar?i(r,null,null,r.$tracker):t.forEach(r,function(n){i(n,null,null,n.$tracker)})))}),e.toModified());it(r,f,e.originalValues,e.changedValues)}function it(n,i,r,u){var f,e;n!=null&&(i==null||i.$tracker==null||i.$tracker.entityType.isComplexType)&&(f=t.findInArray(r,n,"p"),f||r.push({p:n,v:i}),e=t.findInArray(u,n,"p"),e||u.push({p:n,v:i}))}function o(n,i,r){var u=[],f=r?t.filterArray(i.validationErrors,function(n){return n.property===r}):t.filterArray(i.validationErrors,function(){return!0});t.forEach(f,function(r){t.findInArray(n,r.validator,"validator")?t.removeFromArray(n,r.validator,"validator"):(t.removeFromArray(i.validationErrors,r),u.push(r))});i.validationErrors=i.validationErrors.concat(n);(u.length>0||n.length>0)&&i.validationErrorsChanged.notify({errors:i.validationErrors,added:n,removed:u})}var h=function(n,t,i){delete n.$type;delete n.$id;y(n,t,i||s.getObservableProvider(),this);p(n,t,this);c(t,n)},n=h.prototype;return n.toString=function(){return"EntityTracker: "+this.entityType.shortName+", key: "+this.key},n.setManagerInfo=function(n){if(this.manager)throw t.createError(r.entityAlreadyBeingTracked,{otherManager:this.manager});t.assertPrm(n,"manager").isInstanceOf(e.entityManager).check();this.manager=n},n.isChanged=function(){return this.entityState===u.entityStates.Added||this.entityState===u.entityStates.Deleted||this.entityState===u.entityStates.Modified},n.toAdded=function(){if(this.entityState!=u.entityStates.Added){var n={entity:this.entity,oldState:this.entityState,newState:u.entityStates.Added,newChanged:!this.isChanged()};this.entityState=u.entityStates.Added;this.entityStateChanged.notify(n)}},n.toModified=function(){if(this.entityState!=u.entityStates.Modified){var n={entity:this.entity,oldState:this.entityState,newState:u.entityStates.Modified,newChanged:!this.isChanged()};this.entityState=u.entityStates.Modified;this.entityStateChanged.notify(n)}},n.toDeleted=function(){if(this.entityState!=u.entityStates.Deleted){var n={entity:this.entity,oldState:this.entityState,newState:u.entityStates.Deleted,newChanged:!this.isChanged()};this.entityState=u.entityStates.Deleted;this.entityStateChanged.notify(n)}},n.toUnchanged=function(){if(this.entityState!=u.entityStates.Unchanged){var n={entity:this.entity,oldState:this.entityState,newState:u.entityStates.Unchanged,newUnchanged:this.isChanged()};this.originalValues.length=0;this.changedValues.length=0;this.entityState=u.entityStates.Unchanged;this.entityStateChanged.notify(n)}},n.toDetached=function(){if(this.entityState!=u.entityStates.Detached){var n={entity:this.entity,oldState:this.entityState,newState:u.entityStates.Detached,newUnchanged:this.isChanged()};this.entityState=u.entityStates.Detached;this.entityStateChanged.notify(n)}},n.undoChanges=function(){var n=this;t.forEach(this.changedValues,function(t){n.setValue(t.p,t.v)});this.changedValues.length=0},n.acceptChanges=function(){this.changedValues.length=0},n.getValue=function(n){return this.observableProvider.getValue(this.entity,n)},n.setValue=function(n,t){this.observableProvider.setValue(this.entity,n,t)},n.foreignKey=function(n){var r=n.entityType,u,t,e,f,o,i;if(r.keys.length==0)return null;for(u=[],t=0;t2)throw t.createError(r.managerInvalidArgs,{entityManager:u});var o=n[0],s=n[1];if(f.isInstanceOf(o,i.dataServiceBase))u.dataService=o;else if(f.isTypeOf(o,"string"))u.dataService=s?new v.webApiService(o,s):new v.webApiService(o,!1);else throw t.createError(r.managerInvalidArgs,{entityManager:this});u.pendingChangeCount=0;u.entities=new e.entityContainer;u.validationErrors=[];u.entityStateChanged=new e.event("entityStateChanged",u);u.validationErrorsChanged=new e.event("validationErrorsChanged",u);u.hasChangesChanged=new e.event("hasChangesChanged",u);u.queryExecuting=new e.event("queryExecuting",u);u.queryExecuted=new e.event("queryExecuted",u);u.saving=new e.event("saving",u);u.saved=new e.event("saved",u)}function o(n,i,e,o,h,c,l){e||(e=u.mergeStrategy.Preserve);o&&o!==u.entityStates.Detached||(o=u.entityStates.Added);c==null&&(c=s.autoFixScalar);l==null&&(l=s.autoFixPlural);i=i||h.flatEntities(f.isArray(n)?n:[n]);var y=[],p=[],v=[],w=h.entities.count(),a=h;t.forEach(i,function(n){var f=n.$tracker;if(!f&&n.$type)f=a.toEntity(n,n.$type).$tracker;else if(f.entityType.isComplexType||h.isInManager(n))return;var o=f.entityType,s=f.key,i=null;if(w>0&&s&&(i=a.entities.getEntityByKey(s,o.floorType)),i){if(o.name!==i.$tracker.entityType.name)throw t.createError(r.sameKeyOnDifferentTypesError,[i.$tracker.entityType.shortName,o.shortName],{existingEntity:i,entity:n,manager:a});if(e===u.mergeStrategy.ThrowError)throw t.createError(r.sameKeyExists,{existingEntity:i,entity:n,manager:a});else e===u.mergeStrategy.Preserve?v.push({o:n,n:i}):(v.push({o:n,n:i}),p.push({o:i,n:n}))}else a.entities.push(n),n.$tracker.setManagerInfo(a),y.push(n)});t.forEach(y,function(n){d(n,c,l,a);lt(n,a);k(n,o);s.validateOnMerge===!0&&n.$tracker.validate()});t.forEach(p,function(n){ot(n.o,n.n);k(n.o,o)});t.forEach(v,function(i){var r=t.indexOf(n,i.o);r>=0&&(n[r]=i.n);st(i.o,i.n,c,l,a)})}function b(n,i){if(!i.isInManager(n))throw t.createError(r.entityNotBeingTracked,{entity:n,manager:i});}function k(n,i){if(i===u.entityStates.Unchanged)n.$tracker.toUnchanged();else if(i===u.entityStates.Modified)n.$tracker.toModified();else if(i===u.entityStates.Added)n.$tracker.toAdded();else throw t.createError(r.mergeStateError,[i],{entity:n,state:i});}function ot(n,i){var r=i.$tracker;t.forEach(r.entityType.dataProperties,function(t){n.$tracker.setValue(t.name,r.getValue(t.name))})}function d(n,i,r,u){if(i==!0||r==!0){var e=n.$tracker,o=e.entityType;t.forEach(o.navigationProperties,function(t){var f=e.getValue(t.name),o,h,s,c,l;if(t.isComplex){for(o=f.$tracker.owners,h=!1,s=0;s=0;u--)r=t[u],r&&r.$tracker&&r.$tracker.entityType.hasMetadata&&r.$tracker.manager!=i&&(f=i.getEntityByKey(r.$tracker.key,r.$tracker.entityType),f?t.splice(u,1,f):t.splice(u,1))}function st(n,i,r,u,f){var c=n.$tracker.entityType,h,s,e,o;t.forEach(c.navigationProperties,function(c){var y,p,l,a,v;c.isComplex||(h=n.$tracker,s=i.$tracker,e=h.getValue(c.name),o=s.getValue(c.name),c.isScalar?o||(r==!0?tt(i,c,null,f):r===!0&&c.inverse&&c.inverse.isScalar||u===!0&&c.inverse&&!c.inverse.isScalar||(y=h.foreignKey(c),p=s.foreignKey(c),y==p&&e!=null&&f.isInManager(e)&&(l=c.inverse,l?l.isScalar?e.$tracker.setValue(l.name,i):(a=e.$tracker.getValue(l.name),v=t.indexOf(a,n),v>=0&&a.splice(v,1,i)):s.setValue(c.name,e)))):u?it(i,c,o,f):r===!0&&c.inverse||t.forEach(e,function(n){f.isInManager(n)&&!t.findInArray(o,n)&&o.push(n)}))})}function tt(n,t,i,r){var f=n.$tracker,u=f.foreignKey(t);i?u!=i.$tracker.key&&setForeignKeys(n,t,i):u&&f.setValue(t.name,r.entities.getEntityByKey(u,t.entityType))}function it(n,i,r,u){var f=u.entities.getRelations(n,i);f&&t.forEach(f,function(n){t.findInArray(r,n)||r.push(n)})}function rt(n,i){var r=n.$tracker,u=r.entityType,f=i?new e.valueNotifyWrapper(null):null;u.hasMetadata&&t.forEach(u.navigationProperties,function(n){n.isScalar?r.setValue(n.name,f):r.getValue(n.name).splice(0)})}function ht(n,i,r){t.forEach(n,function(n){n.$tracker.entityState==u.entityStates.Deleted?(n.$tracker.toDetached(),ut(n,r),i.remove(n)):n.$tracker.toUnchanged()})}function ct(n,i,r){if(i.removed.length>0)for(var u=i.removed.length-1;u>=0;u--)r.validationErrors.splice(t.indexOf(r.validationErrors,i.removed[u]),1);i.added.length>0&&r.validationErrors.push.apply(r.validationErrors,i.added);(i.removed.length>0||i.added.length>0)&&r.validationErrorsChanged.notify({errors:r.validationErrors,added:i.added,removed:i.removed})}function lt(n,t){n.$tracker.entityStateChanged.subscribe(function(n){var i=t.pendingChangeCount;n.newChanged===!0?t.pendingChangeCount++:n.newUnchanged===!0&&t.pendingChangeCount--;t.entityStateChanged.notify(n);i==0&&t.pendingChangeCount>0?t.hasChangesChanged.notify({hasChanges:!0}):i>0&&t.pendingChangeCount==0&&t.hasChangesChanged.notify({hasChanges:!1})});n.$tracker.validationErrorsChanged.subscribe(function(i){ct(n,i,t)})}function ut(n,i){n.$tracker.entityStateChanged.unsubscribe(i.entityStateChanged.notify);n.$tracker.validationErrorsChanged.unsubscribe(i.validationErrorsChanged.notify);var r=t.filterArray(i.validationErrors,function(t){return t.entity==n});t.removeFromArray(i.validationErrors,n,"entity");i.validationErrorsChanged.notify({errors:i.validationErrors,removed:r,added:[]})}function at(n,t,i){var r={manager:n,query:t,options:i};return n.queryExecuting.notify(r),a.queryExecuting.notify(r),r}function ft(n,t,i,r){var u={manager:n,query:t,options:i,result:r};return n.queryExecuted.notify(u),a.queryExecuted.notify(u),u.result}function vt(n,t,i){var r={manager:n,changes:t,options:i};return n.saving.notify(r),a.saving.notify(r),r.options}function yt(n,t,i){var r={manager:n,changes:t,options:i};n.saved.notify(r);a.saved.notify(r)}function l(n,t,i,r){n&&n(r);t&&t.resolve(i,r)}function h(n,t,i,r,u){if(n&&n(r),t&&t.reject(i,r),r.manager=u,!n&&!t)throw new r;}var y=function(){et(arguments,this)},n=y.prototype;return n.toString=function(){return this.dataService.toString()+", "+r.pendingChanges+": "+this.pendingChangeCount+", "+r.validationErrors+": "+this.validationErrors.length},n.getEntityType=function(n){return this.dataService.getEntityType(n)},n.createQuery=function(n,t){return this.dataService.createQuery(n,t,this)},n.createEntityQuery=function(n,t){return this.dataService.createEntityQuery(n,t,this)},n.registerCtor=function(n,t,i){this.dataService.registerCtor(n,t,i)},n.createEntity=function(n,t){var i=this.dataService.createEntity(n,t),r=[i];return o(r,null,u.mergeStrategy.ThrowError,u.entityStates.Added,this),i},n.createDetachedEntity=function(n,t){return this.dataService.createEntity(n,t)},n.createRawEntity=function(n,t){return this.dataService.createRawEntity(n,t)},n.createEntityAsync=function(n,t,i,r,u){return p(n,t,i,r,u,this)},n.createRawEntityAsync=function(n,t,i,r,u){return i?i.makeObservable=!1:i={makeObservable:!1},p(n,t,i,r,u,this)},n.executeQuery=function(n,i,e,c){var k,a,p,d,g,b;n.options&&(i=t.combine(n.options,i));k=at(this,n,i);n=k.query;i=k.options;a=i&&i.async==!1?null:s.getPromiseProvider();p=null;a&&(p=a.deferred());var y=u.mergeStrategy.Preserve,v=u.executionStrategy.Server,w=null,nt,tt;if(f.isEnum(i,u.mergeStrategy)?(y=i,i={makeObservable:y!=u.mergeStrategy.NoTrackingRaw}):f.isEnum(i,u.executionStrategy)?v=i:i&&(i.merge&&(y=i.merge),i.execution&&(v=i.execution),i.autoFixScalar!=null&&(nt=i.autoFixScalar),i.autoFixPlural!=null&&(tt=i.autoFixPlural),i.makeObservable=y!=u.mergeStrategy.NoTrackingRaw),d=y==u.mergeStrategy.NoTracking||y==u.mergeStrategy.NoTrackingRaw,d&&v==u.executionStrategy.Both)throw t.createError(r.executionBothNotAllowedForNoTracking,{executionStrategy:v,mergeStrategy:y});return((v==u.executionStrategy.Local||v==u.executionStrategy.LocalIfEmptyServer)&&(w=this.executeQueryLocally(n)),g=null,v==u.executionStrategy.Local||v==u.executionStrategy.LocalIfEmptyServer&&w&&(w.length==null||w.length>0)?(w=ft(this,n,i,w),l(e,a,p,w)):(b=this,this.dataService.executeQuery(n,i,function(t,r,s,w){try{var k=!1;t&&(d||(f.isArray(t)||(t=[t],k=!0),o(t,r,y,u.entityStates.Unchanged,b,nt,tt),k&&(t=t[0])));v==u.executionStrategy.Both&&(t=b.executeQueryLocally(n),s!=null&&t.$inlineCountDiff!=null&&(s+=t.$inlineCountDiff));t&&(n.inlineCountEnabled&&s!=null&&(t.$inlineCount=s),w&&(t.$extra=w));t=ft(b,n,i,t);l(e,a,p,t);a||(g=t)}catch(it){h(c,a,p,it,b)}},function(t){t.query=n;h(c,a,p,t,b)})),a)?a.getPromise(p):g},n.executeQueryLocally=function(n,i){var c=n.entityType,l,e,h,a;if(c)if(e=this.entities.findEntitySet(c),e)l=e.getEntities();else return[];else throw t.createError(r.typeRequiredForLocalQueries);var f=[],o=[],s=!1;return t.forEach(l,function(n){n.$tracker.entityState==u.entityStates.Added?(s=!0,f.push(n)):n.$tracker.entityState==u.entityStates.Deleted?(s=!0,o.push(n)):(f.push(n),o.push(n))}),h=n.toFunction(),f=h(f,i),f.$inlineCount&&s&&(a=h(o,i),f.$inlineCountDiff=f.$inlineCount-a.$inlineCount),f},n.getEntityByKey=function(n,t){var i=f.isInstanceOf(t,c.entityType)?t:this.getEntityType(t,!0);return this.entities.getEntityByKey(n,i)},n.deleteEntity=function(n){var i,f,e;for(b(n,this),i=this,f=[],t.forEach(n.$tracker.entityType.navigationProperties,function(u){var e,o;if(u.cascadeDelete){if(u.inverse&&u.inverse.cascadeDelete)throw t.createError(r.twoEndCascadeDeleteNotAllowed,{entity:n,property:u});e=n.$tracker.getValue(u.name);e&&(u.isScalar?u.foreignKeys!=null&&u.foreignKeys.length>0?f.push(e):i.deleteEntity(e):(o=t.filterArray(e,function(){return!0}),t.forEach(o,function(n){i.deleteEntity(n)})))}}),n.$tracker.entityState===u.entityStates.Added?this.detachEntity(n):(rt(n,!0),n.$tracker.toDeleted()),e=0;e0)throw t.createError(r.cannotDetachComplexTypeWithOwners);b(n,this);rt(n,!0);ut(n,this);n.$tracker.toDetached();n.$tracker.manager=null;this.entities.remove(n)},n.createSavePackage=function(n,t){var f=t&&t.userData||null,i=t&&t.forceUpdate,r,u;return i==null&&(i=s.forceUpdate),r={userData:f,forceUpdate:i},u=this.exportEntities(n||this.getChanges(),t),r.entities=u,r},n.rejectChanges=function(n,i){var e=this,r;f.isArray(n)||(n=[n]);r=i===!0?this.flatEntities(n):n;t.forEach(r,function(n){var t=n.$tracker;t.entityState==u.entityStates.Added?e.detachEntity(n):t.entityState==u.entityStates.Modified&&(t.undoChanges(),t.toUnchanged())})},n.undoChanges=function(n,i){f.isArray(n)||(n=[n]);var r=i===!0?this.flatEntities(n):n;t.forEach(r,function(n){n.$tracker.undoChanges()})},n.acceptChanges=function(n,i){f.isArray(n)||(n=[n]);var r=i===!0?this.flatEntities(n):n;t.forEach(r,function(n){n.$tracker.acceptChanges()})},n.exportEntities=function(n,i){var e=[],r,f;return n=n||this.entities.getEntities(),r=i&&i.forceUpdate,r==null&&(r=s.forceUpdate),f=i&&i.minimizePackage,f==null&&(f=s.minimizePackage),t.forEach(n,function(n,i){var o=n.$tracker,a=o.entityType,h=o.entityState,c,s,l;if(r===!1&&(r=o.forceUpdate),c={},f===!0)if(h==u.entityStates.Modified)if(o.originalValues.length>0)s={},t.forEach(o.originalValues,function(t){var f,r=t.p.split("."),e,u,i;if(r.length>1){for(e=0;e0},n.getChanges=function(){return this.entities.getChanges()},n.saveChanges=function(n,i,e){var c=n&&n.entities||this.getChanges(),a,v,p,w,y;n=vt(this,c,n);a=n&&n.async==!1?null:s.getPromiseProvider();v=null;a&&(v=a.deferred());var b=n&&n.autoFixScalar,k=n&&n.autoFixPlural,d=null;return(f.isArray(c)||(c=[c]),c&&c.length>0?(p=[],s.validateOnSave===!0&&t.forEach(c,function(n){if(n.$tracker.entityState!=u.entityStates.Deleted){var t=n.$tracker.validate();t&&t.length>0&&p.push({entity:n,validationErrors:t})}}),p.length>0?(w=new t.createError(r.validationFailed,{entities:c,validationErrors:p}),w.entitiesInError=p,h(e,a,v,w,this)):(y=this,this.dataService.saveChanges(this.createSavePackage(c,n),n,function(r){try{r.GeneratedEntities!=null&&r.GeneratedEntities.length>0&&o(r.GeneratedEntities,null,u.mergeStrategy.Preserve,u.entityStates.Unchanged,y,b,k);r.GeneratedValues&&t.forEach(r.GeneratedValues,function(n){var r=c[n.Index],f,t=n.Property.split("."),i,s,e;if(t.length>1){for(i=0;i",function(n,t){return n()>t()},"gt")),i.push(new n("Lesser","<",function(n,t){return n()=",function(n,t){var i=n(),r=t();return i==r||i>r},"ge")),i.push(new n("LesserEqual","<=",function(n,t){var i=n(),r=t();return i==r||i>",function(n,t){return n()>>t()})),n.find=function(n){var r=t.filterArray(i,function(t){return t.code==n||t.oData==n||t.js==n});return r.length>0?r[0]:null},n}(),filterOps:new h.enums({Equals:{oData:"eq",code:"=="},NotEqual:{oData:"ne",code:"!="},Greater:{oData:"gt",code:">"},Lesser:{oData:"lt",code:"<"},GreaterEqual:{oData:"ge",code:">="},LesserEqual:{oData:"le",code:"<="},Contains:{oData:"substringof",code:"contains",isFunc:!0},StartsWith:{oData:"startswith",code:"startswith",isFunc:!0},EndsWith:{oData:"endswith",code:"endswith",isFunc:!0}}),mergeStrategy:new h.enums("Preserve","Overwrite","ThrowError","NoTracking","NoTrackingRaw"),executionStrategy:new h.enums("Server","Local","Both","LocalIfEmptyServer"),generationPattern:new h.enums("Identity","Computed"),arraySetBehaviour:new h.enums("NotAllowed","Replace","Append")}}(),a=function(){return{queryExecuting:new e.event("beetleQueryExecuting",this),queryExecuted:new e.event("beetleQueryExecuted",this),saving:new e.event("beetleSaving",this),saved:new e.event("beetleSaved",this),info:new e.event("beetleInfo",this),warning:new e.event("beetleWarning",this),error:new e.event("beetleError",this)}}(),s=function(){var s,o;s=n.ko?l.koObservableProviderInstance:n.Backbone?l.backboneObservableProviderInstance:l.propertyObservableProviderInstance;n.Q?o=l.qPromiseProviderInstance:n.jQuery&&(o=l.jQueryPromiseProviderInstance);var h=u.arraySetBehaviour.NotAllowed,c=l.defaultDateConverterInstance,a,e={};return e.autoFixScalar=!0,e.autoFixPlural=!1,e.validateOnMerge=!0,e.validateOnSave=!0,e.liveValidate=!0,e.handleUnmappedProperties=!0,e.isCaseSensitive=!1,e.ignoreWhiteSpaces=!1,e.forceUpdate=!1,e.workAsync=!0,e.ajaxTimeout=null,e.minimizePackage=!1,e.getObservableProvider=function(){return s},e.setObservableProvider=function(n){var h,e,o;if(f.isInstanceOf(n,i.observableProviderBase))s=n;else{if(f.isNotEmptyString(n))for(h=u.observableProviders.symbols(),e=0;e p.Name.",functionNotSupportedForOData:"OData does not support %0 function, please use Beetle Query Strings (like: manager.executeQuery(query, {useBeetleQueryStrings: true}))",instanceError:"%0 is not an instance of %1.",invalidArguments:"Invalid arguments.",invalidDefaultValue:"%0 is not a valid default value for %0.",invalidEnumValue:"Invalid enum value, %0 cannot be found in %1.",invalidExpression:"%0 can only have %1 type expressions.",invalidPropertyAlias:"Invalid property alias.",invalidStatement:"Invalid statement.",invalidValue:"Invalid value for %0 property.",managerInvalidArgs:"Invalid arguments. Valid args are: {DataService} or {Uri, [MetadataManager]} or {Uri, [metadataString (string)]} or {Uri, [doNotUseMetadata (bool)]}.",maxLenError:"%0 property length cannot exceed %1.",maxPrecisionError:"Value %0 exceeded maximum precision of %1.",mergeStateError:"Cannot merge entities with %0 state.",minLenError:"%0 property length must be greater than %1.",noMetadataEntityQuery:"Cannot create entity query when no metadata is available.",noMetadataRegisterCtor:"Cannot register constructor when no metadata is available.",noOpenGroup:"Could not find any open group.",notFoundInMetadata:"Could not find %0 in metadata.",notImplemented:"%0 %1 is not implemented.",notNullable:"Cannot set %0 with null, property is not nullable.",oDataNotSupportMultiTyped:"Multi-Typed queries cannot be used for OData services.",onlyManagerCreatedCanBeExecuted:"Only queries which are created from a manager can be directly executed.",onlyManagerCreatedCanAcceptEntityShortName:"Only queries which are created from a manager can accept entity type short name parameter.",pendingChanges:"Pending changes",pluralNeedsInverse:"To load plural relations, navigation property must have inverse.",projectionsMustHaveAlias:"All projected values must have a property name or alias.",propertyNotFound:"Could not find property: %0.",queryClosed:"Query is closed, expression cannot be added. Queries must be executed after some expressions like first, single, any, all etc..",rangeError:"%0 property value must be between %1 and %2.",requiredError:"%0 property is required.",sameKeyExists:"There is already an entity with same key in the manager.",sameKeyOnDifferentTypesError:"Two different types of entities cannot have same keys when they are from same inheritance root (%0, %1).",settingArrayNotAllowed:"Setting array property is not allowed, you may change this via beetle.settings.setArraySetBehaviour(behavior).",stringLengthError:"%0 property length must be between %1 and %2.",twoEndCascadeDeleteNotAllowed:"Two-end cascade deletes are not supported.",typeError:"%0 type is not %1.",typeMismatch:"%0 value type mismatch. expected type: %1, given type: %2, value: %3",typeRequiredForLocalQueries:'To execute queries locally, entity type must be provided (createQuery("Entities", "Entity") or createEntityQuery("Entity")).',unclosedQuote:'Unclosed quote in "%0".',unclosedToken:'Unclosed "%0".',unexpectedProperty:'Unexpected property "%0".',unexpectedToken:"Unexpected %0.",unknownDataType:"Unknown data type: %0.",unknownExpression:"Unknown expression.",unknownFunction:"Unknown function: %0.",unknownParameter:"Unknown parameter: %0.",unknownValidator:"Unknown validator type: %0.",unsoppertedState:"Unsupported entity state: %0.",validationErrors:"Validation errors",validationFailed:"Validation failed.",valueCannotBeNull:"Value cannot be null: %0.",operatorNotSupportedForOData:"Operator is not supported for OData: %0."}),n.beetleI18N}(),y=function(){return{version:"1.0",i18N:r,helper:t,assert:f,libs:h,baseTypes:i,impls:l,metadata:c,querying:o,core:e,services:v,enums:u,events:a,settings:s,MetadataManager:c.metadataManager,entityManager:e.entityManager,EntityManager:e.entityManager,WebApiService:v.webApiService,MvcService:v.mvcService,EntityStates:u.entityStates,FilterOps:u.filterOps,MergeStrategy:u.mergeStrategy}}();return t.tryFreeze(y),n.beetle=y,y})(window); +(function(n){"use strict";var t=function(){return{assertPrm:function(n,t){return new f(n,t)},combine:function(n,i){var r,e,u;if(n==i)return n;if(r={},n!=null)for(e in n)r[e]=n[e];if(i!=null)for(u in i){var s=r[u],o=i[u],h=f.isTypeOf(s,"object")&&f.isTypeOf(o,"object")?t.combine(s,o):o;r[u]=h}return r},objEquals:function(n,i){var u,e,r,o;if(n==i)return!0;if(n==null||i==null)return!1;if(f.isObject(n)&&f.isObject(i)){u=0;e=0;for(r in n){if(!i.hasOwnProperty(r)||!t.objEquals(t.getValue(n,r),t.getValue(i,r)))return!1;u++}for(o in i)e++;return u==e}return!1},equals:function(n,t,i,r){var u,f;return typeof n=="string"&&typeof t=="string"&&(u=r&&r.isCaseSensitive,u==null&&(u=s.isCaseSensitive),f=r&&r.ignoreWhiteSpaces,f==null&&(f=s.ignoreWhiteSpaces),u||(n=n.toLowerCase(),t=t.toLowerCase()),f&&(n=n.trim(),t=t.trim())),i?n===t:n==t},formatString:function(n){var t=arguments,i=RegExp("%([0-"+(arguments.length-1)+"])","g"),r=RegExp("{([0-"+(arguments.length-2)+"])}","g");return n.replace(i,function(n,i){return t[Number(i)+1]||""}).replace(r,function(n,i){return t[Number(i)+1]||""})},tryFreeze:function(n,t){var r,i;if(!n||!Object.freeze)return n;if(Object.freeze(n),t===!0)for(r in n)i=n[r],f.isArray(i)?this.tryFreezeArray(i,t):f.isObject(i)&&this.tryFreeze(i,t);return n},tryFreezeArray:function(n,t){if(n&&Object.freeze)for(var i=0;i=0;u--)n.splice(r[u],1);return r.length},mapArray:function(n,t){for(var r,u=[],i=0;i0&&(u.splice(0,0,n),n=t.formatString.apply(null,u)),o=new Error(n),e)for(s in e)o[s]=e[s];return a.error.notify(o),o},setForeignKeys:function(n,t,i){for(var u,f,e,o,r=0;r")return i.aliases.push(n.left.name),it=t.jsepToODataQuery(n.right,i),i.aliases.pop(),it;if(k=u.langOperators.find(n.operator).oData,!k)throw t.createError(r.operatorNotSupportedForOData,[n.operator],{expression:n});return"("+t.jsepToODataQuery(n.left,i)+" "+k+" "+t.jsepToODataQuery(n.right,i)+")"}if(n.type=="UnaryExpression")return n.operator+t.jsepToODataQuery(n.argument,i);if(n.type=="Identifier"){if(l=n.name,l[0]=="@"){if(a=undefined,v=l.slice(1),i.expVarContext&&i.expVarContext[v]!==undefined?a=i.expVarContext[v]:i.varContext&&(a=i.varContext[v]),a===undefined)throw t.createError(r.unknownParameter,[l],{expression:n,queryContext:i});return e.dataTypes.toODataValue(a)}return l}if(n.type=="Literal")return e.dataTypes.toODataValue(n.value);if(n.type=="MemberExpression")return n.object.name&&n.object.name!=i.currentAlias&&t.findInArray(i.aliases,n.object.name)?n.property.name:t.jsepToODataQuery(n.object,i)+"/"+n.property.name;if(n.type=="Compound"){for(f=[],h=0;h"&&(c=s[0].left.name,s=[s[0].right]),c&&(i.currentAlias=c,i.aliases.push(c)),p=0;p"?(i.aliases.push(n.left.name),tt=t.jsepToBeetleQuery(n.right,i),i.aliases.pop(),tt):(it=u.langOperators.find(n.operator).code,"("+t.jsepToBeetleQuery(n.left,i)+" "+it+" "+t.jsepToBeetleQuery(n.right,i)+")");if(n.type=="UnaryExpression")return n.operator+t.jsepToBeetleQuery(n.argument,i);if(n.type=="Identifier"){if(c=n.name,c[0]=="@"){if(l=undefined,v=c.slice(1),i.expVarContext&&i.expVarContext[v]!==undefined?l=i.expVarContext[v]:i.varContext&&(l=i.varContext[v]),l===undefined)throw t.createError(r.unknownParameter,[c],{expression:n,queryContext:i});return e.dataTypes.toBeetleValue(l)}return c}if(n.type=="Literal")return e.dataTypes.toBeetleValue(n.value);if(n.type=="MemberExpression")return n.object.name&&t.findInArray(i.aliases,n.object.name)?n.property.name:t.jsepToBeetleQuery(n.object,i)+"."+n.property.name;if(n.type=="Compound"){for(f=[],h=0;h"&&(a=s[0].left.name,s=[s[0].right]),a&&(i.currentAlias=a,i.aliases.push(a)),y=0;y")return i.currentAlias&&i.aliases.push(i.currentAlias),i.currentAlias={alias:n.left.name},nt=t.jsepToFunction(n.right,i)(f),i.currentAlias=i.aliases.pop(),nt;var ut=u.langOperators.find(n.operator),tt=i.varContext,ft=function(){return t.jsepToFunction(n.left,i)(f)},et=function(){return t.jsepToFunction(n.right,i)(f)};return ut.asFunc.call(tt,ft,et)}if(n.type=="UnaryExpression")return it=function(){return t.jsepToFunction(n.argument,i)(f)},rt=u.langOperators.find(n.operator),rt.asFunc.call(tt,it);if(n.type=="Identifier"){if(e=n.name,e=="null")return null;if(e=="true")return!0;if(e=="false")return!1;if(e[0]=="@"){if(v=undefined,y=e.slice(1),i.expVarContext&&i.expVarContext[y]!==undefined?v=i.expVarContext[y]:i.varContext&&(v=i.varContext[y]),v===undefined)throw t.createError(r.unknownParameter,[e],{expression:n,queryContext:i});return v}return i.currentAlias&&i.currentAlias.alias==e?f:(w=t.findInArray(i.aliases,e,"alias"),w)?w.value:(b=t.getValue(f,e),b===undefined)?window[e]:b}if(n.type=="Literal")return n.value;if(n.type=="MemberExpression"){if(n.object.name){if(i.currentAlias&&n.object.name==i.currentAlias.alias)return t.getValue(f,n.property.name);if(k=t.findInArray(i.aliases,n.object.name,"alias"),k)return t.getValue(k.value,n.property.name)}return t.getValue(t.jsepToFunction(n.object,i)(f),n.property.name)}if(n.type=="CallExpression"){var s=n.arguments,h=[],p=null;if(s.length==1&&s[0]&&s[0].type=="BinaryExpression"&&s[0].operator=="=>"&&(p=s[0].left.name,s=[s[0].right]),p&&(i.currentAlias&&i.aliases.push(i.currentAlias),i.currentAlias={alias:p}),t.forEach(s,function(n){n!=null&&h.push(t.jsepToFunction(n,i))}),l=n.callee.type=="MemberExpression"?n.callee.property.name:n.callee.name,c=o.queryFuncs.getFunc(l,!1),c)n.callee.type=="MemberExpression"&&h.splice(0,0,t.jsepToFunction(n.callee.object,i)),h.splice(0,0,f),d=c.impl.apply(i,h);else{if(l[0]=="@")if(a=l.slice(1),i.expVarContext&&i.expVarContext[a])c=i.expVarContext[a];else if(i.varContext&&i.varContext[a])c=i.varContext[a];else throw t.createError(r.unknownParameter,[a],{expression:n,queryContext:i});else if(g=n.callee.type=="MemberExpression"?t.jsepToFunction(n.callee.object,i)(f):window,g==null||(c=g[l])==null)throw t.createError(r.unknownFunction,[l]);h=t.mapArray(h,function(){return this(f)});d=c.apply(i,h)}return p&&(i.currentAlias=i.aliases.pop()),d}throw t.createError(r.unknownExpression,{expression:n});}},jsepToProjector:function(n,i){var h=[],u,e,o,s;for(f.isArray(n)||(n=[n]),u=0;uu+2&&n[u+1].name&&n[u+1].name.toLowerCase()=="as"){if(u=u+2,s=n[u],s.type!="Identifier")throw t.createError(r.invalidPropertyAlias,{expressions:n,aliasExpression:s});e=s.name}if(n.length>1&&!e)throw t.createError(r.projectionsMustHaveAlias,{expressions:n,expression:o});h.push({p:e,func:t.jsepToFunction(o,i)})}return function(t){for(var r,u,f={},i=0;i0)throw t.createError(this.errors.join("\n"),{name:this.name,value:this.value});},n.hasValue=function(n,i,u){return n==null?(i&&i.push(t.formatString(r.valueCannotBeNull,u)),!1):!0},n.isObject=function(n,i,u){return e.dataTypes.object.isValid(n)?!0:(i&&i.push(t.formatString(r.typeError,u,"object")),!1)},n.isFunction=function(n,i,u){return e.dataTypes.function.isValid(n)?!0:(i&&i.push(t.formatString(r.typeError,u,"function")),!1)},n.isNotEmptyString=function(i,u,f){return!n.isTypeOf(i,"string",u)||i===""?(u&&u.push(t.formatString(r.cannotBeEmptyString,f)),!1):!0},n.isTypeOf=function(i,u,f,o){if(!n.hasValue(i))return!1;var s=e.dataTypes.byName(u);return s.isValid(i)?!0:(f&&f.push(t.formatString(r.typeMismatch,o,u,s,i)),!1)},n.isArray=function(n,i,u){return e.dataTypes.array.isValid(n)?!0:(i&&i.push(t.formatString(r.typeError,u,"array")),!1)},n.isEnum=function(n,i,u){return i.contains(n)?!0:(u&&u.push(t.formatString(r.invalidEnumValue,i,n)),!1)},n.isInstanceOf=function(n,i,u,f){return n==null?(u&&u.push(r.cannotCheckInstanceOnNull),!1):(n instanceof i)?!0:(u&&u.push(t.formatString(r.instanceError,f,i)),!1)},n}(),h=function(){var i={};return i.enums=function(){function r(n,t){for(var i in t)n[i]=t[i];return n}function n(n,i){this.name=n;i&&r(this,i);t.tryFreeze(this)}n.prototype={};n.prototype.constructor=n;n.prototype.toString=function(){return this.name};t.tryFreeze(n.prototype);var i=function(i){var u=this,r;if(arguments.length===1&&i!==null&&typeof i=="object")for(r in i)u[r]=new n(r,i[r]);else t.forEach(arguments,function(t){u[t]=new n(t)});t.tryFreeze(this)};return i.prototype.symbols=function(){var t=[],i,n;for(i in this)(n=this[i],f.isFunction(n))||t.push(n);return t},i.prototype.contains=function(t){return(t instanceof n)?this[t.name]===t:!1},i}(),i.jsep=function(t){var a="Compound",k="Identifier",v="MemberExpression",h="Literal",d="ThisExpression",g="CallExpression",nt="UnaryExpression",tt="BinaryExpression",it="LogicalExpression",u=!0,f={"-":u,"!":u,"~":u,"+":u},r={"=>":0,"||":1,"&&":2,"|":3,"^":4,"&":5,"==":6,"!=":6,"===":6,"!==":6,"<":7,">":7,"<=":7,">=":7,"<<":8,">>":8,">>>":8,"+":9,"-":9,"*":10,"/":10,"%":10},s=function(n){var t=0,i;for(var r in n)(i=r.length)>t&&n.hasOwnProperty(r)&&(t=i);return t},c=s(f),e=s(r),y={"true":!0,"false":!1,"null":null},rt="this",p=function(n){return r[n]||0},w=function(n,t,i){var r=n==="||"||n==="&&"?it:tt;return{type:r,operator:n,left:t,right:i}},o=function(n){return n>=48&&n<=57},l=function(n){return n===36||n===95||n===64||n>=65&&n<=90||n>=97&&n<=122},ut=function(n){return n===36||n===95||n>=65&&n<=90||n>=97&&n<=122||n>=48&&n<=57},i=function(n){for(var t=0,ct=n.charAt,lt=n.charCodeAt,i=function(t){return ct.call(n,t)},u=function(t){return lt.call(n,t)},b=n.length,s=function(){for(var n=u(t);n===32||n===9;)n=u(++t)},ot=function(){s();for(var i=n.substr(t,e),u=i.length;u>0;){if(r.hasOwnProperty(i))return t+=u,i;i=i.substr(0,--u)}return!1},tt=function(){var r,i,o,n,s,f,e,u;if(f=it(),i=ot(),!i)return f;if(s={value:i,prec:p(i)},e=it(),!e)throw new Error("Expected expression after "+i+" at character "+t);for(n=[f,s,e];i=ot();){if(o=p(i),o===0)break;for(s={value:i,prec:o};n.length>2&&o<=n[n.length-2].prec;)e=n.pop(),i=n.pop().value,f=n.pop(),r=w(i,f,e),n.push(r);if(r=it(),!r)throw new Error("Expected expression after "+i+" at character "+t);n.push(s);n.push(r)}for(u=n.length-1,r=n[u];u>1;)r=w(n[u-1].value,n[u-2],r),u-=2;return r},it=function(){var i,r,e;if(s(),i=u(t),o(i)||i===46)return at();if(i===39||i===34)return vt();if(l(i))return pt();if(i===40)return wt();for(r=n.substr(t,c),e=r.length;e>0;){if(f.hasOwnProperty(r))return t+=e,{type:nt,operator:r,argument:it(),prefix:!0};r=r.substr(0,--e)}return!1},at=function(){for(var n="";o(u(t));)n+=i(t++);if(i(t)===".")for(n+=i(t++);o(u(t));)n+=i(t++);if(i(t)==="e"||i(t)==="E"){for(n+=i(t++),(i(t)==="+"||i(t)==="-")&&(n+=i(t++));o(u(t));)n+=i(t++);if(!o(u(t-1)))throw new Error("Expected exponent ("+n+i(t)+") at character "+t);}if(l(u(t)))throw new Error("Variable names cannot start with a number ("+n+i(t)+") at character "+t);return{type:h,value:parseFloat(n),raw:n}},vt=function(){for(var n="",u=i(t++),f=!1,r;t=0;t--)i=this.expressions[t],f.isInstanceOf(i,n)&&this.expressions.splice(t,1);return this},u}(),observableProviderBase:function(){var i=function(n){this.name=n||"observableProviderBase"},n=i.prototype;return n.toString=function(){return this.name},n.isObservable=function(){throw t.createError(r.notImplemented,[this.name,"isObservable"]);},n.toObservable=function(){throw t.createError(r.notImplemented,[this.name,"toObservable"]);},n.getValue=function(){throw t.createError(r.notImplemented,[this.name,"getValue"]);},n.setValue=function(){throw t.createError(r.notImplemented,[this.name,"setValue"]);},i}(),ajaxProviderBase:function(){var n=function(n){this.name=n||"ajaxProviderBase"},i=n.prototype;return i.toString=function(){return this.name},i.doAjax=function(){throw t.createError(r.notImplemented,[this.name,"doAjax"]);},n}(),serializationServiceBase:function(){var i=function(n){this.name=n||"serializationServiceBase"},n=i.prototype;return n.toString=function(){return this.name},n.serialize=function(){throw t.createError(r.notImplemented,[this.name,"serialize"]);},n.deserialize=function(){throw t.createError(r.notImplemented,[this.name,"deserialize"]);},i}(),promiseProviderBase:function(){var i=function(n){this.name=n||"promiseProviderBase"},n=i.prototype;return n.toString=function(){return this.name},n.deferred=function(){throw t.createError(r.notImplemented,[this.name,"deferred"]);},n.getPromise=function(){throw t.createError(r.notImplemented,[this.name,"getPromise"]);},n.resolve=function(){throw t.createError(r.notImplemented,[this.name,"resolve"]);},n.reject=function(){throw t.createError(r.notImplemented,[this.name,"reject"]);},i}(),dataServiceBase:function(){function a(n,e,o,s){var v,w;n==null?n="":n[n.length-1]!="/"&&(n+="/");s.uri=n;var h=null,a=null,y=null,p=null;if(o&&(h=o.ajaxProvider,a=o.serializationService,y=o.dataType,p=o.dataType),s.ajaxProvider=h&&f.isInstanceOf(h,i.ajaxProviderBase)?h:l.jQueryAjaxProviderInstance,s.serializationService=a&&f.isInstanceOf(a,i.SerializationService)?a:l.jsonSerializationServiceInstance,!(e===!0))if(e){if(f.isInstanceOf(e,c.metadataManager))s.metadataManager=e;else if(f.isObject(e))try{s.metadataManager=new c.metadataManager(e)}catch(b){throw t.createError(r.invalidArguments,{exception:b,args:arguments,dataService:this});}}else v=t.findInArray(u,n,"uri"),v?s.metadataManager=v.data:(w=s.fetchMetadata(),s.metadataManager=new c.metadataManager(w),u.push({uri:n,data:s.metadataManager}));s.dataType=y||"json";s.contentType=p||"application/json; charset=utf-8"}var u=[],h=function(n,t,i){a(n,t,i,this)},n=h.prototype;return n.toString=function(){return this.uri},n.getEntityType=function(n){return this.metadataManager?this.metadataManager.getEntityTypeByShortName(n):null},n.createQuery=function(n,i,r){return(t.assertPrm(n,"resourceName").isNotEmptyString().check(),i)?this.createEntityQuery(i,n,r):(this.metadataManager&&this.metadataManager.createQuery(n,null,r),new o.entityQuery(n,null,r))},n.createEntityQuery=function(n,i,u){if(t.assertPrm(n,"shortName").isNotEmptyString().check(),!this.metadataManager)throw t.createError(r.noMetadataEntityQuery,{dataService:this});return this.metadataManager.createQuery(i,n,u)},n.registerCtor=function(n,i,u){if(this.metadataManager==null)throw t.createError(r.noMetadataEntityQuery);this.metadataManager.registerCtor(n,i,u)},n.createEntity=function(n,i){if(!this.metadataManager)throw t.createError(r.noMetadataEntityQuery,{dataService:this});return this.metadataManager.createEntity(n,i)},n.createRawEntity=function(n,i){if(!this.metadataManager)throw t.createError(r.noMetadataEntityQuery,{dataService:this});return this.metadataManager.createRawEntity(n,i)},n.toEntity=function(n,t){var i=null;return this.metadataManager&&(i=this.metadataManager.getEntityType(t)),i||(i=new c.entityType(t)),e.entityTracker.toEntity(n,i,s.getObservableProvider())},n.toODataQueryParams=function(n,i){if(n.isMultiTyped===!0)throw t.createError(r.oDataNotSupportMultiTyped,{query:n});var u={varContext:i},f=[];return t.forEach(n.parameters,function(n){f.push({name:n.name,value:n.value==null?"":n.value})}),n.inlineCountEnabled===!0&&f.push({name:"$inlinecount",value:"allpages"}),t.forEach(n.expressions,function(n,t){u.expVarContext=n.varContext;var r,i;n.onlyBeetle===!0?(r="!e"+t,i=n.toBeetleQuery(u),i=n.name+":"+i):(r="$"+n.name,i=n.toODataQuery(u));f.push({name:r,value:i});u.expVarContext=undefined}),f},n.toBeetleQueryParams=function(n,i){var u={varContext:i},r=[];return t.forEach(n.parameters,function(n){r.push({name:n.name,value:n.value==null?"":n.value})}),n.inlineCountEnabled===!0&&r.push({name:"!e0",value:"inlinecount:allpages"}),t.forEach(n.expressions,function(n,t){u.expVarContext=n.varContext;r.push({name:"!e"+(t+1),value:n.name+":"+n.toBeetleQuery(u)});u.expVarContext=undefined}),r},n.fetchMetadata=function(){throw t.createError(r.notImplemented,["dataServiceBase","fetchMetadata"]);},n.createEntityAsync=function(){throw t.createError(r.notImplemented,["dataServiceBase","createEntityAsync"]);},n.executeQuery=function(){throw t.createError(r.notImplemented,["dataServiceBase","executeQuery"]);},n.executeQueryParams=function(){throw t.createError(r.notImplemented,["dataServiceBase","executeQueryParams"]);},n.saveChanges=function(){throw t.createError(r.notImplemented,["dataServiceBase","saveChanges"]);},h}()}}(),l=function(){return{defaultDateConverterInstance:function(){var n=function(){i.dateConverterBase.call(this,"Default Date Converter")},r;return t.inherit(n,i.dateConverterBase),r=n.prototype,r.parse=function(n){if(typeof n!="string"||n.length<10||!/^\d{4}[\/\-](0?[1-9]|1[012])[\/\-](0?[1-9]|[12][0-9]|3[01])$/.test(n.substr(0,10)))return null;/.\d{3}$/.test(n)&&(n+="Z");try{var t=Date.parse(n);return isNaN(t)?null:new Date(t)}catch(i){return null}},r.toISOString=function(n){return n.toISOString()},new n}(),koObservableProviderInstance:function(n){var u,r;return n&&(n.extenders.intercept=function(t,i){return n.computed({read:t,write:function(n){var r=i&&i.callback;r&&r(i.object,i.property,t,n)}})}),u=function(){i.observableProviderBase.call(this,"Knockout Observable Provider");t.tryFreeze(this)},t.inherit(u,i.observableProviderBase),r=u.prototype,r.isObservable=function(t,i){return n.isObservable(t[i])},r.toObservable=function(i,r,u){function s(t,r,u){var f=n.observable(r);return u?n.observable(r).extend({intercept:{object:i,property:t,callback:u}}):f}function c(t,r,u,f,o){var s;return u=u||[],f&&(u=new e.trackableArray(u,i,t,function(n,t,u,e,o){s.$fromKo!==!0&&i[r].valueHasMutated();s.$fromKo=!1;f(n,t,u,e,o)})),s=n.observableArray(u),s.subscribe(function(){s.$fromKo=!0},null,"beforeChange"),o&&(s.equalityComparer=function(n,r){o(i,t,n,r)}),s}var l=u&&u.propertyChange,a=u&&u.arrayChange,v=u&&u.dataPropertyChange,y=u&&u.scalarNavigationPropertyChange,p=u&&u.pluralNavigationPropertyChange,h=u&&u.arraySet,o=[];t.forEachProperty(i,function(n,t){o.push({p:n,v:t})});r&&r.hasMetadata&&(t.forEach(r.dataProperties,function(n){var r=i[n.name];r=r===undefined?null:n.handle(r);i[n.name]=s(n,r,v);t.removeFromArray(o,n.name,"p")}),t.forEach(r.navigationProperties,function(n){var r=i[n.name];r===undefined&&(r=null);i[n.name]=n.isScalar?s(n,r,y):c(n,n.name,r,p,h);t.removeFromArray(o,n.name,"p")}));t.forEach(o,function(n){var u=n.p,e=n.v;i[u]=f.isArray(e)?c(u,u,e,a,h):s(u,e,l);t.findInArray(r.properties,u)||r.properties.push(u)})},r.getValue=function(t,i){return n.utils.unwrapObservable(t[i])},r.setValue=function(n,t,i){n[t](i)},new u}(n.ko),propertyObservableProviderInstance:function(){var r=function(){i.observableProviderBase.call(this,"Property Observable Provider");t.tryFreeze(this)},n;return t.inherit(r,i.observableProviderBase),n=r.prototype,n.isObservable=function(n,t){return n.$fields!==undefined&&n.$fields[t]!==undefined},n.toObservable=function(n,i,r){function s(t,i,r){return Object.defineProperty(n,i,{get:function(){return n.$fields[i]},set:function(u){if(r){var f=w(n,i);r(n,t,f,u)}else n.$fields[i]=u},enumerable:!0,configurable:!0})}function c(t,i,r,f,o){return r=r||[],f&&(r=new e.trackableArray(r,n,t,f)),u[i]=r,Object.defineProperty(n,i,{get:function(){return n.$fields[i]},set:function(r){o?o(n,t,items,r):n.$fields[i]=r}})}function w(n,t){return function(){return arguments.length==0?n.$fields[t]:n.$fields[t]=arguments[0]}}var l=r&&r.propertyChange,a=r&&r.arrayChange,v=r&&r.dataPropertyChange,y=r&&r.scalarNavigationPropertyChange,p=r&&r.pluralNavigationPropertyChange,h=r&&r.arraySet,u={},o=[];return t.forEachProperty(n,function(n,t){o.push({p:n,v:t})}),i&&i.hasMetadata&&(t.forEach(i.dataProperties,function(i){var r=n[i.name];r=r===undefined?null:i.handle(r);delete n[i.name];s(i,i.name,v);t.removeFromArray(o,i.name,"p");u[i.name]=r}),t.forEach(i.navigationProperties,function(i){var r=n[i.name];r===undefined&&(r=null);delete n[i.name];i.isScalar?(s(i,i.name,y),u[i.name]=r):c(i,i.name,r,p,h);t.removeFromArray(o,i.name,"p")})),t.forEach(o,function(r){var e=r.p,o=r.v;delete n[e];f.isArray(o)?c(e,e,o,a,h):(s(e,e,l),u[e]=o);t.findInArray(i.properties,e)||i.properties.push(e)}),n.$fields=u,n},n.getValue=function(n,t){return n[t]},n.setValue=function(n,t,i){n[t]=i},new r}(),backboneObservableProviderInstance:function(){var r=function(){i.observableProviderBase.call("Backbone Observable Provider");t.tryFreeze(this)},n;return t.inherit(r,i.observableProviderBase),n=r.prototype,n.isObservable=function(n,t){return n.$fields!==undefined&&n.$fields[t]!==undefined},n.toObservable=function(n,i,r){function s(t,i,r){return Object.defineProperty(n,i,{get:function(){return n.$fields[i]},set:function(u){if(r){var f=w(n,i);r(n,t,f,u)}else n.$fields[i]=u},enumerable:!0,configurable:!0})}function c(t,i,r,f,o){return r=r||[],f&&(r=new e.trackableArray(r,n,t,f)),u[i]=r,Object.defineProperty(n,i,{get:function(){return n.$fields[i]},set:function(r){o?o(n,t,items,r):n.$fields[i]=r}})}function w(n,t){return function(){return arguments.length==0?n.$fields[t]:n.$fields[t]=arguments[0]}}var l=r&&r.propertyChange,a=r&&r.arrayChange,v=r&&r.dataPropertyChange,y=r&&r.scalarNavigationPropertyChange,p=r&&r.pluralNavigationPropertyChange,h=r&&r.arraySet,u={},o=[];return t.forEachProperty(n,function(n,t){o.push({p:n,v:t})}),i&&i.hasMetadata&&(t.forEach(i.dataProperties,function(i){var r=n[i.name];r=r===undefined?null:i.handle(r);delete n[i.name];s(i,i.name,v);t.removeFromArray(o,i.name,"p");u[i.name]=r}),t.forEach(i.navigationProperties,function(i){var r=n[i.name];r===undefined&&(r=null);delete n[i.name];i.isScalar?(s(i,i.name,y),u[i.name]=r):c(i,i.name,r,p,h);t.removeFromArray(o,i.name,"p")})),t.forEach(o,function(r){var e=r.p,o=r.v;delete n[e];f.isArray(o)?c(e,e,o,a,h):(s(e,e,l),u[e]=o);t.findInArray(i.properties,e)||i.properties.push(e)}),n.$fields=u,n},n.getValue=function(n,t){return n[t]},n.setValue=function(n,t,i){n[t]=i},new r}(),jQueryAjaxProviderInstance:function(n){function f(n){var i={status:n.status};if(n.responseText)try{i.detail=JSON.parse(n.responseText)}catch(r){}return t.createError(n.statusText,i)}var r=function(){i.ajaxProviderBase.call(this,"jQuery Ajax Provider");t.tryFreeze(this)},u;return t.inherit(r,i.ajaxProviderBase),u=r.prototype,u.doAjax=function(t,i,r,u,e,o,s,h,c,l){var a={url:t,accepts:{json:"application/json; odata=verbose",xml:"text/xml; application/xhtml+xml;application/xml",text:"text/xml"},type:i,dataType:r,contentType:u,traditional:!1,data:e,cache:!1,async:o,timeout:s,success:function(n,t,i){if(i.onreadystatechange=null,i.abort=null,n&&n.Error){var r=f(i);r.message=n.Error;l(r)}else c(n,i)},error:function(n){n.onreadystatechange=null;n.abort=null;l(f(n))}};return h!=null&&n.extend(a,h),n.ajax(a)},new r}(n.$),jsonSerializationServiceInstance:function(){var n=function(){i.serializationServiceBase.call(this,"Json Serializer");t.tryFreeze(this)},r;return t.inherit(n,i.serializationServiceBase),r=n.prototype,r.serialize=function(n){return JSON.stringify(n)},r.deserialize=function(n){return f.isTypeOf(n,"string")?JSON.parse(n):n},new n}(),qPromiseProviderInstance:function(n){var u=function(){i.promiseProviderBase.call(this,"Q Promise Provider");t.tryFreeze(this)},r;return t.inherit(u,i.promiseProviderBase),r=u.prototype,r.toString=function(){return this.name},r.deferred=function(){return n.defer()},r.getPromise=function(n){return n.promise},r.resolve=function(n,t){n.resolve(t)},r.reject=function(n,t){n.reject(t)},new u}(n.Q),jQueryPromiseProviderInstance:function(n){var u=function(){i.promiseProviderBase.call(this,"jQuery Promise Provider");t.tryFreeze(this)},r;return t.inherit(u,i.promiseProviderBase),r=u.prototype,r.toString=function(){return this.name},r.deferred=function(){return n.Deferred()},r.getPromise=function(n){return n.promise()},r.resolve=function(n,t){n.resolve(t)},r.reject=function(n,t){n.reject(t)},new u}(n.$)}}(),c=function(){return{dataProperty:function(){var i=function(n,t,i,r,u,f,o,s,h){this.owner=n;this.name=t;this.displayName=i||t;this.dataType=r;this.isNullable=u;this.isKeyPart=f;this.generationPattern=o;this.defaultValue=s;this.useForConcurrency=h;this.relatedNavigationProperties=[];this.validators=[];this.isEnum=r instanceof e.dataTypes.enum;this.isComplex=r.isComplex},n=i.prototype;return n.toString=function(){return this.displayName},n.isValid=function(n){return n==null?!this.isNullable:this.dataType.isValid(n,this)},n.handle=function(n){if(n==null){if(!this.isNullable)throw t.createError(r.notNullable,[this.displayName],{property:this});return null}if(n=this.dataType.handle(n,this),this.dataType==e.dataTypes.number&&this.precision&&n.toString().replace(/\./g,"").length>this.precision)throw t.createError(r.maxPrecisionError,[n,this.precision],{dataType:dataType,value:n});return this.dataType==e.dataTypes.number&&this.scale!=null&&(n=Number(n.toFixed(this.scale))),n},n.getDefaultValue=function(){return this.defaultValue?this.defaultValue:this.isNullable?null:this.generationPattern==u.generationPattern.Identity&&this.isKeyPart===!0?this.dataType.autoValue():this.dataType.defaultValue()},n.addValidation=function(n,i,r,u){t.assertPrm(n,"name").isNotEmptyString().check();t.assertPrm(i,"func").isFunction().check();this.validators.push(new e.validator(n,i,r,u))},n.validate=function(n){var u=[],i,r;return this.validators.length>0&&(i=this,r=t.getValue(n,i.name),t.forEach(this.validators,function(f){var e=f.validate(r,n);e&&u.push(t.createValidationError(n,r,i,e,f))})),u},i}(),navigationProperty:function(){var i=function(n,t,i,r,u,f,e,o){this.owner=n;this.name=t;this.displayName=i||t;this.entityTypeName=r;this.entityType=null;this.isScalar=u;this.isComplex=f===undefined;this.associationName=f;this.cascadeDelete=e===!0;this.foreignKeyNames=o||[];this.inverse=null;this.foreignKeys=[];this.validators=[];this.triggerOwnerModify=!1},n=i.prototype;return n.toString=function(){return this.displayName},n.checkAssign=function(n){if(n!=null){if(!n.$tracker)throw t.createError(r.assignErrorNotEntity,[this],{property:this,value:n});var i=n.$tracker.entityType;if(!this.entityType.isAssignableWith(i))throw t.createError(r.assignError,[this.name,i.shortName],{property:this,value:n});}},n.addValidation=function(n,i,r,u){t.assertPrm(n,"name").isNotEmptyString().check();t.assertPrm(i,"func").isFunction().check();this.validators.push(new e.validator(n,i,r,u))},n.validate=function(n){var u=[],i,r;return this.validators.length>0&&(i=this,r=t.getValue(n,i.name),t.forEach(this.validators,function(f){var e=f.validate(r);e&&u.push(t.createValidationError(n,r,i,e,f))})),u},i}(),entityType:function(){function u(n,t){n.baseType&&u(n.baseType,t);n.constructor&&n.constructor.call(t,t)}function a(n,i){for(var u,f,e,o=n.length,r=0;r0&&t.forEach(this.validators,function(r){var u=r.validate(n);u&&i.push(t.createValidationError(n,null,null,u,r))}),t.forEach(this.dataProperties,function(t){var r=t.validate(n);r&&(i=i.concat(r))}),t.forEach(this.navigationProperties,function(t){var r=t.validate(n);r&&(i=i.concat(r))}),i},i}(),metadataManager:function(){var i=function(n){this.types=[];this.enums={};this.name=null;this.displayName=null;n&&this.parseBeetleMetadata(n)},n=i.prototype;return n.toString=function(){return this.types.join(", ")},n.getEntityType=function(n,i){var u=t.findInArray(this.types,n,"name");if(!u&&i===!0)throw t.createError(r.notFoundInMetadata,[n],{metadataManager:this,typeName:n});return u},n.getEntityTypeByShortName=function(n,i){var u=t.findInArray(this.types,n,"shortName");if(!u&&i===!0)throw t.createError(r.notFoundInMetadata,[n],{metadataManager:this,typeShortName:n});return u},n.createQuery=function(n,i,r){if(i)return this.getEntityTypeByShortName(i,!0).createQuery(n,r);var u=t.filterArray(this.types,function(t){return t.setName==n});return u.length==1?u[0].createQuery(n,r):new o.entityQuery(n,null,r)},n.registerCtor=function(n,t,i){var r=this.getEntityTypeByShortName(n,!0);r.registerCtor(t,i)},n.createEntity=function(n,t){var i=this.getEntityTypeByShortName(n,!0);return i?i.createEntity(t):null},n.createRawEntity=function(n,t){var i=this.getEntityTypeByShortName(n,!0);return i?i.createRawEntity(t):null},n.parseBeetleMetadata=function(n){var o,a,s,r,v,y,p,w,l,i,f,b,k;if(this.types=[],this.enums={},this.name=n.n,this.displayName=t.getResourceValue(n.r,n.l||n.n),o=n.e,a={},o)for(s=0;s0&&a(n,t,r);i.currentGroup?i.currentGroup.filterItems.push(r):i.groups.push(r);i.currentGroup=r;i.openGroups.push(r)}function a(n,i,o){var h,p,v,a,y,c,w;if(n.length==3||n.length==4){if(h=n[1],f.isTypeOf(h,"string"))for(h=h.toLowerCase(),p=u.filterOps.symbols(),v=0;vs?i?-1:1:i?1:-1}}(c,s),o.push(l);return e=[],e.push.apply(e,n),e.sort(function(n,t){for(var r,i=0;i0},n}(),avgExp:function(){var n=function(n){i.expressionBase.call(this,"exec;avg",3,!0,!0);this.expStr=n;n&&(this.exp=h.jsep(n));this.isExecuter=!0},r;return t.inherit(n,i.expressionBase),r=n.prototype,r.toBeetleQuery=function(n){return this.exp?t.jsepToBeetleQuery(this.exp,n):""},r.clone=function(){return new n(this.expStr)},r.execute=function(t,i){return n.execute(t,this.exp,i)},n.execute=function(n,i,r){var u=i?t.jsepToFunction(i,r):function(n){return n};return o.queryFuncs.avg.impl(n,function(){return n},u)},n}(),maxExp:function(){var n=function(n){i.expressionBase.call(this,"exec;max",3,!0,!0);this.expStr=n;n&&(this.exp=h.jsep(n));this.isExecuter=!0},r;return t.inherit(n,i.expressionBase),r=n.prototype,r.toBeetleQuery=function(n){return this.exp?t.jsepToBeetleQuery(this.exp,n):""},r.clone=function(){return new n(this.expStr)},r.execute=function(t,i){return n.execute(t,this.exp,i)},n.execute=function(n,i,r){var u=i?t.jsepToFunction(i,r):function(n){return n};return o.queryFuncs.max.impl(n,function(){return n},u)},n}(),minExp:function(){var n=function(n){i.expressionBase.call(this,"exec;min",3,!0,!0);this.expStr=n;n&&(this.exp=h.jsep(n));this.isExecuter=!0},r;return t.inherit(n,i.expressionBase),r=n.prototype,r.toBeetleQuery=function(n){return this.exp?t.jsepToBeetleQuery(this.exp,n):""},r.clone=function(){return new n(this.expStr)},r.execute=function(t,i){return n.execute(t,this.exp,i)},n.execute=function(n,i,r){var u=i?t.jsepToFunction(i,r):function(n){return n};return o.queryFuncs.min.impl(n,function(){return n},u)},n}(),sumExp:function(){var n=function(n){i.expressionBase.call(this,"exec;sum",3,!0,!0);this.expStr=n;n&&(this.exp=h.jsep(n));this.isExecuter=!0},r;return t.inherit(n,i.expressionBase),r=n.prototype,r.toBeetleQuery=function(n){return this.exp?t.jsepToBeetleQuery(this.exp,n):""},r.clone=function(){return new n(this.expStr)},r.execute=function(t,i){return n.execute(t,this.exp,i)},n.execute=function(n,i,r){var u=i?t.jsepToFunction(i,r):function(n){return n};return o.queryFuncs.sum.impl(n,function(){return n},u)},n}(),countExp:function(){var n=function(n,t){i.expressionBase.call(this,"exec;count",3,!0,!0);this.expStr=n;n&&(this.exp=h.jsep(n));this.varContext=t;this.isExecuter=!0},r;return t.inherit(n,i.expressionBase),r=n.prototype,r.toBeetleQuery=function(n){return this.exp?t.jsepToBeetleQuery(this.exp,n):""},r.clone=function(){return new n(this.expStr,this.varContext)},r.execute=function(t,i){return n.execute(t,this.exp,i)},n.execute=function(n,i,r){return i&&(n=t.filterArray(n,t.jsepToFunction(i,r))),n.length},n}(),firstExp:function(){var n=function(n,t){i.expressionBase.call(this,"exec;first",3,!0,!1);this.expStr=n;n&&(this.exp=h.jsep(n));this.varContext=t;this.isExecuter=!0},u;return t.inherit(n,i.expressionBase),u=n.prototype,u.toBeetleQuery=function(n){return this.exp?t.jsepToBeetleQuery(this.exp,n):""},u.clone=function(){return new n(this.expStr,this.varContext)},u.execute=function(t,i){return n.execute(t,this.exp,i)},n.execute=function(n,i,u){if(i&&(n=t.filterArray(n,t.jsepToFunction(i,u))),n.length==0)throw t.createError(r.arrayEmpty,{array:n,expression:this});return n[0]},n}(),firstOrDefaultExp:function(){var n=function(n,t){i.expressionBase.call(this,"exec;firstOD",3,!0,!1);this.expStr=n;n&&(this.exp=h.jsep(n));this.varContext=t;this.isExecuter=!0},r;return t.inherit(n,i.expressionBase),r=n.prototype,r.toBeetleQuery=function(n){return this.exp?t.jsepToBeetleQuery(this.exp,n):""},r.clone=function(){return new n(this.expStr,this.varContext)},r.execute=function(t,i){return n.execute(t,this.exp,i)},n.execute=function(n,i,r){return i&&(n=t.filterArray(n,t.jsepToFunction(i,r))),n.length==0?null:n[0]},n}(),singleExp:function(){var n=function(n,t){i.expressionBase.call(this,"exec;single",3,!0,!1);this.expStr=n;n&&(this.exp=h.jsep(n));this.varContext=t;this.isExecuter=!0},u;return t.inherit(n,i.expressionBase),u=n.prototype,u.toBeetleQuery=function(n){return this.exp?t.jsepToBeetleQuery(this.exp,n):""},u.clone=function(){return new n(this.expStr,this.varContext)},u.execute=function(t,i){return n.execute(t,this.exp,i)},n.execute=function(n,i,u){if(i&&(n=t.filterArray(n,t.jsepToFunction(i,u))),n.length!=1)throw t.createError(r.arrayNotSingle,{array:n,expression:this});return n[0]},n}(),singleOrDefaultExp:function(){var n=function(n,t){i.expressionBase.call(this,"exec;singleOD",3,!0,!1);this.expStr=n;n&&(this.exp=h.jsep(n));this.varContext=t;this.isExecuter=!0},u;return t.inherit(n,i.expressionBase),u=n.prototype,u.toBeetleQuery=function(n){return this.exp?t.jsepToBeetleQuery(this.exp,n):""},u.clone=function(){return new n(this.expStr,this.varContext)},u.execute=function(t,i){return n.execute(t,this.exp,i)},n.execute=function(n,i,u){if(i&&(n=t.filterArray(n,t.jsepToFunction(i,u))),n.length>1)throw t.createError(r.arrayNotSingleOrEmpty,{array:n,expression:this});return n.length==0?null:n[0]},n}(),lastExp:function(){var n=function(n,t){i.expressionBase.call(this,"exec;last",3,!0,!1);this.expStr=n;n&&(this.exp=h.jsep(n));this.varContext=t;this.isExecuter=!0},u;return t.inherit(n,i.expressionBase),u=n.prototype,u.toBeetleQuery=function(n){return this.exp?t.jsepToBeetleQuery(this.exp,n):""},u.clone=function(){return new n(this.expStr,this.varContext)},u.execute=function(t,i){return n.execute(t,this.exp,i)},n.execute=function(n,i,u){if(i&&(n=t.filterArray(n,t.jsepToFunction(i,u))),n.length==0)throw t.createError(r.arrayEmpty,{array:n,expression:this});return n[n.length-1]},n}(),lastOrDefaultExp:function(){var n=function(n,t){i.expressionBase.call(this,"exec;lastOD",3,!0,!1);this.expStr=n;n&&(this.exp=h.jsep(n));this.varContext=t;this.isExecuter=!0},r;return t.inherit(n,i.expressionBase),r=n.prototype,r.toBeetleQuery=function(n){return this.exp?t.jsepToBeetleQuery(this.exp,n):""},r.clone=function(){return new n(this.expStr,this.varContext)},r.execute=function(t,i){return n.execute(t,this.exp,i)},n.execute=function(n,i,r){return i&&(n=t.filterArray(n,t.jsepToFunction(i,r))),n.length==0?null:n[n.length-1]},n}()}}(),queryFuncs:function(){var n={};return n.toupper=function(){var n=function(){i.queryFuncBase.call(this,"toupper","ToUpper",1)},r;return t.inherit(n,i.queryFuncBase),r=n.prototype,r.impl=function(n,t){return(t?t(n):n).toUpperCase()},new n}(),n.tolower=function(){var n=function(){i.queryFuncBase.call(this,"tolower","ToLower",1)},r;return t.inherit(n,i.queryFuncBase),r=n.prototype,r.impl=function(n,t){return(t?t(n):n).toLowerCase()},new n}(),n.substring=function(){var n=function(){i.queryFuncBase.call(this,"substring","Substring",3)},r;return t.inherit(n,i.queryFuncBase),r=n.prototype,r.impl=function(n,t,i,r){arguments.length==3?(r=i,i=t,t=n):t=t(n);i=i(n);r=r(n);var u=Number(i)+Number(r);return t&&t.substring(i,u)},new n}(),n.substringof=function(){var n=function(){i.queryFuncBase.call(this,"substringof","Contains",2)},r;return t.inherit(n,i.queryFuncBase),r=n.prototype,r.toBeetleFunction=function(n,t){return t=t?t+".":"",t+"Contains("+n+")"},r.impl=function(n,t,i){return i=i?i(n):n,i&&i.indexOf(t(n))>=0},new n}(),n.length=function(){var n=function(){i.queryFuncBase.call(this,"length","Length",1)},r;return t.inherit(n,i.queryFuncBase),r=n.prototype,r.toBeetleFunction=function(n){return n=n?n+".":"",n+"Length"},r.impl=function(n,t){return(t?t(n):n).length},new n}(),n.trim=function(){var n=function(){i.queryFuncBase.call(this,"trim","Trim",1)},r;return t.inherit(n,i.queryFuncBase),r=n.prototype,r.impl=function(n,t){return(t?t(n):n).trim()},new n}(),n.concat=function(){var n=function(){i.queryFuncBase.call(this,"concat","Concat",null)},r;return t.inherit(n,i.queryFuncBase),r=n.prototype,r.toBeetleFunction=function(){return"string.Concat("+Array.prototype.slice.call(arguments).join(", ")+")"},r.impl=function(n){for(var i=arguments[1](n).toString(),r=Array.prototype.slice.call(arguments,2),u=[],t=0;t0},new u}(),n.round=function(){var n=function(){i.queryFuncBase.call(this,"round","Math.Round",1)},r;return t.inherit(n,i.queryFuncBase),r=n.prototype,r.toBeetleFunction=function(n){return"Math.Round("+n+")"},r.impl=function(n,t){return Math.round(t?t(n):n)},new n}(),n.ceiling=function(){var n=function(){i.queryFuncBase.call(this,"ceiling","Math.Ceiling(%1)",1)},r;return t.inherit(n,i.queryFuncBase),r=n.prototype,r.toBeetleFunction=function(n){return"Math.Ceiling("+n+")"},r.impl=function(n,t){return Math.ceil(t?t(n):n)},new n}(),n.floor=function(){var n=function(){i.queryFuncBase.call(this,"floor","Math.Floor",1)},r;return t.inherit(n,i.queryFuncBase),r=n.prototype,r.toBeetleFunction=function(n){return"Math.Floor("+n+")"},r.impl=function(n,t){return Math.floor(t?t(n):n)},new n}(),n.second=function(){var n=function(){i.queryFuncBase.call(this,"second","Second",1)},r;return t.inherit(n,i.queryFuncBase),r=n.prototype,r.toBeetleFunction=function(n){return n=n?n+".":"",n+"Second"},r.impl=function(n,t){return t=e.dataTypes.date.handle(t?t(n):n),t.getSeconds()},new n}(),n.minute=function(){var n=function(){i.queryFuncBase.call(this,"minute","Minute",1)},r;return t.inherit(n,i.queryFuncBase),r=n.prototype,r.toBeetleFunction=function(n){return n=n?n+".":"",n+"Minute"},r.impl=function(n,t){return t=e.dataTypes.date.handle(t?t(n):n),t.getMinutes()},new n}(),n.hour=function(){var n=function(){i.queryFuncBase.call(this,"hour","Hour",1)},r;return t.inherit(n,i.queryFuncBase),r=n.prototype,r.toBeetleFunction=function(n){return n=n?n+".":"",n+"Hour"},r.impl=function(n,t){return t=e.dataTypes.date.handle(t?t(n):n),t.getHours()},new n}(),n.day=function(){var n=function(){i.queryFuncBase.call(this,"day","Day",1)},r;return t.inherit(n,i.queryFuncBase),r=n.prototype,r.toBeetleFunction=function(n){return n=n?n+".":"",n+"Day"},r.impl=function(n,t){return t=e.dataTypes.date.handle(t?t(n):n),t.getDate()},new n}(),n.month=function(){var n=function(){i.queryFuncBase.call(this,"month","Month",1)},r;return t.inherit(n,i.queryFuncBase),r=n.prototype,r.toBeetleFunction=function(n){return n=n?n+".":"",n+"Month"},r.impl=function(n,t){return t=e.dataTypes.date.handle(t?t(n):n),t.getMonth()+1},new n}(),n.year=function(){var n=function(){i.queryFuncBase.call(this,"year","Year",1)},r;return t.inherit(n,i.queryFuncBase),r=n.prototype,r.toBeetleFunction=function(n){return n=n?n+".":"",n+"Year"},r.impl=function(n,t){return t=e.dataTypes.date.handle(t?t(n):n),t.getFullYear()},new n}(),n.max=function(){var n=function(){i.queryFuncBase.call(this,"max","Max",2)},u;return t.inherit(n,i.queryFuncBase),u=n.prototype,u.toODataFunction=function(){throw t.createError(r.functionNotSupportedForOData,["Max"]);},u.impl=function(n,t,i){var u,r,f;if(arguments.length==1?t=n:arguments.length==2?(i=t,t=n):t=t(n),t.length==0)return null;for(u=i?i(t[0]):t[0],r=1;ru&&(u=f);return u},new n}(),n.min=function(){var n=function(){i.queryFuncBase.call(this,"min","Min",2)},u;return t.inherit(n,i.queryFuncBase),u=n.prototype,u.toODataFunction=function(){throw t.createError(r.functionNotSupportedForOData,["Min"]);},u.impl=function(n,t,i){var u,r,f;if(arguments.length==1?t=n:arguments.length==2?(i=t,t=n):t=t(n),t.length==0)return null;for(u=i?i(t[0]):t[0],r=1;r0;for(r=0;r2&&(i=Array.prototype.slice.call(arguments).slice(2)),u=this.slice(n,n+t),this.changing.notify({added:i,removed:u}),i&&r(i,this),f=Array.prototype.splice.apply(this,arguments),this.after(this.object,this.property,this,u,i),this.changed.notify({added:i,removed:u}),f},n.remove=function(){var n=[],i=this;return this.changing.notify({added:[],removed:arguments}),t.forEach(arguments,function(r){var u=t.indexOf(i,r);u>=0&&(Array.prototype.splice.call(i,u,1),n.push(r))}),this.after(this.object,this.property,this,n,null),this.changed.notify({added:[],removed:arguments}),n},n.load=function(n,t,i,r,u){return this.entity.$tracker.loadNavigationProperty(this.propertyName,n,t,i,r,u)},i}(),event:function(){var i=function(n,t){this.name=n;this.subscribers=[];this.publisher=t},n=i.prototype;return n.toString=function(){return this.name},n.subscribe=function(n){t.findInArray(this.subscribers,n)||this.subscribers.push(n)},n.unsubscribe=function(n){t.removeFromArray(this.subscribers,n)},n.notify=function(){var n=arguments;t.forEach(this.subscribers,function(t){t.apply(t,n)})},i}(),dataTypes:function(){function u(n,i){throw t.createError(r.assignError,[n.name,i],{dataType:n,value:i});}var e=function(){var r=function(n){i.dataTypeBase.call(this,"dateBase");this.name=n},n;return t.inherit(r,i.dataTypeBase),n=r.prototype,n.defaultValue=function(){return new Date(-6847812e6)},n.isValid=function(n){return Object.prototype.toString.call(n)==="[object Date]"},n.handle=function(n){if(!this.isValid(n)){var t=n;n=this.tryParse(t);n||u(this,t)}return n},n.autoValue=function(){return new Date},n.getRawValue=function(n){return n==null?null:s.getDateConverter().toISOString(n)},n.tryParse=function(n){return s.getDateConverter().parse(n)},n.toODataValue=function(n){return n=this.handle(n),"datetime'"+s.getDateConverter().toISOString(n)+"'"},n.toBeetleValue=function(n){return n=this.handle(n),'"'+s.getDateConverter().toISOString(n)+'"'},r}(),n={};return n.object=function(){var n=function(){i.dataTypeBase.call(this,"object");t.tryFreeze(this)};return t.inherit(n,i.dataTypeBase),new n}(),n.array=function(){var u=function(){i.dataTypeBase.call(this,"array");t.tryFreeze(this)},n;return t.inherit(u,i.dataTypeBase),n=u.prototype,n.isValid=function(n){return n instanceof Array},n.defaultValue=function(){return[]},n.handle=function(n){return this.isValid(n)||(n=n.split(",")),n},n.autoValue=function(){throw t.createError(r.notImplemented,[this.name,"defaultValue"]);},n.toODataValue=function(n){return n},n.toBeetleValue=function(n){return n},new u}(),n.function=function(){var n=function(){i.dataTypeBase.call(this,"function");t.tryFreeze(this)};return t.inherit(n,i.dataTypeBase),new n}(),n.string=function(){var u=0,r=function(){i.dataTypeBase.call(this,"string");t.tryFreeze(this)},n;return t.inherit(r,i.dataTypeBase),n=r.prototype,n.defaultValue=function(){return""},n.handle=function(n){return this.isValid(n)||(n=n.toString()),n},n.autoValue=function(){return"key_"+--u},n.toODataValue=function(n){return"'"+n.replace(/'/g,"''")+"'"},n.toBeetleValue=function(n){return'"'+n.replace(/"/g,'""')+'"'},new r}(),n.guid=function(){var r=function(){i.dataTypeBase.call(this,"guid");t.tryFreeze(this)},n;return t.inherit(r,i.dataTypeBase),n=r.prototype,n.defaultValue=function(){return"00000000-0000-0000-0000-000000000000"},n.isValid=function(n){return typeof n=="string"&&n.match(/^\{?[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}\}?$/i)},n.handle=function(n){return this.isValid(n)||u(this,n),n},n.autoValue=function(){return t.createGuid()},n.toODataValue=function(n){return"guid'"+n+"'"},n.toBeetleValue=function(n){return'"'+n+'"'},new r}(),n.date=function(){var n=function(){e.call(this,"date");t.tryFreeze(this)};return t.inherit(n,e),new n}(),n.dateTimeOffset=function(){var n=function(){e.call(this,"dateTimeOffset");t.tryFreeze(this)},i;return t.inherit(n,e),i=n.prototype,i.toODataValue=function(n){return n=this.handle(n),"datetimeoffset'"+s.getDateConverter().toISOString(n)+"'"},new n}(),n.time=function(){var r=function(){i.dataTypeBase.call(this,"time");t.tryFreeze(this)},n;return t.inherit(r,i.dataTypeBase),n=r.prototype,n.defaultValue=function(){return"00:00:00"},n.isValid=function(n){return/^([01]?\d|2[0-3])(((:[0-5]?\d){2}(\.\d{1,3}){0,1})|(:[0-5]?\d){0,2})?$/.test(n)},n.handle=function(n){return this.isValid(n)||u(this,n),n},n.autoValue=function(){return"00:00:00"},n.toODataValue=function(n){return"time'"+n+"'"},n.toBeetleValue=function(n){return'"'+n+'"'},new r}(),n.boolean=function(){var r=function(){i.dataTypeBase.call(this,"boolean");t.tryFreeze(this)},f;return t.inherit(r,i.dataTypeBase),f=r.prototype,f.defaultValue=function(){return!1},f.handle=function(t){if(!this.isValid(t)){if(n.String.isValid(t)){var i=t.toLowerCase();if(i=="true"||i=="1")return!0;if(i=="false"||i=="0")return!1}throw u(this,t);}return t},new r}(),n.int=function(){var f=0,r=function(){i.dataTypeBase.call(this,"int");t.tryFreeze(this)},n;return t.inherit(r,i.dataTypeBase),n=r.prototype,n.defaultValue=function(){return 0},n.isValid=function(n){return typeof n=="number"&&n%1==0},n.handle=function(n){return typeof n!="number"&&(n=Number(n)),this.isValid(n)||u(this,n),n},n.autoValue=function(){return--f},new r}(),n.number=function(){var f=0,r=function(){i.dataTypeBase.call(this,"number");t.tryFreeze(this)},n;return t.inherit(r,i.dataTypeBase),n=r.prototype,n.defaultValue=function(){return 0},n.isValid=function(n){return!isNaN(n)&&typeof n=="number"},n.handle=function(n){return typeof n!="number"&&(n=Number(n)),this.isValid(n)||u(this,n),n},n.autoValue=function(){return--f},new r}(),n.byte=function(){var f=0,r=function(){i.dataTypeBase.call(this,"byte");t.tryFreeze(this)},n;return t.inherit(r,i.dataTypeBase),n=r.prototype,n.defaultValue=function(){return 0},n.isValid=function(n){return typeof n=="number"&&n%1==0&&n>=0&&n<256},n.handle=function(n){return typeof n!="number"&&(n=Number(n)),this.isValid(n)||u(this,n),n},n.autoValue=function(){return--f},new r}(),n.binary=function(){var r=function(){i.dataTypeBase.call(this,"binary");t.tryFreeze(this)},n;return t.inherit(r,i.dataTypeBase),n=r.prototype,n.defaultValue=function(){return'"AAAAAAAAAAA="'},n.isValid=function(){return!0},n.handle=function(n){return n},n.toODataValue=function(n){return n=this.handle(n),"X'"+s.getDateConverter().toISOString(n)+"'"},n.toBeetleValue=function(n){return'"'+n+'"'},new r}(),n.enum=function(){function e(n,i){var e,r,u,o;if(f.isArray(n))return e=0,t.forEach(n,function(n){e|=n.value}),e;if(f.isTypeOf(n,"string")){if(r=n.split(", "),r.length==1)return i[n];for(u=0;u0?this.name+" ("+n.join(", ")+")":this.name},u.validate=function(n,t){return this.func(n,t)==!0?null:this.message},n.byCode=function(i,u,f,e,o,h){var c=s.getLocalizeFunction();c&&(f=e&&c(e)||f,o=h&&c(h)||o);u=u||[];u.push(f);u.push(o);switch(i){case"re":return n.required.apply(null,u);case"sl":return n.stringLength.apply(null,u);case"ma":return n.maxLength.apply(null,u);case"mi":return n.minLength.apply(null,u);case"ra":return n.range.apply(null,u);case"rx":return n.regularExpression.apply(null,u);case"ea":return n.emailAddress.apply(null,u);case"cc":return n.creditCard.apply(null,u);case"ur":return n.url.apply(null,u);case"ph":return n.phone.apply(null,u);case"po":return n.postalCode.apply(null,u);case"ti":return n.time.apply(null,u);case"co":return n.compare.apply(null,u);default:throw t.createError(r.unknownValidator,[i]);}},n.required=function(i,u,e){var o=function(n){return n==null?!1:f.isTypeOf(n,"string")&&!i&&n==""?!1:!0};return u=t.formatString(u||r.requiredError,e),new n("Required",o,u,{allowEmptyStrings:i})},n.stringLength=function(i,u,e,o){var s=function(n){return!i&&!u?!0:f.isNotEmptyString(n)?i&&n.lengthu?!1:!0:!1};return e=t.formatString(e||r.stringLengthError,o,i,u),new n("StringLength",s,e,{min:i,max:u})},n.maxLength=function(i,u,f){var e=function(n){return n==null?!0:i&&n.length>i?!1:!0};return u=t.formatString(u||r.maxLenError,f,i),new n("MaxLength",e,u,{length:i})},n.minLength=function(i,u,f){var e=function(n){return n==null?!1:i&&n.lengthu?!1:!0};return f=t.formatString(f||r.rangeError,e,i,u),new n("Range",o,f,{min:i,max:u})},n.regularExpression=function(n,t,r){return f.isTypeOf(n,"string")&&(n=new RegExp(n)),i("RegularExpression",n,t,r)},n.emailAddress=function(n,t){return i("EmailAddress",/^\w+@[a-zA-Z_]+?\.[a-zA-Z]{2,3}$/,n,t)},n.creditCard=function(n,t){return i("CreditCard",/^((4\d{3})|(5[1-5]\d{2})|(6011)|(3[68]\d{2})|(30[012345]\d))[ -]?(\d{4})[ -]?(\d{4})[ -]?(\d{4}|3[4,7]\d{13})$/,n,t)},n.url=function(n,t){return i("Url",/(http|ftp|https):\/\/[\w-]+(\.[\w-]+)+([\w.,@?^=%&:\/~+#-]*[\w@?^=%&\/~+#-])?/,n,t)},n.phone=function(n,t){return i("Phone",/^(?!.*-.*-.*-)(?=(?:\d{8,10}$)|(?:(?=.{9,11}$)[^-]*-[^-]*$)|(?:(?=.{10,12}$)[^-]*-[^-]*-[^-]*$) )[\d-]+$/,n,t)},n.postalCode=function(n,t){return i("PostalCode",/^\d{5}([\-]?\d{4})?$/,n,t)},n.time=function(n,t){return i("Time",/^([01]?\d|2[0-3])(((:[0-5]?\d){2}(\.\d{1,3}){0,1})|(:[0-5]?\d){0,2})?$/,n,t)},n.compare=function(i,u,f){var o=function(n,r){var u=t.getValue(r,i);return n==u},e=s.getLocalizeFunction(),h=e&&e(i)||i;return u=t.formatString(u||r.compareError,f,h),new n("Compare",o,u,{property:i})},n}(),entityContainer:function(){function r(n,t){var i=new u(n);return t.push(i),i}var u=function(){function u(n,t){var i=r(n,t);return i>-1?t[i]:null}function r(n,t){var f=t.length,r,u,i;if(f>0)for(r=0,u=f-1;r<=u;){if(i=Math.floor((r+u)/2),t[i].keyn){u=i-1;continue}return i}return-1}function f(n,t){for(var i=0;it[i].key;)i++;return i}var i=function(n){this.typeName=n.name;this.keyIndex=[];t.tryFreeze(this)},n=i.prototype;return n.toString=function(){return this.typeName+": "+this.keyIndex.length},n.push=function(n,t){var i=f(n,this.keyIndex);this.keyIndex.splice(i,0,{key:n,entity:t})},n.remove=function(n){var t=r(n,this.keyIndex);this.keyIndex.splice(t,1)},n.getEntity=function(n){var t=u(n,this.keyIndex);return t?t.entity:null},n.getRelations=function(n,t){var f=t.inverse,r,i,u;if(!f)return null;for(r=[],i=0;i0)&&n.$tracker.isChanged()})},n.count=function(){return this.allEntities.length},n.findEntitySet=function(n){return t.findInArray(this.entitySets,n.name,"typeName")},i}(),entityTracker:function(){function y(n,t,i,r){r.entity=n;n.$tracker=r;r.entityType=t;r.entityState=u.entityStates.Detached;r.observableProvider=i;r.forceUpdate=!1;r.originalValues=[];r.changedValues=[];r.manager=null;r.owners=[];r.validationErrors=[];r.validationErrorsChanged=new e.event("validationErrorsChanged",r);r.entityStateChanged=new e.event("entityStateChanged",r);r.propertyChanged=new e.event("propertyChanged",r);r.arrayChanged=new e.event("arrayChanged",r);t.hasMetadata&&(r.key=l(r))}function p(n,t,i){var r={propertyChange:w,arrayChange:b,dataPropertyChange:k,scalarNavigationPropertyChange:d,pluralNavigationPropertyChange:g,arraySet:nt};return i.observableProvider.toObservable(n,t,r)}function c(n,t){n.baseType&&c(n.baseType,t);n.initializer&&n.initializer.call(t,t)}function l(n,t,i){var e=n.entityType,o,r,u,f;if(e.keys.length==0)return null;for(o=[],r=0;r=0;p--)k=y[p],k.entity==n&&k.property==u&&y.splice(p,1);y.length==0&&a.$tracker.manager&&a.$tracker.manager.detachEntity(a);h.$tracker.owners.push({entity:n,property:u})}c.manager&&(d=s.autoFixScalar,t.forEach(u.relatedNavigationProperties,function(n){var t,i,r;if(n.isScalar===!0)if(t=c.foreignKey(n),t){if(i=c.getValue(n.name),i&&i.$tracker.key===t)return;r=null;c.manager&&d&&(r=c.manager.getEntityByKey(t,n.entityType));r?c.setValue(n.name,r):i&&c.setValue(n.name,new e.valueNotifyWrapper(null))}else c.setValue(n.name,null)}))}}function d(n,u,h,c){var y=n.$tracker,d=!1,l,w,p,b,a,k;if(f.isInstanceOf(c,e.valueNotifyWrapper)&&(d=!0,c=c.value),l=h(),l!=c)if(u.checkAssign(c),h(c),s.liveValidate===!0&&o(u.validate(n),y,u),y.propertyChanged.notify({entity:n,property:u,oldValue:l,newValue:c}),v(c,y.manager),u.isComplex){if(c==null)throw t.createError(r.complexCannotBeNull,[u.displayName],{entity:n,property:u});for(w=l.$tracker.owners,p=w.length-1;p>=0;p--)b=w[p],b.entity==n&&b.property==u&&w.splice(p,1);l.$tracker.owners.length==0&&l.$tracker.manager&&l.$tracker.manager.detachEntity(l);c.$tracker.owners.push({entity:n,property:u});i(n,u.name,c.$tracker.toRaw(),y)}else d||(u.triggerOwnerModify&&u.foreignKeys.length==0&&i(n,null,null,y),t.setForeignKeys(n,u,c)),a=u.inverse,a&&(a.isScalar?(l&&l.$tracker.setValue(a.name,null),c&&c.$tracker.setValue(a.name,n)):(l&&l.$tracker.getValue(a.name).remove(n),c&&(k=c.$tracker.getValue(a.name),t.findInArray(k,n)||k.push(n))))}function g(n,r,u,f,e){var c=n.$tracker,h;s.liveValidate===!0&&o(r.validate(n),c,r);r.triggerOwnerModify&&i(n,null,null,c);c.arrayChanged.notify({entity:n,property:r,items:u,removedItems:f,addedItems:e});h=r.inverse;h&&(f&&t.forEach(f,function(t){t.$tracker.getValue(h.name)==n&&t.$tracker.setValue(h.name,null)}),e&&t.forEach(e,function(t){v(t,c.manager);t.$tracker.setValue(h.name,n)}))}function nt(n,i,f,e){var l=s.getArraySetBehaviour(),h,o,c;if(l==u.arraySetBehaviour.NotAllowed)throw t.createError(r.settingArrayNotAllowed,{entity:n,property:e});if(h=[],o=t.filterArray(f,function(){return!0}),l==u.arraySetBehaviour.Replace&&t.forEach(i,function(n){t.findInArray(o,n)?t.removeFromArray(o,n):h.push(n)}),l==u.arraySetBehaviour.Append&&t.forEach(f,function(n){t.findInArray(i,n)&&t.removeFromArray(o,n)}),h.length>0)for(c=h.length-1;c>=0;c--)i.splice(t.indexOf(i,h[c]),1);o.length>0&&i.push.apply(i,o)}function tt(n){var i=n.$tracker;t.forEach(i.entityType.navigationProperties,function(r){var f,e,u;r.inverse&&(f=r.inverse,r.isScalar?(e=i.getValue(r.name),e&&t.setForeignKeys(e,f,n)):(u=i.getValue(r.name),u&&u.length>0&&t.forEach(u,function(i){t.setForeignKeys(i,f,n)})))})}function v(n,i){if(n&&i&&!n.$tracker.entityType.isComplexType&&!i.isInManager(n)){if(n.$tracker.manager)throw t.createError(r.entityAlreadyBeingTracked,null,{entity:n,manager:i});i.addEntity(n)}}function i(n,r,f,e){var o=e.entityState;o==u.entityStates.Unchanged&&(t.forEach(e.entityType.navigationProperties,function(n){var u=n.inverse,r;u&&u.triggerOwnerModify&&(r=e.getValue(n.name),r&&(n.isScalar?i(r,null,null,r.$tracker):t.forEach(r,function(n){i(n,null,null,n.$tracker)})))}),e.toModified());it(r,f,e.originalValues,e.changedValues)}function it(n,i,r,u){var f,e;n!=null&&(i==null||i.$tracker==null||i.$tracker.entityType.isComplexType)&&(f=t.findInArray(r,n,"p"),f||r.push({p:n,v:i}),e=t.findInArray(u,n,"p"),e||u.push({p:n,v:i}))}function o(n,i,r){var u=[],f=r?t.filterArray(i.validationErrors,function(n){return n.property===r}):t.filterArray(i.validationErrors,function(){return!0});t.forEach(f,function(r){t.findInArray(n,r.validator,"validator")?t.removeFromArray(n,r.validator,"validator"):(t.removeFromArray(i.validationErrors,r),u.push(r))});i.validationErrors=i.validationErrors.concat(n);(u.length>0||n.length>0)&&i.validationErrorsChanged.notify({errors:i.validationErrors,added:n,removed:u})}var h=function(n,t,i){delete n.$type;delete n.$id;y(n,t,i||s.getObservableProvider(),this);p(n,t,this);c(t,n)},n=h.prototype;return n.toString=function(){return"EntityTracker: "+this.entityType.shortName+", key: "+this.key},n.setManagerInfo=function(n){if(this.manager)throw t.createError(r.entityAlreadyBeingTracked,{otherManager:this.manager});t.assertPrm(n,"manager").isInstanceOf(e.entityManager).check();this.manager=n},n.isChanged=function(){return this.entityState===u.entityStates.Added||this.entityState===u.entityStates.Deleted||this.entityState===u.entityStates.Modified},n.toAdded=function(){if(this.entityState!=u.entityStates.Added){var n={entity:this.entity,oldState:this.entityState,newState:u.entityStates.Added,newChanged:!this.isChanged()};this.entityState=u.entityStates.Added;this.entityStateChanged.notify(n)}},n.toModified=function(){if(this.entityState!=u.entityStates.Modified){var n={entity:this.entity,oldState:this.entityState,newState:u.entityStates.Modified,newChanged:!this.isChanged()};this.entityState=u.entityStates.Modified;this.entityStateChanged.notify(n)}},n.toDeleted=function(){if(this.entityState!=u.entityStates.Deleted){var n={entity:this.entity,oldState:this.entityState,newState:u.entityStates.Deleted,newChanged:!this.isChanged()};this.entityState=u.entityStates.Deleted;this.entityStateChanged.notify(n)}},n.toUnchanged=function(){if(this.entityState!=u.entityStates.Unchanged){var n={entity:this.entity,oldState:this.entityState,newState:u.entityStates.Unchanged,newUnchanged:this.isChanged()};this.originalValues.length=0;this.changedValues.length=0;this.entityState=u.entityStates.Unchanged;this.entityStateChanged.notify(n)}},n.toDetached=function(){if(this.entityState!=u.entityStates.Detached){var n={entity:this.entity,oldState:this.entityState,newState:u.entityStates.Detached,newUnchanged:this.isChanged()};this.entityState=u.entityStates.Detached;this.entityStateChanged.notify(n)}},n.undoChanges=function(){var n=this;t.forEach(this.changedValues,function(t){n.setValue(t.p,t.v)});this.changedValues.length=0},n.acceptChanges=function(){this.changedValues.length=0},n.getValue=function(n){return this.observableProvider.getValue(this.entity,n)},n.setValue=function(n,t){this.observableProvider.setValue(this.entity,n,t)},n.foreignKey=function(n){var r=n.entityType,u,t,e,f,o,i;if(r.keys.length==0)return null;for(u=[],t=0;t2)throw t.createError(r.managerInvalidArgs,{entityManager:u});var o=n[0],s=n[1];if(f.isInstanceOf(o,i.dataServiceBase))u.dataService=o;else if(f.isTypeOf(o,"string"))u.dataService=s?new v.webApiService(o,s):new v.webApiService(o,!1);else throw t.createError(r.managerInvalidArgs,{entityManager:this});u.pendingChangeCount=0;u.entities=new e.entityContainer;u.validationErrors=[];u.entityStateChanged=new e.event("entityStateChanged",u);u.validationErrorsChanged=new e.event("validationErrorsChanged",u);u.hasChangesChanged=new e.event("hasChangesChanged",u);u.queryExecuting=new e.event("queryExecuting",u);u.queryExecuted=new e.event("queryExecuted",u);u.saving=new e.event("saving",u);u.saved=new e.event("saved",u)}function o(n,i,e,o,h,c,l){e||(e=u.mergeStrategy.Preserve);o&&o!==u.entityStates.Detached||(o=u.entityStates.Added);c==null&&(c=s.autoFixScalar);l==null&&(l=s.autoFixPlural);i=i||h.flatEntities(f.isArray(n)?n:[n]);var y=[],p=[],v=[],w=h.entities.count(),a=h;t.forEach(i,function(n){var f=n.$tracker;if(!f&&n.$type)f=a.toEntity(n,n.$type).$tracker;else if(f.entityType.isComplexType||h.isInManager(n))return;var o=f.entityType,s=f.key,i=null;if(w>0&&s&&(i=a.entities.getEntityByKey(s,o.floorType)),i){if(o.name!==i.$tracker.entityType.name)throw t.createError(r.sameKeyOnDifferentTypesError,[i.$tracker.entityType.shortName,o.shortName],{existingEntity:i,entity:n,manager:a});if(e===u.mergeStrategy.ThrowError)throw t.createError(r.sameKeyExists,{existingEntity:i,entity:n,manager:a});else e===u.mergeStrategy.Preserve?v.push({o:n,n:i}):(v.push({o:n,n:i}),p.push({o:i,n:n}))}else a.entities.push(n),n.$tracker.setManagerInfo(a),y.push(n)});t.forEach(y,function(n){d(n,c,l,a);lt(n,a);k(n,o);s.validateOnMerge===!0&&n.$tracker.validate()});t.forEach(p,function(n){ot(n.o,n.n);k(n.o,o)});t.forEach(v,function(i){var r=t.indexOf(n,i.o);r>=0&&(n[r]=i.n);st(i.o,i.n,c,l,a)})}function b(n,i){if(!i.isInManager(n))throw t.createError(r.entityNotBeingTracked,{entity:n,manager:i});}function k(n,i){if(i===u.entityStates.Unchanged)n.$tracker.toUnchanged();else if(i===u.entityStates.Modified)n.$tracker.toModified();else if(i===u.entityStates.Added)n.$tracker.toAdded();else throw t.createError(r.mergeStateError,[i],{entity:n,state:i});}function ot(n,i){var r=i.$tracker;t.forEach(r.entityType.dataProperties,function(t){n.$tracker.setValue(t.name,r.getValue(t.name))})}function d(n,i,r,u){if(i==!0||r==!0){var e=n.$tracker,o=e.entityType;t.forEach(o.navigationProperties,function(t){var f=e.getValue(t.name),o,h,s,c,l;if(t.isComplex){for(o=f.$tracker.owners,h=!1,s=0;s=0;u--)r=t[u],r&&r.$tracker&&r.$tracker.entityType.hasMetadata&&r.$tracker.manager!=i&&(f=i.getEntityByKey(r.$tracker.key,r.$tracker.entityType),f?t.splice(u,1,f):t.splice(u,1))}function st(n,i,r,u,f){var c=n.$tracker.entityType,h,s,e,o;t.forEach(c.navigationProperties,function(c){var y,p,l,a,v;c.isComplex||(h=n.$tracker,s=i.$tracker,e=h.getValue(c.name),o=s.getValue(c.name),c.isScalar?o||(r==!0?tt(i,c,null,f):r===!0&&c.inverse&&c.inverse.isScalar||u===!0&&c.inverse&&!c.inverse.isScalar||(y=h.foreignKey(c),p=s.foreignKey(c),y==p&&e!=null&&f.isInManager(e)&&(l=c.inverse,l?l.isScalar?e.$tracker.setValue(l.name,i):(a=e.$tracker.getValue(l.name),v=t.indexOf(a,n),v>=0&&a.splice(v,1,i)):s.setValue(c.name,e)))):u?it(i,c,o,f):r===!0&&c.inverse||t.forEach(e,function(n){f.isInManager(n)&&!t.findInArray(o,n)&&o.push(n)}))})}function tt(n,t,i,r){var f=n.$tracker,u=f.foreignKey(t);i?u!=i.$tracker.key&&setForeignKeys(n,t,i):u&&f.setValue(t.name,r.entities.getEntityByKey(u,t.entityType))}function it(n,i,r,u){var f=u.entities.getRelations(n,i);f&&t.forEach(f,function(n){t.findInArray(r,n)||r.push(n)})}function rt(n,i){var r=n.$tracker,u=r.entityType,f=i?new e.valueNotifyWrapper(null):null;u.hasMetadata&&t.forEach(u.navigationProperties,function(n){n.isScalar?r.setValue(n.name,f):r.getValue(n.name).splice(0)})}function ht(n,i,r){t.forEach(n,function(n){n.$tracker.entityState==u.entityStates.Deleted?(n.$tracker.toDetached(),ut(n,r),i.remove(n)):n.$tracker.toUnchanged()})}function ct(n,i,r){if(i.removed.length>0)for(var u=i.removed.length-1;u>=0;u--)r.validationErrors.splice(t.indexOf(r.validationErrors,i.removed[u]),1);i.added.length>0&&r.validationErrors.push.apply(r.validationErrors,i.added);(i.removed.length>0||i.added.length>0)&&r.validationErrorsChanged.notify({errors:r.validationErrors,added:i.added,removed:i.removed})}function lt(n,t){n.$tracker.entityStateChanged.subscribe(function(n){var i=t.pendingChangeCount;n.newChanged===!0?t.pendingChangeCount++:n.newUnchanged===!0&&t.pendingChangeCount--;t.entityStateChanged.notify(n);i==0&&t.pendingChangeCount>0?t.hasChangesChanged.notify({hasChanges:!0}):i>0&&t.pendingChangeCount==0&&t.hasChangesChanged.notify({hasChanges:!1})});n.$tracker.validationErrorsChanged.subscribe(function(i){ct(n,i,t)})}function ut(n,i){n.$tracker.entityStateChanged.unsubscribe(i.entityStateChanged.notify);n.$tracker.validationErrorsChanged.unsubscribe(i.validationErrorsChanged.notify);var r=t.filterArray(i.validationErrors,function(t){return t.entity==n});t.removeFromArray(i.validationErrors,n,"entity");i.validationErrorsChanged.notify({errors:i.validationErrors,removed:r,added:[]})}function at(n,t,i){var r={manager:n,query:t,options:i};return n.queryExecuting.notify(r),a.queryExecuting.notify(r),r}function ft(n,t,i,r){var u={manager:n,query:t,options:i,result:r};return n.queryExecuted.notify(u),a.queryExecuted.notify(u),u.result}function vt(n,t,i){var r={manager:n,changes:t,options:i};return n.saving.notify(r),a.saving.notify(r),r.options}function yt(n,t,i){var r={manager:n,changes:t,options:i};n.saved.notify(r);a.saved.notify(r)}function l(n,t,i,r){n&&n(r);t&&t.resolve(i,r)}function h(n,t,i,r,u){if(n&&n(r),t&&t.reject(i,r),r.manager=u,!n&&!t)throw new r;}var y=function(){et(arguments,this)},n=y.prototype;return n.toString=function(){return this.dataService.toString()+", "+r.pendingChanges+": "+this.pendingChangeCount+", "+r.validationErrors+": "+this.validationErrors.length},n.getEntityType=function(n){return this.dataService.getEntityType(n)},n.createQuery=function(n,t){return this.dataService.createQuery(n,t,this)},n.createEntityQuery=function(n,t){return this.dataService.createEntityQuery(n,t,this)},n.registerCtor=function(n,t,i){this.dataService.registerCtor(n,t,i)},n.createEntity=function(n,t){var i=this.dataService.createEntity(n,t),r=[i];return o(r,null,u.mergeStrategy.ThrowError,u.entityStates.Added,this),i},n.createDetachedEntity=function(n,t){return this.dataService.createEntity(n,t)},n.createRawEntity=function(n,t){return this.dataService.createRawEntity(n,t)},n.createEntityAsync=function(n,t,i,r,u){return p(n,t,i,r,u,this)},n.createRawEntityAsync=function(n,t,i,r,u){return i?i.makeObservable=!1:i={makeObservable:!1},p(n,t,i,r,u,this)},n.executeQuery=function(n,i,e,c){var k,a,p,d,g,b;n.options&&(i=t.combine(n.options,i));k=at(this,n,i);n=k.query;i=k.options;a=i&&i.async==!1?null:s.getPromiseProvider();p=null;a&&(p=a.deferred());var y=u.mergeStrategy.Preserve,v=u.executionStrategy.Server,w=null,nt,tt;if(f.isEnum(i,u.mergeStrategy)?(y=i,i={makeObservable:y!=u.mergeStrategy.NoTrackingRaw}):f.isEnum(i,u.executionStrategy)?v=i:i&&(i.merge&&(y=i.merge),i.execution&&(v=i.execution),i.autoFixScalar!=null&&(nt=i.autoFixScalar),i.autoFixPlural!=null&&(tt=i.autoFixPlural),i.makeObservable=y!=u.mergeStrategy.NoTrackingRaw),d=y==u.mergeStrategy.NoTracking||y==u.mergeStrategy.NoTrackingRaw,d&&v==u.executionStrategy.Both)throw t.createError(r.executionBothNotAllowedForNoTracking,{executionStrategy:v,mergeStrategy:y});return((v==u.executionStrategy.Local||v==u.executionStrategy.LocalIfEmptyServer)&&(w=this.executeQueryLocally(n)),g=null,v==u.executionStrategy.Local||v==u.executionStrategy.LocalIfEmptyServer&&w&&(w.length==null||w.length>0)?(w=ft(this,n,i,w),l(e,a,p,w)):(b=this,this.dataService.executeQuery(n,i,function(t,r,s,w){try{var k=!1;t&&(d||(f.isArray(t)||(t=[t],k=!0),o(t,r,y,u.entityStates.Unchanged,b,nt,tt),k&&(t=t[0])));v==u.executionStrategy.Both&&(t=b.executeQueryLocally(n),s&&(s+=t.$addedCount-t.$deletedCount));t&&(n.inlineCountEnabled&&s!=null&&(t.$inlineCount=s),w&&(t.$extra=w));t=ft(b,n,i,t);l(e,a,p,t);a||(g=t)}catch(it){h(c,a,p,it,b)}},function(t){t.query=n;h(c,a,p,t,b)})),a)?a.getPromise(p):g},n.executeQueryLocally=function(n,i){var o=n.entityType,s,e,l;if(o)if(e=this.entities.findEntitySet(o),e)s=e.getEntities();else return[];else throw t.createError(r.typeRequiredForLocalQueries);var f=[],h=0,c=0;return t.forEach(s,function(n){n.$tracker.entityState==u.entityStates.Added?(h++,f.push(n)):n.$tracker.entityState==u.entityStates.Deleted?c++:f.push(n)}),l=n.toFunction(),f=l(f,i),f.$addedCount=h,f.$deletedCount=c,f},n.getEntityByKey=function(n,t){var i=f.isInstanceOf(t,c.entityType)?t:this.getEntityType(t,!0);return this.entities.getEntityByKey(n,i)},n.deleteEntity=function(n){var i,f,e;for(b(n,this),i=this,f=[],t.forEach(n.$tracker.entityType.navigationProperties,function(u){var e,o;if(u.cascadeDelete){if(u.inverse&&u.inverse.cascadeDelete)throw t.createError(r.twoEndCascadeDeleteNotAllowed,{entity:n,property:u});e=n.$tracker.getValue(u.name);e&&(u.isScalar?u.foreignKeys!=null&&u.foreignKeys.length>0?f.push(e):i.deleteEntity(e):(o=t.filterArray(e,function(){return!0}),t.forEach(o,function(n){i.deleteEntity(n)})))}}),n.$tracker.entityState===u.entityStates.Added?this.detachEntity(n):(rt(n,!0),n.$tracker.toDeleted()),e=0;e0)throw t.createError(r.cannotDetachComplexTypeWithOwners);b(n,this);rt(n,!0);ut(n,this);n.$tracker.toDetached();n.$tracker.manager=null;this.entities.remove(n)},n.createSavePackage=function(n,t){var f=t&&t.userData||null,i=t&&t.forceUpdate,r,u;return i==null&&(i=s.forceUpdate),r={userData:f,forceUpdate:i},u=this.exportEntities(n||this.getChanges(),t),r.entities=u,r},n.rejectChanges=function(n,i){var e=this,r;f.isArray(n)||(n=[n]);r=i===!0?this.flatEntities(n):n;t.forEach(r,function(n){var t=n.$tracker;t.entityState==u.entityStates.Added?e.detachEntity(n):t.entityState==u.entityStates.Modified&&(t.undoChanges(),t.toUnchanged())})},n.undoChanges=function(n,i){f.isArray(n)||(n=[n]);var r=i===!0?this.flatEntities(n):n;t.forEach(r,function(n){n.$tracker.undoChanges()})},n.acceptChanges=function(n,i){f.isArray(n)||(n=[n]);var r=i===!0?this.flatEntities(n):n;t.forEach(r,function(n){n.$tracker.acceptChanges()})},n.exportEntities=function(n,i){var e=[],r,f;return n=n||this.entities.getEntities(),r=i&&i.forceUpdate,r==null&&(r=s.forceUpdate),f=i&&i.minimizePackage,f==null&&(f=s.minimizePackage),t.forEach(n,function(n,i){var o=n.$tracker,a=o.entityType,h=o.entityState,c,s,l;if(r===!1&&(r=o.forceUpdate),c={},f===!0)if(h==u.entityStates.Modified)if(o.originalValues.length>0)s={},t.forEach(o.originalValues,function(t){var f,r=t.p.split("."),e,u,i;if(r.length>1){for(e=0;e0},n.getChanges=function(){return this.entities.getChanges()},n.saveChanges=function(n,i,e){var c=n&&n.entities||this.getChanges(),a,v,p,w,y;n=vt(this,c,n);a=n&&n.async==!1?null:s.getPromiseProvider();v=null;a&&(v=a.deferred());var b=n&&n.autoFixScalar,k=n&&n.autoFixPlural,d=null;return(f.isArray(c)||(c=[c]),c&&c.length>0?(p=[],s.validateOnSave===!0&&t.forEach(c,function(n){if(n.$tracker.entityState!=u.entityStates.Deleted){var t=n.$tracker.validate();t&&t.length>0&&p.push({entity:n,validationErrors:t})}}),p.length>0?(w=new t.createError(r.validationFailed,{entities:c,validationErrors:p}),w.entitiesInError=p,h(e,a,v,w,this)):(y=this,this.dataService.saveChanges(this.createSavePackage(c,n),n,function(r){try{r.GeneratedEntities!=null&&r.GeneratedEntities.length>0&&o(r.GeneratedEntities,null,u.mergeStrategy.Preserve,u.entityStates.Unchanged,y,b,k);r.GeneratedValues&&t.forEach(r.GeneratedValues,function(n){var r=c[n.Index],f,t=n.Property.split("."),i,s,e;if(t.length>1){for(i=0;i",function(n,t){return n()>t()},"gt")),i.push(new n("Lesser","<",function(n,t){return n()=",function(n,t){var i=n(),r=t();return i==r||i>r},"ge")),i.push(new n("LesserEqual","<=",function(n,t){var i=n(),r=t();return i==r||i>",function(n,t){return n()>>t()})),n.find=function(n){var r=t.filterArray(i,function(t){return t.code==n||t.oData==n||t.js==n});return r.length>0?r[0]:null},n}(),filterOps:new h.enums({Equals:{oData:"eq",code:"=="},NotEqual:{oData:"ne",code:"!="},Greater:{oData:"gt",code:">"},Lesser:{oData:"lt",code:"<"},GreaterEqual:{oData:"ge",code:">="},LesserEqual:{oData:"le",code:"<="},Contains:{oData:"substringof",code:"contains",isFunc:!0},StartsWith:{oData:"startswith",code:"startswith",isFunc:!0},EndsWith:{oData:"endswith",code:"endswith",isFunc:!0}}),mergeStrategy:new h.enums("Preserve","Overwrite","ThrowError","NoTracking","NoTrackingRaw"),executionStrategy:new h.enums("Server","Local","Both","LocalIfEmptyServer"),generationPattern:new h.enums("Identity","Computed"),arraySetBehaviour:new h.enums("NotAllowed","Replace","Append")}}(),a=function(){return{queryExecuting:new e.event("beetleQueryExecuting",this),queryExecuted:new e.event("beetleQueryExecuted",this),saving:new e.event("beetleSaving",this),saved:new e.event("beetleSaved",this),info:new e.event("beetleInfo",this),warning:new e.event("beetleWarning",this),error:new e.event("beetleError",this)}}(),s=function(){var s,o;s=n.ko?l.koObservableProviderInstance:n.Backbone?l.backboneObservableProviderInstance:l.propertyObservableProviderInstance;n.Q?o=l.qPromiseProviderInstance:n.jQuery&&(o=l.jQueryPromiseProviderInstance);var h=u.arraySetBehaviour.NotAllowed,c=l.defaultDateConverterInstance,a,e={};return e.autoFixScalar=!0,e.autoFixPlural=!1,e.validateOnMerge=!0,e.validateOnSave=!0,e.liveValidate=!0,e.handleUnmappedProperties=!0,e.isCaseSensitive=!1,e.ignoreWhiteSpaces=!1,e.forceUpdate=!1,e.workAsync=!0,e.ajaxTimeout=null,e.minimizePackage=!1,e.getObservableProvider=function(){return s},e.setObservableProvider=function(n){var h,e,o;if(f.isInstanceOf(n,i.observableProviderBase))s=n;else{if(f.isNotEmptyString(n))for(h=u.observableProviders.symbols(),e=0;e p.Name.",functionNotSupportedForOData:"OData does not support %0 function, please use Beetle Query Strings (like: manager.executeQuery(query, {useBeetleQueryStrings: true}))",instanceError:"%0 is not an instance of %1.",invalidArguments:"Invalid arguments.",invalidDefaultValue:"%0 is not a valid default value for %0.",invalidEnumValue:"Invalid enum value, %0 cannot be found in %1.",invalidExpression:"%0 can only have %1 type expressions.",invalidPropertyAlias:"Invalid property alias.",invalidStatement:"Invalid statement.",invalidValue:"Invalid value for %0 property.",managerInvalidArgs:"Invalid arguments. Valid args are: {DataService} or {Uri, [MetadataManager]} or {Uri, [metadataString (string)]} or {Uri, [doNotUseMetadata (bool)]}.",maxLenError:"%0 property length cannot exceed %1.",maxPrecisionError:"Value %0 exceeded maximum precision of %1.",mergeStateError:"Cannot merge entities with %0 state.",minLenError:"%0 property length must be greater than %1.",noMetadataEntityQuery:"Cannot create entity query when no metadata is available.",noMetadataRegisterCtor:"Cannot register constructor when no metadata is available.",noOpenGroup:"Could not find any open group.",notFoundInMetadata:"Could not find %0 in metadata.",notImplemented:"%0 %1 is not implemented.",notNullable:"Cannot set %0 with null, property is not nullable.",oDataNotSupportMultiTyped:"Multi-Typed queries cannot be used for OData services.",onlyManagerCreatedCanBeExecuted:"Only queries which are created from a manager can be directly executed.",onlyManagerCreatedCanAcceptEntityShortName:"Only queries which are created from a manager can accept entity type short name parameter.",pendingChanges:"Pending changes",pluralNeedsInverse:"To load plural relations, navigation property must have inverse.",projectionsMustHaveAlias:"All projected values must have a property name or alias.",propertyNotFound:"Could not find property: %0.",queryClosed:"Query is closed, expression cannot be added. Queries must be executed after some expressions like first, single, any, all etc..",rangeError:"%0 property value must be between %1 and %2.",requiredError:"%0 property is required.",sameKeyExists:"There is already an entity with same key in the manager.",sameKeyOnDifferentTypesError:"Two different types of entities cannot have same keys when they are from same inheritance root (%0, %1).",settingArrayNotAllowed:"Setting array property is not allowed, you may change this via beetle.settings.setArraySetBehaviour(behavior).",stringLengthError:"%0 property length must be between %1 and %2.",twoEndCascadeDeleteNotAllowed:"Two-end cascade deletes are not supported.",typeError:"%0 type is not %1.",typeMismatch:"%0 value type mismatch. expected type: %1, given type: %2, value: %3",typeRequiredForLocalQueries:'To execute queries locally, entity type must be provided (createQuery("Entities", "Entity") or createEntityQuery("Entity")).',unclosedQuote:'Unclosed quote in "%0".',unclosedToken:'Unclosed "%0".',unexpectedProperty:'Unexpected property "%0".',unexpectedToken:"Unexpected %0.",unknownDataType:"Unknown data type: %0.",unknownExpression:"Unknown expression.",unknownFunction:"Unknown function: %0.",unknownParameter:"Unknown parameter: %0.",unknownValidator:"Unknown validator type: %0.",unsoppertedState:"Unsupported entity state: %0.",validationErrors:"Validation errors",validationFailed:"Validation failed.",valueCannotBeNull:"Value cannot be null: %0.",operatorNotSupportedForOData:"Operator is not supported for OData: %0."}),n.beetleI18N}(),y=function(){return{version:"1.0",i18N:r,helper:t,assert:f,libs:h,baseTypes:i,impls:l,metadata:c,querying:o,core:e,services:v,enums:u,events:a,settings:s,MetadataManager:c.metadataManager,entityManager:e.entityManager,EntityManager:e.entityManager,WebApiService:v.webApiService,MvcService:v.mvcService,EntityStates:u.entityStates,FilterOps:u.filterOps,MergeStrategy:u.mergeStrategy}}();return t.tryFreeze(y),n.beetle=y,y})(window); /* //# sourceMappingURL=beetle.min.js.map */ \ No newline at end of file diff --git a/Samples/Todo/Beetle.Samples.Todo.Knockout/Scripts/beetle.js b/Samples/Todo/Beetle.Samples.Todo.Knockout/Scripts/beetle.js index 05a089e2..7253f9f5 100644 --- a/Samples/Todo/Beetle.Samples.Todo.Knockout/Scripts/beetle.js +++ b/Samples/Todo/Beetle.Samples.Todo.Knockout/Scripts/beetle.js @@ -5447,7 +5447,7 @@ } return false; } - return items && items.indexOf(item) >= 0; + return items && items.indexOf(item) > 0; }; return new ctor(); @@ -8423,8 +8423,8 @@ // if option need local and server results both, after server query re-run same query on local. if (execution == enums.executionStrategy.Both) { newEntities = that.executeQueryLocally(query); - if (inlineCount != null && newEntities.$inlineCountDiff != null) - inlineCount += newEntities.$inlineCountDiff; + if (inlineCount) + inlineCount += newEntities.$addedCount - newEntities.$deletedCount; } if (newEntities) { if (query.inlineCountEnabled && inlineCount != null) @@ -8470,29 +8470,23 @@ } else throw helper.createError(i18N.typeRequiredForLocalQueries); - var array = [], serverArray = [], modifiedClient = false; + var array = [], addedCount = 0, deletedCount = 0; helper.forEach(entities, function (entity) { if (entity.$tracker.entityState == enums.entityStates.Added) { - modifiedClient = true; + addedCount++; array.push(entity); } - else if (entity.$tracker.entityState == enums.entityStates.Deleted) { - modifiedClient = true; - serverArray.push(entity); - } - else { + else if (entity.$tracker.entityState == enums.entityStates.Deleted) + deletedCount++; + else array.push(entity); - serverArray.push(entity); - } }); // get array handling function for query var func = query.toFunction(); // run function against entities array = func(array, varContext); - if (array.$inlineCount && modifiedClient) { - var serverResult = func(serverArray, varContext); - array.$inlineCountDiff = array.$inlineCount - serverResult.$inlineCount; - } + array.$addedCount = addedCount; + array.$deletedCount = deletedCount; return array; }; diff --git a/Samples/Todo/Beetle.Samples.Todo.Knockout/Scripts/beetle.min.js b/Samples/Todo/Beetle.Samples.Todo.Knockout/Scripts/beetle.min.js index 172e216e..5c7c2d4b 100644 --- a/Samples/Todo/Beetle.Samples.Todo.Knockout/Scripts/beetle.min.js +++ b/Samples/Todo/Beetle.Samples.Todo.Knockout/Scripts/beetle.min.js @@ -1,4 +1,4 @@ -(function(n){"use strict";var t=function(){return{assertPrm:function(n,t){return new f(n,t)},combine:function(n,i){var r,e,u;if(n==i)return n;if(r={},n!=null)for(e in n)r[e]=n[e];if(i!=null)for(u in i){var s=r[u],o=i[u],h=f.isTypeOf(s,"object")&&f.isTypeOf(o,"object")?t.combine(s,o):o;r[u]=h}return r},objEquals:function(n,i){var u,e,r,o;if(n==i)return!0;if(n==null||i==null)return!1;if(f.isObject(n)&&f.isObject(i)){u=0;e=0;for(r in n){if(!i.hasOwnProperty(r)||!t.objEquals(t.getValue(n,r),t.getValue(i,r)))return!1;u++}for(o in i)e++;return u==e}return!1},equals:function(n,t,i,r){var u,f;return typeof n=="string"&&typeof t=="string"&&(u=r&&r.isCaseSensitive,u==null&&(u=s.isCaseSensitive),f=r&&r.ignoreWhiteSpaces,f==null&&(f=s.ignoreWhiteSpaces),u||(n=n.toLowerCase(),t=t.toLowerCase()),f&&(n=n.trim(),t=t.trim())),i?n===t:n==t},formatString:function(n){var t=arguments,i=RegExp("%([0-"+(arguments.length-1)+"])","g"),r=RegExp("{([0-"+(arguments.length-2)+"])}","g");return n.replace(i,function(n,i){return t[Number(i)+1]||""}).replace(r,function(n,i){return t[Number(i)+1]||""})},tryFreeze:function(n,t){var r,i;if(!n||!Object.freeze)return n;if(Object.freeze(n),t===!0)for(r in n)i=n[r],f.isArray(i)?this.tryFreezeArray(i,t):f.isObject(i)&&this.tryFreeze(i,t);return n},tryFreezeArray:function(n,t){if(n&&Object.freeze)for(var i=0;i=0;u--)n.splice(r[u],1);return r.length},mapArray:function(n,t){for(var r,u=[],i=0;i0&&(u.splice(0,0,n),n=t.formatString.apply(null,u)),o=new Error(n),e)for(s in e)o[s]=e[s];return a.error.notify(o),o},setForeignKeys:function(n,t,i){for(var u,f,e,o,r=0;r")return i.aliases.push(n.left.name),it=t.jsepToODataQuery(n.right,i),i.aliases.pop(),it;if(k=u.langOperators.find(n.operator).oData,!k)throw t.createError(r.operatorNotSupportedForOData,[n.operator],{expression:n});return"("+t.jsepToODataQuery(n.left,i)+" "+k+" "+t.jsepToODataQuery(n.right,i)+")"}if(n.type=="UnaryExpression")return n.operator+t.jsepToODataQuery(n.argument,i);if(n.type=="Identifier"){if(l=n.name,l[0]=="@"){if(a=undefined,v=l.slice(1),i.expVarContext&&i.expVarContext[v]!==undefined?a=i.expVarContext[v]:i.varContext&&(a=i.varContext[v]),a===undefined)throw t.createError(r.unknownParameter,[l],{expression:n,queryContext:i});return e.dataTypes.toODataValue(a)}return l}if(n.type=="Literal")return e.dataTypes.toODataValue(n.value);if(n.type=="MemberExpression")return n.object.name&&n.object.name!=i.currentAlias&&t.findInArray(i.aliases,n.object.name)?n.property.name:t.jsepToODataQuery(n.object,i)+"/"+n.property.name;if(n.type=="Compound"){for(f=[],h=0;h"&&(c=s[0].left.name,s=[s[0].right]),c&&(i.currentAlias=c,i.aliases.push(c)),p=0;p"?(i.aliases.push(n.left.name),tt=t.jsepToBeetleQuery(n.right,i),i.aliases.pop(),tt):(it=u.langOperators.find(n.operator).code,"("+t.jsepToBeetleQuery(n.left,i)+" "+it+" "+t.jsepToBeetleQuery(n.right,i)+")");if(n.type=="UnaryExpression")return n.operator+t.jsepToBeetleQuery(n.argument,i);if(n.type=="Identifier"){if(c=n.name,c[0]=="@"){if(l=undefined,v=c.slice(1),i.expVarContext&&i.expVarContext[v]!==undefined?l=i.expVarContext[v]:i.varContext&&(l=i.varContext[v]),l===undefined)throw t.createError(r.unknownParameter,[c],{expression:n,queryContext:i});return e.dataTypes.toBeetleValue(l)}return c}if(n.type=="Literal")return e.dataTypes.toBeetleValue(n.value);if(n.type=="MemberExpression")return n.object.name&&t.findInArray(i.aliases,n.object.name)?n.property.name:t.jsepToBeetleQuery(n.object,i)+"."+n.property.name;if(n.type=="Compound"){for(f=[],h=0;h"&&(a=s[0].left.name,s=[s[0].right]),a&&(i.currentAlias=a,i.aliases.push(a)),y=0;y")return i.currentAlias&&i.aliases.push(i.currentAlias),i.currentAlias={alias:n.left.name},nt=t.jsepToFunction(n.right,i)(f),i.currentAlias=i.aliases.pop(),nt;var ut=u.langOperators.find(n.operator),tt=i.varContext,ft=function(){return t.jsepToFunction(n.left,i)(f)},et=function(){return t.jsepToFunction(n.right,i)(f)};return ut.asFunc.call(tt,ft,et)}if(n.type=="UnaryExpression")return it=function(){return t.jsepToFunction(n.argument,i)(f)},rt=u.langOperators.find(n.operator),rt.asFunc.call(tt,it);if(n.type=="Identifier"){if(e=n.name,e=="null")return null;if(e=="true")return!0;if(e=="false")return!1;if(e[0]=="@"){if(v=undefined,y=e.slice(1),i.expVarContext&&i.expVarContext[y]!==undefined?v=i.expVarContext[y]:i.varContext&&(v=i.varContext[y]),v===undefined)throw t.createError(r.unknownParameter,[e],{expression:n,queryContext:i});return v}return i.currentAlias&&i.currentAlias.alias==e?f:(w=t.findInArray(i.aliases,e,"alias"),w)?w.value:(b=t.getValue(f,e),b===undefined)?window[e]:b}if(n.type=="Literal")return n.value;if(n.type=="MemberExpression"){if(n.object.name){if(i.currentAlias&&n.object.name==i.currentAlias.alias)return t.getValue(f,n.property.name);if(k=t.findInArray(i.aliases,n.object.name,"alias"),k)return t.getValue(k.value,n.property.name)}return t.getValue(t.jsepToFunction(n.object,i)(f),n.property.name)}if(n.type=="CallExpression"){var s=n.arguments,h=[],p=null;if(s.length==1&&s[0]&&s[0].type=="BinaryExpression"&&s[0].operator=="=>"&&(p=s[0].left.name,s=[s[0].right]),p&&(i.currentAlias&&i.aliases.push(i.currentAlias),i.currentAlias={alias:p}),t.forEach(s,function(n){n!=null&&h.push(t.jsepToFunction(n,i))}),l=n.callee.type=="MemberExpression"?n.callee.property.name:n.callee.name,c=o.queryFuncs.getFunc(l,!1),c)n.callee.type=="MemberExpression"&&h.splice(0,0,t.jsepToFunction(n.callee.object,i)),h.splice(0,0,f),d=c.impl.apply(i,h);else{if(l[0]=="@")if(a=l.slice(1),i.expVarContext&&i.expVarContext[a])c=i.expVarContext[a];else if(i.varContext&&i.varContext[a])c=i.varContext[a];else throw t.createError(r.unknownParameter,[a],{expression:n,queryContext:i});else if(g=n.callee.type=="MemberExpression"?t.jsepToFunction(n.callee.object,i)(f):window,g==null||(c=g[l])==null)throw t.createError(r.unknownFunction,[l]);h=t.mapArray(h,function(){return this(f)});d=c.apply(i,h)}return p&&(i.currentAlias=i.aliases.pop()),d}throw t.createError(r.unknownExpression,{expression:n});}},jsepToProjector:function(n,i){var h=[],u,e,o,s;for(f.isArray(n)||(n=[n]),u=0;uu+2&&n[u+1].name&&n[u+1].name.toLowerCase()=="as"){if(u=u+2,s=n[u],s.type!="Identifier")throw t.createError(r.invalidPropertyAlias,{expressions:n,aliasExpression:s});e=s.name}if(n.length>1&&!e)throw t.createError(r.projectionsMustHaveAlias,{expressions:n,expression:o});h.push({p:e,func:t.jsepToFunction(o,i)})}return function(t){for(var r,u,f={},i=0;i0)throw t.createError(this.errors.join("\n"),{name:this.name,value:this.value});},n.hasValue=function(n,i,u){return n==null?(i&&i.push(t.formatString(r.valueCannotBeNull,u)),!1):!0},n.isObject=function(n,i,u){return e.dataTypes.object.isValid(n)?!0:(i&&i.push(t.formatString(r.typeError,u,"object")),!1)},n.isFunction=function(n,i,u){return e.dataTypes.function.isValid(n)?!0:(i&&i.push(t.formatString(r.typeError,u,"function")),!1)},n.isNotEmptyString=function(i,u,f){return!n.isTypeOf(i,"string",u)||i===""?(u&&u.push(t.formatString(r.cannotBeEmptyString,f)),!1):!0},n.isTypeOf=function(i,u,f,o){if(!n.hasValue(i))return!1;var s=e.dataTypes.byName(u);return s.isValid(i)?!0:(f&&f.push(t.formatString(r.typeMismatch,o,u,s,i)),!1)},n.isArray=function(n,i,u){return e.dataTypes.array.isValid(n)?!0:(i&&i.push(t.formatString(r.typeError,u,"array")),!1)},n.isEnum=function(n,i,u){return i.contains(n)?!0:(u&&u.push(t.formatString(r.invalidEnumValue,i,n)),!1)},n.isInstanceOf=function(n,i,u,f){return n==null?(u&&u.push(r.cannotCheckInstanceOnNull),!1):(n instanceof i)?!0:(u&&u.push(t.formatString(r.instanceError,f,i)),!1)},n}(),h=function(){var i={};return i.enums=function(){function r(n,t){for(var i in t)n[i]=t[i];return n}function n(n,i){this.name=n;i&&r(this,i);t.tryFreeze(this)}n.prototype={};n.prototype.constructor=n;n.prototype.toString=function(){return this.name};t.tryFreeze(n.prototype);var i=function(i){var u=this,r;if(arguments.length===1&&i!==null&&typeof i=="object")for(r in i)u[r]=new n(r,i[r]);else t.forEach(arguments,function(t){u[t]=new n(t)});t.tryFreeze(this)};return i.prototype.symbols=function(){var t=[],i,n;for(i in this)(n=this[i],f.isFunction(n))||t.push(n);return t},i.prototype.contains=function(t){return(t instanceof n)?this[t.name]===t:!1},i}(),i.jsep=function(t){var a="Compound",k="Identifier",v="MemberExpression",h="Literal",d="ThisExpression",g="CallExpression",nt="UnaryExpression",tt="BinaryExpression",it="LogicalExpression",u=!0,f={"-":u,"!":u,"~":u,"+":u},r={"=>":0,"||":1,"&&":2,"|":3,"^":4,"&":5,"==":6,"!=":6,"===":6,"!==":6,"<":7,">":7,"<=":7,">=":7,"<<":8,">>":8,">>>":8,"+":9,"-":9,"*":10,"/":10,"%":10},s=function(n){var t=0,i;for(var r in n)(i=r.length)>t&&n.hasOwnProperty(r)&&(t=i);return t},c=s(f),e=s(r),y={"true":!0,"false":!1,"null":null},rt="this",p=function(n){return r[n]||0},w=function(n,t,i){var r=n==="||"||n==="&&"?it:tt;return{type:r,operator:n,left:t,right:i}},o=function(n){return n>=48&&n<=57},l=function(n){return n===36||n===95||n===64||n>=65&&n<=90||n>=97&&n<=122},ut=function(n){return n===36||n===95||n>=65&&n<=90||n>=97&&n<=122||n>=48&&n<=57},i=function(n){for(var t=0,ct=n.charAt,lt=n.charCodeAt,i=function(t){return ct.call(n,t)},u=function(t){return lt.call(n,t)},b=n.length,s=function(){for(var n=u(t);n===32||n===9;)n=u(++t)},ot=function(){s();for(var i=n.substr(t,e),u=i.length;u>0;){if(r.hasOwnProperty(i))return t+=u,i;i=i.substr(0,--u)}return!1},tt=function(){var r,i,o,n,s,f,e,u;if(f=it(),i=ot(),!i)return f;if(s={value:i,prec:p(i)},e=it(),!e)throw new Error("Expected expression after "+i+" at character "+t);for(n=[f,s,e];i=ot();){if(o=p(i),o===0)break;for(s={value:i,prec:o};n.length>2&&o<=n[n.length-2].prec;)e=n.pop(),i=n.pop().value,f=n.pop(),r=w(i,f,e),n.push(r);if(r=it(),!r)throw new Error("Expected expression after "+i+" at character "+t);n.push(s);n.push(r)}for(u=n.length-1,r=n[u];u>1;)r=w(n[u-1].value,n[u-2],r),u-=2;return r},it=function(){var i,r,e;if(s(),i=u(t),o(i)||i===46)return at();if(i===39||i===34)return vt();if(l(i))return pt();if(i===40)return wt();for(r=n.substr(t,c),e=r.length;e>0;){if(f.hasOwnProperty(r))return t+=e,{type:nt,operator:r,argument:it(),prefix:!0};r=r.substr(0,--e)}return!1},at=function(){for(var n="";o(u(t));)n+=i(t++);if(i(t)===".")for(n+=i(t++);o(u(t));)n+=i(t++);if(i(t)==="e"||i(t)==="E"){for(n+=i(t++),(i(t)==="+"||i(t)==="-")&&(n+=i(t++));o(u(t));)n+=i(t++);if(!o(u(t-1)))throw new Error("Expected exponent ("+n+i(t)+") at character "+t);}if(l(u(t)))throw new Error("Variable names cannot start with a number ("+n+i(t)+") at character "+t);return{type:h,value:parseFloat(n),raw:n}},vt=function(){for(var n="",u=i(t++),f=!1,r;t=0;t--)i=this.expressions[t],f.isInstanceOf(i,n)&&this.expressions.splice(t,1);return this},u}(),observableProviderBase:function(){var i=function(n){this.name=n||"observableProviderBase"},n=i.prototype;return n.toString=function(){return this.name},n.isObservable=function(){throw t.createError(r.notImplemented,[this.name,"isObservable"]);},n.toObservable=function(){throw t.createError(r.notImplemented,[this.name,"toObservable"]);},n.getValue=function(){throw t.createError(r.notImplemented,[this.name,"getValue"]);},n.setValue=function(){throw t.createError(r.notImplemented,[this.name,"setValue"]);},i}(),ajaxProviderBase:function(){var n=function(n){this.name=n||"ajaxProviderBase"},i=n.prototype;return i.toString=function(){return this.name},i.doAjax=function(){throw t.createError(r.notImplemented,[this.name,"doAjax"]);},n}(),serializationServiceBase:function(){var i=function(n){this.name=n||"serializationServiceBase"},n=i.prototype;return n.toString=function(){return this.name},n.serialize=function(){throw t.createError(r.notImplemented,[this.name,"serialize"]);},n.deserialize=function(){throw t.createError(r.notImplemented,[this.name,"deserialize"]);},i}(),promiseProviderBase:function(){var i=function(n){this.name=n||"promiseProviderBase"},n=i.prototype;return n.toString=function(){return this.name},n.deferred=function(){throw t.createError(r.notImplemented,[this.name,"deferred"]);},n.getPromise=function(){throw t.createError(r.notImplemented,[this.name,"getPromise"]);},n.resolve=function(){throw t.createError(r.notImplemented,[this.name,"resolve"]);},n.reject=function(){throw t.createError(r.notImplemented,[this.name,"reject"]);},i}(),dataServiceBase:function(){function a(n,e,o,s){var v,w;n==null?n="":n[n.length-1]!="/"&&(n+="/");s.uri=n;var h=null,a=null,y=null,p=null;if(o&&(h=o.ajaxProvider,a=o.serializationService,y=o.dataType,p=o.dataType),s.ajaxProvider=h&&f.isInstanceOf(h,i.ajaxProviderBase)?h:l.jQueryAjaxProviderInstance,s.serializationService=a&&f.isInstanceOf(a,i.SerializationService)?a:l.jsonSerializationServiceInstance,!(e===!0))if(e){if(f.isInstanceOf(e,c.metadataManager))s.metadataManager=e;else if(f.isObject(e))try{s.metadataManager=new c.metadataManager(e)}catch(b){throw t.createError(r.invalidArguments,{exception:b,args:arguments,dataService:this});}}else v=t.findInArray(u,n,"uri"),v?s.metadataManager=v.data:(w=s.fetchMetadata(),s.metadataManager=new c.metadataManager(w),u.push({uri:n,data:s.metadataManager}));s.dataType=y||"json";s.contentType=p||"application/json; charset=utf-8"}var u=[],h=function(n,t,i){a(n,t,i,this)},n=h.prototype;return n.toString=function(){return this.uri},n.getEntityType=function(n){return this.metadataManager?this.metadataManager.getEntityTypeByShortName(n):null},n.createQuery=function(n,i,r){return(t.assertPrm(n,"resourceName").isNotEmptyString().check(),i)?this.createEntityQuery(i,n,r):(this.metadataManager&&this.metadataManager.createQuery(n,null,r),new o.entityQuery(n,null,r))},n.createEntityQuery=function(n,i,u){if(t.assertPrm(n,"shortName").isNotEmptyString().check(),!this.metadataManager)throw t.createError(r.noMetadataEntityQuery,{dataService:this});return this.metadataManager.createQuery(i,n,u)},n.registerCtor=function(n,i,u){if(this.metadataManager==null)throw t.createError(r.noMetadataEntityQuery);this.metadataManager.registerCtor(n,i,u)},n.createEntity=function(n,i){if(!this.metadataManager)throw t.createError(r.noMetadataEntityQuery,{dataService:this});return this.metadataManager.createEntity(n,i)},n.createRawEntity=function(n,i){if(!this.metadataManager)throw t.createError(r.noMetadataEntityQuery,{dataService:this});return this.metadataManager.createRawEntity(n,i)},n.toEntity=function(n,t){var i=null;return this.metadataManager&&(i=this.metadataManager.getEntityType(t)),i||(i=new c.entityType(t)),e.entityTracker.toEntity(n,i,s.getObservableProvider())},n.toODataQueryParams=function(n,i){if(n.isMultiTyped===!0)throw t.createError(r.oDataNotSupportMultiTyped,{query:n});var u={varContext:i},f=[];return t.forEach(n.parameters,function(n){f.push({name:n.name,value:n.value==null?"":n.value})}),n.inlineCountEnabled===!0&&f.push({name:"$inlinecount",value:"allpages"}),t.forEach(n.expressions,function(n,t){u.expVarContext=n.varContext;var r,i;n.onlyBeetle===!0?(r="!e"+t,i=n.toBeetleQuery(u),i=n.name+":"+i):(r="$"+n.name,i=n.toODataQuery(u));f.push({name:r,value:i});u.expVarContext=undefined}),f},n.toBeetleQueryParams=function(n,i){var u={varContext:i},r=[];return t.forEach(n.parameters,function(n){r.push({name:n.name,value:n.value==null?"":n.value})}),n.inlineCountEnabled===!0&&r.push({name:"!e0",value:"inlinecount:allpages"}),t.forEach(n.expressions,function(n,t){u.expVarContext=n.varContext;r.push({name:"!e"+(t+1),value:n.name+":"+n.toBeetleQuery(u)});u.expVarContext=undefined}),r},n.fetchMetadata=function(){throw t.createError(r.notImplemented,["dataServiceBase","fetchMetadata"]);},n.createEntityAsync=function(){throw t.createError(r.notImplemented,["dataServiceBase","createEntityAsync"]);},n.executeQuery=function(){throw t.createError(r.notImplemented,["dataServiceBase","executeQuery"]);},n.executeQueryParams=function(){throw t.createError(r.notImplemented,["dataServiceBase","executeQueryParams"]);},n.saveChanges=function(){throw t.createError(r.notImplemented,["dataServiceBase","saveChanges"]);},h}()}}(),l=function(){return{defaultDateConverterInstance:function(){var n=function(){i.dateConverterBase.call(this,"Default Date Converter")},r;return t.inherit(n,i.dateConverterBase),r=n.prototype,r.parse=function(n){if(typeof n!="string"||n.length<10||!/^\d{4}[\/\-](0?[1-9]|1[012])[\/\-](0?[1-9]|[12][0-9]|3[01])$/.test(n.substr(0,10)))return null;/.\d{3}$/.test(n)&&(n+="Z");try{var t=Date.parse(n);return isNaN(t)?null:new Date(t)}catch(i){return null}},r.toISOString=function(n){return n.toISOString()},new n}(),koObservableProviderInstance:function(n){var u,r;return n&&(n.extenders.intercept=function(t,i){return n.computed({read:t,write:function(n){var r=i&&i.callback;r&&r(i.object,i.property,t,n)}})}),u=function(){i.observableProviderBase.call(this,"Knockout Observable Provider");t.tryFreeze(this)},t.inherit(u,i.observableProviderBase),r=u.prototype,r.isObservable=function(t,i){return n.isObservable(t[i])},r.toObservable=function(i,r,u){function s(t,r,u){var f=n.observable(r);return u?n.observable(r).extend({intercept:{object:i,property:t,callback:u}}):f}function c(t,r,u,f,o){var s;return u=u||[],f&&(u=new e.trackableArray(u,i,t,function(n,t,u,e,o){s.$fromKo!==!0&&i[r].valueHasMutated();s.$fromKo=!1;f(n,t,u,e,o)})),s=n.observableArray(u),s.subscribe(function(){s.$fromKo=!0},null,"beforeChange"),o&&(s.equalityComparer=function(n,r){o(i,t,n,r)}),s}var l=u&&u.propertyChange,a=u&&u.arrayChange,v=u&&u.dataPropertyChange,y=u&&u.scalarNavigationPropertyChange,p=u&&u.pluralNavigationPropertyChange,h=u&&u.arraySet,o=[];t.forEachProperty(i,function(n,t){o.push({p:n,v:t})});r&&r.hasMetadata&&(t.forEach(r.dataProperties,function(n){var r=i[n.name];r=r===undefined?null:n.handle(r);i[n.name]=s(n,r,v);t.removeFromArray(o,n.name,"p")}),t.forEach(r.navigationProperties,function(n){var r=i[n.name];r===undefined&&(r=null);i[n.name]=n.isScalar?s(n,r,y):c(n,n.name,r,p,h);t.removeFromArray(o,n.name,"p")}));t.forEach(o,function(n){var u=n.p,e=n.v;i[u]=f.isArray(e)?c(u,u,e,a,h):s(u,e,l);t.findInArray(r.properties,u)||r.properties.push(u)})},r.getValue=function(t,i){return n.utils.unwrapObservable(t[i])},r.setValue=function(n,t,i){n[t](i)},new u}(n.ko),propertyObservableProviderInstance:function(){var r=function(){i.observableProviderBase.call(this,"Property Observable Provider");t.tryFreeze(this)},n;return t.inherit(r,i.observableProviderBase),n=r.prototype,n.isObservable=function(n,t){return n.$fields!==undefined&&n.$fields[t]!==undefined},n.toObservable=function(n,i,r){function s(t,i,r){return Object.defineProperty(n,i,{get:function(){return n.$fields[i]},set:function(u){if(r){var f=w(n,i);r(n,t,f,u)}else n.$fields[i]=u},enumerable:!0,configurable:!0})}function c(t,i,r,f,o){return r=r||[],f&&(r=new e.trackableArray(r,n,t,f)),u[i]=r,Object.defineProperty(n,i,{get:function(){return n.$fields[i]},set:function(r){o?o(n,t,items,r):n.$fields[i]=r}})}function w(n,t){return function(){return arguments.length==0?n.$fields[t]:n.$fields[t]=arguments[0]}}var l=r&&r.propertyChange,a=r&&r.arrayChange,v=r&&r.dataPropertyChange,y=r&&r.scalarNavigationPropertyChange,p=r&&r.pluralNavigationPropertyChange,h=r&&r.arraySet,u={},o=[];return t.forEachProperty(n,function(n,t){o.push({p:n,v:t})}),i&&i.hasMetadata&&(t.forEach(i.dataProperties,function(i){var r=n[i.name];r=r===undefined?null:i.handle(r);delete n[i.name];s(i,i.name,v);t.removeFromArray(o,i.name,"p");u[i.name]=r}),t.forEach(i.navigationProperties,function(i){var r=n[i.name];r===undefined&&(r=null);delete n[i.name];i.isScalar?(s(i,i.name,y),u[i.name]=r):c(i,i.name,r,p,h);t.removeFromArray(o,i.name,"p")})),t.forEach(o,function(r){var e=r.p,o=r.v;delete n[e];f.isArray(o)?c(e,e,o,a,h):(s(e,e,l),u[e]=o);t.findInArray(i.properties,e)||i.properties.push(e)}),n.$fields=u,n},n.getValue=function(n,t){return n[t]},n.setValue=function(n,t,i){n[t]=i},new r}(),backboneObservableProviderInstance:function(){var r=function(){i.observableProviderBase.call("Backbone Observable Provider");t.tryFreeze(this)},n;return t.inherit(r,i.observableProviderBase),n=r.prototype,n.isObservable=function(n,t){return n.$fields!==undefined&&n.$fields[t]!==undefined},n.toObservable=function(n,i,r){function s(t,i,r){return Object.defineProperty(n,i,{get:function(){return n.$fields[i]},set:function(u){if(r){var f=w(n,i);r(n,t,f,u)}else n.$fields[i]=u},enumerable:!0,configurable:!0})}function c(t,i,r,f,o){return r=r||[],f&&(r=new e.trackableArray(r,n,t,f)),u[i]=r,Object.defineProperty(n,i,{get:function(){return n.$fields[i]},set:function(r){o?o(n,t,items,r):n.$fields[i]=r}})}function w(n,t){return function(){return arguments.length==0?n.$fields[t]:n.$fields[t]=arguments[0]}}var l=r&&r.propertyChange,a=r&&r.arrayChange,v=r&&r.dataPropertyChange,y=r&&r.scalarNavigationPropertyChange,p=r&&r.pluralNavigationPropertyChange,h=r&&r.arraySet,u={},o=[];return t.forEachProperty(n,function(n,t){o.push({p:n,v:t})}),i&&i.hasMetadata&&(t.forEach(i.dataProperties,function(i){var r=n[i.name];r=r===undefined?null:i.handle(r);delete n[i.name];s(i,i.name,v);t.removeFromArray(o,i.name,"p");u[i.name]=r}),t.forEach(i.navigationProperties,function(i){var r=n[i.name];r===undefined&&(r=null);delete n[i.name];i.isScalar?(s(i,i.name,y),u[i.name]=r):c(i,i.name,r,p,h);t.removeFromArray(o,i.name,"p")})),t.forEach(o,function(r){var e=r.p,o=r.v;delete n[e];f.isArray(o)?c(e,e,o,a,h):(s(e,e,l),u[e]=o);t.findInArray(i.properties,e)||i.properties.push(e)}),n.$fields=u,n},n.getValue=function(n,t){return n[t]},n.setValue=function(n,t,i){n[t]=i},new r}(),jQueryAjaxProviderInstance:function(n){function f(n){var i={status:n.status};if(n.responseText)try{i.detail=JSON.parse(n.responseText)}catch(r){}return t.createError(n.statusText,i)}var r=function(){i.ajaxProviderBase.call(this,"jQuery Ajax Provider");t.tryFreeze(this)},u;return t.inherit(r,i.ajaxProviderBase),u=r.prototype,u.doAjax=function(t,i,r,u,e,o,s,h,c,l){var a={url:t,accepts:{json:"application/json; odata=verbose",xml:"text/xml; application/xhtml+xml;application/xml",text:"text/xml"},type:i,dataType:r,contentType:u,traditional:!1,data:e,cache:!1,async:o,timeout:s,success:function(n,t,i){if(i.onreadystatechange=null,i.abort=null,n&&n.Error){var r=f(i);r.message=n.Error;l(r)}else c(n,i)},error:function(n){n.onreadystatechange=null;n.abort=null;l(f(n))}};return h!=null&&n.extend(a,h),n.ajax(a)},new r}(n.$),jsonSerializationServiceInstance:function(){var n=function(){i.serializationServiceBase.call(this,"Json Serializer");t.tryFreeze(this)},r;return t.inherit(n,i.serializationServiceBase),r=n.prototype,r.serialize=function(n){return JSON.stringify(n)},r.deserialize=function(n){return f.isTypeOf(n,"string")?JSON.parse(n):n},new n}(),qPromiseProviderInstance:function(n){var u=function(){i.promiseProviderBase.call(this,"Q Promise Provider");t.tryFreeze(this)},r;return t.inherit(u,i.promiseProviderBase),r=u.prototype,r.toString=function(){return this.name},r.deferred=function(){return n.defer()},r.getPromise=function(n){return n.promise},r.resolve=function(n,t){n.resolve(t)},r.reject=function(n,t){n.reject(t)},new u}(n.Q),jQueryPromiseProviderInstance:function(n){var u=function(){i.promiseProviderBase.call(this,"jQuery Promise Provider");t.tryFreeze(this)},r;return t.inherit(u,i.promiseProviderBase),r=u.prototype,r.toString=function(){return this.name},r.deferred=function(){return n.Deferred()},r.getPromise=function(n){return n.promise()},r.resolve=function(n,t){n.resolve(t)},r.reject=function(n,t){n.reject(t)},new u}(n.$)}}(),c=function(){return{dataProperty:function(){var i=function(n,t,i,r,u,f,o,s,h){this.owner=n;this.name=t;this.displayName=i||t;this.dataType=r;this.isNullable=u;this.isKeyPart=f;this.generationPattern=o;this.defaultValue=s;this.useForConcurrency=h;this.relatedNavigationProperties=[];this.validators=[];this.isEnum=r instanceof e.dataTypes.enum;this.isComplex=r.isComplex},n=i.prototype;return n.toString=function(){return this.displayName},n.isValid=function(n){return n==null?!this.isNullable:this.dataType.isValid(n,this)},n.handle=function(n){if(n==null){if(!this.isNullable)throw t.createError(r.notNullable,[this.displayName],{property:this});return null}if(n=this.dataType.handle(n,this),this.dataType==e.dataTypes.number&&this.precision&&n.toString().replace(/\./g,"").length>this.precision)throw t.createError(r.maxPrecisionError,[n,this.precision],{dataType:dataType,value:n});return this.dataType==e.dataTypes.number&&this.scale!=null&&(n=Number(n.toFixed(this.scale))),n},n.getDefaultValue=function(){return this.defaultValue?this.defaultValue:this.isNullable?null:this.generationPattern==u.generationPattern.Identity&&this.isKeyPart===!0?this.dataType.autoValue():this.dataType.defaultValue()},n.addValidation=function(n,i,r,u){t.assertPrm(n,"name").isNotEmptyString().check();t.assertPrm(i,"func").isFunction().check();this.validators.push(new e.validator(n,i,r,u))},n.validate=function(n){var u=[],i,r;return this.validators.length>0&&(i=this,r=t.getValue(n,i.name),t.forEach(this.validators,function(f){var e=f.validate(r,n);e&&u.push(t.createValidationError(n,r,i,e,f))})),u},i}(),navigationProperty:function(){var i=function(n,t,i,r,u,f,e,o){this.owner=n;this.name=t;this.displayName=i||t;this.entityTypeName=r;this.entityType=null;this.isScalar=u;this.isComplex=f===undefined;this.associationName=f;this.cascadeDelete=e===!0;this.foreignKeyNames=o||[];this.inverse=null;this.foreignKeys=[];this.validators=[];this.triggerOwnerModify=!1},n=i.prototype;return n.toString=function(){return this.displayName},n.checkAssign=function(n){if(n!=null){if(!n.$tracker)throw t.createError(r.assignErrorNotEntity,[this],{property:this,value:n});var i=n.$tracker.entityType;if(!this.entityType.isAssignableWith(i))throw t.createError(r.assignError,[this.name,i.shortName],{property:this,value:n});}},n.addValidation=function(n,i,r,u){t.assertPrm(n,"name").isNotEmptyString().check();t.assertPrm(i,"func").isFunction().check();this.validators.push(new e.validator(n,i,r,u))},n.validate=function(n){var u=[],i,r;return this.validators.length>0&&(i=this,r=t.getValue(n,i.name),t.forEach(this.validators,function(f){var e=f.validate(r);e&&u.push(t.createValidationError(n,r,i,e,f))})),u},i}(),entityType:function(){function u(n,t){n.baseType&&u(n.baseType,t);n.constructor&&n.constructor.call(t,t)}function a(n,i){for(var u,f,e,o=n.length,r=0;r0&&t.forEach(this.validators,function(r){var u=r.validate(n);u&&i.push(t.createValidationError(n,null,null,u,r))}),t.forEach(this.dataProperties,function(t){var r=t.validate(n);r&&(i=i.concat(r))}),t.forEach(this.navigationProperties,function(t){var r=t.validate(n);r&&(i=i.concat(r))}),i},i}(),metadataManager:function(){var i=function(n){this.types=[];this.enums={};this.name=null;this.displayName=null;n&&this.parseBeetleMetadata(n)},n=i.prototype;return n.toString=function(){return this.types.join(", ")},n.getEntityType=function(n,i){var u=t.findInArray(this.types,n,"name");if(!u&&i===!0)throw t.createError(r.notFoundInMetadata,[n],{metadataManager:this,typeName:n});return u},n.getEntityTypeByShortName=function(n,i){var u=t.findInArray(this.types,n,"shortName");if(!u&&i===!0)throw t.createError(r.notFoundInMetadata,[n],{metadataManager:this,typeShortName:n});return u},n.createQuery=function(n,i,r){if(i)return this.getEntityTypeByShortName(i,!0).createQuery(n,r);var u=t.filterArray(this.types,function(t){return t.setName==n});return u.length==1?u[0].createQuery(n,r):new o.entityQuery(n,null,r)},n.registerCtor=function(n,t,i){var r=this.getEntityTypeByShortName(n,!0);r.registerCtor(t,i)},n.createEntity=function(n,t){var i=this.getEntityTypeByShortName(n,!0);return i?i.createEntity(t):null},n.createRawEntity=function(n,t){var i=this.getEntityTypeByShortName(n,!0);return i?i.createRawEntity(t):null},n.parseBeetleMetadata=function(n){var o,a,s,r,v,y,p,w,l,i,f,b,k;if(this.types=[],this.enums={},this.name=n.n,this.displayName=t.getResourceValue(n.r,n.l||n.n),o=n.e,a={},o)for(s=0;s0&&a(n,t,r);i.currentGroup?i.currentGroup.filterItems.push(r):i.groups.push(r);i.currentGroup=r;i.openGroups.push(r)}function a(n,i,o){var h,p,v,a,y,c,w;if(n.length==3||n.length==4){if(h=n[1],f.isTypeOf(h,"string"))for(h=h.toLowerCase(),p=u.filterOps.symbols(),v=0;vs?i?-1:1:i?1:-1}}(c,s),o.push(l);return e=[],e.push.apply(e,n),e.sort(function(n,t){for(var r,i=0;i0},n}(),avgExp:function(){var n=function(n){i.expressionBase.call(this,"exec;avg",3,!0,!0);this.expStr=n;n&&(this.exp=h.jsep(n));this.isExecuter=!0},r;return t.inherit(n,i.expressionBase),r=n.prototype,r.toBeetleQuery=function(n){return this.exp?t.jsepToBeetleQuery(this.exp,n):""},r.clone=function(){return new n(this.expStr)},r.execute=function(t,i){return n.execute(t,this.exp,i)},n.execute=function(n,i,r){var u=i?t.jsepToFunction(i,r):function(n){return n};return o.queryFuncs.avg.impl(n,function(){return n},u)},n}(),maxExp:function(){var n=function(n){i.expressionBase.call(this,"exec;max",3,!0,!0);this.expStr=n;n&&(this.exp=h.jsep(n));this.isExecuter=!0},r;return t.inherit(n,i.expressionBase),r=n.prototype,r.toBeetleQuery=function(n){return this.exp?t.jsepToBeetleQuery(this.exp,n):""},r.clone=function(){return new n(this.expStr)},r.execute=function(t,i){return n.execute(t,this.exp,i)},n.execute=function(n,i,r){var u=i?t.jsepToFunction(i,r):function(n){return n};return o.queryFuncs.max.impl(n,function(){return n},u)},n}(),minExp:function(){var n=function(n){i.expressionBase.call(this,"exec;min",3,!0,!0);this.expStr=n;n&&(this.exp=h.jsep(n));this.isExecuter=!0},r;return t.inherit(n,i.expressionBase),r=n.prototype,r.toBeetleQuery=function(n){return this.exp?t.jsepToBeetleQuery(this.exp,n):""},r.clone=function(){return new n(this.expStr)},r.execute=function(t,i){return n.execute(t,this.exp,i)},n.execute=function(n,i,r){var u=i?t.jsepToFunction(i,r):function(n){return n};return o.queryFuncs.min.impl(n,function(){return n},u)},n}(),sumExp:function(){var n=function(n){i.expressionBase.call(this,"exec;sum",3,!0,!0);this.expStr=n;n&&(this.exp=h.jsep(n));this.isExecuter=!0},r;return t.inherit(n,i.expressionBase),r=n.prototype,r.toBeetleQuery=function(n){return this.exp?t.jsepToBeetleQuery(this.exp,n):""},r.clone=function(){return new n(this.expStr)},r.execute=function(t,i){return n.execute(t,this.exp,i)},n.execute=function(n,i,r){var u=i?t.jsepToFunction(i,r):function(n){return n};return o.queryFuncs.sum.impl(n,function(){return n},u)},n}(),countExp:function(){var n=function(n,t){i.expressionBase.call(this,"exec;count",3,!0,!0);this.expStr=n;n&&(this.exp=h.jsep(n));this.varContext=t;this.isExecuter=!0},r;return t.inherit(n,i.expressionBase),r=n.prototype,r.toBeetleQuery=function(n){return this.exp?t.jsepToBeetleQuery(this.exp,n):""},r.clone=function(){return new n(this.expStr,this.varContext)},r.execute=function(t,i){return n.execute(t,this.exp,i)},n.execute=function(n,i,r){return i&&(n=t.filterArray(n,t.jsepToFunction(i,r))),n.length},n}(),firstExp:function(){var n=function(n,t){i.expressionBase.call(this,"exec;first",3,!0,!1);this.expStr=n;n&&(this.exp=h.jsep(n));this.varContext=t;this.isExecuter=!0},u;return t.inherit(n,i.expressionBase),u=n.prototype,u.toBeetleQuery=function(n){return this.exp?t.jsepToBeetleQuery(this.exp,n):""},u.clone=function(){return new n(this.expStr,this.varContext)},u.execute=function(t,i){return n.execute(t,this.exp,i)},n.execute=function(n,i,u){if(i&&(n=t.filterArray(n,t.jsepToFunction(i,u))),n.length==0)throw t.createError(r.arrayEmpty,{array:n,expression:this});return n[0]},n}(),firstOrDefaultExp:function(){var n=function(n,t){i.expressionBase.call(this,"exec;firstOD",3,!0,!1);this.expStr=n;n&&(this.exp=h.jsep(n));this.varContext=t;this.isExecuter=!0},r;return t.inherit(n,i.expressionBase),r=n.prototype,r.toBeetleQuery=function(n){return this.exp?t.jsepToBeetleQuery(this.exp,n):""},r.clone=function(){return new n(this.expStr,this.varContext)},r.execute=function(t,i){return n.execute(t,this.exp,i)},n.execute=function(n,i,r){return i&&(n=t.filterArray(n,t.jsepToFunction(i,r))),n.length==0?null:n[0]},n}(),singleExp:function(){var n=function(n,t){i.expressionBase.call(this,"exec;single",3,!0,!1);this.expStr=n;n&&(this.exp=h.jsep(n));this.varContext=t;this.isExecuter=!0},u;return t.inherit(n,i.expressionBase),u=n.prototype,u.toBeetleQuery=function(n){return this.exp?t.jsepToBeetleQuery(this.exp,n):""},u.clone=function(){return new n(this.expStr,this.varContext)},u.execute=function(t,i){return n.execute(t,this.exp,i)},n.execute=function(n,i,u){if(i&&(n=t.filterArray(n,t.jsepToFunction(i,u))),n.length!=1)throw t.createError(r.arrayNotSingle,{array:n,expression:this});return n[0]},n}(),singleOrDefaultExp:function(){var n=function(n,t){i.expressionBase.call(this,"exec;singleOD",3,!0,!1);this.expStr=n;n&&(this.exp=h.jsep(n));this.varContext=t;this.isExecuter=!0},u;return t.inherit(n,i.expressionBase),u=n.prototype,u.toBeetleQuery=function(n){return this.exp?t.jsepToBeetleQuery(this.exp,n):""},u.clone=function(){return new n(this.expStr,this.varContext)},u.execute=function(t,i){return n.execute(t,this.exp,i)},n.execute=function(n,i,u){if(i&&(n=t.filterArray(n,t.jsepToFunction(i,u))),n.length>1)throw t.createError(r.arrayNotSingleOrEmpty,{array:n,expression:this});return n.length==0?null:n[0]},n}(),lastExp:function(){var n=function(n,t){i.expressionBase.call(this,"exec;last",3,!0,!1);this.expStr=n;n&&(this.exp=h.jsep(n));this.varContext=t;this.isExecuter=!0},u;return t.inherit(n,i.expressionBase),u=n.prototype,u.toBeetleQuery=function(n){return this.exp?t.jsepToBeetleQuery(this.exp,n):""},u.clone=function(){return new n(this.expStr,this.varContext)},u.execute=function(t,i){return n.execute(t,this.exp,i)},n.execute=function(n,i,u){if(i&&(n=t.filterArray(n,t.jsepToFunction(i,u))),n.length==0)throw t.createError(r.arrayEmpty,{array:n,expression:this});return n[n.length-1]},n}(),lastOrDefaultExp:function(){var n=function(n,t){i.expressionBase.call(this,"exec;lastOD",3,!0,!1);this.expStr=n;n&&(this.exp=h.jsep(n));this.varContext=t;this.isExecuter=!0},r;return t.inherit(n,i.expressionBase),r=n.prototype,r.toBeetleQuery=function(n){return this.exp?t.jsepToBeetleQuery(this.exp,n):""},r.clone=function(){return new n(this.expStr,this.varContext)},r.execute=function(t,i){return n.execute(t,this.exp,i)},n.execute=function(n,i,r){return i&&(n=t.filterArray(n,t.jsepToFunction(i,r))),n.length==0?null:n[n.length-1]},n}()}}(),queryFuncs:function(){var n={};return n.toupper=function(){var n=function(){i.queryFuncBase.call(this,"toupper","ToUpper",1)},r;return t.inherit(n,i.queryFuncBase),r=n.prototype,r.impl=function(n,t){return(t?t(n):n).toUpperCase()},new n}(),n.tolower=function(){var n=function(){i.queryFuncBase.call(this,"tolower","ToLower",1)},r;return t.inherit(n,i.queryFuncBase),r=n.prototype,r.impl=function(n,t){return(t?t(n):n).toLowerCase()},new n}(),n.substring=function(){var n=function(){i.queryFuncBase.call(this,"substring","Substring",3)},r;return t.inherit(n,i.queryFuncBase),r=n.prototype,r.impl=function(n,t,i,r){arguments.length==3?(r=i,i=t,t=n):t=t(n);i=i(n);r=r(n);var u=Number(i)+Number(r);return t&&t.substring(i,u)},new n}(),n.substringof=function(){var n=function(){i.queryFuncBase.call(this,"substringof","Contains",2)},r;return t.inherit(n,i.queryFuncBase),r=n.prototype,r.toBeetleFunction=function(n,t){return t=t?t+".":"",t+"Contains("+n+")"},r.impl=function(n,t,i){return i=i?i(n):n,i&&i.indexOf(t(n))>=0},new n}(),n.length=function(){var n=function(){i.queryFuncBase.call(this,"length","Length",1)},r;return t.inherit(n,i.queryFuncBase),r=n.prototype,r.toBeetleFunction=function(n){return n=n?n+".":"",n+"Length"},r.impl=function(n,t){return(t?t(n):n).length},new n}(),n.trim=function(){var n=function(){i.queryFuncBase.call(this,"trim","Trim",1)},r;return t.inherit(n,i.queryFuncBase),r=n.prototype,r.impl=function(n,t){return(t?t(n):n).trim()},new n}(),n.concat=function(){var n=function(){i.queryFuncBase.call(this,"concat","Concat",null)},r;return t.inherit(n,i.queryFuncBase),r=n.prototype,r.toBeetleFunction=function(){return"string.Concat("+Array.prototype.slice.call(arguments).join(", ")+")"},r.impl=function(n){for(var i=arguments[1](n).toString(),r=Array.prototype.slice.call(arguments,2),u=[],t=0;t=0},new u}(),n.round=function(){var n=function(){i.queryFuncBase.call(this,"round","Math.Round",1)},r;return t.inherit(n,i.queryFuncBase),r=n.prototype,r.toBeetleFunction=function(n){return"Math.Round("+n+")"},r.impl=function(n,t){return Math.round(t?t(n):n)},new n}(),n.ceiling=function(){var n=function(){i.queryFuncBase.call(this,"ceiling","Math.Ceiling(%1)",1)},r;return t.inherit(n,i.queryFuncBase),r=n.prototype,r.toBeetleFunction=function(n){return"Math.Ceiling("+n+")"},r.impl=function(n,t){return Math.ceil(t?t(n):n)},new n}(),n.floor=function(){var n=function(){i.queryFuncBase.call(this,"floor","Math.Floor",1)},r;return t.inherit(n,i.queryFuncBase),r=n.prototype,r.toBeetleFunction=function(n){return"Math.Floor("+n+")"},r.impl=function(n,t){return Math.floor(t?t(n):n)},new n}(),n.second=function(){var n=function(){i.queryFuncBase.call(this,"second","Second",1)},r;return t.inherit(n,i.queryFuncBase),r=n.prototype,r.toBeetleFunction=function(n){return n=n?n+".":"",n+"Second"},r.impl=function(n,t){return t=e.dataTypes.date.handle(t?t(n):n),t.getSeconds()},new n}(),n.minute=function(){var n=function(){i.queryFuncBase.call(this,"minute","Minute",1)},r;return t.inherit(n,i.queryFuncBase),r=n.prototype,r.toBeetleFunction=function(n){return n=n?n+".":"",n+"Minute"},r.impl=function(n,t){return t=e.dataTypes.date.handle(t?t(n):n),t.getMinutes()},new n}(),n.hour=function(){var n=function(){i.queryFuncBase.call(this,"hour","Hour",1)},r;return t.inherit(n,i.queryFuncBase),r=n.prototype,r.toBeetleFunction=function(n){return n=n?n+".":"",n+"Hour"},r.impl=function(n,t){return t=e.dataTypes.date.handle(t?t(n):n),t.getHours()},new n}(),n.day=function(){var n=function(){i.queryFuncBase.call(this,"day","Day",1)},r;return t.inherit(n,i.queryFuncBase),r=n.prototype,r.toBeetleFunction=function(n){return n=n?n+".":"",n+"Day"},r.impl=function(n,t){return t=e.dataTypes.date.handle(t?t(n):n),t.getDate()},new n}(),n.month=function(){var n=function(){i.queryFuncBase.call(this,"month","Month",1)},r;return t.inherit(n,i.queryFuncBase),r=n.prototype,r.toBeetleFunction=function(n){return n=n?n+".":"",n+"Month"},r.impl=function(n,t){return t=e.dataTypes.date.handle(t?t(n):n),t.getMonth()+1},new n}(),n.year=function(){var n=function(){i.queryFuncBase.call(this,"year","Year",1)},r;return t.inherit(n,i.queryFuncBase),r=n.prototype,r.toBeetleFunction=function(n){return n=n?n+".":"",n+"Year"},r.impl=function(n,t){return t=e.dataTypes.date.handle(t?t(n):n),t.getFullYear()},new n}(),n.max=function(){var n=function(){i.queryFuncBase.call(this,"max","Max",2)},u;return t.inherit(n,i.queryFuncBase),u=n.prototype,u.toODataFunction=function(){throw t.createError(r.functionNotSupportedForOData,["Max"]);},u.impl=function(n,t,i){var u,r,f;if(arguments.length==1?t=n:arguments.length==2?(i=t,t=n):t=t(n),t.length==0)return null;for(u=i?i(t[0]):t[0],r=1;ru&&(u=f);return u},new n}(),n.min=function(){var n=function(){i.queryFuncBase.call(this,"min","Min",2)},u;return t.inherit(n,i.queryFuncBase),u=n.prototype,u.toODataFunction=function(){throw t.createError(r.functionNotSupportedForOData,["Min"]);},u.impl=function(n,t,i){var u,r,f;if(arguments.length==1?t=n:arguments.length==2?(i=t,t=n):t=t(n),t.length==0)return null;for(u=i?i(t[0]):t[0],r=1;r0;for(r=0;r2&&(i=Array.prototype.slice.call(arguments).slice(2)),u=this.slice(n,n+t),this.changing.notify({added:i,removed:u}),i&&r(i,this),f=Array.prototype.splice.apply(this,arguments),this.after(this.object,this.property,this,u,i),this.changed.notify({added:i,removed:u}),f},n.remove=function(){var n=[],i=this;return this.changing.notify({added:[],removed:arguments}),t.forEach(arguments,function(r){var u=t.indexOf(i,r);u>=0&&(Array.prototype.splice.call(i,u,1),n.push(r))}),this.after(this.object,this.property,this,n,null),this.changed.notify({added:[],removed:arguments}),n},n.load=function(n,t,i,r,u){return this.entity.$tracker.loadNavigationProperty(this.propertyName,n,t,i,r,u)},i}(),event:function(){var i=function(n,t){this.name=n;this.subscribers=[];this.publisher=t},n=i.prototype;return n.toString=function(){return this.name},n.subscribe=function(n){t.findInArray(this.subscribers,n)||this.subscribers.push(n)},n.unsubscribe=function(n){t.removeFromArray(this.subscribers,n)},n.notify=function(){var n=arguments;t.forEach(this.subscribers,function(t){t.apply(t,n)})},i}(),dataTypes:function(){function u(n,i){throw t.createError(r.assignError,[n.name,i],{dataType:n,value:i});}var e=function(){var r=function(n){i.dataTypeBase.call(this,"dateBase");this.name=n},n;return t.inherit(r,i.dataTypeBase),n=r.prototype,n.defaultValue=function(){return new Date(-6847812e6)},n.isValid=function(n){return Object.prototype.toString.call(n)==="[object Date]"},n.handle=function(n){if(!this.isValid(n)){var t=n;n=this.tryParse(t);n||u(this,t)}return n},n.autoValue=function(){return new Date},n.getRawValue=function(n){return n==null?null:s.getDateConverter().toISOString(n)},n.tryParse=function(n){return s.getDateConverter().parse(n)},n.toODataValue=function(n){return n=this.handle(n),"datetime'"+s.getDateConverter().toISOString(n)+"'"},n.toBeetleValue=function(n){return n=this.handle(n),'"'+s.getDateConverter().toISOString(n)+'"'},r}(),n={};return n.object=function(){var n=function(){i.dataTypeBase.call(this,"object");t.tryFreeze(this)};return t.inherit(n,i.dataTypeBase),new n}(),n.array=function(){var u=function(){i.dataTypeBase.call(this,"array");t.tryFreeze(this)},n;return t.inherit(u,i.dataTypeBase),n=u.prototype,n.isValid=function(n){return n instanceof Array},n.defaultValue=function(){return[]},n.handle=function(n){return this.isValid(n)||(n=n.split(",")),n},n.autoValue=function(){throw t.createError(r.notImplemented,[this.name,"defaultValue"]);},n.toODataValue=function(n){return n},n.toBeetleValue=function(n){return n},new u}(),n.function=function(){var n=function(){i.dataTypeBase.call(this,"function");t.tryFreeze(this)};return t.inherit(n,i.dataTypeBase),new n}(),n.string=function(){var u=0,r=function(){i.dataTypeBase.call(this,"string");t.tryFreeze(this)},n;return t.inherit(r,i.dataTypeBase),n=r.prototype,n.defaultValue=function(){return""},n.handle=function(n){return this.isValid(n)||(n=n.toString()),n},n.autoValue=function(){return"key_"+--u},n.toODataValue=function(n){return"'"+n.replace(/'/g,"''")+"'"},n.toBeetleValue=function(n){return'"'+n.replace(/"/g,'""')+'"'},new r}(),n.guid=function(){var r=function(){i.dataTypeBase.call(this,"guid");t.tryFreeze(this)},n;return t.inherit(r,i.dataTypeBase),n=r.prototype,n.defaultValue=function(){return"00000000-0000-0000-0000-000000000000"},n.isValid=function(n){return typeof n=="string"&&n.match(/^\{?[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}\}?$/i)},n.handle=function(n){return this.isValid(n)||u(this,n),n},n.autoValue=function(){return t.createGuid()},n.toODataValue=function(n){return"guid'"+n+"'"},n.toBeetleValue=function(n){return'"'+n+'"'},new r}(),n.date=function(){var n=function(){e.call(this,"date");t.tryFreeze(this)};return t.inherit(n,e),new n}(),n.dateTimeOffset=function(){var n=function(){e.call(this,"dateTimeOffset");t.tryFreeze(this)},i;return t.inherit(n,e),i=n.prototype,i.toODataValue=function(n){return n=this.handle(n),"datetimeoffset'"+s.getDateConverter().toISOString(n)+"'"},new n}(),n.time=function(){var r=function(){i.dataTypeBase.call(this,"time");t.tryFreeze(this)},n;return t.inherit(r,i.dataTypeBase),n=r.prototype,n.defaultValue=function(){return"00:00:00"},n.isValid=function(n){return/^([01]?\d|2[0-3])(((:[0-5]?\d){2}(\.\d{1,3}){0,1})|(:[0-5]?\d){0,2})?$/.test(n)},n.handle=function(n){return this.isValid(n)||u(this,n),n},n.autoValue=function(){return"00:00:00"},n.toODataValue=function(n){return"time'"+n+"'"},n.toBeetleValue=function(n){return'"'+n+'"'},new r}(),n.boolean=function(){var r=function(){i.dataTypeBase.call(this,"boolean");t.tryFreeze(this)},f;return t.inherit(r,i.dataTypeBase),f=r.prototype,f.defaultValue=function(){return!1},f.handle=function(t){if(!this.isValid(t)){if(n.String.isValid(t)){var i=t.toLowerCase();if(i=="true"||i=="1")return!0;if(i=="false"||i=="0")return!1}throw u(this,t);}return t},new r}(),n.int=function(){var f=0,r=function(){i.dataTypeBase.call(this,"int");t.tryFreeze(this)},n;return t.inherit(r,i.dataTypeBase),n=r.prototype,n.defaultValue=function(){return 0},n.isValid=function(n){return typeof n=="number"&&n%1==0},n.handle=function(n){return typeof n!="number"&&(n=Number(n)),this.isValid(n)||u(this,n),n},n.autoValue=function(){return--f},new r}(),n.number=function(){var f=0,r=function(){i.dataTypeBase.call(this,"number");t.tryFreeze(this)},n;return t.inherit(r,i.dataTypeBase),n=r.prototype,n.defaultValue=function(){return 0},n.isValid=function(n){return!isNaN(n)&&typeof n=="number"},n.handle=function(n){return typeof n!="number"&&(n=Number(n)),this.isValid(n)||u(this,n),n},n.autoValue=function(){return--f},new r}(),n.byte=function(){var f=0,r=function(){i.dataTypeBase.call(this,"byte");t.tryFreeze(this)},n;return t.inherit(r,i.dataTypeBase),n=r.prototype,n.defaultValue=function(){return 0},n.isValid=function(n){return typeof n=="number"&&n%1==0&&n>=0&&n<256},n.handle=function(n){return typeof n!="number"&&(n=Number(n)),this.isValid(n)||u(this,n),n},n.autoValue=function(){return--f},new r}(),n.binary=function(){var r=function(){i.dataTypeBase.call(this,"binary");t.tryFreeze(this)},n;return t.inherit(r,i.dataTypeBase),n=r.prototype,n.defaultValue=function(){return'"AAAAAAAAAAA="'},n.isValid=function(){return!0},n.handle=function(n){return n},n.toODataValue=function(n){return n=this.handle(n),"X'"+s.getDateConverter().toISOString(n)+"'"},n.toBeetleValue=function(n){return'"'+n+'"'},new r}(),n.enum=function(){function e(n,i){var e,r,u,o;if(f.isArray(n))return e=0,t.forEach(n,function(n){e|=n.value}),e;if(f.isTypeOf(n,"string")){if(r=n.split(", "),r.length==1)return i[n];for(u=0;u0?this.name+" ("+n.join(", ")+")":this.name},u.validate=function(n,t){return this.func(n,t)==!0?null:this.message},n.byCode=function(i,u,f,e,o,h){var c=s.getLocalizeFunction();c&&(f=e&&c(e)||f,o=h&&c(h)||o);u=u||[];u.push(f);u.push(o);switch(i){case"re":return n.required.apply(null,u);case"sl":return n.stringLength.apply(null,u);case"ma":return n.maxLength.apply(null,u);case"mi":return n.minLength.apply(null,u);case"ra":return n.range.apply(null,u);case"rx":return n.regularExpression.apply(null,u);case"ea":return n.emailAddress.apply(null,u);case"cc":return n.creditCard.apply(null,u);case"ur":return n.url.apply(null,u);case"ph":return n.phone.apply(null,u);case"po":return n.postalCode.apply(null,u);case"ti":return n.time.apply(null,u);case"co":return n.compare.apply(null,u);default:throw t.createError(r.unknownValidator,[i]);}},n.required=function(i,u,e){var o=function(n){return n==null?!1:f.isTypeOf(n,"string")&&!i&&n==""?!1:!0};return u=t.formatString(u||r.requiredError,e),new n("Required",o,u,{allowEmptyStrings:i})},n.stringLength=function(i,u,e,o){var s=function(n){return!i&&!u?!0:f.isNotEmptyString(n)?i&&n.lengthu?!1:!0:!1};return e=t.formatString(e||r.stringLengthError,o,i,u),new n("StringLength",s,e,{min:i,max:u})},n.maxLength=function(i,u,f){var e=function(n){return n==null?!0:i&&n.length>i?!1:!0};return u=t.formatString(u||r.maxLenError,f,i),new n("MaxLength",e,u,{length:i})},n.minLength=function(i,u,f){var e=function(n){return n==null?!1:i&&n.lengthu?!1:!0};return f=t.formatString(f||r.rangeError,e,i,u),new n("Range",o,f,{min:i,max:u})},n.regularExpression=function(n,t,r){return f.isTypeOf(n,"string")&&(n=new RegExp(n)),i("RegularExpression",n,t,r)},n.emailAddress=function(n,t){return i("EmailAddress",/^\w+@[a-zA-Z_]+?\.[a-zA-Z]{2,3}$/,n,t)},n.creditCard=function(n,t){return i("CreditCard",/^((4\d{3})|(5[1-5]\d{2})|(6011)|(3[68]\d{2})|(30[012345]\d))[ -]?(\d{4})[ -]?(\d{4})[ -]?(\d{4}|3[4,7]\d{13})$/,n,t)},n.url=function(n,t){return i("Url",/(http|ftp|https):\/\/[\w-]+(\.[\w-]+)+([\w.,@?^=%&:\/~+#-]*[\w@?^=%&\/~+#-])?/,n,t)},n.phone=function(n,t){return i("Phone",/^(?!.*-.*-.*-)(?=(?:\d{8,10}$)|(?:(?=.{9,11}$)[^-]*-[^-]*$)|(?:(?=.{10,12}$)[^-]*-[^-]*-[^-]*$) )[\d-]+$/,n,t)},n.postalCode=function(n,t){return i("PostalCode",/^\d{5}([\-]?\d{4})?$/,n,t)},n.time=function(n,t){return i("Time",/^([01]?\d|2[0-3])(((:[0-5]?\d){2}(\.\d{1,3}){0,1})|(:[0-5]?\d){0,2})?$/,n,t)},n.compare=function(i,u,f){var o=function(n,r){var u=t.getValue(r,i);return n==u},e=s.getLocalizeFunction(),h=e&&e(i)||i;return u=t.formatString(u||r.compareError,f,h),new n("Compare",o,u,{property:i})},n}(),entityContainer:function(){function r(n,t){var i=new u(n);return t.push(i),i}var u=function(){function u(n,t){var i=r(n,t);return i>-1?t[i]:null}function r(n,t){var f=t.length,r,u,i;if(f>0)for(r=0,u=f-1;r<=u;){if(i=Math.floor((r+u)/2),t[i].keyn){u=i-1;continue}return i}return-1}function f(n,t){for(var i=0;it[i].key;)i++;return i}var i=function(n){this.typeName=n.name;this.keyIndex=[];t.tryFreeze(this)},n=i.prototype;return n.toString=function(){return this.typeName+": "+this.keyIndex.length},n.push=function(n,t){var i=f(n,this.keyIndex);this.keyIndex.splice(i,0,{key:n,entity:t})},n.remove=function(n){var t=r(n,this.keyIndex);this.keyIndex.splice(t,1)},n.getEntity=function(n){var t=u(n,this.keyIndex);return t?t.entity:null},n.getRelations=function(n,t){var f=t.inverse,r,i,u;if(!f)return null;for(r=[],i=0;i0)&&n.$tracker.isChanged()})},n.count=function(){return this.allEntities.length},n.findEntitySet=function(n){return t.findInArray(this.entitySets,n.name,"typeName")},i}(),entityTracker:function(){function y(n,t,i,r){r.entity=n;n.$tracker=r;r.entityType=t;r.entityState=u.entityStates.Detached;r.observableProvider=i;r.forceUpdate=!1;r.originalValues=[];r.changedValues=[];r.manager=null;r.owners=[];r.validationErrors=[];r.validationErrorsChanged=new e.event("validationErrorsChanged",r);r.entityStateChanged=new e.event("entityStateChanged",r);r.propertyChanged=new e.event("propertyChanged",r);r.arrayChanged=new e.event("arrayChanged",r);t.hasMetadata&&(r.key=l(r))}function p(n,t,i){var r={propertyChange:w,arrayChange:b,dataPropertyChange:k,scalarNavigationPropertyChange:d,pluralNavigationPropertyChange:g,arraySet:nt};return i.observableProvider.toObservable(n,t,r)}function c(n,t){n.baseType&&c(n.baseType,t);n.initializer&&n.initializer.call(t,t)}function l(n,t,i){var e=n.entityType,o,r,u,f;if(e.keys.length==0)return null;for(o=[],r=0;r=0;p--)k=y[p],k.entity==n&&k.property==u&&y.splice(p,1);y.length==0&&a.$tracker.manager&&a.$tracker.manager.detachEntity(a);h.$tracker.owners.push({entity:n,property:u})}c.manager&&(d=s.autoFixScalar,t.forEach(u.relatedNavigationProperties,function(n){var t,i,r;if(n.isScalar===!0)if(t=c.foreignKey(n),t){if(i=c.getValue(n.name),i&&i.$tracker.key===t)return;r=null;c.manager&&d&&(r=c.manager.getEntityByKey(t,n.entityType));r?c.setValue(n.name,r):i&&c.setValue(n.name,new e.valueNotifyWrapper(null))}else c.setValue(n.name,null)}))}}function d(n,u,h,c){var y=n.$tracker,d=!1,l,w,p,b,a,k;if(f.isInstanceOf(c,e.valueNotifyWrapper)&&(d=!0,c=c.value),l=h(),l!=c)if(u.checkAssign(c),h(c),s.liveValidate===!0&&o(u.validate(n),y,u),y.propertyChanged.notify({entity:n,property:u,oldValue:l,newValue:c}),v(c,y.manager),u.isComplex){if(c==null)throw t.createError(r.complexCannotBeNull,[u.displayName],{entity:n,property:u});for(w=l.$tracker.owners,p=w.length-1;p>=0;p--)b=w[p],b.entity==n&&b.property==u&&w.splice(p,1);l.$tracker.owners.length==0&&l.$tracker.manager&&l.$tracker.manager.detachEntity(l);c.$tracker.owners.push({entity:n,property:u});i(n,u.name,c.$tracker.toRaw(),y)}else d||(u.triggerOwnerModify&&u.foreignKeys.length==0&&i(n,null,null,y),t.setForeignKeys(n,u,c)),a=u.inverse,a&&(a.isScalar?(l&&l.$tracker.setValue(a.name,null),c&&c.$tracker.setValue(a.name,n)):(l&&l.$tracker.getValue(a.name).remove(n),c&&(k=c.$tracker.getValue(a.name),t.findInArray(k,n)||k.push(n))))}function g(n,r,u,f,e){var c=n.$tracker,h;s.liveValidate===!0&&o(r.validate(n),c,r);r.triggerOwnerModify&&i(n,null,null,c);c.arrayChanged.notify({entity:n,property:r,items:u,removedItems:f,addedItems:e});h=r.inverse;h&&(f&&t.forEach(f,function(t){t.$tracker.getValue(h.name)==n&&t.$tracker.setValue(h.name,null)}),e&&t.forEach(e,function(t){v(t,c.manager);t.$tracker.setValue(h.name,n)}))}function nt(n,i,f,e){var l=s.getArraySetBehaviour(),h,o,c;if(l==u.arraySetBehaviour.NotAllowed)throw t.createError(r.settingArrayNotAllowed,{entity:n,property:e});if(h=[],o=t.filterArray(f,function(){return!0}),l==u.arraySetBehaviour.Replace&&t.forEach(i,function(n){t.findInArray(o,n)?t.removeFromArray(o,n):h.push(n)}),l==u.arraySetBehaviour.Append&&t.forEach(f,function(n){t.findInArray(i,n)&&t.removeFromArray(o,n)}),h.length>0)for(c=h.length-1;c>=0;c--)i.splice(t.indexOf(i,h[c]),1);o.length>0&&i.push.apply(i,o)}function tt(n){var i=n.$tracker;t.forEach(i.entityType.navigationProperties,function(r){var f,e,u;r.inverse&&(f=r.inverse,r.isScalar?(e=i.getValue(r.name),e&&t.setForeignKeys(e,f,n)):(u=i.getValue(r.name),u&&u.length>0&&t.forEach(u,function(i){t.setForeignKeys(i,f,n)})))})}function v(n,i){if(n&&i&&!n.$tracker.entityType.isComplexType&&!i.isInManager(n)){if(n.$tracker.manager)throw t.createError(r.entityAlreadyBeingTracked,null,{entity:n,manager:i});i.addEntity(n)}}function i(n,r,f,e){var o=e.entityState;o==u.entityStates.Unchanged&&(t.forEach(e.entityType.navigationProperties,function(n){var u=n.inverse,r;u&&u.triggerOwnerModify&&(r=e.getValue(n.name),r&&(n.isScalar?i(r,null,null,r.$tracker):t.forEach(r,function(n){i(n,null,null,n.$tracker)})))}),e.toModified());it(r,f,e.originalValues,e.changedValues)}function it(n,i,r,u){var f,e;n!=null&&(i==null||i.$tracker==null||i.$tracker.entityType.isComplexType)&&(f=t.findInArray(r,n,"p"),f||r.push({p:n,v:i}),e=t.findInArray(u,n,"p"),e||u.push({p:n,v:i}))}function o(n,i,r){var u=[],f=r?t.filterArray(i.validationErrors,function(n){return n.property===r}):t.filterArray(i.validationErrors,function(){return!0});t.forEach(f,function(r){t.findInArray(n,r.validator,"validator")?t.removeFromArray(n,r.validator,"validator"):(t.removeFromArray(i.validationErrors,r),u.push(r))});i.validationErrors=i.validationErrors.concat(n);(u.length>0||n.length>0)&&i.validationErrorsChanged.notify({errors:i.validationErrors,added:n,removed:u})}var h=function(n,t,i){delete n.$type;delete n.$id;y(n,t,i||s.getObservableProvider(),this);p(n,t,this);c(t,n)},n=h.prototype;return n.toString=function(){return"EntityTracker: "+this.entityType.shortName+", key: "+this.key},n.setManagerInfo=function(n){if(this.manager)throw t.createError(r.entityAlreadyBeingTracked,{otherManager:this.manager});t.assertPrm(n,"manager").isInstanceOf(e.entityManager).check();this.manager=n},n.isChanged=function(){return this.entityState===u.entityStates.Added||this.entityState===u.entityStates.Deleted||this.entityState===u.entityStates.Modified},n.toAdded=function(){if(this.entityState!=u.entityStates.Added){var n={entity:this.entity,oldState:this.entityState,newState:u.entityStates.Added,newChanged:!this.isChanged()};this.entityState=u.entityStates.Added;this.entityStateChanged.notify(n)}},n.toModified=function(){if(this.entityState!=u.entityStates.Modified){var n={entity:this.entity,oldState:this.entityState,newState:u.entityStates.Modified,newChanged:!this.isChanged()};this.entityState=u.entityStates.Modified;this.entityStateChanged.notify(n)}},n.toDeleted=function(){if(this.entityState!=u.entityStates.Deleted){var n={entity:this.entity,oldState:this.entityState,newState:u.entityStates.Deleted,newChanged:!this.isChanged()};this.entityState=u.entityStates.Deleted;this.entityStateChanged.notify(n)}},n.toUnchanged=function(){if(this.entityState!=u.entityStates.Unchanged){var n={entity:this.entity,oldState:this.entityState,newState:u.entityStates.Unchanged,newUnchanged:this.isChanged()};this.originalValues.length=0;this.changedValues.length=0;this.entityState=u.entityStates.Unchanged;this.entityStateChanged.notify(n)}},n.toDetached=function(){if(this.entityState!=u.entityStates.Detached){var n={entity:this.entity,oldState:this.entityState,newState:u.entityStates.Detached,newUnchanged:this.isChanged()};this.entityState=u.entityStates.Detached;this.entityStateChanged.notify(n)}},n.undoChanges=function(){var n=this;t.forEach(this.changedValues,function(t){n.setValue(t.p,t.v)});this.changedValues.length=0},n.acceptChanges=function(){this.changedValues.length=0},n.getValue=function(n){return this.observableProvider.getValue(this.entity,n)},n.setValue=function(n,t){this.observableProvider.setValue(this.entity,n,t)},n.foreignKey=function(n){var r=n.entityType,u,t,e,f,o,i;if(r.keys.length==0)return null;for(u=[],t=0;t2)throw t.createError(r.managerInvalidArgs,{entityManager:u});var o=n[0],s=n[1];if(f.isInstanceOf(o,i.dataServiceBase))u.dataService=o;else if(f.isTypeOf(o,"string"))u.dataService=s?new v.webApiService(o,s):new v.webApiService(o,!1);else throw t.createError(r.managerInvalidArgs,{entityManager:this});u.pendingChangeCount=0;u.entities=new e.entityContainer;u.validationErrors=[];u.entityStateChanged=new e.event("entityStateChanged",u);u.validationErrorsChanged=new e.event("validationErrorsChanged",u);u.hasChangesChanged=new e.event("hasChangesChanged",u);u.queryExecuting=new e.event("queryExecuting",u);u.queryExecuted=new e.event("queryExecuted",u);u.saving=new e.event("saving",u);u.saved=new e.event("saved",u)}function o(n,i,e,o,h,c,l){e||(e=u.mergeStrategy.Preserve);o&&o!==u.entityStates.Detached||(o=u.entityStates.Added);c==null&&(c=s.autoFixScalar);l==null&&(l=s.autoFixPlural);i=i||h.flatEntities(f.isArray(n)?n:[n]);var y=[],p=[],v=[],w=h.entities.count(),a=h;t.forEach(i,function(n){var f=n.$tracker;if(!f&&n.$type)f=a.toEntity(n,n.$type).$tracker;else if(f.entityType.isComplexType||h.isInManager(n))return;var o=f.entityType,s=f.key,i=null;if(w>0&&s&&(i=a.entities.getEntityByKey(s,o.floorType)),i){if(o.name!==i.$tracker.entityType.name)throw t.createError(r.sameKeyOnDifferentTypesError,[i.$tracker.entityType.shortName,o.shortName],{existingEntity:i,entity:n,manager:a});if(e===u.mergeStrategy.ThrowError)throw t.createError(r.sameKeyExists,{existingEntity:i,entity:n,manager:a});else e===u.mergeStrategy.Preserve?v.push({o:n,n:i}):(v.push({o:n,n:i}),p.push({o:i,n:n}))}else a.entities.push(n),n.$tracker.setManagerInfo(a),y.push(n)});t.forEach(y,function(n){d(n,c,l,a);lt(n,a);k(n,o);s.validateOnMerge===!0&&n.$tracker.validate()});t.forEach(p,function(n){ot(n.o,n.n);k(n.o,o)});t.forEach(v,function(i){var r=t.indexOf(n,i.o);r>=0&&(n[r]=i.n);st(i.o,i.n,c,l,a)})}function b(n,i){if(!i.isInManager(n))throw t.createError(r.entityNotBeingTracked,{entity:n,manager:i});}function k(n,i){if(i===u.entityStates.Unchanged)n.$tracker.toUnchanged();else if(i===u.entityStates.Modified)n.$tracker.toModified();else if(i===u.entityStates.Added)n.$tracker.toAdded();else throw t.createError(r.mergeStateError,[i],{entity:n,state:i});}function ot(n,i){var r=i.$tracker;t.forEach(r.entityType.dataProperties,function(t){n.$tracker.setValue(t.name,r.getValue(t.name))})}function d(n,i,r,u){if(i==!0||r==!0){var e=n.$tracker,o=e.entityType;t.forEach(o.navigationProperties,function(t){var f=e.getValue(t.name),o,h,s,c,l;if(t.isComplex){for(o=f.$tracker.owners,h=!1,s=0;s=0;u--)r=t[u],r&&r.$tracker&&r.$tracker.entityType.hasMetadata&&r.$tracker.manager!=i&&(f=i.getEntityByKey(r.$tracker.key,r.$tracker.entityType),f?t.splice(u,1,f):t.splice(u,1))}function st(n,i,r,u,f){var c=n.$tracker.entityType,h,s,e,o;t.forEach(c.navigationProperties,function(c){var y,p,l,a,v;c.isComplex||(h=n.$tracker,s=i.$tracker,e=h.getValue(c.name),o=s.getValue(c.name),c.isScalar?o||(r==!0?tt(i,c,null,f):r===!0&&c.inverse&&c.inverse.isScalar||u===!0&&c.inverse&&!c.inverse.isScalar||(y=h.foreignKey(c),p=s.foreignKey(c),y==p&&e!=null&&f.isInManager(e)&&(l=c.inverse,l?l.isScalar?e.$tracker.setValue(l.name,i):(a=e.$tracker.getValue(l.name),v=t.indexOf(a,n),v>=0&&a.splice(v,1,i)):s.setValue(c.name,e)))):u?it(i,c,o,f):r===!0&&c.inverse||t.forEach(e,function(n){f.isInManager(n)&&!t.findInArray(o,n)&&o.push(n)}))})}function tt(n,t,i,r){var f=n.$tracker,u=f.foreignKey(t);i?u!=i.$tracker.key&&setForeignKeys(n,t,i):u&&f.setValue(t.name,r.entities.getEntityByKey(u,t.entityType))}function it(n,i,r,u){var f=u.entities.getRelations(n,i);f&&t.forEach(f,function(n){t.findInArray(r,n)||r.push(n)})}function rt(n,i){var r=n.$tracker,u=r.entityType,f=i?new e.valueNotifyWrapper(null):null;u.hasMetadata&&t.forEach(u.navigationProperties,function(n){n.isScalar?r.setValue(n.name,f):r.getValue(n.name).splice(0)})}function ht(n,i,r){t.forEach(n,function(n){n.$tracker.entityState==u.entityStates.Deleted?(n.$tracker.toDetached(),ut(n,r),i.remove(n)):n.$tracker.toUnchanged()})}function ct(n,i,r){if(i.removed.length>0)for(var u=i.removed.length-1;u>=0;u--)r.validationErrors.splice(t.indexOf(r.validationErrors,i.removed[u]),1);i.added.length>0&&r.validationErrors.push.apply(r.validationErrors,i.added);(i.removed.length>0||i.added.length>0)&&r.validationErrorsChanged.notify({errors:r.validationErrors,added:i.added,removed:i.removed})}function lt(n,t){n.$tracker.entityStateChanged.subscribe(function(n){var i=t.pendingChangeCount;n.newChanged===!0?t.pendingChangeCount++:n.newUnchanged===!0&&t.pendingChangeCount--;t.entityStateChanged.notify(n);i==0&&t.pendingChangeCount>0?t.hasChangesChanged.notify({hasChanges:!0}):i>0&&t.pendingChangeCount==0&&t.hasChangesChanged.notify({hasChanges:!1})});n.$tracker.validationErrorsChanged.subscribe(function(i){ct(n,i,t)})}function ut(n,i){n.$tracker.entityStateChanged.unsubscribe(i.entityStateChanged.notify);n.$tracker.validationErrorsChanged.unsubscribe(i.validationErrorsChanged.notify);var r=t.filterArray(i.validationErrors,function(t){return t.entity==n});t.removeFromArray(i.validationErrors,n,"entity");i.validationErrorsChanged.notify({errors:i.validationErrors,removed:r,added:[]})}function at(n,t,i){var r={manager:n,query:t,options:i};return n.queryExecuting.notify(r),a.queryExecuting.notify(r),r}function ft(n,t,i,r){var u={manager:n,query:t,options:i,result:r};return n.queryExecuted.notify(u),a.queryExecuted.notify(u),u.result}function vt(n,t,i){var r={manager:n,changes:t,options:i};return n.saving.notify(r),a.saving.notify(r),r.options}function yt(n,t,i){var r={manager:n,changes:t,options:i};n.saved.notify(r);a.saved.notify(r)}function l(n,t,i,r){n&&n(r);t&&t.resolve(i,r)}function h(n,t,i,r,u){if(n&&n(r),t&&t.reject(i,r),r.manager=u,!n&&!t)throw new r;}var y=function(){et(arguments,this)},n=y.prototype;return n.toString=function(){return this.dataService.toString()+", "+r.pendingChanges+": "+this.pendingChangeCount+", "+r.validationErrors+": "+this.validationErrors.length},n.getEntityType=function(n){return this.dataService.getEntityType(n)},n.createQuery=function(n,t){return this.dataService.createQuery(n,t,this)},n.createEntityQuery=function(n,t){return this.dataService.createEntityQuery(n,t,this)},n.registerCtor=function(n,t,i){this.dataService.registerCtor(n,t,i)},n.createEntity=function(n,t){var i=this.dataService.createEntity(n,t),r=[i];return o(r,null,u.mergeStrategy.ThrowError,u.entityStates.Added,this),i},n.createDetachedEntity=function(n,t){return this.dataService.createEntity(n,t)},n.createRawEntity=function(n,t){return this.dataService.createRawEntity(n,t)},n.createEntityAsync=function(n,t,i,r,u){return p(n,t,i,r,u,this)},n.createRawEntityAsync=function(n,t,i,r,u){return i?i.makeObservable=!1:i={makeObservable:!1},p(n,t,i,r,u,this)},n.executeQuery=function(n,i,e,c){var k,a,p,d,g,b;n.options&&(i=t.combine(n.options,i));k=at(this,n,i);n=k.query;i=k.options;a=i&&i.async==!1?null:s.getPromiseProvider();p=null;a&&(p=a.deferred());var y=u.mergeStrategy.Preserve,v=u.executionStrategy.Server,w=null,nt,tt;if(f.isEnum(i,u.mergeStrategy)?(y=i,i={makeObservable:y!=u.mergeStrategy.NoTrackingRaw}):f.isEnum(i,u.executionStrategy)?v=i:i&&(i.merge&&(y=i.merge),i.execution&&(v=i.execution),i.autoFixScalar!=null&&(nt=i.autoFixScalar),i.autoFixPlural!=null&&(tt=i.autoFixPlural),i.makeObservable=y!=u.mergeStrategy.NoTrackingRaw),d=y==u.mergeStrategy.NoTracking||y==u.mergeStrategy.NoTrackingRaw,d&&v==u.executionStrategy.Both)throw t.createError(r.executionBothNotAllowedForNoTracking,{executionStrategy:v,mergeStrategy:y});return((v==u.executionStrategy.Local||v==u.executionStrategy.LocalIfEmptyServer)&&(w=this.executeQueryLocally(n)),g=null,v==u.executionStrategy.Local||v==u.executionStrategy.LocalIfEmptyServer&&w&&(w.length==null||w.length>0)?(w=ft(this,n,i,w),l(e,a,p,w)):(b=this,this.dataService.executeQuery(n,i,function(t,r,s,w){try{var k=!1;t&&(d||(f.isArray(t)||(t=[t],k=!0),o(t,r,y,u.entityStates.Unchanged,b,nt,tt),k&&(t=t[0])));v==u.executionStrategy.Both&&(t=b.executeQueryLocally(n),s!=null&&t.$inlineCountDiff!=null&&(s+=t.$inlineCountDiff));t&&(n.inlineCountEnabled&&s!=null&&(t.$inlineCount=s),w&&(t.$extra=w));t=ft(b,n,i,t);l(e,a,p,t);a||(g=t)}catch(it){h(c,a,p,it,b)}},function(t){t.query=n;h(c,a,p,t,b)})),a)?a.getPromise(p):g},n.executeQueryLocally=function(n,i){var c=n.entityType,l,e,h,a;if(c)if(e=this.entities.findEntitySet(c),e)l=e.getEntities();else return[];else throw t.createError(r.typeRequiredForLocalQueries);var f=[],o=[],s=!1;return t.forEach(l,function(n){n.$tracker.entityState==u.entityStates.Added?(s=!0,f.push(n)):n.$tracker.entityState==u.entityStates.Deleted?(s=!0,o.push(n)):(f.push(n),o.push(n))}),h=n.toFunction(),f=h(f,i),f.$inlineCount&&s&&(a=h(o,i),f.$inlineCountDiff=f.$inlineCount-a.$inlineCount),f},n.getEntityByKey=function(n,t){var i=f.isInstanceOf(t,c.entityType)?t:this.getEntityType(t,!0);return this.entities.getEntityByKey(n,i)},n.deleteEntity=function(n){var i,f,e;for(b(n,this),i=this,f=[],t.forEach(n.$tracker.entityType.navigationProperties,function(u){var e,o;if(u.cascadeDelete){if(u.inverse&&u.inverse.cascadeDelete)throw t.createError(r.twoEndCascadeDeleteNotAllowed,{entity:n,property:u});e=n.$tracker.getValue(u.name);e&&(u.isScalar?u.foreignKeys!=null&&u.foreignKeys.length>0?f.push(e):i.deleteEntity(e):(o=t.filterArray(e,function(){return!0}),t.forEach(o,function(n){i.deleteEntity(n)})))}}),n.$tracker.entityState===u.entityStates.Added?this.detachEntity(n):(rt(n,!0),n.$tracker.toDeleted()),e=0;e0)throw t.createError(r.cannotDetachComplexTypeWithOwners);b(n,this);rt(n,!0);ut(n,this);n.$tracker.toDetached();n.$tracker.manager=null;this.entities.remove(n)},n.createSavePackage=function(n,t){var f=t&&t.userData||null,i=t&&t.forceUpdate,r,u;return i==null&&(i=s.forceUpdate),r={userData:f,forceUpdate:i},u=this.exportEntities(n||this.getChanges(),t),r.entities=u,r},n.rejectChanges=function(n,i){var e=this,r;f.isArray(n)||(n=[n]);r=i===!0?this.flatEntities(n):n;t.forEach(r,function(n){var t=n.$tracker;t.entityState==u.entityStates.Added?e.detachEntity(n):t.entityState==u.entityStates.Modified&&(t.undoChanges(),t.toUnchanged())})},n.undoChanges=function(n,i){f.isArray(n)||(n=[n]);var r=i===!0?this.flatEntities(n):n;t.forEach(r,function(n){n.$tracker.undoChanges()})},n.acceptChanges=function(n,i){f.isArray(n)||(n=[n]);var r=i===!0?this.flatEntities(n):n;t.forEach(r,function(n){n.$tracker.acceptChanges()})},n.exportEntities=function(n,i){var e=[],r,f;return n=n||this.entities.getEntities(),r=i&&i.forceUpdate,r==null&&(r=s.forceUpdate),f=i&&i.minimizePackage,f==null&&(f=s.minimizePackage),t.forEach(n,function(n,i){var o=n.$tracker,a=o.entityType,h=o.entityState,c,s,l;if(r===!1&&(r=o.forceUpdate),c={},f===!0)if(h==u.entityStates.Modified)if(o.originalValues.length>0)s={},t.forEach(o.originalValues,function(t){var f,r=t.p.split("."),e,u,i;if(r.length>1){for(e=0;e0},n.getChanges=function(){return this.entities.getChanges()},n.saveChanges=function(n,i,e){var c=n&&n.entities||this.getChanges(),a,v,p,w,y;n=vt(this,c,n);a=n&&n.async==!1?null:s.getPromiseProvider();v=null;a&&(v=a.deferred());var b=n&&n.autoFixScalar,k=n&&n.autoFixPlural,d=null;return(f.isArray(c)||(c=[c]),c&&c.length>0?(p=[],s.validateOnSave===!0&&t.forEach(c,function(n){if(n.$tracker.entityState!=u.entityStates.Deleted){var t=n.$tracker.validate();t&&t.length>0&&p.push({entity:n,validationErrors:t})}}),p.length>0?(w=new t.createError(r.validationFailed,{entities:c,validationErrors:p}),w.entitiesInError=p,h(e,a,v,w,this)):(y=this,this.dataService.saveChanges(this.createSavePackage(c,n),n,function(r){try{r.GeneratedEntities!=null&&r.GeneratedEntities.length>0&&o(r.GeneratedEntities,null,u.mergeStrategy.Preserve,u.entityStates.Unchanged,y,b,k);r.GeneratedValues&&t.forEach(r.GeneratedValues,function(n){var r=c[n.Index],f,t=n.Property.split("."),i,s,e;if(t.length>1){for(i=0;i",function(n,t){return n()>t()},"gt")),i.push(new n("Lesser","<",function(n,t){return n()=",function(n,t){var i=n(),r=t();return i==r||i>r},"ge")),i.push(new n("LesserEqual","<=",function(n,t){var i=n(),r=t();return i==r||i>",function(n,t){return n()>>t()})),n.find=function(n){var r=t.filterArray(i,function(t){return t.code==n||t.oData==n||t.js==n});return r.length>0?r[0]:null},n}(),filterOps:new h.enums({Equals:{oData:"eq",code:"=="},NotEqual:{oData:"ne",code:"!="},Greater:{oData:"gt",code:">"},Lesser:{oData:"lt",code:"<"},GreaterEqual:{oData:"ge",code:">="},LesserEqual:{oData:"le",code:"<="},Contains:{oData:"substringof",code:"contains",isFunc:!0},StartsWith:{oData:"startswith",code:"startswith",isFunc:!0},EndsWith:{oData:"endswith",code:"endswith",isFunc:!0}}),mergeStrategy:new h.enums("Preserve","Overwrite","ThrowError","NoTracking","NoTrackingRaw"),executionStrategy:new h.enums("Server","Local","Both","LocalIfEmptyServer"),generationPattern:new h.enums("Identity","Computed"),arraySetBehaviour:new h.enums("NotAllowed","Replace","Append")}}(),a=function(){return{queryExecuting:new e.event("beetleQueryExecuting",this),queryExecuted:new e.event("beetleQueryExecuted",this),saving:new e.event("beetleSaving",this),saved:new e.event("beetleSaved",this),info:new e.event("beetleInfo",this),warning:new e.event("beetleWarning",this),error:new e.event("beetleError",this)}}(),s=function(){var s,o;s=n.ko?l.koObservableProviderInstance:n.Backbone?l.backboneObservableProviderInstance:l.propertyObservableProviderInstance;n.Q?o=l.qPromiseProviderInstance:n.jQuery&&(o=l.jQueryPromiseProviderInstance);var h=u.arraySetBehaviour.NotAllowed,c=l.defaultDateConverterInstance,a,e={};return e.autoFixScalar=!0,e.autoFixPlural=!1,e.validateOnMerge=!0,e.validateOnSave=!0,e.liveValidate=!0,e.handleUnmappedProperties=!0,e.isCaseSensitive=!1,e.ignoreWhiteSpaces=!1,e.forceUpdate=!1,e.workAsync=!0,e.ajaxTimeout=null,e.minimizePackage=!1,e.getObservableProvider=function(){return s},e.setObservableProvider=function(n){var h,e,o;if(f.isInstanceOf(n,i.observableProviderBase))s=n;else{if(f.isNotEmptyString(n))for(h=u.observableProviders.symbols(),e=0;e p.Name.",functionNotSupportedForOData:"OData does not support %0 function, please use Beetle Query Strings (like: manager.executeQuery(query, {useBeetleQueryStrings: true}))",instanceError:"%0 is not an instance of %1.",invalidArguments:"Invalid arguments.",invalidDefaultValue:"%0 is not a valid default value for %0.",invalidEnumValue:"Invalid enum value, %0 cannot be found in %1.",invalidExpression:"%0 can only have %1 type expressions.",invalidPropertyAlias:"Invalid property alias.",invalidStatement:"Invalid statement.",invalidValue:"Invalid value for %0 property.",managerInvalidArgs:"Invalid arguments. Valid args are: {DataService} or {Uri, [MetadataManager]} or {Uri, [metadataString (string)]} or {Uri, [doNotUseMetadata (bool)]}.",maxLenError:"%0 property length cannot exceed %1.",maxPrecisionError:"Value %0 exceeded maximum precision of %1.",mergeStateError:"Cannot merge entities with %0 state.",minLenError:"%0 property length must be greater than %1.",noMetadataEntityQuery:"Cannot create entity query when no metadata is available.",noMetadataRegisterCtor:"Cannot register constructor when no metadata is available.",noOpenGroup:"Could not find any open group.",notFoundInMetadata:"Could not find %0 in metadata.",notImplemented:"%0 %1 is not implemented.",notNullable:"Cannot set %0 with null, property is not nullable.",oDataNotSupportMultiTyped:"Multi-Typed queries cannot be used for OData services.",onlyManagerCreatedCanBeExecuted:"Only queries which are created from a manager can be directly executed.",onlyManagerCreatedCanAcceptEntityShortName:"Only queries which are created from a manager can accept entity type short name parameter.",pendingChanges:"Pending changes",pluralNeedsInverse:"To load plural relations, navigation property must have inverse.",projectionsMustHaveAlias:"All projected values must have a property name or alias.",propertyNotFound:"Could not find property: %0.",queryClosed:"Query is closed, expression cannot be added. Queries must be executed after some expressions like first, single, any, all etc..",rangeError:"%0 property value must be between %1 and %2.",requiredError:"%0 property is required.",sameKeyExists:"There is already an entity with same key in the manager.",sameKeyOnDifferentTypesError:"Two different types of entities cannot have same keys when they are from same inheritance root (%0, %1).",settingArrayNotAllowed:"Setting array property is not allowed, you may change this via beetle.settings.setArraySetBehaviour(behavior).",stringLengthError:"%0 property length must be between %1 and %2.",twoEndCascadeDeleteNotAllowed:"Two-end cascade deletes are not supported.",typeError:"%0 type is not %1.",typeMismatch:"%0 value type mismatch. expected type: %1, given type: %2, value: %3",typeRequiredForLocalQueries:'To execute queries locally, entity type must be provided (createQuery("Entities", "Entity") or createEntityQuery("Entity")).',unclosedQuote:'Unclosed quote in "%0".',unclosedToken:'Unclosed "%0".',unexpectedProperty:'Unexpected property "%0".',unexpectedToken:"Unexpected %0.",unknownDataType:"Unknown data type: %0.",unknownExpression:"Unknown expression.",unknownFunction:"Unknown function: %0.",unknownParameter:"Unknown parameter: %0.",unknownValidator:"Unknown validator type: %0.",unsoppertedState:"Unsupported entity state: %0.",validationErrors:"Validation errors",validationFailed:"Validation failed.",valueCannotBeNull:"Value cannot be null: %0.",operatorNotSupportedForOData:"Operator is not supported for OData: %0."}),n.beetleI18N}(),y=function(){return{version:"1.0",i18N:r,helper:t,assert:f,libs:h,baseTypes:i,impls:l,metadata:c,querying:o,core:e,services:v,enums:u,events:a,settings:s,MetadataManager:c.metadataManager,entityManager:e.entityManager,EntityManager:e.entityManager,WebApiService:v.webApiService,MvcService:v.mvcService,EntityStates:u.entityStates,FilterOps:u.filterOps,MergeStrategy:u.mergeStrategy}}();return t.tryFreeze(y),n.beetle=y,y})(window); +(function(n){"use strict";var t=function(){return{assertPrm:function(n,t){return new f(n,t)},combine:function(n,i){var r,e,u;if(n==i)return n;if(r={},n!=null)for(e in n)r[e]=n[e];if(i!=null)for(u in i){var s=r[u],o=i[u],h=f.isTypeOf(s,"object")&&f.isTypeOf(o,"object")?t.combine(s,o):o;r[u]=h}return r},objEquals:function(n,i){var u,e,r,o;if(n==i)return!0;if(n==null||i==null)return!1;if(f.isObject(n)&&f.isObject(i)){u=0;e=0;for(r in n){if(!i.hasOwnProperty(r)||!t.objEquals(t.getValue(n,r),t.getValue(i,r)))return!1;u++}for(o in i)e++;return u==e}return!1},equals:function(n,t,i,r){var u,f;return typeof n=="string"&&typeof t=="string"&&(u=r&&r.isCaseSensitive,u==null&&(u=s.isCaseSensitive),f=r&&r.ignoreWhiteSpaces,f==null&&(f=s.ignoreWhiteSpaces),u||(n=n.toLowerCase(),t=t.toLowerCase()),f&&(n=n.trim(),t=t.trim())),i?n===t:n==t},formatString:function(n){var t=arguments,i=RegExp("%([0-"+(arguments.length-1)+"])","g"),r=RegExp("{([0-"+(arguments.length-2)+"])}","g");return n.replace(i,function(n,i){return t[Number(i)+1]||""}).replace(r,function(n,i){return t[Number(i)+1]||""})},tryFreeze:function(n,t){var r,i;if(!n||!Object.freeze)return n;if(Object.freeze(n),t===!0)for(r in n)i=n[r],f.isArray(i)?this.tryFreezeArray(i,t):f.isObject(i)&&this.tryFreeze(i,t);return n},tryFreezeArray:function(n,t){if(n&&Object.freeze)for(var i=0;i=0;u--)n.splice(r[u],1);return r.length},mapArray:function(n,t){for(var r,u=[],i=0;i0&&(u.splice(0,0,n),n=t.formatString.apply(null,u)),o=new Error(n),e)for(s in e)o[s]=e[s];return a.error.notify(o),o},setForeignKeys:function(n,t,i){for(var u,f,e,o,r=0;r")return i.aliases.push(n.left.name),it=t.jsepToODataQuery(n.right,i),i.aliases.pop(),it;if(k=u.langOperators.find(n.operator).oData,!k)throw t.createError(r.operatorNotSupportedForOData,[n.operator],{expression:n});return"("+t.jsepToODataQuery(n.left,i)+" "+k+" "+t.jsepToODataQuery(n.right,i)+")"}if(n.type=="UnaryExpression")return n.operator+t.jsepToODataQuery(n.argument,i);if(n.type=="Identifier"){if(l=n.name,l[0]=="@"){if(a=undefined,v=l.slice(1),i.expVarContext&&i.expVarContext[v]!==undefined?a=i.expVarContext[v]:i.varContext&&(a=i.varContext[v]),a===undefined)throw t.createError(r.unknownParameter,[l],{expression:n,queryContext:i});return e.dataTypes.toODataValue(a)}return l}if(n.type=="Literal")return e.dataTypes.toODataValue(n.value);if(n.type=="MemberExpression")return n.object.name&&n.object.name!=i.currentAlias&&t.findInArray(i.aliases,n.object.name)?n.property.name:t.jsepToODataQuery(n.object,i)+"/"+n.property.name;if(n.type=="Compound"){for(f=[],h=0;h"&&(c=s[0].left.name,s=[s[0].right]),c&&(i.currentAlias=c,i.aliases.push(c)),p=0;p"?(i.aliases.push(n.left.name),tt=t.jsepToBeetleQuery(n.right,i),i.aliases.pop(),tt):(it=u.langOperators.find(n.operator).code,"("+t.jsepToBeetleQuery(n.left,i)+" "+it+" "+t.jsepToBeetleQuery(n.right,i)+")");if(n.type=="UnaryExpression")return n.operator+t.jsepToBeetleQuery(n.argument,i);if(n.type=="Identifier"){if(c=n.name,c[0]=="@"){if(l=undefined,v=c.slice(1),i.expVarContext&&i.expVarContext[v]!==undefined?l=i.expVarContext[v]:i.varContext&&(l=i.varContext[v]),l===undefined)throw t.createError(r.unknownParameter,[c],{expression:n,queryContext:i});return e.dataTypes.toBeetleValue(l)}return c}if(n.type=="Literal")return e.dataTypes.toBeetleValue(n.value);if(n.type=="MemberExpression")return n.object.name&&t.findInArray(i.aliases,n.object.name)?n.property.name:t.jsepToBeetleQuery(n.object,i)+"."+n.property.name;if(n.type=="Compound"){for(f=[],h=0;h"&&(a=s[0].left.name,s=[s[0].right]),a&&(i.currentAlias=a,i.aliases.push(a)),y=0;y")return i.currentAlias&&i.aliases.push(i.currentAlias),i.currentAlias={alias:n.left.name},nt=t.jsepToFunction(n.right,i)(f),i.currentAlias=i.aliases.pop(),nt;var ut=u.langOperators.find(n.operator),tt=i.varContext,ft=function(){return t.jsepToFunction(n.left,i)(f)},et=function(){return t.jsepToFunction(n.right,i)(f)};return ut.asFunc.call(tt,ft,et)}if(n.type=="UnaryExpression")return it=function(){return t.jsepToFunction(n.argument,i)(f)},rt=u.langOperators.find(n.operator),rt.asFunc.call(tt,it);if(n.type=="Identifier"){if(e=n.name,e=="null")return null;if(e=="true")return!0;if(e=="false")return!1;if(e[0]=="@"){if(v=undefined,y=e.slice(1),i.expVarContext&&i.expVarContext[y]!==undefined?v=i.expVarContext[y]:i.varContext&&(v=i.varContext[y]),v===undefined)throw t.createError(r.unknownParameter,[e],{expression:n,queryContext:i});return v}return i.currentAlias&&i.currentAlias.alias==e?f:(w=t.findInArray(i.aliases,e,"alias"),w)?w.value:(b=t.getValue(f,e),b===undefined)?window[e]:b}if(n.type=="Literal")return n.value;if(n.type=="MemberExpression"){if(n.object.name){if(i.currentAlias&&n.object.name==i.currentAlias.alias)return t.getValue(f,n.property.name);if(k=t.findInArray(i.aliases,n.object.name,"alias"),k)return t.getValue(k.value,n.property.name)}return t.getValue(t.jsepToFunction(n.object,i)(f),n.property.name)}if(n.type=="CallExpression"){var s=n.arguments,h=[],p=null;if(s.length==1&&s[0]&&s[0].type=="BinaryExpression"&&s[0].operator=="=>"&&(p=s[0].left.name,s=[s[0].right]),p&&(i.currentAlias&&i.aliases.push(i.currentAlias),i.currentAlias={alias:p}),t.forEach(s,function(n){n!=null&&h.push(t.jsepToFunction(n,i))}),l=n.callee.type=="MemberExpression"?n.callee.property.name:n.callee.name,c=o.queryFuncs.getFunc(l,!1),c)n.callee.type=="MemberExpression"&&h.splice(0,0,t.jsepToFunction(n.callee.object,i)),h.splice(0,0,f),d=c.impl.apply(i,h);else{if(l[0]=="@")if(a=l.slice(1),i.expVarContext&&i.expVarContext[a])c=i.expVarContext[a];else if(i.varContext&&i.varContext[a])c=i.varContext[a];else throw t.createError(r.unknownParameter,[a],{expression:n,queryContext:i});else if(g=n.callee.type=="MemberExpression"?t.jsepToFunction(n.callee.object,i)(f):window,g==null||(c=g[l])==null)throw t.createError(r.unknownFunction,[l]);h=t.mapArray(h,function(){return this(f)});d=c.apply(i,h)}return p&&(i.currentAlias=i.aliases.pop()),d}throw t.createError(r.unknownExpression,{expression:n});}},jsepToProjector:function(n,i){var h=[],u,e,o,s;for(f.isArray(n)||(n=[n]),u=0;uu+2&&n[u+1].name&&n[u+1].name.toLowerCase()=="as"){if(u=u+2,s=n[u],s.type!="Identifier")throw t.createError(r.invalidPropertyAlias,{expressions:n,aliasExpression:s});e=s.name}if(n.length>1&&!e)throw t.createError(r.projectionsMustHaveAlias,{expressions:n,expression:o});h.push({p:e,func:t.jsepToFunction(o,i)})}return function(t){for(var r,u,f={},i=0;i0)throw t.createError(this.errors.join("\n"),{name:this.name,value:this.value});},n.hasValue=function(n,i,u){return n==null?(i&&i.push(t.formatString(r.valueCannotBeNull,u)),!1):!0},n.isObject=function(n,i,u){return e.dataTypes.object.isValid(n)?!0:(i&&i.push(t.formatString(r.typeError,u,"object")),!1)},n.isFunction=function(n,i,u){return e.dataTypes.function.isValid(n)?!0:(i&&i.push(t.formatString(r.typeError,u,"function")),!1)},n.isNotEmptyString=function(i,u,f){return!n.isTypeOf(i,"string",u)||i===""?(u&&u.push(t.formatString(r.cannotBeEmptyString,f)),!1):!0},n.isTypeOf=function(i,u,f,o){if(!n.hasValue(i))return!1;var s=e.dataTypes.byName(u);return s.isValid(i)?!0:(f&&f.push(t.formatString(r.typeMismatch,o,u,s,i)),!1)},n.isArray=function(n,i,u){return e.dataTypes.array.isValid(n)?!0:(i&&i.push(t.formatString(r.typeError,u,"array")),!1)},n.isEnum=function(n,i,u){return i.contains(n)?!0:(u&&u.push(t.formatString(r.invalidEnumValue,i,n)),!1)},n.isInstanceOf=function(n,i,u,f){return n==null?(u&&u.push(r.cannotCheckInstanceOnNull),!1):(n instanceof i)?!0:(u&&u.push(t.formatString(r.instanceError,f,i)),!1)},n}(),h=function(){var i={};return i.enums=function(){function r(n,t){for(var i in t)n[i]=t[i];return n}function n(n,i){this.name=n;i&&r(this,i);t.tryFreeze(this)}n.prototype={};n.prototype.constructor=n;n.prototype.toString=function(){return this.name};t.tryFreeze(n.prototype);var i=function(i){var u=this,r;if(arguments.length===1&&i!==null&&typeof i=="object")for(r in i)u[r]=new n(r,i[r]);else t.forEach(arguments,function(t){u[t]=new n(t)});t.tryFreeze(this)};return i.prototype.symbols=function(){var t=[],i,n;for(i in this)(n=this[i],f.isFunction(n))||t.push(n);return t},i.prototype.contains=function(t){return(t instanceof n)?this[t.name]===t:!1},i}(),i.jsep=function(t){var a="Compound",k="Identifier",v="MemberExpression",h="Literal",d="ThisExpression",g="CallExpression",nt="UnaryExpression",tt="BinaryExpression",it="LogicalExpression",u=!0,f={"-":u,"!":u,"~":u,"+":u},r={"=>":0,"||":1,"&&":2,"|":3,"^":4,"&":5,"==":6,"!=":6,"===":6,"!==":6,"<":7,">":7,"<=":7,">=":7,"<<":8,">>":8,">>>":8,"+":9,"-":9,"*":10,"/":10,"%":10},s=function(n){var t=0,i;for(var r in n)(i=r.length)>t&&n.hasOwnProperty(r)&&(t=i);return t},c=s(f),e=s(r),y={"true":!0,"false":!1,"null":null},rt="this",p=function(n){return r[n]||0},w=function(n,t,i){var r=n==="||"||n==="&&"?it:tt;return{type:r,operator:n,left:t,right:i}},o=function(n){return n>=48&&n<=57},l=function(n){return n===36||n===95||n===64||n>=65&&n<=90||n>=97&&n<=122},ut=function(n){return n===36||n===95||n>=65&&n<=90||n>=97&&n<=122||n>=48&&n<=57},i=function(n){for(var t=0,ct=n.charAt,lt=n.charCodeAt,i=function(t){return ct.call(n,t)},u=function(t){return lt.call(n,t)},b=n.length,s=function(){for(var n=u(t);n===32||n===9;)n=u(++t)},ot=function(){s();for(var i=n.substr(t,e),u=i.length;u>0;){if(r.hasOwnProperty(i))return t+=u,i;i=i.substr(0,--u)}return!1},tt=function(){var r,i,o,n,s,f,e,u;if(f=it(),i=ot(),!i)return f;if(s={value:i,prec:p(i)},e=it(),!e)throw new Error("Expected expression after "+i+" at character "+t);for(n=[f,s,e];i=ot();){if(o=p(i),o===0)break;for(s={value:i,prec:o};n.length>2&&o<=n[n.length-2].prec;)e=n.pop(),i=n.pop().value,f=n.pop(),r=w(i,f,e),n.push(r);if(r=it(),!r)throw new Error("Expected expression after "+i+" at character "+t);n.push(s);n.push(r)}for(u=n.length-1,r=n[u];u>1;)r=w(n[u-1].value,n[u-2],r),u-=2;return r},it=function(){var i,r,e;if(s(),i=u(t),o(i)||i===46)return at();if(i===39||i===34)return vt();if(l(i))return pt();if(i===40)return wt();for(r=n.substr(t,c),e=r.length;e>0;){if(f.hasOwnProperty(r))return t+=e,{type:nt,operator:r,argument:it(),prefix:!0};r=r.substr(0,--e)}return!1},at=function(){for(var n="";o(u(t));)n+=i(t++);if(i(t)===".")for(n+=i(t++);o(u(t));)n+=i(t++);if(i(t)==="e"||i(t)==="E"){for(n+=i(t++),(i(t)==="+"||i(t)==="-")&&(n+=i(t++));o(u(t));)n+=i(t++);if(!o(u(t-1)))throw new Error("Expected exponent ("+n+i(t)+") at character "+t);}if(l(u(t)))throw new Error("Variable names cannot start with a number ("+n+i(t)+") at character "+t);return{type:h,value:parseFloat(n),raw:n}},vt=function(){for(var n="",u=i(t++),f=!1,r;t=0;t--)i=this.expressions[t],f.isInstanceOf(i,n)&&this.expressions.splice(t,1);return this},u}(),observableProviderBase:function(){var i=function(n){this.name=n||"observableProviderBase"},n=i.prototype;return n.toString=function(){return this.name},n.isObservable=function(){throw t.createError(r.notImplemented,[this.name,"isObservable"]);},n.toObservable=function(){throw t.createError(r.notImplemented,[this.name,"toObservable"]);},n.getValue=function(){throw t.createError(r.notImplemented,[this.name,"getValue"]);},n.setValue=function(){throw t.createError(r.notImplemented,[this.name,"setValue"]);},i}(),ajaxProviderBase:function(){var n=function(n){this.name=n||"ajaxProviderBase"},i=n.prototype;return i.toString=function(){return this.name},i.doAjax=function(){throw t.createError(r.notImplemented,[this.name,"doAjax"]);},n}(),serializationServiceBase:function(){var i=function(n){this.name=n||"serializationServiceBase"},n=i.prototype;return n.toString=function(){return this.name},n.serialize=function(){throw t.createError(r.notImplemented,[this.name,"serialize"]);},n.deserialize=function(){throw t.createError(r.notImplemented,[this.name,"deserialize"]);},i}(),promiseProviderBase:function(){var i=function(n){this.name=n||"promiseProviderBase"},n=i.prototype;return n.toString=function(){return this.name},n.deferred=function(){throw t.createError(r.notImplemented,[this.name,"deferred"]);},n.getPromise=function(){throw t.createError(r.notImplemented,[this.name,"getPromise"]);},n.resolve=function(){throw t.createError(r.notImplemented,[this.name,"resolve"]);},n.reject=function(){throw t.createError(r.notImplemented,[this.name,"reject"]);},i}(),dataServiceBase:function(){function a(n,e,o,s){var v,w;n==null?n="":n[n.length-1]!="/"&&(n+="/");s.uri=n;var h=null,a=null,y=null,p=null;if(o&&(h=o.ajaxProvider,a=o.serializationService,y=o.dataType,p=o.dataType),s.ajaxProvider=h&&f.isInstanceOf(h,i.ajaxProviderBase)?h:l.jQueryAjaxProviderInstance,s.serializationService=a&&f.isInstanceOf(a,i.SerializationService)?a:l.jsonSerializationServiceInstance,!(e===!0))if(e){if(f.isInstanceOf(e,c.metadataManager))s.metadataManager=e;else if(f.isObject(e))try{s.metadataManager=new c.metadataManager(e)}catch(b){throw t.createError(r.invalidArguments,{exception:b,args:arguments,dataService:this});}}else v=t.findInArray(u,n,"uri"),v?s.metadataManager=v.data:(w=s.fetchMetadata(),s.metadataManager=new c.metadataManager(w),u.push({uri:n,data:s.metadataManager}));s.dataType=y||"json";s.contentType=p||"application/json; charset=utf-8"}var u=[],h=function(n,t,i){a(n,t,i,this)},n=h.prototype;return n.toString=function(){return this.uri},n.getEntityType=function(n){return this.metadataManager?this.metadataManager.getEntityTypeByShortName(n):null},n.createQuery=function(n,i,r){return(t.assertPrm(n,"resourceName").isNotEmptyString().check(),i)?this.createEntityQuery(i,n,r):(this.metadataManager&&this.metadataManager.createQuery(n,null,r),new o.entityQuery(n,null,r))},n.createEntityQuery=function(n,i,u){if(t.assertPrm(n,"shortName").isNotEmptyString().check(),!this.metadataManager)throw t.createError(r.noMetadataEntityQuery,{dataService:this});return this.metadataManager.createQuery(i,n,u)},n.registerCtor=function(n,i,u){if(this.metadataManager==null)throw t.createError(r.noMetadataEntityQuery);this.metadataManager.registerCtor(n,i,u)},n.createEntity=function(n,i){if(!this.metadataManager)throw t.createError(r.noMetadataEntityQuery,{dataService:this});return this.metadataManager.createEntity(n,i)},n.createRawEntity=function(n,i){if(!this.metadataManager)throw t.createError(r.noMetadataEntityQuery,{dataService:this});return this.metadataManager.createRawEntity(n,i)},n.toEntity=function(n,t){var i=null;return this.metadataManager&&(i=this.metadataManager.getEntityType(t)),i||(i=new c.entityType(t)),e.entityTracker.toEntity(n,i,s.getObservableProvider())},n.toODataQueryParams=function(n,i){if(n.isMultiTyped===!0)throw t.createError(r.oDataNotSupportMultiTyped,{query:n});var u={varContext:i},f=[];return t.forEach(n.parameters,function(n){f.push({name:n.name,value:n.value==null?"":n.value})}),n.inlineCountEnabled===!0&&f.push({name:"$inlinecount",value:"allpages"}),t.forEach(n.expressions,function(n,t){u.expVarContext=n.varContext;var r,i;n.onlyBeetle===!0?(r="!e"+t,i=n.toBeetleQuery(u),i=n.name+":"+i):(r="$"+n.name,i=n.toODataQuery(u));f.push({name:r,value:i});u.expVarContext=undefined}),f},n.toBeetleQueryParams=function(n,i){var u={varContext:i},r=[];return t.forEach(n.parameters,function(n){r.push({name:n.name,value:n.value==null?"":n.value})}),n.inlineCountEnabled===!0&&r.push({name:"!e0",value:"inlinecount:allpages"}),t.forEach(n.expressions,function(n,t){u.expVarContext=n.varContext;r.push({name:"!e"+(t+1),value:n.name+":"+n.toBeetleQuery(u)});u.expVarContext=undefined}),r},n.fetchMetadata=function(){throw t.createError(r.notImplemented,["dataServiceBase","fetchMetadata"]);},n.createEntityAsync=function(){throw t.createError(r.notImplemented,["dataServiceBase","createEntityAsync"]);},n.executeQuery=function(){throw t.createError(r.notImplemented,["dataServiceBase","executeQuery"]);},n.executeQueryParams=function(){throw t.createError(r.notImplemented,["dataServiceBase","executeQueryParams"]);},n.saveChanges=function(){throw t.createError(r.notImplemented,["dataServiceBase","saveChanges"]);},h}()}}(),l=function(){return{defaultDateConverterInstance:function(){var n=function(){i.dateConverterBase.call(this,"Default Date Converter")},r;return t.inherit(n,i.dateConverterBase),r=n.prototype,r.parse=function(n){if(typeof n!="string"||n.length<10||!/^\d{4}[\/\-](0?[1-9]|1[012])[\/\-](0?[1-9]|[12][0-9]|3[01])$/.test(n.substr(0,10)))return null;/.\d{3}$/.test(n)&&(n+="Z");try{var t=Date.parse(n);return isNaN(t)?null:new Date(t)}catch(i){return null}},r.toISOString=function(n){return n.toISOString()},new n}(),koObservableProviderInstance:function(n){var u,r;return n&&(n.extenders.intercept=function(t,i){return n.computed({read:t,write:function(n){var r=i&&i.callback;r&&r(i.object,i.property,t,n)}})}),u=function(){i.observableProviderBase.call(this,"Knockout Observable Provider");t.tryFreeze(this)},t.inherit(u,i.observableProviderBase),r=u.prototype,r.isObservable=function(t,i){return n.isObservable(t[i])},r.toObservable=function(i,r,u){function s(t,r,u){var f=n.observable(r);return u?n.observable(r).extend({intercept:{object:i,property:t,callback:u}}):f}function c(t,r,u,f,o){var s;return u=u||[],f&&(u=new e.trackableArray(u,i,t,function(n,t,u,e,o){s.$fromKo!==!0&&i[r].valueHasMutated();s.$fromKo=!1;f(n,t,u,e,o)})),s=n.observableArray(u),s.subscribe(function(){s.$fromKo=!0},null,"beforeChange"),o&&(s.equalityComparer=function(n,r){o(i,t,n,r)}),s}var l=u&&u.propertyChange,a=u&&u.arrayChange,v=u&&u.dataPropertyChange,y=u&&u.scalarNavigationPropertyChange,p=u&&u.pluralNavigationPropertyChange,h=u&&u.arraySet,o=[];t.forEachProperty(i,function(n,t){o.push({p:n,v:t})});r&&r.hasMetadata&&(t.forEach(r.dataProperties,function(n){var r=i[n.name];r=r===undefined?null:n.handle(r);i[n.name]=s(n,r,v);t.removeFromArray(o,n.name,"p")}),t.forEach(r.navigationProperties,function(n){var r=i[n.name];r===undefined&&(r=null);i[n.name]=n.isScalar?s(n,r,y):c(n,n.name,r,p,h);t.removeFromArray(o,n.name,"p")}));t.forEach(o,function(n){var u=n.p,e=n.v;i[u]=f.isArray(e)?c(u,u,e,a,h):s(u,e,l);t.findInArray(r.properties,u)||r.properties.push(u)})},r.getValue=function(t,i){return n.utils.unwrapObservable(t[i])},r.setValue=function(n,t,i){n[t](i)},new u}(n.ko),propertyObservableProviderInstance:function(){var r=function(){i.observableProviderBase.call(this,"Property Observable Provider");t.tryFreeze(this)},n;return t.inherit(r,i.observableProviderBase),n=r.prototype,n.isObservable=function(n,t){return n.$fields!==undefined&&n.$fields[t]!==undefined},n.toObservable=function(n,i,r){function s(t,i,r){return Object.defineProperty(n,i,{get:function(){return n.$fields[i]},set:function(u){if(r){var f=w(n,i);r(n,t,f,u)}else n.$fields[i]=u},enumerable:!0,configurable:!0})}function c(t,i,r,f,o){return r=r||[],f&&(r=new e.trackableArray(r,n,t,f)),u[i]=r,Object.defineProperty(n,i,{get:function(){return n.$fields[i]},set:function(r){o?o(n,t,items,r):n.$fields[i]=r}})}function w(n,t){return function(){return arguments.length==0?n.$fields[t]:n.$fields[t]=arguments[0]}}var l=r&&r.propertyChange,a=r&&r.arrayChange,v=r&&r.dataPropertyChange,y=r&&r.scalarNavigationPropertyChange,p=r&&r.pluralNavigationPropertyChange,h=r&&r.arraySet,u={},o=[];return t.forEachProperty(n,function(n,t){o.push({p:n,v:t})}),i&&i.hasMetadata&&(t.forEach(i.dataProperties,function(i){var r=n[i.name];r=r===undefined?null:i.handle(r);delete n[i.name];s(i,i.name,v);t.removeFromArray(o,i.name,"p");u[i.name]=r}),t.forEach(i.navigationProperties,function(i){var r=n[i.name];r===undefined&&(r=null);delete n[i.name];i.isScalar?(s(i,i.name,y),u[i.name]=r):c(i,i.name,r,p,h);t.removeFromArray(o,i.name,"p")})),t.forEach(o,function(r){var e=r.p,o=r.v;delete n[e];f.isArray(o)?c(e,e,o,a,h):(s(e,e,l),u[e]=o);t.findInArray(i.properties,e)||i.properties.push(e)}),n.$fields=u,n},n.getValue=function(n,t){return n[t]},n.setValue=function(n,t,i){n[t]=i},new r}(),backboneObservableProviderInstance:function(){var r=function(){i.observableProviderBase.call("Backbone Observable Provider");t.tryFreeze(this)},n;return t.inherit(r,i.observableProviderBase),n=r.prototype,n.isObservable=function(n,t){return n.$fields!==undefined&&n.$fields[t]!==undefined},n.toObservable=function(n,i,r){function s(t,i,r){return Object.defineProperty(n,i,{get:function(){return n.$fields[i]},set:function(u){if(r){var f=w(n,i);r(n,t,f,u)}else n.$fields[i]=u},enumerable:!0,configurable:!0})}function c(t,i,r,f,o){return r=r||[],f&&(r=new e.trackableArray(r,n,t,f)),u[i]=r,Object.defineProperty(n,i,{get:function(){return n.$fields[i]},set:function(r){o?o(n,t,items,r):n.$fields[i]=r}})}function w(n,t){return function(){return arguments.length==0?n.$fields[t]:n.$fields[t]=arguments[0]}}var l=r&&r.propertyChange,a=r&&r.arrayChange,v=r&&r.dataPropertyChange,y=r&&r.scalarNavigationPropertyChange,p=r&&r.pluralNavigationPropertyChange,h=r&&r.arraySet,u={},o=[];return t.forEachProperty(n,function(n,t){o.push({p:n,v:t})}),i&&i.hasMetadata&&(t.forEach(i.dataProperties,function(i){var r=n[i.name];r=r===undefined?null:i.handle(r);delete n[i.name];s(i,i.name,v);t.removeFromArray(o,i.name,"p");u[i.name]=r}),t.forEach(i.navigationProperties,function(i){var r=n[i.name];r===undefined&&(r=null);delete n[i.name];i.isScalar?(s(i,i.name,y),u[i.name]=r):c(i,i.name,r,p,h);t.removeFromArray(o,i.name,"p")})),t.forEach(o,function(r){var e=r.p,o=r.v;delete n[e];f.isArray(o)?c(e,e,o,a,h):(s(e,e,l),u[e]=o);t.findInArray(i.properties,e)||i.properties.push(e)}),n.$fields=u,n},n.getValue=function(n,t){return n[t]},n.setValue=function(n,t,i){n[t]=i},new r}(),jQueryAjaxProviderInstance:function(n){function f(n){var i={status:n.status};if(n.responseText)try{i.detail=JSON.parse(n.responseText)}catch(r){}return t.createError(n.statusText,i)}var r=function(){i.ajaxProviderBase.call(this,"jQuery Ajax Provider");t.tryFreeze(this)},u;return t.inherit(r,i.ajaxProviderBase),u=r.prototype,u.doAjax=function(t,i,r,u,e,o,s,h,c,l){var a={url:t,accepts:{json:"application/json; odata=verbose",xml:"text/xml; application/xhtml+xml;application/xml",text:"text/xml"},type:i,dataType:r,contentType:u,traditional:!1,data:e,cache:!1,async:o,timeout:s,success:function(n,t,i){if(i.onreadystatechange=null,i.abort=null,n&&n.Error){var r=f(i);r.message=n.Error;l(r)}else c(n,i)},error:function(n){n.onreadystatechange=null;n.abort=null;l(f(n))}};return h!=null&&n.extend(a,h),n.ajax(a)},new r}(n.$),jsonSerializationServiceInstance:function(){var n=function(){i.serializationServiceBase.call(this,"Json Serializer");t.tryFreeze(this)},r;return t.inherit(n,i.serializationServiceBase),r=n.prototype,r.serialize=function(n){return JSON.stringify(n)},r.deserialize=function(n){return f.isTypeOf(n,"string")?JSON.parse(n):n},new n}(),qPromiseProviderInstance:function(n){var u=function(){i.promiseProviderBase.call(this,"Q Promise Provider");t.tryFreeze(this)},r;return t.inherit(u,i.promiseProviderBase),r=u.prototype,r.toString=function(){return this.name},r.deferred=function(){return n.defer()},r.getPromise=function(n){return n.promise},r.resolve=function(n,t){n.resolve(t)},r.reject=function(n,t){n.reject(t)},new u}(n.Q),jQueryPromiseProviderInstance:function(n){var u=function(){i.promiseProviderBase.call(this,"jQuery Promise Provider");t.tryFreeze(this)},r;return t.inherit(u,i.promiseProviderBase),r=u.prototype,r.toString=function(){return this.name},r.deferred=function(){return n.Deferred()},r.getPromise=function(n){return n.promise()},r.resolve=function(n,t){n.resolve(t)},r.reject=function(n,t){n.reject(t)},new u}(n.$)}}(),c=function(){return{dataProperty:function(){var i=function(n,t,i,r,u,f,o,s,h){this.owner=n;this.name=t;this.displayName=i||t;this.dataType=r;this.isNullable=u;this.isKeyPart=f;this.generationPattern=o;this.defaultValue=s;this.useForConcurrency=h;this.relatedNavigationProperties=[];this.validators=[];this.isEnum=r instanceof e.dataTypes.enum;this.isComplex=r.isComplex},n=i.prototype;return n.toString=function(){return this.displayName},n.isValid=function(n){return n==null?!this.isNullable:this.dataType.isValid(n,this)},n.handle=function(n){if(n==null){if(!this.isNullable)throw t.createError(r.notNullable,[this.displayName],{property:this});return null}if(n=this.dataType.handle(n,this),this.dataType==e.dataTypes.number&&this.precision&&n.toString().replace(/\./g,"").length>this.precision)throw t.createError(r.maxPrecisionError,[n,this.precision],{dataType:dataType,value:n});return this.dataType==e.dataTypes.number&&this.scale!=null&&(n=Number(n.toFixed(this.scale))),n},n.getDefaultValue=function(){return this.defaultValue?this.defaultValue:this.isNullable?null:this.generationPattern==u.generationPattern.Identity&&this.isKeyPart===!0?this.dataType.autoValue():this.dataType.defaultValue()},n.addValidation=function(n,i,r,u){t.assertPrm(n,"name").isNotEmptyString().check();t.assertPrm(i,"func").isFunction().check();this.validators.push(new e.validator(n,i,r,u))},n.validate=function(n){var u=[],i,r;return this.validators.length>0&&(i=this,r=t.getValue(n,i.name),t.forEach(this.validators,function(f){var e=f.validate(r,n);e&&u.push(t.createValidationError(n,r,i,e,f))})),u},i}(),navigationProperty:function(){var i=function(n,t,i,r,u,f,e,o){this.owner=n;this.name=t;this.displayName=i||t;this.entityTypeName=r;this.entityType=null;this.isScalar=u;this.isComplex=f===undefined;this.associationName=f;this.cascadeDelete=e===!0;this.foreignKeyNames=o||[];this.inverse=null;this.foreignKeys=[];this.validators=[];this.triggerOwnerModify=!1},n=i.prototype;return n.toString=function(){return this.displayName},n.checkAssign=function(n){if(n!=null){if(!n.$tracker)throw t.createError(r.assignErrorNotEntity,[this],{property:this,value:n});var i=n.$tracker.entityType;if(!this.entityType.isAssignableWith(i))throw t.createError(r.assignError,[this.name,i.shortName],{property:this,value:n});}},n.addValidation=function(n,i,r,u){t.assertPrm(n,"name").isNotEmptyString().check();t.assertPrm(i,"func").isFunction().check();this.validators.push(new e.validator(n,i,r,u))},n.validate=function(n){var u=[],i,r;return this.validators.length>0&&(i=this,r=t.getValue(n,i.name),t.forEach(this.validators,function(f){var e=f.validate(r);e&&u.push(t.createValidationError(n,r,i,e,f))})),u},i}(),entityType:function(){function u(n,t){n.baseType&&u(n.baseType,t);n.constructor&&n.constructor.call(t,t)}function a(n,i){for(var u,f,e,o=n.length,r=0;r0&&t.forEach(this.validators,function(r){var u=r.validate(n);u&&i.push(t.createValidationError(n,null,null,u,r))}),t.forEach(this.dataProperties,function(t){var r=t.validate(n);r&&(i=i.concat(r))}),t.forEach(this.navigationProperties,function(t){var r=t.validate(n);r&&(i=i.concat(r))}),i},i}(),metadataManager:function(){var i=function(n){this.types=[];this.enums={};this.name=null;this.displayName=null;n&&this.parseBeetleMetadata(n)},n=i.prototype;return n.toString=function(){return this.types.join(", ")},n.getEntityType=function(n,i){var u=t.findInArray(this.types,n,"name");if(!u&&i===!0)throw t.createError(r.notFoundInMetadata,[n],{metadataManager:this,typeName:n});return u},n.getEntityTypeByShortName=function(n,i){var u=t.findInArray(this.types,n,"shortName");if(!u&&i===!0)throw t.createError(r.notFoundInMetadata,[n],{metadataManager:this,typeShortName:n});return u},n.createQuery=function(n,i,r){if(i)return this.getEntityTypeByShortName(i,!0).createQuery(n,r);var u=t.filterArray(this.types,function(t){return t.setName==n});return u.length==1?u[0].createQuery(n,r):new o.entityQuery(n,null,r)},n.registerCtor=function(n,t,i){var r=this.getEntityTypeByShortName(n,!0);r.registerCtor(t,i)},n.createEntity=function(n,t){var i=this.getEntityTypeByShortName(n,!0);return i?i.createEntity(t):null},n.createRawEntity=function(n,t){var i=this.getEntityTypeByShortName(n,!0);return i?i.createRawEntity(t):null},n.parseBeetleMetadata=function(n){var o,a,s,r,v,y,p,w,l,i,f,b,k;if(this.types=[],this.enums={},this.name=n.n,this.displayName=t.getResourceValue(n.r,n.l||n.n),o=n.e,a={},o)for(s=0;s0&&a(n,t,r);i.currentGroup?i.currentGroup.filterItems.push(r):i.groups.push(r);i.currentGroup=r;i.openGroups.push(r)}function a(n,i,o){var h,p,v,a,y,c,w;if(n.length==3||n.length==4){if(h=n[1],f.isTypeOf(h,"string"))for(h=h.toLowerCase(),p=u.filterOps.symbols(),v=0;vs?i?-1:1:i?1:-1}}(c,s),o.push(l);return e=[],e.push.apply(e,n),e.sort(function(n,t){for(var r,i=0;i0},n}(),avgExp:function(){var n=function(n){i.expressionBase.call(this,"exec;avg",3,!0,!0);this.expStr=n;n&&(this.exp=h.jsep(n));this.isExecuter=!0},r;return t.inherit(n,i.expressionBase),r=n.prototype,r.toBeetleQuery=function(n){return this.exp?t.jsepToBeetleQuery(this.exp,n):""},r.clone=function(){return new n(this.expStr)},r.execute=function(t,i){return n.execute(t,this.exp,i)},n.execute=function(n,i,r){var u=i?t.jsepToFunction(i,r):function(n){return n};return o.queryFuncs.avg.impl(n,function(){return n},u)},n}(),maxExp:function(){var n=function(n){i.expressionBase.call(this,"exec;max",3,!0,!0);this.expStr=n;n&&(this.exp=h.jsep(n));this.isExecuter=!0},r;return t.inherit(n,i.expressionBase),r=n.prototype,r.toBeetleQuery=function(n){return this.exp?t.jsepToBeetleQuery(this.exp,n):""},r.clone=function(){return new n(this.expStr)},r.execute=function(t,i){return n.execute(t,this.exp,i)},n.execute=function(n,i,r){var u=i?t.jsepToFunction(i,r):function(n){return n};return o.queryFuncs.max.impl(n,function(){return n},u)},n}(),minExp:function(){var n=function(n){i.expressionBase.call(this,"exec;min",3,!0,!0);this.expStr=n;n&&(this.exp=h.jsep(n));this.isExecuter=!0},r;return t.inherit(n,i.expressionBase),r=n.prototype,r.toBeetleQuery=function(n){return this.exp?t.jsepToBeetleQuery(this.exp,n):""},r.clone=function(){return new n(this.expStr)},r.execute=function(t,i){return n.execute(t,this.exp,i)},n.execute=function(n,i,r){var u=i?t.jsepToFunction(i,r):function(n){return n};return o.queryFuncs.min.impl(n,function(){return n},u)},n}(),sumExp:function(){var n=function(n){i.expressionBase.call(this,"exec;sum",3,!0,!0);this.expStr=n;n&&(this.exp=h.jsep(n));this.isExecuter=!0},r;return t.inherit(n,i.expressionBase),r=n.prototype,r.toBeetleQuery=function(n){return this.exp?t.jsepToBeetleQuery(this.exp,n):""},r.clone=function(){return new n(this.expStr)},r.execute=function(t,i){return n.execute(t,this.exp,i)},n.execute=function(n,i,r){var u=i?t.jsepToFunction(i,r):function(n){return n};return o.queryFuncs.sum.impl(n,function(){return n},u)},n}(),countExp:function(){var n=function(n,t){i.expressionBase.call(this,"exec;count",3,!0,!0);this.expStr=n;n&&(this.exp=h.jsep(n));this.varContext=t;this.isExecuter=!0},r;return t.inherit(n,i.expressionBase),r=n.prototype,r.toBeetleQuery=function(n){return this.exp?t.jsepToBeetleQuery(this.exp,n):""},r.clone=function(){return new n(this.expStr,this.varContext)},r.execute=function(t,i){return n.execute(t,this.exp,i)},n.execute=function(n,i,r){return i&&(n=t.filterArray(n,t.jsepToFunction(i,r))),n.length},n}(),firstExp:function(){var n=function(n,t){i.expressionBase.call(this,"exec;first",3,!0,!1);this.expStr=n;n&&(this.exp=h.jsep(n));this.varContext=t;this.isExecuter=!0},u;return t.inherit(n,i.expressionBase),u=n.prototype,u.toBeetleQuery=function(n){return this.exp?t.jsepToBeetleQuery(this.exp,n):""},u.clone=function(){return new n(this.expStr,this.varContext)},u.execute=function(t,i){return n.execute(t,this.exp,i)},n.execute=function(n,i,u){if(i&&(n=t.filterArray(n,t.jsepToFunction(i,u))),n.length==0)throw t.createError(r.arrayEmpty,{array:n,expression:this});return n[0]},n}(),firstOrDefaultExp:function(){var n=function(n,t){i.expressionBase.call(this,"exec;firstOD",3,!0,!1);this.expStr=n;n&&(this.exp=h.jsep(n));this.varContext=t;this.isExecuter=!0},r;return t.inherit(n,i.expressionBase),r=n.prototype,r.toBeetleQuery=function(n){return this.exp?t.jsepToBeetleQuery(this.exp,n):""},r.clone=function(){return new n(this.expStr,this.varContext)},r.execute=function(t,i){return n.execute(t,this.exp,i)},n.execute=function(n,i,r){return i&&(n=t.filterArray(n,t.jsepToFunction(i,r))),n.length==0?null:n[0]},n}(),singleExp:function(){var n=function(n,t){i.expressionBase.call(this,"exec;single",3,!0,!1);this.expStr=n;n&&(this.exp=h.jsep(n));this.varContext=t;this.isExecuter=!0},u;return t.inherit(n,i.expressionBase),u=n.prototype,u.toBeetleQuery=function(n){return this.exp?t.jsepToBeetleQuery(this.exp,n):""},u.clone=function(){return new n(this.expStr,this.varContext)},u.execute=function(t,i){return n.execute(t,this.exp,i)},n.execute=function(n,i,u){if(i&&(n=t.filterArray(n,t.jsepToFunction(i,u))),n.length!=1)throw t.createError(r.arrayNotSingle,{array:n,expression:this});return n[0]},n}(),singleOrDefaultExp:function(){var n=function(n,t){i.expressionBase.call(this,"exec;singleOD",3,!0,!1);this.expStr=n;n&&(this.exp=h.jsep(n));this.varContext=t;this.isExecuter=!0},u;return t.inherit(n,i.expressionBase),u=n.prototype,u.toBeetleQuery=function(n){return this.exp?t.jsepToBeetleQuery(this.exp,n):""},u.clone=function(){return new n(this.expStr,this.varContext)},u.execute=function(t,i){return n.execute(t,this.exp,i)},n.execute=function(n,i,u){if(i&&(n=t.filterArray(n,t.jsepToFunction(i,u))),n.length>1)throw t.createError(r.arrayNotSingleOrEmpty,{array:n,expression:this});return n.length==0?null:n[0]},n}(),lastExp:function(){var n=function(n,t){i.expressionBase.call(this,"exec;last",3,!0,!1);this.expStr=n;n&&(this.exp=h.jsep(n));this.varContext=t;this.isExecuter=!0},u;return t.inherit(n,i.expressionBase),u=n.prototype,u.toBeetleQuery=function(n){return this.exp?t.jsepToBeetleQuery(this.exp,n):""},u.clone=function(){return new n(this.expStr,this.varContext)},u.execute=function(t,i){return n.execute(t,this.exp,i)},n.execute=function(n,i,u){if(i&&(n=t.filterArray(n,t.jsepToFunction(i,u))),n.length==0)throw t.createError(r.arrayEmpty,{array:n,expression:this});return n[n.length-1]},n}(),lastOrDefaultExp:function(){var n=function(n,t){i.expressionBase.call(this,"exec;lastOD",3,!0,!1);this.expStr=n;n&&(this.exp=h.jsep(n));this.varContext=t;this.isExecuter=!0},r;return t.inherit(n,i.expressionBase),r=n.prototype,r.toBeetleQuery=function(n){return this.exp?t.jsepToBeetleQuery(this.exp,n):""},r.clone=function(){return new n(this.expStr,this.varContext)},r.execute=function(t,i){return n.execute(t,this.exp,i)},n.execute=function(n,i,r){return i&&(n=t.filterArray(n,t.jsepToFunction(i,r))),n.length==0?null:n[n.length-1]},n}()}}(),queryFuncs:function(){var n={};return n.toupper=function(){var n=function(){i.queryFuncBase.call(this,"toupper","ToUpper",1)},r;return t.inherit(n,i.queryFuncBase),r=n.prototype,r.impl=function(n,t){return(t?t(n):n).toUpperCase()},new n}(),n.tolower=function(){var n=function(){i.queryFuncBase.call(this,"tolower","ToLower",1)},r;return t.inherit(n,i.queryFuncBase),r=n.prototype,r.impl=function(n,t){return(t?t(n):n).toLowerCase()},new n}(),n.substring=function(){var n=function(){i.queryFuncBase.call(this,"substring","Substring",3)},r;return t.inherit(n,i.queryFuncBase),r=n.prototype,r.impl=function(n,t,i,r){arguments.length==3?(r=i,i=t,t=n):t=t(n);i=i(n);r=r(n);var u=Number(i)+Number(r);return t&&t.substring(i,u)},new n}(),n.substringof=function(){var n=function(){i.queryFuncBase.call(this,"substringof","Contains",2)},r;return t.inherit(n,i.queryFuncBase),r=n.prototype,r.toBeetleFunction=function(n,t){return t=t?t+".":"",t+"Contains("+n+")"},r.impl=function(n,t,i){return i=i?i(n):n,i&&i.indexOf(t(n))>=0},new n}(),n.length=function(){var n=function(){i.queryFuncBase.call(this,"length","Length",1)},r;return t.inherit(n,i.queryFuncBase),r=n.prototype,r.toBeetleFunction=function(n){return n=n?n+".":"",n+"Length"},r.impl=function(n,t){return(t?t(n):n).length},new n}(),n.trim=function(){var n=function(){i.queryFuncBase.call(this,"trim","Trim",1)},r;return t.inherit(n,i.queryFuncBase),r=n.prototype,r.impl=function(n,t){return(t?t(n):n).trim()},new n}(),n.concat=function(){var n=function(){i.queryFuncBase.call(this,"concat","Concat",null)},r;return t.inherit(n,i.queryFuncBase),r=n.prototype,r.toBeetleFunction=function(){return"string.Concat("+Array.prototype.slice.call(arguments).join(", ")+")"},r.impl=function(n){for(var i=arguments[1](n).toString(),r=Array.prototype.slice.call(arguments,2),u=[],t=0;t0},new u}(),n.round=function(){var n=function(){i.queryFuncBase.call(this,"round","Math.Round",1)},r;return t.inherit(n,i.queryFuncBase),r=n.prototype,r.toBeetleFunction=function(n){return"Math.Round("+n+")"},r.impl=function(n,t){return Math.round(t?t(n):n)},new n}(),n.ceiling=function(){var n=function(){i.queryFuncBase.call(this,"ceiling","Math.Ceiling(%1)",1)},r;return t.inherit(n,i.queryFuncBase),r=n.prototype,r.toBeetleFunction=function(n){return"Math.Ceiling("+n+")"},r.impl=function(n,t){return Math.ceil(t?t(n):n)},new n}(),n.floor=function(){var n=function(){i.queryFuncBase.call(this,"floor","Math.Floor",1)},r;return t.inherit(n,i.queryFuncBase),r=n.prototype,r.toBeetleFunction=function(n){return"Math.Floor("+n+")"},r.impl=function(n,t){return Math.floor(t?t(n):n)},new n}(),n.second=function(){var n=function(){i.queryFuncBase.call(this,"second","Second",1)},r;return t.inherit(n,i.queryFuncBase),r=n.prototype,r.toBeetleFunction=function(n){return n=n?n+".":"",n+"Second"},r.impl=function(n,t){return t=e.dataTypes.date.handle(t?t(n):n),t.getSeconds()},new n}(),n.minute=function(){var n=function(){i.queryFuncBase.call(this,"minute","Minute",1)},r;return t.inherit(n,i.queryFuncBase),r=n.prototype,r.toBeetleFunction=function(n){return n=n?n+".":"",n+"Minute"},r.impl=function(n,t){return t=e.dataTypes.date.handle(t?t(n):n),t.getMinutes()},new n}(),n.hour=function(){var n=function(){i.queryFuncBase.call(this,"hour","Hour",1)},r;return t.inherit(n,i.queryFuncBase),r=n.prototype,r.toBeetleFunction=function(n){return n=n?n+".":"",n+"Hour"},r.impl=function(n,t){return t=e.dataTypes.date.handle(t?t(n):n),t.getHours()},new n}(),n.day=function(){var n=function(){i.queryFuncBase.call(this,"day","Day",1)},r;return t.inherit(n,i.queryFuncBase),r=n.prototype,r.toBeetleFunction=function(n){return n=n?n+".":"",n+"Day"},r.impl=function(n,t){return t=e.dataTypes.date.handle(t?t(n):n),t.getDate()},new n}(),n.month=function(){var n=function(){i.queryFuncBase.call(this,"month","Month",1)},r;return t.inherit(n,i.queryFuncBase),r=n.prototype,r.toBeetleFunction=function(n){return n=n?n+".":"",n+"Month"},r.impl=function(n,t){return t=e.dataTypes.date.handle(t?t(n):n),t.getMonth()+1},new n}(),n.year=function(){var n=function(){i.queryFuncBase.call(this,"year","Year",1)},r;return t.inherit(n,i.queryFuncBase),r=n.prototype,r.toBeetleFunction=function(n){return n=n?n+".":"",n+"Year"},r.impl=function(n,t){return t=e.dataTypes.date.handle(t?t(n):n),t.getFullYear()},new n}(),n.max=function(){var n=function(){i.queryFuncBase.call(this,"max","Max",2)},u;return t.inherit(n,i.queryFuncBase),u=n.prototype,u.toODataFunction=function(){throw t.createError(r.functionNotSupportedForOData,["Max"]);},u.impl=function(n,t,i){var u,r,f;if(arguments.length==1?t=n:arguments.length==2?(i=t,t=n):t=t(n),t.length==0)return null;for(u=i?i(t[0]):t[0],r=1;ru&&(u=f);return u},new n}(),n.min=function(){var n=function(){i.queryFuncBase.call(this,"min","Min",2)},u;return t.inherit(n,i.queryFuncBase),u=n.prototype,u.toODataFunction=function(){throw t.createError(r.functionNotSupportedForOData,["Min"]);},u.impl=function(n,t,i){var u,r,f;if(arguments.length==1?t=n:arguments.length==2?(i=t,t=n):t=t(n),t.length==0)return null;for(u=i?i(t[0]):t[0],r=1;r0;for(r=0;r2&&(i=Array.prototype.slice.call(arguments).slice(2)),u=this.slice(n,n+t),this.changing.notify({added:i,removed:u}),i&&r(i,this),f=Array.prototype.splice.apply(this,arguments),this.after(this.object,this.property,this,u,i),this.changed.notify({added:i,removed:u}),f},n.remove=function(){var n=[],i=this;return this.changing.notify({added:[],removed:arguments}),t.forEach(arguments,function(r){var u=t.indexOf(i,r);u>=0&&(Array.prototype.splice.call(i,u,1),n.push(r))}),this.after(this.object,this.property,this,n,null),this.changed.notify({added:[],removed:arguments}),n},n.load=function(n,t,i,r,u){return this.entity.$tracker.loadNavigationProperty(this.propertyName,n,t,i,r,u)},i}(),event:function(){var i=function(n,t){this.name=n;this.subscribers=[];this.publisher=t},n=i.prototype;return n.toString=function(){return this.name},n.subscribe=function(n){t.findInArray(this.subscribers,n)||this.subscribers.push(n)},n.unsubscribe=function(n){t.removeFromArray(this.subscribers,n)},n.notify=function(){var n=arguments;t.forEach(this.subscribers,function(t){t.apply(t,n)})},i}(),dataTypes:function(){function u(n,i){throw t.createError(r.assignError,[n.name,i],{dataType:n,value:i});}var e=function(){var r=function(n){i.dataTypeBase.call(this,"dateBase");this.name=n},n;return t.inherit(r,i.dataTypeBase),n=r.prototype,n.defaultValue=function(){return new Date(-6847812e6)},n.isValid=function(n){return Object.prototype.toString.call(n)==="[object Date]"},n.handle=function(n){if(!this.isValid(n)){var t=n;n=this.tryParse(t);n||u(this,t)}return n},n.autoValue=function(){return new Date},n.getRawValue=function(n){return n==null?null:s.getDateConverter().toISOString(n)},n.tryParse=function(n){return s.getDateConverter().parse(n)},n.toODataValue=function(n){return n=this.handle(n),"datetime'"+s.getDateConverter().toISOString(n)+"'"},n.toBeetleValue=function(n){return n=this.handle(n),'"'+s.getDateConverter().toISOString(n)+'"'},r}(),n={};return n.object=function(){var n=function(){i.dataTypeBase.call(this,"object");t.tryFreeze(this)};return t.inherit(n,i.dataTypeBase),new n}(),n.array=function(){var u=function(){i.dataTypeBase.call(this,"array");t.tryFreeze(this)},n;return t.inherit(u,i.dataTypeBase),n=u.prototype,n.isValid=function(n){return n instanceof Array},n.defaultValue=function(){return[]},n.handle=function(n){return this.isValid(n)||(n=n.split(",")),n},n.autoValue=function(){throw t.createError(r.notImplemented,[this.name,"defaultValue"]);},n.toODataValue=function(n){return n},n.toBeetleValue=function(n){return n},new u}(),n.function=function(){var n=function(){i.dataTypeBase.call(this,"function");t.tryFreeze(this)};return t.inherit(n,i.dataTypeBase),new n}(),n.string=function(){var u=0,r=function(){i.dataTypeBase.call(this,"string");t.tryFreeze(this)},n;return t.inherit(r,i.dataTypeBase),n=r.prototype,n.defaultValue=function(){return""},n.handle=function(n){return this.isValid(n)||(n=n.toString()),n},n.autoValue=function(){return"key_"+--u},n.toODataValue=function(n){return"'"+n.replace(/'/g,"''")+"'"},n.toBeetleValue=function(n){return'"'+n.replace(/"/g,'""')+'"'},new r}(),n.guid=function(){var r=function(){i.dataTypeBase.call(this,"guid");t.tryFreeze(this)},n;return t.inherit(r,i.dataTypeBase),n=r.prototype,n.defaultValue=function(){return"00000000-0000-0000-0000-000000000000"},n.isValid=function(n){return typeof n=="string"&&n.match(/^\{?[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}\}?$/i)},n.handle=function(n){return this.isValid(n)||u(this,n),n},n.autoValue=function(){return t.createGuid()},n.toODataValue=function(n){return"guid'"+n+"'"},n.toBeetleValue=function(n){return'"'+n+'"'},new r}(),n.date=function(){var n=function(){e.call(this,"date");t.tryFreeze(this)};return t.inherit(n,e),new n}(),n.dateTimeOffset=function(){var n=function(){e.call(this,"dateTimeOffset");t.tryFreeze(this)},i;return t.inherit(n,e),i=n.prototype,i.toODataValue=function(n){return n=this.handle(n),"datetimeoffset'"+s.getDateConverter().toISOString(n)+"'"},new n}(),n.time=function(){var r=function(){i.dataTypeBase.call(this,"time");t.tryFreeze(this)},n;return t.inherit(r,i.dataTypeBase),n=r.prototype,n.defaultValue=function(){return"00:00:00"},n.isValid=function(n){return/^([01]?\d|2[0-3])(((:[0-5]?\d){2}(\.\d{1,3}){0,1})|(:[0-5]?\d){0,2})?$/.test(n)},n.handle=function(n){return this.isValid(n)||u(this,n),n},n.autoValue=function(){return"00:00:00"},n.toODataValue=function(n){return"time'"+n+"'"},n.toBeetleValue=function(n){return'"'+n+'"'},new r}(),n.boolean=function(){var r=function(){i.dataTypeBase.call(this,"boolean");t.tryFreeze(this)},f;return t.inherit(r,i.dataTypeBase),f=r.prototype,f.defaultValue=function(){return!1},f.handle=function(t){if(!this.isValid(t)){if(n.String.isValid(t)){var i=t.toLowerCase();if(i=="true"||i=="1")return!0;if(i=="false"||i=="0")return!1}throw u(this,t);}return t},new r}(),n.int=function(){var f=0,r=function(){i.dataTypeBase.call(this,"int");t.tryFreeze(this)},n;return t.inherit(r,i.dataTypeBase),n=r.prototype,n.defaultValue=function(){return 0},n.isValid=function(n){return typeof n=="number"&&n%1==0},n.handle=function(n){return typeof n!="number"&&(n=Number(n)),this.isValid(n)||u(this,n),n},n.autoValue=function(){return--f},new r}(),n.number=function(){var f=0,r=function(){i.dataTypeBase.call(this,"number");t.tryFreeze(this)},n;return t.inherit(r,i.dataTypeBase),n=r.prototype,n.defaultValue=function(){return 0},n.isValid=function(n){return!isNaN(n)&&typeof n=="number"},n.handle=function(n){return typeof n!="number"&&(n=Number(n)),this.isValid(n)||u(this,n),n},n.autoValue=function(){return--f},new r}(),n.byte=function(){var f=0,r=function(){i.dataTypeBase.call(this,"byte");t.tryFreeze(this)},n;return t.inherit(r,i.dataTypeBase),n=r.prototype,n.defaultValue=function(){return 0},n.isValid=function(n){return typeof n=="number"&&n%1==0&&n>=0&&n<256},n.handle=function(n){return typeof n!="number"&&(n=Number(n)),this.isValid(n)||u(this,n),n},n.autoValue=function(){return--f},new r}(),n.binary=function(){var r=function(){i.dataTypeBase.call(this,"binary");t.tryFreeze(this)},n;return t.inherit(r,i.dataTypeBase),n=r.prototype,n.defaultValue=function(){return'"AAAAAAAAAAA="'},n.isValid=function(){return!0},n.handle=function(n){return n},n.toODataValue=function(n){return n=this.handle(n),"X'"+s.getDateConverter().toISOString(n)+"'"},n.toBeetleValue=function(n){return'"'+n+'"'},new r}(),n.enum=function(){function e(n,i){var e,r,u,o;if(f.isArray(n))return e=0,t.forEach(n,function(n){e|=n.value}),e;if(f.isTypeOf(n,"string")){if(r=n.split(", "),r.length==1)return i[n];for(u=0;u0?this.name+" ("+n.join(", ")+")":this.name},u.validate=function(n,t){return this.func(n,t)==!0?null:this.message},n.byCode=function(i,u,f,e,o,h){var c=s.getLocalizeFunction();c&&(f=e&&c(e)||f,o=h&&c(h)||o);u=u||[];u.push(f);u.push(o);switch(i){case"re":return n.required.apply(null,u);case"sl":return n.stringLength.apply(null,u);case"ma":return n.maxLength.apply(null,u);case"mi":return n.minLength.apply(null,u);case"ra":return n.range.apply(null,u);case"rx":return n.regularExpression.apply(null,u);case"ea":return n.emailAddress.apply(null,u);case"cc":return n.creditCard.apply(null,u);case"ur":return n.url.apply(null,u);case"ph":return n.phone.apply(null,u);case"po":return n.postalCode.apply(null,u);case"ti":return n.time.apply(null,u);case"co":return n.compare.apply(null,u);default:throw t.createError(r.unknownValidator,[i]);}},n.required=function(i,u,e){var o=function(n){return n==null?!1:f.isTypeOf(n,"string")&&!i&&n==""?!1:!0};return u=t.formatString(u||r.requiredError,e),new n("Required",o,u,{allowEmptyStrings:i})},n.stringLength=function(i,u,e,o){var s=function(n){return!i&&!u?!0:f.isNotEmptyString(n)?i&&n.lengthu?!1:!0:!1};return e=t.formatString(e||r.stringLengthError,o,i,u),new n("StringLength",s,e,{min:i,max:u})},n.maxLength=function(i,u,f){var e=function(n){return n==null?!0:i&&n.length>i?!1:!0};return u=t.formatString(u||r.maxLenError,f,i),new n("MaxLength",e,u,{length:i})},n.minLength=function(i,u,f){var e=function(n){return n==null?!1:i&&n.lengthu?!1:!0};return f=t.formatString(f||r.rangeError,e,i,u),new n("Range",o,f,{min:i,max:u})},n.regularExpression=function(n,t,r){return f.isTypeOf(n,"string")&&(n=new RegExp(n)),i("RegularExpression",n,t,r)},n.emailAddress=function(n,t){return i("EmailAddress",/^\w+@[a-zA-Z_]+?\.[a-zA-Z]{2,3}$/,n,t)},n.creditCard=function(n,t){return i("CreditCard",/^((4\d{3})|(5[1-5]\d{2})|(6011)|(3[68]\d{2})|(30[012345]\d))[ -]?(\d{4})[ -]?(\d{4})[ -]?(\d{4}|3[4,7]\d{13})$/,n,t)},n.url=function(n,t){return i("Url",/(http|ftp|https):\/\/[\w-]+(\.[\w-]+)+([\w.,@?^=%&:\/~+#-]*[\w@?^=%&\/~+#-])?/,n,t)},n.phone=function(n,t){return i("Phone",/^(?!.*-.*-.*-)(?=(?:\d{8,10}$)|(?:(?=.{9,11}$)[^-]*-[^-]*$)|(?:(?=.{10,12}$)[^-]*-[^-]*-[^-]*$) )[\d-]+$/,n,t)},n.postalCode=function(n,t){return i("PostalCode",/^\d{5}([\-]?\d{4})?$/,n,t)},n.time=function(n,t){return i("Time",/^([01]?\d|2[0-3])(((:[0-5]?\d){2}(\.\d{1,3}){0,1})|(:[0-5]?\d){0,2})?$/,n,t)},n.compare=function(i,u,f){var o=function(n,r){var u=t.getValue(r,i);return n==u},e=s.getLocalizeFunction(),h=e&&e(i)||i;return u=t.formatString(u||r.compareError,f,h),new n("Compare",o,u,{property:i})},n}(),entityContainer:function(){function r(n,t){var i=new u(n);return t.push(i),i}var u=function(){function u(n,t){var i=r(n,t);return i>-1?t[i]:null}function r(n,t){var f=t.length,r,u,i;if(f>0)for(r=0,u=f-1;r<=u;){if(i=Math.floor((r+u)/2),t[i].keyn){u=i-1;continue}return i}return-1}function f(n,t){for(var i=0;it[i].key;)i++;return i}var i=function(n){this.typeName=n.name;this.keyIndex=[];t.tryFreeze(this)},n=i.prototype;return n.toString=function(){return this.typeName+": "+this.keyIndex.length},n.push=function(n,t){var i=f(n,this.keyIndex);this.keyIndex.splice(i,0,{key:n,entity:t})},n.remove=function(n){var t=r(n,this.keyIndex);this.keyIndex.splice(t,1)},n.getEntity=function(n){var t=u(n,this.keyIndex);return t?t.entity:null},n.getRelations=function(n,t){var f=t.inverse,r,i,u;if(!f)return null;for(r=[],i=0;i0)&&n.$tracker.isChanged()})},n.count=function(){return this.allEntities.length},n.findEntitySet=function(n){return t.findInArray(this.entitySets,n.name,"typeName")},i}(),entityTracker:function(){function y(n,t,i,r){r.entity=n;n.$tracker=r;r.entityType=t;r.entityState=u.entityStates.Detached;r.observableProvider=i;r.forceUpdate=!1;r.originalValues=[];r.changedValues=[];r.manager=null;r.owners=[];r.validationErrors=[];r.validationErrorsChanged=new e.event("validationErrorsChanged",r);r.entityStateChanged=new e.event("entityStateChanged",r);r.propertyChanged=new e.event("propertyChanged",r);r.arrayChanged=new e.event("arrayChanged",r);t.hasMetadata&&(r.key=l(r))}function p(n,t,i){var r={propertyChange:w,arrayChange:b,dataPropertyChange:k,scalarNavigationPropertyChange:d,pluralNavigationPropertyChange:g,arraySet:nt};return i.observableProvider.toObservable(n,t,r)}function c(n,t){n.baseType&&c(n.baseType,t);n.initializer&&n.initializer.call(t,t)}function l(n,t,i){var e=n.entityType,o,r,u,f;if(e.keys.length==0)return null;for(o=[],r=0;r=0;p--)k=y[p],k.entity==n&&k.property==u&&y.splice(p,1);y.length==0&&a.$tracker.manager&&a.$tracker.manager.detachEntity(a);h.$tracker.owners.push({entity:n,property:u})}c.manager&&(d=s.autoFixScalar,t.forEach(u.relatedNavigationProperties,function(n){var t,i,r;if(n.isScalar===!0)if(t=c.foreignKey(n),t){if(i=c.getValue(n.name),i&&i.$tracker.key===t)return;r=null;c.manager&&d&&(r=c.manager.getEntityByKey(t,n.entityType));r?c.setValue(n.name,r):i&&c.setValue(n.name,new e.valueNotifyWrapper(null))}else c.setValue(n.name,null)}))}}function d(n,u,h,c){var y=n.$tracker,d=!1,l,w,p,b,a,k;if(f.isInstanceOf(c,e.valueNotifyWrapper)&&(d=!0,c=c.value),l=h(),l!=c)if(u.checkAssign(c),h(c),s.liveValidate===!0&&o(u.validate(n),y,u),y.propertyChanged.notify({entity:n,property:u,oldValue:l,newValue:c}),v(c,y.manager),u.isComplex){if(c==null)throw t.createError(r.complexCannotBeNull,[u.displayName],{entity:n,property:u});for(w=l.$tracker.owners,p=w.length-1;p>=0;p--)b=w[p],b.entity==n&&b.property==u&&w.splice(p,1);l.$tracker.owners.length==0&&l.$tracker.manager&&l.$tracker.manager.detachEntity(l);c.$tracker.owners.push({entity:n,property:u});i(n,u.name,c.$tracker.toRaw(),y)}else d||(u.triggerOwnerModify&&u.foreignKeys.length==0&&i(n,null,null,y),t.setForeignKeys(n,u,c)),a=u.inverse,a&&(a.isScalar?(l&&l.$tracker.setValue(a.name,null),c&&c.$tracker.setValue(a.name,n)):(l&&l.$tracker.getValue(a.name).remove(n),c&&(k=c.$tracker.getValue(a.name),t.findInArray(k,n)||k.push(n))))}function g(n,r,u,f,e){var c=n.$tracker,h;s.liveValidate===!0&&o(r.validate(n),c,r);r.triggerOwnerModify&&i(n,null,null,c);c.arrayChanged.notify({entity:n,property:r,items:u,removedItems:f,addedItems:e});h=r.inverse;h&&(f&&t.forEach(f,function(t){t.$tracker.getValue(h.name)==n&&t.$tracker.setValue(h.name,null)}),e&&t.forEach(e,function(t){v(t,c.manager);t.$tracker.setValue(h.name,n)}))}function nt(n,i,f,e){var l=s.getArraySetBehaviour(),h,o,c;if(l==u.arraySetBehaviour.NotAllowed)throw t.createError(r.settingArrayNotAllowed,{entity:n,property:e});if(h=[],o=t.filterArray(f,function(){return!0}),l==u.arraySetBehaviour.Replace&&t.forEach(i,function(n){t.findInArray(o,n)?t.removeFromArray(o,n):h.push(n)}),l==u.arraySetBehaviour.Append&&t.forEach(f,function(n){t.findInArray(i,n)&&t.removeFromArray(o,n)}),h.length>0)for(c=h.length-1;c>=0;c--)i.splice(t.indexOf(i,h[c]),1);o.length>0&&i.push.apply(i,o)}function tt(n){var i=n.$tracker;t.forEach(i.entityType.navigationProperties,function(r){var f,e,u;r.inverse&&(f=r.inverse,r.isScalar?(e=i.getValue(r.name),e&&t.setForeignKeys(e,f,n)):(u=i.getValue(r.name),u&&u.length>0&&t.forEach(u,function(i){t.setForeignKeys(i,f,n)})))})}function v(n,i){if(n&&i&&!n.$tracker.entityType.isComplexType&&!i.isInManager(n)){if(n.$tracker.manager)throw t.createError(r.entityAlreadyBeingTracked,null,{entity:n,manager:i});i.addEntity(n)}}function i(n,r,f,e){var o=e.entityState;o==u.entityStates.Unchanged&&(t.forEach(e.entityType.navigationProperties,function(n){var u=n.inverse,r;u&&u.triggerOwnerModify&&(r=e.getValue(n.name),r&&(n.isScalar?i(r,null,null,r.$tracker):t.forEach(r,function(n){i(n,null,null,n.$tracker)})))}),e.toModified());it(r,f,e.originalValues,e.changedValues)}function it(n,i,r,u){var f,e;n!=null&&(i==null||i.$tracker==null||i.$tracker.entityType.isComplexType)&&(f=t.findInArray(r,n,"p"),f||r.push({p:n,v:i}),e=t.findInArray(u,n,"p"),e||u.push({p:n,v:i}))}function o(n,i,r){var u=[],f=r?t.filterArray(i.validationErrors,function(n){return n.property===r}):t.filterArray(i.validationErrors,function(){return!0});t.forEach(f,function(r){t.findInArray(n,r.validator,"validator")?t.removeFromArray(n,r.validator,"validator"):(t.removeFromArray(i.validationErrors,r),u.push(r))});i.validationErrors=i.validationErrors.concat(n);(u.length>0||n.length>0)&&i.validationErrorsChanged.notify({errors:i.validationErrors,added:n,removed:u})}var h=function(n,t,i){delete n.$type;delete n.$id;y(n,t,i||s.getObservableProvider(),this);p(n,t,this);c(t,n)},n=h.prototype;return n.toString=function(){return"EntityTracker: "+this.entityType.shortName+", key: "+this.key},n.setManagerInfo=function(n){if(this.manager)throw t.createError(r.entityAlreadyBeingTracked,{otherManager:this.manager});t.assertPrm(n,"manager").isInstanceOf(e.entityManager).check();this.manager=n},n.isChanged=function(){return this.entityState===u.entityStates.Added||this.entityState===u.entityStates.Deleted||this.entityState===u.entityStates.Modified},n.toAdded=function(){if(this.entityState!=u.entityStates.Added){var n={entity:this.entity,oldState:this.entityState,newState:u.entityStates.Added,newChanged:!this.isChanged()};this.entityState=u.entityStates.Added;this.entityStateChanged.notify(n)}},n.toModified=function(){if(this.entityState!=u.entityStates.Modified){var n={entity:this.entity,oldState:this.entityState,newState:u.entityStates.Modified,newChanged:!this.isChanged()};this.entityState=u.entityStates.Modified;this.entityStateChanged.notify(n)}},n.toDeleted=function(){if(this.entityState!=u.entityStates.Deleted){var n={entity:this.entity,oldState:this.entityState,newState:u.entityStates.Deleted,newChanged:!this.isChanged()};this.entityState=u.entityStates.Deleted;this.entityStateChanged.notify(n)}},n.toUnchanged=function(){if(this.entityState!=u.entityStates.Unchanged){var n={entity:this.entity,oldState:this.entityState,newState:u.entityStates.Unchanged,newUnchanged:this.isChanged()};this.originalValues.length=0;this.changedValues.length=0;this.entityState=u.entityStates.Unchanged;this.entityStateChanged.notify(n)}},n.toDetached=function(){if(this.entityState!=u.entityStates.Detached){var n={entity:this.entity,oldState:this.entityState,newState:u.entityStates.Detached,newUnchanged:this.isChanged()};this.entityState=u.entityStates.Detached;this.entityStateChanged.notify(n)}},n.undoChanges=function(){var n=this;t.forEach(this.changedValues,function(t){n.setValue(t.p,t.v)});this.changedValues.length=0},n.acceptChanges=function(){this.changedValues.length=0},n.getValue=function(n){return this.observableProvider.getValue(this.entity,n)},n.setValue=function(n,t){this.observableProvider.setValue(this.entity,n,t)},n.foreignKey=function(n){var r=n.entityType,u,t,e,f,o,i;if(r.keys.length==0)return null;for(u=[],t=0;t2)throw t.createError(r.managerInvalidArgs,{entityManager:u});var o=n[0],s=n[1];if(f.isInstanceOf(o,i.dataServiceBase))u.dataService=o;else if(f.isTypeOf(o,"string"))u.dataService=s?new v.webApiService(o,s):new v.webApiService(o,!1);else throw t.createError(r.managerInvalidArgs,{entityManager:this});u.pendingChangeCount=0;u.entities=new e.entityContainer;u.validationErrors=[];u.entityStateChanged=new e.event("entityStateChanged",u);u.validationErrorsChanged=new e.event("validationErrorsChanged",u);u.hasChangesChanged=new e.event("hasChangesChanged",u);u.queryExecuting=new e.event("queryExecuting",u);u.queryExecuted=new e.event("queryExecuted",u);u.saving=new e.event("saving",u);u.saved=new e.event("saved",u)}function o(n,i,e,o,h,c,l){e||(e=u.mergeStrategy.Preserve);o&&o!==u.entityStates.Detached||(o=u.entityStates.Added);c==null&&(c=s.autoFixScalar);l==null&&(l=s.autoFixPlural);i=i||h.flatEntities(f.isArray(n)?n:[n]);var y=[],p=[],v=[],w=h.entities.count(),a=h;t.forEach(i,function(n){var f=n.$tracker;if(!f&&n.$type)f=a.toEntity(n,n.$type).$tracker;else if(f.entityType.isComplexType||h.isInManager(n))return;var o=f.entityType,s=f.key,i=null;if(w>0&&s&&(i=a.entities.getEntityByKey(s,o.floorType)),i){if(o.name!==i.$tracker.entityType.name)throw t.createError(r.sameKeyOnDifferentTypesError,[i.$tracker.entityType.shortName,o.shortName],{existingEntity:i,entity:n,manager:a});if(e===u.mergeStrategy.ThrowError)throw t.createError(r.sameKeyExists,{existingEntity:i,entity:n,manager:a});else e===u.mergeStrategy.Preserve?v.push({o:n,n:i}):(v.push({o:n,n:i}),p.push({o:i,n:n}))}else a.entities.push(n),n.$tracker.setManagerInfo(a),y.push(n)});t.forEach(y,function(n){d(n,c,l,a);lt(n,a);k(n,o);s.validateOnMerge===!0&&n.$tracker.validate()});t.forEach(p,function(n){ot(n.o,n.n);k(n.o,o)});t.forEach(v,function(i){var r=t.indexOf(n,i.o);r>=0&&(n[r]=i.n);st(i.o,i.n,c,l,a)})}function b(n,i){if(!i.isInManager(n))throw t.createError(r.entityNotBeingTracked,{entity:n,manager:i});}function k(n,i){if(i===u.entityStates.Unchanged)n.$tracker.toUnchanged();else if(i===u.entityStates.Modified)n.$tracker.toModified();else if(i===u.entityStates.Added)n.$tracker.toAdded();else throw t.createError(r.mergeStateError,[i],{entity:n,state:i});}function ot(n,i){var r=i.$tracker;t.forEach(r.entityType.dataProperties,function(t){n.$tracker.setValue(t.name,r.getValue(t.name))})}function d(n,i,r,u){if(i==!0||r==!0){var e=n.$tracker,o=e.entityType;t.forEach(o.navigationProperties,function(t){var f=e.getValue(t.name),o,h,s,c,l;if(t.isComplex){for(o=f.$tracker.owners,h=!1,s=0;s=0;u--)r=t[u],r&&r.$tracker&&r.$tracker.entityType.hasMetadata&&r.$tracker.manager!=i&&(f=i.getEntityByKey(r.$tracker.key,r.$tracker.entityType),f?t.splice(u,1,f):t.splice(u,1))}function st(n,i,r,u,f){var c=n.$tracker.entityType,h,s,e,o;t.forEach(c.navigationProperties,function(c){var y,p,l,a,v;c.isComplex||(h=n.$tracker,s=i.$tracker,e=h.getValue(c.name),o=s.getValue(c.name),c.isScalar?o||(r==!0?tt(i,c,null,f):r===!0&&c.inverse&&c.inverse.isScalar||u===!0&&c.inverse&&!c.inverse.isScalar||(y=h.foreignKey(c),p=s.foreignKey(c),y==p&&e!=null&&f.isInManager(e)&&(l=c.inverse,l?l.isScalar?e.$tracker.setValue(l.name,i):(a=e.$tracker.getValue(l.name),v=t.indexOf(a,n),v>=0&&a.splice(v,1,i)):s.setValue(c.name,e)))):u?it(i,c,o,f):r===!0&&c.inverse||t.forEach(e,function(n){f.isInManager(n)&&!t.findInArray(o,n)&&o.push(n)}))})}function tt(n,t,i,r){var f=n.$tracker,u=f.foreignKey(t);i?u!=i.$tracker.key&&setForeignKeys(n,t,i):u&&f.setValue(t.name,r.entities.getEntityByKey(u,t.entityType))}function it(n,i,r,u){var f=u.entities.getRelations(n,i);f&&t.forEach(f,function(n){t.findInArray(r,n)||r.push(n)})}function rt(n,i){var r=n.$tracker,u=r.entityType,f=i?new e.valueNotifyWrapper(null):null;u.hasMetadata&&t.forEach(u.navigationProperties,function(n){n.isScalar?r.setValue(n.name,f):r.getValue(n.name).splice(0)})}function ht(n,i,r){t.forEach(n,function(n){n.$tracker.entityState==u.entityStates.Deleted?(n.$tracker.toDetached(),ut(n,r),i.remove(n)):n.$tracker.toUnchanged()})}function ct(n,i,r){if(i.removed.length>0)for(var u=i.removed.length-1;u>=0;u--)r.validationErrors.splice(t.indexOf(r.validationErrors,i.removed[u]),1);i.added.length>0&&r.validationErrors.push.apply(r.validationErrors,i.added);(i.removed.length>0||i.added.length>0)&&r.validationErrorsChanged.notify({errors:r.validationErrors,added:i.added,removed:i.removed})}function lt(n,t){n.$tracker.entityStateChanged.subscribe(function(n){var i=t.pendingChangeCount;n.newChanged===!0?t.pendingChangeCount++:n.newUnchanged===!0&&t.pendingChangeCount--;t.entityStateChanged.notify(n);i==0&&t.pendingChangeCount>0?t.hasChangesChanged.notify({hasChanges:!0}):i>0&&t.pendingChangeCount==0&&t.hasChangesChanged.notify({hasChanges:!1})});n.$tracker.validationErrorsChanged.subscribe(function(i){ct(n,i,t)})}function ut(n,i){n.$tracker.entityStateChanged.unsubscribe(i.entityStateChanged.notify);n.$tracker.validationErrorsChanged.unsubscribe(i.validationErrorsChanged.notify);var r=t.filterArray(i.validationErrors,function(t){return t.entity==n});t.removeFromArray(i.validationErrors,n,"entity");i.validationErrorsChanged.notify({errors:i.validationErrors,removed:r,added:[]})}function at(n,t,i){var r={manager:n,query:t,options:i};return n.queryExecuting.notify(r),a.queryExecuting.notify(r),r}function ft(n,t,i,r){var u={manager:n,query:t,options:i,result:r};return n.queryExecuted.notify(u),a.queryExecuted.notify(u),u.result}function vt(n,t,i){var r={manager:n,changes:t,options:i};return n.saving.notify(r),a.saving.notify(r),r.options}function yt(n,t,i){var r={manager:n,changes:t,options:i};n.saved.notify(r);a.saved.notify(r)}function l(n,t,i,r){n&&n(r);t&&t.resolve(i,r)}function h(n,t,i,r,u){if(n&&n(r),t&&t.reject(i,r),r.manager=u,!n&&!t)throw new r;}var y=function(){et(arguments,this)},n=y.prototype;return n.toString=function(){return this.dataService.toString()+", "+r.pendingChanges+": "+this.pendingChangeCount+", "+r.validationErrors+": "+this.validationErrors.length},n.getEntityType=function(n){return this.dataService.getEntityType(n)},n.createQuery=function(n,t){return this.dataService.createQuery(n,t,this)},n.createEntityQuery=function(n,t){return this.dataService.createEntityQuery(n,t,this)},n.registerCtor=function(n,t,i){this.dataService.registerCtor(n,t,i)},n.createEntity=function(n,t){var i=this.dataService.createEntity(n,t),r=[i];return o(r,null,u.mergeStrategy.ThrowError,u.entityStates.Added,this),i},n.createDetachedEntity=function(n,t){return this.dataService.createEntity(n,t)},n.createRawEntity=function(n,t){return this.dataService.createRawEntity(n,t)},n.createEntityAsync=function(n,t,i,r,u){return p(n,t,i,r,u,this)},n.createRawEntityAsync=function(n,t,i,r,u){return i?i.makeObservable=!1:i={makeObservable:!1},p(n,t,i,r,u,this)},n.executeQuery=function(n,i,e,c){var k,a,p,d,g,b;n.options&&(i=t.combine(n.options,i));k=at(this,n,i);n=k.query;i=k.options;a=i&&i.async==!1?null:s.getPromiseProvider();p=null;a&&(p=a.deferred());var y=u.mergeStrategy.Preserve,v=u.executionStrategy.Server,w=null,nt,tt;if(f.isEnum(i,u.mergeStrategy)?(y=i,i={makeObservable:y!=u.mergeStrategy.NoTrackingRaw}):f.isEnum(i,u.executionStrategy)?v=i:i&&(i.merge&&(y=i.merge),i.execution&&(v=i.execution),i.autoFixScalar!=null&&(nt=i.autoFixScalar),i.autoFixPlural!=null&&(tt=i.autoFixPlural),i.makeObservable=y!=u.mergeStrategy.NoTrackingRaw),d=y==u.mergeStrategy.NoTracking||y==u.mergeStrategy.NoTrackingRaw,d&&v==u.executionStrategy.Both)throw t.createError(r.executionBothNotAllowedForNoTracking,{executionStrategy:v,mergeStrategy:y});return((v==u.executionStrategy.Local||v==u.executionStrategy.LocalIfEmptyServer)&&(w=this.executeQueryLocally(n)),g=null,v==u.executionStrategy.Local||v==u.executionStrategy.LocalIfEmptyServer&&w&&(w.length==null||w.length>0)?(w=ft(this,n,i,w),l(e,a,p,w)):(b=this,this.dataService.executeQuery(n,i,function(t,r,s,w){try{var k=!1;t&&(d||(f.isArray(t)||(t=[t],k=!0),o(t,r,y,u.entityStates.Unchanged,b,nt,tt),k&&(t=t[0])));v==u.executionStrategy.Both&&(t=b.executeQueryLocally(n),s&&(s+=t.$addedCount-t.$deletedCount));t&&(n.inlineCountEnabled&&s!=null&&(t.$inlineCount=s),w&&(t.$extra=w));t=ft(b,n,i,t);l(e,a,p,t);a||(g=t)}catch(it){h(c,a,p,it,b)}},function(t){t.query=n;h(c,a,p,t,b)})),a)?a.getPromise(p):g},n.executeQueryLocally=function(n,i){var o=n.entityType,s,e,l;if(o)if(e=this.entities.findEntitySet(o),e)s=e.getEntities();else return[];else throw t.createError(r.typeRequiredForLocalQueries);var f=[],h=0,c=0;return t.forEach(s,function(n){n.$tracker.entityState==u.entityStates.Added?(h++,f.push(n)):n.$tracker.entityState==u.entityStates.Deleted?c++:f.push(n)}),l=n.toFunction(),f=l(f,i),f.$addedCount=h,f.$deletedCount=c,f},n.getEntityByKey=function(n,t){var i=f.isInstanceOf(t,c.entityType)?t:this.getEntityType(t,!0);return this.entities.getEntityByKey(n,i)},n.deleteEntity=function(n){var i,f,e;for(b(n,this),i=this,f=[],t.forEach(n.$tracker.entityType.navigationProperties,function(u){var e,o;if(u.cascadeDelete){if(u.inverse&&u.inverse.cascadeDelete)throw t.createError(r.twoEndCascadeDeleteNotAllowed,{entity:n,property:u});e=n.$tracker.getValue(u.name);e&&(u.isScalar?u.foreignKeys!=null&&u.foreignKeys.length>0?f.push(e):i.deleteEntity(e):(o=t.filterArray(e,function(){return!0}),t.forEach(o,function(n){i.deleteEntity(n)})))}}),n.$tracker.entityState===u.entityStates.Added?this.detachEntity(n):(rt(n,!0),n.$tracker.toDeleted()),e=0;e0)throw t.createError(r.cannotDetachComplexTypeWithOwners);b(n,this);rt(n,!0);ut(n,this);n.$tracker.toDetached();n.$tracker.manager=null;this.entities.remove(n)},n.createSavePackage=function(n,t){var f=t&&t.userData||null,i=t&&t.forceUpdate,r,u;return i==null&&(i=s.forceUpdate),r={userData:f,forceUpdate:i},u=this.exportEntities(n||this.getChanges(),t),r.entities=u,r},n.rejectChanges=function(n,i){var e=this,r;f.isArray(n)||(n=[n]);r=i===!0?this.flatEntities(n):n;t.forEach(r,function(n){var t=n.$tracker;t.entityState==u.entityStates.Added?e.detachEntity(n):t.entityState==u.entityStates.Modified&&(t.undoChanges(),t.toUnchanged())})},n.undoChanges=function(n,i){f.isArray(n)||(n=[n]);var r=i===!0?this.flatEntities(n):n;t.forEach(r,function(n){n.$tracker.undoChanges()})},n.acceptChanges=function(n,i){f.isArray(n)||(n=[n]);var r=i===!0?this.flatEntities(n):n;t.forEach(r,function(n){n.$tracker.acceptChanges()})},n.exportEntities=function(n,i){var e=[],r,f;return n=n||this.entities.getEntities(),r=i&&i.forceUpdate,r==null&&(r=s.forceUpdate),f=i&&i.minimizePackage,f==null&&(f=s.minimizePackage),t.forEach(n,function(n,i){var o=n.$tracker,a=o.entityType,h=o.entityState,c,s,l;if(r===!1&&(r=o.forceUpdate),c={},f===!0)if(h==u.entityStates.Modified)if(o.originalValues.length>0)s={},t.forEach(o.originalValues,function(t){var f,r=t.p.split("."),e,u,i;if(r.length>1){for(e=0;e0},n.getChanges=function(){return this.entities.getChanges()},n.saveChanges=function(n,i,e){var c=n&&n.entities||this.getChanges(),a,v,p,w,y;n=vt(this,c,n);a=n&&n.async==!1?null:s.getPromiseProvider();v=null;a&&(v=a.deferred());var b=n&&n.autoFixScalar,k=n&&n.autoFixPlural,d=null;return(f.isArray(c)||(c=[c]),c&&c.length>0?(p=[],s.validateOnSave===!0&&t.forEach(c,function(n){if(n.$tracker.entityState!=u.entityStates.Deleted){var t=n.$tracker.validate();t&&t.length>0&&p.push({entity:n,validationErrors:t})}}),p.length>0?(w=new t.createError(r.validationFailed,{entities:c,validationErrors:p}),w.entitiesInError=p,h(e,a,v,w,this)):(y=this,this.dataService.saveChanges(this.createSavePackage(c,n),n,function(r){try{r.GeneratedEntities!=null&&r.GeneratedEntities.length>0&&o(r.GeneratedEntities,null,u.mergeStrategy.Preserve,u.entityStates.Unchanged,y,b,k);r.GeneratedValues&&t.forEach(r.GeneratedValues,function(n){var r=c[n.Index],f,t=n.Property.split("."),i,s,e;if(t.length>1){for(i=0;i",function(n,t){return n()>t()},"gt")),i.push(new n("Lesser","<",function(n,t){return n()=",function(n,t){var i=n(),r=t();return i==r||i>r},"ge")),i.push(new n("LesserEqual","<=",function(n,t){var i=n(),r=t();return i==r||i>",function(n,t){return n()>>t()})),n.find=function(n){var r=t.filterArray(i,function(t){return t.code==n||t.oData==n||t.js==n});return r.length>0?r[0]:null},n}(),filterOps:new h.enums({Equals:{oData:"eq",code:"=="},NotEqual:{oData:"ne",code:"!="},Greater:{oData:"gt",code:">"},Lesser:{oData:"lt",code:"<"},GreaterEqual:{oData:"ge",code:">="},LesserEqual:{oData:"le",code:"<="},Contains:{oData:"substringof",code:"contains",isFunc:!0},StartsWith:{oData:"startswith",code:"startswith",isFunc:!0},EndsWith:{oData:"endswith",code:"endswith",isFunc:!0}}),mergeStrategy:new h.enums("Preserve","Overwrite","ThrowError","NoTracking","NoTrackingRaw"),executionStrategy:new h.enums("Server","Local","Both","LocalIfEmptyServer"),generationPattern:new h.enums("Identity","Computed"),arraySetBehaviour:new h.enums("NotAllowed","Replace","Append")}}(),a=function(){return{queryExecuting:new e.event("beetleQueryExecuting",this),queryExecuted:new e.event("beetleQueryExecuted",this),saving:new e.event("beetleSaving",this),saved:new e.event("beetleSaved",this),info:new e.event("beetleInfo",this),warning:new e.event("beetleWarning",this),error:new e.event("beetleError",this)}}(),s=function(){var s,o;s=n.ko?l.koObservableProviderInstance:n.Backbone?l.backboneObservableProviderInstance:l.propertyObservableProviderInstance;n.Q?o=l.qPromiseProviderInstance:n.jQuery&&(o=l.jQueryPromiseProviderInstance);var h=u.arraySetBehaviour.NotAllowed,c=l.defaultDateConverterInstance,a,e={};return e.autoFixScalar=!0,e.autoFixPlural=!1,e.validateOnMerge=!0,e.validateOnSave=!0,e.liveValidate=!0,e.handleUnmappedProperties=!0,e.isCaseSensitive=!1,e.ignoreWhiteSpaces=!1,e.forceUpdate=!1,e.workAsync=!0,e.ajaxTimeout=null,e.minimizePackage=!1,e.getObservableProvider=function(){return s},e.setObservableProvider=function(n){var h,e,o;if(f.isInstanceOf(n,i.observableProviderBase))s=n;else{if(f.isNotEmptyString(n))for(h=u.observableProviders.symbols(),e=0;e p.Name.",functionNotSupportedForOData:"OData does not support %0 function, please use Beetle Query Strings (like: manager.executeQuery(query, {useBeetleQueryStrings: true}))",instanceError:"%0 is not an instance of %1.",invalidArguments:"Invalid arguments.",invalidDefaultValue:"%0 is not a valid default value for %0.",invalidEnumValue:"Invalid enum value, %0 cannot be found in %1.",invalidExpression:"%0 can only have %1 type expressions.",invalidPropertyAlias:"Invalid property alias.",invalidStatement:"Invalid statement.",invalidValue:"Invalid value for %0 property.",managerInvalidArgs:"Invalid arguments. Valid args are: {DataService} or {Uri, [MetadataManager]} or {Uri, [metadataString (string)]} or {Uri, [doNotUseMetadata (bool)]}.",maxLenError:"%0 property length cannot exceed %1.",maxPrecisionError:"Value %0 exceeded maximum precision of %1.",mergeStateError:"Cannot merge entities with %0 state.",minLenError:"%0 property length must be greater than %1.",noMetadataEntityQuery:"Cannot create entity query when no metadata is available.",noMetadataRegisterCtor:"Cannot register constructor when no metadata is available.",noOpenGroup:"Could not find any open group.",notFoundInMetadata:"Could not find %0 in metadata.",notImplemented:"%0 %1 is not implemented.",notNullable:"Cannot set %0 with null, property is not nullable.",oDataNotSupportMultiTyped:"Multi-Typed queries cannot be used for OData services.",onlyManagerCreatedCanBeExecuted:"Only queries which are created from a manager can be directly executed.",onlyManagerCreatedCanAcceptEntityShortName:"Only queries which are created from a manager can accept entity type short name parameter.",pendingChanges:"Pending changes",pluralNeedsInverse:"To load plural relations, navigation property must have inverse.",projectionsMustHaveAlias:"All projected values must have a property name or alias.",propertyNotFound:"Could not find property: %0.",queryClosed:"Query is closed, expression cannot be added. Queries must be executed after some expressions like first, single, any, all etc..",rangeError:"%0 property value must be between %1 and %2.",requiredError:"%0 property is required.",sameKeyExists:"There is already an entity with same key in the manager.",sameKeyOnDifferentTypesError:"Two different types of entities cannot have same keys when they are from same inheritance root (%0, %1).",settingArrayNotAllowed:"Setting array property is not allowed, you may change this via beetle.settings.setArraySetBehaviour(behavior).",stringLengthError:"%0 property length must be between %1 and %2.",twoEndCascadeDeleteNotAllowed:"Two-end cascade deletes are not supported.",typeError:"%0 type is not %1.",typeMismatch:"%0 value type mismatch. expected type: %1, given type: %2, value: %3",typeRequiredForLocalQueries:'To execute queries locally, entity type must be provided (createQuery("Entities", "Entity") or createEntityQuery("Entity")).',unclosedQuote:'Unclosed quote in "%0".',unclosedToken:'Unclosed "%0".',unexpectedProperty:'Unexpected property "%0".',unexpectedToken:"Unexpected %0.",unknownDataType:"Unknown data type: %0.",unknownExpression:"Unknown expression.",unknownFunction:"Unknown function: %0.",unknownParameter:"Unknown parameter: %0.",unknownValidator:"Unknown validator type: %0.",unsoppertedState:"Unsupported entity state: %0.",validationErrors:"Validation errors",validationFailed:"Validation failed.",valueCannotBeNull:"Value cannot be null: %0.",operatorNotSupportedForOData:"Operator is not supported for OData: %0."}),n.beetleI18N}(),y=function(){return{version:"1.0",i18N:r,helper:t,assert:f,libs:h,baseTypes:i,impls:l,metadata:c,querying:o,core:e,services:v,enums:u,events:a,settings:s,MetadataManager:c.metadataManager,entityManager:e.entityManager,EntityManager:e.entityManager,WebApiService:v.webApiService,MvcService:v.mvcService,EntityStates:u.entityStates,FilterOps:u.filterOps,MergeStrategy:u.mergeStrategy}}();return t.tryFreeze(y),n.beetle=y,y})(window); /* //# sourceMappingURL=beetle.min.js.map */ \ No newline at end of file diff --git a/_NuGet Packages/content/Scripts/beetle.js b/_NuGet Packages/content/Scripts/beetle.js index 05a089e2..7253f9f5 100644 --- a/_NuGet Packages/content/Scripts/beetle.js +++ b/_NuGet Packages/content/Scripts/beetle.js @@ -5447,7 +5447,7 @@ } return false; } - return items && items.indexOf(item) >= 0; + return items && items.indexOf(item) > 0; }; return new ctor(); @@ -8423,8 +8423,8 @@ // if option need local and server results both, after server query re-run same query on local. if (execution == enums.executionStrategy.Both) { newEntities = that.executeQueryLocally(query); - if (inlineCount != null && newEntities.$inlineCountDiff != null) - inlineCount += newEntities.$inlineCountDiff; + if (inlineCount) + inlineCount += newEntities.$addedCount - newEntities.$deletedCount; } if (newEntities) { if (query.inlineCountEnabled && inlineCount != null) @@ -8470,29 +8470,23 @@ } else throw helper.createError(i18N.typeRequiredForLocalQueries); - var array = [], serverArray = [], modifiedClient = false; + var array = [], addedCount = 0, deletedCount = 0; helper.forEach(entities, function (entity) { if (entity.$tracker.entityState == enums.entityStates.Added) { - modifiedClient = true; + addedCount++; array.push(entity); } - else if (entity.$tracker.entityState == enums.entityStates.Deleted) { - modifiedClient = true; - serverArray.push(entity); - } - else { + else if (entity.$tracker.entityState == enums.entityStates.Deleted) + deletedCount++; + else array.push(entity); - serverArray.push(entity); - } }); // get array handling function for query var func = query.toFunction(); // run function against entities array = func(array, varContext); - if (array.$inlineCount && modifiedClient) { - var serverResult = func(serverArray, varContext); - array.$inlineCountDiff = array.$inlineCount - serverResult.$inlineCount; - } + array.$addedCount = addedCount; + array.$deletedCount = deletedCount; return array; }; diff --git a/_NuGet Packages/content/Scripts/beetle.min.js b/_NuGet Packages/content/Scripts/beetle.min.js index 172e216e..5c7c2d4b 100644 --- a/_NuGet Packages/content/Scripts/beetle.min.js +++ b/_NuGet Packages/content/Scripts/beetle.min.js @@ -1,4 +1,4 @@ -(function(n){"use strict";var t=function(){return{assertPrm:function(n,t){return new f(n,t)},combine:function(n,i){var r,e,u;if(n==i)return n;if(r={},n!=null)for(e in n)r[e]=n[e];if(i!=null)for(u in i){var s=r[u],o=i[u],h=f.isTypeOf(s,"object")&&f.isTypeOf(o,"object")?t.combine(s,o):o;r[u]=h}return r},objEquals:function(n,i){var u,e,r,o;if(n==i)return!0;if(n==null||i==null)return!1;if(f.isObject(n)&&f.isObject(i)){u=0;e=0;for(r in n){if(!i.hasOwnProperty(r)||!t.objEquals(t.getValue(n,r),t.getValue(i,r)))return!1;u++}for(o in i)e++;return u==e}return!1},equals:function(n,t,i,r){var u,f;return typeof n=="string"&&typeof t=="string"&&(u=r&&r.isCaseSensitive,u==null&&(u=s.isCaseSensitive),f=r&&r.ignoreWhiteSpaces,f==null&&(f=s.ignoreWhiteSpaces),u||(n=n.toLowerCase(),t=t.toLowerCase()),f&&(n=n.trim(),t=t.trim())),i?n===t:n==t},formatString:function(n){var t=arguments,i=RegExp("%([0-"+(arguments.length-1)+"])","g"),r=RegExp("{([0-"+(arguments.length-2)+"])}","g");return n.replace(i,function(n,i){return t[Number(i)+1]||""}).replace(r,function(n,i){return t[Number(i)+1]||""})},tryFreeze:function(n,t){var r,i;if(!n||!Object.freeze)return n;if(Object.freeze(n),t===!0)for(r in n)i=n[r],f.isArray(i)?this.tryFreezeArray(i,t):f.isObject(i)&&this.tryFreeze(i,t);return n},tryFreezeArray:function(n,t){if(n&&Object.freeze)for(var i=0;i=0;u--)n.splice(r[u],1);return r.length},mapArray:function(n,t){for(var r,u=[],i=0;i0&&(u.splice(0,0,n),n=t.formatString.apply(null,u)),o=new Error(n),e)for(s in e)o[s]=e[s];return a.error.notify(o),o},setForeignKeys:function(n,t,i){for(var u,f,e,o,r=0;r")return i.aliases.push(n.left.name),it=t.jsepToODataQuery(n.right,i),i.aliases.pop(),it;if(k=u.langOperators.find(n.operator).oData,!k)throw t.createError(r.operatorNotSupportedForOData,[n.operator],{expression:n});return"("+t.jsepToODataQuery(n.left,i)+" "+k+" "+t.jsepToODataQuery(n.right,i)+")"}if(n.type=="UnaryExpression")return n.operator+t.jsepToODataQuery(n.argument,i);if(n.type=="Identifier"){if(l=n.name,l[0]=="@"){if(a=undefined,v=l.slice(1),i.expVarContext&&i.expVarContext[v]!==undefined?a=i.expVarContext[v]:i.varContext&&(a=i.varContext[v]),a===undefined)throw t.createError(r.unknownParameter,[l],{expression:n,queryContext:i});return e.dataTypes.toODataValue(a)}return l}if(n.type=="Literal")return e.dataTypes.toODataValue(n.value);if(n.type=="MemberExpression")return n.object.name&&n.object.name!=i.currentAlias&&t.findInArray(i.aliases,n.object.name)?n.property.name:t.jsepToODataQuery(n.object,i)+"/"+n.property.name;if(n.type=="Compound"){for(f=[],h=0;h"&&(c=s[0].left.name,s=[s[0].right]),c&&(i.currentAlias=c,i.aliases.push(c)),p=0;p"?(i.aliases.push(n.left.name),tt=t.jsepToBeetleQuery(n.right,i),i.aliases.pop(),tt):(it=u.langOperators.find(n.operator).code,"("+t.jsepToBeetleQuery(n.left,i)+" "+it+" "+t.jsepToBeetleQuery(n.right,i)+")");if(n.type=="UnaryExpression")return n.operator+t.jsepToBeetleQuery(n.argument,i);if(n.type=="Identifier"){if(c=n.name,c[0]=="@"){if(l=undefined,v=c.slice(1),i.expVarContext&&i.expVarContext[v]!==undefined?l=i.expVarContext[v]:i.varContext&&(l=i.varContext[v]),l===undefined)throw t.createError(r.unknownParameter,[c],{expression:n,queryContext:i});return e.dataTypes.toBeetleValue(l)}return c}if(n.type=="Literal")return e.dataTypes.toBeetleValue(n.value);if(n.type=="MemberExpression")return n.object.name&&t.findInArray(i.aliases,n.object.name)?n.property.name:t.jsepToBeetleQuery(n.object,i)+"."+n.property.name;if(n.type=="Compound"){for(f=[],h=0;h"&&(a=s[0].left.name,s=[s[0].right]),a&&(i.currentAlias=a,i.aliases.push(a)),y=0;y")return i.currentAlias&&i.aliases.push(i.currentAlias),i.currentAlias={alias:n.left.name},nt=t.jsepToFunction(n.right,i)(f),i.currentAlias=i.aliases.pop(),nt;var ut=u.langOperators.find(n.operator),tt=i.varContext,ft=function(){return t.jsepToFunction(n.left,i)(f)},et=function(){return t.jsepToFunction(n.right,i)(f)};return ut.asFunc.call(tt,ft,et)}if(n.type=="UnaryExpression")return it=function(){return t.jsepToFunction(n.argument,i)(f)},rt=u.langOperators.find(n.operator),rt.asFunc.call(tt,it);if(n.type=="Identifier"){if(e=n.name,e=="null")return null;if(e=="true")return!0;if(e=="false")return!1;if(e[0]=="@"){if(v=undefined,y=e.slice(1),i.expVarContext&&i.expVarContext[y]!==undefined?v=i.expVarContext[y]:i.varContext&&(v=i.varContext[y]),v===undefined)throw t.createError(r.unknownParameter,[e],{expression:n,queryContext:i});return v}return i.currentAlias&&i.currentAlias.alias==e?f:(w=t.findInArray(i.aliases,e,"alias"),w)?w.value:(b=t.getValue(f,e),b===undefined)?window[e]:b}if(n.type=="Literal")return n.value;if(n.type=="MemberExpression"){if(n.object.name){if(i.currentAlias&&n.object.name==i.currentAlias.alias)return t.getValue(f,n.property.name);if(k=t.findInArray(i.aliases,n.object.name,"alias"),k)return t.getValue(k.value,n.property.name)}return t.getValue(t.jsepToFunction(n.object,i)(f),n.property.name)}if(n.type=="CallExpression"){var s=n.arguments,h=[],p=null;if(s.length==1&&s[0]&&s[0].type=="BinaryExpression"&&s[0].operator=="=>"&&(p=s[0].left.name,s=[s[0].right]),p&&(i.currentAlias&&i.aliases.push(i.currentAlias),i.currentAlias={alias:p}),t.forEach(s,function(n){n!=null&&h.push(t.jsepToFunction(n,i))}),l=n.callee.type=="MemberExpression"?n.callee.property.name:n.callee.name,c=o.queryFuncs.getFunc(l,!1),c)n.callee.type=="MemberExpression"&&h.splice(0,0,t.jsepToFunction(n.callee.object,i)),h.splice(0,0,f),d=c.impl.apply(i,h);else{if(l[0]=="@")if(a=l.slice(1),i.expVarContext&&i.expVarContext[a])c=i.expVarContext[a];else if(i.varContext&&i.varContext[a])c=i.varContext[a];else throw t.createError(r.unknownParameter,[a],{expression:n,queryContext:i});else if(g=n.callee.type=="MemberExpression"?t.jsepToFunction(n.callee.object,i)(f):window,g==null||(c=g[l])==null)throw t.createError(r.unknownFunction,[l]);h=t.mapArray(h,function(){return this(f)});d=c.apply(i,h)}return p&&(i.currentAlias=i.aliases.pop()),d}throw t.createError(r.unknownExpression,{expression:n});}},jsepToProjector:function(n,i){var h=[],u,e,o,s;for(f.isArray(n)||(n=[n]),u=0;uu+2&&n[u+1].name&&n[u+1].name.toLowerCase()=="as"){if(u=u+2,s=n[u],s.type!="Identifier")throw t.createError(r.invalidPropertyAlias,{expressions:n,aliasExpression:s});e=s.name}if(n.length>1&&!e)throw t.createError(r.projectionsMustHaveAlias,{expressions:n,expression:o});h.push({p:e,func:t.jsepToFunction(o,i)})}return function(t){for(var r,u,f={},i=0;i0)throw t.createError(this.errors.join("\n"),{name:this.name,value:this.value});},n.hasValue=function(n,i,u){return n==null?(i&&i.push(t.formatString(r.valueCannotBeNull,u)),!1):!0},n.isObject=function(n,i,u){return e.dataTypes.object.isValid(n)?!0:(i&&i.push(t.formatString(r.typeError,u,"object")),!1)},n.isFunction=function(n,i,u){return e.dataTypes.function.isValid(n)?!0:(i&&i.push(t.formatString(r.typeError,u,"function")),!1)},n.isNotEmptyString=function(i,u,f){return!n.isTypeOf(i,"string",u)||i===""?(u&&u.push(t.formatString(r.cannotBeEmptyString,f)),!1):!0},n.isTypeOf=function(i,u,f,o){if(!n.hasValue(i))return!1;var s=e.dataTypes.byName(u);return s.isValid(i)?!0:(f&&f.push(t.formatString(r.typeMismatch,o,u,s,i)),!1)},n.isArray=function(n,i,u){return e.dataTypes.array.isValid(n)?!0:(i&&i.push(t.formatString(r.typeError,u,"array")),!1)},n.isEnum=function(n,i,u){return i.contains(n)?!0:(u&&u.push(t.formatString(r.invalidEnumValue,i,n)),!1)},n.isInstanceOf=function(n,i,u,f){return n==null?(u&&u.push(r.cannotCheckInstanceOnNull),!1):(n instanceof i)?!0:(u&&u.push(t.formatString(r.instanceError,f,i)),!1)},n}(),h=function(){var i={};return i.enums=function(){function r(n,t){for(var i in t)n[i]=t[i];return n}function n(n,i){this.name=n;i&&r(this,i);t.tryFreeze(this)}n.prototype={};n.prototype.constructor=n;n.prototype.toString=function(){return this.name};t.tryFreeze(n.prototype);var i=function(i){var u=this,r;if(arguments.length===1&&i!==null&&typeof i=="object")for(r in i)u[r]=new n(r,i[r]);else t.forEach(arguments,function(t){u[t]=new n(t)});t.tryFreeze(this)};return i.prototype.symbols=function(){var t=[],i,n;for(i in this)(n=this[i],f.isFunction(n))||t.push(n);return t},i.prototype.contains=function(t){return(t instanceof n)?this[t.name]===t:!1},i}(),i.jsep=function(t){var a="Compound",k="Identifier",v="MemberExpression",h="Literal",d="ThisExpression",g="CallExpression",nt="UnaryExpression",tt="BinaryExpression",it="LogicalExpression",u=!0,f={"-":u,"!":u,"~":u,"+":u},r={"=>":0,"||":1,"&&":2,"|":3,"^":4,"&":5,"==":6,"!=":6,"===":6,"!==":6,"<":7,">":7,"<=":7,">=":7,"<<":8,">>":8,">>>":8,"+":9,"-":9,"*":10,"/":10,"%":10},s=function(n){var t=0,i;for(var r in n)(i=r.length)>t&&n.hasOwnProperty(r)&&(t=i);return t},c=s(f),e=s(r),y={"true":!0,"false":!1,"null":null},rt="this",p=function(n){return r[n]||0},w=function(n,t,i){var r=n==="||"||n==="&&"?it:tt;return{type:r,operator:n,left:t,right:i}},o=function(n){return n>=48&&n<=57},l=function(n){return n===36||n===95||n===64||n>=65&&n<=90||n>=97&&n<=122},ut=function(n){return n===36||n===95||n>=65&&n<=90||n>=97&&n<=122||n>=48&&n<=57},i=function(n){for(var t=0,ct=n.charAt,lt=n.charCodeAt,i=function(t){return ct.call(n,t)},u=function(t){return lt.call(n,t)},b=n.length,s=function(){for(var n=u(t);n===32||n===9;)n=u(++t)},ot=function(){s();for(var i=n.substr(t,e),u=i.length;u>0;){if(r.hasOwnProperty(i))return t+=u,i;i=i.substr(0,--u)}return!1},tt=function(){var r,i,o,n,s,f,e,u;if(f=it(),i=ot(),!i)return f;if(s={value:i,prec:p(i)},e=it(),!e)throw new Error("Expected expression after "+i+" at character "+t);for(n=[f,s,e];i=ot();){if(o=p(i),o===0)break;for(s={value:i,prec:o};n.length>2&&o<=n[n.length-2].prec;)e=n.pop(),i=n.pop().value,f=n.pop(),r=w(i,f,e),n.push(r);if(r=it(),!r)throw new Error("Expected expression after "+i+" at character "+t);n.push(s);n.push(r)}for(u=n.length-1,r=n[u];u>1;)r=w(n[u-1].value,n[u-2],r),u-=2;return r},it=function(){var i,r,e;if(s(),i=u(t),o(i)||i===46)return at();if(i===39||i===34)return vt();if(l(i))return pt();if(i===40)return wt();for(r=n.substr(t,c),e=r.length;e>0;){if(f.hasOwnProperty(r))return t+=e,{type:nt,operator:r,argument:it(),prefix:!0};r=r.substr(0,--e)}return!1},at=function(){for(var n="";o(u(t));)n+=i(t++);if(i(t)===".")for(n+=i(t++);o(u(t));)n+=i(t++);if(i(t)==="e"||i(t)==="E"){for(n+=i(t++),(i(t)==="+"||i(t)==="-")&&(n+=i(t++));o(u(t));)n+=i(t++);if(!o(u(t-1)))throw new Error("Expected exponent ("+n+i(t)+") at character "+t);}if(l(u(t)))throw new Error("Variable names cannot start with a number ("+n+i(t)+") at character "+t);return{type:h,value:parseFloat(n),raw:n}},vt=function(){for(var n="",u=i(t++),f=!1,r;t=0;t--)i=this.expressions[t],f.isInstanceOf(i,n)&&this.expressions.splice(t,1);return this},u}(),observableProviderBase:function(){var i=function(n){this.name=n||"observableProviderBase"},n=i.prototype;return n.toString=function(){return this.name},n.isObservable=function(){throw t.createError(r.notImplemented,[this.name,"isObservable"]);},n.toObservable=function(){throw t.createError(r.notImplemented,[this.name,"toObservable"]);},n.getValue=function(){throw t.createError(r.notImplemented,[this.name,"getValue"]);},n.setValue=function(){throw t.createError(r.notImplemented,[this.name,"setValue"]);},i}(),ajaxProviderBase:function(){var n=function(n){this.name=n||"ajaxProviderBase"},i=n.prototype;return i.toString=function(){return this.name},i.doAjax=function(){throw t.createError(r.notImplemented,[this.name,"doAjax"]);},n}(),serializationServiceBase:function(){var i=function(n){this.name=n||"serializationServiceBase"},n=i.prototype;return n.toString=function(){return this.name},n.serialize=function(){throw t.createError(r.notImplemented,[this.name,"serialize"]);},n.deserialize=function(){throw t.createError(r.notImplemented,[this.name,"deserialize"]);},i}(),promiseProviderBase:function(){var i=function(n){this.name=n||"promiseProviderBase"},n=i.prototype;return n.toString=function(){return this.name},n.deferred=function(){throw t.createError(r.notImplemented,[this.name,"deferred"]);},n.getPromise=function(){throw t.createError(r.notImplemented,[this.name,"getPromise"]);},n.resolve=function(){throw t.createError(r.notImplemented,[this.name,"resolve"]);},n.reject=function(){throw t.createError(r.notImplemented,[this.name,"reject"]);},i}(),dataServiceBase:function(){function a(n,e,o,s){var v,w;n==null?n="":n[n.length-1]!="/"&&(n+="/");s.uri=n;var h=null,a=null,y=null,p=null;if(o&&(h=o.ajaxProvider,a=o.serializationService,y=o.dataType,p=o.dataType),s.ajaxProvider=h&&f.isInstanceOf(h,i.ajaxProviderBase)?h:l.jQueryAjaxProviderInstance,s.serializationService=a&&f.isInstanceOf(a,i.SerializationService)?a:l.jsonSerializationServiceInstance,!(e===!0))if(e){if(f.isInstanceOf(e,c.metadataManager))s.metadataManager=e;else if(f.isObject(e))try{s.metadataManager=new c.metadataManager(e)}catch(b){throw t.createError(r.invalidArguments,{exception:b,args:arguments,dataService:this});}}else v=t.findInArray(u,n,"uri"),v?s.metadataManager=v.data:(w=s.fetchMetadata(),s.metadataManager=new c.metadataManager(w),u.push({uri:n,data:s.metadataManager}));s.dataType=y||"json";s.contentType=p||"application/json; charset=utf-8"}var u=[],h=function(n,t,i){a(n,t,i,this)},n=h.prototype;return n.toString=function(){return this.uri},n.getEntityType=function(n){return this.metadataManager?this.metadataManager.getEntityTypeByShortName(n):null},n.createQuery=function(n,i,r){return(t.assertPrm(n,"resourceName").isNotEmptyString().check(),i)?this.createEntityQuery(i,n,r):(this.metadataManager&&this.metadataManager.createQuery(n,null,r),new o.entityQuery(n,null,r))},n.createEntityQuery=function(n,i,u){if(t.assertPrm(n,"shortName").isNotEmptyString().check(),!this.metadataManager)throw t.createError(r.noMetadataEntityQuery,{dataService:this});return this.metadataManager.createQuery(i,n,u)},n.registerCtor=function(n,i,u){if(this.metadataManager==null)throw t.createError(r.noMetadataEntityQuery);this.metadataManager.registerCtor(n,i,u)},n.createEntity=function(n,i){if(!this.metadataManager)throw t.createError(r.noMetadataEntityQuery,{dataService:this});return this.metadataManager.createEntity(n,i)},n.createRawEntity=function(n,i){if(!this.metadataManager)throw t.createError(r.noMetadataEntityQuery,{dataService:this});return this.metadataManager.createRawEntity(n,i)},n.toEntity=function(n,t){var i=null;return this.metadataManager&&(i=this.metadataManager.getEntityType(t)),i||(i=new c.entityType(t)),e.entityTracker.toEntity(n,i,s.getObservableProvider())},n.toODataQueryParams=function(n,i){if(n.isMultiTyped===!0)throw t.createError(r.oDataNotSupportMultiTyped,{query:n});var u={varContext:i},f=[];return t.forEach(n.parameters,function(n){f.push({name:n.name,value:n.value==null?"":n.value})}),n.inlineCountEnabled===!0&&f.push({name:"$inlinecount",value:"allpages"}),t.forEach(n.expressions,function(n,t){u.expVarContext=n.varContext;var r,i;n.onlyBeetle===!0?(r="!e"+t,i=n.toBeetleQuery(u),i=n.name+":"+i):(r="$"+n.name,i=n.toODataQuery(u));f.push({name:r,value:i});u.expVarContext=undefined}),f},n.toBeetleQueryParams=function(n,i){var u={varContext:i},r=[];return t.forEach(n.parameters,function(n){r.push({name:n.name,value:n.value==null?"":n.value})}),n.inlineCountEnabled===!0&&r.push({name:"!e0",value:"inlinecount:allpages"}),t.forEach(n.expressions,function(n,t){u.expVarContext=n.varContext;r.push({name:"!e"+(t+1),value:n.name+":"+n.toBeetleQuery(u)});u.expVarContext=undefined}),r},n.fetchMetadata=function(){throw t.createError(r.notImplemented,["dataServiceBase","fetchMetadata"]);},n.createEntityAsync=function(){throw t.createError(r.notImplemented,["dataServiceBase","createEntityAsync"]);},n.executeQuery=function(){throw t.createError(r.notImplemented,["dataServiceBase","executeQuery"]);},n.executeQueryParams=function(){throw t.createError(r.notImplemented,["dataServiceBase","executeQueryParams"]);},n.saveChanges=function(){throw t.createError(r.notImplemented,["dataServiceBase","saveChanges"]);},h}()}}(),l=function(){return{defaultDateConverterInstance:function(){var n=function(){i.dateConverterBase.call(this,"Default Date Converter")},r;return t.inherit(n,i.dateConverterBase),r=n.prototype,r.parse=function(n){if(typeof n!="string"||n.length<10||!/^\d{4}[\/\-](0?[1-9]|1[012])[\/\-](0?[1-9]|[12][0-9]|3[01])$/.test(n.substr(0,10)))return null;/.\d{3}$/.test(n)&&(n+="Z");try{var t=Date.parse(n);return isNaN(t)?null:new Date(t)}catch(i){return null}},r.toISOString=function(n){return n.toISOString()},new n}(),koObservableProviderInstance:function(n){var u,r;return n&&(n.extenders.intercept=function(t,i){return n.computed({read:t,write:function(n){var r=i&&i.callback;r&&r(i.object,i.property,t,n)}})}),u=function(){i.observableProviderBase.call(this,"Knockout Observable Provider");t.tryFreeze(this)},t.inherit(u,i.observableProviderBase),r=u.prototype,r.isObservable=function(t,i){return n.isObservable(t[i])},r.toObservable=function(i,r,u){function s(t,r,u){var f=n.observable(r);return u?n.observable(r).extend({intercept:{object:i,property:t,callback:u}}):f}function c(t,r,u,f,o){var s;return u=u||[],f&&(u=new e.trackableArray(u,i,t,function(n,t,u,e,o){s.$fromKo!==!0&&i[r].valueHasMutated();s.$fromKo=!1;f(n,t,u,e,o)})),s=n.observableArray(u),s.subscribe(function(){s.$fromKo=!0},null,"beforeChange"),o&&(s.equalityComparer=function(n,r){o(i,t,n,r)}),s}var l=u&&u.propertyChange,a=u&&u.arrayChange,v=u&&u.dataPropertyChange,y=u&&u.scalarNavigationPropertyChange,p=u&&u.pluralNavigationPropertyChange,h=u&&u.arraySet,o=[];t.forEachProperty(i,function(n,t){o.push({p:n,v:t})});r&&r.hasMetadata&&(t.forEach(r.dataProperties,function(n){var r=i[n.name];r=r===undefined?null:n.handle(r);i[n.name]=s(n,r,v);t.removeFromArray(o,n.name,"p")}),t.forEach(r.navigationProperties,function(n){var r=i[n.name];r===undefined&&(r=null);i[n.name]=n.isScalar?s(n,r,y):c(n,n.name,r,p,h);t.removeFromArray(o,n.name,"p")}));t.forEach(o,function(n){var u=n.p,e=n.v;i[u]=f.isArray(e)?c(u,u,e,a,h):s(u,e,l);t.findInArray(r.properties,u)||r.properties.push(u)})},r.getValue=function(t,i){return n.utils.unwrapObservable(t[i])},r.setValue=function(n,t,i){n[t](i)},new u}(n.ko),propertyObservableProviderInstance:function(){var r=function(){i.observableProviderBase.call(this,"Property Observable Provider");t.tryFreeze(this)},n;return t.inherit(r,i.observableProviderBase),n=r.prototype,n.isObservable=function(n,t){return n.$fields!==undefined&&n.$fields[t]!==undefined},n.toObservable=function(n,i,r){function s(t,i,r){return Object.defineProperty(n,i,{get:function(){return n.$fields[i]},set:function(u){if(r){var f=w(n,i);r(n,t,f,u)}else n.$fields[i]=u},enumerable:!0,configurable:!0})}function c(t,i,r,f,o){return r=r||[],f&&(r=new e.trackableArray(r,n,t,f)),u[i]=r,Object.defineProperty(n,i,{get:function(){return n.$fields[i]},set:function(r){o?o(n,t,items,r):n.$fields[i]=r}})}function w(n,t){return function(){return arguments.length==0?n.$fields[t]:n.$fields[t]=arguments[0]}}var l=r&&r.propertyChange,a=r&&r.arrayChange,v=r&&r.dataPropertyChange,y=r&&r.scalarNavigationPropertyChange,p=r&&r.pluralNavigationPropertyChange,h=r&&r.arraySet,u={},o=[];return t.forEachProperty(n,function(n,t){o.push({p:n,v:t})}),i&&i.hasMetadata&&(t.forEach(i.dataProperties,function(i){var r=n[i.name];r=r===undefined?null:i.handle(r);delete n[i.name];s(i,i.name,v);t.removeFromArray(o,i.name,"p");u[i.name]=r}),t.forEach(i.navigationProperties,function(i){var r=n[i.name];r===undefined&&(r=null);delete n[i.name];i.isScalar?(s(i,i.name,y),u[i.name]=r):c(i,i.name,r,p,h);t.removeFromArray(o,i.name,"p")})),t.forEach(o,function(r){var e=r.p,o=r.v;delete n[e];f.isArray(o)?c(e,e,o,a,h):(s(e,e,l),u[e]=o);t.findInArray(i.properties,e)||i.properties.push(e)}),n.$fields=u,n},n.getValue=function(n,t){return n[t]},n.setValue=function(n,t,i){n[t]=i},new r}(),backboneObservableProviderInstance:function(){var r=function(){i.observableProviderBase.call("Backbone Observable Provider");t.tryFreeze(this)},n;return t.inherit(r,i.observableProviderBase),n=r.prototype,n.isObservable=function(n,t){return n.$fields!==undefined&&n.$fields[t]!==undefined},n.toObservable=function(n,i,r){function s(t,i,r){return Object.defineProperty(n,i,{get:function(){return n.$fields[i]},set:function(u){if(r){var f=w(n,i);r(n,t,f,u)}else n.$fields[i]=u},enumerable:!0,configurable:!0})}function c(t,i,r,f,o){return r=r||[],f&&(r=new e.trackableArray(r,n,t,f)),u[i]=r,Object.defineProperty(n,i,{get:function(){return n.$fields[i]},set:function(r){o?o(n,t,items,r):n.$fields[i]=r}})}function w(n,t){return function(){return arguments.length==0?n.$fields[t]:n.$fields[t]=arguments[0]}}var l=r&&r.propertyChange,a=r&&r.arrayChange,v=r&&r.dataPropertyChange,y=r&&r.scalarNavigationPropertyChange,p=r&&r.pluralNavigationPropertyChange,h=r&&r.arraySet,u={},o=[];return t.forEachProperty(n,function(n,t){o.push({p:n,v:t})}),i&&i.hasMetadata&&(t.forEach(i.dataProperties,function(i){var r=n[i.name];r=r===undefined?null:i.handle(r);delete n[i.name];s(i,i.name,v);t.removeFromArray(o,i.name,"p");u[i.name]=r}),t.forEach(i.navigationProperties,function(i){var r=n[i.name];r===undefined&&(r=null);delete n[i.name];i.isScalar?(s(i,i.name,y),u[i.name]=r):c(i,i.name,r,p,h);t.removeFromArray(o,i.name,"p")})),t.forEach(o,function(r){var e=r.p,o=r.v;delete n[e];f.isArray(o)?c(e,e,o,a,h):(s(e,e,l),u[e]=o);t.findInArray(i.properties,e)||i.properties.push(e)}),n.$fields=u,n},n.getValue=function(n,t){return n[t]},n.setValue=function(n,t,i){n[t]=i},new r}(),jQueryAjaxProviderInstance:function(n){function f(n){var i={status:n.status};if(n.responseText)try{i.detail=JSON.parse(n.responseText)}catch(r){}return t.createError(n.statusText,i)}var r=function(){i.ajaxProviderBase.call(this,"jQuery Ajax Provider");t.tryFreeze(this)},u;return t.inherit(r,i.ajaxProviderBase),u=r.prototype,u.doAjax=function(t,i,r,u,e,o,s,h,c,l){var a={url:t,accepts:{json:"application/json; odata=verbose",xml:"text/xml; application/xhtml+xml;application/xml",text:"text/xml"},type:i,dataType:r,contentType:u,traditional:!1,data:e,cache:!1,async:o,timeout:s,success:function(n,t,i){if(i.onreadystatechange=null,i.abort=null,n&&n.Error){var r=f(i);r.message=n.Error;l(r)}else c(n,i)},error:function(n){n.onreadystatechange=null;n.abort=null;l(f(n))}};return h!=null&&n.extend(a,h),n.ajax(a)},new r}(n.$),jsonSerializationServiceInstance:function(){var n=function(){i.serializationServiceBase.call(this,"Json Serializer");t.tryFreeze(this)},r;return t.inherit(n,i.serializationServiceBase),r=n.prototype,r.serialize=function(n){return JSON.stringify(n)},r.deserialize=function(n){return f.isTypeOf(n,"string")?JSON.parse(n):n},new n}(),qPromiseProviderInstance:function(n){var u=function(){i.promiseProviderBase.call(this,"Q Promise Provider");t.tryFreeze(this)},r;return t.inherit(u,i.promiseProviderBase),r=u.prototype,r.toString=function(){return this.name},r.deferred=function(){return n.defer()},r.getPromise=function(n){return n.promise},r.resolve=function(n,t){n.resolve(t)},r.reject=function(n,t){n.reject(t)},new u}(n.Q),jQueryPromiseProviderInstance:function(n){var u=function(){i.promiseProviderBase.call(this,"jQuery Promise Provider");t.tryFreeze(this)},r;return t.inherit(u,i.promiseProviderBase),r=u.prototype,r.toString=function(){return this.name},r.deferred=function(){return n.Deferred()},r.getPromise=function(n){return n.promise()},r.resolve=function(n,t){n.resolve(t)},r.reject=function(n,t){n.reject(t)},new u}(n.$)}}(),c=function(){return{dataProperty:function(){var i=function(n,t,i,r,u,f,o,s,h){this.owner=n;this.name=t;this.displayName=i||t;this.dataType=r;this.isNullable=u;this.isKeyPart=f;this.generationPattern=o;this.defaultValue=s;this.useForConcurrency=h;this.relatedNavigationProperties=[];this.validators=[];this.isEnum=r instanceof e.dataTypes.enum;this.isComplex=r.isComplex},n=i.prototype;return n.toString=function(){return this.displayName},n.isValid=function(n){return n==null?!this.isNullable:this.dataType.isValid(n,this)},n.handle=function(n){if(n==null){if(!this.isNullable)throw t.createError(r.notNullable,[this.displayName],{property:this});return null}if(n=this.dataType.handle(n,this),this.dataType==e.dataTypes.number&&this.precision&&n.toString().replace(/\./g,"").length>this.precision)throw t.createError(r.maxPrecisionError,[n,this.precision],{dataType:dataType,value:n});return this.dataType==e.dataTypes.number&&this.scale!=null&&(n=Number(n.toFixed(this.scale))),n},n.getDefaultValue=function(){return this.defaultValue?this.defaultValue:this.isNullable?null:this.generationPattern==u.generationPattern.Identity&&this.isKeyPart===!0?this.dataType.autoValue():this.dataType.defaultValue()},n.addValidation=function(n,i,r,u){t.assertPrm(n,"name").isNotEmptyString().check();t.assertPrm(i,"func").isFunction().check();this.validators.push(new e.validator(n,i,r,u))},n.validate=function(n){var u=[],i,r;return this.validators.length>0&&(i=this,r=t.getValue(n,i.name),t.forEach(this.validators,function(f){var e=f.validate(r,n);e&&u.push(t.createValidationError(n,r,i,e,f))})),u},i}(),navigationProperty:function(){var i=function(n,t,i,r,u,f,e,o){this.owner=n;this.name=t;this.displayName=i||t;this.entityTypeName=r;this.entityType=null;this.isScalar=u;this.isComplex=f===undefined;this.associationName=f;this.cascadeDelete=e===!0;this.foreignKeyNames=o||[];this.inverse=null;this.foreignKeys=[];this.validators=[];this.triggerOwnerModify=!1},n=i.prototype;return n.toString=function(){return this.displayName},n.checkAssign=function(n){if(n!=null){if(!n.$tracker)throw t.createError(r.assignErrorNotEntity,[this],{property:this,value:n});var i=n.$tracker.entityType;if(!this.entityType.isAssignableWith(i))throw t.createError(r.assignError,[this.name,i.shortName],{property:this,value:n});}},n.addValidation=function(n,i,r,u){t.assertPrm(n,"name").isNotEmptyString().check();t.assertPrm(i,"func").isFunction().check();this.validators.push(new e.validator(n,i,r,u))},n.validate=function(n){var u=[],i,r;return this.validators.length>0&&(i=this,r=t.getValue(n,i.name),t.forEach(this.validators,function(f){var e=f.validate(r);e&&u.push(t.createValidationError(n,r,i,e,f))})),u},i}(),entityType:function(){function u(n,t){n.baseType&&u(n.baseType,t);n.constructor&&n.constructor.call(t,t)}function a(n,i){for(var u,f,e,o=n.length,r=0;r0&&t.forEach(this.validators,function(r){var u=r.validate(n);u&&i.push(t.createValidationError(n,null,null,u,r))}),t.forEach(this.dataProperties,function(t){var r=t.validate(n);r&&(i=i.concat(r))}),t.forEach(this.navigationProperties,function(t){var r=t.validate(n);r&&(i=i.concat(r))}),i},i}(),metadataManager:function(){var i=function(n){this.types=[];this.enums={};this.name=null;this.displayName=null;n&&this.parseBeetleMetadata(n)},n=i.prototype;return n.toString=function(){return this.types.join(", ")},n.getEntityType=function(n,i){var u=t.findInArray(this.types,n,"name");if(!u&&i===!0)throw t.createError(r.notFoundInMetadata,[n],{metadataManager:this,typeName:n});return u},n.getEntityTypeByShortName=function(n,i){var u=t.findInArray(this.types,n,"shortName");if(!u&&i===!0)throw t.createError(r.notFoundInMetadata,[n],{metadataManager:this,typeShortName:n});return u},n.createQuery=function(n,i,r){if(i)return this.getEntityTypeByShortName(i,!0).createQuery(n,r);var u=t.filterArray(this.types,function(t){return t.setName==n});return u.length==1?u[0].createQuery(n,r):new o.entityQuery(n,null,r)},n.registerCtor=function(n,t,i){var r=this.getEntityTypeByShortName(n,!0);r.registerCtor(t,i)},n.createEntity=function(n,t){var i=this.getEntityTypeByShortName(n,!0);return i?i.createEntity(t):null},n.createRawEntity=function(n,t){var i=this.getEntityTypeByShortName(n,!0);return i?i.createRawEntity(t):null},n.parseBeetleMetadata=function(n){var o,a,s,r,v,y,p,w,l,i,f,b,k;if(this.types=[],this.enums={},this.name=n.n,this.displayName=t.getResourceValue(n.r,n.l||n.n),o=n.e,a={},o)for(s=0;s0&&a(n,t,r);i.currentGroup?i.currentGroup.filterItems.push(r):i.groups.push(r);i.currentGroup=r;i.openGroups.push(r)}function a(n,i,o){var h,p,v,a,y,c,w;if(n.length==3||n.length==4){if(h=n[1],f.isTypeOf(h,"string"))for(h=h.toLowerCase(),p=u.filterOps.symbols(),v=0;vs?i?-1:1:i?1:-1}}(c,s),o.push(l);return e=[],e.push.apply(e,n),e.sort(function(n,t){for(var r,i=0;i0},n}(),avgExp:function(){var n=function(n){i.expressionBase.call(this,"exec;avg",3,!0,!0);this.expStr=n;n&&(this.exp=h.jsep(n));this.isExecuter=!0},r;return t.inherit(n,i.expressionBase),r=n.prototype,r.toBeetleQuery=function(n){return this.exp?t.jsepToBeetleQuery(this.exp,n):""},r.clone=function(){return new n(this.expStr)},r.execute=function(t,i){return n.execute(t,this.exp,i)},n.execute=function(n,i,r){var u=i?t.jsepToFunction(i,r):function(n){return n};return o.queryFuncs.avg.impl(n,function(){return n},u)},n}(),maxExp:function(){var n=function(n){i.expressionBase.call(this,"exec;max",3,!0,!0);this.expStr=n;n&&(this.exp=h.jsep(n));this.isExecuter=!0},r;return t.inherit(n,i.expressionBase),r=n.prototype,r.toBeetleQuery=function(n){return this.exp?t.jsepToBeetleQuery(this.exp,n):""},r.clone=function(){return new n(this.expStr)},r.execute=function(t,i){return n.execute(t,this.exp,i)},n.execute=function(n,i,r){var u=i?t.jsepToFunction(i,r):function(n){return n};return o.queryFuncs.max.impl(n,function(){return n},u)},n}(),minExp:function(){var n=function(n){i.expressionBase.call(this,"exec;min",3,!0,!0);this.expStr=n;n&&(this.exp=h.jsep(n));this.isExecuter=!0},r;return t.inherit(n,i.expressionBase),r=n.prototype,r.toBeetleQuery=function(n){return this.exp?t.jsepToBeetleQuery(this.exp,n):""},r.clone=function(){return new n(this.expStr)},r.execute=function(t,i){return n.execute(t,this.exp,i)},n.execute=function(n,i,r){var u=i?t.jsepToFunction(i,r):function(n){return n};return o.queryFuncs.min.impl(n,function(){return n},u)},n}(),sumExp:function(){var n=function(n){i.expressionBase.call(this,"exec;sum",3,!0,!0);this.expStr=n;n&&(this.exp=h.jsep(n));this.isExecuter=!0},r;return t.inherit(n,i.expressionBase),r=n.prototype,r.toBeetleQuery=function(n){return this.exp?t.jsepToBeetleQuery(this.exp,n):""},r.clone=function(){return new n(this.expStr)},r.execute=function(t,i){return n.execute(t,this.exp,i)},n.execute=function(n,i,r){var u=i?t.jsepToFunction(i,r):function(n){return n};return o.queryFuncs.sum.impl(n,function(){return n},u)},n}(),countExp:function(){var n=function(n,t){i.expressionBase.call(this,"exec;count",3,!0,!0);this.expStr=n;n&&(this.exp=h.jsep(n));this.varContext=t;this.isExecuter=!0},r;return t.inherit(n,i.expressionBase),r=n.prototype,r.toBeetleQuery=function(n){return this.exp?t.jsepToBeetleQuery(this.exp,n):""},r.clone=function(){return new n(this.expStr,this.varContext)},r.execute=function(t,i){return n.execute(t,this.exp,i)},n.execute=function(n,i,r){return i&&(n=t.filterArray(n,t.jsepToFunction(i,r))),n.length},n}(),firstExp:function(){var n=function(n,t){i.expressionBase.call(this,"exec;first",3,!0,!1);this.expStr=n;n&&(this.exp=h.jsep(n));this.varContext=t;this.isExecuter=!0},u;return t.inherit(n,i.expressionBase),u=n.prototype,u.toBeetleQuery=function(n){return this.exp?t.jsepToBeetleQuery(this.exp,n):""},u.clone=function(){return new n(this.expStr,this.varContext)},u.execute=function(t,i){return n.execute(t,this.exp,i)},n.execute=function(n,i,u){if(i&&(n=t.filterArray(n,t.jsepToFunction(i,u))),n.length==0)throw t.createError(r.arrayEmpty,{array:n,expression:this});return n[0]},n}(),firstOrDefaultExp:function(){var n=function(n,t){i.expressionBase.call(this,"exec;firstOD",3,!0,!1);this.expStr=n;n&&(this.exp=h.jsep(n));this.varContext=t;this.isExecuter=!0},r;return t.inherit(n,i.expressionBase),r=n.prototype,r.toBeetleQuery=function(n){return this.exp?t.jsepToBeetleQuery(this.exp,n):""},r.clone=function(){return new n(this.expStr,this.varContext)},r.execute=function(t,i){return n.execute(t,this.exp,i)},n.execute=function(n,i,r){return i&&(n=t.filterArray(n,t.jsepToFunction(i,r))),n.length==0?null:n[0]},n}(),singleExp:function(){var n=function(n,t){i.expressionBase.call(this,"exec;single",3,!0,!1);this.expStr=n;n&&(this.exp=h.jsep(n));this.varContext=t;this.isExecuter=!0},u;return t.inherit(n,i.expressionBase),u=n.prototype,u.toBeetleQuery=function(n){return this.exp?t.jsepToBeetleQuery(this.exp,n):""},u.clone=function(){return new n(this.expStr,this.varContext)},u.execute=function(t,i){return n.execute(t,this.exp,i)},n.execute=function(n,i,u){if(i&&(n=t.filterArray(n,t.jsepToFunction(i,u))),n.length!=1)throw t.createError(r.arrayNotSingle,{array:n,expression:this});return n[0]},n}(),singleOrDefaultExp:function(){var n=function(n,t){i.expressionBase.call(this,"exec;singleOD",3,!0,!1);this.expStr=n;n&&(this.exp=h.jsep(n));this.varContext=t;this.isExecuter=!0},u;return t.inherit(n,i.expressionBase),u=n.prototype,u.toBeetleQuery=function(n){return this.exp?t.jsepToBeetleQuery(this.exp,n):""},u.clone=function(){return new n(this.expStr,this.varContext)},u.execute=function(t,i){return n.execute(t,this.exp,i)},n.execute=function(n,i,u){if(i&&(n=t.filterArray(n,t.jsepToFunction(i,u))),n.length>1)throw t.createError(r.arrayNotSingleOrEmpty,{array:n,expression:this});return n.length==0?null:n[0]},n}(),lastExp:function(){var n=function(n,t){i.expressionBase.call(this,"exec;last",3,!0,!1);this.expStr=n;n&&(this.exp=h.jsep(n));this.varContext=t;this.isExecuter=!0},u;return t.inherit(n,i.expressionBase),u=n.prototype,u.toBeetleQuery=function(n){return this.exp?t.jsepToBeetleQuery(this.exp,n):""},u.clone=function(){return new n(this.expStr,this.varContext)},u.execute=function(t,i){return n.execute(t,this.exp,i)},n.execute=function(n,i,u){if(i&&(n=t.filterArray(n,t.jsepToFunction(i,u))),n.length==0)throw t.createError(r.arrayEmpty,{array:n,expression:this});return n[n.length-1]},n}(),lastOrDefaultExp:function(){var n=function(n,t){i.expressionBase.call(this,"exec;lastOD",3,!0,!1);this.expStr=n;n&&(this.exp=h.jsep(n));this.varContext=t;this.isExecuter=!0},r;return t.inherit(n,i.expressionBase),r=n.prototype,r.toBeetleQuery=function(n){return this.exp?t.jsepToBeetleQuery(this.exp,n):""},r.clone=function(){return new n(this.expStr,this.varContext)},r.execute=function(t,i){return n.execute(t,this.exp,i)},n.execute=function(n,i,r){return i&&(n=t.filterArray(n,t.jsepToFunction(i,r))),n.length==0?null:n[n.length-1]},n}()}}(),queryFuncs:function(){var n={};return n.toupper=function(){var n=function(){i.queryFuncBase.call(this,"toupper","ToUpper",1)},r;return t.inherit(n,i.queryFuncBase),r=n.prototype,r.impl=function(n,t){return(t?t(n):n).toUpperCase()},new n}(),n.tolower=function(){var n=function(){i.queryFuncBase.call(this,"tolower","ToLower",1)},r;return t.inherit(n,i.queryFuncBase),r=n.prototype,r.impl=function(n,t){return(t?t(n):n).toLowerCase()},new n}(),n.substring=function(){var n=function(){i.queryFuncBase.call(this,"substring","Substring",3)},r;return t.inherit(n,i.queryFuncBase),r=n.prototype,r.impl=function(n,t,i,r){arguments.length==3?(r=i,i=t,t=n):t=t(n);i=i(n);r=r(n);var u=Number(i)+Number(r);return t&&t.substring(i,u)},new n}(),n.substringof=function(){var n=function(){i.queryFuncBase.call(this,"substringof","Contains",2)},r;return t.inherit(n,i.queryFuncBase),r=n.prototype,r.toBeetleFunction=function(n,t){return t=t?t+".":"",t+"Contains("+n+")"},r.impl=function(n,t,i){return i=i?i(n):n,i&&i.indexOf(t(n))>=0},new n}(),n.length=function(){var n=function(){i.queryFuncBase.call(this,"length","Length",1)},r;return t.inherit(n,i.queryFuncBase),r=n.prototype,r.toBeetleFunction=function(n){return n=n?n+".":"",n+"Length"},r.impl=function(n,t){return(t?t(n):n).length},new n}(),n.trim=function(){var n=function(){i.queryFuncBase.call(this,"trim","Trim",1)},r;return t.inherit(n,i.queryFuncBase),r=n.prototype,r.impl=function(n,t){return(t?t(n):n).trim()},new n}(),n.concat=function(){var n=function(){i.queryFuncBase.call(this,"concat","Concat",null)},r;return t.inherit(n,i.queryFuncBase),r=n.prototype,r.toBeetleFunction=function(){return"string.Concat("+Array.prototype.slice.call(arguments).join(", ")+")"},r.impl=function(n){for(var i=arguments[1](n).toString(),r=Array.prototype.slice.call(arguments,2),u=[],t=0;t=0},new u}(),n.round=function(){var n=function(){i.queryFuncBase.call(this,"round","Math.Round",1)},r;return t.inherit(n,i.queryFuncBase),r=n.prototype,r.toBeetleFunction=function(n){return"Math.Round("+n+")"},r.impl=function(n,t){return Math.round(t?t(n):n)},new n}(),n.ceiling=function(){var n=function(){i.queryFuncBase.call(this,"ceiling","Math.Ceiling(%1)",1)},r;return t.inherit(n,i.queryFuncBase),r=n.prototype,r.toBeetleFunction=function(n){return"Math.Ceiling("+n+")"},r.impl=function(n,t){return Math.ceil(t?t(n):n)},new n}(),n.floor=function(){var n=function(){i.queryFuncBase.call(this,"floor","Math.Floor",1)},r;return t.inherit(n,i.queryFuncBase),r=n.prototype,r.toBeetleFunction=function(n){return"Math.Floor("+n+")"},r.impl=function(n,t){return Math.floor(t?t(n):n)},new n}(),n.second=function(){var n=function(){i.queryFuncBase.call(this,"second","Second",1)},r;return t.inherit(n,i.queryFuncBase),r=n.prototype,r.toBeetleFunction=function(n){return n=n?n+".":"",n+"Second"},r.impl=function(n,t){return t=e.dataTypes.date.handle(t?t(n):n),t.getSeconds()},new n}(),n.minute=function(){var n=function(){i.queryFuncBase.call(this,"minute","Minute",1)},r;return t.inherit(n,i.queryFuncBase),r=n.prototype,r.toBeetleFunction=function(n){return n=n?n+".":"",n+"Minute"},r.impl=function(n,t){return t=e.dataTypes.date.handle(t?t(n):n),t.getMinutes()},new n}(),n.hour=function(){var n=function(){i.queryFuncBase.call(this,"hour","Hour",1)},r;return t.inherit(n,i.queryFuncBase),r=n.prototype,r.toBeetleFunction=function(n){return n=n?n+".":"",n+"Hour"},r.impl=function(n,t){return t=e.dataTypes.date.handle(t?t(n):n),t.getHours()},new n}(),n.day=function(){var n=function(){i.queryFuncBase.call(this,"day","Day",1)},r;return t.inherit(n,i.queryFuncBase),r=n.prototype,r.toBeetleFunction=function(n){return n=n?n+".":"",n+"Day"},r.impl=function(n,t){return t=e.dataTypes.date.handle(t?t(n):n),t.getDate()},new n}(),n.month=function(){var n=function(){i.queryFuncBase.call(this,"month","Month",1)},r;return t.inherit(n,i.queryFuncBase),r=n.prototype,r.toBeetleFunction=function(n){return n=n?n+".":"",n+"Month"},r.impl=function(n,t){return t=e.dataTypes.date.handle(t?t(n):n),t.getMonth()+1},new n}(),n.year=function(){var n=function(){i.queryFuncBase.call(this,"year","Year",1)},r;return t.inherit(n,i.queryFuncBase),r=n.prototype,r.toBeetleFunction=function(n){return n=n?n+".":"",n+"Year"},r.impl=function(n,t){return t=e.dataTypes.date.handle(t?t(n):n),t.getFullYear()},new n}(),n.max=function(){var n=function(){i.queryFuncBase.call(this,"max","Max",2)},u;return t.inherit(n,i.queryFuncBase),u=n.prototype,u.toODataFunction=function(){throw t.createError(r.functionNotSupportedForOData,["Max"]);},u.impl=function(n,t,i){var u,r,f;if(arguments.length==1?t=n:arguments.length==2?(i=t,t=n):t=t(n),t.length==0)return null;for(u=i?i(t[0]):t[0],r=1;ru&&(u=f);return u},new n}(),n.min=function(){var n=function(){i.queryFuncBase.call(this,"min","Min",2)},u;return t.inherit(n,i.queryFuncBase),u=n.prototype,u.toODataFunction=function(){throw t.createError(r.functionNotSupportedForOData,["Min"]);},u.impl=function(n,t,i){var u,r,f;if(arguments.length==1?t=n:arguments.length==2?(i=t,t=n):t=t(n),t.length==0)return null;for(u=i?i(t[0]):t[0],r=1;r0;for(r=0;r2&&(i=Array.prototype.slice.call(arguments).slice(2)),u=this.slice(n,n+t),this.changing.notify({added:i,removed:u}),i&&r(i,this),f=Array.prototype.splice.apply(this,arguments),this.after(this.object,this.property,this,u,i),this.changed.notify({added:i,removed:u}),f},n.remove=function(){var n=[],i=this;return this.changing.notify({added:[],removed:arguments}),t.forEach(arguments,function(r){var u=t.indexOf(i,r);u>=0&&(Array.prototype.splice.call(i,u,1),n.push(r))}),this.after(this.object,this.property,this,n,null),this.changed.notify({added:[],removed:arguments}),n},n.load=function(n,t,i,r,u){return this.entity.$tracker.loadNavigationProperty(this.propertyName,n,t,i,r,u)},i}(),event:function(){var i=function(n,t){this.name=n;this.subscribers=[];this.publisher=t},n=i.prototype;return n.toString=function(){return this.name},n.subscribe=function(n){t.findInArray(this.subscribers,n)||this.subscribers.push(n)},n.unsubscribe=function(n){t.removeFromArray(this.subscribers,n)},n.notify=function(){var n=arguments;t.forEach(this.subscribers,function(t){t.apply(t,n)})},i}(),dataTypes:function(){function u(n,i){throw t.createError(r.assignError,[n.name,i],{dataType:n,value:i});}var e=function(){var r=function(n){i.dataTypeBase.call(this,"dateBase");this.name=n},n;return t.inherit(r,i.dataTypeBase),n=r.prototype,n.defaultValue=function(){return new Date(-6847812e6)},n.isValid=function(n){return Object.prototype.toString.call(n)==="[object Date]"},n.handle=function(n){if(!this.isValid(n)){var t=n;n=this.tryParse(t);n||u(this,t)}return n},n.autoValue=function(){return new Date},n.getRawValue=function(n){return n==null?null:s.getDateConverter().toISOString(n)},n.tryParse=function(n){return s.getDateConverter().parse(n)},n.toODataValue=function(n){return n=this.handle(n),"datetime'"+s.getDateConverter().toISOString(n)+"'"},n.toBeetleValue=function(n){return n=this.handle(n),'"'+s.getDateConverter().toISOString(n)+'"'},r}(),n={};return n.object=function(){var n=function(){i.dataTypeBase.call(this,"object");t.tryFreeze(this)};return t.inherit(n,i.dataTypeBase),new n}(),n.array=function(){var u=function(){i.dataTypeBase.call(this,"array");t.tryFreeze(this)},n;return t.inherit(u,i.dataTypeBase),n=u.prototype,n.isValid=function(n){return n instanceof Array},n.defaultValue=function(){return[]},n.handle=function(n){return this.isValid(n)||(n=n.split(",")),n},n.autoValue=function(){throw t.createError(r.notImplemented,[this.name,"defaultValue"]);},n.toODataValue=function(n){return n},n.toBeetleValue=function(n){return n},new u}(),n.function=function(){var n=function(){i.dataTypeBase.call(this,"function");t.tryFreeze(this)};return t.inherit(n,i.dataTypeBase),new n}(),n.string=function(){var u=0,r=function(){i.dataTypeBase.call(this,"string");t.tryFreeze(this)},n;return t.inherit(r,i.dataTypeBase),n=r.prototype,n.defaultValue=function(){return""},n.handle=function(n){return this.isValid(n)||(n=n.toString()),n},n.autoValue=function(){return"key_"+--u},n.toODataValue=function(n){return"'"+n.replace(/'/g,"''")+"'"},n.toBeetleValue=function(n){return'"'+n.replace(/"/g,'""')+'"'},new r}(),n.guid=function(){var r=function(){i.dataTypeBase.call(this,"guid");t.tryFreeze(this)},n;return t.inherit(r,i.dataTypeBase),n=r.prototype,n.defaultValue=function(){return"00000000-0000-0000-0000-000000000000"},n.isValid=function(n){return typeof n=="string"&&n.match(/^\{?[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}\}?$/i)},n.handle=function(n){return this.isValid(n)||u(this,n),n},n.autoValue=function(){return t.createGuid()},n.toODataValue=function(n){return"guid'"+n+"'"},n.toBeetleValue=function(n){return'"'+n+'"'},new r}(),n.date=function(){var n=function(){e.call(this,"date");t.tryFreeze(this)};return t.inherit(n,e),new n}(),n.dateTimeOffset=function(){var n=function(){e.call(this,"dateTimeOffset");t.tryFreeze(this)},i;return t.inherit(n,e),i=n.prototype,i.toODataValue=function(n){return n=this.handle(n),"datetimeoffset'"+s.getDateConverter().toISOString(n)+"'"},new n}(),n.time=function(){var r=function(){i.dataTypeBase.call(this,"time");t.tryFreeze(this)},n;return t.inherit(r,i.dataTypeBase),n=r.prototype,n.defaultValue=function(){return"00:00:00"},n.isValid=function(n){return/^([01]?\d|2[0-3])(((:[0-5]?\d){2}(\.\d{1,3}){0,1})|(:[0-5]?\d){0,2})?$/.test(n)},n.handle=function(n){return this.isValid(n)||u(this,n),n},n.autoValue=function(){return"00:00:00"},n.toODataValue=function(n){return"time'"+n+"'"},n.toBeetleValue=function(n){return'"'+n+'"'},new r}(),n.boolean=function(){var r=function(){i.dataTypeBase.call(this,"boolean");t.tryFreeze(this)},f;return t.inherit(r,i.dataTypeBase),f=r.prototype,f.defaultValue=function(){return!1},f.handle=function(t){if(!this.isValid(t)){if(n.String.isValid(t)){var i=t.toLowerCase();if(i=="true"||i=="1")return!0;if(i=="false"||i=="0")return!1}throw u(this,t);}return t},new r}(),n.int=function(){var f=0,r=function(){i.dataTypeBase.call(this,"int");t.tryFreeze(this)},n;return t.inherit(r,i.dataTypeBase),n=r.prototype,n.defaultValue=function(){return 0},n.isValid=function(n){return typeof n=="number"&&n%1==0},n.handle=function(n){return typeof n!="number"&&(n=Number(n)),this.isValid(n)||u(this,n),n},n.autoValue=function(){return--f},new r}(),n.number=function(){var f=0,r=function(){i.dataTypeBase.call(this,"number");t.tryFreeze(this)},n;return t.inherit(r,i.dataTypeBase),n=r.prototype,n.defaultValue=function(){return 0},n.isValid=function(n){return!isNaN(n)&&typeof n=="number"},n.handle=function(n){return typeof n!="number"&&(n=Number(n)),this.isValid(n)||u(this,n),n},n.autoValue=function(){return--f},new r}(),n.byte=function(){var f=0,r=function(){i.dataTypeBase.call(this,"byte");t.tryFreeze(this)},n;return t.inherit(r,i.dataTypeBase),n=r.prototype,n.defaultValue=function(){return 0},n.isValid=function(n){return typeof n=="number"&&n%1==0&&n>=0&&n<256},n.handle=function(n){return typeof n!="number"&&(n=Number(n)),this.isValid(n)||u(this,n),n},n.autoValue=function(){return--f},new r}(),n.binary=function(){var r=function(){i.dataTypeBase.call(this,"binary");t.tryFreeze(this)},n;return t.inherit(r,i.dataTypeBase),n=r.prototype,n.defaultValue=function(){return'"AAAAAAAAAAA="'},n.isValid=function(){return!0},n.handle=function(n){return n},n.toODataValue=function(n){return n=this.handle(n),"X'"+s.getDateConverter().toISOString(n)+"'"},n.toBeetleValue=function(n){return'"'+n+'"'},new r}(),n.enum=function(){function e(n,i){var e,r,u,o;if(f.isArray(n))return e=0,t.forEach(n,function(n){e|=n.value}),e;if(f.isTypeOf(n,"string")){if(r=n.split(", "),r.length==1)return i[n];for(u=0;u0?this.name+" ("+n.join(", ")+")":this.name},u.validate=function(n,t){return this.func(n,t)==!0?null:this.message},n.byCode=function(i,u,f,e,o,h){var c=s.getLocalizeFunction();c&&(f=e&&c(e)||f,o=h&&c(h)||o);u=u||[];u.push(f);u.push(o);switch(i){case"re":return n.required.apply(null,u);case"sl":return n.stringLength.apply(null,u);case"ma":return n.maxLength.apply(null,u);case"mi":return n.minLength.apply(null,u);case"ra":return n.range.apply(null,u);case"rx":return n.regularExpression.apply(null,u);case"ea":return n.emailAddress.apply(null,u);case"cc":return n.creditCard.apply(null,u);case"ur":return n.url.apply(null,u);case"ph":return n.phone.apply(null,u);case"po":return n.postalCode.apply(null,u);case"ti":return n.time.apply(null,u);case"co":return n.compare.apply(null,u);default:throw t.createError(r.unknownValidator,[i]);}},n.required=function(i,u,e){var o=function(n){return n==null?!1:f.isTypeOf(n,"string")&&!i&&n==""?!1:!0};return u=t.formatString(u||r.requiredError,e),new n("Required",o,u,{allowEmptyStrings:i})},n.stringLength=function(i,u,e,o){var s=function(n){return!i&&!u?!0:f.isNotEmptyString(n)?i&&n.lengthu?!1:!0:!1};return e=t.formatString(e||r.stringLengthError,o,i,u),new n("StringLength",s,e,{min:i,max:u})},n.maxLength=function(i,u,f){var e=function(n){return n==null?!0:i&&n.length>i?!1:!0};return u=t.formatString(u||r.maxLenError,f,i),new n("MaxLength",e,u,{length:i})},n.minLength=function(i,u,f){var e=function(n){return n==null?!1:i&&n.lengthu?!1:!0};return f=t.formatString(f||r.rangeError,e,i,u),new n("Range",o,f,{min:i,max:u})},n.regularExpression=function(n,t,r){return f.isTypeOf(n,"string")&&(n=new RegExp(n)),i("RegularExpression",n,t,r)},n.emailAddress=function(n,t){return i("EmailAddress",/^\w+@[a-zA-Z_]+?\.[a-zA-Z]{2,3}$/,n,t)},n.creditCard=function(n,t){return i("CreditCard",/^((4\d{3})|(5[1-5]\d{2})|(6011)|(3[68]\d{2})|(30[012345]\d))[ -]?(\d{4})[ -]?(\d{4})[ -]?(\d{4}|3[4,7]\d{13})$/,n,t)},n.url=function(n,t){return i("Url",/(http|ftp|https):\/\/[\w-]+(\.[\w-]+)+([\w.,@?^=%&:\/~+#-]*[\w@?^=%&\/~+#-])?/,n,t)},n.phone=function(n,t){return i("Phone",/^(?!.*-.*-.*-)(?=(?:\d{8,10}$)|(?:(?=.{9,11}$)[^-]*-[^-]*$)|(?:(?=.{10,12}$)[^-]*-[^-]*-[^-]*$) )[\d-]+$/,n,t)},n.postalCode=function(n,t){return i("PostalCode",/^\d{5}([\-]?\d{4})?$/,n,t)},n.time=function(n,t){return i("Time",/^([01]?\d|2[0-3])(((:[0-5]?\d){2}(\.\d{1,3}){0,1})|(:[0-5]?\d){0,2})?$/,n,t)},n.compare=function(i,u,f){var o=function(n,r){var u=t.getValue(r,i);return n==u},e=s.getLocalizeFunction(),h=e&&e(i)||i;return u=t.formatString(u||r.compareError,f,h),new n("Compare",o,u,{property:i})},n}(),entityContainer:function(){function r(n,t){var i=new u(n);return t.push(i),i}var u=function(){function u(n,t){var i=r(n,t);return i>-1?t[i]:null}function r(n,t){var f=t.length,r,u,i;if(f>0)for(r=0,u=f-1;r<=u;){if(i=Math.floor((r+u)/2),t[i].keyn){u=i-1;continue}return i}return-1}function f(n,t){for(var i=0;it[i].key;)i++;return i}var i=function(n){this.typeName=n.name;this.keyIndex=[];t.tryFreeze(this)},n=i.prototype;return n.toString=function(){return this.typeName+": "+this.keyIndex.length},n.push=function(n,t){var i=f(n,this.keyIndex);this.keyIndex.splice(i,0,{key:n,entity:t})},n.remove=function(n){var t=r(n,this.keyIndex);this.keyIndex.splice(t,1)},n.getEntity=function(n){var t=u(n,this.keyIndex);return t?t.entity:null},n.getRelations=function(n,t){var f=t.inverse,r,i,u;if(!f)return null;for(r=[],i=0;i0)&&n.$tracker.isChanged()})},n.count=function(){return this.allEntities.length},n.findEntitySet=function(n){return t.findInArray(this.entitySets,n.name,"typeName")},i}(),entityTracker:function(){function y(n,t,i,r){r.entity=n;n.$tracker=r;r.entityType=t;r.entityState=u.entityStates.Detached;r.observableProvider=i;r.forceUpdate=!1;r.originalValues=[];r.changedValues=[];r.manager=null;r.owners=[];r.validationErrors=[];r.validationErrorsChanged=new e.event("validationErrorsChanged",r);r.entityStateChanged=new e.event("entityStateChanged",r);r.propertyChanged=new e.event("propertyChanged",r);r.arrayChanged=new e.event("arrayChanged",r);t.hasMetadata&&(r.key=l(r))}function p(n,t,i){var r={propertyChange:w,arrayChange:b,dataPropertyChange:k,scalarNavigationPropertyChange:d,pluralNavigationPropertyChange:g,arraySet:nt};return i.observableProvider.toObservable(n,t,r)}function c(n,t){n.baseType&&c(n.baseType,t);n.initializer&&n.initializer.call(t,t)}function l(n,t,i){var e=n.entityType,o,r,u,f;if(e.keys.length==0)return null;for(o=[],r=0;r=0;p--)k=y[p],k.entity==n&&k.property==u&&y.splice(p,1);y.length==0&&a.$tracker.manager&&a.$tracker.manager.detachEntity(a);h.$tracker.owners.push({entity:n,property:u})}c.manager&&(d=s.autoFixScalar,t.forEach(u.relatedNavigationProperties,function(n){var t,i,r;if(n.isScalar===!0)if(t=c.foreignKey(n),t){if(i=c.getValue(n.name),i&&i.$tracker.key===t)return;r=null;c.manager&&d&&(r=c.manager.getEntityByKey(t,n.entityType));r?c.setValue(n.name,r):i&&c.setValue(n.name,new e.valueNotifyWrapper(null))}else c.setValue(n.name,null)}))}}function d(n,u,h,c){var y=n.$tracker,d=!1,l,w,p,b,a,k;if(f.isInstanceOf(c,e.valueNotifyWrapper)&&(d=!0,c=c.value),l=h(),l!=c)if(u.checkAssign(c),h(c),s.liveValidate===!0&&o(u.validate(n),y,u),y.propertyChanged.notify({entity:n,property:u,oldValue:l,newValue:c}),v(c,y.manager),u.isComplex){if(c==null)throw t.createError(r.complexCannotBeNull,[u.displayName],{entity:n,property:u});for(w=l.$tracker.owners,p=w.length-1;p>=0;p--)b=w[p],b.entity==n&&b.property==u&&w.splice(p,1);l.$tracker.owners.length==0&&l.$tracker.manager&&l.$tracker.manager.detachEntity(l);c.$tracker.owners.push({entity:n,property:u});i(n,u.name,c.$tracker.toRaw(),y)}else d||(u.triggerOwnerModify&&u.foreignKeys.length==0&&i(n,null,null,y),t.setForeignKeys(n,u,c)),a=u.inverse,a&&(a.isScalar?(l&&l.$tracker.setValue(a.name,null),c&&c.$tracker.setValue(a.name,n)):(l&&l.$tracker.getValue(a.name).remove(n),c&&(k=c.$tracker.getValue(a.name),t.findInArray(k,n)||k.push(n))))}function g(n,r,u,f,e){var c=n.$tracker,h;s.liveValidate===!0&&o(r.validate(n),c,r);r.triggerOwnerModify&&i(n,null,null,c);c.arrayChanged.notify({entity:n,property:r,items:u,removedItems:f,addedItems:e});h=r.inverse;h&&(f&&t.forEach(f,function(t){t.$tracker.getValue(h.name)==n&&t.$tracker.setValue(h.name,null)}),e&&t.forEach(e,function(t){v(t,c.manager);t.$tracker.setValue(h.name,n)}))}function nt(n,i,f,e){var l=s.getArraySetBehaviour(),h,o,c;if(l==u.arraySetBehaviour.NotAllowed)throw t.createError(r.settingArrayNotAllowed,{entity:n,property:e});if(h=[],o=t.filterArray(f,function(){return!0}),l==u.arraySetBehaviour.Replace&&t.forEach(i,function(n){t.findInArray(o,n)?t.removeFromArray(o,n):h.push(n)}),l==u.arraySetBehaviour.Append&&t.forEach(f,function(n){t.findInArray(i,n)&&t.removeFromArray(o,n)}),h.length>0)for(c=h.length-1;c>=0;c--)i.splice(t.indexOf(i,h[c]),1);o.length>0&&i.push.apply(i,o)}function tt(n){var i=n.$tracker;t.forEach(i.entityType.navigationProperties,function(r){var f,e,u;r.inverse&&(f=r.inverse,r.isScalar?(e=i.getValue(r.name),e&&t.setForeignKeys(e,f,n)):(u=i.getValue(r.name),u&&u.length>0&&t.forEach(u,function(i){t.setForeignKeys(i,f,n)})))})}function v(n,i){if(n&&i&&!n.$tracker.entityType.isComplexType&&!i.isInManager(n)){if(n.$tracker.manager)throw t.createError(r.entityAlreadyBeingTracked,null,{entity:n,manager:i});i.addEntity(n)}}function i(n,r,f,e){var o=e.entityState;o==u.entityStates.Unchanged&&(t.forEach(e.entityType.navigationProperties,function(n){var u=n.inverse,r;u&&u.triggerOwnerModify&&(r=e.getValue(n.name),r&&(n.isScalar?i(r,null,null,r.$tracker):t.forEach(r,function(n){i(n,null,null,n.$tracker)})))}),e.toModified());it(r,f,e.originalValues,e.changedValues)}function it(n,i,r,u){var f,e;n!=null&&(i==null||i.$tracker==null||i.$tracker.entityType.isComplexType)&&(f=t.findInArray(r,n,"p"),f||r.push({p:n,v:i}),e=t.findInArray(u,n,"p"),e||u.push({p:n,v:i}))}function o(n,i,r){var u=[],f=r?t.filterArray(i.validationErrors,function(n){return n.property===r}):t.filterArray(i.validationErrors,function(){return!0});t.forEach(f,function(r){t.findInArray(n,r.validator,"validator")?t.removeFromArray(n,r.validator,"validator"):(t.removeFromArray(i.validationErrors,r),u.push(r))});i.validationErrors=i.validationErrors.concat(n);(u.length>0||n.length>0)&&i.validationErrorsChanged.notify({errors:i.validationErrors,added:n,removed:u})}var h=function(n,t,i){delete n.$type;delete n.$id;y(n,t,i||s.getObservableProvider(),this);p(n,t,this);c(t,n)},n=h.prototype;return n.toString=function(){return"EntityTracker: "+this.entityType.shortName+", key: "+this.key},n.setManagerInfo=function(n){if(this.manager)throw t.createError(r.entityAlreadyBeingTracked,{otherManager:this.manager});t.assertPrm(n,"manager").isInstanceOf(e.entityManager).check();this.manager=n},n.isChanged=function(){return this.entityState===u.entityStates.Added||this.entityState===u.entityStates.Deleted||this.entityState===u.entityStates.Modified},n.toAdded=function(){if(this.entityState!=u.entityStates.Added){var n={entity:this.entity,oldState:this.entityState,newState:u.entityStates.Added,newChanged:!this.isChanged()};this.entityState=u.entityStates.Added;this.entityStateChanged.notify(n)}},n.toModified=function(){if(this.entityState!=u.entityStates.Modified){var n={entity:this.entity,oldState:this.entityState,newState:u.entityStates.Modified,newChanged:!this.isChanged()};this.entityState=u.entityStates.Modified;this.entityStateChanged.notify(n)}},n.toDeleted=function(){if(this.entityState!=u.entityStates.Deleted){var n={entity:this.entity,oldState:this.entityState,newState:u.entityStates.Deleted,newChanged:!this.isChanged()};this.entityState=u.entityStates.Deleted;this.entityStateChanged.notify(n)}},n.toUnchanged=function(){if(this.entityState!=u.entityStates.Unchanged){var n={entity:this.entity,oldState:this.entityState,newState:u.entityStates.Unchanged,newUnchanged:this.isChanged()};this.originalValues.length=0;this.changedValues.length=0;this.entityState=u.entityStates.Unchanged;this.entityStateChanged.notify(n)}},n.toDetached=function(){if(this.entityState!=u.entityStates.Detached){var n={entity:this.entity,oldState:this.entityState,newState:u.entityStates.Detached,newUnchanged:this.isChanged()};this.entityState=u.entityStates.Detached;this.entityStateChanged.notify(n)}},n.undoChanges=function(){var n=this;t.forEach(this.changedValues,function(t){n.setValue(t.p,t.v)});this.changedValues.length=0},n.acceptChanges=function(){this.changedValues.length=0},n.getValue=function(n){return this.observableProvider.getValue(this.entity,n)},n.setValue=function(n,t){this.observableProvider.setValue(this.entity,n,t)},n.foreignKey=function(n){var r=n.entityType,u,t,e,f,o,i;if(r.keys.length==0)return null;for(u=[],t=0;t2)throw t.createError(r.managerInvalidArgs,{entityManager:u});var o=n[0],s=n[1];if(f.isInstanceOf(o,i.dataServiceBase))u.dataService=o;else if(f.isTypeOf(o,"string"))u.dataService=s?new v.webApiService(o,s):new v.webApiService(o,!1);else throw t.createError(r.managerInvalidArgs,{entityManager:this});u.pendingChangeCount=0;u.entities=new e.entityContainer;u.validationErrors=[];u.entityStateChanged=new e.event("entityStateChanged",u);u.validationErrorsChanged=new e.event("validationErrorsChanged",u);u.hasChangesChanged=new e.event("hasChangesChanged",u);u.queryExecuting=new e.event("queryExecuting",u);u.queryExecuted=new e.event("queryExecuted",u);u.saving=new e.event("saving",u);u.saved=new e.event("saved",u)}function o(n,i,e,o,h,c,l){e||(e=u.mergeStrategy.Preserve);o&&o!==u.entityStates.Detached||(o=u.entityStates.Added);c==null&&(c=s.autoFixScalar);l==null&&(l=s.autoFixPlural);i=i||h.flatEntities(f.isArray(n)?n:[n]);var y=[],p=[],v=[],w=h.entities.count(),a=h;t.forEach(i,function(n){var f=n.$tracker;if(!f&&n.$type)f=a.toEntity(n,n.$type).$tracker;else if(f.entityType.isComplexType||h.isInManager(n))return;var o=f.entityType,s=f.key,i=null;if(w>0&&s&&(i=a.entities.getEntityByKey(s,o.floorType)),i){if(o.name!==i.$tracker.entityType.name)throw t.createError(r.sameKeyOnDifferentTypesError,[i.$tracker.entityType.shortName,o.shortName],{existingEntity:i,entity:n,manager:a});if(e===u.mergeStrategy.ThrowError)throw t.createError(r.sameKeyExists,{existingEntity:i,entity:n,manager:a});else e===u.mergeStrategy.Preserve?v.push({o:n,n:i}):(v.push({o:n,n:i}),p.push({o:i,n:n}))}else a.entities.push(n),n.$tracker.setManagerInfo(a),y.push(n)});t.forEach(y,function(n){d(n,c,l,a);lt(n,a);k(n,o);s.validateOnMerge===!0&&n.$tracker.validate()});t.forEach(p,function(n){ot(n.o,n.n);k(n.o,o)});t.forEach(v,function(i){var r=t.indexOf(n,i.o);r>=0&&(n[r]=i.n);st(i.o,i.n,c,l,a)})}function b(n,i){if(!i.isInManager(n))throw t.createError(r.entityNotBeingTracked,{entity:n,manager:i});}function k(n,i){if(i===u.entityStates.Unchanged)n.$tracker.toUnchanged();else if(i===u.entityStates.Modified)n.$tracker.toModified();else if(i===u.entityStates.Added)n.$tracker.toAdded();else throw t.createError(r.mergeStateError,[i],{entity:n,state:i});}function ot(n,i){var r=i.$tracker;t.forEach(r.entityType.dataProperties,function(t){n.$tracker.setValue(t.name,r.getValue(t.name))})}function d(n,i,r,u){if(i==!0||r==!0){var e=n.$tracker,o=e.entityType;t.forEach(o.navigationProperties,function(t){var f=e.getValue(t.name),o,h,s,c,l;if(t.isComplex){for(o=f.$tracker.owners,h=!1,s=0;s=0;u--)r=t[u],r&&r.$tracker&&r.$tracker.entityType.hasMetadata&&r.$tracker.manager!=i&&(f=i.getEntityByKey(r.$tracker.key,r.$tracker.entityType),f?t.splice(u,1,f):t.splice(u,1))}function st(n,i,r,u,f){var c=n.$tracker.entityType,h,s,e,o;t.forEach(c.navigationProperties,function(c){var y,p,l,a,v;c.isComplex||(h=n.$tracker,s=i.$tracker,e=h.getValue(c.name),o=s.getValue(c.name),c.isScalar?o||(r==!0?tt(i,c,null,f):r===!0&&c.inverse&&c.inverse.isScalar||u===!0&&c.inverse&&!c.inverse.isScalar||(y=h.foreignKey(c),p=s.foreignKey(c),y==p&&e!=null&&f.isInManager(e)&&(l=c.inverse,l?l.isScalar?e.$tracker.setValue(l.name,i):(a=e.$tracker.getValue(l.name),v=t.indexOf(a,n),v>=0&&a.splice(v,1,i)):s.setValue(c.name,e)))):u?it(i,c,o,f):r===!0&&c.inverse||t.forEach(e,function(n){f.isInManager(n)&&!t.findInArray(o,n)&&o.push(n)}))})}function tt(n,t,i,r){var f=n.$tracker,u=f.foreignKey(t);i?u!=i.$tracker.key&&setForeignKeys(n,t,i):u&&f.setValue(t.name,r.entities.getEntityByKey(u,t.entityType))}function it(n,i,r,u){var f=u.entities.getRelations(n,i);f&&t.forEach(f,function(n){t.findInArray(r,n)||r.push(n)})}function rt(n,i){var r=n.$tracker,u=r.entityType,f=i?new e.valueNotifyWrapper(null):null;u.hasMetadata&&t.forEach(u.navigationProperties,function(n){n.isScalar?r.setValue(n.name,f):r.getValue(n.name).splice(0)})}function ht(n,i,r){t.forEach(n,function(n){n.$tracker.entityState==u.entityStates.Deleted?(n.$tracker.toDetached(),ut(n,r),i.remove(n)):n.$tracker.toUnchanged()})}function ct(n,i,r){if(i.removed.length>0)for(var u=i.removed.length-1;u>=0;u--)r.validationErrors.splice(t.indexOf(r.validationErrors,i.removed[u]),1);i.added.length>0&&r.validationErrors.push.apply(r.validationErrors,i.added);(i.removed.length>0||i.added.length>0)&&r.validationErrorsChanged.notify({errors:r.validationErrors,added:i.added,removed:i.removed})}function lt(n,t){n.$tracker.entityStateChanged.subscribe(function(n){var i=t.pendingChangeCount;n.newChanged===!0?t.pendingChangeCount++:n.newUnchanged===!0&&t.pendingChangeCount--;t.entityStateChanged.notify(n);i==0&&t.pendingChangeCount>0?t.hasChangesChanged.notify({hasChanges:!0}):i>0&&t.pendingChangeCount==0&&t.hasChangesChanged.notify({hasChanges:!1})});n.$tracker.validationErrorsChanged.subscribe(function(i){ct(n,i,t)})}function ut(n,i){n.$tracker.entityStateChanged.unsubscribe(i.entityStateChanged.notify);n.$tracker.validationErrorsChanged.unsubscribe(i.validationErrorsChanged.notify);var r=t.filterArray(i.validationErrors,function(t){return t.entity==n});t.removeFromArray(i.validationErrors,n,"entity");i.validationErrorsChanged.notify({errors:i.validationErrors,removed:r,added:[]})}function at(n,t,i){var r={manager:n,query:t,options:i};return n.queryExecuting.notify(r),a.queryExecuting.notify(r),r}function ft(n,t,i,r){var u={manager:n,query:t,options:i,result:r};return n.queryExecuted.notify(u),a.queryExecuted.notify(u),u.result}function vt(n,t,i){var r={manager:n,changes:t,options:i};return n.saving.notify(r),a.saving.notify(r),r.options}function yt(n,t,i){var r={manager:n,changes:t,options:i};n.saved.notify(r);a.saved.notify(r)}function l(n,t,i,r){n&&n(r);t&&t.resolve(i,r)}function h(n,t,i,r,u){if(n&&n(r),t&&t.reject(i,r),r.manager=u,!n&&!t)throw new r;}var y=function(){et(arguments,this)},n=y.prototype;return n.toString=function(){return this.dataService.toString()+", "+r.pendingChanges+": "+this.pendingChangeCount+", "+r.validationErrors+": "+this.validationErrors.length},n.getEntityType=function(n){return this.dataService.getEntityType(n)},n.createQuery=function(n,t){return this.dataService.createQuery(n,t,this)},n.createEntityQuery=function(n,t){return this.dataService.createEntityQuery(n,t,this)},n.registerCtor=function(n,t,i){this.dataService.registerCtor(n,t,i)},n.createEntity=function(n,t){var i=this.dataService.createEntity(n,t),r=[i];return o(r,null,u.mergeStrategy.ThrowError,u.entityStates.Added,this),i},n.createDetachedEntity=function(n,t){return this.dataService.createEntity(n,t)},n.createRawEntity=function(n,t){return this.dataService.createRawEntity(n,t)},n.createEntityAsync=function(n,t,i,r,u){return p(n,t,i,r,u,this)},n.createRawEntityAsync=function(n,t,i,r,u){return i?i.makeObservable=!1:i={makeObservable:!1},p(n,t,i,r,u,this)},n.executeQuery=function(n,i,e,c){var k,a,p,d,g,b;n.options&&(i=t.combine(n.options,i));k=at(this,n,i);n=k.query;i=k.options;a=i&&i.async==!1?null:s.getPromiseProvider();p=null;a&&(p=a.deferred());var y=u.mergeStrategy.Preserve,v=u.executionStrategy.Server,w=null,nt,tt;if(f.isEnum(i,u.mergeStrategy)?(y=i,i={makeObservable:y!=u.mergeStrategy.NoTrackingRaw}):f.isEnum(i,u.executionStrategy)?v=i:i&&(i.merge&&(y=i.merge),i.execution&&(v=i.execution),i.autoFixScalar!=null&&(nt=i.autoFixScalar),i.autoFixPlural!=null&&(tt=i.autoFixPlural),i.makeObservable=y!=u.mergeStrategy.NoTrackingRaw),d=y==u.mergeStrategy.NoTracking||y==u.mergeStrategy.NoTrackingRaw,d&&v==u.executionStrategy.Both)throw t.createError(r.executionBothNotAllowedForNoTracking,{executionStrategy:v,mergeStrategy:y});return((v==u.executionStrategy.Local||v==u.executionStrategy.LocalIfEmptyServer)&&(w=this.executeQueryLocally(n)),g=null,v==u.executionStrategy.Local||v==u.executionStrategy.LocalIfEmptyServer&&w&&(w.length==null||w.length>0)?(w=ft(this,n,i,w),l(e,a,p,w)):(b=this,this.dataService.executeQuery(n,i,function(t,r,s,w){try{var k=!1;t&&(d||(f.isArray(t)||(t=[t],k=!0),o(t,r,y,u.entityStates.Unchanged,b,nt,tt),k&&(t=t[0])));v==u.executionStrategy.Both&&(t=b.executeQueryLocally(n),s!=null&&t.$inlineCountDiff!=null&&(s+=t.$inlineCountDiff));t&&(n.inlineCountEnabled&&s!=null&&(t.$inlineCount=s),w&&(t.$extra=w));t=ft(b,n,i,t);l(e,a,p,t);a||(g=t)}catch(it){h(c,a,p,it,b)}},function(t){t.query=n;h(c,a,p,t,b)})),a)?a.getPromise(p):g},n.executeQueryLocally=function(n,i){var c=n.entityType,l,e,h,a;if(c)if(e=this.entities.findEntitySet(c),e)l=e.getEntities();else return[];else throw t.createError(r.typeRequiredForLocalQueries);var f=[],o=[],s=!1;return t.forEach(l,function(n){n.$tracker.entityState==u.entityStates.Added?(s=!0,f.push(n)):n.$tracker.entityState==u.entityStates.Deleted?(s=!0,o.push(n)):(f.push(n),o.push(n))}),h=n.toFunction(),f=h(f,i),f.$inlineCount&&s&&(a=h(o,i),f.$inlineCountDiff=f.$inlineCount-a.$inlineCount),f},n.getEntityByKey=function(n,t){var i=f.isInstanceOf(t,c.entityType)?t:this.getEntityType(t,!0);return this.entities.getEntityByKey(n,i)},n.deleteEntity=function(n){var i,f,e;for(b(n,this),i=this,f=[],t.forEach(n.$tracker.entityType.navigationProperties,function(u){var e,o;if(u.cascadeDelete){if(u.inverse&&u.inverse.cascadeDelete)throw t.createError(r.twoEndCascadeDeleteNotAllowed,{entity:n,property:u});e=n.$tracker.getValue(u.name);e&&(u.isScalar?u.foreignKeys!=null&&u.foreignKeys.length>0?f.push(e):i.deleteEntity(e):(o=t.filterArray(e,function(){return!0}),t.forEach(o,function(n){i.deleteEntity(n)})))}}),n.$tracker.entityState===u.entityStates.Added?this.detachEntity(n):(rt(n,!0),n.$tracker.toDeleted()),e=0;e0)throw t.createError(r.cannotDetachComplexTypeWithOwners);b(n,this);rt(n,!0);ut(n,this);n.$tracker.toDetached();n.$tracker.manager=null;this.entities.remove(n)},n.createSavePackage=function(n,t){var f=t&&t.userData||null,i=t&&t.forceUpdate,r,u;return i==null&&(i=s.forceUpdate),r={userData:f,forceUpdate:i},u=this.exportEntities(n||this.getChanges(),t),r.entities=u,r},n.rejectChanges=function(n,i){var e=this,r;f.isArray(n)||(n=[n]);r=i===!0?this.flatEntities(n):n;t.forEach(r,function(n){var t=n.$tracker;t.entityState==u.entityStates.Added?e.detachEntity(n):t.entityState==u.entityStates.Modified&&(t.undoChanges(),t.toUnchanged())})},n.undoChanges=function(n,i){f.isArray(n)||(n=[n]);var r=i===!0?this.flatEntities(n):n;t.forEach(r,function(n){n.$tracker.undoChanges()})},n.acceptChanges=function(n,i){f.isArray(n)||(n=[n]);var r=i===!0?this.flatEntities(n):n;t.forEach(r,function(n){n.$tracker.acceptChanges()})},n.exportEntities=function(n,i){var e=[],r,f;return n=n||this.entities.getEntities(),r=i&&i.forceUpdate,r==null&&(r=s.forceUpdate),f=i&&i.minimizePackage,f==null&&(f=s.minimizePackage),t.forEach(n,function(n,i){var o=n.$tracker,a=o.entityType,h=o.entityState,c,s,l;if(r===!1&&(r=o.forceUpdate),c={},f===!0)if(h==u.entityStates.Modified)if(o.originalValues.length>0)s={},t.forEach(o.originalValues,function(t){var f,r=t.p.split("."),e,u,i;if(r.length>1){for(e=0;e0},n.getChanges=function(){return this.entities.getChanges()},n.saveChanges=function(n,i,e){var c=n&&n.entities||this.getChanges(),a,v,p,w,y;n=vt(this,c,n);a=n&&n.async==!1?null:s.getPromiseProvider();v=null;a&&(v=a.deferred());var b=n&&n.autoFixScalar,k=n&&n.autoFixPlural,d=null;return(f.isArray(c)||(c=[c]),c&&c.length>0?(p=[],s.validateOnSave===!0&&t.forEach(c,function(n){if(n.$tracker.entityState!=u.entityStates.Deleted){var t=n.$tracker.validate();t&&t.length>0&&p.push({entity:n,validationErrors:t})}}),p.length>0?(w=new t.createError(r.validationFailed,{entities:c,validationErrors:p}),w.entitiesInError=p,h(e,a,v,w,this)):(y=this,this.dataService.saveChanges(this.createSavePackage(c,n),n,function(r){try{r.GeneratedEntities!=null&&r.GeneratedEntities.length>0&&o(r.GeneratedEntities,null,u.mergeStrategy.Preserve,u.entityStates.Unchanged,y,b,k);r.GeneratedValues&&t.forEach(r.GeneratedValues,function(n){var r=c[n.Index],f,t=n.Property.split("."),i,s,e;if(t.length>1){for(i=0;i",function(n,t){return n()>t()},"gt")),i.push(new n("Lesser","<",function(n,t){return n()=",function(n,t){var i=n(),r=t();return i==r||i>r},"ge")),i.push(new n("LesserEqual","<=",function(n,t){var i=n(),r=t();return i==r||i>",function(n,t){return n()>>t()})),n.find=function(n){var r=t.filterArray(i,function(t){return t.code==n||t.oData==n||t.js==n});return r.length>0?r[0]:null},n}(),filterOps:new h.enums({Equals:{oData:"eq",code:"=="},NotEqual:{oData:"ne",code:"!="},Greater:{oData:"gt",code:">"},Lesser:{oData:"lt",code:"<"},GreaterEqual:{oData:"ge",code:">="},LesserEqual:{oData:"le",code:"<="},Contains:{oData:"substringof",code:"contains",isFunc:!0},StartsWith:{oData:"startswith",code:"startswith",isFunc:!0},EndsWith:{oData:"endswith",code:"endswith",isFunc:!0}}),mergeStrategy:new h.enums("Preserve","Overwrite","ThrowError","NoTracking","NoTrackingRaw"),executionStrategy:new h.enums("Server","Local","Both","LocalIfEmptyServer"),generationPattern:new h.enums("Identity","Computed"),arraySetBehaviour:new h.enums("NotAllowed","Replace","Append")}}(),a=function(){return{queryExecuting:new e.event("beetleQueryExecuting",this),queryExecuted:new e.event("beetleQueryExecuted",this),saving:new e.event("beetleSaving",this),saved:new e.event("beetleSaved",this),info:new e.event("beetleInfo",this),warning:new e.event("beetleWarning",this),error:new e.event("beetleError",this)}}(),s=function(){var s,o;s=n.ko?l.koObservableProviderInstance:n.Backbone?l.backboneObservableProviderInstance:l.propertyObservableProviderInstance;n.Q?o=l.qPromiseProviderInstance:n.jQuery&&(o=l.jQueryPromiseProviderInstance);var h=u.arraySetBehaviour.NotAllowed,c=l.defaultDateConverterInstance,a,e={};return e.autoFixScalar=!0,e.autoFixPlural=!1,e.validateOnMerge=!0,e.validateOnSave=!0,e.liveValidate=!0,e.handleUnmappedProperties=!0,e.isCaseSensitive=!1,e.ignoreWhiteSpaces=!1,e.forceUpdate=!1,e.workAsync=!0,e.ajaxTimeout=null,e.minimizePackage=!1,e.getObservableProvider=function(){return s},e.setObservableProvider=function(n){var h,e,o;if(f.isInstanceOf(n,i.observableProviderBase))s=n;else{if(f.isNotEmptyString(n))for(h=u.observableProviders.symbols(),e=0;e p.Name.",functionNotSupportedForOData:"OData does not support %0 function, please use Beetle Query Strings (like: manager.executeQuery(query, {useBeetleQueryStrings: true}))",instanceError:"%0 is not an instance of %1.",invalidArguments:"Invalid arguments.",invalidDefaultValue:"%0 is not a valid default value for %0.",invalidEnumValue:"Invalid enum value, %0 cannot be found in %1.",invalidExpression:"%0 can only have %1 type expressions.",invalidPropertyAlias:"Invalid property alias.",invalidStatement:"Invalid statement.",invalidValue:"Invalid value for %0 property.",managerInvalidArgs:"Invalid arguments. Valid args are: {DataService} or {Uri, [MetadataManager]} or {Uri, [metadataString (string)]} or {Uri, [doNotUseMetadata (bool)]}.",maxLenError:"%0 property length cannot exceed %1.",maxPrecisionError:"Value %0 exceeded maximum precision of %1.",mergeStateError:"Cannot merge entities with %0 state.",minLenError:"%0 property length must be greater than %1.",noMetadataEntityQuery:"Cannot create entity query when no metadata is available.",noMetadataRegisterCtor:"Cannot register constructor when no metadata is available.",noOpenGroup:"Could not find any open group.",notFoundInMetadata:"Could not find %0 in metadata.",notImplemented:"%0 %1 is not implemented.",notNullable:"Cannot set %0 with null, property is not nullable.",oDataNotSupportMultiTyped:"Multi-Typed queries cannot be used for OData services.",onlyManagerCreatedCanBeExecuted:"Only queries which are created from a manager can be directly executed.",onlyManagerCreatedCanAcceptEntityShortName:"Only queries which are created from a manager can accept entity type short name parameter.",pendingChanges:"Pending changes",pluralNeedsInverse:"To load plural relations, navigation property must have inverse.",projectionsMustHaveAlias:"All projected values must have a property name or alias.",propertyNotFound:"Could not find property: %0.",queryClosed:"Query is closed, expression cannot be added. Queries must be executed after some expressions like first, single, any, all etc..",rangeError:"%0 property value must be between %1 and %2.",requiredError:"%0 property is required.",sameKeyExists:"There is already an entity with same key in the manager.",sameKeyOnDifferentTypesError:"Two different types of entities cannot have same keys when they are from same inheritance root (%0, %1).",settingArrayNotAllowed:"Setting array property is not allowed, you may change this via beetle.settings.setArraySetBehaviour(behavior).",stringLengthError:"%0 property length must be between %1 and %2.",twoEndCascadeDeleteNotAllowed:"Two-end cascade deletes are not supported.",typeError:"%0 type is not %1.",typeMismatch:"%0 value type mismatch. expected type: %1, given type: %2, value: %3",typeRequiredForLocalQueries:'To execute queries locally, entity type must be provided (createQuery("Entities", "Entity") or createEntityQuery("Entity")).',unclosedQuote:'Unclosed quote in "%0".',unclosedToken:'Unclosed "%0".',unexpectedProperty:'Unexpected property "%0".',unexpectedToken:"Unexpected %0.",unknownDataType:"Unknown data type: %0.",unknownExpression:"Unknown expression.",unknownFunction:"Unknown function: %0.",unknownParameter:"Unknown parameter: %0.",unknownValidator:"Unknown validator type: %0.",unsoppertedState:"Unsupported entity state: %0.",validationErrors:"Validation errors",validationFailed:"Validation failed.",valueCannotBeNull:"Value cannot be null: %0.",operatorNotSupportedForOData:"Operator is not supported for OData: %0."}),n.beetleI18N}(),y=function(){return{version:"1.0",i18N:r,helper:t,assert:f,libs:h,baseTypes:i,impls:l,metadata:c,querying:o,core:e,services:v,enums:u,events:a,settings:s,MetadataManager:c.metadataManager,entityManager:e.entityManager,EntityManager:e.entityManager,WebApiService:v.webApiService,MvcService:v.mvcService,EntityStates:u.entityStates,FilterOps:u.filterOps,MergeStrategy:u.mergeStrategy}}();return t.tryFreeze(y),n.beetle=y,y})(window); +(function(n){"use strict";var t=function(){return{assertPrm:function(n,t){return new f(n,t)},combine:function(n,i){var r,e,u;if(n==i)return n;if(r={},n!=null)for(e in n)r[e]=n[e];if(i!=null)for(u in i){var s=r[u],o=i[u],h=f.isTypeOf(s,"object")&&f.isTypeOf(o,"object")?t.combine(s,o):o;r[u]=h}return r},objEquals:function(n,i){var u,e,r,o;if(n==i)return!0;if(n==null||i==null)return!1;if(f.isObject(n)&&f.isObject(i)){u=0;e=0;for(r in n){if(!i.hasOwnProperty(r)||!t.objEquals(t.getValue(n,r),t.getValue(i,r)))return!1;u++}for(o in i)e++;return u==e}return!1},equals:function(n,t,i,r){var u,f;return typeof n=="string"&&typeof t=="string"&&(u=r&&r.isCaseSensitive,u==null&&(u=s.isCaseSensitive),f=r&&r.ignoreWhiteSpaces,f==null&&(f=s.ignoreWhiteSpaces),u||(n=n.toLowerCase(),t=t.toLowerCase()),f&&(n=n.trim(),t=t.trim())),i?n===t:n==t},formatString:function(n){var t=arguments,i=RegExp("%([0-"+(arguments.length-1)+"])","g"),r=RegExp("{([0-"+(arguments.length-2)+"])}","g");return n.replace(i,function(n,i){return t[Number(i)+1]||""}).replace(r,function(n,i){return t[Number(i)+1]||""})},tryFreeze:function(n,t){var r,i;if(!n||!Object.freeze)return n;if(Object.freeze(n),t===!0)for(r in n)i=n[r],f.isArray(i)?this.tryFreezeArray(i,t):f.isObject(i)&&this.tryFreeze(i,t);return n},tryFreezeArray:function(n,t){if(n&&Object.freeze)for(var i=0;i=0;u--)n.splice(r[u],1);return r.length},mapArray:function(n,t){for(var r,u=[],i=0;i0&&(u.splice(0,0,n),n=t.formatString.apply(null,u)),o=new Error(n),e)for(s in e)o[s]=e[s];return a.error.notify(o),o},setForeignKeys:function(n,t,i){for(var u,f,e,o,r=0;r")return i.aliases.push(n.left.name),it=t.jsepToODataQuery(n.right,i),i.aliases.pop(),it;if(k=u.langOperators.find(n.operator).oData,!k)throw t.createError(r.operatorNotSupportedForOData,[n.operator],{expression:n});return"("+t.jsepToODataQuery(n.left,i)+" "+k+" "+t.jsepToODataQuery(n.right,i)+")"}if(n.type=="UnaryExpression")return n.operator+t.jsepToODataQuery(n.argument,i);if(n.type=="Identifier"){if(l=n.name,l[0]=="@"){if(a=undefined,v=l.slice(1),i.expVarContext&&i.expVarContext[v]!==undefined?a=i.expVarContext[v]:i.varContext&&(a=i.varContext[v]),a===undefined)throw t.createError(r.unknownParameter,[l],{expression:n,queryContext:i});return e.dataTypes.toODataValue(a)}return l}if(n.type=="Literal")return e.dataTypes.toODataValue(n.value);if(n.type=="MemberExpression")return n.object.name&&n.object.name!=i.currentAlias&&t.findInArray(i.aliases,n.object.name)?n.property.name:t.jsepToODataQuery(n.object,i)+"/"+n.property.name;if(n.type=="Compound"){for(f=[],h=0;h"&&(c=s[0].left.name,s=[s[0].right]),c&&(i.currentAlias=c,i.aliases.push(c)),p=0;p"?(i.aliases.push(n.left.name),tt=t.jsepToBeetleQuery(n.right,i),i.aliases.pop(),tt):(it=u.langOperators.find(n.operator).code,"("+t.jsepToBeetleQuery(n.left,i)+" "+it+" "+t.jsepToBeetleQuery(n.right,i)+")");if(n.type=="UnaryExpression")return n.operator+t.jsepToBeetleQuery(n.argument,i);if(n.type=="Identifier"){if(c=n.name,c[0]=="@"){if(l=undefined,v=c.slice(1),i.expVarContext&&i.expVarContext[v]!==undefined?l=i.expVarContext[v]:i.varContext&&(l=i.varContext[v]),l===undefined)throw t.createError(r.unknownParameter,[c],{expression:n,queryContext:i});return e.dataTypes.toBeetleValue(l)}return c}if(n.type=="Literal")return e.dataTypes.toBeetleValue(n.value);if(n.type=="MemberExpression")return n.object.name&&t.findInArray(i.aliases,n.object.name)?n.property.name:t.jsepToBeetleQuery(n.object,i)+"."+n.property.name;if(n.type=="Compound"){for(f=[],h=0;h"&&(a=s[0].left.name,s=[s[0].right]),a&&(i.currentAlias=a,i.aliases.push(a)),y=0;y")return i.currentAlias&&i.aliases.push(i.currentAlias),i.currentAlias={alias:n.left.name},nt=t.jsepToFunction(n.right,i)(f),i.currentAlias=i.aliases.pop(),nt;var ut=u.langOperators.find(n.operator),tt=i.varContext,ft=function(){return t.jsepToFunction(n.left,i)(f)},et=function(){return t.jsepToFunction(n.right,i)(f)};return ut.asFunc.call(tt,ft,et)}if(n.type=="UnaryExpression")return it=function(){return t.jsepToFunction(n.argument,i)(f)},rt=u.langOperators.find(n.operator),rt.asFunc.call(tt,it);if(n.type=="Identifier"){if(e=n.name,e=="null")return null;if(e=="true")return!0;if(e=="false")return!1;if(e[0]=="@"){if(v=undefined,y=e.slice(1),i.expVarContext&&i.expVarContext[y]!==undefined?v=i.expVarContext[y]:i.varContext&&(v=i.varContext[y]),v===undefined)throw t.createError(r.unknownParameter,[e],{expression:n,queryContext:i});return v}return i.currentAlias&&i.currentAlias.alias==e?f:(w=t.findInArray(i.aliases,e,"alias"),w)?w.value:(b=t.getValue(f,e),b===undefined)?window[e]:b}if(n.type=="Literal")return n.value;if(n.type=="MemberExpression"){if(n.object.name){if(i.currentAlias&&n.object.name==i.currentAlias.alias)return t.getValue(f,n.property.name);if(k=t.findInArray(i.aliases,n.object.name,"alias"),k)return t.getValue(k.value,n.property.name)}return t.getValue(t.jsepToFunction(n.object,i)(f),n.property.name)}if(n.type=="CallExpression"){var s=n.arguments,h=[],p=null;if(s.length==1&&s[0]&&s[0].type=="BinaryExpression"&&s[0].operator=="=>"&&(p=s[0].left.name,s=[s[0].right]),p&&(i.currentAlias&&i.aliases.push(i.currentAlias),i.currentAlias={alias:p}),t.forEach(s,function(n){n!=null&&h.push(t.jsepToFunction(n,i))}),l=n.callee.type=="MemberExpression"?n.callee.property.name:n.callee.name,c=o.queryFuncs.getFunc(l,!1),c)n.callee.type=="MemberExpression"&&h.splice(0,0,t.jsepToFunction(n.callee.object,i)),h.splice(0,0,f),d=c.impl.apply(i,h);else{if(l[0]=="@")if(a=l.slice(1),i.expVarContext&&i.expVarContext[a])c=i.expVarContext[a];else if(i.varContext&&i.varContext[a])c=i.varContext[a];else throw t.createError(r.unknownParameter,[a],{expression:n,queryContext:i});else if(g=n.callee.type=="MemberExpression"?t.jsepToFunction(n.callee.object,i)(f):window,g==null||(c=g[l])==null)throw t.createError(r.unknownFunction,[l]);h=t.mapArray(h,function(){return this(f)});d=c.apply(i,h)}return p&&(i.currentAlias=i.aliases.pop()),d}throw t.createError(r.unknownExpression,{expression:n});}},jsepToProjector:function(n,i){var h=[],u,e,o,s;for(f.isArray(n)||(n=[n]),u=0;uu+2&&n[u+1].name&&n[u+1].name.toLowerCase()=="as"){if(u=u+2,s=n[u],s.type!="Identifier")throw t.createError(r.invalidPropertyAlias,{expressions:n,aliasExpression:s});e=s.name}if(n.length>1&&!e)throw t.createError(r.projectionsMustHaveAlias,{expressions:n,expression:o});h.push({p:e,func:t.jsepToFunction(o,i)})}return function(t){for(var r,u,f={},i=0;i0)throw t.createError(this.errors.join("\n"),{name:this.name,value:this.value});},n.hasValue=function(n,i,u){return n==null?(i&&i.push(t.formatString(r.valueCannotBeNull,u)),!1):!0},n.isObject=function(n,i,u){return e.dataTypes.object.isValid(n)?!0:(i&&i.push(t.formatString(r.typeError,u,"object")),!1)},n.isFunction=function(n,i,u){return e.dataTypes.function.isValid(n)?!0:(i&&i.push(t.formatString(r.typeError,u,"function")),!1)},n.isNotEmptyString=function(i,u,f){return!n.isTypeOf(i,"string",u)||i===""?(u&&u.push(t.formatString(r.cannotBeEmptyString,f)),!1):!0},n.isTypeOf=function(i,u,f,o){if(!n.hasValue(i))return!1;var s=e.dataTypes.byName(u);return s.isValid(i)?!0:(f&&f.push(t.formatString(r.typeMismatch,o,u,s,i)),!1)},n.isArray=function(n,i,u){return e.dataTypes.array.isValid(n)?!0:(i&&i.push(t.formatString(r.typeError,u,"array")),!1)},n.isEnum=function(n,i,u){return i.contains(n)?!0:(u&&u.push(t.formatString(r.invalidEnumValue,i,n)),!1)},n.isInstanceOf=function(n,i,u,f){return n==null?(u&&u.push(r.cannotCheckInstanceOnNull),!1):(n instanceof i)?!0:(u&&u.push(t.formatString(r.instanceError,f,i)),!1)},n}(),h=function(){var i={};return i.enums=function(){function r(n,t){for(var i in t)n[i]=t[i];return n}function n(n,i){this.name=n;i&&r(this,i);t.tryFreeze(this)}n.prototype={};n.prototype.constructor=n;n.prototype.toString=function(){return this.name};t.tryFreeze(n.prototype);var i=function(i){var u=this,r;if(arguments.length===1&&i!==null&&typeof i=="object")for(r in i)u[r]=new n(r,i[r]);else t.forEach(arguments,function(t){u[t]=new n(t)});t.tryFreeze(this)};return i.prototype.symbols=function(){var t=[],i,n;for(i in this)(n=this[i],f.isFunction(n))||t.push(n);return t},i.prototype.contains=function(t){return(t instanceof n)?this[t.name]===t:!1},i}(),i.jsep=function(t){var a="Compound",k="Identifier",v="MemberExpression",h="Literal",d="ThisExpression",g="CallExpression",nt="UnaryExpression",tt="BinaryExpression",it="LogicalExpression",u=!0,f={"-":u,"!":u,"~":u,"+":u},r={"=>":0,"||":1,"&&":2,"|":3,"^":4,"&":5,"==":6,"!=":6,"===":6,"!==":6,"<":7,">":7,"<=":7,">=":7,"<<":8,">>":8,">>>":8,"+":9,"-":9,"*":10,"/":10,"%":10},s=function(n){var t=0,i;for(var r in n)(i=r.length)>t&&n.hasOwnProperty(r)&&(t=i);return t},c=s(f),e=s(r),y={"true":!0,"false":!1,"null":null},rt="this",p=function(n){return r[n]||0},w=function(n,t,i){var r=n==="||"||n==="&&"?it:tt;return{type:r,operator:n,left:t,right:i}},o=function(n){return n>=48&&n<=57},l=function(n){return n===36||n===95||n===64||n>=65&&n<=90||n>=97&&n<=122},ut=function(n){return n===36||n===95||n>=65&&n<=90||n>=97&&n<=122||n>=48&&n<=57},i=function(n){for(var t=0,ct=n.charAt,lt=n.charCodeAt,i=function(t){return ct.call(n,t)},u=function(t){return lt.call(n,t)},b=n.length,s=function(){for(var n=u(t);n===32||n===9;)n=u(++t)},ot=function(){s();for(var i=n.substr(t,e),u=i.length;u>0;){if(r.hasOwnProperty(i))return t+=u,i;i=i.substr(0,--u)}return!1},tt=function(){var r,i,o,n,s,f,e,u;if(f=it(),i=ot(),!i)return f;if(s={value:i,prec:p(i)},e=it(),!e)throw new Error("Expected expression after "+i+" at character "+t);for(n=[f,s,e];i=ot();){if(o=p(i),o===0)break;for(s={value:i,prec:o};n.length>2&&o<=n[n.length-2].prec;)e=n.pop(),i=n.pop().value,f=n.pop(),r=w(i,f,e),n.push(r);if(r=it(),!r)throw new Error("Expected expression after "+i+" at character "+t);n.push(s);n.push(r)}for(u=n.length-1,r=n[u];u>1;)r=w(n[u-1].value,n[u-2],r),u-=2;return r},it=function(){var i,r,e;if(s(),i=u(t),o(i)||i===46)return at();if(i===39||i===34)return vt();if(l(i))return pt();if(i===40)return wt();for(r=n.substr(t,c),e=r.length;e>0;){if(f.hasOwnProperty(r))return t+=e,{type:nt,operator:r,argument:it(),prefix:!0};r=r.substr(0,--e)}return!1},at=function(){for(var n="";o(u(t));)n+=i(t++);if(i(t)===".")for(n+=i(t++);o(u(t));)n+=i(t++);if(i(t)==="e"||i(t)==="E"){for(n+=i(t++),(i(t)==="+"||i(t)==="-")&&(n+=i(t++));o(u(t));)n+=i(t++);if(!o(u(t-1)))throw new Error("Expected exponent ("+n+i(t)+") at character "+t);}if(l(u(t)))throw new Error("Variable names cannot start with a number ("+n+i(t)+") at character "+t);return{type:h,value:parseFloat(n),raw:n}},vt=function(){for(var n="",u=i(t++),f=!1,r;t=0;t--)i=this.expressions[t],f.isInstanceOf(i,n)&&this.expressions.splice(t,1);return this},u}(),observableProviderBase:function(){var i=function(n){this.name=n||"observableProviderBase"},n=i.prototype;return n.toString=function(){return this.name},n.isObservable=function(){throw t.createError(r.notImplemented,[this.name,"isObservable"]);},n.toObservable=function(){throw t.createError(r.notImplemented,[this.name,"toObservable"]);},n.getValue=function(){throw t.createError(r.notImplemented,[this.name,"getValue"]);},n.setValue=function(){throw t.createError(r.notImplemented,[this.name,"setValue"]);},i}(),ajaxProviderBase:function(){var n=function(n){this.name=n||"ajaxProviderBase"},i=n.prototype;return i.toString=function(){return this.name},i.doAjax=function(){throw t.createError(r.notImplemented,[this.name,"doAjax"]);},n}(),serializationServiceBase:function(){var i=function(n){this.name=n||"serializationServiceBase"},n=i.prototype;return n.toString=function(){return this.name},n.serialize=function(){throw t.createError(r.notImplemented,[this.name,"serialize"]);},n.deserialize=function(){throw t.createError(r.notImplemented,[this.name,"deserialize"]);},i}(),promiseProviderBase:function(){var i=function(n){this.name=n||"promiseProviderBase"},n=i.prototype;return n.toString=function(){return this.name},n.deferred=function(){throw t.createError(r.notImplemented,[this.name,"deferred"]);},n.getPromise=function(){throw t.createError(r.notImplemented,[this.name,"getPromise"]);},n.resolve=function(){throw t.createError(r.notImplemented,[this.name,"resolve"]);},n.reject=function(){throw t.createError(r.notImplemented,[this.name,"reject"]);},i}(),dataServiceBase:function(){function a(n,e,o,s){var v,w;n==null?n="":n[n.length-1]!="/"&&(n+="/");s.uri=n;var h=null,a=null,y=null,p=null;if(o&&(h=o.ajaxProvider,a=o.serializationService,y=o.dataType,p=o.dataType),s.ajaxProvider=h&&f.isInstanceOf(h,i.ajaxProviderBase)?h:l.jQueryAjaxProviderInstance,s.serializationService=a&&f.isInstanceOf(a,i.SerializationService)?a:l.jsonSerializationServiceInstance,!(e===!0))if(e){if(f.isInstanceOf(e,c.metadataManager))s.metadataManager=e;else if(f.isObject(e))try{s.metadataManager=new c.metadataManager(e)}catch(b){throw t.createError(r.invalidArguments,{exception:b,args:arguments,dataService:this});}}else v=t.findInArray(u,n,"uri"),v?s.metadataManager=v.data:(w=s.fetchMetadata(),s.metadataManager=new c.metadataManager(w),u.push({uri:n,data:s.metadataManager}));s.dataType=y||"json";s.contentType=p||"application/json; charset=utf-8"}var u=[],h=function(n,t,i){a(n,t,i,this)},n=h.prototype;return n.toString=function(){return this.uri},n.getEntityType=function(n){return this.metadataManager?this.metadataManager.getEntityTypeByShortName(n):null},n.createQuery=function(n,i,r){return(t.assertPrm(n,"resourceName").isNotEmptyString().check(),i)?this.createEntityQuery(i,n,r):(this.metadataManager&&this.metadataManager.createQuery(n,null,r),new o.entityQuery(n,null,r))},n.createEntityQuery=function(n,i,u){if(t.assertPrm(n,"shortName").isNotEmptyString().check(),!this.metadataManager)throw t.createError(r.noMetadataEntityQuery,{dataService:this});return this.metadataManager.createQuery(i,n,u)},n.registerCtor=function(n,i,u){if(this.metadataManager==null)throw t.createError(r.noMetadataEntityQuery);this.metadataManager.registerCtor(n,i,u)},n.createEntity=function(n,i){if(!this.metadataManager)throw t.createError(r.noMetadataEntityQuery,{dataService:this});return this.metadataManager.createEntity(n,i)},n.createRawEntity=function(n,i){if(!this.metadataManager)throw t.createError(r.noMetadataEntityQuery,{dataService:this});return this.metadataManager.createRawEntity(n,i)},n.toEntity=function(n,t){var i=null;return this.metadataManager&&(i=this.metadataManager.getEntityType(t)),i||(i=new c.entityType(t)),e.entityTracker.toEntity(n,i,s.getObservableProvider())},n.toODataQueryParams=function(n,i){if(n.isMultiTyped===!0)throw t.createError(r.oDataNotSupportMultiTyped,{query:n});var u={varContext:i},f=[];return t.forEach(n.parameters,function(n){f.push({name:n.name,value:n.value==null?"":n.value})}),n.inlineCountEnabled===!0&&f.push({name:"$inlinecount",value:"allpages"}),t.forEach(n.expressions,function(n,t){u.expVarContext=n.varContext;var r,i;n.onlyBeetle===!0?(r="!e"+t,i=n.toBeetleQuery(u),i=n.name+":"+i):(r="$"+n.name,i=n.toODataQuery(u));f.push({name:r,value:i});u.expVarContext=undefined}),f},n.toBeetleQueryParams=function(n,i){var u={varContext:i},r=[];return t.forEach(n.parameters,function(n){r.push({name:n.name,value:n.value==null?"":n.value})}),n.inlineCountEnabled===!0&&r.push({name:"!e0",value:"inlinecount:allpages"}),t.forEach(n.expressions,function(n,t){u.expVarContext=n.varContext;r.push({name:"!e"+(t+1),value:n.name+":"+n.toBeetleQuery(u)});u.expVarContext=undefined}),r},n.fetchMetadata=function(){throw t.createError(r.notImplemented,["dataServiceBase","fetchMetadata"]);},n.createEntityAsync=function(){throw t.createError(r.notImplemented,["dataServiceBase","createEntityAsync"]);},n.executeQuery=function(){throw t.createError(r.notImplemented,["dataServiceBase","executeQuery"]);},n.executeQueryParams=function(){throw t.createError(r.notImplemented,["dataServiceBase","executeQueryParams"]);},n.saveChanges=function(){throw t.createError(r.notImplemented,["dataServiceBase","saveChanges"]);},h}()}}(),l=function(){return{defaultDateConverterInstance:function(){var n=function(){i.dateConverterBase.call(this,"Default Date Converter")},r;return t.inherit(n,i.dateConverterBase),r=n.prototype,r.parse=function(n){if(typeof n!="string"||n.length<10||!/^\d{4}[\/\-](0?[1-9]|1[012])[\/\-](0?[1-9]|[12][0-9]|3[01])$/.test(n.substr(0,10)))return null;/.\d{3}$/.test(n)&&(n+="Z");try{var t=Date.parse(n);return isNaN(t)?null:new Date(t)}catch(i){return null}},r.toISOString=function(n){return n.toISOString()},new n}(),koObservableProviderInstance:function(n){var u,r;return n&&(n.extenders.intercept=function(t,i){return n.computed({read:t,write:function(n){var r=i&&i.callback;r&&r(i.object,i.property,t,n)}})}),u=function(){i.observableProviderBase.call(this,"Knockout Observable Provider");t.tryFreeze(this)},t.inherit(u,i.observableProviderBase),r=u.prototype,r.isObservable=function(t,i){return n.isObservable(t[i])},r.toObservable=function(i,r,u){function s(t,r,u){var f=n.observable(r);return u?n.observable(r).extend({intercept:{object:i,property:t,callback:u}}):f}function c(t,r,u,f,o){var s;return u=u||[],f&&(u=new e.trackableArray(u,i,t,function(n,t,u,e,o){s.$fromKo!==!0&&i[r].valueHasMutated();s.$fromKo=!1;f(n,t,u,e,o)})),s=n.observableArray(u),s.subscribe(function(){s.$fromKo=!0},null,"beforeChange"),o&&(s.equalityComparer=function(n,r){o(i,t,n,r)}),s}var l=u&&u.propertyChange,a=u&&u.arrayChange,v=u&&u.dataPropertyChange,y=u&&u.scalarNavigationPropertyChange,p=u&&u.pluralNavigationPropertyChange,h=u&&u.arraySet,o=[];t.forEachProperty(i,function(n,t){o.push({p:n,v:t})});r&&r.hasMetadata&&(t.forEach(r.dataProperties,function(n){var r=i[n.name];r=r===undefined?null:n.handle(r);i[n.name]=s(n,r,v);t.removeFromArray(o,n.name,"p")}),t.forEach(r.navigationProperties,function(n){var r=i[n.name];r===undefined&&(r=null);i[n.name]=n.isScalar?s(n,r,y):c(n,n.name,r,p,h);t.removeFromArray(o,n.name,"p")}));t.forEach(o,function(n){var u=n.p,e=n.v;i[u]=f.isArray(e)?c(u,u,e,a,h):s(u,e,l);t.findInArray(r.properties,u)||r.properties.push(u)})},r.getValue=function(t,i){return n.utils.unwrapObservable(t[i])},r.setValue=function(n,t,i){n[t](i)},new u}(n.ko),propertyObservableProviderInstance:function(){var r=function(){i.observableProviderBase.call(this,"Property Observable Provider");t.tryFreeze(this)},n;return t.inherit(r,i.observableProviderBase),n=r.prototype,n.isObservable=function(n,t){return n.$fields!==undefined&&n.$fields[t]!==undefined},n.toObservable=function(n,i,r){function s(t,i,r){return Object.defineProperty(n,i,{get:function(){return n.$fields[i]},set:function(u){if(r){var f=w(n,i);r(n,t,f,u)}else n.$fields[i]=u},enumerable:!0,configurable:!0})}function c(t,i,r,f,o){return r=r||[],f&&(r=new e.trackableArray(r,n,t,f)),u[i]=r,Object.defineProperty(n,i,{get:function(){return n.$fields[i]},set:function(r){o?o(n,t,items,r):n.$fields[i]=r}})}function w(n,t){return function(){return arguments.length==0?n.$fields[t]:n.$fields[t]=arguments[0]}}var l=r&&r.propertyChange,a=r&&r.arrayChange,v=r&&r.dataPropertyChange,y=r&&r.scalarNavigationPropertyChange,p=r&&r.pluralNavigationPropertyChange,h=r&&r.arraySet,u={},o=[];return t.forEachProperty(n,function(n,t){o.push({p:n,v:t})}),i&&i.hasMetadata&&(t.forEach(i.dataProperties,function(i){var r=n[i.name];r=r===undefined?null:i.handle(r);delete n[i.name];s(i,i.name,v);t.removeFromArray(o,i.name,"p");u[i.name]=r}),t.forEach(i.navigationProperties,function(i){var r=n[i.name];r===undefined&&(r=null);delete n[i.name];i.isScalar?(s(i,i.name,y),u[i.name]=r):c(i,i.name,r,p,h);t.removeFromArray(o,i.name,"p")})),t.forEach(o,function(r){var e=r.p,o=r.v;delete n[e];f.isArray(o)?c(e,e,o,a,h):(s(e,e,l),u[e]=o);t.findInArray(i.properties,e)||i.properties.push(e)}),n.$fields=u,n},n.getValue=function(n,t){return n[t]},n.setValue=function(n,t,i){n[t]=i},new r}(),backboneObservableProviderInstance:function(){var r=function(){i.observableProviderBase.call("Backbone Observable Provider");t.tryFreeze(this)},n;return t.inherit(r,i.observableProviderBase),n=r.prototype,n.isObservable=function(n,t){return n.$fields!==undefined&&n.$fields[t]!==undefined},n.toObservable=function(n,i,r){function s(t,i,r){return Object.defineProperty(n,i,{get:function(){return n.$fields[i]},set:function(u){if(r){var f=w(n,i);r(n,t,f,u)}else n.$fields[i]=u},enumerable:!0,configurable:!0})}function c(t,i,r,f,o){return r=r||[],f&&(r=new e.trackableArray(r,n,t,f)),u[i]=r,Object.defineProperty(n,i,{get:function(){return n.$fields[i]},set:function(r){o?o(n,t,items,r):n.$fields[i]=r}})}function w(n,t){return function(){return arguments.length==0?n.$fields[t]:n.$fields[t]=arguments[0]}}var l=r&&r.propertyChange,a=r&&r.arrayChange,v=r&&r.dataPropertyChange,y=r&&r.scalarNavigationPropertyChange,p=r&&r.pluralNavigationPropertyChange,h=r&&r.arraySet,u={},o=[];return t.forEachProperty(n,function(n,t){o.push({p:n,v:t})}),i&&i.hasMetadata&&(t.forEach(i.dataProperties,function(i){var r=n[i.name];r=r===undefined?null:i.handle(r);delete n[i.name];s(i,i.name,v);t.removeFromArray(o,i.name,"p");u[i.name]=r}),t.forEach(i.navigationProperties,function(i){var r=n[i.name];r===undefined&&(r=null);delete n[i.name];i.isScalar?(s(i,i.name,y),u[i.name]=r):c(i,i.name,r,p,h);t.removeFromArray(o,i.name,"p")})),t.forEach(o,function(r){var e=r.p,o=r.v;delete n[e];f.isArray(o)?c(e,e,o,a,h):(s(e,e,l),u[e]=o);t.findInArray(i.properties,e)||i.properties.push(e)}),n.$fields=u,n},n.getValue=function(n,t){return n[t]},n.setValue=function(n,t,i){n[t]=i},new r}(),jQueryAjaxProviderInstance:function(n){function f(n){var i={status:n.status};if(n.responseText)try{i.detail=JSON.parse(n.responseText)}catch(r){}return t.createError(n.statusText,i)}var r=function(){i.ajaxProviderBase.call(this,"jQuery Ajax Provider");t.tryFreeze(this)},u;return t.inherit(r,i.ajaxProviderBase),u=r.prototype,u.doAjax=function(t,i,r,u,e,o,s,h,c,l){var a={url:t,accepts:{json:"application/json; odata=verbose",xml:"text/xml; application/xhtml+xml;application/xml",text:"text/xml"},type:i,dataType:r,contentType:u,traditional:!1,data:e,cache:!1,async:o,timeout:s,success:function(n,t,i){if(i.onreadystatechange=null,i.abort=null,n&&n.Error){var r=f(i);r.message=n.Error;l(r)}else c(n,i)},error:function(n){n.onreadystatechange=null;n.abort=null;l(f(n))}};return h!=null&&n.extend(a,h),n.ajax(a)},new r}(n.$),jsonSerializationServiceInstance:function(){var n=function(){i.serializationServiceBase.call(this,"Json Serializer");t.tryFreeze(this)},r;return t.inherit(n,i.serializationServiceBase),r=n.prototype,r.serialize=function(n){return JSON.stringify(n)},r.deserialize=function(n){return f.isTypeOf(n,"string")?JSON.parse(n):n},new n}(),qPromiseProviderInstance:function(n){var u=function(){i.promiseProviderBase.call(this,"Q Promise Provider");t.tryFreeze(this)},r;return t.inherit(u,i.promiseProviderBase),r=u.prototype,r.toString=function(){return this.name},r.deferred=function(){return n.defer()},r.getPromise=function(n){return n.promise},r.resolve=function(n,t){n.resolve(t)},r.reject=function(n,t){n.reject(t)},new u}(n.Q),jQueryPromiseProviderInstance:function(n){var u=function(){i.promiseProviderBase.call(this,"jQuery Promise Provider");t.tryFreeze(this)},r;return t.inherit(u,i.promiseProviderBase),r=u.prototype,r.toString=function(){return this.name},r.deferred=function(){return n.Deferred()},r.getPromise=function(n){return n.promise()},r.resolve=function(n,t){n.resolve(t)},r.reject=function(n,t){n.reject(t)},new u}(n.$)}}(),c=function(){return{dataProperty:function(){var i=function(n,t,i,r,u,f,o,s,h){this.owner=n;this.name=t;this.displayName=i||t;this.dataType=r;this.isNullable=u;this.isKeyPart=f;this.generationPattern=o;this.defaultValue=s;this.useForConcurrency=h;this.relatedNavigationProperties=[];this.validators=[];this.isEnum=r instanceof e.dataTypes.enum;this.isComplex=r.isComplex},n=i.prototype;return n.toString=function(){return this.displayName},n.isValid=function(n){return n==null?!this.isNullable:this.dataType.isValid(n,this)},n.handle=function(n){if(n==null){if(!this.isNullable)throw t.createError(r.notNullable,[this.displayName],{property:this});return null}if(n=this.dataType.handle(n,this),this.dataType==e.dataTypes.number&&this.precision&&n.toString().replace(/\./g,"").length>this.precision)throw t.createError(r.maxPrecisionError,[n,this.precision],{dataType:dataType,value:n});return this.dataType==e.dataTypes.number&&this.scale!=null&&(n=Number(n.toFixed(this.scale))),n},n.getDefaultValue=function(){return this.defaultValue?this.defaultValue:this.isNullable?null:this.generationPattern==u.generationPattern.Identity&&this.isKeyPart===!0?this.dataType.autoValue():this.dataType.defaultValue()},n.addValidation=function(n,i,r,u){t.assertPrm(n,"name").isNotEmptyString().check();t.assertPrm(i,"func").isFunction().check();this.validators.push(new e.validator(n,i,r,u))},n.validate=function(n){var u=[],i,r;return this.validators.length>0&&(i=this,r=t.getValue(n,i.name),t.forEach(this.validators,function(f){var e=f.validate(r,n);e&&u.push(t.createValidationError(n,r,i,e,f))})),u},i}(),navigationProperty:function(){var i=function(n,t,i,r,u,f,e,o){this.owner=n;this.name=t;this.displayName=i||t;this.entityTypeName=r;this.entityType=null;this.isScalar=u;this.isComplex=f===undefined;this.associationName=f;this.cascadeDelete=e===!0;this.foreignKeyNames=o||[];this.inverse=null;this.foreignKeys=[];this.validators=[];this.triggerOwnerModify=!1},n=i.prototype;return n.toString=function(){return this.displayName},n.checkAssign=function(n){if(n!=null){if(!n.$tracker)throw t.createError(r.assignErrorNotEntity,[this],{property:this,value:n});var i=n.$tracker.entityType;if(!this.entityType.isAssignableWith(i))throw t.createError(r.assignError,[this.name,i.shortName],{property:this,value:n});}},n.addValidation=function(n,i,r,u){t.assertPrm(n,"name").isNotEmptyString().check();t.assertPrm(i,"func").isFunction().check();this.validators.push(new e.validator(n,i,r,u))},n.validate=function(n){var u=[],i,r;return this.validators.length>0&&(i=this,r=t.getValue(n,i.name),t.forEach(this.validators,function(f){var e=f.validate(r);e&&u.push(t.createValidationError(n,r,i,e,f))})),u},i}(),entityType:function(){function u(n,t){n.baseType&&u(n.baseType,t);n.constructor&&n.constructor.call(t,t)}function a(n,i){for(var u,f,e,o=n.length,r=0;r0&&t.forEach(this.validators,function(r){var u=r.validate(n);u&&i.push(t.createValidationError(n,null,null,u,r))}),t.forEach(this.dataProperties,function(t){var r=t.validate(n);r&&(i=i.concat(r))}),t.forEach(this.navigationProperties,function(t){var r=t.validate(n);r&&(i=i.concat(r))}),i},i}(),metadataManager:function(){var i=function(n){this.types=[];this.enums={};this.name=null;this.displayName=null;n&&this.parseBeetleMetadata(n)},n=i.prototype;return n.toString=function(){return this.types.join(", ")},n.getEntityType=function(n,i){var u=t.findInArray(this.types,n,"name");if(!u&&i===!0)throw t.createError(r.notFoundInMetadata,[n],{metadataManager:this,typeName:n});return u},n.getEntityTypeByShortName=function(n,i){var u=t.findInArray(this.types,n,"shortName");if(!u&&i===!0)throw t.createError(r.notFoundInMetadata,[n],{metadataManager:this,typeShortName:n});return u},n.createQuery=function(n,i,r){if(i)return this.getEntityTypeByShortName(i,!0).createQuery(n,r);var u=t.filterArray(this.types,function(t){return t.setName==n});return u.length==1?u[0].createQuery(n,r):new o.entityQuery(n,null,r)},n.registerCtor=function(n,t,i){var r=this.getEntityTypeByShortName(n,!0);r.registerCtor(t,i)},n.createEntity=function(n,t){var i=this.getEntityTypeByShortName(n,!0);return i?i.createEntity(t):null},n.createRawEntity=function(n,t){var i=this.getEntityTypeByShortName(n,!0);return i?i.createRawEntity(t):null},n.parseBeetleMetadata=function(n){var o,a,s,r,v,y,p,w,l,i,f,b,k;if(this.types=[],this.enums={},this.name=n.n,this.displayName=t.getResourceValue(n.r,n.l||n.n),o=n.e,a={},o)for(s=0;s0&&a(n,t,r);i.currentGroup?i.currentGroup.filterItems.push(r):i.groups.push(r);i.currentGroup=r;i.openGroups.push(r)}function a(n,i,o){var h,p,v,a,y,c,w;if(n.length==3||n.length==4){if(h=n[1],f.isTypeOf(h,"string"))for(h=h.toLowerCase(),p=u.filterOps.symbols(),v=0;vs?i?-1:1:i?1:-1}}(c,s),o.push(l);return e=[],e.push.apply(e,n),e.sort(function(n,t){for(var r,i=0;i0},n}(),avgExp:function(){var n=function(n){i.expressionBase.call(this,"exec;avg",3,!0,!0);this.expStr=n;n&&(this.exp=h.jsep(n));this.isExecuter=!0},r;return t.inherit(n,i.expressionBase),r=n.prototype,r.toBeetleQuery=function(n){return this.exp?t.jsepToBeetleQuery(this.exp,n):""},r.clone=function(){return new n(this.expStr)},r.execute=function(t,i){return n.execute(t,this.exp,i)},n.execute=function(n,i,r){var u=i?t.jsepToFunction(i,r):function(n){return n};return o.queryFuncs.avg.impl(n,function(){return n},u)},n}(),maxExp:function(){var n=function(n){i.expressionBase.call(this,"exec;max",3,!0,!0);this.expStr=n;n&&(this.exp=h.jsep(n));this.isExecuter=!0},r;return t.inherit(n,i.expressionBase),r=n.prototype,r.toBeetleQuery=function(n){return this.exp?t.jsepToBeetleQuery(this.exp,n):""},r.clone=function(){return new n(this.expStr)},r.execute=function(t,i){return n.execute(t,this.exp,i)},n.execute=function(n,i,r){var u=i?t.jsepToFunction(i,r):function(n){return n};return o.queryFuncs.max.impl(n,function(){return n},u)},n}(),minExp:function(){var n=function(n){i.expressionBase.call(this,"exec;min",3,!0,!0);this.expStr=n;n&&(this.exp=h.jsep(n));this.isExecuter=!0},r;return t.inherit(n,i.expressionBase),r=n.prototype,r.toBeetleQuery=function(n){return this.exp?t.jsepToBeetleQuery(this.exp,n):""},r.clone=function(){return new n(this.expStr)},r.execute=function(t,i){return n.execute(t,this.exp,i)},n.execute=function(n,i,r){var u=i?t.jsepToFunction(i,r):function(n){return n};return o.queryFuncs.min.impl(n,function(){return n},u)},n}(),sumExp:function(){var n=function(n){i.expressionBase.call(this,"exec;sum",3,!0,!0);this.expStr=n;n&&(this.exp=h.jsep(n));this.isExecuter=!0},r;return t.inherit(n,i.expressionBase),r=n.prototype,r.toBeetleQuery=function(n){return this.exp?t.jsepToBeetleQuery(this.exp,n):""},r.clone=function(){return new n(this.expStr)},r.execute=function(t,i){return n.execute(t,this.exp,i)},n.execute=function(n,i,r){var u=i?t.jsepToFunction(i,r):function(n){return n};return o.queryFuncs.sum.impl(n,function(){return n},u)},n}(),countExp:function(){var n=function(n,t){i.expressionBase.call(this,"exec;count",3,!0,!0);this.expStr=n;n&&(this.exp=h.jsep(n));this.varContext=t;this.isExecuter=!0},r;return t.inherit(n,i.expressionBase),r=n.prototype,r.toBeetleQuery=function(n){return this.exp?t.jsepToBeetleQuery(this.exp,n):""},r.clone=function(){return new n(this.expStr,this.varContext)},r.execute=function(t,i){return n.execute(t,this.exp,i)},n.execute=function(n,i,r){return i&&(n=t.filterArray(n,t.jsepToFunction(i,r))),n.length},n}(),firstExp:function(){var n=function(n,t){i.expressionBase.call(this,"exec;first",3,!0,!1);this.expStr=n;n&&(this.exp=h.jsep(n));this.varContext=t;this.isExecuter=!0},u;return t.inherit(n,i.expressionBase),u=n.prototype,u.toBeetleQuery=function(n){return this.exp?t.jsepToBeetleQuery(this.exp,n):""},u.clone=function(){return new n(this.expStr,this.varContext)},u.execute=function(t,i){return n.execute(t,this.exp,i)},n.execute=function(n,i,u){if(i&&(n=t.filterArray(n,t.jsepToFunction(i,u))),n.length==0)throw t.createError(r.arrayEmpty,{array:n,expression:this});return n[0]},n}(),firstOrDefaultExp:function(){var n=function(n,t){i.expressionBase.call(this,"exec;firstOD",3,!0,!1);this.expStr=n;n&&(this.exp=h.jsep(n));this.varContext=t;this.isExecuter=!0},r;return t.inherit(n,i.expressionBase),r=n.prototype,r.toBeetleQuery=function(n){return this.exp?t.jsepToBeetleQuery(this.exp,n):""},r.clone=function(){return new n(this.expStr,this.varContext)},r.execute=function(t,i){return n.execute(t,this.exp,i)},n.execute=function(n,i,r){return i&&(n=t.filterArray(n,t.jsepToFunction(i,r))),n.length==0?null:n[0]},n}(),singleExp:function(){var n=function(n,t){i.expressionBase.call(this,"exec;single",3,!0,!1);this.expStr=n;n&&(this.exp=h.jsep(n));this.varContext=t;this.isExecuter=!0},u;return t.inherit(n,i.expressionBase),u=n.prototype,u.toBeetleQuery=function(n){return this.exp?t.jsepToBeetleQuery(this.exp,n):""},u.clone=function(){return new n(this.expStr,this.varContext)},u.execute=function(t,i){return n.execute(t,this.exp,i)},n.execute=function(n,i,u){if(i&&(n=t.filterArray(n,t.jsepToFunction(i,u))),n.length!=1)throw t.createError(r.arrayNotSingle,{array:n,expression:this});return n[0]},n}(),singleOrDefaultExp:function(){var n=function(n,t){i.expressionBase.call(this,"exec;singleOD",3,!0,!1);this.expStr=n;n&&(this.exp=h.jsep(n));this.varContext=t;this.isExecuter=!0},u;return t.inherit(n,i.expressionBase),u=n.prototype,u.toBeetleQuery=function(n){return this.exp?t.jsepToBeetleQuery(this.exp,n):""},u.clone=function(){return new n(this.expStr,this.varContext)},u.execute=function(t,i){return n.execute(t,this.exp,i)},n.execute=function(n,i,u){if(i&&(n=t.filterArray(n,t.jsepToFunction(i,u))),n.length>1)throw t.createError(r.arrayNotSingleOrEmpty,{array:n,expression:this});return n.length==0?null:n[0]},n}(),lastExp:function(){var n=function(n,t){i.expressionBase.call(this,"exec;last",3,!0,!1);this.expStr=n;n&&(this.exp=h.jsep(n));this.varContext=t;this.isExecuter=!0},u;return t.inherit(n,i.expressionBase),u=n.prototype,u.toBeetleQuery=function(n){return this.exp?t.jsepToBeetleQuery(this.exp,n):""},u.clone=function(){return new n(this.expStr,this.varContext)},u.execute=function(t,i){return n.execute(t,this.exp,i)},n.execute=function(n,i,u){if(i&&(n=t.filterArray(n,t.jsepToFunction(i,u))),n.length==0)throw t.createError(r.arrayEmpty,{array:n,expression:this});return n[n.length-1]},n}(),lastOrDefaultExp:function(){var n=function(n,t){i.expressionBase.call(this,"exec;lastOD",3,!0,!1);this.expStr=n;n&&(this.exp=h.jsep(n));this.varContext=t;this.isExecuter=!0},r;return t.inherit(n,i.expressionBase),r=n.prototype,r.toBeetleQuery=function(n){return this.exp?t.jsepToBeetleQuery(this.exp,n):""},r.clone=function(){return new n(this.expStr,this.varContext)},r.execute=function(t,i){return n.execute(t,this.exp,i)},n.execute=function(n,i,r){return i&&(n=t.filterArray(n,t.jsepToFunction(i,r))),n.length==0?null:n[n.length-1]},n}()}}(),queryFuncs:function(){var n={};return n.toupper=function(){var n=function(){i.queryFuncBase.call(this,"toupper","ToUpper",1)},r;return t.inherit(n,i.queryFuncBase),r=n.prototype,r.impl=function(n,t){return(t?t(n):n).toUpperCase()},new n}(),n.tolower=function(){var n=function(){i.queryFuncBase.call(this,"tolower","ToLower",1)},r;return t.inherit(n,i.queryFuncBase),r=n.prototype,r.impl=function(n,t){return(t?t(n):n).toLowerCase()},new n}(),n.substring=function(){var n=function(){i.queryFuncBase.call(this,"substring","Substring",3)},r;return t.inherit(n,i.queryFuncBase),r=n.prototype,r.impl=function(n,t,i,r){arguments.length==3?(r=i,i=t,t=n):t=t(n);i=i(n);r=r(n);var u=Number(i)+Number(r);return t&&t.substring(i,u)},new n}(),n.substringof=function(){var n=function(){i.queryFuncBase.call(this,"substringof","Contains",2)},r;return t.inherit(n,i.queryFuncBase),r=n.prototype,r.toBeetleFunction=function(n,t){return t=t?t+".":"",t+"Contains("+n+")"},r.impl=function(n,t,i){return i=i?i(n):n,i&&i.indexOf(t(n))>=0},new n}(),n.length=function(){var n=function(){i.queryFuncBase.call(this,"length","Length",1)},r;return t.inherit(n,i.queryFuncBase),r=n.prototype,r.toBeetleFunction=function(n){return n=n?n+".":"",n+"Length"},r.impl=function(n,t){return(t?t(n):n).length},new n}(),n.trim=function(){var n=function(){i.queryFuncBase.call(this,"trim","Trim",1)},r;return t.inherit(n,i.queryFuncBase),r=n.prototype,r.impl=function(n,t){return(t?t(n):n).trim()},new n}(),n.concat=function(){var n=function(){i.queryFuncBase.call(this,"concat","Concat",null)},r;return t.inherit(n,i.queryFuncBase),r=n.prototype,r.toBeetleFunction=function(){return"string.Concat("+Array.prototype.slice.call(arguments).join(", ")+")"},r.impl=function(n){for(var i=arguments[1](n).toString(),r=Array.prototype.slice.call(arguments,2),u=[],t=0;t0},new u}(),n.round=function(){var n=function(){i.queryFuncBase.call(this,"round","Math.Round",1)},r;return t.inherit(n,i.queryFuncBase),r=n.prototype,r.toBeetleFunction=function(n){return"Math.Round("+n+")"},r.impl=function(n,t){return Math.round(t?t(n):n)},new n}(),n.ceiling=function(){var n=function(){i.queryFuncBase.call(this,"ceiling","Math.Ceiling(%1)",1)},r;return t.inherit(n,i.queryFuncBase),r=n.prototype,r.toBeetleFunction=function(n){return"Math.Ceiling("+n+")"},r.impl=function(n,t){return Math.ceil(t?t(n):n)},new n}(),n.floor=function(){var n=function(){i.queryFuncBase.call(this,"floor","Math.Floor",1)},r;return t.inherit(n,i.queryFuncBase),r=n.prototype,r.toBeetleFunction=function(n){return"Math.Floor("+n+")"},r.impl=function(n,t){return Math.floor(t?t(n):n)},new n}(),n.second=function(){var n=function(){i.queryFuncBase.call(this,"second","Second",1)},r;return t.inherit(n,i.queryFuncBase),r=n.prototype,r.toBeetleFunction=function(n){return n=n?n+".":"",n+"Second"},r.impl=function(n,t){return t=e.dataTypes.date.handle(t?t(n):n),t.getSeconds()},new n}(),n.minute=function(){var n=function(){i.queryFuncBase.call(this,"minute","Minute",1)},r;return t.inherit(n,i.queryFuncBase),r=n.prototype,r.toBeetleFunction=function(n){return n=n?n+".":"",n+"Minute"},r.impl=function(n,t){return t=e.dataTypes.date.handle(t?t(n):n),t.getMinutes()},new n}(),n.hour=function(){var n=function(){i.queryFuncBase.call(this,"hour","Hour",1)},r;return t.inherit(n,i.queryFuncBase),r=n.prototype,r.toBeetleFunction=function(n){return n=n?n+".":"",n+"Hour"},r.impl=function(n,t){return t=e.dataTypes.date.handle(t?t(n):n),t.getHours()},new n}(),n.day=function(){var n=function(){i.queryFuncBase.call(this,"day","Day",1)},r;return t.inherit(n,i.queryFuncBase),r=n.prototype,r.toBeetleFunction=function(n){return n=n?n+".":"",n+"Day"},r.impl=function(n,t){return t=e.dataTypes.date.handle(t?t(n):n),t.getDate()},new n}(),n.month=function(){var n=function(){i.queryFuncBase.call(this,"month","Month",1)},r;return t.inherit(n,i.queryFuncBase),r=n.prototype,r.toBeetleFunction=function(n){return n=n?n+".":"",n+"Month"},r.impl=function(n,t){return t=e.dataTypes.date.handle(t?t(n):n),t.getMonth()+1},new n}(),n.year=function(){var n=function(){i.queryFuncBase.call(this,"year","Year",1)},r;return t.inherit(n,i.queryFuncBase),r=n.prototype,r.toBeetleFunction=function(n){return n=n?n+".":"",n+"Year"},r.impl=function(n,t){return t=e.dataTypes.date.handle(t?t(n):n),t.getFullYear()},new n}(),n.max=function(){var n=function(){i.queryFuncBase.call(this,"max","Max",2)},u;return t.inherit(n,i.queryFuncBase),u=n.prototype,u.toODataFunction=function(){throw t.createError(r.functionNotSupportedForOData,["Max"]);},u.impl=function(n,t,i){var u,r,f;if(arguments.length==1?t=n:arguments.length==2?(i=t,t=n):t=t(n),t.length==0)return null;for(u=i?i(t[0]):t[0],r=1;ru&&(u=f);return u},new n}(),n.min=function(){var n=function(){i.queryFuncBase.call(this,"min","Min",2)},u;return t.inherit(n,i.queryFuncBase),u=n.prototype,u.toODataFunction=function(){throw t.createError(r.functionNotSupportedForOData,["Min"]);},u.impl=function(n,t,i){var u,r,f;if(arguments.length==1?t=n:arguments.length==2?(i=t,t=n):t=t(n),t.length==0)return null;for(u=i?i(t[0]):t[0],r=1;r0;for(r=0;r2&&(i=Array.prototype.slice.call(arguments).slice(2)),u=this.slice(n,n+t),this.changing.notify({added:i,removed:u}),i&&r(i,this),f=Array.prototype.splice.apply(this,arguments),this.after(this.object,this.property,this,u,i),this.changed.notify({added:i,removed:u}),f},n.remove=function(){var n=[],i=this;return this.changing.notify({added:[],removed:arguments}),t.forEach(arguments,function(r){var u=t.indexOf(i,r);u>=0&&(Array.prototype.splice.call(i,u,1),n.push(r))}),this.after(this.object,this.property,this,n,null),this.changed.notify({added:[],removed:arguments}),n},n.load=function(n,t,i,r,u){return this.entity.$tracker.loadNavigationProperty(this.propertyName,n,t,i,r,u)},i}(),event:function(){var i=function(n,t){this.name=n;this.subscribers=[];this.publisher=t},n=i.prototype;return n.toString=function(){return this.name},n.subscribe=function(n){t.findInArray(this.subscribers,n)||this.subscribers.push(n)},n.unsubscribe=function(n){t.removeFromArray(this.subscribers,n)},n.notify=function(){var n=arguments;t.forEach(this.subscribers,function(t){t.apply(t,n)})},i}(),dataTypes:function(){function u(n,i){throw t.createError(r.assignError,[n.name,i],{dataType:n,value:i});}var e=function(){var r=function(n){i.dataTypeBase.call(this,"dateBase");this.name=n},n;return t.inherit(r,i.dataTypeBase),n=r.prototype,n.defaultValue=function(){return new Date(-6847812e6)},n.isValid=function(n){return Object.prototype.toString.call(n)==="[object Date]"},n.handle=function(n){if(!this.isValid(n)){var t=n;n=this.tryParse(t);n||u(this,t)}return n},n.autoValue=function(){return new Date},n.getRawValue=function(n){return n==null?null:s.getDateConverter().toISOString(n)},n.tryParse=function(n){return s.getDateConverter().parse(n)},n.toODataValue=function(n){return n=this.handle(n),"datetime'"+s.getDateConverter().toISOString(n)+"'"},n.toBeetleValue=function(n){return n=this.handle(n),'"'+s.getDateConverter().toISOString(n)+'"'},r}(),n={};return n.object=function(){var n=function(){i.dataTypeBase.call(this,"object");t.tryFreeze(this)};return t.inherit(n,i.dataTypeBase),new n}(),n.array=function(){var u=function(){i.dataTypeBase.call(this,"array");t.tryFreeze(this)},n;return t.inherit(u,i.dataTypeBase),n=u.prototype,n.isValid=function(n){return n instanceof Array},n.defaultValue=function(){return[]},n.handle=function(n){return this.isValid(n)||(n=n.split(",")),n},n.autoValue=function(){throw t.createError(r.notImplemented,[this.name,"defaultValue"]);},n.toODataValue=function(n){return n},n.toBeetleValue=function(n){return n},new u}(),n.function=function(){var n=function(){i.dataTypeBase.call(this,"function");t.tryFreeze(this)};return t.inherit(n,i.dataTypeBase),new n}(),n.string=function(){var u=0,r=function(){i.dataTypeBase.call(this,"string");t.tryFreeze(this)},n;return t.inherit(r,i.dataTypeBase),n=r.prototype,n.defaultValue=function(){return""},n.handle=function(n){return this.isValid(n)||(n=n.toString()),n},n.autoValue=function(){return"key_"+--u},n.toODataValue=function(n){return"'"+n.replace(/'/g,"''")+"'"},n.toBeetleValue=function(n){return'"'+n.replace(/"/g,'""')+'"'},new r}(),n.guid=function(){var r=function(){i.dataTypeBase.call(this,"guid");t.tryFreeze(this)},n;return t.inherit(r,i.dataTypeBase),n=r.prototype,n.defaultValue=function(){return"00000000-0000-0000-0000-000000000000"},n.isValid=function(n){return typeof n=="string"&&n.match(/^\{?[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}\}?$/i)},n.handle=function(n){return this.isValid(n)||u(this,n),n},n.autoValue=function(){return t.createGuid()},n.toODataValue=function(n){return"guid'"+n+"'"},n.toBeetleValue=function(n){return'"'+n+'"'},new r}(),n.date=function(){var n=function(){e.call(this,"date");t.tryFreeze(this)};return t.inherit(n,e),new n}(),n.dateTimeOffset=function(){var n=function(){e.call(this,"dateTimeOffset");t.tryFreeze(this)},i;return t.inherit(n,e),i=n.prototype,i.toODataValue=function(n){return n=this.handle(n),"datetimeoffset'"+s.getDateConverter().toISOString(n)+"'"},new n}(),n.time=function(){var r=function(){i.dataTypeBase.call(this,"time");t.tryFreeze(this)},n;return t.inherit(r,i.dataTypeBase),n=r.prototype,n.defaultValue=function(){return"00:00:00"},n.isValid=function(n){return/^([01]?\d|2[0-3])(((:[0-5]?\d){2}(\.\d{1,3}){0,1})|(:[0-5]?\d){0,2})?$/.test(n)},n.handle=function(n){return this.isValid(n)||u(this,n),n},n.autoValue=function(){return"00:00:00"},n.toODataValue=function(n){return"time'"+n+"'"},n.toBeetleValue=function(n){return'"'+n+'"'},new r}(),n.boolean=function(){var r=function(){i.dataTypeBase.call(this,"boolean");t.tryFreeze(this)},f;return t.inherit(r,i.dataTypeBase),f=r.prototype,f.defaultValue=function(){return!1},f.handle=function(t){if(!this.isValid(t)){if(n.String.isValid(t)){var i=t.toLowerCase();if(i=="true"||i=="1")return!0;if(i=="false"||i=="0")return!1}throw u(this,t);}return t},new r}(),n.int=function(){var f=0,r=function(){i.dataTypeBase.call(this,"int");t.tryFreeze(this)},n;return t.inherit(r,i.dataTypeBase),n=r.prototype,n.defaultValue=function(){return 0},n.isValid=function(n){return typeof n=="number"&&n%1==0},n.handle=function(n){return typeof n!="number"&&(n=Number(n)),this.isValid(n)||u(this,n),n},n.autoValue=function(){return--f},new r}(),n.number=function(){var f=0,r=function(){i.dataTypeBase.call(this,"number");t.tryFreeze(this)},n;return t.inherit(r,i.dataTypeBase),n=r.prototype,n.defaultValue=function(){return 0},n.isValid=function(n){return!isNaN(n)&&typeof n=="number"},n.handle=function(n){return typeof n!="number"&&(n=Number(n)),this.isValid(n)||u(this,n),n},n.autoValue=function(){return--f},new r}(),n.byte=function(){var f=0,r=function(){i.dataTypeBase.call(this,"byte");t.tryFreeze(this)},n;return t.inherit(r,i.dataTypeBase),n=r.prototype,n.defaultValue=function(){return 0},n.isValid=function(n){return typeof n=="number"&&n%1==0&&n>=0&&n<256},n.handle=function(n){return typeof n!="number"&&(n=Number(n)),this.isValid(n)||u(this,n),n},n.autoValue=function(){return--f},new r}(),n.binary=function(){var r=function(){i.dataTypeBase.call(this,"binary");t.tryFreeze(this)},n;return t.inherit(r,i.dataTypeBase),n=r.prototype,n.defaultValue=function(){return'"AAAAAAAAAAA="'},n.isValid=function(){return!0},n.handle=function(n){return n},n.toODataValue=function(n){return n=this.handle(n),"X'"+s.getDateConverter().toISOString(n)+"'"},n.toBeetleValue=function(n){return'"'+n+'"'},new r}(),n.enum=function(){function e(n,i){var e,r,u,o;if(f.isArray(n))return e=0,t.forEach(n,function(n){e|=n.value}),e;if(f.isTypeOf(n,"string")){if(r=n.split(", "),r.length==1)return i[n];for(u=0;u0?this.name+" ("+n.join(", ")+")":this.name},u.validate=function(n,t){return this.func(n,t)==!0?null:this.message},n.byCode=function(i,u,f,e,o,h){var c=s.getLocalizeFunction();c&&(f=e&&c(e)||f,o=h&&c(h)||o);u=u||[];u.push(f);u.push(o);switch(i){case"re":return n.required.apply(null,u);case"sl":return n.stringLength.apply(null,u);case"ma":return n.maxLength.apply(null,u);case"mi":return n.minLength.apply(null,u);case"ra":return n.range.apply(null,u);case"rx":return n.regularExpression.apply(null,u);case"ea":return n.emailAddress.apply(null,u);case"cc":return n.creditCard.apply(null,u);case"ur":return n.url.apply(null,u);case"ph":return n.phone.apply(null,u);case"po":return n.postalCode.apply(null,u);case"ti":return n.time.apply(null,u);case"co":return n.compare.apply(null,u);default:throw t.createError(r.unknownValidator,[i]);}},n.required=function(i,u,e){var o=function(n){return n==null?!1:f.isTypeOf(n,"string")&&!i&&n==""?!1:!0};return u=t.formatString(u||r.requiredError,e),new n("Required",o,u,{allowEmptyStrings:i})},n.stringLength=function(i,u,e,o){var s=function(n){return!i&&!u?!0:f.isNotEmptyString(n)?i&&n.lengthu?!1:!0:!1};return e=t.formatString(e||r.stringLengthError,o,i,u),new n("StringLength",s,e,{min:i,max:u})},n.maxLength=function(i,u,f){var e=function(n){return n==null?!0:i&&n.length>i?!1:!0};return u=t.formatString(u||r.maxLenError,f,i),new n("MaxLength",e,u,{length:i})},n.minLength=function(i,u,f){var e=function(n){return n==null?!1:i&&n.lengthu?!1:!0};return f=t.formatString(f||r.rangeError,e,i,u),new n("Range",o,f,{min:i,max:u})},n.regularExpression=function(n,t,r){return f.isTypeOf(n,"string")&&(n=new RegExp(n)),i("RegularExpression",n,t,r)},n.emailAddress=function(n,t){return i("EmailAddress",/^\w+@[a-zA-Z_]+?\.[a-zA-Z]{2,3}$/,n,t)},n.creditCard=function(n,t){return i("CreditCard",/^((4\d{3})|(5[1-5]\d{2})|(6011)|(3[68]\d{2})|(30[012345]\d))[ -]?(\d{4})[ -]?(\d{4})[ -]?(\d{4}|3[4,7]\d{13})$/,n,t)},n.url=function(n,t){return i("Url",/(http|ftp|https):\/\/[\w-]+(\.[\w-]+)+([\w.,@?^=%&:\/~+#-]*[\w@?^=%&\/~+#-])?/,n,t)},n.phone=function(n,t){return i("Phone",/^(?!.*-.*-.*-)(?=(?:\d{8,10}$)|(?:(?=.{9,11}$)[^-]*-[^-]*$)|(?:(?=.{10,12}$)[^-]*-[^-]*-[^-]*$) )[\d-]+$/,n,t)},n.postalCode=function(n,t){return i("PostalCode",/^\d{5}([\-]?\d{4})?$/,n,t)},n.time=function(n,t){return i("Time",/^([01]?\d|2[0-3])(((:[0-5]?\d){2}(\.\d{1,3}){0,1})|(:[0-5]?\d){0,2})?$/,n,t)},n.compare=function(i,u,f){var o=function(n,r){var u=t.getValue(r,i);return n==u},e=s.getLocalizeFunction(),h=e&&e(i)||i;return u=t.formatString(u||r.compareError,f,h),new n("Compare",o,u,{property:i})},n}(),entityContainer:function(){function r(n,t){var i=new u(n);return t.push(i),i}var u=function(){function u(n,t){var i=r(n,t);return i>-1?t[i]:null}function r(n,t){var f=t.length,r,u,i;if(f>0)for(r=0,u=f-1;r<=u;){if(i=Math.floor((r+u)/2),t[i].keyn){u=i-1;continue}return i}return-1}function f(n,t){for(var i=0;it[i].key;)i++;return i}var i=function(n){this.typeName=n.name;this.keyIndex=[];t.tryFreeze(this)},n=i.prototype;return n.toString=function(){return this.typeName+": "+this.keyIndex.length},n.push=function(n,t){var i=f(n,this.keyIndex);this.keyIndex.splice(i,0,{key:n,entity:t})},n.remove=function(n){var t=r(n,this.keyIndex);this.keyIndex.splice(t,1)},n.getEntity=function(n){var t=u(n,this.keyIndex);return t?t.entity:null},n.getRelations=function(n,t){var f=t.inverse,r,i,u;if(!f)return null;for(r=[],i=0;i0)&&n.$tracker.isChanged()})},n.count=function(){return this.allEntities.length},n.findEntitySet=function(n){return t.findInArray(this.entitySets,n.name,"typeName")},i}(),entityTracker:function(){function y(n,t,i,r){r.entity=n;n.$tracker=r;r.entityType=t;r.entityState=u.entityStates.Detached;r.observableProvider=i;r.forceUpdate=!1;r.originalValues=[];r.changedValues=[];r.manager=null;r.owners=[];r.validationErrors=[];r.validationErrorsChanged=new e.event("validationErrorsChanged",r);r.entityStateChanged=new e.event("entityStateChanged",r);r.propertyChanged=new e.event("propertyChanged",r);r.arrayChanged=new e.event("arrayChanged",r);t.hasMetadata&&(r.key=l(r))}function p(n,t,i){var r={propertyChange:w,arrayChange:b,dataPropertyChange:k,scalarNavigationPropertyChange:d,pluralNavigationPropertyChange:g,arraySet:nt};return i.observableProvider.toObservable(n,t,r)}function c(n,t){n.baseType&&c(n.baseType,t);n.initializer&&n.initializer.call(t,t)}function l(n,t,i){var e=n.entityType,o,r,u,f;if(e.keys.length==0)return null;for(o=[],r=0;r=0;p--)k=y[p],k.entity==n&&k.property==u&&y.splice(p,1);y.length==0&&a.$tracker.manager&&a.$tracker.manager.detachEntity(a);h.$tracker.owners.push({entity:n,property:u})}c.manager&&(d=s.autoFixScalar,t.forEach(u.relatedNavigationProperties,function(n){var t,i,r;if(n.isScalar===!0)if(t=c.foreignKey(n),t){if(i=c.getValue(n.name),i&&i.$tracker.key===t)return;r=null;c.manager&&d&&(r=c.manager.getEntityByKey(t,n.entityType));r?c.setValue(n.name,r):i&&c.setValue(n.name,new e.valueNotifyWrapper(null))}else c.setValue(n.name,null)}))}}function d(n,u,h,c){var y=n.$tracker,d=!1,l,w,p,b,a,k;if(f.isInstanceOf(c,e.valueNotifyWrapper)&&(d=!0,c=c.value),l=h(),l!=c)if(u.checkAssign(c),h(c),s.liveValidate===!0&&o(u.validate(n),y,u),y.propertyChanged.notify({entity:n,property:u,oldValue:l,newValue:c}),v(c,y.manager),u.isComplex){if(c==null)throw t.createError(r.complexCannotBeNull,[u.displayName],{entity:n,property:u});for(w=l.$tracker.owners,p=w.length-1;p>=0;p--)b=w[p],b.entity==n&&b.property==u&&w.splice(p,1);l.$tracker.owners.length==0&&l.$tracker.manager&&l.$tracker.manager.detachEntity(l);c.$tracker.owners.push({entity:n,property:u});i(n,u.name,c.$tracker.toRaw(),y)}else d||(u.triggerOwnerModify&&u.foreignKeys.length==0&&i(n,null,null,y),t.setForeignKeys(n,u,c)),a=u.inverse,a&&(a.isScalar?(l&&l.$tracker.setValue(a.name,null),c&&c.$tracker.setValue(a.name,n)):(l&&l.$tracker.getValue(a.name).remove(n),c&&(k=c.$tracker.getValue(a.name),t.findInArray(k,n)||k.push(n))))}function g(n,r,u,f,e){var c=n.$tracker,h;s.liveValidate===!0&&o(r.validate(n),c,r);r.triggerOwnerModify&&i(n,null,null,c);c.arrayChanged.notify({entity:n,property:r,items:u,removedItems:f,addedItems:e});h=r.inverse;h&&(f&&t.forEach(f,function(t){t.$tracker.getValue(h.name)==n&&t.$tracker.setValue(h.name,null)}),e&&t.forEach(e,function(t){v(t,c.manager);t.$tracker.setValue(h.name,n)}))}function nt(n,i,f,e){var l=s.getArraySetBehaviour(),h,o,c;if(l==u.arraySetBehaviour.NotAllowed)throw t.createError(r.settingArrayNotAllowed,{entity:n,property:e});if(h=[],o=t.filterArray(f,function(){return!0}),l==u.arraySetBehaviour.Replace&&t.forEach(i,function(n){t.findInArray(o,n)?t.removeFromArray(o,n):h.push(n)}),l==u.arraySetBehaviour.Append&&t.forEach(f,function(n){t.findInArray(i,n)&&t.removeFromArray(o,n)}),h.length>0)for(c=h.length-1;c>=0;c--)i.splice(t.indexOf(i,h[c]),1);o.length>0&&i.push.apply(i,o)}function tt(n){var i=n.$tracker;t.forEach(i.entityType.navigationProperties,function(r){var f,e,u;r.inverse&&(f=r.inverse,r.isScalar?(e=i.getValue(r.name),e&&t.setForeignKeys(e,f,n)):(u=i.getValue(r.name),u&&u.length>0&&t.forEach(u,function(i){t.setForeignKeys(i,f,n)})))})}function v(n,i){if(n&&i&&!n.$tracker.entityType.isComplexType&&!i.isInManager(n)){if(n.$tracker.manager)throw t.createError(r.entityAlreadyBeingTracked,null,{entity:n,manager:i});i.addEntity(n)}}function i(n,r,f,e){var o=e.entityState;o==u.entityStates.Unchanged&&(t.forEach(e.entityType.navigationProperties,function(n){var u=n.inverse,r;u&&u.triggerOwnerModify&&(r=e.getValue(n.name),r&&(n.isScalar?i(r,null,null,r.$tracker):t.forEach(r,function(n){i(n,null,null,n.$tracker)})))}),e.toModified());it(r,f,e.originalValues,e.changedValues)}function it(n,i,r,u){var f,e;n!=null&&(i==null||i.$tracker==null||i.$tracker.entityType.isComplexType)&&(f=t.findInArray(r,n,"p"),f||r.push({p:n,v:i}),e=t.findInArray(u,n,"p"),e||u.push({p:n,v:i}))}function o(n,i,r){var u=[],f=r?t.filterArray(i.validationErrors,function(n){return n.property===r}):t.filterArray(i.validationErrors,function(){return!0});t.forEach(f,function(r){t.findInArray(n,r.validator,"validator")?t.removeFromArray(n,r.validator,"validator"):(t.removeFromArray(i.validationErrors,r),u.push(r))});i.validationErrors=i.validationErrors.concat(n);(u.length>0||n.length>0)&&i.validationErrorsChanged.notify({errors:i.validationErrors,added:n,removed:u})}var h=function(n,t,i){delete n.$type;delete n.$id;y(n,t,i||s.getObservableProvider(),this);p(n,t,this);c(t,n)},n=h.prototype;return n.toString=function(){return"EntityTracker: "+this.entityType.shortName+", key: "+this.key},n.setManagerInfo=function(n){if(this.manager)throw t.createError(r.entityAlreadyBeingTracked,{otherManager:this.manager});t.assertPrm(n,"manager").isInstanceOf(e.entityManager).check();this.manager=n},n.isChanged=function(){return this.entityState===u.entityStates.Added||this.entityState===u.entityStates.Deleted||this.entityState===u.entityStates.Modified},n.toAdded=function(){if(this.entityState!=u.entityStates.Added){var n={entity:this.entity,oldState:this.entityState,newState:u.entityStates.Added,newChanged:!this.isChanged()};this.entityState=u.entityStates.Added;this.entityStateChanged.notify(n)}},n.toModified=function(){if(this.entityState!=u.entityStates.Modified){var n={entity:this.entity,oldState:this.entityState,newState:u.entityStates.Modified,newChanged:!this.isChanged()};this.entityState=u.entityStates.Modified;this.entityStateChanged.notify(n)}},n.toDeleted=function(){if(this.entityState!=u.entityStates.Deleted){var n={entity:this.entity,oldState:this.entityState,newState:u.entityStates.Deleted,newChanged:!this.isChanged()};this.entityState=u.entityStates.Deleted;this.entityStateChanged.notify(n)}},n.toUnchanged=function(){if(this.entityState!=u.entityStates.Unchanged){var n={entity:this.entity,oldState:this.entityState,newState:u.entityStates.Unchanged,newUnchanged:this.isChanged()};this.originalValues.length=0;this.changedValues.length=0;this.entityState=u.entityStates.Unchanged;this.entityStateChanged.notify(n)}},n.toDetached=function(){if(this.entityState!=u.entityStates.Detached){var n={entity:this.entity,oldState:this.entityState,newState:u.entityStates.Detached,newUnchanged:this.isChanged()};this.entityState=u.entityStates.Detached;this.entityStateChanged.notify(n)}},n.undoChanges=function(){var n=this;t.forEach(this.changedValues,function(t){n.setValue(t.p,t.v)});this.changedValues.length=0},n.acceptChanges=function(){this.changedValues.length=0},n.getValue=function(n){return this.observableProvider.getValue(this.entity,n)},n.setValue=function(n,t){this.observableProvider.setValue(this.entity,n,t)},n.foreignKey=function(n){var r=n.entityType,u,t,e,f,o,i;if(r.keys.length==0)return null;for(u=[],t=0;t2)throw t.createError(r.managerInvalidArgs,{entityManager:u});var o=n[0],s=n[1];if(f.isInstanceOf(o,i.dataServiceBase))u.dataService=o;else if(f.isTypeOf(o,"string"))u.dataService=s?new v.webApiService(o,s):new v.webApiService(o,!1);else throw t.createError(r.managerInvalidArgs,{entityManager:this});u.pendingChangeCount=0;u.entities=new e.entityContainer;u.validationErrors=[];u.entityStateChanged=new e.event("entityStateChanged",u);u.validationErrorsChanged=new e.event("validationErrorsChanged",u);u.hasChangesChanged=new e.event("hasChangesChanged",u);u.queryExecuting=new e.event("queryExecuting",u);u.queryExecuted=new e.event("queryExecuted",u);u.saving=new e.event("saving",u);u.saved=new e.event("saved",u)}function o(n,i,e,o,h,c,l){e||(e=u.mergeStrategy.Preserve);o&&o!==u.entityStates.Detached||(o=u.entityStates.Added);c==null&&(c=s.autoFixScalar);l==null&&(l=s.autoFixPlural);i=i||h.flatEntities(f.isArray(n)?n:[n]);var y=[],p=[],v=[],w=h.entities.count(),a=h;t.forEach(i,function(n){var f=n.$tracker;if(!f&&n.$type)f=a.toEntity(n,n.$type).$tracker;else if(f.entityType.isComplexType||h.isInManager(n))return;var o=f.entityType,s=f.key,i=null;if(w>0&&s&&(i=a.entities.getEntityByKey(s,o.floorType)),i){if(o.name!==i.$tracker.entityType.name)throw t.createError(r.sameKeyOnDifferentTypesError,[i.$tracker.entityType.shortName,o.shortName],{existingEntity:i,entity:n,manager:a});if(e===u.mergeStrategy.ThrowError)throw t.createError(r.sameKeyExists,{existingEntity:i,entity:n,manager:a});else e===u.mergeStrategy.Preserve?v.push({o:n,n:i}):(v.push({o:n,n:i}),p.push({o:i,n:n}))}else a.entities.push(n),n.$tracker.setManagerInfo(a),y.push(n)});t.forEach(y,function(n){d(n,c,l,a);lt(n,a);k(n,o);s.validateOnMerge===!0&&n.$tracker.validate()});t.forEach(p,function(n){ot(n.o,n.n);k(n.o,o)});t.forEach(v,function(i){var r=t.indexOf(n,i.o);r>=0&&(n[r]=i.n);st(i.o,i.n,c,l,a)})}function b(n,i){if(!i.isInManager(n))throw t.createError(r.entityNotBeingTracked,{entity:n,manager:i});}function k(n,i){if(i===u.entityStates.Unchanged)n.$tracker.toUnchanged();else if(i===u.entityStates.Modified)n.$tracker.toModified();else if(i===u.entityStates.Added)n.$tracker.toAdded();else throw t.createError(r.mergeStateError,[i],{entity:n,state:i});}function ot(n,i){var r=i.$tracker;t.forEach(r.entityType.dataProperties,function(t){n.$tracker.setValue(t.name,r.getValue(t.name))})}function d(n,i,r,u){if(i==!0||r==!0){var e=n.$tracker,o=e.entityType;t.forEach(o.navigationProperties,function(t){var f=e.getValue(t.name),o,h,s,c,l;if(t.isComplex){for(o=f.$tracker.owners,h=!1,s=0;s=0;u--)r=t[u],r&&r.$tracker&&r.$tracker.entityType.hasMetadata&&r.$tracker.manager!=i&&(f=i.getEntityByKey(r.$tracker.key,r.$tracker.entityType),f?t.splice(u,1,f):t.splice(u,1))}function st(n,i,r,u,f){var c=n.$tracker.entityType,h,s,e,o;t.forEach(c.navigationProperties,function(c){var y,p,l,a,v;c.isComplex||(h=n.$tracker,s=i.$tracker,e=h.getValue(c.name),o=s.getValue(c.name),c.isScalar?o||(r==!0?tt(i,c,null,f):r===!0&&c.inverse&&c.inverse.isScalar||u===!0&&c.inverse&&!c.inverse.isScalar||(y=h.foreignKey(c),p=s.foreignKey(c),y==p&&e!=null&&f.isInManager(e)&&(l=c.inverse,l?l.isScalar?e.$tracker.setValue(l.name,i):(a=e.$tracker.getValue(l.name),v=t.indexOf(a,n),v>=0&&a.splice(v,1,i)):s.setValue(c.name,e)))):u?it(i,c,o,f):r===!0&&c.inverse||t.forEach(e,function(n){f.isInManager(n)&&!t.findInArray(o,n)&&o.push(n)}))})}function tt(n,t,i,r){var f=n.$tracker,u=f.foreignKey(t);i?u!=i.$tracker.key&&setForeignKeys(n,t,i):u&&f.setValue(t.name,r.entities.getEntityByKey(u,t.entityType))}function it(n,i,r,u){var f=u.entities.getRelations(n,i);f&&t.forEach(f,function(n){t.findInArray(r,n)||r.push(n)})}function rt(n,i){var r=n.$tracker,u=r.entityType,f=i?new e.valueNotifyWrapper(null):null;u.hasMetadata&&t.forEach(u.navigationProperties,function(n){n.isScalar?r.setValue(n.name,f):r.getValue(n.name).splice(0)})}function ht(n,i,r){t.forEach(n,function(n){n.$tracker.entityState==u.entityStates.Deleted?(n.$tracker.toDetached(),ut(n,r),i.remove(n)):n.$tracker.toUnchanged()})}function ct(n,i,r){if(i.removed.length>0)for(var u=i.removed.length-1;u>=0;u--)r.validationErrors.splice(t.indexOf(r.validationErrors,i.removed[u]),1);i.added.length>0&&r.validationErrors.push.apply(r.validationErrors,i.added);(i.removed.length>0||i.added.length>0)&&r.validationErrorsChanged.notify({errors:r.validationErrors,added:i.added,removed:i.removed})}function lt(n,t){n.$tracker.entityStateChanged.subscribe(function(n){var i=t.pendingChangeCount;n.newChanged===!0?t.pendingChangeCount++:n.newUnchanged===!0&&t.pendingChangeCount--;t.entityStateChanged.notify(n);i==0&&t.pendingChangeCount>0?t.hasChangesChanged.notify({hasChanges:!0}):i>0&&t.pendingChangeCount==0&&t.hasChangesChanged.notify({hasChanges:!1})});n.$tracker.validationErrorsChanged.subscribe(function(i){ct(n,i,t)})}function ut(n,i){n.$tracker.entityStateChanged.unsubscribe(i.entityStateChanged.notify);n.$tracker.validationErrorsChanged.unsubscribe(i.validationErrorsChanged.notify);var r=t.filterArray(i.validationErrors,function(t){return t.entity==n});t.removeFromArray(i.validationErrors,n,"entity");i.validationErrorsChanged.notify({errors:i.validationErrors,removed:r,added:[]})}function at(n,t,i){var r={manager:n,query:t,options:i};return n.queryExecuting.notify(r),a.queryExecuting.notify(r),r}function ft(n,t,i,r){var u={manager:n,query:t,options:i,result:r};return n.queryExecuted.notify(u),a.queryExecuted.notify(u),u.result}function vt(n,t,i){var r={manager:n,changes:t,options:i};return n.saving.notify(r),a.saving.notify(r),r.options}function yt(n,t,i){var r={manager:n,changes:t,options:i};n.saved.notify(r);a.saved.notify(r)}function l(n,t,i,r){n&&n(r);t&&t.resolve(i,r)}function h(n,t,i,r,u){if(n&&n(r),t&&t.reject(i,r),r.manager=u,!n&&!t)throw new r;}var y=function(){et(arguments,this)},n=y.prototype;return n.toString=function(){return this.dataService.toString()+", "+r.pendingChanges+": "+this.pendingChangeCount+", "+r.validationErrors+": "+this.validationErrors.length},n.getEntityType=function(n){return this.dataService.getEntityType(n)},n.createQuery=function(n,t){return this.dataService.createQuery(n,t,this)},n.createEntityQuery=function(n,t){return this.dataService.createEntityQuery(n,t,this)},n.registerCtor=function(n,t,i){this.dataService.registerCtor(n,t,i)},n.createEntity=function(n,t){var i=this.dataService.createEntity(n,t),r=[i];return o(r,null,u.mergeStrategy.ThrowError,u.entityStates.Added,this),i},n.createDetachedEntity=function(n,t){return this.dataService.createEntity(n,t)},n.createRawEntity=function(n,t){return this.dataService.createRawEntity(n,t)},n.createEntityAsync=function(n,t,i,r,u){return p(n,t,i,r,u,this)},n.createRawEntityAsync=function(n,t,i,r,u){return i?i.makeObservable=!1:i={makeObservable:!1},p(n,t,i,r,u,this)},n.executeQuery=function(n,i,e,c){var k,a,p,d,g,b;n.options&&(i=t.combine(n.options,i));k=at(this,n,i);n=k.query;i=k.options;a=i&&i.async==!1?null:s.getPromiseProvider();p=null;a&&(p=a.deferred());var y=u.mergeStrategy.Preserve,v=u.executionStrategy.Server,w=null,nt,tt;if(f.isEnum(i,u.mergeStrategy)?(y=i,i={makeObservable:y!=u.mergeStrategy.NoTrackingRaw}):f.isEnum(i,u.executionStrategy)?v=i:i&&(i.merge&&(y=i.merge),i.execution&&(v=i.execution),i.autoFixScalar!=null&&(nt=i.autoFixScalar),i.autoFixPlural!=null&&(tt=i.autoFixPlural),i.makeObservable=y!=u.mergeStrategy.NoTrackingRaw),d=y==u.mergeStrategy.NoTracking||y==u.mergeStrategy.NoTrackingRaw,d&&v==u.executionStrategy.Both)throw t.createError(r.executionBothNotAllowedForNoTracking,{executionStrategy:v,mergeStrategy:y});return((v==u.executionStrategy.Local||v==u.executionStrategy.LocalIfEmptyServer)&&(w=this.executeQueryLocally(n)),g=null,v==u.executionStrategy.Local||v==u.executionStrategy.LocalIfEmptyServer&&w&&(w.length==null||w.length>0)?(w=ft(this,n,i,w),l(e,a,p,w)):(b=this,this.dataService.executeQuery(n,i,function(t,r,s,w){try{var k=!1;t&&(d||(f.isArray(t)||(t=[t],k=!0),o(t,r,y,u.entityStates.Unchanged,b,nt,tt),k&&(t=t[0])));v==u.executionStrategy.Both&&(t=b.executeQueryLocally(n),s&&(s+=t.$addedCount-t.$deletedCount));t&&(n.inlineCountEnabled&&s!=null&&(t.$inlineCount=s),w&&(t.$extra=w));t=ft(b,n,i,t);l(e,a,p,t);a||(g=t)}catch(it){h(c,a,p,it,b)}},function(t){t.query=n;h(c,a,p,t,b)})),a)?a.getPromise(p):g},n.executeQueryLocally=function(n,i){var o=n.entityType,s,e,l;if(o)if(e=this.entities.findEntitySet(o),e)s=e.getEntities();else return[];else throw t.createError(r.typeRequiredForLocalQueries);var f=[],h=0,c=0;return t.forEach(s,function(n){n.$tracker.entityState==u.entityStates.Added?(h++,f.push(n)):n.$tracker.entityState==u.entityStates.Deleted?c++:f.push(n)}),l=n.toFunction(),f=l(f,i),f.$addedCount=h,f.$deletedCount=c,f},n.getEntityByKey=function(n,t){var i=f.isInstanceOf(t,c.entityType)?t:this.getEntityType(t,!0);return this.entities.getEntityByKey(n,i)},n.deleteEntity=function(n){var i,f,e;for(b(n,this),i=this,f=[],t.forEach(n.$tracker.entityType.navigationProperties,function(u){var e,o;if(u.cascadeDelete){if(u.inverse&&u.inverse.cascadeDelete)throw t.createError(r.twoEndCascadeDeleteNotAllowed,{entity:n,property:u});e=n.$tracker.getValue(u.name);e&&(u.isScalar?u.foreignKeys!=null&&u.foreignKeys.length>0?f.push(e):i.deleteEntity(e):(o=t.filterArray(e,function(){return!0}),t.forEach(o,function(n){i.deleteEntity(n)})))}}),n.$tracker.entityState===u.entityStates.Added?this.detachEntity(n):(rt(n,!0),n.$tracker.toDeleted()),e=0;e0)throw t.createError(r.cannotDetachComplexTypeWithOwners);b(n,this);rt(n,!0);ut(n,this);n.$tracker.toDetached();n.$tracker.manager=null;this.entities.remove(n)},n.createSavePackage=function(n,t){var f=t&&t.userData||null,i=t&&t.forceUpdate,r,u;return i==null&&(i=s.forceUpdate),r={userData:f,forceUpdate:i},u=this.exportEntities(n||this.getChanges(),t),r.entities=u,r},n.rejectChanges=function(n,i){var e=this,r;f.isArray(n)||(n=[n]);r=i===!0?this.flatEntities(n):n;t.forEach(r,function(n){var t=n.$tracker;t.entityState==u.entityStates.Added?e.detachEntity(n):t.entityState==u.entityStates.Modified&&(t.undoChanges(),t.toUnchanged())})},n.undoChanges=function(n,i){f.isArray(n)||(n=[n]);var r=i===!0?this.flatEntities(n):n;t.forEach(r,function(n){n.$tracker.undoChanges()})},n.acceptChanges=function(n,i){f.isArray(n)||(n=[n]);var r=i===!0?this.flatEntities(n):n;t.forEach(r,function(n){n.$tracker.acceptChanges()})},n.exportEntities=function(n,i){var e=[],r,f;return n=n||this.entities.getEntities(),r=i&&i.forceUpdate,r==null&&(r=s.forceUpdate),f=i&&i.minimizePackage,f==null&&(f=s.minimizePackage),t.forEach(n,function(n,i){var o=n.$tracker,a=o.entityType,h=o.entityState,c,s,l;if(r===!1&&(r=o.forceUpdate),c={},f===!0)if(h==u.entityStates.Modified)if(o.originalValues.length>0)s={},t.forEach(o.originalValues,function(t){var f,r=t.p.split("."),e,u,i;if(r.length>1){for(e=0;e0},n.getChanges=function(){return this.entities.getChanges()},n.saveChanges=function(n,i,e){var c=n&&n.entities||this.getChanges(),a,v,p,w,y;n=vt(this,c,n);a=n&&n.async==!1?null:s.getPromiseProvider();v=null;a&&(v=a.deferred());var b=n&&n.autoFixScalar,k=n&&n.autoFixPlural,d=null;return(f.isArray(c)||(c=[c]),c&&c.length>0?(p=[],s.validateOnSave===!0&&t.forEach(c,function(n){if(n.$tracker.entityState!=u.entityStates.Deleted){var t=n.$tracker.validate();t&&t.length>0&&p.push({entity:n,validationErrors:t})}}),p.length>0?(w=new t.createError(r.validationFailed,{entities:c,validationErrors:p}),w.entitiesInError=p,h(e,a,v,w,this)):(y=this,this.dataService.saveChanges(this.createSavePackage(c,n),n,function(r){try{r.GeneratedEntities!=null&&r.GeneratedEntities.length>0&&o(r.GeneratedEntities,null,u.mergeStrategy.Preserve,u.entityStates.Unchanged,y,b,k);r.GeneratedValues&&t.forEach(r.GeneratedValues,function(n){var r=c[n.Index],f,t=n.Property.split("."),i,s,e;if(t.length>1){for(i=0;i",function(n,t){return n()>t()},"gt")),i.push(new n("Lesser","<",function(n,t){return n()=",function(n,t){var i=n(),r=t();return i==r||i>r},"ge")),i.push(new n("LesserEqual","<=",function(n,t){var i=n(),r=t();return i==r||i>",function(n,t){return n()>>t()})),n.find=function(n){var r=t.filterArray(i,function(t){return t.code==n||t.oData==n||t.js==n});return r.length>0?r[0]:null},n}(),filterOps:new h.enums({Equals:{oData:"eq",code:"=="},NotEqual:{oData:"ne",code:"!="},Greater:{oData:"gt",code:">"},Lesser:{oData:"lt",code:"<"},GreaterEqual:{oData:"ge",code:">="},LesserEqual:{oData:"le",code:"<="},Contains:{oData:"substringof",code:"contains",isFunc:!0},StartsWith:{oData:"startswith",code:"startswith",isFunc:!0},EndsWith:{oData:"endswith",code:"endswith",isFunc:!0}}),mergeStrategy:new h.enums("Preserve","Overwrite","ThrowError","NoTracking","NoTrackingRaw"),executionStrategy:new h.enums("Server","Local","Both","LocalIfEmptyServer"),generationPattern:new h.enums("Identity","Computed"),arraySetBehaviour:new h.enums("NotAllowed","Replace","Append")}}(),a=function(){return{queryExecuting:new e.event("beetleQueryExecuting",this),queryExecuted:new e.event("beetleQueryExecuted",this),saving:new e.event("beetleSaving",this),saved:new e.event("beetleSaved",this),info:new e.event("beetleInfo",this),warning:new e.event("beetleWarning",this),error:new e.event("beetleError",this)}}(),s=function(){var s,o;s=n.ko?l.koObservableProviderInstance:n.Backbone?l.backboneObservableProviderInstance:l.propertyObservableProviderInstance;n.Q?o=l.qPromiseProviderInstance:n.jQuery&&(o=l.jQueryPromiseProviderInstance);var h=u.arraySetBehaviour.NotAllowed,c=l.defaultDateConverterInstance,a,e={};return e.autoFixScalar=!0,e.autoFixPlural=!1,e.validateOnMerge=!0,e.validateOnSave=!0,e.liveValidate=!0,e.handleUnmappedProperties=!0,e.isCaseSensitive=!1,e.ignoreWhiteSpaces=!1,e.forceUpdate=!1,e.workAsync=!0,e.ajaxTimeout=null,e.minimizePackage=!1,e.getObservableProvider=function(){return s},e.setObservableProvider=function(n){var h,e,o;if(f.isInstanceOf(n,i.observableProviderBase))s=n;else{if(f.isNotEmptyString(n))for(h=u.observableProviders.symbols(),e=0;e p.Name.",functionNotSupportedForOData:"OData does not support %0 function, please use Beetle Query Strings (like: manager.executeQuery(query, {useBeetleQueryStrings: true}))",instanceError:"%0 is not an instance of %1.",invalidArguments:"Invalid arguments.",invalidDefaultValue:"%0 is not a valid default value for %0.",invalidEnumValue:"Invalid enum value, %0 cannot be found in %1.",invalidExpression:"%0 can only have %1 type expressions.",invalidPropertyAlias:"Invalid property alias.",invalidStatement:"Invalid statement.",invalidValue:"Invalid value for %0 property.",managerInvalidArgs:"Invalid arguments. Valid args are: {DataService} or {Uri, [MetadataManager]} or {Uri, [metadataString (string)]} or {Uri, [doNotUseMetadata (bool)]}.",maxLenError:"%0 property length cannot exceed %1.",maxPrecisionError:"Value %0 exceeded maximum precision of %1.",mergeStateError:"Cannot merge entities with %0 state.",minLenError:"%0 property length must be greater than %1.",noMetadataEntityQuery:"Cannot create entity query when no metadata is available.",noMetadataRegisterCtor:"Cannot register constructor when no metadata is available.",noOpenGroup:"Could not find any open group.",notFoundInMetadata:"Could not find %0 in metadata.",notImplemented:"%0 %1 is not implemented.",notNullable:"Cannot set %0 with null, property is not nullable.",oDataNotSupportMultiTyped:"Multi-Typed queries cannot be used for OData services.",onlyManagerCreatedCanBeExecuted:"Only queries which are created from a manager can be directly executed.",onlyManagerCreatedCanAcceptEntityShortName:"Only queries which are created from a manager can accept entity type short name parameter.",pendingChanges:"Pending changes",pluralNeedsInverse:"To load plural relations, navigation property must have inverse.",projectionsMustHaveAlias:"All projected values must have a property name or alias.",propertyNotFound:"Could not find property: %0.",queryClosed:"Query is closed, expression cannot be added. Queries must be executed after some expressions like first, single, any, all etc..",rangeError:"%0 property value must be between %1 and %2.",requiredError:"%0 property is required.",sameKeyExists:"There is already an entity with same key in the manager.",sameKeyOnDifferentTypesError:"Two different types of entities cannot have same keys when they are from same inheritance root (%0, %1).",settingArrayNotAllowed:"Setting array property is not allowed, you may change this via beetle.settings.setArraySetBehaviour(behavior).",stringLengthError:"%0 property length must be between %1 and %2.",twoEndCascadeDeleteNotAllowed:"Two-end cascade deletes are not supported.",typeError:"%0 type is not %1.",typeMismatch:"%0 value type mismatch. expected type: %1, given type: %2, value: %3",typeRequiredForLocalQueries:'To execute queries locally, entity type must be provided (createQuery("Entities", "Entity") or createEntityQuery("Entity")).',unclosedQuote:'Unclosed quote in "%0".',unclosedToken:'Unclosed "%0".',unexpectedProperty:'Unexpected property "%0".',unexpectedToken:"Unexpected %0.",unknownDataType:"Unknown data type: %0.",unknownExpression:"Unknown expression.",unknownFunction:"Unknown function: %0.",unknownParameter:"Unknown parameter: %0.",unknownValidator:"Unknown validator type: %0.",unsoppertedState:"Unsupported entity state: %0.",validationErrors:"Validation errors",validationFailed:"Validation failed.",valueCannotBeNull:"Value cannot be null: %0.",operatorNotSupportedForOData:"Operator is not supported for OData: %0."}),n.beetleI18N}(),y=function(){return{version:"1.0",i18N:r,helper:t,assert:f,libs:h,baseTypes:i,impls:l,metadata:c,querying:o,core:e,services:v,enums:u,events:a,settings:s,MetadataManager:c.metadataManager,entityManager:e.entityManager,EntityManager:e.entityManager,WebApiService:v.webApiService,MvcService:v.mvcService,EntityStates:u.entityStates,FilterOps:u.filterOps,MergeStrategy:u.mergeStrategy}}();return t.tryFreeze(y),n.beetle=y,y})(window); /* //# sourceMappingURL=beetle.min.js.map */ \ No newline at end of file