rawsql-ts 0.6.0-beta → 0.7.0-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.
- package/README.md +141 -121
- package/dist/esm/index.js +1 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/models/Clause.js +111 -43
- package/dist/esm/models/Clause.js.map +1 -1
- package/dist/esm/models/CreateTableQuery.js +12 -22
- package/dist/esm/models/CreateTableQuery.js.map +1 -1
- package/dist/esm/models/KeywordTrie.js +2 -0
- package/dist/esm/models/KeywordTrie.js.map +1 -1
- package/dist/esm/models/SimpleSelectQuery.js +17 -15
- package/dist/esm/models/SimpleSelectQuery.js.map +1 -1
- package/dist/esm/models/SqlPrintToken.js +94 -0
- package/dist/esm/models/SqlPrintToken.js.map +1 -0
- package/dist/esm/models/ValueComponent.js +86 -17
- package/dist/esm/models/ValueComponent.js.map +1 -1
- package/dist/esm/parsers/FetchClauseParser.js +84 -0
- package/dist/esm/parsers/FetchClauseParser.js.map +1 -0
- package/dist/esm/parsers/FullNameParser.js +6 -1
- package/dist/esm/parsers/FullNameParser.js.map +1 -1
- package/dist/esm/parsers/IdentifierDecorator.js +13 -0
- package/dist/esm/parsers/IdentifierDecorator.js.map +1 -0
- package/dist/esm/parsers/InsertQueryParser.js +1 -1
- package/dist/esm/parsers/JoinClauseParser.js +13 -35
- package/dist/esm/parsers/JoinClauseParser.js.map +1 -1
- package/dist/esm/parsers/JoinOnClauseParser.js +17 -0
- package/dist/esm/parsers/JoinOnClauseParser.js.map +1 -0
- package/dist/esm/parsers/JoinUsingClauseParser.js +19 -0
- package/dist/esm/parsers/JoinUsingClauseParser.js.map +1 -0
- package/dist/esm/parsers/LimitClauseParser.js +1 -13
- package/dist/esm/parsers/LimitClauseParser.js.map +1 -1
- package/dist/esm/parsers/OffsetClauseParser.js +38 -0
- package/dist/esm/parsers/OffsetClauseParser.js.map +1 -0
- package/dist/esm/parsers/ParameterDecorator.js +36 -0
- package/dist/esm/parsers/ParameterDecorator.js.map +1 -0
- package/dist/esm/parsers/SelectClauseParser.js +25 -2
- package/dist/esm/parsers/SelectClauseParser.js.map +1 -1
- package/dist/esm/parsers/SelectQueryParser.js +40 -13
- package/dist/esm/parsers/SelectQueryParser.js.map +1 -1
- package/dist/esm/parsers/SourceParser.js +17 -13
- package/dist/esm/parsers/SourceParser.js.map +1 -1
- package/dist/esm/parsers/SqlPrintTokenParser.js +1058 -0
- package/dist/esm/parsers/SqlPrintTokenParser.js.map +1 -0
- package/dist/esm/parsers/WindowClauseParser.js +27 -15
- package/dist/esm/parsers/WindowClauseParser.js.map +1 -1
- package/dist/esm/tokenReaders/BaseTokenReader.js +3 -3
- package/dist/esm/tokenReaders/BaseTokenReader.js.map +1 -1
- package/dist/esm/tokenReaders/CommandTokenReader.js +8 -2
- package/dist/esm/tokenReaders/CommandTokenReader.js.map +1 -1
- package/dist/esm/transformers/CTECollector.js +9 -10
- package/dist/esm/transformers/CTECollector.js.map +1 -1
- package/dist/esm/transformers/CTEDisabler.js +10 -9
- package/dist/esm/transformers/CTEDisabler.js.map +1 -1
- package/dist/esm/transformers/CTEInjector.js +2 -2
- package/dist/esm/transformers/Formatter.js +19 -646
- package/dist/esm/transformers/Formatter.js.map +1 -1
- package/dist/esm/transformers/LinePrinter.js +81 -0
- package/dist/esm/transformers/LinePrinter.js.map +1 -0
- package/dist/esm/transformers/QueryBuilder.js +8 -18
- package/dist/esm/transformers/QueryBuilder.js.map +1 -1
- package/dist/esm/transformers/SelectableColumnCollector.js +26 -9
- package/dist/esm/transformers/SelectableColumnCollector.js.map +1 -1
- package/dist/esm/transformers/SqlFormatter.js +31 -0
- package/dist/esm/transformers/SqlFormatter.js.map +1 -0
- package/dist/esm/transformers/SqlOutputToken.js +9 -0
- package/dist/esm/transformers/SqlOutputToken.js.map +1 -0
- package/dist/esm/transformers/SqlPrinter.js +144 -0
- package/dist/esm/transformers/SqlPrinter.js.map +1 -0
- package/dist/esm/transformers/TableSourceCollector.js +32 -16
- package/dist/esm/transformers/TableSourceCollector.js.map +1 -1
- package/dist/esm/types/index.d.ts +1 -0
- package/dist/esm/types/models/Clause.d.ts +64 -13
- package/dist/esm/types/models/SimpleSelectQuery.d.ts +20 -5
- package/dist/esm/types/models/SqlPrintToken.d.ts +102 -0
- package/dist/esm/types/models/ValueComponent.d.ts +43 -9
- package/dist/esm/types/parsers/FetchClauseParser.d.ts +24 -0
- package/dist/esm/types/parsers/FullNameParser.d.ts +1 -0
- package/dist/esm/types/parsers/IdentifierDecorator.d.ts +9 -0
- package/dist/esm/types/parsers/JoinClauseParser.d.ts +0 -2
- package/dist/esm/types/parsers/JoinOnClauseParser.d.ts +8 -0
- package/dist/esm/types/parsers/JoinUsingClauseParser.d.ts +8 -0
- package/dist/esm/types/parsers/OffsetClauseParser.d.ts +9 -0
- package/dist/esm/types/parsers/ParameterDecorator.d.ts +20 -0
- package/dist/esm/types/parsers/SelectClauseParser.d.ts +19 -2
- package/dist/esm/types/parsers/SqlPrintTokenParser.d.ts +144 -0
- package/dist/esm/types/parsers/WindowClauseParser.d.ts +3 -3
- package/dist/esm/types/transformers/Formatter.d.ts +8 -105
- package/dist/esm/types/transformers/LinePrinter.d.ts +41 -0
- package/dist/esm/types/transformers/SelectableColumnCollector.d.ts +2 -0
- package/dist/esm/types/transformers/SqlFormatter.d.ts +40 -0
- package/dist/esm/types/transformers/SqlOutputToken.d.ts +6 -0
- package/dist/esm/types/transformers/SqlPrinter.d.ts +54 -0
- package/dist/esm/types/transformers/TableSourceCollector.d.ts +2 -0
- package/dist/esm/utils/stringUtils.js +17 -0
- package/dist/esm/utils/stringUtils.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/models/Clause.d.ts +64 -13
- package/dist/models/Clause.js +115 -44
- package/dist/models/Clause.js.map +1 -1
- package/dist/models/CreateTableQuery.js +12 -22
- package/dist/models/CreateTableQuery.js.map +1 -1
- package/dist/models/KeywordTrie.js +2 -0
- package/dist/models/KeywordTrie.js.map +1 -1
- package/dist/models/SimpleSelectQuery.d.ts +20 -5
- package/dist/models/SimpleSelectQuery.js +17 -15
- package/dist/models/SimpleSelectQuery.js.map +1 -1
- package/dist/models/SqlPrintToken.d.ts +102 -0
- package/dist/models/SqlPrintToken.js +98 -0
- package/dist/models/SqlPrintToken.js.map +1 -0
- package/dist/models/ValueComponent.d.ts +43 -9
- package/dist/models/ValueComponent.js +88 -18
- package/dist/models/ValueComponent.js.map +1 -1
- package/dist/parsers/FetchClauseParser.d.ts +24 -0
- package/dist/parsers/FetchClauseParser.js +89 -0
- package/dist/parsers/FetchClauseParser.js.map +1 -0
- package/dist/parsers/FullNameParser.d.ts +1 -0
- package/dist/parsers/FullNameParser.js +6 -1
- package/dist/parsers/FullNameParser.js.map +1 -1
- package/dist/parsers/IdentifierDecorator.d.ts +9 -0
- package/dist/parsers/IdentifierDecorator.js +17 -0
- package/dist/parsers/IdentifierDecorator.js.map +1 -0
- package/dist/parsers/InsertQueryParser.js +1 -1
- package/dist/parsers/JoinClauseParser.d.ts +0 -2
- package/dist/parsers/JoinClauseParser.js +12 -34
- package/dist/parsers/JoinClauseParser.js.map +1 -1
- package/dist/parsers/JoinOnClauseParser.d.ts +8 -0
- package/dist/parsers/JoinOnClauseParser.js +21 -0
- package/dist/parsers/JoinOnClauseParser.js.map +1 -0
- package/dist/parsers/JoinUsingClauseParser.d.ts +8 -0
- package/dist/parsers/JoinUsingClauseParser.js +23 -0
- package/dist/parsers/JoinUsingClauseParser.js.map +1 -0
- package/dist/parsers/LimitClauseParser.js +1 -13
- package/dist/parsers/LimitClauseParser.js.map +1 -1
- package/dist/parsers/OffsetClauseParser.d.ts +9 -0
- package/dist/parsers/OffsetClauseParser.js +42 -0
- package/dist/parsers/OffsetClauseParser.js.map +1 -0
- package/dist/parsers/ParameterDecorator.d.ts +20 -0
- package/dist/parsers/ParameterDecorator.js +40 -0
- package/dist/parsers/ParameterDecorator.js.map +1 -0
- package/dist/parsers/SelectClauseParser.d.ts +19 -2
- package/dist/parsers/SelectClauseParser.js +28 -4
- package/dist/parsers/SelectClauseParser.js.map +1 -1
- package/dist/parsers/SelectQueryParser.js +40 -13
- package/dist/parsers/SelectQueryParser.js.map +1 -1
- package/dist/parsers/SourceParser.js +17 -13
- package/dist/parsers/SourceParser.js.map +1 -1
- package/dist/parsers/SqlPrintTokenParser.d.ts +144 -0
- package/dist/parsers/SqlPrintTokenParser.js +1062 -0
- package/dist/parsers/SqlPrintTokenParser.js.map +1 -0
- package/dist/parsers/WindowClauseParser.d.ts +3 -3
- package/dist/parsers/WindowClauseParser.js +26 -14
- package/dist/parsers/WindowClauseParser.js.map +1 -1
- package/dist/tokenReaders/BaseTokenReader.js +3 -3
- package/dist/tokenReaders/BaseTokenReader.js.map +1 -1
- package/dist/tokenReaders/CommandTokenReader.js +8 -2
- package/dist/tokenReaders/CommandTokenReader.js.map +1 -1
- package/dist/transformers/CTECollector.js +9 -10
- package/dist/transformers/CTECollector.js.map +1 -1
- package/dist/transformers/CTEDisabler.js +9 -8
- package/dist/transformers/CTEDisabler.js.map +1 -1
- package/dist/transformers/CTEInjector.js +2 -2
- package/dist/transformers/Formatter.d.ts +8 -105
- package/dist/transformers/Formatter.js +20 -647
- package/dist/transformers/Formatter.js.map +1 -1
- package/dist/transformers/LinePrinter.d.ts +41 -0
- package/dist/transformers/LinePrinter.js +86 -0
- package/dist/transformers/LinePrinter.js.map +1 -0
- package/dist/transformers/QueryBuilder.js +8 -18
- package/dist/transformers/QueryBuilder.js.map +1 -1
- package/dist/transformers/SelectableColumnCollector.d.ts +2 -0
- package/dist/transformers/SelectableColumnCollector.js +25 -8
- package/dist/transformers/SelectableColumnCollector.js.map +1 -1
- package/dist/transformers/SqlFormatter.d.ts +40 -0
- package/dist/transformers/SqlFormatter.js +35 -0
- package/dist/transformers/SqlFormatter.js.map +1 -0
- package/dist/transformers/SqlOutputToken.d.ts +6 -0
- package/dist/transformers/SqlOutputToken.js +13 -0
- package/dist/transformers/SqlOutputToken.js.map +1 -0
- package/dist/transformers/SqlPrinter.d.ts +54 -0
- package/dist/transformers/SqlPrinter.js +148 -0
- package/dist/transformers/SqlPrinter.js.map +1 -0
- package/dist/transformers/TableSourceCollector.d.ts +2 -0
- package/dist/transformers/TableSourceCollector.js +30 -14
- package/dist/transformers/TableSourceCollector.js.map +1 -1
- package/dist/utils/stringUtils.js +17 -0
- package/dist/utils/stringUtils.js.map +1 -1
- package/package.json +2 -1
@@ -23,6 +23,8 @@ const ForClauseParser_1 = require("./ForClauseParser");
|
|
23
23
|
const SqlTokenizer_1 = require("./SqlTokenizer");
|
24
24
|
const WithClauseParser_1 = require("./WithClauseParser");
|
25
25
|
const ValuesQueryParser_1 = require("./ValuesQueryParser");
|
26
|
+
const FetchClauseParser_1 = require("./FetchClauseParser");
|
27
|
+
const OffsetClauseParser_1 = require("./OffsetClauseParser");
|
26
28
|
class SelectQueryParser {
|
27
29
|
// Parse SQL string to AST (was: parse)
|
28
30
|
static parse(query) {
|
@@ -92,58 +94,70 @@ class SelectQueryParser {
|
|
92
94
|
let idx = index;
|
93
95
|
let withClauseResult = null;
|
94
96
|
// Parse optional WITH clause
|
95
|
-
if (idx < lexemes.length && lexemes[idx].value
|
97
|
+
if (idx < lexemes.length && lexemes[idx].value === 'with') {
|
96
98
|
withClauseResult = WithClauseParser_1.WithClauseParser.parseFromLexeme(lexemes, idx);
|
97
99
|
idx = withClauseResult.newIndex;
|
98
100
|
}
|
99
101
|
// Parse SELECT clause (required)
|
100
|
-
if (idx >= lexemes.length || lexemes[idx].value
|
102
|
+
if (idx >= lexemes.length || lexemes[idx].value !== 'select') {
|
101
103
|
throw new Error(`Syntax error at position ${idx}: Expected 'SELECT' keyword but found "${idx < lexemes.length ? lexemes[idx].value : 'end of input'}". SELECT queries must start with the SELECT keyword.`);
|
102
104
|
}
|
103
105
|
const selectClauseResult = SelectClauseParser_1.SelectClauseParser.parseFromLexeme(lexemes, idx);
|
104
106
|
idx = selectClauseResult.newIndex;
|
105
107
|
// Parse FROM clause (optional)
|
106
108
|
let fromClauseResult = null;
|
107
|
-
if (idx < lexemes.length && lexemes[idx].value
|
109
|
+
if (idx < lexemes.length && lexemes[idx].value === 'from') {
|
108
110
|
fromClauseResult = FromClauseParser_1.FromClauseParser.parseFromLexeme(lexemes, idx);
|
109
111
|
idx = fromClauseResult.newIndex;
|
110
112
|
}
|
111
113
|
// Parse WHERE clause (optional)
|
112
114
|
let whereClauseResult = null;
|
113
|
-
if (idx < lexemes.length && lexemes[idx].value
|
115
|
+
if (idx < lexemes.length && lexemes[idx].value === 'where') {
|
114
116
|
whereClauseResult = WhereClauseParser_1.WhereClauseParser.parseFromLexeme(lexemes, idx);
|
115
117
|
idx = whereClauseResult.newIndex;
|
116
118
|
}
|
117
119
|
// Parse GROUP BY clause (optional)
|
118
120
|
let groupByClauseResult = null;
|
119
|
-
if (idx < lexemes.length && lexemes[idx].value
|
121
|
+
if (idx < lexemes.length && lexemes[idx].value === 'group by') {
|
120
122
|
groupByClauseResult = GroupByParser_1.GroupByClauseParser.parseFromLexeme(lexemes, idx);
|
121
123
|
idx = groupByClauseResult.newIndex;
|
122
124
|
}
|
123
125
|
// Parse HAVING clause (optional)
|
124
126
|
let havingClauseResult = null;
|
125
|
-
if (idx < lexemes.length && lexemes[idx].value
|
127
|
+
if (idx < lexemes.length && lexemes[idx].value === 'having') {
|
126
128
|
havingClauseResult = HavingParser_1.HavingClauseParser.parseFromLexeme(lexemes, idx);
|
127
129
|
idx = havingClauseResult.newIndex;
|
128
130
|
}
|
129
131
|
// Parse WINDOW clause (optional)
|
130
|
-
let
|
131
|
-
if (idx < lexemes.length && lexemes[idx].value
|
132
|
-
|
133
|
-
idx =
|
132
|
+
let windowClauseResult = null;
|
133
|
+
if (idx < lexemes.length && lexemes[idx].value === 'window') {
|
134
|
+
windowClauseResult = WindowClauseParser_1.WindowClauseParser.parseFromLexeme(lexemes, idx);
|
135
|
+
idx = windowClauseResult.newIndex;
|
134
136
|
}
|
135
137
|
// Parse ORDER BY clause (optional)
|
136
138
|
let orderByClauseResult = null;
|
137
|
-
if (idx < lexemes.length && lexemes[idx].value
|
139
|
+
if (idx < lexemes.length && lexemes[idx].value === 'order by') {
|
138
140
|
orderByClauseResult = OrderByClauseParser_1.OrderByClauseParser.parseFromLexeme(lexemes, idx);
|
139
141
|
idx = orderByClauseResult.newIndex;
|
140
142
|
}
|
141
143
|
// Parse LIMIT clause (optional)
|
142
144
|
let limitClauseResult = null;
|
143
|
-
if (idx < lexemes.length && lexemes[idx].value
|
145
|
+
if (idx < lexemes.length && lexemes[idx].value === 'limit') {
|
144
146
|
limitClauseResult = LimitClauseParser_1.LimitClauseParser.parseFromLexeme(lexemes, idx);
|
145
147
|
idx = limitClauseResult.newIndex;
|
146
148
|
}
|
149
|
+
// Parse OFFSET clause (optional)
|
150
|
+
let offsetClauseResult = null;
|
151
|
+
if (idx < lexemes.length && lexemes[idx].value === 'offset') {
|
152
|
+
offsetClauseResult = OffsetClauseParser_1.OffsetClauseParser.parseFromLexeme(lexemes, idx);
|
153
|
+
idx = offsetClauseResult.newIndex;
|
154
|
+
}
|
155
|
+
// Parse FETCH clause (optional)
|
156
|
+
let fetchClauseResult = null;
|
157
|
+
if (idx < lexemes.length && lexemes[idx].value === 'fetch') {
|
158
|
+
fetchClauseResult = FetchClauseParser_1.FetchClauseParser.parseFromLexeme(lexemes, idx);
|
159
|
+
idx = fetchClauseResult.newIndex;
|
160
|
+
}
|
147
161
|
// Parse FOR clause (optional)
|
148
162
|
let forClauseResult = null;
|
149
163
|
if (idx < lexemes.length && lexemes[idx].value.toLowerCase() === 'for') {
|
@@ -151,7 +165,20 @@ class SelectQueryParser {
|
|
151
165
|
idx = forClauseResult.newIndex;
|
152
166
|
}
|
153
167
|
// Create and return the SelectQuery object
|
154
|
-
const selectQuery = new SelectQuery_1.SimpleSelectQuery(
|
168
|
+
const selectQuery = new SelectQuery_1.SimpleSelectQuery({
|
169
|
+
withClause: withClauseResult ? withClauseResult.value : null,
|
170
|
+
selectClause: selectClauseResult.value,
|
171
|
+
fromClause: fromClauseResult ? fromClauseResult.value : null,
|
172
|
+
whereClause: whereClauseResult ? whereClauseResult.value : null,
|
173
|
+
groupByClause: groupByClauseResult ? groupByClauseResult.value : null,
|
174
|
+
havingClause: havingClauseResult ? havingClauseResult.value : null,
|
175
|
+
orderByClause: orderByClauseResult ? orderByClauseResult.value : null,
|
176
|
+
windowClause: windowClauseResult ? windowClauseResult.value : null,
|
177
|
+
limitClause: limitClauseResult ? limitClauseResult.value : null,
|
178
|
+
offsetClause: offsetClauseResult ? offsetClauseResult.value : null,
|
179
|
+
fetchClause: fetchClauseResult ? fetchClauseResult.value : null,
|
180
|
+
forClause: forClauseResult ? forClauseResult.value : null
|
181
|
+
});
|
155
182
|
return { value: selectQuery, newIndex: idx };
|
156
183
|
}
|
157
184
|
static parseValuesQuery(lexemes, index) {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"SelectQueryParser.js","sourceRoot":"","sources":["../../src/parsers/SelectQueryParser.ts"],"names":[],"mappings":";;;;;;;;;;;;AACA,uDAA0F;AAC1F,6DAA0D;AAC1D,yDAAsD;AACtD,2DAAwD;AACxD,mDAAsD;AACtD,iDAAoD;AACpD,+DAA4D;AAC5D,6DAA0D;AAC1D,2DAAwD;AACxD,uDAAoD;AACpD,iDAA8C;AAC9C,yDAAsD;AACtD,2DAAwD;
|
1
|
+
{"version":3,"file":"SelectQueryParser.js","sourceRoot":"","sources":["../../src/parsers/SelectQueryParser.ts"],"names":[],"mappings":"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"}
|
@@ -31,34 +31,38 @@ class SourceParser {
|
|
31
31
|
* @returns An object containing the parsed TableSource and the new index.
|
32
32
|
*/
|
33
33
|
static parseTableSourceFromLexemes(lexemes, index) {
|
34
|
-
|
34
|
+
const fullNameResult = FullNameParser_1.FullNameParser.parseFromLexeme(lexemes, index);
|
35
|
+
return this.parseTableSource(fullNameResult);
|
35
36
|
}
|
36
37
|
// Parse from lexeme array (was: parse)
|
37
38
|
static parseFromLexeme(lexemes, index) {
|
38
|
-
|
39
|
+
let idx = index;
|
39
40
|
// Handle subquery
|
40
41
|
if (idx < lexemes.length && (lexemes[idx].type & Lexeme_1.TokenType.OpenParen)) {
|
41
42
|
return this.parseParenSource(lexemes, idx);
|
42
43
|
}
|
43
|
-
//
|
44
|
-
|
45
|
-
|
44
|
+
// Retrieve the full name only once and reuse the result
|
45
|
+
const fullNameResult = FullNameParser_1.FullNameParser.parseFromLexeme(lexemes, idx);
|
46
|
+
// Handle function-based source (determine by lastTokenType)
|
47
|
+
if (fullNameResult.lastTokenType & Lexeme_1.TokenType.Function) {
|
48
|
+
// Also use fullNameResult as argument for parseFunctionSource
|
49
|
+
return SourceParser.parseFunctionSource(lexemes, fullNameResult);
|
46
50
|
}
|
47
51
|
// Handle table source (regular table, potentially schema-qualified)
|
48
|
-
return
|
52
|
+
return SourceParser.parseTableSource(fullNameResult);
|
49
53
|
}
|
50
|
-
static parseTableSource(
|
51
|
-
const { namespaces, name, newIndex } =
|
54
|
+
static parseTableSource(fullNameResult) {
|
55
|
+
const { namespaces, name, newIndex } = fullNameResult;
|
52
56
|
const value = new Clause_1.TableSource(namespaces, name.name);
|
53
57
|
return { value, newIndex };
|
54
58
|
}
|
55
|
-
static parseFunctionSource(lexemes,
|
56
|
-
let idx =
|
57
|
-
const
|
58
|
-
idx++;
|
59
|
+
static parseFunctionSource(lexemes, fullNameResult) {
|
60
|
+
let idx = fullNameResult.newIndex;
|
61
|
+
const { namespaces, name } = fullNameResult;
|
59
62
|
const argument = ValueParser_1.ValueParser.parseArgument(Lexeme_1.TokenType.OpenParen, Lexeme_1.TokenType.CloseParen, lexemes, idx);
|
60
63
|
idx = argument.newIndex;
|
61
|
-
const
|
64
|
+
const functionName = name.name;
|
65
|
+
const result = new Clause_1.FunctionSource({ namespaces: namespaces, name: functionName }, argument.value);
|
62
66
|
return { value: result, newIndex: idx };
|
63
67
|
}
|
64
68
|
static parseParenSource(lexemes, index) {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"SourceParser.js","sourceRoot":"","sources":["../../src/parsers/SourceParser.ts"],"names":[],"mappings":";;;AAAA,qDAAkD;AAClD,6CAAgG;AAChG,6CAAqD;AACrD,2DAAwD;AACxD,iDAA8C;AAC9C,+CAA4C;AAE5C,MAAa,YAAY;IACrB,uCAAuC;IAChC,MAAM,CAAC,KAAK,CAAC,KAAa;QAC7B,MAAM,SAAS,GAAG,IAAI,2BAAY,CAAC,KAAK,CAAC,CAAC,CAAC,uBAAuB;QAClE,MAAM,OAAO,GAAG,SAAS,CAAC,UAAU,EAAE,CAAC,CAAC,aAAa;QAErD,QAAQ;QACR,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QAEhD,sCAAsC;QACtC,IAAI,MAAM,CAAC,QAAQ,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;YACnC,MAAM,IAAI,KAAK,CAAC,mCAAmC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,iBAAiB,MAAM,CAAC,QAAQ,qEAAqE,CAAC,CAAC;QAC5L,CAAC;QAED,OAAO,MAAM,CAAC,KAAK,CAAC;IACxB,CAAC;IAED;;;;;;;;;OASG;IACI,MAAM,CAAC,2BAA2B,CAAC,OAAiB,EAAE,KAAa;QACtE,
|
1
|
+
{"version":3,"file":"SourceParser.js","sourceRoot":"","sources":["../../src/parsers/SourceParser.ts"],"names":[],"mappings":"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"}
|
@@ -0,0 +1,144 @@
|
|
1
|
+
import { FromClause, JoinClause, JoinOnClause, JoinUsingClause, FunctionSource, SourceAliasExpression, WhereClause, GroupByClause, HavingClause, SubQuerySource, WindowFrameClause, LimitClause, ForClause, OffsetClause, WindowsClause as WindowClause, CommonTable, WithClause, FetchClause, FetchExpression, UpdateClause, SetClause, ReturningClause, SetClauseItem } from "../models/Clause";
|
2
|
+
import { SimpleSelectQuery, ValuesQuery } from "../models/SelectQuery";
|
3
|
+
import { SqlComponent, SqlComponentVisitor } from "../models/SqlComponent";
|
4
|
+
import { SqlPrintToken } from "../models/SqlPrintToken";
|
5
|
+
import { InlineQuery } from "../models/ValueComponent";
|
6
|
+
import { IdentifierDecorator } from "./IdentifierDecorator";
|
7
|
+
import { ParameterDecorator } from "./ParameterDecorator";
|
8
|
+
import { CreateTableQuery } from "../models/CreateTableQuery";
|
9
|
+
export declare enum ParameterStyle {
|
10
|
+
Anonymous = "anonymous",
|
11
|
+
Indexed = "indexed",
|
12
|
+
Named = "named"
|
13
|
+
}
|
14
|
+
export interface FormatterConfig {
|
15
|
+
identifierEscape?: {
|
16
|
+
start: string;
|
17
|
+
end: string;
|
18
|
+
};
|
19
|
+
parameterSymbol?: string | {
|
20
|
+
start: string;
|
21
|
+
end: string;
|
22
|
+
};
|
23
|
+
/**
|
24
|
+
* Parameter style: anonymous (?), indexed ($1), or named (:name)
|
25
|
+
*/
|
26
|
+
parameterStyle?: ParameterStyle;
|
27
|
+
}
|
28
|
+
export declare const PRESETS: Record<string, FormatterConfig>;
|
29
|
+
export declare class SqlPrintTokenParser implements SqlComponentVisitor<SqlPrintToken> {
|
30
|
+
private static readonly SPACE_TOKEN;
|
31
|
+
private static readonly COMMA_TOKEN;
|
32
|
+
private static readonly ARGUMENT_SPLIT_COMMA_TOKEN;
|
33
|
+
private static readonly PAREN_OPEN_TOKEN;
|
34
|
+
private static readonly PAREN_CLOSE_TOKEN;
|
35
|
+
private static readonly DOT_TOKEN;
|
36
|
+
private handlers;
|
37
|
+
parameterDecorator: ParameterDecorator;
|
38
|
+
identifierDecorator: IdentifierDecorator;
|
39
|
+
index: number;
|
40
|
+
constructor(options?: {
|
41
|
+
preset?: FormatterConfig;
|
42
|
+
identifierEscape?: {
|
43
|
+
start: string;
|
44
|
+
end: string;
|
45
|
+
};
|
46
|
+
parameterSymbol?: string | {
|
47
|
+
start: string;
|
48
|
+
end: string;
|
49
|
+
};
|
50
|
+
parameterStyle?: 'anonymous' | 'indexed' | 'named';
|
51
|
+
});
|
52
|
+
/**
|
53
|
+
* Pretty-prints a BinarySelectQuery (e.g., UNION, INTERSECT, EXCEPT).
|
54
|
+
* This will recursively print left and right queries, separated by the operator.
|
55
|
+
* @param arg BinarySelectQuery
|
56
|
+
*/
|
57
|
+
private visitBinarySelectQuery;
|
58
|
+
/**
|
59
|
+
* Returns an array of tokens representing a comma followed by a space.
|
60
|
+
* This is a common pattern in SQL pretty-printing.
|
61
|
+
*/
|
62
|
+
private static commaSpaceTokens;
|
63
|
+
private static argumentCommaSpaceTokens;
|
64
|
+
private visitQualifiedName;
|
65
|
+
private visitPartitionByClause;
|
66
|
+
private visitOrderByClause;
|
67
|
+
/**
|
68
|
+
* Print an OrderByItem (expression [asc|desc] [nulls first|last])
|
69
|
+
*/
|
70
|
+
private visitOrderByItem;
|
71
|
+
parse(arg: SqlComponent): {
|
72
|
+
token: SqlPrintToken;
|
73
|
+
params: any[] | Record<string, any>[] | Record<string, any>;
|
74
|
+
};
|
75
|
+
visit(arg: SqlComponent): SqlPrintToken;
|
76
|
+
private visitValueList;
|
77
|
+
private visitColumnReference;
|
78
|
+
private visitFunctionCall;
|
79
|
+
private visitUnaryExpression;
|
80
|
+
private visitBinaryExpression;
|
81
|
+
private visitLiteralValue;
|
82
|
+
private visitParameterExpression;
|
83
|
+
private visitSwitchCaseArgument;
|
84
|
+
private createElseToken;
|
85
|
+
private visitCaseKeyValuePair;
|
86
|
+
private visitRawString;
|
87
|
+
private visitIdentifierString;
|
88
|
+
private visitParenExpression;
|
89
|
+
private visitCastExpression;
|
90
|
+
private visitCaseExpression;
|
91
|
+
private visitArrayExpression;
|
92
|
+
private visitBetweenExpression;
|
93
|
+
private visitStringSpecifierExpression;
|
94
|
+
private visitTypeValue;
|
95
|
+
private visitTupleExpression;
|
96
|
+
private visitWindowFrameExpression;
|
97
|
+
private visitWindowFrameSpec;
|
98
|
+
/**
|
99
|
+
* Prints a window frame boundary value, such as "5 preceding" or "3 following".
|
100
|
+
* @param arg WindowFrameBoundaryValue
|
101
|
+
*/
|
102
|
+
private visitWindowFrameBoundaryValue;
|
103
|
+
/**
|
104
|
+
* Prints a static window frame bound, such as "unbounded preceding", "current row", or "unbounded following".
|
105
|
+
* @param arg WindowFrameBoundStatic
|
106
|
+
*/
|
107
|
+
private visitWindowFrameBoundStatic;
|
108
|
+
private visitSelectItem;
|
109
|
+
private visitSelectClause;
|
110
|
+
private visitDistinct;
|
111
|
+
private visitDistinctOn;
|
112
|
+
private visitTableSource;
|
113
|
+
private visitSourceExpression;
|
114
|
+
visitFromClause(arg: FromClause): SqlPrintToken;
|
115
|
+
visitJoinClause(arg: JoinClause): SqlPrintToken;
|
116
|
+
visitJoinOnClause(arg: JoinOnClause): SqlPrintToken;
|
117
|
+
visitJoinUsingClause(arg: JoinUsingClause): SqlPrintToken;
|
118
|
+
visitFunctionSource(arg: FunctionSource): SqlPrintToken;
|
119
|
+
visitSourceAliasExpression(arg: SourceAliasExpression): SqlPrintToken;
|
120
|
+
visitWhereClause(arg: WhereClause): SqlPrintToken;
|
121
|
+
visitGroupByClause(arg: GroupByClause): SqlPrintToken;
|
122
|
+
visitHavingClause(arg: HavingClause): SqlPrintToken;
|
123
|
+
visitWindowClause(arg: WindowClause): SqlPrintToken;
|
124
|
+
visitWindowFrameClause(arg: WindowFrameClause): SqlPrintToken;
|
125
|
+
visitLimitClause(arg: LimitClause): SqlPrintToken;
|
126
|
+
visitOffsetClause(arg: OffsetClause): SqlPrintToken;
|
127
|
+
visitFetchClause(arg: FetchClause): SqlPrintToken;
|
128
|
+
visitFetchExpression(arg: FetchExpression): SqlPrintToken;
|
129
|
+
visitForClause(arg: ForClause): SqlPrintToken;
|
130
|
+
visitWithClause(arg: WithClause): SqlPrintToken;
|
131
|
+
visitCommonTable(arg: CommonTable): SqlPrintToken;
|
132
|
+
visitSimpleQuery(arg: SimpleSelectQuery): SqlPrintToken;
|
133
|
+
visitSubQuerySource(arg: SubQuerySource): SqlPrintToken;
|
134
|
+
visitValuesQuery(arg: ValuesQuery): SqlPrintToken;
|
135
|
+
visitInlineQuery(arg: InlineQuery): SqlPrintToken;
|
136
|
+
private visitInsertQuery;
|
137
|
+
private visitInsertClause;
|
138
|
+
private visitUpdateQuery;
|
139
|
+
visitUpdateClause(arg: UpdateClause): SqlPrintToken;
|
140
|
+
visitSetClause(arg: SetClause): SqlPrintToken;
|
141
|
+
visitSetClauseItem(arg: SetClauseItem): SqlPrintToken;
|
142
|
+
visitReturningClause(arg: ReturningClause): SqlPrintToken;
|
143
|
+
visitCreateTableQuery(arg: CreateTableQuery): SqlPrintToken;
|
144
|
+
}
|