rawsql-ts 0.11.36-beta → 0.11.38-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.
Files changed (140) hide show
  1. package/dist/esm/index.js.map +1 -1
  2. package/dist/esm/index.min.js +54 -50
  3. package/dist/esm/index.min.js.map +3 -3
  4. package/dist/esm/src/index.d.ts +1 -0
  5. package/dist/esm/src/index.js.map +1 -1
  6. package/dist/esm/src/models/Lexeme.d.ts +8 -0
  7. package/dist/esm/src/models/SqlComponent.d.ts +20 -0
  8. package/dist/esm/src/models/SqlComponent.js +46 -0
  9. package/dist/esm/src/models/SqlComponent.js.map +1 -1
  10. package/dist/esm/src/parsers/CommandExpressionParser.d.ts +9 -0
  11. package/dist/esm/src/parsers/CommandExpressionParser.js +118 -14
  12. package/dist/esm/src/parsers/CommandExpressionParser.js.map +1 -1
  13. package/dist/esm/src/parsers/CommonTableParser.d.ts +8 -0
  14. package/dist/esm/src/parsers/CommonTableParser.js +127 -35
  15. package/dist/esm/src/parsers/CommonTableParser.js.map +1 -1
  16. package/dist/esm/src/parsers/FromClauseParser.js +2 -2
  17. package/dist/esm/src/parsers/FromClauseParser.js.map +1 -1
  18. package/dist/esm/src/parsers/FullNameParser.js +13 -1
  19. package/dist/esm/src/parsers/FullNameParser.js.map +1 -1
  20. package/dist/esm/src/parsers/FunctionExpressionParser.js +37 -3
  21. package/dist/esm/src/parsers/FunctionExpressionParser.js.map +1 -1
  22. package/dist/esm/src/parsers/JoinClauseParser.d.ts +4 -0
  23. package/dist/esm/src/parsers/JoinClauseParser.js +54 -20
  24. package/dist/esm/src/parsers/JoinClauseParser.js.map +1 -1
  25. package/dist/esm/src/parsers/OrderByClauseParser.js +39 -8
  26. package/dist/esm/src/parsers/OrderByClauseParser.js.map +1 -1
  27. package/dist/esm/src/parsers/ParenExpressionParser.js +1 -1
  28. package/dist/esm/src/parsers/ParenExpressionParser.js.map +1 -1
  29. package/dist/esm/src/parsers/SelectClauseParser.d.ts +10 -0
  30. package/dist/esm/src/parsers/SelectClauseParser.js +124 -12
  31. package/dist/esm/src/parsers/SelectClauseParser.js.map +1 -1
  32. package/dist/esm/src/parsers/SelectQueryParser.d.ts +12 -0
  33. package/dist/esm/src/parsers/SelectQueryParser.js +277 -115
  34. package/dist/esm/src/parsers/SelectQueryParser.js.map +1 -1
  35. package/dist/esm/src/parsers/SourceAliasExpressionParser.js +15 -4
  36. package/dist/esm/src/parsers/SourceAliasExpressionParser.js.map +1 -1
  37. package/dist/esm/src/parsers/SourceParser.js +33 -2
  38. package/dist/esm/src/parsers/SourceParser.js.map +1 -1
  39. package/dist/esm/src/parsers/SqlPrintTokenParser.d.ts +62 -0
  40. package/dist/esm/src/parsers/SqlPrintTokenParser.js +700 -32
  41. package/dist/esm/src/parsers/SqlPrintTokenParser.js.map +1 -1
  42. package/dist/esm/src/parsers/SqlTokenizer.d.ts +1 -4
  43. package/dist/esm/src/parsers/SqlTokenizer.js +108 -52
  44. package/dist/esm/src/parsers/SqlTokenizer.js.map +1 -1
  45. package/dist/esm/src/parsers/ValueParser.d.ts +4 -0
  46. package/dist/esm/src/parsers/ValueParser.js +119 -20
  47. package/dist/esm/src/parsers/ValueParser.js.map +1 -1
  48. package/dist/esm/src/parsers/WithClauseParser.d.ts +4 -0
  49. package/dist/esm/src/parsers/WithClauseParser.js +64 -35
  50. package/dist/esm/src/parsers/WithClauseParser.js.map +1 -1
  51. package/dist/esm/src/tokenReaders/CommandTokenReader.js +9 -1
  52. package/dist/esm/src/tokenReaders/CommandTokenReader.js.map +1 -1
  53. package/dist/esm/src/transformers/CTEQueryDecomposer.d.ts +69 -0
  54. package/dist/esm/src/transformers/CTEQueryDecomposer.js +123 -0
  55. package/dist/esm/src/transformers/CTEQueryDecomposer.js.map +1 -1
  56. package/dist/esm/src/transformers/LinePrinter.d.ts +17 -2
  57. package/dist/esm/src/transformers/LinePrinter.js +39 -10
  58. package/dist/esm/src/transformers/LinePrinter.js.map +1 -1
  59. package/dist/esm/src/transformers/SqlFormatter.d.ts +44 -16
  60. package/dist/esm/src/transformers/SqlFormatter.js +2 -2
  61. package/dist/esm/src/transformers/SqlFormatter.js.map +1 -1
  62. package/dist/esm/src/transformers/SqlPrinter.d.ts +30 -20
  63. package/dist/esm/src/transformers/SqlPrinter.js +119 -25
  64. package/dist/esm/src/transformers/SqlPrinter.js.map +1 -1
  65. package/dist/esm/src/utils/CommentEditor.d.ts +12 -5
  66. package/dist/esm/src/utils/CommentEditor.js +67 -28
  67. package/dist/esm/src/utils/CommentEditor.js.map +1 -1
  68. package/dist/esm/src/utils/stringUtils.js +21 -9
  69. package/dist/esm/src/utils/stringUtils.js.map +1 -1
  70. package/dist/esm/tsconfig.browser.tsbuildinfo +1 -1
  71. package/dist/index.min.js +54 -50
  72. package/dist/index.min.js.map +3 -3
  73. package/dist/src/index.d.ts +1 -0
  74. package/dist/src/index.js.map +1 -1
  75. package/dist/src/models/Lexeme.d.ts +8 -0
  76. package/dist/src/models/SqlComponent.d.ts +20 -0
  77. package/dist/src/models/SqlComponent.js +46 -0
  78. package/dist/src/models/SqlComponent.js.map +1 -1
  79. package/dist/src/parsers/CommandExpressionParser.d.ts +9 -0
  80. package/dist/src/parsers/CommandExpressionParser.js +118 -14
  81. package/dist/src/parsers/CommandExpressionParser.js.map +1 -1
  82. package/dist/src/parsers/CommonTableParser.d.ts +8 -0
  83. package/dist/src/parsers/CommonTableParser.js +127 -35
  84. package/dist/src/parsers/CommonTableParser.js.map +1 -1
  85. package/dist/src/parsers/FromClauseParser.js +2 -2
  86. package/dist/src/parsers/FromClauseParser.js.map +1 -1
  87. package/dist/src/parsers/FullNameParser.js +13 -1
  88. package/dist/src/parsers/FullNameParser.js.map +1 -1
  89. package/dist/src/parsers/FunctionExpressionParser.js +37 -3
  90. package/dist/src/parsers/FunctionExpressionParser.js.map +1 -1
  91. package/dist/src/parsers/JoinClauseParser.d.ts +4 -0
  92. package/dist/src/parsers/JoinClauseParser.js +54 -20
  93. package/dist/src/parsers/JoinClauseParser.js.map +1 -1
  94. package/dist/src/parsers/OrderByClauseParser.js +39 -8
  95. package/dist/src/parsers/OrderByClauseParser.js.map +1 -1
  96. package/dist/src/parsers/ParenExpressionParser.js +1 -1
  97. package/dist/src/parsers/ParenExpressionParser.js.map +1 -1
  98. package/dist/src/parsers/SelectClauseParser.d.ts +10 -0
  99. package/dist/src/parsers/SelectClauseParser.js +124 -12
  100. package/dist/src/parsers/SelectClauseParser.js.map +1 -1
  101. package/dist/src/parsers/SelectQueryParser.d.ts +12 -0
  102. package/dist/src/parsers/SelectQueryParser.js +280 -115
  103. package/dist/src/parsers/SelectQueryParser.js.map +1 -1
  104. package/dist/src/parsers/SourceAliasExpressionParser.js +15 -4
  105. package/dist/src/parsers/SourceAliasExpressionParser.js.map +1 -1
  106. package/dist/src/parsers/SourceParser.js +33 -2
  107. package/dist/src/parsers/SourceParser.js.map +1 -1
  108. package/dist/src/parsers/SqlPrintTokenParser.d.ts +62 -0
  109. package/dist/src/parsers/SqlPrintTokenParser.js +700 -32
  110. package/dist/src/parsers/SqlPrintTokenParser.js.map +1 -1
  111. package/dist/src/parsers/SqlTokenizer.d.ts +1 -4
  112. package/dist/src/parsers/SqlTokenizer.js +108 -52
  113. package/dist/src/parsers/SqlTokenizer.js.map +1 -1
  114. package/dist/src/parsers/ValueParser.d.ts +4 -0
  115. package/dist/src/parsers/ValueParser.js +119 -20
  116. package/dist/src/parsers/ValueParser.js.map +1 -1
  117. package/dist/src/parsers/WithClauseParser.d.ts +4 -0
  118. package/dist/src/parsers/WithClauseParser.js +64 -35
  119. package/dist/src/parsers/WithClauseParser.js.map +1 -1
  120. package/dist/src/tokenReaders/CommandTokenReader.js +9 -1
  121. package/dist/src/tokenReaders/CommandTokenReader.js.map +1 -1
  122. package/dist/src/transformers/CTEQueryDecomposer.d.ts +69 -0
  123. package/dist/src/transformers/CTEQueryDecomposer.js +123 -0
  124. package/dist/src/transformers/CTEQueryDecomposer.js.map +1 -1
  125. package/dist/src/transformers/LinePrinter.d.ts +17 -2
  126. package/dist/src/transformers/LinePrinter.js +39 -10
  127. package/dist/src/transformers/LinePrinter.js.map +1 -1
  128. package/dist/src/transformers/SqlFormatter.d.ts +44 -16
  129. package/dist/src/transformers/SqlFormatter.js +13 -2
  130. package/dist/src/transformers/SqlFormatter.js.map +1 -1
  131. package/dist/src/transformers/SqlPrinter.d.ts +30 -20
  132. package/dist/src/transformers/SqlPrinter.js +119 -25
  133. package/dist/src/transformers/SqlPrinter.js.map +1 -1
  134. package/dist/src/utils/CommentEditor.d.ts +12 -5
  135. package/dist/src/utils/CommentEditor.js +67 -28
  136. package/dist/src/utils/CommentEditor.js.map +1 -1
  137. package/dist/src/utils/stringUtils.js +21 -9
  138. package/dist/src/utils/stringUtils.js.map +1 -1
  139. package/dist/tsconfig.tsbuildinfo +1 -1
  140. package/package.json +3 -3
