rawsql-ts 0.10.2-beta → 0.10.3-beta

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 (41) hide show
  1. package/dist/esm/index.min.js +11 -11
  2. package/dist/esm/index.min.js.map +4 -4
  3. package/dist/esm/parsers/FunctionExpressionParser.js +18 -4
  4. package/dist/esm/parsers/FunctionExpressionParser.js.map +1 -1
  5. package/dist/esm/parsers/ValueParser.js +56 -11
  6. package/dist/esm/parsers/ValueParser.js.map +1 -1
  7. package/dist/esm/transformers/CTECollector.js +6 -1
  8. package/dist/esm/transformers/CTECollector.js.map +1 -1
  9. package/dist/esm/transformers/TableSourceCollector.js +8 -1
  10. package/dist/esm/transformers/TableSourceCollector.js.map +1 -1
  11. package/dist/esm/types/parsers/FunctionExpressionParser.d.ts +6 -1
  12. package/dist/esm/types/parsers/ValueParser.d.ts +9 -1
  13. package/dist/esm/types/transformers/CTECollector.d.ts +1 -0
  14. package/dist/esm/types/transformers/TableSourceCollector.d.ts +1 -0
  15. package/dist/esm/types/utils/OperatorPrecedence.d.ts +29 -0
  16. package/dist/esm/types/utils/ParameterRemover.d.ts +225 -0
  17. package/dist/esm/utils/OperatorPrecedence.js +79 -0
  18. package/dist/esm/utils/OperatorPrecedence.js.map +1 -0
  19. package/dist/esm/utils/ParameterRemover.js +777 -0
  20. package/dist/esm/utils/ParameterRemover.js.map +1 -0
  21. package/dist/index.min.js +11 -11
  22. package/dist/index.min.js.map +4 -4
  23. package/dist/parsers/FunctionExpressionParser.d.ts +6 -1
  24. package/dist/parsers/FunctionExpressionParser.js +18 -4
  25. package/dist/parsers/FunctionExpressionParser.js.map +1 -1
  26. package/dist/parsers/ValueParser.d.ts +9 -1
  27. package/dist/parsers/ValueParser.js +55 -10
  28. package/dist/parsers/ValueParser.js.map +1 -1
  29. package/dist/transformers/CTECollector.d.ts +1 -0
  30. package/dist/transformers/CTECollector.js +5 -0
  31. package/dist/transformers/CTECollector.js.map +1 -1
  32. package/dist/transformers/TableSourceCollector.d.ts +1 -0
  33. package/dist/transformers/TableSourceCollector.js +7 -0
  34. package/dist/transformers/TableSourceCollector.js.map +1 -1
  35. package/dist/utils/OperatorPrecedence.d.ts +29 -0
  36. package/dist/utils/OperatorPrecedence.js +83 -0
  37. package/dist/utils/OperatorPrecedence.js.map +1 -0
  38. package/dist/utils/ParameterRemover.d.ts +225 -0
  39. package/dist/utils/ParameterRemover.js +781 -0
  40. package/dist/utils/ParameterRemover.js.map +1 -0
  41. package/package.json +2 -2
