rawsql-ts 0.5.0-beta → 0.7.0-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 (266) hide show
  1. package/README.md +152 -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 +185 -19
  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/InsertQuery.js +2 -9
  9. package/dist/esm/models/InsertQuery.js.map +1 -1
  10. package/dist/esm/models/KeywordTrie.js +2 -0
  11. package/dist/esm/models/KeywordTrie.js.map +1 -1
  12. package/dist/esm/models/SimpleSelectQuery.js +17 -15
  13. package/dist/esm/models/SimpleSelectQuery.js.map +1 -1
  14. package/dist/esm/models/SqlPrintToken.js +94 -0
  15. package/dist/esm/models/SqlPrintToken.js.map +1 -0
  16. package/dist/esm/models/UpdateQuery.js +25 -0
  17. package/dist/esm/models/UpdateQuery.js.map +1 -0
  18. package/dist/esm/models/ValueComponent.js +105 -19
  19. package/dist/esm/models/ValueComponent.js.map +1 -1
  20. package/dist/esm/parsers/FetchClauseParser.js +84 -0
  21. package/dist/esm/parsers/FetchClauseParser.js.map +1 -0
  22. package/dist/esm/parsers/FullNameParser.js +94 -0
  23. package/dist/esm/parsers/FullNameParser.js.map +1 -0
  24. package/dist/esm/parsers/FunctionExpressionParser.js +33 -32
  25. package/dist/esm/parsers/FunctionExpressionParser.js.map +1 -1
  26. package/dist/esm/parsers/IdentifierDecorator.js +13 -0
  27. package/dist/esm/parsers/IdentifierDecorator.js.map +1 -0
  28. package/dist/esm/parsers/IdentifierParser.js +5 -30
  29. package/dist/esm/parsers/IdentifierParser.js.map +1 -1
  30. package/dist/esm/parsers/InsertQueryParser.js +7 -28
  31. package/dist/esm/parsers/InsertQueryParser.js.map +1 -1
  32. package/dist/esm/parsers/JoinClauseParser.js +13 -35
  33. package/dist/esm/parsers/JoinClauseParser.js.map +1 -1
  34. package/dist/esm/parsers/JoinOnClauseParser.js +17 -0
  35. package/dist/esm/parsers/JoinOnClauseParser.js.map +1 -0
  36. package/dist/esm/parsers/JoinUsingClauseParser.js +19 -0
  37. package/dist/esm/parsers/JoinUsingClauseParser.js.map +1 -0
  38. package/dist/esm/parsers/LimitClauseParser.js +1 -13
  39. package/dist/esm/parsers/LimitClauseParser.js.map +1 -1
  40. package/dist/esm/parsers/OffsetClauseParser.js +38 -0
  41. package/dist/esm/parsers/OffsetClauseParser.js.map +1 -0
  42. package/dist/esm/parsers/ParameterDecorator.js +36 -0
  43. package/dist/esm/parsers/ParameterDecorator.js.map +1 -0
  44. package/dist/esm/parsers/ReturningClauseParser.js +31 -0
  45. package/dist/esm/parsers/ReturningClauseParser.js.map +1 -0
  46. package/dist/esm/parsers/SelectClauseParser.js +25 -2
  47. package/dist/esm/parsers/SelectClauseParser.js.map +1 -1
  48. package/dist/esm/parsers/SelectQueryParser.js +40 -13
  49. package/dist/esm/parsers/SelectQueryParser.js.map +1 -1
  50. package/dist/esm/parsers/SetClauseParser.js +39 -0
  51. package/dist/esm/parsers/SetClauseParser.js.map +1 -0
  52. package/dist/esm/parsers/SourceExpressionParser.js +19 -0
  53. package/dist/esm/parsers/SourceExpressionParser.js.map +1 -1
  54. package/dist/esm/parsers/SourceParser.js +31 -19
  55. package/dist/esm/parsers/SourceParser.js.map +1 -1
  56. package/dist/esm/parsers/SqlPrintTokenParser.js +1058 -0
  57. package/dist/esm/parsers/SqlPrintTokenParser.js.map +1 -0
  58. package/dist/esm/parsers/UpdateClauseParser.js +17 -0
  59. package/dist/esm/parsers/UpdateClauseParser.js.map +1 -0
  60. package/dist/esm/parsers/UpdateQueryParser.js +84 -0
  61. package/dist/esm/parsers/UpdateQueryParser.js.map +1 -0
  62. package/dist/esm/parsers/ValueParser.js +13 -11
  63. package/dist/esm/parsers/ValueParser.js.map +1 -1
  64. package/dist/esm/parsers/WindowClauseParser.js +27 -15
  65. package/dist/esm/parsers/WindowClauseParser.js.map +1 -1
  66. package/dist/esm/tokenReaders/BaseTokenReader.js +3 -3
  67. package/dist/esm/tokenReaders/BaseTokenReader.js.map +1 -1
  68. package/dist/esm/tokenReaders/CommandTokenReader.js +8 -2
  69. package/dist/esm/tokenReaders/CommandTokenReader.js.map +1 -1
  70. package/dist/esm/transformers/CTECollector.js +9 -10
  71. package/dist/esm/transformers/CTECollector.js.map +1 -1
  72. package/dist/esm/transformers/CTEDisabler.js +12 -11
  73. package/dist/esm/transformers/CTEDisabler.js.map +1 -1
  74. package/dist/esm/transformers/CTEInjector.js +2 -2
  75. package/dist/esm/transformers/Formatter.js +19 -569
  76. package/dist/esm/transformers/Formatter.js.map +1 -1
  77. package/dist/esm/transformers/LinePrinter.js +81 -0
  78. package/dist/esm/transformers/LinePrinter.js.map +1 -0
  79. package/dist/esm/transformers/QueryBuilder.js +62 -24
  80. package/dist/esm/transformers/QueryBuilder.js.map +1 -1
  81. package/dist/esm/transformers/SelectValueCollector.js +4 -4
  82. package/dist/esm/transformers/SelectableColumnCollector.js +26 -9
  83. package/dist/esm/transformers/SelectableColumnCollector.js.map +1 -1
  84. package/dist/esm/transformers/SqlFormatter.js +31 -0
  85. package/dist/esm/transformers/SqlFormatter.js.map +1 -0
  86. package/dist/esm/transformers/SqlOutputToken.js +9 -0
  87. package/dist/esm/transformers/SqlOutputToken.js.map +1 -0
  88. package/dist/esm/transformers/SqlPrinter.js +144 -0
  89. package/dist/esm/transformers/SqlPrinter.js.map +1 -0
  90. package/dist/esm/transformers/TableSourceCollector.js +32 -16
  91. package/dist/esm/transformers/TableSourceCollector.js.map +1 -1
  92. package/dist/esm/transformers/UpstreamSelectQueryFinder.js +1 -1
  93. package/dist/esm/types/index.d.ts +1 -0
  94. package/dist/esm/types/models/Clause.d.ts +119 -14
  95. package/dist/esm/types/models/InsertQuery.d.ts +4 -9
  96. package/dist/esm/types/models/SimpleSelectQuery.d.ts +20 -5
  97. package/dist/esm/types/models/SqlPrintToken.d.ts +102 -0
  98. package/dist/esm/types/models/UpdateQuery.d.ts +31 -0
  99. package/dist/esm/types/models/ValueComponent.d.ts +45 -8
  100. package/dist/esm/types/parsers/FetchClauseParser.d.ts +24 -0
  101. package/dist/esm/types/parsers/FullNameParser.d.ts +27 -0
  102. package/dist/esm/types/parsers/IdentifierDecorator.d.ts +9 -0
  103. package/dist/esm/types/parsers/InsertQueryParser.d.ts +0 -1
  104. package/dist/esm/types/parsers/JoinClauseParser.d.ts +0 -2
  105. package/dist/esm/types/parsers/JoinOnClauseParser.d.ts +8 -0
  106. package/dist/esm/types/parsers/JoinUsingClauseParser.d.ts +8 -0
  107. package/dist/esm/types/parsers/OffsetClauseParser.d.ts +9 -0
  108. package/dist/esm/types/parsers/ParameterDecorator.d.ts +20 -0
  109. package/dist/esm/types/parsers/ReturningClauseParser.d.ts +12 -0
  110. package/dist/esm/types/parsers/SelectClauseParser.d.ts +19 -2
  111. package/dist/esm/types/parsers/SetClauseParser.d.ts +11 -0
  112. package/dist/esm/types/parsers/SourceExpressionParser.d.ts +8 -0
  113. package/dist/esm/types/parsers/SourceParser.d.ts +14 -0
  114. package/dist/esm/types/parsers/SqlPrintTokenParser.d.ts +144 -0
  115. package/dist/esm/types/parsers/UpdateClauseParser.d.ts +15 -0
  116. package/dist/esm/types/parsers/UpdateQueryParser.d.ts +16 -0
  117. package/dist/esm/types/parsers/WindowClauseParser.d.ts +3 -3
  118. package/dist/esm/types/transformers/Formatter.d.ts +8 -99
  119. package/dist/esm/types/transformers/LinePrinter.d.ts +41 -0
  120. package/dist/esm/types/transformers/QueryBuilder.d.ts +9 -0
  121. package/dist/esm/types/transformers/SelectableColumnCollector.d.ts +2 -0
  122. package/dist/esm/types/transformers/SqlFormatter.d.ts +40 -0
  123. package/dist/esm/types/transformers/SqlOutputToken.d.ts +6 -0
  124. package/dist/esm/types/transformers/SqlPrinter.d.ts +54 -0
  125. package/dist/esm/types/transformers/TableSourceCollector.d.ts +2 -0
  126. package/dist/esm/utils/stringUtils.js +17 -0
  127. package/dist/esm/utils/stringUtils.js.map +1 -1
  128. package/dist/index.d.ts +1 -0
  129. package/dist/index.js +1 -0
  130. package/dist/index.js.map +1 -1
  131. package/dist/models/Clause.d.ts +119 -14
  132. package/dist/models/Clause.js +194 -20
  133. package/dist/models/Clause.js.map +1 -1
  134. package/dist/models/CreateTableQuery.js +12 -22
  135. package/dist/models/CreateTableQuery.js.map +1 -1
  136. package/dist/models/InsertQuery.d.ts +4 -9
  137. package/dist/models/InsertQuery.js +2 -9
  138. package/dist/models/InsertQuery.js.map +1 -1
  139. package/dist/models/KeywordTrie.js +2 -0
  140. package/dist/models/KeywordTrie.js.map +1 -1
  141. package/dist/models/SimpleSelectQuery.d.ts +20 -5
  142. package/dist/models/SimpleSelectQuery.js +17 -15
  143. package/dist/models/SimpleSelectQuery.js.map +1 -1
  144. package/dist/models/SqlPrintToken.d.ts +102 -0
  145. package/dist/models/SqlPrintToken.js +98 -0
  146. package/dist/models/SqlPrintToken.js.map +1 -0
  147. package/dist/models/UpdateQuery.d.ts +31 -0
  148. package/dist/models/UpdateQuery.js +29 -0
  149. package/dist/models/UpdateQuery.js.map +1 -0
  150. package/dist/models/ValueComponent.d.ts +45 -8
  151. package/dist/models/ValueComponent.js +107 -20
  152. package/dist/models/ValueComponent.js.map +1 -1
  153. package/dist/parsers/FetchClauseParser.d.ts +24 -0
  154. package/dist/parsers/FetchClauseParser.js +89 -0
  155. package/dist/parsers/FetchClauseParser.js.map +1 -0
  156. package/dist/parsers/FullNameParser.d.ts +27 -0
  157. package/dist/parsers/FullNameParser.js +98 -0
  158. package/dist/parsers/FullNameParser.js.map +1 -0
  159. package/dist/parsers/FunctionExpressionParser.js +32 -31
  160. package/dist/parsers/FunctionExpressionParser.js.map +1 -1
  161. package/dist/parsers/IdentifierDecorator.d.ts +9 -0
  162. package/dist/parsers/IdentifierDecorator.js +17 -0
  163. package/dist/parsers/IdentifierDecorator.js.map +1 -0
  164. package/dist/parsers/IdentifierParser.js +5 -30
  165. package/dist/parsers/IdentifierParser.js.map +1 -1
  166. package/dist/parsers/InsertQueryParser.d.ts +0 -1
  167. package/dist/parsers/InsertQueryParser.js +7 -28
  168. package/dist/parsers/InsertQueryParser.js.map +1 -1
  169. package/dist/parsers/JoinClauseParser.d.ts +0 -2
  170. package/dist/parsers/JoinClauseParser.js +12 -34
  171. package/dist/parsers/JoinClauseParser.js.map +1 -1
  172. package/dist/parsers/JoinOnClauseParser.d.ts +8 -0
  173. package/dist/parsers/JoinOnClauseParser.js +21 -0
  174. package/dist/parsers/JoinOnClauseParser.js.map +1 -0
  175. package/dist/parsers/JoinUsingClauseParser.d.ts +8 -0
  176. package/dist/parsers/JoinUsingClauseParser.js +23 -0
  177. package/dist/parsers/JoinUsingClauseParser.js.map +1 -0
  178. package/dist/parsers/LimitClauseParser.js +1 -13
  179. package/dist/parsers/LimitClauseParser.js.map +1 -1
  180. package/dist/parsers/OffsetClauseParser.d.ts +9 -0
  181. package/dist/parsers/OffsetClauseParser.js +42 -0
  182. package/dist/parsers/OffsetClauseParser.js.map +1 -0
  183. package/dist/parsers/ParameterDecorator.d.ts +20 -0
  184. package/dist/parsers/ParameterDecorator.js +40 -0
  185. package/dist/parsers/ParameterDecorator.js.map +1 -0
  186. package/dist/parsers/ReturningClauseParser.d.ts +12 -0
  187. package/dist/parsers/ReturningClauseParser.js +35 -0
  188. package/dist/parsers/ReturningClauseParser.js.map +1 -0
  189. package/dist/parsers/SelectClauseParser.d.ts +19 -2
  190. package/dist/parsers/SelectClauseParser.js +28 -4
  191. package/dist/parsers/SelectClauseParser.js.map +1 -1
  192. package/dist/parsers/SelectQueryParser.js +40 -13
  193. package/dist/parsers/SelectQueryParser.js.map +1 -1
  194. package/dist/parsers/SetClauseParser.d.ts +11 -0
  195. package/dist/parsers/SetClauseParser.js +43 -0
  196. package/dist/parsers/SetClauseParser.js.map +1 -0
  197. package/dist/parsers/SourceExpressionParser.d.ts +8 -0
  198. package/dist/parsers/SourceExpressionParser.js +19 -0
  199. package/dist/parsers/SourceExpressionParser.js.map +1 -1
  200. package/dist/parsers/SourceParser.d.ts +14 -0
  201. package/dist/parsers/SourceParser.js +31 -19
  202. package/dist/parsers/SourceParser.js.map +1 -1
  203. package/dist/parsers/SqlPrintTokenParser.d.ts +144 -0
  204. package/dist/parsers/SqlPrintTokenParser.js +1062 -0
  205. package/dist/parsers/SqlPrintTokenParser.js.map +1 -0
  206. package/dist/parsers/UpdateClauseParser.d.ts +15 -0
  207. package/dist/parsers/UpdateClauseParser.js +21 -0
  208. package/dist/parsers/UpdateClauseParser.js.map +1 -0
  209. package/dist/parsers/UpdateQueryParser.d.ts +16 -0
  210. package/dist/parsers/UpdateQueryParser.js +88 -0
  211. package/dist/parsers/UpdateQueryParser.js.map +1 -0
  212. package/dist/parsers/ValueParser.js +13 -11
  213. package/dist/parsers/ValueParser.js.map +1 -1
  214. package/dist/parsers/WindowClauseParser.d.ts +3 -3
  215. package/dist/parsers/WindowClauseParser.js +26 -14
  216. package/dist/parsers/WindowClauseParser.js.map +1 -1
  217. package/dist/tokenReaders/BaseTokenReader.js +3 -3
  218. package/dist/tokenReaders/BaseTokenReader.js.map +1 -1
  219. package/dist/tokenReaders/CommandTokenReader.js +8 -2
  220. package/dist/tokenReaders/CommandTokenReader.js.map +1 -1
  221. package/dist/transformers/CTECollector.js +9 -10
  222. package/dist/transformers/CTECollector.js.map +1 -1
  223. package/dist/transformers/CTEDisabler.js +11 -10
  224. package/dist/transformers/CTEDisabler.js.map +1 -1
  225. package/dist/transformers/CTEInjector.js +2 -2
  226. package/dist/transformers/Formatter.d.ts +8 -99
  227. package/dist/transformers/Formatter.js +20 -570
  228. package/dist/transformers/Formatter.js.map +1 -1
  229. package/dist/transformers/LinePrinter.d.ts +41 -0
  230. package/dist/transformers/LinePrinter.js +86 -0
  231. package/dist/transformers/LinePrinter.js.map +1 -0
  232. package/dist/transformers/QueryBuilder.d.ts +9 -0
  233. package/dist/transformers/QueryBuilder.js +61 -23
  234. package/dist/transformers/QueryBuilder.js.map +1 -1
  235. package/dist/transformers/SelectValueCollector.js +4 -4
  236. package/dist/transformers/SelectableColumnCollector.d.ts +2 -0
  237. package/dist/transformers/SelectableColumnCollector.js +25 -8
  238. package/dist/transformers/SelectableColumnCollector.js.map +1 -1
  239. package/dist/transformers/SqlFormatter.d.ts +40 -0
  240. package/dist/transformers/SqlFormatter.js +35 -0
  241. package/dist/transformers/SqlFormatter.js.map +1 -0
  242. package/dist/transformers/SqlOutputToken.d.ts +6 -0
  243. package/dist/transformers/SqlOutputToken.js +13 -0
  244. package/dist/transformers/SqlOutputToken.js.map +1 -0
  245. package/dist/transformers/SqlPrinter.d.ts +54 -0
  246. package/dist/transformers/SqlPrinter.js +148 -0
  247. package/dist/transformers/SqlPrinter.js.map +1 -0
  248. package/dist/transformers/TableSourceCollector.d.ts +2 -0
  249. package/dist/transformers/TableSourceCollector.js +30 -14
  250. package/dist/transformers/TableSourceCollector.js.map +1 -1
  251. package/dist/transformers/UpstreamSelectQueryFinder.js +1 -1
  252. package/dist/utils/stringUtils.js +17 -0
  253. package/dist/utils/stringUtils.js.map +1 -1
  254. package/package.json +2 -1
  255. package/dist/esm/types/utils/extractNamespacesAndName.d.ts +0 -5
  256. package/dist/esm/types/utils/parseEscapedOrDotSeparatedIdentifiers.d.ts +0 -9
  257. package/dist/esm/utils/extractNamespacesAndName.js +0 -16
  258. package/dist/esm/utils/extractNamespacesAndName.js.map +0 -1
  259. package/dist/esm/utils/parseEscapedOrDotSeparatedIdentifiers.js +0 -39
  260. package/dist/esm/utils/parseEscapedOrDotSeparatedIdentifiers.js.map +0 -1
  261. package/dist/utils/extractNamespacesAndName.d.ts +0 -5
  262. package/dist/utils/extractNamespacesAndName.js +0 -18
  263. package/dist/utils/extractNamespacesAndName.js.map +0 -1
  264. package/dist/utils/parseEscapedOrDotSeparatedIdentifiers.d.ts +0 -9
  265. package/dist/utils/parseEscapedOrDotSeparatedIdentifiers.js +0 -42
  266. package/dist/utils/parseEscapedOrDotSeparatedIdentifiers.js.map +0 -1