@@ -24,6 +24,20 @@ export interface CTEDecomposerOptions extends SqlFormatterOptions {
24
24
  /** Whether to add comments to decomposed queries showing metadata and dependencies */
25
25
  addComments?: boolean;
26
26
  }
27
+ /**
28
+ * Result of CTE SQL restoration containing executable query and metadata
29
+ * @public
30
+ */
31
+ export interface CTERestorationResult {
32
+ /** Name of the CTE */
33
+ name: string;
34
+ /** Executable SQL query including all dependencies */
35
+ executableSql: string;
36
+ /** Array of CTE names that this CTE depends on (in execution order) */
37
+ dependencies: string[];
38
+ /** Any warnings encountered during restoration */
39
+ warnings: string[];
40
+ }
27
41
  /**
28
42
  * Decomposes complex CTEs into executable standalone queries
29
43
  *
@@ -31,6 +45,7 @@ export interface CTEDecomposerOptions extends SqlFormatterOptions {
31
45
  * for each CTE, making complex CTE debugging easier. It supports:
32
46
  * - Recursive CTE detection and handling
33
47
  * - Dependency analysis (dependencies and dependents for each CTE)
48
+ * - CTE SQL Restoration: Generate executable SQL for a specific CTE with its dependencies
34
49
  * - Configurable SQL formatter options (MySQL, PostgreSQL, custom styles)
35
50
  * - Optional comment generation showing CTE metadata and relationships
36
51
  * - Comprehensive error handling for circular dependencies
@@ -51,6 +66,10 @@ export interface CTEDecomposerOptions extends SqlFormatterOptions {
51
66
  *
52
67
  * const decomposed = decomposer.decompose(SelectQueryParser.parse(query));
53
68
  * // Returns array of DecomposedCTE objects with executable queries
69
+ *
70
+ * // Or restore a specific CTE for debugging:
71
+ * const restored = decomposer.extractCTE(SelectQueryParser.parse(query), 'active_users');
72
+ * console.log(restored.executableSql); // Standalone executable SQL with dependencies
54
73
  * ```
55
74
  *
56
75
  * @public
@@ -130,6 +149,42 @@ export declare class CTEQueryDecomposer {
130
149
  name: string;
131
150
  query: string;
132
151
  }>, rootQuery: string): DecomposedCTE[];
152
+ /**
153
+ * Restores executable SQL for a specific CTE by including all its dependencies
154
+ *
155
+ * This method provides a focused API for generating standalone, executable SQL
156
+ * for a specific Common Table Expression. It analyzes dependencies and includes
157
+ * all required CTEs in the correct execution order.
158
+ *
159
+ * Key features:
160
+ * - Automatic dependency resolution and ordering
161
+ * - Recursive CTE detection and handling
162
+ * - Error handling for circular dependencies
163
+ * - Optional dependency comments for debugging
164
+ *
165
+ * @param query - The query containing CTEs
166
+ * @param cteName - The name of the CTE to restore
167
+ * @returns CTERestorationResult with executable SQL and metadata
168
+ * @throws Error if CTE is not found or circular dependencies exist
169
+ *
170
+ * @example
171
+ * ```typescript
172
+ * const query = SelectQueryParser.parse(`
173
+ * with users_data as (select * from users),
174
+ * active_users as (select * from users_data where active = true),
175
+ * premium_users as (select * from active_users where premium = true)
176
+ * select * from premium_users
177
+ * `);
178
+ *
179
+ * // Get executable SQL for 'premium_users' CTE
180
+ * const result = decomposer.extractCTE(query, 'premium_users');
181
+ * // result.executableSql will contain:
182
+ * // with users_data as (select * from users),
183
+ * // active_users as (select * from users_data where active = true)
184
+ * // select * from active_users where premium = true
185
+ * ```
186
+ */
187
+ extractCTE(query: SimpleSelectQuery, cteName: string): CTERestorationResult;
133
188
  /**
134
189
  * Flattens nested WITH clauses by extracting sub-CTEs from edited CTEs
135
190
  * @param editedCTEs Array of edited CTEs that may contain nested WITH clauses
@@ -212,6 +267,20 @@ export declare class CTEQueryDecomposer {
212
267
  * @returns Query with text comments prepended
213
268
  */
