@platforma-sdk/model 1.54.9 → 1.54.10

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.
Files changed (47) hide show
  1. package/dist/components/PlDataTable/table.cjs +17 -8
  2. package/dist/components/PlDataTable/table.cjs.map +1 -1
  3. package/dist/components/PlDataTable/table.d.ts.map +1 -1
  4. package/dist/components/PlDataTable/table.js +17 -8
  5. package/dist/components/PlDataTable/table.js.map +1 -1
  6. package/dist/components/PlDataTable/v5.d.ts +2 -2
  7. package/dist/components/PlDataTable/v5.d.ts.map +1 -1
  8. package/dist/filters/converters/filterToQuery.cjs +18 -11
  9. package/dist/filters/converters/filterToQuery.cjs.map +1 -1
  10. package/dist/filters/converters/filterToQuery.d.ts.map +1 -1
  11. package/dist/filters/converters/filterToQuery.js +18 -11
  12. package/dist/filters/converters/filterToQuery.js.map +1 -1
  13. package/dist/filters/converters/filterUiToExpressionImpl.cjs +80 -100
  14. package/dist/filters/converters/filterUiToExpressionImpl.cjs.map +1 -1
  15. package/dist/filters/converters/filterUiToExpressionImpl.d.ts.map +1 -1
  16. package/dist/filters/converters/filterUiToExpressionImpl.js +81 -101
  17. package/dist/filters/converters/filterUiToExpressionImpl.js.map +1 -1
  18. package/dist/filters/distill.cjs +18 -18
  19. package/dist/filters/distill.cjs.map +1 -1
  20. package/dist/filters/distill.d.ts.map +1 -1
  21. package/dist/filters/distill.js +18 -18
  22. package/dist/filters/distill.js.map +1 -1
  23. package/dist/filters/traverse.cjs +49 -0
  24. package/dist/filters/traverse.cjs.map +1 -0
  25. package/dist/filters/traverse.d.ts +25 -0
  26. package/dist/filters/traverse.d.ts.map +1 -0
  27. package/dist/filters/traverse.js +46 -0
  28. package/dist/filters/traverse.js.map +1 -0
  29. package/dist/package.json.cjs +1 -1
  30. package/dist/package.json.js +1 -1
  31. package/dist/pframe_utils/querySpec.d.ts +1 -1
  32. package/dist/pframe_utils/querySpec.d.ts.map +1 -1
  33. package/dist/render/api.cjs +1 -1
  34. package/dist/render/api.cjs.map +1 -1
  35. package/dist/render/api.d.ts.map +1 -1
  36. package/dist/render/api.js +2 -2
  37. package/dist/render/api.js.map +1 -1
  38. package/package.json +5 -5
  39. package/src/components/PlDataTable/table.ts +28 -10
  40. package/src/components/PlDataTable/v5.ts +1 -2
  41. package/src/filters/converters/filterToQuery.ts +18 -11
  42. package/src/filters/converters/filterUiToExpressionImpl.ts +81 -125
  43. package/src/filters/distill.ts +16 -20
  44. package/src/filters/traverse.test.ts +134 -0
  45. package/src/filters/traverse.ts +64 -0
  46. package/src/pframe_utils/querySpec.ts +1 -1
  47. package/src/render/api.ts +2 -2
@@ -2,109 +2,89 @@
2
2
 
3
3
  var plModelCommon = require('@milaboratories/pl-model-common');
4
4
  var ptablerExpressionJs = require('@milaboratories/ptabler-expression-js');
5
+ var traverse = require('../traverse.cjs');
5
6
 
