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

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 (266) 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 -2
  67. package/src/index.d.ts +378 -0
  68. package/.vs/CopilotSnapshots/02E79E48DFF5234787CB618DE990598A/48814CCF3E4E4B44A66AB8BC7D6CF6B6/904140CF7EDF0C98AEA45F0D36062FE1 +0 -1
  69. package/.vs/CopilotSnapshots/02E79E48DFF5234787CB618DE990598A/48814CCF3E4E4B44A66AB8BC7D6CF6B6/A32D1DB906C73FA74EF270AAEE165FC0 +0 -86
  70. package/.vs/CopilotSnapshots/02E79E48DFF5234787CB618DE990598A/48814CCF3E4E4B44A66AB8BC7D6CF6B6/E621434FB1D5415B14FBBCC11967E420 +0 -34
  71. package/.vs/CopilotSnapshots/02E79E48DFF5234787CB618DE990598A/48814CCF3E4E4B44A66AB8BC7D6CF6B6/EF71788BE39818EEA3F0164DC15E1BD7 +0 -170
  72. package/.vs/CopilotSnapshots/02E79E48DFF5234787CB618DE990598A/state.mpack +0 -1
  73. package/.vs/CopilotSnapshots/07B1013C385C5641A5F5100E0751210B/0C73C015B2C859419AFBD08BE1343FC0/BA5D2B145A59265D63FA3B3584344B02 +0 -236
  74. package/.vs/CopilotSnapshots/07B1013C385C5641A5F5100E0751210B/state.mpack +0 -1
  75. package/.vs/CopilotSnapshots/0D03762A9EA0CB4885F2114567F23F93/A9AF50781E77B849AA3262D2738D9338/1F95FD72006ED6E92629CEFD7B2C4FEC +0 -1
  76. package/.vs/CopilotSnapshots/0D03762A9EA0CB4885F2114567F23F93/A9AF50781E77B849AA3262D2738D9338/4CA7B9D3BC2D0A498DC0777EDA3F9B0F +0 -1
  77. package/.vs/CopilotSnapshots/0D03762A9EA0CB4885F2114567F23F93/A9AF50781E77B849AA3262D2738D9338/7B623BFBAEB4EB61A9585F0BC8039B06 +0 -19
  78. package/.vs/CopilotSnapshots/0D03762A9EA0CB4885F2114567F23F93/CA94452964F7A94B8ECE3B54EE21B50F/1F95FD72006ED6E92629CEFD7B2C4FEC +0 -5
  79. package/.vs/CopilotSnapshots/0D03762A9EA0CB4885F2114567F23F93/CA94452964F7A94B8ECE3B54EE21B50F/4CA7B9D3BC2D0A498DC0777EDA3F9B0F +0 -3
  80. package/.vs/CopilotSnapshots/0D03762A9EA0CB4885F2114567F23F93/CA94452964F7A94B8ECE3B54EE21B50F/7B623BFBAEB4EB61A9585F0BC8039B06 +0 -21
  81. package/.vs/CopilotSnapshots/0D03762A9EA0CB4885F2114567F23F93/state.mpack +0 -1
  82. package/.vs/CopilotSnapshots/10B71DC3C4C1C04E8602FA06D3925F98/23B181EB1228EF40ABCEF51E89FBF6E6/41035D2B1D57326B55F66372017E223A +0 -1
  83. package/.vs/CopilotSnapshots/10B71DC3C4C1C04E8602FA06D3925F98/23B181EB1228EF40ABCEF51E89FBF6E6/45EABF6EF6BDFAA58C941A29E98C9C83 +0 -113
  84. package/.vs/CopilotSnapshots/10B71DC3C4C1C04E8602FA06D3925F98/23B181EB1228EF40ABCEF51E89FBF6E6/748E0B8859CA1A5FDCA675C9E53B6D1C +0 -1
  85. package/.vs/CopilotSnapshots/10B71DC3C4C1C04E8602FA06D3925F98/23B181EB1228EF40ABCEF51E89FBF6E6/A250FF4AD59546A65FFDC6AA92A4698E +0 -1
  86. package/.vs/CopilotSnapshots/10B71DC3C4C1C04E8602FA06D3925F98/23B181EB1228EF40ABCEF51E89FBF6E6/C42432BC73D8AA122171FAB6EEB13CBC +0 -19
  87. package/.vs/CopilotSnapshots/10B71DC3C4C1C04E8602FA06D3925F98/state.mpack +0 -1
  88. package/.vs/CopilotSnapshots/13B40109875D434BB24880356492BE7E/828B96E81CC7014B887AA519767FACC3/437DAEC1EBBAF4F25ABA1B6A25EB6933 +0 -25
  89. package/.vs/CopilotSnapshots/13B40109875D434BB24880356492BE7E/state.mpack +0 -1
  90. package/.vs/CopilotSnapshots/245168908540D646ACBD4FDE8D6DD2D4/1CDE8BAB21868E4D893E119554BA87E5/904140CF7EDF0C98AEA45F0D36062FE1 +0 -63
  91. package/.vs/CopilotSnapshots/245168908540D646ACBD4FDE8D6DD2D4/1CDE8BAB21868E4D893E119554BA87E5/DFF70C60F68ECD9A4E4C3C74E4CC4DEE +0 -1
  92. package/.vs/CopilotSnapshots/245168908540D646ACBD4FDE8D6DD2D4/1CDE8BAB21868E4D893E119554BA87E5/EF71788BE39818EEA3F0164DC15E1BD7 +0 -170
  93. package/.vs/CopilotSnapshots/245168908540D646ACBD4FDE8D6DD2D4/state.mpack +0 -1
  94. package/.vs/CopilotSnapshots/3BACC9346120824DB30006E353477163/87C831E9EA1AA249A25A44D08CF8E0B5/EF71788BE39818EEA3F0164DC15E1BD7 +0 -328
  95. package/.vs/CopilotSnapshots/3BACC9346120824DB30006E353477163/state.mpack +0 -1
  96. package/.vs/CopilotSnapshots/3EFABA5D1530804CA04C606F5EFDDC38/14FE66AD0B834E488EECD9594AE72472/23E7151F0483C5BB5E663F83D4962FD4 +0 -1
  97. package/.vs/CopilotSnapshots/3EFABA5D1530804CA04C606F5EFDDC38/14FE66AD0B834E488EECD9594AE72472/2D4DCEBC89D52B097AEEEABA23C0EB59 +0 -1
  98. package/.vs/CopilotSnapshots/3EFABA5D1530804CA04C606F5EFDDC38/14FE66AD0B834E488EECD9594AE72472/7C951A8A572EA5C371FDE657AF968B9C +0 -1
  99. package/.vs/CopilotSnapshots/3EFABA5D1530804CA04C606F5EFDDC38/14FE66AD0B834E488EECD9594AE72472/A32D1DB906C73FA74EF270AAEE165FC0 +0 -1
  100. package/.vs/CopilotSnapshots/3EFABA5D1530804CA04C606F5EFDDC38/14FE66AD0B834E488EECD9594AE72472/B692C85119711C76235AA5D78F9F3818 +0 -1
  101. package/.vs/CopilotSnapshots/3EFABA5D1530804CA04C606F5EFDDC38/14FE66AD0B834E488EECD9594AE72472/E602628EF6D764C2C267810C92906DBA +0 -1
  102. package/.vs/CopilotSnapshots/3EFABA5D1530804CA04C606F5EFDDC38/14FE66AD0B834E488EECD9594AE72472/E621434FB1D5415B14FBBCC11967E420 +0 -1
  103. package/.vs/CopilotSnapshots/3EFABA5D1530804CA04C606F5EFDDC38/9C5A45FA50D5344FBB275F406599FF4E/23E7151F0483C5BB5E663F83D4962FD4 +0 -1
  104. package/.vs/CopilotSnapshots/3EFABA5D1530804CA04C606F5EFDDC38/9C5A45FA50D5344FBB275F406599FF4E/2D4DCEBC89D52B097AEEEABA23C0EB59 +0 -1
  105. package/.vs/CopilotSnapshots/3EFABA5D1530804CA04C606F5EFDDC38/9C5A45FA50D5344FBB275F406599FF4E/7C951A8A572EA5C371FDE657AF968B9C +0 -1
  106. package/.vs/CopilotSnapshots/3EFABA5D1530804CA04C606F5EFDDC38/9C5A45FA50D5344FBB275F406599FF4E/A32D1DB906C73FA74EF270AAEE165FC0 +0 -1
  107. package/.vs/CopilotSnapshots/3EFABA5D1530804CA04C606F5EFDDC38/9C5A45FA50D5344FBB275F406599FF4E/B692C85119711C76235AA5D78F9F3818 +0 -1
  108. package/.vs/CopilotSnapshots/3EFABA5D1530804CA04C606F5EFDDC38/9C5A45FA50D5344FBB275F406599FF4E/E602628EF6D764C2C267810C92906DBA +0 -1
  109. package/.vs/CopilotSnapshots/3EFABA5D1530804CA04C606F5EFDDC38/9C5A45FA50D5344FBB275F406599FF4E/E621434FB1D5415B14FBBCC11967E420 +0 -1
  110. package/.vs/CopilotSnapshots/3EFABA5D1530804CA04C606F5EFDDC38/9C5A45FA50D5344FBB275F406599FF4E/EF71788BE39818EEA3F0164DC15E1BD7 +0 -489
  111. package/.vs/CopilotSnapshots/3EFABA5D1530804CA04C606F5EFDDC38/state.mpack +0 -1
  112. package/.vs/CopilotSnapshots/4C16AB71DC018C46A734FBF0BF4AEDD9/0E5F1D40C0CAE848B8F9457F29A1F3FF/D03CD05B4F5C8B7C8CDF0B5E1961B3CA +0 -42
  113. package/.vs/CopilotSnapshots/4C16AB71DC018C46A734FBF0BF4AEDD9/462A64EF41A4BF42A18708B83E02FD6F/D03CD05B4F5C8B7C8CDF0B5E1961B3CA +0 -40
  114. package/.vs/CopilotSnapshots/4C16AB71DC018C46A734FBF0BF4AEDD9/90C95C12B91FA142BEF509B6FA329DE5/A3B20E10A19C7CA170132274D2F9312B +0 -9
  115. package/.vs/CopilotSnapshots/4C16AB71DC018C46A734FBF0BF4AEDD9/90C95C12B91FA142BEF509B6FA329DE5/D03CD05B4F5C8B7C8CDF0B5E1961B3CA +0 -1
  116. package/.vs/CopilotSnapshots/4C16AB71DC018C46A734FBF0BF4AEDD9/AD7513C9BBFE904AAB7F940397B95A99/D03CD05B4F5C8B7C8CDF0B5E1961B3CA +0 -42
  117. package/.vs/CopilotSnapshots/4C16AB71DC018C46A734FBF0BF4AEDD9/state.mpack +0 -1
  118. package/.vs/CopilotSnapshots/50E0417FAD2E524D887CB5763C2FB7B4/63A4C250D9DCE04B9F61D8833B89B5BF/EF71788BE39818EEA3F0164DC15E1BD7 +0 -174
  119. package/.vs/CopilotSnapshots/50E0417FAD2E524D887CB5763C2FB7B4/state.mpack +0 -1
  120. package/.vs/CopilotSnapshots/5EF2507B002AC14EA991043C37C36551/60FF68DE489DAD4FBCBBB54AA3F6A552/EF71788BE39818EEA3F0164DC15E1BD7 +0 -496
  121. package/.vs/CopilotSnapshots/5EF2507B002AC14EA991043C37C36551/state.mpack +0 -1
  122. package/.vs/CopilotSnapshots/6AA7610F1FB2B746821E54C28A8D109B/7FB78C0F8CB04F4AA6AF3315277B80F8/FB35DD13E708043D4CD8ACD54E14708F +0 -1
  123. package/.vs/CopilotSnapshots/6AA7610F1FB2B746821E54C28A8D109B/state.mpack +0 -1
  124. package/.vs/CopilotSnapshots/7F905F8BAC0DAD49BD507CA45C569AFD/5782E13CAB03A04E9E1EC5692F892170/BA5D2B145A59265D63FA3B3584344B02 +0 -5
  125. package/.vs/CopilotSnapshots/7F905F8BAC0DAD49BD507CA45C569AFD/5782E13CAB03A04E9E1EC5692F892170/EF71788BE39818EEA3F0164DC15E1BD7 +0 -158
  126. package/.vs/CopilotSnapshots/7F905F8BAC0DAD49BD507CA45C569AFD/9886598393C89944B51920C01EB650C9/BA5D2B145A59265D63FA3B3584344B02 +0 -35
  127. package/.vs/CopilotSnapshots/7F905F8BAC0DAD49BD507CA45C569AFD/state.mpack +0 -1
  128. package/.vs/CopilotSnapshots/8492D9C7A2D9514DB8A69D304B48BF3C/D2DA3C4E2131E84EA02E321802A65254/EF71788BE39818EEA3F0164DC15E1BD7 +0 -165
  129. package/.vs/CopilotSnapshots/8492D9C7A2D9514DB8A69D304B48BF3C/state.mpack +0 -1
  130. package/.vs/CopilotSnapshots/891A2DC0E5FA424CB8BDDA4FE26ED372/E244D49DDC79514DBA322770B03AE287/1CF9939611B0D194AC81951A171DF046 +0 -43
  131. package/.vs/CopilotSnapshots/891A2DC0E5FA424CB8BDDA4FE26ED372/state.mpack +0 -1
  132. package/.vs/CopilotSnapshots/8D302F8BAE46F54EA82AE1DED1A5D240/11E6D1F8E56D734F99C5216231273E8D/E621434FB1D5415B14FBBCC11967E420 +0 -66
  133. package/.vs/CopilotSnapshots/8D302F8BAE46F54EA82AE1DED1A5D240/24C69A83160FD844B0DEFECF8E1313DB/1CF9939611B0D194AC81951A171DF046 +0 -43
  134. package/.vs/CopilotSnapshots/8D302F8BAE46F54EA82AE1DED1A5D240/24C69A83160FD844B0DEFECF8E1313DB/E621434FB1D5415B14FBBCC11967E420 +0 -53
  135. package/.vs/CopilotSnapshots/8D302F8BAE46F54EA82AE1DED1A5D240/5E6D1BCD7CE81548AB445DE97505DC62/1CF9939611B0D194AC81951A171DF046 +0 -30
  136. package/.vs/CopilotSnapshots/8D302F8BAE46F54EA82AE1DED1A5D240/5E6D1BCD7CE81548AB445DE97505DC62/E621434FB1D5415B14FBBCC11967E420 +0 -53
  137. package/.vs/CopilotSnapshots/8D302F8BAE46F54EA82AE1DED1A5D240/EC4E81E0109C8F4BA1B5D9CFE1C122BC/E621434FB1D5415B14FBBCC11967E420 +0 -54
  138. package/.vs/CopilotSnapshots/8D302F8BAE46F54EA82AE1DED1A5D240/state.mpack +0 -1
  139. package/.vs/CopilotSnapshots/90C28D332F9B2949810126139FCA2640/6139F888FA743143B8E6C99306A478A6/30F913EA337870677E7C575773ECF531 +0 -130
  140. package/.vs/CopilotSnapshots/90C28D332F9B2949810126139FCA2640/F21743E379F9C1439F6A6405A289AA99/30F913EA337870677E7C575773ECF531 +0 -160
  141. package/.vs/CopilotSnapshots/90C28D332F9B2949810126139FCA2640/state.mpack +0 -1
  142. package/.vs/CopilotSnapshots/99E22E75C8AEDF4DB3A668A9ADF0BC43/2E2EFE66C5E05C4B809986E9B23D5409/45EABF6EF6BDFAA58C941A29E98C9C83 +0 -113
  143. package/.vs/CopilotSnapshots/99E22E75C8AEDF4DB3A668A9ADF0BC43/2E2EFE66C5E05C4B809986E9B23D5409/FB35DD13E708043D4CD8ACD54E14708F +0 -2
  144. package/.vs/CopilotSnapshots/99E22E75C8AEDF4DB3A668A9ADF0BC43/BE46916E3A8F2C4284792B951B674907/FB35DD13E708043D4CD8ACD54E14708F +0 -5
  145. package/.vs/CopilotSnapshots/99E22E75C8AEDF4DB3A668A9ADF0BC43/state.mpack +0 -1
  146. package/.vs/CopilotSnapshots/A6D99EA2D3819F45AD8087D7487F9318/state.mpack +0 -1
  147. package/.vs/CopilotSnapshots/A78C77F7A237704D95BCFE1BBC39FB0F/68BA9941941DC244BC799D89DB2BF86E/7C951A8A572EA5C371FDE657AF968B9C +0 -96
  148. package/.vs/CopilotSnapshots/A78C77F7A237704D95BCFE1BBC39FB0F/state.mpack +0 -1
  149. package/.vs/CopilotSnapshots/AD2203F1B9FECE44BB6D5DC5D83E87AA/734AB1B2974F9545B7F12AAA5842524B/840203FFA9CCF5B33DFD5C7CC5B13527 +0 -125
  150. package/.vs/CopilotSnapshots/AD2203F1B9FECE44BB6D5DC5D83E87AA/state.mpack +0 -1
  151. package/.vs/CopilotSnapshots/AEC950C2FAD20147AEE8E325E2CA0A78/89CF3F527D0687479D14274E8CDF3DFF/1CF9939611B0D194AC81951A171DF046 +0 -30
  152. package/.vs/CopilotSnapshots/AEC950C2FAD20147AEE8E325E2CA0A78/89CF3F527D0687479D14274E8CDF3DFF/BA5D2B145A59265D63FA3B3584344B02 +0 -158
  153. package/.vs/CopilotSnapshots/AEC950C2FAD20147AEE8E325E2CA0A78/E495EBF64DC77A4BBD470B92DB0391C4/1CF9939611B0D194AC81951A171DF046 +0 -30
  154. package/.vs/CopilotSnapshots/AEC950C2FAD20147AEE8E325E2CA0A78/E495EBF64DC77A4BBD470B92DB0391C4/BA5D2B145A59265D63FA3B3584344B02 +0 -67
  155. package/.vs/CopilotSnapshots/AEC950C2FAD20147AEE8E325E2CA0A78/state.mpack +0 -1
  156. package/.vs/CopilotSnapshots/AF947096A34634478C5D084B8442CD81/1FCDCC65B992954DB78BD1F46892312B/44EB81A1663981E3F52FFFECE3A2918E +0 -143
  157. package/.vs/CopilotSnapshots/AF947096A34634478C5D084B8442CD81/1FCDCC65B992954DB78BD1F46892312B/E602628EF6D764C2C267810C92906DBA +0 -253
  158. package/.vs/CopilotSnapshots/AF947096A34634478C5D084B8442CD81/state.mpack +0 -1
  159. package/.vs/CopilotSnapshots/B1DED422A45D5740BA4EE745C04B2B0B/226F822A22D6BD44BCF56BAA47FA274C/EF71788BE39818EEA3F0164DC15E1BD7 +0 -174
  160. package/.vs/CopilotSnapshots/B1DED422A45D5740BA4EE745C04B2B0B/state.mpack +0 -1
  161. package/.vs/CopilotSnapshots/B5DD5E50ACD0FD4998564F0FDE7FAEE0/97908D1D83AD2D4EA7082388DE07CBB4/44EB81A1663981E3F52FFFECE3A2918E +0 -148
  162. package/.vs/CopilotSnapshots/B5DD5E50ACD0FD4998564F0FDE7FAEE0/state.mpack +0 -1
  163. package/.vs/CopilotSnapshots/B8ADCAC0C19DB14FB8388BA59A86BC74/7ED3F1557FD7BE4DBEAF9B59FD442925/44EB81A1663981E3F52FFFECE3A2918E +0 -152
  164. package/.vs/CopilotSnapshots/B8ADCAC0C19DB14FB8388BA59A86BC74/state.mpack +0 -1
  165. package/.vs/CopilotSnapshots/BDFF50BBC1A93747A0001969C3BD195F/0130610530354840BB06BF4F4E744242/D03CD05B4F5C8B7C8CDF0B5E1961B3CA +0 -138
  166. package/.vs/CopilotSnapshots/BDFF50BBC1A93747A0001969C3BD195F/5F1C58CEFBAF1B4E80C4CF38B83A0A5F/D03CD05B4F5C8B7C8CDF0B5E1961B3CA +0 -129
  167. package/.vs/CopilotSnapshots/BDFF50BBC1A93747A0001969C3BD195F/BDC3D099FCCCC147848630670EED45CF/D03CD05B4F5C8B7C8CDF0B5E1961B3CA +0 -139
  168. package/.vs/CopilotSnapshots/BDFF50BBC1A93747A0001969C3BD195F/D9E2B1CDD1E2BB468E0703BEF6706FF6/D03CD05B4F5C8B7C8CDF0B5E1961B3CA +0 -139
  169. package/.vs/CopilotSnapshots/BDFF50BBC1A93747A0001969C3BD195F/state.mpack +0 -1
  170. package/.vs/CopilotSnapshots/C1E2C1A9C1DCFA46B1D5F1C6F36A152D/BC91C0FD38D8694BB992A8DEC1833670/148399016C7971F5592DAADBB9523118 +0 -120
  171. package/.vs/CopilotSnapshots/C1E2C1A9C1DCFA46B1D5F1C6F36A152D/state.mpack +0 -1
  172. package/.vs/CopilotSnapshots/C4D8E85893425E4F86F18850F5CA5C08/6C0950E97063C547A72D737E618436B0/1CF9939611B0D194AC81951A171DF046 +0 -9
  173. package/.vs/CopilotSnapshots/C4D8E85893425E4F86F18850F5CA5C08/6C0950E97063C547A72D737E618436B0/DFF70C60F68ECD9A4E4C3C74E4CC4DEE +0 -84
  174. package/.vs/CopilotSnapshots/C4D8E85893425E4F86F18850F5CA5C08/state.mpack +0 -1
  175. package/.vs/CopilotSnapshots/C5C3CA4C37B14A47B6BC753D09F69117/03EA1376F04C0D468FD0851119159D34/44EB81A1663981E3F52FFFECE3A2918E +0 -148
  176. package/.vs/CopilotSnapshots/C5C3CA4C37B14A47B6BC753D09F69117/03EA1376F04C0D468FD0851119159D34/E602628EF6D764C2C267810C92906DBA +0 -265
  177. package/.vs/CopilotSnapshots/C5C3CA4C37B14A47B6BC753D09F69117/6887503C15557349842029E58C9C0D11/44EB81A1663981E3F52FFFECE3A2918E +0 -152
  178. package/.vs/CopilotSnapshots/C5C3CA4C37B14A47B6BC753D09F69117/6887503C15557349842029E58C9C0D11/E602628EF6D764C2C267810C92906DBA +0 -265
  179. package/.vs/CopilotSnapshots/C5C3CA4C37B14A47B6BC753D09F69117/state.mpack +0 -1
  180. package/.vs/CopilotSnapshots/C7190BBC8D95D44F9CF8E65E3E8C9CFD/4B6D07592F8EDC4AA3FF742B1F9531CC/1B80EB15A2FEBEC11C8210C5461F8DB7 +0 -43
  181. package/.vs/CopilotSnapshots/C7190BBC8D95D44F9CF8E65E3E8C9CFD/state.mpack +0 -1
  182. package/.vs/CopilotSnapshots/C79D12964917E44F9A5BB9D8FA725A0C/2071ADB146D8F7499419123B2A595A41/03E00441128DC70FFEA043158417AC9A +0 -15
  183. package/.vs/CopilotSnapshots/C79D12964917E44F9A5BB9D8FA725A0C/6ECBF707FE2A88418EA1649CE46068D5/03E00441128DC70FFEA043158417AC9A +0 -1
  184. package/.vs/CopilotSnapshots/C79D12964917E44F9A5BB9D8FA725A0C/70BAB1D82B755F47A2351CA905ACC0F1/03E00441128DC70FFEA043158417AC9A +0 -49
  185. package/.vs/CopilotSnapshots/C79D12964917E44F9A5BB9D8FA725A0C/99DDFADAEC5CA14D92CC470523A11743/03E00441128DC70FFEA043158417AC9A +0 -39
  186. package/.vs/CopilotSnapshots/C79D12964917E44F9A5BB9D8FA725A0C/state.mpack +0 -1
  187. package/.vs/CopilotSnapshots/D533D78C39683A4188A2CEC902BC03CD/2445F4111C26EB4DA5404F930E140F56/840203FFA9CCF5B33DFD5C7CC5B13527 +0 -6
  188. package/.vs/CopilotSnapshots/D533D78C39683A4188A2CEC902BC03CD/2445F4111C26EB4DA5404F930E140F56/C27E5C1787B7957BF6F0C3D417890141 +0 -1
  189. package/.vs/CopilotSnapshots/D533D78C39683A4188A2CEC902BC03CD/state.mpack +0 -1
  190. package/.vs/CopilotSnapshots/DCAA5A718EC8304685D14C52356D80E0/5FC7C36C7769414C80BFF27A07BB5063/BE400B34D9700403D2BA3A1AA6B1EF1D +0 -15
  191. package/.vs/CopilotSnapshots/DCAA5A718EC8304685D14C52356D80E0/A4DD9B92084D8E48A95435EDB2B14545/86848C7099AD75EE4E8F10E066F49671 +0 -15
  192. package/.vs/CopilotSnapshots/DCAA5A718EC8304685D14C52356D80E0/A4DD9B92084D8E48A95435EDB2B14545/BE400B34D9700403D2BA3A1AA6B1EF1D +0 -15
  193. package/.vs/CopilotSnapshots/DCAA5A718EC8304685D14C52356D80E0/state.mpack +0 -1
  194. package/.vs/CopilotSnapshots/DCF62F751B748642A0BF5D5125AB6769/5F324CB20D1B5045A13090FA9D177B74/7C951A8A572EA5C371FDE657AF968B9C +0 -96
  195. package/.vs/CopilotSnapshots/DCF62F751B748642A0BF5D5125AB6769/5F324CB20D1B5045A13090FA9D177B74/B692C85119711C76235AA5D78F9F3818 +0 -73
  196. package/.vs/CopilotSnapshots/DCF62F751B748642A0BF5D5125AB6769/5F324CB20D1B5045A13090FA9D177B74/EF71788BE39818EEA3F0164DC15E1BD7 +0 -182
  197. package/.vs/CopilotSnapshots/DCF62F751B748642A0BF5D5125AB6769/C1287B2893D30D40A46C30DC2CE05178/7C951A8A572EA5C371FDE657AF968B9C +0 -96
  198. package/.vs/CopilotSnapshots/DCF62F751B748642A0BF5D5125AB6769/C1287B2893D30D40A46C30DC2CE05178/B692C85119711C76235AA5D78F9F3818 +0 -98
  199. package/.vs/CopilotSnapshots/DCF62F751B748642A0BF5D5125AB6769/CA6304DFE7764A4C87ACE5816CDB7CD9/7C951A8A572EA5C371FDE657AF968B9C +0 -96
  200. package/.vs/CopilotSnapshots/DCF62F751B748642A0BF5D5125AB6769/CA6304DFE7764A4C87ACE5816CDB7CD9/B692C85119711C76235AA5D78F9F3818 +0 -21
  201. package/.vs/CopilotSnapshots/DCF62F751B748642A0BF5D5125AB6769/CA6304DFE7764A4C87ACE5816CDB7CD9/EF71788BE39818EEA3F0164DC15E1BD7 +0 -176
  202. package/.vs/CopilotSnapshots/DCF62F751B748642A0BF5D5125AB6769/state.mpack +0 -1
  203. package/.vs/VSWorkspaceState.json +0 -6
  204. package/.vs/slnx.sqlite +0 -0
  205. package/.vs/ts-sample/CopilotIndices/17.13.433.20974/CodeChunks.db +0 -0
  206. package/.vs/ts-sample/CopilotIndices/17.13.433.20974/SemanticSymbols.db +0 -0
  207. package/.vs/ts-sample/CopilotIndices/17.13.439.2385/CodeChunks.db +0 -0
  208. package/.vs/ts-sample/CopilotIndices/17.13.439.2385/SemanticSymbols.db +0 -0
  209. package/.vs/ts-sample/CopilotIndices/17.13.441.19478/CodeChunks.db +0 -0
  210. package/.vs/ts-sample/CopilotIndices/17.13.441.19478/SemanticSymbols.db +0 -0
  211. package/.vs/ts-sample/FileContentIndex/2fa9d8cc-9158-496d-aa9b-3a471d46a157.vsidx +0 -0
  212. package/.vs/ts-sample/FileContentIndex/5530f45b-244e-4271-b3e3-d8250f03da64.vsidx +0 -0
  213. package/.vs/ts-sample/FileContentIndex/75f95b5d-c8f7-49ca-a3d7-d1d8f63db437.vsidx +0 -0
  214. package/.vs/ts-sample/FileContentIndex/abb2aeeb-f62a-4ca7-bfbf-7a1eada625a5.vsidx +0 -0
  215. package/.vs/ts-sample/FileContentIndex/fc749b54-0f95-45f6-ac75-a8ab3409a5ce.vsidx +0 -0
  216. package/.vs/ts-sample/config/applicationhost.config +0 -1026
  217. package/.vs/ts-sample/copilot-chat/3c67db7d/sessions/0901b413-5d87-4b43-b248-80356492be7e +0 -0
  218. package/.vs/ts-sample/copilot-chat/3c67db7d/sessions/0f61a76a-b21f-46b7-821e-54c28a8d109b +0 -0
  219. package/.vs/ts-sample/copilot-chat/3c67db7d/sessions/101aef14-dd28-4de3-b2eb-e0b26d587b3a +0 -0
  220. package/.vs/ts-sample/copilot-chat/3c67db7d/sessions/22d4deb1-5da4-4057-ba4e-e745c04b2b0b +0 -0
  221. package/.vs/ts-sample/copilot-chat/3c67db7d/sessions/2a76030d-a09e-48cb-85f2-114567f23f93 +0 -0
  222. package/.vs/ts-sample/copilot-chat/3c67db7d/sessions/2c6d08ca-cb98-4233-8f7c-011c3b409234 +0 -0
  223. package/.vs/ts-sample/copilot-chat/3c67db7d/sessions/338dc290-9b2f-4929-8101-26139fca2640 +0 -0
  224. package/.vs/ts-sample/copilot-chat/3c67db7d/sessions/34c9ac3b-2061-4d82-b300-06e353477163 +0 -0
  225. package/.vs/ts-sample/copilot-chat/3c67db7d/sessions/3c01b107-5c38-4156-a5f5-100e0751210b +0 -0
  226. package/.vs/ts-sample/copilot-chat/3c67db7d/sessions/489ee702-f5df-4723-87cb-618de990598a +0 -0
  227. package/.vs/ts-sample/copilot-chat/3c67db7d/sessions/4ccac3c5-b137-474a-b6bc-753d09f69117 +0 -0
  228. package/.vs/ts-sample/copilot-chat/3c67db7d/sessions/505eddb5-d0ac-49fd-9856-4f0fde7faee0 +0 -0
  229. package/.vs/ts-sample/copilot-chat/3c67db7d/sessions/58e8d8c4-4293-4f5e-86f1-8850f5ca5c08 +0 -0
  230. package/.vs/ts-sample/copilot-chat/3c67db7d/sessions/5dbafa3e-3015-4c80-a04c-606f5efddc38 +0 -0
  231. package/.vs/ts-sample/copilot-chat/3c67db7d/sessions/5f29f527-e43a-4661-b60e-ff772041f413 +0 -0
  232. package/.vs/ts-sample/copilot-chat/3c67db7d/sessions/6248dfd7-38ae-4fa6-9176-2fdc0694c3e8 +0 -0
  233. package/.vs/ts-sample/copilot-chat/3c67db7d/sessions/66fcbd64-32dc-436d-80e6-7435a1a3ecf1 +0 -0
  234. package/.vs/ts-sample/copilot-chat/3c67db7d/sessions/6f9ad733-d555-4d2c-b073-eb6a1aada347 +0 -0
  235. package/.vs/ts-sample/copilot-chat/3c67db7d/sessions/715aaadc-c88e-4630-85d1-4c52356d80e0 +0 -0
  236. package/.vs/ts-sample/copilot-chat/3c67db7d/sessions/71ab164c-01dc-468c-a734-fbf0bf4aedd9 +0 -0
  237. package/.vs/ts-sample/copilot-chat/3c67db7d/sessions/752ee299-aec8-4ddf-b3a6-68a9adf0bc43 +0 -0
  238. package/.vs/ts-sample/copilot-chat/3c67db7d/sessions/752ff6dc-741b-4286-a0bf-5d5125ab6769 +0 -0
  239. package/.vs/ts-sample/copilot-chat/3c67db7d/sessions/7b50f25e-2a00-4ec1-a991-043c37c36551 +0 -0
  240. package/.vs/ts-sample/copilot-chat/3c67db7d/sessions/7f41e050-2ead-4d52-887c-b5763c2fb7b4 +0 -0
  241. package/.vs/ts-sample/copilot-chat/3c67db7d/sessions/85b50c9e-8895-4085-89c1-934ad2704744 +0 -0
  242. package/.vs/ts-sample/copilot-chat/3c67db7d/sessions/8b2f308d-46ae-4ef5-a82a-e1ded1a5d240 +0 -0
  243. package/.vs/ts-sample/copilot-chat/3c67db7d/sessions/8b5f907f-0dac-49ad-bd50-7ca45c569afd +0 -0
  244. package/.vs/ts-sample/copilot-chat/3c67db7d/sessions/8cd733d5-6839-413a-88a2-cec902bc03cd +0 -0
  245. package/.vs/ts-sample/copilot-chat/3c67db7d/sessions/90685124-4085-46d6-acbd-4fde8d6dd2d4 +0 -0
  246. package/.vs/ts-sample/copilot-chat/3c67db7d/sessions/96129dc7-1749-4fe4-9a5b-b9d8fa725a0c +0 -0
  247. package/.vs/ts-sample/copilot-chat/3c67db7d/sessions/967094af-46a3-4734-8c5d-084b8442cd81 +0 -0
  248. package/.vs/ts-sample/copilot-chat/3c67db7d/sessions/a29ed9a6-81d3-459f-ad80-87d7487f9318 +0 -0
  249. package/.vs/ts-sample/copilot-chat/3c67db7d/sessions/a9c1e2c1-dcc1-46fa-b1d5-f1c6f36a152d +0 -0
  250. package/.vs/ts-sample/copilot-chat/3c67db7d/sessions/badc76f4-d284-4b6c-94e9-abdbc74de540 +0 -0
  251. package/.vs/ts-sample/copilot-chat/3c67db7d/sessions/bb50ffbd-a9c1-4737-a000-1969c3bd195f +0 -0
  252. package/.vs/ts-sample/copilot-chat/3c67db7d/sessions/bc0b19c7-958d-4fd4-9cf8-e65e3e8c9cfd +0 -0
  253. package/.vs/ts-sample/copilot-chat/3c67db7d/sessions/c02d1a89-fae5-4c42-b8bd-da4fe26ed372 +0 -0
  254. package/.vs/ts-sample/copilot-chat/3c67db7d/sessions/c0caadb8-9dc1-4fb1-b838-8ba59a86bc74 +0 -0
  255. package/.vs/ts-sample/copilot-chat/3c67db7d/sessions/c250c9ae-d2fa-4701-aee8-e325e2ca0a78 +0 -0
  256. package/.vs/ts-sample/copilot-chat/3c67db7d/sessions/c31db710-c1c4-4ec0-8602-fa06d3925f98 +0 -0
  257. package/.vs/ts-sample/copilot-chat/3c67db7d/sessions/c7d99284-d9a2-4d51-b8a6-9d304b48bf3c +0 -0
  258. package/.vs/ts-sample/copilot-chat/3c67db7d/sessions/ddd1fab4-4016-4cfc-bf9f-f4a85bdfc112 +0 -0
  259. package/.vs/ts-sample/copilot-chat/3c67db7d/sessions/f10322ad-feb9-44ce-bb6d-5dc5d83e87aa +0 -0
  260. package/.vs/ts-sample/copilot-chat/3c67db7d/sessions/f7778ca7-37a2-4d70-95bc-fe1bbc39fb0f +0 -0
  261. package/.vs/ts-sample/v17/.suo +0 -0
  262. package/.vs/ts-sample/v17/.wsuo +0 -0
  263. package/.vs/ts-sample/v17/DocumentLayout.backup.json +0 -425
  264. package/.vs/ts-sample/v17/DocumentLayout.json +0 -423
  265. package/.vs/ts-sample/v17/TestStore/0/000.testlog +0 -0
  266. 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
- }