rawsql-ts 0.11.11-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/SqlPrinter.d.ts +47 -2
- package/dist/esm/src/transformers/SqlPrinter.js +138 -51
- 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/SqlPrinter.d.ts +47 -2
- package/dist/src/transformers/SqlPrinter.js +138 -51
- package/dist/src/transformers/SqlPrinter.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
|
@@ -26,6 +26,8 @@ export class SqlPrinter {
|
|
|
26
26
|
*/
|
|
27
27
|
constructor(options) {
|
|
28
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;
|
|
29
31
|
this.indentChar = (_a = options === null || options === void 0 ? void 0 : options.indentChar) !== null && _a !== void 0 ? _a : '';
|
|
30
32
|
this.indentSize = (_b = options === null || options === void 0 ? void 0 : options.indentSize) !== null && _b !== void 0 ? _b : 0;
|
|
31
33
|
// The default newline character is set to a blank space (' ') to enable one-liner formatting.
|
|
@@ -58,10 +60,13 @@ export class SqlPrinter {
|
|
|
58
60
|
SqlPrintTokenContainerType.CaseKeyValuePair,
|
|
59
61
|
SqlPrintTokenContainerType.CaseThenValue,
|
|
60
62
|
SqlPrintTokenContainerType.ElseClause,
|
|
61
|
-
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.
|
|
62
67
|
// CaseExpression, SwitchCaseArgument, CaseKeyValuePair, and ElseClause
|
|
63
|
-
// are not included by default to maintain backward compatibility with tests
|
|
64
|
-
//SqlPrintTokenContainerType.CommonTable
|
|
68
|
+
// are not included by default to maintain backward compatibility with tests.
|
|
69
|
+
// SqlPrintTokenContainerType.CommonTable is also excluded by default.
|
|
65
70
|
]);
|
|
66
71
|
}
|
|
67
72
|
/**
|
|
@@ -76,13 +81,19 @@ export class SqlPrinter {
|
|
|
76
81
|
print(token, level = 0) {
|
|
77
82
|
// initialize
|
|
78
83
|
this.linePrinter = new LinePrinter(this.indentChar, this.indentSize, this.newline);
|
|
84
|
+
this.insideWithClause = false; // Reset WITH clause context
|
|
79
85
|
if (this.linePrinter.lines.length > 0 && level !== this.linePrinter.lines[0].level) {
|
|
80
86
|
this.linePrinter.lines[0].level = level;
|
|
81
87
|
}
|
|
82
|
-
this.appendToken(token, level);
|
|
88
|
+
this.appendToken(token, level, undefined);
|
|
83
89
|
return this.linePrinter.print();
|
|
84
90
|
}
|
|
85
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
|
+
}
|
|
86
97
|
if (this.shouldSkipToken(token)) {
|
|
87
98
|
return;
|
|
88
99
|
}
|
|
@@ -101,16 +112,21 @@ export class SqlPrinter {
|
|
|
101
112
|
this.handleJoinClauseToken(token, level);
|
|
102
113
|
}
|
|
103
114
|
else if (token.type === SqlPrintTokenType.comment) {
|
|
104
|
-
|
|
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);
|
|
105
125
|
}
|
|
106
126
|
else if (token.containerType === SqlPrintTokenContainerType.CommonTable && this.withClauseStyle === 'cte-oneline') {
|
|
107
127
|
this.handleCteOnelineToken(token, level);
|
|
108
128
|
return; // Return early to avoid processing innerTokens
|
|
109
129
|
}
|
|
110
|
-
else if (token.containerType === SqlPrintTokenContainerType.WithClause && this.withClauseStyle === 'full-oneline') {
|
|
111
|
-
this.handleWithClauseOnelineToken(token, level);
|
|
112
|
-
return; // Return early to avoid processing innerTokens
|
|
113
|
-
}
|
|
114
130
|
else {
|
|
115
131
|
this.linePrinter.appendText(token.text);
|
|
116
132
|
}
|
|
@@ -123,9 +139,9 @@ export class SqlPrinter {
|
|
|
123
139
|
}
|
|
124
140
|
let innerLevel = level;
|
|
125
141
|
// indent level up
|
|
126
|
-
if (this.
|
|
127
|
-
// Skip newline for
|
|
128
|
-
if (!(
|
|
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')) {
|
|
129
145
|
innerLevel++;
|
|
130
146
|
this.linePrinter.appendNewline(innerLevel);
|
|
131
147
|
}
|
|
@@ -134,15 +150,32 @@ export class SqlPrinter {
|
|
|
134
150
|
const child = token.innerTokens[i];
|
|
135
151
|
this.appendToken(child, innerLevel, token.containerType);
|
|
136
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
|
+
}
|
|
137
160
|
// indent level down
|
|
138
161
|
if (innerLevel !== level) {
|
|
139
|
-
// Skip newline for
|
|
140
|
-
if (!(
|
|
162
|
+
// Skip newline for any container when inside WITH clause with full-oneline style
|
|
163
|
+
if (!(this.insideWithClause && this.withClauseStyle === 'full-oneline')) {
|
|
141
164
|
this.linePrinter.appendNewline(level);
|
|
142
165
|
}
|
|
143
166
|
}
|
|
144
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
|
+
*/
|
|
145
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
|
|
146
179
|
return (!token.innerTokens || token.innerTokens.length === 0) && token.text === '';
|
|
147
180
|
}
|
|
148
181
|
applyKeywordCase(text) {
|
|
@@ -160,18 +193,28 @@ export class SqlPrinter {
|
|
|
160
193
|
}
|
|
161
194
|
handleCommaToken(token, level, parentContainerType) {
|
|
162
195
|
const text = token.text;
|
|
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
|
+
}
|
|
163
200
|
// Special handling for commas in WithClause when withClauseStyle is 'cte-oneline'
|
|
164
|
-
if (this.withClauseStyle === 'cte-oneline' && parentContainerType === SqlPrintTokenContainerType.WithClause) {
|
|
201
|
+
else if (this.withClauseStyle === 'cte-oneline' && parentContainerType === SqlPrintTokenContainerType.WithClause) {
|
|
165
202
|
this.linePrinter.appendText(text);
|
|
166
203
|
this.linePrinter.appendNewline(level);
|
|
167
204
|
}
|
|
168
205
|
else if (this.commaBreak === 'before') {
|
|
169
|
-
|
|
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
|
+
}
|
|
170
210
|
this.linePrinter.appendText(text);
|
|
171
211
|
}
|
|
172
212
|
else if (this.commaBreak === 'after') {
|
|
173
213
|
this.linePrinter.appendText(text);
|
|
174
|
-
|
|
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
|
+
}
|
|
175
218
|
}
|
|
176
219
|
else {
|
|
177
220
|
this.linePrinter.appendText(text);
|
|
@@ -180,12 +223,18 @@ export class SqlPrinter {
|
|
|
180
223
|
handleAndOperatorToken(token, level) {
|
|
181
224
|
const text = this.applyKeywordCase(token.text);
|
|
182
225
|
if (this.andBreak === 'before') {
|
|
183
|
-
|
|
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
|
+
}
|
|
184
230
|
this.linePrinter.appendText(text);
|
|
185
231
|
}
|
|
186
232
|
else if (this.andBreak === 'after') {
|
|
187
233
|
this.linePrinter.appendText(text);
|
|
188
|
-
|
|
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
|
+
}
|
|
189
238
|
}
|
|
190
239
|
else {
|
|
191
240
|
this.linePrinter.appendText(text);
|
|
@@ -193,54 +242,92 @@ export class SqlPrinter {
|
|
|
193
242
|
}
|
|
194
243
|
handleJoinClauseToken(token, level) {
|
|
195
244
|
const text = this.applyKeywordCase(token.text);
|
|
196
|
-
// before join clause, add newline
|
|
197
|
-
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
|
+
}
|
|
198
249
|
this.linePrinter.appendText(text);
|
|
199
250
|
}
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
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;
|
|
206
258
|
}
|
|
259
|
+
this.linePrinter.appendText(token.text);
|
|
207
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);
|
|
282
|
+
}
|
|
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
|
+
*/
|
|
208
303
|
handleCteOnelineToken(token, level) {
|
|
209
|
-
|
|
210
|
-
const onelinePrinter = new SqlPrinter({
|
|
211
|
-
indentChar: '',
|
|
212
|
-
indentSize: 0,
|
|
213
|
-
newline: ' ',
|
|
214
|
-
commaBreak: this.commaBreak,
|
|
215
|
-
andBreak: this.andBreak,
|
|
216
|
-
keywordCase: this.keywordCase,
|
|
217
|
-
exportComment: this.exportComment,
|
|
218
|
-
strictCommentPlacement: this.strictCommentPlacement,
|
|
219
|
-
withClauseStyle: 'standard', // Prevent recursive processing
|
|
220
|
-
});
|
|
304
|
+
const onelinePrinter = this.createCteOnelinePrinter();
|
|
221
305
|
const onelineResult = onelinePrinter.print(token, level);
|
|
222
|
-
this.
|
|
306
|
+
const cleanedResult = this.cleanDuplicateSpaces(onelineResult);
|
|
307
|
+
this.linePrinter.appendText(cleanedResult);
|
|
223
308
|
}
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
309
|
+
/**
|
|
310
|
+
* Creates a SqlPrinter instance configured for CTE oneline formatting.
|
|
311
|
+
*/
|
|
312
|
+
createCteOnelinePrinter() {
|
|
313
|
+
return new SqlPrinter({
|
|
228
314
|
indentChar: '',
|
|
229
315
|
indentSize: 0,
|
|
230
316
|
newline: ' ',
|
|
231
|
-
commaBreak:
|
|
317
|
+
commaBreak: this.commaBreak,
|
|
232
318
|
andBreak: this.andBreak,
|
|
233
319
|
keywordCase: this.keywordCase,
|
|
234
320
|
exportComment: this.exportComment,
|
|
235
321
|
strictCommentPlacement: this.strictCommentPlacement,
|
|
236
322
|
withClauseStyle: 'standard', // Prevent recursive processing
|
|
237
|
-
indentIncrementContainerTypes: [], // Disable all indentation
|
|
238
323
|
});
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
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, ' ');
|
|
244
331
|
}
|
|
245
332
|
}
|
|
246
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;AA6C7E;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,OAAO,UAAU;
|
|
1
|
+
{"version":3,"file":"SqlPrinter.js","sourceRoot":"","sources":["../../../../src/transformers/SqlPrinter.ts"],"names":[],"mappings":"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"}
|