rawsql-ts 0.1.0-beta.1 → 0.1.0-beta.10

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 (398) hide show
  1. package/README.md +179 -206
  2. package/dist/index.d.ts +13 -0
  3. package/dist/index.js +32 -0
  4. package/dist/index.js.map +1 -0
  5. package/dist/models/BinarySelectQuery.d.ts +91 -0
  6. package/dist/models/BinarySelectQuery.js +141 -0
  7. package/dist/models/BinarySelectQuery.js.map +1 -0
  8. package/dist/models/Clause.d.ts +189 -0
  9. package/dist/models/Clause.js +318 -0
  10. package/dist/models/Clause.js.map +1 -0
  11. package/dist/models/KeywordTrie.d.ts +11 -0
  12. package/dist/models/KeywordTrie.js +52 -0
  13. package/dist/models/KeywordTrie.js.map +1 -0
  14. package/dist/models/Lexeme.d.ts +25 -0
  15. package/dist/models/Lexeme.js +21 -0
  16. package/dist/models/Lexeme.js.map +1 -0
  17. package/dist/models/SelectQuery.d.ts +5 -0
  18. package/dist/models/SelectQuery.js +10 -0
  19. package/dist/models/SelectQuery.js.map +1 -0
  20. package/dist/models/SimpleSelectQuery.d.ts +167 -0
  21. package/dist/models/SimpleSelectQuery.js +292 -0
  22. package/dist/models/SimpleSelectQuery.js.map +1 -0
  23. package/dist/models/SqlComponent.d.ts +18 -0
  24. package/dist/models/SqlComponent.js +27 -0
  25. package/dist/models/SqlComponent.js.map +1 -0
  26. package/dist/models/ValueComponent.d.ts +158 -0
  27. package/dist/models/ValueComponent.js +250 -0
  28. package/dist/models/ValueComponent.js.map +1 -0
  29. package/dist/models/ValuesQuery.d.ts +10 -0
  30. package/dist/models/ValuesQuery.js +16 -0
  31. package/dist/models/ValuesQuery.js.map +1 -0
  32. package/dist/parsers/CommandExpressionParser.d.ts +15 -0
  33. package/dist/parsers/CommandExpressionParser.js +124 -0
  34. package/dist/parsers/CommandExpressionParser.js.map +1 -0
  35. package/dist/parsers/CommonTableParser.d.ts +9 -0
  36. package/dist/parsers/CommonTableParser.js +62 -0
  37. package/dist/parsers/CommonTableParser.js.map +1 -0
  38. package/dist/parsers/ForClauseParser.d.ts +9 -0
  39. package/dist/parsers/ForClauseParser.js +58 -0
  40. package/dist/parsers/ForClauseParser.js.map +1 -0
  41. package/dist/parsers/FromClauseParser.d.ts +9 -0
  42. package/dist/parsers/FromClauseParser.js +47 -0
  43. package/dist/parsers/FromClauseParser.js.map +1 -0
  44. package/dist/parsers/FunctionExpressionParser.d.ts +22 -0
  45. package/dist/parsers/FunctionExpressionParser.js +178 -0
  46. package/dist/parsers/FunctionExpressionParser.js.map +1 -0
  47. package/dist/parsers/GroupByParser.d.ts +10 -0
  48. package/dist/parsers/GroupByParser.js +58 -0
  49. package/dist/parsers/GroupByParser.js.map +1 -0
  50. package/dist/parsers/HavingParser.d.ts +9 -0
  51. package/dist/parsers/HavingParser.js +36 -0
  52. package/dist/parsers/HavingParser.js.map +1 -0
  53. package/dist/parsers/IdentifierParser.d.ts +8 -0
  54. package/dist/parsers/IdentifierParser.js +39 -0
  55. package/dist/parsers/IdentifierParser.js.map +1 -0
  56. package/dist/parsers/JoinClauseParser.d.ts +14 -0
  57. package/dist/parsers/JoinClauseParser.js +105 -0
  58. package/dist/parsers/JoinClauseParser.js.map +1 -0
  59. package/dist/parsers/KeywordParser.d.ts +17 -0
  60. package/dist/parsers/KeywordParser.js +91 -0
  61. package/dist/parsers/KeywordParser.js.map +1 -0
  62. package/dist/parsers/LimitClauseParser.d.ts +9 -0
  63. package/dist/parsers/LimitClauseParser.js +50 -0
  64. package/dist/parsers/LimitClauseParser.js.map +1 -0
  65. package/dist/parsers/LiteralParser.d.ts +8 -0
  66. package/dist/parsers/LiteralParser.js +38 -0
  67. package/dist/parsers/LiteralParser.js.map +1 -0
  68. package/dist/parsers/OrderByClauseParser.d.ts +10 -0
  69. package/dist/parsers/OrderByClauseParser.js +77 -0
  70. package/dist/parsers/OrderByClauseParser.js.map +1 -0
  71. package/dist/parsers/OverExpressionParser.d.ts +9 -0
  72. package/dist/parsers/OverExpressionParser.js +44 -0
  73. package/dist/parsers/OverExpressionParser.js.map +1 -0
  74. package/dist/parsers/ParameterExpressionParser.d.ts +8 -0
  75. package/dist/parsers/ParameterExpressionParser.js +15 -0
  76. package/dist/parsers/ParameterExpressionParser.js.map +1 -0
  77. package/dist/parsers/ParenExpressionParser.d.ts +8 -0
  78. package/dist/parsers/ParenExpressionParser.js +33 -0
  79. package/dist/parsers/ParenExpressionParser.js.map +1 -0
  80. package/dist/parsers/PartitionByParser.d.ts +9 -0
  81. package/dist/parsers/PartitionByParser.js +53 -0
  82. package/dist/parsers/PartitionByParser.js.map +1 -0
  83. package/dist/parsers/SelectClauseParser.d.ts +10 -0
  84. package/dist/parsers/SelectClauseParser.js +84 -0
  85. package/dist/parsers/SelectClauseParser.js.map +1 -0
  86. package/dist/parsers/SelectQueryParser.d.ts +13 -0
  87. package/dist/parsers/SelectQueryParser.js +153 -0
  88. package/dist/parsers/SelectQueryParser.js.map +1 -0
  89. package/dist/parsers/SourceAliasExpressionParser.d.ts +8 -0
  90. package/dist/parsers/SourceAliasExpressionParser.js +49 -0
  91. package/dist/parsers/SourceAliasExpressionParser.js.map +1 -0
  92. package/dist/parsers/SourceExpressionParser.d.ts +8 -0
  93. package/dist/parsers/SourceExpressionParser.js +35 -0
  94. package/dist/parsers/SourceExpressionParser.js.map +1 -0
  95. package/dist/parsers/SourceParser.d.ts +13 -0
  96. package/dist/parsers/SourceParser.js +119 -0
  97. package/dist/parsers/SourceParser.js.map +1 -0
  98. package/dist/parsers/SqlTokenizer.d.ts +64 -0
  99. package/dist/parsers/SqlTokenizer.js +174 -0
  100. package/dist/parsers/SqlTokenizer.js.map +1 -0
  101. package/dist/parsers/StringSpecifierExpressionParser.d.ts +8 -0
  102. package/dist/parsers/StringSpecifierExpressionParser.js +22 -0
  103. package/dist/parsers/StringSpecifierExpressionParser.js.map +1 -0
  104. package/dist/parsers/UnaryExpressionParser.d.ts +8 -0
  105. package/dist/parsers/UnaryExpressionParser.js +30 -0
  106. package/dist/parsers/UnaryExpressionParser.js.map +1 -0
  107. package/dist/parsers/ValueParser.d.ts +14 -0
  108. package/dist/parsers/ValueParser.js +136 -0
  109. package/dist/parsers/ValueParser.js.map +1 -0
  110. package/dist/parsers/ValuesQueryParser.d.ts +10 -0
  111. package/dist/parsers/ValuesQueryParser.js +86 -0
  112. package/dist/parsers/ValuesQueryParser.js.map +1 -0
  113. package/dist/parsers/WhereClauseParser.d.ts +9 -0
  114. package/dist/parsers/WhereClauseParser.js +36 -0
  115. package/dist/parsers/WhereClauseParser.js.map +1 -0
  116. package/dist/parsers/WindowClauseParser.d.ts +9 -0
  117. package/dist/parsers/WindowClauseParser.js +45 -0
  118. package/dist/parsers/WindowClauseParser.js.map +1 -0
  119. package/dist/parsers/WindowExpressionParser.d.ts +12 -0
  120. package/dist/parsers/WindowExpressionParser.js +163 -0
  121. package/dist/parsers/WindowExpressionParser.js.map +1 -0
  122. package/dist/parsers/WithClauseParser.d.ts +9 -0
  123. package/dist/parsers/WithClauseParser.js +57 -0
  124. package/dist/parsers/WithClauseParser.js.map +1 -0
  125. package/dist/tokenReaders/BaseTokenReader.d.ts +43 -0
  126. package/{.vs/CopilotSnapshots/02E79E48DFF5234787CB618DE990598A/48814CCF3E4E4B44A66AB8BC7D6CF6B6/A32D1DB906C73FA74EF270AAEE165FC0 → dist/tokenReaders/BaseTokenReader.js} +30 -34
  127. package/dist/tokenReaders/BaseTokenReader.js.map +1 -0
  128. package/dist/tokenReaders/CommandTokenReader.d.ts +7 -0
  129. package/dist/tokenReaders/CommandTokenReader.js +145 -0
  130. package/dist/tokenReaders/CommandTokenReader.js.map +1 -0
  131. package/dist/tokenReaders/FunctionTokenReader.d.ts +11 -0
  132. package/dist/tokenReaders/FunctionTokenReader.js +45 -0
  133. package/dist/tokenReaders/FunctionTokenReader.js.map +1 -0
  134. package/dist/tokenReaders/IdentifierTokenReader.d.ts +15 -0
  135. package/dist/tokenReaders/IdentifierTokenReader.js +70 -0
  136. package/dist/tokenReaders/IdentifierTokenReader.js.map +1 -0
  137. package/dist/tokenReaders/LiteralTokenReader.d.ts +23 -0
  138. package/dist/tokenReaders/LiteralTokenReader.js +189 -0
  139. package/dist/tokenReaders/LiteralTokenReader.js.map +1 -0
  140. package/dist/tokenReaders/OperatorTokenReader.d.ts +5 -0
  141. package/dist/tokenReaders/OperatorTokenReader.js +98 -0
  142. package/dist/tokenReaders/OperatorTokenReader.js.map +1 -0
  143. package/dist/tokenReaders/ParameterTokenReader.d.ts +11 -0
  144. package/dist/tokenReaders/ParameterTokenReader.js +44 -0
  145. package/dist/tokenReaders/ParameterTokenReader.js.map +1 -0
  146. package/dist/tokenReaders/StringSpecifierTokenReader.d.ts +8 -0
  147. package/dist/tokenReaders/StringSpecifierTokenReader.js +31 -0
  148. package/dist/tokenReaders/StringSpecifierTokenReader.js.map +1 -0
  149. package/dist/tokenReaders/SymbolTokenReader.d.ts +12 -0
  150. package/dist/tokenReaders/SymbolTokenReader.js +35 -0
  151. package/dist/tokenReaders/SymbolTokenReader.js.map +1 -0
  152. package/dist/tokenReaders/TokenReaderManager.d.ts +53 -0
  153. package/dist/tokenReaders/TokenReaderManager.js +110 -0
  154. package/dist/tokenReaders/TokenReaderManager.js.map +1 -0
  155. package/dist/tokenReaders/TypeTokenReader.d.ts +11 -0
  156. package/dist/tokenReaders/TypeTokenReader.js +59 -0
  157. package/dist/tokenReaders/TypeTokenReader.js.map +1 -0
  158. package/dist/transformers/CTEBuilder.d.ts +52 -0
  159. package/dist/transformers/CTEBuilder.js +188 -0
  160. package/dist/transformers/CTEBuilder.js.map +1 -0
  161. package/dist/transformers/CTECollector.d.ts +81 -0
  162. package/dist/transformers/CTECollector.js +384 -0
  163. package/dist/transformers/CTECollector.js.map +1 -0
  164. package/dist/transformers/CTEDisabler.d.ts +77 -0
  165. package/dist/transformers/CTEDisabler.js +325 -0
  166. package/dist/transformers/CTEDisabler.js.map +1 -0
  167. package/dist/transformers/CTEInjector.d.ts +40 -0
  168. package/dist/transformers/CTEInjector.js +83 -0
  169. package/dist/transformers/CTEInjector.js.map +1 -0
  170. package/dist/transformers/CTENormalizer.d.ts +25 -0
  171. package/dist/transformers/CTENormalizer.js +46 -0
  172. package/dist/transformers/CTENormalizer.js.map +1 -0
  173. package/dist/transformers/Formatter.d.ts +82 -0
  174. package/dist/transformers/Formatter.js +467 -0
  175. package/dist/transformers/Formatter.js.map +1 -0
  176. package/dist/transformers/QueryConverter.d.ts +41 -0
  177. package/dist/transformers/QueryConverter.js +119 -0
  178. package/dist/transformers/QueryConverter.js.map +1 -0
  179. package/dist/transformers/SelectValueCollector.d.ts +62 -0
  180. package/dist/transformers/SelectValueCollector.js +249 -0
  181. package/dist/transformers/SelectValueCollector.js.map +1 -0
  182. package/dist/transformers/SelectableColumnCollector.d.ts +70 -0
  183. package/dist/transformers/SelectableColumnCollector.js +308 -0
  184. package/dist/transformers/SelectableColumnCollector.js.map +1 -0
  185. package/dist/transformers/TableSourceCollector.d.ts +92 -0
  186. package/dist/transformers/TableSourceCollector.js +384 -0
  187. package/dist/transformers/TableSourceCollector.js.map +1 -0
  188. package/dist/transformers/UpstreamSelectQueryFinder.d.ts +27 -0
  189. package/dist/transformers/UpstreamSelectQueryFinder.js +129 -0
  190. package/dist/transformers/UpstreamSelectQueryFinder.js.map +1 -0
  191. package/dist/utils/charLookupTable.d.ts +11 -0
  192. package/dist/utils/charLookupTable.js +73 -0
  193. package/dist/utils/charLookupTable.js.map +1 -0
  194. package/dist/utils/stringUtils.d.ts +43 -0
  195. package/dist/utils/stringUtils.js +168 -0
  196. package/dist/utils/stringUtils.js.map +1 -0
  197. package/package.json +13 -7
  198. package/.vs/CopilotSnapshots/02E79E48DFF5234787CB618DE990598A/48814CCF3E4E4B44A66AB8BC7D6CF6B6/904140CF7EDF0C98AEA45F0D36062FE1 +0 -1
  199. package/.vs/CopilotSnapshots/02E79E48DFF5234787CB618DE990598A/48814CCF3E4E4B44A66AB8BC7D6CF6B6/E621434FB1D5415B14FBBCC11967E420 +0 -34
  200. package/.vs/CopilotSnapshots/02E79E48DFF5234787CB618DE990598A/48814CCF3E4E4B44A66AB8BC7D6CF6B6/EF71788BE39818EEA3F0164DC15E1BD7 +0 -170
  201. package/.vs/CopilotSnapshots/02E79E48DFF5234787CB618DE990598A/state.mpack +0 -1
  202. package/.vs/CopilotSnapshots/07B1013C385C5641A5F5100E0751210B/0C73C015B2C859419AFBD08BE1343FC0/BA5D2B145A59265D63FA3B3584344B02 +0 -236
  203. package/.vs/CopilotSnapshots/07B1013C385C5641A5F5100E0751210B/state.mpack +0 -1
  204. package/.vs/CopilotSnapshots/0D03762A9EA0CB4885F2114567F23F93/A9AF50781E77B849AA3262D2738D9338/1F95FD72006ED6E92629CEFD7B2C4FEC +0 -1
  205. package/.vs/CopilotSnapshots/0D03762A9EA0CB4885F2114567F23F93/A9AF50781E77B849AA3262D2738D9338/4CA7B9D3BC2D0A498DC0777EDA3F9B0F +0 -1
  206. package/.vs/CopilotSnapshots/0D03762A9EA0CB4885F2114567F23F93/A9AF50781E77B849AA3262D2738D9338/7B623BFBAEB4EB61A9585F0BC8039B06 +0 -19
  207. package/.vs/CopilotSnapshots/0D03762A9EA0CB4885F2114567F23F93/CA94452964F7A94B8ECE3B54EE21B50F/1F95FD72006ED6E92629CEFD7B2C4FEC +0 -5
  208. package/.vs/CopilotSnapshots/0D03762A9EA0CB4885F2114567F23F93/CA94452964F7A94B8ECE3B54EE21B50F/4CA7B9D3BC2D0A498DC0777EDA3F9B0F +0 -3
  209. package/.vs/CopilotSnapshots/0D03762A9EA0CB4885F2114567F23F93/CA94452964F7A94B8ECE3B54EE21B50F/7B623BFBAEB4EB61A9585F0BC8039B06 +0 -21
  210. package/.vs/CopilotSnapshots/0D03762A9EA0CB4885F2114567F23F93/state.mpack +0 -1
  211. package/.vs/CopilotSnapshots/10B71DC3C4C1C04E8602FA06D3925F98/23B181EB1228EF40ABCEF51E89FBF6E6/41035D2B1D57326B55F66372017E223A +0 -1
  212. package/.vs/CopilotSnapshots/10B71DC3C4C1C04E8602FA06D3925F98/23B181EB1228EF40ABCEF51E89FBF6E6/45EABF6EF6BDFAA58C941A29E98C9C83 +0 -113
  213. package/.vs/CopilotSnapshots/10B71DC3C4C1C04E8602FA06D3925F98/23B181EB1228EF40ABCEF51E89FBF6E6/748E0B8859CA1A5FDCA675C9E53B6D1C +0 -1
  214. package/.vs/CopilotSnapshots/10B71DC3C4C1C04E8602FA06D3925F98/23B181EB1228EF40ABCEF51E89FBF6E6/A250FF4AD59546A65FFDC6AA92A4698E +0 -1
  215. package/.vs/CopilotSnapshots/10B71DC3C4C1C04E8602FA06D3925F98/23B181EB1228EF40ABCEF51E89FBF6E6/C42432BC73D8AA122171FAB6EEB13CBC +0 -19
  216. package/.vs/CopilotSnapshots/10B71DC3C4C1C04E8602FA06D3925F98/state.mpack +0 -1
  217. package/.vs/CopilotSnapshots/13B40109875D434BB24880356492BE7E/828B96E81CC7014B887AA519767FACC3/437DAEC1EBBAF4F25ABA1B6A25EB6933 +0 -25
  218. package/.vs/CopilotSnapshots/13B40109875D434BB24880356492BE7E/state.mpack +0 -1
  219. package/.vs/CopilotSnapshots/245168908540D646ACBD4FDE8D6DD2D4/1CDE8BAB21868E4D893E119554BA87E5/904140CF7EDF0C98AEA45F0D36062FE1 +0 -63
  220. package/.vs/CopilotSnapshots/245168908540D646ACBD4FDE8D6DD2D4/1CDE8BAB21868E4D893E119554BA87E5/DFF70C60F68ECD9A4E4C3C74E4CC4DEE +0 -1
  221. package/.vs/CopilotSnapshots/245168908540D646ACBD4FDE8D6DD2D4/1CDE8BAB21868E4D893E119554BA87E5/EF71788BE39818EEA3F0164DC15E1BD7 +0 -170
  222. package/.vs/CopilotSnapshots/245168908540D646ACBD4FDE8D6DD2D4/state.mpack +0 -1
  223. package/.vs/CopilotSnapshots/3BACC9346120824DB30006E353477163/87C831E9EA1AA249A25A44D08CF8E0B5/EF71788BE39818EEA3F0164DC15E1BD7 +0 -328
  224. package/.vs/CopilotSnapshots/3BACC9346120824DB30006E353477163/state.mpack +0 -1
  225. package/.vs/CopilotSnapshots/3EFABA5D1530804CA04C606F5EFDDC38/14FE66AD0B834E488EECD9594AE72472/23E7151F0483C5BB5E663F83D4962FD4 +0 -1
  226. package/.vs/CopilotSnapshots/3EFABA5D1530804CA04C606F5EFDDC38/14FE66AD0B834E488EECD9594AE72472/2D4DCEBC89D52B097AEEEABA23C0EB59 +0 -1
  227. package/.vs/CopilotSnapshots/3EFABA5D1530804CA04C606F5EFDDC38/14FE66AD0B834E488EECD9594AE72472/7C951A8A572EA5C371FDE657AF968B9C +0 -1
  228. package/.vs/CopilotSnapshots/3EFABA5D1530804CA04C606F5EFDDC38/14FE66AD0B834E488EECD9594AE72472/A32D1DB906C73FA74EF270AAEE165FC0 +0 -1
  229. package/.vs/CopilotSnapshots/3EFABA5D1530804CA04C606F5EFDDC38/14FE66AD0B834E488EECD9594AE72472/B692C85119711C76235AA5D78F9F3818 +0 -1
  230. package/.vs/CopilotSnapshots/3EFABA5D1530804CA04C606F5EFDDC38/14FE66AD0B834E488EECD9594AE72472/E602628EF6D764C2C267810C92906DBA +0 -1
  231. package/.vs/CopilotSnapshots/3EFABA5D1530804CA04C606F5EFDDC38/14FE66AD0B834E488EECD9594AE72472/E621434FB1D5415B14FBBCC11967E420 +0 -1
  232. package/.vs/CopilotSnapshots/3EFABA5D1530804CA04C606F5EFDDC38/9C5A45FA50D5344FBB275F406599FF4E/23E7151F0483C5BB5E663F83D4962FD4 +0 -1
  233. package/.vs/CopilotSnapshots/3EFABA5D1530804CA04C606F5EFDDC38/9C5A45FA50D5344FBB275F406599FF4E/2D4DCEBC89D52B097AEEEABA23C0EB59 +0 -1
  234. package/.vs/CopilotSnapshots/3EFABA5D1530804CA04C606F5EFDDC38/9C5A45FA50D5344FBB275F406599FF4E/7C951A8A572EA5C371FDE657AF968B9C +0 -1
  235. package/.vs/CopilotSnapshots/3EFABA5D1530804CA04C606F5EFDDC38/9C5A45FA50D5344FBB275F406599FF4E/A32D1DB906C73FA74EF270AAEE165FC0 +0 -1
  236. package/.vs/CopilotSnapshots/3EFABA5D1530804CA04C606F5EFDDC38/9C5A45FA50D5344FBB275F406599FF4E/B692C85119711C76235AA5D78F9F3818 +0 -1
  237. package/.vs/CopilotSnapshots/3EFABA5D1530804CA04C606F5EFDDC38/9C5A45FA50D5344FBB275F406599FF4E/E602628EF6D764C2C267810C92906DBA +0 -1
  238. package/.vs/CopilotSnapshots/3EFABA5D1530804CA04C606F5EFDDC38/9C5A45FA50D5344FBB275F406599FF4E/E621434FB1D5415B14FBBCC11967E420 +0 -1
  239. package/.vs/CopilotSnapshots/3EFABA5D1530804CA04C606F5EFDDC38/9C5A45FA50D5344FBB275F406599FF4E/EF71788BE39818EEA3F0164DC15E1BD7 +0 -489
  240. package/.vs/CopilotSnapshots/3EFABA5D1530804CA04C606F5EFDDC38/state.mpack +0 -1
  241. package/.vs/CopilotSnapshots/4C16AB71DC018C46A734FBF0BF4AEDD9/0E5F1D40C0CAE848B8F9457F29A1F3FF/D03CD05B4F5C8B7C8CDF0B5E1961B3CA +0 -42
  242. package/.vs/CopilotSnapshots/4C16AB71DC018C46A734FBF0BF4AEDD9/462A64EF41A4BF42A18708B83E02FD6F/D03CD05B4F5C8B7C8CDF0B5E1961B3CA +0 -40
  243. package/.vs/CopilotSnapshots/4C16AB71DC018C46A734FBF0BF4AEDD9/90C95C12B91FA142BEF509B6FA329DE5/A3B20E10A19C7CA170132274D2F9312B +0 -9
  244. package/.vs/CopilotSnapshots/4C16AB71DC018C46A734FBF0BF4AEDD9/90C95C12B91FA142BEF509B6FA329DE5/D03CD05B4F5C8B7C8CDF0B5E1961B3CA +0 -1
  245. package/.vs/CopilotSnapshots/4C16AB71DC018C46A734FBF0BF4AEDD9/AD7513C9BBFE904AAB7F940397B95A99/D03CD05B4F5C8B7C8CDF0B5E1961B3CA +0 -42
  246. package/.vs/CopilotSnapshots/4C16AB71DC018C46A734FBF0BF4AEDD9/state.mpack +0 -1
  247. package/.vs/CopilotSnapshots/50E0417FAD2E524D887CB5763C2FB7B4/63A4C250D9DCE04B9F61D8833B89B5BF/EF71788BE39818EEA3F0164DC15E1BD7 +0 -174
  248. package/.vs/CopilotSnapshots/50E0417FAD2E524D887CB5763C2FB7B4/state.mpack +0 -1
  249. package/.vs/CopilotSnapshots/5EF2507B002AC14EA991043C37C36551/60FF68DE489DAD4FBCBBB54AA3F6A552/EF71788BE39818EEA3F0164DC15E1BD7 +0 -496
  250. package/.vs/CopilotSnapshots/5EF2507B002AC14EA991043C37C36551/state.mpack +0 -1
  251. package/.vs/CopilotSnapshots/6AA7610F1FB2B746821E54C28A8D109B/7FB78C0F8CB04F4AA6AF3315277B80F8/FB35DD13E708043D4CD8ACD54E14708F +0 -1
  252. package/.vs/CopilotSnapshots/6AA7610F1FB2B746821E54C28A8D109B/state.mpack +0 -1
  253. package/.vs/CopilotSnapshots/7F905F8BAC0DAD49BD507CA45C569AFD/5782E13CAB03A04E9E1EC5692F892170/BA5D2B145A59265D63FA3B3584344B02 +0 -5
  254. package/.vs/CopilotSnapshots/7F905F8BAC0DAD49BD507CA45C569AFD/5782E13CAB03A04E9E1EC5692F892170/EF71788BE39818EEA3F0164DC15E1BD7 +0 -158
  255. package/.vs/CopilotSnapshots/7F905F8BAC0DAD49BD507CA45C569AFD/9886598393C89944B51920C01EB650C9/BA5D2B145A59265D63FA3B3584344B02 +0 -35
  256. package/.vs/CopilotSnapshots/7F905F8BAC0DAD49BD507CA45C569AFD/state.mpack +0 -1
  257. package/.vs/CopilotSnapshots/8492D9C7A2D9514DB8A69D304B48BF3C/D2DA3C4E2131E84EA02E321802A65254/EF71788BE39818EEA3F0164DC15E1BD7 +0 -165
  258. package/.vs/CopilotSnapshots/8492D9C7A2D9514DB8A69D304B48BF3C/state.mpack +0 -1
  259. package/.vs/CopilotSnapshots/891A2DC0E5FA424CB8BDDA4FE26ED372/E244D49DDC79514DBA322770B03AE287/1CF9939611B0D194AC81951A171DF046 +0 -43
  260. package/.vs/CopilotSnapshots/891A2DC0E5FA424CB8BDDA4FE26ED372/state.mpack +0 -1
  261. package/.vs/CopilotSnapshots/8D302F8BAE46F54EA82AE1DED1A5D240/11E6D1F8E56D734F99C5216231273E8D/E621434FB1D5415B14FBBCC11967E420 +0 -66
  262. package/.vs/CopilotSnapshots/8D302F8BAE46F54EA82AE1DED1A5D240/24C69A83160FD844B0DEFECF8E1313DB/1CF9939611B0D194AC81951A171DF046 +0 -43
  263. package/.vs/CopilotSnapshots/8D302F8BAE46F54EA82AE1DED1A5D240/24C69A83160FD844B0DEFECF8E1313DB/E621434FB1D5415B14FBBCC11967E420 +0 -53
  264. package/.vs/CopilotSnapshots/8D302F8BAE46F54EA82AE1DED1A5D240/5E6D1BCD7CE81548AB445DE97505DC62/1CF9939611B0D194AC81951A171DF046 +0 -30
  265. package/.vs/CopilotSnapshots/8D302F8BAE46F54EA82AE1DED1A5D240/5E6D1BCD7CE81548AB445DE97505DC62/E621434FB1D5415B14FBBCC11967E420 +0 -53
  266. package/.vs/CopilotSnapshots/8D302F8BAE46F54EA82AE1DED1A5D240/EC4E81E0109C8F4BA1B5D9CFE1C122BC/E621434FB1D5415B14FBBCC11967E420 +0 -54
  267. package/.vs/CopilotSnapshots/8D302F8BAE46F54EA82AE1DED1A5D240/state.mpack +0 -1
  268. package/.vs/CopilotSnapshots/90C28D332F9B2949810126139FCA2640/6139F888FA743143B8E6C99306A478A6/30F913EA337870677E7C575773ECF531 +0 -130
  269. package/.vs/CopilotSnapshots/90C28D332F9B2949810126139FCA2640/F21743E379F9C1439F6A6405A289AA99/30F913EA337870677E7C575773ECF531 +0 -160
  270. package/.vs/CopilotSnapshots/90C28D332F9B2949810126139FCA2640/state.mpack +0 -1
  271. package/.vs/CopilotSnapshots/99E22E75C8AEDF4DB3A668A9ADF0BC43/2E2EFE66C5E05C4B809986E9B23D5409/45EABF6EF6BDFAA58C941A29E98C9C83 +0 -113
  272. package/.vs/CopilotSnapshots/99E22E75C8AEDF4DB3A668A9ADF0BC43/2E2EFE66C5E05C4B809986E9B23D5409/FB35DD13E708043D4CD8ACD54E14708F +0 -2
  273. package/.vs/CopilotSnapshots/99E22E75C8AEDF4DB3A668A9ADF0BC43/BE46916E3A8F2C4284792B951B674907/FB35DD13E708043D4CD8ACD54E14708F +0 -5
  274. package/.vs/CopilotSnapshots/99E22E75C8AEDF4DB3A668A9ADF0BC43/state.mpack +0 -1
  275. package/.vs/CopilotSnapshots/A6D99EA2D3819F45AD8087D7487F9318/state.mpack +0 -1
  276. package/.vs/CopilotSnapshots/A78C77F7A237704D95BCFE1BBC39FB0F/68BA9941941DC244BC799D89DB2BF86E/7C951A8A572EA5C371FDE657AF968B9C +0 -96
  277. package/.vs/CopilotSnapshots/A78C77F7A237704D95BCFE1BBC39FB0F/state.mpack +0 -1
  278. package/.vs/CopilotSnapshots/AD2203F1B9FECE44BB6D5DC5D83E87AA/734AB1B2974F9545B7F12AAA5842524B/840203FFA9CCF5B33DFD5C7CC5B13527 +0 -125
  279. package/.vs/CopilotSnapshots/AD2203F1B9FECE44BB6D5DC5D83E87AA/state.mpack +0 -1
  280. package/.vs/CopilotSnapshots/AEC950C2FAD20147AEE8E325E2CA0A78/89CF3F527D0687479D14274E8CDF3DFF/1CF9939611B0D194AC81951A171DF046 +0 -30
  281. package/.vs/CopilotSnapshots/AEC950C2FAD20147AEE8E325E2CA0A78/89CF3F527D0687479D14274E8CDF3DFF/BA5D2B145A59265D63FA3B3584344B02 +0 -158
  282. package/.vs/CopilotSnapshots/AEC950C2FAD20147AEE8E325E2CA0A78/E495EBF64DC77A4BBD470B92DB0391C4/1CF9939611B0D194AC81951A171DF046 +0 -30
  283. package/.vs/CopilotSnapshots/AEC950C2FAD20147AEE8E325E2CA0A78/E495EBF64DC77A4BBD470B92DB0391C4/BA5D2B145A59265D63FA3B3584344B02 +0 -67
  284. package/.vs/CopilotSnapshots/AEC950C2FAD20147AEE8E325E2CA0A78/state.mpack +0 -1
  285. package/.vs/CopilotSnapshots/AF947096A34634478C5D084B8442CD81/1FCDCC65B992954DB78BD1F46892312B/44EB81A1663981E3F52FFFECE3A2918E +0 -143
  286. package/.vs/CopilotSnapshots/AF947096A34634478C5D084B8442CD81/1FCDCC65B992954DB78BD1F46892312B/E602628EF6D764C2C267810C92906DBA +0 -253
  287. package/.vs/CopilotSnapshots/AF947096A34634478C5D084B8442CD81/state.mpack +0 -1
  288. package/.vs/CopilotSnapshots/B1DED422A45D5740BA4EE745C04B2B0B/226F822A22D6BD44BCF56BAA47FA274C/EF71788BE39818EEA3F0164DC15E1BD7 +0 -174
  289. package/.vs/CopilotSnapshots/B1DED422A45D5740BA4EE745C04B2B0B/state.mpack +0 -1
  290. package/.vs/CopilotSnapshots/B5DD5E50ACD0FD4998564F0FDE7FAEE0/97908D1D83AD2D4EA7082388DE07CBB4/44EB81A1663981E3F52FFFECE3A2918E +0 -148
  291. package/.vs/CopilotSnapshots/B5DD5E50ACD0FD4998564F0FDE7FAEE0/state.mpack +0 -1
  292. package/.vs/CopilotSnapshots/B8ADCAC0C19DB14FB8388BA59A86BC74/7ED3F1557FD7BE4DBEAF9B59FD442925/44EB81A1663981E3F52FFFECE3A2918E +0 -152
  293. package/.vs/CopilotSnapshots/B8ADCAC0C19DB14FB8388BA59A86BC74/state.mpack +0 -1
  294. package/.vs/CopilotSnapshots/BDFF50BBC1A93747A0001969C3BD195F/0130610530354840BB06BF4F4E744242/D03CD05B4F5C8B7C8CDF0B5E1961B3CA +0 -138
  295. package/.vs/CopilotSnapshots/BDFF50BBC1A93747A0001969C3BD195F/5F1C58CEFBAF1B4E80C4CF38B83A0A5F/D03CD05B4F5C8B7C8CDF0B5E1961B3CA +0 -129
  296. package/.vs/CopilotSnapshots/BDFF50BBC1A93747A0001969C3BD195F/BDC3D099FCCCC147848630670EED45CF/D03CD05B4F5C8B7C8CDF0B5E1961B3CA +0 -139
  297. package/.vs/CopilotSnapshots/BDFF50BBC1A93747A0001969C3BD195F/D9E2B1CDD1E2BB468E0703BEF6706FF6/D03CD05B4F5C8B7C8CDF0B5E1961B3CA +0 -139
  298. package/.vs/CopilotSnapshots/BDFF50BBC1A93747A0001969C3BD195F/state.mpack +0 -1
  299. package/.vs/CopilotSnapshots/C1E2C1A9C1DCFA46B1D5F1C6F36A152D/BC91C0FD38D8694BB992A8DEC1833670/148399016C7971F5592DAADBB9523118 +0 -120
  300. package/.vs/CopilotSnapshots/C1E2C1A9C1DCFA46B1D5F1C6F36A152D/state.mpack +0 -1
  301. package/.vs/CopilotSnapshots/C4D8E85893425E4F86F18850F5CA5C08/6C0950E97063C547A72D737E618436B0/1CF9939611B0D194AC81951A171DF046 +0 -9
  302. package/.vs/CopilotSnapshots/C4D8E85893425E4F86F18850F5CA5C08/6C0950E97063C547A72D737E618436B0/DFF70C60F68ECD9A4E4C3C74E4CC4DEE +0 -84
  303. package/.vs/CopilotSnapshots/C4D8E85893425E4F86F18850F5CA5C08/state.mpack +0 -1
  304. package/.vs/CopilotSnapshots/C5C3CA4C37B14A47B6BC753D09F69117/03EA1376F04C0D468FD0851119159D34/44EB81A1663981E3F52FFFECE3A2918E +0 -148
  305. package/.vs/CopilotSnapshots/C5C3CA4C37B14A47B6BC753D09F69117/03EA1376F04C0D468FD0851119159D34/E602628EF6D764C2C267810C92906DBA +0 -265
  306. package/.vs/CopilotSnapshots/C5C3CA4C37B14A47B6BC753D09F69117/6887503C15557349842029E58C9C0D11/44EB81A1663981E3F52FFFECE3A2918E +0 -152
  307. package/.vs/CopilotSnapshots/C5C3CA4C37B14A47B6BC753D09F69117/6887503C15557349842029E58C9C0D11/E602628EF6D764C2C267810C92906DBA +0 -265
  308. package/.vs/CopilotSnapshots/C5C3CA4C37B14A47B6BC753D09F69117/state.mpack +0 -1
  309. package/.vs/CopilotSnapshots/C7190BBC8D95D44F9CF8E65E3E8C9CFD/4B6D07592F8EDC4AA3FF742B1F9531CC/1B80EB15A2FEBEC11C8210C5461F8DB7 +0 -43
  310. package/.vs/CopilotSnapshots/C7190BBC8D95D44F9CF8E65E3E8C9CFD/state.mpack +0 -1
  311. package/.vs/CopilotSnapshots/C79D12964917E44F9A5BB9D8FA725A0C/2071ADB146D8F7499419123B2A595A41/03E00441128DC70FFEA043158417AC9A +0 -15
  312. package/.vs/CopilotSnapshots/C79D12964917E44F9A5BB9D8FA725A0C/6ECBF707FE2A88418EA1649CE46068D5/03E00441128DC70FFEA043158417AC9A +0 -1
  313. package/.vs/CopilotSnapshots/C79D12964917E44F9A5BB9D8FA725A0C/70BAB1D82B755F47A2351CA905ACC0F1/03E00441128DC70FFEA043158417AC9A +0 -49
  314. package/.vs/CopilotSnapshots/C79D12964917E44F9A5BB9D8FA725A0C/99DDFADAEC5CA14D92CC470523A11743/03E00441128DC70FFEA043158417AC9A +0 -39
  315. package/.vs/CopilotSnapshots/C79D12964917E44F9A5BB9D8FA725A0C/state.mpack +0 -1
  316. package/.vs/CopilotSnapshots/D533D78C39683A4188A2CEC902BC03CD/2445F4111C26EB4DA5404F930E140F56/840203FFA9CCF5B33DFD5C7CC5B13527 +0 -6
  317. package/.vs/CopilotSnapshots/D533D78C39683A4188A2CEC902BC03CD/2445F4111C26EB4DA5404F930E140F56/C27E5C1787B7957BF6F0C3D417890141 +0 -1
  318. package/.vs/CopilotSnapshots/D533D78C39683A4188A2CEC902BC03CD/state.mpack +0 -1
  319. package/.vs/CopilotSnapshots/DCAA5A718EC8304685D14C52356D80E0/5FC7C36C7769414C80BFF27A07BB5063/BE400B34D9700403D2BA3A1AA6B1EF1D +0 -15
  320. package/.vs/CopilotSnapshots/DCAA5A718EC8304685D14C52356D80E0/A4DD9B92084D8E48A95435EDB2B14545/86848C7099AD75EE4E8F10E066F49671 +0 -15
  321. package/.vs/CopilotSnapshots/DCAA5A718EC8304685D14C52356D80E0/A4DD9B92084D8E48A95435EDB2B14545/BE400B34D9700403D2BA3A1AA6B1EF1D +0 -15
  322. package/.vs/CopilotSnapshots/DCAA5A718EC8304685D14C52356D80E0/state.mpack +0 -1
  323. package/.vs/CopilotSnapshots/DCF62F751B748642A0BF5D5125AB6769/5F324CB20D1B5045A13090FA9D177B74/7C951A8A572EA5C371FDE657AF968B9C +0 -96
  324. package/.vs/CopilotSnapshots/DCF62F751B748642A0BF5D5125AB6769/5F324CB20D1B5045A13090FA9D177B74/B692C85119711C76235AA5D78F9F3818 +0 -73
  325. package/.vs/CopilotSnapshots/DCF62F751B748642A0BF5D5125AB6769/5F324CB20D1B5045A13090FA9D177B74/EF71788BE39818EEA3F0164DC15E1BD7 +0 -182
  326. package/.vs/CopilotSnapshots/DCF62F751B748642A0BF5D5125AB6769/C1287B2893D30D40A46C30DC2CE05178/7C951A8A572EA5C371FDE657AF968B9C +0 -96
  327. package/.vs/CopilotSnapshots/DCF62F751B748642A0BF5D5125AB6769/C1287B2893D30D40A46C30DC2CE05178/B692C85119711C76235AA5D78F9F3818 +0 -98
  328. package/.vs/CopilotSnapshots/DCF62F751B748642A0BF5D5125AB6769/CA6304DFE7764A4C87ACE5816CDB7CD9/7C951A8A572EA5C371FDE657AF968B9C +0 -96
  329. package/.vs/CopilotSnapshots/DCF62F751B748642A0BF5D5125AB6769/CA6304DFE7764A4C87ACE5816CDB7CD9/B692C85119711C76235AA5D78F9F3818 +0 -21
  330. package/.vs/CopilotSnapshots/DCF62F751B748642A0BF5D5125AB6769/CA6304DFE7764A4C87ACE5816CDB7CD9/EF71788BE39818EEA3F0164DC15E1BD7 +0 -176
  331. package/.vs/CopilotSnapshots/DCF62F751B748642A0BF5D5125AB6769/state.mpack +0 -1
  332. package/.vs/VSWorkspaceState.json +0 -6
  333. package/.vs/slnx.sqlite +0 -0
  334. package/.vs/ts-sample/CopilotIndices/17.13.433.20974/CodeChunks.db +0 -0
  335. package/.vs/ts-sample/CopilotIndices/17.13.433.20974/SemanticSymbols.db +0 -0
  336. package/.vs/ts-sample/CopilotIndices/17.13.439.2385/CodeChunks.db +0 -0
  337. package/.vs/ts-sample/CopilotIndices/17.13.439.2385/SemanticSymbols.db +0 -0
  338. package/.vs/ts-sample/CopilotIndices/17.13.441.19478/CodeChunks.db +0 -0
  339. package/.vs/ts-sample/CopilotIndices/17.13.441.19478/SemanticSymbols.db +0 -0
  340. package/.vs/ts-sample/FileContentIndex/2fa9d8cc-9158-496d-aa9b-3a471d46a157.vsidx +0 -0
  341. package/.vs/ts-sample/FileContentIndex/5530f45b-244e-4271-b3e3-d8250f03da64.vsidx +0 -0
  342. package/.vs/ts-sample/FileContentIndex/75f95b5d-c8f7-49ca-a3d7-d1d8f63db437.vsidx +0 -0
  343. package/.vs/ts-sample/FileContentIndex/abb2aeeb-f62a-4ca7-bfbf-7a1eada625a5.vsidx +0 -0
  344. package/.vs/ts-sample/FileContentIndex/fc749b54-0f95-45f6-ac75-a8ab3409a5ce.vsidx +0 -0
  345. package/.vs/ts-sample/config/applicationhost.config +0 -1026
  346. package/.vs/ts-sample/copilot-chat/3c67db7d/sessions/0901b413-5d87-4b43-b248-80356492be7e +0 -0
  347. package/.vs/ts-sample/copilot-chat/3c67db7d/sessions/0f61a76a-b21f-46b7-821e-54c28a8d109b +0 -0
  348. package/.vs/ts-sample/copilot-chat/3c67db7d/sessions/101aef14-dd28-4de3-b2eb-e0b26d587b3a +0 -0
  349. package/.vs/ts-sample/copilot-chat/3c67db7d/sessions/22d4deb1-5da4-4057-ba4e-e745c04b2b0b +0 -0
  350. package/.vs/ts-sample/copilot-chat/3c67db7d/sessions/2a76030d-a09e-48cb-85f2-114567f23f93 +0 -0
  351. package/.vs/ts-sample/copilot-chat/3c67db7d/sessions/2c6d08ca-cb98-4233-8f7c-011c3b409234 +0 -0
  352. package/.vs/ts-sample/copilot-chat/3c67db7d/sessions/338dc290-9b2f-4929-8101-26139fca2640 +0 -0
  353. package/.vs/ts-sample/copilot-chat/3c67db7d/sessions/34c9ac3b-2061-4d82-b300-06e353477163 +0 -0
  354. package/.vs/ts-sample/copilot-chat/3c67db7d/sessions/3c01b107-5c38-4156-a5f5-100e0751210b +0 -0
  355. package/.vs/ts-sample/copilot-chat/3c67db7d/sessions/489ee702-f5df-4723-87cb-618de990598a +0 -0
  356. package/.vs/ts-sample/copilot-chat/3c67db7d/sessions/4ccac3c5-b137-474a-b6bc-753d09f69117 +0 -0
  357. package/.vs/ts-sample/copilot-chat/3c67db7d/sessions/505eddb5-d0ac-49fd-9856-4f0fde7faee0 +0 -0
  358. package/.vs/ts-sample/copilot-chat/3c67db7d/sessions/58e8d8c4-4293-4f5e-86f1-8850f5ca5c08 +0 -0
  359. package/.vs/ts-sample/copilot-chat/3c67db7d/sessions/5dbafa3e-3015-4c80-a04c-606f5efddc38 +0 -0
  360. package/.vs/ts-sample/copilot-chat/3c67db7d/sessions/5f29f527-e43a-4661-b60e-ff772041f413 +0 -0
  361. package/.vs/ts-sample/copilot-chat/3c67db7d/sessions/6248dfd7-38ae-4fa6-9176-2fdc0694c3e8 +0 -0
  362. package/.vs/ts-sample/copilot-chat/3c67db7d/sessions/66fcbd64-32dc-436d-80e6-7435a1a3ecf1 +0 -0
  363. package/.vs/ts-sample/copilot-chat/3c67db7d/sessions/6f9ad733-d555-4d2c-b073-eb6a1aada347 +0 -0
  364. package/.vs/ts-sample/copilot-chat/3c67db7d/sessions/715aaadc-c88e-4630-85d1-4c52356d80e0 +0 -0
  365. package/.vs/ts-sample/copilot-chat/3c67db7d/sessions/71ab164c-01dc-468c-a734-fbf0bf4aedd9 +0 -0
  366. package/.vs/ts-sample/copilot-chat/3c67db7d/sessions/752ee299-aec8-4ddf-b3a6-68a9adf0bc43 +0 -0
  367. package/.vs/ts-sample/copilot-chat/3c67db7d/sessions/752ff6dc-741b-4286-a0bf-5d5125ab6769 +0 -0
  368. package/.vs/ts-sample/copilot-chat/3c67db7d/sessions/7b50f25e-2a00-4ec1-a991-043c37c36551 +0 -0
  369. package/.vs/ts-sample/copilot-chat/3c67db7d/sessions/7f41e050-2ead-4d52-887c-b5763c2fb7b4 +0 -0
  370. package/.vs/ts-sample/copilot-chat/3c67db7d/sessions/85b50c9e-8895-4085-89c1-934ad2704744 +0 -0
  371. package/.vs/ts-sample/copilot-chat/3c67db7d/sessions/8b2f308d-46ae-4ef5-a82a-e1ded1a5d240 +0 -0
  372. package/.vs/ts-sample/copilot-chat/3c67db7d/sessions/8b5f907f-0dac-49ad-bd50-7ca45c569afd +0 -0
  373. package/.vs/ts-sample/copilot-chat/3c67db7d/sessions/8cd733d5-6839-413a-88a2-cec902bc03cd +0 -0
  374. package/.vs/ts-sample/copilot-chat/3c67db7d/sessions/90685124-4085-46d6-acbd-4fde8d6dd2d4 +0 -0
  375. package/.vs/ts-sample/copilot-chat/3c67db7d/sessions/96129dc7-1749-4fe4-9a5b-b9d8fa725a0c +0 -0
  376. package/.vs/ts-sample/copilot-chat/3c67db7d/sessions/967094af-46a3-4734-8c5d-084b8442cd81 +0 -0
  377. package/.vs/ts-sample/copilot-chat/3c67db7d/sessions/a29ed9a6-81d3-459f-ad80-87d7487f9318 +0 -0
  378. package/.vs/ts-sample/copilot-chat/3c67db7d/sessions/a9c1e2c1-dcc1-46fa-b1d5-f1c6f36a152d +0 -0
  379. package/.vs/ts-sample/copilot-chat/3c67db7d/sessions/badc76f4-d284-4b6c-94e9-abdbc74de540 +0 -0
  380. package/.vs/ts-sample/copilot-chat/3c67db7d/sessions/bb50ffbd-a9c1-4737-a000-1969c3bd195f +0 -0
  381. package/.vs/ts-sample/copilot-chat/3c67db7d/sessions/bc0b19c7-958d-4fd4-9cf8-e65e3e8c9cfd +0 -0
  382. package/.vs/ts-sample/copilot-chat/3c67db7d/sessions/c02d1a89-fae5-4c42-b8bd-da4fe26ed372 +0 -0
  383. package/.vs/ts-sample/copilot-chat/3c67db7d/sessions/c0caadb8-9dc1-4fb1-b838-8ba59a86bc74 +0 -0
  384. package/.vs/ts-sample/copilot-chat/3c67db7d/sessions/c250c9ae-d2fa-4701-aee8-e325e2ca0a78 +0 -0
  385. package/.vs/ts-sample/copilot-chat/3c67db7d/sessions/c31db710-c1c4-4ec0-8602-fa06d3925f98 +0 -0
  386. package/.vs/ts-sample/copilot-chat/3c67db7d/sessions/c7d99284-d9a2-4d51-b8a6-9d304b48bf3c +0 -0
  387. package/.vs/ts-sample/copilot-chat/3c67db7d/sessions/ddd1fab4-4016-4cfc-bf9f-f4a85bdfc112 +0 -0
  388. package/.vs/ts-sample/copilot-chat/3c67db7d/sessions/f10322ad-feb9-44ce-bb6d-5dc5d83e87aa +0 -0
  389. package/.vs/ts-sample/copilot-chat/3c67db7d/sessions/f7778ca7-37a2-4d70-95bc-fe1bbc39fb0f +0 -0
  390. package/.vs/ts-sample/v17/.suo +0 -0
  391. package/.vs/ts-sample/v17/.wsuo +0 -0
  392. package/.vs/ts-sample/v17/DocumentLayout.backup.json +0 -425
  393. package/.vs/ts-sample/v17/DocumentLayout.json +0 -423
  394. package/.vs/ts-sample/v17/TestStore/0/000.testlog +0 -0
  395. package/.vs/ts-sample/v17/TestStore/0/testlog.manifest +0 -0
  396. package/dist/tsconfig.tsbuildinfo +0 -1
  397. package/dist/vitest.config.js +0 -15
  398. package/dist/vitest.config.js.map +0 -1
