rawsql-ts 0.6.0-beta → 0.7.1-beta

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (210) hide show
  1. package/README.md +141 -121
  2. package/dist/esm/index.js +1 -0
  3. package/dist/esm/index.js.map +1 -1
  4. package/dist/esm/models/Clause.js +111 -43
  5. package/dist/esm/models/Clause.js.map +1 -1
  6. package/dist/esm/models/CreateTableQuery.js +12 -22
  7. package/dist/esm/models/CreateTableQuery.js.map +1 -1
  8. package/dist/esm/models/KeywordTrie.js +2 -0
  9. package/dist/esm/models/KeywordTrie.js.map +1 -1
  10. package/dist/esm/models/SimpleSelectQuery.js +17 -15
  11. package/dist/esm/models/SimpleSelectQuery.js.map +1 -1
  12. package/dist/esm/models/SqlPrintToken.js +94 -0
  13. package/dist/esm/models/SqlPrintToken.js.map +1 -0
  14. package/dist/esm/models/ValueComponent.js +86 -17
  15. package/dist/esm/models/ValueComponent.js.map +1 -1
  16. package/dist/esm/parsers/FetchClauseParser.js +84 -0
  17. package/dist/esm/parsers/FetchClauseParser.js.map +1 -0
  18. package/dist/esm/parsers/FullNameParser.js +6 -1
  19. package/dist/esm/parsers/FullNameParser.js.map +1 -1
  20. package/dist/esm/parsers/IdentifierDecorator.js +13 -0
  21. package/dist/esm/parsers/IdentifierDecorator.js.map +1 -0
  22. package/dist/esm/parsers/InsertQueryParser.js +1 -1
  23. package/dist/esm/parsers/JoinClauseParser.js +13 -35
  24. package/dist/esm/parsers/JoinClauseParser.js.map +1 -1
  25. package/dist/esm/parsers/JoinOnClauseParser.js +17 -0
  26. package/dist/esm/parsers/JoinOnClauseParser.js.map +1 -0
  27. package/dist/esm/parsers/JoinUsingClauseParser.js +19 -0
  28. package/dist/esm/parsers/JoinUsingClauseParser.js.map +1 -0
  29. package/dist/esm/parsers/LimitClauseParser.js +1 -13
  30. package/dist/esm/parsers/LimitClauseParser.js.map +1 -1
  31. package/dist/esm/parsers/OffsetClauseParser.js +38 -0
  32. package/dist/esm/parsers/OffsetClauseParser.js.map +1 -0
  33. package/dist/esm/parsers/ParameterDecorator.js +36 -0
  34. package/dist/esm/parsers/ParameterDecorator.js.map +1 -0
  35. package/dist/esm/parsers/SelectClauseParser.js +25 -2
  36. package/dist/esm/parsers/SelectClauseParser.js.map +1 -1
  37. package/dist/esm/parsers/SelectQueryParser.js +40 -13
  38. package/dist/esm/parsers/SelectQueryParser.js.map +1 -1
  39. package/dist/esm/parsers/SourceParser.js +17 -13
  40. package/dist/esm/parsers/SourceParser.js.map +1 -1
  41. package/dist/esm/parsers/SqlPrintTokenParser.js +1058 -0
  42. package/dist/esm/parsers/SqlPrintTokenParser.js.map +1 -0
  43. package/dist/esm/parsers/SqlTokenizer.js +2 -0
  44. package/dist/esm/parsers/SqlTokenizer.js.map +1 -1
  45. package/dist/esm/parsers/WindowClauseParser.js +27 -15
  46. package/dist/esm/parsers/WindowClauseParser.js.map +1 -1
  47. package/dist/esm/tokenReaders/BaseTokenReader.js +3 -3
  48. package/dist/esm/tokenReaders/BaseTokenReader.js.map +1 -1
  49. package/dist/esm/tokenReaders/CommandTokenReader.js +8 -2
  50. package/dist/esm/tokenReaders/CommandTokenReader.js.map +1 -1
  51. package/dist/esm/tokenReaders/EscapedIdentifierTokenReader.js +54 -0
  52. package/dist/esm/tokenReaders/EscapedIdentifierTokenReader.js.map +1 -0
  53. package/dist/esm/tokenReaders/IdentifierTokenReader.js +0 -36
  54. package/dist/esm/tokenReaders/IdentifierTokenReader.js.map +1 -1
  55. package/dist/esm/tokenReaders/LiteralTokenReader.js +23 -6
  56. package/dist/esm/tokenReaders/LiteralTokenReader.js.map +1 -1
  57. package/dist/esm/transformers/CTECollector.js +9 -10
  58. package/dist/esm/transformers/CTECollector.js.map +1 -1
  59. package/dist/esm/transformers/CTEDisabler.js +10 -9
  60. package/dist/esm/transformers/CTEDisabler.js.map +1 -1
  61. package/dist/esm/transformers/CTEInjector.js +2 -2
  62. package/dist/esm/transformers/Formatter.js +19 -646
  63. package/dist/esm/transformers/Formatter.js.map +1 -1
  64. package/dist/esm/transformers/LinePrinter.js +81 -0
  65. package/dist/esm/transformers/LinePrinter.js.map +1 -0
  66. package/dist/esm/transformers/QueryBuilder.js +8 -18
  67. package/dist/esm/transformers/QueryBuilder.js.map +1 -1
  68. package/dist/esm/transformers/SelectableColumnCollector.js +26 -9
  69. package/dist/esm/transformers/SelectableColumnCollector.js.map +1 -1
  70. package/dist/esm/transformers/SqlFormatter.js +31 -0
  71. package/dist/esm/transformers/SqlFormatter.js.map +1 -0
  72. package/dist/esm/transformers/SqlOutputToken.js +9 -0
  73. package/dist/esm/transformers/SqlOutputToken.js.map +1 -0
  74. package/dist/esm/transformers/SqlPrinter.js +144 -0
  75. package/dist/esm/transformers/SqlPrinter.js.map +1 -0
  76. package/dist/esm/transformers/TableSourceCollector.js +32 -16
  77. package/dist/esm/transformers/TableSourceCollector.js.map +1 -1
  78. package/dist/esm/types/index.d.ts +1 -0
  79. package/dist/esm/types/models/Clause.d.ts +64 -13
  80. package/dist/esm/types/models/SimpleSelectQuery.d.ts +20 -5
  81. package/dist/esm/types/models/SqlPrintToken.d.ts +102 -0
  82. package/dist/esm/types/models/ValueComponent.d.ts +43 -9
  83. package/dist/esm/types/parsers/FetchClauseParser.d.ts +24 -0
  84. package/dist/esm/types/parsers/FullNameParser.d.ts +1 -0
  85. package/dist/esm/types/parsers/IdentifierDecorator.d.ts +9 -0
  86. package/dist/esm/types/parsers/JoinClauseParser.d.ts +0 -2
  87. package/dist/esm/types/parsers/JoinOnClauseParser.d.ts +8 -0
  88. package/dist/esm/types/parsers/JoinUsingClauseParser.d.ts +8 -0
  89. package/dist/esm/types/parsers/OffsetClauseParser.d.ts +9 -0
  90. package/dist/esm/types/parsers/ParameterDecorator.d.ts +20 -0
  91. package/dist/esm/types/parsers/SelectClauseParser.d.ts +19 -2
  92. package/dist/esm/types/parsers/SqlPrintTokenParser.d.ts +144 -0
  93. package/dist/esm/types/parsers/WindowClauseParser.d.ts +3 -3
  94. package/dist/esm/types/tokenReaders/EscapedIdentifierTokenReader.d.ts +15 -0
  95. package/dist/esm/types/tokenReaders/IdentifierTokenReader.d.ts +0 -4
  96. package/dist/esm/types/tokenReaders/LiteralTokenReader.d.ts +15 -2
  97. package/dist/esm/types/transformers/Formatter.d.ts +8 -105
  98. package/dist/esm/types/transformers/LinePrinter.d.ts +41 -0
  99. package/dist/esm/types/transformers/SelectableColumnCollector.d.ts +2 -0
  100. package/dist/esm/types/transformers/SqlFormatter.d.ts +40 -0
  101. package/dist/esm/types/transformers/SqlOutputToken.d.ts +6 -0
  102. package/dist/esm/types/transformers/SqlPrinter.d.ts +54 -0
  103. package/dist/esm/types/transformers/TableSourceCollector.d.ts +2 -0
  104. package/dist/esm/utils/stringUtils.js +17 -0
  105. package/dist/esm/utils/stringUtils.js.map +1 -1
  106. package/dist/index.d.ts +1 -0
  107. package/dist/index.js +1 -0
  108. package/dist/index.js.map +1 -1
  109. package/dist/models/Clause.d.ts +64 -13
  110. package/dist/models/Clause.js +115 -44
  111. package/dist/models/Clause.js.map +1 -1
  112. package/dist/models/CreateTableQuery.js +12 -22
  113. package/dist/models/CreateTableQuery.js.map +1 -1
  114. package/dist/models/KeywordTrie.js +2 -0
  115. package/dist/models/KeywordTrie.js.map +1 -1
  116. package/dist/models/SimpleSelectQuery.d.ts +20 -5
  117. package/dist/models/SimpleSelectQuery.js +17 -15
  118. package/dist/models/SimpleSelectQuery.js.map +1 -1
  119. package/dist/models/SqlPrintToken.d.ts +102 -0
  120. package/dist/models/SqlPrintToken.js +98 -0
  121. package/dist/models/SqlPrintToken.js.map +1 -0
  122. package/dist/models/ValueComponent.d.ts +43 -9
  123. package/dist/models/ValueComponent.js +88 -18
  124. package/dist/models/ValueComponent.js.map +1 -1
  125. package/dist/parsers/FetchClauseParser.d.ts +24 -0
  126. package/dist/parsers/FetchClauseParser.js +89 -0
  127. package/dist/parsers/FetchClauseParser.js.map +1 -0
  128. package/dist/parsers/FullNameParser.d.ts +1 -0
  129. package/dist/parsers/FullNameParser.js +6 -1
  130. package/dist/parsers/FullNameParser.js.map +1 -1
  131. package/dist/parsers/IdentifierDecorator.d.ts +9 -0
  132. package/dist/parsers/IdentifierDecorator.js +17 -0
  133. package/dist/parsers/IdentifierDecorator.js.map +1 -0
  134. package/dist/parsers/InsertQueryParser.js +1 -1
  135. package/dist/parsers/JoinClauseParser.d.ts +0 -2
  136. package/dist/parsers/JoinClauseParser.js +12 -34
  137. package/dist/parsers/JoinClauseParser.js.map +1 -1
  138. package/dist/parsers/JoinOnClauseParser.d.ts +8 -0
  139. package/dist/parsers/JoinOnClauseParser.js +21 -0
  140. package/dist/parsers/JoinOnClauseParser.js.map +1 -0
  141. package/dist/parsers/JoinUsingClauseParser.d.ts +8 -0
  142. package/dist/parsers/JoinUsingClauseParser.js +23 -0
  143. package/dist/parsers/JoinUsingClauseParser.js.map +1 -0
  144. package/dist/parsers/LimitClauseParser.js +1 -13
  145. package/dist/parsers/LimitClauseParser.js.map +1 -1
  146. package/dist/parsers/OffsetClauseParser.d.ts +9 -0
  147. package/dist/parsers/OffsetClauseParser.js +42 -0
  148. package/dist/parsers/OffsetClauseParser.js.map +1 -0
  149. package/dist/parsers/ParameterDecorator.d.ts +20 -0
  150. package/dist/parsers/ParameterDecorator.js +40 -0
  151. package/dist/parsers/ParameterDecorator.js.map +1 -0
  152. package/dist/parsers/SelectClauseParser.d.ts +19 -2
  153. package/dist/parsers/SelectClauseParser.js +28 -4
  154. package/dist/parsers/SelectClauseParser.js.map +1 -1
  155. package/dist/parsers/SelectQueryParser.js +40 -13
  156. package/dist/parsers/SelectQueryParser.js.map +1 -1
  157. package/dist/parsers/SourceParser.js +17 -13
  158. package/dist/parsers/SourceParser.js.map +1 -1
  159. package/dist/parsers/SqlPrintTokenParser.d.ts +144 -0
  160. package/dist/parsers/SqlPrintTokenParser.js +1062 -0
  161. package/dist/parsers/SqlPrintTokenParser.js.map +1 -0
  162. package/dist/parsers/SqlTokenizer.js +2 -0
  163. package/dist/parsers/SqlTokenizer.js.map +1 -1
  164. package/dist/parsers/WindowClauseParser.d.ts +3 -3
  165. package/dist/parsers/WindowClauseParser.js +26 -14
  166. package/dist/parsers/WindowClauseParser.js.map +1 -1
  167. package/dist/tokenReaders/BaseTokenReader.js +3 -3
  168. package/dist/tokenReaders/BaseTokenReader.js.map +1 -1
  169. package/dist/tokenReaders/CommandTokenReader.js +8 -2
  170. package/dist/tokenReaders/CommandTokenReader.js.map +1 -1
  171. package/dist/tokenReaders/EscapedIdentifierTokenReader.d.ts +15 -0
  172. package/dist/tokenReaders/EscapedIdentifierTokenReader.js +58 -0
  173. package/dist/tokenReaders/EscapedIdentifierTokenReader.js.map +1 -0
  174. package/dist/tokenReaders/IdentifierTokenReader.d.ts +0 -4
  175. package/dist/tokenReaders/IdentifierTokenReader.js +0 -36
  176. package/dist/tokenReaders/IdentifierTokenReader.js.map +1 -1
  177. package/dist/tokenReaders/LiteralTokenReader.d.ts +15 -2
  178. package/dist/tokenReaders/LiteralTokenReader.js +23 -6
  179. package/dist/tokenReaders/LiteralTokenReader.js.map +1 -1
  180. package/dist/transformers/CTECollector.js +9 -10
  181. package/dist/transformers/CTECollector.js.map +1 -1
  182. package/dist/transformers/CTEDisabler.js +9 -8
  183. package/dist/transformers/CTEDisabler.js.map +1 -1
  184. package/dist/transformers/CTEInjector.js +2 -2
  185. package/dist/transformers/Formatter.d.ts +8 -105
  186. package/dist/transformers/Formatter.js +20 -647
  187. package/dist/transformers/Formatter.js.map +1 -1
  188. package/dist/transformers/LinePrinter.d.ts +41 -0
  189. package/dist/transformers/LinePrinter.js +86 -0
  190. package/dist/transformers/LinePrinter.js.map +1 -0
  191. package/dist/transformers/QueryBuilder.js +8 -18
  192. package/dist/transformers/QueryBuilder.js.map +1 -1
  193. package/dist/transformers/SelectableColumnCollector.d.ts +2 -0
  194. package/dist/transformers/SelectableColumnCollector.js +25 -8
  195. package/dist/transformers/SelectableColumnCollector.js.map +1 -1
  196. package/dist/transformers/SqlFormatter.d.ts +40 -0
  197. package/dist/transformers/SqlFormatter.js +35 -0
  198. package/dist/transformers/SqlFormatter.js.map +1 -0
  199. package/dist/transformers/SqlOutputToken.d.ts +6 -0
  200. package/dist/transformers/SqlOutputToken.js +13 -0
  201. package/dist/transformers/SqlOutputToken.js.map +1 -0
  202. package/dist/transformers/SqlPrinter.d.ts +54 -0
  203. package/dist/transformers/SqlPrinter.js +148 -0
  204. package/dist/transformers/SqlPrinter.js.map +1 -0
  205. package/dist/transformers/TableSourceCollector.d.ts +2 -0
  206. package/dist/transformers/TableSourceCollector.js +30 -14
  207. package/dist/transformers/TableSourceCollector.js.map +1 -1
  208. package/dist/utils/stringUtils.js +17 -0
  209. package/dist/utils/stringUtils.js.map +1 -1
  210. package/package.json +2 -1
