hledger-lsp 0.1.5 → 0.1.7

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 (81) hide show
  1. package/README.md +87 -167
  2. package/out/features/codeActions.d.ts +0 -4
  3. package/out/features/codeActions.d.ts.map +1 -1
  4. package/out/features/codeActions.js +11 -25
  5. package/out/features/codeActions.js.map +1 -1
  6. package/out/features/codeLens.d.ts +29 -0
  7. package/out/features/codeLens.d.ts.map +1 -0
  8. package/out/features/codeLens.js +105 -0
  9. package/out/features/codeLens.js.map +1 -0
  10. package/out/features/completion.d.ts.map +1 -1
  11. package/out/features/completion.js +21 -9
  12. package/out/features/completion.js.map +1 -1
  13. package/out/features/definition.d.ts.map +1 -1
  14. package/out/features/definition.js.map +1 -1
  15. package/out/features/foldingRanges.d.ts.map +1 -1
  16. package/out/features/foldingRanges.js +9 -2
  17. package/out/features/foldingRanges.js.map +1 -1
  18. package/out/features/formatter.d.ts +2 -0
  19. package/out/features/formatter.d.ts.map +1 -1
  20. package/out/features/formatter.js +36 -7
  21. package/out/features/formatter.js.map +1 -1
  22. package/out/features/formattingUtils.d.ts +38 -0
  23. package/out/features/formattingUtils.d.ts.map +1 -0
  24. package/out/features/formattingUtils.js +107 -0
  25. package/out/features/formattingUtils.js.map +1 -0
  26. package/out/features/hover.d.ts +2 -5
  27. package/out/features/hover.d.ts.map +1 -1
  28. package/out/features/hover.js +60 -36
  29. package/out/features/hover.js.map +1 -1
  30. package/out/features/inlayHints.d.ts +7 -5
  31. package/out/features/inlayHints.d.ts.map +1 -1
  32. package/out/features/inlayHints.js +164 -91
  33. package/out/features/inlayHints.js.map +1 -1
  34. package/out/features/semanticTokens.d.ts.map +1 -1
  35. package/out/features/semanticTokens.js +22 -1
  36. package/out/features/semanticTokens.js.map +1 -1
  37. package/out/features/symbols.d.ts.map +1 -1
  38. package/out/features/symbols.js +9 -3
  39. package/out/features/symbols.js.map +1 -1
  40. package/out/features/validator.d.ts +0 -8
  41. package/out/features/validator.d.ts.map +1 -1
  42. package/out/features/validator.js +367 -171
  43. package/out/features/validator.js.map +1 -1
  44. package/out/parser/ast.d.ts +2 -2
  45. package/out/parser/ast.d.ts.map +1 -1
  46. package/out/parser/ast.js +10 -5
  47. package/out/parser/ast.js.map +1 -1
  48. package/out/parser/index.d.ts +8 -5
  49. package/out/parser/index.d.ts.map +1 -1
  50. package/out/parser/index.js +0 -7
  51. package/out/parser/index.js.map +1 -1
  52. package/out/server/configFile.d.ts +104 -0
  53. package/out/server/configFile.d.ts.map +1 -0
  54. package/out/server/configFile.js +231 -0
  55. package/out/server/configFile.js.map +1 -0
  56. package/out/server/settings.d.ts +9 -0
  57. package/out/server/settings.d.ts.map +1 -1
  58. package/out/server/settings.js +9 -0
  59. package/out/server/settings.js.map +1 -1
  60. package/out/server/workspace.d.ts +126 -0
  61. package/out/server/workspace.d.ts.map +1 -0
  62. package/out/server/workspace.js +605 -0
  63. package/out/server/workspace.js.map +1 -0
  64. package/out/server.js +438 -29
  65. package/out/server.js.map +1 -1
  66. package/out/types.d.ts +15 -4
  67. package/out/types.d.ts.map +1 -1
  68. package/out/types.js +11 -0
  69. package/out/types.js.map +1 -1
  70. package/out/utils/amountFormatter.d.ts +26 -0
  71. package/out/utils/amountFormatter.d.ts.map +1 -0
  72. package/out/utils/amountFormatter.js +91 -0
  73. package/out/utils/amountFormatter.js.map +1 -0
  74. package/out/utils/balanceCalculator.d.ts +32 -0
  75. package/out/utils/balanceCalculator.d.ts.map +1 -0
  76. package/out/utils/balanceCalculator.js +93 -0
  77. package/out/utils/balanceCalculator.js.map +1 -0
  78. package/out/utils/index.d.ts.map +1 -1
  79. package/out/utils/index.js +2 -1
  80. package/out/utils/index.js.map +1 -1
  81. package/package.json +1 -1