214
269
  private addTextCommentsToQuery;
270
+ /**
271
+ * Adds restoration comments to the executable SQL if enabled
272
+ * @param sql The executable SQL
273
+ * @param targetNode The target CTE node
274
+ * @param warnings Any warnings to include
275
+ * @returns SQL with comments added
276
+ */
277
+ private addRestorationComments;
278
+ /**
279
+ * Gets all CTE names from an array of CTEs
280
+ * @param ctes Array of CommonTable objects
281
+ * @returns Array of CTE names
282
+ */
283
+ private getAllCTENames;
215
284
  /**
216
285
  * Extracts the name from a CommonTable
217
286
  */
@@ -12,6 +12,7 @@ import { CTEComposer } from "./CTEComposer";
12
12
  * for each CTE, making complex CTE debugging easier. It supports:
13
13
  * - Recursive CTE detection and handling
14
14
  * - Dependency analysis (dependencies and dependents for each CTE)
15
+ * - CTE SQL Restoration: Generate executable SQL for a specific CTE with its dependencies
15
16
  * - Configurable SQL formatter options (MySQL, PostgreSQL, custom styles)
16
17
  * - Optional comment generation showing CTE metadata and relationships
17
18
  * - Comprehensive error handling for circular dependencies
@@ -32,6 +33,10 @@ import { CTEComposer } from "./CTEComposer";
32
33
  *