@@ -1,4 +1,4 @@
1
- import { SelectClause } from "../models/Clause";
1
+ import { SelectClause, SelectItem } from "../models/Clause";
2
2
  import { Lexeme } from "../models/Lexeme";
3
3
  export declare class SelectClauseParser {
4
4
  static parse(query: string): SelectClause;
@@ -6,5 +6,22 @@ export declare class SelectClauseParser {
6
6
  value: SelectClause;
7
7
  newIndex: number;
8
8
  };
9
- private static parseItem;
9
+ }
10
+ export declare class SelectItemParser {
11
+ /**
12
+ * Parses a single select item from a SQL string.
13
+ * @param query The SQL string representing a select item (e.g. 'id as user_id').
14
+ * @returns The parsed SelectItem instance.
15
+ */
16
+ static parse(query: string): SelectItem;
17
+ /**
18
+ * Parses a single select item from lexemes.
19
+ * @param lexemes The array of lexemes.
20
+ * @param index The starting index.
21
+ * @returns An object containing the SelectItem and the new index.
22
+ */
23
+ static parseItem(lexemes: Lexeme[], index: number): {
24
+ value: SelectItem;
25
+ newIndex: number;
26
+ };
10
27
  }
@@ -0,0 +1,144 @@
1
+ import { FromClause, JoinClause, JoinOnClause, JoinUsingClause, FunctionSource, SourceAliasExpression, WhereClause, GroupByClause, HavingClause, SubQuerySource, WindowFrameClause, LimitClause, ForClause, OffsetClause, WindowsClause as WindowClause, CommonTable, WithClause, FetchClause, FetchExpression, UpdateClause, SetClause, ReturningClause, SetClauseItem } from "../models/Clause";
2
+ import { SimpleSelectQuery, ValuesQuery } from "../models/SelectQuery";
3
+ import { SqlComponent, SqlComponentVisitor } from "../models/SqlComponent";
4
+ import { SqlPrintToken } from "../models/SqlPrintToken";
5
+ import { InlineQuery } from "../models/ValueComponent";
6
+ import { IdentifierDecorator } from "./IdentifierDecorator";
7
+ import { ParameterDecorator } from "./ParameterDecorator";
8
+ import { CreateTableQuery } from "../models/CreateTableQuery";
9
+ export declare enum ParameterStyle {
10
+ Anonymous = "anonymous",
11
+ Indexed = "indexed",
12
+ Named = "named"
13
+ }
14
+ export interface FormatterConfig {
15
+ identifierEscape?: {
16
+ start: string;
17
+ end: string;
18
+ };
19
+ parameterSymbol?: string | {
20
+ start: string;
21
+ end: string;
22
+ };
23
+ /**
24
+ * Parameter style: anonymous (?), indexed ($1), or named (:name)
25
+ */
26
+ parameterStyle?: ParameterStyle;
27
+ }
28
+ export declare const PRESETS: Record<string, FormatterConfig>;
29
+ export declare class SqlPrintTokenParser implements SqlComponentVisitor<SqlPrintToken> {
30
+ private static readonly SPACE_TOKEN;
31
+ private static readonly COMMA_TOKEN;
32
+ private static readonly ARGUMENT_SPLIT_COMMA_TOKEN;
33
+ private static readonly PAREN_OPEN_TOKEN;
34
+ private static readonly PAREN_CLOSE_TOKEN;
35
+ private static readonly DOT_TOKEN;
36
+ private handlers;
37
+ parameterDecorator: ParameterDecorator;
38
+ identifierDecorator: IdentifierDecorator;
39
+ index: number;
40
+ constructor(options?: {
41
+ preset?: FormatterConfig;
42
+ identifierEscape?: {
43
+ start: string;
44
+ end: string;
45
+ };
46
+ parameterSymbol?: string | {
47
+ start: string;
48
+ end: string;
49
+ };
50
+ parameterStyle?: 'anonymous' | 'indexed' | 'named';
51
+ });
52
+ /**
53
+ * Pretty-prints a BinarySelectQuery (e.g., UNION, INTERSECT, EXCEPT).
54
+ * This will recursively print left and right queries, separated by the operator.
55
+ * @param arg BinarySelectQuery
56
+ */
57
+ private visitBinarySelectQuery;
58
+ /**
59
+ * Returns an array of tokens representing a comma followed by a space.
60
+ * This is a common pattern in SQL pretty-printing.
61
+ */
62
+ private static commaSpaceTokens;
63
+ private static argumentCommaSpaceTokens;
64
+ private visitQualifiedName;
65
+ private visitPartitionByClause;
66
+ private visitOrderByClause;
67
+ /**
68
+ * Print an OrderByItem (expression [asc|desc] [nulls first|last])
69
+ */
70
+ private visitOrderByItem;
71
+ parse(arg: SqlComponent): {
72
+ token: SqlPrintToken;
73
+ params: any[] | Record<string, any>[] | Record<string, any>;
74
+ };
75
+ visit(arg: SqlComponent): SqlPrintToken;
76
+ private visitValueList;
77
+ private visitColumnReference;
78
+ private visitFunctionCall;
79
+ private visitUnaryExpression;
80
+ private visitBinaryExpression;
81
+ private visitLiteralValue;
82
+ private visitParameterExpression;
83
+ private visitSwitchCaseArgument;
84
+ private createElseToken;
85
+ private visitCaseKeyValuePair;
86
+ private visitRawString;
87
+ private visitIdentifierString;
88
+ private visitParenExpression;
89
+ private visitCastExpression;
90
+ private visitCaseExpression;
91
+ private visitArrayExpression;
92
+ private visitBetweenExpression;
93
+ private visitStringSpecifierExpression;
94
+ private visitTypeValue;
95
+ private visitTupleExpression;
96
+ private visitWindowFrameExpression;
97
+ private visitWindowFrameSpec;
98
+ /**
99
+ * Prints a window frame boundary value, such as "5 preceding" or "3 following".
100
+ * @param arg WindowFrameBoundaryValue
101
+ */
102
+ private visitWindowFrameBoundaryValue;
103
+ /**
104
+ * Prints a static window frame bound, such as "unbounded preceding", "current row", or "unbounded following".
105
+ * @param arg WindowFrameBoundStatic
106
+ */
107
+ private visitWindowFrameBoundStatic;
108
+ private visitSelectItem;
109
+ private visitSelectClause;
110
+ private visitDistinct;
111
+ private visitDistinctOn;
112
+ private visitTableSource;
113
+ private visitSourceExpression;
114
+ visitFromClause(arg: FromClause): SqlPrintToken;
115
+ visitJoinClause(arg: JoinClause): SqlPrintToken;
116
+ visitJoinOnClause(arg: JoinOnClause): SqlPrintToken;
117
+ visitJoinUsingClause(arg: JoinUsingClause): SqlPrintToken;
118
+ visitFunctionSource(arg: FunctionSource): SqlPrintToken;
119
+ visitSourceAliasExpression(arg: SourceAliasExpression): SqlPrintToken;
120
+ visitWhereClause(arg: WhereClause): SqlPrintToken;
121
+ visitGroupByClause(arg: GroupByClause): SqlPrintToken;
122
+ visitHavingClause(arg: HavingClause): SqlPrintToken;
123
+ visitWindowClause(arg: WindowClause): SqlPrintToken;
124
+ visitWindowFrameClause(arg: WindowFrameClause): SqlPrintToken;
125
+ visitLimitClause(arg: LimitClause): SqlPrintToken;
126
+ visitOffsetClause(arg: OffsetClause): SqlPrintToken;
127
+ visitFetchClause(arg: FetchClause): SqlPrintToken;
128
+ visitFetchExpression(arg: FetchExpression): SqlPrintToken;
129
+ visitForClause(arg: ForClause): SqlPrintToken;
130
+ visitWithClause(arg: WithClause): SqlPrintToken;
131
+ visitCommonTable(arg: CommonTable): SqlPrintToken;
132
+ visitSimpleQuery(arg: SimpleSelectQuery): SqlPrintToken;
133
+ visitSubQuerySource(arg: SubQuerySource): SqlPrintToken;
134
+ visitValuesQuery(arg: ValuesQuery): SqlPrintToken;
135
+ visitInlineQuery(arg: InlineQuery): SqlPrintToken;
136
+ private visitInsertQuery;
137
+ private visitInsertClause;
138
+ private visitUpdateQuery;
139
+ visitUpdateClause(arg: UpdateClause): SqlPrintToken;
140
+ visitSetClause(arg: SetClause): SqlPrintToken;
141
+ visitSetClauseItem(arg: SetClauseItem): SqlPrintToken;
142
+ visitReturningClause(arg: ReturningClause): SqlPrintToken;
143
+ visitCreateTableQuery(arg: CreateTableQuery): SqlPrintToken;
144
+ }
@@ -1,9 +1,9 @@
1
- import { WindowFrameClause } from "../models/Clause";
1
+ import { WindowsClause } from "../models/Clause";
2
2
  import { Lexeme } from "../models/Lexeme";
