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,217 @@
1
+ "use strict";
2
+ /**
3
+ * Central schema management utility for rawsql-ts.
4
+ * Converts user-defined table definitions into resolvers and JSON mappings consumed by collectors and builders.
5
+ *
6
+ * @example
7
+ * ```typescript
8
+ * const manager = new SchemaManager({
9
+ * users: {
10
+ * name: 'users',
11
+ * columns: {
12
+ * id: { name: 'id', isPrimaryKey: true },
13
+ * email: { name: 'email' }
14
+ * }
15
+ * }
16
+ * });
17
+ *
18
+ * const resolver = manager.createTableColumnResolver();
19
+ * const collector = new SchemaCollector(resolver);
20
+ * const schemas = collector.collect(SelectQueryParser.parse('SELECT * FROM users'));
21
+ * ```
22
+ * Related tests: packages/core/tests/transformers/SchemaCollector.test.ts
23
+ */
24
+ Object.defineProperty(exports, "__esModule", { value: true });
25
+ exports.SchemaManager = void 0;
26
+ exports.createSchemaManager = createSchemaManager;
27
+ exports.createTableColumnResolver = createTableColumnResolver;
28
+ exports.createJsonMappingFromSchema = createJsonMappingFromSchema;
29
+ // === Schema Manager Class ===
30
+ /**
31
+ * Central schema management utility for rawsql-ts
32
+ * Converts user-defined schemas to various internal formats
33
+ */
34
+ class SchemaManager {
35
+ constructor(schemas) {
36
+ this.schemas = schemas;
37
+ this.validateSchemas();
38
+ }
39
+ /**
40
+ * Validate schema definitions for consistency
41
+ * Ensures each table has a primary key (required for UPDATE/DELETE operations)
42
+ * and validates relationship references
43
+ */
44
+ validateSchemas() {
45
+ const tableNames = Object.keys(this.schemas);
46
+ const errors = [];
47
+ // Validate each table
48
+ Object.entries(this.schemas).forEach(([tableName, table]) => {
49
+ var _a;
50
+ // Check primary key exists (required for UPDATE/DELETE WHERE conditions)
51
+ const primaryKeys = Object.entries(table.columns)
52
+ .filter(([_, col]) => col.isPrimaryKey)
53
+ .map(([name, _]) => name);
54
+ if (primaryKeys.length === 0) {
55
+ errors.push(`Table '${tableName}' has no primary key defined`);
56
+ }
57
+ // Validate foreign key references
58
+ (_a = table.relationships) === null || _a === void 0 ? void 0 : _a.forEach(rel => {
59
+ if (!tableNames.includes(rel.table)) {
60
+ errors.push(`Table '${tableName}' references unknown table '${rel.table}' in relationship`);
61
+ }
62
+ });
63
+ });
64
+ if (errors.length > 0) {
65
+ throw new Error(`Schema validation failed:\\n${errors.join('\\n')}`);
66
+ }
67
+ }
68
+ /**
69
+ * Get table column names for SqlParamInjector TableColumnResolver
70
+ * @param tableName Name of the table
71
+ * @returns Array of column names
72
+ */
73
+ getTableColumns(tableName) {
74
+ const table = this.schemas[tableName];
75
+ if (!table) {
76
+ return [];
77
+ }
78
+ return Object.keys(table.columns);
79
+ }
80
+ /**
81
+ * Create TableColumnResolver function for SqlParamInjector
82
+ * @returns Function compatible with SqlParamInjector
83
+ */
84
+ createTableColumnResolver() {
85
+ return (tableName) => this.getTableColumns(tableName);
86
+ }
87
+ /**
88
+ * Generate JSON mapping configuration for PostgresJsonQueryBuilder
89
+ * @param rootTableName Root table for the JSON structure
90
+ * @returns JSON mapping configuration
91
+ */
92
+ createJsonMapping(rootTableName) {
93
+ var _a;
94
+ const rootTable = this.schemas[rootTableName];
95
+ if (!rootTable) {
96
+ throw new Error(`Table '${rootTableName}' not found in schema registry`);
97
+ }
98
+ // Build root entity columns mapping
99
+ const rootColumns = {};
100
+ Object.entries(rootTable.columns).forEach(([columnName, column]) => {
101
+ rootColumns[columnName] = column.jsonAlias || column.name;
102
+ });
103
+ // Build nested entities from relationships
104
+ const nestedEntities = [];
105
+ (_a = rootTable.relationships) === null || _a === void 0 ? void 0 : _a.forEach(rel => {
106
+ const relatedTable = this.schemas[rel.table];
107
+ if (!relatedTable) {
108
+ throw new Error(`Related table '${rel.table}' not found in schema registry`);
109
+ }
110
+ // Build columns mapping for related table
111
+ const relatedColumns = {};
112
+ Object.entries(relatedTable.columns).forEach(([columnName, column]) => {
113
+ relatedColumns[columnName] = column.jsonAlias || column.name;
114
+ });
115
+ // Determine relationship type for JSON builder
116
+ const relationshipType = rel.type;
117
+ nestedEntities.push({
118
+ id: rel.propertyName,
119
+ name: relatedTable.displayName || rel.table,
120
+ parentId: rootTableName,
121
+ propertyName: rel.propertyName,
122
+ relationshipType: relationshipType,
123
+ columns: relatedColumns
124
+ });
125
+ });
126
+ return {
127
+ rootName: rootTableName,
128
+ rootEntity: {
129
+ id: rootTableName,
130
+ name: rootTable.displayName || rootTableName,
131
+ columns: rootColumns
132
+ },
133
+ nestedEntities,
134
+ resultFormat: "single"
135
+ };
136
+ }
137
+ /**
138
+ * Get all table names in the schema
139
+ * @returns Array of table names
140
+ */
141
+ getTableNames() {
142
+ return Object.keys(this.schemas);
143
+ }
144
+ /**
145
+ * Get table definition by name
146
+ * @param tableName Name of the table
147
+ * @returns Table definition or undefined
148
+ */
149
+ getTable(tableName) {
150
+ return this.schemas[tableName];
151
+ }
152
+ /**
153
+ * Get primary key column name for a table
154
+ * Used by QueryBuilder.buildUpdateQuery for WHERE clause conditions
155
+ * @param tableName Name of the table
156
+ * @returns Primary key column name or undefined
157
+ */
158
+ getPrimaryKey(tableName) {
159
+ const table = this.schemas[tableName];
160
+ if (!table)
161
+ return undefined;
162
+ const primaryKeyEntry = Object.entries(table.columns)
163
+ .find(([_, col]) => col.isPrimaryKey);
164
+ return primaryKeyEntry ? primaryKeyEntry[0] : undefined;
165
+ }
166
+ /**
167
+ * Get foreign key relationships for a table
168
+ * @param tableName Name of the table
169
+ * @returns Array of foreign key relationships
170
+ */
171
+ getForeignKeys(tableName) {
172
+ const table = this.schemas[tableName];
173
+ if (!table)
174
+ return [];
175
+ const foreignKeys = [];
176
+ Object.entries(table.columns).forEach(([columnName, column]) => {
177
+ if (column.foreignKey) {
178
+ foreignKeys.push({
179
+ column: columnName,
180
+ referencedTable: column.foreignKey.table,
181
+ referencedColumn: column.foreignKey.column
182
+ });
183
+ }
184
+ });
185
+ return foreignKeys;
186
+ }
187
+ }
188
+ exports.SchemaManager = SchemaManager;
189
+ // === Convenience Functions ===
190
+ /**
191
+ * Create a SchemaManager instance from schema definitions
192
+ * @param schemas Schema registry object
193
+ * @returns SchemaManager instance
194
+ */
195
+ function createSchemaManager(schemas) {
196
+ return new SchemaManager(schemas);
197
+ }
198
+ /**
199
+ * Create TableColumnResolver function from schema definitions
200
+ * @param schemas Schema registry object
201
+ * @returns TableColumnResolver function for SqlParamInjector
202
+ */
203
+ function createTableColumnResolver(schemas) {
204
+ const manager = new SchemaManager(schemas);
205
+ return manager.createTableColumnResolver();
206
+ }
207
+ /**
208
+ * Create JSON mapping from schema definitions
209
+ * @param schemas Schema registry object
210
+ * @param rootTableName Root table name
211
+ * @returns JSON mapping for PostgresJsonQueryBuilder
212
+ */
213
+ function createJsonMappingFromSchema(schemas, rootTableName) {
214
+ const manager = new SchemaManager(schemas);
215
+ return manager.createJsonMapping(rootTableName);
216
+ }
217
+ //# sourceMappingURL=SchemaManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SchemaManager.js","sourceRoot":"","sources":["../../src/utils/SchemaManager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,272 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ScopeResolver = void 0;
4
+ const SelectQuery_1 = require("../models/SelectQuery");
5
+ const Clause_1 = require("../models/Clause");
6
+ const CTECollector_1 = require("../transformers/CTECollector");
7
+ const TextPositionUtils_1 = require("./TextPositionUtils");
8
+ /**
9
+ * Resolves scope information at cursor positions for SQL IntelliSense
10
+ *
11
+ * Provides comprehensive scope analysis including table availability, CTE resolution,
12
+ * and column visibility for intelligent code completion suggestions.
13
+ *
14
+ * @example
15
+ * ```typescript
16
+ * const sql = `
17
+ * WITH users AS (SELECT id, name FROM accounts)
18
+ * SELECT u.name FROM users u
19
+ * LEFT JOIN orders o ON u.id = o.user_id
20
+ * WHERE u.|
21
+ * `;
22
+ * const scope = ScopeResolver.resolveAt(sql, { line: 4, column: 12 });
23
+ *
24
+ * console.log(scope.availableTables); // [{ name: 'users', alias: 'u' }, { name: 'orders', alias: 'o' }]
25
+ * console.log(scope.availableCTEs); // [{ name: 'users', columns: ['id', 'name'] }]
26
+ * ```
27
+ */
28
+ class ScopeResolver {
29
+ /**
30
+ * Resolve scope information at the specified cursor position
31
+ *
32
+ * @param sql - SQL text to analyze
33
+ * @param cursorPosition - Character position of cursor (0-based)
34
+ * @returns Complete scope information
35
+ */
36
+ static resolve(sql, cursorPosition) {
37
+ // Simplified for suggestion-only focus - return basic scope information
38
+ // Complex SQL parsing removed to avoid issues with incomplete SQL syntax
39
+ return this.createEmptyScope();
40
+ }
41
+ /**
42
+ * Resolve scope information at line/column position
43
+ *
44
+ * @param sql - SQL text to analyze
45
+ * @param position - Line and column position (1-based)
46
+ * @returns Complete scope information
47
+ */
48
+ static resolveAt(sql, position) {
49
+ const charOffset = TextPositionUtils_1.TextPositionUtils.lineColumnToCharOffset(sql, position);
50
+ if (charOffset === -1) {
51
+ return this.createEmptyScope();
52
+ }
53
+ return this.resolve(sql, charOffset);
54
+ }
55
+ /**
56
+ * Get available columns for a specific table or alias
57
+ *
58
+ * @param sql - SQL text containing the query
59
+ * @param cursorPosition - Cursor position for scope resolution
60
+ * @param tableOrAlias - Table name or alias to get columns for
61
+ * @returns Array of available columns for the specified table
62
+ */
63
+ static getColumnsForTable(sql, cursorPosition, tableOrAlias) {
64
+ const scope = this.resolve(sql, cursorPosition);
65
+ // Find matching table
66
+ const table = scope.availableTables.find(t => t.name === tableOrAlias || t.alias === tableOrAlias);
67
+ if (!table) {
68
+ return [];
69
+ }
70
+ // Return columns for this table
71
+ return scope.visibleColumns.filter(col => col.tableName === table.name ||
72
+ (table.alias && col.tableAlias === table.alias));
73
+ }
74
+ static analyzeScopeFromQuery(query) {
75
+ const scope = {
76
+ availableTables: [],
77
+ availableCTEs: [],
78
+ subqueryLevel: 0,
79
+ visibleColumns: [],
80
+ currentQuery: query,
81
+ parentQueries: []
82
+ };
83
+ if (query instanceof SelectQuery_1.SimpleSelectQuery) {
84
+ // Collect CTEs
85
+ scope.availableCTEs = this.collectCTEs(query);
86
+ // Collect tables from FROM and JOINs
87
+ scope.availableTables = this.collectTablesFromQuery(query);
88
+ // Collect visible columns
89
+ scope.visibleColumns = this.collectVisibleColumns(scope.availableTables, scope.availableCTEs);
90
+ }
91
+ else if (query instanceof SelectQuery_1.BinarySelectQuery) {
92
+ // For UNION queries, analyze both sides
93
+ const leftScope = this.analyzeScopeFromQuery(query.left);
94
+ const rightScope = this.analyzeScopeFromQuery(query.right);
95
+ // Merge scopes (tables from both sides available)
96
+ scope.availableTables = [...leftScope.availableTables, ...rightScope.availableTables];
97
+ scope.availableCTEs = [...leftScope.availableCTEs, ...rightScope.availableCTEs];
98
+ scope.visibleColumns = [...leftScope.visibleColumns, ...rightScope.visibleColumns];
99
+ }
100
+ return scope;
101
+ }
102
+ static collectCTEs(query) {
103
+ const ctes = [];
104
+ if (query.withClause) {
105
+ const cteCollector = new CTECollector_1.CTECollector();
106
+ const collectedCTEs = cteCollector.collect(query);
107
+ for (const cte of collectedCTEs) {
108
+ ctes.push({
109
+ name: cte.getSourceAliasName(),
110
+ query: cte.query,
111
+ columns: this.extractCTEColumns(cte.query),
112
+ materialized: cte.materialized || false
113
+ });
114
+ }
115
+ }
116
+ return ctes;
117
+ }
118
+ static collectTablesFromQuery(query) {
119
+ const tables = [];
120
+ // Collect from FROM clause
121
+ if (query.fromClause) {
122
+ const fromTables = this.extractTablesFromFromClause(query.fromClause);
123
+ tables.push(...fromTables);
124
+ }
125
+ return tables;
126
+ }
127
+ static extractTablesFromFromClause(fromClause) {
128
+ var _a, _b, _c, _d;
129
+ const tables = [];
130
+ // Extract main source table
131
+ if (fromClause.source.datasource instanceof Clause_1.TableSource) {
132
+ const table = {
133
+ name: this.extractTableName(fromClause.source.datasource.qualifiedName),
134
+ alias: (_a = fromClause.source.aliasExpression) === null || _a === void 0 ? void 0 : _a.table.name,
135
+ schema: this.extractSchemaName(fromClause.source.datasource.qualifiedName),
136
+ fullName: this.getQualifiedNameString(fromClause.source.datasource.qualifiedName),
137
+ sourceType: 'table'
138
+ };
139
+ tables.push(table);
140
+ }
141
+ else if (fromClause.source.datasource instanceof Clause_1.SubQuerySource) {
142
+ const table = {
143
+ name: ((_b = fromClause.source.aliasExpression) === null || _b === void 0 ? void 0 : _b.table.name) || 'subquery',
144
+ alias: (_c = fromClause.source.aliasExpression) === null || _c === void 0 ? void 0 : _c.table.name,
145
+ fullName: ((_d = fromClause.source.aliasExpression) === null || _d === void 0 ? void 0 : _d.table.name) || 'subquery',
146
+ sourceType: 'subquery',
147
+ originalQuery: fromClause.source.datasource.query
148
+ };
149
+ tables.push(table);
150
+ }
151
+ // Collect from JOINs
152
+ if (fromClause.joins) {
153
+ for (const join of fromClause.joins) {
154
+ const joinTables = this.extractTablesFromJoin(join);
155
+ tables.push(...joinTables);
156
+ }
157
+ }
158
+ return tables;
159
+ }
160
+ static extractTablesFromJoin(join) {
161
+ var _a, _b, _c, _d;
162
+ const tables = [];
163
+ if (join.source.datasource instanceof Clause_1.TableSource) {
164
+ const table = {
165
+ name: this.extractTableName(join.source.datasource.qualifiedName),
166
+ alias: (_a = join.source.aliasExpression) === null || _a === void 0 ? void 0 : _a.table.name,
167
+ schema: this.extractSchemaName(join.source.datasource.qualifiedName),
168
+ fullName: this.getQualifiedNameString(join.source.datasource.qualifiedName),
169
+ sourceType: 'table'
170
+ };
171
+ tables.push(table);
172
+ }
173
+ else if (join.source.datasource instanceof Clause_1.SubQuerySource) {
174
+ const table = {
175
+ name: ((_b = join.source.aliasExpression) === null || _b === void 0 ? void 0 : _b.table.name) || 'subquery',
176
+ alias: (_c = join.source.aliasExpression) === null || _c === void 0 ? void 0 : _c.table.name,
177
+ fullName: ((_d = join.source.aliasExpression) === null || _d === void 0 ? void 0 : _d.table.name) || 'subquery',
178
+ sourceType: 'subquery',
179
+ originalQuery: join.source.datasource.query
180
+ };
181
+ tables.push(table);
182
+ }
183
+ return tables;
184
+ }
185
+ static getQualifiedNameString(qualifiedName) {
186
+ // Use the existing method from QualifiedName to get the string representation
187
+ return qualifiedName.toString();
188
+ }
189
+ static extractTableName(qualifiedName) {
190
+ const fullName = this.getQualifiedNameString(qualifiedName);
191
+ const parts = fullName.split('.');
192
+ return parts[parts.length - 1]; // Last part is table name
193
+ }
194
+ static extractSchemaName(qualifiedName) {
195
+ const fullName = this.getQualifiedNameString(qualifiedName);
196
+ const parts = fullName.split('.');
197
+ return parts.length > 1 ? parts[parts.length - 2] : undefined;
198
+ }
199
+ static extractCTEColumns(query) {
200
+ // Try to extract column names from CTE SELECT clause
201
+ try {
202
+ if (query instanceof SelectQuery_1.SimpleSelectQuery && query.selectClause) {
203
+ const columns = [];
204
+ for (const item of query.selectClause.items) {
205
+ // Use alias if available, otherwise try to extract from expression
206
+ if (item.identifier) {
207
+ columns.push(item.identifier.name);
208
+ }
209
+ else {
210
+ // Try to extract column name from expression
211
+ const columnName = this.extractColumnNameFromExpression(item.value);
212
+ if (columnName) {
213
+ columns.push(columnName);
214
+ }
215
+ }
216
+ }
217
+ return columns;
218
+ }
219
+ }
220
+ catch (error) {
221
+ // If extraction fails, return undefined
222
+ }
223
+ return undefined;
224
+ }
225
+ static extractColumnNameFromExpression(expression) {
226
+ // Simple extraction - can be enhanced based on ValueComponent types
227
+ if (expression && typeof expression === 'object' && 'value' in expression) {
228
+ return expression.value;
229
+ }
230
+ return undefined;
231
+ }
232
+ static collectVisibleColumns(tables, ctes) {
233
+ const columns = [];
234
+ // Add columns from CTEs
235
+ for (const cte of ctes) {
236
+ if (cte.columns) {
237
+ for (const columnName of cte.columns) {
238
+ columns.push({
239
+ name: columnName,
240
+ tableName: cte.name,
241
+ fullReference: `${cte.name}.${columnName}`
242
+ });
243
+ }
244
+ }
245
+ }
246
+ // For regular tables, we would need schema information to determine columns
247
+ // This is a placeholder - in practice, this would integrate with database metadata
248
+ for (const table of tables) {
249
+ if (table.sourceType === 'table') {
250
+ // Placeholder - would query database schema
251
+ columns.push({
252
+ name: '*',
253
+ tableName: table.name,
254
+ tableAlias: table.alias,
255
+ fullReference: `${table.alias || table.name}.*`
256
+ });
257
+ }
258
+ }
259
+ return columns;
260
+ }
261
+ static createEmptyScope() {
262
+ return {
263
+ availableTables: [],
264
+ availableCTEs: [],
265
+ subqueryLevel: 0,
266
+ visibleColumns: [],
267
+ parentQueries: []
268
+ };
269
+ }
270
+ }
271
+ exports.ScopeResolver = ScopeResolver;
272
+ //# sourceMappingURL=ScopeResolver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ScopeResolver.js","sourceRoot":"","sources":["../../src/utils/ScopeResolver.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SelectQueryWithClauseHelper = void 0;
4
+ const SelectQuery_1 = require("../models/SelectQuery");
5
+ /**
6
+ * Utility to manage WITH clause placement for statements that promote the
7
+ * CTE definitions outside of the SELECT body (for example, INSERT).
8
+ */
9
+ class SelectQueryWithClauseHelper {
10
+ static getWithClause(selectQuery) {
11
+ const owner = this.findClauseOwner(selectQuery);
12
+ if (!owner) {
13
+ return null;
14
+ }
15
+ return owner.withClause;
16
+ }
17
+ static setWithClause(selectQuery, withClause) {
18
+ const owner = this.findClauseOwner(selectQuery);
19
+ if (!owner) {
20
+ throw new Error("Cannot attach WITH clause to the provided select query.");
21
+ }
22
+ owner.withClause = withClause;
23
+ }
24
+ static detachWithClause(selectQuery) {
25
+ const owner = this.findClauseOwner(selectQuery);
26
+ if (!owner) {
27
+ return null;
28
+ }
29
+ const clause = owner.withClause;
30
+ owner.withClause = null;
31
+ return clause;
32
+ }
33
+ static findClauseOwner(selectQuery) {
34
+ if (!selectQuery) {
35
+ return null;
36
+ }
37
+ if (selectQuery instanceof SelectQuery_1.SimpleSelectQuery || selectQuery instanceof SelectQuery_1.ValuesQuery) {
38
+ return selectQuery;
39
+ }
40
+ if (selectQuery instanceof SelectQuery_1.BinarySelectQuery) {
41
+ return this.findClauseOwner(selectQuery.left);
42
+ }
43
+ throw new Error("Unsupported select query type for WITH clause management.");
44
+ }
45
+ }
46
+ exports.SelectQueryWithClauseHelper = SelectQueryWithClauseHelper;
47
+ //# sourceMappingURL=SelectQueryWithClauseHelper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SelectQueryWithClauseHelper.js","sourceRoot":"","sources":["../../src/utils/SelectQueryWithClauseHelper.ts"],"names":[],"mappings":";;;AAAA,uDAAuG;AAGvG;;;GAGG;AACH,MAAa,2BAA2B;IAC7B,MAAM,CAAC,aAAa,CAAC,WAA+B;QACvD,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;QAChD,IAAI,CAAC,KAAK,EAAE,CAAC;YACT,OAAO,IAAI,CAAC;QAChB,CAAC;QACD,OAAO,KAAK,CAAC,UAAU,CAAC;IAC5B,CAAC;IAEM,MAAM,CAAC,aAAa,CAAC,WAAwB,EAAE,UAA6B;QAC/E,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;QAChD,IAAI,CAAC,KAAK,EAAE,CAAC;YACT,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAC;QAC/E,CAAC;QACD,KAAK,CAAC,UAAU,GAAG,UAAU,CAAC;IAClC,CAAC;IAEM,MAAM,CAAC,gBAAgB,CAAC,WAAwB;QACnD,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;QAChD,IAAI,CAAC,KAAK,EAAE,CAAC;YACT,OAAO,IAAI,CAAC;QAChB,CAAC;QACD,MAAM,MAAM,GAAG,KAAK,CAAC,UAAU,CAAC;QAChC,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC;QACxB,OAAO,MAAM,CAAC;IAClB,CAAC;IAEO,MAAM,CAAC,eAAe,CAAC,WAA+B;QAC1D,IAAI,CAAC,WAAW,EAAE,CAAC;YACf,OAAO,IAAI,CAAC;QAChB,CAAC;QACD,IAAI,WAAW,YAAY,+BAAiB,IAAI,WAAW,YAAY,yBAAW,EAAE,CAAC;YACjF,OAAO,WAAW,CAAC;QACvB,CAAC;QACD,IAAI,WAAW,YAAY,+BAAiB,EAAE,CAAC;YAC3C,OAAO,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QAClD,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,2DAA2D,CAAC,CAAC;IACjF,CAAC;CACJ;AAvCD,kEAuCC"}
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SqlSchemaValidator = void 0;
4
+ const SchemaCollector_1 = require("../transformers/SchemaCollector");
5
+ const SelectQueryParser_1 = require("../parsers/SelectQueryParser");
6
+ /**
7
+ * Validates SQL query structures against known tables and columns.
8
+ *
9
+ * @example
10
+ * ```typescript
11
+ * const tables = [
12
+ * { name: 'users', columns: ['id', 'email'] }
13
+ * ];
14
+ *
15
+ * SqlSchemaValidator.validate('SELECT id FROM users', tables);
16
+ * ```
17
+ * Related tests: packages/core/tests/utils/SqlSchemaValidator.validate.test.ts
18
+ */
19
+ class SqlSchemaValidator {
20
+ /**
21
+ * Validates a SQL query structure against a provided TableColumnResolver or TableSchema array.
22
+ * @param sql The SQL query structure to validate, can be a SQL string or a SqlComponent.
23
+ * @param tableResolver The TableColumnResolver or TableSchema array to validate against.
24
+ * @throws Error if the query contains undefined tables or columns.
25
+ */
26
+ static validate(sql, tableResolver) {
27
+ const sqlComponent = typeof sql === 'string' ? SelectQueryParser_1.SelectQueryParser.parse(sql) : sql;
28
+ // Convert TableSchema[] to a resolver function if necessary
29
+ const resolver = Array.isArray(tableResolver)
30
+ ? (tableName) => {
31
+ const schema = tableResolver.find((t) => t.name === tableName);
32
+ return schema ? schema.columns : [];
33
+ }
34
+ : tableResolver;
35
+ const schemaCollector = new SchemaCollector_1.SchemaCollector(resolver);
36
+ const tableSchemas = schemaCollector.collect(sqlComponent);
37
+ const errors = [];
38
+ for (const tableSchema of tableSchemas) {
39
+ const resolvedColumns = resolver(tableSchema.name);
40
+ if (resolvedColumns.length === 0) {
41
+ errors.push(`Table '${tableSchema.name}' is not defined.`);
42
+ continue;
43
+ }
44
+ const undefinedColumns = tableSchema.columns.filter(column => !resolvedColumns.includes(column));
45
+ if (undefinedColumns.length > 0) {
46
+ errors.push(`Table '${tableSchema.name}' contains undefined columns: ${undefinedColumns.join(', ')}.`);
47
+ }
48
+ }
49
+ if (errors.length > 0) {
50
+ throw new Error(errors.join('\n'));
51
+ }
52
+ }
53
+ }
54
+ exports.SqlSchemaValidator = SqlSchemaValidator;
55
+ //# sourceMappingURL=SqlSchemaValidator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SqlSchemaValidator.js","sourceRoot":"","sources":["../../src/utils/SqlSchemaValidator.ts"],"names":[],"mappings":";;;AAAA,qEAA+E;AAG/E,oEAAiE;AAEjE;;;;;;;;;;;;GAYG;AAEH,MAAa,kBAAkB;IAC3B;;;;;OAKG;IACI,MAAM,CAAC,QAAQ,CAClB,GAA0B,EAC1B,aAAkD;QAElD,MAAM,YAAY,GAAG,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,qCAAiB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;QAElF,4DAA4D;QAC5D,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC;YACzC,CAAC,CAAC,CAAC,SAAiB,EAAE,EAAE;gBACpB,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC;gBAC/D,OAAO,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;YACxC,CAAC;YACD,CAAC,CAAC,aAAa,CAAC;QAEpB,MAAM,eAAe,GAAG,IAAI,iCAAe,CAAC,QAAQ,CAAC,CAAC;QACtD,MAAM,YAAY,GAAG,eAAe,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;QAC3D,MAAM,MAAM,GAAa,EAAE,CAAC;QAE5B,KAAK,MAAM,WAAW,IAAI,YAAY,EAAE,CAAC;YACrC,MAAM,eAAe,GAAG,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;YACnD,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC/B,MAAM,CAAC,IAAI,CAAC,UAAU,WAAW,CAAC,IAAI,mBAAmB,CAAC,CAAC;gBAC3D,SAAS;YACb,CAAC;YAED,MAAM,gBAAgB,GAAG,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,eAAe,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;YACjG,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC9B,MAAM,CAAC,IAAI,CACP,UAAU,WAAW,CAAC,IAAI,iCAAiC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAC5F,CAAC;YACN,CAAC;QACL,CAAC;QAED,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACvC,CAAC;IACL,CAAC;CACJ;AA5CD,gDA4CC"}
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.tableNameVariants = exports.normalizeTableName = void 0;
4
+ const FullNameParser_1 = require("../parsers/FullNameParser");
5
+ /**
6
+ * Parses a table name through the SQL parser so all supported identifier
7
+ * syntaxes (quoted, bracketed, backtick) converge to a consistent key.
8
+ */
9
+ const normalizeTableName = (tableName) => {
10
+ var _a;
11
+ // Parse with the same rules as the main AST to avoid regex-based drift.
12
+ const parsed = FullNameParser_1.FullNameParser.parse(tableName);
13
+ const namespaces = (_a = parsed.namespaces) !== null && _a !== void 0 ? _a : [];
14
+ const parts = [...namespaces, parsed.name.name];
15
+ return parts.join('.').toLowerCase();
16
+ };
17
+ exports.normalizeTableName = normalizeTableName;
18
+ /**
19
+ * For schema-sensitive matching we no longer drop qualifiers; a single
20
+ * normalized key is sufficient and safer than heuristic variants.
21
+ */
22
+ const tableNameVariants = (tableName) => {
23
+ var _a;
24
+ const parsed = FullNameParser_1.FullNameParser.parse(tableName);
25
+ const namespaces = (_a = parsed.namespaces) !== null && _a !== void 0 ? _a : [];
26
+ const normalized = (0, exports.normalizeTableName)(tableName);
27
+ // Return the parsed-normalized key alone when no schema qualifier is present.
28
+ if (namespaces.length === 0) {
29
+ return [normalized];
30
+ }
31
+ // DONOT return an unqualified variant; schema-qualified normalization is required to avoid mixing distinct tables.
32
+ return [normalized];
33
+ };
34
+ exports.tableNameVariants = tableNameVariants;
35
+ //# sourceMappingURL=TableNameUtils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TableNameUtils.js","sourceRoot":"","sources":["../../src/utils/TableNameUtils.ts"],"names":[],"mappings":";;;AAAA,8DAA2D;AAE3D;;;GAGG;AACI,MAAM,kBAAkB,GAAG,CAAC,SAAiB,EAAU,EAAE;;IAC9D,wEAAwE;IACxE,MAAM,MAAM,GAAG,+BAAc,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IAC/C,MAAM,UAAU,GAAG,MAAA,MAAM,CAAC,UAAU,mCAAI,EAAE,CAAC;IAC3C,MAAM,KAAK,GAAG,CAAC,GAAG,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAChD,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;AACvC,CAAC,CAAC;AANW,QAAA,kBAAkB,sBAM7B;AAEF;;;GAGG;AACI,MAAM,iBAAiB,GAAG,CAAC,SAAiB,EAAY,EAAE;;IAC/D,MAAM,MAAM,GAAG,+BAAc,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IAC/C,MAAM,UAAU,GAAG,MAAA,MAAM,CAAC,UAAU,mCAAI,EAAE,CAAC;IAC3C,MAAM,UAAU,GAAG,IAAA,0BAAkB,EAAC,SAAS,CAAC,CAAC;IACjD,8EAA8E;IAC9E,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5B,OAAO,CAAC,UAAU,CAAC,CAAC;IACtB,CAAC;IAED,mHAAmH;IACnH,OAAO,CAAC,UAAU,CAAC,CAAC;AACtB,CAAC,CAAC;AAXW,QAAA,iBAAiB,qBAW5B"}