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
@@ -55,9 +55,11 @@ class CommandExpressionParser {
55
55
  }
56
56
  static parseCaseWhenExpression(lexemes, index, caseWhenKeywordComments, caseWhenKeywordPositionedComments) {
57
57
  let idx = index;
58
+ const commentPayload = this.splitCaseWhenKeywordComments(caseWhenKeywordComments, caseWhenKeywordPositionedComments);
58
59
  // Parse the first WHEN clause
59
60
  const casewhenResult = this.parseCaseConditionValuePair(lexemes, idx);
60
61
  idx = casewhenResult.newIndex;
62
+ this.addPositionedComments(casewhenResult.value, commentPayload.firstWhenPositioned);
61
63
  // Add the initial WHEN-THEN pair to the list
62
64
  const caseWhenList = [casewhenResult.value];
63
65
  // Process remaining WHEN-ELSE-END parts
@@ -66,15 +68,48 @@ class CommandExpressionParser {
66
68
  // Create CASE expression with condition null (uses WHEN conditions instead of a simple CASE)
67
69
  const result = new ValueComponent_1.CaseExpression(null, switchCaseResult.value);
68
70
  // Assign CASE WHEN keyword comments to the CaseExpression (positioned comments only for unified spec)
69
- if (caseWhenKeywordPositionedComments && caseWhenKeywordPositionedComments.length > 0) {
70
- result.positionedComments = caseWhenKeywordPositionedComments;
71
+ if (commentPayload.caseExpressionPositioned && commentPayload.caseExpressionPositioned.length > 0) {
72
+ result.positionedComments = commentPayload.caseExpressionPositioned;
71
73
  }
72
- else if (caseWhenKeywordComments && caseWhenKeywordComments.length > 0) {
74
+ else if (commentPayload.firstWhenPositioned && commentPayload.firstWhenPositioned.length > 0) {
75
+ result.positionedComments = [];
76
+ }
77
+ else if (commentPayload.legacyCaseExpression && commentPayload.legacyCaseExpression.length > 0) {
73
78
  // Convert legacy comments to positioned comments for unified spec
74
- result.positionedComments = [CommandExpressionParser.convertLegacyToPositioned(caseWhenKeywordComments, 'before')];
79
+ result.positionedComments = [CommandExpressionParser.convertLegacyToPositioned(commentPayload.legacyCaseExpression, 'before')];
75
80
  }
76
81
  return { value: result, newIndex: idx };
77
82
  }
83
+ static splitCaseWhenKeywordComments(caseWhenKeywordComments, caseWhenKeywordPositionedComments) {
84
+ if (!caseWhenKeywordPositionedComments || caseWhenKeywordPositionedComments.length === 0) {
85
+ return {
86
+ caseExpressionPositioned: null,
87
+ firstWhenPositioned: null,
88
+ legacyCaseExpression: caseWhenKeywordComments !== null && caseWhenKeywordComments !== void 0 ? caseWhenKeywordComments : null,
89
+ };
90
+ }
91
+ const caseExpressionPositioned = [];
92
+ const firstWhenPositioned = [];
93
+ for (const comment of caseWhenKeywordPositionedComments) {
94
+ if (comment.position === 'after') {
95
+ firstWhenPositioned.push({
96
+ position: 'before',
97
+ comments: [...comment.comments],
98
+ });
99
+ }
100
+ else {
101
+ caseExpressionPositioned.push({
102
+ position: comment.position,
103
+ comments: [...comment.comments],
104
+ });
105
+ }
106
+ }
107
+ return {
108
+ caseExpressionPositioned: caseExpressionPositioned.length > 0 ? caseExpressionPositioned : null,
109
+ firstWhenPositioned: firstWhenPositioned.length > 0 ? firstWhenPositioned : null,
110
+ legacyCaseExpression: null,
111
+ };
112
+ }
78
113
  // parseSwitchCaseArgument method processes the WHEN, ELSE, and END clauses of a CASE expression.
79
114
  static parseSwitchCaseArgument(lexemes, index, initialWhenThenList) {
80
115
  let idx = index;
@@ -172,6 +207,16 @@ class CommandExpressionParser {
172
207
  static isCommandWithValue(lexeme, value) {
173
208
  return ((lexeme.type & Lexeme_1.TokenType.Command) !== 0) && lexeme.value === value;
174
209
  }
210
+ static addPositionedComments(target, comments) {
211
+ var _a;
212
+ if (!comments || comments.length === 0) {
213
+ return;
214
+ }
215
+ target.positionedComments = [
216
+ ...((_a = target.positionedComments) !== null && _a !== void 0 ? _a : []),
217
+ ...comments,
218
+ ];
219
+ }
175
220
  static parseCaseConditionValuePair(lexemes, index) {
176
221
  let idx = index;
177
222
  const condition = ValueParser_1.ValueParser.parseFromLexeme(lexemes, idx);
@@ -1 +1 @@
1
- {"version":3,"file":"CommandExpressionParser.js","sourceRoot":"","sources":["../../src/parsers/CommandExpressionParser.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"CommandExpressionParser.js","sourceRoot":"","sources":["../../src/parsers/CommandExpressionParser.ts"],"names":[],"mappings":"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"}
@@ -19,15 +19,21 @@ class HavingClauseParser {
19
19
  }
20
20
  // Parse from lexeme array (was: parse)
21
21
  static parseFromLexeme(lexemes, index) {
22
+ var _a;
22
23
  let idx = index;
23
24
  if (lexemes[idx].value !== 'having') {
24
25
  throw new Error(`Syntax error at position ${idx}: Expected 'HAVING' keyword but found "${lexemes[idx].value}". HAVING clauses must start with the HAVING keyword.`);
25
26
  }
27
+ const havingKeywordComments = lexemes[idx].positionedComments;
26
28
  idx++;
27
29
  if (idx >= lexemes.length) {
28
30
  throw new Error(`Syntax error: Unexpected end of input after 'HAVING' keyword. The HAVING clause requires a condition expression.`);
29
31
  }
30
32
  const item = ValueParser_1.ValueParser.parseFromLexeme(lexemes, idx);
33
+ 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 : [];
34
+ if (afterKeywordComments.length > 0) {
35
+ item.value.addPositionedComments('before', afterKeywordComments);
36
+ }
31
37
  const clause = new Clause_1.HavingClause(item.value);
32
38
  return { value: clause, newIndex: item.newIndex };
33
39
  }
@@ -1 +1 @@
1
- {"version":3,"file":"HavingParser.js","sourceRoot":"","sources":["../../src/parsers/HavingParser.ts"],"names":[],"mappings":";;;AAAA,6CAAgD;AAEhD,iDAA8C;AAC9C,+CAA4C;AAE5C,MAAa,kBAAkB;IAC3B,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,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,yBAAW,CAAC,eAAe,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QACvD,MAAM,MAAM,GAAG,IAAI,qBAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAE5C,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;IACtD,CAAC;CACJ;AAnCD,gDAmCC"}
1
+ {"version":3,"file":"HavingParser.js","sourceRoot":"","sources":["../../src/parsers/HavingParser.ts"],"names":[],"mappings":";;;AAAA,6CAAgD;AAEhD,iDAA8C;AAC9C,+CAA4C;AAE5C,MAAa,kBAAkB;IAC3B,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,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,yBAAW,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,qBAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAE5C,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;IACtD,CAAC;CACJ;AA1CD,gDA0CC"}
@@ -5,11 +5,17 @@ const Clause_1 = require("../models/Clause");
5
5
  const ValueParser_1 = require("./ValueParser");
6
6
  class JoinOnClauseParser {
7
7
  static tryParse(lexemes, index) {
8
+ var _a;
8
9
  let idx = index;
9
10
  if (idx < lexemes.length && lexemes[idx].value === 'on') {
11
+ const onKeywordComments = lexemes[idx].positionedComments;
10
12
  idx++; // Skip 'on' keyword
11
13
  // Parse the condition expression
12
14
  const condition = ValueParser_1.ValueParser.parseFromLexeme(lexemes, idx);
15
+ 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 : [];
16
+ if (afterKeywordComments.length > 0) {
17
+ condition.value.addPositionedComments('before', afterKeywordComments);
18
+ }
13
19
  idx = condition.newIndex;
14
20
  const joinOn = new Clause_1.JoinOnClause(condition.value);
15
21
  return { value: joinOn, newIndex: idx };
@@ -1 +1 @@
1
- {"version":3,"file":"JoinOnClauseParser.js","sourceRoot":"","sources":["../../src/parsers/JoinOnClauseParser.ts"],"names":[],"mappings":";;;AAAA,6CAAgD;AAEhD,+CAA4C;AAE5C,MAAa,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,yBAAW,CAAC,eAAe,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;YAC5D,GAAG,GAAG,SAAS,CAAC,QAAQ,CAAC;YACzB,MAAM,MAAM,GAAG,IAAI,qBAAY,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;AAbD,gDAaC"}
1
+ {"version":3,"file":"JoinOnClauseParser.js","sourceRoot":"","sources":["../../src/parsers/JoinOnClauseParser.ts"],"names":[],"mappings":";;;AAAA,6CAAgD;AAEhD,+CAA4C;AAE5C,MAAa,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,yBAAW,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,qBAAY,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;AApBD,gDAoBC"}
@@ -19,16 +19,22 @@ class LimitClauseParser {
19
19
  }
20
20
  // Parse from lexeme array (was: parse)
21
21
  static parseFromLexeme(lexemes, index) {
22
+ var _a;
22
23
  let idx = index;
23
24
  if (lexemes[idx].value !== 'limit') {
24
25
  throw new Error(`Syntax error at position ${idx}: Expected 'LIMIT' keyword but found "${lexemes[idx].value}". LIMIT clauses must start with the LIMIT keyword.`);
25
26
  }
27
+ const limitKeywordComments = lexemes[idx].positionedComments;
26
28
  idx++;
27
29
  if (idx >= lexemes.length) {
28
30
  throw new Error(`Syntax error: Unexpected end of input after 'LIMIT' keyword. The LIMIT clause requires a numeric expression.`);
29
31
  }
30
32
  // Parse LIMIT value
31
33
  const limitItem = ValueParser_1.ValueParser.parseFromLexeme(lexemes, idx);
34
+ 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 : [];
35
+ if (afterKeywordComments.length > 0) {
36
+ limitItem.value.addPositionedComments('before', afterKeywordComments);
37
+ }
32
38
  idx = limitItem.newIndex;
33
39
  const clause = new Clause_1.LimitClause(limitItem.value);
34
40
  return { value: clause, newIndex: idx };
@@ -1 +1 @@
1
- {"version":3,"file":"LimitClauseParser.js","sourceRoot":"","sources":["../../src/parsers/LimitClauseParser.ts"],"names":[],"mappings":";;;AAAA,6CAA8D;AAE9D,iDAA8C;AAC9C,+CAA4C;AAE5C,MAAa,iBAAiB;IAC1B,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,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,yBAAW,CAAC,eAAe,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QAC5D,GAAG,GAAG,SAAS,CAAC,QAAQ,CAAC;QAEzB,MAAM,MAAM,GAAG,IAAI,oBAAW,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAEhD,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC;IAC5C,CAAC;CACJ;AAtCD,8CAsCC"}
1
+ {"version":3,"file":"LimitClauseParser.js","sourceRoot":"","sources":["../../src/parsers/LimitClauseParser.ts"],"names":[],"mappings":";;;AAAA,6CAA8D;AAE9D,iDAA8C;AAC9C,+CAA4C;AAE5C,MAAa,iBAAiB;IAC1B,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,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,yBAAW,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,oBAAW,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAEhD,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC;IAC5C,CAAC;CACJ;AA7CD,8CA6CC"}
@@ -19,16 +19,22 @@ class OffsetClauseParser {
19
19
  }
20
20
  // Parse from lexeme array (was: parse)
21
21
  static parseFromLexeme(lexemes, index) {
22
+ var _a;
22
23
  let idx = index;
23
24
  if (lexemes[idx].value !== 'offset') {
24
25
  throw new Error(`Syntax error at position ${idx}: Expected 'OFFSET' keyword but found "${lexemes[idx].value}". OFFSET clauses must start with the OFFSET keyword.`);
25
26
  }
27
+ const offsetKeywordComments = lexemes[idx].positionedComments;
26
28
  idx++;
27
29
  if (idx >= lexemes.length) {
28
30
  throw new Error(`Syntax error: Unexpected end of input after 'OFFSET' keyword. The OFFSET clause requires a numeric expression.`);
29
31
  }
30
32
  // Parse OFFSET value
31
33
  const offsetItem = ValueParser_1.ValueParser.parseFromLexeme(lexemes, idx);
34
+ 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 : [];
35
+ if (afterKeywordComments.length > 0) {
36
+ offsetItem.value.addPositionedComments('before', afterKeywordComments);
37
+ }
32
38
  idx = offsetItem.newIndex;
33
39
  // If there is a "row" or "rows" command, skip it
34
40
  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,6CAAgD;AAEhD,iDAA8C;AAC9C,+CAA4C;AAE5C,MAAa,kBAAkB;IAC3B,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,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,yBAAW,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,qBAAY,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QAElD,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC;IAC5C,CAAC;CACJ;AA3CD,gDA2CC"}
1
+ {"version":3,"file":"OffsetClauseParser.js","sourceRoot":"","sources":["../../src/parsers/OffsetClauseParser.ts"],"names":[],"mappings":";;;AAAA,6CAAgD;AAEhD,iDAA8C;AAC9C,+CAA4C;AAE5C,MAAa,kBAAkB;IAC3B,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,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,yBAAW,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,qBAAY,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QAElD,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC;IAC5C,CAAC;CACJ;AAlDD,gDAkDC"}
@@ -6,6 +6,28 @@ const Lexeme_1 = require("../models/Lexeme");
6
6
  const SqlTokenizer_1 = require("./SqlTokenizer");
7
7
  const ValueParser_1 = require("./ValueParser");
8
8
  class OrderByClauseParser {
9
+ static appendUniqueComments(target, comments) {
10
+ if (!comments || comments.length === 0) {
11
+ return target;
12
+ }
13
+ const merged = target ? [...target] : [];
14
+ for (const comment of comments) {
15
+ if (!merged.includes(comment)) {
16
+ merged.push(comment);
17
+ }
18
+ }
19
+ return merged;
20
+ }
21
+ static collectLexemeComments(token) {
22
+ let comments = null;
23
+ if (token.positionedComments && token.positionedComments.length > 0) {
24
+ for (const posComment of token.positionedComments) {
25
+ comments = this.appendUniqueComments(comments, posComment.comments);
26
+ }
27
+ }
28
+ comments = this.appendUniqueComments(comments, token.comments);
29
+ return comments;
30
+ }
9
31
  // Parse SQL string to AST (was: parse)
10
32
  static parse(query) {
11
33
  const tokenizer = new SqlTokenizer_1.SqlTokenizer(query); // Initialize tokenizer
@@ -51,8 +73,8 @@ class OrderByClauseParser {
51
73
  if (idx >= lexemes.length) {
52
74
  return { value: value, newIndex: idx };
53
75
  }
54
- // Capture comments from ASC/DESC tokens (both legacy comments and positioned comments)
55
- let sortDirectionComments = null;
76
+ // Capture comments from ASC/DESC/NULLS tokens so they stay adjacent to the full ORDER BY item.
77
+ let orderByItemComments = null;
56
78
  let sortDirection = null;
57
79
  if (idx < lexemes.length) {
58
80
  const token = lexemes[idx];
@@ -66,42 +88,33 @@ class OrderByClauseParser {
66
88
  }
67
89
  // Capture comments from the ASC/DESC token
68
90
  if (sortDirection !== null) {
69
- if (token.positionedComments && token.positionedComments.length > 0) {
70
- sortDirectionComments = [];
71
- for (const posComment of token.positionedComments) {
72
- if (posComment.comments && posComment.comments.length > 0) {
73
- sortDirectionComments.push(...posComment.comments);
74
- }
75
- }
76
- }
77
- if (token.comments && token.comments.length > 0) {
78
- if (!sortDirectionComments)
79
- sortDirectionComments = [];
80
- sortDirectionComments.push(...token.comments);
81
- }
91
+ orderByItemComments = this.appendUniqueComments(orderByItemComments, this.collectLexemeComments(token));
82
92
  }
83
93
  }
84
94
  // nulls first, nulls last
85
- const nullsSortDirection = idx >= lexemes.length
86
- ? null
87
- : lexemes[idx].value === 'nulls first'
88
- ? (idx++, Clause_1.NullsSortDirection.First)
89
- : lexemes[idx].value === 'nulls last'
90
- ? (idx++, Clause_1.NullsSortDirection.Last)
91
- : null;
92
- // Apply sort direction comments to the value if captured
93
- if (sortDirectionComments && sortDirectionComments.length > 0) {
94
- if (value.comments) {
95
- value.comments.push(...sortDirectionComments);
95
+ let nullsSortDirection = null;
96
+ if (idx < lexemes.length) {
97
+ const token = lexemes[idx];
98
+ if (token.value === 'nulls first') {
99
+ nullsSortDirection = Clause_1.NullsSortDirection.First;
100
+ idx++;
96
101
  }
97
- else {
98
- value.comments = sortDirectionComments;
102
+ else if (token.value === 'nulls last') {
103
+ nullsSortDirection = Clause_1.NullsSortDirection.Last;
104
+ idx++;
105
+ }
106
+ if (nullsSortDirection !== null) {
107
+ orderByItemComments = this.appendUniqueComments(orderByItemComments, this.collectLexemeComments(token));
99
108
  }
100
109
  }
101
110
  if (sortDirection === null && nullsSortDirection === null) {
102
111
  return { value: value, newIndex: idx };
103
112
  }
104
- return { value: new Clause_1.OrderByItem(value, sortDirection, nullsSortDirection), newIndex: idx };
113
+ const item = new Clause_1.OrderByItem(value, sortDirection, nullsSortDirection);
114
+ if (orderByItemComments && orderByItemComments.length > 0) {
115
+ item.comments = orderByItemComments;
116
+ }
117
+ return { value: item, newIndex: idx };
105
118
  }
106
119
  }
107
120
  exports.OrderByClauseParser = OrderByClauseParser;
@@ -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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"}
@@ -141,6 +141,7 @@ class SqlPrintTokenParser {
141
141
  this._selfHandlingComponentTypes = new Set([
142
142
  SelectQuery_1.SimpleSelectQuery.kind,
143
143
  Clause_1.SelectItem.kind,
144
+ Clause_1.OrderByItem.kind,
144
145
  ValueComponent_1.CaseKeyValuePair.kind,
145
146
  ValueComponent_1.SwitchCaseArgument.kind,
146
147
  ValueComponent_1.ColumnReference.kind,
@@ -160,6 +161,7 @@ class SqlPrintTokenParser {
160
161
  var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o;
161
162
  this.handlers = new Map();
162
163
  this.index = 1;
164
+ this.listContinuationCommentComponents = new WeakSet();
163
165
  this.joinConditionContexts = [];
164
166
  if (options === null || options === void 0 ? void 0 : options.preset) {
165
167
  const preset = options.preset;
@@ -349,6 +351,7 @@ class SqlPrintTokenParser {
349
351
  }
350
352
  visitQualifiedName(arg) {
351
353
  const token = new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.container, '', SqlPrintToken_1.SqlPrintTokenContainerType.QualifiedName);
354
+ const hasOwnComments = this.hasPositionedComments(arg) || this.hasLegacyComments(arg);
352
355
  if (arg.namespaces) {
353
356
  for (let i = 0; i < arg.namespaces.length; i++) {
354
357
  token.innerTokens.push(arg.namespaces[i].accept(this));
@@ -369,7 +372,7 @@ class SqlPrintTokenParser {
369
372
  arg.name.positionedComments = originalNameComments;
370
373
  arg.name.comments = originalNameLegacyComments;
371
374
  // Apply the name's comments to the qualified name token
372
- if (this.hasPositionedComments(arg.name) || this.hasLegacyComments(arg.name)) {
375
+ if (!hasOwnComments && (this.hasPositionedComments(arg.name) || this.hasLegacyComments(arg.name))) {
373
376
  this.addComponentComments(token, arg.name);
374
377
  }
375
378
  // Also handle any comments directly on the QualifiedName itself
@@ -419,6 +422,10 @@ class SqlPrintTokenParser {
419
422
  token.innerTokens.push(new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.keyword, 'nulls last'));
420
423
  }
421
424
  }
425
+ if (arg.comments && arg.comments.length > 0) {
426
+ token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
427
+ token.innerTokens.push(...this.createInlineCommentSequence(arg.comments));
428
+ }
422
429
  return token;
423
430
  }
424
431
  parse(arg) {
@@ -897,7 +904,18 @@ class SqlPrintTokenParser {
897
904
  }
898
905
  visitColumnReference(arg) {
899
906
  const token = new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.container, '', SqlPrintToken_1.SqlPrintTokenContainerType.ColumnReference);
907
+ const hasOwnComments = this.hasPositionedComments(arg) || this.hasLegacyComments(arg);
908
+ const originalNamePositionedComments = arg.qualifiedName.name.positionedComments;
909
+ const originalNameComments = arg.qualifiedName.name.comments;
910
+ if (hasOwnComments) {
911
+ arg.qualifiedName.name.positionedComments = null;
912
+ arg.qualifiedName.name.comments = null;
913
+ }
900
914
  token.innerTokens.push(arg.qualifiedName.accept(this));
915
+ if (hasOwnComments) {
916
+ arg.qualifiedName.name.positionedComments = originalNamePositionedComments;
917
+ arg.qualifiedName.name.comments = originalNameComments;
918
+ }
901
919
  this.addComponentComments(token, arg);
902
920
  return token;
903
921
  }
@@ -1169,6 +1187,7 @@ class SqlPrintTokenParser {
1169
1187
  return token;
1170
1188
  }
1171
1189
  visitParenExpression(arg) {
1190
+ var _a, _b;
1172
1191
  const token = new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.container, '', SqlPrintToken_1.SqlPrintTokenContainerType.ParenExpression);
1173
1192
  // Handle positioned comments for ParenExpression - check both self and inner expression
1174
1193
  const hasOwnComments = arg.positionedComments && arg.positionedComments.length > 0;
@@ -1181,6 +1200,12 @@ class SqlPrintTokenParser {
1181
1200
  innerAfterComments = arg.expression.getPositionedComments('after');
1182
1201
  arg.expression.positionedComments = null;
1183
1202
  }
1203
+ if (hasOwnComments && innerBeforeComments.length > 0) {
1204
+ const innerBeforeSet = new Set(innerBeforeComments);
1205
+ arg.positionedComments = (_b = (_a = arg.positionedComments) === null || _a === void 0 ? void 0 : _a.map(comment => comment.position === 'after'
1206
+ ? { ...comment, comments: comment.comments.filter(value => !innerBeforeSet.has(value)) }
1207
+ : comment).filter(comment => comment.comments.length > 0)) !== null && _b !== void 0 ? _b : null;
1208
+ }
1184
1209
  // Build basic structure first
1185
1210
  token.innerTokens.push(SqlPrintTokenParser.PAREN_OPEN_TOKEN);
1186
1211
  token.innerTokens.push(this.visit(arg.expression));
@@ -1246,7 +1271,6 @@ class SqlPrintTokenParser {
1246
1271
  promotedComments.push(...this.collectCaseLeadingCommentBlocks(conditionToken));
1247
1272
  }
1248
1273
  const switchToken = this.visit(arg.switchCase);
1249
- promotedComments.push(...this.collectCaseLeadingCommentsFromSwitch(switchToken));
1250
1274
  if (promotedComments.length > 0) {
1251
1275
  token.innerTokens.push(...promotedComments);
1252
1276
  }
@@ -1590,11 +1614,13 @@ class SqlPrintTokenParser {
1590
1614
  // Add positioned comments in recorded order
1591
1615
  const beforeComments = arg.getPositionedComments('before');
1592
1616
  const afterComments = arg.getPositionedComments('after');
1617
+ const duplicateCaseAfterComments = arg.value instanceof ValueComponent_1.CaseExpression
1618
+ ? this.collectCaseSelectItemDuplicateAfterComments(arg.value)
1619
+ : new Set();
1593
1620
  if (beforeComments.length > 0) {
1594
- if (arg.value instanceof ValueComponent_1.CaseExpression) {
1621
+ if (arg.value instanceof ValueComponent_1.CaseExpression || this.listContinuationCommentComponents.has(arg)) {
1595
1622
  const commentBlocks = this.createCommentBlocks(beforeComments);
1596
1623
  token.innerTokens.push(...commentBlocks);
1597
- token.innerTokens.push(new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.commentNewline, ''));
1598
1624
  }
1599
1625
  else {
1600
1626
  const commentTokens = this.createInlineCommentSequence(beforeComments);
@@ -1603,9 +1629,12 @@ class SqlPrintTokenParser {
1603
1629
  }
1604
1630
  }
1605
1631
  token.innerTokens.push(this.visit(arg.value));
1606
- if (afterComments.length > 0 && !isParenExpression) {
1632
+ const visibleAfterComments = arg.value instanceof ValueComponent_1.CaseExpression
1633
+ ? this.filterCaseSelectItemDuplicateAfterComments(afterComments, duplicateCaseAfterComments)
1634
+ : afterComments;
1635
+ if (visibleAfterComments.length > 0 && !isParenExpression) {
1607
1636
  token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
1608
- const commentTokens = this.createInlineCommentSequence(afterComments);
1637
+ const commentTokens = this.createInlineCommentSequence(visibleAfterComments);
1609
1638
  token.innerTokens.push(...commentTokens);
1610
1639
  }
1611
1640
  // Restore original positioned comments to avoid side effects
@@ -1679,6 +1708,34 @@ class SqlPrintTokenParser {
1679
1708
  }
1680
1709
  return token;
1681
1710
  }
1711
+ collectCaseSelectItemDuplicateAfterComments(value) {
1712
+ const promoted = new Set();
1713
+ if (value.comments) {
1714
+ for (const comment of value.comments) {
1715
+ promoted.add(comment);
1716
+ }
1717
+ }
1718
+ const firstCase = value.switchCase.cases[0];
1719
+ if (firstCase === null || firstCase === void 0 ? void 0 : firstCase.positionedComments) {
1720
+ for (const positionedComment of firstCase.positionedComments) {
1721
+ if (positionedComment.position === 'before') {
1722
+ for (const comment of positionedComment.comments) {
1723
+ promoted.add(comment);
1724
+ }
1725
+ }
1726
+ }
1727
+ }
1728
+ return promoted;
1729
+ }
1730
+ filterCaseSelectItemDuplicateAfterComments(afterComments, promoted) {
1731
+ if (afterComments.length === 0) {
1732
+ return afterComments;
1733
+ }
1734
+ if (promoted.size === 0) {
1735
+ return afterComments;
1736
+ }
1737
+ return afterComments.filter(comment => !promoted.has(comment));
1738
+ }
1682
1739
  visitSelectClause(arg) {
1683
1740
  const token = new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.keyword, 'select', SqlPrintToken_1.SqlPrintTokenContainerType.SelectClause);
1684
1741
  // Handle positioned comments for SelectClause (unified spec)
@@ -1714,6 +1771,14 @@ class SqlPrintTokenParser {
1714
1771
  for (let i = 0; i < arg.items.length; i++) {
1715
1772
  if (i > 0) {
1716
1773
  token.innerTokens.push(...SqlPrintTokenParser.commaSpaceTokens());
1774
+ this.listContinuationCommentComponents.add(arg.items[i]);
1775
+ try {
1776
+ token.innerTokens.push(this.visit(arg.items[i]));
1777
+ }
1778
+ finally {
1779
+ this.listContinuationCommentComponents.delete(arg.items[i]);
1780
+ }
1781
+ continue;
1717
1782
  }
1718
1783
  token.innerTokens.push(this.visit(arg.items[i]));
1719
1784
  }