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

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 (401) hide show
  1. package/README.md +194 -252
  2. package/dist/index.d.ts +14 -0
  3. package/dist/index.js +33 -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 +60 -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/TableColumnResolver.d.ts +10 -0
  186. package/dist/transformers/TableColumnResolver.js +3 -0
  187. package/dist/transformers/TableColumnResolver.js.map +1 -0
  188. package/dist/transformers/TableSourceCollector.d.ts +92 -0
  189. package/dist/transformers/TableSourceCollector.js +384 -0
  190. package/dist/transformers/TableSourceCollector.js.map +1 -0
  191. package/dist/transformers/UpstreamSelectQueryFinder.d.ts +27 -0
  192. package/dist/transformers/UpstreamSelectQueryFinder.js +129 -0
  193. package/dist/transformers/UpstreamSelectQueryFinder.js.map +1 -0
  194. package/dist/utils/charLookupTable.d.ts +11 -0
  195. package/dist/utils/charLookupTable.js +73 -0
  196. package/dist/utils/charLookupTable.js.map +1 -0
  197. package/dist/utils/stringUtils.d.ts +43 -0
  198. package/dist/utils/stringUtils.js +168 -0
  199. package/dist/utils/stringUtils.js.map +1 -0
  200. package/package.json +18 -7
  201. package/.vs/CopilotSnapshots/02E79E48DFF5234787CB618DE990598A/48814CCF3E4E4B44A66AB8BC7D6CF6B6/904140CF7EDF0C98AEA45F0D36062FE1 +0 -1
  202. package/.vs/CopilotSnapshots/02E79E48DFF5234787CB618DE990598A/48814CCF3E4E4B44A66AB8BC7D6CF6B6/E621434FB1D5415B14FBBCC11967E420 +0 -34
  203. package/.vs/CopilotSnapshots/02E79E48DFF5234787CB618DE990598A/48814CCF3E4E4B44A66AB8BC7D6CF6B6/EF71788BE39818EEA3F0164DC15E1BD7 +0 -170
  204. package/.vs/CopilotSnapshots/02E79E48DFF5234787CB618DE990598A/state.mpack +0 -1
  205. package/.vs/CopilotSnapshots/07B1013C385C5641A5F5100E0751210B/0C73C015B2C859419AFBD08BE1343FC0/BA5D2B145A59265D63FA3B3584344B02 +0 -236
  206. package/.vs/CopilotSnapshots/07B1013C385C5641A5F5100E0751210B/state.mpack +0 -1
  207. package/.vs/CopilotSnapshots/0D03762A9EA0CB4885F2114567F23F93/A9AF50781E77B849AA3262D2738D9338/1F95FD72006ED6E92629CEFD7B2C4FEC +0 -1
  208. package/.vs/CopilotSnapshots/0D03762A9EA0CB4885F2114567F23F93/A9AF50781E77B849AA3262D2738D9338/4CA7B9D3BC2D0A498DC0777EDA3F9B0F +0 -1
  209. package/.vs/CopilotSnapshots/0D03762A9EA0CB4885F2114567F23F93/A9AF50781E77B849AA3262D2738D9338/7B623BFBAEB4EB61A9585F0BC8039B06 +0 -19
  210. package/.vs/CopilotSnapshots/0D03762A9EA0CB4885F2114567F23F93/CA94452964F7A94B8ECE3B54EE21B50F/1F95FD72006ED6E92629CEFD7B2C4FEC +0 -5
  211. package/.vs/CopilotSnapshots/0D03762A9EA0CB4885F2114567F23F93/CA94452964F7A94B8ECE3B54EE21B50F/4CA7B9D3BC2D0A498DC0777EDA3F9B0F +0 -3
  212. package/.vs/CopilotSnapshots/0D03762A9EA0CB4885F2114567F23F93/CA94452964F7A94B8ECE3B54EE21B50F/7B623BFBAEB4EB61A9585F0BC8039B06 +0 -21
  213. package/.vs/CopilotSnapshots/0D03762A9EA0CB4885F2114567F23F93/state.mpack +0 -1
  214. package/.vs/CopilotSnapshots/10B71DC3C4C1C04E8602FA06D3925F98/23B181EB1228EF40ABCEF51E89FBF6E6/41035D2B1D57326B55F66372017E223A +0 -1
  215. package/.vs/CopilotSnapshots/10B71DC3C4C1C04E8602FA06D3925F98/23B181EB1228EF40ABCEF51E89FBF6E6/45EABF6EF6BDFAA58C941A29E98C9C83 +0 -113
  216. package/.vs/CopilotSnapshots/10B71DC3C4C1C04E8602FA06D3925F98/23B181EB1228EF40ABCEF51E89FBF6E6/748E0B8859CA1A5FDCA675C9E53B6D1C +0 -1
  217. package/.vs/CopilotSnapshots/10B71DC3C4C1C04E8602FA06D3925F98/23B181EB1228EF40ABCEF51E89FBF6E6/A250FF4AD59546A65FFDC6AA92A4698E +0 -1
  218. package/.vs/CopilotSnapshots/10B71DC3C4C1C04E8602FA06D3925F98/23B181EB1228EF40ABCEF51E89FBF6E6/C42432BC73D8AA122171FAB6EEB13CBC +0 -19
  219. package/.vs/CopilotSnapshots/10B71DC3C4C1C04E8602FA06D3925F98/state.mpack +0 -1
  220. package/.vs/CopilotSnapshots/13B40109875D434BB24880356492BE7E/828B96E81CC7014B887AA519767FACC3/437DAEC1EBBAF4F25ABA1B6A25EB6933 +0 -25
  221. package/.vs/CopilotSnapshots/13B40109875D434BB24880356492BE7E/state.mpack +0 -1
  222. package/.vs/CopilotSnapshots/245168908540D646ACBD4FDE8D6DD2D4/1CDE8BAB21868E4D893E119554BA87E5/904140CF7EDF0C98AEA45F0D36062FE1 +0 -63
  223. package/.vs/CopilotSnapshots/245168908540D646ACBD4FDE8D6DD2D4/1CDE8BAB21868E4D893E119554BA87E5/DFF70C60F68ECD9A4E4C3C74E4CC4DEE +0 -1
  224. package/.vs/CopilotSnapshots/245168908540D646ACBD4FDE8D6DD2D4/1CDE8BAB21868E4D893E119554BA87E5/EF71788BE39818EEA3F0164DC15E1BD7 +0 -170
  225. package/.vs/CopilotSnapshots/245168908540D646ACBD4FDE8D6DD2D4/state.mpack +0 -1
  226. package/.vs/CopilotSnapshots/3BACC9346120824DB30006E353477163/87C831E9EA1AA249A25A44D08CF8E0B5/EF71788BE39818EEA3F0164DC15E1BD7 +0 -328
  227. package/.vs/CopilotSnapshots/3BACC9346120824DB30006E353477163/state.mpack +0 -1
  228. package/.vs/CopilotSnapshots/3EFABA5D1530804CA04C606F5EFDDC38/14FE66AD0B834E488EECD9594AE72472/23E7151F0483C5BB5E663F83D4962FD4 +0 -1
  229. package/.vs/CopilotSnapshots/3EFABA5D1530804CA04C606F5EFDDC38/14FE66AD0B834E488EECD9594AE72472/2D4DCEBC89D52B097AEEEABA23C0EB59 +0 -1
  230. package/.vs/CopilotSnapshots/3EFABA5D1530804CA04C606F5EFDDC38/14FE66AD0B834E488EECD9594AE72472/7C951A8A572EA5C371FDE657AF968B9C +0 -1
  231. package/.vs/CopilotSnapshots/3EFABA5D1530804CA04C606F5EFDDC38/14FE66AD0B834E488EECD9594AE72472/A32D1DB906C73FA74EF270AAEE165FC0 +0 -1
  232. package/.vs/CopilotSnapshots/3EFABA5D1530804CA04C606F5EFDDC38/14FE66AD0B834E488EECD9594AE72472/B692C85119711C76235AA5D78F9F3818 +0 -1
  233. package/.vs/CopilotSnapshots/3EFABA5D1530804CA04C606F5EFDDC38/14FE66AD0B834E488EECD9594AE72472/E602628EF6D764C2C267810C92906DBA +0 -1
  234. package/.vs/CopilotSnapshots/3EFABA5D1530804CA04C606F5EFDDC38/14FE66AD0B834E488EECD9594AE72472/E621434FB1D5415B14FBBCC11967E420 +0 -1
  235. package/.vs/CopilotSnapshots/3EFABA5D1530804CA04C606F5EFDDC38/9C5A45FA50D5344FBB275F406599FF4E/23E7151F0483C5BB5E663F83D4962FD4 +0 -1
  236. package/.vs/CopilotSnapshots/3EFABA5D1530804CA04C606F5EFDDC38/9C5A45FA50D5344FBB275F406599FF4E/2D4DCEBC89D52B097AEEEABA23C0EB59 +0 -1
  237. package/.vs/CopilotSnapshots/3EFABA5D1530804CA04C606F5EFDDC38/9C5A45FA50D5344FBB275F406599FF4E/7C951A8A572EA5C371FDE657AF968B9C +0 -1
  238. package/.vs/CopilotSnapshots/3EFABA5D1530804CA04C606F5EFDDC38/9C5A45FA50D5344FBB275F406599FF4E/A32D1DB906C73FA74EF270AAEE165FC0 +0 -1
  239. package/.vs/CopilotSnapshots/3EFABA5D1530804CA04C606F5EFDDC38/9C5A45FA50D5344FBB275F406599FF4E/B692C85119711C76235AA5D78F9F3818 +0 -1
  240. package/.vs/CopilotSnapshots/3EFABA5D1530804CA04C606F5EFDDC38/9C5A45FA50D5344FBB275F406599FF4E/E602628EF6D764C2C267810C92906DBA +0 -1
  241. package/.vs/CopilotSnapshots/3EFABA5D1530804CA04C606F5EFDDC38/9C5A45FA50D5344FBB275F406599FF4E/E621434FB1D5415B14FBBCC11967E420 +0 -1
  242. package/.vs/CopilotSnapshots/3EFABA5D1530804CA04C606F5EFDDC38/9C5A45FA50D5344FBB275F406599FF4E/EF71788BE39818EEA3F0164DC15E1BD7 +0 -489
  243. package/.vs/CopilotSnapshots/3EFABA5D1530804CA04C606F5EFDDC38/state.mpack +0 -1
  244. package/.vs/CopilotSnapshots/4C16AB71DC018C46A734FBF0BF4AEDD9/0E5F1D40C0CAE848B8F9457F29A1F3FF/D03CD05B4F5C8B7C8CDF0B5E1961B3CA +0 -42
  245. package/.vs/CopilotSnapshots/4C16AB71DC018C46A734FBF0BF4AEDD9/462A64EF41A4BF42A18708B83E02FD6F/D03CD05B4F5C8B7C8CDF0B5E1961B3CA +0 -40
  246. package/.vs/CopilotSnapshots/4C16AB71DC018C46A734FBF0BF4AEDD9/90C95C12B91FA142BEF509B6FA329DE5/A3B20E10A19C7CA170132274D2F9312B +0 -9
  247. package/.vs/CopilotSnapshots/4C16AB71DC018C46A734FBF0BF4AEDD9/90C95C12B91FA142BEF509B6FA329DE5/D03CD05B4F5C8B7C8CDF0B5E1961B3CA +0 -1
  248. package/.vs/CopilotSnapshots/4C16AB71DC018C46A734FBF0BF4AEDD9/AD7513C9BBFE904AAB7F940397B95A99/D03CD05B4F5C8B7C8CDF0B5E1961B3CA +0 -42
  249. package/.vs/CopilotSnapshots/4C16AB71DC018C46A734FBF0BF4AEDD9/state.mpack +0 -1
  250. package/.vs/CopilotSnapshots/50E0417FAD2E524D887CB5763C2FB7B4/63A4C250D9DCE04B9F61D8833B89B5BF/EF71788BE39818EEA3F0164DC15E1BD7 +0 -174
  251. package/.vs/CopilotSnapshots/50E0417FAD2E524D887CB5763C2FB7B4/state.mpack +0 -1
  252. package/.vs/CopilotSnapshots/5EF2507B002AC14EA991043C37C36551/60FF68DE489DAD4FBCBBB54AA3F6A552/EF71788BE39818EEA3F0164DC15E1BD7 +0 -496
  253. package/.vs/CopilotSnapshots/5EF2507B002AC14EA991043C37C36551/state.mpack +0 -1
  254. package/.vs/CopilotSnapshots/6AA7610F1FB2B746821E54C28A8D109B/7FB78C0F8CB04F4AA6AF3315277B80F8/FB35DD13E708043D4CD8ACD54E14708F +0 -1
  255. package/.vs/CopilotSnapshots/6AA7610F1FB2B746821E54C28A8D109B/state.mpack +0 -1
  256. package/.vs/CopilotSnapshots/7F905F8BAC0DAD49BD507CA45C569AFD/5782E13CAB03A04E9E1EC5692F892170/BA5D2B145A59265D63FA3B3584344B02 +0 -5
  257. package/.vs/CopilotSnapshots/7F905F8BAC0DAD49BD507CA45C569AFD/5782E13CAB03A04E9E1EC5692F892170/EF71788BE39818EEA3F0164DC15E1BD7 +0 -158
  258. package/.vs/CopilotSnapshots/7F905F8BAC0DAD49BD507CA45C569AFD/9886598393C89944B51920C01EB650C9/BA5D2B145A59265D63FA3B3584344B02 +0 -35
  259. package/.vs/CopilotSnapshots/7F905F8BAC0DAD49BD507CA45C569AFD/state.mpack +0 -1
  260. package/.vs/CopilotSnapshots/8492D9C7A2D9514DB8A69D304B48BF3C/D2DA3C4E2131E84EA02E321802A65254/EF71788BE39818EEA3F0164DC15E1BD7 +0 -165
  261. package/.vs/CopilotSnapshots/8492D9C7A2D9514DB8A69D304B48BF3C/state.mpack +0 -1
  262. package/.vs/CopilotSnapshots/891A2DC0E5FA424CB8BDDA4FE26ED372/E244D49DDC79514DBA322770B03AE287/1CF9939611B0D194AC81951A171DF046 +0 -43
  263. package/.vs/CopilotSnapshots/891A2DC0E5FA424CB8BDDA4FE26ED372/state.mpack +0 -1
  264. package/.vs/CopilotSnapshots/8D302F8BAE46F54EA82AE1DED1A5D240/11E6D1F8E56D734F99C5216231273E8D/E621434FB1D5415B14FBBCC11967E420 +0 -66
  265. package/.vs/CopilotSnapshots/8D302F8BAE46F54EA82AE1DED1A5D240/24C69A83160FD844B0DEFECF8E1313DB/1CF9939611B0D194AC81951A171DF046 +0 -43
  266. package/.vs/CopilotSnapshots/8D302F8BAE46F54EA82AE1DED1A5D240/24C69A83160FD844B0DEFECF8E1313DB/E621434FB1D5415B14FBBCC11967E420 +0 -53
  267. package/.vs/CopilotSnapshots/8D302F8BAE46F54EA82AE1DED1A5D240/5E6D1BCD7CE81548AB445DE97505DC62/1CF9939611B0D194AC81951A171DF046 +0 -30
  268. package/.vs/CopilotSnapshots/8D302F8BAE46F54EA82AE1DED1A5D240/5E6D1BCD7CE81548AB445DE97505DC62/E621434FB1D5415B14FBBCC11967E420 +0 -53
  269. package/.vs/CopilotSnapshots/8D302F8BAE46F54EA82AE1DED1A5D240/EC4E81E0109C8F4BA1B5D9CFE1C122BC/E621434FB1D5415B14FBBCC11967E420 +0 -54
  270. package/.vs/CopilotSnapshots/8D302F8BAE46F54EA82AE1DED1A5D240/state.mpack +0 -1
  271. package/.vs/CopilotSnapshots/90C28D332F9B2949810126139FCA2640/6139F888FA743143B8E6C99306A478A6/30F913EA337870677E7C575773ECF531 +0 -130
  272. package/.vs/CopilotSnapshots/90C28D332F9B2949810126139FCA2640/F21743E379F9C1439F6A6405A289AA99/30F913EA337870677E7C575773ECF531 +0 -160
  273. package/.vs/CopilotSnapshots/90C28D332F9B2949810126139FCA2640/state.mpack +0 -1
  274. package/.vs/CopilotSnapshots/99E22E75C8AEDF4DB3A668A9ADF0BC43/2E2EFE66C5E05C4B809986E9B23D5409/45EABF6EF6BDFAA58C941A29E98C9C83 +0 -113
  275. package/.vs/CopilotSnapshots/99E22E75C8AEDF4DB3A668A9ADF0BC43/2E2EFE66C5E05C4B809986E9B23D5409/FB35DD13E708043D4CD8ACD54E14708F +0 -2
  276. package/.vs/CopilotSnapshots/99E22E75C8AEDF4DB3A668A9ADF0BC43/BE46916E3A8F2C4284792B951B674907/FB35DD13E708043D4CD8ACD54E14708F +0 -5
  277. package/.vs/CopilotSnapshots/99E22E75C8AEDF4DB3A668A9ADF0BC43/state.mpack +0 -1
  278. package/.vs/CopilotSnapshots/A6D99EA2D3819F45AD8087D7487F9318/state.mpack +0 -1
  279. package/.vs/CopilotSnapshots/A78C77F7A237704D95BCFE1BBC39FB0F/68BA9941941DC244BC799D89DB2BF86E/7C951A8A572EA5C371FDE657AF968B9C +0 -96
  280. package/.vs/CopilotSnapshots/A78C77F7A237704D95BCFE1BBC39FB0F/state.mpack +0 -1
  281. package/.vs/CopilotSnapshots/AD2203F1B9FECE44BB6D5DC5D83E87AA/734AB1B2974F9545B7F12AAA5842524B/840203FFA9CCF5B33DFD5C7CC5B13527 +0 -125
  282. package/.vs/CopilotSnapshots/AD2203F1B9FECE44BB6D5DC5D83E87AA/state.mpack +0 -1
  283. package/.vs/CopilotSnapshots/AEC950C2FAD20147AEE8E325E2CA0A78/89CF3F527D0687479D14274E8CDF3DFF/1CF9939611B0D194AC81951A171DF046 +0 -30
  284. package/.vs/CopilotSnapshots/AEC950C2FAD20147AEE8E325E2CA0A78/89CF3F527D0687479D14274E8CDF3DFF/BA5D2B145A59265D63FA3B3584344B02 +0 -158
  285. package/.vs/CopilotSnapshots/AEC950C2FAD20147AEE8E325E2CA0A78/E495EBF64DC77A4BBD470B92DB0391C4/1CF9939611B0D194AC81951A171DF046 +0 -30
  286. package/.vs/CopilotSnapshots/AEC950C2FAD20147AEE8E325E2CA0A78/E495EBF64DC77A4BBD470B92DB0391C4/BA5D2B145A59265D63FA3B3584344B02 +0 -67
  287. package/.vs/CopilotSnapshots/AEC950C2FAD20147AEE8E325E2CA0A78/state.mpack +0 -1
  288. package/.vs/CopilotSnapshots/AF947096A34634478C5D084B8442CD81/1FCDCC65B992954DB78BD1F46892312B/44EB81A1663981E3F52FFFECE3A2918E +0 -143
  289. package/.vs/CopilotSnapshots/AF947096A34634478C5D084B8442CD81/1FCDCC65B992954DB78BD1F46892312B/E602628EF6D764C2C267810C92906DBA +0 -253
  290. package/.vs/CopilotSnapshots/AF947096A34634478C5D084B8442CD81/state.mpack +0 -1
  291. package/.vs/CopilotSnapshots/B1DED422A45D5740BA4EE745C04B2B0B/226F822A22D6BD44BCF56BAA47FA274C/EF71788BE39818EEA3F0164DC15E1BD7 +0 -174
  292. package/.vs/CopilotSnapshots/B1DED422A45D5740BA4EE745C04B2B0B/state.mpack +0 -1
  293. package/.vs/CopilotSnapshots/B5DD5E50ACD0FD4998564F0FDE7FAEE0/97908D1D83AD2D4EA7082388DE07CBB4/44EB81A1663981E3F52FFFECE3A2918E +0 -148
  294. package/.vs/CopilotSnapshots/B5DD5E50ACD0FD4998564F0FDE7FAEE0/state.mpack +0 -1
  295. package/.vs/CopilotSnapshots/B8ADCAC0C19DB14FB8388BA59A86BC74/7ED3F1557FD7BE4DBEAF9B59FD442925/44EB81A1663981E3F52FFFECE3A2918E +0 -152
  296. package/.vs/CopilotSnapshots/B8ADCAC0C19DB14FB8388BA59A86BC74/state.mpack +0 -1
  297. package/.vs/CopilotSnapshots/BDFF50BBC1A93747A0001969C3BD195F/0130610530354840BB06BF4F4E744242/D03CD05B4F5C8B7C8CDF0B5E1961B3CA +0 -138
  298. package/.vs/CopilotSnapshots/BDFF50BBC1A93747A0001969C3BD195F/5F1C58CEFBAF1B4E80C4CF38B83A0A5F/D03CD05B4F5C8B7C8CDF0B5E1961B3CA +0 -129
  299. package/.vs/CopilotSnapshots/BDFF50BBC1A93747A0001969C3BD195F/BDC3D099FCCCC147848630670EED45CF/D03CD05B4F5C8B7C8CDF0B5E1961B3CA +0 -139
  300. package/.vs/CopilotSnapshots/BDFF50BBC1A93747A0001969C3BD195F/D9E2B1CDD1E2BB468E0703BEF6706FF6/D03CD05B4F5C8B7C8CDF0B5E1961B3CA +0 -139
  301. package/.vs/CopilotSnapshots/BDFF50BBC1A93747A0001969C3BD195F/state.mpack +0 -1
  302. package/.vs/CopilotSnapshots/C1E2C1A9C1DCFA46B1D5F1C6F36A152D/BC91C0FD38D8694BB992A8DEC1833670/148399016C7971F5592DAADBB9523118 +0 -120
  303. package/.vs/CopilotSnapshots/C1E2C1A9C1DCFA46B1D5F1C6F36A152D/state.mpack +0 -1
  304. package/.vs/CopilotSnapshots/C4D8E85893425E4F86F18850F5CA5C08/6C0950E97063C547A72D737E618436B0/1CF9939611B0D194AC81951A171DF046 +0 -9
  305. package/.vs/CopilotSnapshots/C4D8E85893425E4F86F18850F5CA5C08/6C0950E97063C547A72D737E618436B0/DFF70C60F68ECD9A4E4C3C74E4CC4DEE +0 -84
  306. package/.vs/CopilotSnapshots/C4D8E85893425E4F86F18850F5CA5C08/state.mpack +0 -1
  307. package/.vs/CopilotSnapshots/C5C3CA4C37B14A47B6BC753D09F69117/03EA1376F04C0D468FD0851119159D34/44EB81A1663981E3F52FFFECE3A2918E +0 -148
  308. package/.vs/CopilotSnapshots/C5C3CA4C37B14A47B6BC753D09F69117/03EA1376F04C0D468FD0851119159D34/E602628EF6D764C2C267810C92906DBA +0 -265
  309. package/.vs/CopilotSnapshots/C5C3CA4C37B14A47B6BC753D09F69117/6887503C15557349842029E58C9C0D11/44EB81A1663981E3F52FFFECE3A2918E +0 -152
  310. package/.vs/CopilotSnapshots/C5C3CA4C37B14A47B6BC753D09F69117/6887503C15557349842029E58C9C0D11/E602628EF6D764C2C267810C92906DBA +0 -265
  311. package/.vs/CopilotSnapshots/C5C3CA4C37B14A47B6BC753D09F69117/state.mpack +0 -1
  312. package/.vs/CopilotSnapshots/C7190BBC8D95D44F9CF8E65E3E8C9CFD/4B6D07592F8EDC4AA3FF742B1F9531CC/1B80EB15A2FEBEC11C8210C5461F8DB7 +0 -43
  313. package/.vs/CopilotSnapshots/C7190BBC8D95D44F9CF8E65E3E8C9CFD/state.mpack +0 -1
  314. package/.vs/CopilotSnapshots/C79D12964917E44F9A5BB9D8FA725A0C/2071ADB146D8F7499419123B2A595A41/03E00441128DC70FFEA043158417AC9A +0 -15
  315. package/.vs/CopilotSnapshots/C79D12964917E44F9A5BB9D8FA725A0C/6ECBF707FE2A88418EA1649CE46068D5/03E00441128DC70FFEA043158417AC9A +0 -1
  316. package/.vs/CopilotSnapshots/C79D12964917E44F9A5BB9D8FA725A0C/70BAB1D82B755F47A2351CA905ACC0F1/03E00441128DC70FFEA043158417AC9A +0 -49
  317. package/.vs/CopilotSnapshots/C79D12964917E44F9A5BB9D8FA725A0C/99DDFADAEC5CA14D92CC470523A11743/03E00441128DC70FFEA043158417AC9A +0 -39
  318. package/.vs/CopilotSnapshots/C79D12964917E44F9A5BB9D8FA725A0C/state.mpack +0 -1
  319. package/.vs/CopilotSnapshots/D533D78C39683A4188A2CEC902BC03CD/2445F4111C26EB4DA5404F930E140F56/840203FFA9CCF5B33DFD5C7CC5B13527 +0 -6
  320. package/.vs/CopilotSnapshots/D533D78C39683A4188A2CEC902BC03CD/2445F4111C26EB4DA5404F930E140F56/C27E5C1787B7957BF6F0C3D417890141 +0 -1
  321. package/.vs/CopilotSnapshots/D533D78C39683A4188A2CEC902BC03CD/state.mpack +0 -1
  322. package/.vs/CopilotSnapshots/DCAA5A718EC8304685D14C52356D80E0/5FC7C36C7769414C80BFF27A07BB5063/BE400B34D9700403D2BA3A1AA6B1EF1D +0 -15
  323. package/.vs/CopilotSnapshots/DCAA5A718EC8304685D14C52356D80E0/A4DD9B92084D8E48A95435EDB2B14545/86848C7099AD75EE4E8F10E066F49671 +0 -15
  324. package/.vs/CopilotSnapshots/DCAA5A718EC8304685D14C52356D80E0/A4DD9B92084D8E48A95435EDB2B14545/BE400B34D9700403D2BA3A1AA6B1EF1D +0 -15
  325. package/.vs/CopilotSnapshots/DCAA5A718EC8304685D14C52356D80E0/state.mpack +0 -1
  326. package/.vs/CopilotSnapshots/DCF62F751B748642A0BF5D5125AB6769/5F324CB20D1B5045A13090FA9D177B74/7C951A8A572EA5C371FDE657AF968B9C +0 -96
  327. package/.vs/CopilotSnapshots/DCF62F751B748642A0BF5D5125AB6769/5F324CB20D1B5045A13090FA9D177B74/B692C85119711C76235AA5D78F9F3818 +0 -73
  328. package/.vs/CopilotSnapshots/DCF62F751B748642A0BF5D5125AB6769/5F324CB20D1B5045A13090FA9D177B74/EF71788BE39818EEA3F0164DC15E1BD7 +0 -182
  329. package/.vs/CopilotSnapshots/DCF62F751B748642A0BF5D5125AB6769/C1287B2893D30D40A46C30DC2CE05178/7C951A8A572EA5C371FDE657AF968B9C +0 -96
  330. package/.vs/CopilotSnapshots/DCF62F751B748642A0BF5D5125AB6769/C1287B2893D30D40A46C30DC2CE05178/B692C85119711C76235AA5D78F9F3818 +0 -98
  331. package/.vs/CopilotSnapshots/DCF62F751B748642A0BF5D5125AB6769/CA6304DFE7764A4C87ACE5816CDB7CD9/7C951A8A572EA5C371FDE657AF968B9C +0 -96
  332. package/.vs/CopilotSnapshots/DCF62F751B748642A0BF5D5125AB6769/CA6304DFE7764A4C87ACE5816CDB7CD9/B692C85119711C76235AA5D78F9F3818 +0 -21
  333. package/.vs/CopilotSnapshots/DCF62F751B748642A0BF5D5125AB6769/CA6304DFE7764A4C87ACE5816CDB7CD9/EF71788BE39818EEA3F0164DC15E1BD7 +0 -176
  334. package/.vs/CopilotSnapshots/DCF62F751B748642A0BF5D5125AB6769/state.mpack +0 -1
  335. package/.vs/VSWorkspaceState.json +0 -6
  336. package/.vs/slnx.sqlite +0 -0
  337. package/.vs/ts-sample/CopilotIndices/17.13.433.20974/CodeChunks.db +0 -0
  338. package/.vs/ts-sample/CopilotIndices/17.13.433.20974/SemanticSymbols.db +0 -0
  339. package/.vs/ts-sample/CopilotIndices/17.13.439.2385/CodeChunks.db +0 -0
  340. package/.vs/ts-sample/CopilotIndices/17.13.439.2385/SemanticSymbols.db +0 -0
  341. package/.vs/ts-sample/CopilotIndices/17.13.441.19478/CodeChunks.db +0 -0
  342. package/.vs/ts-sample/CopilotIndices/17.13.441.19478/SemanticSymbols.db +0 -0
  343. package/.vs/ts-sample/FileContentIndex/2fa9d8cc-9158-496d-aa9b-3a471d46a157.vsidx +0 -0
  344. package/.vs/ts-sample/FileContentIndex/5530f45b-244e-4271-b3e3-d8250f03da64.vsidx +0 -0
  345. package/.vs/ts-sample/FileContentIndex/75f95b5d-c8f7-49ca-a3d7-d1d8f63db437.vsidx +0 -0
  346. package/.vs/ts-sample/FileContentIndex/abb2aeeb-f62a-4ca7-bfbf-7a1eada625a5.vsidx +0 -0
  347. package/.vs/ts-sample/FileContentIndex/fc749b54-0f95-45f6-ac75-a8ab3409a5ce.vsidx +0 -0
  348. package/.vs/ts-sample/config/applicationhost.config +0 -1026
  349. package/.vs/ts-sample/copilot-chat/3c67db7d/sessions/0901b413-5d87-4b43-b248-80356492be7e +0 -0
  350. package/.vs/ts-sample/copilot-chat/3c67db7d/sessions/0f61a76a-b21f-46b7-821e-54c28a8d109b +0 -0
  351. package/.vs/ts-sample/copilot-chat/3c67db7d/sessions/101aef14-dd28-4de3-b2eb-e0b26d587b3a +0 -0
  352. package/.vs/ts-sample/copilot-chat/3c67db7d/sessions/22d4deb1-5da4-4057-ba4e-e745c04b2b0b +0 -0
  353. package/.vs/ts-sample/copilot-chat/3c67db7d/sessions/2a76030d-a09e-48cb-85f2-114567f23f93 +0 -0
  354. package/.vs/ts-sample/copilot-chat/3c67db7d/sessions/2c6d08ca-cb98-4233-8f7c-011c3b409234 +0 -0
  355. package/.vs/ts-sample/copilot-chat/3c67db7d/sessions/338dc290-9b2f-4929-8101-26139fca2640 +0 -0
  356. package/.vs/ts-sample/copilot-chat/3c67db7d/sessions/34c9ac3b-2061-4d82-b300-06e353477163 +0 -0
  357. package/.vs/ts-sample/copilot-chat/3c67db7d/sessions/3c01b107-5c38-4156-a5f5-100e0751210b +0 -0
  358. package/.vs/ts-sample/copilot-chat/3c67db7d/sessions/489ee702-f5df-4723-87cb-618de990598a +0 -0
  359. package/.vs/ts-sample/copilot-chat/3c67db7d/sessions/4ccac3c5-b137-474a-b6bc-753d09f69117 +0 -0
  360. package/.vs/ts-sample/copilot-chat/3c67db7d/sessions/505eddb5-d0ac-49fd-9856-4f0fde7faee0 +0 -0
  361. package/.vs/ts-sample/copilot-chat/3c67db7d/sessions/58e8d8c4-4293-4f5e-86f1-8850f5ca5c08 +0 -0
  362. package/.vs/ts-sample/copilot-chat/3c67db7d/sessions/5dbafa3e-3015-4c80-a04c-606f5efddc38 +0 -0
  363. package/.vs/ts-sample/copilot-chat/3c67db7d/sessions/5f29f527-e43a-4661-b60e-ff772041f413 +0 -0
  364. package/.vs/ts-sample/copilot-chat/3c67db7d/sessions/6248dfd7-38ae-4fa6-9176-2fdc0694c3e8 +0 -0
  365. package/.vs/ts-sample/copilot-chat/3c67db7d/sessions/66fcbd64-32dc-436d-80e6-7435a1a3ecf1 +0 -0
  366. package/.vs/ts-sample/copilot-chat/3c67db7d/sessions/6f9ad733-d555-4d2c-b073-eb6a1aada347 +0 -0
  367. package/.vs/ts-sample/copilot-chat/3c67db7d/sessions/715aaadc-c88e-4630-85d1-4c52356d80e0 +0 -0
  368. package/.vs/ts-sample/copilot-chat/3c67db7d/sessions/71ab164c-01dc-468c-a734-fbf0bf4aedd9 +0 -0
  369. package/.vs/ts-sample/copilot-chat/3c67db7d/sessions/752ee299-aec8-4ddf-b3a6-68a9adf0bc43 +0 -0
  370. package/.vs/ts-sample/copilot-chat/3c67db7d/sessions/752ff6dc-741b-4286-a0bf-5d5125ab6769 +0 -0
  371. package/.vs/ts-sample/copilot-chat/3c67db7d/sessions/7b50f25e-2a00-4ec1-a991-043c37c36551 +0 -0
  372. package/.vs/ts-sample/copilot-chat/3c67db7d/sessions/7f41e050-2ead-4d52-887c-b5763c2fb7b4 +0 -0
  373. package/.vs/ts-sample/copilot-chat/3c67db7d/sessions/85b50c9e-8895-4085-89c1-934ad2704744 +0 -0
  374. package/.vs/ts-sample/copilot-chat/3c67db7d/sessions/8b2f308d-46ae-4ef5-a82a-e1ded1a5d240 +0 -0
  375. package/.vs/ts-sample/copilot-chat/3c67db7d/sessions/8b5f907f-0dac-49ad-bd50-7ca45c569afd +0 -0
  376. package/.vs/ts-sample/copilot-chat/3c67db7d/sessions/8cd733d5-6839-413a-88a2-cec902bc03cd +0 -0
  377. package/.vs/ts-sample/copilot-chat/3c67db7d/sessions/90685124-4085-46d6-acbd-4fde8d6dd2d4 +0 -0
  378. package/.vs/ts-sample/copilot-chat/3c67db7d/sessions/96129dc7-1749-4fe4-9a5b-b9d8fa725a0c +0 -0
  379. package/.vs/ts-sample/copilot-chat/3c67db7d/sessions/967094af-46a3-4734-8c5d-084b8442cd81 +0 -0
  380. package/.vs/ts-sample/copilot-chat/3c67db7d/sessions/a29ed9a6-81d3-459f-ad80-87d7487f9318 +0 -0
  381. package/.vs/ts-sample/copilot-chat/3c67db7d/sessions/a9c1e2c1-dcc1-46fa-b1d5-f1c6f36a152d +0 -0
  382. package/.vs/ts-sample/copilot-chat/3c67db7d/sessions/badc76f4-d284-4b6c-94e9-abdbc74de540 +0 -0
  383. package/.vs/ts-sample/copilot-chat/3c67db7d/sessions/bb50ffbd-a9c1-4737-a000-1969c3bd195f +0 -0
  384. package/.vs/ts-sample/copilot-chat/3c67db7d/sessions/bc0b19c7-958d-4fd4-9cf8-e65e3e8c9cfd +0 -0
  385. package/.vs/ts-sample/copilot-chat/3c67db7d/sessions/c02d1a89-fae5-4c42-b8bd-da4fe26ed372 +0 -0
  386. package/.vs/ts-sample/copilot-chat/3c67db7d/sessions/c0caadb8-9dc1-4fb1-b838-8ba59a86bc74 +0 -0
  387. package/.vs/ts-sample/copilot-chat/3c67db7d/sessions/c250c9ae-d2fa-4701-aee8-e325e2ca0a78 +0 -0
  388. package/.vs/ts-sample/copilot-chat/3c67db7d/sessions/c31db710-c1c4-4ec0-8602-fa06d3925f98 +0 -0
  389. package/.vs/ts-sample/copilot-chat/3c67db7d/sessions/c7d99284-d9a2-4d51-b8a6-9d304b48bf3c +0 -0
  390. package/.vs/ts-sample/copilot-chat/3c67db7d/sessions/ddd1fab4-4016-4cfc-bf9f-f4a85bdfc112 +0 -0
  391. package/.vs/ts-sample/copilot-chat/3c67db7d/sessions/f10322ad-feb9-44ce-bb6d-5dc5d83e87aa +0 -0
  392. package/.vs/ts-sample/copilot-chat/3c67db7d/sessions/f7778ca7-37a2-4d70-95bc-fe1bbc39fb0f +0 -0
  393. package/.vs/ts-sample/v17/.suo +0 -0
  394. package/.vs/ts-sample/v17/.wsuo +0 -0
  395. package/.vs/ts-sample/v17/DocumentLayout.backup.json +0 -425
  396. package/.vs/ts-sample/v17/DocumentLayout.json +0 -423
  397. package/.vs/ts-sample/v17/TestStore/0/000.testlog +0 -0
  398. package/.vs/ts-sample/v17/TestStore/0/testlog.manifest +0 -0
  399. package/dist/tsconfig.tsbuildinfo +0 -1
  400. package/dist/vitest.config.js +0 -15
  401. package/dist/vitest.config.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WhereClauseParser.js","sourceRoot":"","sources":["../../src/parsers/WhereClauseParser.ts"],"names":[],"mappings":";;;AAAA,6CAA+C;AAE/C,iDAA8C;AAC9C,+CAA4C;AAE5C,MAAa,iBAAiB;IAC1B,uCAAuC;IAChC,MAAM,CAAC,KAAK,CAAC,KAAa;QAC7B,MAAM,SAAS,GAAG,IAAI,2BAAY,CAAC,KAAK,CAAC,CAAC,CAAC,uBAAuB;QAClE,MAAM,OAAO,GAAG,SAAS,CAAC,UAAU,EAAE,CAAC,CAAC,aAAa;QAErD,QAAQ;QACR,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QAEhD,sCAAsC;QACtC,IAAI,MAAM,CAAC,QAAQ,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;YACnC,MAAM,IAAI,KAAK,CAAC,mCAAmC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,iBAAiB,MAAM,CAAC,QAAQ,iEAAiE,CAAC,CAAC;QACxL,CAAC;QAED,OAAO,MAAM,CAAC,KAAK,CAAC;IACxB,CAAC;IAED,uCAAuC;IAChC,MAAM,CAAC,eAAe,CAAC,OAAiB,EAAE,KAAa;QAC1D,IAAI,GAAG,GAAG,KAAK,CAAC;QAEhB,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,OAAO,EAAE,CAAC;YACjC,MAAM,IAAI,KAAK,CAAC,4BAA4B,GAAG,yCAAyC,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,qDAAqD,CAAC,CAAC;QACrK,CAAC;QACD,GAAG,EAAE,CAAC;QAEN,IAAI,GAAG,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACxB,MAAM,IAAI,KAAK,CAAC,gHAAgH,CAAC,CAAC;QACtI,CAAC;QAED,MAAM,IAAI,GAAG,yBAAW,CAAC,eAAe,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QACvD,MAAM,MAAM,GAAG,IAAI,oBAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAE3C,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;IACtD,CAAC;CACJ;AAnCD,8CAmCC"}
