rawsql-ts 0.11.10-beta → 0.11.12-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/dist/esm/index.min.js +12 -12
- package/dist/esm/index.min.js.map +4 -4
- package/dist/esm/src/models/SqlPrintToken.d.ts +6 -4
- package/dist/esm/src/models/SqlPrintToken.js +2 -0
- package/dist/esm/src/models/SqlPrintToken.js.map +1 -1
- package/dist/esm/src/parsers/FunctionExpressionParser.js +5 -4
- package/dist/esm/src/parsers/FunctionExpressionParser.js.map +1 -1
- package/dist/esm/src/parsers/SelectQueryParser.js +3 -2
- package/dist/esm/src/parsers/SelectQueryParser.js.map +1 -1
- package/dist/esm/src/parsers/SqlPrintTokenParser.d.ts +40 -0
- package/dist/esm/src/parsers/SqlPrintTokenParser.js +103 -8
- package/dist/esm/src/parsers/SqlPrintTokenParser.js.map +1 -1
- package/dist/esm/src/parsers/ValueParser.js +4 -4
- package/dist/esm/src/parsers/ValueParser.js.map +1 -1
- package/dist/esm/src/reporting/models/DataFlowGraph.d.ts +3 -1
- package/dist/esm/src/reporting/models/DataFlowGraph.js +5 -27
- package/dist/esm/src/reporting/models/DataFlowGraph.js.map +1 -1
- package/dist/esm/src/reporting/models/DataFlowNode.d.ts +8 -2
- package/dist/esm/src/reporting/models/DataFlowNode.js +34 -10
- package/dist/esm/src/reporting/models/DataFlowNode.js.map +1 -1
- package/dist/esm/src/reporting/services/ProcessHandler.d.ts +6 -42
- package/dist/esm/src/reporting/services/ProcessHandler.js +9 -164
- package/dist/esm/src/reporting/services/ProcessHandler.js.map +1 -1
- package/dist/esm/src/transformers/QueryFlowDiagramGenerator.js +11 -1
- package/dist/esm/src/transformers/QueryFlowDiagramGenerator.js.map +1 -1
- package/dist/esm/src/transformers/SqlFormatter.d.ts +8 -1
- package/dist/esm/src/transformers/SqlFormatter.js.map +1 -1
- package/dist/esm/src/transformers/SqlPrinter.d.ts +55 -7
- package/dist/esm/src/transformers/SqlPrinter.js +151 -32
- package/dist/esm/src/transformers/SqlPrinter.js.map +1 -1
- package/dist/esm/tsconfig.browser.tsbuildinfo +1 -1
- package/dist/index.min.js +10 -10
- package/dist/index.min.js.map +4 -4
- package/dist/src/models/SqlPrintToken.d.ts +6 -4
- package/dist/src/models/SqlPrintToken.js +2 -0
- package/dist/src/models/SqlPrintToken.js.map +1 -1
- package/dist/src/parsers/FunctionExpressionParser.js +5 -4
- package/dist/src/parsers/FunctionExpressionParser.js.map +1 -1
- package/dist/src/parsers/SelectQueryParser.js +3 -2
- package/dist/src/parsers/SelectQueryParser.js.map +1 -1
- package/dist/src/parsers/SqlPrintTokenParser.d.ts +40 -0
- package/dist/src/parsers/SqlPrintTokenParser.js +103 -8
- package/dist/src/parsers/SqlPrintTokenParser.js.map +1 -1
- package/dist/src/parsers/ValueParser.js +4 -4
- package/dist/src/parsers/ValueParser.js.map +1 -1
- package/dist/src/reporting/models/DataFlowGraph.d.ts +3 -1
- package/dist/src/reporting/models/DataFlowGraph.js +5 -27
- package/dist/src/reporting/models/DataFlowGraph.js.map +1 -1
- package/dist/src/reporting/models/DataFlowNode.d.ts +8 -2
- package/dist/src/reporting/models/DataFlowNode.js +34 -10
- package/dist/src/reporting/models/DataFlowNode.js.map +1 -1
- package/dist/src/reporting/services/ProcessHandler.d.ts +6 -42
- package/dist/src/reporting/services/ProcessHandler.js +9 -164
- package/dist/src/reporting/services/ProcessHandler.js.map +1 -1
- package/dist/src/transformers/QueryFlowDiagramGenerator.js +11 -1
- package/dist/src/transformers/QueryFlowDiagramGenerator.js.map +1 -1
- package/dist/src/transformers/SqlFormatter.d.ts +8 -1
- package/dist/src/transformers/SqlFormatter.js.map +1 -1
- package/dist/src/transformers/SqlPrinter.d.ts +55 -7
- package/dist/src/transformers/SqlPrinter.js +151 -32
- package/dist/src/transformers/SqlPrinter.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
|
@@ -11,14 +11,15 @@ const LinePrinter_1 = require("./LinePrinter");
|
|
|
11
11
|
* - Line break styles for commas and AND operators
|
|
12
12
|
* - Keyword case transformation
|
|
13
13
|
* - Comment handling
|
|
14
|
-
* -
|
|
14
|
+
* - WITH clause formatting styles
|
|
15
15
|
*
|
|
16
16
|
* @example
|
|
17
17
|
* const printer = new SqlPrinter({
|
|
18
18
|
* indentChar: ' ',
|
|
19
19
|
* indentSize: 1,
|
|
20
20
|
* keywordCase: 'upper',
|
|
21
|
-
* commaBreak: 'after'
|
|
21
|
+
* commaBreak: 'after',
|
|
22
|
+
* withClauseStyle: 'cte-oneline'
|
|
22
23
|
* });
|
|
23
24
|
* const formatted = printer.print(sqlToken);
|
|
24
25
|
*/
|
|
@@ -28,6 +29,8 @@ class SqlPrinter {
|
|
|
28
29
|
*/
|
|
29
30
|
constructor(options) {
|
|
30
31
|
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
|
|
32
|
+
/** Track whether we are currently inside a WITH clause for full-oneline formatting */
|
|
33
|
+
this.insideWithClause = false;
|
|
31
34
|
this.indentChar = (_a = options === null || options === void 0 ? void 0 : options.indentChar) !== null && _a !== void 0 ? _a : '';
|
|
32
35
|
this.indentSize = (_b = options === null || options === void 0 ? void 0 : options.indentSize) !== null && _b !== void 0 ? _b : 0;
|
|
33
36
|
// The default newline character is set to a blank space (' ') to enable one-liner formatting.
|
|
@@ -38,7 +41,7 @@ class SqlPrinter {
|
|
|
38
41
|
this.keywordCase = (_f = options === null || options === void 0 ? void 0 : options.keywordCase) !== null && _f !== void 0 ? _f : 'none';
|
|
39
42
|
this.exportComment = (_g = options === null || options === void 0 ? void 0 : options.exportComment) !== null && _g !== void 0 ? _g : false;
|
|
40
43
|
this.strictCommentPlacement = (_h = options === null || options === void 0 ? void 0 : options.strictCommentPlacement) !== null && _h !== void 0 ? _h : false;
|
|
41
|
-
this.
|
|
44
|
+
this.withClauseStyle = (_j = options === null || options === void 0 ? void 0 : options.withClauseStyle) !== null && _j !== void 0 ? _j : 'standard';
|
|
42
45
|
this.linePrinter = new LinePrinter_1.LinePrinter(this.indentChar, this.indentSize, this.newline);
|
|
43
46
|
// Initialize
|
|
44
47
|
this.indentIncrementContainers = new Set((_k = options === null || options === void 0 ? void 0 : options.indentIncrementContainerTypes) !== null && _k !== void 0 ? _k : [
|
|
@@ -60,10 +63,13 @@ class SqlPrinter {
|
|
|
60
63
|
SqlPrintToken_1.SqlPrintTokenContainerType.CaseKeyValuePair,
|
|
61
64
|
SqlPrintToken_1.SqlPrintTokenContainerType.CaseThenValue,
|
|
62
65
|
SqlPrintToken_1.SqlPrintTokenContainerType.ElseClause,
|
|
63
|
-
SqlPrintToken_1.SqlPrintTokenContainerType.CaseElseValue
|
|
66
|
+
SqlPrintToken_1.SqlPrintTokenContainerType.CaseElseValue,
|
|
67
|
+
SqlPrintToken_1.SqlPrintTokenContainerType.SimpleSelectQuery
|
|
68
|
+
// Note: CommentBlock is intentionally excluded from indentIncrementContainers
|
|
69
|
+
// because it serves as a grouping mechanism without affecting indentation.
|
|
64
70
|
// CaseExpression, SwitchCaseArgument, CaseKeyValuePair, and ElseClause
|
|
65
|
-
// are not included by default to maintain backward compatibility with tests
|
|
66
|
-
//SqlPrintTokenContainerType.CommonTable
|
|
71
|
+
// are not included by default to maintain backward compatibility with tests.
|
|
72
|
+
// SqlPrintTokenContainerType.CommonTable is also excluded by default.
|
|
67
73
|
]);
|
|
68
74
|
}
|
|
69
75
|
/**
|
|
@@ -78,13 +84,19 @@ class SqlPrinter {
|
|
|
78
84
|
print(token, level = 0) {
|
|
79
85
|
// initialize
|
|
80
86
|
this.linePrinter = new LinePrinter_1.LinePrinter(this.indentChar, this.indentSize, this.newline);
|
|
87
|
+
this.insideWithClause = false; // Reset WITH clause context
|
|
81
88
|
if (this.linePrinter.lines.length > 0 && level !== this.linePrinter.lines[0].level) {
|
|
82
89
|
this.linePrinter.lines[0].level = level;
|
|
83
90
|
}
|
|
84
|
-
this.appendToken(token, level);
|
|
91
|
+
this.appendToken(token, level, undefined);
|
|
85
92
|
return this.linePrinter.print();
|
|
86
93
|
}
|
|
87
94
|
appendToken(token, level, parentContainerType) {
|
|
95
|
+
// Track WITH clause context for full-oneline formatting
|
|
96
|
+
const wasInsideWithClause = this.insideWithClause;
|
|
97
|
+
if (token.containerType === SqlPrintToken_1.SqlPrintTokenContainerType.WithClause && this.withClauseStyle === 'full-oneline') {
|
|
98
|
+
this.insideWithClause = true;
|
|
99
|
+
}
|
|
88
100
|
if (this.shouldSkipToken(token)) {
|
|
89
101
|
return;
|
|
90
102
|
}
|
|
@@ -103,9 +115,18 @@ class SqlPrinter {
|
|
|
103
115
|
this.handleJoinClauseToken(token, level);
|
|
104
116
|
}
|
|
105
117
|
else if (token.type === SqlPrintToken_1.SqlPrintTokenType.comment) {
|
|
106
|
-
|
|
118
|
+
// Handle comments as regular tokens - let the standard processing handle everything
|
|
119
|
+
if (this.exportComment) {
|
|
120
|
+
this.linePrinter.appendText(token.text);
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
else if (token.type === SqlPrintToken_1.SqlPrintTokenType.space) {
|
|
124
|
+
this.handleSpaceToken(token, parentContainerType);
|
|
125
|
+
}
|
|
126
|
+
else if (token.type === SqlPrintToken_1.SqlPrintTokenType.commentNewline) {
|
|
127
|
+
this.handleCommentNewlineToken(token, level);
|
|
107
128
|
}
|
|
108
|
-
else if (token.containerType === SqlPrintToken_1.SqlPrintTokenContainerType.CommonTable && this.
|
|
129
|
+
else if (token.containerType === SqlPrintToken_1.SqlPrintTokenContainerType.CommonTable && this.withClauseStyle === 'cte-oneline') {
|
|
109
130
|
this.handleCteOnelineToken(token, level);
|
|
110
131
|
return; // Return early to avoid processing innerTokens
|
|
111
132
|
}
|
|
@@ -121,20 +142,43 @@ class SqlPrinter {
|
|
|
121
142
|
}
|
|
122
143
|
let innerLevel = level;
|
|
123
144
|
// indent level up
|
|
124
|
-
if (this.
|
|
125
|
-
|
|
126
|
-
this.
|
|
145
|
+
if (!this.isOnelineMode() && current.text !== '' && this.indentIncrementContainers.has(token.containerType)) {
|
|
146
|
+
// Skip newline for any container when inside WITH clause with full-oneline style
|
|
147
|
+
if (!(this.insideWithClause && this.withClauseStyle === 'full-oneline')) {
|
|
148
|
+
innerLevel++;
|
|
149
|
+
this.linePrinter.appendNewline(innerLevel);
|
|
150
|
+
}
|
|
127
151
|
}
|
|
128
152
|
for (let i = 0; i < token.innerTokens.length; i++) {
|
|
129
153
|
const child = token.innerTokens[i];
|
|
130
154
|
this.appendToken(child, innerLevel, token.containerType);
|
|
131
155
|
}
|
|
156
|
+
// Exit WITH clause context when we finish processing WithClause container
|
|
157
|
+
if (token.containerType === SqlPrintToken_1.SqlPrintTokenContainerType.WithClause && this.withClauseStyle === 'full-oneline') {
|
|
158
|
+
this.insideWithClause = false;
|
|
159
|
+
// Add newline after WITH clause to separate it from main SELECT
|
|
160
|
+
this.linePrinter.appendNewline(level);
|
|
161
|
+
return; // Return early to avoid additional newline below
|
|
162
|
+
}
|
|
132
163
|
// indent level down
|
|
133
164
|
if (innerLevel !== level) {
|
|
134
|
-
|
|
165
|
+
// Skip newline for any container when inside WITH clause with full-oneline style
|
|
166
|
+
if (!(this.insideWithClause && this.withClauseStyle === 'full-oneline')) {
|
|
167
|
+
this.linePrinter.appendNewline(level);
|
|
168
|
+
}
|
|
135
169
|
}
|
|
136
170
|
}
|
|
171
|
+
/**
|
|
172
|
+
* Determines if a token should be skipped during printing.
|
|
173
|
+
* Tokens are skipped if they have no content and no inner tokens,
|
|
174
|
+
* except for special token types that have semantic meaning despite empty text.
|
|
175
|
+
*/
|
|
137
176
|
shouldSkipToken(token) {
|
|
177
|
+
// Special tokens with semantic meaning should never be skipped
|
|
178
|
+
if (token.type === SqlPrintToken_1.SqlPrintTokenType.commentNewline) {
|
|
179
|
+
return false;
|
|
180
|
+
}
|
|
181
|
+
// Skip tokens that have no content and no children
|
|
138
182
|
return (!token.innerTokens || token.innerTokens.length === 0) && token.text === '';
|
|
139
183
|
}
|
|
140
184
|
applyKeywordCase(text) {
|
|
@@ -152,18 +196,28 @@ class SqlPrinter {
|
|
|
152
196
|
}
|
|
153
197
|
handleCommaToken(token, level, parentContainerType) {
|
|
154
198
|
const text = token.text;
|
|
155
|
-
//
|
|
156
|
-
if (this.
|
|
199
|
+
// Skip comma newlines when inside WITH clause with full-oneline style
|
|
200
|
+
if (this.insideWithClause && this.withClauseStyle === 'full-oneline') {
|
|
201
|
+
this.linePrinter.appendText(text);
|
|
202
|
+
}
|
|
203
|
+
// Special handling for commas in WithClause when withClauseStyle is 'cte-oneline'
|
|
204
|
+
else if (this.withClauseStyle === 'cte-oneline' && parentContainerType === SqlPrintToken_1.SqlPrintTokenContainerType.WithClause) {
|
|
157
205
|
this.linePrinter.appendText(text);
|
|
158
206
|
this.linePrinter.appendNewline(level);
|
|
159
207
|
}
|
|
160
208
|
else if (this.commaBreak === 'before') {
|
|
161
|
-
|
|
209
|
+
// Skip newline when inside WITH clause with full-oneline style
|
|
210
|
+
if (!(this.insideWithClause && this.withClauseStyle === 'full-oneline')) {
|
|
211
|
+
this.linePrinter.appendNewline(level);
|
|
212
|
+
}
|
|
162
213
|
this.linePrinter.appendText(text);
|
|
163
214
|
}
|
|
164
215
|
else if (this.commaBreak === 'after') {
|
|
165
216
|
this.linePrinter.appendText(text);
|
|
166
|
-
|
|
217
|
+
// Skip newline when inside WITH clause with full-oneline style
|
|
218
|
+
if (!(this.insideWithClause && this.withClauseStyle === 'full-oneline')) {
|
|
219
|
+
this.linePrinter.appendNewline(level);
|
|
220
|
+
}
|
|
167
221
|
}
|
|
168
222
|
else {
|
|
169
223
|
this.linePrinter.appendText(text);
|
|
@@ -172,12 +226,18 @@ class SqlPrinter {
|
|
|
172
226
|
handleAndOperatorToken(token, level) {
|
|
173
227
|
const text = this.applyKeywordCase(token.text);
|
|
174
228
|
if (this.andBreak === 'before') {
|
|
175
|
-
|
|
229
|
+
// Skip newline when inside WITH clause with full-oneline style
|
|
230
|
+
if (!(this.insideWithClause && this.withClauseStyle === 'full-oneline')) {
|
|
231
|
+
this.linePrinter.appendNewline(level);
|
|
232
|
+
}
|
|
176
233
|
this.linePrinter.appendText(text);
|
|
177
234
|
}
|
|
178
235
|
else if (this.andBreak === 'after') {
|
|
179
236
|
this.linePrinter.appendText(text);
|
|
180
|
-
|
|
237
|
+
// Skip newline when inside WITH clause with full-oneline style
|
|
238
|
+
if (!(this.insideWithClause && this.withClauseStyle === 'full-oneline')) {
|
|
239
|
+
this.linePrinter.appendNewline(level);
|
|
240
|
+
}
|
|
181
241
|
}
|
|
182
242
|
else {
|
|
183
243
|
this.linePrinter.appendText(text);
|
|
@@ -185,21 +245,75 @@ class SqlPrinter {
|
|
|
185
245
|
}
|
|
186
246
|
handleJoinClauseToken(token, level) {
|
|
187
247
|
const text = this.applyKeywordCase(token.text);
|
|
188
|
-
// before join clause, add newline
|
|
189
|
-
this.
|
|
248
|
+
// before join clause, add newline (skip when inside WITH clause with full-oneline style)
|
|
249
|
+
if (!(this.insideWithClause && this.withClauseStyle === 'full-oneline')) {
|
|
250
|
+
this.linePrinter.appendNewline(level);
|
|
251
|
+
}
|
|
190
252
|
this.linePrinter.appendText(text);
|
|
191
253
|
}
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
254
|
+
/**
|
|
255
|
+
* Handles space tokens with context-aware filtering.
|
|
256
|
+
* Skips spaces in CommentBlocks when in specific CTE modes to prevent duplication.
|
|
257
|
+
*/
|
|
258
|
+
handleSpaceToken(token, parentContainerType) {
|
|
259
|
+
if (this.shouldSkipCommentBlockSpace(parentContainerType)) {
|
|
260
|
+
return;
|
|
261
|
+
}
|
|
262
|
+
this.linePrinter.appendText(token.text);
|
|
263
|
+
}
|
|
264
|
+
/**
|
|
265
|
+
* Determines whether to skip space tokens in CommentBlocks.
|
|
266
|
+
* Prevents duplicate spacing in CTE full-oneline mode only.
|
|
267
|
+
*/
|
|
268
|
+
shouldSkipCommentBlockSpace(parentContainerType) {
|
|
269
|
+
return parentContainerType === SqlPrintToken_1.SqlPrintTokenContainerType.CommentBlock &&
|
|
270
|
+
this.insideWithClause &&
|
|
271
|
+
this.withClauseStyle === 'full-oneline';
|
|
272
|
+
}
|
|
273
|
+
/**
|
|
274
|
+
* Handles commentNewline tokens with conditional newline behavior.
|
|
275
|
+
* In multiline mode (newline !== ' '), adds a newline after comments.
|
|
276
|
+
* In oneliner mode (newline === ' '), does nothing to keep comments on same line.
|
|
277
|
+
* Skips newlines in CTE modes (full-oneline, cte-oneline) to maintain one-line format.
|
|
278
|
+
*/
|
|
279
|
+
handleCommentNewlineToken(token, level) {
|
|
280
|
+
if (this.shouldSkipCommentNewline()) {
|
|
281
|
+
return;
|
|
282
|
+
}
|
|
283
|
+
if (!this.isOnelineMode()) {
|
|
284
|
+
this.linePrinter.appendNewline(level);
|
|
198
285
|
}
|
|
199
286
|
}
|
|
287
|
+
/**
|
|
288
|
+
* Determines whether to skip commentNewline tokens.
|
|
289
|
+
* Skips in CTE modes to maintain one-line formatting.
|
|
290
|
+
*/
|
|
291
|
+
shouldSkipCommentNewline() {
|
|
292
|
+
return (this.insideWithClause && this.withClauseStyle === 'full-oneline') ||
|
|
293
|
+
this.withClauseStyle === 'cte-oneline';
|
|
294
|
+
}
|
|
295
|
+
/**
|
|
296
|
+
* Determines if the printer is in oneliner mode.
|
|
297
|
+
* Oneliner mode uses single spaces instead of actual newlines.
|
|
298
|
+
*/
|
|
299
|
+
isOnelineMode() {
|
|
300
|
+
return this.newline === ' ';
|
|
301
|
+
}
|
|
302
|
+
/**
|
|
303
|
+
* Handles CTE tokens with one-liner formatting.
|
|
304
|
+
* Creates a nested SqlPrinter instance for proper CTE oneline formatting.
|
|
305
|
+
*/
|
|
200
306
|
handleCteOnelineToken(token, level) {
|
|
201
|
-
|
|
202
|
-
const
|
|
307
|
+
const onelinePrinter = this.createCteOnelinePrinter();
|
|
308
|
+
const onelineResult = onelinePrinter.print(token, level);
|
|
309
|
+
const cleanedResult = this.cleanDuplicateSpaces(onelineResult);
|
|
310
|
+
this.linePrinter.appendText(cleanedResult);
|
|
311
|
+
}
|
|
312
|
+
/**
|
|
313
|
+
* Creates a SqlPrinter instance configured for CTE oneline formatting.
|
|
314
|
+
*/
|
|
315
|
+
createCteOnelinePrinter() {
|
|
316
|
+
return new SqlPrinter({
|
|
203
317
|
indentChar: '',
|
|
204
318
|
indentSize: 0,
|
|
205
319
|
newline: ' ',
|
|
@@ -208,10 +322,15 @@ class SqlPrinter {
|
|
|
208
322
|
keywordCase: this.keywordCase,
|
|
209
323
|
exportComment: this.exportComment,
|
|
210
324
|
strictCommentPlacement: this.strictCommentPlacement,
|
|
211
|
-
|
|
325
|
+
withClauseStyle: 'standard', // Prevent recursive processing
|
|
212
326
|
});
|
|
213
|
-
|
|
214
|
-
|
|
327
|
+
}
|
|
328
|
+
/**
|
|
329
|
+
* Removes duplicate consecutive spaces while preserving single spaces.
|
|
330
|
+
* Simple and safe space normalization for CTE oneline mode.
|
|
331
|
+
*/
|
|
332
|
+
cleanDuplicateSpaces(text) {
|
|
333
|
+
return text.replace(/\s{2,}/g, ' ');
|
|
215
334
|
}
|
|
216
335
|
}
|
|
217
336
|
exports.SqlPrinter = SqlPrinter;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SqlPrinter.js","sourceRoot":"","sources":["../../../src/transformers/SqlPrinter.ts"],"names":[],"mappings":";;;AAAA,2DAAuG;AACvG,+CAA6E;
|
|
1
|
+
{"version":3,"file":"SqlPrinter.js","sourceRoot":"","sources":["../../../src/transformers/SqlPrinter.ts"],"names":[],"mappings":"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"}
|