@@ -0,0 +1,231 @@
1
+ "use strict";
2
+ /**
3
+ * Configuration file support for hledger LSP
4
+ *
5
+ * Allows users to specify workspace configuration via .hledger-lsp.json files.
6
+ * Config files can be placed at any level in the directory hierarchy and are
7
+ * discovered by walking up from the document location.
8
+ */
9
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ var desc = Object.getOwnPropertyDescriptor(m, k);
12
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
13
+ desc = { enumerable: true, get: function() { return m[k]; } };
14
+ }
15
+ Object.defineProperty(o, k2, desc);
16
+ }) : (function(o, m, k, k2) {
17
+ if (k2 === undefined) k2 = k;
18
+ o[k2] = m[k];
19
+ }));
20
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
21
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
22
+ }) : function(o, v) {
23
+ o["default"] = v;
24
+ });
25
+ var __importStar = (this && this.__importStar) || (function () {
26
+ var ownKeys = function(o) {
27
+ ownKeys = Object.getOwnPropertyNames || function (o) {
28
+ var ar = [];
29
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
30
+ return ar;
31
+ };
32
+ return ownKeys(o);
33
+ };
34
+ return function (mod) {
35
+ if (mod && mod.__esModule) return mod;
36
+ var result = {};
37
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
38
+ __setModuleDefault(result, mod);
39
+ return result;
40
+ };
41
+ })();
42
+ Object.defineProperty(exports, "__esModule", { value: true });
43
+ exports.discoverConfigFile = discoverConfigFile;
44
+ exports.loadConfigFile = loadConfigFile;
45
+ exports.resolveRootFile = resolveRootFile;
46
+ exports.mergeConfig = mergeConfig;
47
+ const fs = __importStar(require("fs"));
48
+ const path = __importStar(require("path"));
49
+ const uri_1 = require("../utils/uri");
50
+ /**
51
+ * Default configuration values
52
+ */
53
+ const DEFAULT_CONFIG = {
54
+ rootFile: undefined, // No default root file
55
+ include: ['**/*.journal', '**/*.hledger'],
56
+ exclude: ['**/node_modules/**', '**/.git/**', '**/.*'],
57
+ workspace: {
58
+ enabled: true,
59
+ eagerParsing: true,
60
+ autoDetectRoot: true
61
+ }
62
+ };
63
+ /**
64
+ * Discover .hledger-lsp.json by walking up the directory tree
65
+ *
66
+ * @param startUri - URI of the document to start searching from
67
+ * @param workspaceRoot - URI of the workspace root (optional, stops search here)
68
+ * @returns Path to the config file, or null if not found
69
+ */
70
+ function discoverConfigFile(startUri, workspaceRoot) {
71
+ let currentDir = path.dirname((0, uri_1.toFilePath)(startUri));
72
+ const workspaceRootPath = workspaceRoot ? (0, uri_1.toFilePath)(workspaceRoot) : null;
73
+ // Walk up the directory tree
74
+ while (true) {
75
+ const configPath = path.join(currentDir, '.hledger-lsp.json');
76
+ if (fs.existsSync(configPath)) {
77
+ return configPath;
78
+ }
79
+ // Stop at workspace root if provided
80
+ if (workspaceRootPath && currentDir === workspaceRootPath) {
81
+ break;
82
+ }
83
+ // Stop at filesystem root
84
+ const parentDir = path.dirname(currentDir);
85
+ if (parentDir === currentDir) {
86
+ break;
87
+ }
88
+ currentDir = parentDir;
89
+ }
90
+ return null;
91
+ }
92
+ /**
93
+ * Load and validate a config file
94
+ *
95
+ * @param configPath - Absolute path to the config file
96
+ * @returns Loaded configuration with validation warnings
97
+ * @throws Error if the config file is invalid JSON or cannot be read
98
+ */
99
+ function loadConfigFile(configPath) {
100
+ const warnings = [];
101
+ // Read and parse JSON
102
+ let rawConfig;
103
+ try {
104
+ const content = fs.readFileSync(configPath, 'utf-8');
105
+ rawConfig = JSON.parse(content);
106
+ }
107
+ catch (error) {
108
+ if (error instanceof SyntaxError) {
109
+ throw new Error(`Invalid JSON in ${configPath}: ${error.message}`);
110
+ }
111
+ throw new Error(`Failed to read ${configPath}: ${error}`);
112
+ }
113
+ // Validate and normalize config
114
+ const config = {};
115
+ // Validate rootFile
116
+ if (rawConfig.rootFile !== undefined) {
117
+ if (typeof rawConfig.rootFile !== 'string') {
118
+ warnings.push('rootFile should be a string, ignoring');
119
+ }
120
+ else {
121
+ config.rootFile = rawConfig.rootFile;
122
+ }
123
+ }
124
+ // Validate include
125
+ if (rawConfig.include !== undefined) {
126
+ if (!Array.isArray(rawConfig.include)) {
127
+ warnings.push('include should be an array, using defaults');
128
+ }
129
+ else {
130
+ const validPatterns = rawConfig.include.filter((p) => typeof p === 'string');
131
+ if (validPatterns.length !== rawConfig.include.length) {
132
+ warnings.push('Some include patterns are not strings, ignoring them');
133
+ }
134
+ config.include = validPatterns.length > 0 ? validPatterns : DEFAULT_CONFIG.include;
135
+ }
136
+ }
137
+ // Validate exclude
138
+ if (rawConfig.exclude !== undefined) {
139
+ if (!Array.isArray(rawConfig.exclude)) {
140
+ warnings.push('exclude should be an array, using defaults');
141
+ }
142
+ else {
143
+ const validPatterns = rawConfig.exclude.filter((p) => typeof p === 'string');
144
+ if (validPatterns.length !== rawConfig.exclude.length) {
145
+ warnings.push('Some exclude patterns are not strings, ignoring them');
146
+ }
147
+ config.exclude = validPatterns.length > 0 ? validPatterns : DEFAULT_CONFIG.exclude;
148
+ }
149
+ }
150
+ // Validate workspace settings
151
+ if (rawConfig.workspace !== undefined) {
152
+ if (typeof rawConfig.workspace !== 'object' || rawConfig.workspace === null) {
153
+ warnings.push('workspace should be an object, using defaults');
154
+ }
155
+ else {
156
+ config.workspace = {};
157
+ if (rawConfig.workspace.enabled !== undefined) {
158
+ if (typeof rawConfig.workspace.enabled !== 'boolean') {
159
+ warnings.push('workspace.enabled should be a boolean, using default');
160
+ }
161
+ else {
162
+ config.workspace.enabled = rawConfig.workspace.enabled;
163
+ }
164
+ }
165
+ if (rawConfig.workspace.eagerParsing !== undefined) {
166
+ if (typeof rawConfig.workspace.eagerParsing !== 'boolean') {
167
+ warnings.push('workspace.eagerParsing should be a boolean, using default');
168
+ }
169
+ else {
170
+ config.workspace.eagerParsing = rawConfig.workspace.eagerParsing;
171
+ }
172
+ }
173
+ if (rawConfig.workspace.autoDetectRoot !== undefined) {
174
+ if (typeof rawConfig.workspace.autoDetectRoot !== 'boolean') {
175
+ warnings.push('workspace.autoDetectRoot should be a boolean, using default');
176
+ }
177
+ else {
178
+ config.workspace.autoDetectRoot = rawConfig.workspace.autoDetectRoot;
179
+ }
180
+ }
181
+ }
182
+ }
183
+ const configDir = path.dirname(configPath);
184
+ return {
185
+ config,
186
+ configPath,
187
+ configDir,
188
+ warnings
189
+ };
190
+ }
191
+ /**
192
+ * Resolve root file path relative to config directory
193
+ *
194
+ * @param config - The loaded configuration
195
+ * @param configDir - Directory containing the config file
196
+ * @returns Absolute file URI, or null if not configured
197
+ */
198
+ function resolveRootFile(config, configDir) {
199
+ if (!config.rootFile) {
200
+ return null;
201
+ }
202
+ const absPath = path.isAbsolute(config.rootFile)
203
+ ? config.rootFile
204
+ : path.resolve(configDir, config.rootFile);
205
+ return (0, uri_1.toFileUri)(absPath);
206
+ }
207
+ /**
208
+ * Merge configuration from file with runtime settings
209
+ *
210
+ * Priority (highest to lowest):
211
+ * 1. Runtime settings (from VS Code configuration)
212
+ * 2. Config file settings
213
+ * 3. Default settings
214
+ *
215
+ * @param fileConfig - Configuration from .hledger-lsp.json
216
+ * @param runtimeSettings - Settings from VS Code
217
+ * @returns Merged configuration
218
+ */
219
+ function mergeConfig(fileConfig, runtimeSettings) {
220
+ return {
221
+ rootFile: runtimeSettings?.rootFile ?? fileConfig.rootFile ?? DEFAULT_CONFIG.rootFile,
222
+ include: runtimeSettings?.include ?? fileConfig.include ?? DEFAULT_CONFIG.include,
223
+ exclude: runtimeSettings?.exclude ?? fileConfig.exclude ?? DEFAULT_CONFIG.exclude,
224
+ workspace: {
225
+ enabled: runtimeSettings?.workspace?.enabled ?? fileConfig.workspace?.enabled ?? DEFAULT_CONFIG.workspace.enabled,
226
+ eagerParsing: runtimeSettings?.workspace?.eagerParsing ?? fileConfig.workspace?.eagerParsing ?? DEFAULT_CONFIG.workspace.eagerParsing,
227
+ autoDetectRoot: runtimeSettings?.workspace?.autoDetectRoot ?? fileConfig.workspace?.autoDetectRoot ?? DEFAULT_CONFIG.workspace.autoDetectRoot
228
+ }
229
+ };
230
+ }
231
+ //# sourceMappingURL=configFile.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"configFile.js","sourceRoot":"","sources":["../../src/server/configFile.ts"],"names":[],"mappings":"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"}
@@ -43,12 +43,21 @@ export interface HledgerSettings {
43
43
  minSpacing?: number;
44
44
  decimalAlignColumn?: number;
45
45
  assertionDecimalAlignColumn?: number;
46
+ signPosition?: 'before-symbol' | 'after-symbol';
46
47
  };
