rawsql-ts 0.11.41-beta → 0.11.42-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 +6 -5
- package/dist/esm/index.min.js +4 -4
- package/dist/esm/index.min.js.map +2 -2
- package/dist/esm/src/parsers/KeywordParser.js +4 -2
- package/dist/esm/src/parsers/KeywordParser.js.map +1 -1
- package/dist/esm/src/parsers/SqlTokenizer.js +26 -13
- package/dist/esm/src/parsers/SqlTokenizer.js.map +1 -1
- package/dist/esm/src/transformers/SqlFormatter.d.ts +6 -2
- package/dist/esm/src/transformers/SqlFormatter.js +1 -1
- package/dist/esm/src/transformers/SqlFormatter.js.map +1 -1
- package/dist/esm/src/transformers/SqlPrinter.d.ts +23 -0
- package/dist/esm/src/transformers/SqlPrinter.js +126 -29
- package/dist/esm/src/transformers/SqlPrinter.js.map +1 -1
- package/dist/esm/src/utils/stringUtils.d.ts +1 -1
- package/dist/esm/src/utils/stringUtils.js +8 -2
- package/dist/esm/src/utils/stringUtils.js.map +1 -1
- package/dist/esm/tsconfig.browser.tsbuildinfo +1 -1
- package/dist/index.min.js +4 -4
- package/dist/index.min.js.map +2 -2
- package/dist/src/parsers/KeywordParser.js +4 -2
- package/dist/src/parsers/KeywordParser.js.map +1 -1
- package/dist/src/parsers/SqlTokenizer.js +26 -13
- package/dist/src/parsers/SqlTokenizer.js.map +1 -1
- package/dist/src/transformers/SqlFormatter.d.ts +6 -2
- package/dist/src/transformers/SqlFormatter.js +2 -1
- package/dist/src/transformers/SqlFormatter.js.map +1 -1
- package/dist/src/transformers/SqlPrinter.d.ts +23 -0
- package/dist/src/transformers/SqlPrinter.js +126 -29
- package/dist/src/transformers/SqlPrinter.js.map +1 -1
- package/dist/src/utils/stringUtils.d.ts +1 -1
- package/dist/src/utils/stringUtils.js +8 -2
- package/dist/src/utils/stringUtils.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
|
@@ -40,7 +40,7 @@ export class KeywordParser {
|
|
|
40
40
|
let lexeme = result.identifier;
|
|
41
41
|
const commentResult = StringUtils.readWhiteSpaceAndComment(input, result.newPosition);
|
|
42
42
|
position = commentResult.position;
|
|
43
|
-
const collectedComments = [...commentResult.lines]; // Cache comments during multi-word parsing
|
|
43
|
+
const collectedComments = commentResult.lines ? [...commentResult.lines] : []; // Cache comments during multi-word parsing
|
|
44
44
|
// end of input
|
|
45
45
|
if (this.isEndOfInput(input, position)) {
|
|
46
46
|
if (matchResult === KeywordMatchResult.PartialOrFinal) {
|
|
@@ -71,7 +71,9 @@ export class KeywordParser {
|
|
|
71
71
|
lexeme += ' ' + result.identifier;
|
|
72
72
|
const nextCommentResult = StringUtils.readWhiteSpaceAndComment(input, result.newPosition);
|
|
73
73
|
position = nextCommentResult.position;
|
|
74
|
-
|
|
74
|
+
if (nextCommentResult.lines && nextCommentResult.lines.length > 0) {
|
|
75
|
+
collectedComments.push(...nextCommentResult.lines); // Collect comments between multi-word tokens
|
|
76
|
+
}
|
|
75
77
|
if (matchResult === KeywordMatchResult.Final) {
|
|
76
78
|
break;
|
|
77
79
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"KeywordParser.js","sourceRoot":"","sources":["../../../../src/parsers/KeywordParser.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAEnD,MAAM,CAAN,IAAY,kBAKX;AALD,WAAY,kBAAkB;IAC1B,yEAAW,CAAA;IACX,yEAAW,CAAA;IACX,+EAAc,CAAA;IACd,6DAAK,CAAA,CAAY,mDAAmD;AACxE,CAAC,EALW,kBAAkB,KAAlB,kBAAkB,QAK7B;AAED,MAAM,OAAO,aAAa;IAGtB,YAAY,IAAiB;QACzB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACrB,CAAC;IAEO,YAAY,CAAC,KAAa,EAAE,QAAgB,EAAE,QAAgB,CAAC;QACnE,OAAO,QAAQ,GAAG,KAAK,IAAI,KAAK,CAAC,MAAM,CAAC;IAC5C,CAAC;IAEO,QAAQ,CAAC,KAAa,EAAE,QAAgB,EAAE,QAAgB,CAAC;QAC/D,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;IACtD,CAAC;IAEM,KAAK,CAAC,KAAa,EAAE,QAAgB;QACxC,IAAI,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,QAAQ,CAAC,EAAE,CAAC;YACrC,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,kBAAkB;QAClB,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;QAClB,MAAM,MAAM,GAAG,WAAW,CAAC,wBAAwB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QAErE,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;YAClB,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,IAAI,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC;QAExE,IAAI,WAAW,KAAK,kBAAkB,CAAC,WAAW,EAAE,CAAC;YACjD,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,IAAI,WAAW,KAAK,kBAAkB,CAAC,KAAK,EAAE,CAAC;YAC3C,OAAO;gBACH,OAAO,EAAE,MAAM,CAAC,UAAU;gBAC1B,WAAW,EAAE,MAAM,CAAC,WAAW;aAClC,CAAC;QACN,CAAC;QAED,qBAAqB;QACrB,IAAI,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC;QAC/B,MAAM,aAAa,GAAG,WAAW,CAAC,wBAAwB,CAAC,KAAK,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;QACtF,QAAQ,GAAG,aAAa,CAAC,QAAQ,CAAC;QAClC,MAAM,iBAAiB,GAAa,CAAC,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,2CAA2C;
|
|
1
|
+
{"version":3,"file":"KeywordParser.js","sourceRoot":"","sources":["../../../../src/parsers/KeywordParser.ts"],"names":[],"mappings":"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"}
|
|
@@ -118,7 +118,8 @@ export class SqlTokenizer {
|
|
|
118
118
|
const current = tokenData[i];
|
|
119
119
|
const lexeme = current.lexeme;
|
|
120
120
|
// For SELECT keyword, suffix comments should go to the first select item
|
|
121
|
-
if (lexeme.value.toLowerCase() === 'select' && current.suffixComments.length > 0) {
|
|
121
|
+
if (lexeme.value.toLowerCase() === 'select' && current.suffixComments && current.suffixComments.length > 0) {
|
|
122
|
+
const suffixComments = current.suffixComments;
|
|
122
123
|
// Find the first meaningful token after SELECT (skip DISTINCT, etc.)
|
|
123
124
|
let targetIndex = i + 1;
|
|
124
125
|
while (targetIndex < tokenData.length) {
|
|
@@ -130,35 +131,46 @@ export class SqlTokenizer {
|
|
|
130
131
|
!(target.lexeme.type & TokenType.Comma) &&
|
|
131
132
|
!(target.lexeme.type & TokenType.Operator))) {
|
|
132
133
|
// Move comments to the target token as prefix comments
|
|
133
|
-
target.prefixComments
|
|
134
|
-
|
|
134
|
+
if (!target.prefixComments) {
|
|
135
|
+
target.prefixComments = [];
|
|
136
|
+
}
|
|
137
|
+
target.prefixComments.unshift(...suffixComments);
|
|
138
|
+
current.suffixComments = null;
|
|
135
139
|
break;
|
|
136
140
|
}
|
|
137
141
|
targetIndex++;
|
|
138
142
|
}
|
|
139
143
|
}
|
|
140
144
|
// For commas, suffix comments should go to next meaningful token
|
|
141
|
-
if ((lexeme.type & TokenType.Comma) && current.suffixComments.length > 0) {
|
|
145
|
+
if ((lexeme.type & TokenType.Comma) && current.suffixComments && current.suffixComments.length > 0) {
|
|
146
|
+
const suffixComments = current.suffixComments;
|
|
142
147
|
let targetIndex = i + 1;
|
|
143
148
|
if (targetIndex < tokenData.length) {
|
|
144
149
|
const target = tokenData[targetIndex];
|
|
145
|
-
target.prefixComments
|
|
146
|
-
|
|
150
|
+
if (!target.prefixComments) {
|
|
151
|
+
target.prefixComments = [];
|
|
152
|
+
}
|
|
153
|
+
target.prefixComments.unshift(...suffixComments);
|
|
154
|
+
current.suffixComments = null;
|
|
147
155
|
}
|
|
148
156
|
}
|
|
149
157
|
// For UNION/INTERSECT/EXCEPT keywords, suffix comments should go to the next SELECT as prefix comments
|
|
150
158
|
if ((lexeme.value.toLowerCase() === 'union' ||
|
|
151
159
|
lexeme.value.toLowerCase() === 'intersect' ||
|
|
152
160
|
lexeme.value.toLowerCase() === 'except') &&
|
|
153
|
-
current.suffixComments.length > 0) {
|
|
161
|
+
current.suffixComments && current.suffixComments.length > 0) {
|
|
162
|
+
const suffixComments = current.suffixComments;
|
|
154
163
|
// Find the next SELECT keyword
|
|
155
164
|
let targetIndex = i + 1;
|
|
156
165
|
while (targetIndex < tokenData.length) {
|
|
157
166
|
const target = tokenData[targetIndex];
|
|
158
167
|
if (target.lexeme.value.toLowerCase() === 'select') {
|
|
159
168
|
// Move UNION suffix comments to SELECT as prefix comments
|
|
160
|
-
target.prefixComments
|
|
161
|
-
|
|
169
|
+
if (!target.prefixComments) {
|
|
170
|
+
target.prefixComments = [];
|
|
171
|
+
}
|
|
172
|
+
target.prefixComments.unshift(...suffixComments);
|
|
173
|
+
current.suffixComments = null;
|
|
162
174
|
break;
|
|
163
175
|
}
|
|
164
176
|
targetIndex++;
|
|
@@ -179,7 +191,7 @@ export class SqlTokenizer {
|
|
|
179
191
|
newPositionedComments.push(...lexeme.positionedComments);
|
|
180
192
|
}
|
|
181
193
|
// Add prefix comments as "before" positioned comments directly
|
|
182
|
-
if (tokenData.prefixComments.length > 0) {
|
|
194
|
+
if (tokenData.prefixComments && tokenData.prefixComments.length > 0) {
|
|
183
195
|
allLegacyComments.push(...tokenData.prefixComments);
|
|
184
196
|
newPositionedComments.push({
|
|
185
197
|
position: 'before',
|
|
@@ -187,7 +199,7 @@ export class SqlTokenizer {
|
|
|
187
199
|
});
|
|
188
200
|
}
|
|
189
201
|
// Add suffix comments as "after" positioned comments directly
|
|
190
|
-
if (tokenData.suffixComments.length > 0) {
|
|
202
|
+
if (tokenData.suffixComments && tokenData.suffixComments.length > 0) {
|
|
191
203
|
allLegacyComments.push(...tokenData.suffixComments);
|
|
192
204
|
newPositionedComments.push({
|
|
193
205
|
position: 'after',
|
|
@@ -348,8 +360,9 @@ export class SqlTokenizer {
|
|
|
348
360
|
// Try to extract comments using StringUtils
|
|
349
361
|
const result = StringUtils.readWhiteSpaceAndComment(whitespaceSegment, pos);
|
|
350
362
|
// Add any comments found
|
|
351
|
-
|
|
352
|
-
|
|
363
|
+
const lines = result.lines;
|
|
364
|
+
if (lines && lines.length > 0) {
|
|
365
|
+
inlineComments.push(...lines);
|
|
353
366
|
}
|
|
354
367
|
// Move position forward
|
|
355
368
|
pos = result.position;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SqlTokenizer.js","sourceRoot":"","sources":["../../../../src/parsers/SqlTokenizer.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"SqlTokenizer.js","sourceRoot":"","sources":["../../../../src/parsers/SqlTokenizer.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { CommaBreakStyle, AndBreakStyle } from './SqlPrinter';
|
|
1
|
+
import { CommaBreakStyle, AndBreakStyle, OrBreakStyle } from './SqlPrinter';
|
|
2
2
|
import { IndentCharOption, NewlineOption } from './LinePrinter';
|
|
3
3
|
import { IdentifierEscapeOption } from './FormatOptionResolver';
|
|
4
4
|
import { SqlComponent } from '../models/SqlComponent';
|
|
@@ -43,8 +43,10 @@ export interface BaseFormattingOptions {
|
|
|
43
43
|
cteCommaBreak?: CommaBreakStyle;
|
|
44
44
|
/** Style for comma line breaks inside VALUES clauses */
|
|
45
45
|
valuesCommaBreak?: CommaBreakStyle;
|
|
46
|
-
/** Style for AND
|
|
46
|
+
/** Style for AND line breaks */
|
|
47
47
|
andBreak?: AndBreakStyle;
|
|
48
|
+
/** Style for OR line breaks */
|
|
49
|
+
orBreak?: OrBreakStyle;
|
|
48
50
|
/** Whether to export comments in formatted output */
|
|
49
51
|
exportComment?: boolean;
|
|
50
52
|
/** Whether to only export comments from clause-level keywords */
|
|
@@ -65,6 +67,8 @@ export interface BaseFormattingOptions {
|
|
|
65
67
|
caseOneLine?: boolean;
|
|
66
68
|
/** Keep subqueries (inline queries) on one line regardless of formatting settings */
|
|
67
69
|
subqueryOneLine?: boolean;
|
|
70
|
+
/** Indent nested parentheses when boolean groups contain additional parentheses */
|
|
71
|
+
indentNestedParentheses?: boolean;
|
|
68
72
|
}
|
|
69
73
|
/**
|
|
70
74
|
* High level configuration accepted by SqlFormatter.
|
|
@@ -25,7 +25,7 @@ export class SqlFormatter {
|
|
|
25
25
|
const resolvedIdentifierEscape = resolveIdentifierEscapeOption((_a = options.identifierEscape) !== null && _a !== void 0 ? _a : presetConfig === null || presetConfig === void 0 ? void 0 : presetConfig.identifierEscape);
|
|
26
26
|
const parserOptions = Object.assign(Object.assign({}, presetConfig), { identifierEscape: resolvedIdentifierEscape !== null && resolvedIdentifierEscape !== void 0 ? resolvedIdentifierEscape : presetConfig === null || presetConfig === void 0 ? void 0 : presetConfig.identifierEscape, parameterSymbol: (_b = options.parameterSymbol) !== null && _b !== void 0 ? _b : presetConfig === null || presetConfig === void 0 ? void 0 : presetConfig.parameterSymbol, parameterStyle: (_c = options.parameterStyle) !== null && _c !== void 0 ? _c : presetConfig === null || presetConfig === void 0 ? void 0 : presetConfig.parameterStyle });
|
|
27
27
|
this.parser = new SqlPrintTokenParser(Object.assign(Object.assign({}, parserOptions), { commentStyle: options.commentStyle }));
|
|
28
|
-
this.printer = new SqlPrinter(Object.assign(Object.assign({}, options), { parenthesesOneLine: options.parenthesesOneLine, betweenOneLine: options.betweenOneLine, valuesOneLine: options.valuesOneLine, joinOneLine: options.joinOneLine, caseOneLine: options.caseOneLine, subqueryOneLine: options.subqueryOneLine }));
|
|
28
|
+
this.printer = new SqlPrinter(Object.assign(Object.assign({}, options), { parenthesesOneLine: options.parenthesesOneLine, betweenOneLine: options.betweenOneLine, valuesOneLine: options.valuesOneLine, joinOneLine: options.joinOneLine, caseOneLine: options.caseOneLine, subqueryOneLine: options.subqueryOneLine, indentNestedParentheses: options.indentNestedParentheses }));
|
|
29
29
|
}
|
|
30
30
|
/**
|
|
31
31
|
* Formats a SQL query string with the given parameters.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SqlFormatter.js","sourceRoot":"","sources":["../../../../src/transformers/SqlFormatter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAmB,OAAO,EAAE,MAAM,gCAAgC,CAAC;AAC/F,OAAO,EAAE,UAAU,
|
|
1
|
+
{"version":3,"file":"SqlFormatter.js","sourceRoot":"","sources":["../../../../src/transformers/SqlFormatter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAmB,OAAO,EAAE,MAAM,gCAAgC,CAAC;AAC/F,OAAO,EAAE,UAAU,EAAgD,MAAM,cAAc,CAAC;AAExF,OAAO,EAA0B,6BAA6B,EAAE,MAAM,wBAAwB,CAAC;AAI/F,4CAA4C;AAC5C,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,QAAQ,CAAU,CAAC;AA8FnF;;;;;;;;;;GAUG;AACH,MAAM,OAAO,YAAY;IAIrB,YAAY,UAA+B,EAAE;;QAEzC,MAAM,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAE1E,IAAI,OAAO,CAAC,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;YAClC,MAAM,IAAI,KAAK,CAAC,mBAAmB,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,iCAAiC;QAC3F,CAAC;QAED,+FAA+F;QAC/F,MAAM,wBAAwB,GAAG,6BAA6B,CAAC,MAAA,OAAO,CAAC,gBAAgB,mCAAI,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,gBAAgB,CAAC,CAAC;QAE3H,MAAM,aAAa,mCACZ,YAAY,KACf,gBAAgB,EAAE,wBAAwB,aAAxB,wBAAwB,cAAxB,wBAAwB,GAAI,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,gBAAgB,EAC5E,eAAe,EAAE,MAAA,OAAO,CAAC,eAAe,mCAAI,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,eAAe,EACzE,cAAc,EAAE,MAAA,OAAO,CAAC,cAAc,mCAAI,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,cAAc,GACzE,CAAC;QAEF,IAAI,CAAC,MAAM,GAAG,IAAI,mBAAmB,iCAC9B,aAAa,KAChB,YAAY,EAAE,OAAO,CAAC,YAAY,IACpC,CAAC;QACH,IAAI,CAAC,OAAO,GAAG,IAAI,UAAU,iCACtB,OAAO,KACV,kBAAkB,EAAE,OAAO,CAAC,kBAAkB,EAC9C,cAAc,EAAE,OAAO,CAAC,cAAc,EACtC,aAAa,EAAE,OAAO,CAAC,aAAa,EACpC,WAAW,EAAE,OAAO,CAAC,WAAW,EAChC,WAAW,EAAE,OAAO,CAAC,WAAW,EAChC,eAAe,EAAE,OAAO,CAAC,eAAe,EACxC,uBAAuB,EAAE,OAAO,CAAC,uBAAuB,IAC1D,CAAC;IACP,CAAC;IAED;;;;;OAKG;IACH,MAAM,CAAC,GAAiB;QACpB,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACjD,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAE/C,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC;IACpC,CAAC;CACJ"}
|
|
@@ -15,6 +15,13 @@ export type CommaBreakStyle = 'none' | 'before' | 'after';
|
|
|
15
15
|
* - 'after': Line break after AND
|
|
16
16
|
*/
|
|
17
17
|
export type AndBreakStyle = 'none' | 'before' | 'after';
|
|
18
|
+
/**
|
|
19
|
+
* OrBreakStyle determines how OR operators are placed in formatted SQL output.
|
|
20
|
+
* - 'none': No line break for OR
|
|
21
|
+
* - 'before': Line break before OR
|
|
22
|
+
* - 'after': Line break after OR
|
|
23
|
+
*/
|
|
24
|
+
export type OrBreakStyle = 'none' | 'before' | 'after';
|
|
18
25
|
/**
|
|
19
26
|
* Options for configuring SqlPrinter formatting behavior
|
|
20
27
|
*/
|
|
@@ -57,6 +64,8 @@ export declare class SqlPrinter {
|
|
|
57
64
|
valuesCommaBreak: CommaBreakStyle;
|
|
58
65
|
/** AND break style: 'none', 'before', or 'after' */
|
|
59
66
|
andBreak: AndBreakStyle;
|
|
67
|
+
/** OR break style: 'none', 'before', or 'after' */
|
|
68
|
+
orBreak: OrBreakStyle;
|
|
60
69
|
/** Keyword case style: 'none', 'upper' | 'lower' */
|
|
61
70
|
keywordCase: 'none' | 'upper' | 'lower';
|
|
62
71
|
/** Whether to export comments in the output (default: false for compatibility) */
|
|
@@ -83,6 +92,8 @@ export declare class SqlPrinter {
|
|
|
83
92
|
private caseOneLine;
|
|
84
93
|
/** Whether to keep subqueries on one line */
|
|
85
94
|
private subqueryOneLine;
|
|
95
|
+
/** Whether to indent nested parentheses when boolean groups get expanded */
|
|
96
|
+
private indentNestedParentheses;
|
|
86
97
|
/**
|
|
87
98
|
* @param options Optional style settings for pretty printing
|
|
88
99
|
*/
|
|
@@ -109,6 +120,18 @@ export declare class SqlPrinter {
|
|
|
109
120
|
private handleKeywordToken;
|
|
110
121
|
private handleCommaToken;
|
|
111
122
|
private handleAndOperatorToken;
|
|
123
|
+
private handleParenthesisToken;
|
|
124
|
+
private handleOrOperatorToken;
|
|
125
|
+
/**
|
|
126
|
+
* Decide whether a parentheses group should increase indentation when inside nested structures.
|
|
127
|
+
* We only expand groups that contain further parentheses so simple comparisons stay compact.
|
|
128
|
+
*/
|
|
129
|
+
private shouldIndentNestedParentheses;
|
|
130
|
+
/**
|
|
131
|
+
* Recursively inspect descendants to find additional parentheses groups.
|
|
132
|
+
* Helps detect complex boolean groups like ((A) OR (B) OR (C)).
|
|
133
|
+
*/
|
|
134
|
+
private containsParenExpression;
|
|
112
135
|
private handleJoinClauseToken;
|
|
113
136
|
/**
|
|
114
137
|
* Handles space tokens with context-aware filtering.
|
|
@@ -26,7 +26,7 @@ export class SqlPrinter {
|
|
|
26
26
|
* @param options Optional style settings for pretty printing
|
|
27
27
|
*/
|
|
28
28
|
constructor(options) {
|
|
29
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s;
|
|
29
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u;
|
|
30
30
|
/** Track whether we are currently inside a WITH clause for full-oneline formatting */
|
|
31
31
|
this.insideWithClause = false;
|
|
32
32
|
// Resolve logical options to their control character representations before applying defaults.
|
|
@@ -41,20 +41,22 @@ export class SqlPrinter {
|
|
|
41
41
|
this.cteCommaBreak = (_c = options === null || options === void 0 ? void 0 : options.cteCommaBreak) !== null && _c !== void 0 ? _c : this.commaBreak;
|
|
42
42
|
this.valuesCommaBreak = (_d = options === null || options === void 0 ? void 0 : options.valuesCommaBreak) !== null && _d !== void 0 ? _d : this.commaBreak;
|
|
43
43
|
this.andBreak = (_e = options === null || options === void 0 ? void 0 : options.andBreak) !== null && _e !== void 0 ? _e : 'none';
|
|
44
|
-
this.
|
|
45
|
-
this.
|
|
46
|
-
this.
|
|
47
|
-
this.
|
|
48
|
-
this.
|
|
49
|
-
this.
|
|
50
|
-
this.
|
|
51
|
-
this.
|
|
52
|
-
this.
|
|
53
|
-
this.
|
|
54
|
-
this.
|
|
44
|
+
this.orBreak = (_f = options === null || options === void 0 ? void 0 : options.orBreak) !== null && _f !== void 0 ? _f : 'none';
|
|
45
|
+
this.keywordCase = (_g = options === null || options === void 0 ? void 0 : options.keywordCase) !== null && _g !== void 0 ? _g : 'none';
|
|
46
|
+
this.exportComment = (_h = options === null || options === void 0 ? void 0 : options.exportComment) !== null && _h !== void 0 ? _h : false;
|
|
47
|
+
this.strictCommentPlacement = (_j = options === null || options === void 0 ? void 0 : options.strictCommentPlacement) !== null && _j !== void 0 ? _j : false;
|
|
48
|
+
this.withClauseStyle = (_k = options === null || options === void 0 ? void 0 : options.withClauseStyle) !== null && _k !== void 0 ? _k : 'standard';
|
|
49
|
+
this.commentStyle = (_l = options === null || options === void 0 ? void 0 : options.commentStyle) !== null && _l !== void 0 ? _l : 'block';
|
|
50
|
+
this.parenthesesOneLine = (_m = options === null || options === void 0 ? void 0 : options.parenthesesOneLine) !== null && _m !== void 0 ? _m : false;
|
|
51
|
+
this.betweenOneLine = (_o = options === null || options === void 0 ? void 0 : options.betweenOneLine) !== null && _o !== void 0 ? _o : false;
|
|
52
|
+
this.valuesOneLine = (_p = options === null || options === void 0 ? void 0 : options.valuesOneLine) !== null && _p !== void 0 ? _p : false;
|
|
53
|
+
this.joinOneLine = (_q = options === null || options === void 0 ? void 0 : options.joinOneLine) !== null && _q !== void 0 ? _q : false;
|
|
54
|
+
this.caseOneLine = (_r = options === null || options === void 0 ? void 0 : options.caseOneLine) !== null && _r !== void 0 ? _r : false;
|
|
55
|
+
this.subqueryOneLine = (_s = options === null || options === void 0 ? void 0 : options.subqueryOneLine) !== null && _s !== void 0 ? _s : false;
|
|
56
|
+
this.indentNestedParentheses = (_t = options === null || options === void 0 ? void 0 : options.indentNestedParentheses) !== null && _t !== void 0 ? _t : false;
|
|
55
57
|
this.linePrinter = new LinePrinter(this.indentChar, this.indentSize, this.newline, this.commaBreak);
|
|
56
58
|
// Initialize
|
|
57
|
-
this.indentIncrementContainers = new Set((
|
|
59
|
+
this.indentIncrementContainers = new Set((_u = options === null || options === void 0 ? void 0 : options.indentIncrementContainerTypes) !== null && _u !== void 0 ? _u : [
|
|
58
60
|
SqlPrintTokenContainerType.SelectClause,
|
|
59
61
|
SqlPrintTokenContainerType.FromClause,
|
|
60
62
|
SqlPrintTokenContainerType.WhereClause,
|
|
@@ -98,10 +100,10 @@ export class SqlPrinter {
|
|
|
98
100
|
if (this.linePrinter.lines.length > 0 && level !== this.linePrinter.lines[0].level) {
|
|
99
101
|
this.linePrinter.lines[0].level = level;
|
|
100
102
|
}
|
|
101
|
-
this.appendToken(token, level, undefined, 0);
|
|
103
|
+
this.appendToken(token, level, undefined, 0, false);
|
|
102
104
|
return this.linePrinter.print();
|
|
103
105
|
}
|
|
104
|
-
appendToken(token, level, parentContainerType, caseContextDepth = 0) {
|
|
106
|
+
appendToken(token, level, parentContainerType, caseContextDepth = 0, indentParentActive = false) {
|
|
105
107
|
// Track WITH clause context for full-oneline formatting
|
|
106
108
|
const wasInsideWithClause = this.insideWithClause;
|
|
107
109
|
if (token.containerType === SqlPrintTokenContainerType.WithClause && this.withClauseStyle === 'full-oneline') {
|
|
@@ -113,6 +115,7 @@ export class SqlPrinter {
|
|
|
113
115
|
const current = this.linePrinter.getCurrentLine();
|
|
114
116
|
const isCaseContext = this.isCaseContext(token.containerType);
|
|
115
117
|
const nextCaseContextDepth = isCaseContext ? caseContextDepth + 1 : caseContextDepth;
|
|
118
|
+
const shouldIndentNested = this.shouldIndentNestedParentheses(token);
|
|
116
119
|
// Handle different token types
|
|
117
120
|
if (token.type === SqlPrintTokenType.keyword) {
|
|
118
121
|
this.handleKeywordToken(token, level, parentContainerType, caseContextDepth);
|
|
@@ -120,9 +123,15 @@ export class SqlPrinter {
|
|
|
120
123
|
else if (token.type === SqlPrintTokenType.comma) {
|
|
121
124
|
this.handleCommaToken(token, level, parentContainerType);
|
|
122
125
|
}
|
|
126
|
+
else if (token.type === SqlPrintTokenType.parenthesis) {
|
|
127
|
+
this.handleParenthesisToken(token, level, indentParentActive);
|
|
128
|
+
}
|
|
123
129
|
else if (token.type === SqlPrintTokenType.operator && token.text.toLowerCase() === 'and') {
|
|
124
130
|
this.handleAndOperatorToken(token, level, parentContainerType, caseContextDepth);
|
|
125
131
|
}
|
|
132
|
+
else if (token.type === SqlPrintTokenType.operator && token.text.toLowerCase() === 'or') {
|
|
133
|
+
this.handleOrOperatorToken(token, level, parentContainerType, caseContextDepth);
|
|
134
|
+
}
|
|
126
135
|
else if (token.containerType === "JoinClause") {
|
|
127
136
|
this.handleJoinClauseToken(token, level);
|
|
128
137
|
}
|
|
@@ -144,7 +153,7 @@ export class SqlPrinter {
|
|
|
144
153
|
this.handleCteOnelineToken(token, level);
|
|
145
154
|
return; // Return early to avoid processing innerTokens
|
|
146
155
|
}
|
|
147
|
-
else if ((token.containerType === SqlPrintTokenContainerType.ParenExpression && this.parenthesesOneLine) ||
|
|
156
|
+
else if ((token.containerType === SqlPrintTokenContainerType.ParenExpression && this.parenthesesOneLine && !shouldIndentNested) ||
|
|
148
157
|
(token.containerType === SqlPrintTokenContainerType.BetweenExpression && this.betweenOneLine) ||
|
|
149
158
|
(token.containerType === SqlPrintTokenContainerType.Values && this.valuesOneLine) ||
|
|
150
159
|
(token.containerType === SqlPrintTokenContainerType.JoinOnClause && this.joinOneLine) ||
|
|
@@ -160,21 +169,31 @@ export class SqlPrinter {
|
|
|
160
169
|
if (token.keywordTokens && token.keywordTokens.length > 0) {
|
|
161
170
|
for (let i = 0; i < token.keywordTokens.length; i++) {
|
|
162
171
|
const keywordToken = token.keywordTokens[i];
|
|
163
|
-
this.appendToken(keywordToken, level, token.containerType, nextCaseContextDepth);
|
|
172
|
+
this.appendToken(keywordToken, level, token.containerType, nextCaseContextDepth, indentParentActive);
|
|
164
173
|
}
|
|
165
174
|
}
|
|
166
175
|
let innerLevel = level;
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
176
|
+
let increasedIndent = false;
|
|
177
|
+
const shouldIncreaseIndent = this.indentIncrementContainers.has(token.containerType) || shouldIndentNested;
|
|
178
|
+
const delayIndentNewline = shouldIndentNested && token.containerType === SqlPrintTokenContainerType.ParenExpression;
|
|
179
|
+
if (!this.isOnelineMode() && shouldIncreaseIndent) {
|
|
180
|
+
if (this.insideWithClause && this.withClauseStyle === 'full-oneline') {
|
|
181
|
+
// Keep everything on one line for full-oneline WITH clauses.
|
|
182
|
+
}
|
|
183
|
+
else if (delayIndentNewline) {
|
|
184
|
+
innerLevel = level + 1;
|
|
185
|
+
increasedIndent = true;
|
|
186
|
+
}
|
|
187
|
+
else if (current.text !== '') {
|
|
188
|
+
innerLevel = level + 1;
|
|
189
|
+
increasedIndent = true;
|
|
172
190
|
this.linePrinter.appendNewline(innerLevel);
|
|
173
191
|
}
|
|
174
192
|
}
|
|
175
193
|
for (let i = 0; i < token.innerTokens.length; i++) {
|
|
176
194
|
const child = token.innerTokens[i];
|
|
177
|
-
|
|
195
|
+
const childIndentParentActive = token.containerType === SqlPrintTokenContainerType.ParenExpression ? shouldIndentNested : indentParentActive;
|
|
196
|
+
this.appendToken(child, innerLevel, token.containerType, nextCaseContextDepth, childIndentParentActive);
|
|
178
197
|
}
|
|
179
198
|
// Exit WITH clause context when we finish processing WithClause container
|
|
180
199
|
if (token.containerType === SqlPrintTokenContainerType.WithClause && this.withClauseStyle === 'full-oneline') {
|
|
@@ -184,11 +203,8 @@ export class SqlPrinter {
|
|
|
184
203
|
return; // Return early to avoid additional newline below
|
|
185
204
|
}
|
|
186
205
|
// indent level down
|
|
187
|
-
if (
|
|
188
|
-
|
|
189
|
-
if (!(this.insideWithClause && this.withClauseStyle === 'full-oneline')) {
|
|
190
|
-
this.linePrinter.appendNewline(level);
|
|
191
|
-
}
|
|
206
|
+
if (increasedIndent && shouldIncreaseIndent && !(this.insideWithClause && this.withClauseStyle === 'full-oneline') && !delayIndentNewline) {
|
|
207
|
+
this.linePrinter.appendNewline(level);
|
|
192
208
|
}
|
|
193
209
|
}
|
|
194
210
|
isCaseContext(containerType) {
|
|
@@ -231,6 +247,10 @@ export class SqlPrinter {
|
|
|
231
247
|
this.handleAndOperatorToken(token, level, parentContainerType, caseContextDepth);
|
|
232
248
|
return;
|
|
233
249
|
}
|
|
250
|
+
else if (lower === 'or' && this.orBreak !== 'none') {
|
|
251
|
+
this.handleOrOperatorToken(token, level, parentContainerType, caseContextDepth);
|
|
252
|
+
return;
|
|
253
|
+
}
|
|
234
254
|
const text = this.applyKeywordCase(token.text);
|
|
235
255
|
if (caseContextDepth > 0) {
|
|
236
256
|
this.linePrinter.appendText(text);
|
|
@@ -322,6 +342,79 @@ export class SqlPrinter {
|
|
|
322
342
|
this.linePrinter.appendText(text);
|
|
323
343
|
}
|
|
324
344
|
}
|
|
345
|
+
handleParenthesisToken(token, level, indentParentActive) {
|
|
346
|
+
if (token.text === '(') {
|
|
347
|
+
this.linePrinter.appendText(token.text);
|
|
348
|
+
if (indentParentActive && !this.isOnelineMode()) {
|
|
349
|
+
if (!(this.insideWithClause && this.withClauseStyle === 'full-oneline')) {
|
|
350
|
+
this.linePrinter.appendNewline(level);
|
|
351
|
+
}
|
|
352
|
+
}
|
|
353
|
+
return;
|
|
354
|
+
}
|
|
355
|
+
if (token.text === ')' && indentParentActive && !this.isOnelineMode()) {
|
|
356
|
+
// Align closing parenthesis with the outer indentation level when nested groups expand.
|
|
357
|
+
const closingLevel = Math.max(level - 1, 0);
|
|
358
|
+
if (!(this.insideWithClause && this.withClauseStyle === 'full-oneline')) {
|
|
359
|
+
this.linePrinter.appendNewline(closingLevel);
|
|
360
|
+
}
|
|
361
|
+
}
|
|
362
|
+
this.linePrinter.appendText(token.text);
|
|
363
|
+
}
|
|
364
|
+
handleOrOperatorToken(token, level, parentContainerType, caseContextDepth = 0) {
|
|
365
|
+
const text = this.applyKeywordCase(token.text);
|
|
366
|
+
// Leave OR untouched inside CASE branches to preserve inline evaluation order.
|
|
367
|
+
if (caseContextDepth > 0) {
|
|
368
|
+
this.linePrinter.appendText(text);
|
|
369
|
+
return;
|
|
370
|
+
}
|
|
371
|
+
if (this.orBreak === 'before') {
|
|
372
|
+
// Insert a newline before OR unless WITH full-oneline mode suppresses breaks.
|
|
373
|
+
if (!(this.insideWithClause && this.withClauseStyle === 'full-oneline')) {
|
|
374
|
+
this.linePrinter.appendNewline(level);
|
|
375
|
+
}
|
|
376
|
+
this.linePrinter.appendText(text);
|
|
377
|
+
}
|
|
378
|
+
else if (this.orBreak === 'after') {
|
|
379
|
+
this.linePrinter.appendText(text);
|
|
380
|
+
// Break after OR when multi-line formatting is active.
|
|
381
|
+
if (!(this.insideWithClause && this.withClauseStyle === 'full-oneline')) {
|
|
382
|
+
this.linePrinter.appendNewline(level);
|
|
383
|
+
}
|
|
384
|
+
}
|
|
385
|
+
else {
|
|
386
|
+
this.linePrinter.appendText(text);
|
|
387
|
+
}
|
|
388
|
+
}
|
|
389
|
+
/**
|
|
390
|
+
* Decide whether a parentheses group should increase indentation when inside nested structures.
|
|
391
|
+
* We only expand groups that contain further parentheses so simple comparisons stay compact.
|
|
392
|
+
*/
|
|
393
|
+
shouldIndentNestedParentheses(token) {
|
|
394
|
+
if (!this.indentNestedParentheses) {
|
|
395
|
+
return false;
|
|
396
|
+
}
|
|
397
|
+
if (token.containerType !== SqlPrintTokenContainerType.ParenExpression) {
|
|
398
|
+
return false;
|
|
399
|
+
}
|
|
400
|
+
// Look for nested parentheses containers. If present, indent to highlight grouping.
|
|
401
|
+
return token.innerTokens.some((child) => this.containsParenExpression(child));
|
|
402
|
+
}
|
|
403
|
+
/**
|
|
404
|
+
* Recursively inspect descendants to find additional parentheses groups.
|
|
405
|
+
* Helps detect complex boolean groups like ((A) OR (B) OR (C)).
|
|
406
|
+
*/
|
|
407
|
+
containsParenExpression(token) {
|
|
408
|
+
if (token.containerType === SqlPrintTokenContainerType.ParenExpression) {
|
|
409
|
+
return true;
|
|
410
|
+
}
|
|
411
|
+
for (const child of token.innerTokens) {
|
|
412
|
+
if (this.containsParenExpression(child)) {
|
|
413
|
+
return true;
|
|
414
|
+
}
|
|
415
|
+
}
|
|
416
|
+
return false;
|
|
417
|
+
}
|
|
325
418
|
handleJoinClauseToken(token, level) {
|
|
326
419
|
const text = this.applyKeywordCase(token.text);
|
|
327
420
|
// before join clause, add newline (skip when inside WITH clause with full-oneline style)
|
|
@@ -405,10 +498,12 @@ export class SqlPrinter {
|
|
|
405
498
|
cteCommaBreak: this.cteCommaBreak,
|
|
406
499
|
valuesCommaBreak: this.valuesCommaBreak,
|
|
407
500
|
andBreak: this.andBreak,
|
|
501
|
+
orBreak: this.orBreak,
|
|
408
502
|
keywordCase: this.keywordCase,
|
|
409
503
|
exportComment: false,
|
|
410
504
|
strictCommentPlacement: this.strictCommentPlacement,
|
|
411
505
|
withClauseStyle: 'standard', // Prevent recursive processing
|
|
506
|
+
indentNestedParentheses: false,
|
|
412
507
|
});
|
|
413
508
|
}
|
|
414
509
|
/**
|
|
@@ -434,7 +529,8 @@ export class SqlPrinter {
|
|
|
434
529
|
commaBreak: 'none', // Disable comma-based line breaks
|
|
435
530
|
cteCommaBreak: this.cteCommaBreak,
|
|
436
531
|
valuesCommaBreak: 'none',
|
|
437
|
-
andBreak: 'none', // Disable AND
|
|
532
|
+
andBreak: 'none', // Disable AND-based line breaks
|
|
533
|
+
orBreak: 'none', // Disable OR-based line breaks
|
|
438
534
|
keywordCase: this.keywordCase,
|
|
439
535
|
exportComment: this.exportComment,
|
|
440
536
|
strictCommentPlacement: this.strictCommentPlacement,
|
|
@@ -445,6 +541,7 @@ export class SqlPrinter {
|
|
|
445
541
|
joinOneLine: false, // Prevent recursive processing (avoid infinite loops)
|
|
446
542
|
caseOneLine: false, // Prevent recursive processing (avoid infinite loops)
|
|
447
543
|
subqueryOneLine: false, // Prevent recursive processing (avoid infinite loops)
|
|
544
|
+
indentNestedParentheses: false,
|
|
448
545
|
});
|
|
449
546
|
}
|
|
450
547
|
/**
|