6
7
  function convertFilterUiToExpressionImpl(value) {
7
- if (value.type === "or") {
8
- const expressions = value.filters
9
- .filter((f) => f.type !== undefined)
10
- .map(convertFilterUiToExpressionImpl);
11
- if (expressions.length === 0) {
12
- throw new Error("OR filter requires at least one operand");
13
- }
14
- return ptablerExpressionJs.or(...expressions);
15
- }
16
- if (value.type === "and") {
17
- const expressions = value.filters
18
- .filter((f) => f.type !== undefined)
19
- .map(convertFilterUiToExpressionImpl);
20
- if (expressions.length === 0) {
21
- throw new Error("AND filter requires at least one operand");
22
- }
23
- return ptablerExpressionJs.and(...expressions);
24
- }
25
- if (value.type === "not") {
26
- return convertFilterUiToExpressionImpl(value.filter).not();
27
- }
28
- if (value.type === "isNA") {
29
- return ptablerExpressionJs.col(value.column).isNull();
30
- }
31
- if (value.type === "isNotNA") {
32
- return ptablerExpressionJs.col(value.column).isNotNull();
33
- }
34
- if (value.type === "patternEquals") {
35
- return ptablerExpressionJs.col(value.column).eq(ptablerExpressionJs.lit(value.value));
36
- }
37
- if (value.type === "patternNotEquals") {
38
- return ptablerExpressionJs.col(value.column).neq(ptablerExpressionJs.lit(value.value));
39
- }
40
- if (value.type === "patternContainSubsequence") {
41
- return ptablerExpressionJs.col(value.column).strContains(value.value, false, true);
42
- }
43
- if (value.type === "patternNotContainSubsequence") {
44
- return ptablerExpressionJs.col(value.column).strContains(value.value, false, true).not();
45
- }
46
- if (value.type === "equal") {
47
- return ptablerExpressionJs.col(value.column).eq(ptablerExpressionJs.lit(value.x));
48
- }
49
- if (value.type === "notEqual") {
50
- return ptablerExpressionJs.col(value.column).neq(ptablerExpressionJs.lit(value.x));
51
- }
52
- if (value.type === "lessThan") {
53
- return ptablerExpressionJs.col(value.column).lt(ptablerExpressionJs.lit(value.x));
54
- }
55
- if (value.type === "greaterThan") {
56
- return ptablerExpressionJs.col(value.column).gt(ptablerExpressionJs.lit(value.x));
57
- }
58
- if (value.type === "lessThanOrEqual") {
59
- return ptablerExpressionJs.col(value.column).le(ptablerExpressionJs.lit(value.x));
60
- }
61
- if (value.type === "greaterThanOrEqual") {
62
- return ptablerExpressionJs.col(value.column).ge(ptablerExpressionJs.lit(value.x));
63
- }
64
- if (value.type === "equalToColumn") {
65
- return ptablerExpressionJs.col(value.column).eq(ptablerExpressionJs.col(value.rhs));
66
- }
67
- if (value.type === "greaterThanColumn") {
68
- if (value.minDiff !== undefined && value.minDiff !== 0) {
69
- return ptablerExpressionJs.col(value.column).plus(ptablerExpressionJs.lit(value.minDiff)).gt(ptablerExpressionJs.col(value.rhs));
70
- }
71
- return ptablerExpressionJs.col(value.column).gt(ptablerExpressionJs.col(value.rhs));
72
- }
73
- if (value.type === "lessThanColumn") {
74
- if (value.minDiff !== undefined && value.minDiff !== 0) {
75
- return ptablerExpressionJs.col(value.column).plus(ptablerExpressionJs.lit(value.minDiff)).lt(ptablerExpressionJs.col(value.rhs));
76
- }
77
- return ptablerExpressionJs.col(value.column).lt(ptablerExpressionJs.col(value.rhs));
78
- }
79
- if (value.type === "greaterThanColumnOrEqual") {
80
- if (value.minDiff !== undefined && value.minDiff !== 0) {
81
- return ptablerExpressionJs.col(value.column).plus(ptablerExpressionJs.lit(value.minDiff)).ge(ptablerExpressionJs.col(value.rhs));
82
- }
83
- return ptablerExpressionJs.col(value.column).ge(ptablerExpressionJs.col(value.rhs));
84
- }
85
- if (value.type === "lessThanColumnOrEqual") {
86
- if (value.minDiff !== undefined && value.minDiff !== 0) {
87
- return ptablerExpressionJs.col(value.column).plus(ptablerExpressionJs.lit(value.minDiff)).le(ptablerExpressionJs.col(value.rhs));
88
- }
89
- return ptablerExpressionJs.col(value.column).le(ptablerExpressionJs.col(value.rhs));
90
- }
91
- if (value.type === "topN") {
92
- return ptablerExpressionJs.rank(ptablerExpressionJs.col(value.column), true).over([]).le(ptablerExpressionJs.lit(value.n));
93
- }
94
- if (value.type === "bottomN") {
95
- return ptablerExpressionJs.rank(ptablerExpressionJs.col(value.column), false).over([]).le(ptablerExpressionJs.lit(value.n));
96
- }
97
- if (value.type === "patternMatchesRegularExpression" ||
98
- value.type === "patternFuzzyContainSubsequence" ||
99
- value.type === "inSet" ||
100
- value.type === "notInSet" ||
101
- value.type === "ifNa") {
102
- throw new Error("Not implemented filter type: " + value.type);
103
- }
104
- if (value.type === undefined) {
105
- throw new Error("Filter type is undefined, this should not happen");
8
+ return traverse.traverseFilterSpec(value, {
9
+ leaf: leafToExpressionImpl,
10
+ and: (expressions) => {
11
+ if (expressions.length === 0) {
12
+ throw new Error("AND filter requires at least one operand");
13
+ }
14
+ return ptablerExpressionJs.and(...expressions);
15
+ },
16
+ or: (expressions) => {
17
+ if (expressions.length === 0) {
18
+ throw new Error("OR filter requires at least one operand");
19
+ }
20
+ return ptablerExpressionJs.or(...expressions);
21
+ },
22
+ not: (result) => result.not(),
23
+ });
24
+ }
25
+ function leafToExpressionImpl(value) {
26
+ switch (value.type) {
27
+ case "isNA":
28
+ return ptablerExpressionJs.col(value.column).isNull();
29
+ case "isNotNA":
30
+ return ptablerExpressionJs.col(value.column).isNotNull();
31
+ case "patternEquals":
32
+ return ptablerExpressionJs.col(value.column).eq(ptablerExpressionJs.lit(value.value));
33
+ case "patternNotEquals":
34
+ return ptablerExpressionJs.col(value.column).neq(ptablerExpressionJs.lit(value.value));
35
+ case "patternContainSubsequence":
36
+ return ptablerExpressionJs.col(value.column).strContains(value.value, false, true);
37
+ case "patternNotContainSubsequence":
38
+ return ptablerExpressionJs.col(value.column).strContains(value.value, false, true).not();
39
+ case "equal":
40
+ return ptablerExpressionJs.col(value.column).eq(ptablerExpressionJs.lit(value.x));
41
+ case "notEqual":
42
+ return ptablerExpressionJs.col(value.column).neq(ptablerExpressionJs.lit(value.x));
43
+ case "lessThan":
44
+ return ptablerExpressionJs.col(value.column).lt(ptablerExpressionJs.lit(value.x));
45
+ case "greaterThan":
46
+ return ptablerExpressionJs.col(value.column).gt(ptablerExpressionJs.lit(value.x));
47
+ case "lessThanOrEqual":
48
+ return ptablerExpressionJs.col(value.column).le(ptablerExpressionJs.lit(value.x));
49
+ case "greaterThanOrEqual":
50
+ return ptablerExpressionJs.col(value.column).ge(ptablerExpressionJs.lit(value.x));
51
+ case "equalToColumn":
52
+ return ptablerExpressionJs.col(value.column).eq(ptablerExpressionJs.col(value.rhs));
53
+ case "greaterThanColumn":
54
+ if (value.minDiff !== undefined && value.minDiff !== 0) {
55
+ return ptablerExpressionJs.col(value.column).plus(ptablerExpressionJs.lit(value.minDiff)).gt(ptablerExpressionJs.col(value.rhs));
56
+ }
57
+ return ptablerExpressionJs.col(value.column).gt(ptablerExpressionJs.col(value.rhs));
58
+ case "lessThanColumn":
59
+ if (value.minDiff !== undefined && value.minDiff !== 0) {
60
+ return ptablerExpressionJs.col(value.column).plus(ptablerExpressionJs.lit(value.minDiff)).lt(ptablerExpressionJs.col(value.rhs));
61
+ }
62
+ return ptablerExpressionJs.col(value.column).lt(ptablerExpressionJs.col(value.rhs));
63
+ case "greaterThanColumnOrEqual":
64
+ if (value.minDiff !== undefined && value.minDiff !== 0) {
65
+ return ptablerExpressionJs.col(value.column).plus(ptablerExpressionJs.lit(value.minDiff)).ge(ptablerExpressionJs.col(value.rhs));
66
+ }
67
+ return ptablerExpressionJs.col(value.column).ge(ptablerExpressionJs.col(value.rhs));
68
+ case "lessThanColumnOrEqual":
69
+ if (value.minDiff !== undefined && value.minDiff !== 0) {
70
+ return ptablerExpressionJs.col(value.column).plus(ptablerExpressionJs.lit(value.minDiff)).le(ptablerExpressionJs.col(value.rhs));
71
+ }
72
+ return ptablerExpressionJs.col(value.column).le(ptablerExpressionJs.col(value.rhs));
73
+ case "topN":
74
+ return ptablerExpressionJs.rank(ptablerExpressionJs.col(value.column), true).over([]).le(ptablerExpressionJs.lit(value.n));
75
+ case "bottomN":
76
+ return ptablerExpressionJs.rank(ptablerExpressionJs.col(value.column), false).over([]).le(ptablerExpressionJs.lit(value.n));
77
+ case "patternMatchesRegularExpression":
78
+ case "patternFuzzyContainSubsequence":
79
+ case "inSet":
80
+ case "notInSet":
81
+ case "ifNa":
82
+ throw new Error("Not implemented filter type: " + value.type);
83
+ case undefined:
84
+ throw new Error("Filter type is undefined, this should not happen");
85
+ default:
86
+ plModelCommon.assertNever(value);
106
87
  }
107
- plModelCommon.assertNever(value);
108
88
  }
109
89
  function convertFilterUiToExpressions(value) {
110
90
  return convertFilterUiToExpressionImpl(value).toJSON();
@@ -1 +1 @@
1
- {"version":3,"file":"filterUiToExpressionImpl.cjs","sources":["../../../src/filters/converters/filterUiToExpressionImpl.ts"],"sourcesContent":["import { assertNever } from \"@milaboratories/pl-model-common\";\nimport {\n and,\n col,\n lit,\n or,\n rank,\n type Expression,\n type ExpressionImpl,\n} from \"@milaboratories/ptabler-expression-js\";\nimport type { FilterSpec } from \"../types\";\n\nexport function convertFilterUiToExpressionImpl(value: FilterSpec): ExpressionImpl {\n if (value.type === \"or\") {\n const expressions = value.filters\n .filter((f) => f.type !== undefined)\n .map(convertFilterUiToExpressionImpl);\n if (expressions.length === 0) {\n throw new Error(\"OR filter requires at least one operand\");\n }\n return or(...expressions);\n }\n\n if (value.type === \"and\") {\n const expressions = value.filters\n .filter((f) => f.type !== undefined)\n .map(convertFilterUiToExpressionImpl);\n if (expressions.length === 0) {\n throw new Error(\"AND filter requires at least one operand\");\n }\n return and(...expressions);\n }\n\n if (value.type === \"not\") {\n return convertFilterUiToExpressionImpl(value.filter).not();\n }\n\n if (value.type === \"isNA\") {\n return col(value.column).isNull();\n }\n\n if (value.type === \"isNotNA\") {\n return col(value.column).isNotNull();\n }\n\n if (value.type === \"patternEquals\") {\n return col(value.column).eq(lit(value.value));\n }\n\n if (value.type === \"patternNotEquals\") {\n return col(value.column).neq(lit(value.value));\n }\n\n if (value.type === \"patternContainSubsequence\") {\n return col(value.column).strContains(value.value, false, true);\n }\n\n if (value.type === \"patternNotContainSubsequence\") {\n return col(value.column).strContains(value.value, false, true).not();\n }\n\n if (value.type === \"equal\") {\n return col(value.column).eq(lit(value.x));\n }\n\n if (value.type === \"notEqual\") {\n return col(value.column).neq(lit(value.x));\n }\n\n if (value.type === \"lessThan\") {\n return col(value.column).lt(lit(value.x));\n }\n\n if (value.type === \"greaterThan\") {\n return col(value.column).gt(lit(value.x));\n }\n\n if (value.type === \"lessThanOrEqual\") {\n return col(value.column).le(lit(value.x));\n }\n\n if (value.type === \"greaterThanOrEqual\") {\n return col(value.column).ge(lit(value.x));\n }\n\n if (value.type === \"equalToColumn\") {\n return col(value.column).eq(col(value.rhs));\n }\n\n if (value.type === \"greaterThanColumn\") {\n if (value.minDiff !== undefined && value.minDiff !== 0) {\n return col(value.column).plus(lit(value.minDiff)).gt(col(value.rhs));\n }\n return col(value.column).gt(col(value.rhs));\n }\n\n if (value.type === \"lessThanColumn\") {\n if (value.minDiff !== undefined && value.minDiff !== 0) {\n return col(value.column).plus(lit(value.minDiff)).lt(col(value.rhs));\n }\n return col(value.column).lt(col(value.rhs));\n }\n\n if (value.type === \"greaterThanColumnOrEqual\") {\n if (value.minDiff !== undefined && value.minDiff !== 0) {\n return col(value.column).plus(lit(value.minDiff)).ge(col(value.rhs));\n }\n return col(value.column).ge(col(value.rhs));\n }\n\n if (value.type === \"lessThanColumnOrEqual\") {\n if (value.minDiff !== undefined && value.minDiff !== 0) {\n return col(value.column).plus(lit(value.minDiff)).le(col(value.rhs));\n }\n return col(value.column).le(col(value.rhs));\n }\n\n if (value.type === \"topN\") {\n return rank(col(value.column), true).over([]).le(lit(value.n));\n }\n\n if (value.type === \"bottomN\") {\n return rank(col(value.column), false).over([]).le(lit(value.n));\n }\n\n if (\n value.type === \"patternMatchesRegularExpression\" ||\n value.type === \"patternFuzzyContainSubsequence\" ||\n value.type === \"inSet\" ||\n value.type === \"notInSet\" ||\n value.type === \"ifNa\"\n ) {\n throw new Error(\"Not implemented filter type: \" + value.type);\n }\n\n if (value.type === undefined) {\n throw new Error(\"Filter type is undefined, this should not happen\");\n }\n\n assertNever(value);\n}\n\nexport function convertFilterUiToExpressions(value: FilterSpec): Expression {\n return convertFilterUiToExpressionImpl(value).toJSON();\n}\n"],"names":["or","and","col","lit","rank","assertNever"],"mappings":"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"}
1
+ {"version":3,"file":"filterUiToExpressionImpl.cjs","sources":["../../../src/filters/converters/filterUiToExpressionImpl.ts"],"sourcesContent":["import { assertNever } from \"@milaboratories/pl-model-common\";\nimport type { FilterSpecLeaf } from \"@milaboratories/pl-model-common\";\nimport {\n and,\n col,\n lit,\n or,\n rank,\n type Expression,\n type ExpressionImpl,\n} from \"@milaboratories/ptabler-expression-js\";\nimport type { FilterSpec } from \"../types\";\nimport { traverseFilterSpec } from \"../traverse\";\n\nexport function convertFilterUiToExpressionImpl(value: FilterSpec): ExpressionImpl {\n return traverseFilterSpec(value, {\n leaf: leafToExpressionImpl,\n and: (expressions) => {\n if (expressions.length === 0) {\n throw new Error(\"AND filter requires at least one operand\");\n }\n return and(...expressions);\n },\n or: (expressions) => {\n if (expressions.length === 0) {\n throw new Error(\"OR filter requires at least one operand\");\n }\n return or(...expressions);\n },\n not: (result) => result.not(),\n });\n}\n\nfunction leafToExpressionImpl(value: FilterSpecLeaf): ExpressionImpl {\n switch (value.type) {\n case \"isNA\":\n return col(value.column).isNull();\n case \"isNotNA\":\n return col(value.column).isNotNull();\n case \"patternEquals\":\n return col(value.column).eq(lit(value.value));\n case \"patternNotEquals\":\n return col(value.column).neq(lit(value.value));\n case \"patternContainSubsequence\":\n return col(value.column).strContains(value.value, false, true);\n case \"patternNotContainSubsequence\":\n return col(value.column).strContains(value.value, false, true).not();\n case \"equal\":\n return col(value.column).eq(lit(value.x));\n case \"notEqual\":\n return col(value.column).neq(lit(value.x));\n case \"lessThan\":\n return col(value.column).lt(lit(value.x));\n case \"greaterThan\":\n return col(value.column).gt(lit(value.x));\n case \"lessThanOrEqual\":\n return col(value.column).le(lit(value.x));\n case \"greaterThanOrEqual\":\n return col(value.column).ge(lit(value.x));\n case \"equalToColumn\":\n return col(value.column).eq(col(value.rhs));\n case \"greaterThanColumn\":\n if (value.minDiff !== undefined && value.minDiff !== 0) {\n return col(value.column).plus(lit(value.minDiff)).gt(col(value.rhs));\n }\n return col(value.column).gt(col(value.rhs));\n case \"lessThanColumn\":\n if (value.minDiff !== undefined && value.minDiff !== 0) {\n return col(value.column).plus(lit(value.minDiff)).lt(col(value.rhs));\n }\n return col(value.column).lt(col(value.rhs));\n case \"greaterThanColumnOrEqual\":\n if (value.minDiff !== undefined && value.minDiff !== 0) {\n return col(value.column).plus(lit(value.minDiff)).ge(col(value.rhs));\n }\n return col(value.column).ge(col(value.rhs));\n case \"lessThanColumnOrEqual\":\n if (value.minDiff !== undefined && value.minDiff !== 0) {\n return col(value.column).plus(lit(value.minDiff)).le(col(value.rhs));\n }\n return col(value.column).le(col(value.rhs));\n case \"topN\":\n return rank(col(value.column), true).over([]).le(lit(value.n));\n case \"bottomN\":\n return rank(col(value.column), false).over([]).le(lit(value.n));\n case \"patternMatchesRegularExpression\":\n case \"patternFuzzyContainSubsequence\":\n case \"inSet\":\n case \"notInSet\":\n case \"ifNa\":\n throw new Error(\"Not implemented filter type: \" + value.type);\n case undefined:\n throw new Error(\"Filter type is undefined, this should not happen\");\n default:\n assertNever(value);\n }\n}\n\nexport function convertFilterUiToExpressions(value: FilterSpec): Expression {\n return convertFilterUiToExpressionImpl(value).toJSON();\n}\n"],"names":["traverseFilterSpec","and","or","col","lit","rank","assertNever"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"filterUiToExpressionImpl.d.ts","sourceRoot":"","sources":["../../../src/filters/converters/filterUiToExpressionImpl.ts"],"names":[],"mappings":"AACA,OAAO,EAML,KAAK,UAAU,EACf,KAAK,cAAc,EACpB,MAAM,uCAAuC,CAAC;AAC/C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAE3C,wBAAgB,+BAA+B,CAAC,KAAK,EAAE,UAAU,GAAG,cAAc,CAgIjF;AAED,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,UAAU,GAAG,UAAU,CAE1E"}
1
+ {"version":3,"file":"filterUiToExpressionImpl.d.ts","sourceRoot":"","sources":["../../../src/filters/converters/filterUiToExpressionImpl.ts"],"names":[],"mappings":"AAEA,OAAO,EAML,KAAK,UAAU,EACf,KAAK,cAAc,EACpB,MAAM,uCAAuC,CAAC;AAC/C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAG3C,wBAAgB,+BAA+B,CAAC,KAAK,EAAE,UAAU,GAAG,cAAc,CAiBjF;AAmED,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,UAAU,GAAG,UAAU,CAE1E"}
@@ -1,108 +1,88 @@
1
1
  import { assertNever } from '@milaboratories/pl-model-common';
2
- import { or, and, col, lit, rank } from '@milaboratories/ptabler-expression-js';
2
+ import { or, and, rank, col, lit } from '@milaboratories/ptabler-expression-js';
3
+ import { traverseFilterSpec } from '../traverse.js';
3
4
 
4
5
  function convertFilterUiToExpressionImpl(value) {
5
- if (value.type === "or") {
6
- const expressions = value.filters
7
- .filter((f) => f.type !== undefined)
8
- .map(convertFilterUiToExpressionImpl);
9
- if (expressions.length === 0) {
10
- throw new Error("OR filter requires at least one operand");
11
- }
12
- return or(...expressions);
13
- }
14
- if (value.type === "and") {
15
- const expressions = value.filters
16
- .filter((f) => f.type !== undefined)
17
- .map(convertFilterUiToExpressionImpl);
18
- if (expressions.length === 0) {
19
- throw new Error("AND filter requires at least one operand");
20
- }
21
- return and(...expressions);
22
- }
23
- if (value.type === "not") {
24
- return convertFilterUiToExpressionImpl(value.filter).not();
25
- }
26
- if (value.type === "isNA") {
27
- return col(value.column).isNull();
28
- }
29
- if (value.type === "isNotNA") {
30
- return col(value.column).isNotNull();
31
- }
32
- if (value.type === "patternEquals") {
33
- return col(value.column).eq(lit(value.value));
34
- }
35
- if (value.type === "patternNotEquals") {
36
- return col(value.column).neq(lit(value.value));
37
- }
38
- if (value.type === "patternContainSubsequence") {
39
- return col(value.column).strContains(value.value, false, true);
40
- }
41
- if (value.type === "patternNotContainSubsequence") {
42
- return col(value.column).strContains(value.value, false, true).not();
43
- }
44
- if (value.type === "equal") {
45
- return col(value.column).eq(lit(value.x));
46
- }
47
- if (value.type === "notEqual") {
48
- return col(value.column).neq(lit(value.x));
49
- }
50
- if (value.type === "lessThan") {
51
- return col(value.column).lt(lit(value.x));
52
- }
53
- if (value.type === "greaterThan") {
54
- return col(value.column).gt(lit(value.x));
55
- }
56
- if (value.type === "lessThanOrEqual") {
57
- return col(value.column).le(lit(value.x));
58
- }
59
- if (value.type === "greaterThanOrEqual") {
60
- return col(value.column).ge(lit(value.x));
61
- }
62
- if (value.type === "equalToColumn") {
63
- return col(value.column).eq(col(value.rhs));
64
- }
65
- if (value.type === "greaterThanColumn") {
66
- if (value.minDiff !== undefined && value.minDiff !== 0) {
67
- return col(value.column).plus(lit(value.minDiff)).gt(col(value.rhs));
68
- }
69
- return col(value.column).gt(col(value.rhs));
70
- }
71
- if (value.type === "lessThanColumn") {
72
- if (value.minDiff !== undefined && value.minDiff !== 0) {
73
- return col(value.column).plus(lit(value.minDiff)).lt(col(value.rhs));
74
- }
75
- return col(value.column).lt(col(value.rhs));
76
- }
77
- if (value.type === "greaterThanColumnOrEqual") {
78
- if (value.minDiff !== undefined && value.minDiff !== 0) {
79
- return col(value.column).plus(lit(value.minDiff)).ge(col(value.rhs));
80
- }
81
- return col(value.column).ge(col(value.rhs));
82
- }
83
- if (value.type === "lessThanColumnOrEqual") {
84
- if (value.minDiff !== undefined && value.minDiff !== 0) {
85
- return col(value.column).plus(lit(value.minDiff)).le(col(value.rhs));
86
- }
87
- return col(value.column).le(col(value.rhs));
88
- }
89
- if (value.type === "topN") {
90
- return rank(col(value.column), true).over([]).le(lit(value.n));
91
- }
92
- if (value.type === "bottomN") {
93
- return rank(col(value.column), false).over([]).le(lit(value.n));
94
- }
95
- if (value.type === "patternMatchesRegularExpression" ||
96
- value.type === "patternFuzzyContainSubsequence" ||
97
- value.type === "inSet" ||
98
- value.type === "notInSet" ||
99
- value.type === "ifNa") {
100
- throw new Error("Not implemented filter type: " + value.type);
101
- }
102
- if (value.type === undefined) {
103
- throw new Error("Filter type is undefined, this should not happen");
6
+ return traverseFilterSpec(value, {
7
+ leaf: leafToExpressionImpl,
8
+ and: (expressions) => {
9
+ if (expressions.length === 0) {
10
+ throw new Error("AND filter requires at least one operand");
11
+ }
12
+ return and(...expressions);
13
+ },
14
+ or: (expressions) => {
15
+ if (expressions.length === 0) {
16
+ throw new Error("OR filter requires at least one operand");
17
+ }
18
+ return or(...expressions);
19
+ },
20
+ not: (result) => result.not(),
21
+ });
22
+ }
23
+ function leafToExpressionImpl(value) {
24
+ switch (value.type) {
25
+ case "isNA":
26
+ return col(value.column).isNull();
27
+ case "isNotNA":
28
+ return col(value.column).isNotNull();
29
+ case "patternEquals":
30
+ return col(value.column).eq(lit(value.value));
31
+ case "patternNotEquals":
32
+ return col(value.column).neq(lit(value.value));
33
+ case "patternContainSubsequence":
34
+ return col(value.column).strContains(value.value, false, true);
35
+ case "patternNotContainSubsequence":
36
+ return col(value.column).strContains(value.value, false, true).not();
37
+ case "equal":
38
+ return col(value.column).eq(lit(value.x));
39
+ case "notEqual":
40
+ return col(value.column).neq(lit(value.x));
41
+ case "lessThan":
42
+ return col(value.column).lt(lit(value.x));
43
+ case "greaterThan":
44
+ return col(value.column).gt(lit(value.x));
45
+ case "lessThanOrEqual":
46
+ return col(value.column).le(lit(value.x));
47
+ case "greaterThanOrEqual":
48
+ return col(value.column).ge(lit(value.x));
49
+ case "equalToColumn":
50
+ return col(value.column).eq(col(value.rhs));
51
+ case "greaterThanColumn":
52
+ if (value.minDiff !== undefined && value.minDiff !== 0) {
53
+ return col(value.column).plus(lit(value.minDiff)).gt(col(value.rhs));
54
+ }
55
+ return col(value.column).gt(col(value.rhs));
56
+ case "lessThanColumn":
57
+ if (value.minDiff !== undefined && value.minDiff !== 0) {
58
+ return col(value.column).plus(lit(value.minDiff)).lt(col(value.rhs));
59
+ }
60
+ return col(value.column).lt(col(value.rhs));
61
+ case "greaterThanColumnOrEqual":
62
+ if (value.minDiff !== undefined && value.minDiff !== 0) {
63
+ return col(value.column).plus(lit(value.minDiff)).ge(col(value.rhs));
64
+ }
65
+ return col(value.column).ge(col(value.rhs));
66
+ case "lessThanColumnOrEqual":
67
+ if (value.minDiff !== undefined && value.minDiff !== 0) {
68
+ return col(value.column).plus(lit(value.minDiff)).le(col(value.rhs));
69
+ }
70
+ return col(value.column).le(col(value.rhs));
71
+ case "topN":
72
+ return rank(col(value.column), true).over([]).le(lit(value.n));
73
+ case "bottomN":
74
+ return rank(col(value.column), false).over([]).le(lit(value.n));
75
+ case "patternMatchesRegularExpression":
76
+ case "patternFuzzyContainSubsequence":
77
+ case "inSet":
78
+ case "notInSet":
79
+ case "ifNa":
80
+ throw new Error("Not implemented filter type: " + value.type);
81
+ case undefined:
82
+ throw new Error("Filter type is undefined, this should not happen");
83
+ default:
84
+ assertNever(value);
104
85
  }
105
- assertNever(value);
106
86
  }
107
87
  function convertFilterUiToExpressions(value) {
108
88
  return convertFilterUiToExpressionImpl(value).toJSON();
@@ -1 +1 @@
1
- {"version":3,"file":"filterUiToExpressionImpl.js","sources":["../../../src/filters/converters/filterUiToExpressionImpl.ts"],"sourcesContent":["import { assertNever } from \"@milaboratories/pl-model-common\";\nimport {\n and,\n col,\n lit,\n or,\n rank,\n type Expression,\n type ExpressionImpl,\n} from \"@milaboratories/ptabler-expression-js\";\nimport type { FilterSpec } from \"../types\";\n\nexport function convertFilterUiToExpressionImpl(value: FilterSpec): ExpressionImpl {\n if (value.type === \"or\") {\n const expressions = value.filters\n .filter((f) => f.type !== undefined)\n .map(convertFilterUiToExpressionImpl);\n if (expressions.length === 0) {\n throw new Error(\"OR filter requires at least one operand\");\n }\n return or(...expressions);\n }\n\n if (value.type === \"and\") {\n const expressions = value.filters\n .filter((f) => f.type !== undefined)\n .map(convertFilterUiToExpressionImpl);\n if (expressions.length === 0) {\n throw new Error(\"AND filter requires at least one operand\");\n }\n return and(...expressions);\n }\n\n if (value.type === \"not\") {\n return convertFilterUiToExpressionImpl(value.filter).not();\n }\n\n if (value.type === \"isNA\") {\n return col(value.column).isNull();\n }\n\n if (value.type === \"isNotNA\") {\n return col(value.column).isNotNull();\n }\n\n if (value.type === \"patternEquals\") {\n return col(value.column).eq(lit(value.value));\n }\n\n if (value.type === \"patternNotEquals\") {\n return col(value.column).neq(lit(value.value));\n }\n\n if (value.type === \"patternContainSubsequence\") {\n return col(value.column).strContains(value.value, false, true);\n }\n\n if (value.type === \"patternNotContainSubsequence\") {\n return col(value.column).strContains(value.value, false, true).not();\n }\n\n if (value.type === \"equal\") {\n return col(value.column).eq(lit(value.x));\n }\n\n if (value.type === \"notEqual\") {\n return col(value.column).neq(lit(value.x));\n }\n\n if (value.type === \"lessThan\") {\n return col(value.column).lt(lit(value.x));\n }\n\n if (value.type === \"greaterThan\") {\n return col(value.column).gt(lit(value.x));\n }\n\n if (value.type === \"lessThanOrEqual\") {\n return col(value.column).le(lit(value.x));\n }\n\n if (value.type === \"greaterThanOrEqual\") {\n return col(value.column).ge(lit(value.x));\n }\n\n if (value.type === \"equalToColumn\") {\n return col(value.column).eq(col(value.rhs));\n }\n\n if (value.type === \"greaterThanColumn\") {\n if (value.minDiff !== undefined && value.minDiff !== 0) {\n return col(value.column).plus(lit(value.minDiff)).gt(col(value.rhs));\n }\n return col(value.column).gt(col(value.rhs));\n }\n\n if (value.type === \"lessThanColumn\") {\n if (value.minDiff !== undefined && value.minDiff !== 0) {\n return col(value.column).plus(lit(value.minDiff)).lt(col(value.rhs));\n }\n return col(value.column).lt(col(value.rhs));\n }\n\n if (value.type === \"greaterThanColumnOrEqual\") {\n if (value.minDiff !== undefined && value.minDiff !== 0) {\n return col(value.column).plus(lit(value.minDiff)).ge(col(value.rhs));\n }\n return col(value.column).ge(col(value.rhs));\n }\n\n if (value.type === \"lessThanColumnOrEqual\") {\n if (value.minDiff !== undefined && value.minDiff !== 0) {\n return col(value.column).plus(lit(value.minDiff)).le(col(value.rhs));\n }\n return col(value.column).le(col(value.rhs));\n }\n\n if (value.type === \"topN\") {\n return rank(col(value.column), true).over([]).le(lit(value.n));\n }\n\n if (value.type === \"bottomN\") {\n return rank(col(value.column), false).over([]).le(lit(value.n));\n }\n\n if (\n value.type === \"patternMatchesRegularExpression\" ||\n value.type === \"patternFuzzyContainSubsequence\" ||\n value.type === \"inSet\" ||\n value.type === \"notInSet\" ||\n value.type === \"ifNa\"\n ) {\n throw new Error(\"Not implemented filter type: \" + value.type);\n }\n\n if (value.type === undefined) {\n throw new Error(\"Filter type is undefined, this should not happen\");\n }\n\n assertNever(value);\n}\n\nexport function convertFilterUiToExpressions(value: FilterSpec): Expression {\n return convertFilterUiToExpressionImpl(value).toJSON();\n}\n"],"names":[],"mappings":";;;AAYM,SAAU,+BAA+B,CAAC,KAAiB,EAAA;AAC/D,IAAA,IAAI,KAAK,CAAC,IAAI,KAAK,IAAI,EAAE;AACvB,QAAA,MAAM,WAAW,GAAG,KAAK,CAAC;aACvB,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,SAAS;aAClC,GAAG,CAAC,+BAA+B,CAAC;AACvC,QAAA,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE;AAC5B,YAAA,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC;QAC5D;AACA,QAAA,OAAO,EAAE,CAAC,GAAG,WAAW,CAAC;IAC3B;AAEA,IAAA,IAAI,KAAK,CAAC,IAAI,KAAK,KAAK,EAAE;AACxB,QAAA,MAAM,WAAW,GAAG,KAAK,CAAC;aACvB,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,SAAS;aAClC,GAAG,CAAC,+BAA+B,CAAC;AACvC,QAAA,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE;AAC5B,YAAA,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC;QAC7D;AACA,QAAA,OAAO,GAAG,CAAC,GAAG,WAAW,CAAC;IAC5B;AAEA,IAAA,IAAI,KAAK,CAAC,IAAI,KAAK,KAAK,EAAE;QACxB,OAAO,+BAA+B,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE;IAC5D;AAEA,IAAA,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE;QACzB,OAAO,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE;IACnC;AAEA,IAAA,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE;QAC5B,OAAO,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,SAAS,EAAE;IACtC;AAEA,IAAA,IAAI,KAAK,CAAC,IAAI,KAAK,eAAe,EAAE;AAClC,QAAA,OAAO,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC/C;AAEA,IAAA,IAAI,KAAK,CAAC,IAAI,KAAK,kBAAkB,EAAE;AACrC,QAAA,OAAO,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAChD;AAEA,IAAA,IAAI,KAAK,CAAC,IAAI,KAAK,2BAA2B,EAAE;AAC9C,QAAA,OAAO,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC;IAChE;AAEA,IAAA,IAAI,KAAK,CAAC,IAAI,KAAK,8BAA8B,EAAE;QACjD,OAAO,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,GAAG,EAAE;IACtE;AAEA,IAAA,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE;AAC1B,QAAA,OAAO,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC3C;AAEA,IAAA,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU,EAAE;AAC7B,QAAA,OAAO,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC5C;AAEA,IAAA,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU,EAAE;AAC7B,QAAA,OAAO,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC3C;AAEA,IAAA,IAAI,KAAK,CAAC,IAAI,KAAK,aAAa,EAAE;AAChC,QAAA,OAAO,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC3C;AAEA,IAAA,IAAI,KAAK,CAAC,IAAI,KAAK,iBAAiB,EAAE;AACpC,QAAA,OAAO,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC3C;AAEA,IAAA,IAAI,KAAK,CAAC,IAAI,KAAK,oBAAoB,EAAE;AACvC,QAAA,OAAO,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC3C;AAEA,IAAA,IAAI,KAAK,CAAC,IAAI,KAAK,eAAe,EAAE;AAClC,QAAA,OAAO,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC7C;AAEA,IAAA,IAAI,KAAK,CAAC,IAAI,KAAK,mBAAmB,EAAE;AACtC,QAAA,IAAI,KAAK,CAAC,OAAO,KAAK,SAAS,IAAI,KAAK,CAAC,OAAO,KAAK,CAAC,EAAE;YACtD,OAAO,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACtE;AACA,QAAA,OAAO,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC7C;AAEA,IAAA,IAAI,KAAK,CAAC,IAAI,KAAK,gBAAgB,EAAE;AACnC,QAAA,IAAI,KAAK,CAAC,OAAO,KAAK,SAAS,IAAI,KAAK,CAAC,OAAO,KAAK,CAAC,EAAE;YACtD,OAAO,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACtE;AACA,QAAA,OAAO,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC7C;AAEA,IAAA,IAAI,KAAK,CAAC,IAAI,KAAK,0BAA0B,EAAE;AAC7C,QAAA,IAAI,KAAK,CAAC,OAAO,KAAK,SAAS,IAAI,KAAK,CAAC,OAAO,KAAK,CAAC,EAAE;YACtD,OAAO,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACtE;AACA,QAAA,OAAO,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC7C;AAEA,IAAA,IAAI,KAAK,CAAC,IAAI,KAAK,uBAAuB,EAAE;AAC1C,QAAA,IAAI,KAAK,CAAC,OAAO,KAAK,SAAS,IAAI,KAAK,CAAC,OAAO,KAAK,CAAC,EAAE;YACtD,OAAO,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACtE;AACA,QAAA,OAAO,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC7C;AAEA,IAAA,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE;QACzB,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAChE;AAEA,IAAA,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE;QAC5B,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACjE;AAEA,IAAA,IACE,KAAK,CAAC,IAAI,KAAK,iCAAiC;QAChD,KAAK,CAAC,IAAI,KAAK,gCAAgC;QAC/C,KAAK,CAAC,IAAI,KAAK,OAAO;QACtB,KAAK,CAAC,IAAI,KAAK,UAAU;AACzB,QAAA,KAAK,CAAC,IAAI,KAAK,MAAM,EACrB;QACA,MAAM,IAAI,KAAK,CAAC,+BAA+B,GAAG,KAAK,CAAC,IAAI,CAAC;IAC/D;AAEA,IAAA,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE;AAC5B,QAAA,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC;IACrE;IAEA,WAAW,CAAC,KAAK,CAAC;AACpB;AAEM,SAAU,4BAA4B,CAAC,KAAiB,EAAA;AAC5D,IAAA,OAAO,+BAA+B,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE;AACxD;;;;"}
1
+ {"version":3,"file":"filterUiToExpressionImpl.js","sources":["../../../src/filters/converters/filterUiToExpressionImpl.ts"],"sourcesContent":["import { assertNever } from \"@milaboratories/pl-model-common\";\nimport type { FilterSpecLeaf } from \"@milaboratories/pl-model-common\";\nimport {\n and,\n col,\n lit,\n or,\n rank,\n type Expression,\n type ExpressionImpl,\n} from \"@milaboratories/ptabler-expression-js\";\nimport type { FilterSpec } from \"../types\";\nimport { traverseFilterSpec } from \"../traverse\";\n\nexport function convertFilterUiToExpressionImpl(value: FilterSpec): ExpressionImpl {\n return traverseFilterSpec(value, {\n leaf: leafToExpressionImpl,\n and: (expressions) => {\n if (expressions.length === 0) {\n throw new Error(\"AND filter requires at least one operand\");\n }\n return and(...expressions);\n },\n or: (expressions) => {\n if (expressions.length === 0) {\n throw new Error(\"OR filter requires at least one operand\");\n }\n return or(...expressions);\n },\n not: (result) => result.not(),\n });\n}\n\nfunction leafToExpressionImpl(value: FilterSpecLeaf): ExpressionImpl {\n switch (value.type) {\n case \"isNA\":\n return col(value.column).isNull();\n case \"isNotNA\":\n return col(value.column).isNotNull();\n case \"patternEquals\":\n return col(value.column).eq(lit(value.value));\n case \"patternNotEquals\":\n return col(value.column).neq(lit(value.value));\n case \"patternContainSubsequence\":\n return col(value.column).strContains(value.value, false, true);\n case \"patternNotContainSubsequence\":\n return col(value.column).strContains(value.value, false, true).not();\n case \"equal\":\n return col(value.column).eq(lit(value.x));\n case \"notEqual\":\n return col(value.column).neq(lit(value.x));\n case \"lessThan\":\n return col(value.column).lt(lit(value.x));\n case \"greaterThan\":\n return col(value.column).gt(lit(value.x));\n case \"lessThanOrEqual\":\n return col(value.column).le(lit(value.x));\n case \"greaterThanOrEqual\":\n return col(value.column).ge(lit(value.x));\n case \"equalToColumn\":\n return col(value.column).eq(col(value.rhs));\n case \"greaterThanColumn\":\n if (value.minDiff !== undefined && value.minDiff !== 0) {\n return col(value.column).plus(lit(value.minDiff)).gt(col(value.rhs));\n }\n return col(value.column).gt(col(value.rhs));\n case \"lessThanColumn\":\n if (value.minDiff !== undefined && value.minDiff !== 0) {\n return col(value.column).plus(lit(value.minDiff)).lt(col(value.rhs));\n }\n return col(value.column).lt(col(value.rhs));\n case \"greaterThanColumnOrEqual\":\n if (value.minDiff !== undefined && value.minDiff !== 0) {\n return col(value.column).plus(lit(value.minDiff)).ge(col(value.rhs));\n }\n return col(value.column).ge(col(value.rhs));\n case \"lessThanColumnOrEqual\":\n if (value.minDiff !== undefined && value.minDiff !== 0) {\n return col(value.column).plus(lit(value.minDiff)).le(col(value.rhs));\n }\n return col(value.column).le(col(value.rhs));\n case \"topN\":\n return rank(col(value.column), true).over([]).le(lit(value.n));\n case \"bottomN\":\n return rank(col(value.column), false).over([]).le(lit(value.n));\n case \"patternMatchesRegularExpression\":\n case \"patternFuzzyContainSubsequence\":\n case \"inSet\":\n case \"notInSet\":\n case \"ifNa\":\n throw new Error(\"Not implemented filter type: \" + value.type);\n case undefined:\n throw new Error(\"Filter type is undefined, this should not happen\");\n default:\n assertNever(value);\n }\n}\n\nexport function convertFilterUiToExpressions(value: FilterSpec): Expression {\n return convertFilterUiToExpressionImpl(value).toJSON();\n}\n"],"names":[],"mappings":"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"}
@@ -1,5 +1,7 @@
1
1
  'use strict';
2
2
 
3
+ var traverse = require('./traverse.cjs');
4
+
3
5
  /** Compile-time check: every key in the tuple is a valid leaf key (via satisfies). */
4
6
  const KNOWN_LEAF_KEYS_TUPLE = [
5
7
  "n",
@@ -30,23 +32,6 @@ function distillLeaf(node) {
30
32
  }
31
33
  return result;
32
34
  }
33
- function distillNode(node) {
34
- switch (node.type) {
35
- case "and":
36
- case "or": {
37
- const filtered = node.filters.map(distillNode).filter((f) => f !== null);
38
- return filtered.length === 0 ? null : { type: node.type, filters: filtered };
39
- }
40
- case "not": {
41
- const inner = distillNode(node.filter);
42
- return inner === null ? null : { type: "not", filter: inner };
43
- }
44
- default:
45
- if (!isFilledLeaf(node))
46
- return null;
47
- return distillLeaf(node);
48
- }
49
- }
50
35
  /**
51
36
  * Strips non-FilterSpec metadata (whitelist approach) and removes
52
37
  * unfilled leaves (type is undefined or any required field is undefined).
@@ -54,7 +39,22 @@ function distillNode(node) {
54
39
  function distillFilterSpec(filter) {
55
40
  if (filter == null)
56
41
  return null;
57
- return distillNode(filter);
42
+ return traverse.traverseFilterSpec(filter, {
43
+ leaf: (leaf) => {
44
+ if (!isFilledLeaf(leaf))
45
+ return null;
46
+ return distillLeaf(leaf);
47
+ },
48
+ and: (results) => {
49
+ const filtered = results.filter((f) => f !== null);
50
+ return filtered.length === 0 ? null : { type: "and", filters: filtered };
51
+ },
52
+ or: (results) => {
53
+ const filtered = results.filter((f) => f !== null);
54
+ return filtered.length === 0 ? null : { type: "or", filters: filtered };
55
+ },
56
+ not: (result) => (result === null ? null : { type: "not", filter: result }),
57
+ });
58
58
  }
59
59
 
60
60
  exports.distillFilterSpec = distillFilterSpec;
@@ -1 +1 @@
1
- {"version":3,"file":"distill.cjs","sources":["../../src/filters/distill.ts"],"sourcesContent":["import { DistributiveKeys, UnionToTuples } from \"@milaboratories/helpers\";\nimport { type FilterSpec, type FilterSpecLeaf } from \"@milaboratories/pl-model-common\";\n\n/** All possible field names that can appear in any FilterSpecLeaf variant. */\ntype FilterSpecLeafKey = DistributiveKeys<FilterSpecLeaf<string>>;\n\n/** Compile-time check: every key in the tuple is a valid leaf key (via satisfies). */\nconst KNOWN_LEAF_KEYS_TUPLE: UnionToTuples<FilterSpecLeafKey> = [\n \"n\",\n \"x\",\n \"rhs\",\n \"type\",\n \"value\",\n \"column\",\n \"minDiff\",\n \"maxEdits\",\n \"wildcard\",\n \"replacement\",\n \"substitutionsOnly\",\n];\nconst KNOWN_LEAF_KEYS: Set<FilterSpecLeafKey> = new Set(KNOWN_LEAF_KEYS_TUPLE);\n\n/** Returns true if the leaf is filled — type is defined and no required fields are undefined. */\nfunction isFilledLeaf(node: Record<string, unknown>): boolean {\n if (node.type == null) return false;\n return !Object.values(node).some((v) => v === undefined);\n}\n\nfunction distillLeaf(node: Record<string, unknown>): FilterSpecLeaf<string> {\n const result: Record<string, unknown> = {};\n for (const [key, value] of Object.entries(node)) {\n if (KNOWN_LEAF_KEYS.has(key as FilterSpecLeafKey)) {\n result[key] = value;\n }\n }\n return result as FilterSpecLeaf<string>;\n}\n\nfunction distillNode<T extends FilterSpecLeaf<unknown>>(\n node: FilterSpec<T, unknown, unknown>,\n): FilterSpec<T> | null {\n switch (node.type) {\n case \"and\":\n case \"or\": {\n const filtered = node.filters.map(distillNode).filter((f): f is FilterSpec<T> => f !== null);\n return filtered.length === 0 ? null : { type: node.type, filters: filtered };\n }\n case \"not\": {\n const inner = distillNode(node.filter);\n return inner === null ? null : { type: \"not\", filter: inner };\n }\n default:\n if (!isFilledLeaf(node)) return null;\n return distillLeaf(node);\n }\n}\n\n/**\n * Strips non-FilterSpec metadata (whitelist approach) and removes\n * unfilled leaves (type is undefined or any required field is undefined).\n */\nexport function distillFilterSpec<T extends FilterSpecLeaf<unknown>>(\n filter: null | undefined | FilterSpec<T, unknown, unknown>,\n): null | FilterSpec<T> {\n if (filter == null) return null;\n return distillNode(filter);\n}\n"],"names":[],"mappings":";;AAMA;AACA,MAAM,qBAAqB,GAAqC;IAC9D,GAAG;IACH,GAAG;IACH,KAAK;IACL,MAAM;IACN,OAAO;IACP,QAAQ;IACR,SAAS;IACT,UAAU;IACV,UAAU;IACV,aAAa;IACb,mBAAmB;CACpB;AACD,MAAM,eAAe,GAA2B,IAAI,GAAG,CAAC,qBAAqB,CAAC;AAE9E;AACA,SAAS,YAAY,CAAC,IAA6B,EAAA;AACjD,IAAA,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI;AAAE,QAAA,OAAO,KAAK;AACnC,IAAA,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,SAAS,CAAC;AAC1D;AAEA,SAAS,WAAW,CAAC,IAA6B,EAAA;IAChD,MAAM,MAAM,GAA4B,EAAE;AAC1C,IAAA,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;AAC/C,QAAA,IAAI,eAAe,CAAC,GAAG,CAAC,GAAwB,CAAC,EAAE;AACjD,YAAA,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK;QACrB;IACF;AACA,IAAA,OAAO,MAAgC;AACzC;AAEA,SAAS,WAAW,CAClB,IAAqC,EAAA;AAErC,IAAA,QAAQ,IAAI,CAAC,IAAI;AACf,QAAA,KAAK,KAAK;QACV,KAAK,IAAI,EAAE;YACT,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAyB,CAAC,KAAK,IAAI,CAAC;YAC5F,OAAO,QAAQ,CAAC,MAAM,KAAK,CAAC,GAAG,IAAI,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE;QAC9E;QACA,KAAK,KAAK,EAAE;YACV,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC;AACtC,YAAA,OAAO,KAAK,KAAK,IAAI,GAAG,IAAI,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE;QAC/D;AACA,QAAA;AACE,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;AAAE,gBAAA,OAAO,IAAI;AACpC,YAAA,OAAO,WAAW,CAAC,IAAI,CAAC;;AAE9B;AAEA;;;AAGG;AACG,SAAU,iBAAiB,CAC/B,MAA0D,EAAA;IAE1D,IAAI,MAAM,IAAI,IAAI;AAAE,QAAA,OAAO,IAAI;AAC/B,IAAA,OAAO,WAAW,CAAC,MAAM,CAAC;AAC5B;;;;"}
1
+ {"version":3,"file":"distill.cjs","sources":["../../src/filters/distill.ts"],"sourcesContent":["import { DistributiveKeys, UnionToTuples } from \"@milaboratories/helpers\";\nimport { type FilterSpec, type FilterSpecLeaf } from \"@milaboratories/pl-model-common\";\nimport { traverseFilterSpec } from \"./traverse\";\n\n/** All possible field names that can appear in any FilterSpecLeaf variant. */\ntype FilterSpecLeafKey = DistributiveKeys<FilterSpecLeaf<string>>;\n\n/** Compile-time check: every key in the tuple is a valid leaf key (via satisfies). */\nconst KNOWN_LEAF_KEYS_TUPLE: UnionToTuples<FilterSpecLeafKey> = [\n \"n\",\n \"x\",\n \"rhs\",\n \"type\",\n \"value\",\n \"column\",\n \"minDiff\",\n \"maxEdits\",\n \"wildcard\",\n \"replacement\",\n \"substitutionsOnly\",\n];\nconst KNOWN_LEAF_KEYS: Set<FilterSpecLeafKey> = new Set(KNOWN_LEAF_KEYS_TUPLE);\n\n/** Returns true if the leaf is filled — type is defined and no required fields are undefined. */\nfunction isFilledLeaf(node: Record<string, unknown>): boolean {\n if (node.type == null) return false;\n return !Object.values(node).some((v) => v === undefined);\n}\n\nfunction distillLeaf(node: Record<string, unknown>): FilterSpecLeaf<string> {\n const result: Record<string, unknown> = {};\n for (const [key, value] of Object.entries(node)) {\n if (KNOWN_LEAF_KEYS.has(key as FilterSpecLeafKey)) {\n result[key] = value;\n }\n }\n return result as FilterSpecLeaf<string>;\n}\n\n/**\n * Strips non-FilterSpec metadata (whitelist approach) and removes\n * unfilled leaves (type is undefined or any required field is undefined).\n */\nexport function distillFilterSpec<T extends FilterSpecLeaf<unknown>>(\n filter: null | undefined | FilterSpec<T, unknown, unknown>,\n): null | FilterSpec<T> {\n if (filter == null) return null;\n return traverseFilterSpec(filter, {\n leaf: (leaf) => {\n if (!isFilledLeaf(leaf as Record<string, unknown>)) return null;\n return distillLeaf(leaf as Record<string, unknown>) as FilterSpec<T>;\n },\n and: (results) => {\n const filtered = results.filter((f): f is FilterSpec<T> => f !== null);\n return filtered.length === 0 ? null : { type: \"and\", filters: filtered };\n },\n or: (results) => {\n const filtered = results.filter((f): f is FilterSpec<T> => f !== null);\n return filtered.length === 0 ? null : { type: \"or\", filters: filtered };\n },\n not: (result) => (result === null ? null : { type: \"not\", filter: result }),\n });\n}\n"],"names":["traverseFilterSpec"],"mappings":";;;;AAOA;AACA,MAAM,qBAAqB,GAAqC;IAC9D,GAAG;IACH,GAAG;IACH,KAAK;IACL,MAAM;IACN,OAAO;IACP,QAAQ;IACR,SAAS;IACT,UAAU;IACV,UAAU;IACV,aAAa;IACb,mBAAmB;CACpB;AACD,MAAM,eAAe,GAA2B,IAAI,GAAG,CAAC,qBAAqB,CAAC;AAE9E;AACA,SAAS,YAAY,CAAC,IAA6B,EAAA;AACjD,IAAA,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI;AAAE,QAAA,OAAO,KAAK;AACnC,IAAA,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,SAAS,CAAC;AAC1D;AAEA,SAAS,WAAW,CAAC,IAA6B,EAAA;IAChD,MAAM,MAAM,GAA4B,EAAE;AAC1C,IAAA,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;AAC/C,QAAA,IAAI,eAAe,CAAC,GAAG,CAAC,GAAwB,CAAC,EAAE;AACjD,YAAA,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK;QACrB;IACF;AACA,IAAA,OAAO,MAAgC;AACzC;AAEA;;;AAGG;AACG,SAAU,iBAAiB,CAC/B,MAA0D,EAAA;IAE1D,IAAI,MAAM,IAAI,IAAI;AAAE,QAAA,OAAO,IAAI;IAC/B,OAAOA,2BAAkB,CAAC,MAAM,EAAE;AAChC,QAAA,IAAI,EAAE,CAAC,IAAI,KAAI;AACb,YAAA,IAAI,CAAC,YAAY,CAAC,IAA+B,CAAC;AAAE,gBAAA,OAAO,IAAI;AAC/D,YAAA,OAAO,WAAW,CAAC,IAA+B,CAAkB;QACtE,CAAC;AACD,QAAA,GAAG,EAAE,CAAC,OAAO,KAAI;AACf,YAAA,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,KAAyB,CAAC,KAAK,IAAI,CAAC;YACtE,OAAO,QAAQ,CAAC,MAAM,KAAK,CAAC,GAAG,IAAI,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE;QAC1E,CAAC;AACD,QAAA,EAAE,EAAE,CAAC,OAAO,KAAI;AACd,YAAA,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,KAAyB,CAAC,KAAK,IAAI,CAAC;YACtE,OAAO,QAAQ,CAAC,MAAM,KAAK,CAAC,GAAG,IAAI,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE;QACzE,CAAC;QACD,GAAG,EAAE,CAAC,MAAM,MAAM,MAAM,KAAK,IAAI,GAAG,IAAI,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;AAC5E,KAAA,CAAC;AACJ;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"distill.d.ts","sourceRoot":"","sources":["../../src/filters/distill.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,UAAU,EAAE,KAAK,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAwDvF;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,SAAS,cAAc,CAAC,OAAO,CAAC,EACjE,MAAM,EAAE,IAAI,GAAG,SAAS,GAAG,UAAU,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,GACzD,IAAI,GAAG,UAAU,CAAC,CAAC,CAAC,CAGtB"}
1
+ {"version":3,"file":"distill.d.ts","sourceRoot":"","sources":["../../src/filters/distill.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,UAAU,EAAE,KAAK,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAsCvF;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,SAAS,cAAc,CAAC,OAAO,CAAC,EACjE,MAAM,EAAE,IAAI,GAAG,SAAS,GAAG,UAAU,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,GACzD,IAAI,GAAG,UAAU,CAAC,CAAC,CAAC,CAiBtB"}