rawsql-ts 0.12.0 → 0.13.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (537) hide show
  1. package/LICENSE +21 -0
  2. package/dist/esm/index.js +11 -0
  3. package/dist/esm/index.js.map +1 -1
  4. package/dist/esm/index.min.js +16 -16
  5. package/dist/esm/index.min.js.map +3 -3
  6. package/dist/esm/src/index.d.ts +12 -0
  7. package/dist/esm/src/index.js +11 -0
  8. package/dist/esm/src/index.js.map +1 -1
  9. package/dist/esm/src/models/Clause.d.ts +7 -3
  10. package/dist/esm/src/models/Clause.js +17 -4
  11. package/dist/esm/src/models/Clause.js.map +1 -1
  12. package/dist/esm/src/models/DDLStatements.d.ts +14 -2
  13. package/dist/esm/src/models/DDLStatements.js +12 -0
  14. package/dist/esm/src/models/DDLStatements.js.map +1 -1
  15. package/dist/esm/src/models/InsertQuery.d.ts +1 -4
  16. package/dist/esm/src/models/InsertQuery.js +3 -5
  17. package/dist/esm/src/models/InsertQuery.js.map +1 -1
  18. package/dist/esm/src/models/SqlPrintToken.d.ts +1 -0
  19. package/dist/esm/src/models/SqlPrintToken.js +1 -0
  20. package/dist/esm/src/models/SqlPrintToken.js.map +1 -1
  21. package/dist/esm/src/models/TableDefinitionModel.d.ts +39 -0
  22. package/dist/esm/src/models/TableDefinitionModel.js +77 -0
  23. package/dist/esm/src/models/TableDefinitionModel.js.map +1 -0
  24. package/dist/esm/src/models/ValuesQuery.d.ts +2 -0
  25. package/dist/esm/src/models/ValuesQuery.js +1 -0
  26. package/dist/esm/src/models/ValuesQuery.js.map +1 -1
  27. package/dist/esm/src/parsers/AlterTableParser.js +1 -1
  28. package/dist/esm/src/parsers/AlterTableParser.js.map +1 -1
  29. package/dist/esm/src/parsers/InsertQueryParser.js +4 -1
  30. package/dist/esm/src/parsers/InsertQueryParser.js.map +1 -1
  31. package/dist/esm/src/parsers/ReturningClauseParser.js +33 -47
  32. package/dist/esm/src/parsers/ReturningClauseParser.js.map +1 -1
  33. package/dist/esm/src/parsers/SqlParser.d.ts +0 -1
  34. package/dist/esm/src/parsers/SqlParser.js +44 -58
  35. package/dist/esm/src/parsers/SqlParser.js.map +1 -1
  36. package/dist/esm/src/parsers/SqlPrintTokenParser.d.ts +1 -0
  37. package/dist/esm/src/parsers/SqlPrintTokenParser.js +23 -5
  38. package/dist/esm/src/parsers/SqlPrintTokenParser.js.map +1 -1
  39. package/dist/esm/src/tokenReaders/LiteralTokenReader.js +7 -0
  40. package/dist/esm/src/tokenReaders/LiteralTokenReader.js.map +1 -1
  41. package/dist/esm/src/transformers/DDLDiffGenerator.d.ts +14 -0
  42. package/dist/esm/src/transformers/DDLDiffGenerator.js +197 -0
  43. package/dist/esm/src/transformers/DDLDiffGenerator.js.map +1 -0
  44. package/dist/esm/src/transformers/DDLGeneralizer.d.ts +13 -0
  45. package/dist/esm/src/transformers/DDLGeneralizer.js +98 -0
  46. package/dist/esm/src/transformers/DDLGeneralizer.js.map +1 -0
  47. package/dist/esm/src/transformers/DDLToFixtureConverter.d.ts +19 -0
  48. package/dist/esm/src/transformers/DDLToFixtureConverter.js +202 -0
  49. package/dist/esm/src/transformers/DDLToFixtureConverter.js.map +1 -0
  50. package/dist/esm/src/transformers/DeleteResultSelectConverter.d.ts +53 -0
  51. package/dist/esm/src/transformers/DeleteResultSelectConverter.js +394 -0
  52. package/dist/esm/src/transformers/DeleteResultSelectConverter.js.map +1 -0
  53. package/dist/esm/src/transformers/FixtureCteBuilder.d.ts +60 -0
  54. package/dist/esm/src/transformers/FixtureCteBuilder.js +147 -0
  55. package/dist/esm/src/transformers/FixtureCteBuilder.js.map +1 -0
  56. package/dist/esm/src/transformers/InsertQuerySelectValuesConverter.js +5 -2
  57. package/dist/esm/src/transformers/InsertQuerySelectValuesConverter.js.map +1 -1
  58. package/dist/esm/src/transformers/InsertResultSelectConverter.d.ts +64 -0
  59. package/dist/esm/src/transformers/InsertResultSelectConverter.js +495 -0
  60. package/dist/esm/src/transformers/InsertResultSelectConverter.js.map +1 -0
  61. package/dist/esm/src/transformers/MergeResultSelectConverter.d.ts +38 -0
  62. package/dist/esm/src/transformers/MergeResultSelectConverter.js +306 -0
  63. package/dist/esm/src/transformers/MergeResultSelectConverter.js.map +1 -0
  64. package/dist/esm/src/transformers/QueryBuilder.d.ts +11 -0
  65. package/dist/esm/src/transformers/QueryBuilder.js +19 -3
  66. package/dist/esm/src/transformers/QueryBuilder.js.map +1 -1
  67. package/dist/esm/src/transformers/SelectResultSelectConverter.d.ts +10 -0
  68. package/dist/esm/src/transformers/SelectResultSelectConverter.js +32 -0
  69. package/dist/esm/src/transformers/SelectResultSelectConverter.js.map +1 -0
  70. package/dist/esm/src/transformers/SimulatedSelectConverter.d.ts +23 -0
  71. package/dist/esm/src/transformers/SimulatedSelectConverter.js +61 -0
  72. package/dist/esm/src/transformers/SimulatedSelectConverter.js.map +1 -0
  73. package/dist/esm/src/transformers/UpdateResultSelectConverter.d.ts +51 -0
  74. package/dist/esm/src/transformers/UpdateResultSelectConverter.js +340 -0
  75. package/dist/esm/src/transformers/UpdateResultSelectConverter.js.map +1 -0
  76. package/dist/esm/src/utils/SelectQueryWithClauseHelper.d.ts +12 -0
  77. package/dist/esm/src/utils/SelectQueryWithClauseHelper.js +43 -0
  78. package/dist/esm/src/utils/SelectQueryWithClauseHelper.js.map +1 -0
  79. package/dist/esm/src/utils/ValueComponentRewriter.d.ts +3 -0
  80. package/dist/esm/src/utils/ValueComponentRewriter.js +180 -0
  81. package/dist/esm/src/utils/ValueComponentRewriter.js.map +1 -0
  82. package/dist/esm/tsconfig.browser.tsbuildinfo +1 -1
  83. package/dist/formatters/OriginalFormatRestorer.js +139 -0
  84. package/dist/formatters/OriginalFormatRestorer.js.map +1 -0
  85. package/dist/index.js +144 -0
  86. package/dist/index.js.map +1 -0
  87. package/dist/index.min.js +17 -17
  88. package/dist/index.min.js.map +3 -3
  89. package/dist/models/BinarySelectQuery.js +198 -0
  90. package/dist/models/BinarySelectQuery.js.map +1 -0
  91. package/dist/models/CTEError.js +37 -0
  92. package/dist/models/CTEError.js.map +1 -0
  93. package/dist/models/Clause.js +535 -0
  94. package/dist/models/Clause.js.map +1 -0
  95. package/dist/models/CreateTableQuery.js +135 -0
  96. package/dist/models/CreateTableQuery.js.map +1 -0
  97. package/dist/models/DDLStatements.js +275 -0
  98. package/dist/models/DDLStatements.js.map +1 -0
  99. package/dist/models/DeleteQuery.js +20 -0
  100. package/dist/models/DeleteQuery.js.map +1 -0
  101. package/dist/models/FormattingLexeme.js +3 -0
  102. package/dist/models/FormattingLexeme.js.map +1 -0
  103. package/dist/models/HintClause.js +41 -0
  104. package/dist/models/HintClause.js.map +1 -0
  105. package/dist/models/InsertQuery.js +23 -0
  106. package/dist/models/InsertQuery.js.map +1 -0
  107. package/dist/models/KeywordTrie.js +54 -0
  108. package/dist/models/KeywordTrie.js.map +1 -0
  109. package/dist/models/Lexeme.js +22 -0
  110. package/dist/models/Lexeme.js.map +1 -0
  111. package/dist/models/MergeQuery.js +104 -0
  112. package/dist/models/MergeQuery.js.map +1 -0
  113. package/dist/models/SelectQuery.js +22 -0
  114. package/dist/models/SelectQuery.js.map +1 -0
  115. package/dist/models/SimpleSelectQuery.js +648 -0
  116. package/dist/models/SimpleSelectQuery.js.map +1 -0
  117. package/dist/models/SqlComponent.js +73 -0
  118. package/dist/models/SqlComponent.js.map +1 -0
  119. package/dist/models/SqlPrintToken.js +143 -0
  120. package/dist/models/SqlPrintToken.js.map +1 -0
  121. package/dist/models/TableDefinitionModel.js +86 -0
  122. package/dist/models/TableDefinitionModel.js.map +1 -0
  123. package/dist/models/UpdateQuery.js +29 -0
  124. package/dist/models/UpdateQuery.js.map +1 -0
  125. package/dist/models/ValueComponent.js +380 -0
  126. package/dist/models/ValueComponent.js.map +1 -0
  127. package/dist/models/ValuesQuery.js +62 -0
  128. package/dist/models/ValuesQuery.js.map +1 -0
  129. package/dist/parsers/AlterTableParser.js +490 -0
  130. package/dist/parsers/AlterTableParser.js.map +1 -0
  131. package/dist/parsers/AnalyzeStatementParser.js +94 -0
  132. package/dist/parsers/AnalyzeStatementParser.js.map +1 -0
  133. package/dist/parsers/CommandExpressionParser.js +213 -0
  134. package/dist/parsers/CommandExpressionParser.js.map +1 -0
  135. package/dist/parsers/CommonTableParser.js +177 -0
  136. package/dist/parsers/CommonTableParser.js.map +1 -0
  137. package/dist/parsers/CreateIndexParser.js +241 -0
  138. package/dist/parsers/CreateIndexParser.js.map +1 -0
  139. package/dist/parsers/CreateTableParser.js +738 -0
  140. package/dist/parsers/CreateTableParser.js.map +1 -0
  141. package/dist/parsers/DeleteClauseParser.js +37 -0
  142. package/dist/parsers/DeleteClauseParser.js.map +1 -0
  143. package/dist/parsers/DeleteQueryParser.js +77 -0
  144. package/dist/parsers/DeleteQueryParser.js.map +1 -0
  145. package/dist/parsers/DropConstraintParser.js +51 -0
  146. package/dist/parsers/DropConstraintParser.js.map +1 -0
  147. package/dist/parsers/DropIndexParser.js +73 -0
  148. package/dist/parsers/DropIndexParser.js.map +1 -0
  149. package/dist/parsers/DropTableParser.js +63 -0
  150. package/dist/parsers/DropTableParser.js.map +1 -0
  151. package/dist/parsers/ExplainStatementParser.js +189 -0
  152. package/dist/parsers/ExplainStatementParser.js.map +1 -0
  153. package/dist/parsers/FetchClauseParser.js +89 -0
  154. package/dist/parsers/FetchClauseParser.js.map +1 -0
  155. package/dist/parsers/ForClauseParser.js +58 -0
  156. package/dist/parsers/ForClauseParser.js.map +1 -0
  157. package/dist/parsers/FromClauseParser.js +54 -0
  158. package/dist/parsers/FromClauseParser.js.map +1 -0
  159. package/dist/parsers/FullNameParser.js +110 -0
  160. package/dist/parsers/FullNameParser.js.map +1 -0
  161. package/dist/parsers/FunctionExpressionParser.js +524 -0
  162. package/dist/parsers/FunctionExpressionParser.js.map +1 -0
  163. package/dist/parsers/GroupByParser.js +58 -0
  164. package/dist/parsers/GroupByParser.js.map +1 -0
  165. package/dist/parsers/HavingParser.js +36 -0
  166. package/dist/parsers/HavingParser.js.map +1 -0
  167. package/dist/parsers/IdentifierDecorator.js +17 -0
  168. package/dist/parsers/IdentifierDecorator.js.map +1 -0
  169. package/dist/parsers/IdentifierParser.js +15 -0
  170. package/dist/parsers/IdentifierParser.js.map +1 -0
  171. package/dist/parsers/InsertQueryParser.js +162 -0
  172. package/dist/parsers/InsertQueryParser.js.map +1 -0
  173. package/dist/parsers/JoinClauseParser.js +117 -0
  174. package/dist/parsers/JoinClauseParser.js.map +1 -0
  175. package/dist/parsers/JoinOnClauseParser.js +21 -0
  176. package/dist/parsers/JoinOnClauseParser.js.map +1 -0
  177. package/dist/parsers/JoinUsingClauseParser.js +23 -0
  178. package/dist/parsers/JoinUsingClauseParser.js.map +1 -0
  179. package/dist/parsers/KeywordParser.js +99 -0
  180. package/dist/parsers/KeywordParser.js.map +1 -0
  181. package/dist/parsers/LimitClauseParser.js +38 -0
  182. package/dist/parsers/LimitClauseParser.js.map +1 -0
  183. package/dist/parsers/LiteralParser.js +48 -0
  184. package/dist/parsers/LiteralParser.js.map +1 -0
  185. package/dist/parsers/MergeQueryParser.js +483 -0
  186. package/dist/parsers/MergeQueryParser.js.map +1 -0
  187. package/dist/parsers/OffsetClauseParser.js +42 -0
  188. package/dist/parsers/OffsetClauseParser.js.map +1 -0
  189. package/dist/parsers/OrderByClauseParser.js +108 -0
  190. package/dist/parsers/OrderByClauseParser.js.map +1 -0
  191. package/dist/parsers/OverExpressionParser.js +44 -0
  192. package/dist/parsers/OverExpressionParser.js.map +1 -0
  193. package/dist/parsers/ParameterDecorator.js +40 -0
  194. package/dist/parsers/ParameterDecorator.js.map +1 -0
  195. package/dist/parsers/ParameterExpressionParser.js +24 -0
  196. package/dist/parsers/ParameterExpressionParser.js.map +1 -0
  197. package/dist/parsers/ParenExpressionParser.js +109 -0
  198. package/dist/parsers/ParenExpressionParser.js.map +1 -0
  199. package/dist/parsers/ParseError.js +25 -0
  200. package/dist/parsers/ParseError.js.map +1 -0
  201. package/dist/parsers/PartitionByParser.js +53 -0
  202. package/dist/parsers/PartitionByParser.js.map +1 -0
  203. package/dist/parsers/ReturningClauseParser.js +64 -0
  204. package/dist/parsers/ReturningClauseParser.js.map +1 -0
  205. package/dist/parsers/SelectClauseParser.js +244 -0
  206. package/dist/parsers/SelectClauseParser.js.map +1 -0
  207. package/dist/parsers/SelectQueryParser.js +564 -0
  208. package/dist/parsers/SelectQueryParser.js.map +1 -0
  209. package/dist/parsers/SequenceParser.js +245 -0
  210. package/dist/parsers/SequenceParser.js.map +1 -0
  211. package/dist/parsers/SetClauseParser.js +125 -0
  212. package/dist/parsers/SetClauseParser.js.map +1 -0
  213. package/dist/parsers/SourceAliasExpressionParser.js +60 -0
  214. package/dist/parsers/SourceAliasExpressionParser.js.map +1 -0
  215. package/dist/parsers/SourceExpressionParser.js +69 -0
  216. package/dist/parsers/SourceExpressionParser.js.map +1 -0
  217. package/dist/parsers/SourceParser.js +144 -0
  218. package/dist/parsers/SourceParser.js.map +1 -0
  219. package/dist/parsers/SqlParser.js +431 -0
  220. package/dist/parsers/SqlParser.js.map +1 -0
  221. package/dist/parsers/SqlPrintTokenParser.js +3289 -0
  222. package/dist/parsers/SqlPrintTokenParser.js.map +1 -0
  223. package/dist/parsers/SqlTokenizer.js +553 -0
  224. package/dist/parsers/SqlTokenizer.js.map +1 -0
  225. package/dist/parsers/StringSpecifierExpressionParser.js +22 -0
  226. package/dist/parsers/StringSpecifierExpressionParser.js.map +1 -0
  227. package/dist/parsers/UnaryExpressionParser.js +39 -0
  228. package/dist/parsers/UnaryExpressionParser.js.map +1 -0
  229. package/dist/parsers/UpdateClauseParser.js +21 -0
  230. package/dist/parsers/UpdateClauseParser.js.map +1 -0
  231. package/dist/parsers/UpdateQueryParser.js +98 -0
  232. package/dist/parsers/UpdateQueryParser.js.map +1 -0
  233. package/dist/parsers/UsingClauseParser.js +33 -0
  234. package/dist/parsers/UsingClauseParser.js.map +1 -0
  235. package/dist/parsers/ValueParser.js +562 -0
  236. package/dist/parsers/ValueParser.js.map +1 -0
  237. package/dist/parsers/ValuesQueryParser.js +112 -0
  238. package/dist/parsers/ValuesQueryParser.js.map +1 -0
  239. package/dist/parsers/WhereClauseParser.js +51 -0
  240. package/dist/parsers/WhereClauseParser.js.map +1 -0
  241. package/dist/parsers/WindowClauseParser.js +57 -0
  242. package/dist/parsers/WindowClauseParser.js.map +1 -0
  243. package/dist/parsers/WindowExpressionParser.js +163 -0
  244. package/dist/parsers/WindowExpressionParser.js.map +1 -0
  245. package/dist/parsers/WithClauseParser.js +165 -0
  246. package/dist/parsers/WithClauseParser.js.map +1 -0
  247. package/dist/parsers/utils/LexemeCommentUtils.js +29 -0
  248. package/dist/parsers/utils/LexemeCommentUtils.js.map +1 -0
  249. package/dist/reporting/models/DataFlowEdge.js +58 -0
  250. package/dist/reporting/models/DataFlowEdge.js.map +1 -0
  251. package/dist/reporting/models/DataFlowGraph.js +138 -0
  252. package/dist/reporting/models/DataFlowGraph.js.map +1 -0
  253. package/dist/reporting/models/DataFlowNode.js +148 -0
  254. package/dist/reporting/models/DataFlowNode.js.map +1 -0
  255. package/dist/reporting/services/CTEHandler.js +58 -0
  256. package/dist/reporting/services/CTEHandler.js.map +1 -0
  257. package/dist/reporting/services/DataSourceHandler.js +95 -0
  258. package/dist/reporting/services/DataSourceHandler.js.map +1 -0
  259. package/dist/reporting/services/JoinHandler.js +84 -0
  260. package/dist/reporting/services/JoinHandler.js.map +1 -0
  261. package/dist/reporting/services/ProcessHandler.js +26 -0
  262. package/dist/reporting/services/ProcessHandler.js.map +1 -0
  263. package/dist/src/index.d.ts +15 -0
  264. package/dist/src/index.js +13 -1
  265. package/dist/src/index.js.map +1 -1
  266. package/dist/src/models/Clause.d.ts +7 -3
  267. package/dist/src/models/Clause.js +16 -3
  268. package/dist/src/models/Clause.js.map +1 -1
  269. package/dist/src/models/DDLStatements.d.ts +97 -2
  270. package/dist/src/models/DDLStatements.js +14 -1
  271. package/dist/src/models/DDLStatements.js.map +1 -1
  272. package/dist/src/models/InsertQuery.d.ts +1 -4
  273. package/dist/src/models/InsertQuery.js +3 -5
  274. package/dist/src/models/InsertQuery.js.map +1 -1
  275. package/dist/src/models/SqlPrintToken.d.ts +6 -0
  276. package/dist/src/models/SqlPrintToken.js +1 -0
  277. package/dist/src/models/SqlPrintToken.js.map +1 -1
  278. package/dist/src/models/TableDefinitionModel.d.ts +41 -0
  279. package/dist/src/models/TableDefinitionModel.js +85 -0
  280. package/dist/src/models/TableDefinitionModel.js.map +1 -0
  281. package/dist/src/models/ValueComponent.d.ts +2 -1
  282. package/dist/src/models/ValuesQuery.d.ts +2 -0
  283. package/dist/src/models/ValuesQuery.js +1 -0
  284. package/dist/src/models/ValuesQuery.js.map +1 -1
  285. package/dist/src/parsers/AlterTableParser.d.ts +1 -0
  286. package/dist/src/parsers/AlterTableParser.js +26 -5
  287. package/dist/src/parsers/AlterTableParser.js.map +1 -1
  288. package/dist/src/parsers/FunctionExpressionParser.d.ts +1 -0
  289. package/dist/src/parsers/InsertQueryParser.js +4 -1
  290. package/dist/src/parsers/InsertQueryParser.js.map +1 -1
  291. package/dist/src/parsers/ReturningClauseParser.js +33 -47
  292. package/dist/src/parsers/ReturningClauseParser.js.map +1 -1
  293. package/dist/src/parsers/SequenceParser.d.ts +16 -0
  294. package/dist/src/parsers/SqlParser.d.ts +4 -3
  295. package/dist/src/parsers/SqlParser.js +44 -63
  296. package/dist/src/parsers/SqlParser.js.map +1 -1
  297. package/dist/src/parsers/SqlPrintTokenParser.d.ts +9 -0
  298. package/dist/src/parsers/SqlPrintTokenParser.js +22 -4
  299. package/dist/src/parsers/SqlPrintTokenParser.js.map +1 -1
  300. package/dist/src/parsers/SqlTokenizer.d.ts +1 -0
  301. package/dist/src/tokenReaders/LiteralTokenReader.js +7 -0
  302. package/dist/src/tokenReaders/LiteralTokenReader.js.map +1 -1
  303. package/dist/src/transformers/DDLDiffGenerator.d.ts +18 -0
  304. package/dist/src/transformers/DDLDiffGenerator.js +313 -0
  305. package/dist/src/transformers/DDLDiffGenerator.js.map +1 -0
  306. package/dist/src/transformers/DDLGeneralizer.d.ts +13 -0
  307. package/dist/src/transformers/DDLGeneralizer.js +119 -0
  308. package/dist/src/transformers/DDLGeneralizer.js.map +1 -0
  309. package/dist/src/transformers/DDLToFixtureConverter.d.ts +19 -0
  310. package/dist/src/transformers/DDLToFixtureConverter.js +206 -0
  311. package/dist/src/transformers/DDLToFixtureConverter.js.map +1 -0
  312. package/dist/src/transformers/DeleteResultSelectConverter.d.ts +53 -0
  313. package/dist/src/transformers/DeleteResultSelectConverter.js +398 -0
  314. package/dist/src/transformers/DeleteResultSelectConverter.js.map +1 -0
  315. package/dist/src/transformers/FixtureCteBuilder.d.ts +60 -0
  316. package/dist/src/transformers/FixtureCteBuilder.js +151 -0
  317. package/dist/src/transformers/FixtureCteBuilder.js.map +1 -0
  318. package/dist/src/transformers/InsertQuerySelectValuesConverter.js +5 -2
  319. package/dist/src/transformers/InsertQuerySelectValuesConverter.js.map +1 -1
  320. package/dist/src/transformers/InsertResultSelectConverter.d.ts +67 -0
  321. package/dist/src/transformers/InsertResultSelectConverter.js +499 -0
  322. package/dist/src/transformers/InsertResultSelectConverter.js.map +1 -0
  323. package/dist/src/transformers/MergeResultSelectConverter.d.ts +38 -0
  324. package/dist/src/transformers/MergeResultSelectConverter.js +310 -0
  325. package/dist/src/transformers/MergeResultSelectConverter.js.map +1 -0
  326. package/dist/src/transformers/QueryBuilder.d.ts +11 -0
  327. package/dist/src/transformers/QueryBuilder.js +19 -3
  328. package/dist/src/transformers/QueryBuilder.js.map +1 -1
  329. package/dist/src/transformers/SelectResultSelectConverter.d.ts +10 -0
  330. package/dist/src/transformers/SelectResultSelectConverter.js +36 -0
  331. package/dist/src/transformers/SelectResultSelectConverter.js.map +1 -0
  332. package/dist/src/transformers/SimulatedSelectConverter.d.ts +23 -0
  333. package/dist/src/transformers/SimulatedSelectConverter.js +65 -0
  334. package/dist/src/transformers/SimulatedSelectConverter.js.map +1 -0
  335. package/dist/src/transformers/UpdateResultSelectConverter.d.ts +51 -0
  336. package/dist/src/transformers/UpdateResultSelectConverter.js +344 -0
  337. package/dist/src/transformers/UpdateResultSelectConverter.js.map +1 -0
  338. package/dist/src/types/GenericFixture.d.ts +17 -0
  339. package/dist/src/utils/SelectQueryWithClauseHelper.d.ts +12 -0
  340. package/dist/src/utils/SelectQueryWithClauseHelper.js +47 -0
  341. package/dist/src/utils/SelectQueryWithClauseHelper.js.map +1 -0
  342. package/dist/src/utils/TableNameUtils.d.ts +10 -0
  343. package/dist/src/utils/ValueComponentRewriter.d.ts +3 -0
  344. package/dist/src/utils/ValueComponentRewriter.js +183 -0
  345. package/dist/src/utils/ValueComponentRewriter.js.map +1 -0
  346. package/dist/tokenReaders/BaseTokenReader.js +86 -0
  347. package/dist/tokenReaders/BaseTokenReader.js.map +1 -0
  348. package/dist/tokenReaders/CommandTokenReader.js +221 -0
  349. package/dist/tokenReaders/CommandTokenReader.js.map +1 -0
  350. package/dist/tokenReaders/EscapedIdentifierTokenReader.js +99 -0
  351. package/dist/tokenReaders/EscapedIdentifierTokenReader.js.map +1 -0
  352. package/dist/tokenReaders/FunctionTokenReader.js +47 -0
  353. package/dist/tokenReaders/FunctionTokenReader.js.map +1 -0
  354. package/dist/tokenReaders/IdentifierTokenReader.js +34 -0
  355. package/dist/tokenReaders/IdentifierTokenReader.js.map +1 -0
  356. package/dist/tokenReaders/LiteralTokenReader.js +329 -0
  357. package/dist/tokenReaders/LiteralTokenReader.js.map +1 -0
  358. package/dist/tokenReaders/OperatorTokenReader.js +152 -0
  359. package/dist/tokenReaders/OperatorTokenReader.js.map +1 -0
  360. package/dist/tokenReaders/ParameterTokenReader.js +190 -0
  361. package/dist/tokenReaders/ParameterTokenReader.js.map +1 -0
  362. package/dist/tokenReaders/StringSpecifierTokenReader.js +31 -0
  363. package/dist/tokenReaders/StringSpecifierTokenReader.js.map +1 -0
  364. package/dist/tokenReaders/SymbolTokenReader.js +35 -0
  365. package/dist/tokenReaders/SymbolTokenReader.js.map +1 -0
  366. package/dist/tokenReaders/TokenReaderManager.js +110 -0
  367. package/dist/tokenReaders/TokenReaderManager.js.map +1 -0
  368. package/dist/tokenReaders/TypeTokenReader.js +69 -0
  369. package/dist/tokenReaders/TypeTokenReader.js.map +1 -0
  370. package/dist/transformers/AliasRenamer.js +600 -0
  371. package/dist/transformers/AliasRenamer.js.map +1 -0
  372. package/dist/transformers/CTEBuilder.js +188 -0
  373. package/dist/transformers/CTEBuilder.js.map +1 -0
  374. package/dist/transformers/CTECollector.js +409 -0
  375. package/dist/transformers/CTECollector.js.map +1 -0
  376. package/dist/transformers/CTEComposer.js +302 -0
  377. package/dist/transformers/CTEComposer.js.map +1 -0
  378. package/dist/transformers/CTEDependencyAnalyzer.js +285 -0
  379. package/dist/transformers/CTEDependencyAnalyzer.js.map +1 -0
  380. package/dist/transformers/CTEDependencyTracer.js +253 -0
  381. package/dist/transformers/CTEDependencyTracer.js.map +1 -0
  382. package/dist/transformers/CTEDisabler.js +355 -0
  383. package/dist/transformers/CTEDisabler.js.map +1 -0
  384. package/dist/transformers/CTEInjector.js +83 -0
  385. package/dist/transformers/CTEInjector.js.map +1 -0
  386. package/dist/transformers/CTENormalizer.js +46 -0
  387. package/dist/transformers/CTENormalizer.js.map +1 -0
  388. package/dist/transformers/CTEQueryDecomposer.js +589 -0
  389. package/dist/transformers/CTEQueryDecomposer.js.map +1 -0
  390. package/dist/transformers/CTERenamer.js +486 -0
  391. package/dist/transformers/CTERenamer.js.map +1 -0
  392. package/dist/transformers/CTETableReferenceCollector.js +358 -0
  393. package/dist/transformers/CTETableReferenceCollector.js.map +1 -0
  394. package/dist/transformers/ColumnReferenceCollector.js +478 -0
  395. package/dist/transformers/ColumnReferenceCollector.js.map +1 -0
  396. package/dist/transformers/DDLDiffGenerator.js +313 -0
  397. package/dist/transformers/DDLDiffGenerator.js.map +1 -0
  398. package/dist/transformers/DDLGeneralizer.js +119 -0
  399. package/dist/transformers/DDLGeneralizer.js.map +1 -0
  400. package/dist/transformers/DDLToFixtureConverter.js +206 -0
  401. package/dist/transformers/DDLToFixtureConverter.js.map +1 -0
  402. package/dist/transformers/DeleteResultSelectConverter.js +414 -0
  403. package/dist/transformers/DeleteResultSelectConverter.js.map +1 -0
  404. package/dist/transformers/DynamicQueryBuilder.js +164 -0
  405. package/dist/transformers/DynamicQueryBuilder.js.map +1 -0
  406. package/dist/transformers/EnhancedJsonMapping.js +223 -0
  407. package/dist/transformers/EnhancedJsonMapping.js.map +1 -0
  408. package/dist/transformers/FilterableItemCollector.js +259 -0
  409. package/dist/transformers/FilterableItemCollector.js.map +1 -0
  410. package/dist/transformers/FixtureCteBuilder.js +151 -0
  411. package/dist/transformers/FixtureCteBuilder.js.map +1 -0
  412. package/dist/transformers/FormatOptionResolver.js +67 -0
  413. package/dist/transformers/FormatOptionResolver.js.map +1 -0
  414. package/dist/transformers/Formatter.js +38 -0
  415. package/dist/transformers/Formatter.js.map +1 -0
  416. package/dist/transformers/InsertQuerySelectValuesConverter.js +125 -0
  417. package/dist/transformers/InsertQuerySelectValuesConverter.js.map +1 -0
  418. package/dist/transformers/InsertResultSelectConverter.js +589 -0
  419. package/dist/transformers/InsertResultSelectConverter.js.map +1 -0
  420. package/dist/transformers/JoinAggregationDecomposer.js +497 -0
  421. package/dist/transformers/JoinAggregationDecomposer.js.map +1 -0
  422. package/dist/transformers/JsonMappingConverter.js +392 -0
  423. package/dist/transformers/JsonMappingConverter.js.map +1 -0
  424. package/dist/transformers/JsonMappingUnifier.js +216 -0
  425. package/dist/transformers/JsonMappingUnifier.js.map +1 -0
  426. package/dist/transformers/LinePrinter.js +148 -0
  427. package/dist/transformers/LinePrinter.js.map +1 -0
  428. package/dist/transformers/MergeResultSelectConverter.js +310 -0
  429. package/dist/transformers/MergeResultSelectConverter.js.map +1 -0
  430. package/dist/transformers/ModelDrivenJsonMapping.js +122 -0
  431. package/dist/transformers/ModelDrivenJsonMapping.js.map +1 -0
  432. package/dist/transformers/OnelineFormattingHelper.js +99 -0
  433. package/dist/transformers/OnelineFormattingHelper.js.map +1 -0
  434. package/dist/transformers/ParameterCollector.js +37 -0
  435. package/dist/transformers/ParameterCollector.js.map +1 -0
  436. package/dist/transformers/PostgresArrayEntityCteBuilder.js +458 -0
  437. package/dist/transformers/PostgresArrayEntityCteBuilder.js.map +1 -0
  438. package/dist/transformers/PostgresJsonQueryBuilder.js +245 -0
  439. package/dist/transformers/PostgresJsonQueryBuilder.js.map +1 -0
  440. package/dist/transformers/PostgresObjectEntityCteBuilder.js +347 -0
  441. package/dist/transformers/PostgresObjectEntityCteBuilder.js.map +1 -0
  442. package/dist/transformers/QueryBuilder.js +649 -0
  443. package/dist/transformers/QueryBuilder.js.map +1 -0
  444. package/dist/transformers/QueryFlowDiagramGenerator.js +157 -0
  445. package/dist/transformers/QueryFlowDiagramGenerator.js.map +1 -0
  446. package/dist/transformers/SchemaCollector.js +523 -0
  447. package/dist/transformers/SchemaCollector.js.map +1 -0
  448. package/dist/transformers/SelectResultSelectConverter.js +36 -0
  449. package/dist/transformers/SelectResultSelectConverter.js.map +1 -0
  450. package/dist/transformers/SelectValueCollector.js +244 -0
  451. package/dist/transformers/SelectValueCollector.js.map +1 -0
  452. package/dist/transformers/SelectableColumnCollector.js +674 -0
  453. package/dist/transformers/SelectableColumnCollector.js.map +1 -0
  454. package/dist/transformers/SimulatedSelectConverter.js +65 -0
  455. package/dist/transformers/SimulatedSelectConverter.js.map +1 -0
  456. package/dist/transformers/SmartRenamer.js +422 -0
  457. package/dist/transformers/SmartRenamer.js.map +1 -0
  458. package/dist/transformers/SqlFormatter.js +77 -0
  459. package/dist/transformers/SqlFormatter.js.map +1 -0
  460. package/dist/transformers/SqlIdentifierRenamer.js +504 -0
  461. package/dist/transformers/SqlIdentifierRenamer.js.map +1 -0
  462. package/dist/transformers/SqlOutputToken.js +13 -0
  463. package/dist/transformers/SqlOutputToken.js.map +1 -0
  464. package/dist/transformers/SqlPaginationInjector.js +108 -0
  465. package/dist/transformers/SqlPaginationInjector.js.map +1 -0
  466. package/dist/transformers/SqlParamInjector.js +802 -0
  467. package/dist/transformers/SqlParamInjector.js.map +1 -0
  468. package/dist/transformers/SqlParameterBinder.js +70 -0
  469. package/dist/transformers/SqlParameterBinder.js.map +1 -0
  470. package/dist/transformers/SqlPrinter.js +1478 -0
  471. package/dist/transformers/SqlPrinter.js.map +1 -0
  472. package/dist/transformers/SqlSortInjector.js +153 -0
  473. package/dist/transformers/SqlSortInjector.js.map +1 -0
  474. package/dist/transformers/TableColumnResolver.js +3 -0
  475. package/dist/transformers/TableColumnResolver.js.map +1 -0
  476. package/dist/transformers/TableSourceCollector.js +439 -0
  477. package/dist/transformers/TableSourceCollector.js.map +1 -0
  478. package/dist/transformers/TypeTransformationPostProcessor.js +363 -0
  479. package/dist/transformers/TypeTransformationPostProcessor.js.map +1 -0
  480. package/dist/transformers/UpdateResultSelectConverter.js +359 -0
  481. package/dist/transformers/UpdateResultSelectConverter.js.map +1 -0
  482. package/dist/transformers/UpstreamSelectQueryFinder.js +184 -0
  483. package/dist/transformers/UpstreamSelectQueryFinder.js.map +1 -0
  484. package/dist/tsconfig.tsbuildinfo +1 -1
  485. package/dist/types/Formatting.js +3 -0
  486. package/dist/types/Formatting.js.map +1 -0
  487. package/dist/types/GenericFixture.js +3 -0
  488. package/dist/types/GenericFixture.js.map +1 -0
  489. package/dist/utils/CTERegionDetector.js +464 -0
  490. package/dist/utils/CTERegionDetector.js.map +1 -0
  491. package/dist/utils/CommentEditor.js +345 -0
  492. package/dist/utils/CommentEditor.js.map +1 -0
  493. package/dist/utils/CommentUtils.js +69 -0
  494. package/dist/utils/CommentUtils.js.map +1 -0
  495. package/dist/utils/CursorContextAnalyzer.js +338 -0
  496. package/dist/utils/CursorContextAnalyzer.js.map +1 -0
  497. package/dist/utils/IntelliSenseApi.js +292 -0
  498. package/dist/utils/IntelliSenseApi.js.map +1 -0
  499. package/dist/utils/JsonSchemaValidator.js +215 -0
  500. package/dist/utils/JsonSchemaValidator.js.map +1 -0
  501. package/dist/utils/KeywordCache.js +206 -0
  502. package/dist/utils/KeywordCache.js.map +1 -0
  503. package/dist/utils/LexemeCursor.js +314 -0
  504. package/dist/utils/LexemeCursor.js.map +1 -0
  505. package/dist/utils/MultiQuerySplitter.js +292 -0
  506. package/dist/utils/MultiQuerySplitter.js.map +1 -0
  507. package/dist/utils/OperatorPrecedence.js +107 -0
  508. package/dist/utils/OperatorPrecedence.js.map +1 -0
  509. package/dist/utils/ParameterDetector.js +53 -0
  510. package/dist/utils/ParameterDetector.js.map +1 -0
  511. package/dist/utils/ParameterHelper.js +31 -0
  512. package/dist/utils/ParameterHelper.js.map +1 -0
  513. package/dist/utils/ParameterRemover.js +783 -0
  514. package/dist/utils/ParameterRemover.js.map +1 -0
  515. package/dist/utils/ParserStringUtils.js +31 -0
  516. package/dist/utils/ParserStringUtils.js.map +1 -0
  517. package/dist/utils/PositionAwareParser.js +363 -0
  518. package/dist/utils/PositionAwareParser.js.map +1 -0
  519. package/dist/utils/SchemaManager.js +217 -0
  520. package/dist/utils/SchemaManager.js.map +1 -0
  521. package/dist/utils/ScopeResolver.js +272 -0
  522. package/dist/utils/ScopeResolver.js.map +1 -0
  523. package/dist/utils/SelectQueryWithClauseHelper.js +47 -0
  524. package/dist/utils/SelectQueryWithClauseHelper.js.map +1 -0
  525. package/dist/utils/SqlSchemaValidator.js +55 -0
  526. package/dist/utils/SqlSchemaValidator.js.map +1 -0
  527. package/dist/utils/TableNameUtils.js +35 -0
  528. package/dist/utils/TableNameUtils.js.map +1 -0
  529. package/dist/utils/TextPositionUtils.js +128 -0
  530. package/dist/utils/TextPositionUtils.js.map +1 -0
  531. package/dist/utils/ValueComponentRewriter.js +187 -0
  532. package/dist/utils/ValueComponentRewriter.js.map +1 -0
  533. package/dist/utils/charLookupTable.js +73 -0
  534. package/dist/utils/charLookupTable.js.map +1 -0
  535. package/dist/utils/stringUtils.js +230 -0
  536. package/dist/utils/stringUtils.js.map +1 -0
  537. package/package.json +62 -62
