rawsql-ts 0.1.0-beta.6 → 0.1.0-beta.8

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 (265) hide show
  1. package/dist/index.d.ts +13 -0
  2. package/dist/models/BinarySelectQuery.d.ts +91 -0
  3. package/dist/models/Clause.d.ts +189 -0
  4. package/dist/models/KeywordTrie.d.ts +11 -0
  5. package/dist/models/Lexeme.d.ts +25 -0
  6. package/dist/models/SelectQuery.d.ts +5 -0
  7. package/dist/models/SimpleSelectQuery.d.ts +167 -0
  8. package/dist/models/SqlComponent.d.ts +18 -0
  9. package/dist/models/ValueComponent.d.ts +158 -0
  10. package/dist/models/ValuesQuery.d.ts +10 -0
  11. package/dist/parsers/CommandExpressionParser.d.ts +15 -0
  12. package/dist/parsers/CommonTableParser.d.ts +9 -0
  13. package/dist/parsers/ForClauseParser.d.ts +9 -0
  14. package/dist/parsers/FromClauseParser.d.ts +9 -0
  15. package/dist/parsers/FunctionExpressionParser.d.ts +22 -0
  16. package/dist/parsers/GroupByParser.d.ts +10 -0
  17. package/dist/parsers/HavingParser.d.ts +9 -0
  18. package/dist/parsers/IdentifierParser.d.ts +8 -0
  19. package/dist/parsers/JoinClauseParser.d.ts +14 -0
  20. package/dist/parsers/KeywordParser.d.ts +17 -0
  21. package/dist/parsers/LimitClauseParser.d.ts +9 -0
  22. package/dist/parsers/LiteralParser.d.ts +8 -0
  23. package/dist/parsers/OrderByClauseParser.d.ts +10 -0
  24. package/dist/parsers/OverExpressionParser.d.ts +9 -0
  25. package/dist/parsers/ParameterExpressionParser.d.ts +8 -0
  26. package/dist/parsers/ParenExpressionParser.d.ts +8 -0
  27. package/dist/parsers/PartitionByParser.d.ts +9 -0
  28. package/dist/parsers/SelectClauseParser.d.ts +10 -0
  29. package/dist/parsers/SelectQueryParser.d.ts +13 -0
  30. package/dist/parsers/SourceAliasExpressionParser.d.ts +8 -0
  31. package/dist/parsers/SourceExpressionParser.d.ts +8 -0
  32. package/dist/parsers/SourceParser.d.ts +13 -0
  33. package/dist/parsers/SqlTokenizer.d.ts +64 -0
  34. package/dist/parsers/StringSpecifierExpressionParser.d.ts +8 -0
  35. package/dist/parsers/UnaryExpressionParser.d.ts +8 -0
  36. package/dist/parsers/ValueParser.d.ts +14 -0
  37. package/dist/parsers/ValuesQueryParser.d.ts +10 -0
  38. package/dist/parsers/WhereClauseParser.d.ts +9 -0
  39. package/dist/parsers/WindowClauseParser.d.ts +9 -0
  40. package/dist/parsers/WindowExpressionParser.d.ts +12 -0
  41. package/dist/parsers/WithClauseParser.d.ts +9 -0
  42. package/dist/tokenReaders/BaseTokenReader.d.ts +43 -0
  43. package/dist/tokenReaders/CommandTokenReader.d.ts +7 -0
  44. package/dist/tokenReaders/FunctionTokenReader.d.ts +11 -0
  45. package/dist/tokenReaders/IdentifierTokenReader.d.ts +15 -0
  46. package/dist/tokenReaders/LiteralTokenReader.d.ts +23 -0
  47. package/dist/tokenReaders/OperatorTokenReader.d.ts +5 -0
  48. package/dist/tokenReaders/ParameterTokenReader.d.ts +11 -0
  49. package/dist/tokenReaders/StringSpecifierTokenReader.d.ts +8 -0
  50. package/dist/tokenReaders/SymbolTokenReader.d.ts +12 -0
  51. package/dist/tokenReaders/TokenReaderManager.d.ts +53 -0
  52. package/dist/tokenReaders/TypeTokenReader.d.ts +11 -0
  53. package/dist/transformers/CTEBuilder.d.ts +52 -0
  54. package/dist/transformers/CTECollector.d.ts +81 -0
  55. package/dist/transformers/CTEDisabler.d.ts +77 -0
  56. package/dist/transformers/CTEInjector.d.ts +40 -0
  57. package/dist/transformers/CTENormalizer.d.ts +25 -0
  58. package/dist/transformers/Formatter.d.ts +67 -0
  59. package/dist/transformers/QueryNormalizer.d.ts +37 -0
  60. package/dist/transformers/SelectValueCollector.d.ts +62 -0
  61. package/dist/transformers/SelectableColumnCollector.d.ts +70 -0
  62. package/dist/transformers/TableSourceCollector.d.ts +92 -0
  63. package/dist/transformers/UpstreamSelectQueryFinder.d.ts +27 -0
  64. package/dist/utils/charLookupTable.d.ts +11 -0
  65. package/dist/utils/stringUtils.d.ts +43 -0
  66. package/package.json +6 -3
  67. package/.vs/CopilotSnapshots/02E79E48DFF5234787CB618DE990598A/48814CCF3E4E4B44A66AB8BC7D6CF6B6/904140CF7EDF0C98AEA45F0D36062FE1 +0 -1
  68. package/.vs/CopilotSnapshots/02E79E48DFF5234787CB618DE990598A/48814CCF3E4E4B44A66AB8BC7D6CF6B6/A32D1DB906C73FA74EF270AAEE165FC0 +0 -86
  69. package/.vs/CopilotSnapshots/02E79E48DFF5234787CB618DE990598A/48814CCF3E4E4B44A66AB8BC7D6CF6B6/E621434FB1D5415B14FBBCC11967E420 +0 -34
  70. package/.vs/CopilotSnapshots/02E79E48DFF5234787CB618DE990598A/48814CCF3E4E4B44A66AB8BC7D6CF6B6/EF71788BE39818EEA3F0164DC15E1BD7 +0 -170
  71. package/.vs/CopilotSnapshots/02E79E48DFF5234787CB618DE990598A/state.mpack +0 -1
  72. package/.vs/CopilotSnapshots/07B1013C385C5641A5F5100E0751210B/0C73C015B2C859419AFBD08BE1343FC0/BA5D2B145A59265D63FA3B3584344B02 +0 -236
  73. package/.vs/CopilotSnapshots/07B1013C385C5641A5F5100E0751210B/state.mpack +0 -1
  74. package/.vs/CopilotSnapshots/0D03762A9EA0CB4885F2114567F23F93/A9AF50781E77B849AA3262D2738D9338/1F95FD72006ED6E92629CEFD7B2C4FEC +0 -1
  75. package/.vs/CopilotSnapshots/0D03762A9EA0CB4885F2114567F23F93/A9AF50781E77B849AA3262D2738D9338/4CA7B9D3BC2D0A498DC0777EDA3F9B0F +0 -1
  76. package/.vs/CopilotSnapshots/0D03762A9EA0CB4885F2114567F23F93/A9AF50781E77B849AA3262D2738D9338/7B623BFBAEB4EB61A9585F0BC8039B06 +0 -19
  77. package/.vs/CopilotSnapshots/0D03762A9EA0CB4885F2114567F23F93/CA94452964F7A94B8ECE3B54EE21B50F/1F95FD72006ED6E92629CEFD7B2C4FEC +0 -5
  78. package/.vs/CopilotSnapshots/0D03762A9EA0CB4885F2114567F23F93/CA94452964F7A94B8ECE3B54EE21B50F/4CA7B9D3BC2D0A498DC0777EDA3F9B0F +0 -3
  79. package/.vs/CopilotSnapshots/0D03762A9EA0CB4885F2114567F23F93/CA94452964F7A94B8ECE3B54EE21B50F/7B623BFBAEB4EB61A9585F0BC8039B06 +0 -21
  80. package/.vs/CopilotSnapshots/0D03762A9EA0CB4885F2114567F23F93/state.mpack +0 -1
  81. package/.vs/CopilotSnapshots/10B71DC3C4C1C04E8602FA06D3925F98/23B181EB1228EF40ABCEF51E89FBF6E6/41035D2B1D57326B55F66372017E223A +0 -1
  82. package/.vs/CopilotSnapshots/10B71DC3C4C1C04E8602FA06D3925F98/23B181EB1228EF40ABCEF51E89FBF6E6/45EABF6EF6BDFAA58C941A29E98C9C83 +0 -113
  83. package/.vs/CopilotSnapshots/10B71DC3C4C1C04E8602FA06D3925F98/23B181EB1228EF40ABCEF51E89FBF6E6/748E0B8859CA1A5FDCA675C9E53B6D1C +0 -1
  84. package/.vs/CopilotSnapshots/10B71DC3C4C1C04E8602FA06D3925F98/23B181EB1228EF40ABCEF51E89FBF6E6/A250FF4AD59546A65FFDC6AA92A4698E +0 -1
  85. package/.vs/CopilotSnapshots/10B71DC3C4C1C04E8602FA06D3925F98/23B181EB1228EF40ABCEF51E89FBF6E6/C42432BC73D8AA122171FAB6EEB13CBC +0 -19
  86. package/.vs/CopilotSnapshots/10B71DC3C4C1C04E8602FA06D3925F98/state.mpack +0 -1
  87. package/.vs/CopilotSnapshots/13B40109875D434BB24880356492BE7E/828B96E81CC7014B887AA519767FACC3/437DAEC1EBBAF4F25ABA1B6A25EB6933 +0 -25
  88. package/.vs/CopilotSnapshots/13B40109875D434BB24880356492BE7E/state.mpack +0 -1
  89. package/.vs/CopilotSnapshots/245168908540D646ACBD4FDE8D6DD2D4/1CDE8BAB21868E4D893E119554BA87E5/904140CF7EDF0C98AEA45F0D36062FE1 +0 -63
  90. package/.vs/CopilotSnapshots/245168908540D646ACBD4FDE8D6DD2D4/1CDE8BAB21868E4D893E119554BA87E5/DFF70C60F68ECD9A4E4C3C74E4CC4DEE +0 -1
  91. package/.vs/CopilotSnapshots/245168908540D646ACBD4FDE8D6DD2D4/1CDE8BAB21868E4D893E119554BA87E5/EF71788BE39818EEA3F0164DC15E1BD7 +0 -170
  92. package/.vs/CopilotSnapshots/245168908540D646ACBD4FDE8D6DD2D4/state.mpack +0 -1
  93. package/.vs/CopilotSnapshots/3BACC9346120824DB30006E353477163/87C831E9EA1AA249A25A44D08CF8E0B5/EF71788BE39818EEA3F0164DC15E1BD7 +0 -328
  94. package/.vs/CopilotSnapshots/3BACC9346120824DB30006E353477163/state.mpack +0 -1
  95. package/.vs/CopilotSnapshots/3EFABA5D1530804CA04C606F5EFDDC38/14FE66AD0B834E488EECD9594AE72472/23E7151F0483C5BB5E663F83D4962FD4 +0 -1
  96. package/.vs/CopilotSnapshots/3EFABA5D1530804CA04C606F5EFDDC38/14FE66AD0B834E488EECD9594AE72472/2D4DCEBC89D52B097AEEEABA23C0EB59 +0 -1
  97. package/.vs/CopilotSnapshots/3EFABA5D1530804CA04C606F5EFDDC38/14FE66AD0B834E488EECD9594AE72472/7C951A8A572EA5C371FDE657AF968B9C +0 -1
  98. package/.vs/CopilotSnapshots/3EFABA5D1530804CA04C606F5EFDDC38/14FE66AD0B834E488EECD9594AE72472/A32D1DB906C73FA74EF270AAEE165FC0 +0 -1
  99. package/.vs/CopilotSnapshots/3EFABA5D1530804CA04C606F5EFDDC38/14FE66AD0B834E488EECD9594AE72472/B692C85119711C76235AA5D78F9F3818 +0 -1
  100. package/.vs/CopilotSnapshots/3EFABA5D1530804CA04C606F5EFDDC38/14FE66AD0B834E488EECD9594AE72472/E602628EF6D764C2C267810C92906DBA +0 -1
  101. package/.vs/CopilotSnapshots/3EFABA5D1530804CA04C606F5EFDDC38/14FE66AD0B834E488EECD9594AE72472/E621434FB1D5415B14FBBCC11967E420 +0 -1
  102. package/.vs/CopilotSnapshots/3EFABA5D1530804CA04C606F5EFDDC38/9C5A45FA50D5344FBB275F406599FF4E/23E7151F0483C5BB5E663F83D4962FD4 +0 -1
  103. package/.vs/CopilotSnapshots/3EFABA5D1530804CA04C606F5EFDDC38/9C5A45FA50D5344FBB275F406599FF4E/2D4DCEBC89D52B097AEEEABA23C0EB59 +0 -1
  104. package/.vs/CopilotSnapshots/3EFABA5D1530804CA04C606F5EFDDC38/9C5A45FA50D5344FBB275F406599FF4E/7C951A8A572EA5C371FDE657AF968B9C +0 -1
  105. package/.vs/CopilotSnapshots/3EFABA5D1530804CA04C606F5EFDDC38/9C5A45FA50D5344FBB275F406599FF4E/A32D1DB906C73FA74EF270AAEE165FC0 +0 -1
  106. package/.vs/CopilotSnapshots/3EFABA5D1530804CA04C606F5EFDDC38/9C5A45FA50D5344FBB275F406599FF4E/B692C85119711C76235AA5D78F9F3818 +0 -1
  107. package/.vs/CopilotSnapshots/3EFABA5D1530804CA04C606F5EFDDC38/9C5A45FA50D5344FBB275F406599FF4E/E602628EF6D764C2C267810C92906DBA +0 -1
  108. package/.vs/CopilotSnapshots/3EFABA5D1530804CA04C606F5EFDDC38/9C5A45FA50D5344FBB275F406599FF4E/E621434FB1D5415B14FBBCC11967E420 +0 -1
  109. package/.vs/CopilotSnapshots/3EFABA5D1530804CA04C606F5EFDDC38/9C5A45FA50D5344FBB275F406599FF4E/EF71788BE39818EEA3F0164DC15E1BD7 +0 -489
  110. package/.vs/CopilotSnapshots/3EFABA5D1530804CA04C606F5EFDDC38/state.mpack +0 -1
  111. package/.vs/CopilotSnapshots/4C16AB71DC018C46A734FBF0BF4AEDD9/0E5F1D40C0CAE848B8F9457F29A1F3FF/D03CD05B4F5C8B7C8CDF0B5E1961B3CA +0 -42
  112. package/.vs/CopilotSnapshots/4C16AB71DC018C46A734FBF0BF4AEDD9/462A64EF41A4BF42A18708B83E02FD6F/D03CD05B4F5C8B7C8CDF0B5E1961B3CA +0 -40
  113. package/.vs/CopilotSnapshots/4C16AB71DC018C46A734FBF0BF4AEDD9/90C95C12B91FA142BEF509B6FA329DE5/A3B20E10A19C7CA170132274D2F9312B +0 -9
  114. package/.vs/CopilotSnapshots/4C16AB71DC018C46A734FBF0BF4AEDD9/90C95C12B91FA142BEF509B6FA329DE5/D03CD05B4F5C8B7C8CDF0B5E1961B3CA +0 -1
  115. package/.vs/CopilotSnapshots/4C16AB71DC018C46A734FBF0BF4AEDD9/AD7513C9BBFE904AAB7F940397B95A99/D03CD05B4F5C8B7C8CDF0B5E1961B3CA +0 -42
  116. package/.vs/CopilotSnapshots/4C16AB71DC018C46A734FBF0BF4AEDD9/state.mpack +0 -1
  117. package/.vs/CopilotSnapshots/50E0417FAD2E524D887CB5763C2FB7B4/63A4C250D9DCE04B9F61D8833B89B5BF/EF71788BE39818EEA3F0164DC15E1BD7 +0 -174
  118. package/.vs/CopilotSnapshots/50E0417FAD2E524D887CB5763C2FB7B4/state.mpack +0 -1
  119. package/.vs/CopilotSnapshots/5EF2507B002AC14EA991043C37C36551/60FF68DE489DAD4FBCBBB54AA3F6A552/EF71788BE39818EEA3F0164DC15E1BD7 +0 -496
  120. package/.vs/CopilotSnapshots/5EF2507B002AC14EA991043C37C36551/state.mpack +0 -1
  121. package/.vs/CopilotSnapshots/6AA7610F1FB2B746821E54C28A8D109B/7FB78C0F8CB04F4AA6AF3315277B80F8/FB35DD13E708043D4CD8ACD54E14708F +0 -1
  122. package/.vs/CopilotSnapshots/6AA7610F1FB2B746821E54C28A8D109B/state.mpack +0 -1
  123. package/.vs/CopilotSnapshots/7F905F8BAC0DAD49BD507CA45C569AFD/5782E13CAB03A04E9E1EC5692F892170/BA5D2B145A59265D63FA3B3584344B02 +0 -5
  124. package/.vs/CopilotSnapshots/7F905F8BAC0DAD49BD507CA45C569AFD/5782E13CAB03A04E9E1EC5692F892170/EF71788BE39818EEA3F0164DC15E1BD7 +0 -158
  125. package/.vs/CopilotSnapshots/7F905F8BAC0DAD49BD507CA45C569AFD/9886598393C89944B51920C01EB650C9/BA5D2B145A59265D63FA3B3584344B02 +0 -35
  126. package/.vs/CopilotSnapshots/7F905F8BAC0DAD49BD507CA45C569AFD/state.mpack +0 -1
  127. package/.vs/CopilotSnapshots/8492D9C7A2D9514DB8A69D304B48BF3C/D2DA3C4E2131E84EA02E321802A65254/EF71788BE39818EEA3F0164DC15E1BD7 +0 -165
  128. package/.vs/CopilotSnapshots/8492D9C7A2D9514DB8A69D304B48BF3C/state.mpack +0 -1
  129. package/.vs/CopilotSnapshots/891A2DC0E5FA424CB8BDDA4FE26ED372/E244D49DDC79514DBA322770B03AE287/1CF9939611B0D194AC81951A171DF046 +0 -43
  130. package/.vs/CopilotSnapshots/891A2DC0E5FA424CB8BDDA4FE26ED372/state.mpack +0 -1
  131. package/.vs/CopilotSnapshots/8D302F8BAE46F54EA82AE1DED1A5D240/11E6D1F8E56D734F99C5216231273E8D/E621434FB1D5415B14FBBCC11967E420 +0 -66
  132. package/.vs/CopilotSnapshots/8D302F8BAE46F54EA82AE1DED1A5D240/24C69A83160FD844B0DEFECF8E1313DB/1CF9939611B0D194AC81951A171DF046 +0 -43
  133. package/.vs/CopilotSnapshots/8D302F8BAE46F54EA82AE1DED1A5D240/24C69A83160FD844B0DEFECF8E1313DB/E621434FB1D5415B14FBBCC11967E420 +0 -53
  134. package/.vs/CopilotSnapshots/8D302F8BAE46F54EA82AE1DED1A5D240/5E6D1BCD7CE81548AB445DE97505DC62/1CF9939611B0D194AC81951A171DF046 +0 -30
  135. package/.vs/CopilotSnapshots/8D302F8BAE46F54EA82AE1DED1A5D240/5E6D1BCD7CE81548AB445DE97505DC62/E621434FB1D5415B14FBBCC11967E420 +0 -53
  136. package/.vs/CopilotSnapshots/8D302F8BAE46F54EA82AE1DED1A5D240/EC4E81E0109C8F4BA1B5D9CFE1C122BC/E621434FB1D5415B14FBBCC11967E420 +0 -54
  137. package/.vs/CopilotSnapshots/8D302F8BAE46F54EA82AE1DED1A5D240/state.mpack +0 -1
  138. package/.vs/CopilotSnapshots/90C28D332F9B2949810126139FCA2640/6139F888FA743143B8E6C99306A478A6/30F913EA337870677E7C575773ECF531 +0 -130
  139. package/.vs/CopilotSnapshots/90C28D332F9B2949810126139FCA2640/F21743E379F9C1439F6A6405A289AA99/30F913EA337870677E7C575773ECF531 +0 -160
  140. package/.vs/CopilotSnapshots/90C28D332F9B2949810126139FCA2640/state.mpack +0 -1
  141. package/.vs/CopilotSnapshots/99E22E75C8AEDF4DB3A668A9ADF0BC43/2E2EFE66C5E05C4B809986E9B23D5409/45EABF6EF6BDFAA58C941A29E98C9C83 +0 -113
  142. package/.vs/CopilotSnapshots/99E22E75C8AEDF4DB3A668A9ADF0BC43/2E2EFE66C5E05C4B809986E9B23D5409/FB35DD13E708043D4CD8ACD54E14708F +0 -2
  143. package/.vs/CopilotSnapshots/99E22E75C8AEDF4DB3A668A9ADF0BC43/BE46916E3A8F2C4284792B951B674907/FB35DD13E708043D4CD8ACD54E14708F +0 -5
  144. package/.vs/CopilotSnapshots/99E22E75C8AEDF4DB3A668A9ADF0BC43/state.mpack +0 -1
  145. package/.vs/CopilotSnapshots/A6D99EA2D3819F45AD8087D7487F9318/state.mpack +0 -1
  146. package/.vs/CopilotSnapshots/A78C77F7A237704D95BCFE1BBC39FB0F/68BA9941941DC244BC799D89DB2BF86E/7C951A8A572EA5C371FDE657AF968B9C +0 -96
  147. package/.vs/CopilotSnapshots/A78C77F7A237704D95BCFE1BBC39FB0F/state.mpack +0 -1
  148. package/.vs/CopilotSnapshots/AD2203F1B9FECE44BB6D5DC5D83E87AA/734AB1B2974F9545B7F12AAA5842524B/840203FFA9CCF5B33DFD5C7CC5B13527 +0 -125
  149. package/.vs/CopilotSnapshots/AD2203F1B9FECE44BB6D5DC5D83E87AA/state.mpack +0 -1
  150. package/.vs/CopilotSnapshots/AEC950C2FAD20147AEE8E325E2CA0A78/89CF3F527D0687479D14274E8CDF3DFF/1CF9939611B0D194AC81951A171DF046 +0 -30
  151. package/.vs/CopilotSnapshots/AEC950C2FAD20147AEE8E325E2CA0A78/89CF3F527D0687479D14274E8CDF3DFF/BA5D2B145A59265D63FA3B3584344B02 +0 -158
  152. package/.vs/CopilotSnapshots/AEC950C2FAD20147AEE8E325E2CA0A78/E495EBF64DC77A4BBD470B92DB0391C4/1CF9939611B0D194AC81951A171DF046 +0 -30
  153. package/.vs/CopilotSnapshots/AEC950C2FAD20147AEE8E325E2CA0A78/E495EBF64DC77A4BBD470B92DB0391C4/BA5D2B145A59265D63FA3B3584344B02 +0 -67
  154. package/.vs/CopilotSnapshots/AEC950C2FAD20147AEE8E325E2CA0A78/state.mpack +0 -1
  155. package/.vs/CopilotSnapshots/AF947096A34634478C5D084B8442CD81/1FCDCC65B992954DB78BD1F46892312B/44EB81A1663981E3F52FFFECE3A2918E +0 -143
  156. package/.vs/CopilotSnapshots/AF947096A34634478C5D084B8442CD81/1FCDCC65B992954DB78BD1F46892312B/E602628EF6D764C2C267810C92906DBA +0 -253
  157. package/.vs/CopilotSnapshots/AF947096A34634478C5D084B8442CD81/state.mpack +0 -1
  158. package/.vs/CopilotSnapshots/B1DED422A45D5740BA4EE745C04B2B0B/226F822A22D6BD44BCF56BAA47FA274C/EF71788BE39818EEA3F0164DC15E1BD7 +0 -174
  159. package/.vs/CopilotSnapshots/B1DED422A45D5740BA4EE745C04B2B0B/state.mpack +0 -1
  160. package/.vs/CopilotSnapshots/B5DD5E50ACD0FD4998564F0FDE7FAEE0/97908D1D83AD2D4EA7082388DE07CBB4/44EB81A1663981E3F52FFFECE3A2918E +0 -148
  161. package/.vs/CopilotSnapshots/B5DD5E50ACD0FD4998564F0FDE7FAEE0/state.mpack +0 -1
  162. package/.vs/CopilotSnapshots/B8ADCAC0C19DB14FB8388BA59A86BC74/7ED3F1557FD7BE4DBEAF9B59FD442925/44EB81A1663981E3F52FFFECE3A2918E +0 -152
  163. package/.vs/CopilotSnapshots/B8ADCAC0C19DB14FB8388BA59A86BC74/state.mpack +0 -1
  164. package/.vs/CopilotSnapshots/BDFF50BBC1A93747A0001969C3BD195F/0130610530354840BB06BF4F4E744242/D03CD05B4F5C8B7C8CDF0B5E1961B3CA +0 -138
  165. package/.vs/CopilotSnapshots/BDFF50BBC1A93747A0001969C3BD195F/5F1C58CEFBAF1B4E80C4CF38B83A0A5F/D03CD05B4F5C8B7C8CDF0B5E1961B3CA +0 -129
  166. package/.vs/CopilotSnapshots/BDFF50BBC1A93747A0001969C3BD195F/BDC3D099FCCCC147848630670EED45CF/D03CD05B4F5C8B7C8CDF0B5E1961B3CA +0 -139
  167. package/.vs/CopilotSnapshots/BDFF50BBC1A93747A0001969C3BD195F/D9E2B1CDD1E2BB468E0703BEF6706FF6/D03CD05B4F5C8B7C8CDF0B5E1961B3CA +0 -139
  168. package/.vs/CopilotSnapshots/BDFF50BBC1A93747A0001969C3BD195F/state.mpack +0 -1
  169. package/.vs/CopilotSnapshots/C1E2C1A9C1DCFA46B1D5F1C6F36A152D/BC91C0FD38D8694BB992A8DEC1833670/148399016C7971F5592DAADBB9523118 +0 -120
  170. package/.vs/CopilotSnapshots/C1E2C1A9C1DCFA46B1D5F1C6F36A152D/state.mpack +0 -1
  171. package/.vs/CopilotSnapshots/C4D8E85893425E4F86F18850F5CA5C08/6C0950E97063C547A72D737E618436B0/1CF9939611B0D194AC81951A171DF046 +0 -9
  172. package/.vs/CopilotSnapshots/C4D8E85893425E4F86F18850F5CA5C08/6C0950E97063C547A72D737E618436B0/DFF70C60F68ECD9A4E4C3C74E4CC4DEE +0 -84
  173. package/.vs/CopilotSnapshots/C4D8E85893425E4F86F18850F5CA5C08/state.mpack +0 -1
  174. package/.vs/CopilotSnapshots/C5C3CA4C37B14A47B6BC753D09F69117/03EA1376F04C0D468FD0851119159D34/44EB81A1663981E3F52FFFECE3A2918E +0 -148
  175. package/.vs/CopilotSnapshots/C5C3CA4C37B14A47B6BC753D09F69117/03EA1376F04C0D468FD0851119159D34/E602628EF6D764C2C267810C92906DBA +0 -265
  176. package/.vs/CopilotSnapshots/C5C3CA4C37B14A47B6BC753D09F69117/6887503C15557349842029E58C9C0D11/44EB81A1663981E3F52FFFECE3A2918E +0 -152
  177. package/.vs/CopilotSnapshots/C5C3CA4C37B14A47B6BC753D09F69117/6887503C15557349842029E58C9C0D11/E602628EF6D764C2C267810C92906DBA +0 -265
  178. package/.vs/CopilotSnapshots/C5C3CA4C37B14A47B6BC753D09F69117/state.mpack +0 -1
  179. package/.vs/CopilotSnapshots/C7190BBC8D95D44F9CF8E65E3E8C9CFD/4B6D07592F8EDC4AA3FF742B1F9531CC/1B80EB15A2FEBEC11C8210C5461F8DB7 +0 -43
  180. package/.vs/CopilotSnapshots/C7190BBC8D95D44F9CF8E65E3E8C9CFD/state.mpack +0 -1
  181. package/.vs/CopilotSnapshots/C79D12964917E44F9A5BB9D8FA725A0C/2071ADB146D8F7499419123B2A595A41/03E00441128DC70FFEA043158417AC9A +0 -15
  182. package/.vs/CopilotSnapshots/C79D12964917E44F9A5BB9D8FA725A0C/6ECBF707FE2A88418EA1649CE46068D5/03E00441128DC70FFEA043158417AC9A +0 -1
  183. package/.vs/CopilotSnapshots/C79D12964917E44F9A5BB9D8FA725A0C/70BAB1D82B755F47A2351CA905ACC0F1/03E00441128DC70FFEA043158417AC9A +0 -49
  184. package/.vs/CopilotSnapshots/C79D12964917E44F9A5BB9D8FA725A0C/99DDFADAEC5CA14D92CC470523A11743/03E00441128DC70FFEA043158417AC9A +0 -39
  185. package/.vs/CopilotSnapshots/C79D12964917E44F9A5BB9D8FA725A0C/state.mpack +0 -1
  186. package/.vs/CopilotSnapshots/D533D78C39683A4188A2CEC902BC03CD/2445F4111C26EB4DA5404F930E140F56/840203FFA9CCF5B33DFD5C7CC5B13527 +0 -6
  187. package/.vs/CopilotSnapshots/D533D78C39683A4188A2CEC902BC03CD/2445F4111C26EB4DA5404F930E140F56/C27E5C1787B7957BF6F0C3D417890141 +0 -1
  188. package/.vs/CopilotSnapshots/D533D78C39683A4188A2CEC902BC03CD/state.mpack +0 -1
  189. package/.vs/CopilotSnapshots/DCAA5A718EC8304685D14C52356D80E0/5FC7C36C7769414C80BFF27A07BB5063/BE400B34D9700403D2BA3A1AA6B1EF1D +0 -15
  190. package/.vs/CopilotSnapshots/DCAA5A718EC8304685D14C52356D80E0/A4DD9B92084D8E48A95435EDB2B14545/86848C7099AD75EE4E8F10E066F49671 +0 -15
  191. package/.vs/CopilotSnapshots/DCAA5A718EC8304685D14C52356D80E0/A4DD9B92084D8E48A95435EDB2B14545/BE400B34D9700403D2BA3A1AA6B1EF1D +0 -15
  192. package/.vs/CopilotSnapshots/DCAA5A718EC8304685D14C52356D80E0/state.mpack +0 -1
  193. package/.vs/CopilotSnapshots/DCF62F751B748642A0BF5D5125AB6769/5F324CB20D1B5045A13090FA9D177B74/7C951A8A572EA5C371FDE657AF968B9C +0 -96
  194. package/.vs/CopilotSnapshots/DCF62F751B748642A0BF5D5125AB6769/5F324CB20D1B5045A13090FA9D177B74/B692C85119711C76235AA5D78F9F3818 +0 -73
  195. package/.vs/CopilotSnapshots/DCF62F751B748642A0BF5D5125AB6769/5F324CB20D1B5045A13090FA9D177B74/EF71788BE39818EEA3F0164DC15E1BD7 +0 -182
  196. package/.vs/CopilotSnapshots/DCF62F751B748642A0BF5D5125AB6769/C1287B2893D30D40A46C30DC2CE05178/7C951A8A572EA5C371FDE657AF968B9C +0 -96
  197. package/.vs/CopilotSnapshots/DCF62F751B748642A0BF5D5125AB6769/C1287B2893D30D40A46C30DC2CE05178/B692C85119711C76235AA5D78F9F3818 +0 -98
  198. package/.vs/CopilotSnapshots/DCF62F751B748642A0BF5D5125AB6769/CA6304DFE7764A4C87ACE5816CDB7CD9/7C951A8A572EA5C371FDE657AF968B9C +0 -96
  199. package/.vs/CopilotSnapshots/DCF62F751B748642A0BF5D5125AB6769/CA6304DFE7764A4C87ACE5816CDB7CD9/B692C85119711C76235AA5D78F9F3818 +0 -21
  200. package/.vs/CopilotSnapshots/DCF62F751B748642A0BF5D5125AB6769/CA6304DFE7764A4C87ACE5816CDB7CD9/EF71788BE39818EEA3F0164DC15E1BD7 +0 -176
  201. package/.vs/CopilotSnapshots/DCF62F751B748642A0BF5D5125AB6769/state.mpack +0 -1
  202. package/.vs/VSWorkspaceState.json +0 -6
  203. package/.vs/slnx.sqlite +0 -0
  204. package/.vs/ts-sample/CopilotIndices/17.13.433.20974/CodeChunks.db +0 -0
  205. package/.vs/ts-sample/CopilotIndices/17.13.433.20974/SemanticSymbols.db +0 -0
  206. package/.vs/ts-sample/CopilotIndices/17.13.439.2385/CodeChunks.db +0 -0
  207. package/.vs/ts-sample/CopilotIndices/17.13.439.2385/SemanticSymbols.db +0 -0
  208. package/.vs/ts-sample/CopilotIndices/17.13.441.19478/CodeChunks.db +0 -0
  209. package/.vs/ts-sample/CopilotIndices/17.13.441.19478/SemanticSymbols.db +0 -0
  210. package/.vs/ts-sample/FileContentIndex/2fa9d8cc-9158-496d-aa9b-3a471d46a157.vsidx +0 -0
  211. package/.vs/ts-sample/FileContentIndex/5530f45b-244e-4271-b3e3-d8250f03da64.vsidx +0 -0
  212. package/.vs/ts-sample/FileContentIndex/75f95b5d-c8f7-49ca-a3d7-d1d8f63db437.vsidx +0 -0
  213. package/.vs/ts-sample/FileContentIndex/abb2aeeb-f62a-4ca7-bfbf-7a1eada625a5.vsidx +0 -0
  214. package/.vs/ts-sample/FileContentIndex/fc749b54-0f95-45f6-ac75-a8ab3409a5ce.vsidx +0 -0
  215. package/.vs/ts-sample/config/applicationhost.config +0 -1026
  216. package/.vs/ts-sample/copilot-chat/3c67db7d/sessions/0901b413-5d87-4b43-b248-80356492be7e +0 -0
  217. package/.vs/ts-sample/copilot-chat/3c67db7d/sessions/0f61a76a-b21f-46b7-821e-54c28a8d109b +0 -0
  218. package/.vs/ts-sample/copilot-chat/3c67db7d/sessions/101aef14-dd28-4de3-b2eb-e0b26d587b3a +0 -0
  219. package/.vs/ts-sample/copilot-chat/3c67db7d/sessions/22d4deb1-5da4-4057-ba4e-e745c04b2b0b +0 -0
  220. package/.vs/ts-sample/copilot-chat/3c67db7d/sessions/2a76030d-a09e-48cb-85f2-114567f23f93 +0 -0
  221. package/.vs/ts-sample/copilot-chat/3c67db7d/sessions/2c6d08ca-cb98-4233-8f7c-011c3b409234 +0 -0
  222. package/.vs/ts-sample/copilot-chat/3c67db7d/sessions/338dc290-9b2f-4929-8101-26139fca2640 +0 -0
  223. package/.vs/ts-sample/copilot-chat/3c67db7d/sessions/34c9ac3b-2061-4d82-b300-06e353477163 +0 -0
  224. package/.vs/ts-sample/copilot-chat/3c67db7d/sessions/3c01b107-5c38-4156-a5f5-100e0751210b +0 -0
  225. package/.vs/ts-sample/copilot-chat/3c67db7d/sessions/489ee702-f5df-4723-87cb-618de990598a +0 -0
  226. package/.vs/ts-sample/copilot-chat/3c67db7d/sessions/4ccac3c5-b137-474a-b6bc-753d09f69117 +0 -0
  227. package/.vs/ts-sample/copilot-chat/3c67db7d/sessions/505eddb5-d0ac-49fd-9856-4f0fde7faee0 +0 -0
  228. package/.vs/ts-sample/copilot-chat/3c67db7d/sessions/58e8d8c4-4293-4f5e-86f1-8850f5ca5c08 +0 -0
  229. package/.vs/ts-sample/copilot-chat/3c67db7d/sessions/5dbafa3e-3015-4c80-a04c-606f5efddc38 +0 -0
  230. package/.vs/ts-sample/copilot-chat/3c67db7d/sessions/5f29f527-e43a-4661-b60e-ff772041f413 +0 -0
  231. package/.vs/ts-sample/copilot-chat/3c67db7d/sessions/6248dfd7-38ae-4fa6-9176-2fdc0694c3e8 +0 -0
  232. package/.vs/ts-sample/copilot-chat/3c67db7d/sessions/66fcbd64-32dc-436d-80e6-7435a1a3ecf1 +0 -0
  233. package/.vs/ts-sample/copilot-chat/3c67db7d/sessions/6f9ad733-d555-4d2c-b073-eb6a1aada347 +0 -0
  234. package/.vs/ts-sample/copilot-chat/3c67db7d/sessions/715aaadc-c88e-4630-85d1-4c52356d80e0 +0 -0
  235. package/.vs/ts-sample/copilot-chat/3c67db7d/sessions/71ab164c-01dc-468c-a734-fbf0bf4aedd9 +0 -0
  236. package/.vs/ts-sample/copilot-chat/3c67db7d/sessions/752ee299-aec8-4ddf-b3a6-68a9adf0bc43 +0 -0
  237. package/.vs/ts-sample/copilot-chat/3c67db7d/sessions/752ff6dc-741b-4286-a0bf-5d5125ab6769 +0 -0
  238. package/.vs/ts-sample/copilot-chat/3c67db7d/sessions/7b50f25e-2a00-4ec1-a991-043c37c36551 +0 -0
  239. package/.vs/ts-sample/copilot-chat/3c67db7d/sessions/7f41e050-2ead-4d52-887c-b5763c2fb7b4 +0 -0
  240. package/.vs/ts-sample/copilot-chat/3c67db7d/sessions/85b50c9e-8895-4085-89c1-934ad2704744 +0 -0
  241. package/.vs/ts-sample/copilot-chat/3c67db7d/sessions/8b2f308d-46ae-4ef5-a82a-e1ded1a5d240 +0 -0
  242. package/.vs/ts-sample/copilot-chat/3c67db7d/sessions/8b5f907f-0dac-49ad-bd50-7ca45c569afd +0 -0
  243. package/.vs/ts-sample/copilot-chat/3c67db7d/sessions/8cd733d5-6839-413a-88a2-cec902bc03cd +0 -0
  244. package/.vs/ts-sample/copilot-chat/3c67db7d/sessions/90685124-4085-46d6-acbd-4fde8d6dd2d4 +0 -0
  245. package/.vs/ts-sample/copilot-chat/3c67db7d/sessions/96129dc7-1749-4fe4-9a5b-b9d8fa725a0c +0 -0
  246. package/.vs/ts-sample/copilot-chat/3c67db7d/sessions/967094af-46a3-4734-8c5d-084b8442cd81 +0 -0
  247. package/.vs/ts-sample/copilot-chat/3c67db7d/sessions/a29ed9a6-81d3-459f-ad80-87d7487f9318 +0 -0
  248. package/.vs/ts-sample/copilot-chat/3c67db7d/sessions/a9c1e2c1-dcc1-46fa-b1d5-f1c6f36a152d +0 -0
  249. package/.vs/ts-sample/copilot-chat/3c67db7d/sessions/badc76f4-d284-4b6c-94e9-abdbc74de540 +0 -0
  250. package/.vs/ts-sample/copilot-chat/3c67db7d/sessions/bb50ffbd-a9c1-4737-a000-1969c3bd195f +0 -0
  251. package/.vs/ts-sample/copilot-chat/3c67db7d/sessions/bc0b19c7-958d-4fd4-9cf8-e65e3e8c9cfd +0 -0
  252. package/.vs/ts-sample/copilot-chat/3c67db7d/sessions/c02d1a89-fae5-4c42-b8bd-da4fe26ed372 +0 -0
  253. package/.vs/ts-sample/copilot-chat/3c67db7d/sessions/c0caadb8-9dc1-4fb1-b838-8ba59a86bc74 +0 -0
  254. package/.vs/ts-sample/copilot-chat/3c67db7d/sessions/c250c9ae-d2fa-4701-aee8-e325e2ca0a78 +0 -0
  255. package/.vs/ts-sample/copilot-chat/3c67db7d/sessions/c31db710-c1c4-4ec0-8602-fa06d3925f98 +0 -0
  256. package/.vs/ts-sample/copilot-chat/3c67db7d/sessions/c7d99284-d9a2-4d51-b8a6-9d304b48bf3c +0 -0
  257. package/.vs/ts-sample/copilot-chat/3c67db7d/sessions/ddd1fab4-4016-4cfc-bf9f-f4a85bdfc112 +0 -0
  258. package/.vs/ts-sample/copilot-chat/3c67db7d/sessions/f10322ad-feb9-44ce-bb6d-5dc5d83e87aa +0 -0
  259. package/.vs/ts-sample/copilot-chat/3c67db7d/sessions/f7778ca7-37a2-4d70-95bc-fe1bbc39fb0f +0 -0
  260. package/.vs/ts-sample/v17/.suo +0 -0
  261. package/.vs/ts-sample/v17/.wsuo +0 -0
  262. package/.vs/ts-sample/v17/DocumentLayout.backup.json +0 -425
  263. package/.vs/ts-sample/v17/DocumentLayout.json +0 -423
  264. package/.vs/ts-sample/v17/TestStore/0/000.testlog +0 -0
  265. package/.vs/ts-sample/v17/TestStore/0/testlog.manifest +0 -0