47
48
  inlayHints?: {
48
49
  showInferredAmounts?: boolean;
49
50
  showRunningBalances?: boolean;
50
51
  showCostConversions?: boolean;
51
52
  };
53
+ codeLens?: {
54
+ showTransactionCounts?: boolean;
55
+ };
56
+ workspace?: {
57
+ enabled?: boolean;
58
+ eagerParsing?: boolean;
59
+ autoDetectRoot?: boolean;
60
+ };
52
61
  }
53
62
  export declare const defaultSettings: HledgerSettings;
54
63
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"settings.d.ts","sourceRoot":"","sources":["../../src/server/settings.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAExD,MAAM,WAAW,eAAe;IAC9B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE;QACX,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,cAAc,CAAC,EAAE,OAAO,CAAC;QACzB,kBAAkB,CAAC,EAAE,OAAO,CAAC;QAC7B,gBAAgB,CAAC,EAAE,OAAO,CAAC;QAC3B,qBAAqB,CAAC,EAAE,OAAO,CAAC;QAChC,cAAc,CAAC,EAAE,OAAO,CAAC;QACzB,YAAY,CAAC,EAAE,OAAO,CAAC;QACvB,iBAAiB,CAAC,EAAE,OAAO,CAAC;QAC5B,iBAAiB,CAAC,EAAE,OAAO,CAAC;QAC5B,YAAY,CAAC,EAAE,OAAO,CAAC;QACvB,WAAW,CAAC,EAAE,OAAO,CAAC;QACtB,iBAAiB,CAAC,EAAE,OAAO,CAAC;QAC5B,YAAY,CAAC,EAAE,OAAO,CAAC;QACvB,gBAAgB,CAAC,EAAE,OAAO,CAAC;QAC3B,0BAA0B,CAAC,EAAE,OAAO,CAAC;KACtC,CAAC;IACF,QAAQ,CAAC,EAAE;QACT,kBAAkB,CAAC,EAAE,OAAO,GAAG,SAAS,GAAG,aAAa,GAAG,MAAM,CAAC;QAClE,gBAAgB,CAAC,EAAE,OAAO,GAAG,SAAS,GAAG,aAAa,GAAG,MAAM,CAAC;QAChE,qBAAqB,CAAC,EAAE,OAAO,GAAG,SAAS,GAAG,aAAa,GAAG,MAAM,CAAC;QACrE,cAAc,CAAC,EAAE,OAAO,GAAG,SAAS,GAAG,aAAa,GAAG,MAAM,CAAC;KAC/D,CAAC;IACF,OAAO,CAAC,EAAE;QACR,cAAc,CAAC,EAAE,OAAO,CAAC;QACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,UAAU,CAAC,EAAE;QACX,oBAAoB,CAAC,EAAE,OAAO,CAAC;QAC/B,kBAAkB,CAAC,EAAE,OAAO,CAAC;QAC7B,uBAAuB,CAAC,EAAE,OAAO,CAAC;QAClC,gBAAgB,CAAC,EAAE,OAAO,CAAC;KAC5B,CAAC;IACF,UAAU,CAAC,EAAE;QACX,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,iBAAiB,CAAC,EAAE,MAAM,CAAC;QAC3B,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,kBAAkB,CAAC,EAAE,MAAM,CAAC;QAC5B,2BAA2B,CAAC,EAAE,MAAM,CAAC;KACtC,CAAC;IACF,UAAU,CAAC,EAAE;QACX,mBAAmB,CAAC,EAAE,OAAO,CAAC;QAC9B,mBAAmB,CAAC,EAAE,OAAO,CAAC;QAC9B,mBAAmB,CAAC,EAAE,OAAO,CAAC;KAC/B,CAAC;CACH;AAED,eAAO,MAAM,eAAe,EAAE,eAkD7B,CAAC;AAKF;;GAEG;AACH,wBAAgB,SAAS,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAmBzF;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,0BAA0B,EAAE,OAAO,GAAG,QAAQ,CAAC,eAAe,CAAC,CAqB5I;AAED,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAE5D;AAED,wBAAgB,wBAAwB,IAAI,IAAI,CAE/C"}
1
+ {"version":3,"file":"settings.d.ts","sourceRoot":"","sources":["../../src/server/settings.ts"],"names":[],"mappings":"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"}
@@ -49,11 +49,20 @@ exports.defaultSettings = {
49
49
  minSpacing: 2,
50
50
  decimalAlignColumn: 52,
51
51
  assertionDecimalAlignColumn: 70,
52
+ signPosition: 'after-symbol',
52
53
  },
