rawsql-ts 0.24.3 → 0.25.0

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 (105) hide show
  1. package/README.md +10 -1
  2. package/dist/esm/index.d.ts +6 -0
  3. package/dist/esm/index.js +6 -0
  4. package/dist/esm/index.js.map +1 -1
  5. package/dist/esm/index.min.js +9 -9
  6. package/dist/esm/index.min.js.map +4 -4
  7. package/dist/esm/models/ValueComponent.d.ts +2 -1
  8. package/dist/esm/models/ValueComponent.js +2 -1
  9. package/dist/esm/models/ValueComponent.js.map +1 -1
  10. package/dist/esm/parsers/FunctionExpressionParser.d.ts +3 -0
  11. package/dist/esm/parsers/FunctionExpressionParser.js +50 -2
  12. package/dist/esm/parsers/FunctionExpressionParser.js.map +1 -1
  13. package/dist/esm/parsers/ParameterDecorator.d.ts +2 -2
  14. package/dist/esm/parsers/ParameterDecorator.js +1 -1
  15. package/dist/esm/parsers/ParameterDecorator.js.map +1 -1
  16. package/dist/esm/parsers/ParameterExpressionParser.js +2 -1
  17. package/dist/esm/parsers/ParameterExpressionParser.js.map +1 -1
  18. package/dist/esm/parsers/SqlPrintTokenParser.d.ts +16 -4
  19. package/dist/esm/parsers/SqlPrintTokenParser.js +76 -13
  20. package/dist/esm/parsers/SqlPrintTokenParser.js.map +1 -1
  21. package/dist/esm/transformers/AstCommentAttachmentExtractor.d.ts +61 -0
  22. package/dist/esm/transformers/AstCommentAttachmentExtractor.js +221 -0
  23. package/dist/esm/transformers/AstCommentAttachmentExtractor.js.map +1 -0
  24. package/dist/esm/transformers/ClauseScopedColumnReferenceCollector.d.ts +47 -0
  25. package/dist/esm/transformers/ClauseScopedColumnReferenceCollector.js +235 -0
  26. package/dist/esm/transformers/ClauseScopedColumnReferenceCollector.js.map +1 -0
  27. package/dist/esm/transformers/FormatOptionResolver.js +1 -0
  28. package/dist/esm/transformers/FormatOptionResolver.js.map +1 -1
  29. package/dist/esm/transformers/LinePrinter.d.ts +1 -1
  30. package/dist/esm/transformers/NamedQueryDefinitionExtractor.d.ts +53 -0
  31. package/dist/esm/transformers/NamedQueryDefinitionExtractor.js +370 -0
  32. package/dist/esm/transformers/NamedQueryDefinitionExtractor.js.map +1 -0
  33. package/dist/esm/transformers/OnelineFormattingHelper.d.ts +1 -0
  34. package/dist/esm/transformers/OnelineFormattingHelper.js.map +1 -1
  35. package/dist/esm/transformers/SelectBodyExtractor.d.ts +21 -0
  36. package/dist/esm/transformers/SelectBodyExtractor.js +137 -0
  37. package/dist/esm/transformers/SelectBodyExtractor.js.map +1 -0
  38. package/dist/esm/transformers/SelectOutputCollector.d.ts +47 -0
  39. package/dist/esm/transformers/SelectOutputCollector.js +281 -0
  40. package/dist/esm/transformers/SelectOutputCollector.js.map +1 -0
  41. package/dist/esm/transformers/SelectValueCollector.d.ts +9 -1
  42. package/dist/esm/transformers/SelectValueCollector.js +83 -58
  43. package/dist/esm/transformers/SelectValueCollector.js.map +1 -1
  44. package/dist/esm/transformers/SqlFormatter.d.ts +9 -5
  45. package/dist/esm/transformers/SqlFormatter.js +4 -4
  46. package/dist/esm/transformers/SqlFormatter.js.map +1 -1
  47. package/dist/esm/transformers/SqlPrinter.d.ts +17 -2
  48. package/dist/esm/transformers/SqlPrinter.js +182 -21
  49. package/dist/esm/transformers/SqlPrinter.js.map +1 -1
  50. package/dist/esm/transformers/WildcardColumnInferenceCollector.d.ts +129 -0
  51. package/dist/esm/transformers/WildcardColumnInferenceCollector.js +373 -0
  52. package/dist/esm/transformers/WildcardColumnInferenceCollector.js.map +1 -0
  53. package/dist/index.js +6 -0
  54. package/dist/index.js.map +1 -1
  55. package/dist/index.min.js +9 -9
  56. package/dist/index.min.js.map +4 -4
  57. package/dist/models/ValueComponent.js +2 -1
  58. package/dist/models/ValueComponent.js.map +1 -1
  59. package/dist/parsers/FunctionExpressionParser.js +49 -1
  60. package/dist/parsers/FunctionExpressionParser.js.map +1 -1
  61. package/dist/parsers/ParameterDecorator.js +1 -1
  62. package/dist/parsers/ParameterDecorator.js.map +1 -1
  63. package/dist/parsers/ParameterExpressionParser.js +2 -1
  64. package/dist/parsers/ParameterExpressionParser.js.map +1 -1
  65. package/dist/parsers/SqlPrintTokenParser.js +76 -13
  66. package/dist/parsers/SqlPrintTokenParser.js.map +1 -1
  67. package/dist/src/index.d.ts +6 -0
  68. package/dist/src/models/ValueComponent.d.ts +2 -1
  69. package/dist/src/parsers/FunctionExpressionParser.d.ts +3 -0
  70. package/dist/src/parsers/ParameterDecorator.d.ts +2 -2
  71. package/dist/src/parsers/SqlPrintTokenParser.d.ts +16 -4
  72. package/dist/src/transformers/AstCommentAttachmentExtractor.d.ts +61 -0
  73. package/dist/src/transformers/ClauseScopedColumnReferenceCollector.d.ts +47 -0
  74. package/dist/src/transformers/LinePrinter.d.ts +1 -1
  75. package/dist/src/transformers/NamedQueryDefinitionExtractor.d.ts +53 -0
  76. package/dist/src/transformers/OnelineFormattingHelper.d.ts +1 -0
  77. package/dist/src/transformers/SelectBodyExtractor.d.ts +21 -0
  78. package/dist/src/transformers/SelectOutputCollector.d.ts +47 -0
  79. package/dist/src/transformers/SelectValueCollector.d.ts +9 -1
  80. package/dist/src/transformers/SqlFormatter.d.ts +9 -5
  81. package/dist/src/transformers/SqlPrinter.d.ts +17 -2
  82. package/dist/src/transformers/WildcardColumnInferenceCollector.d.ts +129 -0
  83. package/dist/transformers/AstCommentAttachmentExtractor.js +231 -0
  84. package/dist/transformers/AstCommentAttachmentExtractor.js.map +1 -0
  85. package/dist/transformers/ClauseScopedColumnReferenceCollector.js +239 -0
  86. package/dist/transformers/ClauseScopedColumnReferenceCollector.js.map +1 -0
  87. package/dist/transformers/FormatOptionResolver.js +1 -0
  88. package/dist/transformers/FormatOptionResolver.js.map +1 -1
  89. package/dist/transformers/NamedQueryDefinitionExtractor.js +374 -0
  90. package/dist/transformers/NamedQueryDefinitionExtractor.js.map +1 -0
  91. package/dist/transformers/OnelineFormattingHelper.js.map +1 -1
  92. package/dist/transformers/SelectBodyExtractor.js +141 -0
  93. package/dist/transformers/SelectBodyExtractor.js.map +1 -0
  94. package/dist/transformers/SelectOutputCollector.js +291 -0
  95. package/dist/transformers/SelectOutputCollector.js.map +1 -0
  96. package/dist/transformers/SelectValueCollector.js +83 -58
  97. package/dist/transformers/SelectValueCollector.js.map +1 -1
  98. package/dist/transformers/SqlFormatter.js +5 -3
  99. package/dist/transformers/SqlFormatter.js.map +1 -1
  100. package/dist/transformers/SqlPrinter.js +182 -21
  101. package/dist/transformers/SqlPrinter.js.map +1 -1
  102. package/dist/transformers/WildcardColumnInferenceCollector.js +377 -0
  103. package/dist/transformers/WildcardColumnInferenceCollector.js.map +1 -0
  104. package/dist/tsconfig.browser.tsbuildinfo +1 -1
  105. package/package.json +2 -2
