rawsql-ts 0.11.43-beta → 0.12.0

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 (294) hide show
  1. package/README.md +12 -12
  2. package/dist/esm/index.js +18 -0
  3. package/dist/esm/index.js.map +1 -1
  4. package/dist/esm/index.min.js +15 -19
  5. package/dist/esm/index.min.js.map +4 -4
  6. package/dist/esm/src/index.d.ts +18 -0
  7. package/dist/esm/src/index.js +18 -0
  8. package/dist/esm/src/index.js.map +1 -1
  9. package/dist/esm/src/models/BinarySelectQuery.d.ts +25 -1
  10. package/dist/esm/src/models/BinarySelectQuery.js +28 -0
  11. package/dist/esm/src/models/BinarySelectQuery.js.map +1 -1
  12. package/dist/esm/src/models/Clause.d.ts +14 -2
  13. package/dist/esm/src/models/Clause.js +26 -1
  14. package/dist/esm/src/models/Clause.js.map +1 -1
  15. package/dist/esm/src/models/CreateTableQuery.d.ts +99 -5
  16. package/dist/esm/src/models/CreateTableQuery.js +85 -10
  17. package/dist/esm/src/models/CreateTableQuery.js.map +1 -1
  18. package/dist/esm/src/models/DDLStatements.d.ts +195 -0
  19. package/dist/esm/src/models/DDLStatements.js +201 -0
  20. package/dist/esm/src/models/DDLStatements.js.map +1 -0
  21. package/dist/esm/src/models/DeleteQuery.d.ts +17 -0
  22. package/dist/esm/src/models/DeleteQuery.js +16 -0
  23. package/dist/esm/src/models/DeleteQuery.js.map +1 -0
  24. package/dist/esm/src/models/InsertQuery.d.ts +7 -1
  25. package/dist/esm/src/models/InsertQuery.js +6 -2
  26. package/dist/esm/src/models/InsertQuery.js.map +1 -1
  27. package/dist/esm/src/models/MergeQuery.d.ts +63 -0
  28. package/dist/esm/src/models/MergeQuery.js +94 -0
  29. package/dist/esm/src/models/MergeQuery.js.map +1 -0
  30. package/dist/esm/src/models/SelectQuery.d.ts +37 -1
  31. package/dist/esm/src/models/SelectQuery.js +4 -1
  32. package/dist/esm/src/models/SelectQuery.js.map +1 -1
  33. package/dist/esm/src/models/SimpleSelectQuery.d.ts +29 -1
  34. package/dist/esm/src/models/SimpleSelectQuery.js +32 -0
  35. package/dist/esm/src/models/SimpleSelectQuery.js.map +1 -1
  36. package/dist/esm/src/models/SqlComponent.d.ts +2 -1
  37. package/dist/esm/src/models/SqlComponent.js +1 -1
  38. package/dist/esm/src/models/SqlComponent.js.map +1 -1
  39. package/dist/esm/src/models/SqlPrintToken.d.ts +36 -0
  40. package/dist/esm/src/models/SqlPrintToken.js +35 -0
  41. package/dist/esm/src/models/SqlPrintToken.js.map +1 -1
  42. package/dist/esm/src/models/ValuesQuery.d.ts +25 -1
  43. package/dist/esm/src/models/ValuesQuery.js +28 -0
  44. package/dist/esm/src/models/ValuesQuery.js.map +1 -1
  45. package/dist/esm/src/parsers/AlterTableParser.d.ts +25 -0
  46. package/dist/esm/src/parsers/AlterTableParser.js +428 -0
  47. package/dist/esm/src/parsers/AlterTableParser.js.map +1 -0
  48. package/dist/esm/src/parsers/AnalyzeStatementParser.d.ts +13 -0
  49. package/dist/esm/src/parsers/AnalyzeStatementParser.js +90 -0
  50. package/dist/esm/src/parsers/AnalyzeStatementParser.js.map +1 -0
  51. package/dist/esm/src/parsers/CreateIndexParser.d.ts +16 -0
  52. package/dist/esm/src/parsers/CreateIndexParser.js +237 -0
  53. package/dist/esm/src/parsers/CreateIndexParser.js.map +1 -0
  54. package/dist/esm/src/parsers/CreateTableParser.d.ts +41 -0
  55. package/dist/esm/src/parsers/CreateTableParser.js +734 -0
  56. package/dist/esm/src/parsers/CreateTableParser.js.map +1 -0
  57. package/dist/esm/src/parsers/DeleteClauseParser.d.ts +11 -0
  58. package/dist/esm/src/parsers/DeleteClauseParser.js +33 -0
  59. package/dist/esm/src/parsers/DeleteClauseParser.js.map +1 -0
  60. package/dist/esm/src/parsers/DeleteQueryParser.d.ts +16 -0
  61. package/dist/esm/src/parsers/DeleteQueryParser.js +73 -0
  62. package/dist/esm/src/parsers/DeleteQueryParser.js.map +1 -0
  63. package/dist/esm/src/parsers/DropConstraintParser.d.ts +12 -0
  64. package/dist/esm/src/parsers/DropConstraintParser.js +47 -0
  65. package/dist/esm/src/parsers/DropConstraintParser.js.map +1 -0
  66. package/dist/esm/src/parsers/DropIndexParser.d.ts +12 -0
  67. package/dist/esm/src/parsers/DropIndexParser.js +69 -0
  68. package/dist/esm/src/parsers/DropIndexParser.js.map +1 -0
  69. package/dist/esm/src/parsers/DropTableParser.d.ts +12 -0
  70. package/dist/esm/src/parsers/DropTableParser.js +59 -0
  71. package/dist/esm/src/parsers/DropTableParser.js.map +1 -0
  72. package/dist/esm/src/parsers/ExplainStatementParser.d.ts +23 -0
  73. package/dist/esm/src/parsers/ExplainStatementParser.js +185 -0
  74. package/dist/esm/src/parsers/ExplainStatementParser.js.map +1 -0
  75. package/dist/esm/src/parsers/FunctionExpressionParser.d.ts +4 -0
  76. package/dist/esm/src/parsers/FunctionExpressionParser.js +25 -8
  77. package/dist/esm/src/parsers/FunctionExpressionParser.js.map +1 -1
  78. package/dist/esm/src/parsers/InsertQueryParser.js +103 -31
  79. package/dist/esm/src/parsers/InsertQueryParser.js.map +1 -1
  80. package/dist/esm/src/parsers/MergeQueryParser.d.ts +26 -0
  81. package/dist/esm/src/parsers/MergeQueryParser.js +479 -0
  82. package/dist/esm/src/parsers/MergeQueryParser.js.map +1 -0
  83. package/dist/esm/src/parsers/ParenExpressionParser.js +25 -0
  84. package/dist/esm/src/parsers/ParenExpressionParser.js.map +1 -1
  85. package/dist/esm/src/parsers/ReturningClauseParser.js +50 -7
  86. package/dist/esm/src/parsers/ReturningClauseParser.js.map +1 -1
  87. package/dist/esm/src/parsers/SelectClauseParser.js +3 -3
  88. package/dist/esm/src/parsers/SelectClauseParser.js.map +1 -1
  89. package/dist/esm/src/parsers/SelectQueryParser.d.ts +4 -0
  90. package/dist/esm/src/parsers/SelectQueryParser.js +4 -0
  91. package/dist/esm/src/parsers/SelectQueryParser.js.map +1 -1
  92. package/dist/esm/src/parsers/SetClauseParser.js +97 -15
  93. package/dist/esm/src/parsers/SetClauseParser.js.map +1 -1
  94. package/dist/esm/src/parsers/SqlParser.d.ts +40 -0
  95. package/dist/esm/src/parsers/SqlParser.js +400 -0
  96. package/dist/esm/src/parsers/SqlParser.js.map +1 -0
  97. package/dist/esm/src/parsers/SqlPrintTokenParser.d.ts +65 -3
  98. package/dist/esm/src/parsers/SqlPrintTokenParser.js +1145 -38
  99. package/dist/esm/src/parsers/SqlPrintTokenParser.js.map +1 -1
  100. package/dist/esm/src/parsers/SqlTokenizer.d.ts +24 -2
  101. package/dist/esm/src/parsers/SqlTokenizer.js +135 -74
  102. package/dist/esm/src/parsers/SqlTokenizer.js.map +1 -1
  103. package/dist/esm/src/parsers/UpdateQueryParser.js +11 -1
  104. package/dist/esm/src/parsers/UpdateQueryParser.js.map +1 -1
  105. package/dist/esm/src/parsers/UsingClauseParser.d.ts +11 -0
  106. package/dist/esm/src/parsers/UsingClauseParser.js +29 -0
  107. package/dist/esm/src/parsers/UsingClauseParser.js.map +1 -0
  108. package/dist/esm/src/parsers/ValueParser.js +5 -1
  109. package/dist/esm/src/parsers/ValueParser.js.map +1 -1
  110. package/dist/esm/src/parsers/ValuesQueryParser.d.ts +0 -2
  111. package/dist/esm/src/parsers/ValuesQueryParser.js +5 -45
  112. package/dist/esm/src/parsers/ValuesQueryParser.js.map +1 -1
  113. package/dist/esm/src/parsers/utils/LexemeCommentUtils.d.ts +6 -0
  114. package/dist/esm/src/parsers/utils/LexemeCommentUtils.js +26 -0
  115. package/dist/esm/src/parsers/utils/LexemeCommentUtils.js.map +1 -0
  116. package/dist/esm/src/tokenReaders/CommandTokenReader.js +50 -2
  117. package/dist/esm/src/tokenReaders/CommandTokenReader.js.map +1 -1
  118. package/dist/esm/src/tokenReaders/LiteralTokenReader.js +8 -5
  119. package/dist/esm/src/tokenReaders/LiteralTokenReader.js.map +1 -1
  120. package/dist/esm/src/tokenReaders/OperatorTokenReader.js +10 -1
  121. package/dist/esm/src/tokenReaders/OperatorTokenReader.js.map +1 -1
  122. package/dist/esm/src/tokenReaders/TypeTokenReader.js +11 -1
  123. package/dist/esm/src/tokenReaders/TypeTokenReader.js.map +1 -1
  124. package/dist/esm/src/transformers/InsertQuerySelectValuesConverter.d.ts +18 -0
  125. package/dist/esm/src/transformers/InsertQuerySelectValuesConverter.js +118 -0
  126. package/dist/esm/src/transformers/InsertQuerySelectValuesConverter.js.map +1 -0
  127. package/dist/esm/src/transformers/LinePrinter.d.ts +1 -0
  128. package/dist/esm/src/transformers/LinePrinter.js +12 -0
  129. package/dist/esm/src/transformers/LinePrinter.js.map +1 -1
  130. package/dist/esm/src/transformers/OnelineFormattingHelper.d.ts +29 -0
  131. package/dist/esm/src/transformers/OnelineFormattingHelper.js +95 -0
  132. package/dist/esm/src/transformers/OnelineFormattingHelper.js.map +1 -0
  133. package/dist/esm/src/transformers/QueryBuilder.d.ts +47 -13
  134. package/dist/esm/src/transformers/QueryBuilder.js +424 -62
  135. package/dist/esm/src/transformers/QueryBuilder.js.map +1 -1
  136. package/dist/esm/src/transformers/SqlFormatter.d.ts +13 -1
  137. package/dist/esm/src/transformers/SqlFormatter.js +13 -4
  138. package/dist/esm/src/transformers/SqlFormatter.js.map +1 -1
  139. package/dist/esm/src/transformers/SqlPrinter.d.ts +47 -8
  140. package/dist/esm/src/transformers/SqlPrinter.js +625 -72
  141. package/dist/esm/src/transformers/SqlPrinter.js.map +1 -1
  142. package/dist/esm/src/types/Formatting.d.ts +8 -0
  143. package/dist/esm/src/types/Formatting.js +2 -0
  144. package/dist/esm/src/types/Formatting.js.map +1 -0
  145. package/dist/esm/src/utils/ParserStringUtils.d.ts +6 -0
  146. package/dist/esm/src/utils/ParserStringUtils.js +28 -0
  147. package/dist/esm/src/utils/ParserStringUtils.js.map +1 -0
  148. package/dist/esm/tsconfig.browser.tsbuildinfo +1 -1
  149. package/dist/index.min.js +14 -18
  150. package/dist/index.min.js.map +4 -4
  151. package/dist/src/index.d.ts +18 -0
  152. package/dist/src/index.js +18 -0
  153. package/dist/src/index.js.map +1 -1
  154. package/dist/src/models/BinarySelectQuery.d.ts +25 -1
  155. package/dist/src/models/BinarySelectQuery.js +28 -0
  156. package/dist/src/models/BinarySelectQuery.js.map +1 -1
  157. package/dist/src/models/Clause.d.ts +14 -2
  158. package/dist/src/models/Clause.js +29 -2
  159. package/dist/src/models/Clause.js.map +1 -1
  160. package/dist/src/models/CreateTableQuery.d.ts +99 -5
  161. package/dist/src/models/CreateTableQuery.js +90 -11
  162. package/dist/src/models/CreateTableQuery.js.map +1 -1
  163. package/dist/src/models/DDLStatements.d.ts +195 -0
  164. package/dist/src/models/DDLStatements.js +216 -0
  165. package/dist/src/models/DDLStatements.js.map +1 -0
  166. package/dist/src/models/DeleteQuery.d.ts +17 -0
  167. package/dist/src/models/DeleteQuery.js +20 -0
  168. package/dist/src/models/DeleteQuery.js.map +1 -0
  169. package/dist/src/models/InsertQuery.d.ts +7 -1
  170. package/dist/src/models/InsertQuery.js +6 -2
  171. package/dist/src/models/InsertQuery.js.map +1 -1
  172. package/dist/src/models/MergeQuery.d.ts +63 -0
  173. package/dist/src/models/MergeQuery.js +104 -0
  174. package/dist/src/models/MergeQuery.js.map +1 -0
  175. package/dist/src/models/SelectQuery.d.ts +37 -1
  176. package/dist/src/models/SelectQuery.js +7 -1
  177. package/dist/src/models/SelectQuery.js.map +1 -1
  178. package/dist/src/models/SimpleSelectQuery.d.ts +29 -1
  179. package/dist/src/models/SimpleSelectQuery.js +32 -0
  180. package/dist/src/models/SimpleSelectQuery.js.map +1 -1
  181. package/dist/src/models/SqlComponent.d.ts +2 -1
  182. package/dist/src/models/SqlComponent.js +1 -1
  183. package/dist/src/models/SqlComponent.js.map +1 -1
  184. package/dist/src/models/SqlPrintToken.d.ts +36 -0
  185. package/dist/src/models/SqlPrintToken.js +35 -0
  186. package/dist/src/models/SqlPrintToken.js.map +1 -1
  187. package/dist/src/models/ValuesQuery.d.ts +25 -1
  188. package/dist/src/models/ValuesQuery.js +28 -0
  189. package/dist/src/models/ValuesQuery.js.map +1 -1
  190. package/dist/src/parsers/AlterTableParser.d.ts +25 -0
  191. package/dist/src/parsers/AlterTableParser.js +432 -0
  192. package/dist/src/parsers/AlterTableParser.js.map +1 -0
  193. package/dist/src/parsers/AnalyzeStatementParser.d.ts +13 -0
  194. package/dist/src/parsers/AnalyzeStatementParser.js +94 -0
  195. package/dist/src/parsers/AnalyzeStatementParser.js.map +1 -0
  196. package/dist/src/parsers/CreateIndexParser.d.ts +16 -0
  197. package/dist/src/parsers/CreateIndexParser.js +241 -0
  198. package/dist/src/parsers/CreateIndexParser.js.map +1 -0
  199. package/dist/src/parsers/CreateTableParser.d.ts +41 -0
  200. package/dist/src/parsers/CreateTableParser.js +738 -0
  201. package/dist/src/parsers/CreateTableParser.js.map +1 -0
  202. package/dist/src/parsers/DeleteClauseParser.d.ts +11 -0
  203. package/dist/src/parsers/DeleteClauseParser.js +37 -0
  204. package/dist/src/parsers/DeleteClauseParser.js.map +1 -0
  205. package/dist/src/parsers/DeleteQueryParser.d.ts +16 -0
  206. package/dist/src/parsers/DeleteQueryParser.js +77 -0
  207. package/dist/src/parsers/DeleteQueryParser.js.map +1 -0
  208. package/dist/src/parsers/DropConstraintParser.d.ts +12 -0
  209. package/dist/src/parsers/DropConstraintParser.js +51 -0
  210. package/dist/src/parsers/DropConstraintParser.js.map +1 -0
  211. package/dist/src/parsers/DropIndexParser.d.ts +12 -0
  212. package/dist/src/parsers/DropIndexParser.js +73 -0
  213. package/dist/src/parsers/DropIndexParser.js.map +1 -0
  214. package/dist/src/parsers/DropTableParser.d.ts +12 -0
  215. package/dist/src/parsers/DropTableParser.js +63 -0
  216. package/dist/src/parsers/DropTableParser.js.map +1 -0
  217. package/dist/src/parsers/ExplainStatementParser.d.ts +23 -0
  218. package/dist/src/parsers/ExplainStatementParser.js +189 -0
  219. package/dist/src/parsers/ExplainStatementParser.js.map +1 -0
  220. package/dist/src/parsers/FunctionExpressionParser.d.ts +4 -0
  221. package/dist/src/parsers/FunctionExpressionParser.js +25 -8
  222. package/dist/src/parsers/FunctionExpressionParser.js.map +1 -1
  223. package/dist/src/parsers/InsertQueryParser.js +103 -31
  224. package/dist/src/parsers/InsertQueryParser.js.map +1 -1
  225. package/dist/src/parsers/MergeQueryParser.d.ts +26 -0
  226. package/dist/src/parsers/MergeQueryParser.js +483 -0
  227. package/dist/src/parsers/MergeQueryParser.js.map +1 -0
  228. package/dist/src/parsers/ParenExpressionParser.js +25 -0
  229. package/dist/src/parsers/ParenExpressionParser.js.map +1 -1
  230. package/dist/src/parsers/ReturningClauseParser.js +50 -7
  231. package/dist/src/parsers/ReturningClauseParser.js.map +1 -1
  232. package/dist/src/parsers/SelectClauseParser.js +2 -2
  233. package/dist/src/parsers/SelectClauseParser.js.map +1 -1
  234. package/dist/src/parsers/SelectQueryParser.d.ts +4 -0
  235. package/dist/src/parsers/SelectQueryParser.js +4 -0
  236. package/dist/src/parsers/SelectQueryParser.js.map +1 -1
  237. package/dist/src/parsers/SetClauseParser.js +97 -15
  238. package/dist/src/parsers/SetClauseParser.js.map +1 -1
  239. package/dist/src/parsers/SqlParser.d.ts +40 -0
  240. package/dist/src/parsers/SqlParser.js +409 -0
  241. package/dist/src/parsers/SqlParser.js.map +1 -0
  242. package/dist/src/parsers/SqlPrintTokenParser.d.ts +65 -3
  243. package/dist/src/parsers/SqlPrintTokenParser.js +1143 -36
  244. package/dist/src/parsers/SqlPrintTokenParser.js.map +1 -1
  245. package/dist/src/parsers/SqlTokenizer.d.ts +24 -2
  246. package/dist/src/parsers/SqlTokenizer.js +139 -74
  247. package/dist/src/parsers/SqlTokenizer.js.map +1 -1
  248. package/dist/src/parsers/UpdateQueryParser.js +11 -1
  249. package/dist/src/parsers/UpdateQueryParser.js.map +1 -1
  250. package/dist/src/parsers/UsingClauseParser.d.ts +11 -0
  251. package/dist/src/parsers/UsingClauseParser.js +33 -0
  252. package/dist/src/parsers/UsingClauseParser.js.map +1 -0
  253. package/dist/src/parsers/ValueParser.js +5 -1
  254. package/dist/src/parsers/ValueParser.js.map +1 -1
  255. package/dist/src/parsers/ValuesQueryParser.d.ts +0 -2
  256. package/dist/src/parsers/ValuesQueryParser.js +5 -45
  257. package/dist/src/parsers/ValuesQueryParser.js.map +1 -1
  258. package/dist/src/parsers/utils/LexemeCommentUtils.d.ts +6 -0
  259. package/dist/src/parsers/utils/LexemeCommentUtils.js +29 -0
  260. package/dist/src/parsers/utils/LexemeCommentUtils.js.map +1 -0
  261. package/dist/src/tokenReaders/CommandTokenReader.js +50 -2
  262. package/dist/src/tokenReaders/CommandTokenReader.js.map +1 -1
  263. package/dist/src/tokenReaders/LiteralTokenReader.js +8 -5
  264. package/dist/src/tokenReaders/LiteralTokenReader.js.map +1 -1
  265. package/dist/src/tokenReaders/OperatorTokenReader.js +10 -1
  266. package/dist/src/tokenReaders/OperatorTokenReader.js.map +1 -1
  267. package/dist/src/tokenReaders/TypeTokenReader.js +11 -1
  268. package/dist/src/tokenReaders/TypeTokenReader.js.map +1 -1
  269. package/dist/src/transformers/InsertQuerySelectValuesConverter.d.ts +18 -0
  270. package/dist/src/transformers/InsertQuerySelectValuesConverter.js +122 -0
  271. package/dist/src/transformers/InsertQuerySelectValuesConverter.js.map +1 -0
  272. package/dist/src/transformers/LinePrinter.d.ts +1 -0
  273. package/dist/src/transformers/LinePrinter.js +12 -0
  274. package/dist/src/transformers/LinePrinter.js.map +1 -1
  275. package/dist/src/transformers/OnelineFormattingHelper.d.ts +29 -0
  276. package/dist/src/transformers/OnelineFormattingHelper.js +99 -0
  277. package/dist/src/transformers/OnelineFormattingHelper.js.map +1 -0
  278. package/dist/src/transformers/QueryBuilder.d.ts +47 -13
  279. package/dist/src/transformers/QueryBuilder.js +433 -60
  280. package/dist/src/transformers/QueryBuilder.js.map +1 -1
  281. package/dist/src/transformers/SqlFormatter.d.ts +13 -1
  282. package/dist/src/transformers/SqlFormatter.js +20 -5
  283. package/dist/src/transformers/SqlFormatter.js.map +1 -1
  284. package/dist/src/transformers/SqlPrinter.d.ts +47 -8
  285. package/dist/src/transformers/SqlPrinter.js +625 -72
  286. package/dist/src/transformers/SqlPrinter.js.map +1 -1
  287. package/dist/src/types/Formatting.d.ts +8 -0
  288. package/dist/src/types/Formatting.js +3 -0
  289. package/dist/src/types/Formatting.js.map +1 -0
  290. package/dist/src/utils/ParserStringUtils.d.ts +6 -0
  291. package/dist/src/utils/ParserStringUtils.js +31 -0
  292. package/dist/src/utils/ParserStringUtils.js.map +1 -0
  293. package/dist/tsconfig.tsbuildinfo +1 -1
  294. package/package.json +3 -3
