rawsql-ts 0.11.33-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.
- package/dist/esm/index.js +19 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/index.min.js +43 -35
- package/dist/esm/index.min.js.map +4 -4
- package/dist/esm/src/index.d.ts +21 -0
- package/dist/esm/src/index.js +19 -0
- package/dist/esm/src/index.js.map +1 -1
- package/dist/esm/src/tokenReaders/CommandTokenReader.js +5 -0
- package/dist/esm/src/tokenReaders/CommandTokenReader.js.map +1 -1
- package/dist/esm/src/transformers/CTEBuilder.js +2 -2
- package/dist/esm/src/transformers/CTEBuilder.js.map +1 -1
- package/dist/esm/src/utils/CursorContextAnalyzer.d.ts +70 -0
- package/dist/esm/src/utils/CursorContextAnalyzer.js +322 -0
- package/dist/esm/src/utils/CursorContextAnalyzer.js.map +1 -0
- package/dist/esm/src/utils/IntelliSenseApi.d.ts +114 -0
- package/dist/esm/src/utils/IntelliSenseApi.js +284 -0
- package/dist/esm/src/utils/IntelliSenseApi.js.map +1 -0
- package/dist/esm/src/utils/KeywordCache.d.ts +65 -0
- package/dist/esm/src/utils/KeywordCache.js +202 -0
- package/dist/esm/src/utils/KeywordCache.js.map +1 -0
- package/dist/esm/src/utils/MultiQuerySplitter.d.ts +131 -0
- package/dist/esm/src/utils/MultiQuerySplitter.js +287 -0
- package/dist/esm/src/utils/MultiQuerySplitter.js.map +1 -0
- package/dist/esm/src/utils/PositionAwareParser.d.ts +85 -0
- package/dist/esm/src/utils/PositionAwareParser.js +336 -0
- package/dist/esm/src/utils/PositionAwareParser.js.map +1 -0
- package/dist/esm/src/utils/ScopeResolver.d.ts +127 -0
- package/dist/esm/src/utils/ScopeResolver.js +268 -0
- package/dist/esm/src/utils/ScopeResolver.js.map +1 -0
- package/dist/esm/src/utils/TextPositionUtils.d.ts +62 -0
- package/dist/esm/src/utils/TextPositionUtils.js +124 -0
- package/dist/esm/src/utils/TextPositionUtils.js.map +1 -0
- package/dist/esm/tsconfig.browser.tsbuildinfo +1 -1
- package/dist/index.min.js +43 -35
- package/dist/index.min.js.map +4 -4
- package/dist/src/index.d.ts +21 -0
- package/dist/src/index.js +20 -1
- package/dist/src/index.js.map +1 -1
- package/dist/src/tokenReaders/CommandTokenReader.js +5 -0
- package/dist/src/tokenReaders/CommandTokenReader.js.map +1 -1
- package/dist/src/transformers/CTEBuilder.js +2 -2
- package/dist/src/transformers/CTEBuilder.js.map +1 -1
- package/dist/src/utils/CursorContextAnalyzer.d.ts +70 -0
- package/dist/src/utils/CursorContextAnalyzer.js +338 -0
- package/dist/src/utils/CursorContextAnalyzer.js.map +1 -0
- package/dist/src/utils/IntelliSenseApi.d.ts +114 -0
- package/dist/src/utils/IntelliSenseApi.js +292 -0
- package/dist/src/utils/IntelliSenseApi.js.map +1 -0
- package/dist/src/utils/KeywordCache.d.ts +65 -0
- package/dist/src/utils/KeywordCache.js +206 -0
- package/dist/src/utils/KeywordCache.js.map +1 -0
- package/dist/src/utils/MultiQuerySplitter.d.ts +131 -0
- package/dist/src/utils/MultiQuerySplitter.js +292 -0
- package/dist/src/utils/MultiQuerySplitter.js.map +1 -0
- package/dist/src/utils/PositionAwareParser.d.ts +85 -0
- package/dist/src/utils/PositionAwareParser.js +363 -0
- package/dist/src/utils/PositionAwareParser.js.map +1 -0
- package/dist/src/utils/ScopeResolver.d.ts +127 -0
- package/dist/src/utils/ScopeResolver.js +272 -0
- package/dist/src/utils/ScopeResolver.js.map +1 -0
- package/dist/src/utils/TextPositionUtils.d.ts +62 -0
- package/dist/src/utils/TextPositionUtils.js +128 -0
- package/dist/src/utils/TextPositionUtils.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
package/dist/src/index.d.ts
CHANGED
@@ -62,3 +62,24 @@ export * from './utils/LexemeCursor';
|
|
62
62
|
export type { LineColumn } from './utils/LexemeCursor';
|
63
63
|
export * from './utils/CTERegionDetector';
|
64
64
|
export type { CTERegion, CursorPositionInfo } from './utils/CTERegionDetector';
|
65
|
+
export * from './utils/CursorContextAnalyzer';
|
66
|
+
export type { IntelliSenseContext } from './utils/CursorContextAnalyzer';
|
67
|
+
export * from './utils/ScopeResolver';
|
68
|
+
export type { ScopeInfo, AvailableTable, AvailableCTE, AvailableColumn } from './utils/ScopeResolver';
|
69
|
+
export * from './utils/PositionAwareParser';
|
70
|
+
export type { ParseToPositionOptions, PositionParseResult } from './utils/PositionAwareParser';
|
71
|
+
export * from './utils/MultiQuerySplitter';
|
72
|
+
export type { QueryInfo, QueryCollection } from './utils/MultiQuerySplitter';
|
73
|
+
export {
|
74
|
+
/** Parse SQL up to cursor position with error recovery */
|
75
|
+
parseToPosition,
|
76
|
+
/** Analyze cursor context for IntelliSense */
|
77
|
+
getCursorContext,
|
78
|
+
/** Resolve scope information at cursor position */
|
79
|
+
resolveScope,
|
80
|
+
/** Split multi-query SQL text into individual queries */
|
81
|
+
splitQueries,
|
82
|
+
/** Get IntelliSense information for multi-query context */
|
83
|
+
getIntelliSenseInfo,
|
84
|
+
/** Get completion suggestions based on cursor context */
|
85
|
+
getCompletionSuggestions } from './utils/IntelliSenseApi';
|
package/dist/src/index.js
CHANGED
@@ -14,7 +14,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
15
15
|
};
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
17
|
-
exports.FilterableItem = exports.TableSchema = exports.unifyJsonMapping = exports.isLegacyFormat = exports.isUnifiedFormat = exports.isModelDrivenFormat = exports.processJsonMapping = exports.validateModelDrivenMapping = exports.convertModelDrivenMapping = exports.DuplicateDetectionMode = void 0;
|
17
|
+
exports.getCompletionSuggestions = exports.getIntelliSenseInfo = exports.splitQueries = exports.resolveScope = exports.getCursorContext = exports.parseToPosition = exports.FilterableItem = exports.TableSchema = exports.unifyJsonMapping = exports.isLegacyFormat = exports.isUnifiedFormat = exports.isModelDrivenFormat = exports.processJsonMapping = exports.validateModelDrivenMapping = exports.convertModelDrivenMapping = exports.DuplicateDetectionMode = void 0;
|
18
18
|
// Entry point for rawsql-ts package
|
19
19
|
__exportStar(require("./parsers/SelectQueryParser"), exports);
|
20
20
|
__exportStar(require("./parsers/InsertQueryParser"), exports);
|
@@ -85,5 +85,24 @@ __exportStar(require("./utils/SchemaManager"), exports);
|
|
85
85
|
__exportStar(require("./utils/CommentEditor"), exports);
|
86
86
|
__exportStar(require("./utils/LexemeCursor"), exports);
|
87
87
|
__exportStar(require("./utils/CTERegionDetector"), exports);
|
88
|
+
// Position-aware parsing and IntelliSense support
|
89
|
+
__exportStar(require("./utils/CursorContextAnalyzer"), exports);
|
90
|
+
__exportStar(require("./utils/ScopeResolver"), exports);
|
91
|
+
__exportStar(require("./utils/PositionAwareParser"), exports);
|
92
|
+
__exportStar(require("./utils/MultiQuerySplitter"), exports);
|
93
|
+
// Convenience functions for IntelliSense integration
|
94
|
+
var IntelliSenseApi_1 = require("./utils/IntelliSenseApi");
|
95
|
+
/** Parse SQL up to cursor position with error recovery */
|
96
|
+
Object.defineProperty(exports, "parseToPosition", { enumerable: true, get: function () { return IntelliSenseApi_1.parseToPosition; } });
|
97
|
+
/** Analyze cursor context for IntelliSense */
|
98
|
+
Object.defineProperty(exports, "getCursorContext", { enumerable: true, get: function () { return IntelliSenseApi_1.getCursorContext; } });
|
99
|
+
/** Resolve scope information at cursor position */
|
100
|
+
Object.defineProperty(exports, "resolveScope", { enumerable: true, get: function () { return IntelliSenseApi_1.resolveScope; } });
|
101
|
+
/** Split multi-query SQL text into individual queries */
|
102
|
+
Object.defineProperty(exports, "splitQueries", { enumerable: true, get: function () { return IntelliSenseApi_1.splitQueries; } });
|
103
|
+
/** Get IntelliSense information for multi-query context */
|
104
|
+
Object.defineProperty(exports, "getIntelliSenseInfo", { enumerable: true, get: function () { return IntelliSenseApi_1.getIntelliSenseInfo; } });
|
105
|
+
/** Get completion suggestions based on cursor context */
|
106
|
+
Object.defineProperty(exports, "getCompletionSuggestions", { enumerable: true, get: function () { return IntelliSenseApi_1.getCompletionSuggestions; } });
|
88
107
|
// Add more exports here if you want to expose additional public API
|
89
108
|
//# sourceMappingURL=index.js.map
|
package/dist/src/index.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,oCAAoC;AACpC,8DAA4C;AAE5C,8DAA4C;AAC5C,6DAA2C;AAE3C,6DAA2C;AAC3C,uDAAqC;AACrC,wDAAsC;AACtC,0DAAwC;AACxC,uDAAqC;AACrC,oDAAkC;AAClC,kDAAgC;AAChC,4DAA0C;AAE1C,8DAA4C;AAC5C,+DAA6C;AAC7C,6DAA2C;AAC3C,uEAAqD;AACrD,4EAA0D;AAC1D,oEAAkD;AAClD,6DAA2C;AAC3C,4DAA0C;AAC1C,8DAA4C;AAC5C,8DAA4C;AAC5C,sEAAoD;AACpD,sEAAoD;AAEpD,0EAAwD;AACxD,2DAAyC;AACzC,8DAA4C;AAC5C,0EAAwD;AACxD,8DAA4C,CAAC,0BAA0B;AACvE,sEAAoD;AACpD,2EAAyD;AACzD,sFAAkF;AAAzE,mIAAA,sBAAsB,OAAA;AAC/B,yEAAuD;AACvD,qEAAmD;AACnD,qEAAmD;AACnD,sEAAoD;AACpD,sEAAoD;AACpD,qEAAmD;AACnD,gFAQ+C;AAN3C,mIAAA,yBAAyB,OAAA;AACzB,oIAAA,0BAA0B,OAAA;AAM9B,wEAM2C;AALvC,6DAA6D;AAC7D,wHAAA,kBAAkB,OAAA;AAClB,yHAAA,mBAAmB,OAAA;AACnB,qHAAA,eAAe,OAAA;AACf,oHAAA,cAAc,OAAA;AAGlB,qEAAqE;AACrE,wEAAqE;AAA5D,sHAAA,gBAAgB,OAAA;AACzB,2EAAyD;AACzD,iFAA+D;AAE/D,iEAA+C;AAC/C,kEAAmF;AAA1E,8GAAA,WAAW,OAAA;AACpB,yEAAuD;AACvD,kFAAwG;AAA/F,yHAAA,cAAc,OAAA;AACvB,2EAAyD;AACzD,kEAAgD;AAChD,iEAA+C;AAC/C,uEAAqD;AACrD,qEAAmD;AAEnD,6DAA2C;AAC3C,8DAA4C;AAC5C,wDAAsC;AACtC,wDAAsC;AACtC,uDAAqC;AAErC,4DAA0C;
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,oCAAoC;AACpC,8DAA4C;AAE5C,8DAA4C;AAC5C,6DAA2C;AAE3C,6DAA2C;AAC3C,uDAAqC;AACrC,wDAAsC;AACtC,0DAAwC;AACxC,uDAAqC;AACrC,oDAAkC;AAClC,kDAAgC;AAChC,4DAA0C;AAE1C,8DAA4C;AAC5C,+DAA6C;AAC7C,6DAA2C;AAC3C,uEAAqD;AACrD,4EAA0D;AAC1D,oEAAkD;AAClD,6DAA2C;AAC3C,4DAA0C;AAC1C,8DAA4C;AAC5C,8DAA4C;AAC5C,sEAAoD;AACpD,sEAAoD;AAEpD,0EAAwD;AACxD,2DAAyC;AACzC,8DAA4C;AAC5C,0EAAwD;AACxD,8DAA4C,CAAC,0BAA0B;AACvE,sEAAoD;AACpD,2EAAyD;AACzD,sFAAkF;AAAzE,mIAAA,sBAAsB,OAAA;AAC/B,yEAAuD;AACvD,qEAAmD;AACnD,qEAAmD;AACnD,sEAAoD;AACpD,sEAAoD;AACpD,qEAAmD;AACnD,gFAQ+C;AAN3C,mIAAA,yBAAyB,OAAA;AACzB,oIAAA,0BAA0B,OAAA;AAM9B,wEAM2C;AALvC,6DAA6D;AAC7D,wHAAA,kBAAkB,OAAA;AAClB,yHAAA,mBAAmB,OAAA;AACnB,qHAAA,eAAe,OAAA;AACf,oHAAA,cAAc,OAAA;AAGlB,qEAAqE;AACrE,wEAAqE;AAA5D,sHAAA,gBAAgB,OAAA;AACzB,2EAAyD;AACzD,iFAA+D;AAE/D,iEAA+C;AAC/C,kEAAmF;AAA1E,8GAAA,WAAW,OAAA;AACpB,yEAAuD;AACvD,kFAAwG;AAA/F,yHAAA,cAAc,OAAA;AACvB,2EAAyD;AACzD,kEAAgD;AAChD,iEAA+C;AAC/C,uEAAqD;AACrD,qEAAmD;AAEnD,6DAA2C;AAC3C,8DAA4C;AAC5C,wDAAsC;AACtC,wDAAsC;AACtC,uDAAqC;AAErC,4DAA0C;AAG1C,kDAAkD;AAClD,gEAA8C;AAE9C,wDAAsC;AAOtC,8DAA4C;AAK5C,6DAA2C;AAG3C,qDAAqD;AACrD,2DAaiC;AAZ7B,0DAA0D;AAC1D,kHAAA,eAAe,OAAA;AACf,8CAA8C;AAC9C,mHAAA,gBAAgB,OAAA;AAChB,mDAAmD;AACnD,+GAAA,YAAY,OAAA;AACZ,yDAAyD;AACzD,+GAAA,YAAY,OAAA;AACZ,2DAA2D;AAC3D,sHAAA,mBAAmB,OAAA;AACnB,yDAAyD;AACzD,2HAAA,wBAAwB,OAAA;AAI5B,oEAAoE"}
|
@@ -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"],
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"CommandTokenReader.js","sourceRoot":"","sources":["../../../src/tokenReaders/CommandTokenReader.ts"],"names":[],"mappings":"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"}
|
1
|
+
{"version":3,"file":"CommandTokenReader.js","sourceRoot":"","sources":["../../../src/tokenReaders/CommandTokenReader.ts"],"names":[],"mappings":"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"}
|
@@ -65,7 +65,7 @@ class CTEBuilder {
|
|
65
65
|
}
|
66
66
|
// Resolve name duplications
|
67
67
|
const resolvedTables = [];
|
68
|
-
for (const [name, tables] of ctesByName.entries()) {
|
68
|
+
for (const [name, tables] of Array.from(ctesByName.entries())) {
|
69
69
|
if (tables.length === 1) {
|
70
70
|
// No duplication
|
71
71
|
resolvedTables.push(tables[0]);
|
@@ -159,7 +159,7 @@ class CTEBuilder {
|
|
159
159
|
visiting.add(tableName);
|
160
160
|
// Process dependencies first (inner CTEs)
|
161
161
|
const deps = dependencies.get(tableName) || new Set();
|
162
|
-
for (const dep of deps) {
|
162
|
+
for (const dep of Array.from(deps)) {
|
163
163
|
visit(dep);
|
164
164
|
}
|
165
165
|
visiting.delete(tableName);
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"CTEBuilder.js","sourceRoot":"","sources":["../../../src/transformers/CTEBuilder.ts"],"names":[],"mappings":";;;AAAA,6CAA2D;AAC3D,iDAA8C;AAC9C,iEAA8D;AAC9D,2CAAwC;AAExC;;;GAGG;AACH,MAAa,UAAU;IAKnB;QACI,IAAI,CAAC,eAAe,GAAG,IAAI,2CAAoB,CAAC,IAAI,CAAC,CAAC;QACtD,IAAI,CAAC,YAAY,GAAG,IAAI,2BAAY,EAAE,CAAC;QACvC,IAAI,CAAC,SAAS,GAAG,IAAI,qBAAS,EAAE,CAAC;IACrC,CAAC;IAED;;;;;;;;;;;;OAYG;IACI,KAAK,CAAC,YAA2B;QACpC,8BAA8B;QAC9B,QAAQ;QACR,kFAAkF;QAClF,mGAAmG;QACnG,kEAAkE;QAClE,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5B,OAAO,IAAI,mBAAU,CACjB,KAAK,EACL,YAAY,CACf,CAAC;QACN,CAAC;QAED,iCAAiC;QACjC,MAAM,cAAc,GAAG,IAAI,CAAC,qBAAqB,CAAC,YAAY,CAAC,CAAC;QAEhE,6DAA6D;QAC7D,MAAM,EAAE,QAAQ,EAAE,aAAa,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC,oBAAoB,CAAC,cAAc,CAAC,CAAC;QAE5F,kEAAkE;QAClE,MAAM,YAAY,GAAG,IAAI,CAAC,gBAAgB,CAAC,cAAc,EAAE,QAAQ,EAAE,aAAa,EAAE,YAAY,CAAC,CAAC;QAElG,OAAO,IAAI,mBAAU,CACjB,aAAa,CAAC,IAAI,GAAG,CAAC,EACtB,YAAY,CACf,CAAC;IACN,CAAC;IAED;;;;;;;OAOG;IACK,qBAAqB,CAAC,YAA2B;QACrD,4BAA4B;QAC5B,MAAM,UAAU,GAAG,IAAI,GAAG,EAAyB,CAAC;QACpD,KAAK,MAAM,KAAK,IAAI,YAAY,EAAE,CAAC;YAC/B,MAAM,SAAS,GAAG,KAAK,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC;YACnD,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC7B,UAAU,CAAC,GAAG,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;YAClC,CAAC;YACD,UAAU,CAAC,GAAG,CAAC,SAAS,CAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC3C,CAAC;QAED,4BAA4B;QAC5B,MAAM,cAAc,GAAkB,EAAE,CAAC;QACzC,KAAK,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC;
|
1
|
+
{"version":3,"file":"CTEBuilder.js","sourceRoot":"","sources":["../../../src/transformers/CTEBuilder.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,338 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.CursorContextAnalyzer = void 0;
|
4
|
+
const LexemeCursor_1 = require("./LexemeCursor");
|
5
|
+
const TextPositionUtils_1 = require("./TextPositionUtils");
|
6
|
+
const KeywordCache_1 = require("./KeywordCache");
|
7
|
+
class CursorContextAnalyzer {
|
8
|
+
/**
|
9
|
+
* Process existing dictionaries into IntelliSense-friendly patterns
|
10
|
+
* Single source of truth: existing CommandTokenReader dictionaries
|
11
|
+
*/
|
12
|
+
static getKeywordPatterns() {
|
13
|
+
if (this.patternCache !== null) {
|
14
|
+
return this.patternCache;
|
15
|
+
}
|
16
|
+
const requiresKeywords = new Map();
|
17
|
+
const suggestsTables = new Set();
|
18
|
+
const suggestsColumns = new Set();
|
19
|
+
// Extract all patterns by systematically testing the dictionaries
|
20
|
+
this.extractKeywordPatterns(requiresKeywords, suggestsTables, suggestsColumns);
|
21
|
+
// Cache the processed patterns
|
22
|
+
this.patternCache = {
|
23
|
+
requiresKeywords,
|
24
|
+
suggestsTables,
|
25
|
+
suggestsColumns
|
26
|
+
};
|
27
|
+
return this.patternCache;
|
28
|
+
}
|
29
|
+
/**
|
30
|
+
* Extract all keyword patterns from the existing dictionaries
|
31
|
+
*/
|
32
|
+
static extractKeywordPatterns(requiresKeywords, suggestsTables, suggestsColumns) {
|
33
|
+
// Define SQL contexts and their expected behavior
|
34
|
+
const tableContexts = ['from', 'join']; // Keywords that introduce table names
|
35
|
+
const columnContexts = ['select', 'where', 'on', 'having', 'by']; // Keywords that introduce columns
|
36
|
+
// Check table context keywords
|
37
|
+
for (const keyword of tableContexts) {
|
38
|
+
if (this.isKeywordInDictionary(keyword)) {
|
39
|
+
suggestsTables.add(keyword);
|
40
|
+
}
|
41
|
+
}
|
42
|
+
// Check column context keywords
|
43
|
+
for (const keyword of columnContexts) {
|
44
|
+
if (this.isKeywordInDictionary(keyword)) {
|
45
|
+
suggestsColumns.add(keyword);
|
46
|
+
}
|
47
|
+
}
|
48
|
+
// Extract all keyword patterns that require followups
|
49
|
+
this.extractRequiresKeywordPatterns(requiresKeywords);
|
50
|
+
}
|
51
|
+
/**
|
52
|
+
* Check if a keyword exists in the command dictionaries using existing parsers
|
53
|
+
*/
|
54
|
+
static isKeywordInDictionary(keyword) {
|
55
|
+
// Use KeywordCache for JOIN keywords
|
56
|
+
if (KeywordCache_1.KeywordCache.isValidJoinKeyword(keyword)) {
|
57
|
+
return true;
|
58
|
+
}
|
59
|
+
// Check if keyword exists in command dictionary
|
60
|
+
// Since we can't directly query the trie, use known keyword list
|
61
|
+
const knownKeywords = ['from', 'join', 'select', 'where', 'on', 'having', 'by', 'group', 'order'];
|
62
|
+
return knownKeywords.includes(keyword);
|
63
|
+
}
|
64
|
+
/**
|
65
|
+
* Extract all keywords that require specific followup keywords
|
66
|
+
*/
|
67
|
+
static extractRequiresKeywordPatterns(requiresKeywords) {
|
68
|
+
// Test all potential first words that might require followup keywords
|
69
|
+
const potentialFirstWords = [
|
70
|
+
// JOIN modifiers
|
71
|
+
'inner', 'left', 'right', 'full', 'cross', 'natural', 'outer',
|
72
|
+
// Other composite keywords
|
73
|
+
'group', 'order'
|
74
|
+
];
|
75
|
+
for (const word of potentialFirstWords) {
|
76
|
+
const possibleFollowups = this.findPossibleFollowups(word);
|
77
|
+
if (possibleFollowups.length > 0) {
|
78
|
+
requiresKeywords.set(word, possibleFollowups);
|
79
|
+
}
|
80
|
+
}
|
81
|
+
}
|
82
|
+
/**
|
83
|
+
* Find all possible followup keywords for a given word using KeywordCache
|
84
|
+
*/
|
85
|
+
static findPossibleFollowups(word) {
|
86
|
+
const followups = new Set();
|
87
|
+
// Use KeywordCache for JOIN-related suggestions
|
88
|
+
const joinSuggestions = KeywordCache_1.KeywordCache.getJoinSuggestions(word.toLowerCase());
|
89
|
+
joinSuggestions.forEach(s => followups.add(s.toUpperCase()));
|
90
|
+
// Use KeywordCache for command-related suggestions
|
91
|
+
const commandSuggestions = KeywordCache_1.KeywordCache.getCommandSuggestions(word.toLowerCase());
|
92
|
+
commandSuggestions.forEach(s => followups.add(s.toUpperCase()));
|
93
|
+
return Array.from(followups);
|
94
|
+
}
|
95
|
+
/**
|
96
|
+
* Helper function to check if a token requires specific keywords
|
97
|
+
*/
|
98
|
+
static requiresSpecificKeywords(tokenValue) {
|
99
|
+
const patterns = this.getKeywordPatterns();
|
100
|
+
const requiredKeywords = patterns.requiresKeywords.get(tokenValue);
|
101
|
+
if (requiredKeywords) {
|
102
|
+
return {
|
103
|
+
suggestKeywords: true,
|
104
|
+
requiredKeywords
|
105
|
+
};
|
106
|
+
}
|
107
|
+
return null;
|
108
|
+
}
|
109
|
+
/**
|
110
|
+
* Analyze cursor position for IntelliSense suggestions
|
111
|
+
*
|
112
|
+
* Direct implementation that determines what suggestions can be provided
|
113
|
+
* without legacy context conversion overhead.
|
114
|
+
*
|
115
|
+
* @param sql - SQL text to analyze
|
116
|
+
* @param cursorPosition - Character position (0-based)
|
117
|
+
* @returns IntelliSense context focused on what suggestions can be provided
|
118
|
+
*/
|
119
|
+
static analyzeIntelliSense(sql, cursorPosition) {
|
120
|
+
try {
|
121
|
+
// Get all lexemes with position information
|
122
|
+
const allLexemes = LexemeCursor_1.LexemeCursor.getAllLexemesWithPosition(sql);
|
123
|
+
// Find token at cursor position
|
124
|
+
let actualTokenIndex = -1;
|
125
|
+
let actualCurrentToken;
|
126
|
+
// Find the token that contains or precedes the cursor
|
127
|
+
for (let i = 0; i < allLexemes.length; i++) {
|
128
|
+
const lexeme = allLexemes[i];
|
129
|
+
if (!lexeme.position)
|
130
|
+
continue;
|
131
|
+
if (cursorPosition >= lexeme.position.startPosition &&
|
132
|
+
cursorPosition <= lexeme.position.endPosition) {
|
133
|
+
// Cursor is within this token
|
134
|
+
actualCurrentToken = lexeme;
|
135
|
+
actualTokenIndex = i;
|
136
|
+
break;
|
137
|
+
}
|
138
|
+
else if (lexeme.position.startPosition > cursorPosition) {
|
139
|
+
// Cursor is before this token (in whitespace)
|
140
|
+
actualTokenIndex = Math.max(0, i - 1);
|
141
|
+
actualCurrentToken = actualTokenIndex >= 0 ? allLexemes[actualTokenIndex] : undefined;
|
142
|
+
break;
|
143
|
+
}
|
144
|
+
}
|
145
|
+
// If not found, cursor is after all tokens
|
146
|
+
if (actualTokenIndex === -1 && allLexemes.length > 0) {
|
147
|
+
actualTokenIndex = allLexemes.length - 1;
|
148
|
+
actualCurrentToken = allLexemes[actualTokenIndex];
|
149
|
+
}
|
150
|
+
const previousToken = actualTokenIndex > 0 ? allLexemes[actualTokenIndex - 1] : undefined;
|
151
|
+
// Check for dot completion (highest priority)
|
152
|
+
const isAfterDot = this.isAfterDot(sql, cursorPosition, previousToken);
|
153
|
+
if (isAfterDot) {
|
154
|
+
const precedingIdentifier = this.findPrecedingIdentifier(sql, cursorPosition, allLexemes);
|
155
|
+
return {
|
156
|
+
suggestTables: false,
|
157
|
+
suggestColumns: true,
|
158
|
+
suggestKeywords: false,
|
159
|
+
tableScope: precedingIdentifier,
|
160
|
+
currentToken: actualCurrentToken,
|
161
|
+
previousToken: previousToken
|
162
|
+
};
|
163
|
+
}
|
164
|
+
// Check for keywords that require additional keywords
|
165
|
+
if (actualCurrentToken) {
|
166
|
+
const currentValue = actualCurrentToken.value.toLowerCase();
|
167
|
+
const keywordRequirement = this.requiresSpecificKeywords(currentValue);
|
168
|
+
if (keywordRequirement) {
|
169
|
+
return {
|
170
|
+
suggestTables: false,
|
171
|
+
suggestColumns: false,
|
172
|
+
...keywordRequirement,
|
173
|
+
currentToken: actualCurrentToken,
|
174
|
+
previousToken: previousToken
|
175
|
+
};
|
176
|
+
}
|
177
|
+
}
|
178
|
+
// Check tokens for context-based suggestions
|
179
|
+
const tokenValue = actualCurrentToken === null || actualCurrentToken === void 0 ? void 0 : actualCurrentToken.value.toLowerCase();
|
180
|
+
const prevValue = previousToken === null || previousToken === void 0 ? void 0 : previousToken.value.toLowerCase();
|
181
|
+
// Check current token first (when cursor is at end of token)
|
182
|
+
if (tokenValue) {
|
183
|
+
const patterns = this.getKeywordPatterns();
|
184
|
+
// Keywords that suggest tables after them
|
185
|
+
if (patterns.suggestsTables.has(tokenValue)) {
|
186
|
+
return {
|
187
|
+
suggestTables: true,
|
188
|
+
suggestColumns: false,
|
189
|
+
suggestKeywords: false,
|
190
|
+
currentToken: actualCurrentToken,
|
191
|
+
previousToken: previousToken
|
192
|
+
};
|
193
|
+
}
|
194
|
+
// Keywords that suggest columns after them
|
195
|
+
if (patterns.suggestsColumns.has(tokenValue)) {
|
196
|
+
return {
|
197
|
+
suggestTables: false,
|
198
|
+
suggestColumns: true,
|
199
|
+
suggestKeywords: false,
|
200
|
+
currentToken: actualCurrentToken,
|
201
|
+
previousToken: previousToken
|
202
|
+
};
|
203
|
+
}
|
204
|
+
}
|
205
|
+
// Check previous token (when cursor is in whitespace after token)
|
206
|
+
if (prevValue) {
|
207
|
+
const patterns = this.getKeywordPatterns();
|
208
|
+
// Check if previous token requires specific keywords (and next token doesn't already fulfill it)
|
209
|
+
const keywordRequirement = this.requiresSpecificKeywords(prevValue);
|
210
|
+
if (keywordRequirement && tokenValue !== 'join' && tokenValue !== 'outer' && tokenValue !== 'by') {
|
211
|
+
return {
|
212
|
+
suggestTables: false,
|
213
|
+
suggestColumns: false,
|
214
|
+
...keywordRequirement,
|
215
|
+
currentToken: actualCurrentToken,
|
216
|
+
previousToken: previousToken
|
217
|
+
};
|
218
|
+
}
|
219
|
+
// Keywords that suggest tables
|
220
|
+
if (patterns.suggestsTables.has(prevValue)) {
|
221
|
+
return {
|
222
|
+
suggestTables: true,
|
223
|
+
suggestColumns: false,
|
224
|
+
suggestKeywords: false,
|
225
|
+
currentToken: actualCurrentToken,
|
226
|
+
previousToken: previousToken
|
227
|
+
};
|
228
|
+
}
|
229
|
+
// Keywords that suggest columns
|
230
|
+
if (patterns.suggestsColumns.has(prevValue)) {
|
231
|
+
return {
|
232
|
+
suggestTables: false,
|
233
|
+
suggestColumns: true,
|
234
|
+
suggestKeywords: false,
|
235
|
+
currentToken: actualCurrentToken,
|
236
|
+
previousToken: previousToken
|
237
|
+
};
|
238
|
+
}
|
239
|
+
}
|
240
|
+
// Default fallback - suggest keywords
|
241
|
+
return {
|
242
|
+
suggestTables: false,
|
243
|
+
suggestColumns: false,
|
244
|
+
suggestKeywords: true,
|
245
|
+
currentToken: actualCurrentToken,
|
246
|
+
previousToken: previousToken
|
247
|
+
};
|
248
|
+
}
|
249
|
+
catch (error) {
|
250
|
+
// Return minimal context on error
|
251
|
+
return {
|
252
|
+
suggestTables: false,
|
253
|
+
suggestColumns: false,
|
254
|
+
suggestKeywords: false,
|
255
|
+
};
|
256
|
+
}
|
257
|
+
}
|
258
|
+
/**
|
259
|
+
* Analyze cursor position for IntelliSense at line/column position
|
260
|
+
*/
|
261
|
+
static analyzeIntelliSenseAt(sql, position) {
|
262
|
+
const charOffset = TextPositionUtils_1.TextPositionUtils.lineColumnToCharOffset(sql, position);
|
263
|
+
if (charOffset === -1) {
|
264
|
+
return {
|
265
|
+
suggestTables: false,
|
266
|
+
suggestColumns: false,
|
267
|
+
suggestKeywords: false,
|
268
|
+
};
|
269
|
+
}
|
270
|
+
return this.analyzeIntelliSense(sql, charOffset);
|
271
|
+
}
|
272
|
+
static isAfterDot(sql, cursorPosition, previousToken) {
|
273
|
+
// Check if character before cursor is a dot
|
274
|
+
if (cursorPosition > 0 && sql[cursorPosition - 1] === '.') {
|
275
|
+
return true;
|
276
|
+
}
|
277
|
+
// Check if previous token is a dot
|
278
|
+
if (previousToken && previousToken.value === '.') {
|
279
|
+
return true;
|
280
|
+
}
|
281
|
+
// Check for dot in nearby characters (handle whitespace)
|
282
|
+
let pos = cursorPosition - 1;
|
283
|
+
while (pos >= 0 && /\s/.test(sql[pos])) {
|
284
|
+
pos--; // Skip whitespace backwards
|
285
|
+
}
|
286
|
+
if (pos >= 0 && sql[pos] === '.') {
|
287
|
+
return true;
|
288
|
+
}
|
289
|
+
return false;
|
290
|
+
}
|
291
|
+
static findPrecedingIdentifier(sql, cursorPosition, lexemes) {
|
292
|
+
// If cursor is after a dot, look for identifier before the dot
|
293
|
+
if (this.isAfterDot(sql, cursorPosition)) {
|
294
|
+
// Find dot position in SQL text
|
295
|
+
let pos = cursorPosition - 1;
|
296
|
+
while (pos >= 0 && /\s/.test(sql[pos])) {
|
297
|
+
pos--; // Skip whitespace backwards
|
298
|
+
}
|
299
|
+
if (pos >= 0 && sql[pos] === '.') {
|
300
|
+
// Found the dot, now look for identifier before it
|
301
|
+
let identifierEnd = pos;
|
302
|
+
while (pos >= 0 && /\s/.test(sql[pos])) {
|
303
|
+
pos--; // Skip whitespace
|
304
|
+
}
|
305
|
+
// Extract identifier backwards
|
306
|
+
while (pos >= 0 && /[a-zA-Z0-9_]/.test(sql[pos])) {
|
307
|
+
pos--;
|
308
|
+
}
|
309
|
+
const identifierStart = pos + 1;
|
310
|
+
if (identifierStart < identifierEnd) {
|
311
|
+
return sql.substring(identifierStart, identifierEnd);
|
312
|
+
}
|
313
|
+
}
|
314
|
+
// Fallback: try to find dot token in lexemes and get identifier before it
|
315
|
+
for (let i = lexemes.length - 1; i >= 0; i--) {
|
316
|
+
if (lexemes[i].value === '.' &&
|
317
|
+
lexemes[i].position &&
|
318
|
+
lexemes[i].position.startPosition < cursorPosition) {
|
319
|
+
// Found a dot before cursor, get identifier before it
|
320
|
+
if (i > 0 && this.isIdentifier(lexemes[i - 1])) {
|
321
|
+
return lexemes[i - 1].value;
|
322
|
+
}
|
323
|
+
break;
|
324
|
+
}
|
325
|
+
}
|
326
|
+
}
|
327
|
+
return undefined;
|
328
|
+
}
|
329
|
+
static isIdentifier(lexeme) {
|
330
|
+
return /^[a-zA-Z_][a-zA-Z0-9_]*$/.test(lexeme.value);
|
331
|
+
}
|
332
|
+
}
|
333
|
+
exports.CursorContextAnalyzer = CursorContextAnalyzer;
|
334
|
+
/**
|
335
|
+
* Cache for processed keyword patterns
|
336
|
+
*/
|
337
|
+
CursorContextAnalyzer.patternCache = null;
|
338
|
+
//# 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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"}
|