@@ -0,0 +1,64 @@
1
+ import { Lexeme } from '../models/Lexeme';
2
+ /**
3
+ * Class responsible for tokenizing SQL input.
4
+ */
5
+ export declare class SqlTokenizer {
6
+ /**
7
+ * The input SQL string to be tokenized.
8
+ */
9
+ private input;
10
+ /**
11
+ * Current position within the input string.
12
+ */
13
+ private position;
14
+ /**
15
+ * Manager responsible for handling token readers.
16
+ */
17
+ private readerManager;
18
+ /**
19
+ * Initializes a new instance of the SqlTokenizer.
20
+ */
21
+ constructor(input: string);
22
+ /**
23
+ * Checks if the end of input is reached.
24
+ *
25
+ * @param shift - The shift to consider beyond the current position.
26
+ * @returns True if the end of input is reached; otherwise, false.
27
+ */
28
+ private isEndOfInput;
29
+ /**
30
+ * Checks if more input can be read.
31
+ *
32
+ * @param shift - The shift to consider beyond the current position.
33
+ * @returns True if more input can be read; otherwise, false.
34
+ */
35
+ private canRead;
36
+ /**
37
+ * Reads the lexemes from the input string.
38
+ *
39
+ * @returns An array of lexemes extracted from the input string.
40
+ * @throws Error if an unexpected character is encountered.
41
+ */
42
+ readLexmes(): Lexeme[];
43
+ /**
44
+ * Adds pending comments to the last token.
45
+ */
46
+ private addPendingCommentsToLastToken;
47
+ /**
48
+ * Adds comments to the token.
49
+ */
50
+ private addCommentsToToken;
51
+ /**
52
+ * Skips whitespace characters and SQL comments in the input.
53
+ *
54
+ * @remarks This method updates the position pointer.
55
+ */
56
+ private readComment;
57
+ /**
58
+ * Gets debug information for error reporting.
59
+ *
60
+ * @param errPosition - The position where the error occurred.
61
+ * @returns A string containing the debug position information.
62
+ */
63
+ private getDebugPositionInfo;
64
+ }
@@ -0,0 +1,174 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SqlTokenizer = void 0;
4
+ const Lexeme_1 = require("../models/Lexeme");
5
+ const IdentifierTokenReader_1 = require("../tokenReaders/IdentifierTokenReader");
6
+ const LiteralTokenReader_1 = require("../tokenReaders/LiteralTokenReader");
7
+ const ParameterTokenReader_1 = require("../tokenReaders/ParameterTokenReader");
8
+ const SymbolTokenReader_1 = require("../tokenReaders/SymbolTokenReader");
9
+ const TokenReaderManager_1 = require("../tokenReaders/TokenReaderManager");
10
+ const OperatorTokenReader_1 = require("../tokenReaders/OperatorTokenReader");
11
+ const stringUtils_1 = require("../utils/stringUtils");
12
+ const CommandTokenReader_1 = require("../tokenReaders/CommandTokenReader");
13
+ const StringSpecifierTokenReader_1 = require("../tokenReaders/StringSpecifierTokenReader");
14
+ const FunctionTokenReader_1 = require("../tokenReaders/FunctionTokenReader");
15
+ const TypeTokenReader_1 = require("../tokenReaders/TypeTokenReader");
16
+ /**
17
+ * Class responsible for tokenizing SQL input.
18
+ */
19
+ class SqlTokenizer {
20
+ /**
21
+ * Initializes a new instance of the SqlTokenizer.
22
+ */
23
+ constructor(input) {
24
+ this.input = input;
25
+ this.position = 0;
26
+ // Initialize the token reader manager and register all readers
27
+ this.readerManager = new TokenReaderManager_1.TokenReaderManager(input)
28
+ .register(new ParameterTokenReader_1.ParameterTokenReader(input))
29
+ .register(new StringSpecifierTokenReader_1.StringSpecifierTokenReader(input))
30
+ // LiteralTokenReader should be registered before SpecialSymbolTokenReader and OperatorTokenReader
31
+ // Reason: To prevent numeric literals starting with a dot or sign from being misrecognized as operators
32
+ // e.g. `1.0` is a literal, not an operator
33
+ .register(new LiteralTokenReader_1.LiteralTokenReader(input))
34
+ .register(new SymbolTokenReader_1.SpecialSymbolTokenReader(input))
35
+ .register(new CommandTokenReader_1.CommandTokenReader(input))
36
+ .register(new OperatorTokenReader_1.OperatorTokenReader(input))
37
+ // TypeTokenReader should be registered before FunctionTokenReader
38
+ // Reason: To prevent types containing parentheses from being misrecognized as functions
39
+ // e.g. `numeric(10, 2)` is a type, not a function
40
+ .register(new TypeTokenReader_1.TypeTokenReader(input))
41
+ .register(new FunctionTokenReader_1.FunctionTokenReader(input))
42
+ .register(new IdentifierTokenReader_1.IdentifierTokenReader(input)) // IdentifierTokenReader should be registered last
43
+ ;
44
+ }
45
+ /**
46
+ * Checks if the end of input is reached.
47
+ *
48
+ * @param shift - The shift to consider beyond the current position.
49
+ * @returns True if the end of input is reached; otherwise, false.
50
+ */
51
+ isEndOfInput(shift = 0) {
52
+ return this.position + shift >= this.input.length;
53
+ }
54
+ /**
55
+ * Checks if more input can be read.
56
+ *
57
+ * @param shift - The shift to consider beyond the current position.
58
+ * @returns True if more input can be read; otherwise, false.
59
+ */
60
+ canRead(shift = 0) {
61
+ return !this.isEndOfInput(shift);
62
+ }
63
+ /**
64
+ * Reads the lexemes from the input string.
65
+ *
66
+ * @returns An array of lexemes extracted from the input string.
67
+ * @throws Error if an unexpected character is encountered.
68
+ */
69
+ readLexmes() {
70
+ // Pre-allocate array with estimated capacity for better performance
71
+ const estimatedTokens = Math.ceil(this.input.length / 8); // Assuming average token length of 8 chars
72
+ const lexemes = new Array(estimatedTokens);
73
+ let lexemeCount = 0;
74
+ // Read initial prefix comments
75
+ const comment = this.readComment();
76
+ let pendingComments = comment.lines;
77
+ this.position = comment.position;
78
+ // Track the previous token
79
+ let previous = null;
80
+ // Read tokens until the end of input is reached
81
+ while (this.canRead()) {
82
+ // Semicolon is a delimiter, so stop reading
83
+ if (this.input[this.position] === ';') {
84
+ break;
85
+ }
86
+ // Read using the token reader manager
87
+ const lexeme = this.readerManager.tryRead(this.position, previous);
88
+ if (lexeme === null) {
89
+ throw new Error(`Unexpected character. actual: ${this.input[this.position]}, position: ${this.position}\n${this.getDebugPositionInfo(this.position)}`);
90
+ }
91
+ // Update position
92
+ this.position = this.readerManager.getMaxPosition();
93
+ // Read suffix comments
94
+ const currentComment = this.readComment();
95
+ this.position = currentComment.position;
96
+ if (lexeme.type === Lexeme_1.TokenType.Comma || lexeme.type === Lexeme_1.TokenType.Operator) {
97
+ // Carry over comments after commas or operators
98
+ if (currentComment.lines.length > 0) {
99
+ pendingComments.push(...currentComment.lines);
100
+ }
101
+ }
102
+ else {
103
+ // Add comments to the current token if any
104
+ const hasComments = pendingComments.length > 0 || currentComment.lines.length > 0;
105
+ if (hasComments) {
106
+ this.addCommentsToToken(lexeme, pendingComments, currentComment.lines);
107
+ }
108
+ pendingComments = []; // Clear as they are processed
109
+ }
110
+ lexemes[lexemeCount++] = lexeme;
111
+ previous = lexeme;
112
+ }
113
+ // Add any pending comments to the last token
114
+ if (pendingComments.length > 0 && lexemeCount > 0) {
115
+ const lastToken = lexemes[lexemeCount - 1];
116
+ if (lastToken.comments === null) {
117
+ lastToken.comments = [];
118
+ }
119
+ lastToken.comments.push(...pendingComments);
120
+ }
121
+ // Trim the array to actual size used
122
+ return lexemeCount === estimatedTokens ? lexemes : lexemes.slice(0, lexemeCount);
123
+ }
124
+ /**
125
+ * Adds pending comments to the last token.
126
+ */
127
+ addPendingCommentsToLastToken(lexemes, pendingComments) {
128
+ if (pendingComments.length > 0 && lexemes.length > 0) {
129
+ const lastToken = lexemes[lexemes.length - 1];
130
+ if (lastToken.comments === null) {
131
+ lastToken.comments = [];
132
+ }
133
+ lastToken.comments.push(...pendingComments);
134
+ }
135
+ }
136
+ /**
137
+ * Adds comments to the token.
138
+ */
139
+ addCommentsToToken(lexeme, prefixComments, suffixComments) {
140
+ const hasComments = prefixComments.length > 0 || suffixComments.length > 0;
141
+ if (hasComments) {
142
+ if (lexeme.comments === null) {
143
+ lexeme.comments = [];
144
+ }
145
+ // Add prefix comments to the beginning.
146
+ if (prefixComments.length > 0) {
147
+ lexeme.comments.unshift(...prefixComments);
148
+ }
149
+ // Add suffix comments to the end.
150
+ if (suffixComments.length > 0) {
151
+ lexeme.comments.push(...suffixComments);
152
+ }
153
+ }
154
+ }
155
+ /**
156
+ * Skips whitespace characters and SQL comments in the input.
157
+ *
158
+ * @remarks This method updates the position pointer.
159
+ */
160
+ readComment() {
161
+ return stringUtils_1.StringUtils.readWhiteSpaceAndComment(this.input, this.position);
162
+ }
163
+ /**
164
+ * Gets debug information for error reporting.
165
+ *
166
+ * @param errPosition - The position where the error occurred.
167
+ * @returns A string containing the debug position information.
168
+ */
169
+ getDebugPositionInfo(errPosition) {
170
+ return stringUtils_1.StringUtils.getDebugPositionInfo(this.input, errPosition);
171
+ }
172
+ }
173
+ exports.SqlTokenizer = SqlTokenizer;
174
+ //# sourceMappingURL=SqlTokenizer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SqlTokenizer.js","sourceRoot":"","sources":["../../src/parsers/SqlTokenizer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import { Lexeme } from "../models/Lexeme";
2
+ import { ValueComponent } from "../models/ValueComponent";
3
+ export declare class StringSpecifierExpressionParser {
4
+ static parseFromLexeme(lexemes: Lexeme[], index: number): {
5
+ value: ValueComponent;
6
+ newIndex: number;
7
+ };
8
+ }
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.StringSpecifierExpressionParser = void 0;
4
+ const Lexeme_1 = require("../models/Lexeme");
5
+ const ValueComponent_1 = require("../models/ValueComponent");
6
+ class StringSpecifierExpressionParser {
7
+ static parseFromLexeme(lexemes, index) {
8
+ let idx = index;
9
+ const specifer = lexemes[idx].value;
10
+ idx++;
11
+ if (idx >= lexemes.length || lexemes[idx].type !== Lexeme_1.TokenType.Literal) {
12
+ throw new Error(`Expected string literal after string specifier at index ${idx}`);
13
+ }
14
+ const value = lexemes[idx].value;
15
+ idx++;
16
+ // Create StringSpecifierExpression
17
+ const result = new ValueComponent_1.StringSpecifierExpression(specifer, value);
18
+ return { value: result, newIndex: idx };
19
+ }
20
+ }
21
+ exports.StringSpecifierExpressionParser = StringSpecifierExpressionParser;
22
+ //# sourceMappingURL=StringSpecifierExpressionParser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StringSpecifierExpressionParser.js","sourceRoot":"","sources":["../../src/parsers/StringSpecifierExpressionParser.ts"],"names":[],"mappings":";;;AAAA,6CAAqD;AACrD,6DAAqF;AAErF,MAAa,+BAA+B;IACjC,MAAM,CAAC,eAAe,CAAC,OAAiB,EAAE,KAAa;QAC1D,IAAI,GAAG,GAAG,KAAK,CAAC;QAChB,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC;QACpC,GAAG,EAAE,CAAC;QACN,IAAI,GAAG,IAAI,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,kBAAS,CAAC,OAAO,EAAE,CAAC;YACnE,MAAM,IAAI,KAAK,CAAC,2DAA2D,GAAG,EAAE,CAAC,CAAC;QACtF,CAAC;QACD,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC;QACjC,GAAG,EAAE,CAAC;QACN,mCAAmC;QACnC,MAAM,MAAM,GAAG,IAAI,0CAAyB,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QAE9D,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC;IAC5C,CAAC;CACJ;AAfD,0EAeC"}
@@ -0,0 +1,8 @@
1
+ import { Lexeme } from "../models/Lexeme";
2
+ import { ValueComponent } from "../models/ValueComponent";
3
+ export declare class UnaryExpressionParser {
4
+ static parseFromLexeme(lexemes: Lexeme[], index: number): {
5
+ value: ValueComponent;
6
+ newIndex: number;
7
+ };
8
+ }
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.UnaryExpressionParser = void 0;
4
+ const Lexeme_1 = require("../models/Lexeme");
5
+ const ValueComponent_1 = require("../models/ValueComponent");
6
+ const ValueParser_1 = require("./ValueParser");
7
+ class UnaryExpressionParser {
8
+ static parseFromLexeme(lexemes, index) {
9
+ let idx = index;
10
+ // Process unary operator
11
+ if (idx < lexemes.length && lexemes[idx].type === Lexeme_1.TokenType.Operator) {
12
+ const operator = lexemes[idx].value;
13
+ idx++;
14
+ // Treat the asterisk as an Identifier, not as a unary operator
15
+ if (operator === '*') {
16
+ const v = new ValueComponent_1.ColumnReference(null, '*');
17
+ return { value: v, newIndex: idx };
18
+ }
19
+ // Get the right-hand side value of the unary operator
20
+ const result = ValueParser_1.ValueParser.parseFromLexeme(lexemes, idx);
21
+ idx = result.newIndex;
22
+ // Create unary expression
23
+ const value = new ValueComponent_1.UnaryExpression(operator, result.value);
24
+ return { value, newIndex: idx };
25
+ }
26
+ throw new Error(`Invalid unary expression at index ${index}: ${lexemes[index].value}`);
27
+ }
28
+ }
29
+ exports.UnaryExpressionParser = UnaryExpressionParser;
30
+ //# sourceMappingURL=UnaryExpressionParser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UnaryExpressionParser.js","sourceRoot":"","sources":["../../src/parsers/UnaryExpressionParser.ts"],"names":[],"mappings":";;;AAAA,6CAAqD;AACrD,6DAA8G;AAC9G,+CAA4C;AAE5C,MAAa,qBAAqB;IACvB,MAAM,CAAC,eAAe,CAAC,OAAiB,EAAE,KAAa;QAC1D,IAAI,GAAG,GAAG,KAAK,CAAC;QAEhB,yBAAyB;QACzB,IAAI,GAAG,GAAG,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,kBAAS,CAAC,QAAQ,EAAE,CAAC;YACnE,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC;YACpC,GAAG,EAAE,CAAC;YAEN,+DAA+D;YAC/D,IAAI,QAAQ,KAAK,GAAG,EAAE,CAAC;gBACnB,MAAM,CAAC,GAAG,IAAI,gCAAe,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;gBACzC,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC;YACvC,CAAC;YAED,sDAAsD;YACtD,MAAM,MAAM,GAAG,yBAAW,CAAC,eAAe,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;YACzD,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC;YAEtB,0BAA0B;YAC1B,MAAM,KAAK,GAAG,IAAI,gCAAe,CAAC,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;YAC1D,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC;QACpC,CAAC;QAED,MAAM,IAAI,KAAK,CAAC,qCAAqC,KAAK,KAAK,OAAO,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;IAC3F,CAAC;CACJ;AA1BD,sDA0BC"}
@@ -0,0 +1,14 @@
1
+ import { Lexeme, TokenType } from "../models/Lexeme";
2
+ import { ValueComponent } from "../models/ValueComponent";
3
+ export declare class ValueParser {
4
+ static parse(query: string): ValueComponent;
5
+ static parseFromLexeme(lexemes: Lexeme[], index: number, allowAndOperator?: boolean): {
6
+ value: ValueComponent;
7
+ newIndex: number;
8
+ };
9
+ private static parseItem;
10
+ static parseArgument(openToken: TokenType, closeToken: TokenType, lexemes: Lexeme[], index: number): {
11
+ value: ValueComponent;
12
+ newIndex: number;
13
+ };
14
+ }
@@ -0,0 +1,136 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ValueParser = void 0;
4
+ const Lexeme_1 = require("../models/Lexeme");
5
+ const ValueComponent_1 = require("../models/ValueComponent");
6
+ const SqlTokenizer_1 = require("./SqlTokenizer");
7
+ const IdentifierParser_1 = require("./IdentifierParser");
8
+ const LiteralParser_1 = require("./LiteralParser");
9
+ const ParenExpressionParser_1 = require("./ParenExpressionParser");
10
+ const UnaryExpressionParser_1 = require("./UnaryExpressionParser");
11
+ const ParameterExpressionParser_1 = require("./ParameterExpressionParser");
12
+ const StringSpecifierExpressionParser_1 = require("./StringSpecifierExpressionParser");
13
+ const CommandExpressionParser_1 = require("./CommandExpressionParser");
14
+ const FunctionExpressionParser_1 = require("./FunctionExpressionParser");
15
+ class ValueParser {
16
+ // Parse SQL string to AST (was: parse)
17
+ static parse(query) {
18
+ const tokenizer = new SqlTokenizer_1.SqlTokenizer(query); // Initialize tokenizer
19
+ const lexemes = tokenizer.readLexmes(); // Get tokens
20
+ // Parse
21
+ const result = this.parseFromLexeme(lexemes, 0);
22
+ // Error if there are remaining tokens
23
+ if (result.newIndex < lexemes.length) {
24
+ throw new Error(`Unexpected token at index ${result.newIndex}: ${lexemes[result.newIndex].value}`);
25
+ }
26
+ return result.value;
27
+ }
28
+ // Parse from lexeme array (was: parse)
29
+ static parseFromLexeme(lexemes, index, allowAndOperator = true) {
30
+ let idx = index;
31
+ // support comments
32
+ const comment = lexemes[index].comments;
33
+ const left = this.parseItem(lexemes, index);
34
+ left.value.comments = comment;
35
+ idx = left.newIndex;
36
+ while (idx < lexemes.length && lexemes[idx].type === Lexeme_1.TokenType.Operator) {
37
+ const binaryResult = FunctionExpressionParser_1.FunctionExpressionParser.tryParseBinaryExpression(lexemes, idx, left.value, allowAndOperator);
38
+ if (binaryResult) {
39
+ left.value = binaryResult.value;
40
+ idx = binaryResult.newIndex;
41
+ }
42
+ else {
43
+ // If no binary expression is found, break the loop
44
+ break;
45
+ }
46
+ }
47
+ return { value: left.value, newIndex: idx };
48
+ }
49
+ static parseItem(lexemes, index) {
50
+ let idx = index;
51
+ // Range check
52
+ if (idx >= lexemes.length) {
53
+ throw new Error(`Unexpected end of lexemes at index ${index}`);
54
+ }
55
+ const current = lexemes[idx];
56
+ if (current.type === Lexeme_1.TokenType.Identifier) {
57
+ return IdentifierParser_1.IdentifierParser.parseFromLexeme(lexemes, idx);
58
+ }
59
+ else if (current.type === Lexeme_1.TokenType.Literal) {
60
+ return LiteralParser_1.LiteralParser.parseFromLexeme(lexemes, idx);
61
+ }
62
+ else if (current.type === Lexeme_1.TokenType.OpenParen) {
63
+ return ParenExpressionParser_1.ParenExpressionParser.parseFromLexeme(lexemes, idx);
64
+ }
65
+ else if (current.type === Lexeme_1.TokenType.Function) {
66
+ return FunctionExpressionParser_1.FunctionExpressionParser.parseFromLexeme(lexemes, idx);
67
+ }
68
+ else if (current.type === Lexeme_1.TokenType.Operator) {
69
+ return UnaryExpressionParser_1.UnaryExpressionParser.parseFromLexeme(lexemes, idx);
70
+ }
71
+ else if (current.type === Lexeme_1.TokenType.Parameter) {
72
+ return ParameterExpressionParser_1.ParameterExpressionParser.parseFromLexeme(lexemes, idx);
73
+ }
74
+ else if (current.type === Lexeme_1.TokenType.StringSpecifier) {
75
+ return StringSpecifierExpressionParser_1.StringSpecifierExpressionParser.parseFromLexeme(lexemes, idx);
76
+ }
77
+ else if (current.type === Lexeme_1.TokenType.Command) {
78
+ return CommandExpressionParser_1.CommandExpressionParser.parseFromLexeme(lexemes, idx);
79
+ }
80
+ throw new Error(`Invalid lexeme. index: ${idx}, type: ${lexemes[idx].type}, value: ${lexemes[idx].value}`);
81
+ }
82
+ static parseArgument(openToken, closeToken, lexemes, index) {
83
+ let idx = index;
84
+ const args = [];
85
+ // Check for opening parenthesis
86
+ if (idx < lexemes.length && lexemes[idx].type === openToken) {
87
+ idx++;
88
+ if (idx < lexemes.length && lexemes[idx].type === closeToken) {
89
+ // If there are no arguments, return an empty ValueList
90
+ idx++;
91
+ return { value: new ValueComponent_1.ValueList([]), newIndex: idx };
92
+ }
93
+ // If the next element is `*`, treat `*` as an Identifier
94
+ if (idx < lexemes.length && lexemes[idx].value === "*") {
95
+ const wildcard = new ValueComponent_1.ColumnReference(null, "*");
96
+ idx++;
97
+ // The next element must be closeToken
98
+ if (idx < lexemes.length && lexemes[idx].type === closeToken) {
99
+ idx++;
100
+ return { value: wildcard, newIndex: idx };
101
+ }
102
+ else {
103
+ throw new Error(`Expected closing parenthesis at index ${idx}`);
104
+ }
105
+ }
106
+ // Parse the value inside
107
+ const result = this.parseFromLexeme(lexemes, idx);
108
+ idx = result.newIndex;
109
+ args.push(result.value);
110
+ // Continue reading if the next element is a comma
111
+ while (idx < lexemes.length && lexemes[idx].type === Lexeme_1.TokenType.Comma) {
112
+ idx++;
113
+ const argResult = this.parseFromLexeme(lexemes, idx);
114
+ idx = argResult.newIndex;
115
+ args.push(argResult.value);
116
+ }
117
+ // Check for closing parenthesis
118
+ if (idx < lexemes.length && lexemes[idx].type === closeToken) {
119
+ idx++;
120
+ if (args.length === 1) {
121
+ // Return as is if there is only one argument
122
+ return { value: args[0], newIndex: idx };
123
+ }
124
+ // Create ValueCollection if there are multiple arguments
125
+ const value = new ValueComponent_1.ValueList(args);
126
+ return { value, newIndex: idx };
127
+ }
128
+ else {
129
+ throw new Error(`Missing closing parenthesis at index ${idx}`);
130
+ }
131
+ }
132
+ throw new Error(`Expected opening parenthesis at index ${index}`);
133
+ }
134
+ }
135
+ exports.ValueParser = ValueParser;
136
+ //# sourceMappingURL=ValueParser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ValueParser.js","sourceRoot":"","sources":["../../src/parsers/ValueParser.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import { Lexeme } from "../models/Lexeme";
2
+ import { ValuesQuery } from "../models/SelectQuery";
3
+ export declare class ValuesQueryParser {
4
+ static parse(query: string): ValuesQuery;
5
+ static parseFromLexeme(lexemes: Lexeme[], index: number): {
6
+ value: ValuesQuery;
7
+ newIndex: number;
8
+ };
9
+ private static parseTuple;
10
+ }
@@ -0,0 +1,86 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ValuesQueryParser = void 0;
4
+ const Lexeme_1 = require("../models/Lexeme");
5
+ const SelectQuery_1 = require("../models/SelectQuery");
6
+ const ValueComponent_1 = require("../models/ValueComponent");
7
+ const SqlTokenizer_1 = require("./SqlTokenizer");
8
+ const ValueParser_1 = require("./ValueParser");
9
+ class ValuesQueryParser {
10
+ static parse(query) {
11
+ const tokenizer = new SqlTokenizer_1.SqlTokenizer(query); // Initialize tokenizer
12
+ const lexemes = tokenizer.readLexmes(); // Get tokens
13
+ // Parse
14
+ const result = this.parseFromLexeme(lexemes, 0);
15
+ // Error if there are remaining tokens
16
+ if (result.newIndex < lexemes.length) {
17
+ throw new Error(`Syntax error: Unexpected token "${lexemes[result.newIndex].value}" at position ${result.newIndex}. The VALUES clause is complete but there are additional tokens.`);
18
+ }
19
+ return result.value;
20
+ }
21
+ static parseFromLexeme(lexemes, index) {
22
+ let idx = index;
23
+ if (lexemes[idx].value.toLowerCase() !== 'values') {
24
+ throw new Error(`Syntax error at position ${idx}: Expected 'VALUES' keyword but found "${lexemes[idx].value}". VALUES clauses must start with the VALUES keyword.`);
25
+ }
26
+ idx++;
27
+ if (idx >= lexemes.length) {
28
+ throw new Error(`Syntax error: Unexpected end of input after 'VALUES' keyword. The VALUES clause requires at least one tuple expression.`);
29
+ }
30
+ const tuples = [];
31
+ // Parse the first tuple
32
+ const firstTuple = this.parseTuple(lexemes, idx);
33
+ tuples.push(firstTuple.value);
34
+ idx = firstTuple.newIndex;
35
+ // Parse additional tuples if they exist
36
+ while (idx < lexemes.length && lexemes[idx].type === Lexeme_1.TokenType.Comma) {
37
+ idx++; // Skip comma
38
+ const tuple = this.parseTuple(lexemes, idx);
39
+ tuples.push(tuple.value);
40
+ idx = tuple.newIndex;
41
+ }
42
+ const query = new SelectQuery_1.ValuesQuery(tuples);
43
+ return { value: query, newIndex: idx };
44
+ }
45
+ static parseTuple(lexemes, index) {
46
+ let idx = index;
47
+ // Check for opening parenthesis
48
+ if (idx >= lexemes.length || lexemes[idx].type !== Lexeme_1.TokenType.OpenParen) {
49
+ throw new Error(`Syntax error at position ${idx}: Expected opening parenthesis but found "${idx < lexemes.length ? lexemes[idx].value : "end of input"}". Tuple expressions in VALUES clause must be enclosed in parentheses.`);
50
+ }
51
+ idx++;
52
+ // Parse values inside the tuple
53
+ const values = [];
54
+ // Parse first value
55
+ if (idx >= lexemes.length) {
56
+ throw new Error(`Syntax error: Unexpected end of input after opening parenthesis in tuple expression.`);
57
+ }
58
+ // Check for empty tuple case
59
+ if (lexemes[idx].type === Lexeme_1.TokenType.CloseParen) {
60
+ idx++; // Skip closing parenthesis
61
+ return { value: new ValueComponent_1.TupleExpression([]), newIndex: idx };
62
+ }
63
+ // Parse the first value
64
+ const firstValue = ValueParser_1.ValueParser.parseFromLexeme(lexemes, idx);
65
+ values.push(firstValue.value);
66
+ idx = firstValue.newIndex;
67
+ // Parse additional values
68
+ while (idx < lexemes.length && lexemes[idx].type === Lexeme_1.TokenType.Comma) {
69
+ idx++; // Skip comma
70
+ if (idx >= lexemes.length) {
71
+ throw new Error(`Syntax error: Unexpected end of input after comma in tuple expression.`);
72
+ }
73
+ const value = ValueParser_1.ValueParser.parseFromLexeme(lexemes, idx);
74
+ values.push(value.value);
75
+ idx = value.newIndex;
76
+ }
77
+ // Check for closing parenthesis
78
+ if (idx >= lexemes.length || lexemes[idx].type !== Lexeme_1.TokenType.CloseParen) {
79
+ throw new Error(`Syntax error at position ${idx}: Expected closing parenthesis but found "${idx < lexemes.length ? lexemes[idx].value : "end of input"}". Tuple expressions in VALUES clause must be enclosed in parentheses.`);
80
+ }
81
+ idx++; // Skip closing parenthesis
82
+ return { value: new ValueComponent_1.TupleExpression(values), newIndex: idx };
83
+ }
84
+ }
85
+ exports.ValuesQueryParser = ValuesQueryParser;
86
+ //# sourceMappingURL=ValuesQueryParser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ValuesQueryParser.js","sourceRoot":"","sources":["../../src/parsers/ValuesQueryParser.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import { WhereClause } from "../models/Clause";
2
+ import { Lexeme } from "../models/Lexeme";
3
+ export declare class WhereClauseParser {
4
+ static parse(query: string): WhereClause;
5
+ static parseFromLexeme(lexemes: Lexeme[], index: number): {
6
+ value: WhereClause;
7
+ newIndex: number;
8
+ };
9
+ }
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.WhereClauseParser = void 0;
4
+ const Clause_1 = require("../models/Clause");
5
+ const SqlTokenizer_1 = require("./SqlTokenizer");
6
+ const ValueParser_1 = require("./ValueParser");
7
+ class WhereClauseParser {
8
+ // Parse SQL string to AST (was: parse)
9
+ static parse(query) {
10
+ const tokenizer = new SqlTokenizer_1.SqlTokenizer(query); // Initialize tokenizer
11
+ const lexemes = tokenizer.readLexmes(); // Get tokens
12
+ // Parse
13
+ const result = this.parseFromLexeme(lexemes, 0);
14
+ // Error if there are remaining tokens
15
+ if (result.newIndex < lexemes.length) {
16
+ throw new Error(`Syntax error: Unexpected token "${lexemes[result.newIndex].value}" at position ${result.newIndex}. The WHERE clause is complete but there are additional tokens.`);
17
+ }
18
+ return result.value;
19
+ }
20
+ // Parse from lexeme array (was: parse)
21
+ static parseFromLexeme(lexemes, index) {
22
+ let idx = index;
23
+ if (lexemes[idx].value !== 'where') {
24
+ throw new Error(`Syntax error at position ${idx}: Expected 'WHERE' keyword but found "${lexemes[idx].value}". WHERE clauses must start with the WHERE keyword.`);
25
+ }
26
+ idx++;
27
+ if (idx >= lexemes.length) {
28
+ throw new Error(`Syntax error: Unexpected end of input after 'WHERE' keyword. The WHERE clause requires a condition expression.`);
29
+ }
30
+ const item = ValueParser_1.ValueParser.parseFromLexeme(lexemes, idx);
31
+ const clause = new Clause_1.WhereClause(item.value);
32
+ return { value: clause, newIndex: item.newIndex };
33
+ }
34
+ }
35
+ exports.WhereClauseParser = WhereClauseParser;
36
+ //# sourceMappingURL=WhereClauseParser.js.map