@@ -0,0 +1,486 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CTERenamer = void 0;
4
+ const SimpleSelectQuery_1 = require("../models/SimpleSelectQuery");
5
+ const BinarySelectQuery_1 = require("../models/BinarySelectQuery");
6
+ const CTEDependencyAnalyzer_1 = require("./CTEDependencyAnalyzer");
7
+ const TableSourceCollector_1 = require("./TableSourceCollector");
8
+ const ColumnReferenceCollector_1 = require("./ColumnReferenceCollector");
9
+ const ValueComponent_1 = require("../models/ValueComponent");
10
+ const LexemeCursor_1 = require("../utils/LexemeCursor");
11
+ const SelectQueryParser_1 = require("../parsers/SelectQueryParser");
12
+ const Lexeme_1 = require("../models/Lexeme");
13
+ const SqlFormatter_1 = require("./SqlFormatter");
14
+ const KeywordParser_1 = require("../parsers/KeywordParser");
15
+ const CommandTokenReader_1 = require("../tokenReaders/CommandTokenReader");
16
+ /**
17
+ * Error messages for CTE renaming operations.
18
+ */
19
+ const ERROR_MESSAGES = {
20
+ nullQuery: 'Query cannot be null or undefined',
21
+ invalidOldName: 'Old CTE name must be a non-empty string',
22
+ invalidNewName: 'New CTE name must be a non-empty string',
23
+ sameNames: 'Old and new CTE names cannot be the same',
24
+ unsupportedQuery: 'Unsupported query type for CTE renaming',
25
+ cteNotExists: (name) => `CTE '${name}' does not exist`,
26
+ cteAlreadyExists: (name) => `CTE '${name}' already exists`,
27
+ cteNotFound: (name) => `CTE '${name}' not found`,
28
+ };
29
+ /**
30
+ * A utility class for renaming Common Table Expressions (CTEs) in SQL queries.
31
+ *
32
+ * This class provides functionality to safely rename CTEs while automatically updating
33
+ * all column references and table references throughout the query, including within
34
+ * nested CTE definitions and subqueries.
35
+ *
36
+ * @example
37
+ * ```typescript
38
+ * import { CTERenamer, SelectQueryParser } from 'rawsql-ts';
39
+ *
40
+ * const sql = `
41
+ * WITH user_data AS (
42
+ * SELECT id, name FROM users
43
+ * ),
44
+ * order_summary AS (
45
+ * SELECT user_data.id, COUNT(*) as order_count
46
+ * FROM user_data
47
+ * JOIN orders ON user_data.id = orders.user_id
48
+ * GROUP BY user_data.id
49
+ * )
50
+ * SELECT * FROM order_summary
51
+ * `;
52
+ *
53
+ * const query = SelectQueryParser.parse(sql);
54
+ * const renamer = new CTERenamer();
55
+ *
56
+ * // Rename 'user_data' to 'customer_data'
57
+ * renamer.renameCTE(query, 'user_data', 'customer_data');
58
+ *
59
+ * // All references are automatically updated:
60
+ * // - CTE definition: WITH customer_data AS (...)
61
+ * // - Column references: customer_data.id
62
+ * // - Table references: FROM customer_data
63
+ * ```
64
+ *
65
+ * @example
66
+ * ```typescript
67
+ * // Error handling
68
+ * try {
69
+ * renamer.renameCTE(query, 'nonexistent_cte', 'new_name');
70
+ * } catch (error) {
71
+ * console.error(error.message); // "CTE 'nonexistent_cte' does not exist"
72
+ * }
73
+ *
74
+ * try {
75
+ * renamer.renameCTE(query, 'existing_cte', 'already_exists');
76
+ * } catch (error) {
77
+ * console.error(error.message); // "CTE 'already_exists' already exists"
78
+ * }
79
+ * ```
80
+ *
81
+ * Related tests: packages/core/tests/transformers/CTERenamer.test.ts
82
+ * @since 0.11.16
83
+ */
84
+ class CTERenamer {
85
+ /**
86
+ * Creates a new instance of CTERenamer.
87
+ *
88
+ * The constructor initializes internal collectors and analyzers needed for
89
+ * comprehensive CTE renaming operations.
90
+ */
91
+ constructor() {
92
+ this.dependencyAnalyzer = new CTEDependencyAnalyzer_1.CTEDependencyAnalyzer();
93
+ this.columnReferenceCollector = new ColumnReferenceCollector_1.ColumnReferenceCollector();
94
+ this.tableSourceCollector = new TableSourceCollector_1.TableSourceCollector(); // Use default selectableOnly=true to avoid infinite recursion
95
+ this.keywordParser = new KeywordParser_1.KeywordParser(CommandTokenReader_1.commandKeywordTrie);
96
+ }
97
+ /**
98
+ * Renames a Common Table Expression (CTE) and updates all references to it.
99
+ *
100
+ * This method performs a comprehensive rename operation that includes:
101
+ * - Updating the CTE definition name in the WITH clause
102
+ * - Updating all column references (e.g., `old_name.column` -> `new_name.column`)
103
+ * - Updating all table references in FROM and JOIN clauses
104
+ * - Processing references within nested CTEs and subqueries
105
+ *
106
+ * @param query - The SQL query containing the CTE to rename. Can be either SimpleSelectQuery or BinarySelectQuery (UNION/INTERSECT/EXCEPT).
107
+ * @param oldName - The current name of the CTE to rename.
108
+ * @param newName - The new name for the CTE.
109
+ *
110
+ * @throws {Error} When the specified CTE does not exist in the query.
111
+ * @throws {Error} When a CTE with the new name already exists.
112
+ * @throws {Error} When the query type is not supported (not a SelectQuery).
113
+ *
114
+ * @example
115
+ * ```typescript
116
+ * const renamer = new CTERenamer();
117
+ *
118
+ * // Basic usage
119
+ * renamer.renameCTE(query, 'old_cte_name', 'new_cte_name');
120
+ *
121
+ * // With error handling
122
+ * try {
123
+ * renamer.renameCTE(query, 'user_data', 'customer_data');
124
+ * } catch (error) {
125
+ * if (error.message.includes('does not exist')) {
126
+ * console.log('CTE not found');
127
+ * } else if (error.message.includes('already exists')) {
128
+ * console.log('Name conflict');
129
+ * }
130
+ * }
131
+ * ```
132
+ *
133
+ * Related tests: packages/core/tests/transformers/CTERenamer.test.ts
134
+ * @since 0.11.16
135
+ */
136
+ renameCTE(query, oldName, newName) {
137
+ // Input validation
138
+ this.validateInputs(query, oldName, newName);
139
+ // Sanitize input names
140
+ const sanitizedOldName = oldName.trim();
141
+ const sanitizedNewName = newName.trim();
142
+ if (query instanceof SimpleSelectQuery_1.SimpleSelectQuery) {
143
+ this.renameInSimpleQuery(query, sanitizedOldName, sanitizedNewName);
144
+ }
145
+ else if (query instanceof BinarySelectQuery_1.BinarySelectQuery) {
146
+ this.renameInBinaryQuery(query, sanitizedOldName, sanitizedNewName);
147
+ }
148
+ else {
149
+ throw new Error(ERROR_MESSAGES.unsupportedQuery);
150
+ }
151
+ }
152
+ /**
153
+ * Validates input parameters for CTE renaming.
154
+ */
155
+ validateInputs(query, oldName, newName) {
156
+ if (!query) {
157
+ throw new Error(ERROR_MESSAGES.nullQuery);
158
+ }
159
+ if (!oldName || typeof oldName !== 'string' || oldName.trim() === '') {
160
+ throw new Error(ERROR_MESSAGES.invalidOldName);
161
+ }
162
+ if (!newName || typeof newName !== 'string' || newName.trim() === '') {
163
+ throw new Error(ERROR_MESSAGES.invalidNewName);
164
+ }
165
+ if (oldName.trim() === newName.trim()) {
166
+ throw new Error(ERROR_MESSAGES.sameNames);
167
+ }
168
+ }
169
+ /**
170
+ * Handles CTE renaming for SimpleSelectQuery.
171
+ */
172
+ renameInSimpleQuery(query, oldName, newName) {
173
+ // Get available CTE names
174
+ const availableCTEs = query.getCTENames();
175
+ // Check if CTE exists
176
+ if (!availableCTEs.includes(oldName)) {
177
+ throw new Error(ERROR_MESSAGES.cteNotExists(oldName));
178
+ }
179
+ // Check for name conflicts
180
+ if (availableCTEs.includes(newName)) {
181
+ throw new Error(ERROR_MESSAGES.cteAlreadyExists(newName));
182
+ }
183
+ // Rename CTE definition
184
+ this.renameCTEDefinition(query, oldName, newName);
185
+ // Update all references
186
+ this.updateAllReferences(query, oldName, newName);
187
+ }
188
+ /**
189
+ * Handles CTE renaming for BinarySelectQuery.
190
+ */
191
+ renameInBinaryQuery(query, oldName, newName) {
192
+ // Use toSimpleQuery() only for WITH clause inspection (not for writing back)
193
+ const withClauseQuery = query.toSimpleQuery();
194
+ // Get available CTE names from the converted query
195
+ let availableCTEs = [];
196
+ if (withClauseQuery.withClause && withClauseQuery.withClause.tables) {
197
+ availableCTEs = withClauseQuery.withClause.tables.map(cte => cte.aliasExpression.table.name);
198
+ }
199
+ // Check if CTE exists
200
+ if (!availableCTEs.includes(oldName)) {
201
+ throw new Error(ERROR_MESSAGES.cteNotExists(oldName));
202
+ }
203
+ // Check for name conflicts
204
+ if (availableCTEs.includes(newName)) {
205
+ throw new Error(ERROR_MESSAGES.cteAlreadyExists(newName));
206
+ }
207
+ // Rename CTE definition in the converted query (this affects the original BinarySelectQuery)
208
+ this.renameCTEDefinition(withClauseQuery, oldName, newName);
209
+ // Add withClause to original BinarySelectQuery and left query for proper formatting
210
+ if (withClauseQuery.withClause) {
211
+ query.withClause = withClauseQuery.withClause;
212
+ // Also add to left query so formatter can display it
213
+ if (query.left instanceof SimpleSelectQuery_1.SimpleSelectQuery) {
214
+ query.left.withClause = withClauseQuery.withClause;
215
+ }
216
+ }
217
+ // Recursively update references in left and right branches
218
+ this.renameInSelectQuery(query.left, oldName, newName);
219
+ this.renameInSelectQuery(query.right, oldName, newName);
220
+ }
221
+ /**
222
+ * Recursively handles CTE renaming for any SelectQuery type.
223
+ */
224
+ renameInSelectQuery(query, oldName, newName) {
225
+ if (query instanceof SimpleSelectQuery_1.SimpleSelectQuery) {
226
+ // For SimpleSelectQuery, only update references (not CTE definitions)
227
+ this.updateAllReferences(query, oldName, newName);
228
+ }
229
+ else if (query instanceof BinarySelectQuery_1.BinarySelectQuery) {
230
+ // Recursively process left and right branches
231
+ this.renameInSelectQuery(query.left, oldName, newName);
232
+ this.renameInSelectQuery(query.right, oldName, newName);
233
+ }
234
+ // ValuesQuery: do nothing
235
+ }
236
+ /**
237
+ * Renames the CTE definition in the WITH clause.
238
+ */
239
+ renameCTEDefinition(query, oldName, newName) {
240
+ if (!query.withClause || !query.withClause.tables) {
241
+ throw new Error(ERROR_MESSAGES.cteNotFound(oldName));
242
+ }
243
+ const cteToRename = query.withClause.tables.find(cte => cte.aliasExpression.table.name === oldName);
244
+ if (!cteToRename) {
245
+ throw new Error(ERROR_MESSAGES.cteNotFound(oldName));
246
+ }
247
+ cteToRename.aliasExpression.table.name = newName;
248
+ }
249
+ /**
250
+ * Updates all references to the old CTE name (column references and table sources).
251
+ */
252
+ updateAllReferences(query, oldName, newName) {
253
+ // Collect all column references from the query (including CTE internals)
254
+ const columnReferences = this.columnReferenceCollector.collect(query);
255
+ // Update all column references that reference the old CTE name
256
+ for (const columnRef of columnReferences) {
257
+ // Check namespaces for the old CTE name
258
+ if (columnRef.namespaces && columnRef.namespaces.length > 0) {
259
+ // Check if any namespace matches the old CTE name
260
+ for (const namespace of columnRef.namespaces) {
261
+ if (namespace.name === oldName) {
262
+ namespace.name = newName;
263
+ break;
264
+ }
265
+ }
266
+ }
267
+ }
268
+ // Update table sources in the main query
269
+ const tableSources = this.tableSourceCollector.collect(query);
270
+ for (const tableSource of tableSources) {
271
+ if (tableSource.getSourceName() === oldName) {
272
+ if (tableSource.qualifiedName.name instanceof ValueComponent_1.ColumnReference) {
273
+ // Handle ColumnReference case if needed
274
+ }
275
+ else if ('name' in tableSource.qualifiedName.name) {
276
+ // Handle IdentifierString
277
+ tableSource.qualifiedName.name.name = newName;
278
+ }
279
+ else {
280
+ // Handle RawString
281
+ tableSource.qualifiedName.name.value = newName;
282
+ }
283
+ }
284
+ }
285
+ // Update table sources that reference the old CTE name within CTEs
286
+ this.updateTableSourcesInCTEs(query, oldName, newName);
287
+ }
288
+ /**
289
+ * Updates table sources within CTE definitions that reference the old CTE name.
290
+ * This method manually traverses CTE internals to avoid infinite recursion
291
+ * that occurs when using TableSourceCollector with selectableOnly=false.
292
+ */
293
+ updateTableSourcesInCTEs(query, oldName, newName) {
294
+ if (!query.withClause || !query.withClause.tables) {
295
+ return;
296
+ }
297
+ // Traverse each CTE and update table sources in their FROM clauses
298
+ for (const cte of query.withClause.tables) {
299
+ this.updateTableSourcesInQuery(cte.query, oldName, newName);
300
+ }
301
+ }
302
+ /**
303
+ * Updates table sources in a specific query (used for CTE internals).
304
+ */
305
+ updateTableSourcesInQuery(query, oldName, newName) {
306
+ // Update FROM clause
307
+ if (query.fromClause && query.fromClause.source.datasource) {
308
+ this.updateTableSource(query.fromClause.source.datasource, oldName, newName);
309
+ }
310
+ // Update JOIN clauses
311
+ if (query.fromClause && query.fromClause.joins) {
312
+ for (const join of query.fromClause.joins) {
313
+ if (join.source.datasource) {
314
+ this.updateTableSource(join.source.datasource, oldName, newName);
315
+ }
316
+ }
317
+ }
318
+ }
319
+ /**
320
+ * Updates a specific table source if it matches the old CTE name.
321
+ */
322
+ updateTableSource(datasource, oldName, newName) {
323
+ // Type guard and null checks for security
324
+ if (!datasource || typeof datasource !== 'object') {
325
+ return;
326
+ }
327
+ const source = datasource;
328
+ // Safely check if this is a TableSource
329
+ if (typeof source.getSourceName === 'function') {
330
+ try {
331
+ const sourceName = source.getSourceName();
332
+ if (sourceName === oldName && source.qualifiedName && typeof source.qualifiedName === 'object') {
333
+ const qualifiedName = source.qualifiedName;
334
+ if (qualifiedName.name && typeof qualifiedName.name === 'object') {
335
+ const nameObj = qualifiedName.name;
336
+ if ('name' in nameObj && typeof nameObj.name === 'string') {
337
+ // Handle IdentifierString
338
+ nameObj.name = newName;
339
+ }
340
+ else if ('value' in nameObj && typeof nameObj.value === 'string') {
341
+ // Handle RawString
342
+ nameObj.value = newName;
343
+ }
344
+ }
345
+ }
346
+ }
347
+ catch (error) {
348
+ // Safely handle any unexpected errors during table source update
349
+ console.warn('Warning: Failed to update table source:', error);
350
+ }
351
+ }
352
+ }
353
+ /**
354
+ * GUI-integrated CTE renaming with line/column position support.
355
+ *
356
+ * Designed for editor integration where users can right-click on CTE names
357
+ * and rename them. Automatically detects the CTE name at the cursor position
358
+ * and performs the rename operation.
359
+ *
360
+ * @param sql - The complete SQL string containing CTE definitions
361
+ * @param position - Line and column position where the user clicked (1-based)
362
+ * @param newName - The new name for the CTE
363
+ * @returns The updated SQL string with the CTE renamed
364
+ *
365
+ * @throws {Error} When no CTE name is found at the specified position
366
+ * @throws {Error} When the new name conflicts with existing CTE names
367
+ *
368
+ * @example
369
+ * ```typescript
370
+ * const sql = `
371
+ * WITH user_data AS (SELECT * FROM users),
372
+ * order_data AS (SELECT * FROM orders)
373
+ * SELECT * FROM user_data JOIN order_data ON ...
374
+ * `;
375
+ *
376
+ * const renamer = new CTERenamer();
377
+ * // User right-clicks on 'user_data' at line 2, column 8
378
+ * const result = renamer.renameCTEAtPosition(sql, { line: 2, column: 8 }, 'customer_data');
379
+ * console.log(result);
380
+ * // Returns SQL with 'user_data' renamed to 'customer_data' everywhere
381
+ * ```
382
+ */
383
+ renameCTEAtPosition(sql, position, newName) {
384
+ // Input validation
385
+ if (!(sql === null || sql === void 0 ? void 0 : sql.trim())) {
386
+ throw new Error('SQL cannot be empty');
387
+ }
388
+ if (!position || position.line < 1 || position.column < 1) {
389
+ throw new Error('Position must be a valid line/column (1-based)');
390
+ }
391
+ if (!(newName === null || newName === void 0 ? void 0 : newName.trim())) {
392
+ throw new Error('New CTE name cannot be empty');
393
+ }
394
+ // Find the lexeme at the specified position
395
+ const lexeme = LexemeCursor_1.LexemeCursor.findLexemeAtLineColumn(sql, position);
396
+ if (!lexeme) {
397
+ throw new Error(`No CTE name found at line ${position.line}, column ${position.column}`);
398
+ }
399
+ const cteName = lexeme.value;
400
+ // Parse the SQL to get the query structure
401
+ const query = SelectQueryParser_1.SelectQueryParser.parse(sql);
402
+ // First check if this is actually a CTE name in the query
403
+ if (!this.isCTENameInQuery(query, cteName)) {
404
+ throw new Error(`'${cteName}' is not a CTE name in this query`);
405
+ }
406
+ // Validate that the lexeme is a valid identifier or function (not a command/keyword)
407
+ if (!(lexeme.type & (Lexeme_1.TokenType.Identifier | Lexeme_1.TokenType.Function))) {
408
+ throw new Error(`Token at position is not a CTE name: '${lexeme.value}'`);
409
+ }
410
+ // Check for naming conflicts
411
+ const conflicts = this.checkNameConflicts(query, newName, cteName);
412
+ if (conflicts.length > 0) {
413
+ throw new Error(conflicts.join(', '));
414
+ }
415
+ // Perform the CTE rename operation
416
+ this.renameCTE(query, cteName, newName);
417
+ // Return the formatted SQL using SqlFormatter
418
+ const formatter = new SqlFormatter_1.SqlFormatter();
419
+ const result = formatter.format(query);
420
+ return result.formattedSql;
421
+ }
422
+ /**
423
+ * Check for naming conflicts with existing CTEs and reserved keywords.
424
+ * @private
425
+ */
426
+ checkNameConflicts(query, newName, currentName) {
427
+ const conflicts = [];
428
+ // Skip checks if the name isn't actually changing
429
+ if (currentName === newName) {
430
+ return conflicts;
431
+ }
432
+ // Check for reserved keyword conflicts
433
+ conflicts.push(...this.checkKeywordConflicts(newName));
434
+ // Check for existing CTE name conflicts
435
+ if (this.isCTENameInQuery(query, newName)) {
436
+ conflicts.push(`CTE name '${newName}' already exists`);
437
+ }
438
+ return conflicts;
439
+ }
440
+ /**
441
+ * Checks if the new name conflicts with SQL keywords using the existing KeywordTrie.
442
+ * @private
443
+ */
444
+ checkKeywordConflicts(newName) {
445
+ const conflicts = [];
446
+ try {
447
+ // Use the KeywordParser to check if the new name is a reserved keyword
448
+ const keywordResult = this.keywordParser.parse(newName, 0);
449
+ if (keywordResult !== null && keywordResult.keyword.toLowerCase() === newName.toLowerCase()) {
450
+ conflicts.push(`'${newName}' is a reserved SQL keyword and should not be used as a CTE name`);
451
+ }
452
+ }
453
+ catch (error) {
454
+ console.warn(`Failed to check keyword conflicts for '${newName}':`, error);
455
+ // Fallback to basic check if KeywordParser fails
456
+ if (this.isBasicReservedKeyword(newName)) {
457
+ conflicts.push(`'${newName}' is a reserved SQL keyword and should not be used as a CTE name`);
458
+ }
459
+ }
460
+ return conflicts;
461
+ }
462
+ /**
463
+ * Fallback method for basic reserved keyword checking.
464
+ * @private
465
+ */
466
+ isBasicReservedKeyword(name) {
467
+ const basicKeywords = ['select', 'from', 'where', 'with', 'as', 'union', 'join', 'table', 'null'];
468
+ return basicKeywords.includes(name.toLowerCase());
469
+ }
470
+ /**
471
+ * Check if a CTE name exists in the query.
472
+ * @private
473
+ */
474
+ isCTENameInQuery(query, cteName) {
475
+ if (query instanceof SimpleSelectQuery_1.SimpleSelectQuery && query.withClause) {
476
+ return query.withClause.tables.some(cte => cte.aliasExpression && cte.aliasExpression.table && cte.aliasExpression.table.name === cteName);
477
+ }
478
+ if (query instanceof BinarySelectQuery_1.BinarySelectQuery) {
479
+ return this.isCTENameInQuery(query.left, cteName) ||
480
+ this.isCTENameInQuery(query.right, cteName);
481
+ }
482
+ return false;
483
+ }
484
+ }
485
+ exports.CTERenamer = CTERenamer;
486
+ //# sourceMappingURL=CTERenamer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CTERenamer.js","sourceRoot":"","sources":["../../src/transformers/CTERenamer.ts"],"names":[],"mappings":"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"}