3
3
  export declare class WindowClauseParser {
4
- static parse(query: string): WindowFrameClause;
4
+ static parse(query: string): WindowsClause;
5
5
  static parseFromLexeme(lexemes: Lexeme[], index: number): {
6
- value: WindowFrameClause;
6
+ value: WindowsClause;
7
7
  newIndex: number;
8
8
  };
9
9
  }
@@ -0,0 +1,15 @@
1
+ import { BaseTokenReader } from './BaseTokenReader';
2
+ import { Lexeme } from '../models/Lexeme';
3
+ /**
4
+ * Reads SQL identifier tokens
5
+ */
6
+ export declare class EscapedIdentifierTokenReader extends BaseTokenReader {
7
+ /**
8
+ * Try to read an identifier token
9
+ */
10
+ tryRead(previous: Lexeme | null): Lexeme | null;
11
+ /**
12
+ * Read an escaped identifier (surrounded by delimiters)
13
+ */
14
+ private readEscapedIdentifier;
15
+ }
@@ -8,8 +8,4 @@ export declare class IdentifierTokenReader extends BaseTokenReader {
8
8
  * Try to read an identifier token
9
9
  */
10
10
  tryRead(previous: Lexeme | null): Lexeme | null;
11
- /**
12
- * Read an escaped identifier (surrounded by delimiters)
13
- */
14
- private readEscapedIdentifier;
15
11
  }