@@ -0,0 +1,43 @@
1
+ /**
2
+ * Utilities for string operations during tokenization
3
+ */
4
+ export declare class StringUtils {
5
+ /**
6
+ * Creates a visual representation of an error position in text
7
+ * @param input The input text
8
+ * @param errPosition The error position
9
+ * @returns A string with a caret pointing to the error position
10
+ */
11
+ static getDebugPositionInfo(input: string, errPosition: number): string;
12
+ /**
13
+ * Skip white space characters.
14
+ */
15
+ private static skipWhiteSpace;
16
+ /**
17
+ * Skip line comment.
18
+ */
19
+ private static readLineComment;
20
+ /**
21
+ * Skip block comment.
22
+ */
23
+ private static readBlockComment;
24
+ /**
25
+ * Skip white space characters and SQL comments.
26
+ * @returns Object containing the new position and an array of skipped comments
27
+ */
28
+ static readWhiteSpaceAndComment(input: string, position: number): {
29
+ position: number;
30
+ lines: string[];
31
+ };
32
+ /**
33
+ * Read a regular identifier.
34
+ */
35
+ static readRegularIdentifier(input: string, position: number): {
36
+ identifier: string;
37
+ newPosition: number;
38
+ };
39
+ static tryReadRegularIdentifier(input: string, position: number): {
40
+ identifier: string;
41
+ newPosition: number;
42
+ } | null;
43
+ }
package/package.json CHANGED
@@ -1,9 +1,9 @@
1
1
  {
2
2
  "name": "rawsql-ts",
3
- "version": "0.1.0-beta.6",
3
+ "version": "0.1.0-beta.8",
4
4
  "description": "[beta]High-performance SQL parser and AST analyzer written in TypeScript. Provides fast parsing and advanced transformation capabilities.",
5
5
  "main": "dist/index.js",
6
- "types": "src/index.d.ts",
6
+ "types": "dist/index.d.ts",
7
7
  "scripts": {
8
8
  "test": "vitest run",
9
9
  "test:watch": "vitest",
@@ -32,5 +32,8 @@
32
32
  "ts-node": "^10.9.2",
33
33
  "typescript": "^5.8.2",
34
34
  "vitest": "^1.5.2"
35
- }
35
+ },
36
+ "files": [
37
+ "dist"
38
+ ]
36
39
  }
