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.
Files changed (65) hide show
  1. package/dist/esm/index.js +19 -0
  2. package/dist/esm/index.js.map +1 -1
  3. package/dist/esm/index.min.js +43 -35
  4. package/dist/esm/index.min.js.map +4 -4
  5. package/dist/esm/src/index.d.ts +21 -0
  6. package/dist/esm/src/index.js +19 -0
  7. package/dist/esm/src/index.js.map +1 -1
  8. package/dist/esm/src/tokenReaders/CommandTokenReader.js +5 -0
  9. package/dist/esm/src/tokenReaders/CommandTokenReader.js.map +1 -1
  10. package/dist/esm/src/transformers/CTEBuilder.js +2 -2
  11. package/dist/esm/src/transformers/CTEBuilder.js.map +1 -1
  12. package/dist/esm/src/utils/CursorContextAnalyzer.d.ts +70 -0
  13. package/dist/esm/src/utils/CursorContextAnalyzer.js +322 -0
  14. package/dist/esm/src/utils/CursorContextAnalyzer.js.map +1 -0
  15. package/dist/esm/src/utils/IntelliSenseApi.d.ts +114 -0
  16. package/dist/esm/src/utils/IntelliSenseApi.js +284 -0
  17. package/dist/esm/src/utils/IntelliSenseApi.js.map +1 -0
  18. package/dist/esm/src/utils/KeywordCache.d.ts +65 -0
  19. package/dist/esm/src/utils/KeywordCache.js +202 -0
  20. package/dist/esm/src/utils/KeywordCache.js.map +1 -0
  21. package/dist/esm/src/utils/MultiQuerySplitter.d.ts +131 -0
  22. package/dist/esm/src/utils/MultiQuerySplitter.js +287 -0
  23. package/dist/esm/src/utils/MultiQuerySplitter.js.map +1 -0
  24. package/dist/esm/src/utils/PositionAwareParser.d.ts +85 -0
  25. package/dist/esm/src/utils/PositionAwareParser.js +336 -0
  26. package/dist/esm/src/utils/PositionAwareParser.js.map +1 -0
  27. package/dist/esm/src/utils/ScopeResolver.d.ts +127 -0
  28. package/dist/esm/src/utils/ScopeResolver.js +268 -0
  29. package/dist/esm/src/utils/ScopeResolver.js.map +1 -0
  30. package/dist/esm/src/utils/TextPositionUtils.d.ts +62 -0
  31. package/dist/esm/src/utils/TextPositionUtils.js +124 -0
  32. package/dist/esm/src/utils/TextPositionUtils.js.map +1 -0
  33. package/dist/esm/tsconfig.browser.tsbuildinfo +1 -1
  34. package/dist/index.min.js +43 -35
  35. package/dist/index.min.js.map +4 -4
  36. package/dist/src/index.d.ts +21 -0
  37. package/dist/src/index.js +20 -1
  38. package/dist/src/index.js.map +1 -1
  39. package/dist/src/tokenReaders/CommandTokenReader.js +5 -0
  40. package/dist/src/tokenReaders/CommandTokenReader.js.map +1 -1
  41. package/dist/src/transformers/CTEBuilder.js +2 -2
  42. package/dist/src/transformers/CTEBuilder.js.map +1 -1
  43. package/dist/src/utils/CursorContextAnalyzer.d.ts +70 -0
  44. package/dist/src/utils/CursorContextAnalyzer.js +338 -0
  45. package/dist/src/utils/CursorContextAnalyzer.js.map +1 -0
  46. package/dist/src/utils/IntelliSenseApi.d.ts +114 -0
  47. package/dist/src/utils/IntelliSenseApi.js +292 -0
  48. package/dist/src/utils/IntelliSenseApi.js.map +1 -0
  49. package/dist/src/utils/KeywordCache.d.ts +65 -0
  50. package/dist/src/utils/KeywordCache.js +206 -0
  51. package/dist/src/utils/KeywordCache.js.map +1 -0
  52. package/dist/src/utils/MultiQuerySplitter.d.ts +131 -0
  53. package/dist/src/utils/MultiQuerySplitter.js +292 -0
  54. package/dist/src/utils/MultiQuerySplitter.js.map +1 -0
  55. package/dist/src/utils/PositionAwareParser.d.ts +85 -0
  56. package/dist/src/utils/PositionAwareParser.js +363 -0
  57. package/dist/src/utils/PositionAwareParser.js.map +1 -0
  58. package/dist/src/utils/ScopeResolver.d.ts +127 -0
  59. package/dist/src/utils/ScopeResolver.js +272 -0
  60. package/dist/src/utils/ScopeResolver.js.map +1 -0
  61. package/dist/src/utils/TextPositionUtils.d.ts +62 -0
  62. package/dist/src/utils/TextPositionUtils.js +128 -0
  63. package/dist/src/utils/TextPositionUtils.js.map +1 -0
  64. package/dist/tsconfig.tsbuildinfo +1 -1
  65. package/package.json +1 -1