@@ -9,9 +9,22 @@ export declare class LiteralTokenReader extends BaseTokenReader {
9
9
  tryRead(previous: Lexeme | null): Lexeme | null;
10
10
  private tryReadKeyword;
11
11
  /**
12
- * Check if the current context allows for a signed number
12
+ * Determines if the current context treats '+' or '-' as a numeric sign or an operator.
13
+ * This method is used to differentiate between operators and numeric signs (e.g., '+' or '-').
14
+ *
15
+ * For example:
16
+ * - In `1-1`, the '-' is treated as an operator, so the expression is split into `1`, `-`, and `1`.
17
+ * - In `-1`, the '-' is treated as a sign, making `-1` a single, indivisible literal.
18
+ *
19
+ * The logic for determining whether '+' or '-' is a sign or an operator is as follows:
20
+ * - If there is no previous lexeme, it is considered the start of the input, so the sign is valid.
21
+ * - If the previous lexeme is a literal or an identifier (e.g., `a.id`), the sign is treated as an operator.
22
+ * - If the previous lexeme is a closing parenthesis (e.g., `count(*)`), the sign is also treated as an operator.
23
+ *
24
+ * @param previous The previous lexeme in the input stream.
25
+ * @returns "sign" if the context allows for a numeric sign, otherwise "operator".
13
26
  */
14
- private isValidNumericPrefix;
27
+ private determineSignOrOperator;
15
28
  /**
16
29
  * Read a numeric value
17
30
  */
@@ -1,114 +1,17 @@
1
- import { SqlComponent, SqlComponentVisitor } from "../models/SqlComponent";
2
- export declare enum ParameterStyle {
3
- Anonymous = "anonymous",// ?
4
- Indexed = "indexed",// $1, $2, ...
5
- Named = "named"
6
- }
7
- interface FormatterConfig {
8
- identifierEscape?: {
9
- start: string;
10
- end: string;
11
- };
12
- parameterSymbol?: string | {
13
- start: string;
14
- end: string;
15
- };
16
- /**
17
- * Parameter style: anonymous (?), indexed ($1), or named (:name)
18
- */
19
- parameterStyle?: ParameterStyle;
20
- }
1
+ import { SqlFormatter } from './SqlFormatter';
2
+ import { SqlComponent, SqlComponentVisitor } from '../models/SqlComponent';
3
+ import { FormatterConfig } from '../parsers/SqlPrintTokenParser';
4
+ /**
5
+ * @deprecated The Formatter class is deprecated. Use SqlFormatter instead.
6
+ */
21
7
  export declare class Formatter implements SqlComponentVisitor<string> {
22
- /**
23
- * Preset configs for common DB dialects.
24
- */
25
- static readonly PRESETS: Record<string, FormatterConfig>;
26
- private handlers;
27
- private config;
28
- private parameterIndex;
8
+ private sqlFormatter;
29
9
  constructor();
30
- /**
31
- * Formats the given SQL AST node into a SQL string.
32
- * This is the recommended public API for users.
33
- * @param arg The root SQL AST node to format.
34
- * @param config (Optional) Formatter configuration.
35
- * @returns The formatted SQL string.
36
- */
37
10
  format(arg: SqlComponent, config?: FormatterConfig | null): string;
38
11
  formatWithParameters(arg: SqlComponent, config?: FormatterConfig | null): {
39
12
  sql: string;
40
13
  params: any[] | Record<string, any>[] | Record<string, any>;
41
14
  };
42
- /**
43
- * Visitor entry point for SQL AST nodes.
44
- * Note: This method is public only for interface compatibility.
45
- * Users should call the format() method instead of visit() directly.
46
- * (If you call visit() directly, you are basically breaking the abstraction, so don't do it!)
47
- * @param arg The SQL AST node to visit.
48
- * @returns The formatted SQL string for the node.
49
- */
50
15
  visit(arg: SqlComponent): string;
51
- private visitBinarySelectQuery;
52
- private visitWindowFrameBoundaryValue;
53
- private visitWindowFrameBoundStatic;
54
- private visitWindowFrameExpression;
55
- private visitWindowFrameSpec;
56
- private visitJoinUsingClause;
57
- private visitJoinOnClause;
58
- private visitTypeValue;
59
- private visitStringSpecifierExpression;
60
- private visitWithClause;
61
- private visitCommonTable;
62
- private visitDistinctOn;
63
- private visitDistinct;
64
- private visitHavingClause;
65
- private visitGroupByClause;
66
- private visitFromClause;
67
- private visitJoinClause;
68
- private visitSourceAliasExpression;
69
- private visitSourceExpression;
70
- private visitSubQuerySource;
71
- private visitFunctionSource;
72
- private visitTableSource;
73
- private visitValueList;
74
- private visitSwitchCaseArgument;
75
- private visitColumnReference;
76
- private visitFunctionCall;
77
- private visitUnaryExpression;
78
- private visitBinaryExpression;
79
- private visitLiteralExpression;
80
- private visitParameterExpression;
81
- private visitSelectItemExpression;
82
- private visitSelectClause;
83
- private visitSelectQuery;
84
- private visitArrayExpression;
85
- private visitCaseExpression;
86
- private visitCastExpression;
87
- private visitBracketExpression;
88
- private visitBetweenExpression;
89
- private visitPartitionByClause;
90
- private visitOrderByClause;
91
- private visitOrderByItem;
92
- private visitWindowFrameClause;
93
- private visitLimitClause;
94
- private visitFetchSpecification;
95
- private visitForClause;
96
- private visitWhereClause;
97
- private visitInlineQuery;
98
- private visitRawString;
99
- private visitIdentifierString;
100
- private visitValuesQuery;
101
- private visitTupleExpression;
102
- /**
103
- * Formats a CreateTableQuery into SQL string.
104
- */
105
- private visitCreateTableQuery;
106
- private visitInsertQuery;
107
- private visitUpdateQuery;
108
- private visitUpdateClause;
109
- private visitSetClause;
110
- private visitSetClauseItem;
111
- private visitReturningClause;
112
- private visitInsertClause;
113
16
  }
114
- export {};
17
+ export { SqlFormatter };
@@ -0,0 +1,41 @@
1
+ export type NewlineOption = ' ' | '\n' | '\r\n';
2
+ export type IndentCharOption = '' | ' ' | '\t';
3
+ /**
4
+ * SqlPrintHelper provides utility methods for SQL pretty printing.
5
+ */
6
+ export declare class LinePrinter {
7
+ indentChar: IndentCharOption;
8
+ indentSize: number;
9
+ newline: NewlineOption;
10
+ lines: PrintLine[];
11
+ /**
12
+ * @param indentChar Character used for indentation (default: ' ') // Updated comment to reflect options
13
+ * @param indentSize Number of indentChar per level (default: 0)
14
+ * @param newline Newline string (default: '\r\n') // Changed type and default value
15
+ */
16
+ constructor(indentChar?: IndentCharOption, indentSize?: number, newline?: NewlineOption);
17
+ print(): string;
18
+ /**
19
+ * Returns the indent string for a given level.
20
+ * @param level Indentation level
21
+ */
22
+ private indent;
23
+ /**
24
+ * Appends a newline token to the given tokens array if newline is set, or adds an empty line if tokens is empty.
25
+ * @param tokens Array of token objects with 'level' and 'text' property
26
+ * @param level Indentation level
27
+ */
28
+ appendNewline(level: number): void;
29
+ /**
30
+ * Appends text to the last element of tokens array.
31
+ * @param tokens Array of token objects with 'text' property
32
+ * @param text Text to append
33
+ */
34
+ appendText(text: string): void;
35
+ getCurrentLine(): PrintLine;
36
+ }
37
+ export declare class PrintLine {
38
+ level: number;
39
+ text: string;
40
+ constructor(level: number, text: string);
41
+ }
@@ -56,6 +56,8 @@ export declare class SelectableColumnCollector implements SqlComponentVisitor<vo
56
56
  private visitWindowFrameClause;
57
57
  private visitWindowFrameExpression;
58
58
  private visitLimitClause;
59
+ private offsetClause;
60
+ private visitFetchClause;
59
61
  private visitJoinOnClause;
60
62
  private visitJoinUsingClause;
61
63
  private visitColumnReference;
@@ -0,0 +1,40 @@
1
+ import { CommaBreakStyle, AndBreakStyle } from './SqlPrinter';
2
+ import { IndentCharOption, NewlineOption } from './LinePrinter';
3
+ import { SqlComponent } from '../models/SqlComponent';
4
+ export declare const VALID_PRESETS: readonly ["mysql", "postgres", "sqlserver", "sqlite"];
5
+ export type PresetName = (typeof VALID_PRESETS)[number];
6
+ /**
7
+ * SqlFormatter class combines parsing and printing of SQL queries into a single interface.
8
+ */
9
+ export declare class SqlFormatter {
10
+ private parser;
11
+ private printer;
12
+ constructor(options?: {
13
+ preset?: PresetName;
14
+ identifierEscape?: {
15
+ start: string;
16
+ end: string;
17
+ };
18
+ parameterSymbol?: string | {
19
+ start: string;
20
+ end: string;
21
+ };
22
+ parameterStyle?: 'anonymous' | 'indexed' | 'named';
23
+ indentSize?: number;
24
+ indentChar?: IndentCharOption;
25
+ newline?: NewlineOption;
26
+ keywordCase?: 'none' | 'upper' | 'lower';
27
+ commaBreak?: CommaBreakStyle;
28
+ andBreak?: AndBreakStyle;
29
+ });
30
+ /**
31
+ * Formats a SQL query string with the given parameters.
32
+ * @param sqlText The SQL query string to format.
33
+ * @param parameters A dictionary of parameters to replace in the query.
34
+ * @returns An object containing the formatted SQL string and the parameters.
35
+ */
36
+ format(sql: SqlComponent): {
37
+ formattedSql: string;
38
+ params: Record<string, any>;
39
+ };
40
+ }
@@ -0,0 +1,6 @@
1
+ export declare class SqlOutputToken {
2
+ type: string;
3
+ text: string;
4
+ innerTokens: SqlOutputToken[];
5
+ constructor(type: string, text: string, innerTokens?: SqlOutputToken[]);
6
+ }
@@ -0,0 +1,54 @@
1
+ import { SqlPrintToken } from "../models/SqlPrintToken";
2
+ import { IndentCharOption, NewlineOption } from "./LinePrinter";
3
+ /**
4
+ * CommaBreakStyle determines how commas are placed in formatted SQL output.
5
+ * - 'none': No line break for commas
6
+ * - 'before': Line break before comma
7
+ * - 'after': Line break after comma
8
+ */
9
+ export type CommaBreakStyle = 'none' | 'before' | 'after';
10
+ /**
11
+ * AndBreakStyle determines how AND operators are placed in formatted SQL output.
12
+ * - 'none': No line break for AND
13
+ * - 'before': Line break before AND
14
+ * - 'after': Line break after AND
15
+ */
16
+ export type AndBreakStyle = 'none' | 'before' | 'after';
17
+ /**
18
+ * SqlPrinter formats a SqlPrintToken tree into a SQL string with flexible style options.
19
+ */
20
+ export declare class SqlPrinter {
21
+ /** Indent character (e.g., ' ' or '\\t') */
22
+ indentChar: IndentCharOption;
23
+ /** Indent size (number of indentChar repetitions per level) */
24
+ indentSize: number;
25
+ /** Newline character (e.g., '\\n' or '\\r\\n') */
26
+ newline: NewlineOption;
27
+ /** Comma break style: 'none', 'before', or 'after' */
28
+ commaBreak: CommaBreakStyle;
29
+ /** AND break style: 'none', 'before', or 'after' */
30
+ andBreak: AndBreakStyle;
31
+ /** Keyword case style: 'none', 'upper' | 'lower' */
32
+ keywordCase: 'none' | 'upper' | 'lower';
33
+ private linePrinter;
34
+ private indentIncrementContainers;
35
+ /**
36
+ * @param options Optional style settings for pretty printing
37
+ */
38
+ constructor(options?: {
39
+ indentChar?: IndentCharOption;
40
+ indentSize?: number;
41
+ newline?: NewlineOption;
42
+ commaBreak?: CommaBreakStyle;
43
+ andBreak?: AndBreakStyle;
44
+ keywordCase?: 'none' | 'upper' | 'lower';
45
+ indentIncrementContainerTypes?: string[];
46
+ });
47
+ /**
48
+ * Converts a SqlPrintToken tree to a formatted SQL string.
49
+ * @param token The root SqlPrintToken
50
+ * @param level Indentation level (default: 0)
51
+ */
52
+ print(token: SqlPrintToken, level?: number): string;
53
+ private appendToken;
54
+ }
@@ -74,6 +74,8 @@ export declare class TableSourceCollector implements SqlComponentVisitor<void> {
74
74
  private visitOrderByClause;
75
75
  private visitWindowFrameClause;
76
76
  private visitLimitClause;
77
+ private visitOffsetClause;
78
+ private visitFetchClause;
77
79
  private visitForClause;
78
80
  private visitOrderByItem;
79
81
  private visitSelectClause;
@@ -24,6 +24,23 @@ export class StringUtils {
24
24
  */
25
25
  static skipWhiteSpace(input, position) {
26
26
  const length = input.length;
27
+ /*
28
+ * Optimization: Try to skip 4 spaces at once (for 4-space indents).
29
+ * This is effective when SQL is deeply nested and uses 4-space indentation.
30
+ * In typical cases, charCodeAt in a loop is fastest, but for large/indented SQL,
31
+ * this can reduce the number of iterations and improve stability (lower error/deviation in benchmarks).
32
+ * If indentation is not 4 spaces, this check is skipped quickly, so overhead is minimal.
33
+ *
34
+ * Even for 2-space indents or mixed indents (2, 4, tab),
35
+ * the remaining whitespace is handled by the following loop, so there is no performance loss.
36
+ *
37
+ * Benchmark results show that this optimization does not slow down short queries,
38
+ * and can make long/indented queries more stable and slightly faster.
39
+ */
40
+ while (position + 4 <= length && input.slice(position, position + 4) === ' ') {
41
+ position += 4;
42
+ }
43
+ // Then skip remaining whitespace one by one (space, tab, newline, carriage return)
27
44
  while (position < length) {
28
45
  const charCode = input.charCodeAt(position);
29
46
  // ' '=32, '\t'=9, '\n'=10, '\r'=13
@@ -1 +1 @@
1
- {"version":3,"file":"stringUtils.js","sourceRoot":"","sources":["../../../src/utils/stringUtils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"stringUtils.js","sourceRoot":"","sources":["../../../src/utils/stringUtils.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -7,6 +7,7 @@ export * from './models/ValuesQuery';
7
7
  export * from './transformers/CTECollector';
8
8
  export * from './transformers/CTENormalizer';
9
9
  export * from './transformers/Formatter';
10
+ export * from './transformers/SqlFormatter';
10
11
  export * from './transformers/QueryBuilder';
11
12
  export * from './transformers/SelectValueCollector';
12
13
  export * from './transformers/SelectableColumnCollector';
package/dist/index.js CHANGED
@@ -24,6 +24,7 @@ __exportStar(require("./models/ValuesQuery"), exports);
24
24
  __exportStar(require("./transformers/CTECollector"), exports);
25
25
  __exportStar(require("./transformers/CTENormalizer"), exports);
26
26
  __exportStar(require("./transformers/Formatter"), exports);
27
+ __exportStar(require("./transformers/SqlFormatter"), exports);
27
28
  __exportStar(require("./transformers/QueryBuilder"), exports); // old name:QueryConverter
28
29
  __exportStar(require("./transformers/SelectValueCollector"), exports);
29
30
  __exportStar(require("./transformers/SelectableColumnCollector"), exports);
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,oCAAoC;AACpC,8DAA4C;AAC5C,8DAA4C;AAE5C,6DAA2C;AAC3C,uDAAqC;AACrC,0DAAwC;AACxC,uDAAqC;AAErC,8DAA4C;AAC5C,+DAA6C;AAC7C,2DAAyC;AACzC,8DAA4C,CAAC,0BAA0B;AACvE,sEAAoD;AACpD,2EAAyD;AACzD,qEAAmD;AACnD,sEAAoD;AACpD,2EAAyD;AACzD,oEAAoE"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,oCAAoC;AACpC,8DAA4C;AAC5C,8DAA4C;AAE5C,6DAA2C;AAC3C,uDAAqC;AACrC,0DAAwC;AACxC,uDAAqC;AAErC,8DAA4C;AAC5C,+DAA6C;AAC7C,2DAAyC;AACzC,8DAA4C;AAC5C,8DAA4C,CAAC,0BAA0B;AACvE,sEAAoD;AACpD,2EAAyD;AACzD,qEAAmD;AACnD,sEAAoD;AACpD,2EAAyD;AACzD,oEAAoE"}