rawsql-ts 0.24.2 → 0.24.3

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 (50) hide show
  1. package/dist/esm/index.min.js +7 -7
  2. package/dist/esm/index.min.js.map +2 -2
  3. package/dist/esm/parsers/CommandExpressionParser.d.ts +2 -0
  4. package/dist/esm/parsers/CommandExpressionParser.js +49 -4
  5. package/dist/esm/parsers/CommandExpressionParser.js.map +1 -1
  6. package/dist/esm/parsers/HavingParser.js +6 -0
  7. package/dist/esm/parsers/HavingParser.js.map +1 -1
  8. package/dist/esm/parsers/JoinOnClauseParser.js +6 -0
  9. package/dist/esm/parsers/JoinOnClauseParser.js.map +1 -1
  10. package/dist/esm/parsers/LimitClauseParser.js +6 -0
  11. package/dist/esm/parsers/LimitClauseParser.js.map +1 -1
  12. package/dist/esm/parsers/OffsetClauseParser.js +6 -0
  13. package/dist/esm/parsers/OffsetClauseParser.js.map +1 -1
  14. package/dist/esm/parsers/OrderByClauseParser.d.ts +2 -0
  15. package/dist/esm/parsers/OrderByClauseParser.js +42 -29
  16. package/dist/esm/parsers/OrderByClauseParser.js.map +1 -1
  17. package/dist/esm/parsers/SqlPrintTokenParser.d.ts +3 -0
  18. package/dist/esm/parsers/SqlPrintTokenParser.js +70 -6
  19. package/dist/esm/parsers/SqlPrintTokenParser.js.map +1 -1
  20. package/dist/esm/parsers/ValueParser.js +5 -3
  21. package/dist/esm/parsers/ValueParser.js.map +1 -1
  22. package/dist/esm/transformers/SqlPrinter.d.ts +9 -0
  23. package/dist/esm/transformers/SqlPrinter.js +143 -5
  24. package/dist/esm/transformers/SqlPrinter.js.map +1 -1
  25. package/dist/index.min.js +7 -7
  26. package/dist/index.min.js.map +2 -2
  27. package/dist/parsers/CommandExpressionParser.js +49 -4
  28. package/dist/parsers/CommandExpressionParser.js.map +1 -1
  29. package/dist/parsers/HavingParser.js +6 -0
  30. package/dist/parsers/HavingParser.js.map +1 -1
  31. package/dist/parsers/JoinOnClauseParser.js +6 -0
  32. package/dist/parsers/JoinOnClauseParser.js.map +1 -1
  33. package/dist/parsers/LimitClauseParser.js +6 -0
  34. package/dist/parsers/LimitClauseParser.js.map +1 -1
  35. package/dist/parsers/OffsetClauseParser.js +6 -0
  36. package/dist/parsers/OffsetClauseParser.js.map +1 -1
  37. package/dist/parsers/OrderByClauseParser.js +42 -29
  38. package/dist/parsers/OrderByClauseParser.js.map +1 -1
  39. package/dist/parsers/SqlPrintTokenParser.js +71 -6
  40. package/dist/parsers/SqlPrintTokenParser.js.map +1 -1
  41. package/dist/parsers/ValueParser.js +5 -3
  42. package/dist/parsers/ValueParser.js.map +1 -1
  43. package/dist/src/parsers/CommandExpressionParser.d.ts +2 -0
  44. package/dist/src/parsers/OrderByClauseParser.d.ts +2 -0
  45. package/dist/src/parsers/SqlPrintTokenParser.d.ts +3 -0
  46. package/dist/src/transformers/SqlPrinter.d.ts +9 -0
  47. package/dist/transformers/SqlPrinter.js +143 -5
  48. package/dist/transformers/SqlPrinter.js.map +1 -1
  49. package/dist/tsconfig.browser.tsbuildinfo +1 -1
  50. package/package.json +1 -1
