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,600 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AliasRenamer = void 0;
4
+ const SelectQuery_1 = require("../models/SelectQuery");
5
+ const LexemeCursor_1 = require("../utils/LexemeCursor");
6
+ const Lexeme_1 = require("../models/Lexeme");
7
+ const SelectQueryParser_1 = require("../parsers/SelectQueryParser");
8
+ const CTERegionDetector_1 = require("../utils/CTERegionDetector");
9
+ const TableSourceCollector_1 = require("./TableSourceCollector");
10
+ const ColumnReferenceCollector_1 = require("./ColumnReferenceCollector");
11
+ const KeywordParser_1 = require("../parsers/KeywordParser");
12
+ const CommandTokenReader_1 = require("../tokenReaders/CommandTokenReader");
13
+ /**
14
+ * Error messages for alias renaming operations
15
+ */
16
+ const ERROR_MESSAGES = {
17
+ invalidSql: 'Invalid SQL: unable to parse query',
18
+ invalidPosition: 'Invalid position: line or column out of bounds',
19
+ noLexemeAtPosition: 'No lexeme found at the specified position',
20
+ notAnAlias: 'Selected lexeme is not a valid alias',
21
+ invalidNewName: 'New alias name must be a non-empty string',
22
+ sameNames: 'Old and new alias names cannot be the same',
23
+ nameConflict: (name) => `Alias '${name}' already exists in this scope`,
24
+ aliasNotFound: (name) => `Alias '${name}' not found in current scope`,
25
+ };
26
+ /**
27
+ * A utility class for renaming table and column aliases in SQL queries.
28
+ *
29
+ * This class provides functionality to rename aliases within specific scopes
30
+ * (CTE, subquery, or main query) based on cursor position from GUI editors.
31
+ * It automatically detects the appropriate scope and updates all references
32
+ * to the alias within that scope boundary.
33
+ *
34
+ * @example
35
+ * ```typescript
36
+ * import { AliasRenamer } from 'rawsql-ts';
37
+ *
38
+ * const sql = `
39
+ * SELECT u.name, o.date
40
+ * FROM users u
41
+ * JOIN orders o ON u.id = o.user_id
42
+ * `;
43
+ *
44
+ * const renamer = new AliasRenamer();
45
+ *
46
+ * // Rename 'u' to 'user_alias' by selecting it at line 2, column 10
47
+ * const result = renamer.renameAlias(sql, { line: 2, column: 10 }, 'user_alias');
48
+ *
49
+ * if (result.success) {
50
+ * console.log(result.newSql);
51
+ * // SELECT user_alias.name, o.date
52
+ * // FROM users user_alias
53
+ * // JOIN orders o ON user_alias.id = o.user_id
54
+ * }
55
+ * ```
56
+ *
57
+ * Related tests: packages/core/tests/transformers/AliasRenamer.functional.test.ts
58
+ * @since 0.12.0
59
+ */
60
+ class AliasRenamer {
61
+ /**
62
+ * Creates a new instance of AliasRenamer.
63
+ */
64
+ constructor() {
65
+ // Initialize keyword parser for reserved word detection using shared trie
66
+ this.keywordParser = new KeywordParser_1.KeywordParser(CommandTokenReader_1.commandKeywordTrie);
67
+ }
68
+ /**
69
+ * Renames an alias based on the cursor position in GUI editor.
70
+ *
71
+ * This method detects the alias at the specified line and column position,
72
+ * determines its scope (CTE, subquery, or main query), and renames all
73
+ * references to that alias within the scope boundaries.
74
+ *
75
+ * @param sql - The SQL string containing the alias to rename
76
+ * @param position - Line and column position (1-based) from GUI editor
77
+ * @param newName - The new name for the alias
78
+ * @param options - Optional configuration for the rename operation
79
+ * @returns Result containing success status, modified SQL, and change details
80
+ *
81
+ * @example
82
+ * ```typescript
83
+ * const sql = "SELECT u.name FROM users u WHERE u.active = true";
84
+ * const result = renamer.renameAlias(sql, { line: 1, column: 8 }, 'user_table');
85
+ *
86
+ * if (result.success) {
87
+ * console.log(result.newSql);
88
+ * // "SELECT user_table.name FROM users user_table WHERE user_table.active = true"
89
+ * }
90
+ * ```
91
+ *
92
+ * @throws {Error} When the SQL cannot be parsed or position is invalid
93
+ */
94
+ renameAlias(sql, position, newName, options = {}) {
95
+ try {
96
+ // Input validation
97
+ this.validateInputs(sql, position, newName);
98
+ // Find lexeme at the specified position
99
+ const lexeme = LexemeCursor_1.LexemeCursor.findLexemeAtLineColumn(sql, position);
100
+ if (!lexeme) {
101
+ throw new Error(ERROR_MESSAGES.noLexemeAtPosition);
102
+ }
103
+ // Validate that the lexeme is a valid alias
104
+ this.validateLexemeIsAlias(lexeme);
105
+ // Parse SQL to get AST
106
+ const query = SelectQueryParser_1.SelectQueryParser.parse(sql);
107
+ // Detect the scope containing this alias
108
+ const scope = this.detectAliasScope(sql, query, lexeme, options.scopeType);
109
+ // Find all references to this alias within the scope
110
+ const references = this.collectAliasReferences(scope, lexeme.value);
111
+ // Check for naming conflicts
112
+ const conflicts = this.checkNameConflicts(scope, newName, lexeme.value);
113
+ if (conflicts.length > 0) {
114
+ return {
115
+ success: false,
116
+ originalSql: sql,
117
+ changes: [],
118
+ conflicts,
119
+ scope
120
+ };
121
+ }
122
+ // Prepare changes
123
+ const changes = this.prepareChanges(references, newName);
124
+ // If dry run, return without making changes
125
+ if (options.dryRun) {
126
+ return {
127
+ success: true,
128
+ originalSql: sql,
129
+ changes,
130
+ conflicts,
131
+ scope
132
+ };
133
+ }
134
+ // Perform the actual renaming using lexeme-based approach for better accuracy
135
+ const newSql = this.performLexemeBasedRename(sql, lexeme.value, newName, scope);
136
+ return {
137
+ success: true,
138
+ originalSql: sql,
139
+ newSql,
140
+ changes,
141
+ scope
142
+ };
143
+ }
144
+ catch (error) {
145
+ return {
146
+ success: false,
147
+ originalSql: sql,
148
+ changes: [],
149
+ conflicts: [error instanceof Error ? error.message : String(error)]
150
+ };
151
+ }
152
+ }
153
+ /**
154
+ * Validates input parameters for alias renaming.
155
+ */
156
+ validateInputs(sql, position, newName) {
157
+ if (!sql || typeof sql !== 'string' || sql.trim() === '') {
158
+ throw new Error(ERROR_MESSAGES.invalidSql);
159
+ }
160
+ if (!position || typeof position.line !== 'number' || typeof position.column !== 'number' ||
161
+ position.line < 1 || position.column < 1) {
162
+ throw new Error(ERROR_MESSAGES.invalidPosition);
163
+ }
164
+ if (!newName || typeof newName !== 'string' || newName.trim() === '') {
165
+ throw new Error(ERROR_MESSAGES.invalidNewName);
166
+ }
167
+ }
168
+ /**
169
+ * Validates that the lexeme represents a valid alias.
170
+ */
171
+ validateLexemeIsAlias(lexeme) {
172
+ // Check if lexeme is an identifier (potential alias)
173
+ if (!(lexeme.type & Lexeme_1.TokenType.Identifier)) {
174
+ throw new Error(ERROR_MESSAGES.notAnAlias);
175
+ }
176
+ }
177
+ /**
178
+ * Detects the scope (CTE, subquery, main query) containing the alias.
179
+ */
180
+ detectAliasScope(sql, query, lexeme, scopeType) {
181
+ if (!lexeme.position) {
182
+ // Fallback to main query if no position info
183
+ return {
184
+ type: 'main',
185
+ query,
186
+ startPosition: 0,
187
+ endPosition: sql.length
188
+ };
189
+ }
190
+ const lexemePosition = lexeme.position.startPosition;
191
+ // Force specific scope type if requested
192
+ if (scopeType && scopeType !== 'auto') {
193
+ return this.createScopeForType(scopeType, sql, query, lexemePosition);
194
+ }
195
+ // Auto-detect scope based on position
196
+ return this.autoDetectScope(sql, query, lexemePosition);
197
+ }
198
+ /**
199
+ * Creates scope for a specific requested type.
200
+ */
201
+ createScopeForType(scopeType, sql, query, position) {
202
+ switch (scopeType) {
203
+ case 'cte':
204
+ return this.detectCTEScope(sql, query, position);
205
+ case 'subquery':
206
+ return this.detectSubqueryScope(sql, query, position);
207
+ case 'main':
208
+ default:
209
+ return {
210
+ type: 'main',
211
+ query,
212
+ startPosition: 0,
213
+ endPosition: sql.length
214
+ };
215
+ }
216
+ }
217
+ /**
218
+ * Auto-detects the most appropriate scope based on cursor position.
219
+ */
220
+ autoDetectScope(sql, query, position) {
221
+ // First check if we're in a CTE
222
+ const cteScope = this.detectCTEScope(sql, query, position);
223
+ if (cteScope.type === 'cte') {
224
+ return cteScope;
225
+ }
226
+ // Then check for subqueries (implementation needed)
227
+ const subqueryScope = this.detectSubqueryScope(sql, query, position);
228
+ if (subqueryScope.type === 'subquery') {
229
+ return subqueryScope;
230
+ }
231
+ // Default to main query
232
+ return {
233
+ type: 'main',
234
+ query,
235
+ startPosition: 0,
236
+ endPosition: sql.length
237
+ };
238
+ }
239
+ /**
240
+ * Detects if the position is within a CTE and returns appropriate scope.
241
+ */
242
+ detectCTEScope(sql, query, position) {
243
+ try {
244
+ // Use CTERegionDetector to analyze cursor position
245
+ const analysis = CTERegionDetector_1.CTERegionDetector.analyzeCursorPosition(sql, position);
246
+ if (analysis.isInCTE && analysis.cteRegion) {
247
+ // Find the corresponding CTE query in the AST
248
+ const cteQuery = this.findCTEQueryByName(query, analysis.cteRegion.name);
249
+ return {
250
+ type: 'cte',
251
+ name: analysis.cteRegion.name,
252
+ query: cteQuery || query, // Fallback to main query if CTE not found
253
+ startPosition: analysis.cteRegion.startPosition,
254
+ endPosition: analysis.cteRegion.endPosition
255
+ };
256
+ }
257
+ }
258
+ catch (error) {
259
+ // If CTE detection fails, fall back to main query
260
+ console.warn('CTE scope detection failed:', error);
261
+ }
262
+ // Not in CTE, return main query scope
263
+ return {
264
+ type: 'main',
265
+ query,
266
+ startPosition: 0,
267
+ endPosition: sql.length
268
+ };
269
+ }
270
+ /**
271
+ * Detects if the position is within a subquery scope.
272
+ */
273
+ detectSubqueryScope(sql, query, position) {
274
+ // TODO: Implement subquery detection
275
+ // This would involve traversing the AST to find nested SELECT queries
276
+ // and determining if the position falls within their boundaries
277
+ // For now, return main query scope
278
+ return {
279
+ type: 'main',
280
+ query,
281
+ startPosition: 0,
282
+ endPosition: sql.length
283
+ };
284
+ }
285
+ /**
286
+ * Finds a CTE query by name within the parsed AST.
287
+ */
288
+ findCTEQueryByName(query, cteName) {
289
+ var _a;
290
+ if (query instanceof SelectQuery_1.SimpleSelectQuery && ((_a = query.withClause) === null || _a === void 0 ? void 0 : _a.tables)) {
291
+ for (const cte of query.withClause.tables) {
292
+ if (cte.aliasExpression.table.name === cteName) {
293
+ return cte.query;
294
+ }
295
+ }
296
+ }
297
+ else if (query instanceof SelectQuery_1.BinarySelectQuery) {
298
+ // Check left side first
299
+ const leftResult = this.findCTEQueryByName(query.left, cteName);
300
+ if (leftResult)
301
+ return leftResult;
302
+ // Then check right side
303
+ const rightResult = this.findCTEQueryByName(query.right, cteName);
304
+ if (rightResult)
305
+ return rightResult;
306
+ }
307
+ return null;
308
+ }
309
+ /**
310
+ * Collects all references to the specified alias within the given scope.
311
+ */
312
+ collectAliasReferences(scope, aliasName) {
313
+ const references = [];
314
+ try {
315
+ // Collect table source references (FROM, JOIN clauses)
316
+ const tableReferences = this.collectTableAliasReferences(scope, aliasName);
317
+ references.push(...tableReferences);
318
+ // Collect column references (table_alias.column format)
319
+ const columnReferences = this.collectColumnAliasReferences(scope, aliasName);
320
+ references.push(...columnReferences);
321
+ }
322
+ catch (error) {
323
+ console.warn(`Failed to collect alias references for '${aliasName}':`, error);
324
+ }
325
+ return references;
326
+ }
327
+ /**
328
+ * Collects table alias references within the scope.
329
+ */
330
+ collectTableAliasReferences(scope, aliasName) {
331
+ const references = [];
332
+ try {
333
+ // Use TableSourceCollector to find all table sources in the scope
334
+ const collector = new TableSourceCollector_1.TableSourceCollector(true); // selectableOnly=true for proper scope
335
+ const tableSources = collector.collect(scope.query);
336
+ for (const tableSource of tableSources) {
337
+ const sourceName = tableSource.getSourceName();
338
+ // Check if this table source matches our alias
339
+ if (sourceName === aliasName) {
340
+ // This is likely the definition of the alias (FROM users u, JOIN orders o)
341
+ const lexeme = this.createLexemeFromTableSource(tableSource, aliasName);
342
+ if (lexeme) {
343
+ references.push({
344
+ lexeme,
345
+ scope,
346
+ referenceType: 'definition',
347
+ context: 'table'
348
+ });
349
+ }
350
+ }
351
+ }
352
+ }
353
+ catch (error) {
354
+ console.warn(`Failed to collect table alias references for '${aliasName}':`, error);
355
+ }
356
+ return references;
357
+ }
358
+ /**
359
+ * Collects column alias references (table_alias.column format) within the scope.
360
+ */
361
+ collectColumnAliasReferences(scope, aliasName) {
362
+ const references = [];
363
+ try {
364
+ // Use ColumnReferenceCollector to find all column references
365
+ const collector = new ColumnReferenceCollector_1.ColumnReferenceCollector();
366
+ const columnRefs = collector.collect(scope.query);
367
+ for (const columnRef of columnRefs) {
368
+ // Check if any namespace in this column reference matches our alias
369
+ if (columnRef.namespaces && columnRef.namespaces.length > 0) {
370
+ for (const namespace of columnRef.namespaces) {
371
+ if (namespace.name === aliasName) {
372
+ // This is a usage of the alias (u.name, u.id, etc.)
373
+ const lexeme = this.createLexemeFromNamespace(namespace, aliasName);
374
+ if (lexeme) {
375
+ references.push({
376
+ lexeme,
377
+ scope,
378
+ referenceType: 'usage',
379
+ context: 'column'
380
+ });
381
+ }
382
+ }
383
+ }
384
+ }
385
+ }
386
+ }
387
+ catch (error) {
388
+ console.warn(`Failed to collect column alias references for '${aliasName}':`, error);
389
+ }
390
+ return references;
391
+ }
392
+ /**
393
+ * Creates a lexeme representation from a table source for reference tracking.
394
+ */
395
+ createLexemeFromTableSource(tableSource, aliasName) {
396
+ try {
397
+ // Try to extract position information from the table source
398
+ // This is a best-effort approach since TableSource might not have direct lexeme info
399
+ return {
400
+ type: Lexeme_1.TokenType.Identifier,
401
+ value: aliasName,
402
+ comments: null,
403
+ position: {
404
+ startPosition: 0, // TODO: Extract actual position if available
405
+ endPosition: aliasName.length
406
+ }
407
+ };
408
+ }
409
+ catch (error) {
410
+ console.warn('Failed to create lexeme from table source:', error);
411
+ return null;
412
+ }
413
+ }
414
+ /**
415
+ * Creates a lexeme representation from a namespace for reference tracking.
416
+ */
417
+ createLexemeFromNamespace(namespace, aliasName) {
418
+ try {
419
+ // Try to extract position information from the namespace
420
+ return {
421
+ type: Lexeme_1.TokenType.Identifier,
422
+ value: aliasName,
423
+ comments: null,
424
+ position: {
425
+ startPosition: 0, // TODO: Extract actual position if available
426
+ endPosition: aliasName.length
427
+ }
428
+ };
429
+ }
430
+ catch (error) {
431
+ console.warn('Failed to create lexeme from namespace:', error);
432
+ return null;
433
+ }
434
+ }
435
+ /**
436
+ * Checks for naming conflicts when renaming to the new name.
437
+ */
438
+ checkNameConflicts(scope, newName, currentName) {
439
+ const conflicts = [];
440
+ if (newName.toLowerCase() === currentName.toLowerCase()) {
441
+ conflicts.push(ERROR_MESSAGES.sameNames);
442
+ return conflicts;
443
+ }
444
+ try {
445
+ // Check for conflicts with existing table aliases
446
+ const tableConflicts = this.checkTableAliasConflicts(scope, newName);
447
+ conflicts.push(...tableConflicts);
448
+ // Check for conflicts with SQL keywords (basic check)
449
+ const keywordConflicts = this.checkKeywordConflicts(newName);
450
+ conflicts.push(...keywordConflicts);
451
+ }
452
+ catch (error) {
453
+ console.warn(`Error during conflict detection for '${newName}':`, error);
454
+ conflicts.push(`Unable to verify conflicts for name '${newName}'`);
455
+ }
456
+ return conflicts;
457
+ }
458
+ /**
459
+ * Checks for conflicts with existing table aliases and table names in the scope.
460
+ */
461
+ checkTableAliasConflicts(scope, newName) {
462
+ const conflicts = [];
463
+ try {
464
+ // Use TableSourceCollector to get all existing table sources in scope
465
+ const collector = new TableSourceCollector_1.TableSourceCollector(true);
466
+ const tableSources = collector.collect(scope.query);
467
+ for (const tableSource of tableSources) {
468
+ // Check alias conflicts
469
+ const aliasName = tableSource.getSourceName();
470
+ if (aliasName && aliasName.toLowerCase() === newName.toLowerCase()) {
471
+ conflicts.push(ERROR_MESSAGES.nameConflict(newName));
472
+ continue; // Avoid duplicate messages
473
+ }
474
+ // Check table name conflicts
475
+ const tableName = this.extractTableName(tableSource);
476
+ if (tableName && tableName.toLowerCase() === newName.toLowerCase()) {
477
+ conflicts.push(`'${newName}' conflicts with table name in this scope`);
478
+ }
479
+ }
480
+ }
481
+ catch (error) {
482
+ console.warn(`Failed to check table alias conflicts for '${newName}':`, error);
483
+ }
484
+ return conflicts;
485
+ }
486
+ /**
487
+ * Extracts the actual table name from a table source (not the alias).
488
+ */
489
+ extractTableName(tableSource) {
490
+ try {
491
+ // Try to access the qualified name to get the actual table name
492
+ if (tableSource.qualifiedName && tableSource.qualifiedName.name) {
493
+ const name = tableSource.qualifiedName.name;
494
+ // Handle different name types
495
+ if (typeof name === 'string') {
496
+ return name;
497
+ }
498
+ else if (name.name && typeof name.name === 'string') {
499
+ // IdentifierString case
500
+ return name.name;
501
+ }
502
+ else if (name.value && typeof name.value === 'string') {
503
+ // RawString case
504
+ return name.value;
505
+ }
506
+ }
507
+ // Fallback: try to get table name from other properties
508
+ if (tableSource.table && typeof tableSource.table === 'string') {
509
+ return tableSource.table;
510
+ }
511
+ return null;
512
+ }
513
+ catch (error) {
514
+ console.warn('Failed to extract table name from table source:', error);
515
+ return null;
516
+ }
517
+ }
518
+ /**
519
+ * Checks if the new name conflicts with SQL keywords using the existing KeywordTrie.
520
+ */
521
+ checkKeywordConflicts(newName) {
522
+ const conflicts = [];
523
+ // Use basic check as primary method for now to ensure test reliability
524
+ if (this.isBasicReservedKeyword(newName)) {
525
+ conflicts.push(`'${newName}' is a reserved SQL keyword and should not be used as an alias`);
526
+ return conflicts;
527
+ }
528
+ try {
529
+ // Use the KeywordParser to check if the new name is a reserved keyword
530
+ const keywordResult = this.keywordParser.parse(newName, 0);
531
+ if (keywordResult !== null && keywordResult.keyword.toLowerCase() === newName.toLowerCase()) {
532
+ conflicts.push(`'${newName}' is a reserved SQL keyword and should not be used as an alias`);
533
+ }
534
+ }
535
+ catch (error) {
536
+ console.warn(`Failed to check keyword conflicts for '${newName}':`, error);
537
+ }
538
+ return conflicts;
539
+ }
540
+ /**
541
+ * Fallback method for basic reserved keyword checking.
542
+ */
543
+ isBasicReservedKeyword(name) {
544
+ const basicKeywords = ['select', 'from', 'where', 'join', 'table', 'null', 'and', 'or'];
545
+ return basicKeywords.includes(name.toLowerCase());
546
+ }
547
+ /**
548
+ * Prepares change details for the rename operation.
549
+ */
550
+ prepareChanges(references, newName) {
551
+ return references.map(ref => {
552
+ var _a;
553
+ return ({
554
+ oldName: ref.lexeme.value,
555
+ newName,
556
+ position: LexemeCursor_1.LexemeCursor.charOffsetToLineColumn('', // TODO: Get original SQL
557
+ ((_a = ref.lexeme.position) === null || _a === void 0 ? void 0 : _a.startPosition) || 0) || { line: 1, column: 1 },
558
+ context: ref.context,
559
+ referenceType: ref.referenceType
560
+ });
561
+ });
562
+ }
563
+ /**
564
+ * Enhanced SQL text replacement using lexeme-based approach.
565
+ * This method re-tokenizes the SQL to get accurate position information.
566
+ */
567
+ performLexemeBasedRename(sql, aliasName, newName, scope) {
568
+ try {
569
+ // Get all lexemes with position information
570
+ const lexemes = LexemeCursor_1.LexemeCursor.getAllLexemesWithPosition(sql);
571
+ // Filter lexemes within the scope and matching the alias name
572
+ const targetLexemes = lexemes.filter(lexeme => lexeme.value === aliasName &&
573
+ lexeme.position &&
574
+ lexeme.position.startPosition >= scope.startPosition &&
575
+ lexeme.position.endPosition <= scope.endPosition &&
576
+ (lexeme.type & Lexeme_1.TokenType.Identifier) // Only rename identifiers
577
+ );
578
+ if (targetLexemes.length === 0) {
579
+ return sql; // No matches found
580
+ }
581
+ // Sort by position (descending) for safe replacement
582
+ targetLexemes.sort((a, b) => b.position.startPosition - a.position.startPosition);
583
+ let modifiedSql = sql;
584
+ // Replace each occurrence
585
+ for (const lexeme of targetLexemes) {
586
+ const pos = lexeme.position;
587
+ modifiedSql = modifiedSql.substring(0, pos.startPosition) +
588
+ newName +
589
+ modifiedSql.substring(pos.endPosition);
590
+ }
591
+ return modifiedSql;
592
+ }
593
+ catch (error) {
594
+ console.error('Failed to perform lexeme-based rename:', error);
595
+ throw new Error(`Unable to rename alias using lexeme approach: ${error instanceof Error ? error.message : String(error)}`);
596
+ }
597
+ }
598
+ }
599
+ exports.AliasRenamer = AliasRenamer;
600
+ //# sourceMappingURL=AliasRenamer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AliasRenamer.js","sourceRoot":"","sources":["../../src/transformers/AliasRenamer.ts"],"names":[],"mappings":"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"}