@@ -0,0 +1,225 @@
1
+ import { SqlComponent, SqlComponentVisitor } from "../models/SqlComponent";
2
+ /**
3
+ * Utility class to traverse and remove ParameterExpression nodes from the SQL AST.
4
+ * This removes any binary expression containing a ParameterExpression as a whole.
5
+ * For compound logical expressions (AND/OR), only the parameterized parts are removed.
6
+ * If all conditions are removed from a logical expression, the parent node is removed as well.
7
+ */
8
+ export declare class ParameterRemover implements SqlComponentVisitor<SqlComponent | null> {
9
+ private handlers;
10
+ private visitedNodes;
11
+ private isRootVisit;
12
+ constructor();
13
+ /**
14
+ * Reset the visited nodes tracking
15
+ */
16
+ private reset;
17
+ /**
18
+ * Main entry point for the visitor pattern.
19
+ * @param arg The SQL component to visit
20
+ * @returns The component with parameter expressions removed, or null if the entire component should be removed
21
+ */
22
+ visit(arg: SqlComponent): SqlComponent | null;
23
+ /**
24
+ * Internal visit method used for all nodes.
25
+ * This separates the visit flag management from the actual node visitation logic.
26
+ */
27
+ private visitNode;
28
+ /**
29
+ * Visit SimpleSelectQuery node
30
+ */
31
+ private visitSimpleSelectQuery;
32
+ /**
33
+ * Visit BinarySelectQuery node
34
+ */
35
+ private visitBinarySelectQuery;
36
+ /**
37
+ * Visit ValuesQuery node
38
+ */
39
+ private visitValuesQuery;
40
+ /**
41
+ * Visit WithClause node
42
+ */
43
+ private visitWithClause;
44
+ /**
45
+ * Visit CommonTable node
46
+ */
47
+ private visitCommonTable;
48
+ /**
49
+ * Visit SelectClause node
50
+ */
51
+ private visitSelectClause;
52
+ /**
53
+ * Visit SelectItem node
54
+ */
55
+ private visitSelectItem;
56
+ private visitIdentifierString;
57
+ private visitRawString;
58
+ private visitColumnReference;
59
+ private visitParameterExpression;
60
+ private visitLiteralValue;
61
+ private visitTableSource;
62
+ private visitForClause;
63
+ private visitDistinctComponent;
64
+ /**
65
+ * Visit SourceExpression node
66
+ */
67
+ private visitSourceExpression;
68
+ /**
69
+ * Visit ParenSource node
70
+ */
71
+ private visitParenSource;
72
+ /**
73
+ * Visit SourceAliasExpression node
74
+ */
75
+ private visitSourceAliasExpression;
76
+ /**
77
+ * Visit SubQuerySource node
78
+ */
79
+ private visitSubQuerySource;
80
+ /**
81
+ * Visit InlineQuery node
82
+ */
83
+ private visitInlineQuery;
84
+ /**
85
+ * Visit FromClause node
86
+ */
87
+ private visitFromClause;
88
+ /**
89
+ * Visit JoinClause node
90
+ */
91
+ private visitJoinClause;
92
+ /**
93
+ * Visit JoinOnClause node
94
+ */
95
+ private visitJoinOnClause;
96
+ /**
97
+ * Visit JoinUsingClause node
98
+ */
99
+ private visitJoinUsingClause;
100
+ /**
101
+ * Visit WhereClause node - key method for parameter removal
102
+ */
103
+ private visitWhereClause;
104
+ /**
105
+ * Visit ParenExpression node
106
+ */
107
+ private visitParenExpression;
108
+ /**
109
+ * Visit BinaryExpression node - improved logic for right-associative parser structure
110
+ */
111
+ private visitBinaryExpression;
112
+ /**
113
+ * Handle comparison expressions, accounting for right-associative parser structure
114
+ */
115
+ private handleComparisonExpression;
116
+ /**
117
+ * Restructure expressions like "id = (1 AND ...)" to "(id = 1) AND ..."
118
+ */
119
+ private restructureComparisonWithLogical;
120
+ /**
121
+ * Check if an operator is a logical operator */
122
+ /**
123
+ * Check if the resulting expression would be nonsensical
124
+ * This is a heuristic to detect cases like "name = age > 18"
125
+ */
126
+ private wouldCreateNonsensicalExpression;
127
+ /**
128
+ * Check if a ValueComponent contains a ParameterExpression anywhere in its tree
129
+ */
130
+ private containsParameter;
131
+ /**
132
+ * Visit UnaryExpression node
133
+ */
134
+ private visitUnaryExpression;
135
+ /**
136
+ * Visit CaseExpression node
137
+ */
138
+ private visitCaseExpression;
139
+ /**
140
+ * Visit CaseKeyValuePair node
141
+ */
142
+ private visitCaseKeyValuePair;
143
+ /**
144
+ * Visit SwitchCaseArgument node
145
+ */
146
+ private visitSwitchCaseArgument;
147
+ /**
148
+ * Visit BetweenExpression node
149
+ */
150
+ private visitBetweenExpression;
151
+ /**
152
+ * Visit FunctionCall node
153
+ */
154
+ private visitFunctionCall;
155
+ /**
156
+ * Visit ArrayExpression node
157
+ */
158
+ private visitArrayExpression;
159
+ /**
160
+ * Visit TupleExpression node
161
+ */
162
+ private visitTupleExpression;
163
+ /**
164
+ * Visit CastExpression node
165
+ */
166
+ private visitCastExpression;
167
+ /**
168
+ * Visit WindowFrameExpression node
169
+ */
170
+ private visitWindowFrameExpression;
171
+ /**
172
+ * Visit WindowFrameSpec node
173
+ */
174
+ private visitWindowFrameSpec;
175
+ /**
176
+ * Visit TypeValue node
177
+ */
178
+ private visitTypeValue;
179
+ /**
180
+ * Visit GroupByClause node
181
+ */
182
+ private visitGroupByClause;
183
+ /**
184
+ * Visit HavingClause node
185
+ */
186
+ private visitHavingClause;
187
+ /**
188
+ * Visit OrderByClause node
189
+ */
190
+ private visitOrderByClause;
191
+ /**
192
+ * Visit OrderByItem node
193
+ */
194
+ private visitOrderByItem;
195
+ /**
196
+ * Visit WindowFrameClause node
197
+ */
198
+ private visitWindowFrameClause;
199
+ /**
200
+ * Visit WindowsClause node
201
+ */
202
+ private visitWindowsClause;
203
+ /**
204
+ * Visit LimitClause node
205
+ */
206
+ private visitLimitClause;
207
+ /**
208
+ * Visit OffsetClause node
209
+ */
210
+ private visitOffsetClause;
211
+ /**
212
+ * Visit FetchClause node
213
+ */
214
+ private visitFetchClause;
215
+ /**
216
+ * Visit FetchExpression node
217
+ */
218
+ private visitFetchExpression;
219
+ /**
220
+ * Static method to apply parameter removal transformation on an SQL AST
221
+ * @param node The SQL AST node to transform
222
+ * @returns The transformed SQL AST with parameter expressions removed
223
+ */
224
+ static remove(node: SqlComponent): SqlComponent | null;
225
+ }