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 @@
1
+ {"version":3,"file":"DDLToFixtureConverter.js","sourceRoot":"","sources":["../../src/transformers/DDLToFixtureConverter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,414 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DeleteResultSelectConverter = void 0;
4
+ const Clause_1 = require("../models/Clause");
5
+ const SelectQuery_1 = require("../models/SelectQuery");
6
+ const ValueComponent_1 = require("../models/ValueComponent");
7
+ const TableSourceCollector_1 = require("./TableSourceCollector");
8
+ const FixtureCteBuilder_1 = require("./FixtureCteBuilder");
9
+ const SelectQueryWithClauseHelper_1 = require("../utils/SelectQueryWithClauseHelper");
10
+ const ValueComponentRewriter_1 = require("../utils/ValueComponentRewriter");
11
+ const TableNameUtils_1 = require("../utils/TableNameUtils");
12
+ const FullNameParser_1 = require("../parsers/FullNameParser");
13
+ class DeleteResultSelectConverter {
14
+ /**
15
+ * Converts a DELETE (with optional RETURNING) into a SELECT that mirrors its output rows.
16
+ */
17
+ static toSelectQuery(deleteQuery, options) {
18
+ var _a, _b, _c, _d;
19
+ const targetTableName = this.extractTargetTableName(deleteQuery.deleteClause);
20
+ const tableDefinition = this.resolveTableDefinition(targetTableName, options);
21
+ const targetAlias = deleteQuery.deleteClause.getSourceAliasName();
22
+ // Build the SELECT structure that mirrors the DELETE source/join semantics.
23
+ const returningContext = deleteQuery.returningClause
24
+ ? this.buildReturningContext(deleteQuery.deleteClause, deleteQuery.usingClause, targetAlias, tableDefinition, options)
25
+ : null;
26
+ const selectClause = deleteQuery.returningClause
27
+ ? this.buildReturningSelectClause(deleteQuery.returningClause, returningContext)
28
+ : this.buildCountSelectClause();
29
+ const fromClause = this.buildFromClause(deleteQuery.deleteClause, deleteQuery.usingClause);
30
+ const whereClause = (_a = deleteQuery.whereClause) !== null && _a !== void 0 ? _a : null;
31
+ const selectQuery = new SelectQuery_1.SimpleSelectQuery({
32
+ withClause: (_b = deleteQuery.withClause) !== null && _b !== void 0 ? _b : undefined,
33
+ selectClause,
34
+ fromClause,
35
+ whereClause
36
+ });
37
+ // Ensure fixture coverage before weaving CTEs back into the SELECT.
38
+ const fixtureTables = (_c = options === null || options === void 0 ? void 0 : options.fixtureTables) !== null && _c !== void 0 ? _c : [];
39
+ const fixtureMap = this.buildFixtureTableMap(fixtureTables);
40
+ const missingStrategy = (_d = options === null || options === void 0 ? void 0 : options.missingFixtureStrategy) !== null && _d !== void 0 ? _d : this.DEFAULT_MISSING_FIXTURE_STRATEGY;
41
+ const originalWithClause = SelectQueryWithClauseHelper_1.SelectQueryWithClauseHelper.detachWithClause(selectQuery);
42
+ const referencedTables = this.collectPhysicalTableReferences(selectQuery, originalWithClause);
43
+ const cteNames = this.collectCteNamesFromWithClause(originalWithClause);
44
+ const targetVariants = (0, TableNameUtils_1.tableNameVariants)(targetTableName);
45
+ for (const variant of targetVariants) {
46
+ if (!cteNames.has(variant)) {
47
+ referencedTables.add(variant);
48
+ }
49
+ }
50
+ this.ensureFixtureCoverage(referencedTables, fixtureMap, missingStrategy);
51
+ const filteredFixtures = this.filterFixtureTablesForReferences(fixtureTables, referencedTables);
52
+ const fixtureCtes = this.buildFixtureCtes(filteredFixtures);
53
+ const mergedWithClause = this.mergeWithClause(originalWithClause, fixtureCtes);
54
+ SelectQueryWithClauseHelper_1.SelectQueryWithClauseHelper.setWithClause(selectQuery, mergedWithClause);
55
+ return selectQuery;
56
+ }
57
+ static buildReturningSelectClause(returning, context) {
58
+ const selectItems = this.buildReturningSelectItems(returning, context);
59
+ return new Clause_1.SelectClause(selectItems);
60
+ }
61
+ static buildReturningSelectItems(returning, context) {
62
+ // Build SELECT entries from RETURNING items, expanding wildcards before expression rewriting.
63
+ const selectItems = [];
64
+ for (const item of returning.items) {
65
+ if (this.isWildcardReturningItem(item)) {
66
+ selectItems.push(...this.expandReturningWildcard(context));
67
+ continue;
68
+ }
69
+ selectItems.push(this.buildDeleteReturningSelectItem(item, context));
70
+ }
71
+ return selectItems;
72
+ }
73
+ static isWildcardReturningItem(item) {
74
+ return (item.value instanceof ValueComponent_1.ColumnReference &&
75
+ item.value.column.name === '*');
76
+ }
77
+ static expandReturningWildcard(context) {
78
+ if (!context.targetDefinition) {
79
+ throw new Error('Cannot expand RETURNING * without table definition.');
80
+ }
81
+ return context.targetDefinition.columns.map((column) => {
82
+ const expression = this.composeDeleteColumnReference({ namespaces: null, column: column.name }, context);
83
+ return new Clause_1.SelectItem(expression, column.name);
84
+ });
85
+ }
86
+ static buildDeleteReturningSelectItem(item, context) {
87
+ const expression = (0, ValueComponentRewriter_1.rewriteValueComponentWithColumnResolver)(item.value, (column) => this.buildDeleteColumnReference(column, context));
88
+ const alias = this.getReturningAlias(item);
89
+ return new Clause_1.SelectItem(expression, alias);
90
+ }
91
+ static buildDeleteColumnReference(column, context) {
92
+ const parsed = this.parseReturningColumnName(column.toString());
93
+ return this.composeDeleteColumnReference(parsed, context);
94
+ }
95
+ static composeDeleteColumnReference(parsedColumn, context) {
96
+ var _a;
97
+ const tableContext = this.findTableContextForNamespaces(parsedColumn.namespaces, context);
98
+ const definitionToValidate = (_a = tableContext === null || tableContext === void 0 ? void 0 : tableContext.tableDefinition) !== null && _a !== void 0 ? _a : (parsedColumn.namespaces ? undefined : context.targetDefinition);
99
+ if (definitionToValidate) {
100
+ this.ensureColumnExists(parsedColumn.column, definitionToValidate);
101
+ }
102
+ const columnNamespace = parsedColumn.namespaces && parsedColumn.namespaces.length > 0
103
+ ? [...parsedColumn.namespaces]
104
+ : context.targetAlias
105
+ ? [context.targetAlias]
106
+ : null;
107
+ return new ValueComponent_1.ColumnReference(columnNamespace, parsedColumn.column);
108
+ }
109
+ static getReturningAlias(item) {
110
+ var _a;
111
+ if ((_a = item.identifier) === null || _a === void 0 ? void 0 : _a.name) {
112
+ return item.identifier.name;
113
+ }
114
+ if (item.value instanceof ValueComponent_1.ColumnReference) {
115
+ return item.value.toString();
116
+ }
117
+ return null;
118
+ }
119
+ static buildCountSelectClause() {
120
+ // Count rows when no RETURNING clause is present.
121
+ const countFunction = new ValueComponent_1.FunctionCall(null, 'count', new ValueComponent_1.RawString('*'), null);
122
+ const selectItem = new Clause_1.SelectItem(countFunction, 'count');
123
+ return new Clause_1.SelectClause([selectItem]);
124
+ }
125
+ static buildFromClause(deleteClause, usingClause) {
126
+ var _a;
127
+ if (!((_a = usingClause === null || usingClause === void 0 ? void 0 : usingClause.sources) === null || _a === void 0 ? void 0 : _a.length)) {
128
+ return new Clause_1.FromClause(deleteClause.source, null);
129
+ }
130
+ // Cross join each USING source so their columns remain available for predicates.
131
+ const joins = usingClause.sources.map((source) => new Clause_1.JoinClause('cross join', source, null, false));
132
+ return new Clause_1.FromClause(deleteClause.source, joins);
133
+ }
134
+ static buildReturningContext(deleteClause, usingClause, targetAlias, targetDefinition, options) {
135
+ const { aliasMap, tableNameMap } = this.buildTableContexts(deleteClause, usingClause, options);
136
+ return {
137
+ aliasMap,
138
+ tableNameMap,
139
+ targetAlias,
140
+ targetDefinition
141
+ };
142
+ }
143
+ static buildTableContexts(deleteClause, usingClause, options) {
144
+ const aliasMap = new Map();
145
+ const tableNameMap = new Map();
146
+ // Capture alias and table name contexts to resolve metadata for both identifiers.
147
+ const collectSource = (source) => {
148
+ const alias = source.getAliasName();
149
+ if (!alias || !(source.datasource instanceof Clause_1.TableSource)) {
150
+ return;
151
+ }
152
+ const normalizedAlias = this.normalizeIdentifier(alias);
153
+ if (aliasMap.has(normalizedAlias)) {
154
+ return;
155
+ }
156
+ const tableName = source.datasource.getSourceName();
157
+ const tableDefinition = this.resolveTableDefinition(tableName, options);
158
+ const context = {
159
+ alias,
160
+ tableName,
161
+ tableDefinition
162
+ };
163
+ aliasMap.set(normalizedAlias, context);
164
+ for (const variant of (0, TableNameUtils_1.tableNameVariants)(tableName)) {
165
+ if (!tableNameMap.has(variant)) {
166
+ tableNameMap.set(variant, context);
167
+ }
168
+ }
169
+ };
170
+ collectSource(deleteClause.source);
171
+ if (usingClause) {
172
+ for (const source of usingClause.sources) {
173
+ collectSource(source);
174
+ }
175
+ }
176
+ return { aliasMap, tableNameMap };
177
+ }
178
+ static parseReturningColumnName(columnName) {
179
+ const trimmed = columnName.trim();
180
+ if (!trimmed) {
181
+ throw new Error('Returning column name cannot be empty.');
182
+ }
183
+ try {
184
+ const parsed = FullNameParser_1.FullNameParser.parse(trimmed);
185
+ return {
186
+ namespaces: parsed.namespaces,
187
+ column: parsed.name.name
188
+ };
189
+ }
190
+ catch {
191
+ const parts = trimmed.split('.').map((segment) => segment.trim()).filter((segment) => segment.length > 0);
192
+ if (parts.length === 0) {
193
+ return { namespaces: null, column: trimmed };
194
+ }
195
+ const column = parts.pop();
196
+ return {
197
+ namespaces: parts.length > 0 ? parts : null,
198
+ column
199
+ };
200
+ }
201
+ }
202
+ static findTableContextForNamespaces(namespaces, context) {
203
+ if (!(namespaces === null || namespaces === void 0 ? void 0 : namespaces.length)) {
204
+ return undefined;
205
+ }
206
+ for (let depth = namespaces.length; depth > 0; depth--) {
207
+ const candidateParts = namespaces.slice(namespaces.length - depth);
208
+ const identifier = candidateParts.join('.');
209
+ const normalized = this.normalizeIdentifier(identifier);
210
+ const aliasContext = context.aliasMap.get(normalized);
211
+ if (aliasContext) {
212
+ return aliasContext;
213
+ }
214
+ const tableContext = context.tableNameMap.get(normalized);
215
+ if (tableContext) {
216
+ return tableContext;
217
+ }
218
+ }
219
+ return undefined;
220
+ }
221
+ static ensureColumnExists(columnName, tableDefinition) {
222
+ if (!tableDefinition) {
223
+ return;
224
+ }
225
+ const normalized = this.normalizeIdentifier(columnName);
226
+ const exists = tableDefinition.columns.some((column) => this.normalizeIdentifier(column.name) === normalized);
227
+ if (!exists) {
228
+ throw new Error(`Column '${columnName}' cannot be resolved for RETURNING output.`);
229
+ }
230
+ }
231
+ static resolveTableDefinition(tableName, options) {
232
+ if (options === null || options === void 0 ? void 0 : options.tableDefinitionResolver) {
233
+ const resolved = options.tableDefinitionResolver(tableName);
234
+ if (resolved !== undefined) {
235
+ return resolved;
236
+ }
237
+ }
238
+ const normalizedVariants = new Set((0, TableNameUtils_1.tableNameVariants)(tableName));
239
+ if (options === null || options === void 0 ? void 0 : options.tableDefinitions) {
240
+ const map = this.buildTableDefinitionMap(options.tableDefinitions);
241
+ for (const variant of normalizedVariants) {
242
+ const definition = map.get(variant);
243
+ if (definition) {
244
+ return definition;
245
+ }
246
+ }
247
+ }
248
+ if (options === null || options === void 0 ? void 0 : options.fixtureTables) {
249
+ const fixture = options.fixtureTables.find((f) => (0, TableNameUtils_1.tableNameVariants)(f.tableName).some((variant) => normalizedVariants.has(variant)));
250
+ if (fixture) {
251
+ return this.convertFixtureToTableDefinition(fixture);
252
+ }
253
+ }
254
+ return undefined;
255
+ }
256
+ static convertFixtureToTableDefinition(fixture) {
257
+ return {
258
+ name: fixture.tableName,
259
+ columns: fixture.columns.map(col => {
260
+ var _a;
261
+ return ({
262
+ name: col.name,
263
+ typeName: col.typeName,
264
+ required: false,
265
+ defaultValue: (_a = col.defaultValue) !== null && _a !== void 0 ? _a : null
266
+ });
267
+ })
268
+ };
269
+ }
270
+ static buildTableDefinitionMap(registry) {
271
+ const map = new Map();
272
+ for (const definition of Object.values(registry)) {
273
+ for (const variant of (0, TableNameUtils_1.tableNameVariants)(definition.name)) {
274
+ map.set(variant, definition);
275
+ }
276
+ }
277
+ return map;
278
+ }
279
+ static extractTargetTableName(deleteClause) {
280
+ const datasource = deleteClause.source.datasource;
281
+ if (datasource instanceof Clause_1.TableSource) {
282
+ return datasource.getSourceName();
283
+ }
284
+ throw new Error('Delete target must be a table source for conversion.');
285
+ }
286
+ static buildFixtureCtes(fixtures) {
287
+ if (!fixtures || fixtures.length === 0) {
288
+ return [];
289
+ }
290
+ return FixtureCteBuilder_1.FixtureCteBuilder.buildFixtures(fixtures);
291
+ }
292
+ static collectPhysicalTableReferences(selectQuery, withClause) {
293
+ const referencedTables = this.collectReferencedTables(selectQuery);
294
+ const ignoredTables = this.collectCteNamesFromWithClause(withClause);
295
+ const tablesToShadow = new Set();
296
+ // Keep only concrete tables that are not defined via WITH clause aliases.
297
+ for (const table of referencedTables) {
298
+ if (ignoredTables.has(table)) {
299
+ continue;
300
+ }
301
+ tablesToShadow.add(table);
302
+ }
303
+ const cteReferencedTables = this.collectReferencedTablesFromWithClause(withClause);
304
+ for (const table of cteReferencedTables) {
305
+ if (ignoredTables.has(table)) {
306
+ continue;
307
+ }
308
+ tablesToShadow.add(table);
309
+ }
310
+ return tablesToShadow;
311
+ }
312
+ static buildFixtureTableMap(fixtures) {
313
+ const map = new Map();
314
+ for (const fixture of fixtures) {
315
+ for (const variant of (0, TableNameUtils_1.tableNameVariants)(fixture.tableName)) {
316
+ map.set(variant, fixture);
317
+ }
318
+ }
319
+ return map;
320
+ }
321
+ static filterFixtureTablesForReferences(fixtures, referencedTables) {
322
+ if (!fixtures.length || referencedTables.size === 0) {
323
+ return [];
324
+ }
325
+ const filtered = [];
326
+ for (const fixture of fixtures) {
327
+ const fixtureVariants = (0, TableNameUtils_1.tableNameVariants)(fixture.tableName);
328
+ if (fixtureVariants.some((variant) => referencedTables.has(variant))) {
329
+ filtered.push(fixture);
330
+ }
331
+ }
332
+ return filtered;
333
+ }
334
+ static collectReferencedTablesFromWithClause(withClause) {
335
+ const tables = new Set();
336
+ if (!(withClause === null || withClause === void 0 ? void 0 : withClause.tables)) {
337
+ return tables;
338
+ }
339
+ for (const cte of withClause.tables) {
340
+ for (const table of this.collectReferencedTables(cte.query)) {
341
+ tables.add(table);
342
+ }
343
+ }
344
+ return tables;
345
+ }
346
+ static ensureFixtureCoverage(referencedTables, fixtureMap, strategy) {
347
+ if (referencedTables.size === 0) {
348
+ return;
349
+ }
350
+ const missingTables = this.getMissingFixtureTables(referencedTables, fixtureMap);
351
+ if (missingTables.length === 0) {
352
+ return;
353
+ }
354
+ if (strategy === 'error') {
355
+ throw new Error(`Delete SELECT refers to tables without fixture coverage: ${missingTables.join(', ')}.`);
356
+ }
357
+ }
358
+ static collectReferencedTables(query) {
359
+ const collector = new TableSourceCollector_1.TableSourceCollector(false);
360
+ const sources = collector.collect(query);
361
+ const normalized = new Set();
362
+ for (const source of sources) {
363
+ for (const variant of (0, TableNameUtils_1.tableNameVariants)(source.getSourceName())) {
364
+ normalized.add(variant);
365
+ }
366
+ }
367
+ return normalized;
368
+ }
369
+ static collectCteNamesFromWithClause(withClause) {
370
+ const names = new Set();
371
+ if (!(withClause === null || withClause === void 0 ? void 0 : withClause.tables)) {
372
+ return names;
373
+ }
374
+ for (const table of withClause.tables) {
375
+ for (const variant of (0, TableNameUtils_1.tableNameVariants)(table.getSourceAliasName())) {
376
+ names.add(variant);
377
+ }
378
+ }
379
+ return names;
380
+ }
381
+ static getMissingFixtureTables(referencedTables, fixtureMap) {
382
+ const missing = [];
383
+ for (const table of referencedTables) {
384
+ const covered = (0, TableNameUtils_1.tableNameVariants)(table).some((variant) => fixtureMap.has(variant));
385
+ if (!covered) {
386
+ missing.push(table);
387
+ }
388
+ }
389
+ return missing;
390
+ }
391
+ static mergeWithClause(original, fixtureCtes) {
392
+ var _a;
393
+ if (!fixtureCtes.length && !original) {
394
+ return null;
395
+ }
396
+ const combinedTables = [...fixtureCtes];
397
+ if (original === null || original === void 0 ? void 0 : original.tables) {
398
+ combinedTables.push(...original.tables);
399
+ }
400
+ if (!combinedTables.length) {
401
+ return null;
402
+ }
403
+ const merged = new Clause_1.WithClause((_a = original === null || original === void 0 ? void 0 : original.recursive) !== null && _a !== void 0 ? _a : false, combinedTables);
404
+ merged.globalComments = (original === null || original === void 0 ? void 0 : original.globalComments) ? [...original.globalComments] : null;
405
+ merged.trailingComments = (original === null || original === void 0 ? void 0 : original.trailingComments) ? [...original.trailingComments] : null;
406
+ return merged;
407
+ }
408
+ static normalizeIdentifier(value) {
409
+ return value.trim().toLowerCase();
410
+ }
411
+ }
412
+ exports.DeleteResultSelectConverter = DeleteResultSelectConverter;
413
+ DeleteResultSelectConverter.DEFAULT_MISSING_FIXTURE_STRATEGY = 'error';
414
+ //# sourceMappingURL=DeleteResultSelectConverter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DeleteResultSelectConverter.js","sourceRoot":"","sources":["../../src/transformers/DeleteResultSelectConverter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,164 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DynamicQueryBuilder = void 0;
4
+ const SelectQueryParser_1 = require("../parsers/SelectQueryParser");
5
+ const SqlParamInjector_1 = require("./SqlParamInjector");
6
+ const SqlSortInjector_1 = require("./SqlSortInjector");
7
+ const SqlPaginationInjector_1 = require("./SqlPaginationInjector");
8
+ const PostgresJsonQueryBuilder_1 = require("./PostgresJsonQueryBuilder");
9
+ const QueryBuilder_1 = require("./QueryBuilder");
10
+ const SqlParameterBinder_1 = require("./SqlParameterBinder");
11
+ const ParameterDetector_1 = require("../utils/ParameterDetector");
12
+ /**
13
+ * DynamicQueryBuilder combines SQL parsing with dynamic condition injection (filters, sorts, paging, JSON serialization).
14
+ *
15
+ * Key behaviours verified in packages/core/tests/transformers/DynamicQueryBuilder.test.ts:
16
+ * - Preserves the input SQL when no options are supplied.
17
+ * - Applies filter, sort, and pagination in a deterministic order.
18
+ * - Supports JSON serialization for hierarchical projections.
19
+ */
20
+ class DynamicQueryBuilder {
21
+ /**
22
+ * Creates a new DynamicQueryBuilder instance
23
+ * @param tableColumnResolver Optional function to resolve table columns for wildcard queries
24
+ */
25
+ constructor(tableColumnResolver) {
26
+ this.tableColumnResolver = tableColumnResolver;
27
+ }
28
+ /**
29
+ * Builds a SelectQuery from SQL content with dynamic conditions.
30
+ * This is a pure function that does not perform any I/O operations.
31
+ * @param sqlContent Raw SQL string to parse and modify
32
+ * @param options Dynamic conditions to apply (filter, sort, paging, serialize)
33
+ * @returns Modified SelectQuery with all dynamic conditions applied
34
+ * @example
35
+ * ```typescript
36
+ * const builder = new DynamicQueryBuilder();
37
+ * const query = builder.buildQuery(
38
+ * 'SELECT id, name FROM users WHERE active = true',
39
+ * {
40
+ * filter: { status: 'premium' },
41
+ * sort: { created_at: { desc: true } },
42
+ * paging: { page: 2, pageSize: 10 },
43
+ * serialize: { rootName: 'user', rootEntity: { id: 'user', name: 'User', columns: { id: 'id', name: 'name' } }, nestedEntities: [] }
44
+ * }
45
+ * );
46
+ * ```
47
+ */
48
+ buildQuery(sqlContent, options = {}) {
49
+ // Parse the base SQL
50
+ let parsedQuery;
51
+ try {
52
+ parsedQuery = SelectQueryParser_1.SelectQueryParser.parse(sqlContent);
53
+ }
54
+ catch (error) {
55
+ throw new Error(`Failed to parse SQL: ${error instanceof Error ? error.message : 'Unknown error'}`);
56
+ }
57
+ // Apply dynamic modifications in the correct order
58
+ let modifiedQuery = parsedQuery;
59
+ // 1. Bind hardcoded parameters first (before any other transformations)
60
+ if (options.filter && Object.keys(options.filter).length > 0) {
61
+ const { hardcodedParams, dynamicFilters } = ParameterDetector_1.ParameterDetector.separateFilters(modifiedQuery, options.filter);
62
+ // Bind hardcoded parameters if any exist
63
+ if (Object.keys(hardcodedParams).length > 0) {
64
+ const parameterBinder = new SqlParameterBinder_1.SqlParameterBinder({ requireAllParameters: false });
65
+ modifiedQuery = parameterBinder.bind(modifiedQuery, hardcodedParams);
66
+ }
67
+ // Apply dynamic filtering only if there are non-hardcoded filters
68
+ if (Object.keys(dynamicFilters).length > 0) {
69
+ const paramInjector = new SqlParamInjector_1.SqlParamInjector(this.tableColumnResolver);
70
+ // Ensure we have a SimpleSelectQuery for the injector
71
+ const simpleQuery = QueryBuilder_1.QueryBuilder.buildSimpleQuery(modifiedQuery);
72
+ modifiedQuery = paramInjector.inject(simpleQuery, dynamicFilters);
73
+ }
74
+ }
75
+ // 2. Apply sorting second (after filtering to sort smaller dataset)
76
+ if (options.sort && Object.keys(options.sort).length > 0) {
77
+ const sortInjector = new SqlSortInjector_1.SqlSortInjector(this.tableColumnResolver);
78
+ // Ensure we have a SimpleSelectQuery for the injector
79
+ const simpleQuery = QueryBuilder_1.QueryBuilder.buildSimpleQuery(modifiedQuery);
80
+ modifiedQuery = sortInjector.inject(simpleQuery, options.sort);
81
+ } // 3. Apply pagination third (after filtering and sorting)
82
+ if (options.paging) {
83
+ const { page = 1, pageSize } = options.paging;
84
+ if (pageSize !== undefined) {
85
+ const paginationInjector = new SqlPaginationInjector_1.SqlPaginationInjector();
86
+ const paginationOptions = { page, pageSize };
87
+ // Ensure we have a SimpleSelectQuery for the injector
88
+ const simpleQuery = QueryBuilder_1.QueryBuilder.buildSimpleQuery(modifiedQuery);
89
+ modifiedQuery = paginationInjector.inject(simpleQuery, paginationOptions);
90
+ }
91
+ }
92
+ // 4. Apply serialization last (transform the final query structure to JSON)
93
+ // Note: boolean values are handled at RawSqlClient level for auto-loading
94
+ if (options.serialize && typeof options.serialize === 'object') {
95
+ const jsonBuilder = new PostgresJsonQueryBuilder_1.PostgresJsonQueryBuilder();
96
+ // Ensure we have a SimpleSelectQuery for the JSON builder
97
+ const simpleQuery = QueryBuilder_1.QueryBuilder.buildSimpleQuery(modifiedQuery);
98
+ modifiedQuery = jsonBuilder.buildJsonQuery(simpleQuery, options.serialize);
99
+ }
100
+ return modifiedQuery;
101
+ }
102
+ /**
103
+ * Builds a SelectQuery with only filtering applied.
104
+ * Convenience method for when you only need dynamic WHERE conditions.
105
+ *
106
+ * @param sqlContent Raw SQL string to parse and modify
107
+ * @param filter Filter conditions to apply
108
+ * @returns Modified SelectQuery with filter conditions applied
109
+ */
110
+ buildFilteredQuery(sqlContent, filter) {
111
+ return this.buildQuery(sqlContent, { filter });
112
+ }
113
+ /**
114
+ * Builds a SelectQuery with only sorting applied.
115
+ * Convenience method for when you only need dynamic ORDER BY clauses.
116
+ *
117
+ * @param sqlContent Raw SQL string to parse and modify
118
+ * @param sort Sort conditions to apply
119
+ * @returns Modified SelectQuery with sort conditions applied
120
+ */
121
+ buildSortedQuery(sqlContent, sort) {
122
+ return this.buildQuery(sqlContent, { sort });
123
+ } /**
124
+ * Builds a SelectQuery with only pagination applied.
125
+ * Convenience method for when you only need LIMIT/OFFSET clauses.
126
+ *
127
+ * @param sqlContent Raw SQL string to parse and modify
128
+ * @param paging Pagination options to apply
129
+ * @returns Modified SelectQuery with pagination applied
130
+ */
131
+ buildPaginatedQuery(sqlContent, paging) {
132
+ return this.buildQuery(sqlContent, { paging });
133
+ }
134
+ /**
135
+ * Builds a SelectQuery with only JSON serialization applied.
136
+ * Convenience method for when you only need hierarchical JSON transformation.
137
+ *
138
+ * @param sqlContent Raw SQL string to parse and modify
139
+ * @param serialize JSON mapping configuration to apply
140
+ * @returns Modified SelectQuery with JSON serialization applied
141
+ */
142
+ buildSerializedQuery(sqlContent, serialize) {
143
+ return this.buildQuery(sqlContent, { serialize });
144
+ }
145
+ /**
146
+ * Validates SQL content by attempting to parse it.
147
+ * Useful for testing SQL validity without applying any modifications.
148
+ *
149
+ * @param sqlContent Raw SQL string to validate
150
+ * @returns true if SQL is valid, throws error if invalid
151
+ * @throws Error if SQL cannot be parsed
152
+ */
153
+ validateSql(sqlContent) {
154
+ try {
155
+ SelectQueryParser_1.SelectQueryParser.parse(sqlContent);
156
+ return true;
157
+ }
158
+ catch (error) {
159
+ throw new Error(`Invalid SQL: ${error instanceof Error ? error.message : 'Unknown error'}`);
160
+ }
161
+ }
162
+ }
163
+ exports.DynamicQueryBuilder = DynamicQueryBuilder;
164
+ //# sourceMappingURL=DynamicQueryBuilder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DynamicQueryBuilder.js","sourceRoot":"","sources":["../../src/transformers/DynamicQueryBuilder.ts"],"names":[],"mappings":"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"}