@@ -0,0 +1,9 @@
1
+ import { WindowFrameClause } from "../models/Clause";
2
+ import { Lexeme } from "../models/Lexeme";
3
+ export declare class WindowClauseParser {
4
+ static parse(query: string): WindowFrameClause;
5
+ static parseFromLexeme(lexemes: Lexeme[], index: number): {
6
+ value: WindowFrameClause;
7
+ newIndex: number;
8
+ };
9
+ }
@@ -0,0 +1,45 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.WindowClauseParser = void 0;
4
+ const Clause_1 = require("../models/Clause");
5
+ const Lexeme_1 = require("../models/Lexeme");
6
+ const SqlTokenizer_1 = require("./SqlTokenizer");
7
+ const WindowExpressionParser_1 = require("./WindowExpressionParser");
8
+ class WindowClauseParser {
9
+ // Parse SQL string to AST (was: parse)
10
+ static parse(query) {
11
+ const tokenizer = new SqlTokenizer_1.SqlTokenizer(query);
12
+ const lexemes = tokenizer.readLexmes();
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 WINDOW clause is complete but there are additional tokens.`);
18
+ }
19
+ return result.value;
20
+ }
21
+ // Parse from lexeme array (was: parse)
22
+ static parseFromLexeme(lexemes, index) {
23
+ let idx = index;
24
+ if (lexemes[idx].value !== 'window') {
25
+ throw new Error(`Syntax error at position ${idx}: Expected 'WINDOW' keyword but found "${lexemes[idx].value}". WINDOW clauses must start with the WINDOW keyword.`);
26
+ }
27
+ idx++;
28
+ if (idx >= lexemes.length || lexemes[idx].type !== Lexeme_1.TokenType.Identifier) {
29
+ throw new Error(`Syntax error: Expected window name after 'WINDOW' keyword.`);
30
+ }
31
+ // Get the window name
32
+ const name = lexemes[idx].value;
33
+ idx++;
34
+ if (idx >= lexemes.length || lexemes[idx].value !== 'as') {
35
+ throw new Error(`Syntax error at position ${idx}: Expected 'AS' keyword after window name.`);
36
+ }
37
+ idx++;
38
+ const expr = WindowExpressionParser_1.WindowExpressionParser.parseFromLexeme(lexemes, idx);
39
+ idx = expr.newIndex;
40
+ const windowFrame = new Clause_1.WindowFrameClause(name, expr.value);
41
+ return { value: windowFrame, newIndex: idx };
42
+ }
43
+ }
44
+ exports.WindowClauseParser = WindowClauseParser;
45
+ //# sourceMappingURL=WindowClauseParser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WindowClauseParser.js","sourceRoot":"","sources":["../../src/parsers/WindowClauseParser.ts"],"names":[],"mappings":";;;AAAA,6CAAqD;AACrD,6CAAqD;AACrD,iDAA8C;AAC9C,qEAAkE;AAElE,MAAa,kBAAkB;IAC3B,uCAAuC;IAChC,MAAM,CAAC,KAAK,CAAC,KAAa;QAC7B,MAAM,SAAS,GAAG,IAAI,2BAAY,CAAC,KAAK,CAAC,CAAC;QAC1C,MAAM,OAAO,GAAG,SAAS,CAAC,UAAU,EAAE,CAAC;QAEvC,QAAQ;QACR,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QAEhD,sCAAsC;QACtC,IAAI,MAAM,CAAC,QAAQ,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;YACnC,MAAM,IAAI,KAAK,CAAC,mCAAmC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,iBAAiB,MAAM,CAAC,QAAQ,kEAAkE,CAAC,CAAC;QACzL,CAAC;QAED,OAAO,MAAM,CAAC,KAAK,CAAC;IACxB,CAAC;IAED,uCAAuC;IAChC,MAAM,CAAC,eAAe,CAAC,OAAiB,EAAE,KAAa;QAC1D,IAAI,GAAG,GAAG,KAAK,CAAC;QAEhB,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;YAClC,MAAM,IAAI,KAAK,CAAC,4BAA4B,GAAG,0CAA0C,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,uDAAuD,CAAC,CAAC;QACxK,CAAC;QACD,GAAG,EAAE,CAAC;QAEN,IAAI,GAAG,IAAI,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,kBAAS,CAAC,UAAU,EAAE,CAAC;YACtE,MAAM,IAAI,KAAK,CAAC,4DAA4D,CAAC,CAAC;QAClF,CAAC;QAED,sBAAsB;QACtB,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC;QAChC,GAAG,EAAE,CAAC;QAEN,IAAI,GAAG,IAAI,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,IAAI,EAAE,CAAC;YACvD,MAAM,IAAI,KAAK,CAAC,4BAA4B,GAAG,4CAA4C,CAAC,CAAC;QACjG,CAAC;QACD,GAAG,EAAE,CAAC;QAEN,MAAM,IAAI,GAAG,+CAAsB,CAAC,eAAe,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QAClE,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC;QAEpB,MAAM,WAAW,GAAG,IAAI,0BAAiB,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QAC5D,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC;IACjD,CAAC;CACJ;AA7CD,gDA6CC"}
@@ -0,0 +1,12 @@
1
+ import { Lexeme } from "../models/Lexeme";
2
+ import { WindowFrameExpression } from "../models/ValueComponent";
3
+ export declare class WindowExpressionParser {
4
+ static parse(query: string): WindowFrameExpression;
5
+ static parseFromLexeme(lexemes: Lexeme[], index: number): {
6
+ value: WindowFrameExpression;
7
+ newIndex: number;
8
+ };
9
+ private static isFrameTypeKeyword;
10
+ private static parseFrameSpec;
11
+ private static parseFrameBoundary;
12
+ }
@@ -0,0 +1,163 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.WindowExpressionParser = void 0;
4
+ const Lexeme_1 = require("../models/Lexeme");
5
+ const ValueComponent_1 = require("../models/ValueComponent");
6
+ const OrderByClauseParser_1 = require("./OrderByClauseParser");
7
+ const PartitionByParser_1 = require("./PartitionByParser");
8
+ const SqlTokenizer_1 = require("./SqlTokenizer");
9
+ const ValueParser_1 = require("./ValueParser");
10
+ class WindowExpressionParser {
11
+ // Parse SQL string to AST (was: parse)
12
+ static parse(query) {
13
+ const tokenizer = new SqlTokenizer_1.SqlTokenizer(query); // Initialize tokenizer
14
+ const lexemes = tokenizer.readLexmes(); // Get tokens
15
+ // Parse
16
+ const result = this.parseFromLexeme(lexemes, 0);
17
+ // Error if there are remaining tokens
18
+ if (result.newIndex < lexemes.length) {
19
+ throw new Error(`Syntax error: Unexpected token "${lexemes[result.newIndex].value}" at position ${result.newIndex}. The window frame expression is complete but there are additional tokens.`);
20
+ }
21
+ return result.value;
22
+ }
23
+ // Parse from lexeme array (was: parse)
24
+ static parseFromLexeme(lexemes, index) {
25
+ let idx = index;
26
+ if (lexemes[idx].type !== Lexeme_1.TokenType.OpenParen) {
27
+ throw new Error(`Syntax error at position ${idx}: Expected opening parenthesis '(' but found "${lexemes[idx].value}".`);
28
+ }
29
+ idx++;
30
+ let partition = null;
31
+ let order = null;
32
+ let frameSpec = null;
33
+ if (idx < lexemes.length && lexemes[idx].value === 'partition by') {
34
+ const partitionResult = PartitionByParser_1.PartitionByParser.parseFromLexeme(lexemes, idx);
35
+ partition = partitionResult.value;
36
+ idx = partitionResult.newIndex;
37
+ }
38
+ if (idx < lexemes.length && lexemes[idx].value === 'order by') {
39
+ const orderResult = OrderByClauseParser_1.OrderByClauseParser.parseFromLexeme(lexemes, idx);
40
+ order = orderResult.value;
41
+ idx = orderResult.newIndex;
42
+ }
43
+ // Parse frame clause (ROWS/RANGE/GROUPS)
44
+ if (idx < lexemes.length && this.isFrameTypeKeyword(lexemes[idx].value)) {
45
+ const frameSpecResult = this.parseFrameSpec(lexemes, idx);
46
+ frameSpec = frameSpecResult.value;
47
+ idx = frameSpecResult.newIndex;
48
+ }
49
+ if (idx >= lexemes.length || lexemes[idx].type !== Lexeme_1.TokenType.CloseParen) {
50
+ throw new Error(`Syntax error at position ${idx}: Missing closing parenthesis ')' for window frame. Each opening parenthesis must have a matching closing parenthesis.`);
51
+ }
52
+ // Read close paren
53
+ idx++;
54
+ return { value: new ValueComponent_1.WindowFrameExpression(partition, order, frameSpec), newIndex: idx };
55
+ }
56
+ static isFrameTypeKeyword(value) {
57
+ const lowerValue = value;
58
+ return lowerValue === 'rows' || lowerValue === 'range' || lowerValue === 'groups';
59
+ }
60
+ static parseFrameSpec(lexemes, index) {
61
+ let idx = index;
62
+ // Determine frame type (ROWS/RANGE/GROUPS)
63
+ const frameTypeStr = lexemes[idx].value;
64
+ let frameType;
65
+ switch (frameTypeStr) {
66
+ case 'rows':
67
+ frameType = ValueComponent_1.WindowFrameType.Rows;
68
+ break;
69
+ case 'range':
70
+ frameType = ValueComponent_1.WindowFrameType.Range;
71
+ break;
72
+ case 'groups':
73
+ frameType = ValueComponent_1.WindowFrameType.Groups;
74
+ break;
75
+ default:
76
+ throw new Error(`Syntax error at position ${idx}: Invalid frame type "${lexemes[idx].value}". Expected one of: ROWS, RANGE, GROUPS.`);
77
+ }
78
+ idx++;
79
+ // Check for BETWEEN ... AND ... syntax
80
+ if (idx < lexemes.length && lexemes[idx].value === 'between') {
81
+ // BETWEEN ... AND ... syntax
82
+ idx++;
83
+ // Parse start boundary
84
+ const startBoundResult = this.parseFrameBoundary(lexemes, idx);
85
+ const startBound = startBoundResult.value;
86
+ idx = startBoundResult.newIndex;
87
+ // Check for AND keyword - may be recognized as a separate token or part of a compound token
88
+ if (idx >= lexemes.length || (lexemes[idx].value !== 'and')) {
89
+ throw new Error(`Syntax error at position ${idx}: Expected 'AND' keyword in BETWEEN clause.`);
90
+ }
91
+ idx++; // Skip AND
92
+ // Parse end boundary
93
+ const endBoundResult = this.parseFrameBoundary(lexemes, idx);
94
+ const endBound = endBoundResult.value;
95
+ idx = endBoundResult.newIndex;
96
+ return {
97
+ value: new ValueComponent_1.WindowFrameSpec(frameType, startBound, endBound),
98
+ newIndex: idx
99
+ };
100
+ }
101
+ else {
102
+ // Single boundary specification
103
+ const boundaryResult = this.parseFrameBoundary(lexemes, idx);
104
+ const startBound = boundaryResult.value;
105
+ idx = boundaryResult.newIndex;
106
+ return {
107
+ value: new ValueComponent_1.WindowFrameSpec(frameType, startBound, null),
108
+ newIndex: idx
109
+ };
110
+ }
111
+ }
112
+ static parseFrameBoundary(lexemes, index) {
113
+ let idx = index;
114
+ // Check for predefined boundaries
115
+ if (idx < lexemes.length && lexemes[idx].type === Lexeme_1.TokenType.Command) {
116
+ const currentValue = lexemes[idx].value;
117
+ let frameBound;
118
+ switch (currentValue) {
119
+ case 'current row':
120
+ frameBound = ValueComponent_1.WindowFrameBound.CurrentRow;
121
+ break;
122
+ case 'unbounded preceding':
123
+ frameBound = ValueComponent_1.WindowFrameBound.UnboundedPreceding;
124
+ break;
125
+ case 'unbounded following':
126
+ frameBound = ValueComponent_1.WindowFrameBound.UnboundedFollowing;
127
+ break;
128
+ default:
129
+ throw new Error(`Syntax error at position ${idx}: Invalid frame type "${lexemes[idx].value}". Expected one of: ROWS, RANGE, GROUPS.`);
130
+ }
131
+ const bound = new ValueComponent_1.WindowFrameBoundStatic(frameBound);
132
+ return { value: bound, newIndex: idx + 1 };
133
+ }
134
+ else if (idx < lexemes.length && lexemes[idx].type === Lexeme_1.TokenType.Literal) {
135
+ // Parse the numeric/literal value
136
+ const valueResult = ValueParser_1.ValueParser.parseFromLexeme(lexemes, idx);
137
+ idx = valueResult.newIndex;
138
+ // Next token must be 'preceding' or 'following'
139
+ if (idx < lexemes.length && lexemes[idx].type === Lexeme_1.TokenType.Command) {
140
+ const direction = lexemes[idx].value;
141
+ let isFollowing;
142
+ if (direction === 'preceding') {
143
+ isFollowing = false;
144
+ }
145
+ else if (direction === 'following') {
146
+ isFollowing = true;
147
+ }
148
+ else {
149
+ throw new Error(`Syntax error at position ${idx}: Expected 'preceding' or 'following' after numeric value in window frame boundary.`);
150
+ }
151
+ idx++;
152
+ const bound = new ValueComponent_1.WindowFrameBoundaryValue(valueResult.value, isFollowing);
153
+ return { value: bound, newIndex: idx };
154
+ }
155
+ else {
156
+ throw new Error(`Syntax error at position ${idx}: Expected 'preceding' or 'following' after numeric value in window frame boundary.`);
157
+ }
158
+ }
159
+ throw new Error(`Syntax error at position ${idx}: Expected a valid frame boundary component.`);
160
+ }
161
+ }
162
+ exports.WindowExpressionParser = WindowExpressionParser;
163
+ //# sourceMappingURL=WindowExpressionParser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WindowExpressionParser.js","sourceRoot":"","sources":["../../src/parsers/WindowExpressionParser.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import { WithClause } from "../models/Clause";
2
+ import { Lexeme } from "../models/Lexeme";
3
+ export declare class WithClauseParser {
4
+ static parse(query: string): WithClause;
5
+ static parseFromLexeme(lexemes: Lexeme[], index: number): {
6
+ value: WithClause;
7
+ newIndex: number;
8
+ };
9
+ }
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.WithClauseParser = void 0;
4
+ const Clause_1 = require("../models/Clause");
5
+ const Lexeme_1 = require("../models/Lexeme");
6
+ const SqlTokenizer_1 = require("./SqlTokenizer");
7
+ const CommonTableParser_1 = require("./CommonTableParser");
8
+ class WithClauseParser {
9
+ // Parse SQL string to AST (was: parse)
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 WITH clause is complete but there are additional tokens.`);
18
+ }
19
+ return result.value;
20
+ }
21
+ // Parse from lexeme array (was: parse)
22
+ static parseFromLexeme(lexemes, index) {
23
+ let idx = index;
24
+ // Expect WITH keyword
25
+ if (idx < lexemes.length && lexemes[idx].value.toLowerCase() === "with") {
26
+ idx++;
27
+ }
28
+ else {
29
+ throw new Error(`Syntax error at position ${idx}: Expected WITH keyword.`);
30
+ }
31
+ // Check for RECURSIVE keyword
32
+ const recursive = idx < lexemes.length && lexemes[idx].value.toLowerCase() === "recursive";
33
+ if (recursive) {
34
+ idx++;
35
+ }
36
+ // Parse CTEs
37
+ const tables = [];
38
+ // Parse first CTE (required)
39
+ const firstCte = CommonTableParser_1.CommonTableParser.parseFromLexeme(lexemes, idx);
40
+ tables.push(firstCte.value);
41
+ idx = firstCte.newIndex;
42
+ // Parse additional CTEs (optional)
43
+ while (idx < lexemes.length && lexemes[idx].type === Lexeme_1.TokenType.Comma) {
44
+ idx++; // Skip comma
45
+ const cteResult = CommonTableParser_1.CommonTableParser.parseFromLexeme(lexemes, idx);
46
+ tables.push(cteResult.value);
47
+ idx = cteResult.newIndex;
48
+ }
49
+ // Create WITH clause
50
+ return {
51
+ value: new Clause_1.WithClause(recursive, tables),
52
+ newIndex: idx
53
+ };
54
+ }
55
+ }
56
+ exports.WithClauseParser = WithClauseParser;
57
+ //# sourceMappingURL=WithClauseParser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WithClauseParser.js","sourceRoot":"","sources":["../../src/parsers/WithClauseParser.ts"],"names":[],"mappings":";;;AAAA,6CAA2D;AAC3D,6CAAqD;AACrD,iDAA8C;AAC9C,2DAAwD;AAExD,MAAa,gBAAgB;IACzB,uCAAuC;IAChC,MAAM,CAAC,KAAK,CAAC,KAAa;QAC7B,MAAM,SAAS,GAAG,IAAI,2BAAY,CAAC,KAAK,CAAC,CAAC,CAAC,uBAAuB;QAClE,MAAM,OAAO,GAAG,SAAS,CAAC,UAAU,EAAE,CAAC,CAAC,aAAa;QAErD,QAAQ;QACR,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QAEhD,sCAAsC;QACtC,IAAI,MAAM,CAAC,QAAQ,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;YACnC,MAAM,IAAI,KAAK,CAAC,mCAAmC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,iBAAiB,MAAM,CAAC,QAAQ,gEAAgE,CAAC,CAAC;QACvL,CAAC;QAED,OAAO,MAAM,CAAC,KAAK,CAAC;IACxB,CAAC;IAED,uCAAuC;IAChC,MAAM,CAAC,eAAe,CAAC,OAAiB,EAAE,KAAa;QAC1D,IAAI,GAAG,GAAG,KAAK,CAAC;QAEhB,sBAAsB;QACtB,IAAI,GAAG,GAAG,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,MAAM,EAAE,CAAC;YACtE,GAAG,EAAE,CAAC;QACV,CAAC;aAAM,CAAC;YACJ,MAAM,IAAI,KAAK,CAAC,4BAA4B,GAAG,0BAA0B,CAAC,CAAC;QAC/E,CAAC;QAED,8BAA8B;QAC9B,MAAM,SAAS,GAAG,GAAG,GAAG,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,WAAW,CAAC;QAC3F,IAAI,SAAS,EAAE,CAAC;YACZ,GAAG,EAAE,CAAC;QACV,CAAC;QAED,aAAa;QACb,MAAM,MAAM,GAAkB,EAAE,CAAC;QAEjC,6BAA6B;QAC7B,MAAM,QAAQ,GAAG,qCAAiB,CAAC,eAAe,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QACjE,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAC5B,GAAG,GAAG,QAAQ,CAAC,QAAQ,CAAC;QAExB,mCAAmC;QACnC,OAAO,GAAG,GAAG,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,kBAAS,CAAC,KAAK,EAAE,CAAC;YACnE,GAAG,EAAE,CAAC,CAAC,aAAa;YACpB,MAAM,SAAS,GAAG,qCAAiB,CAAC,eAAe,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;YAClE,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;YAC7B,GAAG,GAAG,SAAS,CAAC,QAAQ,CAAC;QAC7B,CAAC;QAED,qBAAqB;QACrB,OAAO;YACH,KAAK,EAAE,IAAI,mBAAU,CAAC,SAAS,EAAE,MAAM,CAAC;YACxC,QAAQ,EAAE,GAAG;SAChB,CAAC;IACN,CAAC;CACJ;AAxDD,4CAwDC"}
@@ -0,0 +1,43 @@
1
+ import { Lexeme, TokenType } from '../models/Lexeme';
2
+ /**
3
+ * Base class for token readers
4
+ */
5
+ export declare abstract class BaseTokenReader {
6
+ protected input: string;
7
+ protected position: number;
8
+ constructor(input: string, position?: number);
9
+ /**
10
+ * Get the current position in the input
11
+ */
12
+ getPosition(): number;
13
+ /**
14
+ * Set the position in the input
15
+ */
16
+ setPosition(position: number): void;
17
+ /**
18
+ * Check if we've reached the end of input
19
+ */
20
+ protected isEndOfInput(shift?: number): boolean;
21
+ /**
22
+ * Check if we can read more characters
23
+ */
24
+ protected canRead(shift?: number): boolean;
25
+ /**
26
+ * Read an expected character
27
+ */
28
+ protected read(expectChar: string): string;
29
+ /**
30
+ * Create a lexeme with the specified type and value
31
+ */
32
+ protected createLexeme(type: TokenType, value: string, maybeType?: boolean | null, comments?: string[] | null): Lexeme;
33
+ /**
34
+ * Get debug info for error reporting
35
+ */
36
+ protected getDebugPositionInfo(errPosition: number): string;
37
+ /**
38
+ * Try to read a token from the current position
39
+ * @param previous The previous token, if available
40
+ * @returns The read token or null if no token could be read
41
+ */
42
+ abstract tryRead(previous: Lexeme | null): Lexeme | null;
43
+ }
@@ -1,86 +1,82 @@
1
- import { Lexeme } from '../models/Lexeme';
2
- import { TokenType } from '../enums/tokenType';
3
- import { StringUtils } from '../utils/stringUtils';
4
-
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BaseTokenReader = void 0;
4
+ const Lexeme_1 = require("../models/Lexeme");
5
+ const stringUtils_1 = require("../utils/stringUtils");
5
6
  /**
6
7
  * Base class for token readers
7
8
  */
