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
@@ -1,158 +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
- import { TokenReaderManager } from './tokenReaders/TokenReaderManager';
7
-
8
- export class SqlTokenizer {
9
- /// <summary>
10
- /// Input string.
11
- /// </summary>
12
- private input: string;
13
-
14
- /// <summary>
15
- /// Current position in the input string.
16
- /// </summary>
17
- private position: number;
18
-
19
- /// <summary>
20
- /// Token reader manager
21
- /// </summary>
22
- private readerManager: TokenReaderManager;
23
-
24
- constructor(input: string) {
25
- this.input = input;
26
- this.position = 0;
27
-
28
- // Initialize the token reader manager and register all readers
29
- this.readerManager = new TokenReaderManager(input)
30
- .register(new ParameterTokenReader(input))
31
- .register(new LiteralTokenReader(input))
32
- .register(new IdentifierTokenReader(input))
33
- .register(new SymbolTokenReader(input));
34
- }
35
-
36
- private isEndOfInput(shift: number = 0): boolean {
37
- return this.position + shift >= this.input.length;
38
- }
39
-
40
- private canRead(shift: number = 0): boolean {
41
- return !this.isEndOfInput(shift);
42
- }
43
-
44
- public readLexmes(): Lexeme[] {
45
- const lexemes: Lexeme[] = [];
46
-
47
- // Skip whitespace and comments at the start
48
- this.skipWhiteSpacesAndComments();
49
-
50
- // Track the previous token
51
- let previous: Lexeme | null = null;
52
-
53
- // Read tokens until the end of the input is reached
54
- while (this.canRead()) {
55
- // semicolon is a delimiter
56
- if (this.input[this.position] === ';') {
57
- return lexemes;
58
- }
59
-
60
- // Try to read with the reader manager
61
- const lexeme = this.readerManager.tryRead(this.position, previous);
62
-
63
- // If a token is read by any reader
64
- if (lexeme) {
65
- lexemes.push(lexeme);
66
- previous = lexeme;
67
-
68
- // Update position
69
- this.position = this.readerManager.getMaxPosition();
70
-
71
- // Skip whitespace and comments after the token
72
- this.skipWhiteSpacesAndComments();
73
- } else {
74
- // Exception
75
- throw new Error(`Unexpected character. actual: ${this.input[this.position]}, position: ${this.position}`);
76
- }
77
- }
78
-
79
- return lexemes;
80
- }
81
-
82
- /// <summary>
83
- /// Skip white space characters and sql comments.
84
- /// </summary>
85
- private skipWhiteSpacesAndComments(): void {
86
- while (true) {
87
- if (this.skipWhiteSpace()) {
88
- continue;
89
- }
90
- if (this.skipLineComment()) {
91
- continue;
92
- }
93
- if (this.skipBlockComment()) {
94
- continue;
95
- }
96
- break;
97
- }
98
- }
99
-
100
- private skipWhiteSpace(): boolean {
101
- const start = this.position;
102
-
103
- // Skip tab, newline, and space characters
104
- const whitespace = new Set([' ', '\r', '\n', '\t']);
105
-
106
- while (this.canRead()) {
107
- if (!whitespace.has(this.input[this.position])) {
108
- break;
109
- }
110
- this.position++;
111
- }
112
- return start !== this.position;
113
- }
114
-
115
- private skipLineComment(): boolean {
116
- // At least 2 characters are needed. '--'
117
- if (this.isEndOfInput(1)) {
118
- return false;
119
- }
120
-
121
- if (this.input[this.position] === '-' && this.input[this.position + 1] === '-') {
122
- this.position += 2;
123
-
124
- while (this.canRead() && this.input[this.position] !== '\n') {
125
- this.position++;
126
- }
127
- return true;
128
- }
129
-
130
- return false;
131
- }
132
-
133
- private skipBlockComment(): boolean {
134
- // At least 4 characters are needed. '/**/'
135
- if (this.isEndOfInput(3)) {
136
- return false;
137
- }
138
-
139
- // Record the start position of the comment to track error location
140
- const start = this.position;
141
-
142
- if (this.input[this.position] === '/' && this.input[this.position + 1] === '*') {
143
- this.position += 2;
144
-
145
- while (this.canRead(1)) {
146
- if (this.input[this.position] === '*' && this.input[this.position + 1] === '/') {
147
- this.position += 2;
148
- return true;
149
- }
150
- this.position++;
151
- }
152
-
153
- throw new Error(`Block comment is not closed. position: ${start}`);
154
- }
155
-
156
- return false;
157
- }
158
- }
@@ -1,35 +0,0 @@
1
- import { TokenType } from "../src/enums/tokenType";
2
- import { SqlTokenizer } from "../src/sqlTokenizer";
3
-
4
- test('tokenizes addition operator', () => {
5
- const tokenizer = new SqlTokenizer('1+1');
6
- const tokens = tokenizer.readLexmes();
7
- expect(tokens.length).toBe(3);
8
- expect(tokens[1].type).toBe(TokenType.Operator);
9
- expect(tokens[1].value).toBe('+');
10
- });
11
-
12
- test('tokenizes multiplication operator', () => {
13
- const tokenizer = new SqlTokenizer('1*2');
14
- const tokens = tokenizer.readLexmes();
15
- expect(tokens.length).toBe(3);
16
- expect(tokens[1].type).toBe(TokenType.Operator);
17
- expect(tokens[1].value).toBe('*');
18
- });
19
-
20
- test('tokenizes division operator', () => {
21
- const tokenizer = new SqlTokenizer('1/3');
22
- const tokens = tokenizer.readLexmes();
23
- expect(tokens.length).toBe(3);
24
- expect(tokens[1].type).toBe(TokenType.Operator);
25
- expect(tokens[1].value).toBe('/');
26
- });
27
-
28
- test('tokenizes modulus operator', () => {
29
- const tokenizer = new SqlTokenizer('1%4');
30
- const tokens = tokenizer.readLexmes();
31
- expect(tokens.length).toBe(3);
32
- expect(tokens[1].type).toBe(TokenType.Operator);
33
- expect(tokens[1].value).toBe('%');
34
- });
35
-
@@ -1 +0,0 @@
1
- ��SessionId��$8b5f907f-0dac-49ad-bd50-7ca45c569afd��Id�4Microsoft.VisualStudio.Conversations.Chat.HelpWindow�CorrelationStates���CorrelationId�$3ce18257-03ab-4ea0-9e1e-c5692f892170�Snapshots�� BA5D2B145A59265D63FA3B3584344B02��SavedFileName١C:\Users\mssgm\Documents\GitHub\ts-sample\.vs\CopilotSnapshots\7F905F8BAC0DAD49BD507CA45C569AFD\5782E13CAB03A04E9E1EC5692F892170\BA5D2B145A59265D63FA3B3584344B02�OriginalFilePath�@C:\Users\mssgm\Documents\GitHub\ts-sample\tests\operator.test.ts�NewFileMarker�� EF71788BE39818EEA3F0164DC15E1BD7��SavedFileName١C:\Users\mssgm\Documents\GitHub\ts-sample\.vs\CopilotSnapshots\7F905F8BAC0DAD49BD507CA45C569AFD\5782E13CAB03A04E9E1EC5692F892170\EF71788BE39818EEA3F0164DC15E1BD7�OriginalFilePath�=C:\Users\mssgm\Documents\GitHub\ts-sample\src\sqlTokenizer.ts�NewFileMarker���CorrelationId�$83598698-c893-4499-b519-20c01eb650c9�Snapshots�� BA5D2B145A59265D63FA3B3584344B02��SavedFileName١C:\Users\mssgm\Documents\GitHub\ts-sample\.vs\CopilotSnapshots\7F905F8BAC0DAD49BD507CA45C569AFD\9886598393C89944B51920C01EB650C9\BA5D2B145A59265D63FA3B3584344B02�OriginalFilePath�@C:\Users\mssgm\Documents\GitHub\ts-sample\tests\operator.test.ts�NewFileMarker�
@@ -1,165 +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 { SpecialSymbolTokenReader } from './tokenReaders/SymbolTokenReader';
6
- import { TokenReaderManager } from './tokenReaders/TokenReaderManager';
7
- import { OperatorTokenReader } from './tokenReaders/OperatorTokenReader';
8
-
9
- export class SqlTokenizer {
10
- /// <summary>
11
- /// Input string.
12
- /// </summary>
13
- private input: string;
14
-
15
- /// <summary>
16
- /// Current position in the input string.
17
- /// </summary>
18
- private position: number;
19
-
20
- /// <summary>
21
- /// Token reader manager
22
- /// </summary>
23
- private readerManager: TokenReaderManager;
24
-
25
- constructor(input: string) {
26
- this.input = input;
27
- this.position = 0;
28
-
29
- // Initialize the token reader manager and register all readers
30
- // NOTE: トークンリーダーの実行順序は重要です。
31
- // - LiteralTokenReader にて ドット始まりの数字リテラルを読み取る処理があるため、
32
- // SpecialSymbolTokenReader よりも先に登録する必要があります。
33
- // - LiteralTokenReader にて 符号始まりの数字リテラルを読み取る処理があるため、
34
- // OperatorTokenReader よりも先に登録する必要があります。
35
- this.readerManager = new TokenReaderManager(input)
36
- .register(new ParameterTokenReader(input))
37
- .register(new LiteralTokenReader(input))
38
- .register(new IdentifierTokenReader(input))
39
- .register(new SpecialSymbolTokenReader(input))
40
- .register(new OperatorTokenReader(input));
41
- }
42
-
43
- private isEndOfInput(shift: number = 0): boolean {
44
- return this.position + shift >= this.input.length;
45
- }
46
-
47
- private canRead(shift: number = 0): boolean {
48
- return !this.isEndOfInput(shift);
49
- }
50
-
51
- public readLexmes(): Lexeme[] {
52
- const lexemes: Lexeme[] = [];
53
-
54
- // Skip whitespace and comments at the start
55
- this.skipWhiteSpacesAndComments();
56
-
57
- // Track the previous token
58
- let previous: Lexeme | null = null;
59
-
60
- // Read tokens until the end of the input is reached
61
- while (this.canRead()) {
62
- // semicolon is a delimiter
63
- if (this.input[this.position] === ';') {
64
- return lexemes;
65
- }
66
-
67
- // Try to read with the reader manager
68
- const lexeme = this.readerManager.tryRead(this.position, previous);
69
-
70
- // If a token is read by any reader
71
- if (lexeme) {
72
- lexemes.push(lexeme);
73
- previous = lexeme;
74
-
75
- // Update position
76
- this.position = this.readerManager.getMaxPosition();
77
-
78
- // Skip whitespace and comments after the token
79
- this.skipWhiteSpacesAndComments();
80
- } else {
81
- // Exception
82
- throw new Error(`Unexpected character. actual: ${this.input[this.position]}, position: ${this.position}`);
83
- }
84
- }
85
-
86
- return lexemes;
87
- }
88
-
89
- /// <summary>
90
- /// Skip white space characters and sql comments.
91
- /// </summary>
92
- private skipWhiteSpacesAndComments(): void {
93
- while (true) {
94
- if (this.skipWhiteSpace()) {
95
- continue;
96
- }
97
- if (this.skipLineComment()) {
98
- continue;
99
- }
100
- if (this.skipBlockComment()) {
101
- continue;
102
- }
103
- break;
104
- }
105
- }
106
-
107
- private skipWhiteSpace(): boolean {
108
- const start = this.position;
109
-
110
- // Skip tab, newline, and space characters
111
- const whitespace = new Set([' ', '\r', '\n', '\t']);
112
-
113
- while (this.canRead()) {
114
- if (!whitespace.has(this.input[this.position])) {
115
- break;
116
- }
117
- this.position++;
118
- }
119
- return start !== this.position;
120
- }
121
-
122
- private skipLineComment(): boolean {
123
- // At least 2 characters are needed. '--'
124
- if (this.isEndOfInput(1)) {
125
- return false;
126
- }
127
-
128
- if (this.input[this.position] === '-' && this.input[this.position + 1] === '-') {
129
- this.position += 2;
130
-
131
- while (this.canRead() && this.input[this.position] !== '\n') {
132
- this.position++;
133
- }
134
- return true;
135
- }
136
-
137
- return false;
138
- }
139
-
140
- private skipBlockComment(): boolean {
141
- // At least 4 characters are needed. '/**/'
142
- if (this.isEndOfInput(3)) {
143
- return false;
144
- }
145
-
146
- // Record the start position of the comment to track error location
147
- const start = this.position;
148
-
149
- if (this.input[this.position] === '/' && this.input[this.position + 1] === '*') {
150
- this.position += 2;
151
-
152
- while (this.canRead(1)) {
153
- if (this.input[this.position] === '*' && this.input[this.position + 1] === '/') {
154
- this.position += 2;
155
- return true;
156
- }
157
- this.position++;
158
- }
159
-
160
- throw new Error(`Block comment is not closed. position: ${start}`);
161
- }
162
-
163
- return false;
164
- }
165
- }
@@ -1 +0,0 @@
1
- ��SessionId��$c7d99284-d9a2-4d51-b8a6-9d304b48bf3c��Id�4Microsoft.VisualStudio.Conversations.Chat.HelpWindow�CorrelationStates���CorrelationId�$4e3cdad2-3121-4ee8-a02e-321802a65254�Snapshots�� EF71788BE39818EEA3F0164DC15E1BD7��SavedFileName١C:\Users\mssgm\Documents\GitHub\ts-sample\.vs\CopilotSnapshots\8492D9C7A2D9514DB8A69D304B48BF3C\D2DA3C4E2131E84EA02E321802A65254\EF71788BE39818EEA3F0164DC15E1BD7�OriginalFilePath�=C:\Users\mssgm\Documents\GitHub\ts-sample\src\sqlTokenizer.ts�NewFileMarker�
@@ -1,43 +0,0 @@
1
- import { BaseTokenReader } from './BaseTokenReader';
2
- import { TokenType } from '../enums/tokenType';
3
- import { Lexeme } from '../models/Lexeme';
4
- import { CharLookupTable } from '../utils/charLookupTable';
5
- import { StringUtils } from '../utils/stringUtils';
6
- import { KeywordMatchResult, KeywordTrie, KeywordTrieReader } from '../utils/KeywordTrie';
7
-
8
- export class OperatorTokenReader extends BaseTokenReader {
9
-
10
- private trie = new KeywordTrie([
11
- ["is"],
12
- ["is", "not"],
13
- ["and"],
14
- ["or"]
15
- ]);
16
-
17
- public tryRead(previous: Lexeme | null): Lexeme | null {
18
- if (this.isEndOfInput()) {
19
- return null;
20
- }
21
-
22
- const char = this.input[this.position];
23
-
24
- if (CharLookupTable.isOperatorSymbol(char)) {
25
- const start = this.position;
26
- while (this.canRead() && CharLookupTable.isOperatorSymbol(this.input[this.position])) {
27
- this.position++;
28
- }
29
- return this.createLexeme(TokenType.Operator, this.input.slice(start, this.position));
30
- }
31
-
32
- // Logical operators
33
- const reader = new KeywordTrieReader(this.input, this.position, this.trie);
34
- const result = reader.readKeyword();
35
- if (result) {
36
- this.position = result.newPositiion;
37
- return this.createLexeme(TokenType.Operator, result.keyword);
38
- }
39
-
40
-
41
- return null;
42
- }
43
- }
@@ -1 +0,0 @@
1
- ��SessionId��$c02d1a89-fae5-4c42-b8bd-da4fe26ed372��Id�4Microsoft.VisualStudio.Conversations.Chat.HelpWindow�CorrelationStates���CorrelationId�$9dd444e2-79dc-4d51-ba32-2770b03ae287�Snapshots�� 1CF9939611B0D194AC81951A171DF046��SavedFileName١C:\Users\mssgm\Documents\GitHub\ts-sample\.vs\CopilotSnapshots\891A2DC0E5FA424CB8BDDA4FE26ED372\E244D49DDC79514DBA322770B03AE287\1CF9939611B0D194AC81951A171DF046�OriginalFilePath�QC:\Users\mssgm\Documents\GitHub\ts-sample\src\tokenReaders\OperatorTokenReader.ts�NewFileMarker�
@@ -1,66 +0,0 @@
1
- /**
2
- // No changes needed in this file as the OPERATORS set already exists
3
- * Fast character classification utilities for SQL tokenization
4
- */
5
- export class CharLookupTable {
6
- private static readonly WHITESPACE = new Set([' ', '\t', '\r', '\n']);
7
- private static readonly DIGITS = new Set(['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']);
8
- private static readonly HEX_CHARS = new Set([
9
- '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
10
- 'a', 'b', 'c', 'd', 'e', 'f',
11
- 'A', 'B', 'C', 'D', 'E', 'F'
12
- ]);
13
- private static readonly DELIMITERS = new Set(['.', ',', '(', ')']);
14
- private static readonly NAMED_PARAMETER_PREFIX = new Set(['@', ':', '$']);
15
- private static readonly OPERATORS = new Set([
16
- '+', // Addition operator
17
- '-', // Subtraction operator
18
- '*', // Multiplication operator
19
- '/', // Division operator
20
- '%', // Modulus operator
21
- '~', // Bitwise NOT operator
22
- '@', // At symbol, often used in decorators or annotations
23
- '#', // Hash symbol, often used in preprocessor directives or comments
24
- '^', // Bitwise XOR operator
25
- '&', // Bitwise AND operator
26
- ':', // Postgres type cast operator ::
27
- '!', // Logical NOT operator
28
- '<', // Less than operator
29
- '>', // Greater than operator
30
- '=', // Assignment or equality operator
31
- '|', // Bitwise OR operator
32
- ]);
33
-
34
- public static isWhitespace(char: string): boolean {
35
- return CharLookupTable.WHITESPACE.has(char);
36
- }
37
-
38
- public static isDigit(char: string): boolean {
39
- return CharLookupTable.DIGITS.has(char);
40
- }
41
-
42
- public static isHexChar(char: string): boolean {
43
- return CharLookupTable.HEX_CHARS.has(char);
44
- }
45
-
46
- public static isOperator(char: string): boolean {
47
- return CharLookupTable.OPERATORS.has(char);
48
- }
49
-
50
- public static isDelimiter(char: string): boolean {
51
- if (CharLookupTable.DELIMITERS.has(char)) {
52
- return true;
53
- }
54
- else if (CharLookupTable.isWhitespace(char)) {
55
- return true;
56
- }
57
- else if (CharLookupTable.isOperator(char)) {
58
- return true;
59
- }
60
- return false;
61
- }
62
-
63
- public static isNamedParameterPrefix(char: string): boolean {
64
- return CharLookupTable.NAMED_PARAMETER_PREFIX.has(char);
65
- }
66
- }
@@ -1,43 +0,0 @@
1
- import { BaseTokenReader } from './BaseTokenReader';
2
- import { TokenType } from '../enums/tokenType';
3
- import { Lexeme } from '../models/Lexeme';
4
-
5
- const operatorChars = new Set([
6
- '+', // Addition operator
7
- '-', // Subtraction operator
8
- '*', // Multiplication operator
9
- '/', // Division operator
10
- '%', // Modulus operator
11
- '~', // Bitwise NOT operator
12
- '@', // At symbol, often used in decorators or annotations
13
- '#', // Hash symbol, often used in preprocessor directives or comments
14
- '$', // Dollar symbol, often used in template literals or special variables
15
- '^', // Bitwise XOR operator
16
- '&', // Bitwise AND operator
17
- ':', // Postgres type cast operator
18
- '!', // Logical NOT operator
19
- '<', // Less than operator
20
- '>', // Greater than operator
21
- '=', // Assignment or equality operator
22
- '|' // Bitwise OR operator
23
- ]);
24
-
25
- export class OperatorTokenReader extends BaseTokenReader {
26
- public tryRead(previous: Lexeme | null): Lexeme | null {
27
- if (this.isEndOfInput()) {
28
- return null;
29
- }
30
-
31
- const char = this.input[this.position];
32
-
33
- if (operatorChars.has(char)) {
34
- const start = this.position;
35
- while (this.canRead() && operatorChars.has(this.input[this.position])) {
36
- this.position++;
37
- }
38
- return this.createLexeme(TokenType.Operator, this.input.slice(start, this.position));
39
- }
40
-
41
- return null;
42
- }
43
- }
@@ -1,53 +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
- private static readonly OPERATORS = new Set([
15
- '+', '-', '*', '/', '%', // Arithmetic operators
16
- '~', '@', '#', '$', '^', '&', // Special symbols
17
- ':', // Postgres type cast operator ::
18
- '!', '<', '>', '=', '|', '\\' // Other symbols
19
- ]);
20
-
21
- public static isWhitespace(char: string): boolean {
22
- return CharLookupTable.WHITESPACE.has(char);
23
- }
24
-
25
- public static isDigit(char: string): boolean {
26
- return CharLookupTable.DIGITS.has(char);
27
- }
28
-
29
- public static isHexChar(char: string): boolean {
30
- return CharLookupTable.HEX_CHARS.has(char);
31
- }
32
-
33
- public static isOperator(char: string): boolean {
34
- return CharLookupTable.OPERATORS.has(char);
35
- }
36
-
37
- public static isDelimiter(char: string): boolean {
38
- if (CharLookupTable.DELIMITERS.has(char)) {
39
- return true;
40
- }
41
- else if (CharLookupTable.isWhitespace(char)) {
42
- return true;
43
- }
44
- else if (CharLookupTable.isOperator(char)) {
45
- return true;
46
- }
47
- return false;
48
- }
49
-
50
- public static isNamedParameterPrefix(char: string): boolean {
51
- return CharLookupTable.NAMED_PARAMETER_PREFIX.has(char);
52
- }
53
- }
@@ -1,30 +0,0 @@
1
- import { BaseTokenReader } from './BaseTokenReader';
2
- import { TokenType } from '../enums/tokenType';
3
- import { Lexeme } from '../models/Lexeme';
4
-
5
- const operatorChars = new Set([
6
- '+', '-', '*', '/', '%', // Arithmetic operators
7
- '~', '@', '#', '$', '^', '&', // Special symbols
8
- ':', // Postgres type cast operator
9
- '!', '<', '>', '=', '|'// Other symbols
10
- ]);
11
-
12
- export class OperatorTokenReader extends BaseTokenReader {
13
- public tryRead(previous: Lexeme | null): Lexeme | null {
14
- if (this.isEndOfInput()) {
15
- return null;
16
- }
17
-
18
- const char = this.input[this.position];
19
-
20
- if (operatorChars.has(char)) {
21
- const start = this.position;
22
- while (this.canRead() && operatorChars.has(this.input[this.position])) {
23
- this.position++;
24
- }
25
- return this.createLexeme(TokenType.Operator, this.input.slice(start, this.position));
26
- }
27
-
28
- return null;
29
- }
30
- }
@@ -1,53 +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
- private static readonly OPERATORS = new Set([
15
- '+', '-', '*', '/', '%', // Arithmetic operators
16
- '~', '@', '#', '$', '^', '&', // Special symbols
17
- ':', // Postgres type cast operator ::
18
- '!', '<', '>', '=', '|', '\\' // Other symbols
19
- ]);
20
-
21
- public static isWhitespace(char: string): boolean {
22
- return CharLookupTable.WHITESPACE.has(char);
23
- }
24
-
25
- public static isDigit(char: string): boolean {
26
- return CharLookupTable.DIGITS.has(char);
27
- }
28
-
29
- public static isHexChar(char: string): boolean {
30
- return CharLookupTable.HEX_CHARS.has(char);
31
- }
32
-
33
- public static isOperator(char: string): boolean {
34
- return CharLookupTable.OPERATORS.has(char);
35
- }
36
-
37
- public static isDelimiter(char: string): boolean {
38
- if (CharLookupTable.DELIMITERS.has(char)) {
39
- return true;
40
- }
41
- else if (CharLookupTable.isWhitespace(char)) {
42
- return true;
43
- }
44
- else if (CharLookupTable.isOperator(char)) {
45
- return true;
46
- }
47
- return false;
48
- }
49
-
50
- public static isNamedParameterPrefix(char: string): boolean {
51
- return CharLookupTable.NAMED_PARAMETER_PREFIX.has(char);
52
- }
53
- }