@vuu-ui/vuu-filter-parser 3.4.1 → 3.5.0-beta.1

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/package.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "3.4.1",
2
+ "version": "3.5.0-beta.1",
3
3
  "main": "./src/index.js",
4
4
  "author": "heswell",
5
5
  "license": "Apache-2.0",
@@ -12,14 +12,14 @@
12
12
  "type-defs": "node ../../scripts/build-type-defs.mjs"
13
13
  },
14
14
  "devDependencies": {
15
- "@vuu-ui/vuu-data-types": "3.4.1",
16
- "@vuu-ui/vuu-filter-types": "3.4.1",
17
- "@vuu-ui/vuu-table-types": "3.4.1"
15
+ "@vuu-ui/vuu-data-types": "3.5.0-beta.1",
16
+ "@vuu-ui/vuu-filter-types": "3.5.0-beta.1",
17
+ "@vuu-ui/vuu-table-types": "3.5.0-beta.1"
18
18
  },
19
19
  "dependencies": {
20
20
  "@lezer/common": "^1.0.2",
21
21
  "@lezer/lr": "1.4.2",
22
- "@vuu-ui/vuu-utils": "3.4.1"
22
+ "@vuu-ui/vuu-utils": "3.5.0-beta.1"
23
23
  },
24
24
  "files": [
25
25
  "README.md",
@@ -73,8 +73,12 @@ const walkTree = (tree, source)=>{
73
73
  filterExpression.setValue(source.substring(from + 1, to - 1));
74
74
  break;
75
75
  case "Number":
76
- filterExpression.setValue(parseFloat(source.substring(from, to)));
77
- break;
76
+ {
77
+ const numericText = source.substring(from, to);
78
+ const numericValue = parseFloat(numericText);
79
+ filterExpression.setValue(/^-?\d+$/.test(numericText) && !Number.isSafeInteger(numericValue) ? numericText : numericValue);
80
+ break;
81
+ }
78
82
  case "True":
79
83
  filterExpression.setValue(true);
80
84
  break;
@@ -1,16 +1,16 @@
1
1
  import { LRParser } from "@lezer/lr";
2
2
  const parser = LRParser.deserialize({
3
3
  version: 14,
4
- states: "%QOVQPOOOOQO'#C_'#C_O_QQO'#C^OOQO'#DP'#DPOyQQO'#C}OOQO'#DS'#DSOVQPO'#CvOOQO'#DO'#DOQOQPOOOOQO'#C`'#C`O!XQQO,58xO!gQPO,59WOVQPO,59^OVQPO,59`O!lQPO,59iO!qQQO,59bOOQO'#DR'#DROOQO1G.d1G.dO!XQQO1G.rO!|QQO1G.xOOQO1G.z1G.zOOQO'#Cx'#CxOOQO1G/T1G/TOOQO1G.|1G.|O#_QPO'#CoO#gQPO7+$^O!XQQO'#CyO#lQPO,59ZOOQO<<Gx<<GxOOQO,59e,59eOOQO-E6w-E6w",
5
- stateData: "#t~OpOS~OtPOwUO~OTXOUXOVXOWXOXXOYXOZXOaZO~Og[Oi]Ok^OnqX~O[`O]`O^`O_`O~ObbO~OteO~Og[Oi]OxgO~Oi]Ogfikfinfixfi~OdjOecX~OelO~OdjOeca~O",
6
- goto: "#ZwPPx!O!UPPPPPPPPPPPxPP!XPP![P![P!bP!h!kPPP!q!t!bP#Q!bXROU[]XQOU[]RYQRibXTOU[]XVOU[]Rf^QkhRnkRWOQSOQ_UQc[Rd]QaYQhbRmj",
7
- nodeNames: "⚠ Filter ColumnValueExpression Column Operator Eq NotEq Gt Lt Starts Ends Contains Number String True False ColumnSetExpression In LBrack Values Comma RBrack AndExpression And OrExpression Or ParenthesizedExpression As FilterName",
8
- maxTerm: 40,
4
+ states: "%QOVQPOOOOQO'#C_'#C_O_QQO'#C^OOQO'#DR'#DRO!PQQO'#DPOOQO'#DU'#DUOVQPO'#CxOOQO'#DQ'#DQQOQPOOOOQO'#C`'#C`O!_QQO,58xO!mQPO,59YOVQPO,59`OVQPO,59bO!rQPO,59kO!wQQO,59dOOQO'#DT'#DTOOQO1G.d1G.dO!_QQO1G.tO#SQQO1G.zOOQO1G.|1G.|OOQO'#Cz'#CzOOQO1G/V1G/VOOQO1G/O1G/OO#eQPO'#CqO#mQPO7+$`O!_QQO'#C{O#rQPO,59]OOQO<<Gz<<GzOOQO,59g,59gOOQO-E6y-E6y",
5
+ stateData: "#z~OrOS~OvPOyUO~OTXOUXOVXOWXOXXOYXOZXO[XO]XOcZO~Oi[Ok]Om^OpsX~O^`O_`O``Oa`O~OdbO~OveO~Oi[Ok]OzgO~Ok]Oihimhiphizhi~OfjOgeX~OglO~OfjOgea~O",
6
+ goto: "#]yPPz!Q!WPPPPPPPPPPPPPzPP!ZPP!^P!^P!dP!j!mPPP!s!v!dP#S!dXROU[]XQOU[]RYQRibXTOU[]XVOU[]Rf^QkhRnkRWOQSOQ_UQc[Rd]QaYQhbRmj",
7
+ nodeNames: "⚠ Filter ColumnValueExpression Column Operator Eq NotEq Gt Gte Lt Lte Starts Ends Contains Number String True False ColumnSetExpression In LBrack Values Comma RBrack AndExpression And OrExpression Or ParenthesizedExpression As FilterName",
8
+ maxTerm: 42,
9
9
  skippedNodes: [
10
10
  0
11
11
  ],
12
12
  repeatNodeCount: 1,
13
- tokenData: ";}~RqXY#YYZ#Y]^#Ypq#Yqr#krs#vxy$nyz$s|}$x}!O$}!O!P%W!Q![%f!^!_%q!_!`%v!`!a%{!c!}&Q!}#O&i#P#Q&n#R#S&Q#T#U&s#U#V&Q#V#W)Z#W#X&Q#X#Y.U#Y#Z0j#Z#]&Q#]#^3j#^#c&Q#c#d4r#d#g&Q#g#h5z#h#i9i#i#o&Q~#_Sp~XY#YYZ#Y]^#Ypq#Y~#nP!_!`#q~#vOU~~#yWOX#vZ]#v^r#vrs$cs#O#v#P;'S#v;'S;=`$h<%lO#v~$hO]~~$kP;=`<%l#v~$sOw~~$xOx~~$}Od~~%QQ!O!P%W!Q![%f~%ZP!Q![%^~%cP[~!Q![%^~%kQ[~!O!P%W!Q![%f~%vOW~~%{OT~~&QOV~P&VUtP}!O&Q!O!P&Q!Q![&Q!c!}&Q#R#S&Q#T#o&Q~&nOb~~&sOe~R&xYtP}!O&Q!O!P&Q!Q![&Q!c!}&Q#R#S&Q#T#b&Q#b#c'h#c#g&Q#g#h(p#h#o&QR'mWtP}!O&Q!O!P&Q!Q![&Q!c!}&Q#R#S&Q#T#W&Q#W#X(V#X#o&QR(^UgQtP}!O&Q!O!P&Q!Q![&Q!c!}&Q#R#S&Q#T#o&QR(wUkQtP}!O&Q!O!P&Q!Q![&Q!c!}&Q#R#S&Q#T#o&QR)`WtP}!O&Q!O!P&Q!Q![&Q!c!}&Q#R#S&Q#T#c&Q#c#d)x#d#o&QR)}WtP}!O&Q!O!P&Q!Q![&Q!c!}&Q#R#S&Q#T#b&Q#b#c*g#c#o&QR*lWtP}!O&Q!O!P&Q!Q![&Q!c!}&Q#R#S&Q#T#h&Q#h#i+U#i#o&QR+ZVtP}!O&Q!O!P&Q!Q![&Q!c!}&Q#R#S&Q#T#U+p#U#o&QR+uWtP}!O&Q!O!P&Q!Q![&Q!c!}&Q#R#S&Q#T#]&Q#]#^,_#^#o&QR,dWtP}!O&Q!O!P&Q!Q![&Q!c!}&Q#R#S&Q#T#b&Q#b#c,|#c#o&QR-RWtP}!O&Q!O!P&Q!Q![&Q!c!}&Q#R#S&Q#T#g&Q#g#h-k#h#o&QR-rUZQtP}!O&Q!O!P&Q!Q![&Q!c!}&Q#R#S&Q#T#o&QR.ZWtP}!O&Q!O!P&Q!Q![&Q!c!}&Q#R#S&Q#T#b&Q#b#c.s#c#o&QR.xWtP}!O&Q!O!P&Q!Q![&Q!c!}&Q#R#S&Q#T#W&Q#W#X/b#X#o&QR/gWtP}!O&Q!O!P&Q!Q![&Q!c!}&Q#R#S&Q#T#g&Q#g#h0P#h#o&QR0WUYQtP}!O&Q!O!P&Q!Q![&Q!c!}&Q#R#S&Q#T#o&QR0oVtP}!O&Q!O!P&Q!Q![&Q!c!}&Q#R#S&Q#T#U1U#U#o&QR1ZWtP}!O&Q!O!P&Q!Q![&Q!c!}&Q#R#S&Q#T#`&Q#`#a1s#a#o&QR1xWtP}!O&Q!O!P&Q!Q![&Q!c!}&Q#R#S&Q#T#g&Q#g#h2b#h#o&QR2gWtP}!O&Q!O!P&Q!Q![&Q!c!}&Q#R#S&Q#T#X&Q#X#Y3P#Y#o&QR3WU_QtP}!O&Q!O!P&Q!Q![&Q!c!}&Q#R#S&Q#T#o&QR3oWtP}!O&Q!O!P&Q!Q![&Q!c!}&Q#R#S&Q#T#b&Q#b#c4X#c#o&QR4`UaQtP}!O&Q!O!P&Q!Q![&Q!c!}&Q#R#S&Q#T#o&QR4wWtP}!O&Q!O!P&Q!Q![&Q!c!}&Q#R#S&Q#T#f&Q#f#g5a#g#o&QR5hUiQtP}!O&Q!O!P&Q!Q![&Q!c!}&Q#R#S&Q#T#o&QR6PWtP}!O&Q!O!P&Q!Q![&Q!c!}&Q#R#S&Q#T#h&Q#h#i6i#i#o&QR6nVtP}!O&Q!O!P&Q!Q![&Q!c!}&Q#R#S&Q#T#U7T#U#o&QR7YWtP}!O&Q!O!P&Q!Q![&Q!c!}&Q#R#S&Q#T#f&Q#f#g7r#g#o&QR7wWtP}!O&Q!O!P&Q!Q![&Q!c!}&Q#R#S&Q#T#h&Q#h#i8a#i#o&QR8fWtP}!O&Q!O!P&Q!Q![&Q!c!}&Q#R#S&Q#T#g&Q#g#h9O#h#o&QR9VUXQtP}!O&Q!O!P&Q!Q![&Q!c!}&Q#R#S&Q#T#o&QR9nWtP}!O&Q!O!P&Q!Q![&Q!c!}&Q#R#S&Q#T#f&Q#f#g:W#g#o&QR:]WtP}!O&Q!O!P&Q!Q![&Q!c!}&Q#R#S&Q#T#i&Q#i#j:u#j#o&QR:zWtP}!O&Q!O!P&Q!Q![&Q!c!}&Q#R#S&Q#T#X&Q#X#Y;d#Y#o&QR;kU^QtP}!O&Q!O!P&Q!Q![&Q!c!}&Q#R#S&Q#T#o&Q",
13
+ tokenData: "<_~RqXY#YYZ#Y]^#Ypq#Yqr#krs#vxy$nyz$s|}$x}!O$}!O!P%W!Q![%f!^!_%q!_!`&O!`!a&T!c!}&b!}#O&y#P#Q'O#R#S&b#T#U'T#U#V&b#V#W)k#W#X&b#X#Y.f#Y#Z0z#Z#]&b#]#^3z#^#c&b#c#d5S#d#g&b#g#h6[#h#i9y#i#o&b~#_Sr~XY#YYZ#Y]^#Ypq#Y~#nP!_!`#q~#vOU~~#yWOX#vZ]#v^r#vrs$cs#O#v#P;'S#v;'S;=`$h<%lO#v~$hO_~~$kP;=`<%l#v~$sOy~~$xOz~~$}Of~~%QQ!O!P%W!Q![%f~%ZP!Q![%^~%cP^~!Q![%^~%kQ^~!O!P%W!Q![%f~%vPX~!_!`%y~&OOY~~&TOT~~&YPV~!_!`&]~&bOW~P&gUvP}!O&b!O!P&b!Q![&b!c!}&b#R#S&b#T#o&b~'OOd~~'TOg~R'YYvP}!O&b!O!P&b!Q![&b!c!}&b#R#S&b#T#b&b#b#c'x#c#g&b#g#h)Q#h#o&bR'}WvP}!O&b!O!P&b!Q![&b!c!}&b#R#S&b#T#W&b#W#X(g#X#o&bR(nUiQvP}!O&b!O!P&b!Q![&b!c!}&b#R#S&b#T#o&bR)XUmQvP}!O&b!O!P&b!Q![&b!c!}&b#R#S&b#T#o&bR)pWvP}!O&b!O!P&b!Q![&b!c!}&b#R#S&b#T#c&b#c#d*Y#d#o&bR*_WvP}!O&b!O!P&b!Q![&b!c!}&b#R#S&b#T#b&b#b#c*w#c#o&bR*|WvP}!O&b!O!P&b!Q![&b!c!}&b#R#S&b#T#h&b#h#i+f#i#o&bR+kVvP}!O&b!O!P&b!Q![&b!c!}&b#R#S&b#T#U,Q#U#o&bR,VWvP}!O&b!O!P&b!Q![&b!c!}&b#R#S&b#T#]&b#]#^,o#^#o&bR,tWvP}!O&b!O!P&b!Q![&b!c!}&b#R#S&b#T#b&b#b#c-^#c#o&bR-cWvP}!O&b!O!P&b!Q![&b!c!}&b#R#S&b#T#g&b#g#h-{#h#o&bR.SU]QvP}!O&b!O!P&b!Q![&b!c!}&b#R#S&b#T#o&bR.kWvP}!O&b!O!P&b!Q![&b!c!}&b#R#S&b#T#b&b#b#c/T#c#o&bR/YWvP}!O&b!O!P&b!Q![&b!c!}&b#R#S&b#T#W&b#W#X/r#X#o&bR/wWvP}!O&b!O!P&b!Q![&b!c!}&b#R#S&b#T#g&b#g#h0a#h#o&bR0hU[QvP}!O&b!O!P&b!Q![&b!c!}&b#R#S&b#T#o&bR1PVvP}!O&b!O!P&b!Q![&b!c!}&b#R#S&b#T#U1f#U#o&bR1kWvP}!O&b!O!P&b!Q![&b!c!}&b#R#S&b#T#`&b#`#a2T#a#o&bR2YWvP}!O&b!O!P&b!Q![&b!c!}&b#R#S&b#T#g&b#g#h2r#h#o&bR2wWvP}!O&b!O!P&b!Q![&b!c!}&b#R#S&b#T#X&b#X#Y3a#Y#o&bR3hUaQvP}!O&b!O!P&b!Q![&b!c!}&b#R#S&b#T#o&bR4PWvP}!O&b!O!P&b!Q![&b!c!}&b#R#S&b#T#b&b#b#c4i#c#o&bR4pUcQvP}!O&b!O!P&b!Q![&b!c!}&b#R#S&b#T#o&bR5XWvP}!O&b!O!P&b!Q![&b!c!}&b#R#S&b#T#f&b#f#g5q#g#o&bR5xUkQvP}!O&b!O!P&b!Q![&b!c!}&b#R#S&b#T#o&bR6aWvP}!O&b!O!P&b!Q![&b!c!}&b#R#S&b#T#h&b#h#i6y#i#o&bR7OVvP}!O&b!O!P&b!Q![&b!c!}&b#R#S&b#T#U7e#U#o&bR7jWvP}!O&b!O!P&b!Q![&b!c!}&b#R#S&b#T#f&b#f#g8S#g#o&bR8XWvP}!O&b!O!P&b!Q![&b!c!}&b#R#S&b#T#h&b#h#i8q#i#o&bR8vWvP}!O&b!O!P&b!Q![&b!c!}&b#R#S&b#T#g&b#g#h9`#h#o&bR9gUZQvP}!O&b!O!P&b!Q![&b!c!}&b#R#S&b#T#o&bR:OWvP}!O&b!O!P&b!Q![&b!c!}&b#R#S&b#T#f&b#f#g:h#g#o&bR:mWvP}!O&b!O!P&b!Q![&b!c!}&b#R#S&b#T#i&b#i#j;V#j#o&bR;[WvP}!O&b!O!P&b!Q![&b!c!}&b#R#S&b#T#X&b#X#Y;t#Y#o&bR;{U`QvP}!O&b!O!P&b!Q![&b!c!}&b#R#S&b#T#o&b",
14
14
  tokenizers: [
15
15
  0,
16
16
  1
@@ -1,2 +1,2 @@
1
- const Filter = 1, ColumnValueExpression = 2, Column = 3, Operator = 4, Eq = 5, NotEq = 6, Gt = 7, Lt = 8, Starts = 9, Ends = 10, Contains = 11, filter_parser_terms_Number = 12, filter_parser_terms_String = 13, True = 14, False = 15, ColumnSetExpression = 16, In = 17, LBrack = 18, Values = 19, Comma = 20, RBrack = 21, AndExpression = 22, And = 23, OrExpression = 24, Or = 25, ParenthesizedExpression = 26, As = 27, FilterName = 28;
2
- export { And, AndExpression, As, Column, ColumnSetExpression, ColumnValueExpression, Comma, Contains, Ends, Eq, False, Filter, FilterName, Gt, In, LBrack, Lt, NotEq, Operator, Or, OrExpression, ParenthesizedExpression, RBrack, Starts, True, Values, filter_parser_terms_Number as Number, filter_parser_terms_String as String };
1
+ const Filter = 1, ColumnValueExpression = 2, Column = 3, Operator = 4, Eq = 5, NotEq = 6, Gt = 7, Gte = 8, Lt = 9, Lte = 10, Starts = 11, Ends = 12, Contains = 13, filter_parser_terms_Number = 14, filter_parser_terms_String = 15, True = 16, False = 17, ColumnSetExpression = 18, In = 19, LBrack = 20, Values = 21, Comma = 22, RBrack = 23, AndExpression = 24, And = 25, OrExpression = 26, Or = 27, ParenthesizedExpression = 28, As = 29, FilterName = 30;
2
+ export { And, AndExpression, As, Column, ColumnSetExpression, ColumnValueExpression, Comma, Contains, Ends, Eq, False, Filter, FilterName, Gt, Gte, In, LBrack, Lt, Lte, NotEq, Operator, Or, OrExpression, ParenthesizedExpression, RBrack, Starts, True, Values, filter_parser_terms_Number as Number, filter_parser_terms_String as String };
@@ -5,24 +5,26 @@ export const Operator: 4;
5
5
  export const Eq: 5;
6
6
  export const NotEq: 6;
7
7
  export const Gt: 7;
8
- export const Lt: 8;
9
- export const Starts: 9;
10
- export const Ends: 10;
11
- export const Contains: 11;
12
- export const Number: 12;
13
- export const String: 13;
14
- export const True: 14;
15
- export const False: 15;
16
- export const ColumnSetExpression: 16;
17
- export const In: 17;
18
- export const LBrack: 18;
19
- export const Values: 19;
20
- export const Comma: 20;
21
- export const RBrack: 21;
22
- export const AndExpression: 22;
23
- export const And: 23;
24
- export const OrExpression: 24;
25
- export const Or: 25;
26
- export const ParenthesizedExpression: 26;
27
- export const As: 27;
28
- export const FilterName: 28;
8
+ export const Gte: 8;
9
+ export const Lt: 9;
10
+ export const Lte: 10;
11
+ export const Starts: 11;
12
+ export const Ends: 12;
13
+ export const Contains: 13;
14
+ export const Number: 14;
15
+ export const String: 15;
16
+ export const True: 16;
17
+ export const False: 17;
18
+ export const ColumnSetExpression: 18;
19
+ export const In: 19;
20
+ export const LBrack: 20;
21
+ export const Values: 21;
22
+ export const Comma: 22;
23
+ export const RBrack: 23;
24
+ export const AndExpression: 24;
25
+ export const And: 25;
26
+ export const OrExpression: 26;
27
+ export const Or: 27;
28
+ export const ParenthesizedExpression: 28;
29
+ export const As: 29;
30
+ export const FilterName: 30;
@@ -1,2 +0,0 @@
1
- import { Filter } from "@vuu-ui/vuu-filter-types";
2
- export declare const parseFilter: (filterQuery: string) => Filter;
@@ -1,3 +0,0 @@
1
- import { Tree } from "@lezer/common";
2
- import { Filter } from "@vuu-ui/vuu-filter-types";
3
- export declare const walkTree: (tree: Tree, source: string) => Partial<Filter> | undefined;
@@ -1,17 +0,0 @@
1
- import { DataSourceRowWithBigint } from "@vuu-ui/vuu-data-types";
2
- import { Filter } from "@vuu-ui/vuu-filter-types";
3
- import { ColumnMap } from "@vuu-ui/vuu-utils";
4
- import { VuuDataRow } from "@vuu-ui/vuu-protocol-types";
5
- import { DataRow } from "@vuu-ui/vuu-table-types";
6
- export type FilterPredicate = (row: DataSourceRowWithBigint | VuuDataRow) => boolean;
7
- export type DataRowFilterPredicate = (row: DataRow) => boolean;
8
- export declare function getFilterPredicate(columnMap: ColumnMap, filterQuery: string): FilterPredicate;
9
- export declare function getFilterPredicate(filterQuery: string): DataRowFilterPredicate;
10
- /**
11
- * Generates a filterPredicate that can be used to test a row against a filter
12
- * Two row formats supported:
13
- * - DataRow, used by Tables, when evaluatingn a Menu filter.
14
- * - DataSourceRow, used by local data source, like ArrayDataSOurce
15
- */
16
- export declare function filterPredicate(columnMap: ColumnMap, filter: Filter): FilterPredicate;
17
- export declare function filterPredicate(filter: Filter): DataRowFilterPredicate;
@@ -1,2 +0,0 @@
1
- import { LRParser } from "@lezer/lr";
2
- export declare const parser: LRParser;
@@ -1 +0,0 @@
1
- export declare const Filter = 1, ColumnValueExpression = 2, Column = 3, Operator = 4, Eq = 5, NotEq = 6, Gt = 7, Lt = 8, Starts = 9, Ends = 10, Contains = 11, Number = 12, String = 13, True = 14, False = 15, ColumnSetExpression = 16, In = 17, LBrack = 18, Values = 19, Comma = 20, RBrack = 21, AndExpression = 22, And = 23, OrExpression = 24, Or = 25, ParenthesizedExpression = 26, As = 27, FilterName = 28;
@@ -1,4 +0,0 @@
1
- export { parseFilter } from "./FilterParser";
2
- export { parser } from "./generated/filter-parser";
3
- export { walkTree } from "./FilterTreeWalker";
4
- export * from "./filter-evaluation-utils";