rawsql-ts 0.11.44-beta → 0.12.1

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 (1341) hide show
  1. package/dist/esm/formatters/OriginalFormatRestorer.js.map +1 -0
  2. package/dist/esm/index.d.ts +119 -0
  3. package/dist/esm/index.js +95 -80
  4. package/dist/esm/index.js.map +1 -1
  5. package/dist/esm/index.min.js +21 -21
  6. package/dist/esm/index.min.js.map +4 -4
  7. package/dist/esm/models/BinarySelectQuery.js.map +1 -0
  8. package/dist/esm/models/CTEError.js.map +1 -0
  9. package/dist/esm/models/Clause.d.ts +313 -0
  10. package/dist/esm/models/Clause.js +496 -0
  11. package/dist/esm/models/Clause.js.map +1 -0
  12. package/dist/esm/models/CreateTableQuery.js.map +1 -0
  13. package/dist/esm/models/DDLStatements.d.ts +207 -0
  14. package/dist/esm/models/DDLStatements.js +213 -0
  15. package/dist/esm/models/DDLStatements.js.map +1 -0
  16. package/dist/esm/models/DeleteQuery.js.map +1 -0
  17. package/dist/esm/models/HintClause.js.map +1 -0
  18. package/dist/esm/models/InsertQuery.d.ts +19 -0
  19. package/dist/esm/models/InsertQuery.js +19 -0
  20. package/dist/esm/models/InsertQuery.js.map +1 -0
  21. package/dist/esm/models/KeywordTrie.js.map +1 -0
  22. package/dist/esm/models/Lexeme.js.map +1 -0
  23. package/dist/esm/models/MergeQuery.js.map +1 -0
  24. package/dist/esm/models/SelectQuery.js.map +1 -0
  25. package/dist/esm/models/SimpleSelectQuery.js.map +1 -0
  26. package/dist/esm/models/SqlComponent.js.map +1 -0
  27. package/dist/esm/models/SqlPrintToken.d.ts +143 -0
  28. package/dist/esm/models/SqlPrintToken.js +134 -0
  29. package/dist/esm/models/SqlPrintToken.js.map +1 -0
  30. package/dist/esm/models/TableDefinitionModel.d.ts +39 -0
  31. package/dist/esm/models/TableDefinitionModel.js +77 -0
  32. package/dist/esm/models/TableDefinitionModel.js.map +1 -0
  33. package/dist/esm/models/UpdateQuery.js.map +1 -0
  34. package/dist/esm/models/ValueComponent.d.ts +225 -0
  35. package/dist/esm/models/ValueComponent.js +349 -0
  36. package/dist/esm/models/ValueComponent.js.map +1 -0
  37. package/dist/esm/models/ValuesQuery.d.ts +54 -0
  38. package/dist/esm/models/ValuesQuery.js +58 -0
  39. package/dist/esm/models/ValuesQuery.js.map +1 -0
  40. package/dist/esm/parsers/AlterTableParser.js +449 -0
  41. package/dist/esm/parsers/AlterTableParser.js.map +1 -0
  42. package/dist/esm/parsers/AnalyzeStatementParser.d.ts +13 -0
  43. package/dist/esm/parsers/AnalyzeStatementParser.js +90 -0
  44. package/dist/esm/parsers/AnalyzeStatementParser.js.map +1 -0
  45. package/dist/esm/parsers/CommandExpressionParser.js.map +1 -0
  46. package/dist/esm/parsers/CommonTableParser.js.map +1 -0
  47. package/dist/esm/parsers/CreateIndexParser.js.map +1 -0
  48. package/dist/esm/parsers/CreateTableParser.js.map +1 -0
  49. package/dist/esm/parsers/DeleteClauseParser.js.map +1 -0
  50. package/dist/esm/parsers/DeleteQueryParser.js.map +1 -0
  51. package/dist/esm/parsers/DropConstraintParser.js.map +1 -0
  52. package/dist/esm/parsers/DropIndexParser.js.map +1 -0
  53. package/dist/esm/parsers/DropTableParser.js.map +1 -0
  54. package/dist/esm/parsers/ExplainStatementParser.d.ts +23 -0
  55. package/dist/esm/parsers/ExplainStatementParser.js +185 -0
  56. package/dist/esm/parsers/ExplainStatementParser.js.map +1 -0
  57. package/dist/esm/parsers/FetchClauseParser.js.map +1 -0
  58. package/dist/esm/parsers/ForClauseParser.js.map +1 -0
  59. package/dist/esm/parsers/FromClauseParser.js.map +1 -0
  60. package/dist/esm/parsers/FullNameParser.js.map +1 -0
  61. package/dist/esm/parsers/FunctionExpressionParser.d.ts +65 -0
  62. package/dist/esm/parsers/FunctionExpressionParser.js +520 -0
  63. package/dist/esm/parsers/FunctionExpressionParser.js.map +1 -0
  64. package/dist/esm/parsers/GroupByParser.js.map +1 -0
  65. package/dist/esm/parsers/HavingParser.js.map +1 -0
  66. package/dist/esm/parsers/IdentifierDecorator.js.map +1 -0
  67. package/dist/esm/parsers/IdentifierParser.js.map +1 -0
  68. package/dist/esm/parsers/InsertQueryParser.js +158 -0
  69. package/dist/esm/parsers/InsertQueryParser.js.map +1 -0
  70. package/dist/esm/parsers/JoinClauseParser.js.map +1 -0
  71. package/dist/esm/parsers/JoinOnClauseParser.js.map +1 -0
  72. package/dist/esm/parsers/JoinUsingClauseParser.js.map +1 -0
  73. package/dist/esm/parsers/KeywordParser.js.map +1 -0
  74. package/dist/esm/parsers/LimitClauseParser.js.map +1 -0
  75. package/dist/esm/parsers/LiteralParser.js.map +1 -0
  76. package/dist/esm/parsers/MergeQueryParser.js.map +1 -0
  77. package/dist/esm/parsers/OffsetClauseParser.js.map +1 -0
  78. package/dist/esm/parsers/OrderByClauseParser.js.map +1 -0
  79. package/dist/esm/parsers/OverExpressionParser.js.map +1 -0
  80. package/dist/esm/parsers/ParameterDecorator.js.map +1 -0
  81. package/dist/esm/parsers/ParameterExpressionParser.js.map +1 -0
  82. package/dist/esm/parsers/ParenExpressionParser.js +105 -0
  83. package/dist/esm/parsers/ParenExpressionParser.js.map +1 -0
  84. package/dist/esm/parsers/ParseError.js.map +1 -0
  85. package/dist/esm/parsers/PartitionByParser.js.map +1 -0
  86. package/dist/esm/parsers/ReturningClauseParser.js +60 -0
  87. package/dist/esm/parsers/ReturningClauseParser.js.map +1 -0
  88. package/dist/esm/parsers/SelectClauseParser.js.map +1 -0
  89. package/dist/esm/parsers/SelectQueryParser.js.map +1 -0
  90. package/dist/esm/parsers/SetClauseParser.js.map +1 -0
  91. package/dist/esm/parsers/SourceAliasExpressionParser.js.map +1 -0
  92. package/dist/esm/parsers/SourceExpressionParser.js.map +1 -0
  93. package/dist/esm/parsers/SourceParser.js.map +1 -0
  94. package/dist/esm/parsers/SqlParser.d.ts +39 -0
  95. package/dist/esm/parsers/SqlParser.js +386 -0
  96. package/dist/esm/parsers/SqlParser.js.map +1 -0
  97. package/dist/esm/parsers/SqlPrintTokenParser.d.ts +315 -0
  98. package/dist/esm/parsers/SqlPrintTokenParser.js +3139 -0
  99. package/dist/esm/parsers/SqlPrintTokenParser.js.map +1 -0
  100. package/dist/esm/parsers/SqlTokenizer.js.map +1 -0
  101. package/dist/esm/parsers/StringSpecifierExpressionParser.js.map +1 -0
  102. package/dist/esm/parsers/UnaryExpressionParser.js.map +1 -0
  103. package/dist/esm/parsers/UpdateClauseParser.js.map +1 -0
  104. package/dist/esm/parsers/UpdateQueryParser.js.map +1 -0
  105. package/dist/esm/parsers/UsingClauseParser.js.map +1 -0
  106. package/dist/esm/parsers/ValueParser.js +558 -0
  107. package/dist/esm/parsers/ValueParser.js.map +1 -0
  108. package/dist/esm/parsers/ValuesQueryParser.js.map +1 -0
  109. package/dist/esm/parsers/WhereClauseParser.js.map +1 -0
  110. package/dist/esm/parsers/WindowClauseParser.js.map +1 -0
  111. package/dist/esm/parsers/WindowExpressionParser.js.map +1 -0
  112. package/dist/esm/parsers/WithClauseParser.js.map +1 -0
  113. package/dist/esm/parsers/utils/LexemeCommentUtils.js.map +1 -0
  114. package/dist/esm/reporting/models/DataFlowEdge.js.map +1 -0
  115. package/dist/esm/reporting/models/DataFlowGraph.js.map +1 -0
  116. package/dist/esm/reporting/models/DataFlowNode.js.map +1 -0
  117. package/dist/esm/reporting/services/CTEHandler.js.map +1 -0
  118. package/dist/esm/reporting/services/DataSourceHandler.js.map +1 -0
  119. package/dist/esm/reporting/services/JoinHandler.js.map +1 -0
  120. package/dist/esm/reporting/services/ProcessHandler.js.map +1 -0
  121. package/dist/esm/tokenReaders/BaseTokenReader.js.map +1 -0
  122. package/dist/esm/tokenReaders/CommandTokenReader.js +212 -0
  123. package/dist/esm/tokenReaders/CommandTokenReader.js.map +1 -0
  124. package/dist/esm/tokenReaders/EscapedIdentifierTokenReader.js.map +1 -0
  125. package/dist/esm/tokenReaders/FunctionTokenReader.js.map +1 -0
  126. package/dist/esm/tokenReaders/IdentifierTokenReader.js.map +1 -0
  127. package/dist/esm/tokenReaders/LiteralTokenReader.js +325 -0
  128. package/dist/esm/tokenReaders/LiteralTokenReader.js.map +1 -0
  129. package/dist/esm/tokenReaders/OperatorTokenReader.js.map +1 -0
  130. package/dist/esm/tokenReaders/ParameterTokenReader.js.map +1 -0
  131. package/dist/esm/tokenReaders/StringSpecifierTokenReader.js.map +1 -0
  132. package/dist/esm/tokenReaders/SymbolTokenReader.js.map +1 -0
  133. package/dist/esm/tokenReaders/TokenReaderManager.js.map +1 -0
  134. package/dist/esm/tokenReaders/TypeTokenReader.js.map +1 -0
  135. package/dist/esm/transformers/AliasRenamer.js.map +1 -0
  136. package/dist/esm/transformers/CTEBuilder.js.map +1 -0
  137. package/dist/esm/transformers/CTECollector.js.map +1 -0
  138. package/dist/esm/transformers/CTEComposer.js.map +1 -0
  139. package/dist/esm/transformers/CTEDependencyAnalyzer.js.map +1 -0
  140. package/dist/esm/transformers/CTEDependencyTracer.js.map +1 -0
  141. package/dist/esm/transformers/CTEDisabler.js.map +1 -0
  142. package/dist/esm/transformers/CTEInjector.js.map +1 -0
  143. package/dist/esm/transformers/CTENormalizer.js.map +1 -0
  144. package/dist/esm/transformers/CTEQueryDecomposer.js.map +1 -0
  145. package/dist/esm/transformers/CTERenamer.js.map +1 -0
  146. package/dist/esm/transformers/CTETableReferenceCollector.js.map +1 -0
  147. package/dist/esm/transformers/ColumnReferenceCollector.js +474 -0
  148. package/dist/esm/transformers/ColumnReferenceCollector.js.map +1 -0
  149. package/dist/esm/transformers/DDLDiffGenerator.d.ts +18 -0
  150. package/dist/esm/transformers/DDLDiffGenerator.js +309 -0
  151. package/dist/esm/transformers/DDLDiffGenerator.js.map +1 -0
  152. package/dist/esm/transformers/DDLGeneralizer.d.ts +13 -0
  153. package/dist/esm/transformers/DDLGeneralizer.js +98 -0
  154. package/dist/esm/transformers/DDLGeneralizer.js.map +1 -0
  155. package/dist/esm/transformers/DDLToFixtureConverter.d.ts +19 -0
  156. package/dist/esm/transformers/DDLToFixtureConverter.js +202 -0
  157. package/dist/esm/transformers/DDLToFixtureConverter.js.map +1 -0
  158. package/dist/esm/transformers/DeleteResultSelectConverter.d.ts +53 -0
  159. package/dist/esm/transformers/DeleteResultSelectConverter.js +410 -0
  160. package/dist/esm/transformers/DeleteResultSelectConverter.js.map +1 -0
  161. package/dist/esm/transformers/DynamicQueryBuilder.js.map +1 -0
  162. package/dist/esm/transformers/EnhancedJsonMapping.js.map +1 -0
  163. package/dist/esm/transformers/FilterableItemCollector.js.map +1 -0
  164. package/dist/esm/transformers/FixtureCteBuilder.d.ts +60 -0
  165. package/dist/esm/transformers/FixtureCteBuilder.js +147 -0
  166. package/dist/esm/transformers/FixtureCteBuilder.js.map +1 -0
  167. package/dist/esm/transformers/FormatOptionResolver.js.map +1 -0
  168. package/dist/esm/transformers/Formatter.js.map +1 -0
  169. package/dist/esm/transformers/InsertQuerySelectValuesConverter.js +121 -0
  170. package/dist/esm/transformers/InsertQuerySelectValuesConverter.js.map +1 -0
  171. package/dist/esm/transformers/InsertResultSelectConverter.d.ts +67 -0
  172. package/dist/esm/transformers/InsertResultSelectConverter.js +585 -0
  173. package/dist/esm/transformers/InsertResultSelectConverter.js.map +1 -0
  174. package/dist/esm/transformers/JoinAggregationDecomposer.js.map +1 -0
  175. package/dist/esm/transformers/JsonMappingConverter.js.map +1 -0
  176. package/dist/esm/transformers/JsonMappingUnifier.js.map +1 -0
  177. package/dist/esm/transformers/LinePrinter.js.map +1 -0
  178. package/dist/esm/transformers/MergeResultSelectConverter.d.ts +38 -0
  179. package/dist/esm/transformers/MergeResultSelectConverter.js +306 -0
  180. package/dist/esm/transformers/MergeResultSelectConverter.js.map +1 -0
  181. package/dist/esm/transformers/ModelDrivenJsonMapping.js.map +1 -0
  182. package/dist/esm/transformers/OnelineFormattingHelper.js +95 -0
  183. package/dist/esm/transformers/OnelineFormattingHelper.js.map +1 -0
  184. package/dist/esm/transformers/ParameterCollector.js.map +1 -0
  185. package/dist/esm/transformers/PostgresArrayEntityCteBuilder.js.map +1 -0
  186. package/dist/esm/transformers/PostgresJsonQueryBuilder.js.map +1 -0
  187. package/dist/esm/transformers/PostgresObjectEntityCteBuilder.js.map +1 -0
  188. package/dist/esm/transformers/QueryBuilder.d.ts +130 -0
  189. package/dist/esm/transformers/QueryBuilder.js +634 -0
  190. package/dist/esm/transformers/QueryBuilder.js.map +1 -0
  191. package/dist/esm/transformers/QueryFlowDiagramGenerator.js.map +1 -0
  192. package/dist/esm/transformers/SchemaCollector.js.map +1 -0
  193. package/dist/esm/transformers/SelectResultSelectConverter.d.ts +10 -0
  194. package/dist/esm/transformers/SelectResultSelectConverter.js +32 -0
  195. package/dist/esm/transformers/SelectResultSelectConverter.js.map +1 -0
  196. package/dist/esm/transformers/SelectValueCollector.js.map +1 -0
  197. package/dist/esm/transformers/SelectableColumnCollector.js.map +1 -0
  198. package/dist/esm/transformers/SimulatedSelectConverter.d.ts +23 -0
  199. package/dist/esm/transformers/SimulatedSelectConverter.js +61 -0
  200. package/dist/esm/transformers/SimulatedSelectConverter.js.map +1 -0
  201. package/dist/esm/transformers/SmartRenamer.js.map +1 -0
  202. package/dist/esm/transformers/SqlFormatter.js.map +1 -0
  203. package/dist/esm/transformers/SqlIdentifierRenamer.js.map +1 -0
  204. package/dist/esm/transformers/SqlOutputToken.js.map +1 -0
  205. package/dist/esm/transformers/SqlPaginationInjector.js.map +1 -0
  206. package/dist/esm/transformers/SqlParamInjector.js.map +1 -0
  207. package/dist/esm/transformers/SqlParameterBinder.js.map +1 -0
  208. package/dist/esm/transformers/SqlPrinter.d.ts +242 -0
  209. package/dist/esm/transformers/SqlPrinter.js +1474 -0
  210. package/dist/esm/transformers/SqlPrinter.js.map +1 -0
  211. package/dist/esm/transformers/SqlSortInjector.js.map +1 -0
  212. package/dist/esm/transformers/TableSourceCollector.js +435 -0
  213. package/dist/esm/transformers/TableSourceCollector.js.map +1 -0
  214. package/dist/esm/transformers/TypeTransformationPostProcessor.js.map +1 -0
  215. package/dist/esm/transformers/UpdateResultSelectConverter.d.ts +51 -0
  216. package/dist/esm/transformers/UpdateResultSelectConverter.js +355 -0
  217. package/dist/esm/transformers/UpdateResultSelectConverter.js.map +1 -0
  218. package/dist/esm/transformers/UpstreamSelectQueryFinder.js.map +1 -0
  219. package/dist/esm/types/GenericFixture.d.ts +17 -0
  220. package/dist/esm/types/GenericFixture.js +2 -0
  221. package/dist/esm/types/GenericFixture.js.map +1 -0
  222. package/dist/esm/utils/CTERegionDetector.js.map +1 -0
  223. package/dist/esm/utils/CommentEditor.js.map +1 -0
  224. package/dist/esm/utils/CommentUtils.js.map +1 -0
  225. package/dist/esm/utils/CursorContextAnalyzer.js.map +1 -0
  226. package/dist/esm/utils/IntelliSenseApi.js.map +1 -0
  227. package/dist/esm/utils/JsonSchemaValidator.js.map +1 -0
  228. package/dist/esm/utils/KeywordCache.js.map +1 -0
  229. package/dist/esm/utils/LexemeCursor.js.map +1 -0
  230. package/dist/esm/utils/MultiQuerySplitter.js.map +1 -0
  231. package/dist/esm/utils/OperatorPrecedence.js.map +1 -0
  232. package/dist/esm/utils/ParameterDetector.js.map +1 -0
  233. package/dist/esm/utils/ParameterHelper.js.map +1 -0
  234. package/dist/esm/utils/ParameterRemover.js +779 -0
  235. package/dist/esm/utils/ParameterRemover.js.map +1 -0
  236. package/dist/esm/utils/ParserStringUtils.js.map +1 -0
  237. package/dist/esm/utils/PositionAwareParser.js.map +1 -0
  238. package/dist/esm/utils/SchemaManager.js.map +1 -0
  239. package/dist/esm/utils/ScopeResolver.js.map +1 -0
  240. package/dist/esm/utils/SelectQueryWithClauseHelper.d.ts +12 -0
  241. package/dist/esm/utils/SelectQueryWithClauseHelper.js +43 -0
  242. package/dist/esm/utils/SelectQueryWithClauseHelper.js.map +1 -0
  243. package/dist/esm/utils/SqlSchemaValidator.js.map +1 -0
  244. package/dist/esm/utils/TableNameUtils.d.ts +10 -0
  245. package/dist/esm/utils/TableNameUtils.js +30 -0
  246. package/dist/esm/utils/TableNameUtils.js.map +1 -0
  247. package/dist/esm/utils/TextPositionUtils.js.map +1 -0
  248. package/dist/esm/utils/ValueComponentRewriter.d.ts +3 -0
  249. package/dist/esm/utils/ValueComponentRewriter.js +184 -0
  250. package/dist/esm/utils/ValueComponentRewriter.js.map +1 -0
  251. package/dist/esm/utils/charLookupTable.js.map +1 -0
  252. package/dist/esm/utils/stringUtils.js.map +1 -0
  253. package/dist/formatters/OriginalFormatRestorer.js.map +1 -0
  254. package/dist/index.js +142 -0
  255. package/dist/index.js.map +1 -0
  256. package/dist/index.min.js +22 -22
  257. package/dist/index.min.js.map +4 -4
  258. package/dist/models/BinarySelectQuery.js.map +1 -0
  259. package/dist/models/CTEError.js.map +1 -0
  260. package/dist/models/Clause.js +535 -0
  261. package/dist/models/Clause.js.map +1 -0
  262. package/dist/models/CreateTableQuery.js.map +1 -0
  263. package/dist/models/DDLStatements.js +229 -0
  264. package/dist/models/DDLStatements.js.map +1 -0
  265. package/dist/models/DeleteQuery.js.map +1 -0
  266. package/dist/models/FormattingLexeme.js.map +1 -0
  267. package/dist/models/HintClause.js.map +1 -0
  268. package/dist/models/InsertQuery.js +23 -0
  269. package/dist/models/InsertQuery.js.map +1 -0
  270. package/dist/models/KeywordTrie.js.map +1 -0
  271. package/dist/models/Lexeme.js.map +1 -0
  272. package/dist/models/MergeQuery.js.map +1 -0
  273. package/dist/models/SelectQuery.js.map +1 -0
  274. package/dist/models/SimpleSelectQuery.js.map +1 -0
  275. package/dist/models/SqlComponent.js.map +1 -0
  276. package/dist/models/SqlPrintToken.js +138 -0
  277. package/dist/models/SqlPrintToken.js.map +1 -0
  278. package/dist/models/TableDefinitionModel.js +85 -0
  279. package/dist/models/TableDefinitionModel.js.map +1 -0
  280. package/dist/models/UpdateQuery.js.map +1 -0
  281. package/dist/models/ValueComponent.js +380 -0
  282. package/dist/models/ValueComponent.js.map +1 -0
  283. package/dist/models/ValuesQuery.js +62 -0
  284. package/dist/models/ValuesQuery.js.map +1 -0
  285. package/dist/parsers/AlterTableParser.js +453 -0
  286. package/dist/parsers/AlterTableParser.js.map +1 -0
  287. package/dist/parsers/AnalyzeStatementParser.js +94 -0
  288. package/dist/parsers/AnalyzeStatementParser.js.map +1 -0
  289. package/dist/parsers/CommandExpressionParser.js.map +1 -0
  290. package/dist/parsers/CommonTableParser.js.map +1 -0
  291. package/dist/parsers/CreateIndexParser.js.map +1 -0
  292. package/dist/parsers/CreateTableParser.js.map +1 -0
  293. package/dist/parsers/DeleteClauseParser.js.map +1 -0
  294. package/dist/parsers/DeleteQueryParser.js.map +1 -0
  295. package/dist/parsers/DropConstraintParser.js.map +1 -0
  296. package/dist/parsers/DropIndexParser.js.map +1 -0
  297. package/dist/parsers/DropTableParser.js.map +1 -0
  298. package/dist/parsers/ExplainStatementParser.js +189 -0
  299. package/dist/parsers/ExplainStatementParser.js.map +1 -0
  300. package/dist/parsers/FetchClauseParser.js.map +1 -0
  301. package/dist/parsers/ForClauseParser.js.map +1 -0
  302. package/dist/parsers/FromClauseParser.js.map +1 -0
  303. package/dist/parsers/FullNameParser.js.map +1 -0
  304. package/dist/parsers/FunctionExpressionParser.js +524 -0
  305. package/dist/parsers/FunctionExpressionParser.js.map +1 -0
  306. package/dist/parsers/GroupByParser.js.map +1 -0
  307. package/dist/parsers/HavingParser.js.map +1 -0
  308. package/dist/parsers/IdentifierDecorator.js.map +1 -0
  309. package/dist/parsers/IdentifierParser.js.map +1 -0
  310. package/dist/parsers/InsertQueryParser.js +162 -0
  311. package/dist/parsers/InsertQueryParser.js.map +1 -0
  312. package/dist/parsers/JoinClauseParser.js.map +1 -0
  313. package/dist/parsers/JoinOnClauseParser.js.map +1 -0
  314. package/dist/parsers/JoinUsingClauseParser.js.map +1 -0
  315. package/dist/parsers/KeywordParser.js.map +1 -0
  316. package/dist/parsers/LimitClauseParser.js.map +1 -0
  317. package/dist/parsers/LiteralParser.js.map +1 -0
  318. package/dist/parsers/MergeQueryParser.js.map +1 -0
  319. package/dist/parsers/OffsetClauseParser.js.map +1 -0
  320. package/dist/parsers/OrderByClauseParser.js.map +1 -0
  321. package/dist/parsers/OverExpressionParser.js.map +1 -0
  322. package/dist/parsers/ParameterDecorator.js.map +1 -0
  323. package/dist/parsers/ParameterExpressionParser.js.map +1 -0
  324. package/dist/parsers/ParenExpressionParser.js +109 -0
  325. package/dist/parsers/ParenExpressionParser.js.map +1 -0
  326. package/dist/parsers/ParseError.js.map +1 -0
  327. package/dist/parsers/PartitionByParser.js.map +1 -0
  328. package/dist/parsers/ReturningClauseParser.js +64 -0
  329. package/dist/parsers/ReturningClauseParser.js.map +1 -0
  330. package/dist/parsers/SelectClauseParser.js.map +1 -0
  331. package/dist/parsers/SelectQueryParser.js.map +1 -0
  332. package/dist/parsers/SetClauseParser.js.map +1 -0
  333. package/dist/parsers/SourceAliasExpressionParser.js.map +1 -0
  334. package/dist/parsers/SourceExpressionParser.js.map +1 -0
  335. package/dist/parsers/SourceParser.js.map +1 -0
  336. package/dist/parsers/SqlParser.js +390 -0
  337. package/dist/parsers/SqlParser.js.map +1 -0
  338. package/dist/parsers/SqlPrintTokenParser.js +3143 -0
  339. package/dist/parsers/SqlPrintTokenParser.js.map +1 -0
  340. package/dist/parsers/SqlTokenizer.js.map +1 -0
  341. package/dist/parsers/StringSpecifierExpressionParser.js.map +1 -0
  342. package/dist/parsers/UnaryExpressionParser.js.map +1 -0
  343. package/dist/parsers/UpdateClauseParser.js.map +1 -0
  344. package/dist/parsers/UpdateQueryParser.js.map +1 -0
  345. package/dist/parsers/UsingClauseParser.js.map +1 -0
  346. package/dist/parsers/ValueParser.js +562 -0
  347. package/dist/parsers/ValueParser.js.map +1 -0
  348. package/dist/parsers/ValuesQueryParser.js.map +1 -0
  349. package/dist/parsers/WhereClauseParser.js.map +1 -0
  350. package/dist/parsers/WindowClauseParser.js.map +1 -0
  351. package/dist/parsers/WindowExpressionParser.js.map +1 -0
  352. package/dist/parsers/WithClauseParser.js.map +1 -0
  353. package/dist/parsers/utils/LexemeCommentUtils.js.map +1 -0
  354. package/dist/reporting/models/DataFlowEdge.js.map +1 -0
  355. package/dist/reporting/models/DataFlowGraph.js.map +1 -0
  356. package/dist/reporting/models/DataFlowNode.js.map +1 -0
  357. package/dist/reporting/services/CTEHandler.js.map +1 -0
  358. package/dist/reporting/services/DataSourceHandler.js.map +1 -0
  359. package/dist/reporting/services/JoinHandler.js.map +1 -0
  360. package/dist/reporting/services/ProcessHandler.js.map +1 -0
  361. package/dist/src/index.d.ts +15 -0
  362. package/dist/src/models/Clause.d.ts +7 -3
  363. package/dist/src/models/DDLStatements.d.ts +52 -2
  364. package/dist/src/models/InsertQuery.d.ts +1 -4
  365. package/dist/src/models/SqlPrintToken.d.ts +4 -0
  366. package/dist/src/models/TableDefinitionModel.d.ts +39 -0
  367. package/dist/src/models/ValueComponent.d.ts +2 -1
  368. package/dist/src/models/ValuesQuery.d.ts +2 -0
  369. package/dist/src/parsers/AnalyzeStatementParser.d.ts +13 -0
  370. package/dist/src/parsers/ExplainStatementParser.d.ts +23 -0
  371. package/dist/src/parsers/FunctionExpressionParser.d.ts +1 -0
  372. package/dist/src/parsers/SqlParser.d.ts +4 -3
  373. package/dist/src/parsers/SqlPrintTokenParser.d.ts +12 -0
  374. package/dist/src/transformers/DDLDiffGenerator.d.ts +18 -0
  375. package/dist/src/transformers/DDLGeneralizer.d.ts +13 -0
  376. package/dist/src/transformers/DDLToFixtureConverter.d.ts +19 -0
  377. package/dist/src/transformers/DeleteResultSelectConverter.d.ts +53 -0
  378. package/dist/src/transformers/FixtureCteBuilder.d.ts +60 -0
  379. package/dist/src/transformers/InsertResultSelectConverter.d.ts +67 -0
  380. package/dist/src/transformers/MergeResultSelectConverter.d.ts +38 -0
  381. package/dist/src/transformers/QueryBuilder.d.ts +11 -0
  382. package/dist/src/transformers/SelectResultSelectConverter.d.ts +10 -0
  383. package/dist/src/transformers/SimulatedSelectConverter.d.ts +23 -0
  384. package/dist/src/transformers/SqlPrinter.d.ts +1 -0
  385. package/dist/src/transformers/UpdateResultSelectConverter.d.ts +51 -0
  386. package/dist/src/types/GenericFixture.d.ts +17 -0
  387. package/dist/src/utils/SelectQueryWithClauseHelper.d.ts +12 -0
  388. package/dist/src/utils/TableNameUtils.d.ts +10 -0
  389. package/dist/src/utils/ValueComponentRewriter.d.ts +3 -0
  390. package/dist/tokenReaders/BaseTokenReader.js.map +1 -0
  391. package/dist/tokenReaders/CommandTokenReader.js +216 -0
  392. package/dist/tokenReaders/CommandTokenReader.js.map +1 -0
  393. package/dist/tokenReaders/EscapedIdentifierTokenReader.js.map +1 -0
  394. package/dist/tokenReaders/FunctionTokenReader.js.map +1 -0
  395. package/dist/tokenReaders/IdentifierTokenReader.js.map +1 -0
  396. package/dist/tokenReaders/LiteralTokenReader.js +329 -0
  397. package/dist/tokenReaders/LiteralTokenReader.js.map +1 -0
  398. package/dist/tokenReaders/OperatorTokenReader.js.map +1 -0
  399. package/dist/tokenReaders/ParameterTokenReader.js.map +1 -0
  400. package/dist/tokenReaders/StringSpecifierTokenReader.js.map +1 -0
  401. package/dist/tokenReaders/SymbolTokenReader.js.map +1 -0
  402. package/dist/tokenReaders/TokenReaderManager.js.map +1 -0
  403. package/dist/tokenReaders/TypeTokenReader.js.map +1 -0
  404. package/dist/transformers/AliasRenamer.js.map +1 -0
  405. package/dist/transformers/CTEBuilder.js.map +1 -0
  406. package/dist/transformers/CTECollector.js.map +1 -0
  407. package/dist/transformers/CTEComposer.js.map +1 -0
  408. package/dist/transformers/CTEDependencyAnalyzer.js.map +1 -0
  409. package/dist/transformers/CTEDependencyTracer.js.map +1 -0
  410. package/dist/transformers/CTEDisabler.js.map +1 -0
  411. package/dist/transformers/CTEInjector.js.map +1 -0
  412. package/dist/transformers/CTENormalizer.js.map +1 -0
  413. package/dist/transformers/CTEQueryDecomposer.js.map +1 -0
  414. package/dist/transformers/CTERenamer.js.map +1 -0
  415. package/dist/transformers/CTETableReferenceCollector.js.map +1 -0
  416. package/dist/transformers/ColumnReferenceCollector.js +478 -0
  417. package/dist/transformers/ColumnReferenceCollector.js.map +1 -0
  418. package/dist/transformers/DDLDiffGenerator.js +313 -0
  419. package/dist/transformers/DDLDiffGenerator.js.map +1 -0
  420. package/dist/transformers/DDLGeneralizer.js +119 -0
  421. package/dist/transformers/DDLGeneralizer.js.map +1 -0
  422. package/dist/transformers/DDLToFixtureConverter.js +206 -0
  423. package/dist/transformers/DDLToFixtureConverter.js.map +1 -0
  424. package/dist/transformers/DeleteResultSelectConverter.js +414 -0
  425. package/dist/transformers/DeleteResultSelectConverter.js.map +1 -0
  426. package/dist/transformers/DynamicQueryBuilder.js.map +1 -0
  427. package/dist/transformers/EnhancedJsonMapping.js.map +1 -0
  428. package/dist/transformers/FilterableItemCollector.js.map +1 -0
  429. package/dist/transformers/FixtureCteBuilder.js +151 -0
  430. package/dist/transformers/FixtureCteBuilder.js.map +1 -0
  431. package/dist/transformers/FormatOptionResolver.js.map +1 -0
  432. package/dist/transformers/Formatter.js.map +1 -0
  433. package/dist/transformers/InsertQuerySelectValuesConverter.js +125 -0
  434. package/dist/transformers/InsertQuerySelectValuesConverter.js.map +1 -0
  435. package/dist/transformers/InsertResultSelectConverter.js +589 -0
  436. package/dist/transformers/InsertResultSelectConverter.js.map +1 -0
  437. package/dist/transformers/JoinAggregationDecomposer.js.map +1 -0
  438. package/dist/transformers/JsonMappingConverter.js.map +1 -0
  439. package/dist/transformers/JsonMappingUnifier.js.map +1 -0
  440. package/dist/transformers/LinePrinter.js.map +1 -0
  441. package/dist/transformers/MergeResultSelectConverter.js +310 -0
  442. package/dist/transformers/MergeResultSelectConverter.js.map +1 -0
  443. package/dist/transformers/ModelDrivenJsonMapping.js.map +1 -0
  444. package/dist/transformers/OnelineFormattingHelper.js +99 -0
  445. package/dist/transformers/OnelineFormattingHelper.js.map +1 -0
  446. package/dist/transformers/ParameterCollector.js.map +1 -0
  447. package/dist/transformers/PostgresArrayEntityCteBuilder.js.map +1 -0
  448. package/dist/transformers/PostgresJsonQueryBuilder.js.map +1 -0
  449. package/dist/transformers/PostgresObjectEntityCteBuilder.js.map +1 -0
  450. package/dist/transformers/QueryBuilder.js +649 -0
  451. package/dist/transformers/QueryBuilder.js.map +1 -0
  452. package/dist/transformers/QueryFlowDiagramGenerator.js.map +1 -0
  453. package/dist/transformers/SchemaCollector.js.map +1 -0
  454. package/dist/transformers/SelectResultSelectConverter.js +36 -0
  455. package/dist/transformers/SelectResultSelectConverter.js.map +1 -0
  456. package/dist/transformers/SelectValueCollector.js.map +1 -0
  457. package/dist/transformers/SelectableColumnCollector.js.map +1 -0
  458. package/dist/transformers/SimulatedSelectConverter.js +65 -0
  459. package/dist/transformers/SimulatedSelectConverter.js.map +1 -0
  460. package/dist/transformers/SmartRenamer.js.map +1 -0
  461. package/dist/transformers/SqlFormatter.js.map +1 -0
  462. package/dist/transformers/SqlIdentifierRenamer.js.map +1 -0
  463. package/dist/transformers/SqlOutputToken.js.map +1 -0
  464. package/dist/transformers/SqlPaginationInjector.js.map +1 -0
  465. package/dist/transformers/SqlParamInjector.js.map +1 -0
  466. package/dist/transformers/SqlParameterBinder.js.map +1 -0
  467. package/dist/transformers/SqlPrinter.js +1478 -0
  468. package/dist/transformers/SqlPrinter.js.map +1 -0
  469. package/dist/transformers/SqlSortInjector.js.map +1 -0
  470. package/dist/transformers/TableColumnResolver.js.map +1 -0
  471. package/dist/transformers/TableSourceCollector.js +439 -0
  472. package/dist/transformers/TableSourceCollector.js.map +1 -0
  473. package/dist/transformers/TypeTransformationPostProcessor.js.map +1 -0
  474. package/dist/transformers/UpdateResultSelectConverter.js +359 -0
  475. package/dist/transformers/UpdateResultSelectConverter.js.map +1 -0
  476. package/dist/transformers/UpstreamSelectQueryFinder.js.map +1 -0
  477. package/dist/tsconfig.browser.tsbuildinfo +1 -0
  478. package/dist/types/Formatting.js.map +1 -0
  479. package/dist/types/GenericFixture.js +3 -0
  480. package/dist/types/GenericFixture.js.map +1 -0
  481. package/dist/utils/CTERegionDetector.js.map +1 -0
  482. package/dist/utils/CommentEditor.js.map +1 -0
  483. package/dist/utils/CommentUtils.js.map +1 -0
  484. package/dist/utils/CursorContextAnalyzer.js.map +1 -0
  485. package/dist/utils/IntelliSenseApi.js.map +1 -0
  486. package/dist/utils/JsonSchemaValidator.js.map +1 -0
  487. package/dist/utils/KeywordCache.js.map +1 -0
  488. package/dist/utils/LexemeCursor.js.map +1 -0
  489. package/dist/utils/MultiQuerySplitter.js.map +1 -0
  490. package/dist/utils/OperatorPrecedence.js.map +1 -0
  491. package/dist/utils/ParameterDetector.js.map +1 -0
  492. package/dist/utils/ParameterHelper.js.map +1 -0
  493. package/dist/utils/ParameterRemover.js +783 -0
  494. package/dist/utils/ParameterRemover.js.map +1 -0
  495. package/dist/utils/ParserStringUtils.js.map +1 -0
  496. package/dist/utils/PositionAwareParser.js.map +1 -0
  497. package/dist/utils/SchemaManager.js.map +1 -0
  498. package/dist/utils/ScopeResolver.js.map +1 -0
  499. package/dist/utils/SelectQueryWithClauseHelper.js +47 -0
  500. package/dist/utils/SelectQueryWithClauseHelper.js.map +1 -0
  501. package/dist/utils/SqlSchemaValidator.js.map +1 -0
  502. package/dist/utils/TableNameUtils.js +35 -0
  503. package/dist/utils/TableNameUtils.js.map +1 -0
  504. package/dist/utils/TextPositionUtils.js.map +1 -0
  505. package/dist/utils/ValueComponentRewriter.js +187 -0
  506. package/dist/utils/ValueComponentRewriter.js.map +1 -0
  507. package/dist/utils/charLookupTable.js.map +1 -0
  508. package/dist/utils/stringUtils.js.map +1 -0
  509. package/package.json +6 -7
  510. package/dist/esm/src/formatters/OriginalFormatRestorer.js.map +0 -1
  511. package/dist/esm/src/index.d.ts +0 -104
  512. package/dist/esm/src/index.js +0 -100
  513. package/dist/esm/src/index.js.map +0 -1
  514. package/dist/esm/src/models/BinarySelectQuery.js.map +0 -1
  515. package/dist/esm/src/models/CTEError.js.map +0 -1
  516. package/dist/esm/src/models/Clause.d.ts +0 -309
  517. package/dist/esm/src/models/Clause.js +0 -483
  518. package/dist/esm/src/models/Clause.js.map +0 -1
  519. package/dist/esm/src/models/CreateTableQuery.js.map +0 -1
  520. package/dist/esm/src/models/DDLStatements.d.ts +0 -157
  521. package/dist/esm/src/models/DDLStatements.js +0 -141
  522. package/dist/esm/src/models/DDLStatements.js.map +0 -1
  523. package/dist/esm/src/models/DeleteQuery.js.map +0 -1
  524. package/dist/esm/src/models/FormattingLexeme.js.map +0 -1
  525. package/dist/esm/src/models/HintClause.js.map +0 -1
  526. package/dist/esm/src/models/InsertQuery.d.ts +0 -22
  527. package/dist/esm/src/models/InsertQuery.js +0 -21
  528. package/dist/esm/src/models/InsertQuery.js.map +0 -1
  529. package/dist/esm/src/models/KeywordTrie.js.map +0 -1
  530. package/dist/esm/src/models/Lexeme.js.map +0 -1
  531. package/dist/esm/src/models/MergeQuery.js.map +0 -1
  532. package/dist/esm/src/models/SelectQuery.js.map +0 -1
  533. package/dist/esm/src/models/SimpleSelectQuery.js.map +0 -1
  534. package/dist/esm/src/models/SqlComponent.js.map +0 -1
  535. package/dist/esm/src/models/SqlPrintToken.d.ts +0 -139
  536. package/dist/esm/src/models/SqlPrintToken.js +0 -130
  537. package/dist/esm/src/models/SqlPrintToken.js.map +0 -1
  538. package/dist/esm/src/models/UpdateQuery.js.map +0 -1
  539. package/dist/esm/src/models/ValueComponent.d.ts +0 -224
  540. package/dist/esm/src/models/ValueComponent.js +0 -348
  541. package/dist/esm/src/models/ValueComponent.js.map +0 -1
  542. package/dist/esm/src/models/ValuesQuery.d.ts +0 -52
  543. package/dist/esm/src/models/ValuesQuery.js +0 -57
  544. package/dist/esm/src/models/ValuesQuery.js.map +0 -1
  545. package/dist/esm/src/parsers/AlterTableParser.js +0 -428
  546. package/dist/esm/src/parsers/AlterTableParser.js.map +0 -1
  547. package/dist/esm/src/parsers/CommandExpressionParser.js.map +0 -1
  548. package/dist/esm/src/parsers/CommonTableParser.js.map +0 -1
  549. package/dist/esm/src/parsers/CreateIndexParser.js.map +0 -1
  550. package/dist/esm/src/parsers/CreateTableParser.js.map +0 -1
  551. package/dist/esm/src/parsers/DeleteClauseParser.js.map +0 -1
  552. package/dist/esm/src/parsers/DeleteQueryParser.js.map +0 -1
  553. package/dist/esm/src/parsers/DropConstraintParser.js.map +0 -1
  554. package/dist/esm/src/parsers/DropIndexParser.js.map +0 -1
  555. package/dist/esm/src/parsers/DropTableParser.js.map +0 -1
  556. package/dist/esm/src/parsers/FetchClauseParser.js.map +0 -1
  557. package/dist/esm/src/parsers/ForClauseParser.js.map +0 -1
  558. package/dist/esm/src/parsers/FromClauseParser.js.map +0 -1
  559. package/dist/esm/src/parsers/FullNameParser.js.map +0 -1
  560. package/dist/esm/src/parsers/FunctionExpressionParser.d.ts +0 -64
  561. package/dist/esm/src/parsers/FunctionExpressionParser.js +0 -487
  562. package/dist/esm/src/parsers/FunctionExpressionParser.js.map +0 -1
  563. package/dist/esm/src/parsers/GroupByParser.js.map +0 -1
  564. package/dist/esm/src/parsers/HavingParser.js.map +0 -1
  565. package/dist/esm/src/parsers/IdentifierDecorator.js.map +0 -1
  566. package/dist/esm/src/parsers/IdentifierParser.js.map +0 -1
  567. package/dist/esm/src/parsers/InsertQueryParser.js +0 -155
  568. package/dist/esm/src/parsers/InsertQueryParser.js.map +0 -1
  569. package/dist/esm/src/parsers/JoinClauseParser.js.map +0 -1
  570. package/dist/esm/src/parsers/JoinOnClauseParser.js.map +0 -1
  571. package/dist/esm/src/parsers/JoinUsingClauseParser.js.map +0 -1
  572. package/dist/esm/src/parsers/KeywordParser.js.map +0 -1
  573. package/dist/esm/src/parsers/LimitClauseParser.js.map +0 -1
  574. package/dist/esm/src/parsers/LiteralParser.js.map +0 -1
  575. package/dist/esm/src/parsers/MergeQueryParser.js.map +0 -1
  576. package/dist/esm/src/parsers/OffsetClauseParser.js.map +0 -1
  577. package/dist/esm/src/parsers/OrderByClauseParser.js.map +0 -1
  578. package/dist/esm/src/parsers/OverExpressionParser.js.map +0 -1
  579. package/dist/esm/src/parsers/ParameterDecorator.js.map +0 -1
  580. package/dist/esm/src/parsers/ParameterExpressionParser.js.map +0 -1
  581. package/dist/esm/src/parsers/ParenExpressionParser.js +0 -80
  582. package/dist/esm/src/parsers/ParenExpressionParser.js.map +0 -1
  583. package/dist/esm/src/parsers/ParseError.js.map +0 -1
  584. package/dist/esm/src/parsers/PartitionByParser.js.map +0 -1
  585. package/dist/esm/src/parsers/ReturningClauseParser.js +0 -74
  586. package/dist/esm/src/parsers/ReturningClauseParser.js.map +0 -1
  587. package/dist/esm/src/parsers/SelectClauseParser.js.map +0 -1
  588. package/dist/esm/src/parsers/SelectQueryParser.js.map +0 -1
  589. package/dist/esm/src/parsers/SetClauseParser.js.map +0 -1
  590. package/dist/esm/src/parsers/SourceAliasExpressionParser.js.map +0 -1
  591. package/dist/esm/src/parsers/SourceExpressionParser.js.map +0 -1
  592. package/dist/esm/src/parsers/SourceParser.js.map +0 -1
  593. package/dist/esm/src/parsers/SqlParser.d.ts +0 -38
  594. package/dist/esm/src/parsers/SqlParser.js +0 -344
  595. package/dist/esm/src/parsers/SqlParser.js.map +0 -1
  596. package/dist/esm/src/parsers/SqlPrintTokenParser.d.ts +0 -303
  597. package/dist/esm/src/parsers/SqlPrintTokenParser.js +0 -2934
  598. package/dist/esm/src/parsers/SqlPrintTokenParser.js.map +0 -1
  599. package/dist/esm/src/parsers/SqlTokenizer.js.map +0 -1
  600. package/dist/esm/src/parsers/StringSpecifierExpressionParser.js.map +0 -1
  601. package/dist/esm/src/parsers/UnaryExpressionParser.js.map +0 -1
  602. package/dist/esm/src/parsers/UpdateClauseParser.js.map +0 -1
  603. package/dist/esm/src/parsers/UpdateQueryParser.js.map +0 -1
  604. package/dist/esm/src/parsers/UsingClauseParser.js.map +0 -1
  605. package/dist/esm/src/parsers/ValueParser.js +0 -531
  606. package/dist/esm/src/parsers/ValueParser.js.map +0 -1
  607. package/dist/esm/src/parsers/ValuesQueryParser.js.map +0 -1
  608. package/dist/esm/src/parsers/WhereClauseParser.js.map +0 -1
  609. package/dist/esm/src/parsers/WindowClauseParser.js.map +0 -1
  610. package/dist/esm/src/parsers/WindowExpressionParser.js.map +0 -1
  611. package/dist/esm/src/parsers/WithClauseParser.js.map +0 -1
  612. package/dist/esm/src/parsers/utils/LexemeCommentUtils.js.map +0 -1
  613. package/dist/esm/src/reporting/models/DataFlowEdge.js.map +0 -1
  614. package/dist/esm/src/reporting/models/DataFlowGraph.js.map +0 -1
  615. package/dist/esm/src/reporting/models/DataFlowNode.js.map +0 -1
  616. package/dist/esm/src/reporting/services/CTEHandler.js.map +0 -1
  617. package/dist/esm/src/reporting/services/DataSourceHandler.js.map +0 -1
  618. package/dist/esm/src/reporting/services/JoinHandler.js.map +0 -1
  619. package/dist/esm/src/reporting/services/ProcessHandler.js.map +0 -1
  620. package/dist/esm/src/tokenReaders/BaseTokenReader.js.map +0 -1
  621. package/dist/esm/src/tokenReaders/CommandTokenReader.js +0 -211
  622. package/dist/esm/src/tokenReaders/CommandTokenReader.js.map +0 -1
  623. package/dist/esm/src/tokenReaders/EscapedIdentifierTokenReader.js.map +0 -1
  624. package/dist/esm/src/tokenReaders/FunctionTokenReader.js.map +0 -1
  625. package/dist/esm/src/tokenReaders/IdentifierTokenReader.js.map +0 -1
  626. package/dist/esm/src/tokenReaders/LiteralTokenReader.js +0 -318
  627. package/dist/esm/src/tokenReaders/LiteralTokenReader.js.map +0 -1
  628. package/dist/esm/src/tokenReaders/OperatorTokenReader.js.map +0 -1
  629. package/dist/esm/src/tokenReaders/ParameterTokenReader.js.map +0 -1
  630. package/dist/esm/src/tokenReaders/StringSpecifierTokenReader.js.map +0 -1
  631. package/dist/esm/src/tokenReaders/SymbolTokenReader.js.map +0 -1
  632. package/dist/esm/src/tokenReaders/TokenReaderManager.js.map +0 -1
  633. package/dist/esm/src/tokenReaders/TypeTokenReader.js.map +0 -1
  634. package/dist/esm/src/transformers/AliasRenamer.js.map +0 -1
  635. package/dist/esm/src/transformers/CTEBuilder.js.map +0 -1
  636. package/dist/esm/src/transformers/CTECollector.js.map +0 -1
  637. package/dist/esm/src/transformers/CTEComposer.js.map +0 -1
  638. package/dist/esm/src/transformers/CTEDependencyAnalyzer.js.map +0 -1
  639. package/dist/esm/src/transformers/CTEDependencyTracer.js.map +0 -1
  640. package/dist/esm/src/transformers/CTEDisabler.js.map +0 -1
  641. package/dist/esm/src/transformers/CTEInjector.js.map +0 -1
  642. package/dist/esm/src/transformers/CTENormalizer.js.map +0 -1
  643. package/dist/esm/src/transformers/CTEQueryDecomposer.js.map +0 -1
  644. package/dist/esm/src/transformers/CTERenamer.js.map +0 -1
  645. package/dist/esm/src/transformers/CTETableReferenceCollector.js.map +0 -1
  646. package/dist/esm/src/transformers/ColumnReferenceCollector.js +0 -464
  647. package/dist/esm/src/transformers/ColumnReferenceCollector.js.map +0 -1
  648. package/dist/esm/src/transformers/DynamicQueryBuilder.js.map +0 -1
  649. package/dist/esm/src/transformers/EnhancedJsonMapping.js.map +0 -1
  650. package/dist/esm/src/transformers/FilterableItemCollector.js.map +0 -1
  651. package/dist/esm/src/transformers/FormatOptionResolver.js.map +0 -1
  652. package/dist/esm/src/transformers/Formatter.js.map +0 -1
  653. package/dist/esm/src/transformers/InsertQuerySelectValuesConverter.js +0 -118
  654. package/dist/esm/src/transformers/InsertQuerySelectValuesConverter.js.map +0 -1
  655. package/dist/esm/src/transformers/JoinAggregationDecomposer.js.map +0 -1
  656. package/dist/esm/src/transformers/JsonMappingConverter.js.map +0 -1
  657. package/dist/esm/src/transformers/JsonMappingUnifier.js.map +0 -1
  658. package/dist/esm/src/transformers/LinePrinter.js.map +0 -1
  659. package/dist/esm/src/transformers/ModelDrivenJsonMapping.js.map +0 -1
  660. package/dist/esm/src/transformers/OnelineFormattingHelper.js +0 -88
  661. package/dist/esm/src/transformers/OnelineFormattingHelper.js.map +0 -1
  662. package/dist/esm/src/transformers/ParameterCollector.js.map +0 -1
  663. package/dist/esm/src/transformers/PostgresArrayEntityCteBuilder.js.map +0 -1
  664. package/dist/esm/src/transformers/PostgresJsonQueryBuilder.js.map +0 -1
  665. package/dist/esm/src/transformers/PostgresObjectEntityCteBuilder.js.map +0 -1
  666. package/dist/esm/src/transformers/QueryBuilder.d.ts +0 -119
  667. package/dist/esm/src/transformers/QueryBuilder.js +0 -618
  668. package/dist/esm/src/transformers/QueryBuilder.js.map +0 -1
  669. package/dist/esm/src/transformers/QueryFlowDiagramGenerator.js.map +0 -1
  670. package/dist/esm/src/transformers/SchemaCollector.js.map +0 -1
  671. package/dist/esm/src/transformers/SelectValueCollector.js.map +0 -1
  672. package/dist/esm/src/transformers/SelectableColumnCollector.js.map +0 -1
  673. package/dist/esm/src/transformers/SmartRenamer.js.map +0 -1
  674. package/dist/esm/src/transformers/SqlFormatter.js.map +0 -1
  675. package/dist/esm/src/transformers/SqlIdentifierRenamer.js.map +0 -1
  676. package/dist/esm/src/transformers/SqlOutputToken.js.map +0 -1
  677. package/dist/esm/src/transformers/SqlPaginationInjector.js.map +0 -1
  678. package/dist/esm/src/transformers/SqlParamInjector.js.map +0 -1
  679. package/dist/esm/src/transformers/SqlParameterBinder.js.map +0 -1
  680. package/dist/esm/src/transformers/SqlPrinter.d.ts +0 -241
  681. package/dist/esm/src/transformers/SqlPrinter.js +0 -1445
  682. package/dist/esm/src/transformers/SqlPrinter.js.map +0 -1
  683. package/dist/esm/src/transformers/SqlSortInjector.js.map +0 -1
  684. package/dist/esm/src/transformers/TableColumnResolver.js.map +0 -1
  685. package/dist/esm/src/transformers/TableSourceCollector.js +0 -431
  686. package/dist/esm/src/transformers/TableSourceCollector.js.map +0 -1
  687. package/dist/esm/src/transformers/TypeTransformationPostProcessor.js.map +0 -1
  688. package/dist/esm/src/transformers/UpstreamSelectQueryFinder.js.map +0 -1
  689. package/dist/esm/src/types/Formatting.js.map +0 -1
  690. package/dist/esm/src/utils/CTERegionDetector.js.map +0 -1
  691. package/dist/esm/src/utils/CommentEditor.js.map +0 -1
  692. package/dist/esm/src/utils/CommentUtils.js.map +0 -1
  693. package/dist/esm/src/utils/CursorContextAnalyzer.js.map +0 -1
  694. package/dist/esm/src/utils/IntelliSenseApi.js.map +0 -1
  695. package/dist/esm/src/utils/JsonSchemaValidator.js.map +0 -1
  696. package/dist/esm/src/utils/KeywordCache.js.map +0 -1
  697. package/dist/esm/src/utils/LexemeCursor.js.map +0 -1
  698. package/dist/esm/src/utils/MultiQuerySplitter.js.map +0 -1
  699. package/dist/esm/src/utils/OperatorPrecedence.js.map +0 -1
  700. package/dist/esm/src/utils/ParameterDetector.js.map +0 -1
  701. package/dist/esm/src/utils/ParameterHelper.js.map +0 -1
  702. package/dist/esm/src/utils/ParameterRemover.js +0 -777
  703. package/dist/esm/src/utils/ParameterRemover.js.map +0 -1
  704. package/dist/esm/src/utils/ParserStringUtils.js.map +0 -1
  705. package/dist/esm/src/utils/PositionAwareParser.js.map +0 -1
  706. package/dist/esm/src/utils/SchemaManager.js.map +0 -1
  707. package/dist/esm/src/utils/ScopeResolver.js.map +0 -1
  708. package/dist/esm/src/utils/SqlSchemaValidator.js.map +0 -1
  709. package/dist/esm/src/utils/TextPositionUtils.js.map +0 -1
  710. package/dist/esm/src/utils/charLookupTable.js.map +0 -1
  711. package/dist/esm/src/utils/stringUtils.js.map +0 -1
  712. package/dist/esm/tsconfig.browser.tsbuildinfo +0 -1
  713. package/dist/src/formatters/OriginalFormatRestorer.js.map +0 -1
  714. package/dist/src/index.js +0 -126
  715. package/dist/src/index.js.map +0 -1
  716. package/dist/src/models/BinarySelectQuery.js.map +0 -1
  717. package/dist/src/models/CTEError.js.map +0 -1
  718. package/dist/src/models/Clause.js +0 -522
  719. package/dist/src/models/Clause.js.map +0 -1
  720. package/dist/src/models/CreateTableQuery.js.map +0 -1
  721. package/dist/src/models/DDLStatements.js +0 -153
  722. package/dist/src/models/DDLStatements.js.map +0 -1
  723. package/dist/src/models/DeleteQuery.js.map +0 -1
  724. package/dist/src/models/HintClause.js.map +0 -1
  725. package/dist/src/models/InsertQuery.js +0 -25
  726. package/dist/src/models/InsertQuery.js.map +0 -1
  727. package/dist/src/models/KeywordTrie.js.map +0 -1
  728. package/dist/src/models/Lexeme.js.map +0 -1
  729. package/dist/src/models/MergeQuery.js.map +0 -1
  730. package/dist/src/models/SelectQuery.js.map +0 -1
  731. package/dist/src/models/SimpleSelectQuery.js.map +0 -1
  732. package/dist/src/models/SqlComponent.js.map +0 -1
  733. package/dist/src/models/SqlPrintToken.js +0 -134
  734. package/dist/src/models/SqlPrintToken.js.map +0 -1
  735. package/dist/src/models/UpdateQuery.js.map +0 -1
  736. package/dist/src/models/ValueComponent.js +0 -379
  737. package/dist/src/models/ValueComponent.js.map +0 -1
  738. package/dist/src/models/ValuesQuery.js +0 -61
  739. package/dist/src/models/ValuesQuery.js.map +0 -1
  740. package/dist/src/parsers/AlterTableParser.js +0 -432
  741. package/dist/src/parsers/AlterTableParser.js.map +0 -1
  742. package/dist/src/parsers/CommandExpressionParser.js.map +0 -1
  743. package/dist/src/parsers/CommonTableParser.js.map +0 -1
  744. package/dist/src/parsers/CreateIndexParser.js.map +0 -1
  745. package/dist/src/parsers/CreateTableParser.js.map +0 -1
  746. package/dist/src/parsers/DeleteClauseParser.js.map +0 -1
  747. package/dist/src/parsers/DeleteQueryParser.js.map +0 -1
  748. package/dist/src/parsers/DropConstraintParser.js.map +0 -1
  749. package/dist/src/parsers/DropIndexParser.js.map +0 -1
  750. package/dist/src/parsers/DropTableParser.js.map +0 -1
  751. package/dist/src/parsers/FetchClauseParser.js.map +0 -1
  752. package/dist/src/parsers/ForClauseParser.js.map +0 -1
  753. package/dist/src/parsers/FromClauseParser.js.map +0 -1
  754. package/dist/src/parsers/FullNameParser.js.map +0 -1
  755. package/dist/src/parsers/FunctionExpressionParser.js +0 -491
  756. package/dist/src/parsers/FunctionExpressionParser.js.map +0 -1
  757. package/dist/src/parsers/GroupByParser.js.map +0 -1
  758. package/dist/src/parsers/HavingParser.js.map +0 -1
  759. package/dist/src/parsers/IdentifierDecorator.js.map +0 -1
  760. package/dist/src/parsers/IdentifierParser.js.map +0 -1
  761. package/dist/src/parsers/InsertQueryParser.js +0 -159
  762. package/dist/src/parsers/InsertQueryParser.js.map +0 -1
  763. package/dist/src/parsers/JoinClauseParser.js.map +0 -1
  764. package/dist/src/parsers/JoinOnClauseParser.js.map +0 -1
  765. package/dist/src/parsers/JoinUsingClauseParser.js.map +0 -1
  766. package/dist/src/parsers/KeywordParser.js.map +0 -1
  767. package/dist/src/parsers/LimitClauseParser.js.map +0 -1
  768. package/dist/src/parsers/LiteralParser.js.map +0 -1
  769. package/dist/src/parsers/MergeQueryParser.js.map +0 -1
  770. package/dist/src/parsers/OffsetClauseParser.js.map +0 -1
  771. package/dist/src/parsers/OrderByClauseParser.js.map +0 -1
  772. package/dist/src/parsers/OverExpressionParser.js.map +0 -1
  773. package/dist/src/parsers/ParameterDecorator.js.map +0 -1
  774. package/dist/src/parsers/ParameterExpressionParser.js.map +0 -1
  775. package/dist/src/parsers/ParenExpressionParser.js +0 -84
  776. package/dist/src/parsers/ParenExpressionParser.js.map +0 -1
  777. package/dist/src/parsers/ParseError.js.map +0 -1
  778. package/dist/src/parsers/PartitionByParser.js.map +0 -1
  779. package/dist/src/parsers/ReturningClauseParser.js +0 -78
  780. package/dist/src/parsers/ReturningClauseParser.js.map +0 -1
  781. package/dist/src/parsers/SelectClauseParser.js.map +0 -1
  782. package/dist/src/parsers/SelectQueryParser.js.map +0 -1
  783. package/dist/src/parsers/SetClauseParser.js.map +0 -1
  784. package/dist/src/parsers/SourceAliasExpressionParser.js.map +0 -1
  785. package/dist/src/parsers/SourceExpressionParser.js.map +0 -1
  786. package/dist/src/parsers/SourceParser.js.map +0 -1
  787. package/dist/src/parsers/SqlParser.js +0 -353
  788. package/dist/src/parsers/SqlParser.js.map +0 -1
  789. package/dist/src/parsers/SqlPrintTokenParser.js +0 -2938
  790. package/dist/src/parsers/SqlPrintTokenParser.js.map +0 -1
  791. package/dist/src/parsers/SqlTokenizer.js.map +0 -1
  792. package/dist/src/parsers/StringSpecifierExpressionParser.js.map +0 -1
  793. package/dist/src/parsers/UnaryExpressionParser.js.map +0 -1
  794. package/dist/src/parsers/UpdateClauseParser.js.map +0 -1
  795. package/dist/src/parsers/UpdateQueryParser.js.map +0 -1
  796. package/dist/src/parsers/UsingClauseParser.js.map +0 -1
  797. package/dist/src/parsers/ValueParser.js +0 -535
  798. package/dist/src/parsers/ValueParser.js.map +0 -1
  799. package/dist/src/parsers/ValuesQueryParser.js.map +0 -1
  800. package/dist/src/parsers/WhereClauseParser.js.map +0 -1
  801. package/dist/src/parsers/WindowClauseParser.js.map +0 -1
  802. package/dist/src/parsers/WindowExpressionParser.js.map +0 -1
  803. package/dist/src/parsers/WithClauseParser.js.map +0 -1
  804. package/dist/src/parsers/utils/LexemeCommentUtils.js.map +0 -1
  805. package/dist/src/reporting/models/DataFlowEdge.js.map +0 -1
  806. package/dist/src/reporting/models/DataFlowGraph.js.map +0 -1
  807. package/dist/src/reporting/models/DataFlowNode.js.map +0 -1
  808. package/dist/src/reporting/services/CTEHandler.js.map +0 -1
  809. package/dist/src/reporting/services/DataSourceHandler.js.map +0 -1
  810. package/dist/src/reporting/services/JoinHandler.js.map +0 -1
  811. package/dist/src/reporting/services/ProcessHandler.js.map +0 -1
  812. package/dist/src/tokenReaders/BaseTokenReader.js.map +0 -1
  813. package/dist/src/tokenReaders/CommandTokenReader.js +0 -215
  814. package/dist/src/tokenReaders/CommandTokenReader.js.map +0 -1
  815. package/dist/src/tokenReaders/EscapedIdentifierTokenReader.js.map +0 -1
  816. package/dist/src/tokenReaders/FunctionTokenReader.js.map +0 -1
  817. package/dist/src/tokenReaders/IdentifierTokenReader.js.map +0 -1
  818. package/dist/src/tokenReaders/LiteralTokenReader.js +0 -322
  819. package/dist/src/tokenReaders/LiteralTokenReader.js.map +0 -1
  820. package/dist/src/tokenReaders/OperatorTokenReader.js.map +0 -1
  821. package/dist/src/tokenReaders/ParameterTokenReader.js.map +0 -1
  822. package/dist/src/tokenReaders/StringSpecifierTokenReader.js.map +0 -1
  823. package/dist/src/tokenReaders/SymbolTokenReader.js.map +0 -1
  824. package/dist/src/tokenReaders/TokenReaderManager.js.map +0 -1
  825. package/dist/src/tokenReaders/TypeTokenReader.js.map +0 -1
  826. package/dist/src/transformers/AliasRenamer.js.map +0 -1
  827. package/dist/src/transformers/CTEBuilder.js.map +0 -1
  828. package/dist/src/transformers/CTECollector.js.map +0 -1
  829. package/dist/src/transformers/CTEComposer.js.map +0 -1
  830. package/dist/src/transformers/CTEDependencyAnalyzer.js.map +0 -1
  831. package/dist/src/transformers/CTEDependencyTracer.js.map +0 -1
  832. package/dist/src/transformers/CTEDisabler.js.map +0 -1
  833. package/dist/src/transformers/CTEInjector.js.map +0 -1
  834. package/dist/src/transformers/CTENormalizer.js.map +0 -1
  835. package/dist/src/transformers/CTEQueryDecomposer.js.map +0 -1
  836. package/dist/src/transformers/CTERenamer.js.map +0 -1
  837. package/dist/src/transformers/CTETableReferenceCollector.js.map +0 -1
  838. package/dist/src/transformers/ColumnReferenceCollector.js +0 -468
  839. package/dist/src/transformers/ColumnReferenceCollector.js.map +0 -1
  840. package/dist/src/transformers/DynamicQueryBuilder.js.map +0 -1
  841. package/dist/src/transformers/EnhancedJsonMapping.js.map +0 -1
  842. package/dist/src/transformers/FilterableItemCollector.js.map +0 -1
  843. package/dist/src/transformers/FormatOptionResolver.js.map +0 -1
  844. package/dist/src/transformers/Formatter.js.map +0 -1
  845. package/dist/src/transformers/InsertQuerySelectValuesConverter.js +0 -122
  846. package/dist/src/transformers/InsertQuerySelectValuesConverter.js.map +0 -1
  847. package/dist/src/transformers/JoinAggregationDecomposer.js.map +0 -1
  848. package/dist/src/transformers/JsonMappingConverter.js.map +0 -1
  849. package/dist/src/transformers/JsonMappingUnifier.js.map +0 -1
  850. package/dist/src/transformers/LinePrinter.js.map +0 -1
  851. package/dist/src/transformers/ModelDrivenJsonMapping.js.map +0 -1
  852. package/dist/src/transformers/OnelineFormattingHelper.js +0 -92
  853. package/dist/src/transformers/OnelineFormattingHelper.js.map +0 -1
  854. package/dist/src/transformers/ParameterCollector.js.map +0 -1
  855. package/dist/src/transformers/PostgresArrayEntityCteBuilder.js.map +0 -1
  856. package/dist/src/transformers/PostgresJsonQueryBuilder.js.map +0 -1
  857. package/dist/src/transformers/PostgresObjectEntityCteBuilder.js.map +0 -1
  858. package/dist/src/transformers/QueryBuilder.js +0 -633
  859. package/dist/src/transformers/QueryBuilder.js.map +0 -1
  860. package/dist/src/transformers/QueryFlowDiagramGenerator.js.map +0 -1
  861. package/dist/src/transformers/SchemaCollector.js.map +0 -1
  862. package/dist/src/transformers/SelectValueCollector.js.map +0 -1
  863. package/dist/src/transformers/SelectableColumnCollector.js.map +0 -1
  864. package/dist/src/transformers/SmartRenamer.js.map +0 -1
  865. package/dist/src/transformers/SqlFormatter.js.map +0 -1
  866. package/dist/src/transformers/SqlIdentifierRenamer.js.map +0 -1
  867. package/dist/src/transformers/SqlOutputToken.js.map +0 -1
  868. package/dist/src/transformers/SqlPaginationInjector.js.map +0 -1
  869. package/dist/src/transformers/SqlParamInjector.js.map +0 -1
  870. package/dist/src/transformers/SqlParameterBinder.js.map +0 -1
  871. package/dist/src/transformers/SqlPrinter.js +0 -1449
  872. package/dist/src/transformers/SqlPrinter.js.map +0 -1
  873. package/dist/src/transformers/SqlSortInjector.js.map +0 -1
  874. package/dist/src/transformers/TableSourceCollector.js +0 -435
  875. package/dist/src/transformers/TableSourceCollector.js.map +0 -1
  876. package/dist/src/transformers/TypeTransformationPostProcessor.js.map +0 -1
  877. package/dist/src/transformers/UpstreamSelectQueryFinder.js.map +0 -1
  878. package/dist/src/utils/CTERegionDetector.js.map +0 -1
  879. package/dist/src/utils/CommentEditor.js.map +0 -1
  880. package/dist/src/utils/CommentUtils.js.map +0 -1
  881. package/dist/src/utils/CursorContextAnalyzer.js.map +0 -1
  882. package/dist/src/utils/IntelliSenseApi.js.map +0 -1
  883. package/dist/src/utils/JsonSchemaValidator.js.map +0 -1
  884. package/dist/src/utils/KeywordCache.js.map +0 -1
  885. package/dist/src/utils/LexemeCursor.js.map +0 -1
  886. package/dist/src/utils/MultiQuerySplitter.js.map +0 -1
  887. package/dist/src/utils/OperatorPrecedence.js.map +0 -1
  888. package/dist/src/utils/ParameterDetector.js.map +0 -1
  889. package/dist/src/utils/ParameterHelper.js.map +0 -1
  890. package/dist/src/utils/ParameterRemover.js +0 -781
  891. package/dist/src/utils/ParameterRemover.js.map +0 -1
  892. package/dist/src/utils/ParserStringUtils.js.map +0 -1
  893. package/dist/src/utils/PositionAwareParser.js.map +0 -1
  894. package/dist/src/utils/SchemaManager.js.map +0 -1
  895. package/dist/src/utils/ScopeResolver.js.map +0 -1
  896. package/dist/src/utils/SqlSchemaValidator.js.map +0 -1
  897. package/dist/src/utils/TextPositionUtils.js.map +0 -1
  898. package/dist/src/utils/charLookupTable.js.map +0 -1
  899. package/dist/src/utils/stringUtils.js.map +0 -1
  900. package/dist/tsconfig.tsbuildinfo +0 -1
  901. /package/dist/esm/{src/formatters → formatters}/OriginalFormatRestorer.d.ts +0 -0
  902. /package/dist/esm/{src/formatters → formatters}/OriginalFormatRestorer.js +0 -0
  903. /package/dist/esm/{src/models → models}/BinarySelectQuery.d.ts +0 -0
  904. /package/dist/esm/{src/models → models}/BinarySelectQuery.js +0 -0
  905. /package/dist/esm/{src/models → models}/CTEError.d.ts +0 -0
  906. /package/dist/esm/{src/models → models}/CTEError.js +0 -0
  907. /package/dist/esm/{src/models → models}/CreateTableQuery.d.ts +0 -0
  908. /package/dist/esm/{src/models → models}/CreateTableQuery.js +0 -0
  909. /package/dist/esm/{src/models → models}/DeleteQuery.d.ts +0 -0
  910. /package/dist/esm/{src/models → models}/DeleteQuery.js +0 -0
  911. /package/dist/esm/{src/models → models}/FormattingLexeme.d.ts +0 -0
  912. /package/dist/esm/{src/models → models}/FormattingLexeme.js +0 -0
  913. /package/dist/{src → esm}/models/FormattingLexeme.js.map +0 -0
  914. /package/dist/esm/{src/models → models}/HintClause.d.ts +0 -0
  915. /package/dist/esm/{src/models → models}/HintClause.js +0 -0
  916. /package/dist/esm/{src/models → models}/KeywordTrie.d.ts +0 -0
  917. /package/dist/esm/{src/models → models}/KeywordTrie.js +0 -0
  918. /package/dist/esm/{src/models → models}/Lexeme.d.ts +0 -0
  919. /package/dist/esm/{src/models → models}/Lexeme.js +0 -0
  920. /package/dist/esm/{src/models → models}/MergeQuery.d.ts +0 -0
  921. /package/dist/esm/{src/models → models}/MergeQuery.js +0 -0
  922. /package/dist/esm/{src/models → models}/SelectQuery.d.ts +0 -0
  923. /package/dist/esm/{src/models → models}/SelectQuery.js +0 -0
  924. /package/dist/esm/{src/models → models}/SimpleSelectQuery.d.ts +0 -0
  925. /package/dist/esm/{src/models → models}/SimpleSelectQuery.js +0 -0
  926. /package/dist/esm/{src/models → models}/SqlComponent.d.ts +0 -0
  927. /package/dist/esm/{src/models → models}/SqlComponent.js +0 -0
  928. /package/dist/esm/{src/models → models}/UpdateQuery.d.ts +0 -0
  929. /package/dist/esm/{src/models → models}/UpdateQuery.js +0 -0
  930. /package/dist/esm/{src/parsers → parsers}/AlterTableParser.d.ts +0 -0
  931. /package/dist/esm/{src/parsers → parsers}/CommandExpressionParser.d.ts +0 -0
  932. /package/dist/esm/{src/parsers → parsers}/CommandExpressionParser.js +0 -0
  933. /package/dist/esm/{src/parsers → parsers}/CommonTableParser.d.ts +0 -0
  934. /package/dist/esm/{src/parsers → parsers}/CommonTableParser.js +0 -0
  935. /package/dist/esm/{src/parsers → parsers}/CreateIndexParser.d.ts +0 -0
  936. /package/dist/esm/{src/parsers → parsers}/CreateIndexParser.js +0 -0
  937. /package/dist/esm/{src/parsers → parsers}/CreateTableParser.d.ts +0 -0
  938. /package/dist/esm/{src/parsers → parsers}/CreateTableParser.js +0 -0
  939. /package/dist/esm/{src/parsers → parsers}/DeleteClauseParser.d.ts +0 -0
  940. /package/dist/esm/{src/parsers → parsers}/DeleteClauseParser.js +0 -0
  941. /package/dist/esm/{src/parsers → parsers}/DeleteQueryParser.d.ts +0 -0
  942. /package/dist/esm/{src/parsers → parsers}/DeleteQueryParser.js +0 -0
  943. /package/dist/esm/{src/parsers → parsers}/DropConstraintParser.d.ts +0 -0
  944. /package/dist/esm/{src/parsers → parsers}/DropConstraintParser.js +0 -0
  945. /package/dist/esm/{src/parsers → parsers}/DropIndexParser.d.ts +0 -0
  946. /package/dist/esm/{src/parsers → parsers}/DropIndexParser.js +0 -0
  947. /package/dist/esm/{src/parsers → parsers}/DropTableParser.d.ts +0 -0
  948. /package/dist/esm/{src/parsers → parsers}/DropTableParser.js +0 -0
  949. /package/dist/esm/{src/parsers → parsers}/FetchClauseParser.d.ts +0 -0
  950. /package/dist/esm/{src/parsers → parsers}/FetchClauseParser.js +0 -0
  951. /package/dist/esm/{src/parsers → parsers}/ForClauseParser.d.ts +0 -0
  952. /package/dist/esm/{src/parsers → parsers}/ForClauseParser.js +0 -0
  953. /package/dist/esm/{src/parsers → parsers}/FromClauseParser.d.ts +0 -0
  954. /package/dist/esm/{src/parsers → parsers}/FromClauseParser.js +0 -0
  955. /package/dist/esm/{src/parsers → parsers}/FullNameParser.d.ts +0 -0
  956. /package/dist/esm/{src/parsers → parsers}/FullNameParser.js +0 -0
  957. /package/dist/esm/{src/parsers → parsers}/GroupByParser.d.ts +0 -0
  958. /package/dist/esm/{src/parsers → parsers}/GroupByParser.js +0 -0
  959. /package/dist/esm/{src/parsers → parsers}/HavingParser.d.ts +0 -0
  960. /package/dist/esm/{src/parsers → parsers}/HavingParser.js +0 -0
  961. /package/dist/esm/{src/parsers → parsers}/IdentifierDecorator.d.ts +0 -0
  962. /package/dist/esm/{src/parsers → parsers}/IdentifierDecorator.js +0 -0
  963. /package/dist/esm/{src/parsers → parsers}/IdentifierParser.d.ts +0 -0
  964. /package/dist/esm/{src/parsers → parsers}/IdentifierParser.js +0 -0
  965. /package/dist/esm/{src/parsers → parsers}/InsertQueryParser.d.ts +0 -0
  966. /package/dist/esm/{src/parsers → parsers}/JoinClauseParser.d.ts +0 -0
  967. /package/dist/esm/{src/parsers → parsers}/JoinClauseParser.js +0 -0
  968. /package/dist/esm/{src/parsers → parsers}/JoinOnClauseParser.d.ts +0 -0
  969. /package/dist/esm/{src/parsers → parsers}/JoinOnClauseParser.js +0 -0
  970. /package/dist/esm/{src/parsers → parsers}/JoinUsingClauseParser.d.ts +0 -0
  971. /package/dist/esm/{src/parsers → parsers}/JoinUsingClauseParser.js +0 -0
  972. /package/dist/esm/{src/parsers → parsers}/KeywordParser.d.ts +0 -0
  973. /package/dist/esm/{src/parsers → parsers}/KeywordParser.js +0 -0
  974. /package/dist/esm/{src/parsers → parsers}/LimitClauseParser.d.ts +0 -0
  975. /package/dist/esm/{src/parsers → parsers}/LimitClauseParser.js +0 -0
  976. /package/dist/esm/{src/parsers → parsers}/LiteralParser.d.ts +0 -0
  977. /package/dist/esm/{src/parsers → parsers}/LiteralParser.js +0 -0
  978. /package/dist/esm/{src/parsers → parsers}/MergeQueryParser.d.ts +0 -0
  979. /package/dist/esm/{src/parsers → parsers}/MergeQueryParser.js +0 -0
  980. /package/dist/esm/{src/parsers → parsers}/OffsetClauseParser.d.ts +0 -0
  981. /package/dist/esm/{src/parsers → parsers}/OffsetClauseParser.js +0 -0
  982. /package/dist/esm/{src/parsers → parsers}/OrderByClauseParser.d.ts +0 -0
  983. /package/dist/esm/{src/parsers → parsers}/OrderByClauseParser.js +0 -0
  984. /package/dist/esm/{src/parsers → parsers}/OverExpressionParser.d.ts +0 -0
  985. /package/dist/esm/{src/parsers → parsers}/OverExpressionParser.js +0 -0
  986. /package/dist/esm/{src/parsers → parsers}/ParameterDecorator.d.ts +0 -0
  987. /package/dist/esm/{src/parsers → parsers}/ParameterDecorator.js +0 -0
  988. /package/dist/esm/{src/parsers → parsers}/ParameterExpressionParser.d.ts +0 -0
  989. /package/dist/esm/{src/parsers → parsers}/ParameterExpressionParser.js +0 -0
  990. /package/dist/esm/{src/parsers → parsers}/ParenExpressionParser.d.ts +0 -0
  991. /package/dist/esm/{src/parsers → parsers}/ParseError.d.ts +0 -0
  992. /package/dist/esm/{src/parsers → parsers}/ParseError.js +0 -0
  993. /package/dist/esm/{src/parsers → parsers}/PartitionByParser.d.ts +0 -0
  994. /package/dist/esm/{src/parsers → parsers}/PartitionByParser.js +0 -0
  995. /package/dist/esm/{src/parsers → parsers}/ReturningClauseParser.d.ts +0 -0
  996. /package/dist/esm/{src/parsers → parsers}/SelectClauseParser.d.ts +0 -0
  997. /package/dist/esm/{src/parsers → parsers}/SelectClauseParser.js +0 -0
  998. /package/dist/esm/{src/parsers → parsers}/SelectQueryParser.d.ts +0 -0
  999. /package/dist/esm/{src/parsers → parsers}/SelectQueryParser.js +0 -0
  1000. /package/dist/esm/{src/parsers → parsers}/SetClauseParser.d.ts +0 -0
  1001. /package/dist/esm/{src/parsers → parsers}/SetClauseParser.js +0 -0
  1002. /package/dist/esm/{src/parsers → parsers}/SourceAliasExpressionParser.d.ts +0 -0
  1003. /package/dist/esm/{src/parsers → parsers}/SourceAliasExpressionParser.js +0 -0
  1004. /package/dist/esm/{src/parsers → parsers}/SourceExpressionParser.d.ts +0 -0
  1005. /package/dist/esm/{src/parsers → parsers}/SourceExpressionParser.js +0 -0
  1006. /package/dist/esm/{src/parsers → parsers}/SourceParser.d.ts +0 -0
  1007. /package/dist/esm/{src/parsers → parsers}/SourceParser.js +0 -0
  1008. /package/dist/esm/{src/parsers → parsers}/SqlTokenizer.d.ts +0 -0
  1009. /package/dist/esm/{src/parsers → parsers}/SqlTokenizer.js +0 -0
  1010. /package/dist/esm/{src/parsers → parsers}/StringSpecifierExpressionParser.d.ts +0 -0
  1011. /package/dist/esm/{src/parsers → parsers}/StringSpecifierExpressionParser.js +0 -0
  1012. /package/dist/esm/{src/parsers → parsers}/UnaryExpressionParser.d.ts +0 -0
  1013. /package/dist/esm/{src/parsers → parsers}/UnaryExpressionParser.js +0 -0
  1014. /package/dist/esm/{src/parsers → parsers}/UpdateClauseParser.d.ts +0 -0
  1015. /package/dist/esm/{src/parsers → parsers}/UpdateClauseParser.js +0 -0
  1016. /package/dist/esm/{src/parsers → parsers}/UpdateQueryParser.d.ts +0 -0
  1017. /package/dist/esm/{src/parsers → parsers}/UpdateQueryParser.js +0 -0
  1018. /package/dist/esm/{src/parsers → parsers}/UsingClauseParser.d.ts +0 -0
  1019. /package/dist/esm/{src/parsers → parsers}/UsingClauseParser.js +0 -0
  1020. /package/dist/esm/{src/parsers → parsers}/ValueParser.d.ts +0 -0
  1021. /package/dist/esm/{src/parsers → parsers}/ValuesQueryParser.d.ts +0 -0
  1022. /package/dist/esm/{src/parsers → parsers}/ValuesQueryParser.js +0 -0
  1023. /package/dist/esm/{src/parsers → parsers}/WhereClauseParser.d.ts +0 -0
  1024. /package/dist/esm/{src/parsers → parsers}/WhereClauseParser.js +0 -0
  1025. /package/dist/esm/{src/parsers → parsers}/WindowClauseParser.d.ts +0 -0
  1026. /package/dist/esm/{src/parsers → parsers}/WindowClauseParser.js +0 -0
  1027. /package/dist/esm/{src/parsers → parsers}/WindowExpressionParser.d.ts +0 -0
  1028. /package/dist/esm/{src/parsers → parsers}/WindowExpressionParser.js +0 -0
  1029. /package/dist/esm/{src/parsers → parsers}/WithClauseParser.d.ts +0 -0
  1030. /package/dist/esm/{src/parsers → parsers}/WithClauseParser.js +0 -0
  1031. /package/dist/esm/{src/parsers → parsers}/utils/LexemeCommentUtils.d.ts +0 -0
  1032. /package/dist/esm/{src/parsers → parsers}/utils/LexemeCommentUtils.js +0 -0
  1033. /package/dist/esm/{src/reporting → reporting}/models/DataFlowEdge.d.ts +0 -0
  1034. /package/dist/esm/{src/reporting → reporting}/models/DataFlowEdge.js +0 -0
  1035. /package/dist/esm/{src/reporting → reporting}/models/DataFlowGraph.d.ts +0 -0
  1036. /package/dist/esm/{src/reporting → reporting}/models/DataFlowGraph.js +0 -0
  1037. /package/dist/esm/{src/reporting → reporting}/models/DataFlowNode.d.ts +0 -0
  1038. /package/dist/esm/{src/reporting → reporting}/models/DataFlowNode.js +0 -0
  1039. /package/dist/esm/{src/reporting → reporting}/services/CTEHandler.d.ts +0 -0
  1040. /package/dist/esm/{src/reporting → reporting}/services/CTEHandler.js +0 -0
  1041. /package/dist/esm/{src/reporting → reporting}/services/DataSourceHandler.d.ts +0 -0
  1042. /package/dist/esm/{src/reporting → reporting}/services/DataSourceHandler.js +0 -0
  1043. /package/dist/esm/{src/reporting → reporting}/services/JoinHandler.d.ts +0 -0
  1044. /package/dist/esm/{src/reporting → reporting}/services/JoinHandler.js +0 -0
  1045. /package/dist/esm/{src/reporting → reporting}/services/ProcessHandler.d.ts +0 -0
  1046. /package/dist/esm/{src/reporting → reporting}/services/ProcessHandler.js +0 -0
  1047. /package/dist/esm/{src/tokenReaders → tokenReaders}/BaseTokenReader.d.ts +0 -0
  1048. /package/dist/esm/{src/tokenReaders → tokenReaders}/BaseTokenReader.js +0 -0
  1049. /package/dist/esm/{src/tokenReaders → tokenReaders}/CommandTokenReader.d.ts +0 -0
  1050. /package/dist/esm/{src/tokenReaders → tokenReaders}/EscapedIdentifierTokenReader.d.ts +0 -0
  1051. /package/dist/esm/{src/tokenReaders → tokenReaders}/EscapedIdentifierTokenReader.js +0 -0
  1052. /package/dist/esm/{src/tokenReaders → tokenReaders}/FunctionTokenReader.d.ts +0 -0
  1053. /package/dist/esm/{src/tokenReaders → tokenReaders}/FunctionTokenReader.js +0 -0
  1054. /package/dist/esm/{src/tokenReaders → tokenReaders}/IdentifierTokenReader.d.ts +0 -0
  1055. /package/dist/esm/{src/tokenReaders → tokenReaders}/IdentifierTokenReader.js +0 -0
  1056. /package/dist/esm/{src/tokenReaders → tokenReaders}/LiteralTokenReader.d.ts +0 -0
  1057. /package/dist/esm/{src/tokenReaders → tokenReaders}/OperatorTokenReader.d.ts +0 -0
  1058. /package/dist/esm/{src/tokenReaders → tokenReaders}/OperatorTokenReader.js +0 -0
  1059. /package/dist/esm/{src/tokenReaders → tokenReaders}/ParameterTokenReader.d.ts +0 -0
  1060. /package/dist/esm/{src/tokenReaders → tokenReaders}/ParameterTokenReader.js +0 -0
  1061. /package/dist/esm/{src/tokenReaders → tokenReaders}/StringSpecifierTokenReader.d.ts +0 -0
  1062. /package/dist/esm/{src/tokenReaders → tokenReaders}/StringSpecifierTokenReader.js +0 -0
  1063. /package/dist/esm/{src/tokenReaders → tokenReaders}/SymbolTokenReader.d.ts +0 -0
  1064. /package/dist/esm/{src/tokenReaders → tokenReaders}/SymbolTokenReader.js +0 -0
  1065. /package/dist/esm/{src/tokenReaders → tokenReaders}/TokenReaderManager.d.ts +0 -0
  1066. /package/dist/esm/{src/tokenReaders → tokenReaders}/TokenReaderManager.js +0 -0
  1067. /package/dist/esm/{src/tokenReaders → tokenReaders}/TypeTokenReader.d.ts +0 -0
  1068. /package/dist/esm/{src/tokenReaders → tokenReaders}/TypeTokenReader.js +0 -0
  1069. /package/dist/esm/{src/transformers → transformers}/AliasRenamer.d.ts +0 -0
  1070. /package/dist/esm/{src/transformers → transformers}/AliasRenamer.js +0 -0
  1071. /package/dist/esm/{src/transformers → transformers}/CTEBuilder.d.ts +0 -0
  1072. /package/dist/esm/{src/transformers → transformers}/CTEBuilder.js +0 -0
  1073. /package/dist/esm/{src/transformers → transformers}/CTECollector.d.ts +0 -0
  1074. /package/dist/esm/{src/transformers → transformers}/CTECollector.js +0 -0
  1075. /package/dist/esm/{src/transformers → transformers}/CTEComposer.d.ts +0 -0
  1076. /package/dist/esm/{src/transformers → transformers}/CTEComposer.js +0 -0
  1077. /package/dist/esm/{src/transformers → transformers}/CTEDependencyAnalyzer.d.ts +0 -0
  1078. /package/dist/esm/{src/transformers → transformers}/CTEDependencyAnalyzer.js +0 -0
  1079. /package/dist/esm/{src/transformers → transformers}/CTEDependencyTracer.d.ts +0 -0
  1080. /package/dist/esm/{src/transformers → transformers}/CTEDependencyTracer.js +0 -0
  1081. /package/dist/esm/{src/transformers → transformers}/CTEDisabler.d.ts +0 -0
  1082. /package/dist/esm/{src/transformers → transformers}/CTEDisabler.js +0 -0
  1083. /package/dist/esm/{src/transformers → transformers}/CTEInjector.d.ts +0 -0
  1084. /package/dist/esm/{src/transformers → transformers}/CTEInjector.js +0 -0
  1085. /package/dist/esm/{src/transformers → transformers}/CTENormalizer.d.ts +0 -0
  1086. /package/dist/esm/{src/transformers → transformers}/CTENormalizer.js +0 -0
  1087. /package/dist/esm/{src/transformers → transformers}/CTEQueryDecomposer.d.ts +0 -0
  1088. /package/dist/esm/{src/transformers → transformers}/CTEQueryDecomposer.js +0 -0
  1089. /package/dist/esm/{src/transformers → transformers}/CTERenamer.d.ts +0 -0
  1090. /package/dist/esm/{src/transformers → transformers}/CTERenamer.js +0 -0
  1091. /package/dist/esm/{src/transformers → transformers}/CTETableReferenceCollector.d.ts +0 -0
  1092. /package/dist/esm/{src/transformers → transformers}/CTETableReferenceCollector.js +0 -0
  1093. /package/dist/esm/{src/transformers → transformers}/ColumnReferenceCollector.d.ts +0 -0
  1094. /package/dist/esm/{src/transformers → transformers}/DynamicQueryBuilder.d.ts +0 -0
  1095. /package/dist/esm/{src/transformers → transformers}/DynamicQueryBuilder.js +0 -0
  1096. /package/dist/esm/{src/transformers → transformers}/EnhancedJsonMapping.d.ts +0 -0
  1097. /package/dist/esm/{src/transformers → transformers}/EnhancedJsonMapping.js +0 -0
  1098. /package/dist/esm/{src/transformers → transformers}/FilterableItemCollector.d.ts +0 -0
  1099. /package/dist/esm/{src/transformers → transformers}/FilterableItemCollector.js +0 -0
  1100. /package/dist/esm/{src/transformers → transformers}/FormatOptionResolver.d.ts +0 -0
  1101. /package/dist/esm/{src/transformers → transformers}/FormatOptionResolver.js +0 -0
  1102. /package/dist/esm/{src/transformers → transformers}/Formatter.d.ts +0 -0
  1103. /package/dist/esm/{src/transformers → transformers}/Formatter.js +0 -0
  1104. /package/dist/esm/{src/transformers → transformers}/InsertQuerySelectValuesConverter.d.ts +0 -0
  1105. /package/dist/esm/{src/transformers → transformers}/JoinAggregationDecomposer.d.ts +0 -0
  1106. /package/dist/esm/{src/transformers → transformers}/JoinAggregationDecomposer.js +0 -0
  1107. /package/dist/esm/{src/transformers → transformers}/JsonMappingConverter.d.ts +0 -0
  1108. /package/dist/esm/{src/transformers → transformers}/JsonMappingConverter.js +0 -0
  1109. /package/dist/esm/{src/transformers → transformers}/JsonMappingUnifier.d.ts +0 -0
  1110. /package/dist/esm/{src/transformers → transformers}/JsonMappingUnifier.js +0 -0
  1111. /package/dist/esm/{src/transformers → transformers}/LinePrinter.d.ts +0 -0
  1112. /package/dist/esm/{src/transformers → transformers}/LinePrinter.js +0 -0
  1113. /package/dist/esm/{src/transformers → transformers}/ModelDrivenJsonMapping.d.ts +0 -0
  1114. /package/dist/esm/{src/transformers → transformers}/ModelDrivenJsonMapping.js +0 -0
  1115. /package/dist/esm/{src/transformers → transformers}/OnelineFormattingHelper.d.ts +0 -0
  1116. /package/dist/esm/{src/transformers → transformers}/ParameterCollector.d.ts +0 -0
  1117. /package/dist/esm/{src/transformers → transformers}/ParameterCollector.js +0 -0
  1118. /package/dist/esm/{src/transformers → transformers}/PostgresArrayEntityCteBuilder.d.ts +0 -0
  1119. /package/dist/esm/{src/transformers → transformers}/PostgresArrayEntityCteBuilder.js +0 -0
  1120. /package/dist/esm/{src/transformers → transformers}/PostgresJsonQueryBuilder.d.ts +0 -0
  1121. /package/dist/esm/{src/transformers → transformers}/PostgresJsonQueryBuilder.js +0 -0
  1122. /package/dist/esm/{src/transformers → transformers}/PostgresObjectEntityCteBuilder.d.ts +0 -0
  1123. /package/dist/esm/{src/transformers → transformers}/PostgresObjectEntityCteBuilder.js +0 -0
  1124. /package/dist/esm/{src/transformers → transformers}/QueryFlowDiagramGenerator.d.ts +0 -0
  1125. /package/dist/esm/{src/transformers → transformers}/QueryFlowDiagramGenerator.js +0 -0
  1126. /package/dist/esm/{src/transformers → transformers}/SchemaCollector.d.ts +0 -0
  1127. /package/dist/esm/{src/transformers → transformers}/SchemaCollector.js +0 -0
  1128. /package/dist/esm/{src/transformers → transformers}/SelectValueCollector.d.ts +0 -0
  1129. /package/dist/esm/{src/transformers → transformers}/SelectValueCollector.js +0 -0
  1130. /package/dist/esm/{src/transformers → transformers}/SelectableColumnCollector.d.ts +0 -0
  1131. /package/dist/esm/{src/transformers → transformers}/SelectableColumnCollector.js +0 -0
  1132. /package/dist/esm/{src/transformers → transformers}/SmartRenamer.d.ts +0 -0
  1133. /package/dist/esm/{src/transformers → transformers}/SmartRenamer.js +0 -0
  1134. /package/dist/esm/{src/transformers → transformers}/SqlFormatter.d.ts +0 -0
  1135. /package/dist/esm/{src/transformers → transformers}/SqlFormatter.js +0 -0
  1136. /package/dist/esm/{src/transformers → transformers}/SqlIdentifierRenamer.d.ts +0 -0
  1137. /package/dist/esm/{src/transformers → transformers}/SqlIdentifierRenamer.js +0 -0
  1138. /package/dist/esm/{src/transformers → transformers}/SqlOutputToken.d.ts +0 -0
  1139. /package/dist/esm/{src/transformers → transformers}/SqlOutputToken.js +0 -0
  1140. /package/dist/esm/{src/transformers → transformers}/SqlPaginationInjector.d.ts +0 -0
  1141. /package/dist/esm/{src/transformers → transformers}/SqlPaginationInjector.js +0 -0
  1142. /package/dist/esm/{src/transformers → transformers}/SqlParamInjector.d.ts +0 -0
  1143. /package/dist/esm/{src/transformers → transformers}/SqlParamInjector.js +0 -0
  1144. /package/dist/esm/{src/transformers → transformers}/SqlParameterBinder.d.ts +0 -0
  1145. /package/dist/esm/{src/transformers → transformers}/SqlParameterBinder.js +0 -0
  1146. /package/dist/esm/{src/transformers → transformers}/SqlSortInjector.d.ts +0 -0
  1147. /package/dist/esm/{src/transformers → transformers}/SqlSortInjector.js +0 -0
  1148. /package/dist/esm/{src/transformers → transformers}/TableColumnResolver.d.ts +0 -0
  1149. /package/dist/esm/{src/transformers → transformers}/TableColumnResolver.js +0 -0
  1150. /package/dist/{src → esm}/transformers/TableColumnResolver.js.map +0 -0
  1151. /package/dist/esm/{src/transformers → transformers}/TableSourceCollector.d.ts +0 -0
  1152. /package/dist/esm/{src/transformers → transformers}/TypeTransformationPostProcessor.d.ts +0 -0
  1153. /package/dist/esm/{src/transformers → transformers}/TypeTransformationPostProcessor.js +0 -0
  1154. /package/dist/esm/{src/transformers → transformers}/UpstreamSelectQueryFinder.d.ts +0 -0
  1155. /package/dist/esm/{src/transformers → transformers}/UpstreamSelectQueryFinder.js +0 -0
  1156. /package/dist/esm/{src/types → types}/Formatting.d.ts +0 -0
  1157. /package/dist/esm/{src/types → types}/Formatting.js +0 -0
  1158. /package/dist/{src → esm}/types/Formatting.js.map +0 -0
  1159. /package/dist/esm/{src/utils → utils}/CTERegionDetector.d.ts +0 -0
  1160. /package/dist/esm/{src/utils → utils}/CTERegionDetector.js +0 -0
  1161. /package/dist/esm/{src/utils → utils}/CommentEditor.d.ts +0 -0
  1162. /package/dist/esm/{src/utils → utils}/CommentEditor.js +0 -0
  1163. /package/dist/esm/{src/utils → utils}/CommentUtils.d.ts +0 -0
  1164. /package/dist/esm/{src/utils → utils}/CommentUtils.js +0 -0
  1165. /package/dist/esm/{src/utils → utils}/CursorContextAnalyzer.d.ts +0 -0
  1166. /package/dist/esm/{src/utils → utils}/CursorContextAnalyzer.js +0 -0
  1167. /package/dist/esm/{src/utils → utils}/IntelliSenseApi.d.ts +0 -0
  1168. /package/dist/esm/{src/utils → utils}/IntelliSenseApi.js +0 -0
  1169. /package/dist/esm/{src/utils → utils}/JsonSchemaValidator.d.ts +0 -0
  1170. /package/dist/esm/{src/utils → utils}/JsonSchemaValidator.js +0 -0
  1171. /package/dist/esm/{src/utils → utils}/KeywordCache.d.ts +0 -0
  1172. /package/dist/esm/{src/utils → utils}/KeywordCache.js +0 -0
  1173. /package/dist/esm/{src/utils → utils}/LexemeCursor.d.ts +0 -0
  1174. /package/dist/esm/{src/utils → utils}/LexemeCursor.js +0 -0
  1175. /package/dist/esm/{src/utils → utils}/MultiQuerySplitter.d.ts +0 -0
  1176. /package/dist/esm/{src/utils → utils}/MultiQuerySplitter.js +0 -0
  1177. /package/dist/esm/{src/utils → utils}/OperatorPrecedence.d.ts +0 -0
  1178. /package/dist/esm/{src/utils → utils}/OperatorPrecedence.js +0 -0
  1179. /package/dist/esm/{src/utils → utils}/ParameterDetector.d.ts +0 -0
  1180. /package/dist/esm/{src/utils → utils}/ParameterDetector.js +0 -0
  1181. /package/dist/esm/{src/utils → utils}/ParameterHelper.d.ts +0 -0
  1182. /package/dist/esm/{src/utils → utils}/ParameterHelper.js +0 -0
  1183. /package/dist/esm/{src/utils → utils}/ParameterRemover.d.ts +0 -0
  1184. /package/dist/esm/{src/utils → utils}/ParserStringUtils.d.ts +0 -0
  1185. /package/dist/esm/{src/utils → utils}/ParserStringUtils.js +0 -0
  1186. /package/dist/esm/{src/utils → utils}/PositionAwareParser.d.ts +0 -0
  1187. /package/dist/esm/{src/utils → utils}/PositionAwareParser.js +0 -0
  1188. /package/dist/esm/{src/utils → utils}/SchemaManager.d.ts +0 -0
  1189. /package/dist/esm/{src/utils → utils}/SchemaManager.js +0 -0
  1190. /package/dist/esm/{src/utils → utils}/ScopeResolver.d.ts +0 -0
  1191. /package/dist/esm/{src/utils → utils}/ScopeResolver.js +0 -0
  1192. /package/dist/esm/{src/utils → utils}/SqlSchemaValidator.d.ts +0 -0
  1193. /package/dist/esm/{src/utils → utils}/SqlSchemaValidator.js +0 -0
  1194. /package/dist/esm/{src/utils → utils}/TextPositionUtils.d.ts +0 -0
  1195. /package/dist/esm/{src/utils → utils}/TextPositionUtils.js +0 -0
  1196. /package/dist/esm/{src/utils → utils}/charLookupTable.d.ts +0 -0
  1197. /package/dist/esm/{src/utils → utils}/charLookupTable.js +0 -0
  1198. /package/dist/esm/{src/utils → utils}/stringUtils.d.ts +0 -0
  1199. /package/dist/esm/{src/utils → utils}/stringUtils.js +0 -0
  1200. /package/dist/{src/formatters → formatters}/OriginalFormatRestorer.js +0 -0
  1201. /package/dist/{src/models → models}/BinarySelectQuery.js +0 -0
  1202. /package/dist/{src/models → models}/CTEError.js +0 -0
  1203. /package/dist/{src/models → models}/CreateTableQuery.js +0 -0
  1204. /package/dist/{src/models → models}/DeleteQuery.js +0 -0
  1205. /package/dist/{src/models → models}/FormattingLexeme.js +0 -0
  1206. /package/dist/{src/models → models}/HintClause.js +0 -0
  1207. /package/dist/{src/models → models}/KeywordTrie.js +0 -0
  1208. /package/dist/{src/models → models}/Lexeme.js +0 -0
  1209. /package/dist/{src/models → models}/MergeQuery.js +0 -0
  1210. /package/dist/{src/models → models}/SelectQuery.js +0 -0
  1211. /package/dist/{src/models → models}/SimpleSelectQuery.js +0 -0
  1212. /package/dist/{src/models → models}/SqlComponent.js +0 -0
  1213. /package/dist/{src/models → models}/UpdateQuery.js +0 -0
  1214. /package/dist/{src/parsers → parsers}/CommandExpressionParser.js +0 -0
  1215. /package/dist/{src/parsers → parsers}/CommonTableParser.js +0 -0
  1216. /package/dist/{src/parsers → parsers}/CreateIndexParser.js +0 -0
  1217. /package/dist/{src/parsers → parsers}/CreateTableParser.js +0 -0
  1218. /package/dist/{src/parsers → parsers}/DeleteClauseParser.js +0 -0
  1219. /package/dist/{src/parsers → parsers}/DeleteQueryParser.js +0 -0
  1220. /package/dist/{src/parsers → parsers}/DropConstraintParser.js +0 -0
  1221. /package/dist/{src/parsers → parsers}/DropIndexParser.js +0 -0
  1222. /package/dist/{src/parsers → parsers}/DropTableParser.js +0 -0
  1223. /package/dist/{src/parsers → parsers}/FetchClauseParser.js +0 -0
  1224. /package/dist/{src/parsers → parsers}/ForClauseParser.js +0 -0
  1225. /package/dist/{src/parsers → parsers}/FromClauseParser.js +0 -0
  1226. /package/dist/{src/parsers → parsers}/FullNameParser.js +0 -0
  1227. /package/dist/{src/parsers → parsers}/GroupByParser.js +0 -0
  1228. /package/dist/{src/parsers → parsers}/HavingParser.js +0 -0
  1229. /package/dist/{src/parsers → parsers}/IdentifierDecorator.js +0 -0
  1230. /package/dist/{src/parsers → parsers}/IdentifierParser.js +0 -0
  1231. /package/dist/{src/parsers → parsers}/JoinClauseParser.js +0 -0
  1232. /package/dist/{src/parsers → parsers}/JoinOnClauseParser.js +0 -0
  1233. /package/dist/{src/parsers → parsers}/JoinUsingClauseParser.js +0 -0
  1234. /package/dist/{src/parsers → parsers}/KeywordParser.js +0 -0
  1235. /package/dist/{src/parsers → parsers}/LimitClauseParser.js +0 -0
  1236. /package/dist/{src/parsers → parsers}/LiteralParser.js +0 -0
  1237. /package/dist/{src/parsers → parsers}/MergeQueryParser.js +0 -0
  1238. /package/dist/{src/parsers → parsers}/OffsetClauseParser.js +0 -0
  1239. /package/dist/{src/parsers → parsers}/OrderByClauseParser.js +0 -0
  1240. /package/dist/{src/parsers → parsers}/OverExpressionParser.js +0 -0
  1241. /package/dist/{src/parsers → parsers}/ParameterDecorator.js +0 -0
  1242. /package/dist/{src/parsers → parsers}/ParameterExpressionParser.js +0 -0
  1243. /package/dist/{src/parsers → parsers}/ParseError.js +0 -0
  1244. /package/dist/{src/parsers → parsers}/PartitionByParser.js +0 -0
  1245. /package/dist/{src/parsers → parsers}/SelectClauseParser.js +0 -0
  1246. /package/dist/{src/parsers → parsers}/SelectQueryParser.js +0 -0
  1247. /package/dist/{src/parsers → parsers}/SetClauseParser.js +0 -0
  1248. /package/dist/{src/parsers → parsers}/SourceAliasExpressionParser.js +0 -0
  1249. /package/dist/{src/parsers → parsers}/SourceExpressionParser.js +0 -0
  1250. /package/dist/{src/parsers → parsers}/SourceParser.js +0 -0
  1251. /package/dist/{src/parsers → parsers}/SqlTokenizer.js +0 -0
  1252. /package/dist/{src/parsers → parsers}/StringSpecifierExpressionParser.js +0 -0
  1253. /package/dist/{src/parsers → parsers}/UnaryExpressionParser.js +0 -0
  1254. /package/dist/{src/parsers → parsers}/UpdateClauseParser.js +0 -0
  1255. /package/dist/{src/parsers → parsers}/UpdateQueryParser.js +0 -0
  1256. /package/dist/{src/parsers → parsers}/UsingClauseParser.js +0 -0
  1257. /package/dist/{src/parsers → parsers}/ValuesQueryParser.js +0 -0
  1258. /package/dist/{src/parsers → parsers}/WhereClauseParser.js +0 -0
  1259. /package/dist/{src/parsers → parsers}/WindowClauseParser.js +0 -0
  1260. /package/dist/{src/parsers → parsers}/WindowExpressionParser.js +0 -0
  1261. /package/dist/{src/parsers → parsers}/WithClauseParser.js +0 -0
  1262. /package/dist/{src/parsers → parsers}/utils/LexemeCommentUtils.js +0 -0
  1263. /package/dist/{src/reporting → reporting}/models/DataFlowEdge.js +0 -0
  1264. /package/dist/{src/reporting → reporting}/models/DataFlowGraph.js +0 -0
  1265. /package/dist/{src/reporting → reporting}/models/DataFlowNode.js +0 -0
  1266. /package/dist/{src/reporting → reporting}/services/CTEHandler.js +0 -0
  1267. /package/dist/{src/reporting → reporting}/services/DataSourceHandler.js +0 -0
  1268. /package/dist/{src/reporting → reporting}/services/JoinHandler.js +0 -0
  1269. /package/dist/{src/reporting → reporting}/services/ProcessHandler.js +0 -0
  1270. /package/dist/{src/tokenReaders → tokenReaders}/BaseTokenReader.js +0 -0
  1271. /package/dist/{src/tokenReaders → tokenReaders}/EscapedIdentifierTokenReader.js +0 -0
  1272. /package/dist/{src/tokenReaders → tokenReaders}/FunctionTokenReader.js +0 -0
  1273. /package/dist/{src/tokenReaders → tokenReaders}/IdentifierTokenReader.js +0 -0
  1274. /package/dist/{src/tokenReaders → tokenReaders}/OperatorTokenReader.js +0 -0
  1275. /package/dist/{src/tokenReaders → tokenReaders}/ParameterTokenReader.js +0 -0
  1276. /package/dist/{src/tokenReaders → tokenReaders}/StringSpecifierTokenReader.js +0 -0
  1277. /package/dist/{src/tokenReaders → tokenReaders}/SymbolTokenReader.js +0 -0
  1278. /package/dist/{src/tokenReaders → tokenReaders}/TokenReaderManager.js +0 -0
  1279. /package/dist/{src/tokenReaders → tokenReaders}/TypeTokenReader.js +0 -0
  1280. /package/dist/{src/transformers → transformers}/AliasRenamer.js +0 -0
  1281. /package/dist/{src/transformers → transformers}/CTEBuilder.js +0 -0
  1282. /package/dist/{src/transformers → transformers}/CTECollector.js +0 -0
  1283. /package/dist/{src/transformers → transformers}/CTEComposer.js +0 -0
  1284. /package/dist/{src/transformers → transformers}/CTEDependencyAnalyzer.js +0 -0
  1285. /package/dist/{src/transformers → transformers}/CTEDependencyTracer.js +0 -0
  1286. /package/dist/{src/transformers → transformers}/CTEDisabler.js +0 -0
  1287. /package/dist/{src/transformers → transformers}/CTEInjector.js +0 -0
  1288. /package/dist/{src/transformers → transformers}/CTENormalizer.js +0 -0
  1289. /package/dist/{src/transformers → transformers}/CTEQueryDecomposer.js +0 -0
  1290. /package/dist/{src/transformers → transformers}/CTERenamer.js +0 -0
  1291. /package/dist/{src/transformers → transformers}/CTETableReferenceCollector.js +0 -0
  1292. /package/dist/{src/transformers → transformers}/DynamicQueryBuilder.js +0 -0
  1293. /package/dist/{src/transformers → transformers}/EnhancedJsonMapping.js +0 -0
  1294. /package/dist/{src/transformers → transformers}/FilterableItemCollector.js +0 -0
  1295. /package/dist/{src/transformers → transformers}/FormatOptionResolver.js +0 -0
  1296. /package/dist/{src/transformers → transformers}/Formatter.js +0 -0
  1297. /package/dist/{src/transformers → transformers}/JoinAggregationDecomposer.js +0 -0
  1298. /package/dist/{src/transformers → transformers}/JsonMappingConverter.js +0 -0
  1299. /package/dist/{src/transformers → transformers}/JsonMappingUnifier.js +0 -0
  1300. /package/dist/{src/transformers → transformers}/LinePrinter.js +0 -0
  1301. /package/dist/{src/transformers → transformers}/ModelDrivenJsonMapping.js +0 -0
  1302. /package/dist/{src/transformers → transformers}/ParameterCollector.js +0 -0
  1303. /package/dist/{src/transformers → transformers}/PostgresArrayEntityCteBuilder.js +0 -0
  1304. /package/dist/{src/transformers → transformers}/PostgresJsonQueryBuilder.js +0 -0
  1305. /package/dist/{src/transformers → transformers}/PostgresObjectEntityCteBuilder.js +0 -0
  1306. /package/dist/{src/transformers → transformers}/QueryFlowDiagramGenerator.js +0 -0
  1307. /package/dist/{src/transformers → transformers}/SchemaCollector.js +0 -0
  1308. /package/dist/{src/transformers → transformers}/SelectValueCollector.js +0 -0
  1309. /package/dist/{src/transformers → transformers}/SelectableColumnCollector.js +0 -0
  1310. /package/dist/{src/transformers → transformers}/SmartRenamer.js +0 -0
  1311. /package/dist/{src/transformers → transformers}/SqlFormatter.js +0 -0
  1312. /package/dist/{src/transformers → transformers}/SqlIdentifierRenamer.js +0 -0
  1313. /package/dist/{src/transformers → transformers}/SqlOutputToken.js +0 -0
  1314. /package/dist/{src/transformers → transformers}/SqlPaginationInjector.js +0 -0
  1315. /package/dist/{src/transformers → transformers}/SqlParamInjector.js +0 -0
  1316. /package/dist/{src/transformers → transformers}/SqlParameterBinder.js +0 -0
  1317. /package/dist/{src/transformers → transformers}/SqlSortInjector.js +0 -0
  1318. /package/dist/{src/transformers → transformers}/TableColumnResolver.js +0 -0
  1319. /package/dist/{src/transformers → transformers}/TypeTransformationPostProcessor.js +0 -0
  1320. /package/dist/{src/transformers → transformers}/UpstreamSelectQueryFinder.js +0 -0
  1321. /package/dist/{src/types → types}/Formatting.js +0 -0
  1322. /package/dist/{src/utils → utils}/CTERegionDetector.js +0 -0
  1323. /package/dist/{src/utils → utils}/CommentEditor.js +0 -0
  1324. /package/dist/{src/utils → utils}/CommentUtils.js +0 -0
  1325. /package/dist/{src/utils → utils}/CursorContextAnalyzer.js +0 -0
  1326. /package/dist/{src/utils → utils}/IntelliSenseApi.js +0 -0
  1327. /package/dist/{src/utils → utils}/JsonSchemaValidator.js +0 -0
  1328. /package/dist/{src/utils → utils}/KeywordCache.js +0 -0
  1329. /package/dist/{src/utils → utils}/LexemeCursor.js +0 -0
  1330. /package/dist/{src/utils → utils}/MultiQuerySplitter.js +0 -0
  1331. /package/dist/{src/utils → utils}/OperatorPrecedence.js +0 -0
  1332. /package/dist/{src/utils → utils}/ParameterDetector.js +0 -0
  1333. /package/dist/{src/utils → utils}/ParameterHelper.js +0 -0
  1334. /package/dist/{src/utils → utils}/ParserStringUtils.js +0 -0
  1335. /package/dist/{src/utils → utils}/PositionAwareParser.js +0 -0
  1336. /package/dist/{src/utils → utils}/SchemaManager.js +0 -0
  1337. /package/dist/{src/utils → utils}/ScopeResolver.js +0 -0
  1338. /package/dist/{src/utils → utils}/SqlSchemaValidator.js +0 -0
  1339. /package/dist/{src/utils → utils}/TextPositionUtils.js +0 -0
  1340. /package/dist/{src/utils → utils}/charLookupTable.js +0 -0
  1341. /package/dist/{src/utils → utils}/stringUtils.js +0 -0
