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,128 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TextPositionUtils = void 0;
4
+ /**
5
+ * Utility functions for text position conversion and manipulation
6
+ *
7
+ * Provides centralized functionality for converting between different
8
+ * position representations commonly used in text processing and SQL parsing.
9
+ */
10
+ class TextPositionUtils {
11
+ /**
12
+ * Convert line/column position to character offset
13
+ *
14
+ * @param text - Source text
15
+ * @param position - Line/column position (1-based)
16
+ * @returns Character offset (0-based) or -1 if invalid
17
+ *
18
+ * @example
19
+ * ```typescript
20
+ * const text = "SELECT id\nFROM users";
21
+ * const charOffset = TextPositionUtils.lineColumnToCharOffset(text, { line: 2, column: 1 });
22
+ * console.log(charOffset); // 10 (position of 'F' in 'FROM')
23
+ * ```
24
+ */
25
+ static lineColumnToCharOffset(text, position) {
26
+ if (position.line < 1 || position.column < 1) {
27
+ return -1;
28
+ }
29
+ const lines = text.split('\n');
30
+ if (position.line > lines.length) {
31
+ return -1;
32
+ }
33
+ const targetLine = lines[position.line - 1];
34
+ if (position.column > targetLine.length + 1) {
35
+ return -1;
36
+ }
37
+ let offset = 0;
38
+ for (let i = 0; i < position.line - 1; i++) {
39
+ offset += lines[i].length + 1; // +1 for newline
40
+ }
41
+ offset += position.column - 1;
42
+ return offset;
43
+ }
44
+ /**
45
+ * Convert character offset to line/column position
46
+ *
47
+ * @param text - Source text
48
+ * @param charOffset - Character offset (0-based)
49
+ * @returns Line/column position (1-based) or null if invalid
50
+ *
51
+ * @example
52
+ * ```typescript
53
+ * const text = "SELECT id\nFROM users";
54
+ * const position = TextPositionUtils.charOffsetToLineColumn(text, 10);
55
+ * console.log(position); // { line: 2, column: 1 }
56
+ * ```
57
+ */
58
+ static charOffsetToLineColumn(text, charOffset) {
59
+ if (charOffset < 0 || charOffset > text.length) {
60
+ return null;
61
+ }
62
+ const lines = text.split('\n');
63
+ let currentOffset = 0;
64
+ for (let lineIndex = 0; lineIndex < lines.length; lineIndex++) {
65
+ const lineLength = lines[lineIndex].length;
66
+ if (charOffset < currentOffset + lineLength) {
67
+ return {
68
+ line: lineIndex + 1,
69
+ column: charOffset - currentOffset + 1
70
+ };
71
+ }
72
+ if (charOffset === currentOffset + lineLength && lineIndex < lines.length - 1) {
73
+ return {
74
+ line: lineIndex + 2,
75
+ column: 1
76
+ };
77
+ }
78
+ currentOffset += lineLength + 1; // +1 for newline
79
+ }
80
+ // Handle position at very end
81
+ if (charOffset === text.length) {
82
+ const lastLine = lines[lines.length - 1];
83
+ return {
84
+ line: lines.length,
85
+ column: lastLine.length + 1
86
+ };
87
+ }
88
+ return null;
89
+ }
90
+ /**
91
+ * Check if a position is within text bounds
92
+ *
93
+ * @param text - Source text
94
+ * @param position - Line/column position (1-based)
95
+ * @returns True if position is valid
96
+ */
97
+ static isValidPosition(text, position) {
98
+ return this.lineColumnToCharOffset(text, position) !== -1;
99
+ }
100
+ /**
101
+ * Get the line at the specified line number
102
+ *
103
+ * @param text - Source text
104
+ * @param lineNumber - Line number (1-based)
105
+ * @returns Line content or null if invalid
106
+ */
107
+ static getLine(text, lineNumber) {
108
+ if (lineNumber < 1) {
109
+ return null;
110
+ }
111
+ const lines = text.split('\n');
112
+ if (lineNumber > lines.length) {
113
+ return null;
114
+ }
115
+ return lines[lineNumber - 1];
116
+ }
117
+ /**
118
+ * Get the total number of lines in text
119
+ *
120
+ * @param text - Source text
121
+ * @returns Number of lines
122
+ */
123
+ static getLineCount(text) {
124
+ return text.split('\n').length;
125
+ }
126
+ }
127
+ exports.TextPositionUtils = TextPositionUtils;
128
+ //# sourceMappingURL=TextPositionUtils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TextPositionUtils.js","sourceRoot":"","sources":["../../src/utils/TextPositionUtils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,187 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.rewriteValueComponentWithColumnResolver = rewriteValueComponentWithColumnResolver;
4
+ const ValueComponent_1 = require("../models/ValueComponent");
5
+ const Clause_1 = require("../models/Clause");
6
+ function rewriteValueComponentWithColumnResolver(value, resolver) {
7
+ if (value instanceof ValueComponent_1.ColumnReference) {
8
+ return resolver(value);
9
+ }
10
+ if (value instanceof ValueComponent_1.FunctionCall) {
11
+ const rewrittenArgument = value.argument
12
+ ? rewriteValueComponentWithColumnResolver(value.argument, resolver)
13
+ : null;
14
+ const rewrittenOver = value.over ? rewriteOverExpression(value.over, resolver) : null;
15
+ const rewrittenWithinGroup = value.withinGroup
16
+ ? rewriteOrderByClause(value.withinGroup, resolver)
17
+ : null;
18
+ const rewrittenInternalOrderBy = value.internalOrderBy
19
+ ? rewriteOrderByClause(value.internalOrderBy, resolver)
20
+ : null;
21
+ // Preserve FILTER predicates so aggregate behaviour remains intact.
22
+ const rewrittenFilterCondition = value.filterCondition
23
+ ? rewriteValueComponentWithColumnResolver(value.filterCondition, resolver)
24
+ : null;
25
+ return new ValueComponent_1.FunctionCall(value.qualifiedName.namespaces, value.qualifiedName.name, rewrittenArgument, rewrittenOver, rewrittenWithinGroup, value.withOrdinality, rewrittenInternalOrderBy, rewrittenFilterCondition);
26
+ }
27
+ if (value instanceof ValueComponent_1.UnaryExpression) {
28
+ const rewrittenExpression = rewriteValueComponentWithColumnResolver(value.expression, resolver);
29
+ return new ValueComponent_1.UnaryExpression(value.operator.value, rewrittenExpression);
30
+ }
31
+ if (value instanceof ValueComponent_1.BinaryExpression) {
32
+ const left = rewriteValueComponentWithColumnResolver(value.left, resolver);
33
+ const right = rewriteValueComponentWithColumnResolver(value.right, resolver);
34
+ return new ValueComponent_1.BinaryExpression(left, value.operator.value, right);
35
+ }
36
+ if (value instanceof ValueComponent_1.CaseExpression) {
37
+ const condition = value.condition
38
+ ? rewriteValueComponentWithColumnResolver(value.condition, resolver)
39
+ : null;
40
+ const switchCase = rewriteSwitchCaseArgument(value.switchCase, resolver);
41
+ return new ValueComponent_1.CaseExpression(condition, switchCase);
42
+ }
43
+ if (value instanceof ValueComponent_1.SwitchCaseArgument) {
44
+ return rewriteSwitchCaseArgument(value, resolver);
45
+ }
46
+ if (value instanceof ValueComponent_1.CaseKeyValuePair) {
47
+ return rewriteCaseKeyValuePair(value, resolver);
48
+ }
49
+ if (value instanceof ValueComponent_1.BetweenExpression) {
50
+ const expression = rewriteValueComponentWithColumnResolver(value.expression, resolver);
51
+ const lower = rewriteValueComponentWithColumnResolver(value.lower, resolver);
52
+ const upper = rewriteValueComponentWithColumnResolver(value.upper, resolver);
53
+ return new ValueComponent_1.BetweenExpression(expression, lower, upper, value.negated);
54
+ }
55
+ if (value instanceof ValueComponent_1.CastExpression) {
56
+ const input = rewriteValueComponentWithColumnResolver(value.input, resolver);
57
+ const castType = rewriteTypeValue(value.castType, resolver);
58
+ return new ValueComponent_1.CastExpression(input, castType);
59
+ }
60
+ if (value instanceof ValueComponent_1.ParenExpression) {
61
+ const expression = rewriteValueComponentWithColumnResolver(value.expression, resolver);
62
+ return new ValueComponent_1.ParenExpression(expression);
63
+ }
64
+ if (value instanceof ValueComponent_1.TupleExpression) {
65
+ const rewrittenValues = value.values.map((item) => rewriteValueComponentWithColumnResolver(item, resolver));
66
+ return new ValueComponent_1.TupleExpression(rewrittenValues);
67
+ }
68
+ if (value instanceof ValueComponent_1.ArrayExpression) {
69
+ const expression = rewriteValueComponentWithColumnResolver(value.expression, resolver);
70
+ return new ValueComponent_1.ArrayExpression(expression);
71
+ }
72
+ if (value instanceof ValueComponent_1.ArraySliceExpression) {
73
+ const array = rewriteValueComponentWithColumnResolver(value.array, resolver);
74
+ const startIndex = value.startIndex
75
+ ? rewriteValueComponentWithColumnResolver(value.startIndex, resolver)
76
+ : null;
77
+ const endIndex = value.endIndex
78
+ ? rewriteValueComponentWithColumnResolver(value.endIndex, resolver)
79
+ : null;
80
+ return new ValueComponent_1.ArraySliceExpression(array, startIndex, endIndex);
81
+ }
82
+ if (value instanceof ValueComponent_1.ArrayIndexExpression) {
83
+ const array = rewriteValueComponentWithColumnResolver(value.array, resolver);
84
+ const index = rewriteValueComponentWithColumnResolver(value.index, resolver);
85
+ return new ValueComponent_1.ArrayIndexExpression(array, index);
86
+ }
87
+ if (value instanceof ValueComponent_1.ArrayQueryExpression) {
88
+ return value;
89
+ }
90
+ if (value instanceof ValueComponent_1.ValueList) {
91
+ const rewrittenList = value.values.map((item) => rewriteValueComponentWithColumnResolver(item, resolver));
92
+ return new ValueComponent_1.ValueList(rewrittenList);
93
+ }
94
+ if (value instanceof ValueComponent_1.InlineQuery) {
95
+ return value;
96
+ }
97
+ if (value instanceof ValueComponent_1.WindowFrameExpression) {
98
+ return rewriteWindowFrameExpression(value, resolver);
99
+ }
100
+ if (value instanceof ValueComponent_1.WindowFrameSpec) {
101
+ return rewriteWindowFrameSpec(value, resolver);
102
+ }
103
+ if (value instanceof ValueComponent_1.WindowFrameBoundaryValue) {
104
+ const rewrittenValue = rewriteValueComponentWithColumnResolver(value.value, resolver);
105
+ return new ValueComponent_1.WindowFrameBoundaryValue(rewrittenValue, value.isFollowing);
106
+ }
107
+ if (value instanceof ValueComponent_1.WindowFrameBoundStatic) {
108
+ return value;
109
+ }
110
+ if (value instanceof ValueComponent_1.TypeValue) {
111
+ return rewriteTypeValue(value, resolver);
112
+ }
113
+ if (value instanceof ValueComponent_1.StringSpecifierExpression) {
114
+ return value;
115
+ }
116
+ if (value instanceof ValueComponent_1.LiteralValue || value instanceof ValueComponent_1.RawString || value instanceof ValueComponent_1.IdentifierString) {
117
+ return value;
118
+ }
119
+ if (value instanceof ValueComponent_1.ParameterExpression) {
120
+ return value;
121
+ }
122
+ return value;
123
+ }
124
+ function rewriteSwitchCaseArgument(argument, resolver) {
125
+ const rewrittenCases = argument.cases.map((pair) => rewriteCaseKeyValuePair(pair, resolver));
126
+ const elseValue = argument.elseValue
127
+ ? rewriteValueComponentWithColumnResolver(argument.elseValue, resolver)
128
+ : null;
129
+ return new ValueComponent_1.SwitchCaseArgument(rewrittenCases, elseValue);
130
+ }
131
+ function rewriteCaseKeyValuePair(pair, resolver) {
132
+ const key = rewriteValueComponentWithColumnResolver(pair.key, resolver);
133
+ const value = rewriteValueComponentWithColumnResolver(pair.value, resolver);
134
+ return new ValueComponent_1.CaseKeyValuePair(key, value);
135
+ }
136
+ function rewriteOrderByClause(clause, resolver) {
137
+ const rewrittenOrder = clause.order.map((component) => rewriteOrderByComponent(component, resolver));
138
+ return new Clause_1.OrderByClause(rewrittenOrder);
139
+ }
140
+ function rewriteOrderByComponent(component, resolver) {
141
+ if (component instanceof Clause_1.OrderByItem) {
142
+ const rewrittenValue = rewriteValueComponentWithColumnResolver(component.value, resolver);
143
+ return new Clause_1.OrderByItem(rewrittenValue, component.sortDirection, component.nullsPosition);
144
+ }
145
+ return rewriteValueComponentWithColumnResolver(component, resolver);
146
+ }
147
+ function rewriteOverExpression(over, resolver) {
148
+ if (over instanceof ValueComponent_1.WindowFrameExpression) {
149
+ return rewriteWindowFrameExpression(over, resolver);
150
+ }
151
+ return over;
152
+ }
153
+ function rewriteWindowFrameExpression(expression, resolver) {
154
+ const partition = expression.partition
155
+ ? rewritePartitionByClause(expression.partition, resolver)
156
+ : null;
157
+ const order = expression.order ? rewriteOrderByClause(expression.order, resolver) : null;
158
+ const frameSpec = expression.frameSpec
159
+ ? rewriteWindowFrameSpec(expression.frameSpec, resolver)
160
+ : null;
161
+ return new ValueComponent_1.WindowFrameExpression(partition, order, frameSpec);
162
+ }
163
+ function rewritePartitionByClause(clause, resolver) {
164
+ const value = rewriteValueComponentWithColumnResolver(clause.value, resolver);
165
+ return new Clause_1.PartitionByClause(value);
166
+ }
167
+ function rewriteWindowFrameSpec(spec, resolver) {
168
+ const startBound = rewriteFrameBoundaryComponent(spec.startBound, resolver);
169
+ const endBound = spec.endBound
170
+ ? rewriteFrameBoundaryComponent(spec.endBound, resolver)
171
+ : null;
172
+ return new ValueComponent_1.WindowFrameSpec(spec.frameType, startBound, endBound);
173
+ }
174
+ function rewriteFrameBoundaryComponent(bound, resolver) {
175
+ if (bound instanceof ValueComponent_1.WindowFrameBoundaryValue) {
176
+ const value = rewriteValueComponentWithColumnResolver(bound.value, resolver);
177
+ return new ValueComponent_1.WindowFrameBoundaryValue(value, bound.isFollowing);
178
+ }
179
+ return bound;
180
+ }
181
+ function rewriteTypeValue(value, resolver) {
182
+ const argument = value.argument
183
+ ? rewriteValueComponentWithColumnResolver(value.argument, resolver)
184
+ : null;
185
+ return new ValueComponent_1.TypeValue(value.namespaces, value.qualifiedName.name, argument);
186
+ }
187
+ //# sourceMappingURL=ValueComponentRewriter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ValueComponentRewriter.js","sourceRoot":"","sources":["../../src/utils/ValueComponentRewriter.ts"],"names":[],"mappings":";;AAoCA,0FA+JC;AAnMD,6DA+BkC;AAClC,6CAAmG;AAInG,SAAgB,uCAAuC,CACnD,KAAqB,EACrB,QAAiC;IAEjC,IAAI,KAAK,YAAY,gCAAe,EAAE,CAAC;QACnC,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC3B,CAAC;IAED,IAAI,KAAK,YAAY,6BAAY,EAAE,CAAC;QAChC,MAAM,iBAAiB,GAAG,KAAK,CAAC,QAAQ;YACpC,CAAC,CAAC,uCAAuC,CAAC,KAAK,CAAC,QAAQ,EAAE,QAAQ,CAAC;YACnE,CAAC,CAAC,IAAI,CAAC;QACX,MAAM,aAAa,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,qBAAqB,CAAC,KAAK,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QACtF,MAAM,oBAAoB,GAAG,KAAK,CAAC,WAAW;YAC1C,CAAC,CAAC,oBAAoB,CAAC,KAAK,CAAC,WAAW,EAAE,QAAQ,CAAC;YACnD,CAAC,CAAC,IAAI,CAAC;QACX,MAAM,wBAAwB,GAAG,KAAK,CAAC,eAAe;YAClD,CAAC,CAAC,oBAAoB,CAAC,KAAK,CAAC,eAAe,EAAE,QAAQ,CAAC;YACvD,CAAC,CAAC,IAAI,CAAC;QACX,oEAAoE;QACpE,MAAM,wBAAwB,GAAG,KAAK,CAAC,eAAe;YAClD,CAAC,CAAC,uCAAuC,CAAC,KAAK,CAAC,eAAe,EAAE,QAAQ,CAAC;YAC1E,CAAC,CAAC,IAAI,CAAC;QAEX,OAAO,IAAI,6BAAY,CACnB,KAAK,CAAC,aAAa,CAAC,UAAU,EAC9B,KAAK,CAAC,aAAa,CAAC,IAAI,EACxB,iBAAiB,EACjB,aAAa,EACb,oBAAoB,EACpB,KAAK,CAAC,cAAc,EACpB,wBAAwB,EACxB,wBAAwB,CAC3B,CAAC;IACN,CAAC;IAED,IAAI,KAAK,YAAY,gCAAe,EAAE,CAAC;QACnC,MAAM,mBAAmB,GAAG,uCAAuC,CAAC,KAAK,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QAChG,OAAO,IAAI,gCAAe,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,EAAE,mBAAmB,CAAC,CAAC;IAC1E,CAAC;IAED,IAAI,KAAK,YAAY,iCAAgB,EAAE,CAAC;QACpC,MAAM,IAAI,GAAG,uCAAuC,CAAC,KAAK,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAC3E,MAAM,KAAK,GAAG,uCAAuC,CAAC,KAAK,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QAC7E,OAAO,IAAI,iCAAgB,CAAC,IAAI,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IACnE,CAAC;IAED,IAAI,KAAK,YAAY,+BAAc,EAAE,CAAC;QAClC,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS;YAC7B,CAAC,CAAC,uCAAuC,CAAC,KAAK,CAAC,SAAS,EAAE,QAAQ,CAAC;YACpE,CAAC,CAAC,IAAI,CAAC;QACX,MAAM,UAAU,GAAG,yBAAyB,CAAC,KAAK,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QACzE,OAAO,IAAI,+BAAc,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;IACrD,CAAC;IAED,IAAI,KAAK,YAAY,mCAAkB,EAAE,CAAC;QACtC,OAAO,yBAAyB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IACtD,CAAC;IAED,IAAI,KAAK,YAAY,iCAAgB,EAAE,CAAC;QACpC,OAAO,uBAAuB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IACpD,CAAC;IAED,IAAI,KAAK,YAAY,kCAAiB,EAAE,CAAC;QACrC,MAAM,UAAU,GAAG,uCAAuC,CAAC,KAAK,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QACvF,MAAM,KAAK,GAAG,uCAAuC,CAAC,KAAK,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QAC7E,MAAM,KAAK,GAAG,uCAAuC,CAAC,KAAK,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QAC7E,OAAO,IAAI,kCAAiB,CAAC,UAAU,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;IAC1E,CAAC;IAED,IAAI,KAAK,YAAY,+BAAc,EAAE,CAAC;QAClC,MAAM,KAAK,GAAG,uCAAuC,CAAC,KAAK,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QAC7E,MAAM,QAAQ,GAAG,gBAAgB,CAAC,KAAK,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAC5D,OAAO,IAAI,+BAAc,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IAC/C,CAAC;IAED,IAAI,KAAK,YAAY,gCAAe,EAAE,CAAC;QACnC,MAAM,UAAU,GAAG,uCAAuC,CAAC,KAAK,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QACvF,OAAO,IAAI,gCAAe,CAAC,UAAU,CAAC,CAAC;IAC3C,CAAC;IAED,IAAI,KAAK,YAAY,gCAAe,EAAE,CAAC;QACnC,MAAM,eAAe,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAC9C,uCAAuC,CAAC,IAAI,EAAE,QAAQ,CAAC,CAC1D,CAAC;QACF,OAAO,IAAI,gCAAe,CAAC,eAAe,CAAC,CAAC;IAChD,CAAC;IAED,IAAI,KAAK,YAAY,gCAAe,EAAE,CAAC;QACnC,MAAM,UAAU,GAAG,uCAAuC,CAAC,KAAK,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QACvF,OAAO,IAAI,gCAAe,CAAC,UAAU,CAAC,CAAC;IAC3C,CAAC;IAED,IAAI,KAAK,YAAY,qCAAoB,EAAE,CAAC;QACxC,MAAM,KAAK,GAAG,uCAAuC,CAAC,KAAK,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QAC7E,MAAM,UAAU,GAAG,KAAK,CAAC,UAAU;YAC/B,CAAC,CAAC,uCAAuC,CAAC,KAAK,CAAC,UAAU,EAAE,QAAQ,CAAC;YACrE,CAAC,CAAC,IAAI,CAAC;QACX,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ;YAC3B,CAAC,CAAC,uCAAuC,CAAC,KAAK,CAAC,QAAQ,EAAE,QAAQ,CAAC;YACnE,CAAC,CAAC,IAAI,CAAC;QACX,OAAO,IAAI,qCAAoB,CAAC,KAAK,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;IACjE,CAAC;IAED,IAAI,KAAK,YAAY,qCAAoB,EAAE,CAAC;QACxC,MAAM,KAAK,GAAG,uCAAuC,CAAC,KAAK,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QAC7E,MAAM,KAAK,GAAG,uCAAuC,CAAC,KAAK,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QAC7E,OAAO,IAAI,qCAAoB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAClD,CAAC;IAED,IAAI,KAAK,YAAY,qCAAoB,EAAE,CAAC;QACxC,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,IAAI,KAAK,YAAY,0BAAS,EAAE,CAAC;QAC7B,MAAM,aAAa,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAC5C,uCAAuC,CAAC,IAAI,EAAE,QAAQ,CAAC,CAC1D,CAAC;QACF,OAAO,IAAI,0BAAS,CAAC,aAAa,CAAC,CAAC;IACxC,CAAC;IAED,IAAI,KAAK,YAAY,4BAAW,EAAE,CAAC;QAC/B,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,IAAI,KAAK,YAAY,sCAAqB,EAAE,CAAC;QACzC,OAAO,4BAA4B,CAAC,KAAK,EAAE,QAAQ,CAA8B,CAAC;IACtF,CAAC;IAED,IAAI,KAAK,YAAY,gCAAe,EAAE,CAAC;QACnC,OAAO,sBAAsB,CAAC,KAAK,EAAE,QAAQ,CAA8B,CAAC;IAChF,CAAC;IAED,IAAI,KAAK,YAAY,yCAAwB,EAAE,CAAC;QAC5C,MAAM,cAAc,GAAG,uCAAuC,CAAC,KAAK,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QACtF,OAAO,IAAI,yCAAwB,CAAC,cAAc,EAAE,KAAK,CAAC,WAAW,CAA8B,CAAC;IACxG,CAAC;IAED,IAAI,KAAK,YAAY,uCAAsB,EAAE,CAAC;QAC1C,OAAO,KAAkC,CAAC;IAC9C,CAAC;IAED,IAAI,KAAK,YAAY,0BAAS,EAAE,CAAC;QAC7B,OAAO,gBAAgB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IAC7C,CAAC;IAED,IAAI,KAAK,YAAY,0CAAyB,EAAE,CAAC;QAC7C,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,IAAI,KAAK,YAAY,6BAAY,IAAI,KAAK,YAAY,0BAAS,IAAI,KAAK,YAAY,iCAAgB,EAAE,CAAC;QACnG,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,IAAI,KAAK,YAAY,oCAAmB,EAAE,CAAC;QACvC,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,OAAO,KAAK,CAAC;AACjB,CAAC;AAED,SAAS,yBAAyB,CAC9B,QAA4B,EAC5B,QAAiC;IAEjC,MAAM,cAAc,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,uBAAuB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC;IAC7F,MAAM,SAAS,GAAG,QAAQ,CAAC,SAAS;QAChC,CAAC,CAAC,uCAAuC,CAAC,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC;QACvE,CAAC,CAAC,IAAI,CAAC;IACX,OAAO,IAAI,mCAAkB,CAAC,cAAc,EAAE,SAAS,CAAC,CAAC;AAC7D,CAAC;AAED,SAAS,uBAAuB,CAC5B,IAAsB,EACtB,QAAiC;IAEjC,MAAM,GAAG,GAAG,uCAAuC,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;IACxE,MAAM,KAAK,GAAG,uCAAuC,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IAC5E,OAAO,IAAI,iCAAgB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AAC5C,CAAC;AAED,SAAS,oBAAoB,CACzB,MAAqB,EACrB,QAAiC;IAEjC,MAAM,cAAc,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAClD,uBAAuB,CAAC,SAAS,EAAE,QAAQ,CAAC,CAC/C,CAAC;IACF,OAAO,IAAI,sBAAa,CAAC,cAAc,CAAC,CAAC;AAC7C,CAAC;AAED,SAAS,uBAAuB,CAC5B,SAA2B,EAC3B,QAAiC;IAEjC,IAAI,SAAS,YAAY,oBAAW,EAAE,CAAC;QACnC,MAAM,cAAc,GAAG,uCAAuC,CAAC,SAAS,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QAC1F,OAAO,IAAI,oBAAW,CAAC,cAAc,EAAE,SAAS,CAAC,aAAa,EAAE,SAAS,CAAC,aAAa,CAAC,CAAC;IAC7F,CAAC;IACD,OAAO,uCAAuC,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;AACxE,CAAC;AAED,SAAS,qBAAqB,CAC1B,IAAoB,EACpB,QAAiC;IAEjC,IAAI,IAAI,YAAY,sCAAqB,EAAE,CAAC;QACxC,OAAO,4BAA4B,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IACxD,CAAC;IACD,OAAO,IAAI,CAAC;AAChB,CAAC;AAED,SAAS,4BAA4B,CACjC,UAAiC,EACjC,QAAiC;IAEjC,MAAM,SAAS,GAAG,UAAU,CAAC,SAAS;QAClC,CAAC,CAAC,wBAAwB,CAAC,UAAU,CAAC,SAAS,EAAE,QAAQ,CAAC;QAC1D,CAAC,CAAC,IAAI,CAAC;IACX,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,oBAAoB,CAAC,UAAU,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACzF,MAAM,SAAS,GAAG,UAAU,CAAC,SAAS;QAClC,CAAC,CAAC,sBAAsB,CAAC,UAAU,CAAC,SAAS,EAAE,QAAQ,CAAC;QACxD,CAAC,CAAC,IAAI,CAAC;IACX,OAAO,IAAI,sCAAqB,CAAC,SAAS,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;AAClE,CAAC;AAED,SAAS,wBAAwB,CAC7B,MAAyB,EACzB,QAAiC;IAEjC,MAAM,KAAK,GAAG,uCAAuC,CAAC,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IAC9E,OAAO,IAAI,0BAAiB,CAAC,KAAK,CAAC,CAAC;AACxC,CAAC;AAED,SAAS,sBAAsB,CAC3B,IAAqB,EACrB,QAAiC;IAEjC,MAAM,UAAU,GAAG,6BAA6B,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;IAC5E,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ;QAC1B,CAAC,CAAC,6BAA6B,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;QACxD,CAAC,CAAC,IAAI,CAAC;IACX,OAAO,IAAI,gCAAe,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;AACrE,CAAC;AAED,SAAS,6BAA6B,CAClC,KAA6B,EAC7B,QAAiC;IAEjC,IAAI,KAAK,YAAY,yCAAwB,EAAE,CAAC;QAC5C,MAAM,KAAK,GAAG,uCAAuC,CAAC,KAAK,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QAC7E,OAAO,IAAI,yCAAwB,CAAC,KAAK,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC;IAClE,CAAC;IACD,OAAO,KAAK,CAAC;AACjB,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAgB,EAAE,QAAiC;IACzE,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ;QAC3B,CAAC,CAAC,uCAAuC,CAAC,KAAK,CAAC,QAAQ,EAAE,QAAQ,CAAC;QACnE,CAAC,CAAC,IAAI,CAAC;IACX,OAAO,IAAI,0BAAS,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,aAAa,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AAC/E,CAAC"}
@@ -0,0 +1,73 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CharLookupTable = void 0;
4
+ /**
5
+ * Fast character classification utilities for SQL tokenization
6
+ */
7
+ class CharLookupTable {
8
+ static isWhitespace(char) {
9
+ if (char.length !== 1)
10
+ return false;
11
+ const code = char.charCodeAt(0);
12
+ // Check for space(32), tab(9), line feed(10), carriage return(13)
13
+ return code === 32 || code === 9 || code === 10 || code === 13;
14
+ }
15
+ static isDigit(char) {
16
+ if (char.length !== 1)
17
+ return false;
18
+ const code = char.charCodeAt(0);
19
+ // Check if within '0'(48) to '9'(57) range
20
+ return code >= 48 && code <= 57;
21
+ }
22
+ static isHexChar(char) {
23
+ if (char.length !== 1)
24
+ return false;
25
+ const code = char.charCodeAt(0);
26
+ // Check if '0'(48) to '9'(57) or 'a'(97) to 'f'(102) or 'A'(65) to 'F'(70)
27
+ return (code >= 48 && code <= 57) ||
28
+ (code >= 97 && code <= 102) ||
29
+ (code >= 65 && code <= 70);
30
+ }
31
+ static isOperatorSymbol(char) {
32
+ if (char.length !== 1)
33
+ return false;
34
+ const code = char.charCodeAt(0);
35
+ // Check for specific operator character codes
36
+ // '+'=43, '-'=45, '*'=42, '/'=47, '%'=37, '~'=126, '@'=64, '#'=35, '^'=94,
37
+ // '&'=38, ':'=58, '!'=33, '<'=60, '>'=62, '='=61, '|'=124, '?'=63
38
+ return code === 43 || code === 45 || code === 42 || code === 47 ||
39
+ code === 37 || code === 126 || code === 64 || code === 35 ||
40
+ code === 94 || code === 38 || code === 58 || code === 33 ||
41
+ code === 60 || code === 62 || code === 61 || code === 124 || code === 63;
42
+ }
43
+ static isDelimiter(char) {
44
+ if (char.length !== 1)
45
+ return false;
46
+ const code = char.charCodeAt(0);
47
+ // First check delimiters: '.'=46, ','=44, '('=40, ')'=41, '['=91, ']'=93, '{'=123, '}'=125, ';'=59
48
+ if (code === 46 || code === 44 || code === 40 || code === 41 ||
49
+ code === 91 || code === 93 || code === 123 || code === 125 || code === 59) {
50
+ return true;
51
+ }
52
+ // Then check for whitespace: ' '=32, '\t'=9, '\n'=10, '\r'=13
53
+ if (code === 32 || code === 9 || code === 10 || code === 13) {
54
+ return true;
55
+ }
56
+ // Finally check for operator symbols
57
+ // '+'=43, '-'=45, '*'=42, '/'=47, '%'=37, '~'=126, '@'=64, '#'=35, '^'=94,
58
+ // '&'=38, ':'=58, '!'=33, '<'=60, '>'=62, '='=61, '|'=124, '?'=63
59
+ return code === 43 || code === 45 || code === 42 || code === 47 ||
60
+ code === 37 || code === 126 || code === 64 || code === 35 ||
61
+ code === 94 || code === 38 || code === 58 || code === 33 ||
62
+ code === 60 || code === 62 || code === 61 || code === 124 || code === 63;
63
+ }
64
+ static isNamedParameterPrefix(char) {
65
+ if (char.length !== 1)
66
+ return false;
67
+ const code = char.charCodeAt(0);
68
+ // Check for parameter prefix characters: '@'=64, ':'=58, '$'=36
69
+ return code === 64 || code === 58 || code === 36;
70
+ }
71
+ }
72
+ exports.CharLookupTable = CharLookupTable;
73
+ //# sourceMappingURL=charLookupTable.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"charLookupTable.js","sourceRoot":"","sources":["../../src/utils/charLookupTable.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,230 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.StringUtils = void 0;
4
+ const charLookupTable_1 = require("./charLookupTable");
5
+ /**
6
+ * Utilities for string operations during tokenization
7
+ */
8
+ class StringUtils {
9
+ /**
10
+ * Creates a visual representation of an error position in text
11
+ * @param input The input text
12
+ * @param errPosition The error position
13
+ * @returns A string with a caret pointing to the error position
14
+ */
15
+ static getDebugPositionInfo(input, errPosition) {
16
+ // Get 5 characters before and after the error
17
+ // If the start and end points are out of the string range, keep them within the range
18
+ // Display ^ at the error position on the next line
19
+ const start = Math.max(0, errPosition - 5);
20
+ const end = Math.min(input.length, errPosition + 5);
21
+ const debugInfo = input.slice(start, end);
22
+ const caret = ' '.repeat(errPosition - start) + '^';
23
+ return `${debugInfo}\n${caret}`;
24
+ }
25
+ /**
26
+ * Skip white space characters.
27
+ */
28
+ static skipWhiteSpace(input, position) {
29
+ const length = input.length;
30
+ /*
31
+ * Optimization: Try to skip 4 spaces at once (for 4-space indents).
32
+ * This is effective when SQL is deeply nested and uses 4-space indentation.
33
+ * In typical cases, charCodeAt in a loop is fastest, but for large/indented SQL,
34
+ * this can reduce the number of iterations and improve stability (lower error/deviation in benchmarks).
35
+ * If indentation is not 4 spaces, this check is skipped quickly, so overhead is minimal.
36
+ *
37
+ * Even for 2-space indents or mixed indents (2, 4, tab),
38
+ * the remaining whitespace is handled by the following loop, so there is no performance loss.
39
+ *
40
+ * Benchmark results show that this optimization does not slow down short queries,
41
+ * and can make long/indented queries more stable and slightly faster.
42
+ */
43
+ while (position + 4 <= length && input.slice(position, position + 4) === ' ') {
44
+ position += 4;
45
+ }
46
+ // Then skip remaining whitespace one by one (space, tab, newline, carriage return)
47
+ while (position < length) {
48
+ const charCode = input.charCodeAt(position);
49
+ // ' '=32, '\t'=9, '\n'=10, '\r'=13
50
+ if (charCode !== 32 && charCode !== 9 && charCode !== 10 && charCode !== 13) {
51
+ break;
52
+ }
53
+ position++;
54
+ }
55
+ return position;
56
+ }
57
+ /**
58
+ * Skip line comment.
59
+ */
60
+ static readLineComment(input, position) {
61
+ if (position + 1 >= input.length) {
62
+ return { newPosition: position, comment: null };
63
+ }
64
+ // '-'=45
65
+ if (input.charCodeAt(position) === 45 && input.charCodeAt(position + 1) === 45) {
66
+ const start = position;
67
+ position += 2;
68
+ // '\n'=10
69
+ while (position < input.length && input.charCodeAt(position) !== 10) {
70
+ position++;
71
+ }
72
+ // Return the trimmed comment content (excluding -- tokens)
73
+ const comment = input.slice(start + 2, position).trim();
74
+ return { newPosition: position, comment };
75
+ }
76
+ return { newPosition: position, comment: null };
77
+ }
78
+ /**
79
+ * Skip block comment.
80
+ */
81
+ static readBlockComment(input, position) {
82
+ if (position + 1 >= input.length) {
83
+ return { newPosition: position, comments: null };
84
+ }
85
+ // Fast check for /* ('/'=47, '*'=42)
86
+ if (input.charCodeAt(position) !== 47 || input.charCodeAt(position + 1) !== 42) {
87
+ return { newPosition: position, comments: null };
88
+ }
89
+ // Treat Oracle style hints (/*+) as non-comment so other readers can process them. ('+'=43)
90
+ const isHint = position + 2 < input.length && input.charCodeAt(position + 2) === 43;
91
+ if (isHint) {
92
+ return { newPosition: position, comments: null };
93
+ }
94
+ const start = position;
95
+ position += 2;
96
+ while (position + 1 < input.length) {
97
+ // Look for closing */ ('*'/=42, '/'=47)
98
+ if (input.charCodeAt(position) === 42 && input.charCodeAt(position + 1) === 47) {
99
+ position += 2;
100
+ const processedLines = this.processBlockCommentContent(input.slice(start + 2, position - 2));
101
+ return { newPosition: position, comments: processedLines };
102
+ }
103
+ position++;
104
+ }
105
+ // Unterminated comment: consume rest of input and return collected lines.
106
+ const processedLinesUnterminated = this.processBlockCommentContent(input.slice(start + 2));
107
+ return { newPosition: input.length, comments: processedLinesUnterminated };
108
+ }
109
+ static processBlockCommentContent(rawContent) {
110
+ const rawLines = rawContent.replace(/\r/g, '').split('\n');
111
+ const processedLines = [];
112
+ for (const rawLine of rawLines) {
113
+ const trimmedLine = rawLine.trim();
114
+ const isSeparatorLine = /^\s*[-=_+*#]+\s*$/.test(rawLine);
115
+ if (trimmedLine !== '' || isSeparatorLine) {
116
+ processedLines.push(isSeparatorLine ? rawLine.trim() : trimmedLine);
117
+ }
118
+ else {
119
+ processedLines.push('');
120
+ }
121
+ }
122
+ while (processedLines.length > 0 && processedLines[0] === '') {
123
+ processedLines.shift();
124
+ }
125
+ while (processedLines.length > 0 && processedLines[processedLines.length - 1] === '') {
126
+ processedLines.pop();
127
+ }
128
+ return processedLines;
129
+ }
130
+ /**
131
+ * Skip white space characters and SQL comments.
132
+ * @returns Object containing the new position and an array of skipped comments
133
+ */
134
+ static readWhiteSpaceAndComment(input, position) {
135
+ let lines = null;
136
+ const length = input.length;
137
+ while (position < length) {
138
+ // Store current position
139
+ const oldPosition = position;
140
+ // Skip whitespace first
141
+ position = StringUtils.skipWhiteSpace(input, position);
142
+ if (position !== oldPosition) {
143
+ continue;
144
+ }
145
+ // Fast character code check
146
+ const charCode = input.charCodeAt(position);
147
+ // '-'=45 (Line comment)
148
+ if (charCode === 45) {
149
+ const lineCommentResult = StringUtils.readLineComment(input, position);
150
+ if (lineCommentResult.newPosition !== position) {
151
+ position = lineCommentResult.newPosition;
152
+ if (lineCommentResult.comment) {
153
+ if (lines === null) {
154
+ lines = [];
155
+ }
156
+ lines.push(lineCommentResult.comment.trim());
157
+ }
158
+ continue;
159
+ }
160
+ }
161
+ // '/'=47 (Block comment)
162
+ else if (charCode === 47) {
163
+ const blockCommentResult = StringUtils.readBlockComment(input, position);
164
+ if (blockCommentResult.newPosition !== position) {
165
+ position = blockCommentResult.newPosition;
166
+ if (blockCommentResult.comments) {
167
+ if (lines === null) {
168
+ lines = [];
169
+ }
170
+ lines.push(...blockCommentResult.comments);
171
+ }
172
+ continue;
173
+ }
174
+ }
175
+ // No more whitespace or comments found
176
+ break;
177
+ }
178
+ return { position, lines };
179
+ }
180
+ /**
181
+ * Read a regular identifier.
182
+ */
183
+ static readRegularIdentifier(input, position) {
184
+ const result = this.tryReadRegularIdentifier(input, position);
185
+ if (!result) {
186
+ throw new Error(`Unexpected character. position: ${position}\n${StringUtils.getDebugPositionInfo(input, position)}`);
187
+ }
188
+ return result;
189
+ }
190
+ static tryReadRegularIdentifier(input, position) {
191
+ const start = position;
192
+ while (position < input.length) {
193
+ if (charLookupTable_1.CharLookupTable.isDelimiter(input[position])) {
194
+ break;
195
+ }
196
+ position++;
197
+ }
198
+ if (start === position) {
199
+ return null;
200
+ }
201
+ // Check index range before checking for [] (array type)
202
+ // But don't include [] if it looks like array access rather than type declaration
203
+ while (position + 1 < input.length &&
204
+ input[position] === '[' &&
205
+ input[position + 1] === ']') {
206
+ // Check if this looks like array access context by looking at what comes before
207
+ // Array access context: after an expression/identifier that could be an array
208
+ // Type context: in type declarations, parameter lists, etc.
209
+ // Simple heuristic: if we're at the end of what looks like a variable/column name
210
+ // and not in a clear type context, treat [] as array access, not type suffix
211
+ const beforeIdentifier = input.slice(0, start).trim();
212
+ // Don't treat as type suffix if:
213
+ // 1. We're at the start of input (standalone identifier)
214
+ // 2. Previous context suggests this is a variable/column reference
215
+ if (beforeIdentifier === '' ||
216
+ /[)]$/.test(beforeIdentifier) || // After closing paren
217
+ /\b(select|from|where|and|or|set|values|insert|update|delete)\s*$/i.test(beforeIdentifier)) {
218
+ // This looks like array access context, don't include []
219
+ break;
220
+ }
221
+ position += 2; // Skip the [] (keep existing behavior for type contexts)
222
+ }
223
+ return {
224
+ identifier: input.slice(start, position),
225
+ newPosition: position
226
+ };
227
+ }
228
+ }
229
+ exports.StringUtils = StringUtils;
230
+ //# sourceMappingURL=stringUtils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stringUtils.js","sourceRoot":"","sources":["../../src/utils/stringUtils.ts"],"names":[],"mappings":";;;AAAA,uDAAoD;AAEpD;;GAEG;AACH,MAAa,WAAW;IACpB;;;;;OAKG;IACI,MAAM,CAAC,oBAAoB,CAAC,KAAa,EAAE,WAAmB;QACjE,8CAA8C;QAC9C,sFAAsF;QACtF,mDAAmD;QACnD,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,WAAW,GAAG,CAAC,CAAC,CAAC;QAC3C,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,WAAW,GAAG,CAAC,CAAC,CAAC;QACpD,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QAC1C,MAAM,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,WAAW,GAAG,KAAK,CAAC,GAAG,GAAG,CAAC;QACpD,OAAO,GAAG,SAAS,KAAK,KAAK,EAAE,CAAC;IACpC,CAAC;IAED;;OAEG;IACK,MAAM,CAAC,cAAc,CAAC,KAAa,EAAE,QAAgB;QACzD,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;QAE5B;;;;;;;;;;;;WAYG;QACH,OAAO,QAAQ,GAAG,CAAC,IAAI,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,QAAQ,EAAE,QAAQ,GAAG,CAAC,CAAC,KAAK,MAAM,EAAE,CAAC;YAC9E,QAAQ,IAAI,CAAC,CAAC;QAClB,CAAC;QAED,mFAAmF;QACnF,OAAO,QAAQ,GAAG,MAAM,EAAE,CAAC;YACvB,MAAM,QAAQ,GAAG,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;YAC5C,mCAAmC;YACnC,IAAI,QAAQ,KAAK,EAAE,IAAI,QAAQ,KAAK,CAAC,IAAI,QAAQ,KAAK,EAAE,IAAI,QAAQ,KAAK,EAAE,EAAE,CAAC;gBAC1E,MAAM;YACV,CAAC;YACD,QAAQ,EAAE,CAAC;QACf,CAAC;QAED,OAAO,QAAQ,CAAC;IACpB,CAAC;IAED;;OAEG;IACK,MAAM,CAAC,eAAe,CAAC,KAAa,EAAE,QAAgB;QAC1D,IAAI,QAAQ,GAAG,CAAC,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;YAC/B,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QACpD,CAAC;QAED,SAAS;QACT,IAAI,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,KAAK,CAAC,UAAU,CAAC,QAAQ,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC;YAC7E,MAAM,KAAK,GAAG,QAAQ,CAAC;YACvB,QAAQ,IAAI,CAAC,CAAC;YAEd,UAAU;YACV,OAAO,QAAQ,GAAG,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC;gBAClE,QAAQ,EAAE,CAAC;YACf,CAAC;YAED,2DAA2D;YAC3D,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,EAAE,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;YACxD,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;QAC9C,CAAC;QACD,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IACpD,CAAC;IAED;;OAEG;IACK,MAAM,CAAC,gBAAgB,CAAC,KAAa,EAAE,QAAgB;QAC3D,IAAI,QAAQ,GAAG,CAAC,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;YAC/B,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;QACrD,CAAC;QAED,qCAAqC;QACrC,IAAI,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,KAAK,CAAC,UAAU,CAAC,QAAQ,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC;YAC7E,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;QACrD,CAAC;QAED,4FAA4F;QAC5F,MAAM,MAAM,GAAG,QAAQ,GAAG,CAAC,GAAG,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,UAAU,CAAC,QAAQ,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;QACpF,IAAI,MAAM,EAAE,CAAC;YACT,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;QACrD,CAAC;QAED,MAAM,KAAK,GAAG,QAAQ,CAAC;QACvB,QAAQ,IAAI,CAAC,CAAC;QAEd,OAAO,QAAQ,GAAG,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;YACjC,wCAAwC;YACxC,IAAI,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,KAAK,CAAC,UAAU,CAAC,QAAQ,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC;gBAC7E,QAAQ,IAAI,CAAC,CAAC;gBACd,MAAM,cAAc,GAAG,IAAI,CAAC,0BAA0B,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,EAAE,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC;gBAC7F,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,cAAc,EAAE,CAAC;YAC/D,CAAC;YACD,QAAQ,EAAE,CAAC;QACf,CAAC;QAED,0EAA0E;QAC1E,MAAM,0BAA0B,GAAG,IAAI,CAAC,0BAA0B,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;QAC3F,OAAO,EAAE,WAAW,EAAE,KAAK,CAAC,MAAM,EAAE,QAAQ,EAAE,0BAA0B,EAAE,CAAC;IAC/E,CAAC;IAEO,MAAM,CAAC,0BAA0B,CAAC,UAAkB;QACxD,MAAM,QAAQ,GAAG,UAAU,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC3D,MAAM,cAAc,GAAa,EAAE,CAAC;QAEpC,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC7B,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;YACnC,MAAM,eAAe,GAAG,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAE1D,IAAI,WAAW,KAAK,EAAE,IAAI,eAAe,EAAE,CAAC;gBACxC,cAAc,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;YACxE,CAAC;iBAAM,CAAC;gBACJ,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC5B,CAAC;QACL,CAAC;QAED,OAAO,cAAc,CAAC,MAAM,GAAG,CAAC,IAAI,cAAc,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC;YAC3D,cAAc,CAAC,KAAK,EAAE,CAAC;QAC3B,CAAC;QACD,OAAO,cAAc,CAAC,MAAM,GAAG,CAAC,IAAI,cAAc,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC;YACnF,cAAc,CAAC,GAAG,EAAE,CAAC;QACzB,CAAC;QAED,OAAO,cAAc,CAAC;IAC1B,CAAC;IAED;;;OAGG;IACI,MAAM,CAAC,wBAAwB,CAAC,KAAa,EAAE,QAAgB;QAClE,IAAI,KAAK,GAAoB,IAAI,CAAC;QAClC,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;QAE5B,OAAO,QAAQ,GAAG,MAAM,EAAE,CAAC;YACvB,yBAAyB;YACzB,MAAM,WAAW,GAAG,QAAQ,CAAC;YAE7B,wBAAwB;YACxB,QAAQ,GAAG,WAAW,CAAC,cAAc,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;YACvD,IAAI,QAAQ,KAAK,WAAW,EAAE,CAAC;gBAC3B,SAAS;YACb,CAAC;YAED,4BAA4B;YAC5B,MAAM,QAAQ,GAAG,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;YAE5C,wBAAwB;YACxB,IAAI,QAAQ,KAAK,EAAE,EAAE,CAAC;gBAClB,MAAM,iBAAiB,GAAG,WAAW,CAAC,eAAe,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;gBACvE,IAAI,iBAAiB,CAAC,WAAW,KAAK,QAAQ,EAAE,CAAC;oBAC7C,QAAQ,GAAG,iBAAiB,CAAC,WAAW,CAAC;oBACzC,IAAI,iBAAiB,CAAC,OAAO,EAAE,CAAC;wBAC5B,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;4BACjB,KAAK,GAAG,EAAE,CAAC;wBACf,CAAC;wBACD,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;oBACjD,CAAC;oBACD,SAAS;gBACb,CAAC;YACL,CAAC;YACD,yBAAyB;iBACpB,IAAI,QAAQ,KAAK,EAAE,EAAE,CAAC;gBACvB,MAAM,kBAAkB,GAAG,WAAW,CAAC,gBAAgB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;gBACzE,IAAI,kBAAkB,CAAC,WAAW,KAAK,QAAQ,EAAE,CAAC;oBAC9C,QAAQ,GAAG,kBAAkB,CAAC,WAAW,CAAC;oBAC1C,IAAI,kBAAkB,CAAC,QAAQ,EAAE,CAAC;wBAC9B,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;4BACjB,KAAK,GAAG,EAAE,CAAC;wBACf,CAAC;wBACD,KAAK,CAAC,IAAI,CAAC,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAC;oBAC/C,CAAC;oBACD,SAAS;gBACb,CAAC;YACL,CAAC;YAED,uCAAuC;YACvC,MAAM;QACV,CAAC;QAED,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;IAC/B,CAAC;IAED;;OAEG;IACI,MAAM,CAAC,qBAAqB,CAAC,KAAa,EAAE,QAAgB;QAC/D,MAAM,MAAM,GAAG,IAAI,CAAC,wBAAwB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QAE9D,IAAI,CAAC,MAAM,EAAE,CAAC;YACV,MAAM,IAAI,KAAK,CAAC,mCAAmC,QAAQ,KAAK,WAAW,CAAC,oBAAoB,CAAC,KAAK,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC;QACzH,CAAC;QAED,OAAO,MAAM,CAAC;IAClB,CAAC;IAEM,MAAM,CAAC,wBAAwB,CAAC,KAAa,EAAE,QAAgB;QAClE,MAAM,KAAK,GAAG,QAAQ,CAAC;QAEvB,OAAO,QAAQ,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;YAC7B,IAAI,iCAAe,CAAC,WAAW,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC;gBAC/C,MAAM;YACV,CAAC;YACD,QAAQ,EAAE,CAAC;QACf,CAAC;QAED,IAAI,KAAK,KAAK,QAAQ,EAAE,CAAC;YACrB,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,wDAAwD;QACxD,kFAAkF;QAClF,OACI,QAAQ,GAAG,CAAC,GAAG,KAAK,CAAC,MAAM;YAC3B,KAAK,CAAC,QAAQ,CAAC,KAAK,GAAG;YACvB,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC,KAAK,GAAG,EAC7B,CAAC;YACC,gFAAgF;YAChF,8EAA8E;YAC9E,4DAA4D;YAE5D,kFAAkF;YAClF,6EAA6E;YAC7E,MAAM,gBAAgB,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;YAEtD,iCAAiC;YACjC,yDAAyD;YACzD,mEAAmE;YACnE,IAAI,gBAAgB,KAAK,EAAE;gBACvB,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAK,uBAAuB;gBACzD,mEAAmE,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC;gBAC7F,yDAAyD;gBACzD,MAAM;YACV,CAAC;YAED,QAAQ,IAAI,CAAC,CAAC,CAAC,yDAAyD;QAC5E,CAAC;QAED,OAAO;YACH,UAAU,EAAE,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,QAAQ,CAAC;YACxC,WAAW,EAAE,QAAQ;SACxB,CAAC;IACN,CAAC;CACJ;AAlQD,kCAkQC"}