rawsql-ts 0.1.0-beta.10 → 0.1.0-beta.12

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 (208) hide show
  1. package/README.md +165 -174
  2. package/dist/esm/index.js +17 -0
  3. package/dist/esm/index.js.map +1 -0
  4. package/dist/esm/models/BinarySelectQuery.js +137 -0
  5. package/dist/esm/models/BinarySelectQuery.js.map +1 -0
  6. package/dist/esm/models/Clause.js +289 -0
  7. package/dist/esm/models/Clause.js.map +1 -0
  8. package/dist/esm/models/KeywordTrie.js +48 -0
  9. package/dist/esm/models/KeywordTrie.js.map +1 -0
  10. package/dist/esm/models/Lexeme.js +18 -0
  11. package/dist/esm/models/Lexeme.js.map +1 -0
  12. package/dist/esm/models/SelectQuery.js +5 -0
  13. package/dist/esm/models/SelectQuery.js.map +1 -0
  14. package/dist/esm/models/SimpleSelectQuery.js +288 -0
  15. package/dist/esm/models/SimpleSelectQuery.js.map +1 -0
  16. package/dist/esm/models/SqlComponent.js +22 -0
  17. package/dist/esm/models/SqlComponent.js.map +1 -0
  18. package/dist/esm/models/ValueComponent.js +223 -0
  19. package/dist/esm/models/ValueComponent.js.map +1 -0
  20. package/dist/esm/models/ValuesQuery.js +12 -0
  21. package/dist/esm/models/ValuesQuery.js.map +1 -0
  22. package/dist/esm/parsers/CommandExpressionParser.js +120 -0
  23. package/dist/esm/parsers/CommandExpressionParser.js.map +1 -0
  24. package/dist/esm/parsers/CommonTableParser.js +58 -0
  25. package/dist/esm/parsers/CommonTableParser.js.map +1 -0
  26. package/dist/esm/parsers/ForClauseParser.js +54 -0
  27. package/dist/esm/parsers/ForClauseParser.js.map +1 -0
  28. package/dist/esm/parsers/FromClauseParser.js +43 -0
  29. package/dist/esm/parsers/FromClauseParser.js.map +1 -0
  30. package/dist/esm/parsers/FunctionExpressionParser.js +174 -0
  31. package/dist/esm/parsers/FunctionExpressionParser.js.map +1 -0
  32. package/dist/esm/parsers/GroupByParser.js +54 -0
  33. package/dist/esm/parsers/GroupByParser.js.map +1 -0
  34. package/dist/esm/parsers/HavingParser.js +32 -0
  35. package/dist/esm/parsers/HavingParser.js.map +1 -0
  36. package/dist/esm/parsers/IdentifierParser.js +35 -0
  37. package/dist/esm/parsers/IdentifierParser.js.map +1 -0
  38. package/dist/esm/parsers/JoinClauseParser.js +101 -0
  39. package/dist/esm/parsers/JoinClauseParser.js.map +1 -0
  40. package/dist/esm/parsers/KeywordParser.js +87 -0
  41. package/dist/esm/parsers/KeywordParser.js.map +1 -0
  42. package/dist/esm/parsers/LimitClauseParser.js +46 -0
  43. package/dist/esm/parsers/LimitClauseParser.js.map +1 -0
  44. package/dist/esm/parsers/LiteralParser.js +34 -0
  45. package/dist/esm/parsers/LiteralParser.js.map +1 -0
  46. package/dist/esm/parsers/OrderByClauseParser.js +73 -0
  47. package/dist/esm/parsers/OrderByClauseParser.js.map +1 -0
  48. package/dist/esm/parsers/OverExpressionParser.js +40 -0
  49. package/dist/esm/parsers/OverExpressionParser.js.map +1 -0
  50. package/dist/esm/parsers/ParameterExpressionParser.js +11 -0
  51. package/dist/esm/parsers/ParameterExpressionParser.js.map +1 -0
  52. package/dist/esm/parsers/ParenExpressionParser.js +29 -0
  53. package/dist/esm/parsers/ParenExpressionParser.js.map +1 -0
  54. package/dist/esm/parsers/PartitionByParser.js +49 -0
  55. package/dist/esm/parsers/PartitionByParser.js.map +1 -0
  56. package/dist/esm/parsers/SelectClauseParser.js +80 -0
  57. package/dist/esm/parsers/SelectClauseParser.js.map +1 -0
  58. package/dist/esm/parsers/SelectQueryParser.js +149 -0
  59. package/dist/esm/parsers/SelectQueryParser.js.map +1 -0
  60. package/dist/esm/parsers/SourceAliasExpressionParser.js +45 -0
  61. package/dist/esm/parsers/SourceAliasExpressionParser.js.map +1 -0
  62. package/dist/esm/parsers/SourceExpressionParser.js +31 -0
  63. package/dist/esm/parsers/SourceExpressionParser.js.map +1 -0
  64. package/dist/esm/parsers/SourceParser.js +115 -0
  65. package/dist/esm/parsers/SourceParser.js.map +1 -0
  66. package/dist/esm/parsers/SqlTokenizer.js +170 -0
  67. package/dist/esm/parsers/SqlTokenizer.js.map +1 -0
  68. package/dist/esm/parsers/StringSpecifierExpressionParser.js +18 -0
  69. package/dist/esm/parsers/StringSpecifierExpressionParser.js.map +1 -0
  70. package/dist/esm/parsers/UnaryExpressionParser.js +26 -0
  71. package/dist/esm/parsers/UnaryExpressionParser.js.map +1 -0
  72. package/dist/esm/parsers/ValueParser.js +132 -0
  73. package/dist/esm/parsers/ValueParser.js.map +1 -0
  74. package/dist/esm/parsers/ValuesQueryParser.js +82 -0
  75. package/dist/esm/parsers/ValuesQueryParser.js.map +1 -0
  76. package/dist/esm/parsers/WhereClauseParser.js +32 -0
  77. package/dist/esm/parsers/WhereClauseParser.js.map +1 -0
  78. package/dist/esm/parsers/WindowClauseParser.js +41 -0
  79. package/dist/esm/parsers/WindowClauseParser.js.map +1 -0
  80. package/dist/esm/parsers/WindowExpressionParser.js +159 -0
  81. package/dist/esm/parsers/WindowExpressionParser.js.map +1 -0
  82. package/dist/esm/parsers/WithClauseParser.js +53 -0
  83. package/dist/esm/parsers/WithClauseParser.js.map +1 -0
  84. package/dist/esm/tokenReaders/BaseTokenReader.js +78 -0
  85. package/dist/esm/tokenReaders/BaseTokenReader.js.map +1 -0
  86. package/dist/esm/tokenReaders/CommandTokenReader.js +141 -0
  87. package/dist/esm/tokenReaders/CommandTokenReader.js.map +1 -0
  88. package/dist/esm/tokenReaders/FunctionTokenReader.js +41 -0
  89. package/dist/esm/tokenReaders/FunctionTokenReader.js.map +1 -0
  90. package/dist/esm/tokenReaders/IdentifierTokenReader.js +66 -0
  91. package/dist/esm/tokenReaders/IdentifierTokenReader.js.map +1 -0
  92. package/dist/esm/tokenReaders/LiteralTokenReader.js +185 -0
  93. package/dist/esm/tokenReaders/LiteralTokenReader.js.map +1 -0
  94. package/dist/esm/tokenReaders/OperatorTokenReader.js +94 -0
  95. package/dist/esm/tokenReaders/OperatorTokenReader.js.map +1 -0
  96. package/dist/esm/tokenReaders/ParameterTokenReader.js +40 -0
  97. package/dist/esm/tokenReaders/ParameterTokenReader.js.map +1 -0
  98. package/dist/esm/tokenReaders/StringSpecifierTokenReader.js +27 -0
  99. package/dist/esm/tokenReaders/StringSpecifierTokenReader.js.map +1 -0
  100. package/dist/esm/tokenReaders/SymbolTokenReader.js +31 -0
  101. package/dist/esm/tokenReaders/SymbolTokenReader.js.map +1 -0
  102. package/dist/esm/tokenReaders/TokenReaderManager.js +106 -0
  103. package/dist/esm/tokenReaders/TokenReaderManager.js.map +1 -0
  104. package/dist/esm/tokenReaders/TypeTokenReader.js +55 -0
  105. package/dist/esm/tokenReaders/TypeTokenReader.js.map +1 -0
  106. package/dist/esm/transformers/CTEBuilder.js +184 -0
  107. package/dist/esm/transformers/CTEBuilder.js.map +1 -0
  108. package/dist/esm/transformers/CTECollector.js +380 -0
  109. package/dist/esm/transformers/CTECollector.js.map +1 -0
  110. package/dist/esm/transformers/CTEDisabler.js +321 -0
  111. package/dist/esm/transformers/CTEDisabler.js.map +1 -0
  112. package/dist/esm/transformers/CTEInjector.js +79 -0
  113. package/dist/esm/transformers/CTEInjector.js.map +1 -0
  114. package/dist/esm/transformers/CTENormalizer.js +42 -0
  115. package/dist/esm/transformers/CTENormalizer.js.map +1 -0
  116. package/dist/esm/transformers/Formatter.js +463 -0
  117. package/dist/esm/transformers/Formatter.js.map +1 -0
  118. package/dist/esm/transformers/QueryConverter.js +115 -0
  119. package/dist/esm/transformers/QueryConverter.js.map +1 -0
  120. package/dist/esm/transformers/SelectValueCollector.js +245 -0
  121. package/dist/esm/transformers/SelectValueCollector.js.map +1 -0
  122. package/dist/esm/transformers/SelectableColumnCollector.js +304 -0
  123. package/dist/esm/transformers/SelectableColumnCollector.js.map +1 -0
  124. package/dist/esm/transformers/TableColumnResolver.js +2 -0
  125. package/dist/esm/transformers/TableColumnResolver.js.map +1 -0
  126. package/dist/esm/transformers/TableSourceCollector.js +380 -0
  127. package/dist/esm/transformers/TableSourceCollector.js.map +1 -0
  128. package/dist/esm/transformers/UpstreamSelectQueryFinder.js +125 -0
  129. package/dist/esm/transformers/UpstreamSelectQueryFinder.js.map +1 -0
  130. package/dist/esm/types/index.d.ts +14 -0
  131. package/dist/esm/types/models/BinarySelectQuery.d.ts +91 -0
  132. package/dist/esm/types/models/Clause.d.ts +189 -0
  133. package/dist/esm/types/models/KeywordTrie.d.ts +11 -0
  134. package/dist/esm/types/models/Lexeme.d.ts +25 -0
  135. package/dist/esm/types/models/SelectQuery.d.ts +5 -0
  136. package/dist/esm/types/models/SimpleSelectQuery.d.ts +167 -0
  137. package/dist/esm/types/models/SqlComponent.d.ts +18 -0
  138. package/dist/esm/types/models/ValueComponent.d.ts +158 -0
  139. package/dist/esm/types/models/ValuesQuery.d.ts +10 -0
  140. package/dist/esm/types/parsers/CommandExpressionParser.d.ts +15 -0
  141. package/dist/esm/types/parsers/CommonTableParser.d.ts +9 -0
  142. package/dist/esm/types/parsers/ForClauseParser.d.ts +9 -0
  143. package/dist/esm/types/parsers/FromClauseParser.d.ts +9 -0
  144. package/dist/esm/types/parsers/FunctionExpressionParser.d.ts +22 -0
  145. package/dist/esm/types/parsers/GroupByParser.d.ts +10 -0
  146. package/dist/esm/types/parsers/HavingParser.d.ts +9 -0
  147. package/dist/esm/types/parsers/IdentifierParser.d.ts +8 -0
  148. package/dist/esm/types/parsers/JoinClauseParser.d.ts +14 -0
  149. package/dist/esm/types/parsers/KeywordParser.d.ts +17 -0
  150. package/dist/esm/types/parsers/LimitClauseParser.d.ts +9 -0
  151. package/dist/esm/types/parsers/LiteralParser.d.ts +8 -0
  152. package/dist/esm/types/parsers/OrderByClauseParser.d.ts +10 -0
  153. package/dist/esm/types/parsers/OverExpressionParser.d.ts +9 -0
  154. package/dist/esm/types/parsers/ParameterExpressionParser.d.ts +8 -0
  155. package/dist/esm/types/parsers/ParenExpressionParser.d.ts +8 -0
  156. package/dist/esm/types/parsers/PartitionByParser.d.ts +9 -0
  157. package/dist/esm/types/parsers/SelectClauseParser.d.ts +10 -0
  158. package/dist/esm/types/parsers/SelectQueryParser.d.ts +13 -0
  159. package/dist/esm/types/parsers/SourceAliasExpressionParser.d.ts +8 -0
  160. package/dist/esm/types/parsers/SourceExpressionParser.d.ts +8 -0
  161. package/dist/esm/types/parsers/SourceParser.d.ts +13 -0
  162. package/dist/esm/types/parsers/SqlTokenizer.d.ts +64 -0
  163. package/dist/esm/types/parsers/StringSpecifierExpressionParser.d.ts +8 -0
  164. package/dist/esm/types/parsers/UnaryExpressionParser.d.ts +8 -0
  165. package/dist/esm/types/parsers/ValueParser.d.ts +14 -0
  166. package/dist/esm/types/parsers/ValuesQueryParser.d.ts +10 -0
  167. package/dist/esm/types/parsers/WhereClauseParser.d.ts +9 -0
  168. package/dist/esm/types/parsers/WindowClauseParser.d.ts +9 -0
  169. package/dist/esm/types/parsers/WindowExpressionParser.d.ts +12 -0
  170. package/dist/esm/types/parsers/WithClauseParser.d.ts +9 -0
  171. package/dist/esm/types/tokenReaders/BaseTokenReader.d.ts +43 -0
  172. package/dist/esm/types/tokenReaders/CommandTokenReader.d.ts +7 -0
  173. package/dist/esm/types/tokenReaders/FunctionTokenReader.d.ts +11 -0
  174. package/dist/esm/types/tokenReaders/IdentifierTokenReader.d.ts +15 -0
  175. package/dist/esm/types/tokenReaders/LiteralTokenReader.d.ts +23 -0
  176. package/dist/esm/types/tokenReaders/OperatorTokenReader.d.ts +5 -0
  177. package/dist/esm/types/tokenReaders/ParameterTokenReader.d.ts +11 -0
  178. package/dist/esm/types/tokenReaders/StringSpecifierTokenReader.d.ts +8 -0
  179. package/dist/esm/types/tokenReaders/SymbolTokenReader.d.ts +12 -0
  180. package/dist/esm/types/tokenReaders/TokenReaderManager.d.ts +53 -0
  181. package/dist/esm/types/tokenReaders/TypeTokenReader.d.ts +11 -0
  182. package/dist/esm/types/transformers/CTEBuilder.d.ts +52 -0
  183. package/dist/esm/types/transformers/CTECollector.d.ts +81 -0
  184. package/dist/esm/types/transformers/CTEDisabler.d.ts +77 -0
  185. package/dist/esm/types/transformers/CTEInjector.d.ts +40 -0
  186. package/dist/esm/types/transformers/CTENormalizer.d.ts +25 -0
  187. package/dist/esm/types/transformers/Formatter.d.ts +82 -0
  188. package/dist/esm/types/transformers/QueryConverter.d.ts +41 -0
  189. package/dist/esm/types/transformers/SelectValueCollector.d.ts +60 -0
  190. package/dist/esm/types/transformers/SelectableColumnCollector.d.ts +70 -0
  191. package/dist/esm/types/transformers/TableColumnResolver.d.ts +10 -0
  192. package/dist/esm/types/transformers/TableSourceCollector.d.ts +92 -0
  193. package/dist/esm/types/transformers/UpstreamSelectQueryFinder.d.ts +27 -0
  194. package/dist/esm/types/utils/charLookupTable.d.ts +11 -0
  195. package/dist/esm/types/utils/stringUtils.d.ts +43 -0
  196. package/dist/esm/utils/charLookupTable.js +69 -0
  197. package/dist/esm/utils/charLookupTable.js.map +1 -0
  198. package/dist/esm/utils/stringUtils.js +164 -0
  199. package/dist/esm/utils/stringUtils.js.map +1 -0
  200. package/dist/index.d.ts +1 -0
  201. package/dist/index.js +1 -0
  202. package/dist/index.js.map +1 -1
  203. package/dist/transformers/SelectValueCollector.d.ts +2 -4
  204. package/dist/transformers/SelectValueCollector.js.map +1 -1
  205. package/dist/transformers/TableColumnResolver.d.ts +10 -0
  206. package/dist/transformers/TableColumnResolver.js +3 -0
  207. package/dist/transformers/TableColumnResolver.js.map +1 -0
  208. package/package.json +17 -1
