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,4 +1,11 @@
1
1
  import { Lexeme } from '../models/Lexeme';
2
+ import { FormattingLexeme } from '../models/FormattingLexeme';
3
+ /**
4
+ * Options for tokenization behavior
5
+ */
6
+ export interface TokenizeOptions {
7
+ preserveFormatting?: boolean;
8
+ }
2
9
  /**
3
10
  * Class responsible for tokenizing SQL input.
4
11
  */
@@ -33,6 +40,14 @@ export declare class SqlTokenizer {
33
40
  * @returns True if more input can be read; otherwise, false.
34
41
  */
35
42
  private canRead;
43
+ /**
44
+ * Tokenizes the input SQL with optional formatting preservation.
45
+ */
46
+ tokenize(): Lexeme[];
47
+ tokenize(options: {
48
+ preserveFormatting: true;
49
+ }): FormattingLexeme[];
50
+ tokenize(options?: TokenizeOptions): Lexeme[] | FormattingLexeme[];
36
51
  /**
37
52
  * Reads the lexemes from the input string.
38
53
  *
@@ -41,9 +56,9 @@ export declare class SqlTokenizer {
41
56
  */
42
57
  readLexmes(): Lexeme[];
43
58
  /**
44
- * Adds pending comments to the last token.
59
+ * Tokenizes the input SQL without formatting preservation (internal method)
45
60
  */
46
- private addPendingCommentsToLastToken;
61
+ private tokenizeBasic;
47
62
  /**
48
63
  * Adds comments to the token.
49
64
  */
@@ -61,4 +76,29 @@ export declare class SqlTokenizer {
61
76
  * @returns A string containing the debug position information.
62
77
  */
63
78
  private getDebugPositionInfo;
79
+ /**
80
+ * Tokenizes the input SQL while preserving formatting information
81
+ */
82
+ private tokenizeWithFormatting;
83
+ private mapToFormattingLexemes;
84
+ /**
85
+ * Find lexeme at a specific position, handling case variations
86
+ */
87
+ private findLexemeAtPosition;
88
+ private isValidLexemeMatch;
89
+ /**
90
+ * Check if character is alphanumeric or underscore (faster than regex)
91
+ */
92
+ private isAlphanumericUnderscore;
93
+ /**
94
+ * Check if character is whitespace (faster than regex)
95
+ */
96
+ private isWhitespace;
97
+ private extractCommentsFromWhitespace;
98
+ /**
99
+ * Skip whitespace and comments from the given position
100
+ */
101
+ private skipWhitespaceAndComments;
102
+ private getLineColumnInfo;
103
+ private getLineColumn;
64
104
  }
@@ -62,6 +62,14 @@ class SqlTokenizer {
62
62
  canRead(shift = 0) {
63
63
  return !this.isEndOfInput(shift);
64
64
  }
65
+ tokenize(options) {
66
+ if (options === null || options === void 0 ? void 0 : options.preserveFormatting) {
67
+ return this.tokenizeWithFormatting();
68
+ }
69
+ // Create a fresh tokenizer instance for clean state
70
+ const freshTokenizer = new SqlTokenizer(this.input);
71
+ return freshTokenizer.readLexmes();
72
+ }
65
73
  /**
66
74
  * Reads the lexemes from the input string.
67
75
  *
@@ -69,6 +77,14 @@ class SqlTokenizer {
69
77
  * @throws Error if an unexpected character is encountered.
70
78
  */
71
79
  readLexmes() {
80
+ return this.tokenizeBasic();
81
+ }
82
+ /**
83
+ * Tokenizes the input SQL without formatting preservation (internal method)
84
+ */
85
+ tokenizeBasic() {
86
+ // Reset position for this tokenization
87
+ this.position = 0;
72
88
  // Pre-allocate array with estimated capacity for better performance
73
89
  const estimatedTokens = Math.ceil(this.input.length / 8); // Assuming average token length of 8 chars
74
90
  const lexemes = new Array(estimatedTokens);
@@ -123,18 +139,6 @@ class SqlTokenizer {
123
139
  // Trim the array to actual size used
124
140
  return lexemeCount === estimatedTokens ? lexemes : lexemes.slice(0, lexemeCount);
125
141
  }
126
- /**
127
- * Adds pending comments to the last token.
128
- */
129
- addPendingCommentsToLastToken(lexemes, pendingComments) {
130
- if (pendingComments.length > 0 && lexemes.length > 0) {
131
- const lastToken = lexemes[lexemes.length - 1];
132
- if (lastToken.comments === null) {
133
- lastToken.comments = [];
134
- }
135
- lastToken.comments.push(...pendingComments);
136
- }
137
- }
138
142
  /**
139
143
  * Adds comments to the token.
140
144
  */
@@ -171,6 +175,212 @@ class SqlTokenizer {
171
175
  getDebugPositionInfo(errPosition) {
172
176
  return stringUtils_1.StringUtils.getDebugPositionInfo(this.input, errPosition);
173
177
  }
178
+ /**
179
+ * Tokenizes the input SQL while preserving formatting information
180
+ */
181
+ tokenizeWithFormatting() {
182
+ // Get regular lexemes first
183
+ const regularLexemes = this.tokenizeBasic();
184
+ // Map regular lexemes to formatting lexemes with whitespace info
185
+ return this.mapToFormattingLexemes(regularLexemes);
186
+ }
187
+ mapToFormattingLexemes(regularLexemes) {
188
+ if (regularLexemes.length === 0) {
189
+ return [];
190
+ }
191
+ // First pass: find all lexeme positions in the input
192
+ const lexemePositions = [];
193
+ let searchPos = 0;
194
+ for (const lexeme of regularLexemes) {
195
+ // Skip whitespace and comments
196
+ searchPos = this.skipWhitespaceAndComments(searchPos);
197
+ // Find lexeme at current position
198
+ const lexemeInfo = this.findLexemeAtPosition(lexeme, searchPos);
199
+ if (lexemeInfo) {
200
+ lexemePositions.push(lexemeInfo);
201
+ searchPos = lexemeInfo.endPosition;
202
+ }
203
+ else {
204
+ // Fallback: assume lexeme length and continue
205
+ const fallbackInfo = {
206
+ startPosition: searchPos,
207
+ endPosition: searchPos + lexeme.value.length
208
+ };
209
+ lexemePositions.push(fallbackInfo);
210
+ searchPos = fallbackInfo.endPosition;
211
+ }
212
+ }
213
+ // Second pass: build formatting lexemes with proper whitespace segments
214
+ const formattingLexemes = [];
215
+ for (let i = 0; i < regularLexemes.length; i++) {
216
+ const lexeme = regularLexemes[i];
217
+ const lexemeInfo = lexemePositions[i];
218
+ // Determine the end position of the whitespace segment
219
+ const nextLexemeStartPos = i < regularLexemes.length - 1
220
+ ? lexemePositions[i + 1].startPosition
221
+ : this.input.length;
222
+ // Extract whitespace between this lexeme and the next
223
+ const whitespaceSegment = this.input.slice(lexemeInfo.endPosition, nextLexemeStartPos);
224
+ const inlineComments = this.extractCommentsFromWhitespace(whitespaceSegment);
225
+ const formattingLexeme = {
226
+ ...lexeme,
227
+ followingWhitespace: whitespaceSegment,
228
+ inlineComments,
229
+ position: {
230
+ startPosition: lexemeInfo.startPosition,
231
+ endPosition: lexemeInfo.endPosition,
232
+ ...this.getLineColumnInfo(lexemeInfo.startPosition, lexemeInfo.endPosition)
233
+ }
234
+ };
235
+ formattingLexemes.push(formattingLexeme);
236
+ }
237
+ return formattingLexemes;
238
+ }
239
+ /**
240
+ * Find lexeme at a specific position, handling case variations
241
+ */
242
+ findLexemeAtPosition(lexeme, expectedPos) {
243
+ if (expectedPos >= this.input.length) {
244
+ return null;
245
+ }
246
+ // For command tokens (keywords), the lexeme.value might be lowercase but appear uppercase in input
247
+ const valuesToTry = [lexeme.value, lexeme.value.toUpperCase(), lexeme.value.toLowerCase()];
248
+ for (const valueToTry of valuesToTry) {
249
+ // Check if the input at expected position matches this value
250
+ if (expectedPos + valueToTry.length <= this.input.length &&
251
+ this.input.substring(expectedPos, expectedPos + valueToTry.length) === valueToTry &&
252
+ this.isValidLexemeMatch(valueToTry, expectedPos)) {
253
+ return {
254
+ startPosition: expectedPos,
255
+ endPosition: expectedPos + valueToTry.length
256
+ };
257
+ }
258
+ }
259
+ return null;
260
+ }
261
+ isValidLexemeMatch(value, position) {
262
+ // Check character before
263
+ if (position > 0) {
264
+ const charBefore = this.input[position - 1];
265
+ if (this.isAlphanumericUnderscore(charBefore)) {
266
+ return false; // Part of another identifier
267
+ }
268
+ }
269
+ // Check character after
270
+ const endPosition = position + value.length;
271
+ if (endPosition < this.input.length) {
272
+ const charAfter = this.input[endPosition];
273
+ if (this.isAlphanumericUnderscore(charAfter)) {
274
+ return false; // Part of another identifier
275
+ }
276
+ }
277
+ return true;
278
+ }
279
+ /**
280
+ * Check if character is alphanumeric or underscore (faster than regex)
281
+ */
282
+ isAlphanumericUnderscore(char) {
283
+ const code = char.charCodeAt(0);
284
+ return (code >= 48 && code <= 57) || // 0-9
285
+ (code >= 65 && code <= 90) || // A-Z
286
+ (code >= 97 && code <= 122) || // a-z
287
+ code === 95; // _
288
+ }
289
+ /**
290
+ * Check if character is whitespace (faster than regex)
291
+ */
292
+ isWhitespace(char) {
293
+ const code = char.charCodeAt(0);
294
+ return code === 32 || // space
295
+ code === 9 || // tab
296
+ code === 10 || // \n
297
+ code === 13; // \r
298
+ }
299
+ extractCommentsFromWhitespace(whitespaceSegment) {
300
+ const inlineComments = [];
301
+ let pos = 0;
302
+ while (pos < whitespaceSegment.length) {
303
+ const oldPos = pos;
304
+ // Try to extract comments using StringUtils
305
+ const result = stringUtils_1.StringUtils.readWhiteSpaceAndComment(whitespaceSegment, pos);
306
+ // Add any comments found
307
+ if (result.lines.length > 0) {
308
+ inlineComments.push(...result.lines);
309
+ }
310
+ // Move position forward
311
+ pos = result.position;
312
+ // Prevent infinite loop - if position didn't advance, manually skip one character
313
+ if (pos === oldPos) {
314
+ pos++;
315
+ }
316
+ }
317
+ return inlineComments;
318
+ }
319
+ /**
320
+ * Skip whitespace and comments from the given position
321
+ */
322
+ skipWhitespaceAndComments(pos) {
323
+ let currentPos = pos;
324
+ while (currentPos < this.input.length) {
325
+ const char = this.input[currentPos];
326
+ // Skip whitespace
327
+ if (this.isWhitespace(char)) {
328
+ currentPos++;
329
+ continue;
330
+ }
331
+ // Skip line comments
332
+ if (currentPos < this.input.length - 1 &&
333
+ this.input[currentPos] === '-' && this.input[currentPos + 1] === '-') {
334
+ // Find end of line or end of input
335
+ while (currentPos < this.input.length &&
336
+ this.input[currentPos] !== '\n' && this.input[currentPos] !== '\r') {
337
+ currentPos++;
338
+ }
339
+ continue;
340
+ }
341
+ // Skip block comments
342
+ if (currentPos < this.input.length - 1 &&
343
+ this.input[currentPos] === '/' && this.input[currentPos + 1] === '*') {
344
+ currentPos += 2;
345
+ // Find end of comment
346
+ while (currentPos < this.input.length - 1) {
347
+ if (this.input[currentPos] === '*' && this.input[currentPos + 1] === '/') {
348
+ currentPos += 2;
349
+ break;
350
+ }
351
+ currentPos++;
352
+ }
353
+ continue;
354
+ }
355
+ // No more whitespace or comments
356
+ break;
357
+ }
358
+ return currentPos;
359
+ }
360
+ getLineColumnInfo(startPos, endPos) {
361
+ const startInfo = this.getLineColumn(startPos);
362
+ const endInfo = this.getLineColumn(endPos);
363
+ return {
364
+ startLine: startInfo.line,
365
+ startColumn: startInfo.column,
366
+ endLine: endInfo.line,
367
+ endColumn: endInfo.column
368
+ };
369
+ }
370
+ getLineColumn(position) {
371
+ let line = 1;
372
+ let column = 1;
373
+ for (let i = 0; i < Math.min(position, this.input.length); i++) {
374
+ if (this.input[i] === '\n') {
375
+ line++;
376
+ column = 1;
377
+ }
378
+ else {
379
+ column++;
380
+ }
381
+ }
382
+ return { line, column };
383
+ }
174
384
  }
175
385
  exports.SqlTokenizer = SqlTokenizer;
176
386
  //# sourceMappingURL=SqlTokenizer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SqlTokenizer.js","sourceRoot":"","sources":["../../../src/parsers/SqlTokenizer.ts"],"names":[],"mappings":";;;AAAA,6CAAqD;AACrD,iFAA8E;AAC9E,2EAAwE;AACxE,+EAA4E;AAC5E,yEAA6E;AAC7E,2EAAwE;AACxE,6EAA0E;AAC1E,sDAAmD;AACnD,2EAAwE;AACxE,2FAAwF;AACxF,6EAA0E;AAC1E,qEAAkE;AAClE,+FAA4F;AAE5F;;GAEG;AACH,MAAa,YAAY;IAgBrB;;OAEG;IACH,YAAY,KAAa;QACrB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;QAElB,+DAA+D;QAC/D,IAAI,CAAC,aAAa,GAAG,IAAI,uCAAkB,CAAC,KAAK,CAAC;aAC7C,QAAQ,CAAC,IAAI,2DAA4B,CAAC,KAAK,CAAC,CAAC;aACjD,QAAQ,CAAC,IAAI,2CAAoB,CAAC,KAAK,CAAC,CAAC;aACzC,QAAQ,CAAC,IAAI,uDAA0B,CAAC,KAAK,CAAC,CAAC;YAChD,kGAAkG;YAClG,wGAAwG;YACxG,2CAA2C;aAC1C,QAAQ,CAAC,IAAI,uCAAkB,CAAC,KAAK,CAAC,CAAC;aACvC,QAAQ,CAAC,IAAI,4CAAwB,CAAC,KAAK,CAAC,CAAC;aAC7C,QAAQ,CAAC,IAAI,uCAAkB,CAAC,KAAK,CAAC,CAAC;aACvC,QAAQ,CAAC,IAAI,yCAAmB,CAAC,KAAK,CAAC,CAAC;YACzC,kEAAkE;YAClE,wFAAwF;YACxF,kDAAkD;aACjD,QAAQ,CAAC,IAAI,iCAAe,CAAC,KAAK,CAAC,CAAC;aACpC,QAAQ,CAAC,IAAI,yCAAmB,CAAC,KAAK,CAAC,CAAC;aACxC,QAAQ,CAAC,IAAI,6CAAqB,CAAC,KAAK,CAAC,CAAC,CAAC,kDAAkD;SAC7F;IACT,CAAC;IAED;;;;;OAKG;IACK,YAAY,CAAC,QAAgB,CAAC;QAClC,OAAO,IAAI,CAAC,QAAQ,GAAG,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;IACtD,CAAC;IAED;;;;;OAKG;IACK,OAAO,CAAC,QAAgB,CAAC;QAC7B,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IACrC,CAAC;IAED;;;;;OAKG;IACI,UAAU;QACb,oEAAoE;QACpE,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,2CAA2C;QACrG,MAAM,OAAO,GAAa,IAAI,KAAK,CAAC,eAAe,CAAC,CAAC;QACrD,IAAI,WAAW,GAAG,CAAC,CAAC;QAEpB,+BAA+B;QAC/B,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QACnC,IAAI,eAAe,GAAG,OAAO,CAAC,KAAK,CAAC;QACpC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;QAEjC,2BAA2B;QAC3B,IAAI,QAAQ,GAAkB,IAAI,CAAC;QAEnC,gDAAgD;QAChD,OAAO,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC;YACpB,4CAA4C;YAC5C,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,GAAG,EAAE,CAAC;gBACpC,MAAM;YACV,CAAC;YAED,sCAAsC;YACtC,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;YAEnE,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;gBAClB,MAAM,IAAI,KAAK,CAAC,iCAAiC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,eAAe,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;YAC3J,CAAC;YAED,kBAAkB;YAClB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,EAAE,CAAC;YAEpD,uBAAuB;YACvB,MAAM,cAAc,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;YAC1C,IAAI,CAAC,QAAQ,GAAG,cAAc,CAAC,QAAQ,CAAC;YAExC,IAAI,CAAC,MAAM,CAAC,IAAI,GAAG,kBAAS,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,GAAG,kBAAS,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACxE,gDAAgD;gBAChD,IAAI,cAAc,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAClC,eAAe,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;gBAClD,CAAC;YACL,CAAC;iBAAM,CAAC;gBACJ,2CAA2C;gBAC3C,MAAM,WAAW,GAAG,eAAe,CAAC,MAAM,GAAG,CAAC,IAAI,cAAc,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;gBAClF,IAAI,WAAW,EAAE,CAAC;oBACd,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,eAAe,EAAE,cAAc,CAAC,KAAK,CAAC,CAAC;gBAC3E,CAAC;gBACD,eAAe,GAAG,EAAE,CAAC,CAAC,8BAA8B;YACxD,CAAC;YAED,OAAO,CAAC,WAAW,EAAE,CAAC,GAAG,MAAM,CAAC;YAChC,QAAQ,GAAG,MAAM,CAAC;QACtB,CAAC;QAED,6CAA6C;QAC7C,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,IAAI,WAAW,GAAG,CAAC,EAAE,CAAC;YAChD,MAAM,SAAS,GAAG,OAAO,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC;YAC3C,IAAI,SAAS,CAAC,QAAQ,KAAK,IAAI,EAAE,CAAC;gBAC9B,SAAS,CAAC,QAAQ,GAAG,EAAE,CAAC;YAC5B,CAAC;YACD,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,eAAe,CAAC,CAAC;QAChD,CAAC;QAED,qCAAqC;QACrC,OAAO,WAAW,KAAK,eAAe,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;IACrF,CAAC;IAED;;OAEG;IACK,6BAA6B,CAAC,OAAiB,EAAE,eAAyB;QAC9E,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACnD,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YAC9C,IAAI,SAAS,CAAC,QAAQ,KAAK,IAAI,EAAE,CAAC;gBAC9B,SAAS,CAAC,QAAQ,GAAG,EAAE,CAAC;YAC5B,CAAC;YACD,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,eAAe,CAAC,CAAC;QAChD,CAAC;IACL,CAAC;IAED;;OAEG;IACK,kBAAkB,CAAC,MAAc,EAAE,cAAwB,EAAE,cAAwB;QACzF,MAAM,WAAW,GAAG,cAAc,CAAC,MAAM,GAAG,CAAC,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC;QAE3E,IAAI,WAAW,EAAE,CAAC;YACd,IAAI,MAAM,CAAC,QAAQ,KAAK,IAAI,EAAE,CAAC;gBAC3B,MAAM,CAAC,QAAQ,GAAG,EAAE,CAAC;YACzB,CAAC;YAED,wCAAwC;YACxC,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC5B,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,cAAc,CAAC,CAAC;YAC/C,CAAC;YAED,kCAAkC;YAClC,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC5B,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,CAAC;YAC5C,CAAC;QACL,CAAC;IACL,CAAC;IAED;;;;OAIG;IACK,WAAW;QACf,OAAO,yBAAW,CAAC,wBAAwB,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC3E,CAAC;IAED;;;;;OAKG;IACK,oBAAoB,CAAC,WAAmB;QAC5C,OAAO,yBAAW,CAAC,oBAAoB,CAAC,IAAI,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;IACrE,CAAC;CACJ;AA9LD,oCA8LC"}
1
+ {"version":3,"file":"SqlTokenizer.js","sourceRoot":"","sources":["../../../src/parsers/SqlTokenizer.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,10 @@
1
1
  import { BaseTokenReader } from "./BaseTokenReader";
2
2
  import { Lexeme } from '../models/Lexeme';
3
+ import { KeywordTrie } from "../models/KeywordTrie";
3
4
  import { KeywordParser } from "../parsers/KeywordParser";
5
+ declare const keywordTrie: KeywordTrie;
4
6
  export declare const joinkeywordParser: KeywordParser;
7
+ export { keywordTrie as commandKeywordTrie };
5
8
  export declare class CommandTokenReader extends BaseTokenReader {
6
9
  tryRead(previous: Lexeme | null): Lexeme | null;
7
10
  }
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.CommandTokenReader = exports.joinkeywordParser = void 0;
3
+ exports.CommandTokenReader = exports.commandKeywordTrie = exports.joinkeywordParser = void 0;
4
4
  const BaseTokenReader_1 = require("./BaseTokenReader");
5
5
  const Lexeme_1 = require("../models/Lexeme");
6
6
  const KeywordTrie_1 = require("../models/KeywordTrie");
@@ -26,6 +26,11 @@ const joinTrie = new KeywordTrie_1.KeywordTrie([
26
26
  ["natural", "right", "outer", "join"],
27
27
  ["natural", "full", "join"],
28
28
  ["natural", "full", "outer", "join"],
29
+ // LATERAL JOIN patterns
30
+ ["lateral", "join"],
31
+ ["lateral", "inner", "join"],
32
+ ["lateral", "left", "join"],
33
+ ["lateral", "left", "outer", "join"],
29
34
  ]);
30
35
  const keywordTrie = new KeywordTrie_1.KeywordTrie([
31
36
  ["with"],
@@ -74,6 +79,8 @@ const keywordTrie = new KeywordTrie_1.KeywordTrie([
74
79
  ["groups"],
75
80
  // aggregate functions with WITHIN GROUP
76
81
  ["within", "group"],
82
+ // table functions with WITH ORDINALITY
83
+ ["with", "ordinality"],
77
84
  // window frame
78
85
  ["current", "row"],
79
86
  ["unbounded", "preceding"],
@@ -114,6 +121,7 @@ const keywordTrie = new KeywordTrie_1.KeywordTrie([
114
121
  ["nulls", "first"],
115
122
  ["nulls", "last"],
116
123
  ]);
124
+ exports.commandKeywordTrie = keywordTrie;
117
125
  const keywordParser = new KeywordParser_1.KeywordParser(keywordTrie);
118
126
  exports.joinkeywordParser = new KeywordParser_1.KeywordParser(joinTrie);
119
127
  class CommandTokenReader extends BaseTokenReader_1.BaseTokenReader {
@@ -130,7 +138,7 @@ class CommandTokenReader extends BaseTokenReader_1.BaseTokenReader {
130
138
  const keyword = keywordParser.parse(this.input, this.position);
131
139
  if (keyword !== null) {
132
140
  this.position = keyword.newPosition;
133
- return this.createLexeme(Lexeme_1.TokenType.Command, keyword.keyword);
141
+ return this.createLexeme(Lexeme_1.TokenType.Command, keyword.keyword, keyword.comments);
134
142
  }
135
143
  // check hint clause
136
144
  if (this.canRead(2) && this.input[this.position] === '/' && this.input[this.position + 1] === '*' && this.input[this.position + 2] === '+') {
@@ -1 +1 @@
1
- {"version":3,"file":"CommandTokenReader.js","sourceRoot":"","sources":["../../../src/tokenReaders/CommandTokenReader.ts"],"names":[],"mappings":";;;AAAA,uDAAoD;AACpD,6CAAqD;AACrD,uDAAoD;AACpD,4DAAyD;AAEzD,sDAAsD;AACtD,oEAAoE;AACpE,iIAAiI;AAEjI,MAAM,QAAQ,GAAG,IAAI,yBAAW,CAAC;IAC7B,CAAC,MAAM,CAAC;IACR,CAAC,OAAO,EAAE,MAAM,CAAC;IACjB,CAAC,OAAO,EAAE,MAAM,CAAC;IACjB,CAAC,MAAM,EAAE,MAAM,CAAC;IAChB,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC;IACzB,CAAC,OAAO,EAAE,MAAM,CAAC;IACjB,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC;IAC1B,CAAC,MAAM,EAAE,MAAM,CAAC;IAChB,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC;IAEzB,CAAC,SAAS,EAAE,MAAM,CAAC;IACnB,CAAC,SAAS,EAAE,OAAO,EAAE,MAAM,CAAC;IAC5B,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC;IAC3B,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC;IACpC,CAAC,SAAS,EAAE,OAAO,EAAE,MAAM,CAAC;IAC5B,CAAC,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC;IACrC,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC;IAC3B,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC;CACvC,CAAC,CAAC;AACH,MAAM,WAAW,GAAG,IAAI,yBAAW,CAAC;IAChC,CAAC,MAAM,CAAC;IACR,CAAC,WAAW,CAAC;IACb,CAAC,cAAc,CAAC;IAChB,CAAC,KAAK,EAAE,cAAc,CAAC;IACvB,CAAC,QAAQ,CAAC;IACV,CAAC,MAAM,CAAC;IACR,CAAC,UAAU,CAAC;IACZ,CAAC,UAAU,EAAE,IAAI,CAAC;IAClB,CAAC,OAAO,CAAC;IACT,CAAC,OAAO,EAAE,IAAI,CAAC;IACf,CAAC,QAAQ,CAAC;IACV,CAAC,OAAO,EAAE,IAAI,CAAC;IACf,CAAC,OAAO,CAAC;IACT,CAAC,QAAQ,CAAC;IACV,CAAC,OAAO,CAAC;IACT,CAAC,OAAO,CAAC;IACT,CAAC,MAAM,CAAC;IACR,CAAC,KAAK,CAAC;IACP,CAAC,KAAK,EAAE,MAAM,CAAC;IACf,CAAC,MAAM,EAAE,MAAM,CAAC;IAChB,CAAC,SAAS,CAAC;IACX,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC;IAC3B,MAAM;IACN,CAAC,KAAK,CAAC;IACP,CAAC,QAAQ,CAAC;IACV,CAAC,OAAO,CAAC;IACT,CAAC,KAAK,EAAE,OAAO,CAAC;IAChB,CAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,CAAC;IACvB,iBAAiB;IACjB,CAAC,OAAO,CAAC;IACT,CAAC,OAAO,EAAE,KAAK,CAAC;IAChB,CAAC,WAAW,CAAC;IACb,CAAC,WAAW,EAAE,KAAK,CAAC;IACpB,CAAC,QAAQ,CAAC;IACV,CAAC,QAAQ,EAAE,KAAK,CAAC;IACjB,cAAc;IACd,CAAC,QAAQ,CAAC;IACV,mBAAmB;IACnB,CAAC,QAAQ,CAAC;IACV,CAAC,MAAM,CAAC;IACR,CAAC,WAAW,EAAE,IAAI,CAAC;IACnB,CAAC,OAAO,CAAC;IACT,CAAC,MAAM,CAAC;IACR,CAAC,QAAQ,CAAC;IACV,wCAAwC;IACxC,CAAC,QAAQ,EAAE,OAAO,CAAC;IACnB,eAAe;IACf,CAAC,SAAS,EAAE,KAAK,CAAC;IAClB,CAAC,WAAW,EAAE,WAAW,CAAC;IAC1B,CAAC,WAAW,EAAE,WAAW,CAAC;IAC1B,CAAC,WAAW,CAAC;IACb,CAAC,WAAW,CAAC;IACb,sBAAsB;IACtB,CAAC,IAAI,CAAC;IACN,CAAC,OAAO,CAAC;IACT,CAAC,SAAS,CAAC;IACX,QAAQ;IACR,CAAC,MAAM,CAAC;IACR,CAAC,MAAM,EAAE,MAAM,CAAC;IAChB,CAAC,MAAM,CAAC;IACR,CAAC,MAAM,CAAC;IACR,CAAC,MAAM,CAAC;IACR,CAAC,KAAK,CAAC;IACP,SAAS;IACT,CAAC,QAAQ,EAAE,MAAM,CAAC;IAClB,CAAC,QAAQ,CAAC;IACV,CAAC,QAAQ,EAAE,MAAM,CAAC;IAClB,CAAC,OAAO,EAAE,MAAM,CAAC;IACjB,CAAC,SAAS,CAAC;IACX,CAAC,KAAK,EAAE,SAAS,CAAC;IAClB,CAAC,QAAQ,EAAE,KAAK,CAAC;IACjB,CAAC,IAAI,EAAE,SAAS,CAAC;IACjB,CAAC,QAAQ,CAAC;IACV,CAAC,KAAK,CAAC;IACP,CAAC,WAAW,CAAC;IACb,CAAC,QAAQ,EAAE,OAAO,CAAC;IACnB,CAAC,QAAQ,EAAE,WAAW,EAAE,OAAO,CAAC;IAChC,CAAC,aAAa,CAAC;IACf,OAAO;IACP,CAAC,IAAI,CAAC;IACN,SAAS;IACT,CAAC,KAAK,CAAC;IACP,CAAC,MAAM,CAAC;IACR,CAAC,OAAO,EAAE,OAAO,CAAC;IAClB,CAAC,OAAO,EAAE,MAAM,CAAC;CACpB,CAAC,CAAC;AACH,MAAM,aAAa,GAAG,IAAI,6BAAa,CAAC,WAAW,CAAC,CAAC;AACxC,QAAA,iBAAiB,GAAG,IAAI,6BAAa,CAAC,QAAQ,CAAC,CAAC;AAE7D,MAAa,kBAAmB,SAAQ,iCAAe;IAC5C,OAAO,CAAC,QAAuB;QAClC,IAAI,IAAI,CAAC,YAAY,EAAE,EAAE,CAAC;YACtB,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,MAAM,WAAW,GAAG,yBAAiB,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QACvE,IAAI,WAAW,KAAK,IAAI,EAAE,CAAC;YACvB,IAAI,CAAC,QAAQ,GAAG,WAAW,CAAC,WAAW,CAAC;YACxC,OAAO,IAAI,CAAC,YAAY,CAAC,kBAAS,CAAC,OAAO,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;QACrE,CAAC;QAED,gCAAgC;QAChC,MAAM,OAAO,GAAG,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC/D,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;YACnB,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,WAAW,CAAC;YACpC,OAAO,IAAI,CAAC,YAAY,CAAC,kBAAS,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;QACjE,CAAC;QAED,oBAAoB;QACpB,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,KAAK,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;YACzI,IAAI,CAAC,QAAQ,IAAI,CAAC,CAAC;YACnB,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC;YAC5B,OAAO,IAAI,CAAC,QAAQ,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;gBAC3C,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;oBAC7E,IAAI,CAAC,QAAQ,IAAI,CAAC,CAAC;oBACnB,OAAO,IAAI,CAAC,YAAY,CAAC,kBAAS,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,GAAG,KAAK,CAAC,CAAC;gBACpH,CAAC;gBACD,IAAI,CAAC,QAAQ,EAAE,CAAC;YACpB,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,0CAA0C,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC/E,CAAC;QAED,OAAO,IAAI,CAAC;IAChB,CAAC;CACJ;AAnCD,gDAmCC"}
1
+ {"version":3,"file":"CommandTokenReader.js","sourceRoot":"","sources":["../../../src/tokenReaders/CommandTokenReader.ts"],"names":[],"mappings":";;;AAAA,uDAAoD;AACpD,6CAAqD;AACrD,uDAAoD;AACpD,4DAAyD;AAEzD,sDAAsD;AACtD,oEAAoE;AACpE,iIAAiI;AAEjI,MAAM,QAAQ,GAAG,IAAI,yBAAW,CAAC;IAC7B,CAAC,MAAM,CAAC;IACR,CAAC,OAAO,EAAE,MAAM,CAAC;IACjB,CAAC,OAAO,EAAE,MAAM,CAAC;IACjB,CAAC,MAAM,EAAE,MAAM,CAAC;IAChB,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC;IACzB,CAAC,OAAO,EAAE,MAAM,CAAC;IACjB,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC;IAC1B,CAAC,MAAM,EAAE,MAAM,CAAC;IAChB,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC;IAEzB,CAAC,SAAS,EAAE,MAAM,CAAC;IACnB,CAAC,SAAS,EAAE,OAAO,EAAE,MAAM,CAAC;IAC5B,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC;IAC3B,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC;IACpC,CAAC,SAAS,EAAE,OAAO,EAAE,MAAM,CAAC;IAC5B,CAAC,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC;IACrC,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC;IAC3B,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC;IAEpC,wBAAwB;IACxB,CAAC,SAAS,EAAE,MAAM,CAAC;IACnB,CAAC,SAAS,EAAE,OAAO,EAAE,MAAM,CAAC;IAC5B,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC;IAC3B,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC;CACvC,CAAC,CAAC;AACH,MAAM,WAAW,GAAG,IAAI,yBAAW,CAAC;IAChC,CAAC,MAAM,CAAC;IACR,CAAC,WAAW,CAAC;IACb,CAAC,cAAc,CAAC;IAChB,CAAC,KAAK,EAAE,cAAc,CAAC;IACvB,CAAC,QAAQ,CAAC;IACV,CAAC,MAAM,CAAC;IACR,CAAC,UAAU,CAAC;IACZ,CAAC,UAAU,EAAE,IAAI,CAAC;IAClB,CAAC,OAAO,CAAC;IACT,CAAC,OAAO,EAAE,IAAI,CAAC;IACf,CAAC,QAAQ,CAAC;IACV,CAAC,OAAO,EAAE,IAAI,CAAC;IACf,CAAC,OAAO,CAAC;IACT,CAAC,QAAQ,CAAC;IACV,CAAC,OAAO,CAAC;IACT,CAAC,OAAO,CAAC;IACT,CAAC,MAAM,CAAC;IACR,CAAC,KAAK,CAAC;IACP,CAAC,KAAK,EAAE,MAAM,CAAC;IACf,CAAC,MAAM,EAAE,MAAM,CAAC;IAChB,CAAC,SAAS,CAAC;IACX,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC;IAC3B,MAAM;IACN,CAAC,KAAK,CAAC;IACP,CAAC,QAAQ,CAAC;IACV,CAAC,OAAO,CAAC;IACT,CAAC,KAAK,EAAE,OAAO,CAAC;IAChB,CAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,CAAC;IACvB,iBAAiB;IACjB,CAAC,OAAO,CAAC;IACT,CAAC,OAAO,EAAE,KAAK,CAAC;IAChB,CAAC,WAAW,CAAC;IACb,CAAC,WAAW,EAAE,KAAK,CAAC;IACpB,CAAC,QAAQ,CAAC;IACV,CAAC,QAAQ,EAAE,KAAK,CAAC;IACjB,cAAc;IACd,CAAC,QAAQ,CAAC;IACV,mBAAmB;IACnB,CAAC,QAAQ,CAAC;IACV,CAAC,MAAM,CAAC;IACR,CAAC,WAAW,EAAE,IAAI,CAAC;IACnB,CAAC,OAAO,CAAC;IACT,CAAC,MAAM,CAAC;IACR,CAAC,QAAQ,CAAC;IACV,wCAAwC;IACxC,CAAC,QAAQ,EAAE,OAAO,CAAC;IACnB,yCAAyC;IACzC,CAAC,MAAM,EAAE,YAAY,CAAC;IACtB,eAAe;IACf,CAAC,SAAS,EAAE,KAAK,CAAC;IAClB,CAAC,WAAW,EAAE,WAAW,CAAC;IAC1B,CAAC,WAAW,EAAE,WAAW,CAAC;IAC1B,CAAC,WAAW,CAAC;IACb,CAAC,WAAW,CAAC;IACb,sBAAsB;IACtB,CAAC,IAAI,CAAC;IACN,CAAC,OAAO,CAAC;IACT,CAAC,SAAS,CAAC;IACX,QAAQ;IACR,CAAC,MAAM,CAAC;IACR,CAAC,MAAM,EAAE,MAAM,CAAC;IAChB,CAAC,MAAM,CAAC;IACR,CAAC,MAAM,CAAC;IACR,CAAC,MAAM,CAAC;IACR,CAAC,KAAK,CAAC;IACP,SAAS;IACT,CAAC,QAAQ,EAAE,MAAM,CAAC;IAClB,CAAC,QAAQ,CAAC;IACV,CAAC,QAAQ,EAAE,MAAM,CAAC;IAClB,CAAC,OAAO,EAAE,MAAM,CAAC;IACjB,CAAC,SAAS,CAAC;IACX,CAAC,KAAK,EAAE,SAAS,CAAC;IAClB,CAAC,QAAQ,EAAE,KAAK,CAAC;IACjB,CAAC,IAAI,EAAE,SAAS,CAAC;IACjB,CAAC,QAAQ,CAAC;IACV,CAAC,KAAK,CAAC;IACP,CAAC,WAAW,CAAC;IACb,CAAC,QAAQ,EAAE,OAAO,CAAC;IACnB,CAAC,QAAQ,EAAE,WAAW,EAAE,OAAO,CAAC;IAChC,CAAC,aAAa,CAAC;IACf,OAAO;IACP,CAAC,IAAI,CAAC;IACN,SAAS;IACT,CAAC,KAAK,CAAC;IACP,CAAC,MAAM,CAAC;IACR,CAAC,OAAO,EAAE,OAAO,CAAC;IAClB,CAAC,OAAO,EAAE,MAAM,CAAC;CACpB,CAAC,CAAC;AAGqB,yCAAkB;AAF1C,MAAM,aAAa,GAAG,IAAI,6BAAa,CAAC,WAAW,CAAC,CAAC;AACxC,QAAA,iBAAiB,GAAG,IAAI,6BAAa,CAAC,QAAQ,CAAC,CAAC;AAG7D,MAAa,kBAAmB,SAAQ,iCAAe;IAC5C,OAAO,CAAC,QAAuB;QAClC,IAAI,IAAI,CAAC,YAAY,EAAE,EAAE,CAAC;YACtB,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,MAAM,WAAW,GAAG,yBAAiB,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QACvE,IAAI,WAAW,KAAK,IAAI,EAAE,CAAC;YACvB,IAAI,CAAC,QAAQ,GAAG,WAAW,CAAC,WAAW,CAAC;YACxC,OAAO,IAAI,CAAC,YAAY,CAAC,kBAAS,CAAC,OAAO,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;QACrE,CAAC;QAED,gCAAgC;QAChC,MAAM,OAAO,GAAG,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC/D,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;YACnB,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,WAAW,CAAC;YACpC,OAAO,IAAI,CAAC,YAAY,CAAC,kBAAS,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;QACnF,CAAC;QAED,oBAAoB;QACpB,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,KAAK,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;YACzI,IAAI,CAAC,QAAQ,IAAI,CAAC,CAAC;YACnB,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC;YAC5B,OAAO,IAAI,CAAC,QAAQ,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;gBAC3C,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;oBAC7E,IAAI,CAAC,QAAQ,IAAI,CAAC,CAAC;oBACnB,OAAO,IAAI,CAAC,YAAY,CAAC,kBAAS,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,GAAG,KAAK,CAAC,CAAC;gBACpH,CAAC;gBACD,IAAI,CAAC,QAAQ,EAAE,CAAC;YACpB,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,0CAA0C,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC/E,CAAC;QAED,OAAO,IAAI,CAAC;IAChB,CAAC;CACJ;AAnCD,gDAmCC"}
@@ -0,0 +1,199 @@
1
+ import { SelectQuery } from "../models/SelectQuery";
2
+ import { LineColumn } from "../utils/LexemeCursor";
3
+ import { Lexeme } from "../models/Lexeme";
4
+ /**
5
+ * Represents an alias scope within SQL query structure
6
+ */
7
+ export interface AliasScope {
8
+ type: 'cte' | 'subquery' | 'main';
9
+ name?: string;
10
+ query: SelectQuery;
11
+ startPosition: number;
12
+ endPosition: number;
13
+ }
14
+ /**
15
+ * Represents a reference to an alias within the SQL
16
+ */
17
+ export interface AliasReference {
18
+ lexeme: Lexeme;
19
+ scope: AliasScope;
20
+ referenceType: 'definition' | 'usage';
21
+ context: 'table' | 'column';
22
+ }
23
+ /**
24
+ * Options for alias renaming operations
25
+ */
26
+ export interface RenameOptions {
27
+ scopeType?: 'auto' | 'cte' | 'subquery' | 'main';
28
+ dryRun?: boolean;
29
+ preserveFormatting?: boolean;
30
+ }
31
+ /**
32
+ * Result of alias renaming operation
33
+ */
34
+ export interface RenameResult {
35
+ success: boolean;
36
+ originalSql: string;
37
+ newSql?: string;
38
+ changes: AliasChange[];
39
+ conflicts?: string[];
40
+ scope?: AliasScope;
41
+ }
42
+ /**
43
+ * Details of a specific alias change
44
+ */
45
+ export interface AliasChange {
46
+ oldName: string;
47
+ newName: string;
48
+ position: LineColumn;
49
+ context: 'table' | 'column';
50
+ referenceType: 'definition' | 'usage';
51
+ }
52
+ /**
53
+ * A utility class for renaming table and column aliases in SQL queries.
54
+ *
55
+ * This class provides functionality to rename aliases within specific scopes
56
+ * (CTE, subquery, or main query) based on cursor position from GUI editors.
57
+ * It automatically detects the appropriate scope and updates all references
58
+ * to the alias within that scope boundary.
59
+ *
60
+ * @example
61
+ * ```typescript
62
+ * import { AliasRenamer } from 'rawsql-ts';
63
+ *
64
+ * const sql = `
65
+ * SELECT u.name, o.date
66
+ * FROM users u
67
+ * JOIN orders o ON u.id = o.user_id
68
+ * `;
69
+ *
70
+ * const renamer = new AliasRenamer();
71
+ *
72
+ * // Rename 'u' to 'user_alias' by selecting it at line 2, column 10
73
+ * const result = renamer.renameAlias(sql, { line: 2, column: 10 }, 'user_alias');
74
+ *
75
+ * if (result.success) {
76
+ * console.log(result.newSql);
77
+ * // SELECT user_alias.name, o.date
78
+ * // FROM users user_alias
79
+ * // JOIN orders o ON user_alias.id = o.user_id
80
+ * }
81
+ * ```
82
+ *
83
+ * @since 0.12.0
84
+ */
85
+ export declare class AliasRenamer {
86
+ private keywordParser;
87
+ /**
88
+ * Creates a new instance of AliasRenamer.
89
+ */
90
+ constructor();
91
+ /**
92
+ * Renames an alias based on the cursor position in GUI editor.
93
+ *
94
+ * This method detects the alias at the specified line and column position,
95
+ * determines its scope (CTE, subquery, or main query), and renames all
96
+ * references to that alias within the scope boundaries.
97
+ *
98
+ * @param sql - The SQL string containing the alias to rename
99
+ * @param position - Line and column position (1-based) from GUI editor
100
+ * @param newName - The new name for the alias
101
+ * @param options - Optional configuration for the rename operation
102
+ * @returns Result containing success status, modified SQL, and change details
103
+ *
104
+ * @example
105
+ * ```typescript
106
+ * const sql = "SELECT u.name FROM users u WHERE u.active = true";
107
+ * const result = renamer.renameAlias(sql, { line: 1, column: 8 }, 'user_table');
108
+ *
109
+ * if (result.success) {
110
+ * console.log(result.newSql);
111
+ * // "SELECT user_table.name FROM users user_table WHERE user_table.active = true"
112
+ * }
113
+ * ```
114
+ *
115
+ * @throws {Error} When the SQL cannot be parsed or position is invalid
116
+ */
117
+ renameAlias(sql: string, position: LineColumn, newName: string, options?: RenameOptions): RenameResult;
118
+ /**
119
+ * Validates input parameters for alias renaming.
120
+ */
121
+ private validateInputs;
122
+ /**
123
+ * Validates that the lexeme represents a valid alias.
124
+ */
125
+ private validateLexemeIsAlias;
126
+ /**
127
+ * Detects the scope (CTE, subquery, main query) containing the alias.
128
+ */
129
+ private detectAliasScope;
130
+ /**
131
+ * Creates scope for a specific requested type.
132
+ */
133
+ private createScopeForType;
134
+ /**
135
+ * Auto-detects the most appropriate scope based on cursor position.
136
+ */
137
+ private autoDetectScope;
138
+ /**
139
+ * Detects if the position is within a CTE and returns appropriate scope.
140
+ */
141
+ private detectCTEScope;
142
+ /**
143
+ * Detects if the position is within a subquery scope.
144
+ */
145
+ private detectSubqueryScope;
146
+ /**
147
+ * Finds a CTE query by name within the parsed AST.
148
+ */
149
+ private findCTEQueryByName;
150
+ /**
151
+ * Collects all references to the specified alias within the given scope.
152
+ */
153
+ private collectAliasReferences;
154
+ /**
155
+ * Collects table alias references within the scope.
156
+ */
157
+ private collectTableAliasReferences;
158
+ /**
159
+ * Collects column alias references (table_alias.column format) within the scope.
160
+ */
161
+ private collectColumnAliasReferences;
162
+ /**
163
+ * Creates a lexeme representation from a table source for reference tracking.
164
+ */
165
+ private createLexemeFromTableSource;
166
+ /**
167
+ * Creates a lexeme representation from a namespace for reference tracking.
168
+ */
169
+ private createLexemeFromNamespace;
170
+ /**
171
+ * Checks for naming conflicts when renaming to the new name.
172
+ */
173
+ private checkNameConflicts;
174
+ /**
175
+ * Checks for conflicts with existing table aliases and table names in the scope.
176
+ */
177
+ private checkTableAliasConflicts;
178
+ /**
179
+ * Extracts the actual table name from a table source (not the alias).
180
+ */
181
+ private extractTableName;
182
+ /**
183
+ * Checks if the new name conflicts with SQL keywords using the existing KeywordTrie.
184
+ */
185
+ private checkKeywordConflicts;
186
+ /**
187
+ * Fallback method for basic reserved keyword checking.
188
+ */
189
+ private isBasicReservedKeyword;
190
+ /**
191
+ * Prepares change details for the rename operation.
192
+ */
193
+ private prepareChanges;
194
+ /**
195
+ * Enhanced SQL text replacement using lexeme-based approach.
196
+ * This method re-tokenizes the SQL to get accurate position information.
197
+ */
198
+ private performLexemeBasedRename;
199
+ }