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,120 +0,0 @@
1
- import { SqlTokenizer } from "../src/sqlTokenizer";
2
-
3
- test('tokenizes integer number', () => {
4
- // Arrange
5
- const tokenizer = new SqlTokenizer('123');
6
-
7
- // Act
8
- const tokens = tokenizer.readLexmes();
9
-
10
- // Assert
11
- expect(tokens.length).toBe(1);
12
- expect(tokens[0].value).toBe('123');
13
- });
14
-
15
- test('tokenizes positive number', () => {
16
- // Arrange
17
- const tokenizer = new SqlTokenizer('+123');
18
-
19
- // Act
20
- const tokens = tokenizer.readLexmes();
21
-
22
- // Assert
23
- expect(tokens.length).toBe(1);
24
- expect(tokens[0].value).toBe('123');
25
- });
26
-
27
- test('tokenizes decimal number', () => {
28
- // Arrange
29
- const tokenizer = new SqlTokenizer('123.456');
30
-
31
- // Act
32
- const tokens = tokenizer.readLexmes();
33
-
34
- // Assert
35
- expect(tokens.length).toBe(1);
36
- expect(tokens[0].value).toBe('123.456');
37
- });
38
-
39
- test('tokenizes number starting with dot', () => {
40
- // Arrange
41
- const tokenizer = new SqlTokenizer('.456');
42
-
43
- // Act
44
- const tokens = tokenizer.readLexmes();
45
-
46
- // Assert
47
- expect(tokens.length).toBe(1);
48
- expect(tokens[0].value).toBe('0.456');
49
- });
50
-
51
- test('tokenizes hexadecimal number', () => {
52
- // Arrange
53
- const tokenizer = new SqlTokenizer('0x1A3F');
54
-
55
- // Act
56
- const tokens = tokenizer.readLexmes();
57
-
58
- // Assert
59
- expect(tokens.length).toBe(1);
60
- expect(tokens[0].value).toBe('0x1A3F');
61
- });
62
-
63
- test('tokenizes exponential notation', () => {
64
- // Arrange
65
- const tokenizer = new SqlTokenizer('1.23e+10');
66
-
67
- // Act
68
- const tokens = tokenizer.readLexmes();
69
-
70
- // Assert
71
- expect(tokens.length).toBe(1);
72
- });
73
-
74
- test('tokenizes negative integer number', () => {
75
- // Arrange
76
- const tokenizer = new SqlTokenizer('-123');
77
-
78
- // Act
79
- const tokens = tokenizer.readLexmes();
80
-
81
- // Assert
82
- expect(tokens.length).toBe(1);
83
- expect(tokens[0].value).toBe('-123');
84
- });
85
-
86
- test('tokenizes negative decimal number', () => {
87
- // Arrange
88
- const tokenizer = new SqlTokenizer('-123.456');
89
-
90
- // Act
91
- const tokens = tokenizer.readLexmes();
92
-
93
- // Assert
94
- expect(tokens.length).toBe(1);
95
- expect(tokens[0].value).toBe('-123.456');
96
- });
97
-
98
- test('tokenizes negative number starting with dot', () => {
99
- // Arrange
100
- const tokenizer = new SqlTokenizer('-.456');
101
-
102
- // Act
103
- const tokens = tokenizer.readLexmes();
104
-
105
- // Assert
106
- expect(tokens.length).toBe(1);
107
- expect(tokens[0].value).toBe('-0.456');
108
- });
109
-
110
- test('tokenizes negative exponential notation', () => {
111
- // Arrange
112
- const tokenizer = new SqlTokenizer('-1.23e+10');
113
-
114
- // Act
115
- const tokens = tokenizer.readLexmes();
116
-
117
- // Assert
118
- expect(tokens.length).toBe(1);
119
- expect(tokens[0].value).toBe('-1.23e+10');
120
- });
@@ -1 +0,0 @@
1
- ��SessionId��$a9c1e2c1-dcc1-46fa-b1d5-f1c6f36a152d��Id�4Microsoft.VisualStudio.Conversations.Chat.HelpWindow�CorrelationStates���CorrelationId�$fdc091bc-d838-4b69-b992-a8dec1833670�Snapshots�� 148399016C7971F5592DAADBB9523118��SavedFileName١C:\Users\mssgm\Documents\GitHub\ts-sample\.vs\CopilotSnapshots\C1E2C1A9C1DCFA46B1D5F1C6F36A152D\BC91C0FD38D8694BB992A8DEC1833670\148399016C7971F5592DAADBB9523118�OriginalFilePath�?C:\Users\mssgm\Documents\GitHub\ts-sample\tests\literal.test.ts�NewFileMarker�
@@ -1,9 +0,0 @@
1
- 
2
-
3
- /*
4
- 以下の記号で始まる文字列は演算子として扱う
5
- また、以下の記号が続く場合、それらをまとめて演算子として扱う
6
- '+', '-', '*', '/', '%', // Arithmetic operators
7
- '~', '@', '#', '$', '^', '&', // Special symbols
8
- '!', '<', '>', '=', '|', '\\', // Other symbols
9
- */
@@ -1,84 +0,0 @@
1
- import { BaseTokenReader } from './BaseTokenReader';
2
- import { Lexeme } from '../models/Lexeme';
3
-
4
- /**
5
- * Manages and coordinates multiple token readers
6
- */
7
- export class TokenReaderManager {
8
- private readers: BaseTokenReader[];
9
- private input: string;
10
- private position: number;
11
-
12
- constructor(input: string, position: number = 0) {
13
- this.input = input;
14
- this.position = position;
15
- this.readers = [];
16
- }
17
-
18
- /**
19
- * Register a token reader
20
- * @param reader The reader to register
21
- * @returns This manager instance for chaining
22
- */
23
- public register(reader: BaseTokenReader): TokenReaderManager {
24
- this.readers.push(reader);
25
- return this;
26
- }
27
-
28
- /**
29
- * Register multiple token readers
30
- * @param readers The readers to register
31
- * @returns This manager instance for chaining
32
- */
33
- public registerAll(readers: BaseTokenReader[]): TokenReaderManager {
34
- readers.forEach(reader => this.register(reader));
35
- return this;
36
- }
37
-
38
- /**
39
- * Update the position for all readers
40
- */
41
- private setPosition(position: number): void {
42
- this.position = position;
43
- for (const reader of this.readers) {
44
- reader.setPosition(position);
45
- }
46
- }
47
-
48
- /**
49
- * Try to read a token using all registered readers
50
- * @param previous The previous token, if any
51
- * @returns The lexeme if a reader could read it, null otherwise
52
- */
53
- public tryRead(position: number, previous: Lexeme | null): Lexeme | null {
54
- this.setPosition(position);
55
- for (const reader of this.readers) {
56
- const lexeme = reader.tryRead(previous);
57
- if (lexeme) {
58
- return lexeme;
59
- }
60
- }
61
- return null;
62
- }
63
-
64
- /**
65
- * Get the maximum position among all readers
66
- */
67
- public getMaxPosition(): number {
68
- let maxPosition = this.position;
69
- for (const reader of this.readers) {
70
- const position = reader.getPosition();
71
- if (position > maxPosition) {
72
- maxPosition = position;
73
- }
74
- }
75
- return maxPosition;
76
- }
77
-
78
- /**
79
- * Get the input string
80
- */
81
- public getInput(): string {
82
- return this.input;
83
- }
84
- }
@@ -1 +0,0 @@
1
- ��SessionId��$58e8d8c4-4293-4f5e-86f1-8850f5ca5c08��Id�4Microsoft.VisualStudio.Conversations.Chat.HelpWindow�CorrelationStates���CorrelationId�$e950096c-6370-47c5-a72d-737e618436b0�Snapshots�� DFF70C60F68ECD9A4E4C3C74E4CC4DEE��SavedFileName١C:\Users\mssgm\Documents\GitHub\ts-sample\.vs\CopilotSnapshots\C4D8E85893425E4F86F18850F5CA5C08\6C0950E97063C547A72D737E618436B0\DFF70C60F68ECD9A4E4C3C74E4CC4DEE�OriginalFilePath�PC:\Users\mssgm\Documents\GitHub\ts-sample\src\tokenReaders\TokenReaderManager.ts�NewFileMarker�� 1CF9939611B0D194AC81951A171DF046��SavedFileName١C:\Users\mssgm\Documents\GitHub\ts-sample\.vs\CopilotSnapshots\C4D8E85893425E4F86F18850F5CA5C08\6C0950E97063C547A72D737E618436B0\1CF9939611B0D194AC81951A171DF046�OriginalFilePath�QC:\Users\mssgm\Documents\GitHub\ts-sample\src\tokenReaders\OperatorTokenReader.ts�NewFileMarker�
@@ -1,148 +0,0 @@
1
- import { StringUtils } from "./stringUtils";
2
-
3
- export enum KeywordMatchResult {
4
- NotAKeyword, // "キーワードではない"
5
- PartialOnly, // "途中(ここで終わることはない)"
6
- PartialOrFinal, // "途中または終端(ここで止まることはある)"
7
- Final // "終端(これ以上長いキーワードはない)"
8
- }
9
-
10
- export class KeywordTrieReader {
11
- private input: string;
12
- private trie: KeywordTrie;
13
-
14
- constructor(input: string, trie: KeywordTrie) {
15
- this.input = input;
16
- this.trie = trie;
17
- this.trie.reset();
18
- }
19
-
20
- private isEndOfInput(position: number, shift: number = 0): boolean {
21
- return position + shift >= this.input.length;
22
- }
23
-
24
- private canRead(position: number, shift: number = 0): boolean {
25
- return !this.isEndOfInput(position, shift);
26
- }
27
-
28
- public readKeyword(position: number): { keyword: string, newPosition: number } | null {
29
- if (this.isEndOfInput(position)) {
30
- return null;
31
- }
32
-
33
- // reset trie node
34
- this.trie.reset();
35
- const result = StringUtils.tryReadRegularIdentifier(this.input, position);
36
-
37
- if (result === null) {
38
- return null;
39
- }
40
-
41
- let matchResult = this.trie.pushLexeme(result.identifier);
42
-
43
- if (matchResult === KeywordMatchResult.NotAKeyword) {
44
- return null;
45
- }
46
-
47
- if (matchResult === KeywordMatchResult.Final) {
48
- return {
49
- keyword: result.identifier,
50
- newPosition: result.newPosition
51
- };
52
- }
53
-
54
- // multi-word keyword
55
- let lexeme = result.identifier;
56
- position = StringUtils.skipWhiteSpacesAndComments(this.input, result.newPosition);
57
-
58
- while (this.canRead(position)) {
59
- const previousMatchResult = matchResult;
60
-
61
- const result = StringUtils.tryReadRegularIdentifier(this.input, position);
62
-
63
- if (result !== null) {
64
- matchResult = this.trie.pushLexeme(result.identifier);
65
-
66
- if (matchResult === KeywordMatchResult.NotAKeyword) {
67
- if (previousMatchResult === KeywordMatchResult.PartialOrFinal) {
68
- break;
69
- } else {
70
- return null;
71
- }
72
- }
73
-
74
- lexeme += ' ' + result.identifier;
75
- position = StringUtils.skipWhiteSpacesAndComments(this.input, result.newPosition);
76
-
77
- if (matchResult === KeywordMatchResult.Final) {
78
- break;
79
- }
80
- } else if (previousMatchResult === KeywordMatchResult.PartialOrFinal) {
81
- break;
82
- } else {
83
- return null;
84
- }
85
- }
86
- return {
87
- keyword: lexeme,
88
- newPosition: position
89
- };
90
- }
91
- }
92
-
93
- export class KeywordTrie {
94
- private root: Map<string, any> = new Map();
95
- private currentNode: Map<string, any>;
96
-
97
- // Add a caching property to avoid regex pattern creation for each check
98
- private hasEndProperty: boolean = false;
99
- private hasMoreProperties: boolean = false;
100
-
101
- constructor(keywords: string[][]) {
102
- // initialize root node
103
- for (const keyword of keywords) {
104
- this.addKeyword(keyword);
105
- }
106
- // set current node to root
107
- this.currentNode = this.root;
108
- }
109
-
110
- private addKeyword(keyword: string[]) {
111
- let node = this.root;
112
- for (const word of keyword) {
113
- if (!node.has(word)) {
114
- node.set(word, new Map());
115
- }
116
- node = node.get(word);
117
- }
118
- node.set("__end__", true);
119
- }
120
-
121
- public reset(): void {
122
- this.currentNode = this.root;
123
- this.hasEndProperty = false;
124
- this.hasMoreProperties = false;
125
- }
126
-
127
- public pushLexeme(lexeme: string): KeywordMatchResult {
128
- if (!this.currentNode.has(lexeme)) {
129
- return KeywordMatchResult.NotAKeyword;
130
- }
131
-
132
- // move to next node
133
- this.currentNode = this.currentNode.get(lexeme);
134
-
135
- // Cache property checks to avoid repeated operations
136
- this.hasEndProperty = this.currentNode.has("__end__");
137
- this.hasMoreProperties = this.currentNode.size > (this.hasEndProperty ? 1 : 0);
138
-
139
- if (this.hasEndProperty && !this.hasMoreProperties) {
140
- return KeywordMatchResult.Final;
141
- }
142
- if (this.hasEndProperty && this.hasMoreProperties) {
143
- return KeywordMatchResult.PartialOrFinal;
144
- }
145
-
146
- return KeywordMatchResult.PartialOnly;
147
- }
148
- }
@@ -1,265 +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 { KeywordTrie, KeywordTrieReader } from '../utils/KeywordTrie';
6
-
7
- /**
8
- * Reads SQL literal tokens (numbers, strings)
9
- */
10
-
11
- const keywords = [
12
- ["null"],
13
- ["true"],
14
- ["false"],
15
- ["current_date"],
16
- ["current_time"],
17
- ["current_timestamp"],
18
- ["localtime"],
19
- ["localtimestamp"],
20
- ["unbounded"],
21
- ["normalized"],
22
- ["nfc", "normalized"],
23
- ["nfd", "normalized"],
24
- ["nfkc", "normalized"],
25
- ["nfkd", "normalized"],
26
- ["nfc"],
27
- ["nfd"],
28
- ["nfkc"],
29
- ["nfkd"]
30
- ];
31
- const trie = new KeywordTrie(keywords);
32
-
33
- // Prefix sets for quick checks
34
- const SINGLE_CHAR_ESCAPED_PREFIX = new Set(['e\'', 'E\'', 'x\'', 'X\'', 'b\'', 'B\'']);
35
- const UNICODE_ESCAPED_PREFIX = new Set(['u&\'', 'U&\'']);
36
-
37
- export class LiteralTokenReader extends BaseTokenReader {
38
- /**
39
- * Try to read a literal token
40
- */
41
- public tryRead(previous: Lexeme | null): Lexeme | null {
42
- if (this.isEndOfInput()) {
43
- return null;
44
- }
45
-
46
- const char = this.input[this.position];
47
-
48
- // Check for keyword literals
49
- const keyword = this.tryReadKeyword();
50
- if (keyword) {
51
- return keyword;
52
- }
53
-
54
- // Decimal token starting with a dot
55
- if (char === '.' && this.canRead(1) && CharLookupTable.isDigit(this.input[this.position + 1])) {
56
- return this.createLexeme(TokenType.Literal, this.readDigit());
57
- }
58
-
59
- // String literal
60
- if (char === '\'') {
61
- const value = this.readSingleQuotedString();
62
- return this.createLexeme(TokenType.Literal, value);
63
- }
64
-
65
- // Digit tokens
66
- if (CharLookupTable.isDigit(char)) {
67
- return this.createLexeme(TokenType.Literal, this.readDigit());
68
- }
69
-
70
- // Signed number
71
- if ((char === '+' || char === '-') && this.isValidNumericPrefix(previous)) {
72
- const sign = char;
73
- this.position++;
74
-
75
- // Skip whitespace after sign
76
- let pos = this.position;
77
- while (this.canRead() && CharLookupTable.isWhitespace(this.input[this.position])) {
78
- this.position++;
79
- }
80
-
81
- if (this.canRead() && (
82
- CharLookupTable.isDigit(this.input[this.position]) ||
83
- (this.input[this.position] === '.' &&
84
- this.canRead(1) &&
85
- CharLookupTable.isDigit(this.input[this.position + 1]))
86
- )) {
87
- return this.createLexeme(
88
- TokenType.Literal,
89
- sign === '-' ? sign + this.readDigit() : this.readDigit()
90
- );
91
- }
92
-
93
- // Not a number, restore position
94
- this.position = pos - 1; // Adjust for the increment at the beginning
95
- }
96
-
97
- // Check for prefixed literals
98
- return this.tryReadEscapedLiteral();
99
- }
100
-
101
- private tryReadKeyword(): Lexeme | null {
102
- // Check for keyword literals
103
- const reader = new KeywordTrieReader(this.input, trie);
104
- const result = reader.readKeyword(this.position);
105
- if (result) {
106
- this.position = result.newPosition;
107
- return this.createLexeme(TokenType.Literal, result.keyword);
108
- }
109
- return null;
110
- }
111
-
112
- /**
113
- * Check if the current context allows for a signed number
114
- */
115
- private isValidNumericPrefix(previous: Lexeme | null): boolean {
116
- return previous === null ||
117
- (previous.type !== TokenType.Literal &&
118
- previous.type !== TokenType.Identifier);
119
- }
120
-
121
- /**
122
- * Read a numeric value
123
- */
124
- private readDigit(): string {
125
- const start = this.position;
126
- let hasDot = false;
127
- let hasExponent = false;
128
-
129
- // Consider 0x, 0b, 0o
130
- if (this.canRead(1) &&
131
- this.input[this.position] === '0' &&
132
- "xbo".includes(this.input[this.position + 1].toLowerCase())) {
133
-
134
- const prefixType = this.input[this.position + 1].toLowerCase();
135
- this.position += 2;
136
-
137
- // Continue to get numeric and hexadecimal notation strings
138
- const isHex = prefixType === 'x';
139
- while (this.canRead()) {
140
- const c = this.input[this.position];
141
- if (CharLookupTable.isDigit(c) || (isHex && CharLookupTable.isHexChar(c))) {
142
- this.position++;
143
- } else {
144
- break;
145
- }
146
- }
147
-
148
- return this.input.slice(start, this.position);
149
- }
150
-
151
- // If starting with dot, note it
152
- if (this.input[start] === '.') {
153
- hasDot = true;
154
- this.position++;
155
- }
156
-
157
- // Consider decimal point and exponential notation
158
- while (this.canRead()) {
159
- const char = this.input[this.position];
160
-
161
- if (char === '.' && !hasDot) {
162
- hasDot = true;
163
- } else if ((char === 'e' || char === 'E') && !hasExponent) {
164
- hasExponent = true;
165
- if (this.canRead(1) && (this.input[this.position + 1] === '+' || this.input[this.position + 1] === '-')) {
166
- this.position++;
167
- }
168
- } else if (!CharLookupTable.isDigit(char)) {
169
- break;
170
- }
171
-
172
- this.position++;
173
- }
174
-
175
- if (start === this.position) {
176
- throw new Error(`Unexpected character. position: ${start}\n${this.getDebugPositionInfo(start)}`);
177
- }
178
-
179
- if (this.input[start] === '.') {
180
- // If the number starts with a dot, add 0 to the front
181
- return '0' + this.input.slice(start, this.position);
182
- }
183
-
184
- return this.input.slice(start, this.position);
185
- }
186
-
187
- /**
188
- * Read a string literal
189
- */
190
- private readSingleQuotedString(): string {
191
- const start = this.position;
192
-
193
- this.read('\'');
194
-
195
- while (this.canRead()) {
196
- const char = this.input[this.position];
197
-
198
- // escape character check
199
- if (char === '\\' && this.canRead(1) && this.input[this.position + 1] === '\'') {
200
- this.position += 2;
201
- continue;
202
- }
203
- else if (char === '\'') {
204
- break;
205
- }
206
- this.position++;
207
- }
208
-
209
- if (this.isEndOfInput()) {
210
- throw new Error(`Single quote is not closed. position: ${start}\n${this.getDebugPositionInfo(start)}`);
211
- }
212
-
213
- const value = this.input.slice(start, this.position);
214
- this.position++;
215
- return value;
216
- }
217
-
218
- /**
219
- * Try to read an escaped literal like e'...', x'...', etc.
220
- */
221
- private tryReadEscapedLiteral(): Lexeme | null {
222
- const start = this.position;
223
-
224
- // Check for prefixed literals: e', x', b'
225
- if (this.canRead(1) && SINGLE_CHAR_ESCAPED_PREFIX.has(this.input.slice(start, start + 2))) {
226
- return this.readPrefixedLiteral(start, 2);
227
- }
228
-
229
- // Check for unicode literal: u&'
230
- if (this.canRead(2) && UNICODE_ESCAPED_PREFIX.has( this.input.slice(start, start + 3))) {
231
- return this.readPrefixedLiteral(start, 3);
232
- }
233
-
234
- return null;
235
- }
236
-
237
- private readPrefixedLiteral(start: number, prefixLength: number): Lexeme {
238
- // Skip the prefix
239
- this.position += prefixLength;
240
-
241
- // Read until the closing quote
242
- while (this.canRead()) {
243
- if (this.input[this.position] === '\\' && this.canRead(1) && this.input[this.position + 1] === '\'') {
244
- // Skip escaped single quote
245
- this.position += 2;
246
- continue;
247
- }
248
- else if (this.input[this.position] === '\'') {
249
- // Found closing quote
250
- this.position++;
251
- break;
252
- }
253
- this.position++;
254
- }
255
-
256
- if (this.position <= start + prefixLength) {
257
- throw new Error(`Closing delimiter is not found. position: ${start}\n${this.getDebugPositionInfo(start)}`);
258
- }
259
-
260
- return {
261
- type: TokenType.Literal,
262
- value: this.input.slice(start, this.position)
263
- };
264
- }
265
- }