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,504 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SqlIdentifierRenamer = void 0;
4
+ /**
5
+ * Handles safe renaming of SQL identifiers within plain SQL strings.
6
+ *
7
+ * @example
8
+ * ```typescript
9
+ * const renamer = new SqlIdentifierRenamer();
10
+ * const sql = 'SELECT u.id FROM users u';
11
+ * const result = renamer.renameIdentifier(sql, 'u', 'users_alias');
12
+ * ```
13
+ * Related tests: packages/core/tests/transformers/SqlIdentifierRenamer.test.ts
14
+ */
15
+ class SqlIdentifierRenamer {
16
+ /**
17
+ * Safely renames identifiers in SQL string while preserving context
18
+ * @param sql SQL string to modify
19
+ * @param renames Map of original identifiers to new identifiers
20
+ * @returns Modified SQL string with renamed identifiers
21
+ */
22
+ renameIdentifiers(sql, renames) {
23
+ if (renames.size === 0) {
24
+ return sql;
25
+ }
26
+ let result = sql;
27
+ // Apply all renames
28
+ for (const [originalValue, newValue] of renames) {
29
+ result = this.replaceIdentifierSafely(result, originalValue, newValue);
30
+ }
31
+ return result;
32
+ }
33
+ /**
34
+ * Renames a single identifier in SQL string
35
+ * @param sql SQL string to modify
36
+ * @param oldIdentifier Original identifier to replace
37
+ * @param newIdentifier New identifier to replace with
38
+ * @returns Modified SQL string
39
+ */
40
+ renameIdentifier(sql, oldIdentifier, newIdentifier) {
41
+ return this.replaceIdentifierSafely(sql, oldIdentifier, newIdentifier);
42
+ }
43
+ /**
44
+ * Renames a single identifier within a specified scope range
45
+ * @param sql SQL string to modify
46
+ * @param oldIdentifier Original identifier to replace
47
+ * @param newIdentifier New identifier to replace with
48
+ * @param scopeRange Optional scope range to limit replacement
49
+ * @returns Modified SQL string
50
+ */
51
+ renameIdentifierInScope(sql, oldIdentifier, newIdentifier, scopeRange) {
52
+ if (!scopeRange) {
53
+ // Fallback to full SQL replacement
54
+ return this.replaceIdentifierSafely(sql, oldIdentifier, newIdentifier);
55
+ }
56
+ // Extract the portion of SQL within scope range
57
+ const beforeScope = sql.slice(0, scopeRange.start);
58
+ const scopeContent = sql.slice(scopeRange.start, scopeRange.end);
59
+ const afterScope = sql.slice(scopeRange.end);
60
+ // Replace identifiers only within the scope
61
+ const modifiedScopeContent = this.replaceIdentifierSafely(scopeContent, oldIdentifier, newIdentifier);
62
+ // Reconstruct the full SQL
63
+ return beforeScope + modifiedScopeContent + afterScope;
64
+ }
65
+ /**
66
+ * Checks if an identifier at the given position can be renamed
67
+ * @param sql SQL string
68
+ * @param position Position in the SQL text
69
+ * @returns Renameability result
70
+ */
71
+ checkRenameability(sql, position) {
72
+ // Convert line/column to character position
73
+ const charPosition = this.positionToCharIndex(sql, position);
74
+ // TODO: Implement proper identifier detection and scope analysis
75
+ // For now, minimal implementation to make tests pass
76
+ // Simple detection - if we're in a string literal, not renameable
77
+ if (this.isInsideStringLiteral(sql, charPosition)) {
78
+ return {
79
+ canRename: false,
80
+ reason: 'Cannot rename identifiers inside string literal'
81
+ };
82
+ }
83
+ // Detect if we're on an identifier (simplified)
84
+ const identifier = this.getIdentifierAtPosition(sql, charPosition);
85
+ if (!identifier) {
86
+ return {
87
+ canRename: false,
88
+ reason: 'No identifier found at position'
89
+ };
90
+ }
91
+ // Determine type and scope (simplified logic)
92
+ const type = this.determineIdentifierType(sql, charPosition, identifier);
93
+ const scopeRange = this.calculateScopeRange(sql, charPosition, type);
94
+ return {
95
+ canRename: true,
96
+ currentName: identifier,
97
+ type: type,
98
+ scopeRange: scopeRange
99
+ };
100
+ }
101
+ /**
102
+ * Renames identifier at the specified position
103
+ * @param sql SQL string
104
+ * @param position Position in the SQL text
105
+ * @param newName New identifier name
106
+ * @returns Modified SQL string
107
+ */
108
+ renameAtPosition(sql, position, newName) {
109
+ const renameability = this.checkRenameability(sql, position);
110
+ if (!renameability.canRename || !renameability.currentName) {
111
+ throw new Error(renameability.reason || 'Cannot rename at this position');
112
+ }
113
+ return this.renameIdentifierInScope(sql, renameability.currentName, newName, renameability.scopeRange);
114
+ }
115
+ /**
116
+ * Convert line/column position to character index
117
+ */
118
+ positionToCharIndex(sql, position) {
119
+ const lines = sql.split('\n');
120
+ let charIndex = 0;
121
+ for (let i = 0; i < position.line - 1 && i < lines.length; i++) {
122
+ charIndex += lines[i].length + 1; // +1 for newline
123
+ }
124
+ charIndex += position.column - 1;
125
+ return Math.min(charIndex, sql.length - 1);
126
+ }
127
+ /**
128
+ * Check if position is inside a string literal
129
+ */
130
+ isInsideStringLiteral(sql, charPosition) {
131
+ // Simple check - count single quotes before position
132
+ let inString = false;
133
+ for (let i = 0; i < charPosition && i < sql.length; i++) {
134
+ if (sql[i] === "'") {
135
+ inString = !inString;
136
+ }
137
+ }
138
+ return inString;
139
+ }
140
+ /**
141
+ * Get identifier at the specified character position
142
+ */
143
+ getIdentifierAtPosition(sql, charPosition) {
144
+ if (charPosition >= sql.length)
145
+ return null;
146
+ // Find start of identifier
147
+ let start = charPosition;
148
+ while (start > 0 && this.isIdentifierChar(sql.charCodeAt(start - 1))) {
149
+ start--;
150
+ }
151
+ // Find end of identifier
152
+ let end = charPosition;
153
+ while (end < sql.length && this.isIdentifierChar(sql.charCodeAt(end))) {
154
+ end++;
155
+ }
156
+ if (start === end)
157
+ return null;
158
+ return sql.slice(start, end);
159
+ }
160
+ /**
161
+ * Determine the type of identifier (improved logic)
162
+ */
163
+ determineIdentifierType(sql, charPosition, identifier) {
164
+ const beforePosition = sql.slice(0, charPosition);
165
+ const afterPosition = sql.slice(charPosition);
166
+ // Check if this is a CTE name (appears between WITH and AS)
167
+ const beforeUpper = beforePosition.toUpperCase();
168
+ const afterUpper = afterPosition.toUpperCase();
169
+ // Find last WITH before our position
170
+ const lastWithIndex = beforeUpper.lastIndexOf('WITH');
171
+ if (lastWithIndex !== -1) {
172
+ // Get the identifier bounds
173
+ let start = charPosition;
174
+ while (start > 0 && this.isIdentifierChar(sql.charCodeAt(start - 1))) {
175
+ start--;
176
+ }
177
+ let end = charPosition;
178
+ while (end < sql.length && this.isIdentifierChar(sql.charCodeAt(end))) {
179
+ end++;
180
+ }
181
+ // Check what comes after the complete identifier
182
+ const afterIdentifier = sql.slice(end).toUpperCase();
183
+ // CTE pattern: WITH identifier AS (
184
+ if (afterIdentifier.trim().startsWith('AS (')) {
185
+ return 'cte';
186
+ }
187
+ }
188
+ // Check if this appears after FROM or JOIN (table alias)
189
+ const beforeLines = beforePosition.split('\n');
190
+ const currentLine = beforeLines[beforeLines.length - 1].toUpperCase();
191
+ if (currentLine.includes('FROM ') || currentLine.includes('JOIN ')) {
192
+ return 'table_alias';
193
+ }
194
+ // Check context around the identifier for table alias patterns
195
+ const contextBefore = beforePosition.slice(Math.max(0, charPosition - 50));
196
+ const contextAfter = afterPosition.slice(0, 50);
197
+ const fullContext = (contextBefore + identifier + contextAfter).toUpperCase();
198
+ // Table alias patterns: "FROM table AS alias" or "JOIN table alias"
199
+ if (fullContext.includes(' AS ' + identifier.toUpperCase()) ||
200
+ fullContext.includes(' ' + identifier.toUpperCase() + ' ON') ||
201
+ fullContext.includes(' ' + identifier.toUpperCase() + '\n')) {
202
+ return 'table_alias';
203
+ }
204
+ // Default to table alias if uncertain
205
+ return 'table_alias';
206
+ }
207
+ /**
208
+ * Calculate scope range for the identifier
209
+ */
210
+ calculateScopeRange(sql, charPosition, type) {
211
+ if (type === 'cte') {
212
+ // CTE has global scope
213
+ return { start: 0, end: sql.length };
214
+ }
215
+ // Table alias - find the containing SELECT statement (simplified)
216
+ // This is a very basic implementation
217
+ const beforePosition = sql.slice(0, charPosition);
218
+ const afterPosition = sql.slice(charPosition);
219
+ // Find the start of current SELECT
220
+ const lastSelect = beforePosition.toUpperCase().lastIndexOf('SELECT');
221
+ const start = lastSelect !== -1 ? lastSelect : 0;
222
+ // Find the end (next major clause or end of SQL)
223
+ const nextMajorClause = afterPosition.search(/\b(SELECT|WITH|UNION)\b/i);
224
+ const end = nextMajorClause !== -1 ? charPosition + nextMajorClause : sql.length;
225
+ return { start, end };
226
+ }
227
+ /**
228
+ * Safely replaces SQL identifiers while preserving word boundaries and context
229
+ * Uses character-by-character parsing instead of regex for better maintainability
230
+ * @param sql SQL string to modify
231
+ * @param oldIdentifier Original identifier to replace
232
+ * @param newIdentifier New identifier to replace with
233
+ * @returns Modified SQL string
234
+ */
235
+ replaceIdentifierSafely(sql, oldIdentifier, newIdentifier) {
236
+ if (oldIdentifier === newIdentifier || oldIdentifier.length === 0) {
237
+ return sql;
238
+ }
239
+ const result = [];
240
+ let position = 0;
241
+ const sqlLength = sql.length;
242
+ const oldIdLength = oldIdentifier.length;
243
+ while (position < sqlLength) {
244
+ const char = sql[position];
245
+ const charCode = char.charCodeAt(0);
246
+ // Handle quoted identifiers - check for identifier matches within quotes
247
+ if (charCode === 34 || charCode === 96 || charCode === 91) { // " ` [
248
+ const { content, nextPosition } = this.extractAndReplaceQuotedIdentifier(sql, position, char, oldIdentifier, newIdentifier);
249
+ result.push(content);
250
+ position = nextPosition;
251
+ continue;
252
+ }
253
+ // Skip string literals (only single quotes are actual string literals)
254
+ if (charCode === 39) { // '
255
+ const { content, nextPosition } = this.extractQuotedString(sql, position, char);
256
+ result.push(content);
257
+ position = nextPosition;
258
+ continue;
259
+ }
260
+ // Skip line comments --
261
+ if (charCode === 45 && position + 1 < sqlLength && sql.charCodeAt(position + 1) === 45) {
262
+ const { content, nextPosition } = this.extractLineComment(sql, position);
263
+ result.push(content);
264
+ position = nextPosition;
265
+ continue;
266
+ }
267
+ // Skip block comments
268
+ if (charCode === 47 && position + 1 < sqlLength && sql.charCodeAt(position + 1) === 42) {
269
+ const { content, nextPosition } = this.extractBlockComment(sql, position);
270
+ result.push(content);
271
+ position = nextPosition;
272
+ continue;
273
+ }
274
+ // Check for potential identifier match
275
+ if (this.isIdentifierStartChar(charCode) && this.matchesIdentifierAt(sql, position, oldIdentifier)) {
276
+ const beforePosition = position - 1;
277
+ const afterPosition = position + oldIdLength;
278
+ // Validate word boundaries
279
+ const beforeChar = beforePosition >= 0 ? sql[beforePosition] : null;
280
+ const afterChar = afterPosition < sqlLength ? sql[afterPosition] : null;
281
+ if (this.hasValidWordBoundaries(beforeChar, afterChar)) {
282
+ result.push(newIdentifier);
283
+ position += oldIdLength;
284
+ continue;
285
+ }
286
+ }
287
+ // Default: add current character
288
+ result.push(char);
289
+ position++;
290
+ }
291
+ return result.join('');
292
+ }
293
+ /**
294
+ * Validates that the rename operation was successful
295
+ * @param originalSql Original SQL string
296
+ * @param modifiedSql Modified SQL string after rename
297
+ * @param oldIdentifier Old identifier that was replaced
298
+ * @param newIdentifier New identifier that was added
299
+ * @returns True if rename appears successful
300
+ */
301
+ validateRename(originalSql, modifiedSql, oldIdentifier, newIdentifier) {
302
+ // Basic validation: modified SQL should be different from original
303
+ if (originalSql === modifiedSql) {
304
+ return false;
305
+ }
306
+ // The new identifier should appear in the result
307
+ if (!modifiedSql.includes(newIdentifier)) {
308
+ return false;
309
+ }
310
+ // The modified SQL should have fewer occurrences of the old identifier than the original
311
+ const originalOccurrences = this.countWordOccurrences(originalSql, oldIdentifier);
312
+ const modifiedOccurrences = this.countWordOccurrences(modifiedSql, oldIdentifier);
313
+ return modifiedOccurrences < originalOccurrences;
314
+ }
315
+ /**
316
+ * Extract and potentially replace quoted identifiers
317
+ */
318
+ extractAndReplaceQuotedIdentifier(sql, startPosition, quoteChar, oldIdentifier, newIdentifier) {
319
+ if (quoteChar === '[') {
320
+ return this.extractAndReplaceBracketedIdentifier(sql, startPosition, oldIdentifier, newIdentifier);
321
+ }
322
+ const result = [quoteChar];
323
+ let position = startPosition + 1;
324
+ const identifierStart = position;
325
+ while (position < sql.length) {
326
+ const char = sql[position];
327
+ if (char === quoteChar) {
328
+ // Check for escaped quotes (double quotes)
329
+ if (position + 1 < sql.length && sql[position + 1] === quoteChar) {
330
+ result.push(char);
331
+ result.push(sql[position + 1]);
332
+ position += 2;
333
+ continue;
334
+ }
335
+ // Extract the content within quotes and check for identifier match
336
+ const quotedContent = sql.slice(identifierStart, position);
337
+ if (quotedContent.toLowerCase() === oldIdentifier.toLowerCase()) {
338
+ result.push(newIdentifier);
339
+ }
340
+ else {
341
+ result.push(quotedContent);
342
+ }
343
+ result.push(char); // closing quote
344
+ break;
345
+ }
346
+ position++;
347
+ }
348
+ return { content: result.join(''), nextPosition: position + 1 };
349
+ }
350
+ /**
351
+ * Extract and potentially replace bracketed identifiers [identifier]
352
+ */
353
+ extractAndReplaceBracketedIdentifier(sql, startPosition, oldIdentifier, newIdentifier) {
354
+ const result = ['['];
355
+ let position = startPosition + 1;
356
+ const identifierStart = position;
357
+ while (position < sql.length) {
358
+ const char = sql[position];
359
+ if (char === ']') {
360
+ // Extract the content within brackets and check for identifier match
361
+ const bracketedContent = sql.slice(identifierStart, position);
362
+ if (bracketedContent.toLowerCase() === oldIdentifier.toLowerCase()) {
363
+ result.push(newIdentifier);
364
+ }
365
+ else {
366
+ result.push(bracketedContent);
367
+ }
368
+ result.push(char); // closing bracket
369
+ break;
370
+ }
371
+ position++;
372
+ }
373
+ return { content: result.join(''), nextPosition: position + 1 };
374
+ }
375
+ /**
376
+ * Extract quoted string (handles quotes)
377
+ */
378
+ extractQuotedString(sql, startPosition, quoteChar) {
379
+ const result = [quoteChar];
380
+ let position = startPosition + 1;
381
+ while (position < sql.length) {
382
+ const char = sql[position];
383
+ result.push(char);
384
+ if (char === quoteChar) {
385
+ // Check for escaped quotes (double quotes)
386
+ if (position + 1 < sql.length && sql[position + 1] === quoteChar) {
387
+ result.push(sql[position + 1]);
388
+ position += 2;
389
+ continue;
390
+ }
391
+ break;
392
+ }
393
+ position++;
394
+ }
395
+ return { content: result.join(''), nextPosition: position + 1 };
396
+ }
397
+ /**
398
+ * Extract line comment
399
+ */
400
+ extractLineComment(sql, startPosition) {
401
+ const result = [];
402
+ let position = startPosition;
403
+ while (position < sql.length && sql.charCodeAt(position) !== 10 && sql.charCodeAt(position) !== 13) {
404
+ result.push(sql[position]);
405
+ position++;
406
+ }
407
+ // Include the newline if present
408
+ if (position < sql.length && (sql.charCodeAt(position) === 10 || sql.charCodeAt(position) === 13)) {
409
+ result.push(sql[position]);
410
+ position++;
411
+ }
412
+ return { content: result.join(''), nextPosition: position };
413
+ }
414
+ /**
415
+ * Extract block comment
416
+ */
417
+ extractBlockComment(sql, startPosition) {
418
+ const result = ['/', '*'];
419
+ let position = startPosition + 2;
420
+ while (position < sql.length - 1) {
421
+ const char = sql[position];
422
+ result.push(char);
423
+ if (char === '*' && sql[position + 1] === '/') {
424
+ result.push('/');
425
+ position += 2;
426
+ break;
427
+ }
428
+ position++;
429
+ }
430
+ return { content: result.join(''), nextPosition: position };
431
+ }
432
+ /**
433
+ * Check if character code can start an identifier
434
+ */
435
+ isIdentifierStartChar(charCode) {
436
+ return (charCode >= 65 && charCode <= 90) || // A-Z
437
+ (charCode >= 97 && charCode <= 122) || // a-z
438
+ (charCode === 95); // _
439
+ }
440
+ /**
441
+ * Check if character code can be part of an identifier
442
+ */
443
+ isIdentifierChar(charCode) {
444
+ return (charCode >= 65 && charCode <= 90) || // A-Z
445
+ (charCode >= 97 && charCode <= 122) || // a-z
446
+ (charCode >= 48 && charCode <= 57) || // 0-9
447
+ (charCode === 95); // _
448
+ }
449
+ /**
450
+ * Check if the identifier matches at the given position (case-insensitive)
451
+ */
452
+ matchesIdentifierAt(sql, position, identifier) {
453
+ if (position + identifier.length > sql.length) {
454
+ return false;
455
+ }
456
+ // Case-insensitive comparison
457
+ for (let i = 0; i < identifier.length; i++) {
458
+ const sqlChar = sql.charCodeAt(position + i);
459
+ const idChar = identifier.charCodeAt(i);
460
+ // Convert both to lowercase for comparison
461
+ const sqlLower = sqlChar >= 65 && sqlChar <= 90 ? sqlChar + 32 : sqlChar;
462
+ const idLower = idChar >= 65 && idChar <= 90 ? idChar + 32 : idChar;
463
+ if (sqlLower !== idLower) {
464
+ return false;
465
+ }
466
+ }
467
+ return true;
468
+ }
469
+ /**
470
+ * Validate word boundaries
471
+ */
472
+ hasValidWordBoundaries(beforeChar, afterChar) {
473
+ const isValidBefore = beforeChar === null || !this.isIdentifierChar(beforeChar.charCodeAt(0));
474
+ const isValidAfter = afterChar === null || !this.isIdentifierChar(afterChar.charCodeAt(0));
475
+ return isValidBefore && isValidAfter;
476
+ }
477
+ /**
478
+ * Counts word boundary occurrences of an identifier in SQL
479
+ * @param sql SQL string to search
480
+ * @param identifier Identifier to count
481
+ * @returns Number of occurrences
482
+ */
483
+ countWordOccurrences(sql, identifier) {
484
+ let count = 0;
485
+ let position = 0;
486
+ const sqlLength = sql.length;
487
+ const idLength = identifier.length;
488
+ while (position <= sqlLength - idLength) {
489
+ if (this.matchesIdentifierAt(sql, position, identifier)) {
490
+ const beforePosition = position - 1;
491
+ const afterPosition = position + idLength;
492
+ const beforeChar = beforePosition >= 0 ? sql[beforePosition] : null;
493
+ const afterChar = afterPosition < sqlLength ? sql[afterPosition] : null;
494
+ if (this.hasValidWordBoundaries(beforeChar, afterChar)) {
495
+ count++;
496
+ }
497
+ }
498
+ position++;
499
+ }
500
+ return count;
501
+ }
502
+ }
503
+ exports.SqlIdentifierRenamer = SqlIdentifierRenamer;
504
+ //# sourceMappingURL=SqlIdentifierRenamer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SqlIdentifierRenamer.js","sourceRoot":"","sources":["../../src/transformers/SqlIdentifierRenamer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SqlOutputToken = void 0;
4
+ // Composite pattern for SQL lines
5
+ class SqlOutputToken {
6
+ constructor(type, text, innerTokens = []) {
7
+ this.type = type;
8
+ this.text = text;
9
+ this.innerTokens = innerTokens;
10
+ }
11
+ }
12
+ exports.SqlOutputToken = SqlOutputToken;
13
+ //# sourceMappingURL=SqlOutputToken.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SqlOutputToken.js","sourceRoot":"","sources":["../../src/transformers/SqlOutputToken.ts"],"names":[],"mappings":";;;AAAA,kCAAkC;AAClC,MAAa,cAAc;IAIvB,YAAY,IAAY,EAAE,IAAY,EAAE,cAAgC,EAAE;QACtE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;IACnC,CAAC;CACJ;AATD,wCASC"}
@@ -0,0 +1,108 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SqlPaginationInjector = void 0;
4
+ const SelectQuery_1 = require("../models/SelectQuery");
5
+ const Clause_1 = require("../models/Clause");
6
+ const ValueComponent_1 = require("../models/ValueComponent");
7
+ const SelectQueryParser_1 = require("../parsers/SelectQueryParser");
8
+ /**
9
+ * SqlPaginationInjector injects pagination (LIMIT/OFFSET) into a SelectQuery model,
10
+ * creating LIMIT and OFFSET clauses based on provided pagination options.
11
+ */
12
+ class SqlPaginationInjector {
13
+ /**
14
+ * Injects pagination as LIMIT/OFFSET clauses into the given query model.
15
+ * @param query The SelectQuery to modify
16
+ * @param pagination Pagination options containing page number and page size
17
+ * @returns The modified SimpleSelectQuery with pagination applied
18
+ */
19
+ inject(query, pagination) {
20
+ // Validate pagination options
21
+ this.validatePaginationOptions(pagination);
22
+ // Convert string query to SimpleSelectQuery using SelectQueryParser if needed
23
+ if (typeof query === 'string') {
24
+ query = SelectQueryParser_1.SelectQueryParser.parse(query);
25
+ }
26
+ // Check if query is SimpleSelectQuery
27
+ if (!(query instanceof SelectQuery_1.SimpleSelectQuery)) {
28
+ throw new Error('Complex queries are not supported for pagination');
29
+ }
30
+ // Check if query already has LIMIT or OFFSET clauses
31
+ if (query.limitClause || query.offsetClause) {
32
+ throw new Error('Query already contains LIMIT or OFFSET clause. Use removePagination() first if you want to override existing pagination.');
33
+ }
34
+ // Calculate offset
35
+ const offset = (pagination.page - 1) * pagination.pageSize;
36
+ // Create LIMIT clause
37
+ const limitClause = new Clause_1.LimitClause(new ValueComponent_1.ParameterExpression('paging_limit', pagination.pageSize));
38
+ // Create OFFSET clause (always include for consistent query caching)
39
+ const offsetClause = new Clause_1.OffsetClause(new ValueComponent_1.ParameterExpression('paging_offset', offset));
40
+ // Create a new query with pagination clauses
41
+ return new SelectQuery_1.SimpleSelectQuery({
42
+ withClause: query.withClause,
43
+ selectClause: query.selectClause,
44
+ fromClause: query.fromClause,
45
+ whereClause: query.whereClause,
46
+ groupByClause: query.groupByClause,
47
+ havingClause: query.havingClause,
48
+ orderByClause: query.orderByClause,
49
+ windowClause: query.windowClause,
50
+ limitClause: limitClause,
51
+ offsetClause: offsetClause,
52
+ fetchClause: query.fetchClause,
53
+ forClause: query.forClause,
54
+ });
55
+ }
56
+ /**
57
+ * Removes LIMIT and OFFSET clauses from the given query.
58
+ * @param query The SelectQuery to modify
59
+ * @returns The modified SimpleSelectQuery with pagination removed
60
+ */
61
+ static removePagination(query) {
62
+ // Convert string query to SimpleSelectQuery using SelectQueryParser if needed
63
+ if (typeof query === 'string') {
64
+ query = SelectQueryParser_1.SelectQueryParser.parse(query);
65
+ }
66
+ // Check if query is SimpleSelectQuery
67
+ if (!(query instanceof SelectQuery_1.SimpleSelectQuery)) {
68
+ throw new Error('Complex queries are not supported for pagination removal');
69
+ }
70
+ // Create a new query without LIMIT and OFFSET clauses
71
+ return new SelectQuery_1.SimpleSelectQuery({
72
+ withClause: query.withClause,
73
+ selectClause: query.selectClause,
74
+ fromClause: query.fromClause,
75
+ whereClause: query.whereClause,
76
+ groupByClause: query.groupByClause,
77
+ havingClause: query.havingClause,
78
+ orderByClause: query.orderByClause,
79
+ windowClause: query.windowClause,
80
+ limitClause: null, // Remove LIMIT
81
+ offsetClause: null, // Remove OFFSET
82
+ fetchClause: query.fetchClause,
83
+ forClause: query.forClause,
84
+ });
85
+ }
86
+ /**
87
+ * Validates pagination options
88
+ * @param pagination Pagination options to validate
89
+ * @throws Error if validation fails
90
+ */
91
+ validatePaginationOptions(pagination) {
92
+ if (!pagination) {
93
+ throw new Error('Pagination options are required');
94
+ }
95
+ if (typeof pagination.page !== 'number' || pagination.page < 1) {
96
+ throw new Error('Page number must be a positive integer (1 or greater)');
97
+ }
98
+ if (typeof pagination.pageSize !== 'number' || pagination.pageSize < 1) {
99
+ throw new Error('Page size must be a positive integer (1 or greater)');
100
+ }
101
+ // Optional: Set reasonable upper limit for page size to prevent performance issues
102
+ if (pagination.pageSize > 1000) {
103
+ throw new Error('Page size cannot exceed 1000 items');
104
+ }
105
+ }
106
+ }
107
+ exports.SqlPaginationInjector = SqlPaginationInjector;
108
+ //# sourceMappingURL=SqlPaginationInjector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SqlPaginationInjector.js","sourceRoot":"","sources":["../../src/transformers/SqlPaginationInjector.ts"],"names":[],"mappings":"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"}