@@ -0,0 +1,400 @@
1
+ import { SqlTokenizer } from './SqlTokenizer';
2
+ import { SelectQueryParser } from './SelectQueryParser';
3
+ import { InsertQueryParser } from './InsertQueryParser';
4
+ import { UpdateQueryParser } from './UpdateQueryParser';
5
+ import { DeleteQueryParser } from './DeleteQueryParser';
6
+ import { CreateTableParser } from './CreateTableParser';
7
+ import { MergeQueryParser } from './MergeQueryParser';
8
+ import { WithClauseParser } from './WithClauseParser';
9
+ import { DropTableParser } from './DropTableParser';
10
+ import { DropIndexParser } from './DropIndexParser';
11
+ import { CreateIndexParser } from './CreateIndexParser';
12
+ import { AlterTableParser } from './AlterTableParser';
13
+ import { DropConstraintParser } from './DropConstraintParser';
14
+ import { AnalyzeStatementParser } from './AnalyzeStatementParser';
15
+ import { ExplainStatementParser } from './ExplainStatementParser';
16
+ /**
17
+ * Canonical entry point for SQL parsing.
18
+ * Delegates to dedicated parsers for SELECT, INSERT, UPDATE, and DELETE statements, and is designed to embrace additional statement types next.
19
+ */
20
+ export class SqlParser {
21
+ static parse(sql, options = {}) {
22
+ var _a, _b;
23
+ const skipEmpty = (_a = options.skipEmptyStatements) !== null && _a !== void 0 ? _a : true;
24
+ const mode = (_b = options.mode) !== null && _b !== void 0 ? _b : 'single';
25
+ const tokenizer = new SqlTokenizer(sql);
26
+ // Acquire the first meaningful statement so future dispatching can inspect its leading keyword.
27
+ const first = this.consumeNextStatement(tokenizer, 0, skipEmpty);
28
+ if (!first) {
29
+ throw new Error('[SqlParser] No SQL statements found in input.');
30
+ }
31
+ const parsed = this.dispatchParse(first.segment, 1);
32
+ if (mode === 'single') {
33
+ // Ensure callers opting into single-statement mode are protected against trailing statements.
34
+ const remainder = this.consumeNextStatement(tokenizer, first.nextCursor, skipEmpty);
35
+ if (remainder) {
36
+ throw new Error('[SqlParser] Unexpected additional statement detected at index 2. Use parseMany or set mode to "multiple" to allow multiple statements.');
37
+ }
38
+ }
39
+ return parsed;
40
+ }
41
+ static parseMany(sql, options = {}) {
42
+ var _a;
43
+ const skipEmpty = (_a = options.skipEmptyStatements) !== null && _a !== void 0 ? _a : true;
44
+ const tokenizer = new SqlTokenizer(sql);
45
+ const statements = [];
46
+ let cursor = 0;
47
+ let carry = null;
48
+ let index = 0;
49
+ while (true) {
50
+ // Collect the next logical statement segment, carrying forward detached comments when necessary.
51
+ const segment = tokenizer.readNextStatement(cursor, carry);
52
+ carry = null;
53
+ if (!segment) {
54
+ break;
55
+ }
56
+ cursor = segment.nextPosition;
57
+ if (segment.lexemes.length === 0) {
58
+ // Preserve dangling comments so they can attach to the next real statement.
59
+ if (segment.leadingComments && segment.leadingComments.length > 0) {
60
+ carry = segment.leadingComments;
61
+ }
62
+ if (skipEmpty || segment.rawText.trim().length === 0) {
63
+ continue;
64
+ }
65
+ }
66
+ index++;
67
+ statements.push(this.dispatchParse(segment, index));
68
+ }
69
+ return statements;
70
+ }
71
+ static dispatchParse(segment, statementIndex) {
72
+ if (segment.lexemes.length === 0) {
73
+ throw new Error(`[SqlParser] Statement ${statementIndex} does not contain any tokens.`);
74
+ }
75
+ const firstToken = segment.lexemes[0].value.toLowerCase();
76
+ if (firstToken === 'with') {
77
+ const commandAfterWith = this.getCommandAfterWith(segment.lexemes);
78
+ if (commandAfterWith === 'insert into') {
79
+ return this.parseInsertStatement(segment, statementIndex);
80
+ }
81
+ if (commandAfterWith === 'update') {
82
+ return this.parseUpdateStatement(segment, statementIndex);
83
+ }
84
+ if (commandAfterWith === 'delete from') {
85
+ return this.parseDeleteStatement(segment, statementIndex);
86
+ }
87
+ if (commandAfterWith === 'merge into') {
88
+ return this.parseMergeStatement(segment, statementIndex);
89
+ }
90
+ return this.parseSelectStatement(segment, statementIndex);
91
+ }
92
+ if (firstToken === 'select' || firstToken === 'values') {
93
+ return this.parseSelectStatement(segment, statementIndex);
94
+ }
95
+ if (firstToken === 'insert into') {
96
+ return this.parseInsertStatement(segment, statementIndex);
97
+ }
98
+ if (firstToken === 'update') {
99
+ return this.parseUpdateStatement(segment, statementIndex);
100
+ }
101
+ if (firstToken === 'delete from') {
102
+ return this.parseDeleteStatement(segment, statementIndex);
103
+ }
104
+ if (firstToken === 'create table' || firstToken === 'create temporary table') {
105
+ return this.parseCreateTableStatement(segment, statementIndex);
106
+ }
107
+ if (firstToken === 'merge into') {
108
+ return this.parseMergeStatement(segment, statementIndex);
109
+ }
110
+ if (firstToken === 'create index' || firstToken === 'create unique index') {
111
+ return this.parseCreateIndexStatement(segment, statementIndex);
112
+ }
113
+ if (firstToken === 'drop table') {
114
+ return this.parseDropTableStatement(segment, statementIndex);
115
+ }
116
+ if (firstToken === 'drop index') {
117
+ return this.parseDropIndexStatement(segment, statementIndex);
118
+ }
119
+ if (firstToken === 'alter table') {
120
+ return this.parseAlterTableStatement(segment, statementIndex);
121
+ }
122
+ if (firstToken === 'drop constraint') {
123
+ return this.parseDropConstraintStatement(segment, statementIndex);
124
+ }
125
+ if (firstToken === 'analyze') {
126
+ return this.parseAnalyzeStatement(segment, statementIndex);
127
+ }
128
+ if (firstToken === 'explain') {
129
+ return this.parseExplainStatement(segment, statementIndex);
130
+ }
131
+ throw new Error(`[SqlParser] Statement ${statementIndex} starts with unsupported token "${segment.lexemes[0].value}". Support for additional statement types will be introduced soon.`);
132
+ }
133
+ static parseSelectStatement(segment, statementIndex) {
134
+ var _a, _b;
135
+ try {
136
+ const result = SelectQueryParser.parseFromLexeme(segment.lexemes, 0);
137
+ if (result.newIndex < segment.lexemes.length) {
138
+ const unexpected = segment.lexemes[result.newIndex];
139
+ const position = (_b = (_a = unexpected.position) === null || _a === void 0 ? void 0 : _a.startPosition) !== null && _b !== void 0 ? _b : segment.statementStart;
140
+ throw new Error(`[SqlParser] Unexpected token "${unexpected.value}" in statement ${statementIndex} at character ${position}.`);
141
+ }
142
+ return result.value;
143
+ }
144
+ catch (error) {
145
+ const message = error instanceof Error ? error.message : String(error);
146
+ throw new Error(`[SqlParser] Failed to parse SELECT statement ${statementIndex}: ${message}`);
147
+ }
148
+ }
149
+ static parseExplainStatement(segment, statementIndex) {
150
+ var _a, _b;
151
+ try {
152
+ const result = ExplainStatementParser.parseFromLexeme(segment.lexemes, 0, (lexemes, nestedStart) => {
153
+ if (nestedStart >= lexemes.length) {
154
+ throw new Error("[ExplainStatementParser] Missing statement after EXPLAIN options.");
155
+ }
156
+ const nestedSegment = {
157
+ lexemes: lexemes.slice(nestedStart),
158
+ statementStart: segment.statementStart,
159
+ statementEnd: segment.statementEnd,
160
+ nextPosition: segment.nextPosition,
161
+ rawText: segment.rawText,
162
+ leadingComments: segment.leadingComments,
163
+ };
164
+ const statement = this.dispatchParse(nestedSegment, statementIndex);
165
+ return { value: statement, newIndex: lexemes.length };
166
+ });
167
+ if (result.newIndex < segment.lexemes.length) {
168
+ const unexpected = segment.lexemes[result.newIndex];
169
+ const position = (_b = (_a = unexpected.position) === null || _a === void 0 ? void 0 : _a.startPosition) !== null && _b !== void 0 ? _b : segment.statementStart;
170
+ throw new Error(`[SqlParser] Unexpected token "${unexpected.value}" in EXPLAIN statement ${statementIndex} at character ${position}.`);
171
+ }
172
+ return result.value;
173
+ }
174
+ catch (error) {
175
+ const message = error instanceof Error ? error.message : String(error);
176
+ throw new Error(`[SqlParser] Failed to parse EXPLAIN statement ${statementIndex}: ${message}`);
177
+ }
178
+ }
179
+ static parseInsertStatement(segment, statementIndex) {
180
+ var _a, _b;
181
+ try {
182
+ const result = InsertQueryParser.parseFromLexeme(segment.lexemes, 0);
183
+ if (result.newIndex < segment.lexemes.length) {
184
+ const unexpected = segment.lexemes[result.newIndex];
185
+ const position = (_b = (_a = unexpected.position) === null || _a === void 0 ? void 0 : _a.startPosition) !== null && _b !== void 0 ? _b : segment.statementStart;
186
+ throw new Error(`[SqlParser] Unexpected token "${unexpected.value}" in statement ${statementIndex} at character ${position}.`);
187
+ }
188
+ return result.value;
189
+ }
190
+ catch (error) {
191
+ const message = error instanceof Error ? error.message : String(error);
192
+ throw new Error(`[SqlParser] Failed to parse INSERT statement ${statementIndex}: ${message}`);
193
+ }
194
+ }
195
+ static parseUpdateStatement(segment, statementIndex) {
196
+ var _a, _b;
197
+ try {
198
+ const result = UpdateQueryParser.parseFromLexeme(segment.lexemes, 0);
199
+ if (result.newIndex < segment.lexemes.length) {
200
+ const unexpected = segment.lexemes[result.newIndex];
201
+ const position = (_b = (_a = unexpected.position) === null || _a === void 0 ? void 0 : _a.startPosition) !== null && _b !== void 0 ? _b : segment.statementStart;
202
+ throw new Error(`[SqlParser] Unexpected token "${unexpected.value}" in statement ${statementIndex} at character ${position}.`);
203
+ }
204
+ return result.value;
205
+ }
206
+ catch (error) {
207
+ const message = error instanceof Error ? error.message : String(error);
208
+ throw new Error(`[SqlParser] Failed to parse UPDATE statement ${statementIndex}: ${message}`);
209
+ }
210
+ }
211
+ static parseDeleteStatement(segment, statementIndex) {
212
+ var _a, _b;
213
+ try {
214
+ const result = DeleteQueryParser.parseFromLexeme(segment.lexemes, 0);
215
+ // Guard against trailing tokens that would indicate multiple statements in DELETE parsing.
216
+ if (result.newIndex < segment.lexemes.length) {
217
+ const unexpected = segment.lexemes[result.newIndex];
218
+ const position = (_b = (_a = unexpected.position) === null || _a === void 0 ? void 0 : _a.startPosition) !== null && _b !== void 0 ? _b : segment.statementStart;
219
+ throw new Error(`[SqlParser] Unexpected token "${unexpected.value}" in statement ${statementIndex} at character ${position}.`);
220
+ }
221
+ return result.value;
222
+ }
223
+ catch (error) {
224
+ const message = error instanceof Error ? error.message : String(error);
225
+ throw new Error(`[SqlParser] Failed to parse DELETE statement ${statementIndex}: ${message}`);
226
+ }
227
+ }
228
+ static parseCreateTableStatement(segment, statementIndex) {
229
+ var _a, _b;
230
+ try {
231
+ const result = CreateTableParser.parseFromLexeme(segment.lexemes, 0);
232
+ if (result.newIndex < segment.lexemes.length) {
233
+ const unexpected = segment.lexemes[result.newIndex];
234
+ const position = (_b = (_a = unexpected.position) === null || _a === void 0 ? void 0 : _a.startPosition) !== null && _b !== void 0 ? _b : segment.statementStart;
235
+ throw new Error(`[SqlParser] Unexpected token "${unexpected.value}" in statement ${statementIndex} at character ${position}.`);
236
+ }
237
+ return result.value;
238
+ }
239
+ catch (error) {
240
+ const message = error instanceof Error ? error.message : String(error);
241
+ throw new Error(`[SqlParser] Failed to parse CREATE TABLE statement ${statementIndex}: ${message}`);
242
+ }
243
+ }
244
+ static parseDropTableStatement(segment, statementIndex) {
245
+ var _a, _b;
246
+ try {
247
+ const result = DropTableParser.parseFromLexeme(segment.lexemes, 0);
248
+ if (result.newIndex < segment.lexemes.length) {
249
+ const unexpected = segment.lexemes[result.newIndex];
250
+ const position = (_b = (_a = unexpected.position) === null || _a === void 0 ? void 0 : _a.startPosition) !== null && _b !== void 0 ? _b : segment.statementStart;
251
+ throw new Error(`[SqlParser] Unexpected token "${unexpected.value}" in statement ${statementIndex} at character ${position}.`);
252
+ }
253
+ return result.value;
254
+ }
255
+ catch (error) {
256
+ const message = error instanceof Error ? error.message : String(error);
257
+ throw new Error(`[SqlParser] Failed to parse DROP TABLE statement ${statementIndex}: ${message}`);
258
+ }
259
+ }
260
+ static parseDropIndexStatement(segment, statementIndex) {
261
+ var _a, _b;
262
+ try {
263
+ const result = DropIndexParser.parseFromLexeme(segment.lexemes, 0);
264
+ if (result.newIndex < segment.lexemes.length) {
265
+ const unexpected = segment.lexemes[result.newIndex];
266
+ const position = (_b = (_a = unexpected.position) === null || _a === void 0 ? void 0 : _a.startPosition) !== null && _b !== void 0 ? _b : segment.statementStart;
267
+ throw new Error(`[SqlParser] Unexpected token "${unexpected.value}" in statement ${statementIndex} at character ${position}.`);
268
+ }
269
+ return result.value;
270
+ }
271
+ catch (error) {
272
+ const message = error instanceof Error ? error.message : String(error);
273
+ throw new Error(`[SqlParser] Failed to parse DROP INDEX statement ${statementIndex}: ${message}`);
274
+ }
275
+ }
276
+ static parseCreateIndexStatement(segment, statementIndex) {
277
+ var _a, _b;
278
+ try {
279
+ const result = CreateIndexParser.parseFromLexeme(segment.lexemes, 0);
280
+ if (result.newIndex < segment.lexemes.length) {
281
+ const unexpected = segment.lexemes[result.newIndex];
282
+ const position = (_b = (_a = unexpected.position) === null || _a === void 0 ? void 0 : _a.startPosition) !== null && _b !== void 0 ? _b : segment.statementStart;
283
+ throw new Error(`[SqlParser] Unexpected token "${unexpected.value}" in statement ${statementIndex} at character ${position}.`);
284
+ }
285
+ return result.value;
286
+ }
287
+ catch (error) {
288
+ const message = error instanceof Error ? error.message : String(error);
289
+ throw new Error(`[SqlParser] Failed to parse CREATE INDEX statement ${statementIndex}: ${message}`);
290
+ }
291
+ }
292
+ static parseAlterTableStatement(segment, statementIndex) {
293
+ var _a, _b;
294
+ try {
295
+ const result = AlterTableParser.parseFromLexeme(segment.lexemes, 0);
296
+ if (result.newIndex < segment.lexemes.length) {
297
+ const unexpected = segment.lexemes[result.newIndex];
298
+ const position = (_b = (_a = unexpected.position) === null || _a === void 0 ? void 0 : _a.startPosition) !== null && _b !== void 0 ? _b : segment.statementStart;
299
+ throw new Error(`[SqlParser] Unexpected token "${unexpected.value}" in statement ${statementIndex} at character ${position}.`);
300
+ }
301
+ return result.value;
302
+ }
303
+ catch (error) {
304
+ const message = error instanceof Error ? error.message : String(error);
305
+ throw new Error(`[SqlParser] Failed to parse ALTER TABLE statement ${statementIndex}: ${message}`);
306
+ }
307
+ }
308
+ static parseDropConstraintStatement(segment, statementIndex) {
309
+ var _a, _b;
310
+ try {
311
+ const result = DropConstraintParser.parseFromLexeme(segment.lexemes, 0);
312
+ if (result.newIndex < segment.lexemes.length) {
313
+ const unexpected = segment.lexemes[result.newIndex];
314
+ const position = (_b = (_a = unexpected.position) === null || _a === void 0 ? void 0 : _a.startPosition) !== null && _b !== void 0 ? _b : segment.statementStart;
315
+ throw new Error(`[SqlParser] Unexpected token "${unexpected.value}" in statement ${statementIndex} at character ${position}.`);
316
+ }
317
+ return result.value;
318
+ }
319
+ catch (error) {
320
+ const message = error instanceof Error ? error.message : String(error);
321
+ throw new Error(`[SqlParser] Failed to parse DROP CONSTRAINT statement ${statementIndex}: ${message}`);
322
+ }
323
+ }
324
+ static parseAnalyzeStatement(segment, statementIndex) {
325
+ var _a, _b;
326
+ try {
327
+ // Delegate lexeme interpretation to the ANALYZE-specific parser.
328
+ const result = AnalyzeStatementParser.parseFromLexeme(segment.lexemes, 0);
329
+ // Ensure parsing consumed every lexeme belonging to this statement.
330
+ if (result.newIndex < segment.lexemes.length) {
331
+ const unexpected = segment.lexemes[result.newIndex];
332
+ const position = (_b = (_a = unexpected.position) === null || _a === void 0 ? void 0 : _a.startPosition) !== null && _b !== void 0 ? _b : segment.statementStart;
333
+ throw new Error(`[SqlParser] Unexpected token "${unexpected.value}" in statement ${statementIndex} at character ${position}.`);
334
+ }
335
+ return result.value;
336
+ }
337
+ catch (error) {
338
+ const message = error instanceof Error ? error.message : String(error);
339
+ throw new Error(`[SqlParser] Failed to parse ANALYZE statement ${statementIndex}: ${message}`);
340
+ }
341
+ }
342
+ static parseMergeStatement(segment, statementIndex) {
343
+ var _a, _b;
344
+ try {
345
+ const result = MergeQueryParser.parseFromLexeme(segment.lexemes, 0);
346
+ if (result.newIndex < segment.lexemes.length) {
347
+ // Guard against trailing tokens that would indicate parsing stopped prematurely.
348
+ const unexpected = segment.lexemes[result.newIndex];
349
+ const position = (_b = (_a = unexpected.position) === null || _a === void 0 ? void 0 : _a.startPosition) !== null && _b !== void 0 ? _b : segment.statementStart;
350
+ throw new Error(`[SqlParser] Unexpected token "${unexpected.value}" in statement ${statementIndex} at character ${position}.`);
351
+ }
352
+ return result.value;
353
+ }
354
+ catch (error) {
355
+ const message = error instanceof Error ? error.message : String(error);
356
+ throw new Error(`[SqlParser] Failed to parse MERGE statement ${statementIndex}: ${message}`);
357
+ }
358
+ }
359
+ static getCommandAfterWith(lexemes) {
360
+ var _a;
361
+ try {
362
+ const clone = this.cloneLexemeArray(lexemes);
363
+ const withResult = WithClauseParser.parseFromLexeme(clone, 0);
364
+ const next = lexemes[withResult.newIndex];
365
+ return (_a = next === null || next === void 0 ? void 0 : next.value.toLowerCase()) !== null && _a !== void 0 ? _a : null;
366
+ }
367
+ catch (_b) {
368
+ return null;
369
+ }
370
+ }
371
+ static cloneLexemeArray(lexemes) {
372
+ return lexemes.map((lexeme) => (Object.assign(Object.assign({}, lexeme), { comments: lexeme.comments ? [...lexeme.comments] : null, positionedComments: lexeme.positionedComments
373
+ ? lexeme.positionedComments.map(pc => ({ position: pc.position, comments: [...pc.comments] }))
374
+ : undefined, position: lexeme.position ? Object.assign({}, lexeme.position) : undefined })));
375
+ }
376
+ static consumeNextStatement(tokenizer, cursor, skipEmpty) {
377
+ let localCursor = cursor;
378
+ let carry = null;
379
+ // Advance until a statement with tokens is found or the input ends.
380
+ while (true) {
381
+ const segment = tokenizer.readNextStatement(localCursor, carry);
382
+ carry = null;
383
+ if (!segment) {
384
+ return null;
385
+ }
386
+ localCursor = segment.nextPosition;
387
+ if (segment.lexemes.length === 0) {
388
+ // Retain comments so the next statement can inherit them when appropriate.
389
+ if (segment.leadingComments && segment.leadingComments.length > 0) {
390
+ carry = segment.leadingComments;
391
+ }
392
+ if (skipEmpty || segment.rawText.trim().length === 0) {
393
+ continue;
394
+ }
395
+ }
396
+ return { segment, nextCursor: localCursor };
397
+ }
398
+ }
399
+ }
400
+ //# sourceMappingURL=SqlParser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SqlParser.js","sourceRoot":"","sources":["../../../../src/parsers/SqlParser.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
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";
1
+ import { FromClause, JoinClause, JoinOnClause, JoinUsingClause, FunctionSource, SourceAliasExpression, WhereClause, GroupByClause, HavingClause, SubQuerySource, WindowFrameClause, LimitClause, ForClause, OffsetClause, WindowsClause as WindowClause, CommonTable, WithClause, FetchClause, FetchExpression, UpdateClause, DeleteClause, UsingClause, SetClause, ReturningClause, SetClauseItem } from "../models/Clause";
2
2
  import { SimpleSelectQuery, ValuesQuery } from "../models/SelectQuery";
