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.
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/index.min.js +54 -50
- package/dist/esm/index.min.js.map +3 -3
- package/dist/esm/src/index.d.ts +1 -0
- package/dist/esm/src/index.js.map +1 -1
- package/dist/esm/src/models/Lexeme.d.ts +8 -0
- package/dist/esm/src/models/SqlComponent.d.ts +20 -0
- package/dist/esm/src/models/SqlComponent.js +46 -0
- package/dist/esm/src/models/SqlComponent.js.map +1 -1
- package/dist/esm/src/parsers/CommandExpressionParser.d.ts +9 -0
- package/dist/esm/src/parsers/CommandExpressionParser.js +118 -14
- package/dist/esm/src/parsers/CommandExpressionParser.js.map +1 -1
- package/dist/esm/src/parsers/CommonTableParser.d.ts +8 -0
- package/dist/esm/src/parsers/CommonTableParser.js +127 -35
- package/dist/esm/src/parsers/CommonTableParser.js.map +1 -1
- package/dist/esm/src/parsers/FromClauseParser.js +2 -2
- package/dist/esm/src/parsers/FromClauseParser.js.map +1 -1
- package/dist/esm/src/parsers/FullNameParser.js +13 -1
- package/dist/esm/src/parsers/FullNameParser.js.map +1 -1
- package/dist/esm/src/parsers/FunctionExpressionParser.js +37 -3
- package/dist/esm/src/parsers/FunctionExpressionParser.js.map +1 -1
- package/dist/esm/src/parsers/JoinClauseParser.d.ts +4 -0
- package/dist/esm/src/parsers/JoinClauseParser.js +54 -20
- package/dist/esm/src/parsers/JoinClauseParser.js.map +1 -1
- package/dist/esm/src/parsers/OrderByClauseParser.js +39 -8
- package/dist/esm/src/parsers/OrderByClauseParser.js.map +1 -1
- package/dist/esm/src/parsers/ParenExpressionParser.js +1 -1
- package/dist/esm/src/parsers/ParenExpressionParser.js.map +1 -1
- package/dist/esm/src/parsers/SelectClauseParser.d.ts +10 -0
- package/dist/esm/src/parsers/SelectClauseParser.js +124 -12
- package/dist/esm/src/parsers/SelectClauseParser.js.map +1 -1
- package/dist/esm/src/parsers/SelectQueryParser.d.ts +12 -0
- package/dist/esm/src/parsers/SelectQueryParser.js +277 -115
- package/dist/esm/src/parsers/SelectQueryParser.js.map +1 -1
- package/dist/esm/src/parsers/SourceAliasExpressionParser.js +15 -4
- package/dist/esm/src/parsers/SourceAliasExpressionParser.js.map +1 -1
- package/dist/esm/src/parsers/SourceParser.js +33 -2
- package/dist/esm/src/parsers/SourceParser.js.map +1 -1
- package/dist/esm/src/parsers/SqlPrintTokenParser.d.ts +62 -0
- package/dist/esm/src/parsers/SqlPrintTokenParser.js +700 -32
- package/dist/esm/src/parsers/SqlPrintTokenParser.js.map +1 -1
- package/dist/esm/src/parsers/SqlTokenizer.d.ts +1 -4
- package/dist/esm/src/parsers/SqlTokenizer.js +108 -52
- package/dist/esm/src/parsers/SqlTokenizer.js.map +1 -1
- package/dist/esm/src/parsers/ValueParser.d.ts +4 -0
- package/dist/esm/src/parsers/ValueParser.js +119 -20
- package/dist/esm/src/parsers/ValueParser.js.map +1 -1
- package/dist/esm/src/parsers/WithClauseParser.d.ts +4 -0
- package/dist/esm/src/parsers/WithClauseParser.js +64 -35
- package/dist/esm/src/parsers/WithClauseParser.js.map +1 -1
- package/dist/esm/src/tokenReaders/CommandTokenReader.js +9 -1
- package/dist/esm/src/tokenReaders/CommandTokenReader.js.map +1 -1
- package/dist/esm/src/transformers/CTEQueryDecomposer.d.ts +69 -0
- package/dist/esm/src/transformers/CTEQueryDecomposer.js +123 -0
- package/dist/esm/src/transformers/CTEQueryDecomposer.js.map +1 -1
- package/dist/esm/src/transformers/LinePrinter.d.ts +17 -2
- package/dist/esm/src/transformers/LinePrinter.js +39 -10
- package/dist/esm/src/transformers/LinePrinter.js.map +1 -1
- package/dist/esm/src/transformers/SqlFormatter.d.ts +44 -16
- package/dist/esm/src/transformers/SqlFormatter.js +2 -2
- package/dist/esm/src/transformers/SqlFormatter.js.map +1 -1
- package/dist/esm/src/transformers/SqlPrinter.d.ts +30 -20
- package/dist/esm/src/transformers/SqlPrinter.js +119 -25
- package/dist/esm/src/transformers/SqlPrinter.js.map +1 -1
- package/dist/esm/src/utils/CommentEditor.d.ts +12 -5
- package/dist/esm/src/utils/CommentEditor.js +67 -28
- package/dist/esm/src/utils/CommentEditor.js.map +1 -1
- package/dist/esm/src/utils/stringUtils.js +21 -9
- package/dist/esm/src/utils/stringUtils.js.map +1 -1
- package/dist/esm/tsconfig.browser.tsbuildinfo +1 -1
- package/dist/index.min.js +54 -50
- package/dist/index.min.js.map +3 -3
- package/dist/src/index.d.ts +1 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/models/Lexeme.d.ts +8 -0
- package/dist/src/models/SqlComponent.d.ts +20 -0
- package/dist/src/models/SqlComponent.js +46 -0
- package/dist/src/models/SqlComponent.js.map +1 -1
- package/dist/src/parsers/CommandExpressionParser.d.ts +9 -0
- package/dist/src/parsers/CommandExpressionParser.js +118 -14
- package/dist/src/parsers/CommandExpressionParser.js.map +1 -1
- package/dist/src/parsers/CommonTableParser.d.ts +8 -0
- package/dist/src/parsers/CommonTableParser.js +127 -35
- package/dist/src/parsers/CommonTableParser.js.map +1 -1
- package/dist/src/parsers/FromClauseParser.js +2 -2
- package/dist/src/parsers/FromClauseParser.js.map +1 -1
- package/dist/src/parsers/FullNameParser.js +13 -1
- package/dist/src/parsers/FullNameParser.js.map +1 -1
- package/dist/src/parsers/FunctionExpressionParser.js +37 -3
- package/dist/src/parsers/FunctionExpressionParser.js.map +1 -1
- package/dist/src/parsers/JoinClauseParser.d.ts +4 -0
- package/dist/src/parsers/JoinClauseParser.js +54 -20
- package/dist/src/parsers/JoinClauseParser.js.map +1 -1
- package/dist/src/parsers/OrderByClauseParser.js +39 -8
- package/dist/src/parsers/OrderByClauseParser.js.map +1 -1
- package/dist/src/parsers/ParenExpressionParser.js +1 -1
- package/dist/src/parsers/ParenExpressionParser.js.map +1 -1
- package/dist/src/parsers/SelectClauseParser.d.ts +10 -0
- package/dist/src/parsers/SelectClauseParser.js +124 -12
- package/dist/src/parsers/SelectClauseParser.js.map +1 -1
- package/dist/src/parsers/SelectQueryParser.d.ts +12 -0
- package/dist/src/parsers/SelectQueryParser.js +280 -115
- package/dist/src/parsers/SelectQueryParser.js.map +1 -1
- package/dist/src/parsers/SourceAliasExpressionParser.js +15 -4
- package/dist/src/parsers/SourceAliasExpressionParser.js.map +1 -1
- package/dist/src/parsers/SourceParser.js +33 -2
- package/dist/src/parsers/SourceParser.js.map +1 -1
- package/dist/src/parsers/SqlPrintTokenParser.d.ts +62 -0
- package/dist/src/parsers/SqlPrintTokenParser.js +700 -32
- package/dist/src/parsers/SqlPrintTokenParser.js.map +1 -1
- package/dist/src/parsers/SqlTokenizer.d.ts +1 -4
- package/dist/src/parsers/SqlTokenizer.js +108 -52
- package/dist/src/parsers/SqlTokenizer.js.map +1 -1
- package/dist/src/parsers/ValueParser.d.ts +4 -0
- package/dist/src/parsers/ValueParser.js +119 -20
- package/dist/src/parsers/ValueParser.js.map +1 -1
- package/dist/src/parsers/WithClauseParser.d.ts +4 -0
- package/dist/src/parsers/WithClauseParser.js +64 -35
- package/dist/src/parsers/WithClauseParser.js.map +1 -1
- package/dist/src/tokenReaders/CommandTokenReader.js +9 -1
- package/dist/src/tokenReaders/CommandTokenReader.js.map +1 -1
- package/dist/src/transformers/CTEQueryDecomposer.d.ts +69 -0
- package/dist/src/transformers/CTEQueryDecomposer.js +123 -0
- package/dist/src/transformers/CTEQueryDecomposer.js.map +1 -1
- package/dist/src/transformers/LinePrinter.d.ts +17 -2
- package/dist/src/transformers/LinePrinter.js +39 -10
- package/dist/src/transformers/LinePrinter.js.map +1 -1
- package/dist/src/transformers/SqlFormatter.d.ts +44 -16
- package/dist/src/transformers/SqlFormatter.js +13 -2
- package/dist/src/transformers/SqlFormatter.js.map +1 -1
- package/dist/src/transformers/SqlPrinter.d.ts +30 -20
- package/dist/src/transformers/SqlPrinter.js +119 -25
- package/dist/src/transformers/SqlPrinter.js.map +1 -1
- package/dist/src/utils/CommentEditor.d.ts +12 -5
- package/dist/src/utils/CommentEditor.js +67 -28
- package/dist/src/utils/CommentEditor.js.map +1 -1
- package/dist/src/utils/stringUtils.js +21 -9
- package/dist/src/utils/stringUtils.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +3 -3
|
@@ -54,6 +54,13 @@ class SourceParser {
|
|
|
54
54
|
static parseTableSource(fullNameResult) {
|
|
55
55
|
const { namespaces, name, newIndex } = fullNameResult;
|
|
56
56
|
const value = new Clause_1.TableSource(namespaces, name.name);
|
|
57
|
+
// Transfer positioned comments from the table name to TableSource
|
|
58
|
+
if (name.positionedComments && name.positionedComments.length > 0) {
|
|
59
|
+
value.positionedComments = name.positionedComments;
|
|
60
|
+
}
|
|
61
|
+
else if (name.comments && name.comments.length > 0) {
|
|
62
|
+
value.comments = name.comments;
|
|
63
|
+
}
|
|
57
64
|
return { value, newIndex };
|
|
58
65
|
}
|
|
59
66
|
static parseFunctionSource(lexemes, fullNameResult) {
|
|
@@ -67,6 +74,8 @@ class SourceParser {
|
|
|
67
74
|
}
|
|
68
75
|
static parseParenSource(lexemes, index) {
|
|
69
76
|
let idx = index;
|
|
77
|
+
// capture the open parenthesis and its comments
|
|
78
|
+
const openParenToken = lexemes[idx];
|
|
70
79
|
// skip the open parenthesis
|
|
71
80
|
idx++;
|
|
72
81
|
if (idx >= lexemes.length) {
|
|
@@ -75,7 +84,7 @@ class SourceParser {
|
|
|
75
84
|
// Support both SELECT and VALUES in subqueries
|
|
76
85
|
const keyword = lexemes[idx].value;
|
|
77
86
|
if (keyword === "select" || keyword === "values" || keyword === "with") {
|
|
78
|
-
const result = this.parseSubQuerySource(lexemes, idx);
|
|
87
|
+
const result = this.parseSubQuerySource(lexemes, idx, openParenToken);
|
|
79
88
|
idx = result.newIndex;
|
|
80
89
|
if (idx < lexemes.length && lexemes[idx].type == Lexeme_1.TokenType.CloseParen) {
|
|
81
90
|
// skip the closing parenthesis
|
|
@@ -100,11 +109,33 @@ class SourceParser {
|
|
|
100
109
|
}
|
|
101
110
|
throw new Error(`Syntax error at position ${idx}: Expected 'SELECT' keyword, 'VALUES' keyword, or opening parenthesis '(' but found "${lexemes[idx].value}".`);
|
|
102
111
|
}
|
|
103
|
-
static parseSubQuerySource(lexemes, index) {
|
|
112
|
+
static parseSubQuerySource(lexemes, index, openParenToken) {
|
|
104
113
|
let idx = index;
|
|
105
114
|
// Use the new parseFromLexeme method and destructure the result
|
|
106
115
|
const { value: selectQuery, newIndex } = SelectQueryParser_1.SelectQueryParser.parseFromLexeme(lexemes, idx);
|
|
107
116
|
idx = newIndex;
|
|
117
|
+
// Transfer opening paren comments to the subquery (similar to function arguments)
|
|
118
|
+
if (openParenToken && openParenToken.positionedComments && openParenToken.positionedComments.length > 0) {
|
|
119
|
+
// Convert "after" positioned comments from opening paren to "before" comments for the subquery
|
|
120
|
+
const afterComments = openParenToken.positionedComments.filter(pc => pc.position === 'after');
|
|
121
|
+
if (afterComments.length > 0) {
|
|
122
|
+
const beforeComments = afterComments.map(pc => ({
|
|
123
|
+
position: 'before',
|
|
124
|
+
comments: pc.comments
|
|
125
|
+
}));
|
|
126
|
+
// Merge with existing positioned comments on the subquery
|
|
127
|
+
if (selectQuery.positionedComments) {
|
|
128
|
+
selectQuery.positionedComments = [...beforeComments, ...selectQuery.positionedComments];
|
|
129
|
+
}
|
|
130
|
+
else {
|
|
131
|
+
selectQuery.positionedComments = beforeComments;
|
|
132
|
+
}
|
|
133
|
+
// Clear legacy comments to prevent duplication
|
|
134
|
+
if (selectQuery.comments) {
|
|
135
|
+
selectQuery.comments = null;
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
}
|
|
108
139
|
const subQuerySource = new Clause_1.SubQuerySource(selectQuery);
|
|
109
140
|
return { value: subQuerySource, newIndex: idx };
|
|
110
141
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SourceParser.js","sourceRoot":"","sources":["../../../src/parsers/SourceParser.ts"],"names":[],"mappings":";;;AAAA,qDAAkD;AAClD,6CAAgG;AAChG,6CAAqD;AACrD,2DAAwD;AACxD,iDAA8C;AAC9C,+CAA4C;AAE5C,MAAa,YAAY;IACrB,uCAAuC;IAChC,MAAM,CAAC,KAAK,CAAC,KAAa;QAC7B,MAAM,SAAS,GAAG,IAAI,2BAAY,CAAC,KAAK,CAAC,CAAC,CAAC,uBAAuB;QAClE,MAAM,OAAO,GAAG,SAAS,CAAC,UAAU,EAAE,CAAC,CAAC,aAAa;QAErD,QAAQ;QACR,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QAEhD,sCAAsC;QACtC,IAAI,MAAM,CAAC,QAAQ,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;YACnC,MAAM,IAAI,KAAK,CAAC,mCAAmC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,iBAAiB,MAAM,CAAC,QAAQ,qEAAqE,CAAC,CAAC;QAC5L,CAAC;QAED,OAAO,MAAM,CAAC,KAAK,CAAC;IACxB,CAAC;IAED;;;;;;;;;OASG;IACI,MAAM,CAAC,2BAA2B,CAAC,OAAiB,EAAE,KAAa;QACtE,MAAM,cAAc,GAAG,+BAAc,CAAC,eAAe,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QACtE,OAAO,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,CAAC;IACjD,CAAC;IAED,uCAAuC;IAChC,MAAM,CAAC,eAAe,CAAC,OAAiB,EAAE,KAAa;QAC1D,IAAI,GAAG,GAAG,KAAK,CAAC;QAEhB,kBAAkB;QAClB,IAAI,GAAG,GAAG,OAAO,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,kBAAS,CAAC,SAAS,CAAC,EAAE,CAAC;YACpE,OAAO,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QAC/C,CAAC;QAED,wDAAwD;QACxD,MAAM,cAAc,GAAG,+BAAc,CAAC,eAAe,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QAEpE,4DAA4D;QAC5D,IAAI,cAAc,CAAC,aAAa,GAAG,kBAAS,CAAC,QAAQ,EAAE,CAAC;YACpD,8DAA8D;YAC9D,OAAO,YAAY,CAAC,mBAAmB,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;QACrE,CAAC;QAED,oEAAoE;QACpE,OAAO,YAAY,CAAC,gBAAgB,CAAC,cAAc,CAAC,CAAC;IACzD,CAAC;IAEO,MAAM,CAAC,gBAAgB,CAAC,cAA4E;QACxG,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,cAAc,CAAC;QACtD,MAAM,KAAK,GAAG,IAAI,oBAAW,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"SourceParser.js","sourceRoot":"","sources":["../../../src/parsers/SourceParser.ts"],"names":[],"mappings":";;;AAAA,qDAAkD;AAClD,6CAAgG;AAChG,6CAAqD;AACrD,2DAAwD;AACxD,iDAA8C;AAC9C,+CAA4C;AAE5C,MAAa,YAAY;IACrB,uCAAuC;IAChC,MAAM,CAAC,KAAK,CAAC,KAAa;QAC7B,MAAM,SAAS,GAAG,IAAI,2BAAY,CAAC,KAAK,CAAC,CAAC,CAAC,uBAAuB;QAClE,MAAM,OAAO,GAAG,SAAS,CAAC,UAAU,EAAE,CAAC,CAAC,aAAa;QAErD,QAAQ;QACR,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QAEhD,sCAAsC;QACtC,IAAI,MAAM,CAAC,QAAQ,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;YACnC,MAAM,IAAI,KAAK,CAAC,mCAAmC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,iBAAiB,MAAM,CAAC,QAAQ,qEAAqE,CAAC,CAAC;QAC5L,CAAC;QAED,OAAO,MAAM,CAAC,KAAK,CAAC;IACxB,CAAC;IAED;;;;;;;;;OASG;IACI,MAAM,CAAC,2BAA2B,CAAC,OAAiB,EAAE,KAAa;QACtE,MAAM,cAAc,GAAG,+BAAc,CAAC,eAAe,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QACtE,OAAO,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,CAAC;IACjD,CAAC;IAED,uCAAuC;IAChC,MAAM,CAAC,eAAe,CAAC,OAAiB,EAAE,KAAa;QAC1D,IAAI,GAAG,GAAG,KAAK,CAAC;QAEhB,kBAAkB;QAClB,IAAI,GAAG,GAAG,OAAO,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,kBAAS,CAAC,SAAS,CAAC,EAAE,CAAC;YACpE,OAAO,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QAC/C,CAAC;QAED,wDAAwD;QACxD,MAAM,cAAc,GAAG,+BAAc,CAAC,eAAe,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QAEpE,4DAA4D;QAC5D,IAAI,cAAc,CAAC,aAAa,GAAG,kBAAS,CAAC,QAAQ,EAAE,CAAC;YACpD,8DAA8D;YAC9D,OAAO,YAAY,CAAC,mBAAmB,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;QACrE,CAAC;QAED,oEAAoE;QACpE,OAAO,YAAY,CAAC,gBAAgB,CAAC,cAAc,CAAC,CAAC;IACzD,CAAC;IAEO,MAAM,CAAC,gBAAgB,CAAC,cAA4E;QACxG,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,cAAc,CAAC;QACtD,MAAM,KAAK,GAAG,IAAI,oBAAW,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAErD,kEAAkE;QAClE,IAAI,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,kBAAkB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAChE,KAAK,CAAC,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,CAAC;QACvD,CAAC;aAAM,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACnD,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QACnC,CAAC;QAED,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;IAC/B,CAAC;IAEO,MAAM,CAAC,mBAAmB,CAC9B,OAAiB,EACjB,cAA4E;QAE5E,IAAI,GAAG,GAAG,cAAc,CAAC,QAAQ,CAAC;QAClC,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,cAAc,CAAC;QAE5C,MAAM,QAAQ,GAAG,yBAAW,CAAC,aAAa,CAAC,kBAAS,CAAC,SAAS,EAAE,kBAAS,CAAC,UAAU,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;QACpG,GAAG,GAAG,QAAQ,CAAC,QAAQ,CAAC;QAExB,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC;QAC/B,MAAM,MAAM,GAAG,IAAI,uBAAc,CAAC,EAAE,UAAU,EAAE,UAAU,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;QAClG,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC;IAC5C,CAAC;IAEO,MAAM,CAAC,gBAAgB,CAAC,OAAiB,EAAE,KAAa;QAC5D,IAAI,GAAG,GAAG,KAAK,CAAC;QAChB,gDAAgD;QAChD,MAAM,cAAc,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;QACpC,4BAA4B;QAC5B,GAAG,EAAE,CAAC;QACN,IAAI,GAAG,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACxB,MAAM,IAAI,KAAK,CAAC,qDAAqD,GAAG,uEAAuE,CAAC,CAAC;QACrJ,CAAC;QAED,+CAA+C;QAC/C,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC;QACnC,IAAI,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,MAAM,EAAE,CAAC;YACrE,MAAM,MAAM,GAAG,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,GAAG,EAAE,cAAc,CAAC,CAAC;YACtE,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC;YACtB,IAAI,GAAG,GAAG,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,kBAAS,CAAC,UAAU,EAAE,CAAC;gBACpE,+BAA+B;gBAC/B,GAAG,EAAE,CAAC;YACV,CAAC;iBAAM,CAAC;gBACJ,MAAM,IAAI,KAAK,CAAC,4BAA4B,GAAG,mGAAmG,CAAC,CAAC;YACxJ,CAAC;YACD,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC;QAClD,CAAC;aAAM,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,kBAAS,CAAC,SAAS,EAAE,CAAC;YAClD,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;YACnD,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC;YACtB,IAAI,GAAG,GAAG,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,kBAAS,CAAC,UAAU,EAAE,CAAC;gBACpE,+BAA+B;gBAC/B,GAAG,EAAE,CAAC;YACV,CAAC;iBAAM,CAAC;gBACJ,MAAM,IAAI,KAAK,CAAC,4BAA4B,GAAG,mGAAmG,CAAC,CAAC;YACxJ,CAAC;YACD,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC;QAClD,CAAC;QAED,MAAM,IAAI,KAAK,CAAC,4BAA4B,GAAG,wFAAwF,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;IACnK,CAAC;IAEO,MAAM,CAAC,mBAAmB,CAAC,OAAiB,EAAE,KAAa,EAAE,cAAuB;QACxF,IAAI,GAAG,GAAG,KAAK,CAAC;QAEhB,gEAAgE;QAChE,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,GAAG,qCAAiB,CAAC,eAAe,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QACzF,GAAG,GAAG,QAAQ,CAAC;QAEf,kFAAkF;QAClF,IAAI,cAAc,IAAI,cAAc,CAAC,kBAAkB,IAAI,cAAc,CAAC,kBAAkB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtG,+FAA+F;YAC/F,MAAM,aAAa,GAAG,cAAc,CAAC,kBAAkB,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC;YAC9F,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC3B,MAAM,cAAc,GAAG,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;oBAC5C,QAAQ,EAAE,QAAiB;oBAC3B,QAAQ,EAAE,EAAE,CAAC,QAAQ;iBACxB,CAAC,CAAC,CAAC;gBAEJ,0DAA0D;gBAC1D,IAAI,WAAW,CAAC,kBAAkB,EAAE,CAAC;oBACjC,WAAW,CAAC,kBAAkB,GAAG,CAAC,GAAG,cAAc,EAAE,GAAG,WAAW,CAAC,kBAAkB,CAAC,CAAC;gBAC5F,CAAC;qBAAM,CAAC;oBACJ,WAAW,CAAC,kBAAkB,GAAG,cAAc,CAAC;gBACpD,CAAC;gBAED,+CAA+C;gBAC/C,IAAI,WAAW,CAAC,QAAQ,EAAE,CAAC;oBACvB,WAAW,CAAC,QAAQ,GAAG,IAAI,CAAC;gBAChC,CAAC;YACL,CAAC;QACL,CAAC;QAED,MAAM,cAAc,GAAG,IAAI,uBAAc,CAAC,WAAW,CAAC,CAAC;QACvD,OAAO,EAAE,KAAK,EAAE,cAAc,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC;IACpD,CAAC;CACJ;AA1JD,oCA0JC"}
|
|
@@ -33,10 +33,13 @@ export declare class SqlPrintTokenParser implements SqlComponentVisitor<SqlPrint
|
|
|
33
33
|
private static readonly PAREN_OPEN_TOKEN;
|
|
34
34
|
private static readonly PAREN_CLOSE_TOKEN;
|
|
35
35
|
private static readonly DOT_TOKEN;
|
|
36
|
+
private static _selfHandlingComponentTypes;
|
|
37
|
+
private static getSelfHandlingComponentTypes;
|
|
36
38
|
private handlers;
|
|
37
39
|
parameterDecorator: ParameterDecorator;
|
|
38
40
|
identifierDecorator: IdentifierDecorator;
|
|
39
41
|
index: number;
|
|
42
|
+
private commentStyle;
|
|
40
43
|
constructor(options?: {
|
|
41
44
|
preset?: FormatterConfig;
|
|
42
45
|
identifierEscape?: {
|
|
@@ -48,6 +51,7 @@ export declare class SqlPrintTokenParser implements SqlComponentVisitor<SqlPrint
|
|
|
48
51
|
end: string;
|
|
49
52
|
};
|
|
50
53
|
parameterStyle?: 'anonymous' | 'indexed' | 'named';
|
|
54
|
+
commentStyle?: 'block' | 'smart';
|
|
51
55
|
});
|
|
52
56
|
/**
|
|
53
57
|
* Pretty-prints a BinarySelectQuery (e.g., UNION, INTERSECT, EXCEPT).
|
|
@@ -72,17 +76,59 @@ export declare class SqlPrintTokenParser implements SqlComponentVisitor<SqlPrint
|
|
|
72
76
|
token: SqlPrintToken;
|
|
73
77
|
params: any[] | Record<string, any>[] | Record<string, any>;
|
|
74
78
|
};
|
|
79
|
+
/**
|
|
80
|
+
* Check if a component handles its own comments
|
|
81
|
+
*/
|
|
82
|
+
private componentHandlesOwnComments;
|
|
75
83
|
visit(arg: SqlComponent): SqlPrintToken;
|
|
84
|
+
/**
|
|
85
|
+
* Check if a component has positioned comments
|
|
86
|
+
*/
|
|
87
|
+
private hasPositionedComments;
|
|
88
|
+
/**
|
|
89
|
+
* Check if a component has legacy comments
|
|
90
|
+
*/
|
|
91
|
+
private hasLegacyComments;
|
|
92
|
+
/**
|
|
93
|
+
* Centralized comment handling - checks positioned comments first, falls back to legacy
|
|
94
|
+
*/
|
|
95
|
+
private addComponentComments;
|
|
96
|
+
/**
|
|
97
|
+
* Adds positioned comment tokens to a SqlPrintToken for inline formatting
|
|
98
|
+
*/
|
|
99
|
+
private addPositionedCommentsToToken;
|
|
76
100
|
/**
|
|
77
101
|
* Adds comment tokens to a SqlPrintToken based on the comments array
|
|
78
102
|
*/
|
|
79
103
|
private addCommentsToToken;
|
|
104
|
+
/**
|
|
105
|
+
* Creates inline comment sequence for multiple comments without newlines
|
|
106
|
+
*/
|
|
107
|
+
private createInlineCommentSequence;
|
|
80
108
|
/**
|
|
81
109
|
* Creates CommentBlock containers for the given comments.
|
|
82
110
|
* Each CommentBlock contains: Comment -> CommentNewline -> Space
|
|
83
111
|
* This structure supports both oneliner and multiline formatting modes.
|
|
84
112
|
*/
|
|
85
113
|
private createCommentBlocks;
|
|
114
|
+
/**
|
|
115
|
+
* Creates smart comment blocks by merging consecutive block comments into multi-line format
|
|
116
|
+
*/
|
|
117
|
+
private createSmartCommentBlocks;
|
|
118
|
+
/**
|
|
119
|
+
* Determines if a comment should be merged with consecutive comments
|
|
120
|
+
*/
|
|
121
|
+
private shouldMergeComment;
|
|
122
|
+
/**
|
|
123
|
+
* Creates a multi-line block comment structure from consecutive comments
|
|
124
|
+
* Returns a CommentBlock containing multiple comment lines for proper LinePrinter integration
|
|
125
|
+
*/
|
|
126
|
+
private createMultiLineCommentBlock;
|
|
127
|
+
/**
|
|
128
|
+
* Creates a multi-line comment block specifically for headerComments
|
|
129
|
+
* headerComments come as pre-split lines, so we handle them differently
|
|
130
|
+
*/
|
|
131
|
+
private createHeaderMultiLineCommentBlock;
|
|
86
132
|
/**
|
|
87
133
|
* Creates a single CommentBlock with the standard structure:
|
|
88
134
|
* Comment -> CommentNewline -> Space
|
|
@@ -92,11 +138,27 @@ export declare class SqlPrintTokenParser implements SqlComponentVisitor<SqlPrint
|
|
|
92
138
|
* - Oneliner mode: Comment + space (commentNewline is skipped)
|
|
93
139
|
*/
|
|
94
140
|
private createSingleCommentBlock;
|
|
141
|
+
/**
|
|
142
|
+
* Formats a comment, preserving line comment format for -- comments
|
|
143
|
+
* and converting others to block format for safety
|
|
144
|
+
*/
|
|
145
|
+
private formatComment;
|
|
146
|
+
/**
|
|
147
|
+
* Formats comments using smart style rules:
|
|
148
|
+
* - Only multi-line block comment merging is supported
|
|
149
|
+
* - Single-line comments remain as block comments (no dash conversion)
|
|
150
|
+
*/
|
|
151
|
+
private formatCommentSmart;
|
|
95
152
|
/**
|
|
96
153
|
* Inserts comment blocks into a token and handles spacing logic.
|
|
97
154
|
* Adds separator spaces for clause-level containers and manages duplicate space removal.
|
|
98
155
|
*/
|
|
99
156
|
private insertCommentBlocksWithSpacing;
|
|
157
|
+
/**
|
|
158
|
+
* Handles positioned comments for ParenExpression with special spacing rules.
|
|
159
|
+
* ParenExpression comments should be adjacent to parentheses without separator spaces.
|
|
160
|
+
*/
|
|
161
|
+
private addPositionedCommentsToParenExpression;
|
|
100
162
|
/**
|
|
101
163
|
* Determines whether a separator space should be added after comments for the given container type.
|
|
102
164
|
*
|