@vuu-ui/vuu-filter-parser 0.8.80 → 0.8.82
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/FilterTreeWalker.js
CHANGED
|
@@ -2,28 +2,17 @@
|
|
|
2
2
|
|
|
3
3
|
var vuuUtils = require('@vuu-ui/vuu-utils');
|
|
4
4
|
|
|
5
|
-
var
|
|
6
|
-
|
|
7
|
-
throw TypeError("Cannot " + msg);
|
|
8
|
-
};
|
|
9
|
-
var __privateGet = (obj, member, getter) => {
|
|
10
|
-
__accessCheck(obj, member, "read from private field");
|
|
11
|
-
return getter ? getter.call(obj) : member.get(obj);
|
|
12
|
-
};
|
|
13
|
-
var __privateAdd = (obj, member, value) => {
|
|
14
|
-
if (member.has(obj))
|
|
15
|
-
throw TypeError("Cannot add the same private member more than once");
|
|
16
|
-
member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
|
|
17
|
-
};
|
|
18
|
-
var __privateSet = (obj, member, value, setter) => {
|
|
19
|
-
__accessCheck(obj, member, "write to private field");
|
|
20
|
-
setter ? setter.call(obj, value) : member.set(obj, value);
|
|
21
|
-
return value;
|
|
5
|
+
var __typeError = (msg) => {
|
|
6
|
+
throw TypeError(msg);
|
|
22
7
|
};
|
|
8
|
+
var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot " + msg);
|
|
9
|
+
var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
|
|
10
|
+
var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
|
|
11
|
+
var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), setter ? setter.call(obj, value) : member.set(obj, value), value);
|
|
23
12
|
var _filter;
|
|
24
13
|
class FilterExpression {
|
|
25
14
|
constructor() {
|
|
26
|
-
__privateAdd(this, _filter
|
|
15
|
+
__privateAdd(this, _filter);
|
|
27
16
|
}
|
|
28
17
|
setFilterCombinatorOp(op, filter = __privateGet(this, _filter)) {
|
|
29
18
|
if (vuuUtils.isMultiClauseFilter(filter) && filter.op === op) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FilterTreeWalker.js","sources":["../src/FilterTreeWalker.ts"],"sourcesContent":["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"],"names":["isMultiClauseFilter","isMultiValueFilter","isSingleValueFilter"],"mappings":"
|
|
1
|
+
{"version":3,"file":"FilterTreeWalker.js","sources":["../src/FilterTreeWalker.ts"],"sourcesContent":["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"],"names":["isMultiClauseFilter","isMultiValueFilter","isSingleValueFilter"],"mappings":"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"}
|
package/esm/FilterTreeWalker.js
CHANGED
|
@@ -1,27 +1,16 @@
|
|
|
1
1
|
import { isMultiClauseFilter, isMultiValueFilter, isSingleValueFilter } from '@vuu-ui/vuu-utils';
|
|
2
2
|
|
|
3
|
-
var
|
|
4
|
-
|
|
5
|
-
throw TypeError("Cannot " + msg);
|
|
6
|
-
};
|
|
7
|
-
var __privateGet = (obj, member, getter) => {
|
|
8
|
-
__accessCheck(obj, member, "read from private field");
|
|
9
|
-
return getter ? getter.call(obj) : member.get(obj);
|
|
10
|
-
};
|
|
11
|
-
var __privateAdd = (obj, member, value) => {
|
|
12
|
-
if (member.has(obj))
|
|
13
|
-
throw TypeError("Cannot add the same private member more than once");
|
|
14
|
-
member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
|
|
15
|
-
};
|
|
16
|
-
var __privateSet = (obj, member, value, setter) => {
|
|
17
|
-
__accessCheck(obj, member, "write to private field");
|
|
18
|
-
setter ? setter.call(obj, value) : member.set(obj, value);
|
|
19
|
-
return value;
|
|
3
|
+
var __typeError = (msg) => {
|
|
4
|
+
throw TypeError(msg);
|
|
20
5
|
};
|
|
6
|
+
var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot " + msg);
|
|
7
|
+
var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
|
|
8
|
+
var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
|
|
9
|
+
var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), setter ? setter.call(obj, value) : member.set(obj, value), value);
|
|
21
10
|
var _filter;
|
|
22
11
|
class FilterExpression {
|
|
23
12
|
constructor() {
|
|
24
|
-
__privateAdd(this, _filter
|
|
13
|
+
__privateAdd(this, _filter);
|
|
25
14
|
}
|
|
26
15
|
setFilterCombinatorOp(op, filter = __privateGet(this, _filter)) {
|
|
27
16
|
if (isMultiClauseFilter(filter) && filter.op === op) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FilterTreeWalker.js","sources":["../src/FilterTreeWalker.ts"],"sourcesContent":["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"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"FilterTreeWalker.js","sources":["../src/FilterTreeWalker.ts"],"sourcesContent":["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"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "0.8.
|
|
2
|
+
"version": "0.8.82",
|
|
3
3
|
"author": "heswell",
|
|
4
4
|
"license": "Apache-2.0",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"dependencies": {
|
|
7
7
|
"@lezer/common": "^1.0.2",
|
|
8
8
|
"@lezer/lr": "^1.3.3",
|
|
9
|
-
"@vuu-ui/vuu-data-types": "0.8.
|
|
10
|
-
"@vuu-ui/vuu-filter-types": "0.8.
|
|
11
|
-
"@vuu-ui/vuu-utils": "0.8.
|
|
9
|
+
"@vuu-ui/vuu-data-types": "0.8.82",
|
|
10
|
+
"@vuu-ui/vuu-filter-types": "0.8.82",
|
|
11
|
+
"@vuu-ui/vuu-utils": "0.8.82"
|
|
12
12
|
},
|
|
13
13
|
"files": [
|
|
14
14
|
"README.md",
|