3
3
  import { SqlComponent, SqlComponentVisitor } from "../models/SqlComponent";
4
4
  import { SqlPrintToken } from "../models/SqlPrintToken";
@@ -11,6 +11,8 @@ export declare enum ParameterStyle {
11
11
  Indexed = "indexed",
12
12
  Named = "named"
13
13
  }
14
+ export type CastStyle = 'postgres' | 'standard';
15
+ export type ConstraintStyle = 'postgres' | 'mysql';
14
16
  export interface FormatterConfig {
15
17
  identifierEscape?: {
16
18
  start: string;
@@ -24,6 +26,10 @@ export interface FormatterConfig {
24
26
  * Parameter style: anonymous (?), indexed ($1), or named (:name)
25
27
  */
26
28
  parameterStyle?: ParameterStyle;
29
+ /** Controls how CAST expressions are rendered */
30
+ castStyle?: CastStyle;
31
+ /** Controls how table/column constraints are rendered */
32
+ constraintStyle?: ConstraintStyle;
27
33
  }
28
34
  export declare const PRESETS: Record<string, FormatterConfig>;
29
35
  export declare class SqlPrintTokenParser implements SqlComponentVisitor<SqlPrintToken> {
@@ -39,6 +45,10 @@ export declare class SqlPrintTokenParser implements SqlComponentVisitor<SqlPrint
39
45
  parameterDecorator: ParameterDecorator;
40
46
  identifierDecorator: IdentifierDecorator;
41
47
  index: number;
48
+ private castStyle;
49
+ private constraintStyle;
50
+ private readonly normalizeJoinConditionOrder;
51
+ private joinConditionContexts;
42
52
  constructor(options?: {
43
53
  preset?: FormatterConfig;
44
54
  identifierEscape?: {
@@ -50,6 +60,9 @@ export declare class SqlPrintTokenParser implements SqlComponentVisitor<SqlPrint
50
60
  end: string;
51
61
  };
52
62
  parameterStyle?: 'anonymous' | 'indexed' | 'named';
63
+ castStyle?: CastStyle;
64
+ constraintStyle?: ConstraintStyle;
65
+ joinConditionOrderByDeclaration?: boolean;
53
66
  });
54
67
  /**
55
68
  * Pretty-prints a BinarySelectQuery (e.g., UNION, INTERSECT, EXCEPT).
@@ -105,8 +118,9 @@ export declare class SqlPrintTokenParser implements SqlComponentVisitor<SqlPrint
105
118
  private createInlineCommentSequence;
106
119
  /**
107
120
  * Creates CommentBlock containers for the given comments.
108
- * Each CommentBlock contains: Comment -> CommentNewline -> Space
109
- * This structure supports both oneliner and multiline formatting modes.
121
+ * Each CommentBlock contains: Comment -> CommentNewline -> Space.
122
+ * @param comments Raw comment strings to convert into CommentBlock tokens.
123
+ * @param isHeaderComment Marks the generated blocks as originating from header comments when true.
110
124
  */
111
125
  private createCommentBlocks;
112
126
  /**
@@ -188,6 +202,13 @@ export declare class SqlPrintTokenParser implements SqlComponentVisitor<SqlPrint
188
202
  private visitParenExpression;
189
203
  private visitCastExpression;
190
204
  private visitCaseExpression;
205
+ private extractSwitchAfterComments;
206
+ private collectCaseLeadingCommentsFromSwitch;
207
+ private findCaseKeyToken;
208
+ private collectCaseLeadingCommentBlocks;
209
+ private collectCaseLeadingCommentBlocksRecursive;
210
+ private isTransparentCaseWrapper;
211
+ private commentBlockSignature;
191
212
  private visitArrayExpression;
192
213
  private visitArrayQueryExpression;
193
214
  private visitArraySliceExpression;
@@ -196,6 +217,9 @@ export declare class SqlPrintTokenParser implements SqlComponentVisitor<SqlPrint
196
217
  private visitStringSpecifierExpression;
197
218
  private visitTypeValue;
198
219
  private visitTupleExpression;
220
+ private tupleRequiresMultiline;
221
+ private hasInlineComments;
222
+ private hasLeadingComments;
199
223
  private visitWindowFrameExpression;
200
224
  private visitWindowFrameSpec;
201
225
  /**
@@ -219,6 +243,12 @@ export declare class SqlPrintTokenParser implements SqlComponentVisitor<SqlPrint
219
243
  visitFromClause(arg: FromClause): SqlPrintToken;
220
244
  visitJoinClause(arg: JoinClause): SqlPrintToken;
221
245
  visitJoinOnClause(arg: JoinOnClause): SqlPrintToken;
246
+ private getCurrentJoinAliasOrder;
247
+ private buildJoinAliasOrder;
248
+ private collectSourceIdentifiers;
249
+ private normalizeJoinConditionValue;
250
+ private normalizeBinaryEquality;
251
+ private resolveColumnOwner;
222
252
  visitJoinUsingClause(arg: JoinUsingClause): SqlPrintToken;
223
253
  visitFunctionSource(arg: FunctionSource): SqlPrintToken;
224
254
  visitSourceAliasExpression(arg: SourceAliasExpression): SqlPrintToken;
@@ -240,10 +270,42 @@ export declare class SqlPrintTokenParser implements SqlComponentVisitor<SqlPrint
240
270
  visitInlineQuery(arg: InlineQuery): SqlPrintToken;
241
271
  private visitInsertQuery;
242
272
  private visitInsertClause;
273
+ private visitDeleteQuery;
274
+ visitDeleteClause(arg: DeleteClause): SqlPrintToken;
275
+ visitUsingClause(arg: UsingClause): SqlPrintToken;
276
+ private visitMergeQuery;
277
+ private visitMergeWhenClause;
278
+ private visitMergeUpdateAction;
279
+ private visitMergeDeleteAction;
280
+ private visitMergeInsertAction;
281
+ private visitMergeDoNothingAction;
282
+ private mergeMatchTypeToKeyword;
243
283
  private visitUpdateQuery;
244
284
  visitUpdateClause(arg: UpdateClause): SqlPrintToken;
245
285
  visitSetClause(arg: SetClause): SqlPrintToken;
246
286
  visitSetClauseItem(arg: SetClauseItem): SqlPrintToken;
247
287
  visitReturningClause(arg: ReturningClause): SqlPrintToken;
248
288
  visitCreateTableQuery(arg: CreateTableQuery): SqlPrintToken;
289
+ private visitTableColumnDefinition;
290
+ private visitColumnConstraintDefinition;
291
+ private visitTableConstraintDefinition;
292
+ private wrapWithParenExpression;
293
+ private visitReferenceDefinition;
294
+ private visitCreateIndexStatement;
295
+ private visitIndexColumnDefinition;
296
+ private visitDropTableStatement;
297
+ private visitDropIndexStatement;
298
+ private visitAlterTableStatement;
299
+ private visitAlterTableAddConstraint;
300
+ private visitAlterTableDropConstraint;
301
+ private visitAlterTableDropColumn;
302
+ private visitDropConstraintStatement;
303
+ private visitExplainStatement;
304
+ private visitAnalyzeStatement;
305
+ private renderExplainOption;
306
+ private isExplainLegacyFlag;
307
+ private isExplainBooleanTrue;
308
+ private renderQualifiedNameInline;
309
+ private renderIdentifierInline;
310
+ private renderIdentifierText;
249
311
  }