@@ -0,0 +1,289 @@
1
+ import { SqlComponent } from "./SqlComponent";
2
+ import { IdentifierString, RawString } from "./ValueComponent";
3
+ export class SelectItem extends SqlComponent {
4
+ constructor(value, name) {
5
+ super();
6
+ this.value = value;
7
+ this.identifier = new IdentifierString(name);
8
+ }
9
+ }
10
+ SelectItem.kind = Symbol("SelectItem");
11
+ export class SelectClause extends SqlComponent {
12
+ constructor(items, distinct = null) {
13
+ super();
14
+ this.items = items;
15
+ this.distinct = distinct;
16
+ }
17
+ }
18
+ SelectClause.kind = Symbol("SelectClause");
19
+ export class Distinct extends SqlComponent {
20
+ constructor() {
21
+ super();
22
+ }
23
+ }
24
+ Distinct.kind = Symbol("Distinct");
25
+ export class DistinctOn extends SqlComponent {
26
+ constructor(value) {
27
+ super();
28
+ this.value = value;
29
+ }
30
+ }
31
+ DistinctOn.kind = Symbol("DistinctOn");
32
+ export class WhereClause extends SqlComponent {
33
+ constructor(condition) {
34
+ super();
35
+ this.condition = condition;
36
+ }
37
+ }
38
+ WhereClause.kind = Symbol("WhereClause");
39
+ export class PartitionByClause extends SqlComponent {
40
+ constructor(value) {
41
+ super();
42
+ this.value = value;
43
+ }
44
+ }
45
+ PartitionByClause.kind = Symbol("PartitionByClause");
46
+ export class WindowFrameClause extends SqlComponent {
47
+ constructor(name, expression) {
48
+ super();
49
+ this.name = new IdentifierString(name);
50
+ this.expression = expression;
51
+ }
52
+ }
53
+ WindowFrameClause.kind = Symbol("WindowFrameClause");
54
+ export var SortDirection;
55
+ (function (SortDirection) {
56
+ SortDirection["Ascending"] = "asc";
57
+ SortDirection["Descending"] = "desc";
58
+ })(SortDirection || (SortDirection = {}));
59
+ export var NullsSortDirection;
60
+ (function (NullsSortDirection) {
61
+ NullsSortDirection["First"] = "first";
62
+ NullsSortDirection["Last"] = "last";
63
+ })(NullsSortDirection || (NullsSortDirection = {}));
64
+ export class OrderByClause extends SqlComponent {
65
+ constructor(items) {
66
+ super();
67
+ this.order = items;
68
+ }
69
+ }
70
+ OrderByClause.kind = Symbol("OrderByClause");
71
+ export class OrderByItem extends SqlComponent {
72
+ constructor(expression, sortDirection, nullsPosition) {
73
+ super();
74
+ this.value = expression;
75
+ this.sortDirection = sortDirection === null ? SortDirection.Ascending : sortDirection;
76
+ this.nullsPosition = nullsPosition;
77
+ }
78
+ }
79
+ OrderByItem.kind = Symbol("OrderByItem");
80
+ export class GroupByClause extends SqlComponent {
81
+ constructor(expression) {
82
+ super();
83
+ this.grouping = expression;
84
+ }
85
+ }
86
+ GroupByClause.kind = Symbol("GroupByClause");
87
+ export class HavingClause extends SqlComponent {
88
+ constructor(condition) {
89
+ super();
90
+ this.condition = condition;
91
+ }
92
+ }
93
+ HavingClause.kind = Symbol("HavingClause");
94
+ export class TableSource extends SqlComponent {
95
+ constructor(namespaces, table) {
96
+ super();
97
+ this.namespaces = namespaces !== null ? namespaces.map((namespace) => new IdentifierString(namespace)) : null;
98
+ ;
99
+ this.table = new IdentifierString(table);
100
+ this.identifier = this.table;
101
+ }
102
+ getSourceName() {
103
+ if (this.namespaces) {
104
+ return this.namespaces.map((namespace) => namespace.name).join(".") + "." + this.table.name;
105
+ }
106
+ else {
107
+ return this.table.name;
108
+ }
109
+ }
110
+ }
111
+ TableSource.kind = Symbol("TableSource");
112
+ export class FunctionSource extends SqlComponent {
113
+ constructor(functionName, argument) {
114
+ super();
115
+ this.name = new RawString(functionName);
116
+ this.argument = argument;
117
+ }
118
+ }
119
+ FunctionSource.kind = Symbol("FunctionSource");
120
+ export class ParenSource extends SqlComponent {
121
+ constructor(source) {
122
+ super();
123
+ this.source = source;
124
+ }
125
+ }
126
+ ParenSource.kind = Symbol("ParenSource");
127
+ export class SubQuerySource extends SqlComponent {
128
+ constructor(query) {
129
+ super();
130
+ this.query = query;
131
+ }
132
+ }
133
+ SubQuerySource.kind = Symbol("SubQuerySource");
134
+ export class SourceExpression extends SqlComponent {
135
+ constructor(datasource, aliasExpression) {
136
+ super();
137
+ this.datasource = datasource;
138
+ this.aliasExpression = aliasExpression;
139
+ }
140
+ getAliasName() {
141
+ if (this.aliasExpression) {
142
+ return this.aliasExpression.table.name;
143
+ }
144
+ else if (this.datasource instanceof TableSource) {
145
+ return this.datasource.getSourceName();
146
+ }
147
+ return null;
148
+ }
149
+ }
150
+ SourceExpression.kind = Symbol("SourceExpression");
151
+ export class JoinOnClause extends SqlComponent {
152
+ constructor(condition) {
153
+ super();
154
+ this.condition = condition;
155
+ }
156
+ }
157
+ JoinOnClause.kind = Symbol("JoinOnClause");
158
+ export class JoinUsingClause extends SqlComponent {
159
+ constructor(condition) {
160
+ super();
161
+ this.condition = condition;
162
+ }
163
+ }
164
+ JoinUsingClause.kind = Symbol("JoinUsingClause");
165
+ export class JoinClause extends SqlComponent {
166
+ constructor(joinType, source, condition, lateral) {
167
+ super();
168
+ this.joinType = new RawString(joinType);
169
+ this.source = source;
170
+ this.condition = condition;
171
+ this.lateral = lateral;
172
+ }
173
+ getAliasSourceName() {
174
+ if (this.source.aliasExpression) {
175
+ return this.source.aliasExpression.table.name;
176
+ }
177
+ else if (this.source instanceof TableSource) {
178
+ return this.source.table.name;
179
+ }
180
+ return null;
181
+ }
182
+ }
183
+ JoinClause.kind = Symbol("JoinItem");
184
+ export class FromClause extends SqlComponent {
185
+ constructor(source, join) {
186
+ super();
187
+ this.source = source;
188
+ this.joins = join;
189
+ }
190
+ getAliasSourceName() {
191
+ if (this.source.aliasExpression) {
192
+ return this.source.aliasExpression.table.name;
193
+ }
194
+ else if (this.source.datasource instanceof TableSource) {
195
+ return this.source.datasource.table.name;
196
+ }
197
+ return null;
198
+ }
199
+ /**
200
+ * Returns all SourceExpression objects in this FROM clause, including main source and all JOIN sources.
201
+ */
202
+ getSources() {
203
+ const sources = [this.source];
204
+ if (this.joins) {
205
+ for (const join of this.joins) {
206
+ sources.push(join.source);
207
+ }
208
+ }
209
+ return sources;
210
+ }
211
+ }
212
+ FromClause.kind = Symbol("FromClause");
213
+ export class CommonTable extends SqlComponent {
214
+ constructor(query, aliasExpression, materialized) {
215
+ super();
216
+ this.query = query;
217
+ this.materialized = materialized;
218
+ if (typeof aliasExpression === "string") {
219
+ this.aliasExpression = new SourceAliasExpression(aliasExpression, null);
220
+ }
221
+ else {
222
+ this.aliasExpression = aliasExpression;
223
+ }
224
+ }
225
+ getAliasSourceName() {
226
+ return this.aliasExpression.table.name;
227
+ }
228
+ }
229
+ CommonTable.kind = Symbol("CommonTable");
230
+ export class WithClause extends SqlComponent {
231
+ constructor(recursive, tables) {
232
+ super();
233
+ this.recursive = recursive;
234
+ this.tables = tables;
235
+ }
236
+ }
237
+ WithClause.kind = Symbol("WithClause");
238
+ //export type RowLimitComponent = LimitOffset | FetchSpecification;
239
+ export class LimitClause extends SqlComponent {
240
+ constructor(limit, offset) {
241
+ super();
242
+ this.limit = limit;
243
+ this.offset = offset;
244
+ }
245
+ }
246
+ LimitClause.kind = Symbol("LimitClause");
247
+ export var FetchType;
248
+ (function (FetchType) {
249
+ FetchType["Next"] = "next";
250
+ FetchType["First"] = "first";
251
+ })(FetchType || (FetchType = {}));
252
+ export var FetchUnit;
253
+ (function (FetchUnit) {
254
+ FetchUnit["RowsOnly"] = "rows only";
255
+ FetchUnit["Percent"] = "percent";
256
+ FetchUnit["PercentWithTies"] = "percent with ties";
257
+ })(FetchUnit || (FetchUnit = {}));
258
+ export class FetchSpecification extends SqlComponent {
259
+ constructor(type, count, unit) {
260
+ super();
261
+ this.type = type;
262
+ this.count = count;
263
+ this.unit = unit;
264
+ }
265
+ }
266
+ FetchSpecification.kind = Symbol("FetchSpecification");
267
+ export var LockMode;
268
+ (function (LockMode) {
269
+ LockMode["Update"] = "update";
270
+ LockMode["Share"] = "share";
271
+ LockMode["KeyShare"] = "key share";
272
+ LockMode["NokeyUpdate"] = "no key update";
273
+ })(LockMode || (LockMode = {}));
274
+ export class ForClause extends SqlComponent {
275
+ constructor(lockMode) {
276
+ super();
277
+ this.lockMode = lockMode;
278
+ }
279
+ }
280
+ ForClause.kind = Symbol("ForClause");
281
+ export class SourceAliasExpression extends SqlComponent {
282
+ constructor(alias, columnAlias) {
283
+ super();
284
+ this.table = new IdentifierString(alias);
285
+ this.columns = columnAlias !== null ? columnAlias.map((alias) => new IdentifierString(alias)) : null;
286
+ }
287
+ }
288
+ SourceAliasExpression.kind = Symbol("SourceAliasExpression");
289
+ //# sourceMappingURL=Clause.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Clause.js","sourceRoot":"","sources":["../../../src/models/Clause.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,48 @@
1
+ import { KeywordMatchResult } from "../parsers/KeywordParser";
2
+ export class KeywordTrie {
3
+ constructor(keywords) {
4
+ this.root = new Map();
5
+ // cache properties
6
+ this.hasEndProperty = false;
7
+ this.hasMoreProperties = false;
8
+ // initialize root node
9
+ for (const keyword of keywords) {
10
+ this.addKeyword(keyword);
11
+ }
12
+ // set current node to root
13
+ this.currentNode = this.root;
14
+ }
15
+ addKeyword(keyword) {
16
+ let node = this.root;
17
+ for (const word of keyword) {
18
+ if (!node.has(word)) {
19
+ node.set(word, new Map());
20
+ }
21
+ node = node.get(word);
22
+ }
23
+ node.set("__end__", true);
24
+ }
25
+ reset() {
26
+ this.currentNode = this.root;
27
+ this.hasEndProperty = false;
28
+ this.hasMoreProperties = false;
29
+ }
30
+ pushLexeme(lexeme) {
31
+ if (!this.currentNode.has(lexeme)) {
32
+ return KeywordMatchResult.NotAKeyword;
33
+ }
34
+ // move to next node
35
+ this.currentNode = this.currentNode.get(lexeme);
36
+ // Cache property checks to avoid repeated operations
37
+ this.hasEndProperty = this.currentNode.has("__end__");
38
+ this.hasMoreProperties = this.currentNode.size > (this.hasEndProperty ? 1 : 0);
39
+ if (this.hasEndProperty && !this.hasMoreProperties) {
40
+ return KeywordMatchResult.Final;
41
+ }
42
+ if (this.hasEndProperty && this.hasMoreProperties) {
43
+ return KeywordMatchResult.PartialOrFinal;
44
+ }
45
+ return KeywordMatchResult.PartialOnly;
46
+ }
47
+ }
48
+ //# sourceMappingURL=KeywordTrie.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"KeywordTrie.js","sourceRoot":"","sources":["../../../src/models/KeywordTrie.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAE9D,MAAM,OAAO,WAAW;IAQpB,YAAY,QAAoB;QAPxB,SAAI,GAAqB,IAAI,GAAG,EAAE,CAAC;QAG3C,mBAAmB;QACX,mBAAc,GAAY,KAAK,CAAC;QAChC,sBAAiB,GAAY,KAAK,CAAC;QAGvC,uBAAuB;QACvB,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC7B,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QAC7B,CAAC;QACD,2BAA2B;QAC3B,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC;IACjC,CAAC;IAEO,UAAU,CAAC,OAAiB;QAChC,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACrB,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;YACzB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;gBAClB,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;YAC9B,CAAC;YACD,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC1B,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IAC9B,CAAC;IAEM,KAAK;QACR,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC;QAC7B,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;QAC5B,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;IACnC,CAAC;IAEM,UAAU,CAAC,MAAc;QAC5B,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;YAChC,OAAO,kBAAkB,CAAC,WAAW,CAAC;QAC1C,CAAC;QAED,oBAAoB;QACpB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAEhD,qDAAqD;QACrD,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACtD,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAE/E,IAAI,IAAI,CAAC,cAAc,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACjD,OAAO,kBAAkB,CAAC,KAAK,CAAC;QACpC,CAAC;QACD,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAChD,OAAO,kBAAkB,CAAC,cAAc,CAAC;QAC7C,CAAC;QAED,OAAO,kBAAkB,CAAC,WAAW,CAAC;IAC1C,CAAC;CACJ"}
@@ -0,0 +1,18 @@
1
+ export var TokenType;
2
+ (function (TokenType) {
3
+ TokenType[TokenType["Literal"] = 0] = "Literal";
4
+ TokenType[TokenType["Operator"] = 1] = "Operator";
5
+ TokenType[TokenType["OpenParen"] = 2] = "OpenParen";
6
+ TokenType[TokenType["CloseParen"] = 3] = "CloseParen";
7
+ TokenType[TokenType["Comma"] = 4] = "Comma";
8
+ TokenType[TokenType["Dot"] = 5] = "Dot";
9
+ TokenType[TokenType["Identifier"] = 6] = "Identifier";
10
+ TokenType[TokenType["Command"] = 7] = "Command";
11
+ TokenType[TokenType["Parameter"] = 8] = "Parameter";
12
+ TokenType[TokenType["OpenBracket"] = 9] = "OpenBracket";
13
+ TokenType[TokenType["CloseBracket"] = 10] = "CloseBracket";
14
+ TokenType[TokenType["Function"] = 11] = "Function";
15
+ TokenType[TokenType["StringSpecifier"] = 12] = "StringSpecifier";
16
+ TokenType[TokenType["Type"] = 13] = "Type";
17
+ })(TokenType || (TokenType = {}));
18
+ //# sourceMappingURL=Lexeme.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Lexeme.js","sourceRoot":"","sources":["../../../src/models/Lexeme.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,SAeX;AAfD,WAAY,SAAS;IACjB,+CAAO,CAAA;IACP,iDAAQ,CAAA;IACR,mDAAS,CAAA;IACT,qDAAU,CAAA;IACV,2CAAK,CAAA;IACL,uCAAG,CAAA;IACH,qDAAU,CAAA;IACV,+CAAO,CAAA;IACP,mDAAS,CAAA;IACT,uDAAW,CAAA;IACX,0DAAY,CAAA;IACZ,kDAAQ,CAAA;IACR,gEAAe,CAAA;IACf,0CAAI,CAAA;AACR,CAAC,EAfW,SAAS,KAAT,SAAS,QAepB"}
@@ -0,0 +1,5 @@
1
+ import { SimpleSelectQuery } from "./SimpleSelectQuery";
2
+ import { BinarySelectQuery } from "./BinarySelectQuery";
3
+ import { ValuesQuery } from "./ValuesQuery";
4
+ export { SimpleSelectQuery, BinarySelectQuery, ValuesQuery };
5
+ //# sourceMappingURL=SelectQuery.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SelectQuery.js","sourceRoot":"","sources":["../../../src/models/SelectQuery.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAG5C,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,WAAW,EAAE,CAAC"}
@@ -0,0 +1,288 @@
1
+ import { SqlComponent } from "./SqlComponent";
2
+ import { HavingClause, JoinClause, JoinOnClause, SourceExpression, SubQuerySource, SourceAliasExpression, WhereClause, WithClause, CommonTable } from "./Clause";
3
+ import { BinaryExpression, ColumnReference } from "./ValueComponent";
4
+ import { ValueParser } from "../parsers/ValueParser";
5
+ import { CTENormalizer } from "../transformers/CTENormalizer";
6
+ import { SelectableColumnCollector } from "../transformers/SelectableColumnCollector";
7
+ import { SourceParser } from "../parsers/SourceParser";
8
+ import { BinarySelectQuery } from "./BinarySelectQuery";
9
+ import { SelectQueryParser } from "../parsers/SelectQueryParser";
10
+ /**
11
+ * Represents a simple SELECT query in SQL.
12
+ */
13
+ export class SimpleSelectQuery extends SqlComponent {
14
+ constructor(withClause, selectClause, fromClause, whereClause, groupByClause, havingClause, orderByClause, windowFrameClause, rowLimitClause, forClause) {
15
+ super();
16
+ this.WithClause = null;
17
+ this.WithClause = withClause;
18
+ this.selectClause = selectClause;
19
+ this.fromClause = fromClause;
20
+ this.whereClause = whereClause;
21
+ this.groupByClause = groupByClause;
22
+ this.havingClause = havingClause;
23
+ this.orderByClause = orderByClause;
24
+ this.windowFrameClause = windowFrameClause;
25
+ this.rowLimitClause = rowLimitClause;
26
+ this.forClause = forClause;
27
+ }
28
+ /**
29
+ * Creates a new BinarySelectQuery with this query as the left side and the provided query as the right side,
30
+ * using UNION as the operator.
31
+ *
32
+ * @param rightQuery The right side of the UNION
33
+ * @returns A new BinarySelectQuery representing "this UNION rightQuery"
34
+ */
35
+ toUnion(rightQuery) {
36
+ return this.toBinaryQuery('union', rightQuery);
37
+ }
38
+ /**
39
+ * Creates a new BinarySelectQuery with this query as the left side and the provided query as the right side,
40
+ * using UNION ALL as the operator.
41
+ *
42
+ * @param rightQuery The right side of the UNION ALL
43
+ * @returns A new BinarySelectQuery representing "this UNION ALL rightQuery"
44
+ */
45
+ toUnionAll(rightQuery) {
46
+ return this.toBinaryQuery('union all', rightQuery);
47
+ }
48
+ /**
49
+ * Creates a new BinarySelectQuery with this query as the left side and the provided query as the right side,
50
+ * using INTERSECT as the operator.
51
+ *
52
+ * @param rightQuery The right side of the INTERSECT
53
+ * @returns A new BinarySelectQuery representing "this INTERSECT rightQuery"
54
+ */
55
+ toIntersect(rightQuery) {
56
+ return this.toBinaryQuery('intersect', rightQuery);
57
+ }
58
+ /**
59
+ * Creates a new BinarySelectQuery with this query as the left side and the provided query as the right side,
60
+ * using INTERSECT ALL as the operator.
61
+ *
62
+ * @param rightQuery The right side of the INTERSECT ALL
63
+ * @returns A new BinarySelectQuery representing "this INTERSECT ALL rightQuery"
64
+ */
65
+ toIntersectAll(rightQuery) {
66
+ return this.toBinaryQuery('intersect all', rightQuery);
67
+ }
68
+ /**
69
+ * Creates a new BinarySelectQuery with this query as the left side and the provided query as the right side,
70
+ * using EXCEPT as the operator.
71
+ *
72
+ * @param rightQuery The right side of the EXCEPT
73
+ * @returns A new BinarySelectQuery representing "this EXCEPT rightQuery"
74
+ */
75
+ toExcept(rightQuery) {
76
+ return this.toBinaryQuery('except', rightQuery);
77
+ }
78
+ /**
79
+ * Creates a new BinarySelectQuery with this query as the left side and the provided query as the right side,
80
+ * using EXCEPT ALL as the operator.
81
+ *
82
+ * @param rightQuery The right side of the EXCEPT ALL
83
+ * @returns A new BinarySelectQuery representing "this EXCEPT ALL rightQuery"
84
+ */
85
+ toExceptAll(rightQuery) {
86
+ return this.toBinaryQuery('except all', rightQuery);
87
+ }
88
+ /**
89
+ * Creates a new BinarySelectQuery with this query as the left side and the provided query as the right side,
90
+ * using the specified operator.
91
+ *
92
+ * @param operator SQL operator to use (e.g. 'union', 'union all', 'intersect', 'except')
93
+ * @param rightQuery The right side of the binary operation
94
+ * @returns A new BinarySelectQuery representing "this [operator] rightQuery"
95
+ */
96
+ toBinaryQuery(operator, rightQuery) {
97
+ return new BinarySelectQuery(this, operator, rightQuery);
98
+ }
99
+ /**
100
+ * Appends a new condition to the query's WHERE clause using AND logic.
101
+ * The condition is provided as a raw SQL string which is parsed internally.
102
+ *
103
+ * @param rawCondition Raw SQL string representing the condition (e.g. "status = 'active'")
104
+ */
105
+ appendWhereRaw(rawCondition) {
106
+ const parsedCondition = ValueParser.parse(rawCondition);
107
+ this.appendWhere(parsedCondition);
108
+ }
109
+ /**
110
+ * Appends a new condition to the query's WHERE clause using AND logic.
111
+ * The condition is provided as a ValueComponent object.
112
+ *
113
+ * @param condition ValueComponent representing the condition
114
+ */
115
+ appendWhere(condition) {
116
+ if (!this.whereClause) {
117
+ this.whereClause = new WhereClause(condition);
118
+ }
119
+ else {
120
+ this.whereClause.condition = new BinaryExpression(this.whereClause.condition, 'and', condition);
121
+ }
122
+ }
123
+ /**
124
+ * Appends a new condition to the query's HAVING clause using AND logic.
125
+ * The condition is provided as a raw SQL string which is parsed internally.
126
+ *
127
+ * @param rawCondition Raw SQL string representing the condition (e.g. "count(*) > 5")
128
+ */
129
+ appendHavingRaw(rawCondition) {
130
+ const parsedCondition = ValueParser.parse(rawCondition);
131
+ this.appendHaving(parsedCondition);
132
+ }
133
+ /**
134
+ * Appends a new condition to the query's HAVING clause using AND logic.
135
+ * The condition is provided as a ValueComponent object.
136
+ *
137
+ * @param condition ValueComponent representing the condition
138
+ */
139
+ appendHaving(condition) {
140
+ if (!this.havingClause) {
141
+ this.havingClause = new HavingClause(condition);
142
+ }
143
+ else {
144
+ this.havingClause.condition = new BinaryExpression(this.havingClause.condition, 'and', condition);
145
+ }
146
+ }
147
+ /**
148
+ * Appends an INNER JOIN clause to the query.
149
+ * @param joinSourceRawText The table source text to join (e.g., "my_table", "schema.my_table")
150
+ * @param alias The alias for the joined table
151
+ * @param columns The columns to use for the join condition (e.g. ["user_id"])
152
+ */
153
+ innerJoinRaw(joinSourceRawText, alias, columns) {
154
+ this.joinSourceRaw('inner join', joinSourceRawText, alias, columns);
155
+ }
156
+ /**
157
+ * Appends a LEFT JOIN clause to the query.
158
+ * @param joinSourceRawText The table source text to join
159
+ * @param alias The alias for the joined table
160
+ * @param columns The columns to use for the join condition
161
+ */
162
+ leftJoinRaw(joinSourceRawText, alias, columns) {
163
+ this.joinSourceRaw('left join', joinSourceRawText, alias, columns);
164
+ }
165
+ /**
166
+ * Appends a RIGHT JOIN clause to the query.
167
+ * @param joinSourceRawText The table source text to join
168
+ * @param alias The alias for the joined table
169
+ * @param columns The columns to use for the join condition
170
+ */
171
+ rightJoinRaw(joinSourceRawText, alias, columns) {
172
+ this.joinSourceRaw('right join', joinSourceRawText, alias, columns);
173
+ }
174
+ /**
175
+ * Appends an INNER JOIN clause to the query using a SourceExpression.
176
+ * @param sourceExpr The source expression to join
177
+ * @param columns The columns to use for the join condition
178
+ */
179
+ innerJoin(sourceExpr, columns) {
180
+ this.joinSource('inner join', sourceExpr, columns);
181
+ }
182
+ /**
183
+ * Appends a LEFT JOIN clause to the query using a SourceExpression.
184
+ * @param sourceExpr The source expression to join
185
+ * @param columns The columns to use for the join condition
186
+ */
187
+ leftJoin(sourceExpr, columns) {
188
+ this.joinSource('left join', sourceExpr, columns);
189
+ }
190
+ /**
191
+ * Appends a RIGHT JOIN clause to the query using a SourceExpression.
192
+ * @param sourceExpr The source expression to join
193
+ * @param columns The columns to use for the join condition
194
+ */
195
+ rightJoin(sourceExpr, columns) {
196
+ this.joinSource('right join', sourceExpr, columns);
197
+ }
198
+ /**
199
+ * Internal helper to append a JOIN clause.
200
+ * Parses the table source, finds the corresponding columns in the existing query context,
201
+ * and builds the JOIN condition.
202
+ * @param joinType Type of join (e.g., 'inner join', 'left join')
203
+ * @param joinSourceRawText Raw text for the table/source to join (e.g., "my_table", "schema.another_table")
204
+ * @param alias Alias for the table/source being joined
205
+ * @param columns Array of column names to join on
206
+ */
207
+ joinSourceRaw(joinType, joinSourceRawText, alias, columns) {
208
+ const tableSource = SourceParser.parse(joinSourceRawText);
209
+ const sourceExpr = new SourceExpression(tableSource, new SourceAliasExpression(alias, null));
210
+ this.joinSource(joinType, sourceExpr, columns);
211
+ }
212
+ joinSource(joinType, sourceExpr, columns) {
213
+ if (!this.fromClause) {
214
+ throw new Error('A FROM clause is required to add a JOIN condition.');
215
+ }
216
+ const collector = new SelectableColumnCollector();
217
+ const valueSets = collector.collect(this);
218
+ let joinCondition = null;
219
+ let count = 0;
220
+ const sourceAlias = sourceExpr.getAliasName();
221
+ if (!sourceAlias) {
222
+ throw new Error('An alias is required for the source expression to add a JOIN condition.');
223
+ }
224
+ for (const valueSet of valueSets) {
225
+ if (columns.some(col => col == valueSet.name)) {
226
+ const expr = new BinaryExpression(valueSet.value, '=', new ColumnReference([sourceAlias], valueSet.name));
227
+ if (joinCondition) {
228
+ joinCondition = new BinaryExpression(joinCondition, 'and', expr);
229
+ }
230
+ else {
231
+ joinCondition = expr;
232
+ }
233
+ count++;
234
+ }
235
+ }
236
+ if (!joinCondition || count !== columns.length) {
237
+ throw new Error(`Invalid JOIN condition. The specified columns were not found: ${columns.join(', ')}`);
238
+ }
239
+ const joinOnClause = new JoinOnClause(joinCondition);
240
+ const joinClause = new JoinClause(joinType, sourceExpr, joinOnClause, false);
241
+ if (this.fromClause) {
242
+ if (this.fromClause.joins) {
243
+ this.fromClause.joins.push(joinClause);
244
+ }
245
+ else {
246
+ this.fromClause.joins = [joinClause];
247
+ }
248
+ }
249
+ // const normalizer = new CTENormalizer();
250
+ // normalizer.normalize(this);
251
+ CTENormalizer.normalize(this);
252
+ }
253
+ // Returns a SourceExpression wrapping this query as a subquery source.
254
+ // Alias is required for correct SQL generation and join logic.
255
+ toSource(alias) {
256
+ if (!alias || alias.trim() === "") {
257
+ throw new Error("Alias is required for toSource(). Please specify a non-empty alias name.");
258
+ }
259
+ return new SourceExpression(new SubQuerySource(this), new SourceAliasExpression(alias, null));
260
+ }
261
+ appendWith(commonTable) {
262
+ // Always treat as array for simplicity
263
+ const tables = Array.isArray(commonTable) ? commonTable : [commonTable];
264
+ if (!this.WithClause) {
265
+ this.WithClause = new WithClause(false, tables);
266
+ }
267
+ else {
268
+ this.WithClause.tables.push(...tables);
269
+ }
270
+ // const normalizer = new CTENormalizer();
271
+ // normalizer.normalize(this);
272
+ CTENormalizer.normalize(this);
273
+ }
274
+ /**
275
+ * Appends a CommonTable (CTE) to the WITH clause from raw SQL text and alias.
276
+ * If alias is provided, it will be used as the CTE name.
277
+ *
278
+ * @param rawText Raw SQL string representing the CTE body (e.g. '(SELECT ...)')
279
+ * @param alias Optional alias for the CTE (e.g. 'cte_name')
280
+ */
281
+ appendWithRaw(rawText, alias) {
282
+ const query = SelectQueryParser.parse(rawText);
283
+ const commonTable = new CommonTable(query, alias, null);
284
+ this.appendWith(commonTable);
285
+ }
286
+ }
287
+ SimpleSelectQuery.kind = Symbol("SelectQuery");
288
+ //# sourceMappingURL=SimpleSelectQuery.js.map