@@ -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
@@ -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;AAI1C,oEAAoE"}
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":"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"}
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,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;YAC5D,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACtB,iBAAiB;gBACjB,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC/B,SAAS;YACb,CAAC;YAED,0DAA0D;YAC1D,MAAM,WAAW,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;YAC5E,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAC,WAAW,CAAC,CAAC;YAE/C,IAAI,iBAAiB,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;gBAC/B,2DAA2D;gBAC3D,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;YACnC,CAAC;iBAAM,CAAC;gBACJ,8BAA8B;gBAC9B,MAAM,IAAI,KAAK,CAAC,gCAAgC,IAAI,sCAAsC,CAAC,CAAC;YAChG,CAAC;QACL,CAAC;QAED,OAAO,cAAc,CAAC;IAC1B,CAAC;IAED;;;;;OAKG;IACK,oBAAoB,CAAC,MAAqB;QAK9C,+CAA+C;QAC/C,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAuB,CAAC;QAChD,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YACzB,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAC1D,CAAC;QAED,4DAA4D;QAC5D,MAAM,aAAa,GAAG,IAAI,GAAG,EAAU,CAAC;QAExC,oEAAoE;QACpE,MAAM,YAAY,GAAG,IAAI,GAAG,EAAuB,CAAC;QACpD,MAAM,YAAY,GAAG,IAAI,GAAG,EAAuB,CAAC;QAEpD,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YACzB,MAAM,SAAS,GAAG,KAAK,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC;YAEnD,6CAA6C;YAC7C,MAAM,gBAAgB,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAEnE,sCAAsC;YACtC,KAAK,MAAM,eAAe,IAAI,gBAAgB,EAAE,CAAC;gBAC7C,IAAI,eAAe,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;oBAC3C,aAAa,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;oBAC7B,MAAM;gBACV,CAAC;YACL,CAAC;YAED,qBAAqB;YACrB,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC/B,YAAY,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,GAAG,EAAU,CAAC,CAAC;YACnD,CAAC;YAED,0DAA0D;YAC1D,MAAM,cAAc,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAE9D,KAAK,MAAM,aAAa,IAAI,cAAc,EAAE,CAAC;gBACzC,MAAM,cAAc,GAAG,aAAa,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC;gBAEhE,uDAAuD;gBACvD,IAAI,QAAQ,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE,CAAC;oBAC/B,YAAY,CAAC,GAAG,CAAC,SAAS,CAAE,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;oBAEjD,+BAA+B;oBAC/B,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE,CAAC;wBACpC,YAAY,CAAC,GAAG,CAAC,cAAc,EAAE,IAAI,GAAG,EAAU,CAAC,CAAC;oBACxD,CAAC;oBACD,YAAY,CAAC,GAAG,CAAC,cAAc,CAAE,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;gBACrD,CAAC;YACL,CAAC;QACL,CAAC;QAED,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,YAAY,EAAE,CAAC;IACrD,CAAC;IAED;;;;;;;;;OASG;IACK,gBAAgB,CACpB,MAAqB,EACrB,QAAkC,EAClC,aAA0B,EAC1B,YAAsC;QAEtC,MAAM,eAAe,GAAkB,EAAE,CAAC;QAC1C,MAAM,kBAAkB,GAAkB,EAAE,CAAC;QAC7C,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;QAClC,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAU,CAAC;QAEnC,4BAA4B;QAC5B,MAAM,KAAK,GAAG,CAAC,SAAiB,EAAE,EAAE;YAChC,IAAI,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC;gBAAE,OAAO;YACnC,IAAI,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC1B,MAAM,IAAI,KAAK,CAAC,uCAAuC,SAAS,EAAE,CAAC,CAAC;YACxE,CAAC;YAED,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YAExB,0CAA0C;YAC1C,MAAM,IAAI,GAAG,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,IAAI,GAAG,EAAU,CAAC;YAC9D,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;gBACjC,KAAK,CAAC,GAAG,CAAC,CAAC;YACf,CAAC;YAED,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YAC3B,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YAEvB,wCAAwC;YACxC,qEAAqE;YACrE,IAAI,aAAa,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC/B,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAE,CAAC,CAAC;YACnD,CAAC;iBAAM,CAAC;gBACJ,kBAAkB,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAE,CAAC,CAAC;YACtD,CAAC;QACL,CAAC,CAAC;QAEF,qBAAqB;QACrB,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YACzB,MAAM,SAAS,GAAG,KAAK,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC;YACnD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC1B,KAAK,CAAC,SAAS,CAAC,CAAC;YACrB,CAAC;QACL,CAAC;QAED,qEAAqE;QACrE,OAAO,CAAC,GAAG,eAAe,EAAE,GAAG,kBAAkB,CAAC,CAAC;IACvD,CAAC;CACJ;AA5ND,gCA4NC"}
@@ -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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"}