rawsql-ts 0.11.32-beta → 0.11.34-beta

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 (169) hide show
  1. package/dist/esm/index.js +28 -0
  2. package/dist/esm/index.js.map +1 -1
  3. package/dist/esm/index.min.js +52 -36
  4. package/dist/esm/index.min.js.map +4 -4
  5. package/dist/esm/src/formatters/OriginalFormatRestorer.d.ts +40 -0
  6. package/dist/esm/src/formatters/OriginalFormatRestorer.js +135 -0
  7. package/dist/esm/src/formatters/OriginalFormatRestorer.js.map +1 -0
  8. package/dist/esm/src/index.d.ts +32 -0
  9. package/dist/esm/src/index.js +28 -0
  10. package/dist/esm/src/index.js.map +1 -1
  11. package/dist/esm/src/models/FormattingLexeme.d.ts +66 -0
  12. package/dist/esm/src/models/FormattingLexeme.js +2 -0
  13. package/dist/esm/src/models/FormattingLexeme.js.map +1 -0
  14. package/dist/esm/src/models/ValueComponent.d.ts +3 -1
  15. package/dist/esm/src/models/ValueComponent.js +3 -1
  16. package/dist/esm/src/models/ValueComponent.js.map +1 -1
  17. package/dist/esm/src/parsers/FunctionExpressionParser.d.ts +12 -0
  18. package/dist/esm/src/parsers/FunctionExpressionParser.js +111 -7
  19. package/dist/esm/src/parsers/FunctionExpressionParser.js.map +1 -1
  20. package/dist/esm/src/parsers/KeywordParser.d.ts +1 -0
  21. package/dist/esm/src/parsers/KeywordParser.js +10 -4
  22. package/dist/esm/src/parsers/KeywordParser.js.map +1 -1
  23. package/dist/esm/src/parsers/SqlPrintTokenParser.js +8 -0
  24. package/dist/esm/src/parsers/SqlPrintTokenParser.js.map +1 -1
  25. package/dist/esm/src/parsers/SqlTokenizer.d.ts +42 -2
  26. package/dist/esm/src/parsers/SqlTokenizer.js +213 -12
  27. package/dist/esm/src/parsers/SqlTokenizer.js.map +1 -1
  28. package/dist/esm/src/tokenReaders/CommandTokenReader.d.ts +3 -0
  29. package/dist/esm/src/tokenReaders/CommandTokenReader.js +9 -1
  30. package/dist/esm/src/tokenReaders/CommandTokenReader.js.map +1 -1
  31. package/dist/esm/src/transformers/AliasRenamer.d.ts +199 -0
  32. package/dist/esm/src/transformers/AliasRenamer.js +595 -0
  33. package/dist/esm/src/transformers/AliasRenamer.js.map +1 -0
  34. package/dist/esm/src/transformers/CTEBuilder.js +2 -2
  35. package/dist/esm/src/transformers/CTEBuilder.js.map +1 -1
  36. package/dist/esm/src/transformers/CTERenamer.d.ts +53 -0
  37. package/dist/esm/src/transformers/CTERenamer.js +138 -0
  38. package/dist/esm/src/transformers/CTERenamer.js.map +1 -1
  39. package/dist/esm/src/transformers/DynamicQueryBuilder.d.ts +72 -0
  40. package/dist/esm/src/transformers/DynamicQueryBuilder.js +42 -0
  41. package/dist/esm/src/transformers/DynamicQueryBuilder.js.map +1 -1
  42. package/dist/esm/src/transformers/FilterableItemCollector.d.ts +80 -0
  43. package/dist/esm/src/transformers/FilterableItemCollector.js +254 -0
  44. package/dist/esm/src/transformers/FilterableItemCollector.js.map +1 -0
  45. package/dist/esm/src/transformers/SelectableColumnCollector.d.ts +3 -0
  46. package/dist/esm/src/transformers/SelectableColumnCollector.js +68 -7
  47. package/dist/esm/src/transformers/SelectableColumnCollector.js.map +1 -1
  48. package/dist/esm/src/transformers/SmartRenamer.d.ts +134 -0
  49. package/dist/esm/src/transformers/SmartRenamer.js +430 -0
  50. package/dist/esm/src/transformers/SmartRenamer.js.map +1 -0
  51. package/dist/esm/src/transformers/SqlIdentifierRenamer.d.ts +150 -0
  52. package/dist/esm/src/transformers/SqlIdentifierRenamer.js +493 -0
  53. package/dist/esm/src/transformers/SqlIdentifierRenamer.js.map +1 -0
  54. package/dist/esm/src/transformers/SqlParamInjector.d.ts +27 -0
  55. package/dist/esm/src/transformers/SqlParamInjector.js +304 -16
  56. package/dist/esm/src/transformers/SqlParamInjector.js.map +1 -1
  57. package/dist/esm/src/transformers/SqlSortInjector.js +6 -3
  58. package/dist/esm/src/transformers/SqlSortInjector.js.map +1 -1
  59. package/dist/esm/src/transformers/UpstreamSelectQueryFinder.js +5 -2
  60. package/dist/esm/src/transformers/UpstreamSelectQueryFinder.js.map +1 -1
  61. package/dist/esm/src/utils/CursorContextAnalyzer.d.ts +70 -0
  62. package/dist/esm/src/utils/CursorContextAnalyzer.js +322 -0
  63. package/dist/esm/src/utils/CursorContextAnalyzer.js.map +1 -0
  64. package/dist/esm/src/utils/IntelliSenseApi.d.ts +114 -0
  65. package/dist/esm/src/utils/IntelliSenseApi.js +284 -0
  66. package/dist/esm/src/utils/IntelliSenseApi.js.map +1 -0
  67. package/dist/esm/src/utils/KeywordCache.d.ts +65 -0
  68. package/dist/esm/src/utils/KeywordCache.js +202 -0
  69. package/dist/esm/src/utils/KeywordCache.js.map +1 -0
  70. package/dist/esm/src/utils/LexemeCursor.d.ts +41 -0
  71. package/dist/esm/src/utils/LexemeCursor.js +93 -0
  72. package/dist/esm/src/utils/LexemeCursor.js.map +1 -1
  73. package/dist/esm/src/utils/MultiQuerySplitter.d.ts +131 -0
  74. package/dist/esm/src/utils/MultiQuerySplitter.js +287 -0
  75. package/dist/esm/src/utils/MultiQuerySplitter.js.map +1 -0
  76. package/dist/esm/src/utils/PositionAwareParser.d.ts +85 -0
  77. package/dist/esm/src/utils/PositionAwareParser.js +336 -0
  78. package/dist/esm/src/utils/PositionAwareParser.js.map +1 -0
  79. package/dist/esm/src/utils/ScopeResolver.d.ts +127 -0
  80. package/dist/esm/src/utils/ScopeResolver.js +268 -0
  81. package/dist/esm/src/utils/ScopeResolver.js.map +1 -0
  82. package/dist/esm/src/utils/TextPositionUtils.d.ts +62 -0
  83. package/dist/esm/src/utils/TextPositionUtils.js +124 -0
  84. package/dist/esm/src/utils/TextPositionUtils.js.map +1 -0
  85. package/dist/esm/tsconfig.browser.tsbuildinfo +1 -1
  86. package/dist/index.min.js +52 -36
  87. package/dist/index.min.js.map +4 -4
  88. package/dist/src/formatters/OriginalFormatRestorer.d.ts +40 -0
  89. package/dist/src/formatters/OriginalFormatRestorer.js +139 -0
  90. package/dist/src/formatters/OriginalFormatRestorer.js.map +1 -0
  91. package/dist/src/index.d.ts +32 -0
  92. package/dist/src/index.js +30 -1
  93. package/dist/src/index.js.map +1 -1
  94. package/dist/src/models/FormattingLexeme.d.ts +66 -0
  95. package/dist/src/models/FormattingLexeme.js +3 -0
  96. package/dist/src/models/FormattingLexeme.js.map +1 -0
  97. package/dist/src/models/ValueComponent.d.ts +3 -1
  98. package/dist/src/models/ValueComponent.js +3 -1
  99. package/dist/src/models/ValueComponent.js.map +1 -1
  100. package/dist/src/parsers/FunctionExpressionParser.d.ts +12 -0
  101. package/dist/src/parsers/FunctionExpressionParser.js +110 -6
  102. package/dist/src/parsers/FunctionExpressionParser.js.map +1 -1
  103. package/dist/src/parsers/KeywordParser.d.ts +1 -0
  104. package/dist/src/parsers/KeywordParser.js +10 -4
  105. package/dist/src/parsers/KeywordParser.js.map +1 -1
  106. package/dist/src/parsers/SqlPrintTokenParser.js +8 -0
  107. package/dist/src/parsers/SqlPrintTokenParser.js.map +1 -1
  108. package/dist/src/parsers/SqlTokenizer.d.ts +42 -2
  109. package/dist/src/parsers/SqlTokenizer.js +222 -12
  110. package/dist/src/parsers/SqlTokenizer.js.map +1 -1
  111. package/dist/src/tokenReaders/CommandTokenReader.d.ts +3 -0
  112. package/dist/src/tokenReaders/CommandTokenReader.js +10 -2
  113. package/dist/src/tokenReaders/CommandTokenReader.js.map +1 -1
  114. package/dist/src/transformers/AliasRenamer.d.ts +199 -0
  115. package/dist/src/transformers/AliasRenamer.js +599 -0
  116. package/dist/src/transformers/AliasRenamer.js.map +1 -0
  117. package/dist/src/transformers/CTEBuilder.js +2 -2
  118. package/dist/src/transformers/CTEBuilder.js.map +1 -1
  119. package/dist/src/transformers/CTERenamer.d.ts +53 -0
  120. package/dist/src/transformers/CTERenamer.js +138 -0
  121. package/dist/src/transformers/CTERenamer.js.map +1 -1
  122. package/dist/src/transformers/DynamicQueryBuilder.d.ts +72 -0
  123. package/dist/src/transformers/DynamicQueryBuilder.js +42 -0
  124. package/dist/src/transformers/DynamicQueryBuilder.js.map +1 -1
  125. package/dist/src/transformers/FilterableItemCollector.d.ts +80 -0
  126. package/dist/src/transformers/FilterableItemCollector.js +259 -0
  127. package/dist/src/transformers/FilterableItemCollector.js.map +1 -0
  128. package/dist/src/transformers/SelectableColumnCollector.d.ts +3 -0
  129. package/dist/src/transformers/SelectableColumnCollector.js +67 -6
  130. package/dist/src/transformers/SelectableColumnCollector.js.map +1 -1
  131. package/dist/src/transformers/SmartRenamer.d.ts +134 -0
  132. package/dist/src/transformers/SmartRenamer.js +442 -0
  133. package/dist/src/transformers/SmartRenamer.js.map +1 -0
  134. package/dist/src/transformers/SqlIdentifierRenamer.d.ts +150 -0
  135. package/dist/src/transformers/SqlIdentifierRenamer.js +497 -0
  136. package/dist/src/transformers/SqlIdentifierRenamer.js.map +1 -0
  137. package/dist/src/transformers/SqlParamInjector.d.ts +27 -0
  138. package/dist/src/transformers/SqlParamInjector.js +303 -15
  139. package/dist/src/transformers/SqlParamInjector.js.map +1 -1
  140. package/dist/src/transformers/SqlSortInjector.js +5 -2
  141. package/dist/src/transformers/SqlSortInjector.js.map +1 -1
  142. package/dist/src/transformers/UpstreamSelectQueryFinder.js +4 -1
  143. package/dist/src/transformers/UpstreamSelectQueryFinder.js.map +1 -1
  144. package/dist/src/utils/CursorContextAnalyzer.d.ts +70 -0
  145. package/dist/src/utils/CursorContextAnalyzer.js +338 -0
  146. package/dist/src/utils/CursorContextAnalyzer.js.map +1 -0
  147. package/dist/src/utils/IntelliSenseApi.d.ts +114 -0
  148. package/dist/src/utils/IntelliSenseApi.js +292 -0
  149. package/dist/src/utils/IntelliSenseApi.js.map +1 -0
  150. package/dist/src/utils/KeywordCache.d.ts +65 -0
  151. package/dist/src/utils/KeywordCache.js +206 -0
  152. package/dist/src/utils/KeywordCache.js.map +1 -0
  153. package/dist/src/utils/LexemeCursor.d.ts +41 -0
  154. package/dist/src/utils/LexemeCursor.js +93 -0
  155. package/dist/src/utils/LexemeCursor.js.map +1 -1
  156. package/dist/src/utils/MultiQuerySplitter.d.ts +131 -0
  157. package/dist/src/utils/MultiQuerySplitter.js +292 -0
  158. package/dist/src/utils/MultiQuerySplitter.js.map +1 -0
  159. package/dist/src/utils/PositionAwareParser.d.ts +85 -0
  160. package/dist/src/utils/PositionAwareParser.js +363 -0
  161. package/dist/src/utils/PositionAwareParser.js.map +1 -0
  162. package/dist/src/utils/ScopeResolver.d.ts +127 -0
  163. package/dist/src/utils/ScopeResolver.js +272 -0
  164. package/dist/src/utils/ScopeResolver.js.map +1 -0
  165. package/dist/src/utils/TextPositionUtils.d.ts +62 -0
  166. package/dist/src/utils/TextPositionUtils.js +128 -0
  167. package/dist/src/utils/TextPositionUtils.js.map +1 -0
  168. package/dist/tsconfig.tsbuildinfo +1 -1
  169. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"UpstreamSelectQueryFinder.js","sourceRoot":"","sources":["../../../../src/transformers/UpstreamSelectQueryFinder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"UpstreamSelectQueryFinder.js","sourceRoot":"","sources":["../../../../src/transformers/UpstreamSelectQueryFinder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,70 @@
1
+ import { Lexeme } from '../models/Lexeme';
2
+ import { LineColumn } from './LexemeCursor';
3
+ /**
4
+ * IntelliSense context focused on what suggestions can be provided
5
+ */
6
+ export interface IntelliSenseContext {
7
+ /** Whether to suggest table names (can provide actual table list) */
8
+ suggestTables: boolean;
9
+ /** Whether to suggest column names (can provide actual column list) */
10
+ suggestColumns: boolean;
11
+ /** Whether to suggest SQL keywords (can provide keyword list) */
12
+ suggestKeywords: boolean;
13
+ /** If suggesting columns, limit to this table's columns (for table.| syntax) */
14
+ tableScope?: string;
15
+ /** If suggesting keywords, these specific keywords are required */
16
+ requiredKeywords?: string[];
17
+ /** Token at cursor position (if any) */
18
+ currentToken?: Lexeme;
19
+ /** Token immediately before cursor position */
20
+ previousToken?: Lexeme;
21
+ }
22
+ export declare class CursorContextAnalyzer {
23
+ /**
24
+ * Cache for processed keyword patterns
25
+ */
26
+ private static patternCache;
27
+ /**
28
+ * Process existing dictionaries into IntelliSense-friendly patterns
29
+ * Single source of truth: existing CommandTokenReader dictionaries
30
+ */
31
+ private static getKeywordPatterns;
32
+ /**
33
+ * Extract all keyword patterns from the existing dictionaries
34
+ */
35
+ private static extractKeywordPatterns;
36
+ /**
37
+ * Check if a keyword exists in the command dictionaries using existing parsers
38
+ */
39
+ private static isKeywordInDictionary;
40
+ /**
41
+ * Extract all keywords that require specific followup keywords
42
+ */
43
+ private static extractRequiresKeywordPatterns;
44
+ /**
45
+ * Find all possible followup keywords for a given word using KeywordCache
46
+ */
47
+ private static findPossibleFollowups;
48
+ /**
49
+ * Helper function to check if a token requires specific keywords
50
+ */
51
+ private static requiresSpecificKeywords;
52
+ /**
53
+ * Analyze cursor position for IntelliSense suggestions
54
+ *
55
+ * Direct implementation that determines what suggestions can be provided
56
+ * without legacy context conversion overhead.
57
+ *
58
+ * @param sql - SQL text to analyze
59
+ * @param cursorPosition - Character position (0-based)
60
+ * @returns IntelliSense context focused on what suggestions can be provided
61
+ */
62
+ static analyzeIntelliSense(sql: string, cursorPosition: number): IntelliSenseContext;
63
+ /**
64
+ * Analyze cursor position for IntelliSense at line/column position
65
+ */
66
+ static analyzeIntelliSenseAt(sql: string, position: LineColumn): IntelliSenseContext;
67
+ private static isAfterDot;
68
+ private static findPrecedingIdentifier;
69
+ private static isIdentifier;
70
+ }
@@ -0,0 +1,322 @@
1
+ import { LexemeCursor } from './LexemeCursor';
2
+ import { TextPositionUtils } from './TextPositionUtils';
3
+ import { KeywordCache } from './KeywordCache';
4
+ export class CursorContextAnalyzer {
5
+ /**
6
+ * Process existing dictionaries into IntelliSense-friendly patterns
7
+ * Single source of truth: existing CommandTokenReader dictionaries
8
+ */
9
+ static getKeywordPatterns() {
10
+ if (this.patternCache !== null) {
11
+ return this.patternCache;
12
+ }
13
+ const requiresKeywords = new Map();
14
+ const suggestsTables = new Set();
15
+ const suggestsColumns = new Set();
16
+ // Extract all patterns by systematically testing the dictionaries
17
+ this.extractKeywordPatterns(requiresKeywords, suggestsTables, suggestsColumns);
18
+ // Cache the processed patterns
19
+ this.patternCache = {
20
+ requiresKeywords,
21
+ suggestsTables,
22
+ suggestsColumns
23
+ };
24
+ return this.patternCache;
25
+ }
26
+ /**
27
+ * Extract all keyword patterns from the existing dictionaries
28
+ */
29
+ static extractKeywordPatterns(requiresKeywords, suggestsTables, suggestsColumns) {
30
+ // Define SQL contexts and their expected behavior
31
+ const tableContexts = ['from', 'join']; // Keywords that introduce table names
32
+ const columnContexts = ['select', 'where', 'on', 'having', 'by']; // Keywords that introduce columns
33
+ // Check table context keywords
34
+ for (const keyword of tableContexts) {
35
+ if (this.isKeywordInDictionary(keyword)) {
36
+ suggestsTables.add(keyword);
37
+ }
38
+ }
39
+ // Check column context keywords
40
+ for (const keyword of columnContexts) {
41
+ if (this.isKeywordInDictionary(keyword)) {
42
+ suggestsColumns.add(keyword);
43
+ }
44
+ }
45
+ // Extract all keyword patterns that require followups
46
+ this.extractRequiresKeywordPatterns(requiresKeywords);
47
+ }
48
+ /**
49
+ * Check if a keyword exists in the command dictionaries using existing parsers
50
+ */
51
+ static isKeywordInDictionary(keyword) {
52
+ // Use KeywordCache for JOIN keywords
53
+ if (KeywordCache.isValidJoinKeyword(keyword)) {
54
+ return true;
55
+ }
56
+ // Check if keyword exists in command dictionary
57
+ // Since we can't directly query the trie, use known keyword list
58
+ const knownKeywords = ['from', 'join', 'select', 'where', 'on', 'having', 'by', 'group', 'order'];
59
+ return knownKeywords.includes(keyword);
60
+ }
61
+ /**
62
+ * Extract all keywords that require specific followup keywords
63
+ */
64
+ static extractRequiresKeywordPatterns(requiresKeywords) {
65
+ // Test all potential first words that might require followup keywords
66
+ const potentialFirstWords = [
67
+ // JOIN modifiers
68
+ 'inner', 'left', 'right', 'full', 'cross', 'natural', 'outer',
69
+ // Other composite keywords
70
+ 'group', 'order'
71
+ ];
72
+ for (const word of potentialFirstWords) {
73
+ const possibleFollowups = this.findPossibleFollowups(word);
74
+ if (possibleFollowups.length > 0) {
75
+ requiresKeywords.set(word, possibleFollowups);
76
+ }
77
+ }
78
+ }
79
+ /**
80
+ * Find all possible followup keywords for a given word using KeywordCache
81
+ */
82
+ static findPossibleFollowups(word) {
83
+ const followups = new Set();
84
+ // Use KeywordCache for JOIN-related suggestions
85
+ const joinSuggestions = KeywordCache.getJoinSuggestions(word.toLowerCase());
86
+ joinSuggestions.forEach(s => followups.add(s.toUpperCase()));
87
+ // Use KeywordCache for command-related suggestions
88
+ const commandSuggestions = KeywordCache.getCommandSuggestions(word.toLowerCase());
89
+ commandSuggestions.forEach(s => followups.add(s.toUpperCase()));
90
+ return Array.from(followups);
91
+ }
92
+ /**
93
+ * Helper function to check if a token requires specific keywords
94
+ */
95
+ static requiresSpecificKeywords(tokenValue) {
96
+ const patterns = this.getKeywordPatterns();
97
+ const requiredKeywords = patterns.requiresKeywords.get(tokenValue);
98
+ if (requiredKeywords) {
99
+ return {
100
+ suggestKeywords: true,
101
+ requiredKeywords
102
+ };
103
+ }
104
+ return null;
105
+ }
106
+ /**
107
+ * Analyze cursor position for IntelliSense suggestions
108
+ *
109
+ * Direct implementation that determines what suggestions can be provided
110
+ * without legacy context conversion overhead.
111
+ *
112
+ * @param sql - SQL text to analyze
113
+ * @param cursorPosition - Character position (0-based)
114
+ * @returns IntelliSense context focused on what suggestions can be provided
115
+ */
116
+ static analyzeIntelliSense(sql, cursorPosition) {
117
+ try {
118
+ // Get all lexemes with position information
119
+ const allLexemes = LexemeCursor.getAllLexemesWithPosition(sql);
120
+ // Find token at cursor position
121
+ let actualTokenIndex = -1;
122
+ let actualCurrentToken;
123
+ // Find the token that contains or precedes the cursor
124
+ for (let i = 0; i < allLexemes.length; i++) {
125
+ const lexeme = allLexemes[i];
126
+ if (!lexeme.position)
127
+ continue;
128
+ if (cursorPosition >= lexeme.position.startPosition &&
129
+ cursorPosition <= lexeme.position.endPosition) {
130
+ // Cursor is within this token
131
+ actualCurrentToken = lexeme;
132
+ actualTokenIndex = i;
133
+ break;
134
+ }
135
+ else if (lexeme.position.startPosition > cursorPosition) {
136
+ // Cursor is before this token (in whitespace)
137
+ actualTokenIndex = Math.max(0, i - 1);
138
+ actualCurrentToken = actualTokenIndex >= 0 ? allLexemes[actualTokenIndex] : undefined;
139
+ break;
140
+ }
141
+ }
142
+ // If not found, cursor is after all tokens
143
+ if (actualTokenIndex === -1 && allLexemes.length > 0) {
144
+ actualTokenIndex = allLexemes.length - 1;
145
+ actualCurrentToken = allLexemes[actualTokenIndex];
146
+ }
147
+ const previousToken = actualTokenIndex > 0 ? allLexemes[actualTokenIndex - 1] : undefined;
148
+ // Check for dot completion (highest priority)
149
+ const isAfterDot = this.isAfterDot(sql, cursorPosition, previousToken);
150
+ if (isAfterDot) {
151
+ const precedingIdentifier = this.findPrecedingIdentifier(sql, cursorPosition, allLexemes);
152
+ return {
153
+ suggestTables: false,
154
+ suggestColumns: true,
155
+ suggestKeywords: false,
156
+ tableScope: precedingIdentifier,
157
+ currentToken: actualCurrentToken,
158
+ previousToken: previousToken
159
+ };
160
+ }
161
+ // Check for keywords that require additional keywords
162
+ if (actualCurrentToken) {
163
+ const currentValue = actualCurrentToken.value.toLowerCase();
164
+ const keywordRequirement = this.requiresSpecificKeywords(currentValue);
165
+ if (keywordRequirement) {
166
+ return Object.assign(Object.assign({ suggestTables: false, suggestColumns: false }, keywordRequirement), { currentToken: actualCurrentToken, previousToken: previousToken });
167
+ }
168
+ }
169
+ // Check tokens for context-based suggestions
170
+ const tokenValue = actualCurrentToken === null || actualCurrentToken === void 0 ? void 0 : actualCurrentToken.value.toLowerCase();
171
+ const prevValue = previousToken === null || previousToken === void 0 ? void 0 : previousToken.value.toLowerCase();
172
+ // Check current token first (when cursor is at end of token)
173
+ if (tokenValue) {
174
+ const patterns = this.getKeywordPatterns();
175
+ // Keywords that suggest tables after them
176
+ if (patterns.suggestsTables.has(tokenValue)) {
177
+ return {
178
+ suggestTables: true,
179
+ suggestColumns: false,
180
+ suggestKeywords: false,
181
+ currentToken: actualCurrentToken,
182
+ previousToken: previousToken
183
+ };
184
+ }
185
+ // Keywords that suggest columns after them
186
+ if (patterns.suggestsColumns.has(tokenValue)) {
187
+ return {
188
+ suggestTables: false,
189
+ suggestColumns: true,
190
+ suggestKeywords: false,
191
+ currentToken: actualCurrentToken,
192
+ previousToken: previousToken
193
+ };
194
+ }
195
+ }
196
+ // Check previous token (when cursor is in whitespace after token)
197
+ if (prevValue) {
198
+ const patterns = this.getKeywordPatterns();
199
+ // Check if previous token requires specific keywords (and next token doesn't already fulfill it)
200
+ const keywordRequirement = this.requiresSpecificKeywords(prevValue);
201
+ if (keywordRequirement && tokenValue !== 'join' && tokenValue !== 'outer' && tokenValue !== 'by') {
202
+ return Object.assign(Object.assign({ suggestTables: false, suggestColumns: false }, keywordRequirement), { currentToken: actualCurrentToken, previousToken: previousToken });
203
+ }
204
+ // Keywords that suggest tables
205
+ if (patterns.suggestsTables.has(prevValue)) {
206
+ return {
207
+ suggestTables: true,
208
+ suggestColumns: false,
209
+ suggestKeywords: false,
210
+ currentToken: actualCurrentToken,
211
+ previousToken: previousToken
212
+ };
213
+ }
214
+ // Keywords that suggest columns
215
+ if (patterns.suggestsColumns.has(prevValue)) {
216
+ return {
217
+ suggestTables: false,
218
+ suggestColumns: true,
219
+ suggestKeywords: false,
220
+ currentToken: actualCurrentToken,
221
+ previousToken: previousToken
222
+ };
223
+ }
224
+ }
225
+ // Default fallback - suggest keywords
226
+ return {
227
+ suggestTables: false,
228
+ suggestColumns: false,
229
+ suggestKeywords: true,
230
+ currentToken: actualCurrentToken,
231
+ previousToken: previousToken
232
+ };
233
+ }
234
+ catch (error) {
235
+ // Return minimal context on error
236
+ return {
237
+ suggestTables: false,
238
+ suggestColumns: false,
239
+ suggestKeywords: false,
240
+ };
241
+ }
242
+ }
243
+ /**
244
+ * Analyze cursor position for IntelliSense at line/column position
245
+ */
246
+ static analyzeIntelliSenseAt(sql, position) {
247
+ const charOffset = TextPositionUtils.lineColumnToCharOffset(sql, position);
248
+ if (charOffset === -1) {
249
+ return {
250
+ suggestTables: false,
251
+ suggestColumns: false,
252
+ suggestKeywords: false,
253
+ };
254
+ }
255
+ return this.analyzeIntelliSense(sql, charOffset);
256
+ }
257
+ static isAfterDot(sql, cursorPosition, previousToken) {
258
+ // Check if character before cursor is a dot
259
+ if (cursorPosition > 0 && sql[cursorPosition - 1] === '.') {
260
+ return true;
261
+ }
262
+ // Check if previous token is a dot
263
+ if (previousToken && previousToken.value === '.') {
264
+ return true;
265
+ }
266
+ // Check for dot in nearby characters (handle whitespace)
267
+ let pos = cursorPosition - 1;
268
+ while (pos >= 0 && /\s/.test(sql[pos])) {
269
+ pos--; // Skip whitespace backwards
270
+ }
271
+ if (pos >= 0 && sql[pos] === '.') {
272
+ return true;
273
+ }
274
+ return false;
275
+ }
276
+ static findPrecedingIdentifier(sql, cursorPosition, lexemes) {
277
+ // If cursor is after a dot, look for identifier before the dot
278
+ if (this.isAfterDot(sql, cursorPosition)) {
279
+ // Find dot position in SQL text
280
+ let pos = cursorPosition - 1;
281
+ while (pos >= 0 && /\s/.test(sql[pos])) {
282
+ pos--; // Skip whitespace backwards
283
+ }
284
+ if (pos >= 0 && sql[pos] === '.') {
285
+ // Found the dot, now look for identifier before it
286
+ let identifierEnd = pos;
287
+ while (pos >= 0 && /\s/.test(sql[pos])) {
288
+ pos--; // Skip whitespace
289
+ }
290
+ // Extract identifier backwards
291
+ while (pos >= 0 && /[a-zA-Z0-9_]/.test(sql[pos])) {
292
+ pos--;
293
+ }
294
+ const identifierStart = pos + 1;
295
+ if (identifierStart < identifierEnd) {
296
+ return sql.substring(identifierStart, identifierEnd);
297
+ }
298
+ }
299
+ // Fallback: try to find dot token in lexemes and get identifier before it
300
+ for (let i = lexemes.length - 1; i >= 0; i--) {
301
+ if (lexemes[i].value === '.' &&
302
+ lexemes[i].position &&
303
+ lexemes[i].position.startPosition < cursorPosition) {
304
+ // Found a dot before cursor, get identifier before it
305
+ if (i > 0 && this.isIdentifier(lexemes[i - 1])) {
306
+ return lexemes[i - 1].value;
307
+ }
308
+ break;
309
+ }
310
+ }
311
+ }
312
+ return undefined;
313
+ }
314
+ static isIdentifier(lexeme) {
315
+ return /^[a-zA-Z_][a-zA-Z0-9_]*$/.test(lexeme.value);
316
+ }
317
+ }
318
+ /**
319
+ * Cache for processed keyword patterns
320
+ */
321
+ CursorContextAnalyzer.patternCache = null;
322
+ //# sourceMappingURL=CursorContextAnalyzer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CursorContextAnalyzer.js","sourceRoot":"","sources":["../../../../src/utils/CursorContextAnalyzer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,114 @@
1
+ import { IntelliSenseContext } from './CursorContextAnalyzer';
2
+ import { ScopeInfo } from './ScopeResolver';
3
+ import { ParseToPositionOptions, PositionParseResult } from './PositionAwareParser';
4
+ import { QueryCollection } from './MultiQuerySplitter';
5
+ import { LineColumn } from './LexemeCursor';
6
+ /**
7
+ * Convenience API for SQL IntelliSense integration
8
+ *
9
+ * Provides simplified, high-level functions that combine the functionality
10
+ * of the various position-aware parsing components for easy integration
11
+ * with Monaco Editor and other code editors.
12
+ *
13
+ * @example
14
+ * ```typescript
15
+ * import { parseToPosition, getCursorContext, resolveScope, splitQueries } from 'rawsql-ts';
16
+ *
17
+ * // Parse incomplete SQL with error recovery
18
+ * const sql = "SELECT u.name FROM users u WHERE u.";
19
+ * const parseResult = parseToPosition(sql, sql.length, { errorRecovery: true });
20
+ *
21
+ * // Get cursor context for completion suggestions
22
+ * const context = getCursorContext(sql, sql.length);
23
+ * console.log(context.isAfterDot); // true
24
+ * console.log(context.precedingIdentifier); // "u"
25
+ *
26
+ * // Get scope information for table/column completion
27
+ * const scope = resolveScope(sql, sql.length);
28
+ * console.log(scope.availableTables); // [{ name: 'users', alias: 'u' }]
29
+ *
30
+ * // Handle multi-query editor
31
+ * const multiSQL = "SELECT 1; SELECT 2;";
32
+ * const queries = splitQueries(multiSQL);
33
+ * const activeQuery = queries.getActive(12); // Get query at position
34
+ * ```
35
+ */
36
+ /**
37
+ * Parse SQL up to cursor position with error recovery
38
+ *
39
+ * Combines position-aware parsing with error recovery to handle incomplete SQL
40
+ * that users are actively typing. Ideal for providing IntelliSense in editors.
41
+ *
42
+ * @param sql - SQL text to parse
43
+ * @param cursorPosition - Cursor position (character offset or line/column)
44
+ * @param options - Parsing options including error recovery settings
45
+ * @returns Parse result with position-specific information
46
+ */
47
+ export declare function parseToPosition(sql: string, cursorPosition: number | LineColumn, options?: ParseToPositionOptions): PositionParseResult;
48
+ /**
49
+ * Analyze cursor context for IntelliSense completion suggestions
50
+ *
51
+ * Determines what type of completions should be offered at the cursor position
52
+ * based on SQL syntax context (SELECT clause, WHERE condition, etc.).
53
+ *
54
+ * @param sql - SQL text to analyze
55
+ * @param cursorPosition - Cursor position (character offset or line/column)
56
+ * @returns Cursor context information for completion logic
57
+ */
58
+ export declare function getCursorContext(sql: string, cursorPosition: number | LineColumn): IntelliSenseContext;
59
+ /**
60
+ * Resolve scope information at cursor position
61
+ *
62
+ * Provides comprehensive information about available tables, CTEs, and columns
63
+ * at the specified cursor position for intelligent completion suggestions.
64
+ *
65
+ * @param sql - SQL text to analyze
66
+ * @param cursorPosition - Cursor position (character offset or line/column)
67
+ * @returns Complete scope information including available tables and columns
68
+ */
69
+ export declare function resolveScope(sql: string, cursorPosition: number | LineColumn): ScopeInfo;
70
+ /**
71
+ * Split multi-query SQL text into individual queries
72
+ *
73
+ * Handles SQL editors that contain multiple statements separated by semicolons.
74
+ * Properly handles string literals and comments containing semicolons.
75
+ *
76
+ * @param sql - Multi-query SQL text
77
+ * @returns Collection of individual queries with position information
78
+ */
79
+ export declare function splitQueries(sql: string): QueryCollection;
80
+ /**
81
+ * Get IntelliSense information for a cursor position in multi-query context
82
+ *
83
+ * Combines query splitting, context analysis, and scope resolution to provide
84
+ * complete IntelliSense information for a cursor position in multi-query SQL.
85
+ *
86
+ * @param sql - Multi-query SQL text
87
+ * @param cursorPosition - Cursor position
88
+ * @param options - Parsing options
89
+ * @returns Complete IntelliSense information or undefined if position is invalid
90
+ */
91
+ export declare function getIntelliSenseInfo(sql: string, cursorPosition: number | LineColumn, options?: ParseToPositionOptions): {
92
+ context: IntelliSenseContext;
93
+ scope: ScopeInfo;
94
+ parseResult: PositionParseResult;
95
+ currentQuery: string;
96
+ relativePosition: number;
97
+ } | undefined;
98
+ /**
99
+ * Get completion suggestions based on cursor context and scope
100
+ *
101
+ * Uses the new IntelliSense interface to provide targeted completion suggestions.
102
+ * This function leverages the suggestion-based design to efficiently determine
103
+ * what completions should be offered.
104
+ *
105
+ * @param sql - SQL text
106
+ * @param cursorPosition - Cursor position
107
+ * @returns Array of completion suggestions with context information
108
+ */
109
+ export declare function getCompletionSuggestions(sql: string, cursorPosition: number | LineColumn): Array<{
110
+ type: 'keyword' | 'table' | 'column' | 'cte' | 'function';
111
+ value: string;
112
+ detail?: string;
113
+ documentation?: string;
114
+ }>;