33
34
  * const decomposed = decomposer.decompose(SelectQueryParser.parse(query));
34
35
  * // Returns array of DecomposedCTE objects with executable queries
36
+ *
37
+ * // Or restore a specific CTE for debugging:
38
+ * const restored = decomposer.extractCTE(SelectQueryParser.parse(query), 'active_users');
39
+ * console.log(restored.executableSql); // Standalone executable SQL with dependencies
35
40
  * ```
36
41
  *
37
42
  * @public
@@ -132,6 +137,93 @@ export class CTEQueryDecomposer {
132
137
  // Re-decompose the synchronized query
133
138
  return this.decompose(parsedQuery);
134
139
  }
140
+ /**
141
+ * Restores executable SQL for a specific CTE by including all its dependencies
142
+ *
143
+ * This method provides a focused API for generating standalone, executable SQL
144
+ * for a specific Common Table Expression. It analyzes dependencies and includes
145
+ * all required CTEs in the correct execution order.
146
+ *
147
+ * Key features:
148
+ * - Automatic dependency resolution and ordering
149
+ * - Recursive CTE detection and handling
150
+ * - Error handling for circular dependencies
151
+ * - Optional dependency comments for debugging
152
+ *
153
+ * @param query - The query containing CTEs
154
+ * @param cteName - The name of the CTE to restore
155
+ * @returns CTERestorationResult with executable SQL and metadata
156
+ * @throws Error if CTE is not found or circular dependencies exist
157
+ *
158
+ * @example
159
+ * ```typescript
160
+ * const query = SelectQueryParser.parse(`
161
+ * with users_data as (select * from users),
162
+ * active_users as (select * from users_data where active = true),
163
+ * premium_users as (select * from active_users where premium = true)
164
+ * select * from premium_users
165
+ * `);
166
+ *
167
+ * // Get executable SQL for 'premium_users' CTE
168
+ * const result = decomposer.extractCTE(query, 'premium_users');
169
+ * // result.executableSql will contain:
170
+ * // with users_data as (select * from users),
171
+ * // active_users as (select * from users_data where active = true)
172
+ * // select * from active_users where premium = true
173
+ * ```
174
+ */
175
+ extractCTE(query, cteName) {
176
+ const warnings = [];
177
+ // Validate query contains CTEs
178
+ const allCTEs = this.cteCollector.collect(query);
179
+ if (allCTEs.length === 0) {
180
+ throw new Error("Query does not contain any CTEs");
181
+ }
182
+ // Find target CTE
183
+ const targetCTE = allCTEs.find(cte => this.getCTEName(cte) === cteName);
184
+ if (!targetCTE) {
185
+ throw new Error(`CTE not found in query: ${cteName}`);
186
+ }
187
+ // Check if this is a recursive CTE
188
+ const recursiveCTEs = this.findRecursiveCTEs(query, allCTEs);
189
+ const isRecursive = recursiveCTEs.includes(cteName);
190
+ if (isRecursive) {
191
+ warnings.push("Recursive CTE restoration requires the full query context");
192
+ // For recursive CTEs, return the entire query as dependencies are complex
193
+ return {
194
+ name: cteName,
195
+ executableSql: this.formatter.format(query).formattedSql,
196
+ dependencies: this.getAllCTENames(allCTEs).filter(name => name !== cteName),
197
+ warnings
198
+ };
199
+ }
200
+ // Analyze dependencies
201
+ const dependencyGraph = this.dependencyAnalyzer.analyzeDependencies(query);
202
+ // Check for circular dependencies
203
+ if (this.dependencyAnalyzer.hasCircularDependency()) {
204
+ throw new Error("Circular dependency detected in CTEs");
205
+ }
206
+ // Find target node in dependency graph
207
+ const targetNode = dependencyGraph.nodes.find(node => node.name === cteName);
208
+ if (!targetNode || !targetNode.cte) {
209
+ throw new Error(`CTE not found in dependency graph: ${cteName}`);
210
+ }
211
+ // Build executable query using existing private method
212
+ const executableSql = this.buildExecutableQuery(targetNode, dependencyGraph.nodes);
213
+ // Collect all required dependencies in correct order
214
+ const requiredCTEs = this.collectRequiredCTEs(targetNode, dependencyGraph.nodes);
215
+ const allDependencies = requiredCTEs.map(node => node.name);
216
+ // Add comments if requested
217
+ const finalSql = this.options.addComments
218
+ ? this.addRestorationComments(executableSql, targetNode, warnings)
219
+ : executableSql;
220
+ return {
221
+ name: cteName,
222
+ executableSql: finalSql,
223
+ dependencies: allDependencies,
224
+ warnings
225
+ };
226
+ }
135
227
  /**
136
228
  * Flattens nested WITH clauses by extracting sub-CTEs from edited CTEs
137
229
  * @param editedCTEs Array of edited CTEs that may contain nested WITH clauses
@@ -435,6 +527,37 @@ export class CTEQueryDecomposer {
435
527
  const commentLines = comments.map(comment => `-- ${comment}`).join('\n');
436
528
  return `${commentLines}\n${query}`;
437
529
  }
530
+ /**
531
+ * Adds restoration comments to the executable SQL if enabled
532
+ * @param sql The executable SQL
533
+ * @param targetNode The target CTE node
534
+ * @param warnings Any warnings to include
535
+ * @returns SQL with comments added
536
+ */
537
+ addRestorationComments(sql, targetNode, warnings) {
538
+ const comments = [];
539
+ comments.push("-- CTE Restoration: " + targetNode.name);
540
+ if (targetNode.dependencies.length > 0) {
541
+ comments.push("-- Dependencies: " + targetNode.dependencies.join(", "));
542
+ }
543
+ else {
544
+ comments.push("-- Dependencies: none");
545
+ }
546
+ if (warnings.length > 0) {
547
+ comments.push("-- Warnings: " + warnings.join(", "));
548
+ }
549
+ comments.push("-- Generated by CTEQueryDecomposer.extractCTE()");
550
+ comments.push("");
551
+ return comments.join("\n") + sql;
552
+ }
553
+ /**
554
+ * Gets all CTE names from an array of CTEs
555
+ * @param ctes Array of CommonTable objects
556
+ * @returns Array of CTE names
557
+ */
558
+ getAllCTENames(ctes) {
559
+ return ctes.map(cte => this.getCTEName(cte));
560
+ }
438
561
  /**
439
562
  * Extracts the name from a CommonTable
440
563
  */
@@ -1 +1 @@
1
- {"version":3,"file":"CTEQueryDecomposer.js","sourceRoot":"","sources":["../../../../src/transformers/CTEQueryDecomposer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"CTEQueryDecomposer.js","sourceRoot":"","sources":["../../../../src/transformers/CTEQueryDecomposer.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  export type NewlineOption = ' ' | '\n' | '\r\n';
2
- export type IndentCharOption = '' | ' ' | '\t';
2
+ export type IndentCharOption = string;
3
+ export type CommaBreakStyle = 'none' | 'before' | 'after';
3
4
  /**
4
5
  * SqlPrintHelper provides utility methods for SQL pretty printing.
5
6
  */
@@ -7,13 +8,15 @@ export declare class LinePrinter {
7
8
  indentChar: IndentCharOption;
8
9
  indentSize: number;
9
10
  newline: NewlineOption;
11
+ commaBreak: CommaBreakStyle;
10
12
  lines: PrintLine[];
11
13
  /**
12
14
  * @param indentChar Character used for indentation (default: ' ') // Updated comment to reflect options
13
15
  * @param indentSize Number of indentChar per level (default: 0)
14
16
  * @param newline Newline string (default: '\r\n') // Changed type and default value
17
+ * @param commaBreak Comma break style (default: 'none')
15
18
  */
16
- constructor(indentChar?: IndentCharOption, indentSize?: number, newline?: NewlineOption);
19
+ constructor(indentChar?: IndentCharOption, indentSize?: number, newline?: NewlineOption, commaBreak?: CommaBreakStyle);
17
20
  print(): string;
18
21
  /**
19
22
  * Returns the indent string for a given level.
@@ -32,7 +35,19 @@ export declare class LinePrinter {
32
35
  * @param text Text to append
33
36
  */
34
37
  appendText(text: string): void;
38
+ /**
39
+ * Cleans up the current line for comma formatting.
40
+ * For 'after' and 'none' comma styles, removes empty line when a comma is being added.
41
+ * @param text The text being processed
42
+ * @returns true if cleanup was performed, false otherwise
43
+ */
44
+ cleanupLine(text: string): boolean;
35
45
  getCurrentLine(): PrintLine;
46
+ /**
47
+ * Checks if the current line is empty (has no text content)
48
+ * @returns true if current line is empty, false otherwise
49
+ */
50
+ isCurrentLineEmpty(): boolean;
36
51
  }
37
52
  export declare class PrintLine {
38
53
  level: number;
@@ -6,11 +6,13 @@ export class LinePrinter {
6
6
  * @param indentChar Character used for indentation (default: ' ') // Updated comment to reflect options
7
7
  * @param indentSize Number of indentChar per level (default: 0)
8
8
  * @param newline Newline string (default: '\r\n') // Changed type and default value
9
+ * @param commaBreak Comma break style (default: 'none')
9
10
  */
10
- constructor(indentChar = ' ', indentSize = 0, newline = '\r\n') {
11
+ constructor(indentChar = ' ', indentSize = 0, newline = '\r\n', commaBreak = 'none') {
11
12
  this.indentChar = indentChar;
12
13
  this.indentSize = indentSize;
13
14
  this.newline = newline;
15
+ this.commaBreak = commaBreak;
14
16
  this.lines = [];
15
17
  this.appendNewline(0);
16
18
  }
@@ -51,17 +53,33 @@ export class LinePrinter {
51
53
  * @param text Text to append
52
54
  */
53
55
  appendText(text) {
54
- if (this.lines.length > 0) {
55
- const workingIndex = this.lines.length - 1;
56
- const workLine = this.lines[workingIndex];
57
- // Leading space is not needed
58
- if (!(text === ' ' && workLine.text === '')) {
59
- workLine.text += text;
60
- }
56
+ // Handle special comma cleanup first
57
+ if (this.cleanupLine(text)) {
58
+ // If cleanup was performed, add comma to previous line
59
+ const previousLine = this.lines[this.lines.length - 1];
60
+ previousLine.text = previousLine.text.trimEnd() + text;
61
+ return;
61
62
  }
62
- else {
63
- throw new Error('No tokens to append to.');
63
+ const workLine = this.getCurrentLine();
64
+ // Leading space is not needed
65
+ if (!(text === ' ' && workLine.text === '')) {
66
+ workLine.text += text;
67
+ }
68
+ }
69
+ /**
70
+ * Cleans up the current line for comma formatting.
71
+ * For 'after' and 'none' comma styles, removes empty line when a comma is being added.
72
+ * @param text The text being processed
73
+ * @returns true if cleanup was performed, false otherwise
74
+ */
75
+ cleanupLine(text) {
76
+ const workLine = this.getCurrentLine();
77
+ if (text === ',' && workLine.text.trim() === '' && this.lines.length > 1 && (this.commaBreak === 'after' || this.commaBreak === 'none')) {
78
+ // Remove current empty line
79
+ this.lines.pop(); // Safe: we checked lines.length > 1
80
+ return true; // Cleanup performed
64
81
  }
82
+ return false; // No cleanup needed
65
83
  }
66
84
  getCurrentLine() {
67
85
  if (this.lines.length > 0) {
@@ -71,6 +89,17 @@ export class LinePrinter {
71
89
  throw new Error('No tokens to get current line from.');
72
90
  }
73
91
  }
92
+ /**
93
+ * Checks if the current line is empty (has no text content)
94
+ * @returns true if current line is empty, false otherwise
95
+ */
96
+ isCurrentLineEmpty() {
97
+ if (this.lines.length > 0) {
98
+ const currentLine = this.lines[this.lines.length - 1];
99
+ return currentLine.text.trim() === '';
100
+ }
101
+ return true;
102
+ }
74
103
  }
75
104
  export class PrintLine {
76
105
  constructor(level, text) {
@@ -1 +1 @@
1
- {"version":3,"file":"LinePrinter.js","sourceRoot":"","sources":["../../../../src/transformers/LinePrinter.ts"],"names":[],"mappings":"AAMA;;GAEG;AACH,MAAM,OAAO,WAAW;IAKpB;;;;OAIG;IACH,YAAY,aAA+B,GAAG,EAAE,aAAqB,CAAC,EAAE,UAAyB,MAAM;QACnG,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;QAChB,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;IAC1B,CAAC;IAEM,KAAK;QACR,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YAC5B,IAAI,IAAI,CAAC,IAAI,KAAK,EAAE,EAAE,CAAC;gBACnB,yBAAyB;gBACzB,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC;YAClD,CAAC;QACL,CAAC;QACD,OAAO,MAAM,CAAC,OAAO,EAAE,CAAC;IAC5B,CAAC;IAED;;;OAGG;IACK,MAAM,CAAC,KAAa;QACxB,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,CAAC;IAC3D,CAAC;IAED;;;;OAIG;IACH,aAAa,CAAC,KAAa;QACvB,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxB,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YAClD,IAAI,OAAO,CAAC,IAAI,KAAK,EAAE,EAAE,CAAC;gBACtB,OAAO,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC;YACzD,CAAC;QACL,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,SAAS,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC;IAC9C,CAAC;IAED;;;;OAIG;IACH,UAAU,CAAC,IAAY;QACnB,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxB,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;YAC3C,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAA;YACzC,8BAA8B;YAC9B,IAAI,CAAC,CAAC,IAAI,KAAK,GAAG,IAAI,QAAQ,CAAC,IAAI,KAAK,EAAE,CAAC,EAAE,CAAC;gBAC1C,QAAQ,CAAC,IAAI,IAAI,IAAI,CAAC;YAC1B,CAAC;QACL,CAAC;aAAM,CAAC;YACJ,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;QAC/C,CAAC;IACL,CAAC;IAED,cAAc;QACV,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxB,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAC7C,CAAC;aAAM,CAAC;YACJ,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;QAC3D,CAAC;IACL,CAAC;CACJ;AAED,MAAM,OAAO,SAAS;IAIlB,YAAY,KAAa,EAAE,IAAY;QACnC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACrB,CAAC;CACJ"}
1
+ {"version":3,"file":"LinePrinter.js","sourceRoot":"","sources":["../../../../src/transformers/LinePrinter.ts"],"names":[],"mappings":"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"}
@@ -11,24 +11,16 @@ export type PresetName = (typeof VALID_PRESETS)[number];
11
11
  */
12
12
  export type WithClauseStyle = 'standard' | 'cte-oneline' | 'full-oneline';
13
13
  /**
14
- * Options for SqlFormatter configuration
14
+ * CommentStyle determines how comments are formatted in the output.
15
+ * - 'block': Keep original comment style (default)
16
+ * - 'smart': Convert single-line to --, multi-line to block comments, optimize for comma break styles
17
+ */
18
+ export type CommentStyle = 'block' | 'smart';
19
+ /**
20
+ * Base formatting options shared between SqlFormatter and SqlPrinter
15
21
  * @public
16
22
  */
17
- export interface SqlFormatterOptions {
18
- /** Database preset for formatting style ('mysql', 'postgres', 'sqlserver', 'sqlite') */
19
- preset?: PresetName;
20
- /** Custom identifier escape characters (e.g., {start: '"', end: '"'} for PostgreSQL) */
21
- identifierEscape?: {
22
- start: string;
23
- end: string;
24
- };
25
- /** Parameter symbol configuration for SQL parameters */
26
- parameterSymbol?: string | {
27
- start: string;
28
- end: string;
29
- };
30
- /** Style for parameter formatting */
31
- parameterStyle?: 'anonymous' | 'indexed' | 'named';
23
+ export interface BaseFormattingOptions {
32
24
  /** Number of spaces for indentation */
33
25
  indentSize?: number;
34
26
  /** Character to use for indentation ('space' or 'tab') */
@@ -39,14 +31,50 @@ export interface SqlFormatterOptions {
39
31
  keywordCase?: 'none' | 'upper' | 'lower';
40
32
  /** Style for comma line breaks */
41
33
  commaBreak?: CommaBreakStyle;
34
+ /** Style for comma line breaks inside WITH clause definitions */
35
+ cteCommaBreak?: CommaBreakStyle;
42
36
  /** Style for AND/OR line breaks */
43
37
  andBreak?: AndBreakStyle;
44
38
  /** Whether to export comments in formatted output */
45
39
  exportComment?: boolean;
46
40
  /** Whether to only export comments from clause-level keywords */
47
41
  strictCommentPlacement?: boolean;
42
+ /** Comment formatting style */
43
+ commentStyle?: CommentStyle;
48
44
  /** Formatting style for WITH clauses */
49
45
  withClauseStyle?: WithClauseStyle;
46
+ /** Keep parentheses content on one line regardless of AND/OR break settings */
47
+ parenthesesOneLine?: boolean;
48
+ /** Keep BETWEEN expressions on one line regardless of AND break settings */
49
+ betweenOneLine?: boolean;
50
+ /** Keep VALUES clause on one line regardless of comma break settings */
51
+ valuesOneLine?: boolean;
52
+ /** Keep JOIN conditions on one line regardless of AND/OR break settings */
53
+ joinOneLine?: boolean;
54
+ /** Keep CASE expressions on one line regardless of formatting settings */
55
+ caseOneLine?: boolean;
56
+ /** Keep subqueries (inline queries) on one line regardless of formatting settings */
57
+ subqueryOneLine?: boolean;
58
+ }
59
+ /**
60
+ * Options for SqlFormatter configuration
61
+ * @public
62
+ */
63
+ export interface SqlFormatterOptions extends BaseFormattingOptions {
64
+ /** Database preset for formatting style ('mysql', 'postgres', 'sqlserver', 'sqlite') */
65
+ preset?: PresetName;
66
+ /** Custom identifier escape characters (e.g., {start: '"', end: '"'} for PostgreSQL) */
67
+ identifierEscape?: {
68
+ start: string;
69
+ end: string;
70
+ };
71
+ /** Parameter symbol configuration for SQL parameters */
72
+ parameterSymbol?: string | {
73
+ start: string;
74
+ end: string;
75
+ };
76
+ /** Style for parameter formatting */
77
+ parameterStyle?: 'anonymous' | 'indexed' | 'named';
50
78
  }
51
79
  /**
52
80
  * SqlFormatter class combines parsing and printing of SQL queries into a single interface.
@@ -13,8 +13,8 @@ export class SqlFormatter {
13
13
  throw new Error(`Invalid preset: ${options.preset}`); // Throw error for invalid preset
14
14
  }
15
15
  const parserOptions = Object.assign(Object.assign({}, presetConfig), { identifierEscape: (_a = options.identifierEscape) !== null && _a !== void 0 ? _a : 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 });
16
- this.parser = new SqlPrintTokenParser(parserOptions);
17
- this.printer = new SqlPrinter(options);
16
+ this.parser = new SqlPrintTokenParser(Object.assign(Object.assign({}, parserOptions), { commentStyle: options.commentStyle }));
17
+ 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 }));
18
18
  } /**
19
19
  * Formats a SQL query string with the given parameters.
20
20
  * @param sqlText The SQL query string to format.
@@ -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,EAAkC,MAAM,cAAc,CAAC;AAK1E,4CAA4C;AAC5C,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,QAAQ,CAAU,CAAC;AA4CnF;;GAEG;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,MAAM,aAAa,mCACZ,YAAY,KACf,gBAAgB,EAAE,MAAA,OAAO,CAAC,gBAAgB,mCAAI,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,CAAC,aAAa,CAAC,CAAC;QACrD,IAAI,CAAC,OAAO,GAAG,IAAI,UAAU,CAAC,OAAO,CAAC,CAAC;IAC3C,CAAC,CAAI;;;;;OAKF;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"}
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,EAAkC,MAAM,cAAc,CAAC;AAK1E,4CAA4C;AAC5C,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,QAAQ,CAAU,CAAC;AA0EnF;;GAEG;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,MAAM,aAAa,mCACZ,YAAY,KACf,gBAAgB,EAAE,MAAA,OAAO,CAAC,gBAAgB,mCAAI,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,IAC1C,CAAC;IACP,CAAC,CAAI;;;;;OAKF;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"}
@@ -1,6 +1,6 @@
1
1
  import { SqlPrintToken, SqlPrintTokenContainerType } from "../models/SqlPrintToken";
2
2
  import { IndentCharOption, NewlineOption } from "./LinePrinter";
3
- import { WithClauseStyle } from "./SqlFormatter";
3
+ import { BaseFormattingOptions, WithClauseStyle, CommentStyle } from "./SqlFormatter";
4
4
  /**
5
5
  * CommaBreakStyle determines how commas are placed in formatted SQL output.
6
6
  * - 'none': No line break for commas
@@ -18,27 +18,9 @@ export type AndBreakStyle = 'none' | 'before' | 'after';
18
18
  /**
19
19
  * Options for configuring SqlPrinter formatting behavior
20
20
  */
21
- export interface SqlPrinterOptions {
22
- /** Indent character (e.g., ' ' or '\t') */
23
- indentChar?: IndentCharOption;
24
- /** Indent size (number of indentChar repetitions per level) */
25
- indentSize?: number;
26
- /** Newline character (e.g., '\n' or '\r\n') */
27
- newline?: NewlineOption;
28
- /** Comma break style: 'none', 'before', or 'after' */
29
- commaBreak?: CommaBreakStyle;
30
- /** AND break style: 'none', 'before', or 'after' */
31
- andBreak?: AndBreakStyle;
32
- /** Keyword case style: 'none', 'upper' | 'lower' */
33
- keywordCase?: 'none' | 'upper' | 'lower';
34
- /** Whether to export comments in the output (default: false for compatibility) */
35
- exportComment?: boolean;
36
- /** Whether to use strict comment placement (only clause-level comments, default: false) */
37
- strictCommentPlacement?: boolean;
21
+ export interface SqlPrinterOptions extends BaseFormattingOptions {
38
22
  /** Container types that should increase indentation level */
39
23
  indentIncrementContainerTypes?: SqlPrintTokenContainerType[];
40
- /** WITH clause formatting style (default: 'standard') */
41
- withClauseStyle?: WithClauseStyle;
42
24
  }
43
25
  /**
44
26
  * SqlPrinter formats a SqlPrintToken tree into a SQL string with flexible style options.
@@ -69,6 +51,8 @@ export declare class SqlPrinter {
69
51
  newline: NewlineOption;
70
52
  /** Comma break style: 'none', 'before', or 'after' */
71
53
  commaBreak: CommaBreakStyle;
54
+ /** WITH clause comma break style (defaults to commaBreak) */
55
+ cteCommaBreak: CommaBreakStyle;
72
56
  /** AND break style: 'none', 'before', or 'after' */
73
57
  andBreak: AndBreakStyle;
74
58
  /** Keyword case style: 'none', 'upper' | 'lower' */
@@ -79,10 +63,24 @@ export declare class SqlPrinter {
79
63
  strictCommentPlacement: boolean;
80
64
  /** WITH clause formatting style (default: 'standard') */
81
65
  withClauseStyle: WithClauseStyle;
66
+ /** Comment formatting style (default: 'block') */
67
+ commentStyle: CommentStyle;
82
68
  private linePrinter;
83
69
  private indentIncrementContainers;
84
70
  /** Track whether we are currently inside a WITH clause for full-oneline formatting */
85
71
  private insideWithClause;
72
+ /** Whether to keep parentheses content on one line */
73
+ private parenthesesOneLine;
74
+ /** Whether to keep BETWEEN expressions on one line */
75
+ private betweenOneLine;
76
+ /** Whether to keep VALUES clause on one line */
77
+ private valuesOneLine;
78
+ /** Whether to keep JOIN conditions on one line */
79
+ private joinOneLine;
80
+ /** Whether to keep CASE expressions on one line */
81
+ private caseOneLine;
82
+ /** Whether to keep subqueries on one line */
83
+ private subqueryOneLine;
86
84
  /**
87
85
  * @param options Optional style settings for pretty printing
88
86
  */
@@ -98,6 +96,7 @@ export declare class SqlPrinter {
98
96
  */
99
97
  print(token: SqlPrintToken, level?: number): string;
100
98
  private appendToken;
99
+ private isCaseContext;
101
100
  /**
102
101
  * Determines if a token should be skipped during printing.
103
102
  * Tokens are skipped if they have no content and no inner tokens,
@@ -145,6 +144,17 @@ export declare class SqlPrinter {
145
144
  * Creates a SqlPrinter instance configured for CTE oneline formatting.
146
145
  */
147
146
  private createCteOnelinePrinter;
147
+ /**
148
+ * Handles tokens with oneline formatting (parentheses, BETWEEN, VALUES, JOIN, CASE, subqueries).
149
+ * Creates a unified oneline printer that formats everything as one line regardless of content type.
150
+ */
151
+ private handleOnelineToken;
152
+ /**
153
+ * Creates a unified SqlPrinter instance configured for oneline formatting.
154
+ * Works for all oneline options: parentheses, BETWEEN, VALUES, JOIN, CASE, subqueries.
155
+ * Sets all oneline options to false to prevent recursion and uses newline=' ' for actual oneline effect.
156
+ */
157
+ private createOnelinePrinter;
148
158
  /**
149
159
  * Removes duplicate consecutive spaces while preserving single spaces.
150
160
  * Simple and safe space normalization for CTE oneline mode.