@@ -1,2938 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.SqlPrintTokenParser = exports.PRESETS = exports.ParameterStyle = void 0;
4
- const Clause_1 = require("../models/Clause");
5
- const HintClause_1 = require("../models/HintClause");
6
- const SelectQuery_1 = require("../models/SelectQuery");
7
- const SqlPrintToken_1 = require("../models/SqlPrintToken");
8
- const ValueComponent_1 = require("../models/ValueComponent");
9
- const ParameterCollector_1 = require("../transformers/ParameterCollector");
10
- const IdentifierDecorator_1 = require("./IdentifierDecorator");
11
- const ParameterDecorator_1 = require("./ParameterDecorator");
12
- const InsertQuery_1 = require("../models/InsertQuery");
13
- const UpdateQuery_1 = require("../models/UpdateQuery");
14
- const DeleteQuery_1 = require("../models/DeleteQuery");
15
- const CreateTableQuery_1 = require("../models/CreateTableQuery");
16
- const MergeQuery_1 = require("../models/MergeQuery");
17
- const DDLStatements_1 = require("../models/DDLStatements");
18
- var ParameterStyle;
19
- (function (ParameterStyle) {
20
- ParameterStyle["Anonymous"] = "anonymous";
21
- ParameterStyle["Indexed"] = "indexed";
22
- ParameterStyle["Named"] = "named";
23
- })(ParameterStyle || (exports.ParameterStyle = ParameterStyle = {}));
24
- exports.PRESETS = {
25
- mysql: {
26
- identifierEscape: { start: '`', end: '`' },
27
- parameterSymbol: '?',
28
- parameterStyle: ParameterStyle.Anonymous,
29
- constraintStyle: 'mysql',
30
- },
31
- postgres: {
32
- identifierEscape: { start: '"', end: '"' },
33
- parameterSymbol: '$',
34
- parameterStyle: ParameterStyle.Indexed,
35
- castStyle: 'postgres',
36
- constraintStyle: 'postgres',
37
- },
38
- postgresWithNamedParams: {
39
- identifierEscape: { start: '"', end: '"' },
40
- parameterSymbol: ':',
41
- parameterStyle: ParameterStyle.Named,
42
- castStyle: 'postgres',
43
- constraintStyle: 'postgres',
44
- },
45
- sqlserver: {
46
- identifierEscape: { start: '[', end: ']' },
47
- parameterSymbol: '@',
48
- parameterStyle: ParameterStyle.Named,
49
- constraintStyle: 'postgres',
50
- },
51
- sqlite: {
52
- identifierEscape: { start: '"', end: '"' },
53
- parameterSymbol: ':',
54
- parameterStyle: ParameterStyle.Named,
55
- constraintStyle: 'postgres',
56
- },
57
- oracle: {
58
- identifierEscape: { start: '"', end: '"' },
59
- parameterSymbol: ':',
60
- parameterStyle: ParameterStyle.Named,
61
- constraintStyle: 'postgres',
62
- },
63
- clickhouse: {
64
- identifierEscape: { start: '`', end: '`' },
65
- parameterSymbol: '?',
66
- parameterStyle: ParameterStyle.Anonymous,
67
- constraintStyle: 'postgres',
68
- },
69
- firebird: {
70
- identifierEscape: { start: '"', end: '"' },
71
- parameterSymbol: '?',
72
- parameterStyle: ParameterStyle.Anonymous,
73
- },
74
- db2: {
75
- identifierEscape: { start: '"', end: '"' },
76
- parameterSymbol: '?',
77
- parameterStyle: ParameterStyle.Anonymous,
78
- },
79
- snowflake: {
80
- identifierEscape: { start: '"', end: '"' },
81
- parameterSymbol: '?',
82
- parameterStyle: ParameterStyle.Anonymous,
83
- },
84
- cloudspanner: {
85
- identifierEscape: { start: '`', end: '`' },
86
- parameterSymbol: '@',
87
- parameterStyle: ParameterStyle.Named,
88
- },
89
- duckdb: {
90
- identifierEscape: { start: '"', end: '"' },
91
- parameterSymbol: '?',
92
- parameterStyle: ParameterStyle.Anonymous,
93
- },
94
- cockroachdb: {
95
- identifierEscape: { start: '"', end: '"' },
96
- parameterSymbol: '$',
97
- parameterStyle: ParameterStyle.Indexed,
98
- castStyle: 'postgres',
99
- },
100
- athena: {
101
- identifierEscape: { start: '"', end: '"' },
102
- parameterSymbol: '?',
103
- parameterStyle: ParameterStyle.Anonymous,
104
- },
105
- bigquery: {
106
- identifierEscape: { start: '`', end: '`' },
107
- parameterSymbol: '@',
108
- parameterStyle: ParameterStyle.Named,
109
- },
110
- hive: {
111
- identifierEscape: { start: '`', end: '`' },
112
- parameterSymbol: '?',
113
- parameterStyle: ParameterStyle.Anonymous,
114
- },
115
- mariadb: {
116
- identifierEscape: { start: '`', end: '`' },
117
- parameterSymbol: '?',
118
- parameterStyle: ParameterStyle.Anonymous,
119
- },
120
- redshift: {
121
- identifierEscape: { start: '"', end: '"' },
122
- parameterSymbol: '$',
123
- parameterStyle: ParameterStyle.Indexed,
124
- castStyle: 'postgres',
125
- },
126
- flinksql: {
127
- identifierEscape: { start: '`', end: '`' },
128
- parameterSymbol: '?',
129
- parameterStyle: ParameterStyle.Anonymous,
130
- },
131
- mongodb: {
132
- identifierEscape: { start: '"', end: '"' },
133
- parameterSymbol: '?',
134
- parameterStyle: ParameterStyle.Anonymous,
135
- },
136
- };
137
- class SqlPrintTokenParser {
138
- static getSelfHandlingComponentTypes() {
139
- if (!this._selfHandlingComponentTypes) {
140
- this._selfHandlingComponentTypes = new Set([
141
- SelectQuery_1.SimpleSelectQuery.kind,
142
- Clause_1.SelectItem.kind,
143
- ValueComponent_1.CaseKeyValuePair.kind,
144
- ValueComponent_1.SwitchCaseArgument.kind,
145
- ValueComponent_1.ColumnReference.kind,
146
- ValueComponent_1.LiteralValue.kind,
147
- ValueComponent_1.ParameterExpression.kind,
148
- Clause_1.TableSource.kind,
149
- Clause_1.SourceAliasExpression.kind,
150
- ValueComponent_1.TypeValue.kind,
151
- ValueComponent_1.FunctionCall.kind,
152
- ValueComponent_1.IdentifierString.kind,
153
- ValueComponent_1.QualifiedName.kind
154
- ]);
155
- }
156
- return this._selfHandlingComponentTypes;
157
- }
158
- constructor(options) {
159
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
160
- this.handlers = new Map();
161
- this.index = 1;
162
- this.joinConditionContexts = [];
163
- if (options === null || options === void 0 ? void 0 : options.preset) {
164
- const preset = options.preset;
165
- options = { ...preset, ...options };
166
- }
167
- this.parameterDecorator = new ParameterDecorator_1.ParameterDecorator({
168
- prefix: typeof (options === null || options === void 0 ? void 0 : options.parameterSymbol) === 'string' ? options.parameterSymbol : (_b = (_a = options === null || options === void 0 ? void 0 : options.parameterSymbol) === null || _a === void 0 ? void 0 : _a.start) !== null && _b !== void 0 ? _b : ':',
169
- suffix: typeof (options === null || options === void 0 ? void 0 : options.parameterSymbol) === 'object' ? options.parameterSymbol.end : '',
170
- style: (_c = options === null || options === void 0 ? void 0 : options.parameterStyle) !== null && _c !== void 0 ? _c : 'named'
171
- });
172
- this.identifierDecorator = new IdentifierDecorator_1.IdentifierDecorator({
173
- start: (_e = (_d = options === null || options === void 0 ? void 0 : options.identifierEscape) === null || _d === void 0 ? void 0 : _d.start) !== null && _e !== void 0 ? _e : '"',
174
- end: (_g = (_f = options === null || options === void 0 ? void 0 : options.identifierEscape) === null || _f === void 0 ? void 0 : _f.end) !== null && _g !== void 0 ? _g : '"'
175
- });
176
- this.castStyle = (_h = options === null || options === void 0 ? void 0 : options.castStyle) !== null && _h !== void 0 ? _h : 'standard';
177
- this.constraintStyle = (_j = options === null || options === void 0 ? void 0 : options.constraintStyle) !== null && _j !== void 0 ? _j : 'postgres';
178
- this.normalizeJoinConditionOrder = (_k = options === null || options === void 0 ? void 0 : options.joinConditionOrderByDeclaration) !== null && _k !== void 0 ? _k : false;
179
- this.handlers.set(ValueComponent_1.ValueList.kind, (expr) => this.visitValueList(expr));
180
- this.handlers.set(ValueComponent_1.ColumnReference.kind, (expr) => this.visitColumnReference(expr));
181
- this.handlers.set(ValueComponent_1.QualifiedName.kind, (expr) => this.visitQualifiedName(expr));
182
- this.handlers.set(ValueComponent_1.FunctionCall.kind, (expr) => this.visitFunctionCall(expr));
183
- this.handlers.set(ValueComponent_1.UnaryExpression.kind, (expr) => this.visitUnaryExpression(expr));
184
- this.handlers.set(ValueComponent_1.BinaryExpression.kind, (expr) => this.visitBinaryExpression(expr));
185
- this.handlers.set(ValueComponent_1.LiteralValue.kind, (expr) => this.visitLiteralValue(expr));
186
- this.handlers.set(ValueComponent_1.ParameterExpression.kind, (expr) => this.visitParameterExpression(expr));
187
- this.handlers.set(ValueComponent_1.SwitchCaseArgument.kind, (expr) => this.visitSwitchCaseArgument(expr));
188
- this.handlers.set(ValueComponent_1.CaseKeyValuePair.kind, (expr) => this.visitCaseKeyValuePair(expr));
189
- this.handlers.set(ValueComponent_1.RawString.kind, (expr) => this.visitRawString(expr));
190
- this.handlers.set(ValueComponent_1.IdentifierString.kind, (expr) => this.visitIdentifierString(expr));
191
- this.handlers.set(ValueComponent_1.ParenExpression.kind, (expr) => this.visitParenExpression(expr));
192
- this.handlers.set(ValueComponent_1.CastExpression.kind, (expr) => this.visitCastExpression(expr));
193
- this.handlers.set(ValueComponent_1.CaseExpression.kind, (expr) => this.visitCaseExpression(expr));
194
- this.handlers.set(ValueComponent_1.ArrayExpression.kind, (expr) => this.visitArrayExpression(expr));
195
- this.handlers.set(ValueComponent_1.ArrayQueryExpression.kind, (expr) => this.visitArrayQueryExpression(expr));
196
- this.handlers.set(ValueComponent_1.ArraySliceExpression.kind, (expr) => this.visitArraySliceExpression(expr));
197
- this.handlers.set(ValueComponent_1.ArrayIndexExpression.kind, (expr) => this.visitArrayIndexExpression(expr));
198
- this.handlers.set(ValueComponent_1.BetweenExpression.kind, (expr) => this.visitBetweenExpression(expr));
199
- this.handlers.set(ValueComponent_1.StringSpecifierExpression.kind, (expr) => this.visitStringSpecifierExpression(expr));
200
- this.handlers.set(ValueComponent_1.TypeValue.kind, (expr) => this.visitTypeValue(expr));
201
- this.handlers.set(ValueComponent_1.TupleExpression.kind, (expr) => this.visitTupleExpression(expr));
202
- this.handlers.set(ValueComponent_1.InlineQuery.kind, (expr) => this.visitInlineQuery(expr));
203
- this.handlers.set(ValueComponent_1.WindowFrameExpression.kind, (expr) => this.visitWindowFrameExpression(expr));
204
- this.handlers.set(ValueComponent_1.WindowFrameSpec.kind, (expr) => this.visitWindowFrameSpec(expr));
205
- this.handlers.set(ValueComponent_1.WindowFrameBoundStatic.kind, (expr) => this.visitWindowFrameBoundStatic(expr));
206
- this.handlers.set(ValueComponent_1.WindowFrameBoundaryValue.kind, (expr) => this.visitWindowFrameBoundaryValue(expr));
207
- this.handlers.set(Clause_1.PartitionByClause.kind, (expr) => this.visitPartitionByClause(expr));
208
- this.handlers.set(Clause_1.OrderByClause.kind, (expr) => this.visitOrderByClause(expr));
209
- this.handlers.set(Clause_1.OrderByItem.kind, (expr) => this.visitOrderByItem(expr));
210
- // select
211
- this.handlers.set(Clause_1.SelectItem.kind, (expr) => this.visitSelectItem(expr));
212
- this.handlers.set(Clause_1.SelectClause.kind, (expr) => this.visitSelectClause(expr));
213
- this.handlers.set(Clause_1.Distinct.kind, (expr) => this.visitDistinct(expr));
214
- this.handlers.set(Clause_1.DistinctOn.kind, (expr) => this.visitDistinctOn(expr));
215
- this.handlers.set(HintClause_1.HintClause.kind, (expr) => this.visitHintClause(expr));
216
- // from
217
- this.handlers.set(Clause_1.TableSource.kind, (expr) => this.visitTableSource(expr));
218
- this.handlers.set(Clause_1.FunctionSource.kind, (expr) => this.visitFunctionSource(expr));
219
- this.handlers.set(Clause_1.SourceExpression.kind, (expr) => this.visitSourceExpression(expr));
220
- this.handlers.set(Clause_1.SourceAliasExpression.kind, (expr) => this.visitSourceAliasExpression(expr));
221
- this.handlers.set(Clause_1.FromClause.kind, (expr) => this.visitFromClause(expr));
222
- this.handlers.set(Clause_1.JoinClause.kind, (expr) => this.visitJoinClause(expr));
223
- this.handlers.set(Clause_1.JoinOnClause.kind, (expr) => this.visitJoinOnClause(expr));
224
- this.handlers.set(Clause_1.JoinUsingClause.kind, (expr) => this.visitJoinUsingClause(expr));
225
- // where
226
- this.handlers.set(Clause_1.WhereClause.kind, (expr) => this.visitWhereClause(expr));
227
- // group
228
- this.handlers.set(Clause_1.GroupByClause.kind, (expr) => this.visitGroupByClause(expr));
229
- this.handlers.set(Clause_1.HavingClause.kind, (expr) => this.visitHavingClause(expr));
230
- this.handlers.set(Clause_1.WindowsClause.kind, (expr) => this.visitWindowClause(expr));
231
- this.handlers.set(Clause_1.WindowFrameClause.kind, (expr) => this.visitWindowFrameClause(expr));
232
- this.handlers.set(Clause_1.LimitClause.kind, (expr) => this.visitLimitClause(expr));
233
- this.handlers.set(Clause_1.OffsetClause.kind, (expr) => this.visitOffsetClause(expr));
234
- this.handlers.set(Clause_1.FetchClause.kind, (expr) => this.visitFetchClause(expr));
235
- this.handlers.set(Clause_1.FetchExpression.kind, (expr) => this.visitFetchExpression(expr));
236
- this.handlers.set(Clause_1.ForClause.kind, (expr) => this.visitForClause(expr));
237
- // With
238
- this.handlers.set(Clause_1.WithClause.kind, (expr) => this.visitWithClause(expr));
239
- this.handlers.set(Clause_1.CommonTable.kind, (expr) => this.visitCommonTable(expr));
240
- // Query
241
- this.handlers.set(SelectQuery_1.SimpleSelectQuery.kind, (expr) => this.visitSimpleQuery(expr));
242
- this.handlers.set(Clause_1.SubQuerySource.kind, (expr) => this.visitSubQuerySource(expr));
243
- this.handlers.set(SelectQuery_1.BinarySelectQuery.kind, (expr) => this.visitBinarySelectQuery(expr));
244
- this.handlers.set(SelectQuery_1.ValuesQuery.kind, (expr) => this.visitValuesQuery(expr));
245
- this.handlers.set(ValueComponent_1.TupleExpression.kind, (expr) => this.visitTupleExpression(expr));
246
- this.handlers.set(InsertQuery_1.InsertQuery.kind, (expr) => this.visitInsertQuery(expr));
247
- this.handlers.set(Clause_1.InsertClause.kind, (expr) => this.visitInsertClause(expr));
248
- this.handlers.set(UpdateQuery_1.UpdateQuery.kind, (expr) => this.visitUpdateQuery(expr));
249
- this.handlers.set(Clause_1.UpdateClause.kind, (expr) => this.visitUpdateClause(expr));
250
- this.handlers.set(DeleteQuery_1.DeleteQuery.kind, (expr) => this.visitDeleteQuery(expr));
251
- this.handlers.set(Clause_1.DeleteClause.kind, (expr) => this.visitDeleteClause(expr));
252
- this.handlers.set(Clause_1.UsingClause.kind, (expr) => this.visitUsingClause(expr));
253
- this.handlers.set(Clause_1.SetClause.kind, (expr) => this.visitSetClause(expr));
254
- this.handlers.set(Clause_1.SetClauseItem.kind, (expr) => this.visitSetClauseItem(expr));
255
- this.handlers.set(Clause_1.ReturningClause.kind, (expr) => this.visitReturningClause(expr));
256
- this.handlers.set(CreateTableQuery_1.CreateTableQuery.kind, (expr) => this.visitCreateTableQuery(expr));
257
- this.handlers.set(CreateTableQuery_1.TableColumnDefinition.kind, (expr) => this.visitTableColumnDefinition(expr));
258
- this.handlers.set(CreateTableQuery_1.ColumnConstraintDefinition.kind, (expr) => this.visitColumnConstraintDefinition(expr));
259
- this.handlers.set(CreateTableQuery_1.TableConstraintDefinition.kind, (expr) => this.visitTableConstraintDefinition(expr));
260
- this.handlers.set(CreateTableQuery_1.ReferenceDefinition.kind, (expr) => this.visitReferenceDefinition(expr));
261
- this.handlers.set(DDLStatements_1.CreateIndexStatement.kind, (expr) => this.visitCreateIndexStatement(expr));
262
- this.handlers.set(DDLStatements_1.IndexColumnDefinition.kind, (expr) => this.visitIndexColumnDefinition(expr));
263
- this.handlers.set(DDLStatements_1.DropTableStatement.kind, (expr) => this.visitDropTableStatement(expr));
264
- this.handlers.set(DDLStatements_1.DropIndexStatement.kind, (expr) => this.visitDropIndexStatement(expr));
265
- this.handlers.set(DDLStatements_1.AlterTableStatement.kind, (expr) => this.visitAlterTableStatement(expr));
266
- this.handlers.set(DDLStatements_1.AlterTableAddConstraint.kind, (expr) => this.visitAlterTableAddConstraint(expr));
267
- this.handlers.set(DDLStatements_1.AlterTableDropConstraint.kind, (expr) => this.visitAlterTableDropConstraint(expr));
268
- this.handlers.set(DDLStatements_1.AlterTableDropColumn.kind, (expr) => this.visitAlterTableDropColumn(expr));
269
- this.handlers.set(DDLStatements_1.DropConstraintStatement.kind, (expr) => this.visitDropConstraintStatement(expr));
270
- this.handlers.set(MergeQuery_1.MergeQuery.kind, (expr) => this.visitMergeQuery(expr));
271
- this.handlers.set(MergeQuery_1.MergeWhenClause.kind, (expr) => this.visitMergeWhenClause(expr));
272
- this.handlers.set(MergeQuery_1.MergeUpdateAction.kind, (expr) => this.visitMergeUpdateAction(expr));
273
- this.handlers.set(MergeQuery_1.MergeDeleteAction.kind, (expr) => this.visitMergeDeleteAction(expr));
274
- this.handlers.set(MergeQuery_1.MergeInsertAction.kind, (expr) => this.visitMergeInsertAction(expr));
275
- this.handlers.set(MergeQuery_1.MergeDoNothingAction.kind, (expr) => this.visitMergeDoNothingAction(expr));
276
- }
277
- /**
278
- * Pretty-prints a BinarySelectQuery (e.g., UNION, INTERSECT, EXCEPT).
279
- * This will recursively print left and right queries, separated by the operator.
280
- * @param arg BinarySelectQuery
281
- */
282
- visitBinarySelectQuery(arg) {
283
- const token = new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.container, '');
284
- // Handle positioned comments for BinarySelectQuery (unified spec)
285
- if (arg.positionedComments && arg.positionedComments.length > 0) {
286
- this.addPositionedCommentsToToken(token, arg);
287
- // Clear positioned comments to prevent duplicate processing
288
- arg.positionedComments = null;
289
- }
290
- else if (arg.headerComments && arg.headerComments.length > 0) {
291
- if (this.shouldMergeHeaderComments(arg.headerComments)) {
292
- const mergedHeaderComment = this.createHeaderMultiLineCommentBlock(arg.headerComments);
293
- token.innerTokens.push(mergedHeaderComment);
294
- }
295
- else {
296
- const headerCommentBlocks = this.createCommentBlocks(arg.headerComments, true);
297
- token.innerTokens.push(...headerCommentBlocks);
298
- }
299
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
300
- }
301
- token.innerTokens.push(this.visit(arg.left));
302
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
303
- token.innerTokens.push(new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.keyword, arg.operator.value, SqlPrintToken_1.SqlPrintTokenContainerType.BinarySelectQueryOperator));
304
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
305
- token.innerTokens.push(this.visit(arg.right));
306
- return token;
307
- }
308
- /**
309
- * Returns an array of tokens representing a comma followed by a space.
310
- * This is a common pattern in SQL pretty-printing.
311
- */
312
- static commaSpaceTokens() {
313
- return [SqlPrintTokenParser.COMMA_TOKEN, SqlPrintTokenParser.SPACE_TOKEN];
314
- }
315
- static argumentCommaSpaceTokens() {
316
- return [SqlPrintTokenParser.ARGUMENT_SPLIT_COMMA_TOKEN, SqlPrintTokenParser.SPACE_TOKEN];
317
- }
318
- visitQualifiedName(arg) {
319
- const token = new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.container, '', SqlPrintToken_1.SqlPrintTokenContainerType.QualifiedName);
320
- if (arg.namespaces) {
321
- for (let i = 0; i < arg.namespaces.length; i++) {
322
- token.innerTokens.push(arg.namespaces[i].accept(this));
323
- token.innerTokens.push(SqlPrintTokenParser.DOT_TOKEN);
324
- }
325
- }
326
- // Handle name and its comments carefully
327
- // We need to prevent double processing by temporarily clearing the name's comments,
328
- // then process them at the QualifiedName level
329
- const originalNameComments = arg.name.positionedComments;
330
- const originalNameLegacyComments = arg.name.comments;
331
- // Temporarily clear name's comments to prevent double processing
332
- arg.name.positionedComments = null;
333
- arg.name.comments = null;
334
- const nameToken = arg.name.accept(this);
335
- token.innerTokens.push(nameToken);
336
- // Restore original comments
337
- arg.name.positionedComments = originalNameComments;
338
- arg.name.comments = originalNameLegacyComments;
339
- // Apply the name's comments to the qualified name token
340
- if (this.hasPositionedComments(arg.name) || this.hasLegacyComments(arg.name)) {
341
- this.addComponentComments(token, arg.name);
342
- }
343
- // Also handle any comments directly on the QualifiedName itself
344
- this.addComponentComments(token, arg);
345
- return token;
346
- }
347
- visitPartitionByClause(arg) {
348
- // Print as: partition by ...
349
- const token = new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.keyword, 'partition by', SqlPrintToken_1.SqlPrintTokenContainerType.PartitionByClause);
350
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
351
- token.innerTokens.push(this.visit(arg.value));
352
- return token;
353
- }
354
- visitOrderByClause(arg) {
355
- // Print as: order by ...
356
- const token = new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.keyword, 'order by', SqlPrintToken_1.SqlPrintTokenContainerType.OrderByClause);
357
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
358
- for (let i = 0; i < arg.order.length; i++) {
359
- if (i > 0)
360
- token.innerTokens.push(...SqlPrintTokenParser.commaSpaceTokens());
361
- token.innerTokens.push(this.visit(arg.order[i]));
362
- }
363
- return token;
364
- }
365
- /**
366
- * Print an OrderByItem (expression [asc|desc] [nulls first|last])
367
- */
368
- visitOrderByItem(arg) {
369
- // arg: OrderByItem
370
- const token = new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.container, '', SqlPrintToken_1.SqlPrintTokenContainerType.OrderByItem);
371
- token.innerTokens.push(this.visit(arg.value));
372
- if (arg.sortDirection && arg.sortDirection !== Clause_1.SortDirection.Ascending) {
373
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
374
- token.innerTokens.push(new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.keyword, 'desc'));
375
- }
376
- if (arg.nullsPosition) {
377
- if (arg.nullsPosition === Clause_1.NullsSortDirection.First) {
378
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
379
- token.innerTokens.push(new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.keyword, 'nulls first'));
380
- }
381
- else if (arg.nullsPosition === Clause_1.NullsSortDirection.Last) {
382
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
383
- token.innerTokens.push(new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.keyword, 'nulls last'));
384
- }
385
- }
386
- return token;
387
- }
388
- parse(arg) {
389
- // reset parameter index before parsing
390
- this.index = 1;
391
- const token = this.visit(arg);
392
- const paramsRaw = ParameterCollector_1.ParameterCollector.collect(arg).sort((a, b) => { var _a, _b; return ((_a = a.index) !== null && _a !== void 0 ? _a : 0) - ((_b = b.index) !== null && _b !== void 0 ? _b : 0); });
393
- const style = this.parameterDecorator.style;
394
- if (style === ParameterStyle.Named) {
395
- // Named: { name: value, ... }
396
- const paramsObj = {};
397
- for (const p of paramsRaw) {
398
- const key = p.name.value;
399
- if (paramsObj.hasOwnProperty(key)) {
400
- if (paramsObj[key] !== p.value) {
401
- throw new Error(`Duplicate parameter name '${key}' with different values detected during query composition.`);
402
- }
403
- // If value is the same, skip (already set)
404
- continue;
405
- }
406
- paramsObj[key] = p.value;
407
- }
408
- return { token, params: paramsObj };
409
- }
410
- else if (style === ParameterStyle.Indexed) {
411
- // Indexed: [value1, value2, ...] (sorted by index)
412
- const paramsArr = paramsRaw.map(p => p.value);
413
- return { token, params: paramsArr };
414
- }
415
- else if (style === ParameterStyle.Anonymous) {
416
- // Anonymous: [value1, value2, ...] (sorted by index, name is empty)
417
- const paramsArr = paramsRaw.map(p => p.value);
418
- return { token, params: paramsArr };
419
- }
420
- // Fallback (just in case)
421
- return { token, params: [] };
422
- }
423
- /**
424
- * Check if a component handles its own comments
425
- */
426
- componentHandlesOwnComments(component) {
427
- // First check if component has a handlesOwnComments method
428
- if ('handlesOwnComments' in component && typeof component.handlesOwnComments === 'function') {
429
- return component.handlesOwnComments();
430
- }
431
- return SqlPrintTokenParser.getSelfHandlingComponentTypes().has(component.getKind());
432
- }
433
- visit(arg) {
434
- const handler = this.handlers.get(arg.getKind());
435
- if (handler) {
436
- const token = handler(arg);
437
- if (!this.componentHandlesOwnComments(arg)) {
438
- this.addComponentComments(token, arg);
439
- }
440
- return token;
441
- }
442
- throw new Error(`[SqlPrintTokenParser] No handler for kind: ${arg.getKind().toString()}`);
443
- }
444
- /**
445
- * Check if a component has positioned comments
446
- */
447
- hasPositionedComments(component) {
448
- var _a, _b;
449
- return ((_b = (_a = component.positionedComments) === null || _a === void 0 ? void 0 : _a.length) !== null && _b !== void 0 ? _b : 0) > 0;
450
- }
451
- /**
452
- * Check if a component has legacy comments
453
- */
454
- hasLegacyComments(component) {
455
- var _a, _b;
456
- return ((_b = (_a = component.comments) === null || _a === void 0 ? void 0 : _a.length) !== null && _b !== void 0 ? _b : 0) > 0;
457
- }
458
- /**
459
- * Centralized comment handling - checks positioned comments first, falls back to legacy
460
- */
461
- addComponentComments(token, component) {
462
- if (this.hasPositionedComments(component)) {
463
- this.addPositionedCommentsToToken(token, component);
464
- }
465
- else if (this.hasLegacyComments(component)) {
466
- this.addCommentsToToken(token, component.comments);
467
- }
468
- }
469
- /**
470
- * Adds positioned comment tokens to a SqlPrintToken for inline formatting
471
- */
472
- addPositionedCommentsToToken(token, component) {
473
- if (!this.hasPositionedComments(component)) {
474
- return;
475
- }
476
- // Handle 'before' comments - add inline at the beginning with spaces
477
- const beforeComments = component.getPositionedComments('before');
478
- if (beforeComments.length > 0) {
479
- const commentBlocks = this.createCommentBlocks(beforeComments);
480
- for (let i = commentBlocks.length - 1; i >= 0; i--) {
481
- token.innerTokens.unshift(commentBlocks[i]);
482
- }
483
- }
484
- // Handle 'after' comments - add inline after the main content
485
- const afterComments = component.getPositionedComments('after');
486
- if (afterComments.length > 0) {
487
- const commentBlocks = this.createCommentBlocks(afterComments);
488
- // Append after comments with spaces for inline formatting
489
- for (const commentBlock of commentBlocks) {
490
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
491
- token.innerTokens.push(commentBlock);
492
- }
493
- }
494
- // Clear positioned comments to prevent duplicate processing (unified spec)
495
- // Only clear for specific component types that are known to have duplication issues
496
- const componentsWithDuplicationIssues = [
497
- SqlPrintToken_1.SqlPrintTokenContainerType.CaseExpression,
498
- SqlPrintToken_1.SqlPrintTokenContainerType.SwitchCaseArgument,
499
- SqlPrintToken_1.SqlPrintTokenContainerType.CaseKeyValuePair,
500
- SqlPrintToken_1.SqlPrintTokenContainerType.SelectClause, // SELECT clauses have manual + automatic processing
501
- SqlPrintToken_1.SqlPrintTokenContainerType.LiteralValue,
502
- SqlPrintToken_1.SqlPrintTokenContainerType.IdentifierString,
503
- SqlPrintToken_1.SqlPrintTokenContainerType.DistinctOn,
504
- SqlPrintToken_1.SqlPrintTokenContainerType.SourceAliasExpression,
505
- SqlPrintToken_1.SqlPrintTokenContainerType.SimpleSelectQuery,
506
- SqlPrintToken_1.SqlPrintTokenContainerType.WhereClause // WHERE clauses also have duplication issues
507
- ];
508
- if (token.containerType && componentsWithDuplicationIssues.includes(token.containerType)) {
509
- component.positionedComments = null;
510
- }
511
- }
512
- /**
513
- * Adds comment tokens to a SqlPrintToken based on the comments array
514
- */
515
- addCommentsToToken(token, comments) {
516
- if (!(comments === null || comments === void 0 ? void 0 : comments.length)) {
517
- return;
518
- }
519
- const commentBlocks = this.createCommentBlocks(comments);
520
- this.insertCommentBlocksWithSpacing(token, commentBlocks);
521
- }
522
- /**
523
- * Creates inline comment sequence for multiple comments without newlines
524
- */
525
- createInlineCommentSequence(comments) {
526
- const commentTokens = [];
527
- for (let i = 0; i < comments.length; i++) {
528
- const comment = comments[i];
529
- if (comment.trim()) {
530
- // Add comment token directly
531
- const commentToken = new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.comment, this.formatComment(comment));
532
- commentTokens.push(commentToken);
533
- // Add space between comments (except after last comment)
534
- if (i < comments.length - 1) {
535
- const spaceToken = new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.space, ' ');
536
- commentTokens.push(spaceToken);
537
- }
538
- }
539
- }
540
- return commentTokens;
541
- }
542
- /**
543
- * Creates CommentBlock containers for the given comments.
544
- * Each CommentBlock contains: Comment -> CommentNewline -> Space.
545
- * @param comments Raw comment strings to convert into CommentBlock tokens.
546
- * @param isHeaderComment Marks the generated blocks as originating from header comments when true.
547
- */
548
- createCommentBlocks(comments, isHeaderComment = false) {
549
- // Create individual comment blocks for each comment entry
550
- const commentBlocks = [];
551
- for (const comment of comments) {
552
- // Accept comments that have content after trim OR are separator lines OR are empty (for structure preservation)
553
- const trimmed = comment.trim();
554
- const isSeparatorLine = /^[-=_+*#]+$/.test(trimmed);
555
- if (trimmed || isSeparatorLine || comment === '') {
556
- commentBlocks.push(this.createSingleCommentBlock(comment, isHeaderComment));
557
- }
558
- }
559
- return commentBlocks;
560
- }
561
- /**
562
- * Determines if a comment should be merged with consecutive comments
563
- */
564
- shouldMergeComment(trimmed) {
565
- const isSeparatorLine = /^[-=_+*#]+$/.test(trimmed);
566
- // Don't merge line comments unless they are separator-only lines
567
- if (!isSeparatorLine && trimmed.startsWith('--')) {
568
- return false;
569
- }
570
- // Don't merge if it's already a proper multi-line block comment
571
- if (trimmed.startsWith('/*') && trimmed.endsWith('*/')) {
572
- const inner = trimmed.slice(2, -2).trim();
573
- if (!inner) {
574
- return false;
575
- }
576
- if (trimmed.includes('\n')) {
577
- return false;
578
- }
579
- }
580
- // Merge all other content including separator lines, plain text, and single-line block comments
581
- // Separator lines within comment blocks should be merged together
582
- return true;
583
- }
584
- /**
585
- * Creates a multi-line block comment structure from consecutive comments
586
- * Returns a CommentBlock containing multiple comment lines for proper LinePrinter integration
587
- */
588
- /**
589
- * Creates a single CommentBlock with the standard structure:
590
- * Comment -> CommentNewline -> Space
591
- *
592
- * This structure supports both formatting modes:
593
- * - Multiline mode: Comment + newline (space is filtered as leading space)
594
- * - Oneliner mode: Comment + space (commentNewline is skipped)
595
- */
596
- createSingleCommentBlock(comment, isHeaderComment = false) {
597
- const commentBlock = new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.container, '', SqlPrintToken_1.SqlPrintTokenContainerType.CommentBlock);
598
- if (isHeaderComment) {
599
- commentBlock.markAsHeaderComment();
600
- }
601
- // Add comment token - preserve original format for line comments
602
- const commentToken = new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.comment, this.formatComment(comment));
603
- commentBlock.innerTokens.push(commentToken);
604
- // Add conditional newline token for multiline mode
605
- const commentNewlineToken = new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.commentNewline, '');
606
- commentBlock.innerTokens.push(commentNewlineToken);
607
- // Add space token for oneliner mode spacing
608
- const spaceToken = new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.space, ' ');
609
- commentBlock.innerTokens.push(spaceToken);
610
- return commentBlock;
611
- }
612
- /**
613
- * Formats a comment, preserving line comment format for -- comments
614
- * and converting others to block format for safety
615
- */
616
- formatComment(comment) {
617
- const trimmed = comment.trim();
618
- if (!trimmed) {
619
- return '/* */';
620
- }
621
- const isSeparatorLine = /^[-=_+*#]+$/.test(trimmed);
622
- if (isSeparatorLine) {
623
- return this.formatBlockComment(trimmed);
624
- }
625
- if (trimmed.startsWith('--')) {
626
- return this.formatLineComment(trimmed.slice(2));
627
- }
628
- if (trimmed.startsWith('/*') && trimmed.endsWith('*/')) {
629
- return this.formatBlockComment(trimmed);
630
- }
631
- return this.formatBlockComment(trimmed);
632
- }
633
- /**
634
- * Inserts comment blocks into a token and handles spacing logic.
635
- * Adds separator spaces for clause-level containers and manages duplicate space removal.
636
- */
637
- insertCommentBlocksWithSpacing(token, commentBlocks) {
638
- // For SelectItem, append comment blocks after ensuring spacing
639
- if (token.containerType === SqlPrintToken_1.SqlPrintTokenContainerType.SelectItem) {
640
- if (token.innerTokens.length > 0) {
641
- const lastToken = token.innerTokens[token.innerTokens.length - 1];
642
- if (lastToken.type !== SqlPrintToken_1.SqlPrintTokenType.space) {
643
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
644
- }
645
- }
646
- token.innerTokens.push(...commentBlocks);
647
- return;
648
- }
649
- // Special handling for SelectClause to add space between keyword and comment
650
- if (token.containerType === SqlPrintToken_1.SqlPrintTokenContainerType.SelectClause) {
651
- // For SelectClause, comments need to be inserted after the keyword with a space separator
652
- // Current structure: [keyword text, space, other tokens...]
653
- // Desired structure: [keyword text, space, comments, space, other tokens...]
654
- token.innerTokens.unshift(SqlPrintTokenParser.SPACE_TOKEN, ...commentBlocks);
655
- return;
656
- }
657
- // Special handling for IdentifierString to add space before comment
658
- if (token.containerType === SqlPrintToken_1.SqlPrintTokenContainerType.IdentifierString) {
659
- if (token.innerTokens.length > 0) {
660
- const lastToken = token.innerTokens[token.innerTokens.length - 1];
661
- if (lastToken.type !== SqlPrintToken_1.SqlPrintTokenType.space) {
662
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
663
- }
664
- }
665
- token.innerTokens.push(...commentBlocks);
666
- return;
667
- }
668
- token.innerTokens.unshift(...commentBlocks);
669
- // Add a separator space after comments only for certain container types
670
- // where comments need to be separated from main content
671
- const needsSeparatorSpace = this.shouldAddSeparatorSpace(token.containerType);
672
- if (needsSeparatorSpace) {
673
- const separatorSpace = new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.space, ' ');
674
- token.innerTokens.splice(commentBlocks.length, 0, separatorSpace);
675
- // Remove the original space token after our separator if it exists
676
- // This prevents duplicate spaces when comments are added
677
- if (token.innerTokens.length > commentBlocks.length + 1 &&
678
- token.innerTokens[commentBlocks.length + 1].type === SqlPrintToken_1.SqlPrintTokenType.space) {
679
- token.innerTokens.splice(commentBlocks.length + 1, 1);
680
- }
681
- }
682
- else {
683
- // For containers that don't need separator space, still remove duplicate spaces
684
- if (token.innerTokens.length > commentBlocks.length &&
685
- token.innerTokens[commentBlocks.length].type === SqlPrintToken_1.SqlPrintTokenType.space) {
686
- token.innerTokens.splice(commentBlocks.length, 1);
687
- }
688
- }
689
- }
690
- /**
691
- * Handles positioned comments for ParenExpression with special spacing rules.
692
- * ParenExpression comments should be adjacent to parentheses without separator spaces.
693
- */
694
- addPositionedCommentsToParenExpression(token, component) {
695
- if (!component.positionedComments) {
696
- return;
697
- }
698
- // For ParenExpression: (/* comment */ content /* comment */)
699
- // Comments should be placed immediately after opening paren and before closing paren
700
- // Handle 'before' comments - place after opening parenthesis without space
701
- const beforeComments = component.getPositionedComments('before');
702
- if (beforeComments.length > 0) {
703
- const commentBlocks = this.createCommentBlocks(beforeComments);
704
- // Insert after opening paren (index 1) without separator space
705
- let insertIndex = 1;
706
- for (const commentBlock of commentBlocks) {
707
- token.innerTokens.splice(insertIndex, 0, commentBlock);
708
- insertIndex++;
709
- }
710
- }
711
- // Handle 'after' comments - place before closing parenthesis without space
712
- const afterComments = component.getPositionedComments('after');
713
- if (afterComments.length > 0) {
714
- const commentBlocks = this.createCommentBlocks(afterComments);
715
- // Insert before closing paren (last position) without separator space
716
- const insertIndex = token.innerTokens.length;
717
- for (const commentBlock of commentBlocks) {
718
- token.innerTokens.splice(insertIndex - 1, 0, commentBlock);
719
- }
720
- }
721
- }
722
- /**
723
- * Determines whether a separator space should be added after comments for the given container type.
724
- *
725
- * Clause-level containers (SELECT, FROM, WHERE, etc.) need separator spaces because:
726
- * - Comments appear before the main clause content
727
- * - A space is needed to separate comment block from SQL tokens
728
- *
729
- * Item-level containers (SelectItem, etc.) don't need separator spaces because:
730
- * - Comments are inline with the item content
731
- * - Spacing is handled by existing token structure
732
- */
733
- shouldAddSeparatorSpace(containerType) {
734
- return this.isClauseLevelContainer(containerType);
735
- }
736
- /**
737
- * Checks if the container type represents a SQL clause (as opposed to an item within a clause).
738
- */
739
- isClauseLevelContainer(containerType) {
740
- switch (containerType) {
741
- case SqlPrintToken_1.SqlPrintTokenContainerType.SelectClause:
742
- case SqlPrintToken_1.SqlPrintTokenContainerType.FromClause:
743
- case SqlPrintToken_1.SqlPrintTokenContainerType.WhereClause:
744
- case SqlPrintToken_1.SqlPrintTokenContainerType.GroupByClause:
745
- case SqlPrintToken_1.SqlPrintTokenContainerType.HavingClause:
746
- case SqlPrintToken_1.SqlPrintTokenContainerType.OrderByClause:
747
- case SqlPrintToken_1.SqlPrintTokenContainerType.LimitClause:
748
- case SqlPrintToken_1.SqlPrintTokenContainerType.OffsetClause:
749
- case SqlPrintToken_1.SqlPrintTokenContainerType.WithClause:
750
- case SqlPrintToken_1.SqlPrintTokenContainerType.SimpleSelectQuery:
751
- return true;
752
- default:
753
- return false;
754
- }
755
- }
756
- /**
757
- * Formats a comment string as a block comment with security sanitization.
758
- * Prevents SQL injection by removing dangerous comment sequences.
759
- */
760
- formatBlockComment(comment) {
761
- const hasDelimiters = comment.startsWith('/*') && comment.endsWith('*/');
762
- const rawContent = hasDelimiters ? comment.slice(2, -2) : comment;
763
- const escapedContent = this.escapeCommentDelimiters(rawContent);
764
- const normalized = escapedContent.replace(/\r?\n/g, '\n');
765
- const lines = normalized
766
- .split('\n')
767
- .map(line => line.replace(/\s+/g, ' ').trim())
768
- .filter(line => line.length > 0);
769
- if (lines.length === 0) {
770
- return '/* */';
771
- }
772
- const isSeparatorLine = lines.length === 1 && /^[-=_+*#]+$/.test(lines[0]);
773
- if (!hasDelimiters) {
774
- // Flatten free-form comments to a single block to avoid leaking multi-line structures.
775
- if (isSeparatorLine) {
776
- return `/* ${lines[0]} */`;
777
- }
778
- const flattened = lines.join(' ');
779
- return `/* ${flattened} */`;
780
- }
781
- if (isSeparatorLine || lines.length === 1) {
782
- return `/* ${lines[0]} */`;
783
- }
784
- const body = lines.map(line => ` ${line}`).join('\n');
785
- return `/*\n${body}\n*/`;
786
- }
787
- shouldMergeHeaderComments(comments) {
788
- if (comments.length <= 1) {
789
- return false;
790
- }
791
- return comments.some(comment => {
792
- const trimmed = comment.trim();
793
- return /^[-=_+*#]{3,}$/.test(trimmed) || trimmed.startsWith('- ') || trimmed.startsWith('* ');
794
- });
795
- }
796
- createHeaderMultiLineCommentBlock(headerComments) {
797
- const commentBlock = new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.container, '', SqlPrintToken_1.SqlPrintTokenContainerType.CommentBlock);
798
- commentBlock.markAsHeaderComment();
799
- if (headerComments.length === 0) {
800
- const commentToken = new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.comment, '/* */');
801
- commentBlock.innerTokens.push(commentToken);
802
- }
803
- else {
804
- const openToken = new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.comment, '/*');
805
- commentBlock.innerTokens.push(openToken);
806
- commentBlock.innerTokens.push(new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.commentNewline, ''));
807
- for (const line of headerComments) {
808
- const sanitized = this.escapeCommentDelimiters(line);
809
- const lineToken = new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.comment, ` ${sanitized}`);
810
- commentBlock.innerTokens.push(lineToken);
811
- commentBlock.innerTokens.push(new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.commentNewline, ''));
812
- }
813
- const closeToken = new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.comment, '*/');
814
- commentBlock.innerTokens.push(closeToken);
815
- }
816
- commentBlock.innerTokens.push(new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.commentNewline, ''));
817
- commentBlock.innerTokens.push(new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.space, ' '));
818
- return commentBlock;
819
- }
820
- /**
821
- * Formats text as a single-line comment while sanitizing unsafe sequences.
822
- */
823
- formatLineComment(content) {
824
- // Normalize content to a single line and remove dangerous sequences
825
- const sanitized = this.sanitizeLineCommentContent(content);
826
- if (!sanitized) {
827
- return '--';
828
- }
829
- return `-- ${sanitized}`;
830
- }
831
- /**
832
- * Sanitizes content intended for a single-line comment.
833
- */
834
- sanitizeLineCommentContent(content) {
835
- // Replace comment delimiters to avoid nested comment injection
836
- let sanitized = this.escapeCommentDelimiters(content)
837
- .replace(/\r?\n/g, ' ')
838
- .replace(/\u2028|\u2029/g, ' ')
839
- .replace(/\s+/g, ' ')
840
- .trim();
841
- if (sanitized.startsWith('--')) {
842
- sanitized = sanitized.slice(2).trimStart();
843
- }
844
- return sanitized;
845
- }
846
- escapeCommentDelimiters(content) {
847
- return content
848
- .replace(/\/\*/g, '\\/\\*')
849
- .replace(/\*\//g, '*\\/');
850
- }
851
- visitValueList(arg) {
852
- const token = new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.container, '', SqlPrintToken_1.SqlPrintTokenContainerType.ValueList);
853
- for (let i = 0; i < arg.values.length; i++) {
854
- if (i > 0) {
855
- token.innerTokens.push(...SqlPrintTokenParser.argumentCommaSpaceTokens());
856
- }
857
- token.innerTokens.push(this.visit(arg.values[i]));
858
- }
859
- return token;
860
- }
861
- visitColumnReference(arg) {
862
- const token = new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.container, '', SqlPrintToken_1.SqlPrintTokenContainerType.ColumnReference);
863
- token.innerTokens.push(arg.qualifiedName.accept(this));
864
- this.addComponentComments(token, arg);
865
- return token;
866
- }
867
- visitFunctionCall(arg) {
868
- const token = new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.container, '', SqlPrintToken_1.SqlPrintTokenContainerType.FunctionCall);
869
- token.innerTokens.push(arg.qualifiedName.accept(this));
870
- token.innerTokens.push(SqlPrintTokenParser.PAREN_OPEN_TOKEN);
871
- if (arg.argument) {
872
- token.innerTokens.push(this.visit(arg.argument));
873
- }
874
- if (arg.internalOrderBy) {
875
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
876
- token.innerTokens.push(this.visit(arg.internalOrderBy));
877
- }
878
- // Use FunctionCall comments if available, otherwise use static token
879
- if (arg.comments && arg.comments.length > 0) {
880
- const closingParenToken = new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.parenthesis, ')');
881
- this.addCommentsToToken(closingParenToken, arg.comments);
882
- token.innerTokens.push(closingParenToken);
883
- // Clear the comments from arg to prevent duplicate output by the general comment handler
884
- arg.comments = null;
885
- }
886
- else {
887
- token.innerTokens.push(SqlPrintTokenParser.PAREN_CLOSE_TOKEN);
888
- }
889
- if (arg.withOrdinality) {
890
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
891
- token.innerTokens.push(new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.keyword, 'with ordinality'));
892
- }
893
- if (arg.over) {
894
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
895
- token.innerTokens.push(new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.keyword, 'over'));
896
- if (arg.over instanceof ValueComponent_1.IdentifierString) {
897
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
898
- token.innerTokens.push(arg.over.accept(this));
899
- }
900
- else {
901
- token.innerTokens.push(SqlPrintTokenParser.PAREN_OPEN_TOKEN);
902
- token.innerTokens.push(this.visit(arg.over));
903
- token.innerTokens.push(SqlPrintTokenParser.PAREN_CLOSE_TOKEN);
904
- }
905
- }
906
- this.addComponentComments(token, arg);
907
- return token;
908
- }
909
- visitUnaryExpression(arg) {
910
- const token = new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.container, '', SqlPrintToken_1.SqlPrintTokenContainerType.UnaryExpression);
911
- token.innerTokens.push(this.visit(arg.operator));
912
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
913
- token.innerTokens.push(this.visit(arg.expression));
914
- return token;
915
- }
916
- visitBinaryExpression(arg) {
917
- const token = new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.container, '', SqlPrintToken_1.SqlPrintTokenContainerType.BinaryExpression);
918
- token.innerTokens.push(this.visit(arg.left));
919
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
920
- // Visit the operator to handle its comments properly
921
- const operatorToken = this.visit(arg.operator);
922
- const operatorLower = operatorToken.text.toLowerCase();
923
- if (operatorLower === 'and' || operatorLower === 'or') {
924
- operatorToken.type = SqlPrintToken_1.SqlPrintTokenType.operator;
925
- }
926
- token.innerTokens.push(operatorToken);
927
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
928
- token.innerTokens.push(this.visit(arg.right));
929
- return token;
930
- }
931
- visitLiteralValue(arg) {
932
- let text;
933
- if (arg.value === null) {
934
- text = "null";
935
- }
936
- else if (arg.isStringLiteral) {
937
- // For originally quoted string literals, preserve quotes
938
- text = `'${arg.value.replace(/'/g, "''")}'`;
939
- }
940
- else if (typeof arg.value === "string") {
941
- // For dollar-quoted strings or other string values, use as-is
942
- text = arg.value;
943
- }
944
- else {
945
- text = arg.value.toString();
946
- }
947
- const token = new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.value, text, SqlPrintToken_1.SqlPrintTokenContainerType.LiteralValue);
948
- // Handle positioned comments for LiteralValue
949
- if (arg.positionedComments && arg.positionedComments.length > 0) {
950
- this.addPositionedCommentsToToken(token, arg);
951
- // Clear positioned comments to prevent duplicate processing
952
- arg.positionedComments = null;
953
- }
954
- else if (arg.comments && arg.comments.length > 0) {
955
- this.addCommentsToToken(token, arg.comments);
956
- }
957
- return token;
958
- }
959
- visitParameterExpression(arg) {
960
- // Create a parameter token and decorate it using the parameterDecorator
961
- arg.index = this.index;
962
- const text = this.parameterDecorator.decorate(arg.name.value, arg.index);
963
- const token = new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.parameter, text);
964
- this.addComponentComments(token, arg);
965
- this.index++;
966
- return token;
967
- }
968
- visitSwitchCaseArgument(arg) {
969
- const token = new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.container, '', SqlPrintToken_1.SqlPrintTokenContainerType.SwitchCaseArgument);
970
- this.addComponentComments(token, arg);
971
- // Add each WHEN/THEN clause
972
- for (const kv of arg.cases) {
973
- // Create a new line for each WHEN clause
974
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
975
- token.innerTokens.push(kv.accept(this));
976
- }
977
- // Add ELSE clause if present
978
- if (arg.elseValue) {
979
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
980
- token.innerTokens.push(this.createElseToken(arg.elseValue, arg.comments));
981
- }
982
- // Add SwitchCaseArgument comments (END keyword) if present and no elseValue
983
- else if (arg.comments && arg.comments.length > 0) {
984
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
985
- const commentTokens = this.createInlineCommentSequence(arg.comments);
986
- token.innerTokens.push(...commentTokens);
987
- }
988
- return token;
989
- }
990
- createElseToken(elseValue, switchCaseComments) {
991
- // Creates a token for the ELSE clause in a CASE expression.
992
- const elseToken = new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.container, '', SqlPrintToken_1.SqlPrintTokenContainerType.ElseClause); // Add the ELSE keyword
993
- elseToken.innerTokens.push(new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.keyword, 'else'));
994
- // Add ELSE and END keyword comments if present
995
- // The switchCaseComments contains both ELSE and END comments in order ['e1', 'end']
996
- if (switchCaseComments && switchCaseComments.length > 0) {
997
- elseToken.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
998
- const commentTokens = this.createInlineCommentSequence(switchCaseComments);
999
- elseToken.innerTokens.push(...commentTokens);
1000
- }
1001
- // Create a container for the ELSE value to enable proper indentation
1002
- elseToken.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
1003
- const elseValueContainer = new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.container, '', SqlPrintToken_1.SqlPrintTokenContainerType.CaseElseValue);
1004
- elseValueContainer.innerTokens.push(this.visit(elseValue));
1005
- elseToken.innerTokens.push(elseValueContainer);
1006
- return elseToken;
1007
- }
1008
- visitCaseKeyValuePair(arg) {
1009
- const token = new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.container, '', SqlPrintToken_1.SqlPrintTokenContainerType.CaseKeyValuePair);
1010
- // Handle positioned comments for CaseKeyValuePair
1011
- if (arg.positionedComments && arg.positionedComments.length > 0) {
1012
- this.addPositionedCommentsToToken(token, arg);
1013
- // Clear positioned comments to prevent duplicate processing
1014
- arg.positionedComments = null;
1015
- }
1016
- // Create WHEN clause
1017
- token.innerTokens.push(new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.keyword, 'when'));
1018
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
1019
- token.innerTokens.push(this.visit(arg.key)); // Create THEN clause
1020
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
1021
- token.innerTokens.push(new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.keyword, 'then'));
1022
- // Add THEN keyword comments if present
1023
- if (arg.comments && arg.comments.length > 0) {
1024
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
1025
- const commentTokens = this.createInlineCommentSequence(arg.comments);
1026
- token.innerTokens.push(...commentTokens);
1027
- }
1028
- // Create a container for the THEN value to enable proper indentation
1029
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
1030
- const thenValueContainer = new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.container, '', SqlPrintToken_1.SqlPrintTokenContainerType.CaseThenValue);
1031
- thenValueContainer.innerTokens.push(this.visit(arg.value));
1032
- token.innerTokens.push(thenValueContainer);
1033
- return token;
1034
- }
1035
- visitRawString(arg) {
1036
- // Even for non-container tokens, set the container type for context
1037
- return new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.value, arg.value, SqlPrintToken_1.SqlPrintTokenContainerType.RawString);
1038
- }
1039
- visitIdentifierString(arg) {
1040
- // Create an identifier token and decorate it using the identifierDecorator
1041
- const text = arg.name === "*" ? arg.name : this.identifierDecorator.decorate(arg.name);
1042
- // Handle positioned comments for IdentifierString
1043
- if (arg.positionedComments && arg.positionedComments.length > 0) {
1044
- const token = new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.container, '', SqlPrintToken_1.SqlPrintTokenContainerType.IdentifierString);
1045
- // Add positioned comments
1046
- this.addPositionedCommentsToToken(token, arg);
1047
- // Clear positioned comments to prevent duplicate processing
1048
- arg.positionedComments = null;
1049
- // Add the identifier text as the main token
1050
- const valueToken = new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.value, text);
1051
- token.innerTokens.push(valueToken);
1052
- return token;
1053
- }
1054
- // If there are legacy comments, create a container instead of a simple value token
1055
- if (arg.comments && arg.comments.length > 0) {
1056
- const token = new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.container, '', SqlPrintToken_1.SqlPrintTokenContainerType.IdentifierString);
1057
- // Add the identifier text as the main token
1058
- const valueToken = new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.value, text);
1059
- token.innerTokens.push(valueToken);
1060
- // Add legacy comments to the token
1061
- this.addComponentComments(token, arg);
1062
- return token;
1063
- }
1064
- const token = new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.value, text, SqlPrintToken_1.SqlPrintTokenContainerType.IdentifierString);
1065
- return token;
1066
- }
1067
- visitParenExpression(arg) {
1068
- const token = new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.container, '', SqlPrintToken_1.SqlPrintTokenContainerType.ParenExpression);
1069
- // Handle positioned comments for ParenExpression - check both self and inner expression
1070
- const hasOwnComments = arg.positionedComments && arg.positionedComments.length > 0;
1071
- const hasInnerComments = arg.expression.positionedComments && arg.expression.positionedComments.length > 0;
1072
- // Store inner comments for later processing and clear to prevent duplicate processing
1073
- let innerBeforeComments = [];
1074
- let innerAfterComments = [];
1075
- if (hasInnerComments) {
1076
- innerBeforeComments = arg.expression.getPositionedComments('before');
1077
- innerAfterComments = arg.expression.getPositionedComments('after');
1078
- arg.expression.positionedComments = null;
1079
- }
1080
- // Build basic structure first
1081
- token.innerTokens.push(SqlPrintTokenParser.PAREN_OPEN_TOKEN);
1082
- token.innerTokens.push(this.visit(arg.expression));
1083
- token.innerTokens.push(SqlPrintTokenParser.PAREN_CLOSE_TOKEN);
1084
- // Now add positioned comments in the correct positions manually
1085
- if (innerBeforeComments.length > 0) {
1086
- const commentBlocks = this.createCommentBlocks(innerBeforeComments);
1087
- // Insert after opening paren (index 1) without separator space
1088
- let insertIndex = 1;
1089
- for (const commentBlock of commentBlocks) {
1090
- token.innerTokens.splice(insertIndex, 0, commentBlock);
1091
- insertIndex++;
1092
- }
1093
- }
1094
- if (innerAfterComments.length > 0) {
1095
- const commentBlocks = this.createCommentBlocks(innerAfterComments);
1096
- // Insert before closing paren (last position) without separator space
1097
- const insertIndex = token.innerTokens.length;
1098
- for (const commentBlock of commentBlocks) {
1099
- token.innerTokens.splice(insertIndex - 1, 0, commentBlock);
1100
- }
1101
- }
1102
- if (hasOwnComments) {
1103
- this.addPositionedCommentsToParenExpression(token, arg);
1104
- // Clear positioned comments to prevent duplicate processing in parent containers
1105
- arg.positionedComments = null;
1106
- }
1107
- return token;
1108
- }
1109
- visitCastExpression(arg) {
1110
- const token = new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.container, '', SqlPrintToken_1.SqlPrintTokenContainerType.CastExpression);
1111
- // Use PostgreSQL-specific :: casts only when the preset explicitly opts in.
1112
- if (this.castStyle === 'postgres') {
1113
- token.innerTokens.push(this.visit(arg.input));
1114
- token.innerTokens.push(new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.operator, '::'));
1115
- token.innerTokens.push(this.visit(arg.castType));
1116
- return token;
1117
- }
1118
- // Default to ANSI-compliant CAST(expression AS type) syntax for broader compatibility.
1119
- token.innerTokens.push(new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.keyword, 'cast'));
1120
- token.innerTokens.push(SqlPrintTokenParser.PAREN_OPEN_TOKEN);
1121
- token.innerTokens.push(this.visit(arg.input));
1122
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
1123
- token.innerTokens.push(new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.keyword, 'as'));
1124
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
1125
- token.innerTokens.push(this.visit(arg.castType));
1126
- token.innerTokens.push(SqlPrintTokenParser.PAREN_CLOSE_TOKEN);
1127
- return token;
1128
- }
1129
- visitCaseExpression(arg) {
1130
- const token = new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.container, '', SqlPrintToken_1.SqlPrintTokenContainerType.CaseExpression);
1131
- // Handle positioned comments for CaseExpression (unified spec: positioned comments only)
1132
- if (arg.positionedComments && arg.positionedComments.length > 0) {
1133
- this.addPositionedCommentsToToken(token, arg);
1134
- // Clear positioned comments to prevent duplicate processing
1135
- arg.positionedComments = null;
1136
- }
1137
- const promotedComments = [];
1138
- const trailingSwitchComments = this.extractSwitchAfterComments(arg.switchCase);
1139
- let conditionToken = null;
1140
- if (arg.condition) {
1141
- conditionToken = this.visit(arg.condition);
1142
- promotedComments.push(...this.collectCaseLeadingCommentBlocks(conditionToken));
1143
- }
1144
- const switchToken = this.visit(arg.switchCase);
1145
- promotedComments.push(...this.collectCaseLeadingCommentsFromSwitch(switchToken));
1146
- if (promotedComments.length > 0) {
1147
- token.innerTokens.push(...promotedComments);
1148
- }
1149
- // Add the CASE keyword
1150
- token.innerTokens.push(new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.keyword, 'case'));
1151
- // Add the condition if exists
1152
- if (conditionToken) {
1153
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
1154
- token.innerTokens.push(conditionToken);
1155
- }
1156
- // Add the WHEN/THEN pairs and ELSE
1157
- token.innerTokens.push(switchToken);
1158
- // Add the END keyword
1159
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
1160
- token.innerTokens.push(new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.keyword, 'end'));
1161
- if (trailingSwitchComments.length > 0) {
1162
- token.innerTokens.push(new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.commentNewline, ''));
1163
- const trailingBlocks = this.createCommentBlocks(trailingSwitchComments);
1164
- token.innerTokens.push(...trailingBlocks);
1165
- }
1166
- return token;
1167
- }
1168
- extractSwitchAfterComments(arg) {
1169
- if (!arg.positionedComments || arg.positionedComments.length === 0) {
1170
- return [];
1171
- }
1172
- const trailing = [];
1173
- const retained = [];
1174
- for (const entry of arg.positionedComments) {
1175
- if (entry.position === 'after') {
1176
- trailing.push(...entry.comments);
1177
- }
1178
- else {
1179
- retained.push(entry);
1180
- }
1181
- }
1182
- arg.positionedComments = retained.length > 0 ? retained : null;
1183
- return trailing;
1184
- }
1185
- collectCaseLeadingCommentsFromSwitch(token) {
1186
- if (!token.innerTokens || token.innerTokens.length === 0) {
1187
- return [];
1188
- }
1189
- const pairToken = token.innerTokens.find(child => child.containerType === SqlPrintToken_1.SqlPrintTokenContainerType.CaseKeyValuePair);
1190
- if (!pairToken) {
1191
- return [];
1192
- }
1193
- const keyToken = this.findCaseKeyToken(pairToken);
1194
- if (!keyToken) {
1195
- return [];
1196
- }
1197
- return this.collectCaseLeadingCommentBlocks(keyToken);
1198
- }
1199
- findCaseKeyToken(pairToken) {
1200
- for (const child of pairToken.innerTokens) {
1201
- if (child.containerType === SqlPrintToken_1.SqlPrintTokenContainerType.CommentBlock) {
1202
- continue;
1203
- }
1204
- if (child.type === SqlPrintToken_1.SqlPrintTokenType.space) {
1205
- continue;
1206
- }
1207
- if (child.type === SqlPrintToken_1.SqlPrintTokenType.keyword) {
1208
- continue;
1209
- }
1210
- if (child.containerType === SqlPrintToken_1.SqlPrintTokenContainerType.CaseThenValue) {
1211
- continue;
1212
- }
1213
- return child;
1214
- }
1215
- return undefined;
1216
- }
1217
- collectCaseLeadingCommentBlocks(token) {
1218
- if (!token.innerTokens || token.innerTokens.length === 0) {
1219
- return [];
1220
- }
1221
- const collected = [];
1222
- this.collectCaseLeadingCommentBlocksRecursive(token, collected, new Set(), 0);
1223
- return collected;
1224
- }
1225
- collectCaseLeadingCommentBlocksRecursive(token, collected, seen, depth) {
1226
- if (!token.innerTokens || token.innerTokens.length === 0) {
1227
- return;
1228
- }
1229
- let removedAny = false;
1230
- while (token.innerTokens.length > 0) {
1231
- const first = token.innerTokens[0];
1232
- if (first.containerType === SqlPrintToken_1.SqlPrintTokenContainerType.CommentBlock) {
1233
- token.innerTokens.shift();
1234
- const signature = this.commentBlockSignature(first);
1235
- if (!(depth > 0 && seen.has(signature))) {
1236
- collected.push(first);
1237
- seen.add(signature);
1238
- }
1239
- removedAny = true;
1240
- continue;
1241
- }
1242
- if (!removedAny && first.type === SqlPrintToken_1.SqlPrintTokenType.space) {
1243
- return;
1244
- }
1245
- break;
1246
- }
1247
- if (!token.innerTokens || token.innerTokens.length === 0) {
1248
- return;
1249
- }
1250
- const firstChild = token.innerTokens[0];
1251
- if (this.isTransparentCaseWrapper(firstChild)) {
1252
- this.collectCaseLeadingCommentBlocksRecursive(firstChild, collected, seen, depth + 1);
1253
- }
1254
- }
1255
- isTransparentCaseWrapper(token) {
1256
- if (!token) {
1257
- return false;
1258
- }
1259
- const transparentContainers = [
1260
- SqlPrintToken_1.SqlPrintTokenContainerType.ColumnReference,
1261
- SqlPrintToken_1.SqlPrintTokenContainerType.QualifiedName,
1262
- SqlPrintToken_1.SqlPrintTokenContainerType.IdentifierString,
1263
- SqlPrintToken_1.SqlPrintTokenContainerType.RawString,
1264
- SqlPrintToken_1.SqlPrintTokenContainerType.LiteralValue,
1265
- SqlPrintToken_1.SqlPrintTokenContainerType.ParenExpression,
1266
- SqlPrintToken_1.SqlPrintTokenContainerType.UnaryExpression,
1267
- ];
1268
- return transparentContainers.includes(token.containerType);
1269
- }
1270
- commentBlockSignature(commentBlock) {
1271
- if (!commentBlock.innerTokens || commentBlock.innerTokens.length === 0) {
1272
- return '';
1273
- }
1274
- return commentBlock.innerTokens
1275
- .filter(inner => inner.text !== '')
1276
- .map(inner => inner.text)
1277
- .join('|');
1278
- }
1279
- visitArrayExpression(arg) {
1280
- const token = new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.container, '', SqlPrintToken_1.SqlPrintTokenContainerType.ArrayExpression);
1281
- token.innerTokens.push(new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.keyword, 'array'));
1282
- token.innerTokens.push(new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.parenthesis, '['));
1283
- token.innerTokens.push(this.visit(arg.expression));
1284
- token.innerTokens.push(new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.parenthesis, ']'));
1285
- return token;
1286
- }
1287
- visitArrayQueryExpression(arg) {
1288
- const token = new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.container, '', SqlPrintToken_1.SqlPrintTokenContainerType.ArrayExpression);
1289
- token.innerTokens.push(new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.keyword, 'array'));
1290
- // ARRAY(SELECT ...)
1291
- token.innerTokens.push(new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.parenthesis, '('));
1292
- token.innerTokens.push(this.visit(arg.query));
1293
- token.innerTokens.push(new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.parenthesis, ')'));
1294
- return token;
1295
- }
1296
- visitArraySliceExpression(arg) {
1297
- const token = new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.container, '', SqlPrintToken_1.SqlPrintTokenContainerType.ArrayExpression);
1298
- // array expression
1299
- token.innerTokens.push(this.visit(arg.array));
1300
- // opening bracket
1301
- token.innerTokens.push(new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.parenthesis, '['));
1302
- // start index (optional)
1303
- if (arg.startIndex) {
1304
- token.innerTokens.push(this.visit(arg.startIndex));
1305
- }
1306
- // colon separator
1307
- token.innerTokens.push(new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.operator, ':'));
1308
- // end index (optional)
1309
- if (arg.endIndex) {
1310
- token.innerTokens.push(this.visit(arg.endIndex));
1311
- }
1312
- // closing bracket
1313
- token.innerTokens.push(new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.parenthesis, ']'));
1314
- return token;
1315
- }
1316
- visitArrayIndexExpression(arg) {
1317
- const token = new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.container, '', SqlPrintToken_1.SqlPrintTokenContainerType.ArrayExpression);
1318
- // array expression
1319
- token.innerTokens.push(this.visit(arg.array));
1320
- // opening bracket
1321
- token.innerTokens.push(new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.parenthesis, '['));
1322
- // index
1323
- token.innerTokens.push(this.visit(arg.index));
1324
- // closing bracket
1325
- token.innerTokens.push(new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.parenthesis, ']'));
1326
- return token;
1327
- }
1328
- visitBetweenExpression(arg) {
1329
- const token = new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.container, '', SqlPrintToken_1.SqlPrintTokenContainerType.BetweenExpression);
1330
- token.innerTokens.push(this.visit(arg.expression));
1331
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
1332
- if (arg.negated) {
1333
- token.innerTokens.push(new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.keyword, 'not'));
1334
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
1335
- }
1336
- token.innerTokens.push(new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.keyword, 'between'));
1337
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
1338
- token.innerTokens.push(this.visit(arg.lower));
1339
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
1340
- token.innerTokens.push(new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.keyword, 'and'));
1341
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
1342
- token.innerTokens.push(this.visit(arg.upper));
1343
- return token;
1344
- }
1345
- visitStringSpecifierExpression(arg) {
1346
- // Combine specifier and value into a single token
1347
- const specifier = arg.specifier.accept(this).text;
1348
- const value = arg.value.accept(this).text;
1349
- return new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.value, specifier + value, SqlPrintToken_1.SqlPrintTokenContainerType.StringSpecifierExpression);
1350
- }
1351
- visitTypeValue(arg) {
1352
- const token = new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.container, '', SqlPrintToken_1.SqlPrintTokenContainerType.TypeValue);
1353
- this.addComponentComments(token, arg);
1354
- token.innerTokens.push(arg.qualifiedName.accept(this));
1355
- if (arg.argument) {
1356
- token.innerTokens.push(SqlPrintTokenParser.PAREN_OPEN_TOKEN);
1357
- token.innerTokens.push(this.visit(arg.argument));
1358
- token.innerTokens.push(SqlPrintTokenParser.PAREN_CLOSE_TOKEN);
1359
- }
1360
- return token;
1361
- }
1362
- visitTupleExpression(arg) {
1363
- const token = new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.container, '', SqlPrintToken_1.SqlPrintTokenContainerType.TupleExpression);
1364
- const requiresMultiline = this.tupleRequiresMultiline(arg);
1365
- token.innerTokens.push(SqlPrintTokenParser.PAREN_OPEN_TOKEN);
1366
- for (let i = 0; i < arg.values.length; i++) {
1367
- if (i > 0) {
1368
- token.innerTokens.push(...SqlPrintTokenParser.argumentCommaSpaceTokens());
1369
- }
1370
- token.innerTokens.push(this.visit(arg.values[i]));
1371
- }
1372
- if (requiresMultiline) {
1373
- token.innerTokens.push(new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.commentNewline, '', SqlPrintToken_1.SqlPrintTokenContainerType.TupleExpression));
1374
- }
1375
- token.innerTokens.push(SqlPrintTokenParser.PAREN_CLOSE_TOKEN);
1376
- return token;
1377
- }
1378
- tupleRequiresMultiline(tuple) {
1379
- for (const value of tuple.values) {
1380
- if (this.hasInlineComments(value)) {
1381
- return true;
1382
- }
1383
- }
1384
- return false;
1385
- }
1386
- hasInlineComments(component) {
1387
- if (this.hasLeadingComments(component)) {
1388
- return true;
1389
- }
1390
- if (component instanceof ValueComponent_1.TupleExpression) {
1391
- return this.tupleRequiresMultiline(component);
1392
- }
1393
- return false;
1394
- }
1395
- hasLeadingComments(component) {
1396
- var _a;
1397
- const positioned = (_a = component.positionedComments) !== null && _a !== void 0 ? _a : [];
1398
- const before = positioned.find(pc => pc.position === 'before');
1399
- if (before && before.comments.some(comment => comment.trim().length > 0)) {
1400
- return true;
1401
- }
1402
- return false;
1403
- }
1404
- visitWindowFrameExpression(arg) {
1405
- // Compose window frame expression: over(partition by ... order by ... rows ...)
1406
- const token = new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.container, '', SqlPrintToken_1.SqlPrintTokenContainerType.WindowFrameExpression);
1407
- let first = true;
1408
- if (arg.partition) {
1409
- token.innerTokens.push(this.visit(arg.partition));
1410
- first = false;
1411
- }
1412
- if (arg.order) {
1413
- if (!first) {
1414
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
1415
- }
1416
- else {
1417
- first = false;
1418
- }
1419
- token.innerTokens.push(this.visit(arg.order));
1420
- }
1421
- if (arg.frameSpec) {
1422
- if (!first) {
1423
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
1424
- }
1425
- else {
1426
- first = false;
1427
- }
1428
- token.innerTokens.push(this.visit(arg.frameSpec));
1429
- }
1430
- return token;
1431
- }
1432
- visitWindowFrameSpec(arg) {
1433
- // This method prints a window frame specification, such as "rows between ... and ..." or "range ...".
1434
- const token = new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.container, '', SqlPrintToken_1.SqlPrintTokenContainerType.WindowFrameSpec);
1435
- // Add frame type (e.g., "rows", "range", "groups")
1436
- token.innerTokens.push(new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.keyword, arg.frameType));
1437
- if (arg.endBound === null) {
1438
- // Only start bound: e.g., "rows unbounded preceding"
1439
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
1440
- token.innerTokens.push(arg.startBound.accept(this));
1441
- }
1442
- else {
1443
- // Between: e.g., "rows between unbounded preceding and current row"
1444
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
1445
- token.innerTokens.push(new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.keyword, 'between'));
1446
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
1447
- token.innerTokens.push(arg.startBound.accept(this));
1448
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
1449
- token.innerTokens.push(new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.keyword, 'and'));
1450
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
1451
- token.innerTokens.push(arg.endBound.accept(this));
1452
- }
1453
- return token;
1454
- }
1455
- /**
1456
- * Prints a window frame boundary value, such as "5 preceding" or "3 following".
1457
- * @param arg WindowFrameBoundaryValue
1458
- */
1459
- visitWindowFrameBoundaryValue(arg) {
1460
- const token = new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.container, '', SqlPrintToken_1.SqlPrintTokenContainerType.WindowFrameBoundaryValue);
1461
- token.innerTokens.push(arg.value.accept(this));
1462
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
1463
- // true for "FOLLOWING", false for "PRECEDING"
1464
- token.innerTokens.push(new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.keyword, arg.isFollowing ? 'following' : 'preceding'));
1465
- return token;
1466
- }
1467
- /**
1468
- * Prints a static window frame bound, such as "unbounded preceding", "current row", or "unbounded following".
1469
- * @param arg WindowFrameBoundStatic
1470
- */
1471
- visitWindowFrameBoundStatic(arg) {
1472
- const token = new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.keyword, arg.bound);
1473
- return token;
1474
- }
1475
- visitSelectItem(arg) {
1476
- const token = new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.container, '', SqlPrintToken_1.SqlPrintTokenContainerType.SelectItem);
1477
- // Preserve original positioned comments to avoid mutating the source object
1478
- const originalSelectItemPositionedComments = arg.positionedComments;
1479
- const originalValuePositionedComments = arg.value.positionedComments;
1480
- // Clear positioned comments from the value to avoid duplication since SelectItem handles them
1481
- arg.value.positionedComments = null;
1482
- // Add positioned comments in recorded order
1483
- const beforeComments = arg.getPositionedComments('before');
1484
- const afterComments = arg.getPositionedComments('after');
1485
- const isParenExpression = arg.value instanceof ValueComponent_1.ParenExpression;
1486
- if (beforeComments.length > 0) {
1487
- const commentTokens = this.createInlineCommentSequence(beforeComments);
1488
- token.innerTokens.push(...commentTokens);
1489
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
1490
- }
1491
- token.innerTokens.push(this.visit(arg.value));
1492
- if (afterComments.length > 0 && !isParenExpression) {
1493
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
1494
- const commentTokens = this.createInlineCommentSequence(afterComments);
1495
- token.innerTokens.push(...commentTokens);
1496
- }
1497
- // Restore original positioned comments to avoid side effects
1498
- arg.positionedComments = originalSelectItemPositionedComments;
1499
- arg.value.positionedComments = originalValuePositionedComments;
1500
- if (!arg.identifier) {
1501
- return token;
1502
- }
1503
- // No alias needed if it matches the default name
1504
- if (arg.value instanceof ValueComponent_1.ColumnReference) {
1505
- const defaultName = arg.value.column.name;
1506
- if (arg.identifier.name === defaultName) {
1507
- return token;
1508
- }
1509
- }
1510
- // Add alias if it is different from the default name
1511
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
1512
- // Handle AS keyword positioned comments (before AS)
1513
- const asKeywordPositionedComments = 'asKeywordPositionedComments' in arg ? arg.asKeywordPositionedComments : null;
1514
- if (asKeywordPositionedComments) {
1515
- const beforeComments = asKeywordPositionedComments.filter((pc) => pc.position === 'before');
1516
- if (beforeComments.length > 0) {
1517
- for (const posComment of beforeComments) {
1518
- const commentTokens = this.createInlineCommentSequence(posComment.comments);
1519
- token.innerTokens.push(...commentTokens);
1520
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
1521
- }
1522
- }
1523
- }
1524
- token.innerTokens.push(new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.keyword, 'as'));
1525
- // Handle AS keyword positioned comments (after AS)
1526
- if (asKeywordPositionedComments) {
1527
- const afterComments = asKeywordPositionedComments.filter((pc) => pc.position === 'after');
1528
- if (afterComments.length > 0) {
1529
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
1530
- for (const posComment of afterComments) {
1531
- const commentTokens = this.createInlineCommentSequence(posComment.comments);
1532
- token.innerTokens.push(...commentTokens);
1533
- }
1534
- }
1535
- }
1536
- // Fallback: Add AS keyword legacy comments if present
1537
- const asKeywordComments = 'asKeywordComments' in arg ? arg.asKeywordComments : null;
1538
- if (asKeywordComments && asKeywordComments.length > 0) {
1539
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
1540
- const commentTokens = this.createInlineCommentSequence(asKeywordComments);
1541
- token.innerTokens.push(...commentTokens);
1542
- }
1543
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
1544
- // Visit identifier to get alias with proper spacing
1545
- const identifierToken = this.visit(arg.identifier);
1546
- token.innerTokens.push(identifierToken);
1547
- // Handle alias positioned comments (after alias)
1548
- const aliasPositionedComments = 'aliasPositionedComments' in arg ? arg.aliasPositionedComments : null;
1549
- if (aliasPositionedComments) {
1550
- const afterComments = aliasPositionedComments.filter((pc) => pc.position === 'after');
1551
- if (afterComments.length > 0) {
1552
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
1553
- for (const posComment of afterComments) {
1554
- const commentTokens = this.createInlineCommentSequence(posComment.comments);
1555
- token.innerTokens.push(...commentTokens);
1556
- }
1557
- }
1558
- }
1559
- // Fallback: Add alias legacy comments if present
1560
- const aliasComments = arg.aliasComments;
1561
- if (aliasComments && aliasComments.length > 0) {
1562
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
1563
- const commentTokens = this.createInlineCommentSequence(aliasComments);
1564
- token.innerTokens.push(...commentTokens);
1565
- }
1566
- return token;
1567
- }
1568
- visitSelectClause(arg) {
1569
- const token = new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.keyword, 'select', SqlPrintToken_1.SqlPrintTokenContainerType.SelectClause);
1570
- // Handle positioned comments for SelectClause (unified spec)
1571
- if (arg.positionedComments && arg.positionedComments.length > 0) {
1572
- this.addPositionedCommentsToToken(token, arg);
1573
- // Clear positioned comments to prevent duplicate processing
1574
- arg.positionedComments = null;
1575
- }
1576
- // Handle hints and DISTINCT as part of the keyword line
1577
- let selectKeywordText = 'select';
1578
- // Add hint clauses immediately after SELECT (before DISTINCT)
1579
- for (const hint of arg.hints) {
1580
- selectKeywordText += ' ' + this.visit(hint).text;
1581
- }
1582
- // Add DISTINCT after hints (if present)
1583
- if (arg.distinct) {
1584
- const distinctToken = arg.distinct.accept(this);
1585
- if (distinctToken.innerTokens && distinctToken.innerTokens.length > 0) {
1586
- // For compound DISTINCT tokens (like DISTINCT ON), concatenate all parts
1587
- let distinctText = distinctToken.text;
1588
- for (const innerToken of distinctToken.innerTokens) {
1589
- distinctText += this.flattenTokenText(innerToken);
1590
- }
1591
- selectKeywordText += ' ' + distinctText;
1592
- }
1593
- else {
1594
- selectKeywordText += ' ' + distinctToken.text;
1595
- }
1596
- }
1597
- // Update the token text to include hints and DISTINCT
1598
- token.text = selectKeywordText;
1599
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
1600
- for (let i = 0; i < arg.items.length; i++) {
1601
- if (i > 0) {
1602
- token.innerTokens.push(...SqlPrintTokenParser.commaSpaceTokens());
1603
- }
1604
- token.innerTokens.push(this.visit(arg.items[i]));
1605
- }
1606
- return token;
1607
- }
1608
- flattenTokenText(token) {
1609
- let result = token.text;
1610
- if (token.innerTokens) {
1611
- for (const innerToken of token.innerTokens) {
1612
- result += this.flattenTokenText(innerToken);
1613
- }
1614
- }
1615
- return result;
1616
- }
1617
- visitHintClause(arg) {
1618
- const token = new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.value, arg.getFullHint());
1619
- return token;
1620
- }
1621
- visitDistinct(arg) {
1622
- const token = new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.keyword, 'distinct');
1623
- // Handle positioned comments for Distinct (unified spec)
1624
- if (arg.positionedComments && arg.positionedComments.length > 0) {
1625
- this.addPositionedCommentsToToken(token, arg);
1626
- // Clear positioned comments to prevent duplicate processing
1627
- arg.positionedComments = null;
1628
- }
1629
- return token;
1630
- }
1631
- visitDistinctOn(arg) {
1632
- const token = new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.container, '', SqlPrintToken_1.SqlPrintTokenContainerType.DistinctOn);
1633
- token.innerTokens.push(new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.keyword, 'distinct on'));
1634
- token.innerTokens.push(SqlPrintTokenParser.PAREN_OPEN_TOKEN);
1635
- token.innerTokens.push(arg.value.accept(this));
1636
- token.innerTokens.push(SqlPrintTokenParser.PAREN_CLOSE_TOKEN);
1637
- return token;
1638
- }
1639
- visitTableSource(arg) {
1640
- // Print table name with optional namespaces and alias
1641
- let fullName = '';
1642
- if (Array.isArray(arg.namespaces) && arg.namespaces.length > 0) {
1643
- fullName = arg.namespaces.map(ns => ns.accept(this).text).join('.') + '.';
1644
- }
1645
- fullName += arg.table.accept(this).text;
1646
- const token = new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.value, fullName);
1647
- this.addComponentComments(token, arg);
1648
- // alias (if present and different from table name)
1649
- if (arg.identifier && arg.identifier.name !== arg.table.name) {
1650
- }
1651
- return token;
1652
- }
1653
- visitSourceExpression(arg) {
1654
- // Print source expression (e.g. "table", "table as t", "schema.table t")
1655
- const token = new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.container, '', SqlPrintToken_1.SqlPrintTokenContainerType.SourceExpression);
1656
- token.innerTokens.push(arg.datasource.accept(this));
1657
- if (!arg.aliasExpression) {
1658
- return token;
1659
- }
1660
- if (arg.datasource instanceof Clause_1.TableSource) {
1661
- // No alias needed if it matches the default name
1662
- const defaultName = arg.datasource.table.name;
1663
- if (arg.aliasExpression.table.name === defaultName) {
1664
- return token;
1665
- }
1666
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
1667
- token.innerTokens.push(new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.keyword, 'as'));
1668
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
1669
- // exclude column aliases
1670
- token.innerTokens.push(arg.aliasExpression.accept(this));
1671
- return token;
1672
- }
1673
- else {
1674
- // For other source types, just print the alias
1675
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
1676
- token.innerTokens.push(new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.keyword, 'as'));
1677
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
1678
- // included column aliases
1679
- token.innerTokens.push(arg.aliasExpression.accept(this));
1680
- return token;
1681
- }
1682
- }
1683
- visitFromClause(arg) {
1684
- // Build a declaration order map so JOIN ON operands can be normalized later.
1685
- let contextPushed = false;
1686
- if (this.normalizeJoinConditionOrder) {
1687
- const aliasOrder = this.buildJoinAliasOrder(arg);
1688
- if (aliasOrder.size > 0) {
1689
- this.joinConditionContexts.push({ aliasOrder });
1690
- contextPushed = true;
1691
- }
1692
- }
1693
- try {
1694
- const token = new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.keyword, 'from', SqlPrintToken_1.SqlPrintTokenContainerType.FromClause);
1695
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
1696
- token.innerTokens.push(this.visit(arg.source));
1697
- if (arg.joins) {
1698
- for (let i = 0; i < arg.joins.length; i++) {
1699
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
1700
- token.innerTokens.push(this.visit(arg.joins[i]));
1701
- }
1702
- }
1703
- return token;
1704
- }
1705
- finally {
1706
- if (contextPushed) {
1707
- this.joinConditionContexts.pop();
1708
- }
1709
- }
1710
- }
1711
- visitJoinClause(arg) {
1712
- // Print join clause: [joinType] [lateral] [source] [on/using ...]
1713
- const token = new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.container, '', SqlPrintToken_1.SqlPrintTokenContainerType.JoinClause);
1714
- // Handle JOIN keyword positioned comments (before JOIN)
1715
- const joinKeywordPositionedComments = arg.joinKeywordPositionedComments;
1716
- if (joinKeywordPositionedComments) {
1717
- const beforeComments = joinKeywordPositionedComments.filter((pc) => pc.position === 'before');
1718
- if (beforeComments.length > 0) {
1719
- for (const posComment of beforeComments) {
1720
- const commentTokens = this.createInlineCommentSequence(posComment.comments);
1721
- token.innerTokens.push(...commentTokens);
1722
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
1723
- }
1724
- }
1725
- }
1726
- // join type (e.g. inner join, left join, etc)
1727
- token.innerTokens.push(new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.keyword, arg.joinType.value));
1728
- // Handle JOIN keyword positioned comments (after JOIN)
1729
- if (joinKeywordPositionedComments) {
1730
- const afterComments = joinKeywordPositionedComments.filter((pc) => pc.position === 'after');
1731
- if (afterComments.length > 0) {
1732
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
1733
- for (const posComment of afterComments) {
1734
- const commentTokens = this.createInlineCommentSequence(posComment.comments);
1735
- token.innerTokens.push(...commentTokens);
1736
- }
1737
- }
1738
- }
1739
- // Fallback: Add JOIN keyword legacy comments if present
1740
- const joinKeywordComments = arg.joinKeywordComments;
1741
- if (joinKeywordComments && joinKeywordComments.length > 0) {
1742
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
1743
- const commentTokens = this.createInlineCommentSequence(joinKeywordComments);
1744
- token.innerTokens.push(...commentTokens);
1745
- }
1746
- if (arg.lateral) {
1747
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
1748
- token.innerTokens.push(new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.keyword, 'lateral'));
1749
- }
1750
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
1751
- token.innerTokens.push(this.visit(arg.source));
1752
- if (arg.condition) {
1753
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
1754
- token.innerTokens.push(this.visit(arg.condition));
1755
- }
1756
- return token;
1757
- }
1758
- visitJoinOnClause(arg) {
1759
- // Normalize JOIN ON predicate columns to follow declaration order when enabled.
1760
- if (this.normalizeJoinConditionOrder) {
1761
- const aliasOrder = this.getCurrentJoinAliasOrder();
1762
- if (aliasOrder) {
1763
- this.normalizeJoinConditionValue(arg.condition, aliasOrder);
1764
- }
1765
- }
1766
- const token = new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.container, '', SqlPrintToken_1.SqlPrintTokenContainerType.JoinOnClause);
1767
- token.innerTokens.push(new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.keyword, 'on'));
1768
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
1769
- token.innerTokens.push(this.visit(arg.condition));
1770
- return token;
1771
- }
1772
- getCurrentJoinAliasOrder() {
1773
- if (this.joinConditionContexts.length === 0) {
1774
- return null;
1775
- }
1776
- return this.joinConditionContexts[this.joinConditionContexts.length - 1].aliasOrder;
1777
- }
1778
- buildJoinAliasOrder(fromClause) {
1779
- const aliasOrder = new Map();
1780
- let nextIndex = 0;
1781
- const registerSource = (source) => {
1782
- const identifiers = this.collectSourceIdentifiers(source);
1783
- if (identifiers.length === 0) {
1784
- return;
1785
- }
1786
- // Track the earliest declaration index for each identifier found in the FROM clause.
1787
- for (const identifier of identifiers) {
1788
- const key = identifier.toLowerCase();
1789
- if (!aliasOrder.has(key)) {
1790
- aliasOrder.set(key, nextIndex);
1791
- }
1792
- }
1793
- nextIndex++;
1794
- };
1795
- registerSource(fromClause.source);
1796
- if (fromClause.joins) {
1797
- for (const joinClause of fromClause.joins) {
1798
- registerSource(joinClause.source);
1799
- }
1800
- }
1801
- return aliasOrder;
1802
- }
1803
- collectSourceIdentifiers(source) {
1804
- const identifiers = [];
1805
- const aliasName = source.getAliasName();
1806
- if (aliasName) {
1807
- identifiers.push(aliasName);
1808
- }
1809
- // Capture table identifiers so unaliased tables can still be matched.
1810
- if (source.datasource instanceof Clause_1.TableSource) {
1811
- const tableComponent = source.datasource.table.name;
1812
- identifiers.push(tableComponent);
1813
- const fullName = source.datasource.getSourceName();
1814
- if (fullName && fullName !== tableComponent) {
1815
- identifiers.push(fullName);
1816
- }
1817
- }
1818
- return identifiers;
1819
- }
1820
- normalizeJoinConditionValue(condition, aliasOrder) {
1821
- // Walk the value tree so every comparison within the JOIN predicate is inspected.
1822
- const kind = condition.getKind();
1823
- if (kind === ValueComponent_1.ParenExpression.kind) {
1824
- const paren = condition;
1825
- this.normalizeJoinConditionValue(paren.expression, aliasOrder);
1826
- return;
1827
- }
1828
- if (kind === ValueComponent_1.BinaryExpression.kind) {
1829
- const binary = condition;
1830
- this.normalizeJoinConditionValue(binary.left, aliasOrder);
1831
- this.normalizeJoinConditionValue(binary.right, aliasOrder);
1832
- this.normalizeBinaryEquality(binary, aliasOrder);
1833
- }
1834
- }
1835
- normalizeBinaryEquality(binary, aliasOrder) {
1836
- // Only normalize simple equality comparisons, leaving other operators untouched.
1837
- const operatorValue = binary.operator.value.toLowerCase();
1838
- if (operatorValue !== '=') {
1839
- return;
1840
- }
1841
- const leftOwner = this.resolveColumnOwner(binary.left);
1842
- const rightOwner = this.resolveColumnOwner(binary.right);
1843
- if (!leftOwner || !rightOwner || leftOwner === rightOwner) {
1844
- return;
1845
- }
1846
- const leftOrder = aliasOrder.get(leftOwner);
1847
- const rightOrder = aliasOrder.get(rightOwner);
1848
- if (leftOrder === undefined || rightOrder === undefined) {
1849
- return;
1850
- }
1851
- if (leftOrder > rightOrder) {
1852
- // Swap operands so the earlier declared table appears on the left.
1853
- const originalLeft = binary.left;
1854
- binary.left = binary.right;
1855
- binary.right = originalLeft;
1856
- }
1857
- }
1858
- resolveColumnOwner(value) {
1859
- var _a;
1860
- const kind = value.getKind();
1861
- if (kind === ValueComponent_1.ColumnReference.kind) {
1862
- // Column references expose their qualifier namespace, which we normalize for lookups.
1863
- const columnRef = value;
1864
- const namespace = columnRef.getNamespace();
1865
- if (!namespace) {
1866
- return null;
1867
- }
1868
- const qualifier = namespace.includes('.') ? (_a = namespace.split('.').pop()) !== null && _a !== void 0 ? _a : '' : namespace;
1869
- return qualifier.toLowerCase();
1870
- }
1871
- if (kind === ValueComponent_1.ParenExpression.kind) {
1872
- return this.resolveColumnOwner(value.expression);
1873
- }
1874
- return null;
1875
- }
1876
- visitJoinUsingClause(arg) {
1877
- const token = new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.container, '', SqlPrintToken_1.SqlPrintTokenContainerType.JoinUsingClause);
1878
- token.innerTokens.push(new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.keyword, 'using'));
1879
- token.innerTokens.push(SqlPrintTokenParser.PAREN_OPEN_TOKEN);
1880
- token.innerTokens.push(this.visit(arg.condition));
1881
- token.innerTokens.push(SqlPrintTokenParser.PAREN_CLOSE_TOKEN);
1882
- return token;
1883
- }
1884
- visitFunctionSource(arg) {
1885
- // Print function source: [functionName]([args])
1886
- const token = new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.container, '', SqlPrintToken_1.SqlPrintTokenContainerType.FunctionSource);
1887
- token.innerTokens.push(arg.qualifiedName.accept(this));
1888
- token.innerTokens.push(SqlPrintTokenParser.PAREN_OPEN_TOKEN);
1889
- if (arg.argument) {
1890
- token.innerTokens.push(this.visit(arg.argument));
1891
- }
1892
- token.innerTokens.push(SqlPrintTokenParser.PAREN_CLOSE_TOKEN);
1893
- return token;
1894
- }
1895
- visitSourceAliasExpression(arg) {
1896
- // Print source alias expression: [source] as [alias]
1897
- const token = new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.container, '', SqlPrintToken_1.SqlPrintTokenContainerType.SourceAliasExpression);
1898
- token.innerTokens.push(this.visit(arg.table));
1899
- if (arg.columns) {
1900
- token.innerTokens.push(SqlPrintTokenParser.PAREN_OPEN_TOKEN);
1901
- for (let i = 0; i < arg.columns.length; i++) {
1902
- if (i > 0) {
1903
- token.innerTokens.push(...SqlPrintTokenParser.argumentCommaSpaceTokens());
1904
- }
1905
- token.innerTokens.push(this.visit(arg.columns[i]));
1906
- }
1907
- token.innerTokens.push(SqlPrintTokenParser.PAREN_CLOSE_TOKEN);
1908
- }
1909
- // Handle positioned comments for SourceAliasExpression (alias name comments)
1910
- if (arg.positionedComments && arg.positionedComments.length > 0) {
1911
- this.addPositionedCommentsToToken(token, arg);
1912
- // Clear positioned comments to prevent duplicate processing
1913
- arg.positionedComments = null;
1914
- }
1915
- else if (arg.comments && arg.comments.length > 0) {
1916
- this.addCommentsToToken(token, arg.comments);
1917
- }
1918
- return token;
1919
- }
1920
- visitWhereClause(arg) {
1921
- const token = new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.keyword, 'where', SqlPrintToken_1.SqlPrintTokenContainerType.WhereClause);
1922
- this.addComponentComments(token, arg);
1923
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
1924
- token.innerTokens.push(this.visit(arg.condition));
1925
- return token;
1926
- }
1927
- visitGroupByClause(arg) {
1928
- const token = new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.keyword, 'group by', SqlPrintToken_1.SqlPrintTokenContainerType.GroupByClause);
1929
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
1930
- for (let i = 0; i < arg.grouping.length; i++) {
1931
- if (i > 0) {
1932
- token.innerTokens.push(...SqlPrintTokenParser.commaSpaceTokens());
1933
- }
1934
- token.innerTokens.push(this.visit(arg.grouping[i]));
1935
- }
1936
- return token;
1937
- }
1938
- visitHavingClause(arg) {
1939
- const token = new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.keyword, 'having', SqlPrintToken_1.SqlPrintTokenContainerType.HavingClause);
1940
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
1941
- token.innerTokens.push(this.visit(arg.condition));
1942
- return token;
1943
- }
1944
- visitWindowClause(arg) {
1945
- const token = new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.keyword, 'window', SqlPrintToken_1.SqlPrintTokenContainerType.WindowClause);
1946
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
1947
- for (let i = 0; i < arg.windows.length; i++) {
1948
- if (i > 0) {
1949
- token.innerTokens.push(...SqlPrintTokenParser.commaSpaceTokens());
1950
- }
1951
- token.innerTokens.push(this.visit(arg.windows[i]));
1952
- }
1953
- return token;
1954
- }
1955
- visitWindowFrameClause(arg) {
1956
- const token = new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.container, '', SqlPrintToken_1.SqlPrintTokenContainerType.WindowFrameClause);
1957
- token.innerTokens.push(arg.name.accept(this));
1958
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
1959
- token.innerTokens.push(new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.keyword, 'as'));
1960
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
1961
- token.innerTokens.push(SqlPrintTokenParser.PAREN_OPEN_TOKEN);
1962
- token.innerTokens.push(this.visit(arg.expression));
1963
- token.innerTokens.push(SqlPrintTokenParser.PAREN_CLOSE_TOKEN);
1964
- return token;
1965
- }
1966
- visitLimitClause(arg) {
1967
- const token = new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.keyword, 'limit', SqlPrintToken_1.SqlPrintTokenContainerType.LimitClause);
1968
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
1969
- token.innerTokens.push(this.visit(arg.value));
1970
- return token;
1971
- }
1972
- visitOffsetClause(arg) {
1973
- const token = new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.keyword, 'offset', SqlPrintToken_1.SqlPrintTokenContainerType.OffsetClause);
1974
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
1975
- token.innerTokens.push(this.visit(arg.value));
1976
- return token;
1977
- }
1978
- visitFetchClause(arg) {
1979
- const token = new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.keyword, 'fetch', SqlPrintToken_1.SqlPrintTokenContainerType.FetchClause);
1980
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
1981
- token.innerTokens.push(this.visit(arg.expression));
1982
- return token;
1983
- }
1984
- visitFetchExpression(arg) {
1985
- const token = new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.container, '', SqlPrintToken_1.SqlPrintTokenContainerType.FetchExpression);
1986
- token.innerTokens.push(new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.keyword, arg.type));
1987
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
1988
- token.innerTokens.push(arg.count.accept(this));
1989
- if (arg.unit) {
1990
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
1991
- token.innerTokens.push(new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.keyword, arg.unit));
1992
- }
1993
- return token;
1994
- }
1995
- visitForClause(arg) {
1996
- const token = new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.keyword, 'for', SqlPrintToken_1.SqlPrintTokenContainerType.ForClause);
1997
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
1998
- token.innerTokens.push(new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.keyword, arg.lockMode));
1999
- return token;
2000
- }
2001
- visitWithClause(arg) {
2002
- const token = new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.keyword, 'with', SqlPrintToken_1.SqlPrintTokenContainerType.WithClause);
2003
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
2004
- if (arg.recursive) {
2005
- token.innerTokens.push(new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.keyword, 'recursive'));
2006
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
2007
- }
2008
- for (let i = 0; i < arg.tables.length; i++) {
2009
- if (i > 0) {
2010
- token.innerTokens.push(...SqlPrintTokenParser.commaSpaceTokens());
2011
- }
2012
- token.innerTokens.push(arg.tables[i].accept(this));
2013
- }
2014
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
2015
- this.addComponentComments(token, arg);
2016
- return token;
2017
- }
2018
- visitCommonTable(arg) {
2019
- const token = new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.container, '', SqlPrintToken_1.SqlPrintTokenContainerType.CommonTable);
2020
- // Handle positioned comments for CommonTable (avoid duplication)
2021
- if (arg.positionedComments && arg.positionedComments.length > 0) {
2022
- this.addPositionedCommentsToToken(token, arg);
2023
- // Clear positioned comments to prevent duplicate processing
2024
- arg.positionedComments = null;
2025
- }
2026
- else if (arg.comments && arg.comments.length > 0) {
2027
- this.addCommentsToToken(token, arg.comments);
2028
- }
2029
- token.innerTokens.push(arg.aliasExpression.accept(this));
2030
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
2031
- token.innerTokens.push(new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.keyword, 'as'));
2032
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
2033
- if (arg.materialized !== null) {
2034
- if (arg.materialized) {
2035
- token.innerTokens.push(new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.keyword, 'materialized'));
2036
- }
2037
- else {
2038
- token.innerTokens.push(new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.keyword, 'not materialized'));
2039
- }
2040
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
2041
- }
2042
- token.innerTokens.push(SqlPrintTokenParser.PAREN_OPEN_TOKEN);
2043
- const query = new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.container, '', SqlPrintToken_1.SqlPrintTokenContainerType.SubQuerySource);
2044
- query.innerTokens.push(arg.query.accept(this));
2045
- token.innerTokens.push(query);
2046
- token.innerTokens.push(SqlPrintTokenParser.PAREN_CLOSE_TOKEN);
2047
- return token;
2048
- }
2049
- // query
2050
- visitSimpleQuery(arg) {
2051
- const token = new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.container, '', SqlPrintToken_1.SqlPrintTokenContainerType.SimpleSelectQuery);
2052
- // Handle positioned comments for SimpleSelectQuery (unified spec)
2053
- if (arg.headerComments && arg.headerComments.length > 0) {
2054
- if (this.shouldMergeHeaderComments(arg.headerComments)) {
2055
- const mergedHeaderComment = this.createHeaderMultiLineCommentBlock(arg.headerComments);
2056
- token.innerTokens.push(mergedHeaderComment);
2057
- }
2058
- else {
2059
- const headerCommentBlocks = this.createCommentBlocks(arg.headerComments, true);
2060
- token.innerTokens.push(...headerCommentBlocks);
2061
- }
2062
- if (arg.withClause) {
2063
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
2064
- }
2065
- }
2066
- if (arg.positionedComments && arg.positionedComments.length > 0) {
2067
- this.addPositionedCommentsToToken(token, arg);
2068
- // Clear positioned comments to prevent duplicate processing
2069
- arg.positionedComments = null;
2070
- }
2071
- if (arg.withClause) {
2072
- token.innerTokens.push(arg.withClause.accept(this));
2073
- }
2074
- // Add regular comments between WITH clause and SELECT clause if they exist
2075
- if (arg.comments && arg.comments.length > 0) {
2076
- const commentBlocks = this.createCommentBlocks(arg.comments);
2077
- token.innerTokens.push(...commentBlocks);
2078
- // Add a space separator after comments if there are more tokens coming
2079
- if (arg.selectClause) {
2080
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
2081
- }
2082
- }
2083
- token.innerTokens.push(arg.selectClause.accept(this));
2084
- if (!arg.fromClause) {
2085
- return token;
2086
- }
2087
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
2088
- token.innerTokens.push(arg.fromClause.accept(this));
2089
- if (arg.whereClause) {
2090
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
2091
- token.innerTokens.push(arg.whereClause.accept(this));
2092
- }
2093
- if (arg.groupByClause) {
2094
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
2095
- token.innerTokens.push(arg.groupByClause.accept(this));
2096
- }
2097
- if (arg.havingClause) {
2098
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
2099
- token.innerTokens.push(arg.havingClause.accept(this));
2100
- }
2101
- if (arg.orderByClause) {
2102
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
2103
- token.innerTokens.push(arg.orderByClause.accept(this));
2104
- }
2105
- if (arg.windowClause) {
2106
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
2107
- token.innerTokens.push(arg.windowClause.accept(this));
2108
- }
2109
- if (arg.limitClause) {
2110
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
2111
- token.innerTokens.push(arg.limitClause.accept(this));
2112
- }
2113
- if (arg.offsetClause) {
2114
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
2115
- token.innerTokens.push(arg.offsetClause.accept(this));
2116
- }
2117
- if (arg.fetchClause) {
2118
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
2119
- token.innerTokens.push(arg.fetchClause.accept(this));
2120
- }
2121
- if (arg.forClause) {
2122
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
2123
- token.innerTokens.push(arg.forClause.accept(this));
2124
- }
2125
- return token;
2126
- }
2127
- visitSubQuerySource(arg) {
2128
- const token = new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.container, '');
2129
- token.innerTokens.push(SqlPrintTokenParser.PAREN_OPEN_TOKEN);
2130
- const subQuery = new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.container, '', SqlPrintToken_1.SqlPrintTokenContainerType.SubQuerySource);
2131
- subQuery.innerTokens.push(arg.query.accept(this));
2132
- token.innerTokens.push(subQuery);
2133
- token.innerTokens.push(SqlPrintTokenParser.PAREN_CLOSE_TOKEN);
2134
- return token;
2135
- }
2136
- visitValuesQuery(arg) {
2137
- const token = new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.keyword, 'values', SqlPrintToken_1.SqlPrintTokenContainerType.ValuesQuery);
2138
- // Add headerComments before VALUES keyword
2139
- if (arg.headerComments && arg.headerComments.length > 0) {
2140
- if (this.shouldMergeHeaderComments(arg.headerComments)) {
2141
- const mergedHeaderComment = this.createHeaderMultiLineCommentBlock(arg.headerComments);
2142
- token.innerTokens.push(mergedHeaderComment);
2143
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
2144
- }
2145
- else {
2146
- const headerCommentBlocks = this.createCommentBlocks(arg.headerComments, true);
2147
- for (const commentBlock of headerCommentBlocks) {
2148
- token.innerTokens.push(commentBlock);
2149
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
2150
- }
2151
- }
2152
- }
2153
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
2154
- const values = new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.container, '', SqlPrintToken_1.SqlPrintTokenContainerType.Values);
2155
- for (let i = 0; i < arg.tuples.length; i++) {
2156
- if (i > 0) {
2157
- values.innerTokens.push(...SqlPrintTokenParser.commaSpaceTokens());
2158
- }
2159
- values.innerTokens.push(arg.tuples[i].accept(this));
2160
- }
2161
- token.innerTokens.push(values);
2162
- // Add regular comments to the token
2163
- this.addCommentsToToken(token, arg.comments);
2164
- return token;
2165
- }
2166
- visitInlineQuery(arg) {
2167
- const token = new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.container, '');
2168
- token.innerTokens.push(SqlPrintTokenParser.PAREN_OPEN_TOKEN);
2169
- const queryToken = new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.container, '', SqlPrintToken_1.SqlPrintTokenContainerType.InlineQuery);
2170
- queryToken.innerTokens.push(arg.selectQuery.accept(this));
2171
- token.innerTokens.push(queryToken);
2172
- // Add comments from the InlineQuery to the closing parenthesis
2173
- if (arg.comments && arg.comments.length > 0) {
2174
- const closingParenToken = new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.parenthesis, ')');
2175
- this.addCommentsToToken(closingParenToken, arg.comments);
2176
- token.innerTokens.push(closingParenToken);
2177
- // Clear the comments from arg to prevent duplicate output by the general comment handler
2178
- arg.comments = null;
2179
- }
2180
- else {
2181
- token.innerTokens.push(SqlPrintTokenParser.PAREN_CLOSE_TOKEN);
2182
- }
2183
- return token;
2184
- }
2185
- visitInsertQuery(arg) {
2186
- const token = new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.container, '', SqlPrintToken_1.SqlPrintTokenContainerType.InsertQuery);
2187
- if (arg.withClause) {
2188
- token.innerTokens.push(arg.withClause.accept(this));
2189
- }
2190
- token.innerTokens.push(this.visit(arg.insertClause));
2191
- // Process the select query if present
2192
- if (arg.selectQuery) {
2193
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
2194
- token.innerTokens.push(this.visit(arg.selectQuery));
2195
- }
2196
- if (arg.returningClause) {
2197
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
2198
- token.innerTokens.push(arg.returningClause.accept(this));
2199
- }
2200
- return token;
2201
- }
2202
- visitInsertClause(arg) {
2203
- const token = new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.container, '', SqlPrintToken_1.SqlPrintTokenContainerType.InsertClause);
2204
- token.innerTokens.push(new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.keyword, 'insert into'));
2205
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
2206
- token.innerTokens.push(arg.source.accept(this));
2207
- if (arg.columns && arg.columns.length > 0) {
2208
- token.innerTokens.push(SqlPrintTokenParser.PAREN_OPEN_TOKEN);
2209
- for (let i = 0; i < arg.columns.length; i++) {
2210
- if (i > 0) {
2211
- token.innerTokens.push(...SqlPrintTokenParser.commaSpaceTokens());
2212
- }
2213
- token.innerTokens.push(arg.columns[i].accept(this));
2214
- }
2215
- token.innerTokens.push(SqlPrintTokenParser.PAREN_CLOSE_TOKEN);
2216
- }
2217
- return token;
2218
- }
2219
- visitDeleteQuery(arg) {
2220
- const token = new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.container, '', SqlPrintToken_1.SqlPrintTokenContainerType.DeleteQuery);
2221
- // Attach WITH clause tokens when present before the DELETE command.
2222
- if (arg.withClause) {
2223
- token.innerTokens.push(arg.withClause.accept(this));
2224
- }
2225
- token.innerTokens.push(arg.deleteClause.accept(this));
2226
- // Append USING clause when the DELETE references additional sources.
2227
- if (arg.usingClause) {
2228
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
2229
- token.innerTokens.push(arg.usingClause.accept(this));
2230
- }
2231
- // Append WHERE clause to restrict affected rows.
2232
- if (arg.whereClause) {
2233
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
2234
- token.innerTokens.push(arg.whereClause.accept(this));
2235
- }
2236
- // Append RETURNING clause when the DELETE yields output columns.
2237
- if (arg.returningClause) {
2238
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
2239
- token.innerTokens.push(arg.returningClause.accept(this));
2240
- }
2241
- return token;
2242
- }
2243
- visitDeleteClause(arg) {
2244
- const token = new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.keyword, 'delete from', SqlPrintToken_1.SqlPrintTokenContainerType.DeleteClause);
2245
- // Render the target relation immediately after the DELETE FROM keyword.
2246
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
2247
- token.innerTokens.push(arg.source.accept(this));
2248
- return token;
2249
- }
2250
- visitUsingClause(arg) {
2251
- const token = new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.keyword, 'using', SqlPrintToken_1.SqlPrintTokenContainerType.UsingClause);
2252
- if (arg.sources.length > 0) {
2253
- // Attach the first USING source directly after the keyword.
2254
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
2255
- for (let i = 0; i < arg.sources.length; i++) {
2256
- if (i > 0) {
2257
- // Separate subsequent sources with comma and space for clarity.
2258
- token.innerTokens.push(...SqlPrintTokenParser.commaSpaceTokens());
2259
- }
2260
- token.innerTokens.push(this.visit(arg.sources[i]));
2261
- }
2262
- }
2263
- return token;
2264
- }
2265
- visitMergeQuery(arg) {
2266
- const token = new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.container, '', SqlPrintToken_1.SqlPrintTokenContainerType.MergeQuery);
2267
- if (arg.withClause) {
2268
- token.innerTokens.push(arg.withClause.accept(this));
2269
- }
2270
- token.innerTokens.push(new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.keyword, 'merge into'));
2271
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
2272
- token.innerTokens.push(arg.target.accept(this));
2273
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
2274
- token.innerTokens.push(new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.keyword, 'using'));
2275
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
2276
- token.innerTokens.push(arg.source.accept(this));
2277
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
2278
- const onClauseToken = new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.container, '', SqlPrintToken_1.SqlPrintTokenContainerType.JoinOnClause);
2279
- onClauseToken.innerTokens.push(new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.keyword, 'on'));
2280
- onClauseToken.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
2281
- onClauseToken.innerTokens.push(arg.onCondition.accept(this));
2282
- token.innerTokens.push(onClauseToken);
2283
- for (const clause of arg.whenClauses) {
2284
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
2285
- token.innerTokens.push(clause.accept(this));
2286
- }
2287
- return token;
2288
- }
2289
- visitMergeWhenClause(arg) {
2290
- const token = new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.container, '', SqlPrintToken_1.SqlPrintTokenContainerType.MergeWhenClause);
2291
- token.innerTokens.push(new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.keyword, this.mergeMatchTypeToKeyword(arg.matchType)));
2292
- if (arg.condition) {
2293
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
2294
- token.innerTokens.push(new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.keyword, 'and'));
2295
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
2296
- token.innerTokens.push(arg.condition.accept(this));
2297
- }
2298
- const thenLeadingComments = arg.getThenLeadingComments();
2299
- const thenKeywordToken = new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.keyword, 'then');
2300
- if (thenLeadingComments.length > 0) {
2301
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
2302
- const commentBlocks = this.createCommentBlocks(thenLeadingComments);
2303
- token.innerTokens.push(...commentBlocks);
2304
- token.innerTokens.push(thenKeywordToken);
2305
- }
2306
- else {
2307
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
2308
- token.innerTokens.push(thenKeywordToken);
2309
- }
2310
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
2311
- token.innerTokens.push(arg.action.accept(this));
2312
- return token;
2313
- }
2314
- visitMergeUpdateAction(arg) {
2315
- const token = new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.container, '', SqlPrintToken_1.SqlPrintTokenContainerType.MergeUpdateAction);
2316
- token.innerTokens.push(new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.keyword, 'update'));
2317
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
2318
- token.innerTokens.push(arg.setClause.accept(this));
2319
- if (arg.whereClause) {
2320
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
2321
- token.innerTokens.push(arg.whereClause.accept(this));
2322
- }
2323
- return token;
2324
- }
2325
- visitMergeDeleteAction(arg) {
2326
- const token = new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.container, '', SqlPrintToken_1.SqlPrintTokenContainerType.MergeDeleteAction);
2327
- token.innerTokens.push(new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.keyword, 'delete'));
2328
- if (arg.whereClause) {
2329
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
2330
- token.innerTokens.push(arg.whereClause.accept(this));
2331
- }
2332
- return token;
2333
- }
2334
- visitMergeInsertAction(arg) {
2335
- const token = new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.container, '', SqlPrintToken_1.SqlPrintTokenContainerType.MergeInsertAction);
2336
- token.innerTokens.push(new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.keyword, 'insert'));
2337
- if (arg.columns && arg.columns.length > 0) {
2338
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
2339
- token.innerTokens.push(SqlPrintTokenParser.PAREN_OPEN_TOKEN);
2340
- for (let i = 0; i < arg.columns.length; i++) {
2341
- if (i > 0) {
2342
- token.innerTokens.push(...SqlPrintTokenParser.commaSpaceTokens());
2343
- }
2344
- token.innerTokens.push(arg.columns[i].accept(this));
2345
- }
2346
- token.innerTokens.push(SqlPrintTokenParser.PAREN_CLOSE_TOKEN);
2347
- }
2348
- if (arg.defaultValues) {
2349
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
2350
- token.innerTokens.push(new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.keyword, 'default values'));
2351
- return token;
2352
- }
2353
- if (arg.values) {
2354
- const leadingValuesComments = arg.getValuesLeadingComments();
2355
- if (leadingValuesComments.length > 0) {
2356
- token.innerTokens.push(new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.commentNewline, ''));
2357
- const commentBlocks = this.createCommentBlocks(leadingValuesComments);
2358
- token.innerTokens.push(...commentBlocks);
2359
- }
2360
- else {
2361
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
2362
- }
2363
- const valuesKeywordToken = new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.keyword, 'values');
2364
- token.innerTokens.push(valuesKeywordToken);
2365
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
2366
- token.innerTokens.push(SqlPrintTokenParser.PAREN_OPEN_TOKEN);
2367
- token.innerTokens.push(arg.values.accept(this));
2368
- token.innerTokens.push(SqlPrintTokenParser.PAREN_CLOSE_TOKEN);
2369
- }
2370
- return token;
2371
- }
2372
- visitMergeDoNothingAction(_) {
2373
- return new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.keyword, 'do nothing', SqlPrintToken_1.SqlPrintTokenContainerType.MergeDoNothingAction);
2374
- }
2375
- mergeMatchTypeToKeyword(matchType) {
2376
- switch (matchType) {
2377
- case 'matched':
2378
- return 'when matched';
2379
- case 'not_matched':
2380
- return 'when not matched';
2381
- case 'not_matched_by_source':
2382
- return 'when not matched by source';
2383
- case 'not_matched_by_target':
2384
- return 'when not matched by target';
2385
- default:
2386
- return 'when';
2387
- }
2388
- }
2389
- visitUpdateQuery(arg) {
2390
- const token = new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.container, '', SqlPrintToken_1.SqlPrintTokenContainerType.UpdateQuery);
2391
- if (arg.withClause) {
2392
- token.innerTokens.push(arg.withClause.accept(this));
2393
- }
2394
- token.innerTokens.push(arg.updateClause.accept(this));
2395
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
2396
- token.innerTokens.push(arg.setClause.accept(this));
2397
- if (arg.fromClause) {
2398
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
2399
- token.innerTokens.push(arg.fromClause.accept(this));
2400
- }
2401
- if (arg.whereClause) {
2402
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
2403
- token.innerTokens.push(arg.whereClause.accept(this));
2404
- }
2405
- if (arg.returningClause) {
2406
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
2407
- token.innerTokens.push(arg.returningClause.accept(this));
2408
- }
2409
- return token;
2410
- }
2411
- visitUpdateClause(arg) {
2412
- const token = new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.keyword, 'update', SqlPrintToken_1.SqlPrintTokenContainerType.UpdateClause);
2413
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
2414
- token.innerTokens.push(arg.source.accept(this));
2415
- return token;
2416
- }
2417
- visitSetClause(arg) {
2418
- const token = new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.keyword, 'set', SqlPrintToken_1.SqlPrintTokenContainerType.SetClause);
2419
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
2420
- for (let i = 0; i < arg.items.length; i++) {
2421
- if (i > 0) {
2422
- token.innerTokens.push(...SqlPrintTokenParser.commaSpaceTokens());
2423
- }
2424
- token.innerTokens.push(this.visit(arg.items[i]));
2425
- }
2426
- return token;
2427
- }
2428
- visitSetClauseItem(arg) {
2429
- const token = new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.container, '', SqlPrintToken_1.SqlPrintTokenContainerType.SetClauseItem);
2430
- token.innerTokens.push(arg.column.accept(this));
2431
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
2432
- token.innerTokens.push(new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.operator, '='));
2433
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
2434
- token.innerTokens.push(arg.value.accept(this));
2435
- return token;
2436
- }
2437
- visitReturningClause(arg) {
2438
- const token = new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.keyword, 'returning', SqlPrintToken_1.SqlPrintTokenContainerType.ReturningClause);
2439
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
2440
- for (let i = 0; i < arg.columns.length; i++) {
2441
- if (i > 0) {
2442
- token.innerTokens.push(...SqlPrintTokenParser.commaSpaceTokens());
2443
- }
2444
- token.innerTokens.push(this.visit(arg.columns[i]));
2445
- }
2446
- return token;
2447
- }
2448
- visitCreateTableQuery(arg) {
2449
- var _a;
2450
- const baseKeyword = arg.isTemporary ? 'create temporary table' : 'create table';
2451
- let keywordText = arg.ifNotExists ? `${baseKeyword} if not exists` : baseKeyword;
2452
- const token = new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.keyword, keywordText, SqlPrintToken_1.SqlPrintTokenContainerType.CreateTableQuery);
2453
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
2454
- const qualifiedName = new ValueComponent_1.QualifiedName((_a = arg.namespaces) !== null && _a !== void 0 ? _a : null, arg.tableName);
2455
- token.innerTokens.push(qualifiedName.accept(this));
2456
- const definitionEntries = [...arg.columns, ...arg.tableConstraints];
2457
- if (definitionEntries.length > 0) {
2458
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
2459
- token.innerTokens.push(SqlPrintTokenParser.PAREN_OPEN_TOKEN);
2460
- const definitionToken = new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.container, '', SqlPrintToken_1.SqlPrintTokenContainerType.CreateTableDefinition);
2461
- for (let i = 0; i < definitionEntries.length; i++) {
2462
- if (i > 0) {
2463
- definitionToken.innerTokens.push(...SqlPrintTokenParser.commaSpaceTokens());
2464
- }
2465
- definitionToken.innerTokens.push(definitionEntries[i].accept(this));
2466
- }
2467
- token.innerTokens.push(definitionToken);
2468
- token.innerTokens.push(SqlPrintTokenParser.PAREN_CLOSE_TOKEN);
2469
- }
2470
- if (arg.tableOptions) {
2471
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
2472
- token.innerTokens.push(arg.tableOptions.accept(this));
2473
- }
2474
- if (arg.asSelectQuery) {
2475
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
2476
- token.innerTokens.push(new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.keyword, 'as'));
2477
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
2478
- token.innerTokens.push(arg.asSelectQuery.accept(this));
2479
- }
2480
- if (arg.withDataOption) {
2481
- // Reconstruct WITH [NO] DATA clause to mirror PostgreSQL CREATE TABLE semantics.
2482
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
2483
- token.innerTokens.push(new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.keyword, 'with'));
2484
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
2485
- if (arg.withDataOption === 'with-no-data') {
2486
- token.innerTokens.push(new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.keyword, 'no'));
2487
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
2488
- }
2489
- token.innerTokens.push(new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.keyword, 'data'));
2490
- }
2491
- return token;
2492
- }
2493
- visitTableColumnDefinition(arg) {
2494
- const token = new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.container, '', SqlPrintToken_1.SqlPrintTokenContainerType.TableColumnDefinition);
2495
- token.innerTokens.push(arg.name.accept(this));
2496
- if (arg.dataType) {
2497
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
2498
- token.innerTokens.push(arg.dataType.accept(this));
2499
- }
2500
- for (const constraint of arg.constraints) {
2501
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
2502
- token.innerTokens.push(constraint.accept(this));
2503
- }
2504
- return token;
2505
- }
2506
- visitColumnConstraintDefinition(arg) {
2507
- const token = new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.container, '', SqlPrintToken_1.SqlPrintTokenContainerType.ColumnConstraintDefinition);
2508
- if (arg.constraintName) {
2509
- token.innerTokens.push(new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.keyword, 'constraint'));
2510
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
2511
- token.innerTokens.push(arg.constraintName.accept(this));
2512
- }
2513
- const appendKeyword = (text) => {
2514
- if (token.innerTokens.length > 0) {
2515
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
2516
- }
2517
- token.innerTokens.push(new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.keyword, text));
2518
- };
2519
- const appendComponent = (component) => {
2520
- if (token.innerTokens.length > 0) {
2521
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
2522
- }
2523
- token.innerTokens.push(component.accept(this));
2524
- };
2525
- switch (arg.kind) {
2526
- case 'not-null':
2527
- appendKeyword('not null');
2528
- break;
2529
- case 'null':
2530
- appendKeyword('null');
2531
- break;
2532
- case 'default':
2533
- appendKeyword('default');
2534
- if (arg.defaultValue) {
2535
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
2536
- token.innerTokens.push(arg.defaultValue.accept(this));
2537
- }
2538
- break;
2539
- case 'primary-key':
2540
- appendKeyword('primary key');
2541
- break;
2542
- case 'unique':
2543
- appendKeyword('unique');
2544
- break;
2545
- case 'references':
2546
- if (arg.reference) {
2547
- appendComponent(arg.reference);
2548
- }
2549
- break;
2550
- case 'check':
2551
- if (arg.checkExpression) {
2552
- appendKeyword('check');
2553
- token.innerTokens.push(this.wrapWithParenExpression(arg.checkExpression));
2554
- }
2555
- break;
2556
- case 'generated-always-identity':
2557
- case 'generated-by-default-identity':
2558
- case 'raw':
2559
- if (arg.rawClause) {
2560
- appendComponent(arg.rawClause);
2561
- }
2562
- break;
2563
- }
2564
- return token;
2565
- }
2566
- visitTableConstraintDefinition(arg) {
2567
- var _a, _b, _c;
2568
- const token = new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.container, '', SqlPrintToken_1.SqlPrintTokenContainerType.TableConstraintDefinition);
2569
- const appendKeyword = (text) => {
2570
- if (token.innerTokens.length > 0) {
2571
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
2572
- }
2573
- token.innerTokens.push(new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.keyword, text));
2574
- };
2575
- const appendComponent = (component) => {
2576
- if (token.innerTokens.length > 0) {
2577
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
2578
- }
2579
- token.innerTokens.push(component.accept(this));
2580
- };
2581
- const appendColumns = (columns) => {
2582
- if (!columns || columns.length === 0) {
2583
- return;
2584
- }
2585
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
2586
- token.innerTokens.push(SqlPrintTokenParser.PAREN_OPEN_TOKEN);
2587
- const listToken = new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.container, '', SqlPrintToken_1.SqlPrintTokenContainerType.ValueList);
2588
- for (let i = 0; i < columns.length; i++) {
2589
- if (i > 0) {
2590
- listToken.innerTokens.push(...SqlPrintTokenParser.commaSpaceTokens());
2591
- }
2592
- listToken.innerTokens.push(columns[i].accept(this));
2593
- }
2594
- token.innerTokens.push(listToken);
2595
- token.innerTokens.push(SqlPrintTokenParser.PAREN_CLOSE_TOKEN);
2596
- };
2597
- const useMysqlConstraintStyle = this.constraintStyle === 'mysql';
2598
- const inlineNameKinds = new Set(['primary-key', 'unique', 'foreign-key']);
2599
- const shouldInlineConstraintName = useMysqlConstraintStyle && !!arg.constraintName && inlineNameKinds.has(arg.kind);
2600
- if (arg.constraintName && !shouldInlineConstraintName) {
2601
- appendKeyword('constraint');
2602
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
2603
- token.innerTokens.push(arg.constraintName.accept(this));
2604
- }
2605
- switch (arg.kind) {
2606
- case 'primary-key':
2607
- appendKeyword('primary key');
2608
- if (shouldInlineConstraintName && arg.constraintName) {
2609
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
2610
- token.innerTokens.push(arg.constraintName.accept(this));
2611
- }
2612
- appendColumns((_a = arg.columns) !== null && _a !== void 0 ? _a : []);
2613
- break;
2614
- case 'unique':
2615
- if (useMysqlConstraintStyle) {
2616
- appendKeyword('unique key');
2617
- if (shouldInlineConstraintName && arg.constraintName) {
2618
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
2619
- token.innerTokens.push(arg.constraintName.accept(this));
2620
- }
2621
- }
2622
- else {
2623
- appendKeyword('unique');
2624
- }
2625
- appendColumns((_b = arg.columns) !== null && _b !== void 0 ? _b : []);
2626
- break;
2627
- case 'foreign-key':
2628
- appendKeyword('foreign key');
2629
- if (shouldInlineConstraintName && arg.constraintName) {
2630
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
2631
- token.innerTokens.push(arg.constraintName.accept(this));
2632
- }
2633
- appendColumns((_c = arg.columns) !== null && _c !== void 0 ? _c : []);
2634
- if (arg.reference) {
2635
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
2636
- token.innerTokens.push(arg.reference.accept(this));
2637
- }
2638
- break;
2639
- case 'check':
2640
- if (arg.checkExpression) {
2641
- appendKeyword('check');
2642
- token.innerTokens.push(this.wrapWithParenExpression(arg.checkExpression));
2643
- }
2644
- break;
2645
- case 'raw':
2646
- if (arg.rawClause) {
2647
- appendComponent(arg.rawClause);
2648
- }
2649
- break;
2650
- }
2651
- return token;
2652
- }
2653
- wrapWithParenExpression(expression) {
2654
- // Reuse existing parentheses groups to avoid double-wrapping when callers already provided them.
2655
- if (expression instanceof ValueComponent_1.ParenExpression) {
2656
- return this.visit(expression);
2657
- }
2658
- // Synthesize a ParenExpression wrapper so nested boolean groups render with consistent indentation.
2659
- const synthetic = new ValueComponent_1.ParenExpression(expression);
2660
- return this.visit(synthetic);
2661
- }
2662
- visitReferenceDefinition(arg) {
2663
- const token = new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.container, '', SqlPrintToken_1.SqlPrintTokenContainerType.ReferenceDefinition);
2664
- token.innerTokens.push(new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.keyword, 'references'));
2665
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
2666
- token.innerTokens.push(arg.targetTable.accept(this));
2667
- if (arg.columns && arg.columns.length > 0) {
2668
- token.innerTokens.push(SqlPrintTokenParser.PAREN_OPEN_TOKEN);
2669
- const columnList = new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.container, '', SqlPrintToken_1.SqlPrintTokenContainerType.ValueList);
2670
- for (let i = 0; i < arg.columns.length; i++) {
2671
- if (i > 0) {
2672
- columnList.innerTokens.push(...SqlPrintTokenParser.commaSpaceTokens());
2673
- }
2674
- columnList.innerTokens.push(arg.columns[i].accept(this));
2675
- }
2676
- token.innerTokens.push(columnList);
2677
- token.innerTokens.push(SqlPrintTokenParser.PAREN_CLOSE_TOKEN);
2678
- }
2679
- if (arg.matchType) {
2680
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
2681
- token.innerTokens.push(new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.keyword, `match ${arg.matchType}`));
2682
- }
2683
- if (arg.onDelete) {
2684
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
2685
- token.innerTokens.push(new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.keyword, 'on delete'));
2686
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
2687
- token.innerTokens.push(new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.keyword, arg.onDelete));
2688
- }
2689
- if (arg.onUpdate) {
2690
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
2691
- token.innerTokens.push(new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.keyword, 'on update'));
2692
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
2693
- token.innerTokens.push(new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.keyword, arg.onUpdate));
2694
- }
2695
- if (arg.deferrable === 'deferrable') {
2696
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
2697
- token.innerTokens.push(new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.keyword, 'deferrable'));
2698
- }
2699
- else if (arg.deferrable === 'not deferrable') {
2700
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
2701
- token.innerTokens.push(new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.keyword, 'not deferrable'));
2702
- }
2703
- if (arg.initially === 'immediate') {
2704
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
2705
- token.innerTokens.push(new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.keyword, 'initially immediate'));
2706
- }
2707
- else if (arg.initially === 'deferred') {
2708
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
2709
- token.innerTokens.push(new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.keyword, 'initially deferred'));
2710
- }
2711
- return token;
2712
- }
2713
- visitCreateIndexStatement(arg) {
2714
- const keywordParts = ['create'];
2715
- if (arg.unique) {
2716
- keywordParts.push('unique');
2717
- }
2718
- keywordParts.push('index');
2719
- if (arg.concurrently) {
2720
- keywordParts.push('concurrently');
2721
- }
2722
- if (arg.ifNotExists) {
2723
- keywordParts.push('if not exists');
2724
- }
2725
- const token = new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.keyword, keywordParts.join(' '), SqlPrintToken_1.SqlPrintTokenContainerType.CreateIndexStatement);
2726
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
2727
- token.innerTokens.push(arg.indexName.accept(this));
2728
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
2729
- token.innerTokens.push(new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.keyword, 'on'));
2730
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
2731
- token.innerTokens.push(arg.tableName.accept(this));
2732
- if (arg.usingMethod) {
2733
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
2734
- token.innerTokens.push(new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.keyword, 'using'));
2735
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
2736
- token.innerTokens.push(arg.usingMethod.accept(this));
2737
- }
2738
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
2739
- token.innerTokens.push(SqlPrintTokenParser.PAREN_OPEN_TOKEN);
2740
- const columnList = new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.container, '', SqlPrintToken_1.SqlPrintTokenContainerType.IndexColumnList);
2741
- for (let i = 0; i < arg.columns.length; i++) {
2742
- if (i > 0) {
2743
- columnList.innerTokens.push(...SqlPrintTokenParser.commaSpaceTokens());
2744
- }
2745
- columnList.innerTokens.push(arg.columns[i].accept(this));
2746
- }
2747
- token.innerTokens.push(columnList);
2748
- token.innerTokens.push(SqlPrintTokenParser.PAREN_CLOSE_TOKEN);
2749
- if (arg.include && arg.include.length > 0) {
2750
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
2751
- token.innerTokens.push(new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.keyword, 'include'));
2752
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
2753
- token.innerTokens.push(SqlPrintTokenParser.PAREN_OPEN_TOKEN);
2754
- const includeList = new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.container, '', SqlPrintToken_1.SqlPrintTokenContainerType.ValueList);
2755
- for (let i = 0; i < arg.include.length; i++) {
2756
- if (i > 0) {
2757
- includeList.innerTokens.push(...SqlPrintTokenParser.commaSpaceTokens());
2758
- }
2759
- includeList.innerTokens.push(arg.include[i].accept(this));
2760
- }
2761
- token.innerTokens.push(includeList);
2762
- token.innerTokens.push(SqlPrintTokenParser.PAREN_CLOSE_TOKEN);
2763
- }
2764
- if (arg.withOptions) {
2765
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
2766
- token.innerTokens.push(arg.withOptions.accept(this));
2767
- }
2768
- if (arg.tablespace) {
2769
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
2770
- token.innerTokens.push(new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.keyword, 'tablespace'));
2771
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
2772
- token.innerTokens.push(arg.tablespace.accept(this));
2773
- }
2774
- if (arg.where) {
2775
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
2776
- token.innerTokens.push(new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.keyword, 'where'));
2777
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
2778
- token.innerTokens.push(this.visit(arg.where));
2779
- }
2780
- return token;
2781
- }
2782
- visitIndexColumnDefinition(arg) {
2783
- const token = new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.container, '', SqlPrintToken_1.SqlPrintTokenContainerType.IndexColumnDefinition);
2784
- token.innerTokens.push(this.visit(arg.expression));
2785
- if (arg.collation) {
2786
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
2787
- token.innerTokens.push(new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.keyword, 'collate'));
2788
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
2789
- token.innerTokens.push(arg.collation.accept(this));
2790
- }
2791
- if (arg.operatorClass) {
2792
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
2793
- token.innerTokens.push(arg.operatorClass.accept(this));
2794
- }
2795
- if (arg.sortOrder) {
2796
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
2797
- token.innerTokens.push(new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.keyword, arg.sortOrder));
2798
- }
2799
- if (arg.nullsOrder) {
2800
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
2801
- token.innerTokens.push(new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.keyword, `nulls ${arg.nullsOrder}`));
2802
- }
2803
- return token;
2804
- }
2805
- visitDropTableStatement(arg) {
2806
- const keyword = arg.ifExists ? 'drop table if exists' : 'drop table';
2807
- const token = new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.keyword, keyword, SqlPrintToken_1.SqlPrintTokenContainerType.DropTableStatement);
2808
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
2809
- const tableList = new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.container, '', SqlPrintToken_1.SqlPrintTokenContainerType.ValueList);
2810
- for (let i = 0; i < arg.tables.length; i++) {
2811
- if (i > 0) {
2812
- tableList.innerTokens.push(...SqlPrintTokenParser.commaSpaceTokens());
2813
- }
2814
- tableList.innerTokens.push(arg.tables[i].accept(this));
2815
- }
2816
- token.innerTokens.push(tableList);
2817
- if (arg.behavior) {
2818
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
2819
- token.innerTokens.push(new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.keyword, arg.behavior));
2820
- }
2821
- return token;
2822
- }
2823
- visitDropIndexStatement(arg) {
2824
- const keywordParts = ['drop', 'index'];
2825
- if (arg.concurrently) {
2826
- keywordParts.push('concurrently');
2827
- }
2828
- if (arg.ifExists) {
2829
- keywordParts.push('if exists');
2830
- }
2831
- const token = new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.keyword, keywordParts.join(' '), SqlPrintToken_1.SqlPrintTokenContainerType.DropIndexStatement);
2832
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
2833
- const indexList = new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.container, '', SqlPrintToken_1.SqlPrintTokenContainerType.ValueList);
2834
- for (let i = 0; i < arg.indexNames.length; i++) {
2835
- if (i > 0) {
2836
- indexList.innerTokens.push(...SqlPrintTokenParser.commaSpaceTokens());
2837
- }
2838
- indexList.innerTokens.push(arg.indexNames[i].accept(this));
2839
- }
2840
- token.innerTokens.push(indexList);
2841
- if (arg.behavior) {
2842
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
2843
- token.innerTokens.push(new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.keyword, arg.behavior));
2844
- }
2845
- return token;
2846
- }
2847
- visitAlterTableStatement(arg) {
2848
- const keywordParts = ['alter', 'table'];
2849
- if (arg.ifExists) {
2850
- keywordParts.push('if exists');
2851
- }
2852
- if (arg.only) {
2853
- keywordParts.push('only');
2854
- }
2855
- const token = new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.keyword, keywordParts.join(' '), SqlPrintToken_1.SqlPrintTokenContainerType.AlterTableStatement);
2856
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
2857
- token.innerTokens.push(arg.table.accept(this));
2858
- for (let i = 0; i < arg.actions.length; i++) {
2859
- if (i === 0) {
2860
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
2861
- }
2862
- else {
2863
- token.innerTokens.push(SqlPrintTokenParser.COMMA_TOKEN);
2864
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
2865
- }
2866
- token.innerTokens.push(arg.actions[i].accept(this));
2867
- }
2868
- return token;
2869
- }
2870
- visitAlterTableAddConstraint(arg) {
2871
- const keyword = arg.ifNotExists ? 'add if not exists' : 'add';
2872
- const token = new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.container, '', SqlPrintToken_1.SqlPrintTokenContainerType.AlterTableAddConstraint);
2873
- token.innerTokens.push(new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.keyword, keyword));
2874
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
2875
- token.innerTokens.push(arg.constraint.accept(this));
2876
- if (arg.notValid) {
2877
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
2878
- token.innerTokens.push(new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.keyword, 'not valid'));
2879
- }
2880
- return token;
2881
- }
2882
- visitAlterTableDropConstraint(arg) {
2883
- let keyword = 'drop constraint';
2884
- if (arg.ifExists) {
2885
- keyword += ' if exists';
2886
- }
2887
- const token = new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.container, '', SqlPrintToken_1.SqlPrintTokenContainerType.AlterTableDropConstraint);
2888
- token.innerTokens.push(new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.keyword, keyword));
2889
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
2890
- token.innerTokens.push(arg.constraintName.accept(this));
2891
- if (arg.behavior) {
2892
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
2893
- token.innerTokens.push(new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.keyword, arg.behavior));
2894
- }
2895
- return token;
2896
- }
2897
- visitAlterTableDropColumn(arg) {
2898
- let keyword = 'drop column';
2899
- if (arg.ifExists) {
2900
- keyword += ' if exists';
2901
- }
2902
- const token = new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.container, '', SqlPrintToken_1.SqlPrintTokenContainerType.AlterTableDropColumn);
2903
- token.innerTokens.push(new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.keyword, keyword));
2904
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
2905
- token.innerTokens.push(arg.columnName.accept(this));
2906
- if (arg.behavior) {
2907
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
2908
- token.innerTokens.push(new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.keyword, arg.behavior));
2909
- }
2910
- return token;
2911
- }
2912
- visitDropConstraintStatement(arg) {
2913
- let keyword = 'drop constraint';
2914
- if (arg.ifExists) {
2915
- keyword += ' if exists';
2916
- }
2917
- const token = new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.keyword, keyword, SqlPrintToken_1.SqlPrintTokenContainerType.DropConstraintStatement);
2918
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
2919
- token.innerTokens.push(arg.constraintName.accept(this));
2920
- if (arg.behavior) {
2921
- token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
2922
- token.innerTokens.push(new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.keyword, arg.behavior));
2923
- }
2924
- return token;
2925
- }
2926
- }
2927
- exports.SqlPrintTokenParser = SqlPrintTokenParser;
2928
- // Static tokens for common symbols
2929
- SqlPrintTokenParser.SPACE_TOKEN = new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.space, ' ');
2930
- SqlPrintTokenParser.COMMA_TOKEN = new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.comma, ',');
2931
- SqlPrintTokenParser.ARGUMENT_SPLIT_COMMA_TOKEN = new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.argumentSplitter, ',');
2932
- SqlPrintTokenParser.PAREN_OPEN_TOKEN = new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.parenthesis, '(');
2933
- SqlPrintTokenParser.PAREN_CLOSE_TOKEN = new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.parenthesis, ')');
2934
- SqlPrintTokenParser.DOT_TOKEN = new SqlPrintToken_1.SqlPrintToken(SqlPrintToken_1.SqlPrintTokenType.dot, '.');
2935
- // Set of component kinds that handle their own positioned comments
2936
- // Note: Cannot use static readonly due to circular dependency issues with class initialization
2937
- SqlPrintTokenParser._selfHandlingComponentTypes = null;
2938
- //# sourceMappingURL=SqlPrintTokenParser.js.map