53
54
  inlayHints: {
54
55
  showInferredAmounts: false,
55
56
  showRunningBalances: false,
56
57
  showCostConversions: false,
58
+ },
59
+ codeLens: {
60
+ showTransactionCounts: false,
61
+ },
62
+ workspace: {
63
+ enabled: true,
64
+ eagerParsing: true,
65
+ autoDetectRoot: true,
57
66
  }
58
67
  };
59
68
  // Cache the settings of all open documents
@@ -1 +1 @@
1
- {"version":3,"file":"settings.js","sourceRoot":"","sources":["../../src/server/settings.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"settings.js","sourceRoot":"","sources":["../../src/server/settings.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,126 @@
1
+ import { Connection } from 'vscode-languageserver/node';
2
+ import { HledgerParser, FileReader } from '../parser/index';
3
+ import { ParsedDocument } from '../types';
4
+ import { HledgerLspConfig } from './configFile';
5
+ export declare class WorkspaceManager {
6
+ private workspaceFolders;
7
+ private journalFiles;
8
+ private includeGraph;
9
+ private reverseGraph;
10
+ private rootFile;
11
+ private workspaceCache;
12
+ private config;
13
+ private configPath;
14
+ private metrics;
15
+ private parser;
16
+ private fileReader;
17
+ private connection;
18
+ /**
19
+ * Initialize the WorkspaceManager with workspace folders and dependencies.
20
+ * This discovers all journal files, builds the include graph, and identifies root files.
21
+ * Optionally loads configuration from .hledger-lsp.json if present.
22
+ */
23
+ initialize(workspaceFolders: string[], parser: HledgerParser, fileReader: FileReader, connection: Connection, runtimeConfig?: Partial<HledgerLspConfig>): Promise<void>;
24
+ /**
25
+ * Discover and load configuration from .hledger-lsp.json
26
+ */
27
+ private loadConfig;
28
+ /**
29
+ * Discover all .journal and .hledger files in a workspace folder.
30
+ * Uses fast-glob to find files, using patterns from config.
31
+ */
32
+ private discoverJournalFiles;
33
+ /**
34
+ * Build the include graph by parsing each discovered file for include directives.
35
+ * This creates both forward (file → includes) and reverse (file → included by) mappings.
36
+ *
37
+ * IMPORTANT: We parse WITHOUT following includes to get only DIRECT includes,
38
+ * not transitive ones. This ensures the graph accurately represents the include structure.
39
+ */
40
+ private buildIncludeGraph;
41
+ /**
42
+ * Identify the single root file using the following algorithm:
43
+ * 1. If explicitly configured in config, use that
44
+ * 2. If autoDetectRoot is enabled, use heuristics to find the best root:
45
+ * a. Prefer files with NO parents (not included by anyone)
46
+ * b. Among those, prefer the one that includes the most files
47
+ * c. If multiple candidates, prefer one with "main" or "all" in the name
48
+ * d. If still tied, use alphabetically first
49
+ * 3. If no suitable root found, return null (workspace features disabled)
50
+ */
51
+ private identifyRootFile;
52
+ /**
53
+ * Get the root file for a given file URI.
54
+ * Returns the single root file if it transitively includes this file, or null otherwise.
55
+ *
56
+ * Algorithm:
57
+ * 1. If no root file identified, return null
58
+ * 2. If the root file transitively includes this file (or is the file itself), return the root
59
+ * 3. Otherwise return null (file is not part of the workspace's include graph)
60
+ */
61
+ getRootForFile(uri: string): string | null;
62
+ /**
63
+ * Check if a root file transitively includes a target file.
64
+ * Uses BFS to traverse the include graph.
65
+ */
66
+ private rootIncludesFile;
67
+ /**
68
+ * Get the workspace folder that contains the given URI.
69
+ * Returns null if the file is outside all workspace folders.
70
+ *
71
+ * Edge case handling: Files outside workspace folders will return null,
72
+ * which triggers a fallback to document-mode parsing. This is intentional
73
+ * and allows the LSP to work with files opened outside the workspace.
74
+ */
75
+ private getWorkspaceFolder;
76
+ /**
77
+ * Parse the workspace from the root file.
78
+ * Returns a cached ParsedDocument if available, otherwise parses and caches.
79
+ */
80
+ parseWorkspace(force?: boolean): ParsedDocument | null;
81
+ /**
82
+ * Invalidate the cache for a file.
83
+ * Clears the workspace cache if the root file transitively includes this file.
84
+ */
85
+ invalidateFile(uri: string): void;
86
+ /**
87
+ * Get diagnostic information about the workspace.
88
+ * Useful for troubleshooting and performance monitoring.
89
+ */
90
+ getDiagnosticInfo(): {
91
+ totalFiles: number;
92
+ rootFile: string | null;
93
+ cached: boolean;
94
+ configFile: string | null;
95
+ performance: {
96
+ initializationTime: number;
97
+ cacheHits: number;
98
+ cacheMisses: number;
99
+ cacheHitRate: string;
100
+ averageParseTime: number;
101
+ totalParseTime: number;
102
+ parseCount: number;
103
+ };
104
+ };
105
+ /**
106
+ * Log diagnostic information to the console.
107
+ * Useful for debugging and performance analysis.
108
+ */
109
+ logDiagnostics(): void;
110
+ /**
111
+ * Generate a text-based tree representation of the workspace.
112
+ */
113
+ getWorkspaceTree(): string;
114
+ /**
115
+ * Generate a structured representation of the workspace for better tooling integration.
116
+ * Returns an array of entries with display text and absolute file paths.
117
+ */
118
+ getWorkspaceTreeStructured(): Array<{
119
+ display: string;
120
+ path: string;
121
+ uri: string;
122
+ }>;
123
+ private collectTreeEntries;
124
+ private printTree;
125
+ }
126
+ //# sourceMappingURL=workspace.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workspace.d.ts","sourceRoot":"","sources":["../../src/server/workspace.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAIxD,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAa,MAAM,UAAU,CAAC;AAErD,OAAO,EAAE,gBAAgB,EAAoE,MAAM,cAAc,CAAC;AAElH,qBAAa,gBAAgB;IAE3B,OAAO,CAAC,gBAAgB,CAAgB;IACxC,OAAO,CAAC,YAAY,CAA0B;IAC9C,OAAO,CAAC,YAAY,CAAuC;IAC3D,OAAO,CAAC,YAAY,CAAuC;IAC3D,OAAO,CAAC,QAAQ,CAAuB;IACvC,OAAO,CAAC,cAAc,CAA+B;IAGrD,OAAO,CAAC,MAAM,CAA2C;IACzD,OAAO,CAAC,UAAU,CAAuB;IAGzC,OAAO,CAAC,OAAO,CAMb;IAGF,OAAO,CAAC,MAAM,CAAiB;IAC/B,OAAO,CAAC,UAAU,CAAc;IAChC,OAAO,CAAC,UAAU,CAAc;IAEhC;;;;OAIG;IACG,UAAU,CACd,gBAAgB,EAAE,MAAM,EAAE,EAC1B,MAAM,EAAE,aAAa,EACrB,UAAU,EAAE,UAAU,EACtB,UAAU,EAAE,UAAU,EACtB,aAAa,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC,GACxC,OAAO,CAAC,IAAI,CAAC;IAmDhB;;OAEG;YACW,UAAU;IAwCxB;;;OAGG;YACW,oBAAoB;IA2BlC;;;;;;OAMG;YACW,iBAAiB;IAiG/B;;;;;;;;;OASG;IACH,OAAO,CAAC,gBAAgB;IA2FxB;;;;;;;;OAQG;IACH,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAkB1C;;;OAGG;IACH,OAAO,CAAC,gBAAgB;IA0BxB;;;;;;;OAOG;IACH,OAAO,CAAC,kBAAkB;IAmB1B;;;OAGG;IACH,cAAc,CAAC,KAAK,GAAE,OAAe,GAAG,cAAc,GAAG,IAAI;IAoD7D;;;OAGG;IACH,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAgBjC;;;OAGG;IACH,iBAAiB,IAAI;QACnB,UAAU,EAAE,MAAM,CAAC;QACnB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;QACxB,MAAM,EAAE,OAAO,CAAC;QAChB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;QAC1B,WAAW,EAAE;YACX,kBAAkB,EAAE,MAAM,CAAC;YAC3B,SAAS,EAAE,MAAM,CAAC;YAClB,WAAW,EAAE,MAAM,CAAC;YACpB,YAAY,EAAE,MAAM,CAAC;YACrB,gBAAgB,EAAE,MAAM,CAAC;YACzB,cAAc,EAAE,MAAM,CAAC;YACvB,UAAU,EAAE,MAAM,CAAC;SACpB,CAAC;KACH;IA0BD;;;OAGG;IACH,cAAc,IAAI,IAAI;IAgBtB;;OAEG;IACH,gBAAgB,IAAI,MAAM;IAY1B;;;OAGG;IACH,0BAA0B,IAAI,KAAK,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC;IAiBnF,OAAO,CAAC,kBAAkB;IAwC1B,OAAO,CAAC,SAAS;CAgClB"}