rawsql-ts 0.11.8-beta → 0.11.10-beta
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/esm/index.min.js +3 -3
- package/dist/esm/index.min.js.map +3 -3
- package/dist/esm/src/reporting/models/DataFlowNode.d.ts +3 -0
- package/dist/esm/src/reporting/models/DataFlowNode.js +7 -0
- package/dist/esm/src/reporting/models/DataFlowNode.js.map +1 -1
- package/dist/esm/src/reporting/services/CTEHandler.d.ts +4 -0
- package/dist/esm/src/reporting/services/CTEHandler.js +30 -3
- package/dist/esm/src/reporting/services/CTEHandler.js.map +1 -1
- package/dist/esm/src/transformers/QueryFlowDiagramGenerator.js +6 -3
- package/dist/esm/src/transformers/QueryFlowDiagramGenerator.js.map +1 -1
- package/dist/esm/src/transformers/SqlFormatter.d.ts +1 -0
- package/dist/esm/src/transformers/SqlFormatter.js.map +1 -1
- package/dist/esm/src/transformers/SqlPrinter.d.ts +59 -14
- package/dist/esm/src/transformers/SqlPrinter.js +119 -65
- package/dist/esm/src/transformers/SqlPrinter.js.map +1 -1
- package/dist/esm/tsconfig.browser.tsbuildinfo +1 -1
- package/dist/index.min.js +3 -3
- package/dist/index.min.js.map +3 -3
- package/dist/src/reporting/models/DataFlowNode.d.ts +3 -0
- package/dist/src/reporting/models/DataFlowNode.js +7 -0
- package/dist/src/reporting/models/DataFlowNode.js.map +1 -1
- package/dist/src/reporting/services/CTEHandler.d.ts +4 -0
- package/dist/src/reporting/services/CTEHandler.js +30 -3
- package/dist/src/reporting/services/CTEHandler.js.map +1 -1
- package/dist/src/transformers/QueryFlowDiagramGenerator.js +6 -3
- package/dist/src/transformers/QueryFlowDiagramGenerator.js.map +1 -1
- package/dist/src/transformers/SqlFormatter.d.ts +1 -0
- package/dist/src/transformers/SqlFormatter.js.map +1 -1
- package/dist/src/transformers/SqlPrinter.d.ts +59 -14
- package/dist/src/transformers/SqlPrinter.js +119 -65
- package/dist/src/transformers/SqlPrinter.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
|
@@ -26,7 +26,10 @@ export declare abstract class BaseDataFlowNode implements DataFlowNode {
|
|
|
26
26
|
* Represents a data source (table, CTE, subquery)
|
|
27
27
|
*/
|
|
28
28
|
export declare class DataSourceNode extends BaseDataFlowNode {
|
|
29
|
+
private annotations;
|
|
29
30
|
constructor(id: string, label: string, type: 'table' | 'cte' | 'subquery');
|
|
31
|
+
addAnnotation(annotation: string): void;
|
|
32
|
+
hasAnnotation(annotation: string): boolean;
|
|
30
33
|
getMermaidRepresentation(): string;
|
|
31
34
|
static createTable(tableName: string): DataSourceNode;
|
|
32
35
|
static createCTE(cteName: string): DataSourceNode;
|
|
@@ -16,6 +16,13 @@ export class BaseDataFlowNode {
|
|
|
16
16
|
export class DataSourceNode extends BaseDataFlowNode {
|
|
17
17
|
constructor(id, label, type) {
|
|
18
18
|
super(id, label, type, 'cylinder');
|
|
19
|
+
this.annotations = new Set();
|
|
20
|
+
}
|
|
21
|
+
addAnnotation(annotation) {
|
|
22
|
+
this.annotations.add(annotation);
|
|
23
|
+
}
|
|
24
|
+
hasAnnotation(annotation) {
|
|
25
|
+
return this.annotations.has(annotation);
|
|
19
26
|
}
|
|
20
27
|
getMermaidRepresentation() {
|
|
21
28
|
return `${this.id}[(${this.label})]`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DataFlowNode.js","sourceRoot":"","sources":["../../../../../src/reporting/models/DataFlowNode.ts"],"names":[],"mappings":"AAeA;;GAEG;AACH,MAAM,OAAgB,gBAAgB;IAClC,YACW,EAAU,EACV,KAAa,EACb,IAAc,EACd,KAAgB,EAChB,OAAkB;QAJlB,OAAE,GAAF,EAAE,CAAQ;QACV,UAAK,GAAL,KAAK,CAAQ;QACb,SAAI,GAAJ,IAAI,CAAU;QACd,UAAK,GAAL,KAAK,CAAW;QAChB,YAAO,GAAP,OAAO,CAAW;IAC1B,CAAC;CAGP;AAED;;GAEG;AACH,MAAM,OAAO,cAAe,SAAQ,gBAAgB;
|
|
1
|
+
{"version":3,"file":"DataFlowNode.js","sourceRoot":"","sources":["../../../../../src/reporting/models/DataFlowNode.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,4 +10,8 @@ export declare class CTEHandler {
|
|
|
10
10
|
* Processes all CTEs in a WITH clause
|
|
11
11
|
*/
|
|
12
12
|
processCTEs(withClause: WithClause, cteNames: Set<string>, queryProcessor: (query: any, context: string, cteNames: Set<string>) => string): void;
|
|
13
|
+
/**
|
|
14
|
+
* Detects if a query contains recursive references to a CTE
|
|
15
|
+
*/
|
|
16
|
+
private detectRecursiveReference;
|
|
13
17
|
}
|
|
@@ -9,19 +9,46 @@ export class CTEHandler {
|
|
|
9
9
|
* Processes all CTEs in a WITH clause
|
|
10
10
|
*/
|
|
11
11
|
processCTEs(withClause, cteNames, queryProcessor) {
|
|
12
|
-
|
|
12
|
+
// First pass: Create all CTE nodes and add names to tracking set
|
|
13
|
+
for (let i = 0; i < withClause.tables.length; i++) {
|
|
14
|
+
const cte = withClause.tables[i];
|
|
13
15
|
const cteName = cte.getSourceAliasName();
|
|
14
16
|
// Create virtual data source node for CTE
|
|
15
17
|
const cteNode = this.graph.getOrCreateCTE(cteName);
|
|
16
|
-
// Track CTE name
|
|
18
|
+
// Track CTE name (this allows recursive references)
|
|
17
19
|
cteNames.add(cteName);
|
|
20
|
+
// Check if this is a recursive CTE
|
|
21
|
+
// In WITH RECURSIVE, only the first CTE is recursive
|
|
22
|
+
const isRecursive = withClause.recursive && i === 0;
|
|
23
|
+
if (isRecursive) {
|
|
24
|
+
// Add recursive annotation to the CTE node
|
|
25
|
+
cteNode.addAnnotation('recursive');
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
// Second pass: Process CTE queries now that all names are available
|
|
29
|
+
for (let i = 0; i < withClause.tables.length; i++) {
|
|
30
|
+
const cte = withClause.tables[i];
|
|
31
|
+
const cteName = cte.getSourceAliasName();
|
|
32
|
+
const cteNode = this.graph.getOrCreateCTE(cteName);
|
|
18
33
|
// Process CTE query and connect its result to the CTE virtual data source
|
|
19
34
|
const cteResultId = queryProcessor(cte.query, `cte_${cteName}`, cteNames);
|
|
20
35
|
// Connect CTE query result to CTE virtual data source
|
|
21
36
|
if (cteResultId && !this.graph.hasConnection(cteResultId, cteNode.id)) {
|
|
22
|
-
|
|
37
|
+
// Add RECURSIVE label for first CTE in WITH RECURSIVE clause
|
|
38
|
+
const isRecursive = withClause.recursive && i === 0;
|
|
39
|
+
const label = isRecursive ? 'RECURSIVE' : undefined;
|
|
40
|
+
this.graph.addConnection(cteResultId, cteNode.id, label);
|
|
23
41
|
}
|
|
24
42
|
}
|
|
25
43
|
}
|
|
44
|
+
/**
|
|
45
|
+
* Detects if a query contains recursive references to a CTE
|
|
46
|
+
*/
|
|
47
|
+
detectRecursiveReference(query, cteName) {
|
|
48
|
+
// Simple heuristic: check if the query string contains the CTE name
|
|
49
|
+
// In a real implementation, you'd parse the query structure
|
|
50
|
+
const queryStr = query.toString().toLowerCase();
|
|
51
|
+
return queryStr.includes(cteName.toLowerCase());
|
|
52
|
+
}
|
|
26
53
|
}
|
|
27
54
|
//# sourceMappingURL=CTEHandler.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CTEHandler.js","sourceRoot":"","sources":["../../../../../src/reporting/services/CTEHandler.ts"],"names":[],"mappings":"AAIA;;GAEG;AACH,MAAM,OAAO,UAAU;IACnB,YAAoB,KAAoB;QAApB,UAAK,GAAL,KAAK,CAAe;IAAG,CAAC;IAE5C;;OAEG;IACH,WAAW,CACP,UAAsB,EACtB,QAAqB,EACrB,cAA8E;QAE9E,KAAK,
|
|
1
|
+
{"version":3,"file":"CTEHandler.js","sourceRoot":"","sources":["../../../../../src/reporting/services/CTEHandler.ts"],"names":[],"mappings":"AAIA;;GAEG;AACH,MAAM,OAAO,UAAU;IACnB,YAAoB,KAAoB;QAApB,UAAK,GAAL,KAAK,CAAe;IAAG,CAAC;IAE5C;;OAEG;IACH,WAAW,CACP,UAAsB,EACtB,QAAqB,EACrB,cAA8E;QAE9E,iEAAiE;QACjE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAChD,MAAM,GAAG,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YACjC,MAAM,OAAO,GAAG,GAAG,CAAC,kBAAkB,EAAE,CAAC;YAEzC,0CAA0C;YAC1C,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;YAEnD,oDAAoD;YACpD,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YAEtB,mCAAmC;YACnC,qDAAqD;YACrD,MAAM,WAAW,GAAG,UAAU,CAAC,SAAS,IAAI,CAAC,KAAK,CAAC,CAAC;YACpD,IAAI,WAAW,EAAE,CAAC;gBACd,2CAA2C;gBAC3C,OAAO,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;YACvC,CAAC;QACL,CAAC;QAED,oEAAoE;QACpE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAChD,MAAM,GAAG,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YACjC,MAAM,OAAO,GAAG,GAAG,CAAC,kBAAkB,EAAE,CAAC;YACzC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;YAEnD,0EAA0E;YAC1E,MAAM,WAAW,GAAG,cAAc,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,OAAO,EAAE,EAAE,QAAQ,CAAC,CAAC;YAE1E,sDAAsD;YACtD,IAAI,WAAW,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,WAAW,EAAE,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC;gBACpE,6DAA6D;gBAC7D,MAAM,WAAW,GAAG,UAAU,CAAC,SAAS,IAAI,CAAC,KAAK,CAAC,CAAC;gBACpD,MAAM,KAAK,GAAG,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC;gBACpD,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,WAAW,EAAE,OAAO,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;YAC7D,CAAC;QACL,CAAC;IACL,CAAC;IAED;;OAEG;IACK,wBAAwB,CAAC,KAAU,EAAE,OAAe;QACxD,oEAAoE;QACpE,4DAA4D;QAC5D,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC,WAAW,EAAE,CAAC;QAChD,OAAO,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;IACpD,CAAC;CACJ"}
|
|
@@ -79,8 +79,9 @@ export class QueryFlowDiagramGenerator {
|
|
|
79
79
|
processSimpleBinaryOperation(query, context, cteNames) {
|
|
80
80
|
const leftNodeId = this.processQuery(query.left, `${context}_left`, cteNames);
|
|
81
81
|
const rightNodeId = this.processQuery(query.right, `${context}_right`, cteNames);
|
|
82
|
-
// Create operation node
|
|
83
|
-
const
|
|
82
|
+
// Create operation node with unique ID based on context
|
|
83
|
+
const operationId = context === 'main' ? 'main' : context.replace(/^cte_/, '');
|
|
84
|
+
const operationNode = this.graph.createSetOperationNode(operationId, query.operator.value);
|
|
84
85
|
// Connect left and right to operation
|
|
85
86
|
if (leftNodeId && !this.graph.hasConnection(leftNodeId, operationNode.id)) {
|
|
86
87
|
this.graph.addConnection(leftNodeId, operationNode.id);
|
|
@@ -92,7 +93,9 @@ export class QueryFlowDiagramGenerator {
|
|
|
92
93
|
}
|
|
93
94
|
processMultiPartOperation(parts, operator, context, cteNames) {
|
|
94
95
|
const partNodes = [];
|
|
95
|
-
|
|
96
|
+
// Use context to create unique operation ID
|
|
97
|
+
const operationId = context === 'main' ? 'main' : context.replace(/^cte_/, '');
|
|
98
|
+
const operationNode = this.graph.createSetOperationNode(operationId, operator);
|
|
96
99
|
// Process each part with numbered naming
|
|
97
100
|
for (let i = 0; i < parts.length; i++) {
|
|
98
101
|
const partContext = `${context}_part${i + 1}`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"QueryFlowDiagramGenerator.js","sourceRoot":"","sources":["../../../../src/transformers/QueryFlowDiagramGenerator.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"QueryFlowDiagramGenerator.js","sourceRoot":"","sources":["../../../../src/transformers/QueryFlowDiagramGenerator.ts"],"names":[],"mappings":"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"}
|
|
@@ -28,6 +28,7 @@ export declare class SqlFormatter {
|
|
|
28
28
|
andBreak?: AndBreakStyle;
|
|
29
29
|
exportComment?: boolean;
|
|
30
30
|
strictCommentPlacement?: boolean;
|
|
31
|
+
cteOneline?: boolean;
|
|
31
32
|
}); /**
|
|
32
33
|
* Formats a SQL query string with the given parameters.
|
|
33
34
|
* @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;AAGnF;;GAEG;AACH,MAAM,OAAO,YAAY;IAIrB,YAAY,
|
|
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;AAGnF;;GAEG;AACH,MAAM,OAAO,YAAY;IAIrB,YAAY,UAcR,EAAE;;QAEF,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,4 +1,4 @@
|
|
|
1
|
-
import { SqlPrintToken } from "../models/SqlPrintToken";
|
|
1
|
+
import { SqlPrintToken, SqlPrintTokenContainerType } from "../models/SqlPrintToken";
|
|
2
2
|
import { IndentCharOption, NewlineOption } from "./LinePrinter";
|
|
3
3
|
/**
|
|
4
4
|
* CommaBreakStyle determines how commas are placed in formatted SQL output.
|
|
@@ -14,8 +14,49 @@ export type CommaBreakStyle = 'none' | 'before' | 'after';
|
|
|
14
14
|
* - 'after': Line break after AND
|
|
15
15
|
*/
|
|
16
16
|
export type AndBreakStyle = 'none' | 'before' | 'after';
|
|
17
|
+
/**
|
|
18
|
+
* Options for configuring SqlPrinter formatting behavior
|
|
19
|
+
*/
|
|
20
|
+
export interface SqlPrinterOptions {
|
|
21
|
+
/** Indent character (e.g., ' ' or '\t') */
|
|
22
|
+
indentChar?: IndentCharOption;
|
|
23
|
+
/** Indent size (number of indentChar repetitions per level) */
|
|
24
|
+
indentSize?: number;
|
|
25
|
+
/** Newline character (e.g., '\n' or '\r\n') */
|
|
26
|
+
newline?: NewlineOption;
|
|
27
|
+
/** Comma break style: 'none', 'before', or 'after' */
|
|
28
|
+
commaBreak?: CommaBreakStyle;
|
|
29
|
+
/** AND break style: 'none', 'before', or 'after' */
|
|
30
|
+
andBreak?: AndBreakStyle;
|
|
31
|
+
/** Keyword case style: 'none', 'upper' | 'lower' */
|
|
32
|
+
keywordCase?: 'none' | 'upper' | 'lower';
|
|
33
|
+
/** Whether to export comments in the output (default: false for compatibility) */
|
|
34
|
+
exportComment?: boolean;
|
|
35
|
+
/** Whether to use strict comment placement (only clause-level comments, default: false) */
|
|
36
|
+
strictCommentPlacement?: boolean;
|
|
37
|
+
/** Container types that should increase indentation level */
|
|
38
|
+
indentIncrementContainerTypes?: SqlPrintTokenContainerType[];
|
|
39
|
+
/** Whether to format CTE parts as one-liners (default: false) */
|
|
40
|
+
cteOneline?: boolean;
|
|
41
|
+
}
|
|
17
42
|
/**
|
|
18
43
|
* SqlPrinter formats a SqlPrintToken tree into a SQL string with flexible style options.
|
|
44
|
+
*
|
|
45
|
+
* This class provides various formatting options including:
|
|
46
|
+
* - Indentation control (character and size)
|
|
47
|
+
* - Line break styles for commas and AND operators
|
|
48
|
+
* - Keyword case transformation
|
|
49
|
+
* - Comment handling
|
|
50
|
+
* - CTE (Common Table Expression) formatting
|
|
51
|
+
*
|
|
52
|
+
* @example
|
|
53
|
+
* const printer = new SqlPrinter({
|
|
54
|
+
* indentChar: ' ',
|
|
55
|
+
* indentSize: 1,
|
|
56
|
+
* keywordCase: 'upper',
|
|
57
|
+
* commaBreak: 'after'
|
|
58
|
+
* });
|
|
59
|
+
* const formatted = printer.print(sqlToken);
|
|
19
60
|
*/
|
|
20
61
|
export declare class SqlPrinter {
|
|
21
62
|
/** Indent character (e.g., ' ' or '\\t') */
|
|
@@ -34,27 +75,31 @@ export declare class SqlPrinter {
|
|
|
34
75
|
exportComment: boolean;
|
|
35
76
|
/** Whether to use strict comment placement (only clause-level comments, default: false) */
|
|
36
77
|
strictCommentPlacement: boolean;
|
|
78
|
+
/** Whether to format CTE parts as one-liners (default: false) */
|
|
79
|
+
cteOneline: boolean;
|
|
37
80
|
private linePrinter;
|
|
38
81
|
private indentIncrementContainers;
|
|
39
82
|
/**
|
|
40
83
|
* @param options Optional style settings for pretty printing
|
|
41
84
|
*/
|
|
42
|
-
constructor(options?:
|
|
43
|
-
indentChar?: IndentCharOption;
|
|
44
|
-
indentSize?: number;
|
|
45
|
-
newline?: NewlineOption;
|
|
46
|
-
commaBreak?: CommaBreakStyle;
|
|
47
|
-
andBreak?: AndBreakStyle;
|
|
48
|
-
keywordCase?: 'none' | 'upper' | 'lower';
|
|
49
|
-
exportComment?: boolean;
|
|
50
|
-
strictCommentPlacement?: boolean;
|
|
51
|
-
indentIncrementContainerTypes?: string[];
|
|
52
|
-
});
|
|
85
|
+
constructor(options?: SqlPrinterOptions);
|
|
53
86
|
/**
|
|
54
87
|
* Converts a SqlPrintToken tree to a formatted SQL string.
|
|
55
|
-
* @param token The root SqlPrintToken
|
|
56
|
-
* @param level
|
|
88
|
+
* @param token The root SqlPrintToken to format
|
|
89
|
+
* @param level Initial indentation level (default: 0)
|
|
90
|
+
* @returns Formatted SQL string
|
|
91
|
+
* @example
|
|
92
|
+
* const printer = new SqlPrinter({ indentChar: ' ', keywordCase: 'upper' });
|
|
93
|
+
* const formatted = printer.print(sqlToken);
|
|
57
94
|
*/
|
|
58
95
|
print(token: SqlPrintToken, level?: number): string;
|
|
59
96
|
private appendToken;
|
|
97
|
+
private shouldSkipToken;
|
|
98
|
+
private applyKeywordCase;
|
|
99
|
+
private handleKeywordToken;
|
|
100
|
+
private handleCommaToken;
|
|
101
|
+
private handleAndOperatorToken;
|
|
102
|
+
private handleJoinClauseToken;
|
|
103
|
+
private handleCommentToken;
|
|
104
|
+
private handleCteOnelineToken;
|
|
60
105
|
}
|
|
@@ -2,13 +2,29 @@ import { SqlPrintTokenType, SqlPrintTokenContainerType } from "../models/SqlPrin
|
|
|
2
2
|
import { LinePrinter } from "./LinePrinter";
|
|
3
3
|
/**
|
|
4
4
|
* SqlPrinter formats a SqlPrintToken tree into a SQL string with flexible style options.
|
|
5
|
+
*
|
|
6
|
+
* This class provides various formatting options including:
|
|
7
|
+
* - Indentation control (character and size)
|
|
8
|
+
* - Line break styles for commas and AND operators
|
|
9
|
+
* - Keyword case transformation
|
|
10
|
+
* - Comment handling
|
|
11
|
+
* - CTE (Common Table Expression) formatting
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* const printer = new SqlPrinter({
|
|
15
|
+
* indentChar: ' ',
|
|
16
|
+
* indentSize: 1,
|
|
17
|
+
* keywordCase: 'upper',
|
|
18
|
+
* commaBreak: 'after'
|
|
19
|
+
* });
|
|
20
|
+
* const formatted = printer.print(sqlToken);
|
|
5
21
|
*/
|
|
6
22
|
export class SqlPrinter {
|
|
7
23
|
/**
|
|
8
24
|
* @param options Optional style settings for pretty printing
|
|
9
25
|
*/
|
|
10
26
|
constructor(options) {
|
|
11
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _j;
|
|
27
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
|
|
12
28
|
this.indentChar = (_a = options === null || options === void 0 ? void 0 : options.indentChar) !== null && _a !== void 0 ? _a : '';
|
|
13
29
|
this.indentSize = (_b = options === null || options === void 0 ? void 0 : options.indentSize) !== null && _b !== void 0 ? _b : 0;
|
|
14
30
|
// The default newline character is set to a blank space (' ') to enable one-liner formatting.
|
|
@@ -19,9 +35,10 @@ export class SqlPrinter {
|
|
|
19
35
|
this.keywordCase = (_f = options === null || options === void 0 ? void 0 : options.keywordCase) !== null && _f !== void 0 ? _f : 'none';
|
|
20
36
|
this.exportComment = (_g = options === null || options === void 0 ? void 0 : options.exportComment) !== null && _g !== void 0 ? _g : false;
|
|
21
37
|
this.strictCommentPlacement = (_h = options === null || options === void 0 ? void 0 : options.strictCommentPlacement) !== null && _h !== void 0 ? _h : false;
|
|
38
|
+
this.cteOneline = (_j = options === null || options === void 0 ? void 0 : options.cteOneline) !== null && _j !== void 0 ? _j : false;
|
|
22
39
|
this.linePrinter = new LinePrinter(this.indentChar, this.indentSize, this.newline);
|
|
23
40
|
// Initialize
|
|
24
|
-
this.indentIncrementContainers = new Set((
|
|
41
|
+
this.indentIncrementContainers = new Set((_k = options === null || options === void 0 ? void 0 : options.indentIncrementContainerTypes) !== null && _k !== void 0 ? _k : [
|
|
25
42
|
SqlPrintTokenContainerType.SelectClause,
|
|
26
43
|
SqlPrintTokenContainerType.FromClause,
|
|
27
44
|
SqlPrintTokenContainerType.WhereClause,
|
|
@@ -48,8 +65,12 @@ export class SqlPrinter {
|
|
|
48
65
|
}
|
|
49
66
|
/**
|
|
50
67
|
* Converts a SqlPrintToken tree to a formatted SQL string.
|
|
51
|
-
* @param token The root SqlPrintToken
|
|
52
|
-
* @param level
|
|
68
|
+
* @param token The root SqlPrintToken to format
|
|
69
|
+
* @param level Initial indentation level (default: 0)
|
|
70
|
+
* @returns Formatted SQL string
|
|
71
|
+
* @example
|
|
72
|
+
* const printer = new SqlPrinter({ indentChar: ' ', keywordCase: 'upper' });
|
|
73
|
+
* const formatted = printer.print(sqlToken);
|
|
53
74
|
*/
|
|
54
75
|
print(token, level = 0) {
|
|
55
76
|
// initialize
|
|
@@ -60,76 +81,30 @@ export class SqlPrinter {
|
|
|
60
81
|
this.appendToken(token, level);
|
|
61
82
|
return this.linePrinter.print();
|
|
62
83
|
}
|
|
63
|
-
appendToken(token, level) {
|
|
64
|
-
if (
|
|
65
|
-
|
|
66
|
-
return;
|
|
67
|
-
}
|
|
84
|
+
appendToken(token, level, parentContainerType) {
|
|
85
|
+
if (this.shouldSkipToken(token)) {
|
|
86
|
+
return;
|
|
68
87
|
}
|
|
69
88
|
const current = this.linePrinter.getCurrentLine();
|
|
89
|
+
// Handle different token types
|
|
70
90
|
if (token.type === SqlPrintTokenType.keyword) {
|
|
71
|
-
|
|
72
|
-
if (this.keywordCase === 'upper') {
|
|
73
|
-
text = text.toUpperCase();
|
|
74
|
-
}
|
|
75
|
-
else if (this.keywordCase === 'lower') {
|
|
76
|
-
text = text.toLowerCase();
|
|
77
|
-
}
|
|
78
|
-
this.linePrinter.appendText(text);
|
|
91
|
+
this.handleKeywordToken(token, level);
|
|
79
92
|
}
|
|
80
93
|
else if (token.type === SqlPrintTokenType.comma) {
|
|
81
|
-
|
|
82
|
-
if (this.commaBreak === 'before') {
|
|
83
|
-
this.linePrinter.appendNewline(level);
|
|
84
|
-
this.linePrinter.appendText(text);
|
|
85
|
-
}
|
|
86
|
-
else if (this.commaBreak === 'after') {
|
|
87
|
-
this.linePrinter.appendText(text);
|
|
88
|
-
this.linePrinter.appendNewline(level);
|
|
89
|
-
}
|
|
90
|
-
else {
|
|
91
|
-
this.linePrinter.appendText(text);
|
|
92
|
-
}
|
|
94
|
+
this.handleCommaToken(token, level, parentContainerType);
|
|
93
95
|
}
|
|
94
96
|
else if (token.type === SqlPrintTokenType.operator && token.text.toLowerCase() === 'and') {
|
|
95
|
-
|
|
96
|
-
if (this.keywordCase === 'upper') {
|
|
97
|
-
text = text.toUpperCase();
|
|
98
|
-
}
|
|
99
|
-
else if (this.keywordCase === 'lower') {
|
|
100
|
-
text = text.toLowerCase();
|
|
101
|
-
}
|
|
102
|
-
if (this.andBreak === 'before') {
|
|
103
|
-
this.linePrinter.appendNewline(level);
|
|
104
|
-
this.linePrinter.appendText(text);
|
|
105
|
-
}
|
|
106
|
-
else if (this.andBreak === 'after') {
|
|
107
|
-
this.linePrinter.appendText(text);
|
|
108
|
-
this.linePrinter.appendNewline(level);
|
|
109
|
-
}
|
|
110
|
-
else {
|
|
111
|
-
this.linePrinter.appendText(text);
|
|
112
|
-
}
|
|
97
|
+
this.handleAndOperatorToken(token, level);
|
|
113
98
|
}
|
|
114
99
|
else if (token.containerType === "JoinClause") {
|
|
115
|
-
|
|
116
|
-
if (this.keywordCase === 'upper') {
|
|
117
|
-
text = text.toUpperCase();
|
|
118
|
-
}
|
|
119
|
-
else if (this.keywordCase === 'lower') {
|
|
120
|
-
text = text.toLowerCase();
|
|
121
|
-
}
|
|
122
|
-
// before join clause, add newline
|
|
123
|
-
this.linePrinter.appendNewline(level);
|
|
124
|
-
this.linePrinter.appendText(text);
|
|
100
|
+
this.handleJoinClauseToken(token, level);
|
|
125
101
|
}
|
|
126
102
|
else if (token.type === SqlPrintTokenType.comment) {
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
}
|
|
103
|
+
this.handleCommentToken(token);
|
|
104
|
+
}
|
|
105
|
+
else if (token.containerType === SqlPrintTokenContainerType.CommonTable && this.cteOneline) {
|
|
106
|
+
this.handleCteOnelineToken(token, level);
|
|
107
|
+
return; // Return early to avoid processing innerTokens
|
|
133
108
|
}
|
|
134
109
|
else {
|
|
135
110
|
this.linePrinter.appendText(token.text);
|
|
@@ -138,7 +113,7 @@ export class SqlPrinter {
|
|
|
138
113
|
if (token.keywordTokens && token.keywordTokens.length > 0) {
|
|
139
114
|
for (let i = 0; i < token.keywordTokens.length; i++) {
|
|
140
115
|
const keywordToken = token.keywordTokens[i];
|
|
141
|
-
this.appendToken(keywordToken, level);
|
|
116
|
+
this.appendToken(keywordToken, level, token.containerType);
|
|
142
117
|
}
|
|
143
118
|
}
|
|
144
119
|
let innerLevel = level;
|
|
@@ -149,12 +124,91 @@ export class SqlPrinter {
|
|
|
149
124
|
}
|
|
150
125
|
for (let i = 0; i < token.innerTokens.length; i++) {
|
|
151
126
|
const child = token.innerTokens[i];
|
|
152
|
-
this.appendToken(child, innerLevel);
|
|
127
|
+
this.appendToken(child, innerLevel, token.containerType);
|
|
153
128
|
}
|
|
154
129
|
// indent level down
|
|
155
130
|
if (innerLevel !== level) {
|
|
156
131
|
this.linePrinter.appendNewline(level);
|
|
157
132
|
}
|
|
158
133
|
}
|
|
134
|
+
shouldSkipToken(token) {
|
|
135
|
+
return (!token.innerTokens || token.innerTokens.length === 0) && token.text === '';
|
|
136
|
+
}
|
|
137
|
+
applyKeywordCase(text) {
|
|
138
|
+
if (this.keywordCase === 'upper') {
|
|
139
|
+
return text.toUpperCase();
|
|
140
|
+
}
|
|
141
|
+
else if (this.keywordCase === 'lower') {
|
|
142
|
+
return text.toLowerCase();
|
|
143
|
+
}
|
|
144
|
+
return text;
|
|
145
|
+
}
|
|
146
|
+
handleKeywordToken(token, level) {
|
|
147
|
+
const text = this.applyKeywordCase(token.text);
|
|
148
|
+
this.linePrinter.appendText(text);
|
|
149
|
+
}
|
|
150
|
+
handleCommaToken(token, level, parentContainerType) {
|
|
151
|
+
const text = token.text;
|
|
152
|
+
// Special handling for commas in WithClause when cteOneline is enabled
|
|
153
|
+
if (this.cteOneline && parentContainerType === SqlPrintTokenContainerType.WithClause) {
|
|
154
|
+
this.linePrinter.appendText(text);
|
|
155
|
+
this.linePrinter.appendNewline(level);
|
|
156
|
+
}
|
|
157
|
+
else if (this.commaBreak === 'before') {
|
|
158
|
+
this.linePrinter.appendNewline(level);
|
|
159
|
+
this.linePrinter.appendText(text);
|
|
160
|
+
}
|
|
161
|
+
else if (this.commaBreak === 'after') {
|
|
162
|
+
this.linePrinter.appendText(text);
|
|
163
|
+
this.linePrinter.appendNewline(level);
|
|
164
|
+
}
|
|
165
|
+
else {
|
|
166
|
+
this.linePrinter.appendText(text);
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
handleAndOperatorToken(token, level) {
|
|
170
|
+
const text = this.applyKeywordCase(token.text);
|
|
171
|
+
if (this.andBreak === 'before') {
|
|
172
|
+
this.linePrinter.appendNewline(level);
|
|
173
|
+
this.linePrinter.appendText(text);
|
|
174
|
+
}
|
|
175
|
+
else if (this.andBreak === 'after') {
|
|
176
|
+
this.linePrinter.appendText(text);
|
|
177
|
+
this.linePrinter.appendNewline(level);
|
|
178
|
+
}
|
|
179
|
+
else {
|
|
180
|
+
this.linePrinter.appendText(text);
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
handleJoinClauseToken(token, level) {
|
|
184
|
+
const text = this.applyKeywordCase(token.text);
|
|
185
|
+
// before join clause, add newline
|
|
186
|
+
this.linePrinter.appendNewline(level);
|
|
187
|
+
this.linePrinter.appendText(text);
|
|
188
|
+
}
|
|
189
|
+
handleCommentToken(token) {
|
|
190
|
+
// Handle comments - only output if exportComment is true
|
|
191
|
+
if (this.exportComment) {
|
|
192
|
+
this.linePrinter.appendText(token.text);
|
|
193
|
+
// Always add a space after comment to ensure SQL structure safety
|
|
194
|
+
this.linePrinter.appendText(' ');
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
handleCteOnelineToken(token, level) {
|
|
198
|
+
// Handle CTE with one-liner formatting when cteOneline is enabled
|
|
199
|
+
const onelinePrinter = new SqlPrinter({
|
|
200
|
+
indentChar: '',
|
|
201
|
+
indentSize: 0,
|
|
202
|
+
newline: ' ',
|
|
203
|
+
commaBreak: this.commaBreak,
|
|
204
|
+
andBreak: this.andBreak,
|
|
205
|
+
keywordCase: this.keywordCase,
|
|
206
|
+
exportComment: this.exportComment,
|
|
207
|
+
strictCommentPlacement: this.strictCommentPlacement,
|
|
208
|
+
cteOneline: false, // Prevent recursive CTE oneline processing
|
|
209
|
+
});
|
|
210
|
+
const onelineResult = onelinePrinter.print(token, level);
|
|
211
|
+
this.linePrinter.appendText(onelineResult);
|
|
212
|
+
}
|
|
159
213
|
}
|
|
160
214
|
//# sourceMappingURL=SqlPrinter.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SqlPrinter.js","sourceRoot":"","sources":["../../../../src/transformers/SqlPrinter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,iBAAiB,EAAE,0BAA0B,EAAE,MAAM,yBAAyB,CAAC;AACvG,OAAO,EAAoB,WAAW,EAAiB,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"SqlPrinter.js","sourceRoot":"","sources":["../../../../src/transformers/SqlPrinter.ts"],"names":[],"mappings":"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"}
|