rawsql-ts 0.1.0-beta.5 → 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 +7 -3
  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,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
- }