8
- export abstract class BaseTokenReader {
9
- protected input: string;
10
- protected position: number;
11
-
12
- constructor(input: string, position: number) {
9
+ class BaseTokenReader {
10
+ constructor(input, position = 0) {
13
11
  this.input = input;
14
12
  this.position = position;
15
13
  }
16
-
17
14
  /**
18
15
  * Get the current position in the input
19
16
  */
20
- public getPosition(): number {
17
+ getPosition() {
21
18
  return this.position;
22
19
  }
23
-
24
20
  /**
25
21
  * Set the position in the input
26
22
  */
27
- public setPosition(position: number): void {
23
+ setPosition(position) {
28
24
  this.position = position;
29
25
  }
30
-
31
26
  /**
32
27
  * Check if we've reached the end of input
33
28
  */
34
- protected isEndOfInput(shift: number = 0): boolean {
29
+ isEndOfInput(shift = 0) {
35
30
  return this.position + shift >= this.input.length;
36
31
  }
37
-
38
32
  /**
39
33
  * Check if we can read more characters
40
34
  */
41
- protected canRead(shift: number = 0): boolean {
35
+ canRead(shift = 0) {
42
36
  return !this.isEndOfInput(shift);
43
37
  }
44
-
45
38
  /**
46
39
  * Read an expected character
47
40
  */
48
- protected read(expectChar: string): string {
41
+ read(expectChar) {
49
42
  if (this.isEndOfInput()) {
50
43
  throw new Error(`Unexpected character. expect: ${expectChar}, actual: EndOfInput, position: ${this.position}`);
51
44
  }
52
-
53
45
  if (this.input[this.position] !== expectChar) {
54
46
  throw new Error(`Unexpected character. expect: ${expectChar}, actual: ${this.input[this.position]}, position: ${this.position}`);
55
47
  }
56
-
57
48
  const char = this.input[this.position];
58
49
  this.position++;
59
50
  return char;
60
51
  }
61
-
62
52
  /**
63
53
  * Create a lexeme with the specified type and value
64
54
  */
65
- protected createLexeme(type: TokenType, value: string, command?: string): Lexeme {
55
+ createLexeme(type, value, maybeType = null, comments = null) {
56
+ if (type === Lexeme_1.TokenType.Command || type === Lexeme_1.TokenType.Operator || type === Lexeme_1.TokenType.Function) {
57
+ // Benchmark tests showed that directly calling toLowerCase() is ~5x faster
58
+ // than first checking if the string is already lowercase.
59
+ // See benchmarks/lowercase-benchmark.js for detailed performance analysis.
60
+ return {
61
+ type,
62
+ value: value.toLowerCase(),
63
+ comments: comments,
64
+ maybeType: maybeType,
65
+ };
66
+ }
66
67
  return {
67
68
  type,
68
69
  value,
69
- command
70
+ comments: comments,
71
+ maybeType: maybeType,
70
72
  };
71
73
  }
72
-
73
74
  /**
74
75
  * Get debug info for error reporting
75
76
  */
76
- protected getDebugPositionInfo(errPosition: number): string {
77
- return StringUtils.getDebugPositionInfo(this.input, errPosition);
77
+ getDebugPositionInfo(errPosition) {
78
+ return stringUtils_1.StringUtils.getDebugPositionInfo(this.input, errPosition);
78
79
  }
79
-
80
- /**
81
- * Try to read a token from the current position
82
- * @param previous The previous token, if available
83
- * @returns The read token or null if no token could be read
84
- */
85
- public abstract tryRead(previous: Lexeme | null): Lexeme | null;
86
80
  }
81
+ exports.BaseTokenReader = BaseTokenReader;
82
+ //# sourceMappingURL=BaseTokenReader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BaseTokenReader.js","sourceRoot":"","sources":["../../src/tokenReaders/BaseTokenReader.ts"],"names":[],"mappings":";;;AAAA,6CAAqD;AACrD,sDAAmD;AAEnD;;GAEG;AACH,MAAsB,eAAe;IAIjC,YAAY,KAAa,EAAE,WAAmB,CAAC;QAC3C,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC7B,CAAC;IAED;;OAEG;IACI,WAAW;QACd,OAAO,IAAI,CAAC,QAAQ,CAAC;IACzB,CAAC;IAED;;OAEG;IACI,WAAW,CAAC,QAAgB;QAC/B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC7B,CAAC;IAED;;OAEG;IACO,YAAY,CAAC,QAAgB,CAAC;QACpC,OAAO,IAAI,CAAC,QAAQ,GAAG,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;IACtD,CAAC;IAED;;OAEG;IACO,OAAO,CAAC,QAAgB,CAAC;QAC/B,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IACrC,CAAC;IAED;;OAEG;IACO,IAAI,CAAC,UAAkB;QAC7B,IAAI,IAAI,CAAC,YAAY,EAAE,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CAAC,iCAAiC,UAAU,mCAAmC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QACnH,CAAC;QAED,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,UAAU,EAAE,CAAC;YAC3C,MAAM,IAAI,KAAK,CAAC,iCAAiC,UAAU,aAAa,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,eAAe,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QACrI,CAAC;QAED,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACvC,IAAI,CAAC,QAAQ,EAAE,CAAC;QAChB,OAAO,IAAI,CAAC;IAChB,CAAC;IAED;;OAEG;IACO,YAAY,CAAC,IAAe,EAAE,KAAa,EAAE,YAA4B,IAAI,EAAE,WAA4B,IAAI;QACrH,IAAI,IAAI,KAAK,kBAAS,CAAC,OAAO,IAAI,IAAI,KAAK,kBAAS,CAAC,QAAQ,IAAI,IAAI,KAAK,kBAAS,CAAC,QAAQ,EAAE,CAAC;YAC3F,2EAA2E;YAC3E,0DAA0D;YAC1D,2EAA2E;YAC3E,OAAO;gBACH,IAAI;gBACJ,KAAK,EAAE,KAAK,CAAC,WAAW,EAAE;gBAC1B,QAAQ,EAAE,QAAQ;gBAClB,SAAS,EAAE,SAAS;aACvB,CAAC;QACN,CAAC;QACD,OAAO;YACH,IAAI;YACJ,KAAK;YACL,QAAQ,EAAE,QAAQ;YAClB,SAAS,EAAE,SAAS;SACvB,CAAC;IACN,CAAC;IAED;;OAEG;IACO,oBAAoB,CAAC,WAAmB;QAC9C,OAAO,yBAAW,CAAC,oBAAoB,CAAC,IAAI,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;IACrE,CAAC;CAQJ;AA1FD,0CA0FC"}
@@ -0,0 +1,7 @@
1
+ import { BaseTokenReader } from "./BaseTokenReader";
2
+ import { Lexeme } from '../models/Lexeme';
3
+ import { KeywordParser } from "../parsers/KeywordParser";
4
+ export declare const joinkeywordParser: KeywordParser;
5
+ export declare class CommandTokenReader extends BaseTokenReader {
6
+ tryRead(previous: Lexeme | null): Lexeme | null;
7
+ }
@@ -0,0 +1,145 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CommandTokenReader = exports.joinkeywordParser = void 0;
4
+ const BaseTokenReader_1 = require("./BaseTokenReader");
5
+ const Lexeme_1 = require("../models/Lexeme");
6
+ const KeywordTrie_1 = require("../models/KeywordTrie");
7
+ const KeywordParser_1 = require("../parsers/KeywordParser");
8
+ // Commands are those that require a dedicated parser.
9
+ // Keywords composed of multiple words are also considered commands.
10
+ // The exception is "type". Since types can be user-defined and cannot be accurately identified, they are treated as Identifiers.
11
+ const joinTrie = new KeywordTrie_1.KeywordTrie([
12
+ ["join"],
13
+ ["inner", "join"],
14
+ ["cross", "join"],
15
+ ["left", "join"],
16
+ ["left", "outer", "join"],
17
+ ["right", "join"],
18
+ ["right", "outer", "join"],
19
+ ["full", "join"],
20
+ ["full", "outer", "join"],
21
+ ["natural", "join"],
22
+ ["natural", "inner", "join"],
23
+ ["natural", "left", "join"],
24
+ ["natural", "left", "outer", "join"],
25
+ ["natural", "right", "join"],
26
+ ["natural", "right", "outer", "join"],
27
+ ["natural", "full", "join"],
28
+ ["natural", "full", "outer", "join"],
29
+ ]);
30
+ const keywordTrie = new KeywordTrie_1.KeywordTrie([
31
+ ["with"],
32
+ ["recursive"],
33
+ ["materialized"],
34
+ ["not", "materialized"],
35
+ ["select"],
36
+ ["from"],
37
+ ["distinct"],
38
+ ["distinct", "on"],
39
+ ["where"],
40
+ ["group", "by"],
41
+ ["having"],
42
+ ["order", "by"],
43
+ ["limit"],
44
+ ["offset"],
45
+ // for
46
+ ["for"],
47
+ ["update"],
48
+ ["share"],
49
+ ["key", "share"],
50
+ ["no", "key", "update"],
51
+ // set operations
52
+ ["union"],
53
+ ["union", "all"],
54
+ ["intersect"],
55
+ ["intersect", "all"],
56
+ ["except"],
57
+ ["except", "all"],
58
+ // between and
59
+ ["beteen"],
60
+ // window functions
61
+ ["window"],
62
+ ["over"],
63
+ ["partition", "by"],
64
+ ["range"],
65
+ ["range"],
66
+ ["rows"],
67
+ ["groups"],
68
+ ["groups"],
69
+ // window frame
70
+ ["current", "row"],
71
+ ["unbounded", "preceding"],
72
+ ["unbounded", "following"],
73
+ ["preceding"],
74
+ ["following"],
75
+ // table join commands
76
+ ["on"],
77
+ ["using"],
78
+ ["lateral"],
79
+ // case
80
+ ["case"],
81
+ ["case", "when"],
82
+ ["when"],
83
+ ["then"],
84
+ ["else"],
85
+ ["end"],
86
+ // others
87
+ ["insert", "into"],
88
+ ["update"],
89
+ ["delete", "from"],
90
+ ["merge", "into"],
91
+ ["matched"],
92
+ ["not", "matched"],
93
+ ["update", "set"],
94
+ ["do", "nothing"],
95
+ ["values"],
96
+ ["set"],
97
+ ["returning"],
98
+ ["create", "table"],
99
+ ["create", "temporary", "table"],
100
+ ["tablesample"],
101
+ ["array"],
102
+ // cast
103
+ ["as"],
104
+ // odrder
105
+ ["asc"],
106
+ ["desc"],
107
+ ["nulls", "first"],
108
+ ["nulls", "last"],
109
+ ]);
110
+ const keywordParser = new KeywordParser_1.KeywordParser(keywordTrie);
111
+ exports.joinkeywordParser = new KeywordParser_1.KeywordParser(joinTrie);
112
+ class CommandTokenReader extends BaseTokenReader_1.BaseTokenReader {
113
+ tryRead(previous) {
114
+ if (this.isEndOfInput()) {
115
+ return null;
116
+ }
117
+ const keywordJoin = exports.joinkeywordParser.parse(this.input, this.position);
118
+ if (keywordJoin !== null) {
119
+ this.position = keywordJoin.newPosition;
120
+ return this.createLexeme(Lexeme_1.TokenType.Command, keywordJoin.keyword);
121
+ }
122
+ // Check for keyword identifiers
123
+ const keyword = keywordParser.parse(this.input, this.position);
124
+ if (keyword !== null) {
125
+ this.position = keyword.newPosition;
126
+ return this.createLexeme(Lexeme_1.TokenType.Command, keyword.keyword);
127
+ }
128
+ // check hint clause
129
+ if (this.canRead(2) && this.input[this.position] === '/' && this.input[this.position + 1] === '*' && this.input[this.position + 2] === '+') {
130
+ this.position += 3;
131
+ const start = this.position;
132
+ while (this.position + 1 < this.input.length) {
133
+ if (this.input[this.position] === '*' && this.input[this.position + 1] === '/') {
134
+ this.position += 2;
135
+ return this.createLexeme(Lexeme_1.TokenType.Command, '/*+ ' + this.input.slice(start, this.position - 2).trim() + ' */');
136
+ }
137
+ this.position++;
138
+ }
139
+ throw new Error(`Block comment is not closed. position: ${this.position}`);
140
+ }
141
+ return null;
142
+ }
143
+ }
144
+ exports.CommandTokenReader = CommandTokenReader;
145
+ //# sourceMappingURL=CommandTokenReader.js.map