@@ -0,0 +1,53 @@
1
+ import { CTEQuery } from "../models/Clause";
2
+ import { SqlComponent } from "../models/SqlComponent";
3
+ /**
4
+ * Source span for a named query definition when parser position metadata is available.
5
+ *
6
+ * @remarks The current extractor does not synthesize ranges. `range` and `nameRange`
7
+ * are returned as `null` until AST nodes expose reliable definition spans.
8
+ */
9
+ export interface NamedQueryDefinitionSourceRange {
10
+ start: number;
11
+ end: number;
12
+ }
13
+ /**
14
+ * DTO-style representation of a named query definition from a SQL AST.
15
+ */
16
+ export interface NamedQueryDefinition {
17
+ /** The stable definition name, such as a CTE alias. */
18
+ name: string;
19
+ /** The AST query node that defines the named query. */
20
+ query: CTEQuery;
21
+ /** Whether the definition belongs to a `WITH RECURSIVE` clause, when that context is available. */
22
+ recursive?: boolean;
23
+ /** Full definition source range when available. Currently `null`. */
24
+ range: NamedQueryDefinitionSourceRange | null;
25
+ /** Definition-name source range when available. Currently `null`. */
26
+ nameRange: NamedQueryDefinitionSourceRange | null;
27
+ }
28
+ /**
29
+ * Extracts named query definitions, starting with CTE definitions from `WITH` clauses.
30
+ *
31
+ * @remarks Definitions are emitted in SQL source order. For nested CTEs, the outer
32
+ * CTE definition is emitted when its name is encountered, then definitions inside
33
+ * that CTE body are emitted before later sibling CTE definitions.
34
+ */
35
+ export declare class NamedQueryDefinitionExtractor {
36
+ private readonly definitions;
37
+ private readonly visited;
38
+ /**
39
+ * Extract named query definitions from an AST component.
40
+ */
41
+ static extract(input: SqlComponent | null | undefined): NamedQueryDefinition[];
42
+ private visit;
43
+ private visitSelectQuery;
44
+ private visitSimpleSelectQuery;
45
+ private visitInsertQuery;
46
+ private visitUpdateQuery;
47
+ private visitDeleteQuery;
48
+ private visitMergeQuery;
49
+ private visitWithClause;
50
+ private visitCommonTable;
51
+ private visitKnownSqlComponent;
52
+ private visitKnownValueComponent;
53
+ }
@@ -0,0 +1,370 @@
1
+ import { CommonTable, DeleteClause, FromClause, FunctionSource, GroupByClause, HavingClause, InsertClause, JoinClause, JoinOnClause, JoinUsingClause, LimitClause, OnConflictClause, OrderByClause, OrderByItem, ParenSource, ReturningClause, SelectClause, SelectItem, SetClause, SourceExpression, SubQuerySource, UpdateClause, UsingClause, WhereClause, WindowFrameClause, WindowsClause, WithClause } from "../models/Clause";
2
+ import { DeleteQuery } from "../models/DeleteQuery";
3
+ import { InsertQuery } from "../models/InsertQuery";
4
+ import { MergeDeleteAction, MergeInsertAction, MergeQuery, MergeUpdateAction, MergeWhenClause } from "../models/MergeQuery";
5
+ import { BinarySelectQuery, SimpleSelectQuery, ValuesQuery } from "../models/SelectQuery";
6
+ import { UpdateQuery } from "../models/UpdateQuery";
7
+ import { ArrayExpression, ArrayIndexExpression, ArrayQueryExpression, ArraySliceExpression, BetweenExpression, BinaryExpression, CaseExpression, CaseKeyValuePair, CastExpression, FunctionCall, InlineQuery, JsonPredicateExpression, ParenExpression, SwitchCaseArgument, TupleExpression, TypeValue, UnaryExpression, ValueList, WindowFrameBoundaryValue, WindowFrameExpression, WindowFrameSpec } from "../models/ValueComponent";
8
+ import { SelectQueryWithClauseHelper } from "../utils/SelectQueryWithClauseHelper";
9
+ /**
10
+ * Extracts named query definitions, starting with CTE definitions from `WITH` clauses.
11
+ *
12
+ * @remarks Definitions are emitted in SQL source order. For nested CTEs, the outer
13
+ * CTE definition is emitted when its name is encountered, then definitions inside
14
+ * that CTE body are emitted before later sibling CTE definitions.
15
+ */
16
+ export class NamedQueryDefinitionExtractor {
17
+ constructor() {
18
+ this.definitions = [];
19
+ this.visited = new Set();
20
+ }
21
+ /**
22
+ * Extract named query definitions from an AST component.
23
+ */
24
+ static extract(input) {
25
+ if (!input) {
26
+ return [];
27
+ }
28
+ const extractor = new NamedQueryDefinitionExtractor();
29
+ extractor.visit(input);
30
+ return extractor.definitions;
31
+ }
32
+ visit(value) {
33
+ if (!value || typeof value !== "object") {
34
+ return;
35
+ }
36
+ if (this.visited.has(value)) {
37
+ return;
38
+ }
39
+ this.visited.add(value);
40
+ if (value instanceof WithClause) {
41
+ this.visitWithClause(value);
42
+ return;
43
+ }
44
+ if (value instanceof CommonTable) {
45
+ this.visitCommonTable(value);
46
+ return;
47
+ }
48
+ if (value instanceof SimpleSelectQuery || value instanceof BinarySelectQuery || value instanceof ValuesQuery) {
49
+ this.visitSelectQuery(value);
50
+ return;
51
+ }
52
+ if (value instanceof InsertQuery) {
53
+ this.visitInsertQuery(value);
54
+ return;
55
+ }
56
+ if (value instanceof UpdateQuery) {
57
+ this.visitUpdateQuery(value);
58
+ return;
59
+ }
60
+ if (value instanceof DeleteQuery) {
61
+ this.visitDeleteQuery(value);
62
+ return;
63
+ }
64
+ if (value instanceof MergeQuery) {
65
+ this.visitMergeQuery(value);
66
+ return;
67
+ }
68
+ if (this.visitKnownValueComponent(value)) {
69
+ return;
70
+ }
71
+ if (this.visitKnownSqlComponent(value)) {
72
+ return;
73
+ }
74
+ if (Array.isArray(value)) {
75
+ for (const item of value) {
76
+ this.visit(item);
77
+ }
78
+ return;
79
+ }
80
+ for (const key of Object.keys(value)) {
81
+ this.visit(value[key]);
82
+ }
83
+ }
84
+ visitSelectQuery(query, includeWith = true) {
85
+ if (query instanceof SimpleSelectQuery) {
86
+ this.visitSimpleSelectQuery(query, includeWith);
87
+ return;
88
+ }
89
+ if (query instanceof BinarySelectQuery) {
90
+ this.visitSelectQuery(query.left, includeWith);
91
+ this.visitSelectQuery(query.right);
92
+ return;
93
+ }
94
+ if (query instanceof ValuesQuery) {
95
+ if (includeWith) {
96
+ this.visit(query.withClause);
97
+ }
98
+ this.visit(query.tuples);
99
+ }
100
+ }
101
+ visitSimpleSelectQuery(query, includeWith) {
102
+ if (includeWith) {
103
+ this.visit(query.withClause);
104
+ }
105
+ this.visit(query.selectClause);
106
+ this.visit(query.fromClause);
107
+ this.visit(query.whereClause);
108
+ this.visit(query.groupByClause);
109
+ this.visit(query.havingClause);
110
+ this.visit(query.windowClause);
111
+ this.visit(query.orderByClause);
112
+ this.visit(query.limitClause);
113
+ this.visit(query.offsetClause);
114
+ this.visit(query.fetchClause);
115
+ this.visit(query.forClause);
116
+ }
117
+ visitInsertQuery(query) {
118
+ const withClause = SelectQueryWithClauseHelper.getWithClause(query.selectQuery);
119
+ this.visit(withClause);
120
+ this.visit(query.insertClause);
121
+ if (query.selectQuery) {
122
+ this.visitSelectQuery(query.selectQuery, false);
123
+ }
124
+ this.visit(query.onConflictClause);
125
+ this.visit(query.returningClause);
126
+ }
127
+ visitUpdateQuery(query) {
128
+ this.visit(query.withClause);
129
+ this.visit(query.updateClause);
130
+ this.visit(query.setClause);
131
+ this.visit(query.fromClause);
132
+ this.visit(query.whereClause);
133
+ this.visit(query.returningClause);
134
+ }
135
+ visitDeleteQuery(query) {
136
+ this.visit(query.withClause);
137
+ this.visit(query.deleteClause);
138
+ this.visit(query.usingClause);
139
+ this.visit(query.whereClause);
140
+ this.visit(query.returningClause);
141
+ }
142
+ visitMergeQuery(query) {
143
+ this.visit(query.withClause);
144
+ this.visit(query.target);
145
+ this.visit(query.source);
146
+ this.visit(query.onCondition);
147
+ this.visit(query.whenClauses);
148
+ this.visit(query.returningClause);
149
+ }
150
+ visitWithClause(withClause) {
151
+ for (const commonTable of withClause.tables) {
152
+ this.visitCommonTable(commonTable, withClause.recursive);
153
+ }
154
+ }
155
+ visitCommonTable(commonTable, recursive) {
156
+ const definition = {
157
+ name: commonTable.getSourceAliasName(),
158
+ query: commonTable.query,
159
+ range: null,
160
+ nameRange: null
161
+ };
162
+ if (recursive !== undefined) {
163
+ definition.recursive = recursive;
164
+ }
165
+ this.definitions.push(definition);
166
+ this.visit(commonTable.query);
167
+ }
168
+ visitKnownSqlComponent(value) {
169
+ if (value instanceof SelectClause) {
170
+ this.visit(value.distinct);
171
+ this.visit(value.hints);
172
+ this.visit(value.items);
173
+ return true;
174
+ }
175
+ if (value instanceof SelectItem) {
176
+ this.visit(value.value);
177
+ return true;
178
+ }
179
+ if (value instanceof FromClause) {
180
+ this.visit(value.source);
181
+ this.visit(value.joins);
182
+ return true;
183
+ }
184
+ if (value instanceof JoinClause) {
185
+ this.visit(value.source);
186
+ this.visit(value.condition);
187
+ return true;
188
+ }
189
+ if (value instanceof JoinOnClause || value instanceof JoinUsingClause) {
190
+ this.visit(value.condition);
191
+ return true;
192
+ }
193
+ if (value instanceof SourceExpression) {
194
+ this.visit(value.datasource);
195
+ return true;
196
+ }
197
+ if (value instanceof SubQuerySource) {
198
+ this.visitSelectQuery(value.query);
199
+ return true;
200
+ }
201
+ if (value instanceof FunctionSource) {
202
+ this.visit(value.argument);
203
+ return true;
204
+ }
205
+ if (value instanceof ParenSource) {
206
+ this.visit(value.source);
207
+ return true;
208
+ }
209
+ if (value instanceof WhereClause || value instanceof HavingClause) {
210
+ this.visit(value.condition);
211
+ return true;
212
+ }
213
+ if (value instanceof LimitClause) {
214
+ this.visit(value.value);
215
+ return true;
216
+ }
217
+ if (value instanceof GroupByClause) {
218
+ this.visit(value.grouping);
219
+ return true;
220
+ }
221
+ if (value instanceof WindowsClause) {
222
+ this.visit(value.windows);
223
+ return true;
224
+ }
225
+ if (value instanceof WindowFrameClause) {
226
+ this.visit(value.expression);
227
+ return true;
228
+ }
229
+ if (value instanceof OrderByClause) {
230
+ this.visit(value.order);
231
+ return true;
232
+ }
233
+ if (value instanceof OrderByItem) {
234
+ this.visit(value.value);
235
+ return true;
236
+ }
237
+ if (value instanceof ReturningClause) {
238
+ this.visit(value.items);
239
+ return true;
240
+ }
241
+ if (value instanceof OnConflictClause) {
242
+ this.visit(value.setClause);
243
+ this.visit(value.whereClause);
244
+ this.visit(value.forClause);
245
+ return true;
246
+ }
247
+ if (value instanceof SetClause) {
248
+ for (const item of value.items) {
249
+ this.visit(item.value);
250
+ }
251
+ return true;
252
+ }
253
+ if (value instanceof UpdateClause || value instanceof DeleteClause || value instanceof InsertClause) {
254
+ this.visit(value.source);
255
+ return true;
256
+ }
257
+ if (value instanceof UsingClause) {
258
+ this.visit(value.sources);
259
+ return true;
260
+ }
261
+ if (value instanceof MergeWhenClause) {
262
+ this.visit(value.condition);
263
+ this.visit(value.action);
264
+ return true;
265
+ }
266
+ if (value instanceof MergeUpdateAction) {
267
+ this.visit(value.setClause);
268
+ this.visit(value.whereClause);
269
+ return true;
270
+ }
271
+ if (value instanceof MergeDeleteAction) {
272
+ this.visit(value.whereClause);
273
+ return true;
274
+ }
275
+ if (value instanceof MergeInsertAction) {
276
+ this.visit(value.values);
277
+ return true;
278
+ }
279
+ return false;
280
+ }
281
+ visitKnownValueComponent(value) {
282
+ if (value instanceof ValueList || value instanceof TupleExpression) {
283
+ this.visit(value.values);
284
+ return true;
285
+ }
286
+ if (value instanceof FunctionCall) {
287
+ this.visit(value.argument);
288
+ this.visit(value.internalOrderBy);
289
+ this.visit(value.withinGroup);
290
+ this.visit(value.filterCondition);
291
+ this.visit(value.over);
292
+ return true;
293
+ }
294
+ if (value instanceof WindowFrameExpression) {
295
+ this.visit(value.partition);
296
+ this.visit(value.order);
297
+ this.visit(value.frameSpec);
298
+ return true;
299
+ }
300
+ if (value instanceof WindowFrameSpec) {
301
+ this.visit(value.startBound);
302
+ this.visit(value.endBound);
303
+ return true;
304
+ }
305
+ if (value instanceof WindowFrameBoundaryValue) {
306
+ this.visit(value.value);
307
+ return true;
308
+ }
309
+ if (value instanceof UnaryExpression || value instanceof ParenExpression || value instanceof ArrayExpression || value instanceof JsonPredicateExpression) {
310
+ this.visit(value.expression);
311
+ return true;
312
+ }
313
+ if (value instanceof BinaryExpression) {
314
+ this.visit(value.left);
315
+ this.visit(value.right);
316
+ return true;
317
+ }
318
+ if (value instanceof SwitchCaseArgument) {
319
+ this.visit(value.cases);
320
+ this.visit(value.elseValue);
321
+ return true;
322
+ }
323
+ if (value instanceof CaseKeyValuePair) {
324
+ this.visit(value.key);
325
+ this.visit(value.value);
326
+ return true;
327
+ }
328
+ if (value instanceof CastExpression) {
329
+ this.visit(value.input);
330
+ this.visit(value.castType);
331
+ return true;
332
+ }
333
+ if (value instanceof CaseExpression) {
334
+ this.visit(value.condition);
335
+ this.visit(value.switchCase);
336
+ return true;
337
+ }
338
+ if (value instanceof ArrayQueryExpression) {
339
+ this.visitSelectQuery(value.query);
340
+ return true;
341
+ }
342
+ if (value instanceof InlineQuery) {
343
+ this.visitSelectQuery(value.selectQuery);
344
+ return true;
345
+ }
346
+ if (value instanceof BetweenExpression) {
347
+ this.visit(value.expression);
348
+ this.visit(value.lower);
349
+ this.visit(value.upper);
350
+ return true;
351
+ }
352
+ if (value instanceof TypeValue) {
353
+ this.visit(value.argument);
354
+ return true;
355
+ }
356
+ if (value instanceof ArraySliceExpression) {
357
+ this.visit(value.array);
358
+ this.visit(value.startIndex);
359
+ this.visit(value.endIndex);
360
+ return true;
361
+ }
362
+ if (value instanceof ArrayIndexExpression) {
363
+ this.visit(value.array);
364
+ this.visit(value.index);
365
+ return true;
366
+ }
367
+ return false;
368
+ }
369
+ }
370
+ //# sourceMappingURL=NamedQueryDefinitionExtractor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NamedQueryDefinitionExtractor.js","sourceRoot":"","sources":["../../../src/transformers/NamedQueryDefinitionExtractor.ts"],"names":[],"mappings":"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"}
@@ -5,6 +5,7 @@ export interface OnelineFormattingOptions {
5
5
  parenthesesOneLine: boolean;
6
6
  betweenOneLine: boolean;
7
7
  valuesOneLine: boolean;
8
+ inOneLine: boolean;
8
9
  joinOneLine: boolean;
9
10
  caseOneLine: boolean;
10
11
  subqueryOneLine: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"OnelineFormattingHelper.js","sourceRoot":"","sources":["../../../src/transformers/OnelineFormattingHelper.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"OnelineFormattingHelper.js","sourceRoot":"","sources":["../../../src/transformers/OnelineFormattingHelper.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ import { SelectQuery } from "../models/SelectQuery";
2
+ import { SqlComponent } from "../models/SqlComponent";
3
+ export type SelectBodyWrapperKind = "create-table-as" | "create-view" | "create-materialized-view" | "insert-select";
4
+ export interface SelectBodyExtractionResult {
5
+ supported: boolean;
6
+ kind: SelectBodyWrapperKind | null;
7
+ targetName: string | null;
8
+ selectQuery: SelectQuery | null;
9
+ reason?: string;
10
+ }
11
+ export declare class SelectBodyExtractor {
12
+ static extract(input: string | SqlComponent): SelectBodyExtractionResult;
13
+ private static extractFromSql;
14
+ private static extractFromStatement;
15
+ private static extractCreateViewFromLexemes;
16
+ private static isCreateViewStatement;
17
+ private static consumeBalancedParentheses;
18
+ private static createTableTargetName;
19
+ private static insertTargetName;
20
+ private static unsupported;
21
+ }
@@ -0,0 +1,137 @@
1
+ import { CreateTableQuery } from "../models/CreateTableQuery";
2
+ import { InsertQuery } from "../models/InsertQuery";
3
+ import { TokenType } from "../models/Lexeme";
4
+ import { ValuesQuery } from "../models/ValuesQuery";
5
+ import { TableSource } from "../models/Clause";
6
+ import { FullNameParser } from "../parsers/FullNameParser";
7
+ import { SelectQueryParser } from "../parsers/SelectQueryParser";
8
+ import { SqlParser } from "../parsers/SqlParser";
9
+ import { SqlTokenizer } from "../parsers/SqlTokenizer";
10
+ export class SelectBodyExtractor {
11
+ static extract(input) {
12
+ if (typeof input === "string") {
13
+ return this.extractFromSql(input);
14
+ }
15
+ return this.extractFromStatement(input);
16
+ }
17
+ static extractFromSql(sql) {
18
+ const lexemes = new SqlTokenizer(sql).readLexemes();
19
+ if (this.isCreateViewStatement(lexemes)) {
20
+ return this.extractCreateViewFromLexemes(lexemes);
21
+ }
22
+ return this.extractFromStatement(SqlParser.parse(sql));
23
+ }
24
+ static extractFromStatement(statement) {
25
+ if (statement instanceof CreateTableQuery) {
26
+ const targetName = this.createTableTargetName(statement);
27
+ if (!statement.asSelectQuery) {
28
+ return this.unsupported(targetName);
29
+ }
30
+ return {
31
+ supported: true,
32
+ kind: "create-table-as",
33
+ targetName,
34
+ selectQuery: statement.asSelectQuery
35
+ };
36
+ }
37
+ if (statement instanceof InsertQuery) {
38
+ const targetName = this.insertTargetName(statement);
39
+ if (!statement.selectQuery || statement.selectQuery instanceof ValuesQuery) {
40
+ return this.unsupported(targetName);
41
+ }
42
+ return {
43
+ supported: true,
44
+ kind: "insert-select",
45
+ targetName,
46
+ selectQuery: statement.selectQuery
47
+ };
48
+ }
49
+ return {
50
+ supported: false,
51
+ kind: null,
52
+ targetName: null,
53
+ selectQuery: null,
54
+ reason: "Statement type is not supported."
55
+ };
56
+ }
57
+ static extractCreateViewFromLexemes(lexemes) {
58
+ var _a, _b, _c, _d, _e, _f;
59
+ let idx = 0;
60
+ idx++; // CREATE
61
+ const materialized = ((_a = lexemes[idx]) === null || _a === void 0 ? void 0 : _a.value.toLowerCase()) === "materialized";
62
+ if (materialized) {
63
+ idx++;
64
+ }
65
+ if (((_b = lexemes[idx]) === null || _b === void 0 ? void 0 : _b.value.toLowerCase()) !== "view") {
66
+ return this.unsupported(null, "Statement type is not supported.");
67
+ }
68
+ idx++;
69
+ if (((_c = lexemes[idx]) === null || _c === void 0 ? void 0 : _c.value.toLowerCase()) === "if not exists") {
70
+ idx++;
71
+ }
72
+ const targetResult = FullNameParser.parseFromLexeme(lexemes, idx);
73
+ idx = targetResult.newIndex;
74
+ const targetName = [...((_d = targetResult.namespaces) !== null && _d !== void 0 ? _d : []), targetResult.name.name].join(".");
75
+ if (((_e = lexemes[idx]) === null || _e === void 0 ? void 0 : _e.type) === TokenType.OpenParen) {
76
+ idx = this.consumeBalancedParentheses(lexemes, idx);
77
+ }
78
+ if (((_f = lexemes[idx]) === null || _f === void 0 ? void 0 : _f.value.toLowerCase()) !== "as") {
79
+ return this.unsupported(targetName);
80
+ }
81
+ idx++;
82
+ const selectResult = SelectQueryParser.parseFromLexeme(lexemes, idx);
83
+ return {
84
+ supported: true,
85
+ kind: materialized ? "create-materialized-view" : "create-view",
86
+ targetName,
87
+ selectQuery: selectResult.value
88
+ };
89
+ }
90
+ static isCreateViewStatement(lexemes) {
91
+ var _a, _b, _c;
92
+ if (((_a = lexemes[0]) === null || _a === void 0 ? void 0 : _a.value.toLowerCase()) !== "create") {
93
+ return false;
94
+ }
95
+ const second = (_b = lexemes[1]) === null || _b === void 0 ? void 0 : _b.value.toLowerCase();
96
+ const third = (_c = lexemes[2]) === null || _c === void 0 ? void 0 : _c.value.toLowerCase();
97
+ return second === "view" || (second === "materialized" && third === "view");
98
+ }
99
+ static consumeBalancedParentheses(lexemes, index) {
100
+ let idx = index;
101
+ let depth = 0;
102
+ while (idx < lexemes.length) {
103
+ if (lexemes[idx].type === TokenType.OpenParen) {
104
+ depth++;
105
+ }
106
+ else if (lexemes[idx].type === TokenType.CloseParen) {
107
+ depth--;
108
+ if (depth === 0) {
109
+ return idx + 1;
110
+ }
111
+ }
112
+ idx++;
113
+ }
114
+ return idx;
115
+ }
116
+ static createTableTargetName(query) {
117
+ var _a;
118
+ return [...((_a = query.namespaces) !== null && _a !== void 0 ? _a : []), query.tableName.name].join(".");
119
+ }
120
+ static insertTargetName(query) {
121
+ const source = query.insertClause.source;
122
+ if (source.datasource instanceof TableSource) {
123
+ return source.datasource.getSourceName();
124
+ }
125
+ return source.getAliasName();
126
+ }
127
+ static unsupported(targetName, reason = "No embedded SELECT body found.") {
128
+ return {
129
+ supported: false,
130
+ kind: null,
131
+ targetName,
132
+ selectQuery: null,
133
+ reason
134
+ };
135
+ }
136
+ }
137
+ //# sourceMappingURL=SelectBodyExtractor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SelectBodyExtractor.js","sourceRoot":"","sources":["../../../src/transformers/SelectBodyExtractor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAG7C,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,EAAE,SAAS,EAAmB,MAAM,sBAAsB,CAAC;AAClE,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAgBvD,MAAM,OAAO,mBAAmB;IACrB,MAAM,CAAC,OAAO,CAAC,KAA4B;QAC9C,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC5B,OAAO,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QACtC,CAAC;QAED,OAAO,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;IAC5C,CAAC;IAEO,MAAM,CAAC,cAAc,CAAC,GAAW;QACrC,MAAM,OAAO,GAAG,IAAI,YAAY,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;QACpD,IAAI,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,EAAE,CAAC;YACtC,OAAO,IAAI,CAAC,4BAA4B,CAAC,OAAO,CAAC,CAAC;QACtD,CAAC;QAED,OAAO,IAAI,CAAC,oBAAoB,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;IAC3D,CAAC;IAEO,MAAM,CAAC,oBAAoB,CAAC,SAAyC;QACzE,IAAI,SAAS,YAAY,gBAAgB,EAAE,CAAC;YACxC,MAAM,UAAU,GAAG,IAAI,CAAC,qBAAqB,CAAC,SAAS,CAAC,CAAC;YACzD,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,CAAC;gBAC3B,OAAO,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;YACxC,CAAC;YAED,OAAO;gBACH,SAAS,EAAE,IAAI;gBACf,IAAI,EAAE,iBAAiB;gBACvB,UAAU;gBACV,WAAW,EAAE,SAAS,CAAC,aAAa;aACvC,CAAC;QACN,CAAC;QAED,IAAI,SAAS,YAAY,WAAW,EAAE,CAAC;YACnC,MAAM,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;YACpD,IAAI,CAAC,SAAS,CAAC,WAAW,IAAI,SAAS,CAAC,WAAW,YAAY,WAAW,EAAE,CAAC;gBACzE,OAAO,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;YACxC,CAAC;YAED,OAAO;gBACH,SAAS,EAAE,IAAI;gBACf,IAAI,EAAE,eAAe;gBACrB,UAAU;gBACV,WAAW,EAAE,SAAS,CAAC,WAAW;aACrC,CAAC;QACN,CAAC;QAED,OAAO;YACH,SAAS,EAAE,KAAK;YAChB,IAAI,EAAE,IAAI;YACV,UAAU,EAAE,IAAI;YAChB,WAAW,EAAE,IAAI;YACjB,MAAM,EAAE,kCAAkC;SAC7C,CAAC;IACN,CAAC;IAEO,MAAM,CAAC,4BAA4B,CAAC,OAAgD;;QACxF,IAAI,GAAG,GAAG,CAAC,CAAC;QACZ,GAAG,EAAE,CAAC,CAAC,SAAS;QAEhB,MAAM,YAAY,GAAG,CAAA,MAAA,OAAO,CAAC,GAAG,CAAC,0CAAE,KAAK,CAAC,WAAW,EAAE,MAAK,cAAc,CAAC;QAC1E,IAAI,YAAY,EAAE,CAAC;YACf,GAAG,EAAE,CAAC;QACV,CAAC;QAED,IAAI,CAAA,MAAA,OAAO,CAAC,GAAG,CAAC,0CAAE,KAAK,CAAC,WAAW,EAAE,MAAK,MAAM,EAAE,CAAC;YAC/C,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,kCAAkC,CAAC,CAAC;QACtE,CAAC;QACD,GAAG,EAAE,CAAC;QAEN,IAAI,CAAA,MAAA,OAAO,CAAC,GAAG,CAAC,0CAAE,KAAK,CAAC,WAAW,EAAE,MAAK,eAAe,EAAE,CAAC;YACxD,GAAG,EAAE,CAAC;QACV,CAAC;QAED,MAAM,YAAY,GAAG,cAAc,CAAC,eAAe,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QAClE,GAAG,GAAG,YAAY,CAAC,QAAQ,CAAC;QAC5B,MAAM,UAAU,GAAG,CAAC,GAAG,CAAC,MAAA,YAAY,CAAC,UAAU,mCAAI,EAAE,CAAC,EAAE,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAE1F,IAAI,CAAA,MAAA,OAAO,CAAC,GAAG,CAAC,0CAAE,IAAI,MAAK,SAAS,CAAC,SAAS,EAAE,CAAC;YAC7C,GAAG,GAAG,IAAI,CAAC,0BAA0B,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QACxD,CAAC;QAED,IAAI,CAAA,MAAA,OAAO,CAAC,GAAG,CAAC,0CAAE,KAAK,CAAC,WAAW,EAAE,MAAK,IAAI,EAAE,CAAC;YAC7C,OAAO,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;QACxC,CAAC;QACD,GAAG,EAAE,CAAC;QAEN,MAAM,YAAY,GAAG,iBAAiB,CAAC,eAAe,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QACrE,OAAO;YACH,SAAS,EAAE,IAAI;YACf,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC,CAAC,aAAa;YAC/D,UAAU;YACV,WAAW,EAAE,YAAY,CAAC,KAAK;SAClC,CAAC;IACN,CAAC;IAEO,MAAM,CAAC,qBAAqB,CAAC,OAAgD;;QACjF,IAAI,CAAA,MAAA,OAAO,CAAC,CAAC,CAAC,0CAAE,KAAK,CAAC,WAAW,EAAE,MAAK,QAAQ,EAAE,CAAC;YAC/C,OAAO,KAAK,CAAC;QACjB,CAAC;QAED,MAAM,MAAM,GAAG,MAAA,OAAO,CAAC,CAAC,CAAC,0CAAE,KAAK,CAAC,WAAW,EAAE,CAAC;QAC/C,MAAM,KAAK,GAAG,MAAA,OAAO,CAAC,CAAC,CAAC,0CAAE,KAAK,CAAC,WAAW,EAAE,CAAC;QAC9C,OAAO,MAAM,KAAK,MAAM,IAAI,CAAC,MAAM,KAAK,cAAc,IAAI,KAAK,KAAK,MAAM,CAAC,CAAC;IAChF,CAAC;IAEO,MAAM,CAAC,0BAA0B,CAAC,OAAgD,EAAE,KAAa;QACrG,IAAI,GAAG,GAAG,KAAK,CAAC;QAChB,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,OAAO,GAAG,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;YAC1B,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,SAAS,EAAE,CAAC;gBAC5C,KAAK,EAAE,CAAC;YACZ,CAAC;iBAAM,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,UAAU,EAAE,CAAC;gBACpD,KAAK,EAAE,CAAC;gBACR,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;oBACd,OAAO,GAAG,GAAG,CAAC,CAAC;gBACnB,CAAC;YACL,CAAC;YACD,GAAG,EAAE,CAAC;QACV,CAAC;QACD,OAAO,GAAG,CAAC;IACf,CAAC;IAEO,MAAM,CAAC,qBAAqB,CAAC,KAAuB;;QACxD,OAAO,CAAC,GAAG,CAAC,MAAA,KAAK,CAAC,UAAU,mCAAI,EAAE,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACzE,CAAC;IAEO,MAAM,CAAC,gBAAgB,CAAC,KAAkB;QAC9C,MAAM,MAAM,GAAG,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC;QACzC,IAAI,MAAM,CAAC,UAAU,YAAY,WAAW,EAAE,CAAC;YAC3C,OAAO,MAAM,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC;QAC7C,CAAC;QACD,OAAO,MAAM,CAAC,YAAY,EAAE,CAAC;IACjC,CAAC;IAEO,MAAM,CAAC,WAAW,CAAC,UAAyB,EAAE,SAAiB,gCAAgC;QACnG,OAAO;YACH,SAAS,EAAE,KAAK;YAChB,IAAI,EAAE,IAAI;YACV,UAAU;YACV,WAAW,EAAE,IAAI;YACjB,MAAM;SACT,CAAC;IACN,CAAC;CACJ"}