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