@@ -1,3 +1,4 @@
1
+ import { UpdateQuery } from '../models/UpdateQuery';
1
2
  import { BinarySelectQuery, SelectQuery, SimpleSelectQuery } from "../models/SelectQuery";
2
3
  import { CreateTableQuery } from "../models/CreateTableQuery";
3
4
  import { InsertQuery } from "../models/InsertQuery";
@@ -51,4 +52,12 @@ export declare class QueryBuilder {
51
52
  * @returns An InsertQuery instance
52
53
  */
53
54
  static buildInsertQuery(selectQuery: SimpleSelectQuery, tableName: string): InsertQuery;
55
+ /**
56
+ * Builds an UPDATE query from a SELECT query, table name, and primary key(s).
57
+ * @param selectQuery The SELECT query providing new values (must select all columns to update and PKs)
58
+ * @param updateTableExprRaw The table name to update
59
+ * @param primaryKeys The primary key column name(s)
60
+ * @returns UpdateQuery instance
61
+ */
62
+ static buildUpdateQuery(selectQuery: SimpleSelectQuery, selectSourceName: string, updateTableExprRaw: string, primaryKeys: string | string[]): UpdateQuery;
54
63
  }
@@ -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":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD;;GAEG;AACH,MAAM,OAAO,WAAW;IACpB;;;;;OAKG;IACI,MAAM,CAAC,oBAAoB,CAAC,KAAa,EAAE,WAAmB;QACjE,8CAA8C;QAC9C,sFAAsF;QACtF,mDAAmD;QACnD,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,WAAW,GAAG,CAAC,CAAC,CAAC;QAC3C,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,WAAW,GAAG,CAAC,CAAC,CAAC;QACpD,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QAC1C,MAAM,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,WAAW,GAAG,KAAK,CAAC,GAAG,GAAG,CAAC;QACpD,OAAO,GAAG,SAAS,KAAK,KAAK,EAAE,CAAC;IACpC,CAAC;IAED;;OAEG;IACK,MAAM,CAAC,cAAc,CAAC,KAAa,EAAE,QAAgB;QACzD,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;QAE5B,OAAO,QAAQ,GAAG,MAAM,EAAE,CAAC;YACvB,MAAM,QAAQ,GAAG,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;YAC5C,mCAAmC;YACnC,IAAI,QAAQ,KAAK,EAAE,IAAI,QAAQ,KAAK,CAAC,IAAI,QAAQ,KAAK,EAAE,IAAI,QAAQ,KAAK,EAAE,EAAE,CAAC;gBAC1E,MAAM;YACV,CAAC;YACD,QAAQ,EAAE,CAAC;QACf,CAAC;QAED,OAAO,QAAQ,CAAC;IACpB,CAAC;IAED;;OAEG;IACK,MAAM,CAAC,eAAe,CAAC,KAAa,EAAE,QAAgB;QAC1D,IAAI,QAAQ,GAAG,CAAC,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;YAC/B,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QACpD,CAAC;QAED,SAAS;QACT,IAAI,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,KAAK,CAAC,UAAU,CAAC,QAAQ,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC;YAC7E,MAAM,KAAK,GAAG,QAAQ,CAAC;YACvB,QAAQ,IAAI,CAAC,CAAC;YAEd,UAAU;YACV,OAAO,QAAQ,GAAG,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC;gBAClE,QAAQ,EAAE,CAAC;YACf,CAAC;YAED,2DAA2D;YAC3D,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,EAAE,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;YACxD,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;QAC9C,CAAC;QACD,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IACpD,CAAC;IAED;;OAEG;IACK,MAAM,CAAC,gBAAgB,CAAC,KAAa,EAAE,QAAgB;QAC3D,IAAI,QAAQ,GAAG,CAAC,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;YAC/B,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;QACrD,CAAC;QAED,yBAAyB;QACzB,IAAI,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,KAAK,CAAC,UAAU,CAAC,QAAQ,GAAG,CAAC,CAAC,KAAK,EAAE,IAAI,KAAK,CAAC,UAAU,CAAC,QAAQ,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC;YACtH,MAAM,KAAK,GAAG,QAAQ,CAAC;YACvB,QAAQ,IAAI,CAAC,CAAC;YAEd,OAAO,QAAQ,GAAG,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;gBACjC,iBAAiB;gBACjB,IAAI,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,KAAK,CAAC,UAAU,CAAC,QAAQ,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC;oBAC7E,QAAQ,IAAI,CAAC,CAAC;oBAEd,8BAA8B;oBAC9B,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,EAAE,QAAQ,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;oBAClF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;wBACpC,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;oBAC/B,CAAC;oBAED,wDAAwD;oBACxD,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC;wBACzC,KAAK,CAAC,KAAK,EAAE,CAAC;oBAClB,CAAC;oBACD,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC;wBACxD,KAAK,CAAC,GAAG,EAAE,CAAC;oBAChB,CAAC;oBAED,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;gBACtD,CAAC;gBACD,QAAQ,EAAE,CAAC;YACf,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,0CAA0C,QAAQ,EAAE,CAAC,CAAC;QAC1E,CAAC;QACD,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IACrD,CAAC;IAED;;;OAGG;IACI,MAAM,CAAC,wBAAwB,CAAC,KAAa,EAAE,QAAgB;QAClE,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;QAE5B,OAAO,QAAQ,GAAG,MAAM,EAAE,CAAC;YACvB,yBAAyB;YACzB,MAAM,WAAW,GAAG,QAAQ,CAAC;YAE7B,wBAAwB;YACxB,QAAQ,GAAG,WAAW,CAAC,cAAc,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;YACvD,IAAI,QAAQ,KAAK,WAAW,EAAE,CAAC;gBAC3B,SAAS;YACb,CAAC;YAED,4BAA4B;YAC5B,MAAM,QAAQ,GAAG,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;YAE5C,wBAAwB;YACxB,IAAI,QAAQ,KAAK,EAAE,EAAE,CAAC;gBAClB,MAAM,iBAAiB,GAAG,WAAW,CAAC,eAAe,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;gBACvE,IAAI,iBAAiB,CAAC,WAAW,KAAK,QAAQ,EAAE,CAAC;oBAC7C,QAAQ,GAAG,iBAAiB,CAAC,WAAW,CAAC;oBACzC,IAAI,iBAAiB,CAAC,OAAO,EAAE,CAAC;wBAC5B,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;oBACjD,CAAC;oBACD,SAAS;gBACb,CAAC;YACL,CAAC;YACD,yBAAyB;iBACpB,IAAI,QAAQ,KAAK,EAAE,EAAE,CAAC;gBACvB,MAAM,kBAAkB,GAAG,WAAW,CAAC,gBAAgB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;gBACzE,IAAI,kBAAkB,CAAC,WAAW,KAAK,QAAQ,EAAE,CAAC;oBAC9C,QAAQ,GAAG,kBAAkB,CAAC,WAAW,CAAC;oBAC1C,IAAI,kBAAkB,CAAC,QAAQ,EAAE,CAAC;wBAC9B,KAAK,CAAC,IAAI,CAAC,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAC;oBAC/C,CAAC;oBACD,SAAS;gBACb,CAAC;YACL,CAAC;YAED,uCAAuC;YACvC,MAAM;QACV,CAAC;QAED,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;IACtC,CAAC;IAED;;OAEG;IACI,MAAM,CAAC,qBAAqB,CAAC,KAAa,EAAE,QAAgB;QAC/D,MAAM,MAAM,GAAG,IAAI,CAAC,wBAAwB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QAE9D,IAAI,CAAC,MAAM,EAAE,CAAC;YACV,MAAM,IAAI,KAAK,CAAC,mCAAmC,QAAQ,KAAK,WAAW,CAAC,oBAAoB,CAAC,KAAK,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC;QACzH,CAAC;QAED,OAAO,MAAM,CAAC;IAClB,CAAC;IAEM,MAAM,CAAC,wBAAwB,CAAC,KAAa,EAAE,QAAgB;QAClE,MAAM,KAAK,GAAG,QAAQ,CAAC;QAEvB,OAAO,QAAQ,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;YAC7B,IAAI,eAAe,CAAC,WAAW,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC;gBAC/C,MAAM;YACV,CAAC;YACD,QAAQ,EAAE,CAAC;QACf,CAAC;QAED,IAAI,KAAK,KAAK,QAAQ,EAAE,CAAC;YACrB,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,OAAO;YACH,UAAU,EAAE,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,QAAQ,CAAC;YACxC,WAAW,EAAE,QAAQ;SACxB,CAAC;IACN,CAAC;CACJ"}
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"}
@@ -1,6 +1,6 @@
1
1
  import { SelectQuery } from "./SelectQuery";
