@vuu-ui/vuu-filter-parser 0.8.22 → 0.8.23

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/cjs/index.js CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";var Q=Object.defineProperty;var C=Object.getOwnPropertyDescriptor;var h=Object.getOwnPropertyNames;var f=Object.prototype.hasOwnProperty;var T=(t,e)=>{for(var n in e)Q(t,n,{get:e[n],enumerable:!0})},b=(t,e,n,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of h(e))!f.call(t,s)&&s!==n&&Q(t,s,{get:()=>e[s],enumerable:!(r=C(e,s))||r.enumerable});return t};var V=t=>b(Q({},"__esModule",{value:!0}),t);var d=(t,e,n)=>{if(!e.has(t))throw TypeError("Cannot "+n)};var a=(t,e,n)=>(d(t,e,"read from private field"),n?n.call(t):e.get(t)),g=(t,e,n)=>{if(e.has(t))throw TypeError("Cannot add the same private member more than once");e instanceof WeakSet?e.add(t):e.set(t,n)},m=(t,e,n,r)=>(d(t,e,"write to private field"),r?r.call(t,n):e.set(t,n),n);var Z={};T(Z,{filterPredicate:()=>p,getFilterPredicate:()=>U,parseFilter:()=>c,parser:()=>u,walkTree:()=>P});module.exports=V(Z);var F=require("@lezer/lr"),u=F.LRParser.deserialize({version:14,states:"%QOVQPOOOOQO'#C_'#C_O_QQO'#C^OOQO'#DO'#DOOvQQO'#C|OOQO'#DR'#DROVQPO'#CuOOQO'#C}'#C}QOQPOOOOQO'#C`'#C`O!UQQO,58xO!dQPO,59VOVQPO,59]OVQPO,59_O!iQPO,59hO!nQQO,59aOOQO'#DQ'#DQOOQO1G.d1G.dO!UQQO1G.qO!yQQO1G.wOOQO1G.y1G.yOOQO'#Cw'#CwOOQO1G/S1G/SOOQO1G.{1G.{O#[QPO'#CnO#dQPO7+$]O!UQQO'#CxO#iQPO,59YOOQO<<Gw<<GwOOQO,59d,59dOOQO-E6v-E6v",stateData:"#q~OoOS~OsPOvUO~OTXOUXOVXOWXOXXOYXO`ZO~Of[Oh]Oj^OmpX~OZ`O[`O]`O^`O~OabO~OseO~Of[Oh]OwgO~Oh]Ofeijeimeiwei~OcjOdbX~OdlO~OcjOdba~O",goto:"#YvPPw}!TPPPPPPPPPPwPP!WPP!ZP!ZP!aP!g!jPPP!p!s!aP#P!aXROU[]XQOU[]RYQRibXTOU[]XVOU[]Rf^QkhRnkRWOQSOQ_UQc[Rd]QaYQhbRmj",nodeNames:"\u26A0 Filter ColumnValueExpression Column Operator Eq NotEq Gt Lt Starts Ends Number String True False ColumnSetExpression In LBrack Values Comma RBrack AndExpression And OrExpression Or ParenthesizedExpression As FilterName",maxTerm:39,skippedNodes:[0],repeatNodeCount:1,tokenData:"6p~RnXY#PYZ#P]^#Ppq#Pqr#brs#mxy$eyz$j|}$o!O!P$t!Q![%S!^!_%_!_!`%d!`!a%i!c!}%n!}#O&V#P#Q&[#R#S%n#T#U&a#U#X%n#X#Y(w#Y#Z+]#Z#]%n#]#^.]#^#c%n#c#d/e#d#g%n#g#h0m#h#i4[#i#o%n~#USo~XY#PYZ#P]^#Ppq#P~#eP!_!`#h~#mOU~~#pWOX#mZ]#m^r#mrs$Ys#O#m#P;'S#m;'S;=`$_<%lO#m~$_O[~~$bP;=`<%l#m~$jOv~~$oOw~~$tOc~~$wP!Q![$z~%PPZ~!Q![$z~%XQZ~!O!P$t!Q![%S~%dOW~~%iOT~~%nOV~P%sUsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#o%n~&[Oa~~&aOd~R&fYsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#b%n#b#c'U#c#g%n#g#h(^#h#o%nR'ZWsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#W%n#W#X's#X#o%nR'zUfQsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#o%nR(eUjQsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#o%nR(|WsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#b%n#b#c)f#c#o%nR)kWsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#W%n#W#X*T#X#o%nR*YWsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#g%n#g#h*r#h#o%nR*yUYQsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#o%nR+bVsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#U+w#U#o%nR+|WsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#`%n#`#a,f#a#o%nR,kWsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#g%n#g#h-T#h#o%nR-YWsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#X%n#X#Y-r#Y#o%nR-yU^QsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#o%nR.bWsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#b%n#b#c.z#c#o%nR/RU`QsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#o%nR/jWsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#f%n#f#g0S#g#o%nR0ZUhQsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#o%nR0rWsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#h%n#h#i1[#i#o%nR1aVsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#U1v#U#o%nR1{WsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#f%n#f#g2e#g#o%nR2jWsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#h%n#h#i3S#i#o%nR3XWsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#g%n#g#h3q#h#o%nR3xUXQsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#o%nR4aWsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#f%n#f#g4y#g#o%nR5OWsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#i%n#i#j5h#j#o%nR5mWsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#X%n#X#Y6V#Y#o%nR6^U]QsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#o%n",tokenizers:[0,1],topRules:{Filter:[0,1]},tokenPrec:0});var i=require("@vuu-ui/vuu-utils");var O,R=class{constructor(){g(this,O,void 0)}setFilterCombinatorOp(e,n=a(this,O)){(0,i.isMultiClauseFilter)(n)&&n.op===e||m(this,O,{op:e,filters:[a(this,O)]})}add(e){if(a(this,O)===void 0)m(this,O,e);else if((0,i.isMultiClauseFilter)(a(this,O)))a(this,O).filters.push(e);else throw Error("Invalid filter passed to FilterExpression")}setColumn(e,n=a(this,O)){if((0,i.isMultiClauseFilter)(n)){let r=n.filters.at(-1);r&&this.setColumn(e,r)}else n&&(n.column=e)}setOp(e,n=a(this,O)){if((0,i.isMultiClauseFilter)(n)){let r=n.filters.at(-1);r&&this.setOp(e,r)}else n&&(n.op=e)}setValue(e,n=a(this,O)){var r;if((0,i.isMultiClauseFilter)(n)){let s=n.filters.at(-1);s&&this.setValue(e,s)}else(0,i.isMultiValueFilter)(n)?((r=n.values)!=null||(n.values=[]),n.values.push(e)):(0,i.isSingleValueFilter)(n)&&(n.value=e)}toJSON(e=a(this,O)){return this.name?{...e,name:this.name}:e}};O=new WeakMap;var P=(t,e)=>{let n=new R,r=t.cursor();do{let{name:s,from:o,to:l}=r;switch(s){case"ColumnValueExpression":n.add({});break;case"ColumnSetExpression":n.add({op:"in"});break;case"Or":case"And":n.setFilterCombinatorOp(e.substring(o,l));break;case"Column":n.setColumn(e.substring(o,l));break;case"Operator":n.setOp(e.substring(o,l));break;case"String":n.setValue(e.substring(o+1,l-1));break;case"Number":n.setValue(parseFloat(e.substring(o,l)));break;case"True":n.setValue(!0);break;case"False":n.setValue(!1);break;case"FilterName":n.name=e.substring(o,l);break;default:}}while(r.next());return n.toJSON()};var w=u.configure({strict:!0}),c=t=>{let e=w.parse(t);return P(e,t)};var S=new Map,X=()=>!1,U=(t,e)=>{let n=S.get(e);if(n)return n;try{let r=c(e);return n=p(t,r),S.set(e,n),n}catch{return console.warn(`filter-evaluation-utils, failed to parse filter "${e}"`),X}};function p(t,e){switch(e.op){case"in":return W(t,e);case"=":return x(t,e);case">":return k(t,e);case">=":return v(t,e);case"<":return Y(t,e);case"<=":return E(t,e);case"starts":return $(t,e);case"and":return G(t,e);case"or":return j(t,e);default:return console.log(`unrecognized filter type ${e.op}`),()=>!0}}var W=(t,e)=>n=>e.values.indexOf(n[t[e.column]])!==-1,x=(t,e)=>n=>n[t[e.column]]===e.value,k=(t,e)=>n=>n[t[e.column]]>e.value,v=(t,e)=>n=>n[t[e.column]]>=e.value,Y=(t,e)=>n=>n[t[e.column]]<e.value,E=(t,e)=>n=>n[t[e.column]]<=e.value,$=(t,e)=>{let n=e.value;if(typeof n!="string")throw Error("string filter applied to value of wrong type");return r=>{let s=r[t[e.column]];if(typeof s!="string")throw Error("string filter applied to value of wrong type");return s.toLowerCase().startsWith(n.toLowerCase())}},G=(t,e)=>{let n=e.filters.map(r=>p(t,r));return r=>n.every(s=>s(r))};function j(t,e){let n=e.filters.map(r=>p(t,r));return r=>n.some(s=>s(r))}
1
+ "use strict";var Q=Object.defineProperty;var C=Object.getOwnPropertyDescriptor;var f=Object.getOwnPropertyNames;var h=Object.prototype.hasOwnProperty;var T=(t,e)=>{for(var n in e)Q(t,n,{get:e[n],enumerable:!0})},b=(t,e,n,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of f(e))!h.call(t,s)&&s!==n&&Q(t,s,{get:()=>e[s],enumerable:!(r=C(e,s))||r.enumerable});return t};var w=t=>b(Q({},"__esModule",{value:!0}),t);var R=(t,e,n)=>{if(!e.has(t))throw TypeError("Cannot "+n)};var O=(t,e,n)=>(R(t,e,"read from private field"),n?n.call(t):e.get(t)),g=(t,e,n)=>{if(e.has(t))throw TypeError("Cannot add the same private member more than once");e instanceof WeakSet?e.add(t):e.set(t,n)},m=(t,e,n,r)=>(R(t,e,"write to private field"),r?r.call(t,n):e.set(t,n),n);var Z={};T(Z,{filterPredicate:()=>p,getFilterPredicate:()=>X,parseFilter:()=>c,parser:()=>u,walkTree:()=>P});module.exports=w(Z);var F=require("@lezer/lr"),u=F.LRParser.deserialize({version:14,states:"%QOVQPOOOOQO'#C_'#C_O_QQO'#C^OOQO'#DO'#DOOvQQO'#C|OOQO'#DR'#DROVQPO'#CuOOQO'#C}'#C}QOQPOOOOQO'#C`'#C`O!UQQO,58xO!dQPO,59VOVQPO,59]OVQPO,59_O!iQPO,59hO!nQQO,59aOOQO'#DQ'#DQOOQO1G.d1G.dO!UQQO1G.qO!yQQO1G.wOOQO1G.y1G.yOOQO'#Cw'#CwOOQO1G/S1G/SOOQO1G.{1G.{O#[QPO'#CnO#dQPO7+$]O!UQQO'#CxO#iQPO,59YOOQO<<Gw<<GwOOQO,59d,59dOOQO-E6v-E6v",stateData:"#q~OoOS~OsPOvUO~OTXOUXOVXOWXOXXOYXO`ZO~Of[Oh]Oj^OmpX~OZ`O[`O]`O^`O~OabO~OseO~Of[Oh]OwgO~Oh]Ofeijeimeiwei~OcjOdbX~OdlO~OcjOdba~O",goto:"#YvPPw}!TPPPPPPPPPPwPP!WPP!ZP!ZP!aP!g!jPPP!p!s!aP#P!aXROU[]XQOU[]RYQRibXTOU[]XVOU[]Rf^QkhRnkRWOQSOQ_UQc[Rd]QaYQhbRmj",nodeNames:"\u26A0 Filter ColumnValueExpression Column Operator Eq NotEq Gt Lt Starts Ends Number String True False ColumnSetExpression In LBrack Values Comma RBrack AndExpression And OrExpression Or ParenthesizedExpression As FilterName",maxTerm:39,skippedNodes:[0],repeatNodeCount:1,tokenData:"6p~RnXY#PYZ#P]^#Ppq#Pqr#brs#mxy$eyz$j|}$o!O!P$t!Q![%S!^!_%_!_!`%d!`!a%i!c!}%n!}#O&V#P#Q&[#R#S%n#T#U&a#U#X%n#X#Y(w#Y#Z+]#Z#]%n#]#^.]#^#c%n#c#d/e#d#g%n#g#h0m#h#i4[#i#o%n~#USo~XY#PYZ#P]^#Ppq#P~#eP!_!`#h~#mOU~~#pWOX#mZ]#m^r#mrs$Ys#O#m#P;'S#m;'S;=`$_<%lO#m~$_O[~~$bP;=`<%l#m~$jOv~~$oOw~~$tOc~~$wP!Q![$z~%PPZ~!Q![$z~%XQZ~!O!P$t!Q![%S~%dOW~~%iOT~~%nOV~P%sUsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#o%n~&[Oa~~&aOd~R&fYsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#b%n#b#c'U#c#g%n#g#h(^#h#o%nR'ZWsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#W%n#W#X's#X#o%nR'zUfQsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#o%nR(eUjQsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#o%nR(|WsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#b%n#b#c)f#c#o%nR)kWsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#W%n#W#X*T#X#o%nR*YWsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#g%n#g#h*r#h#o%nR*yUYQsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#o%nR+bVsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#U+w#U#o%nR+|WsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#`%n#`#a,f#a#o%nR,kWsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#g%n#g#h-T#h#o%nR-YWsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#X%n#X#Y-r#Y#o%nR-yU^QsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#o%nR.bWsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#b%n#b#c.z#c#o%nR/RU`QsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#o%nR/jWsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#f%n#f#g0S#g#o%nR0ZUhQsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#o%nR0rWsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#h%n#h#i1[#i#o%nR1aVsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#U1v#U#o%nR1{WsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#f%n#f#g2e#g#o%nR2jWsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#h%n#h#i3S#i#o%nR3XWsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#g%n#g#h3q#h#o%nR3xUXQsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#o%nR4aWsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#f%n#f#g4y#g#o%nR5OWsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#i%n#i#j5h#j#o%nR5mWsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#X%n#X#Y6V#Y#o%nR6^U]QsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#o%n",tokenizers:[0,1],topRules:{Filter:[0,1]},tokenPrec:0});var o=require("@vuu-ui/vuu-utils");var a,d=class{constructor(){g(this,a,void 0)}setFilterCombinatorOp(e,n=O(this,a)){(0,o.isMultiClauseFilter)(n)&&n.op===e||m(this,a,{op:e,filters:[O(this,a)]})}add(e){if(O(this,a)===void 0)m(this,a,e);else if((0,o.isMultiClauseFilter)(O(this,a)))O(this,a).filters.push(e);else throw Error("Invalid filter passed to FilterExpression")}setColumn(e,n=O(this,a)){if((0,o.isMultiClauseFilter)(n)){let r=n.filters.at(-1);r&&this.setColumn(e,r)}else n&&(n.column=e)}setOp(e,n=O(this,a)){if((0,o.isMultiClauseFilter)(n)){let r=n.filters.at(-1);r&&this.setOp(e,r)}else n&&(n.op=e)}setValue(e,n=O(this,a)){var r;if((0,o.isMultiClauseFilter)(n)){let s=n.filters.at(-1);s&&this.setValue(e,s)}else(0,o.isMultiValueFilter)(n)?((r=n.values)!=null||(n.values=[]),n.values.push(e)):(0,o.isSingleValueFilter)(n)&&(n.value=e)}toJSON(e=O(this,a)){return this.name?{...e,name:this.name}:e}};a=new WeakMap;var P=(t,e)=>{let n=new d,r=t.cursor();do{let{name:s,from:i,to:l}=r;switch(s){case"ColumnValueExpression":n.add({});break;case"ColumnSetExpression":n.add({op:"in"});break;case"Or":case"And":n.setFilterCombinatorOp(e.substring(i,l));break;case"Column":n.setColumn(e.substring(i,l));break;case"Operator":n.setOp(e.substring(i,l));break;case"String":n.setValue(e.substring(i+1,l-1));break;case"Number":n.setValue(parseFloat(e.substring(i,l)));break;case"True":n.setValue(!0);break;case"False":n.setValue(!1);break;case"FilterName":n.name=e.substring(i,l);break;default:}}while(r.next());return n.toJSON()};var V=u.configure({strict:!0}),c=t=>{let e=V.parse(t);return P(e,t)};var S=new Map,W=()=>!1,X=(t,e)=>{let n=S.get(e);if(n)return n;try{let r=c(e);return n=p(t,r),S.set(e,n),n}catch{return console.warn(`filter-evaluation-utils, failed to parse filter "${e}"`),W}};function p(t,e){switch(e.op){case"in":return U(t,e);case"=":return x(t,e);case">":return k(t,e);case">=":return v(t,e);case"<":return E(t,e);case"<=":return Y(t,e);case"ends":return $(t,e);case"starts":return y(t,e);case"and":return G(t,e);case"or":return j(t,e);default:return console.log(`unrecognized filter type ${e.op}`),()=>!0}}var U=(t,e)=>n=>e.values.indexOf(n[t[e.column]])!==-1,x=(t,e)=>n=>n[t[e.column]]===e.value,k=(t,e)=>n=>n[t[e.column]]>e.value,v=(t,e)=>n=>n[t[e.column]]>=e.value,E=(t,e)=>n=>n[t[e.column]]<e.value,Y=(t,e)=>n=>n[t[e.column]]<=e.value,$=(t,e)=>{let n=e.value;if(typeof n!="string")throw Error("string filter applied to value of wrong type");return r=>{let s=r[t[e.column]];if(typeof s!="string")throw Error("string filter applied to value of wrong type");return s.toLowerCase().endsWith(n.toLowerCase())}},y=(t,e)=>{let n=e.value;if(typeof n!="string")throw Error("string filter applied to value of wrong type");return r=>{let s=r[t[e.column]];if(typeof s!="string")throw Error("string filter applied to value of wrong type");return s.toLowerCase().startsWith(n.toLowerCase())}},G=(t,e)=>{let n=e.filters.map(r=>p(t,r));return r=>n.every(s=>s(r))};function j(t,e){let n=e.filters.map(r=>p(t,r));return r=>n.some(s=>s(r))}
2
2
  //# sourceMappingURL=index.js.map
