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
@@ -0,0 +1,272 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ScopeResolver = void 0;
4
+ const SelectQuery_1 = require("../models/SelectQuery");
5
+ const Clause_1 = require("../models/Clause");
6
+ const CTECollector_1 = require("../transformers/CTECollector");
7
+ const TextPositionUtils_1 = require("./TextPositionUtils");
8
+ /**
9
+ * Resolves scope information at cursor positions for SQL IntelliSense
10
+ *
11
+ * Provides comprehensive scope analysis including table availability, CTE resolution,
12
+ * and column visibility for intelligent code completion suggestions.
13
+ *
14
+ * @example
15
+ * ```typescript
16
+ * const sql = `
17
+ * WITH users AS (SELECT id, name FROM accounts)
18
+ * SELECT u.name FROM users u
19
+ * LEFT JOIN orders o ON u.id = o.user_id
20
+ * WHERE u.|
21
+ * `;
22
+ * const scope = ScopeResolver.resolveAt(sql, { line: 4, column: 12 });
23
+ *
24
+ * console.log(scope.availableTables); // [{ name: 'users', alias: 'u' }, { name: 'orders', alias: 'o' }]
25
+ * console.log(scope.availableCTEs); // [{ name: 'users', columns: ['id', 'name'] }]
26
+ * ```
27
+ */
28
+ class ScopeResolver {
29
+ /**
30
+ * Resolve scope information at the specified cursor position
31
+ *
32
+ * @param sql - SQL text to analyze
33
+ * @param cursorPosition - Character position of cursor (0-based)
34
+ * @returns Complete scope information
35
+ */
36
+ static resolve(sql, cursorPosition) {
37
+ // Simplified for suggestion-only focus - return basic scope information
38
+ // Complex SQL parsing removed to avoid issues with incomplete SQL syntax
39
+ return this.createEmptyScope();
40
+ }
41
+ /**
42
+ * Resolve scope information at line/column position
43
+ *
44
+ * @param sql - SQL text to analyze
45
+ * @param position - Line and column position (1-based)
46
+ * @returns Complete scope information
47
+ */
48
+ static resolveAt(sql, position) {
49
+ const charOffset = TextPositionUtils_1.TextPositionUtils.lineColumnToCharOffset(sql, position);
50
+ if (charOffset === -1) {
51
+ return this.createEmptyScope();
52
+ }
53
+ return this.resolve(sql, charOffset);
54
+ }
55
+ /**
56
+ * Get available columns for a specific table or alias
57
+ *
58
+ * @param sql - SQL text containing the query
59
+ * @param cursorPosition - Cursor position for scope resolution
60
+ * @param tableOrAlias - Table name or alias to get columns for
61
+ * @returns Array of available columns for the specified table
62
+ */
63
+ static getColumnsForTable(sql, cursorPosition, tableOrAlias) {
64
+ const scope = this.resolve(sql, cursorPosition);
65
+ // Find matching table
66
+ const table = scope.availableTables.find(t => t.name === tableOrAlias || t.alias === tableOrAlias);
67
+ if (!table) {
68
+ return [];
69
+ }
70
+ // Return columns for this table
71
+ return scope.visibleColumns.filter(col => col.tableName === table.name ||
72
+ (table.alias && col.tableAlias === table.alias));
73
+ }
74
+ static analyzeScopeFromQuery(query) {
75
+ const scope = {
76
+ availableTables: [],
77
+ availableCTEs: [],
78
+ subqueryLevel: 0,
79
+ visibleColumns: [],
80
+ currentQuery: query,
81
+ parentQueries: []
82
+ };
83
+ if (query instanceof SelectQuery_1.SimpleSelectQuery) {
84
+ // Collect CTEs
85
+ scope.availableCTEs = this.collectCTEs(query);
86
+ // Collect tables from FROM and JOINs
87
+ scope.availableTables = this.collectTablesFromQuery(query);
88
+ // Collect visible columns
89
+ scope.visibleColumns = this.collectVisibleColumns(scope.availableTables, scope.availableCTEs);
90
+ }
91
+ else if (query instanceof SelectQuery_1.BinarySelectQuery) {
92
+ // For UNION queries, analyze both sides
93
+ const leftScope = this.analyzeScopeFromQuery(query.left);
94
+ const rightScope = this.analyzeScopeFromQuery(query.right);
95
+ // Merge scopes (tables from both sides available)
96
+ scope.availableTables = [...leftScope.availableTables, ...rightScope.availableTables];
97
+ scope.availableCTEs = [...leftScope.availableCTEs, ...rightScope.availableCTEs];
98
+ scope.visibleColumns = [...leftScope.visibleColumns, ...rightScope.visibleColumns];
99
+ }
100
+ return scope;
101
+ }
102
+ static collectCTEs(query) {
103
+ const ctes = [];
104
+ if (query.withClause) {
105
+ const cteCollector = new CTECollector_1.CTECollector();
106
+ const collectedCTEs = cteCollector.collect(query);
107
+ for (const cte of collectedCTEs) {
108
+ ctes.push({
109
+ name: cte.getSourceAliasName(),
110
+ query: cte.query,
111
+ columns: this.extractCTEColumns(cte.query),
112
+ materialized: cte.materialized || false
113
+ });
114
+ }
115
+ }
116
+ return ctes;
117
+ }
118
+ static collectTablesFromQuery(query) {
119
+ const tables = [];
120
+ // Collect from FROM clause
121
+ if (query.fromClause) {
122
+ const fromTables = this.extractTablesFromFromClause(query.fromClause);
123
+ tables.push(...fromTables);
124
+ }
125
+ return tables;
126
+ }
127
+ static extractTablesFromFromClause(fromClause) {
128
+ var _a, _b, _c, _d;
129
+ const tables = [];
130
+ // Extract main source table
131
+ if (fromClause.source.datasource instanceof Clause_1.TableSource) {
132
+ const table = {
133
+ name: this.extractTableName(fromClause.source.datasource.qualifiedName),
134
+ alias: (_a = fromClause.source.aliasExpression) === null || _a === void 0 ? void 0 : _a.table.name,
135
+ schema: this.extractSchemaName(fromClause.source.datasource.qualifiedName),
136
+ fullName: this.getQualifiedNameString(fromClause.source.datasource.qualifiedName),
137
+ sourceType: 'table'
138
+ };
139
+ tables.push(table);
140
+ }
141
+ else if (fromClause.source.datasource instanceof Clause_1.SubQuerySource) {
142
+ const table = {
143
+ name: ((_b = fromClause.source.aliasExpression) === null || _b === void 0 ? void 0 : _b.table.name) || 'subquery',
144
+ alias: (_c = fromClause.source.aliasExpression) === null || _c === void 0 ? void 0 : _c.table.name,
145
+ fullName: ((_d = fromClause.source.aliasExpression) === null || _d === void 0 ? void 0 : _d.table.name) || 'subquery',
146
+ sourceType: 'subquery',
147
+ originalQuery: fromClause.source.datasource.query
148
+ };
149
+ tables.push(table);
150
+ }
151
+ // Collect from JOINs
152
+ if (fromClause.joins) {
153
+ for (const join of fromClause.joins) {
154
+ const joinTables = this.extractTablesFromJoin(join);
155
+ tables.push(...joinTables);
156
+ }
157
+ }
158
+ return tables;
159
+ }
160
+ static extractTablesFromJoin(join) {
161
+ var _a, _b, _c, _d;
162
+ const tables = [];
163
+ if (join.source.datasource instanceof Clause_1.TableSource) {
164
+ const table = {
165
+ name: this.extractTableName(join.source.datasource.qualifiedName),
166
+ alias: (_a = join.source.aliasExpression) === null || _a === void 0 ? void 0 : _a.table.name,
167
+ schema: this.extractSchemaName(join.source.datasource.qualifiedName),
168
+ fullName: this.getQualifiedNameString(join.source.datasource.qualifiedName),
169
+ sourceType: 'table'
170
+ };
171
+ tables.push(table);
172
+ }
173
+ else if (join.source.datasource instanceof Clause_1.SubQuerySource) {
174
+ const table = {
175
+ name: ((_b = join.source.aliasExpression) === null || _b === void 0 ? void 0 : _b.table.name) || 'subquery',
176
+ alias: (_c = join.source.aliasExpression) === null || _c === void 0 ? void 0 : _c.table.name,
177
+ fullName: ((_d = join.source.aliasExpression) === null || _d === void 0 ? void 0 : _d.table.name) || 'subquery',
178
+ sourceType: 'subquery',
179
+ originalQuery: join.source.datasource.query
180
+ };
181
+ tables.push(table);
182
+ }
183
+ return tables;
184
+ }
185
+ static getQualifiedNameString(qualifiedName) {
186
+ // Use the existing method from QualifiedName to get the string representation
187
+ return qualifiedName.toString();
188
+ }
189
+ static extractTableName(qualifiedName) {
190
+ const fullName = this.getQualifiedNameString(qualifiedName);
191
+ const parts = fullName.split('.');
192
+ return parts[parts.length - 1]; // Last part is table name
193
+ }
194
+ static extractSchemaName(qualifiedName) {
195
+ const fullName = this.getQualifiedNameString(qualifiedName);
196
+ const parts = fullName.split('.');
197
+ return parts.length > 1 ? parts[parts.length - 2] : undefined;
198
+ }
199
+ static extractCTEColumns(query) {
200
+ // Try to extract column names from CTE SELECT clause
201
+ try {
202
+ if (query instanceof SelectQuery_1.SimpleSelectQuery && query.selectClause) {
203
+ const columns = [];
204
+ for (const item of query.selectClause.items) {
205
+ // Use alias if available, otherwise try to extract from expression
206
+ if (item.identifier) {
207
+ columns.push(item.identifier.name);
208
+ }
209
+ else {
210
+ // Try to extract column name from expression
211
+ const columnName = this.extractColumnNameFromExpression(item.value);
212
+ if (columnName) {
213
+ columns.push(columnName);
214
+ }
215
+ }
216
+ }
217
+ return columns;
218
+ }
219
+ }
220
+ catch (error) {
221
+ // If extraction fails, return undefined
222
+ }
223
+ return undefined;
224
+ }
225
+ static extractColumnNameFromExpression(expression) {
226
+ // Simple extraction - can be enhanced based on ValueComponent types
227
+ if (expression && typeof expression === 'object' && 'value' in expression) {
228
+ return expression.value;
229
+ }
230
+ return undefined;
231
+ }
232
+ static collectVisibleColumns(tables, ctes) {
233
+ const columns = [];
234
+ // Add columns from CTEs
235
+ for (const cte of ctes) {
236
+ if (cte.columns) {
237
+ for (const columnName of cte.columns) {
238
+ columns.push({
239
+ name: columnName,
240
+ tableName: cte.name,
241
+ fullReference: `${cte.name}.${columnName}`
242
+ });
243
+ }
244
+ }
245
+ }
246
+ // For regular tables, we would need schema information to determine columns
247
+ // This is a placeholder - in practice, this would integrate with database metadata
248
+ for (const table of tables) {
249
+ if (table.sourceType === 'table') {
250
+ // Placeholder - would query database schema
251
+ columns.push({
252
+ name: '*',
253
+ tableName: table.name,
254
+ tableAlias: table.alias,
255
+ fullReference: `${table.alias || table.name}.*`
256
+ });
257
+ }
258
+ }
259
+ return columns;
260
+ }
261
+ static createEmptyScope() {
262
+ return {
263
+ availableTables: [],
264
+ availableCTEs: [],
265
+ subqueryLevel: 0,
266
+ visibleColumns: [],
267
+ parentQueries: []
268
+ };
269
+ }
270
+ }
271
+ exports.ScopeResolver = ScopeResolver;
272
+ //# sourceMappingURL=ScopeResolver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ScopeResolver.js","sourceRoot":"","sources":["../../../src/utils/ScopeResolver.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,62 @@
1
+ import { LineColumn } from './LexemeCursor';
2
+ /**
3
+ * Utility functions for text position conversion and manipulation
4
+ *
5
+ * Provides centralized functionality for converting between different
6
+ * position representations commonly used in text processing and SQL parsing.
7
+ */
8
+ export declare class TextPositionUtils {
9
+ /**
10
+ * Convert line/column position to character offset
11
+ *
12
+ * @param text - Source text
13
+ * @param position - Line/column position (1-based)
14
+ * @returns Character offset (0-based) or -1 if invalid
15
+ *
16
+ * @example
17
+ * ```typescript
18
+ * const text = "SELECT id\nFROM users";
19
+ * const charOffset = TextPositionUtils.lineColumnToCharOffset(text, { line: 2, column: 1 });
20
+ * console.log(charOffset); // 10 (position of 'F' in 'FROM')
21
+ * ```
22
+ */
23
+ static lineColumnToCharOffset(text: string, position: LineColumn): number;
24
+ /**
25
+ * Convert character offset to line/column position
26
+ *
27
+ * @param text - Source text
28
+ * @param charOffset - Character offset (0-based)
29
+ * @returns Line/column position (1-based) or null if invalid
30
+ *
31
+ * @example
32
+ * ```typescript
33
+ * const text = "SELECT id\nFROM users";
34
+ * const position = TextPositionUtils.charOffsetToLineColumn(text, 10);
35
+ * console.log(position); // { line: 2, column: 1 }
36
+ * ```
37
+ */
38
+ static charOffsetToLineColumn(text: string, charOffset: number): LineColumn | null;
39
+ /**
40
+ * Check if a position is within text bounds
41
+ *
42
+ * @param text - Source text
43
+ * @param position - Line/column position (1-based)
44
+ * @returns True if position is valid
45
+ */
46
+ static isValidPosition(text: string, position: LineColumn): boolean;
47
+ /**
48
+ * Get the line at the specified line number
49
+ *
50
+ * @param text - Source text
51
+ * @param lineNumber - Line number (1-based)
52
+ * @returns Line content or null if invalid
53
+ */
54
+ static getLine(text: string, lineNumber: number): string | null;
55
+ /**
56
+ * Get the total number of lines in text
57
+ *
58
+ * @param text - Source text
59
+ * @returns Number of lines
60
+ */
61
+ static getLineCount(text: string): number;
62
+ }
@@ -0,0 +1,128 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TextPositionUtils = void 0;
4
+ /**
5
+ * Utility functions for text position conversion and manipulation
6
+ *
7
+ * Provides centralized functionality for converting between different
8
+ * position representations commonly used in text processing and SQL parsing.
9
+ */
10
+ class TextPositionUtils {
11
+ /**
12
+ * Convert line/column position to character offset
13
+ *
14
+ * @param text - Source text
15
+ * @param position - Line/column position (1-based)
16
+ * @returns Character offset (0-based) or -1 if invalid
17
+ *
18
+ * @example
19
+ * ```typescript
20
+ * const text = "SELECT id\nFROM users";
21
+ * const charOffset = TextPositionUtils.lineColumnToCharOffset(text, { line: 2, column: 1 });
22
+ * console.log(charOffset); // 10 (position of 'F' in 'FROM')
23
+ * ```
24
+ */
25
+ static lineColumnToCharOffset(text, position) {
26
+ if (position.line < 1 || position.column < 1) {
27
+ return -1;
28
+ }
29
+ const lines = text.split('\n');
30
+ if (position.line > lines.length) {
31
+ return -1;
32
+ }
33
+ const targetLine = lines[position.line - 1];
34
+ if (position.column > targetLine.length + 1) {
35
+ return -1;
36
+ }
37
+ let offset = 0;
38
+ for (let i = 0; i < position.line - 1; i++) {
39
+ offset += lines[i].length + 1; // +1 for newline
40
+ }
41
+ offset += position.column - 1;
42
+ return offset;
43
+ }
44
+ /**
45
+ * Convert character offset to line/column position
46
+ *
47
+ * @param text - Source text
48
+ * @param charOffset - Character offset (0-based)
49
+ * @returns Line/column position (1-based) or null if invalid
50
+ *
51
+ * @example
52
+ * ```typescript
53
+ * const text = "SELECT id\nFROM users";
54
+ * const position = TextPositionUtils.charOffsetToLineColumn(text, 10);
55
+ * console.log(position); // { line: 2, column: 1 }
56
+ * ```
57
+ */
58
+ static charOffsetToLineColumn(text, charOffset) {
59
+ if (charOffset < 0 || charOffset > text.length) {
60
+ return null;
61
+ }
62
+ const lines = text.split('\n');
63
+ let currentOffset = 0;
64
+ for (let lineIndex = 0; lineIndex < lines.length; lineIndex++) {
65
+ const lineLength = lines[lineIndex].length;
66
+ if (charOffset < currentOffset + lineLength) {
67
+ return {
68
+ line: lineIndex + 1,
69
+ column: charOffset - currentOffset + 1
70
+ };
71
+ }
72
+ if (charOffset === currentOffset + lineLength && lineIndex < lines.length - 1) {
73
+ return {
74
+ line: lineIndex + 2,
75
+ column: 1
76
+ };
77
+ }
78
+ currentOffset += lineLength + 1; // +1 for newline
79
+ }
80
+ // Handle position at very end
81
+ if (charOffset === text.length) {
82
+ const lastLine = lines[lines.length - 1];
83
+ return {
84
+ line: lines.length,
85
+ column: lastLine.length + 1
86
+ };
87
+ }
88
+ return null;
89
+ }
90
+ /**
91
+ * Check if a position is within text bounds
92
+ *
93
+ * @param text - Source text
94
+ * @param position - Line/column position (1-based)
95
+ * @returns True if position is valid
96
+ */
97
+ static isValidPosition(text, position) {
98
+ return this.lineColumnToCharOffset(text, position) !== -1;
99
+ }
100
+ /**
101
+ * Get the line at the specified line number
102
+ *
103
+ * @param text - Source text
104
+ * @param lineNumber - Line number (1-based)
105
+ * @returns Line content or null if invalid
106
+ */
107
+ static getLine(text, lineNumber) {
108
+ if (lineNumber < 1) {
109
+ return null;
110
+ }
111
+ const lines = text.split('\n');
112
+ if (lineNumber > lines.length) {
113
+ return null;
114
+ }
115
+ return lines[lineNumber - 1];
116
+ }
117
+ /**
118
+ * Get the total number of lines in text
119
+ *
120
+ * @param text - Source text
121
+ * @returns Number of lines
122
+ */
123
+ static getLineCount(text) {
124
+ return text.split('\n').length;
125
+ }
126
+ }
127
+ exports.TextPositionUtils = TextPositionUtils;
128
+ //# sourceMappingURL=TextPositionUtils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TextPositionUtils.js","sourceRoot":"","sources":["../../../src/utils/TextPositionUtils.ts"],"names":[],"mappings":"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"}