2
2
  import { SqlComponent } from "./SqlComponent";
3
- import { IdentifierString, RawString, ValueComponent, WindowFrameExpression } from "./ValueComponent";
3
+ import { IdentifierString, RawString, ValueComponent, WindowFrameExpression, QualifiedName } from "./ValueComponent";
4
4
  export declare class SelectItem extends SqlComponent {
5
5
  static kind: symbol;
6
6
  value: ValueComponent;
@@ -39,6 +39,15 @@ export declare class WindowFrameClause extends SqlComponent {
39
39
  expression: WindowFrameExpression;
40
40
  constructor(name: string, expression: WindowFrameExpression);
41
41
  }
42
+ /**
43
+ * Represents a collection of window definitions (WINDOW clause in SQL).
44
+ * @param windows Array of WindowFrameClause
45
+ */
46
+ export declare class WindowsClause extends SqlComponent {
47
+ static kind: symbol;
48
+ windows: WindowFrameClause[];
49
+ constructor(windows: WindowFrameClause[]);
50
+ }
42
51
  export declare enum SortDirection {
43
52
  Ascending = "asc",
44
53
  Descending = "desc"
@@ -73,17 +82,38 @@ export declare class HavingClause extends SqlComponent {
73
82
  export type SourceComponent = TableSource | FunctionSource | SubQuerySource | ParenSource;
74
83
  export declare class TableSource extends SqlComponent {
75
84
  static kind: symbol;
76
- namespaces: IdentifierString[] | null;
77
- table: IdentifierString;
78
- identifier: IdentifierString;
79
- constructor(namespaces: string[] | null, table: string);
85
+ qualifiedName: QualifiedName;
86
+ /**
87
+ * For backward compatibility: returns the namespaces as IdentifierString[] | null (readonly)
88
+ */
89
+ get namespaces(): IdentifierString[] | null;
90
+ /**
91
+ * For backward compatibility: returns the table name as IdentifierString (readonly)
92
+ */
93
+ get table(): IdentifierString;
94
+ /**
95
+ * For backward compatibility: returns the table name as IdentifierString (readonly)
96
+ */
97
+ get identifier(): IdentifierString;
98
+ constructor(namespaces: string[] | IdentifierString[] | null, table: string | IdentifierString);
80
99
  getSourceName(): string;
81
100
  }
82
101
  export declare class FunctionSource extends SqlComponent {
83
102
  static kind: symbol;
84
- name: RawString;
103
+ qualifiedName: QualifiedName;
85
104
  argument: ValueComponent | null;
86
- constructor(functionName: string, argument: ValueComponent | null);
105
+ constructor(name: string | IdentifierString | {
106
+ namespaces: string[] | IdentifierString[] | null;
107
+ name: string | RawString | IdentifierString;
108
+ }, argument: ValueComponent | null);
109
+ /**
110
+ * For backward compatibility: returns the namespaces as IdentifierString[] | null (readonly)
111
+ */
112
+ get namespaces(): IdentifierString[] | null;
113
+ /**
114
+ * For backward compatibility: returns the function name as RawString | IdentifierString (readonly)
115
+ */
116
+ get name(): RawString | IdentifierString;
87
117
  }
88
118
  export declare class ParenSource extends SqlComponent {
89
119
  static kind: symbol;
@@ -120,14 +150,14 @@ export declare class JoinClause extends SqlComponent {
120
150
  condition: JoinConditionComponent | null;
121
151
  lateral: boolean;
122
152
  constructor(joinType: string, source: SourceExpression, condition: JoinConditionComponent | null, lateral: boolean);
123
- getAliasSourceName(): string | null;
153
+ getSourceAliasName(): string | null;
124
154
  }
125
155
  export declare class FromClause extends SqlComponent {
126
156
  static kind: symbol;
127
157
  source: SourceExpression;
128
158
  joins: JoinClause[] | null;
129
159
  constructor(source: SourceExpression, join: JoinClause[] | null);
130
- getAliasSourceName(): string | null;
160
+ getSourceAliasName(): string | null;
131
161
  /**
132
162
  * Returns all SourceExpression objects in this FROM clause, including main source and all JOIN sources.
133
163
  */
@@ -139,7 +169,7 @@ export declare class CommonTable extends SqlComponent {
139
169
  materialized: boolean | null;
140
170
  aliasExpression: SourceAliasExpression;
141
171
  constructor(query: SelectQuery, aliasExpression: SourceAliasExpression | string, materialized: boolean | null);
142
- getAliasSourceName(): string;
172
+ getSourceAliasName(): string;
143
173
  }
144
174
  export declare class WithClause extends SqlComponent {
145
175
  static kind: symbol;
@@ -149,9 +179,8 @@ export declare class WithClause extends SqlComponent {
149
179
  }
150
180
  export declare class LimitClause extends SqlComponent {
151
181
  static kind: symbol;
152
- limit: ValueComponent;
153
- offset: ValueComponent | null;
154
- constructor(limit: ValueComponent, offset: ValueComponent | null);
182
+ value: ValueComponent;
183
+ constructor(limit: ValueComponent);
155
184
  }
156
185
  export declare enum FetchType {
157
186
  Next = "next",
@@ -162,7 +191,17 @@ export declare enum FetchUnit {
162
191
  Percent = "percent",
163
192
  PercentWithTies = "percent with ties"
164
193
  }
165
- export declare class FetchSpecification extends SqlComponent {
194
+ export declare class OffsetClause extends SqlComponent {
195
+ static kind: symbol;
196
+ value: ValueComponent;
197
+ constructor(value: ValueComponent);
198
+ }
199
+ export declare class FetchClause extends SqlComponent {
200
+ static kind: symbol;
201
+ expression: FetchExpression;
202
+ constructor(expression: FetchExpression);
203
+ }
204
+ export declare class FetchExpression extends SqlComponent {
166
205
  static kind: symbol;
167
206
  type: FetchType;
168
207
  count: ValueComponent;
@@ -186,3 +225,69 @@ export declare class SourceAliasExpression extends SqlComponent {
186
225
  columns: IdentifierString[] | null;
187
226
  constructor(alias: string, columnAlias: string[] | null);
188
227
  }
228
+ export declare class ReturningClause extends SqlComponent {
229
+ static kind: symbol;
230
+ columns: IdentifierString[];
231
+ /**
232
+ * Constructs a ReturningClause.
233
+ * @param columns Array of IdentifierString or string representing column names.
234
+ */
235
+ constructor(columns: (IdentifierString | string)[]);
236
+ }
237
+ export declare class SetClause extends SqlComponent {
238
+ static kind: symbol;
239
+ items: SetClauseItem[];
240
+ constructor(items: (SetClauseItem | {
241
+ column: string | IdentifierString;
242
+ value: ValueComponent;
243
+ })[]);
244
+ }
245
+ /**
246
+ * Represents a single SET clause item in an UPDATE statement.
247
+ */
248
+ /**
249
+ * Represents a single SET clause item in an UPDATE statement.
250
+ * Now supports namespaces for fully qualified column names (e.g. schema.table.column).
251
+ */
252
+ /**
253
+ * Represents a single SET clause item in an UPDATE statement.
254
+ * Now supports namespaces for fully qualified column names (e.g. schema.table.column).
255
+ * Refactored to use QualifiedName for unified name/namespace handling.
256
+ */
257
+ export declare class SetClauseItem extends SqlComponent {
258
+ static kind: symbol;
259
+ qualifiedName: QualifiedName;
260
+ value: ValueComponent;
261
+ constructor(column: string | IdentifierString | {
262
+ namespaces: string[] | IdentifierString[] | null;
263
+ column: string | IdentifierString;
264
+ }, value: ValueComponent);
265
+ /**
266
+ * For backward compatibility: returns the namespaces as IdentifierString[] | null (readonly)
267
+ */
268
+ get namespaces(): IdentifierString[] | null;
269
+ /**
270
+ * For backward compatibility: returns the column name as IdentifierString (readonly)
271
+ */
272
+ get column(): IdentifierString;
273
+ /**
274
+ * Returns the fully qualified column name as a string.
275
+ */
276
+ getFullName(): string;
277
+ }
278
+ export declare class UpdateClause extends SqlComponent {
279
+ static kind: symbol;
280
+ source: SourceExpression;
281
+ constructor(source: SourceExpression);
282
+ getSourceAliasName(): string | null;
283
+ }
284
+ /**
285
+ * Represents the target table (with optional alias/schema) and columns for an INSERT statement.
286
+ * @param source The target table as a SourceExpression (can include schema, alias, etc.)
287
+ * @param columns Array of column names (as strings)
288
+ */
289
+ export declare class InsertClause extends SqlComponent {
290
+ source: SourceExpression;
291
+ columns: IdentifierString[];
292
+ constructor(source: SourceExpression, columns: string[]);
293
+ }