@@ -1,86 +0,0 @@
1
- import { Lexeme } from '../models/Lexeme';
2
- import { TokenType } from '../enums/tokenType';
3
- import { StringUtils } from '../utils/stringUtils';
4
-
5
- /**
6
- * Base class for token readers
7
- */
8
- export abstract class BaseTokenReader {
9
- protected input: string;
10
- protected position: number;
11
-
12
- constructor(input: string, position: number) {
13
- this.input = input;
14
- this.position = position;
15
- }
16
-
17
- /**
18
- * Get the current position in the input
19
- */
20
- public getPosition(): number {
21
- return this.position;
22
- }
23
-
24
- /**
25
- * Set the position in the input
26
- */
27
- public setPosition(position: number): void {
28
- this.position = position;
29
- }
30
-
31
- /**
32
- * Check if we've reached the end of input
33
- */
34
- protected isEndOfInput(shift: number = 0): boolean {
35
- return this.position + shift >= this.input.length;
36
- }
37
-
38
- /**
39
- * Check if we can read more characters
40
- */
41
- protected canRead(shift: number = 0): boolean {
42
- return !this.isEndOfInput(shift);
43
- }
44
-
45
- /**
46
- * Read an expected character
47
- */
48
- protected read(expectChar: string): string {
49
- if (this.isEndOfInput()) {
50
- throw new Error(`Unexpected character. expect: ${expectChar}, actual: EndOfInput, position: ${this.position}`);
51
- }
52
-
53
- if (this.input[this.position] !== expectChar) {
54
- throw new Error(`Unexpected character. expect: ${expectChar}, actual: ${this.input[this.position]}, position: ${this.position}`);
55
- }
56
-
57
- const char = this.input[this.position];
58
- this.position++;
59
- return char;
60
- }
61
-
62
- /**
63
- * Create a lexeme with the specified type and value
64
- */
65
- protected createLexeme(type: TokenType, value: string, command?: string): Lexeme {
66
- return {
67
- type,
68
- value,
69
- command
70
- };
71
- }
72
-
73
- /**
74
- * Get debug info for error reporting
75
- */
76
- protected getDebugPositionInfo(errPosition: number): string {
77
- return StringUtils.getDebugPositionInfo(this.input, errPosition);
78
- }
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
- }
@@ -1,34 +0,0 @@
1
- /**
2
- * Fast character classification utilities for SQL tokenization
3
- */
4
- export class CharLookupTable {
5
- private static readonly WHITESPACE = new Set([' ', '\t', '\r', '\n']);
6
- private static readonly DIGITS = new Set(['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']);
7
- private static readonly HEX_CHARS = new Set([
8
- '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
9
- 'a', 'b', 'c', 'd', 'e', 'f',
10
- 'A', 'B', 'C', 'D', 'E', 'F'
11
- ]);
12
- private static readonly DELIMITERS = new Set([' ', '.', ',', '(', ')', '+', '-', '*', '/']);
13
- private static readonly NAMED_PARAMETER_PREFIX = new Set(['@', ':', '$']);
14
-
15
- public static isWhitespace(char: string): boolean {
16
- return CharLookupTable.WHITESPACE.has(char);
17
- }
18
-
19
- public static isDigit(char: string): boolean {
20
- return CharLookupTable.DIGITS.has(char);
21
- }
22
-
23
- public static isHexChar(char: string): boolean {
24
- return CharLookupTable.HEX_CHARS.has(char);
25
- }
26
-
27
- public static isDelimiter(char: string): boolean {
28
- return CharLookupTable.DELIMITERS.has(char);
29
- }
30
-
31
- public static isNamedParameterPrefix(char: string): boolean {
32
- return CharLookupTable.NAMED_PARAMETER_PREFIX.has(char);
33
- }
34
- }
@@ -1,170 +0,0 @@
1
- import { Lexeme } from './models/Lexeme';
2
- import { IdentifierTokenReader } from './tokenReaders/IdentifierTokenReader';
3
- import { LiteralTokenReader } from './tokenReaders/LiteralTokenReader';
4
- import { ParameterTokenReader } from './tokenReaders/ParameterTokenReader';
5
- import { SymbolTokenReader } from './tokenReaders/SymbolTokenReader';
6
-
7
- export class SqlTokenizer {
8
- /// <summary>
9
- /// Input string.
10
- /// </summary>
11
- private input: string;
12
-
13
- /// <summary>
14
- /// Current position in the input string.
15
- /// </summary>
16
- private position: number;
17
-
18
- constructor(input: string) {
19
- this.input = input;
20
- this.position = 0;
21
- }
22
-
23
- private isEndOfInput(shift: number = 0): boolean {
24
- return this.position + shift >= this.input.length;
25
- }
26
-
27
- private canRead(shift: number = 0): boolean {
28
- return !this.isEndOfInput(shift);
29
- }
30
-
31
- public readLexmes(): Lexeme[] {
32
- const lexemes: Lexeme[] = [];
33
-
34
- // Skip whitespace and comments at the start
35
- this.skipWhiteSpacesAndComments();
36
-
37
- // Initialize each token reader
38
- const symbolReader = new SymbolTokenReader(this.input, this.position);
39
- const identifierReader = new IdentifierTokenReader(this.input, this.position);
40
- const literalReader = new LiteralTokenReader(this.input, this.position);
41
- const parameterReader = new ParameterTokenReader(this.input, this.position);
42
-
43
- // Track the previous token
44
- let previous: Lexeme | null = null;
45
-
46
- // Read tokens until the end of the input is reached
47
- while (this.canRead()) {
48
- let lexeme: Lexeme | null = null;
49
-
50
- // Attempt to read with each reader in order
51
- parameterReader.setPosition(this.position);
52
- lexeme = parameterReader.tryRead(previous);
53
-
54
- if (!lexeme) {
55
- literalReader.setPosition(this.position);
56
- lexeme = literalReader.tryRead(previous);
57
- }
58
-
59
- if (!lexeme) {
60
- identifierReader.setPosition(this.position);
61
- lexeme = identifierReader.tryRead(previous);
62
- }
63
-
64
- if (!lexeme) {
65
- symbolReader.setPosition(this.position);
66
- lexeme = symbolReader.tryRead(previous);
67
- }
68
-
69
- // If a token is read by any reader
70
- if (lexeme) {
71
- lexemes.push(lexeme);
72
- previous = lexeme;
73
-
74
- // Update position
75
- const newPos = Math.max(
76
- symbolReader.getPosition(),
77
- literalReader.getPosition(),
78
- identifierReader.getPosition(),
79
- parameterReader.getPosition()
80
- );
81
- this.position = newPos;
82
-
83
- // Skip whitespace and comments after the token
84
- this.skipWhiteSpacesAndComments();
85
- } else {
86
- // Exception
87
- throw new Error(`Unexpected character. actual: ${this.input[this.position]}, position: ${this.position}`);
88
- }
89
- }
90
-
91
- return lexemes;
92
- }
93
-
94
- /// <summary>
95
- /// Skip white space characters and sql comments.
96
- /// </summary>
97
- private skipWhiteSpacesAndComments(): void {
98
- while (true) {
99
- if (this.skipWhiteSpace()) {
100
- continue;
101
- }
102
- if (this.skipLineComment()) {
103
- continue;
104
- }
105
- if (this.skipBlockComment()) {
106
- continue;
107
- }
108
- break;
109
- }
110
- }
111
-
112
- private skipWhiteSpace(): boolean {
113
- const start = this.position;
114
-
115
- // Skip tab, newline, and space characters
116
- const whitespace = new Set([' ', '\r', '\n', '\t']);
117
-
118
- while (this.canRead()) {
119
- if (!whitespace.has(this.input[this.position])) {
120
- break;
121
- }
122
- this.position++;
123
- }
124
- return start !== this.position;
125
- }
126
-
127
- private skipLineComment(): boolean {
128
- // At least 2 characters are needed. '--'
129
- if (this.isEndOfInput(1)) {
130
- return false;
131
- }
132
-
133
- if (this.input[this.position] === '-' && this.input[this.position + 1] === '-') {
134
- this.position += 2;
135
-
136
- while (this.canRead() && this.input[this.position] !== '\n') {
137
- this.position++;
138
- }
139
- return true;
140
- }
141
-
142
- return false;
143
- }
144
-
145
- private skipBlockComment(): boolean {
146
- // At least 4 characters are needed. '/**/'
147
- if (this.isEndOfInput(3)) {
148
- return false;
149
- }
150
-
151
- // Record the start position of the comment to track error location
152
- const start = this.position;
153
-
154
- if (this.input[this.position] === '/' && this.input[this.position + 1] === '*') {
155
- this.position += 2;
156
-
157
- while (this.canRead(1)) {
158
- if (this.input[this.position] === '*' && this.input[this.position + 1] === '/') {
159
- this.position += 2;
160
- return true;
161
- }
162
- this.position++;
163
- }
164
-
165
- throw new Error(`Block comment is not closed. position: ${start}`);
166
- }
167
-
168
- return false;
169
- }
170
- }
@@ -1 +0,0 @@
1
- ��SessionId��$489ee702-f5df-4723-87cb-618de990598a��Id�4Microsoft.VisualStudio.Conversations.Chat.HelpWindow�CorrelationStates���CorrelationId�$cf4c8148-4e3e-444b-a66a-b8bc7d6cf6b6�Snapshots�� E621434FB1D5415B14FBBCC11967E420��SavedFileName١C:\Users\mssgm\Documents\GitHub\ts-sample\.vs\CopilotSnapshots\02E79E48DFF5234787CB618DE990598A\48814CCF3E4E4B44A66AB8BC7D6CF6B6\E621434FB1D5415B14FBBCC11967E420�OriginalFilePath�FC:\Users\mssgm\Documents\GitHub\ts-sample\src\utils\charLookupTable.ts�NewFileMarker�� 904140CF7EDF0C98AEA45F0D36062FE1��SavedFileName١C:\Users\mssgm\Documents\GitHub\ts-sample\.vs\CopilotSnapshots\02E79E48DFF5234787CB618DE990598A\48814CCF3E4E4B44A66AB8BC7D6CF6B6\904140CF7EDF0C98AEA45F0D36062FE1�OriginalFilePath�JC:\Users\mssgm\Documents\GitHub\ts-sample\src\utils\tokenReaderRegistry.ts�NewFileMarker�� A32D1DB906C73FA74EF270AAEE165FC0��SavedFileName١C:\Users\mssgm\Documents\GitHub\ts-sample\.vs\CopilotSnapshots\02E79E48DFF5234787CB618DE990598A\48814CCF3E4E4B44A66AB8BC7D6CF6B6\A32D1DB906C73FA74EF270AAEE165FC0�OriginalFilePath�MC:\Users\mssgm\Documents\GitHub\ts-sample\src\tokenReaders\BaseTokenReader.ts�NewFileMarker�� EF71788BE39818EEA3F0164DC15E1BD7��SavedFileName١C:\Users\mssgm\Documents\GitHub\ts-sample\.vs\CopilotSnapshots\02E79E48DFF5234787CB618DE990598A\48814CCF3E4E4B44A66AB8BC7D6CF6B6\EF71788BE39818EEA3F0164DC15E1BD7�OriginalFilePath�=C:\Users\mssgm\Documents\GitHub\ts-sample\src\sqlTokenizer.ts�NewFileMarker�
@@ -1,236 +0,0 @@
1
- import { TokenType } from "../src/enums/tokenType";
2
- import { SqlTokenizer } from "../src/sqlTokenizer";
3
-
4
- test('tokenizes addition operator', () => {
5
- // Arrange
6
- const tokenizer = new SqlTokenizer('1+1');
7
-
8
- // Act
9
- const tokens = tokenizer.readLexmes();
10
-
11
- // Assert
12
- expect(tokens.length).toBe(3);
13
- expect(tokens[1].type).toBe(TokenType.Operator);
14
- expect(tokens[1].value).toBe('+');
15
- });
16
-
17
- test('tokenizes multiplication operator', () => {
18
- // Arrange
19
- const tokenizer = new SqlTokenizer('1*2');
20
-
21
- // Act
22
- const tokens = tokenizer.readLexmes();
23
-
24
- // Assert
25
- expect(tokens.length).toBe(3);
26
- expect(tokens[1].type).toBe(TokenType.Operator);
27
- expect(tokens[1].value).toBe('*');
28
- });
29
-
30
- test('tokenizes division operator', () => {
31
- // Arrange
32
- const tokenizer = new SqlTokenizer('1/3');
33
-
34
- // Act
35
- const tokens = tokenizer.readLexmes();
36
-
37
- // Assert
38
- expect(tokens.length).toBe(3);
39
- expect(tokens[1].type).toBe(TokenType.Operator);
40
- expect(tokens[1].value).toBe('/');
41
- });
42
-
43
- test('tokenizes modulus operator', () => {
44
- // Arrange
45
- const tokenizer = new SqlTokenizer('1%4');
46
-
47
- // Act
48
- const tokens = tokenizer.readLexmes();
49
-
50
- // Assert
51
- expect(tokens.length).toBe(3);
52
- expect(tokens[1].type).toBe(TokenType.Operator);
53
- expect(tokens[1].value).toBe('%');
54
- });
55
-
56
- test('tokenizes type convert operator', () => {
57
- // Arrange
58
- const tokenizer = new SqlTokenizer('1::text');
59
-
60
- // Act
61
- const tokens = tokenizer.readLexmes();
62
-
63
- // Assert
64
- expect(tokens.length).toBe(3);
65
- expect(tokens[1].type).toBe(TokenType.Operator);
66
- expect(tokens[1].value).toBe('::');
67
- });
68
-
69
- test('tokenizes equality operator', () => {
70
- // Arrange
71
- const tokenizer = new SqlTokenizer('1==1');
72
-
73
- // Act
74
- const tokens = tokenizer.readLexmes();
75
-
76
- // Assert
77
- expect(tokens.length).toBe(3);
78
- expect(tokens[1].type).toBe(TokenType.Operator);
79
- expect(tokens[1].value).toBe('==');
80
- });
81
-
82
- test('tokenizes inequality operator !=', () => {
83
- // Arrange
84
- const tokenizer = new SqlTokenizer('1!=2');
85
-
86
- // Act
87
- const tokens = tokenizer.readLexmes();
88
-
89
- // Assert
90
- expect(tokens.length).toBe(3);
91
- expect(tokens[1].type).toBe(TokenType.Operator);
92
- expect(tokens[1].value).toBe('!=');
93
- });
94
-
95
- test('tokenizes inequality operator <>', () => {
96
- // Arrange
97
- const tokenizer = new SqlTokenizer('1<>2');
98
-
99
- // Act
100
- const tokens = tokenizer.readLexmes();
101
-
102
- // Assert
103
- expect(tokens.length).toBe(3);
104
- expect(tokens[1].type).toBe(TokenType.Operator);
105
- expect(tokens[1].value).toBe('<>');
106
- });
107
-
108
- test('tokenizes less than operator', () => {
109
- // Arrange
110
- const tokenizer = new SqlTokenizer('1<2');
111
-
112
- // Act
113
- const tokens = tokenizer.readLexmes();
114
-
115
- // Assert
116
- expect(tokens.length).toBe(3);
117
- expect(tokens[1].type).toBe(TokenType.Operator);
118
- expect(tokens[1].value).toBe('<');
119
- });
120
-
121
- test('tokenizes greater than operator', () => {
122
- // Arrange
123
- const tokenizer = new SqlTokenizer('1>0');
124
-
125
- // Act
126
- const tokens = tokenizer.readLexmes();
127
-
128
- // Assert
129
- expect(tokens.length).toBe(3);
130
- expect(tokens[1].type).toBe(TokenType.Operator);
131
- expect(tokens[1].value).toBe('>');
132
- });
133
-
134
- test('tokenizes less than or equal operator', () => {
135
- // Arrange
136
- const tokenizer = new SqlTokenizer('1<=2');
137
-
138
- // Act
139
- const tokens = tokenizer.readLexmes();
140
-
141
- // Assert
142
- expect(tokens.length).toBe(3);
143
- expect(tokens[1].type).toBe(TokenType.Operator);
144
- expect(tokens[1].value).toBe('<=');
145
- });
146
-
147
- test('tokenizes greater than or equal operator', () => {
148
- // Arrange
149
- const tokenizer = new SqlTokenizer('1>=0');
150
-
151
- // Act
152
- const tokens = tokenizer.readLexmes();
153
-
154
- // Assert
155
- expect(tokens.length).toBe(3);
156
- expect(tokens[1].type).toBe(TokenType.Operator);
157
- expect(tokens[1].value).toBe('>=');
158
- });
159
-
160
- test('tokenizes bitwise NOT operator', () => {
161
- // Arrange
162
- const tokenizer = new SqlTokenizer('~1');
163
-
164
- // Act
165
- const tokens = tokenizer.readLexmes();
166
-
167
- // Assert
168
- expect(tokens.length).toBe(2);
169
- expect(tokens[0].type).toBe(TokenType.Operator);
170
- expect(tokens[0].value).toBe('~');
171
- });
172
-
173
- test('tokenizes array operation operator', () => {
174
- // Arrange
175
- const tokenizer = new SqlTokenizer('array@>1');
176
-
177
- // Act
178
- const tokens = tokenizer.readLexmes();
179
-
180
- // Assert
181
- expect(tokens.length).toBe(3);
182
- expect(tokens[1].type).toBe(TokenType.Operator);
183
- expect(tokens[1].value).toBe('@>');
184
- });
185
-
186
- test('tokenizes JSON operation operator', () => {
187
- // Arrange
188
- const tokenizer = new SqlTokenizer('json#>1');
189
-
190
- // Act
191
- const tokens = tokenizer.readLexmes();
192
-
193
- // Assert
194
- expect(tokens.length).toBe(3);
195
- expect(tokens[1].type).toBe(TokenType.Operator);
196
- expect(tokens[1].value).toBe('#>');
197
- });
198
-
199
- test('tokenizes exponentiation/XOR operator', () => {
200
- // Arrange
201
- const tokenizer = new SqlTokenizer('2^3');
202
-
203
- // Act
204
- const tokens = tokenizer.readLexmes();
205
-
206
- // Assert
207
- expect(tokens.length).toBe(3);
208
- expect(tokens[1].type).toBe(TokenType.Operator);
209
- expect(tokens[1].value).toBe('^');
210
- });
211
-
212
- test('tokenizes bitwise AND operator', () => {
213
- // Arrange
214
- const tokenizer = new SqlTokenizer('1&1');
215
-
216
- // Act
217
- const tokens = tokenizer.readLexmes();
218
-
219
- // Assert
220
- expect(tokens.length).toBe(3);
221
- expect(tokens[1].type).toBe(TokenType.Operator);
222
- expect(tokens[1].value).toBe('&');
223
- });
224
-
225
- test('tokenizes bitwise OR operator', () => {
226
- // Arrange
227
- const tokenizer = new SqlTokenizer('1|1');
228
-
229
- // Act
230
- const tokens = tokenizer.readLexmes();
231
-
232
- // Assert
233
- expect(tokens.length).toBe(3);
234
- expect(tokens[1].type).toBe(TokenType.Operator);
235
- expect(tokens[1].value).toBe('|');
236
- });
@@ -1 +0,0 @@
1
- ��SessionId��$3c01b107-5c38-4156-a5f5-100e0751210b��Id�4Microsoft.VisualStudio.Conversations.Chat.HelpWindow�CorrelationStates���CorrelationId�$15c0730c-c8b2-4159-9afb-d08be1343fc0�Snapshots�� BA5D2B145A59265D63FA3B3584344B02��SavedFileName١C:\Users\mssgm\Documents\GitHub\ts-sample\.vs\CopilotSnapshots\07B1013C385C5641A5F5100E0751210B\0C73C015B2C859419AFBD08BE1343FC0\BA5D2B145A59265D63FA3B3584344B02�OriginalFilePath�@C:\Users\mssgm\Documents\GitHub\ts-sample\tests\operator.test.ts�NewFileMarker�
@@ -1,19 +0,0 @@
1
- {
2
- "name": "nodeconsoleapp1",
3
- "version": "1.0.0",
4
- "main": "app.js",
5
- "scripts": {
6
- "test": "echo \"Error: no test specified\" && exit 1",
7
- "build": "tsc --build",
8
- "clean": "tsc --build --clean"
9
- },
10
- "keywords": [],
11
- "author": "",
12
- "license": "ISC",
13
- "description": "",
14
- "devDependencies": {
15
- "@types/node": "^22.13.10",
16
- "eslint": "^9.22.0",
17
- "typescript": "^5.8.2"
18
- }
19
- }
@@ -1,5 +0,0 @@
1
- module.exports = {
2
- preset: 'ts-jest',
3
- testEnvironment: 'node',
4
- testMatch: ['**/__tests__/**/*.test.ts']
5
- };
@@ -1,3 +0,0 @@
1
- test('sample test', () => {
2
- expect(true).toBe(true);
3
- });
@@ -1,21 +0,0 @@
1
- {
2
- "name": "nodeconsoleapp1",
3
- "version": "1.0.0",
4
- "main": "app.js",
5
- "scripts": {
6
- "test": "jest",
7
- "build": "tsc --build",
8
- "clean": "tsc --build --clean"
9
- },
10
- "keywords": [],
11
- "author": "",
12
- "license": "ISC",
13
- "description": "",
14
- "devDependencies": {
15
- "@types/node": "^22.13.10",
16
- "eslint": "^9.22.0",
17
- "typescript": "^5.8.2",
18
- "jest": "^29.0.0",
19
- "@types/jest": "^29.0.0"
20
- }
21
- }
@@ -1 +0,0 @@
1
- ��SessionId��$2a76030d-a09e-48cb-85f2-114567f23f93��Id�4Microsoft.VisualStudio.Conversations.Chat.HelpWindow�CorrelationStates���CorrelationId�$7850afa9-771e-49b8-aa32-62d2738d9338�Snapshots�� 7B623BFBAEB4EB61A9585F0BC8039B06��SavedFileName١C:\Users\mssgm\Documents\GitHub\ts-sample\.vs\CopilotSnapshots\0D03762A9EA0CB4885F2114567F23F93\A9AF50781E77B849AA3262D2738D9338\7B623BFBAEB4EB61A9585F0BC8039B06�OriginalFilePath�:C:\Users\mssgm\Documents\GitHub\ts-sample\src\package.json�NewFileMarker�� 1F95FD72006ED6E92629CEFD7B2C4FEC��SavedFileName١C:\Users\mssgm\Documents\GitHub\ts-sample\.vs\CopilotSnapshots\0D03762A9EA0CB4885F2114567F23F93\A9AF50781E77B849AA3262D2738D9338\1F95FD72006ED6E92629CEFD7B2C4FEC�OriginalFilePath�<C:\Users\mssgm\Documents\GitHub\ts-sample\src\jest.config.js�NewFileMarker�� 4CA7B9D3BC2D0A498DC0777EDA3F9B0F��SavedFileName١C:\Users\mssgm\Documents\GitHub\ts-sample\.vs\CopilotSnapshots\0D03762A9EA0CB4885F2114567F23F93\A9AF50781E77B849AA3262D2738D9338\4CA7B9D3BC2D0A498DC0777EDA3F9B0F�OriginalFilePath�FC:\Users\mssgm\Documents\GitHub\ts-sample\src\__tests__\sample.test.js�NewFileMarker���CorrelationId�$294594ca-f764-4ba9-8ece-3b54ee21b50f�Snapshots�� 7B623BFBAEB4EB61A9585F0BC8039B06��SavedFileName١C:\Users\mssgm\Documents\GitHub\ts-sample\.vs\CopilotSnapshots\0D03762A9EA0CB4885F2114567F23F93\CA94452964F7A94B8ECE3B54EE21B50F\7B623BFBAEB4EB61A9585F0BC8039B06�OriginalFilePath�:C:\Users\mssgm\Documents\GitHub\ts-sample\src\package.json�NewFileMarker�� 1F95FD72006ED6E92629CEFD7B2C4FEC��SavedFileName١C:\Users\mssgm\Documents\GitHub\ts-sample\.vs\CopilotSnapshots\0D03762A9EA0CB4885F2114567F23F93\CA94452964F7A94B8ECE3B54EE21B50F\1F95FD72006ED6E92629CEFD7B2C4FEC�OriginalFilePath�<C:\Users\mssgm\Documents\GitHub\ts-sample\src\jest.config.js�NewFileMarker�� 4CA7B9D3BC2D0A498DC0777EDA3F9B0F��SavedFileName١C:\Users\mssgm\Documents\GitHub\ts-sample\.vs\CopilotSnapshots\0D03762A9EA0CB4885F2114567F23F93\CA94452964F7A94B8ECE3B54EE21B50F\4CA7B9D3BC2D0A498DC0777EDA3F9B0F�OriginalFilePath�FC:\Users\mssgm\Documents\GitHub\ts-sample\src\__tests__\sample.test.js�NewFileMarker