package/cjs/index.js.map CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../packages/vuu-filter-parser/src/index.ts", "../../../packages/vuu-filter-parser/src/generated/filter-parser.js", "../../../packages/vuu-filter-parser/src/FilterTreeWalker.ts", "../../../packages/vuu-filter-parser/src/FilterParser.ts", "../../../packages/vuu-filter-parser/src/filter-evaluation-utils.ts"],
4
- "sourcesContent": ["export { parseFilter } from \"./FilterParser\";\nexport { parser } from \"./generated/filter-parser\";\nexport { walkTree } from \"./FilterTreeWalker\";\nexport * from \"./filter-evaluation-utils\";\n", "// This file was generated by lezer-generator. You probably shouldn't edit it.\nimport { LRParser } from \"@lezer/lr\";\nexport const parser = LRParser.deserialize({\n version: 14,\n states: \"%QOVQPOOOOQO'#C_'#C_O_QQO'#C^OOQO'#DO'#DOOvQQO'#C|OOQO'#DR'#DROVQPO'#CuOOQO'#C}'#C}QOQPOOOOQO'#C`'#C`O!UQQO,58xO!dQPO,59VOVQPO,59]OVQPO,59_O!iQPO,59hO!nQQO,59aOOQO'#DQ'#DQOOQO1G.d1G.dO!UQQO1G.qO!yQQO1G.wOOQO1G.y1G.yOOQO'#Cw'#CwOOQO1G/S1G/SOOQO1G.{1G.{O#[QPO'#CnO#dQPO7+$]O!UQQO'#CxO#iQPO,59YOOQO<<Gw<<GwOOQO,59d,59dOOQO-E6v-E6v\",\n stateData: \"#q~OoOS~OsPOvUO~OTXOUXOVXOWXOXXOYXO`ZO~Of[Oh]Oj^OmpX~OZ`O[`O]`O^`O~OabO~OseO~Of[Oh]OwgO~Oh]Ofeijeimeiwei~OcjOdbX~OdlO~OcjOdba~O\",\n goto: \"#YvPPw}!TPPPPPPPPPPwPP!WPP!ZP!ZP!aP!g!jPPP!p!s!aP#P!aXROU[]XQOU[]RYQRibXTOU[]XVOU[]Rf^QkhRnkRWOQSOQ_UQc[Rd]QaYQhbRmj\",\n nodeNames: \"\u26A0 Filter ColumnValueExpression Column Operator Eq NotEq Gt Lt Starts Ends Number String True False ColumnSetExpression In LBrack Values Comma RBrack AndExpression And OrExpression Or ParenthesizedExpression As FilterName\",\n maxTerm: 39,\n skippedNodes: [0],\n repeatNodeCount: 1,\n tokenData: \"6p~RnXY#PYZ#P]^#Ppq#Pqr#brs#mxy$eyz$j|}$o!O!P$t!Q![%S!^!_%_!_!`%d!`!a%i!c!}%n!}#O&V#P#Q&[#R#S%n#T#U&a#U#X%n#X#Y(w#Y#Z+]#Z#]%n#]#^.]#^#c%n#c#d/e#d#g%n#g#h0m#h#i4[#i#o%n~#USo~XY#PYZ#P]^#Ppq#P~#eP!_!`#h~#mOU~~#pWOX#mZ]#m^r#mrs$Ys#O#m#P;'S#m;'S;=`$_<%lO#m~$_O[~~$bP;=`<%l#m~$jOv~~$oOw~~$tOc~~$wP!Q![$z~%PPZ~!Q![$z~%XQZ~!O!P$t!Q![%S~%dOW~~%iOT~~%nOV~P%sUsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#o%n~&[Oa~~&aOd~R&fYsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#b%n#b#c'U#c#g%n#g#h(^#h#o%nR'ZWsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#W%n#W#X's#X#o%nR'zUfQsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#o%nR(eUjQsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#o%nR(|WsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#b%n#b#c)f#c#o%nR)kWsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#W%n#W#X*T#X#o%nR*YWsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#g%n#g#h*r#h#o%nR*yUYQsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#o%nR+bVsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#U+w#U#o%nR+|WsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#`%n#`#a,f#a#o%nR,kWsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#g%n#g#h-T#h#o%nR-YWsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#X%n#X#Y-r#Y#o%nR-yU^QsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#o%nR.bWsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#b%n#b#c.z#c#o%nR/RU`QsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#o%nR/jWsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#f%n#f#g0S#g#o%nR0ZUhQsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#o%nR0rWsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#h%n#h#i1[#i#o%nR1aVsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#U1v#U#o%nR1{WsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#f%n#f#g2e#g#o%nR2jWsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#h%n#h#i3S#i#o%nR3XWsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#g%n#g#h3q#h#o%nR3xUXQsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#o%nR4aWsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#f%n#f#g4y#g#o%nR5OWsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#i%n#i#j5h#j#o%nR5mWsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#X%n#X#Y6V#Y#o%nR6^U]QsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#o%n\",\n tokenizers: [0, 1],\n topRules: {\"Filter\":[0,1]},\n tokenPrec: 0\n})\n", "import { Tree } from \"@lezer/common\";\nimport {\n Filter,\n FilterCombinatorOp,\n MultipleValueFilterClauseOp,\n SingleValueFilterClauseOp,\n} from \"@vuu-ui/vuu-filter-types\";\nimport {\n isMultiClauseFilter,\n isMultiValueFilter,\n isSingleValueFilter,\n} from \"@vuu-ui/vuu-utils\";\n\nclass FilterExpression {\n public name: string | undefined;\n #filter: Partial<Filter> | undefined = undefined;\n\n setFilterCombinatorOp(op: string, filter = this.#filter) {\n if (isMultiClauseFilter(filter) && filter.op === op) {\n return;\n } else {\n this.#filter = {\n op: op as FilterCombinatorOp,\n filters: [this.#filter as Filter],\n };\n }\n }\n\n add(filter: Partial<Filter>) {\n if (this.#filter === undefined) {\n this.#filter = filter;\n } else if (isMultiClauseFilter(this.#filter)) {\n this.#filter.filters.push(filter as Filter);\n } else {\n throw Error(`Invalid filter passed to FilterExpression`);\n }\n }\n\n setColumn(column: string, filter = this.#filter) {\n if (isMultiClauseFilter(filter)) {\n const target = filter.filters.at(-1);\n if (target) {\n this.setColumn(column, target);\n }\n } else if (filter) {\n filter.column = column;\n }\n }\n setOp(value: string, filter = this.#filter) {\n if (isMultiClauseFilter(filter)) {\n const target = filter.filters.at(-1);\n if (target) {\n this.setOp(value, target);\n }\n } else if (filter) {\n filter.op = value as\n | SingleValueFilterClauseOp\n | MultipleValueFilterClauseOp;\n }\n }\n setValue(value: string | number | boolean, filter = this.#filter) {\n if (isMultiClauseFilter(filter)) {\n const target = filter.filters.at(-1);\n if (target) {\n this.setValue(value, target);\n }\n } else if (isMultiValueFilter(filter)) {\n filter.values ??= [];\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n filter.values.push(value);\n } else if (isSingleValueFilter(filter)) {\n filter.value = value;\n }\n }\n\n toJSON(filter = this.#filter) {\n if (this.name) {\n return {\n ...filter,\n name: this.name,\n };\n } else {\n return filter;\n }\n }\n}\n\nexport const walkTree = (tree: Tree, source: string) => {\n const filterExpression = new FilterExpression();\n const cursor = tree.cursor();\n do {\n const { name, from, to } = cursor;\n switch (name) {\n case \"ColumnValueExpression\":\n filterExpression.add({});\n break;\n case \"ColumnSetExpression\":\n filterExpression.add({ op: \"in\" });\n break;\n\n case \"Or\":\n case \"And\":\n filterExpression.setFilterCombinatorOp(source.substring(from, to));\n break;\n\n case \"Column\":\n filterExpression.setColumn(source.substring(from, to));\n break;\n\n case \"Operator\":\n filterExpression.setOp(source.substring(from, to));\n break;\n\n case \"String\":\n filterExpression.setValue(source.substring(from + 1, to - 1));\n break;\n\n case \"Number\":\n filterExpression.setValue(parseFloat(source.substring(from, to)));\n break;\n\n case \"True\":\n filterExpression.setValue(true);\n break;\n\n case \"False\":\n filterExpression.setValue(false);\n break;\n\n case \"FilterName\":\n filterExpression.name = source.substring(from, to);\n break;\n\n default:\n }\n } while (cursor.next());\n\n return filterExpression.toJSON();\n};\n", "import { Filter } from \"@vuu-ui/vuu-filter-types\";\nimport { parser } from \"./generated/filter-parser\";\nimport { walkTree } from \"./FilterTreeWalker\";\n\nconst strictParser = parser.configure({ strict: true });\n\nexport const parseFilter = (filterQuery: string): Filter => {\n const parseTree = strictParser.parse(filterQuery);\n const filter = walkTree(parseTree, filterQuery) as Filter;\n return filter;\n};\n", "import { DataSourceRow } from \"@vuu-ui/vuu-data-types\";\nimport {\n AndFilter,\n Filter,\n MultiValueFilterClause,\n OrFilter,\n SingleValueFilterClause,\n} from \"@vuu-ui/vuu-filter-types\";\nimport { ColumnMap } from \"@vuu-ui/vuu-utils\";\nimport { parseFilter } from \"./FilterParser\";\n\nconst filterPredicateMap = new Map<string, FilterPredicate>();\nconst filterReject = () => false;\n\nexport const getFilterPredicate = (\n columnMap: ColumnMap,\n filterQuery: string\n): FilterPredicate => {\n let predicate = filterPredicateMap.get(filterQuery);\n if (predicate) {\n return predicate;\n }\n // TODO we need to clear cache if columns change. How do we identify this :\n try {\n const filter = parseFilter(filterQuery);\n predicate = filterPredicate(columnMap, filter);\n filterPredicateMap.set(filterQuery, predicate);\n return predicate;\n } catch (err) {\n console.warn(\n `filter-evaluation-utils, failed to parse filter \"${filterQuery}\"`\n );\n return filterReject;\n }\n};\n\nexport function filterPredicate(\n columnMap: ColumnMap,\n filter: Filter\n): FilterPredicate {\n //TODO convert filter to include colIdx ratherthan colName, so we don't have to pass cols\n switch (filter.op) {\n case \"in\":\n return testInclude(columnMap, filter);\n case \"=\":\n return testEQ(columnMap, filter);\n case \">\":\n return testGT(columnMap, filter);\n case \">=\":\n return testGE(columnMap, filter);\n case \"<\":\n return testLT(columnMap, filter);\n case \"<=\":\n return testLE(columnMap, filter);\n case \"starts\":\n return testSW(columnMap, filter);\n case \"and\":\n return testAND(columnMap, filter as AndFilter);\n case \"or\":\n return testOR(columnMap, filter as OrFilter);\n default:\n console.log(`unrecognized filter type ${filter.op}`);\n return () => true;\n }\n}\n\nexport type FilterPredicate = (row: DataSourceRow) => boolean;\n\nconst testInclude = (\n columnMap: ColumnMap,\n filter: MultiValueFilterClause\n): FilterPredicate => {\n return (row) =>\n (filter.values as unknown[]).indexOf(row[columnMap[filter.column]]) !== -1;\n};\n\nconst testEQ = (\n columnMap: ColumnMap,\n filter: SingleValueFilterClause\n): FilterPredicate => {\n return (row) => row[columnMap[filter.column]] === filter.value;\n};\n\nconst testGT = (\n columnMap: ColumnMap,\n filter: SingleValueFilterClause\n): FilterPredicate => {\n return (row) => row[columnMap[filter.column]] > filter.value;\n};\nconst testGE = (\n columnMap: ColumnMap,\n filter: SingleValueFilterClause\n): FilterPredicate => {\n return (row) => row[columnMap[filter.column]] >= filter.value;\n};\n\nconst testLT = (\n columnMap: ColumnMap,\n filter: SingleValueFilterClause\n): FilterPredicate => {\n return (row) => row[columnMap[filter.column]] < filter.value;\n};\nconst testLE = (\n columnMap: ColumnMap,\n filter: SingleValueFilterClause\n): FilterPredicate => {\n return (row) => row[columnMap[filter.column]] <= filter.value;\n};\n\nconst testSW = (\n columnMap: ColumnMap,\n filter: SingleValueFilterClause\n): FilterPredicate => {\n const filterValue = filter.value as string;\n if (typeof filterValue !== \"string\") {\n throw Error(\"string filter applied to value of wrong type\");\n }\n return (row) => {\n const rowValue = row[columnMap[filter.column]];\n if (typeof rowValue !== \"string\") {\n throw Error(\"string filter applied to value of wrong type\");\n }\n return rowValue.toLowerCase().startsWith(filterValue.toLowerCase());\n };\n};\n\nconst testAND = (columnMap: ColumnMap, filter: AndFilter): FilterPredicate => {\n const filters = filter.filters.map((f1) => filterPredicate(columnMap, f1));\n return (row) => filters.every((fn) => fn(row));\n};\n\nfunction testOR(columnMap: ColumnMap, filter: OrFilter): FilterPredicate {\n const filters = filter.filters.map((f1) => filterPredicate(columnMap, f1));\n return (row) => filters.some((fn) => fn(row));\n}\n"],
5
- "mappings": "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",
6
- "names": ["src_exports", "__export", "filterPredicate", "getFilterPredicate", "parseFilter", "parser", "walkTree", "__toCommonJS", "import_lr", "parser", "import_vuu_utils", "_filter", "FilterExpression", "__privateAdd", "op", "filter", "__privateGet", "__privateSet", "column", "target", "value", "_a", "walkTree", "tree", "source", "filterExpression", "cursor", "name", "from", "to", "strictParser", "parser", "parseFilter", "filterQuery", "parseTree", "walkTree", "filterPredicateMap", "filterReject", "getFilterPredicate", "columnMap", "filterQuery", "predicate", "filter", "parseFilter", "filterPredicate", "testInclude", "testEQ", "testGT", "testGE", "testLT", "testLE", "testSW", "testAND", "testOR", "row", "filterValue", "rowValue", "filters", "f1", "fn"]
4
+ "sourcesContent": ["export { parseFilter } from \"./FilterParser\";\nexport { parser } from \"./generated/filter-parser\";\nexport { walkTree } from \"./FilterTreeWalker\";\nexport * from \"./filter-evaluation-utils\";\n", "// This file was generated by lezer-generator. You probably shouldn't edit it.\nimport { LRParser } from \"@lezer/lr\";\nexport const parser = LRParser.deserialize({\n version: 14,\n states: \"%QOVQPOOOOQO'#C_'#C_O_QQO'#C^OOQO'#DO'#DOOvQQO'#C|OOQO'#DR'#DROVQPO'#CuOOQO'#C}'#C}QOQPOOOOQO'#C`'#C`O!UQQO,58xO!dQPO,59VOVQPO,59]OVQPO,59_O!iQPO,59hO!nQQO,59aOOQO'#DQ'#DQOOQO1G.d1G.dO!UQQO1G.qO!yQQO1G.wOOQO1G.y1G.yOOQO'#Cw'#CwOOQO1G/S1G/SOOQO1G.{1G.{O#[QPO'#CnO#dQPO7+$]O!UQQO'#CxO#iQPO,59YOOQO<<Gw<<GwOOQO,59d,59dOOQO-E6v-E6v\",\n stateData: \"#q~OoOS~OsPOvUO~OTXOUXOVXOWXOXXOYXO`ZO~Of[Oh]Oj^OmpX~OZ`O[`O]`O^`O~OabO~OseO~Of[Oh]OwgO~Oh]Ofeijeimeiwei~OcjOdbX~OdlO~OcjOdba~O\",\n goto: \"#YvPPw}!TPPPPPPPPPPwPP!WPP!ZP!ZP!aP!g!jPPP!p!s!aP#P!aXROU[]XQOU[]RYQRibXTOU[]XVOU[]Rf^QkhRnkRWOQSOQ_UQc[Rd]QaYQhbRmj\",\n nodeNames: \"\u26A0 Filter ColumnValueExpression Column Operator Eq NotEq Gt Lt Starts Ends Number String True False ColumnSetExpression In LBrack Values Comma RBrack AndExpression And OrExpression Or ParenthesizedExpression As FilterName\",\n maxTerm: 39,\n skippedNodes: [0],\n repeatNodeCount: 1,\n tokenData: \"6p~RnXY#PYZ#P]^#Ppq#Pqr#brs#mxy$eyz$j|}$o!O!P$t!Q![%S!^!_%_!_!`%d!`!a%i!c!}%n!}#O&V#P#Q&[#R#S%n#T#U&a#U#X%n#X#Y(w#Y#Z+]#Z#]%n#]#^.]#^#c%n#c#d/e#d#g%n#g#h0m#h#i4[#i#o%n~#USo~XY#PYZ#P]^#Ppq#P~#eP!_!`#h~#mOU~~#pWOX#mZ]#m^r#mrs$Ys#O#m#P;'S#m;'S;=`$_<%lO#m~$_O[~~$bP;=`<%l#m~$jOv~~$oOw~~$tOc~~$wP!Q![$z~%PPZ~!Q![$z~%XQZ~!O!P$t!Q![%S~%dOW~~%iOT~~%nOV~P%sUsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#o%n~&[Oa~~&aOd~R&fYsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#b%n#b#c'U#c#g%n#g#h(^#h#o%nR'ZWsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#W%n#W#X's#X#o%nR'zUfQsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#o%nR(eUjQsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#o%nR(|WsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#b%n#b#c)f#c#o%nR)kWsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#W%n#W#X*T#X#o%nR*YWsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#g%n#g#h*r#h#o%nR*yUYQsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#o%nR+bVsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#U+w#U#o%nR+|WsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#`%n#`#a,f#a#o%nR,kWsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#g%n#g#h-T#h#o%nR-YWsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#X%n#X#Y-r#Y#o%nR-yU^QsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#o%nR.bWsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#b%n#b#c.z#c#o%nR/RU`QsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#o%nR/jWsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#f%n#f#g0S#g#o%nR0ZUhQsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#o%nR0rWsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#h%n#h#i1[#i#o%nR1aVsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#U1v#U#o%nR1{WsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#f%n#f#g2e#g#o%nR2jWsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#h%n#h#i3S#i#o%nR3XWsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#g%n#g#h3q#h#o%nR3xUXQsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#o%nR4aWsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#f%n#f#g4y#g#o%nR5OWsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#i%n#i#j5h#j#o%nR5mWsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#X%n#X#Y6V#Y#o%nR6^U]QsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#o%n\",\n tokenizers: [0, 1],\n topRules: {\"Filter\":[0,1]},\n tokenPrec: 0\n})\n", "import { Tree } from \"@lezer/common\";\nimport {\n Filter,\n FilterCombinatorOp,\n MultipleValueFilterClauseOp,\n SingleValueFilterClauseOp,\n} from \"@vuu-ui/vuu-filter-types\";\nimport {\n isMultiClauseFilter,\n isMultiValueFilter,\n isSingleValueFilter,\n} from \"@vuu-ui/vuu-utils\";\n\nclass FilterExpression {\n public name: string | undefined;\n #filter: Partial<Filter> | undefined = undefined;\n\n setFilterCombinatorOp(op: string, filter = this.#filter) {\n if (isMultiClauseFilter(filter) && filter.op === op) {\n return;\n } else {\n this.#filter = {\n op: op as FilterCombinatorOp,\n filters: [this.#filter as Filter],\n };\n }\n }\n\n add(filter: Partial<Filter>) {\n if (this.#filter === undefined) {\n this.#filter = filter;\n } else if (isMultiClauseFilter(this.#filter)) {\n this.#filter.filters.push(filter as Filter);\n } else {\n throw Error(`Invalid filter passed to FilterExpression`);\n }\n }\n\n setColumn(column: string, filter = this.#filter) {\n if (isMultiClauseFilter(filter)) {\n const target = filter.filters.at(-1);\n if (target) {\n this.setColumn(column, target);\n }\n } else if (filter) {\n filter.column = column;\n }\n }\n setOp(value: string, filter = this.#filter) {\n if (isMultiClauseFilter(filter)) {\n const target = filter.filters.at(-1);\n if (target) {\n this.setOp(value, target);\n }\n } else if (filter) {\n filter.op = value as\n | SingleValueFilterClauseOp\n | MultipleValueFilterClauseOp;\n }\n }\n setValue(value: string | number | boolean, filter = this.#filter) {\n if (isMultiClauseFilter(filter)) {\n const target = filter.filters.at(-1);\n if (target) {\n this.setValue(value, target);\n }\n } else if (isMultiValueFilter(filter)) {\n filter.values ??= [];\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n filter.values.push(value);\n } else if (isSingleValueFilter(filter)) {\n filter.value = value;\n }\n }\n\n toJSON(filter = this.#filter) {\n if (this.name) {\n return {\n ...filter,\n name: this.name,\n };\n } else {\n return filter;\n }\n }\n}\n\nexport const walkTree = (tree: Tree, source: string) => {\n const filterExpression = new FilterExpression();\n const cursor = tree.cursor();\n do {\n const { name, from, to } = cursor;\n switch (name) {\n case \"ColumnValueExpression\":\n filterExpression.add({});\n break;\n case \"ColumnSetExpression\":\n filterExpression.add({ op: \"in\" });\n break;\n\n case \"Or\":\n case \"And\":\n filterExpression.setFilterCombinatorOp(source.substring(from, to));\n break;\n\n case \"Column\":\n filterExpression.setColumn(source.substring(from, to));\n break;\n\n case \"Operator\":\n filterExpression.setOp(source.substring(from, to));\n break;\n\n case \"String\":\n filterExpression.setValue(source.substring(from + 1, to - 1));\n break;\n\n case \"Number\":\n filterExpression.setValue(parseFloat(source.substring(from, to)));\n break;\n\n case \"True\":\n filterExpression.setValue(true);\n break;\n\n case \"False\":\n filterExpression.setValue(false);\n break;\n\n case \"FilterName\":\n filterExpression.name = source.substring(from, to);\n break;\n\n default:\n }\n } while (cursor.next());\n\n return filterExpression.toJSON();\n};\n", "import { Filter } from \"@vuu-ui/vuu-filter-types\";\nimport { parser } from \"./generated/filter-parser\";\nimport { walkTree } from \"./FilterTreeWalker\";\n\nconst strictParser = parser.configure({ strict: true });\n\nexport const parseFilter = (filterQuery: string): Filter => {\n const parseTree = strictParser.parse(filterQuery);\n const filter = walkTree(parseTree, filterQuery) as Filter;\n return filter;\n};\n", "import { DataSourceRow } from \"@vuu-ui/vuu-data-types\";\nimport {\n AndFilter,\n Filter,\n MultiValueFilterClause,\n OrFilter,\n SingleValueFilterClause,\n} from \"@vuu-ui/vuu-filter-types\";\nimport { ColumnMap } from \"@vuu-ui/vuu-utils\";\nimport { parseFilter } from \"./FilterParser\";\n\nconst filterPredicateMap = new Map<string, FilterPredicate>();\nconst filterReject = () => false;\n\nexport const getFilterPredicate = (\n columnMap: ColumnMap,\n filterQuery: string\n): FilterPredicate => {\n let predicate = filterPredicateMap.get(filterQuery);\n if (predicate) {\n return predicate;\n }\n // TODO we need to clear cache if columns change. How do we identify this :\n try {\n const filter = parseFilter(filterQuery);\n predicate = filterPredicate(columnMap, filter);\n filterPredicateMap.set(filterQuery, predicate);\n return predicate;\n } catch (err) {\n console.warn(\n `filter-evaluation-utils, failed to parse filter \"${filterQuery}\"`\n );\n return filterReject;\n }\n};\n\nexport function filterPredicate(\n columnMap: ColumnMap,\n filter: Filter\n): FilterPredicate {\n //TODO convert filter to include colIdx ratherthan colName, so we don't have to pass cols\n switch (filter.op) {\n case \"in\":\n return testInclude(columnMap, filter);\n case \"=\":\n return testEQ(columnMap, filter);\n case \">\":\n return testGT(columnMap, filter);\n case \">=\":\n return testGE(columnMap, filter);\n case \"<\":\n return testLT(columnMap, filter);\n case \"<=\":\n return testLE(columnMap, filter);\n case \"ends\":\n return testEW(columnMap, filter);\n case \"starts\":\n return testSW(columnMap, filter);\n case \"and\":\n return testAND(columnMap, filter as AndFilter);\n case \"or\":\n return testOR(columnMap, filter as OrFilter);\n default:\n console.log(`unrecognized filter type ${filter.op}`);\n return () => true;\n }\n}\n\nexport type FilterPredicate = (row: DataSourceRow) => boolean;\n\nconst testInclude = (\n columnMap: ColumnMap,\n filter: MultiValueFilterClause\n): FilterPredicate => {\n return (row) =>\n (filter.values as unknown[]).indexOf(row[columnMap[filter.column]]) !== -1;\n};\n\nconst testEQ = (\n columnMap: ColumnMap,\n filter: SingleValueFilterClause\n): FilterPredicate => {\n return (row) => row[columnMap[filter.column]] === filter.value;\n};\n\nconst testGT = (\n columnMap: ColumnMap,\n filter: SingleValueFilterClause\n): FilterPredicate => {\n return (row) => row[columnMap[filter.column]] > filter.value;\n};\nconst testGE = (\n columnMap: ColumnMap,\n filter: SingleValueFilterClause\n): FilterPredicate => {\n return (row) => row[columnMap[filter.column]] >= filter.value;\n};\n\nconst testLT = (\n columnMap: ColumnMap,\n filter: SingleValueFilterClause\n): FilterPredicate => {\n return (row) => row[columnMap[filter.column]] < filter.value;\n};\nconst testLE = (\n columnMap: ColumnMap,\n filter: SingleValueFilterClause\n): FilterPredicate => {\n return (row) => row[columnMap[filter.column]] <= filter.value;\n};\n\nconst testEW = (\n columnMap: ColumnMap,\n filter: SingleValueFilterClause\n): FilterPredicate => {\n const filterValue = filter.value as string;\n if (typeof filterValue !== \"string\") {\n throw Error(\"string filter applied to value of wrong type\");\n }\n return (row) => {\n const rowValue = row[columnMap[filter.column]];\n if (typeof rowValue !== \"string\") {\n throw Error(\"string filter applied to value of wrong type\");\n }\n return rowValue.toLowerCase().endsWith(filterValue.toLowerCase());\n };\n};\n\nconst testSW = (\n columnMap: ColumnMap,\n filter: SingleValueFilterClause\n): FilterPredicate => {\n const filterValue = filter.value as string;\n if (typeof filterValue !== \"string\") {\n throw Error(\"string filter applied to value of wrong type\");\n }\n return (row) => {\n const rowValue = row[columnMap[filter.column]];\n if (typeof rowValue !== \"string\") {\n throw Error(\"string filter applied to value of wrong type\");\n }\n return rowValue.toLowerCase().startsWith(filterValue.toLowerCase());\n };\n};\n\nconst testAND = (columnMap: ColumnMap, filter: AndFilter): FilterPredicate => {\n const filters = filter.filters.map((f1) => filterPredicate(columnMap, f1));\n return (row) => filters.every((fn) => fn(row));\n};\n\nfunction testOR(columnMap: ColumnMap, filter: OrFilter): FilterPredicate {\n const filters = filter.filters.map((f1) => filterPredicate(columnMap, f1));\n return (row) => filters.some((fn) => fn(row));\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["src_exports", "__export", "filterPredicate", "getFilterPredicate", "parseFilter", "parser", "walkTree", "__toCommonJS", "import_lr", "parser", "import_vuu_utils", "_filter", "FilterExpression", "__privateAdd", "op", "filter", "__privateGet", "__privateSet", "column", "target", "value", "_a", "walkTree", "tree", "source", "filterExpression", "cursor", "name", "from", "to", "strictParser", "parser", "parseFilter", "filterQuery", "parseTree", "walkTree", "filterPredicateMap", "filterReject", "getFilterPredicate", "columnMap", "filterQuery", "predicate", "filter", "parseFilter", "filterPredicate", "testInclude", "testEQ", "testGT", "testGE", "testLT", "testLE", "testEW", "testSW", "testAND", "testOR", "row", "filterValue", "rowValue", "filters", "f1", "fn"]
7
7
  }