@@ -8,6 +8,7 @@ export declare class CommandExpressionParser {
8
8
  private static parseModifierUnaryExpression;
9
9
  private static parseCaseExpression;
10
10
  private static parseCaseWhenExpression;
11
+ private static splitCaseWhenKeywordComments;
11
12
  private static parseSwitchCaseArgument;
12
13
  private static parseAdditionalWhenClauses;
13
14
  private static parseElseClause;
@@ -15,6 +16,7 @@ export declare class CommandExpressionParser {
15
16
  private static extractKeywordComments;
16
17
  private static applySwitchCaseComments;
17
18
  private static isCommandWithValue;
19
+ private static addPositionedComments;
18
20
  private static parseCaseConditionValuePair;
19
21
  /**
20
22
  * Convert legacy comments to positioned comments format
@@ -52,9 +52,11 @@ export class CommandExpressionParser {
52
52
  }
53
53
  static parseCaseWhenExpression(lexemes, index, caseWhenKeywordComments, caseWhenKeywordPositionedComments) {
54
54
  let idx = index;
55
+ const commentPayload = this.splitCaseWhenKeywordComments(caseWhenKeywordComments, caseWhenKeywordPositionedComments);
55
56
  // Parse the first WHEN clause
56
57
  const casewhenResult = this.parseCaseConditionValuePair(lexemes, idx);
57
58
  idx = casewhenResult.newIndex;
59
+ this.addPositionedComments(casewhenResult.value, commentPayload.firstWhenPositioned);
58
60
  // Add the initial WHEN-THEN pair to the list
59
61
  const caseWhenList = [casewhenResult.value];
60
62
  // Process remaining WHEN-ELSE-END parts
@@ -63,15 +65,48 @@ export class CommandExpressionParser {
63
65
  // Create CASE expression with condition null (uses WHEN conditions instead of a simple CASE)
64
66
  const result = new CaseExpression(null, switchCaseResult.value);
65
67
  // Assign CASE WHEN keyword comments to the CaseExpression (positioned comments only for unified spec)
66
- if (caseWhenKeywordPositionedComments && caseWhenKeywordPositionedComments.length > 0) {
67
- result.positionedComments = caseWhenKeywordPositionedComments;
68
+ if (commentPayload.caseExpressionPositioned && commentPayload.caseExpressionPositioned.length > 0) {
69
+ result.positionedComments = commentPayload.caseExpressionPositioned;
68
70
  }
69
- else if (caseWhenKeywordComments && caseWhenKeywordComments.length > 0) {
71
+ else if (commentPayload.firstWhenPositioned && commentPayload.firstWhenPositioned.length > 0) {
72
+ result.positionedComments = [];
73
+ }
74
+ else if (commentPayload.legacyCaseExpression && commentPayload.legacyCaseExpression.length > 0) {
70
75
  // Convert legacy comments to positioned comments for unified spec
71
- result.positionedComments = [CommandExpressionParser.convertLegacyToPositioned(caseWhenKeywordComments, 'before')];
76
+ result.positionedComments = [CommandExpressionParser.convertLegacyToPositioned(commentPayload.legacyCaseExpression, 'before')];
72
77
  }
73
78
  return { value: result, newIndex: idx };
74
79
  }
80
+ static splitCaseWhenKeywordComments(caseWhenKeywordComments, caseWhenKeywordPositionedComments) {
81
+ if (!caseWhenKeywordPositionedComments || caseWhenKeywordPositionedComments.length === 0) {
82
+ return {
83
+ caseExpressionPositioned: null,
84
+ firstWhenPositioned: null,
85
+ legacyCaseExpression: caseWhenKeywordComments !== null && caseWhenKeywordComments !== void 0 ? caseWhenKeywordComments : null,
86
+ };
87
+ }
88
+ const caseExpressionPositioned = [];
89
+ const firstWhenPositioned = [];
90
+ for (const comment of caseWhenKeywordPositionedComments) {
91
+ if (comment.position === 'after') {
92
+ firstWhenPositioned.push({
93
+ position: 'before',
94
+ comments: [...comment.comments],
95
+ });
96
+ }
97
+ else {
98
+ caseExpressionPositioned.push({
99
+ position: comment.position,
100
+ comments: [...comment.comments],
101
+ });
102
+ }
103
+ }
104
+ return {
105
+ caseExpressionPositioned: caseExpressionPositioned.length > 0 ? caseExpressionPositioned : null,
106
+ firstWhenPositioned: firstWhenPositioned.length > 0 ? firstWhenPositioned : null,
107
+ legacyCaseExpression: null,
108
+ };
109
+ }
75
110
  // parseSwitchCaseArgument method processes the WHEN, ELSE, and END clauses of a CASE expression.
76
111
  static parseSwitchCaseArgument(lexemes, index, initialWhenThenList) {
77
112
  let idx = index;
@@ -169,6 +204,16 @@ export class CommandExpressionParser {
169
204
  static isCommandWithValue(lexeme, value) {
170
205
  return ((lexeme.type & TokenType.Command) !== 0) && lexeme.value === value;
171
206
  }
207
+ static addPositionedComments(target, comments) {
208
+ var _a;
209
+ if (!comments || comments.length === 0) {
210
+ return;
211
+ }
212
+ target.positionedComments = [
213
+ ...((_a = target.positionedComments) !== null && _a !== void 0 ? _a : []),
214
+ ...comments,
215
+ ];
216
+ }
172
217
  static parseCaseConditionValuePair(lexemes, index) {
173
218
  let idx = index;
174
219
  const condition = ValueParser.parseFromLexeme(lexemes, idx);
@@ -1 +1 @@
1
- {"version":3,"file":"CommandExpressionParser.js","sourceRoot":"","sources":["../../../src/parsers/CommandExpressionParser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmC,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC9E,OAAO,EAAmB,cAAc,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,eAAe,EAAkB,MAAM,0BAA0B,CAAC;AAClJ,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAI5C,MAAM,OAAO,uBAAuB;IACzB,MAAM,CAAC,eAAe,CAAC,OAAiB,EAAE,KAAa;QAC1D,IAAI,GAAG,GAAG,KAAK,CAAC;QAChB,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;QAC7B,IAAI,OAAO,CAAC,KAAK,KAAK,MAAM,EAAE,CAAC;YAC3B,iDAAiD;YACjD,MAAM,mBAAmB,GAAG,OAAO,CAAC,QAAQ,CAAC;YAC7C,MAAM,6BAA6B,GAAG,OAAO,CAAC,kBAAkB,CAAC;YACjE,GAAG,EAAE,CAAC;YACN,OAAO,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,GAAG,EAAE,mBAAmB,EAAE,6BAA6B,CAAC,CAAC;QACtG,CAAC;aAAM,IAAI,OAAO,CAAC,KAAK,KAAK,WAAW,EAAE,CAAC;YACvC,sDAAsD;YACtD,MAAM,uBAAuB,GAAG,OAAO,CAAC,QAAQ,CAAC;YACjD,MAAM,iCAAiC,GAAG,OAAO,CAAC,kBAAkB,CAAC;YACrE,GAAG,EAAE,CAAC;YACN,OAAO,IAAI,CAAC,uBAAuB,CAAC,OAAO,EAAE,GAAG,EAAE,uBAAuB,EAAE,iCAAiC,CAAC,CAAC;QAClH,CAAC;QAED,OAAO,IAAI,CAAC,4BAA4B,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IAC3D,CAAC;IAEO,MAAM,CAAC,4BAA4B,CAAC,OAAiB,EAAE,KAAa;QACxE,IAAI,GAAG,GAAG,KAAK,CAAC;QAChB,sCAAsC;QACtC,IAAI,GAAG,GAAG,OAAO,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC;YAClE,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC;YACnC,GAAG,EAAE,CAAC;YACN,MAAM,MAAM,GAAG,WAAW,CAAC,eAAe,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;YACzD,OAAO,EAAE,KAAK,EAAE,IAAI,eAAe,CAAC,OAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC;QAC7F,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,8CAA8C,GAAG,aAAa,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;IACxG,CAAC;IAEO,MAAM,CAAC,mBAAmB,CAAC,OAAiB,EAAE,KAAa,EAAE,mBAAqC,EAAE,6BAAmC;QAC3I,IAAI,GAAG,GAAG,KAAK,CAAC;QAChB,MAAM,SAAS,GAAG,WAAW,CAAC,eAAe,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QAC5D,GAAG,GAAG,SAAS,CAAC,QAAQ,CAAC;QAEzB,MAAM,gBAAgB,GAAG,IAAI,CAAC,uBAAuB,CAAC,OAAO,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;QACxE,GAAG,GAAG,gBAAgB,CAAC,QAAQ,CAAC;QAEhC,yBAAyB;QACzB,MAAM,MAAM,GAAG,IAAI,cAAc,CAAC,SAAS,CAAC,KAAK,EAAE,gBAAgB,CAAC,KAAK,CAAC,CAAC;QAE3E,iGAAiG;QACjG,IAAI,6BAA6B,IAAI,6BAA6B,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC5E,MAAM,CAAC,kBAAkB,GAAG,6BAA6B,CAAC;QAC9D,CAAC;aAAM,IAAI,mBAAmB,IAAI,mBAAmB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC/D,kEAAkE;YAClE,MAAM,CAAC,kBAAkB,GAAG,CAAC,uBAAuB,CAAC,yBAAyB,CAAC,mBAAmB,EAAE,QAAQ,CAAC,CAAC,CAAC;QACnH,CAAC;QAED,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC;IAC5C,CAAC;IAEO,MAAM,CAAC,uBAAuB,CAAC,OAAiB,EAAE,KAAa,EAAE,uBAAyC,EAAE,iCAAuC;QACvJ,IAAI,GAAG,GAAG,KAAK,CAAC;QAEhB,8BAA8B;QAC9B,MAAM,cAAc,GAAG,IAAI,CAAC,2BAA2B,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QACtE,GAAG,GAAG,cAAc,CAAC,QAAQ,CAAC;QAE9B,6CAA6C;QAC7C,MAAM,YAAY,GAAG,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QAE5C,wCAAwC;QACxC,MAAM,gBAAgB,GAAG,IAAI,CAAC,uBAAuB,CAAC,OAAO,EAAE,GAAG,EAAE,YAAY,CAAC,CAAC;QAClF,GAAG,GAAG,gBAAgB,CAAC,QAAQ,CAAC;QAEhC,6FAA6F;QAC7F,MAAM,MAAM,GAAG,IAAI,cAAc,CAAC,IAAI,EAAE,gBAAgB,CAAC,KAAK,CAAC,CAAC;QAEhE,sGAAsG;QACtG,IAAI,iCAAiC,IAAI,iCAAiC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACpF,MAAM,CAAC,kBAAkB,GAAG,iCAAiC,CAAC;QAClE,CAAC;aAAM,IAAI,uBAAuB,IAAI,uBAAuB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvE,kEAAkE;YAClE,MAAM,CAAC,kBAAkB,GAAG,CAAC,uBAAuB,CAAC,yBAAyB,CAAC,uBAAuB,EAAE,QAAQ,CAAC,CAAC,CAAC;QACvH,CAAC;QAED,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC;IAC5C,CAAC;IAED,iGAAiG;IACzF,MAAM,CAAC,uBAAuB,CAClC,OAAiB,EACjB,KAAa,EACb,mBAAuC;QAEvC,IAAI,GAAG,GAAG,KAAK,CAAC;QAChB,MAAM,YAAY,GAAG,CAAC,GAAG,mBAAmB,CAAC,CAAC;QAE9C,yBAAyB;QACzB,GAAG,GAAG,IAAI,CAAC,0BAA0B,CAAC,OAAO,EAAE,GAAG,EAAE,YAAY,CAAC,CAAC;QAElE,6BAA6B;QAC7B,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QAC5F,GAAG,GAAG,SAAS,CAAC;QAEhB,4BAA4B;QAC5B,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QAC9E,GAAG,GAAG,QAAQ,CAAC;QAEf,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5B,MAAM,IAAI,KAAK,CAAC,gEAAgE,GAAG,GAAG,CAAC,CAAC;QAC5F,CAAC;QAED,wDAAwD;QACxD,MAAM,aAAa,GAAG,IAAI,kBAAkB,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;QACtE,IAAI,CAAC,uBAAuB,CAAC,aAAa,EAAE,YAAY,EAAE,WAAW,CAAC,CAAC;QAEvE,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC;IACnD,CAAC;IAED,gCAAgC;IACxB,MAAM,CAAC,0BAA0B,CAAC,OAAiB,EAAE,KAAa,EAAE,YAAgC;QACxG,IAAI,GAAG,GAAG,KAAK,CAAC;QAChB,OAAO,GAAG,GAAG,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,EAAE,CAAC;YAC3E,GAAG,EAAE,CAAC;YACN,MAAM,UAAU,GAAG,IAAI,CAAC,2BAA2B,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;YAClE,GAAG,GAAG,UAAU,CAAC,QAAQ,CAAC;YAC1B,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QACxC,CAAC;QACD,OAAO,GAAG,CAAC;IACf,CAAC;IAED,6BAA6B;IACrB,MAAM,CAAC,eAAe,CAAC,OAAiB,EAAE,KAAa;QAC3D,IAAI,SAAS,GAA0B,IAAI,CAAC;QAC5C,IAAI,YAAY,GAAiC,IAAI,CAAC;QACtD,IAAI,GAAG,GAAG,KAAK,CAAC;QAEhB,IAAI,GAAG,GAAG,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,EAAE,CAAC;YACxE,sDAAsD;YACtD,YAAY,GAAG,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;YACzD,GAAG,EAAE,CAAC;YACN,MAAM,UAAU,GAAG,WAAW,CAAC,eAAe,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;YAC7D,SAAS,GAAG,UAAU,CAAC,KAAK,CAAC;YAC7B,GAAG,GAAG,UAAU,CAAC,QAAQ,CAAC;QAC9B,CAAC;QAED,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC;IACtD,CAAC;IAED,4BAA4B;IACpB,MAAM,CAAC,cAAc,CAAC,OAAiB,EAAE,KAAa;QAC1D,IAAI,GAAG,GAAG,KAAK,CAAC;QAChB,IAAI,WAAW,GAAiC,IAAI,CAAC;QAErD,IAAI,GAAG,GAAG,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC;YACvE,qDAAqD;YACrD,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;YACxD,GAAG,EAAE,CAAC;QACV,CAAC;aAAM,CAAC;YACJ,MAAM,IAAI,KAAK,CAAC,gEAAgE,GAAG,GAAG,CAAC,CAAC;QAC5F,CAAC;QAED,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC;IAC1C,CAAC;IAED,wCAAwC;IAChC,MAAM,CAAC,sBAAsB,CAAC,KAAa;QAC/C,OAAO;YACH,MAAM,EAAE,KAAK,CAAC,QAAQ;YACtB,UAAU,EAAE,KAAK,CAAC,kBAAkB;SACvC,CAAC;IACN,CAAC;IAED,gFAAgF;IACxE,MAAM,CAAC,uBAAuB,CAAC,aAAiC,EAAE,YAA0C,EAAE,WAAyC;QAC3J,MAAM,qBAAqB,GAAU,EAAE,CAAC;QACxC,MAAM,iBAAiB,GAAa,EAAE,CAAC;QAEvC,iCAAiC;QACjC,IAAI,CAAA,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,UAAU,KAAI,YAAY,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACjE,qBAAqB,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,UAAU,CAAC,CAAC;QAC3D,CAAC;QACD,IAAI,CAAA,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,MAAM,KAAI,YAAY,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACzD,iBAAiB,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;QACnD,CAAC;QAED,gCAAgC;QAChC,IAAI,CAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,UAAU,KAAI,WAAW,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC/D,qBAAqB,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,UAAU,CAAC,CAAC;QAC1D,CAAC;QACD,IAAI,CAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,MAAM,KAAI,WAAW,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvD,iBAAiB,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;QAClD,CAAC;QAED,iEAAiE;QACjE,IAAI,qBAAqB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACnC,aAAa,CAAC,kBAAkB,GAAG,qBAAqB,CAAC;QAC7D,CAAC;aAAM,IAAI,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtC,aAAa,CAAC,kBAAkB,GAAG,CAAC,uBAAuB,CAAC,yBAAyB,CAAC,iBAAiB,EAAE,OAAO,CAAC,CAAC,CAAC;QACvH,CAAC;IACL,CAAC;IAED,+EAA+E;IACvE,MAAM,CAAC,kBAAkB,CAAC,MAAc,EAAE,KAAa;QAC3D,OAAO,CAAC,CAAC,MAAM,CAAC,IAAI,GAAG,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,MAAM,CAAC,KAAK,KAAK,KAAK,CAAC;IAC/E,CAAC;IAEO,MAAM,CAAC,2BAA2B,CAAC,OAAiB,EAAE,KAAa;QACvE,IAAI,GAAG,GAAG,KAAK,CAAC;QAChB,MAAM,SAAS,GAAG,WAAW,CAAC,eAAe,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QAC5D,GAAG,GAAG,SAAS,CAAC,QAAQ,CAAC;QAEzB,8CAA8C;QAC9C,IAAI,GAAG,IAAI,OAAO,CAAC,MAAM,IAAI,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,SAAS,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,MAAM,EAAE,CAAC;YACrG,MAAM,IAAI,KAAK,CAAC,iDAAiD,GAAG,EAAE,CAAC,CAAC;QAC5E,CAAC;QACD,iDAAiD;QACjD,MAAM,mBAAmB,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC;QAClD,MAAM,6BAA6B,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,kBAAkB,CAAC;QACtE,GAAG,EAAE,CAAC,CAAC,wBAAwB;QAE/B,6BAA6B;QAC7B,MAAM,KAAK,GAAG,WAAW,CAAC,eAAe,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QACxD,GAAG,GAAG,KAAK,CAAC,QAAQ,CAAC;QAErB,MAAM,YAAY,GAAG,IAAI,gBAAgB,CAAC,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;QACxE,sDAAsD;QACtD,uEAAuE;QACvE,IAAI,6BAA6B,IAAI,6BAA6B,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC5E,YAAY,CAAC,kBAAkB,GAAG,6BAA6B,CAAC;QACpE,CAAC;aAAM,IAAI,mBAAmB,IAAI,mBAAmB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC/D,kEAAkE;YAClE,YAAY,CAAC,kBAAkB,GAAG,CAAC,uBAAuB,CAAC,yBAAyB,CAAC,mBAAmB,EAAE,OAAO,CAAC,CAAC,CAAC;QACxH,CAAC;QAED,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC;IAClD,CAAC;IAED;;OAEG;IACK,MAAM,CAAC,yBAAyB,CACpC,cAAwB,EACxB,WAA+B,QAAQ;QAEvC,OAAO;YACH,QAAQ;YACR,QAAQ,EAAE,cAAc;SAC3B,CAAC;IACN,CAAC;CACJ"}
1
+ {"version":3,"file":"CommandExpressionParser.js","sourceRoot":"","sources":["../../../src/parsers/CommandExpressionParser.ts"],"names":[],"mappings":"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"}
@@ -16,15 +16,21 @@ export class HavingClauseParser {
16
16
  }
17
17
  // Parse from lexeme array (was: parse)
18
18
  static parseFromLexeme(lexemes, index) {
19
+ var _a;
19
20
  let idx = index;
20
21
  if (lexemes[idx].value !== 'having') {
21
22
  throw new Error(`Syntax error at position ${idx}: Expected 'HAVING' keyword but found "${lexemes[idx].value}". HAVING clauses must start with the HAVING keyword.`);
22
23
  }
24
+ const havingKeywordComments = lexemes[idx].positionedComments;
23
25
  idx++;
24
26
  if (idx >= lexemes.length) {
25
27
  throw new Error(`Syntax error: Unexpected end of input after 'HAVING' keyword. The HAVING clause requires a condition expression.`);
26
28
  }
27
29
  const item = ValueParser.parseFromLexeme(lexemes, idx);
30
+ const afterKeywordComments = (_a = havingKeywordComments === null || havingKeywordComments === void 0 ? void 0 : havingKeywordComments.filter(comment => comment.position === 'after').flatMap(comment => comment.comments)) !== null && _a !== void 0 ? _a : [];
31
+ if (afterKeywordComments.length > 0) {
32
+ item.value.addPositionedComments('before', afterKeywordComments);
33
+ }
28
34
  const clause = new HavingClause(item.value);
29
35
  return { value: clause, newIndex: item.newIndex };
30
36
  }
@@ -1 +1 @@
1
- {"version":3,"file":"HavingParser.js","sourceRoot":"","sources":["../../../src/parsers/HavingParser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEhD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,MAAM,OAAO,kBAAkB;IAC3B,uCAAuC;IAChC,MAAM,CAAC,KAAK,CAAC,KAAa;QAC7B,MAAM,SAAS,GAAG,IAAI,YAAY,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,kEAAkE,CAAC,CAAC;QACzL,CAAC;QAED,OAAO,MAAM,CAAC,KAAK,CAAC;IACxB,CAAC;IAED,uCAAuC;IAChC,MAAM,CAAC,eAAe,CAAC,OAAiB,EAAE,KAAa;QAC1D,IAAI,GAAG,GAAG,KAAK,CAAC;QAEhB,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;YAClC,MAAM,IAAI,KAAK,CAAC,4BAA4B,GAAG,0CAA0C,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,uDAAuD,CAAC,CAAC;QACxK,CAAC;QACD,GAAG,EAAE,CAAC;QAEN,IAAI,GAAG,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACxB,MAAM,IAAI,KAAK,CAAC,kHAAkH,CAAC,CAAC;QACxI,CAAC;QAED,MAAM,IAAI,GAAG,WAAW,CAAC,eAAe,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QACvD,MAAM,MAAM,GAAG,IAAI,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAE5C,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;IACtD,CAAC;CACJ"}
1
+ {"version":3,"file":"HavingParser.js","sourceRoot":"","sources":["../../../src/parsers/HavingParser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEhD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,MAAM,OAAO,kBAAkB;IAC3B,uCAAuC;IAChC,MAAM,CAAC,KAAK,CAAC,KAAa;QAC7B,MAAM,SAAS,GAAG,IAAI,YAAY,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,kEAAkE,CAAC,CAAC;QACzL,CAAC;QAED,OAAO,MAAM,CAAC,KAAK,CAAC;IACxB,CAAC;IAED,uCAAuC;IAChC,MAAM,CAAC,eAAe,CAAC,OAAiB,EAAE,KAAa;;QAC1D,IAAI,GAAG,GAAG,KAAK,CAAC;QAEhB,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;YAClC,MAAM,IAAI,KAAK,CAAC,4BAA4B,GAAG,0CAA0C,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,uDAAuD,CAAC,CAAC;QACxK,CAAC;QACD,MAAM,qBAAqB,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,kBAAkB,CAAC;QAC9D,GAAG,EAAE,CAAC;QAEN,IAAI,GAAG,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACxB,MAAM,IAAI,KAAK,CAAC,kHAAkH,CAAC,CAAC;QACxI,CAAC;QAED,MAAM,IAAI,GAAG,WAAW,CAAC,eAAe,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QACvD,MAAM,oBAAoB,GAAG,MAAA,qBAAqB,aAArB,qBAAqB,uBAArB,qBAAqB,CAC5C,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,QAAQ,KAAK,OAAO,EAC/C,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,mCAAI,EAAE,CAAC;QAChD,IAAI,oBAAoB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAClC,IAAI,CAAC,KAAK,CAAC,qBAAqB,CAAC,QAAQ,EAAE,oBAAoB,CAAC,CAAC;QACrE,CAAC;QACD,MAAM,MAAM,GAAG,IAAI,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAE5C,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;IACtD,CAAC;CACJ"}
@@ -2,11 +2,17 @@ import { JoinOnClause } from "../models/Clause";
2
2
  import { ValueParser } from "./ValueParser";
3
3
  export class JoinOnClauseParser {
4
4
  static tryParse(lexemes, index) {
5
+ var _a;
5
6
  let idx = index;
6
7
  if (idx < lexemes.length && lexemes[idx].value === 'on') {
8
+ const onKeywordComments = lexemes[idx].positionedComments;
7
9
  idx++; // Skip 'on' keyword
8
10
  // Parse the condition expression
9
11
  const condition = ValueParser.parseFromLexeme(lexemes, idx);
12
+ const afterKeywordComments = (_a = onKeywordComments === null || onKeywordComments === void 0 ? void 0 : onKeywordComments.filter(comment => comment.position === 'after').flatMap(comment => comment.comments)) !== null && _a !== void 0 ? _a : [];
13
+ if (afterKeywordComments.length > 0) {
14
+ condition.value.addPositionedComments('before', afterKeywordComments);
15
+ }
10
16
  idx = condition.newIndex;
11
17
  const joinOn = new JoinOnClause(condition.value);
12
18
  return { value: joinOn, newIndex: idx };
@@ -1 +1 @@
1
- {"version":3,"file":"JoinOnClauseParser.js","sourceRoot":"","sources":["../../../src/parsers/JoinOnClauseParser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEhD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,MAAM,OAAO,kBAAkB;IACpB,MAAM,CAAC,QAAQ,CAAC,OAAiB,EAAE,KAAa;QACnD,IAAI,GAAG,GAAG,KAAK,CAAC;QAChB,IAAI,GAAG,GAAG,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,IAAI,EAAE,CAAC;YACtD,GAAG,EAAE,CAAC,CAAC,oBAAoB;YAC3B,iCAAiC;YACjC,MAAM,SAAS,GAAG,WAAW,CAAC,eAAe,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;YAC5D,GAAG,GAAG,SAAS,CAAC,QAAQ,CAAC;YACzB,MAAM,MAAM,GAAG,IAAI,YAAY,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;YACjD,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC;QAC5C,CAAC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;CACJ"}
1
+ {"version":3,"file":"JoinOnClauseParser.js","sourceRoot":"","sources":["../../../src/parsers/JoinOnClauseParser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEhD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,MAAM,OAAO,kBAAkB;IACpB,MAAM,CAAC,QAAQ,CAAC,OAAiB,EAAE,KAAa;;QACnD,IAAI,GAAG,GAAG,KAAK,CAAC;QAChB,IAAI,GAAG,GAAG,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,IAAI,EAAE,CAAC;YACtD,MAAM,iBAAiB,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,kBAAkB,CAAC;YAC1D,GAAG,EAAE,CAAC,CAAC,oBAAoB;YAC3B,iCAAiC;YACjC,MAAM,SAAS,GAAG,WAAW,CAAC,eAAe,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;YAC5D,MAAM,oBAAoB,GAAG,MAAA,iBAAiB,aAAjB,iBAAiB,uBAAjB,iBAAiB,CACxC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,QAAQ,KAAK,OAAO,EAC/C,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,mCAAI,EAAE,CAAC;YAChD,IAAI,oBAAoB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAClC,SAAS,CAAC,KAAK,CAAC,qBAAqB,CAAC,QAAQ,EAAE,oBAAoB,CAAC,CAAC;YAC1E,CAAC;YACD,GAAG,GAAG,SAAS,CAAC,QAAQ,CAAC;YACzB,MAAM,MAAM,GAAG,IAAI,YAAY,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;YACjD,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC;QAC5C,CAAC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;CACJ"}
@@ -16,16 +16,22 @@ export class LimitClauseParser {
16
16
  }
17
17
  // Parse from lexeme array (was: parse)
18
18
  static parseFromLexeme(lexemes, index) {
19
+ var _a;
19
20
  let idx = index;
20
21
  if (lexemes[idx].value !== 'limit') {
21
22
  throw new Error(`Syntax error at position ${idx}: Expected 'LIMIT' keyword but found "${lexemes[idx].value}". LIMIT clauses must start with the LIMIT keyword.`);
22
23
  }
24
+ const limitKeywordComments = lexemes[idx].positionedComments;
23
25
  idx++;
24
26
  if (idx >= lexemes.length) {
25
27
  throw new Error(`Syntax error: Unexpected end of input after 'LIMIT' keyword. The LIMIT clause requires a numeric expression.`);
26
28
  }
27
29
  // Parse LIMIT value
28
30
  const limitItem = ValueParser.parseFromLexeme(lexemes, idx);
31
+ const afterKeywordComments = (_a = limitKeywordComments === null || limitKeywordComments === void 0 ? void 0 : limitKeywordComments.filter(comment => comment.position === 'after').flatMap(comment => comment.comments)) !== null && _a !== void 0 ? _a : [];
32
+ if (afterKeywordComments.length > 0) {
33
+ limitItem.value.addPositionedComments('before', afterKeywordComments);
34
+ }
29
35
  idx = limitItem.newIndex;
30
36
  const clause = new LimitClause(limitItem.value);
31
37
  return { value: clause, newIndex: idx };
@@ -1 +1 @@
1
- {"version":3,"file":"LimitClauseParser.js","sourceRoot":"","sources":["../../../src/parsers/LimitClauseParser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,IAAI,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE9D,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,MAAM,OAAO,iBAAiB;IAC1B,uCAAuC;IAChC,MAAM,CAAC,KAAK,CAAC,KAAa;QAC7B,MAAM,SAAS,GAAG,IAAI,YAAY,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,iEAAiE,CAAC,CAAC;QACxL,CAAC;QAED,OAAO,MAAM,CAAC,KAAK,CAAC;IACxB,CAAC;IAED,uCAAuC;IAChC,MAAM,CAAC,eAAe,CAAC,OAAiB,EAAE,KAAa;QAC1D,IAAI,GAAG,GAAG,KAAK,CAAC;QAEhB,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,OAAO,EAAE,CAAC;YACjC,MAAM,IAAI,KAAK,CAAC,4BAA4B,GAAG,yCAAyC,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,qDAAqD,CAAC,CAAC;QACrK,CAAC;QACD,GAAG,EAAE,CAAC;QAEN,IAAI,GAAG,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACxB,MAAM,IAAI,KAAK,CAAC,8GAA8G,CAAC,CAAC;QACpI,CAAC;QAED,oBAAoB;QACpB,MAAM,SAAS,GAAG,WAAW,CAAC,eAAe,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QAC5D,GAAG,GAAG,SAAS,CAAC,QAAQ,CAAC;QAEzB,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAEhD,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC;IAC5C,CAAC;CACJ"}
1
+ {"version":3,"file":"LimitClauseParser.js","sourceRoot":"","sources":["../../../src/parsers/LimitClauseParser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,IAAI,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE9D,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,MAAM,OAAO,iBAAiB;IAC1B,uCAAuC;IAChC,MAAM,CAAC,KAAK,CAAC,KAAa;QAC7B,MAAM,SAAS,GAAG,IAAI,YAAY,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,iEAAiE,CAAC,CAAC;QACxL,CAAC;QAED,OAAO,MAAM,CAAC,KAAK,CAAC;IACxB,CAAC;IAED,uCAAuC;IAChC,MAAM,CAAC,eAAe,CAAC,OAAiB,EAAE,KAAa;;QAC1D,IAAI,GAAG,GAAG,KAAK,CAAC;QAEhB,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,OAAO,EAAE,CAAC;YACjC,MAAM,IAAI,KAAK,CAAC,4BAA4B,GAAG,yCAAyC,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,qDAAqD,CAAC,CAAC;QACrK,CAAC;QACD,MAAM,oBAAoB,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,kBAAkB,CAAC;QAC7D,GAAG,EAAE,CAAC;QAEN,IAAI,GAAG,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACxB,MAAM,IAAI,KAAK,CAAC,8GAA8G,CAAC,CAAC;QACpI,CAAC;QAED,oBAAoB;QACpB,MAAM,SAAS,GAAG,WAAW,CAAC,eAAe,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QAC5D,MAAM,oBAAoB,GAAG,MAAA,oBAAoB,aAApB,oBAAoB,uBAApB,oBAAoB,CAC3C,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,QAAQ,KAAK,OAAO,EAC/C,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,mCAAI,EAAE,CAAC;QAChD,IAAI,oBAAoB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAClC,SAAS,CAAC,KAAK,CAAC,qBAAqB,CAAC,QAAQ,EAAE,oBAAoB,CAAC,CAAC;QAC1E,CAAC;QACD,GAAG,GAAG,SAAS,CAAC,QAAQ,CAAC;QAEzB,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAEhD,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC;IAC5C,CAAC;CACJ"}
@@ -16,16 +16,22 @@ export class OffsetClauseParser {
16
16
  }
17
17
  // Parse from lexeme array (was: parse)
18
18
  static parseFromLexeme(lexemes, index) {
19
+ var _a;
19
20
  let idx = index;
20
21
  if (lexemes[idx].value !== 'offset') {
21
22
  throw new Error(`Syntax error at position ${idx}: Expected 'OFFSET' keyword but found "${lexemes[idx].value}". OFFSET clauses must start with the OFFSET keyword.`);
22
23
  }
24
+ const offsetKeywordComments = lexemes[idx].positionedComments;
23
25
  idx++;
24
26
  if (idx >= lexemes.length) {
25
27
  throw new Error(`Syntax error: Unexpected end of input after 'OFFSET' keyword. The OFFSET clause requires a numeric expression.`);
26
28
  }
27
29
  // Parse OFFSET value
28
30
  const offsetItem = ValueParser.parseFromLexeme(lexemes, idx);
31
+ const afterKeywordComments = (_a = offsetKeywordComments === null || offsetKeywordComments === void 0 ? void 0 : offsetKeywordComments.filter(comment => comment.position === 'after').flatMap(comment => comment.comments)) !== null && _a !== void 0 ? _a : [];
32
+ if (afterKeywordComments.length > 0) {
33
+ offsetItem.value.addPositionedComments('before', afterKeywordComments);
34
+ }
29
35
  idx = offsetItem.newIndex;
30
36
  // If there is a "row" or "rows" command, skip it
31
37
  if (idx < lexemes.length && (lexemes[idx].value === 'row' || lexemes[idx].value === 'rows')) {
@@ -1 +1 @@
1
- {"version":3,"file":"OffsetClauseParser.js","sourceRoot":"","sources":["../../../src/parsers/OffsetClauseParser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEhD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,MAAM,OAAO,kBAAkB;IAC3B,uCAAuC;IAChC,MAAM,CAAC,KAAK,CAAC,KAAa;QAC7B,MAAM,SAAS,GAAG,IAAI,YAAY,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,kEAAkE,CAAC,CAAC;QACzL,CAAC;QAED,OAAO,MAAM,CAAC,KAAK,CAAC;IACxB,CAAC;IAED,uCAAuC;IAChC,MAAM,CAAC,eAAe,CAAC,OAAiB,EAAE,KAAa;QAC1D,IAAI,GAAG,GAAG,KAAK,CAAC;QAEhB,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;YAClC,MAAM,IAAI,KAAK,CAAC,4BAA4B,GAAG,0CAA0C,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,uDAAuD,CAAC,CAAC;QACxK,CAAC;QACD,GAAG,EAAE,CAAC;QAEN,IAAI,GAAG,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACxB,MAAM,IAAI,KAAK,CAAC,gHAAgH,CAAC,CAAC;QACtI,CAAC;QAED,qBAAqB;QACrB,MAAM,UAAU,GAAG,WAAW,CAAC,eAAe,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QAC7D,GAAG,GAAG,UAAU,CAAC,QAAQ,CAAC;QAE1B,iDAAiD;QACjD,IAAI,GAAG,GAAG,OAAO,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,KAAK,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,MAAM,CAAC,EAAE,CAAC;YAC1F,GAAG,EAAE,CAAC;QACV,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,YAAY,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QAElD,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC;IAC5C,CAAC;CACJ"}
1
+ {"version":3,"file":"OffsetClauseParser.js","sourceRoot":"","sources":["../../../src/parsers/OffsetClauseParser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEhD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,MAAM,OAAO,kBAAkB;IAC3B,uCAAuC;IAChC,MAAM,CAAC,KAAK,CAAC,KAAa;QAC7B,MAAM,SAAS,GAAG,IAAI,YAAY,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,kEAAkE,CAAC,CAAC;QACzL,CAAC;QAED,OAAO,MAAM,CAAC,KAAK,CAAC;IACxB,CAAC;IAED,uCAAuC;IAChC,MAAM,CAAC,eAAe,CAAC,OAAiB,EAAE,KAAa;;QAC1D,IAAI,GAAG,GAAG,KAAK,CAAC;QAEhB,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;YAClC,MAAM,IAAI,KAAK,CAAC,4BAA4B,GAAG,0CAA0C,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,uDAAuD,CAAC,CAAC;QACxK,CAAC;QACD,MAAM,qBAAqB,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,kBAAkB,CAAC;QAC9D,GAAG,EAAE,CAAC;QAEN,IAAI,GAAG,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACxB,MAAM,IAAI,KAAK,CAAC,gHAAgH,CAAC,CAAC;QACtI,CAAC;QAED,qBAAqB;QACrB,MAAM,UAAU,GAAG,WAAW,CAAC,eAAe,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QAC7D,MAAM,oBAAoB,GAAG,MAAA,qBAAqB,aAArB,qBAAqB,uBAArB,qBAAqB,CAC5C,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,QAAQ,KAAK,OAAO,EAC/C,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,mCAAI,EAAE,CAAC;QAChD,IAAI,oBAAoB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAClC,UAAU,CAAC,KAAK,CAAC,qBAAqB,CAAC,QAAQ,EAAE,oBAAoB,CAAC,CAAC;QAC3E,CAAC;QACD,GAAG,GAAG,UAAU,CAAC,QAAQ,CAAC;QAE1B,iDAAiD;QACjD,IAAI,GAAG,GAAG,OAAO,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,KAAK,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,MAAM,CAAC,EAAE,CAAC;YAC1F,GAAG,EAAE,CAAC;QACV,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,YAAY,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QAElD,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC;IAC5C,CAAC;CACJ"}
@@ -1,6 +1,8 @@
1
1
  import { OrderByClause } from "../models/Clause";
2
2
  import { Lexeme } from "../models/Lexeme";
3
3
  export declare class OrderByClauseParser {
4
+ private static appendUniqueComments;
5
+ private static collectLexemeComments;
4
6
  static parse(query: string): OrderByClause;
5
7
  static parseFromLexeme(lexemes: Lexeme[], index: number): {
6
8
  value: OrderByClause;
@@ -3,6 +3,28 @@ import { TokenType } from "../models/Lexeme";
3
3
  import { SqlTokenizer } from "./SqlTokenizer";
4
4
  import { ValueParser } from "./ValueParser";
5
5
  export class OrderByClauseParser {
6
+ static appendUniqueComments(target, comments) {
7
+ if (!comments || comments.length === 0) {
8
+ return target;
9
+ }
10
+ const merged = target ? [...target] : [];
11
+ for (const comment of comments) {
12
+ if (!merged.includes(comment)) {
13
+ merged.push(comment);
14
+ }
15
+ }
16
+ return merged;
17
+ }
18
+ static collectLexemeComments(token) {
19
+ let comments = null;
20
+ if (token.positionedComments && token.positionedComments.length > 0) {
21
+ for (const posComment of token.positionedComments) {
22
+ comments = this.appendUniqueComments(comments, posComment.comments);
23
+ }
24
+ }
25
+ comments = this.appendUniqueComments(comments, token.comments);
26
+ return comments;
27
+ }
6
28
  // Parse SQL string to AST (was: parse)
7
29
  static parse(query) {
8
30
  const tokenizer = new SqlTokenizer(query); // Initialize tokenizer
@@ -48,8 +70,8 @@ export class OrderByClauseParser {
48
70
  if (idx >= lexemes.length) {
49
71
  return { value: value, newIndex: idx };
50
72
  }
51
- // Capture comments from ASC/DESC tokens (both legacy comments and positioned comments)
52
- let sortDirectionComments = null;
73
+ // Capture comments from ASC/DESC/NULLS tokens so they stay adjacent to the full ORDER BY item.
74
+ let orderByItemComments = null;
53
75
  let sortDirection = null;
54
76
  if (idx < lexemes.length) {
55
77
  const token = lexemes[idx];
@@ -63,42 +85,33 @@ export class OrderByClauseParser {
63
85
  }
64
86
  // Capture comments from the ASC/DESC token
65
87
  if (sortDirection !== null) {
66
- if (token.positionedComments && token.positionedComments.length > 0) {
67
- sortDirectionComments = [];
68
- for (const posComment of token.positionedComments) {
69
- if (posComment.comments && posComment.comments.length > 0) {
70
- sortDirectionComments.push(...posComment.comments);
71
- }
72
- }
73
- }
74
- if (token.comments && token.comments.length > 0) {
75
- if (!sortDirectionComments)
76
- sortDirectionComments = [];
77
- sortDirectionComments.push(...token.comments);
78
- }
88
+ orderByItemComments = this.appendUniqueComments(orderByItemComments, this.collectLexemeComments(token));
79
89
  }
80
90
  }
81
91
  // nulls first, nulls last
82
- const nullsSortDirection = idx >= lexemes.length
83
- ? null
84
- : lexemes[idx].value === 'nulls first'
85
- ? (idx++, NullsSortDirection.First)
86
- : lexemes[idx].value === 'nulls last'
87
- ? (idx++, NullsSortDirection.Last)
88
- : null;
89
- // Apply sort direction comments to the value if captured
90
- if (sortDirectionComments && sortDirectionComments.length > 0) {
91
- if (value.comments) {
92
- value.comments.push(...sortDirectionComments);
92
+ let nullsSortDirection = null;
93
+ if (idx < lexemes.length) {
94
+ const token = lexemes[idx];
95
+ if (token.value === 'nulls first') {
96
+ nullsSortDirection = NullsSortDirection.First;
97
+ idx++;
93
98
  }
94
- else {
95
- value.comments = sortDirectionComments;
99
+ else if (token.value === 'nulls last') {
100
+ nullsSortDirection = NullsSortDirection.Last;
101
+ idx++;
102
+ }
103
+ if (nullsSortDirection !== null) {
104
+ orderByItemComments = this.appendUniqueComments(orderByItemComments, this.collectLexemeComments(token));
96
105
  }
97
106
  }
98
107
  if (sortDirection === null && nullsSortDirection === null) {
99
108
  return { value: value, newIndex: idx };
100
109
  }
101
- return { value: new OrderByItem(value, sortDirection, nullsSortDirection), newIndex: idx };
110
+ const item = new OrderByItem(value, sortDirection, nullsSortDirection);
111
+ if (orderByItemComments && orderByItemComments.length > 0) {
112
+ item.comments = orderByItemComments;
113
+ }
114
+ return { value: item, newIndex: idx };
102
115
  }
103
116
  }
104
117
  //# sourceMappingURL=OrderByClauseParser.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"OrderByClauseParser.js","sourceRoot":"","sources":["../../../src/parsers/OrderByClauseParser.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"OrderByClauseParser.js","sourceRoot":"","sources":["../../../src/parsers/OrderByClauseParser.ts"],"names":[],"mappings":"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"}
@@ -57,6 +57,7 @@ export declare class SqlPrintTokenParser implements SqlComponentVisitor<SqlPrint
57
57
  private sourceAliasStyle;
58
58
  private orderByDefaultDirectionStyle;
59
59
  private readonly normalizeJoinConditionOrder;
60
+ private readonly listContinuationCommentComponents;
60
61
  private joinConditionContexts;
61
62
  constructor(options?: {
62
63
  preset?: FormatterConfig;
@@ -249,6 +250,8 @@ export declare class SqlPrintTokenParser implements SqlComponentVisitor<SqlPrint
249
250
  */
250
251
  private visitWindowFrameBoundStatic;
251
252
  private visitSelectItem;
253
+ private collectCaseSelectItemDuplicateAfterComments;
254
+ private filterCaseSelectItemDuplicateAfterComments;
252
255
  private visitSelectClause;
253
256
  private flattenTokenText;
254
257
  private visitHintClause;
@@ -138,6 +138,7 @@ export class SqlPrintTokenParser {
138
138
  this._selfHandlingComponentTypes = new Set([
139
139
  SimpleSelectQuery.kind,
140
140
  SelectItem.kind,
141
+ OrderByItem.kind,
141
142
  CaseKeyValuePair.kind,
142
143
  SwitchCaseArgument.kind,
143
144
  ColumnReference.kind,
@@ -157,6 +158,7 @@ export class SqlPrintTokenParser {
157
158
  var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o;
158
159
  this.handlers = new Map();
159
160
  this.index = 1;
161
+ this.listContinuationCommentComponents = new WeakSet();
160
162
  this.joinConditionContexts = [];
161
163
  if (options === null || options === void 0 ? void 0 : options.preset) {
162
164
  const preset = options.preset;
@@ -346,6 +348,7 @@ export class SqlPrintTokenParser {
346
348
  }
347
349
  visitQualifiedName(arg) {
348
350
  const token = new SqlPrintToken(SqlPrintTokenType.container, '', SqlPrintTokenContainerType.QualifiedName);
351
+ const hasOwnComments = this.hasPositionedComments(arg) || this.hasLegacyComments(arg);
349
352
  if (arg.namespaces) {
350
353
  for (let i = 0; i < arg.namespaces.length; i++) {
351
354
  token.innerTokens.push(arg.namespaces[i].accept(this));
@@ -366,7 +369,7 @@ export class SqlPrintTokenParser {
366
369
  arg.name.positionedComments = originalNameComments;
367
370
  arg.name.comments = originalNameLegacyComments;
368
371
  // Apply the name's comments to the qualified name token
369
- if (this.hasPositionedComments(arg.name) || this.hasLegacyComments(arg.name)) {
372
+ if (!hasOwnComments && (this.hasPositionedComments(arg.name) || this.hasLegacyComments(arg.name))) {
370
373
  this.addComponentComments(token, arg.name);
371
374
  }
372
375
  // Also handle any comments directly on the QualifiedName itself
@@ -416,6 +419,10 @@ export class SqlPrintTokenParser {
416
419
  token.innerTokens.push(new SqlPrintToken(SqlPrintTokenType.keyword, 'nulls last'));
417
420
  }
418
421
  }
422
+ if (arg.comments && arg.comments.length > 0) {
423
+ token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
424
+ token.innerTokens.push(...this.createInlineCommentSequence(arg.comments));
425
+ }
419
426
  return token;
420
427
  }
421
428
  parse(arg) {
@@ -894,7 +901,18 @@ export class SqlPrintTokenParser {
894
901
  }
895
902
  visitColumnReference(arg) {
896
903
  const token = new SqlPrintToken(SqlPrintTokenType.container, '', SqlPrintTokenContainerType.ColumnReference);
904
+ const hasOwnComments = this.hasPositionedComments(arg) || this.hasLegacyComments(arg);
905
+ const originalNamePositionedComments = arg.qualifiedName.name.positionedComments;
906
+ const originalNameComments = arg.qualifiedName.name.comments;
907
+ if (hasOwnComments) {
908
+ arg.qualifiedName.name.positionedComments = null;
909
+ arg.qualifiedName.name.comments = null;
910
+ }
897
911
  token.innerTokens.push(arg.qualifiedName.accept(this));
912
+ if (hasOwnComments) {
913
+ arg.qualifiedName.name.positionedComments = originalNamePositionedComments;
914
+ arg.qualifiedName.name.comments = originalNameComments;
915
+ }
898
916
  this.addComponentComments(token, arg);
899
917
  return token;
900
918
  }
@@ -1166,6 +1184,7 @@ export class SqlPrintTokenParser {
1166
1184
  return token;
1167
1185
  }
1168
1186
  visitParenExpression(arg) {
1187
+ var _a, _b;
1169
1188
  const token = new SqlPrintToken(SqlPrintTokenType.container, '', SqlPrintTokenContainerType.ParenExpression);
1170
1189
  // Handle positioned comments for ParenExpression - check both self and inner expression
1171
1190
  const hasOwnComments = arg.positionedComments && arg.positionedComments.length > 0;
@@ -1178,6 +1197,11 @@ export class SqlPrintTokenParser {
1178
1197
  innerAfterComments = arg.expression.getPositionedComments('after');
1179
1198
  arg.expression.positionedComments = null;
1180
1199
  }
1200
+ if (hasOwnComments && innerBeforeComments.length > 0) {
1201
+ const innerBeforeSet = new Set(innerBeforeComments);
1202
+ arg.positionedComments = (_b = (_a = arg.positionedComments) === null || _a === void 0 ? void 0 : _a.map(comment => comment.position === 'after'
1203
+ ? Object.assign(Object.assign({}, comment), { comments: comment.comments.filter(value => !innerBeforeSet.has(value)) }) : comment).filter(comment => comment.comments.length > 0)) !== null && _b !== void 0 ? _b : null;
1204
+ }
1181
1205
  // Build basic structure first
1182
1206
  token.innerTokens.push(SqlPrintTokenParser.PAREN_OPEN_TOKEN);
1183
1207
  token.innerTokens.push(this.visit(arg.expression));
@@ -1243,7 +1267,6 @@ export class SqlPrintTokenParser {
1243
1267
  promotedComments.push(...this.collectCaseLeadingCommentBlocks(conditionToken));
1244
1268
  }
1245
1269
  const switchToken = this.visit(arg.switchCase);
1246
- promotedComments.push(...this.collectCaseLeadingCommentsFromSwitch(switchToken));
1247
1270
  if (promotedComments.length > 0) {
1248
1271
  token.innerTokens.push(...promotedComments);
1249
1272
  }
@@ -1587,11 +1610,13 @@ export class SqlPrintTokenParser {
1587
1610
  // Add positioned comments in recorded order
1588
1611
  const beforeComments = arg.getPositionedComments('before');
1589
1612
  const afterComments = arg.getPositionedComments('after');
1613
+ const duplicateCaseAfterComments = arg.value instanceof CaseExpression
1614
+ ? this.collectCaseSelectItemDuplicateAfterComments(arg.value)
1615
+ : new Set();
1590
1616
  if (beforeComments.length > 0) {
1591
- if (arg.value instanceof CaseExpression) {
1617
+ if (arg.value instanceof CaseExpression || this.listContinuationCommentComponents.has(arg)) {
1592
1618
  const commentBlocks = this.createCommentBlocks(beforeComments);
1593
1619
  token.innerTokens.push(...commentBlocks);
1594
- token.innerTokens.push(new SqlPrintToken(SqlPrintTokenType.commentNewline, ''));
1595
1620
  }
1596
1621
  else {
1597
1622
  const commentTokens = this.createInlineCommentSequence(beforeComments);
@@ -1600,9 +1625,12 @@ export class SqlPrintTokenParser {
1600
1625
  }
1601
1626
  }
1602
1627
  token.innerTokens.push(this.visit(arg.value));
1603
- if (afterComments.length > 0 && !isParenExpression) {
1628
+ const visibleAfterComments = arg.value instanceof CaseExpression
1629
+ ? this.filterCaseSelectItemDuplicateAfterComments(afterComments, duplicateCaseAfterComments)
1630
+ : afterComments;
1631
+ if (visibleAfterComments.length > 0 && !isParenExpression) {
1604
1632
  token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
1605
- const commentTokens = this.createInlineCommentSequence(afterComments);
1633
+ const commentTokens = this.createInlineCommentSequence(visibleAfterComments);
1606
1634
  token.innerTokens.push(...commentTokens);
1607
1635
  }
1608
1636
  // Restore original positioned comments to avoid side effects
@@ -1676,6 +1704,34 @@ export class SqlPrintTokenParser {
1676
1704
  }
1677
1705
  return token;
1678
1706
  }
1707
+ collectCaseSelectItemDuplicateAfterComments(value) {
1708
+ const promoted = new Set();
1709
+ if (value.comments) {
1710
+ for (const comment of value.comments) {
1711
+ promoted.add(comment);
1712
+ }
1713
+ }
1714
+ const firstCase = value.switchCase.cases[0];
1715
+ if (firstCase === null || firstCase === void 0 ? void 0 : firstCase.positionedComments) {
1716
+ for (const positionedComment of firstCase.positionedComments) {
1717
+ if (positionedComment.position === 'before') {
1718
+ for (const comment of positionedComment.comments) {
1719
+ promoted.add(comment);
1720
+ }
1721
+ }
1722
+ }
1723
+ }
1724
+ return promoted;
1725
+ }
1726
+ filterCaseSelectItemDuplicateAfterComments(afterComments, promoted) {
1727
+ if (afterComments.length === 0) {
1728
+ return afterComments;
1729
+ }
1730
+ if (promoted.size === 0) {
1731
+ return afterComments;
1732
+ }
1733
+ return afterComments.filter(comment => !promoted.has(comment));
1734
+ }
1679
1735
  visitSelectClause(arg) {
1680
1736
  const token = new SqlPrintToken(SqlPrintTokenType.keyword, 'select', SqlPrintTokenContainerType.SelectClause);
1681
1737
  // Handle positioned comments for SelectClause (unified spec)
@@ -1711,6 +1767,14 @@ export class SqlPrintTokenParser {
1711
1767
  for (let i = 0; i < arg.items.length; i++) {
1712
1768
  if (i > 0) {
1713
1769
  token.innerTokens.push(...SqlPrintTokenParser.commaSpaceTokens());
1770
+ this.listContinuationCommentComponents.add(arg.items[i]);
1771
+ try {
1772
+ token.innerTokens.push(this.visit(arg.items[i]));
1773
+ }
1774
+ finally {
1775
+ this.listContinuationCommentComponents.delete(arg.items[i]);
1776
+ }
1777
+ continue;
1714
1778
  }
1715
1779
  token.innerTokens.push(this.visit(arg.items[i]));
1716
1780
  }