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,495 @@
1
+ import { CommonTable, FromClause, SelectClause, SelectItem, SourceAliasExpression, SourceExpression, TableSource, WithClause } from '../models/Clause';
2
+ import { BinarySelectQuery, SimpleSelectQuery, ValuesQuery } from '../models/SelectQuery';
3
+ import { InsertQuerySelectValuesConverter } from './InsertQuerySelectValuesConverter';
4
+ import { CastExpression, ColumnReference, FunctionCall, IdentifierString, LiteralValue, RawString, TypeValue } from '../models/ValueComponent';
5
+ import { ValueParser } from '../parsers/ValueParser';
6
+ import { TableSourceCollector } from './TableSourceCollector';
7
+ import { FixtureCteBuilder } from './FixtureCteBuilder';
8
+ import { SelectQueryWithClauseHelper } from "../utils/SelectQueryWithClauseHelper";
9
+ import { rewriteValueComponentWithColumnResolver } from '../utils/ValueComponentRewriter';
10
+ export class InsertResultSelectConverter {
11
+ /**
12
+ * Converts an INSERT ... SELECT/VALUES query into a SELECT that mirrors its RETURNING output
13
+ * (or a count(*) when RETURNING is absent).
14
+ */
15
+ static toSelectQuery(insertQuery, options) {
16
+ var _a, _b;
17
+ const preparedInsert = this.prepareInsertQuery(insertQuery);
18
+ const sourceQuery = preparedInsert.selectQuery;
19
+ if (!sourceQuery) {
20
+ throw new Error('Cannot convert INSERT query without a data source.');
21
+ }
22
+ const sourceWithClause = SelectQueryWithClauseHelper.detachWithClause(sourceQuery);
23
+ const targetTableName = this.extractTargetTableName(preparedInsert.insertClause);
24
+ const tableDefinition = this.resolveTableDefinition(targetTableName, options);
25
+ const fixtureTables = (_a = options === null || options === void 0 ? void 0 : options.fixtureTables) !== null && _a !== void 0 ? _a : [];
26
+ const fixtureMap = this.buildFixtureTableMap(fixtureTables);
27
+ const missingStrategy = (_b = options === null || options === void 0 ? void 0 : options.missingFixtureStrategy) !== null && _b !== void 0 ? _b : this.DEFAULT_MISSING_FIXTURE_STRATEGY;
28
+ const referencedTables = this.collectPhysicalTableReferences(sourceQuery, sourceWithClause);
29
+ this.ensureFixtureCoverage(referencedTables, fixtureMap, missingStrategy);
30
+ const filteredFixtures = this.filterFixtureTablesForReferences(fixtureTables, referencedTables);
31
+ const insertColumnNames = this.resolveInsertColumns(preparedInsert.insertClause, sourceQuery, tableDefinition);
32
+ const selectColumnCount = this.getSelectColumnCount(sourceQuery);
33
+ if (insertColumnNames.length !== selectColumnCount) {
34
+ throw new Error('Insert column count does not match SELECT output columns.');
35
+ }
36
+ const columnMetadataMap = this.buildColumnMetadata(insertColumnNames, tableDefinition);
37
+ this.assertRequiredColumns(columnMetadataMap, tableDefinition);
38
+ this.applyColumnCasts(sourceQuery, insertColumnNames, columnMetadataMap);
39
+ const fixtureCtes = this.buildFixtureCtes(filteredFixtures);
40
+ const cteName = this.generateUniqueCteName(sourceWithClause, fixtureCtes);
41
+ const cteAlias = new SourceAliasExpression(cteName, insertColumnNames);
42
+ const insertedRowsCte = new CommonTable(sourceQuery, cteAlias, null);
43
+ const withClause = this.buildWithClause(sourceWithClause, fixtureCtes, insertedRowsCte);
44
+ if (!preparedInsert.returningClause) {
45
+ return this.buildCountSelect(withClause, cteName);
46
+ }
47
+ const selectItems = this.buildReturningSelectItems(preparedInsert.returningClause, tableDefinition, insertColumnNames, columnMetadataMap, cteName);
48
+ const fromExpr = new SourceExpression(new TableSource(null, cteName), null);
49
+ const fromClause = new FromClause(fromExpr, null);
50
+ return new SimpleSelectQuery({
51
+ withClause,
52
+ selectClause: new SelectClause(selectItems),
53
+ fromClause
54
+ });
55
+ }
56
+ static prepareInsertQuery(insertQuery) {
57
+ // Values-based inserts need to be rewritten into INSERT ... SELECT before further processing.
58
+ if (insertQuery.selectQuery instanceof ValuesQuery) {
59
+ return InsertQuerySelectValuesConverter.toSelectUnion(insertQuery);
60
+ }
61
+ return insertQuery;
62
+ }
63
+ static extractTargetTableName(insertClause) {
64
+ const datasource = insertClause.source.datasource;
65
+ if (datasource instanceof TableSource) {
66
+ return datasource.getSourceName();
67
+ }
68
+ throw new Error('Insert target must be a table source for conversion.');
69
+ }
70
+ static resolveTableDefinition(tableName, options) {
71
+ // Prefer resolver results but fall back to the registry when the resolver cannot handle the table name.
72
+ if (options === null || options === void 0 ? void 0 : options.tableDefinitionResolver) {
73
+ const resolved = options.tableDefinitionResolver(tableName);
74
+ if (resolved !== undefined) {
75
+ return resolved;
76
+ }
77
+ }
78
+ const normalized = this.normalizeIdentifier(tableName);
79
+ if (options === null || options === void 0 ? void 0 : options.tableDefinitions) {
80
+ const normalizedMap = this.buildTableDefinitionMap(options.tableDefinitions);
81
+ const definition = normalizedMap.get(normalized);
82
+ if (definition) {
83
+ return definition;
84
+ }
85
+ }
86
+ if (options === null || options === void 0 ? void 0 : options.fixtureTables) {
87
+ const fixture = options.fixtureTables.find(f => this.normalizeIdentifier(f.tableName) === normalized);
88
+ if (fixture) {
89
+ return this.convertFixtureToTableDefinition(fixture);
90
+ }
91
+ }
92
+ return undefined;
93
+ }
94
+ static convertFixtureToTableDefinition(fixture) {
95
+ return {
96
+ name: fixture.tableName,
97
+ columns: fixture.columns.map(col => {
98
+ var _a;
99
+ return ({
100
+ name: col.name,
101
+ typeName: col.typeName,
102
+ required: false,
103
+ defaultValue: (_a = col.defaultValue) !== null && _a !== void 0 ? _a : null
104
+ });
105
+ })
106
+ };
107
+ }
108
+ static buildTableDefinitionMap(registry) {
109
+ const map = new Map();
110
+ if (!registry) {
111
+ return map;
112
+ }
113
+ for (const definition of Object.values(registry)) {
114
+ map.set(this.normalizeIdentifier(definition.name), definition);
115
+ }
116
+ return map;
117
+ }
118
+ static resolveInsertColumns(insertClause, selectQuery, tableDefinition) {
119
+ if (insertClause.columns && insertClause.columns.length > 0) {
120
+ return insertClause.columns.map((col) => col.name);
121
+ }
122
+ // When the column list is omitted we rely on the table definition to infer both names and order.
123
+ if (!tableDefinition) {
124
+ throw new Error('Cannot infer INSERT columns without a table definition.');
125
+ }
126
+ const columnNames = tableDefinition.columns.map((col) => col.name);
127
+ const expectedCount = this.getSelectColumnCount(selectQuery);
128
+ if (columnNames.length !== expectedCount) {
129
+ throw new Error('Table definition column count does not match the SELECT output when column list is omitted.');
130
+ }
131
+ return columnNames;
132
+ }
133
+ static getSelectColumnCount(selectQuery) {
134
+ const firstSimple = this.getFirstSimpleSelectQuery(selectQuery);
135
+ return firstSimple.selectClause.items.length;
136
+ }
137
+ static getFirstSimpleSelectQuery(selectQuery) {
138
+ if (selectQuery instanceof SimpleSelectQuery) {
139
+ return selectQuery;
140
+ }
141
+ if (selectQuery instanceof BinarySelectQuery) {
142
+ return this.getFirstSimpleSelectQuery(selectQuery.left);
143
+ }
144
+ throw new Error('Unsupported select query structure in insert conversion.');
145
+ }
146
+ static buildColumnMetadata(insertColumns, tableDefinition) {
147
+ // Capture both the provided columns and the broader table definition so we can resolve defaults later.
148
+ const metadataMap = new Map();
149
+ const columnDefinitionMap = tableDefinition
150
+ ? new Map(tableDefinition.columns.map((col) => [this.normalizeIdentifier(col.name), col]))
151
+ : null;
152
+ for (const columnName of insertColumns) {
153
+ const normalized = this.normalizeIdentifier(columnName);
154
+ const definition = columnDefinitionMap === null || columnDefinitionMap === void 0 ? void 0 : columnDefinitionMap.get(normalized);
155
+ metadataMap.set(normalized, {
156
+ name: columnName,
157
+ normalized,
158
+ provided: true,
159
+ typeName: definition === null || definition === void 0 ? void 0 : definition.typeName,
160
+ required: definition === null || definition === void 0 ? void 0 : definition.required,
161
+ defaultValue: this.resolveDefaultValueExpression(definition)
162
+ });
163
+ }
164
+ if (columnDefinitionMap) {
165
+ for (const [normalized, definition] of columnDefinitionMap.entries()) {
166
+ if (!metadataMap.has(normalized)) {
167
+ metadataMap.set(normalized, {
168
+ name: definition.name,
169
+ normalized,
170
+ provided: false,
171
+ typeName: definition.typeName,
172
+ required: definition.required,
173
+ defaultValue: this.resolveDefaultValueExpression(definition)
174
+ });
175
+ }
176
+ }
177
+ }
178
+ return metadataMap;
179
+ }
180
+ static assertRequiredColumns(metadataMap, tableDefinition) {
181
+ var _a;
182
+ if (!tableDefinition) {
183
+ return;
184
+ }
185
+ // Ensure every NOT NULL column (without a default) was part of the insert so the transformation stays accurate.
186
+ const requiredColumns = new Set(tableDefinition.columns
187
+ .filter((col) => col.required)
188
+ .map((col) => this.normalizeIdentifier(col.name)));
189
+ for (const normalized of requiredColumns) {
190
+ const metadata = metadataMap.get(normalized);
191
+ if (metadata && metadata.provided) {
192
+ continue;
193
+ }
194
+ if (metadata === null || metadata === void 0 ? void 0 : metadata.defaultValue) {
195
+ continue;
196
+ }
197
+ const columnName = (_a = tableDefinition.columns.find((col) => this.normalizeIdentifier(col.name) === normalized)) === null || _a === void 0 ? void 0 : _a.name;
198
+ if (columnName) {
199
+ throw new Error(`Required column '${columnName}' is missing from INSERT, so conversion cannot proceed.`);
200
+ }
201
+ }
202
+ }
203
+ static buildReturningSelectItems(returning, tableDefinition, insertColumns, columnMetadataMap, cteName) {
204
+ // Build SelectItems from the parsed RETURNING entries, expanding wildcard specs as needed.
205
+ const selectItems = [];
206
+ for (const item of returning.items) {
207
+ if (this.isWildcardReturningItem(item)) {
208
+ selectItems.push(...this.expandReturningWildcard(tableDefinition, insertColumns, columnMetadataMap, cteName));
209
+ continue;
210
+ }
211
+ selectItems.push(this.buildReturningSelectItem(item, columnMetadataMap, cteName));
212
+ }
213
+ return selectItems;
214
+ }
215
+ static isWildcardReturningItem(item) {
216
+ return (item.value instanceof ColumnReference &&
217
+ item.value.column.name === '*');
218
+ }
219
+ static expandReturningWildcard(tableDefinition, insertColumns, columnMetadataMap, cteName) {
220
+ // Expand RETURNING * into a concrete column list derived from metadata for accurate defaults.
221
+ const columnNames = tableDefinition
222
+ ? tableDefinition.columns.map((column) => column.name)
223
+ : insertColumns.length > 0
224
+ ? insertColumns
225
+ : null;
226
+ if (!columnNames) {
227
+ throw new Error('Cannot expand RETURNING * without table definition or column list.');
228
+ }
229
+ return columnNames.map((columnName) => {
230
+ const metadata = this.getColumnMetadata(columnMetadataMap, columnName);
231
+ const expression = this.buildColumnExpression(metadata, cteName);
232
+ return new SelectItem(expression, columnName);
233
+ });
234
+ }
235
+ static buildReturningSelectItem(item, columnMetadataMap, cteName) {
236
+ // Rewrite the parsed expression tree so its column references point to the inserted rows.
237
+ const expression = rewriteValueComponentWithColumnResolver(item.value, (column) => this.buildInsertColumnExpression(column, columnMetadataMap, cteName));
238
+ const alias = this.getReturningAlias(item);
239
+ return new SelectItem(expression, alias);
240
+ }
241
+ static buildInsertColumnExpression(column, columnMetadataMap, cteName) {
242
+ // Use metadata to decide whether the column expression comes from inserted data or a default.
243
+ const columnName = this.extractColumnName(column);
244
+ const metadata = this.getColumnMetadata(columnMetadataMap, columnName);
245
+ return this.buildColumnExpression(metadata, cteName);
246
+ }
247
+ static extractColumnName(column) {
248
+ const nameComponent = column.qualifiedName.name;
249
+ if (nameComponent instanceof IdentifierString) {
250
+ return nameComponent.name;
251
+ }
252
+ return nameComponent.value;
253
+ }
254
+ static getReturningAlias(item) {
255
+ var _a;
256
+ if ((_a = item.identifier) === null || _a === void 0 ? void 0 : _a.name) {
257
+ return item.identifier.name;
258
+ }
259
+ if (item.value instanceof ColumnReference) {
260
+ return item.value.toString();
261
+ }
262
+ return null;
263
+ }
264
+ static getColumnMetadata(metadataMap, columnName) {
265
+ const normalized = this.normalizeIdentifier(columnName);
266
+ const metadata = metadataMap.get(normalized);
267
+ if (!metadata) {
268
+ throw new Error(`Column '${columnName}' cannot be resolved for RETURNING output.`);
269
+ }
270
+ return metadata;
271
+ }
272
+ static buildColumnExpression(metadata, cteName) {
273
+ // Choose either the inserted column reference or the configured default/null expression.
274
+ let expression;
275
+ if (metadata.provided) {
276
+ expression = new ColumnReference(cteName, metadata.name);
277
+ }
278
+ else if (metadata.defaultValue) {
279
+ expression = metadata.defaultValue;
280
+ }
281
+ else {
282
+ expression = new LiteralValue(null);
283
+ }
284
+ return expression;
285
+ }
286
+ static buildTypeValue(typeName) {
287
+ var _a, _b;
288
+ // Split schema-qualified type names so namespaces become TypeValue namespaces.
289
+ const parts = typeName.split('.');
290
+ const namePart = (_b = (_a = parts.pop()) === null || _a === void 0 ? void 0 : _a.trim()) !== null && _b !== void 0 ? _b : typeName.trim();
291
+ const namespaces = parts.length > 0 ? parts.map((part) => part.trim()) : null;
292
+ return new TypeValue(namespaces, new RawString(namePart));
293
+ }
294
+ static collectPhysicalTableReferences(selectQuery, withClause) {
295
+ const referencedTables = this.collectReferencedTables(selectQuery);
296
+ const ignoredTables = this.collectCteNamesFromWithClause(withClause);
297
+ const tablesToShadow = new Set();
298
+ // Retain only concrete tables that are not defined via CTE aliases.
299
+ for (const table of referencedTables) {
300
+ if (ignoredTables.has(table)) {
301
+ continue;
302
+ }
303
+ tablesToShadow.add(table);
304
+ }
305
+ const cteReferencedTables = this.collectReferencedTablesFromWithClause(withClause);
306
+ for (const table of cteReferencedTables) {
307
+ if (ignoredTables.has(table)) {
308
+ continue;
309
+ }
310
+ tablesToShadow.add(table);
311
+ }
312
+ return tablesToShadow;
313
+ }
314
+ static buildFixtureCtes(fixtures) {
315
+ if (!fixtures || fixtures.length === 0) {
316
+ return [];
317
+ }
318
+ return FixtureCteBuilder.buildFixtures(fixtures);
319
+ }
320
+ static filterFixtureTablesForReferences(fixtures, referencedTables) {
321
+ if (!fixtures.length || referencedTables.size === 0) {
322
+ return [];
323
+ }
324
+ const filtered = [];
325
+ // Keep fixtures only for the tables that the INSERT actually touches.
326
+ for (const fixture of fixtures) {
327
+ if (referencedTables.has(this.normalizeIdentifier(fixture.tableName))) {
328
+ filtered.push(fixture);
329
+ }
330
+ }
331
+ return filtered;
332
+ }
333
+ static collectReferencedTablesFromWithClause(withClause) {
334
+ const tables = new Set();
335
+ if (!(withClause === null || withClause === void 0 ? void 0 : withClause.tables)) {
336
+ return tables;
337
+ }
338
+ for (const cte of withClause.tables) {
339
+ for (const table of this.collectReferencedTables(cte.query)) {
340
+ tables.add(table);
341
+ }
342
+ }
343
+ return tables;
344
+ }
345
+ static buildWithClause(original, fixtureCtes, insertedCte) {
346
+ var _a, _b;
347
+ // Preserve any existing CTEs while prefixing fixture-based definitions before the simulated inserted rows CTE.
348
+ const originalTables = (_a = original === null || original === void 0 ? void 0 : original.tables) !== null && _a !== void 0 ? _a : [];
349
+ const combinedTables = [...fixtureCtes, ...originalTables, insertedCte];
350
+ const withClause = new WithClause((_b = original === null || original === void 0 ? void 0 : original.recursive) !== null && _b !== void 0 ? _b : false, combinedTables);
351
+ withClause.globalComments = (original === null || original === void 0 ? void 0 : original.globalComments) ? [...original.globalComments] : null;
352
+ withClause.trailingComments = (original === null || original === void 0 ? void 0 : original.trailingComments) ? [...original.trailingComments] : null;
353
+ return withClause;
354
+ }
355
+ static buildCountSelect(withClause, cteName) {
356
+ // Build a simple tally query that counts the rows produced by the inserted rows CTE.
357
+ const countItem = new SelectItem(new FunctionCall(null, 'count', new RawString('*'), null), 'count');
358
+ const selectClause = new SelectClause([countItem]);
359
+ const fromExpr = new SourceExpression(new TableSource(null, cteName), null);
360
+ const fromClause = new FromClause(fromExpr, null);
361
+ return new SimpleSelectQuery({ withClause, selectClause, fromClause });
362
+ }
363
+ static buildFixtureTableMap(fixtures) {
364
+ const map = new Map();
365
+ if (!fixtures) {
366
+ return map;
367
+ }
368
+ // Normalize table names so lookups are case-insensitive.
369
+ for (const fixture of fixtures) {
370
+ map.set(this.normalizeIdentifier(fixture.tableName), fixture);
371
+ }
372
+ return map;
373
+ }
374
+ static ensureFixtureCoverage(referencedTables, fixtureMap, strategy) {
375
+ if (referencedTables.size === 0) {
376
+ return;
377
+ }
378
+ // Identify any referenced table that lacks a fixture override.
379
+ const missingTables = this.getMissingFixtureTables(referencedTables, fixtureMap);
380
+ if (missingTables.length === 0) {
381
+ return;
382
+ }
383
+ if (strategy === 'error') {
384
+ throw new Error(`Insert SELECT refers to tables without fixture coverage: ${missingTables.join(', ')}.`);
385
+ }
386
+ // 'warn' and 'passthrough' intentionally allow the conversion to continue.
387
+ }
388
+ static collectReferencedTables(query) {
389
+ // Scan every part of the query (including subqueries) so fixture coverage validates all referenced tables.
390
+ const collector = new TableSourceCollector(false);
391
+ const sources = collector.collect(query);
392
+ const referenced = new Set();
393
+ for (const source of sources) {
394
+ referenced.add(this.normalizeIdentifier(source.getSourceName()));
395
+ }
396
+ return referenced;
397
+ }
398
+ static collectCteNamesFromWithClause(withClause) {
399
+ const names = new Set();
400
+ if (!(withClause === null || withClause === void 0 ? void 0 : withClause.tables)) {
401
+ return names;
402
+ }
403
+ // Normalize alias names before storing so they line up with referenced table normalization.
404
+ for (const table of withClause.tables) {
405
+ names.add(this.normalizeIdentifier(table.getSourceAliasName()));
406
+ }
407
+ return names;
408
+ }
409
+ static addCteNames(usedNames, tables) {
410
+ if (!tables) {
411
+ return;
412
+ }
413
+ for (const table of tables) {
414
+ usedNames.add(this.normalizeIdentifier(table.getSourceAliasName()));
415
+ }
416
+ }
417
+ static getMissingFixtureTables(referencedTables, fixtureMap) {
418
+ // Compare normalized table names against the fixtures that were supplied.
419
+ const missing = [];
420
+ for (const table of referencedTables) {
421
+ if (!fixtureMap.has(table)) {
422
+ missing.push(table);
423
+ }
424
+ }
425
+ return missing;
426
+ }
427
+ static generateUniqueCteName(withClause, fixtureCtes) {
428
+ const usedNames = new Set();
429
+ this.addCteNames(usedNames, fixtureCtes);
430
+ for (const name of this.collectCteNamesFromWithClause(withClause)) {
431
+ usedNames.add(name);
432
+ }
433
+ let candidate = this.BASE_CTE_NAME;
434
+ let suffix = 0;
435
+ while (usedNames.has(this.normalizeIdentifier(candidate))) {
436
+ suffix += 1;
437
+ candidate = `${this.BASE_CTE_NAME}_${suffix}`;
438
+ }
439
+ return candidate;
440
+ }
441
+ static normalizeIdentifier(value) {
442
+ return value.trim().toLowerCase();
443
+ }
444
+ static parseDefaultValue(def) {
445
+ try {
446
+ return ValueParser.parse(def);
447
+ }
448
+ catch (error) {
449
+ throw new Error(`Failed to parse default expression '${def}': ${error instanceof Error ? error.message : String(error)}`);
450
+ }
451
+ }
452
+ static resolveDefaultValueExpression(definition) {
453
+ if (!(definition === null || definition === void 0 ? void 0 : definition.defaultValue)) {
454
+ return null;
455
+ }
456
+ if (typeof definition.defaultValue === 'string') {
457
+ // Re-parse text defaults so callers always work with ValueComponent data.
458
+ return this.parseDefaultValue(definition.defaultValue);
459
+ }
460
+ return definition.defaultValue;
461
+ }
462
+ static applyColumnCasts(selectQuery, insertColumns, metadataMap) {
463
+ if (selectQuery instanceof SimpleSelectQuery) {
464
+ this.applyColumnCastsToSimple(selectQuery, insertColumns, metadataMap);
465
+ return;
466
+ }
467
+ if (selectQuery instanceof BinarySelectQuery) {
468
+ this.applyColumnCasts(selectQuery.left, insertColumns, metadataMap);
469
+ this.applyColumnCasts(selectQuery.right, insertColumns, metadataMap);
470
+ return;
471
+ }
472
+ // ValuesQuery should have been converted to SELECT earlier.
473
+ throw new Error('Unsupported select query structure for applying column casts.');
474
+ }
475
+ static applyColumnCastsToSimple(simple, insertColumns, metadataMap) {
476
+ var _a, _b;
477
+ const items = simple.selectClause.items;
478
+ for (let i = 0; i < items.length; i++) {
479
+ const colName = insertColumns[i];
480
+ const metadata = metadataMap.get(this.normalizeIdentifier(colName));
481
+ if (!metadata || !metadata.typeName) {
482
+ continue;
483
+ }
484
+ const identifier = (_b = (_a = items[i].identifier) === null || _a === void 0 ? void 0 : _a.name) !== null && _b !== void 0 ? _b : null;
485
+ const casted = new CastExpression(items[i].value, this.buildTypeValue(metadata.typeName));
486
+ const newItem = new SelectItem(casted, identifier);
487
+ newItem.comments = items[i].comments;
488
+ newItem.positionedComments = items[i].positionedComments;
489
+ simple.selectClause.items[i] = newItem;
490
+ }
491
+ }
492
+ }
493
+ InsertResultSelectConverter.BASE_CTE_NAME = '__inserted_rows';
494
+ InsertResultSelectConverter.DEFAULT_MISSING_FIXTURE_STRATEGY = 'error';
495
+ //# sourceMappingURL=InsertResultSelectConverter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InsertResultSelectConverter.js","sourceRoot":"","sources":["../../../../src/transformers/InsertResultSelectConverter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ import { MergeQuery } from '../models/MergeQuery';
2
+ import { SimpleSelectQuery } from '../models/SelectQuery';
3
+ import { FixtureTableDefinition } from './FixtureCteBuilder';
4
+ import type { MissingFixtureStrategy } from './InsertResultSelectConverter';
5
+ export interface MergeResultSelectOptions {
6
+ fixtureTables?: FixtureTableDefinition[];
7
+ missingFixtureStrategy?: MissingFixtureStrategy;
8
+ }
9
+ export declare class MergeResultSelectConverter {
10
+ private static readonly DEFAULT_MISSING_FIXTURE_STRATEGY;
11
+ /**
12
+ * Converts a MERGE query into a SELECT that counts or models the rows affected by each action.
13
+ */
14
+ static toSelectQuery(mergeQuery: MergeQuery, options?: MergeResultSelectOptions): SimpleSelectQuery;
15
+ private static buildActionSelects;
16
+ private static buildSelectForClause;
17
+ private static buildMatchedSelect;
18
+ private static buildNotMatchedSelect;
19
+ private static buildNotMatchedBySourceSelect;
20
+ private static buildNotExistsExpression;
21
+ private static buildActionWhereClause;
22
+ private static combineConditions;
23
+ private static combineSelects;
24
+ private static buildLiteralSelectClause;
25
+ private static buildCountSelectClause;
26
+ private static buildFixtureCtes;
27
+ private static collectPhysicalTableReferences;
28
+ private static filterFixtureTablesForReferences;
29
+ private static collectReferencedTablesFromWithClause;
30
+ private static extractTargetTableName;
31
+ private static buildFixtureTableMap;
32
+ private static ensureFixtureCoverage;
33
+ private static collectReferencedTables;
34
+ private static collectCteNamesFromWithClause;
35
+ private static getMissingFixtureTables;
36
+ private static mergeWithClause;
37
+ private static normalizeIdentifier;
38
+ }