package/esm/index.js CHANGED
@@ -1,2 +1,2 @@
1
- var R=(t,e,n)=>{if(!e.has(t))throw TypeError("Cannot "+n)};var a=(t,e,n)=>(R(t,e,"read from private field"),n?n.call(t):e.get(t)),d=(t,e,n)=>{if(e.has(t))throw TypeError("Cannot add the same private member more than once");e instanceof WeakSet?e.add(t):e.set(t,n)},u=(t,e,n,r)=>(R(t,e,"write to private field"),r?r.call(t,n):e.set(t,n),n);import{LRParser as F}from"@lezer/lr";var P=F.deserialize({version:14,states:"%QOVQPOOOOQO'#C_'#C_O_QQO'#C^OOQO'#DO'#DOOvQQO'#C|OOQO'#DR'#DROVQPO'#CuOOQO'#C}'#C}QOQPOOOOQO'#C`'#C`O!UQQO,58xO!dQPO,59VOVQPO,59]OVQPO,59_O!iQPO,59hO!nQQO,59aOOQO'#DQ'#DQOOQO1G.d1G.dO!UQQO1G.qO!yQQO1G.wOOQO1G.y1G.yOOQO'#Cw'#CwOOQO1G/S1G/SOOQO1G.{1G.{O#[QPO'#CnO#dQPO7+$]O!UQQO'#CxO#iQPO,59YOOQO<<Gw<<GwOOQO,59d,59dOOQO-E6v-E6v",stateData:"#q~OoOS~OsPOvUO~OTXOUXOVXOWXOXXOYXO`ZO~Of[Oh]Oj^OmpX~OZ`O[`O]`O^`O~OabO~OseO~Of[Oh]OwgO~Oh]Ofeijeimeiwei~OcjOdbX~OdlO~OcjOdba~O",goto:"#YvPPw}!TPPPPPPPPPPwPP!WPP!ZP!ZP!aP!g!jPPP!p!s!aP#P!aXROU[]XQOU[]RYQRibXTOU[]XVOU[]Rf^QkhRnkRWOQSOQ_UQc[Rd]QaYQhbRmj",nodeNames:"\u26A0 Filter ColumnValueExpression Column Operator Eq NotEq Gt Lt Starts Ends Number String True False ColumnSetExpression In LBrack Values Comma RBrack AndExpression And OrExpression Or ParenthesizedExpression As FilterName",maxTerm:39,skippedNodes:[0],repeatNodeCount:1,tokenData:"6p~RnXY#PYZ#P]^#Ppq#Pqr#brs#mxy$eyz$j|}$o!O!P$t!Q![%S!^!_%_!_!`%d!`!a%i!c!}%n!}#O&V#P#Q&[#R#S%n#T#U&a#U#X%n#X#Y(w#Y#Z+]#Z#]%n#]#^.]#^#c%n#c#d/e#d#g%n#g#h0m#h#i4[#i#o%n~#USo~XY#PYZ#P]^#Ppq#P~#eP!_!`#h~#mOU~~#pWOX#mZ]#m^r#mrs$Ys#O#m#P;'S#m;'S;=`$_<%lO#m~$_O[~~$bP;=`<%l#m~$jOv~~$oOw~~$tOc~~$wP!Q![$z~%PPZ~!Q![$z~%XQZ~!O!P$t!Q![%S~%dOW~~%iOT~~%nOV~P%sUsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#o%n~&[Oa~~&aOd~R&fYsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#b%n#b#c'U#c#g%n#g#h(^#h#o%nR'ZWsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#W%n#W#X's#X#o%nR'zUfQsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#o%nR(eUjQsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#o%nR(|WsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#b%n#b#c)f#c#o%nR)kWsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#W%n#W#X*T#X#o%nR*YWsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#g%n#g#h*r#h#o%nR*yUYQsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#o%nR+bVsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#U+w#U#o%nR+|WsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#`%n#`#a,f#a#o%nR,kWsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#g%n#g#h-T#h#o%nR-YWsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#X%n#X#Y-r#Y#o%nR-yU^QsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#o%nR.bWsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#b%n#b#c.z#c#o%nR/RU`QsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#o%nR/jWsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#f%n#f#g0S#g#o%nR0ZUhQsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#o%nR0rWsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#h%n#h#i1[#i#o%nR1aVsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#U1v#U#o%nR1{WsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#f%n#f#g2e#g#o%nR2jWsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#h%n#h#i3S#i#o%nR3XWsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#g%n#g#h3q#h#o%nR3xUXQsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#o%nR4aWsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#f%n#f#g4y#g#o%nR5OWsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#i%n#i#j5h#j#o%nR5mWsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#X%n#X#Y6V#Y#o%nR6^U]QsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#o%n",tokenizers:[0,1],topRules:{Filter:[0,1]},tokenPrec:0});import{isMultiClauseFilter as l,isMultiValueFilter as S,isSingleValueFilter as C}from"@vuu-ui/vuu-utils";var s,c=class{constructor(){d(this,s,void 0)}setFilterCombinatorOp(e,n=a(this,s)){l(n)&&n.op===e||u(this,s,{op:e,filters:[a(this,s)]})}add(e){if(a(this,s)===void 0)u(this,s,e);else if(l(a(this,s)))a(this,s).filters.push(e);else throw Error("Invalid filter passed to FilterExpression")}setColumn(e,n=a(this,s)){if(l(n)){let r=n.filters.at(-1);r&&this.setColumn(e,r)}else n&&(n.column=e)}setOp(e,n=a(this,s)){if(l(n)){let r=n.filters.at(-1);r&&this.setOp(e,r)}else n&&(n.op=e)}setValue(e,n=a(this,s)){var r;if(l(n)){let O=n.filters.at(-1);O&&this.setValue(e,O)}else S(n)?((r=n.values)!=null||(n.values=[]),n.values.push(e)):C(n)&&(n.value=e)}toJSON(e=a(this,s)){return this.name?{...e,name:this.name}:e}};s=new WeakMap;var p=(t,e)=>{let n=new c,r=t.cursor();do{let{name:O,from:i,to:o}=r;switch(O){case"ColumnValueExpression":n.add({});break;case"ColumnSetExpression":n.add({op:"in"});break;case"Or":case"And":n.setFilterCombinatorOp(e.substring(i,o));break;case"Column":n.setColumn(e.substring(i,o));break;case"Operator":n.setOp(e.substring(i,o));break;case"String":n.setValue(e.substring(i+1,o-1));break;case"Number":n.setValue(parseFloat(e.substring(i,o)));break;case"True":n.setValue(!0);break;case"False":n.setValue(!1);break;case"FilterName":n.name=e.substring(i,o);break;default:}}while(r.next());return n.toJSON()};var h=P.configure({strict:!0}),Q=t=>{let e=h.parse(t);return p(e,t)};var g=new Map,f=()=>!1,N=(t,e)=>{let n=g.get(e);if(n)return n;try{let r=Q(e);return n=m(t,r),g.set(e,n),n}catch{return console.warn(`filter-evaluation-utils, failed to parse filter "${e}"`),f}};function m(t,e){switch(e.op){case"in":return T(t,e);case"=":return b(t,e);case">":return V(t,e);case">=":return w(t,e);case"<":return X(t,e);case"<=":return U(t,e);case"starts":return W(t,e);case"and":return x(t,e);case"or":return k(t,e);default:return console.log(`unrecognized filter type ${e.op}`),()=>!0}}var T=(t,e)=>n=>e.values.indexOf(n[t[e.column]])!==-1,b=(t,e)=>n=>n[t[e.column]]===e.value,V=(t,e)=>n=>n[t[e.column]]>e.value,w=(t,e)=>n=>n[t[e.column]]>=e.value,X=(t,e)=>n=>n[t[e.column]]<e.value,U=(t,e)=>n=>n[t[e.column]]<=e.value,W=(t,e)=>{let n=e.value;if(typeof n!="string")throw Error("string filter applied to value of wrong type");return r=>{let O=r[t[e.column]];if(typeof O!="string")throw Error("string filter applied to value of wrong type");return O.toLowerCase().startsWith(n.toLowerCase())}},x=(t,e)=>{let n=e.filters.map(r=>m(t,r));return r=>n.every(O=>O(r))};function k(t,e){let n=e.filters.map(r=>m(t,r));return r=>n.some(O=>O(r))}export{m as filterPredicate,N as getFilterPredicate,Q as parseFilter,P as parser,p as walkTree};
1
+ var d=(t,e,n)=>{if(!e.has(t))throw TypeError("Cannot "+n)};var O=(t,e,n)=>(d(t,e,"read from private field"),n?n.call(t):e.get(t)),R=(t,e,n)=>{if(e.has(t))throw TypeError("Cannot add the same private member more than once");e instanceof WeakSet?e.add(t):e.set(t,n)},u=(t,e,n,r)=>(d(t,e,"write to private field"),r?r.call(t,n):e.set(t,n),n);import{LRParser as F}from"@lezer/lr";var P=F.deserialize({version:14,states:"%QOVQPOOOOQO'#C_'#C_O_QQO'#C^OOQO'#DO'#DOOvQQO'#C|OOQO'#DR'#DROVQPO'#CuOOQO'#C}'#C}QOQPOOOOQO'#C`'#C`O!UQQO,58xO!dQPO,59VOVQPO,59]OVQPO,59_O!iQPO,59hO!nQQO,59aOOQO'#DQ'#DQOOQO1G.d1G.dO!UQQO1G.qO!yQQO1G.wOOQO1G.y1G.yOOQO'#Cw'#CwOOQO1G/S1G/SOOQO1G.{1G.{O#[QPO'#CnO#dQPO7+$]O!UQQO'#CxO#iQPO,59YOOQO<<Gw<<GwOOQO,59d,59dOOQO-E6v-E6v",stateData:"#q~OoOS~OsPOvUO~OTXOUXOVXOWXOXXOYXO`ZO~Of[Oh]Oj^OmpX~OZ`O[`O]`O^`O~OabO~OseO~Of[Oh]OwgO~Oh]Ofeijeimeiwei~OcjOdbX~OdlO~OcjOdba~O",goto:"#YvPPw}!TPPPPPPPPPPwPP!WPP!ZP!ZP!aP!g!jPPP!p!s!aP#P!aXROU[]XQOU[]RYQRibXTOU[]XVOU[]Rf^QkhRnkRWOQSOQ_UQc[Rd]QaYQhbRmj",nodeNames:"\u26A0 Filter ColumnValueExpression Column Operator Eq NotEq Gt Lt Starts Ends Number String True False ColumnSetExpression In LBrack Values Comma RBrack AndExpression And OrExpression Or ParenthesizedExpression As FilterName",maxTerm:39,skippedNodes:[0],repeatNodeCount:1,tokenData:"6p~RnXY#PYZ#P]^#Ppq#Pqr#brs#mxy$eyz$j|}$o!O!P$t!Q![%S!^!_%_!_!`%d!`!a%i!c!}%n!}#O&V#P#Q&[#R#S%n#T#U&a#U#X%n#X#Y(w#Y#Z+]#Z#]%n#]#^.]#^#c%n#c#d/e#d#g%n#g#h0m#h#i4[#i#o%n~#USo~XY#PYZ#P]^#Ppq#P~#eP!_!`#h~#mOU~~#pWOX#mZ]#m^r#mrs$Ys#O#m#P;'S#m;'S;=`$_<%lO#m~$_O[~~$bP;=`<%l#m~$jOv~~$oOw~~$tOc~~$wP!Q![$z~%PPZ~!Q![$z~%XQZ~!O!P$t!Q![%S~%dOW~~%iOT~~%nOV~P%sUsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#o%n~&[Oa~~&aOd~R&fYsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#b%n#b#c'U#c#g%n#g#h(^#h#o%nR'ZWsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#W%n#W#X's#X#o%nR'zUfQsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#o%nR(eUjQsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#o%nR(|WsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#b%n#b#c)f#c#o%nR)kWsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#W%n#W#X*T#X#o%nR*YWsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#g%n#g#h*r#h#o%nR*yUYQsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#o%nR+bVsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#U+w#U#o%nR+|WsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#`%n#`#a,f#a#o%nR,kWsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#g%n#g#h-T#h#o%nR-YWsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#X%n#X#Y-r#Y#o%nR-yU^QsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#o%nR.bWsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#b%n#b#c.z#c#o%nR/RU`QsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#o%nR/jWsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#f%n#f#g0S#g#o%nR0ZUhQsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#o%nR0rWsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#h%n#h#i1[#i#o%nR1aVsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#U1v#U#o%nR1{WsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#f%n#f#g2e#g#o%nR2jWsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#h%n#h#i3S#i#o%nR3XWsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#g%n#g#h3q#h#o%nR3xUXQsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#o%nR4aWsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#f%n#f#g4y#g#o%nR5OWsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#i%n#i#j5h#j#o%nR5mWsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#X%n#X#Y6V#Y#o%nR6^U]QsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#o%n",tokenizers:[0,1],topRules:{Filter:[0,1]},tokenPrec:0});import{isMultiClauseFilter as l,isMultiValueFilter as S,isSingleValueFilter as C}from"@vuu-ui/vuu-utils";var a,c=class{constructor(){R(this,a,void 0)}setFilterCombinatorOp(e,n=O(this,a)){l(n)&&n.op===e||u(this,a,{op:e,filters:[O(this,a)]})}add(e){if(O(this,a)===void 0)u(this,a,e);else if(l(O(this,a)))O(this,a).filters.push(e);else throw Error("Invalid filter passed to FilterExpression")}setColumn(e,n=O(this,a)){if(l(n)){let r=n.filters.at(-1);r&&this.setColumn(e,r)}else n&&(n.column=e)}setOp(e,n=O(this,a)){if(l(n)){let r=n.filters.at(-1);r&&this.setOp(e,r)}else n&&(n.op=e)}setValue(e,n=O(this,a)){var r;if(l(n)){let s=n.filters.at(-1);s&&this.setValue(e,s)}else S(n)?((r=n.values)!=null||(n.values=[]),n.values.push(e)):C(n)&&(n.value=e)}toJSON(e=O(this,a)){return this.name?{...e,name:this.name}:e}};a=new WeakMap;var p=(t,e)=>{let n=new c,r=t.cursor();do{let{name:s,from:o,to:i}=r;switch(s){case"ColumnValueExpression":n.add({});break;case"ColumnSetExpression":n.add({op:"in"});break;case"Or":case"And":n.setFilterCombinatorOp(e.substring(o,i));break;case"Column":n.setColumn(e.substring(o,i));break;case"Operator":n.setOp(e.substring(o,i));break;case"String":n.setValue(e.substring(o+1,i-1));break;case"Number":n.setValue(parseFloat(e.substring(o,i)));break;case"True":n.setValue(!0);break;case"False":n.setValue(!1);break;case"FilterName":n.name=e.substring(o,i);break;default:}}while(r.next());return n.toJSON()};var f=P.configure({strict:!0}),Q=t=>{let e=f.parse(t);return p(e,t)};var g=new Map,h=()=>!1,_=(t,e)=>{let n=g.get(e);if(n)return n;try{let r=Q(e);return n=m(t,r),g.set(e,n),n}catch{return console.warn(`filter-evaluation-utils, failed to parse filter "${e}"`),h}};function m(t,e){switch(e.op){case"in":return T(t,e);case"=":return b(t,e);case">":return w(t,e);case">=":return V(t,e);case"<":return W(t,e);case"<=":return X(t,e);case"ends":return U(t,e);case"starts":return x(t,e);case"and":return k(t,e);case"or":return v(t,e);default:return console.log(`unrecognized filter type ${e.op}`),()=>!0}}var T=(t,e)=>n=>e.values.indexOf(n[t[e.column]])!==-1,b=(t,e)=>n=>n[t[e.column]]===e.value,w=(t,e)=>n=>n[t[e.column]]>e.value,V=(t,e)=>n=>n[t[e.column]]>=e.value,W=(t,e)=>n=>n[t[e.column]]<e.value,X=(t,e)=>n=>n[t[e.column]]<=e.value,U=(t,e)=>{let n=e.value;if(typeof n!="string")throw Error("string filter applied to value of wrong type");return r=>{let s=r[t[e.column]];if(typeof s!="string")throw Error("string filter applied to value of wrong type");return s.toLowerCase().endsWith(n.toLowerCase())}},x=(t,e)=>{let n=e.value;if(typeof n!="string")throw Error("string filter applied to value of wrong type");return r=>{let s=r[t[e.column]];if(typeof s!="string")throw Error("string filter applied to value of wrong type");return s.toLowerCase().startsWith(n.toLowerCase())}},k=(t,e)=>{let n=e.filters.map(r=>m(t,r));return r=>n.every(s=>s(r))};function v(t,e){let n=e.filters.map(r=>m(t,r));return r=>n.some(s=>s(r))}export{m as filterPredicate,_ as getFilterPredicate,Q as parseFilter,P as parser,p as walkTree};
2
2
  //# sourceMappingURL=index.js.map
