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
  */
@@ -15,6 +15,7 @@ const CTEComposer_1 = require("./CTEComposer");
15
15
  * for each CTE, making complex CTE debugging easier. It supports:
16
16
  * - Recursive CTE detection and handling
17
17
  * - Dependency analysis (dependencies and dependents for each CTE)
18
+ * - CTE SQL Restoration: Generate executable SQL for a specific CTE with its dependencies
18
19
  * - Configurable SQL formatter options (MySQL, PostgreSQL, custom styles)
19
20
  * - Optional comment generation showing CTE metadata and relationships
20
21
  * - Comprehensive error handling for circular dependencies
@@ -35,6 +36,10 @@ const CTEComposer_1 = require("./CTEComposer");
35
36
  *
36
37
  * const decomposed = decomposer.decompose(SelectQueryParser.parse(query));
37
38
  * // Returns array of DecomposedCTE objects with executable queries
39
+ *
40
+ * // Or restore a specific CTE for debugging:
41
+ * const restored = decomposer.extractCTE(SelectQueryParser.parse(query), 'active_users');
42
+ * console.log(restored.executableSql); // Standalone executable SQL with dependencies
38
43
  * ```
39
44
  *
40
45
  * @public
@@ -137,6 +142,93 @@ class CTEQueryDecomposer {
137
142
  // Re-decompose the synchronized query
138
143
  return this.decompose(parsedQuery);
139
144
  }
145
+ /**
146
+ * Restores executable SQL for a specific CTE by including all its dependencies
147
+ *
148
+ * This method provides a focused API for generating standalone, executable SQL
149
+ * for a specific Common Table Expression. It analyzes dependencies and includes
150
+ * all required CTEs in the correct execution order.
151
+ *
152
+ * Key features:
153
+ * - Automatic dependency resolution and ordering
154
+ * - Recursive CTE detection and handling
155
+ * - Error handling for circular dependencies
156
+ * - Optional dependency comments for debugging
157
+ *
158
+ * @param query - The query containing CTEs
159
+ * @param cteName - The name of the CTE to restore
160
+ * @returns CTERestorationResult with executable SQL and metadata
161
+ * @throws Error if CTE is not found or circular dependencies exist
162
+ *
163
+ * @example
164
+ * ```typescript
165
+ * const query = SelectQueryParser.parse(`
166
+ * with users_data as (select * from users),
167
+ * active_users as (select * from users_data where active = true),
168
+ * premium_users as (select * from active_users where premium = true)
169
+ * select * from premium_users
170
+ * `);
171
+ *
172
+ * // Get executable SQL for 'premium_users' CTE
173
+ * const result = decomposer.extractCTE(query, 'premium_users');
174
+ * // result.executableSql will contain:
175
+ * // with users_data as (select * from users),
176
+ * // active_users as (select * from users_data where active = true)
177
+ * // select * from active_users where premium = true
178
+ * ```
179
+ */
180
+ extractCTE(query, cteName) {
181
+ const warnings = [];
182
+ // Validate query contains CTEs
183
+ const allCTEs = this.cteCollector.collect(query);
184
+ if (allCTEs.length === 0) {
185
+ throw new Error("Query does not contain any CTEs");
186
+ }
187
+ // Find target CTE
188
+ const targetCTE = allCTEs.find(cte => this.getCTEName(cte) === cteName);
189
+ if (!targetCTE) {
190
+ throw new Error(`CTE not found in query: ${cteName}`);
191
+ }
192
+ // Check if this is a recursive CTE
193
+ const recursiveCTEs = this.findRecursiveCTEs(query, allCTEs);
194
+ const isRecursive = recursiveCTEs.includes(cteName);
195
+ if (isRecursive) {
196
+ warnings.push("Recursive CTE restoration requires the full query context");
197
+ // For recursive CTEs, return the entire query as dependencies are complex
198
+ return {
199
+ name: cteName,
200
+ executableSql: this.formatter.format(query).formattedSql,
201
+ dependencies: this.getAllCTENames(allCTEs).filter(name => name !== cteName),
202
+ warnings
203
+ };
204
+ }
205
+ // Analyze dependencies
206
+ const dependencyGraph = this.dependencyAnalyzer.analyzeDependencies(query);
207
+ // Check for circular dependencies
208
+ if (this.dependencyAnalyzer.hasCircularDependency()) {
209
+ throw new Error("Circular dependency detected in CTEs");
210
+ }
211
+ // Find target node in dependency graph
212
+ const targetNode = dependencyGraph.nodes.find(node => node.name === cteName);
213
+ if (!targetNode || !targetNode.cte) {
214
+ throw new Error(`CTE not found in dependency graph: ${cteName}`);
215
+ }
216
+ // Build executable query using existing private method
217
+ const executableSql = this.buildExecutableQuery(targetNode, dependencyGraph.nodes);
218
+ // Collect all required dependencies in correct order
219
+ const requiredCTEs = this.collectRequiredCTEs(targetNode, dependencyGraph.nodes);
220
+ const allDependencies = requiredCTEs.map(node => node.name);
221
+ // Add comments if requested
222
+ const finalSql = this.options.addComments
223
+ ? this.addRestorationComments(executableSql, targetNode, warnings)
224
+ : executableSql;
225
+ return {
226
+ name: cteName,
227
+ executableSql: finalSql,
228
+ dependencies: allDependencies,
229
+ warnings
230
+ };
231
+ }
140
232
  /**
141
233
  * Flattens nested WITH clauses by extracting sub-CTEs from edited CTEs
142
234
  * @param editedCTEs Array of edited CTEs that may contain nested WITH clauses
@@ -443,6 +535,37 @@ class CTEQueryDecomposer {
443
535
  const commentLines = comments.map(comment => `-- ${comment}`).join('\n');
444
536
  return `${commentLines}\n${query}`;
445
537
  }
538
+ /**
539
+ * Adds restoration comments to the executable SQL if enabled
540
+ * @param sql The executable SQL
541
+ * @param targetNode The target CTE node
542
+ * @param warnings Any warnings to include
543
+ * @returns SQL with comments added
544
+ */
545
+ addRestorationComments(sql, targetNode, warnings) {
546
+ const comments = [];
547
+ comments.push("-- CTE Restoration: " + targetNode.name);
548
+ if (targetNode.dependencies.length > 0) {
549
+ comments.push("-- Dependencies: " + targetNode.dependencies.join(", "));
550
+ }
551
+ else {
552
+ comments.push("-- Dependencies: none");
553
+ }
554
+ if (warnings.length > 0) {
555
+ comments.push("-- Warnings: " + warnings.join(", "));
556
+ }
557
+ comments.push("-- Generated by CTEQueryDecomposer.extractCTE()");
558
+ comments.push("");
559
+ return comments.join("\n") + sql;
560
+ }
561
+ /**
562
+ * Gets all CTE names from an array of CTEs
563
+ * @param ctes Array of CommonTable objects
564
+ * @returns Array of CTE names
565
+ */
566
+ getAllCTENames(ctes) {
567
+ return ctes.map(cte => this.getCTEName(cte));
568
+ }
446
569
  /**
447
570
  * Extracts the name from a CommonTable
448
571
  */
@@ -1 +1 @@
1
- {"version":3,"file":"CTEQueryDecomposer.js","sourceRoot":"","sources":["../../../src/transformers/CTEQueryDecomposer.ts"],"names":[],"mappings":";;;AACA,mEAAgE;AAChE,mEAAyE;AACzE,iDAA8C;AAC9C,iDAAmE;AACnE,0DAAuD;AACvD,oEAAiE;AACjE,+CAA4C;AA4B5C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,MAAa,kBAAkB;IAoB3B;;;OAGG;IACH,YAAY,UAAgC,EAAE;QAC1C,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,kBAAkB,GAAG,IAAI,6CAAqB,EAAE,CAAC;QACtD,IAAI,CAAC,YAAY,GAAG,IAAI,2BAAY,EAAE,CAAC;QACvC,IAAI,CAAC,SAAS,GAAG,IAAI,2BAAY,CAAC,OAAO,CAAC,CAAC;IAC/C,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA6BG;IACI,SAAS,CAAC,KAAwB;QACrC,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAC9C,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACpB,OAAO,EAAE,CAAC;QACd,CAAC;QAED,MAAM,aAAa,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAC1D,MAAM,eAAe,GAAG,IAAI,CAAC,kBAAkB,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;QAE3E,IAAI,CAAC,4BAA4B,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAE5D,OAAO,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,eAAe,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;IAC7E,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;OA2BG;IACI,WAAW,CAAC,UAAgD,EAAE,SAAiB;QAClF,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1B,OAAO,EAAE,CAAC;QACd,CAAC;QAED,sEAAsE;QACtE,MAAM,aAAa,GAAG,IAAI,CAAC,wBAAwB,CAAC,UAAU,CAAC,CAAC;QAEhE,uEAAuE;QACvE,MAAM,eAAe,GAAG;YACpB,GAAG,IAAI,CAAC,OAAO;YACf,qCAAqC;YACrC,WAAW,EAAE,SAAS;SACzB,CAAC;QACF,MAAM,QAAQ,GAAG,IAAI,yBAAW,CAAC,eAAe,CAAC,CAAC;QAClD,MAAM,YAAY,GAAG,QAAQ,CAAC,OAAO,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;QAEhE,0BAA0B;QAC1B,MAAM,WAAW,GAAG,qCAAiB,CAAC,KAAK,CAAC,YAAY,CAAsB,CAAC;QAE/E,sCAAsC;QACtC,OAAO,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;IACvC,CAAC;IAED;;;;OAIG;IACK,wBAAwB,CAAC,UAAgD;QAC7E,MAAM,SAAS,GAAyC,EAAE,CAAC;QAC3D,MAAM,aAAa,GAAG,IAAI,GAAG,EAAkB,CAAC,CAAC,2CAA2C;QAE5F,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;YACjC,IAAI,CAAC;gBACD,mDAAmD;gBACnD,MAAM,WAAW,GAAG,cAAc,CAAC;gBACnC,IAAI,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;oBACpC,yCAAyC;oBACzC,MAAM,MAAM,GAAG,qCAAiB,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAsB,CAAC;oBAE7E,IAAI,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;wBAChD,0BAA0B;wBAC1B,KAAK,MAAM,SAAS,IAAI,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;4BAC/C,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;4BAC3C,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;gCAC9B,8BAA8B;gCAC9B,MAAM,YAAY,GAAG,IAAI,2BAAY,CAAC;oCAClC,gBAAgB,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE;iCAC3C,CAAC,CAAC;gCACH,MAAM,WAAW,GAAG,YAAY,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC;gCACtE,aAAa,CAAC,GAAG,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;4BAC5C,CAAC;wBACL,CAAC;wBAED,gDAAgD;wBAChD,MAAM,oBAAoB,GAAG,IAAI,qCAAiB,CAAC;4BAC/C,YAAY,EAAE,MAAM,CAAC,YAAY;4BACjC,UAAU,EAAE,MAAM,CAAC,UAAU;4BAC7B,WAAW,EAAE,MAAM,CAAC,WAAW;4BAC/B,aAAa,EAAE,MAAM,CAAC,aAAa;4BACnC,YAAY,EAAE,MAAM,CAAC,YAAY;4BACjC,aAAa,EAAE,MAAM,CAAC,aAAa;4BACnC,YAAY,EAAE,MAAM,CAAC,YAAY;4BACjC,WAAW,EAAE,MAAM,CAAC,WAAW;4BAC/B,YAAY,EAAE,MAAM,CAAC,YAAY;4BACjC,WAAW,EAAE,MAAM,CAAC,WAAW;4BAC/B,SAAS,EAAE,MAAM,CAAC,SAAS;4BAC3B,UAAU,EAAE,SAAS,CAAC,qBAAqB;yBAC9C,CAAC,CAAC;wBAEH,MAAM,aAAa,GAAG,IAAI,2BAAY,CAAC;4BACnC,gBAAgB,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE;yBAC3C,CAAC,CAAC;wBACH,MAAM,SAAS,GAAG,aAAa,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC,YAAY,CAAC;wBAE1E,SAAS,CAAC,IAAI,CAAC;4BACX,IAAI,EAAE,SAAS,CAAC,IAAI;4BACpB,KAAK,EAAE,SAAS;yBACnB,CAAC,CAAC;oBACP,CAAC;yBAAM,CAAC;wBACJ,yDAAyD;wBACzD,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;oBAC9B,CAAC;gBACL,CAAC;qBAAM,CAAC;oBACJ,iCAAiC;oBACjC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBAC9B,CAAC;YACL,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACb,8CAA8C;gBAC9C,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC9B,CAAC;QACL,CAAC;QAED,sEAAsE;QACtE,MAAM,MAAM,GAAyC,EAAE,CAAC;QACxD,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,aAAa,EAAE,CAAC;YACxC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QACjC,CAAC;QACD,MAAM,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC;QAE1B,OAAO,MAAM,CAAC;IAClB,CAAC;IAED;;;;OAIG;IACK,4BAA4B,CAAC,gBAAyB;QAC1D,IAAI,IAAI,CAAC,kBAAkB,CAAC,qBAAqB,EAAE,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACvE,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,cAAc,CAAC,kBAAkB,CAAC,CAAC;QAC1E,CAAC;IACL,CAAC;IAED;;;;;;OAMG;IACK,eAAe,CACnB,KAAwB,EACxB,KAAgB,EAChB,aAAuB;QAEvB,MAAM,MAAM,GAAoB,EAAE,CAAC;QAEnC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACvB,oDAAoD;YACpD,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gBACvB,SAAS;YACb,CAAC;YAED,MAAM,WAAW,GAAG,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAEtD,IAAI,WAAW,EAAE,CAAC;gBACd,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;YACtD,CAAC;iBAAM,CAAC;gBACJ,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;YACrD,CAAC;QACL,CAAC;QAED,OAAO,MAAM,CAAC;IAClB,CAAC;IAED;;OAEG;IACK,kBAAkB,CAAC,IAAa,EAAE,KAAwB;QAC9D,MAAM,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC;QAEjE,iEAAiE;QACjE,MAAM,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,YAAY,CAAC,CAAC;QAE1E,MAAM,UAAU,GAAG,IAAI,CAAC,kBAAkB,CAAC,cAAc,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QAEhH,OAAO;YACH,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,KAAK,EAAE,UAAU;YACjB,YAAY,EAAE,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC;YACpC,UAAU,EAAE,aAAa;YACzB,WAAW,EAAE,IAAI;SACpB,CAAC;IACN,CAAC;IAED;;OAEG;IACK,iBAAiB,CAAC,IAAa,EAAE,QAAmB;QACxD,MAAM,KAAK,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QACxD,MAAM,UAAU,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;QAExG,iEAAiE;QACjE,MAAM,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,YAAY,CAAC,CAAC;QAE1E,OAAO;YACH,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,KAAK,EAAE,UAAU;YACjB,YAAY,EAAE,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC;YACpC,UAAU,EAAE,aAAa;YACzB,WAAW,EAAE,KAAK;SACrB,CAAC;IACN,CAAC;IAED;;OAEG;IACK,oBAAoB,CAAC,UAAmB,EAAE,QAAmB;QACjE,uCAAuC;QACvC,IAAI,UAAU,CAAC,IAAI,KAAK,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC;YAChD,MAAM,IAAI,KAAK,CAAC,gDAAgD,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC;QACvF,CAAC;QAED,MAAM,YAAY,GAAG,IAAI,CAAC,mBAAmB,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QAEpE,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5B,+CAA+C;YAC/C,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC;QACpE,CAAC;QAED,uCAAuC;QACvC,MAAM,UAAU,GAAG,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC;QACtD,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC;QAE3E,OAAO,GAAG,UAAU,IAAI,SAAS,EAAE,CAAC;IACxC,CAAC;IAED;;OAEG;IACK,mBAAmB,CAAC,UAAmB,EAAE,QAAmB;QAChE,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;QAClC,MAAM,MAAM,GAAc,EAAE,CAAC;QAC7B,MAAM,OAAO,GAAG,IAAI,GAAG,EAAmB,CAAC;QAE3C,wBAAwB;QACxB,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;YAC1B,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACjC,CAAC;QAED,MAAM,mBAAmB,GAAG,CAAC,QAAgB,EAAE,EAAE;YAC7C,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC;gBAAE,OAAO;YAClC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAEtB,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YACnC,IAAI,CAAC,IAAI;gBAAE,OAAO;YAElB,iCAAiC;YACjC,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;gBACtC,mBAAmB,CAAC,OAAO,CAAC,CAAC;YACjC,CAAC;YAED,wDAAwD;YACxD,6CAA6C;YAC7C,IAAI,QAAQ,KAAK,UAAU,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gBACvD,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACtB,CAAC;QACL,CAAC,CAAC;QAEF,2CAA2C;QAC3C,KAAK,MAAM,OAAO,IAAI,UAAU,CAAC,YAAY,EAAE,CAAC;YAC5C,mBAAmB,CAAC,OAAO,CAAC,CAAC;QACjC,CAAC;QAED,OAAO,MAAM,CAAC;IAClB,CAAC;IAED;;OAEG;IACK,eAAe,CAAC,YAAuB;QAC3C,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,CAAC;QAEzC,MAAM,cAAc,GAAG,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;YAC3C,qDAAqD;YACrD,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;gBACpC,MAAM,IAAI,KAAK,CAAC,4CAA4C,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;YAC7E,CAAC;YACD,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC;YAC1B,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC;YACpE,OAAO,GAAG,OAAO,QAAQ,QAAQ,GAAG,CAAC;QACzC,CAAC,CAAC,CAAC;QAEH,OAAO,QAAQ,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;IAC/C,CAAC;IAED;;;;;OAKG;IACK,iBAAiB,CAAC,KAAwB,EAAE,IAAmB;QACnE,IAAI,CAAC,KAAK,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,EAAE,CAAC;YAC1D,OAAO,EAAE,CAAC;QACd,CAAC;QAED,6DAA6D;QAC7D,2EAA2E;QAC3E,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;IACjD,CAAC;IAED;;;;OAIG;IACK,qBAAqB,CAAC,KAAwB;QAClD,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC;QAC1E,OAAO,SAAS,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;IAChD,CAAC;IAED;;;;;;;;OAQG;IACK,kBAAkB,CACtB,KAAa,EACb,OAAe,EACf,YAAsB,EACtB,UAAoB,EACpB,WAAoB;QAEpB,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,KAAK,IAAI,EAAE,CAAC;YACpC,OAAO,KAAK,CAAC;QACjB,CAAC;QAED,IAAI,CAAC;YACD,6CAA6C;YAC7C,MAAM,WAAW,GAAG,qCAAiB,CAAC,KAAK,CAAC,KAAK,CAAsB,CAAC;YAExE,yBAAyB;YACzB,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC;YAEvF,2EAA2E;YAC3E,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;gBACvB,6BAAa,CAAC,UAAU,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;YACnD,CAAC,CAAC,CAAC;YAEH,qCAAqC;YACrC,MAAM,qBAAqB,GAAG,IAAI,2BAAY,CAAC;gBAC3C,GAAG,IAAI,CAAC,OAAO;gBACf,aAAa,EAAE,IAAI;aACtB,CAAC,CAAC;YAEH,OAAO,qBAAqB,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,YAAY,CAAC;QAClE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,oEAAoE;YACpE,OAAO,CAAC,IAAI,CAAC,GAAG,kBAAkB,CAAC,cAAc,CAAC,cAAc,KAAK,KAAK,EAAE,CAAC,CAAC;YAC9E,OAAO,IAAI,CAAC,sBAAsB,CAAC,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC;QAC9F,CAAC;IACL,CAAC;IAED;;;;;;;OAOG;IACK,gBAAgB,CACpB,OAAe,EACf,YAAsB,EACtB,UAAoB,EACpB,WAAoB;QAEpB,MAAM,EAAE,cAAc,EAAE,YAAY,EAAE,YAAY,EAAE,UAAU,EAAE,cAAc,EAAE,IAAI,EAAE,GAAG,kBAAkB,CAAC,aAAa,CAAC;QAC1H,MAAM,QAAQ,GAAa,EAAE,CAAC;QAE9B,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAC9B,QAAQ,CAAC,IAAI,CAAC,GAAG,YAAY,IAAI,OAAO,EAAE,CAAC,CAAC;QAE5C,IAAI,WAAW,EAAE,CAAC;YACd,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAClC,CAAC;QAED,MAAM,QAAQ,GAAG,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAC1E,QAAQ,CAAC,IAAI,CAAC,GAAG,YAAY,IAAI,QAAQ,EAAE,CAAC,CAAC;QAE7C,6DAA6D;QAC7D,MAAM,aAAa,GAAG,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,YAAY,CAAC,CAAC;QACrE,MAAM,cAAc,GAAG,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAClF,QAAQ,CAAC,IAAI,CAAC,GAAG,UAAU,IAAI,cAAc,EAAE,CAAC,CAAC;QAEjD,OAAO,QAAQ,CAAC;IACpB,CAAC;IAED;;;;;;;;OAQG;IACK,sBAAsB,CAC1B,KAAa,EACb,OAAe,EACf,YAAsB,EACtB,UAAoB,EACpB,WAAoB;QAEpB,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC;QACvF,MAAM,YAAY,GAAG,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzE,OAAO,GAAG,YAAY,KAAK,KAAK,EAAE,CAAC;IACvC,CAAC;IAED;;OAEG;IACK,UAAU,CAAC,GAAgB;QAC/B,OAAO,GAAG,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC;IAC1C,CAAC;;AAxfL,gDAyfC;AAxf2B,iCAAc,GAAG;IACrC,kBAAkB,EAAE,mDAAmD;IACvE,cAAc,EAAE,6CAA6C;CACvD,CAAC;AAEa,gCAAa,GAAG;IACpC,cAAc,EAAE,kCAAkC;IAClD,YAAY,EAAE,eAAe;IAC7B,YAAY,EAAE,eAAe;IAC7B,UAAU,EAAE,aAAa;IACzB,cAAc,EAAE,qBAAqB;IACrC,IAAI,EAAE,MAAM;CACN,CAAC"}
1
+ {"version":3,"file":"CTEQueryDecomposer.js","sourceRoot":"","sources":["../../../src/transformers/CTEQueryDecomposer.ts"],"names":[],"mappings":";;;AACA,mEAAgE;AAChE,mEAAyE;AACzE,iDAA8C;AAC9C,iDAAmE;AACnE,0DAAuD;AACvD,oEAAiE;AACjE,+CAA4C;AA2C5C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,MAAa,kBAAkB;IAoB3B;;;OAGG;IACH,YAAY,UAAgC,EAAE;QAC1C,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,kBAAkB,GAAG,IAAI,6CAAqB,EAAE,CAAC;QACtD,IAAI,CAAC,YAAY,GAAG,IAAI,2BAAY,EAAE,CAAC;QACvC,IAAI,CAAC,SAAS,GAAG,IAAI,2BAAY,CAAC,OAAO,CAAC,CAAC;IAC/C,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA6BG;IACI,SAAS,CAAC,KAAwB;QACrC,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAC9C,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACpB,OAAO,EAAE,CAAC;QACd,CAAC;QAED,MAAM,aAAa,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAC1D,MAAM,eAAe,GAAG,IAAI,CAAC,kBAAkB,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;QAE3E,IAAI,CAAC,4BAA4B,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAE5D,OAAO,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,eAAe,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;IAC7E,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;OA2BG;IACI,WAAW,CAAC,UAAgD,EAAE,SAAiB;QAClF,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1B,OAAO,EAAE,CAAC;QACd,CAAC;QAED,sEAAsE;QACtE,MAAM,aAAa,GAAG,IAAI,CAAC,wBAAwB,CAAC,UAAU,CAAC,CAAC;QAEhE,uEAAuE;QACvE,MAAM,eAAe,GAAG;YACpB,GAAG,IAAI,CAAC,OAAO;YACf,qCAAqC;YACrC,WAAW,EAAE,SAAS;SACzB,CAAC;QACF,MAAM,QAAQ,GAAG,IAAI,yBAAW,CAAC,eAAe,CAAC,CAAC;QAClD,MAAM,YAAY,GAAG,QAAQ,CAAC,OAAO,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;QAEhE,0BAA0B;QAC1B,MAAM,WAAW,GAAG,qCAAiB,CAAC,KAAK,CAAC,YAAY,CAAsB,CAAC;QAE/E,sCAAsC;QACtC,OAAO,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;IACvC,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAkCG;IACI,UAAU,CAAC,KAAwB,EAAE,OAAe;QACvD,MAAM,QAAQ,GAAa,EAAE,CAAC;QAE9B,+BAA+B;QAC/B,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACjD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;QACvD,CAAC;QAED,kBAAkB;QAClB,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,OAAO,CAAC,CAAC;QACxE,IAAI,CAAC,SAAS,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,2BAA2B,OAAO,EAAE,CAAC,CAAC;QAC1D,CAAC;QAED,mCAAmC;QACnC,MAAM,aAAa,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAC7D,MAAM,WAAW,GAAG,aAAa,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QAEpD,IAAI,WAAW,EAAE,CAAC;YACd,QAAQ,CAAC,IAAI,CAAC,2DAA2D,CAAC,CAAC;YAC3E,0EAA0E;YAC1E,OAAO;gBACH,IAAI,EAAE,OAAO;gBACb,aAAa,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,YAAY;gBACxD,YAAY,EAAE,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,KAAK,OAAO,CAAC;gBAC3E,QAAQ;aACX,CAAC;QACN,CAAC;QAED,uBAAuB;QACvB,MAAM,eAAe,GAAG,IAAI,CAAC,kBAAkB,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;QAE3E,kCAAkC;QAClC,IAAI,IAAI,CAAC,kBAAkB,CAAC,qBAAqB,EAAE,EAAE,CAAC;YAClD,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;QAC5D,CAAC;QAED,uCAAuC;QACvC,MAAM,UAAU,GAAG,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC;QAC7E,IAAI,CAAC,UAAU,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC;YACjC,MAAM,IAAI,KAAK,CAAC,sCAAsC,OAAO,EAAE,CAAC,CAAC;QACrE,CAAC;QAED,uDAAuD;QACvD,MAAM,aAAa,GAAG,IAAI,CAAC,oBAAoB,CAAC,UAAU,EAAE,eAAe,CAAC,KAAK,CAAC,CAAC;QAEnF,qDAAqD;QACrD,MAAM,YAAY,GAAG,IAAI,CAAC,mBAAmB,CAAC,UAAU,EAAE,eAAe,CAAC,KAAK,CAAC,CAAC;QACjF,MAAM,eAAe,GAAG,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAE5D,4BAA4B;QAC5B,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW;YACrC,CAAC,CAAC,IAAI,CAAC,sBAAsB,CAAC,aAAa,EAAE,UAAU,EAAE,QAAQ,CAAC;YAClE,CAAC,CAAC,aAAa,CAAC;QAEpB,OAAO;YACH,IAAI,EAAE,OAAO;YACb,aAAa,EAAE,QAAQ;YACvB,YAAY,EAAE,eAAe;YAC7B,QAAQ;SACX,CAAC;IACN,CAAC;IAED;;;;OAIG;IACK,wBAAwB,CAAC,UAAgD;QAC7E,MAAM,SAAS,GAAyC,EAAE,CAAC;QAC3D,MAAM,aAAa,GAAG,IAAI,GAAG,EAAkB,CAAC,CAAC,2CAA2C;QAE5F,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;YACjC,IAAI,CAAC;gBACD,mDAAmD;gBACnD,MAAM,WAAW,GAAG,cAAc,CAAC;gBACnC,IAAI,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;oBACpC,yCAAyC;oBACzC,MAAM,MAAM,GAAG,qCAAiB,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAsB,CAAC;oBAE7E,IAAI,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;wBAChD,0BAA0B;wBAC1B,KAAK,MAAM,SAAS,IAAI,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;4BAC/C,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;4BAC3C,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;gCAC9B,8BAA8B;gCAC9B,MAAM,YAAY,GAAG,IAAI,2BAAY,CAAC;oCAClC,gBAAgB,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE;iCAC3C,CAAC,CAAC;gCACH,MAAM,WAAW,GAAG,YAAY,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC;gCACtE,aAAa,CAAC,GAAG,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;4BAC5C,CAAC;wBACL,CAAC;wBAED,gDAAgD;wBAChD,MAAM,oBAAoB,GAAG,IAAI,qCAAiB,CAAC;4BAC/C,YAAY,EAAE,MAAM,CAAC,YAAY;4BACjC,UAAU,EAAE,MAAM,CAAC,UAAU;4BAC7B,WAAW,EAAE,MAAM,CAAC,WAAW;4BAC/B,aAAa,EAAE,MAAM,CAAC,aAAa;4BACnC,YAAY,EAAE,MAAM,CAAC,YAAY;4BACjC,aAAa,EAAE,MAAM,CAAC,aAAa;4BACnC,YAAY,EAAE,MAAM,CAAC,YAAY;4BACjC,WAAW,EAAE,MAAM,CAAC,WAAW;4BAC/B,YAAY,EAAE,MAAM,CAAC,YAAY;4BACjC,WAAW,EAAE,MAAM,CAAC,WAAW;4BAC/B,SAAS,EAAE,MAAM,CAAC,SAAS;4BAC3B,UAAU,EAAE,SAAS,CAAC,qBAAqB;yBAC9C,CAAC,CAAC;wBAEH,MAAM,aAAa,GAAG,IAAI,2BAAY,CAAC;4BACnC,gBAAgB,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE;yBAC3C,CAAC,CAAC;wBACH,MAAM,SAAS,GAAG,aAAa,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC,YAAY,CAAC;wBAE1E,SAAS,CAAC,IAAI,CAAC;4BACX,IAAI,EAAE,SAAS,CAAC,IAAI;4BACpB,KAAK,EAAE,SAAS;yBACnB,CAAC,CAAC;oBACP,CAAC;yBAAM,CAAC;wBACJ,yDAAyD;wBACzD,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;oBAC9B,CAAC;gBACL,CAAC;qBAAM,CAAC;oBACJ,iCAAiC;oBACjC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBAC9B,CAAC;YACL,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACb,8CAA8C;gBAC9C,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC9B,CAAC;QACL,CAAC;QAED,sEAAsE;QACtE,MAAM,MAAM,GAAyC,EAAE,CAAC;QACxD,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,aAAa,EAAE,CAAC;YACxC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QACjC,CAAC;QACD,MAAM,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC;QAE1B,OAAO,MAAM,CAAC;IAClB,CAAC;IAED;;;;OAIG;IACK,4BAA4B,CAAC,gBAAyB;QAC1D,IAAI,IAAI,CAAC,kBAAkB,CAAC,qBAAqB,EAAE,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACvE,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,cAAc,CAAC,kBAAkB,CAAC,CAAC;QAC1E,CAAC;IACL,CAAC;IAED;;;;;;OAMG;IACK,eAAe,CACnB,KAAwB,EACxB,KAAgB,EAChB,aAAuB;QAEvB,MAAM,MAAM,GAAoB,EAAE,CAAC;QAEnC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACvB,oDAAoD;YACpD,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gBACvB,SAAS;YACb,CAAC;YAED,MAAM,WAAW,GAAG,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAEtD,IAAI,WAAW,EAAE,CAAC;gBACd,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;YACtD,CAAC;iBAAM,CAAC;gBACJ,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;YACrD,CAAC;QACL,CAAC;QAED,OAAO,MAAM,CAAC;IAClB,CAAC;IAED;;OAEG;IACK,kBAAkB,CAAC,IAAa,EAAE,KAAwB;QAC9D,MAAM,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC;QAEjE,iEAAiE;QACjE,MAAM,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,YAAY,CAAC,CAAC;QAE1E,MAAM,UAAU,GAAG,IAAI,CAAC,kBAAkB,CAAC,cAAc,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QAEhH,OAAO;YACH,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,KAAK,EAAE,UAAU;YACjB,YAAY,EAAE,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC;YACpC,UAAU,EAAE,aAAa;YACzB,WAAW,EAAE,IAAI;SACpB,CAAC;IACN,CAAC;IAED;;OAEG;IACK,iBAAiB,CAAC,IAAa,EAAE,QAAmB;QACxD,MAAM,KAAK,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QACxD,MAAM,UAAU,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;QAExG,iEAAiE;QACjE,MAAM,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,YAAY,CAAC,CAAC;QAE1E,OAAO;YACH,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,KAAK,EAAE,UAAU;YACjB,YAAY,EAAE,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC;YACpC,UAAU,EAAE,aAAa;YACzB,WAAW,EAAE,KAAK;SACrB,CAAC;IACN,CAAC;IAED;;OAEG;IACK,oBAAoB,CAAC,UAAmB,EAAE,QAAmB;QACjE,uCAAuC;QACvC,IAAI,UAAU,CAAC,IAAI,KAAK,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC;YAChD,MAAM,IAAI,KAAK,CAAC,gDAAgD,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC;QACvF,CAAC;QAED,MAAM,YAAY,GAAG,IAAI,CAAC,mBAAmB,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QAEpE,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5B,+CAA+C;YAC/C,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC;QACpE,CAAC;QAED,uCAAuC;QACvC,MAAM,UAAU,GAAG,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC;QACtD,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC;QAE3E,OAAO,GAAG,UAAU,IAAI,SAAS,EAAE,CAAC;IACxC,CAAC;IAED;;OAEG;IACK,mBAAmB,CAAC,UAAmB,EAAE,QAAmB;QAChE,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;QAClC,MAAM,MAAM,GAAc,EAAE,CAAC;QAC7B,MAAM,OAAO,GAAG,IAAI,GAAG,EAAmB,CAAC;QAE3C,wBAAwB;QACxB,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;YAC1B,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACjC,CAAC;QAED,MAAM,mBAAmB,GAAG,CAAC,QAAgB,EAAE,EAAE;YAC7C,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC;gBAAE,OAAO;YAClC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAEtB,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YACnC,IAAI,CAAC,IAAI;gBAAE,OAAO;YAElB,iCAAiC;YACjC,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;gBACtC,mBAAmB,CAAC,OAAO,CAAC,CAAC;YACjC,CAAC;YAED,wDAAwD;YACxD,6CAA6C;YAC7C,IAAI,QAAQ,KAAK,UAAU,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gBACvD,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACtB,CAAC;QACL,CAAC,CAAC;QAEF,2CAA2C;QAC3C,KAAK,MAAM,OAAO,IAAI,UAAU,CAAC,YAAY,EAAE,CAAC;YAC5C,mBAAmB,CAAC,OAAO,CAAC,CAAC;QACjC,CAAC;QAED,OAAO,MAAM,CAAC;IAClB,CAAC;IAED;;OAEG;IACK,eAAe,CAAC,YAAuB;QAC3C,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,CAAC;QAEzC,MAAM,cAAc,GAAG,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;YAC3C,qDAAqD;YACrD,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;gBACpC,MAAM,IAAI,KAAK,CAAC,4CAA4C,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;YAC7E,CAAC;YACD,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC;YAC1B,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC;YACpE,OAAO,GAAG,OAAO,QAAQ,QAAQ,GAAG,CAAC;QACzC,CAAC,CAAC,CAAC;QAEH,OAAO,QAAQ,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;IAC/C,CAAC;IAED;;;;;OAKG;IACK,iBAAiB,CAAC,KAAwB,EAAE,IAAmB;QACnE,IAAI,CAAC,KAAK,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,EAAE,CAAC;YAC1D,OAAO,EAAE,CAAC;QACd,CAAC;QAED,6DAA6D;QAC7D,2EAA2E;QAC3E,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;IACjD,CAAC;IAED;;;;OAIG;IACK,qBAAqB,CAAC,KAAwB;QAClD,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC;QAC1E,OAAO,SAAS,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;IAChD,CAAC;IAED;;;;;;;;OAQG;IACK,kBAAkB,CACtB,KAAa,EACb,OAAe,EACf,YAAsB,EACtB,UAAoB,EACpB,WAAoB;QAEpB,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,KAAK,IAAI,EAAE,CAAC;YACpC,OAAO,KAAK,CAAC;QACjB,CAAC;QAED,IAAI,CAAC;YACD,6CAA6C;YAC7C,MAAM,WAAW,GAAG,qCAAiB,CAAC,KAAK,CAAC,KAAK,CAAsB,CAAC;YAExE,yBAAyB;YACzB,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC;YAEvF,2EAA2E;YAC3E,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;gBACvB,6BAAa,CAAC,UAAU,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;YACnD,CAAC,CAAC,CAAC;YAEH,qCAAqC;YACrC,MAAM,qBAAqB,GAAG,IAAI,2BAAY,CAAC;gBAC3C,GAAG,IAAI,CAAC,OAAO;gBACf,aAAa,EAAE,IAAI;aACtB,CAAC,CAAC;YAEH,OAAO,qBAAqB,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,YAAY,CAAC;QAClE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,oEAAoE;YACpE,OAAO,CAAC,IAAI,CAAC,GAAG,kBAAkB,CAAC,cAAc,CAAC,cAAc,KAAK,KAAK,EAAE,CAAC,CAAC;YAC9E,OAAO,IAAI,CAAC,sBAAsB,CAAC,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC;QAC9F,CAAC;IACL,CAAC;IAED;;;;;;;OAOG;IACK,gBAAgB,CACpB,OAAe,EACf,YAAsB,EACtB,UAAoB,EACpB,WAAoB;QAEpB,MAAM,EAAE,cAAc,EAAE,YAAY,EAAE,YAAY,EAAE,UAAU,EAAE,cAAc,EAAE,IAAI,EAAE,GAAG,kBAAkB,CAAC,aAAa,CAAC;QAC1H,MAAM,QAAQ,GAAa,EAAE,CAAC;QAE9B,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAC9B,QAAQ,CAAC,IAAI,CAAC,GAAG,YAAY,IAAI,OAAO,EAAE,CAAC,CAAC;QAE5C,IAAI,WAAW,EAAE,CAAC;YACd,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAClC,CAAC;QAED,MAAM,QAAQ,GAAG,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAC1E,QAAQ,CAAC,IAAI,CAAC,GAAG,YAAY,IAAI,QAAQ,EAAE,CAAC,CAAC;QAE7C,6DAA6D;QAC7D,MAAM,aAAa,GAAG,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,YAAY,CAAC,CAAC;QACrE,MAAM,cAAc,GAAG,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAClF,QAAQ,CAAC,IAAI,CAAC,GAAG,UAAU,IAAI,cAAc,EAAE,CAAC,CAAC;QAEjD,OAAO,QAAQ,CAAC;IACpB,CAAC;IAED;;;;;;;;OAQG;IACK,sBAAsB,CAC1B,KAAa,EACb,OAAe,EACf,YAAsB,EACtB,UAAoB,EACpB,WAAoB;QAEpB,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC;QACvF,MAAM,YAAY,GAAG,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzE,OAAO,GAAG,YAAY,KAAK,KAAK,EAAE,CAAC;IACvC,CAAC;IAED;;;;;;OAMG;IACK,sBAAsB,CAAC,GAAW,EAAE,UAAmB,EAAE,QAAkB;QAC/E,MAAM,QAAQ,GAAa,EAAE,CAAC;QAE9B,QAAQ,CAAC,IAAI,CAAC,sBAAsB,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;QAExD,IAAI,UAAU,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACrC,QAAQ,CAAC,IAAI,CAAC,mBAAmB,GAAG,UAAU,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAC5E,CAAC;aAAM,CAAC;YACJ,QAAQ,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;QAC3C,CAAC;QAED,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtB,QAAQ,CAAC,IAAI,CAAC,eAAe,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACzD,CAAC;QAED,QAAQ,CAAC,IAAI,CAAC,iDAAiD,CAAC,CAAC;QACjE,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAElB,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC;IACrC,CAAC;IAED;;;;OAIG;IACK,cAAc,CAAC,IAAmB;QACtC,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;IACjD,CAAC;IAED;;OAEG;IACK,UAAU,CAAC,GAAgB;QAC/B,OAAO,GAAG,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC;IAC1C,CAAC;;AAhoBL,gDAioBC;AAhoB2B,iCAAc,GAAG;IACrC,kBAAkB,EAAE,mDAAmD;IACvE,cAAc,EAAE,6CAA6C;CACvD,CAAC;AAEa,gCAAa,GAAG;IACpC,cAAc,EAAE,kCAAkC;IAClD,YAAY,EAAE,eAAe;IAC7B,YAAY,EAAE,eAAe;IAC7B,UAAU,EAAE,aAAa;IACzB,cAAc,EAAE,qBAAqB;IACrC,IAAI,EAAE,MAAM;CACN,CAAC"}
@@ -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;
@@ -9,11 +9,13 @@ class LinePrinter {
9
9
  * @param indentChar Character used for indentation (default: ' ') // Updated comment to reflect options
10
10
  * @param indentSize Number of indentChar per level (default: 0)
11
11
  * @param newline Newline string (default: '\r\n') // Changed type and default value
12
+ * @param commaBreak Comma break style (default: 'none')
12
13
  */
13
- constructor(indentChar = ' ', indentSize = 0, newline = '\r\n') {
14
+ constructor(indentChar = ' ', indentSize = 0, newline = '\r\n', commaBreak = 'none') {
14
15
  this.indentChar = indentChar;
15
16
  this.indentSize = indentSize;
16
17
  this.newline = newline;
18
+ this.commaBreak = commaBreak;
17
19
  this.lines = [];
18
20
  this.appendNewline(0);
19
21
  }
@@ -54,17 +56,33 @@ class LinePrinter {
54
56
  * @param text Text to append
55
57
  */
56
58
  appendText(text) {
57
- if (this.lines.length > 0) {
58
- const workingIndex = this.lines.length - 1;
59
- const workLine = this.lines[workingIndex];
60
- // Leading space is not needed
61
- if (!(text === ' ' && workLine.text === '')) {
62
- workLine.text += text;
63
- }
59
+ // Handle special comma cleanup first
60
+ if (this.cleanupLine(text)) {
61
+ // If cleanup was performed, add comma to previous line
62
+ const previousLine = this.lines[this.lines.length - 1];
63
+ previousLine.text = previousLine.text.trimEnd() + text;
64
+ return;
64
65
  }
65
- else {
66
- throw new Error('No tokens to append to.');
66
+ const workLine = this.getCurrentLine();
67
+ // Leading space is not needed
68
+ if (!(text === ' ' && workLine.text === '')) {
69
+ workLine.text += text;
70
+ }
71
+ }
72
+ /**
73
+ * Cleans up the current line for comma formatting.
74
+ * For 'after' and 'none' comma styles, removes empty line when a comma is being added.
75
+ * @param text The text being processed
76
+ * @returns true if cleanup was performed, false otherwise
77
+ */
78
+ cleanupLine(text) {
79
+ const workLine = this.getCurrentLine();
80
+ if (text === ',' && workLine.text.trim() === '' && this.lines.length > 1 && (this.commaBreak === 'after' || this.commaBreak === 'none')) {
81
+ // Remove current empty line
82
+ this.lines.pop(); // Safe: we checked lines.length > 1
83
+ return true; // Cleanup performed
67
84
  }
85
+ return false; // No cleanup needed
68
86
  }
69
87
  getCurrentLine() {
70
88
  if (this.lines.length > 0) {
@@ -74,6 +92,17 @@ class LinePrinter {
74
92
  throw new Error('No tokens to get current line from.');
75
93
  }
76
94
  }
95
+ /**
96
+ * Checks if the current line is empty (has no text content)
97
+ * @returns true if current line is empty, false otherwise
98
+ */
99
+ isCurrentLineEmpty() {
100
+ if (this.lines.length > 0) {
101
+ const currentLine = this.lines[this.lines.length - 1];
102
+ return currentLine.text.trim() === '';
103
+ }
104
+ return true;
105
+ }
77
106
  }
78
107
  exports.LinePrinter = LinePrinter;
79
108
  class PrintLine {
@@ -1 +1 @@
1
- {"version":3,"file":"LinePrinter.js","sourceRoot":"","sources":["../../../src/transformers/LinePrinter.ts"],"names":[],"mappings":";;;AAMA;;GAEG;AACH,MAAa,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;AA7ED,kCA6EC;AAED,MAAa,SAAS;IAIlB,YAAY,KAAa,EAAE,IAAY;QACnC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACrB,CAAC;CACJ;AARD,8BAQC"}
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.
@@ -21,8 +21,19 @@ class SqlFormatter {
21
21
  parameterSymbol: (_b = options.parameterSymbol) !== null && _b !== void 0 ? _b : presetConfig === null || presetConfig === void 0 ? void 0 : presetConfig.parameterSymbol,
22
22
  parameterStyle: (_c = options.parameterStyle) !== null && _c !== void 0 ? _c : presetConfig === null || presetConfig === void 0 ? void 0 : presetConfig.parameterStyle,
23
23
  };
24
- this.parser = new SqlPrintTokenParser_1.SqlPrintTokenParser(parserOptions);
25
- this.printer = new SqlPrinter_1.SqlPrinter(options);
24
+ this.parser = new SqlPrintTokenParser_1.SqlPrintTokenParser({
25
+ ...parserOptions,
26
+ commentStyle: options.commentStyle
27
+ });
28
+ this.printer = new SqlPrinter_1.SqlPrinter({
29
+ ...options,
30
+ parenthesesOneLine: options.parenthesesOneLine,
31
+ betweenOneLine: options.betweenOneLine,
32
+ valuesOneLine: options.valuesOneLine,
33
+ joinOneLine: options.joinOneLine,
34
+ caseOneLine: options.caseOneLine,
35
+ subqueryOneLine: options.subqueryOneLine
36
+ });
26
37
  } /**
27
38
  * Formats a SQL query string with the given parameters.
28
39
  * @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,wEAA+F;AAC/F,6CAA0E;AAK1E,4CAA4C;AAC/B,QAAA,aAAa,GAAG,CAAC,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,QAAQ,CAAU,CAAC;AA4CnF;;GAEG;AACH,MAAa,YAAY;IAIrB,YAAY,UAA+B,EAAE;;QAEzC,MAAM,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,6BAAO,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,GAAG;YAClB,GAAG,YAAY,EAAE,6BAA6B;YAC9C,gBAAgB,EAAE,MAAA,OAAO,CAAC,gBAAgB,mCAAI,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,gBAAgB;YAC5E,eAAe,EAAE,MAAA,OAAO,CAAC,eAAe,mCAAI,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,eAAe;YACzE,cAAc,EAAE,MAAA,OAAO,CAAC,cAAc,mCAAI,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,cAAc;SACzE,CAAC;QAEF,IAAI,CAAC,MAAM,GAAG,IAAI,yCAAmB,CAAC,aAAa,CAAC,CAAC;QACrD,IAAI,CAAC,OAAO,GAAG,IAAI,uBAAU,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;AAjCD,oCAiCC"}
1
+ {"version":3,"file":"SqlFormatter.js","sourceRoot":"","sources":["../../../src/transformers/SqlFormatter.ts"],"names":[],"mappings":";;;AAAA,wEAA+F;AAC/F,6CAA0E;AAK1E,4CAA4C;AAC/B,QAAA,aAAa,GAAG,CAAC,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,QAAQ,CAAU,CAAC;AA0EnF;;GAEG;AACH,MAAa,YAAY;IAIrB,YAAY,UAA+B,EAAE;;QAEzC,MAAM,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,6BAAO,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,GAAG;YAClB,GAAG,YAAY,EAAE,6BAA6B;YAC9C,gBAAgB,EAAE,MAAA,OAAO,CAAC,gBAAgB,mCAAI,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,gBAAgB;YAC5E,eAAe,EAAE,MAAA,OAAO,CAAC,eAAe,mCAAI,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,eAAe;YACzE,cAAc,EAAE,MAAA,OAAO,CAAC,cAAc,mCAAI,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,cAAc;SACzE,CAAC;QAEF,IAAI,CAAC,MAAM,GAAG,IAAI,yCAAmB,CAAC;YAClC,GAAG,aAAa;YAChB,YAAY,EAAE,OAAO,CAAC,YAAY;SACrC,CAAC,CAAC;QACH,IAAI,CAAC,OAAO,GAAG,IAAI,uBAAU,CAAC;YAC1B,GAAG,OAAO;YACV,kBAAkB,EAAE,OAAO,CAAC,kBAAkB;YAC9C,cAAc,EAAE,OAAO,CAAC,cAAc;YACtC,aAAa,EAAE,OAAO,CAAC,aAAa;YACpC,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,eAAe,EAAE,OAAO,CAAC,eAAe;SAC3C,CAAC,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;AA5CD,oCA4CC"}
@@ -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.