package/esm/index.js.map CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../packages/vuu-filter-parser/src/generated/filter-parser.js", "../../../packages/vuu-filter-parser/src/FilterTreeWalker.ts", "../../../packages/vuu-filter-parser/src/FilterParser.ts", "../../../packages/vuu-filter-parser/src/filter-evaluation-utils.ts"],
4
- "sourcesContent": ["// This file was generated by lezer-generator. You probably shouldn't edit it.\nimport { LRParser } from \"@lezer/lr\";\nexport const parser = LRParser.deserialize({\n version: 14,\n states: \"%QOVQPOOOOQO'#C_'#C_O_QQO'#C^OOQO'#DO'#DOOvQQO'#C|OOQO'#DR'#DROVQPO'#CuOOQO'#C}'#C}QOQPOOOOQO'#C`'#C`O!UQQO,58xO!dQPO,59VOVQPO,59]OVQPO,59_O!iQPO,59hO!nQQO,59aOOQO'#DQ'#DQOOQO1G.d1G.dO!UQQO1G.qO!yQQO1G.wOOQO1G.y1G.yOOQO'#Cw'#CwOOQO1G/S1G/SOOQO1G.{1G.{O#[QPO'#CnO#dQPO7+$]O!UQQO'#CxO#iQPO,59YOOQO<<Gw<<GwOOQO,59d,59dOOQO-E6v-E6v\",\n stateData: \"#q~OoOS~OsPOvUO~OTXOUXOVXOWXOXXOYXO`ZO~Of[Oh]Oj^OmpX~OZ`O[`O]`O^`O~OabO~OseO~Of[Oh]OwgO~Oh]Ofeijeimeiwei~OcjOdbX~OdlO~OcjOdba~O\",\n goto: \"#YvPPw}!TPPPPPPPPPPwPP!WPP!ZP!ZP!aP!g!jPPP!p!s!aP#P!aXROU[]XQOU[]RYQRibXTOU[]XVOU[]Rf^QkhRnkRWOQSOQ_UQc[Rd]QaYQhbRmj\",\n nodeNames: \"\u26A0 Filter ColumnValueExpression Column Operator Eq NotEq Gt Lt Starts Ends Number String True False ColumnSetExpression In LBrack Values Comma RBrack AndExpression And OrExpression Or ParenthesizedExpression As FilterName\",\n maxTerm: 39,\n skippedNodes: [0],\n repeatNodeCount: 1,\n tokenData: \"6p~RnXY#PYZ#P]^#Ppq#Pqr#brs#mxy$eyz$j|}$o!O!P$t!Q![%S!^!_%_!_!`%d!`!a%i!c!}%n!}#O&V#P#Q&[#R#S%n#T#U&a#U#X%n#X#Y(w#Y#Z+]#Z#]%n#]#^.]#^#c%n#c#d/e#d#g%n#g#h0m#h#i4[#i#o%n~#USo~XY#PYZ#P]^#Ppq#P~#eP!_!`#h~#mOU~~#pWOX#mZ]#m^r#mrs$Ys#O#m#P;'S#m;'S;=`$_<%lO#m~$_O[~~$bP;=`<%l#m~$jOv~~$oOw~~$tOc~~$wP!Q![$z~%PPZ~!Q![$z~%XQZ~!O!P$t!Q![%S~%dOW~~%iOT~~%nOV~P%sUsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#o%n~&[Oa~~&aOd~R&fYsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#b%n#b#c'U#c#g%n#g#h(^#h#o%nR'ZWsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#W%n#W#X's#X#o%nR'zUfQsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#o%nR(eUjQsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#o%nR(|WsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#b%n#b#c)f#c#o%nR)kWsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#W%n#W#X*T#X#o%nR*YWsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#g%n#g#h*r#h#o%nR*yUYQsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#o%nR+bVsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#U+w#U#o%nR+|WsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#`%n#`#a,f#a#o%nR,kWsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#g%n#g#h-T#h#o%nR-YWsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#X%n#X#Y-r#Y#o%nR-yU^QsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#o%nR.bWsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#b%n#b#c.z#c#o%nR/RU`QsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#o%nR/jWsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#f%n#f#g0S#g#o%nR0ZUhQsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#o%nR0rWsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#h%n#h#i1[#i#o%nR1aVsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#U1v#U#o%nR1{WsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#f%n#f#g2e#g#o%nR2jWsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#h%n#h#i3S#i#o%nR3XWsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#g%n#g#h3q#h#o%nR3xUXQsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#o%nR4aWsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#f%n#f#g4y#g#o%nR5OWsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#i%n#i#j5h#j#o%nR5mWsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#X%n#X#Y6V#Y#o%nR6^U]QsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#o%n\",\n tokenizers: [0, 1],\n topRules: {\"Filter\":[0,1]},\n tokenPrec: 0\n})\n", "import { Tree } from \"@lezer/common\";\nimport {\n Filter,\n FilterCombinatorOp,\n MultipleValueFilterClauseOp,\n SingleValueFilterClauseOp,\n} from \"@vuu-ui/vuu-filter-types\";\nimport {\n isMultiClauseFilter,\n isMultiValueFilter,\n isSingleValueFilter,\n} from \"@vuu-ui/vuu-utils\";\n\nclass FilterExpression {\n public name: string | undefined;\n #filter: Partial<Filter> | undefined = undefined;\n\n setFilterCombinatorOp(op: string, filter = this.#filter) {\n if (isMultiClauseFilter(filter) && filter.op === op) {\n return;\n } else {\n this.#filter = {\n op: op as FilterCombinatorOp,\n filters: [this.#filter as Filter],\n };\n }\n }\n\n add(filter: Partial<Filter>) {\n if (this.#filter === undefined) {\n this.#filter = filter;\n } else if (isMultiClauseFilter(this.#filter)) {\n this.#filter.filters.push(filter as Filter);\n } else {\n throw Error(`Invalid filter passed to FilterExpression`);\n }\n }\n\n setColumn(column: string, filter = this.#filter) {\n if (isMultiClauseFilter(filter)) {\n const target = filter.filters.at(-1);\n if (target) {\n this.setColumn(column, target);\n }\n } else if (filter) {\n filter.column = column;\n }\n }\n setOp(value: string, filter = this.#filter) {\n if (isMultiClauseFilter(filter)) {\n const target = filter.filters.at(-1);\n if (target) {\n this.setOp(value, target);\n }\n } else if (filter) {\n filter.op = value as\n | SingleValueFilterClauseOp\n | MultipleValueFilterClauseOp;\n }\n }\n setValue(value: string | number | boolean, filter = this.#filter) {\n if (isMultiClauseFilter(filter)) {\n const target = filter.filters.at(-1);\n if (target) {\n this.setValue(value, target);\n }\n } else if (isMultiValueFilter(filter)) {\n filter.values ??= [];\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n filter.values.push(value);\n } else if (isSingleValueFilter(filter)) {\n filter.value = value;\n }\n }\n\n toJSON(filter = this.#filter) {\n if (this.name) {\n return {\n ...filter,\n name: this.name,\n };\n } else {\n return filter;\n }\n }\n}\n\nexport const walkTree = (tree: Tree, source: string) => {\n const filterExpression = new FilterExpression();\n const cursor = tree.cursor();\n do {\n const { name, from, to } = cursor;\n switch (name) {\n case \"ColumnValueExpression\":\n filterExpression.add({});\n break;\n case \"ColumnSetExpression\":\n filterExpression.add({ op: \"in\" });\n break;\n\n case \"Or\":\n case \"And\":\n filterExpression.setFilterCombinatorOp(source.substring(from, to));\n break;\n\n case \"Column\":\n filterExpression.setColumn(source.substring(from, to));\n break;\n\n case \"Operator\":\n filterExpression.setOp(source.substring(from, to));\n break;\n\n case \"String\":\n filterExpression.setValue(source.substring(from + 1, to - 1));\n break;\n\n case \"Number\":\n filterExpression.setValue(parseFloat(source.substring(from, to)));\n break;\n\n case \"True\":\n filterExpression.setValue(true);\n break;\n\n case \"False\":\n filterExpression.setValue(false);\n break;\n\n case \"FilterName\":\n filterExpression.name = source.substring(from, to);\n break;\n\n default:\n }\n } while (cursor.next());\n\n return filterExpression.toJSON();\n};\n", "import { Filter } from \"@vuu-ui/vuu-filter-types\";\nimport { parser } from \"./generated/filter-parser\";\nimport { walkTree } from \"./FilterTreeWalker\";\n\nconst strictParser = parser.configure({ strict: true });\n\nexport const parseFilter = (filterQuery: string): Filter => {\n const parseTree = strictParser.parse(filterQuery);\n const filter = walkTree(parseTree, filterQuery) as Filter;\n return filter;\n};\n", "import { DataSourceRow } from \"@vuu-ui/vuu-data-types\";\nimport {\n AndFilter,\n Filter,\n MultiValueFilterClause,\n OrFilter,\n SingleValueFilterClause,\n} from \"@vuu-ui/vuu-filter-types\";\nimport { ColumnMap } from \"@vuu-ui/vuu-utils\";\nimport { parseFilter } from \"./FilterParser\";\n\nconst filterPredicateMap = new Map<string, FilterPredicate>();\nconst filterReject = () => false;\n\nexport const getFilterPredicate = (\n columnMap: ColumnMap,\n filterQuery: string\n): FilterPredicate => {\n let predicate = filterPredicateMap.get(filterQuery);\n if (predicate) {\n return predicate;\n }\n // TODO we need to clear cache if columns change. How do we identify this :\n try {\n const filter = parseFilter(filterQuery);\n predicate = filterPredicate(columnMap, filter);\n filterPredicateMap.set(filterQuery, predicate);\n return predicate;\n } catch (err) {\n console.warn(\n `filter-evaluation-utils, failed to parse filter \"${filterQuery}\"`\n );\n return filterReject;\n }\n};\n\nexport function filterPredicate(\n columnMap: ColumnMap,\n filter: Filter\n): FilterPredicate {\n //TODO convert filter to include colIdx ratherthan colName, so we don't have to pass cols\n switch (filter.op) {\n case \"in\":\n return testInclude(columnMap, filter);\n case \"=\":\n return testEQ(columnMap, filter);\n case \">\":\n return testGT(columnMap, filter);\n case \">=\":\n return testGE(columnMap, filter);\n case \"<\":\n return testLT(columnMap, filter);\n case \"<=\":\n return testLE(columnMap, filter);\n case \"starts\":\n return testSW(columnMap, filter);\n case \"and\":\n return testAND(columnMap, filter as AndFilter);\n case \"or\":\n return testOR(columnMap, filter as OrFilter);\n default:\n console.log(`unrecognized filter type ${filter.op}`);\n return () => true;\n }\n}\n\nexport type FilterPredicate = (row: DataSourceRow) => boolean;\n\nconst testInclude = (\n columnMap: ColumnMap,\n filter: MultiValueFilterClause\n): FilterPredicate => {\n return (row) =>\n (filter.values as unknown[]).indexOf(row[columnMap[filter.column]]) !== -1;\n};\n\nconst testEQ = (\n columnMap: ColumnMap,\n filter: SingleValueFilterClause\n): FilterPredicate => {\n return (row) => row[columnMap[filter.column]] === filter.value;\n};\n\nconst testGT = (\n columnMap: ColumnMap,\n filter: SingleValueFilterClause\n): FilterPredicate => {\n return (row) => row[columnMap[filter.column]] > filter.value;\n};\nconst testGE = (\n columnMap: ColumnMap,\n filter: SingleValueFilterClause\n): FilterPredicate => {\n return (row) => row[columnMap[filter.column]] >= filter.value;\n};\n\nconst testLT = (\n columnMap: ColumnMap,\n filter: SingleValueFilterClause\n): FilterPredicate => {\n return (row) => row[columnMap[filter.column]] < filter.value;\n};\nconst testLE = (\n columnMap: ColumnMap,\n filter: SingleValueFilterClause\n): FilterPredicate => {\n return (row) => row[columnMap[filter.column]] <= filter.value;\n};\n\nconst testSW = (\n columnMap: ColumnMap,\n filter: SingleValueFilterClause\n): FilterPredicate => {\n const filterValue = filter.value as string;\n if (typeof filterValue !== \"string\") {\n throw Error(\"string filter applied to value of wrong type\");\n }\n return (row) => {\n const rowValue = row[columnMap[filter.column]];\n if (typeof rowValue !== \"string\") {\n throw Error(\"string filter applied to value of wrong type\");\n }\n return rowValue.toLowerCase().startsWith(filterValue.toLowerCase());\n };\n};\n\nconst testAND = (columnMap: ColumnMap, filter: AndFilter): FilterPredicate => {\n const filters = filter.filters.map((f1) => filterPredicate(columnMap, f1));\n return (row) => filters.every((fn) => fn(row));\n};\n\nfunction testOR(columnMap: ColumnMap, filter: OrFilter): FilterPredicate {\n const filters = filter.filters.map((f1) => filterPredicate(columnMap, f1));\n return (row) => filters.some((fn) => fn(row));\n}\n"],
5
- "mappings": "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",
6
- "names": ["LRParser", "parser", "isMultiClauseFilter", "isMultiValueFilter", "isSingleValueFilter", "_filter", "FilterExpression", "__privateAdd", "op", "filter", "__privateGet", "isMultiClauseFilter", "__privateSet", "column", "target", "value", "_a", "isMultiValueFilter", "isSingleValueFilter", "walkTree", "tree", "source", "filterExpression", "cursor", "name", "from", "to", "strictParser", "parser", "parseFilter", "filterQuery", "parseTree", "walkTree", "filterPredicateMap", "filterReject", "getFilterPredicate", "columnMap", "filterQuery", "predicate", "filter", "parseFilter", "filterPredicate", "testInclude", "testEQ", "testGT", "testGE", "testLT", "testLE", "testSW", "testAND", "testOR", "row", "filterValue", "rowValue", "filters", "f1", "fn"]
4
+ "sourcesContent": ["// This file was generated by lezer-generator. You probably shouldn't edit it.\nimport { LRParser } from \"@lezer/lr\";\nexport const parser = LRParser.deserialize({\n version: 14,\n states: \"%QOVQPOOOOQO'#C_'#C_O_QQO'#C^OOQO'#DO'#DOOvQQO'#C|OOQO'#DR'#DROVQPO'#CuOOQO'#C}'#C}QOQPOOOOQO'#C`'#C`O!UQQO,58xO!dQPO,59VOVQPO,59]OVQPO,59_O!iQPO,59hO!nQQO,59aOOQO'#DQ'#DQOOQO1G.d1G.dO!UQQO1G.qO!yQQO1G.wOOQO1G.y1G.yOOQO'#Cw'#CwOOQO1G/S1G/SOOQO1G.{1G.{O#[QPO'#CnO#dQPO7+$]O!UQQO'#CxO#iQPO,59YOOQO<<Gw<<GwOOQO,59d,59dOOQO-E6v-E6v\",\n stateData: \"#q~OoOS~OsPOvUO~OTXOUXOVXOWXOXXOYXO`ZO~Of[Oh]Oj^OmpX~OZ`O[`O]`O^`O~OabO~OseO~Of[Oh]OwgO~Oh]Ofeijeimeiwei~OcjOdbX~OdlO~OcjOdba~O\",\n goto: \"#YvPPw}!TPPPPPPPPPPwPP!WPP!ZP!ZP!aP!g!jPPP!p!s!aP#P!aXROU[]XQOU[]RYQRibXTOU[]XVOU[]Rf^QkhRnkRWOQSOQ_UQc[Rd]QaYQhbRmj\",\n nodeNames: \"\u26A0 Filter ColumnValueExpression Column Operator Eq NotEq Gt Lt Starts Ends Number String True False ColumnSetExpression In LBrack Values Comma RBrack AndExpression And OrExpression Or ParenthesizedExpression As FilterName\",\n maxTerm: 39,\n skippedNodes: [0],\n repeatNodeCount: 1,\n tokenData: \"6p~RnXY#PYZ#P]^#Ppq#Pqr#brs#mxy$eyz$j|}$o!O!P$t!Q![%S!^!_%_!_!`%d!`!a%i!c!}%n!}#O&V#P#Q&[#R#S%n#T#U&a#U#X%n#X#Y(w#Y#Z+]#Z#]%n#]#^.]#^#c%n#c#d/e#d#g%n#g#h0m#h#i4[#i#o%n~#USo~XY#PYZ#P]^#Ppq#P~#eP!_!`#h~#mOU~~#pWOX#mZ]#m^r#mrs$Ys#O#m#P;'S#m;'S;=`$_<%lO#m~$_O[~~$bP;=`<%l#m~$jOv~~$oOw~~$tOc~~$wP!Q![$z~%PPZ~!Q![$z~%XQZ~!O!P$t!Q![%S~%dOW~~%iOT~~%nOV~P%sUsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#o%n~&[Oa~~&aOd~R&fYsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#b%n#b#c'U#c#g%n#g#h(^#h#o%nR'ZWsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#W%n#W#X's#X#o%nR'zUfQsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#o%nR(eUjQsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#o%nR(|WsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#b%n#b#c)f#c#o%nR)kWsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#W%n#W#X*T#X#o%nR*YWsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#g%n#g#h*r#h#o%nR*yUYQsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#o%nR+bVsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#U+w#U#o%nR+|WsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#`%n#`#a,f#a#o%nR,kWsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#g%n#g#h-T#h#o%nR-YWsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#X%n#X#Y-r#Y#o%nR-yU^QsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#o%nR.bWsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#b%n#b#c.z#c#o%nR/RU`QsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#o%nR/jWsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#f%n#f#g0S#g#o%nR0ZUhQsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#o%nR0rWsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#h%n#h#i1[#i#o%nR1aVsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#U1v#U#o%nR1{WsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#f%n#f#g2e#g#o%nR2jWsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#h%n#h#i3S#i#o%nR3XWsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#g%n#g#h3q#h#o%nR3xUXQsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#o%nR4aWsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#f%n#f#g4y#g#o%nR5OWsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#i%n#i#j5h#j#o%nR5mWsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#X%n#X#Y6V#Y#o%nR6^U]QsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#o%n\",\n tokenizers: [0, 1],\n topRules: {\"Filter\":[0,1]},\n tokenPrec: 0\n})\n", "import { Tree } from \"@lezer/common\";\nimport {\n Filter,\n FilterCombinatorOp,\n MultipleValueFilterClauseOp,\n SingleValueFilterClauseOp,\n} from \"@vuu-ui/vuu-filter-types\";\nimport {\n isMultiClauseFilter,\n isMultiValueFilter,\n isSingleValueFilter,\n} from \"@vuu-ui/vuu-utils\";\n\nclass FilterExpression {\n public name: string | undefined;\n #filter: Partial<Filter> | undefined = undefined;\n\n setFilterCombinatorOp(op: string, filter = this.#filter) {\n if (isMultiClauseFilter(filter) && filter.op === op) {\n return;\n } else {\n this.#filter = {\n op: op as FilterCombinatorOp,\n filters: [this.#filter as Filter],\n };\n }\n }\n\n add(filter: Partial<Filter>) {\n if (this.#filter === undefined) {\n this.#filter = filter;\n } else if (isMultiClauseFilter(this.#filter)) {\n this.#filter.filters.push(filter as Filter);\n } else {\n throw Error(`Invalid filter passed to FilterExpression`);\n }\n }\n\n setColumn(column: string, filter = this.#filter) {\n if (isMultiClauseFilter(filter)) {\n const target = filter.filters.at(-1);\n if (target) {\n this.setColumn(column, target);\n }\n } else if (filter) {\n filter.column = column;\n }\n }\n setOp(value: string, filter = this.#filter) {\n if (isMultiClauseFilter(filter)) {\n const target = filter.filters.at(-1);\n if (target) {\n this.setOp(value, target);\n }\n } else if (filter) {\n filter.op = value as\n | SingleValueFilterClauseOp\n | MultipleValueFilterClauseOp;\n }\n }\n setValue(value: string | number | boolean, filter = this.#filter) {\n if (isMultiClauseFilter(filter)) {\n const target = filter.filters.at(-1);\n if (target) {\n this.setValue(value, target);\n }\n } else if (isMultiValueFilter(filter)) {\n filter.values ??= [];\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n filter.values.push(value);\n } else if (isSingleValueFilter(filter)) {\n filter.value = value;\n }\n }\n\n toJSON(filter = this.#filter) {\n if (this.name) {\n return {\n ...filter,\n name: this.name,\n };\n } else {\n return filter;\n }\n }\n}\n\nexport const walkTree = (tree: Tree, source: string) => {\n const filterExpression = new FilterExpression();\n const cursor = tree.cursor();\n do {\n const { name, from, to } = cursor;\n switch (name) {\n case \"ColumnValueExpression\":\n filterExpression.add({});\n break;\n case \"ColumnSetExpression\":\n filterExpression.add({ op: \"in\" });\n break;\n\n case \"Or\":\n case \"And\":\n filterExpression.setFilterCombinatorOp(source.substring(from, to));\n break;\n\n case \"Column\":\n filterExpression.setColumn(source.substring(from, to));\n break;\n\n case \"Operator\":\n filterExpression.setOp(source.substring(from, to));\n break;\n\n case \"String\":\n filterExpression.setValue(source.substring(from + 1, to - 1));\n break;\n\n case \"Number\":\n filterExpression.setValue(parseFloat(source.substring(from, to)));\n break;\n\n case \"True\":\n filterExpression.setValue(true);\n break;\n\n case \"False\":\n filterExpression.setValue(false);\n break;\n\n case \"FilterName\":\n filterExpression.name = source.substring(from, to);\n break;\n\n default:\n }\n } while (cursor.next());\n\n return filterExpression.toJSON();\n};\n", "import { Filter } from \"@vuu-ui/vuu-filter-types\";\nimport { parser } from \"./generated/filter-parser\";\nimport { walkTree } from \"./FilterTreeWalker\";\n\nconst strictParser = parser.configure({ strict: true });\n\nexport const parseFilter = (filterQuery: string): Filter => {\n const parseTree = strictParser.parse(filterQuery);\n const filter = walkTree(parseTree, filterQuery) as Filter;\n return filter;\n};\n", "import { DataSourceRow } from \"@vuu-ui/vuu-data-types\";\nimport {\n AndFilter,\n Filter,\n MultiValueFilterClause,\n OrFilter,\n SingleValueFilterClause,\n} from \"@vuu-ui/vuu-filter-types\";\nimport { ColumnMap } from \"@vuu-ui/vuu-utils\";\nimport { parseFilter } from \"./FilterParser\";\n\nconst filterPredicateMap = new Map<string, FilterPredicate>();\nconst filterReject = () => false;\n\nexport const getFilterPredicate = (\n columnMap: ColumnMap,\n filterQuery: string\n): FilterPredicate => {\n let predicate = filterPredicateMap.get(filterQuery);\n if (predicate) {\n return predicate;\n }\n // TODO we need to clear cache if columns change. How do we identify this :\n try {\n const filter = parseFilter(filterQuery);\n predicate = filterPredicate(columnMap, filter);\n filterPredicateMap.set(filterQuery, predicate);\n return predicate;\n } catch (err) {\n console.warn(\n `filter-evaluation-utils, failed to parse filter \"${filterQuery}\"`\n );\n return filterReject;\n }\n};\n\nexport function filterPredicate(\n columnMap: ColumnMap,\n filter: Filter\n): FilterPredicate {\n //TODO convert filter to include colIdx ratherthan colName, so we don't have to pass cols\n switch (filter.op) {\n case \"in\":\n return testInclude(columnMap, filter);\n case \"=\":\n return testEQ(columnMap, filter);\n case \">\":\n return testGT(columnMap, filter);\n case \">=\":\n return testGE(columnMap, filter);\n case \"<\":\n return testLT(columnMap, filter);\n case \"<=\":\n return testLE(columnMap, filter);\n case \"ends\":\n return testEW(columnMap, filter);\n case \"starts\":\n return testSW(columnMap, filter);\n case \"and\":\n return testAND(columnMap, filter as AndFilter);\n case \"or\":\n return testOR(columnMap, filter as OrFilter);\n default:\n console.log(`unrecognized filter type ${filter.op}`);\n return () => true;\n }\n}\n\nexport type FilterPredicate = (row: DataSourceRow) => boolean;\n\nconst testInclude = (\n columnMap: ColumnMap,\n filter: MultiValueFilterClause\n): FilterPredicate => {\n return (row) =>\n (filter.values as unknown[]).indexOf(row[columnMap[filter.column]]) !== -1;\n};\n\nconst testEQ = (\n columnMap: ColumnMap,\n filter: SingleValueFilterClause\n): FilterPredicate => {\n return (row) => row[columnMap[filter.column]] === filter.value;\n};\n\nconst testGT = (\n columnMap: ColumnMap,\n filter: SingleValueFilterClause\n): FilterPredicate => {\n return (row) => row[columnMap[filter.column]] > filter.value;\n};\nconst testGE = (\n columnMap: ColumnMap,\n filter: SingleValueFilterClause\n): FilterPredicate => {\n return (row) => row[columnMap[filter.column]] >= filter.value;\n};\n\nconst testLT = (\n columnMap: ColumnMap,\n filter: SingleValueFilterClause\n): FilterPredicate => {\n return (row) => row[columnMap[filter.column]] < filter.value;\n};\nconst testLE = (\n columnMap: ColumnMap,\n filter: SingleValueFilterClause\n): FilterPredicate => {\n return (row) => row[columnMap[filter.column]] <= filter.value;\n};\n\nconst testEW = (\n columnMap: ColumnMap,\n filter: SingleValueFilterClause\n): FilterPredicate => {\n const filterValue = filter.value as string;\n if (typeof filterValue !== \"string\") {\n throw Error(\"string filter applied to value of wrong type\");\n }\n return (row) => {\n const rowValue = row[columnMap[filter.column]];\n if (typeof rowValue !== \"string\") {\n throw Error(\"string filter applied to value of wrong type\");\n }\n return rowValue.toLowerCase().endsWith(filterValue.toLowerCase());\n };\n};\n\nconst testSW = (\n columnMap: ColumnMap,\n filter: SingleValueFilterClause\n): FilterPredicate => {\n const filterValue = filter.value as string;\n if (typeof filterValue !== \"string\") {\n throw Error(\"string filter applied to value of wrong type\");\n }\n return (row) => {\n const rowValue = row[columnMap[filter.column]];\n if (typeof rowValue !== \"string\") {\n throw Error(\"string filter applied to value of wrong type\");\n }\n return rowValue.toLowerCase().startsWith(filterValue.toLowerCase());\n };\n};\n\nconst testAND = (columnMap: ColumnMap, filter: AndFilter): FilterPredicate => {\n const filters = filter.filters.map((f1) => filterPredicate(columnMap, f1));\n return (row) => filters.every((fn) => fn(row));\n};\n\nfunction testOR(columnMap: ColumnMap, filter: OrFilter): FilterPredicate {\n const filters = filter.filters.map((f1) => filterPredicate(columnMap, f1));\n return (row) => filters.some((fn) => fn(row));\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["LRParser", "parser", "isMultiClauseFilter", "isMultiValueFilter", "isSingleValueFilter", "_filter", "FilterExpression", "__privateAdd", "op", "filter", "__privateGet", "isMultiClauseFilter", "__privateSet", "column", "target", "value", "_a", "isMultiValueFilter", "isSingleValueFilter", "walkTree", "tree", "source", "filterExpression", "cursor", "name", "from", "to", "strictParser", "parser", "parseFilter", "filterQuery", "parseTree", "walkTree", "filterPredicateMap", "filterReject", "getFilterPredicate", "columnMap", "filterQuery", "predicate", "filter", "parseFilter", "filterPredicate", "testInclude", "testEQ", "testGT", "testGE", "testLT", "testLE", "testEW", "testSW", "testAND", "testOR", "row", "filterValue", "rowValue", "filters", "f1", "fn"]
7
7
  }
package/package.json CHANGED
@@ -1,15 +1,15 @@
1
1
  {
2
2
  "name": "@vuu-ui/vuu-filter-parser",
3
- "version": "0.8.22",
3
+ "version": "0.8.23",
4
4
  "author": "heswell",
5
5
  "license": "Apache-2.0",
6
6
  "type": "module",
7
7
  "dependencies": {
8
8
  "@lezer/common": "^1.0.2",
9
9
  "@lezer/lr": "^1.3.3",
10
- "@vuu-ui/vuu-data-types": "0.8.22",
11
- "@vuu-ui/vuu-filter-types": "0.8.22",
12
- "@vuu-ui/vuu-utils": "0.8.22"
10
+ "@vuu-ui/vuu-data-types": "0.8.23",
11
+ "@vuu-ui/vuu-filter-types": "0.8.23",
12
+ "@vuu-ui/vuu-utils": "0.8.23"
13
13
  },
14
14
  "files": [
15
15
  "cjs",